@progress/kendo-vue-scheduler 10.2.0-develop.11 → 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
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 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 { PropType } from 'vue';
9
+ /** @hidden */
10
+ export interface KeepResetCustomEventsDialogProps {
11
+ /** Fires when the user chooses to keep the custom events. */
12
+ onKeep?: () => void;
13
+ /** Fires when the user chooses to delete the custom events. */
14
+ onReset?: () => void;
15
+ /** Fires when the user cancels and returns to editing. */
16
+ onCancel?: () => void;
17
+ }
18
+ /** @hidden */
19
+ export declare const KeepResetCustomEventsDialog: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
20
+ onKeep: PropType<() => void>;
21
+ onReset: PropType<() => void>;
22
+ onCancel: PropType<() => void>;
23
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("cancel" | "reset" | "keep")[], "cancel" | "reset" | "keep", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
24
+ onKeep: PropType<() => void>;
25
+ onReset: PropType<() => void>;
26
+ onCancel: PropType<() => void>;
27
+ }>> & Readonly<{
28
+ onReset?: (...args: any[]) => any;
29
+ onCancel?: (...args: any[]) => any;
30
+ onKeep?: (...args: any[]) => any;
31
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 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 strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),u=require("@progress/kendo-vue-buttons"),i=require("@progress/kendo-vue-dialogs"),p=require("@progress/kendo-vue-intl"),e=require("../messages/main.js");function l(s){return typeof s=="function"||Object.prototype.toString.call(s)==="[object Object]"&&!t.isVNode(s)}const m=510,C=t.defineComponent({name:"KendoKeepResetCustomEventsDialog",emits:["keep","reset","cancel"],props:{onKeep:Function,onReset:Function,onCancel:Function},setup(s,{emit:r}){const g=t.inject("kendoLocalizationService",null),d=o=>{o.event.stopPropagation(),r("cancel")};return()=>{let o,c,a;const n=p.provideLocalizationService({kendoLocalizationService:g});return t.createVNode(i.Dialog,{title:n.toLanguageString(e.recurrenceCustomEventsDialogTitle,e.messages[e.recurrenceCustomEventsDialogTitle]),className:"k-scheduler-custom-events-dialog",appendTo:"body",width:m,onClose:d},{default:()=>[t.createVNode("p",null,[n.toLanguageString(e.recurrenceCustomEventsConfirmation,e.messages[e.recurrenceCustomEventsConfirmation])]),t.createVNode(i.DialogActionsBar,{layout:"start"},{default:()=>[t.createVNode(u.Button,{type:"button",fillMode:"flat",onClick:()=>r("cancel")},l(o=n.toLanguageString(e.recurrenceCustomEventsCancel,e.messages[e.recurrenceCustomEventsCancel]))?o:{default:()=>[o]}),t.createVNode("span",{class:"k-spacer"},null),t.createVNode(u.Button,{type:"button",onClick:()=>r("reset")},l(c=n.toLanguageString(e.recurrenceCustomEventsReset,e.messages[e.recurrenceCustomEventsReset]))?c:{default:()=>[c]}),t.createVNode(u.Button,{type:"button",themeColor:"primary",onClick:()=>r("keep")},l(a=n.toLanguageString(e.recurrenceCustomEventsKeep,e.messages[e.recurrenceCustomEventsKeep]))?a:{default:()=>[a]})]})]})}}});exports.KeepResetCustomEventsDialog=C;
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 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 { defineComponent as v, inject as S, createVNode as e, isVNode as k } from "vue";
9
+ import { Button as s } from "@progress/kendo-vue-buttons";
10
+ import { Dialog as E, DialogActionsBar as L } from "@progress/kendo-vue-dialogs";
11
+ import { provideLocalizationService as y } from "@progress/kendo-vue-intl";
12
+ import { recurrenceCustomEventsDialogTitle as u, messages as n, recurrenceCustomEventsConfirmation as p, recurrenceCustomEventsCancel as g, recurrenceCustomEventsReset as m, recurrenceCustomEventsKeep as d } from "../messages/main.mjs";
13
+ function i(r) {
14
+ return typeof r == "function" || Object.prototype.toString.call(r) === "[object Object]" && !k(r);
15
+ }
16
+ const _ = 510, j = /* @__PURE__ */ v({
17
+ name: "KendoKeepResetCustomEventsDialog",
18
+ emits: ["keep", "reset", "cancel"],
19
+ props: {
20
+ onKeep: Function,
21
+ onReset: Function,
22
+ onCancel: Function
23
+ },
24
+ setup(r, {
25
+ emit: a
26
+ }) {
27
+ const C = S("kendoLocalizationService", null), f = (t) => {
28
+ t.event.stopPropagation(), a("cancel");
29
+ };
30
+ return () => {
31
+ let t, c, l;
32
+ const o = y({
33
+ kendoLocalizationService: C
34
+ });
35
+ return e(E, {
36
+ title: o.toLanguageString(u, n[u]),
37
+ className: "k-scheduler-custom-events-dialog",
38
+ appendTo: "body",
39
+ width: _,
40
+ onClose: f
41
+ }, {
42
+ default: () => [e("p", null, [o.toLanguageString(p, n[p])]), e(L, {
43
+ layout: "start"
44
+ }, {
45
+ default: () => [e(s, {
46
+ type: "button",
47
+ fillMode: "flat",
48
+ onClick: () => a("cancel")
49
+ }, i(t = o.toLanguageString(g, n[g])) ? t : {
50
+ default: () => [t]
51
+ }), e("span", {
52
+ class: "k-spacer"
53
+ }, null), e(s, {
54
+ type: "button",
55
+ onClick: () => a("reset")
56
+ }, i(c = o.toLanguageString(m, n[m])) ? c : {
57
+ default: () => [c]
58
+ }), e(s, {
59
+ type: "button",
60
+ themeColor: "primary",
61
+ onClick: () => a("keep")
62
+ }, i(l = o.toLanguageString(d, n[d])) ? l : {
63
+ default: () => [l]
64
+ })]
65
+ })]
66
+ });
67
+ };
68
+ }
69
+ });
70
+ export {
71
+ j as KeepResetCustomEventsDialog
72
+ };
@@ -9,8 +9,12 @@ import { RecurrenceRule } from '@progress/kendo-recurrence';
9
9
  import { FormRenderProps, FormElementProps } from '@progress/kendo-vue-form';
10
10
  import { SwitchChangeEvent } from '@progress/kendo-vue-inputs';
11
11
  import { Omit } from '../models/Omit';
12
+ import { readDateAsLocal } from './ZonedSplitDateTime';
13
+ import { VNode } from 'vue';
12
14
  /**
13
15
  * Represents the props passed to the [`recurrenceButtonTextTemplate`](slug:api_scheduler_schedulerformeditorprops#toc-recurrenceButtonTextTemplate) component.
16
+ *
17
+ * @deprecated The `recurrenceButtonTextTemplate` is ignored. Use `recurrenceSummaryTemplate` and `RecurrenceSummaryTemplateProps` instead.
14
18
  */
