@vdnd/v3
Version:
Easy used vue drag and drop component library.
121 lines (85 loc) • 5.88 kB
Markdown
# drag
| 事件参数 | 类型 | 说明 |
| ------------- | -------------- | -------------------- |
| type | string | 'drag' |
| container | HTMLElement | **拖放容器** |
| source | object | **当前拖拽源** |
| over | object \| null | **当前选择放置区域** |
| originalEvent | Event \| null | |
`MouseDnd` 和 `TouchDnd` 触发的 `drag` 事件,`originalEvent` 为 null。
`MouseDnd` 和 `TouchDnd` 会每 50ms 触发一次 `drag` 事件,`NativeDnd` 触发 `drag` 事件的频率与原生 `drag` 事件一致。
在该事件的监听器中更新拖放交互相关的 DOM 元素是**不安全**的,例如将**当前拖拽源**从 DOM 中移除。
# drag:start
| 事件参数 | 类型 | 说明 |
| ------------- | ----------- | -------------- |
| type | string | 'drag:start' |
| container | HTMLElement | **拖放容器** |
| source | object | **当前拖拽源** |
| originalEvent | Event | |
在该事件的监听器中更新拖放交互相关的 DOM 元素是**不安全**的。
# drag:prevent
| 事件参数 | 类型 | 说明 |
| ------------- | ----------- | ---------------- |
| type | string | 'drag:prevent' |
| container | HTMLElement | **拖放容器** |
| source | object | 尝试拖拽的**源** |
| originalEvent | Event | |
在该事件的监听器中更新拖放交互相关的 DOM 元素是**安全**的。
# drag:enter
| 事件参数 | 类型 | 说明 |
| ------------- | ----------- | ---------------------------------- |
| type | string | 'drag:enter' |
| container | HTMLElement | **拖放容器** |
| source | object | **当前拖拽源** |
| enter | object | 即将作为**当前选择**的**放置区域** |
| originalEvent | Event | |
在该事件的监听器中更新拖放交互相关的 DOM 元素是**不安全**的。
# drag:leave
| 事件参数 | 类型 | 说明 |
| ------------- | ----------- | ---------------------------------------------- |
| type | string | 'drag:leave' |
| container | HTMLElement | **拖放容器** |
| source | object | **当前拖拽源** |
| leave | object | 上个**当前选择放置区域**或**当前选择放置区域** |
| originalEvent | Event | |
在该事件的监听器中更新拖放交互相关的 DOM 元素是**不安全**的。
# drag:over
| 事件参数 | 类型 | 说明 |
| ------------- | ------------- | -------------------- |
| type | string | 'drag:over' |
| container | HTMLElement | **拖放容器** |
| source | object | **当前拖拽源** |
| over | object | **当前选择放置区域** |
| originalEvent | Event \| null | |
`MouseDnd` 和 `TouchDnd` 触发的 `drag:over` 事件,`originalEvent` 为 null。
`MouseDnd` 和 `TouchDnd` 会每 50ms 触发一次 `drag:over` 事件,`NativeDnd` 触发 `drag:over` 事件的频率与原生 `dragover` 事件一致。
在该事件的监听器中更新拖放交互相关的 DOM 元素是**不安全**的。
# drop
| 事件参数 | 类型 | 说明 |
| ------------- | ----------- | -------------------- |
| type | string | 'drop' |
| container | HTMLElement | **拖放容器** |
| source | object | **当前拖拽源** |
| dropzone | object | **当前选择放置区域** |
| originalEvent | Event | |
在该事件的监听器中更新拖放交互相关的 DOM 元素是**安全**的。
`drop` 事件触发时,**拖放交互实例**的状态尚未被重置,`source` 和 `over` 属性值均为非空。
# drag:end
| 事件参数 | 类型 | 说明 |
| ------------- | -------------- | -------------------- |
| type | string | 'drag:end' |
| container | HTMLElement | **拖放容器** |
| source | object | **当前拖拽源** |
| over | object \| null | **当前选择放置区域** |
| originalEvent | Event | |
`MouseDnd` 和 `NativeDnd` 可以通过按下 `esc` 键终止拖放交互:
| 终止交互时是否存在当前选择放置区域 | 行为 |
| ---------------------------------- | ---------------------------------------- |
| 是 | 先后触发 `drag:leave` 与 `drag:end` 事件 |
| 否 | 触发 `drag:end` 事件 |
在该事件的监听器中更新拖放交互相关的 DOM 元素是**安全**的。
`drag:end` 事件触发时,**拖放交互实例**的状态已被重置,`source` 和 `over` 属性值均被重置为 null,相关样式已从 DOM 中移除。
# initialized
无参数。
在该事件的监听器中更新拖放交互相关的 DOM 元素是**安全**的。
如果我们想通过**拖放交互实例**监听拖放交互事件,那么需要在该事件的监听器中进行监听,否则将是**不安全**的。