@progress/kendo-angular-scheduler 21.4.1-develop.1 → 22.0.0-develop.1

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 (197) hide show
  1. package/editing/recurrence/localization/messages.d.ts +1 -1
  2. package/editing/resource-editor-base.d.ts +1 -1
  3. package/editing-directives/editing-directive-base.d.ts +1 -1
  4. package/fesm2022/progress-kendo-angular-scheduler.mjs +313 -313
  5. package/localization/messages.d.ts +1 -1
  6. package/package.json +20 -28
  7. package/schematics/ngAdd/index.js +3 -3
  8. package/views/common/base-view.d.ts +1 -1
  9. package/views/common/configuration-view-base.d.ts +1 -1
  10. package/views/day-time/day-time-view-base.d.ts +1 -1
  11. package/views/day-time/day-time-view.component.d.ts +1 -1
  12. package/views/multi-day/multi-day-view-base.d.ts +1 -1
  13. package/views/timeline/timeline-base.d.ts +1 -1
  14. package/views/view-items/base-slot.directive.d.ts +1 -1
  15. package/views/view-items/base-view-item.d.ts +1 -1
  16. package/esm2022/common/constants.mjs +0 -8
  17. package/esm2022/common/default-model-fields.mjs +0 -20
  18. package/esm2022/common/dom-queries.mjs +0 -107
  19. package/esm2022/common/modifiers.mjs +0 -31
  20. package/esm2022/common/util.mjs +0 -227
  21. package/esm2022/data-binding.directive.mjs +0 -162
  22. package/esm2022/directives.mjs +0 -136
  23. package/esm2022/editing/date-time-picker.component.mjs +0 -190
  24. package/esm2022/editing/dialogs.service.mjs +0 -96
  25. package/esm2022/editing/edit-dialog-template.directive.mjs +0 -53
  26. package/esm2022/editing/edit-dialog.component.mjs +0 -679
  27. package/esm2022/editing/edit.service.mjs +0 -107
  28. package/esm2022/editing/local-data-changes.service.mjs +0 -18
  29. package/esm2022/editing/recurrence/end-rule-radio-button.directive.mjs +0 -77
  30. package/esm2022/editing/recurrence/localization/custom-messages.component.mjs +0 -44
  31. package/esm2022/editing/recurrence/localization/localized-messages.directive.mjs +0 -39
  32. package/esm2022/editing/recurrence/localization/messages.mjs +0 -239
  33. package/esm2022/editing/recurrence/localization/recurrence-localization.service.mjs +0 -47
  34. package/esm2022/editing/recurrence/recurrence-editor.component.mjs +0 -497
  35. package/esm2022/editing/recurrence/recurrence-end-rule-editor.component.mjs +0 -334
  36. package/esm2022/editing/recurrence/recurrence-frequency-editor.component.mjs +0 -105
  37. package/esm2022/editing/recurrence/recurrence-interval-editor.component.mjs +0 -169
  38. package/esm2022/editing/recurrence/recurrence-monthly-yearly-editor.component.mjs +0 -468
  39. package/esm2022/editing/recurrence/recurrence-weekday-rule-editor.component.mjs +0 -138
  40. package/esm2022/editing/recurrence/recurrence.service.mjs +0 -254
  41. package/esm2022/editing/recurrence/repeat-on-radio-button.directive.mjs +0 -81
  42. package/esm2022/editing/resource-editor-base.mjs +0 -59
  43. package/esm2022/editing/resource-multiple-editor.component.mjs +0 -101
  44. package/esm2022/editing/resource-single-editor.component.mjs +0 -82
  45. package/esm2022/editing/timezone-editor.component.mjs +0 -193
  46. package/esm2022/editing-directives/base-edit.service.mjs +0 -320
  47. package/esm2022/editing-directives/edit-service.interface.mjs +0 -5
  48. package/esm2022/editing-directives/editing-directive-base.mjs +0 -242
  49. package/esm2022/editing-directives/local-edit.service.mjs +0 -122
  50. package/esm2022/editing-directives/reactive-editing.directive.mjs +0 -132
  51. package/esm2022/editing-directives/utils.mjs +0 -107
  52. package/esm2022/events/add-event.mjs +0 -26
  53. package/esm2022/events/cancel-event.mjs +0 -14
  54. package/esm2022/events/create-event.mjs +0 -40
  55. package/esm2022/events/date-change-event.mjs +0 -29
  56. package/esm2022/events/drag-end-event.mjs +0 -46
  57. package/esm2022/events/drag-event.mjs +0 -54
  58. package/esm2022/events/drag-start-event.mjs +0 -30
  59. package/esm2022/events/edit-event-base.mjs +0 -32
  60. package/esm2022/events/edit-event.mjs +0 -30
  61. package/esm2022/events/event-click-event.mjs +0 -32
  62. package/esm2022/events/event-keydown-event.mjs +0 -28
  63. package/esm2022/events/more-events-click.mjs +0 -24
  64. package/esm2022/events/navigate-event.mjs +0 -26
  65. package/esm2022/events/preventable-event.mjs +0 -28
  66. package/esm2022/events/remove-event.mjs +0 -30
  67. package/esm2022/events/resize-end-event.mjs +0 -38
  68. package/esm2022/events/resize-event.mjs +0 -46
  69. package/esm2022/events/resize-start-event.mjs +0 -30
  70. package/esm2022/events/save-event.mjs +0 -18
  71. package/esm2022/events/slot-click-event.mjs +0 -44
  72. package/esm2022/events/slot-drag-end-event.mjs +0 -10
  73. package/esm2022/events/slot-drag-event.mjs +0 -40
  74. package/esm2022/events/slot-drag-start-event.mjs +0 -44
  75. package/esm2022/events/view-event-map.mjs +0 -35
  76. package/esm2022/events.mjs +0 -27
  77. package/esm2022/index.mjs +0 -83
  78. package/esm2022/loading.component.mjs +0 -52
  79. package/esm2022/localization/custom-messages.component.mjs +0 -56
  80. package/esm2022/localization/localized-messages.directive.mjs +0 -39
  81. package/esm2022/localization/messages.mjs +0 -614
  82. package/esm2022/localization/scheduler-localization.service.mjs +0 -31
  83. package/esm2022/navigation/focus-position.interface.mjs +0 -5
  84. package/esm2022/navigation/focus.service.mjs +0 -202
  85. package/esm2022/navigation/focusable-element.interface.mjs +0 -5
  86. package/esm2022/navigation/focusable.directive.mjs +0 -98
  87. package/esm2022/navigation/shortcuts.directive.mjs +0 -239
  88. package/esm2022/navigation.mjs +0 -6
  89. package/esm2022/package-metadata.mjs +0 -16
  90. package/esm2022/pdf/pdf-command.directive.mjs +0 -96
  91. package/esm2022/pdf/pdf-export-event.mjs +0 -10
  92. package/esm2022/pdf/pdf.component.mjs +0 -241
  93. package/esm2022/pdf/pdf.module.mjs +0 -42
  94. package/esm2022/pdf/pdf.service.mjs +0 -36
  95. package/esm2022/progress-kendo-angular-scheduler.mjs +0 -8
  96. package/esm2022/scheduler.component.mjs +0 -1981
  97. package/esm2022/scheduler.module.mjs +0 -138
  98. package/esm2022/toolbar/navigation.component.mjs +0 -391
  99. package/esm2022/toolbar/toolbar-context.mjs +0 -5
  100. package/esm2022/toolbar/toolbar-template.directive.mjs +0 -50
  101. package/esm2022/toolbar/toolbar.component.mjs +0 -168
  102. package/esm2022/toolbar/toolbar.service.mjs +0 -46
  103. package/esm2022/toolbar/view-selector.component.mjs +0 -181
  104. package/esm2022/types/actions.mjs +0 -5
  105. package/esm2022/types/create-form-group-args.interface.mjs +0 -5
  106. package/esm2022/types/crud-operation.enum.mjs +0 -18
  107. package/esm2022/types/current-time-settings.interface.mjs +0 -5
  108. package/esm2022/types/date-range.interface.mjs +0 -5
  109. package/esm2022/types/datepicker-options.interface.mjs +0 -5
  110. package/esm2022/types/edit-event-args.interface.mjs +0 -5
  111. package/esm2022/types/edit-mode.enum.mjs +0 -23
  112. package/esm2022/types/editable-settings.interface.mjs +0 -5
  113. package/esm2022/types/event-style-args.interface.mjs +0 -5
  114. package/esm2022/types/focusable-container.mjs +0 -5
  115. package/esm2022/types/group.interface.mjs +0 -5
  116. package/esm2022/types/numeric-options.interface.mjs +0 -5
  117. package/esm2022/types/ongoing-events-settings.interface.mjs +0 -5
  118. package/esm2022/types/resource.interface.mjs +0 -5
  119. package/esm2022/types/scheduler-event.mjs +0 -5
  120. package/esm2022/types/scheduler-model-fields.interface.mjs +0 -5
  121. package/esm2022/types/scheduler-slot.interface.mjs +0 -5
  122. package/esm2022/types/scheduler-view.mjs +0 -9
  123. package/esm2022/types/slot-class-args.interface.mjs +0 -5
  124. package/esm2022/types/slot-selection.mjs +0 -35
  125. package/esm2022/types/view-item.interface.mjs +0 -5
  126. package/esm2022/types.mjs +0 -12
  127. package/esm2022/views/agenda/agenda-header-item.component.mjs +0 -85
  128. package/esm2022/views/agenda/agenda-header.component.mjs +0 -75
  129. package/esm2022/views/agenda/agenda-task-item.component.mjs +0 -137
  130. package/esm2022/views/agenda/agenda-view-internal.component.mjs +0 -424
  131. package/esm2022/views/agenda/agenda-view-list.component.mjs +0 -256
  132. package/esm2022/views/agenda/agenda-view.component.mjs +0 -130
  133. package/esm2022/views/agenda/tasks.collection.mjs +0 -96
  134. package/esm2022/views/agenda/utils.mjs +0 -176
  135. package/esm2022/views/common/base-view.mjs +0 -1099
  136. package/esm2022/views/common/configuration-view-base.mjs +0 -164
  137. package/esm2022/views/common/dom-events.service.mjs +0 -22
  138. package/esm2022/views/common/hint-container.component.mjs +0 -41
  139. package/esm2022/views/common/repeat.pipe.mjs +0 -36
  140. package/esm2022/views/common/resize-hint.component.mjs +0 -97
  141. package/esm2022/views/common/resource-iterator.pipe.mjs +0 -49
  142. package/esm2022/views/common/scheduler-task.mjs +0 -5
  143. package/esm2022/views/common/slot-selectable.directive.mjs +0 -137
  144. package/esm2022/views/common/view-footer.component.mjs +0 -103
  145. package/esm2022/views/common/work-hours-footer.directive.mjs +0 -45
  146. package/esm2022/views/constants.mjs +0 -31
  147. package/esm2022/views/day-time/day-time-slot.service.mjs +0 -633
  148. package/esm2022/views/day-time/day-time-view-base.mjs +0 -244
  149. package/esm2022/views/day-time/day-time-view-item.component.mjs +0 -216
  150. package/esm2022/views/day-time/day-time-view.component.mjs +0 -437
  151. package/esm2022/views/day-time/event-slot.directive.mjs +0 -138
  152. package/esm2022/views/day-time/utils.mjs +0 -32
  153. package/esm2022/views/month/month-slot.component.mjs +0 -166
  154. package/esm2022/views/month/month-slot.service.mjs +0 -404
  155. package/esm2022/views/month/month-view-item.component.mjs +0 -161
  156. package/esm2022/views/month/month-view-renderer.component.mjs +0 -683
  157. package/esm2022/views/month/month-view.component.mjs +0 -203
  158. package/esm2022/views/month/multi-week-view.component.mjs +0 -202
  159. package/esm2022/views/month/utils.mjs +0 -107
  160. package/esm2022/views/multi-day/day-view.component.mjs +0 -186
  161. package/esm2022/views/multi-day/multi-day-view-base.mjs +0 -55
  162. package/esm2022/views/multi-day/multi-day-view-renderer.component.mjs +0 -1002
  163. package/esm2022/views/multi-day/multi-day-view.component.mjs +0 -197
  164. package/esm2022/views/multi-day/utils.mjs +0 -63
  165. package/esm2022/views/multi-day/week-view.component.mjs +0 -189
  166. package/esm2022/views/multi-day/work-week-view.component.mjs +0 -172
  167. package/esm2022/views/scheduler-view.directive.mjs +0 -65
  168. package/esm2022/views/templates/agenda-date-template.directive.mjs +0 -41
  169. package/esm2022/views/templates/agenda-time-template.directive.mjs +0 -46
  170. package/esm2022/views/templates/all-day-event-template.directive.mjs +0 -42
  171. package/esm2022/views/templates/all-day-slot-template.directive.mjs +0 -42
  172. package/esm2022/views/templates/date-header-template.directive.mjs +0 -42
  173. package/esm2022/views/templates/event-template.directive.mjs +0 -42
  174. package/esm2022/views/templates/group-header-template.directive.mjs +0 -42
  175. package/esm2022/views/templates/major-time-header-template.directive.mjs +0 -41
  176. package/esm2022/views/templates/minor-time-header-template.directive.mjs +0 -41
  177. package/esm2022/views/templates/month-day-slot-template.directive.mjs +0 -42
  178. package/esm2022/views/templates/multi-week-day-slot-template.directive.mjs +0 -42
  179. package/esm2022/views/templates/time-slot-template.directive.mjs +0 -43
  180. package/esm2022/views/templates.mjs +0 -16
  181. package/esm2022/views/timeline/timeline-base.mjs +0 -39
  182. package/esm2022/views/timeline/timeline-month-view.component.mjs +0 -211
  183. package/esm2022/views/timeline/timeline-multi-day-view.component.mjs +0 -649
  184. package/esm2022/views/timeline/timeline-view.component.mjs +0 -189
  185. package/esm2022/views/timeline/timeline-week-view.component.mjs +0 -181
  186. package/esm2022/views/timeline/utils.mjs +0 -60
  187. package/esm2022/views/utils.mjs +0 -373
  188. package/esm2022/views/view-context.service.mjs +0 -111
  189. package/esm2022/views/view-items/base-slot.directive.mjs +0 -104
  190. package/esm2022/views/view-items/base-slot.service.mjs +0 -82
  191. package/esm2022/views/view-items/base-view-item.mjs +0 -194
  192. package/esm2022/views/view-items/item-map.mjs +0 -38
  193. package/esm2022/views/view-items/types.mjs +0 -5
  194. package/esm2022/views/view-state.service.mjs +0 -144
  195. package/esm2022/views/year/utils.mjs +0 -60
  196. package/esm2022/views/year/year-view-internal.component.mjs +0 -471
  197. package/esm2022/views/year/year-view.component.mjs +0 -136
