Skip to content

Commit

Permalink
Disable hoverClass when disabling or destroying sortable element (#672)
Browse files Browse the repository at this point in the history
* Disable hoverClass when disabling or destroying sortable element
  • Loading branch information
mateuszpigula authored Mar 3, 2021
1 parent d724d4a commit 9a0a452
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 3 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ sortable('.sortable', {
```

### hoverClass
Use the `hoverClass` option to apply css classes to the hovered element rather than relying on `:hover`. This can eliminate some potential drag and drop issues where another element thinks it is being hovered over.
Use the `hoverClass` option to apply css classes to the hovered element rather than relying on `:hover`. This can eliminate some potential drag and drop issues where another element thinks it is being hovered over. Disabled when disabling or destroying sortable element.

``` javascript
sortable('.sortable', {
Expand Down
4 changes: 4 additions & 0 deletions __tests__/sortableMethodsTests/_removeItemData.test.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
/* global describe,test,expect */
import { mockInnerHTML } from '../helpers'
import sortable from '../../src/html5sortable'
import store from '../../src/store'
/* eslint-env jest */

describe('_removeItemData', () => {
let ul, allLiElements, li
beforeEach(() => {
document.body.innerHTML = mockInnerHTML
ul = document.body.querySelector('.sortable')
store(ul).config = {
hoverClass: 'hover-class'
}
sortable(ul, 'destroy')
// init sortable
sortable(ul, null)
Expand Down
4 changes: 3 additions & 1 deletion docs/html5sortable.js
Original file line number Diff line number Diff line change
Expand Up @@ -656,7 +656,6 @@ var sortable = (function () {
* @param {sortable} sortableContainer a valid sortableContainer
* @param {boolean} enable enable or disable event
*/
// export default (sortableContainer: sortable, enable: boolean) => {
var enableHoverClass = (function (sortableContainer, enable) {
if (typeof store(sortableContainer).getConfig('hoverClass') === 'string') {
var hoverClasses_1 = store(sortableContainer).getConfig('hoverClass').split(' ');
Expand Down Expand Up @@ -808,6 +807,8 @@ var sortable = (function () {
var opts = addData(sortableElement, 'opts') || {};
var items = filter(sortableElement.children, opts.items);
var handles = getHandles(items, opts.handle);
// disable adding hover class
enableHoverClass(sortableElement, false);
// remove event handlers & data from sortable
removeEventListener(sortableElement, 'dragover');
removeEventListener(sortableElement, 'dragenter');
Expand Down Expand Up @@ -869,6 +870,7 @@ var sortable = (function () {
addData(sortableElement, '_disabled', 'true');
addAttribute(handles, 'draggable', 'false');
removeEventListener(handles, 'mousedown');
enableHoverClass(sortableElement, false);
};
/**
* Reload the sortable
Expand Down
1 change: 0 additions & 1 deletion src/hoverClass.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import { addEventListener, removeEventListener } from './eventListener'
* @param {sortable} sortableContainer a valid sortableContainer
* @param {boolean} enable enable or disable event
*/
// export default (sortableContainer: sortable, enable: boolean) => {
export default (sortableContainer: sortable, enable: boolean) => {
if (typeof store(sortableContainer).getConfig('hoverClass') === 'string') {
const hoverClasses = store(sortableContainer).getConfig('hoverClass').split(' ')
Expand Down
3 changes: 3 additions & 0 deletions src/html5sortable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,8 @@ const destroySortable = function (sortableElement) {
const opts = data(sortableElement, 'opts') || {}
const items = filter(sortableElement.children, opts.items)
const handles = getHandles(items, opts.handle)
// disable adding hover class
enableHoverClass(sortableElement, false)
// remove event handlers & data from sortable
off(sortableElement, 'dragover')
off(sortableElement, 'dragenter')
Expand Down Expand Up @@ -205,6 +207,7 @@ const disableSortable = function (sortableElement) {
data(sortableElement, '_disabled', 'true')
attr(handles, 'draggable', 'false')
off(handles, 'mousedown')
enableHoverClass(sortableElement, false)
}
/**
* Reload the sortable
Expand Down

0 comments on commit 9a0a452

Please sign in to comment.