@progress/kendo-angular-dateinputs 21.4.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 (141) hide show
  1. package/calendar/localization/calendar-messages.d.ts +1 -1
  2. package/calendar/localization/multiview-calendar-messages.d.ts +1 -1
  3. package/dateinput/localization/messages.d.ts +1 -1
  4. package/datepicker/localization/messages.d.ts +1 -1
  5. package/daterange/date-range-input.d.ts +1 -1
  6. package/daterange/localization/messages.d.ts +1 -1
  7. package/datetimepicker/localization/messages.d.ts +1 -1
  8. package/fesm2022/progress-kendo-angular-dateinputs.mjs +262 -262
  9. package/package.json +15 -23
  10. package/timepicker/localization/messages.d.ts +1 -1
  11. package/esm2022/calendar/calendar.component.mjs +0 -1711
  12. package/esm2022/calendar/calendar.module.mjs +0 -91
  13. package/esm2022/calendar/calendars.module.mjs +0 -87
  14. package/esm2022/calendar/footer.component.mjs +0 -77
  15. package/esm2022/calendar/for.directive.mjs +0 -116
  16. package/esm2022/calendar/header.component.mjs +0 -367
  17. package/esm2022/calendar/horizontal-view-list.component.mjs +0 -580
  18. package/esm2022/calendar/localization/calendar-custom-messages.component.mjs +0 -51
  19. package/esm2022/calendar/localization/calendar-localized-messages.directive.mjs +0 -39
  20. package/esm2022/calendar/localization/calendar-messages.mjs +0 -45
  21. package/esm2022/calendar/localization/multiview-calendar-custom-messages.component.mjs +0 -51
  22. package/esm2022/calendar/localization/multiview-calendar-localized-messages.directive.mjs +0 -39
  23. package/esm2022/calendar/localization/multiview-calendar-messages.mjs +0 -45
  24. package/esm2022/calendar/models/cell-context.interface.mjs +0 -5
  25. package/esm2022/calendar/models/navigation-action.enum.mjs +0 -20
  26. package/esm2022/calendar/models/orientation.mjs +0 -5
  27. package/esm2022/calendar/models/row-length-options.interface.mjs +0 -5
  28. package/esm2022/calendar/models/scrollable.interface.mjs +0 -5
  29. package/esm2022/calendar/models/selection-range-end.type.mjs +0 -5
  30. package/esm2022/calendar/models/selection-range.interface.mjs +0 -10
  31. package/esm2022/calendar/models/selection.mjs +0 -50
  32. package/esm2022/calendar/models/type.mjs +0 -5
  33. package/esm2022/calendar/models/view-service.interface.mjs +0 -5
  34. package/esm2022/calendar/models/view.enum.mjs +0 -16
  35. package/esm2022/calendar/models/view.type.mjs +0 -5
  36. package/esm2022/calendar/multiview-calendar.component.mjs +0 -1564
  37. package/esm2022/calendar/multiview-calendar.module.mjs +0 -89
  38. package/esm2022/calendar/navigation.component.mjs +0 -230
  39. package/esm2022/calendar/services/bus-view.service.mjs +0 -83
  40. package/esm2022/calendar/services/century-view.service.mjs +0 -219
  41. package/esm2022/calendar/services/decade-view.service.mjs +0 -217
  42. package/esm2022/calendar/services/disabled-dates.service.mjs +0 -66
  43. package/esm2022/calendar/services/dom.service.mjs +0 -203
  44. package/esm2022/calendar/services/month-view.service.mjs +0 -223
  45. package/esm2022/calendar/services/navigation.service.mjs +0 -60
  46. package/esm2022/calendar/services/scroll-sync.service.mjs +0 -89
  47. package/esm2022/calendar/services/selection.service.mjs +0 -62
  48. package/esm2022/calendar/services/weeknames.service.mjs +0 -33
  49. package/esm2022/calendar/services/year-view.service.mjs +0 -204
  50. package/esm2022/calendar/templates/cell-template.directive.mjs +0 -45
  51. package/esm2022/calendar/templates/century-cell-template.directive.mjs +0 -43
  52. package/esm2022/calendar/templates/decade-cell-template.directive.mjs +0 -43
  53. package/esm2022/calendar/templates/footer-template.directive.mjs +0 -44
  54. package/esm2022/calendar/templates/header-template.directive.mjs +0 -47
  55. package/esm2022/calendar/templates/header-title-template.directive.mjs +0 -43
  56. package/esm2022/calendar/templates/month-cell-template.directive.mjs +0 -43
  57. package/esm2022/calendar/templates/navigation-item-template.directive.mjs +0 -43
  58. package/esm2022/calendar/templates/weeknumber-cell-template.directive.mjs +0 -43
  59. package/esm2022/calendar/templates/year-cell-template.directive.mjs +0 -43
  60. package/esm2022/calendar/view-list.component.mjs +0 -497
  61. package/esm2022/calendar/view.component.mjs +0 -432
  62. package/esm2022/common/dom-queries.mjs +0 -24
  63. package/esm2022/common/models/fillmode.mjs +0 -5
  64. package/esm2022/common/models/rounded.mjs +0 -5
  65. package/esm2022/common/models/size.mjs +0 -5
  66. package/esm2022/common/models/week-days-format.mjs +0 -5
  67. package/esm2022/common/picker.service.mjs +0 -17
  68. package/esm2022/common/utils.mjs +0 -70
  69. package/esm2022/dateinput/arrow.enum.mjs +0 -13
  70. package/esm2022/dateinput/dateinput.component.mjs +0 -1196
  71. package/esm2022/dateinput/dateinput.module.mjs +0 -45
  72. package/esm2022/dateinput/localization/dateinput-custom-messages.component.mjs +0 -60
  73. package/esm2022/dateinput/localization/dateinput-localized-messages.directive.mjs +0 -39
  74. package/esm2022/dateinput/localization/messages.mjs +0 -39
  75. package/esm2022/dateinput/models/format-placeholder.model.mjs +0 -5
  76. package/esm2022/dateinput/models/format-settings.model.mjs +0 -5
  77. package/esm2022/dateinput/models/incremental-steps.model.mjs +0 -5
  78. package/esm2022/dateinputs.module.mjs +0 -136
  79. package/esm2022/datepicker/datepicker.component.mjs +0 -1758
  80. package/esm2022/datepicker/datepicker.module.mjs +0 -83
  81. package/esm2022/datepicker/localization/datepicker-custom-messages.component.mjs +0 -53
  82. package/esm2022/datepicker/localization/datepicker-localized-messages.directive.mjs +0 -39
  83. package/esm2022/datepicker/localization/messages.mjs +0 -63
  84. package/esm2022/daterange/auto-correct-on.type.mjs +0 -5
  85. package/esm2022/daterange/date-range-end-input.directive.mjs +0 -105
  86. package/esm2022/daterange/date-range-input.mjs +0 -138
  87. package/esm2022/daterange/date-range-popup-template.directive.mjs +0 -36
  88. package/esm2022/daterange/date-range-popup.component.mjs +0 -1051
  89. package/esm2022/daterange/date-range-selection.directive.mjs +0 -223
  90. package/esm2022/daterange/date-range-start-input.directive.mjs +0 -109
  91. package/esm2022/daterange/date-range.component.mjs +0 -116
  92. package/esm2022/daterange/date-range.module.mjs +0 -103
  93. package/esm2022/daterange/date-range.service.mjs +0 -225
  94. package/esm2022/daterange/localization/daterange-popup-custom-messages.component.mjs +0 -43
  95. package/esm2022/daterange/localization/daterange-popup-localized-messages.directive.mjs +0 -39
  96. package/esm2022/daterange/localization/messages.mjs +0 -51
  97. package/esm2022/datetimepicker/datetimepicker.component.mjs +0 -2505
  98. package/esm2022/datetimepicker/datetimepicker.module.mjs +0 -106
  99. package/esm2022/datetimepicker/localization/datetimepicker-custom-messages.component.mjs +0 -52
  100. package/esm2022/datetimepicker/localization/localized-messages.directive.mjs +0 -39
  101. package/esm2022/datetimepicker/localization/messages.mjs +0 -153
  102. package/esm2022/datetimepicker/models/active-tab.type.mjs +0 -5
  103. package/esm2022/defaults.mjs +0 -24
  104. package/esm2022/directives.mjs +0 -146
  105. package/esm2022/index.mjs +0 -78
  106. package/esm2022/package-metadata.mjs +0 -16
  107. package/esm2022/popup-settings.model.mjs +0 -5
  108. package/esm2022/preventable-event.mjs +0 -27
  109. package/esm2022/progress-kendo-angular-dateinputs.mjs +0 -8
  110. package/esm2022/timepicker/localization/messages.mjs +0 -105
  111. package/esm2022/timepicker/localization/timepicker-custom-messages.component.mjs +0 -54
  112. package/esm2022/timepicker/localization/timepicker-localized-messages.directive.mjs +0 -39
  113. package/esm2022/timepicker/localization/timeselector-custom-messages.component.mjs +0 -45
  114. package/esm2022/timepicker/localization/timeselector-localized-messages.directive.mjs +0 -39
  115. package/esm2022/timepicker/models/incremental-steps.model.mjs +0 -5
  116. package/esm2022/timepicker/models/list-item.interface.mjs +0 -5
  117. package/esm2022/timepicker/models/list-service-settings.mjs +0 -5
  118. package/esm2022/timepicker/models/list-service.interface.mjs +0 -5
  119. package/esm2022/timepicker/models/time-part.default.mjs +0 -14
  120. package/esm2022/timepicker/services/dayperiod.service.mjs +0 -131
  121. package/esm2022/timepicker/services/dom.service.mjs +0 -126
  122. package/esm2022/timepicker/services/hours.service.mjs +0 -130
  123. package/esm2022/timepicker/services/milliseconds.service.mjs +0 -131
  124. package/esm2022/timepicker/services/minutes.service.mjs +0 -128
  125. package/esm2022/timepicker/services/seconds.service.mjs +0 -128
  126. package/esm2022/timepicker/timelist.component.mjs +0 -388
  127. package/esm2022/timepicker/timepicker.component.mjs +0 -1598
  128. package/esm2022/timepicker/timepicker.module.mjs +0 -71
  129. package/esm2022/timepicker/timeselector.component.mjs +0 -728
  130. package/esm2022/timepicker/util.mjs +0 -70
  131. package/esm2022/util.mjs +0 -406
  132. package/esm2022/validators/disabled-date.validator.mjs +0 -18
  133. package/esm2022/validators/disabled-dates-range.validator.mjs +0 -26
  134. package/esm2022/validators/incomplete-date.validator.mjs +0 -18
  135. package/esm2022/validators/max.validator.mjs +0 -21
  136. package/esm2022/validators/min.validator.mjs +0 -21
  137. package/esm2022/validators/time-range.validator.mjs +0 -23
  138. package/esm2022/virtualization/models/scrollable.interface.mjs +0 -5
  139. package/esm2022/virtualization/services/row-height.service.mjs +0 -73
  140. package/esm2022/virtualization/services/scroller.service.mjs +0 -109
  141. package/esm2022/virtualization/virtualization.component.mjs +0 -324
