@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.
Files changed (54) hide show
  1. package/bundles/kendo-angular-dateinputs.umd.js +1 -1
  2. package/calendar/calendar.component.d.ts +7 -2
  3. package/calendar/header.component.d.ts +4 -1
  4. package/calendar/horizontal-view-list.component.d.ts +17 -1
  5. package/calendar/localization/calendar-messages.d.ts +5 -1
  6. package/calendar/localization/multiview-calendar-messages.d.ts +5 -1
  7. package/calendar/multiview-calendar.component.d.ts +21 -11
  8. package/calendar/services/bus-view.service.d.ts +1 -0
  9. package/calendar/services/selection.service.d.ts +2 -0
  10. package/calendar/services/weeknames.service.d.ts +1 -1
  11. package/calendar/view-list.component.d.ts +9 -1
  12. package/calendar/view.component.d.ts +3 -1
  13. package/common/utils.d.ts +33 -0
  14. package/dateinput/dateinput.component.d.ts +16 -6
  15. package/datepicker/datepicker.component.d.ts +1 -5
  16. package/daterange/date-range-end-input.directive.d.ts +1 -0
  17. package/daterange/date-range-input.d.ts +4 -1
  18. package/daterange/date-range-start-input.directive.d.ts +2 -0
  19. package/daterange/date-range.component.d.ts +7 -1
  20. package/daterange/date-range.service.d.ts +6 -2
  21. package/datetimepicker/datetimepicker.component.d.ts +5 -4
  22. package/esm2015/calendar/calendar.component.js +85 -48
  23. package/esm2015/calendar/header.component.js +30 -3
  24. package/esm2015/calendar/horizontal-view-list.component.js +83 -11
  25. package/esm2015/calendar/localization/calendar-messages.js +3 -1
  26. package/esm2015/calendar/localization/multiview-calendar-messages.js +3 -1
  27. package/esm2015/calendar/multiview-calendar.component.js +87 -45
  28. package/esm2015/calendar/services/bus-view.service.js +2 -0
  29. package/esm2015/calendar/services/month-view.service.js +1 -1
  30. package/esm2015/calendar/services/selection.service.js +4 -0
  31. package/esm2015/calendar/services/weeknames.service.js +2 -2
  32. package/esm2015/calendar/view-list.component.js +45 -9
  33. package/esm2015/calendar/view.component.js +16 -3
  34. package/esm2015/common/utils.js +34 -0
  35. package/esm2015/dateinput/dateinput.component.js +52 -23
  36. package/esm2015/datepicker/datepicker.component.js +25 -11
  37. package/esm2015/daterange/date-range-end-input.directive.js +5 -1
  38. package/esm2015/daterange/date-range-input.js +10 -0
  39. package/esm2015/daterange/date-range-popup.component.js +4 -4
  40. package/esm2015/daterange/date-range-selection.directive.js +1 -1
  41. package/esm2015/daterange/date-range-start-input.directive.js +7 -0
  42. package/esm2015/daterange/date-range.component.js +29 -11
  43. package/esm2015/daterange/date-range.service.js +28 -4
  44. package/esm2015/datetimepicker/datetimepicker.component.js +36 -11
  45. package/esm2015/package-metadata.js +1 -1
  46. package/esm2015/timepicker/localization/messages.js +11 -1
  47. package/esm2015/timepicker/timelist.component.js +57 -10
  48. package/esm2015/timepicker/timepicker.component.js +71 -24
  49. package/esm2015/util.js +2 -2
  50. package/fesm2015/kendo-angular-dateinputs.js +773 -280
  51. package/package.json +1 -1
  52. package/timepicker/localization/messages.d.ts +21 -1
  53. package/timepicker/timelist.component.d.ts +10 -1
  54. 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, guid, Keys } from '@progress/kendo-angular-common';
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 "@progress/kendo-angular-l10n";
24
- import * as i2 from "@progress/kendo-angular-popup";
25
- import * as i3 from "../common/picker.service";
26
- import * as i4 from "@progress/kendo-angular-intl";
27
- import * as i5 from "../dateinput/dateinput.component";
28
- import * as i6 from "./timeselector.component";
29
- import * as i7 from "./localization/timeselector-custom-messages.component";
30
- import * as i8 from "./localization/timepicker-localized-messages.directive";
31
- import * as i9 from "@progress/kendo-angular-common";
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-${guid()}`;
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
- * @hidden
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: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i2.PopupService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i3.PickerService }, { token: i4.IntlService }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });
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]="inputRole"
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: i5.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: i6.TimeSelectorComponent, selector: "kendo-timeselector", inputs: ["format", "min", "max", "cancelButton", "setButton", "nowButton", "disabled", "steps", "value"], outputs: ["valueChange", "valueReject"], exportAs: ["kendo-timeselector"] }, { type: i7.TimeSelectorCustomMessagesComponent, selector: "kendo-timeselector-messages" }], directives: [{ type: i8.TimePickerLocalizedMessagesDirective, selector: "[kendoTimePickerLocalizedMessages]" }, { type: i9.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
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]="inputRole"
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: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i2.PopupService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i3.PickerService }, { type: i4.IntlService }, { type: undefined, decorators: [{
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-nav-next')) // exited on next button focused and regular tab
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
  /**