@progress/kendo-angular-spreadsheet 21.4.1-develop.1 → 22.0.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.
- package/fesm2022/progress-kendo-angular-spreadsheet.mjs +183 -183
- package/package.json +22 -30
- package/schematics/ngAdd/index.js +2 -2
- package/tools/shared/spreadsheet-command-base.d.ts +1 -1
- package/tools/shared/spreadsheet-dropdown-tools-base.d.ts +1 -1
- package/tools/shared/spreadsheet-dropdownlist.base.d.ts +1 -1
- package/esm2022/action-bar/formula-input.directive.mjs +0 -183
- package/esm2022/action-bar/list.component.mjs +0 -91
- package/esm2022/action-bar/namebox.component.mjs +0 -134
- package/esm2022/common/calendar-editor.component.mjs +0 -48
- package/esm2022/common/error-handling.service.mjs +0 -99
- package/esm2022/common/list-editor.component.mjs +0 -146
- package/esm2022/common/main-menu.directive.mjs +0 -30
- package/esm2022/common/sheet-changes.mjs +0 -5
- package/esm2022/common/spreadsheet.service.mjs +0 -49
- package/esm2022/directives.mjs +0 -94
- package/esm2022/filter-menu/filter-menu-item-content-template.directive.mjs +0 -26
- package/esm2022/filter-menu/filter-menu-item.component.mjs +0 -271
- package/esm2022/index.mjs +0 -14
- package/esm2022/localization/custom-messages.component.mjs +0 -52
- package/esm2022/localization/localized-messages.directive.mjs +0 -35
- package/esm2022/localization/messages.mjs +0 -884
- package/esm2022/localization/spreadsheet-localization.service.mjs +0 -31
- package/esm2022/models/cell-editor-action-args.mjs +0 -5
- package/esm2022/models/cell-editor-options.mjs +0 -5
- package/esm2022/models/events.mjs +0 -5
- package/esm2022/models/filter-menu-item.mjs +0 -5
- package/esm2022/models/index.mjs +0 -11
- package/esm2022/models/main-menu-item.mjs +0 -5
- package/esm2022/models/range-filter-value.mjs +0 -5
- package/esm2022/models/sheet-info.mjs +0 -5
- package/esm2022/package-metadata.mjs +0 -16
- package/esm2022/progress-kendo-angular-spreadsheet.mjs +0 -8
- package/esm2022/sheets-bar/action-dialog.component.mjs +0 -78
- package/esm2022/sheets-bar/sheets-bar.component.mjs +0 -433
- package/esm2022/sheets-bar/utils.mjs +0 -49
- package/esm2022/spreadsheet.component.mjs +0 -2408
- package/esm2022/spreadsheet.module.mjs +0 -72
- package/esm2022/tools/align/align-tool.directive.mjs +0 -62
- package/esm2022/tools/align/horizontal-align-tool.directive.mjs +0 -62
- package/esm2022/tools/align/vertical-align-tool.directive.mjs +0 -62
- package/esm2022/tools/colorpicker/spreadsheet-backcolor.component.mjs +0 -142
- package/esm2022/tools/colorpicker/spreadsheet-forecolor.component.mjs +0 -142
- package/esm2022/tools/data-validation-dialog.component.mjs +0 -481
- package/esm2022/tools/data-validation-tool.directive.mjs +0 -156
- package/esm2022/tools/decrease-decimal-tool.directive.mjs +0 -41
- package/esm2022/tools/filter-sort/filter-tool.directive.mjs +0 -89
- package/esm2022/tools/filter-sort/sort-tool.directive.mjs +0 -62
- package/esm2022/tools/font-family/font-family-dropdownlist.component.mjs +0 -59
- package/esm2022/tools/font-family/spreadsheet-fontfamily-tool.component.mjs +0 -114
- package/esm2022/tools/font-size/decrease-font-tool.directive.mjs +0 -52
- package/esm2022/tools/font-size/font-size-dropdownlist.component.mjs +0 -46
- package/esm2022/tools/font-size/increase-font-tool.directive.mjs +0 -52
- package/esm2022/tools/font-size/spreadsheet-fontsize-tool.component.mjs +0 -114
- package/esm2022/tools/format-tool.directive.mjs +0 -65
- package/esm2022/tools/gridlines-tool.directive.mjs +0 -47
- package/esm2022/tools/history/redo-tool.mjs +0 -37
- package/esm2022/tools/history/undo-tool.mjs +0 -37
- package/esm2022/tools/increase-decimal-tool.directive.mjs +0 -41
- package/esm2022/tools/index.mjs +0 -30
- package/esm2022/tools/insert/insert-link-dialog.component.mjs +0 -53
- package/esm2022/tools/insert/insert-link-tool.directive.mjs +0 -97
- package/esm2022/tools/load-file.component.mjs +0 -226
- package/esm2022/tools/save-file-tool.directive.mjs +0 -58
- package/esm2022/tools/shared/command-icons.mjs +0 -121
- package/esm2022/tools/shared/commands.mjs +0 -5
- package/esm2022/tools/shared/constants.mjs +0 -77
- package/esm2022/tools/shared/dialog-content.component.mjs +0 -130
- package/esm2022/tools/shared/spreadsheet-command-base.mjs +0 -73
- package/esm2022/tools/shared/spreadsheet-command-button.mjs +0 -31
- package/esm2022/tools/shared/spreadsheet-dropdown-tools-base.mjs +0 -194
- package/esm2022/tools/shared/spreadsheet-dropdownlist.base.mjs +0 -54
- package/esm2022/tools/tables/add-column-left-button.directive.mjs +0 -37
- package/esm2022/tools/tables/add-column-right-button.directive.mjs +0 -37
- package/esm2022/tools/tables/add-row-above-button.directive.mjs +0 -37
- package/esm2022/tools/tables/add-row-below-button.directive.mjs +0 -37
- package/esm2022/tools/tables/delete-column-button.directive.mjs +0 -35
- package/esm2022/tools/tables/delete-row-button.directive.mjs +0 -35
- package/esm2022/tools/tables/index.mjs +0 -11
- package/esm2022/tools/tables/merge-tool.directive.mjs +0 -72
- package/esm2022/tools/text-wrap-tool.directive.mjs +0 -48
- package/esm2022/tools/tools.service.mjs +0 -61
- package/esm2022/tools/typographical-emphasis/bold-tool.directive.mjs +0 -37
- package/esm2022/tools/typographical-emphasis/italic-tool.directive.mjs +0 -37
- package/esm2022/tools/typographical-emphasis/underline-tool.directive.mjs +0 -37
- package/esm2022/tools/utils.mjs +0 -35
- package/esm2022/utils.mjs +0 -32
|
@@ -1,2408 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, Output, ViewChild, ViewContainerRef, TemplateRef, ChangeDetectorRef } from '@angular/core';
|
|
6
|
-
import { Subscription } from 'rxjs';
|
|
7
|
-
import { take } from 'rxjs/operators';
|
|
8
|
-
import { validatePackage } from '@progress/kendo-licensing';
|
|
9
|
-
import { packageMetadata } from './package-metadata';
|
|
10
|
-
import { SpreadsheetWidget, registerEditor, Matrix, dateToSerial, serialToDate, validation, calc, formatting } from '@progress/kendo-spreadsheet-common';
|
|
11
|
-
import { localeData, IntlService } from '@progress/kendo-angular-intl';
|
|
12
|
-
import { calendarIcon, caretAltDownIcon, downloadIcon, folderOpenIcon, formulaFxIcon, sortDescSmallIcon, sortAscSmallIcon, searchIcon } from '@progress/kendo-svg-icons';
|
|
13
|
-
import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
|
|
14
|
-
import { PopupService } from '@progress/kendo-angular-popup';
|
|
15
|
-
import { ContextMenuComponent, MenuItemComponent, MenuComponent } from '@progress/kendo-angular-menu';
|
|
16
|
-
import { Keys, hasObservers, isDocumentAvailable, isPresent, shouldShowValidationUI, getLicenseMessage, WatermarkOverlayComponent, normalizeKeys } from '@progress/kendo-angular-common';
|
|
17
|
-
import { DialogService } from '@progress/kendo-angular-dialog';
|
|
18
|
-
import { IconWrapperComponent } from '@progress/kendo-angular-icons';
|
|
19
|
-
import { ToolBarDropDownButtonComponent, ToolBarSeparatorComponent, ToolBarButtonGroupComponent, ToolBarButtonComponent, ToolBarComponent } from '@progress/kendo-angular-toolbar';
|
|
20
|
-
import { SpreadsheetService } from './common/spreadsheet.service';
|
|
21
|
-
import { SpreadsheetToolsService } from './tools/tools.service';
|
|
22
|
-
import { SpreadsheetLocalizationService } from './localization/spreadsheet-localization.service';
|
|
23
|
-
import { mapToSheetDescriptor, rowAndColPresent } from './utils';
|
|
24
|
-
import { FormulaInputDirective } from './action-bar/formula-input.directive';
|
|
25
|
-
import { getSheetActions } from './sheets-bar/utils';
|
|
26
|
-
import { ErrorHandlingService } from './common/error-handling.service';
|
|
27
|
-
import { commandIcons, commandSVGIcons } from './tools/shared/command-icons';
|
|
28
|
-
import { InsertLinkDialogComponent } from './tools/insert/insert-link-dialog.component';
|
|
29
|
-
import { SheetsBarComponent } from './sheets-bar/sheets-bar.component';
|
|
30
|
-
import { NameBoxComponent } from './action-bar/namebox.component';
|
|
31
|
-
import { SpreadsheetGridLinesDirective } from './tools/gridlines-tool.directive';
|
|
32
|
-
import { SpreadsheetMergeDirective } from './tools/tables/merge-tool.directive';
|
|
33
|
-
import { SpreadsheetIncreaseDecimalDirective } from './tools/increase-decimal-tool.directive';
|
|
34
|
-
import { SpreadsheetDecreaseDecimalDirective } from './tools/decrease-decimal-tool.directive';
|
|
35
|
-
import { SpreadsheetDeleteRowButtonDirective } from './tools/tables/delete-row-button.directive';
|
|
36
|
-
import { SpreadsheetDeleteColumnButtonDirective } from './tools/tables/delete-column-button.directive';
|
|
37
|
-
import { SpreadsheetAddRowAboveButtonDirective } from './tools/tables/add-row-above-button.directive';
|
|
38
|
-
import { SpreadsheetAddRowBelowButtonDirective } from './tools/tables/add-row-below-button.directive';
|
|
39
|
-
import { SpreadsheetAddColumnRightButtonDirective } from './tools/tables/add-column-right-button.directive';
|
|
40
|
-
import { SpreadsheetAddColumnLeftButtonDirective } from './tools/tables/add-column-left-button.directive';
|
|
41
|
-
import { SpreadsheetInsertLinkDirective } from './tools/insert/insert-link-tool.directive';
|
|
42
|
-
import { SpreadsheetFormatDirective } from './tools/format-tool.directive';
|
|
43
|
-
import { SpreadsheetTextWrapDirective } from './tools/text-wrap-tool.directive';
|
|
44
|
-
import { SpreadsheetVerticalTextAlignDirective } from './tools/align/vertical-align-tool.directive';
|
|
45
|
-
import { SpreadsheetHorizontalTextAlignDirective } from './tools/align/horizontal-align-tool.directive';
|
|
46
|
-
import { SpreadsheetBackColorComponent } from './tools/colorpicker/spreadsheet-backcolor.component';
|
|
47
|
-
import { SpreadsheetForeColorComponent } from './tools/colorpicker/spreadsheet-forecolor.component';
|
|
48
|
-
import { SpreadsheetUnderlineDirective } from './tools/typographical-emphasis/underline-tool.directive';
|
|
49
|
-
import { SpreadsheetItalicDirective } from './tools/typographical-emphasis/italic-tool.directive';
|
|
50
|
-
import { SpreadsheetBoldDirective } from './tools/typographical-emphasis/bold-tool.directive';
|
|
51
|
-
import { SpreadsheetDecreaseFontSizeDirective } from './tools/font-size/decrease-font-tool.directive';
|
|
52
|
-
import { SpreadsheetIncreaseFontSizeDirective } from './tools/font-size/increase-font-tool.directive';
|
|
53
|
-
import { SpreadsheetFontSizeComponent } from './tools/font-size/spreadsheet-fontsize-tool.component';
|
|
54
|
-
import { SpreadsheetFontFamilyComponent } from './tools/font-family/spreadsheet-fontfamily-tool.component';
|
|
55
|
-
import { SpreadsheetRedoDirective } from './tools/history/redo-tool';
|
|
56
|
-
import { SpreadsheetUndoDirective } from './tools/history/undo-tool';
|
|
57
|
-
import { SpreadsheetSaveFileDirective } from './tools/save-file-tool.directive';
|
|
58
|
-
import { SpreadsheetLoadFileComponent } from './tools/load-file.component';
|
|
59
|
-
import { MainMenuDirective } from './common/main-menu.directive';
|
|
60
|
-
import { LocalizedMessagesDirective } from './localization/localized-messages.directive';
|
|
61
|
-
import { SpreadsheetDataValidationDirective } from './tools/data-validation-tool.directive';
|
|
62
|
-
import { ListEditorComponent } from './common/list-editor.component';
|
|
63
|
-
import { CalendarComponent } from './common/calendar-editor.component';
|
|
64
|
-
import { SpreadsheetFilterDirective } from './tools/filter-sort/filter-tool.directive';
|
|
65
|
-
import { SpreadsheetFilterMenuItemComponent } from './filter-menu/filter-menu-item.component';
|
|
66
|
-
import { KENDO_TREEVIEW } from '@progress/kendo-angular-treeview';
|
|
67
|
-
import { FilterMenuItemContentTemplateDirective } from './filter-menu/filter-menu-item-content-template.directive';
|
|
68
|
-
import { ButtonComponent } from '@progress/kendo-angular-buttons';
|
|
69
|
-
import { DropDownListComponent } from "@progress/kendo-angular-dropdowns";
|
|
70
|
-
import { InputsModule } from "@progress/kendo-angular-inputs";
|
|
71
|
-
import { DatePickerComponent } from "@progress/kendo-angular-dateinputs";
|
|
72
|
-
import { SpreadsheetSortDirective } from './tools/filter-sort/sort-tool.directive';
|
|
73
|
-
import * as i0 from "@angular/core";
|
|
74
|
-
import * as i1 from "@progress/kendo-angular-intl";
|
|
75
|
-
import * as i2 from "@progress/kendo-angular-l10n";
|
|
76
|
-
import * as i3 from "./common/spreadsheet.service";
|
|
77
|
-
import * as i4 from "./tools/tools.service";
|
|
78
|
-
import * as i5 from "./common/error-handling.service";
|
|
79
|
-
import * as i6 from "@progress/kendo-angular-dialog";
|
|
80
|
-
import * as i7 from "@progress/kendo-angular-popup";
|
|
81
|
-
import * as i8 from "@progress/kendo-angular-treeview";
|
|
82
|
-
import * as i9 from "@progress/kendo-angular-inputs";
|
|
83
|
-
/**
|
|
84
|
-
* Represents the [Kendo UI Spreadsheet component for Angular]({% slug overview_spreadsheet %}).
|
|
85
|
-
*
|
|
86
|
-
* @example
|
|
87
|
-
* ```html
|
|
88
|
-
* <kendo-spreadsheet [sheets]="sheets"></kendo-spreadsheet>
|
|
89
|
-
* ```
|
|
90
|
-
*
|
|
91
|
-
* @remarks
|
|
92
|
-
* Supported children components are: {@link CustomMessagesComponent}
|
|
93
|
-
*/
|
|
94
|
-
export class SpreadsheetComponent {
|
|
95
|
-
ngZone;
|
|
96
|
-
intl;
|
|
97
|
-
host;
|
|
98
|
-
localization;
|
|
99
|
-
spreadsheetService;
|
|
100
|
-
toolsService;
|
|
101
|
-
errorService;
|
|
102
|
-
dialogService;
|
|
103
|
-
popupService;
|
|
104
|
-
container;
|
|
105
|
-
cdr;
|
|
106
|
-
formulaBarInputRef;
|
|
107
|
-
formulaCellInputRef;
|
|
108
|
-
nameBoxRef;
|
|
109
|
-
dialogContainer;
|
|
110
|
-
contextMenu;
|
|
111
|
-
filterMenuTemplate;
|
|
112
|
-
hostClass = true;
|
|
113
|
-
role = 'application';
|
|
114
|
-
/**
|
|
115
|
-
* The menu items configuration.
|
|
116
|
-
*/
|
|
117
|
-
set menuItems(items) {
|
|
118
|
-
this._menuItems = [];
|
|
119
|
-
this.ngZone.onStable.pipe(take(1)).subscribe(() => {
|
|
120
|
-
const normalizedItems = items.map(item => ({
|
|
121
|
-
active: item.active,
|
|
122
|
-
text: item.id === 'format' || item.id === 'data' ? this.messageFor(`${item.id}Tab`) : this.messageFor(item.id),
|
|
123
|
-
cssClass: item.active ? 'k-active' : null,
|
|
124
|
-
id: item.id
|
|
125
|
-
}));
|
|
126
|
-
this._menuItems = normalizedItems;
|
|
127
|
-
const activeItemIndex = this.menuItems.findIndex(item => item.active);
|
|
128
|
-
this.selectedMenuItem = this.menuItems[activeItemIndex > -1 ? activeItemIndex : 0];
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
get menuItems() {
|
|
132
|
-
return this._menuItems;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Sets the overflow option of the built-in Toolbar components.
|
|
136
|
-
* @default false
|
|
137
|
-
*/
|
|
138
|
-
overflow = false;
|
|
139
|
-
/**
|
|
140
|
-
* Sets the height of the formula list container.
|
|
141
|
-
* Accepts same values as the CSS [`style.height`](https://developer.mozilla.org/en-US/docs/Web/CSS/height) property.
|
|
142
|
-
*
|
|
143
|
-
* @default '300px'
|
|
144
|
-
*/
|
|
145
|
-
formulaListMaxHeight = '300px';
|
|
146
|
-
/**
|
|
147
|
-
* The name of the currently active sheet. Must match one of the sheet names.
|
|
148
|
-
*/
|
|
149
|
-
set activeSheet(value) {
|
|
150
|
-
this._activeSheet = value;
|
|
151
|
-
this.spreadsheetService.spreadsheet?.view?.sheetsbar.onSheetSelect(this.activeSheet);
|
|
152
|
-
}
|
|
153
|
-
get activeSheet() {
|
|
154
|
-
return this._activeSheet || this.spreadsheetService.spreadsheet?.activeSheet()?.name();
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* An array of `SheetDescriptor` objects that describe the sheets in the Spreadsheet.
|
|
158
|
-
*/
|
|
159
|
-
set sheets(value) {
|
|
160
|
-
const items = value.map((item, index, items) => ({
|
|
161
|
-
...item,
|
|
162
|
-
state: item.state || 'visible',
|
|
163
|
-
inEdit: false,
|
|
164
|
-
first: index === 0,
|
|
165
|
-
last: index === items.length - 1,
|
|
166
|
-
text: item.name,
|
|
167
|
-
active: (item.name === this.activeSheet) || items.length === 1,
|
|
168
|
-
index
|
|
169
|
-
}));
|
|
170
|
-
this._sheetsInfo = items;
|
|
171
|
-
}
|
|
172
|
-
get sheetsInfo() {
|
|
173
|
-
return this._sheetsInfo;
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* @hidden
|
|
177
|
-
*/
|
|
178
|
-
expandedKeys = ['0'];
|
|
179
|
-
/**
|
|
180
|
-
* @hidden
|
|
181
|
-
*/
|
|
182
|
-
checkedKeys = [];
|
|
183
|
-
/**
|
|
184
|
-
* The number of columns in the document.
|
|
185
|
-
*
|
|
186
|
-
* @default 50
|
|
187
|
-
*/
|
|
188
|
-
columns = 50;
|
|
189
|
-
/**
|
|
190
|
-
* The initial column width in pixels.
|
|
191
|
-
*
|
|
192
|
-
* @default 100
|
|
193
|
-
*/
|
|
194
|
-
columnWidth = 100;
|
|
195
|
-
/**
|
|
196
|
-
* The initial styles applies to the sheet cells.
|
|
197
|
-
*/
|
|
198
|
-
defaultCellStyle;
|
|
199
|
-
/**
|
|
200
|
-
* The height of the header row in pixels.
|
|
201
|
-
*
|
|
202
|
-
* @default 30
|
|
203
|
-
*/
|
|
204
|
-
headerHeight = 30;
|
|
205
|
-
/**
|
|
206
|
-
* The width of the header column in pixels.
|
|
207
|
-
*
|
|
208
|
-
* @default 32
|
|
209
|
-
*/
|
|
210
|
-
headerWidth = 32;
|
|
211
|
-
/**
|
|
212
|
-
* The initial row height in pixels.
|
|
213
|
-
*
|
|
214
|
-
* @default 30
|
|
215
|
-
*/
|
|
216
|
-
rowHeight = 30;
|
|
217
|
-
/**
|
|
218
|
-
* The number of rows in the document.
|
|
219
|
-
*
|
|
220
|
-
* @default 200
|
|
221
|
-
*/
|
|
222
|
-
rows = 200;
|
|
223
|
-
/**
|
|
224
|
-
* Sets the custom cell editors for the Spreadsheet.
|
|
225
|
-
* Accepts an array of `SpreadsheetCellEditorOptions` objects that define custom editors.
|
|
226
|
-
*/
|
|
227
|
-
cellEditors;
|
|
228
|
-
/**
|
|
229
|
-
* An object containing any images used in the Spreadsheet. The keys should be image IDs (they are referenced by this ID in `sheets.drawings`),
|
|
230
|
-
* and the values should be image URLs. The image URLs can be either [`data URLs`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs)
|
|
231
|
-
* (in which case the images are fully contained by the JSON), or external URLs.
|
|
232
|
-
*/
|
|
233
|
-
images;
|
|
234
|
-
/**
|
|
235
|
-
* Configures the Excel export settings of the Spreadsheet.
|
|
236
|
-
*/
|
|
237
|
-
excel;
|
|
238
|
-
/**
|
|
239
|
-
* Fires when a value in the Spreadsheet is changed. Exposes the `SpreadsheetWidget` instance and the selected `Range` as event data.
|
|
240
|
-
*/
|
|
241
|
-
change = new EventEmitter();
|
|
242
|
-
/**
|
|
243
|
-
* Fires when the selected range format is changed from the UI. Exposes the `SpreadsheetWidget` instance and the selected `Range` as event data.
|
|
244
|
-
*/
|
|
245
|
-
formatChange = new EventEmitter();
|
|
246
|
-
/**
|
|
247
|
-
* Fires when the selection is changed by the end user. Exposes the `SpreadsheetWidget` instance and the selected `Range` as event data.
|
|
248
|
-
*/
|
|
249
|
-
selectionChange = new EventEmitter();
|
|
250
|
-
/**
|
|
251
|
-
* Fires when the end user clicks the Export to Excel toolbar button.
|
|
252
|
-
* The event is preventable and exposes the `Workbook` object, a `preventDefault` method
|
|
253
|
-
* (if invoked, the generated file will not be saved), and the `SpreadsheetWidget` instance.
|
|
254
|
-
*/
|
|
255
|
-
excelExport = new EventEmitter();
|
|
256
|
-
/**
|
|
257
|
-
* Fires when the end user clicks the Open toolbar button.
|
|
258
|
-
* The event is preventable and exposes the selected `File` or `Blob`, a `preventDefault` method
|
|
259
|
-
* (if invoked, the selected file will not be loaded), and the `SpreadsheetWidget` instance.
|
|
260
|
-
*/
|
|
261
|
-
excelImport = new EventEmitter();
|
|
262
|
-
/**
|
|
263
|
-
* Fires when the active sheet is about to change.
|
|
264
|
-
* The event exposes the new active `Sheet` and the `SpreadsheetWidget` instance.
|
|
265
|
-
*/
|
|
266
|
-
activeSheetChange = new EventEmitter();
|
|
267
|
-
/**
|
|
268
|
-
* Fires when a clipboard action (cut, copy, or paste) occurs in the Spreadsheet.
|
|
269
|
-
*/
|
|
270
|
-
clipboard = new EventEmitter();
|
|
271
|
-
formulaFxIcon = formulaFxIcon;
|
|
272
|
-
folderOpenIcon = folderOpenIcon;
|
|
273
|
-
downloadIcon = downloadIcon;
|
|
274
|
-
searchIcon = searchIcon;
|
|
275
|
-
selectedMenuItem;
|
|
276
|
-
rangeFilterValuesList = [];
|
|
277
|
-
sortAscSmallIcon = sortAscSmallIcon;
|
|
278
|
-
sortDescSmallIcon = sortDescSmallIcon;
|
|
279
|
-
get spreadsheetWidget() {
|
|
280
|
-
return this.spreadsheetService.spreadsheet;
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* @hidden
|
|
284
|
-
*/
|
|
285
|
-
showLicenseWatermark = false;
|
|
286
|
-
/**
|
|
287
|
-
* @hidden
|
|
288
|
-
*/
|
|
289
|
-
licenseMessage;
|
|
290
|
-
contextMenuItems = [];
|
|
291
|
-
sortMenuItems = [];
|
|
292
|
-
conditionExpanded = false;
|
|
293
|
-
valueExpanded = false;
|
|
294
|
-
filterConditionsList = {};
|
|
295
|
-
conditionValue = '';
|
|
296
|
-
set selectedCondition(value) {
|
|
297
|
-
if (this._selectedCondition?.type !== value.type) {
|
|
298
|
-
this.conditionValue = '';
|
|
299
|
-
}
|
|
300
|
-
this._selectedCondition = value;
|
|
301
|
-
}
|
|
302
|
-
get selectedCondition() {
|
|
303
|
-
return this._selectedCondition;
|
|
304
|
-
}
|
|
305
|
-
/**
|
|
306
|
-
* @hidden
|
|
307
|
-
*/
|
|
308
|
-
currentFilterOptions = null;
|
|
309
|
-
_selectedCondition;
|
|
310
|
-
_sheetsInfo;
|
|
311
|
-
_activeSheet;
|
|
312
|
-
_menuItems;
|
|
313
|
-
currentRange;
|
|
314
|
-
subs = new Subscription();
|
|
315
|
-
filterMenuOpened = false;
|
|
316
|
-
popupRef;
|
|
317
|
-
popupPositionChangeSub;
|
|
318
|
-
constructor(ngZone, intl, host, localization, spreadsheetService, toolsService, errorService, dialogService, popupService, container, cdr) {
|
|
319
|
-
this.ngZone = ngZone;
|
|
320
|
-
this.intl = intl;
|
|
321
|
-
this.host = host;
|
|
322
|
-
this.localization = localization;
|
|
323
|
-
this.spreadsheetService = spreadsheetService;
|
|
324
|
-
this.toolsService = toolsService;
|
|
325
|
-
this.errorService = errorService;
|
|
326
|
-
this.dialogService = dialogService;
|
|
327
|
-
this.popupService = popupService;
|
|
328
|
-
this.container = container;
|
|
329
|
-
this.cdr = cdr;
|
|
330
|
-
const isValid = validatePackage(packageMetadata);
|
|
331
|
-
this.licenseMessage = getLicenseMessage(packageMetadata);
|
|
332
|
-
this.showLicenseWatermark = shouldShowValidationUI(isValid);
|
|
333
|
-
ngZone.onStable.pipe(take(1)).subscribe(() => {
|
|
334
|
-
if (!this.menuItems) {
|
|
335
|
-
this._menuItems = [{
|
|
336
|
-
id: 'file',
|
|
337
|
-
text: this.messageFor('file')
|
|
338
|
-
}, {
|
|
339
|
-
id: 'home',
|
|
340
|
-
text: this.messageFor('home'),
|
|
341
|
-
active: true,
|
|
342
|
-
cssClass: 'k-active'
|
|
343
|
-
}, {
|
|
344
|
-
id: 'insert',
|
|
345
|
-
text: this.messageFor('insert')
|
|
346
|
-
}, {
|
|
347
|
-
id: 'format',
|
|
348
|
-
text: this.messageFor('formatTab')
|
|
349
|
-
}, {
|
|
350
|
-
id: 'data',
|
|
351
|
-
text: this.messageFor('dataTab')
|
|
352
|
-
}, {
|
|
353
|
-
id: 'view',
|
|
354
|
-
text: this.messageFor('view')
|
|
355
|
-
}];
|
|
356
|
-
}
|
|
357
|
-
this.selectedMenuItem = this.menuItems[1];
|
|
358
|
-
});
|
|
359
|
-
}
|
|
360
|
-
ngAfterViewInit() {
|
|
361
|
-
if (!isDocumentAvailable()) {
|
|
362
|
-
return;
|
|
363
|
-
}
|
|
364
|
-
this.ngZone.runOutsideAngular(() => {
|
|
365
|
-
setTimeout(() => {
|
|
366
|
-
const spreadsheet = this.spreadsheetService.spreadsheet = new SpreadsheetWidget(this.host.nativeElement, this.options);
|
|
367
|
-
spreadsheet.bind('select', this.onSelectionChange);
|
|
368
|
-
spreadsheet.bind('change', this.onChange);
|
|
369
|
-
spreadsheet.bind('changeFormat', this.onChangeFormat);
|
|
370
|
-
spreadsheet.bind('excelImport', this.onExcelImport);
|
|
371
|
-
spreadsheet.bind('excelExport', this.onExcelExport);
|
|
372
|
-
spreadsheet.bind('keydown', this.onKeyDown);
|
|
373
|
-
spreadsheet.view.bind('update', this.updateState);
|
|
374
|
-
spreadsheet.view.bind('message', this.onMessage);
|
|
375
|
-
spreadsheet.bind('contextmenu', this.onContextMenu.bind(this));
|
|
376
|
-
spreadsheet.bind('copy', (e) => { this.onClipboardEvent(e, 'copy'); });
|
|
377
|
-
spreadsheet.bind('cut', (e) => { this.onClipboardEvent(e, 'cut'); });
|
|
378
|
-
spreadsheet.bind('paste', (e) => { this.onClipboardEvent(e, 'paste'); });
|
|
379
|
-
const sheet = spreadsheet.activeSheet();
|
|
380
|
-
if (sheet) {
|
|
381
|
-
this.updateState({ range: sheet.range(sheet.activeCell()) });
|
|
382
|
-
}
|
|
383
|
-
this.updateActiveSheet(this.activeSheet || spreadsheet?.activeSheet()?.name());
|
|
384
|
-
this.configureSheets(spreadsheet);
|
|
385
|
-
this.spreadsheetService.componentInitialized.next();
|
|
386
|
-
});
|
|
387
|
-
this.subs.add(this.spreadsheetService.sheetsChanged.subscribe(this.onSheetsChanged.bind(this)));
|
|
388
|
-
this.subs.add(this.spreadsheetService.activeSheetChanged.subscribe(this.onActiveSheetChanged.bind(this)));
|
|
389
|
-
this.subs.add(this.spreadsheetService.selectionChanged.subscribe(range => {
|
|
390
|
-
this.currentRange = range;
|
|
391
|
-
this.closePopup();
|
|
392
|
-
}));
|
|
393
|
-
this.spreadsheetService.dialogContainer = this.dialogContainer;
|
|
394
|
-
});
|
|
395
|
-
this.registerEditors();
|
|
396
|
-
this.spreadsheetService.spreadsheetComponent = this;
|
|
397
|
-
this.sortMenuItems = [{
|
|
398
|
-
text: this.messageFor('sortAsc'),
|
|
399
|
-
svgIcon: this.sortAscSmallIcon,
|
|
400
|
-
icon: 'sort-asc-small'
|
|
401
|
-
}, {
|
|
402
|
-
text: this.messageFor('sortDesc'),
|
|
403
|
-
svgIcon: this.sortDescSmallIcon,
|
|
404
|
-
icon: 'sort-desc-small'
|
|
405
|
-
}];
|
|
406
|
-
}
|
|
407
|
-
ngOnChanges(changes) {
|
|
408
|
-
const dynamicOptions = [
|
|
409
|
-
'columns',
|
|
410
|
-
'columnWidth',
|
|
411
|
-
'defaultCellStyle',
|
|
412
|
-
'excel',
|
|
413
|
-
'headerHeight',
|
|
414
|
-
'headerWidth',
|
|
415
|
-
'images',
|
|
416
|
-
'names',
|
|
417
|
-
'rowHeight',
|
|
418
|
-
'rows',
|
|
419
|
-
'sheets'
|
|
420
|
-
];
|
|
421
|
-
const changedDynamicOptions = dynamicOptions.filter(o => isPresent(changes[o] && !changes[o].firstChange));
|
|
422
|
-
if (this.spreadsheetWidget && changedDynamicOptions.length) {
|
|
423
|
-
const newOptions = this.spreadsheetWidget.toJSON();
|
|
424
|
-
changedDynamicOptions.forEach(o => newOptions[o] = changes[o].currentValue);
|
|
425
|
-
this.spreadsheetWidget.fromJSON(newOptions);
|
|
426
|
-
}
|
|
427
|
-
if (changes['cellEditors'] && !changes['cellEditors'].firstChange) {
|
|
428
|
-
this.registerCustomEditors();
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
ngOnDestroy() {
|
|
432
|
-
this.subs.unsubscribe();
|
|
433
|
-
}
|
|
434
|
-
/**
|
|
435
|
-
* @hidden
|
|
436
|
-
*/
|
|
437
|
-
onContextMenu(e) {
|
|
438
|
-
if (e.targetType === 'topcorner') {
|
|
439
|
-
return;
|
|
440
|
-
}
|
|
441
|
-
const selection = this.spreadsheetWidget.activeSheet().select();
|
|
442
|
-
const { topLeft, bottomRight } = selection;
|
|
443
|
-
const isRange = e.targetType === 'cell' && (topLeft.row !== bottomRight.row || topLeft.col !== bottomRight.col);
|
|
444
|
-
const targetType = isRange ? 'range' : e.targetType;
|
|
445
|
-
this.contextMenuItems = this.contextMenuItemsForTarget(targetType, e.showUnhide, e.showUnmerge);
|
|
446
|
-
this.contextMenu.show({ top: e.originalEvent.pageY, left: e.originalEvent.pageX });
|
|
447
|
-
}
|
|
448
|
-
/**
|
|
449
|
-
* @hidden
|
|
450
|
-
*/
|
|
451
|
-
isChecked = (dataItem) => {
|
|
452
|
-
if (this.containsItem(dataItem)) {
|
|
453
|
-
return "checked";
|
|
454
|
-
}
|
|
455
|
-
if (this.isIndeterminate(dataItem.items)) {
|
|
456
|
-
return "indeterminate";
|
|
457
|
-
}
|
|
458
|
-
return "none";
|
|
459
|
-
};
|
|
460
|
-
/**
|
|
461
|
-
* @hidden
|
|
462
|
-
*/
|
|
463
|
-
onContextMenuSelect(e) {
|
|
464
|
-
let command;
|
|
465
|
-
switch (e.item.id) {
|
|
466
|
-
case 'cut':
|
|
467
|
-
command = { command: 'ToolbarCutCommand', options: { workbook: this.spreadsheetWidget.workbook } };
|
|
468
|
-
break;
|
|
469
|
-
case 'copy':
|
|
470
|
-
command = { command: 'ToolbarCopyCommand', options: { workbook: this.spreadsheetWidget.workbook } };
|
|
471
|
-
break;
|
|
472
|
-
case 'unmerge':
|
|
473
|
-
command = { command: 'MergeCellCommand', options: { value: 'unmerge' } };
|
|
474
|
-
break;
|
|
475
|
-
case 'mergeAll':
|
|
476
|
-
command = { command: 'MergeCellCommand', options: { value: 'cells' } };
|
|
477
|
-
break;
|
|
478
|
-
case 'mergeHorizontally':
|
|
479
|
-
command = { command: 'MergeCellCommand', options: { value: 'horizontally' } };
|
|
480
|
-
break;
|
|
481
|
-
case 'mergeVertically':
|
|
482
|
-
command = { command: 'MergeCellCommand', options: { value: 'vertically' } };
|
|
483
|
-
break;
|
|
484
|
-
case 'hideRow':
|
|
485
|
-
command = { command: 'HideLineCommand', options: { axis: 'row' } };
|
|
486
|
-
break;
|
|
487
|
-
case 'hideColumn':
|
|
488
|
-
command = { command: 'HideLineCommand', options: { axis: 'column' } };
|
|
489
|
-
break;
|
|
490
|
-
case 'unhideRow':
|
|
491
|
-
command = { command: 'UnHideLineCommand', options: { axis: 'row' } };
|
|
492
|
-
break;
|
|
493
|
-
case 'unhideColumn':
|
|
494
|
-
command = { command: 'UnHideLineCommand', options: { axis: 'column' } };
|
|
495
|
-
break;
|
|
496
|
-
case 'deleteRow':
|
|
497
|
-
command = { command: 'DeleteRowCommand' };
|
|
498
|
-
break;
|
|
499
|
-
case 'deleteColumn':
|
|
500
|
-
command = { command: 'DeleteColumnCommand' };
|
|
501
|
-
break;
|
|
502
|
-
case 'insertLink':
|
|
503
|
-
this.openLinkDialog();
|
|
504
|
-
break;
|
|
505
|
-
case 'addRowAbove':
|
|
506
|
-
command = { command: 'AddRowCommand', options: { value: 'above' } };
|
|
507
|
-
break;
|
|
508
|
-
case 'addRowBelow':
|
|
509
|
-
command = { command: 'AddRowCommand', options: { value: 'below' } };
|
|
510
|
-
break;
|
|
511
|
-
case 'addColumnLeft':
|
|
512
|
-
command = { command: 'AddColumnCommand', options: { value: 'left' } };
|
|
513
|
-
break;
|
|
514
|
-
case 'addColumnRight':
|
|
515
|
-
command = { command: 'AddColumnCommand', options: { value: 'right' } };
|
|
516
|
-
break;
|
|
517
|
-
}
|
|
518
|
-
if (command) {
|
|
519
|
-
this.spreadsheetWidget.executeCommand(command);
|
|
520
|
-
}
|
|
521
|
-
}
|
|
522
|
-
/**
|
|
523
|
-
* @hidden
|
|
524
|
-
*/
|
|
525
|
-
onKeyDown = (e) => {
|
|
526
|
-
const isCtrl = e.ctrlKey || e.metaKey;
|
|
527
|
-
const shift = e.shiftKey;
|
|
528
|
-
const altKey = e.altKey;
|
|
529
|
-
const code = normalizeKeys(e);
|
|
530
|
-
if (isCtrl && shift && code === Keys.KeyS) {
|
|
531
|
-
this.spreadsheetService.onSheetsBarFocus.next(undefined);
|
|
532
|
-
}
|
|
533
|
-
if (altKey) {
|
|
534
|
-
const currentSheet = e.sender.activeSheet();
|
|
535
|
-
const validation = currentSheet.range(currentSheet.activeCell()).validation();
|
|
536
|
-
if (isPresent(validation) && validation.dataType === 'list') {
|
|
537
|
-
if (code === Keys.ArrowDown) {
|
|
538
|
-
this.spreadsheetWidget.view.openCustomEditor();
|
|
539
|
-
}
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
};
|
|
543
|
-
/**
|
|
544
|
-
* @hidden
|
|
545
|
-
*/
|
|
546
|
-
messageFor(key) {
|
|
547
|
-
return this.localization.get(key);
|
|
548
|
-
}
|
|
549
|
-
/**
|
|
550
|
-
* @hidden
|
|
551
|
-
*/
|
|
552
|
-
onMenuItemSelect(e) {
|
|
553
|
-
const selectedMenuItem = this.menuItems.find(item => item.text === e.item.text);
|
|
554
|
-
const previousSelectedItem = this.menuItems.find(item => item.active);
|
|
555
|
-
if (selectedMenuItem !== previousSelectedItem) {
|
|
556
|
-
this._menuItems.forEach((item, idx) => {
|
|
557
|
-
item.active = idx === +e.index;
|
|
558
|
-
item.cssClass = idx === +e.index ? 'k-active' : null;
|
|
559
|
-
});
|
|
560
|
-
this.selectedMenuItem = this.menuItems.find(item => item.active);
|
|
561
|
-
}
|
|
562
|
-
}
|
|
563
|
-
/**
|
|
564
|
-
* @hidden
|
|
565
|
-
*/
|
|
566
|
-
onToggle(expanded, filterType) {
|
|
567
|
-
this[`${filterType}Expanded`] = expanded;
|
|
568
|
-
if (expanded) {
|
|
569
|
-
const otherFilterType = filterType === 'condition' ? 'value' : 'condition';
|
|
570
|
-
this[`${otherFilterType}Expanded`] = false;
|
|
571
|
-
}
|
|
572
|
-
this.cdr.detectChanges();
|
|
573
|
-
}
|
|
574
|
-
/**
|
|
575
|
-
* @hidden
|
|
576
|
-
*/
|
|
577
|
-
filterApply(filterType) {
|
|
578
|
-
if (!this.currentFilterOptions) {
|
|
579
|
-
return;
|
|
580
|
-
}
|
|
581
|
-
let filterData;
|
|
582
|
-
if (filterType === 'value') {
|
|
583
|
-
const checkedValues = this.checkedKeys
|
|
584
|
-
.filter(key => key !== this.messageFor('filterMenuAll'))
|
|
585
|
-
.map(key => {
|
|
586
|
-
const item = this.findItemByText(this.rangeFilterValuesList, key);
|
|
587
|
-
return item ? item.unformattedValue : key;
|
|
588
|
-
});
|
|
589
|
-
const hasBlanks = checkedValues.some(v => v === undefined || v === null);
|
|
590
|
-
const nonBlankValues = checkedValues.filter(v => v !== undefined && v !== null);
|
|
591
|
-
filterData = {
|
|
592
|
-
blanks: hasBlanks,
|
|
593
|
-
values: nonBlankValues.length > 0 ? nonBlankValues : undefined
|
|
594
|
-
};
|
|
595
|
-
}
|
|
596
|
-
else if (this.selectedCondition?.comparer !== 'none' && this.conditionValue !== null && this.conditionValue !== undefined) {
|
|
597
|
-
filterData = {
|
|
598
|
-
criteria: [{
|
|
599
|
-
operator: this.selectedCondition.comparer,
|
|
600
|
-
value: this.conditionValue
|
|
601
|
-
}]
|
|
602
|
-
};
|
|
603
|
-
}
|
|
604
|
-
else if (this.selectedCondition?.comparer === 'none') {
|
|
605
|
-
this.spreadsheetWidget.executeCommand({
|
|
606
|
-
command: 'ClearFilterCommand',
|
|
607
|
-
options: { column: this.currentFilterOptions?.column }
|
|
608
|
-
});
|
|
609
|
-
this.closePopup();
|
|
610
|
-
return;
|
|
611
|
-
}
|
|
612
|
-
if (filterData) {
|
|
613
|
-
const commandOptions = {
|
|
614
|
-
column: this.currentFilterOptions.column,
|
|
615
|
-
operatingRange: this.currentFilterOptions.range
|
|
616
|
-
};
|
|
617
|
-
if (filterType === 'value') {
|
|
618
|
-
commandOptions.valueFilter = filterData;
|
|
619
|
-
}
|
|
620
|
-
else {
|
|
621
|
-
commandOptions.customFilter = filterData;
|
|
622
|
-
}
|
|
623
|
-
this.spreadsheetWidget.executeCommand({
|
|
624
|
-
command: 'ApplyFilterCommand',
|
|
625
|
-
options: commandOptions
|
|
626
|
-
});
|
|
627
|
-
}
|
|
628
|
-
this.closePopup();
|
|
629
|
-
}
|
|
630
|
-
/**
|
|
631
|
-
* @hidden
|
|
632
|
-
*/
|
|
633
|
-
filterClear() {
|
|
634
|
-
this.spreadsheetWidget.executeCommand({
|
|
635
|
-
command: 'ClearFilterCommand',
|
|
636
|
-
options: { column: this.currentFilterOptions?.column }
|
|
637
|
-
});
|
|
638
|
-
this.closePopup();
|
|
639
|
-
}
|
|
640
|
-
/**
|
|
641
|
-
* @hidden
|
|
642
|
-
*/
|
|
643
|
-
onSortItemClick(item) {
|
|
644
|
-
const dir = item.text === this.messageFor('sortAsc') ? 'asc' : 'desc';
|
|
645
|
-
const noHeaderRange = this.currentFilterOptions?.range?.resize({ top: 1 });
|
|
646
|
-
const options = {
|
|
647
|
-
value: dir,
|
|
648
|
-
sheet: false,
|
|
649
|
-
operatingRange: noHeaderRange,
|
|
650
|
-
column: this.currentFilterOptions?.column
|
|
651
|
-
};
|
|
652
|
-
this.spreadsheetWidget.executeCommand({ command: 'SortCommand', options });
|
|
653
|
-
}
|
|
654
|
-
/**
|
|
655
|
-
* @hidden
|
|
656
|
-
*/
|
|
657
|
-
closePopup() {
|
|
658
|
-
if (this.popupRef) {
|
|
659
|
-
this.popupRef.close();
|
|
660
|
-
this.popupRef = null;
|
|
661
|
-
}
|
|
662
|
-
if (this.popupPositionChangeSub) {
|
|
663
|
-
this.popupPositionChangeSub.unsubscribe();
|
|
664
|
-
this.popupPositionChangeSub = null;
|
|
665
|
-
}
|
|
666
|
-
}
|
|
667
|
-
onChange = (e) => {
|
|
668
|
-
hasObservers(this.change) && this.change.emit(e);
|
|
669
|
-
this.spreadsheetService.selectionChanged.next(e.range);
|
|
670
|
-
};
|
|
671
|
-
onSelectionChange = (e) => {
|
|
672
|
-
this.closePopup();
|
|
673
|
-
hasObservers(this.selectionChange) && this.selectionChange.emit(e);
|
|
674
|
-
this.spreadsheetService.selectionChanged.next(e.range);
|
|
675
|
-
};
|
|
676
|
-
onChangeFormat = (e) => {
|
|
677
|
-
hasObservers(this.formatChange) && this.formatChange.emit(e);
|
|
678
|
-
this.spreadsheetService.selectionChanged.next(e.range);
|
|
679
|
-
};
|
|
680
|
-
onExcelExport = (e) => hasObservers(this.excelExport) && this.excelExport.emit(e);
|
|
681
|
-
onExcelImport = (e) => hasObservers(this.excelImport) && this.excelImport.emit(e);
|
|
682
|
-
onActiveSheetChanged = (sheet) => {
|
|
683
|
-
const eventArgs = { sender: this.spreadsheetService.spreadsheet, sheet };
|
|
684
|
-
hasObservers(this.activeSheetChange) && this.activeSheetChange.emit(eventArgs);
|
|
685
|
-
const range = sheet.range(sheet.activeCell());
|
|
686
|
-
this.spreadsheetService.selectionChanged.next(range);
|
|
687
|
-
};
|
|
688
|
-
updateState = (e) => {
|
|
689
|
-
this.toolsService.updateTools(e);
|
|
690
|
-
if (e.reason?.sheetSelection) {
|
|
691
|
-
this.sheets = mapToSheetDescriptor(this.spreadsheetService.spreadsheet.sheets());
|
|
692
|
-
}
|
|
693
|
-
};
|
|
694
|
-
onMessage = (e) => {
|
|
695
|
-
this.ngZone.run(() => {
|
|
696
|
-
this.errorService.handleErrorMessage(e);
|
|
697
|
-
});
|
|
698
|
-
};
|
|
699
|
-
updateActiveSheet(name) {
|
|
700
|
-
this.ngZone.run(() => this.spreadsheetService.currentActiveSheet = name);
|
|
701
|
-
}
|
|
702
|
-
onSheetsChanged(e) {
|
|
703
|
-
this.ngZone.run(() => {
|
|
704
|
-
this.sheets = mapToSheetDescriptor(e.sheets);
|
|
705
|
-
this.updateActiveSheet(this.spreadsheetService.activeSheet);
|
|
706
|
-
});
|
|
707
|
-
}
|
|
708
|
-
onClipboardEvent(event, type) {
|
|
709
|
-
if (hasObservers(this.clipboard)) {
|
|
710
|
-
this.ngZone.runOutsideAngular(() => {
|
|
711
|
-
setTimeout(() => {
|
|
712
|
-
const { preventDefault, isDefaultPrevented, clipboardContent, range, sender } = event;
|
|
713
|
-
const workbookClipboardContent = clipboardContent || this.spreadsheetWidget.workbook._clipboard._internalContent;
|
|
714
|
-
const eventArgs = {
|
|
715
|
-
type,
|
|
716
|
-
clipboardContent: { data: workbookClipboardContent.data, mergedCells: workbookClipboardContent.mergedCells },
|
|
717
|
-
range,
|
|
718
|
-
sender,
|
|
719
|
-
preventDefault: preventDefault.bind(event),
|
|
720
|
-
isDefaultPrevented: isDefaultPrevented.bind(event)
|
|
721
|
-
};
|
|
722
|
-
this.ngZone.run(() => this.clipboard.emit(eventArgs));
|
|
723
|
-
});
|
|
724
|
-
});
|
|
725
|
-
}
|
|
726
|
-
}
|
|
727
|
-
get options() {
|
|
728
|
-
return {
|
|
729
|
-
activeSheet: this.activeSheet,
|
|
730
|
-
...{
|
|
731
|
-
sheets: this.sheetsInfo && structuredClone(this.sheetsInfo),
|
|
732
|
-
intl: {
|
|
733
|
-
localeInfo: () => localeData(this.intl.localeId),
|
|
734
|
-
parseDate: (value, fmt) => this.intl.parseDate(value, fmt),
|
|
735
|
-
toString: (value, fmt) => this.intl.toString(value, fmt),
|
|
736
|
-
format: (fmt, ...values) => this.intl.format(fmt, ...values)
|
|
737
|
-
}
|
|
738
|
-
},
|
|
739
|
-
columns: this.columns,
|
|
740
|
-
columnWidth: this.columnWidth,
|
|
741
|
-
defaultCellStyle: this.defaultCellStyle,
|
|
742
|
-
excel: this.excel,
|
|
743
|
-
headerHeight: this.headerHeight,
|
|
744
|
-
headerWidth: this.headerWidth,
|
|
745
|
-
images: this.images,
|
|
746
|
-
rowHeight: this.rowHeight,
|
|
747
|
-
rows: this.rows,
|
|
748
|
-
formulaBarInputRef: { current: this.formulaBarInputRef.current },
|
|
749
|
-
formulaCellInputRef: { current: this.formulaCellInputRef.current },
|
|
750
|
-
nameBoxRef: { current: this.nameBoxRef.current },
|
|
751
|
-
getIconHTMLString: (options) => {
|
|
752
|
-
if (typeof options === 'string' && options === 'k-i-caret-alt-down') {
|
|
753
|
-
//the caret-alt-down filter button icon has different config coming from the common package and has to be handled separately
|
|
754
|
-
options = { iconName: 'caret-alt-down', svgIcon: caretAltDownIcon };
|
|
755
|
-
}
|
|
756
|
-
const iconWrapper = this.container.createComponent(IconWrapperComponent);
|
|
757
|
-
iconWrapper.instance.name = options.iconName;
|
|
758
|
-
iconWrapper.instance.svgIcon = options.svgIcon;
|
|
759
|
-
iconWrapper.changeDetectorRef.detectChanges();
|
|
760
|
-
return iconWrapper.instance.element.nativeElement;
|
|
761
|
-
},
|
|
762
|
-
createFilterMenu: this.createFilterMenu.bind(this)
|
|
763
|
-
};
|
|
764
|
-
}
|
|
765
|
-
contextMenuItemsForTarget(target, unhide, unmerge) {
|
|
766
|
-
const commonItems = [{
|
|
767
|
-
text: this.messageFor('copy'),
|
|
768
|
-
icon: commandIcons.copy,
|
|
769
|
-
svgIcon: commandSVGIcons.copy,
|
|
770
|
-
id: 'copy'
|
|
771
|
-
}, {
|
|
772
|
-
text: this.messageFor('cut'),
|
|
773
|
-
icon: commandIcons.cut,
|
|
774
|
-
svgIcon: commandSVGIcons.cut,
|
|
775
|
-
id: 'cut'
|
|
776
|
-
}, {
|
|
777
|
-
text: this.messageFor('paste'),
|
|
778
|
-
icon: commandIcons.paste,
|
|
779
|
-
svgIcon: commandSVGIcons.paste,
|
|
780
|
-
id: 'paste',
|
|
781
|
-
disabled: true
|
|
782
|
-
}, {
|
|
783
|
-
separator: true
|
|
784
|
-
}, {
|
|
785
|
-
text: this.messageFor('mergeAll'),
|
|
786
|
-
icon: commandIcons.mergeAll,
|
|
787
|
-
svgIcon: commandSVGIcons.mergeAll,
|
|
788
|
-
id: 'mergeAll',
|
|
789
|
-
}, {
|
|
790
|
-
text: this.messageFor('mergeHorizontally'),
|
|
791
|
-
icon: commandIcons.mergeHorizontally,
|
|
792
|
-
svgIcon: commandSVGIcons.mergeHorizontally,
|
|
793
|
-
id: 'mergeHorizontally',
|
|
794
|
-
}, {
|
|
795
|
-
text: this.messageFor('mergeVertically'),
|
|
796
|
-
icon: commandIcons.mergeVertically,
|
|
797
|
-
svgIcon: commandSVGIcons.mergeVertically,
|
|
798
|
-
id: 'mergeVertically',
|
|
799
|
-
}, {
|
|
800
|
-
text: this.messageFor('unmerge'),
|
|
801
|
-
icon: commandIcons.unmerge,
|
|
802
|
-
svgIcon: commandSVGIcons.unmerge,
|
|
803
|
-
id: 'unmerge',
|
|
804
|
-
disabled: !unmerge
|
|
805
|
-
}, {
|
|
806
|
-
separator: true
|
|
807
|
-
}, {
|
|
808
|
-
text: this.messageFor('insertLink'),
|
|
809
|
-
icon: commandIcons.insertLink,
|
|
810
|
-
svgIcon: commandSVGIcons.insertLink,
|
|
811
|
-
id: 'insertLink'
|
|
812
|
-
}];
|
|
813
|
-
if (target === 'rowheader') {
|
|
814
|
-
commonItems.push({
|
|
815
|
-
separator: true
|
|
816
|
-
}, {
|
|
817
|
-
text: this.messageFor('addRowAbove'),
|
|
818
|
-
icon: commandIcons.addRowAbove,
|
|
819
|
-
svgIcon: commandSVGIcons.addRowAbove,
|
|
820
|
-
id: 'addRowAbove',
|
|
821
|
-
}, {
|
|
822
|
-
text: this.messageFor('addRowBelow'),
|
|
823
|
-
icon: commandIcons.addRowBelow,
|
|
824
|
-
svgIcon: commandSVGIcons.addRowBelow,
|
|
825
|
-
id: 'addRowBelow',
|
|
826
|
-
}, {
|
|
827
|
-
text: this.messageFor('deleteRow'),
|
|
828
|
-
icon: commandIcons.deleteRow,
|
|
829
|
-
svgIcon: commandSVGIcons.deleteRow,
|
|
830
|
-
id: 'deleteRow',
|
|
831
|
-
}, {
|
|
832
|
-
text: this.messageFor('hideRow'),
|
|
833
|
-
icon: commandIcons.hideRow,
|
|
834
|
-
svgIcon: commandSVGIcons.hideRow,
|
|
835
|
-
id: 'hideRow',
|
|
836
|
-
}, {
|
|
837
|
-
text: this.messageFor('unhideRow'),
|
|
838
|
-
icon: commandIcons.unhideRow,
|
|
839
|
-
svgIcon: commandSVGIcons.unhideRow,
|
|
840
|
-
id: 'unhideRow',
|
|
841
|
-
disabled: !unhide
|
|
842
|
-
});
|
|
843
|
-
}
|
|
844
|
-
if (target === 'columnheader') {
|
|
845
|
-
commonItems.push({
|
|
846
|
-
separator: true
|
|
847
|
-
}, {
|
|
848
|
-
text: this.messageFor('addColumnLeft'),
|
|
849
|
-
icon: commandIcons.addColumnLeft,
|
|
850
|
-
svgIcon: commandSVGIcons.addColumnLeft,
|
|
851
|
-
id: 'addColumnLeft',
|
|
852
|
-
}, {
|
|
853
|
-
text: this.messageFor('addColumnRight'),
|
|
854
|
-
icon: commandIcons.addColumnRight,
|
|
855
|
-
svgIcon: commandSVGIcons.addColumnRight,
|
|
856
|
-
id: 'addColumnRight',
|
|
857
|
-
}, {
|
|
858
|
-
text: this.messageFor('deleteColumn'),
|
|
859
|
-
icon: commandIcons.deleteColumn,
|
|
860
|
-
svgIcon: commandSVGIcons.deleteColumn,
|
|
861
|
-
id: 'deleteColumn',
|
|
862
|
-
}, {
|
|
863
|
-
text: this.messageFor('hideColumn'),
|
|
864
|
-
icon: commandIcons.hideColumn,
|
|
865
|
-
svgIcon: commandSVGIcons.hideColumn,
|
|
866
|
-
id: 'hideColumn',
|
|
867
|
-
}, {
|
|
868
|
-
text: this.messageFor('unhideColumn'),
|
|
869
|
-
icon: commandIcons.unhideColumn,
|
|
870
|
-
svgIcon: commandSVGIcons.unhideColumn,
|
|
871
|
-
id: 'unhideColumn',
|
|
872
|
-
disabled: !unhide
|
|
873
|
-
});
|
|
874
|
-
}
|
|
875
|
-
return commonItems;
|
|
876
|
-
}
|
|
877
|
-
openLinkDialog() {
|
|
878
|
-
const hasLink = isPresent(this.currentRange?.link());
|
|
879
|
-
const dialogSettings = {
|
|
880
|
-
appendTo: this.spreadsheetService.dialogContainer,
|
|
881
|
-
title: this.localization.get('insertLink'),
|
|
882
|
-
content: InsertLinkDialogComponent,
|
|
883
|
-
actions: [{
|
|
884
|
-
text: this.localization.get('dialogInsert'),
|
|
885
|
-
themeColor: 'primary'
|
|
886
|
-
}, {
|
|
887
|
-
text: this.localization.get('dialogCancel')
|
|
888
|
-
},
|
|
889
|
-
'spacer', {
|
|
890
|
-
text: this.localization.get('dialogRemoveLink'),
|
|
891
|
-
themeColor: 'primary',
|
|
892
|
-
fillMode: 'clear',
|
|
893
|
-
cssClass: hasLink ? '' : 'k-disabled'
|
|
894
|
-
}],
|
|
895
|
-
actionsLayout: 'start',
|
|
896
|
-
width: 400,
|
|
897
|
-
autoFocusedElement: '.k-textbox > .k-input-inner'
|
|
898
|
-
};
|
|
899
|
-
const dialog = this.dialogService.open(dialogSettings);
|
|
900
|
-
const dialogInstance = dialog.dialog.instance;
|
|
901
|
-
const dialogContent = dialog.content.instance;
|
|
902
|
-
if (hasLink) {
|
|
903
|
-
dialogContent.setData({ link: this.currentRange?.link() });
|
|
904
|
-
}
|
|
905
|
-
dialogInstance.action.pipe(take(1)).subscribe((event) => {
|
|
906
|
-
if (event.text === this.localization.get('dialogCancel')) {
|
|
907
|
-
return;
|
|
908
|
-
}
|
|
909
|
-
let link = null;
|
|
910
|
-
if (event.text === this.localization.get('dialogInsert')) {
|
|
911
|
-
link = dialogContent.urlLink || null;
|
|
912
|
-
}
|
|
913
|
-
this.spreadsheetService.spreadsheet.executeCommand({
|
|
914
|
-
command: 'HyperlinkCommand',
|
|
915
|
-
options: { link }
|
|
916
|
-
});
|
|
917
|
-
});
|
|
918
|
-
}
|
|
919
|
-
configureSheets = (spreadsheet) => {
|
|
920
|
-
if (!this.sheetsInfo) {
|
|
921
|
-
this.ngZone.run(() => {
|
|
922
|
-
const defaultSheetDescriptors = mapToSheetDescriptor([spreadsheet?.activeSheet()]);
|
|
923
|
-
this._sheetsInfo = [{
|
|
924
|
-
text: this.spreadsheetService.currentActiveSheet,
|
|
925
|
-
first: true, last: true,
|
|
926
|
-
state: 'visible',
|
|
927
|
-
...defaultSheetDescriptors,
|
|
928
|
-
sheetActions: getSheetActions(defaultSheetDescriptors).map(item => ({ ...item, text: this.messageFor(item.messageKey) }))
|
|
929
|
-
}];
|
|
930
|
-
});
|
|
931
|
-
}
|
|
932
|
-
};
|
|
933
|
-
registerEditors() {
|
|
934
|
-
registerEditor('_validation_list', () => {
|
|
935
|
-
return {
|
|
936
|
-
edit: (options) => {
|
|
937
|
-
this.closePopup();
|
|
938
|
-
this.popupRef = this.popupService.open({
|
|
939
|
-
anchor: options.view.element.querySelector('.k-spreadsheet-editor-button'),
|
|
940
|
-
content: ListEditorComponent,
|
|
941
|
-
popupAlign: options.alignLeft ? { horizontal: 'right', vertical: 'top' } : { horizontal: 'left', vertical: 'top' },
|
|
942
|
-
anchorAlign: options.alignLeft ? { horizontal: 'right', vertical: 'bottom' } : { horizontal: 'left', vertical: 'bottom' },
|
|
943
|
-
popupClass: 'k-spreadsheet-list-popup'
|
|
944
|
-
});
|
|
945
|
-
const list = this.popupRef.content.instance;
|
|
946
|
-
list.itemSelect.subscribe((item) => {
|
|
947
|
-
this.closePopup();
|
|
948
|
-
const itemValue = item.value;
|
|
949
|
-
if (isPresent(itemValue)) {
|
|
950
|
-
options.callback(itemValue);
|
|
951
|
-
}
|
|
952
|
-
});
|
|
953
|
-
list.close.subscribe(() => {
|
|
954
|
-
this.closePopup();
|
|
955
|
-
});
|
|
956
|
-
const items = options.validation.from.value;
|
|
957
|
-
const data = [];
|
|
958
|
-
const add = (el) => { data.push({ value: el }); };
|
|
959
|
-
if (items instanceof Matrix) {
|
|
960
|
-
items.each(add, false);
|
|
961
|
-
}
|
|
962
|
-
else {
|
|
963
|
-
(items + "").split(/\s*,\s*/).forEach(add);
|
|
964
|
-
}
|
|
965
|
-
list.data = data;
|
|
966
|
-
},
|
|
967
|
-
icon: { iconName: 'caret-alt-down', svgIcon: caretAltDownIcon }
|
|
968
|
-
};
|
|
969
|
-
});
|
|
970
|
-
registerEditor('_validation_date', () => {
|
|
971
|
-
return {
|
|
972
|
-
edit: (options) => {
|
|
973
|
-
this.closePopup();
|
|
974
|
-
this.popupRef = this.popupService.open({
|
|
975
|
-
anchor: options.view.element.querySelector('.k-spreadsheet-editor-button'),
|
|
976
|
-
content: CalendarComponent,
|
|
977
|
-
popupAlign: options.alignLeft ? { horizontal: 'right', vertical: 'top' } : { horizontal: 'left', vertical: 'top' },
|
|
978
|
-
anchorAlign: options.alignLeft ? { horizontal: 'right', vertical: 'bottom' } : { horizontal: 'left', vertical: 'bottom' }
|
|
979
|
-
});
|
|
980
|
-
const calendar = this.popupRef.content.instance;
|
|
981
|
-
calendar.valueChange.subscribe((value) => {
|
|
982
|
-
this.closePopup();
|
|
983
|
-
if (!options.range.format()) {
|
|
984
|
-
options.range.format('yyyy-mm-dd');
|
|
985
|
-
}
|
|
986
|
-
options.callback(dateToSerial(value));
|
|
987
|
-
});
|
|
988
|
-
const date = options.range.value();
|
|
989
|
-
calendar.value = this.createDate(date);
|
|
990
|
-
const sheet = options.range.sheet();
|
|
991
|
-
const currenValidation = options.validation;
|
|
992
|
-
if (currenValidation) {
|
|
993
|
-
let min = calendar.min;
|
|
994
|
-
let max = calendar.max;
|
|
995
|
-
const fromValidation = currenValidation.from;
|
|
996
|
-
const toValidation = currenValidation.to;
|
|
997
|
-
if (/^(?:greaterThan|between)/.test(currenValidation.comparerType)) {
|
|
998
|
-
if (this.isValidFormula(fromValidation)) {
|
|
999
|
-
min = this.createDate(fromValidation, sheet);
|
|
1000
|
-
}
|
|
1001
|
-
else {
|
|
1002
|
-
min = this.createDate(fromValidation.value);
|
|
1003
|
-
}
|
|
1004
|
-
}
|
|
1005
|
-
if (currenValidation.comparerType === 'between') {
|
|
1006
|
-
if (this.isValidFormula(toValidation)) {
|
|
1007
|
-
max = this.createDate(toValidation, sheet);
|
|
1008
|
-
}
|
|
1009
|
-
else {
|
|
1010
|
-
max = this.createDate(currenValidation.to.value);
|
|
1011
|
-
}
|
|
1012
|
-
}
|
|
1013
|
-
if (currenValidation.comparerType === 'lessThan' || currenValidation.comparerType === 'lessThanOrEqualTo') {
|
|
1014
|
-
if (this.isValidFormula(fromValidation)) {
|
|
1015
|
-
max = this.createDate(fromValidation, sheet);
|
|
1016
|
-
}
|
|
1017
|
-
else {
|
|
1018
|
-
max = this.createDate(currenValidation.from.value);
|
|
1019
|
-
}
|
|
1020
|
-
}
|
|
1021
|
-
calendar.disabledDates = (date) => {
|
|
1022
|
-
let from;
|
|
1023
|
-
let to;
|
|
1024
|
-
if (fromValidation && this.isValidFormula(fromValidation)) {
|
|
1025
|
-
from = sheet.range(fromValidation.value.row, fromValidation.value.col).value();
|
|
1026
|
-
}
|
|
1027
|
-
else {
|
|
1028
|
-
from = fromValidation ? fromValidation.value | 0 : 0;
|
|
1029
|
-
}
|
|
1030
|
-
if (toValidation && this.isValidFormula(toValidation)) {
|
|
1031
|
-
to = sheet.range(toValidation.value.row, toValidation.value.col).value();
|
|
1032
|
-
}
|
|
1033
|
-
else {
|
|
1034
|
-
to = toValidation ? toValidation.value | 0 : 0;
|
|
1035
|
-
}
|
|
1036
|
-
date = dateToSerial(date) || 0;
|
|
1037
|
-
return !validation.validationComparers[currenValidation.comparerType](date, from, to);
|
|
1038
|
-
};
|
|
1039
|
-
calendar.min = min;
|
|
1040
|
-
calendar.max = max;
|
|
1041
|
-
}
|
|
1042
|
-
else {
|
|
1043
|
-
calendar.disabledDates = null;
|
|
1044
|
-
calendar.min = calendar.max = null;
|
|
1045
|
-
}
|
|
1046
|
-
},
|
|
1047
|
-
icon: { iconName: 'calendar', svgIcon: calendarIcon }
|
|
1048
|
-
};
|
|
1049
|
-
});
|
|
1050
|
-
this.registerCustomEditors();
|
|
1051
|
-
}
|
|
1052
|
-
registerCustomEditors() {
|
|
1053
|
-
if (!this.cellEditors?.length) {
|
|
1054
|
-
return;
|
|
1055
|
-
}
|
|
1056
|
-
this.cellEditors.forEach((editor) => this.registerCustomEditor(editor));
|
|
1057
|
-
}
|
|
1058
|
-
registerCustomEditor(editor) {
|
|
1059
|
-
registerEditor(editor.name, () => ({
|
|
1060
|
-
edit: (options) => this.openCustomEditorPopup(editor, options),
|
|
1061
|
-
icon: { iconName: editor.icon, svgIcon: editor.svgIcon }
|
|
1062
|
-
}));
|
|
1063
|
-
}
|
|
1064
|
-
openCustomEditorPopup(editor, options) {
|
|
1065
|
-
this.closePopup();
|
|
1066
|
-
this.popupRef = this.popupService.open({
|
|
1067
|
-
anchor: options.view.element.querySelector('.k-spreadsheet-editor-button'),
|
|
1068
|
-
content: editor.component,
|
|
1069
|
-
popupAlign: options.alignLeft ? { horizontal: 'right', vertical: 'top' } : { horizontal: 'left', vertical: 'top' },
|
|
1070
|
-
anchorAlign: options.alignLeft ? { horizontal: 'right', vertical: 'bottom' } : { horizontal: 'left', vertical: 'bottom' }
|
|
1071
|
-
});
|
|
1072
|
-
const componentInstance = this.popupRef.content.instance;
|
|
1073
|
-
editor.actions.forEach(action => {
|
|
1074
|
-
const actionStream = componentInstance[action.name];
|
|
1075
|
-
actionStream?.subscribe((args) => {
|
|
1076
|
-
const eventArgs = { originalEvent: args, ...options };
|
|
1077
|
-
action.handler?.apply(componentInstance, [eventArgs]);
|
|
1078
|
-
});
|
|
1079
|
-
});
|
|
1080
|
-
}
|
|
1081
|
-
isValidFormula(validation) {
|
|
1082
|
-
const formula = calc.runtime.Formula;
|
|
1083
|
-
return validation instanceof formula && rowAndColPresent(validation.value);
|
|
1084
|
-
}
|
|
1085
|
-
createDate(validation, sheet) {
|
|
1086
|
-
return new Date(serialToDate(isPresent(sheet) ? sheet.range(validation.value.row, validation.value.col).value() : validation));
|
|
1087
|
-
}
|
|
1088
|
-
createFilterMenu(options) {
|
|
1089
|
-
this.closePopup();
|
|
1090
|
-
this.currentFilterOptions = options;
|
|
1091
|
-
if (this.filterMenuOpened) {
|
|
1092
|
-
this.filterMenuOpened = false;
|
|
1093
|
-
return {
|
|
1094
|
-
bind: () => { },
|
|
1095
|
-
openFor: () => { },
|
|
1096
|
-
close: () => { },
|
|
1097
|
-
destroy: () => { }
|
|
1098
|
-
};
|
|
1099
|
-
}
|
|
1100
|
-
this.ngZone.onStable.pipe(take(1)).subscribe(() => {
|
|
1101
|
-
const childItems = this.extractColumnFilterValues(options.range, options.column);
|
|
1102
|
-
const parentItem = {
|
|
1103
|
-
text: this.messageFor('filterMenuAll'),
|
|
1104
|
-
value: null,
|
|
1105
|
-
checked: childItems.every(i => i.checked),
|
|
1106
|
-
items: childItems
|
|
1107
|
-
};
|
|
1108
|
-
this.rangeFilterValuesList = [parentItem];
|
|
1109
|
-
this.checkedKeys = [parentItem, ...childItems].filter(i => i.checked).map(i => i.text);
|
|
1110
|
-
});
|
|
1111
|
-
this.filterConditionsList = [
|
|
1112
|
-
{ type: 'none', comparerType: 'none', comparer: 'none', text: this.messageFor('filterNoneOperator') },
|
|
1113
|
-
{ type: 'string', comparerType: 'string_contains', comparer: 'contains', text: this.messageFor('filterContainsOperator') },
|
|
1114
|
-
{ type: 'string', comparerType: 'string_doesnotcontain', comparer: 'doesnotcontain', text: this.messageFor('filterNotContainsOperator') },
|
|
1115
|
-
{ type: 'string', comparerType: 'string_startswith', comparer: 'startswith', text: this.messageFor('filterStartsWithOperator') },
|
|
1116
|
-
{ type: 'string', comparerType: 'string_endswith', comparer: 'endswith', text: this.messageFor('filterEndsWithOperator') },
|
|
1117
|
-
{ type: 'string', comparerType: 'string_matches', comparer: 'eq', text: this.messageFor('filterMatchesOperator') },
|
|
1118
|
-
{ type: 'string', comparerType: 'string_doesnotmatch', comparer: 'neq', text: this.messageFor('filterNotMatchesOperator') },
|
|
1119
|
-
{ type: 'date', comparerType: 'date_eq', comparer: 'eq', text: this.messageFor('filterDateEqOperator') },
|
|
1120
|
-
{ type: 'date', comparerType: 'date_neq', comparer: 'neq', text: this.messageFor('filterDateNotEqOperator') },
|
|
1121
|
-
{ type: 'date', comparerType: 'date_lt', comparer: 'lt', text: this.messageFor('filterBeforeOperator') },
|
|
1122
|
-
{ type: 'date', comparerType: 'date_gt', comparer: 'gt', text: this.messageFor('filterAfterOperator') },
|
|
1123
|
-
{ type: 'number', comparerType: 'number_eq', comparer: 'eq', text: this.messageFor('filterEqOperator') },
|
|
1124
|
-
{ type: 'number', comparerType: 'number_neq', comparer: 'neq', text: this.messageFor('filterNotEqOperator') },
|
|
1125
|
-
{ type: 'number', comparerType: 'number_gte', comparer: 'gte', text: this.messageFor('filterGteOperator') },
|
|
1126
|
-
{ type: 'number', comparerType: 'number_gt', comparer: 'gt', text: this.messageFor('filterGtOperator') },
|
|
1127
|
-
{ type: 'number', comparerType: 'number_lte', comparer: 'lte', text: this.messageFor('filterLteOperator') },
|
|
1128
|
-
{ type: 'number', comparerType: 'number_lt', comparer: 'lt', text: this.messageFor('filterLtOperator') }
|
|
1129
|
-
];
|
|
1130
|
-
const currentSheetFilter = this.spreadsheetWidget.activeSheet().filter();
|
|
1131
|
-
const columnFilter = currentSheetFilter?.columns?.find((col) => col.index === options.column);
|
|
1132
|
-
if (columnFilter) {
|
|
1133
|
-
const filter = columnFilter.filter.toJSON();
|
|
1134
|
-
if (filter.filter === 'custom') {
|
|
1135
|
-
const valueType = typeof filter.criteria[0].value === 'object' ? 'date' : typeof filter.criteria[0].value;
|
|
1136
|
-
this.selectedCondition = this.filterConditionsList.find(c => (c.comparer === filter?.criteria?.[0]?.operator) && (c.type === valueType));
|
|
1137
|
-
this.conditionValue = filter?.criteria?.[0]?.value;
|
|
1138
|
-
}
|
|
1139
|
-
else {
|
|
1140
|
-
this.checkedKeys = filter.values;
|
|
1141
|
-
}
|
|
1142
|
-
}
|
|
1143
|
-
else {
|
|
1144
|
-
this.selectedCondition = this.filterConditionsList[0];
|
|
1145
|
-
}
|
|
1146
|
-
return {
|
|
1147
|
-
bind: (_eventName, _handler) => { },
|
|
1148
|
-
openFor: (anchor) => {
|
|
1149
|
-
this.popupRef = this.popupService.open({
|
|
1150
|
-
anchor,
|
|
1151
|
-
content: this.filterMenuTemplate,
|
|
1152
|
-
popupAlign: { horizontal: 'left', vertical: 'top' },
|
|
1153
|
-
anchorAlign: { horizontal: 'left', vertical: 'bottom' },
|
|
1154
|
-
popupClass: 'k-spreadsheet-filter-menu k-column-menu k-group k-reset'
|
|
1155
|
-
});
|
|
1156
|
-
this.popupPositionChangeSub = this.popupRef.popupPositionChange.subscribe(({ offset }) => {
|
|
1157
|
-
if (offset.top === 0 && offset.left === 0) {
|
|
1158
|
-
this.closePopup();
|
|
1159
|
-
this.filterMenuOpened = false;
|
|
1160
|
-
}
|
|
1161
|
-
});
|
|
1162
|
-
this.filterMenuOpened = true;
|
|
1163
|
-
},
|
|
1164
|
-
close: () => { this.closePopup(); this.filterMenuOpened = false; },
|
|
1165
|
-
destroy: () => { this.closePopup(); this.filterMenuOpened = false; }
|
|
1166
|
-
};
|
|
1167
|
-
}
|
|
1168
|
-
extractColumnFilterValues(range, column) {
|
|
1169
|
-
const results = [];
|
|
1170
|
-
const sheet = range.sheet();
|
|
1171
|
-
const columnRange = range.column(column).resize({ top: 1 });
|
|
1172
|
-
const blanksMessage = this.localization.get('blankValues');
|
|
1173
|
-
columnRange.forEachCell((rowIndex, _colIndex, cellData) => {
|
|
1174
|
-
const isVisible = !sheet.isHiddenRow(rowIndex);
|
|
1175
|
-
let cellValue = cellData.value;
|
|
1176
|
-
const unformattedValue = cellValue;
|
|
1177
|
-
let displayText;
|
|
1178
|
-
let valueType;
|
|
1179
|
-
if (cellValue === undefined) {
|
|
1180
|
-
valueType = 'blank';
|
|
1181
|
-
}
|
|
1182
|
-
else if (cellData.format) {
|
|
1183
|
-
valueType = formatting.type(cellValue, cellData.format);
|
|
1184
|
-
}
|
|
1185
|
-
else {
|
|
1186
|
-
valueType = typeof cellValue;
|
|
1187
|
-
}
|
|
1188
|
-
if (cellValue !== null && cellData.format) {
|
|
1189
|
-
displayText = formatting.text(cellValue, cellData.format);
|
|
1190
|
-
}
|
|
1191
|
-
else {
|
|
1192
|
-
displayText = valueType === 'blank' ? blanksMessage : cellValue;
|
|
1193
|
-
}
|
|
1194
|
-
if (valueType === 'percent' || valueType === 'currency') {
|
|
1195
|
-
valueType = 'number';
|
|
1196
|
-
}
|
|
1197
|
-
if (valueType === 'date') {
|
|
1198
|
-
cellValue = serialToDate(cellValue);
|
|
1199
|
-
}
|
|
1200
|
-
results.push({
|
|
1201
|
-
dataType: valueType,
|
|
1202
|
-
value: cellValue,
|
|
1203
|
-
text: displayText,
|
|
1204
|
-
checked: isVisible,
|
|
1205
|
-
unformattedValue
|
|
1206
|
-
});
|
|
1207
|
-
});
|
|
1208
|
-
const uniqueValuesSorted = this.removeDuplicateValues(results).sort(this.compareFilterValues);
|
|
1209
|
-
return uniqueValuesSorted;
|
|
1210
|
-
}
|
|
1211
|
-
removeDuplicateValues(values) {
|
|
1212
|
-
const hash = new Map();
|
|
1213
|
-
const result = [];
|
|
1214
|
-
for (const item of values) {
|
|
1215
|
-
const existingItem = hash.get(item.value);
|
|
1216
|
-
if (!existingItem) {
|
|
1217
|
-
hash.set(item.value, item);
|
|
1218
|
-
result.push(item);
|
|
1219
|
-
}
|
|
1220
|
-
else if (!existingItem.checked && item.checked) {
|
|
1221
|
-
existingItem.checked = true;
|
|
1222
|
-
}
|
|
1223
|
-
}
|
|
1224
|
-
return result;
|
|
1225
|
-
}
|
|
1226
|
-
compareFilterValues(a, b) {
|
|
1227
|
-
if (a.dataType === b.dataType) {
|
|
1228
|
-
switch (a.dataType) {
|
|
1229
|
-
case 'number':
|
|
1230
|
-
return a.value - b.value;
|
|
1231
|
-
case 'date':
|
|
1232
|
-
return a.value.getTime() - b.value.getTime();
|
|
1233
|
-
case 'blank':
|
|
1234
|
-
return 0;
|
|
1235
|
-
default:
|
|
1236
|
-
return String(a.value).localeCompare(String(b.value));
|
|
1237
|
-
}
|
|
1238
|
-
}
|
|
1239
|
-
if (a.dataType === 'blank')
|
|
1240
|
-
return -1;
|
|
1241
|
-
if (b.dataType === 'blank')
|
|
1242
|
-
return 1;
|
|
1243
|
-
if (a.dataType === 'number')
|
|
1244
|
-
return -1;
|
|
1245
|
-
if (b.dataType === 'number')
|
|
1246
|
-
return 1;
|
|
1247
|
-
if (a.dataType === 'date')
|
|
1248
|
-
return -1;
|
|
1249
|
-
if (b.dataType === 'date')
|
|
1250
|
-
return 1;
|
|
1251
|
-
return 0;
|
|
1252
|
-
}
|
|
1253
|
-
containsItem(item) {
|
|
1254
|
-
return this.checkedKeys.indexOf(item.text) > -1;
|
|
1255
|
-
}
|
|
1256
|
-
findItemByText(items, text) {
|
|
1257
|
-
for (const item of items) {
|
|
1258
|
-
if (item.text === text) {
|
|
1259
|
-
return item;
|
|
1260
|
-
}
|
|
1261
|
-
if (item.items && item.items.length > 0) {
|
|
1262
|
-
const found = this.findItemByText(item.items, text);
|
|
1263
|
-
if (found) {
|
|
1264
|
-
return found;
|
|
1265
|
-
}
|
|
1266
|
-
}
|
|
1267
|
-
}
|
|
1268
|
-
return null;
|
|
1269
|
-
}
|
|
1270
|
-
isIndeterminate(items = []) {
|
|
1271
|
-
let idx = 0;
|
|
1272
|
-
let item;
|
|
1273
|
-
while ((item = items[idx])) {
|
|
1274
|
-
if (this.isIndeterminate(item.items) || this.containsItem(item)) {
|
|
1275
|
-
return true;
|
|
1276
|
-
}
|
|
1277
|
-
idx += 1;
|
|
1278
|
-
}
|
|
1279
|
-
return false;
|
|
1280
|
-
}
|
|
1281
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpreadsheetComponent, deps: [{ token: i0.NgZone }, { token: i1.IntlService }, { token: i0.ElementRef }, { token: i2.LocalizationService }, { token: i3.SpreadsheetService }, { token: i4.SpreadsheetToolsService }, { token: i5.ErrorHandlingService }, { token: i6.DialogService }, { token: i7.PopupService }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1282
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SpreadsheetComponent, isStandalone: true, selector: "kendo-spreadsheet", inputs: { menuItems: "menuItems", overflow: "overflow", formulaListMaxHeight: "formulaListMaxHeight", activeSheet: "activeSheet", sheets: "sheets", columns: "columns", columnWidth: "columnWidth", defaultCellStyle: "defaultCellStyle", headerHeight: "headerHeight", headerWidth: "headerWidth", rowHeight: "rowHeight", rows: "rows", cellEditors: "cellEditors", images: "images", excel: "excel" }, outputs: { change: "change", formatChange: "formatChange", selectionChange: "selectionChange", excelExport: "excelExport", excelImport: "excelImport", activeSheetChange: "activeSheetChange", clipboard: "clipboard" }, host: { properties: { "class.k-spreadsheet": "this.hostClass", "attr.role": "this.role" } }, providers: [
|
|
1283
|
-
SpreadsheetLocalizationService,
|
|
1284
|
-
SpreadsheetService,
|
|
1285
|
-
{
|
|
1286
|
-
provide: LocalizationService,
|
|
1287
|
-
useExisting: SpreadsheetLocalizationService
|
|
1288
|
-
},
|
|
1289
|
-
{
|
|
1290
|
-
provide: L10N_PREFIX,
|
|
1291
|
-
useValue: 'kendo.spreadsheet'
|
|
1292
|
-
},
|
|
1293
|
-
SpreadsheetToolsService,
|
|
1294
|
-
PopupService,
|
|
1295
|
-
ErrorHandlingService
|
|
1296
|
-
], viewQueries: [{ propertyName: "formulaBarInputRef", first: true, predicate: ["formulaBar"], descendants: true, read: FormulaInputDirective }, { propertyName: "formulaCellInputRef", first: true, predicate: ["formulaCell"], descendants: true, read: FormulaInputDirective }, { propertyName: "nameBoxRef", first: true, predicate: ["nameBox"], descendants: true }, { propertyName: "dialogContainer", first: true, predicate: ["dialogContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "contextMenu", first: true, predicate: ["contextMenu"], descendants: true }, { propertyName: "filterMenuTemplate", first: true, predicate: ["filterMenuTemplate"], descendants: true }], exportAs: ["kendo-spreadsheet"], usesOnChanges: true, ngImport: i0, template: `
|
|
1297
|
-
<ng-container
|
|
1298
|
-
kendoSpreadsheetLocalizedMessages
|
|
1299
|
-
i18n-background="kendo.spreadsheet.background|The title of the tool that changes the text background color."
|
|
1300
|
-
background="Background color"
|
|
1301
|
-
i18n-color="kendo.spreadsheet.color|The title of the tool that changes the text font color."
|
|
1302
|
-
color="Font color"
|
|
1303
|
-
i18n-bold="kendo.spreadsheet.bold|The title of the Bold tool."
|
|
1304
|
-
bold="Bold"
|
|
1305
|
-
i18n-dataValidation="kendo.spreadsheet.dataValidation|The title of the Data Validation tool."
|
|
1306
|
-
dataValidation="Data Validation"
|
|
1307
|
-
i18n-filter="kendo.spreadsheet.filter|The title of the Filter tool."
|
|
1308
|
-
filter="Filter"
|
|
1309
|
-
i18n-validationCellRange="kendo.spreadsheet.validationCellRange|The text of the Cell Range label in the data validation dialog."
|
|
1310
|
-
validationCellRange="Cell Range"
|
|
1311
|
-
i18n-validationCriteria="kendo.spreadsheet.validationCriteria|The text of the Criteria dropdown list label in the data validation dialog."
|
|
1312
|
-
validationCriteria="Criteria"
|
|
1313
|
-
i18n-validationMinValue="kendo.spreadsheet.validationMinValue|The text of the Min value label in the data validation dialog."
|
|
1314
|
-
validationMinValue="Min"
|
|
1315
|
-
i18n-validationMaxValue="kendo.spreadsheet.validationMaxValue|The text of the Max value label in the data validation dialog."
|
|
1316
|
-
validationMaxValue="Max"
|
|
1317
|
-
i18n-validationStartValue="kendo.spreadsheet.validationStartValue|The text of the Start value label in the data validation dialog."
|
|
1318
|
-
validationStartValue="Start"
|
|
1319
|
-
i18n-validationEndValue="kendo.spreadsheet.validationEndValue|The text of the End value label in the data validation dialog."
|
|
1320
|
-
validationEndValue="End"
|
|
1321
|
-
i18n-validationValue="kendo.spreadsheet.validationValue|The text of the Value label in the data validation dialog."
|
|
1322
|
-
validationValue="Text"
|
|
1323
|
-
i18n-validationShowListButtonCheckbox="kendo.spreadsheet.validationShowListButtonCheckbox|The text for the Show list button checkbox label in the data validation dialog."
|
|
1324
|
-
validationShowListButtonCheckbox="Display button to show list"
|
|
1325
|
-
i18n-validationOnInvalidData="kendo.spreadsheet.validationOnInvalidData|The text for the On invalid data label in the data validation dialog."
|
|
1326
|
-
validationOnInvalidData="On invalid data"
|
|
1327
|
-
i18n-validationShowDateButtonCheckbox="kendo.spreadsheet.validationShowDateButtonCheckbox|The text for the Show date button checkbox label in the data validation dialog."
|
|
1328
|
-
validationShowDateButtonCheckbox="Display button to show Calendar"
|
|
1329
|
-
i18n-validationRejectInput="kendo.spreadsheet.validationRejectInput|The text for the Reject input radio button label in the data validation dialog."
|
|
1330
|
-
validationRejectInput="Reject input"
|
|
1331
|
-
i18n-validationShowWarning="kendo.spreadsheet.validationShowWarning|The text for the Show warning radio button label in the data validation dialog."
|
|
1332
|
-
validationShowWarning="Show warning"
|
|
1333
|
-
i18n-validationHintTitle="kendo.spreadsheet.validationHintTitle|The text for the Custom hint title input label in the data validation dialog."
|
|
1334
|
-
validationHintTitle="Custom hint title"
|
|
1335
|
-
i18n-validationHintMessage="kendo.spreadsheet.validationHintMessage|The text for the Custom hint input label in the data validation dialog."
|
|
1336
|
-
validationHintMessage="Custom hint"
|
|
1337
|
-
i18n-validationShowHint="kendo.spreadsheet.validationShowHint|The text for the Show hint radio button label in the data validation dialog."
|
|
1338
|
-
validationShowHint="Show hint"
|
|
1339
|
-
i18n-validationIgnoreBlankCheckbox="kendo.spreadsheet.validationIgnoreBlankCheckbox|The text for the Ignore blank checkbox label in the data validation dialog."
|
|
1340
|
-
validationIgnoreBlankCheckbox="Ignore blank"
|
|
1341
|
-
i18n-validationComparer="kendo.spreadsheet.validationComparer|The text of the Comparer dropdown list label in the data validation dialog."
|
|
1342
|
-
validationComparer="Comparer"
|
|
1343
|
-
i18n-anyValueValidationCriteria="kendo.spreadsheet.anyValueValidationCriteria|The text of the Any value validation criteria"
|
|
1344
|
-
anyValueValidationCriteria="Any value"
|
|
1345
|
-
i18n-numberValidationCriteria="kendo.spreadsheet.numberValidationCriteria|The text of the Number validation criteria"
|
|
1346
|
-
numberValidationCriteria="Number"
|
|
1347
|
-
i18n-textValidationCriteria="kendo.spreadsheet.textValidationCriteria|The text of the Text validation criteria"
|
|
1348
|
-
textValidationCriteria="Text"
|
|
1349
|
-
i18n-dateValidationCriteria="kendo.spreadsheet.dateValidationCriteria|The text of the Date validation criteria"
|
|
1350
|
-
dateValidationCriteria="Date"
|
|
1351
|
-
i18n-customFormulaValidationCriteria="kendo.spreadsheet.customFormulaValidationCriteria|The text of the Custom formula validation criteria"
|
|
1352
|
-
customFormulaValidationCriteria="Custom Formula"
|
|
1353
|
-
i18n-listValidationCriteria="kendo.spreadsheet.listValidationCriteria|The text of the List validation criteria"
|
|
1354
|
-
listValidationCriteria="List"
|
|
1355
|
-
i18n-greaterThanValidationComparer="kendo.spreadsheet.greaterThanValidationComparer|The text of the greater than validation comparer"
|
|
1356
|
-
greaterThanValidationComparer="greater than"
|
|
1357
|
-
i18n-lessThanValidationComparer="kendo.spreadsheet.lessThanValidationComparer|The text of the less than validation comparer"
|
|
1358
|
-
lessThanValidationComparer="less than"
|
|
1359
|
-
i18n-betweenValidationComparer="kendo.spreadsheet.betweenValidationComparer|The text of the between validation comparer"
|
|
1360
|
-
betweenValidationComparer="between"
|
|
1361
|
-
i18n-notBetweenValidationComparer="kendo.spreadsheet.notBetweenValidationComparer|The text of the not between validation comparer"
|
|
1362
|
-
notBetweenValidationComparer="not between"
|
|
1363
|
-
i18n-equalToValidationComparer="kendo.spreadsheet.equalToValidationComparer|The text of the equal to validation comparer"
|
|
1364
|
-
equalToValidationComparer="equal to"
|
|
1365
|
-
i18n-notEqualToValidationComparer="kendo.spreadsheet.notEqualToValidationComparer|The text of the not equal to validation comparer"
|
|
1366
|
-
notEqualToValidationComparer="not equal to"
|
|
1367
|
-
i18n-greaterThanOrEqualToValidationComparer="kendo.spreadsheet.greaterThanOrEqualToValidationComparer|The text of the greater than on equal to validation comparer"
|
|
1368
|
-
greaterThanOrEqualToValidationComparer="greater than or equal to"
|
|
1369
|
-
i18n-lessThanOrEqualToValidationComparer="kendo.spreadsheet.lessThanOrEqualToValidationComparer|The text of the less than on equal to validation comparer"
|
|
1370
|
-
lessThanOrEqualToValidationComparer="less than or equal to"
|
|
1371
|
-
i18n-italic="kendo.spreadsheet.italic|The title of the Italic tool."
|
|
1372
|
-
italic="Italic"
|
|
1373
|
-
i18n-underline="kendo.spreadsheet.underline|The title of the Underline tool."
|
|
1374
|
-
underline="Underline"
|
|
1375
|
-
i18n-loadFile="kendo.spreadsheet.loadFile|The title of the Load File tool."
|
|
1376
|
-
loadFile="Open..."
|
|
1377
|
-
i18n-saveFile="kendo.spreadsheet.saveFile|The title of the Save File tool."
|
|
1378
|
-
saveFile="Export..."
|
|
1379
|
-
i18n-format="kendo.spreadsheet.format|The text of the Format tool."
|
|
1380
|
-
format="Custom format..."
|
|
1381
|
-
i18n-fontFamily="kendo.spreadsheet.fontFamily|The text of the Font Family tool."
|
|
1382
|
-
fontFamily="Font"
|
|
1383
|
-
i18n-fontSize="kendo.spreadsheet.fontSize|The text of the Font Size tool."
|
|
1384
|
-
fontSize="Font size"
|
|
1385
|
-
i18n-home="kendo.spreadsheet.home|The text of the Home toolbar tab."
|
|
1386
|
-
home="Home"
|
|
1387
|
-
i18n-file="kendo.spreadsheet.file|The text of the File toolbar tab."
|
|
1388
|
-
file="File"
|
|
1389
|
-
i18n-insert="kendo.spreadsheet.insert|The text of the Insert toolbar tab."
|
|
1390
|
-
insert="Insert"
|
|
1391
|
-
i18n-formatTab="kendo.spreadsheet.formatTab|The text of the Format toolbar tab."
|
|
1392
|
-
formatTab="Format"
|
|
1393
|
-
i18n-dataTab="kendo.spreadsheet.dataTab|The text of the Data toolbar tab."
|
|
1394
|
-
dataTab="Data"
|
|
1395
|
-
i18n-view="kendo.spreadsheet.view|The text of the View toolbar tab."
|
|
1396
|
-
view="View"
|
|
1397
|
-
i18n-undo="kendo.spreadsheet.undo|The title of the Undo tool."
|
|
1398
|
-
undo="Undo"
|
|
1399
|
-
i18n-redo="kendo.spreadsheet.redo|The title of the Redo tool."
|
|
1400
|
-
redo="Redo"
|
|
1401
|
-
i18n-gridLines="kendo.spreadsheet.gridLines|The title of the Grid Lines tool."
|
|
1402
|
-
gridLines="Toggle grid lines"
|
|
1403
|
-
i18n-addColumnLeft="kendo.spreadsheet.addColumnLeft|The title of the tool that adds new column before currently selected column."
|
|
1404
|
-
addColumnLeft="Add column left"
|
|
1405
|
-
i18n-addColumnRight="kendo.spreadsheet.addColumnRight|The title of the tool that adds new column after currently selected column."
|
|
1406
|
-
addColumnRight="Add column right"
|
|
1407
|
-
i18n-addRowBelow="kendo.spreadsheet.addRowBelow|The title of the tool that adds new row below currently selected row."
|
|
1408
|
-
addRowBelow="Add row below"
|
|
1409
|
-
i18n-addRowAbove="kendo.spreadsheet.addRowAbove|The title of the tool that adds new row above currently selected row."
|
|
1410
|
-
addRowAbove="Add row above"
|
|
1411
|
-
i18n-deleteColumn="kendo.spreadsheet.deleteColumn|The title of the tool that deletes a column."
|
|
1412
|
-
deleteColumn="Delete column"
|
|
1413
|
-
i18n-deleteRow="kendo.spreadsheet.deleteRow|The title of the tool that deletes a row."
|
|
1414
|
-
deleteRow="Delete row"
|
|
1415
|
-
i18n-wrap="kendo.spreadsheet.wrap|The title of the Text Wrap tool."
|
|
1416
|
-
wrap="Text wrap"
|
|
1417
|
-
i18n-align="kendo.spreadsheet.align|The title of the Text Align tool."
|
|
1418
|
-
align="Align"
|
|
1419
|
-
i18n-alignHorizontal="kendo.spreadsheet.alignHorizontal|The title of the Text Align Horizontal tool."
|
|
1420
|
-
alignHorizontal="Align horizontally"
|
|
1421
|
-
i18n-alignVertical="kendo.spreadsheet.alignVertical|The title of the Text Align Vertical tool."
|
|
1422
|
-
alignVertical="Align vertically"
|
|
1423
|
-
i18n-alignLeft="kendo.spreadsheet.alignLeft|The title of the Text Align Left tool."
|
|
1424
|
-
alignLeft="Align Left"
|
|
1425
|
-
i18n-alignCenter="kendo.spreadsheet.alignCenter|The title of the Text Align Center tool."
|
|
1426
|
-
alignCenter="Align Center"
|
|
1427
|
-
i18n-alignRight="kendo.spreadsheet.alignRight|The title of the Text Align Right tool."
|
|
1428
|
-
alignRight="Align Right"
|
|
1429
|
-
i18n-alignJustify="kendo.spreadsheet.alignJustify|The title of the Text Align Justify tool."
|
|
1430
|
-
alignJustify="Align Justify"
|
|
1431
|
-
i18n-alignTop="kendo.spreadsheet.alignTop|The title of the Text Align Top tool."
|
|
1432
|
-
alignTop="Align Top"
|
|
1433
|
-
i18n-alignMiddle="kendo.spreadsheet.alignMiddle|The title of the Text Align Middle tool."
|
|
1434
|
-
alignMiddle="Align Middle"
|
|
1435
|
-
i18n-alignBottom="kendo.spreadsheet.alignBottom|The title of the Text Align Bottom tool."
|
|
1436
|
-
alignBottom="Align Bottom"
|
|
1437
|
-
i18n-merge="kendo.spreadsheet.merge|The title of the Cells Merge tool."
|
|
1438
|
-
merge="Merge"
|
|
1439
|
-
i18n-mergeAll="kendo.spreadsheet.mergeAll|The title of the Merge all tool."
|
|
1440
|
-
mergeAll="Merge all"
|
|
1441
|
-
i18n-mergeHorizontally="kendo.spreadsheet.mergeHorizontally|The title of the Merge horizontally tool."
|
|
1442
|
-
mergeHorizontally="Merge horizontally"
|
|
1443
|
-
i18n-mergeVertically="kendo.spreadsheet.mergeVertically|The title of the Merge vertically tool."
|
|
1444
|
-
mergeVertically="Merge vertically"
|
|
1445
|
-
i18n-unmerge="kendo.spreadsheet.unmerge|The title of the Unmerge tool."
|
|
1446
|
-
unmerge="Unmerge"
|
|
1447
|
-
i18n-insertLink="kendo.spreadsheet.insertLink|The title of the tool that inserts a link."
|
|
1448
|
-
insertLink="Insert link"
|
|
1449
|
-
i18n-decreaseDecimal="kendo.spreadsheet.decreaseDecimal|The title of the tool that decreases decimals."
|
|
1450
|
-
decreaseDecimal="Decrease decimal"
|
|
1451
|
-
i18n-increaseDecimal="kendo.spreadsheet.increaseDecimal|The title of the tool that increases decimals."
|
|
1452
|
-
increaseDecimal="Increase decimal"
|
|
1453
|
-
i18n-increaseFontSize="kendo.spreadsheet.increaseFontSize|The title of the tool that increases the cell font size."
|
|
1454
|
-
increaseFontSize="Increase font size"
|
|
1455
|
-
i18n-decreaseFontSize="kendo.spreadsheet.decreaseFontSize|The title of the tool that decreases the cell font size."
|
|
1456
|
-
decreaseFontSize="Decrease font size"
|
|
1457
|
-
i18n-dialogApply="kendo.spreadsheet.dialogApply|The text of the **Apply** button in all Spreadsheet dialogs."
|
|
1458
|
-
dialogApply="Apply"
|
|
1459
|
-
i18n-dialogCancel="kendo.spreadsheet.dialogCancel|The text of the **Cancel** button in all Spreadsheet dialogs."
|
|
1460
|
-
dialogCancel="Cancel"
|
|
1461
|
-
i18n-dialogDelete="kendo.spreadsheet.dialogDelete|The text of the **Delete** button in the Delete sheet dialog."
|
|
1462
|
-
dialogDelete="Delete"
|
|
1463
|
-
i18n-dialogRename="kendo.spreadsheet.dialogRename|The text of the **Rename** button in the Rename sheet dialog."
|
|
1464
|
-
dialogRename="Rename"
|
|
1465
|
-
i18n-dialogInsert="kendo.spreadsheet.dialogInsert|The text of the **Insert** button in all Spreadsheet dialogs."
|
|
1466
|
-
dialogInsert="Insert"
|
|
1467
|
-
i18n-dialogRemove="kendo.spreadsheet.dialogRemove|The text of the **Remove** button in all Spreadsheet dialogs."
|
|
1468
|
-
dialogRemove="Remove"
|
|
1469
|
-
i18n-dialogRemoveLink="kendo.spreadsheet.dialogRemoveLink|The text of the **Remove link** button in the Link tool dialog."
|
|
1470
|
-
dialogRemoveLink="Remove link"
|
|
1471
|
-
i18n-rename="kendo.spreadsheet.rename|The title of the Rename sheet dialog."
|
|
1472
|
-
rename="Rename Sheet"
|
|
1473
|
-
i18n-delete="kendo.spreadsheet.delete|The title of the Delete sheet dialog."
|
|
1474
|
-
delete="Delete Sheet"
|
|
1475
|
-
i18n-nameBox="kendo.spreadsheet.nameBox|The title of the Name Box input."
|
|
1476
|
-
nameBox="Name Box"
|
|
1477
|
-
i18n-formulaInput="kendo.spreadsheet.formulaInput|The title of the Formula input."
|
|
1478
|
-
formulaInput="Formula Input"
|
|
1479
|
-
i18n-addSheet="kendo.spreadsheet.addSheet|The title of the Add new sheet button."
|
|
1480
|
-
addSheet="Add New Sheet"
|
|
1481
|
-
i18n-sheetsMenu="kendo.spreadsheet.sheetsMenu|The title of the Sheets menu button."
|
|
1482
|
-
sheetsMenu="All Sheets"
|
|
1483
|
-
i18n-openUnsupported="kendo.spreadsheet.openUnsupported|The content of the dialog that warns about an unsupported file type."
|
|
1484
|
-
openUnsupported="Unsupported format. Please select an .xlsx file."
|
|
1485
|
-
i18n-modifyMerged="kendo.spreadsheet.modifyMerged|The content of the dialog that warns about modifying a merged cell."
|
|
1486
|
-
modifyMerged="Cannot change part of a merged cell."
|
|
1487
|
-
i18n-cannotModifyDisabled="kendo.spreadsheet.cannotModifyDisabled|The content of the dialog that warns about modifying a disabled cell."
|
|
1488
|
-
cannotModifyDisabled="Cannot modify disabled cells."
|
|
1489
|
-
i18n-dialogOk="kendo.spreadsheet.dialogOk|The text of the **OK** dialog button."
|
|
1490
|
-
dialogOk="OK"
|
|
1491
|
-
i18n-dialogError="kendo.spreadsheet.dialogError|The title of an error dialog."
|
|
1492
|
-
dialogError="Error"
|
|
1493
|
-
i18n-duplicateSheetName="kendo.spreadsheet.duplicateSheetName|The content of the dialog that warns about duplicated sheet name."
|
|
1494
|
-
duplicateSheetName="There is an existing sheet with this name. Please enter another name."
|
|
1495
|
-
i18n-copy="kendo.spreadsheet.copy|The Copy command text."
|
|
1496
|
-
copy="Copy"
|
|
1497
|
-
i18n-cut="kendo.spreadsheet.cut|The Cut command text."
|
|
1498
|
-
cut="Cut"
|
|
1499
|
-
i18n-paste="kendo.spreadsheet.paste|The Paste command text."
|
|
1500
|
-
paste="Paste (use Ctrl/⌘ + V)"
|
|
1501
|
-
i18n-hideRow="kendo.spreadsheet.hideRow|The Hide row command text."
|
|
1502
|
-
hideRow="Hide"
|
|
1503
|
-
i18n-unhideRow="kendo.spreadsheet.unhideRow|The Unhide row command text."
|
|
1504
|
-
unhideRow="Unhide"
|
|
1505
|
-
i18n-hideColumn="kendo.spreadsheet.hideColumn|The Hide column command text."
|
|
1506
|
-
hideColumn="Hide"
|
|
1507
|
-
i18n-unhideColumn="kendo.spreadsheet.unhideColumn|The Unhide column command text."
|
|
1508
|
-
unhideColumn="Unhide"
|
|
1509
|
-
i18n-sheetDelete="kendo.spreadsheet.sheetDelete|The text of the Sheet menu Delete option."
|
|
1510
|
-
sheetDelete="Delete"
|
|
1511
|
-
i18n-sheetRename="kendo.spreadsheet.sheetRename|The text of the Sheet menu Rename option."
|
|
1512
|
-
sheetRename="Rename"
|
|
1513
|
-
i18n-sheetDuplicate="kendo.spreadsheet.sheetDuplicate|The text of the Sheet menu Duplicate option."
|
|
1514
|
-
sheetDuplicate="Duplicate"
|
|
1515
|
-
i18n-sheetHide="kendo.spreadsheet.sheetHide|The text of the Sheet menu Hide option."
|
|
1516
|
-
sheetHide="Hide"
|
|
1517
|
-
i18n-sheetMoveLeft="kendo.spreadsheet.sheetMoveLeft|The text of the Sheet menu Move Left option."
|
|
1518
|
-
sheetMoveLeft="Move Left"
|
|
1519
|
-
i18n-sheetMoveRight="kendo.spreadsheet.sheetMoveRight|The text of the Sheet menu Move Right option."
|
|
1520
|
-
sheetMoveRight="Move Right"
|
|
1521
|
-
i18n-invalidNameError="kendo.spreadsheet.invalidNameError|The content of the dialog that warns about invalid name input."
|
|
1522
|
-
invalidNameError="{{ 'Invalid name: {inputValue}' }}"
|
|
1523
|
-
i18n-cantSortMixedCells="kendo.spreadsheet.cantSortMixedCells|The content of the dialog that warns about sorting range containing cells of mixed shapes."
|
|
1524
|
-
cantSortMixedCells="Cannot sort range containing cells of mixed shapes"
|
|
1525
|
-
i18n-cantSortNullRef="kendo.spreadsheet.cantSortNullRef|The content of the dialog that warns about sorting incorrect (empty) range."
|
|
1526
|
-
cantSortNullRef="Cannot sort empty selection"
|
|
1527
|
-
i18n-cantSortMultipleSelection="kendo.spreadsheet.cantSortMultipleSelection|The content of the dialog that warns about sorting multiple range selection."
|
|
1528
|
-
cantSortMultipleSelection="Cannot sort multiple selection"
|
|
1529
|
-
i18n-filterApply="kendo.spreadsheet.filterApply|The text of the **Apply** button in the filter menu."
|
|
1530
|
-
filterApply="Apply"
|
|
1531
|
-
i18n-filterClear="kendo.spreadsheet.filterClear|The text of the **Clear** button in the filter menu."
|
|
1532
|
-
filterClear="Clear"
|
|
1533
|
-
i18n-filterMenuAll="kendo.spreadsheet.filterMenuAll|The text of the **All** grouping item in the filter menu."
|
|
1534
|
-
filterMenuAll="All"
|
|
1535
|
-
i18n-blankValues="kendo.spreadsheet.blankValues|The text for the blank (empty) values."
|
|
1536
|
-
blankValues="Blank"
|
|
1537
|
-
i18n-filterNoneOperator="kendo.spreadsheet.filterNoneOperator|The text for the **none** filter operator."
|
|
1538
|
-
filterNoneOperator="None"
|
|
1539
|
-
i18n-filterContainsOperator="kendo.spreadsheet.filterContainsOperator|The text of the **contains** filter operator"
|
|
1540
|
-
filterContainsOperator="Text contains"
|
|
1541
|
-
i18n-filterNotContainsOperator="kendo.spreadsheet.filterNotContainsOperator|The text of the **does not contain** filter operator"
|
|
1542
|
-
filterNotContainsOperator="Text does not contain"
|
|
1543
|
-
i18n-filterStartsWithOperator="kendo.spreadsheet.filterStartsWithOperator|The text of the **starts with** filter operator"
|
|
1544
|
-
filterStartsWithOperator="Text starts with"
|
|
1545
|
-
i18n-filterEndsWithOperator="kendo.spreadsheet.filterEndsWithOperator|The text of the **ends with** filter operator"
|
|
1546
|
-
filterEndsWithOperator="Text ends with"
|
|
1547
|
-
i18n-filterMatchesOperator="kendo.spreadsheet.filterMatchesOperator|The text of the **matches** filter operator"
|
|
1548
|
-
filterMatchesOperator="Text matches"
|
|
1549
|
-
i18n-filterNotMatchesOperator="kendo.spreadsheet.filterNotMatchesOperator|The text of the **does not match** filter operator"
|
|
1550
|
-
filterNotMatchesOperator="Text does not match"
|
|
1551
|
-
i18n-filterDateEqOperator="kendo.spreadsheet.filterDateEqOperator|The text of the **Date is** filter operator"
|
|
1552
|
-
filterDateEqOperator="Date is"
|
|
1553
|
-
i18n-filterDateNotEqOperator="kendo.spreadsheet.filterDateNotEqOperator|The text of the **Date is not** filter operator"
|
|
1554
|
-
filterDateNotEqOperator="Date is not"
|
|
1555
|
-
i18n-filterBeforeOperator="kendo.spreadsheet.filterBeforeOperator|The text of the **Date is before** filter operator"
|
|
1556
|
-
filterBeforeOperator="Date is before"
|
|
1557
|
-
i18n-filterAfterOperator="kendo.spreadsheet.filterAfterOperator|The text of the **Date is after** filter operator"
|
|
1558
|
-
filterAfterOperator="Date is after"
|
|
1559
|
-
i18n-filterEqOperator="kendo.spreadsheet.filterEqOperator|Sets the text for the **Equal (Is equal to)** filter operator."
|
|
1560
|
-
filterEqOperator="Is equal to"
|
|
1561
|
-
i18n-filterNotEqOperator="kendo.spreadsheet.filterNotEqOperator|Sets the text for the **Not equal (Is not equal to)** filter operator."
|
|
1562
|
-
filterNotEqOperator="Is not equal to"
|
|
1563
|
-
i18n-filterGteOperator="kendo.spreadsheet.filterGteOperator|The text of the **greater than or equal to** filter operator"
|
|
1564
|
-
filterGteOperator="Is greater than or equal to"
|
|
1565
|
-
i18n-filterGtOperator="kendo.spreadsheet.filterGtOperator|The text of the **greater than** filter operator"
|
|
1566
|
-
filterGtOperator="Is greater than"
|
|
1567
|
-
i18n-filterLteOperator="kendo.spreadsheet.filterLteOperator|The text of the **less than or equal to** filter operator"
|
|
1568
|
-
filterLteOperator="Is less than or equal to"
|
|
1569
|
-
i18n-filterLtOperator="kendo.spreadsheet.filterLtOperator|The text of the **less than** filter operator"
|
|
1570
|
-
filterLtOperator="Is less than"
|
|
1571
|
-
i18n-filterMenuConditionItem="kendo.spreadsheet.filterMenuConditionItem|The text of the **Filter by condition** menu item."
|
|
1572
|
-
filterMenuConditionItem="Filter by condition"
|
|
1573
|
-
i18n-filterMenuValueItem="kendo.spreadsheet.filterMenuValueItem|The text of the **Filter by value** menu item."
|
|
1574
|
-
filterMenuValueItem="Filter by value"
|
|
1575
|
-
i18n-sort="kendo.spreadsheet.sort|The title of the Sort ToolBar tool."
|
|
1576
|
-
sort="Sort"
|
|
1577
|
-
i18n-sortAsc="kendo.spreadsheet.sortAsc|The text of the **Sort range A to Z** option."
|
|
1578
|
-
sortAsc="Sort range A to Z"
|
|
1579
|
-
i18n-sortDesc="kendo.spreadsheet.sortDesc|The text of the **Sort range Z to A** option."
|
|
1580
|
-
sortDesc="Sort range Z to A"
|
|
1581
|
-
i18n-unsort="kendo.spreadsheet.unsort|The text of the **Unsort** option."
|
|
1582
|
-
unsort="Unsort">
|
|
1583
|
-
</ng-container>
|
|
1584
|
-
<div class="k-spreadsheet-header">
|
|
1585
|
-
<kendo-menu kendoSpreadsheetMenu (select)="onMenuItemSelect($event)">
|
|
1586
|
-
@for (item of menuItems; track item) {
|
|
1587
|
-
<kendo-menu-item [text]="item.text" [cssClass]="item.cssClass"></kendo-menu-item>
|
|
1588
|
-
}
|
|
1589
|
-
</kendo-menu>
|
|
1590
|
-
@if (selectedMenuItem?.active && selectedMenuItem.id === 'file') {
|
|
1591
|
-
<kendo-toolbar
|
|
1592
|
-
[attr.aria-label]="messageFor('file')"
|
|
1593
|
-
fillMode="flat"
|
|
1594
|
-
class="k-spreadsheet-toolbar"
|
|
1595
|
-
[overflow]="overflow">
|
|
1596
|
-
<kendo-spreadsheet-load-file-tool></kendo-spreadsheet-load-file-tool>
|
|
1597
|
-
<kendo-toolbar-button kendoSpreadsheetSaveFile></kendo-toolbar-button>
|
|
1598
|
-
</kendo-toolbar>
|
|
1599
|
-
}
|
|
1600
|
-
@if (selectedMenuItem?.active && selectedMenuItem.id === 'home') {
|
|
1601
|
-
<kendo-toolbar
|
|
1602
|
-
[attr.aria-label]="messageFor('home')"
|
|
1603
|
-
class="k-spreadsheet-toolbar"
|
|
1604
|
-
fillMode="flat"
|
|
1605
|
-
[overflow]="overflow">
|
|
1606
|
-
<kendo-toolbar-button kendoSpreadsheetUndo></kendo-toolbar-button>
|
|
1607
|
-
<kendo-toolbar-button kendoSpreadsheetRedo></kendo-toolbar-button>
|
|
1608
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
1609
|
-
<kendo-toolbar-dropdownlist kendoSpreadsheetFontFamily></kendo-toolbar-dropdownlist>
|
|
1610
|
-
<kendo-toolbar-dropdownlist kendoSpreadsheetFontSize></kendo-toolbar-dropdownlist>
|
|
1611
|
-
<kendo-toolbar-buttongroup fillMode="flat">
|
|
1612
|
-
<kendo-toolbar-button kendoSpreadsheetIncreaseFontSize></kendo-toolbar-button>
|
|
1613
|
-
<kendo-toolbar-button kendoSpreadsheetDecreaseFontSize></kendo-toolbar-button>
|
|
1614
|
-
</kendo-toolbar-buttongroup>
|
|
1615
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
1616
|
-
<kendo-toolbar-buttongroup fillMode="flat">
|
|
1617
|
-
<kendo-toolbar-button kendoSpreadsheetBold></kendo-toolbar-button>
|
|
1618
|
-
<kendo-toolbar-button kendoSpreadsheetItalic></kendo-toolbar-button>
|
|
1619
|
-
<kendo-toolbar-button kendoSpreadsheetUnderline></kendo-toolbar-button>
|
|
1620
|
-
</kendo-toolbar-buttongroup>
|
|
1621
|
-
<kendo-spreadsheet-forecolor-tool></kendo-spreadsheet-forecolor-tool>
|
|
1622
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
1623
|
-
<kendo-spreadsheet-backcolor-tool></kendo-spreadsheet-backcolor-tool>
|
|
1624
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
1625
|
-
<kendo-toolbar-dropdownbutton kendoSpreadsheetHorizontalTextAlign></kendo-toolbar-dropdownbutton>
|
|
1626
|
-
<kendo-toolbar-dropdownbutton kendoSpreadsheetVerticalTextAlign></kendo-toolbar-dropdownbutton>
|
|
1627
|
-
<kendo-toolbar-button kendoSpreadsheetTextWrap></kendo-toolbar-button>
|
|
1628
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
1629
|
-
<kendo-toolbar-dropdownbutton kendoSpreadsheetFormat></kendo-toolbar-dropdownbutton>
|
|
1630
|
-
</kendo-toolbar>
|
|
1631
|
-
}
|
|
1632
|
-
@if (selectedMenuItem?.active && selectedMenuItem.id === 'insert') {
|
|
1633
|
-
<kendo-toolbar
|
|
1634
|
-
[attr.aria-label]="messageFor('insert')"
|
|
1635
|
-
fillMode="flat"
|
|
1636
|
-
class="k-spreadsheet-toolbar"
|
|
1637
|
-
[overflow]="overflow">
|
|
1638
|
-
<kendo-toolbar-button kendoSpreadsheetInsertLink></kendo-toolbar-button>
|
|
1639
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
1640
|
-
<kendo-toolbar-button kendoSpreadsheetAddColumnLeftButton></kendo-toolbar-button>
|
|
1641
|
-
<kendo-toolbar-button kendoSpreadsheetAddColumnRightButton></kendo-toolbar-button>
|
|
1642
|
-
<kendo-toolbar-button kendoSpreadsheetAddRowBelowButton></kendo-toolbar-button>
|
|
1643
|
-
<kendo-toolbar-button kendoSpreadsheetAddRowAboveButton></kendo-toolbar-button>
|
|
1644
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
1645
|
-
<kendo-toolbar-button kendoSpreadsheetDeleteColumnButton></kendo-toolbar-button>
|
|
1646
|
-
<kendo-toolbar-button kendoSpreadsheetDeleteRowButton></kendo-toolbar-button>
|
|
1647
|
-
</kendo-toolbar>
|
|
1648
|
-
}
|
|
1649
|
-
@if (selectedMenuItem?.active && selectedMenuItem.id === 'format') {
|
|
1650
|
-
<kendo-toolbar
|
|
1651
|
-
[attr.aria-label]="messageFor('formatTab')"
|
|
1652
|
-
fillMode="flat"
|
|
1653
|
-
class="k-spreadsheet-toolbar"
|
|
1654
|
-
[overflow]="overflow">
|
|
1655
|
-
<kendo-toolbar-button kendoSpreadsheetDecreaseDecimal></kendo-toolbar-button>
|
|
1656
|
-
<kendo-toolbar-button kendoSpreadsheetIncreaseDecimal></kendo-toolbar-button>
|
|
1657
|
-
</kendo-toolbar>
|
|
1658
|
-
}
|
|
1659
|
-
@if (selectedMenuItem?.active && selectedMenuItem.id === 'view') {
|
|
1660
|
-
<kendo-toolbar
|
|
1661
|
-
[attr.aria-label]="messageFor('view')"
|
|
1662
|
-
fillMode="flat"
|
|
1663
|
-
class="k-spreadsheet-toolbar"
|
|
1664
|
-
[overflow]="overflow">
|
|
1665
|
-
<kendo-toolbar-dropdownbutton kendoSpreadsheetMerge></kendo-toolbar-dropdownbutton>
|
|
1666
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
1667
|
-
<kendo-toolbar-button kendoSpreadsheetGridLines></kendo-toolbar-button>
|
|
1668
|
-
</kendo-toolbar>
|
|
1669
|
-
}
|
|
1670
|
-
@if (selectedMenuItem?.active && selectedMenuItem.id === 'data') {
|
|
1671
|
-
<kendo-toolbar
|
|
1672
|
-
[attr.aria-label]="messageFor('dataTab')"
|
|
1673
|
-
fillMode="flat"
|
|
1674
|
-
class="k-spreadsheet-toolbar"
|
|
1675
|
-
[overflow]="overflow">
|
|
1676
|
-
<kendo-toolbar-button kendoSpreadsheetDataValidation></kendo-toolbar-button>
|
|
1677
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
1678
|
-
<kendo-toolbar-button kendoSpreadsheetFilter></kendo-toolbar-button>
|
|
1679
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
1680
|
-
<kendo-toolbar-dropdownbutton kendoSpreadsheetSort></kendo-toolbar-dropdownbutton>
|
|
1681
|
-
</kendo-toolbar>
|
|
1682
|
-
}
|
|
1683
|
-
</div>
|
|
1684
|
-
<div class="k-spreadsheet-action-bar">
|
|
1685
|
-
<div #nameBox kendoSpreadsheetNameBox [spreadsheetWidget]="spreadsheetWidget"></div>
|
|
1686
|
-
<div class="k-spreadsheet-formula-bar">
|
|
1687
|
-
<span class="k-separator k-separator-vertical"></span>
|
|
1688
|
-
<kendo-icon-wrapper
|
|
1689
|
-
name="formula-fx"
|
|
1690
|
-
[svgIcon]="formulaFxIcon">
|
|
1691
|
-
</kendo-icon-wrapper>
|
|
1692
|
-
<span class="k-separator k-separator-vertical"></span>
|
|
1693
|
-
<div
|
|
1694
|
-
#formulaBar
|
|
1695
|
-
kendoSpreadsheetFormulaInput
|
|
1696
|
-
[formulaListMaxHeight]="formulaListMaxHeight"
|
|
1697
|
-
class="k-textbox k-input k-input-md k-input-flat k-rounded-md"></div>
|
|
1698
|
-
</div>
|
|
1699
|
-
</div>
|
|
1700
|
-
<div class="k-spreadsheet-view">
|
|
1701
|
-
<div class="k-spreadsheet-fixed-container"></div>
|
|
1702
|
-
<div class="k-spreadsheet-scroller">
|
|
1703
|
-
<div class="k-spreadsheet-view-size"></div>
|
|
1704
|
-
</div>
|
|
1705
|
-
<div tabIndex="0" class="k-spreadsheet-clipboard" contentEditable="true"></div>
|
|
1706
|
-
<div #formulaCell kendoSpreadsheetFormulaInput class="k-spreadsheet-cell-editor" data-role="formulainput"></div>
|
|
1707
|
-
</div>
|
|
1708
|
-
<div class="k-spreadsheet-sheets-bar"
|
|
1709
|
-
kendoSpreadsheetSheetsBar
|
|
1710
|
-
[sheets]="sheetsInfo"
|
|
1711
|
-
[sheetDescriptors]="sheets">
|
|
1712
|
-
</div>
|
|
1713
|
-
<ng-container #dialogContainer></ng-container>
|
|
1714
|
-
|
|
1715
|
-
<kendo-contextmenu #contextMenu
|
|
1716
|
-
[items]="contextMenuItems"
|
|
1717
|
-
(select)="onContextMenuSelect($event)">
|
|
1718
|
-
</kendo-contextmenu>
|
|
1719
|
-
|
|
1720
|
-
<ng-template #filterMenuTemplate>
|
|
1721
|
-
<kendo-spreadsheet-filtermenu-item
|
|
1722
|
-
[innerMenuItems]="sortMenuItems"
|
|
1723
|
-
(itemClick)="onSortItemClick($event)">
|
|
1724
|
-
</kendo-spreadsheet-filtermenu-item>
|
|
1725
|
-
<kendo-spreadsheet-filtermenu-item
|
|
1726
|
-
[expandable]="true"
|
|
1727
|
-
[expanded]="conditionExpanded"
|
|
1728
|
-
expanderClass="k-spreadsheet-condition-filter"
|
|
1729
|
-
[innerMenuItems]="[{text: messageFor('filterMenuConditionItem')}]"
|
|
1730
|
-
(collapse)="onToggle(false, 'condition')"
|
|
1731
|
-
(expand)="onToggle(true, 'condition')">
|
|
1732
|
-
<ng-template kendoSpreadsheetFilterMenuItemContentTemplate>
|
|
1733
|
-
<div class="k-details-content">
|
|
1734
|
-
<kendo-dropdownlist
|
|
1735
|
-
[data]="filterConditionsList"
|
|
1736
|
-
textField="text"
|
|
1737
|
-
valueField="comparerType"
|
|
1738
|
-
[(value)]="selectedCondition">
|
|
1739
|
-
</kendo-dropdownlist>
|
|
1740
|
-
@if (selectedCondition?.type === 'string') {
|
|
1741
|
-
<kendo-textbox [(value)]="conditionValue"></kendo-textbox>
|
|
1742
|
-
} @else if (selectedCondition?.type === 'number') {
|
|
1743
|
-
<kendo-numerictextbox [(value)]="conditionValue"></kendo-numerictextbox>
|
|
1744
|
-
} @else if (selectedCondition?.type === 'date') {
|
|
1745
|
-
<kendo-datepicker [(value)]="conditionValue"></kendo-datepicker>
|
|
1746
|
-
}
|
|
1747
|
-
</div>
|
|
1748
|
-
<div class="k-actions k-actions-stretched k-actions-horizontal">
|
|
1749
|
-
<button
|
|
1750
|
-
kendoButton
|
|
1751
|
-
themeColor="primary"
|
|
1752
|
-
(click)="filterApply('condition')">
|
|
1753
|
-
{{ messageFor('filterApply') }}
|
|
1754
|
-
</button>
|
|
1755
|
-
<button
|
|
1756
|
-
kendoButton
|
|
1757
|
-
(click)="filterClear()">
|
|
1758
|
-
{{ messageFor('filterClear') }}
|
|
1759
|
-
</button>
|
|
1760
|
-
</div>
|
|
1761
|
-
</ng-template>
|
|
1762
|
-
</kendo-spreadsheet-filtermenu-item>
|
|
1763
|
-
<kendo-spreadsheet-filtermenu-item
|
|
1764
|
-
[expandable]="true"
|
|
1765
|
-
[expanded]="valueExpanded"
|
|
1766
|
-
[innerMenuItems]="[{text: messageFor('filterMenuValueItem')}]"
|
|
1767
|
-
(collapse)="onToggle(false, 'value')"
|
|
1768
|
-
(expand)="onToggle(true, 'value')">
|
|
1769
|
-
<ng-template kendoSpreadsheetFilterMenuItemContentTemplate>
|
|
1770
|
-
<div class="k-spreadsheet-value-treeview-wrapper">
|
|
1771
|
-
<kendo-treeview #treeview
|
|
1772
|
-
kendoTreeViewHierarchyBinding
|
|
1773
|
-
childrenField="items"
|
|
1774
|
-
textField="text"
|
|
1775
|
-
[nodes]="rangeFilterValuesList"
|
|
1776
|
-
kendoTreeViewExpandable
|
|
1777
|
-
[(expandedKeys)]="expandedKeys"
|
|
1778
|
-
[filterable]="true"
|
|
1779
|
-
[kendoTreeViewCheckable]="{checkOnClick: true}"
|
|
1780
|
-
[(checkedKeys)]="checkedKeys"
|
|
1781
|
-
checkBy="text"
|
|
1782
|
-
[isChecked]="isChecked">
|
|
1783
|
-
</kendo-treeview>
|
|
1784
|
-
</div>
|
|
1785
|
-
<div class="k-actions k-actions-stretched k-actions-horizontal">
|
|
1786
|
-
<button
|
|
1787
|
-
kendoButton
|
|
1788
|
-
themeColor="primary"
|
|
1789
|
-
(click)="filterApply('value')">
|
|
1790
|
-
{{ messageFor('filterApply') }}
|
|
1791
|
-
</button>
|
|
1792
|
-
<button
|
|
1793
|
-
kendoButton
|
|
1794
|
-
(click)="filterClear()">
|
|
1795
|
-
{{ messageFor('filterClear') }}
|
|
1796
|
-
</button>
|
|
1797
|
-
</div>
|
|
1798
|
-
</ng-template>
|
|
1799
|
-
</kendo-spreadsheet-filtermenu-item>
|
|
1800
|
-
</ng-template>
|
|
1801
|
-
|
|
1802
|
-
@if (showLicenseWatermark) {
|
|
1803
|
-
<div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
|
|
1804
|
-
}
|
|
1805
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoSpreadsheetLocalizedMessages]" }, { kind: "component", type: MenuComponent, selector: "kendo-menu", inputs: ["appendTo", "menuItemTemplate", "ariaRole", "menuItemLinkTemplate"], outputs: ["select", "open", "close"], exportAs: ["kendoMenu"] }, { kind: "directive", type: MainMenuDirective, selector: "[kendoSpreadsheetMenu]" }, { kind: "component", type: MenuItemComponent, selector: "kendo-menu-item", inputs: ["text", "url", "disabled", "cssClass", "cssStyle", "icon", "svgIcon", "data", "separator"] }, { kind: "component", type: ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "fillMode", "tabindex", "size", "tabIndex", "showIcon", "showText"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { kind: "component", type: SpreadsheetLoadFileComponent, selector: "kendo-spreadsheet-load-file-tool" }, { kind: "component", type: ToolBarButtonComponent, selector: "kendo-toolbar-button", inputs: ["showText", "showIcon", "text", "style", "className", "title", "disabled", "toggleable", "look", "togglable", "selected", "fillMode", "rounded", "themeColor", "icon", "iconClass", "svgIcon", "imageUrl"], outputs: ["click", "pointerdown", "selectedChange"], exportAs: ["kendoToolBarButton"] }, { kind: "directive", type: SpreadsheetSaveFileDirective, selector: "[kendoSpreadsheetSaveFile]" }, { kind: "component", type: ToolBarButtonGroupComponent, selector: "kendo-toolbar-buttongroup", inputs: ["disabled", "fillMode", "selection", "width", "look"], exportAs: ["kendoToolBarButtonGroup"] }, { kind: "directive", type: SpreadsheetUndoDirective, selector: "kendo-toolbar-button[kendoSpreadsheetUndo]" }, { kind: "directive", type: SpreadsheetRedoDirective, selector: "kendo-toolbar-button[kendoSpreadsheetRedo]" }, { kind: "component", type: ToolBarSeparatorComponent, selector: "kendo-toolbar-separator", exportAs: ["kendoToolBarSeparator"] }, { kind: "component", type: SpreadsheetFontFamilyComponent, selector: "kendo-toolbar-dropdownlist[kendoSpreadsheetFontFamily]" }, { kind: "component", type: SpreadsheetFontSizeComponent, selector: "kendo-toolbar-dropdownlist[kendoSpreadsheetFontSize]" }, { kind: "directive", type: SpreadsheetIncreaseFontSizeDirective, selector: "kendo-toolbar-button[kendoSpreadsheetIncreaseFontSize]" }, { kind: "directive", type: SpreadsheetDecreaseFontSizeDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDecreaseFontSize]" }, { kind: "directive", type: SpreadsheetBoldDirective, selector: "kendo-toolbar-button[kendoSpreadsheetBold]" }, { kind: "directive", type: SpreadsheetItalicDirective, selector: "kendo-toolbar-button[kendoSpreadsheetItalic]" }, { kind: "directive", type: SpreadsheetUnderlineDirective, selector: "kendo-toolbar-button[kendoSpreadsheetUnderline]" }, { kind: "component", type: SpreadsheetForeColorComponent, selector: "kendo-spreadsheet-forecolor-tool" }, { kind: "component", type: SpreadsheetBackColorComponent, selector: "kendo-spreadsheet-backcolor-tool" }, { kind: "component", type: ToolBarDropDownButtonComponent, selector: "kendo-toolbar-dropdownbutton", inputs: ["arrowIcon", "title", "showText", "showIcon", "text", "icon", "svgIcon", "iconClass", "imageUrl", "popupSettings", "look", "primary", "fillMode", "themeColor", "buttonClass", "textField", "disabled", "data"], outputs: ["itemClick", "open", "close"], exportAs: ["kendoToolBarDropDownButton"] }, { kind: "directive", type: SpreadsheetHorizontalTextAlignDirective, selector: "[kendoSpreadsheetHorizontalTextAlign]" }, { kind: "directive", type: SpreadsheetVerticalTextAlignDirective, selector: "[kendoSpreadsheetVerticalTextAlign]" }, { kind: "directive", type: SpreadsheetTextWrapDirective, selector: "kendo-toolbar-button[kendoSpreadsheetTextWrap]" }, { kind: "directive", type: SpreadsheetFormatDirective, selector: "[kendoSpreadsheetFormat]" }, { kind: "directive", type: SpreadsheetInsertLinkDirective, selector: "kendo-toolbar-button[kendoSpreadsheetInsertLink]" }, { kind: "directive", type: SpreadsheetAddColumnLeftButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddColumnLeftButton]" }, { kind: "directive", type: SpreadsheetAddColumnRightButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddColumnRightButton]" }, { kind: "directive", type: SpreadsheetAddRowBelowButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddRowBelowButton]" }, { kind: "directive", type: SpreadsheetAddRowAboveButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddRowAboveButton]" }, { kind: "directive", type: SpreadsheetDeleteColumnButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDeleteColumnButton]" }, { kind: "directive", type: SpreadsheetDeleteRowButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDeleteRowButton]" }, { kind: "directive", type: SpreadsheetDecreaseDecimalDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDecreaseDecimal]" }, { kind: "directive", type: SpreadsheetIncreaseDecimalDirective, selector: "kendo-toolbar-button[kendoSpreadsheetIncreaseDecimal]" }, { kind: "directive", type: SpreadsheetMergeDirective, selector: "[kendoSpreadsheetMerge]" }, { kind: "directive", type: SpreadsheetGridLinesDirective, selector: "kendo-toolbar-button[kendoSpreadsheetGridLines]" }, { kind: "component", type: NameBoxComponent, selector: "[kendoSpreadsheetNameBox]", inputs: ["data", "spreadsheetWidget"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: FormulaInputDirective, selector: "[kendoSpreadsheetFormulaInput]", inputs: ["formulaListMaxHeight"] }, { kind: "component", type: SheetsBarComponent, selector: "[kendoSpreadsheetSheetsBar]", inputs: ["sheets", "sheetDescriptors"] }, { kind: "component", type: ContextMenuComponent, selector: "kendo-contextmenu", inputs: ["showOn", "target", "filter", "alignToAnchor", "vertical", "popupAnimate", "popupAlign", "anchorAlign", "collision", "appendTo", "ariaLabel"], outputs: ["popupOpen", "popupClose", "select", "open", "close"], exportAs: ["kendoContextMenu"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]", inputs: ["licenseMessage"] }, { kind: "directive", type: SpreadsheetDataValidationDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDataValidation]" }, { kind: "directive", type: SpreadsheetFilterDirective, selector: "kendo-toolbar-button[kendoSpreadsheetFilter]" }, { kind: "component", type: SpreadsheetFilterMenuItemComponent, selector: "kendo-spreadsheet-filtermenu-item", inputs: ["text", "innerMenuItems", "icon", "expanderClass", "expandable", "svgIcon", "expanded"], outputs: ["itemClick", "expand", "collapse"] }, { kind: "directive", type: FilterMenuItemContentTemplateDirective, selector: "[kendoSpreadsheetFilterMenuItemContentTemplate]" }, { kind: "component", type: i8.TreeViewComponent, selector: "kendo-treeview", inputs: ["filterInputPlaceholder", "expandDisabledNodes", "animate", "nodeTemplate", "loadMoreButtonTemplate", "trackBy", "nodes", "textField", "hasChildren", "isChecked", "isDisabled", "hasCheckbox", "isExpanded", "isSelected", "isVisible", "navigable", "children", "loadOnDemand", "filterable", "filter", "size", "disableParentNodesOnly"], outputs: ["childrenLoaded", "blur", "focus", "expand", "collapse", "nodeDragStart", "nodeDrag", "filterStateChange", "nodeDrop", "nodeDragEnd", "addItem", "removeItem", "checkedChange", "selectionChange", "filterChange", "nodeClick", "nodeDblClick"], exportAs: ["kendoTreeView"] }, { kind: "directive", type: i8.CheckDirective, selector: "[kendoTreeViewCheckable]", inputs: ["isChecked", "checkBy", "checkedKeys", "kendoTreeViewCheckable"], outputs: ["checkedKeysChange"] }, { kind: "directive", type: i8.ExpandDirective, selector: "[kendoTreeViewExpandable]", inputs: ["isExpanded", "expandBy", "expandOnFilter", "expandedKeys"], outputs: ["expandedKeysChange"] }, { kind: "directive", type: i8.HierarchyBindingDirective, selector: "[kendoTreeViewHierarchyBinding]", inputs: ["childrenField", "nodes", "isVisible", "loadOnDemand"] }, { 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: "component", type: DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { kind: "ngmodule", type: InputsModule }, { kind: "component", type: i9.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"] }, { kind: "component", type: i9.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "component", type: DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "clearButton", "inputAttributes", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "headerTemplate", "footerTemplate", "footer", "navigationItemTemplate", "weekDaysFormat", "showOtherMonthDays", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "enableMouseWheel", "allowCaretMode", "autoFill", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "adaptiveTitle", "adaptiveSubtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close", "escape"], exportAs: ["kendo-datepicker"] }, { kind: "directive", type: SpreadsheetSortDirective, selector: "[kendoSpreadsheetSort]" }] });
|
|
1806
|
-
}
|
|
1807
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpreadsheetComponent, decorators: [{
|
|
1808
|
-
type: Component,
|
|
1809
|
-
args: [{
|
|
1810
|
-
exportAs: 'kendo-spreadsheet',
|
|
1811
|
-
selector: 'kendo-spreadsheet',
|
|
1812
|
-
providers: [
|
|
1813
|
-
SpreadsheetLocalizationService,
|
|
1814
|
-
SpreadsheetService,
|
|
1815
|
-
{
|
|
1816
|
-
provide: LocalizationService,
|
|
1817
|
-
useExisting: SpreadsheetLocalizationService
|
|
1818
|
-
},
|
|
1819
|
-
{
|
|
1820
|
-
provide: L10N_PREFIX,
|
|
1821
|
-
useValue: 'kendo.spreadsheet'
|
|
1822
|
-
},
|
|
1823
|
-
SpreadsheetToolsService,
|
|
1824
|
-
PopupService,
|
|
1825
|
-
ErrorHandlingService
|
|
1826
|
-
],
|
|
1827
|
-
template: `
|
|
1828
|
-
<ng-container
|
|
1829
|
-
kendoSpreadsheetLocalizedMessages
|
|
1830
|
-
i18n-background="kendo.spreadsheet.background|The title of the tool that changes the text background color."
|
|
1831
|
-
background="Background color"
|
|
1832
|
-
i18n-color="kendo.spreadsheet.color|The title of the tool that changes the text font color."
|
|
1833
|
-
color="Font color"
|
|
1834
|
-
i18n-bold="kendo.spreadsheet.bold|The title of the Bold tool."
|
|
1835
|
-
bold="Bold"
|
|
1836
|
-
i18n-dataValidation="kendo.spreadsheet.dataValidation|The title of the Data Validation tool."
|
|
1837
|
-
dataValidation="Data Validation"
|
|
1838
|
-
i18n-filter="kendo.spreadsheet.filter|The title of the Filter tool."
|
|
1839
|
-
filter="Filter"
|
|
1840
|
-
i18n-validationCellRange="kendo.spreadsheet.validationCellRange|The text of the Cell Range label in the data validation dialog."
|
|
1841
|
-
validationCellRange="Cell Range"
|
|
1842
|
-
i18n-validationCriteria="kendo.spreadsheet.validationCriteria|The text of the Criteria dropdown list label in the data validation dialog."
|
|
1843
|
-
validationCriteria="Criteria"
|
|
1844
|
-
i18n-validationMinValue="kendo.spreadsheet.validationMinValue|The text of the Min value label in the data validation dialog."
|
|
1845
|
-
validationMinValue="Min"
|
|
1846
|
-
i18n-validationMaxValue="kendo.spreadsheet.validationMaxValue|The text of the Max value label in the data validation dialog."
|
|
1847
|
-
validationMaxValue="Max"
|
|
1848
|
-
i18n-validationStartValue="kendo.spreadsheet.validationStartValue|The text of the Start value label in the data validation dialog."
|
|
1849
|
-
validationStartValue="Start"
|
|
1850
|
-
i18n-validationEndValue="kendo.spreadsheet.validationEndValue|The text of the End value label in the data validation dialog."
|
|
1851
|
-
validationEndValue="End"
|
|
1852
|
-
i18n-validationValue="kendo.spreadsheet.validationValue|The text of the Value label in the data validation dialog."
|
|
1853
|
-
validationValue="Text"
|
|
1854
|
-
i18n-validationShowListButtonCheckbox="kendo.spreadsheet.validationShowListButtonCheckbox|The text for the Show list button checkbox label in the data validation dialog."
|
|
1855
|
-
validationShowListButtonCheckbox="Display button to show list"
|
|
1856
|
-
i18n-validationOnInvalidData="kendo.spreadsheet.validationOnInvalidData|The text for the On invalid data label in the data validation dialog."
|
|
1857
|
-
validationOnInvalidData="On invalid data"
|
|
1858
|
-
i18n-validationShowDateButtonCheckbox="kendo.spreadsheet.validationShowDateButtonCheckbox|The text for the Show date button checkbox label in the data validation dialog."
|
|
1859
|
-
validationShowDateButtonCheckbox="Display button to show Calendar"
|
|
1860
|
-
i18n-validationRejectInput="kendo.spreadsheet.validationRejectInput|The text for the Reject input radio button label in the data validation dialog."
|
|
1861
|
-
validationRejectInput="Reject input"
|
|
1862
|
-
i18n-validationShowWarning="kendo.spreadsheet.validationShowWarning|The text for the Show warning radio button label in the data validation dialog."
|
|
1863
|
-
validationShowWarning="Show warning"
|
|
1864
|
-
i18n-validationHintTitle="kendo.spreadsheet.validationHintTitle|The text for the Custom hint title input label in the data validation dialog."
|
|
1865
|
-
validationHintTitle="Custom hint title"
|
|
1866
|
-
i18n-validationHintMessage="kendo.spreadsheet.validationHintMessage|The text for the Custom hint input label in the data validation dialog."
|
|
1867
|
-
validationHintMessage="Custom hint"
|
|
1868
|
-
i18n-validationShowHint="kendo.spreadsheet.validationShowHint|The text for the Show hint radio button label in the data validation dialog."
|
|
1869
|
-
validationShowHint="Show hint"
|
|
1870
|
-
i18n-validationIgnoreBlankCheckbox="kendo.spreadsheet.validationIgnoreBlankCheckbox|The text for the Ignore blank checkbox label in the data validation dialog."
|
|
1871
|
-
validationIgnoreBlankCheckbox="Ignore blank"
|
|
1872
|
-
i18n-validationComparer="kendo.spreadsheet.validationComparer|The text of the Comparer dropdown list label in the data validation dialog."
|
|
1873
|
-
validationComparer="Comparer"
|
|
1874
|
-
i18n-anyValueValidationCriteria="kendo.spreadsheet.anyValueValidationCriteria|The text of the Any value validation criteria"
|
|
1875
|
-
anyValueValidationCriteria="Any value"
|
|
1876
|
-
i18n-numberValidationCriteria="kendo.spreadsheet.numberValidationCriteria|The text of the Number validation criteria"
|
|
1877
|
-
numberValidationCriteria="Number"
|
|
1878
|
-
i18n-textValidationCriteria="kendo.spreadsheet.textValidationCriteria|The text of the Text validation criteria"
|
|
1879
|
-
textValidationCriteria="Text"
|
|
1880
|
-
i18n-dateValidationCriteria="kendo.spreadsheet.dateValidationCriteria|The text of the Date validation criteria"
|
|
1881
|
-
dateValidationCriteria="Date"
|
|
1882
|
-
i18n-customFormulaValidationCriteria="kendo.spreadsheet.customFormulaValidationCriteria|The text of the Custom formula validation criteria"
|
|
1883
|
-
customFormulaValidationCriteria="Custom Formula"
|
|
1884
|
-
i18n-listValidationCriteria="kendo.spreadsheet.listValidationCriteria|The text of the List validation criteria"
|
|
1885
|
-
listValidationCriteria="List"
|
|
1886
|
-
i18n-greaterThanValidationComparer="kendo.spreadsheet.greaterThanValidationComparer|The text of the greater than validation comparer"
|
|
1887
|
-
greaterThanValidationComparer="greater than"
|
|
1888
|
-
i18n-lessThanValidationComparer="kendo.spreadsheet.lessThanValidationComparer|The text of the less than validation comparer"
|
|
1889
|
-
lessThanValidationComparer="less than"
|
|
1890
|
-
i18n-betweenValidationComparer="kendo.spreadsheet.betweenValidationComparer|The text of the between validation comparer"
|
|
1891
|
-
betweenValidationComparer="between"
|
|
1892
|
-
i18n-notBetweenValidationComparer="kendo.spreadsheet.notBetweenValidationComparer|The text of the not between validation comparer"
|
|
1893
|
-
notBetweenValidationComparer="not between"
|
|
1894
|
-
i18n-equalToValidationComparer="kendo.spreadsheet.equalToValidationComparer|The text of the equal to validation comparer"
|
|
1895
|
-
equalToValidationComparer="equal to"
|
|
1896
|
-
i18n-notEqualToValidationComparer="kendo.spreadsheet.notEqualToValidationComparer|The text of the not equal to validation comparer"
|
|
1897
|
-
notEqualToValidationComparer="not equal to"
|
|
1898
|
-
i18n-greaterThanOrEqualToValidationComparer="kendo.spreadsheet.greaterThanOrEqualToValidationComparer|The text of the greater than on equal to validation comparer"
|
|
1899
|
-
greaterThanOrEqualToValidationComparer="greater than or equal to"
|
|
1900
|
-
i18n-lessThanOrEqualToValidationComparer="kendo.spreadsheet.lessThanOrEqualToValidationComparer|The text of the less than on equal to validation comparer"
|
|
1901
|
-
lessThanOrEqualToValidationComparer="less than or equal to"
|
|
1902
|
-
i18n-italic="kendo.spreadsheet.italic|The title of the Italic tool."
|
|
1903
|
-
italic="Italic"
|
|
1904
|
-
i18n-underline="kendo.spreadsheet.underline|The title of the Underline tool."
|
|
1905
|
-
underline="Underline"
|
|
1906
|
-
i18n-loadFile="kendo.spreadsheet.loadFile|The title of the Load File tool."
|
|
1907
|
-
loadFile="Open..."
|
|
1908
|
-
i18n-saveFile="kendo.spreadsheet.saveFile|The title of the Save File tool."
|
|
1909
|
-
saveFile="Export..."
|
|
1910
|
-
i18n-format="kendo.spreadsheet.format|The text of the Format tool."
|
|
1911
|
-
format="Custom format..."
|
|
1912
|
-
i18n-fontFamily="kendo.spreadsheet.fontFamily|The text of the Font Family tool."
|
|
1913
|
-
fontFamily="Font"
|
|
1914
|
-
i18n-fontSize="kendo.spreadsheet.fontSize|The text of the Font Size tool."
|
|
1915
|
-
fontSize="Font size"
|
|
1916
|
-
i18n-home="kendo.spreadsheet.home|The text of the Home toolbar tab."
|
|
1917
|
-
home="Home"
|
|
1918
|
-
i18n-file="kendo.spreadsheet.file|The text of the File toolbar tab."
|
|
1919
|
-
file="File"
|
|
1920
|
-
i18n-insert="kendo.spreadsheet.insert|The text of the Insert toolbar tab."
|
|
1921
|
-
insert="Insert"
|
|
1922
|
-
i18n-formatTab="kendo.spreadsheet.formatTab|The text of the Format toolbar tab."
|
|
1923
|
-
formatTab="Format"
|
|
1924
|
-
i18n-dataTab="kendo.spreadsheet.dataTab|The text of the Data toolbar tab."
|
|
1925
|
-
dataTab="Data"
|
|
1926
|
-
i18n-view="kendo.spreadsheet.view|The text of the View toolbar tab."
|
|
1927
|
-
view="View"
|
|
1928
|
-
i18n-undo="kendo.spreadsheet.undo|The title of the Undo tool."
|
|
1929
|
-
undo="Undo"
|
|
1930
|
-
i18n-redo="kendo.spreadsheet.redo|The title of the Redo tool."
|
|
1931
|
-
redo="Redo"
|
|
1932
|
-
i18n-gridLines="kendo.spreadsheet.gridLines|The title of the Grid Lines tool."
|
|
1933
|
-
gridLines="Toggle grid lines"
|
|
1934
|
-
i18n-addColumnLeft="kendo.spreadsheet.addColumnLeft|The title of the tool that adds new column before currently selected column."
|
|
1935
|
-
addColumnLeft="Add column left"
|
|
1936
|
-
i18n-addColumnRight="kendo.spreadsheet.addColumnRight|The title of the tool that adds new column after currently selected column."
|
|
1937
|
-
addColumnRight="Add column right"
|
|
1938
|
-
i18n-addRowBelow="kendo.spreadsheet.addRowBelow|The title of the tool that adds new row below currently selected row."
|
|
1939
|
-
addRowBelow="Add row below"
|
|
1940
|
-
i18n-addRowAbove="kendo.spreadsheet.addRowAbove|The title of the tool that adds new row above currently selected row."
|
|
1941
|
-
addRowAbove="Add row above"
|
|
1942
|
-
i18n-deleteColumn="kendo.spreadsheet.deleteColumn|The title of the tool that deletes a column."
|
|
1943
|
-
deleteColumn="Delete column"
|
|
1944
|
-
i18n-deleteRow="kendo.spreadsheet.deleteRow|The title of the tool that deletes a row."
|
|
1945
|
-
deleteRow="Delete row"
|
|
1946
|
-
i18n-wrap="kendo.spreadsheet.wrap|The title of the Text Wrap tool."
|
|
1947
|
-
wrap="Text wrap"
|
|
1948
|
-
i18n-align="kendo.spreadsheet.align|The title of the Text Align tool."
|
|
1949
|
-
align="Align"
|
|
1950
|
-
i18n-alignHorizontal="kendo.spreadsheet.alignHorizontal|The title of the Text Align Horizontal tool."
|
|
1951
|
-
alignHorizontal="Align horizontally"
|
|
1952
|
-
i18n-alignVertical="kendo.spreadsheet.alignVertical|The title of the Text Align Vertical tool."
|
|
1953
|
-
alignVertical="Align vertically"
|
|
1954
|
-
i18n-alignLeft="kendo.spreadsheet.alignLeft|The title of the Text Align Left tool."
|
|
1955
|
-
alignLeft="Align Left"
|
|
1956
|
-
i18n-alignCenter="kendo.spreadsheet.alignCenter|The title of the Text Align Center tool."
|
|
1957
|
-
alignCenter="Align Center"
|
|
1958
|
-
i18n-alignRight="kendo.spreadsheet.alignRight|The title of the Text Align Right tool."
|
|
1959
|
-
alignRight="Align Right"
|
|
1960
|
-
i18n-alignJustify="kendo.spreadsheet.alignJustify|The title of the Text Align Justify tool."
|
|
1961
|
-
alignJustify="Align Justify"
|
|
1962
|
-
i18n-alignTop="kendo.spreadsheet.alignTop|The title of the Text Align Top tool."
|
|
1963
|
-
alignTop="Align Top"
|
|
1964
|
-
i18n-alignMiddle="kendo.spreadsheet.alignMiddle|The title of the Text Align Middle tool."
|
|
1965
|
-
alignMiddle="Align Middle"
|
|
1966
|
-
i18n-alignBottom="kendo.spreadsheet.alignBottom|The title of the Text Align Bottom tool."
|
|
1967
|
-
alignBottom="Align Bottom"
|
|
1968
|
-
i18n-merge="kendo.spreadsheet.merge|The title of the Cells Merge tool."
|
|
1969
|
-
merge="Merge"
|
|
1970
|
-
i18n-mergeAll="kendo.spreadsheet.mergeAll|The title of the Merge all tool."
|
|
1971
|
-
mergeAll="Merge all"
|
|
1972
|
-
i18n-mergeHorizontally="kendo.spreadsheet.mergeHorizontally|The title of the Merge horizontally tool."
|
|
1973
|
-
mergeHorizontally="Merge horizontally"
|
|
1974
|
-
i18n-mergeVertically="kendo.spreadsheet.mergeVertically|The title of the Merge vertically tool."
|
|
1975
|
-
mergeVertically="Merge vertically"
|
|
1976
|
-
i18n-unmerge="kendo.spreadsheet.unmerge|The title of the Unmerge tool."
|
|
1977
|
-
unmerge="Unmerge"
|
|
1978
|
-
i18n-insertLink="kendo.spreadsheet.insertLink|The title of the tool that inserts a link."
|
|
1979
|
-
insertLink="Insert link"
|
|
1980
|
-
i18n-decreaseDecimal="kendo.spreadsheet.decreaseDecimal|The title of the tool that decreases decimals."
|
|
1981
|
-
decreaseDecimal="Decrease decimal"
|
|
1982
|
-
i18n-increaseDecimal="kendo.spreadsheet.increaseDecimal|The title of the tool that increases decimals."
|
|
1983
|
-
increaseDecimal="Increase decimal"
|
|
1984
|
-
i18n-increaseFontSize="kendo.spreadsheet.increaseFontSize|The title of the tool that increases the cell font size."
|
|
1985
|
-
increaseFontSize="Increase font size"
|
|
1986
|
-
i18n-decreaseFontSize="kendo.spreadsheet.decreaseFontSize|The title of the tool that decreases the cell font size."
|
|
1987
|
-
decreaseFontSize="Decrease font size"
|
|
1988
|
-
i18n-dialogApply="kendo.spreadsheet.dialogApply|The text of the **Apply** button in all Spreadsheet dialogs."
|
|
1989
|
-
dialogApply="Apply"
|
|
1990
|
-
i18n-dialogCancel="kendo.spreadsheet.dialogCancel|The text of the **Cancel** button in all Spreadsheet dialogs."
|
|
1991
|
-
dialogCancel="Cancel"
|
|
1992
|
-
i18n-dialogDelete="kendo.spreadsheet.dialogDelete|The text of the **Delete** button in the Delete sheet dialog."
|
|
1993
|
-
dialogDelete="Delete"
|
|
1994
|
-
i18n-dialogRename="kendo.spreadsheet.dialogRename|The text of the **Rename** button in the Rename sheet dialog."
|
|
1995
|
-
dialogRename="Rename"
|
|
1996
|
-
i18n-dialogInsert="kendo.spreadsheet.dialogInsert|The text of the **Insert** button in all Spreadsheet dialogs."
|
|
1997
|
-
dialogInsert="Insert"
|
|
1998
|
-
i18n-dialogRemove="kendo.spreadsheet.dialogRemove|The text of the **Remove** button in all Spreadsheet dialogs."
|
|
1999
|
-
dialogRemove="Remove"
|
|
2000
|
-
i18n-dialogRemoveLink="kendo.spreadsheet.dialogRemoveLink|The text of the **Remove link** button in the Link tool dialog."
|
|
2001
|
-
dialogRemoveLink="Remove link"
|
|
2002
|
-
i18n-rename="kendo.spreadsheet.rename|The title of the Rename sheet dialog."
|
|
2003
|
-
rename="Rename Sheet"
|
|
2004
|
-
i18n-delete="kendo.spreadsheet.delete|The title of the Delete sheet dialog."
|
|
2005
|
-
delete="Delete Sheet"
|
|
2006
|
-
i18n-nameBox="kendo.spreadsheet.nameBox|The title of the Name Box input."
|
|
2007
|
-
nameBox="Name Box"
|
|
2008
|
-
i18n-formulaInput="kendo.spreadsheet.formulaInput|The title of the Formula input."
|
|
2009
|
-
formulaInput="Formula Input"
|
|
2010
|
-
i18n-addSheet="kendo.spreadsheet.addSheet|The title of the Add new sheet button."
|
|
2011
|
-
addSheet="Add New Sheet"
|
|
2012
|
-
i18n-sheetsMenu="kendo.spreadsheet.sheetsMenu|The title of the Sheets menu button."
|
|
2013
|
-
sheetsMenu="All Sheets"
|
|
2014
|
-
i18n-openUnsupported="kendo.spreadsheet.openUnsupported|The content of the dialog that warns about an unsupported file type."
|
|
2015
|
-
openUnsupported="Unsupported format. Please select an .xlsx file."
|
|
2016
|
-
i18n-modifyMerged="kendo.spreadsheet.modifyMerged|The content of the dialog that warns about modifying a merged cell."
|
|
2017
|
-
modifyMerged="Cannot change part of a merged cell."
|
|
2018
|
-
i18n-cannotModifyDisabled="kendo.spreadsheet.cannotModifyDisabled|The content of the dialog that warns about modifying a disabled cell."
|
|
2019
|
-
cannotModifyDisabled="Cannot modify disabled cells."
|
|
2020
|
-
i18n-dialogOk="kendo.spreadsheet.dialogOk|The text of the **OK** dialog button."
|
|
2021
|
-
dialogOk="OK"
|
|
2022
|
-
i18n-dialogError="kendo.spreadsheet.dialogError|The title of an error dialog."
|
|
2023
|
-
dialogError="Error"
|
|
2024
|
-
i18n-duplicateSheetName="kendo.spreadsheet.duplicateSheetName|The content of the dialog that warns about duplicated sheet name."
|
|
2025
|
-
duplicateSheetName="There is an existing sheet with this name. Please enter another name."
|
|
2026
|
-
i18n-copy="kendo.spreadsheet.copy|The Copy command text."
|
|
2027
|
-
copy="Copy"
|
|
2028
|
-
i18n-cut="kendo.spreadsheet.cut|The Cut command text."
|
|
2029
|
-
cut="Cut"
|
|
2030
|
-
i18n-paste="kendo.spreadsheet.paste|The Paste command text."
|
|
2031
|
-
paste="Paste (use Ctrl/⌘ + V)"
|
|
2032
|
-
i18n-hideRow="kendo.spreadsheet.hideRow|The Hide row command text."
|
|
2033
|
-
hideRow="Hide"
|
|
2034
|
-
i18n-unhideRow="kendo.spreadsheet.unhideRow|The Unhide row command text."
|
|
2035
|
-
unhideRow="Unhide"
|
|
2036
|
-
i18n-hideColumn="kendo.spreadsheet.hideColumn|The Hide column command text."
|
|
2037
|
-
hideColumn="Hide"
|
|
2038
|
-
i18n-unhideColumn="kendo.spreadsheet.unhideColumn|The Unhide column command text."
|
|
2039
|
-
unhideColumn="Unhide"
|
|
2040
|
-
i18n-sheetDelete="kendo.spreadsheet.sheetDelete|The text of the Sheet menu Delete option."
|
|
2041
|
-
sheetDelete="Delete"
|
|
2042
|
-
i18n-sheetRename="kendo.spreadsheet.sheetRename|The text of the Sheet menu Rename option."
|
|
2043
|
-
sheetRename="Rename"
|
|
2044
|
-
i18n-sheetDuplicate="kendo.spreadsheet.sheetDuplicate|The text of the Sheet menu Duplicate option."
|
|
2045
|
-
sheetDuplicate="Duplicate"
|
|
2046
|
-
i18n-sheetHide="kendo.spreadsheet.sheetHide|The text of the Sheet menu Hide option."
|
|
2047
|
-
sheetHide="Hide"
|
|
2048
|
-
i18n-sheetMoveLeft="kendo.spreadsheet.sheetMoveLeft|The text of the Sheet menu Move Left option."
|
|
2049
|
-
sheetMoveLeft="Move Left"
|
|
2050
|
-
i18n-sheetMoveRight="kendo.spreadsheet.sheetMoveRight|The text of the Sheet menu Move Right option."
|
|
2051
|
-
sheetMoveRight="Move Right"
|
|
2052
|
-
i18n-invalidNameError="kendo.spreadsheet.invalidNameError|The content of the dialog that warns about invalid name input."
|
|
2053
|
-
invalidNameError="{{ 'Invalid name: {inputValue}' }}"
|
|
2054
|
-
i18n-cantSortMixedCells="kendo.spreadsheet.cantSortMixedCells|The content of the dialog that warns about sorting range containing cells of mixed shapes."
|
|
2055
|
-
cantSortMixedCells="Cannot sort range containing cells of mixed shapes"
|
|
2056
|
-
i18n-cantSortNullRef="kendo.spreadsheet.cantSortNullRef|The content of the dialog that warns about sorting incorrect (empty) range."
|
|
2057
|
-
cantSortNullRef="Cannot sort empty selection"
|
|
2058
|
-
i18n-cantSortMultipleSelection="kendo.spreadsheet.cantSortMultipleSelection|The content of the dialog that warns about sorting multiple range selection."
|
|
2059
|
-
cantSortMultipleSelection="Cannot sort multiple selection"
|
|
2060
|
-
i18n-filterApply="kendo.spreadsheet.filterApply|The text of the **Apply** button in the filter menu."
|
|
2061
|
-
filterApply="Apply"
|
|
2062
|
-
i18n-filterClear="kendo.spreadsheet.filterClear|The text of the **Clear** button in the filter menu."
|
|
2063
|
-
filterClear="Clear"
|
|
2064
|
-
i18n-filterMenuAll="kendo.spreadsheet.filterMenuAll|The text of the **All** grouping item in the filter menu."
|
|
2065
|
-
filterMenuAll="All"
|
|
2066
|
-
i18n-blankValues="kendo.spreadsheet.blankValues|The text for the blank (empty) values."
|
|
2067
|
-
blankValues="Blank"
|
|
2068
|
-
i18n-filterNoneOperator="kendo.spreadsheet.filterNoneOperator|The text for the **none** filter operator."
|
|
2069
|
-
filterNoneOperator="None"
|
|
2070
|
-
i18n-filterContainsOperator="kendo.spreadsheet.filterContainsOperator|The text of the **contains** filter operator"
|
|
2071
|
-
filterContainsOperator="Text contains"
|
|
2072
|
-
i18n-filterNotContainsOperator="kendo.spreadsheet.filterNotContainsOperator|The text of the **does not contain** filter operator"
|
|
2073
|
-
filterNotContainsOperator="Text does not contain"
|
|
2074
|
-
i18n-filterStartsWithOperator="kendo.spreadsheet.filterStartsWithOperator|The text of the **starts with** filter operator"
|
|
2075
|
-
filterStartsWithOperator="Text starts with"
|
|
2076
|
-
i18n-filterEndsWithOperator="kendo.spreadsheet.filterEndsWithOperator|The text of the **ends with** filter operator"
|
|
2077
|
-
filterEndsWithOperator="Text ends with"
|
|
2078
|
-
i18n-filterMatchesOperator="kendo.spreadsheet.filterMatchesOperator|The text of the **matches** filter operator"
|
|
2079
|
-
filterMatchesOperator="Text matches"
|
|
2080
|
-
i18n-filterNotMatchesOperator="kendo.spreadsheet.filterNotMatchesOperator|The text of the **does not match** filter operator"
|
|
2081
|
-
filterNotMatchesOperator="Text does not match"
|
|
2082
|
-
i18n-filterDateEqOperator="kendo.spreadsheet.filterDateEqOperator|The text of the **Date is** filter operator"
|
|
2083
|
-
filterDateEqOperator="Date is"
|
|
2084
|
-
i18n-filterDateNotEqOperator="kendo.spreadsheet.filterDateNotEqOperator|The text of the **Date is not** filter operator"
|
|
2085
|
-
filterDateNotEqOperator="Date is not"
|
|
2086
|
-
i18n-filterBeforeOperator="kendo.spreadsheet.filterBeforeOperator|The text of the **Date is before** filter operator"
|
|
2087
|
-
filterBeforeOperator="Date is before"
|
|
2088
|
-
i18n-filterAfterOperator="kendo.spreadsheet.filterAfterOperator|The text of the **Date is after** filter operator"
|
|
2089
|
-
filterAfterOperator="Date is after"
|
|
2090
|
-
i18n-filterEqOperator="kendo.spreadsheet.filterEqOperator|Sets the text for the **Equal (Is equal to)** filter operator."
|
|
2091
|
-
filterEqOperator="Is equal to"
|
|
2092
|
-
i18n-filterNotEqOperator="kendo.spreadsheet.filterNotEqOperator|Sets the text for the **Not equal (Is not equal to)** filter operator."
|
|
2093
|
-
filterNotEqOperator="Is not equal to"
|
|
2094
|
-
i18n-filterGteOperator="kendo.spreadsheet.filterGteOperator|The text of the **greater than or equal to** filter operator"
|
|
2095
|
-
filterGteOperator="Is greater than or equal to"
|
|
2096
|
-
i18n-filterGtOperator="kendo.spreadsheet.filterGtOperator|The text of the **greater than** filter operator"
|
|
2097
|
-
filterGtOperator="Is greater than"
|
|
2098
|
-
i18n-filterLteOperator="kendo.spreadsheet.filterLteOperator|The text of the **less than or equal to** filter operator"
|
|
2099
|
-
filterLteOperator="Is less than or equal to"
|
|
2100
|
-
i18n-filterLtOperator="kendo.spreadsheet.filterLtOperator|The text of the **less than** filter operator"
|
|
2101
|
-
filterLtOperator="Is less than"
|
|
2102
|
-
i18n-filterMenuConditionItem="kendo.spreadsheet.filterMenuConditionItem|The text of the **Filter by condition** menu item."
|
|
2103
|
-
filterMenuConditionItem="Filter by condition"
|
|
2104
|
-
i18n-filterMenuValueItem="kendo.spreadsheet.filterMenuValueItem|The text of the **Filter by value** menu item."
|
|
2105
|
-
filterMenuValueItem="Filter by value"
|
|
2106
|
-
i18n-sort="kendo.spreadsheet.sort|The title of the Sort ToolBar tool."
|
|
2107
|
-
sort="Sort"
|
|
2108
|
-
i18n-sortAsc="kendo.spreadsheet.sortAsc|The text of the **Sort range A to Z** option."
|
|
2109
|
-
sortAsc="Sort range A to Z"
|
|
2110
|
-
i18n-sortDesc="kendo.spreadsheet.sortDesc|The text of the **Sort range Z to A** option."
|
|
2111
|
-
sortDesc="Sort range Z to A"
|
|
2112
|
-
i18n-unsort="kendo.spreadsheet.unsort|The text of the **Unsort** option."
|
|
2113
|
-
unsort="Unsort">
|
|
2114
|
-
</ng-container>
|
|
2115
|
-
<div class="k-spreadsheet-header">
|
|
2116
|
-
<kendo-menu kendoSpreadsheetMenu (select)="onMenuItemSelect($event)">
|
|
2117
|
-
@for (item of menuItems; track item) {
|
|
2118
|
-
<kendo-menu-item [text]="item.text" [cssClass]="item.cssClass"></kendo-menu-item>
|
|
2119
|
-
}
|
|
2120
|
-
</kendo-menu>
|
|
2121
|
-
@if (selectedMenuItem?.active && selectedMenuItem.id === 'file') {
|
|
2122
|
-
<kendo-toolbar
|
|
2123
|
-
[attr.aria-label]="messageFor('file')"
|
|
2124
|
-
fillMode="flat"
|
|
2125
|
-
class="k-spreadsheet-toolbar"
|
|
2126
|
-
[overflow]="overflow">
|
|
2127
|
-
<kendo-spreadsheet-load-file-tool></kendo-spreadsheet-load-file-tool>
|
|
2128
|
-
<kendo-toolbar-button kendoSpreadsheetSaveFile></kendo-toolbar-button>
|
|
2129
|
-
</kendo-toolbar>
|
|
2130
|
-
}
|
|
2131
|
-
@if (selectedMenuItem?.active && selectedMenuItem.id === 'home') {
|
|
2132
|
-
<kendo-toolbar
|
|
2133
|
-
[attr.aria-label]="messageFor('home')"
|
|
2134
|
-
class="k-spreadsheet-toolbar"
|
|
2135
|
-
fillMode="flat"
|
|
2136
|
-
[overflow]="overflow">
|
|
2137
|
-
<kendo-toolbar-button kendoSpreadsheetUndo></kendo-toolbar-button>
|
|
2138
|
-
<kendo-toolbar-button kendoSpreadsheetRedo></kendo-toolbar-button>
|
|
2139
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
2140
|
-
<kendo-toolbar-dropdownlist kendoSpreadsheetFontFamily></kendo-toolbar-dropdownlist>
|
|
2141
|
-
<kendo-toolbar-dropdownlist kendoSpreadsheetFontSize></kendo-toolbar-dropdownlist>
|
|
2142
|
-
<kendo-toolbar-buttongroup fillMode="flat">
|
|
2143
|
-
<kendo-toolbar-button kendoSpreadsheetIncreaseFontSize></kendo-toolbar-button>
|
|
2144
|
-
<kendo-toolbar-button kendoSpreadsheetDecreaseFontSize></kendo-toolbar-button>
|
|
2145
|
-
</kendo-toolbar-buttongroup>
|
|
2146
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
2147
|
-
<kendo-toolbar-buttongroup fillMode="flat">
|
|
2148
|
-
<kendo-toolbar-button kendoSpreadsheetBold></kendo-toolbar-button>
|
|
2149
|
-
<kendo-toolbar-button kendoSpreadsheetItalic></kendo-toolbar-button>
|
|
2150
|
-
<kendo-toolbar-button kendoSpreadsheetUnderline></kendo-toolbar-button>
|
|
2151
|
-
</kendo-toolbar-buttongroup>
|
|
2152
|
-
<kendo-spreadsheet-forecolor-tool></kendo-spreadsheet-forecolor-tool>
|
|
2153
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
2154
|
-
<kendo-spreadsheet-backcolor-tool></kendo-spreadsheet-backcolor-tool>
|
|
2155
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
2156
|
-
<kendo-toolbar-dropdownbutton kendoSpreadsheetHorizontalTextAlign></kendo-toolbar-dropdownbutton>
|
|
2157
|
-
<kendo-toolbar-dropdownbutton kendoSpreadsheetVerticalTextAlign></kendo-toolbar-dropdownbutton>
|
|
2158
|
-
<kendo-toolbar-button kendoSpreadsheetTextWrap></kendo-toolbar-button>
|
|
2159
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
2160
|
-
<kendo-toolbar-dropdownbutton kendoSpreadsheetFormat></kendo-toolbar-dropdownbutton>
|
|
2161
|
-
</kendo-toolbar>
|
|
2162
|
-
}
|
|
2163
|
-
@if (selectedMenuItem?.active && selectedMenuItem.id === 'insert') {
|
|
2164
|
-
<kendo-toolbar
|
|
2165
|
-
[attr.aria-label]="messageFor('insert')"
|
|
2166
|
-
fillMode="flat"
|
|
2167
|
-
class="k-spreadsheet-toolbar"
|
|
2168
|
-
[overflow]="overflow">
|
|
2169
|
-
<kendo-toolbar-button kendoSpreadsheetInsertLink></kendo-toolbar-button>
|
|
2170
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
2171
|
-
<kendo-toolbar-button kendoSpreadsheetAddColumnLeftButton></kendo-toolbar-button>
|
|
2172
|
-
<kendo-toolbar-button kendoSpreadsheetAddColumnRightButton></kendo-toolbar-button>
|
|
2173
|
-
<kendo-toolbar-button kendoSpreadsheetAddRowBelowButton></kendo-toolbar-button>
|
|
2174
|
-
<kendo-toolbar-button kendoSpreadsheetAddRowAboveButton></kendo-toolbar-button>
|
|
2175
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
2176
|
-
<kendo-toolbar-button kendoSpreadsheetDeleteColumnButton></kendo-toolbar-button>
|
|
2177
|
-
<kendo-toolbar-button kendoSpreadsheetDeleteRowButton></kendo-toolbar-button>
|
|
2178
|
-
</kendo-toolbar>
|
|
2179
|
-
}
|
|
2180
|
-
@if (selectedMenuItem?.active && selectedMenuItem.id === 'format') {
|
|
2181
|
-
<kendo-toolbar
|
|
2182
|
-
[attr.aria-label]="messageFor('formatTab')"
|
|
2183
|
-
fillMode="flat"
|
|
2184
|
-
class="k-spreadsheet-toolbar"
|
|
2185
|
-
[overflow]="overflow">
|
|
2186
|
-
<kendo-toolbar-button kendoSpreadsheetDecreaseDecimal></kendo-toolbar-button>
|
|
2187
|
-
<kendo-toolbar-button kendoSpreadsheetIncreaseDecimal></kendo-toolbar-button>
|
|
2188
|
-
</kendo-toolbar>
|
|
2189
|
-
}
|
|
2190
|
-
@if (selectedMenuItem?.active && selectedMenuItem.id === 'view') {
|
|
2191
|
-
<kendo-toolbar
|
|
2192
|
-
[attr.aria-label]="messageFor('view')"
|
|
2193
|
-
fillMode="flat"
|
|
2194
|
-
class="k-spreadsheet-toolbar"
|
|
2195
|
-
[overflow]="overflow">
|
|
2196
|
-
<kendo-toolbar-dropdownbutton kendoSpreadsheetMerge></kendo-toolbar-dropdownbutton>
|
|
2197
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
2198
|
-
<kendo-toolbar-button kendoSpreadsheetGridLines></kendo-toolbar-button>
|
|
2199
|
-
</kendo-toolbar>
|
|
2200
|
-
}
|
|
2201
|
-
@if (selectedMenuItem?.active && selectedMenuItem.id === 'data') {
|
|
2202
|
-
<kendo-toolbar
|
|
2203
|
-
[attr.aria-label]="messageFor('dataTab')"
|
|
2204
|
-
fillMode="flat"
|
|
2205
|
-
class="k-spreadsheet-toolbar"
|
|
2206
|
-
[overflow]="overflow">
|
|
2207
|
-
<kendo-toolbar-button kendoSpreadsheetDataValidation></kendo-toolbar-button>
|
|
2208
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
2209
|
-
<kendo-toolbar-button kendoSpreadsheetFilter></kendo-toolbar-button>
|
|
2210
|
-
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
2211
|
-
<kendo-toolbar-dropdownbutton kendoSpreadsheetSort></kendo-toolbar-dropdownbutton>
|
|
2212
|
-
</kendo-toolbar>
|
|
2213
|
-
}
|
|
2214
|
-
</div>
|
|
2215
|
-
<div class="k-spreadsheet-action-bar">
|
|
2216
|
-
<div #nameBox kendoSpreadsheetNameBox [spreadsheetWidget]="spreadsheetWidget"></div>
|
|
2217
|
-
<div class="k-spreadsheet-formula-bar">
|
|
2218
|
-
<span class="k-separator k-separator-vertical"></span>
|
|
2219
|
-
<kendo-icon-wrapper
|
|
2220
|
-
name="formula-fx"
|
|
2221
|
-
[svgIcon]="formulaFxIcon">
|
|
2222
|
-
</kendo-icon-wrapper>
|
|
2223
|
-
<span class="k-separator k-separator-vertical"></span>
|
|
2224
|
-
<div
|
|
2225
|
-
#formulaBar
|
|
2226
|
-
kendoSpreadsheetFormulaInput
|
|
2227
|
-
[formulaListMaxHeight]="formulaListMaxHeight"
|
|
2228
|
-
class="k-textbox k-input k-input-md k-input-flat k-rounded-md"></div>
|
|
2229
|
-
</div>
|
|
2230
|
-
</div>
|
|
2231
|
-
<div class="k-spreadsheet-view">
|
|
2232
|
-
<div class="k-spreadsheet-fixed-container"></div>
|
|
2233
|
-
<div class="k-spreadsheet-scroller">
|
|
2234
|
-
<div class="k-spreadsheet-view-size"></div>
|
|
2235
|
-
</div>
|
|
2236
|
-
<div tabIndex="0" class="k-spreadsheet-clipboard" contentEditable="true"></div>
|
|
2237
|
-
<div #formulaCell kendoSpreadsheetFormulaInput class="k-spreadsheet-cell-editor" data-role="formulainput"></div>
|
|
2238
|
-
</div>
|
|
2239
|
-
<div class="k-spreadsheet-sheets-bar"
|
|
2240
|
-
kendoSpreadsheetSheetsBar
|
|
2241
|
-
[sheets]="sheetsInfo"
|
|
2242
|
-
[sheetDescriptors]="sheets">
|
|
2243
|
-
</div>
|
|
2244
|
-
<ng-container #dialogContainer></ng-container>
|
|
2245
|
-
|
|
2246
|
-
<kendo-contextmenu #contextMenu
|
|
2247
|
-
[items]="contextMenuItems"
|
|
2248
|
-
(select)="onContextMenuSelect($event)">
|
|
2249
|
-
</kendo-contextmenu>
|
|
2250
|
-
|
|
2251
|
-
<ng-template #filterMenuTemplate>
|
|
2252
|
-
<kendo-spreadsheet-filtermenu-item
|
|
2253
|
-
[innerMenuItems]="sortMenuItems"
|
|
2254
|
-
(itemClick)="onSortItemClick($event)">
|
|
2255
|
-
</kendo-spreadsheet-filtermenu-item>
|
|
2256
|
-
<kendo-spreadsheet-filtermenu-item
|
|
2257
|
-
[expandable]="true"
|
|
2258
|
-
[expanded]="conditionExpanded"
|
|
2259
|
-
expanderClass="k-spreadsheet-condition-filter"
|
|
2260
|
-
[innerMenuItems]="[{text: messageFor('filterMenuConditionItem')}]"
|
|
2261
|
-
(collapse)="onToggle(false, 'condition')"
|
|
2262
|
-
(expand)="onToggle(true, 'condition')">
|
|
2263
|
-
<ng-template kendoSpreadsheetFilterMenuItemContentTemplate>
|
|
2264
|
-
<div class="k-details-content">
|
|
2265
|
-
<kendo-dropdownlist
|
|
2266
|
-
[data]="filterConditionsList"
|
|
2267
|
-
textField="text"
|
|
2268
|
-
valueField="comparerType"
|
|
2269
|
-
[(value)]="selectedCondition">
|
|
2270
|
-
</kendo-dropdownlist>
|
|
2271
|
-
@if (selectedCondition?.type === 'string') {
|
|
2272
|
-
<kendo-textbox [(value)]="conditionValue"></kendo-textbox>
|
|
2273
|
-
} @else if (selectedCondition?.type === 'number') {
|
|
2274
|
-
<kendo-numerictextbox [(value)]="conditionValue"></kendo-numerictextbox>
|
|
2275
|
-
} @else if (selectedCondition?.type === 'date') {
|
|
2276
|
-
<kendo-datepicker [(value)]="conditionValue"></kendo-datepicker>
|
|
2277
|
-
}
|
|
2278
|
-
</div>
|
|
2279
|
-
<div class="k-actions k-actions-stretched k-actions-horizontal">
|
|
2280
|
-
<button
|
|
2281
|
-
kendoButton
|
|
2282
|
-
themeColor="primary"
|
|
2283
|
-
(click)="filterApply('condition')">
|
|
2284
|
-
{{ messageFor('filterApply') }}
|
|
2285
|
-
</button>
|
|
2286
|
-
<button
|
|
2287
|
-
kendoButton
|
|
2288
|
-
(click)="filterClear()">
|
|
2289
|
-
{{ messageFor('filterClear') }}
|
|
2290
|
-
</button>
|
|
2291
|
-
</div>
|
|
2292
|
-
</ng-template>
|
|
2293
|
-
</kendo-spreadsheet-filtermenu-item>
|
|
2294
|
-
<kendo-spreadsheet-filtermenu-item
|
|
2295
|
-
[expandable]="true"
|
|
2296
|
-
[expanded]="valueExpanded"
|
|
2297
|
-
[innerMenuItems]="[{text: messageFor('filterMenuValueItem')}]"
|
|
2298
|
-
(collapse)="onToggle(false, 'value')"
|
|
2299
|
-
(expand)="onToggle(true, 'value')">
|
|
2300
|
-
<ng-template kendoSpreadsheetFilterMenuItemContentTemplate>
|
|
2301
|
-
<div class="k-spreadsheet-value-treeview-wrapper">
|
|
2302
|
-
<kendo-treeview #treeview
|
|
2303
|
-
kendoTreeViewHierarchyBinding
|
|
2304
|
-
childrenField="items"
|
|
2305
|
-
textField="text"
|
|
2306
|
-
[nodes]="rangeFilterValuesList"
|
|
2307
|
-
kendoTreeViewExpandable
|
|
2308
|
-
[(expandedKeys)]="expandedKeys"
|
|
2309
|
-
[filterable]="true"
|
|
2310
|
-
[kendoTreeViewCheckable]="{checkOnClick: true}"
|
|
2311
|
-
[(checkedKeys)]="checkedKeys"
|
|
2312
|
-
checkBy="text"
|
|
2313
|
-
[isChecked]="isChecked">
|
|
2314
|
-
</kendo-treeview>
|
|
2315
|
-
</div>
|
|
2316
|
-
<div class="k-actions k-actions-stretched k-actions-horizontal">
|
|
2317
|
-
<button
|
|
2318
|
-
kendoButton
|
|
2319
|
-
themeColor="primary"
|
|
2320
|
-
(click)="filterApply('value')">
|
|
2321
|
-
{{ messageFor('filterApply') }}
|
|
2322
|
-
</button>
|
|
2323
|
-
<button
|
|
2324
|
-
kendoButton
|
|
2325
|
-
(click)="filterClear()">
|
|
2326
|
-
{{ messageFor('filterClear') }}
|
|
2327
|
-
</button>
|
|
2328
|
-
</div>
|
|
2329
|
-
</ng-template>
|
|
2330
|
-
</kendo-spreadsheet-filtermenu-item>
|
|
2331
|
-
</ng-template>
|
|
2332
|
-
|
|
2333
|
-
@if (showLicenseWatermark) {
|
|
2334
|
-
<div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
|
|
2335
|
-
}
|
|
2336
|
-
`,
|
|
2337
|
-
standalone: true,
|
|
2338
|
-
imports: [LocalizedMessagesDirective, MenuComponent, MainMenuDirective, MenuItemComponent, ToolBarComponent, SpreadsheetLoadFileComponent, ToolBarButtonComponent, SpreadsheetSaveFileDirective, ToolBarButtonGroupComponent, SpreadsheetUndoDirective, SpreadsheetRedoDirective, ToolBarSeparatorComponent, SpreadsheetFontFamilyComponent, SpreadsheetFontSizeComponent, SpreadsheetIncreaseFontSizeDirective, SpreadsheetDecreaseFontSizeDirective, SpreadsheetBoldDirective, SpreadsheetItalicDirective, SpreadsheetUnderlineDirective, SpreadsheetForeColorComponent, SpreadsheetBackColorComponent, ToolBarDropDownButtonComponent, SpreadsheetHorizontalTextAlignDirective, SpreadsheetVerticalTextAlignDirective, SpreadsheetTextWrapDirective, SpreadsheetFormatDirective, SpreadsheetInsertLinkDirective, SpreadsheetAddColumnLeftButtonDirective, SpreadsheetAddColumnRightButtonDirective, SpreadsheetAddRowBelowButtonDirective, SpreadsheetAddRowAboveButtonDirective, SpreadsheetDeleteColumnButtonDirective, SpreadsheetDeleteRowButtonDirective, SpreadsheetDecreaseDecimalDirective, SpreadsheetIncreaseDecimalDirective, SpreadsheetMergeDirective, SpreadsheetGridLinesDirective, NameBoxComponent, IconWrapperComponent, FormulaInputDirective, SheetsBarComponent, ContextMenuComponent, WatermarkOverlayComponent, SpreadsheetDataValidationDirective, SpreadsheetFilterDirective, SpreadsheetFilterMenuItemComponent, FilterMenuItemContentTemplateDirective, KENDO_TREEVIEW, ButtonComponent, DropDownListComponent, InputsModule, DatePickerComponent, SpreadsheetSortDirective]
|
|
2339
|
-
}]
|
|
2340
|
-
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.IntlService }, { type: i0.ElementRef }, { type: i2.LocalizationService }, { type: i3.SpreadsheetService }, { type: i4.SpreadsheetToolsService }, { type: i5.ErrorHandlingService }, { type: i6.DialogService }, { type: i7.PopupService }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }], propDecorators: { formulaBarInputRef: [{
|
|
2341
|
-
type: ViewChild,
|
|
2342
|
-
args: ['formulaBar', { read: FormulaInputDirective }]
|
|
2343
|
-
}], formulaCellInputRef: [{
|
|
2344
|
-
type: ViewChild,
|
|
2345
|
-
args: ['formulaCell', { read: FormulaInputDirective }]
|
|
2346
|
-
}], nameBoxRef: [{
|
|
2347
|
-
type: ViewChild,
|
|
2348
|
-
args: ['nameBox']
|
|
2349
|
-
}], dialogContainer: [{
|
|
2350
|
-
type: ViewChild,
|
|
2351
|
-
args: ['dialogContainer', { read: ViewContainerRef }]
|
|
2352
|
-
}], contextMenu: [{
|
|
2353
|
-
type: ViewChild,
|
|
2354
|
-
args: ['contextMenu']
|
|
2355
|
-
}], filterMenuTemplate: [{
|
|
2356
|
-
type: ViewChild,
|
|
2357
|
-
args: ['filterMenuTemplate']
|
|
2358
|
-
}], hostClass: [{
|
|
2359
|
-
type: HostBinding,
|
|
2360
|
-
args: ['class.k-spreadsheet']
|
|
2361
|
-
}], role: [{
|
|
2362
|
-
type: HostBinding,
|
|
2363
|
-
args: ['attr.role']
|
|
2364
|
-
}], menuItems: [{
|
|
2365
|
-
type: Input
|
|
2366
|
-
}], overflow: [{
|
|
2367
|
-
type: Input
|
|
2368
|
-
}], formulaListMaxHeight: [{
|
|
2369
|
-
type: Input
|
|
2370
|
-
}], activeSheet: [{
|
|
2371
|
-
type: Input
|
|
2372
|
-
}], sheets: [{
|
|
2373
|
-
type: Input
|
|
2374
|
-
}], columns: [{
|
|
2375
|
-
type: Input
|
|
2376
|
-
}], columnWidth: [{
|
|
2377
|
-
type: Input
|
|
2378
|
-
}], defaultCellStyle: [{
|
|
2379
|
-
type: Input
|
|
2380
|
-
}], headerHeight: [{
|
|
2381
|
-
type: Input
|
|
2382
|
-
}], headerWidth: [{
|
|
2383
|
-
type: Input
|
|
2384
|
-
}], rowHeight: [{
|
|
2385
|
-
type: Input
|
|
2386
|
-
}], rows: [{
|
|
2387
|
-
type: Input
|
|
2388
|
-
}], cellEditors: [{
|
|
2389
|
-
type: Input
|
|
2390
|
-
}], images: [{
|
|
2391
|
-
type: Input
|
|
2392
|
-
}], excel: [{
|
|
2393
|
-
type: Input
|
|
2394
|
-
}], change: [{
|
|
2395
|
-
type: Output
|
|
2396
|
-
}], formatChange: [{
|
|
2397
|
-
type: Output
|
|
2398
|
-
}], selectionChange: [{
|
|
2399
|
-
type: Output
|
|
2400
|
-
}], excelExport: [{
|
|
2401
|
-
type: Output
|
|
2402
|
-
}], excelImport: [{
|
|
2403
|
-
type: Output
|
|
2404
|
-
}], activeSheetChange: [{
|
|
2405
|
-
type: Output
|
|
2406
|
-
}], clipboard: [{
|
|
2407
|
-
type: Output
|
|
2408
|
-
}] } });
|