@progress/kendo-angular-scheduler 4.3.1-dev.202208101208 → 4.3.1-dev.202208291508

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.
@@ -10,6 +10,7 @@ import { EditService } from './edit-service.interface';
10
10
  import { DialogsService } from '../editing/dialogs.service';
11
11
  import { EditMode } from '../types';
12
12
  import { AddEvent, EditEvent } from '../events';
13
+ import { FocusService } from '../navigation';
13
14
  import * as i0 from "@angular/core";
14
15
  /**
15
16
  * @hidden
@@ -18,6 +19,7 @@ export declare abstract class EditingDirectiveBase implements OnInit, OnDestroy
18
19
  protected scheduler: SchedulerComponent;
19
20
  protected localDataChangesService: LocalDataChangesService;
20
21
  protected dialogsService: DialogsService;
22
+ private focusService;
21
23
  /**
22
24
  * Fires before the editing directive renders the **Add** dialog.
23
25
  */
@@ -36,7 +38,7 @@ export declare abstract class EditingDirectiveBase implements OnInit, OnDestroy
36
38
  protected defaultEditService: EditService<any>;
37
39
  protected userEditService: EditService<any>;
38
40
  protected abstract createModel(args: any): any;
39
- constructor(scheduler: SchedulerComponent, localDataChangesService: LocalDataChangesService, dialogsService: DialogsService);
41
+ constructor(scheduler: SchedulerComponent, localDataChangesService: LocalDataChangesService, dialogsService: DialogsService, focusService: FocusService);
40
42
  /**
41
43
  * @hidden
42
44
  */
@@ -8,6 +8,7 @@ import { EditingDirectiveBase } from './editing-directive-base';
8
8
  import { CreateFormGroupArgs } from '../types/create-form-group-args.interface';
9
9
  import { LocalDataChangesService } from '../editing/local-data-changes.service';
10
10
  import { DialogsService } from '../editing/dialogs.service';
11
+ import { FocusService } from "../navigation";
11
12
  import * as i0 from "@angular/core";
12
13
  /**
13
14
  * A directive which encapsulates the editing operations when the Scheduler
@@ -21,7 +22,7 @@ export declare class ReactiveEditingDirective extends EditingDirectiveBase {
21
22
  * The function that creates the `FormGroup` for the edited model.
22
23
  */
23
24
  createFormGroup: (args: CreateFormGroupArgs) => FormGroup;
24
- constructor(scheduler: SchedulerComponent, localDataChangesService: LocalDataChangesService, dialogsService: DialogsService);
25
+ constructor(scheduler: SchedulerComponent, localDataChangesService: LocalDataChangesService, dialogsService: DialogsService, focusService: FocusService);
25
26
  ngOnInit(): void;
26
27
  protected editHandler(args: any): void;
27
28
  protected saveHandler(args: any): void;
@@ -12,14 +12,16 @@ import * as i0 from "@angular/core";
12
12
  import * as i1 from "../scheduler.component";
13
13
  import * as i2 from "../editing/local-data-changes.service";
14
14
  import * as i3 from "../editing/dialogs.service";
15
+ import * as i4 from "../navigation";
15
16
  /**
16
17
  * @hidden
17
18
  */
18
19
  export class EditingDirectiveBase {
19
- constructor(scheduler, localDataChangesService, dialogsService) {
20
+ constructor(scheduler, localDataChangesService, dialogsService, focusService) {
20
21
  this.scheduler = scheduler;
21
22
  this.localDataChangesService = localDataChangesService;
22
23
  this.dialogsService = dialogsService;
24
+ this.focusService = focusService;
23
25
  /**
24
26
  * Fires before the editing directive renders the **Add** dialog.
25
27
  */
@@ -97,6 +99,7 @@ export class EditingDirectiveBase {
97
99
  .subscribe((editMode) => {
98
100
  if (editMode !== undefined) {
99
101
  this.handleRemove(dataItem, editMode);
102
+ this.focusService.focusFirst();
100
103
  }
101
104
  });
102
105
  }
@@ -105,6 +108,7 @@ export class EditingDirectiveBase {
105
108
  .subscribe((shouldRemove) => {
106
109
  if (shouldRemove) {
107
110
  this.handleRemove(dataItem, 0 /* Event */);
111
+ this.focusService.focusFirst();
108
112
  }
109
113
  });
110
114
  }
@@ -205,11 +209,11 @@ export class EditingDirectiveBase {
205
209
  return editable && editable[action] !== false;
206
210
  }
207
211
  }
208
- EditingDirectiveBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EditingDirectiveBase, deps: [{ token: i1.SchedulerComponent }, { token: i2.LocalDataChangesService }, { token: i3.DialogsService }], target: i0.ɵɵFactoryTarget.Directive });
212
+ EditingDirectiveBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EditingDirectiveBase, deps: [{ token: i1.SchedulerComponent }, { token: i2.LocalDataChangesService }, { token: i3.DialogsService }, { token: i4.FocusService }], target: i0.ɵɵFactoryTarget.Directive });
209
213
  EditingDirectiveBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: EditingDirectiveBase, inputs: { editService: "editService" }, outputs: { add: "add", edit: "edit" }, ngImport: i0 });
