@progress/kendo-react-sortable 6.1.1 → 7.0.0-develop.2

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.
Files changed (73) hide show
  1. package/LICENSE.md +1 -1
  2. package/{dist/npm/Sortable.d.ts → Sortable.d.ts} +8 -4
  3. package/dist/cdn/js/kendo-react-sortable.js +5 -1
  4. package/events/BaseEvent.d.ts +13 -0
  5. package/{dist/es/events → events}/PreventableEvent.d.ts +4 -0
  6. package/{dist/npm/events → events}/SortableOnDragEndEvent.d.ts +4 -0
  7. package/{dist/npm/events → events}/SortableOnDragOverEvent.d.ts +4 -0
  8. package/{dist/npm/events → events}/SortableOnDragStartEvent.d.ts +4 -0
  9. package/{dist/es/events → events}/SortableOnNavigateEvent.d.ts +4 -0
  10. package/index.d.ts +13 -0
  11. package/index.js +5 -0
  12. package/index.mjs +485 -0
  13. package/{dist/es/interfaces → interfaces}/SortableDefaultProps.d.ts +4 -1
  14. package/interfaces/SortableEmptyItemUIProps.d.ts +13 -0
  15. package/{dist/npm/interfaces → interfaces}/SortableItemUIProps.d.ts +4 -1
  16. package/{dist/es/interfaces → interfaces}/SortableProps.d.ts +4 -1
  17. package/messages/index.d.ts +14 -0
  18. package/package-metadata.d.ts +9 -0
  19. package/package.json +27 -37
  20. package/{dist/npm/utils → utils}/utils.d.ts +4 -0
  21. package/about.md +0 -3
  22. package/dist/es/Sortable.d.ts +0 -206
  23. package/dist/es/Sortable.js +0 -691
  24. package/dist/es/events/BaseEvent.d.ts +0 -10
  25. package/dist/es/events/BaseEvent.js +0 -1
  26. package/dist/es/events/PreventableEvent.js +0 -28
  27. package/dist/es/events/SortableOnDragEndEvent.d.ts +0 -27
  28. package/dist/es/events/SortableOnDragEndEvent.js +0 -16
  29. package/dist/es/events/SortableOnDragOverEvent.d.ts +0 -27
  30. package/dist/es/events/SortableOnDragOverEvent.js +0 -16
  31. package/dist/es/events/SortableOnDragStartEvent.d.ts +0 -24
  32. package/dist/es/events/SortableOnDragStartEvent.js +0 -34
  33. package/dist/es/events/SortableOnNavigateEvent.js +0 -16
  34. package/dist/es/interfaces/SortableDefaultProps.js +0 -1
  35. package/dist/es/interfaces/SortableEmptyItemUIProps.d.ts +0 -9
  36. package/dist/es/interfaces/SortableEmptyItemUIProps.js +0 -1
  37. package/dist/es/interfaces/SortableItemUIProps.d.ts +0 -38
  38. package/dist/es/interfaces/SortableItemUIProps.js +0 -1
  39. package/dist/es/interfaces/SortableProps.js +0 -1
  40. package/dist/es/main.d.ts +0 -9
  41. package/dist/es/main.js +0 -6
  42. package/dist/es/messages/index.d.ts +0 -10
  43. package/dist/es/messages/index.js +0 -11
  44. package/dist/es/package-metadata.d.ts +0 -5
  45. package/dist/es/package-metadata.js +0 -11
  46. package/dist/es/utils/utils.d.ts +0 -29
  47. package/dist/es/utils/utils.js +0 -84
  48. package/dist/npm/Sortable.js +0 -694
  49. package/dist/npm/events/BaseEvent.d.ts +0 -10
  50. package/dist/npm/events/BaseEvent.js +0 -2
  51. package/dist/npm/events/PreventableEvent.d.ts +0 -18
  52. package/dist/npm/events/PreventableEvent.js +0 -31
  53. package/dist/npm/events/SortableOnDragEndEvent.js +0 -19
  54. package/dist/npm/events/SortableOnDragOverEvent.js +0 -19
  55. package/dist/npm/events/SortableOnDragStartEvent.js +0 -37
  56. package/dist/npm/events/SortableOnNavigateEvent.d.ts +0 -27
  57. package/dist/npm/events/SortableOnNavigateEvent.js +0 -19
  58. package/dist/npm/interfaces/SortableDefaultProps.d.ts +0 -25
  59. package/dist/npm/interfaces/SortableDefaultProps.js +0 -2
  60. package/dist/npm/interfaces/SortableEmptyItemUIProps.d.ts +0 -9
  61. package/dist/npm/interfaces/SortableEmptyItemUIProps.js +0 -2
  62. package/dist/npm/interfaces/SortableItemUIProps.js +0 -2
  63. package/dist/npm/interfaces/SortableProps.d.ts +0 -60
  64. package/dist/npm/interfaces/SortableProps.js +0 -2
  65. package/dist/npm/main.d.ts +0 -9
  66. package/dist/npm/main.js +0 -13
  67. package/dist/npm/messages/index.d.ts +0 -10
  68. package/dist/npm/messages/index.js +0 -14
  69. package/dist/npm/package-metadata.d.ts +0 -5
  70. package/dist/npm/package-metadata.js +0 -14
  71. package/dist/npm/utils/utils.js +0 -93
  72. package/dist/systemjs/kendo-react-sortable.js +0 -1
  73. package/e2e-next/basic.tests.ts +0 -23
