@progress/kendo-vue-scheduler 10.2.0-develop.10 → 10.2.0-develop.12

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 (156) hide show
  1. package/Scheduler.d.ts +157 -56
  2. package/Scheduler.js +1 -1
  3. package/Scheduler.mjs +242 -214
  4. package/components/EventOverviewPopover.d.ts +62 -0
  5. package/components/EventOverviewPopover.js +8 -0
  6. package/components/EventOverviewPopover.mjs +191 -0
  7. package/components/MoreEventsPopover.d.ts +3 -1
  8. package/components/MoreEventsPopover.js +1 -1
  9. package/components/MoreEventsPopover.mjs +31 -27
  10. package/components/SchedulerActionButtons.js +1 -1
  11. package/components/SchedulerActionButtons.mjs +1 -0
  12. package/components/SchedulerForm.d.ts +412 -2
  13. package/components/SchedulerForm.js +1 -1
  14. package/components/SchedulerForm.mjs +162 -60
  15. package/components/SchedulerQuickCreateForm.d.ts +118 -0
  16. package/components/SchedulerQuickCreateForm.js +8 -0
  17. package/components/SchedulerQuickCreateForm.mjs +249 -0
  18. package/constants/main.d.ts +2 -0
  19. package/constants/main.js +1 -1
  20. package/constants/main.mjs +10 -9
  21. package/dist/cdn/js/kendo-vue-scheduler.js +1 -1
  22. package/editors/KeepResetCustomEventsDialog.d.ts +31 -0
  23. package/editors/KeepResetCustomEventsDialog.js +8 -0
  24. package/editors/KeepResetCustomEventsDialog.mjs +72 -0
  25. package/editors/SchedulerFormEditor.d.ts +151 -52
  26. package/editors/SchedulerFormEditor.js +1 -1
  27. package/editors/SchedulerFormEditor.mjs +192 -139
  28. package/editors/SchedulerRecurrenceDialog.d.ts +2 -2
  29. package/editors/SchedulerRecurrenceDialog.js +1 -1
  30. package/editors/SchedulerRecurrenceDialog.mjs +126 -131
  31. package/editors/ZonedSplitDateTime.d.ts +32 -3
  32. package/editors/ZonedSplitDateTime.js +1 -1
  33. package/editors/ZonedSplitDateTime.mjs +112 -47
  34. package/hooks/useCloseOnAnchorScrollOut.d.ts +10 -0
  35. package/hooks/useCloseOnAnchorScrollOut.js +8 -0
  36. package/hooks/useCloseOnAnchorScrollOut.mjs +43 -0
  37. package/hooks/useCustomEventsConfirmation.d.ts +20 -0
  38. package/hooks/useCustomEventsConfirmation.js +8 -0
  39. package/hooks/useCustomEventsConfirmation.mjs +48 -0
  40. package/hooks/useDeferredClick.d.ts +12 -0
  41. package/hooks/useDeferredClick.js +8 -0
  42. package/hooks/useDeferredClick.mjs +22 -0
  43. package/hooks/useExclusivePopover.d.ts +26 -0
  44. package/hooks/useExclusivePopover.js +8 -0
  45. package/hooks/useExclusivePopover.mjs +30 -0
  46. package/hooks/useRecurrenceSummary.d.ts +3 -0
  47. package/hooks/useRecurrenceSummary.js +1 -1
  48. package/hooks/useRecurrenceSummary.mjs +68 -41
  49. package/index.d.mts +4 -2
  50. package/index.d.ts +4 -2
  51. package/index.js +1 -1
  52. package/index.mjs +83 -78
  53. package/items/SchedulerEditItem.d.ts +116 -12
  54. package/items/SchedulerEditItem.js +1 -1
  55. package/items/SchedulerEditItem.mjs +212 -131
  56. package/items/SchedulerItem.d.ts +2 -1
  57. package/items/SchedulerItem.js +1 -1
  58. package/items/SchedulerItem.mjs +28 -23
  59. package/items/SchedulerProportionalViewItem.d.ts +1 -0
  60. package/items/SchedulerProportionalViewItem.js +1 -1
  61. package/items/SchedulerProportionalViewItem.mjs +83 -68
  62. package/items/SchedulerViewItem.d.ts +1 -0
  63. package/items/SchedulerViewItem.js +1 -1
  64. package/items/SchedulerViewItem.mjs +84 -75
  65. package/items/hooks/use-drag-item.js +1 -1
  66. package/items/hooks/use-drag-item.mjs +49 -48
  67. package/items/hooks/use-form-item.d.ts +1 -1
  68. package/items/hooks/use-remove-item.d.ts +1 -1
  69. package/items/hooks/use-resize-item.js +1 -1
  70. package/items/hooks/use-resize-item.mjs +74 -65
  71. package/messages/main.d.ts +42 -0
  72. package/messages/main.js +1 -1
  73. package/messages/main.mjs +303 -275
  74. package/models/InternalDataAction.d.ts +13 -0
  75. package/models/SchedulerView.d.ts +1 -1
  76. package/package-metadata.js +1 -1
  77. package/package-metadata.mjs +2 -2
  78. package/package.json +13 -12
  79. package/recurrence/RecurrenceEditor.js +1 -1
  80. package/recurrence/RecurrenceEditor.mjs +42 -42
  81. package/recurrence/common.d.ts +10 -0
  82. package/recurrence/common.js +1 -1
  83. package/recurrence/common.mjs +39 -35
  84. package/services/itemsService.d.ts +5 -2
  85. package/services/itemsService.js +1 -1
  86. package/services/itemsService.mjs +46 -33
  87. package/services/occurrenceService.js +1 -1
  88. package/services/occurrenceService.mjs +18 -18
  89. package/slots/SchedulerEditSlot.d.ts +70 -8
  90. package/slots/SchedulerEditSlot.js +1 -1
  91. package/slots/SchedulerEditSlot.mjs +222 -141
  92. package/slots/SchedulerSlot.js +1 -1
  93. package/slots/SchedulerSlot.mjs +20 -16
  94. package/slots/SchedulerViewSlot.d.ts +3 -0
  95. package/slots/SchedulerViewSlot.js +1 -1
  96. package/slots/SchedulerViewSlot.mjs +21 -15
  97. package/tasks/SchedulerEditTask.d.ts +13 -2
  98. package/tasks/SchedulerEditTask.js +1 -1
  99. package/tasks/SchedulerEditTask.mjs +45 -30
  100. package/utils/main.d.ts +27 -0
  101. package/utils/main.js +1 -1
  102. package/utils/main.mjs +172 -136
  103. package/views/agenda/AgendaView.d.ts +6 -2
  104. package/views/agenda/AgendaView.js +1 -1
  105. package/views/agenda/AgendaView.mjs +31 -29
  106. package/views/agenda/AgendaViewBody.d.ts +3 -3
  107. package/views/agenda/AgendaViewBody.js +1 -1
  108. package/views/agenda/AgendaViewBody.mjs +31 -29
  109. package/views/common/SchedulerDrag.d.ts +4 -2
  110. package/views/common/SchedulerDrag.js +1 -1
  111. package/views/common/SchedulerDrag.mjs +8 -7
  112. package/views/common/SchedulerResize.d.ts +4 -2
  113. package/views/common/SchedulerResize.js +1 -1
  114. package/views/common/SchedulerResize.mjs +14 -12
  115. package/views/common/VerticalResourceIterator.d.ts +3 -3
  116. package/views/common/VerticalResourceIterator.js +1 -1
  117. package/views/common/VerticalResourceIterator.mjs +34 -33
  118. package/views/day/DayView.d.ts +2 -0
  119. package/views/day/DayView.js +1 -1
  120. package/views/day/DayView.mjs +9 -7
  121. package/views/day/DayViewAllDaySlots.d.ts +7 -5
  122. package/views/day/DayViewAllDaySlots.js +1 -1
  123. package/views/day/DayViewAllDaySlots.mjs +24 -21
  124. package/views/day/DayViewMiddleRow.d.ts +7 -5
  125. package/views/day/DayViewMiddleRow.js +1 -1
  126. package/views/day/DayViewMiddleRow.mjs +18 -13
  127. package/views/day/DayViewVerticalRow.d.ts +7 -5
  128. package/views/day/DayViewVerticalRow.js +1 -1
  129. package/views/day/DayViewVerticalRow.mjs +23 -17
  130. package/views/day/DayViewVerticalSlotsRow.d.ts +7 -5
  131. package/views/day/DayViewVerticalSlotsRow.js +1 -1
  132. package/views/day/DayViewVerticalSlotsRow.mjs +34 -29
  133. package/views/day/MultiDayView.d.ts +13 -7
  134. package/views/day/MultiDayView.js +1 -1
  135. package/views/day/MultiDayView.mjs +108 -95
  136. package/views/month/MonthView.d.ts +15 -4
  137. package/views/month/MonthView.js +1 -1
  138. package/views/month/MonthView.mjs +105 -68
  139. package/views/month/MonthViewBody.d.ts +3 -3
  140. package/views/month/MonthViewBody.js +1 -1
  141. package/views/month/MonthViewBody.mjs +18 -16
  142. package/views/time/MultiDayTimelineView.d.ts +6 -4
  143. package/views/time/MultiDayTimelineView.js +1 -1
  144. package/views/time/MultiDayTimelineView.mjs +64 -63
  145. package/views/time/TimelineView.d.ts +2 -0
  146. package/views/time/TimelineView.js +1 -1
  147. package/views/time/TimelineView.mjs +5 -3
  148. package/views/time/TimelineViewBody.d.ts +7 -5
  149. package/views/time/TimelineViewBody.js +1 -1
  150. package/views/time/TimelineViewBody.mjs +29 -27
  151. package/views/week/WeekView.d.ts +2 -0
  152. package/views/week/WeekView.js +1 -1
  153. package/views/week/WeekView.mjs +11 -10
  154. package/views/week/WorkWeekView.d.ts +2 -0
  155. package/views/week/WorkWeekView.js +1 -1
  156. package/views/week/WorkWeekView.mjs +17 -16