210
214
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EditingDirectiveBase, decorators: [{
211
215
  type: Directive
212
- }], ctorParameters: function () { return [{ type: i1.SchedulerComponent }, { type: i2.LocalDataChangesService }, { type: i3.DialogsService }]; }, propDecorators: { add: [{
216
+ }], ctorParameters: function () { return [{ type: i1.SchedulerComponent }, { type: i2.LocalDataChangesService }, { type: i3.DialogsService }, { type: i4.FocusService }]; }, propDecorators: { add: [{
213
217
  type: Output
214
218
  }], edit: [{
215
219
  type: Output
@@ -11,13 +11,14 @@ import * as i0 from "@angular/core";
11
11
  import * as i1 from "../scheduler.component";
12
12
  import * as i2 from "../editing/local-data-changes.service";
13
13
  import * as i3 from "../editing/dialogs.service";
14
+ import * as i4 from "../navigation";
14
15
  /**
15
16
  * A directive which encapsulates the editing operations when the Scheduler
16
17
  * uses the [Reactive Angular Forms]({{ site.data.urls.angular['reactiveforms'] }}).
17
18
  */
18
19
  export class ReactiveEditingDirective extends EditingDirectiveBase {
19
- constructor(scheduler, localDataChangesService, dialogsService) {
20
- super(scheduler, localDataChangesService, dialogsService);
20
+ constructor(scheduler, localDataChangesService, dialogsService, focusService) {
21
+ super(scheduler, localDataChangesService, dialogsService, focusService);
21
22
  this.scheduler = scheduler;
22
23
  this.localDataChangesService = localDataChangesService;
23
24
  this.dialogsService = dialogsService;
@@ -91,14 +92,14 @@ export class ReactiveEditingDirective extends EditingDirectiveBase {
91
92
  return false;
92
93
  }
93
94
  }
94
- ReactiveEditingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ReactiveEditingDirective, deps: [{ token: i1.SchedulerComponent }, { token: i2.LocalDataChangesService }, { token: i3.DialogsService }], target: i0.ɵɵFactoryTarget.Directive });
95
+ ReactiveEditingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ReactiveEditingDirective, deps: [{ token: i1.SchedulerComponent }, { token: i2.LocalDataChangesService }, { token: i3.DialogsService }, { token: i4.FocusService }], target: i0.ɵɵFactoryTarget.Directive });
95
96
  ReactiveEditingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: ReactiveEditingDirective, selector: "[kendoSchedulerReactiveEditing]", inputs: { createFormGroup: ["kendoSchedulerReactiveEditing", "createFormGroup"] }, usesInheritance: true, ngImport: i0 });
96
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ReactiveEditingDirective, decorators: [{
97
98
  type: Directive,
98
99
  args: [{
99
100
  selector: '[kendoSchedulerReactiveEditing]'
100
101
  }]
101
- }], ctorParameters: function () { return [{ type: i1.SchedulerComponent }, { type: i2.LocalDataChangesService }, { type: i3.DialogsService }]; }, propDecorators: { createFormGroup: [{
102
+ }], ctorParameters: function () { return [{ type: i1.SchedulerComponent }, { type: i2.LocalDataChangesService }, { type: i3.DialogsService }, { type: i4.FocusService }]; }, propDecorators: { createFormGroup: [{
102
103
  type: Input,
103
104
  args: ['kendoSchedulerReactiveEditing']
104
105
  }] } });
@@ -4,16 +4,18 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Injectable, Optional, EventEmitter } from '@angular/core';
6
6
  import { Subscription } from 'rxjs';
7
+ import { take } from 'rxjs/operators';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "../views/common/dom-events.service";
9
10
  /**
10
11
  * @hidden
11
12
  */
