@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.
- package/calendar/localization/calendar-messages.d.ts +1 -1
- package/calendar/localization/multiview-calendar-messages.d.ts +1 -1
- package/dateinput/localization/messages.d.ts +1 -1
- package/datepicker/localization/messages.d.ts +1 -1
- package/daterange/date-range-input.d.ts +1 -1
- package/daterange/localization/messages.d.ts +1 -1
- package/datetimepicker/localization/messages.d.ts +1 -1
- package/fesm2022/progress-kendo-angular-dateinputs.mjs +262 -262
- package/package.json +15 -23
- package/timepicker/localization/messages.d.ts +1 -1
- package/esm2022/calendar/calendar.component.mjs +0 -1711
- package/esm2022/calendar/calendar.module.mjs +0 -91
- package/esm2022/calendar/calendars.module.mjs +0 -87
- package/esm2022/calendar/footer.component.mjs +0 -77
- package/esm2022/calendar/for.directive.mjs +0 -116
- package/esm2022/calendar/header.component.mjs +0 -367
- package/esm2022/calendar/horizontal-view-list.component.mjs +0 -580
- package/esm2022/calendar/localization/calendar-custom-messages.component.mjs +0 -51
- package/esm2022/calendar/localization/calendar-localized-messages.directive.mjs +0 -39
- package/esm2022/calendar/localization/calendar-messages.mjs +0 -45
- package/esm2022/calendar/localization/multiview-calendar-custom-messages.component.mjs +0 -51
- package/esm2022/calendar/localization/multiview-calendar-localized-messages.directive.mjs +0 -39
- package/esm2022/calendar/localization/multiview-calendar-messages.mjs +0 -45
- package/esm2022/calendar/models/cell-context.interface.mjs +0 -5
- package/esm2022/calendar/models/navigation-action.enum.mjs +0 -20
- package/esm2022/calendar/models/orientation.mjs +0 -5
- package/esm2022/calendar/models/row-length-options.interface.mjs +0 -5
- package/esm2022/calendar/models/scrollable.interface.mjs +0 -5
- package/esm2022/calendar/models/selection-range-end.type.mjs +0 -5
- package/esm2022/calendar/models/selection-range.interface.mjs +0 -10
- package/esm2022/calendar/models/selection.mjs +0 -50
- package/esm2022/calendar/models/type.mjs +0 -5
- package/esm2022/calendar/models/view-service.interface.mjs +0 -5
- package/esm2022/calendar/models/view.enum.mjs +0 -16
- package/esm2022/calendar/models/view.type.mjs +0 -5
- package/esm2022/calendar/multiview-calendar.component.mjs +0 -1564
- package/esm2022/calendar/multiview-calendar.module.mjs +0 -89
- package/esm2022/calendar/navigation.component.mjs +0 -230
- package/esm2022/calendar/services/bus-view.service.mjs +0 -83
- package/esm2022/calendar/services/century-view.service.mjs +0 -219
- package/esm2022/calendar/services/decade-view.service.mjs +0 -217
- package/esm2022/calendar/services/disabled-dates.service.mjs +0 -66
- package/esm2022/calendar/services/dom.service.mjs +0 -203
- package/esm2022/calendar/services/month-view.service.mjs +0 -223
- package/esm2022/calendar/services/navigation.service.mjs +0 -60
- package/esm2022/calendar/services/scroll-sync.service.mjs +0 -89
- package/esm2022/calendar/services/selection.service.mjs +0 -62
- package/esm2022/calendar/services/weeknames.service.mjs +0 -33
- package/esm2022/calendar/services/year-view.service.mjs +0 -204
- package/esm2022/calendar/templates/cell-template.directive.mjs +0 -45
- package/esm2022/calendar/templates/century-cell-template.directive.mjs +0 -43
- package/esm2022/calendar/templates/decade-cell-template.directive.mjs +0 -43
- package/esm2022/calendar/templates/footer-template.directive.mjs +0 -44
- package/esm2022/calendar/templates/header-template.directive.mjs +0 -47
- package/esm2022/calendar/templates/header-title-template.directive.mjs +0 -43
- package/esm2022/calendar/templates/month-cell-template.directive.mjs +0 -43
- package/esm2022/calendar/templates/navigation-item-template.directive.mjs +0 -43
- package/esm2022/calendar/templates/weeknumber-cell-template.directive.mjs +0 -43
- package/esm2022/calendar/templates/year-cell-template.directive.mjs +0 -43
- package/esm2022/calendar/view-list.component.mjs +0 -497
- package/esm2022/calendar/view.component.mjs +0 -432
- package/esm2022/common/dom-queries.mjs +0 -24
- package/esm2022/common/models/fillmode.mjs +0 -5
- package/esm2022/common/models/rounded.mjs +0 -5
- package/esm2022/common/models/size.mjs +0 -5
- package/esm2022/common/models/week-days-format.mjs +0 -5
- package/esm2022/common/picker.service.mjs +0 -17
- package/esm2022/common/utils.mjs +0 -70
- package/esm2022/dateinput/arrow.enum.mjs +0 -13
- package/esm2022/dateinput/dateinput.component.mjs +0 -1196
- package/esm2022/dateinput/dateinput.module.mjs +0 -45
- package/esm2022/dateinput/localization/dateinput-custom-messages.component.mjs +0 -60
- package/esm2022/dateinput/localization/dateinput-localized-messages.directive.mjs +0 -39
- package/esm2022/dateinput/localization/messages.mjs +0 -39
- package/esm2022/dateinput/models/format-placeholder.model.mjs +0 -5
- package/esm2022/dateinput/models/format-settings.model.mjs +0 -5
- package/esm2022/dateinput/models/incremental-steps.model.mjs +0 -5
- package/esm2022/dateinputs.module.mjs +0 -136
- package/esm2022/datepicker/datepicker.component.mjs +0 -1758
- package/esm2022/datepicker/datepicker.module.mjs +0 -83
- package/esm2022/datepicker/localization/datepicker-custom-messages.component.mjs +0 -53
- package/esm2022/datepicker/localization/datepicker-localized-messages.directive.mjs +0 -39
- package/esm2022/datepicker/localization/messages.mjs +0 -63
- package/esm2022/daterange/auto-correct-on.type.mjs +0 -5
- package/esm2022/daterange/date-range-end-input.directive.mjs +0 -105
- package/esm2022/daterange/date-range-input.mjs +0 -138
- package/esm2022/daterange/date-range-popup-template.directive.mjs +0 -36
- package/esm2022/daterange/date-range-popup.component.mjs +0 -1051
- package/esm2022/daterange/date-range-selection.directive.mjs +0 -223
- package/esm2022/daterange/date-range-start-input.directive.mjs +0 -109
- package/esm2022/daterange/date-range.component.mjs +0 -116
- package/esm2022/daterange/date-range.module.mjs +0 -103
- package/esm2022/daterange/date-range.service.mjs +0 -225
- package/esm2022/daterange/localization/daterange-popup-custom-messages.component.mjs +0 -43
- package/esm2022/daterange/localization/daterange-popup-localized-messages.directive.mjs +0 -39
- package/esm2022/daterange/localization/messages.mjs +0 -51
- package/esm2022/datetimepicker/datetimepicker.component.mjs +0 -2505
- package/esm2022/datetimepicker/datetimepicker.module.mjs +0 -106
- package/esm2022/datetimepicker/localization/datetimepicker-custom-messages.component.mjs +0 -52
- package/esm2022/datetimepicker/localization/localized-messages.directive.mjs +0 -39
- package/esm2022/datetimepicker/localization/messages.mjs +0 -153
- package/esm2022/datetimepicker/models/active-tab.type.mjs +0 -5
- package/esm2022/defaults.mjs +0 -24
- package/esm2022/directives.mjs +0 -146
- package/esm2022/index.mjs +0 -78
- package/esm2022/package-metadata.mjs +0 -16
- package/esm2022/popup-settings.model.mjs +0 -5
- package/esm2022/preventable-event.mjs +0 -27
- package/esm2022/progress-kendo-angular-dateinputs.mjs +0 -8
- package/esm2022/timepicker/localization/messages.mjs +0 -105
- package/esm2022/timepicker/localization/timepicker-custom-messages.component.mjs +0 -54
- package/esm2022/timepicker/localization/timepicker-localized-messages.directive.mjs +0 -39
- package/esm2022/timepicker/localization/timeselector-custom-messages.component.mjs +0 -45
- package/esm2022/timepicker/localization/timeselector-localized-messages.directive.mjs +0 -39
- package/esm2022/timepicker/models/incremental-steps.model.mjs +0 -5
- package/esm2022/timepicker/models/list-item.interface.mjs +0 -5
- package/esm2022/timepicker/models/list-service-settings.mjs +0 -5
- package/esm2022/timepicker/models/list-service.interface.mjs +0 -5
- package/esm2022/timepicker/models/time-part.default.mjs +0 -14
- package/esm2022/timepicker/services/dayperiod.service.mjs +0 -131
- package/esm2022/timepicker/services/dom.service.mjs +0 -126
- package/esm2022/timepicker/services/hours.service.mjs +0 -130
- package/esm2022/timepicker/services/milliseconds.service.mjs +0 -131
- package/esm2022/timepicker/services/minutes.service.mjs +0 -128
- package/esm2022/timepicker/services/seconds.service.mjs +0 -128
- package/esm2022/timepicker/timelist.component.mjs +0 -388
- package/esm2022/timepicker/timepicker.component.mjs +0 -1598
- package/esm2022/timepicker/timepicker.module.mjs +0 -71
- package/esm2022/timepicker/timeselector.component.mjs +0 -728
- package/esm2022/timepicker/util.mjs +0 -70
- package/esm2022/util.mjs +0 -406
- package/esm2022/validators/disabled-date.validator.mjs +0 -18
- package/esm2022/validators/disabled-dates-range.validator.mjs +0 -26
- package/esm2022/validators/incomplete-date.validator.mjs +0 -18
- package/esm2022/validators/max.validator.mjs +0 -21
- package/esm2022/validators/min.validator.mjs +0 -21
- package/esm2022/validators/time-range.validator.mjs +0 -23
- package/esm2022/virtualization/models/scrollable.interface.mjs +0 -5
- package/esm2022/virtualization/services/row-height.service.mjs +0 -73
- package/esm2022/virtualization/services/scroller.service.mjs +0 -109
- 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
|
-
}] } });
|