@@ -1,1598 +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, ChangeDetectorRef, ChangeDetectionStrategy, ElementRef, EventEmitter, HostBinding, Input, Output, NgZone, TemplateRef, ViewChild, ViewContainerRef, Renderer2, forwardRef, isDevMode, Injector } from '@angular/core';
6
- import { NG_VALUE_ACCESSOR, NG_VALIDATORS, NgControl } from '@angular/forms';
7
- import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
8
- import { PopupService } from '@progress/kendo-angular-popup';
9
- import { cloneDate, isEqual } from '@progress/kendo-date-math';
10
- import { hasObservers, isControlRequired, KendoInput, Keys, MultiTabStop, ResizeSensorComponent, EventsOutsideAngularDirective, normalizeKeys, parseCSSClassNames } from '@progress/kendo-angular-common';
11
- import { AdaptiveService } from '@progress/kendo-angular-utils';
12
- import { validatePackage } from '@progress/kendo-licensing';
13
- import { packageMetadata } from '../package-metadata';
14
- import { MIDNIGHT_DATE, MIN_TIME, MAX_TIME } from '../defaults';
15
- import { IntlService } from '@progress/kendo-angular-intl';
16
- import { PickerService } from '../common/picker.service';
17
- import { requiresZoneOnBlur, currentFocusTarget, attributeNames } from '../common/utils';
18
- import { TIME_PART } from './models/time-part.default';
19
- import { TimeSelectorComponent } from './timeselector.component';
20
- import { DateInputComponent } from '../dateinput/dateinput.component';
21
- import { PreventableEvent } from '../preventable-event';
22
- import { noop, setTime, isWindowAvailable, getFillModeClass, getSizeClass, getRoundedClass, DEFAULT_FILL_MODE, DEFAULT_ROUNDED, DEFAULT_SIZE } from '../util';
23
- import { timeRangeValidator } from '../validators/time-range.validator';
24
- import { fromEvent } from 'rxjs';
25
- import { incompleteDateValidator } from '../validators/incomplete-date.validator';
26
- import { BusViewService } from '../calendar/services/bus-view.service';
27
- import { checkIcon, clockIcon } from '@progress/kendo-svg-icons';
28
- import { ActionSheetComponent, ActionSheetTemplateDirective } from '@progress/kendo-angular-navigation';
29
- import { TimeSelectorCustomMessagesComponent } from './localization/timeselector-custom-messages.component';
30
- import { ButtonComponent } from '@progress/kendo-angular-buttons';
31
- import { NgTemplateOutlet } from '@angular/common';
32
- import { IconWrapperComponent } from '@progress/kendo-angular-icons';
33
- import { DateInputCustomMessagesComponent } from '../dateinput/localization/dateinput-custom-messages.component';
34
- import { TimePickerLocalizedMessagesDirective } from './localization/timepicker-localized-messages.directive';
35
- import { touchEnabled } from '@progress/kendo-common';
36
- import * as i0 from "@angular/core";
37
- import * as i1 from "../calendar/services/bus-view.service";
38
- import * as i2 from "@progress/kendo-angular-l10n";
39
- import * as i3 from "@progress/kendo-angular-popup";
40
- import * as i4 from "../common/picker.service";
41
- import * as i5 from "@progress/kendo-angular-intl";
42
- import * as i6 from "@progress/kendo-angular-utils";
43
- const VALUE_DOC_LINK = 'https://www.telerik.com/kendo-angular-ui/components/dateinputs/timepicker/#toc-integration-with-json';
44
- const INTL_DATE_FORMAT = 'https://github.com/telerik/kendo-intl/blob/master/docs/date-formatting/index.md';
45
- const formatRegExp = new RegExp(`${TIME_PART.hour}|${TIME_PART.minute}|${TIME_PART.second}|${TIME_PART.millisecond}|${TIME_PART.dayperiod}|literal`);
46
- const ACCEPT_BUTTON_SELECTOR = '.k-button.k-time-accept';
47
- const CANCEL_BUTTON_SELECTOR = '.k-button.k-time-cancel';
48
- /**
49
- * Represents the [Kendo UI TimePicker component for Angular](slug:overview_timepicker).
50
- *
51
- * @example
52
- * ```typescript
53
- * @Component({
54
- * selector: 'my-app',
55
- * template: `
56
- * <kendo-timepicker [(value)]="selectedTime"></kendo-timepicker>
57
- * `
58
- * })
59
- * export class AppComponent {
60
- * public selectedTime: Date = new Date();
61
- * }
62
- * ```
63
- *
64
- * @remarks
65
- * Supported children components are: {@link TimePickerCustomMessagesComponent}.
66
- */
67
- export class TimePickerComponent extends MultiTabStop {
68
- bus;
69
- zone;
70
- localization;
71
- cdr;
72
- popupService;
73
- wrapper;
74
- renderer;
75
- injector;
76
- pickerService;
77
- intl;
78
- adaptiveService;
79
- /**
80
- * @hidden
81
- */
82
- clockIcon = clockIcon;
83
- container;
84
- popupTemplate;
85
- toggleButton;
86
- actionSheet;
87
- /**
88
- * @hidden
89
- */
90
- focusableId;
91
- /**
92
- * Determines whether the TimePicker is disabled
93
- * ([see example]({% slug disabled_timepicker %})).
94
- * To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_timepicker#toc-managing-the-timepicker-disabled-state-in-reactive-forms).
95
- *
96
- * @default false
97
- */
98
- disabled = false;
99
- /**
100
- * Determines the read-only state of the TimePicker
101
- * ([see example]({% slug readonly_timepicker %}#toc-read-only-timepicker)).
102
- *
103
- * @default false
104
- */
105
- readonly = false;
106
- /**
107
- * Sets the read-only state of the TimePicker input field
108
- * ([see example]({% slug readonly_timepicker %}#toc-read-only-input)).
109
- *
110
- * If you set the [`readonly`]({% slug api_dateinputs_timepickercomponent %}#toc-readonly) property value to `true`,
111
- * the input will be rendered in a read-only state regardless of the `readOnlyInput` value.
112
- * @default false
113
- */
114
- readOnlyInput = false;
115
- /**
116
- * If set to `true`, renders a clear button after the input text or TimePicker value has been changed.
117
- * Clicking this button resets the value of the component to `null` and triggers the `valueChange` event.
118
- * @default false
119
- */
120
- clearButton = false;
121
- /**
122
- * Specifies the time format that is used to display the input value
123
- * ([see example]({% slug formats_timepicker %})).
124
- * @default 't'
125
- */
126
- format = 't';
127
- /**
128
- * Defines the descriptions of the format sections in the input field.
129
- * For more information, refer to the article on
130
- * [placeholders]({% slug placeholders_timepicker %}).
131
- */
132
- formatPlaceholder;
133
- /**
134
- * Specifies the hint the TimePicker displays when its value is `null`.
135
- * For more information, refer to the article on
136
- * [placeholders]({% slug placeholders_timepicker %}).
137
- * @default null
138
- */
139
- placeholder;
140
- /**
141
- * Specifies the smallest valid time value
142
- * ([see example]({% slug timeranges_timepicker %})).
143
- * @default `00:00:00`
144
- */
145
- set min(min) {
146
- this._min = cloneDate(min || MIN_TIME);
147
- }
148
- get min() {
149
- return this._min;
150
- }
151
- /**
152
- * Specifies the biggest valid time value
153
- * ([see example]({% slug timeranges_timepicker %})).
154
- * @default `23:59:59`
155
- */
156
- set max(max) {
157
- this._max = cloneDate(max || MAX_TIME);
158
- }
159
- get max() {
160
- return this._max;
161
- }
162
- /**
163
- * Determines whether the built-in validation for incomplete dates is to be enforced when a form is being validated.
164
- *
165
- * @default false
166
- */
167
- incompleteDateValidation = false;
168
- /**
169
- * Determines whether to automatically move to the next segment after the user completes the current one.
170
- *
171
- * @default true
172
- */
173
- autoSwitchParts = true;
174
- /**
175
- * A string array representing custom keys, which will move the focus to the next date format segment.
176
- */
177
- autoSwitchKeys = [];
178
- /**
179
- * Indicates whether the mouse scroll can be used to increase/decrease the time segments values.
180
- *
181
- * @default true
182
- */
183
- enableMouseWheel = true;
184
- /**
185
- * Determines if the users should see a blinking caret inside the Date Input when possible.
186
- *
187
- * @default false
188
- */
189
- allowCaretMode = false;
190
- /**
191
- * Determines whether to display the **Cancel** button in the popup.
192
- *
193
- * @default true
194
- */
195
- cancelButton = true;
196
- /**
197
- * Determines whether to display the **Now** button in the popup.
198
- *
199
- * If the current time is out of range or the incremental step is greater than `1`, the **Now** button will be hidden.
200
- *
201
- * @default true
202
- */
203
- nowButton = true;
204
- /**
205
- * Configures the incremental steps of the TimePicker.
206
- * For more information, refer to the article on
207
- * [incremental steps]({% slug incrementalsteps_timepicker %}).
208
- *
209
- * If the incremental step is greater than `1`, the **Now** button will be hidden.
210
- */
211
- set steps(steps) {
212
- this._steps = steps || {};
213
- }
214
- get steps() {
215
- return this._steps;
216
- }
217
- /**
218
- * Configures the popup of the TimePicker.
219
- *
220
- * The available options are animate which controls the popup animation and by default, the open and close animations are enabled.
221
- * The `appendTo` option controls the popup container and by default, the popup will be appended to the root component.
222
- * The `popupClass` option specifies a list of CSS classes that are used to style the popup.
223
- */
224
- set popupSettings(settings) {
225
- this._popupSettings = Object.assign({}, { animate: true }, settings);
226
- }
227
- get popupSettings() {
228
- return this._popupSettings;
229
- }
230
- /**
231
- * Sets the tabindex of the TimePicker component.
232
- * @default 0
233
- */
234
- tabindex = 0;
235
- /**
236
- * @hidden
237
- */
238
- set tabIndex(tabIndex) {
239
- this.tabindex = tabIndex;
240
- }
241
- get tabIndex() {
242
- return this.tabindex;
243
- }
244
- /**
245
- * Sets the title of the input element of the TimePicker and the title text rendered
246
- * in the header of the popup(action sheet). Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
247
- */
248
- adaptiveTitle = '';
249
- /**
250
- * Sets the subtitle text rendered in the header of the popup(action sheet).
251
- * Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
252
- * By default, subtitle is not rendered.
253
- */
254
- adaptiveSubtitle;
255
- /**
256
- * Determines whether the built-in min or max validators are enforced when a form is being validated.
257
- *
258
- * @default true
259
- */
260
- rangeValidation = true;
261
- /**
262
- * Determines whether the TimePicker is in adaptive mode.
263
- * @default 'none'
264
- */
265
- adaptiveMode = 'none';
266
- /**
267
- * Determines whether the TimePicker is in adaptive mode.
268
- *
269
- * The `value` has to be a valid [JavaScript `Date`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date) instance or `null`.
270
- */
271
- set value(value) {
272
- this.verifyValue(value);
273
- this._value = cloneDate(value);
274
- }
275
- get value() {
276
- return this._value;
277
- }
278
- /**
279
- * Sets the size of the component.
280
- * @default 'medium'
281
- */
282
- set size(size) {
283
- this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));
284
- this.renderer.removeClass(this.toggleButton.nativeElement, getSizeClass('button', this.size));
285
- const newSize = size ? size : DEFAULT_SIZE;
286
- if (newSize !== 'none') {
287
- this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));
288
- this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('button', newSize));
289
- }
290
- this._size = newSize;
291
- }
292
- get size() {
293
- return this._size;
294
- }
295
- /**
296
- * Sets the rounded styling of the component.
297
- * @default 'medium'
298
- *
299
- */
300
- set rounded(rounded) {
301
- this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));
302
- const newRounded = rounded ? rounded : DEFAULT_ROUNDED;
303
- if (newRounded !== 'none') {
304
- this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));
305
- }
306
- this._rounded = newRounded;
307
- }
308
- get rounded() {
309
- return this._rounded;
310
- }
311
- /**
312
- * Sets the fillMode of the component.
313
- * @default 'solid'
314
- */
315
- set fillMode(fillMode) {
316
- this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));
317
- this.renderer.removeClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));
318
- this.renderer.removeClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);
319
- const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;
320
- if (newFillMode !== 'none') {
321
- this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));
322
- this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', newFillMode));
323
- this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${newFillMode}-base`);
324
- }
325
- this._fillMode = newFillMode;
326
- }
327
- get fillMode() {
328
- return this._fillMode;
329
- }
330
- /**
331
- * Sets the HTML attributes of the inner focusable input element. Attributes which are essential for certain component functionalities cannot be changed.
332
- */
333
- inputAttributes;
334
- /**
335
- * Fires each time the user selects a new value
336
- * ([see example](slug:events_timepicker)).
337
- */
338
- valueChange = new EventEmitter();
339
- /**
340
- * Fires each time the user focuses the input element
341
- * ([see example](slug:events_timepicker)).
342
- */
343
- onFocus = new EventEmitter();
344
- /**
345
- * Fires each time the input element gets blurred
346
- * ([see example](slug:events_timepicker)).
347
- */
348
- onBlur = new EventEmitter();
349
- /**
350
- * Fires each time the popup is about to open
351
- * ([see example](slug:events_timepicker)).
352
- * This event is preventable. If you cancel the event, the popup will remain closed.
353
- */
354
- open = new EventEmitter();
355
- /**
356
- * Fires each time the popup is about to close
357
- * ([see example](slug:events_timepicker)).
358
- * This event is preventable. If you cancel the event, the popup will remain open.
359
- */
360
- close = new EventEmitter();
361
- /**
362
- * @hidden
363
- */
364
- escape = new EventEmitter();
365
- /**
366
- * @hidden
367
- */
368
- wrapperClasses = true;
369
- /**
370
- * @hidden
371
- */
372
- get disabledClass() {
373
- return this.disabled;
374
- }
375
- get popupUID() {
376
- return `k-timepicker-popup-${this.bus.calendarId}-`;
377
- }
378
- popupRef;
379
- /**
380
- * @hidden
381
- */
382
- checkIcon = checkIcon;
383
- get isActive() {
384
- return this._active;
385
- }
386
- set isActive(value) {
387
- this._active = value;
388
- if (!this.wrapper) {
389
- return;
390
- }
391
- const element = this.wrapper.nativeElement;
392
- if (value) {
393
- this.renderer.addClass(element, 'k-focus');
394
- }
395
- else {
396
- this.renderer.removeClass(element, 'k-focus');
397
- }
398
- }
399
- get show() {
400
- return this._show;
401
- }
402
- set show(show) {
403
- if (show && (this.disabled || this.readonly)) {
404
- return;
405
- }
406
- const skipZone = !show && (!this._show || (!hasObservers(this.close) && !hasObservers(this.open)));
407
- if (!skipZone) {
408
- this.zone.run(() => {
409
- const event = new PreventableEvent();
410
- if (!this._show && show) {
411
- this.open.emit(event);
412
- }
413
- else if (this._show && !show) {
414
- this.close.emit(event);
415
- }
416
- if (event.isDefaultPrevented()) {
417
- return;
418
- }
419
- this.toggleTimeSelector(show);
420
- });
421
- }
422
- else {
423
- this.toggleTimeSelector(show);
424
- }
425
- }
426
- get dateInput() {
427
- return this.pickerService.input;
428
- }
429
- get timeSelector() {
430
- return this.pickerService.timeSelector;
431
- }
432
- /**
433
- * @hidden
434
- */
435
- get isControlRequired() {
436
- return isControlRequired(this.control);
437
- }
438
- /**
439
- * @hidden
440
- */
441
- windowSize;
442
- get adaptiveAcceptButton() {
443
- return this.actionSheet.element.nativeElement.querySelector(ACCEPT_BUTTON_SELECTOR);
444
- }
445
- get adaptiveCancelButton() {
446
- return this.actionSheet.element.nativeElement.querySelector(CANCEL_BUTTON_SELECTOR);
447
- }
448
- get inputElement() {
449
- return this.wrapper.nativeElement.querySelector('input');
450
- }
451
- onControlChange = noop;
452
- onControlTouched = noop;
453
- onValidatorChange = noop;
454
- resolvedPromise = Promise.resolve(null);
455
- timeRangeValidateFn = noop;
456
- incompleteValidator = noop;
457
- _min = cloneDate(MIN_TIME);
458
- _max = cloneDate(MAX_TIME);
459
- _popupSettings = { animate: true };
460
- _show = false;
461
- _steps = {};
462
- _value = null;
463
- _active = false;
464
- localizationChangeSubscription;
465
- pickerSubscriptions;
466
- windowBlurSubscription;
467
- control;
468
- domEvents = [];
469
- _size = DEFAULT_SIZE;
470
- _rounded = DEFAULT_ROUNDED;
471
- _fillMode = DEFAULT_FILL_MODE;
472
- constructor(bus, zone, localization, cdr, popupService, wrapper, renderer, injector, pickerService, intl, adaptiveService) {
473
- super();
474
- this.bus = bus;
475
- this.zone = zone;
476
- this.localization = localization;
477
- this.cdr = cdr;
478
- this.popupService = popupService;
479
- this.wrapper = wrapper;
480
- this.renderer = renderer;
481
- this.injector = injector;
482
- this.pickerService = pickerService;
483
- this.intl = intl;
484
- this.adaptiveService = adaptiveService;
485
- validatePackage(packageMetadata);
486
- this.pickerSubscriptions = this.pickerService.onFocus.subscribe(this.handleFocus.bind(this));
487
- this.pickerSubscriptions.add(this.pickerService.onBlur.subscribe(this.handleBlur.bind(this)));
488
- this.pickerSubscriptions.add(this.pickerService.dateCompletenessChange.subscribe(this.handleDateCompletenessChange.bind(this)));
489
- }
490
- /**
491
- * @hidden
492
- * Used by the TextBoxContainer to determine if the component is empty
493
- */
494
- isEmpty() {
495
- return !this.value && this.dateInput.isEmpty();
496
- }
497
- /**
498
- * @hidden
499
- */
500
- ngOnInit() {
501
- this.localizationChangeSubscription = this.localization
502
- .changes.subscribe(() => this.cdr.markForCheck());
503
- this.control = this.injector.get(NgControl, null);
504
- if (this.wrapper) {
505
- this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');
506
- this.zone.runOutsideAngular(() => {
507
- this.bindEvents();
508
- });
509
- }
510
- this.focusableId = this.dateInput?.focusableId;
511
- }
512
- /**
513
- * @hidden
514
- */
515
- ngAfterViewInit() {
516
- this.setComponentClasses();
517
- this.windowSize = this.adaptiveService.size;
518
- }
519
- /**
520
- * @hidden
521
- */
522
- ngOnChanges(changes) {
523
- if (changes.min || changes.max || changes.rangeValidation || changes.incompleteDateValidation) {
524
- this.timeRangeValidateFn = this.rangeValidation ? timeRangeValidator(this.min, this.max) : noop;
525
- this.incompleteValidator = this.incompleteDateValidation ? incompleteDateValidator() : noop;
526
- this.onValidatorChange();
527
- }
528
- if (changes.format) {
529
- this.verifyFormat();
530
- }
531
- if (!this.focusableId || changes.focusableId) {
532
- this.focusableId = this.dateInput?.focusableId;
533
- }
534
- }
535
- /**
536
- * @hidden
537
- */
538
- ngOnDestroy() {
539
- this.isActive = false;
540
- this.show = false;
541
- if (this.localizationChangeSubscription) {
542
- this.localizationChangeSubscription.unsubscribe();
543
- }
544
- if (this.windowBlurSubscription) {
545
- this.windowBlurSubscription.unsubscribe();
546
- }
547
- this.domEvents.forEach(unbindCallback => unbindCallback());
548
- this.pickerSubscriptions.unsubscribe();
549
- }
550
- /**
551
- * @hidden
552
- */
553
- handleKeydown(event) {
554
- const { altKey } = event;
555
- const code = normalizeKeys(event);
556
- if (code === Keys.Escape) {
557
- this.focusInput();
558
- this.show = false;
559
- hasObservers(this.escape) && this.escape.emit();
560
- this.cdr.detectChanges();
561
- return;
562
- }
563
- if (altKey) {
564
- if (code === Keys.ArrowUp) {
565
- event.preventDefault();
566
- this.focusInput();
567
- this.show = false;
568
- this.cdr.detectChanges();
569
- }
570
- if (code === Keys.ArrowDown && !this.show) {
571
- event.preventDefault();
572
- this.show = true;
573
- }
574
- }
575
- }
576
- /**
577
- * @hidden
578
- */
579
- writeValue(value) {
580
- this.verifyValue(value);
581
- this.value = cloneDate(value);
582
- this.cdr.markForCheck();
583
- if (!value && this.dateInput) {
584
- this.dateInput.placeholder = this.placeholder;
585
- this.dateInput.writeValue(value);
586
- }
587
- }
588
- /**
589
- * @hidden
590
- */
591
- registerOnChange(fn) {
592
- this.onControlChange = fn;
593
- }
594
- /**
595
- * @hidden
596
- */
597
- registerOnTouched(fn) {
598
- this.onControlTouched = fn;
599
- }
600
- /**
601
- * @hidden
602
- */
603
- setDisabledState(isDisabled) {
604
- this.disabled = isDisabled;
605
- this.cdr.markForCheck();
606
- }
607
- /**
608
- * @hidden
609
- */
610
- validate(control) {
611
- return this.timeRangeValidateFn(control) || this.incompleteValidator(control, this.dateInput && this.dateInput.isDateIncomplete);
612
- }
613
- /**
614
- * @hidden
615
- */
616
- registerOnValidatorChange(fn) {
617
- this.onValidatorChange = fn;
618
- }
619
- /**
620
- * Focuses the TimePicker component.
621
- *
622
- */
623
- focus() {
624
- this.dateInput.focus();
625
- }
626
- /**
627
- * Blurs the TimePicker component.
628
- *
629
- */
630
- blur() {
631
- (this.timeSelector || this.dateInput)['blur']();
632
- }
633
- /**
634
- * Toggles the visibility of the popup or ActionSheet.
635
- * If you use the `toggle` method to show or hide the popup or ActionSheet, the `open` and `close` events do not fire.
636
- *
637
- * @param {boolean} show The state of the popup.
638
- */
639
- toggle(show) {
640
- if (this.disabled || this.readonly) {
641
- return;
642
- }
643
- this.resolvedPromise.then(() => {
644
- this.toggleTimeSelector((show === undefined) ? !this.show : show);
645
- });
646
- }
647
- /**
648
- * Returns whether the component is currently open.
649
- * That is when the popup or ActionSheet is open.
650
- */
651
- get isOpen() {
652
- return this.show;
653
- }
654
- /**
655
- * @hidden
656
- */
657
- get appendTo() {
658
- const { appendTo } = this.popupSettings;
659
- if (!appendTo || appendTo === 'root') {
660
- return undefined;
661
- }
662
- return appendTo === 'component' ? this.container : appendTo;
663
- }
664
- /**
665
- * @hidden
666
- */
667
- handleChange(value) {
668
- if (isEqual(this.value, value)) {
669
- if (this.show) {
670
- this.focusInput();
671
- this.show = false;
672
- }
673
- if (this.incompleteDateValidation) {
674
- this.onControlChange(cloneDate(value));
675
- }
676
- return;
677
- }
678
- this.value = cloneDate(value);
679
- this.zone.run(() => {
680
- if (this.show) {
681
- this.focusInput();
682
- this.show = false;
683
- }
684
- this.dateInput.showClearButton = true;
685
- this.onControlChange(cloneDate(value));
686
- this.valueChange.emit(cloneDate(value));
687
- });
688
- }
689
- /**
690
- * @hidden
691
- */
692
- handleActionSheetAccept() {
693
- this.timeSelector.handleAccept();
694
- }
695
- /**
696
- * @hidden
697
- */
698
- handleActionSheetCollapse() {
699
- // If not handled, the actionsheet expanded state does not get updated when overlay is clicked
700
- this.cdr.markForCheck();
701
- }
702
- /**
703
- * @hidden
704
- */
705
- handleReject() {
706
- this.focusInput();
707
- this.show = false;
708
- }
709
- /**
710
- * @hidden
711
- */
712
- handleInputChange(value) {
713
- const val = this.dateInput.formatSections['date'] ? value : this.mergeTime(value);
714
- this.handleChange(val);
715
- }
716
- /**
717
- * @hidden
718
- */
719
- handleDateInputClick() {
720
- this.windowSize = this.adaptiveService.size;
721
- if (this.isAdaptive) {
722
- this.show = true;
723
- }
724
- else if (this.isOpen) {
725
- this.show = false;
726
- }
727
- }
728
- /**
729
- * @hidden
730
- */
731
- onTabOutNow() {
732
- if (!this.timeSelector.showNowButton) {
733
- this.cancelButton ?
734
- this.timeSelector.cancel.nativeElement.focus() :
735
- this.timeSelector.accept.nativeElement.focus();
736
- }
737
- }
738
- /**
739
- * @hidden
740
- */
741
- handleMousedown(args) {
742
- args.preventDefault();
743
- }
744
- /**
745
- * @hidden
746
- */
747
- handleIconClick(event) {
748
- if (this.disabled || this.readonly) {
749
- return;
750
- }
751
- event.preventDefault();
752
- this.focusInput();
753
- //XXX: explicit call handleFocus handler here
754
- //due to async IE focus event
755
- this.handleFocus();
756
- this.show = !this.show;
757
- this.cdr.detectChanges();
758
- }
759
- /**
760
- * @hidden
761
- */
762
- get popupClasses() {
763
- const popupClasses = ['k-timepicker-popup'];
764
- if (!this.popupSettings.popupClass) {
765
- return popupClasses;
766
- }
767
- const customClasses = parseCSSClassNames(this.popupSettings.popupClass);
768
- if (customClasses?.length) {
769
- popupClasses.push(...customClasses);
770
- }
771
- return popupClasses;
772
- }
773
- /**
774
- * @hidden
775
- */
776
- get isAdaptiveModeEnabled() {
777
- return this.adaptiveMode === 'auto';
778
- }
779
- /**
780
- * @hidden
781
- */
782
- get isAdaptive() {
783
- return this.isAdaptiveModeEnabled && this.windowSize !== 'large';
784
- }
785
- /**
786
- * @hidden
787
- */
788
- normalizeTime(date) {
789
- return setTime(MIDNIGHT_DATE, date);
790
- }
791
- /**
792
- * @hidden
793
- */
794
- mergeTime(value) {
795
- return this.value && value ? setTime(this.value, value) : value;
796
- }
797
- /**
798
- * @hidden
799
- */
800
- onResize() {
801
- const currentWindowSize = this.adaptiveService.size;
802
- if (!this.isOpen || this.windowSize === currentWindowSize) {
803
- return;
804
- }
805
- if (this.actionSheet.expanded) {
806
- this.toggleActionSheet(false);
807
- }
808
- else {
809
- this.togglePopup(false);
810
- }
811
- this.windowSize = currentWindowSize;
812
- }
813
- /**
814
- * @hidden
815
- */
816
- onTabOutLastPart() {
817
- this.renderer.removeClass(this.timeSelector.timeListWrappers.last.nativeElement, 'k-focus');
818
- if (this.isAdaptive) {
819
- this.cancelButton ? this.adaptiveCancelButton.focus() : this.adaptiveAcceptButton.focus();
820
- }
821
- else {
822
- this.timeSelector.accept.nativeElement.focus();
823
- }
824
- }
825
- /**
826
- * @hidden
827
- */
828
- onTabOutFirstPart() {
829
- this.renderer.removeClass(this.timeSelector.timeListWrappers.first.nativeElement, 'k-focus');
830
- if (this.timeSelector.showNowButton) {
831
- this.timeSelector.now.nativeElement.focus();
832
- }
833
- else {
834
- this.cancelButton ? this.timeSelector.cancel.nativeElement.focus() : this.timeSelector.accept.nativeElement.focus();
835
- }
836
- }
837
- toggleTimeSelector(show) {
838
- const previousWindowSize = this.windowSize;
839
- this.windowSize = this.adaptiveService.size;
840
- if (previousWindowSize !== this.windowSize && !show) {
841
- if (previousWindowSize !== 'large') {
842
- this.toggleActionSheet(show);
843
- }
844
- else {
845
- this.togglePopup(show);
846
- }
847
- }
848
- else {
849
- if (this.isAdaptive) {
850
- this.toggleActionSheet(show);
851
- }
852
- else {
853
- this.togglePopup(show);
854
- }
855
- }
856
- this.toggleFocus();
857
- }
858
- toggleActionSheet(show) {
859
- if (show === this._show) {
860
- return;
861
- }
862
- if (show && !this.isOpen) {
863
- this.actionSheet.toggle();
864
- this.renderer.setAttribute(this.actionSheet.element.nativeElement, 'id', this.popupUID);
865
- this.renderer.setAttribute(this.dateInput?.inputElement, attributeNames.ariaControls, this.popupUID);
866
- }
867
- else if (!show && this.isOpen) {
868
- // Need to disable the pointer events to avoid triggering focus on the timelist when acionsheet close down animation starts
869
- this.renderer.setStyle(this.timeSelector.element.nativeElement, 'pointer-events', 'none');
870
- if (this.dateInput) {
871
- this.renderer.removeAttribute(this.dateInput.inputElement, attributeNames.ariaControls);
872
- }
873
- this.actionSheet.toggle();
874
- this.dateInput.focus();
875
- }
876
- this._show = show;
877
- }
878
- togglePopup(show) {
879
- if (show === this.isOpen) {
880
- return;
881
- }
882
- this._show = show;
883
- this.cdr.markForCheck();
884
- if (show) {
885
- const direction = this.localization.rtl ? 'right' : 'left';
886
- const appendToComponent = typeof this.popupSettings.appendTo === 'string' && this.popupSettings.appendTo === 'component';
887
- this.popupRef = this.popupService.open({
888
- anchor: this.wrapper,
889
- anchorAlign: { vertical: 'bottom', horizontal: direction },
890
- animate: this.popupSettings.animate,
891
- appendTo: this.appendTo,
892
- content: this.popupTemplate,
893
- popupAlign: { vertical: 'top', horizontal: direction },
894
- popupClass: this.popupClasses,
895
- positionMode: appendToComponent ? 'fixed' : 'absolute'
896
- });
897
- this.popupRef.popupElement.setAttribute('id', this.popupUID);
898
- this.renderer.setAttribute(this.dateInput?.inputElement, attributeNames.ariaControls, this.popupUID);
899
- this.popupRef.popupAnchorViewportLeave.subscribe(() => this.show = false);
900
- }
901
- else {
902
- this.popupRef.close();
903
- this.popupRef = null;
904
- if (this.dateInput) {
905
- this.renderer.removeAttribute(this.dateInput?.inputElement, attributeNames.ariaControls);
906
- }
907
- }
908
- }
909
- focusInput() {
910
- if (touchEnabled) {
911
- return;
912
- }
913
- this.dateInput.focus();
914
- }
915
- toggleFocus() {
916
- if (!this.isActive) {
917
- return;
918
- }
919
- if (this.show) {
920
- if (!this.timeSelector) {
921
- this.cdr.detectChanges();
922
- }
923
- if (this.isActive) {
924
- this.timeSelector.focus();
925
- }
926
- }
927
- else if (!touchEnabled) {
928
- this.dateInput.focus();
929
- }
930
- else if (!this.dateInput.isActive) {
931
- this.handleBlur();
932
- }
933
- }
934
- verifyValue(value) {
935
- if (!isDevMode()) {
936
- return;
937
- }
938
- if (value && !(value instanceof Date)) {
939
- throw new Error(`The 'value' should be a valid JavaScript Date instance or null. Check ${VALUE_DOC_LINK} for possible resolution.`);
940
- }
941
- }
942
- verifyFormat() {
943
- if (!isDevMode()) {
944
- return;
945
- }
946
- const formatContainsDateParts = this.intl.splitDateFormat(this.format).some(part => !formatRegExp.test(part.type));
947
- if (formatContainsDateParts) {
948
- throw new Error(`Provided format is not supported. Supported specifiers are T|t|H|h|m|s|S|a. See ${INTL_DATE_FORMAT}`);
949
- }
950
- }
951
- bindEvents() {
952
- const element = this.wrapper.nativeElement;
953
- this.domEvents.push(this.renderer.listen(element, 'keydown', this.handleKeydown.bind(this)));
954
- if (isWindowAvailable()) {
955
- this.windowBlurSubscription = fromEvent(window, 'blur').subscribe(this.handleWindowBlur.bind(this));
956
- }
957
- }
958
- handleWindowBlur() {
959
- if (!this.isOpen || this.actionSheet.expanded) {
960
- return;
961
- }
962
- this.show = false;
963
- }
964
- handleFocus() {
965
- if (this.isActive) {
966
- return;
967
- }
968
- this.isActive = true;
969
- if (hasObservers(this.onFocus)) {
970
- this.zone.run(() => {
971
- this.onFocus.emit();
972
- });
973
- }
974
- }
975
- handleBlur(args) {
976
- const currentTarget = args && currentFocusTarget(args); // relatedTarget || activeElement
977
- const target = args && args.target;
978
- const isInsideActionSheet = this.actionSheet && (this.actionSheet.element.nativeElement.contains(target) || this.actionSheet.element.nativeElement.contains(currentTarget));
979
- if (currentTarget && (this.dateInput.containsElement(currentTarget) ||
980
- (this.timeSelector && this.timeSelector.containsElement(currentTarget)) || isInsideActionSheet)) {
981
- return;
982
- }
983
- if (hasObservers(this.onBlur) || (this.show && hasObservers(this.close)) || requiresZoneOnBlur(this.control)) {
984
- this.zone.run(() => {
985
- this.blurComponent();
986
- this.cdr.markForCheck();
987
- });
988
- }
989
- else {
990
- this.blurComponent();
991
- }
992
- this.cdr.detectChanges();
993
- }
994
- blurComponent() {
995
- this.isActive = false; // order is important ¯\_(ツ)_/¯
996
- this.show = false;
997
- this.onControlTouched();
998
- this.onBlur.emit();
999
- }
1000
- handleDateCompletenessChange() {
1001
- this.cdr.markForCheck();
1002
- this.zone.run(() => this.onValidatorChange());
1003
- }
1004
- setComponentClasses() {
1005
- if (this.size) {
1006
- this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));
1007
- this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('button', this.size));
1008
- }
1009
- if (this.rounded) {
1010
- this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));
1011
- }
1012
- if (this.fillMode) {
1013
- this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));
1014
- this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));
1015
- this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);
1016
- }
1017
- }
1018
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimePickerComponent, deps: [{ token: i1.BusViewService }, { token: i0.NgZone }, { token: i2.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i3.PopupService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i4.PickerService }, { token: i5.IntlService }, { token: i6.AdaptiveService }], target: i0.ɵɵFactoryTarget.Component });
1019
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TimePickerComponent, isStandalone: true, selector: "kendo-timepicker", inputs: { focusableId: "focusableId", disabled: "disabled", readonly: "readonly", readOnlyInput: "readOnlyInput", clearButton: "clearButton", format: "format", formatPlaceholder: "formatPlaceholder", placeholder: "placeholder", min: "min", max: "max", incompleteDateValidation: "incompleteDateValidation", autoSwitchParts: "autoSwitchParts", autoSwitchKeys: "autoSwitchKeys", enableMouseWheel: "enableMouseWheel", allowCaretMode: "allowCaretMode", cancelButton: "cancelButton", nowButton: "nowButton", steps: "steps", popupSettings: "popupSettings", tabindex: "tabindex", tabIndex: "tabIndex", adaptiveTitle: "adaptiveTitle", adaptiveSubtitle: "adaptiveSubtitle", rangeValidation: "rangeValidation", adaptiveMode: "adaptiveMode", value: "value", size: "size", rounded: "rounded", fillMode: "fillMode", inputAttributes: "inputAttributes" }, outputs: { valueChange: "valueChange", onFocus: "focus", onBlur: "blur", open: "open", close: "close", escape: "escape" }, host: { properties: { "class.k-readonly": "this.readonly", "class.k-timepicker": "this.wrapperClasses", "class.k-input": "this.wrapperClasses", "class.k-disabled": "this.disabledClass" } }, providers: [
1020
- { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TimePickerComponent), multi: true },
1021
- { provide: NG_VALIDATORS, useExisting: forwardRef(() => TimePickerComponent), multi: true },
1022
- { provide: KendoInput, useExisting: forwardRef(() => TimePickerComponent) },
1023
- { provide: MultiTabStop, useExisting: forwardRef(() => TimePickerComponent) },
1024
- LocalizationService,
1025
- BusViewService,
1026
- {
1027
- provide: L10N_PREFIX,
1028
- useValue: 'kendo.timepicker'
1029
- },
1030
- PickerService
1031
- ], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true }, { propertyName: "toggleButton", first: true, predicate: ["toggleButton"], descendants: true, static: true }, { propertyName: "actionSheet", first: true, predicate: ["actionSheet"], descendants: true }], exportAs: ["kendo-timepicker"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
1032
- <ng-container kendoTimePickerLocalizedMessages
1033
- i18n-accept="kendo.timepicker.accept|The Accept button text in the timepicker component"
1034
- accept="Set"
1035
-
1036
- i18n-acceptLabel="kendo.timepicker.acceptLabel|The label for the Accept button in the timepicker component"
1037
- acceptLabel="Set time"
1038
-
1039
- i18n-cancel="kendo.timepicker.cancel|The Cancel button text in the timepicker component"
1040
- cancel="Cancel"
1041
-
1042
- i18n-cancelLabel="kendo.timepicker.cancelLabel|The label for the Cancel button in the timepicker component"
1043
- cancelLabel="Cancel changes"
1044
-
1045
- i18n-now="kendo.timepicker.now|The Now button text in the timepicker component"
1046
- now="Now"
1047
-
1048
- i18n-nowLabel="kendo.timepicker.nowLabel|The label for the Now button in the timepicker component"
1049
- nowLabel="Select now"
1050
-
1051
- i18n-toggle="kendo.timepicker.toggle|The label for the toggle button in the timepicker component"
1052
- toggle="Toggle time list"
1053
-
1054
- i18n-hour="kendo.timepicker.hour|The label for the hour part in the timepicker component"
1055
- hour="Hour"
1056
-
1057
- i18n-minute="kendo.timepicker.minute|The label for the minute part in the timepicker component"
1058
- minute="Minute"
1059
-
1060
- i18n-second="kendo.timepicker.second|The label for the second part in the timepicker component"
1061
- second="Second"
1062
-
1063
- i18n-millisecond="kendo.timepicker.millisecond|The label for the millisecond part in the timepicker component"
1064
- millisecond="Millisecond"
1065
-
1066
- i18n-dayperiod="kendo.timepicker.dayperiod|The label for the dayperiod part in the timepicker component"
1067
- dayperiod="Dayperiod"
1068
-
1069
- i18n-clearTitle="kendo.timepicker.clearTitle|The title of the clear button"
1070
- clearTitle="clear"
1071
-
1072
- i18n-adaptiveCloseButtonTitle="kendo.timepicker.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
1073
- adaptiveCloseButtonTitle="Close"
1074
- >
1075
- </ng-container>
1076
- <kendo-dateinput
1077
- #input
1078
- pickerType="timepicker"
1079
- hasPopup="dialog"
1080
- [isPopupOpen]="show"
1081
- [disabled]="disabled"
1082
- [clearButton]="clearButton"
1083
- [readonly]="readonly || readOnlyInput"
1084
- [role]="'combobox'"
1085
- [ariaReadOnly]="readonly"
1086
- [format]="format"
1087
- [formatPlaceholder]="formatPlaceholder"
1088
- [placeholder]="placeholder"
1089
- [focusableId]="focusableId"
1090
- [min]="normalizeTime(min)"
1091
- [max]="normalizeTime(max)"
1092
- [incompleteDateValidation]="incompleteDateValidation"
1093
- [autoSwitchParts]="autoSwitchParts"
1094
- [autoSwitchKeys]="autoSwitchKeys"
1095
- [enableMouseWheel]="enableMouseWheel"
1096
- [allowCaretMode]="allowCaretMode"
1097
- fillMode="none"
1098
- rounded="none"
1099
- size="none"
1100
- [steps]="steps"
1101
- [tabindex]="!show ? tabindex : -1"
1102
- [isRequired]="isControlRequired"
1103
- [title]="adaptiveTitle"
1104
- [inputAttributes]="inputAttributes"
1105
- [value]="value"
1106
- (valueChange)="handleInputChange($event)"
1107
- (click)="handleDateInputClick()"
1108
- >
1109
- <kendo-dateinput-messages
1110
- [clearTitle]="localization.get('clearTitle')"
1111
- >
1112
- </kendo-dateinput-messages>
1113
- </kendo-dateinput>
1114
- <button
1115
- #toggleButton
1116
- type="button"
1117
- tabindex="-1"
1118
- class="k-input-button k-button k-icon-button"
1119
- [attr.title]="localization.get('toggle')"
1120
- [attr.aria-label]="localization.get('toggle')"
1121
- [attr.disabled]="disabled ? '' : null"
1122
- [kendoEventsOutsideAngular]="{
1123
- click: handleIconClick,
1124
- mousedown: handleMousedown
1125
- }"
1126
- [scope]="this"
1127
- >
1128
- <kendo-icon-wrapper
1129
- name="clock"
1130
- [svgIcon]="clockIcon"
1131
- innerCssClass="k-button-icon"
1132
- >
1133
- </kendo-icon-wrapper>
1134
- </button>
1135
- <ng-template #popupTemplate>
1136
- <ng-container *ngTemplateOutlet="timeSelectorTemplate"></ng-container>
1137
- </ng-template>
1138
- <ng-container #container></ng-container>
1139
-
1140
- @if (isAdaptiveModeEnabled) {
1141
- <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
1142
- }
1143
- <kendo-actionsheet
1144
- #actionSheet
1145
- (overlayClick)="show=false"
1146
- (collapse)="handleActionSheetCollapse()"
1147
- [titleId]="focusableId"
1148
- [cssClass]="{
1149
- 'k-adaptive-actionsheet': true,
1150
- 'k-actionsheet-fullscreen': windowSize === 'small',
1151
- 'k-actionsheet-bottom': windowSize === 'medium'
1152
- }"
1153
- [cssStyle]="{
1154
- height: windowSize === 'small' ? '100vh' : '60vh'
1155
- }"
1156
- >
1157
- <ng-template kendoActionSheetTemplate>
1158
- <div class="k-actionsheet-titlebar">
1159
- <div class="k-actionsheet-titlebar-group">
1160
- <div class="k-actionsheet-title">
1161
- @if (adaptiveTitle) {
1162
- <div class="k-text-center">{{ adaptiveTitle }}</div>
1163
- }
1164
- @if (adaptiveSubtitle) {
1165
- <div class="k-actionsheet-subtitle k-text-center">{{ adaptiveSubtitle }}</div>
1166
- }
1167
- </div>
1168
- <div class="k-actionsheet-actions">
1169
- <button
1170
- kendoButton
1171
- type="button"
1172
- icon="check"
1173
- [attr.title]="localization.get('adaptiveCloseButtonTitle')"
1174
- [svgIcon]="checkIcon"
1175
- fillMode="flat"
1176
- size="large"
1177
- [tabIndex]="-1"
1178
- (click)="show = false">
1179
- </button>
1180
- </div>
1181
- </div>
1182
- </div>
1183
- <div class="k-actionsheet-content">
1184
- <ng-container *ngTemplateOutlet="timeSelectorTemplate"></ng-container>
1185
- </div>
1186
- <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
1187
- <button kendoButton
1188
- type="button"
1189
- (click)="handleReject()"
1190
- size="large"
1191
- class="k-time-cancel"
1192
- [attr.title]="localization.get('cancelLabel')"
1193
- [attr.aria-label]="localization.get('cancelLabel')"
1194
- >
1195
- {{localization.get('cancel')}}
1196
- </button>
1197
-
1198
- <button kendoButton
1199
- type="button"
1200
- (click)="handleActionSheetAccept()"
1201
- size="large"
1202
- class="k-time-accept"
1203
- themeColor="primary"
1204
- [attr.title]="localization.get('acceptLabel')"
1205
- [attr.aria-label]="localization.get('acceptLabel')"
1206
- >
1207
- {{localization.get('accept')}}
1208
- </button>
1209
- </div>
1210
- </ng-template>
1211
- </kendo-actionsheet>
1212
-
1213
- <ng-template #timeSelectorTemplate>
1214
- <kendo-timeselector
1215
- #timeSelector
1216
- [class.k-timeselector-lg]="isAdaptive"
1217
- [cancelButton]="cancelButton && !this.isAdaptive"
1218
- [setButton]="!isAdaptive"
1219
- [nowButton]="nowButton"
1220
- [format]="format"
1221
- [min]="min"
1222
- [max]="max"
1223
- [steps]="steps"
1224
- [value]="value"
1225
- [isAdaptiveEnabled]="isAdaptiveModeEnabled"
1226
- [kendoEventsOutsideAngular]="{
1227
- keydown: handleKeydown,
1228
- mousedown: handleMousedown
1229
- }"
1230
- [scope]="this"
1231
- (valueChange)="handleChange($event)"
1232
- (valueReject)="handleReject()"
1233
- (tabOutLastPart)="onTabOutLastPart()"
1234
- (tabOutFirstPart)="onTabOutFirstPart()"
1235
- (tabOutNow)="onTabOutNow()"
1236
- >
1237
- <kendo-timeselector-messages
1238
- [acceptLabel]="localization.get('acceptLabel')"
1239
- [accept]="localization.get('accept')"
1240
- [cancelLabel]="localization.get('cancelLabel')"
1241
- [cancel]="localization.get('cancel')"
1242
- [nowLabel]="localization.get('nowLabel')"
1243
- [now]="localization.get('now')"
1244
- [hour]="localization.get('hour')"
1245
- [minute]="localization.get('minute')"
1246
- [second]="localization.get('second')"
1247
- [millisecond]="localization.get('millisecond')"
1248
- [dayperiod]="localization.get('dayperiod')"
1249
- >
1250
- </kendo-timeselector-messages>
1251
- </kendo-timeselector>
1252
- </ng-template>
1253
- `, isInline: true, dependencies: [{ kind: "directive", type: TimePickerLocalizedMessagesDirective, selector: "[kendoTimePickerLocalizedMessages]" }, { kind: "component", type: DateInputComponent, selector: "kendo-dateinput", inputs: ["focusableId", "pickerType", "clearButton", "disabled", "readonly", "title", "tabindex", "role", "ariaReadOnly", "tabIndex", "isRequired", "format", "formatPlaceholder", "placeholder", "steps", "max", "min", "rangeValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "allowCaretMode", "autoFill", "incompleteDateValidation", "twoDigitYearMax", "enableMouseWheel", "value", "spinners", "isPopupOpen", "hasPopup", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "valueUpdate", "focus", "blur"], exportAs: ["kendo-dateinput"] }, { kind: "component", type: DateInputCustomMessagesComponent, selector: "kendo-dateinput-messages" }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["actions", "actionsLayout", "overlayClickClose", "title", "subtitle", "items", "cssClass", "cssStyle", "animation", "expanded", "titleId", "initialFocus"], outputs: ["expandedChange", "action", "expand", "collapse", "itemClick", "overlayClick"], exportAs: ["kendoActionSheet"] }, { kind: "directive", type: ActionSheetTemplateDirective, selector: "[kendoActionSheetTemplate]" }, { 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"] }, { kind: "component", type: TimeSelectorComponent, selector: "kendo-timeselector", inputs: ["format", "min", "max", "cancelButton", "setButton", "nowButton", "disabled", "isAdaptiveEnabled", "isDateTimePicker", "steps", "value"], outputs: ["valueChange", "valueReject", "tabOutLastPart", "tabOutFirstPart", "tabOutNow"], exportAs: ["kendo-timeselector"] }, { kind: "component", type: TimeSelectorCustomMessagesComponent, selector: "kendo-timeselector-messages" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1254
- }
1255
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimePickerComponent, decorators: [{
1256
- type: Component,
1257
- args: [{
1258
- changeDetection: ChangeDetectionStrategy.OnPush,
1259
- exportAs: 'kendo-timepicker',
1260
- providers: [
1261
- { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TimePickerComponent), multi: true },
1262
- { provide: NG_VALIDATORS, useExisting: forwardRef(() => TimePickerComponent), multi: true },
1263
- { provide: KendoInput, useExisting: forwardRef(() => TimePickerComponent) },
1264
- { provide: MultiTabStop, useExisting: forwardRef(() => TimePickerComponent) },
1265
- LocalizationService,
1266
- BusViewService,
1267
- {
1268
- provide: L10N_PREFIX,
1269
- useValue: 'kendo.timepicker'
1270
- },
1271
- PickerService
1272
- ],
1273
- selector: 'kendo-timepicker',
1274
- template: `
1275
- <ng-container kendoTimePickerLocalizedMessages
1276
- i18n-accept="kendo.timepicker.accept|The Accept button text in the timepicker component"
1277
- accept="Set"
1278
-
1279
- i18n-acceptLabel="kendo.timepicker.acceptLabel|The label for the Accept button in the timepicker component"
1280
- acceptLabel="Set time"
1281
-
1282
- i18n-cancel="kendo.timepicker.cancel|The Cancel button text in the timepicker component"
1283
- cancel="Cancel"
1284
-
1285
- i18n-cancelLabel="kendo.timepicker.cancelLabel|The label for the Cancel button in the timepicker component"
1286
- cancelLabel="Cancel changes"
1287
-
1288
- i18n-now="kendo.timepicker.now|The Now button text in the timepicker component"
1289
- now="Now"
1290
-
1291
- i18n-nowLabel="kendo.timepicker.nowLabel|The label for the Now button in the timepicker component"
1292
- nowLabel="Select now"
1293
-
1294
- i18n-toggle="kendo.timepicker.toggle|The label for the toggle button in the timepicker component"
1295
- toggle="Toggle time list"
1296
-
1297
- i18n-hour="kendo.timepicker.hour|The label for the hour part in the timepicker component"
1298
- hour="Hour"
1299
-
1300
- i18n-minute="kendo.timepicker.minute|The label for the minute part in the timepicker component"
1301
- minute="Minute"
1302
-
1303
- i18n-second="kendo.timepicker.second|The label for the second part in the timepicker component"
1304
- second="Second"
1305
-
1306
- i18n-millisecond="kendo.timepicker.millisecond|The label for the millisecond part in the timepicker component"
1307
- millisecond="Millisecond"
1308
-
1309
- i18n-dayperiod="kendo.timepicker.dayperiod|The label for the dayperiod part in the timepicker component"
1310
- dayperiod="Dayperiod"
1311
-
1312
- i18n-clearTitle="kendo.timepicker.clearTitle|The title of the clear button"
1313
- clearTitle="clear"
1314
-
1315
- i18n-adaptiveCloseButtonTitle="kendo.timepicker.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
1316
- adaptiveCloseButtonTitle="Close"
1317
- >
1318
- </ng-container>
1319
- <kendo-dateinput
1320
- #input
1321
- pickerType="timepicker"
1322
- hasPopup="dialog"
1323
- [isPopupOpen]="show"
1324
- [disabled]="disabled"
1325
- [clearButton]="clearButton"
1326
- [readonly]="readonly || readOnlyInput"
1327
- [role]="'combobox'"
1328
- [ariaReadOnly]="readonly"
1329
- [format]="format"
1330
- [formatPlaceholder]="formatPlaceholder"
1331
- [placeholder]="placeholder"
1332
- [focusableId]="focusableId"
1333
- [min]="normalizeTime(min)"
1334
- [max]="normalizeTime(max)"
1335
- [incompleteDateValidation]="incompleteDateValidation"
1336
- [autoSwitchParts]="autoSwitchParts"
1337
- [autoSwitchKeys]="autoSwitchKeys"
1338
- [enableMouseWheel]="enableMouseWheel"
1339
- [allowCaretMode]="allowCaretMode"
1340
- fillMode="none"
1341
- rounded="none"
1342
- size="none"
1343
- [steps]="steps"
1344
- [tabindex]="!show ? tabindex : -1"
1345
- [isRequired]="isControlRequired"
1346
- [title]="adaptiveTitle"
1347
- [inputAttributes]="inputAttributes"
1348
- [value]="value"
1349
- (valueChange)="handleInputChange($event)"
1350
- (click)="handleDateInputClick()"
1351
- >
1352
- <kendo-dateinput-messages
1353
- [clearTitle]="localization.get('clearTitle')"
1354
- >
1355
- </kendo-dateinput-messages>
1356
- </kendo-dateinput>
1357
- <button
1358
- #toggleButton
1359
- type="button"
1360
- tabindex="-1"
1361
- class="k-input-button k-button k-icon-button"
1362
- [attr.title]="localization.get('toggle')"
1363
- [attr.aria-label]="localization.get('toggle')"
1364
- [attr.disabled]="disabled ? '' : null"
1365
- [kendoEventsOutsideAngular]="{
1366
- click: handleIconClick,
1367
- mousedown: handleMousedown
1368
- }"
1369
- [scope]="this"
1370
- >
1371
- <kendo-icon-wrapper
1372
- name="clock"
1373
- [svgIcon]="clockIcon"
1374
- innerCssClass="k-button-icon"
1375
- >
1376
- </kendo-icon-wrapper>
1377
- </button>
1378
- <ng-template #popupTemplate>
1379
- <ng-container *ngTemplateOutlet="timeSelectorTemplate"></ng-container>
1380
- </ng-template>
1381
- <ng-container #container></ng-container>
1382
-
1383
- @if (isAdaptiveModeEnabled) {
1384
- <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
1385
- }
1386
- <kendo-actionsheet
1387
- #actionSheet
1388
- (overlayClick)="show=false"
1389
- (collapse)="handleActionSheetCollapse()"
1390
- [titleId]="focusableId"
1391
- [cssClass]="{
1392
- 'k-adaptive-actionsheet': true,
1393
- 'k-actionsheet-fullscreen': windowSize === 'small',
1394
- 'k-actionsheet-bottom': windowSize === 'medium'
1395
- }"
1396
- [cssStyle]="{
1397
- height: windowSize === 'small' ? '100vh' : '60vh'
1398
- }"
1399
- >
1400
- <ng-template kendoActionSheetTemplate>
1401
- <div class="k-actionsheet-titlebar">
1402
- <div class="k-actionsheet-titlebar-group">
1403
- <div class="k-actionsheet-title">
1404
- @if (adaptiveTitle) {
1405
- <div class="k-text-center">{{ adaptiveTitle }}</div>
1406
- }
1407
- @if (adaptiveSubtitle) {
1408
- <div class="k-actionsheet-subtitle k-text-center">{{ adaptiveSubtitle }}</div>
1409
- }
1410
- </div>
1411
- <div class="k-actionsheet-actions">
1412
- <button
1413
- kendoButton
1414
- type="button"
1415
- icon="check"
1416
- [attr.title]="localization.get('adaptiveCloseButtonTitle')"
1417
- [svgIcon]="checkIcon"
1418
- fillMode="flat"
1419
- size="large"
1420
- [tabIndex]="-1"
1421
- (click)="show = false">
1422
- </button>
1423
- </div>
1424
- </div>
1425
- </div>
1426
- <div class="k-actionsheet-content">
1427
- <ng-container *ngTemplateOutlet="timeSelectorTemplate"></ng-container>
1428
- </div>
1429
- <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
1430
- <button kendoButton
1431
- type="button"
1432
- (click)="handleReject()"
1433
- size="large"
1434
- class="k-time-cancel"
1435
- [attr.title]="localization.get('cancelLabel')"
1436
- [attr.aria-label]="localization.get('cancelLabel')"
1437
- >
1438
- {{localization.get('cancel')}}
1439
- </button>
1440
-
1441
- <button kendoButton
1442
- type="button"
1443
- (click)="handleActionSheetAccept()"
1444
- size="large"
1445
- class="k-time-accept"
1446
- themeColor="primary"
1447
- [attr.title]="localization.get('acceptLabel')"
1448
- [attr.aria-label]="localization.get('acceptLabel')"
1449
- >
1450
- {{localization.get('accept')}}
1451
- </button>
1452
- </div>
1453
- </ng-template>
1454
- </kendo-actionsheet>
1455
-
1456
- <ng-template #timeSelectorTemplate>
1457
- <kendo-timeselector
1458
- #timeSelector
1459
- [class.k-timeselector-lg]="isAdaptive"
1460
- [cancelButton]="cancelButton && !this.isAdaptive"
1461
- [setButton]="!isAdaptive"
1462
- [nowButton]="nowButton"
1463
- [format]="format"
1464
- [min]="min"
1465
- [max]="max"
1466
- [steps]="steps"
1467
- [value]="value"
1468
- [isAdaptiveEnabled]="isAdaptiveModeEnabled"
1469
- [kendoEventsOutsideAngular]="{
1470
- keydown: handleKeydown,
1471
- mousedown: handleMousedown
1472
- }"
1473
- [scope]="this"
1474
- (valueChange)="handleChange($event)"
1475
- (valueReject)="handleReject()"
1476
- (tabOutLastPart)="onTabOutLastPart()"
1477
- (tabOutFirstPart)="onTabOutFirstPart()"
1478
- (tabOutNow)="onTabOutNow()"
1479
- >
1480
- <kendo-timeselector-messages
1481
- [acceptLabel]="localization.get('acceptLabel')"
1482
- [accept]="localization.get('accept')"
1483
- [cancelLabel]="localization.get('cancelLabel')"
1484
- [cancel]="localization.get('cancel')"
1485
- [nowLabel]="localization.get('nowLabel')"
1486
- [now]="localization.get('now')"
1487
- [hour]="localization.get('hour')"
1488
- [minute]="localization.get('minute')"
1489
- [second]="localization.get('second')"
1490
- [millisecond]="localization.get('millisecond')"
1491
- [dayperiod]="localization.get('dayperiod')"
1492
- >
1493
- </kendo-timeselector-messages>
1494
- </kendo-timeselector>
1495
- </ng-template>
1496
- `,
1497
- standalone: true,
1498
- imports: [TimePickerLocalizedMessagesDirective, DateInputComponent, DateInputCustomMessagesComponent, EventsOutsideAngularDirective, IconWrapperComponent, NgTemplateOutlet, ResizeSensorComponent, ActionSheetComponent, ActionSheetTemplateDirective, ButtonComponent, TimeSelectorComponent, TimeSelectorCustomMessagesComponent]
1499
- }]
1500
- }], ctorParameters: () => [{ type: i1.BusViewService }, { type: i0.NgZone }, { type: i2.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i3.PopupService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i4.PickerService }, { type: i5.IntlService }, { type: i6.AdaptiveService }], propDecorators: { container: [{
1501
- type: ViewChild,
1502
- args: ['container', { read: ViewContainerRef, static: false }]
1503
- }], popupTemplate: [{
1504
- type: ViewChild,
1505
- args: ['popupTemplate', { static: false }]
1506
- }], toggleButton: [{
1507
- type: ViewChild,
1508
- args: ['toggleButton', { static: true }]
1509
- }], actionSheet: [{
1510
- type: ViewChild,
1511
- args: ['actionSheet']
1512
- }], focusableId: [{
1513
- type: Input
1514
- }], disabled: [{
1515
- type: Input
1516
- }], readonly: [{
1517
- type: Input
1518
- }, {
1519
- type: HostBinding,
1520
- args: ['class.k-readonly']
1521
- }], readOnlyInput: [{
1522
- type: Input
1523
- }], clearButton: [{
1524
- type: Input
1525
- }], format: [{
1526
- type: Input
1527
- }], formatPlaceholder: [{
1528
- type: Input
1529
- }], placeholder: [{
1530
- type: Input
1531
- }], min: [{
1532
- type: Input
1533
- }], max: [{
1534
- type: Input
1535
- }], incompleteDateValidation: [{
1536
- type: Input
1537
- }], autoSwitchParts: [{
1538
- type: Input
1539
- }], autoSwitchKeys: [{
1540
- type: Input
1541
- }], enableMouseWheel: [{
1542
- type: Input
1543
- }], allowCaretMode: [{
1544
- type: Input
1545
- }], cancelButton: [{
1546
- type: Input
1547
- }], nowButton: [{
1548
- type: Input
1549
- }], steps: [{
1550
- type: Input
1551
- }], popupSettings: [{
1552
- type: Input
1553
- }], tabindex: [{
1554
- type: Input
1555
- }], tabIndex: [{
1556
- type: Input
1557
- }], adaptiveTitle: [{
1558
- type: Input
1559
- }], adaptiveSubtitle: [{
1560
- type: Input
1561
- }], rangeValidation: [{
1562
- type: Input
1563
- }], adaptiveMode: [{
1564
- type: Input
1565
- }], value: [{
1566
- type: Input
1567
- }], size: [{
1568
- type: Input
1569
- }], rounded: [{
1570
- type: Input
1571
- }], fillMode: [{
1572
- type: Input
1573
- }], inputAttributes: [{
1574
- type: Input
1575
- }], valueChange: [{
1576
- type: Output
1577
- }], onFocus: [{
1578
- type: Output,
1579
- args: ['focus']
1580
- }], onBlur: [{
1581
- type: Output,
1582
- args: ['blur']
1583
- }], open: [{
1584
- type: Output
1585
- }], close: [{
1586
- type: Output
1587
- }], escape: [{
1588
- type: Output
1589
- }], wrapperClasses: [{
1590
- type: HostBinding,
1591
- args: ['class.k-timepicker']
1592
- }, {
1593
- type: HostBinding,
1594
- args: ['class.k-input']
1595
- }], disabledClass: [{
1596
- type: HostBinding,
1597
- args: ['class.k-disabled']
1598
- }] } });