@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,334 +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, HostBinding } from '@angular/core';
6
- import { RecurrenceService } from './recurrence.service';
7
- import { isPresent } from '../../common/util';
8
- import { EndRuleRadioButtonDirective } from './end-rule-radio-button.directive';
9
- import { ZonedDate } from '@progress/kendo-date-math';
10
- import { toUTCDate } from '../../views/utils';
11
- import { LocalizationService } from '@progress/kendo-angular-l10n';
12
- import { DatePickerComponent, DatePickerCustomMessagesComponent } from '@progress/kendo-angular-dateinputs';
13
- import { NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent } from '@progress/kendo-angular-inputs';
14
- import { LabelComponent, LabelDirective } from '@progress/kendo-angular-label';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "./recurrence.service";
17
- import * as i2 from "@progress/kendo-angular-l10n";
18
- /**
19
- * @hidden
20
- */
21
- export class RecurrenceEndRuleEditorComponent {
22
- recurrence;
23
- localization;
24
- cssClass = true;
25
- set userNumericOptions(options) {
26
- this.numericOptions = { ...this.numericOptions, ...options };
27
- }
28
- set userDatePickerOptions(options) {
29
- this.datePickerOptions = { ...this.datePickerOptions, ...options };
30
- }
31
- endRuleRadioButtons;
32
- countValue;
33
- untilValue;
34
- numericOptions = {
35
- min: 1,
36
- format: '#',
37
- autoCorrect: true,
38
- step: 1,
39
- spinners: true
40
- };
41
- datePickerOptions = {
42
- activeView: 'month',
43
- bottomView: 'month',
44
- topView: 'century',
45
- disabledDatesValidation: true,
46
- navigation: true,
47
- format: 'd'
48
- };
49
- uniqueId;
50
- subscriptions;
51
- constructor(recurrence, localization) {
52
- this.recurrence = recurrence;
53
- this.localization = localization;
54
- this.uniqueId = this.recurrence.getUniqueId();
55
- this.setInitialValues();
56
- this.subscribeChanges();
57
- }
58
- ngOnDestroy() {
59
- if (this.subscriptions) {
60
- this.subscriptions.unsubscribe();
61
- }
62
- }
63
- setEndRule(endRule) {
64
- if (endRule === 'count') {
65
- this.recurrence.rrule.count = this.countValue;
66
- }
67
- else if (endRule === 'until') {
68
- this.recurrence.until = this.untilValue;
69
- }
70
- }
71
- get rrule() {
72
- return this.recurrence.rrule;
73
- }
74
- get isCountDisabled() {
75
- return this.recurrence.endRule !== 'count';
76
- }
77
- get isUntilDisabled() {
78
- return this.recurrence.endRule !== 'until';
79
- }
80
- onCountChange(value) {
81
- if (isPresent(value)) {
82
- this.recurrence.count = value;
83
- }
84
- }
85
- onCountBlur() {
86
- if (!isPresent(this.countValue)) {
87
- this.recurrence.count = this.countValue = 1;
88
- }
89
- }
90
- onUntilChange(value) {
91
- if (isPresent(value)) {
92
- this.recurrence.until = this.createUntil(value);
93
- }
94
- }
95
- onUntilBlur() {
96
- if (!isPresent(this.untilValue)) {
97
- this.recurrence.until = this.untilValue = this.createUntil(this.recurrence.start);
98
- }
99
- }
100
- textFor(key) {
101
- return this.localization.get(key);
102
- }
103
- onEndLabelClick() {
104
- const selected = this.endRuleRadioButtons.toArray().find(r => r.elem.checked);
105
- if (selected) {
106
- selected.elem.focus();
107
- }
108
- }
109
- setInitialValues() {
110
- this.countValue = this.rrule.count || 1;
111
- const currentUntil = this.recurrence.until;
112
- const currentStart = this.recurrence.start;
113
- this.untilValue = isPresent(currentUntil) ? currentUntil : this.createUntil(currentStart);
114
- }
115
- subscribeChanges() {
116
- this.subscriptions = this.recurrence.endRuleChange.subscribe((endRule) => {
117
- this.setEndRule(endRule);
118
- });
119
- this.subscriptions.add(this.recurrence.frequencyChange.subscribe(() => {
120
- this.setInitialValues();
121
- }));
122
- }
123
- createUntil(until) {
124
- // Read the until date as UTC date parts to avoid interfering with the local time zone.
125
- const untilDate = toUTCDate(until);
126
- // Set the time to the end of the day
127
- untilDate.setUTCHours(23);
128
- untilDate.setUTCMinutes(59);
129
- untilDate.setUTCSeconds(59);
130
- // Convert to the scheduler time zone.
131
- return ZonedDate.fromUTCDate(untilDate, this.recurrence.timezone).toLocalDate();
132
- }
133
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecurrenceEndRuleEditorComponent, deps: [{ token: i1.RecurrenceService }, { token: i2.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
134
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RecurrenceEndRuleEditorComponent, isStandalone: true, selector: "kendo-recurrence-end-rule-editor", inputs: { userNumericOptions: "userNumericOptions", userDatePickerOptions: "userDatePickerOptions" }, host: { properties: { "class.k-scheduler-recurrence-end-rule-editor": "this.cssClass" } }, viewQueries: [{ propertyName: "endRuleRadioButtons", predicate: EndRuleRadioButtonDirective, descendants: true }], ngImport: i0, template: `
135
- <div class="k-form-field">
136
- <kendo-label
137
- [text]="textFor('endLabel')"
138
- (click)="onEndLabelClick()"
139
- labelCssClass="k-form-label"
140
- ></kendo-label>
141
- <div class="k-form-field-wrap">
142
- <ul class='k-radio-list'>
143
- <li class='k-radio-list-item'>
144
- <span class="k-radio-wrap">
145
- <input kendoRecurrenceEndRuleRadioButton='k-endrule-never-{{uniqueId}}' />
146
- </span>
147
- <label [labelClass]="false" class='k-radio-label' for='k-endrule-never-{{uniqueId}}'>{{ textFor('endNever') }}</label>
148
- </li>
149
- <li class='k-radio-list-item'>
150
- <span class="k-radio-wrap">
151
- <input kendoRecurrenceEndRuleRadioButton='k-endrule-count-{{uniqueId}}' />
152
- </span>
153
- <label [labelClass]="false" class='k-radio-label' for='k-endrule-count-{{uniqueId}}'>{{ textFor('endAfter') }}</label>
154
- <kendo-numerictextbox
155
- #afterOccurances
156
- class="k-recur-count"
157
- [style.width.px]='70'
158
- [autoCorrect]='numericOptions.autoCorrect'
159
- [decimals]='0'
160
- [disabled]='isCountDisabled'
161
- [format]="numericOptions.format"
162
- [min]='numericOptions.min'
163
- [max]="numericOptions.max"
164
- [readonly]="numericOptions.readonly"
165
- [selectOnFocus]="numericOptions.selectOnFocus"
166
- [spinners]="numericOptions.spinners"
167
- [step]="numericOptions.step"
168
- [title]="numericOptions.title"
169
- [(value)]='countValue'
170
- (blur)="onCountBlur()"
171
- (valueChange)='onCountChange($event)'
172
- >
173
- <kendo-numerictextbox-messages
174
- [increment]="textFor('numericIncrement')"
175
- [decrement]="textFor('numericDecrement')"
176
- >
177
- </kendo-numerictextbox-messages>
178
- </kendo-numerictextbox>
179
- <span>{{ textFor('endOccurrence') }}</span>
180
- </li>
181
- <li class='k-radio-list-item'>
182
- <span class="k-radio-wrap">
183
- <input kendoRecurrenceEndRuleRadioButton='k-endrule-until-{{uniqueId}}' />
184
- </span>
185
- <label [labelClass]="false" class='k-radio-label' [attr.id]="'k-endrule-until-' + uniqueId + '-label'" for='k-endrule-until-{{uniqueId}}'>{{ textFor('endOn') }}</label>
186
- <kendo-datepicker
187
- class="k-recur-until"
188
- [style.width.px]='150'
189
- [clearButton]="true"
190
- [disabled]='isUntilDisabled'
191
- [activeView]="datePickerOptions.activeView"
192
- [bottomView]="datePickerOptions.bottomView"
193
- [disabledDatesValidation]="datePickerOptions.disabledDatesValidation"
194
- [focusedDate]="datePickerOptions.focusedDate"
195
- [format]="datePickerOptions.format"
196
- [formatPlaceholder]="datePickerOptions.formatPlaceHolder"
197
- [max]="datePickerOptions.max"
198
- [min]="datePickerOptions.min"
199
- [navigation]="datePickerOptions.navigation"
200
- [placeholder]="datePickerOptions.placeholder"
201
- [readOnlyInput]="datePickerOptions.readOnlyInput"
202
- [readonly]="datePickerOptions.readonly"
203
- [title]="datePickerOptions.title"
204
- [topView]="datePickerOptions.topView"
205
- [weekNumber]="datePickerOptions.weekNumber"
206
- [disabledDates]="datePickerOptions.disabledDates"
207
- [popupSettings]="datePickerOptions.popupSettings"
208
- [(value)]='untilValue'
209
- [inputAttributes]="{ 'aria-labelledby': 'k-endrule-until-' + uniqueId + '-label' }"
210
- (blur)="onUntilBlur()"
211
- (valueChange)='onUntilChange($event)'
212
- >
213
- <kendo-datepicker-messages
214
- [today]="textFor('dateInputsToday')"
215
- [toggle]="textFor('dateInputsToggle')"
216
- [parentViewButtonTitle]="textFor('dateInputsParentViewButton')"
217
- >
218
- </kendo-datepicker-messages>
219
- </kendo-datepicker>
220
- </li>
221
- </ul>
222
- </div>
223
- </div>
224
- `, isInline: true, dependencies: [{ kind: "component", type: LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "directive", type: EndRuleRadioButtonDirective, selector: "[kendoRecurrenceEndRuleRadioButton]", inputs: ["kendoRecurrenceEndRuleRadioButton"] }, { kind: "directive", type: LabelDirective, selector: "label[for]", inputs: ["for", "labelClass"] }, { 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" }, { kind: "component", type: DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "clearButton", "inputAttributes", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "headerTemplate", "footerTemplate", "footer", "navigationItemTemplate", "weekDaysFormat", "showOtherMonthDays", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "enableMouseWheel", "allowCaretMode", "autoFill", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "adaptiveTitle", "adaptiveSubtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close", "escape"], exportAs: ["kendo-datepicker"] }, { kind: "component", type: DatePickerCustomMessagesComponent, selector: "kendo-datepicker-messages" }] });
225
- }
226
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecurrenceEndRuleEditorComponent, decorators: [{
227
- type: Component,
228
- args: [{
229
- selector: 'kendo-recurrence-end-rule-editor',
230
- template: `
231
- <div class="k-form-field">
232
- <kendo-label
233
- [text]="textFor('endLabel')"
234
- (click)="onEndLabelClick()"
235
- labelCssClass="k-form-label"
236
- ></kendo-label>
237
- <div class="k-form-field-wrap">
238
- <ul class='k-radio-list'>
239
- <li class='k-radio-list-item'>
240
- <span class="k-radio-wrap">
241
- <input kendoRecurrenceEndRuleRadioButton='k-endrule-never-{{uniqueId}}' />
242
- </span>
243
- <label [labelClass]="false" class='k-radio-label' for='k-endrule-never-{{uniqueId}}'>{{ textFor('endNever') }}</label>
244
- </li>
245
- <li class='k-radio-list-item'>
246
- <span class="k-radio-wrap">
247
- <input kendoRecurrenceEndRuleRadioButton='k-endrule-count-{{uniqueId}}' />
248
- </span>
249
- <label [labelClass]="false" class='k-radio-label' for='k-endrule-count-{{uniqueId}}'>{{ textFor('endAfter') }}</label>
250
- <kendo-numerictextbox
251
- #afterOccurances
252
- class="k-recur-count"
253
- [style.width.px]='70'
254
- [autoCorrect]='numericOptions.autoCorrect'
255
- [decimals]='0'
256
- [disabled]='isCountDisabled'
257
- [format]="numericOptions.format"
258
- [min]='numericOptions.min'
259
- [max]="numericOptions.max"
260
- [readonly]="numericOptions.readonly"
261
- [selectOnFocus]="numericOptions.selectOnFocus"
262
- [spinners]="numericOptions.spinners"
263
- [step]="numericOptions.step"
264
- [title]="numericOptions.title"
265
- [(value)]='countValue'
266
- (blur)="onCountBlur()"
267
- (valueChange)='onCountChange($event)'
268
- >
269
- <kendo-numerictextbox-messages
270
- [increment]="textFor('numericIncrement')"
271
- [decrement]="textFor('numericDecrement')"
272
- >
273
- </kendo-numerictextbox-messages>
274
- </kendo-numerictextbox>
275
- <span>{{ textFor('endOccurrence') }}</span>
276
- </li>
277
- <li class='k-radio-list-item'>
278
- <span class="k-radio-wrap">
279
- <input kendoRecurrenceEndRuleRadioButton='k-endrule-until-{{uniqueId}}' />
280
- </span>
281
- <label [labelClass]="false" class='k-radio-label' [attr.id]="'k-endrule-until-' + uniqueId + '-label'" for='k-endrule-until-{{uniqueId}}'>{{ textFor('endOn') }}</label>
282
- <kendo-datepicker
283
- class="k-recur-until"
284
- [style.width.px]='150'
285
- [clearButton]="true"
286
- [disabled]='isUntilDisabled'
287
- [activeView]="datePickerOptions.activeView"
288
- [bottomView]="datePickerOptions.bottomView"
289
- [disabledDatesValidation]="datePickerOptions.disabledDatesValidation"
290
- [focusedDate]="datePickerOptions.focusedDate"
291
- [format]="datePickerOptions.format"
292
- [formatPlaceholder]="datePickerOptions.formatPlaceHolder"
293
- [max]="datePickerOptions.max"
294
- [min]="datePickerOptions.min"
295
- [navigation]="datePickerOptions.navigation"
296
- [placeholder]="datePickerOptions.placeholder"
297
- [readOnlyInput]="datePickerOptions.readOnlyInput"
298
- [readonly]="datePickerOptions.readonly"
299
- [title]="datePickerOptions.title"
300
- [topView]="datePickerOptions.topView"
301
- [weekNumber]="datePickerOptions.weekNumber"
302
- [disabledDates]="datePickerOptions.disabledDates"
303
- [popupSettings]="datePickerOptions.popupSettings"
304
- [(value)]='untilValue'
305
- [inputAttributes]="{ 'aria-labelledby': 'k-endrule-until-' + uniqueId + '-label' }"
306
- (blur)="onUntilBlur()"
307
- (valueChange)='onUntilChange($event)'
308
- >
309
- <kendo-datepicker-messages
310
- [today]="textFor('dateInputsToday')"
311
- [toggle]="textFor('dateInputsToggle')"
312
- [parentViewButtonTitle]="textFor('dateInputsParentViewButton')"
313
- >
314
- </kendo-datepicker-messages>
315
- </kendo-datepicker>
316
- </li>
317
- </ul>
318
- </div>
319
- </div>
320
- `,
321
- standalone: true,
322
- imports: [LabelComponent, EndRuleRadioButtonDirective, LabelDirective, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, DatePickerComponent, DatePickerCustomMessagesComponent]
323
- }]
324
- }], ctorParameters: () => [{ type: i1.RecurrenceService }, { type: i2.LocalizationService }], propDecorators: { cssClass: [{
325
- type: HostBinding,
326
- args: ['class.k-scheduler-recurrence-end-rule-editor']
327
- }], userNumericOptions: [{
328
- type: Input
329
- }], userDatePickerOptions: [{
330
- type: Input
331
- }], endRuleRadioButtons: [{
332
- type: ViewChildren,
333
- args: [EndRuleRadioButtonDirective]
334
- }] } });
@@ -1,105 +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 { RecurrenceService } from './recurrence.service';
7
- import { LocalizationService } from '@progress/kendo-angular-l10n';
8
- import { Button, ButtonComponent, ButtonGroupComponent } from '@progress/kendo-angular-buttons';
9
- import { LabelComponent } from '@progress/kendo-angular-label';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "./recurrence.service";
12
- import * as i2 from "@progress/kendo-angular-l10n";
13
- /**
14
- * @hidden
15
- */
16
- export class RecurrenceFrequencyEditorComponent {
17
- recurrence;
18
- localization;
19
- weekDayButtons;
20
- frequencies;
21
- constructor(recurrence, localization) {
22
- this.recurrence = recurrence;
23
- this.localization = localization;
24
- }
25
- ngOnInit() {
26
- this.frequencies = this.recurrence.frequencies;
27
- }
28
- get selected() {
29
- return this.recurrence.frequency;
30
- }
31
- onClick(newFreq) {
32
- if (newFreq.value !== this.selected) {
33
- this.recurrence.setFrequency(newFreq.value);
34
- }
35
- }
36
- textFor(key) {
37
- return this.localization.get(key);
38
- }
39
- onFrequencyClick() {
40
- const selected = this.weekDayButtons.toArray().find(r => r.selected);
41
- if (selected) {
42
- selected.focus();
43
- }
44
- }
45
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecurrenceFrequencyEditorComponent, deps: [{ token: i1.RecurrenceService }, { token: i2.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
46
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RecurrenceFrequencyEditorComponent, isStandalone: true, selector: "kendo-recurrence-frequency-editor", viewQueries: [{ propertyName: "weekDayButtons", predicate: Button, descendants: true }], ngImport: i0, template: `
47
- <div class='k-form-field'>
48
- <kendo-label
49
- [text]="textFor('repeat')"
50
- (click)="onFrequencyClick()"
51
- labelCssClass="k-form-label"
52
- ></kendo-label>
53
- <div class="k-form-field-wrap">
54
- <kendo-buttongroup
55
- class="k-scheduler-recurrence-repeat k-button-group-solid"
56
- width="100%"
57
- selection="single"
58
- >
59
- @for (freq of frequencies; track freq) {
60
- <button kendoButton
61
- [toggleable]="true"
62
- [selected]="freq.value === selected"
63
- (click)="onClick(freq)"
64
- >{{ freq.text }}</button>
65
- }
66
- </kendo-buttongroup>
67
- </div>
68
- </div>
69
- `, 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"] }] });
70
- }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecurrenceFrequencyEditorComponent, decorators: [{
72
- type: Component,
73
- args: [{
74
- selector: 'kendo-recurrence-frequency-editor',
75
- template: `
76
- <div class='k-form-field'>
77
- <kendo-label
78
- [text]="textFor('repeat')"
79
- (click)="onFrequencyClick()"
80
- labelCssClass="k-form-label"
81
- ></kendo-label>
82
- <div class="k-form-field-wrap">
83
- <kendo-buttongroup
84
- class="k-scheduler-recurrence-repeat k-button-group-solid"
85
- width="100%"
86
- selection="single"
87
- >
88
- @for (freq of frequencies; track freq) {
89
- <button kendoButton
90
- [toggleable]="true"
91
- [selected]="freq.value === selected"
92
- (click)="onClick(freq)"
93
- >{{ freq.text }}</button>
94
- }
95
- </kendo-buttongroup>
96
- </div>
97
- </div>
98
- `,
99
- standalone: true,
100
- imports: [LabelComponent, ButtonGroupComponent, ButtonComponent]
101
- }]
102
- }], ctorParameters: () => [{ type: i1.RecurrenceService }, { type: i2.LocalizationService }], propDecorators: { weekDayButtons: [{
103
- type: ViewChildren,
104
- args: [Button]
105
- }] } });
@@ -1,169 +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, HostBinding, Input } from '@angular/core';
6
- import { RecurrenceService } from './recurrence.service';
7
- import { isPresent } from '../../common/util';
8
- import { LocalizationService } from '@progress/kendo-angular-l10n';
9
- import { NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent } from '@progress/kendo-angular-inputs';
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 RecurrenceIntervalEditorComponent {
18
- recurrence;
19
- localization;
20
- cssClass = true;
21
- set userNumericOptions(options) {
22
- this.numericOptions = { ...this.numericOptions, ...options };
23
- }
24
- intervalValue;
25
- numericOptions = {
26
- min: 1,
27
- format: '#',
28
- autoCorrect: true,
29
- step: 1,
30
- spinners: true
31
- };
32
- constructor(recurrence, localization) {
33
- this.recurrence = recurrence;
34
- this.localization = localization;
35
- this.intervalValue = this.recurrence.rrule.interval || 1;
36
- }
37
- get currentFreq() {
38
- return this.recurrence.frequency;
39
- }
40
- onIntervalChange(newInterval) {
41
- if (isPresent(newInterval)) {
42
- this.recurrence.interval = newInterval;
43
- }
44
- }
45
- onIntervalBlur() {
46
- if (!isPresent(this.intervalValue)) {
47
- this.recurrence.interval = this.intervalValue = 1;
48
- }
49
- }
50
- textForRepeatEvery() {
51
- const freq = this.currentFreq;
52
- switch (freq) {
53
- case 'daily':
54
- return this.textFor('dailyRepeatEvery');
55
- case 'weekly':
56
- return this.textFor('weeklyRepeatEvery');
57
- case 'monthly':
58
- return this.textFor('monthlyRepeatEvery');
59
- case 'yearly':
60
- return this.textFor('yearlyRepeatEvery');
61
- default:
62
- break;
63
- }
64
- }
65
- textForFrequency() {
66
- const freq = this.currentFreq;
67
- switch (freq) {
68
- case 'daily':
69
- return this.textFor('dailyInterval');
70
- case 'weekly':
71
- return this.textFor('weeklyInterval');
72
- case 'monthly':
73
- return this.textFor('monthlyInterval');
74
- case 'yearly':
75
- return this.textFor('yearlyInterval');
76
- default:
77
- break;
78
- }
79
- }
80
- textFor(key) {
81
- return this.localization.get(key);
82
- }
83
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecurrenceIntervalEditorComponent, deps: [{ token: i1.RecurrenceService }, { token: i2.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
84
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RecurrenceIntervalEditorComponent, isStandalone: true, selector: "kendo-recurrence-interval-editor", inputs: { userNumericOptions: "userNumericOptions" }, host: { properties: { "class.k-scheduler-recurrence-interval-editor": "this.cssClass" } }, ngImport: i0, template: `
85
- <div class="k-form-field">
86
- <kendo-label
87
- [for]="intervalNumeric"
88
- [text]="textForRepeatEvery()"
89
- labelCssClass="k-form-label"
90
- (click)="intervalNumeric.focus()"
91
- ></kendo-label>
92
- <div class="k-form-field-wrap">
93
- <kendo-numerictextbox
94
- #intervalNumeric
95
- class="k-recur-interval"
96
- [min]="numericOptions.min"
97
- [max]="numericOptions.max"
98
- [decimals]="0"
99
- [format]="numericOptions.format"
100
- [autoCorrect]="numericOptions.autoCorrect"
101
- [readonly]="numericOptions.readonly"
102
- [selectOnFocus]="numericOptions.selectOnFocus"
103
- [spinners]="numericOptions.spinners"
104
- [step]="numericOptions.step"
105
- [title]="numericOptions.title"
106
- [(value)]="intervalValue"
107
- (blur)="onIntervalBlur()"
108
- (valueChange)="onIntervalChange($event)"
109
- >
110
- <kendo-numerictextbox-messages
111
- [increment]="textFor('numericIncrement')"
112
- [decrement]="textFor('numericDecrement')"
113
- >
114
- </kendo-numerictextbox-messages>
115
- </kendo-numerictextbox>
116
- <span>&nbsp;{{ textForFrequency() }}</span>
117
- </div>
118
- </div>
119
- `, isInline: true, dependencies: [{ kind: "component", type: LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { 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" }] });
120
- }
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecurrenceIntervalEditorComponent, decorators: [{
122
- type: Component,
123
- args: [{
124
- selector: 'kendo-recurrence-interval-editor',
125
- template: `
126
- <div class="k-form-field">
127
- <kendo-label
128
- [for]="intervalNumeric"
129
- [text]="textForRepeatEvery()"
130
- labelCssClass="k-form-label"
131
- (click)="intervalNumeric.focus()"
132
- ></kendo-label>
133
- <div class="k-form-field-wrap">
134
- <kendo-numerictextbox
135
- #intervalNumeric
136
- class="k-recur-interval"
137
- [min]="numericOptions.min"
138
- [max]="numericOptions.max"
139
- [decimals]="0"
140
- [format]="numericOptions.format"
141
- [autoCorrect]="numericOptions.autoCorrect"
142
- [readonly]="numericOptions.readonly"
143
- [selectOnFocus]="numericOptions.selectOnFocus"
144
- [spinners]="numericOptions.spinners"
145
- [step]="numericOptions.step"
146
- [title]="numericOptions.title"
147
- [(value)]="intervalValue"
148
- (blur)="onIntervalBlur()"
149
- (valueChange)="onIntervalChange($event)"
150
- >
151
- <kendo-numerictextbox-messages
152
- [increment]="textFor('numericIncrement')"
153
- [decrement]="textFor('numericDecrement')"
154
- >
155
- </kendo-numerictextbox-messages>
156
- </kendo-numerictextbox>
157
- <span>&nbsp;{{ textForFrequency() }}</span>
158
- </div>
159
- </div>
160
- `,
161
- standalone: true,
162
- imports: [LabelComponent, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent]
163
- }]
164
- }], ctorParameters: () => [{ type: i1.RecurrenceService }, { type: i2.LocalizationService }], propDecorators: { cssClass: [{
165
- type: HostBinding,
166
- args: ['class.k-scheduler-recurrence-interval-editor']
167
- }], userNumericOptions: [{
168
- type: Input
169
- }] } });