12
13
  export class FocusService {
13
- constructor(renderer, wrapper, domEvents) {
14
+ constructor(renderer, wrapper, domEvents, zone) {
14
15
  this.renderer = renderer;
15
16
  this.wrapper = wrapper;
16
17
  this.domEvents = domEvents;
18
+ this.zone = zone;
17
19
  this.ariaActiveDescendant = new EventEmitter();
18
20
  this.items = new Set();
19
21
  this.elementMap = new WeakMap();
@@ -62,6 +64,24 @@ export class FocusService {
62
64
  }
63
65
  return this.activeItem !== currentItem;
64
66
  }
67
+ focusFirst() {
68
+ const firstEvent = Array.from(this.items.values())[0];
69
+ if (!firstEvent) {
70
+ return;
71
+ }
72
+ this.activate(firstEvent.element.nativeElement);
73
+ this.focus();
74
+ this.zone.onStable.pipe(take(1)).subscribe(() => {
75
+ const first = Array.from(this.items.values())[0];
76
+ if (!first) {
77
+ this.clearActiveDescendant();
78
+ return;
79
+ }
80
+ const id = first.element.nativeElement.getAttribute('id');
81
+ this.ariaActiveDescendant.next(id);
82
+ this.lastActiveDescendantId = id;
83
+ });
84
+ }
65
85
  clearActiveDescendant() {
66
86
  this.ariaActiveDescendant.next(null);
67
87
  }
@@ -72,6 +92,7 @@ export class FocusService {
72
92
  if (item === next) {
73
93
  const id = item.element.nativeElement.getAttribute('id');
74
94
  this.ariaActiveDescendant.next(id);
95
+ this.lastActiveDescendantId = id;
75
96
  }
76
97
  });
77
98
  this.activeItem = next;
@@ -110,6 +131,10 @@ export class FocusService {
110
131
  }
111
132
  onFocusIn(e) {
112
133
  const item = this.elementMap.get(e.target);
134
+ const shouldRestoreActiveDescendant = this.lastActiveDescendantId && this.lastActiveDescendantId !== (item === null || item === void 0 ? void 0 : item.element.nativeElement.getAttribute('id'));
135
+ if (shouldRestoreActiveDescendant) {
136
+ this.ariaActiveDescendant.next(this.lastActiveDescendantId);
137
+ }
113
138
  if (!item || item === this.focusedItem) {
114
139
  return;
115
140
  }
@@ -126,10 +151,10 @@ export class FocusService {
126
151
  }
127
152
  this.focusedItem.toggleFocus(false);
128
153
  this.focusedItem = null;
129
- this.ariaActiveDescendant.next(null);
154
+ this.clearActiveDescendant();
130
155
  }
131
156
  }
132
- FocusService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FocusService, deps: [{ token: i0.Renderer2, optional: true }, { token: i0.ElementRef, optional: true }, { token: i1.DomEventsService }], target: i0.ɵɵFactoryTarget.Injectable });
157
+ FocusService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FocusService, deps: [{ token: i0.Renderer2, optional: true }, { token: i0.ElementRef, optional: true }, { token: i1.DomEventsService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
133
158
  FocusService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FocusService });
134
159
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FocusService, decorators: [{
135
160
  type: Injectable
@@ -137,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
137
162
  type: Optional
138
163
  }] }, { type: i0.ElementRef, decorators: [{
139
164
  type: Optional
140
- }] }, { type: i1.DomEventsService }]; } });
165
+ }] }, { type: i1.DomEventsService }, { type: i0.NgZone }]; } });
@@ -44,6 +44,7 @@ export class FocusableDirective {
44
44
  this.element.nativeElement.focus();
45
45
  }
46
46
  toggleFocus(value) {
47
+ var _a;
47
48
  const focusedClass = 'k-selected';
48
49
  const element = this.element.nativeElement;
49
50
  if (value) {
@@ -52,7 +53,11 @@ export class FocusableDirective {
52
53
  else {
53
54
  this.renderer.removeClass(element, focusedClass);
54
55
  }
55
- this.renderer.setAttribute(element, 'aria-selected', value.toString());
56
+ const selectable = element.matches('.k-scheduler-agendaview .k-scheduler-content .k-selected');
57
+ if (selectable) {
58
+ (_a = element.closest('.k-scheduler-agendaview').querySelector('[aria-selected="true"]')) === null || _a === void 0 ? void 0 : _a.removeAttribute('aria-selected');
59
+ this.renderer.setAttribute(element, 'aria-selected', value.toString());
60
+ }
56
61
  }
57
62
  }
58
63
  FocusableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FocusableDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.FocusService }], target: i0.ɵɵFactoryTarget.Directive });