15
19
  export interface RecurrenceButtonTextTemplateProps {
16
20
  /**
@@ -108,17 +112,19 @@ export interface SchedulerFormEditorProps extends Omit<FormElementProps, 'childr
108
112
  */
109
113
  resourceEditor?: any;
110
114
  /**
111
- * Overrides the content rendered inside the "Make recurring" button in the event edit form.
115
+ * This template is ignored. The recurrence button always uses the localized
116
+ * "Make recurring" or "Edit recurrence" label. Use `recurrenceSummaryTemplate`
117
+ * to customize the separate recurrence summary instead.
112
118
  *
113
- * Receives the current `recurrenceRule` (RRULE string or `null` when no recurrence is set).
114
- * The developer controls the entire button content for both states.
119
+ * @deprecated Use `recurrenceSummaryTemplate` instead.
115
120
  */
116
121
  recurrenceButtonTextTemplate?: any;
117
122
  /**
118
- * Overrides the recurrence summary hint displayed inside the recurrence editor dialog.
123
+ * Overrides the recurrence summary displayed below the recurrence button and inside the recurrence editor dialog.
119
124
  *
120
- * Receives the current `recurrenceRule` (RRULE string) and should render the desired summary.
121
- * This template is only used when a recurrence rule exists.
125
+ * Receives `recurrenceRule` (RRULE string), `text` (full default summary), and `parsedRule`.
126
+ * This template is only rendered when a recurrence rule exists.
127
+ * The native tooltip displays the full rendered template text.
122
128
  */
123
129
  recurrenceSummaryTemplate?: any;
124
130
  }
