React-dnd: Draggable рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рдЖрджрд╛рдиреЛрдВ рдФрд░ textareas рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдЬреВрди 2015  ┬╖  17рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: react-dnd/react-dnd

рдЬрдм рдореИрдВ <input> рдФрд░ <textarea> рдХреЛ рдбреНрд░реИрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рд░рдЦрддреЗ рд╣реБрдП рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реВрдБ,

  1. cmd+A рдпрд╛ Ctrl+A рд╢реЙрд░реНрдЯрдХрдЯ рдЗрдирдкреБрдЯ рдпрд╛ рдЯреЗрдХреНрд╕реНрдЯрд╛рд░рд┐рдпрд╛ (рд▓реЗрдХрд┐рди Shift + Arrows рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреЗ рд╕рд╛рде рдкрд╛рда рдХрд╛ рдЪрдпрди) рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
  2. рдЯрдЪрдкреИрдб / рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рдпрд╛ рдЯреЗрдХреНрд╕реНрдЯрд╛рд░рд┐рдпрд╛ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдореВрд▓ рддрддреНрд╡ рдХреЛ рдЦреАрдВрдЪрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ

рдореЗрд░рд╛ рдЦреАрдВрдЪрдиреЗ рдпреЛрдЧреНрдп рдШрдЯрдХ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ,

draggable component

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдПрдХ рдЦреАрдВрдЪреЗрдВ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ contentEditable рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рддрддреНрд╡ рдореБрдЭреЗ рдкрд╛рда рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдпрд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЙрдирдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдВрдЧреЗред рдХреБрдЫ рдЦреБрджрд╛рдИ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдпрд╣ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдорд┐рд▓реА: https://bugs.chromium.org/p/chromium/issues/detail?id=170139

рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ Chrome рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЗрд╕ рдмреАрдЪ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рд╕рдлрд╛рд░реА рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

.contenteditable-element {
  user-select: text;
}

рд╕рднреА 17 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ selectstart рдЗрд╡реЗрдВрдЯ рдХреЗ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдХреЗрд╡рд▓ IE рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЕрдЧрд░ рдореЗрд░реА рддрд░рд╣ рдЖрдкрдХреЛ IE рд╕рдВрдЧрддрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рдореЗрд░рд╛ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдерд╛ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
https://github.com/dperetti/react-dnd/commit/06f74ef97e07a9a24c10eab8593f3e2121d4f2ed

рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореБрдЭреЗ рдпрд╣ рддрдп рдХрд░рддреЗ рд╣реБрдП рдкреАрдЖрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИред

рдореЗрд░реА рджреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВ:

  • рдпрд╣ рдЕрднреА рднреА рд╣реИ рдХрд┐ IE рдареАрдХ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред
  • рдХреГрдкрдпрд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП preventDefault() рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЬреЛ рднреА рдЦреАрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдереА, рд╡рд╣ рдкрд╛рда рдЪрдпрди рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЕрд╡рд╛рдВрдЫрд┐рдд рдЪрдпрди рдХреЛ рд░реЛрдХрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк e.preventDefault() рдХреЛ рдХреБрдЫ рдЪреЗрдХ рдХреЗ рд╕рд╛рде la e.target.tagName !== 'input' (рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рд╣реЛрд╢рд┐рдпрд╛рд░) рдХреЗ рд░реВрдк рдореЗрдВ рдШреЗрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред

<div contentEditable={isEditing} /> рд╕рд╛рде рдПрдХ рд╣реА рдмрдЧред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред Ctrl+A рдФрд░ Shift + Arrows рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЕрдЧрд▓реЗ рддреАрди рд╣рдлреНрддреЛрдВ рдореЗрдВ рдореИрдВ рд╡реНрдпрд╕реНрдд рд░рд╣рдиреЗ рд╡рд╛рд▓рд╛ рд╣реВрдВ рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдореБрдЭреЗ https://github.com/gaearon/react-dnd/issues/178#issuecomment -108110202 рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдПрдХ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдкреАрдЖрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИред

рдореЗрдВ рджреЗрдЦ рд░рд╣рд╛ рдерд╛ред рдЕрдЧрд░ рдореИрдВ рдкреВрд░реЗ handleSelectStart рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред IE11 рдореЗрдВ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╡рд╣рд╛рдВ рднреА рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред

@ рдЕрдЧрд░ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдпрд╛ рд╕реЗрдЯрдЕрдк рдХреНрдпреЛрдВ рд╣реИ рддреЛ рдШрдЯрдирд╛ рдХреЛ рдХреИрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? IE10? рдПрдХ рдбреНрд░реИрдЧреЗрдмрд▓ рдиреЛрдб рдореЗрдВ textarea / input рд╕реЗ рдЕрд▓рдЧ рд╕реЗрдЯрдЕрдк? рдореБрдЭреЗ рдкрд╛рда рдЪрдпрди рдХреЗ рдореБрджреНрджреЗ рдирд╣реАрдВ рдорд┐рд▓рддреЗ рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ CSS user-select рдЗрд╕ рдкрд░ preventDefault рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореВрд▓ рдореБрджреНрджрд╛ https://github.com/gaearon/react-dnd/issues/128 рдерд╛
рдпрджрд┐ рдЖрдк рдПрдХ PR рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди https://github.com/gaearon/react-dnd/issues/128 рдХреЛ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝реА рдорджрдж рд╣реЛрдЧреАред

рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред IE9 рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рдХреЗрд╕ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ # 128 рддрдп рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ IE9 рдкрд░ sortable-simple рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ред

