@progress/kendo-angular-spreadsheet 21.4.0-develop.2 → 21.4.0-develop.4
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/common/spreadsheet.service.d.ts +3 -0
- package/directives.d.ts +3 -1
- package/esm2022/common/error-handling.service.mjs +1 -0
- package/esm2022/common/spreadsheet.service.mjs +2 -0
- package/esm2022/directives.mjs +5 -1
- package/esm2022/filter-menu/filter-menu-item-content-template.directive.mjs +26 -0
- package/esm2022/filter-menu/filter-menu-item.component.mjs +271 -0
- package/esm2022/localization/messages.mjs +175 -1
- package/esm2022/models/filter-menu-item.mjs +5 -0
- package/esm2022/models/index.mjs +2 -0
- package/esm2022/models/range-filter-value.mjs +5 -0
- package/esm2022/package-metadata.mjs +2 -2
- package/esm2022/spreadsheet.component.mjs +717 -47
- package/esm2022/spreadsheet.module.mjs +3 -1
- package/esm2022/tools/filter-sort/filter-tool.directive.mjs +75 -0
- package/esm2022/tools/filter-sort/sort-tool.directive.mjs +57 -0
- package/esm2022/tools/index.mjs +2 -0
- package/esm2022/tools/shared/command-icons.mjs +13 -3
- package/esm2022/tools/shared/constants.mjs +7 -0
- package/fesm2022/progress-kendo-angular-spreadsheet.mjs +1301 -59
- package/filter-menu/filter-menu-item-content-template.directive.d.ts +15 -0
- package/filter-menu/filter-menu-item.component.d.ts +83 -0
- package/index.d.ts +1 -1
- package/localization/messages.d.ts +117 -1
- package/models/events.d.ts +49 -0
- package/models/filter-menu-item.d.ts +14 -0
- package/models/index.d.ts +2 -0
- package/models/range-filter-value.d.ts +15 -0
- package/package.json +18 -17
- package/schematics/ngAdd/index.js +2 -2
- package/spreadsheet.component.d.ts +73 -12
- package/spreadsheet.module.d.ts +3 -1
- package/tools/filter-sort/filter-tool.directive.d.ts +23 -0
- package/tools/filter-sort/sort-tool.directive.d.ts +21 -0
- package/tools/index.d.ts +2 -0
- package/tools/shared/commands.d.ts +1 -1
- package/tools/shared/constants.d.ts +12 -0
|
@@ -3,37 +3,41 @@
|
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
|
-
import { Injectable, EventEmitter, Output, Inject, Optional, Component, Input, Directive, HostBinding, ElementRef, ViewChild, ViewChildren, HostListener, InjectionToken, forwardRef, ViewContainerRef, NgModule } from '@angular/core';
|
|
6
|
+
import { Injectable, EventEmitter, Output, Inject, Optional, Component, Input, Directive, HostBinding, ElementRef, ViewChild, ViewChildren, HostListener, InjectionToken, forwardRef, ContentChild, ViewContainerRef, NgModule } from '@angular/core';
|
|
7
7
|
import { Subject, Subscription } from 'rxjs';
|
|
8
8
|
import { take, map } from 'rxjs/operators';
|
|
9
9
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
10
|
-
import { SpreadsheetWidget, registerEditor, Matrix, dateToSerial, validation, calc, serialToDate } from '@progress/kendo-spreadsheet-common';
|
|
10
|
+
import { SpreadsheetWidget, registerEditor, Matrix, dateToSerial, validation, calc, serialToDate, formatting } from '@progress/kendo-spreadsheet-common';
|
|
11
11
|
export { CellRef, Context, Deferred, Matrix, Range, RangeRef, Ref, Sheet, SpreadsheetWidget, View, Workbook, defineFunction } from '@progress/kendo-spreadsheet-common';
|
|
12
12
|
import * as i1$4 from '@progress/kendo-angular-intl';
|
|
13
13
|
import { localeData } from '@progress/kendo-angular-intl';
|
|
14
|
-
import { formulaFxIcon, trashIcon, copyIcon, pencilIcon, eyeSlashIcon, arrowRightIcon, arrowLeftIcon, alignCenterIcon, alignJustifyIcon, alignLeftIcon, alignRightIcon, alignTopIcon, alignMiddleIcon, alignBottomIcon, dropletIcon, boldIcon, foregroundColorIcon, italicIcon, arrowRotateCwIcon, underlineIcon, arrowRotateCcwIcon, textWrapIcon, tableColumnInsertLeftIcon, tableColumnInsertRightIcon, tableRowInsertAboveIcon, tableRowInsertBelowIcon, tableRowDeleteIcon, tableColumnDeleteIcon, bordersNoneIcon, folderOpenIcon, downloadIcon, customFormatIcon, fontSizeIcon, fontFamilyIcon, cellsMergeIcon, cellsMergeHorizontallyIcon, cellsMergeVerticallyIcon, tableUnmergeIcon, linkIcon, fontGrowIcon, fontShrinkIcon, decimalDecreaseIcon, exclamationCircleIcon, decimalIncreaseIcon, cutIcon, clipboardIcon, eyeIcon, plusIcon, menuIcon, caretAltDownIcon, calendarIcon } from '@progress/kendo-svg-icons';
|
|
14
|
+
import { formulaFxIcon, trashIcon, copyIcon, pencilIcon, eyeSlashIcon, arrowRightIcon, arrowLeftIcon, alignCenterIcon, alignJustifyIcon, alignLeftIcon, alignRightIcon, alignTopIcon, alignMiddleIcon, alignBottomIcon, dropletIcon, boldIcon, foregroundColorIcon, italicIcon, arrowRotateCwIcon, underlineIcon, arrowRotateCcwIcon, textWrapIcon, tableColumnInsertLeftIcon, tableColumnInsertRightIcon, tableRowInsertAboveIcon, tableRowInsertBelowIcon, tableRowDeleteIcon, tableColumnDeleteIcon, bordersNoneIcon, folderOpenIcon, downloadIcon, customFormatIcon, fontSizeIcon, fontFamilyIcon, cellsMergeIcon, cellsMergeHorizontallyIcon, cellsMergeVerticallyIcon, tableUnmergeIcon, linkIcon, fontGrowIcon, fontShrinkIcon, decimalDecreaseIcon, exclamationCircleIcon, decimalIncreaseIcon, cutIcon, clipboardIcon, eyeIcon, filterIcon, sortAscIcon, sortDescIcon, sortClearIcon, plusIcon, menuIcon, caretAltDownIcon, chevronUpIcon, chevronDownIcon, searchIcon, sortAscSmallIcon, sortDescSmallIcon, calendarIcon } from '@progress/kendo-svg-icons';
|
|
15
15
|
import * as i1 from '@progress/kendo-angular-l10n';
|
|
16
16
|
import { LocalizationService, L10N_PREFIX, RTL, ComponentMessages } from '@progress/kendo-angular-l10n';
|
|
17
17
|
import * as i1$1 from '@progress/kendo-angular-popup';
|
|
18
18
|
import { PopupService } from '@progress/kendo-angular-popup';
|
|
19
19
|
import { MenuComponent, MenuItemComponent, ContextMenuComponent } from '@progress/kendo-angular-menu';
|
|
20
|
-
import { EventsOutsideAngularDirective, replaceMessagePlaceholder, isDocumentAvailable, isPresent, normalizeKeys, Keys, hasObservers, getLicenseMessage, shouldShowValidationUI, WatermarkOverlayComponent, ResizeBatchService } from '@progress/kendo-angular-common';
|
|
20
|
+
import { EventsOutsideAngularDirective, replaceMessagePlaceholder, isDocumentAvailable, isPresent, normalizeKeys, Keys, hasObservers, guid, getLicenseMessage, shouldShowValidationUI, WatermarkOverlayComponent, ResizeBatchService } from '@progress/kendo-angular-common';
|
|
21
21
|
import * as i1$2 from '@progress/kendo-angular-dialog';
|
|
22
22
|
import { DialogContentBase, DialogActionsComponent, DialogContainerService, DialogService, WindowService, WindowContainerService } from '@progress/kendo-angular-dialog';
|
|
23
23
|
import { IconWrapperComponent, IconsService } from '@progress/kendo-angular-icons';
|
|
24
24
|
import * as i1$3 from '@progress/kendo-angular-toolbar';
|
|
25
25
|
import { ToolBarToolComponent, ToolBarComponent, ToolBarButtonComponent, ToolBarButtonGroupComponent, ToolBarSeparatorComponent, ToolBarDropDownButtonComponent } from '@progress/kendo-angular-toolbar';
|
|
26
|
-
import
|
|
26
|
+
import * as i9 from '@progress/kendo-angular-inputs';
|
|
27
|
+
import { TextBoxComponent, ColorPickerComponent, CheckBoxComponent, RadioButtonComponent, InputsModule } from '@progress/kendo-angular-inputs';
|
|
27
28
|
import { LabelComponent } from '@progress/kendo-angular-label';
|
|
28
29
|
import { ButtonComponent, DropDownButtonComponent } from '@progress/kendo-angular-buttons';
|
|
29
30
|
import { TabStripComponent, TabStripTabComponent, TabTemplateDirective } from '@progress/kendo-angular-layout';
|
|
30
31
|
import { ComboBoxComponent, DropDownListComponent, ItemTemplateDirective } from '@progress/kendo-angular-dropdowns';
|
|
31
|
-
import { NgStyle } from '@angular/common';
|
|
32
|
+
import { NgStyle, NgTemplateOutlet, NgClass } from '@angular/common';
|
|
32
33
|
import { saveAs } from '@progress/kendo-file-saver';
|
|
33
34
|
import { Workbook } from '@progress/kendo-ooxml';
|
|
34
35
|
import * as i4 from '@angular/forms';
|
|
35
36
|
import { FormGroup, FormControl, Validators, ReactiveFormsModule } from '@angular/forms';
|
|
36
|
-
import { CalendarComponent as CalendarComponent$1 } from '@progress/kendo-angular-dateinputs';
|
|
37
|
+
import { CalendarComponent as CalendarComponent$1, DatePickerComponent } from '@progress/kendo-angular-dateinputs';
|
|
38
|
+
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
39
|
+
import * as i8 from '@progress/kendo-angular-treeview';
|
|
40
|
+
import { KENDO_TREEVIEW } from '@progress/kendo-angular-treeview';
|
|
37
41
|
|
|
38
42
|
/**
|
|
39
43
|
* @hidden
|
|
@@ -43,8 +47,8 @@ const packageMetadata = {
|
|
|
43
47
|
productName: 'Kendo UI for Angular',
|
|
44
48
|
productCode: 'KENDOUIANGULAR',
|
|
45
49
|
productCodes: ['KENDOUIANGULAR'],
|
|
46
|
-
publishDate:
|
|
47
|
-
version: '21.4.0-develop.
|
|
50
|
+
publishDate: 1766046135,
|
|
51
|
+
version: '21.4.0-develop.4',
|
|
48
52
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning',
|
|
49
53
|
};
|
|
50
54
|
|
|
@@ -54,10 +58,12 @@ let spreadsheetCounter = 0;
|
|
|
54
58
|
*/
|
|
55
59
|
class SpreadsheetService {
|
|
56
60
|
spreadsheet;
|
|
61
|
+
spreadsheetComponent;
|
|
57
62
|
sheetsChanged = new Subject();
|
|
58
63
|
onSheetsBarFocus = new Subject();
|
|
59
64
|
activeSheetChanged = new Subject();
|
|
60
65
|
selectionChanged = new Subject();
|
|
66
|
+
componentInitialized = new Subject();
|
|
61
67
|
dialogContainer;
|
|
62
68
|
constructor() {
|
|
63
69
|
spreadsheetCounter++;
|
|
@@ -559,6 +565,7 @@ class ErrorHandlingService {
|
|
|
559
565
|
actionsLayout: 'start'
|
|
560
566
|
};
|
|
561
567
|
const dialog = this.dialogService.open(dialogSettings);
|
|
568
|
+
this.spreadsheetService.spreadsheetComponent.closePopup();
|
|
562
569
|
const dialogInstance = dialog.dialog?.instance;
|
|
563
570
|
dialogInstance.action.pipe(take(1)).subscribe((event) => {
|
|
564
571
|
if (event.text === this.messageFor('dialogOk')) {
|
|
@@ -630,7 +637,12 @@ const commandIcons = {
|
|
|
630
637
|
hideRow: 'eye-slash',
|
|
631
638
|
unhideRow: 'eye',
|
|
632
639
|
hideColumn: 'eye-slash',
|
|
633
|
-
unhideColumn: 'eye'
|
|
640
|
+
unhideColumn: 'eye',
|
|
641
|
+
filter: 'filter',
|
|
642
|
+
sort: 'sort-asc',
|
|
643
|
+
sortAsc: 'sort-asc',
|
|
644
|
+
sortDesc: 'sort-desc',
|
|
645
|
+
unsort: 'sort-clear'
|
|
634
646
|
};
|
|
635
647
|
/**
|
|
636
648
|
* @hidden
|
|
@@ -683,7 +695,12 @@ const commandSVGIcons = {
|
|
|
683
695
|
hideRow: eyeSlashIcon,
|
|
684
696
|
unhideRow: eyeIcon,
|
|
685
697
|
hideColumn: eyeSlashIcon,
|
|
686
|
-
unhideColumn: eyeIcon
|
|
698
|
+
unhideColumn: eyeIcon,
|
|
699
|
+
filter: filterIcon,
|
|
700
|
+
sort: sortAscIcon,
|
|
701
|
+
sortAsc: sortAscIcon,
|
|
702
|
+
sortDesc: sortDescIcon,
|
|
703
|
+
unsort: sortClearIcon
|
|
687
704
|
};
|
|
688
705
|
|
|
689
706
|
/**
|
|
@@ -1396,6 +1413,13 @@ const MERGE = [
|
|
|
1396
1413
|
{ icon: commandIcons.mergeVertically, svgIcon: commandSVGIcons.mergeVertically, textKey: 'Merge vertically', commandName: 'vertically', value: 'vertically', disabled: false, commandId: 'mergeVertically' },
|
|
1397
1414
|
{ icon: commandIcons.unmerge, svgIcon: commandSVGIcons.unmerge, textKey: 'Unmerge', commandName: 'unmerge', value: 'unmerge', disabled: false, commandId: 'unmerge' }
|
|
1398
1415
|
];
|
|
1416
|
+
/**
|
|
1417
|
+
* @hidden
|
|
1418
|
+
*/
|
|
1419
|
+
const SORT = [
|
|
1420
|
+
{ icon: commandIcons.sortAsc, svgIcon: commandSVGIcons.sortAsc, textKey: 'Sort range A to Z', commandName: 'sortAsc', value: 'asc', disabled: false, commandId: 'sortAsc' },
|
|
1421
|
+
{ icon: commandIcons.sortDesc, svgIcon: commandSVGIcons.sortDesc, textKey: 'Sort range Z to A', commandName: 'sortDesc', value: 'desc', disabled: false, commandId: 'sortDesc' }
|
|
1422
|
+
];
|
|
1399
1423
|
/**
|
|
1400
1424
|
* @hidden
|
|
1401
1425
|
*/
|
|
@@ -3845,8 +3869,124 @@ class MessagesDirective extends ComponentMessages {
|
|
|
3845
3869
|
* internally with the current value, and the resulting label will be rendered as **A1% is invalid**.
|
|
3846
3870
|
*/
|
|
3847
3871
|
invalidNameError;
|
|
3872
|
+
/**
|
|
3873
|
+
* The content of the dialog that warns about sorting range containing cells of mixed shapes.
|
|
3874
|
+
*/
|
|
3875
|
+
cantSortMixedCells;
|
|
3876
|
+
/**
|
|
3877
|
+
* The text of the **Apply** button in the filter menu.
|
|
3878
|
+
*/
|
|
3879
|
+
filterApply;
|
|
3880
|
+
/**
|
|
3881
|
+
* The text of the **Clear** button in the filter menu.
|
|
3882
|
+
*/
|
|
3883
|
+
filterClear;
|
|
3884
|
+
/**
|
|
3885
|
+
* The text of the **All** grouping item in the filter menu.
|
|
3886
|
+
*/
|
|
3887
|
+
filterMenuAll;
|
|
3888
|
+
/**
|
|
3889
|
+
* The text for the blank (empty) values.
|
|
3890
|
+
*/
|
|
3891
|
+
blankValues;
|
|
3892
|
+
/**
|
|
3893
|
+
* The text of the **contains** filter operator.
|
|
3894
|
+
*/
|
|
3895
|
+
filterContainsOperator;
|
|
3896
|
+
/**
|
|
3897
|
+
* The text of the **does not contain** filter operator.
|
|
3898
|
+
*/
|
|
3899
|
+
filterNotContainsOperator;
|
|
3900
|
+
/**
|
|
3901
|
+
* The text of the **starts with** filter operator.
|
|
3902
|
+
*/
|
|
3903
|
+
filterStartsWithOperator;
|
|
3904
|
+
/**
|
|
3905
|
+
* The text of the **ends with** filter operator.
|
|
3906
|
+
*/
|
|
3907
|
+
filterEndsWithOperator;
|
|
3908
|
+
/**
|
|
3909
|
+
* The text of the **matches** filter operator.
|
|
3910
|
+
*/
|
|
3911
|
+
filterMatchesOperator;
|
|
3912
|
+
/**
|
|
3913
|
+
* The text of the **does not match** filter operator.
|
|
3914
|
+
*/
|
|
3915
|
+
filterNotMatchesOperator;
|
|
3916
|
+
/**
|
|
3917
|
+
* The text of the **Date is** filter operator.
|
|
3918
|
+
*/
|
|
3919
|
+
filterDateEqOperator;
|
|
3920
|
+
/**
|
|
3921
|
+
* The text of the **Date is not** filter operator.
|
|
3922
|
+
*/
|
|
3923
|
+
filterDateNotEqOperator;
|
|
3924
|
+
/**
|
|
3925
|
+
* The text of the **Date is before** filter operator.
|
|
3926
|
+
*/
|
|
3927
|
+
filterBeforeOperator;
|
|
3928
|
+
/**
|
|
3929
|
+
* The text of the **Date is after** filter operator.
|
|
3930
|
+
*/
|
|
3931
|
+
filterAfterOperator;
|
|
3932
|
+
/**
|
|
3933
|
+
* Sets the text for the **Equal (Is equal to)** filter operator.
|
|
3934
|
+
*/
|
|
3935
|
+
filterEqOperator;
|
|
3936
|
+
/**
|
|
3937
|
+
* Sets the text for the **Not equal (Is not equal to)** filter operator.
|
|
3938
|
+
*/
|
|
3939
|
+
filterNotEqOperator;
|
|
3940
|
+
/**
|
|
3941
|
+
* The text of the greater than or equal filter operator.
|
|
3942
|
+
*/
|
|
3943
|
+
filterGteOperator;
|
|
3944
|
+
/**
|
|
3945
|
+
* The text of the **greater than** filter operator.
|
|
3946
|
+
*/
|
|
3947
|
+
filterGtOperator;
|
|
3948
|
+
/**
|
|
3949
|
+
* The text of the **less than or equal** filter operator.
|
|
3950
|
+
*/
|
|
3951
|
+
filterLteOperator;
|
|
3952
|
+
/**
|
|
3953
|
+
* The text of the **less than** filter operator.
|
|
3954
|
+
*/
|
|
3955
|
+
filterLtOperator;
|
|
3956
|
+
/**
|
|
3957
|
+
* The text of the **none** filter operator.
|
|
3958
|
+
*/
|
|
3959
|
+
filterNoneOperator;
|
|
3960
|
+
/**
|
|
3961
|
+
* The text of the **Filter by condition** menu item.
|
|
3962
|
+
*/
|
|
3963
|
+
filterMenuConditionItem;
|
|
3964
|
+
/**
|
|
3965
|
+
* The text of the **Filter by value** menu item.
|
|
3966
|
+
*/
|
|
3967
|
+
filterMenuValueItem;
|
|
3968
|
+
/**
|
|
3969
|
+
* The title of the Sort ToolBar tool.
|
|
3970
|
+
*/
|
|
3971
|
+
sort;
|
|
3972
|
+
/**
|
|
3973
|
+
* The text of the **Sort range A to Z** option.
|
|
3974
|
+
*/
|
|
3975
|
+
sortAsc;
|
|
3976
|
+
/**
|
|
3977
|
+
* The text of the **Sort range Z to A** option.
|
|
3978
|
+
*/
|
|
3979
|
+
sortDesc;
|
|
3980
|
+
/**
|
|
3981
|
+
* The text of the **Unsort** option.
|
|
3982
|
+
*/
|
|
3983
|
+
unsort;
|
|
3984
|
+
/**
|
|
3985
|
+
* The content of the dialog that warns about sorting incorrect (empty) range.
|
|
3986
|
+
*/
|
|
3987
|
+
cantSortNullRef;
|
|
3848
3988
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessagesDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
3849
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: MessagesDirective, isStandalone: true, selector: "[kendoSpreadsheetMessages]", inputs: { home: "home", file: "file", insert: "insert", formatTab: "formatTab", dataTab: "dataTab", saveFile: "saveFile", loadFile: "loadFile", bold: "bold", dataValidation: "dataValidation", validationCellRange: "validationCellRange", validationCriteria: "validationCriteria", validationComparer: "validationComparer", validationMinValue: "validationMinValue", validationMaxValue: "validationMaxValue", validationStartValue: "validationStartValue", validationEndValue: "validationEndValue", validationValue: "validationValue", validationShowListButtonCheckbox: "validationShowListButtonCheckbox", validationShowDateButtonCheckbox: "validationShowDateButtonCheckbox", validationIgnoreBlankCheckbox: "validationIgnoreBlankCheckbox", validationOnInvalidData: "validationOnInvalidData", validationRejectInput: "validationRejectInput", validationShowWarning: "validationShowWarning", validationShowHint: "validationShowHint", anyValueValidationCriteria: "anyValueValidationCriteria", numberValidationCriteria: "numberValidationCriteria", textValidationCriteria: "textValidationCriteria", dateValidationCriteria: "dateValidationCriteria", customFormulaValidationCriteria: "customFormulaValidationCriteria", listValidationCriteria: "listValidationCriteria", greaterThanValidationComparer: "greaterThanValidationComparer", lessThanValidationComparer: "lessThanValidationComparer", betweenValidationComparer: "betweenValidationComparer", notBetweenValidationComparer: "notBetweenValidationComparer", equalToValidationComparer: "equalToValidationComparer", notEqualToValidationComparer: "notEqualToValidationComparer", greaterThanOrEqualToValidationComparer: "greaterThanOrEqualToValidationComparer", lessThanOrEqualToValidationComparer: "lessThanOrEqualToValidationComparer", validationHintMessage: "validationHintMessage", validationHintTitle: "validationHintTitle", italic: "italic", underline: "underline", format: "format", fontFamily: "fontFamily", fontSize: "fontSize", undo: "undo", redo: "redo", background: "background", color: "color", gridLines: "gridLines", addColumnLeft: "addColumnLeft", addColumnRight: "addColumnRight", addRowBelow: "addRowBelow", addRowAbove: "addRowAbove", deleteColumn: "deleteColumn", deleteRow: "deleteRow", wrap: "wrap", align: "align", alignHorizontal: "alignHorizontal", alignVertical: "alignVertical", alignLeft: "alignLeft", alignCenter: "alignCenter", alignRight: "alignRight", alignJustify: "alignJustify", alignTop: "alignTop", alignMiddle: "alignMiddle", alignBottom: "alignBottom", dialogApply: "dialogApply", dialogCancel: "dialogCancel", dialogDelete: "dialogDelete", dialogRename: "dialogRename", dialogInsert: "dialogInsert", dialogRemove: "dialogRemove", dialogRemoveLink: "dialogRemoveLink", delete: "delete", rename: "rename", nameBox: "nameBox", formulaInput: "formulaInput", addSheet: "addSheet", sheetsMenu: "sheetsMenu", view: "view", merge: "merge", mergeHorizontally: "mergeHorizontally", mergeVertically: "mergeVertically", mergeAll: "mergeAll", unmerge: "unmerge", insertLink: "insertLink", increaseDecimal: "increaseDecimal", decreaseDecimal: "decreaseDecimal", increaseFontSize: "increaseFontSize", decreaseFontSize: "decreaseFontSize", openUnsupported: "openUnsupported", modifyMerged: "modifyMerged", cannotModifyDisabled: "cannotModifyDisabled", dialogOk: "dialogOk", dialogError: "dialogError", duplicateSheetName: "duplicateSheetName", copy: "copy", cut: "cut", paste: "paste", hideRow: "hideRow", unhideRow: "unhideRow", hideColumn: "hideColumn", unhideColumn: "unhideColumn", sheetDelete: "sheetDelete", sheetRename: "sheetRename", sheetHide: "sheetHide", sheetDuplicate: "sheetDuplicate", sheetMoveLeft: "sheetMoveLeft", sheetMoveRight: "sheetMoveRight", invalidNameError: "invalidNameError" }, usesInheritance: true, ngImport: i0 });
|
|
3989
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: MessagesDirective, isStandalone: true, selector: "[kendoSpreadsheetMessages]", inputs: { home: "home", file: "file", insert: "insert", formatTab: "formatTab", dataTab: "dataTab", saveFile: "saveFile", loadFile: "loadFile", bold: "bold", dataValidation: "dataValidation", validationCellRange: "validationCellRange", validationCriteria: "validationCriteria", validationComparer: "validationComparer", validationMinValue: "validationMinValue", validationMaxValue: "validationMaxValue", validationStartValue: "validationStartValue", validationEndValue: "validationEndValue", validationValue: "validationValue", validationShowListButtonCheckbox: "validationShowListButtonCheckbox", validationShowDateButtonCheckbox: "validationShowDateButtonCheckbox", validationIgnoreBlankCheckbox: "validationIgnoreBlankCheckbox", validationOnInvalidData: "validationOnInvalidData", validationRejectInput: "validationRejectInput", validationShowWarning: "validationShowWarning", validationShowHint: "validationShowHint", anyValueValidationCriteria: "anyValueValidationCriteria", numberValidationCriteria: "numberValidationCriteria", textValidationCriteria: "textValidationCriteria", dateValidationCriteria: "dateValidationCriteria", customFormulaValidationCriteria: "customFormulaValidationCriteria", listValidationCriteria: "listValidationCriteria", greaterThanValidationComparer: "greaterThanValidationComparer", lessThanValidationComparer: "lessThanValidationComparer", betweenValidationComparer: "betweenValidationComparer", notBetweenValidationComparer: "notBetweenValidationComparer", equalToValidationComparer: "equalToValidationComparer", notEqualToValidationComparer: "notEqualToValidationComparer", greaterThanOrEqualToValidationComparer: "greaterThanOrEqualToValidationComparer", lessThanOrEqualToValidationComparer: "lessThanOrEqualToValidationComparer", validationHintMessage: "validationHintMessage", validationHintTitle: "validationHintTitle", italic: "italic", underline: "underline", format: "format", fontFamily: "fontFamily", fontSize: "fontSize", undo: "undo", redo: "redo", background: "background", color: "color", gridLines: "gridLines", addColumnLeft: "addColumnLeft", addColumnRight: "addColumnRight", addRowBelow: "addRowBelow", addRowAbove: "addRowAbove", deleteColumn: "deleteColumn", deleteRow: "deleteRow", wrap: "wrap", align: "align", alignHorizontal: "alignHorizontal", alignVertical: "alignVertical", alignLeft: "alignLeft", alignCenter: "alignCenter", alignRight: "alignRight", alignJustify: "alignJustify", alignTop: "alignTop", alignMiddle: "alignMiddle", alignBottom: "alignBottom", dialogApply: "dialogApply", dialogCancel: "dialogCancel", dialogDelete: "dialogDelete", dialogRename: "dialogRename", dialogInsert: "dialogInsert", dialogRemove: "dialogRemove", dialogRemoveLink: "dialogRemoveLink", delete: "delete", rename: "rename", nameBox: "nameBox", formulaInput: "formulaInput", addSheet: "addSheet", sheetsMenu: "sheetsMenu", view: "view", merge: "merge", mergeHorizontally: "mergeHorizontally", mergeVertically: "mergeVertically", mergeAll: "mergeAll", unmerge: "unmerge", insertLink: "insertLink", increaseDecimal: "increaseDecimal", decreaseDecimal: "decreaseDecimal", increaseFontSize: "increaseFontSize", decreaseFontSize: "decreaseFontSize", openUnsupported: "openUnsupported", modifyMerged: "modifyMerged", cannotModifyDisabled: "cannotModifyDisabled", dialogOk: "dialogOk", dialogError: "dialogError", duplicateSheetName: "duplicateSheetName", copy: "copy", cut: "cut", paste: "paste", hideRow: "hideRow", unhideRow: "unhideRow", hideColumn: "hideColumn", unhideColumn: "unhideColumn", sheetDelete: "sheetDelete", sheetRename: "sheetRename", sheetHide: "sheetHide", sheetDuplicate: "sheetDuplicate", sheetMoveLeft: "sheetMoveLeft", sheetMoveRight: "sheetMoveRight", invalidNameError: "invalidNameError", cantSortMixedCells: "cantSortMixedCells", filterApply: "filterApply", filterClear: "filterClear", filterMenuAll: "filterMenuAll", blankValues: "blankValues", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterStartsWithOperator: "filterStartsWithOperator", filterEndsWithOperator: "filterEndsWithOperator", filterMatchesOperator: "filterMatchesOperator", filterNotMatchesOperator: "filterNotMatchesOperator", filterDateEqOperator: "filterDateEqOperator", filterDateNotEqOperator: "filterDateNotEqOperator", filterBeforeOperator: "filterBeforeOperator", filterAfterOperator: "filterAfterOperator", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterNoneOperator: "filterNoneOperator", filterMenuConditionItem: "filterMenuConditionItem", filterMenuValueItem: "filterMenuValueItem", sort: "sort", sortAsc: "sortAsc", sortDesc: "sortDesc", unsort: "unsort", cantSortNullRef: "cantSortNullRef" }, usesInheritance: true, ngImport: i0 });
|
|
3850
3990
|
}
|
|
3851
3991
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessagesDirective, decorators: [{
|
|
3852
3992
|
type: Directive,
|
|
@@ -4076,6 +4216,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4076
4216
|
type: Input
|
|
4077
4217
|
}], invalidNameError: [{
|
|
4078
4218
|
type: Input
|
|
4219
|
+
}], cantSortMixedCells: [{
|
|
4220
|
+
type: Input
|
|
4221
|
+
}], filterApply: [{
|
|
4222
|
+
type: Input
|
|
4223
|
+
}], filterClear: [{
|
|
4224
|
+
type: Input
|
|
4225
|
+
}], filterMenuAll: [{
|
|
4226
|
+
type: Input
|
|
4227
|
+
}], blankValues: [{
|
|
4228
|
+
type: Input
|
|
4229
|
+
}], filterContainsOperator: [{
|
|
4230
|
+
type: Input
|
|
4231
|
+
}], filterNotContainsOperator: [{
|
|
4232
|
+
type: Input
|
|
4233
|
+
}], filterStartsWithOperator: [{
|
|
4234
|
+
type: Input
|
|
4235
|
+
}], filterEndsWithOperator: [{
|
|
4236
|
+
type: Input
|
|
4237
|
+
}], filterMatchesOperator: [{
|
|
4238
|
+
type: Input
|
|
4239
|
+
}], filterNotMatchesOperator: [{
|
|
4240
|
+
type: Input
|
|
4241
|
+
}], filterDateEqOperator: [{
|
|
4242
|
+
type: Input
|
|
4243
|
+
}], filterDateNotEqOperator: [{
|
|
4244
|
+
type: Input
|
|
4245
|
+
}], filterBeforeOperator: [{
|
|
4246
|
+
type: Input
|
|
4247
|
+
}], filterAfterOperator: [{
|
|
4248
|
+
type: Input
|
|
4249
|
+
}], filterEqOperator: [{
|
|
4250
|
+
type: Input
|
|
4251
|
+
}], filterNotEqOperator: [{
|
|
4252
|
+
type: Input
|
|
4253
|
+
}], filterGteOperator: [{
|
|
4254
|
+
type: Input
|
|
4255
|
+
}], filterGtOperator: [{
|
|
4256
|
+
type: Input
|
|
4257
|
+
}], filterLteOperator: [{
|
|
4258
|
+
type: Input
|
|
4259
|
+
}], filterLtOperator: [{
|
|
4260
|
+
type: Input
|
|
4261
|
+
}], filterNoneOperator: [{
|
|
4262
|
+
type: Input
|
|
4263
|
+
}], filterMenuConditionItem: [{
|
|
4264
|
+
type: Input
|
|
4265
|
+
}], filterMenuValueItem: [{
|
|
4266
|
+
type: Input
|
|
4267
|
+
}], sort: [{
|
|
4268
|
+
type: Input
|
|
4269
|
+
}], sortAsc: [{
|
|
4270
|
+
type: Input
|
|
4271
|
+
}], sortDesc: [{
|
|
4272
|
+
type: Input
|
|
4273
|
+
}], unsort: [{
|
|
4274
|
+
type: Input
|
|
4275
|
+
}], cantSortNullRef: [{
|
|
4276
|
+
type: Input
|
|
4079
4277
|
}] } });
|
|
4080
4278
|
|
|
4081
4279
|
/**
|
|
@@ -4884,6 +5082,389 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4884
5082
|
type: Output
|
|
4885
5083
|
}] } });
|
|
4886
5084
|
|
|
5085
|
+
/**
|
|
5086
|
+
* @hidden
|
|
5087
|
+
*/
|
|
5088
|
+
class SpreadsheetFilterDirective extends SpreadsheetCommandButton {
|
|
5089
|
+
cdr;
|
|
5090
|
+
constructor(button, localization, spreadsheetService, toolsService, cdr) {
|
|
5091
|
+
super('filter', button, localization, spreadsheetService, toolsService, {
|
|
5092
|
+
command: 'FilterCommand'
|
|
5093
|
+
});
|
|
5094
|
+
this.cdr = cdr;
|
|
5095
|
+
this.subs.add(spreadsheetService.componentInitialized.subscribe(() => {
|
|
5096
|
+
this.toggleActiveState(button);
|
|
5097
|
+
}));
|
|
5098
|
+
this.subs.add(spreadsheetService.selectionChanged.subscribe((range) => {
|
|
5099
|
+
this.toggleActiveState(button, range);
|
|
5100
|
+
}));
|
|
5101
|
+
this.subs.add(spreadsheetService.activeSheetChanged.subscribe(() => {
|
|
5102
|
+
this.toggleActiveState(button);
|
|
5103
|
+
}));
|
|
5104
|
+
}
|
|
5105
|
+
ngOnDestroy() {
|
|
5106
|
+
this.subs.unsubscribe();
|
|
5107
|
+
}
|
|
5108
|
+
clickHandler() {
|
|
5109
|
+
this.spreadsheetService.spreadsheetComponent.closePopup();
|
|
5110
|
+
const options = {
|
|
5111
|
+
command: 'FilterCommand',
|
|
5112
|
+
options: { property: 'hasFilter' }
|
|
5113
|
+
};
|
|
5114
|
+
this.spreadsheetService.spreadsheet.executeCommand(options);
|
|
5115
|
+
}
|
|
5116
|
+
toggleActiveState(button, range) {
|
|
5117
|
+
const currentSheet = this.spreadsheetService.spreadsheet.activeSheet();
|
|
5118
|
+
const currentRange = isPresent(range) ? range : currentSheet.range(currentSheet.activeCell());
|
|
5119
|
+
let disabled = true;
|
|
5120
|
+
let rangeHasValue = false;
|
|
5121
|
+
currentRange.values().forEach((nestedArr) => {
|
|
5122
|
+
if (nestedArr.some(value => isPresent(value) && value !== '') && !rangeHasValue) {
|
|
5123
|
+
rangeHasValue = true;
|
|
5124
|
+
}
|
|
5125
|
+
});
|
|
5126
|
+
const currentRangeRef = currentRange._ref;
|
|
5127
|
+
const isSingleCell = currentRangeRef?.ref === 'cell' || (currentRangeRef.bottomRight.row === currentRangeRef.topLeft.row && currentRangeRef.bottomRight.col === currentRangeRef.topLeft.col);
|
|
5128
|
+
disabled = currentRangeRef?.height() <= 1 || !rangeHasValue || isSingleCell;
|
|
5129
|
+
if (button.disabled !== disabled) {
|
|
5130
|
+
button.disabled = disabled;
|
|
5131
|
+
this.cdr.detectChanges();
|
|
5132
|
+
}
|
|
5133
|
+
}
|
|
5134
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpreadsheetFilterDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: SpreadsheetLocalizationService }, { token: SpreadsheetService }, { token: SpreadsheetToolsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5135
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: SpreadsheetFilterDirective, isStandalone: true, selector: "kendo-toolbar-button[kendoSpreadsheetFilter]", usesInheritance: true, ngImport: i0 });
|
|
5136
|
+
}
|
|
5137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpreadsheetFilterDirective, decorators: [{
|
|
5138
|
+
type: Directive,
|
|
5139
|
+
args: [{
|
|
5140
|
+
selector: 'kendo-toolbar-button[kendoSpreadsheetFilter]',
|
|
5141
|
+
standalone: true
|
|
5142
|
+
}]
|
|
5143
|
+
}], ctorParameters: () => [{ type: i1$3.ToolBarButtonComponent }, { type: SpreadsheetLocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }, { type: i0.ChangeDetectorRef }] });
|
|
5144
|
+
|
|
5145
|
+
/**
|
|
5146
|
+
* @hidden
|
|
5147
|
+
*/
|
|
5148
|
+
class FilterMenuItemContentTemplateDirective {
|
|
5149
|
+
templateRef;
|
|
5150
|
+
constructor(templateRef) {
|
|
5151
|
+
this.templateRef = templateRef;
|
|
5152
|
+
}
|
|
5153
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterMenuItemContentTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5154
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: FilterMenuItemContentTemplateDirective, isStandalone: true, selector: "[kendoSpreadsheetFilterMenuItemContentTemplate]", ngImport: i0 });
|
|
5155
|
+
}
|
|
5156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterMenuItemContentTemplateDirective, decorators: [{
|
|
5157
|
+
type: Directive,
|
|
5158
|
+
args: [{
|
|
5159
|
+
selector: '[kendoSpreadsheetFilterMenuItemContentTemplate]',
|
|
5160
|
+
standalone: true
|
|
5161
|
+
}]
|
|
5162
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef, decorators: [{
|
|
5163
|
+
type: Optional
|
|
5164
|
+
}] }] });
|
|
5165
|
+
|
|
5166
|
+
/**
|
|
5167
|
+
* Represents an item that you can place inside the Spreadsheet filter menu.
|
|
5168
|
+
*
|
|
5169
|
+
* @hidden
|
|
5170
|
+
*/
|
|
5171
|
+
class SpreadsheetFilterMenuItemComponent {
|
|
5172
|
+
ngZone;
|
|
5173
|
+
element;
|
|
5174
|
+
contentTemplate;
|
|
5175
|
+
hostClass = true;
|
|
5176
|
+
/**
|
|
5177
|
+
* Specifies the item text.
|
|
5178
|
+
*/
|
|
5179
|
+
text;
|
|
5180
|
+
/**
|
|
5181
|
+
* Specifies the items.
|
|
5182
|
+
*/
|
|
5183
|
+
innerMenuItems;
|
|
5184
|
+
/**
|
|
5185
|
+
* Specifies the item icon.
|
|
5186
|
+
*/
|
|
5187
|
+
icon;
|
|
5188
|
+
/**
|
|
5189
|
+
* Specifies the item icon.
|
|
5190
|
+
*/
|
|
5191
|
+
expanderClass;
|
|
5192
|
+
/**
|
|
5193
|
+
* Specifies the item icon.
|
|
5194
|
+
*/
|
|
5195
|
+
expandable = false;
|
|
5196
|
+
/**
|
|
5197
|
+
* Specifies the item svgIcon.
|
|
5198
|
+
*/
|
|
5199
|
+
svgIcon;
|
|
5200
|
+
/**
|
|
5201
|
+
* Specifies if the item is expanded.
|
|
5202
|
+
*/
|
|
5203
|
+
set expanded(value) {
|
|
5204
|
+
this._expanded = value;
|
|
5205
|
+
this.updateContentState();
|
|
5206
|
+
}
|
|
5207
|
+
get expanded() {
|
|
5208
|
+
return this._expanded;
|
|
5209
|
+
}
|
|
5210
|
+
/**
|
|
5211
|
+
* Fires when the item is clicked.
|
|
5212
|
+
*/
|
|
5213
|
+
itemClick = new EventEmitter();
|
|
5214
|
+
/**
|
|
5215
|
+
* Fires when the content expands.
|
|
5216
|
+
*/
|
|
5217
|
+
expand = new EventEmitter();
|
|
5218
|
+
/**
|
|
5219
|
+
* Fires when the content collapses.
|
|
5220
|
+
*/
|
|
5221
|
+
collapse = new EventEmitter();
|
|
5222
|
+
constructor(ngZone, element) {
|
|
5223
|
+
this.ngZone = ngZone;
|
|
5224
|
+
this.element = element;
|
|
5225
|
+
}
|
|
5226
|
+
ngAfterViewInit() {
|
|
5227
|
+
this.ngZone.onStable.pipe(take(1)).subscribe(() => {
|
|
5228
|
+
this.contentTemplate && (this.contentId = `k-${guid()}`);
|
|
5229
|
+
});
|
|
5230
|
+
}
|
|
5231
|
+
/**
|
|
5232
|
+
* @hidden
|
|
5233
|
+
*/
|
|
5234
|
+
get expandedIcon() {
|
|
5235
|
+
return this.expanded ? 'arrow-chevron-up' : 'arrow-chevron-down';
|
|
5236
|
+
}
|
|
5237
|
+
/**
|
|
5238
|
+
* @hidden
|
|
5239
|
+
*/
|
|
5240
|
+
get expandedSvgIcon() {
|
|
5241
|
+
return this.expanded ? this.chevronUpIcon : this.chevronDownIcon;
|
|
5242
|
+
}
|
|
5243
|
+
contentState = 'collapsed';
|
|
5244
|
+
contentId;
|
|
5245
|
+
chevronUpIcon = chevronUpIcon;
|
|
5246
|
+
chevronDownIcon = chevronDownIcon;
|
|
5247
|
+
_expanded = false;
|
|
5248
|
+
/**
|
|
5249
|
+
* @hidden
|
|
5250
|
+
*/
|
|
5251
|
+
onClick(e, item) {
|
|
5252
|
+
this.itemClick.emit(item);
|
|
5253
|
+
e.preventDefault();
|
|
5254
|
+
e.stopImmediatePropagation();
|
|
5255
|
+
if (this.contentTemplate) {
|
|
5256
|
+
if (this.expanded) {
|
|
5257
|
+
this.collapse.emit();
|
|
5258
|
+
}
|
|
5259
|
+
else {
|
|
5260
|
+
this.expand.emit();
|
|
5261
|
+
}
|
|
5262
|
+
}
|
|
5263
|
+
}
|
|
5264
|
+
updateContentState() {
|
|
5265
|
+
this.contentState = this.expanded ? 'expanded' : 'collapsed';
|
|
5266
|
+
}
|
|
5267
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpreadsheetFilterMenuItemComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
5268
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SpreadsheetFilterMenuItemComponent, isStandalone: true, selector: "kendo-spreadsheet-filtermenu-item", inputs: { text: "text", innerMenuItems: "innerMenuItems", icon: "icon", expanderClass: "expanderClass", expandable: "expandable", svgIcon: "svgIcon", expanded: "expanded" }, outputs: { itemClick: "itemClick", expand: "expand", collapse: "collapse" }, host: { properties: { "class.k-columnmenu-item-wrapper": "this.hostClass" } }, queries: [{ propertyName: "contentTemplate", first: true, predicate: FilterMenuItemContentTemplateDirective, descendants: true }], ngImport: i0, template: `
|
|
5269
|
+
@if (expandable) {
|
|
5270
|
+
<div class="k-expander" [ngClass]="expanderClass">
|
|
5271
|
+
<ng-container [ngTemplateOutlet]="itemsTemplate"></ng-container>
|
|
5272
|
+
</div>
|
|
5273
|
+
} @else {
|
|
5274
|
+
<ng-container [ngTemplateOutlet]="itemsTemplate"></ng-container>
|
|
5275
|
+
}
|
|
5276
|
+
|
|
5277
|
+
<ng-template #itemsTemplate>
|
|
5278
|
+
@for (item of innerMenuItems; track item) {
|
|
5279
|
+
<div class="k-columnmenu-item" (click)="onClick($event, item)">
|
|
5280
|
+
@if (item.icon || item.svgIcon) {
|
|
5281
|
+
<kendo-icon-wrapper
|
|
5282
|
+
[name]="item.icon"
|
|
5283
|
+
[svgIcon]="item.svgIcon">
|
|
5284
|
+
</kendo-icon-wrapper>
|
|
5285
|
+
}
|
|
5286
|
+
{{item.text}}
|
|
5287
|
+
@if (expandable) {
|
|
5288
|
+
<span class="k-spacer"></span>
|
|
5289
|
+
<span class="k-expander-indicator">
|
|
5290
|
+
<kendo-icon-wrapper
|
|
5291
|
+
[name]="expandedIcon"
|
|
5292
|
+
[svgIcon]="expandedSvgIcon">
|
|
5293
|
+
</kendo-icon-wrapper>
|
|
5294
|
+
</span>
|
|
5295
|
+
}
|
|
5296
|
+
</div>
|
|
5297
|
+
}
|
|
5298
|
+
</ng-template>
|
|
5299
|
+
|
|
5300
|
+
@if (contentTemplate) {
|
|
5301
|
+
<div class="k-columnmenu-item-content" [attr.id]="contentId" [@state]="contentState" [style.overflow]="'hidden'">
|
|
5302
|
+
<ng-template [ngTemplateOutlet]="contentTemplate.templateRef"></ng-template>
|
|
5303
|
+
</div>
|
|
5304
|
+
}
|
|
5305
|
+
`, isInline: true, dependencies: [{ kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
|
|
5306
|
+
trigger('state', [
|
|
5307
|
+
state('collapsed', style({ display: 'none' })),
|
|
5308
|
+
state('expanded', style({ display: 'block' })),
|
|
5309
|
+
transition('collapsed => expanded', [
|
|
5310
|
+
style({
|
|
5311
|
+
height: '0px',
|
|
5312
|
+
display: 'block'
|
|
5313
|
+
}),
|
|
5314
|
+
animate('100ms ease-in', style({
|
|
5315
|
+
height: '*'
|
|
5316
|
+
}))
|
|
5317
|
+
]),
|
|
5318
|
+
transition('expanded => collapsed', [
|
|
5319
|
+
style({
|
|
5320
|
+
height: '*'
|
|
5321
|
+
}),
|
|
5322
|
+
animate('100ms ease-in', style({
|
|
5323
|
+
height: '0px'
|
|
5324
|
+
}))
|
|
5325
|
+
])
|
|
5326
|
+
])
|
|
5327
|
+
] });
|
|
5328
|
+
}
|
|
5329
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpreadsheetFilterMenuItemComponent, decorators: [{
|
|
5330
|
+
type: Component,
|
|
5331
|
+
args: [{
|
|
5332
|
+
selector: 'kendo-spreadsheet-filtermenu-item',
|
|
5333
|
+
template: `
|
|
5334
|
+
@if (expandable) {
|
|
5335
|
+
<div class="k-expander" [ngClass]="expanderClass">
|
|
5336
|
+
<ng-container [ngTemplateOutlet]="itemsTemplate"></ng-container>
|
|
5337
|
+
</div>
|
|
5338
|
+
} @else {
|
|
5339
|
+
<ng-container [ngTemplateOutlet]="itemsTemplate"></ng-container>
|
|
5340
|
+
}
|
|
5341
|
+
|
|
5342
|
+
<ng-template #itemsTemplate>
|
|
5343
|
+
@for (item of innerMenuItems; track item) {
|
|
5344
|
+
<div class="k-columnmenu-item" (click)="onClick($event, item)">
|
|
5345
|
+
@if (item.icon || item.svgIcon) {
|
|
5346
|
+
<kendo-icon-wrapper
|
|
5347
|
+
[name]="item.icon"
|
|
5348
|
+
[svgIcon]="item.svgIcon">
|
|
5349
|
+
</kendo-icon-wrapper>
|
|
5350
|
+
}
|
|
5351
|
+
{{item.text}}
|
|
5352
|
+
@if (expandable) {
|
|
5353
|
+
<span class="k-spacer"></span>
|
|
5354
|
+
<span class="k-expander-indicator">
|
|
5355
|
+
<kendo-icon-wrapper
|
|
5356
|
+
[name]="expandedIcon"
|
|
5357
|
+
[svgIcon]="expandedSvgIcon">
|
|
5358
|
+
</kendo-icon-wrapper>
|
|
5359
|
+
</span>
|
|
5360
|
+
}
|
|
5361
|
+
</div>
|
|
5362
|
+
}
|
|
5363
|
+
</ng-template>
|
|
5364
|
+
|
|
5365
|
+
@if (contentTemplate) {
|
|
5366
|
+
<div class="k-columnmenu-item-content" [attr.id]="contentId" [@state]="contentState" [style.overflow]="'hidden'">
|
|
5367
|
+
<ng-template [ngTemplateOutlet]="contentTemplate.templateRef"></ng-template>
|
|
5368
|
+
</div>
|
|
5369
|
+
}
|
|
5370
|
+
`,
|
|
5371
|
+
standalone: true,
|
|
5372
|
+
imports: [IconWrapperComponent, NgTemplateOutlet, NgClass],
|
|
5373
|
+
animations: [
|
|
5374
|
+
trigger('state', [
|
|
5375
|
+
state('collapsed', style({ display: 'none' })),
|
|
5376
|
+
state('expanded', style({ display: 'block' })),
|
|
5377
|
+
transition('collapsed => expanded', [
|
|
5378
|
+
style({
|
|
5379
|
+
height: '0px',
|
|
5380
|
+
display: 'block'
|
|
5381
|
+
}),
|
|
5382
|
+
animate('100ms ease-in', style({
|
|
5383
|
+
height: '*'
|
|
5384
|
+
}))
|
|
5385
|
+
]),
|
|
5386
|
+
transition('expanded => collapsed', [
|
|
5387
|
+
style({
|
|
5388
|
+
height: '*'
|
|
5389
|
+
}),
|
|
5390
|
+
animate('100ms ease-in', style({
|
|
5391
|
+
height: '0px'
|
|
5392
|
+
}))
|
|
5393
|
+
])
|
|
5394
|
+
])
|
|
5395
|
+
]
|
|
5396
|
+
}]
|
|
5397
|
+
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ElementRef }], propDecorators: { contentTemplate: [{
|
|
5398
|
+
type: ContentChild,
|
|
5399
|
+
args: [FilterMenuItemContentTemplateDirective]
|
|
5400
|
+
}], hostClass: [{
|
|
5401
|
+
type: HostBinding,
|
|
5402
|
+
args: ['class.k-columnmenu-item-wrapper']
|
|
5403
|
+
}], text: [{
|
|
5404
|
+
type: Input
|
|
5405
|
+
}], innerMenuItems: [{
|
|
5406
|
+
type: Input
|
|
5407
|
+
}], icon: [{
|
|
5408
|
+
type: Input
|
|
5409
|
+
}], expanderClass: [{
|
|
5410
|
+
type: Input
|
|
5411
|
+
}], expandable: [{
|
|
5412
|
+
type: Input
|
|
5413
|
+
}], svgIcon: [{
|
|
5414
|
+
type: Input
|
|
5415
|
+
}], expanded: [{
|
|
5416
|
+
type: Input
|
|
5417
|
+
}], itemClick: [{
|
|
5418
|
+
type: Output
|
|
5419
|
+
}], expand: [{
|
|
5420
|
+
type: Output
|
|
5421
|
+
}], collapse: [{
|
|
5422
|
+
type: Output
|
|
5423
|
+
}] } });
|
|
5424
|
+
|
|
5425
|
+
/**
|
|
5426
|
+
* @hidden
|
|
5427
|
+
*/
|
|
5428
|
+
class SpreadsheetSortDirective {
|
|
5429
|
+
spreadsheetService;
|
|
5430
|
+
commandName = 'sort';
|
|
5431
|
+
subs = new Subscription();
|
|
5432
|
+
constructor(host, localization, spreadsheetService) {
|
|
5433
|
+
this.spreadsheetService = spreadsheetService;
|
|
5434
|
+
host.svgIcon = commandSVGIcons[this.commandName];
|
|
5435
|
+
host.icon = commandIcons[this.commandName];
|
|
5436
|
+
host.arrowIcon = true;
|
|
5437
|
+
host.fillMode = 'flat';
|
|
5438
|
+
host.data = SORT.map(item => ({ ...item, textKey: localization.get(item.commandId) }));
|
|
5439
|
+
this.subs.add(host.itemClick.subscribe((e) => this.onItemClick(e)));
|
|
5440
|
+
host.title = localization.get(this.commandName);
|
|
5441
|
+
host.textField = 'textKey';
|
|
5442
|
+
}
|
|
5443
|
+
ngOnDestroy() {
|
|
5444
|
+
this.subs.unsubscribe();
|
|
5445
|
+
}
|
|
5446
|
+
onItemClick(item) {
|
|
5447
|
+
if (item.disabled) {
|
|
5448
|
+
return;
|
|
5449
|
+
}
|
|
5450
|
+
const dir = item.value;
|
|
5451
|
+
const options = {
|
|
5452
|
+
value: dir,
|
|
5453
|
+
sheet: false
|
|
5454
|
+
};
|
|
5455
|
+
this.spreadsheetService.spreadsheet.executeCommand({ command: 'SortCommand', options });
|
|
5456
|
+
}
|
|
5457
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpreadsheetSortDirective, deps: [{ token: i1$3.ToolBarDropDownButtonComponent }, { token: SpreadsheetLocalizationService }, { token: SpreadsheetService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5458
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: SpreadsheetSortDirective, isStandalone: true, selector: "[kendoSpreadsheetSort]", ngImport: i0 });
|
|
5459
|
+
}
|
|
5460
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpreadsheetSortDirective, decorators: [{
|
|
5461
|
+
type: Directive,
|
|
5462
|
+
args: [{
|
|
5463
|
+
selector: '[kendoSpreadsheetSort]',
|
|
5464
|
+
standalone: true
|
|
5465
|
+
}]
|
|
5466
|
+
}], ctorParameters: () => [{ type: i1$3.ToolBarDropDownButtonComponent }, { type: SpreadsheetLocalizationService }, { type: SpreadsheetService }] });
|
|
5467
|
+
|
|
4887
5468
|
/**
|
|
4888
5469
|
* Represents the [Kendo UI Spreadsheet component for Angular]({% slug overview_spreadsheet %}).
|
|
4889
5470
|
*
|
|
@@ -4906,11 +5487,13 @@ class SpreadsheetComponent {
|
|
|
4906
5487
|
dialogService;
|
|
4907
5488
|
popupService;
|
|
4908
5489
|
container;
|
|
5490
|
+
cdr;
|
|
4909
5491
|
formulaBarInputRef;
|
|
4910
5492
|
formulaCellInputRef;
|
|
4911
5493
|
nameBoxRef;
|
|
4912
5494
|
dialogContainer;
|
|
4913
5495
|
contextMenu;
|
|
5496
|
+
filterMenuTemplate;
|
|
4914
5497
|
hostClass = true;
|
|
4915
5498
|
role = 'application';
|
|
4916
5499
|
/**
|
|
@@ -4974,6 +5557,14 @@ class SpreadsheetComponent {
|
|
|
4974
5557
|
get sheetsInfo() {
|
|
4975
5558
|
return this._sheetsInfo;
|
|
4976
5559
|
}
|
|
5560
|
+
/**
|
|
5561
|
+
* @hidden
|
|
5562
|
+
*/
|
|
5563
|
+
expandedKeys = ['0'];
|
|
5564
|
+
/**
|
|
5565
|
+
* @hidden
|
|
5566
|
+
*/
|
|
5567
|
+
checkedKeys = [];
|
|
4977
5568
|
/**
|
|
4978
5569
|
* The number of columns in the document.
|
|
4979
5570
|
*
|
|
@@ -5030,38 +5621,46 @@ class SpreadsheetComponent {
|
|
|
5030
5621
|
*/
|
|
5031
5622
|
excel;
|
|
5032
5623
|
/**
|
|
5033
|
-
*
|
|
5624
|
+
* Fires when a value in the Spreadsheet is changed. Exposes the `SpreadsheetWidget` instance and the selected `Range` as event data.
|
|
5034
5625
|
*/
|
|
5035
5626
|
change = new EventEmitter();
|
|
5036
5627
|
/**
|
|
5037
|
-
*
|
|
5628
|
+
* Fires when the selected range format is changed from the UI. Exposes the `SpreadsheetWidget` instance and the selected `Range` as event data.
|
|
5038
5629
|
*/
|
|
5039
5630
|
formatChange = new EventEmitter();
|
|
5040
5631
|
/**
|
|
5041
|
-
*
|
|
5632
|
+
* Fires when the selection is changed by the end user. Exposes the `SpreadsheetWidget` instance and the selected `Range` as event data.
|
|
5042
5633
|
*/
|
|
5043
5634
|
selectionChange = new EventEmitter();
|
|
5044
5635
|
/**
|
|
5045
|
-
*
|
|
5636
|
+
* Fires when the end user clicks the Export to Excel toolbar button.
|
|
5046
5637
|
* The event is preventable and exposes the `Workbook` object, a `preventDefault` method
|
|
5047
5638
|
* (if invoked, the generated file will not be saved), and the `SpreadsheetWidget` instance.
|
|
5048
5639
|
*/
|
|
5049
5640
|
excelExport = new EventEmitter();
|
|
5050
5641
|
/**
|
|
5051
|
-
*
|
|
5642
|
+
* Fires when the end user clicks the Open toolbar button.
|
|
5052
5643
|
* The event is preventable and exposes the selected `File` or `Blob`, a `preventDefault` method
|
|
5053
5644
|
* (if invoked, the selected file will not be loaded), and the `SpreadsheetWidget` instance.
|
|
5054
5645
|
*/
|
|
5055
5646
|
excelImport = new EventEmitter();
|
|
5056
5647
|
/**
|
|
5057
|
-
*
|
|
5648
|
+
* Fires when the active sheet is about to change.
|
|
5058
5649
|
* The event exposes the new active `Sheet` and the `SpreadsheetWidget` instance.
|
|
5059
5650
|
*/
|
|
5060
5651
|
activeSheetChange = new EventEmitter();
|
|
5652
|
+
/**
|
|
5653
|
+
* Fires when a clipboard action (cut, copy, or paste) occurs in the Spreadsheet.
|
|
5654
|
+
*/
|
|
5655
|
+
clipboard = new EventEmitter();
|
|
5061
5656
|
formulaFxIcon = formulaFxIcon;
|
|
5062
5657
|
folderOpenIcon = folderOpenIcon;
|
|
5063
5658
|
downloadIcon = downloadIcon;
|
|
5659
|
+
searchIcon = searchIcon;
|
|
5064
5660
|
selectedMenuItem;
|
|
5661
|
+
rangeFilterValuesList = [];
|
|
5662
|
+
sortAscSmallIcon = sortAscSmallIcon;
|
|
5663
|
+
sortDescSmallIcon = sortDescSmallIcon;
|
|
5065
5664
|
get spreadsheetWidget() {
|
|
5066
5665
|
return this.spreadsheetService.spreadsheet;
|
|
5067
5666
|
}
|
|
@@ -5074,13 +5673,31 @@ class SpreadsheetComponent {
|
|
|
5074
5673
|
*/
|
|
5075
5674
|
licenseMessage;
|
|
5076
5675
|
contextMenuItems = [];
|
|
5676
|
+
sortMenuItems = [];
|
|
5677
|
+
conditionExpanded = false;
|
|
5678
|
+
valueExpanded = false;
|
|
5679
|
+
filterConditionsList = {};
|
|
5680
|
+
conditionValue = '';
|
|
5681
|
+
set selectedCondition(value) {
|
|
5682
|
+
if (this._selectedCondition?.type !== value.type) {
|
|
5683
|
+
this.conditionValue = '';
|
|
5684
|
+
}
|
|
5685
|
+
this._selectedCondition = value;
|
|
5686
|
+
}
|
|
5687
|
+
get selectedCondition() {
|
|
5688
|
+
return this._selectedCondition;
|
|
5689
|
+
}
|
|
5690
|
+
_selectedCondition;
|
|
5077
5691
|
_sheetsInfo;
|
|
5078
5692
|
_activeSheet;
|
|
5079
5693
|
_menuItems;
|
|
5080
5694
|
currentRange;
|
|
5081
5695
|
subs = new Subscription();
|
|
5696
|
+
filterMenuOpened = false;
|
|
5697
|
+
currentFilterOptions = null;
|
|
5082
5698
|
popupRef;
|
|
5083
|
-
|
|
5699
|
+
popupPositionChangeSub;
|
|
5700
|
+
constructor(ngZone, intl, host, localization, spreadsheetService, toolsService, errorService, dialogService, popupService, container, cdr) {
|
|
5084
5701
|
this.ngZone = ngZone;
|
|
5085
5702
|
this.intl = intl;
|
|
5086
5703
|
this.host = host;
|
|
@@ -5091,6 +5708,7 @@ class SpreadsheetComponent {
|
|
|
5091
5708
|
this.dialogService = dialogService;
|
|
5092
5709
|
this.popupService = popupService;
|
|
5093
5710
|
this.container = container;
|
|
5711
|
+
this.cdr = cdr;
|
|
5094
5712
|
const isValid = validatePackage(packageMetadata);
|
|
5095
5713
|
this.licenseMessage = getLicenseMessage(packageMetadata);
|
|
5096
5714
|
this.showLicenseWatermark = shouldShowValidationUI(isValid);
|
|
@@ -5137,25 +5755,36 @@ class SpreadsheetComponent {
|
|
|
5137
5755
|
spreadsheet.view.bind('update', this.updateState);
|
|
5138
5756
|
spreadsheet.view.bind('message', this.onMessage);
|
|
5139
5757
|
spreadsheet.bind('contextmenu', this.onContextMenu.bind(this));
|
|
5758
|
+
spreadsheet.bind('copy', (e) => { this.onClipboardEvent(e, 'copy'); });
|
|
5759
|
+
spreadsheet.bind('cut', (e) => { this.onClipboardEvent(e, 'cut'); });
|
|
5760
|
+
spreadsheet.bind('paste', (e) => { this.onClipboardEvent(e, 'paste'); });
|
|
5140
5761
|
const sheet = spreadsheet.activeSheet();
|
|
5141
5762
|
if (sheet) {
|
|
5142
5763
|
this.updateState({ range: sheet.range(sheet.activeCell()) });
|
|
5143
5764
|
}
|
|
5144
5765
|
this.updateActiveSheet(this.activeSheet || spreadsheet?.activeSheet()?.name());
|
|
5145
5766
|
this.configureSheets(spreadsheet);
|
|
5767
|
+
this.spreadsheetService.componentInitialized.next();
|
|
5146
5768
|
});
|
|
5147
5769
|
this.subs.add(this.spreadsheetService.sheetsChanged.subscribe(this.onSheetsChanged.bind(this)));
|
|
5148
5770
|
this.subs.add(this.spreadsheetService.activeSheetChanged.subscribe(this.onActiveSheetChanged.bind(this)));
|
|
5149
5771
|
this.subs.add(this.spreadsheetService.selectionChanged.subscribe(range => {
|
|
5150
5772
|
this.currentRange = range;
|
|
5151
|
-
|
|
5152
|
-
this.popupRef.close();
|
|
5153
|
-
this.popupRef = null;
|
|
5154
|
-
}
|
|
5773
|
+
this.closePopup();
|
|
5155
5774
|
}));
|
|
5156
5775
|
this.spreadsheetService.dialogContainer = this.dialogContainer;
|
|
5157
5776
|
});
|
|
5158
5777
|
this.registerEditors();
|
|
5778
|
+
this.spreadsheetService.spreadsheetComponent = this;
|
|
5779
|
+
this.sortMenuItems = [{
|
|
5780
|
+
text: this.messageFor('sortAsc'),
|
|
5781
|
+
svgIcon: this.sortAscSmallIcon,
|
|
5782
|
+
icon: 'sort-asc-small'
|
|
5783
|
+
}, {
|
|
5784
|
+
text: this.messageFor('sortDesc'),
|
|
5785
|
+
svgIcon: this.sortDescSmallIcon,
|
|
5786
|
+
icon: 'sort-desc-small'
|
|
5787
|
+
}];
|
|
5159
5788
|
}
|
|
5160
5789
|
ngOnChanges(changes) {
|
|
5161
5790
|
const dynamicOptions = [
|
|
@@ -5198,6 +5827,18 @@ class SpreadsheetComponent {
|
|
|
5198
5827
|
this.contextMenuItems = this.contextMenuItemsForTarget(targetType, e.showUnhide, e.showUnmerge);
|
|
5199
5828
|
this.contextMenu.show({ top: e.originalEvent.pageY, left: e.originalEvent.pageX });
|
|
5200
5829
|
}
|
|
5830
|
+
/**
|
|
5831
|
+
* @hidden
|
|
5832
|
+
*/
|
|
5833
|
+
isChecked = (dataItem) => {
|
|
5834
|
+
if (this.containsItem(dataItem)) {
|
|
5835
|
+
return "checked";
|
|
5836
|
+
}
|
|
5837
|
+
if (this.isIndeterminate(dataItem.items)) {
|
|
5838
|
+
return "indeterminate";
|
|
5839
|
+
}
|
|
5840
|
+
return "none";
|
|
5841
|
+
};
|
|
5201
5842
|
/**
|
|
5202
5843
|
* @hidden
|
|
5203
5844
|
*/
|
|
@@ -5301,11 +5942,116 @@ class SpreadsheetComponent {
|
|
|
5301
5942
|
this.selectedMenuItem = this.menuItems.find(item => item.active);
|
|
5302
5943
|
}
|
|
5303
5944
|
}
|
|
5945
|
+
/**
|
|
5946
|
+
* @hidden
|
|
5947
|
+
*/
|
|
5948
|
+
onToggle(expanded, filterType) {
|
|
5949
|
+
this[`${filterType}Expanded`] = expanded;
|
|
5950
|
+
if (expanded) {
|
|
5951
|
+
const otherFilterType = filterType === 'condition' ? 'value' : 'condition';
|
|
5952
|
+
this[`${otherFilterType}Expanded`] = false;
|
|
5953
|
+
}
|
|
5954
|
+
this.cdr.detectChanges();
|
|
5955
|
+
}
|
|
5956
|
+
/**
|
|
5957
|
+
* @hidden
|
|
5958
|
+
*/
|
|
5959
|
+
filterApply(filterType) {
|
|
5960
|
+
if (!this.currentFilterOptions) {
|
|
5961
|
+
return;
|
|
5962
|
+
}
|
|
5963
|
+
let filterData;
|
|
5964
|
+
if (filterType === 'value') {
|
|
5965
|
+
const checkedValues = this.checkedKeys
|
|
5966
|
+
.filter(key => key !== this.messageFor('filterMenuAll'))
|
|
5967
|
+
.map(key => {
|
|
5968
|
+
const item = this.findItemByText(this.rangeFilterValuesList, key);
|
|
5969
|
+
return item ? item.unformattedValue : key;
|
|
5970
|
+
});
|
|
5971
|
+
const hasBlanks = checkedValues.some(v => v === undefined || v === null);
|
|
5972
|
+
const nonBlankValues = checkedValues.filter(v => v !== undefined && v !== null);
|
|
5973
|
+
filterData = {
|
|
5974
|
+
blanks: hasBlanks,
|
|
5975
|
+
values: nonBlankValues.length > 0 ? nonBlankValues : undefined
|
|
5976
|
+
};
|
|
5977
|
+
}
|
|
5978
|
+
else if (this.selectedCondition?.comparer !== 'none' && this.conditionValue !== null && this.conditionValue !== undefined) {
|
|
5979
|
+
filterData = {
|
|
5980
|
+
criteria: [{
|
|
5981
|
+
operator: this.selectedCondition.comparer,
|
|
5982
|
+
value: this.conditionValue
|
|
5983
|
+
}]
|
|
5984
|
+
};
|
|
5985
|
+
}
|
|
5986
|
+
else if (this.selectedCondition?.comparer === 'none') {
|
|
5987
|
+
this.spreadsheetWidget.executeCommand({
|
|
5988
|
+
command: 'ClearFilterCommand',
|
|
5989
|
+
options: { column: this.currentFilterOptions?.column }
|
|
5990
|
+
});
|
|
5991
|
+
this.closePopup();
|
|
5992
|
+
return;
|
|
5993
|
+
}
|
|
5994
|
+
if (filterData) {
|
|
5995
|
+
const commandOptions = {
|
|
5996
|
+
column: this.currentFilterOptions.column,
|
|
5997
|
+
operatingRange: this.currentFilterOptions.range
|
|
5998
|
+
};
|
|
5999
|
+
if (filterType === 'value') {
|
|
6000
|
+
commandOptions.valueFilter = filterData;
|
|
6001
|
+
}
|
|
6002
|
+
else {
|
|
6003
|
+
commandOptions.customFilter = filterData;
|
|
6004
|
+
}
|
|
6005
|
+
this.spreadsheetWidget.executeCommand({
|
|
6006
|
+
command: 'ApplyFilterCommand',
|
|
6007
|
+
options: commandOptions
|
|
6008
|
+
});
|
|
6009
|
+
}
|
|
6010
|
+
this.closePopup();
|
|
6011
|
+
}
|
|
6012
|
+
/**
|
|
6013
|
+
* @hidden
|
|
6014
|
+
*/
|
|
6015
|
+
filterClear() {
|
|
6016
|
+
this.spreadsheetWidget.executeCommand({
|
|
6017
|
+
command: 'ClearFilterCommand',
|
|
6018
|
+
options: { column: this.currentFilterOptions?.column }
|
|
6019
|
+
});
|
|
6020
|
+
this.closePopup();
|
|
6021
|
+
}
|
|
6022
|
+
/**
|
|
6023
|
+
* @hidden
|
|
6024
|
+
*/
|
|
6025
|
+
onSortItemClick(item) {
|
|
6026
|
+
const dir = item.text === this.messageFor('sortAsc') ? 'asc' : 'desc';
|
|
6027
|
+
const noHeaderRange = this.currentFilterOptions?.range?.resize({ top: 1 });
|
|
6028
|
+
const options = {
|
|
6029
|
+
value: dir,
|
|
6030
|
+
sheet: false,
|
|
6031
|
+
operatingRange: noHeaderRange,
|
|
6032
|
+
column: this.currentFilterOptions?.column
|
|
6033
|
+
};
|
|
6034
|
+
this.spreadsheetWidget.executeCommand({ command: 'SortCommand', options });
|
|
6035
|
+
}
|
|
6036
|
+
/**
|
|
6037
|
+
* @hidden
|
|
6038
|
+
*/
|
|
6039
|
+
closePopup() {
|
|
6040
|
+
if (this.popupRef) {
|
|
6041
|
+
this.popupRef.close();
|
|
6042
|
+
this.popupRef = null;
|
|
6043
|
+
}
|
|
6044
|
+
if (this.popupPositionChangeSub) {
|
|
6045
|
+
this.popupPositionChangeSub.unsubscribe();
|
|
6046
|
+
this.popupPositionChangeSub = null;
|
|
6047
|
+
}
|
|
6048
|
+
}
|
|
5304
6049
|
onChange = (e) => {
|
|
5305
6050
|
hasObservers(this.change) && this.change.emit(e);
|
|
5306
6051
|
this.spreadsheetService.selectionChanged.next(e.range);
|
|
5307
6052
|
};
|
|
5308
6053
|
onSelectionChange = (e) => {
|
|
6054
|
+
this.closePopup();
|
|
5309
6055
|
hasObservers(this.selectionChange) && this.selectionChange.emit(e);
|
|
5310
6056
|
this.spreadsheetService.selectionChanged.next(e.range);
|
|
5311
6057
|
};
|
|
@@ -5341,6 +6087,25 @@ class SpreadsheetComponent {
|
|
|
5341
6087
|
this.updateActiveSheet(this.spreadsheetService.activeSheet);
|
|
5342
6088
|
});
|
|
5343
6089
|
}
|
|
6090
|
+
onClipboardEvent(event, type) {
|
|
6091
|
+
if (hasObservers(this.clipboard)) {
|
|
6092
|
+
this.ngZone.runOutsideAngular(() => {
|
|
6093
|
+
setTimeout(() => {
|
|
6094
|
+
const { preventDefault, isDefaultPrevented, clipboardContent, range, sender } = event;
|
|
6095
|
+
const workbookClipboardContent = clipboardContent || this.spreadsheetWidget.workbook._clipboard._internalContent;
|
|
6096
|
+
const eventArgs = {
|
|
6097
|
+
type,
|
|
6098
|
+
clipboardContent: { data: workbookClipboardContent.data, mergedCells: workbookClipboardContent.mergedCells },
|
|
6099
|
+
range,
|
|
6100
|
+
sender,
|
|
6101
|
+
preventDefault: preventDefault.bind(event),
|
|
6102
|
+
isDefaultPrevented: isDefaultPrevented.bind(event)
|
|
6103
|
+
};
|
|
6104
|
+
this.ngZone.run(() => this.clipboard.emit(eventArgs));
|
|
6105
|
+
});
|
|
6106
|
+
});
|
|
6107
|
+
}
|
|
6108
|
+
}
|
|
5344
6109
|
get options() {
|
|
5345
6110
|
return {
|
|
5346
6111
|
activeSheet: this.activeSheet,
|
|
@@ -5366,12 +6131,17 @@ class SpreadsheetComponent {
|
|
|
5366
6131
|
formulaCellInputRef: { current: this.formulaCellInputRef.current },
|
|
5367
6132
|
nameBoxRef: { current: this.nameBoxRef.current },
|
|
5368
6133
|
getIconHTMLString: (options) => {
|
|
6134
|
+
if (typeof options === 'string' && options === 'k-i-caret-alt-down') {
|
|
6135
|
+
//the caret-alt-down filter button icon has different config coming from the common package and has to be handled separately
|
|
6136
|
+
options = { iconName: 'caret-alt-down', svgIcon: caretAltDownIcon };
|
|
6137
|
+
}
|
|
5369
6138
|
const iconWrapper = this.container.createComponent(IconWrapperComponent);
|
|
5370
6139
|
iconWrapper.instance.name = options.iconName;
|
|
5371
6140
|
iconWrapper.instance.svgIcon = options.svgIcon;
|
|
5372
6141
|
iconWrapper.changeDetectorRef.detectChanges();
|
|
5373
6142
|
return iconWrapper.instance.element.nativeElement;
|
|
5374
|
-
}
|
|
6143
|
+
},
|
|
6144
|
+
createFilterMenu: this.createFilterMenu.bind(this)
|
|
5375
6145
|
};
|
|
5376
6146
|
}
|
|
5377
6147
|
contextMenuItemsForTarget(target, unhide, unmerge) {
|
|
@@ -5546,8 +6316,7 @@ class SpreadsheetComponent {
|
|
|
5546
6316
|
registerEditor('_validation_list', () => {
|
|
5547
6317
|
return {
|
|
5548
6318
|
edit: (options) => {
|
|
5549
|
-
this.
|
|
5550
|
-
this.popupRef = null;
|
|
6319
|
+
this.closePopup();
|
|
5551
6320
|
this.popupRef = this.popupService.open({
|
|
5552
6321
|
anchor: options.view.element.querySelector('.k-spreadsheet-editor-button'),
|
|
5553
6322
|
content: ListEditorComponent,
|
|
@@ -5557,16 +6326,14 @@ class SpreadsheetComponent {
|
|
|
5557
6326
|
});
|
|
5558
6327
|
const list = this.popupRef.content.instance;
|
|
5559
6328
|
list.itemSelect.subscribe((item) => {
|
|
5560
|
-
this.
|
|
5561
|
-
this.popupRef = null;
|
|
6329
|
+
this.closePopup();
|
|
5562
6330
|
const itemValue = item.value;
|
|
5563
6331
|
if (isPresent(itemValue)) {
|
|
5564
6332
|
options.callback(itemValue);
|
|
5565
6333
|
}
|
|
5566
6334
|
});
|
|
5567
6335
|
list.close.subscribe(() => {
|
|
5568
|
-
this.
|
|
5569
|
-
this.popupRef = null;
|
|
6336
|
+
this.closePopup();
|
|
5570
6337
|
});
|
|
5571
6338
|
const items = options.validation.from.value;
|
|
5572
6339
|
const data = [];
|
|
@@ -5585,8 +6352,7 @@ class SpreadsheetComponent {
|
|
|
5585
6352
|
registerEditor('_validation_date', () => {
|
|
5586
6353
|
return {
|
|
5587
6354
|
edit: (options) => {
|
|
5588
|
-
this.
|
|
5589
|
-
this.popupRef = null;
|
|
6355
|
+
this.closePopup();
|
|
5590
6356
|
this.popupRef = this.popupService.open({
|
|
5591
6357
|
anchor: options.view.element.querySelector('.k-spreadsheet-editor-button'),
|
|
5592
6358
|
content: CalendarComponent,
|
|
@@ -5595,8 +6361,7 @@ class SpreadsheetComponent {
|
|
|
5595
6361
|
});
|
|
5596
6362
|
const calendar = this.popupRef.content.instance;
|
|
5597
6363
|
calendar.valueChange.subscribe((value) => {
|
|
5598
|
-
this.
|
|
5599
|
-
this.popupRef = null;
|
|
6364
|
+
this.closePopup();
|
|
5600
6365
|
if (!options.range.format()) {
|
|
5601
6366
|
options.range.format('yyyy-mm-dd');
|
|
5602
6367
|
}
|
|
@@ -5695,12 +6460,6 @@ class SpreadsheetComponent {
|
|
|
5695
6460
|
});
|
|
5696
6461
|
});
|
|
5697
6462
|
}
|
|
5698
|
-
closePopup() {
|
|
5699
|
-
if (this.popupRef) {
|
|
5700
|
-
this.popupRef.close();
|
|
5701
|
-
this.popupRef = null;
|
|
5702
|
-
}
|
|
5703
|
-
}
|
|
5704
6463
|
isValidFormula(validation) {
|
|
5705
6464
|
const formula = calc.runtime.Formula;
|
|
5706
6465
|
return validation instanceof formula && rowAndColPresent(validation.value);
|
|
@@ -5708,8 +6467,196 @@ class SpreadsheetComponent {
|
|
|
5708
6467
|
createDate(validation, sheet) {
|
|
5709
6468
|
return new Date(serialToDate(isPresent(sheet) ? sheet.range(validation.value.row, validation.value.col).value() : validation));
|
|
5710
6469
|
}
|
|
5711
|
-
|
|
5712
|
-
|
|
6470
|
+
createFilterMenu(options) {
|
|
6471
|
+
this.closePopup();
|
|
6472
|
+
this.currentFilterOptions = options;
|
|
6473
|
+
if (this.filterMenuOpened) {
|
|
6474
|
+
this.filterMenuOpened = false;
|
|
6475
|
+
return {
|
|
6476
|
+
bind: () => { },
|
|
6477
|
+
openFor: () => { },
|
|
6478
|
+
close: () => { },
|
|
6479
|
+
destroy: () => { }
|
|
6480
|
+
};
|
|
6481
|
+
}
|
|
6482
|
+
this.ngZone.onStable.pipe(take(1)).subscribe(() => {
|
|
6483
|
+
const childItems = this.extractColumnFilterValues(options.range, options.column);
|
|
6484
|
+
const parentItem = {
|
|
6485
|
+
text: this.messageFor('filterMenuAll'),
|
|
6486
|
+
value: null,
|
|
6487
|
+
checked: childItems.every(i => i.checked),
|
|
6488
|
+
items: childItems
|
|
6489
|
+
};
|
|
6490
|
+
this.rangeFilterValuesList = [parentItem];
|
|
6491
|
+
this.checkedKeys = [parentItem, ...childItems].filter(i => i.checked).map(i => i.text);
|
|
6492
|
+
});
|
|
6493
|
+
this.filterConditionsList = [
|
|
6494
|
+
{ type: 'none', comparerType: 'none', comparer: 'none', text: this.messageFor('filterNoneOperator') },
|
|
6495
|
+
{ type: 'string', comparerType: 'string_contains', comparer: 'contains', text: this.messageFor('filterContainsOperator') },
|
|
6496
|
+
{ type: 'string', comparerType: 'string_doesnotcontain', comparer: 'doesnotcontain', text: this.messageFor('filterNotContainsOperator') },
|
|
6497
|
+
{ type: 'string', comparerType: 'string_startswith', comparer: 'startswith', text: this.messageFor('filterStartsWithOperator') },
|
|
6498
|
+
{ type: 'string', comparerType: 'string_endswith', comparer: 'endswith', text: this.messageFor('filterEndsWithOperator') },
|
|
6499
|
+
{ type: 'string', comparerType: 'string_matches', comparer: 'eq', text: this.messageFor('filterMatchesOperator') },
|
|
6500
|
+
{ type: 'string', comparerType: 'string_doesnotmatch', comparer: 'neq', text: this.messageFor('filterNotMatchesOperator') },
|
|
6501
|
+
{ type: 'date', comparerType: 'date_eq', comparer: 'eq', text: this.messageFor('filterDateEqOperator') },
|
|
6502
|
+
{ type: 'date', comparerType: 'date_neq', comparer: 'neq', text: this.messageFor('filterDateNotEqOperator') },
|
|
6503
|
+
{ type: 'date', comparerType: 'date_lt', comparer: 'lt', text: this.messageFor('filterBeforeOperator') },
|
|
6504
|
+
{ type: 'date', comparerType: 'date_gt', comparer: 'gt', text: this.messageFor('filterAfterOperator') },
|
|
6505
|
+
{ type: 'number', comparerType: 'number_eq', comparer: 'eq', text: this.messageFor('filterEqOperator') },
|
|
6506
|
+
{ type: 'number', comparerType: 'number_neq', comparer: 'neq', text: this.messageFor('filterNotEqOperator') },
|
|
6507
|
+
{ type: 'number', comparerType: 'number_gte', comparer: 'gte', text: this.messageFor('filterGteOperator') },
|
|
6508
|
+
{ type: 'number', comparerType: 'number_gt', comparer: 'gt', text: this.messageFor('filterGtOperator') },
|
|
6509
|
+
{ type: 'number', comparerType: 'number_lte', comparer: 'lte', text: this.messageFor('filterLteOperator') },
|
|
6510
|
+
{ type: 'number', comparerType: 'number_lt', comparer: 'lt', text: this.messageFor('filterLtOperator') }
|
|
6511
|
+
];
|
|
6512
|
+
const currentSheetFilter = this.spreadsheetWidget.activeSheet().filter();
|
|
6513
|
+
const columnFilter = currentSheetFilter?.columns?.find((col) => col.index === options.column);
|
|
6514
|
+
if (columnFilter) {
|
|
6515
|
+
const filter = columnFilter.filter.toJSON();
|
|
6516
|
+
if (filter.filter === 'custom') {
|
|
6517
|
+
const valueType = typeof filter.criteria[0].value === 'object' ? 'date' : typeof filter.criteria[0].value;
|
|
6518
|
+
this.selectedCondition = this.filterConditionsList.find(c => (c.comparer === filter?.criteria?.[0]?.operator) && (c.type === valueType));
|
|
6519
|
+
this.conditionValue = filter?.criteria?.[0]?.value;
|
|
6520
|
+
}
|
|
6521
|
+
else {
|
|
6522
|
+
this.checkedKeys = filter.values;
|
|
6523
|
+
}
|
|
6524
|
+
}
|
|
6525
|
+
else {
|
|
6526
|
+
this.selectedCondition = this.filterConditionsList[0];
|
|
6527
|
+
}
|
|
6528
|
+
return {
|
|
6529
|
+
bind: (_eventName, _handler) => { },
|
|
6530
|
+
openFor: (anchor) => {
|
|
6531
|
+
this.popupRef = this.popupService.open({
|
|
6532
|
+
anchor,
|
|
6533
|
+
content: this.filterMenuTemplate,
|
|
6534
|
+
popupAlign: { horizontal: 'left', vertical: 'top' },
|
|
6535
|
+
anchorAlign: { horizontal: 'left', vertical: 'bottom' },
|
|
6536
|
+
popupClass: 'k-spreadsheet-filter-menu k-column-menu k-group k-reset'
|
|
6537
|
+
});
|
|
6538
|
+
this.popupPositionChangeSub = this.popupRef.popupPositionChange.subscribe(({ offset }) => {
|
|
6539
|
+
if (offset.top === 0 && offset.left === 0) {
|
|
6540
|
+
this.closePopup();
|
|
6541
|
+
this.filterMenuOpened = false;
|
|
6542
|
+
}
|
|
6543
|
+
});
|
|
6544
|
+
this.filterMenuOpened = true;
|
|
6545
|
+
},
|
|
6546
|
+
close: () => { this.closePopup(); this.filterMenuOpened = false; },
|
|
6547
|
+
destroy: () => { this.closePopup(); this.filterMenuOpened = false; }
|
|
6548
|
+
};
|
|
6549
|
+
}
|
|
6550
|
+
extractColumnFilterValues(range, column) {
|
|
6551
|
+
const results = [];
|
|
6552
|
+
const sheet = range.sheet();
|
|
6553
|
+
const columnRange = range.column(column).resize({ top: 1 });
|
|
6554
|
+
const blanksMessage = this.localization.get('blankValues');
|
|
6555
|
+
columnRange.forEachCell((rowIndex, _colIndex, cellData) => {
|
|
6556
|
+
const isVisible = !sheet.isHiddenRow(rowIndex);
|
|
6557
|
+
let cellValue = cellData.value;
|
|
6558
|
+
const unformattedValue = cellValue;
|
|
6559
|
+
let displayText;
|
|
6560
|
+
let valueType;
|
|
6561
|
+
if (cellValue === undefined) {
|
|
6562
|
+
valueType = 'blank';
|
|
6563
|
+
}
|
|
6564
|
+
else if (cellData.format) {
|
|
6565
|
+
valueType = formatting.type(cellValue, cellData.format);
|
|
6566
|
+
}
|
|
6567
|
+
else {
|
|
6568
|
+
valueType = typeof cellValue;
|
|
6569
|
+
}
|
|
6570
|
+
if (cellValue !== null && cellData.format) {
|
|
6571
|
+
displayText = formatting.text(cellValue, cellData.format);
|
|
6572
|
+
}
|
|
6573
|
+
else {
|
|
6574
|
+
displayText = valueType === 'blank' ? blanksMessage : cellValue;
|
|
6575
|
+
}
|
|
6576
|
+
if (valueType === 'percent' || valueType === 'currency') {
|
|
6577
|
+
valueType = 'number';
|
|
6578
|
+
}
|
|
6579
|
+
if (valueType === 'date') {
|
|
6580
|
+
cellValue = serialToDate(cellValue);
|
|
6581
|
+
}
|
|
6582
|
+
results.push({
|
|
6583
|
+
dataType: valueType,
|
|
6584
|
+
value: cellValue,
|
|
6585
|
+
text: displayText,
|
|
6586
|
+
checked: isVisible,
|
|
6587
|
+
unformattedValue
|
|
6588
|
+
});
|
|
6589
|
+
});
|
|
6590
|
+
const uniqueValuesSorted = this.removeDuplicateValues(results).sort(this.compareFilterValues);
|
|
6591
|
+
return uniqueValuesSorted;
|
|
6592
|
+
}
|
|
6593
|
+
removeDuplicateValues(values) {
|
|
6594
|
+
const uniqueMap = new Map();
|
|
6595
|
+
for (const item of values) {
|
|
6596
|
+
const key = `${item.dataType}:${item.value}`;
|
|
6597
|
+
if (!uniqueMap.has(key)) {
|
|
6598
|
+
uniqueMap.set(key, item);
|
|
6599
|
+
}
|
|
6600
|
+
}
|
|
6601
|
+
return Array.from(uniqueMap.values());
|
|
6602
|
+
}
|
|
6603
|
+
compareFilterValues(a, b) {
|
|
6604
|
+
if (a.dataType === b.dataType) {
|
|
6605
|
+
switch (a.dataType) {
|
|
6606
|
+
case 'number':
|
|
6607
|
+
return a.value - b.value;
|
|
6608
|
+
case 'date':
|
|
6609
|
+
return a.value.getTime() - b.value.getTime();
|
|
6610
|
+
case 'blank':
|
|
6611
|
+
return 0;
|
|
6612
|
+
default:
|
|
6613
|
+
return String(a.value).localeCompare(String(b.value));
|
|
6614
|
+
}
|
|
6615
|
+
}
|
|
6616
|
+
if (a.dataType === 'blank')
|
|
6617
|
+
return -1;
|
|
6618
|
+
if (b.dataType === 'blank')
|
|
6619
|
+
return 1;
|
|
6620
|
+
if (a.dataType === 'number')
|
|
6621
|
+
return -1;
|
|
6622
|
+
if (b.dataType === 'number')
|
|
6623
|
+
return 1;
|
|
6624
|
+
if (a.dataType === 'date')
|
|
6625
|
+
return -1;
|
|
6626
|
+
if (b.dataType === 'date')
|
|
6627
|
+
return 1;
|
|
6628
|
+
return 0;
|
|
6629
|
+
}
|
|
6630
|
+
containsItem(item) {
|
|
6631
|
+
return this.checkedKeys.indexOf(item.text) > -1;
|
|
6632
|
+
}
|
|
6633
|
+
findItemByText(items, text) {
|
|
6634
|
+
for (const item of items) {
|
|
6635
|
+
if (item.text === text) {
|
|
6636
|
+
return item;
|
|
6637
|
+
}
|
|
6638
|
+
if (item.items && item.items.length > 0) {
|
|
6639
|
+
const found = this.findItemByText(item.items, text);
|
|
6640
|
+
if (found) {
|
|
6641
|
+
return found;
|
|
6642
|
+
}
|
|
6643
|
+
}
|
|
6644
|
+
}
|
|
6645
|
+
return null;
|
|
6646
|
+
}
|
|
6647
|
+
isIndeterminate(items = []) {
|
|
6648
|
+
let idx = 0;
|
|
6649
|
+
let item;
|
|
6650
|
+
while ((item = items[idx])) {
|
|
6651
|
+
if (this.isIndeterminate(item.items) || this.containsItem(item)) {
|
|
6652
|
+
return true;
|
|
6653
|
+
}
|
|
6654
|
+
idx += 1;
|
|
6655
|
+
}
|
|
6656
|
+
return false;
|
|
6657
|
+
}
|
|
6658
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpreadsheetComponent, deps: [{ token: i0.NgZone }, { token: i1$4.IntlService }, { token: i0.ElementRef }, { token: i1.LocalizationService }, { token: SpreadsheetService }, { token: SpreadsheetToolsService }, { token: ErrorHandlingService }, { token: i1$2.DialogService }, { token: i1$1.PopupService }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
6659
|
+
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: [
|
|
5713
6660
|
SpreadsheetLocalizationService,
|
|
5714
6661
|
SpreadsheetService,
|
|
5715
6662
|
{
|
|
@@ -5723,7 +6670,7 @@ class SpreadsheetComponent {
|
|
|
5723
6670
|
SpreadsheetToolsService,
|
|
5724
6671
|
PopupService,
|
|
5725
6672
|
ErrorHandlingService
|
|
5726
|
-
], 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 }], exportAs: ["kendo-spreadsheet"], usesOnChanges: true, ngImport: i0, template: `
|
|
6673
|
+
], 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: `
|
|
5727
6674
|
<ng-container
|
|
5728
6675
|
kendoSpreadsheetLocalizedMessages
|
|
5729
6676
|
i18n-background="kendo.spreadsheet.background|The title of the tool that changes the text background color."
|
|
@@ -5947,7 +6894,65 @@ class SpreadsheetComponent {
|
|
|
5947
6894
|
i18n-sheetMoveRight="kendo.spreadsheet.sheetMoveRight|The text of the Sheet menu Move Right option."
|
|
5948
6895
|
sheetMoveRight="Move Right"
|
|
5949
6896
|
i18n-invalidNameError="kendo.spreadsheet.invalidNameError|The content of the dialog that warns about invalid name input."
|
|
5950
|
-
invalidNameError="{{ 'Invalid name: {inputValue}' }}"
|
|
6897
|
+
invalidNameError="{{ 'Invalid name: {inputValue}' }}"
|
|
6898
|
+
i18n-cantSortMixedCells="kendo.spreadsheet.cantSortMixedCells|The content of the dialog that warns about sorting range containing cells of mixed shapes."
|
|
6899
|
+
cantSortMixedCells="Cannot sort range containing cells of mixed shapes"
|
|
6900
|
+
i18n-cantSortNullRef="kendo.spreadsheet.cantSortNullRef|The content of the dialog that warns about sorting incorrect (empty) range."
|
|
6901
|
+
cantSortNullRef="Cannot sort empty selection"
|
|
6902
|
+
i18n-filterApply="kendo.spreadsheet.filterApply|The text of the **Apply** button in the filter menu."
|
|
6903
|
+
filterApply="Apply"
|
|
6904
|
+
i18n-filterClear="kendo.spreadsheet.filterClear|The text of the **Clear** button in the filter menu."
|
|
6905
|
+
filterClear="Clear"
|
|
6906
|
+
i18n-filterMenuAll="kendo.spreadsheet.filterMenuAll|The text of the **All** grouping item in the filter menu."
|
|
6907
|
+
filterMenuAll="All"
|
|
6908
|
+
i18n-blankValues="kendo.spreadsheet.blankValues|The text for the blank (empty) values."
|
|
6909
|
+
blankValues="Blank"
|
|
6910
|
+
i18n-filterNoneOperator="kendo.spreadsheet.filterNoneOperator|The text for the **none** filter operator."
|
|
6911
|
+
filterNoneOperator="None"
|
|
6912
|
+
i18n-filterContainsOperator="kendo.spreadsheet.filterContainsOperator|The text of the **contains** filter operator"
|
|
6913
|
+
filterContainsOperator="Text contains"
|
|
6914
|
+
i18n-filterNotContainsOperator="kendo.spreadsheet.filterNotContainsOperator|The text of the **does not contain** filter operator"
|
|
6915
|
+
filterNotContainsOperator="Text does not contain"
|
|
6916
|
+
i18n-filterStartsWithOperator="kendo.spreadsheet.filterStartsWithOperator|The text of the **starts with** filter operator"
|
|
6917
|
+
filterStartsWithOperator="Text starts with"
|
|
6918
|
+
i18n-filterEndsWithOperator="kendo.spreadsheet.filterEndsWithOperator|The text of the **ends with** filter operator"
|
|
6919
|
+
filterEndsWithOperator="Text ends with"
|
|
6920
|
+
i18n-filterMatchesOperator="kendo.spreadsheet.filterMatchesOperator|The text of the **matches** filter operator"
|
|
6921
|
+
filterMatchesOperator="Text matches"
|
|
6922
|
+
i18n-filterNotMatchesOperator="kendo.spreadsheet.filterNotMatchesOperator|The text of the **does not match** filter operator"
|
|
6923
|
+
filterNotMatchesOperator="Text does not match"
|
|
6924
|
+
i18n-filterDateEqOperator="kendo.spreadsheet.filterDateEqOperator|The text of the **Date is** filter operator"
|
|
6925
|
+
filterDateEqOperator="Date is"
|
|
6926
|
+
i18n-filterDateNotEqOperator="kendo.spreadsheet.filterDateNotEqOperator|The text of the **Date is not** filter operator"
|
|
6927
|
+
filterDateNotEqOperator="Date is not"
|
|
6928
|
+
i18n-filterBeforeOperator="kendo.spreadsheet.filterBeforeOperator|The text of the **Date is before** filter operator"
|
|
6929
|
+
filterBeforeOperator="Date is before"
|
|
6930
|
+
i18n-filterAfterOperator="kendo.spreadsheet.filterAfterOperator|The text of the **Date is after** filter operator"
|
|
6931
|
+
filterAfterOperator="Date is after"
|
|
6932
|
+
i18n-filterEqOperator="kendo.spreadsheet.filterEqOperator|Sets the text for the **Equal (Is equal to)** filter operator."
|
|
6933
|
+
filterEqOperator="Is equal to"
|
|
6934
|
+
i18n-filterNotEqOperator="kendo.spreadsheet.filterNotEqOperator|Sets the text for the **Not equal (Is not equal to)** filter operator."
|
|
6935
|
+
filterNotEqOperator="Is not equal to"
|
|
6936
|
+
i18n-filterGteOperator="kendo.spreadsheet.filterGteOperator|The text of the **greater than or equal to** filter operator"
|
|
6937
|
+
filterGteOperator="Is greater than or equal to"
|
|
6938
|
+
i18n-filterGtOperator="kendo.spreadsheet.filterGtOperator|The text of the **greater than** filter operator"
|
|
6939
|
+
filterGtOperator="Is greater than"
|
|
6940
|
+
i18n-filterLteOperator="kendo.spreadsheet.filterLteOperator|The text of the **less than or equal to** filter operator"
|
|
6941
|
+
filterLteOperator="Is less than or equal to"
|
|
6942
|
+
i18n-filterLtOperator="kendo.spreadsheet.filterLtOperator|The text of the **less than** filter operator"
|
|
6943
|
+
filterLtOperator="Is less than"
|
|
6944
|
+
i18n-filterMenuConditionItem="kendo.spreadsheet.filterMenuConditionItem|The text of the **Filter by condition** menu item."
|
|
6945
|
+
filterMenuConditionItem="Filter by condition"
|
|
6946
|
+
i18n-filterMenuValueItem="kendo.spreadsheet.filterMenuValueItem|The text of the **Filter by value** menu item."
|
|
6947
|
+
filterMenuValueItem="Filter by value"
|
|
6948
|
+
i18n-sort="kendo.spreadsheet.sort|The title of the Sort ToolBar tool."
|
|
6949
|
+
sort="Sort"
|
|
6950
|
+
i18n-sortAsc="kendo.spreadsheet.sortAsc|The text of the **Sort range A to Z** option."
|
|
6951
|
+
sortAsc="Sort range A to Z"
|
|
6952
|
+
i18n-sortDesc="kendo.spreadsheet.sortDesc|The text of the **Sort range Z to A** option."
|
|
6953
|
+
sortDesc="Sort range Z to A"
|
|
6954
|
+
i18n-unsort="kendo.spreadsheet.unsort|The text of the **Unsort** option."
|
|
6955
|
+
unsort="Unsort">
|
|
5951
6956
|
</ng-container>
|
|
5952
6957
|
<div class="k-spreadsheet-header">
|
|
5953
6958
|
<kendo-menu kendoSpreadsheetMenu (select)="onMenuItemSelect($event)">
|
|
@@ -6042,6 +7047,10 @@ class SpreadsheetComponent {
|
|
|
6042
7047
|
class="k-spreadsheet-toolbar"
|
|
6043
7048
|
[overflow]="overflow">
|
|
6044
7049
|
<kendo-toolbar-button kendoSpreadsheetDataValidation></kendo-toolbar-button>
|
|
7050
|
+
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
7051
|
+
<kendo-toolbar-button kendoSpreadsheetFilter></kendo-toolbar-button>
|
|
7052
|
+
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
7053
|
+
<kendo-toolbar-dropdownbutton kendoSpreadsheetSort></kendo-toolbar-dropdownbutton>
|
|
6045
7054
|
</kendo-toolbar>
|
|
6046
7055
|
}
|
|
6047
7056
|
</div>
|
|
@@ -6075,16 +7084,98 @@ class SpreadsheetComponent {
|
|
|
6075
7084
|
[sheetDescriptors]="sheets">
|
|
6076
7085
|
</div>
|
|
6077
7086
|
<ng-container #dialogContainer></ng-container>
|
|
6078
|
-
|
|
6079
|
-
<kendo-contextmenu
|
|
6080
|
-
#contextMenu
|
|
7087
|
+
|
|
7088
|
+
<kendo-contextmenu #contextMenu
|
|
6081
7089
|
[items]="contextMenuItems"
|
|
6082
|
-
|
|
7090
|
+
(select)="onContextMenuSelect($event)">
|
|
7091
|
+
</kendo-contextmenu>
|
|
6083
7092
|
|
|
7093
|
+
<ng-template #filterMenuTemplate>
|
|
7094
|
+
<kendo-spreadsheet-filtermenu-item
|
|
7095
|
+
[innerMenuItems]="sortMenuItems"
|
|
7096
|
+
(itemClick)="onSortItemClick($event)">
|
|
7097
|
+
</kendo-spreadsheet-filtermenu-item>
|
|
7098
|
+
<kendo-spreadsheet-filtermenu-item
|
|
7099
|
+
[expandable]="true"
|
|
7100
|
+
[expanded]="conditionExpanded"
|
|
7101
|
+
expanderClass="k-spreadsheet-condition-filter"
|
|
7102
|
+
[innerMenuItems]="[{text: messageFor('filterMenuConditionItem')}]"
|
|
7103
|
+
(collapse)="onToggle(false, 'condition')"
|
|
7104
|
+
(expand)="onToggle(true, 'condition')">
|
|
7105
|
+
<ng-template kendoSpreadsheetFilterMenuItemContentTemplate>
|
|
7106
|
+
<div class="k-details-content">
|
|
7107
|
+
<kendo-dropdownlist
|
|
7108
|
+
[data]="filterConditionsList"
|
|
7109
|
+
textField="text"
|
|
7110
|
+
valueField="comparerType"
|
|
7111
|
+
[(value)]="selectedCondition">
|
|
7112
|
+
</kendo-dropdownlist>
|
|
7113
|
+
@if (selectedCondition?.type === 'string') {
|
|
7114
|
+
<kendo-textbox [(value)]="conditionValue"></kendo-textbox>
|
|
7115
|
+
} @else if (selectedCondition?.type === 'number') {
|
|
7116
|
+
<kendo-numerictextbox [(value)]="conditionValue"></kendo-numerictextbox>
|
|
7117
|
+
} @else if (selectedCondition?.type === 'date') {
|
|
7118
|
+
<kendo-datepicker [(value)]="conditionValue"></kendo-datepicker>
|
|
7119
|
+
}
|
|
7120
|
+
</div>
|
|
7121
|
+
<div class="k-actions k-actions-stretched k-actions-horizontal">
|
|
7122
|
+
<button
|
|
7123
|
+
kendoButton
|
|
7124
|
+
themeColor="primary"
|
|
7125
|
+
(click)="filterApply('condition')">
|
|
7126
|
+
{{ messageFor('filterApply') }}
|
|
7127
|
+
</button>
|
|
7128
|
+
<button
|
|
7129
|
+
kendoButton
|
|
7130
|
+
(click)="filterClear()">
|
|
7131
|
+
{{ messageFor('filterClear') }}
|
|
7132
|
+
</button>
|
|
7133
|
+
</div>
|
|
7134
|
+
</ng-template>
|
|
7135
|
+
</kendo-spreadsheet-filtermenu-item>
|
|
7136
|
+
<kendo-spreadsheet-filtermenu-item
|
|
7137
|
+
[expandable]="true"
|
|
7138
|
+
[expanded]="valueExpanded"
|
|
7139
|
+
[innerMenuItems]="[{text: messageFor('filterMenuValueItem')}]"
|
|
7140
|
+
(collapse)="onToggle(false, 'value')"
|
|
7141
|
+
(expand)="onToggle(true, 'value')">
|
|
7142
|
+
<ng-template kendoSpreadsheetFilterMenuItemContentTemplate>
|
|
7143
|
+
<div class="k-spreadsheet-value-treeview-wrapper">
|
|
7144
|
+
<kendo-treeview #treeview
|
|
7145
|
+
kendoTreeViewHierarchyBinding
|
|
7146
|
+
childrenField="items"
|
|
7147
|
+
textField="text"
|
|
7148
|
+
[nodes]="rangeFilterValuesList"
|
|
7149
|
+
kendoTreeViewExpandable
|
|
7150
|
+
[(expandedKeys)]="expandedKeys"
|
|
7151
|
+
[filterable]="true"
|
|
7152
|
+
[kendoTreeViewCheckable]="{checkOnClick: true}"
|
|
7153
|
+
[(checkedKeys)]="checkedKeys"
|
|
7154
|
+
checkBy="text"
|
|
7155
|
+
[isChecked]="isChecked">
|
|
7156
|
+
</kendo-treeview>
|
|
7157
|
+
</div>
|
|
7158
|
+
<div class="k-actions k-actions-stretched k-actions-horizontal">
|
|
7159
|
+
<button
|
|
7160
|
+
kendoButton
|
|
7161
|
+
themeColor="primary"
|
|
7162
|
+
(click)="filterApply('value')">
|
|
7163
|
+
{{ messageFor('filterApply') }}
|
|
7164
|
+
</button>
|
|
7165
|
+
<button
|
|
7166
|
+
kendoButton
|
|
7167
|
+
(click)="filterClear()">
|
|
7168
|
+
{{ messageFor('filterClear') }}
|
|
7169
|
+
</button>
|
|
7170
|
+
</div>
|
|
7171
|
+
</ng-template>
|
|
7172
|
+
</kendo-spreadsheet-filtermenu-item>
|
|
7173
|
+
</ng-template>
|
|
7174
|
+
|
|
6084
7175
|
@if (showLicenseWatermark) {
|
|
6085
7176
|
<div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
|
|
6086
7177
|
}
|
|
6087
|
-
`, 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]" }] });
|
|
7178
|
+
`, 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]" }] });
|
|
6088
7179
|
}
|
|
6089
7180
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpreadsheetComponent, decorators: [{
|
|
6090
7181
|
type: Component,
|
|
@@ -6330,7 +7421,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6330
7421
|
i18n-sheetMoveRight="kendo.spreadsheet.sheetMoveRight|The text of the Sheet menu Move Right option."
|
|
6331
7422
|
sheetMoveRight="Move Right"
|
|
6332
7423
|
i18n-invalidNameError="kendo.spreadsheet.invalidNameError|The content of the dialog that warns about invalid name input."
|
|
6333
|
-
invalidNameError="{{ 'Invalid name: {inputValue}' }}"
|
|
7424
|
+
invalidNameError="{{ 'Invalid name: {inputValue}' }}"
|
|
7425
|
+
i18n-cantSortMixedCells="kendo.spreadsheet.cantSortMixedCells|The content of the dialog that warns about sorting range containing cells of mixed shapes."
|
|
7426
|
+
cantSortMixedCells="Cannot sort range containing cells of mixed shapes"
|
|
7427
|
+
i18n-cantSortNullRef="kendo.spreadsheet.cantSortNullRef|The content of the dialog that warns about sorting incorrect (empty) range."
|
|
7428
|
+
cantSortNullRef="Cannot sort empty selection"
|
|
7429
|
+
i18n-filterApply="kendo.spreadsheet.filterApply|The text of the **Apply** button in the filter menu."
|
|
7430
|
+
filterApply="Apply"
|
|
7431
|
+
i18n-filterClear="kendo.spreadsheet.filterClear|The text of the **Clear** button in the filter menu."
|
|
7432
|
+
filterClear="Clear"
|
|
7433
|
+
i18n-filterMenuAll="kendo.spreadsheet.filterMenuAll|The text of the **All** grouping item in the filter menu."
|
|
7434
|
+
filterMenuAll="All"
|
|
7435
|
+
i18n-blankValues="kendo.spreadsheet.blankValues|The text for the blank (empty) values."
|
|
7436
|
+
blankValues="Blank"
|
|
7437
|
+
i18n-filterNoneOperator="kendo.spreadsheet.filterNoneOperator|The text for the **none** filter operator."
|
|
7438
|
+
filterNoneOperator="None"
|
|
7439
|
+
i18n-filterContainsOperator="kendo.spreadsheet.filterContainsOperator|The text of the **contains** filter operator"
|
|
7440
|
+
filterContainsOperator="Text contains"
|
|
7441
|
+
i18n-filterNotContainsOperator="kendo.spreadsheet.filterNotContainsOperator|The text of the **does not contain** filter operator"
|
|
7442
|
+
filterNotContainsOperator="Text does not contain"
|
|
7443
|
+
i18n-filterStartsWithOperator="kendo.spreadsheet.filterStartsWithOperator|The text of the **starts with** filter operator"
|
|
7444
|
+
filterStartsWithOperator="Text starts with"
|
|
7445
|
+
i18n-filterEndsWithOperator="kendo.spreadsheet.filterEndsWithOperator|The text of the **ends with** filter operator"
|
|
7446
|
+
filterEndsWithOperator="Text ends with"
|
|
7447
|
+
i18n-filterMatchesOperator="kendo.spreadsheet.filterMatchesOperator|The text of the **matches** filter operator"
|
|
7448
|
+
filterMatchesOperator="Text matches"
|
|
7449
|
+
i18n-filterNotMatchesOperator="kendo.spreadsheet.filterNotMatchesOperator|The text of the **does not match** filter operator"
|
|
7450
|
+
filterNotMatchesOperator="Text does not match"
|
|
7451
|
+
i18n-filterDateEqOperator="kendo.spreadsheet.filterDateEqOperator|The text of the **Date is** filter operator"
|
|
7452
|
+
filterDateEqOperator="Date is"
|
|
7453
|
+
i18n-filterDateNotEqOperator="kendo.spreadsheet.filterDateNotEqOperator|The text of the **Date is not** filter operator"
|
|
7454
|
+
filterDateNotEqOperator="Date is not"
|
|
7455
|
+
i18n-filterBeforeOperator="kendo.spreadsheet.filterBeforeOperator|The text of the **Date is before** filter operator"
|
|
7456
|
+
filterBeforeOperator="Date is before"
|
|
7457
|
+
i18n-filterAfterOperator="kendo.spreadsheet.filterAfterOperator|The text of the **Date is after** filter operator"
|
|
7458
|
+
filterAfterOperator="Date is after"
|
|
7459
|
+
i18n-filterEqOperator="kendo.spreadsheet.filterEqOperator|Sets the text for the **Equal (Is equal to)** filter operator."
|
|
7460
|
+
filterEqOperator="Is equal to"
|
|
7461
|
+
i18n-filterNotEqOperator="kendo.spreadsheet.filterNotEqOperator|Sets the text for the **Not equal (Is not equal to)** filter operator."
|
|
7462
|
+
filterNotEqOperator="Is not equal to"
|
|
7463
|
+
i18n-filterGteOperator="kendo.spreadsheet.filterGteOperator|The text of the **greater than or equal to** filter operator"
|
|
7464
|
+
filterGteOperator="Is greater than or equal to"
|
|
7465
|
+
i18n-filterGtOperator="kendo.spreadsheet.filterGtOperator|The text of the **greater than** filter operator"
|
|
7466
|
+
filterGtOperator="Is greater than"
|
|
7467
|
+
i18n-filterLteOperator="kendo.spreadsheet.filterLteOperator|The text of the **less than or equal to** filter operator"
|
|
7468
|
+
filterLteOperator="Is less than or equal to"
|
|
7469
|
+
i18n-filterLtOperator="kendo.spreadsheet.filterLtOperator|The text of the **less than** filter operator"
|
|
7470
|
+
filterLtOperator="Is less than"
|
|
7471
|
+
i18n-filterMenuConditionItem="kendo.spreadsheet.filterMenuConditionItem|The text of the **Filter by condition** menu item."
|
|
7472
|
+
filterMenuConditionItem="Filter by condition"
|
|
7473
|
+
i18n-filterMenuValueItem="kendo.spreadsheet.filterMenuValueItem|The text of the **Filter by value** menu item."
|
|
7474
|
+
filterMenuValueItem="Filter by value"
|
|
7475
|
+
i18n-sort="kendo.spreadsheet.sort|The title of the Sort ToolBar tool."
|
|
7476
|
+
sort="Sort"
|
|
7477
|
+
i18n-sortAsc="kendo.spreadsheet.sortAsc|The text of the **Sort range A to Z** option."
|
|
7478
|
+
sortAsc="Sort range A to Z"
|
|
7479
|
+
i18n-sortDesc="kendo.spreadsheet.sortDesc|The text of the **Sort range Z to A** option."
|
|
7480
|
+
sortDesc="Sort range Z to A"
|
|
7481
|
+
i18n-unsort="kendo.spreadsheet.unsort|The text of the **Unsort** option."
|
|
7482
|
+
unsort="Unsort">
|
|
6334
7483
|
</ng-container>
|
|
6335
7484
|
<div class="k-spreadsheet-header">
|
|
6336
7485
|
<kendo-menu kendoSpreadsheetMenu (select)="onMenuItemSelect($event)">
|
|
@@ -6425,6 +7574,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6425
7574
|
class="k-spreadsheet-toolbar"
|
|
6426
7575
|
[overflow]="overflow">
|
|
6427
7576
|
<kendo-toolbar-button kendoSpreadsheetDataValidation></kendo-toolbar-button>
|
|
7577
|
+
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
7578
|
+
<kendo-toolbar-button kendoSpreadsheetFilter></kendo-toolbar-button>
|
|
7579
|
+
<kendo-toolbar-separator></kendo-toolbar-separator>
|
|
7580
|
+
<kendo-toolbar-dropdownbutton kendoSpreadsheetSort></kendo-toolbar-dropdownbutton>
|
|
6428
7581
|
</kendo-toolbar>
|
|
6429
7582
|
}
|
|
6430
7583
|
</div>
|
|
@@ -6458,20 +7611,102 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6458
7611
|
[sheetDescriptors]="sheets">
|
|
6459
7612
|
</div>
|
|
6460
7613
|
<ng-container #dialogContainer></ng-container>
|
|
6461
|
-
|
|
6462
|
-
<kendo-contextmenu
|
|
6463
|
-
#contextMenu
|
|
7614
|
+
|
|
7615
|
+
<kendo-contextmenu #contextMenu
|
|
6464
7616
|
[items]="contextMenuItems"
|
|
6465
|
-
|
|
7617
|
+
(select)="onContextMenuSelect($event)">
|
|
7618
|
+
</kendo-contextmenu>
|
|
6466
7619
|
|
|
7620
|
+
<ng-template #filterMenuTemplate>
|
|
7621
|
+
<kendo-spreadsheet-filtermenu-item
|
|
7622
|
+
[innerMenuItems]="sortMenuItems"
|
|
7623
|
+
(itemClick)="onSortItemClick($event)">
|
|
7624
|
+
</kendo-spreadsheet-filtermenu-item>
|
|
7625
|
+
<kendo-spreadsheet-filtermenu-item
|
|
7626
|
+
[expandable]="true"
|
|
7627
|
+
[expanded]="conditionExpanded"
|
|
7628
|
+
expanderClass="k-spreadsheet-condition-filter"
|
|
7629
|
+
[innerMenuItems]="[{text: messageFor('filterMenuConditionItem')}]"
|
|
7630
|
+
(collapse)="onToggle(false, 'condition')"
|
|
7631
|
+
(expand)="onToggle(true, 'condition')">
|
|
7632
|
+
<ng-template kendoSpreadsheetFilterMenuItemContentTemplate>
|
|
7633
|
+
<div class="k-details-content">
|
|
7634
|
+
<kendo-dropdownlist
|
|
7635
|
+
[data]="filterConditionsList"
|
|
7636
|
+
textField="text"
|
|
7637
|
+
valueField="comparerType"
|
|
7638
|
+
[(value)]="selectedCondition">
|
|
7639
|
+
</kendo-dropdownlist>
|
|
7640
|
+
@if (selectedCondition?.type === 'string') {
|
|
7641
|
+
<kendo-textbox [(value)]="conditionValue"></kendo-textbox>
|
|
7642
|
+
} @else if (selectedCondition?.type === 'number') {
|
|
7643
|
+
<kendo-numerictextbox [(value)]="conditionValue"></kendo-numerictextbox>
|
|
7644
|
+
} @else if (selectedCondition?.type === 'date') {
|
|
7645
|
+
<kendo-datepicker [(value)]="conditionValue"></kendo-datepicker>
|
|
7646
|
+
}
|
|
7647
|
+
</div>
|
|
7648
|
+
<div class="k-actions k-actions-stretched k-actions-horizontal">
|
|
7649
|
+
<button
|
|
7650
|
+
kendoButton
|
|
7651
|
+
themeColor="primary"
|
|
7652
|
+
(click)="filterApply('condition')">
|
|
7653
|
+
{{ messageFor('filterApply') }}
|
|
7654
|
+
</button>
|
|
7655
|
+
<button
|
|
7656
|
+
kendoButton
|
|
7657
|
+
(click)="filterClear()">
|
|
7658
|
+
{{ messageFor('filterClear') }}
|
|
7659
|
+
</button>
|
|
7660
|
+
</div>
|
|
7661
|
+
</ng-template>
|
|
7662
|
+
</kendo-spreadsheet-filtermenu-item>
|
|
7663
|
+
<kendo-spreadsheet-filtermenu-item
|
|
7664
|
+
[expandable]="true"
|
|
7665
|
+
[expanded]="valueExpanded"
|
|
7666
|
+
[innerMenuItems]="[{text: messageFor('filterMenuValueItem')}]"
|
|
7667
|
+
(collapse)="onToggle(false, 'value')"
|
|
7668
|
+
(expand)="onToggle(true, 'value')">
|
|
7669
|
+
<ng-template kendoSpreadsheetFilterMenuItemContentTemplate>
|
|
7670
|
+
<div class="k-spreadsheet-value-treeview-wrapper">
|
|
7671
|
+
<kendo-treeview #treeview
|
|
7672
|
+
kendoTreeViewHierarchyBinding
|
|
7673
|
+
childrenField="items"
|
|
7674
|
+
textField="text"
|
|
7675
|
+
[nodes]="rangeFilterValuesList"
|
|
7676
|
+
kendoTreeViewExpandable
|
|
7677
|
+
[(expandedKeys)]="expandedKeys"
|
|
7678
|
+
[filterable]="true"
|
|
7679
|
+
[kendoTreeViewCheckable]="{checkOnClick: true}"
|
|
7680
|
+
[(checkedKeys)]="checkedKeys"
|
|
7681
|
+
checkBy="text"
|
|
7682
|
+
[isChecked]="isChecked">
|
|
7683
|
+
</kendo-treeview>
|
|
7684
|
+
</div>
|
|
7685
|
+
<div class="k-actions k-actions-stretched k-actions-horizontal">
|
|
7686
|
+
<button
|
|
7687
|
+
kendoButton
|
|
7688
|
+
themeColor="primary"
|
|
7689
|
+
(click)="filterApply('value')">
|
|
7690
|
+
{{ messageFor('filterApply') }}
|
|
7691
|
+
</button>
|
|
7692
|
+
<button
|
|
7693
|
+
kendoButton
|
|
7694
|
+
(click)="filterClear()">
|
|
7695
|
+
{{ messageFor('filterClear') }}
|
|
7696
|
+
</button>
|
|
7697
|
+
</div>
|
|
7698
|
+
</ng-template>
|
|
7699
|
+
</kendo-spreadsheet-filtermenu-item>
|
|
7700
|
+
</ng-template>
|
|
7701
|
+
|
|
6467
7702
|
@if (showLicenseWatermark) {
|
|
6468
7703
|
<div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
|
|
6469
7704
|
}
|
|
6470
7705
|
`,
|
|
6471
7706
|
standalone: true,
|
|
6472
|
-
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]
|
|
7707
|
+
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]
|
|
6473
7708
|
}]
|
|
6474
|
-
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i1$4.IntlService }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }, { type: ErrorHandlingService }, { type: i1$2.DialogService }, { type: i1$1.PopupService }, { type: i0.ViewContainerRef }], propDecorators: { formulaBarInputRef: [{
|
|
7709
|
+
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i1$4.IntlService }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }, { type: ErrorHandlingService }, { type: i1$2.DialogService }, { type: i1$1.PopupService }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }], propDecorators: { formulaBarInputRef: [{
|
|
6475
7710
|
type: ViewChild,
|
|
6476
7711
|
args: ['formulaBar', { read: FormulaInputDirective }]
|
|
6477
7712
|
}], formulaCellInputRef: [{
|
|
@@ -6486,6 +7721,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6486
7721
|
}], contextMenu: [{
|
|
6487
7722
|
type: ViewChild,
|
|
6488
7723
|
args: ['contextMenu']
|
|
7724
|
+
}], filterMenuTemplate: [{
|
|
7725
|
+
type: ViewChild,
|
|
7726
|
+
args: ['filterMenuTemplate']
|
|
6489
7727
|
}], hostClass: [{
|
|
6490
7728
|
type: HostBinding,
|
|
6491
7729
|
args: ['class.k-spreadsheet']
|
|
@@ -6534,6 +7772,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6534
7772
|
type: Output
|
|
6535
7773
|
}], activeSheetChange: [{
|
|
6536
7774
|
type: Output
|
|
7775
|
+
}], clipboard: [{
|
|
7776
|
+
type: Output
|
|
6537
7777
|
}] } });
|
|
6538
7778
|
|
|
6539
7779
|
/**
|
|
@@ -6678,7 +7918,9 @@ const KENDO_SPREADSHEET = [
|
|
|
6678
7918
|
SpreadsheetIncreaseDecimalDirective,
|
|
6679
7919
|
SpreadsheetDecreaseDecimalDirective,
|
|
6680
7920
|
SpreadsheetHorizontalTextAlignDirective,
|
|
6681
|
-
SpreadsheetVerticalTextAlignDirective
|
|
7921
|
+
SpreadsheetVerticalTextAlignDirective,
|
|
7922
|
+
SpreadsheetFilterDirective,
|
|
7923
|
+
SpreadsheetSortDirective
|
|
6682
7924
|
];
|
|
6683
7925
|
|
|
6684
7926
|
// IMPORTANT: NgModule export kept for backwards compatibility
|
|
@@ -6697,7 +7939,7 @@ const KENDO_SPREADSHEET = [
|
|
|
6697
7939
|
*/
|
|
6698
7940
|
class SpreadsheetModule {
|
|
6699
7941
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpreadsheetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
6700
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: SpreadsheetModule, imports: [SpreadsheetComponent, CustomMessagesComponent, SpreadsheetBoldDirective, SpreadsheetDataValidationDirective, SpreadsheetItalicDirective, SpreadsheetUnderlineDirective, SpreadsheetLoadFileComponent, SpreadsheetSaveFileDirective, SpreadsheetFormatDirective, SpreadsheetUndoDirective, SpreadsheetRedoDirective, SpreadsheetFontFamilyComponent, SpreadsheetFontSizeComponent, SpreadsheetBackColorComponent, SpreadsheetForeColorComponent, SpreadsheetGridLinesDirective, SpreadsheetAddColumnLeftButtonDirective, SpreadsheetAddColumnRightButtonDirective, SpreadsheetAddRowAboveButtonDirective, SpreadsheetAddRowBelowButtonDirective, SpreadsheetDeleteColumnButtonDirective, SpreadsheetDeleteRowButtonDirective, SpreadsheetTextAlignDirective, SpreadsheetTextWrapDirective, SpreadsheetMergeDirective, SpreadsheetInsertLinkDirective, SpreadsheetIncreaseFontSizeDirective, SpreadsheetDecreaseFontSizeDirective, SpreadsheetIncreaseDecimalDirective, SpreadsheetDecreaseDecimalDirective, SpreadsheetHorizontalTextAlignDirective, SpreadsheetVerticalTextAlignDirective], exports: [SpreadsheetComponent, CustomMessagesComponent, SpreadsheetBoldDirective, SpreadsheetDataValidationDirective, SpreadsheetItalicDirective, SpreadsheetUnderlineDirective, SpreadsheetLoadFileComponent, SpreadsheetSaveFileDirective, SpreadsheetFormatDirective, SpreadsheetUndoDirective, SpreadsheetRedoDirective, SpreadsheetFontFamilyComponent, SpreadsheetFontSizeComponent, SpreadsheetBackColorComponent, SpreadsheetForeColorComponent, SpreadsheetGridLinesDirective, SpreadsheetAddColumnLeftButtonDirective, SpreadsheetAddColumnRightButtonDirective, SpreadsheetAddRowAboveButtonDirective, SpreadsheetAddRowBelowButtonDirective, SpreadsheetDeleteColumnButtonDirective, SpreadsheetDeleteRowButtonDirective, SpreadsheetTextAlignDirective, SpreadsheetTextWrapDirective, SpreadsheetMergeDirective, SpreadsheetInsertLinkDirective, SpreadsheetIncreaseFontSizeDirective, SpreadsheetDecreaseFontSizeDirective, SpreadsheetIncreaseDecimalDirective, SpreadsheetDecreaseDecimalDirective, SpreadsheetHorizontalTextAlignDirective, SpreadsheetVerticalTextAlignDirective] });
|
|
7942
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: SpreadsheetModule, imports: [SpreadsheetComponent, CustomMessagesComponent, SpreadsheetBoldDirective, SpreadsheetDataValidationDirective, SpreadsheetItalicDirective, SpreadsheetUnderlineDirective, SpreadsheetLoadFileComponent, SpreadsheetSaveFileDirective, SpreadsheetFormatDirective, SpreadsheetUndoDirective, SpreadsheetRedoDirective, SpreadsheetFontFamilyComponent, SpreadsheetFontSizeComponent, SpreadsheetBackColorComponent, SpreadsheetForeColorComponent, SpreadsheetGridLinesDirective, SpreadsheetAddColumnLeftButtonDirective, SpreadsheetAddColumnRightButtonDirective, SpreadsheetAddRowAboveButtonDirective, SpreadsheetAddRowBelowButtonDirective, SpreadsheetDeleteColumnButtonDirective, SpreadsheetDeleteRowButtonDirective, SpreadsheetTextAlignDirective, SpreadsheetTextWrapDirective, SpreadsheetMergeDirective, SpreadsheetInsertLinkDirective, SpreadsheetIncreaseFontSizeDirective, SpreadsheetDecreaseFontSizeDirective, SpreadsheetIncreaseDecimalDirective, SpreadsheetDecreaseDecimalDirective, SpreadsheetHorizontalTextAlignDirective, SpreadsheetVerticalTextAlignDirective, SpreadsheetFilterDirective, SpreadsheetSortDirective], exports: [SpreadsheetComponent, CustomMessagesComponent, SpreadsheetBoldDirective, SpreadsheetDataValidationDirective, SpreadsheetItalicDirective, SpreadsheetUnderlineDirective, SpreadsheetLoadFileComponent, SpreadsheetSaveFileDirective, SpreadsheetFormatDirective, SpreadsheetUndoDirective, SpreadsheetRedoDirective, SpreadsheetFontFamilyComponent, SpreadsheetFontSizeComponent, SpreadsheetBackColorComponent, SpreadsheetForeColorComponent, SpreadsheetGridLinesDirective, SpreadsheetAddColumnLeftButtonDirective, SpreadsheetAddColumnRightButtonDirective, SpreadsheetAddRowAboveButtonDirective, SpreadsheetAddRowBelowButtonDirective, SpreadsheetDeleteColumnButtonDirective, SpreadsheetDeleteRowButtonDirective, SpreadsheetTextAlignDirective, SpreadsheetTextWrapDirective, SpreadsheetMergeDirective, SpreadsheetInsertLinkDirective, SpreadsheetIncreaseFontSizeDirective, SpreadsheetDecreaseFontSizeDirective, SpreadsheetIncreaseDecimalDirective, SpreadsheetDecreaseDecimalDirective, SpreadsheetHorizontalTextAlignDirective, SpreadsheetVerticalTextAlignDirective, SpreadsheetFilterDirective, SpreadsheetSortDirective] });
|
|
6701
7943
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpreadsheetModule, providers: [IconsService, PopupService, ResizeBatchService, DialogContainerService, DialogService, WindowService, WindowContainerService], imports: [SpreadsheetComponent, SpreadsheetLoadFileComponent, SpreadsheetFontFamilyComponent, SpreadsheetFontSizeComponent, SpreadsheetBackColorComponent, SpreadsheetForeColorComponent] });
|
|
6702
7944
|
}
|
|
6703
7945
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpreadsheetModule, decorators: [{
|
|
@@ -6713,5 +7955,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6713
7955
|
* Generated bundle index. Do not edit.
|
|
6714
7956
|
*/
|
|
6715
7957
|
|
|
6716
|
-
export { CustomMessagesComponent, FormulaInputDirective, FormulaListComponent, KENDO_SPREADSHEET, NameBoxComponent, SheetsBarComponent, SpreadsheetAddColumnLeftButtonDirective, SpreadsheetAddColumnRightButtonDirective, SpreadsheetAddRowAboveButtonDirective, SpreadsheetAddRowBelowButtonDirective, SpreadsheetBackColorComponent, SpreadsheetBoldDirective, SpreadsheetComponent, SpreadsheetDataValidationDirective, SpreadsheetDecreaseDecimalDirective, SpreadsheetDecreaseFontSizeDirective, SpreadsheetDeleteColumnButtonDirective, SpreadsheetDeleteRowButtonDirective, SpreadsheetFontFamilyComponent, SpreadsheetFontSizeComponent, SpreadsheetForeColorComponent, SpreadsheetFormatDirective, SpreadsheetGridLinesDirective, SpreadsheetHorizontalTextAlignDirective, SpreadsheetIncreaseDecimalDirective, SpreadsheetIncreaseFontSizeDirective, SpreadsheetInsertLinkDirective, SpreadsheetItalicDirective, SpreadsheetLoadFileComponent, SpreadsheetMergeDirective, SpreadsheetModule, SpreadsheetRedoDirective, SpreadsheetSaveFileDirective, SpreadsheetTextAlignDirective, SpreadsheetTextWrapDirective, SpreadsheetUnderlineDirective, SpreadsheetUndoDirective, SpreadsheetVerticalTextAlignDirective };
|
|
7958
|
+
export { CustomMessagesComponent, FormulaInputDirective, FormulaListComponent, KENDO_SPREADSHEET, NameBoxComponent, SheetsBarComponent, SpreadsheetAddColumnLeftButtonDirective, SpreadsheetAddColumnRightButtonDirective, SpreadsheetAddRowAboveButtonDirective, SpreadsheetAddRowBelowButtonDirective, SpreadsheetBackColorComponent, SpreadsheetBoldDirective, SpreadsheetComponent, SpreadsheetDataValidationDirective, SpreadsheetDecreaseDecimalDirective, SpreadsheetDecreaseFontSizeDirective, SpreadsheetDeleteColumnButtonDirective, SpreadsheetDeleteRowButtonDirective, SpreadsheetFilterDirective, SpreadsheetFontFamilyComponent, SpreadsheetFontSizeComponent, SpreadsheetForeColorComponent, SpreadsheetFormatDirective, SpreadsheetGridLinesDirective, SpreadsheetHorizontalTextAlignDirective, SpreadsheetIncreaseDecimalDirective, SpreadsheetIncreaseFontSizeDirective, SpreadsheetInsertLinkDirective, SpreadsheetItalicDirective, SpreadsheetLoadFileComponent, SpreadsheetMergeDirective, SpreadsheetModule, SpreadsheetRedoDirective, SpreadsheetSaveFileDirective, SpreadsheetSortDirective, SpreadsheetTextAlignDirective, SpreadsheetTextWrapDirective, SpreadsheetUnderlineDirective, SpreadsheetUndoDirective, SpreadsheetVerticalTextAlignDirective };
|
|
6717
7959
|
|