@@ -371,7 +377,9 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
371
377
  startEditor: {
372
378
  type: (ObjectConstructor | StringConstructor | FunctionConstructor)[];
373
379
  default: () => import('vue').DefineComponent<import('vue').ExtractPropTypes<{
374
- value: import('vue').PropType<Date>;
380
+ value: import('vue').PropType<Date>; /**
381
+ * The current recurrence rule string (RRULE), or `null` when no recurrence is set.
382
+ */
375
383
  isAllDay: BooleanConstructor;
376
384
  connector: StringConstructor;
377
385
  connectorElement: import('vue').PropType<any>;
@@ -380,17 +388,32 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
380
388
  fieldError: StringConstructor;
381
389
  ariaLabel: StringConstructor;
382
390
  timeAriaLabel: StringConstructor;
383
- }>, {}, {}, {
391
+ }>, {
392
+ ks: any;
393
+ pendingValue: import('vue').Ref<Date, Date>;
394
+ boundAttr: (key: "min" | "max") => Date;
395
+ isInBounds: (value: Date) => boolean;
396
+ dateMin: () => Date;
397
+ timeMin: (value: Date) => Date;
398
+ timeMax: (value: Date) => Date;
399
+ modelStart: () => Date;
400
+ }, {}, {
384
401
  timezone(): string;
385
402
  localValue(): Date;
403
+ displayValue(): Date;
386
404
  isInvalid(): boolean;
387
405
  }, {
388
406
  handleDateChange(e: import('@progress/kendo-vue-dateinputs').DatePickerChangeEvent): void;
389
407
  handleTimeChange(e: import('@progress/kendo-vue-dateinputs').TimePickerChangeEvent): void;
390
- readDateAsLocal(value: any, timezone?: string): Date;
391
- readDateWithTimezone(value: any, timezone?: string): Date;
408
+ commit(local: Date, event?: Event): void;
409
+ handleBlur(event: any): void;
410
+ handleKeyDown(event: KeyboardEvent): void;
411
+ readDateAsLocal: typeof readDateAsLocal;
412
+ readDateWithTimezone: (value: Date, timezone?: string) => Date;
392
413
  }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "change"[], "change", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
393
- value: import('vue').PropType<Date>;
414
+ value: import('vue').PropType<Date>; /**
415
+ * The current recurrence rule string (RRULE), or `null` when no recurrence is set.
416
+ */
394
417
  isAllDay: BooleanConstructor;
395
418
  connector: StringConstructor;
396
419
  connectorElement: import('vue').PropType<any>;
@@ -444,7 +467,9 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
444
467
  endEditor: {
445
468
  type: (ObjectConstructor | StringConstructor | FunctionConstructor)[];
446
469
  default: () => import('vue').DefineComponent<import('vue').ExtractPropTypes<{
447
- value: import('vue').PropType<Date>;
470
+ value: import('vue').PropType<Date>; /**
471
+ * The current recurrence rule string (RRULE), or `null` when no recurrence is set.
472
+ */
448
473
  isAllDay: BooleanConstructor;
449
474
  connector: StringConstructor;
450
475
  connectorElement: import('vue').PropType<any>;
@@ -453,17 +478,32 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
453
478
  fieldError: StringConstructor;
454
479
  ariaLabel: StringConstructor;
455
480
  timeAriaLabel: StringConstructor;
456
- }>, {}, {}, {
481
+ }>, {
482
+ ks: any;
483
+ pendingValue: import('vue').Ref<Date, Date>;
484
+ boundAttr: (key: "min" | "max") => Date;
485
+ isInBounds: (value: Date) => boolean;
486
+ dateMin: () => Date;
487
+ timeMin: (value: Date) => Date;
488
+ timeMax: (value: Date) => Date;
489
+ modelStart: () => Date;
490
+ }, {}, {
457
491
  timezone(): string;
458
492
  localValue(): Date;
493
+ displayValue(): Date;
459
494
  isInvalid(): boolean;
460
495
  }, {
461
496
  handleDateChange(e: import('@progress/kendo-vue-dateinputs').DatePickerChangeEvent): void;
462
497
  handleTimeChange(e: import('@progress/kendo-vue-dateinputs').TimePickerChangeEvent): void;
463
- readDateAsLocal(value: any, timezone?: string): Date;
464
- readDateWithTimezone(value: any, timezone?: string): Date;
498
+ commit(local: Date, event?: Event): void;
499
+ handleBlur(event: any): void;
500
+ handleKeyDown(event: KeyboardEvent): void;
501
+ readDateAsLocal: typeof readDateAsLocal;
502
+ readDateWithTimezone: (value: Date, timezone?: string) => Date;
465
503
  }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "change"[], "change", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
466
- value: import('vue').PropType<Date>;
504
+ value: import('vue').PropType<Date>; /**
505
+ * The current recurrence rule string (RRULE), or `null` when no recurrence is set.
506
+ */
467
507
  isAllDay: BooleanConstructor;
468
508
  connector: StringConstructor;
469
509
  connectorElement: import('vue').PropType<any>;
@@ -524,10 +564,7 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
524
564
  name: StringConstructor;
525
565
  accessKey: StringConstructor;
526
566
  checked: {
527
- type: BooleanConstructor; /**
528
- * Overrides the component used for visualizing the `allDay` field editor.
529
- * The [Kendo UI for Vue Switch]({% slug overview_switch %}) component is used, by default.
530
- */
567
+ type: BooleanConstructor;
531
568
  default: any;
532
569
  };
533
570
  className: StringConstructor;
@@ -627,10 +664,7 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
627
664
  name: StringConstructor;
628
665
  accessKey: StringConstructor;
629
666
  checked: {
630
- type: BooleanConstructor; /**
631
- * Overrides the component used for visualizing the `allDay` field editor.
632
- * The [Kendo UI for Vue Switch]({% slug overview_switch %}) component is used, by default.
633
- */
667
+ type: BooleanConstructor;
634
668
  default: any;
635
669
  };
636
670
  className: StringConstructor;
@@ -797,8 +831,13 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
797
831
  placeholder: import('vue').PropType<string>;
798
832
  tabIndex: import('vue').PropType<number>;
799
833
  valid: {
834
+ /**
835
+ * Specifies the `id` attribute of the root element.
836
+ */
800
837
  type: import('vue').PropType<boolean>;
801
- default: any;
838
+ default: any; /**
839
+ * Specifies the `tabIndex` attribute of the root element.
840
+ */
802
841
  };
803
842
  value: import('vue').PropType<string | number | string[]>;
804
843
  validityStyles: {
@@ -834,7 +873,13 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
834
873
  [x: string]: any;
835
874
  [x: number]: any;
836
875
  'k-input': boolean;
837
- 'k-textarea': boolean;
876
+ 'k-textarea': boolean; /**
877
+ * This template is ignored. The recurrence button always uses the localized
878
+ * "Make recurring" or "Edit recurrence" label. Use `recurrenceSummaryTemplate`
879
+ * to customize the separate recurrence summary instead.
880
+ *
881
+ * @deprecated Use `recurrenceSummaryTemplate` instead.
882
+ */
838
883
  'k-disabled': any;
839
884
  'k-invalid': boolean;
840
885
  'k-required': any;
@@ -916,8 +961,13 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
916
961
  placeholder: import('vue').PropType<string>;
917
962
  tabIndex: import('vue').PropType<number>;
918
963
  valid: {
964
+ /**
965
+ * Specifies the `id` attribute of the root element.
966
+ */
919
967
  type: import('vue').PropType<boolean>;
920
- default: any;
968
+ default: any; /**
969
+ * Specifies the `tabIndex` attribute of the root element.
970
+ */
921
971
  };
922
972
  value: import('vue').PropType<string | number | string[]>;
923
973
  validityStyles: {
@@ -952,8 +1002,8 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
952
1002
  "onUpdate:modelValue"?: (value: string | number | string[]) => any;
953
1003
  }>, {
954
1004
  flow: string;
955
- resizable: string;
956
1005
  valid: boolean;
1006
+ resizable: string;
957
1007
  modelValue: string | number | string[];
958
1008
  validityStyles: boolean;
959
1009
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -1010,7 +1060,10 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
1010
1060
  submitted: BooleanConstructor;
1011
1061
  allowSubmit: BooleanConstructor;
1012
1062
  valueGetter: FunctionConstructor;
1013
- }>, {}, {
1063
+ }>, {
1064
+ handleStartChange: () => void;
1065
+ updatePreviousRange: () => void;
1066
+ }, {
1014
1067
  showTimezones: boolean;
1015
1068
  showTimezoneResetDialog: boolean;
1016
1069
  showRecurrenceDialog: boolean;
@@ -1024,8 +1077,10 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
1024
1077
  isEditingOccurrence(): boolean;
1025
1078
  showRecurrenceButton(): boolean;
1026
1079
  recurrenceButtonText(): string;
1080
+ recurrenceSummaryText(): string;
1081
+ parsedRecurrenceRule(): RecurrenceRule | null;
1027
1082
  }, {
1028
- renderRecurrenceButtonTextTemplate(): import("vue/jsx-runtime").JSX.Element;
1083
+ renderRecurrenceSummaryTemplate(): VNode | null;
1029
1084
  handleTimezoneToggle(event: Event): void;
1030
1085
  handleTimezoneResetConfirm(): void;
1031
1086
  handleTimezoneResetClose(): void;
@@ -1280,7 +1335,9 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
1280
1335
  startEditor: {
1281
1336
  type: (ObjectConstructor | StringConstructor | FunctionConstructor)[];
1282
1337
  default: () => import('vue').DefineComponent<import('vue').ExtractPropTypes<{
1283
- value: import('vue').PropType<Date>;
1338
+ value: import('vue').PropType<Date>; /**
1339
+ * The current recurrence rule string (RRULE), or `null` when no recurrence is set.
1340
+ */
1284
1341
  isAllDay: BooleanConstructor;
1285
1342
  connector: StringConstructor;
1286
1343
  connectorElement: import('vue').PropType<any>;
@@ -1289,17 +1346,32 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
1289
1346
  fieldError: StringConstructor;
1290
1347
  ariaLabel: StringConstructor;
1291
1348
  timeAriaLabel: StringConstructor;
1292
- }>, {}, {}, {
1349
+ }>, {
1350
+ ks: any;
1351
+ pendingValue: import('vue').Ref<Date, Date>;
1352
+ boundAttr: (key: "min" | "max") => Date;
1353
+ isInBounds: (value: Date) => boolean;
1354
+ dateMin: () => Date;
1355
+ timeMin: (value: Date) => Date;
1356
+ timeMax: (value: Date) => Date;
1357
+ modelStart: () => Date;
1358
+ }, {}, {
1293
1359
  timezone(): string;
1294
1360
  localValue(): Date;
1361
+ displayValue(): Date;
1295
1362
  isInvalid(): boolean;
1296
1363
  }, {
1297
1364
  handleDateChange(e: import('@progress/kendo-vue-dateinputs').DatePickerChangeEvent): void;
1298
1365
  handleTimeChange(e: import('@progress/kendo-vue-dateinputs').TimePickerChangeEvent): void;
1299
- readDateAsLocal(value: any, timezone?: string): Date;
1300
- readDateWithTimezone(value: any, timezone?: string): Date;
1366
+ commit(local: Date, event?: Event): void;
1367
+ handleBlur(event: any): void;
1368
+ handleKeyDown(event: KeyboardEvent): void;
1369
+ readDateAsLocal: typeof readDateAsLocal;
1370
+ readDateWithTimezone: (value: Date, timezone?: string) => Date;
1301
1371
  }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "change"[], "change", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
1302
- value: import('vue').PropType<Date>;
1372
+ value: import('vue').PropType<Date>; /**
1373
+ * The current recurrence rule string (RRULE), or `null` when no recurrence is set.
1374
+ */
1303
1375
  isAllDay: BooleanConstructor;
1304
1376
  connector: StringConstructor;
1305
1377
  connectorElement: import('vue').PropType<any>;
@@ -1353,7 +1425,9 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
1353
1425
  endEditor: {
1354
1426
  type: (ObjectConstructor | StringConstructor | FunctionConstructor)[];
1355
1427
  default: () => import('vue').DefineComponent<import('vue').ExtractPropTypes<{
1356
- value: import('vue').PropType<Date>;
1428
+ value: import('vue').PropType<Date>; /**
1429
+ * The current recurrence rule string (RRULE), or `null` when no recurrence is set.
1430
+ */
1357
1431
  isAllDay: BooleanConstructor;
1358
1432
  connector: StringConstructor;
1359
1433
  connectorElement: import('vue').PropType<any>;
@@ -1362,17 +1436,32 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
1362
1436
  fieldError: StringConstructor;
1363
1437
  ariaLabel: StringConstructor;
1364
1438
  timeAriaLabel: StringConstructor;
1365
- }>, {}, {}, {
1439
+ }>, {
1440
+ ks: any;
1441
+ pendingValue: import('vue').Ref<Date, Date>;
1442
+ boundAttr: (key: "min" | "max") => Date;
1443
+ isInBounds: (value: Date) => boolean;
1444
+ dateMin: () => Date;
1445
+ timeMin: (value: Date) => Date;
1446
+ timeMax: (value: Date) => Date;
1447
+ modelStart: () => Date;
1448
+ }, {}, {
1366
1449
  timezone(): string;
1367
1450
  localValue(): Date;
1451
+ displayValue(): Date;
1368
1452
  isInvalid(): boolean;
1369
1453
  }, {
1370
1454
  handleDateChange(e: import('@progress/kendo-vue-dateinputs').DatePickerChangeEvent): void;
1371
1455
  handleTimeChange(e: import('@progress/kendo-vue-dateinputs').TimePickerChangeEvent): void;
1372
- readDateAsLocal(value: any, timezone?: string): Date;
1373
- readDateWithTimezone(value: any, timezone?: string): Date;
1456
+ commit(local: Date, event?: Event): void;
1457
+ handleBlur(event: any): void;
1458
+ handleKeyDown(event: KeyboardEvent): void;
1459
+ readDateAsLocal: typeof readDateAsLocal;
1460
+ readDateWithTimezone: (value: Date, timezone?: string) => Date;
1374
1461
  }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "change"[], "change", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
1375
- value: import('vue').PropType<Date>;
1462
+ value: import('vue').PropType<Date>; /**
1463
+ * The current recurrence rule string (RRULE), or `null` when no recurrence is set.
1464
+ */
1376
1465
  isAllDay: BooleanConstructor;
1377
1466
  connector: StringConstructor;
1378
1467
  connectorElement: import('vue').PropType<any>;
@@ -1433,10 +1522,7 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
1433
1522
  name: StringConstructor;
1434
1523
  accessKey: StringConstructor;
1435
1524
  checked: {
1436
- type: BooleanConstructor; /**
1437
- * Overrides the component used for visualizing the `allDay` field editor.
1438
- * The [Kendo UI for Vue Switch]({% slug overview_switch %}) component is used, by default.
1439
- */
1525
+ type: BooleanConstructor;
1440
1526
  default: any;
1441
1527
  };
1442
1528
  className: StringConstructor;
@@ -1536,10 +1622,7 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
1536
1622
  name: StringConstructor;
1537
1623
  accessKey: StringConstructor;
1538
1624
  checked: {
1539
- type: BooleanConstructor; /**
1540
- * Overrides the component used for visualizing the `allDay` field editor.
1541
- * The [Kendo UI for Vue Switch]({% slug overview_switch %}) component is used, by default.
1542
- */
1625
+ type: BooleanConstructor;
1543
1626
  default: any;
1544
1627
  };
1545
1628
  className: StringConstructor;
@@ -1706,8 +1789,13 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
1706
1789
  placeholder: import('vue').PropType<string>;
1707
1790
  tabIndex: import('vue').PropType<number>;
1708
1791
  valid: {
1792
+ /**
1793
+ * Specifies the `id` attribute of the root element.
1794
+ */
1709
1795
  type: import('vue').PropType<boolean>;
1710
- default: any;
1796
+ default: any; /**
1797
+ * Specifies the `tabIndex` attribute of the root element.
1798
+ */
1711
1799
  };
1712
1800
  value: import('vue').PropType<string | number | string[]>;
1713
1801
  validityStyles: {
@@ -1743,7 +1831,13 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
1743
1831
  [x: string]: any;
1744
1832
  [x: number]: any;
1745
1833
  'k-input': boolean;
1746
- 'k-textarea': boolean;
1834
+ 'k-textarea': boolean; /**
1835
+ * This template is ignored. The recurrence button always uses the localized
1836
+ * "Make recurring" or "Edit recurrence" label. Use `recurrenceSummaryTemplate`
1837
+ * to customize the separate recurrence summary instead.
1838
+ *
1839
+ * @deprecated Use `recurrenceSummaryTemplate` instead.
1840
+ */
1747
1841
  'k-disabled': any;
1748
1842
  'k-invalid': boolean;
1749
1843
  'k-required': any;
@@ -1825,8 +1919,13 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
1825
1919
  placeholder: import('vue').PropType<string>;
1826
1920
  tabIndex: import('vue').PropType<number>;
1827
1921
  valid: {
1922
+ /**
1923
+ * Specifies the `id` attribute of the root element.
1924
+ */
1828
1925
  type: import('vue').PropType<boolean>;
1829
- default: any;
1926
+ default: any; /**
1927
+ * Specifies the `tabIndex` attribute of the root element.
1928
+ */
1830
1929
  };
1831
1930
  value: import('vue').PropType<string | number | string[]>;
1832
1931
  validityStyles: {
@@ -1861,8 +1960,8 @@ declare const SchedulerFormEditor: import('vue').DefineComponent<import('vue').E
1861
1960
  "onUpdate:modelValue"?: (value: string | number | string[]) => any;
1862
1961
  }>, {
1863
1962
  flow: string;
1864
- resizable: string;
1865
1963
  valid: boolean;
1964
+ resizable: string;
1866
1965
  modelValue: string | number | string[];
1867
1966
  validityStyles: boolean;
1868
1967
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -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 t=require("vue"),w=require("@progress/kendo-date-math"),h=require("@progress/kendo-vue-labels"),T=require("@progress/kendo-vue-intl"),n=require("@progress/kendo-vue-form"),p=require("@progress/kendo-vue-inputs"),d=require("@progress/kendo-vue-common"),a=require("@progress/kendo-svg-icons"),c=require("@progress/kendo-vue-buttons"),v=require("@progress/kendo-vue-dialogs"),e=require("../messages/main.js"),C=require("../recurrence/RecurrenceEditor.js"),I=require("./ResourceEditor.js"),R=require("./ZonedSplitDateTime.js"),S=require("./TimezoneDropDownList.js"),q=require("./SchedulerRecurrenceDialog.js"),A=require("./RemoveRecurrenceConfirmDialog.js"),B=require("../hooks/useRecurrenceSummary.js");function g(r){return typeof r=="function"||Object.prototype.toString.call(r)==="[object Object]"&&!t.isVNode(r)}const j=t.defineComponent({name:"KendoSchedulerFormEditor",props:{as:[String,Function,Object],id:String,tabIndex:Number,titleEditor:{type:[String,Function,Object],default:function(){return p.TextBox}},startEditor:{type:[String,Function,Object],default:function(){return R.ZonedSplitDateTime}},startTimezoneEditor:{type:[String,Function,Object],default:function(){return S.TimezoneDropDownList}},endEditor:{type:[String,Function,Object],default:function(){return R.ZonedSplitDateTime}},endTimezoneEditor:{type:[String,Function,Object],default:function(){return S.TimezoneDropDownList}},allDayLabel:{type:[String,Function,Object],default:function(){return"span"}},allDayEditor:{type:[String,Function,Object],default:function(){return p.Switch}},recurrenceEditor:{type:[String,Function,Object],default:function(){return C.RecurrenceEditor}},descriptionEditor:{type:[String,Function,Object],default:function(){return p.TextArea}},resourceEditor:{type:[String,Function,Object],default:function(){return I.ResourceEditor}},recurrenceButtonTextTemplate:[Object,Function],recurrenceSummaryTemplate:[Object,Function],errors:Object,valid:Boolean,touched:Boolean,visited:Boolean,modified:Boolean,submitted:Boolean,allowSubmit:Boolean,valueGetter:Function},created(){this.requiredValidationMessage=void 0},inject:{ks:{default:null},kendoForm:{default:{}},kendoLocalizationService:{default:null}},data(){const r=this.kendoForm,o=this.ks;return{showTimezones:!!r.valueGetter(o.fields.startTimezone),showTimezoneResetDialog:!1,showRecurrenceDialog:!1,showRemoveRecurrenceDialog:!1}},computed:{isAllDay(){return!!this.kendoForm.valueGetter(this.ks.fields.isAllDay)},start(){return this.kendoForm.valueGetter(this.ks.fields.start)||new Date},startTimezone(){return this.kendoForm.valueGetter(this.ks.fields.startTimezone)||""},recurrenceRule(){return this.kendoForm.valueGetter(this.ks.fields.recurrenceRule)},recurrenceId(){return this.kendoForm.valueGetter(this.ks.fields.recurrenceId)},isEditingOccurrence(){return this.recurrenceId!==void 0&&this.recurrenceId!==null},showRecurrenceButton(){return!this.isEditingOccurrence},recurrenceButtonText(){const r=T.provideIntlService(this),o=T.provideLocalizationService(this),l=(m,i)=>o.toLanguageString(m,i),u=o.toLanguageString(e.editorRecurrenceMakeRecurring,e.messages[e.editorRecurrenceMakeRecurring]);return this.recurrenceRule&&B.getRecurrenceSummary(this.recurrenceRule,this.start,r,l)||u}},render(){let r,o,l;const u=d.getDefaultSlots(this),m=w.timezoneNames(),i=T.provideLocalizationService(this),k=this.$props.startEditor,z=this.$props.endEditor,F=this.$props.startTimezoneEditor,E=this.$props.endTimezoneEditor,D=this.$props.allDayEditor,V=this.$props.allDayLabel,b=this.$props.descriptionEditor,L=this.$props.resourceEditor,N=this.$props.titleEditor,y=this.startTimezone;this.requiredValidationMessage=i.toLanguageString(e.editorValidationRequired,e.messages[e.editorValidationRequired]);const f=i.toLanguageString(e.editorEventAllDay,e.messages[e.editorEventAllDay]);return t.createVNode(t.Fragment,null,[t.createVNode(n.FormElement,{horizontal:!0,class:"k-scheduler-edit-form"},{default:()=>[t.createVNode(n.FieldWrapper,null,{default:()=>[t.createVNode(h.Label,{class:"k-form-label"},{default:()=>[t.createVNode(d.SvgIcon,{icon:a.rightDoubleQuotesIcon,size:"xlarge"},null)]}),t.createVNode("div",{class:"k-form-field-wrap"},[t.createVNode(n.Field,{id:"k-scheduler-editor-title",name:this.ks.fields.title,field:this.ks.fields.title,component:N,placeholder:i.toLanguageString(e.editorEventTitle,e.messages[e.editorEventTitle]),"aria-label":i.toLanguageString(e.editorEventTitle,e.messages[e.editorEventTitle])},null)])]}),t.createVNode(n.FieldWrapper,null,{default:()=>[t.createVNode(h.Label,{class:"k-form-label"},{default:()=>[t.createVNode(d.SvgIcon,{icon:a.clockIcon,size:"xlarge"},null)]}),t.createVNode("div",{class:"k-form-field-wrap"},[t.createVNode("div",{class:"k-scheduler-datetime-section"},[t.createVNode("div",{class:"k-scheduler-edit-form-row"},[t.createVNode(n.Field,{name:this.ks.fields.isAllDay,component:D,onLabel:"",offLabel:""},null),t.createVNode(V,null,g(f)?f:{default:()=>[f]})]),t.createVNode("div",{class:"k-scheduler-datetime-grid"},[this.isAllDay?t.createVNode("div",{class:"k-scheduler-edit-form-row"},[t.createVNode(n.Field,{name:this.ks.fields.start,component:k,isAllDay:this.isAllDay,fieldError:this.kendoForm.errors[this.ks.fields.start],ariaLabel:i.toLanguageString(e.editorEventStart,e.messages[e.editorEventStart]),timezone:this.ks.timezone},null),t.createVNode("span",{class:"k-scheduler-datetime-label"},[i.toLanguageString(e.editorDateConnectorTo,e.messages[e.editorDateConnectorTo])]),t.createVNode(n.Field,{name:this.ks.fields.end,component:z,isAllDay:this.isAllDay,fieldError:this.kendoForm.errors[this.ks.fields.end],ariaLabel:i.toLanguageString(e.editorEventEnd,e.messages[e.editorEventEnd]),timezone:this.ks.timezone},null)]):t.createVNode(t.Fragment,null,[t.createVNode("div",{class:"k-scheduler-edit-form-row"},[t.createVNode(n.Field,{name:this.ks.fields.start,component:k,isAllDay:this.isAllDay,connector:i.toLanguageString(e.editorDateConnectorFrom,e.messages[e.editorDateConnectorFrom]),fieldError:this.kendoForm.errors[this.ks.fields.start],ariaLabel:i.toLanguageString(e.editorEventStart,e.messages[e.editorEventStart]),timeAriaLabel:i.toLanguageString(e.editorStartTimeAriaLabel,e.messages[e.editorStartTimeAriaLabel]),timezone:this.ks.timezone},null)]),!this.showTimezones&&t.createVNode(c.Button,{class:"k-col-span-2",fillMode:"flat",themeColor:"primary",title:i.toLanguageString(e.editorSetTimezoneTitle,e.messages[e.editorSetTimezoneTitle]),onClick:this.handleTimezoneToggle,svgIcon:a.globeIcon},g(r=i.toLanguageString(e.editorTimezoneButton,e.messages[e.editorTimezoneButton]))?r:{default:()=>[r]}),this.showTimezones&&t.createVNode(t.Fragment,null,[t.createVNode(n.Field,{name:this.ks.fields.startTimezone,component:F,dataItems:m,value:y,ariaLabel:i.toLanguageString(e.editorEventStartTimeZone,e.messages[e.editorEventStartTimeZone])},null),t.createVNode(c.Button,{title:i.toLanguageString(e.editorResetTimezoneTitle,e.messages[e.editorResetTimezoneTitle]),"aria-label":i.toLanguageString(e.editorResetTimezoneAriaLabel,e.messages[e.editorResetTimezoneAriaLabel]),onClick:this.handleTimezoneToggle,svgIcon:a.globeIcon,fillMode:"flat",themeColor:"primary"},null)]),t.createVNode("div",{class:"k-scheduler-edit-form-row"},[t.createVNode(n.Field,{name:this.ks.fields.end,component:z,isAllDay:this.isAllDay,connector:i.toLanguageString(e.editorDateConnectorTo,e.messages[e.editorDateConnectorTo]),fieldError:this.kendoForm.errors[this.ks.fields.end],ariaLabel:i.toLanguageString(e.editorEventEnd,e.messages[e.editorEventEnd]),timeAriaLabel:i.toLanguageString(e.editorEndTimeAriaLabel,e.messages[e.editorEndTimeAriaLabel]),timezone:this.ks.timezone},null)]),this.showTimezones&&t.createVNode(n.Field,{name:this.ks.fields.endTimezone,component:E,dataItems:m,value:this.kendoForm.valueGetter(this.ks.fields.endTimezone)||"",ariaLabel:i.toLanguageString(e.editorEventEndTimeZone,e.messages[e.editorEventEndTimeZone])},null)])]),this.showRecurrenceButton&&t.createVNode("div",{class:"k-scheduler-edit-form-row"},[t.createVNode(c.Button,{class:"k-scheduler-recurrence-button",type:"button",fillMode:"flat",themeColor:"primary",svgIcon:a.arrowRotateCwIcon,onClick:this.handleMakeRecurringClick},{default:()=>[this.recurrenceButtonTextTemplate?this.renderRecurrenceButtonTextTemplate():this.recurrenceButtonText]})])])])]}),t.createVNode(n.FieldWrapper,null,{default:()=>[t.createVNode(h.Label,{class:"k-form-label"},{default:()=>[t.createVNode(d.SvgIcon,{icon:a.commentIcon,size:"xlarge"},null)]}),t.createVNode("div",{class:"k-form-field-wrap"},[t.createVNode(n.Field,{component:b,name:this.ks.fields.description,id:"k-event-description",resizable:"vertical",placeholder:i.toLanguageString(e.editorEventDescription,e.messages[e.editorEventDescription]),"aria-label":i.toLanguageString(e.editorEventDescription,e.messages[e.editorEventDescription])},null)])]}),(this.ks.props.resources||[]).map(s=>t.createVNode(n.FieldWrapper,{key:s.field},{default:()=>[s.svgIcon&&t.createVNode(h.Label,{class:"k-form-label"},{default:()=>[t.createVNode(d.SvgIcon,{icon:s.svgIcon,size:"xlarge"},null)]}),t.createVNode("div",{class:"k-form-field-wrap"},[t.createVNode(n.Field,{name:s.field,component:L,resource:s,multiple:s.multiple,dataItems:s.data,textField:s.textField,valueField:s.valueField,colorField:s.colorField,ariaLabel:s.name||s.field},null)])]})),u]}),this.showRecurrenceDialog&&t.createVNode(q.SchedulerRecurrenceDialog,{value:this.recurrenceRule,start:this.start,timezone:this.ks.timezone||"",onSave:this.handleRecurrenceSave,onCancel:this.handleRecurrenceCancel,onRemoveRecurrence:this.handleRemoveRecurrenceClick,recurrenceSummaryTemplate:this.recurrenceSummaryTemplate,recurrenceEditor:this.recurrenceEditor},null),this.showRemoveRecurrenceDialog&&t.createVNode(A.RemoveRecurrenceConfirmDialog,{onConfirm:this.handleRemoveRecurrenceConfirm,onCancel:this.handleRemoveRecurrenceCancel},null),this.showTimezoneResetDialog&&t.createVNode(v.Dialog,{title:i.toLanguageString(e.resetTimezoneDialogTitle,e.messages[e.resetTimezoneDialogTitle]),onClose:this.handleTimezoneResetClose},{default:()=>[i.toLanguageString(e.resetTimezoneConfirmation,e.messages[e.resetTimezoneConfirmation]),t.createVNode(v.DialogActionsBar,null,{default:()=>[t.createVNode(c.Button,{onClick:this.handleTimezoneResetClose},g(o=i.toLanguageString(e.resetTimezoneNo,e.messages[e.resetTimezoneNo]))?o:{default:()=>[o]}),t.createVNode(c.Button,{themeColor:"primary",onClick:this.handleTimezoneResetConfirm},g(l=i.toLanguageString(e.resetTimezoneYes,e.messages[e.resetTimezoneYes]))?l:{default:()=>[l]})]})]})])},methods:{renderRecurrenceButtonTextTemplate(){const r=this.recurrenceButtonTextTemplate;return r?t.createVNode(r,{recurrenceRule:this.recurrenceRule},null):null},handleTimezoneToggle(r){r.preventDefault(),this.showTimezones?this.showTimezoneResetDialog=!0:(this.updateFormField(this.ks.fields.startTimezone,null),this.updateFormField(this.ks.fields.endTimezone,null),this.showTimezones=!0)},handleTimezoneResetConfirm(){this.updateFormField(this.ks.fields.startTimezone,null),this.updateFormField(this.ks.fields.endTimezone,null),this.showTimezones=!1,this.showTimezoneResetDialog=!1},handleTimezoneResetClose(){this.showTimezoneResetDialog=!1},handleMakeRecurringClick(){this.showRecurrenceDialog=!0},handleRecurrenceSave(r){this.updateFormField(this.ks.fields.recurrenceRule,r),this.showRecurrenceDialog=!1},handleRecurrenceCancel(){this.showRecurrenceDialog=!1},handleRemoveRecurrenceClick(){this.showRemoveRecurrenceDialog=!0},handleRemoveRecurrenceConfirm(){this.updateFormField(this.ks.fields.recurrenceRule,null),this.updateFormField(this.ks.fields.recurrenceExceptions,null),this.showRemoveRecurrenceDialog=!1,this.showRecurrenceDialog=!1},handleRemoveRecurrenceCancel(){this.showRemoveRecurrenceDialog=!1},updateFormField(r,o){this.kendoForm.onChange(r,{value:o}),this.$emit("change",r,{value:o})},requiredValidator(r){return r?void 0:this.requiredValidationMessage},startTimezoneValidator(r,o){return this.showTimezones?this.requiredValidator(o(this.ks.fields.startTimezone)):void 0},endTimezoneValidator(r,o){return this.showTimezones?this.requiredValidator(o(this.ks.fields.endTimezone))||this.requiredValidator(o(this.ks.fields.startTimezone)):void 0}},watch:{startTimezone(r,o){this.showTimezones&&r&&r!==o&&this.updateFormField(this.ks.fields.endTimezone,r)}}});exports.SchedulerFormEditor=j;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),F=require("@progress/kendo-date-math"),A=require("@progress/kendo-recurrence"),T=require("@progress/kendo-vue-labels"),k=require("@progress/kendo-vue-intl"),s=require("@progress/kendo-vue-form"),D=require("@progress/kendo-vue-inputs"),f=require("@progress/kendo-vue-common"),h=require("@progress/kendo-svg-icons"),p=require("@progress/kendo-vue-buttons"),E=require("@progress/kendo-vue-dialogs"),e=require("../messages/main.js"),I=require("../recurrence/RecurrenceEditor.js"),q=require("./ResourceEditor.js"),u=require("./ZonedSplitDateTime.js"),V=require("./TimezoneDropDownList.js"),j=require("./SchedulerRecurrenceDialog.js"),B=require("./RemoveRecurrenceConfirmDialog.js"),b=require("../hooks/useRecurrenceSummary.js");function v(r){return typeof r=="function"||Object.prototype.toString.call(r)==="[object Object]"&&!t.isVNode(r)}const x=t.defineComponent({name:"KendoSchedulerFormEditor",props:{as:[String,Function,Object],id:String,tabIndex:Number,titleEditor:{type:[String,Function,Object],default:function(){return D.TextBox}},startEditor:{type:[String,Function,Object],default:function(){return u.ZonedSplitDateTime}},startTimezoneEditor:{type:[String,Function,Object],default:function(){return V.TimezoneDropDownList}},endEditor:{type:[String,Function,Object],default:function(){return u.ZonedSplitDateTime}},endTimezoneEditor:{type:[String,Function,Object],default:function(){return V.TimezoneDropDownList}},allDayLabel:{type:[String,Function,Object],default:function(){return"span"}},allDayEditor:{type:[String,Function,Object],default:function(){return D.Switch}},recurrenceEditor:{type:[String,Function,Object],default:function(){return I.RecurrenceEditor}},descriptionEditor:{type:[String,Function,Object],default:function(){return D.TextArea}},resourceEditor:{type:[String,Function,Object],default:function(){return q.ResourceEditor}},recurrenceButtonTextTemplate:[Object,Function],recurrenceSummaryTemplate:[Object,Function],errors:Object,valid:Boolean,touched:Boolean,visited:Boolean,modified:Boolean,submitted:Boolean,allowSubmit:Boolean,valueGetter:Function},created(){this.requiredValidationMessage=void 0},inject:{ks:{default:null},kendoForm:{default:{}},kendoIntlService:{default:null},kendoLocalizationService:{default:null}},data(){const r=this.kendoForm,i=this.ks;return{showTimezones:!!r.valueGetter(i.fields.startTimezone),showTimezoneResetDialog:!1,showRecurrenceDialog:!1,showRemoveRecurrenceDialog:!1}},setup(){const r=t.inject("ks"),i=t.inject("kendoForm");let a=null,c;t.provide("schedulerEndAdjustment",o=>(c=o,()=>{c===o&&(c=void 0)}));const m=()=>{const o=i.valueGetter(r.fields.start),d=i.valueGetter(r.fields.end);o instanceof Date&&d instanceof Date&&Number.isFinite(o.getTime())&&Number.isFinite(d.getTime())&&d.getTime()>=o.getTime()&&(a={start:new Date(o),end:new Date(d)})},n=()=>{const o=i.valueGetter(r.fields.start);if(!a||!(o instanceof Date)||!Number.isFinite(o.getTime()))return;let d=new Date(o.getTime()+a.end.getTime()-a.start.getTime());if(i.valueGetter(r.fields.isAllDay)){const R=u.readDateAsLocal(a.start,r.timezone),S=u.readDateAsLocal(o,r.timezone),g=new Date(u.readDateAsLocal(a.end,r.timezone));g.setDate(g.getDate()+Math.round((u.dayValue(S)-u.dayValue(R))/F.MS_PER_DAY)),d=u.readDateWithTimezone(g,r.timezone)}i.onChange(r.fields.end,{value:c?c(d):d}),m()};return m(),t.watch([()=>i.valueGetter(r.fields.start),()=>i.valueGetter(r.fields.end)],m,{flush:"post"}),{handleStartChange:n,updatePreviousRange:m}},computed:{isAllDay(){return!!this.kendoForm.valueGetter(this.ks.fields.isAllDay)},start(){return this.kendoForm.valueGetter(this.ks.fields.start)||new Date},startTimezone(){return this.kendoForm.valueGetter(this.ks.fields.startTimezone)||""},recurrenceRule(){return this.kendoForm.valueGetter(this.ks.fields.recurrenceRule)},recurrenceId(){return this.kendoForm.valueGetter(this.ks.fields.recurrenceId)},isEditingOccurrence(){return this.recurrenceId!==void 0&&this.recurrenceId!==null},showRecurrenceButton(){return!this.isEditingOccurrence},recurrenceButtonText(){const r=k.provideLocalizationService(this),i=this.recurrenceRule?e.editorRecurrenceEdit:e.editorRecurrenceMakeRecurring;return r.toLanguageString(i,e.messages[i])},recurrenceSummaryText(){if(!this.recurrenceRule)return"";const r=k.provideIntlService(this),i=k.provideLocalizationService(this);return b.getRecurrenceSummary(this.recurrenceRule,this.start,r,(a,c)=>i.toLanguageString(a,c))},parsedRecurrenceRule(){return this.recurrenceRule?A.parseRule({recurrenceRule:this.recurrenceRule}):null}},render(){let r,i,a;const c=f.getDefaultSlots(this),m=F.timezoneNames(),n=k.provideLocalizationService(this),o=this.$props.startEditor,d=this.$props.endEditor,R=this.$props.startTimezoneEditor,S=this.$props.endTimezoneEditor,g=this.$props.allDayEditor,L=this.$props.allDayLabel,y=this.$props.descriptionEditor,N=this.$props.resourceEditor,C=this.$props.titleEditor,w=this.startTimezone;this.requiredValidationMessage=n.toLanguageString(e.editorValidationRequired,e.messages[e.editorValidationRequired]);const z=n.toLanguageString(e.editorEventAllDay,e.messages[e.editorEventAllDay]);return t.createVNode(t.Fragment,null,[t.createVNode(s.FormElement,{horizontal:!0,class:"k-scheduler-edit-form"},{default:()=>[t.createVNode(s.FieldWrapper,null,{default:()=>[t.createVNode(T.Label,{class:"k-form-label"},{default:()=>[t.createVNode(f.SvgIcon,{icon:h.rightDoubleQuotesIcon,size:"xlarge"},null)]}),t.createVNode("div",{class:"k-form-field-wrap"},[t.createVNode(s.Field,{id:"k-scheduler-editor-title",name:this.ks.fields.title,field:this.ks.fields.title,component:C,placeholder:n.toLanguageString(e.editorEventTitle,e.messages[e.editorEventTitle]),"aria-label":n.toLanguageString(e.editorEventTitle,e.messages[e.editorEventTitle])},null)])]}),t.createVNode(s.FieldWrapper,null,{default:()=>[t.createVNode(T.Label,{class:"k-form-label"},{default:()=>[t.createVNode(f.SvgIcon,{icon:h.clockIcon,size:"xlarge"},null)]}),t.createVNode("div",{class:"k-form-field-wrap"},[t.createVNode("div",{class:"k-scheduler-datetime-section"},[t.createVNode("div",{class:"k-scheduler-edit-form-row"},[t.createVNode(s.Field,{name:this.ks.fields.isAllDay,component:g,onLabel:"",offLabel:""},null),t.createVNode(L,null,v(z)?z:{default:()=>[z]})]),t.createVNode("div",{class:"k-scheduler-datetime-grid"},[this.isAllDay?t.createVNode("div",{class:"k-scheduler-edit-form-row"},[t.createVNode(s.Field,{name:this.ks.fields.start,component:o,onChange:this.handleStartChange,isAllDay:this.isAllDay,fieldError:this.kendoForm.errors[this.ks.fields.start],ariaLabel:n.toLanguageString(e.editorEventStart,e.messages[e.editorEventStart]),timezone:this.ks.timezone},null),t.createVNode("span",{class:"k-scheduler-datetime-label"},[n.toLanguageString(e.editorDateConnectorTo,e.messages[e.editorDateConnectorTo])]),t.createVNode(s.Field,{name:this.ks.fields.end,component:d,onChange:this.updatePreviousRange,isAllDay:this.isAllDay,fieldError:this.kendoForm.errors[this.ks.fields.end],ariaLabel:n.toLanguageString(e.editorEventEnd,e.messages[e.editorEventEnd]),timezone:this.ks.timezone},null)]):t.createVNode(t.Fragment,null,[t.createVNode("div",{class:"k-scheduler-edit-form-row"},[t.createVNode(s.Field,{name:this.ks.fields.start,component:o,onChange:this.handleStartChange,isAllDay:this.isAllDay,connector:n.toLanguageString(e.editorDateConnectorFrom,e.messages[e.editorDateConnectorFrom]),fieldError:this.kendoForm.errors[this.ks.fields.start],ariaLabel:n.toLanguageString(e.editorEventStart,e.messages[e.editorEventStart]),timeAriaLabel:n.toLanguageString(e.editorStartTimeAriaLabel,e.messages[e.editorStartTimeAriaLabel]),timezone:this.ks.timezone},null)]),!this.showTimezones&&t.createVNode(p.Button,{class:"k-col-span-2",fillMode:"flat",themeColor:"primary",title:n.toLanguageString(e.editorSetTimezoneTitle,e.messages[e.editorSetTimezoneTitle]),onClick:this.handleTimezoneToggle,svgIcon:h.globeIcon},v(r=n.toLanguageString(e.editorTimezoneButton,e.messages[e.editorTimezoneButton]))?r:{default:()=>[r]}),this.showTimezones&&t.createVNode(t.Fragment,null,[t.createVNode(s.Field,{name:this.ks.fields.startTimezone,component:R,dataItems:m,value:w,ariaLabel:n.toLanguageString(e.editorEventStartTimeZone,e.messages[e.editorEventStartTimeZone])},null),t.createVNode(p.Button,{title:n.toLanguageString(e.editorResetTimezoneTitle,e.messages[e.editorResetTimezoneTitle]),"aria-label":n.toLanguageString(e.editorResetTimezoneAriaLabel,e.messages[e.editorResetTimezoneAriaLabel]),onClick:this.handleTimezoneToggle,svgIcon:h.globeIcon,fillMode:"flat",themeColor:"primary"},null)]),t.createVNode("div",{class:"k-scheduler-edit-form-row"},[t.createVNode(s.Field,{name:this.ks.fields.end,component:d,onChange:this.updatePreviousRange,isAllDay:this.isAllDay,connector:n.toLanguageString(e.editorDateConnectorTo,e.messages[e.editorDateConnectorTo]),fieldError:this.kendoForm.errors[this.ks.fields.end],ariaLabel:n.toLanguageString(e.editorEventEnd,e.messages[e.editorEventEnd]),timeAriaLabel:n.toLanguageString(e.editorEndTimeAriaLabel,e.messages[e.editorEndTimeAriaLabel]),timezone:this.ks.timezone},null)]),this.showTimezones&&t.createVNode(s.Field,{name:this.ks.fields.endTimezone,component:S,dataItems:m,value:this.kendoForm.valueGetter(this.ks.fields.endTimezone)||"",ariaLabel:n.toLanguageString(e.editorEventEndTimeZone,e.messages[e.editorEventEndTimeZone])},null)])]),this.showRecurrenceButton&&t.createVNode("div",{class:"k-scheduler-edit-form-row"},[t.createVNode(p.Button,{class:"k-scheduler-recurrence-button",type:"button",fillMode:"flat",themeColor:"primary",svgIcon:h.arrowRotateCwIcon,onClick:this.handleMakeRecurringClick},{default:()=>[this.recurrenceButtonText]}),this.recurrenceRule&&(this.recurrenceSummaryTemplate||this.recurrenceSummaryText)&&b.renderRecurrenceSummary(this.recurrenceSummaryText,this.renderRecurrenceSummaryTemplate())])])])]}),t.createVNode(s.FieldWrapper,null,{default:()=>[t.createVNode(T.Label,{class:"k-form-label"},{default:()=>[t.createVNode(f.SvgIcon,{icon:h.commentIcon,size:"xlarge"},null)]}),t.createVNode("div",{class:"k-form-field-wrap"},[t.createVNode(s.Field,{component:y,name:this.ks.fields.description,id:"k-event-description",resizable:"vertical",placeholder:n.toLanguageString(e.editorEventDescription,e.messages[e.editorEventDescription]),"aria-label":n.toLanguageString(e.editorEventDescription,e.messages[e.editorEventDescription])},null)])]}),(this.ks.props.resources||[]).map(l=>t.createVNode(s.FieldWrapper,{key:l.field},{default:()=>[l.svgIcon&&t.createVNode(T.Label,{class:"k-form-label"},{default:()=>[t.createVNode(f.SvgIcon,{icon:l.svgIcon,size:"xlarge"},null)]}),t.createVNode("div",{class:"k-form-field-wrap"},[t.createVNode(s.Field,{name:l.field,component:N,resource:l,multiple:l.multiple,dataItems:l.data,textField:l.textField,valueField:l.valueField,colorField:l.colorField,ariaLabel:l.name||l.field},null)])]})),c]}),this.showRecurrenceDialog&&t.createVNode(j.SchedulerRecurrenceDialog,{value:this.recurrenceRule,start:this.start,timezone:this.ks.timezone||"",onSave:this.handleRecurrenceSave,onCancel:this.handleRecurrenceCancel,onRemoveRecurrence:this.handleRemoveRecurrenceClick,recurrenceSummaryTemplate:this.recurrenceSummaryTemplate,recurrenceEditor:this.recurrenceEditor},null),this.showRemoveRecurrenceDialog&&t.createVNode(B.RemoveRecurrenceConfirmDialog,{onConfirm:this.handleRemoveRecurrenceConfirm,onCancel:this.handleRemoveRecurrenceCancel},null),this.showTimezoneResetDialog&&t.createVNode(E.Dialog,{title:n.toLanguageString(e.resetTimezoneDialogTitle,e.messages[e.resetTimezoneDialogTitle]),onClose:this.handleTimezoneResetClose},{default:()=>[n.toLanguageString(e.resetTimezoneConfirmation,e.messages[e.resetTimezoneConfirmation]),t.createVNode(E.DialogActionsBar,null,{default:()=>[t.createVNode(p.Button,{onClick:this.handleTimezoneResetClose},v(i=n.toLanguageString(e.resetTimezoneNo,e.messages[e.resetTimezoneNo]))?i:{default:()=>[i]}),t.createVNode(p.Button,{themeColor:"primary",onClick:this.handleTimezoneResetConfirm},v(a=n.toLanguageString(e.resetTimezoneYes,e.messages[e.resetTimezoneYes]))?a:{default:()=>[a]})]})]})])},methods:{renderRecurrenceSummaryTemplate(){const r=this.recurrenceSummaryTemplate;return!r||!this.recurrenceRule?null:t.createVNode(r,{recurrenceRule:this.recurrenceRule,text:this.recurrenceSummaryText,parsedRule:this.parsedRecurrenceRule},null)},handleTimezoneToggle(r){r.preventDefault(),this.showTimezones?this.showTimezoneResetDialog=!0:(this.updateFormField(this.ks.fields.startTimezone,null),this.updateFormField(this.ks.fields.endTimezone,null),this.showTimezones=!0)},handleTimezoneResetConfirm(){this.updateFormField(this.ks.fields.startTimezone,null),this.updateFormField(this.ks.fields.endTimezone,null),this.showTimezones=!1,this.showTimezoneResetDialog=!1},handleTimezoneResetClose(){this.showTimezoneResetDialog=!1},handleMakeRecurringClick(){this.showRecurrenceDialog=!0},handleRecurrenceSave(r){this.updateFormField(this.ks.fields.recurrenceRule,r),this.showRecurrenceDialog=!1},handleRecurrenceCancel(){this.showRecurrenceDialog=!1},handleRemoveRecurrenceClick(){this.showRemoveRecurrenceDialog=!0},handleRemoveRecurrenceConfirm(){this.updateFormField(this.ks.fields.recurrenceRule,null),this.updateFormField(this.ks.fields.recurrenceExceptions,null),this.showRemoveRecurrenceDialog=!1,this.showRecurrenceDialog=!1},handleRemoveRecurrenceCancel(){this.showRemoveRecurrenceDialog=!1},updateFormField(r,i){this.kendoForm.onChange(r,{value:i}),this.$emit("change",r,{value:i})},requiredValidator(r){return r?void 0:this.requiredValidationMessage},startTimezoneValidator(r,i){return this.showTimezones?this.requiredValidator(i(this.ks.fields.startTimezone)):void 0},endTimezoneValidator(r,i){return this.showTimezones?this.requiredValidator(i(this.ks.fields.endTimezone))||this.requiredValidator(i(this.ks.fields.startTimezone)):void 0}},watch:{startTimezone(r,i){this.showTimezones&&r&&r!==i&&this.updateFormField(this.ks.fields.endTimezone,r)}}});exports.SchedulerFormEditor=x;