govuk_publishing_components 30.3.0 → 30.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-link-tracker.js +17 -3
- data/app/assets/stylesheets/component_guide/application.scss +4 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_layout-footer.scss +7 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_layout-super-navigation-header.scss +1 -1
- data/app/models/govuk_publishing_components/component_example.rb +3 -2
- data/app/views/govuk_publishing_components/component_guide/show.html.erb +26 -2
- data/config/locales/en.yml +4 -0
- data/lib/govuk_publishing_components/version.rb +1 -1
- data/node_modules/sortablejs/README.md +828 -815
- data/node_modules/sortablejs/Sortable.js +186 -113
- data/node_modules/sortablejs/Sortable.min.js +2 -2
- data/node_modules/sortablejs/modular/sortable.complete.esm.js +184 -111
- data/node_modules/sortablejs/modular/sortable.core.esm.js +184 -111
- data/node_modules/sortablejs/modular/sortable.esm.js +184 -111
- data/node_modules/sortablejs/package.json +3 -3
- metadata +16 -2
@@ -1,10 +1,50 @@
|
|
1
1
|
/**!
|
2
|
-
* Sortable 1.
|
2
|
+
* Sortable 1.15.0
|
3
3
|
* @author RubaXa <trash@rubaxa.org>
|
4
4
|
* @author owenm <owen23355@gmail.com>
|
5
5
|
* @license MIT
|
6
6
|
*/
|
7
|
+
function ownKeys(object, enumerableOnly) {
|
8
|
+
var keys = Object.keys(object);
|
9
|
+
|
10
|
+
if (Object.getOwnPropertySymbols) {
|
11
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
12
|
+
|
13
|
+
if (enumerableOnly) {
|
14
|
+
symbols = symbols.filter(function (sym) {
|
15
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
16
|
+
});
|
17
|
+
}
|
18
|
+
|
19
|
+
keys.push.apply(keys, symbols);
|
20
|
+
}
|
21
|
+
|
22
|
+
return keys;
|
23
|
+
}
|
24
|
+
|
25
|
+
function _objectSpread2(target) {
|
26
|
+
for (var i = 1; i < arguments.length; i++) {
|
27
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
28
|
+
|
29
|
+
if (i % 2) {
|
30
|
+
ownKeys(Object(source), true).forEach(function (key) {
|
31
|
+
_defineProperty(target, key, source[key]);
|
32
|
+
});
|
33
|
+
} else if (Object.getOwnPropertyDescriptors) {
|
34
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
35
|
+
} else {
|
36
|
+
ownKeys(Object(source)).forEach(function (key) {
|
37
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
38
|
+
});
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
return target;
|
43
|
+
}
|
44
|
+
|
7
45
|
function _typeof(obj) {
|
46
|
+
"@babel/helpers - typeof";
|
47
|
+
|
8
48
|
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
|
9
49
|
_typeof = function (obj) {
|
10
50
|
return typeof obj;
|
@@ -51,25 +91,6 @@ function _extends() {
|
|
51
91
|
return _extends.apply(this, arguments);
|
52
92
|
}
|
53
93
|
|
54
|
-
function _objectSpread(target) {
|
55
|
-
for (var i = 1; i < arguments.length; i++) {
|
56
|
-
var source = arguments[i] != null ? arguments[i] : {};
|
57
|
-
var ownKeys = Object.keys(source);
|
58
|
-
|
59
|
-
if (typeof Object.getOwnPropertySymbols === 'function') {
|
60
|
-
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
|
61
|
-
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
62
|
-
}));
|
63
|
-
}
|
64
|
-
|
65
|
-
ownKeys.forEach(function (key) {
|
66
|
-
_defineProperty(target, key, source[key]);
|
67
|
-
});
|
68
|
-
}
|
69
|
-
|
70
|
-
return target;
|
71
|
-
}
|
72
|
-
|
73
94
|
function _objectWithoutPropertiesLoose(source, excluded) {
|
74
95
|
if (source == null) return {};
|
75
96
|
var target = {};
|
@@ -107,32 +128,43 @@ function _objectWithoutProperties(source, excluded) {
|
|
107
128
|
}
|
108
129
|
|
109
130
|
function _toConsumableArray(arr) {
|
110
|
-
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
|
131
|
+
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
111
132
|
}
|
112
133
|
|
113
134
|
function _arrayWithoutHoles(arr) {
|
114
|
-
if (Array.isArray(arr))
|
115
|
-
for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
|
116
|
-
|
117
|
-
return arr2;
|
118
|
-
}
|
135
|
+
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
|
119
136
|
}
|
120
137
|
|
121
138
|
function _iterableToArray(iter) {
|
122
|
-
if (Symbol.iterator
|
139
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
140
|
+
}
|
141
|
+
|
142
|
+
function _unsupportedIterableToArray(o, minLen) {
|
143
|
+
if (!o) return;
|
144
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
145
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
146
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
147
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
148
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
149
|
+
}
|
150
|
+
|
151
|
+
function _arrayLikeToArray(arr, len) {
|
152
|
+
if (len == null || len > arr.length) len = arr.length;
|
153
|
+
|
154
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
155
|
+
|
156
|
+
return arr2;
|
123
157
|
}
|
124
158
|
|
125
159
|
function _nonIterableSpread() {
|
126
|
-
throw new TypeError("Invalid attempt to spread non-iterable instance");
|
160
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
127
161
|
}
|
128
162
|
|
129
|
-
var version = "1.
|
163
|
+
var version = "1.15.0";
|
130
164
|
|
131
165
|
function userAgent(pattern) {
|
132
166
|
if (typeof window !== 'undefined' && window.navigator) {
|
133
|
-
return !!
|
134
|
-
/*@__PURE__*/
|
135
|
-
navigator.userAgent.match(pattern);
|
167
|
+
return !! /*@__PURE__*/navigator.userAgent.match(pattern);
|
136
168
|
}
|
137
169
|
}
|
138
170
|
|
@@ -413,13 +445,13 @@ function isScrolledPast(el, elSide, parentSide) {
|
|
413
445
|
*/
|
414
446
|
|
415
447
|
|
416
|
-
function getChild(el, childNum, options) {
|
448
|
+
function getChild(el, childNum, options, includeDragEl) {
|
417
449
|
var currentChild = 0,
|
418
450
|
i = 0,
|
419
451
|
children = el.children;
|
420
452
|
|
421
453
|
while (i < children.length) {
|
422
|
-
if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {
|
454
|
+
if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {
|
423
455
|
if (currentChild === childNum) {
|
424
456
|
return children[i];
|
425
457
|
}
|
@@ -637,7 +669,7 @@ function AnimationStateManager() {
|
|
637
669
|
rect: getRect(child)
|
638
670
|
});
|
639
671
|
|
640
|
-
var fromRect =
|
672
|
+
var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation
|
641
673
|
|
642
674
|
|
643
675
|
if (child.thisAnimationDuration) {
|
@@ -807,7 +839,7 @@ var PluginManager = {
|
|
807
839
|
if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable
|
808
840
|
|
809
841
|
if (sortable[plugin.pluginName][eventNameGlobal]) {
|
810
|
-
sortable[plugin.pluginName][eventNameGlobal](
|
842
|
+
sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({
|
811
843
|
sortable: sortable
|
812
844
|
}, evt));
|
813
845
|
} // Only fire plugin event if plugin is enabled in this sortable,
|
@@ -815,7 +847,7 @@ var PluginManager = {
|
|
815
847
|
|
816
848
|
|
817
849
|
if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {
|
818
|
-
sortable[plugin.pluginName][eventName](
|
850
|
+
sortable[plugin.pluginName][eventName](_objectSpread2({
|
819
851
|
sortable: sortable
|
820
852
|
}, evt));
|
821
853
|
}
|
@@ -907,7 +939,7 @@ function dispatchEvent(_ref) {
|
|
907
939
|
evt.originalEvent = originalEvent;
|
908
940
|
evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;
|
909
941
|
|
910
|
-
var allEventProperties =
|
942
|
+
var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));
|
911
943
|
|
912
944
|
for (var option in allEventProperties) {
|
913
945
|
evt[option] = allEventProperties[option];
|
@@ -922,12 +954,14 @@ function dispatchEvent(_ref) {
|
|
922
954
|
}
|
923
955
|
}
|
924
956
|
|
957
|
+
var _excluded = ["evt"];
|
958
|
+
|
925
959
|
var pluginEvent = function pluginEvent(eventName, sortable) {
|
926
960
|
var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
927
961
|
originalEvent = _ref.evt,
|
928
|
-
data = _objectWithoutProperties(_ref,
|
962
|
+
data = _objectWithoutProperties(_ref, _excluded);
|
929
963
|
|
930
|
-
PluginManager.pluginEvent.bind(Sortable)(eventName, sortable,
|
964
|
+
PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({
|
931
965
|
dragEl: dragEl,
|
932
966
|
parentEl: parentEl,
|
933
967
|
ghostEl: ghostEl,
|
@@ -963,7 +997,7 @@ var pluginEvent = function pluginEvent(eventName, sortable) {
|
|
963
997
|
};
|
964
998
|
|
965
999
|
function _dispatchEvent(info) {
|
966
|
-
dispatchEvent(
|
1000
|
+
dispatchEvent(_objectSpread2({
|
967
1001
|
putSortable: putSortable,
|
968
1002
|
cloneEl: cloneEl,
|
969
1003
|
targetEl: dragEl,
|
@@ -1063,22 +1097,22 @@ supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in
|
|
1063
1097
|
return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;
|
1064
1098
|
},
|
1065
1099
|
|
1066
|
-
/**
|
1067
|
-
* Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.
|
1068
|
-
* @param {Number} x X position
|
1069
|
-
* @param {Number} y Y position
|
1070
|
-
* @return {HTMLElement} Element of the first found nearest Sortable
|
1100
|
+
/**
|
1101
|
+
* Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.
|
1102
|
+
* @param {Number} x X position
|
1103
|
+
* @param {Number} y Y position
|
1104
|
+
* @return {HTMLElement} Element of the first found nearest Sortable
|
1071
1105
|
*/
|
1072
1106
|
_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {
|
1073
1107
|
var ret;
|
1074
1108
|
sortables.some(function (sortable) {
|
1075
|
-
|
1109
|
+
var threshold = sortable[expando].options.emptyInsertThreshold;
|
1110
|
+
if (!threshold || lastChild(sortable)) return;
|
1076
1111
|
var rect = getRect(sortable),
|
1077
|
-
threshold = sortable[expando].options.emptyInsertThreshold,
|
1078
1112
|
insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,
|
1079
1113
|
insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;
|
1080
1114
|
|
1081
|
-
if (
|
1115
|
+
if (insideHorizontally && insideVertically) {
|
1082
1116
|
return ret = sortable;
|
1083
1117
|
}
|
1084
1118
|
});
|
@@ -1133,7 +1167,7 @@ _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {
|
|
1133
1167
|
}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position
|
1134
1168
|
|
1135
1169
|
|
1136
|
-
if (documentExists) {
|
1170
|
+
if (documentExists && !ChromeForAndroid) {
|
1137
1171
|
document.addEventListener('click', function (evt) {
|
1138
1172
|
if (ignoreNextClick) {
|
1139
1173
|
evt.preventDefault();
|
@@ -1175,10 +1209,10 @@ var _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {
|
|
1175
1209
|
dragEl.parentNode[expando]._isOutsideThisEl(evt.target);
|
1176
1210
|
}
|
1177
1211
|
};
|
1178
|
-
/**
|
1179
|
-
* @class Sortable
|
1180
|
-
* @param {HTMLElement} el
|
1181
|
-
* @param {Object} [options]
|
1212
|
+
/**
|
1213
|
+
* @class Sortable
|
1214
|
+
* @param {HTMLElement} el
|
1215
|
+
* @param {Object} [options]
|
1182
1216
|
*/
|
1183
1217
|
|
1184
1218
|
|
@@ -1752,6 +1786,7 @@ Sortable.prototype =
|
|
1752
1786
|
|
1753
1787
|
if (!Sortable.eventCanceled) {
|
1754
1788
|
cloneEl = clone(dragEl);
|
1789
|
+
cloneEl.removeAttribute("id");
|
1755
1790
|
cloneEl.draggable = false;
|
1756
1791
|
cloneEl.style['will-change'] = '';
|
1757
1792
|
|
@@ -1829,7 +1864,7 @@ Sortable.prototype =
|
|
1829
1864
|
if (_silent) return;
|
1830
1865
|
|
1831
1866
|
function dragOverEvent(name, extra) {
|
1832
|
-
pluginEvent(name, _this,
|
1867
|
+
pluginEvent(name, _this, _objectSpread2({
|
1833
1868
|
evt: evt,
|
1834
1869
|
isOwner: isOwner,
|
1835
1870
|
axis: vertical ? 'vertical' : 'horizontal',
|
@@ -1946,7 +1981,7 @@ Sortable.prototype =
|
|
1946
1981
|
|
1947
1982
|
ignoreNextClick = false;
|
1948
1983
|
|
1949
|
-
if (activeSortable && !options.disabled && (isOwner ? canSort || (revert =
|
1984
|
+
if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list
|
1950
1985
|
: putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {
|
1951
1986
|
vertical = this._getDirection(evt, target) === 'vertical';
|
1952
1987
|
dragRect = getRect(dragEl);
|
@@ -1976,10 +2011,11 @@ Sortable.prototype =
|
|
1976
2011
|
var elLastChild = lastChild(el, options.draggable);
|
1977
2012
|
|
1978
2013
|
if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {
|
2014
|
+
// Insert to end of list
|
1979
2015
|
// If already at end of list: Do not insert
|
1980
2016
|
if (elLastChild === dragEl) {
|
1981
2017
|
return completed(false);
|
1982
|
-
} //
|
2018
|
+
} // if there is a last element, it is the target
|
1983
2019
|
|
1984
2020
|
|
1985
2021
|
if (elLastChild && el === evt.target) {
|
@@ -1992,7 +2028,33 @@ Sortable.prototype =
|
|
1992
2028
|
|
1993
2029
|
if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {
|
1994
2030
|
capture();
|
1995
|
-
|
2031
|
+
|
2032
|
+
if (elLastChild && elLastChild.nextSibling) {
|
2033
|
+
// the last draggable element is not the last node
|
2034
|
+
el.insertBefore(dragEl, elLastChild.nextSibling);
|
2035
|
+
} else {
|
2036
|
+
el.appendChild(dragEl);
|
2037
|
+
}
|
2038
|
+
|
2039
|
+
parentEl = el; // actualization
|
2040
|
+
|
2041
|
+
changed();
|
2042
|
+
return completed(true);
|
2043
|
+
}
|
2044
|
+
} else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {
|
2045
|
+
// Insert to start of list
|
2046
|
+
var firstChild = getChild(el, 0, options, true);
|
2047
|
+
|
2048
|
+
if (firstChild === dragEl) {
|
2049
|
+
return completed(false);
|
2050
|
+
}
|
2051
|
+
|
2052
|
+
target = firstChild;
|
2053
|
+
targetRect = getRect(target);
|
2054
|
+
|
2055
|
+
if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {
|
2056
|
+
capture();
|
2057
|
+
el.insertBefore(dragEl, firstChild);
|
1996
2058
|
parentEl = el; // actualization
|
1997
2059
|
|
1998
2060
|
changed();
|
@@ -2296,9 +2358,9 @@ Sortable.prototype =
|
|
2296
2358
|
}
|
2297
2359
|
},
|
2298
2360
|
|
2299
|
-
/**
|
2300
|
-
* Serializes the item into an array of string.
|
2301
|
-
* @returns {String[]}
|
2361
|
+
/**
|
2362
|
+
* Serializes the item into an array of string.
|
2363
|
+
* @returns {String[]}
|
2302
2364
|
*/
|
2303
2365
|
toArray: function toArray() {
|
2304
2366
|
var order = [],
|
@@ -2319,9 +2381,9 @@ Sortable.prototype =
|
|
2319
2381
|
return order;
|
2320
2382
|
},
|
2321
2383
|
|
2322
|
-
/**
|
2323
|
-
* Sorts the elements according to the array.
|
2324
|
-
* @param {String[]} order order of the items
|
2384
|
+
/**
|
2385
|
+
* Sorts the elements according to the array.
|
2386
|
+
* @param {String[]} order order of the items
|
2325
2387
|
*/
|
2326
2388
|
sort: function sort(order, useAnimation) {
|
2327
2389
|
var items = {},
|
@@ -2343,29 +2405,29 @@ Sortable.prototype =
|
|
2343
2405
|
useAnimation && this.animateAll();
|
2344
2406
|
},
|
2345
2407
|
|
2346
|
-
/**
|
2347
|
-
* Save the current sorting
|
2408
|
+
/**
|
2409
|
+
* Save the current sorting
|
2348
2410
|
*/
|
2349
2411
|
save: function save() {
|
2350
2412
|
var store = this.options.store;
|
2351
2413
|
store && store.set && store.set(this);
|
2352
2414
|
},
|
2353
2415
|
|
2354
|
-
/**
|
2355
|
-
* For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.
|
2356
|
-
* @param {HTMLElement} el
|
2357
|
-
* @param {String} [selector] default: `options.draggable`
|
2358
|
-
* @returns {HTMLElement|null}
|
2416
|
+
/**
|
2417
|
+
* For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.
|
2418
|
+
* @param {HTMLElement} el
|
2419
|
+
* @param {String} [selector] default: `options.draggable`
|
2420
|
+
* @returns {HTMLElement|null}
|
2359
2421
|
*/
|
2360
2422
|
closest: function closest$1(el, selector) {
|
2361
2423
|
return closest(el, selector || this.options.draggable, this.el, false);
|
2362
2424
|
},
|
2363
2425
|
|
2364
|
-
/**
|
2365
|
-
* Set/get option
|
2366
|
-
* @param {string} name
|
2367
|
-
* @param {*} [value]
|
2368
|
-
* @returns {*}
|
2426
|
+
/**
|
2427
|
+
* Set/get option
|
2428
|
+
* @param {string} name
|
2429
|
+
* @param {*} [value]
|
2430
|
+
* @returns {*}
|
2369
2431
|
*/
|
2370
2432
|
option: function option(name, value) {
|
2371
2433
|
var options = this.options;
|
@@ -2387,8 +2449,8 @@ Sortable.prototype =
|
|
2387
2449
|
}
|
2388
2450
|
},
|
2389
2451
|
|
2390
|
-
/**
|
2391
|
-
* Destroy
|
2452
|
+
/**
|
2453
|
+
* Destroy
|
2392
2454
|
*/
|
2393
2455
|
destroy: function destroy() {
|
2394
2456
|
pluginEvent('destroy', this);
|
@@ -2508,6 +2570,12 @@ function _unsilent() {
|
|
2508
2570
|
_silent = false;
|
2509
2571
|
}
|
2510
2572
|
|
2573
|
+
function _ghostIsFirst(evt, vertical, sortable) {
|
2574
|
+
var rect = getRect(getChild(sortable.el, 0, sortable.options, true));
|
2575
|
+
var spacer = 10;
|
2576
|
+
return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;
|
2577
|
+
}
|
2578
|
+
|
2511
2579
|
function _ghostIsLast(evt, vertical, sortable) {
|
2512
2580
|
var rect = getRect(lastChild(sortable.el, sortable.options.draggable));
|
2513
2581
|
var spacer = 10;
|
@@ -2559,11 +2627,11 @@ function _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, inv
|
|
2559
2627
|
|
2560
2628
|
return 0;
|
2561
2629
|
}
|
2562
|
-
/**
|
2563
|
-
* Gets the direction dragEl must be swapped relative to target in order to make it
|
2564
|
-
* seem that dragEl has been "inserted" into that element's position
|
2565
|
-
* @param {HTMLElement} target The target whose position dragEl is being inserted at
|
2566
|
-
* @return {Number} Direction dragEl must be swapped
|
2630
|
+
/**
|
2631
|
+
* Gets the direction dragEl must be swapped relative to target in order to make it
|
2632
|
+
* seem that dragEl has been "inserted" into that element's position
|
2633
|
+
* @param {HTMLElement} target The target whose position dragEl is being inserted at
|
2634
|
+
* @return {Number} Direction dragEl must be swapped
|
2567
2635
|
*/
|
2568
2636
|
|
2569
2637
|
|
@@ -2574,11 +2642,11 @@ function _getInsertDirection(target) {
|
|
2574
2642
|
return -1;
|
2575
2643
|
}
|
2576
2644
|
}
|
2577
|
-
/**
|
2578
|
-
* Generate id
|
2579
|
-
* @param {HTMLElement} el
|
2580
|
-
* @returns {String}
|
2581
|
-
* @private
|
2645
|
+
/**
|
2646
|
+
* Generate id
|
2647
|
+
* @param {HTMLElement} el
|
2648
|
+
* @returns {String}
|
2649
|
+
* @private
|
2582
2650
|
*/
|
2583
2651
|
|
2584
2652
|
|
@@ -2642,18 +2710,18 @@ Sortable.utils = {
|
|
2642
2710
|
detectDirection: _detectDirection,
|
2643
2711
|
getChild: getChild
|
2644
2712
|
};
|
2645
|
-
/**
|
2646
|
-
* Get the Sortable instance of an element
|
2647
|
-
* @param {HTMLElement} element The element
|
2648
|
-
* @return {Sortable|undefined} The instance of Sortable
|
2713
|
+
/**
|
2714
|
+
* Get the Sortable instance of an element
|
2715
|
+
* @param {HTMLElement} element The element
|
2716
|
+
* @return {Sortable|undefined} The instance of Sortable
|
2649
2717
|
*/
|
2650
2718
|
|
2651
2719
|
Sortable.get = function (element) {
|
2652
2720
|
return element[expando];
|
2653
2721
|
};
|
2654
|
-
/**
|
2655
|
-
* Mount a plugin to Sortable
|
2656
|
-
* @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted
|
2722
|
+
/**
|
2723
|
+
* Mount a plugin to Sortable
|
2724
|
+
* @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted
|
2657
2725
|
*/
|
2658
2726
|
|
2659
2727
|
|
@@ -2668,14 +2736,14 @@ Sortable.mount = function () {
|
|
2668
2736
|
throw "Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(plugin));
|
2669
2737
|
}
|
2670
2738
|
|
2671
|
-
if (plugin.utils) Sortable.utils =
|
2739
|
+
if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);
|
2672
2740
|
PluginManager.mount(plugin);
|
2673
2741
|
});
|
2674
2742
|
};
|
2675
|
-
/**
|
2676
|
-
* Create sortable instance
|
2677
|
-
* @param {HTMLElement} el
|
2678
|
-
* @param {Object} [options]
|
2743
|
+
/**
|
2744
|
+
* Create sortable instance
|
2745
|
+
* @param {HTMLElement} el
|
2746
|
+
* @param {Object} [options]
|
2679
2747
|
*/
|
2680
2748
|
|
2681
2749
|
|
@@ -2699,6 +2767,7 @@ function AutoScrollPlugin() {
|
|
2699
2767
|
function AutoScroll() {
|
2700
2768
|
this.defaults = {
|
2701
2769
|
scroll: true,
|
2770
|
+
forceAutoScrollFallback: false,
|
2702
2771
|
scrollSensitivity: 30,
|
2703
2772
|
scrollSpeed: 10,
|
2704
2773
|
bubbleScroll: true
|
@@ -2766,7 +2835,7 @@ function AutoScrollPlugin() {
|
|
2766
2835
|
// MACOS Safari does not have autoscroll,
|
2767
2836
|
// Firefox and Chrome are good
|
2768
2837
|
|
2769
|
-
if (fallback || Edge || IE11OrLess || Safari) {
|
2838
|
+
if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {
|
2770
2839
|
autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change
|
2771
2840
|
|
2772
2841
|
var ogElemScroller = getParentAutoScrollElement(elem, true);
|
@@ -3111,11 +3180,13 @@ function MultiDragPlugin() {
|
|
3111
3180
|
}
|
3112
3181
|
}
|
3113
3182
|
|
3114
|
-
if (sortable.options.
|
3115
|
-
|
3116
|
-
|
3117
|
-
|
3118
|
-
|
3183
|
+
if (!sortable.options.avoidImplicitDeselect) {
|
3184
|
+
if (sortable.options.supportPointer) {
|
3185
|
+
on(document, 'pointerup', this._deselectMultiDrag);
|
3186
|
+
} else {
|
3187
|
+
on(document, 'mouseup', this._deselectMultiDrag);
|
3188
|
+
on(document, 'touchend', this._deselectMultiDrag);
|
3189
|
+
}
|
3119
3190
|
}
|
3120
3191
|
|
3121
3192
|
on(document, 'keydown', this._checkKeyDown);
|
@@ -3123,6 +3194,7 @@ function MultiDragPlugin() {
|
|
3123
3194
|
this.defaults = {
|
3124
3195
|
selectedClass: 'sortable-selected',
|
3125
3196
|
multiDragKey: null,
|
3197
|
+
avoidImplicitDeselect: false,
|
3126
3198
|
setData: function setData(dataTransfer, dragEl) {
|
3127
3199
|
var data = '';
|
3128
3200
|
|
@@ -3413,7 +3485,7 @@ function MultiDragPlugin() {
|
|
3413
3485
|
rootEl: rootEl,
|
3414
3486
|
name: 'select',
|
3415
3487
|
targetEl: dragEl$1,
|
3416
|
-
|
3488
|
+
originalEvent: evt
|
3417
3489
|
}); // Modifier activated, select from last to dragEl
|
3418
3490
|
|
3419
3491
|
if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {
|
@@ -3442,7 +3514,7 @@ function MultiDragPlugin() {
|
|
3442
3514
|
rootEl: rootEl,
|
3443
3515
|
name: 'select',
|
3444
3516
|
targetEl: children[i],
|
3445
|
-
|
3517
|
+
originalEvent: evt
|
3446
3518
|
});
|
3447
3519
|
}
|
3448
3520
|
}
|
@@ -3459,14 +3531,15 @@ function MultiDragPlugin() {
|
|
3459
3531
|
rootEl: rootEl,
|
3460
3532
|
name: 'deselect',
|
3461
3533
|
targetEl: dragEl$1,
|
3462
|
-
|
3534
|
+
originalEvent: evt
|
3463
3535
|
});
|
3464
3536
|
}
|
3465
3537
|
} // Multi-drag drop
|
3466
3538
|
|
3467
3539
|
|
3468
3540
|
if (dragStarted && this.isMultiDrag) {
|
3469
|
-
// Do not "unfold" after around dragEl if reverted
|
3541
|
+
folding = false; // Do not "unfold" after around dragEl if reverted
|
3542
|
+
|
3470
3543
|
if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {
|
3471
3544
|
var dragRect = getRect(dragEl$1),
|
3472
3545
|
multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');
|
@@ -3569,7 +3642,7 @@ function MultiDragPlugin() {
|
|
3569
3642
|
rootEl: this.sortable.el,
|
3570
3643
|
name: 'deselect',
|
3571
3644
|
targetEl: el,
|
3572
|
-
|
3645
|
+
originalEvent: evt
|
3573
3646
|
});
|
3574
3647
|
}
|
3575
3648
|
},
|