@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
@@ -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 i=require("vue"),n=require("@progress/kendo-vue-dateinputs"),l=require("@progress/kendo-date-math"),r=i.defineComponent({name:"KendoZonedSplitDateTime",props:{value:[Date,Object],isAllDay:Boolean,connector:String,connectorElement:[Object,Function,String],dateId:String,timeId:String,fieldError:String,ariaLabel:String,timeAriaLabel:String},emits:["change"],inject:{ks:{default:null}},computed:{timezone(){var e;return(e=this.ks)==null?void 0:e.timezone},localValue(){return this.readDateAsLocal(this.value,this.timezone)},isInvalid(){return!!this.fieldError}},render(){return this.isAllDay?i.createVNode(n.DatePicker,{id:this.dateId,value:this.localValue,onChange:this.handleDateChange,valid:!this.isInvalid,ariaLabel:this.ariaLabel},null):i.createVNode(i.Fragment,null,[i.createVNode(n.DatePicker,{id:this.dateId,value:this.localValue,onChange:this.handleDateChange,valid:!this.isInvalid,ariaLabel:this.ariaLabel},null),this.connectorElement||this.connector&&i.createVNode("span",{class:"k-scheduler-datetime-label"},[this.connector]),i.createVNode(n.TimePicker,{id:this.timeId,value:this.localValue,onChange:this.handleTimeChange,valid:!this.isInvalid,"aria-label":this.timeAriaLabel},null)])},methods:{handleDateChange(e){const t=e.value;if(!t)return;const a=new Date(t);this.localValue&&a.setHours(this.localValue.getHours(),this.localValue.getMinutes(),this.localValue.getSeconds()),this.$emit("change",{value:this.readDateWithTimezone(a,this.timezone)})},handleTimeChange(e){const t=e.value;if(!t)return;const a=new Date(this.localValue||new Date);a.setHours(t.getHours(),t.getMinutes(),0,0),this.$emit("change",{value:this.readDateWithTimezone(a,this.timezone)})},readDateAsLocal(e,t){if(e){if(!t)return e;const a=l.toLocalDate(l.ZonedDate.fromLocalDate(e,t).toUTCDate());return a.setUTCFullYear(e.getFullYear()),a}return null},readDateWithTimezone(e,t){return e&&(t?l.ZonedDate.fromUTCDate(new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())),t).toLocalDate():e)}}});exports.ZonedSplitDateTime=r;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("vue"),S=require("@progress/kendo-vue-dateinputs"),g=require("@progress/kendo-date-math");function h(e,n){if(!e)return null;if(!n)return e;const t=g.toLocalDate(g.ZonedDate.fromLocalDate(e,n).toUTCDate());return t.setUTCFullYear(e.getFullYear()),t}const D=(e,n)=>!e||!n?e:g.ZonedDate.fromUTCDate(new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())),n).toLocalDate(),u=e=>Date.UTC(e.getFullYear(),e.getMonth(),e.getDate()),L=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()),M=(e,n)=>u(e)===u(n),A=e=>e.reduce((n,t)=>!t||n&&n>=t?n:t,void 0),x={minute:15},B=s.defineComponent({name:"KendoZonedSplitDateTime",inheritAttrs:!1,props:{value:[Date,Object],isAllDay:Boolean,connector:String,connectorElement:[Object,Function,String],dateId:String,timeId:String,fieldError:String,ariaLabel:String,timeAriaLabel:String},emits:["change"],setup(e,{attrs:n}){const t=s.inject("ks",null),o=s.inject("kendoForm",null),f=s.ref(null);s.watch(()=>e.value,()=>{f.value=null});const l=i=>{const a=n[i];return a instanceof Date&&Number.isFinite(a.getTime())?a:void 0},p=()=>!!o&&!!t&&n.name===t.fields.end,m=()=>{const i=p()?o==null?void 0:o.valueGetter(t.fields.start):void 0;return i instanceof Date&&Number.isFinite(i.getTime())?i:void 0},V=()=>{const i=m();return i&&h(i,t==null?void 0:t.timezone)},r=i=>e.isAllDay?u(i):i.getTime(),w=i=>{const a=m(),d=h(i,t==null?void 0:t.timezone),c=l("min"),T=l("max");return!(a&&i.getTime()<a.getTime())&&!(c&&r(d)<r(c))&&!(T&&r(d)>r(T))},F=()=>{const i=A([V(),l("min")]);return i&&L(i)},b=i=>i?A([V(),l("min")].filter(a=>a&&M(a,i))):void 0,C=i=>{const a=l("max");return i&&a&&M(a,i)?a:void 0},E=i=>{const a=l("max"),d=h(i,t==null?void 0:t.timezone);if(!a||!d||r(d)<=r(a))return i;const c=new Date(e.isAllDay?d:a);return c.setFullYear(a.getFullYear(),a.getMonth(),a.getDate()),D(c,t==null?void 0:t.timezone)},y=s.inject("schedulerEndAdjustment",null);return p()&&y&&s.onUnmounted(y(E)),{ks:t,pendingValue:f,boundAttr:l,isInBounds:w,dateMin:F,timeMin:b,timeMax:C,modelStart:m}},computed:{timezone(){var e;return(e=this.ks)==null?void 0:e.timezone},localValue(){return this.readDateAsLocal(this.value,this.timezone)},displayValue(){return this.pendingValue||this.localValue},isInvalid(){return!!this.fieldError||!!this.pendingValue}},render(){const e=s.createVNode(S.DatePicker,{id:this.dateId,value:this.displayValue,min:this.dateMin(),max:this.boundAttr("max"),onChange:this.handleDateChange,onFocus:this.$attrs.onFocus,onBlur:this.handleBlur,onKeydown:this.handleKeyDown,valid:!this.isInvalid,ariaLabel:this.ariaLabel},null);return this.isAllDay?e:s.createVNode(s.Fragment,null,[e,this.connectorElement||this.connector&&s.createVNode("span",{class:"k-scheduler-datetime-label"},[this.connector]),s.createVNode(S.TimePicker,{id:this.timeId,value:this.displayValue,min:this.timeMin(this.displayValue),max:this.timeMax(this.displayValue),steps:x,onChange:this.handleTimeChange,onFocus:this.$attrs.onFocus,onBlur:this.handleBlur,onKeydown:this.handleKeyDown,valid:!this.isInvalid,"aria-label":this.timeAriaLabel},null)])},methods:{handleDateChange(e){const n=e.value;if(!n)return;const t=new Date(n);this.displayValue&&t.setHours(this.displayValue.getHours(),this.displayValue.getMinutes(),this.displayValue.getSeconds()),this.commit(t,e.event)},handleTimeChange(e){const n=e.value;if(!n)return;const t=new Date(this.displayValue||new Date);t.setHours(n.getHours(),n.getMinutes(),0,0),this.commit(t,e.event)},commit(e,n){let t=this.readDateWithTimezone(e,this.timezone);const o=this.modelStart();if(this.isAllDay&&o&&t.getTime()<o.getTime()&&u(e)===u(this.readDateAsLocal(o,this.timezone))&&(t=new Date(o.getTime())),this.isInBounds(t)){this.pendingValue=null,this.$emit("change",{value:t});return}this.pendingValue=(n==null?void 0:n.type)==="input"?e:null},handleBlur(e){var n,t;this.pendingValue=null,(t=(n=this.$attrs).onBlur)==null||t.call(n,e)},handleKeyDown(e){e.key==="Enter"&&this.pendingValue&&(e.preventDefault(),this.pendingValue=null)},readDateAsLocal:h,readDateWithTimezone:D}});exports.ZonedSplitDateTime=B;exports.dayValue=u;exports.readDateAsLocal=h;exports.readDateWithTimezone=D;
@@ -5,11 +5,22 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- import { defineComponent as r, createVNode as i, Fragment as o } from "vue";
9
- import { DatePicker as n, TimePicker as s } from "@progress/kendo-vue-dateinputs";
10
- import { ZonedDate as l, toLocalDate as h } from "@progress/kendo-date-math";
11
- const m = /* @__PURE__ */ r({
8
+ import { defineComponent as E, createVNode as c, Fragment as B, inject as g, ref as L, watch as I, onUnmounted as z } from "vue";
9
+ import { DatePicker as Y, TimePicker as K } from "@progress/kendo-vue-dateinputs";
10
+ import { ZonedDate as A, toLocalDate as U } from "@progress/kendo-date-math";
11
+ function h(t, n) {
12
+ if (!t)
13
+ return null;
14
+ if (!n)
15
+ return t;
16
+ const e = U(A.fromLocalDate(t, n).toUTCDate());
17
+ return e.setUTCFullYear(t.getFullYear()), e;
18
+ }
19
+ const T = (t, n) => !t || !n ? t : A.fromUTCDate(new Date(Date.UTC(t.getFullYear(), t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), t.getSeconds(), t.getMilliseconds())), n).toLocalDate(), u = (t) => Date.UTC(t.getFullYear(), t.getMonth(), t.getDate()), j = (t) => new Date(t.getFullYear(), t.getMonth(), t.getDate()), S = (t, n) => u(t) === u(n), w = (t) => t.reduce((n, e) => !e || n && n >= e ? n : e, void 0), H = {
20
+ minute: 15
21
+ }, O = /* @__PURE__ */ E({
12
22
  name: "KendoZonedSplitDateTime",
23
+ inheritAttrs: !1,
13
24
  props: {
14
25
  value: [Date, Object],
15
26
  isAllDay: Boolean,
@@ -22,79 +33,133 @@ const m = /* @__PURE__ */ r({
22
33
  timeAriaLabel: String
23
34
  },
24
35
  emits: ["change"],
25
- inject: {
26
- ks: {
27
- default: null
28
- }
36
+ setup(t, {
37
+ attrs: n
38
+ }) {
39
+ const e = g("ks", null), s = g("kendoForm", null), D = L(null);
40
+ I(() => t.value, () => {
41
+ D.value = null;
42
+ });
43
+ const o = (i) => {
44
+ const a = n[i];
45
+ return a instanceof Date && Number.isFinite(a.getTime()) ? a : void 0;
46
+ }, f = () => !!s && !!e && n.name === e.fields.end, m = () => {
47
+ const i = f() ? s == null ? void 0 : s.valueGetter(e.fields.start) : void 0;
48
+ return i instanceof Date && Number.isFinite(i.getTime()) ? i : void 0;
49
+ }, p = () => {
50
+ const i = m();
51
+ return i && h(i, e == null ? void 0 : e.timezone);
52
+ }, l = (i) => t.isAllDay ? u(i) : i.getTime(), F = (i) => {
53
+ const a = m(), r = h(i, e == null ? void 0 : e.timezone), d = o("min"), V = o("max");
54
+ return !(a && i.getTime() < a.getTime()) && !(d && l(r) < l(d)) && !(V && l(r) > l(V));
55
+ }, M = () => {
56
+ const i = w([p(), o("min")]);
57
+ return i && j(i);
58
+ }, b = (i) => i ? w([p(), o("min")].filter((a) => a && S(a, i))) : void 0, x = (i) => {
59
+ const a = o("max");
60
+ return i && a && S(a, i) ? a : void 0;
61
+ }, C = (i) => {
62
+ const a = o("max"), r = h(i, e == null ? void 0 : e.timezone);
63
+ if (!a || !r || l(r) <= l(a))
64
+ return i;
65
+ const d = new Date(t.isAllDay ? r : a);
66
+ return d.setFullYear(a.getFullYear(), a.getMonth(), a.getDate()), T(d, e == null ? void 0 : e.timezone);
67
+ }, y = g("schedulerEndAdjustment", null);
68
+ return f() && y && z(y(C)), {
69
+ ks: e,
70
+ pendingValue: D,
71
+ boundAttr: o,
72
+ isInBounds: F,
73
+ dateMin: M,
74
+ timeMin: b,
75
+ timeMax: x,
76
+ modelStart: m
77
+ };
29
78
  },
30
79
  computed: {
31
80
  timezone() {
32
- var e;
33
- return (e = this.ks) == null ? void 0 : e.timezone;
81
+ var t;
82
+ return (t = this.ks) == null ? void 0 : t.timezone;
34
83
  },
35
84
  localValue() {
36
85
  return this.readDateAsLocal(this.value, this.timezone);
37
86
  },
87
+ displayValue() {
88
+ return this.pendingValue || this.localValue;
89
+ },
38
90
  isInvalid() {
39
- return !!this.fieldError;
91
+ return !!this.fieldError || !!this.pendingValue;
40
92
  }
41
93
  },
42
94
  render() {
43
- return this.isAllDay ? i(n, {
44
- id: this.dateId,
45
- value: this.localValue,
46
- onChange: this.handleDateChange,
47
- valid: !this.isInvalid,
48
- ariaLabel: this.ariaLabel
49
- }, null) : i(o, null, [i(n, {
95
+ const t = c(Y, {
50
96
  id: this.dateId,
51
- value: this.localValue,
97
+ value: this.displayValue,
98
+ min: this.dateMin(),
99
+ max: this.boundAttr("max"),
52
100
  onChange: this.handleDateChange,
101
+ onFocus: this.$attrs.onFocus,
102
+ onBlur: this.handleBlur,
103
+ onKeydown: this.handleKeyDown,
53
104
  valid: !this.isInvalid,
54
105
  ariaLabel: this.ariaLabel
55
- }, null), this.connectorElement || this.connector && i("span", {
106
+ }, null);
107
+ return this.isAllDay ? t : c(B, null, [t, this.connectorElement || this.connector && c("span", {
56
108
  class: "k-scheduler-datetime-label"
57
- }, [this.connector]), i(s, {
109
+ }, [this.connector]), c(K, {
58
110
  id: this.timeId,
59
- value: this.localValue,
111
+ value: this.displayValue,
112
+ min: this.timeMin(this.displayValue),
113
+ max: this.timeMax(this.displayValue),
114
+ steps: H,
60
115
  onChange: this.handleTimeChange,
116
+ onFocus: this.$attrs.onFocus,
117
+ onBlur: this.handleBlur,
118
+ onKeydown: this.handleKeyDown,
61
119
  valid: !this.isInvalid,
62
120
  "aria-label": this.timeAriaLabel
63
121
  }, null)]);
64
122
  },
65
123
  methods: {
66
- handleDateChange(e) {
67
- const t = e.value;
68
- if (!t)
124
+ handleDateChange(t) {
125
+ const n = t.value;
126
+ if (!n)
69
127
  return;
70
- const a = new Date(t);
71
- this.localValue && a.setHours(this.localValue.getHours(), this.localValue.getMinutes(), this.localValue.getSeconds()), this.$emit("change", {
72
- value: this.readDateWithTimezone(a, this.timezone)
73
- });
128
+ const e = new Date(n);
129
+ this.displayValue && e.setHours(this.displayValue.getHours(), this.displayValue.getMinutes(), this.displayValue.getSeconds()), this.commit(e, t.event);
74
130
  },
75
- handleTimeChange(e) {
76
- const t = e.value;
77
- if (!t)
131
+ handleTimeChange(t) {
132
+ const n = t.value;
133
+ if (!n)
78
134
  return;
79
- const a = new Date(this.localValue || /* @__PURE__ */ new Date());
80
- a.setHours(t.getHours(), t.getMinutes(), 0, 0), this.$emit("change", {
81
- value: this.readDateWithTimezone(a, this.timezone)
82
- });
135
+ const e = new Date(this.displayValue || /* @__PURE__ */ new Date());
136
+ e.setHours(n.getHours(), n.getMinutes(), 0, 0), this.commit(e, t.event);
83
137
  },
84
- readDateAsLocal(e, t) {
85
- if (e) {
86
- if (!t)
87
- return e;
88
- const a = h(l.fromLocalDate(e, t).toUTCDate());
89
- return a.setUTCFullYear(e.getFullYear()), a;
138
+ commit(t, n) {
139
+ let e = this.readDateWithTimezone(t, this.timezone);
140
+ const s = this.modelStart();
141
+ if (this.isAllDay && s && e.getTime() < s.getTime() && u(t) === u(this.readDateAsLocal(s, this.timezone)) && (e = new Date(s.getTime())), this.isInBounds(e)) {
142
+ this.pendingValue = null, this.$emit("change", {
143
+ value: e
144
+ });
145
+ return;
90
146
  }
91
- return null;
147
+ this.pendingValue = (n == null ? void 0 : n.type) === "input" ? t : null;
92
148
  },
93
- readDateWithTimezone(e, t) {
94
- return e && (t ? l.fromUTCDate(new Date(Date.UTC(e.getFullYear(), e.getMonth(), e.getDate(), e.getHours(), e.getMinutes(), e.getSeconds(), e.getMilliseconds())), t).toLocalDate() : e);
95
- }
149
+ handleBlur(t) {
150
+ var n, e;
151
+ this.pendingValue = null, (e = (n = this.$attrs).onBlur) == null || e.call(n, t);
152
+ },
153
+ handleKeyDown(t) {
154
+ t.key === "Enter" && this.pendingValue && (t.preventDefault(), this.pendingValue = null);
155
+ },
156
+ readDateAsLocal: h,
157
+ readDateWithTimezone: T
96
158
  }
97
159
  });
98
160
  export {
99
- m as ZonedSplitDateTime
161
+ O as ZonedSplitDateTime,
162
+ u as dayValue,
163
+ h as readDateAsLocal,
164
+ T as readDateWithTimezone
100
165
  };
@@ -0,0 +1,10 @@
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 { WatchSource } from 'vue';
9
+ /** @hidden */
10
+ export declare const useCloseOnAnchorScrollOut: (show: WatchSource<boolean>, anchor: () => HTMLElement | null, onClose: () => void) => void;
@@ -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 f=require("vue"),h=/(auto|scroll|overlay)/,g=s=>{const r=[];let t=s.parentElement;for(;t;){const{overflow:l,overflowX:e,overflowY:c}=getComputedStyle(t);if(h.test(`${l}${e}${c}`)&&r.push(t),t.classList.contains("k-scheduler"))break;t=t.parentElement}return r},d=(s,r,t)=>{const l=s.getBoundingClientRect();let{top:e,left:c,right:i}=l;const n=s.querySelector(".k-scheduler-head");n&&!n.contains(r)&&(e=Math.max(e,n.getBoundingClientRect().bottom));const u=s.querySelector(".k-sticky-cell");if(u&&!r.closest(".k-sticky-cell")){const o=u.getBoundingClientRect();o.left-l.left<=l.right-o.right?c=Math.max(c,o.right):i=Math.min(i,o.left)}return t.bottom<=e||t.top>=l.bottom||t.right<=c||t.left>=i},m=(s,r,t)=>{f.watch([s,r],([l,e],c,i)=>{if(!l||!e)return;const n=g(e),u=()=>{const o=e.getBoundingClientRect();n.some(a=>d(a,e,o))&&t()};n.forEach(o=>o.addEventListener("scroll",u,{passive:!0})),i(()=>n.forEach(o=>o.removeEventListener("scroll",u)))},{immediate:!0,flush:"post"})};exports.useCloseOnAnchorScrollOut=m;
@@ -0,0 +1,43 @@
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 { watch as f } from "vue";
9
+ const h = /(auto|scroll|overlay)/, g = (s) => {
10
+ const r = [];
11
+ let t = s.parentElement;
12
+ for (; t; ) {
13
+ const { overflow: l, overflowX: e, overflowY: c } = getComputedStyle(t);
14
+ if (h.test(`${l}${e}${c}`) && r.push(t), t.classList.contains("k-scheduler"))
15
+ break;
16
+ t = t.parentElement;
17
+ }
18
+ return r;
19
+ }, d = (s, r, t) => {
20
+ const l = s.getBoundingClientRect();
21
+ let { top: e, left: c, right: i } = l;
22
+ const n = s.querySelector(".k-scheduler-head");
23
+ n && !n.contains(r) && (e = Math.max(e, n.getBoundingClientRect().bottom));
24
+ const a = s.querySelector(".k-sticky-cell");
25
+ if (a && !r.closest(".k-sticky-cell")) {
26
+ const o = a.getBoundingClientRect();
27
+ o.left - l.left <= l.right - o.right ? c = Math.max(c, o.right) : i = Math.min(i, o.left);
28
+ }
29
+ return t.bottom <= e || t.top >= l.bottom || t.right <= c || t.left >= i;
30
+ }, p = (s, r, t) => {
31
+ f([s, r], ([l, e], c, i) => {
32
+ if (!l || !e)
33
+ return;
34
+ const n = g(e), a = () => {
35
+ const o = e.getBoundingClientRect();
36
+ n.some((u) => d(u, e, o)) && t();
37
+ };
38
+ n.forEach((o) => o.addEventListener("scroll", a, { passive: !0 })), i(() => n.forEach((o) => o.removeEventListener("scroll", a)));
39
+ }, { immediate: !0, flush: "post" });
40
+ };
41
+ export {
42
+ p as useCloseOnAnchorScrollOut
43
+ };
@@ -0,0 +1,20 @@
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 { InternalDataAction } from '../models/InternalDataAction';
9
+ /** @hidden */
10
+ export declare const CUSTOM_EVENTS_CANCEL_KEY = "ksCustomEventsCancel";
11
+ /** @hidden */
12
+ export declare const useCustomEventsConfirmation: () => {
13
+ showCustomEventsDialog: import('vue').ComputedRef<boolean>;
14
+ confirmCustomEvents: (action: InternalDataAction, complete: (action: InternalDataAction) => void) => boolean;
15
+ handleCustomEventsKeep: () => void;
16
+ handleCustomEventsReset: () => void;
17
+ handleCustomEventsCancel: () => void;
18
+ cancelCustomEventsOnBack: () => boolean;
19
+ clearCustomEvents: () => void;
20
+ };
@@ -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 n=require("vue"),f=require("@progress/kendo-vue-common"),v=require("../constants/main.js"),a=require("../utils/main.js"),h="ksCustomEventsCancel",y=()=>{const t=n.inject("ks"),s=n.shallowRef(null);let l=null;const o=()=>{s.value=null,l=null},C=(e,r)=>!e.series||typeof e.resetExceptions=="boolean"||e.type!==v.DATA_ACTION.update&&e.type!==v.DATA_ACTION.remove||!(Array.isArray(e.dataItem)?e.dataItem:[e.dataItem]).some(u=>{const m=a.getSeriesMasterId(u,t.fields),d=t.dataItems.find(T=>a.getField(T,t.fields.id)===m),E=d&&a.getField(d,t.fields.recurrenceExceptions);return Array.isArray(E)&&E.length>0||a.findSeriesExceptions(t.dataItems,t.fields,m).length>0})?!1:(s.value||(l=document.activeElement instanceof HTMLElement?document.activeElement:null,s.value={action:{...e,dataItem:Array.isArray(e.dataItem)?e.dataItem.map(u=>f.clone(u)):f.clone(e.dataItem)},complete:r}),!0),c=e=>{const r=s.value;o(),r&&r.complete({...r.action,resetExceptions:e})},p=()=>c(!1),A=()=>c(!0),i=()=>{const e=l;o(),n.nextTick(()=>{e!=null&&e.isConnected&&e.focus({preventScroll:!0})})},I=()=>s.value?(i(),!0):!1;return n.watch([()=>t.currentDate,()=>t.activeViewName],o),n.onScopeDispose(o),{showCustomEventsDialog:n.computed(()=>s.value!==null),confirmCustomEvents:C,handleCustomEventsKeep:p,handleCustomEventsReset:A,handleCustomEventsCancel:i,cancelCustomEventsOnBack:I,clearCustomEvents:o}};exports.CUSTOM_EVENTS_CANCEL_KEY=h;exports.useCustomEventsConfirmation=y;
@@ -0,0 +1,48 @@
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 { inject as A, shallowRef as y, watch as x, onScopeDispose as T, computed as g, nextTick as S } from "vue";
9
+ import { clone as d } from "@progress/kendo-vue-common";
10
+ import { DATA_ACTION as f } from "../constants/main.mjs";
11
+ import { getSeriesMasterId as k, getField as p, findSeriesExceptions as w } from "../utils/main.mjs";
12
+ const L = "ksCustomEventsCancel", R = () => {
13
+ const t = A("ks"), s = y(null);
14
+ let o = null;
15
+ const n = () => {
16
+ s.value = null, o = null;
17
+ }, v = (e, r) => !e.series || typeof e.resetExceptions == "boolean" || e.type !== f.update && e.type !== f.remove || !(Array.isArray(e.dataItem) ? e.dataItem : [e.dataItem]).some((a) => {
18
+ const m = k(a, t.fields), u = t.dataItems.find((h) => p(h, t.fields.id) === m), i = u && p(u, t.fields.recurrenceExceptions);
19
+ return Array.isArray(i) && i.length > 0 || w(t.dataItems, t.fields, m).length > 0;
20
+ }) ? !1 : (s.value || (o = document.activeElement instanceof HTMLElement ? document.activeElement : null, s.value = {
21
+ action: {
22
+ ...e,
23
+ dataItem: Array.isArray(e.dataItem) ? e.dataItem.map((a) => d(a)) : d(e.dataItem)
24
+ },
25
+ complete: r
26
+ }), !0), l = (e) => {
27
+ const r = s.value;
28
+ n(), r && r.complete({ ...r.action, resetExceptions: e });
29
+ }, E = () => l(!1), C = () => l(!0), c = () => {
30
+ const e = o;
31
+ n(), S(() => {
32
+ e != null && e.isConnected && e.focus({ preventScroll: !0 });
33
+ });
34
+ }, I = () => s.value ? (c(), !0) : !1;
35
+ return x([() => t.currentDate, () => t.activeViewName], n), T(n), {
36
+ showCustomEventsDialog: g(() => s.value !== null),
37
+ confirmCustomEvents: v,
38
+ handleCustomEventsKeep: E,
39
+ handleCustomEventsReset: C,
40
+ handleCustomEventsCancel: c,
41
+ cancelCustomEventsOnBack: I,
42
+ clearCustomEvents: n
43
+ };
44
+ };
45
+ export {
46
+ L as CUSTOM_EVENTS_CANCEL_KEY,
47
+ R as useCustomEventsConfirmation
48
+ };
@@ -0,0 +1,12 @@
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
+ /** @hidden */
9
+ export declare const useDeferredClick: (delay?: number) => {
10
+ schedule: (callback: () => void) => void;
11
+ cancel: () => void;
12
+ };
@@ -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 c=require("vue"),n=(t=200)=>{let e=null;const l=()=>{e!==null&&(clearTimeout(e),e=null)},u=o=>{l(),e=setTimeout(()=>{e=null,o()},t)};return c.onScopeDispose(l),{schedule:u,cancel:l}};exports.useDeferredClick=n;
@@ -0,0 +1,22 @@
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 { onScopeDispose as u } from "vue";
9
+ const r = (o = 200) => {
10
+ let e = null;
11
+ const l = () => {
12
+ e !== null && (clearTimeout(e), e = null);
13
+ }, t = (n) => {
14
+ l(), e = setTimeout(() => {
15
+ e = null, n();
16
+ }, o);
17
+ };
18
+ return u(l), { schedule: t, cancel: l };
19
+ };
20
+ export {
21
+ r as useDeferredClick
22
+ };
@@ -0,0 +1,26 @@
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
+ /** @hidden */
9
+ export declare const POPOVER_COORDINATOR_KEY = "ksPopoverCoordinator";
10
+ /** @hidden */
11
+ export interface SchedulerPopoverCoordinator {
12
+ activate(close: () => void): void;
13
+ release(close: () => void): void;
14
+ }
15
+ /**
16
+ * @hidden
17
+ *
18
+ * Tracks the single open Scheduler popover (quick create or event overview).
19
+ */
20
+ export declare const createPopoverCoordinator: () => SchedulerPopoverCoordinator;
21
+ /**
22
+ * @hidden
23
+ *
24
+ * Closes any other open Scheduler popover when `isOpen` becomes `true`, so the last interaction wins.
25
+ */
26
+ export declare const useExclusivePopover: (isOpen: () => boolean, close: () => void) => void;
@@ -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"),i="ksPopoverCoordinator",s=()=>{let r=null;return{activate(e){const o=r;r=e,o&&o!==e&&o()},release(e){r===e&&(r=null)}}},a=(r,e)=>{const o=t.inject(i,null);o&&(t.watch(r,n=>{n?o.activate(e):o.release(e)},{flush:"sync"}),t.onScopeDispose(()=>o.release(e)))};exports.POPOVER_COORDINATOR_KEY=i;exports.createPopoverCoordinator=s;exports.useExclusivePopover=a;
@@ -0,0 +1,30 @@
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 { inject as n, watch as i, onScopeDispose as s } from "vue";
9
+ const a = "ksPopoverCoordinator", l = () => {
10
+ let r = null;
11
+ return {
12
+ activate(e) {
13
+ const o = r;
14
+ r = e, o && o !== e && o();
15
+ },
16
+ release(e) {
17
+ r === e && (r = null);
18
+ }
19
+ };
20
+ }, u = (r, e) => {
21
+ const o = n(a, null);
22
+ o && (i(r, (t) => {
23
+ t ? o.activate(e) : o.release(e);
24
+ }, { flush: "sync" }), s(() => o.release(e)));
25
+ };
26
+ export {
27
+ a as POPOVER_COORDINATOR_KEY,
28
+ l as createPopoverCoordinator,
29
+ u as useExclusivePopover
30
+ };
@@ -5,6 +5,9 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
+ import { VNode } from 'vue';
8
9
  import { IntlService } from '@progress/kendo-vue-intl';
9
10
  /** @hidden */
11
+ export declare const renderRecurrenceSummary: (text: string, template: VNode | null) => VNode;
12
+ /** @hidden */
10
13
  export declare function getRecurrenceSummary(recurrenceRule: string | null, start: Date, intl: IntlService, localizeMessage: (key: string, defaultMessage: string) => string): string;
@@ -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 O=require("@progress/kendo-date-math"),r=require("../recurrence/common.js"),a=require("../messages/main.js");function R(f,i,u,D){var w,x,W,M,p,q;if(!f)return"";const g=(t,y)=>{const c=y?t:"scheduler.recurrenceEditor"+t;return D(c,a.messages[c])},e=r.getRule(f);if(!e.freq||e.freq==="never")return"";const v=r.getWeekDays(u),B=r.getExtendedWeekDays(u,g),k=r.getWeekDay(B,e,i),C=r.getMonths(u),h=r.getMonth(C,e),L=r.getOffsets(g),d=r.getOffset(L,e),S=r.getMonthDay(e,i),b=r.getRepeatOnRule(e),s=e.interval||1,o=(t,...y)=>{let c=D(t,a.messages[t]);return y.forEach((m,l)=>{c=c.replace(`{${l}}`,String(m))}),c};let n="";switch(e.freq){case"daily":n=o(a.recurrenceSummaryDaily,s);break;case"weekly":{const t=(e.byWeekDay||[]).map(({day:c})=>{var m;return(m=v.find(l=>l.value===c))==null?void 0:m.text}).filter(Boolean),y=t.length>0?t.join(", "):"";n=o(a.recurrenceSummaryWeekly,s,y);break}case"monthly":{if(b==="weekday"&&((w=e.byWeekDay)!=null&&w.length))n=o(a.recurrenceSummaryMonthlyByWeekDay,s,d.text.toLowerCase(),k.text.toLowerCase());else{const t=(W=(x=e.byMonthDay)==null?void 0:x[0])!=null?W:S;n=o(a.recurrenceSummaryMonthlyByDay,s,t)}break}case"yearly":{if(b==="weekday"&&((M=e.byWeekDay)!=null&&M.length))n=o(a.recurrenceSummaryYearlyByWeekDay,s,d.text.toLowerCase(),k.text.toLowerCase(),h.text);else{const t=(q=(p=e.byMonthDay)==null?void 0:p[0])!=null?q:S;n=o(a.recurrenceSummaryYearlyByDay,s,h.text,t)}break}}return e.count?n+=o(a.recurrenceSummaryCount,e.count):e.until&&(n+=o(a.recurrenceSummaryUntil,u.formatDate(O.toLocalDate(e.until),"D"))),n}exports.getRecurrenceSummary=R;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const R=require("vue"),E=require("@progress/kendo-date-math"),a=require("../recurrence/common.js"),c=require("../messages/main.js"),f=new WeakMap,B=(t,n)=>{const o=f.get(t);if(!n.value){o==null||o.disconnect(),f.delete(t);return}const l=()=>{var u;t.title=((u=t.textContent)==null?void 0:u.trim())||""};if(l(),!o){const u=new MutationObserver(l);u.observe(t,{childList:!0,characterData:!0,subtree:!0}),f.set(t,u)}},N={mounted:B,updated:B,unmounted(t){var n;(n=f.get(t))==null||n.disconnect(),f.delete(t)}},j=(t,n)=>R.withDirectives(R.h("div",{class:"k-form-hint k-scheduler-recurrence-summary",title:n?void 0:t},[n||t]),[[N,!!n]]);function Y(t,n,o,l){var w,W,M,x,p,q;if(!t)return"";const u=(r,d)=>{const m=d?r:"scheduler.recurrenceEditor"+r;return l(m,c.messages[m])},e=a.getRule(t);if(!e.freq||e.freq==="never")return"";const C=a.getWeekDays(o),L=a.getExtendedWeekDays(o,u),k=a.getWeekDay(L,e,n),O=a.getMonths(o),g=a.getMonth(O,e),T=a.getOffsets(u),S=a.getOffset(T,e),b=a.getMonthDay(e,n),v=a.getRepeatOnRule(e),i=e.interval||1,y=(r,...d)=>{let m=l(r,c.messages[r]);return d.forEach((D,h)=>{m=m.replace(`{${h}}`,String(D))}),m};let s="";switch(e.freq){case"daily":s=y(c.recurrenceSummaryDaily,i);break;case"weekly":{const r=(e.byWeekDay||[]).map(({day:m})=>{var D;return(D=C.find(h=>h.value===m))==null?void 0:D.text}).filter(Boolean),d=r.length>0?r.join(", "):"";s=y(c.recurrenceSummaryWeekly,i,d);break}case"monthly":{if(v==="weekday"&&((w=e.byWeekDay)!=null&&w.length))s=y(c.recurrenceSummaryMonthlyByWeekDay,i,S.text.toLowerCase(),k.text.toLowerCase());else{const r=(M=(W=e.byMonthDay)==null?void 0:W[0])!=null?M:b;s=y(c.recurrenceSummaryMonthlyByDay,i,r)}break}case"yearly":{if(v==="weekday"&&((x=e.byWeekDay)!=null&&x.length))s=y(c.recurrenceSummaryYearlyByWeekDay,i,S.text.toLowerCase(),k.text.toLowerCase(),g.text);else{const r=(q=(p=e.byMonthDay)==null?void 0:p[0])!=null?q:b;s=y(c.recurrenceSummaryYearlyByDay,i,g.text,r)}break}}return e.count?s+=y(c.recurrenceSummaryCount,e.count):e.until&&(s+=y(c.recurrenceSummaryUntil,o.formatDate(E.toLocalDate(e.until),"D"))),s}exports.getRecurrenceSummary=Y;exports.renderRecurrenceSummary=j;