@progress/kendo-angular-scheduler 24.0.0-develop.9 → 24.0.0

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.
@@ -7,7 +7,7 @@ import { Optional, Directive, Injectable, EventEmitter, Input, Inject, isDevMode
7
7
  import * as i1$1 from '@progress/kendo-angular-l10n';
8
8
  import { LocalizationService, L10N_PREFIX, RTL, ComponentMessages } from '@progress/kendo-angular-l10n';
9
9
  import * as i7 from '@progress/kendo-angular-common';
10
- import { getter, setter, hasObservers, isDocumentAvailable, isVisible as isVisible$1, scrollbarWidth, isChanged, Keys, ResizeSensorComponent, getLicenseMessage, shouldShowValidationUI, anyChanged, WatermarkOverlayComponent, guid, normalizeKeys, ResizeBatchService } from '@progress/kendo-angular-common';
10
+ import { getter, setter, hasObservers, isDocumentAvailable, isVisible as isVisible$1, scrollbarWidth, isChanged, Keys, ResizeSensorComponent, getLicenseMessage, shouldShowValidationUI, anyChanged, WatermarkOverlayComponent, KENDO_WEBMCP_HOST, guid, normalizeKeys, ResizeBatchService } from '@progress/kendo-angular-common';
11
11
  import { isEqualDate, ZonedDate, toLocalDate, getDate, timezoneNames, Day, MS_PER_DAY as MS_PER_DAY$1, addDays, firstDayOfMonth, lastDayOfMonth, firstDayInWeek, addMonths, addWeeks, addYears } from '@progress/kendo-date-math';
12
12
  import { auditTime, buffer, filter, map, debounceTime, take, distinctUntilChanged, switchMap, tap } from 'rxjs/operators';
13
13
  import { validatePackage } from '@progress/kendo-licensing';
@@ -20,8 +20,8 @@ import * as i4 from '@progress/kendo-angular-intl';
20
20
  import { formatDate, CldrIntlService, DatePipe, parseDate } from '@progress/kendo-angular-intl';
21
21
  import { MultiSelectComponent, ItemTemplateDirective, TagTemplateDirective, DropDownListComponent, ComboBoxComponent } from '@progress/kendo-angular-dropdowns';
22
22
  import { NgStyle, NgTemplateOutlet, AsyncPipe, NgClass } from '@angular/common';
23
- import { saveIcon, cancelOutlineIcon, calendarIcon, caretAltRightIcon, caretAltLeftIcon, filePdfIcon, arrowRotateCwIcon, arrowsNoRepeatIcon, xIcon, moreHorizontalIcon, clockIcon, caretAltUpIcon, caretAltDownIcon } from '@progress/kendo-svg-icons';
24
- import { ButtonGroupComponent, ButtonComponent, Button } from '@progress/kendo-angular-buttons';
23
+ import { saveIcon, cancelIcon, calendarIcon, chevronRightIcon, chevronLeftIcon, filePdfIcon, arrowRotateCwIcon, arrowsNoRepeatIcon, xIcon, moreHorizontalIcon, clockIcon, chevronUpIcon, chevronDownIcon } from '@progress/kendo-svg-icons';
24
+ import { ButtonGroupComponent, ButtonComponent, Button, SegmentedControlComponent } from '@progress/kendo-angular-buttons';
25
25
  import { NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, FormFieldComponent, TextBoxDirective, CheckBoxDirective, TextAreaDirective } from '@progress/kendo-angular-inputs';
26
26
  import { parseRule, serializeRule, expand } from '@progress/kendo-recurrence';
27
27
  import { DatePickerComponent, DatePickerCustomMessagesComponent, DateTimePickerComponent, DateTimePickerCustomMessagesComponent, CalendarComponent, CalendarCustomMessagesComponent, MultiViewCalendarComponent, MonthCellTemplateDirective, CalendarDOMService, CenturyViewService, DecadeViewService, MonthViewService, YearViewService, NavigationService, TimePickerDOMService, HoursService, MinutesService, SecondsService, MillisecondsService, DayPeriodService } from '@progress/kendo-angular-dateinputs';
@@ -43,8 +43,8 @@ const packageMetadata = {
43
43
  productName: 'Kendo UI for Angular',
44
44
  productCode: 'KENDOUIANGULAR',
45
45
  productCodes: ['KENDOUIANGULAR'],
46
- publishDate: 1777365410,
47
- version: '24.0.0-develop.9',
46
+ publishDate: 1779273547,
47
+ version: '24.0.0',
48
48
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
49
49
  };
50
50
 
@@ -2323,24 +2323,9 @@ class PDFExportEvent extends PreventableEvent {
2323
2323
  * @hidden
2324
2324
  */
2325
2325
  class LoadingComponent {
2326
- element;
2327
- renderer;
2328
2326
  hostClasses = true;
2329
- loading;
2330
- get display() {
2331
- return this.loading || this.force ? 'block' : 'none';
2332
- }
2333
- force;
2334
- constructor(element, renderer) {
2335
- this.element = element;
2336
- this.renderer = renderer;
2337
- }
2338
- toggle(value) {
2339
- this.force = value;
2340
- this.renderer.setStyle(this.element.nativeElement, 'display', this.display);
2341
- }
2342
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: LoadingComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
2343
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: LoadingComponent, isStandalone: true, selector: "[kendoSchedulerLoading]", inputs: { loading: "loading" }, host: { properties: { "class.k-loading-mask": "this.hostClasses", "style.display": "this.display" } }, ngImport: i0, template: `
2327
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: LoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2328
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: LoadingComponent, isStandalone: true, selector: "[kendoSchedulerLoading]", host: { properties: { "class.k-loading-mask": "this.hostClasses" } }, ngImport: i0, template: `
2344
2329
  <div class="k-loading-image"></div>
2345
2330
  <div class="k-loading-color"></div>
2346
2331
  `, isInline: true });
@@ -2355,14 +2340,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
2355
2340
  `,
2356
2341
  standalone: true
2357
2342
  }]
2358
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { hostClasses: [{
2343
+ }], propDecorators: { hostClasses: [{
2359
2344
  type: HostBinding,
2360
2345
  args: ['class.k-loading-mask']
2361
- }], loading: [{
2362
- type: Input
2363
- }], display: [{
2364
- type: HostBinding,
2365
- args: ['style.display']
2366
2346
  }] } });
2367
2347
 
2368
2348
  /**
@@ -2420,7 +2400,7 @@ class FocusableDirective {
2420
2400
  }
2421
2401
  toggleFocus(value) {
2422
2402
  const element = this.element.nativeElement;
2423
- const isFooterButton = element.matches('.k-scheduler-navigation .k-button');
2403
+ const isFooterButton = element.matches('[viewfooter] .k-button');
2424
2404
  const focusedClass = element.matches('.k-button-group .k-button') || isFooterButton ? 'k-focus' : 'k-selected';
2425
2405
  const schedulerElement = element.closest('.k-scheduler');
2426
2406
  const renderedEvents = schedulerElement ? schedulerElement.querySelectorAll('.k-event') : [];
@@ -2580,6 +2560,20 @@ const intersects = (startTime, endTime, periodStart, periodEnd) => (startTime <
2580
2560
  /** @hidden */
2581
2561
  const dateInRange = (date, start, end) => start.getTime() <= date.getTime() && date.getTime() <= end.getTime();
2582
2562
  /** @hidden */
