@progress/kendo-angular-spreadsheet 21.1.1-develop.1 → 21.2.0-develop.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,6 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Component, ElementRef, Input, Renderer2 } from '@angular/core';
6
- import { NgFor } from '@angular/common';
7
6
  import { formulaFxIcon } from '@progress/kendo-svg-icons';
8
7
  import { IconWrapperComponent } from '@progress/kendo-angular-icons';
9
8
  import { EventsOutsideAngularDirective } from '@progress/kendo-angular-common';
@@ -33,25 +32,27 @@ export class FormulaListComponent {
33
32
  ev.preventDefault();
34
33
  };
35
34
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormulaListComponent, deps: [{ token: i0.ElementRef }, { token: i1.SpreadsheetService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
36
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FormulaListComponent, isStandalone: true, selector: "kendo-spreadsheet-formula-list", inputs: { maxHeight: "maxHeight", data: "data", itemClick: "itemClick" }, ngImport: i0, template: `
35
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FormulaListComponent, isStandalone: true, selector: "kendo-spreadsheet-formula-list", inputs: { maxHeight: "maxHeight", data: "data", itemClick: "itemClick" }, ngImport: i0, template: `
37
36
  <ul #ulRef
38
- class="k-spreadsheet-formula-list k-list-ul k-list-md k-group k-reset"
39
- role="menu"
40
- [style.overflowY]="'auto'"
41
- [style.maxHeight]="maxHeight"
42
- [kendoEventsOutsideAngular]="{mousedown: handleMouseDown}">
43
- <li *ngFor="let item of data"
44
- (click)="itemClick(item.text)"
45
- class="k-list-item"
46
- role="menuitem">
47
- <kendo-icon-wrapper
48
- [svgIcon]="formulaFxIcon"
49
- name="formula-fx"
50
- ></kendo-icon-wrapper>
51
- <span className="k-list-item-text">{{item.text}}</span>
52
- </li>
37
+ class="k-spreadsheet-formula-list k-list-ul k-list-md k-group k-reset"
38
+ role="menu"
39
+ [style.overflowY]="'auto'"
40
+ [style.maxHeight]="maxHeight"
41
+ [kendoEventsOutsideAngular]="{mousedown: handleMouseDown}">
42
+ @for (item of data; track item) {
43
+ <li
44
+ (click)="itemClick(item.text)"
45
+ class="k-list-item"
46
+ role="menuitem">
47
+ <kendo-icon-wrapper
48
+ [svgIcon]="formulaFxIcon"
49
+ name="formula-fx"
50
+ ></kendo-icon-wrapper>
51
+ <span className="k-list-item-text">{{item.text}}</span>
52
+ </li>
53
+ }
53
54
  </ul>
54
- `, isInline: true, dependencies: [{ kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
55
+ `, isInline: true, dependencies: [{ kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
55
56
  }
56
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormulaListComponent, decorators: [{
57
58
  type: Component,
@@ -59,25 +60,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
59
60
  selector: 'kendo-spreadsheet-formula-list',
60
61
  template: `
61
62
  <ul #ulRef
62
- class="k-spreadsheet-formula-list k-list-ul k-list-md k-group k-reset"
63
- role="menu"
64
- [style.overflowY]="'auto'"
65
- [style.maxHeight]="maxHeight"
66
- [kendoEventsOutsideAngular]="{mousedown: handleMouseDown}">
67
- <li *ngFor="let item of data"
68
- (click)="itemClick(item.text)"
69
- class="k-list-item"
70
- role="menuitem">
71
- <kendo-icon-wrapper
72
- [svgIcon]="formulaFxIcon"
73
- name="formula-fx"
74
- ></kendo-icon-wrapper>
75
- <span className="k-list-item-text">{{item.text}}</span>
76
- </li>
63
+ class="k-spreadsheet-formula-list k-list-ul k-list-md k-group k-reset"
64
+ role="menu"
65
+ [style.overflowY]="'auto'"
66
+ [style.maxHeight]="maxHeight"
67
+ [kendoEventsOutsideAngular]="{mousedown: handleMouseDown}">
68
+ @for (item of data; track item) {
69
+ <li
70
+ (click)="itemClick(item.text)"
71
+ class="k-list-item"
72
+ role="menuitem">
73
+ <kendo-icon-wrapper
74
+ [svgIcon]="formulaFxIcon"
75
+ name="formula-fx"
76
+ ></kendo-icon-wrapper>
77
+ <span className="k-list-item-text">{{item.text}}</span>
78
+ </li>
79
+ }
77
80
  </ul>
78
- `,
81
+ `,
79
82
  standalone: true,
80
- imports: [EventsOutsideAngularDirective, NgFor, IconWrapperComponent]
83
+ imports: [EventsOutsideAngularDirective, IconWrapperComponent]
81
84
  }]
82
85
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SpreadsheetService }, { type: i0.Renderer2 }], propDecorators: { maxHeight: [{
83
86
  type: Input
@@ -2,7 +2,6 @@
2
2
  * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { NgForOf } from '@angular/common';
6
5
  import { Component, EventEmitter, Output, ViewChildren, QueryList, ElementRef, NgZone } from '@angular/core';
7
6
  import { Keys, normalizeNumpadKeys } from '@progress/kendo-angular-common';
8
7
  import { SpreadsheetService } from './spreadsheet.service';
@@ -96,42 +95,46 @@ export class ListEditorComponent {
96
95
  }
97
96
  }
98
97
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListEditorComponent, deps: [{ token: i0.NgZone }, { token: i1.SpreadsheetService }], target: i0.ɵɵFactoryTarget.Component });
99
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ListEditorComponent, isStandalone: true, selector: "ng-component", outputs: { itemSelect: "itemSelect", close: "close" }, viewQueries: [{ propertyName: "listItems", predicate: ["listItem"], descendants: true, read: ElementRef }], ngImport: i0, template: `
98
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ListEditorComponent, isStandalone: true, selector: "ng-component", outputs: { itemSelect: "itemSelect", close: "close" }, viewQueries: [{ propertyName: "listItems", predicate: ["listItem"], descendants: true, read: ElementRef }], ngImport: i0, template: `
100
99
  <ul class="k-list k-reset k-list-ul" role="listbox">
101
- <li *ngFor="let item of data; let i = index"
102
- role="option"
103
- class="k-list-item"
104
- [class.k-focus]="i === focusedIndex"
105
- [attr.aria-selected]="i === focusedIndex"
106
- [attr.tabindex]="i === focusedIndex ? 0 : -1"
107
- (click)="onItemClick(item)"
108
- (keydown)="onKeyDown($event, i)"
109
- #listItem>
110
- <span class="k-list-item-text">{{item.value}}</span>
100
+ @for (item of data; track item; let i = $index) {
101
+ <li
102
+ role="option"
103
+ class="k-list-item"
104
+ [class.k-focus]="i === focusedIndex"
105
+ [attr.aria-selected]="i === focusedIndex"
106
+ [attr.tabindex]="i === focusedIndex ? 0 : -1"
107
+ (click)="onItemClick(item)"
108
+ (keydown)="onKeyDown($event, i)"
109
+ #listItem>
110
+ <span class="k-list-item-text">{{item.value}}</span>
111
111
  </li>
112
+ }
112
113
  </ul>
113
- `, isInline: true, dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
114
+ `, isInline: true });
114
115
  }
115
116
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListEditorComponent, decorators: [{
116
117
  type: Component,
117
118
  args: [{
118
119
  template: `
119
120
  <ul class="k-list k-reset k-list-ul" role="listbox">
120
- <li *ngFor="let item of data; let i = index"
121
- role="option"
122
- class="k-list-item"
123
- [class.k-focus]="i === focusedIndex"
124
- [attr.aria-selected]="i === focusedIndex"
125
- [attr.tabindex]="i === focusedIndex ? 0 : -1"
126
- (click)="onItemClick(item)"
127
- (keydown)="onKeyDown($event, i)"
128
- #listItem>
129
- <span class="k-list-item-text">{{item.value}}</span>
121
+ @for (item of data; track item; let i = $index) {
122
+ <li
123
+ role="option"
124
+ class="k-list-item"
125
+ [class.k-focus]="i === focusedIndex"
126
+ [attr.aria-selected]="i === focusedIndex"
127
+ [attr.tabindex]="i === focusedIndex ? 0 : -1"
128
+ (click)="onItemClick(item)"
129
+ (keydown)="onKeyDown($event, i)"
130
+ #listItem>
131
+ <span class="k-list-item-text">{{item.value}}</span>
130
132
  </li>
133
+ }
131
134
  </ul>
132
- `,
135
+ `,
133
136
  standalone: true,
134
- imports: [NgForOf]
137
+ imports: []
135
138
  }]
136
139
  }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.SpreadsheetService }], propDecorators: { itemSelect: [{
137
140
  type: Output
@@ -10,7 +10,7 @@ export const packageMetadata = {
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCode: 'KENDOUIANGULAR',
12
12
  productCodes: ['KENDOUIANGULAR'],
13
- publishDate: 1763645661,
14
- version: '21.1.1-develop.1',
13
+ publishDate: 1763998296,
14
+ version: '21.2.0-develop.1',
15
15
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning',
16
16
  };
@@ -3,7 +3,6 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Component } from '@angular/core';
6
- import { NgIf } from '@angular/common';
7
6
  import { DialogRef, DialogContentBase } from '@progress/kendo-angular-dialog';
8
7
  import { TextBoxComponent } from '@progress/kendo-angular-inputs';
9
8
  import { LabelComponent } from '@progress/kendo-angular-label';
@@ -27,49 +26,53 @@ export class ActionDialogComponent extends DialogContentBase {
27
26
  this.commandName = args.commandName;
28
27
  }
29
28
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ActionDialogComponent, deps: [{ token: i1.DialogRef }], target: i0.ɵɵFactoryTarget.Component });
30
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ActionDialogComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
31
- <ng-container *ngIf="commandName === 'delete'">
32
- <p>The deleted sheet data will be lost.</p>
33
- <p>Are you sure you want to proceed?</p>
34
- </ng-container>
35
-
36
- <form class="k-form k-form-md" *ngIf="commandName === 'rename'" method="dialog">
29
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ActionDialogComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
30
+ @if (commandName === 'delete') {
31
+ <p>The deleted sheet data will be lost.</p>
32
+ <p>Are you sure you want to proceed?</p>
33
+ }
34
+
35
+ @if (commandName === 'rename') {
36
+ <form class="k-form k-form-md" method="dialog">
37
37
  <div class="k-form-field">
38
- <kendo-label [for]="textbox" text="Rename sheet"></kendo-label>
39
- <div class="k-form-field-wrap">
40
- <kendo-textbox #textbox
41
- autocomplete="off"
42
- placeholder="Sheet name"
43
- [(value)]="value">
44
- </kendo-textbox>
45
- </div>
38
+ <kendo-label [for]="textbox" text="Rename sheet"></kendo-label>
39
+ <div class="k-form-field-wrap">
40
+ <kendo-textbox #textbox
41
+ autocomplete="off"
42
+ placeholder="Sheet name"
43
+ [(value)]="value">
44
+ </kendo-textbox>
45
+ </div>
46
46
  </div>
47
- </form>
48
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "component", type: TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }] });
47
+ </form>
48
+ }
49
+ `, isInline: true, dependencies: [{ kind: "component", type: LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }, { kind: "component", type: TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }] });
49
50
  }
50
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ActionDialogComponent, decorators: [{
51
52
  type: Component,
52
53
  args: [{
53
54
  template: `