@@ -1,468 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { Component, ViewChildren, QueryList, Input } from '@angular/core';
6
- import { RecurrenceService } from './recurrence.service';
7
- import { isPresent } from '../../common/util';
8
- import { dayRule, weekdayRule, weekendRule } from './recurrence.service';
9
- import { RepeatOnRadioButtonDirective } from './repeat-on-radio-button.directive';
10
- import { LocalizationService } from '@progress/kendo-angular-l10n';
11
- import { NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent } from '@progress/kendo-angular-inputs';
12
- import { DropDownListComponent } from '@progress/kendo-angular-dropdowns';
13
- import { LabelComponent, LabelDirective } from '@progress/kendo-angular-label';
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "./recurrence.service";
16
- import * as i2 from "@progress/kendo-angular-l10n";
17
- /**
18
- * @hidden
19
- */
20
- export class RecurrenceMonthlyYearlyEditorComponent {
21
- recurrence;
22
- localization;
23
- set userNumericOptions(options) {
24
- this.numericOptions = { ...this.numericOptions, ...options };
25
- }
26
- repeatOnRadioButtons;
27
- extendedWeekDays;
28
- offsetPositions;
29
- months;
30
- currentMonthDay;
31
- currentMonthMonthDay;
32
- currentMonthWeekDay;
33
- currentOffset;
34
- currentWeekDay;
35
- uniqueId;
36
- numericOptions = {
37
- min: 1,
38
- max: 31,
39
- format: '#',
40
- autoCorrect: true,
41
- step: 1,
42
- spinners: true
43
- };
44
- subs;
45
- constructor(recurrence, localization) {
46
- this.recurrence = recurrence;
47
- this.localization = localization;
48
- this.uniqueId = this.recurrence.getUniqueId();
49
- this.setInitialValues();
50
- this.subscribeEventHandlers();
51
- }
52
- setInitialValues() {
53
- this.extendedWeekDays = this.recurrence.extendedWeekDays;
54
- this.offsetPositions = this.recurrence.offsetPositions;
55
- this.currentOffset = this.defaultOffset;
56
- this.currentWeekDay = this.defaultWeekDay;
57
- if (this.currentFreq === 'yearly') {
58
- this.months = this.recurrence.months;
59
- this.currentMonthMonthDay = this.currentMonthWeekDay = this.recurrence.rrule.byMonth[0];
60
- }
61
- }
62
- subscribeEventHandlers() {
63
- this.subs = this.recurrence.repeatOnRuleChange.subscribe(this.onRepeatOnRuleChange.bind(this));
64
- this.subs.add(this.recurrence.frequencyChange.subscribe(this.onFrequencyChange.bind(this)));
65
- }
66
- onRepeatOnRuleChange(newRepeatOnRule) {
67
- if (newRepeatOnRule === 'monthday') {
68
- this.recurrence.rrule.byMonthDay = [this.monthDay];
69
- if (this.currentFreq === 'yearly') {
70
- this.recurrence.rrule.byMonth = [this.currentMonthMonthDay];
71
- }
72
- }
73
- else if (newRepeatOnRule === 'weekday') {
74
- if (typeof this.weekDay === 'string') {
75
- /* day, weekday or weekend */
76
- this.recurrence.rrule.bySetPosition = [this.offset];
77
- this.recurrence.rrule.byWeekDay = this.weekDayRuleFromString(this.weekDay);
78
- }
79
- else {
80
- /* specific weekday */
81
- this.recurrence.rrule.byWeekDay = [{
82
- day: this.weekDay,
83
- offset: this.offset
84
- }];
85
- }
86
- if (this.currentFreq === 'yearly') {
87
- this.recurrence.rrule.byMonth = [this.currentMonthWeekDay];
88
- }
89
- }
90
- }
91
- onFrequencyChange() {
92
- this.setInitialValues();
93
- }
94
- ngOnDestroy() {
95
- if (this.subs) {
96
- this.subs.unsubscribe();
97
- }
98
- }
99
- get monthDay() {
100
- const rrule = this.recurrence.rrule;
101
- if (isPresent(rrule.byMonthDay) && rrule.byMonthDay.length > 0) {
102
- return rrule.byMonthDay[0];
103
- }
104
- else if (isPresent(this.currentMonthDay)) {
105
- return this.currentMonthDay;
106
- }
107
- else {
108
- return this.recurrence.start.getDate();
109
- }
110
- }
111
- get weekDay() {
112
- const rrule = this.recurrence.rrule;
113
- if (isPresent(rrule.byWeekDay)) {
114
- const weekDaysCount = rrule.byWeekDay.length;
115
- switch (weekDaysCount) {
116
- case 7:
117
- return 'day';
118
- case 5:
119
- return 'weekday';
120
- case 2:
121
- return 'weekend';
122
- case 1:
123
- return rrule.byWeekDay[0].day;
124
- default:
125
- break;
126
- }
127
- }
128
- else if (isPresent(this.currentWeekDay)) {
129
- return this.currentWeekDay;
130
- }
131
- return this.defaultWeekDay;
132
- }
133
- get offset() {
134
- const rrule = this.recurrence.rrule;
135
- if (isPresent(rrule.byWeekDay)) {
136
- const weekDaysCount = rrule.byWeekDay.length;
137
- switch (weekDaysCount) {
138
- case 7:
139
- case 5:
140
- case 2:
141
- return rrule.bySetPosition[0];
142
- case 1:
143
- return rrule.byWeekDay[0].offset;
144
- default:
145
- break;
146
- }
147
- }
148
- else if (isPresent(this.currentOffset)) {
149
- return this.currentOffset;
150
- }
151
- return this.defaultOffset;
152
- }
153
- onMonthChange(month, repeatOnRule) {
154
- if (repeatOnRule === 'monthday') {
155
- this.currentMonthMonthDay = month;
156
- }
157
- else {
158
- this.currentMonthWeekDay = month;
159
- }
160
- this.recurrence.setMonths([month]);
161
- }
162
- onMonthDayChange(monthDay) {
163
- this.currentMonthDay = monthDay;
164
- this.recurrence.monthDays = [monthDay];
165
- }
166
- onOffsetPositionChange(offset) {
167
- const rrule = this.recurrence.rrule;
168
- if (isPresent(rrule.byWeekDay)) {
169
- const weekDaysCount = rrule.byWeekDay.length;
170
- switch (weekDaysCount) {
171
- case 7:
172
- case 5:
173
- case 2:
174
- this.recurrence.positions = [offset];
175
- break;
176
- case 1:
177
- rrule.byWeekDay[0].offset = offset;
178
- this.recurrence.onChange();
179
- break;
180
- default:
181
- break;
182
- }
183
- }
184
- this.currentOffset = offset;
185
- }
186
- onWeekDayChange(weekDay) {
187
- let weekDays;
188
- if (typeof weekDay === 'string') {
189
- /* day, weekday or weekend */
190
- weekDays = this.weekDayRuleFromString(weekDay);
191
- this.recurrence.positions = [this.offset];
192
- }
193
- else {
194
- /* specific weekday */
195
- this.recurrence.rrule.bySetPosition = null;
196
- this.recurrence.rrule.byWeekDay = null;
197
- weekDays = [{
198
- day: weekDay,
199
- offset: this.offset
200
- }];
201
- }
202
- this.currentWeekDay = weekDay;
203
- this.recurrence.setWeekDays(weekDays);
204
- }
205
- isDisabled(repeatOn) {
206
- return this.recurrence.repeatOnRule !== repeatOn;
207
- }
208
- get currentFreq() {
209
- return this.recurrence.frequency;
210
- }
211
- get defaultOffset() {
212
- return 1;
213
- }
214
- get defaultWeekDay() {
215
- return this.recurrence.start.getDay();
216
- }
217
- weekDayRuleFromString(weekDay) {
218
- switch (weekDay) {
219
- case 'day':
220
- return dayRule;
221
- case 'weekday':
222
- return weekdayRule;
223
- case 'weekend':
224
- return weekendRule;
225
- default:
226
- break;
227
- }
228
- return null;
229
- }
230
- textForRepeatOn() {
231
- const freq = this.currentFreq;
232
- switch (freq) {
233
- case 'monthly':
234
- return this.textFor('monthlyRepeatOn');
235
- case 'yearly':
236
- return this.textFor('yearlyRepeatOn');
237
- default:
238
- break;
239
- }
240
- }
241
- textFor(key) {
242
- return this.localization.get(key);
243
- }
244
- onRepeatOnLabelClick() {
245
- const selected = this.repeatOnRadioButtons.toArray().find(r => r.elem.checked);
246
- if (selected) {
247
- selected.elem.focus();
248
- }
249
- }
250
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecurrenceMonthlyYearlyEditorComponent, deps: [{ token: i1.RecurrenceService }, { token: i2.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
251
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RecurrenceMonthlyYearlyEditorComponent, isStandalone: true, selector: "kendo-recurrence-monthly-yearly-editor", inputs: { userNumericOptions: "userNumericOptions" }, viewQueries: [{ propertyName: "repeatOnRadioButtons", predicate: RepeatOnRadioButtonDirective, descendants: true }], ngImport: i0, template: `
252
- <div class='k-form-field'>
253
- <kendo-label
254
- [text]="textForRepeatOn()"
255
- labelCssClass="k-form-label"
256
- (click)="onRepeatOnLabelClick()"
257
- ></kendo-label>
258
- <div class="k-form-field-wrap">
259
- <ul class='k-radio-list'>
260
- <li class='k-radio-list-item'>
261
- <span class="k-radio-wrap">
262
- <input kendoRecurrenceRepeatOnRadioButton='monthday-{{uniqueId}}' />
263
- </span>
264
- <label [labelClass]="false" class='k-radio-label' for='k-repeaton-monthday-{{uniqueId}}'>
265
- @if (currentFreq === 'monthly') {
266
- {{ textFor('monthlyDay') }}
267
- }
268
- </label>
269
-
270
- @if (currentFreq === 'yearly') {
271
- <kendo-dropdownlist
272
- [data]='months'
273
- textField='text'
274
- valueField='value'
275
- [value]='currentMonthMonthDay'
276
- [valuePrimitive]='true'
277
- (valueChange)="onMonthChange($event, 'monthday')"
278
- [disabled]="isDisabled('monthday')"
279
- [style.width.px]="170"
280
- [style.margin]="'0 .4ex 0 1ex'">
281
- </kendo-dropdownlist>
282
- }
283
-
284
- <kendo-numerictextbox
285
- class="k-recur-monthday"
286
- [min]="numericOptions.min"
287
- [max]="numericOptions.max"
288
- [decimals]="0"
289
- [format]="numericOptions.format"
290
- [autoCorrect]="numericOptions.autoCorrect"
291
- [readonly]="numericOptions.readonly"
292
- [selectOnFocus]="numericOptions.selectOnFocus"
293
- [spinners]="numericOptions.spinners"
294
- [step]="numericOptions.step"
295
- [title]="numericOptions.title"
296
- [value]='monthDay'
297
- (valueChange)='onMonthDayChange($event)'
298
- [disabled]="isDisabled('monthday')"
299
- >
300
- <kendo-numerictextbox-messages
301
- [increment]="textFor('numericIncrement')"
302
- [decrement]="textFor('numericDecrement')"
303
- >
304
- </kendo-numerictextbox-messages>
305
- </kendo-numerictextbox>
306
- </li>
307
- <li class='k-radio-list-item'>
308
- <span class="k-radio-wrap">
309
- <input kendoRecurrenceRepeatOnRadioButton='weekday-{{uniqueId}}' />
310
- </span>
311
- <label [labelClass]="false" class='k-radio-label' for='k-repeaton-weekday-{{uniqueId}}'></label>
312
-
313
- <kendo-dropdownlist
314
- [data]='offsetPositions'
315
- textField='text'
316
- valueField='value'
317
- [value]='offset'
318
- [valuePrimitive]='true'
319
- (valueChange)='onOffsetPositionChange($event)'
320
- [disabled]="isDisabled('weekday')"
321
- [style.margin]="'0 .4ex 0 1ex'">
322
- </kendo-dropdownlist>
323
-
324
- <kendo-dropdownlist
325
- [data]="extendedWeekDays"
326
- textField='text'
327
- valueField='value'
328
- [value]='weekDay'
329
- [valuePrimitive]='true'
330
- (valueChange)='onWeekDayChange($event)'
331
- [disabled]="isDisabled('weekday')"
332
- [style.margin]="'0 .4ex 0 1ex'">
333
- </kendo-dropdownlist>
334
-
335
- @if (currentFreq === 'yearly') {
336
- <span>{{ textFor('yearlyOf') }}</span>
337
- <kendo-dropdownlist
338
- [data]='months'
339
- textField='text'
340
- valueField='value'
341
- [value]='currentMonthWeekDay'
342
- [valuePrimitive]='true'
343
- (valueChange)="onMonthChange($event, 'weekday')"
344
- [disabled]="isDisabled('weekday')"
345
- [style.margin]="'0 .4ex 0 1ex'">
346
- </kendo-dropdownlist>
347
- }
348
- </li>
349
- </ul>
350
- </div>
351
- </div>
352
- `, isInline: true, dependencies: [{ kind: "component", type: LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "directive", type: RepeatOnRadioButtonDirective, selector: "[kendoRecurrenceRepeatOnRadioButton]", inputs: ["kendoRecurrenceRepeatOnRadioButton"] }, { kind: "directive", type: LabelDirective, selector: "label[for]", inputs: ["for", "labelClass"] }, { kind: "component", type: DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { kind: "component", type: NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "component", type: NumericTextBoxCustomMessagesComponent, selector: "kendo-numerictextbox-messages" }] });
353
- }
354
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecurrenceMonthlyYearlyEditorComponent, decorators: [{
355
- type: Component,
356
- args: [{
357
- selector: 'kendo-recurrence-monthly-yearly-editor',
358
- template: `
359
- <div class='k-form-field'>
360
- <kendo-label
361
- [text]="textForRepeatOn()"
362
- labelCssClass="k-form-label"
363
- (click)="onRepeatOnLabelClick()"
364
- ></kendo-label>
365
- <div class="k-form-field-wrap">
366
- <ul class='k-radio-list'>
367
- <li class='k-radio-list-item'>
368
- <span class="k-radio-wrap">
369
- <input kendoRecurrenceRepeatOnRadioButton='monthday-{{uniqueId}}' />
370
- </span>
371
- <label [labelClass]="false" class='k-radio-label' for='k-repeaton-monthday-{{uniqueId}}'>
372
- @if (currentFreq === 'monthly') {
373
- {{ textFor('monthlyDay') }}
374
- }
375
- </label>
376
-
377
- @if (currentFreq === 'yearly') {
378
- <kendo-dropdownlist
379
- [data]='months'
380
- textField='text'
381
- valueField='value'
382
- [value]='currentMonthMonthDay'
383
- [valuePrimitive]='true'
384
- (valueChange)="onMonthChange($event, 'monthday')"
385
- [disabled]="isDisabled('monthday')"
386
- [style.width.px]="170"
387
- [style.margin]="'0 .4ex 0 1ex'">
388
- </kendo-dropdownlist>
389
- }
390
-
391
- <kendo-numerictextbox
392
- class="k-recur-monthday"
393
- [min]="numericOptions.min"
394
- [max]="numericOptions.max"
395
- [decimals]="0"
396
- [format]="numericOptions.format"
397
- [autoCorrect]="numericOptions.autoCorrect"
398
- [readonly]="numericOptions.readonly"
399
- [selectOnFocus]="numericOptions.selectOnFocus"
400
- [spinners]="numericOptions.spinners"
401
- [step]="numericOptions.step"
402
- [title]="numericOptions.title"
403
- [value]='monthDay'
404
- (valueChange)='onMonthDayChange($event)'
405
- [disabled]="isDisabled('monthday')"
406
- >
407
- <kendo-numerictextbox-messages
408
- [increment]="textFor('numericIncrement')"
409
- [decrement]="textFor('numericDecrement')"
410
- >
411
- </kendo-numerictextbox-messages>
412
- </kendo-numerictextbox>
413
- </li>
414
- <li class='k-radio-list-item'>
415
- <span class="k-radio-wrap">
416
- <input kendoRecurrenceRepeatOnRadioButton='weekday-{{uniqueId}}' />
417
- </span>
418
- <label [labelClass]="false" class='k-radio-label' for='k-repeaton-weekday-{{uniqueId}}'></label>
419
-
420
- <kendo-dropdownlist
421
- [data]='offsetPositions'
422
- textField='text'
423
- valueField='value'
424
- [value]='offset'
425
- [valuePrimitive]='true'
426
- (valueChange)='onOffsetPositionChange($event)'
427
- [disabled]="isDisabled('weekday')"
428
- [style.margin]="'0 .4ex 0 1ex'">
429
- </kendo-dropdownlist>
430
-
431
- <kendo-dropdownlist
432
- [data]="extendedWeekDays"
433
- textField='text'
434
- valueField='value'
435
- [value]='weekDay'
436
- [valuePrimitive]='true'
437
- (valueChange)='onWeekDayChange($event)'
438
- [disabled]="isDisabled('weekday')"
439
- [style.margin]="'0 .4ex 0 1ex'">
440
- </kendo-dropdownlist>
441
-
442
- @if (currentFreq === 'yearly') {
443
- <span>{{ textFor('yearlyOf') }}</span>
444
- <kendo-dropdownlist
445
- [data]='months'
446
- textField='text'
447
- valueField='value'
448
- [value]='currentMonthWeekDay'
449
- [valuePrimitive]='true'
450
- (valueChange)="onMonthChange($event, 'weekday')"
451
- [disabled]="isDisabled('weekday')"
452
- [style.margin]="'0 .4ex 0 1ex'">
453
- </kendo-dropdownlist>
454
- }
455
- </li>
456
- </ul>
457
- </div>
458
- </div>
459
- `,
460
- standalone: true,
461
- imports: [LabelComponent, RepeatOnRadioButtonDirective, LabelDirective, DropDownListComponent, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent]
462
- }]
463
- }], ctorParameters: () => [{ type: i1.RecurrenceService }, { type: i2.LocalizationService }], propDecorators: { userNumericOptions: [{
464
- type: Input
465
- }], repeatOnRadioButtons: [{
466
- type: ViewChildren,
467
- args: [RepeatOnRadioButtonDirective]
468
- }] } });
@@ -1,138 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { Component, ViewChildren, QueryList } from '@angular/core';
6
- import { capitalize, isPresent } from '../../common/util';
7
- import { RecurrenceService } from './recurrence.service';
8
- import { LocalizationService } from '@progress/kendo-angular-l10n';
9
- import { Button, ButtonComponent, ButtonGroupComponent } from '@progress/kendo-angular-buttons';
10
- import { LabelComponent } from '@progress/kendo-angular-label';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "./recurrence.service";
13
- import * as i2 from "@progress/kendo-angular-l10n";
14
- /**
15
- * @hidden
16
- */
17
- export class RecurrenceWeekdayRuleEditorComponent {
18
- recurrence;
19
- localization;
20
- weekDayButtons;
21
- weekDays;
22
- selected = [];
23
- constructor(recurrence, localization) {
24
- this.recurrence = recurrence;
25
- this.localization = localization;
26
- this.weekDays = this.recurrence.weekDays;
27
- this.setSelectedDays();
28
- }
29
- setSelectedDays() {
30
- for (let i = 0; i < 7; i++) {
31
- this.selected[i] = false;
32
- }
33
- if (isPresent(this.rrule.byWeekDay)) {
34
- this.rrule.byWeekDay.forEach((rule) => {
35
- this.selected[rule.day] = true;
36
- });
37
- }
38
- }
39
- onDayClick(day) {
40
- const currentlySelected = this.isSelected(day);
41
- // Prevent deselecting the last selected day - ensure at least one day remains selected
42
- if (currentlySelected) {
43
- const currentlySelectedCount = this.selected.filter(selected => selected).length;
44
- if (currentlySelectedCount <= 1) {
45
- return;
46
- }
47
- }
48
- this.selected[day.value] = !currentlySelected;
49
- this.recurrence.setWeekDays(this.serializeToWeekDayRuleArray(this.selected));
50
- }
51
- isSelected(day) {
52
- return this.selected[day.value];
53
- }
54
- serializeToWeekDayRuleArray(arr) {
55
- const selectedValues = [];
56
- arr.forEach((isSelected, idx) => {
57
- if (isSelected) {
58
- selectedValues.push({ day: idx, offset: 0 });
59
- }
60
- });
61
- return selectedValues.length > 0 ? selectedValues : null;
62
- }
63
- get rrule() {
64
- return this.recurrence.rrule;
65
- }
66
- capitalize(day) {
67
- return capitalize(day);
68
- }
69
- textFor(key) {
70
- return this.localization.get(key);
71
- }
72
- onWeeklyRepeatOnClick() {
73
- const selected = this.weekDayButtons.toArray().find(r => r.selected);
74
- if (selected) {
75
- selected.focus();
76
- }
77
- }
78
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecurrenceWeekdayRuleEditorComponent, deps: [{ token: i1.RecurrenceService }, { token: i2.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
79
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RecurrenceWeekdayRuleEditorComponent, isStandalone: true, selector: "kendo-recurrence-weekday-rule-editor", viewQueries: [{ propertyName: "weekDayButtons", predicate: Button, descendants: true }], ngImport: i0, template: `
80
- <div class="k-form-field">
81
- <kendo-label
82
- [text]="textFor('weeklyRepeatOn')"
83
- labelCssClass="k-form-label"
84
- (click)="onWeeklyRepeatOnClick()"
85
- ></kendo-label>
86
- <div class="k-form-field-wrap">
87
- <kendo-buttongroup
88
- class="k-button-group-solid"
89
- width="100%"
90
- selection="multiple"
91
- >
92
- @for (day of weekDays; track day) {
93
- <button
94
- kendoButton
95
- [selected]="isSelected(day)"
96
- (click)="onDayClick(day)"
97
- >{{ capitalize(day.text) }}</button>
98
- }
99
- </kendo-buttongroup>
100
- </div>
101
- </div>
102
- `, isInline: true, dependencies: [{ kind: "component", type: LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "component", type: ButtonGroupComponent, selector: "kendo-buttongroup", inputs: ["disabled", "selection", "width", "tabIndex", "navigable"], outputs: ["navigate"], exportAs: ["kendoButtonGroup"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
103
- }
104
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecurrenceWeekdayRuleEditorComponent, decorators: [{
105
- type: Component,
106
- args: [{
107
- selector: 'kendo-recurrence-weekday-rule-editor',
108
- template: `
109
- <div class="k-form-field">
110
- <kendo-label
111
- [text]="textFor('weeklyRepeatOn')"
112
- labelCssClass="k-form-label"
113
- (click)="onWeeklyRepeatOnClick()"
114
- ></kendo-label>
115
- <div class="k-form-field-wrap">
116
- <kendo-buttongroup
117
- class="k-button-group-solid"
118
- width="100%"
119
- selection="multiple"
120
- >
121
- @for (day of weekDays; track day) {
122
- <button
123
- kendoButton
124
- [selected]="isSelected(day)"
125
- (click)="onDayClick(day)"
126
- >{{ capitalize(day.text) }}</button>
127
- }
128
- </kendo-buttongroup>
129
- </div>
130
- </div>
131
- `,
132
- standalone: true,
133
- imports: [LabelComponent, ButtonGroupComponent, ButtonComponent]
134
- }]
135
- }], ctorParameters: () => [{ type: i1.RecurrenceService }, { type: i2.LocalizationService }], propDecorators: { weekDayButtons: [{
136
- type: ViewChildren,
137
- args: [Button]
138
- }] } });