@progress/kendo-angular-dateinputs 7.1.2 → 7.1.3-dev.202210211241
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/bundles/kendo-angular-dateinputs.umd.js +1 -1
- package/calendar/calendar.component.d.ts +7 -2
- package/calendar/header.component.d.ts +4 -1
- package/calendar/horizontal-view-list.component.d.ts +17 -1
- package/calendar/localization/calendar-messages.d.ts +5 -1
- package/calendar/localization/multiview-calendar-messages.d.ts +5 -1
- package/calendar/multiview-calendar.component.d.ts +21 -11
- package/calendar/services/bus-view.service.d.ts +1 -0
- package/calendar/services/selection.service.d.ts +2 -0
- package/calendar/services/weeknames.service.d.ts +1 -1
- package/calendar/view-list.component.d.ts +9 -1
- package/calendar/view.component.d.ts +3 -1
- package/common/utils.d.ts +33 -0
- package/dateinput/dateinput.component.d.ts +16 -6
- package/datepicker/datepicker.component.d.ts +1 -5
- package/daterange/date-range-end-input.directive.d.ts +1 -0
- package/daterange/date-range-input.d.ts +4 -1
- package/daterange/date-range-start-input.directive.d.ts +2 -0
- package/daterange/date-range.component.d.ts +7 -1
- package/daterange/date-range.service.d.ts +6 -2
- package/datetimepicker/datetimepicker.component.d.ts +5 -4
- package/esm2015/calendar/calendar.component.js +85 -48
- package/esm2015/calendar/header.component.js +30 -3
- package/esm2015/calendar/horizontal-view-list.component.js +83 -11
- package/esm2015/calendar/localization/calendar-messages.js +3 -1
- package/esm2015/calendar/localization/multiview-calendar-messages.js +3 -1
- package/esm2015/calendar/multiview-calendar.component.js +87 -45
- package/esm2015/calendar/services/bus-view.service.js +2 -0
- package/esm2015/calendar/services/month-view.service.js +1 -1
- package/esm2015/calendar/services/selection.service.js +4 -0
- package/esm2015/calendar/services/weeknames.service.js +2 -2
- package/esm2015/calendar/view-list.component.js +45 -9
- package/esm2015/calendar/view.component.js +16 -3
- package/esm2015/common/utils.js +34 -0
- package/esm2015/dateinput/dateinput.component.js +52 -23
- package/esm2015/datepicker/datepicker.component.js +25 -11
- package/esm2015/daterange/date-range-end-input.directive.js +5 -1
- package/esm2015/daterange/date-range-input.js +10 -0
- package/esm2015/daterange/date-range-popup.component.js +4 -4
- package/esm2015/daterange/date-range-selection.directive.js +1 -1
- package/esm2015/daterange/date-range-start-input.directive.js +7 -0
- package/esm2015/daterange/date-range.component.js +29 -11
- package/esm2015/daterange/date-range.service.js +28 -4
- package/esm2015/datetimepicker/datetimepicker.component.js +36 -11
- package/esm2015/package-metadata.js +1 -1
- package/esm2015/timepicker/localization/messages.js +11 -1
- package/esm2015/timepicker/timelist.component.js +57 -10
- package/esm2015/timepicker/timepicker.component.js +71 -24
- package/esm2015/util.js +2 -2
- package/fesm2015/kendo-angular-dateinputs.js +773 -280
- package/package.json +1 -1
- package/timepicker/localization/messages.d.ts +21 -1
- package/timepicker/timelist.component.d.ts +10 -1
- package/timepicker/timepicker.component.d.ts +5 -7
|
@@ -6,12 +6,12 @@ import { Component, ChangeDetectionStrategy, EventEmitter, HostBinding, Input, O
|
|
|
6
6
|
import { NG_VALUE_ACCESSOR, NG_VALIDATORS, NgControl } from '@angular/forms';
|
|
7
7
|
import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
|
|
8
8
|
import { cloneDate, isEqual } from '@progress/kendo-date-math';
|
|
9
|
-
import { hasObservers, KendoInput,
|
|
9
|
+
import { hasObservers, KendoInput, Keys } from '@progress/kendo-angular-common';
|
|
10
10
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
11
11
|
import { packageMetadata } from '../package-metadata';
|
|
12
12
|
import { MIDNIGHT_DATE, MIN_TIME, MAX_TIME } from '../defaults';
|
|
13
13
|
import { PickerService } from '../common/picker.service';
|
|
14
|
-
import { requiresZoneOnBlur, currentFocusTarget } from '../common/utils';
|
|
14
|
+
import { requiresZoneOnBlur, currentFocusTarget, attributeNames } from '../common/utils';
|
|
15
15
|
import { TIME_PART } from './models/time-part.default';
|
|
16
16
|
import { PreventableEvent } from '../preventable-event';
|
|
17
17
|
import { noop, setTime, isWindowAvailable, getFillModeClass, getSizeClass, getRoundedClass, DEFAULT_FILL_MODE, DEFAULT_ROUNDED, DEFAULT_SIZE } from '../util';
|
|
@@ -19,16 +19,18 @@ import { timeRangeValidator } from '../validators/time-range.validator';
|
|
|
19
19
|
import { TOUCH_ENABLED } from '../touch-enabled';
|
|
20
20
|
import { fromEvent } from 'rxjs';
|
|
21
21
|
import { incompleteDateValidator } from '../validators/incomplete-date.validator';
|
|
22
|
+
import { BusViewService } from '../calendar/services/bus-view.service';
|
|
22
23
|
import * as i0 from "@angular/core";
|
|
23
|
-
import * as i1 from "
|
|
24
|
-
import * as i2 from "@progress/kendo-angular-
|
|
25
|
-
import * as i3 from "
|
|
26
|
-
import * as i4 from "
|
|
27
|
-
import * as i5 from "
|
|
28
|
-
import * as i6 from "
|
|
29
|
-
import * as i7 from "./
|
|
30
|
-
import * as i8 from "./localization/
|
|
31
|
-
import * as i9 from "
|
|
24
|
+
import * as i1 from "../calendar/services/bus-view.service";
|
|
25
|
+
import * as i2 from "@progress/kendo-angular-l10n";
|
|
26
|
+
import * as i3 from "@progress/kendo-angular-popup";
|
|
27
|
+
import * as i4 from "../common/picker.service";
|
|
28
|
+
import * as i5 from "@progress/kendo-angular-intl";
|
|
29
|
+
import * as i6 from "../dateinput/dateinput.component";
|
|
30
|
+
import * as i7 from "./timeselector.component";
|
|
31
|
+
import * as i8 from "./localization/timeselector-custom-messages.component";
|
|
32
|
+
import * as i9 from "./localization/timepicker-localized-messages.directive";
|
|
33
|
+
import * as i10 from "@progress/kendo-angular-common";
|
|
32
34
|
const VALUE_DOC_LINK = 'https://www.telerik.com/kendo-angular-ui/components/dateinputs/timepicker/#toc-integration-with-json';
|
|
33
35
|
const INTL_DATE_FORMAT = 'https://github.com/telerik/kendo-intl/blob/master/docs/date-formatting/index.md';
|
|
34
36
|
const formatRegExp = new RegExp(`${TIME_PART.hour}|${TIME_PART.minute}|${TIME_PART.second}|${TIME_PART.millisecond}|${TIME_PART.dayperiod}|literal`);
|
|
@@ -36,7 +38,8 @@ const formatRegExp = new RegExp(`${TIME_PART.hour}|${TIME_PART.minute}|${TIME_PA
|
|
|
36
38
|
* Represents the [Kendo UI TimePicker component for Angular]({% slug overview_timepicker %}#toc-basic-usage).
|
|
37
39
|
*/
|
|
38
40
|
export class TimePickerComponent {
|
|
39
|
-
constructor(zone, localization, cdr, popupService, wrapper, renderer, injector, pickerService, intl, touchEnabled) {
|
|
41
|
+
constructor(bus, zone, localization, cdr, popupService, wrapper, renderer, injector, pickerService, intl, touchEnabled) {
|
|
42
|
+
this.bus = bus;
|
|
40
43
|
this.zone = zone;
|
|
41
44
|
this.localization = localization;
|
|
42
45
|
this.cdr = cdr;
|
|
@@ -50,7 +53,7 @@ export class TimePickerComponent {
|
|
|
50
53
|
/**
|
|
51
54
|
* @hidden
|
|
52
55
|
*/
|
|
53
|
-
this.focusableId = `k-${
|
|
56
|
+
this.focusableId = `k-timepicker-${this.bus.calendarId}-`;
|
|
54
57
|
/**
|
|
55
58
|
* Sets or gets the `disabled` property of the TimePicker and
|
|
56
59
|
* determines whether the component is active
|
|
@@ -188,7 +191,6 @@ export class TimePickerComponent {
|
|
|
188
191
|
* @hidden
|
|
189
192
|
*/
|
|
190
193
|
this.wrapperClasses = true;
|
|
191
|
-
this.popupUID = guid();
|
|
192
194
|
this.onControlChange = noop;
|
|
193
195
|
this.onControlTouched = noop;
|
|
194
196
|
this.onValidatorChange = noop;
|
|
@@ -367,12 +369,10 @@ export class TimePickerComponent {
|
|
|
367
369
|
get disabledClass() {
|
|
368
370
|
return this.disabled;
|
|
369
371
|
}
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
*/
|
|
373
|
-
get inputRole() {
|
|
374
|
-
return this.readOnlyInput ? 'listbox' : 'spinbutton';
|
|
372
|
+
get popupUID() {
|
|
373
|
+
return `k-timepicker-popup-${this.bus.calendarId}-`;
|
|
375
374
|
}
|
|
375
|
+
;
|
|
376
376
|
get isActive() {
|
|
377
377
|
return this._active;
|
|
378
378
|
}
|
|
@@ -673,6 +673,7 @@ export class TimePickerComponent {
|
|
|
673
673
|
}
|
|
674
674
|
this._show = show;
|
|
675
675
|
this.cdr.markForCheck();
|
|
676
|
+
const inputElement = this.wrapper.nativeElement.querySelector('input');
|
|
676
677
|
if (show) {
|
|
677
678
|
const direction = this.localization.rtl ? 'right' : 'left';
|
|
678
679
|
this.popupRef = this.popupService.open({
|
|
@@ -686,11 +687,13 @@ export class TimePickerComponent {
|
|
|
686
687
|
positionMode: 'absolute'
|
|
687
688
|
});
|
|
688
689
|
this.popupRef.popupElement.setAttribute('id', this.popupUID);
|
|
690
|
+
this.renderer.setAttribute(inputElement, attributeNames.ariaControls, this.popupUID);
|
|
689
691
|
this.popupRef.popupAnchorViewportLeave.subscribe(() => this.show = false);
|
|
690
692
|
}
|
|
691
693
|
else {
|
|
692
694
|
this.popupRef.close();
|
|
693
695
|
this.popupRef = null;
|
|
696
|
+
this.renderer.removeAttribute(inputElement, attributeNames.ariaControls);
|
|
694
697
|
}
|
|
695
698
|
}
|
|
696
699
|
focusInput() {
|
|
@@ -800,12 +803,13 @@ export class TimePickerComponent {
|
|
|
800
803
|
}
|
|
801
804
|
}
|
|
802
805
|
}
|
|
803
|
-
TimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TimePickerComponent, deps: [{ token: i0.NgZone }, { token:
|
|
806
|
+
TimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", 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: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
804
807
|
TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TimePickerComponent, selector: "kendo-timepicker", inputs: { focusableId: "focusableId", disabled: "disabled", readonly: "readonly", readOnlyInput: "readOnlyInput", format: "format", formatPlaceholder: "formatPlaceholder", placeholder: "placeholder", min: "min", max: "max", incompleteDateValidation: "incompleteDateValidation", cancelButton: "cancelButton", nowButton: "nowButton", steps: "steps", popupSettings: "popupSettings", tabindex: "tabindex", tabIndex: "tabIndex", title: "title", rangeValidation: "rangeValidation", value: "value", size: "size", rounded: "rounded", fillMode: "fillMode" }, outputs: { valueChange: "valueChange", onFocus: "focus", onBlur: "blur", open: "open", close: "close" }, host: { properties: { "class.k-timepicker": "this.wrapperClasses", "class.k-input": "this.wrapperClasses", "class.k-disabled": "this.disabledClass" } }, providers: [
|
|
805
808
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TimePickerComponent), multi: true },
|
|
806
809
|
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => TimePickerComponent), multi: true },
|
|
807
810
|
{ provide: KendoInput, useExisting: forwardRef(() => TimePickerComponent) },
|
|
808
811
|
LocalizationService,
|
|
812
|
+
BusViewService,
|
|
809
813
|
{
|
|
810
814
|
provide: L10N_PREFIX,
|
|
811
815
|
useValue: 'kendo.timepicker'
|
|
@@ -833,6 +837,21 @@ TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
|
|
|
833
837
|
|
|
834
838
|
i18n-toggle="kendo.timepicker.toggle|The label for the toggle button in the timepicker component"
|
|
835
839
|
toggle="Toggle time list"
|
|
840
|
+
|
|
841
|
+
i18n-hour="kendo.timepicker.hour|The label for the hour part in the timepicker component"
|
|
842
|
+
hour="Hour"
|
|
843
|
+
|
|
844
|
+
i18n-minute="kendo.timepicker.minute|The label for the minute part in the timepicker component"
|
|
845
|
+
minute="Minute"
|
|
846
|
+
|
|
847
|
+
i18n-second="kendo.timepicker.second|The label for the second part in the timepicker component"
|
|
848
|
+
second="Second"
|
|
849
|
+
|
|
850
|
+
i18n-millisecond="kendo.timepicker.millisecond|The label for the millisecond part in the timepicker component"
|
|
851
|
+
millisecond="Millisecond"
|
|
852
|
+
|
|
853
|
+
i18n-dayperiod="kendo.timepicker.dayperiod|The label for the dayperiod part in the timepicker component"
|
|
854
|
+
dayperiod="Dayperiod"
|
|
836
855
|
>
|
|
837
856
|
</ng-container>
|
|
838
857
|
<kendo-dateinput
|
|
@@ -842,7 +861,7 @@ TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
|
|
|
842
861
|
[isPopupOpen]="show"
|
|
843
862
|
[disabled]="disabled"
|
|
844
863
|
[readonly]="readonly || readOnlyInput"
|
|
845
|
-
[role]="
|
|
864
|
+
[role]="'combobox'"
|
|
846
865
|
[ariaReadOnly]="readonly"
|
|
847
866
|
[format]="format"
|
|
848
867
|
[formatPlaceholder]="formatPlaceholder"
|
|
@@ -862,6 +881,7 @@ TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
|
|
|
862
881
|
<button
|
|
863
882
|
#toggleButton
|
|
864
883
|
type="button"
|
|
884
|
+
tabindex="-1"
|
|
865
885
|
class="k-input-button k-button k-icon-button"
|
|
866
886
|
[attr.title]="localization.get('toggle')"
|
|
867
887
|
[attr.aria-label]="localization.get('toggle')"
|
|
@@ -898,12 +918,17 @@ TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
|
|
|
898
918
|
[cancel]="localization.get('cancel')"
|
|
899
919
|
[nowLabel]="localization.get('nowLabel')"
|
|
900
920
|
[now]="localization.get('now')"
|
|
921
|
+
[hour]="localization.get('hour')"
|
|
922
|
+
[minute]="localization.get('minute')"
|
|
923
|
+
[second]="localization.get('second')"
|
|
924
|
+
[millisecond]="localization.get('millisecond')"
|
|
925
|
+
[dayperiod]="localization.get('dayperiod')"
|
|
901
926
|
>
|
|
902
927
|
</kendo-timeselector-messages>
|
|
903
928
|
</kendo-timeselector>
|
|
904
929
|
</ng-template>
|
|
905
930
|
<ng-container #container></ng-container>
|
|
906
|
-
`, isInline: true, components: [{ type:
|
|
931
|
+
`, isInline: true, components: [{ type: i6.DateInputComponent, selector: "kendo-dateinput", inputs: ["focusableId", "disabled", "readonly", "title", "tabindex", "role", "ariaReadOnly", "tabIndex", "format", "formatPlaceholder", "placeholder", "steps", "max", "min", "rangeValidation", "autoCorrect", "incompleteDateValidation", "twoDigitYearMax", "value", "spinners", "isPopupOpen", "hasPopup", "size", "rounded", "fillMode"], outputs: ["valueChange", "valueUpdate", "focus", "blur"], exportAs: ["kendo-dateinput"] }, { type: i7.TimeSelectorComponent, selector: "kendo-timeselector", inputs: ["format", "min", "max", "cancelButton", "setButton", "nowButton", "disabled", "steps", "value"], outputs: ["valueChange", "valueReject"], exportAs: ["kendo-timeselector"] }, { type: i8.TimeSelectorCustomMessagesComponent, selector: "kendo-timeselector-messages" }], directives: [{ type: i9.TimePickerLocalizedMessagesDirective, selector: "[kendoTimePickerLocalizedMessages]" }, { type: i10.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
907
932
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TimePickerComponent, decorators: [{
|
|
908
933
|
type: Component,
|
|
909
934
|
args: [{
|
|
@@ -914,6 +939,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
914
939
|
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => TimePickerComponent), multi: true },
|
|
915
940
|
{ provide: KendoInput, useExisting: forwardRef(() => TimePickerComponent) },
|
|
916
941
|
LocalizationService,
|
|
942
|
+
BusViewService,
|
|
917
943
|
{
|
|
918
944
|
provide: L10N_PREFIX,
|
|
919
945
|
useValue: 'kendo.timepicker'
|
|
@@ -943,6 +969,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
943
969
|
|
|
944
970
|
i18n-toggle="kendo.timepicker.toggle|The label for the toggle button in the timepicker component"
|
|
945
971
|
toggle="Toggle time list"
|
|
972
|
+
|
|
973
|
+
i18n-hour="kendo.timepicker.hour|The label for the hour part in the timepicker component"
|
|
974
|
+
hour="Hour"
|
|
975
|
+
|
|
976
|
+
i18n-minute="kendo.timepicker.minute|The label for the minute part in the timepicker component"
|
|
977
|
+
minute="Minute"
|
|
978
|
+
|
|
979
|
+
i18n-second="kendo.timepicker.second|The label for the second part in the timepicker component"
|
|
980
|
+
second="Second"
|
|
981
|
+
|
|
982
|
+
i18n-millisecond="kendo.timepicker.millisecond|The label for the millisecond part in the timepicker component"
|
|
983
|
+
millisecond="Millisecond"
|
|
984
|
+
|
|
985
|
+
i18n-dayperiod="kendo.timepicker.dayperiod|The label for the dayperiod part in the timepicker component"
|
|
986
|
+
dayperiod="Dayperiod"
|
|
946
987
|
>
|
|
947
988
|
</ng-container>
|
|
948
989
|
<kendo-dateinput
|
|
@@ -952,7 +993,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
952
993
|
[isPopupOpen]="show"
|
|
953
994
|
[disabled]="disabled"
|
|
954
995
|
[readonly]="readonly || readOnlyInput"
|
|
955
|
-
[role]="
|
|
996
|
+
[role]="'combobox'"
|
|
956
997
|
[ariaReadOnly]="readonly"
|
|
957
998
|
[format]="format"
|
|
958
999
|
[formatPlaceholder]="formatPlaceholder"
|
|
@@ -972,6 +1013,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
972
1013
|
<button
|
|
973
1014
|
#toggleButton
|
|
974
1015
|
type="button"
|
|
1016
|
+
tabindex="-1"
|
|
975
1017
|
class="k-input-button k-button k-icon-button"
|
|
976
1018
|
[attr.title]="localization.get('toggle')"
|
|
977
1019
|
[attr.aria-label]="localization.get('toggle')"
|
|
@@ -1008,6 +1050,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
1008
1050
|
[cancel]="localization.get('cancel')"
|
|
1009
1051
|
[nowLabel]="localization.get('nowLabel')"
|
|
1010
1052
|
[now]="localization.get('now')"
|
|
1053
|
+
[hour]="localization.get('hour')"
|
|
1054
|
+
[minute]="localization.get('minute')"
|
|
1055
|
+
[second]="localization.get('second')"
|
|
1056
|
+
[millisecond]="localization.get('millisecond')"
|
|
1057
|
+
[dayperiod]="localization.get('dayperiod')"
|
|
1011
1058
|
>
|
|
1012
1059
|
</kendo-timeselector-messages>
|
|
1013
1060
|
</kendo-timeselector>
|
|
@@ -1015,7 +1062,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
1015
1062
|
<ng-container #container></ng-container>
|
|
1016
1063
|
`
|
|
1017
1064
|
}]
|
|
1018
|
-
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type:
|
|
1065
|
+
}], ctorParameters: function () { return [{ 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: undefined, decorators: [{
|
|
1019
1066
|
type: Optional
|
|
1020
1067
|
}, {
|
|
1021
1068
|
type: Inject,
|
package/esm2015/util.js
CHANGED
|
@@ -341,8 +341,8 @@ export const isTabExitingCalendar = (calendarType, focusedElement, shiftKey) =>
|
|
|
341
341
|
}
|
|
342
342
|
return calendarType === 'infinite' || ( // infinte calendar is always exited on first tab keydown
|
|
343
343
|
calendarType === 'classic' &&
|
|
344
|
-
(shiftKey && focusedElement.classList.contains('k-calendar')) || // exited on main calendar element focused and back-tab
|
|
345
|
-
(!shiftKey && focusedElement.classList.contains('k-calendar-
|
|
344
|
+
(shiftKey && focusedElement.classList.contains('k-calendar-table')) || // exited on main calendar element focused and back-tab
|
|
345
|
+
(!shiftKey && focusedElement.classList.contains('k-calendar-table')) // exited on next button focused and regular tab
|
|
346
346
|
);
|
|
347
347
|
};
|
|
348
348
|
/**
|