54
- <ng-container *ngIf="commandName === 'delete'">
55
- <p>The deleted sheet data will be lost.</p>
56
- <p>Are you sure you want to proceed?</p>
57
- </ng-container>
58
-
59
- <form class="k-form k-form-md" *ngIf="commandName === 'rename'" method="dialog">
55
+ @if (commandName === 'delete') {
56
+ <p>The deleted sheet data will be lost.</p>
57
+ <p>Are you sure you want to proceed?</p>
58
+ }
59
+
60
+ @if (commandName === 'rename') {
61
+ <form class="k-form k-form-md" method="dialog">
60
62
  <div class="k-form-field">
61
- <kendo-label [for]="textbox" text="Rename sheet"></kendo-label>
62
- <div class="k-form-field-wrap">
63
- <kendo-textbox #textbox
64
- autocomplete="off"
65
- placeholder="Sheet name"
66
- [(value)]="value">
67
- </kendo-textbox>
68
- </div>
63
+ <kendo-label [for]="textbox" text="Rename sheet"></kendo-label>
64
+ <div class="k-form-field-wrap">
65
+ <kendo-textbox #textbox
66
+ autocomplete="off"
67
+ placeholder="Sheet name"
68
+ [(value)]="value">
69
+ </kendo-textbox>
70
+ </div>
69
71
  </div>
70
- </form>
71
- `,
72
+ </form>
73
+ }
74
+ `,
72
75
  standalone: true,
73
- imports: [NgIf, LabelComponent, TextBoxComponent]
76
+ imports: [LabelComponent, TextBoxComponent]
74
77
  }]
