@progress/kendo-react-sortable 7.2.4-develop.3 → 7.2.4-develop.4
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.
- package/Sortable.js +8 -0
- package/Sortable.mjs +396 -0
- package/dist/cdn/js/kendo-react-sortable.js +8 -5
- package/events/PreventableEvent.js +8 -0
- package/events/PreventableEvent.mjs +33 -0
- package/events/SortableOnDragEndEvent.js +8 -0
- package/events/SortableOnDragEndEvent.mjs +19 -0
- package/events/SortableOnDragOverEvent.js +8 -0
- package/events/SortableOnDragOverEvent.mjs +19 -0
- package/events/SortableOnDragStartEvent.js +8 -0
- package/events/SortableOnDragStartEvent.mjs +20 -0
- package/events/SortableOnNavigateEvent.js +8 -0
- package/events/SortableOnNavigateEvent.mjs +19 -0
- package/index.d.mts +472 -5
- package/index.d.ts +472 -13
- package/index.js +8 -5
- package/index.mjs +17 -483
- package/messages/index.js +8 -0
- package/messages/index.mjs +15 -0
- package/package-metadata.js +8 -0
- package/package-metadata.mjs +19 -0
- package/package.json +3 -3
- package/utils/utils.js +8 -0
- package/utils/utils.mjs +51 -0
- package/Sortable.d.ts +0 -210
- package/events/BaseEvent.d.ts +0 -13
- package/events/PreventableEvent.d.ts +0 -22
- package/events/SortableOnDragEndEvent.d.ts +0 -31
- package/events/SortableOnDragOverEvent.d.ts +0 -31
- package/events/SortableOnDragStartEvent.d.ts +0 -28
- package/events/SortableOnNavigateEvent.d.ts +0 -31
- package/interfaces/SortableDefaultProps.d.ts +0 -28
- package/interfaces/SortableEmptyItemUIProps.d.ts +0 -13
- package/interfaces/SortableItemUIProps.d.ts +0 -41
- package/interfaces/SortableProps.d.ts +0 -63
- package/messages/index.d.ts +0 -14
- package/package-metadata.d.ts +0 -9
- package/utils/utils.d.ts +0 -33
package/index.d.ts
CHANGED
|
@@ -1,13 +1,472 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import
|
|
13
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*-------------------------------------------------------------------------------------------
|
|
4
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
5
|
+
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
|
+
*-------------------------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
import { DraggableDragEvent } from '@progress/kendo-react-common';
|
|
9
|
+
import { DraggableDragStartEvent } from '@progress/kendo-react-common';
|
|
10
|
+
import { DraggableReleaseEvent } from '@progress/kendo-react-common';
|
|
11
|
+
import { JSX as JSX_2 } from 'react/jsx-runtime';
|
|
12
|
+
import PropTypes from 'prop-types';
|
|
13
|
+
import * as React_2 from 'react';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @hidden
|
|
17
|
+
*/
|
|
18
|
+
declare interface BaseEvent<T extends React.Component> {
|
|
19
|
+
/**
|
|
20
|
+
* An event target.
|
|
21
|
+
*/
|
|
22
|
+
target: T;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @hidden
|
|
27
|
+
*/
|
|
28
|
+
declare abstract class PreventableEvent {
|
|
29
|
+
private prevented;
|
|
30
|
+
/**
|
|
31
|
+
* Prevents the default action for a specified event.
|
|
32
|
+
* In this way, the source component suppresses the built-in behavior that follows the event.
|
|
33
|
+
*/
|
|
34
|
+
preventDefault(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Returns `true` if the event was prevented by any of its subscribers.
|
|
37
|
+
*
|
|
38
|
+
* @returns - Returns `true` if the default action was prevented.
|
|
39
|
+
* Otherwise, returns `false`.
|
|
40
|
+
*/
|
|
41
|
+
isDefaultPrevented(): boolean;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export declare class Sortable extends React_2.Component<SortableProps, SortableState> {
|
|
45
|
+
/**
|
|
46
|
+
* @hidden
|
|
47
|
+
*/
|
|
48
|
+
static defaultProps: SortableDefaultProps;
|
|
49
|
+
/**
|
|
50
|
+
* @hidden
|
|
51
|
+
*/
|
|
52
|
+
static propTypes: {
|
|
53
|
+
idField: PropTypes.Validator<string>;
|
|
54
|
+
disabledField: PropTypes.Requireable<string>;
|
|
55
|
+
data: PropTypes.Validator<any[]>;
|
|
56
|
+
tabIndex: PropTypes.Requireable<number>;
|
|
57
|
+
navigation: PropTypes.Requireable<boolean>;
|
|
58
|
+
animation: PropTypes.Requireable<boolean>;
|
|
59
|
+
itemsWrapUI: PropTypes.Requireable<any>;
|
|
60
|
+
itemUI: PropTypes.Validator<(...args: any[]) => any>;
|
|
61
|
+
emptyItemUI: PropTypes.Requireable<(...args: any[]) => any>;
|
|
62
|
+
style: PropTypes.Requireable<object>;
|
|
63
|
+
className: PropTypes.Requireable<string>;
|
|
64
|
+
onDragStart: PropTypes.Requireable<(...args: any[]) => any>;
|
|
65
|
+
onDragOver: PropTypes.Requireable<(...args: any[]) => any>;
|
|
66
|
+
onDragEnd: PropTypes.Requireable<(...args: any[]) => any>;
|
|
67
|
+
onNavigate: PropTypes.Requireable<(...args: any[]) => any>;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* @hidden
|
|
71
|
+
*/
|
|
72
|
+
state: {
|
|
73
|
+
clientX: number;
|
|
74
|
+
clientY: number;
|
|
75
|
+
isDragging: boolean;
|
|
76
|
+
activeId: string;
|
|
77
|
+
dragCueWidth: number;
|
|
78
|
+
dragCueHeight: number;
|
|
79
|
+
};
|
|
80
|
+
private isRtl;
|
|
81
|
+
private get container();
|
|
82
|
+
private itemRefsMap;
|
|
83
|
+
private oldSizesMap;
|
|
84
|
+
private animatingItemMap;
|
|
85
|
+
private draggableRef;
|
|
86
|
+
private offsetParent;
|
|
87
|
+
private isUnmounted;
|
|
88
|
+
private focusActiveId;
|
|
89
|
+
private isKeyboardNavigated;
|
|
90
|
+
private isDragPrevented;
|
|
91
|
+
constructor(props: SortableProps);
|
|
92
|
+
/**
|
|
93
|
+
* @hidden
|
|
94
|
+
*/
|
|
95
|
+
getSnapshotBeforeUpdate(): null;
|
|
96
|
+
/**
|
|
97
|
+
* @hidden
|
|
98
|
+
*/
|
|
99
|
+
componentDidUpdate(previousProps: SortableProps): void;
|
|
100
|
+
/**
|
|
101
|
+
* @hidden
|
|
102
|
+
*/
|
|
103
|
+
componentDidMount(): void;
|
|
104
|
+
/**
|
|
105
|
+
* @hidden
|
|
106
|
+
*/
|
|
107
|
+
componentWillUnmount(): void;
|
|
108
|
+
/**
|
|
109
|
+
* @hidden
|
|
110
|
+
*/
|
|
111
|
+
swapItems: (newState: object[], source: number, destination: number) => number;
|
|
112
|
+
/**
|
|
113
|
+
* @hidden
|
|
114
|
+
*/
|
|
115
|
+
generateNewState: (prevIndex: number, nextIndex: number) => object[];
|
|
116
|
+
/**
|
|
117
|
+
* @hidden
|
|
118
|
+
*/
|
|
119
|
+
closestSortableItem: (target: HTMLElement | null) => {
|
|
120
|
+
element: HTMLElement | null;
|
|
121
|
+
id: string;
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* @hidden
|
|
125
|
+
*/
|
|
126
|
+
isSortable: (target: HTMLElement) => boolean;
|
|
127
|
+
/**
|
|
128
|
+
* @hidden
|
|
129
|
+
*/
|
|
130
|
+
closestSortable: (target: HTMLElement | null) => HTMLElement | null;
|
|
131
|
+
/**
|
|
132
|
+
* @hidden
|
|
133
|
+
*/
|
|
134
|
+
isSameSortable: (element: HTMLElement) => boolean;
|
|
135
|
+
/**
|
|
136
|
+
* @hidden
|
|
137
|
+
*/
|
|
138
|
+
idComparer: (id1: any, id2: any) => boolean;
|
|
139
|
+
/**
|
|
140
|
+
* @hidden
|
|
141
|
+
*/
|
|
142
|
+
findItem: (id: string) => object | undefined;
|
|
143
|
+
/**
|
|
144
|
+
* @hidden
|
|
145
|
+
*/
|
|
146
|
+
findIndex: (id: string) => number;
|
|
147
|
+
/**
|
|
148
|
+
* @hidden
|
|
149
|
+
*/
|
|
150
|
+
isItemDisabled: (item: any) => boolean;
|
|
151
|
+
/**
|
|
152
|
+
* @hidden
|
|
153
|
+
*/
|
|
154
|
+
shouldResetActive: () => boolean;
|
|
155
|
+
/**
|
|
156
|
+
* @hidden
|
|
157
|
+
*/
|
|
158
|
+
parentOffset(): any;
|
|
159
|
+
/**
|
|
160
|
+
* @hidden
|
|
161
|
+
*/
|
|
162
|
+
widgetTarget: (target: any) => boolean;
|
|
163
|
+
/**
|
|
164
|
+
* @hidden
|
|
165
|
+
*/
|
|
166
|
+
allowDrag: (target: HTMLElement) => boolean;
|
|
167
|
+
/**
|
|
168
|
+
* @hidden
|
|
169
|
+
*/
|
|
170
|
+
onDragStart: (eventData: DraggableDragStartEvent) => void;
|
|
171
|
+
/**
|
|
172
|
+
* @hidden
|
|
173
|
+
*/
|
|
174
|
+
onDragOver: (eventData: DraggableDragEvent) => void;
|
|
175
|
+
/**
|
|
176
|
+
* @hidden
|
|
177
|
+
*/
|
|
178
|
+
onDragEnd: (eventData: DraggableReleaseEvent) => void;
|
|
179
|
+
/**
|
|
180
|
+
* @hidden
|
|
181
|
+
*/
|
|
182
|
+
shouldReorder: (draggerOverElement: HTMLElement | null, clientX: number, clientY: number) => boolean | null;
|
|
183
|
+
/**
|
|
184
|
+
* @hidden
|
|
185
|
+
*/
|
|
186
|
+
thresholdRect: (draggerOverElement: HTMLElement | null) => {
|
|
187
|
+
top: number;
|
|
188
|
+
left: number;
|
|
189
|
+
bottom: number;
|
|
190
|
+
right: number;
|
|
191
|
+
} | null;
|
|
192
|
+
/**
|
|
193
|
+
* @hidden
|
|
194
|
+
*/
|
|
195
|
+
onItemBlur: () => void;
|
|
196
|
+
/**
|
|
197
|
+
* @hidden
|
|
198
|
+
*/
|
|
199
|
+
onItemFocus: (event: React_2.FocusEvent<HTMLDivElement>) => void;
|
|
200
|
+
/**
|
|
201
|
+
* @hidden
|
|
202
|
+
*/
|
|
203
|
+
onKeyDown: (event: React_2.KeyboardEvent<HTMLDivElement>) => void;
|
|
204
|
+
/**
|
|
205
|
+
* @hidden
|
|
206
|
+
*/
|
|
207
|
+
resetState: (resetActive?: boolean) => void;
|
|
208
|
+
/**
|
|
209
|
+
* @hidden
|
|
210
|
+
*/
|
|
211
|
+
renderData: () => JSX_2.Element[];
|
|
212
|
+
/**
|
|
213
|
+
* @hidden
|
|
214
|
+
*/
|
|
215
|
+
renderNoData: () => JSX_2.Element | undefined;
|
|
216
|
+
/**
|
|
217
|
+
* @hidden
|
|
218
|
+
*/
|
|
219
|
+
renderDragCue: () => JSX_2.Element | undefined;
|
|
220
|
+
/**
|
|
221
|
+
* @hidden
|
|
222
|
+
*/
|
|
223
|
+
refAssign: (element: any, id: any) => void;
|
|
224
|
+
/**
|
|
225
|
+
* @hidden
|
|
226
|
+
*/
|
|
227
|
+
draggableRefAssign: (ref: any) => void;
|
|
228
|
+
/**
|
|
229
|
+
* @hidden
|
|
230
|
+
*/
|
|
231
|
+
render(): JSX_2.Element;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* @hidden
|
|
236
|
+
*/
|
|
237
|
+
declare interface SortableDefaultProps {
|
|
238
|
+
/**
|
|
239
|
+
* Specifies the tab index of the Sortable items.
|
|
240
|
+
*/
|
|
241
|
+
tabIndex?: number;
|
|
242
|
+
/**
|
|
243
|
+
* Enables or disables the [keyboard navigation]({% slug keyboard_navigation_sortable %}).
|
|
244
|
+
* Defaults to `true`.
|
|
245
|
+
*/
|
|
246
|
+
navigation?: boolean;
|
|
247
|
+
/**
|
|
248
|
+
* Enables or disables the reorder animation of the Sortable items.
|
|
249
|
+
* defaults to `true`.
|
|
250
|
+
*/
|
|
251
|
+
animation?: boolean;
|
|
252
|
+
/**
|
|
253
|
+
* The component that is rendered when no data is available.
|
|
254
|
+
*/
|
|
255
|
+
emptyItemUI?: React.ComponentType<SortableEmptyItemUIProps>;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Represents the props of the UI component that is rendered when no data is available.
|
|
260
|
+
*/
|
|
261
|
+
export declare interface SortableEmptyItemUIProps {
|
|
262
|
+
/**
|
|
263
|
+
* The `noData` localization message.
|
|
264
|
+
*/
|
|
265
|
+
message: string;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Represents the props of the Sortable item UI component.
|
|
270
|
+
*/
|
|
271
|
+
export declare interface SortableItemUIProps {
|
|
272
|
+
/**
|
|
273
|
+
* The data object that represents the current Sortable item.
|
|
274
|
+
*/
|
|
275
|
+
dataItem: any;
|
|
276
|
+
/**
|
|
277
|
+
* The flag which describes that an item is disabled.
|
|
278
|
+
*/
|
|
279
|
+
isDisabled: boolean;
|
|
280
|
+
/**
|
|
281
|
+
* The flag which describes that an item is active.
|
|
282
|
+
*/
|
|
283
|
+
isActive: boolean;
|
|
284
|
+
/**
|
|
285
|
+
* The flag which describes that an item is dragged.
|
|
286
|
+
*/
|
|
287
|
+
isDragged: boolean;
|
|
288
|
+
/**
|
|
289
|
+
* The flag which describes that an item is rendered inside the drag cue.
|
|
290
|
+
*/
|
|
291
|
+
isDragCue: boolean;
|
|
292
|
+
/**
|
|
293
|
+
* The callback function that has to be passed to the `ref` property of the first child element.
|
|
294
|
+
*/
|
|
295
|
+
forwardRef?: (element: HTMLElement) => void;
|
|
296
|
+
/**
|
|
297
|
+
* The atributes that have to be passed to the first child element.
|
|
298
|
+
*/
|
|
299
|
+
attributes?: any;
|
|
300
|
+
/**
|
|
301
|
+
* The CSS styles that have to be passed to the first child element.
|
|
302
|
+
*/
|
|
303
|
+
style: React.CSSProperties;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* The `SortableOnDragEndEvent` event.
|
|
308
|
+
*/
|
|
309
|
+
export declare class SortableOnDragEndEvent implements BaseEvent<Sortable> {
|
|
310
|
+
/**
|
|
311
|
+
* The Sortable component.
|
|
312
|
+
*/
|
|
313
|
+
target: Sortable;
|
|
314
|
+
/**
|
|
315
|
+
* The previous index of the dragged item.
|
|
316
|
+
*/
|
|
317
|
+
prevIndex: number;
|
|
318
|
+
/**
|
|
319
|
+
* The new index of the dragged item.
|
|
320
|
+
*/
|
|
321
|
+
nextIndex: number;
|
|
322
|
+
/**
|
|
323
|
+
* The new state of the Sortable data.
|
|
324
|
+
*/
|
|
325
|
+
newState: Array<object>;
|
|
326
|
+
/**
|
|
327
|
+
* @hidden
|
|
328
|
+
*/
|
|
329
|
+
constructor(target: Sortable, prevIndex: number, nextIndex: number, newState: Array<object>);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* The `SortableOnDragOverEvent` event.
|
|
334
|
+
*/
|
|
335
|
+
export declare class SortableOnDragOverEvent implements BaseEvent<Sortable> {
|
|
336
|
+
/**
|
|
337
|
+
* The Sortable component.
|
|
338
|
+
*/
|
|
339
|
+
target: Sortable;
|
|
340
|
+
/**
|
|
341
|
+
* The previous index of the dragged item.
|
|
342
|
+
*/
|
|
343
|
+
prevIndex: number;
|
|
344
|
+
/**
|
|
345
|
+
* The new index of the dragged item.
|
|
346
|
+
*/
|
|
347
|
+
nextIndex: number;
|
|
348
|
+
/**
|
|
349
|
+
* The new state of the Sortable data.
|
|
350
|
+
*/
|
|
351
|
+
newState: Array<object>;
|
|
352
|
+
/**
|
|
353
|
+
* @hidden
|
|
354
|
+
*/
|
|
355
|
+
constructor(target: Sortable, prevIndex: number, nextIndex: number, newState: Array<object>);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* The `SortableOnDragStartEvent` event.
|
|
360
|
+
*/
|
|
361
|
+
export declare class SortableOnDragStartEvent extends PreventableEvent implements BaseEvent<Sortable> {
|
|
362
|
+
/**
|
|
363
|
+
* The Sortable component.
|
|
364
|
+
*/
|
|
365
|
+
target: Sortable;
|
|
366
|
+
/**
|
|
367
|
+
* The target element.
|
|
368
|
+
*/
|
|
369
|
+
element: HTMLElement;
|
|
370
|
+
/**
|
|
371
|
+
* The previous index of the dragged item.
|
|
372
|
+
*/
|
|
373
|
+
prevIndex: number;
|
|
374
|
+
/**
|
|
375
|
+
* @hidden
|
|
376
|
+
*/
|
|
377
|
+
constructor(target: Sortable, prevIndex: number, element: HTMLElement);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
* The `SortableOnNavigateEvent` event.
|
|
382
|
+
*/
|
|
383
|
+
export declare class SortableOnNavigateEvent implements BaseEvent<Sortable> {
|
|
384
|
+
/**
|
|
385
|
+
* The Sortable component.
|
|
386
|
+
*/
|
|
387
|
+
target: Sortable;
|
|
388
|
+
/**
|
|
389
|
+
* The previous index of the dragged item.
|
|
390
|
+
*/
|
|
391
|
+
prevIndex: number;
|
|
392
|
+
/**
|
|
393
|
+
* The new index of the dragged item.
|
|
394
|
+
*/
|
|
395
|
+
nextIndex: number;
|
|
396
|
+
/**
|
|
397
|
+
* The new state of the Sortable data.
|
|
398
|
+
*/
|
|
399
|
+
newState: Array<object>;
|
|
400
|
+
/**
|
|
401
|
+
* @hidden
|
|
402
|
+
*/
|
|
403
|
+
constructor(target: Sortable, prevIndex: number, nextIndex: number, newState: Array<object>);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* Represents the props of the [KendoReact Sortable component]({% slug overview_sortable %}).
|
|
408
|
+
*/
|
|
409
|
+
export declare interface SortableProps extends SortableDefaultProps {
|
|
410
|
+
/**
|
|
411
|
+
* (Required) The Sortable items UI.
|
|
412
|
+
*/
|
|
413
|
+
itemUI: React.ComponentType<SortableItemUIProps>;
|
|
414
|
+
/**
|
|
415
|
+
* @hidden
|
|
416
|
+
*
|
|
417
|
+
* Use it to override the sortable items container component.
|
|
418
|
+
*
|
|
419
|
+
* @default 'div''
|
|
420
|
+
*/
|
|
421
|
+
itemsWrapUI?: React.ForwardRefExoticComponent<any>;
|
|
422
|
+
/**
|
|
423
|
+
* (Required) The field which uniquely identifies the Sortable items.
|
|
424
|
+
*/
|
|
425
|
+
idField: string;
|
|
426
|
+
/**
|
|
427
|
+
* The field which enables or disables an item.
|
|
428
|
+
*/
|
|
429
|
+
disabledField?: string;
|
|
430
|
+
/**
|
|
431
|
+
* (Required) The data items of the Sortable.
|
|
432
|
+
*/
|
|
433
|
+
data: Array<object>;
|
|
434
|
+
/**
|
|
435
|
+
* Defines the CSS styles which are applied to the Sortable element.
|
|
436
|
+
*/
|
|
437
|
+
style?: React.CSSProperties;
|
|
438
|
+
/**
|
|
439
|
+
* Defines the CSS class which is applied to the Sortable element.
|
|
440
|
+
*/
|
|
441
|
+
className?: string;
|
|
442
|
+
/**
|
|
443
|
+
* Fires when the user starts dragging an item. This event is preventable.
|
|
444
|
+
*/
|
|
445
|
+
onDragStart?: (event: SortableOnDragStartEvent) => void;
|
|
446
|
+
/**
|
|
447
|
+
* Fires when the user is dragging an item over another Sortable item.
|
|
448
|
+
*/
|
|
449
|
+
onDragOver?: (event: SortableOnDragOverEvent) => void;
|
|
450
|
+
/**
|
|
451
|
+
* Fires when the user stops dragging an item.
|
|
452
|
+
*/
|
|
453
|
+
onDragEnd?: (event: SortableOnDragEndEvent) => void;
|
|
454
|
+
/**
|
|
455
|
+
* Fires when the user is navigates within the Srotable by using the keyboard.
|
|
456
|
+
*/
|
|
457
|
+
onNavigate?: (event: SortableOnNavigateEvent) => void;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* @hidden
|
|
462
|
+
*/
|
|
463
|
+
declare interface SortableState {
|
|
464
|
+
clientX: number;
|
|
465
|
+
clientY: number;
|
|
466
|
+
isDragging: boolean;
|
|
467
|
+
activeId: string;
|
|
468
|
+
dragCueWidth: number;
|
|
469
|
+
dragCueHeight: number;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
export { }
|
package/index.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const B=require("react"),F=require("react-dom"),h=require("prop-types"),u=require("@progress/kendo-react-common"),w=require("@progress/kendo-react-intl");function N(r){const i=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const t in r)if(t!=="default"){const e=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(i,t,e.get?e:{enumerable:!0,get:()=>r[t]})}}return i.default=r,Object.freeze(i)}const p=N(B),K=N(F);class _{constructor(){this.prevented=!1}preventDefault(){this.prevented=!0}isDefaultPrevented(){return this.prevented}}class O extends _{constructor(i,t,e){super(),this.target=i,this.prevIndex=t,this.element=e}}class T{constructor(i,t,e,s){this.target=i,this.prevIndex=t,this.nextIndex=e,this.newState=s}}class A{constructor(i,t,e,s){this.target=i,this.prevIndex=t,this.nextIndex=e,this.newState=s}}class M{constructor(i,t,e,s){this.target=i,this.prevIndex=t,this.nextIndex=e,this.newState=s}}const E="sortable.noData",L={[E]:"No Data"},X=(r,i)=>{for(let t=0;t<r.length;t++)if(i(r[t]))return r[t]},y=(r,i)=>{for(let t=0;t<r.length;t++)if(i(r[t]))return t;return-1},C=r=>String(r).trim().split(" "),z=(r,i)=>{const t=C(i);return!!C(r.className).find(e=>t.indexOf(e)>=0)},Y=/^(?:a|input|select|option|textarea|button|object)$/i,q=r=>{if(r.tagName){const i=r.tagName.toLowerCase(),t=r.getAttribute("tabIndex"),e=t==="-1";let s=t!==null&&!e;return Y.test(i)&&(s=!r.disabled&&!e),s}return!1},W=(r,i)=>{for(;r&&!i(r);)r=r.parentNode;return r},H=u.hasRelativeStackingContext(),j=r=>{if(!r||!H)return null;let i=r.parentElement;for(;i;){if(window.getComputedStyle(i).transform!=="none")return i;i=i.parentElement}},G={name:"@progress/kendo-react-sortable",productName:"KendoReact",productCodes:["KENDOUIREACT","KENDOUICOMPLETE"],publishDate:0,version:"",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/components/my-license/"},x=200,D="data-sortable-id",P="data-sortable-component",$={[P]:!0};class S extends p.Component{constructor(i){super(i),this.state={clientX:0,clientY:0,isDragging:!1,activeId:"",dragCueWidth:0,dragCueHeight:0},this.isRtl=!1,this.itemRefsMap={},this.oldSizesMap={},this.animatingItemMap={},this.draggableRef=null,this.isUnmounted=!1,this.focusActiveId=!1,this.isKeyboardNavigated=!1,this.isDragPrevented=!1,this.swapItems=(t,e,s)=>{let n=t[e];return t[e]=t[s],t[s]=n,e=s,e},this.generateNewState=(t,e)=>{const{data:s}=this.props,n=[...s];if(t>e)for(let l=t-1;l>=e;l--){const c=s[l];this.isItemDisabled(c)||(t=this.swapItems(n,t,l))}else for(let l=t+1;l<=e;l++){const c=s[l];this.isItemDisabled(c)||(t=this.swapItems(n,t,l))}return n},this.closestSortableItem=t=>{let e=t;for(;e;){const s=e.getAttribute(D);if(s&&this.itemRefsMap[s]===e)return{id:s,element:e};e=e.parentElement}return{id:"",element:null}},this.isSortable=t=>!!t.hasAttribute(P),this.closestSortable=t=>{let e=t;for(;e;){if(this.isSortable(e))return e;e=e.parentElement}return null},this.isSameSortable=t=>this.closestSortable(t)===this.container,this.idComparer=(t,e)=>t+""==e+"",this.findItem=t=>{const{data:e,idField:s}=this.props;if(!(t+""))return;const n=u.getter(s);return X(e,a=>this.idComparer(n(a),t))},this.findIndex=t=>{const{data:e,idField:s}=this.props;return t+""?y(e,n=>this.idComparer(n[s],t)):-1},this.isItemDisabled=t=>t&&t[this.props.disabledField||""]===!0,this.shouldResetActive=()=>{const t=u.getActiveElement(document);return t instanceof HTMLElement?!this.closestSortableItem(t).element:!1},this.widgetTarget=t=>{const e=W(t,s=>z(s,"k-widget")||this.isSortable(s));return e&&!this.isSortable(e)},this.allowDrag=t=>t.hasAttribute(D)||!(q(t)||this.widgetTarget(t)),this.onDragStart=t=>{const{event:e}=t,{onDragStart:s}=this.props,n=document.elementFromPoint(e.clientX,e.clientY),{id:a,element:l}=this.closestSortableItem(n),c=this.findItem(a);if(!a||c&&this.isItemDisabled(c)||!this.allowDrag(n)||!this.isSameSortable(n)){this.isDragPrevented=!0;return}e.isTouch&&e.originalEvent.preventDefault();const o=new O(this,this.findIndex(a),n);s&&s.call(void 0,o),this.isDragPrevented=o.isDefaultPrevented(),this.isDragPrevented?e.originalEvent.preventDefault():(this.offsetParent=j(this.container),this.setState({activeId:a,dragCueWidth:l&&l.clientWidth||0,dragCueHeight:l&&l.clientHeight||0}))},this.onDragOver=t=>{const{event:e}=t,{onDragOver:s,data:n}=this.props;if(this.isDragPrevented)return;e.originalEvent.preventDefault();const a=this.findIndex(this.state.activeId);if(a===-1){this.resetState();return}const l=document.elementFromPoint(e.clientX,e.clientY),c=this.closestSortableItem(l),o=this.findIndex(c.id),d=n[o];if(s&&o>-1&&a!==o&&!this.isItemDisabled(d)&&!this.animatingItemMap[c.id]&&this.shouldReorder(c.element,e.clientX,e.clientY)){const f=new T(this,a,o,this.generateNewState(a,o));s.call(void 0,f)}const g=this.parentOffset();this.setState({clientX:e.clientX-g.left,clientY:e.clientY-g.top,isDragging:!0})},this.onDragEnd=t=>{const{event:e}=t,s=this.shouldResetActive();if(this.isDragPrevented)return;const{onDragEnd:n,data:a}=this.props,l=document.elementFromPoint(e.clientX,e.clientY),c=this.closestSortableItem(l);let o=this.findIndex(c.id),d=this.findIndex(this.state.activeId);const g=this.isItemDisabled(a[o]);if((o===-1||g)&&(o=d),n){let f=this.generateNewState(d,o);if(!g){const m=this.thresholdRect(c.element);if(m&&(e.clientX<m.left||e.clientX>m.right||e.clientY<m.top||e.clientY>m.bottom)){const v=d;d=o,o=v,f=this.props.data.slice()}}const I=new A(this,d,o,f);n.call(void 0,I)}this.resetState(s)},this.shouldReorder=(t,e,s)=>{const n=this.thresholdRect(t);return n&&e>n.left&&e<n.right&&s>n.top&&s<n.bottom},this.thresholdRect=t=>{const e=this.state.activeId,s=this.container,a=(s?Array.from(s.childNodes):[]).find(m=>m instanceof HTMLElement&&m.getAttribute(D)===e);if(!t||!a)return null;const{width:l,height:c}=a.getBoundingClientRect(),o=t.getBoundingClientRect(),d=o.top+o.height/2-c/2,g=o.left+o.width/2-l/2,f=d+c,I=g+l;return{top:d,left:g,bottom:f,right:I}},this.onItemBlur=()=>{window.setTimeout(()=>{this.isUnmounted||this.shouldResetActive()&&!this.state.isDragging&&this.setState({activeId:""})})},this.onItemFocus=t=>{const{id:e,element:s}=this.closestSortableItem(t.currentTarget);!this.idComparer(e,this.state.activeId)&&this.isSameSortable(t.target)&&s===t.target&&this.setState({activeId:e})},this.onKeyDown=t=>{const{data:e,idField:s,onNavigate:n,navigation:a}=this.props,{activeId:l}=this.state;if(!a||!l||!this.isSameSortable(t.target))return;const c=this.isRtl,o=e.filter(b=>!this.isItemDisabled(b)),d=y(o,b=>this.idComparer(b[s],l)),g=o.length-1;let f=d;switch(t.keyCode===u.Keys.left&&(c?t.keyCode=u.Keys.down:t.keyCode=u.Keys.up),t.keyCode===u.Keys.right&&(c?t.keyCode=u.Keys.up:t.keyCode=u.Keys.down),t.keyCode){case u.Keys.up:d>0&&(f=d-1);break;case u.Keys.down:d<g&&(f=d+1);break}if(f===d)return;t.stopPropagation(),t.preventDefault();const I=o[f],m=I?I[s]:"",v=o[d],U=v?v[s]:"";if(t.ctrlKey){if(n){const b=this.findIndex(U),R=this.findIndex(m),k=new M(this,b,R,this.generateNewState(b,R));this.isKeyboardNavigated=!0,n.call(void 0,k)}}else this.focusActiveId=!0,this.setState({activeId:m+""})},this.resetState=t=>{this.isDragPrevented=!1,this.setState({clientX:0,clientY:0,isDragging:!1,dragCueWidth:0,dragCueHeight:0,activeId:t?"":this.state.activeId})},this.renderData=()=>{const{data:t,itemUI:e,idField:s,tabIndex:n}=this.props;return t.map(a=>{const c=u.getter(s)(a),o=this.isItemDisabled(a),d=this.idComparer(this.state.activeId,c);return p.createElement(e,{key:c,forwardRef:g=>this.refAssign(g,c),dataItem:a,isDisabled:o,isActive:d,isDragged:d&&this.state.isDragging,isDragCue:!1,attributes:{[D]:c,["aria-disabled"]:o,["aria-grabbed"]:d&&this.state.isDragging&&!this.isDragPrevented,["aria-dropeffect"]:o?"none":"move",tabIndex:u.getTabIndex(n,o),onFocus:this.onItemFocus,onBlur:this.onItemBlur},style:{cursor:o?"auto":"move",MozUserSelect:"none",msUserSelect:"none",WebkitUserSelect:"none",userSelect:"none"}})})},this.renderNoData=()=>{const{emptyItemUI:t}=this.props,s=w.provideLocalizationService(this).toLanguageString(E,L[E]);if(t)return p.createElement(t,{message:s})},this.renderDragCue=()=>{const{itemUI:t}=this.props,{isDragging:e,activeId:s,clientX:n,clientY:a}=this.state,l=this.findItem(s);if(!(!e||!l))return p.createElement(t,{dataItem:l,isDisabled:!1,isActive:!0,isDragged:!0,isDragCue:!0,style:{position:"fixed",top:a+10,left:n+10,width:this.state.dragCueWidth,height:this.state.dragCueHeight},attributes:{}})},this.refAssign=(t,e)=>{t?this.itemRefsMap[e]=t:delete this.itemRefsMap[e]},this.draggableRefAssign=t=>{this.draggableRef=t},u.validatePackage(G)}get container(){return this.draggableRef&&this.draggableRef.element}getSnapshotBeforeUpdate(){const{idField:i,animation:t}=this.props;return this.oldSizesMap={},t&&this.props.data.forEach(e=>{const s=e[i],n=this.itemRefsMap[s],a=K.findDOMNode(n);a&&(this.oldSizesMap[s]=a.getBoundingClientRect())}),null}componentDidUpdate(i){const{idField:t,animation:e}=this.props;this.focusActiveId&&(this.focusActiveId=!1,this.itemRefsMap[this.state.activeId].focus()),!(!e||!this.state.isDragging&&!this.isKeyboardNavigated)&&(this.isKeyboardNavigated=!1,i.data.forEach(s=>{const n=s[t],a=this.itemRefsMap[n];if(!a)return;const l=a.getBoundingClientRect(),c=this.oldSizesMap[n],o=c.left-l.left,d=c.top-l.top;o===0&&d===0||requestAnimationFrame(()=>{this.animatingItemMap[n]=!0,a.style.transform=`translate(${o}px, ${d}px)`,a.style.transition="transform 0s",requestAnimationFrame(()=>{a.style.transform="",a.style.transition=`transform ${x}ms cubic-bezier(0.2, 0, 0, 1) 0s`,window.setTimeout(()=>this.animatingItemMap[n]=!1,x)})})}))}componentDidMount(){this.isRtl=this.container&&getComputedStyle(this.container).direction==="rtl"||!1}componentWillUnmount(){this.isUnmounted=!0}parentOffset(){const i=this.offsetParent;if(i&&i.ownerDocument&&i!==i.ownerDocument.body){const t=i.getBoundingClientRect();return{left:t.left-i.scrollLeft,top:t.top-i.scrollTop}}return{left:0,top:0}}render(){const{data:i,style:t,className:e,itemsWrapUI:s}=this.props,n=s||"div";return p.createElement(u.Draggable,{onDragStart:this.onDragStart,onDrag:this.onDragOver,onDragEnd:this.onDragEnd,ref:this.draggableRefAssign},p.createElement(n,{...$,className:e,style:{touchAction:"none",...t},onKeyDown:this.onKeyDown},i&&i.length?this.renderData():this.renderNoData(),this.renderDragCue()))}}S.defaultProps={navigation:!0,animation:!0,emptyItemUI:r=>p.createElement("div",null,r.message)};S.propTypes={idField:h.string.isRequired,disabledField:h.string,data:h.array.isRequired,tabIndex:h.number,navigation:h.bool,animation:h.bool,itemsWrapUI:h.any,itemUI:h.func.isRequired,emptyItemUI:h.func,style:h.object,className:h.string,onDragStart:h.func,onDragOver:h.func,onDragEnd:h.func,onNavigate:h.func};w.registerForLocalization(S);exports.Sortable=S;exports.SortableOnDragEndEvent=A;exports.SortableOnDragOverEvent=T;exports.SortableOnDragStartEvent=O;exports.SortableOnNavigateEvent=M;
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*-------------------------------------------------------------------------------------------
|
|
4
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
5
|
+
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
|
+
*-------------------------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./Sortable.js"),t=require("./events/SortableOnDragStartEvent.js"),r=require("./events/SortableOnDragOverEvent.js"),a=require("./events/SortableOnDragEndEvent.js"),n=require("./events/SortableOnNavigateEvent.js");exports.Sortable=e.Sortable;exports.SortableOnDragStartEvent=t.SortableOnDragStartEvent;exports.SortableOnDragOverEvent=r.SortableOnDragOverEvent;exports.SortableOnDragEndEvent=a.SortableOnDragEndEvent;exports.SortableOnNavigateEvent=n.SortableOnNavigateEvent;
|