govuk_publishing_components 30.2.0 → 30.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/govuk_publishing_components/analytics/page-content.js +8 -0
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-event-tracker.js +6 -6
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-link-tracker.js +23 -5
- data/app/assets/javascripts/govuk_publishing_components/components/checkboxes.js +0 -22
- 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/app/views/govuk_publishing_components/components/_checkboxes.html.erb +2 -3
- data/app/views/govuk_publishing_components/components/docs/textarea.yml +7 -0
- data/config/locales/en.yml +4 -0
- data/lib/govuk_publishing_components/presenters/checkboxes_helper.rb +2 -4
- 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 +17 -3
@@ -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
|
},
|