75
78
  }], ctorParameters: () => [{ type: i1.DialogRef }] });
@@ -3,7 +3,6 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Component, ElementRef, HostBinding, Input, NgZone, QueryList, Renderer2, ViewChild, ViewChildren } from '@angular/core';
6
- import { NgFor, NgIf } from '@angular/common';
7
6
  import { Subscription } from 'rxjs';
8
7
  import { take } from 'rxjs/operators';
9
8
  import { ButtonComponent, DropDownButtonComponent } from '@progress/kendo-angular-buttons';
@@ -31,9 +30,11 @@ export class SheetsBarComponent {
31
30
  dialogService;
32
31
  ngZone;
33
32
  hostClasses = true;
33
+ trackByItemKey = (index, item) => this.hiding ? item : index;
34
34
  sheets;
35
35
  sheetDescriptors;
36
36
  subs = new Subscription();
37
+ hiding = false;
37
38
  constructor(spreadsheetService, element, renderer, localization, dialogService, ngZone) {
38
39
  this.spreadsheetService = spreadsheetService;
39
40
  this.element = element;
@@ -226,6 +227,7 @@ export class SheetsBarComponent {
226
227
  this.notifySheetsChange();
227
228
  },
228
229
  hide: (sheet) => {
230
+ this.hiding = true;
229
231
  sheet.state = 'hidden';
230
232
  const sheets = this.spreadsheetService.spreadsheet.sheets();
231
233
  const sheetIndex = sheets.findIndex(s => s.name() === sheet.text);
@@ -281,65 +283,66 @@ export class SheetsBarComponent {
281
283
  svgIcon: this.hiddenStateSVGIcons[sheet.state]
282
284
  }));
283
285
  });