2563
+ const getVerticalPaddingAndBorder = (element) => {
2564
+ if (!isDocumentAvailable() || !element) {
2565
+ return 0;
2566
+ }
2567
+ const styles = getComputedStyle(element);
2568
+ const values = [
2569
+ parseFloat(styles.paddingTop || '0'),
2570
+ parseFloat(styles.paddingBottom || '0'),
2571
+ parseFloat(styles.borderTopWidth || '0'),
2572
+ parseFloat(styles.borderBottomWidth || '0')
2573
+ ];
2574
+ return values.reduce((total, value) => total + (Number.isFinite(value) ? value : 0), 0);
2575
+ };
2576
+ /** @hidden */
2583
2577
  const roundAllDayEnd = ({ start, end }) => {
2584
2578
  const startDate = start.stripTime();
2585
2579
  const endDate = end.stripTime();
@@ -4468,7 +4462,7 @@ class RecurrenceWeekdayRuleEditorComponent {
4468
4462
  </kendo-buttongroup>
4469
4463
  </div>
4470
4464
  </div>
4471
- `, isInline: true, dependencies: [{ kind: "component", type: LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "component", type: ButtonGroupComponent, selector: "kendo-buttongroup", inputs: ["disabled", "selection", "width", "tabIndex", "navigable"], outputs: ["navigate"], exportAs: ["kendoButtonGroup"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
4465
+ `, isInline: true, dependencies: [{ kind: "component", type: LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "component", type: ButtonGroupComponent, selector: "kendo-buttongroup", inputs: ["disabled", "selection", "width", "tabIndex", "navigable"], outputs: ["navigate"], exportAs: ["kendoButtonGroup"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
4472
4466
  }
4473
4467
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RecurrenceWeekdayRuleEditorComponent, decorators: [{
4474
4468
  type: Component,
@@ -4728,7 +4722,7 @@ class RecurrenceFrequencyEditorComponent {
4728
4722
  </kendo-buttongroup>
4729
4723
  </div>
4730
4724
  </div>
4731
- `, isInline: true, dependencies: [{ kind: "component", type: LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "component", type: ButtonGroupComponent, selector: "kendo-buttongroup", inputs: ["disabled", "selection", "width", "tabIndex", "navigable"], outputs: ["navigate"], exportAs: ["kendoButtonGroup"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
4725
+ `, isInline: true, dependencies: [{ kind: "component", type: LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "component", type: ButtonGroupComponent, selector: "kendo-buttongroup", inputs: ["disabled", "selection", "width", "tabIndex", "navigable"], outputs: ["navigate"], exportAs: ["kendoButtonGroup"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
4732
4726
  }
4733
4727
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RecurrenceFrequencyEditorComponent, decorators: [{
4734
4728
  type: Component,
@@ -5911,7 +5905,7 @@ class EditDialogComponent {
5911
5905
  editedEvent;
5912
5906
  isNew;
5913
5907
  saveIcon = saveIcon;
5914
- cancelIcon = cancelOutlineIcon;
5908
+ cancelIcon = cancelIcon;
5915
5909
  subs;
5916
5910
  pendingNewEventData;
5917
5911
  constructor(ngZone, editService, localization, changeDetector, element, focusService, intl) {
@@ -6303,14 +6297,14 @@ class EditDialogComponent {
6303
6297
  >{{ textFor('save') }}</button>
6304
6298
  <button
6305
6299
  kendoButton
6306
- icon="cancel-outline"
6300
+ icon="cancel"
6307
6301
  [svgIcon]="cancelIcon"
6308
6302
  (click)="onCancel($event)"
6309
6303
  >{{ textFor('cancel') }}</button>
6310
6304
  </kendo-dialog-actions>
6311
6305
  </kendo-dialog>
6312
6306
  }
6313
- `, isInline: true, dependencies: [{ kind: "component", type: DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "closable", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormFieldComponent, selector: "kendo-formfield", inputs: ["showHints", "orientation", "showErrors", "colSpan"] }, { kind: "component", type: LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "directive", type: TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { kind: "component", type: SchedulerDateTimePickerComponent, selector: "kendo-scheduler-datetime-picker", inputs: ["isAllDay"], outputs: ["valueChange"] }, { kind: "directive", type: CheckBoxDirective, selector: "input[kendoCheckBox]", inputs: ["size", "rounded"] }, { kind: "directive", type: LabelDirective, selector: "label[for]", inputs: ["for", "labelClass"] }, { kind: "component", type: TimeZoneEditorComponent, selector: "kendo-timezone-editor", inputs: ["width"], outputs: ["valueChange"] }, { kind: "component", type: RecurrenceEditorComponent, selector: "kendo-recurrence-editor", inputs: ["start", "timezone", "weekStart", "repeatEveryOptions", "endAfterOptions", "repeatOnOptions", "endOnOptions"], outputs: ["valueChange"], exportAs: ["kendoRecurrenceEditor"] }, { kind: "directive", type: TextAreaDirective, selector: "textarea[kendoTextArea]", inputs: ["autoSize", "value"], outputs: ["valueChange"] }, { kind: "component", type: MultipleResourceEditorComponent, selector: "kendo-multiple-resource-editor" }, { kind: "component", type: SingleResourceEditorComponent, selector: "kendo-single-resource-editor" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
6307
+ `, isInline: true, dependencies: [{ kind: "component", type: DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "closable", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormFieldComponent, selector: "kendo-formfield", inputs: ["showHints", "orientation", "showErrors", "colSpan"] }, { kind: "component", type: LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "directive", type: TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { kind: "component", type: SchedulerDateTimePickerComponent, selector: "kendo-scheduler-datetime-picker", inputs: ["isAllDay"], outputs: ["valueChange"] }, { kind: "directive", type: CheckBoxDirective, selector: "input[kendoCheckBox]", inputs: ["size", "rounded"] }, { kind: "directive", type: LabelDirective, selector: "label[for]", inputs: ["for", "labelClass"] }, { kind: "component", type: TimeZoneEditorComponent, selector: "kendo-timezone-editor", inputs: ["width"], outputs: ["valueChange"] }, { kind: "component", type: RecurrenceEditorComponent, selector: "kendo-recurrence-editor", inputs: ["start", "timezone", "weekStart", "repeatEveryOptions", "endAfterOptions", "repeatOnOptions", "endOnOptions"], outputs: ["valueChange"], exportAs: ["kendoRecurrenceEditor"] }, { kind: "directive", type: TextAreaDirective, selector: "textarea[kendoTextArea]", inputs: ["autoSize", "value"], outputs: ["valueChange"] }, { kind: "component", type: MultipleResourceEditorComponent, selector: "kendo-multiple-resource-editor" }, { kind: "component", type: SingleResourceEditorComponent, selector: "kendo-single-resource-editor" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
6314
6308
  }
6315
6309
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: EditDialogComponent, decorators: [{
6316
6310
  type: Component,
@@ -6507,7 +6501,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
6507
6501
  >{{ textFor('save') }}</button>
6508
6502
  <button
6509
6503
  kendoButton
6510
- icon="cancel-outline"
6504
+ icon="cancel"
6511
6505
  [svgIcon]="cancelIcon"
6512
6506
  (click)="onCancel($event)"
6513
6507
  >{{ textFor('cancel') }}</button>
@@ -6537,6 +6531,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
6537
6531
  type: Input
6538
6532
  }] } });
6539
6533
 
6534
+ const EMPTY_VIEWS = [];
6540
6535
  /**
6541
6536
  * A toolbar component that contains controls for switching views
6542
6537
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/scheduler/toolbar#including-the-built-in-components)).
@@ -6577,7 +6572,26 @@ class ToolbarViewSelectorComponent {
6577
6572
  get selectView() {
6578
6573
  return this.localization.get('selectView');
6579
6574
  }
6575
+ /**
6576
+ * @hidden
6577
+ */
6578
+ get viewItems() {
6579
+ const views = Array.from(this.ctx.views ?? EMPTY_VIEWS);
6580
+ if (!this.areSameViews(views) || this.cachedViewItems === null) {
6581
+ this.cachedViews = views;
6582
+ this.cachedViewItems = views.map(view => ({ text: view.title }));
6583
+ }
6584
+ return this.cachedViewItems;
6585
+ }
6586
+ /**
6587
+ * @hidden
6588
+ */
6589
+ get selectedViewIndex() {
6590
+ return Array.from(this.ctx.views ?? EMPTY_VIEWS).indexOf(this.ctx.selectedView);
6591
+ }
6580
6592
  detachDomEvents;
6593
+ cachedViews = null;
6594
+ cachedViewItems = null;
6581
6595
  constructor(service, localization) {
6582
6596
  this.service = service;
6583
6597
  this.localization = localization;
@@ -6598,11 +6612,20 @@ class ToolbarViewSelectorComponent {
6598
6612
  });
6599
6613
  }
6600
6614
  }
6615
+ /**
6616
+ * @hidden
6617
+ */
6618
+ onViewChange(index) {
6619
+ const view = Array.from(this.ctx.views ?? EMPTY_VIEWS)[index];
6620
+ if (view) {
6621
+ this.select(view);
6622
+ }
6623
+ }
6601
6624
  /**
6602
6625
  * @hidden
6603
6626
  */
6604
6627
  onChange(e) {
6605
- const view = this.ctx.views.find(view => view.name === e.target.value);
6628
+ const view = Array.from(this.ctx.views ?? EMPTY_VIEWS).find(view => view.name === e.target.value);
6606
6629
  if (view) {
6607
6630
  this.select(view);
6608
6631
  }
@@ -6613,6 +6636,15 @@ class ToolbarViewSelectorComponent {
6613
6636
  isSelected(view) {
6614
6637
  return this.ctx.selectedView === view;
6615
6638
  }
6639
+ areSameViews(views) {
6640
+ if (this.cachedViews === views) {
6641
+ return true;
6642
+ }
6643
+ if (this.cachedViews?.length !== views.length) {
6644
+ return false;
6645
+ }
6646
+ return this.cachedViews.every((view, index) => view === views[index]);
6647
+ }
6616
6648
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ToolbarViewSelectorComponent, deps: [{ token: ToolbarService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
6617
6649
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ToolbarViewSelectorComponent, isStandalone: true, selector: "[kendoSchedulerToolbarViewSelector]", inputs: { toolbarWidth: "toolbarWidth", responsiveBreakpoint: "responsiveBreakpoint" }, ngImport: i0, template: `
6618
6650
  @if (ctx.views?.length > 1 && toolbarWidth <= responsiveBreakpoint) {
@@ -6633,26 +6665,16 @@ class ToolbarViewSelectorComponent {
6633
6665
  </select>
6634
6666
  }
6635
6667
  @if (toolbarWidth > responsiveBreakpoint) {
6636
- <span
6637
- class="k-toolbar-button-group k-scheduler-views k-button-group"
6638
- role="group"
6639
- >
6640
- @for (view of ctx.views; track view) {
6641
- <button kendoButton
6642
- type="button"
6643
- [selected]="isSelected(view)"
6644
- [attr.aria-pressed]="isSelected(view)"
6645
- (click)="select(view)"
6646
- [kendoSchedulerFocusIndex]="0"
6647
- containerType="toolbar">
6648
- <span class="k-button-text">
6649
- {{ view.title }}
6650
- </span>
6651
- </button>
6652
- }
6653
- </span>
6668
+ <kendo-segmented-control
6669
+ class="k-scheduler-views"
6670
+ [items]="viewItems"
6671
+ [selected]="selectedViewIndex"
6672
+ (selectedChange)="onViewChange($event)"
6673
+ [kendoSchedulerFocusIndex]="0"
6674
+ containerType="toolbar">
6675
+ </kendo-segmented-control>
6654
6676
  }
6655
- `, isInline: true, dependencies: [{ kind: "directive", type: FocusableDirective, selector: "[kendoSchedulerFocusIndex]", inputs: ["kendoSchedulerFocusIndex", "containerType"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
6677
+ `, isInline: true, dependencies: [{ kind: "directive", type: FocusableDirective, selector: "[kendoSchedulerFocusIndex]", inputs: ["kendoSchedulerFocusIndex", "containerType"] }, { kind: "component", type: SegmentedControlComponent, selector: "kendo-segmented-control", inputs: ["items", "layoutMode", "size", "selected"], outputs: ["selectedChange"] }] });
6656
6678
  }
6657
6679
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ToolbarViewSelectorComponent, decorators: [{
6658
6680
  type: Component,
@@ -6677,28 +6699,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
6677
6699
  </select>
6678
6700
  }
6679
6701
  @if (toolbarWidth > responsiveBreakpoint) {
6680
- <span
6681
- class="k-toolbar-button-group k-scheduler-views k-button-group"
6682
- role="group"
6683
- >
6684
- @for (view of ctx.views; track view) {
6685
- <button kendoButton
6686
- type="button"
6687
- [selected]="isSelected(view)"
6688
- [attr.aria-pressed]="isSelected(view)"
6689
- (click)="select(view)"
6690
- [kendoSchedulerFocusIndex]="0"
6691
- containerType="toolbar">
6692
- <span class="k-button-text">
6693
- {{ view.title }}
6694
- </span>
6695
- </button>
6696
- }
6697
- </span>
6702
+ <kendo-segmented-control
6703
+ class="k-scheduler-views"
6704
+ [items]="viewItems"
6705
+ [selected]="selectedViewIndex"
6706
+ (selectedChange)="onViewChange($event)"
6707
+ [kendoSchedulerFocusIndex]="0"
6708
+ containerType="toolbar">
6709
+ </kendo-segmented-control>
6698
6710
  }
6699
6711
  `,
6700
6712
  standalone: true,
6701
- imports: [FocusableDirective, ButtonComponent]
6713
+ imports: [FocusableDirective, SegmentedControlComponent]
6702
6714
  }]
6703
6715
  }], ctorParameters: () => [{ type: ToolbarService }, { type: i1$1.LocalizationService }], propDecorators: { toolbarWidth: [{
6704
6716
  type: Input
@@ -6706,7 +6718,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
6706
6718
  type: Input
6707
6719
  }] } });
6708
6720
 
6709
- const iconsMap = { caretAltLeftIcon, caretAltRightIcon, calendarIcon };
6721
+ const iconsMap = { chevronLeftIcon, chevronRightIcon, calendarIcon };
6710
6722
  /**
6711
6723
  * A toolbar component that contains controls for date navigation
6712
6724
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/scheduler/toolbar#including-the-built-in-components)).
@@ -6735,7 +6747,6 @@ class ToolbarNavigationComponent {
6735
6747
  calendar.focus();
6736
6748
  }
6737
6749
  }
6738
- hostClass = true;
6739
6750
  /**
6740
6751
  * @hidden
6741
6752
  */
@@ -6909,19 +6920,19 @@ class ToolbarNavigationComponent {
6909
6920
  this.cd.detectChanges();
6910
6921
  }
6911
6922
  get arrowIcons() {
6912
- return !this.localization.rtl ? ['caret-alt-left', 'caret-alt-right'] : ['caret-alt-right', 'caret-alt-left'];
6923
+ return !this.localization.rtl ? ['chevron-left', 'chevron-right'] : ['chevron-right', 'chevron-left'];
6913
6924
  }
6914
6925
  get arrowSVGIcons() {
6915
- return !this.localization.rtl ? ['caretAltLeftIcon', 'caretAltRightIcon'] : ['caretAltRightIcon', 'caretAltLeftIcon'];
6926
+ return !this.localization.rtl ? ['chevronLeftIcon', 'chevronRightIcon'] : ['chevronRightIcon', 'chevronLeftIcon'];
6916
6927
  }
6917
6928
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ToolbarNavigationComponent, deps: [{ token: i1$2.PopupService }, { token: ToolbarService }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: ViewContextService }], target: i0.ɵɵFactoryTarget.Component });
6918
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: ToolbarNavigationComponent, isStandalone: true, selector: "[kendoSchedulerToolbarNavigation]", inputs: { min: "min", max: "max", activeView: "activeView", bottomView: "bottomView" }, host: { properties: { "class.k-toolbar-group": "this.hostClass" } }, providers: [
6929
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: ToolbarNavigationComponent, isStandalone: true, selector: "[kendoSchedulerToolbarNavigation]", inputs: { min: "min", max: "max", activeView: "activeView", bottomView: "bottomView" }, providers: [
6919
6930
  PopupService
6920
6931
  ], viewQueries: [{ propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true }], ngImport: i0, template: `
6921
- <span class="k-scheduler-navigation k-button-group" role="group">
6932
+ <span class="k-button-group k-toolbar-button-group k-scheduler-navigation" role="group">
6922
6933
  <button kendoButton
6934
+ class="k-group-start"
6923
6935
  (click)="todayClick()"
6924
- class="k-nav-today"
6925
6936
  [attr.title]="todayText"
6926
6937
  [kendoSchedulerFocusIndex]="0"
6927
6938
  containerType="toolbar">
@@ -6929,7 +6940,6 @@ class ToolbarNavigationComponent {
6929
6940
  </button>
6930
6941
  <button kendoButton
6931
6942
  (click)="prevClick()"
6932
- class="k-nav-prev"
6933
6943
  [icon]="arrowIcons[0]"
6934
6944
  [svgIcon]="svgIcon(arrowSVGIcons[0])"
6935
6945
  [attr.title]="previousText"
@@ -6938,9 +6948,9 @@ class ToolbarNavigationComponent {
6938
6948
  containerType="toolbar">
6939
6949
  </button>
6940
6950
  <button kendoButton
6951
+ class="k-group-end"
6941
6952
  (click)="nextClick()"
6942
6953
  type="button"
6943
- class="k-nav-next"
6944
6954
  [icon]="arrowIcons[1]"
6945
6955
  [svgIcon]="svgIcon(arrowSVGIcons[1])"
6946
6956
  [attr.title]="nextText"
@@ -6962,7 +6972,7 @@ class ToolbarNavigationComponent {
6962
6972
  (keydown.enter)="toggleSelectedDate({ nativeElement: anchor.element }, template)"
6963
6973
  (keydown.alt.arrowdown)="toggleSelectedDate({ nativeElement: anchor.element }, template)"
6964
6974
  role="button"
6965
- class="k-nav-current"
6975
+ class="k-nav-current k-toolbar-button"
6966
6976
  [attr.aria-live]="'polite'"
6967
6977
  [kendoSchedulerFocusIndex]="0"
6968
6978
  containerType="toolbar">
@@ -6982,7 +6992,7 @@ class ToolbarNavigationComponent {
6982
6992
  </kendo-calendar-messages>
6983
6993
  </kendo-calendar>
6984
6994
  </ng-template>
6985
- `, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: FocusableDirective, selector: "[kendoSchedulerFocusIndex]", inputs: ["kendoSchedulerFocusIndex", "containerType"] }, { kind: "component", type: CalendarComponent, selector: "kendo-calendar", inputs: ["showOtherMonthDays", "id", "focusedDate", "min", "max", "rangeValidation", "weekDaysFormat", "footer", "selection", "allowReverse", "value", "disabled", "tabindex", "tabIndex", "disabledDates", "navigation", "activeView", "bottomView", "topView", "type", "animateNavigation", "weekNumber", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "headerTemplate", "footerTemplate", "navigationItemTemplate", "size", "activeRangeEnd"], outputs: ["closePopup", "activeViewChange", "navigate", "activeViewDateChange", "blur", "focus", "valueChange"], exportAs: ["kendo-calendar"] }, { kind: "component", type: CalendarCustomMessagesComponent, selector: "kendo-calendar-messages" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6995
+ `, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: FocusableDirective, selector: "[kendoSchedulerFocusIndex]", inputs: ["kendoSchedulerFocusIndex", "containerType"] }, { kind: "component", type: CalendarComponent, selector: "kendo-calendar", inputs: ["showOtherMonthDays", "id", "focusedDate", "min", "max", "rangeValidation", "weekDaysFormat", "footer", "selection", "allowReverse", "value", "disabled", "tabindex", "tabIndex", "disabledDates", "navigation", "activeView", "bottomView", "topView", "type", "animateNavigation", "weekNumber", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "headerTemplate", "footerTemplate", "navigationItemTemplate", "size", "activeRangeEnd"], outputs: ["closePopup", "activeViewChange", "navigate", "activeViewDateChange", "blur", "focus", "valueChange"], exportAs: ["kendo-calendar"] }, { kind: "component", type: CalendarCustomMessagesComponent, selector: "kendo-calendar-messages" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6986
6996
  }
6987
6997
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ToolbarNavigationComponent, decorators: [{
6988
6998
  type: Component,
@@ -6993,10 +7003,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
6993
7003
  PopupService
6994
7004
  ],
6995
7005
  template: `
6996
- <span class="k-scheduler-navigation k-button-group" role="group">
7006
+ <span class="k-button-group k-toolbar-button-group k-scheduler-navigation" role="group">
6997
7007
  <button kendoButton
7008
+ class="k-group-start"
6998
7009
  (click)="todayClick()"
6999
- class="k-nav-today"
7000
7010
  [attr.title]="todayText"
7001
7011
  [kendoSchedulerFocusIndex]="0"
7002
7012
  containerType="toolbar">
@@ -7004,7 +7014,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
7004
7014
  </button>
7005
7015
  <button kendoButton
7006
7016
  (click)="prevClick()"
7007
- class="k-nav-prev"
7008
7017
  [icon]="arrowIcons[0]"
7009
7018
  [svgIcon]="svgIcon(arrowSVGIcons[0])"
7010
7019
  [attr.title]="previousText"
@@ -7013,9 +7022,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
7013
7022
  containerType="toolbar">
7014
7023
  </button>
7015
7024
  <button kendoButton
7025
+ class="k-group-end"
7016
7026
  (click)="nextClick()"
7017
7027
  type="button"
7018
- class="k-nav-next"
7019
7028
  [icon]="arrowIcons[1]"
7020
7029
  [svgIcon]="svgIcon(arrowSVGIcons[1])"
7021
7030
  [attr.title]="nextText"
@@ -7037,7 +7046,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
7037
7046
  (keydown.enter)="toggleSelectedDate({ nativeElement: anchor.element }, template)"
7038
7047
  (keydown.alt.arrowdown)="toggleSelectedDate({ nativeElement: anchor.element }, template)"
7039
7048
  role="button"
7040
- class="k-nav-current"
7049
+ class="k-nav-current k-toolbar-button"
7041
7050
  [attr.aria-live]="'polite'"
7042
7051
  [kendoSchedulerFocusIndex]="0"
7043
7052
  containerType="toolbar">
@@ -7064,9 +7073,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
7064
7073
  }], ctorParameters: () => [{ type: i1$2.PopupService }, { type: ToolbarService }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: ViewContextService }], propDecorators: { calendar: [{
7065
7074
  type: ViewChild,
7066
7075
  args: ['calendar', { static: false }]
7067
- }], hostClass: [{
7068
- type: HostBinding,
7069
- args: ['class.k-toolbar-group']
7070
7076
  }], min: [{
7071
7077
  type: Input
7072
7078
  }], max: [{
@@ -8268,10 +8274,6 @@ class SchedulerComponent {
8268
8274
  * @hidden
8269
8275
  */
8270
8276
  confirmationDialogContainerRef;
8271
- /**
8272
- * @hidden
8273
- */
8274
- loadingComponent;
8275
8277
  /**
8276
8278
  * @hidden
8277
8279
  */
@@ -8334,6 +8336,10 @@ class SchedulerComponent {
8334
8336
  get viewToolbar() {
8335
8337
  return this.viewState?.toolbarVisibilityByView.get(this.selectedView);
8336
8338
  }
8339
+ /**
8340
+ * @hidden
8341
+ */
8342
+ pdfLoading = false;
8337
8343
  direction;
8338
8344
  subs;
8339
8345
  viewIndex = 0;
@@ -8477,7 +8483,8 @@ class SchedulerComponent {
8477
8483
  }
8478
8484
  }));
8479
8485
  this.subs.add(this.pdfService.done.subscribe(() => {
8480
- this.loadingComponent.toggle(false);
8486
+ this.pdfLoading = false;
8487
+ this.changeDetector.markForCheck();
8481
8488
  }));
8482
8489
  this.subs.add(this.localization.changes.subscribe(({ rtl }) => {
8483
8490
  this.rtl = rtl;
@@ -8625,7 +8632,8 @@ class SchedulerComponent {
8625
8632
  * Saves the current view as PDF.
8626
8633
  */
8627
8634
  saveAsPDF() {
8628
- this.loadingComponent.toggle(true);
8635
+ this.pdfLoading = true;
8636
+ this.changeDetector.markForCheck();
8629
8637
  this.zone.runOutsideAngular(() => {
8630
8638
  // wait a tick in order for the loading element style to be updated by the browser.
8631
8639
  // if the export is synchronous, the browser will not update the element before the export is finished.
@@ -8902,11 +8910,15 @@ class SchedulerComponent {
8902
8910
  provide: L10N_PREFIX,
8903
8911
  useValue: 'kendo.scheduler'
8904
8912
  },
8913
+ {
8914
+ provide: KENDO_WEBMCP_HOST,
8915
+ useExisting: forwardRef(() => SchedulerComponent)
8916
+ },
8905
8917
  ToolbarService,
8906
8918
  ViewContextService,
8907
8919
  ViewStateService,
8908
- PDFService
8909
- ], queries: [{ propertyName: "editDialogTemplate", first: true, predicate: EditDialogTemplateDirective, descendants: true }, { propertyName: "toolbarTemplate", first: true, predicate: ToolbarTemplateDirective, descendants: true }, { propertyName: "views", predicate: SchedulerView }, { propertyName: "allDayEventTemplate", predicate: AllDayEventTemplateDirective }, { propertyName: "eventTemplate", predicate: EventTemplateDirective }, { propertyName: "timeSlotTemplate", predicate: TimeSlotTemplateDirective }, { propertyName: "minorTimeHeaderTemplate", predicate: MinorTimeHeaderTemplateDirective }, { propertyName: "majorTimeHeaderTemplate", predicate: MajorTimeHeaderTemplateDirective }, { propertyName: "monthDaySlotTemplate", predicate: MonthDaySlotTemplateDirective }, { propertyName: "multiWeekDaySlotTemplate", predicate: MultiWeekDaySlotTemplateDirective }, { propertyName: "dateHeaderTemplate", predicate: DateHeaderTemplateDirective }, { propertyName: "allDaySlotTemplate", predicate: AllDaySlotTemplateDirective }, { propertyName: "groupHeaderTemplate", predicate: GroupHeaderTemplateDirective }, { propertyName: "agendaDateTemplate", predicate: AgendaDateTemplateDirective }, { propertyName: "agendaTimeTemplate", predicate: AgendaTimeTemplateDirective }], viewQueries: [{ propertyName: "resizeSensor", first: true, predicate: ResizeSensorComponent, descendants: true, static: true }, { propertyName: "confirmationDialogContainerRef", first: true, predicate: ["confirmationDialogContainer"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "loadingComponent", first: true, predicate: LoadingComponent, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `
8920
+ PDFService,
8921
+ ], queries: [{ propertyName: "editDialogTemplate", first: true, predicate: EditDialogTemplateDirective, descendants: true }, { propertyName: "toolbarTemplate", first: true, predicate: ToolbarTemplateDirective, descendants: true }, { propertyName: "views", predicate: SchedulerView }, { propertyName: "allDayEventTemplate", predicate: AllDayEventTemplateDirective }, { propertyName: "eventTemplate", predicate: EventTemplateDirective }, { propertyName: "timeSlotTemplate", predicate: TimeSlotTemplateDirective }, { propertyName: "minorTimeHeaderTemplate", predicate: MinorTimeHeaderTemplateDirective }, { propertyName: "majorTimeHeaderTemplate", predicate: MajorTimeHeaderTemplateDirective }, { propertyName: "monthDaySlotTemplate", predicate: MonthDaySlotTemplateDirective }, { propertyName: "multiWeekDaySlotTemplate", predicate: MultiWeekDaySlotTemplateDirective }, { propertyName: "dateHeaderTemplate", predicate: DateHeaderTemplateDirective }, { propertyName: "allDaySlotTemplate", predicate: AllDaySlotTemplateDirective }, { propertyName: "groupHeaderTemplate", predicate: GroupHeaderTemplateDirective }, { propertyName: "agendaDateTemplate", predicate: AgendaDateTemplateDirective }, { propertyName: "agendaTimeTemplate", predicate: AgendaTimeTemplateDirective }], viewQueries: [{ propertyName: "resizeSensor", first: true, predicate: ResizeSensorComponent, descendants: true, static: true }, { propertyName: "confirmationDialogContainerRef", first: true, predicate: ["confirmationDialogContainer"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `
8910
8922
  <ng-container kendoSchedulerLocalizedMessages
8911
8923
  i18n-allEvents="kendo.scheduler.allEvents|The All events text displayed in the timeline views when there is no vertical grouping."
8912
8924
  allEvents="All events"
@@ -9237,13 +9249,14 @@ class SchedulerComponent {
9237
9249
 
9238
9250
  <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
9239
9251
 
9240
- <div [loading]="loading" kendoSchedulerLoading>
9241
- </div>
9252
+ @if (loading || pdfLoading) {
9253
+ <div kendoSchedulerLoading></div>
9254
+ }
9242
9255
 
9243
9256
  @if (showLicenseWatermark) {
9244
9257
  <div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
9245
9258
  }
9246
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoSchedulerLocalizedMessages]" }, { kind: "component", type: ToolbarComponent, selector: "kendo-scheduler-toolbar", inputs: ["selectedView", "views", "dateRange", "selectedDate", "template", "min", "max"], outputs: ["navigate", "toolbarWidthChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: EditDialogComponent, selector: "kendo-scheduler-edit-dialog", inputs: ["resources", "timezone", "weekStart", "fields", "editTemplate"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: LoadingComponent, selector: "[kendoSchedulerLoading]", inputs: ["loading"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay], kendo-watermark-overlay", inputs: ["licenseMessage"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9259
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoSchedulerLocalizedMessages]" }, { kind: "component", type: ToolbarComponent, selector: "kendo-scheduler-toolbar", inputs: ["selectedView", "views", "dateRange", "selectedDate", "template", "min", "max"], outputs: ["navigate", "toolbarWidthChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: EditDialogComponent, selector: "kendo-scheduler-edit-dialog", inputs: ["resources", "timezone", "weekStart", "fields", "editTemplate"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: LoadingComponent, selector: "[kendoSchedulerLoading]" }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay], kendo-watermark-overlay", inputs: ["licenseMessage"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9247
9260
  }
9248
9261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SchedulerComponent, decorators: [{
9249
9262
  type: Component,
@@ -9265,10 +9278,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
9265
9278
  provide: L10N_PREFIX,
9266
9279
  useValue: 'kendo.scheduler'
9267
9280
  },
9281
+ {
9282
+ provide: KENDO_WEBMCP_HOST,
9283
+ useExisting: forwardRef(() => SchedulerComponent)
9284
+ },
9268
9285
  ToolbarService,
9269
9286
  ViewContextService,
9270
9287
  ViewStateService,
9271
- PDFService
9288
+ PDFService,
9272
9289
  ],
9273
9290
  template: `
9274
9291
  <ng-container kendoSchedulerLocalizedMessages
@@ -9601,8 +9618,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
9601
9618
 
9602
9619
  <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
9603
9620
 
9604
- <div [loading]="loading" kendoSchedulerLoading>
9605
- </div>
9621
+ @if (loading || pdfLoading) {
9622
+ <div kendoSchedulerLoading></div>
9623
+ }
9606
9624
 
9607
9625
  @if (showLicenseWatermark) {
9608
9626
  <div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
@@ -9756,9 +9774,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
9756
9774
  }], confirmationDialogContainerRef: [{
9757
9775
  type: ViewChild,
9758
9776
  args: ["confirmationDialogContainer", { read: ViewContainerRef, static: true }]
9759
- }], loadingComponent: [{
9760
- type: ViewChild,
9761
- args: [LoadingComponent, { static: true }]
9762
9777
  }], allDayEventTemplate: [{
9763
9778
  type: ContentChildren,
9764
9779
  args: [AllDayEventTemplateDirective]
@@ -11134,8 +11149,8 @@ class AgendaListComponent {
11134
11149
  agendaTimeTemplate;
11135
11150
  agendaDateTemplate;
11136
11151
  editable;
11137
- caretAltLeftIcon = caretAltLeftIcon;
11138
- caretAltRightIcon = caretAltRightIcon;
11152
+ chevronLeftIcon = chevronLeftIcon;
11153
+ chevronRightIcon = chevronRightIcon;
11139
11154
  constructor(intlService, localization) {
11140
11155
  this.intlService = intlService;
11141
11156
  this.localization = localization;
@@ -11202,10 +11217,10 @@ class AgendaListComponent {
11202
11217
  }
11203
11218
  }
11204
11219
  get arrowIcons() {
11205
- return !this.localization.rtl ? ['caret-alt-left', 'caret-alt-right'] : ['caret-alt-right', 'caret-alt-left'];
11220
+ return !this.localization.rtl ? ['chevron-left', 'chevron-right'] : ['chevron-right', 'chevron-left'];
11206
11221
  }
11207
11222
  get arrowSVGIcons() {
11208
- return !this.localization.rtl ? [this.caretAltLeftIcon, this.caretAltRightIcon] : [this.caretAltRightIcon, this.caretAltLeftIcon];
11223
+ return !this.localization.rtl ? [this.chevronLeftIcon, this.chevronRightIcon] : [this.chevronRightIcon, this.chevronLeftIcon];
11209
11224
  }
11210
11225
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AgendaListComponent, deps: [{ token: i4.IntlService }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
11211
11226
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: AgendaListComponent, isStandalone: true, selector: "[kendoSchedulerAgendaList]", inputs: { tasks: "tasks", eventTemplate: "eventTemplate", slotClass: "slotClass", eventClass: "eventClass", eventStyles: "eventStyles", agendaTimeTemplate: "agendaTimeTemplate", agendaDateTemplate: "agendaDateTemplate", editable: "editable" }, host: { properties: { "class.k-scheduler-content": "this.classes" } }, ngImport: i0, template: `
@@ -11388,9 +11403,9 @@ class AgendaHeaderComponent {
11388
11403
  @for (resource of resources; track resource) {
11389
11404
  <th class="k-scheduler-groupcolumn k-first" role="columnheader"><span class="k-sr-only">{{ resourceMessage }}</span></th>
11390
11405
  }
11391
- <th class="k-scheduler-cell k-heading-cell k-scheduler-datecolumn" role="columnheader">{{ dateMessage }}</th>
11392
- <th class="k-scheduler-cell k-heading-cell k-scheduler-timecolumn" role="columnheader">{{ timeMessage }}</th>
11393
- <th class="k-scheduler-cell k-heading-cell" role="columnheader">{{ eventMessage }}</th>
11406
+ <th class="k-scheduler-cell k-scheduler-datecolumn" role="columnheader">{{ dateMessage }}</th>
11407
+ <th class="k-scheduler-cell k-scheduler-timecolumn" role="columnheader">{{ timeMessage }}</th>
11408
+ <th class="k-scheduler-cell" role="columnheader">{{ eventMessage }}</th>
11394
11409
  </tr>
11395
11410
  </tbody>
11396
11411
  </table>
@@ -11410,9 +11425,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
11410
11425
  @for (resource of resources; track resource) {
11411
11426
  <th class="k-scheduler-groupcolumn k-first" role="columnheader"><span class="k-sr-only">{{ resourceMessage }}</span></th>
11412
11427
  }
11413
- <th class="k-scheduler-cell k-heading-cell k-scheduler-datecolumn" role="columnheader">{{ dateMessage }}</th>
11414
- <th class="k-scheduler-cell k-heading-cell k-scheduler-timecolumn" role="columnheader">{{ timeMessage }}</th>
11415
- <th class="k-scheduler-cell k-heading-cell" role="columnheader">{{ eventMessage }}</th>
11428
+ <th class="k-scheduler-cell k-scheduler-datecolumn" role="columnheader">{{ dateMessage }}</th>
11429
+ <th class="k-scheduler-cell k-scheduler-timecolumn" role="columnheader">{{ timeMessage }}</th>
11430
+ <th class="k-scheduler-cell" role="columnheader">{{ eventMessage }}</th>
11416
11431
  </tr>
11417
11432
  </tbody>
11418
11433
  </table>
@@ -12645,8 +12660,10 @@ class BaseView {
12645
12660
  contentTable;
12646
12661
  times;
12647
12662
  timesHeader;
12663
+ timesHeaderTable;
12648
12664
  timesTable;
12649
12665
  headerWrap;
12666
+ headerTable;
12650
12667
  hintContainer;
12651
12668
  get eventTemplateRef() {
12652
12669
  return this.eventTemplate || (this.schedulerEventTemplate || {}).templateRef;
@@ -13647,7 +13664,7 @@ class BaseView {
13647
13664
  }
13648
13665
  }
13649
13666
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: BaseView, deps: [{ token: ViewContextService }, { token: ViewStateService }, { token: i4.IntlService }, { token: BaseSlotService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: PDFService }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i7.ScrollbarService }], target: i0.ɵɵFactoryTarget.Directive });
13650
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: BaseView, isStandalone: true, inputs: { eventTemplate: "eventTemplate", groupHeaderTemplate: "groupHeaderTemplate", selectedDateFormat: "selectedDateFormat", selectedShortDateFormat: "selectedShortDateFormat", eventHeight: "eventHeight", showToolbar: "showToolbar", showFooter: "showFooter", slotClass: "slotClass", eventClass: "eventClass", eventStyles: "eventStyles", weekStart: "weekStart" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "contentTable", first: true, predicate: ["contentTable"], descendants: true }, { propertyName: "times", first: true, predicate: ["times"], descendants: true }, { propertyName: "timesHeader", first: true, predicate: ["timesHeader"], descendants: true }, { propertyName: "timesTable", first: true, predicate: ["timesTable"], descendants: true }, { propertyName: "headerWrap", first: true, predicate: ["headerWrap"], descendants: true }, { propertyName: "hintContainer", first: true, predicate: ["hintContainer"], descendants: true }], usesOnChanges: true, ngImport: i0 });
13667
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: BaseView, isStandalone: true, inputs: { eventTemplate: "eventTemplate", groupHeaderTemplate: "groupHeaderTemplate", selectedDateFormat: "selectedDateFormat", selectedShortDateFormat: "selectedShortDateFormat", eventHeight: "eventHeight", showToolbar: "showToolbar", showFooter: "showFooter", slotClass: "slotClass", eventClass: "eventClass", eventStyles: "eventStyles", weekStart: "weekStart" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "contentTable", first: true, predicate: ["contentTable"], descendants: true }, { propertyName: "times", first: true, predicate: ["times"], descendants: true }, { propertyName: "timesHeader", first: true, predicate: ["timesHeader"], descendants: true }, { propertyName: "timesHeaderTable", first: true, predicate: ["timesHeaderTable"], descendants: true }, { propertyName: "timesTable", first: true, predicate: ["timesTable"], descendants: true }, { propertyName: "headerWrap", first: true, predicate: ["headerWrap"], descendants: true }, { propertyName: "headerTable", first: true, predicate: ["headerTable"], descendants: true }, { propertyName: "hintContainer", first: true, predicate: ["hintContainer"], descendants: true }], usesOnChanges: true, ngImport: i0 });
13651
13668
  }
13652
13669
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: BaseView, decorators: [{
13653
13670
  type: Directive
@@ -13688,12 +13705,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
13688
13705
  }], timesHeader: [{
13689
13706
  type: ViewChild,
13690
13707
  args: ['timesHeader', { static: false }]
13708
+ }], timesHeaderTable: [{
13709
+ type: ViewChild,
13710
+ args: ['timesHeaderTable', { static: false }]
13691
13711
  }], timesTable: [{
13692
13712
  type: ViewChild,
13693
13713
  args: ['timesTable', { static: false }]
13694
13714
  }], headerWrap: [{
13695
13715
  type: ViewChild,
13696
13716
  args: ['headerWrap', { static: false }]
13717
+ }], headerTable: [{
13718
+ type: ViewChild,
13719
+ args: ['headerTable', { static: false }]
13697
13720
  }], hintContainer: [{
13698
13721
  type: ViewChild,
13699
13722
  args: ['hintContainer', { static: false }]
@@ -13738,8 +13761,8 @@ class BaseViewItem {
13738
13761
  get removable() {
13739
13762
  return this.editable && this.editable.remove !== false;
13740
13763
  }
13741
- caretAltLeftIcon = caretAltLeftIcon;
13742
- caretAltRightIcon = caretAltRightIcon;
13764
+ chevronLeftIcon = chevronLeftIcon;
13765
+ chevronRightIcon = chevronRightIcon;
13743
13766
  rect;
13744
13767
  subs = new Subscription();
13745
13768
  constructor(slotService, localization, focusService, element, renderer, intl) {
@@ -13834,10 +13857,10 @@ class BaseViewItem {
13834
13857
  this.subs.unsubscribe();
13835
13858
  }
13836
13859
  get arrowIcons() {
13837
- return !this.localization.rtl ? ['caret-alt-left', 'caret-alt-right'] : ['caret-alt-right', 'caret-alt-left'];
13860
+ return !this.localization.rtl ? ['chevron-left', 'chevron-right'] : ['chevron-right', 'chevron-left'];
13838
13861
  }
13839
13862
  get arrowSVGIcons() {
13840
- return !this.localization.rtl ? [this.caretAltLeftIcon, this.caretAltRightIcon] : [this.caretAltRightIcon, this.caretAltLeftIcon];
13863
+ return !this.localization.rtl ? [this.chevronLeftIcon, this.chevronRightIcon] : [this.chevronRightIcon, this.chevronLeftIcon];
13841
13864
  }
13842
13865
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: BaseViewItem, deps: [{ token: BaseSlotService }, { token: i1$1.LocalizationService }, { token: FocusService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i4.IntlService }], target: i0.ɵɵFactoryTarget.Directive });
13843
13866
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: BaseViewItem, isStandalone: true, inputs: { item: "item", resourceIndex: "resourceIndex", rangeIndex: "rangeIndex", index: "index", eventTemplate: "eventTemplate", editable: "editable", dragHint: "dragHint", resources: "resources" }, host: { properties: { "class.k-event": "this.className", "attr.data-task-index": "this.taskIndex", "style.touch-action": "this.touchAction", "attr.aria-label": "this.eventTitle" } }, usesOnChanges: true, ngImport: i0 });
@@ -13878,8 +13901,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
13878
13901
  * @hidden
13879
13902
  */
13880
13903
  class MonthViewItemComponent extends BaseViewItem {
13881
- caretAltLeftIcon = caretAltLeftIcon;
13882
- caretAltRightIcon = caretAltRightIcon;
13904
+ chevronLeftIcon = chevronLeftIcon;
13905
+ chevronRightIcon = chevronRightIcon;
13883
13906
  arrowRotateCwIcon = arrowRotateCwIcon;
13884
13907
  arrowsNoRepeatIcon = arrowsNoRepeatIcon;
13885
13908
  xIcon = xIcon;
@@ -14461,12 +14484,15 @@ class MonthViewRendererComponent extends BaseView {
14461
14484
  super.ngOnChanges(changes);
14462
14485
  }
14463
14486
  ngOnInit() {
14464
- this.viewState.layoutEnd.subscribe(() => {
14487
+ this.subs.add(this.viewState.layoutEnd.subscribe(() => {
14465
14488
  if (this.adaptiveSlotHeight) {
14466
14489
  this.slotService.invalidate();
14467
14490
  this.reflow();
14468
14491
  }
14469
- });
14492
+ else {
14493
+ this.syncTables();
14494
+ }
14495
+ }));
14470
14496
  super.ngOnInit();
14471
14497
  }
14472
14498
  ngAfterViewInit() {
@@ -14553,6 +14579,24 @@ class MonthViewRendererComponent extends BaseView {
14553
14579
  }
14554
14580
  this.syncTables();
14555
14581
  }
14582
+ syncTables() {
14583
+ super.syncTables();
14584
+ if (!this.timesTable) {
14585
+ return;
14586
+ }
14587
+ const timesRows = this.timesTable.nativeElement.rows;
14588
+ if (!timesRows.length) {
14589
+ return;
14590
+ }
14591
+ const contentRows = this.contentTable.nativeElement.rows;
14592
+ const rowsCount = Math.min(timesRows.length, contentRows.length);
14593
+ for (let index = 0; index < rowsCount; index++) {
14594
+ const height = `${contentRows[index].offsetHeight}px`;
14595
+ if (timesRows[index].style.height !== height) {
14596
+ this.renderer.setStyle(timesRows[index], 'height', height);
14597
+ }
14598
+ }
14599
+ }
14556
14600
  onClick(e, eventType = e.type) {
14557
14601
  if (eventType === 'click') {
14558
14602
  const eventSlot = closestInScope(e.target, node => node.hasAttribute('data-slot-index'), this.element.nativeElement);
@@ -14675,7 +14719,7 @@ class MonthViewRendererComponent extends BaseView {
14675
14719
  <table class="k-scheduler-table" aria-hidden="true">
14676
14720
  <tbody>
14677
14721
  <tr>
14678
- <th class="k-scheduler-cell k-heading-cell"></th>
14722
+ <th class="k-scheduler-cell"></th>
14679
14723
  </tr>
14680
14724
  </tbody>
14681
14725
  </table>
@@ -14693,7 +14737,7 @@ class MonthViewRendererComponent extends BaseView {
14693
14737
  <tr>
14694
14738
  @for (item of horizontalResources | resourceIterator : resourceIndex; track itemIndex($index, item)) {
14695
14739
  <th
14696
- class="k-scheduler-cell k-heading-cell" [attr.colspan]="horizontalColspan(resourceIndex)">
14740
+ class="k-scheduler-cell" [attr.colspan]="horizontalColspan(resourceIndex)">
14697
14741
  @if (!groupHeaderTemplateRef) {
14698
14742
  {{ getField(item, resource.textField) }}
14699
14743
  }
@@ -14707,7 +14751,7 @@ class MonthViewRendererComponent extends BaseView {
14707
14751
  <tr>
14708
14752
  @for (resource of horizontalResources | resourceIterator; track itemIndex($index, resource)) {
14709
14753
  @for (day of weeks[0]; track itemIndex($index, day)) {
14710
- <th class="k-scheduler-cell k-heading-cell">
14754
+ <th class="k-scheduler-cell">
14711
14755
  {{ day | kendoDate: 'EEEE' }}
14712
14756
  </th>
14713
14757
  }
@@ -14729,7 +14773,7 @@ class MonthViewRendererComponent extends BaseView {
14729
14773
  <tr>
14730
14774
  @for (resource of verticalResources; track itemIndex(resourceIndex, resource); let resourceIndex = $index) {
14731
14775
  @if (verticalItem(leafIndex, resourceIndex)) {
14732
- <th [attr.rowspan]="verticalRowspan(resourceIndex)" class="k-slot-cell k-heading-cell" [ngClass]="{ 'k-last-resource': resourceIndex === verticalResources.length - 1 }">
14776
+ <th [attr.rowspan]="verticalRowspan(resourceIndex)" class="k-slot-cell" [ngClass]="{ 'k-last-resource': resourceIndex === verticalResources.length - 1 }">
14733
14777
  @if (!groupHeaderTemplateRef) {
14734
14778
  {{ getField(verticalItem(leafIndex, resourceIndex), resource.textField) }}
14735
14779
  }
@@ -14740,12 +14784,12 @@ class MonthViewRendererComponent extends BaseView {
14740
14784
  </th>
14741
14785
  }
14742
14786
  }
14743
- <th class="k-slot-cell k-heading-cell k-empty-slot">
14787
+ <th class="k-slot-cell k-empty-slot">
14744
14788
  </th>
14745
14789
  </tr>
14746
14790
  @for (index of (numberOfWeeks - 1) | repeat; track itemIndex($index, index)) {
14747
14791
  <tr>
14748
- <th class="k-slot-cell k-heading-cell k-empty-slot"></th>
14792
+ <th class="k-slot-cell k-empty-slot"></th>
14749
14793
  </tr>
14750
14794
  }
14751
14795
  }
@@ -14866,7 +14910,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
14866
14910
  <table class="k-scheduler-table" aria-hidden="true">
14867
14911
  <tbody>
14868
14912
  <tr>
14869
- <th class="k-scheduler-cell k-heading-cell"></th>
14913
+ <th class="k-scheduler-cell"></th>
14870
14914
  </tr>
14871
14915
  </tbody>
14872
14916
  </table>
@@ -14884,7 +14928,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
14884
14928
  <tr>
14885
14929
  @for (item of horizontalResources | resourceIterator : resourceIndex; track itemIndex($index, item)) {
14886
14930
  <th
14887
- class="k-scheduler-cell k-heading-cell" [attr.colspan]="horizontalColspan(resourceIndex)">
14931
+ class="k-scheduler-cell" [attr.colspan]="horizontalColspan(resourceIndex)">
14888
14932
  @if (!groupHeaderTemplateRef) {
14889
14933
  {{ getField(item, resource.textField) }}
14890
14934
  }
@@ -14898,7 +14942,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
14898
14942
  <tr>
14899
14943
  @for (resource of horizontalResources | resourceIterator; track itemIndex($index, resource)) {
14900
14944
  @for (day of weeks[0]; track itemIndex($index, day)) {
14901
- <th class="k-scheduler-cell k-heading-cell">
14945
+ <th class="k-scheduler-cell">
14902
14946
  {{ day | kendoDate: 'EEEE' }}
14903
14947
  </th>
14904
14948
  }
@@ -14920,7 +14964,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
14920
14964
  <tr>
14921
14965
  @for (resource of verticalResources; track itemIndex(resourceIndex, resource); let resourceIndex = $index) {
14922
14966
  @if (verticalItem(leafIndex, resourceIndex)) {
14923
- <th [attr.rowspan]="verticalRowspan(resourceIndex)" class="k-slot-cell k-heading-cell" [ngClass]="{ 'k-last-resource': resourceIndex === verticalResources.length - 1 }">
14967
+ <th [attr.rowspan]="verticalRowspan(resourceIndex)" class="k-slot-cell" [ngClass]="{ 'k-last-resource': resourceIndex === verticalResources.length - 1 }">
14924
14968
  @if (!groupHeaderTemplateRef) {
14925
14969
  {{ getField(verticalItem(leafIndex, resourceIndex), resource.textField) }}
14926
14970
  }
@@ -14931,12 +14975,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
14931
14975
  </th>
14932
14976
  }
14933
14977
  }
14934
- <th class="k-slot-cell k-heading-cell k-empty-slot">
14978
+ <th class="k-slot-cell k-empty-slot">
14935
14979
  </th>
14936
14980
  </tr>
14937
14981
  @for (index of (numberOfWeeks - 1) | repeat; track itemIndex($index, index)) {
14938
14982
  <tr>
14939
- <th class="k-slot-cell k-heading-cell k-empty-slot"></th>
14983
+ <th class="k-slot-cell k-empty-slot"></th>
14940
14984
  </tr>
14941
14985
  }
14942
14986
  }
@@ -15728,7 +15772,7 @@ class ViewFooterComponent {
15728
15772
  }
15729
15773
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ViewFooterComponent, deps: [{ token: ViewStateService }], target: i0.ɵɵFactoryTarget.Component });
15730
15774
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ViewFooterComponent, isStandalone: true, selector: "[viewFooter]", inputs: { items: "items" }, outputs: { itemClick: "itemClick" }, host: { properties: { "class.k-scheduler-footer": "this.hostClasses", "class.k-toolbar": "this.hostClasses", "attr.role": "this.toolbarRole", "style.justify-content": "this.inlineJustifyContentStyle" } }, ngImport: i0, template: `
15731
- <span class="k-scheduler-navigation">
15775
+ <span>
15732
15776
  @for (item of items; track item) {
15733
15777
  <button
15734
15778
  type="button"
@@ -15743,14 +15787,14 @@ class ViewFooterComponent {
15743
15787
  </button>
15744
15788
  }
15745
15789
  </span>
15746
- `, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: FocusableDirective, selector: "[kendoSchedulerFocusIndex]", inputs: ["kendoSchedulerFocusIndex", "containerType"] }] });
15790
+ `, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: FocusableDirective, selector: "[kendoSchedulerFocusIndex]", inputs: ["kendoSchedulerFocusIndex", "containerType"] }] });
15747
15791
  }
15748
15792
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ViewFooterComponent, decorators: [{
15749
15793
  type: Component,
15750
15794
  args: [{
15751
15795
  selector: '[viewFooter]',
15752
15796
  template: `
15753
- <span class="k-scheduler-navigation">
15797
+ <span>
15754
15798
  @for (item of items; track item) {
15755
15799
  <button
15756
15800
  type="button"
@@ -15794,7 +15838,7 @@ class WorkHoursFooterDirective {
15794
15838
  footer;
15795
15839
  localization;
15796
15840
  showWorkHours = false;
15797
- footerItems = [{ cssClass: 'k-scheduler-fullday', fontIcon: 'clock', svgIcon: clockIcon, text: '' }];
15841
+ footerItems = [{ cssClass: 'k-scheduler-fullday k-toolbar-button', fontIcon: 'clock', svgIcon: clockIcon, text: '' }];
15798
15842
  constructor(footer, localization) {
15799
15843
  this.footer = footer;
15800
15844
  this.localization = localization;
@@ -16606,10 +16650,10 @@ function createTimeSlots(intlService, { showWorkHours, startTime, endTime, workD
16606
16650
  */
16607
16651
  class DayTimeViewItemComponent extends BaseViewItem {
16608
16652
  intlService;
16609
- caretAltLeftIcon = caretAltLeftIcon;
16610
- caretAltRightIcon = caretAltRightIcon;
16611
- caretAltUpIcon = caretAltUpIcon;
16612
- caretAltDownIcon = caretAltDownIcon;
16653
+ chevronLeftIcon = chevronLeftIcon;
16654
+ chevronRightIcon = chevronRightIcon;
16655
+ chevronUpIcon = chevronUpIcon;
16656
+ chevronDownIcon = chevronDownIcon;
16613
16657
  arrowRotateCwIcon = arrowRotateCwIcon;
16614
16658
  arrowsNoRepeatIcon = arrowsNoRepeatIcon;
16615
16659
  xIcon = xIcon;
@@ -16679,13 +16723,13 @@ class DayTimeViewItemComponent extends BaseViewItem {
16679
16723
 
16680
16724
  @if (item.tail && vertical) {
16681
16725
  <span class="k-event-top-actions">
16682
- <kendo-icon-wrapper name="caret-alt-up" [svgIcon]="caretAltUpIcon"></kendo-icon-wrapper>
16726
+ <kendo-icon-wrapper name="chevron-up" [svgIcon]="chevronUpIcon"></kendo-icon-wrapper>
16683
16727
  </span>
16684
16728
  }
16685
16729
 
16686
16730
  @if (item.head && vertical) {
16687
16731
  <span class="k-event-bottom-actions">
16688
- <kendo-icon-wrapper name="caret-alt-down" [svgIcon]="caretAltDownIcon"></kendo-icon-wrapper>
16732
+ <kendo-icon-wrapper name="chevron-down" [svgIcon]="chevronDownIcon"></kendo-icon-wrapper>
16689
16733
  </span>
16690
16734
  }
16691
16735
 
@@ -16763,13 +16807,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
16763
16807
 
16764
16808
  @if (item.tail && vertical) {
16765
16809
  <span class="k-event-top-actions">
16766
- <kendo-icon-wrapper name="caret-alt-up" [svgIcon]="caretAltUpIcon"></kendo-icon-wrapper>
16810
+ <kendo-icon-wrapper name="chevron-up" [svgIcon]="chevronUpIcon"></kendo-icon-wrapper>
16767
16811
  </span>
16768
16812
  }
16769
16813
 
16770
16814
  @if (item.head && vertical) {
16771
16815
  <span class="k-event-bottom-actions">
16772
- <kendo-icon-wrapper name="caret-alt-down" [svgIcon]="caretAltDownIcon"></kendo-icon-wrapper>
16816
+ <kendo-icon-wrapper name="chevron-down" [svgIcon]="chevronDownIcon"></kendo-icon-wrapper>
16773
16817
  </span>
16774
16818
  }
16775
16819
 
@@ -17137,6 +17181,49 @@ class DayTimeViewComponent extends BaseView {
17137
17181
  this.workDayEndTime = toInvariantTime(endDate);
17138
17182
  }
17139
17183
  }
17184
+ syncDateHeaderHeight() {
17185
+ if (!isDocumentAvailable()) {
17186
+ return;
17187
+ }
17188
+ const dateRowIndex = this.horizontalResources.length + 1;
17189
+ const timesTable = this.timesHeaderTable?.nativeElement;
17190
+ const headerTable = this.headerTable?.nativeElement;
17191
+ const timesHeaderDateCell = timesTable?.rows[dateRowIndex - 1]?.cells[0];
17192
+ const headerDateCell = headerTable?.rows[dateRowIndex - 1]?.cells[0];
17193
+ const shouldSkipDateHeightSync = !timesHeaderDateCell || !headerDateCell || !this.dateHeaderTemplateRef;
17194
+ if (shouldSkipDateHeightSync) {
17195
+ if (timesHeaderDateCell && !this.dateHeaderTemplateRef) {
17196
+ this.renderer.removeStyle(timesHeaderDateCell, 'height');
17197
+ }
17198
+ return;
17199
+ }
17200
+ this.syncCellHeight(headerDateCell, timesHeaderDateCell);
17201
+ }
17202
+ syncGroupHeaderHeight() {
17203
+ if (!isDocumentAvailable()) {
17204
+ return;
17205
+ }
17206
+ const dateRowIndex = this.horizontalResources.length + 1;
17207
+ const timesTable = this.timesHeaderTable?.nativeElement;
17208
+ const headerTable = this.headerTable?.nativeElement;
17209
+ for (let rowIndex = 1; rowIndex < dateRowIndex; rowIndex++) {
17210
+ const timesHeaderCell = timesTable?.rows[rowIndex - 1]?.cells[0];
17211
+ if (!timesHeaderCell) {
17212
+ continue;
17213
+ }
17214
+ // Remove height when template is absent or grouping is vertical
17215
+ if (!this.groupHeaderTemplateRef || this.verticalResources.length) {
17216
+ this.renderer.removeStyle(timesHeaderCell, 'height');
17217
+ continue;
17218
+ }
17219
+ const headerCell = headerTable?.rows[rowIndex - 1]?.cells[0];
17220
+ if (!headerCell) {
17221
+ this.renderer.removeStyle(timesHeaderCell, 'height');
17222
+ continue;
17223
+ }
17224
+ this.syncCellHeight(headerCell, timesHeaderCell);
17225
+ }
17226
+ }
17140
17227
  slotByPosition(x, y, container) {
17141
17228
  const isDaySlot = container ? hasClasses(container.parentNode, 'k-scheduler-header-wrap') : y < 0;
17142
17229
  return this.slotService.slotByPosition(x, y, isDaySlot, Boolean(this.verticalResources.length));
@@ -17152,6 +17239,14 @@ class DayTimeViewComponent extends BaseView {
17152
17239
  }
17153
17240
  return fields;
17154
17241
  }
17242
+ syncCellHeight(sourceCell, targetCell) {
17243
+ const height = sourceCell.getBoundingClientRect().height;
17244
+ const currentHeight = targetCell.getBoundingClientRect().height;
17245
+ const paddingAndBorder = getVerticalPaddingAndBorder(targetCell);
17246
+ if (height !== currentHeight) {
17247
+ this.renderer.setStyle(targetCell, 'height', `${height - paddingAndBorder}px`);
17248
+ }
17249
+ }
17155
17250
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DayTimeViewComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: ViewContextService }, { token: ViewStateService }, { token: i4.IntlService }, { token: DayTimeSlotService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: PDFService }, { token: i1$1.LocalizationService }, { token: i7.ScrollbarService }], target: i0.ɵɵFactoryTarget.Component });
17156
17251
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: DayTimeViewComponent, isStandalone: true, selector: "kendo-day-time-view", inputs: { timeSlotTemplate: "timeSlotTemplate", dateHeaderTemplate: "dateHeaderTemplate", majorTimeHeaderTemplate: "majorTimeHeaderTemplate", minorTimeHeaderTemplate: "minorTimeHeaderTemplate", numberOfDays: "numberOfDays", scrollTime: "scrollTime", startTime: "startTime", endTime: "endTime", workDayStart: "workDayStart", workDayEnd: "workDayEnd", workWeekStart: "workWeekStart", workWeekEnd: "workWeekEnd", slotDuration: "slotDuration", slotDivisions: "slotDivisions", showWorkHours: "showWorkHours", getStartDate: "getStartDate", getEndDate: "getEndDate", getNextDate: "getNextDate", currentTimeMarker: "currentTimeMarker", highlightOngoingEvents: "highlightOngoingEvents" }, viewQueries: [{ propertyName: "currentTimeElements", predicate: ["currentTimeMarker"], descendants: true }, { propertyName: "eventElements", predicate: DayTimeViewItemComponent, descendants: true }, { propertyName: "currentTimeArrows", predicate: ["currentTimeArrow"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true });
17157
17252
  }
@@ -17465,6 +17560,11 @@ class MultiDayViewRendererComponent extends DayTimeViewComponent {
17465
17560
  slotService.layoutTimes({ fill: this.slotFill });
17466
17561
  this.syncTables();
17467
17562
  }
17563
+ syncTables() {
17564
+ super.syncTables();
17565
+ this.syncGroupHeaderHeight();
17566
+ this.syncDateHeaderHeight();
17567
+ }
17468
17568
  dragHorizontal(slot) {
17469
17569
  return slot.isDaySlot;
17470
17570
  }
@@ -17569,19 +17669,19 @@ class MultiDayViewRendererComponent extends DayTimeViewComponent {
17569
17669
  <tr class="k-scheduler-head">
17570
17670
  <td>
17571
17671
  <div class="k-scheduler-times" #timesHeader>
17572
- <table class="k-scheduler-table" aria-hidden="true">
17672
+ <table class="k-scheduler-table" #timesHeaderTable aria-hidden="true">
17573
17673
  <tbody>
17574
17674
  @for (resource of horizontalResources; track itemIndex($index, resource)) {
17575
17675
  <tr>
17576
- <th class="k-scheduler-cell k-heading-cell"></th>
17676
+ <th class="k-scheduler-cell"></th>
17577
17677
  </tr>
17578
17678
  }
17579
17679
  <tr [style.height]="'auto'">
17580
- <th class="k-scheduler-cell k-heading-cell"></th>
17680
+ <th class="k-scheduler-cell"></th>
17581
17681
  </tr>
17582
17682
  @if (allDaySlot && !verticalResources.length) {
17583
17683
  <tr>
17584
- <th class="k-scheduler-times-all-day k-scheduler-cell k-heading-cell" #allDayCell>{{ allDayMessage }}</th>
17684
+ <th class="k-scheduler-times-all-day k-scheduler-cell" #allDayCell>{{ allDayMessage }}</th>
17585
17685
  </tr>
17586
17686
  }
17587
17687
  </tbody>
@@ -17591,13 +17691,13 @@ class MultiDayViewRendererComponent extends DayTimeViewComponent {
17591
17691
  <td>
17592
17692
  <div class="k-scheduler-header" #header>
17593
17693
  <div class="k-scheduler-header-wrap" #headerWrap>
17594
- <table class="k-scheduler-table" aria-hidden="true">
17694
+ <table class="k-scheduler-table" #headerTable aria-hidden="true">
17595
17695
  <tbody>
17596
17696
  @for (resource of horizontalResources; track itemIndex(resourceIndex, resource); let resourceIndex = $index) {
17597
17697
  <tr>
17598
17698
  @for (item of horizontalResources | resourceIterator : resourceIndex; track itemIndex($index, item)) {
17599
17699
  <th
17600
- class="k-scheduler-cell k-heading-cell" [attr.colspan]="horizontalColspan(resourceIndex)">
17700
+ class="k-scheduler-cell" [attr.colspan]="horizontalColspan(resourceIndex)">
17601
17701
  @if (!groupHeaderTemplateRef) {
17602
17702
  {{ getField(item, resource.textField) }}
17603
17703
  }
@@ -17611,7 +17711,7 @@ class MultiDayViewRendererComponent extends DayTimeViewComponent {
17611
17711
  <tr class="k-scheduler-date-group">
17612
17712
  @for (resource of horizontalResources | resourceIterator; track itemIndex($index, resource)) {
17613
17713
  @for (slot of daySlots; track itemIndex(index, slot); let index = $index) {
17614
- <th class="k-scheduler-cell k-heading-cell">
17714
+ <th class="k-scheduler-cell">
17615
17715
  @if (!dateHeaderTemplateRef) {
17616
17716
  <span class="k-link k-nav-day" [attr.data-dayslot-index]="index">{{ slot.start | kendoDate: dateFormat }}</span>
17617
17717
  }
@@ -17723,7 +17823,7 @@ class MultiDayViewRendererComponent extends DayTimeViewComponent {
17723
17823
  <tr>
17724
17824
  @for (resource of verticalResources; track itemIndex(resourceIndex, resource); let resourceIndex = $index) {
17725
17825
  @if (verticalItem(leafIndex, resourceIndex)) {
17726
- <th [attr.rowspan]="verticalRowspan(resourceIndex)" class="k-scheduler-cell k-slot-cell k-heading-cell">
17826
+ <th [attr.rowspan]="verticalRowspan(resourceIndex)" class="k-scheduler-cell k-slot-cell">
17727
17827
  @if (!groupHeaderTemplateRef) {
17728
17828
  {{ getField(verticalItem(leafIndex, resourceIndex), resource.textField) }}
17729
17829
  }
@@ -17735,14 +17835,14 @@ class MultiDayViewRendererComponent extends DayTimeViewComponent {
17735
17835
  }
17736
17836
  }
17737
17837
  @if (allDaySlot) {
17738
- <th class="k-scheduler-times-all-day k-scheduler-cell k-heading-cell" #allDayCell>{{ allDayMessage }}</th>
17838
+ <th class="k-scheduler-times-all-day k-scheduler-cell" #allDayCell>{{ allDayMessage }}</th>
17739
17839
  }
17740
17840
  </tr>
17741
17841
  }
17742
17842
  @for (slot of timeSlots; track itemIndex(timeSlotIndex, slot); let timeSlotIndex = $index) {
17743
17843
  <tr>
17744
17844
  @if (slot.isMajor) {
17745
- <th [ngClass]="{ 'k-slot-cell': slotDivisions === 1 }" class="k-scheduler-cell k-heading-cell">
17845
+ <th [ngClass]="{ 'k-slot-cell': slotDivisions === 1 }" class="k-scheduler-cell">
17746
17846
  @if (!majorTimeHeaderTemplateRef) {
17747
17847
  {{ slot.start | kendoDate: 't' }}
17748
17848
  }
@@ -17752,7 +17852,7 @@ class MultiDayViewRendererComponent extends DayTimeViewComponent {
17752
17852
  </th>
17753
17853
  }
17754
17854
  @if (!slot.isMajor) {
17755
- <th [ngClass]="{ 'k-slot-cell': timeSlotIndex % slotDivisions === slotDivisions - 1 }" class="k-scheduler-cell k-heading-cell">
17855
+ <th [ngClass]="{ 'k-slot-cell': timeSlotIndex % slotDivisions === slotDivisions - 1 }" class="k-scheduler-cell">
17756
17856
  @if (minorTimeHeaderTemplateRef) {
17757
17857
  <ng-container [ngTemplateOutlet]="minorTimeHeaderTemplateRef" [ngTemplateOutletContext]="{ date: slot.start }">
17758
17858
  </ng-container>
@@ -17932,19 +18032,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
17932
18032
  <tr class="k-scheduler-head">
17933
18033
  <td>
17934
18034
  <div class="k-scheduler-times" #timesHeader>
17935
- <table class="k-scheduler-table" aria-hidden="true">
18035
+ <table class="k-scheduler-table" #timesHeaderTable aria-hidden="true">
17936
18036
  <tbody>
17937
18037
  @for (resource of horizontalResources; track itemIndex($index, resource)) {
17938
18038
  <tr>
17939
- <th class="k-scheduler-cell k-heading-cell"></th>
18039
+ <th class="k-scheduler-cell"></th>
17940
18040
  </tr>
17941
18041
  }
17942
18042
  <tr [style.height]="'auto'">
17943
- <th class="k-scheduler-cell k-heading-cell"></th>
18043
+ <th class="k-scheduler-cell"></th>
17944
18044
  </tr>
17945
18045
  @if (allDaySlot && !verticalResources.length) {
17946
18046
  <tr>
17947
- <th class="k-scheduler-times-all-day k-scheduler-cell k-heading-cell" #allDayCell>{{ allDayMessage }}</th>
18047
+ <th class="k-scheduler-times-all-day k-scheduler-cell" #allDayCell>{{ allDayMessage }}</th>
17948
18048
  </tr>
17949
18049
  }
17950
18050
  </tbody>
@@ -17954,13 +18054,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
17954
18054
  <td>
17955
18055
  <div class="k-scheduler-header" #header>
17956
18056
  <div class="k-scheduler-header-wrap" #headerWrap>
17957
- <table class="k-scheduler-table" aria-hidden="true">
18057
+ <table class="k-scheduler-table" #headerTable aria-hidden="true">
17958
18058
  <tbody>
17959
18059
  @for (resource of horizontalResources; track itemIndex(resourceIndex, resource); let resourceIndex = $index) {
17960
18060
  <tr>
17961
18061
  @for (item of horizontalResources | resourceIterator : resourceIndex; track itemIndex($index, item)) {
17962
18062
  <th
17963
- class="k-scheduler-cell k-heading-cell" [attr.colspan]="horizontalColspan(resourceIndex)">
18063
+ class="k-scheduler-cell" [attr.colspan]="horizontalColspan(resourceIndex)">
17964
18064
  @if (!groupHeaderTemplateRef) {
17965
18065
  {{ getField(item, resource.textField) }}
17966
18066
  }
@@ -17974,7 +18074,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
17974
18074
  <tr class="k-scheduler-date-group">
17975
18075
  @for (resource of horizontalResources | resourceIterator; track itemIndex($index, resource)) {
17976
18076
  @for (slot of daySlots; track itemIndex(index, slot); let index = $index) {
17977
- <th class="k-scheduler-cell k-heading-cell">
18077
+ <th class="k-scheduler-cell">
17978
18078
  @if (!dateHeaderTemplateRef) {
17979
18079
  <span class="k-link k-nav-day" [attr.data-dayslot-index]="index">{{ slot.start | kendoDate: dateFormat }}</span>
17980
18080
  }
@@ -18086,7 +18186,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
18086
18186
  <tr>
18087
18187
  @for (resource of verticalResources; track itemIndex(resourceIndex, resource); let resourceIndex = $index) {
18088
18188
  @if (verticalItem(leafIndex, resourceIndex)) {
18089
- <th [attr.rowspan]="verticalRowspan(resourceIndex)" class="k-scheduler-cell k-slot-cell k-heading-cell">
18189
+ <th [attr.rowspan]="verticalRowspan(resourceIndex)" class="k-scheduler-cell k-slot-cell">
18090
18190
  @if (!groupHeaderTemplateRef) {
18091
18191
  {{ getField(verticalItem(leafIndex, resourceIndex), resource.textField) }}
18092
18192
  }
@@ -18098,14 +18198,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
18098
18198
  }
18099
18199
  }
18100
18200
  @if (allDaySlot) {
18101
- <th class="k-scheduler-times-all-day k-scheduler-cell k-heading-cell" #allDayCell>{{ allDayMessage }}</th>
18201
+ <th class="k-scheduler-times-all-day k-scheduler-cell" #allDayCell>{{ allDayMessage }}</th>
18102
18202
  }
18103
18203
  </tr>
18104
18204
  }
18105
18205
  @for (slot of timeSlots; track itemIndex(timeSlotIndex, slot); let timeSlotIndex = $index) {
18106
18206
  <tr>
18107
18207
  @if (slot.isMajor) {
18108
- <th [ngClass]="{ 'k-slot-cell': slotDivisions === 1 }" class="k-scheduler-cell k-heading-cell">
18208
+ <th [ngClass]="{ 'k-slot-cell': slotDivisions === 1 }" class="k-scheduler-cell">
18109
18209
  @if (!majorTimeHeaderTemplateRef) {
18110
18210
  {{ slot.start | kendoDate: 't' }}
18111
18211
  }
@@ -18115,7 +18215,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
18115
18215
  </th>
18116
18216
  }
18117
18217
  @if (!slot.isMajor) {
18118
- <th [ngClass]="{ 'k-slot-cell': timeSlotIndex % slotDivisions === slotDivisions - 1 }" class="k-scheduler-cell k-heading-cell">
18218
+ <th [ngClass]="{ 'k-slot-cell': timeSlotIndex % slotDivisions === slotDivisions - 1 }" class="k-scheduler-cell">
18119
18219
  @if (minorTimeHeaderTemplateRef) {
18120
18220
  <ng-container [ngTemplateOutlet]="minorTimeHeaderTemplateRef" [ngTemplateOutletContext]="{ date: slot.start }">
18121
18221
  </ng-container>
@@ -18863,7 +18963,9 @@ class WorkWeekViewComponent extends WeekViewComponent {
18863
18963
  * @hidden
18864
18964
  */
18865
18965
  getStartDate(selectedDate) {
18866
- return firstDayInWeek(getDate(selectedDate), this.viewWorkWeekStart);
18966
+ const weekStartDate = firstDayInWeek(getDate(selectedDate), this.viewWeekStart);
18967
+ const workWeekOffset = (DAYS_IN_WEEK + this.viewWorkWeekStart - this.viewWeekStart) % DAYS_IN_WEEK;
18968
+ return getDate(addDays(weekStartDate, workWeekOffset));
18867
18969
  }
18868
18970
  /**
18869
18971
  * @hidden
@@ -19068,7 +19170,6 @@ class TimelineMultiDayViewComponent extends DayTimeViewComponent {
19068
19170
  get classNames() {
19069
19171
  return `k-scheduler-${this.viewName}-view`;
19070
19172
  }
19071
- headerTable;
19072
19173
  get contentWidthPercentage() {
19073
19174
  const expectedWidth = this.columnWidth * this.slotsCount;
19074
19175
  const percentage = (expectedWidth / this.contentWidth) * 100;
@@ -19148,6 +19249,11 @@ class TimelineMultiDayViewComponent extends DayTimeViewComponent {
19148
19249
  handleScroll() {
19149
19250
  this.headerWrap.nativeElement.scrollLeft = this.content.nativeElement.scrollLeft;
19150
19251
  }
19252
+ syncTables() {
19253
+ super.syncTables();
19254
+ this.syncGroupHeaderHeight();
19255
+ this.syncDateHeaderHeight();
19256
+ }
19151
19257
  createTasks(items, dateRange) {
19152
19258
  return createTasks$1(dateRange.start, dateRange.end, items, this.hiddenDays || []);
19153
19259
  }
@@ -19178,19 +19284,19 @@ class TimelineMultiDayViewComponent extends DayTimeViewComponent {
19178
19284
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TimelineMultiDayViewComponent, deps: [{ token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: ViewContextService }, { token: ViewStateService }, { token: i4.IntlService }, { token: DayTimeSlotService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: PDFService }, { token: i7.ScrollbarService }], target: i0.ɵɵFactoryTarget.Component });
19179
19285
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TimelineMultiDayViewComponent, isStandalone: true, selector: "timeline-multi-day-view", inputs: { hiddenDays: "hiddenDays", name: "name", columnWidth: "columnWidth", viewName: "viewName" }, providers: [
19180
19286
  DayTimeSlotService
19181
- ], viewQueries: [{ propertyName: "headerTable", first: true, predicate: ["headerTable"], descendants: true }, { propertyName: "verticalResourceRows", predicate: ["verticalResourceRows"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
19287
+ ], viewQueries: [{ propertyName: "verticalResourceRows", predicate: ["verticalResourceRows"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
19182
19288
  <table class="k-scheduler-layout" [ngClass]="classNames">
19183
19289
  <tbody>
19184
19290
  <tr class="k-scheduler-head">
19185
19291
  <td>
19186
19292
  <div class="k-scheduler-times" #timesHeader>
19187
- <table class="k-scheduler-table" aria-hidden="true">
19293
+ <table class="k-scheduler-table" #timesHeaderTable aria-hidden="true">
19188
19294
  <tbody>
19189
- <tr><th class="k-scheduler-cell k-heading-cell"></th></tr>
19190
- <tr><th class="k-slot-cell k-scheduler-cell k-heading-cell"></th></tr>
19295
+ <tr><th class="k-scheduler-cell"></th></tr>
19296
+ <tr><th class="k-slot-cell k-scheduler-cell"></th></tr>
19191
19297
  @for (resource of horizontalResources; track itemIndex($index, resource)) {
19192
19298
  <tr>
19193
- <th class="k-scheduler-cell k-heading-cell"></th>
19299
+ <th class="k-scheduler-cell"></th>
19194
19300
  </tr>
19195
19301
  }
19196
19302
  </tbody>
@@ -19213,7 +19319,7 @@ class TimelineMultiDayViewComponent extends DayTimeViewComponent {
19213
19319
  <tr>
19214
19320
  @for (item of horizontalResources | resourceIterator : resourceIndex; track itemIndex($index, item)) {
19215
19321
  <th
19216
- class="k-slot-cell k-scheduler-cell k-heading-cell" [attr.colspan]="horizontalColspan(resourceIndex)">
19322
+ class="k-slot-cell k-scheduler-cell" [attr.colspan]="horizontalColspan(resourceIndex)">
19217
19323
  @if (!groupHeaderTemplateRef) {
19218
19324
  {{ getField(item, resource.textField) }}
19219
19325
  }
@@ -19228,7 +19334,7 @@ class TimelineMultiDayViewComponent extends DayTimeViewComponent {
19228
19334
  <tr class="k-scheduler-date-group">
19229
19335
  @for (resource of horizontalResources | resourceIterator; track itemIndex($index, resource)) {
19230
19336
  @for (daySlot of daySlots; track itemIndex(index, daySlot); let index = $index) {
19231
- <th [attr.colspan]="timeSlots.length" class="k-scheduler-cell k-heading-cell k-slot-cell">
19337
+ <th [attr.colspan]="timeSlots.length" class="k-scheduler-cell k-slot-cell">
19232
19338
  @if (!dateHeaderTemplateRef) {
19233
19339
  <span class="k-link k-nav-day" [attr.data-dayslot-index]="index">{{ daySlot.start | kendoDate: 'm'}}</span>
19234
19340
  }
@@ -19244,7 +19350,7 @@ class TimelineMultiDayViewComponent extends DayTimeViewComponent {
19244
19350
  @for (daySlot of daySlots; track itemIndex(rangeIndex, daySlot); let rangeIndex = $index) {
19245
19351
  @for (timeSlot of timeSlots; track itemIndex(index, timeSlot); let index = $index) {
19246
19352
  @if (timeSlot.isMajor) {
19247
- <th [attr.colspan]="timeColspan(index)" class="k-scheduler-cell k-heading-cell">
19353
+ <th [attr.colspan]="timeColspan(index)" class="k-scheduler-cell">
19248
19354
  @if (!majorTimeHeaderTemplateRef) {
19249
19355
  {{ timeSlot.start | kendoDate: 't' }}
19250
19356
  }
@@ -19256,7 +19362,7 @@ class TimelineMultiDayViewComponent extends DayTimeViewComponent {
19256
19362
  @if (!timeSlot.isMajor && minorTimeHeaderTemplateRef) {
19257
19363
  <th
19258
19364
  [ngStyle]="{'border-left-color': 'transparent', 'border-right-color': 'transparent'}"
19259
- class="k-scheduler-cell k-heading-cell"
19365
+ class="k-scheduler-cell"
19260
19366
  >
19261
19367
  <ng-container [ngTemplateOutlet]="minorTimeHeaderTemplateRef" [ngTemplateOutletContext]="{ date: timeSlot.start }">
19262
19368
  </ng-container>
@@ -19279,7 +19385,7 @@ class TimelineMultiDayViewComponent extends DayTimeViewComponent {
19279
19385
  <tbody>
19280
19386
  @if (!verticalResources.length) {
19281
19387
  <tr>
19282
- <th rowspan="1" #titleCell class="k-scheduler-cell k-heading-cell">
19388
+ <th rowspan="1" #titleCell class="k-scheduler-cell">
19283
19389
  {{ allEventsMessage }}
19284
19390
  </th>
19285
19391
  </tr>
@@ -19289,7 +19395,7 @@ class TimelineMultiDayViewComponent extends DayTimeViewComponent {
19289
19395
  <tr #verticalResourceRows>
19290
19396
  @for (resource of verticalResources; track itemIndex(resourceIndex, resource); let resourceIndex = $index) {
19291
19397
  @if (verticalItem(leafIndex, resourceIndex)) {
19292
- <th [attr.rowspan]="verticalRowspan(resourceIndex)" class="k-slot-cell k-scheduler-cell k-heading-cell">
19398
+ <th [attr.rowspan]="verticalRowspan(resourceIndex)" class="k-slot-cell k-scheduler-cell">
19293
19399
  <div>
19294
19400
  @if (!groupHeaderTemplateRef) {
19295
19401
  {{ getField(verticalItem(leafIndex, resourceIndex), resource.textField) }}
@@ -19427,13 +19533,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
19427
19533
  <tr class="k-scheduler-head">
19428
19534
  <td>
19429
19535
  <div class="k-scheduler-times" #timesHeader>
19430
- <table class="k-scheduler-table" aria-hidden="true">
19536
+ <table class="k-scheduler-table" #timesHeaderTable aria-hidden="true">
19431
19537
  <tbody>
19432
- <tr><th class="k-scheduler-cell k-heading-cell"></th></tr>
19433
- <tr><th class="k-slot-cell k-scheduler-cell k-heading-cell"></th></tr>
19538
+ <tr><th class="k-scheduler-cell"></th></tr>
19539
+ <tr><th class="k-slot-cell k-scheduler-cell"></th></tr>
19434
19540
  @for (resource of horizontalResources; track itemIndex($index, resource)) {
19435
19541
  <tr>
19436
- <th class="k-scheduler-cell k-heading-cell"></th>
19542
+ <th class="k-scheduler-cell"></th>
19437
19543
  </tr>
19438
19544
  }
19439
19545
  </tbody>
@@ -19456,7 +19562,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
19456
19562
  <tr>
19457
19563
  @for (item of horizontalResources | resourceIterator : resourceIndex; track itemIndex($index, item)) {
19458
19564
  <th
19459
- class="k-slot-cell k-scheduler-cell k-heading-cell" [attr.colspan]="horizontalColspan(resourceIndex)">
19565
+ class="k-slot-cell k-scheduler-cell" [attr.colspan]="horizontalColspan(resourceIndex)">
19460
19566
  @if (!groupHeaderTemplateRef) {
19461
19567
  {{ getField(item, resource.textField) }}
19462
19568
  }
@@ -19471,7 +19577,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
19471
19577
  <tr class="k-scheduler-date-group">
19472
19578
  @for (resource of horizontalResources | resourceIterator; track itemIndex($index, resource)) {
19473
19579
  @for (daySlot of daySlots; track itemIndex(index, daySlot); let index = $index) {
19474
- <th [attr.colspan]="timeSlots.length" class="k-scheduler-cell k-heading-cell k-slot-cell">
19580
+ <th [attr.colspan]="timeSlots.length" class="k-scheduler-cell k-slot-cell">
19475
19581
  @if (!dateHeaderTemplateRef) {
19476
19582
  <span class="k-link k-nav-day" [attr.data-dayslot-index]="index">{{ daySlot.start | kendoDate: 'm'}}</span>
19477
19583
  }
@@ -19487,7 +19593,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
19487
19593
  @for (daySlot of daySlots; track itemIndex(rangeIndex, daySlot); let rangeIndex = $index) {
19488
19594
  @for (timeSlot of timeSlots; track itemIndex(index, timeSlot); let index = $index) {
19489
19595
  @if (timeSlot.isMajor) {
19490
- <th [attr.colspan]="timeColspan(index)" class="k-scheduler-cell k-heading-cell">
19596
+ <th [attr.colspan]="timeColspan(index)" class="k-scheduler-cell">
19491
19597
  @if (!majorTimeHeaderTemplateRef) {
19492
19598
  {{ timeSlot.start | kendoDate: 't' }}
19493
19599
  }
@@ -19499,7 +19605,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
19499
19605
  @if (!timeSlot.isMajor && minorTimeHeaderTemplateRef) {
19500
19606
  <th
19501
19607
  [ngStyle]="{'border-left-color': 'transparent', 'border-right-color': 'transparent'}"
19502
- class="k-scheduler-cell k-heading-cell"
19608
+ class="k-scheduler-cell"
19503
19609
  >
19504
19610
  <ng-container [ngTemplateOutlet]="minorTimeHeaderTemplateRef" [ngTemplateOutletContext]="{ date: timeSlot.start }">
19505
19611
  </ng-container>
@@ -19522,7 +19628,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
19522
19628
  <tbody>
19523
19629
  @if (!verticalResources.length) {
19524
19630
  <tr>
19525
- <th rowspan="1" #titleCell class="k-scheduler-cell k-heading-cell">
19631
+ <th rowspan="1" #titleCell class="k-scheduler-cell">
19526
19632
  {{ allEventsMessage }}
19527
19633
  </th>
19528
19634
  </tr>
@@ -19532,7 +19638,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
19532
19638
  <tr #verticalResourceRows>
19533
19639
  @for (resource of verticalResources; track itemIndex(resourceIndex, resource); let resourceIndex = $index) {
19534
19640
  @if (verticalItem(leafIndex, resourceIndex)) {
19535
- <th [attr.rowspan]="verticalRowspan(resourceIndex)" class="k-slot-cell k-scheduler-cell k-heading-cell">
19641
+ <th [attr.rowspan]="verticalRowspan(resourceIndex)" class="k-slot-cell k-scheduler-cell">
19536
19642
  <div>
19537
19643
  @if (!groupHeaderTemplateRef) {
19538
19644
  {{ getField(verticalItem(leafIndex, resourceIndex), resource.textField) }}
@@ -19670,9 +19776,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
19670
19776
  }], verticalResourceRows: [{
19671
19777
  type: ViewChildren,
19672
19778
  args: ['verticalResourceRows']
19673
- }], headerTable: [{
19674
- type: ViewChild,
19675
- args: ['headerTable']
19676
19779
  }] } });
19677
19780
 
19678
19781
  /**
@@ -20279,16 +20382,16 @@ class YearViewInternalComponent extends BaseView {
20279
20382
  tooltip;
20280
20383
  get arrowIcons() {
20281
20384
  return !this.localization.rtl
20282
- ? ['caret-alt-left', 'caret-alt-right']
20283
- : ['caret-alt-right', 'caret-alt-left'];
20385
+ ? ['chevron-left', 'chevron-right']
20386
+ : ['chevron-right', 'chevron-left'];
20284
20387
  }
20285
20388
  get arrowSVGIcons() {
20286
20389
  return !this.localization.rtl
20287
- ? [this.caretAltLeftIcon, this.caretAltRightIcon]
20288
- : [this.caretAltRightIcon, this.caretAltLeftIcon];
20390
+ ? [this.chevronLeftIcon, this.chevronRightIcon]
20391
+ : [this.chevronRightIcon, this.chevronLeftIcon];
20289
20392
  }
20290
- caretAltLeftIcon = caretAltLeftIcon;
20291
- caretAltRightIcon = caretAltRightIcon;
20393
+ chevronLeftIcon = chevronLeftIcon;
20394
+ chevronRightIcon = chevronRightIcon;
20292
20395
  eventsPerSelectedDay = [];
20293
20396
  days = [];
20294
20397
  focusedDate;
@@ -20593,7 +20696,7 @@ class YearViewInternalComponent extends BaseView {
20593
20696
  </div>
20594
20697
  }
20595
20698
  </ng-template>
20596
- `, isInline: true, dependencies: [{ 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: "directive", type: TooltipDirective, selector: "[kendoTooltip]", inputs: ["filter", "position", "titleTemplate", "showOn", "showAfter", "callout", "closable", "offset", "tooltipWidth", "tooltipHeight", "tooltipClass", "tooltipContentClass", "collision", "closeTitle", "tooltipTemplate"], exportAs: ["kendoTooltip"] }, { kind: "directive", type: MonthCellTemplateDirective, selector: "[kendoCalendarMonthCellTemplate]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
20699
+ `, isInline: true, dependencies: [{ 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: "directive", type: TooltipDirective, selector: "[kendoTooltip]", inputs: ["filter", "position", "titleTemplate", "showOn", "showAfter", "callout", "closable", "offset", "tooltipWidth", "tooltipHeight", "tooltipClass", "themeColor", "tooltipContentClass", "collision", "closeTitle", "tooltipTemplate"], exportAs: ["kendoTooltip"] }, { kind: "directive", type: MonthCellTemplateDirective, selector: "[kendoCalendarMonthCellTemplate]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
20597
20700
  }
20598
20701
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: YearViewInternalComponent, decorators: [{
20599
20702
  type: Component,
@@ -21565,7 +21668,7 @@ class ShortcutsDirective {
21565
21668
  }
21566
21669
  isInToolbarTemplate(element) {
21567
21670
  const isInToolbar = element.closest('.k-scheduler-toolbar');
21568
- const isInBuiltInElement = element.closest('.k-toolbar-group') ||
21671
+ const isInBuiltInElement = element.closest('[kendoschedulertoolbarnavigation]') ||
21569
21672
  element.closest('.k-scheduler-views') ||
21570
21673
  element.closest('.k-views-dropdown');
21571
21674
  return isInToolbar && !isInBuiltInElement;