@@ -1,694 +0,0 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __assign = (this && this.__assign) || function () {
18
- __assign = Object.assign || function(t) {
19
- for (var s, i = 1, n = arguments.length; i < n; i++) {
20
- s = arguments[i];
21
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
- t[p] = s[p];
23
- }
24
- return t;
25
- };
26
- return __assign.apply(this, arguments);
27
- };
28
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
29
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
30
- if (ar || !(i in from)) {
31
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
32
- ar[i] = from[i];
33
- }
34
- }
35
- return to.concat(ar || Array.prototype.slice.call(from));
36
- };
37
- var _a;
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.Sortable = void 0;
40
- var React = require("react");
41
- var ReactDOM = require("react-dom");
42
- var PropTypes = require("prop-types");
43
- var kendo_react_common_1 = require("@progress/kendo-react-common");
44
- var SortableOnDragStartEvent_1 = require("./events/SortableOnDragStartEvent");
45
- var SortableOnDragOverEvent_1 = require("./events/SortableOnDragOverEvent");
46
- var SortableOnDragEndEvent_1 = require("./events/SortableOnDragEndEvent");
47
- var SortableOnNavigateEvent_1 = require("./events/SortableOnNavigateEvent");
48
- var kendo_react_intl_1 = require("@progress/kendo-react-intl");
49
- var messages_1 = require("./messages");
50
- var utils_1 = require("./utils/utils");
51
- var kendo_react_common_2 = require("@progress/kendo-react-common");
52
- var package_metadata_1 = require("./package-metadata");
53
- var kendo_react_common_3 = require("@progress/kendo-react-common");
54
- /**
55
- * @hidden
56
- */
57
- var ANIMATION_DURATION = 200;
58
- /**
59
- * @hidden
60
- */
61
- var SORTABLE_ITEM_ATTRIBUTE = 'data-sortable-id';
62
- /**
63
- * @hidden
64
- */
65
- var SORTABLE_COMPONENT_ATTRIBUTE = 'data-sortable-component';
66
- /**
67
- * @hidden
68
- */
69
- var SORTABLE_ATTRIBUTE_PROP = (_a = {}, _a[SORTABLE_COMPONENT_ATTRIBUTE] = true, _a);
70
- var Sortable = /** @class */ (function (_super) {
71
- __extends(Sortable, _super);
72
- function Sortable(props) {
73
- var _this = _super.call(this, props) || this;
74
- /**
75
- * @hidden
76
- */
77
- _this.state = {
78
- clientX: 0,
79
- clientY: 0,
80
- isDragging: false,
81
- activeId: '',
82
- dragCueWidth: 0,
83
- dragCueHeight: 0
84
- };
85
- _this.isRtl = false;
86
- _this.itemRefsMap = {};
87
- _this.oldSizesMap = {};
88
- _this.animatingItemMap = {};
89
- _this.draggableRef = null;
90
- _this.isUnmounted = false;
91
- _this.focusActiveId = false;
92
- _this.isKeyboardNavigated = false;
93
- _this.isDragPrevented = false;
94
- /**
95
- * @hidden
96
- */
97
- _this.swapItems = function (newState, source, destination) {
98
- var b = newState[source];
99
- newState[source] = newState[destination];
100
- newState[destination] = b;
101
- source = destination;
102
- return source;
103
- };
104
- /**
105
- * @hidden
106
- */
107
- _this.generateNewState = function (prevIndex, nextIndex) {
108
- var data = _this.props.data;
109
- var newState = __spreadArray([], data, true);
110
- var isReversed = prevIndex > nextIndex;
111
- if (isReversed) {
112
- for (var i = prevIndex - 1; i >= nextIndex; i--) {
113
- var nextItem = data[i];
114
- if (!_this.isItemDisabled(nextItem)) {
115
- prevIndex = _this.swapItems(newState, prevIndex, i);
116
- }
117
- }
118
- }
119
- else {
120
- for (var i = prevIndex + 1; i <= nextIndex; i++) {
121
- var nextItem = data[i];
122
- if (!_this.isItemDisabled(nextItem)) {
123
- prevIndex = _this.swapItems(newState, prevIndex, i);
124
- }
125
- }
126
- }
127
- return newState;
128
- };
129
- /**
130
- * @hidden
131
- */
132
- _this.closestSortableItem = function (target) {
133
- var currentTarget = target;
134
- while (currentTarget) {
135
- var id = currentTarget.getAttribute(SORTABLE_ITEM_ATTRIBUTE);
136
- if (id && _this.itemRefsMap[id] === currentTarget) {
137
- return {
138
- id: id,
139
- element: currentTarget
140
- };
141
- }
142
- currentTarget = currentTarget.parentElement;
143
- }
144
- return {
145
- id: '',
146
- element: null
147
- };
148
- };
149
- /**
150
- * @hidden
151
- */
152
- _this.isSortable = function (target) {
153
- return Boolean(target.hasAttribute(SORTABLE_COMPONENT_ATTRIBUTE));
154
- };
155
- /**
156
- * @hidden
157
- */
158
- _this.closestSortable = function (target) {
159
- var currentTarget = target;
160
- while (currentTarget) {
161
- if (_this.isSortable(currentTarget)) {
162
- return currentTarget;
163
- }
164
- currentTarget = currentTarget.parentElement;
165
- }
166
- return null;
167
- };
168
- /**
169
- * @hidden
170
- */
171
- _this.isSameSortable = function (element) {
172
- var closestSortable = _this.closestSortable(element);
173
- return closestSortable === _this.container;
174
- };
175
- /**
176
- * @hidden
177
- */
178
- _this.idComparer = function (id1, id2) {
179
- return id1 + '' === id2 + '';
180
- };
181
- /**
182
- * @hidden
183
- */
184
- _this.findItem = function (id) {
185
- var _a = _this.props, data = _a.data, idField = _a.idField;
186
- if (!(id + '')) {
187
- return;
188
- }
189
- var idGetter = (0, kendo_react_common_3.getter)(idField);
190
- return (0, utils_1.find)(data, function (item) { return _this.idComparer(idGetter(item), id); });
191
- };
192
- /**
193
- * @hidden
194
- */
195
- _this.findIndex = function (id) {
196
- var _a = _this.props, data = _a.data, idField = _a.idField;
197
- if (!(id + '')) {
198
- return -1;
199
- }
200
- return (0, utils_1.findIndex)(data, function (item) { return _this.idComparer(item[idField], id); });
201
- };
202
- /**
203
- * @hidden
204
- */
205
- _this.isItemDisabled = function (item) {
206
- return item && item[_this.props.disabledField || ''] === true;
207
- };
208
- /**
209
- * @hidden
210
- */
211
- _this.shouldResetActive = function () {
212
- var activeElement = (0, kendo_react_common_1.getActiveElement)(document);
213
- if (activeElement instanceof HTMLElement) {
214
- var closestItemElement = _this.closestSortableItem(activeElement).element;
215
- return !Boolean(closestItemElement);
216
- }
217
- return false;
218
- };
219
- /**
220
- * @hidden
221
- */
222
- _this.widgetTarget = function (target) {
223
- var element = (0, utils_1.closest)(target, function (node) { return (0, utils_1.hasClasses)(node, 'k-widget') || _this.isSortable(node); });
224
- return element && !_this.isSortable(element);
225
- };
226
- /**
227
- * @hidden
228
- */
229
- _this.allowDrag = function (target) {
230
- return target.hasAttribute(SORTABLE_ITEM_ATTRIBUTE) || !((0, utils_1.isFocusable)(target) || _this.widgetTarget(target));
231
- };
232
- /**
233
- * @hidden
234
- */
235
- _this.onDragStart = function (eventData) {
236
- var event = eventData.event;
237
- var onDragStart = _this.props.onDragStart;
238
- var targetElement = document.elementFromPoint(event.clientX, event.clientY);
239
- var _a = _this.closestSortableItem(targetElement), activeId = _a.id, activeElement = _a.element;
240
- var activeItem = _this.findItem(activeId);
241
- if (!activeId ||
242
- (activeItem && _this.isItemDisabled(activeItem)) ||
243
- !_this.allowDrag(targetElement) ||
244
- !_this.isSameSortable(targetElement)) {
245
- _this.isDragPrevented = true;
246
- return;
247
- }
248
- if (event.isTouch) {
249
- event.originalEvent.preventDefault();
250
- }
251
- var dragStartEvent = new SortableOnDragStartEvent_1.SortableOnDragStartEvent(_this, _this.findIndex(activeId), targetElement);
252
- if (onDragStart) {
253
- onDragStart.call(undefined, dragStartEvent);
254
- }
255
- _this.isDragPrevented = dragStartEvent.isDefaultPrevented();
256
- if (_this.isDragPrevented) {
257
- event.originalEvent.preventDefault();
258
- }
259
- else {
260
- _this.offsetParent = (0, utils_1.relativeContextElement)(_this.container);
261
- _this.setState({
262
- activeId: activeId,
263
- dragCueWidth: (activeElement && activeElement.clientWidth) || 0,
264
- dragCueHeight: (activeElement && activeElement.clientHeight) || 0
265
- });
266
- }
267
- };
268
- /**
269
- * @hidden
270
- */
271
- _this.onDragOver = function (eventData) {
272
- var event = eventData.event;
273
- var _a = _this.props, onDragOver = _a.onDragOver, data = _a.data;
274
- if (_this.isDragPrevented) {
275
- return;
276
- }
277
- event.originalEvent.preventDefault();
278
- var prevIndex = _this.findIndex(_this.state.activeId);
279
- if (prevIndex === -1) {
280
- _this.resetState();
281
- return;
282
- }
283
- var targetElement = document.elementFromPoint(event.clientX, event.clientY);
284
- var closestSortable = _this.closestSortableItem(targetElement);
285
- var nextIndex = _this.findIndex(closestSortable.id);
286
- var nextItem = data[nextIndex];
287
- if (onDragOver &&
288
- nextIndex > -1 &&
289
- prevIndex !== nextIndex &&
290
- !_this.isItemDisabled(nextItem) &&
291
- !_this.animatingItemMap[closestSortable.id] &&
292
- _this.shouldReorder(closestSortable.element, event.clientX, event.clientY)) {
293
- var dragOverEvent = new SortableOnDragOverEvent_1.SortableOnDragOverEvent(_this, prevIndex, nextIndex, _this.generateNewState(prevIndex, nextIndex));
294
- onDragOver.call(undefined, dragOverEvent);
295
- }
296
- var offset = _this.parentOffset();
297
- _this.setState({
298
- clientX: event.clientX - offset.left,
299
- clientY: event.clientY - offset.top,
300
- isDragging: true
301
- });
302
- };
303
- /**
304
- * @hidden
305
- */
306
- _this.onDragEnd = function (eventData) {
307
- var event = eventData.event;
308
- var resetActive = _this.shouldResetActive();
309
- if (_this.isDragPrevented) {
310
- return;
311
- }
312
- var _a = _this.props, onDragEnd = _a.onDragEnd, data = _a.data;
313
- var targetElement = document.elementFromPoint(event.clientX, event.clientY);
314
- var closestSortableItem = _this.closestSortableItem(targetElement);
315
- var nextIndex = _this.findIndex(closestSortableItem.id);
316
- var prevIndex = _this.findIndex(_this.state.activeId);
317
- var isNextDisabled = _this.isItemDisabled(data[nextIndex]);
318
- if (nextIndex === -1 || isNextDisabled) {
319
- nextIndex = prevIndex;
320
- }
321
- if (onDragEnd) {
322
- var nextState = _this.generateNewState(prevIndex, nextIndex);
323
- if (!isNextDisabled) {
324
- var rect = _this.thresholdRect(closestSortableItem.element);
325
- if (rect && (event.clientX < rect.left || event.clientX > rect.right || event.clientY < rect.top || event.clientY > rect.bottom)) {
326
- var prev = prevIndex;
327
- prevIndex = nextIndex;
328
- nextIndex = prev;
329
- nextState = _this.props.data.slice();
330
- }
331
- }
332
- var dragEndEvent = new SortableOnDragEndEvent_1.SortableOnDragEndEvent(_this, prevIndex, nextIndex, nextState);
333
- onDragEnd.call(undefined, dragEndEvent);
334
- }
335
- _this.resetState(resetActive);
336
- };
337
- /**
338
- * @hidden
339
- */
340
- _this.shouldReorder = function (draggerOverElement, clientX, clientY) {
341
- var rect = _this.thresholdRect(draggerOverElement);
342
- return rect && clientX > rect.left && clientX < rect.right && clientY > rect.top && clientY < rect.bottom;
343
- };
344
- /**
345
- * @hidden
346
- */
347
- _this.thresholdRect = function (draggerOverElement) {
348
- var activeId = _this.state.activeId;
349
- var root = _this.container;
350
- var elements = root ? Array.from(root.childNodes) : [];
351
- var activeElement = elements.find(function (e) { return e instanceof HTMLElement && e.getAttribute(SORTABLE_ITEM_ATTRIBUTE) === activeId; });
352
- if (!draggerOverElement || !activeElement) {
353
- return null;
354
- }
355
- var _a = activeElement.getBoundingClientRect(), width = _a.width, height = _a.height;
356
- var rect = draggerOverElement.getBoundingClientRect();
357
- var top = rect.top + (rect.height / 2) - (height / 2);
358
- var left = rect.left + (rect.width / 2) - (width / 2);
359
- var bottom = top + height;
360
- var right = left + width;
361
- return { top: top, left: left, bottom: bottom, right: right };
362
- };
363
- /**
364
- * @hidden
365
- */
366
- _this.onItemBlur = function () {
367
- // As IE have no support for relatedTarget
368
- window.setTimeout(function () {
369
- if (_this.isUnmounted) {
370
- return;
371
- }
372
- if (_this.shouldResetActive() && !_this.state.isDragging) {
373
- _this.setState({
374
- activeId: '' // what happends on destroyed component
375
- });
376
- }
377
- });
378
- };
379
- /**
380
- * @hidden
381
- */
382
- _this.onItemFocus = function (event) {
383
- var _a = _this.closestSortableItem(event.currentTarget), activeId = _a.id, element = _a.element;
384
- if (!_this.idComparer(activeId, _this.state.activeId) &&
385
- _this.isSameSortable(event.target) &&
386
- element === event.target) {
387
- _this.setState({
388
- activeId: activeId
389
- });
390
- }
391
- };
392
- /**
393
- * @hidden
394
- */
395
- _this.onKeyDown = function (event) {
396
- var _a = _this.props, data = _a.data, idField = _a.idField, onNavigate = _a.onNavigate, navigation = _a.navigation;
397
- var activeId = _this.state.activeId;
398
- if (!navigation || !activeId || !_this.isSameSortable(event.target)) {
399
- return;
400
- }
401
- var isRtl = _this.isRtl;
402
- var enabledItems = data.filter(function (item) { return !_this.isItemDisabled(item); });
403
- var prevIndex = (0, utils_1.findIndex)(enabledItems, function (item) { return _this.idComparer(item[idField], activeId); });
404
- var maxNavIndex = enabledItems.length - 1;
405
- var nextIndex = prevIndex;
406
- if (event.keyCode === kendo_react_common_1.Keys.left) {
407
- if (isRtl) {
408
- event.keyCode = kendo_react_common_1.Keys.down;
409
- }
410
- else {
411
- event.keyCode = kendo_react_common_1.Keys.up;
412
- }
413
- }
414
- if (event.keyCode === kendo_react_common_1.Keys.right) {
415
- if (isRtl) {
416
- event.keyCode = kendo_react_common_1.Keys.up;
417
- }
418
- else {
419
- event.keyCode = kendo_react_common_1.Keys.down;
420
- }
421
- }
422
- switch (event.keyCode) {
423
- case kendo_react_common_1.Keys.up:
424
- if (prevIndex > 0) {
425
- nextIndex = prevIndex - 1;
426
- }
427
- break;
428
- case kendo_react_common_1.Keys.down:
429
- if (prevIndex < maxNavIndex) {
430
- nextIndex = prevIndex + 1;
431
- }
432
- break;
433
- default:
434
- }
435
- if (nextIndex === prevIndex) {
436
- return;
437
- }
438
- event.stopPropagation();
439
- event.preventDefault();
440
- var nextItem = enabledItems[nextIndex];
441
- var nextItemId = nextItem ? nextItem[idField] : '';
442
- var prevItem = enabledItems[prevIndex];
443
- var prevItemId = prevItem ? prevItem[idField] : '';
444
- if (event.ctrlKey) {
445
- if (onNavigate) {
446
- var actualPrevIndex = _this.findIndex(prevItemId);
447
- var actualNextIndex = _this.findIndex(nextItemId);
448
- var navigateEvent = new SortableOnNavigateEvent_1.SortableOnNavigateEvent(_this, actualPrevIndex, actualNextIndex, _this.generateNewState(actualPrevIndex, actualNextIndex));
449
- _this.isKeyboardNavigated = true;
450
- onNavigate.call(undefined, navigateEvent);
451
- }
452
- }
453
- else {
454
- _this.focusActiveId = true;
455
- _this.setState({
456
- activeId: nextItemId + ''
457
- });
458
- }
459
- };
460
- /**
461
- * @hidden
462
- */
463
- _this.resetState = function (resetActive) {
464
- _this.isDragPrevented = false;
465
- _this.setState({
466
- clientX: 0,
467
- clientY: 0,
468
- isDragging: false,
469
- dragCueWidth: 0,
470
- dragCueHeight: 0,
471
- activeId: resetActive ? '' : _this.state.activeId
472
- });
473
- };
474
- /**
475
- * @hidden
476
- */
477
- _this.renderData = function () {
478
- var _a = _this.props, data = _a.data, UIComponent = _a.itemUI, idField = _a.idField, tabIndex = _a.tabIndex;
479
- return data.map(function (item) {
480
- var _a;
481
- var idGetter = (0, kendo_react_common_3.getter)(idField);
482
- var id = idGetter(item);
483
- var isDisabled = _this.isItemDisabled(item);
484
- var isActive = _this.idComparer(_this.state.activeId, id);
485
- return (React.createElement(UIComponent, { key: id, forwardRef: function (ele) { return _this.refAssign(ele, id); }, dataItem: item, isDisabled: isDisabled, isActive: isActive, isDragged: isActive && _this.state.isDragging, isDragCue: false, attributes: (_a = {},
486
- _a[SORTABLE_ITEM_ATTRIBUTE] = id,
487
- _a['aria-disabled'] = isDisabled,
488
- _a['aria-grabbed'] = isActive && _this.state.isDragging && !_this.isDragPrevented,
489
- _a['aria-dropeffect'] = isDisabled ? 'none' : 'move',
490
- _a.tabIndex = (0, kendo_react_common_1.getTabIndex)(tabIndex, isDisabled),
491
- _a.onFocus = _this.onItemFocus,
492
- _a.onBlur = _this.onItemBlur,
493
- _a), style: {
494
- cursor: !isDisabled ? 'move' : 'auto',
495
- MozUserSelect: 'none',
496
- msUserSelect: 'none',
497
- WebkitUserSelect: 'none',
498
- userSelect: 'none'
499
- } }));
500
- });
501
- };
502
- /**
503
- * @hidden
504
- */
505
- _this.renderNoData = function () {
506
- var UIComponent = _this.props.emptyItemUI;
507
- var localizationService = (0, kendo_react_intl_1.provideLocalizationService)(_this);
508
- var noDataMessage = localizationService
509
- .toLanguageString(messages_1.noData, messages_1.messages[messages_1.noData]);
510
- if (UIComponent) {
511
- return React.createElement(UIComponent, { message: noDataMessage });
512
- }
513
- };
514
- /**
515
- * @hidden
516
- */
517
- _this.renderDragCue = function () {
518
- var UIComponent = _this.props.itemUI;
519
- var _a = _this.state, isDragging = _a.isDragging, activeId = _a.activeId, clientX = _a.clientX, clientY = _a.clientY;
520
- var dataItem = _this.findItem(activeId);
521
- if (!isDragging || !dataItem) {
522
- return;
523
- }
524
- return (React.createElement(UIComponent, { dataItem: dataItem, isDisabled: false, isActive: true, isDragged: true, isDragCue: true, style: {
525
- position: 'fixed',
526
- top: clientY + 10,
527
- left: clientX + 10,
528
- width: _this.state.dragCueWidth,
529
- height: _this.state.dragCueHeight
530
- }, attributes: {} }));
531
- };
532
- /**
533
- * @hidden
534
- */
535
- _this.refAssign = function (element, id) {
536
- if (!element) {
537
- delete _this.itemRefsMap[id];
538
- }
539
- else {
540
- _this.itemRefsMap[id] = element;
541
- }
542
- };
543
- /**
544
- * @hidden
545
- */
546
- _this.draggableRefAssign = function (ref) {
547
- _this.draggableRef = ref;
548
- };
549
- (0, kendo_react_common_2.validatePackage)(package_metadata_1.packageMetadata);
550
- return _this;
551
- }
552
- Object.defineProperty(Sortable.prototype, "container", {
553
- get: function () {
554
- return this.draggableRef && this.draggableRef.element;
555
- },
556
- enumerable: false,
557
- configurable: true
558
- });
559
- /**
560
- * @hidden
561
- */
562
- Sortable.prototype.getSnapshotBeforeUpdate = function () {
563
- var _this = this;
564
- var _a = this.props, idField = _a.idField, animation = _a.animation;
565
- this.oldSizesMap = {};
566
- if (!animation) {
567
- return null;
568
- }
569
- this.props.data.forEach(function (item) {
570
- var id = item[idField];
571
- var ref = _this.itemRefsMap[id];
572
- var domNode = ReactDOM.findDOMNode(ref);
573
- if (domNode) {
574
- _this.oldSizesMap[id] = domNode.getBoundingClientRect();
575
- }
576
- });
577
- return null;
578
- };
579
- /**
580
- * @hidden
581
- */
582
- Sortable.prototype.componentDidUpdate = function (previousProps) {
583
- var _this = this;
584
- var _a = this.props, idField = _a.idField, animation = _a.animation;
585
- if (this.focusActiveId) {
586
- this.focusActiveId = false;
587
- this.itemRefsMap[this.state.activeId].focus();
588
- }
589
- if (!animation || (!this.state.isDragging && !this.isKeyboardNavigated)) {
590
- return;
591
- }
592
- this.isKeyboardNavigated = false;
593
- previousProps.data.forEach(function (item) {
594
- var id = item[idField];
595
- var domNode = _this.itemRefsMap[id];
596
- if (!domNode) {
597
- return;
598
- }
599
- var newBox = domNode.getBoundingClientRect();
600
- var oldBox = _this.oldSizesMap[id];
601
- var deltaX = oldBox.left - newBox.left;
602
- var deltaY = oldBox.top - newBox.top;
603
- if (deltaX === 0 && deltaY === 0) {
604
- return;
605
- }
606
- requestAnimationFrame(function () {
607
- _this.animatingItemMap[id] = true;
608
- // Before the DOM paints, Invert it to its old position
609
- // TODO: optimize - animate all items in one animation frame, not each in different
610
- // TODO: optimize - when already animated element is going to change calculate correct delta first.
611
- domNode.style.transform = "translate(".concat(deltaX, "px, ").concat(deltaY, "px)");
612
- domNode.style.transition = 'transform 0s';
613
- requestAnimationFrame(function () {
614
- // Then, remove the transform reverting it to its natural
615
- // state and apply a transition so the process goes smoothly.
616
- domNode.style.transform = '';
617
- domNode.style.transition = "transform ".concat(ANIMATION_DURATION, "ms cubic-bezier(0.2, 0, 0, 1) 0s");
618
- window.setTimeout(function () { return _this.animatingItemMap[id] = false; }, ANIMATION_DURATION);
619
- });
620
- });
621
- });
622
- };
623
- /**
624
- * @hidden
625
- */
626
- Sortable.prototype.componentDidMount = function () {
627
- this.isRtl = this.container && (getComputedStyle(this.container).direction === 'rtl') || false;
628
- };
629
- /**
630
- * @hidden
631
- */
632
- Sortable.prototype.componentWillUnmount = function () {
633
- this.isUnmounted = true;
634
- };
635
- /**
636
- * @hidden
637
- */
638
- Sortable.prototype.parentOffset = function () {
639
- var offsetParent = this.offsetParent;
640
- if (offsetParent && offsetParent.ownerDocument) {
641
- if (offsetParent !== offsetParent.ownerDocument.body) {
642
- var rect = offsetParent.getBoundingClientRect();
643
- return {
644
- left: rect.left - offsetParent.scrollLeft,
645
- top: rect.top - offsetParent.scrollTop
646
- };
647
- }
648
- }
649
- return { left: 0, top: 0 };
650
- };
651
- /**
652
- * @hidden
653
- */
654
- Sortable.prototype.render = function () {
655
- var _a = this.props, data = _a.data, style = _a.style, className = _a.className, itemsWrapUI = _a.itemsWrapUI;
656
- var Wrapper = itemsWrapUI || 'div';
657
- return (React.createElement(kendo_react_common_1.Draggable, { onDragStart: this.onDragStart, onDrag: this.onDragOver, onDragEnd: this.onDragEnd, ref: this.draggableRefAssign },
658
- React.createElement(Wrapper, __assign({}, SORTABLE_ATTRIBUTE_PROP, { className: className, style: __assign({ touchAction: 'none' }, style), onKeyDown: this.onKeyDown }),
659
- data && data.length ?
660
- this.renderData() : this.renderNoData(),
661
- this.renderDragCue())));
662
- };
663
- /**
664
- * @hidden
665
- */
666
- Sortable.defaultProps = {
667
- navigation: true,
668
- animation: true,
669
- emptyItemUI: function (props) { return React.createElement("div", null, props.message); }
670
- };
671
- /**
672
- * @hidden
673
- */
674
- Sortable.propTypes = {
675
- idField: PropTypes.string.isRequired,
676
- disabledField: PropTypes.string,
677
- data: PropTypes.array.isRequired,
678
- tabIndex: PropTypes.number,
679
- navigation: PropTypes.bool,
680
- animation: PropTypes.bool,
681
- itemsWrapUI: PropTypes.any,
682
- itemUI: PropTypes.func.isRequired,
683
- emptyItemUI: PropTypes.func,
684
- style: PropTypes.object,
685
- className: PropTypes.string,
686
- onDragStart: PropTypes.func,
687
- onDragOver: PropTypes.func,
688
- onDragEnd: PropTypes.func,
689
- onNavigate: PropTypes.func
690
- };
691
- return Sortable;
692
- }(React.Component));
693
- exports.Sortable = Sortable;
694
- (0, kendo_react_intl_1.registerForLocalization)(Sortable);
@@ -1,10 +0,0 @@
1
- /// <reference types="react" />
2
- /**
3
- * @hidden
4
- */
5
- export interface BaseEvent<T extends React.Component> {
6
- /**
7
- * An event target.
8
- */
9
- target: T;
10
- }