284
- this.ngZone.onStable.pipe(take(1)).subscribe(() => this.spreadsheetService.spreadsheet.view.clipboard.focus());
286
+ this.ngZone.onStable.pipe(take(1)).subscribe(() => { this.spreadsheetService.spreadsheet.view.clipboard.focus(); this.hiding = false; });
285
287
  }
286
288
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SheetsBarComponent, deps: [{ token: i1.SpreadsheetService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i2.SpreadsheetLocalizationService }, { token: i3.DialogService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
287
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SheetsBarComponent, isStandalone: true, selector: "[kendoSpreadsheetSheetsBar]", inputs: { sheets: "sheets", sheetDescriptors: "sheetDescriptors" }, host: { properties: { "class.k-spreadsheet-sheets-bar": "this.hostClasses" } }, viewQueries: [{ propertyName: "addButton", first: true, predicate: ["addButton"], descendants: true }, { propertyName: "menuButton", first: true, predicate: ["menuButton"], descendants: true }, { propertyName: "tabstrip", first: true, predicate: ["tabstrip"], descendants: true }, { propertyName: "actionDdbs", predicate: ["sheetDdb"], descendants: true }, { propertyName: "actionDdbRefs", predicate: ["sheetDdb"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: `
289
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SheetsBarComponent, isStandalone: true, selector: "[kendoSpreadsheetSheetsBar]", inputs: { sheets: "sheets", sheetDescriptors: "sheetDescriptors" }, host: { properties: { "class.k-spreadsheet-sheets-bar": "this.hostClasses" } }, viewQueries: [{ propertyName: "addButton", first: true, predicate: ["addButton"], descendants: true }, { propertyName: "menuButton", first: true, predicate: ["menuButton"], descendants: true }, { propertyName: "tabstrip", first: true, predicate: ["tabstrip"], descendants: true }, { propertyName: "actionDdbs", predicate: ["sheetDdb"], descendants: true }, { propertyName: "actionDdbRefs", predicate: ["sheetDdb"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: `
288
290
  <button kendoButton #addButton
289
- [title]="messageFor('addSheet')"
290
- type="button"
291
- fillMode="flat"
292
- class="k-spreadsheet-sheet-add"
293
- icon="plus"
294
- [svgIcon]="plusIcon"
295
- [kendoEventsOutsideAngular]="{click: onAddClick}"
296
- [attr.aria-controls]="tablistId">
291
+ [title]="messageFor('addSheet')"
292
+ type="button"
293
+ fillMode="flat"
294
+ class="k-spreadsheet-sheet-add"
295
+ icon="plus"
296
+ [svgIcon]="plusIcon"
297
+ [kendoEventsOutsideAngular]="{click: onAddClick}"
298
+ [attr.aria-controls]="tablistId">
297
299
  </button>
298
300
  <kendo-dropdownbutton #menuButton
299
- fillMode="flat"
300
- buttonClass="k-spreadsheet-sheets-menu"
301
- icon="menu"
302
- [svgIcon]="menuIcon"
303
- [data]="sheetsMenuList"
304
- (itemClick)="onMenuItemClick($event)"
305
- (open)="onOpen(menuButton)"
306
- [buttonAttributes]="{title: messageFor('sheetsMenu')}"
307
- [attr.aria-controls]="tablistId">
301
+ fillMode="flat"
302
+ buttonClass="k-spreadsheet-sheets-menu"
303
+ icon="menu"
304
+ [svgIcon]="menuIcon"
305
+ [data]="sheetsMenuList"
306
+ (itemClick)="onMenuItemClick($event)"
307
+ (open)="onOpen(menuButton)"
308
+ [buttonAttributes]="{title: messageFor('sheetsMenu')}"
309
+ [attr.aria-controls]="tablistId">
308
310
  </kendo-dropdownbutton>
309
311
  <kendo-tabstrip #tabstrip
310
- [tabPosition]="'bottom'"
311
- [showContentArea]="false"
312
- [scrollable]="{ scrollButtonsPosition: 'end', mouseScroll: false }"
313
- class="k-spreadsheet-sheets"
314
- (tabSelect)="onTabSelect($event)">
315
- <ng-container *ngFor="let sheet of sheets">
316
- <kendo-tabstrip-tab
317
- *ngIf="sheet.state === 'visible'"
318
- [title]="sheet.text"
319
- [selected]="sheet.text === activeSheet">
320
- <ng-template kendoTabTemplate>
321
- <span class="k-link">
322
- <span class="k-link-text">{{sheet.text}}</span>
323
- </span>
324
- <span class="k-item-actions">
325
- <kendo-dropdownbutton #sheetDdb
326
- fillMode="flat"
327
- icon="caret-alt-down"
328
- [svgIcon]="caretAltDownIcon"
329
- buttonClass="k-menu-button"
330
- [data]="sheet.sheetActions"
331
- [buttonAttributes]="{'aria-hidden': 'true', 'tabindex': '-1', role: 'presentation'}"
332
- (open)="onOpen(sheetDdb)"
333
- (close)="onClose()"
334
- (click)="$event.stopPropagation()"
335
- (itemClick)="onActionClick($event, sheet)">
336
- </kendo-dropdownbutton>
337
- </span>
338
- </ng-template>
339
- </kendo-tabstrip-tab>
340
- </ng-container>
312
+ [tabPosition]="'bottom'"
313
+ [showContentArea]="false"
314
+ [scrollable]="{ scrollButtonsPosition: 'end', mouseScroll: false }"
315
+ class="k-spreadsheet-sheets"
316
+ (tabSelect)="onTabSelect($event)">
317
+ @for (sheet of sheets; track trackByItemKey($index, sheet)) {
318
+ @if (sheet.state === 'visible') {
319
+ <kendo-tabstrip-tab
320
+ [title]="sheet.text"
321
+ [selected]="sheet.text === activeSheet">
322
+ <ng-template kendoTabTemplate>
323
+ <span class="k-link">
324
+ <span class="k-link-text">{{sheet.text}}</span>
325
+ </span>
326
+ <span class="k-item-actions">
327
+ <kendo-dropdownbutton #sheetDdb
328
+ fillMode="flat"
329
+ icon="caret-alt-down"
330
+ [svgIcon]="caretAltDownIcon"
331
+ buttonClass="k-menu-button"
332
+ [data]="sheet.sheetActions"
333
+ [buttonAttributes]="{'aria-hidden': 'true', 'tabindex': '-1', role: 'presentation'}"
334
+ (open)="onOpen(sheetDdb)"
335
+ (close)="onClose()"
336
+ (click)="$event.stopPropagation()"
337
+ (itemClick)="onActionClick($event, sheet)">
338
+ </kendo-dropdownbutton>
339
+ </span>
340
+ </ng-template>
341
+ </kendo-tabstrip-tab>
342
+ }
343
+ }
341
344
  </kendo-tabstrip>
342
- `, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: DropDownButtonComponent, selector: "kendo-dropdownbutton", inputs: ["arrowIcon", "icon", "svgIcon", "iconClass", "imageUrl", "textField", "data", "size", "rounded", "fillMode", "themeColor", "buttonAttributes"], outputs: ["itemClick", "focus", "blur"], exportAs: ["kendoDropDownButton"] }, { kind: "component", type: TabStripComponent, selector: "kendo-tabstrip", inputs: ["height", "animate", "tabAlignment", "tabPosition", "keepTabContent", "closable", "scrollable", "size", "closeIcon", "closeIconClass", "closeSVGIcon", "showContentArea"], outputs: ["tabSelect", "tabClose", "tabScroll"], exportAs: ["kendoTabStrip"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TabStripTabComponent, selector: "kendo-tabstrip-tab", inputs: ["title", "disabled", "cssClass", "cssStyle", "selected", "closable", "closeIcon", "closeIconClass", "closeSVGIcon"], exportAs: ["kendoTabStripTab"] }, { kind: "directive", type: TabTemplateDirective, selector: "[kendoTabTemplate]" }] });
345
+ `, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: DropDownButtonComponent, selector: "kendo-dropdownbutton", inputs: ["arrowIcon", "icon", "svgIcon", "iconClass", "imageUrl", "textField", "data", "size", "rounded", "fillMode", "themeColor", "buttonAttributes"], outputs: ["itemClick", "focus", "blur"], exportAs: ["kendoDropDownButton"] }, { kind: "component", type: TabStripComponent, selector: "kendo-tabstrip", inputs: ["height", "animate", "tabAlignment", "tabPosition", "keepTabContent", "closable", "scrollable", "size", "closeIcon", "closeIconClass", "closeSVGIcon", "showContentArea"], outputs: ["tabSelect", "tabClose", "tabScroll"], exportAs: ["kendoTabStrip"] }, { kind: "component", type: TabStripTabComponent, selector: "kendo-tabstrip-tab", inputs: ["title", "disabled", "cssClass", "cssStyle", "selected", "closable", "closeIcon", "closeIconClass", "closeSVGIcon"], exportAs: ["kendoTabStripTab"] }, { kind: "directive", type: TabTemplateDirective, selector: "[kendoTabTemplate]" }] });
343
346
  }
