@progress/kendo-vue-scheduler 3.1.4 → 3.1.5-dev.202204110939

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 (72) hide show
  1. package/dist/cdn/js/kendo-vue-scheduler.js +2 -2
  2. package/dist/es/components/SchedulerForm.js +6 -0
  3. package/dist/es/components/SchedulerOccurrenceDialog.js +52 -7
  4. package/dist/es/components/SchedulerRemoveDialog.js +52 -7
  5. package/dist/es/editors/ResourceEditor.js +13 -11
  6. package/dist/es/editors/SchedulerFormEditor.js +11 -10
  7. package/dist/es/editors/ZonedDateTime.d.ts +1 -0
  8. package/dist/es/editors/ZonedDateTime.js +5 -2
  9. package/dist/es/items/SchedulerEditItem.js +401 -211
  10. package/dist/es/items/SchedulerItem.js +104 -95
  11. package/dist/es/items/SchedulerViewItem.js +8 -2
  12. package/dist/es/items/hooks/use-drag-item.d.ts +2 -6
  13. package/dist/es/items/hooks/use-drag-item.js +228 -153
  14. package/dist/es/items/hooks/use-show-occurrence-dialog.d.ts +1 -0
  15. package/dist/es/items/hooks/use-show-occurrence-dialog.js +1 -2
  16. package/dist/es/items/hooks/use-show-remove-item-dialog.d.ts +1 -0
  17. package/dist/es/items/hooks/use-show-remove-item-dialog.js +1 -2
  18. package/dist/es/package-metadata.js +1 -1
  19. package/dist/es/recurrence/RecurrenceEditor.d.ts +1 -0
  20. package/dist/es/recurrence/RecurrenceEditor.js +5 -0
  21. package/dist/es/recurrence/RecurrenceFrequencyEditor.js +4 -0
  22. package/dist/es/recurrence/RecurrenceRepeatOnWeekEditor.js +4 -0
  23. package/dist/es/tasks/SchedulerEditTask.d.ts +9 -0
  24. package/dist/es/tasks/SchedulerEditTask.js +118 -35
  25. package/dist/es/tasks/SchedulerTask.js +3 -2
  26. package/dist/es/tasks/SchedulerViewTask.js +15 -3
  27. package/dist/es/views/agenda/AgendaView.js +21 -9
  28. package/dist/es/views/agenda/AgendaViewBody.d.ts +1 -0
  29. package/dist/es/views/agenda/AgendaViewBody.js +6 -1
  30. package/dist/es/views/common/SchedulerDrag.js +62 -11
  31. package/dist/es/views/day/DayView.js +4 -0
  32. package/dist/es/views/month/MonthView.js +5 -1
  33. package/dist/es/views/time/MultiDayTimelineView.js +28 -9
  34. package/dist/es/views/time/TimelineView.js +4 -0
  35. package/dist/es/views/week/WeekView.js +12 -2
  36. package/dist/es/views/week/WorkWeekView.js +12 -2
  37. package/dist/npm/components/SchedulerForm.js +6 -0
  38. package/dist/npm/components/SchedulerOccurrenceDialog.js +52 -7
  39. package/dist/npm/components/SchedulerRemoveDialog.js +52 -7
  40. package/dist/npm/editors/ResourceEditor.js +12 -10
  41. package/dist/npm/editors/SchedulerFormEditor.js +11 -11
  42. package/dist/npm/editors/ZonedDateTime.d.ts +1 -0
  43. package/dist/npm/editors/ZonedDateTime.js +4 -1
  44. package/dist/npm/items/SchedulerEditItem.js +400 -207
  45. package/dist/npm/items/SchedulerItem.js +104 -95
  46. package/dist/npm/items/SchedulerViewItem.js +8 -2
  47. package/dist/npm/items/hooks/use-drag-item.d.ts +2 -6
  48. package/dist/npm/items/hooks/use-drag-item.js +231 -153
  49. package/dist/npm/items/hooks/use-show-occurrence-dialog.d.ts +1 -0
  50. package/dist/npm/items/hooks/use-show-occurrence-dialog.js +2 -2
  51. package/dist/npm/items/hooks/use-show-remove-item-dialog.d.ts +1 -0
  52. package/dist/npm/items/hooks/use-show-remove-item-dialog.js +2 -2
  53. package/dist/npm/package-metadata.js +1 -1
  54. package/dist/npm/recurrence/RecurrenceEditor.d.ts +1 -0
  55. package/dist/npm/recurrence/RecurrenceEditor.js +5 -0
  56. package/dist/npm/recurrence/RecurrenceFrequencyEditor.js +4 -0
  57. package/dist/npm/recurrence/RecurrenceRepeatOnWeekEditor.js +4 -0
  58. package/dist/npm/tasks/SchedulerEditTask.d.ts +9 -0
  59. package/dist/npm/tasks/SchedulerEditTask.js +120 -35
  60. package/dist/npm/tasks/SchedulerTask.js +3 -2
  61. package/dist/npm/tasks/SchedulerViewTask.js +15 -3
  62. package/dist/npm/views/agenda/AgendaView.js +21 -9
  63. package/dist/npm/views/agenda/AgendaViewBody.d.ts +1 -0
  64. package/dist/npm/views/agenda/AgendaViewBody.js +6 -1
  65. package/dist/npm/views/common/SchedulerDrag.js +62 -11
  66. package/dist/npm/views/day/DayView.js +4 -0
  67. package/dist/npm/views/month/MonthView.js +5 -1
  68. package/dist/npm/views/time/MultiDayTimelineView.js +27 -8
  69. package/dist/npm/views/time/TimelineView.js +4 -0
  70. package/dist/npm/views/week/WeekView.js +12 -2
  71. package/dist/npm/views/week/WorkWeekView.js +12 -2
  72. package/package.json +12 -12
