@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,1051 +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, ContentChild, ContentChildren, ChangeDetectorRef, ElementRef, EventEmitter, TemplateRef, NgZone, Input, Output, ViewChild, ViewChildren, ViewContainerRef, Inject, QueryList, Optional, Renderer2 } from '@angular/core';
|
|
6
|
-
import { L10N_PREFIX, LocalizationService, RTL } from '@progress/kendo-angular-l10n';
|
|
7
|
-
import { PopupService } from '@progress/kendo-angular-popup';
|
|
8
|
-
import { DateRangePopupTemplateDirective } from './date-range-popup-template.directive';
|
|
9
|
-
import { DateRangeService } from './date-range.service';
|
|
10
|
-
import { MultiViewCalendarComponent } from '../calendar/multiview-calendar.component';
|
|
11
|
-
import { PreventableEvent } from '../preventable-event';
|
|
12
|
-
import { isDocumentAvailable, guid, Keys, hasObservers, ResizeSensorComponent, normalizeKeys } from '@progress/kendo-angular-common';
|
|
13
|
-
import { AdaptiveService } from '@progress/kendo-angular-utils';
|
|
14
|
-
import { Subscription, fromEvent, merge } from 'rxjs';
|
|
15
|
-
import { filter, map } from 'rxjs/operators';
|
|
16
|
-
import { isWindowAvailable } from '../util';
|
|
17
|
-
import { isPresent } from '../common/utils';
|
|
18
|
-
import { checkIcon } from '@progress/kendo-svg-icons';
|
|
19
|
-
import { DateRangeSelectionDirective } from './date-range-selection.directive';
|
|
20
|
-
import { ActionSheetComponent, ActionSheetTemplateDirective } from '@progress/kendo-angular-navigation';
|
|
21
|
-
import { ButtonComponent } from '@progress/kendo-angular-buttons';
|
|
22
|
-
import { DateRangePopupLocalizedMessagesDirective } from './localization/daterange-popup-localized-messages.directive';
|
|
23
|
-
import { CalendarViewEnum } from '../calendar/models/view.enum';
|
|
24
|
-
import * as i0 from "@angular/core";
|
|
25
|
-
import * as i1 from "@progress/kendo-angular-popup";
|
|
26
|
-
import * as i2 from "./date-range.service";
|
|
27
|
-
import * as i3 from "@progress/kendo-angular-l10n";
|
|
28
|
-
import * as i4 from "@progress/kendo-angular-utils";
|
|
29
|
-
/**
|
|
30
|
-
* Represents the Kendo UI DateRangePopup component for Angular.
|
|
31
|
-
*
|
|
32
|
-
* @example
|
|
33
|
-
* ```ts
|
|
34
|
-
* import { DateInputsModule, DateRangeService } from '@progress/kendo-angular-dateinputs';
|
|
35
|
-
*
|
|
36
|
-
* _@Component({
|
|
37
|
-
* providers: [DateRangeService],
|
|
38
|
-
* selector: 'my-app',
|
|
39
|
-
* template: `
|
|
40
|
-
* <button #anchor (click)="popup.toggle()">Toggle</button>
|
|
41
|
-
* <kendo-daterange-popup [anchor]="anchor" #popup></kendo-daterange-popup>
|
|
42
|
-
* `
|
|
43
|
-
* })
|
|
44
|
-
* export class AppComponent {
|
|
45
|
-
* }
|
|
46
|
-
* ```
|
|
47
|
-
*/
|
|
48
|
-
export class DateRangePopupComponent {
|
|
49
|
-
popupService;
|
|
50
|
-
dateRangeService;
|
|
51
|
-
zone;
|
|
52
|
-
renderer;
|
|
53
|
-
localization;
|
|
54
|
-
cdr;
|
|
55
|
-
rtl;
|
|
56
|
-
adaptiveService;
|
|
57
|
-
container;
|
|
58
|
-
actionSheet;
|
|
59
|
-
defaultTemplate;
|
|
60
|
-
contentTemplate;
|
|
61
|
-
dateRangeSelectionDirective;
|
|
62
|
-
viewCalendar;
|
|
63
|
-
contentCalendar;
|
|
64
|
-
/**
|
|
65
|
-
* @hidden
|
|
66
|
-
*
|
|
67
|
-
* Determines whether to display the MultiViewCalendar header.
|
|
68
|
-
*/
|
|
69
|
-
showCalendarHeader = true;
|
|
70
|
-
/**
|
|
71
|
-
* Specifies the focused date of the MultiViewCalendar component.
|
|
72
|
-
* Defines which date receives focus when the component loads ([see example]({% slug dates_multiviewcalendar %}#toc-focused-dates)).
|
|
73
|
-
*
|
|
74
|
-
* If the MultiViewCalendar is out of the min or max range, it normalizes the defined `focusedDate`.
|
|
75
|
-
*/
|
|
76
|
-
focusedDate;
|
|
77
|
-
/**
|
|
78
|
-
* Specifies the dates in the MultiViewCalendar that you want to disable ([see example]({% slug disabled_dates_multiviewcalendar %})).
|
|
79
|
-
*/
|
|
80
|
-
disabledDates;
|
|
81
|
-
/**
|
|
82
|
-
* Specifies the initial view that the MultiViewCalendar displays when it loads ([see example]({% slug viewoptions_multiviewcalendar %})).
|
|
83
|
-
* By default, the active view is `month`.
|
|
84
|
-
*
|
|
85
|
-
* You have to set `activeView` within the `topView`-`bottomView` range.
|
|
86
|
-
*
|
|
87
|
-
* @default 'month
|
|
88
|
-
*/
|
|
89
|
-
activeView = CalendarViewEnum[CalendarViewEnum.month];
|
|
90
|
-
/**
|
|
91
|
-
* Specifies the lowest view level that users can navigate to ([see example](slug:viewdepth_multiviewcalendar)).
|
|
92
|
-
*
|
|
93
|
-
* @default 'month'
|
|
94
|
-
*/
|
|
95
|
-
bottomView = CalendarViewEnum[CalendarViewEnum.month];
|
|
96
|
-
/**
|
|
97
|
-
* Specifies the highest view level that users can navigate to ([see example](slug:viewdepth_multiviewcalendar)).
|
|
98
|
-
*
|
|
99
|
-
* @default 'century'
|
|
100
|
-
*/
|
|
101
|
-
topView = CalendarViewEnum[CalendarViewEnum.century];
|
|
102
|
-
/**
|
|
103
|
-
* Specifies the minimum date that users can select ([see example]({% slug dates_multiviewcalendar %}#toc-focused-dates)).
|
|
104
|
-
*
|
|
105
|
-
* @default '1900-01-01'
|
|
106
|
-
*/
|
|
107
|
-
min;
|
|
108
|
-
/**
|
|
109
|
-
* Specifies the maximum date that users can select ([see example]({% slug dates_multiviewcalendar %}#toc-focused-dates)).
|
|
110
|
-
*
|
|
111
|
-
* @default '2099-12-31'
|
|
112
|
-
*/
|
|
113
|
-
max;
|
|
114
|
-
/**
|
|
115
|
-
* Determines whether users can select dates in reverse order.
|
|
116
|
-
* When you set `allowReverse` to `true`, the component does not validate if the start date comes after the end date.
|
|
117
|
-
*
|
|
118
|
-
* @default false
|
|
119
|
-
*/
|
|
120
|
-
allowReverse = false;
|
|
121
|
-
/**
|
|
122
|
-
* Determines whether to animate transitions when users navigate between views.
|
|
123
|
-
*
|
|
124
|
-
* @default false
|
|
125
|
-
*/
|
|
126
|
-
animateNavigation = false;
|
|
127
|
-
/**
|
|
128
|
-
* Determines whether the MultiViewCalendar is interactive ([see example]({% slug disabled_multiviewcalendar %})).
|
|
129
|
-
* When you set `disabled` to `true`, users cannot interact with the component.
|
|
130
|
-
*
|
|
131
|
-
* @default false
|
|
132
|
-
*/
|
|
133
|
-
disabled = false;
|
|
134
|
-
/**
|
|
135
|
-
* Specifies the number of calendar views to display side by side.
|
|
136
|
-
*
|
|
137
|
-
* @default 2
|
|
138
|
-
*/
|
|
139
|
-
views = 2;
|
|
140
|
-
/**
|
|
141
|
-
* Determines whether to display week numbers in the `month` view ([see example]({% slug weeknumcolumn_multiviewcalendar %})).
|
|
142
|
-
*
|
|
143
|
-
* @default false
|
|
144
|
-
*/
|
|
145
|
-
weekNumber = false;
|
|
146
|
-
/**
|
|
147
|
-
* Controls the popup animations.
|
|
148
|
-
* When you set `animate` to `true`, the popup displays opening and closing animations.
|
|
149
|
-
* For more information about controlling the popup animations,
|
|
150
|
-
* refer to the article on [animations]({% slug animations_popup %}).
|
|
151
|
-
*
|
|
152
|
-
* @default true
|
|
153
|
-
*/
|
|
154
|
-
animate = true;
|
|
155
|
-
/**
|
|
156
|
-
* Specifies the element that serves as an anchor for the popup.
|
|
157
|
-
* The popup opens next to this element.
|
|
158
|
-
* For more information, refer to the section on
|
|
159
|
-
* [aligning to specific components]({% slug alignmentpositioning_popup %}#toc-aligning-to-components).
|
|
160
|
-
*/
|
|
161
|
-
anchor;
|
|
162
|
-
/**
|
|
163
|
-
* Specifies the alignment point for the anchor element.
|
|
164
|
-
* For more information, refer to the section on
|
|
165
|
-
* [positioning]({% slug alignmentpositioning_popup %}#toc-positioning).
|
|
166
|
-
*/
|
|
167
|
-
anchorAlign;
|
|
168
|
-
/**
|
|
169
|
-
* Determines whether to display a header for each view ([see example]({% slug viewheader_multiviewcalendar %})).
|
|
170
|
-
* For example, displays the month name in the month view.
|
|
171
|
-
*
|
|
172
|
-
* @default false
|
|
173
|
-
*/
|
|
174
|
-
showViewHeader = false;
|
|
175
|
-
/**
|
|
176
|
-
* Determines whether to display days from adjacent months in the current month view ([see example]({% slug viewoptions_multiviewcalendar %}#toc-displaying-other-month-days)).
|
|
177
|
-
*
|
|
178
|
-
* @default false
|
|
179
|
-
*/
|
|
180
|
-
showOtherMonthDays = false;
|
|
181
|
-
/**
|
|
182
|
-
* Specifies where to render the popup container.
|
|
183
|
-
* By default, the popup renders in the root component.
|
|
184
|
-
*
|
|
185
|
-
* @default 'root'
|
|
186
|
-
*/
|
|
187
|
-
appendTo;
|
|
188
|
-
/**
|
|
189
|
-
* Configures how the popup behaves when it encounters viewport boundaries.
|
|
190
|
-
* For more information, refer to the article on
|
|
191
|
-
* [viewport boundary detection]({% slug viewportboundarydetection_popup %}).
|
|
192
|
-
*
|
|
193
|
-
* @default { horizontal: 'fit', vertical: 'flip' }
|
|
194
|
-
*/
|
|
195
|
-
collision = { horizontal: 'fit', vertical: 'flip' };
|
|
196
|
-
/**
|
|
197
|
-
* Specifies the alignment point for the popup element.
|
|
198
|
-
* For more information, refer to the section on
|
|
199
|
-
* [positioning]({% slug alignmentpositioning_popup %}#toc-positioning).
|
|
200
|
-
*/
|
|
201
|
-
popupAlign;
|
|
202
|
-
/**
|
|
203
|
-
* Specifies the margin around the popup in pixels.
|
|
204
|
-
* Creates empty space between the popup and its anchor element.
|
|
205
|
-
*/
|
|
206
|
-
margin;
|
|
207
|
-
/**
|
|
208
|
-
* Determines whether the component uses adaptive rendering for different screen sizes.
|
|
209
|
-
* By default, adaptive rendering is disabled.
|
|
210
|
-
*
|
|
211
|
-
* @default 'none'
|
|
212
|
-
*/
|
|
213
|
-
adaptiveMode = 'none';
|
|
214
|
-
/**
|
|
215
|
-
* Specifies the title text for the input element and the header of the action sheet.
|
|
216
|
-
* Applies only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
|
|
217
|
-
*
|
|
218
|
-
* @default ""
|
|
219
|
-
*/
|
|
220
|
-
adaptiveTitle = "";
|
|
221
|
-
/**
|
|
222
|
-
* Specifies the subtitle text displayed in the header of the action sheet.
|
|
223
|
-
* Applies only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
|
|
224
|
-
*
|
|
225
|
-
* @default ""
|
|
226
|
-
*/
|
|
227
|
-
adaptiveSubtitle = "";
|
|
228
|
-
/**
|
|
229
|
-
* @hidden
|
|
230
|
-
*
|
|
231
|
-
* TODO: Make visible when the Infinite Calendar is fixed to set properly the size option.
|
|
232
|
-
* Sets the size of the component.
|
|
233
|
-
* @default 'medium'
|
|
234
|
-
*/
|
|
235
|
-
size;
|
|
236
|
-
/**
|
|
237
|
-
* Fires when the popup is about to open ([see example](slug:popup_daterange#toc-events)).
|
|
238
|
-
* You can prevent this event to keep the popup closed.
|
|
239
|
-
*/
|
|
240
|
-
open = new EventEmitter();
|
|
241
|
-
/**
|
|
242
|
-
* Fires when the popup is about to close ([see example](slug:popup_daterange#toc-events)).
|
|
243
|
-
* You can prevent this event to keep the popup open.
|
|
244
|
-
*/
|
|
245
|
-
close = new EventEmitter();
|
|
246
|
-
/**
|
|
247
|
-
* Fires when the calendar element loses focus ([see example](slug:popup_daterange#toc-events)).
|
|
248
|
-
*/
|
|
249
|
-
onBlur = new EventEmitter();
|
|
250
|
-
/**
|
|
251
|
-
* Fires when the calendar element receives focus ([see example](slug:popup_daterange#toc-events)).
|
|
252
|
-
*/
|
|
253
|
-
onFocus = new EventEmitter();
|
|
254
|
-
/**
|
|
255
|
-
* Fires when the popup closes due to an `ESC` keypress or when it leaves the viewport ([see example](slug:popup_daterange#toc-events)).
|
|
256
|
-
*/
|
|
257
|
-
cancel = new EventEmitter();
|
|
258
|
-
/**
|
|
259
|
-
* Gets the active calendar that displays in the popup.
|
|
260
|
-
*
|
|
261
|
-
* When the popup is closed, the property returns `null`.
|
|
262
|
-
*/
|
|
263
|
-
get calendar() {
|
|
264
|
-
return this._calendar;
|
|
265
|
-
}
|
|
266
|
-
set calendar(calendar) {
|
|
267
|
-
this._calendar = calendar;
|
|
268
|
-
this.subscribeFocusBlur(calendar);
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* Gets the active state of the component.
|
|
272
|
-
* Returns `true` when the opened calendar is active.
|
|
273
|
-
*/
|
|
274
|
-
get isActive() {
|
|
275
|
-
// The actionsheet is expanding before the calendar gets activated
|
|
276
|
-
// and if we only check for calendar.isActive a blur event handler in the date-rage-input.ts will close the actionsheet
|
|
277
|
-
// TODO: Potentially the entire logic would need refactoring to avoid hacks like this one
|
|
278
|
-
return (this.calendar && this.calendar.isActive)
|
|
279
|
-
|| (this.actionSheet && this.actionSheet.expanded);
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* @hidden
|
|
283
|
-
*/
|
|
284
|
-
get isAdaptiveModeEnabled() {
|
|
285
|
-
return this.adaptiveMode === 'auto';
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* @hidden
|
|
289
|
-
*/
|
|
290
|
-
get isAdaptive() {
|
|
291
|
-
return this.isAdaptiveModeEnabled && this.windowSize !== 'large';
|
|
292
|
-
}
|
|
293
|
-
/**
|
|
294
|
-
* @hidden
|
|
295
|
-
*/
|
|
296
|
-
popupRef;
|
|
297
|
-
/**
|
|
298
|
-
* @hidden
|
|
299
|
-
*/
|
|
300
|
-
popupUID = guid();
|
|
301
|
-
/**
|
|
302
|
-
* @hidden
|
|
303
|
-
*/
|
|
304
|
-
checkIcon = checkIcon;
|
|
305
|
-
/**
|
|
306
|
-
* @hidden
|
|
307
|
-
*/
|
|
308
|
-
windowSize;
|
|
309
|
-
/**
|
|
310
|
-
* Gets or sets the visibility state of the component.
|
|
311
|
-
*/
|
|
312
|
-
set show(show) {
|
|
313
|
-
if (this._show === show) {
|
|
314
|
-
return;
|
|
315
|
-
}
|
|
316
|
-
const event = new PreventableEvent();
|
|
317
|
-
if (show) {
|
|
318
|
-
this.open.emit(event);
|
|
319
|
-
}
|
|
320
|
-
else {
|
|
321
|
-
this.close.emit(event);
|
|
322
|
-
}
|
|
323
|
-
if (event.isDefaultPrevented()) {
|
|
324
|
-
return;
|
|
325
|
-
}
|
|
326
|
-
this.toggleDateRange(show);
|
|
327
|
-
}
|
|
328
|
-
get show() {
|
|
329
|
-
return this._show;
|
|
330
|
-
}
|
|
331
|
-
/**
|
|
332
|
-
* @hidden
|
|
333
|
-
*/
|
|
334
|
-
handleAccept() {
|
|
335
|
-
this.dateRangeService.setRange(this._rangeSelection);
|
|
336
|
-
this.show = false;
|
|
337
|
-
}
|
|
338
|
-
activateSubscription;
|
|
339
|
-
blurSubscription;
|
|
340
|
-
focusSubscription;
|
|
341
|
-
calendarSubscriptions = new Subscription();
|
|
342
|
-
popupSubscriptions = new Subscription();
|
|
343
|
-
windowBlurSubscription;
|
|
344
|
-
localizationSubscriptions = new Subscription();
|
|
345
|
-
resolvedPromise = Promise.resolve();
|
|
346
|
-
_calendar;
|
|
347
|
-
_show;
|
|
348
|
-
_rangeSelection;
|
|
349
|
-
constructor(popupService, dateRangeService, zone, renderer, localization, cdr, rtl, adaptiveService) {
|
|
350
|
-
this.popupService = popupService;
|
|
351
|
-
this.dateRangeService = dateRangeService;
|
|
352
|
-
this.zone = zone;
|
|
353
|
-
this.renderer = renderer;
|
|
354
|
-
this.localization = localization;
|
|
355
|
-
this.cdr = cdr;
|
|
356
|
-
this.rtl = rtl;
|
|
357
|
-
this.adaptiveService = adaptiveService;
|
|
358
|
-
}
|
|
359
|
-
ngOnInit() {
|
|
360
|
-
this.dateRangeService.registerPopup(this);
|
|
361
|
-
if (this.localization) {
|
|
362
|
-
this.localizationSubscriptions.add(this.localization
|
|
363
|
-
.changes
|
|
364
|
-
.subscribe(() => this.cdr.markForCheck()));
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
ngAfterViewInit() {
|
|
368
|
-
this.calendarSubscriptions.add(this.contentCalendar.changes.subscribe((changes) => {
|
|
369
|
-
this.calendar = changes.first;
|
|
370
|
-
this.actionSheet.titleId = changes.first?.headerId;
|
|
371
|
-
this.cdr.detectChanges();
|
|
372
|
-
}));
|
|
373
|
-
this.calendarSubscriptions.add(this.viewCalendar.changes.subscribe((changes) => {
|
|
374
|
-
this.calendar = changes.first;
|
|
375
|
-
this.actionSheet.titleId = changes.first?.headerId;
|
|
376
|
-
this.cdr.detectChanges();
|
|
377
|
-
}));
|
|
378
|
-
this.calendarSubscriptions.add(this.dateRangeService.startInput$?.value?.valueChange.subscribe((res) => {
|
|
379
|
-
if (this.calendar) {
|
|
380
|
-
if (!res && this.dateRangeService.selectionRange.end) {
|
|
381
|
-
this.calendar.shouldHoverWhenNoStart = true;
|
|
382
|
-
}
|
|
383
|
-
else {
|
|
384
|
-
this.calendar.shouldHoverWhenNoStart = false;
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
}));
|
|
388
|
-
if (isWindowAvailable()) {
|
|
389
|
-
this.zone.runOutsideAngular(() => this.windowBlurSubscription = fromEvent(window, 'blur').subscribe(this.handleWindowBlur.bind(this)));
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
ngOnDestroy() {
|
|
393
|
-
this.destroyPopup();
|
|
394
|
-
this.calendarSubscriptions.unsubscribe();
|
|
395
|
-
if (this.activateSubscription) {
|
|
396
|
-
this.activateSubscription.unsubscribe();
|
|
397
|
-
}
|
|
398
|
-
if (this.blurSubscription) {
|
|
399
|
-
this.blurSubscription.unsubscribe();
|
|
400
|
-
this.focusSubscription.unsubscribe();
|
|
401
|
-
}
|
|
402
|
-
if (this.windowBlurSubscription) {
|
|
403
|
-
this.windowBlurSubscription.unsubscribe();
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
/**
|
|
407
|
-
* @hidden
|
|
408
|
-
*
|
|
409
|
-
*/
|
|
410
|
-
onRangeSelectionChange(rangeSelection) {
|
|
411
|
-
this.dateRangeService.setActiveRangeEnd(rangeSelection.activeRangeEnd);
|
|
412
|
-
if (!this.isAdaptive) {
|
|
413
|
-
this.dateRangeService.setRange(rangeSelection.selectionRange);
|
|
414
|
-
}
|
|
415
|
-
else {
|
|
416
|
-
this._rangeSelection = rangeSelection.selectionRange;
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
/**
|
|
420
|
-
* Opens the popup component and focuses the calendar.
|
|
421
|
-
*/
|
|
422
|
-
activate() {
|
|
423
|
-
if (this.show === true) {
|
|
424
|
-
return;
|
|
425
|
-
}
|
|
426
|
-
if (this.activateSubscription) {
|
|
427
|
-
this.activateSubscription.unsubscribe();
|
|
428
|
-
}
|
|
429
|
-
this.show = true;
|
|
430
|
-
this.cdr.markForCheck();
|
|
431
|
-
this.zone.runOutsideAngular(() => {
|
|
432
|
-
this.activateSubscription = merge(this.contentCalendar.changes, this.viewCalendar.changes).pipe(filter(changes => changes && changes.first), map(changes => changes.first)).subscribe((calendar) => setTimeout(() => {
|
|
433
|
-
calendar.focus();
|
|
434
|
-
this.addCalendarSubscription(calendar);
|
|
435
|
-
}));
|
|
436
|
-
});
|
|
437
|
-
}
|
|
438
|
-
/**
|
|
439
|
-
* Focuses the calendar if it is available.
|
|
440
|
-
*/
|
|
441
|
-
focus() {
|
|
442
|
-
if (this.calendar) {
|
|
443
|
-
this.calendar.focus();
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
/**
|
|
447
|
-
* Checks if a focused element is inside the popup.
|
|
448
|
-
*
|
|
449
|
-
* @returns {boolean} Returns `true` if the focused element is inside the popup.
|
|
450
|
-
*/
|
|
451
|
-
hasActiveContent() {
|
|
452
|
-
if (!isDocumentAvailable() || !this.popupRef) {
|
|
453
|
-
return false;
|
|
454
|
-
}
|
|
455
|
-
return this.popupRef.popupElement.contains(document.activeElement);
|
|
456
|
-
}
|
|
457
|
-
/**
|
|
458
|
-
* Toggles the visibility of the popup or action sheet.
|
|
459
|
-
* When you use the `toggle` method to show or hide the popup or action sheet,
|
|
460
|
-
* the `open` and `close` events do not fire.
|
|
461
|
-
*
|
|
462
|
-
* @param {boolean} show The state of the popup.
|
|
463
|
-
*/
|
|
464
|
-
toggle(show) {
|
|
465
|
-
this.resolvedPromise.then(() => {
|
|
466
|
-
this.toggleDateRange((show === undefined) ? !this.show : show);
|
|
467
|
-
});
|
|
468
|
-
}
|
|
469
|
-
/**
|
|
470
|
-
* @hidden
|
|
471
|
-
*
|
|
472
|
-
* Closes the popup and triggers the `cancel` event.
|
|
473
|
-
*/
|
|
474
|
-
cancelPopup() {
|
|
475
|
-
this.show = false;
|
|
476
|
-
this.cancel.emit();
|
|
477
|
-
}
|
|
478
|
-
/**
|
|
479
|
-
* @hidden
|
|
480
|
-
*/
|
|
481
|
-
onResize() {
|
|
482
|
-
const currentWindowSize = this.adaptiveService.size;
|
|
483
|
-
if (!this.show || this.windowSize === currentWindowSize) {
|
|
484
|
-
return;
|
|
485
|
-
}
|
|
486
|
-
if (this.actionSheet.expanded) {
|
|
487
|
-
this.toggleActionSheet(false);
|
|
488
|
-
}
|
|
489
|
-
else {
|
|
490
|
-
this.togglePopup(false);
|
|
491
|
-
}
|
|
492
|
-
this.windowSize = currentWindowSize;
|
|
493
|
-
}
|
|
494
|
-
/**
|
|
495
|
-
* @hidden
|
|
496
|
-
*/
|
|
497
|
-
closePopup(event) {
|
|
498
|
-
event.preventDefault();
|
|
499
|
-
event.stopPropagation();
|
|
500
|
-
this.toggle(false);
|
|
501
|
-
if (this.dateRangeService.activeRangeEnd === 'start' || !this.dateRangeService.activeRangeEnd) {
|
|
502
|
-
this.dateRangeService.startInput$.value.focus();
|
|
503
|
-
}
|
|
504
|
-
else {
|
|
505
|
-
this.dateRangeService.endInput$.value.focus();
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
/**
|
|
509
|
-
* @hidden
|
|
510
|
-
*/
|
|
511
|
-
handleTab(event) {
|
|
512
|
-
event.preventDefault();
|
|
513
|
-
event.stopPropagation();
|
|
514
|
-
if (this.dateRangeService.activeRangeEnd === 'start' || !this.dateRangeService.activeRangeEnd) {
|
|
515
|
-
this.dateRangeService.setActiveRangeEnd('end');
|
|
516
|
-
}
|
|
517
|
-
else {
|
|
518
|
-
this.dateRangeService.endInput$.value.focus();
|
|
519
|
-
}
|
|
520
|
-
}
|
|
521
|
-
/**
|
|
522
|
-
* @hidden
|
|
523
|
-
*/
|
|
524
|
-
handleShiftTab(event) {
|
|
525
|
-
event.preventDefault();
|
|
526
|
-
event.stopPropagation();
|
|
527
|
-
if (this.dateRangeService.activeRangeEnd === 'end') {
|
|
528
|
-
this.dateRangeService.setActiveRangeEnd('start');
|
|
529
|
-
}
|
|
530
|
-
else {
|
|
531
|
-
this.dateRangeService.startInput$.value.focus();
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
handleWindowBlur() {
|
|
535
|
-
if (!this.show || this.actionSheet.expanded) {
|
|
536
|
-
return;
|
|
537
|
-
}
|
|
538
|
-
if (hasObservers(this.close)) {
|
|
539
|
-
this.zone.run(() => this.show = false);
|
|
540
|
-
}
|
|
541
|
-
else {
|
|
542
|
-
this.show = false;
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
handleMouseLeave() {
|
|
546
|
-
this.dateRangeService.setRange(this.dateRangeService.selectionRange);
|
|
547
|
-
}
|
|
548
|
-
handleKeydown(event) {
|
|
549
|
-
const { altKey } = event;
|
|
550
|
-
const code = normalizeKeys(event);
|
|
551
|
-
if (code === Keys.Escape || (altKey && code === Keys.ArrowUp)) {
|
|
552
|
-
this.zone.run(() => this.cancelPopup());
|
|
553
|
-
}
|
|
554
|
-
}
|
|
555
|
-
subscribeFocusBlur(calendar) {
|
|
556
|
-
if (this.blurSubscription) {
|
|
557
|
-
this.blurSubscription.unsubscribe();
|
|
558
|
-
this.focusSubscription.unsubscribe();
|
|
559
|
-
}
|
|
560
|
-
if (!calendar) {
|
|
561
|
-
return;
|
|
562
|
-
}
|
|
563
|
-
const calendarElement = calendar.element.nativeElement.querySelector('.k-calendar-view');
|
|
564
|
-
this.blurSubscription = fromEvent(calendarElement, 'blur').subscribe(() => this.onBlur.emit());
|
|
565
|
-
this.focusSubscription = fromEvent(calendarElement, 'focus').subscribe(() => this.onFocus.emit());
|
|
566
|
-
}
|
|
567
|
-
addPopupSubscriptions(...subscriptions) {
|
|
568
|
-
if (!isPresent(this.popupSubscriptions)) {
|
|
569
|
-
this.popupSubscriptions = new Subscription();
|
|
570
|
-
}
|
|
571
|
-
subscriptions.forEach(s => this.popupSubscriptions.add(s));
|
|
572
|
-
}
|
|
573
|
-
get _appendTo() {
|
|
574
|
-
const appendTo = this.appendTo;
|
|
575
|
-
if (!appendTo || appendTo === 'root') {
|
|
576
|
-
return undefined;
|
|
577
|
-
}
|
|
578
|
-
return appendTo === 'component' ? this.container : appendTo;
|
|
579
|
-
}
|
|
580
|
-
togglePopup(show) {
|
|
581
|
-
this._show = show;
|
|
582
|
-
if (this.popupRef) {
|
|
583
|
-
this.destroyPopup();
|
|
584
|
-
}
|
|
585
|
-
if (this._show) {
|
|
586
|
-
const direction = this.rtl ? 'right' : 'left';
|
|
587
|
-
this.popupRef = this.popupService.open({
|
|
588
|
-
anchor: this.anchor,
|
|
589
|
-
anchorAlign: this.anchorAlign || { vertical: 'bottom', horizontal: direction },
|
|
590
|
-
animate: this.animate,
|
|
591
|
-
appendTo: this._appendTo,
|
|
592
|
-
collision: this.collision,
|
|
593
|
-
content: (this.contentTemplate || {}).templateRef || this.defaultTemplate,
|
|
594
|
-
margin: this.margin,
|
|
595
|
-
popupClass: 'k-calendar-container k-daterangepicker-popup',
|
|
596
|
-
popupAlign: this.popupAlign || { vertical: 'top', horizontal: direction },
|
|
597
|
-
positionMode: 'absolute'
|
|
598
|
-
});
|
|
599
|
-
const { popupElement, popupAnchorViewportLeave } = this.popupRef;
|
|
600
|
-
this.renderer.setAttribute(popupElement.querySelector('.k-popup'), 'id', this.popupUID);
|
|
601
|
-
this.addPopupSubscriptions(this.zone.runOutsideAngular(() => fromEvent(popupElement, 'keydown').subscribe(this.handleKeydown.bind(this))), fromEvent(popupElement, 'mouseleave').subscribe(this.handleMouseLeave.bind(this)), popupAnchorViewportLeave.subscribe(() => this.cancelPopup()));
|
|
602
|
-
}
|
|
603
|
-
}
|
|
604
|
-
destroyPopup() {
|
|
605
|
-
if (isPresent(this.popupRef)) {
|
|
606
|
-
this.popupRef.close();
|
|
607
|
-
this.popupRef = null;
|
|
608
|
-
}
|
|
609
|
-
if (isPresent(this.popupSubscriptions)) {
|
|
610
|
-
this.popupSubscriptions.unsubscribe();
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
toggleDateRange(show) {
|
|
614
|
-
this.windowSize = this.adaptiveService.size;
|
|
615
|
-
if (this.isAdaptive) {
|
|
616
|
-
this.toggleActionSheet(show);
|
|
617
|
-
}
|
|
618
|
-
else {
|
|
619
|
-
this.togglePopup(show);
|
|
620
|
-
}
|
|
621
|
-
}
|
|
622
|
-
toggleActionSheet(show) {
|
|
623
|
-
if (show === this._show) {
|
|
624
|
-
return;
|
|
625
|
-
}
|
|
626
|
-
if (show && !this.actionSheet.expanded) {
|
|
627
|
-
this.actionSheet.toggle();
|
|
628
|
-
this.renderer.setAttribute(this.actionSheet.element.nativeElement, 'id', this.popupUID);
|
|
629
|
-
}
|
|
630
|
-
else if (!show && this.actionSheet.expanded) {
|
|
631
|
-
this.actionSheet.toggle();
|
|
632
|
-
}
|
|
633
|
-
this._show = show;
|
|
634
|
-
}
|
|
635
|
-
addCalendarSubscription = (calendar) => {
|
|
636
|
-
this.calendarSubscriptions.add(calendar.viewList.focusedCellChange.subscribe((id) => {
|
|
637
|
-
this.dateRangeService.setActiveDescendent(id);
|
|
638
|
-
}));
|
|
639
|
-
};
|
|
640
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateRangePopupComponent, deps: [{ token: i1.PopupService }, { token: i2.DateRangeService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i3.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: RTL, optional: true }, { token: i4.AdaptiveService }], target: i0.ɵɵFactoryTarget.Component });
|
|
641
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DateRangePopupComponent, isStandalone: true, selector: "kendo-daterange-popup", inputs: { showCalendarHeader: "showCalendarHeader", focusedDate: "focusedDate", disabledDates: "disabledDates", activeView: "activeView", bottomView: "bottomView", topView: "topView", min: "min", max: "max", allowReverse: "allowReverse", animateNavigation: "animateNavigation", disabled: "disabled", views: "views", weekNumber: "weekNumber", animate: "animate", anchor: "anchor", anchorAlign: "anchorAlign", showViewHeader: "showViewHeader", showOtherMonthDays: "showOtherMonthDays", appendTo: "appendTo", collision: "collision", popupAlign: "popupAlign", margin: "margin", adaptiveMode: "adaptiveMode", adaptiveTitle: "adaptiveTitle", adaptiveSubtitle: "adaptiveSubtitle", size: "size" }, outputs: { open: "open", close: "close", onBlur: "blur", onFocus: "focus", cancel: "cancel" }, providers: [
|
|
642
|
-
LocalizationService,
|
|
643
|
-
{
|
|
644
|
-
provide: L10N_PREFIX,
|
|
645
|
-
useValue: 'kendo.daterangepopup'
|
|
646
|
-
}
|
|
647
|
-
], queries: [{ propertyName: "contentTemplate", first: true, predicate: DateRangePopupTemplateDirective, descendants: true }, { propertyName: "contentCalendar", predicate: MultiViewCalendarComponent }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }, { propertyName: "actionSheet", first: true, predicate: ["actionSheet"], descendants: true }, { propertyName: "defaultTemplate", first: true, predicate: ["defaultTemplate"], descendants: true }, { propertyName: "dateRangeSelectionDirective", first: true, predicate: DateRangeSelectionDirective, descendants: true }, { propertyName: "viewCalendar", predicate: MultiViewCalendarComponent, descendants: true }], exportAs: ["kendo-daterange-popup"], ngImport: i0, template: `
|
|
648
|
-
<ng-container kendoDateRangePopupLocalizedMessages
|
|
649
|
-
i18n-accept="kendo.daterangepopup.accept|The Accept button text in the timepicker component"
|
|
650
|
-
accept="Set"
|
|
651
|
-
|
|
652
|
-
i18n-acceptLabel="kendo.daterangepopup.acceptLabel|The label for the Accept button in the timepicker component"
|
|
653
|
-
acceptLabel="Set time"
|
|
654
|
-
|
|
655
|
-
i18n-cancel="kendo.daterangepopup.cancel|The Cancel button text in the timepicker component"
|
|
656
|
-
cancel="Cancel"
|
|
657
|
-
|
|
658
|
-
i18n-cancelLabel="kendo.daterangepopup.cancelLabel|The label for the Cancel button in the timepicker component"
|
|
659
|
-
cancelLabel="Cancel changes"
|
|
660
|
-
|
|
661
|
-
i18n-adaptiveCloseButtonTitle="kendo.daterangepopup.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"
|
|
662
|
-
adaptiveCloseButtonTitle="Close"
|
|
663
|
-
>
|
|
664
|
-
</ng-container>
|
|
665
|
-
<ng-container #container></ng-container>
|
|
666
|
-
<ng-template #defaultTemplate>
|
|
667
|
-
<kendo-multiviewcalendar
|
|
668
|
-
[activeView]="activeView"
|
|
669
|
-
[bottomView]="bottomView"
|
|
670
|
-
[animateNavigation]="animateNavigation"
|
|
671
|
-
[disabled]="disabled"
|
|
672
|
-
orientation="horizontal"
|
|
673
|
-
[views]="views"
|
|
674
|
-
[weekNumber]="weekNumber"
|
|
675
|
-
[topView]="topView"
|
|
676
|
-
[disabledDates]="disabledDates"
|
|
677
|
-
[min]="min"
|
|
678
|
-
[max]="max"
|
|
679
|
-
[showCalendarHeader]="showCalendarHeader"
|
|
680
|
-
[focusedDate]="focusedDate"
|
|
681
|
-
[allowReverse]="allowReverse"
|
|
682
|
-
[showViewHeader]="showViewHeader"
|
|
683
|
-
[showOtherMonthDays]="showOtherMonthDays"
|
|
684
|
-
selection="range"
|
|
685
|
-
[size]="size"
|
|
686
|
-
[value]="dateRangeService.selectionRange"
|
|
687
|
-
(onClosePopup)="closePopup($event)"
|
|
688
|
-
(onTabPress)="handleTab($event)"
|
|
689
|
-
(onShiftTabPress)="handleShiftTab($event)"
|
|
690
|
-
(rangeSelectionChange)="onRangeSelectionChange($event)"
|
|
691
|
-
></kendo-multiviewcalendar>
|
|
692
|
-
</ng-template>
|
|
693
|
-
|
|
694
|
-
<kendo-actionsheet
|
|
695
|
-
#actionSheet
|
|
696
|
-
(overlayClick)="show=false"
|
|
697
|
-
(collapse)="onBlur.emit()"
|
|
698
|
-
[cssClass]="{
|
|
699
|
-
'k-adaptive-actionsheet': true,
|
|
700
|
-
'k-actionsheet-fullscreen': windowSize === 'small',
|
|
701
|
-
'k-actionsheet-bottom': windowSize === 'medium'
|
|
702
|
-
}"
|
|
703
|
-
[cssStyle]="{
|
|
704
|
-
height: windowSize === 'small' ? '100vh' : '60vh'
|
|
705
|
-
}"
|
|
706
|
-
>
|
|
707
|
-
<ng-template kendoActionSheetTemplate>
|
|
708
|
-
<!-- Resize sensor needs to be inside the template because the date-range-popup
|
|
709
|
-
element itself always has 0x0 size and does not trigger the sensor.
|
|
710
|
-
Note: The popup in non-adaptive mode closes on window blur -->
|
|
711
|
-
@if (isAdaptiveModeEnabled) {
|
|
712
|
-
<kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
|
|
713
|
-
}
|
|
714
|
-
<div class="k-actionsheet-titlebar">
|
|
715
|
-
<div class="k-actionsheet-titlebar-group">
|
|
716
|
-
<div class="k-actionsheet-title">
|
|
717
|
-
@if (adaptiveTitle) {
|
|
718
|
-
<div class="k-text-center">{{ adaptiveTitle }}</div>
|
|
719
|
-
}
|
|
720
|
-
@if (adaptiveSubtitle) {
|
|
721
|
-
<div class="k-actionsheet-subtitle k-text-center">{{ adaptiveSubtitle }}</div>
|
|
722
|
-
}
|
|
723
|
-
</div>
|
|
724
|
-
<div class="k-actionsheet-actions">
|
|
725
|
-
<button
|
|
726
|
-
kendoButton
|
|
727
|
-
type="button"
|
|
728
|
-
icon="check"
|
|
729
|
-
[attr.title]="localization.get('adaptiveCloseButtonTitle')"
|
|
730
|
-
[svgIcon]="checkIcon"
|
|
731
|
-
fillMode="flat"
|
|
732
|
-
themeColor="primary"
|
|
733
|
-
[tabIndex]="-1"
|
|
734
|
-
size="large"
|
|
735
|
-
innerCssClass="k-button-icon"
|
|
736
|
-
(click)="handleAccept()">
|
|
737
|
-
</button>
|
|
738
|
-
</div>
|
|
739
|
-
</div>
|
|
740
|
-
</div>
|
|
741
|
-
<div class="k-actionsheet-content">
|
|
742
|
-
<div class="k-scrollable-wrap">
|
|
743
|
-
<kendo-multiviewcalendar
|
|
744
|
-
size="large"
|
|
745
|
-
[animateNavigation]="animateNavigation"
|
|
746
|
-
[disabled]="disabled"
|
|
747
|
-
orientation="vertical"
|
|
748
|
-
[views]="views"
|
|
749
|
-
[weekNumber]="weekNumber"
|
|
750
|
-
[disabledDates]="disabledDates"
|
|
751
|
-
[activeView]="activeView"
|
|
752
|
-
[bottomView]="bottomView"
|
|
753
|
-
[topView]="topView"
|
|
754
|
-
[min]="min"
|
|
755
|
-
[max]="max"
|
|
756
|
-
[showCalendarHeader]="showCalendarHeader"
|
|
757
|
-
[focusedDate]="focusedDate"
|
|
758
|
-
[allowReverse]="allowReverse"
|
|
759
|
-
[showViewHeader]="showViewHeader"
|
|
760
|
-
[showOtherMonthDays]="showOtherMonthDays"
|
|
761
|
-
[focusedDate]="dateRangeService.focusedDate"
|
|
762
|
-
[value]="dateRangeService.selectionRange"
|
|
763
|
-
selection="range"
|
|
764
|
-
(rangeSelectionChange)="onRangeSelectionChange($event)"
|
|
765
|
-
>
|
|
766
|
-
</kendo-multiviewcalendar>
|
|
767
|
-
</div>
|
|
768
|
-
</div>
|
|
769
|
-
<div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
|
|
770
|
-
<button kendoButton
|
|
771
|
-
class="k-time-cancel"
|
|
772
|
-
type="button"
|
|
773
|
-
size="large"
|
|
774
|
-
[attr.title]="localization.get('cancelLabel')"
|
|
775
|
-
[attr.aria-label]="localization.get('cancelLabel')"
|
|
776
|
-
(click)="show=false"
|
|
777
|
-
>
|
|
778
|
-
{{localization.get('cancel')}}
|
|
779
|
-
</button>
|
|
780
|
-
|
|
781
|
-
<button kendoButton
|
|
782
|
-
class="k-time-accept"
|
|
783
|
-
type="button"
|
|
784
|
-
size="large"
|
|
785
|
-
themeColor="primary"
|
|
786
|
-
[attr.title]="localization.get('acceptLabel')"
|
|
787
|
-
[attr.aria-label]="localization.get('acceptLabel')"
|
|
788
|
-
(click)="handleAccept()"
|
|
789
|
-
>
|
|
790
|
-
{{localization.get('accept')}}
|
|
791
|
-
</button>
|
|
792
|
-
</div>
|
|
793
|
-
</ng-template>
|
|
794
|
-
</kendo-actionsheet>
|
|
795
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: DateRangePopupLocalizedMessagesDirective, selector: "[kendoDateRangePopupLocalizedMessages]" }, { kind: "component", type: MultiViewCalendarComponent, selector: "kendo-multiviewcalendar", inputs: ["showOtherMonthDays", "showCalendarHeader", "size", "id", "focusedDate", "footer", "min", "max", "rangeValidation", "disabledDatesRangeValidation", "selection", "allowReverse", "value", "disabled", "tabindex", "tabIndex", "weekDaysFormat", "isActive", "disabledDates", "activeView", "bottomView", "topView", "showViewHeader", "animateNavigation", "weekNumber", "activeRangeEnd", "selectionRange", "views", "orientation", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "footerTemplate", "headerTitleTemplate", "headerTemplate"], outputs: ["activeViewChange", "navigate", "cellEnter", "cellLeave", "valueChange", "rangeSelectionChange", "blur", "focus", "focusCalendar", "onClosePopup", "onTabPress", "onShiftTabPress"], exportAs: ["kendo-multiviewcalendar"] }, { 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: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { 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"] }] });
|
|
796
|
-
}
|
|
797
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateRangePopupComponent, decorators: [{
|
|
798
|
-
type: Component,
|
|
799
|
-
args: [{
|
|
800
|
-
exportAs: 'kendo-daterange-popup',
|
|
801
|
-
providers: [
|
|
802
|
-
LocalizationService,
|
|
803
|
-
{
|
|
804
|
-
provide: L10N_PREFIX,
|
|
805
|
-
useValue: 'kendo.daterangepopup'
|
|
806
|
-
}
|
|
807
|
-
],
|
|
808
|
-
selector: 'kendo-daterange-popup',
|
|
809
|
-
template: `
|
|
810
|
-
<ng-container kendoDateRangePopupLocalizedMessages
|
|
811
|
-
i18n-accept="kendo.daterangepopup.accept|The Accept button text in the timepicker component"
|
|
812
|
-
accept="Set"
|
|
813
|
-
|
|
814
|
-
i18n-acceptLabel="kendo.daterangepopup.acceptLabel|The label for the Accept button in the timepicker component"
|
|
815
|
-
acceptLabel="Set time"
|
|
816
|
-
|
|
817
|
-
i18n-cancel="kendo.daterangepopup.cancel|The Cancel button text in the timepicker component"
|
|
818
|
-
cancel="Cancel"
|
|
819
|
-
|
|
820
|
-
i18n-cancelLabel="kendo.daterangepopup.cancelLabel|The label for the Cancel button in the timepicker component"
|
|
821
|
-
cancelLabel="Cancel changes"
|
|
822
|
-
|
|
823
|
-
i18n-adaptiveCloseButtonTitle="kendo.daterangepopup.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"
|
|
824
|
-
adaptiveCloseButtonTitle="Close"
|
|
825
|
-
>
|
|
826
|
-
</ng-container>
|
|
827
|
-
<ng-container #container></ng-container>
|
|
828
|
-
<ng-template #defaultTemplate>
|
|
829
|
-
<kendo-multiviewcalendar
|
|
830
|
-
[activeView]="activeView"
|
|
831
|
-
[bottomView]="bottomView"
|
|
832
|
-
[animateNavigation]="animateNavigation"
|
|
833
|
-
[disabled]="disabled"
|
|
834
|
-
orientation="horizontal"
|
|
835
|
-
[views]="views"
|
|
836
|
-
[weekNumber]="weekNumber"
|
|
837
|
-
[topView]="topView"
|
|
838
|
-
[disabledDates]="disabledDates"
|
|
839
|
-
[min]="min"
|
|
840
|
-
[max]="max"
|
|
841
|
-
[showCalendarHeader]="showCalendarHeader"
|
|
842
|
-
[focusedDate]="focusedDate"
|
|
843
|
-
[allowReverse]="allowReverse"
|
|
844
|
-
[showViewHeader]="showViewHeader"
|
|
845
|
-
[showOtherMonthDays]="showOtherMonthDays"
|
|
846
|
-
selection="range"
|
|
847
|
-
[size]="size"
|
|
848
|
-
[value]="dateRangeService.selectionRange"
|
|
849
|
-
(onClosePopup)="closePopup($event)"
|
|
850
|
-
(onTabPress)="handleTab($event)"
|
|
851
|
-
(onShiftTabPress)="handleShiftTab($event)"
|
|
852
|
-
(rangeSelectionChange)="onRangeSelectionChange($event)"
|
|
853
|
-
></kendo-multiviewcalendar>
|
|
854
|
-
</ng-template>
|
|
855
|
-
|
|
856
|
-
<kendo-actionsheet
|
|
857
|
-
#actionSheet
|
|
858
|
-
(overlayClick)="show=false"
|
|
859
|
-
(collapse)="onBlur.emit()"
|
|
860
|
-
[cssClass]="{
|
|
861
|
-
'k-adaptive-actionsheet': true,
|
|
862
|
-
'k-actionsheet-fullscreen': windowSize === 'small',
|
|
863
|
-
'k-actionsheet-bottom': windowSize === 'medium'
|
|
864
|
-
}"
|
|
865
|
-
[cssStyle]="{
|
|
866
|
-
height: windowSize === 'small' ? '100vh' : '60vh'
|
|
867
|
-
}"
|
|
868
|
-
>
|
|
869
|
-
<ng-template kendoActionSheetTemplate>
|
|
870
|
-
<!-- Resize sensor needs to be inside the template because the date-range-popup
|
|
871
|
-
element itself always has 0x0 size and does not trigger the sensor.
|
|
872
|
-
Note: The popup in non-adaptive mode closes on window blur -->
|
|
873
|
-
@if (isAdaptiveModeEnabled) {
|
|
874
|
-
<kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
|
|
875
|
-
}
|
|
876
|
-
<div class="k-actionsheet-titlebar">
|
|
877
|
-
<div class="k-actionsheet-titlebar-group">
|
|
878
|
-
<div class="k-actionsheet-title">
|
|
879
|
-
@if (adaptiveTitle) {
|
|
880
|
-
<div class="k-text-center">{{ adaptiveTitle }}</div>
|
|
881
|
-
}
|
|
882
|
-
@if (adaptiveSubtitle) {
|
|
883
|
-
<div class="k-actionsheet-subtitle k-text-center">{{ adaptiveSubtitle }}</div>
|
|
884
|
-
}
|
|
885
|
-
</div>
|
|
886
|
-
<div class="k-actionsheet-actions">
|
|
887
|
-
<button
|
|
888
|
-
kendoButton
|
|
889
|
-
type="button"
|
|
890
|
-
icon="check"
|
|
891
|
-
[attr.title]="localization.get('adaptiveCloseButtonTitle')"
|
|
892
|
-
[svgIcon]="checkIcon"
|
|
893
|
-
fillMode="flat"
|
|
894
|
-
themeColor="primary"
|
|
895
|
-
[tabIndex]="-1"
|
|
896
|
-
size="large"
|
|
897
|
-
innerCssClass="k-button-icon"
|
|
898
|
-
(click)="handleAccept()">
|
|
899
|
-
</button>
|
|
900
|
-
</div>
|
|
901
|
-
</div>
|
|
902
|
-
</div>
|
|
903
|
-
<div class="k-actionsheet-content">
|
|
904
|
-
<div class="k-scrollable-wrap">
|
|
905
|
-
<kendo-multiviewcalendar
|
|
906
|
-
size="large"
|
|
907
|
-
[animateNavigation]="animateNavigation"
|
|
908
|
-
[disabled]="disabled"
|
|
909
|
-
orientation="vertical"
|
|
910
|
-
[views]="views"
|
|
911
|
-
[weekNumber]="weekNumber"
|
|
912
|
-
[disabledDates]="disabledDates"
|
|
913
|
-
[activeView]="activeView"
|
|
914
|
-
[bottomView]="bottomView"
|
|
915
|
-
[topView]="topView"
|
|
916
|
-
[min]="min"
|
|
917
|
-
[max]="max"
|
|
918
|
-
[showCalendarHeader]="showCalendarHeader"
|
|
919
|
-
[focusedDate]="focusedDate"
|
|
920
|
-
[allowReverse]="allowReverse"
|
|
921
|
-
[showViewHeader]="showViewHeader"
|
|
922
|
-
[showOtherMonthDays]="showOtherMonthDays"
|
|
923
|
-
[focusedDate]="dateRangeService.focusedDate"
|
|
924
|
-
[value]="dateRangeService.selectionRange"
|
|
925
|
-
selection="range"
|
|
926
|
-
(rangeSelectionChange)="onRangeSelectionChange($event)"
|
|
927
|
-
>
|
|
928
|
-
</kendo-multiviewcalendar>
|
|
929
|
-
</div>
|
|
930
|
-
</div>
|
|
931
|
-
<div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
|
|
932
|
-
<button kendoButton
|
|
933
|
-
class="k-time-cancel"
|
|
934
|
-
type="button"
|
|
935
|
-
size="large"
|
|
936
|
-
[attr.title]="localization.get('cancelLabel')"
|
|
937
|
-
[attr.aria-label]="localization.get('cancelLabel')"
|
|
938
|
-
(click)="show=false"
|
|
939
|
-
>
|
|
940
|
-
{{localization.get('cancel')}}
|
|
941
|
-
</button>
|
|
942
|
-
|
|
943
|
-
<button kendoButton
|
|
944
|
-
class="k-time-accept"
|
|
945
|
-
type="button"
|
|
946
|
-
size="large"
|
|
947
|
-
themeColor="primary"
|
|
948
|
-
[attr.title]="localization.get('acceptLabel')"
|
|
949
|
-
[attr.aria-label]="localization.get('acceptLabel')"
|
|
950
|
-
(click)="handleAccept()"
|
|
951
|
-
>
|
|
952
|
-
{{localization.get('accept')}}
|
|
953
|
-
</button>
|
|
954
|
-
</div>
|
|
955
|
-
</ng-template>
|
|
956
|
-
</kendo-actionsheet>
|
|
957
|
-
`,
|
|
958
|
-
standalone: true,
|
|
959
|
-
imports: [DateRangePopupLocalizedMessagesDirective, MultiViewCalendarComponent, ActionSheetComponent, ActionSheetTemplateDirective, ResizeSensorComponent, ButtonComponent]
|
|
960
|
-
}]
|
|
961
|
-
}], ctorParameters: () => [{ type: i1.PopupService }, { type: i2.DateRangeService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i3.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
962
|
-
type: Optional
|
|
963
|
-
}, {
|
|
964
|
-
type: Inject,
|
|
965
|
-
args: [RTL]
|
|
966
|
-
}] }, { type: i4.AdaptiveService }], propDecorators: { container: [{
|
|
967
|
-
type: ViewChild,
|
|
968
|
-
args: ['container', { read: ViewContainerRef, static: false }]
|
|
969
|
-
}], actionSheet: [{
|
|
970
|
-
type: ViewChild,
|
|
971
|
-
args: ['actionSheet']
|
|
972
|
-
}], defaultTemplate: [{
|
|
973
|
-
type: ViewChild,
|
|
974
|
-
args: ['defaultTemplate', { static: false }]
|
|
975
|
-
}], contentTemplate: [{
|
|
976
|
-
type: ContentChild,
|
|
977
|
-
args: [DateRangePopupTemplateDirective, { static: false }]
|
|
978
|
-
}], dateRangeSelectionDirective: [{
|
|
979
|
-
type: ViewChild,
|
|
980
|
-
args: [DateRangeSelectionDirective, { static: false }]
|
|
981
|
-
}], viewCalendar: [{
|
|
982
|
-
type: ViewChildren,
|
|
983
|
-
args: [MultiViewCalendarComponent]
|
|
984
|
-
}], contentCalendar: [{
|
|
985
|
-
type: ContentChildren,
|
|
986
|
-
args: [MultiViewCalendarComponent]
|
|
987
|
-
}], showCalendarHeader: [{
|
|
988
|
-
type: Input
|
|
989
|
-
}], focusedDate: [{
|
|
990
|
-
type: Input
|
|
991
|
-
}], disabledDates: [{
|
|
992
|
-
type: Input
|
|
993
|
-
}], activeView: [{
|
|
994
|
-
type: Input
|
|
995
|
-
}], bottomView: [{
|
|
996
|
-
type: Input
|
|
997
|
-
}], topView: [{
|
|
998
|
-
type: Input
|
|
999
|
-
}], min: [{
|
|
1000
|
-
type: Input
|
|
1001
|
-
}], max: [{
|
|
1002
|
-
type: Input
|
|
1003
|
-
}], allowReverse: [{
|
|
1004
|
-
type: Input
|
|
1005
|
-
}], animateNavigation: [{
|
|
1006
|
-
type: Input
|
|
1007
|
-
}], disabled: [{
|
|
1008
|
-
type: Input
|
|
1009
|
-
}], views: [{
|
|
1010
|
-
type: Input
|
|
1011
|
-
}], weekNumber: [{
|
|
1012
|
-
type: Input
|
|
1013
|
-
}], animate: [{
|
|
1014
|
-
type: Input
|
|
1015
|
-
}], anchor: [{
|
|
1016
|
-
type: Input
|
|
1017
|
-
}], anchorAlign: [{
|
|
1018
|
-
type: Input
|
|
1019
|
-
}], showViewHeader: [{
|
|
1020
|
-
type: Input
|
|
1021
|
-
}], showOtherMonthDays: [{
|
|
1022
|
-
type: Input
|
|
1023
|
-
}], appendTo: [{
|
|
1024
|
-
type: Input
|
|
1025
|
-
}], collision: [{
|
|
1026
|
-
type: Input
|
|
1027
|
-
}], popupAlign: [{
|
|
1028
|
-
type: Input
|
|
1029
|
-
}], margin: [{
|
|
1030
|
-
type: Input
|
|
1031
|
-
}], adaptiveMode: [{
|
|
1032
|
-
type: Input
|
|
1033
|
-
}], adaptiveTitle: [{
|
|
1034
|
-
type: Input
|
|
1035
|
-
}], adaptiveSubtitle: [{
|
|
1036
|
-
type: Input
|
|
1037
|
-
}], size: [{
|
|
1038
|
-
type: Input
|
|
1039
|
-
}], open: [{
|
|
1040
|
-
type: Output
|
|
1041
|
-
}], close: [{
|
|
1042
|
-
type: Output
|
|
1043
|
-
}], onBlur: [{
|
|
1044
|
-
type: Output,
|
|
1045
|
-
args: ['blur']
|
|
1046
|
-
}], onFocus: [{
|
|
1047
|
-
type: Output,
|
|
1048
|
-
args: ['focus']
|
|
1049
|
-
}], cancel: [{
|
|
1050
|
-
type: Output
|
|
1051
|
-
}] } });
|