@@ -9,7 +9,7 @@ export const packageMetadata = {
9
9
  name: '@progress/kendo-angular-scheduler',
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
12
- publishDate: 1660133212,
12
+ publishDate: 1661785631,
13
13
  version: '',
14
14
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
15
15
  };
@@ -8,9 +8,10 @@ import * as i0 from "@angular/core";
8
8
  import * as i1 from "@progress/kendo-angular-popup";
9
9
  import * as i2 from "./toolbar.service";
10
10
  import * as i3 from "@progress/kendo-angular-l10n";
11
- import * as i4 from "@progress/kendo-angular-dateinputs";
12
- import * as i5 from "@progress/kendo-angular-buttons";
13
- import * as i6 from "@angular/common";
11
+ import * as i4 from "../views/view-context.service";
12
+ import * as i5 from "@progress/kendo-angular-dateinputs";
13
+ import * as i6 from "@progress/kendo-angular-buttons";
14
+ import * as i7 from "@angular/common";
14
15
  /**
15
16
  * A toolbar component which contains the controls for date navigation
16
17
  * ([see example]({% slug toolbar_scheduler %}#toc-including-the-built-in-components)).
@@ -28,10 +29,12 @@ import * as i6 from "@angular/common";
28
29
  * {% endmeta %}
29
30
  */