@@ -231,110 +231,119 @@ var SchedulerItemVue2 = {
231
231
  // onRelease: this.handleResizeRelease
232
232
  // });
233
233
 
234
- return h("div", {
235
- id: this.$props.id,
236
- attrs: this.v3 ? undefined : {
234
+ return (// <Draggable
235
+ // onPress={this.handlePress}
236
+ // onDrag={this.handleDrag}
237
+ // onRelease={this.handleRelease}
238
+ // ref={'draggable'}
239
+ // >
240
+ // @ts-ignore function children
241
+ h("div", {
237
242
  id: this.$props.id,
243
+ attrs: this.v3 ? undefined : {
244
+ id: this.$props.id,
245
+ tabIndex: this.currentTabIndex,
246
+ // Aria
247
+ "aria-label": this.eventLabel,
248
+ "aria-selected": this.$props.selected // Focus
249
+ ,
250
+ "data-group-index": this.$props.group.index,
251
+ "data-range-index": this.$props.range.index
252
+ },
253
+ style: this.computedStyle,
238
254
  tabIndex: this.currentTabIndex,
239
- // Aria
255
+ "class": this.itemClassName,
240
256
  "aria-label": this.eventLabel,
241
- "aria-selected": this.$props.selected // Focus
257
+ "aria-selected": this.$props.selected,
258
+ onFocus: this.handleFocus,
259
+ on: this.v3 ? undefined : {
260
+ "focus": this.handleFocus,
261
+ "blur": this.handleBlur,
262
+ "mouseup": this.handleMouseUp,
263
+ "mousedown": this.handleMouseDown,
264
+ "click": this.handleClick,
265
+ "mouseover": this.handleMouseOver,
266
+ "mouseout": this.handleMouseOut,
267
+ "mouseenter": this.handleMouseEnter,
268
+ "mouseleave": this.handleMouseLeave,
269
+ "dblclick": this.handleDoubleClick,
270
+ "keydown": this.handleKeyDown,
271
+ "keypress": this.handleKeyPress,
272
+ "keyup": this.handleKeyUp
273
+ },
274
+ onBlur: this.handleBlur // Mouse
242
275
  ,
276
+ onMouseup: this.handleMouseUp,
277
+ onMousedown: this.handleMouseDown,
278
+ onClick: this.handleClick,
279
+ onMouseover: this.handleMouseOver,
280
+ onMouseout: this.handleMouseOut,
281
+ onMouseenter: this.handleMouseEnter,
282
+ onMouseleave: this.handleMouseLeave,
283
+ onDblclick: this.handleDoubleClick // Keyboard
284
+ ,
285
+ onKeydown: this.handleKeyDown,
286
+ onKeypress: this.handleKeyPress,
287
+ onKeyup: this.handleKeyUp,
243
288
  "data-group-index": this.$props.group.index,
244
289
  "data-range-index": this.$props.range.index
245
- },
246
- style: this.computedStyle,
247
- tabIndex: this.currentTabIndex,
248
- "class": this.itemClassName,
249
- "aria-label": this.eventLabel,
250
- "aria-selected": this.$props.selected,
251
- onFocus: this.handleFocus,
252
- on: this.v3 ? undefined : {
253
- "focus": this.handleFocus,
254
- "blur": this.handleBlur,
255
- "mouseup": this.handleMouseUp,
256
- "mousedown": this.handleMouseDown,
257
- "click": this.handleClick,
258
- "mouseover": this.handleMouseOver,
259
- "mouseout": this.handleMouseOut,
260
- "mouseenter": this.handleMouseEnter,
261
- "mouseleave": this.handleMouseLeave,
262
- "dblclick": this.handleDoubleClick,
263
- "keydown": this.handleKeyDown,
264
- "keypress": this.handleKeyPress,
265
- "keyup": this.handleKeyUp
266
- },
267
- onBlur: this.handleBlur // Mouse
268
- ,
269
- onMouseup: this.handleMouseUp,
270
- onMousedown: this.handleMouseDown,
271
- onClick: this.handleClick,
272
- onMouseover: this.handleMouseOver,
273
- onMouseout: this.handleMouseOut,
274
- onMouseenter: this.handleMouseEnter,
275
- onMouseleave: this.handleMouseLeave,
276
- onDblclick: this.handleDoubleClick // Keyboard
277
- ,
278
- onKeydown: this.handleKeyDown,
279
- onKeypress: this.handleKeyPress,
280
- onKeyup: this.handleKeyUp,
281
- "data-group-index": this.$props.group.index,
282
- "data-range-index": this.$props.range.index
283
- }, [!this.$props.resizeHint && h("span", {
284
- "class": "k-event-actions"
285
- }, [this.$props.tail && h("span", {
286
- "class": "k-icon k-i-arrow-60-left"
287
- }), this.$props.isRecurring && !this.$props.isException && h("span", {
288
- "class": "k-icon k-i-reload"
289
- }), !this.$props.isRecurring && this.$props.isException && h("span", {
290
- "class": "k-icon k-i-non-recurrence"
291
- })]), defaultSlot, !this.$props.resizeHint && h("span", {
292
- "class": "k-event-actions"
293
- }, [editable.remove && h("a", {
294
- tabIndex: -1,
295
- attrs: this.v3 ? undefined : {
290
+ }, [!this.$props.resizeHint && h("span", {
291
+ "class": "k-event-actions"
292
+ }, [this.$props.tail && h("span", {
293
+ "class": "k-icon k-i-arrow-60-left"
294
+ }), this.$props.isRecurring && !this.$props.isException && h("span", {
295
+ "class": "k-icon k-i-reload"
296
+ }), !this.$props.isRecurring && this.$props.isException && h("span", {
297
+ "class": "k-icon k-i-non-recurrence"
298
+ })]), defaultSlot, !this.$props.resizeHint && h("span", {
299
+ "class": "k-event-actions"
300
+ }, [editable.remove && h("a", {
296
301
  tabIndex: -1,
302
+ attrs: this.v3 ? undefined : {
303
+ tabIndex: -1,
304
+ "aria-hidden": "true",
305
+ title: deleteMessage,
306
+ "aria-label": deleteMessage
307
+ },
297
308
  "aria-hidden": "true",
309
+ "class": "k-link k-event-delete",
298
310
  title: deleteMessage,
299
- "aria-label": deleteMessage
300
- },
301
- "aria-hidden": "true",
302
- "class": "k-link k-event-delete",
303
- title: deleteMessage,
304
- "aria-label": deleteMessage,
305
- onClick: this.handleRemoveClick,
306
- on: this.v3 ? undefined : {
307
- "click": this.handleRemoveClick
308
- }
309
- }, [h("span", {
310
- "class": "k-icon k-i-close"
311
- })]), this.$props.head && h("span", {
312
- "class": "k-icon k-i-arrow-60-right"
313
- })]), editable.resize && this.$props.vertical && [h("span", {
314
- "class": "k-resize-handle k-resize-n",
315
- ref: this.resizeNorth
316
- }), h("span", {
317
- "class": "k-resize-handle k-resize-s",
318
- ref: this.resizeSouth
319
- })], editable.resize && !this.$props.vertical && [h("span", {
320
- "class": "k-resize-handle k-resize-w",
321
- ref: this.resizeWest
322
- }), h("span", {
323
- "class": "k-resize-handle k-resize-e",
324
- ref: this.resizeEast
325
- })], this.$props.resizeHint && [h("div", {
326
- "class": "k-marquee-color",
327
- style: {
328
- borderColor: this.color,
329
- backgroundColor: this.color
330
- }
331
- }), h("div", {
332
- "class": "k-marquee-text"
333
- }, [!this.$props.tail && h("div", {
334
- "class": "k-label-top"
335
- }, [this.intl.formatDate(this.$props.zonedStart, this.$props.format)]), !this.$props.head && h("div", {
336
- "class": "k-label-bottom"
337
- }, [this.intl.formatDate(this.$props.zonedEnd, this.$props.format)])])]]);
311
+ "aria-label": deleteMessage,
312
+ onClick: this.handleRemoveClick,
313
+ on: this.v3 ? undefined : {
314
+ "click": this.handleRemoveClick
315
+ }
316
+ }, [h("span", {
317
+ "class": "k-icon k-i-close"
318
+ })]), this.$props.head && h("span", {
319
+ "class": "k-icon k-i-arrow-60-right"
320
+ })]), editable.resize && this.$props.vertical && [h("span", {
321
+ "class": "k-resize-handle k-resize-n",
322
+ ref: this.resizeNorth
323
+ }), h("span", {
324
+ "class": "k-resize-handle k-resize-s",
325
+ ref: this.resizeSouth
326
+ })], editable.resize && !this.$props.vertical && [h("span", {
327
+ "class": "k-resize-handle k-resize-w",
328
+ ref: this.resizeWest
329
+ }), h("span", {
330
+ "class": "k-resize-handle k-resize-e",
331
+ ref: this.resizeEast
332
+ })], this.$props.resizeHint && [h("div", {
333
+ "class": "k-marquee-color",
334
+ style: {
335
+ borderColor: this.color,
336
+ backgroundColor: this.color
337
+ }
338
+ }), h("div", {
339
+ "class": "k-marquee-text"
340
+ }, [!this.$props.tail && h("div", {
341
+ "class": "k-label-top"
342
+ }, [this.intl.formatDate(this.$props.zonedStart, this.$props.format)]), !this.$props.head && h("div", {
343
+ "class": "k-label-bottom"
344
+ }, [this.intl.formatDate(this.$props.zonedEnd, this.$props.format)])])]]) // </Draggable>
345
+
346
+ );
338
347
  },