@gaearon рд╣рд╛рдБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рдерд╛, рдзрдиреНрдпрд╡рд╛рджред рдХреБрдЫ рдиреЛрдЯ:

  1. рдХреЛрдИ рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ (рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдирд╡реАрдирддрдо Chrome, Safari, FF рдФрд░ IE 11) рдЗрд╕рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдШрдЯрдирд╛ рдХреЛ рдЬреЛ рднреА рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
  2. IE9 рдХреЗрд╡рд▓ _need_ e.target.dragDrop() рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред рдкрд╛рда рдЪрдпрди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдПрдХ рдРрд╕реЗ рд╣реИрдВрдбрд▓ рдХреЛ рдмрдирд╛рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкреВрд░реЗ рдбреНрд░реИрдЧреЗрдмрд▓ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ, рдбреНрд░реИрдЧреЗрдмрд▓ рдиреЛрдб рдХреЛ connectDragPreview рдореЗрдВ рд╣реИрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ connectDragSource рдореЗрдВ рд╣реИрдВрдбрд▓ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдмреБрд░рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, AFAIK рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ IE9 рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рдПрдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реЛ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдЙрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛ?
  3. рдмрд┐рдВрджреБ рд╕рдВрдЦреНрдпрд╛ рджреЛ рд╡реИрд╕реЗ рднреА рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдбреНрд░реИрдЧреЗрдмрд▓ рдХреЗ рднреАрддрд░ рдПрдХ рдкрд╛рда рдЗрдирдкреБрдЯ рд╣реЛрддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рдЪреВрд╣реЛрдВ рдХреЛ рдЦреАрдВрдЪрдХрд░ рдкрд╛рда рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ connectDragSource рдкреВрд░реЗ рдиреЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣ рдкрд╛рда рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рдмрдЬрд╛рдп рдиреЛрдб рдХреЛ рдЦреАрдВрдЪрддрд╛ рд╣реИ), рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдЕрджреГрд╢реНрдп рд╣реИрдВрдбрд▓ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкреВрд░реЗ рдиреЛрдб рдХрд╛ рдЖрдХрд╛рд░ рд╣реИред рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпреВрдП рдЪреЗрдХрд┐рдВрдЧ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓рд┐рдП рдмрд┐рдирд╛, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИ рдФрд░ рдпрд╣ рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЕрдЪреНрдЫреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЛ рддреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдПрдХ рд░рдЦрд░рдЦрд╛рд╡ рдЫреЗрдж рдЦреЛрдж рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдореЗрд░реА рд░рд╛рдп рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдХреЛ рднреА рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

Chrome рдореЗрдВ selectstart рд▓рд┐рдП рдЗрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ Chrome рдореЗрдВ contentEditable рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ Safari рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

Https://github.com/gaearon/react-dnd/commit/0a36033693868a7985ea2348105da4fb2cef8a00 рджреНрд╡рд╛рд░рд╛ рдирд┐рд╢реНрдЪрд┐рдд

рдЪрдпрдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ Chrome рдореЗрдВ рд╕рдВрддреЛрд╖рдкреНрд░рдж рдХрд╛рд░реНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ рд╕рдлрд╛рд░реА рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдпрд╣ рд╕рдлрд╛рд░реА рдореЗрдВ рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк рдПрдкреАрдЖрдИ рдЗрд╢реНрдпреВ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рдХреНрд╕ [email protected] рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдХреГрдкрдпрд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдкреБрд╖реНрдЯрд┐ рдХреА рдЧрдИ рдХрд┐ Ctrl / Cmd-A рдПрдХ рдбреНрд░реИрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ <input> рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЯрдЪрдкреИрдб / рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рдпрд╛ рдЯреЗрдХреНрд╕реНрдЯрд╛рд░рд┐рдпрд╛ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдореВрд▓ рддрддреНрд╡ рдХреЛ рдЦреАрдВрдЪрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ

рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рддрдп рдирд╣реАрдВ рд╣реИ, рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рдПрдВ?

рдПрдХ рдЦреАрдВрдЪреЗрдВ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ contentEditable рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рддрддреНрд╡ рдореБрдЭреЗ рдкрд╛рда рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдпрд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЙрдирдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдВрдЧреЗред рдХреБрдЫ рдЦреБрджрд╛рдИ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдпрд╣ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдорд┐рд▓реА: https://bugs.chromium.org/p/chromium/issues/detail?id=170139

рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ Chrome рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЗрд╕ рдмреАрдЪ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рд╕рдлрд╛рд░реА рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

.contenteditable-element {
  user-select: text;
}

@trevorsmith рдпрд╣ рдЕрднреА рднреА рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдЬрд╛рдирддреЗ рд╣реИрдВ?

@ rahul1995 - рдореБрдЭреЗ рдЕрднреА рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╣реИ: рдмрд╕ false :

const Test = () => {
  const ref = useRef(null);
  const [focused, setFocused] = useState(false);
  const [_, drag] = useDrag({ item: { type: 'test' } });

  useEffect(() => {
    if (ref.current) {
      ref.current.setAttribute('draggable', !focused);
    }
  }, [focused]);

  return drag(
    <textarea ref={ref} onFocus={() => setFocused(true)} onBlur={() => setFocused(false)}></textarea>
  );
};

рдпрд╣ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЪрд╛рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: рдкрд▓рдХ:

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

vickyvxr picture vickyvxr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Okami92 picture Okami92  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Vadorequest picture Vadorequest  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

redochka picture redochka  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dwjohnston picture dwjohnston  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