30
31
  export class ToolbarNavigationComponent {
31
- constructor(popupService, toolbarService, localization, cd) {
32
+ constructor(popupService, toolbarService, localization, cd, viewContext) {
32
33
  this.popupService = popupService;
33
34
  this.toolbarService = toolbarService;
34
35
  this.localization = localization;
36
+ this.cd = cd;
37
+ this.viewContext = viewContext;
35
38
  /**
36
39
  * @hidden
37
40
  * TODO: Drop in next MAJOR version
@@ -47,6 +50,10 @@ export class ToolbarNavigationComponent {
47
50
  * TODO: Drop in next MAJOR version
48
51
  */
49
52
  this.inlineGapStyle = 'inherit';
53
+ /**
54
+ * @hidden
55
+ */
56
+ this.dateRangeText = { short: '', long: '', current: '' };
50
57
  this.subs = this.localization.changes.subscribe(() => {
51
58
  cd.markForCheck();
52
59
  });
@@ -92,6 +99,16 @@ export class ToolbarNavigationComponent {
92
99
  onBlur() {
93
100
  this.closePopup();
94
101
  }
102
+ ngOnInit() {
103
+ this.subs.add(this.ctx.dateRange.subscribe(res => {
104
+ this.dateRangeText.short = res === null || res === void 0 ? void 0 : res.shortText;
105
+ this.dateRangeText.long = res === null || res === void 0 ? void 0 : res.text;
106
+ this.setDateRangeText();
107
+ }));
108
+ this.subs.add(this.viewContext.resize.subscribe(() => {
109
+ this.setDateRangeText();
110
+ }));
111
+ }
95
112
  ngOnDestroy() {
96
113
  this.subs.unsubscribe();
97
114
  this.closePopup();
@@ -158,8 +175,13 @@ export class ToolbarNavigationComponent {
158
175
  this.popupRef = null;
159
176
  }
160
177
  }
178
+ setDateRangeText() {
179
+ const isDesktop = window.matchMedia('(min-width: 1024px)').matches;
180
+ this.dateRangeText.current = isDesktop ? this.dateRangeText.long : this.dateRangeText.short;
181
+ this.cd.detectChanges();
182
+ }
161
183
  }
162
- ToolbarNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToolbarNavigationComponent, deps: [{ token: i1.PopupService }, { token: i2.ToolbarService }, { token: i3.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
184
+ ToolbarNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToolbarNavigationComponent, deps: [{ token: i1.PopupService }, { token: i2.ToolbarService }, { token: i3.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i4.ViewContextService }], target: i0.ɵɵFactoryTarget.Component });
163
185
  ToolbarNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ToolbarNavigationComponent, selector: "[kendoSchedulerToolbarNavigation]", inputs: { min: "min", max: "max" }, host: { properties: { "style.display": "this.inlineDisplayStyle", "style.flex-flow": "this.inlineFlexFlowStyle", "style.gap": "this.inlineGapStyle" } }, providers: [
164
186
  PopupService
165
187
  ], viewQueries: [{ propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true }], ngImport: i0, template: `
@@ -190,18 +212,19 @@ ToolbarNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
190
212
  </button>
191
213
  </span>
192
214
 
193
- <a #anchor
215
+ <button
216
+ #anchor
217
+ kendoButton
218
+ icon="calendar"
219
+ fillMode="flat"
194
220
  (click)="toggleSelectedDate({ nativeElement: anchor }, template)"
195
221
  role="button"
196
- href="#"
197
222
  class="k-nav-current"
198
223
  tabindex="-1"
199
224
  [attr.aria-live]="'polite'"
200
225
  >
201
- <span class="k-icon k-i-calendar"></span>
202
- <span class="k-sm-date-format">{{ (ctx.dateRange | async)?.shortText }}</span>
203
- <span class="k-lg-date-format">{{ (ctx.dateRange | async)?.text }}</span>
204
- </a>
226
+ <span>{{ dateRangeText?.current }}</span>
227
+ </button>
205
228
 
206
229
  <ng-template #template>
207
230
  <kendo-calendar #calendar (blur)="onBlur()" (valueChange)="selectDate($event)" [value]="ctx.selectedDate | async" [min]="min" [max]="max">
@@ -209,7 +232,7 @@ ToolbarNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
209
232
  </kendo-calendar-messages>
210
233
  </kendo-calendar>
211
234
  </ng-template>
212
- `, isInline: true, components: [{ type: i4.CalendarComponent, selector: "kendo-calendar", inputs: ["id", "focusedDate", "min", "max", "rangeValidation", "selection", "value", "disabled", "tabindex", "tabIndex", "disabledDates", "navigation", "activeView", "bottomView", "topView", "type", "animateNavigation", "weekNumber", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate"], outputs: ["activeViewChange", "navigate", "activeViewDateChange", "valueChange"], exportAs: ["kendo-calendar"] }, { type: i4.CalendarCustomMessagesComponent, selector: "kendo-calendar-messages" }], directives: [{ type: i5.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], pipes: { "async": i6.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
235
+ `, isInline: true, components: [{ type: i5.CalendarComponent, selector: "kendo-calendar", inputs: ["id", "focusedDate", "min", "max", "rangeValidation", "selection", "value", "disabled", "tabindex", "tabIndex", "disabledDates", "navigation", "activeView", "bottomView", "topView", "type", "animateNavigation", "weekNumber", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate"], outputs: ["activeViewChange", "navigate", "activeViewDateChange", "valueChange"], exportAs: ["kendo-calendar"] }, { type: i5.CalendarCustomMessagesComponent, selector: "kendo-calendar-messages" }], directives: [{ type: i6.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], pipes: { "async": i7.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
213
236
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToolbarNavigationComponent, decorators: [{
214
237
  type: Component,
215
238
  args: [{
@@ -247,18 +270,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
247
270
  </button>
248
271
  </span>
249
272
 
250
- <a #anchor
273
+ <button
274
+ #anchor
275
+ kendoButton
276
+ icon="calendar"
277
+ fillMode="flat"
251
278
  (click)="toggleSelectedDate({ nativeElement: anchor }, template)"
252
279
  role="button"
253
- href="#"
254
280
  class="k-nav-current"
255
281
  tabindex="-1"
256
282
  [attr.aria-live]="'polite'"
257
283
  >
258
- <span class="k-icon k-i-calendar"></span>
259
- <span class="k-sm-date-format">{{ (ctx.dateRange | async)?.shortText }}</span>
260
- <span class="k-lg-date-format">{{ (ctx.dateRange | async)?.text }}</span>
261
- </a>
284
+ <span>{{ dateRangeText?.current }}</span>
285
+ </button>
262
286
 
263
287
  <ng-template #template>
264
288
  <kendo-calendar #calendar (blur)="onBlur()" (valueChange)="selectDate($event)" [value]="ctx.selectedDate | async" [min]="min" [max]="max">
@@ -268,7 +292,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
268
292
  </ng-template>
269
293
  `
270
294
  }]
271
- }], ctorParameters: function () { return [{ type: i1.PopupService }, { type: i2.ToolbarService }, { type: i3.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { calendar: [{
295
+ }], ctorParameters: function () { return [{ type: i1.PopupService }, { type: i2.ToolbarService }, { type: i3.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i4.ViewContextService }]; }, propDecorators: { calendar: [{
272
296
  type: ViewChild,
273
297
  args: ['calendar', { static: false }]
274
298
  }], inlineDisplayStyle: [{
@@ -26,10 +26,12 @@ export class ViewFooterComponent {
26
26
  }
27
27
  ViewFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ViewFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28
28
  ViewFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ViewFooterComponent, selector: "[viewFooter]", inputs: { items: "items" }, outputs: { itemClick: "itemClick" }, host: { properties: { "class.k-scheduler-footer": "this.hostClasses", "class.k-toolbar": "this.hostClasses", "style.justify-content": "this.inlineJustifyContentStyle" } }, ngImport: i0, template: `
29
- <button type="button" kendoButton *ngFor="let item of items" [ngClass]="item.cssClass" (click)="onItemClick($event, item)">
30
- <span class="k-button-icon k-icon" [ngClass]="item.iconClass"></span>
31
- <span class="k-button-text">{{ item.text }}</span>
32
- </button>
29
+ <span class="k-scheduler-navigation">
30
+ <button type="button" kendoButton *ngFor="let item of items" [ngClass]="item.cssClass" (click)="onItemClick($event, item)">
31
+ <span class="k-button-icon k-icon" [ngClass]="item.iconClass"></span>
32
+ <span class="k-button-text">{{ item.text }}</span>
33
+ </button>
34
+ </span>
33
35
  `, isInline: true, directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
34
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ViewFooterComponent, decorators: [{
35
37
  type: Component,
@@ -37,10 +39,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
37
39
  // eslint-disable-next-line @angular-eslint/component-selector
38
40
  selector: '[viewFooter]',
39
41
  template: `
40
- <button type="button" kendoButton *ngFor="let item of items" [ngClass]="item.cssClass" (click)="onItemClick($event, item)">
41
- <span class="k-button-icon k-icon" [ngClass]="item.iconClass"></span>
42
- <span class="k-button-text">{{ item.text }}</span>
43
- </button>
42
+ <span class="k-scheduler-navigation">
43
+ <button type="button" kendoButton *ngFor="let item of items" [ngClass]="item.cssClass" (click)="onItemClick($event, item)">
44
+ <span class="k-button-icon k-icon" [ngClass]="item.iconClass"></span>
45
+ <span class="k-button-text">{{ item.text }}</span>
46
+ </button>
47
+ </span>
44
48
  `
45
49
  }]
46
50
  }], propDecorators: { hostClasses: [{
@@ -22,6 +22,9 @@ export class MonthViewItemComponent extends BaseViewItem {
22
22
  this.toggle(false);
23
23
  return;
24
24
  }
25
+ else {
26
+ this.toggle(true);
27
+ }
25
28
  super.reflow();
26
29
  }
27
30
  }
@@ -276,7 +276,7 @@ MonthViewRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
276
276
  </ng-container>
277
277
  </table>
278
278
  </div>
279
- <div class="k-scheduler-content" #content>
279
+ <div class="k-scheduler-content" tabindex="0" #content>
280
280
  <table class="k-scheduler-table k-user-select-none" #contentTable role="presentation">
281
281
  <ng-container *ngFor="let resourceItem of verticalResources | resourceIterator; let verticalIndex = index; trackBy: itemIndex">
282
282
  <tr *ngFor="let week of weeks; let rangeIndex = index; trackBy: itemIndex">
@@ -404,7 +404,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
404
404
  </ng-container>
405
405
  </table>
406
406
  </div>
407
- <div class="k-scheduler-content" #content>
407
+ <div class="k-scheduler-content" tabindex="0" #content>
408
408
  <table class="k-scheduler-table k-user-select-none" #contentTable role="presentation">
409
409
  <ng-container *ngFor="let resourceItem of verticalResources | resourceIterator; let verticalIndex = index; trackBy: itemIndex">
410
410
  <tr *ngFor="let week of weeks; let rangeIndex = index; trackBy: itemIndex">
@@ -78,8 +78,7 @@ export class BaseViewItem {
78
78
  right: this.localization.rtl ? `${rect.left}px` : '',
79
79
  top: `${rect.top}px`,
80
80
  width: `${rect.width}px`,
81
- height: `${rect.height}px`,
82
- display: 'block'
81
+ height: `${rect.height}px`
83
82
  });
84
83
  }
85
84
  }
@@ -90,7 +89,6 @@ export class BaseViewItem {
90
89
  this.subs.add(this.slotService.slotsChange.subscribe(() => {
91
90
  this.rect = null;
92
91
  this.setStyles({
93
- display: 'none',
94
92
  width: 0,
95
93
  left: 0
96
94
  });