339
348
  methods: {
340
349
  // Focus Handlers
@@ -437,6 +437,12 @@ var SchedulerViewItemVue2 = {
437
437
  align: function align() {
438
438
  var _this = this;
439
439
 
440
+ var element = this.$el.nodeType === 8 ? this.$el.parentElement : this.$el;
441
+
442
+ if (!element) {
443
+ return;
444
+ }
445
+
440
446
  var slots = (this.bv.slots || []).filter(function (slot) {
441
447
  return slot && _this.inSlot(slot.$props, _this.$props);
442
448
  });
@@ -459,12 +465,12 @@ var SchedulerViewItemVue2 = {
459
465
  }
460
466
 
461
467
  var rect = utils_2.getRect(firstSlot.$el);
462
- utils_2.setRect(this.$el, rect);
468
+ utils_2.setRect(element, rect);
463
469
  },
464
470
  position: function position() {
465
471
  var _this = this;
466
472
 
467
- var element = this.$el;
473
+ var element = this.$el.nodeType === 8 ? this.$el.parentElement : this.$el;
468
474
 
469
475
  if (!element) {
470
476
  return;
@@ -1,4 +1,5 @@
1
1
  import { DataItem } from '../../models';
2
+ import { SchedulerEditItemAll } from '../SchedulerEditItem';
2
3
  /**
3
4
  * Represents the available `action` types for the `SchedulerItemDragItemAction` objects.
4
5
  *
@@ -30,9 +31,4 @@ export interface SchedulerItemDragItemAction {
30
31
  payload?: DataItem;
31
32
  }
32
33
  /** @hidden */
33
- export declare const useDragItem: (_config: {
34
- dataItem: DataItem;
35
- ignoreIsAllDay?: boolean;
36
- isAllDay?: boolean;
37
- onDataaction?: any;
38
- }, _state: [DataItem, DataItem, any]) => any[];
34
+ export declare const useDragItem: (this: SchedulerEditItemAll, action: SchedulerItemDragItemAction) => void;
@@ -1,9 +1,32 @@
1
1
  "use strict";
2
2
 
3
+ var __spreadArrays = undefined && undefined.__spreadArrays || function () {
4
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) {
5
+ s += arguments[i].length;
6
+ }
7
+
8
+ for (var r = Array(s), k = 0, i = 0; i < il; i++) {
9
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {
10
+ r[k] = a[j];
11
+ }
12
+ }
13
+
14
+ return r;
15
+ };
16
+
3
17
  Object.defineProperty(exports, "__esModule", {
4
18
  value: true
5
19
  });
6
20
  exports.useDragItem = exports.DRAG_ITEM_ACTION = void 0;
21
+
22
+ var kendo_vue_common_1 = require("@progress/kendo-vue-common"); // import { useSchedulerFieldsContext, useSchedulerGroupsContext,
23
+ // useSchedulerViewSelectedItemsContext } from '../../context';
24
+ // import { useControlledState } from '../../hooks/useControlledState';
25
+
26
+
27
+ var main_1 = require("../../main");
28
+
29
+ var utils_1 = require("../../utils");
7
30
  /**
8
31
  * Represents the available `action` types for the `SchedulerItemDragItemAction` objects.
9
32
  *
@@ -18,6 +41,7 @@ exports.useDragItem = exports.DRAG_ITEM_ACTION = void 0;
18
41
  * - `DRAG_ITEM_DRAG_SELECTED`
19
42
  */
20
43
 
44
+
21
45
  var DRAG_ITEM_ACTION;
22
46
 
23
47
  (function (DRAG_ITEM_ACTION) {
@@ -30,160 +54,214 @@ var DRAG_ITEM_ACTION;
30
54
  DRAG_ITEM_ACTION["reset"] = "DRAG_ITEM_RESET";
31
55
  DRAG_ITEM_ACTION["dragSelected"] = "DRAG_ITEM_DRAG_SELECTED";
32
56
  })(DRAG_ITEM_ACTION = exports.DRAG_ITEM_ACTION || (exports.DRAG_ITEM_ACTION = {}));
57
+
58
+ var offset = 0;
59
+ var initialXRef = 0;
60
+ var initialYRef = 0;
61
+ var oldSlot = null;
33
62
  /** @hidden */
34
63
 
64
+ exports.useDragItem = function (action) {
65
+ var _this = this;
66
+
67
+ var dataItem = kendo_vue_common_1.clone(this.dataItem);
68
+
69
+ switch (action.type) {
70
+ case DRAG_ITEM_ACTION.set:
71
+ {
72
+ this.currentDragItem = action.payload;
73
+ break;
74
+ }
75
+
76
+ case DRAG_ITEM_ACTION.reset:
77
+ {
78
+ this.currentDragItem = null;
79
+ break;
80
+ }
81
+
82
+ case DRAG_ITEM_ACTION.dragSelected:
83
+ {
84
+ if (Math.abs(initialXRef - action.payload.x) < 10 && Math.abs(initialYRef - action.payload.y) < 10) {
85
+ return;
86
+ }
87
+
88
+ var slot = utils_1.slotDive(action.payload.x, action.payload.y, 7);
89
+
90
+ if (!slot) {
91
+ return;
92
+ }
93
+
94
+ if (slot === oldSlot) {
95
+ return;
96
+ }
97
+
98
+ var slotStart = slot.getAttribute('data-slot-start');
99
+ var slotIsAllDay = slot.getAttribute('data-slot-allday') === 'true';
100
+
101
+ if (!this.ignoreIsAllDay && slotIsAllDay !== this.isAllDay) {
102
+ return;
103
+ }
104
+
105
+ var itemStart = new Date(utils_1.getField(dataItem, this.ks.fields.start));
106
+ var distance_1 = Number(slotStart) - itemStart.getTime();
107
+ var newDragItems = this.bv.selectedItems.map(function (si) {
108
+ if (!si) {
109
+ return null;
110
+ }
111
+
112
+ var selectedDataItem = kendo_vue_common_1.clone(si.props.dataItem);
113
+ var selectedStart = new Date(si.props.start.getTime() + distance_1);
114
+ var selectedEnd = new Date(si.props.end.getTime() + distance_1);
115
+ utils_1.setField(selectedDataItem, _this.ks.fields.start, selectedStart);
116
+ utils_1.setField(selectedDataItem, _this.ks.fields.end, selectedEnd);
117
+ return selectedDataItem;
118
+ }).filter(Boolean);
119
+ oldSlot = slot;
120
+ this.currentDragItem = __spreadArrays(newDragItems);
121
+ break;
122
+ }
123
+
124
+ case DRAG_ITEM_ACTION.start:
125
+ {
126
+ var clientX = action.payload.x;
127
+ var clientY = action.payload.y;
128
+ initialXRef = clientX;
129
+ initialYRef = clientY;
130
+ var slot = utils_1.slotDive(clientX, clientY, 7);
131
+
132
+ if (!slot) {
133
+ return;
134
+ }
135
+
136
+ var slotStart = slot.getAttribute('data-slot-start');
137
+ var itemStart = utils_1.getField(dataItem, this.ks.fields.start);
138
+
139
+ if (slotStart === null) {
140
+ return;
141
+ }
142
+
143
+ offset = Number(slotStart) - new Date(itemStart).getTime();
144
+ break;
145
+ }
146
+
147
+ case DRAG_ITEM_ACTION.drag:
148
+ {
149
+ if (Math.abs(initialXRef - action.payload.x) < 10 && Math.abs(initialYRef - action.payload.y) < 10) {
150
+ return;
151
+ }
152
+
153
+ var slot = utils_1.slotDive(action.payload.x, action.payload.y, 7);
154
+
155
+ if (!slot) {
156
+ return;
157
+ }
158
+
159
+ if (slot === oldSlot) {
160
+ return;
161
+ }
162
+
163
+ var slotStart = slot.getAttribute('data-slot-start');
164
+ var slotGroupIndex_1 = slot.getAttribute('data-slot-group');
165
+ var slotIsAllDay = slot.getAttribute('data-slot-allday') === 'true';
166
+
167
+ if (!this.ignoreIsAllDay && slotIsAllDay !== this.isAllDay) {
168
+ return;
169
+ }
170
+
171
+ var itemStart = new Date(utils_1.getField(dataItem, this.ks.fields.start));
172
+ var itemEnd = new Date(utils_1.getField(dataItem, this.ks.fields.end));
173
+ var duration = itemEnd.getTime() - itemStart.getTime();
174
+ var start = new Date(Number(slotStart) - Number(offset));
175
+ var end = new Date(Number(slotStart) - Number(offset) + duration);
176
+ var group = this.ks.groups.find(function (g) {
177
+ return g.index === Number(slotGroupIndex_1);
178
+ });
179
+ utils_1.setField(dataItem, this.ks.fields.start, start);
180
+ utils_1.setField(dataItem, this.ks.fields.end, end);
181
+
182
+ if (group && this.ks.groups.length > 1) {
183
+ group.resources.forEach(function (resource) {
184
+ if (!resource.multiple) {
185
+ utils_1.setField(dataItem, resource.field, resource[resource.valueField]);
186
+ }
187
+ });
188
+ }
189
+
190
+ oldSlot = slot;
191
+
192
+ if (dataItem) {
193
+ this.currentDragItem = dataItem;
194
+ }
195
+
196
+ break;
197
+ }
198
+
199
+ case DRAG_ITEM_ACTION.complete:
200
+ {
201
+ this.currentDragItem = null;
202
+
203
+ if (this.compDragItem) {
204
+ this.$emit('dataaction', {
205
+ type: main_1.DATA_ACTION.update,
206
+ series: false,
207
+ dataItem: this.compDragItem
208
+ });
209
+ }
210
+
211
+ break;
212
+ }
213
+
214
+ case DRAG_ITEM_ACTION.completeOccurrence:
215
+ {
216
+ var newDataItem = Array.isArray(this.compDragItem) ? this.compDragItem.slice() : kendo_vue_common_1.clone(this.compDragItem);
217
+ this.currentDragItem = null;
218
+
219
+ if (this.compDragItem) {
220
+ this.$emit('dataaction', {
221
+ type: main_1.DATA_ACTION.update,
222
+ series: false,
223
+ dataItem: newDataItem
224
+ });
225
+ }
226
+
227
+ break;
228
+ }
229
+
230
+ case DRAG_ITEM_ACTION.completeSeries:
231
+ {
232
+ var newDataItems = void 0;
233
+
234
+ if (Array.isArray(this.compDragItem)) {
235
+ newDataItems = this.compDragItem.map(function (di) {
236
+ var updated = kendo_vue_common_1.clone(di);
237
+ utils_1.setField(updated, _this.ks.fields.start, utils_1.getField(di, _this.ks.fields.start));
238
+ utils_1.setField(updated, _this.ks.fields.end, utils_1.getField(di, _this.ks.fields.end));
239
+ return updated;
240
+ });
241
+ } else {
242
+ var updated = kendo_vue_common_1.clone(this.compDragItem);
243
+ utils_1.setField(updated, this.ks.fields.start, utils_1.getField(this.compDragItem, this.ks.fields.start));
244
+ utils_1.setField(updated, this.ks.fields.end, utils_1.getField(this.compDragItem, this.ks.fields.end));
245
+ newDataItems = updated;
246
+ }
247
+
248
+ this.currentDragItem = null;
249
+
250
+ if (newDataItems) {
251
+ this.$emit('dataaction', {
252
+ type: main_1.DATA_ACTION.update,
253
+ series: true,
254
+ dataItem: newDataItems
255
+ });
256
+ }
257
+
258
+ break;
259
+ }
260
+
261
+ default:
262
+ this.currentDragItem = this.compDragItem;
263
+ break;
264
+ }
35
265
 
36
- exports.useDragItem = function (_config, _state) {
37
- // const offset = React.useRef<number>(0);
38
- // const initialXRef = React.useRef<number>(0);
39
- // const initialYRef = React.useRef<number>(0);
40
- // const oldSlot = React.useRef<HTMLElement | null>(null);
41
- // const [dragItem, setDragItem] = useControlledState<DataItem | null | (DataItem | null)[]>(...state);
42
- // const [selectedItems] = useSchedulerViewSelectedItemsContext();
43
- // const fields = useSchedulerFieldsContext();
44
- // const groups = useSchedulerGroupsContext();
45
- // const handleDragItemAction = (action: SchedulerItemDragItemAction) => {
46
- // switch(action.type) {
47
- // case DRAG_ITEM_ACTION.set:{
48
- // setDragItem(action.payload);
49
- // break;
50
- // }
51
- // case DRAG_ITEM_ACTION.reset:{
52
- // setDragItem(null);
53
- // break;
54
- // }
55
- // case DRAG_ITEM_ACTION.dragSelected: {
56
- // if (
57
- // Math.abs(initialXRef.current - action.payload.x) < 10
58
- // && Math.abs(initialYRef.current - action.payload.y) < 10
59
- // ) {
60
- // return;
61
- // }
62
- // const slot: HTMLElement | null = slotDive(action.payload.x, action.payload.y, 7);
63
- // if (!slot) { return; }
64
- // if (slot === oldSlot.current) { return; }
65
- // const dataItem = clone(config.dataItem);
66
- // const slotStart = slot.getAttribute('data-slot-start');
67
- // const slotIsAllDay = slot.getAttribute('data-slot-allday') === 'true';
68
- // if (!config.ignoreIsAllDay && slotIsAllDay !== config.isAllDay) { return; }
69
- // const itemStart = new Date(getField(dataItem, fields.start));
70
- // const distance = Number(slotStart) - itemStart.getTime();
71
- // const newDragItems = selectedItems.map((si) => {
72
- // if(!si.current) {return null;}
73
- // const selectedDataItem = clone(si.current.props.dataItem);
74
- // const selectedStart = new Date(si.current.props.start.getTime() + distance);
75
- // const selectedEnd = new Date(si.current.props.end.getTime() + distance);
76
- // setField(selectedDataItem, fields.start, selectedStart);
77
- // setField(selectedDataItem, fields.end, selectedEnd);
78
- // return selectedDataItem;
79
- // }).filter(Boolean);
80
- // oldSlot.current = slot;
81
- // setDragItem([...newDragItems]);
82
- // break;
83
- // }
84
- // case DRAG_ITEM_ACTION.start: {
85
- // const clientX = action.payload.x;
86
- // const clientY = action.payload.y;
87
- // initialXRef.current = clientX;
88
- // initialYRef.current = clientY;
89
- // const slot: HTMLElement | null = slotDive(clientX, clientY, 7);
90
- // if (!slot) { return; }
91
- // const dataItem = clone(config.dataItem);
92
- // const slotStart = slot.getAttribute('data-slot-start');
93
- // const itemStart = getField(dataItem, fields.start);
94
- // if (slotStart === null) { return; }
95
- // offset.current = Number(slotStart) - new Date(itemStart).getTime();
96
- // break;
97
- // }
98
- // case DRAG_ITEM_ACTION.drag: {
99
- // if (
100
- // Math.abs(initialXRef.current - action.payload.x) < 10
101
- // && Math.abs(initialYRef.current - action.payload.y) < 10
102
- // ) {
103
- // return;
104
- // }
105
- // const slot: HTMLElement | null = slotDive(action.payload.x, action.payload.y, 7);
106
- // if (!slot) { return; }
107
- // if (slot === oldSlot.current) { return; }
108
- // const dataItem = clone(config.dataItem);
109
- // const slotStart = slot.getAttribute('data-slot-start');
110
- // const slotGroupIndex = slot.getAttribute('data-slot-group');
111
- // const slotIsAllDay = slot.getAttribute('data-slot-allday') === 'true';
112
- // if (!config.ignoreIsAllDay && slotIsAllDay !== config.isAllDay) { return; }
113
- // const itemStart = new Date(getField(dataItem, fields.start));
114
- // const itemEnd = new Date(getField(dataItem, fields.end));
115
- // const duration = itemEnd.getTime() - itemStart.getTime();
116
- // const start = new Date(Number(slotStart) - Number(offset.current));
117
- // const end = new Date(Number(slotStart) - Number(offset.current) + duration);
118
- // const group = groups.find((g) => g.index === Number(slotGroupIndex));
119
- // setField(dataItem, fields.start, start);
120
- // setField(dataItem, fields.end, end);
121
- // if (group && groups.length > 1) {
122
- // group.resources.forEach((resource) => {
123
- // if (!resource.multiple) {
124
- // setField(dataItem, resource.field, resource[resource.valueField]);
125
- // }
126
- // });
127
- // }
128
- // oldSlot.current = slot;
129
- // if (dataItem) {
130
- // setDragItem(dataItem);
131
- // }
132
- // break;
133
- // }
134
- // case DRAG_ITEM_ACTION.complete: {
135
- // setDragItem(null);
136
- // if(config.onDataAction && dragItem) {
137
- // config.onDataAction.call(undefined,{
138
- // type: DATA_ACTION.update,
139
- // series: false,
140
- // dataItem: dragItem
141
- // });
142
- // }
143
- // break;
144
- // }
145
- // case DRAG_ITEM_ACTION.completeOccurrence: {
146
- // const newDataItem = Array.isArray(dragItem) ? dragItem.slice() : clone(dragItem);
147
- // setDragItem(null);
148
- // if(config.onDataAction && dragItem) {
149
- // config.onDataAction.call(undefined,{
150
- // type: DATA_ACTION.update,
151
- // series: false,
152
- // dataItem: newDataItem
153
- // });
154
- // }
155
- // break;
156
- // }
157
- // case DRAG_ITEM_ACTION.completeSeries: {
158
- // let newDataItems;
159
- // if(Array.isArray(dragItem)) {
160
- // newDataItems = dragItem.map((di) => {
161
- // const updated = clone(di);
162
- // setField(updated, fields.start, getField(di, fields.start));
163
- // setField(updated, fields.end, getField(di, fields.end));
164
- // return updated;
165
- // });
166
- // } else {
167
- // const updated = clone(dragItem);
168
- // setField(updated, fields.start, getField(dragItem, fields.start));
169
- // setField(updated, fields.end, getField(dragItem, fields.end));
170
- // newDataItems = updated;
171
- // }
172
- // setDragItem(null);
173
- // if(config.onDataAction && newDataItems) {
174
- // config.onDataAction.call(undefined,{
175
- // type: DATA_ACTION.update,
176
- // series: true,
177
- // dataItem: newDataItems
178
- // });
179
- // }
180
- // break;
181
- // }
182
- // default:
183
- // setDragItem(dragItem);
184
- // break;
185
- // }
186
- // };
187
- // return [dragItem, setDragItem, handleDragItemAction];
188
- return [];
266
+ this.$emit('dragitemchange', this.currentDragItem);
189
267
  };
@@ -23,5 +23,6 @@ export declare type SchedulerItemShowOccurrenceDialogAction = {
23
23
  type: SHOW_OCCURRENCE_DIALOG_ACTION;
24
24
  payload?: boolean;
25
25
  };
26
+ export declare const showOccurrenceDialogReducer: (state: any, action: SchedulerItemShowOccurrenceDialogAction) => any;
26
27
  /** @hidden */
27
28
  export declare const useShowOccurrenceDialog: (_defaultProp: DataItem, _prop?: DataItem, _callback?: any) => any[];