344
347
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SheetsBarComponent, decorators: [{
345
348
  type: Component,
@@ -347,62 +350,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
347
350
  selector: '[kendoSpreadsheetSheetsBar]',
348
351
  template: `
349
352
  <button kendoButton #addButton
350
- [title]="messageFor('addSheet')"
351
- type="button"
352
- fillMode="flat"
353
- class="k-spreadsheet-sheet-add"
354
- icon="plus"
355
- [svgIcon]="plusIcon"
356
- [kendoEventsOutsideAngular]="{click: onAddClick}"
357
- [attr.aria-controls]="tablistId">
353
+ [title]="messageFor('addSheet')"
354
+ type="button"
355
+ fillMode="flat"
356
+ class="k-spreadsheet-sheet-add"
357
+ icon="plus"
358
+ [svgIcon]="plusIcon"
359
+ [kendoEventsOutsideAngular]="{click: onAddClick}"
360
+ [attr.aria-controls]="tablistId">
358
361
  </button>
359
362
  <kendo-dropdownbutton #menuButton
360
- fillMode="flat"
361
- buttonClass="k-spreadsheet-sheets-menu"
362
- icon="menu"
363
- [svgIcon]="menuIcon"
364
- [data]="sheetsMenuList"
365
- (itemClick)="onMenuItemClick($event)"
366
- (open)="onOpen(menuButton)"
367
- [buttonAttributes]="{title: messageFor('sheetsMenu')}"
368
- [attr.aria-controls]="tablistId">
363
+ fillMode="flat"
364
+ buttonClass="k-spreadsheet-sheets-menu"
365
+ icon="menu"
366
+ [svgIcon]="menuIcon"
367
+ [data]="sheetsMenuList"
368
+ (itemClick)="onMenuItemClick($event)"
369
+ (open)="onOpen(menuButton)"
370
+ [buttonAttributes]="{title: messageFor('sheetsMenu')}"
371
+ [attr.aria-controls]="tablistId">
369
372
  </kendo-dropdownbutton>
370
373
  <kendo-tabstrip #tabstrip
371
- [tabPosition]="'bottom'"
372
- [showContentArea]="false"
373
- [scrollable]="{ scrollButtonsPosition: 'end', mouseScroll: false }"
374
- class="k-spreadsheet-sheets"
375
- (tabSelect)="onTabSelect($event)">
376
- <ng-container *ngFor="let sheet of sheets">
377
- <kendo-tabstrip-tab
378
- *ngIf="sheet.state === 'visible'"
379
- [title]="sheet.text"
380
- [selected]="sheet.text === activeSheet">
381
- <ng-template kendoTabTemplate>
382
- <span class="k-link">
383
- <span class="k-link-text">{{sheet.text}}</span>
384
- </span>
385
- <span class="k-item-actions">
386
- <kendo-dropdownbutton #sheetDdb
387
- fillMode="flat"
388
- icon="caret-alt-down"
389
- [svgIcon]="caretAltDownIcon"
390
- buttonClass="k-menu-button"
391
- [data]="sheet.sheetActions"
392
- [buttonAttributes]="{'aria-hidden': 'true', 'tabindex': '-1', role: 'presentation'}"
393
- (open)="onOpen(sheetDdb)"
394
- (close)="onClose()"
395
- (click)="$event.stopPropagation()"
396
- (itemClick)="onActionClick($event, sheet)">
397
- </kendo-dropdownbutton>
398
- </span>
399
- </ng-template>
400
- </kendo-tabstrip-tab>
401
- </ng-container>
374
+ [tabPosition]="'bottom'"
375
+ [showContentArea]="false"
376
+ [scrollable]="{ scrollButtonsPosition: 'end', mouseScroll: false }"
377
+ class="k-spreadsheet-sheets"
378
+ (tabSelect)="onTabSelect($event)">
379
+ @for (sheet of sheets; track trackByItemKey($index, sheet)) {
380
+ @if (sheet.state === 'visible') {
381
+ <kendo-tabstrip-tab
382
+ [title]="sheet.text"
383
+ [selected]="sheet.text === activeSheet">
384
+ <ng-template kendoTabTemplate>
385
+ <span class="k-link">
386
+ <span class="k-link-text">{{sheet.text}}</span>
387
+ </span>
388
+ <span class="k-item-actions">
389
+ <kendo-dropdownbutton #sheetDdb
390
+ fillMode="flat"
391
+ icon="caret-alt-down"
392
+ [svgIcon]="caretAltDownIcon"
393
+ buttonClass="k-menu-button"
394
+ [data]="sheet.sheetActions"
395
+ [buttonAttributes]="{'aria-hidden': 'true', 'tabindex': '-1', role: 'presentation'}"
396
+ (open)="onOpen(sheetDdb)"
397
+ (close)="onClose()"
398
+ (click)="$event.stopPropagation()"
399
+ (itemClick)="onActionClick($event, sheet)">
400
+ </kendo-dropdownbutton>
401
+ </span>
402
+ </ng-template>
403
+ </kendo-tabstrip-tab>
404
+ }
405
+ }
402
406
  </kendo-tabstrip>
403
- `,
407
+ `,
404
408
  standalone: true,
405
- imports: [ButtonComponent, EventsOutsideAngularDirective, DropDownButtonComponent, TabStripComponent, NgFor, NgIf, TabStripTabComponent, TabTemplateDirective]
409
+ imports: [ButtonComponent, EventsOutsideAngularDirective, DropDownButtonComponent, TabStripComponent, TabStripTabComponent, TabTemplateDirective]
406
410
  }]
407
411
  }], ctorParameters: () => [{ type: i1.SpreadsheetService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i2.SpreadsheetLocalizationService }, { type: i3.DialogService }, { type: i0.NgZone }], propDecorators: { hostClasses: [{
408
412
  type: HostBinding,