@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,679 +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, Input, NgZone, ChangeDetectorRef, ViewChildren, QueryList, ElementRef } from '@angular/core';
6
- import { FormControl, ReactiveFormsModule } from '@angular/forms';
7
- import { LocalizationService } from '@progress/kendo-angular-l10n';
8
- import { EditService } from './edit.service';
9
- import { fromEvent } from 'rxjs';
10
- import { isPresent } from '../common/util';
11
- import { EditMode } from '../types';
12
- import { EditDialogTemplateDirective } from './edit-dialog-template.directive';
13
- import { MultipleResourceEditorComponent } from './resource-multiple-editor.component';
14
- import { SingleResourceEditorComponent } from './resource-single-editor.component';
15
- import { Keys } from '@progress/kendo-angular-common';
16
- import { filter } from 'rxjs/operators';
17
- import { withModifiers, Modifiers } from '../common/modifiers';
18
- import { FocusService } from '../navigation';
19
- import { Day, ZonedDate, toLocalDate } from '@progress/kendo-date-math';
20
- import { toUTCDateTime, formValueOrDefault } from '../views/utils';
21
- import { cancelOutlineIcon, saveIcon } from '@progress/kendo-svg-icons';
22
- import { ButtonComponent } from '@progress/kendo-angular-buttons';
23
- import { DialogComponent, DialogActionsComponent } from '@progress/kendo-angular-dialog';
24
- import { TextAreaDirective, CheckBoxDirective, TextBoxDirective, FormFieldComponent } from '@progress/kendo-angular-inputs';
25
- import { RecurrenceEditorComponent } from './recurrence/recurrence-editor.component';
26
- import { TimeZoneEditorComponent } from './timezone-editor.component';
27
- import { LabelDirective, LabelComponent } from '@progress/kendo-angular-label';
28
- import { SchedulerDateTimePickerComponent } from './date-time-picker.component';
29
- import { NgTemplateOutlet } from '@angular/common';
30
- import * as i0 from "@angular/core";
31
- import * as i1 from "./edit.service";
32
- import * as i2 from "@progress/kendo-angular-l10n";
33
- import * as i3 from "../navigation";
34
- import * as i4 from "@angular/forms";
35
- /**
36
- * @hidden
37
- */
38
- export class EditDialogComponent {
39
- ngZone;
40
- editService;
41
- localization;
42
- changeDetector;
43
- element;
44
- focusService;
45
- multipleResourceEditors;
46
- singleResourceEditors;
47
- resources = [];
48
- timezone = 'Etc/UTC';
49
- weekStart;
50
- fields;
51
- editTemplate;
52
- get autoFocusedElement() {
53
- if (this.editTemplate) {
54
- return this.editTemplate.autoFocusedElement;
55
- }
56
- return '.k-form-field input';
57
- }
58
- dialogTitle;
59
- isActive;
60
- editMode;
61
- get isEditingSeries() {
62
- return this.editMode === EditMode.Series && Boolean(this.formGroup.get(this.fields.recurrenceRule));
63
- }
64
- get eventTimezone() {
65
- return formValueOrDefault(this.formGroup, this.fields.startTimezone, this.timezone);
66
- }
67
- get endTimezone() {
68
- return formValueOrDefault(this.formGroup, this.fields.endTimezone, this.eventTimezone);
69
- }
70
- recurrenceStart;
71
- setTimeZone = false;
72
- setSeparateStartEndTimeZones = false;
73
- formGroup;
74
- editedEvent;
75
- isNew;
76
- saveIcon = saveIcon;
77
- cancelIcon = cancelOutlineIcon;
78
- subs;
79
- constructor(ngZone, editService, localization, changeDetector, element, focusService) {
80
- this.ngZone = ngZone;
81
- this.editService = editService;
82
- this.localization = localization;
83
- this.changeDetector = changeDetector;
84
- this.element = element;
85
- this.focusService = focusService;
86
- this.subs = this.editService.changed.subscribe(() => {
87
- this.ngZone.run(() => { this.onChange(); });
88
- });
89
- this.subs.add(fromEvent(this.element.nativeElement, 'keydown')
90
- .pipe(filter(() => this.isActive))
91
- .subscribe((e) => {
92
- if (e.code === Keys.Escape) {
93
- this.reset();
94
- }
95
- if ((e.code === Keys.Enter || e.code === Keys.NumpadEnter) && (withModifiers(e, Modifiers.CtrlKey) || withModifiers(e, Modifiers.MetaKey))) {
96
- this.onSave(e);
97
- }
98
- e.stopPropagation();
99
- }));
100
- }
101
- onChange() {
102
- this.changeDetector.markForCheck();
103
- if (this.editService.hasNewEvent) {
104
- this.editMode = EditMode.Series;
105
- this.formGroup = this.editService.context.formGroup;
106
- this.isNew = true;
107
- this.applyLocalTimezone();
108
- }
109
- else if (this.editService.isEditing()) {
110
- const { dataItem, mode } = this.editService.context;
111
- this.formGroup = this.editService.context.formGroup;
112
- this.isNew = false;
113
- this.editedEvent = dataItem;
114
- this.editMode = isPresent(mode) ? mode : EditMode.Series;
115
- this.applyLocalTimezone();
116
- }
117
- else {
118
- this.reset();
119
- return;
120
- }
121
- if (!this.editTemplate) {
122
- this.addTimeZoneCheckboxesToFormGroup();
123
- this.subscribeToFormGroupChanges();
124
- }
125
- if (isPresent(this.formGroup)) {
126
- this.recurrenceStart = this.formGroup.get(this.fields.start).value;
127
- }
128
- this.isActive = true;
129
- }
130
- ngOnDestroy() {
131
- if (this.subs) {
132
- this.subs.unsubscribe();
133
- }
134
- }
135
- onCancel(e) {
136
- e.preventDefault();
137
- this.onClose();
138
- this.changeDetector.markForCheck();
139
- }
140
- onSave(e) {
141
- e.preventDefault();
142
- this.applyTimezone();
143
- this.editService.save();
144
- this.changeDetector.markForCheck();
145
- }
146
- onClose() {
147
- this.editService.endEdit();
148
- this.changeDetector.markForCheck();
149
- this.focusService.focus();
150
- }
151
- get hasAllDay() {
152
- return Boolean(this.formGroup.get(this.fields.isAllDay));
153
- }
154
- get hasStartTimeZone() {
155
- return Boolean(this.formGroup.get(this.fields.startTimezone));
156
- }
157
- get isStartTimeZoneVisible() {
158
- return this.formGroup && this.formGroup.get('startTimezoneCheckbox').value;
159
- }
160
- get hasEndTimeZone() {
161
- return Boolean(this.formGroup.get(this.fields.endTimezone));
162
- }
163
- get isEndTimeZoneVisible() {
164
- return this.formGroup && this.formGroup.get('endTimezoneCheckbox').value;
165
- }
166
- getFormValue(field) {
167
- if (field) {
168
- return this.formGroup.get(field);
169
- }
170
- }
171
- textFor(key) {
172
- return this.localization.get(key);
173
- }
174
- onResourceClick(resource) {
175
- const resourceEditors = resource.multiple ? this.multipleResourceEditors : this.singleResourceEditors;
176
- const currentEditor = resourceEditors.filter((editor) => editor.resource.field === resource.field).pop();
177
- if (currentEditor) {
178
- currentEditor.focus();
179
- }
180
- }
181
- getControl(name) {
182
- return this.formGroup.get(name);
183
- }
184
- reset() {
185
- this.isActive = false;
186
- this.setTimeZone = false;
187
- this.setSeparateStartEndTimeZones = false;
188
- this.removeTimeZoneCheckboxesFromFormGroup();
189
- this.focusService.focus();
190
- }
191
- addTimeZoneCheckboxesToFormGroup() {
192
- if (isPresent(this.formGroup)) {
193
- const startField = this.fields.startTimezone;
194
- this.formGroup.addControl('startTimezoneCheckbox', new FormControl(this.formGroup.contains(startField) &&
195
- this.formGroup.get(startField).value));
196
- const endField = this.fields.endTimezone;
197
- this.formGroup.addControl('endTimezoneCheckbox', new FormControl(this.formGroup.contains(endField) &&
198
- this.formGroup.get(endField).value));
199
- }
200
- }
201
- removeTimeZoneCheckboxesFromFormGroup() {
202
- if (isPresent(this.formGroup)) {
203
- this.formGroup.removeControl('startTimezoneCheckbox');
204
- this.formGroup.removeControl('endTimezoneCheckbox');
205
- }
206
- }
207
- subscribeToFormGroupChanges() {
208
- if (isPresent(this.formGroup)) {
209
- const fields = this.fields;
210
- this.formGroup.get('startTimezoneCheckbox').valueChanges.subscribe(isTrue => {
211
- if (!isTrue) {
212
- this.formGroup.get(fields.startTimezone).setValue(null, { emitEvent: false });
213
- this.formGroup.get(fields.endTimezone).setValue(null, { emitEvent: false });
214
- this.formGroup.get('endTimezoneCheckbox').setValue(false, { emitEvent: false });
215
- }
216
- });
217
- this.formGroup.get('endTimezoneCheckbox').valueChanges.subscribe(isTrue => {
218
- if (!isTrue) {
219
- this.formGroup.get(fields.endTimezone).setValue(null, { emitEvent: false });
220
- }
221
- });
222
- this.formGroup.get(fields.start).valueChanges.subscribe((newStart) => {
223
- this.recurrenceStart = newStart;
224
- });
225
- }
226
- }
227
- /**
228
- * Converts the event dates to "display dates" that look like the original date in its time zone.
229
- * The result does not represent the same moment in time and must be converted back to local dates.
230
- */
231
- applyLocalTimezone() {
232
- const fields = this.fields;
233
- const start = this.readDateAsLocal(fields.start, this.eventTimezone);
234
- const end = this.readDateAsLocal(fields.end, this.endTimezone);
235
- this.formGroup.get(fields.start).reset(start);
236
- this.formGroup.get(fields.end).reset(end);
237
- }
238
- /**
239
- * Converts the "display dates" used by the editors back to local dates that represent the true moment in time.
240
- */
241
- applyTimezone() {
242
- const fields = this.fields;
243
- const start = this.readDateWithTimezone(fields.start, this.eventTimezone);
244
- const end = this.readDateWithTimezone(fields.end, this.endTimezone);
245
- this.formGroup.get(fields.start).reset(start);
246
- this.formGroup.get(fields.end).reset(end);
247
- }
248
- readDateWithTimezone(field, timezone) {
249
- const value = this.formGroup.get(field).value;
250
- return ZonedDate.fromUTCDate(toUTCDateTime(value), timezone).toLocalDate();
251
- }
252
- readDateAsLocal(field, timezone) {
253
- const value = this.formGroup.get(field).value;
254
- return toLocalDate(ZonedDate.fromLocalDate(value, timezone).toUTCDate());
255
- }
256
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EditDialogComponent, deps: [{ token: i0.NgZone }, { token: i1.EditService }, { token: i2.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i3.FocusService }], target: i0.ɵɵFactoryTarget.Component });
257
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: EditDialogComponent, isStandalone: true, selector: "kendo-scheduler-edit-dialog", inputs: { resources: "resources", timezone: "timezone", weekStart: "weekStart", fields: "fields", editTemplate: "editTemplate" }, viewQueries: [{ propertyName: "multipleResourceEditors", predicate: MultipleResourceEditorComponent, descendants: true }, { propertyName: "singleResourceEditors", predicate: SingleResourceEditorComponent, descendants: true }], ngImport: i0, template: `
258
- @if (isActive) {
259
- <kendo-dialog (close)='onClose()' [minWidth]='400' title='{{ textFor("editorTitle") }}' class='k-scheduler-edit-dialog' [autoFocusedElement]="autoFocusedElement">
260
- @if (!editTemplate) {
261
- <form
262
- class='k-scheduler-edit-form k-form k-form-md'
263
- novalidate
264
- [formGroup]='formGroup'
265
- >
266
- <!-- Title -->
267
- <kendo-formfield>
268
- <kendo-label
269
- [for]="title"
270
- [text]="textFor('editorEventTitle')"
271
- labelCssClass="k-form-label"
272
- ></kendo-label>
273
- <input
274
- #title
275
- kendoTextBox
276
- [attr.placeholder]="textFor('editorEventTitle')"
277
- [formControl]='getControl(fields.title)'
278
- />
279
- </kendo-formfield>
280
- <!-- Start -->
281
- <kendo-formfield>
282
- <kendo-label
283
- [for]="startDateTimePicker"
284
- [text]="textFor('editorEventStart')"
285
- labelCssClass="k-form-label"
286
- ></kendo-label>
287
- <kendo-scheduler-datetime-picker
288
- #startDateTimePicker
289
- [formControl]='getControl(fields.start)'
290
- [isAllDay]='getFormValue(fields.isAllDay)?.value'
291
- ></kendo-scheduler-datetime-picker>
292
- </kendo-formfield>
293
- @if (hasStartTimeZone) {
294
- <kendo-formfield>
295
- <ng-container>
296
- <span class="k-checkbox-wrap">
297
- <input
298
- id='k-set-timezone'
299
- type='checkbox'
300
- kendoCheckBox
301
- formControlName='startTimezoneCheckbox'
302
- />
303
- </span>
304
- <label [labelClass]="false" class='k-checkbox-label' for='k-set-timezone'>{{ textFor('editorEventTimeZone') }}</label>
305
- </ng-container>
306
- </kendo-formfield>
307
- }
308
- @if (isStartTimeZoneVisible) {
309
- <kendo-formfield>
310
- <kendo-label
311
- [for]="startTzPicker"
312
- [text]="textFor('editorEventStartTimeZone')"
313
- labelCssClass="k-form-label"
314
- ></kendo-label>
315
- <kendo-timezone-editor
316
- #startTzPicker
317
- [width]="undefined"
318
- [formControl]='getControl(fields.startTimezone)'
319
- ></kendo-timezone-editor>
320
- </kendo-formfield>
321
- }
322
- <!-- End -->
323
- <kendo-formfield>
324
- <kendo-label
325
- [for]="endDateTimePicker"
326
- [text]="textFor('editorEventEnd')"
327
- labelCssClass="k-form-label"
328
- ></kendo-label>
329
- <kendo-scheduler-datetime-picker
330
- #endDateTimePicker
331
- [formControl]='getControl(fields.end)'
332
- [isAllDay]='getFormValue(fields.isAllDay)?.value'
333
- ></kendo-scheduler-datetime-picker>
334
- </kendo-formfield>
335
- @if (isStartTimeZoneVisible && hasEndTimeZone) {
336
- <kendo-formfield>
337
- <ng-container>
338
- <span class="k-checkbox-wrap">
339
- <input
340
- id='k-use-separate'
341
- type='checkbox'
342
- kendoCheckBox
343
- formControlName='endTimezoneCheckbox'
344
- />
345
- </span>
346
- <label [labelClass]="false" class='k-checkbox-label' for='k-use-separate'>{{ textFor('editorEventSeparateTimeZones') }}</label>
347
- </ng-container>
348
- </kendo-formfield>
349
- }
350
- @if (isEndTimeZoneVisible) {
351
- <kendo-formfield>
352
- <kendo-label
353
- [for]="endTzPicker"
354
- [text]="textFor('editorEventEndTimeZone')"
355
- labelCssClass="k-form-label"
356
- ></kendo-label>
357
- <kendo-timezone-editor
358
- #endTzPicker
359
- [width]="undefined"
360
- [formControl]='getControl(fields.endTimezone)'
361
- ></kendo-timezone-editor>
362
- </kendo-formfield>
363
- }
364
- <!-- All day -->
365
- @if (hasAllDay) {
366
- <kendo-formfield>
367
- <ng-container>
368
- <span class="k-checkbox-wrap">
369
- <input
370
- id='k-is-allday-chkbox'
371
- type='checkbox'
372
- kendoCheckBox
373
- [formControl]='getControl(fields.isAllDay)'
374
- />
375
- </span>
376
- <label [labelClass]="false" class='k-checkbox-label' for='k-is-allday-chkbox'>{{ textFor('editorEventAllDay') }}</label>
377
- </ng-container>
378
- </kendo-formfield>
379
- }
380
- <!-- Series -->
381
- @if (isEditingSeries) {
382
- <kendo-recurrence-editor
383
- [formControl]='getControl(fields.recurrenceRule)'
384
- [start]='recurrenceStart'
385
- [timezone]='eventTimezone'
386
- [weekStart]='weekStart'
387
- ></kendo-recurrence-editor>
388
- }
389
- <!-- Description -->
390
- @if (getFormValue(fields.description)) {
391
- <kendo-formfield>
392
- <kendo-label
393
- [for]="description"
394
- [text]="textFor('editorEventDescription')"
395
- labelCssClass="k-form-label"
396
- ></kendo-label>
397
- <textarea #description kendoTextArea [formControl]='getControl(fields.description)'></textarea>
398
- </kendo-formfield>
399
- }
400
- <!-- Resources -->
401
- @for (resource of resources; track resource) {
402
- @if (getFormValue(resource.field)) {
403
- <kendo-formfield>
404
- <label class='k-label k-form-label' (click)="onResourceClick(resource)">
405
- {{ resource.name ? resource.name : resource.field }}
406
- </label>
407
- @if (resource.multiple) {
408
- <kendo-multiple-resource-editor
409
- [formControl]='getControl(resource.field)'
410
- [resource]='resource'>
411
- </kendo-multiple-resource-editor>
412
- }
413
- @if (!resource.multiple) {
414
- <kendo-single-resource-editor
415
- [formControl]='getControl(resource.field)'
416
- [resource]='resource'>
417
- </kendo-single-resource-editor>
418
- }
419
- </kendo-formfield>
420
- }
421
- }
422
- </form>
423
- }
424
- @if (editTemplate) {
425
- <form novalidate [formGroup]='formGroup'>
426
- <ng-container [ngTemplateOutlet]='editTemplate.templateRef'
427
- [ngTemplateOutletContext]="{
428
- $implicit: formGroup,
429
- formGroup: formGroup,
430
- dataItem: editedEvent,
431
- editMode: editMode,
432
- isNew: isNew
433
- }">
434
- </ng-container>
435
- </form>
436
- }
437
- <kendo-dialog-actions layout="start">
438
- <button
439
- kendoButton
440
- themeColor="primary"
441
- icon="save"
442
- [svgIcon]="saveIcon"
443
- [disabled]="!formGroup.valid"
444
- (click)="onSave($event)"
445
- >{{ textFor('save') }}</button>
446
- <button
447
- kendoButton
448
- icon="cancel-outline"
449
- [svgIcon]="cancelIcon"
450
- (click)="onCancel($event)"
451
- >{{ textFor('cancel') }}</button>
452
- </kendo-dialog-actions>
453
- </kendo-dialog>
454
- }
455
- `, isInline: true, dependencies: [{ kind: "component", type: DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormFieldComponent, selector: "kendo-formfield", inputs: ["showHints", "orientation", "showErrors", "colSpan"] }, { kind: "component", type: LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "directive", type: TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { kind: "component", type: SchedulerDateTimePickerComponent, selector: "kendo-scheduler-datetime-picker", inputs: ["isAllDay"], outputs: ["valueChange"] }, { kind: "directive", type: CheckBoxDirective, selector: "input[kendoCheckBox]", inputs: ["size", "rounded"] }, { kind: "directive", type: LabelDirective, selector: "label[for]", inputs: ["for", "labelClass"] }, { kind: "component", type: TimeZoneEditorComponent, selector: "kendo-timezone-editor", inputs: ["width"], outputs: ["valueChange"] }, { kind: "component", type: RecurrenceEditorComponent, selector: "kendo-recurrence-editor", inputs: ["start", "timezone", "weekStart", "repeatEveryOptions", "endAfterOptions", "repeatOnOptions", "endOnOptions"], outputs: ["valueChange"], exportAs: ["kendoRecurrenceEditor"] }, { kind: "directive", type: TextAreaDirective, selector: "textarea[kendoTextArea]", inputs: ["autoSize", "value"], outputs: ["valueChange"] }, { kind: "component", type: MultipleResourceEditorComponent, selector: "kendo-multiple-resource-editor" }, { kind: "component", type: SingleResourceEditorComponent, selector: "kendo-single-resource-editor" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }, { 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"] }] });
456
- }
457
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EditDialogComponent, decorators: [{
458
- type: Component,
459
- args: [{
460
- selector: 'kendo-scheduler-edit-dialog',
461
- template: `
462
- @if (isActive) {
463
- <kendo-dialog (close)='onClose()' [minWidth]='400' title='{{ textFor("editorTitle") }}' class='k-scheduler-edit-dialog' [autoFocusedElement]="autoFocusedElement">
464
- @if (!editTemplate) {
465
- <form
466
- class='k-scheduler-edit-form k-form k-form-md'
467
- novalidate
468
- [formGroup]='formGroup'
469
- >
470
- <!-- Title -->
471
- <kendo-formfield>
472
- <kendo-label
473
- [for]="title"
474
- [text]="textFor('editorEventTitle')"
475
- labelCssClass="k-form-label"
476
- ></kendo-label>
477
- <input
478
- #title
479
- kendoTextBox
480
- [attr.placeholder]="textFor('editorEventTitle')"
481
- [formControl]='getControl(fields.title)'
482
- />
483
- </kendo-formfield>
484
- <!-- Start -->
485
- <kendo-formfield>
486
- <kendo-label
487
- [for]="startDateTimePicker"
488
- [text]="textFor('editorEventStart')"
489
- labelCssClass="k-form-label"
490
- ></kendo-label>
491
- <kendo-scheduler-datetime-picker
492
- #startDateTimePicker
493
- [formControl]='getControl(fields.start)'
494
- [isAllDay]='getFormValue(fields.isAllDay)?.value'
495
- ></kendo-scheduler-datetime-picker>
496
- </kendo-formfield>
497
- @if (hasStartTimeZone) {
498
- <kendo-formfield>
499
- <ng-container>
500
- <span class="k-checkbox-wrap">
501
- <input
502
- id='k-set-timezone'
503
- type='checkbox'
504
- kendoCheckBox
505
- formControlName='startTimezoneCheckbox'
506
- />
507
- </span>
508
- <label [labelClass]="false" class='k-checkbox-label' for='k-set-timezone'>{{ textFor('editorEventTimeZone') }}</label>
509
- </ng-container>
510
- </kendo-formfield>
511
- }
512
- @if (isStartTimeZoneVisible) {
513
- <kendo-formfield>
514
- <kendo-label
515
- [for]="startTzPicker"
516
- [text]="textFor('editorEventStartTimeZone')"
517
- labelCssClass="k-form-label"
518
- ></kendo-label>
519
- <kendo-timezone-editor
520
- #startTzPicker
521
- [width]="undefined"
522
- [formControl]='getControl(fields.startTimezone)'
523
- ></kendo-timezone-editor>
524
- </kendo-formfield>
525
- }
526
- <!-- End -->
527
- <kendo-formfield>
528
- <kendo-label
529
- [for]="endDateTimePicker"
530
- [text]="textFor('editorEventEnd')"
531
- labelCssClass="k-form-label"
532
- ></kendo-label>
533
- <kendo-scheduler-datetime-picker
534
- #endDateTimePicker
535
- [formControl]='getControl(fields.end)'
536
- [isAllDay]='getFormValue(fields.isAllDay)?.value'
537
- ></kendo-scheduler-datetime-picker>
538
- </kendo-formfield>
539
- @if (isStartTimeZoneVisible && hasEndTimeZone) {
540
- <kendo-formfield>
541
- <ng-container>
542
- <span class="k-checkbox-wrap">
543
- <input
544
- id='k-use-separate'
545
- type='checkbox'
546
- kendoCheckBox
547
- formControlName='endTimezoneCheckbox'
548
- />
549
- </span>
550
- <label [labelClass]="false" class='k-checkbox-label' for='k-use-separate'>{{ textFor('editorEventSeparateTimeZones') }}</label>
551
- </ng-container>
552
- </kendo-formfield>
553
- }
554
- @if (isEndTimeZoneVisible) {
555
- <kendo-formfield>
556
- <kendo-label
557
- [for]="endTzPicker"
558
- [text]="textFor('editorEventEndTimeZone')"
559
- labelCssClass="k-form-label"
560
- ></kendo-label>
561
- <kendo-timezone-editor
562
- #endTzPicker
563
- [width]="undefined"
564
- [formControl]='getControl(fields.endTimezone)'
565
- ></kendo-timezone-editor>
566
- </kendo-formfield>
567
- }
568
- <!-- All day -->
569
- @if (hasAllDay) {
570
- <kendo-formfield>
571
- <ng-container>
572
- <span class="k-checkbox-wrap">
573
- <input
574
- id='k-is-allday-chkbox'
575
- type='checkbox'
576
- kendoCheckBox
577
- [formControl]='getControl(fields.isAllDay)'
578
- />
579
- </span>
580
- <label [labelClass]="false" class='k-checkbox-label' for='k-is-allday-chkbox'>{{ textFor('editorEventAllDay') }}</label>
581
- </ng-container>
582
- </kendo-formfield>
583
- }
584
- <!-- Series -->
585
- @if (isEditingSeries) {
586
- <kendo-recurrence-editor
587
- [formControl]='getControl(fields.recurrenceRule)'
588
- [start]='recurrenceStart'
589
- [timezone]='eventTimezone'
590
- [weekStart]='weekStart'
591
- ></kendo-recurrence-editor>
592
- }
593
- <!-- Description -->
594
- @if (getFormValue(fields.description)) {
595
- <kendo-formfield>
596
- <kendo-label
597
- [for]="description"
598
- [text]="textFor('editorEventDescription')"
599
- labelCssClass="k-form-label"
600
- ></kendo-label>
601
- <textarea #description kendoTextArea [formControl]='getControl(fields.description)'></textarea>
602
- </kendo-formfield>
603
- }
604
- <!-- Resources -->
605
- @for (resource of resources; track resource) {
606
- @if (getFormValue(resource.field)) {
607
- <kendo-formfield>
608
- <label class='k-label k-form-label' (click)="onResourceClick(resource)">
609
- {{ resource.name ? resource.name : resource.field }}
610
- </label>
611
- @if (resource.multiple) {
612
- <kendo-multiple-resource-editor
613
- [formControl]='getControl(resource.field)'
614
- [resource]='resource'>
615
- </kendo-multiple-resource-editor>
616
- }
617
- @if (!resource.multiple) {
618
- <kendo-single-resource-editor
619
- [formControl]='getControl(resource.field)'
620
- [resource]='resource'>
621
- </kendo-single-resource-editor>
622
- }
623
- </kendo-formfield>
624
- }
625
- }
626
- </form>
627
- }
628
- @if (editTemplate) {
629
- <form novalidate [formGroup]='formGroup'>
630
- <ng-container [ngTemplateOutlet]='editTemplate.templateRef'
631
- [ngTemplateOutletContext]="{
632
- $implicit: formGroup,
633
- formGroup: formGroup,
634
- dataItem: editedEvent,
635
- editMode: editMode,
636
- isNew: isNew
637
- }">
638
- </ng-container>
639
- </form>
640
- }
641
- <kendo-dialog-actions layout="start">
642
- <button
643
- kendoButton
644
- themeColor="primary"
645
- icon="save"
646
- [svgIcon]="saveIcon"
647
- [disabled]="!formGroup.valid"
648
- (click)="onSave($event)"
649
- >{{ textFor('save') }}</button>
650
- <button
651
- kendoButton
652
- icon="cancel-outline"
653
- [svgIcon]="cancelIcon"
654
- (click)="onCancel($event)"
655
- >{{ textFor('cancel') }}</button>
656
- </kendo-dialog-actions>
657
- </kendo-dialog>
658
- }
659
- `,
660
- standalone: true,
661
- imports: [DialogComponent, ReactiveFormsModule, FormFieldComponent, LabelComponent, TextBoxDirective, SchedulerDateTimePickerComponent, CheckBoxDirective, LabelDirective, TimeZoneEditorComponent, RecurrenceEditorComponent, TextAreaDirective, MultipleResourceEditorComponent, SingleResourceEditorComponent, NgTemplateOutlet, DialogActionsComponent, ButtonComponent]
662
- }]
663
- }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.EditService }, { type: i2.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i3.FocusService }], propDecorators: { multipleResourceEditors: [{
664
- type: ViewChildren,
665
- args: [MultipleResourceEditorComponent]
666
- }], singleResourceEditors: [{
667
- type: ViewChildren,
668
- args: [SingleResourceEditorComponent]
669
- }], resources: [{
670
- type: Input
671
- }], timezone: [{
672
- type: Input
673
- }], weekStart: [{
674
- type: Input
675
- }], fields: [{
676
- type: Input
677
- }], editTemplate: [{
678
- type: Input
679
- }] } });