λλκ·Έ κ°λ₯ν κ΅¬μ± μμ λ΄λΆμ <input>
λ° <textarea>
μμλ₯Ό λ°°μΉ ν λ λͺ κ°μ§ λ¬Έμ λ₯Ό μ‘°μ¬ν©λλ€.
cmd+A
λλ Ctrl+A
λ¨μΆν€λ μ
λ ₯ λλ ν
μ€νΈ μμμμ μλνμ§ μμ΅λλ€ (κ·Έλ¬λ Shift + Arrows
ν
μ€νΈ μ ν λλκ·Έ κ°λ₯ν κ΅¬μ± μμλ λ€μκ³Ό κ°μ΅λλ€.
μ΄κ²μ selectstart
μ΄λ²€νΈμ λ±λ‘μΌλ‘ μΈν΄ λ°μνλ©° IE νΈνμ±μ μν΄μλ§ νμν©λλ€.
μ μ²λΌ IE νΈνμ±μ΄ νμνμ§ μμ κ²½μ° λ€μκ³Ό κ°μ λΉ λ₯Έ μμ μ΄ κ°λ₯ν©λλ€.
https://github.com/dperetti/react-dnd/commit/06f74ef97e07a9a24c10eab8593f3e2121d4f2ed
μ κ³ ν΄ μ£Όμ μ κ°μ¬ν©λλ€! μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ PRμ μλ½νκ²λμ΄ κΈ°μ©λλ€.
λ κ°μ§ μꡬ μ¬νμ΄ μμ΅λλ€.
preventDefault()
μ΄ νμνμ§ νμΈνμμμ€. λλκ·Ένλ €λ λͺ¨λ ν
μ€νΈ μ νμ λ°©ν΄νλ€κ³ μκ°ν©λλ€. μ€μ λ‘ λ€λ₯Έ λΈλΌμ°μ μμ μμΉ μλ μ νμ λ°©μ§νλ λ° λμμ΄λλ€λ©΄ e.preventDefault()
λ₯Ό e.target.tagName !== 'input'
(νμ§λ§ λ λλν κ²)λ‘ λͺ κ°μ 체ν¬λ‘ λλ¬μΈλ κ²μ΄ μ’μ΅λλ€.<div contentEditable={isEditing} />
μ λμΌν λ²κ·Έ.
λν νΈμ§ ν μ μμ΅λλ€. Ctrl+A
λ° Shift + Arrows
λ μλνμ§ μμ΅λλ€.
μμΌλ‘ 3 μ£Ό μμ λλ λ°μ κ²μ΄κ³ μ΄κ²μ κ³ μΉ μκ°μ΄ μμ΅λλ€.
λ΄κ° λ§νλ―μ΄ https://github.com/gaearon/react-dnd/issues/178#issuecomment -108110202μ μ€λͺ
λλλ‘ μμ λ PRμ μλ½νκ²λμ΄ κΈ°μ©λλ€.
μ΄κ²μ μ‘°μ¬νκ³ μμμ΅λλ€. μ 체 handleSelectStart
ν¨μ λ³Έλ¬Έμ μ£Όμ μ²λ¦¬νλ©΄ λͺ¨λ κ²μ΄ μμλλ‘ μλν©λλ€. IE11μμ μ΄κ²μ ν
μ€νΈνκ³ κ±°κΈ°μμλ μ’μ κ² κ°μ΅λλ€.
@gaearon μ΄λ²€νΈλ₯Ό μ²λ¦¬ν΄μΌνλ μ΄μ μ λν νΉμ μ¬μ© μ¬λ‘ λλ μ€μ μ΄ μλμ§ μκ³ μμ΅λκΉ? 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 μ, μ¬μ©νκΈ°μ μ’μ μμμ΅λλ€. κ°μ¬ν©λλ€. λͺ κ°μ§ μ°Έκ³ :
e.target.dragDrop()
νΈμΆ λ§ _ νμν _ κ²μΌλ‘ 보μ
λλ€. ν
μ€νΈ μ νμ ν΄μ νλμ λλκ·Έ λ
Έλλ₯Ό ν¬μ₯, μ 체 λλκ·Έλ₯Ό 컀λ²νλ νΈλ€μ μμ±νμ¬ μν ν μ μμ΅λλ€ connectDragPreview
μ νΈλ€ connectDragSource
. μ΄κ²μ λΆμΎνκ² λ€λ¦΄ μ μμ§λ§ AFAIKλ 곡μμ μΌλ‘ IE9λ₯Ό μ§μνμ§ μμΌλ―λ‘ νΉν ν΄λΉ λΈλΌμ°μ μμ λ€λ₯Έ λ¬Έμ κ° λ°μν κ°λ₯μ±μ΄μλ κ²½μ° ν©λ¦¬μ μΈ ν΄κ²° λ°©λ²μ
λκΉ?connectDragSource
λ₯Ό μ μ©νλ©΄ λ§μ°μ€λ₯Ό λλκ·Ένμ¬ ν
μ€νΈλ₯Ό μ νν μ μμ§λ§ (ν
μ€νΈλ₯Ό μ ννλ λμ λ
Έλλ₯Ό λλκ·Ένλ κ²μΌλ‘ λλ¨) μ 체 λ
Έλμ ν¬κΈ° μΈ λ³΄μ΄μ§ μλ νΈλ€μ μ μ©ν©λλ€. μμ£Ό μ μλν©λλ€.μ΄ λ¬Έμ λ₯Ό μ΄λ»κ² μ²λ¦¬ν μ§ νμ ν μ μμ΅λλ€. UA κ²μ¬μ μμ§νμ§ μκ³ λμ΄ λ¬Έμ λ₯Ό μ²λ¦¬ ν μμλ μ’μ λ°©λ²μ΄ μλ€λ κ²μ μμ§ λͺ»νλ©° λΉκ³΅μμ μΌλ‘ μ§μλλ λΈλΌμ°μ λ₯Ό μ§μνλ κΈ°λ₯μ μΆκ°νμ¬ μ μ§ κ΄λ¦¬ ꡬλ©μ νν€μΉ μμλ μ’μ λΈλΌμ°μ λ₯Ό νκ΄΄νλ κ²μ²λΌ 보μ λλ€. νμ§λ§ κ·Έκ² μ μ견μ λλ€. μ΄μ¨λ λ€λ₯Έ λ¬Έμ λ ν΄κ²°νλμ΄ λ¬Έμ μ λν ν΄κ²° λ°©λ²μ΄ μμ΅λλ€.
selectstart
λν μ΄λ²€νΈ 리μ€λλ₯Ό μ κ±°νλ©΄ contentEditable
κ° Chromeμμ μλνμ§λ§ Safariμμλ μλνμ§ μμ΅λλ€.
https://github.com/gaearon/react-dnd/commit/0a36033693868a7985ea2348105da4fb2cef8a00μ μν΄ μμ λμμ΅λλ€
selectstartμ λν μ΄λ²€νΈ 리μ€λλ₯Ό μ κ±°νλ©΄ contentEditableμ΄ Chromeμμ μλνμ§λ§ μ¬μ ν Safariμμλ μλνμ§ μμ΅λλ€.
μ΄κ²μ Safariμ HTML5 λλκ·Έ μ€ λλ‘ API λ¬Έμ μ λλ€. μ°λ¦¬κ° ν μμλ μΌμ μμ΅λλ€.
μ΄ λ¬Έμ μ λν μμ μ¬νμ [email protected]
μ 릴리μ€λμμ΅λλ€.
μλνλμ§ νμΈνμμμ€.
Ctrl / Cmd-Aκ° λλκ·Έ κ°λ₯ν κ΅¬μ± μμ λ΄ <input>
μμ μλνλμ§ νμΈνμ΅λλ€.
ν°μΉ ν¨λ / λ§μ°μ€λ‘ μ λ ₯ λλ ν μ€νΈ μμ μ½ν μΈ λ₯Ό μ ννλ €κ³ νλ©΄ λΆλͺ¨ μμ λκΈ°κ° μμλ©λλ€.
μ΄ λ¬Έμ κ° ν΄κ²°λμ§ μμμ΅λλ€. μ λ¬Έμ λ₯Ό λ§λμκ² μ΅λκΉ?
λλκ·Έ κ°λ₯ν λΆλͺ¨ 컨ν μ΄λ λ΄μ contentEditableμ΄ μ€μ λ μμλ ν μ€νΈλ₯Ό μ ννκ±°λ μ΄λ€ μ μΌλ‘λ μνΈ μμ©ν μ μμ΅λλ€. λͺ κ°μ§ μ‘°μ¬λ₯Ό ν ν λ€μ λ²κ·Έ λ³΄κ³ μλ₯Ό μ°Ύμμ΅λλ€. https://bugs.chromium.org/p/chromium/issues/detail?id=170139
μ΄ν Chromeμμ λ¬Έμ λ₯Ό ν΄κ²° ν κ²μΌλ‘ 보μ λλ€. κ·Έλμ CSSλ‘ Safariμ λμμ μμ ν μ μμ΅λλ€.
.contenteditable-element {
user-select: text;
}
@trevorsmith μ΄κ²μ μ¬μ ν ββFirefoxμ λμμ μμ νμ§ μμ΅λλ€. Firefoxμ λν ν΄κ²° λ°©λ²μ μκ³ μμ΅λκΉ?
@ rahul1995- λ°©κΈ ν΄κ²°μ±
μ μ°Ύμμ΅λλ€. λλκ·Έ κ°λ₯ν DOM λ
Έλμ μ°Έμ‘°λ₯Ό μ μ₯νκ³ μ¬μ©μκ° μ
λ ₯ / ν
μ€νΈ μμμ μ§μ€ν λ draggable μμ±μ 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>
);
};
μ΄κ²μ Firefoxλ₯Όμν νΈλ¦μ ν κ²μ λλ€ : wink :
κ°μ₯ μ μ©ν λκΈ
λλκ·Έ κ°λ₯ν λΆλͺ¨ 컨ν μ΄λ λ΄μ contentEditableμ΄ μ€μ λ μμλ ν μ€νΈλ₯Ό μ ννκ±°λ μ΄λ€ μ μΌλ‘λ μνΈ μμ©ν μ μμ΅λλ€. λͺ κ°μ§ μ‘°μ¬λ₯Ό ν ν λ€μ λ²κ·Έ λ³΄κ³ μλ₯Ό μ°Ύμμ΅λλ€. https://bugs.chromium.org/p/chromium/issues/detail?id=170139
μ΄ν Chromeμμ λ¬Έμ λ₯Ό ν΄κ²° ν κ²μΌλ‘ 보μ λλ€. κ·Έλμ CSSλ‘ Safariμ λμμ μμ ν μ μμ΅λλ€.