@@ -5,28 +5,29 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- import { defineComponent as U, createVNode as e, Fragment as S, isVNode as X } from "vue";
9
- import { timezoneNames as ee } from "@progress/kendo-date-math";
10
- import { Label as u } from "@progress/kendo-vue-labels";
11
- import { provideLocalizationService as b, provideIntlService as te } from "@progress/kendo-vue-intl";
12
- import { FormElement as ie, FieldWrapper as m, Field as l } from "@progress/kendo-vue-form";
13
- import { TextArea as re, Switch as ne, TextBox as oe } from "@progress/kendo-vue-inputs";
14
- import { getDefaultSlots as le, SvgIcon as h } from "@progress/kendo-vue-common";
15
- import { rightDoubleQuotesIcon as se, clockIcon as ae, globeIcon as D, arrowRotateCwIcon as de, commentIcon as ce } from "@progress/kendo-svg-icons";
16
- import { Button as a } from "@progress/kendo-vue-buttons";
17
- import { Dialog as ue, DialogActionsBar as me } from "@progress/kendo-vue-dialogs";
18
- import { editorValidationRequired as E, messages as r, editorEventAllDay as L, editorEventTitle as f, editorEventStart as g, editorDateConnectorTo as p, editorEventEnd as k, editorStartTimeAriaLabel as w, editorDateConnectorFrom as y, editorSetTimezoneTitle as C, editorTimezoneButton as A, editorEventStartTimeZone as I, editorResetTimezoneAriaLabel as x, editorResetTimezoneTitle as B, editorEndTimeAriaLabel as j, editorEventEndTimeZone as O, editorEventDescription as T, resetTimezoneDialogTitle as M, resetTimezoneConfirmation as V, resetTimezoneNo as $, resetTimezoneYes as q, editorRecurrenceMakeRecurring as G } from "../messages/main.mjs";
19
- import { RecurrenceEditor as he } from "../recurrence/RecurrenceEditor.mjs";
20
- import { ResourceEditor as fe } from "./ResourceEditor.mjs";
21
- import { ZonedSplitDateTime as _ } from "./ZonedSplitDateTime.mjs";
22
- import { TimezoneDropDownList as N } from "./TimezoneDropDownList.mjs";
23
- import { SchedulerRecurrenceDialog as ge } from "./SchedulerRecurrenceDialog.mjs";
24
- import { RemoveRecurrenceConfirmDialog as pe } from "./RemoveRecurrenceConfirmDialog.mjs";
25
- import { getRecurrenceSummary as ke } from "../hooks/useRecurrenceSummary.mjs";
26
- function z(t) {
27
- return typeof t == "function" || Object.prototype.toString.call(t) === "[object Object]" && !X(t);
8
+ import { defineComponent as ee, createVNode as e, Fragment as b, inject as w, provide as te, watch as re, isVNode as ie } from "vue";
9
+ import { timezoneNames as ne, MS_PER_DAY as oe } from "@progress/kendo-date-math";
10
+ import { parseRule as se } from "@progress/kendo-recurrence";
11
+ import { Label as f } from "@progress/kendo-vue-labels";
12
+ import { provideLocalizationService as y, provideIntlService as le } from "@progress/kendo-vue-intl";
13
+ import { FormElement as ae, FieldWrapper as g, Field as u } from "@progress/kendo-vue-form";
14
+ import { TextArea as ue, Switch as de, TextBox as ce } from "@progress/kendo-vue-inputs";
15
+ import { getDefaultSlots as me, SvgIcon as p } from "@progress/kendo-vue-common";
16
+ import { rightDoubleQuotesIcon as he, clockIcon as fe, globeIcon as C, arrowRotateCwIcon as ge, commentIcon as pe } from "@progress/kendo-svg-icons";
17
+ import { Button as h } from "@progress/kendo-vue-buttons";
18
+ import { Dialog as Te, DialogActionsBar as ke } from "@progress/kendo-vue-dialogs";
19
+ import { editorValidationRequired as A, messages as n, editorEventAllDay as I, editorEventTitle as T, editorEventStart as k, editorDateConnectorTo as R, editorEventEnd as z, editorStartTimeAriaLabel as x, editorDateConnectorFrom as j, editorSetTimezoneTitle as O, editorTimezoneButton as B, editorEventStartTimeZone as G, editorResetTimezoneAriaLabel as M, editorResetTimezoneTitle as V, editorEndTimeAriaLabel as $, editorEventEndTimeZone as q, editorEventDescription as S, resetTimezoneDialogTitle as _, resetTimezoneConfirmation as N, resetTimezoneNo as P, resetTimezoneYes as Z, editorRecurrenceEdit as Re, editorRecurrenceMakeRecurring as ze } from "../messages/main.mjs";
20
+ import { RecurrenceEditor as Se } from "../recurrence/RecurrenceEditor.mjs";
21
+ import { ResourceEditor as ve } from "./ResourceEditor.mjs";
22
+ import { ZonedSplitDateTime as K, readDateAsLocal as L, dayValue as W, readDateWithTimezone as De } from "./ZonedSplitDateTime.mjs";
23
+ import { TimezoneDropDownList as Y } from "./TimezoneDropDownList.mjs";
24
+ import { SchedulerRecurrenceDialog as Fe } from "./SchedulerRecurrenceDialog.mjs";
25
+ import { RemoveRecurrenceConfirmDialog as Ee } from "./RemoveRecurrenceConfirmDialog.mjs";
26
+ import { renderRecurrenceSummary as be, getRecurrenceSummary as ye } from "../hooks/useRecurrenceSummary.mjs";
27
+ function v(t) {
28
+ return typeof t == "function" || Object.prototype.toString.call(t) === "[object Object]" && !ie(t);
28
29
  }
29
- const Oe = /* @__PURE__ */ U({
30
+ const We = /* @__PURE__ */ ee({
30
31
  name: "KendoSchedulerFormEditor",
31
32
  props: {
32
33
  as: [String, Function, Object],
@@ -35,31 +36,31 @@ const Oe = /* @__PURE__ */ U({
35
36
  titleEditor: {
36
37
  type: [String, Function, Object],
37
38
  default: function() {
38
- return oe;
39
+ return ce;
39
40
  }
40
41
  },
41
42
  startEditor: {
42
43
  type: [String, Function, Object],
43
44
  default: function() {
44
- return _;
45
+ return K;
45
46
  }
46
47
  },
47
48
  startTimezoneEditor: {
48
49
  type: [String, Function, Object],
49
50
  default: function() {
50
- return N;
51
+ return Y;
51
52
  }
52
53
  },
53
54
  endEditor: {
54
55
  type: [String, Function, Object],
55
56
  default: function() {
56
- return _;
57
+ return K;
57
58
  }
58
59
  },
59
60
  endTimezoneEditor: {
60
61
  type: [String, Function, Object],
61
62
  default: function() {
62
- return N;
63
+ return Y;
63
64
  }
64
65
  },
65
66
  allDayLabel: {
@@ -71,25 +72,25 @@ const Oe = /* @__PURE__ */ U({
71
72
  allDayEditor: {
72
73
  type: [String, Function, Object],
73
74
  default: function() {
74
- return ne;
75
+ return de;
75
76
  }
76
77
  },
77
78
  recurrenceEditor: {
78
79
  type: [String, Function, Object],
79
80
  default: function() {
80
- return he;
81
+ return Se;
81
82
  }
82
83
  },
83
84
  descriptionEditor: {
84
85
  type: [String, Function, Object],
85
86
  default: function() {
86
- return re;
87
+ return ue;
87
88
  }
88
89
  },
89
90
  resourceEditor: {
90
91
  type: [String, Function, Object],
91
92
  default: function() {
92
- return fe;
93
+ return ve;
93
94
  }
94
95
  },
95
96
  recurrenceButtonTextTemplate: [Object, Function],
@@ -113,19 +114,54 @@ const Oe = /* @__PURE__ */ U({
113
114
  kendoForm: {
114
115
  default: {}
115
116
  },
117
+ kendoIntlService: {
118
+ default: null
119
+ },
116
120
  kendoLocalizationService: {
117
121
  default: null
118
122
  }
119
123
  },
120
124
  data() {
121
- const t = this.kendoForm, n = this.ks;
125
+ const t = this.kendoForm, r = this.ks;
122
126
  return {
123
- showTimezones: !!t.valueGetter(n.fields.startTimezone),
127
+ showTimezones: !!t.valueGetter(r.fields.startTimezone),
124
128
  showTimezoneResetDialog: !1,
125
129
  showRecurrenceDialog: !1,
126
130
  showRemoveRecurrenceDialog: !1
127
131
  };
128
132
  },
133
+ setup() {
134
+ const t = w("ks"), r = w("kendoForm");
135
+ let s = null, d;
136
+ te("schedulerEndAdjustment", (o) => (d = o, () => {
137
+ d === o && (d = void 0);
138
+ }));
139
+ const c = () => {
140
+ const o = r.valueGetter(t.fields.start), a = r.valueGetter(t.fields.end);
141
+ o instanceof Date && a instanceof Date && Number.isFinite(o.getTime()) && Number.isFinite(a.getTime()) && a.getTime() >= o.getTime() && (s = {
142
+ start: new Date(o),
143
+ end: new Date(a)
144
+ });
145
+ }, i = () => {
146
+ const o = r.valueGetter(t.fields.start);
147
+ if (!s || !(o instanceof Date) || !Number.isFinite(o.getTime()))
148
+ return;
149
+ let a = new Date(o.getTime() + s.end.getTime() - s.start.getTime());
150
+ if (r.valueGetter(t.fields.isAllDay)) {
151
+ const D = L(s.start, t.timezone), F = L(o, t.timezone), m = new Date(L(s.end, t.timezone));
152
+ m.setDate(m.getDate() + Math.round((W(F) - W(D)) / oe)), a = De(m, t.timezone);
153
+ }
154
+ r.onChange(t.fields.end, {
155
+ value: d ? d(a) : a
156
+ }), c();
157
+ };
158
+ return c(), re([() => r.valueGetter(t.fields.start), () => r.valueGetter(t.fields.end)], c, {
159
+ flush: "post"
160
+ }), {
161
+ handleStartChange: i,
162
+ updatePreviousRange: c
163
+ };
164
+ },
129
165
  computed: {
130
166
  isAllDay() {
131
167
  return !!this.kendoForm.valueGetter(this.ks.fields.isAllDay);
@@ -149,43 +185,54 @@ const Oe = /* @__PURE__ */ U({
149
185
  return !this.isEditingOccurrence;
150
186
  },
151
187
  recurrenceButtonText() {
152
- const t = te(this), n = b(this), s = (c, i) => n.toLanguageString(c, i), d = n.toLanguageString(G, r[G]);
153
- return this.recurrenceRule && ke(this.recurrenceRule, this.start, t, s) || d;
188
+ const t = y(this), r = this.recurrenceRule ? Re : ze;
189
+ return t.toLanguageString(r, n[r]);
190
+ },
191
+ recurrenceSummaryText() {
192
+ if (!this.recurrenceRule)
193
+ return "";
194
+ const t = le(this), r = y(this);
195
+ return ye(this.recurrenceRule, this.start, t, (s, d) => r.toLanguageString(s, d));
196
+ },
197
+ parsedRecurrenceRule() {
198
+ return this.recurrenceRule ? se({
199
+ recurrenceRule: this.recurrenceRule
200
+ }) : null;
154
201
  }
155
202
  },
156
203
  render() {
157
- let t, n, s;
158
- const d = le(this), c = ee(), i = b(this), v = this.$props.startEditor, F = this.$props.endEditor, Z = this.$props.startTimezoneEditor, K = this.$props.endTimezoneEditor, Q = this.$props.allDayEditor, W = this.$props.allDayLabel, Y = this.$props.descriptionEditor, H = this.$props.resourceEditor, J = this.$props.titleEditor, P = this.startTimezone;
159
- this.requiredValidationMessage = i.toLanguageString(E, r[E]);
160
- const R = i.toLanguageString(L, r[L]);
161
- return e(S, null, [e(ie, {
204
+ let t, r, s;
205
+ const d = me(this), c = ne(), i = y(this), o = this.$props.startEditor, a = this.$props.endEditor, D = this.$props.startTimezoneEditor, F = this.$props.endTimezoneEditor, m = this.$props.allDayEditor, Q = this.$props.allDayLabel, H = this.$props.descriptionEditor, J = this.$props.resourceEditor, U = this.$props.titleEditor, X = this.startTimezone;
206
+ this.requiredValidationMessage = i.toLanguageString(A, n[A]);
207
+ const E = i.toLanguageString(I, n[I]);
208
+ return e(b, null, [e(ae, {
162
209
  horizontal: !0,
163
210
  class: "k-scheduler-edit-form"
164
211
  }, {
165
- default: () => [e(m, null, {
166
- default: () => [e(u, {
212
+ default: () => [e(g, null, {
213
+ default: () => [e(f, {
167
214
  class: "k-form-label"
168
215
  }, {
169
- default: () => [e(h, {
170
- icon: se,
216
+ default: () => [e(p, {
217
+ icon: he,
171
218
  size: "xlarge"
172
219
  }, null)]
173
220
  }), e("div", {
174
221
  class: "k-form-field-wrap"
175
- }, [e(l, {
222
+ }, [e(u, {
176
223
  id: "k-scheduler-editor-title",
177
224
  name: this.ks.fields.title,
178
225
  field: this.ks.fields.title,
179
- component: J,
180
- placeholder: i.toLanguageString(f, r[f]),
181
- "aria-label": i.toLanguageString(f, r[f])
226
+ component: U,
227
+ placeholder: i.toLanguageString(T, n[T]),
228
+ "aria-label": i.toLanguageString(T, n[T])
182
229
  }, null)])]
183
- }), e(m, null, {
184
- default: () => [e(u, {
230
+ }), e(g, null, {
231
+ default: () => [e(f, {
185
232
  class: "k-form-label"
186
233
  }, {
187
- default: () => [e(h, {
188
- icon: ae,
234
+ default: () => [e(p, {
235
+ icon: fe,
189
236
  size: "xlarge"
190
237
  }, null)]
191
238
  }), e("div", {
@@ -194,138 +241,142 @@ const Oe = /* @__PURE__ */ U({
194
241
  class: "k-scheduler-datetime-section"
195
242
  }, [e("div", {
196
243
  class: "k-scheduler-edit-form-row"
197
- }, [e(l, {
244
+ }, [e(u, {
198
245
  name: this.ks.fields.isAllDay,
199
- component: Q,
246
+ component: m,
200
247
  onLabel: "",
201
248
  offLabel: ""
202
- }, null), e(W, null, z(R) ? R : {
203
- default: () => [R]
249
+ }, null), e(Q, null, v(E) ? E : {
250
+ default: () => [E]
204
251
  })]), e("div", {
205
252
  class: "k-scheduler-datetime-grid"
206
253
  }, [this.isAllDay ? e("div", {
207
254
  class: "k-scheduler-edit-form-row"
208
- }, [e(l, {
255
+ }, [e(u, {
209
256
  name: this.ks.fields.start,
210
- component: v,
257
+ component: o,
258
+ onChange: this.handleStartChange,
211
259
  isAllDay: this.isAllDay,
212
260
  fieldError: this.kendoForm.errors[this.ks.fields.start],
213
- ariaLabel: i.toLanguageString(g, r[g]),
261
+ ariaLabel: i.toLanguageString(k, n[k]),
214
262
  timezone: this.ks.timezone
215
263
  }, null), e("span", {
216
264
  class: "k-scheduler-datetime-label"
217
- }, [i.toLanguageString(p, r[p])]), e(l, {
265
+ }, [i.toLanguageString(R, n[R])]), e(u, {
218
266
  name: this.ks.fields.end,
219
- component: F,
267
+ component: a,
268
+ onChange: this.updatePreviousRange,
220
269
  isAllDay: this.isAllDay,
221
270
  fieldError: this.kendoForm.errors[this.ks.fields.end],
222
- ariaLabel: i.toLanguageString(k, r[k]),
271
+ ariaLabel: i.toLanguageString(z, n[z]),
223
272
  timezone: this.ks.timezone
224
- }, null)]) : e(S, null, [e("div", {
273
+ }, null)]) : e(b, null, [e("div", {
225
274
  class: "k-scheduler-edit-form-row"
226
- }, [e(l, {
275
+ }, [e(u, {
227
276
  name: this.ks.fields.start,
228
- component: v,
277
+ component: o,
278
+ onChange: this.handleStartChange,
229
279
  isAllDay: this.isAllDay,
230
- connector: i.toLanguageString(y, r[y]),
280
+ connector: i.toLanguageString(j, n[j]),
231
281
  fieldError: this.kendoForm.errors[this.ks.fields.start],
232
- ariaLabel: i.toLanguageString(g, r[g]),
233
- timeAriaLabel: i.toLanguageString(w, r[w]),
282
+ ariaLabel: i.toLanguageString(k, n[k]),
283
+ timeAriaLabel: i.toLanguageString(x, n[x]),
234
284
  timezone: this.ks.timezone
235
- }, null)]), !this.showTimezones && e(a, {
285
+ }, null)]), !this.showTimezones && e(h, {
236
286
  class: "k-col-span-2",
237
287
  fillMode: "flat",
238
288
  themeColor: "primary",
239
- title: i.toLanguageString(C, r[C]),
289
+ title: i.toLanguageString(O, n[O]),
240
290
  onClick: this.handleTimezoneToggle,
241
- svgIcon: D
242
- }, z(t = i.toLanguageString(A, r[A])) ? t : {
291
+ svgIcon: C
292
+ }, v(t = i.toLanguageString(B, n[B])) ? t : {
243
293
  default: () => [t]
244
- }), this.showTimezones && e(S, null, [e(l, {
294
+ }), this.showTimezones && e(b, null, [e(u, {
245
295
  name: this.ks.fields.startTimezone,
246
- component: Z,
296
+ component: D,
247
297
  dataItems: c,
248
- value: P,
249
- ariaLabel: i.toLanguageString(I, r[I])
250
- }, null), e(a, {
251
- title: i.toLanguageString(B, r[B]),
252
- "aria-label": i.toLanguageString(x, r[x]),
298
+ value: X,
299
+ ariaLabel: i.toLanguageString(G, n[G])
300
+ }, null), e(h, {
301
+ title: i.toLanguageString(V, n[V]),
302
+ "aria-label": i.toLanguageString(M, n[M]),
253
303
  onClick: this.handleTimezoneToggle,
254
- svgIcon: D,
304
+ svgIcon: C,
255
305
  fillMode: "flat",
256
306
  themeColor: "primary"
257
307
  }, null)]), e("div", {
258
308
  class: "k-scheduler-edit-form-row"
259
- }, [e(l, {
309
+ }, [e(u, {
260
310
  name: this.ks.fields.end,
261
- component: F,
311
+ component: a,
312
+ onChange: this.updatePreviousRange,
262
313
  isAllDay: this.isAllDay,
263
- connector: i.toLanguageString(p, r[p]),
314
+ connector: i.toLanguageString(R, n[R]),
264
315
  fieldError: this.kendoForm.errors[this.ks.fields.end],
265
- ariaLabel: i.toLanguageString(k, r[k]),
266
- timeAriaLabel: i.toLanguageString(j, r[j]),
316
+ ariaLabel: i.toLanguageString(z, n[z]),
317
+ timeAriaLabel: i.toLanguageString($, n[$]),
267
318
  timezone: this.ks.timezone
268
- }, null)]), this.showTimezones && e(l, {
319
+ }, null)]), this.showTimezones && e(u, {
269
320
  name: this.ks.fields.endTimezone,
270
- component: K,
321
+ component: F,
271
322
  dataItems: c,
272
323
  value: this.kendoForm.valueGetter(this.ks.fields.endTimezone) || "",
273
- ariaLabel: i.toLanguageString(O, r[O])
324
+ ariaLabel: i.toLanguageString(q, n[q])
274
325
  }, null)])]), this.showRecurrenceButton && e("div", {
275
326
  class: "k-scheduler-edit-form-row"
276
- }, [e(a, {
327
+ }, [e(h, {
277
328
  class: "k-scheduler-recurrence-button",
278
329
  type: "button",
279
330
  fillMode: "flat",
280
331
  themeColor: "primary",
281
- svgIcon: de,
332
+ svgIcon: ge,
282
333
  onClick: this.handleMakeRecurringClick
283
334
  }, {
284
- default: () => [this.recurrenceButtonTextTemplate ? this.renderRecurrenceButtonTextTemplate() : this.recurrenceButtonText]
285
- })])])])]
286
- }), e(m, null, {
287
- default: () => [e(u, {
335
+ default: () => [this.recurrenceButtonText]
336
+ }), this.recurrenceRule && (this.recurrenceSummaryTemplate || this.recurrenceSummaryText) && be(this.recurrenceSummaryText, this.renderRecurrenceSummaryTemplate())])])])]
337
+ }), e(g, null, {
338
+ default: () => [e(f, {
288
339
  class: "k-form-label"
289
340
  }, {
290
- default: () => [e(h, {
291
- icon: ce,
341
+ default: () => [e(p, {
342
+ icon: pe,
292
343
  size: "xlarge"
293
344
  }, null)]
294
345
  }), e("div", {
295
346
  class: "k-form-field-wrap"
296
- }, [e(l, {
297
- component: Y,
347
+ }, [e(u, {
348
+ component: H,
298
349
  name: this.ks.fields.description,
299
350
  id: "k-event-description",
300
351
  resizable: "vertical",
301
- placeholder: i.toLanguageString(T, r[T]),
302
- "aria-label": i.toLanguageString(T, r[T])
352
+ placeholder: i.toLanguageString(S, n[S]),
353
+ "aria-label": i.toLanguageString(S, n[S])
303
354
  }, null)])]
304
- }), (this.ks.props.resources || []).map((o) => e(m, {
305
- key: o.field
355
+ }), (this.ks.props.resources || []).map((l) => e(g, {
356
+ key: l.field
306
357
  }, {
307
- default: () => [o.svgIcon && e(u, {
358
+ default: () => [l.svgIcon && e(f, {
308
359
  class: "k-form-label"
309
360
  }, {
310
- default: () => [e(h, {
311
- icon: o.svgIcon,
361
+ default: () => [e(p, {
362
+ icon: l.svgIcon,
312
363
  size: "xlarge"
313
364
  }, null)]
314
365
  }), e("div", {
315
366
  class: "k-form-field-wrap"
316
- }, [e(l, {
317
- name: o.field,
318
- component: H,
319
- resource: o,
320
- multiple: o.multiple,
321
- dataItems: o.data,
322
- textField: o.textField,
323
- valueField: o.valueField,
324
- colorField: o.colorField,
325
- ariaLabel: o.name || o.field
367
+ }, [e(u, {
368
+ name: l.field,
369
+ component: J,
370
+ resource: l,
371
+ multiple: l.multiple,
372
+ dataItems: l.data,
373
+ textField: l.textField,
374
+ valueField: l.valueField,
375
+ colorField: l.colorField,
376
+ ariaLabel: l.name || l.field
326
377
  }, null)])]
327
378
  })), d]
328
- }), this.showRecurrenceDialog && e(ge, {
379
+ }), this.showRecurrenceDialog && e(Fe, {
329
380
  value: this.recurrenceRule,
330
381
  start: this.start,
331
382
  timezone: this.ks.timezone || "",
@@ -334,33 +385,35 @@ const Oe = /* @__PURE__ */ U({
334
385
  onRemoveRecurrence: this.handleRemoveRecurrenceClick,
335
386
  recurrenceSummaryTemplate: this.recurrenceSummaryTemplate,
336
387
  recurrenceEditor: this.recurrenceEditor
337
- }, null), this.showRemoveRecurrenceDialog && e(pe, {
388
+ }, null), this.showRemoveRecurrenceDialog && e(Ee, {
338
389
  onConfirm: this.handleRemoveRecurrenceConfirm,
339
390
  onCancel: this.handleRemoveRecurrenceCancel
340
- }, null), this.showTimezoneResetDialog && e(ue, {
341
- title: i.toLanguageString(M, r[M]),
391
+ }, null), this.showTimezoneResetDialog && e(Te, {
392
+ title: i.toLanguageString(_, n[_]),
342
393
  onClose: this.handleTimezoneResetClose
343
394
  }, {
344
- default: () => [i.toLanguageString(V, r[V]), e(me, null, {
345
- default: () => [e(a, {
395
+ default: () => [i.toLanguageString(N, n[N]), e(ke, null, {
396
+ default: () => [e(h, {
346
397
  onClick: this.handleTimezoneResetClose
347
- }, z(n = i.toLanguageString($, r[$])) ? n : {
348
- default: () => [n]
349
- }), e(a, {
398
+ }, v(r = i.toLanguageString(P, n[P])) ? r : {
399
+ default: () => [r]
400
+ }), e(h, {
350
401
  themeColor: "primary",
351
402
  onClick: this.handleTimezoneResetConfirm
352
- }, z(s = i.toLanguageString(q, r[q])) ? s : {
403
+ }, v(s = i.toLanguageString(Z, n[Z])) ? s : {
353
404
  default: () => [s]
354
405
  })]
355
406
  })]
356
407
  })]);
357
408
  },
358
409
  methods: {
359
- renderRecurrenceButtonTextTemplate() {
360
- const t = this.recurrenceButtonTextTemplate;
361
- return t ? e(t, {
362
- recurrenceRule: this.recurrenceRule
363
- }, null) : null;
410
+ renderRecurrenceSummaryTemplate() {
411
+ const t = this.recurrenceSummaryTemplate;
412
+ return !t || !this.recurrenceRule ? null : e(t, {
413
+ recurrenceRule: this.recurrenceRule,
414
+ text: this.recurrenceSummaryText,
415
+ parsedRule: this.parsedRecurrenceRule
416
+ }, null);
364
417
  },
365
418
  handleTimezoneToggle(t) {
366
419
  t.preventDefault(), this.showTimezones ? this.showTimezoneResetDialog = !0 : (this.updateFormField(this.ks.fields.startTimezone, null), this.updateFormField(this.ks.fields.endTimezone, null), this.showTimezones = !0);
@@ -389,29 +442,29 @@ const Oe = /* @__PURE__ */ U({
389
442
  handleRemoveRecurrenceCancel() {
390
443
  this.showRemoveRecurrenceDialog = !1;
391
444
  },
392
- updateFormField(t, n) {
445
+ updateFormField(t, r) {
393
446
  this.kendoForm.onChange(t, {
394
- value: n
447
+ value: r
395
448
  }), this.$emit("change", t, {
396
- value: n
449
+ value: r
397
450
  });
398
451
  },
399
452
  requiredValidator(t) {
400
453
  return t ? void 0 : this.requiredValidationMessage;
401
454
  },
402
- startTimezoneValidator(t, n) {
403
- return this.showTimezones ? this.requiredValidator(n(this.ks.fields.startTimezone)) : void 0;
455
+ startTimezoneValidator(t, r) {
456
+ return this.showTimezones ? this.requiredValidator(r(this.ks.fields.startTimezone)) : void 0;
404
457
  },
405
- endTimezoneValidator(t, n) {
406
- return this.showTimezones ? this.requiredValidator(n(this.ks.fields.endTimezone)) || this.requiredValidator(n(this.ks.fields.startTimezone)) : void 0;
458
+ endTimezoneValidator(t, r) {
459
+ return this.showTimezones ? this.requiredValidator(r(this.ks.fields.endTimezone)) || this.requiredValidator(r(this.ks.fields.startTimezone)) : void 0;
407
460
  }
408
461
  },
409
462
  watch: {
410
- startTimezone(t, n) {
411
- this.showTimezones && t && t !== n && this.updateFormField(this.ks.fields.endTimezone, t);
463
+ startTimezone(t, r) {
464
+ this.showTimezones && t && t !== r && this.updateFormField(this.ks.fields.endTimezone, t);
412
465
  }
413
466
  }
414
467
  });
415
468
  export {
416
- Oe as SchedulerFormEditor
469
+ We as SchedulerFormEditor
417
470
  };
@@ -11,7 +11,7 @@ import { DropDownListChangeEvent } from '@progress/kendo-vue-dropdowns';
11
11
  import { DatePickerChangeEvent } from '@progress/kendo-vue-dateinputs';
12
12
  import { ZonedDate } from '@progress/kendo-date-math';
13
13
  import { RecurrenceRule } from '@progress/kendo-recurrence';
14
- import { PropType } from 'vue';
14
+ import { PropType, VNode } from 'vue';
15
15
  import { Frequency } from '../recurrence/types/Frequency';
16
16
  import { WeekDayEntity } from '../recurrence/types/WeekDayEntity';
17
17
  import { MonthEntity } from '../recurrence/types/MonthEntity';
@@ -100,7 +100,7 @@ declare const SchedulerRecurrenceDialog: import('vue').DefineComponent<import('v
100
100
  parsedCurrentRule(): any;
101
101
  }, {
102
102
  localizeMessage(baseMassage: string, removePrepend?: boolean): string;
103
- renderRecurrenceSummaryTemplate(): import("vue/jsx-runtime").JSX.Element;
103
+ renderRecurrenceSummaryTemplate(): VNode | null;
104
104
  updateRrule(newRrule: RecurrenceRule): void;
105
105
  handleFrequencyChange(newFreq: string): void;
106
106
  handleIntervalChange(event: NumericTextBoxChangeEvent): void;
@@ -5,4 +5,4 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("vue"),C=require("@progress/kendo-vue-dialogs"),D=require("@progress/kendo-vue-buttons"),u=require("@progress/kendo-vue-intl"),m=require("@progress/kendo-vue-inputs"),d=require("@progress/kendo-vue-dropdowns"),V=require("@progress/kendo-vue-dateinputs"),g=require("@progress/kendo-vue-labels"),h=require("@progress/kendo-vue-form"),p=require("@progress/kendo-date-math"),k=require("@progress/kendo-recurrence"),n=require("../messages/main.js"),N=require("../hooks/useRecurrenceSummary.js"),l=require("../recurrence/common.js");function c(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!r.isVNode(e)}const S=r.defineComponent({name:"KendoSchedulerRecurrenceDialog",props:{value:{type:[String,null],default:null},start:{type:Date,required:!0},timezone:{type:String,default:""},onSave:Function,onCancel:Function,onRemoveRecurrence:Function,recurrenceSummaryTemplate:[Object,Function],recurrenceEditor:[Object,Function]},inject:{kendoLocalizationService:{default:null}},setup(){return{kendoLocalizationService:r.inject("kendoLocalizationService",{})}},data(){var a;const e=l.getRule((a=this.value)!=null?a:"");return{rrule:e.freq?e:{freq:"daily",interval:1},defaultCount:1,defaultUntil:p.ZonedDate.fromUTCDate(this.start),startsOn:new Date(this.start)}},computed:{frequency(){return l.getFrequency(this.rrule)},weekDays(){const e=u.provideIntlService(this);return l.getWeekDays(e)},extendedWeekDays(){const e=u.provideIntlService(this);return l.getExtendedWeekDays(e,this.localizeMessage)},weekDay(){return l.getWeekDay(this.extendedWeekDays,this.rrule,this.startsOn)},months(){const e=u.provideIntlService(this);return l.getMonths(e)},month(){return l.getMonth(this.months,this.rrule)},offsets(){return l.getOffsets(this.localizeMessage)},offset(){return l.getOffset(this.offsets,this.rrule)},endRule(){return l.getEndRule(this.rrule)},monthDay(){return l.getMonthDay(this.rrule,this.startsOn)},until(){return this.rrule.until?p.toLocalDate(this.rrule.until):null},repeatOnRule(){return l.getRepeatOnRule(this.rrule)},isExistingRecurrence(){return!!this.value},frequencyData(){return[{text:this.localizeMessage(n.recurrenceEditorFrequenciesDaily,!0),value:"daily"},{text:this.localizeMessage(n.recurrenceEditorFrequenciesWeekly,!0),value:"weekly"},{text:this.localizeMessage(n.recurrenceEditorFrequenciesMonthly,!0),value:"monthly"},{text:this.localizeMessage(n.recurrenceEditorFrequenciesYearly,!0),value:"yearly"}]},endRuleData(){return[{text:this.localizeMessage(n.recurrenceEditorEndNever,!0),value:"never"},{text:this.localizeMessage(n.recurrenceEditorEndAfter,!0),value:"count"},{text:this.localizeMessage(n.recurrenceEditorEndOn,!0),value:"until"}]},frequencyDropDownValue(){return this.frequencyData.find(e=>e.value===this.frequency)||this.frequencyData[0]},endRuleDropDownValue(){return this.endRuleData.find(e=>e.value===this.endRule)||this.endRuleData[0]},narrowWeekDays(){const e=u.provideIntlService(this),t=e.firstDay(),a=e.dateFormatNames({type:"days",nameType:"narrow"}),i=e.dateFormatNames({type:"days",nameType:"wide"}),o=a.map((y,f)=>({narrow:y,wide:i[f],value:f}));return o.slice(t).concat(o.slice(0,t))},selectedWeekDays(){return(this.rrule.byWeekDay||[]).map(({day:e})=>e)},summary(){if(!this.rrule.freq||this.rrule.freq==="never")return"";const e=u.provideIntlService(this),t=u.provideLocalizationService(this),a=k.serializeRule(this.rrule,this.timezone);return N.getRecurrenceSummary(a,this.startsOn,e,(i,o)=>t.toLanguageString(i,o))},currentRuleString(){return!this.rrule.freq||this.rrule.freq==="never"?null:k.serializeRule(this.rrule,this.timezone)},parsedCurrentRule(){return this.currentRuleString?k.parseRule({recurrenceRule:this.currentRuleString}):null}},methods:{localizeMessage(e,t){const a=u.provideLocalizationService(this),i=t?e:"scheduler.recurrenceEditor"+e;return a.toLanguageString(i,n.messages[i])},renderRecurrenceSummaryTemplate(){const e=this.recurrenceSummaryTemplate;return!e||!this.currentRuleString?null:r.createVNode(e,{recurrenceRule:this.currentRuleString,text:this.summary||"",parsedRule:this.parsedCurrentRule},null)},updateRrule(e){this.rrule={...e}},handleFrequencyChange(e){const t={};t.freq=e,t.interval=1,e==="weekly"&&(t.byWeekDay=[{day:p.ZonedDate.fromLocalDate(this.startsOn,this.timezone).getDay(),offset:0}]),(e==="monthly"||e==="yearly")&&(t.byMonthDay=[this.startsOn.getDate()]),e==="yearly"&&(t.byMonth=[this.startsOn.getMonth()+1]),this.updateRrule(t)},handleIntervalChange(e){var t;this.updateRrule({...this.rrule,interval:(t=e.value)!=null?t:1})},handleCountChange(e){const t=e.value,a=t!=null?t:this.defaultCount;this.updateRrule({...this.rrule,count:a}),t!==null&&(this.defaultCount=a)},handleUntilChange(e){if(!e.value)return;const t=p.ZonedDate.fromLocalDate(e.value,this.timezone);this.updateRrule({...this.rrule,until:t}),this.defaultUntil=t},handleWeekDaysChange(e){this.updateRrule({...this.rrule,byWeekDay:this.weekDays.filter(t=>e.some(a=>a===t.value)).map(t=>({offset:0,day:t.value}))})},handleWeekDayChange(e){const t={...this.rrule},a=e.value;typeof a.value=="string"?(t.byWeekDay=l.weekDayRuleFromString(a.value),t.bySetPosition=[this.offset.value]):(t.bySetPosition=void 0,t.byWeekDay=[{day:a.value,offset:this.offset.value}]),this.updateRrule(t)},handleMonthDayChange(e){var t;this.updateRrule({...this.rrule,byMonthDay:[(t=e.value)!=null?t:1]})},handleMonthChange(e){this.updateRrule({...this.rrule,byMonth:[e.value.value]})},handleEndRuleDropDownChange(e){const t=e.value.value,a={...this.rrule};switch(t){case"never":a.until=void 0,a.count=void 0;break;case"count":a.until=void 0,a.count=this.defaultCount;break;case"until":a.until=this.defaultUntil,a.count=void 0;break}this.updateRrule(a)},handleRepeatOnRuleChange(e){const t={...this.rrule};e.value==="monthday"?(t.byWeekDay=void 0,t.bySetPosition=void 0,t.byMonthDay=[this.monthDay]):e.value==="weekday"&&(t.byMonthDay=void 0,typeof this.weekDay.value=="string"?(t.bySetPosition=[this.offset.value],t.byWeekDay=l.weekDayRuleFromString(this.weekDay.value)):t.byWeekDay=[{day:this.weekDay.value,offset:this.offset.value}]),this.updateRrule(t)},handleOffsetChange(e){const t={...this.rrule},a=e.value;if(t.byWeekDay)switch(t.byWeekDay.length){case 7:case 5:case 2:t.bySetPosition=[a.value];break;case 1:t.byWeekDay[0].offset=a.value;break}this.updateRrule(t)},handleFrequencyDropDownChange(e){const t=e.value.value;this.handleFrequencyChange(t)},handleWeekDayButtonClick(e){const t=this.selectedWeekDays.includes(e)?this.selectedWeekDays.filter(a=>a!==e):[...this.selectedWeekDays,e];this.handleWeekDaysChange(t)},handleStartsOnChange(e){e.value&&(this.startsOn=e.value)},handleSave(){const e=u.provideIntlService(this);this.rrule.freq==="never"||!this.rrule.freq?this.$emit("save",null):(this.rrule.weekStart===void 0&&(this.rrule.weekStart=e.firstDay()),this.$emit("save",k.serializeRule(this.rrule,this.timezone)))},handleClose(e){this.$emit("cancel")}},render(){let e,t,a,i,o;const y=u.provideLocalizationService(this),f=y.toLanguageString(n.editorSave,n.messages[n.editorSave]),R=y.toLanguageString(n.editorCancel,n.messages[n.editorCancel]),b=y.toLanguageString(n.editorRecurrenceDialogTitle,n.messages[n.editorRecurrenceDialogTitle]),w=y.toLanguageString(n.editorRecurrenceRemove,n.messages[n.editorRecurrenceRemove]);return r.createVNode(C.Dialog,{title:b,appendTo:"body",width:540,onClose:this.handleClose},{default:()=>[r.createVNode("div",{class:"k-form k-form-horizontal"},[r.createVNode(h.FieldWrapper,null,{default:()=>[r.createVNode(g.Label,{editorId:"recurrence-interval",class:"k-form-label"},c(e=this.localizeMessage(n.recurrenceEditorRepeat,!0))?e:{default:()=>[e]}),r.createVNode("div",{class:"k-form-field-wrap"},[r.createVNode("div",{class:"k-scheduler-recurrence-fields"},[this.frequency!=="never"&&r.createVNode(m.NumericTextBox,{id:"recurrence-interval",min:1,step:1,defaultValue:1,value:this.rrule.interval,onChange:this.handleIntervalChange},null),r.createVNode(d.DropDownList,{dataItems:this.frequencyData,textField:"text",dataItemKey:"value",value:this.frequencyDropDownValue,onChange:this.handleFrequencyDropDownChange},null)])])]}),this.frequency==="weekly"&&r.createVNode(h.FieldWrapper,null,{default:()=>[r.createVNode(g.Label,{class:"k-form-label"},c(t=this.localizeMessage(n.recurrenceEditorWeeklyRepeatOn,!0))?t:{default:()=>[t]}),r.createVNode("div",{class:"k-form-field-wrap"},[r.createVNode("div",{class:"k-scheduler-weekday-picker",role:"group","aria-label":this.localizeMessage(n.recurrenceEditorWeeklyRepeatOnDays,!0)},[this.narrowWeekDays.map(s=>r.createVNode(D.Button,{key:s.value,type:"button",themeColor:"primary",fillMode:"flat",rounded:"full",togglable:!0,selected:this.selectedWeekDays.includes(s.value),"aria-label":s.wide,"aria-pressed":this.selectedWeekDays.includes(s.value),onClick:()=>this.handleWeekDayButtonClick(s.value)},{default:()=>[s.narrow]}))])])]}),this.frequency==="monthly"&&r.createVNode(h.FieldWrapper,null,{default:()=>{var s,v;return[r.createVNode(g.Label,{class:"k-form-label"},c(a=this.localizeMessage(n.recurrenceEditorMonthlyRepeatOn,!0))?a:{default:()=>[a]}),r.createVNode("div",{class:"k-form-field-wrap"},[r.createVNode(m.RadioGroup,{value:this.repeatOnRule,onChange:this.handleRepeatOnRuleChange,class:"k-reset",dataItems:[{value:"weekday",tabIndex:0,name:"scheduler-recurrence-monthly-weekday",label:" ",content:r.createVNode("div",{class:"k-scheduler-recurrence-fields"},[r.createVNode(d.DropDownList,{textField:"text",dataItemKey:"value",disabled:this.repeatOnRule!=="weekday",dataItems:this.offsets,value:this.offset,onChange:this.handleOffsetChange},null),r.createVNode(d.DropDownList,{disabled:this.repeatOnRule!=="weekday",value:this.weekDay,dataItems:this.extendedWeekDays,onChange:this.handleWeekDayChange,textField:"text",dataItemKey:"value"},null)])},{value:"monthday",tabIndex:0,name:"scheduler-recurrence-monthly-monthday",label:" ",content:r.createVNode("div",{class:"k-scheduler-recurrence-fields"},[r.createVNode(m.NumericTextBox,{min:1,max:31,disabled:this.repeatOnRule!=="monthday",value:(v=(s=this.rrule)==null?void 0:s.byMonthDay)==null?void 0:v[0],onChange:this.handleMonthDayChange,style:{width:"auto"}},null)])}]},null)])]}}),this.frequency==="yearly"&&r.createVNode(h.FieldWrapper,null,{default:()=>[r.createVNode(g.Label,{class:"k-form-label"},c(i=this.localizeMessage(n.recurrenceEditorYearlyRepeatOn,!0))?i:{default:()=>[i]}),r.createVNode("div",{class:"k-form-field-wrap"},[r.createVNode(m.RadioGroup,{value:this.repeatOnRule,onChange:this.handleRepeatOnRuleChange,class:"k-reset",dataItems:[{value:"monthday",tabIndex:0,name:"scheduler-recurrence-yearly-monthday",label:" ",content:r.createVNode("div",{class:"k-scheduler-recurrence-fields"},[r.createVNode(d.DropDownList,{disabled:this.repeatOnRule!=="monthday",value:this.month,dataItems:this.months,textField:"text",dataItemKey:"value",onChange:this.handleMonthChange},null),r.createVNode(m.NumericTextBox,{min:1,max:31,disabled:this.repeatOnRule!=="monthday",value:this.monthDay,onChange:this.handleMonthDayChange,style:{width:"auto"}},null)])},{value:"weekday",tabIndex:0,name:"scheduler-recurrence-yearly-weekday",label:" ",content:r.createVNode("div",{class:"k-scheduler-recurrence-fields"},[r.createVNode(d.DropDownList,{textField:"text",dataItemKey:"value",disabled:this.repeatOnRule!=="weekday",dataItems:this.offsets,value:this.offset,onChange:this.handleOffsetChange},null),r.createVNode(d.DropDownList,{textField:"text",dataItemKey:"value",disabled:this.repeatOnRule!=="weekday",value:this.weekDay,dataItems:this.extendedWeekDays,onChange:this.handleWeekDayChange},null),r.createVNode("span",{key:"of-row",class:"k-scheduler-edit-form-row"},[r.createVNode("span",null,[this.localizeMessage(n.recurrenceEditorYearlyOf,!0)]),r.createVNode(d.DropDownList,{textField:"text",dataItemKey:"value",disabled:this.repeatOnRule!=="weekday",value:this.month,dataItems:this.months,onChange:this.handleMonthChange},null)])])}]},null)])]}),this.frequency!=="never"&&r.createVNode(h.FieldWrapper,null,{default:()=>{var s,v;return[r.createVNode(g.Label,{class:"k-form-label"},c(o=this.localizeMessage(n.recurrenceEditorEndLabel,!0))?o:{default:()=>[o]}),r.createVNode("div",{class:"k-form-field-wrap"},[r.createVNode("div",{class:"k-scheduler-recurrence-fields"},[r.createVNode(d.DropDownList,{dataItems:this.endRuleData,textField:"text",dataItemKey:"value",value:this.endRuleDropDownValue,onChange:this.handleEndRuleDropDownChange},null),this.endRule==="count"&&r.createVNode(m.NumericTextBox,{min:1,style:{width:"auto"},value:(s=this.rrule.count)!=null?s:this.defaultCount,onChange:this.handleCountChange,format:`0 '${this.localizeMessage(n.recurrenceEditorEndOccurrence,!0)}'`},null),this.endRule==="until"&&r.createVNode(V.DatePicker,{min:this.startsOn,value:(v=this.until)!=null?v:p.toLocalDate(this.defaultUntil),onChange:this.handleUntilChange,style:{width:"auto"}},null)])])]}}),this.frequency!=="never"&&(this.recurrenceSummaryTemplate&&this.currentRuleString?r.createVNode(h.FieldWrapper,null,{default:()=>[r.createVNode("div",{class:"k-form-field-wrap"},[r.createVNode("div",{class:"k-form-hint"},[this.renderRecurrenceSummaryTemplate()])])]}):this.summary?r.createVNode(h.FieldWrapper,null,{default:()=>[r.createVNode("div",{class:"k-form-field-wrap"},[r.createVNode("div",{class:"k-form-hint"},[this.summary])])]}):null)]),r.createVNode(C.DialogActionsBar,{layout:"end"},{default:()=>[this.isExistingRecurrence&&this.onRemoveRecurrence&&r.createVNode(D.Button,{fillMode:"flat",themeColor:"primary",onClick:this.onRemoveRecurrence},c(w)?w:{default:()=>[w]}),r.createVNode(D.Button,{onClick:()=>this.$emit("cancel")},c(R)?R:{default:()=>[R]}),r.createVNode(D.Button,{themeColor:"primary",onClick:this.handleSave},c(f)?f:{default:()=>[f]})]})]})}});exports.SchedulerRecurrenceDialog=S;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("vue"),b=require("@progress/kendo-vue-dialogs"),p=require("@progress/kendo-vue-buttons"),u=require("@progress/kendo-vue-intl"),f=require("@progress/kendo-vue-inputs"),o=require("@progress/kendo-vue-dropdowns"),N=require("@progress/kendo-vue-dateinputs"),g=require("@progress/kendo-vue-labels"),m=require("@progress/kendo-vue-form"),R=require("@progress/kendo-date-math"),w=require("@progress/kendo-recurrence"),n=require("../messages/main.js"),V=require("../hooks/useRecurrenceSummary.js"),l=require("../recurrence/common.js");function d(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!a.isVNode(e)}const O=a.defineComponent({name:"KendoSchedulerRecurrenceDialog",props:{value:{type:[String,null],default:null},start:{type:Date,required:!0},timezone:{type:String,default:""},onSave:Function,onCancel:Function,onRemoveRecurrence:Function,recurrenceSummaryTemplate:[Object,Function],recurrenceEditor:[Object,Function]},inject:{kendoIntlService:{default:null},kendoLocalizationService:{default:null}},setup(){return{kendoLocalizationService:a.inject("kendoLocalizationService",{})}},data(){var r;const e=l.getRule((r=this.value)!=null?r:"");return{rrule:e.freq?e:{freq:"daily",interval:1},defaultCount:1,defaultUntil:l.toUntilEndOfDay(this.start,this.timezone),startsOn:new Date(this.start)}},computed:{frequency(){return l.getFrequency(this.rrule)},weekDays(){const e=u.provideIntlService(this);return l.getWeekDays(e)},extendedWeekDays(){const e=u.provideIntlService(this);return l.getExtendedWeekDays(e,this.localizeMessage)},weekDay(){return l.getWeekDay(this.extendedWeekDays,this.rrule,this.startsOn)},months(){const e=u.provideIntlService(this);return l.getMonths(e)},month(){return l.getMonth(this.months,this.rrule)},offsets(){return l.getOffsets(this.localizeMessage)},offset(){return l.getOffset(this.offsets,this.rrule)},endRule(){return l.getEndRule(this.rrule)},monthDay(){return l.getMonthDay(this.rrule,this.startsOn)},until(){return this.rrule.until?R.toLocalDate(this.rrule.until):null},repeatOnRule(){return l.getRepeatOnRule(this.rrule)},isExistingRecurrence(){return!!this.value},frequencyData(){return[{text:this.localizeMessage(n.recurrenceEditorFrequenciesDaily,!0),value:"daily"},{text:this.localizeMessage(n.recurrenceEditorFrequenciesWeekly,!0),value:"weekly"},{text:this.localizeMessage(n.recurrenceEditorFrequenciesMonthly,!0),value:"monthly"},{text:this.localizeMessage(n.recurrenceEditorFrequenciesYearly,!0),value:"yearly"}]},endRuleData(){return[{text:this.localizeMessage(n.recurrenceEditorEndNever,!0),value:"never"},{text:this.localizeMessage(n.recurrenceEditorEndAfter,!0),value:"count"},{text:this.localizeMessage(n.recurrenceEditorEndOn,!0),value:"until"}]},frequencyDropDownValue(){return this.frequencyData.find(e=>e.value===this.frequency)||this.frequencyData[0]},endRuleDropDownValue(){return this.endRuleData.find(e=>e.value===this.endRule)||this.endRuleData[0]},narrowWeekDays(){const e=u.provideIntlService(this),t=e.firstDay(),r=e.dateFormatNames({type:"days",nameType:"narrow"}),i=e.dateFormatNames({type:"days",nameType:"wide"}),c=r.map((h,y)=>({narrow:h,wide:i[y],value:y}));return c.slice(t).concat(c.slice(0,t))},selectedWeekDays(){return(this.rrule.byWeekDay||[]).map(({day:e})=>e)},summary(){if(!this.currentRuleString)return"";const e=u.provideIntlService(this),t=u.provideLocalizationService(this);return V.getRecurrenceSummary(this.currentRuleString,this.startsOn,e,(r,i)=>t.toLanguageString(r,i))},currentRuleString(){return!this.rrule.freq||this.rrule.freq==="never"?null:w.serializeRule(this.rrule,this.timezone)},parsedCurrentRule(){return this.currentRuleString?w.parseRule({recurrenceRule:this.currentRuleString}):null}},methods:{localizeMessage(e,t){const r=u.provideLocalizationService(this),i=t?e:"scheduler.recurrenceEditor"+e;return r.toLanguageString(i,n.messages[i])},renderRecurrenceSummaryTemplate(){const e=this.recurrenceSummaryTemplate;return!e||!this.currentRuleString?null:a.createVNode(e,{recurrenceRule:this.currentRuleString,text:this.summary||"",parsedRule:this.parsedCurrentRule},null)},updateRrule(e){this.rrule={...e}},handleFrequencyChange(e){const t={};t.freq=e,t.interval=1,e==="weekly"&&(t.byWeekDay=[{day:R.ZonedDate.fromLocalDate(this.startsOn,this.timezone).getDay(),offset:0}]),(e==="monthly"||e==="yearly")&&(t.byMonthDay=[this.startsOn.getDate()]),e==="yearly"&&(t.byMonth=[this.startsOn.getMonth()+1]),this.updateRrule(t)},handleIntervalChange(e){var t;this.updateRrule({...this.rrule,interval:(t=e.value)!=null?t:1})},handleCountChange(e){const t=e.value,r=t!=null?t:this.defaultCount;this.updateRrule({...this.rrule,count:r}),t!==null&&(this.defaultCount=r)},handleUntilChange(e){if(!e.value)return;const t=l.toUntilEndOfDay(e.value,this.timezone);this.updateRrule({...this.rrule,until:t}),this.defaultUntil=t},handleWeekDaysChange(e){this.updateRrule({...this.rrule,byWeekDay:this.weekDays.filter(t=>e.some(r=>r===t.value)).map(t=>({offset:0,day:t.value}))})},handleWeekDayChange(e){const t={...this.rrule},r=e.value;typeof r.value=="string"?(t.byWeekDay=l.weekDayRuleFromString(r.value),t.bySetPosition=[this.offset.value]):(t.bySetPosition=void 0,t.byWeekDay=[{day:r.value,offset:this.offset.value}]),this.updateRrule(t)},handleMonthDayChange(e){var t;this.updateRrule({...this.rrule,byMonthDay:[(t=e.value)!=null?t:1]})},handleMonthChange(e){this.updateRrule({...this.rrule,byMonth:[e.value.value]})},handleEndRuleDropDownChange(e){const t=e.value.value,r={...this.rrule};switch(t){case"never":r.until=void 0,r.count=void 0;break;case"count":r.until=void 0,r.count=this.defaultCount;break;case"until":r.until=this.defaultUntil,r.count=void 0;break}this.updateRrule(r)},handleRepeatOnRuleChange(e){const t={...this.rrule};e.value==="monthday"?(t.byWeekDay=void 0,t.bySetPosition=void 0,t.byMonthDay=[this.monthDay]):e.value==="weekday"&&(t.byMonthDay=void 0,typeof this.weekDay.value=="string"?(t.bySetPosition=[this.offset.value],t.byWeekDay=l.weekDayRuleFromString(this.weekDay.value)):t.byWeekDay=[{day:this.weekDay.value,offset:this.offset.value}]),this.updateRrule(t)},handleOffsetChange(e){const t={...this.rrule},r=e.value;if(t.byWeekDay)switch(t.byWeekDay.length){case 7:case 5:case 2:t.bySetPosition=[r.value];break;case 1:t.byWeekDay[0].offset=r.value;break}this.updateRrule(t)},handleFrequencyDropDownChange(e){const t=e.value.value;this.handleFrequencyChange(t)},handleWeekDayButtonClick(e){const t=this.selectedWeekDays.includes(e)?this.selectedWeekDays.filter(r=>r!==e):[...this.selectedWeekDays,e];this.handleWeekDaysChange(t)},handleStartsOnChange(e){e.value&&(this.startsOn=e.value)},handleSave(){const e=u.provideIntlService(this);this.rrule.freq==="never"||!this.rrule.freq?this.$emit("save",null):(this.rrule.weekStart===void 0&&(this.rrule.weekStart=e.firstDay()),this.$emit("save",w.serializeRule(this.rrule,this.timezone)))},handleClose(e){this.$emit("cancel")}},render(){let e,t,r,i,c;const h=u.provideLocalizationService(this),y=h.toLanguageString(n.editorSave,n.messages[n.editorSave]),D=h.toLanguageString(n.editorCancel,n.messages[n.editorCancel]),S=h.toLanguageString(n.editorRecurrenceDialogTitle,n.messages[n.editorRecurrenceDialogTitle]),k=h.toLanguageString(n.editorRecurrenceRemove,n.messages[n.editorRecurrenceRemove]),C=this.renderRecurrenceSummaryTemplate();return a.createVNode(b.Dialog,{title:S,appendTo:"body",width:540,onClose:this.handleClose},{default:()=>[a.createVNode("div",{class:"k-form k-form-horizontal"},[a.createVNode(m.FieldWrapper,null,{default:()=>[a.createVNode(g.Label,{editorId:"recurrence-interval",class:"k-form-label"},d(e=this.localizeMessage(n.recurrenceEditorRepeat,!0))?e:{default:()=>[e]}),a.createVNode("div",{class:"k-form-field-wrap"},[a.createVNode("div",{class:"k-scheduler-recurrence-fields"},[this.frequency!=="never"&&a.createVNode(f.NumericTextBox,{id:"recurrence-interval",min:1,step:1,defaultValue:1,value:this.rrule.interval,onChange:this.handleIntervalChange},null),a.createVNode(o.DropDownList,{dataItems:this.frequencyData,textField:"text",dataItemKey:"value",value:this.frequencyDropDownValue,onChange:this.handleFrequencyDropDownChange},null)])])]}),this.frequency==="weekly"&&a.createVNode(m.FieldWrapper,null,{default:()=>[a.createVNode(g.Label,{class:"k-form-label"},d(t=this.localizeMessage(n.recurrenceEditorWeeklyRepeatOn,!0))?t:{default:()=>[t]}),a.createVNode("div",{class:"k-form-field-wrap"},[a.createVNode("div",{class:"k-scheduler-weekday-picker",role:"group","aria-label":this.localizeMessage(n.recurrenceEditorWeeklyRepeatOnDays,!0)},[this.narrowWeekDays.map(s=>a.createVNode(p.Button,{key:s.value,type:"button",themeColor:"primary",fillMode:"flat",rounded:"full",togglable:!0,selected:this.selectedWeekDays.includes(s.value),"aria-label":s.wide,"aria-pressed":this.selectedWeekDays.includes(s.value),onClick:()=>this.handleWeekDayButtonClick(s.value)},{default:()=>[s.narrow]}))])])]}),this.frequency==="monthly"&&a.createVNode(m.FieldWrapper,null,{default:()=>{var s,v;return[a.createVNode(g.Label,{class:"k-form-label"},d(r=this.localizeMessage(n.recurrenceEditorMonthlyRepeatOn,!0))?r:{default:()=>[r]}),a.createVNode("div",{class:"k-form-field-wrap"},[a.createVNode(f.RadioGroup,{value:this.repeatOnRule,onChange:this.handleRepeatOnRuleChange,class:"k-reset",dataItems:[{value:"weekday",tabIndex:0,name:"scheduler-recurrence-monthly-weekday",label:" ",content:a.createVNode("div",{class:"k-scheduler-recurrence-fields"},[a.createVNode(o.DropDownList,{textField:"text",dataItemKey:"value",disabled:this.repeatOnRule!=="weekday",dataItems:this.offsets,value:this.offset,onChange:this.handleOffsetChange},null),a.createVNode(o.DropDownList,{disabled:this.repeatOnRule!=="weekday",value:this.weekDay,dataItems:this.extendedWeekDays,onChange:this.handleWeekDayChange,textField:"text",dataItemKey:"value"},null)])},{value:"monthday",tabIndex:0,name:"scheduler-recurrence-monthly-monthday",label:" ",content:a.createVNode("div",{class:"k-scheduler-recurrence-fields"},[a.createVNode(f.NumericTextBox,{min:1,max:31,disabled:this.repeatOnRule!=="monthday",value:(v=(s=this.rrule)==null?void 0:s.byMonthDay)==null?void 0:v[0],onChange:this.handleMonthDayChange,style:{width:"auto"}},null)])}]},null)])]}}),this.frequency==="yearly"&&a.createVNode(m.FieldWrapper,null,{default:()=>[a.createVNode(g.Label,{class:"k-form-label"},d(i=this.localizeMessage(n.recurrenceEditorYearlyRepeatOn,!0))?i:{default:()=>[i]}),a.createVNode("div",{class:"k-form-field-wrap"},[a.createVNode(f.RadioGroup,{value:this.repeatOnRule,onChange:this.handleRepeatOnRuleChange,class:"k-reset",dataItems:[{value:"monthday",tabIndex:0,name:"scheduler-recurrence-yearly-monthday",label:" ",content:a.createVNode("div",{class:"k-scheduler-recurrence-fields"},[a.createVNode(o.DropDownList,{disabled:this.repeatOnRule!=="monthday",value:this.month,dataItems:this.months,textField:"text",dataItemKey:"value",onChange:this.handleMonthChange},null),a.createVNode(f.NumericTextBox,{min:1,max:31,disabled:this.repeatOnRule!=="monthday",value:this.monthDay,onChange:this.handleMonthDayChange,style:{width:"auto"}},null)])},{value:"weekday",tabIndex:0,name:"scheduler-recurrence-yearly-weekday",label:" ",content:a.createVNode("div",{class:"k-scheduler-recurrence-fields"},[a.createVNode(o.DropDownList,{textField:"text",dataItemKey:"value",disabled:this.repeatOnRule!=="weekday",dataItems:this.offsets,value:this.offset,onChange:this.handleOffsetChange},null),a.createVNode(o.DropDownList,{textField:"text",dataItemKey:"value",disabled:this.repeatOnRule!=="weekday",value:this.weekDay,dataItems:this.extendedWeekDays,onChange:this.handleWeekDayChange},null),a.createVNode("span",{key:"of-row",class:"k-scheduler-edit-form-row"},[a.createVNode("span",null,[this.localizeMessage(n.recurrenceEditorYearlyOf,!0)]),a.createVNode(o.DropDownList,{textField:"text",dataItemKey:"value",disabled:this.repeatOnRule!=="weekday",value:this.month,dataItems:this.months,onChange:this.handleMonthChange},null)])])}]},null)])]}),this.frequency!=="never"&&a.createVNode(m.FieldWrapper,null,{default:()=>{var s,v;return[a.createVNode(g.Label,{class:"k-form-label"},d(c=this.localizeMessage(n.recurrenceEditorEndLabel,!0))?c:{default:()=>[c]}),a.createVNode("div",{class:"k-form-field-wrap"},[a.createVNode("div",{class:"k-scheduler-recurrence-fields"},[a.createVNode(o.DropDownList,{dataItems:this.endRuleData,textField:"text",dataItemKey:"value",value:this.endRuleDropDownValue,onChange:this.handleEndRuleDropDownChange},null),this.endRule==="count"&&a.createVNode(f.NumericTextBox,{min:1,style:{width:"auto"},value:(s=this.rrule.count)!=null?s:this.defaultCount,onChange:this.handleCountChange,format:`0 '${this.localizeMessage(n.recurrenceEditorEndOccurrence,!0)}'`},null),this.endRule==="until"&&a.createVNode(N.DatePicker,{min:this.startsOn,value:(v=this.until)!=null?v:R.toLocalDate(this.defaultUntil),onChange:this.handleUntilChange,style:{width:"auto"}},null)])])]}}),(C||this.summary)&&a.createVNode(m.FieldWrapper,null,{default:()=>[a.createVNode("div",{class:"k-form-field-wrap"},[V.renderRecurrenceSummary(this.summary,C)])]})]),a.createVNode(b.DialogActionsBar,{layout:"end"},{default:()=>[this.isExistingRecurrence&&this.onRemoveRecurrence&&a.createVNode(p.Button,{fillMode:"flat",themeColor:"primary",onClick:this.onRemoveRecurrence},d(k)?k:{default:()=>[k]}),a.createVNode(p.Button,{onClick:()=>this.$emit("cancel")},d(D)?D:{default:()=>[D]}),a.createVNode(p.Button,{themeColor:"primary",onClick:this.handleSave},d(y)?y:{default:()=>[y]})]})]})}});exports.SchedulerRecurrenceDialog=O;