μ¬ννλ €λ©΄:
μ¬ν리 λλ νμ΄μ΄νμ€(IEμΌ μλ μμ)μμ μμ νμ΄μ§λ₯Ό μ¬μμμ€: https://gaearon.github.io/react-dnd/examples-sortable-simple.html
κ·Έλ¦¬κ³ ν¬κΈ° μ‘°μ λΈλΌμ°μ λ λͺ©λ‘μ μΌλΆ μμλ₯Ό νλ©΄ μΈλΆμ μ μ§ν λ€μ λλκ·Έλ₯Ό μλν©λλ€. λλκ·Ένλ λμ νμ΄μ§κ° μ€ν¬λ‘€λμ΄μΌ νμ§λ§ κ·Έλ μ§λ μμ΅λλ€. (ν¬λ‘¬μμλ μ¬λ°λ₯΄κ² μλν©λλ€)
μ΄ λ¬Έμ λ Firefoxμμ μ΄λ € μμ΅λλ€.
κ΄λ ¨ μ€ν μ€λ²νλ‘ μ§λ¬Έμ νμΈνκ³ μΆμ μ μμ΅λλ€.
http://stackoverflow.com/questions/16822920/scroll-while-using-html5-drag-and-drop
μ루μ
:
https://github.com/martindrapeau/jQueryDndPageScroll/blob/master/jquery.dnd_page_scroll.jsλ₯Ό νμΈ
λν μμ
μ
https://jsfiddle.net/0vv7fs63/2/
jquery νλ¬κ·ΈμΈ μ¬μ©μ μ μνλ κ²μ΄ μλλΌ μμ€ μ½λλ₯Ό νμΈνλ κ²μ
λλ€.
λ κ°μ div( νμ΄μ§ μλ¨ λ° νλ¨)λ₯Ό μΆκ°νκ³ λλκ·Έ μ€λ²/μν° μ΄λ²€νΈλ₯Ό μμ νκ³ κ·Έμ λ°λΌ μ€ν¬λ‘€νλ κ²μ΄ μ루μ
μ
λλ€.
react-dndμ λν μ΄ μ루μ
μ΄ μμ΅λλ€: https://github.com/azuqua/react-dnd-scrollzone
μ΄ λ¬Έμ λ μ§κΈ @darthtrevinoμμ μ’
λ£λ μ μμ΅λλ€.
Sortable κ°λ°μμκ² μ΄μ λν μ루μ μ μ 곡νμμμ€.
κ·Έκ²μ μ¬μ©νλ λ°©λ² λΉμ μ λλ₯Ό μ°Ύμ μ μμ΅λκΉ? @nossila
@AsceticBoy λλ READMEλ³΄λ€ λ λμ μμ μ ν μ μμ΅λλ€. κ±°κΈ°μ λ§μ μκ° μμ΅λλ€.
λλ μ΄κ²μ μ§μ ꡬννλ€. κΈ°λ³Έμ μΌλ‘ λͺ©λ‘ 컨ν μ΄λλ₯Ό λλ‘ λμμΌλ‘ μΆκ°νμ΅λλ€.
μ€κ³ : findDOMNode(component).getBoundingClientRect()
λ΄κ° μΈμ listcontainerμ μμͺ½μ μμλμ§ μκΈ° μν΄
λ€μ: listContainerDOMNode.scrollLeft += someValue
λͺ©λ‘μ μ€ν¬λ‘€νλ €λ©΄ λͺ©λ‘ 컨ν
μ΄λλ₯Ό μ€ν¬λ‘€ν©λλ€.
μ’μ μμμ΄μ§λ§ λ¬Έμ λ μ¬μ©μκ° ν¬μΈν°λ₯Ό κ³μ μ‘κ³ μμΌλ©΄ νΈλ² μ΄λ²€νΈκ° νΈλ¦¬κ±°λμ§ μμ μ€ν¬λ‘€μ΄ μ€μ§λλ€λ κ²μ λλ€.
ν¬μΈν°κ° μ¬μ νμμ λ listcontainerλ₯Ό μ€ν¬λ‘€νμ¬μ΄ λ¬Έμ λ₯Ό ν΄κ²° ν μ¬λμ΄ μμ΅λκΉ?
@λ Έμ€λΌ νμ΄! react-dnd-scrollzoneμ 맀λ ₯μΌλ‘ μλν©λλ€ :)
λλ μ΄κ²μ΄ μ€λλ μ€λ λλΌλ κ²μ μκ³ μμ§λ§ μ¬μ ν μ΄λ € μμ΅λλ€ ...
react-virtualized
μμ WindowScroller
μ ν¨κ» react-dnd-scrollzone
μ μ±κ³΅μ μΌλ‘ μ€μ ν μ¬λμ΄ μμ΅λλ€. κ·Έλ λ€λ©΄ ꡬνμ 곡μ ν μ μμ΅λκΉ?
WindowScroller
, AutoSizer
λ° List
. scrollzone
μ λλ‘ μλνμ§ μμμ΅λλ€.
λ΄ λ¬Έμ λ WindowScroller
μ¬μ©μ μ μ scrollElement
λ₯Ό μ¬μ©νκ³ μλ€λ κ²μ κΉ¨λ¬μμ΅λλ€. μ¬κΈ°μ react-dnd-scrollzone
λ 컨ν
μ΄λλ₯Ό λννλ μμλ‘ μ€μ ν©λλ€. μ¬μ©μ μ μ μ€ν¬λ‘€ μμ μνμ μΆκ°νκΈ° μν΄ ν¬ν¬νκ³ μμ΅λλ€.
react-dnd-scrollzoneμ΄ λ μ΄μ μ΅μ react-dndμμ μλνμ§ μλ κ² κ°μ΅λλ€. IMO λλκ·Έ μ€ν¬λ‘€μ react-dnd μ½μ΄μ μΌλΆμ¬μΌ ν©λλ€.
μλλ λ΄ μ루μ μ λλ€.
const autoScrollInSafari = (step = 4) => (fn) => {
const inSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
if (inSafari) {
return function (p, m, c) {
const scrollDOM = document.querySelector('.your-scroll-dom-class');
if (scrollDOM) {
const cursor = m.getClientOffset();
const rect = scrollDOM.getBoundingClientRect();
if (cursor.y - rect.top < 50) scrollDOM.scrollTop -= step;
if (rect.bottom - cursor.y < 50) scrollDOM.scrollTop += step;
if (cursor.x - rect.left < 50) scrollDOM.scrollLeft -= step;
if (rect.right - cursor.x < 50) scrollDOM.scrollLeft += step;
}
fn.apply(this, [p, m, c]);
};
}
return fn;
};
const myDropSpec = {
drop() {
// your drop callback
},
hover: autoScrollInSafari((props, monitor, component) => {
// your hover callback
}),
}
λμμ΄ λκΈ°λ₯Ό λ°λλλ€. :μλ€:
μ λ°μ΄νΈλ scrollzone ν¬ν¬(https://github.com/frontend-collective/frontend-collective-react-dnd-scrollzone)λ 7.0.2κΉμ§μ μ΅μ λ²μ μ react-dndμμ μλν©λλ€. ν΄λΉ λ²μ μ λμ΄μλ react-dndκ° μ΄ μ€λ₯λ₯Ό μμ±νλ DragDropContextλ₯Ό μ΄λνμ΅λλ€.
./node_modules/frontend-collective-react-dnd-scrollzone/lib/index.js
Module not found: Can't resolve 'react-dnd/lib/DragDropContext' in 'X:\WSProjects\sonnys-queue\node_modules\frontend-collective-react-dnd-scrollzone\lib'
@Soundvessel κ·Έκ²μ CommonJS/ESModule κΈ°λ₯ λλ¬Έμ΄μμ΅λλ€. μλ§λ λ©μ΄μ λ²μ μ»·μ΄μμ κ²μ
λλ€. react-dnd/lib/cjs/DragDropContext
μ°Ύκ±°λ react-dnd
μ μ΅μμ μμ€μμ κ°μ Έμ¬ μ μμ΅λλ€.
μ΄ λ¬Έμ λ μ΅κ·Ό νλμ΄ μμκΈ° λλ¬Έμ μλμΌλ‘ μ€λλ κ²μΌλ‘ νμλμμ΅λλ€. λ μ΄μ νλμ΄ μμΌλ©΄ νμλ©λλ€. κ·νμ κΈ°μ¬μ κ°μ¬λ립λλ€.
μ΅μ λ²μ μ react-dndλ₯Ό μ¬μ©ν μ μλ μ루μ μ μ°Ύμ μ¬λμ΄ μμ΅λκΉ?
μ λ°μ΄νΈλ scrollzone ν¬ν¬(https://github.com/frontend-collective/frontend-collective-react-dnd-scrollzone)λ 7.0.2κΉμ§μ μ΅μ λ²μ μ react-dndμμ μλν©λλ€. ν΄λΉ λ²μ μ λμ΄μλ react-dndκ° μ΄ μ€λ₯λ₯Ό μμ±νλ DragDropContextλ₯Ό μ΄λνμ΅λλ€.
./node_modules/frontend-collective-react-dnd-scrollzone/lib/index.js Module not found: Can't resolve 'react-dnd/lib/DragDropContext' in 'X:\WSProjects\sonnys-queue\node_modules\frontend-collective-react-dnd-scrollzone\lib'
@Soundvessel @darthtrevinoκ° μ μν μμ μ¬νμ μ μ©νμ΅λκΉ?
μ¦μ μ루μ μ μ°Ύμ μ μκ³ μΌλΆ μ루μ μ μ΅μ react-dnd λ²μ μμ μλνμ§ μκΈ° λλ¬Έμ μ§μ μ루μ μ μκ°ν΄ λμ΅λλ€. https://gist.github.com/orlandovallejos/ed9c79dd67e96c25cfcc8f1008df9489
λλ κ·Έκ²μ΄ λ€λ₯Έ μ¬λμ λκΈ°λ₯Ό λ°λλλ€.
@orlandovallejos
μλ
νμΈμ, μ΄ Sort μ€νΈλ μ€ ν
μ€νΈ μμ μμ ꡬνν μ μμ΅λκΉ? https://react-dnd.github.io/react-dnd/examples/sortable/stress-test
λλ μ‘°κΈ μλνμ§λ§ μ±κ³΅νμ§ λͺ»νμ΅λλ€.
@MartinN3 μ¬κΈ° λ΄ μΉκ΅¬κ° μμ΅λλ€: https://codesandbox.io/s/react-dnd-example-12-s3nnf
μꡬ μ¬ν, μ€νμ , div 컨ν μ΄λ(1κ° μ΄μ), μ€ν¬λ‘€ μλ(PX_DIFF λ³μ μ¬μ©) λ±μ λ§κ² μ λ°μ΄νΈν΄μΌ ν©λλ€.
μ€ν¬λ‘€ κΈ°λ₯μ Chromeμμ κΈ°λ³Έμ μΌλ‘ μλν©λλ€.
μ¦μ μ루μ μ μ°Ύμ μ μκ³ μΌλΆ μ루μ μ μ΅μ react-dnd λ²μ μμ μλνμ§ μκΈ° λλ¬Έμ μ§μ μ루μ μ μκ°ν΄ λμ΅λλ€. https://gist.github.com/orlandovallejos/ed9c79dd67e96c25cfcc8f1008df9489
λλ κ·Έκ²μ΄ λ€λ₯Έ μ¬λμ λκΈ°λ₯Ό λ°λλλ€.
μ΄κ²μ΄ μ΅κ³ μ μ루μ μ λλ€. ν΄κ²°ν΄μ£Όμ μ μ λ§ κ°μ¬ν©λλ€ :)
κ°μ₯ μ μ©ν λκΈ
react-dnd-scrollzoneμ΄ λ μ΄μ μ΅μ react-dndμμ μλνμ§ μλ κ² κ°μ΅λλ€. IMO λλκ·Έ μ€ν¬λ‘€μ react-dnd μ½μ΄μ μΌλΆμ¬μΌ ν©λλ€.