@progress/kendo-angular-grid 19.3.0-develop.4 → 19.3.0-develop.41
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/columns/columns-container.d.ts +2 -0
- package/common/data-layout-mode.d.ts +21 -0
- package/common/grid-col-size.d.ts +13 -0
- package/common/provider.service.d.ts +2 -0
- package/common/toolbar-tool-base.directive.d.ts +1 -0
- package/data/data-mapping.service.d.ts +3 -1
- package/directives.d.ts +7 -4
- package/editing/toolbar-editing-tool-base.directive.d.ts +3 -2
- package/editing-directives/editing-directive-base.d.ts +3 -0
- package/editing-directives/in-cell-editing.directive.d.ts +1 -1
- package/editing-directives/reactive-editing.directive.d.ts +1 -1
- package/editing-directives/template-editing.directive.d.ts +1 -1
- package/esm2022/adaptiveness/adaptive-renderer.component.mjs +1 -2
- package/esm2022/column-menu/column-chooser.component.mjs +1 -1
- package/esm2022/column-menu/column-list.component.mjs +8 -7
- package/esm2022/column-menu/column-menu-item.directive.mjs +1 -1
- package/esm2022/column-menu/column-menu.component.mjs +1 -1
- package/esm2022/columns/column-base.mjs +4 -4
- package/esm2022/columns/column.component.mjs +1 -1
- package/esm2022/columns/columns-container.mjs +3 -0
- package/esm2022/common/column-info.service.mjs +1 -1
- package/esm2022/common/data-layout-mode.mjs +5 -0
- package/esm2022/common/grid-col-size.mjs +5 -0
- package/esm2022/common/provider.service.mjs +1 -0
- package/esm2022/common/toolbar-tool-base.directive.mjs +6 -2
- package/esm2022/data/data-mapping.service.mjs +14 -3
- package/esm2022/directives.mjs +8 -1
- package/esm2022/editing/form/form-formfield.component.mjs +2 -2
- package/esm2022/editing/toolbar-editing-tool-base.directive.mjs +5 -0
- package/esm2022/editing-directives/editing-directive-base.mjs +17 -2
- package/esm2022/editing-directives/in-cell-editing.directive.mjs +5 -3
- package/esm2022/editing-directives/reactive-editing.directive.mjs +1 -1
- package/esm2022/editing-directives/template-editing.directive.mjs +1 -1
- package/esm2022/filtering/cell/boolean-filter-cell.component.mjs +1 -1
- package/esm2022/filtering/cell/date-filter-cell.component.mjs +1 -1
- package/esm2022/filtering/cell/filter-cell-operators.component.mjs +3 -4
- package/esm2022/filtering/cell/numeric-filter-cell.component.mjs +1 -1
- package/esm2022/filtering/cell/string-filter-cell.component.mjs +1 -1
- package/esm2022/filtering/filter-row.component.mjs +6 -3
- package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +1 -2
- package/esm2022/filtering/menu/date-filter-menu-input.component.mjs +1 -1
- package/esm2022/filtering/menu/date-filter-menu.component.mjs +1 -1
- package/esm2022/filtering/menu/filter-menu-dropdownlist.directive.mjs +1 -1
- package/esm2022/filtering/menu/filter-menu-input-wrapper.component.mjs +1 -1
- package/esm2022/filtering/menu/filter-menu.component.mjs +1 -1
- package/esm2022/filtering/menu/numeric-filter-menu-input.component.mjs +1 -1
- package/esm2022/filtering/menu/numeric-filter-menu.component.mjs +1 -1
- package/esm2022/filtering/menu/string-filter-menu-input.component.mjs +1 -1
- package/esm2022/filtering/menu/string-filter-menu.component.mjs +1 -1
- package/esm2022/grid.component.mjs +191 -39
- package/esm2022/grid.module.mjs +103 -100
- package/esm2022/grouping/group-header.component.mjs +39 -4
- package/esm2022/grouping/group-panel.component.mjs +13 -8
- package/esm2022/highlight/highlight-item.mjs +5 -0
- package/esm2022/highlight/highlight.directive.mjs +132 -0
- package/esm2022/index.mjs +4 -0
- package/esm2022/localization/messages.mjs +57 -3
- package/esm2022/navigation/navigation-cursor.mjs +7 -1
- package/esm2022/navigation/navigation-metadata.mjs +3 -1
- package/esm2022/navigation/navigation.service.mjs +162 -16
- package/esm2022/navigation/toolbar-tool-name.mjs +2 -1
- package/esm2022/package-metadata.mjs +2 -2
- package/esm2022/pdf/export-element.mjs +14 -5
- package/esm2022/pdf/pdf.component.mjs +3 -1
- package/esm2022/rendering/cell.component.mjs +466 -188
- package/esm2022/rendering/common/col-group.component.mjs +21 -7
- package/esm2022/rendering/details-expand.directive.mjs +5 -2
- package/esm2022/rendering/footer/footer.component.mjs +117 -54
- package/esm2022/rendering/header/header.component.mjs +13 -9
- package/esm2022/rendering/list.component.mjs +19 -12
- package/esm2022/rendering/loading-template.directive.mjs +1 -0
- package/esm2022/rendering/table-body.component.mjs +394 -174
- package/esm2022/rendering/toolbar/tools/ai-assistant/ai-assistant.component.mjs +305 -0
- package/esm2022/rendering/toolbar/tools/ai-assistant/ai-tool.directive.mjs +269 -0
- package/esm2022/rendering/toolbar/tools/ai-assistant/utils.mjs +74 -0
- package/esm2022/rendering/toolbar/tools/column-chooser-tool.directive.mjs +0 -3
- package/esm2022/rendering/toolbar/tools/group-toolbar-tool.component.mjs +11 -9
- package/esm2022/rendering/toolbar/tools/select-all-command-tool.directive.mjs +93 -0
- package/esm2022/row-reordering/row-reorder.service.mjs +2 -2
- package/esm2022/row-reordering/utils.mjs +6 -4
- package/esm2022/selection/cell-selection.service.mjs +6 -3
- package/esm2022/selection/pair-set.mjs +87 -10
- package/esm2022/selection/selection-checkbox.directive.mjs +1 -1
- package/esm2022/selection/selection.directive.mjs +1 -1
- package/esm2022/utils.mjs +0 -4
- package/fesm2022/progress-kendo-angular-grid.mjs +2568 -642
- package/filtering/filter-row.component.d.ts +1 -0
- package/grid.component.d.ts +29 -1
- package/grid.module.d.ts +102 -99
- package/grouping/group-header.component.d.ts +1 -0
- package/grouping/group-panel.component.d.ts +1 -1
- package/highlight/highlight-item.d.ts +17 -0
- package/highlight/highlight.directive.d.ts +56 -0
- package/index.d.ts +8 -1
- package/localization/messages.d.ts +39 -3
- package/navigation/focus-group.d.ts +1 -1
- package/navigation/navigation-metadata.d.ts +2 -1
- package/navigation/navigation.service.d.ts +6 -0
- package/navigation/toolbar-tool-name.d.ts +1 -0
- package/package.json +22 -21
- package/rendering/cell.component.d.ts +30 -15
- package/rendering/common/col-group.component.d.ts +5 -0
- package/rendering/details-expand.directive.d.ts +5 -2
- package/rendering/footer/footer.component.d.ts +4 -1
- package/rendering/header/header.component.d.ts +1 -0
- package/rendering/list.component.d.ts +4 -1
- package/rendering/loading-template.directive.d.ts +1 -0
- package/rendering/table-body.component.d.ts +3 -1
- package/rendering/toolbar/tools/ai-assistant/ai-assistant.component.d.ts +49 -0
- package/rendering/toolbar/tools/ai-assistant/ai-tool.directive.d.ts +115 -0
- package/rendering/toolbar/tools/ai-assistant/utils.d.ts +124 -0
- package/rendering/toolbar/tools/column-chooser-tool.directive.d.ts +0 -1
- package/rendering/toolbar/tools/select-all-command-tool.directive.d.ts +36 -0
- package/row-reordering/row-reorder.service.d.ts +1 -1
- package/row-reordering/utils.d.ts +1 -1
- package/schematics/ngAdd/index.js +4 -4
- package/selection/cell-selection.service.d.ts +1 -0
- package/selection/pair-set.d.ts +36 -8
- package/selection/selection.directive.d.ts +1 -1
- package/utils.d.ts +0 -4
|
@@ -142,6 +142,42 @@ export class GridMessages extends ComponentMessages {
|
|
|
142
142
|
* [See example](slug:globalization_grid#toc-custom-messages).
|
|
143
143
|
*/
|
|
144
144
|
booleanFilterCellLabel;
|
|
145
|
+
/**
|
|
146
|
+
* The text of the AI Assistant Apply button.
|
|
147
|
+
*/
|
|
148
|
+
aiAssistantApplyButtonText;
|
|
149
|
+
/**
|
|
150
|
+
* The text of the AI Assistant toolbar tool.
|
|
151
|
+
*/
|
|
152
|
+
aiAssistantToolbarToolText;
|
|
153
|
+
/**
|
|
154
|
+
* The text of the AI Assistant Window title.
|
|
155
|
+
*/
|
|
156
|
+
aiAssistantWindowTitle;
|
|
157
|
+
/**
|
|
158
|
+
* The title of the AI Assistant Window close button.
|
|
159
|
+
*/
|
|
160
|
+
aiAssistantWindowCloseTitle;
|
|
161
|
+
/**
|
|
162
|
+
* The title of the AI Assistant Prompt Output Card.
|
|
163
|
+
*/
|
|
164
|
+
aiAssistantOutputCardTitle;
|
|
165
|
+
/**
|
|
166
|
+
* The success message dispayed in the AI Assistant Prompt Output Card's body.
|
|
167
|
+
*/
|
|
168
|
+
aiAssistantOutputCardBodyContent;
|
|
169
|
+
/**
|
|
170
|
+
* The title of the AI Assistant Window maximize button.
|
|
171
|
+
*/
|
|
172
|
+
aiAssistantWindowMaximizeTitle;
|
|
173
|
+
/**
|
|
174
|
+
* The title of the AI Assistant Window minimize button.
|
|
175
|
+
*/
|
|
176
|
+
aiAssistantWindowMinimizeTitle;
|
|
177
|
+
/**
|
|
178
|
+
* The title of the AI Assistant Window restore button.
|
|
179
|
+
*/
|
|
180
|
+
aiAssistantWindowRestoreTitle;
|
|
145
181
|
/**
|
|
146
182
|
* Sets the text for the `Equal` (**Is equal to**) filter operator.
|
|
147
183
|
*/
|
|
@@ -383,11 +419,11 @@ export class GridMessages extends ComponentMessages {
|
|
|
383
419
|
*/
|
|
384
420
|
columnsReset;
|
|
385
421
|
/**
|
|
386
|
-
* Sets the title for the expand icon of detail rows.
|
|
422
|
+
* Sets the title for the expand icon of detail rows. Applies also to the expand button text in stacked mode.
|
|
387
423
|
*/
|
|
388
424
|
detailExpand;
|
|
389
425
|
/**
|
|
390
|
-
* Sets the title for the collapse icon of detail rows.
|
|
426
|
+
* Sets the title for the collapse icon of detail rows. Applies also to the collapse button text in stacked mode.
|
|
391
427
|
*/
|
|
392
428
|
detailCollapse;
|
|
393
429
|
/**
|
|
@@ -538,7 +574,7 @@ export class GridMessages extends ComponentMessages {
|
|
|
538
574
|
*/
|
|
539
575
|
externalEditingCancelText;
|
|
540
576
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
541
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: GridMessages, selector: "kendo-grid-messages-base", inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItems: "pagerItems", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", pagerInputLabel: "pagerInputLabel", pagerSelectPage: "pagerSelectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", filterCellOperatorLabel: "filterCellOperatorLabel", booleanFilterCellLabel: "booleanFilterCellLabel", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", adaptiveFilterOperatorsTitle: "adaptiveFilterOperatorsTitle", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", adaptiveCloseButtonTitle: "adaptiveCloseButtonTitle", adaptiveBackButtonTitle: "adaptiveBackButtonTitle", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", filterToolbarToolText: "filterToolbarToolText", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", columnsSubtitle: "columnsSubtitle", adaptiveFilterTitle: "adaptiveFilterTitle", adaptiveSortTitle: "adaptiveSortTitle", adaptiveGroupTitle: "adaptiveGroupTitle", filterClearAllButton: "filterClearAllButton", groupClearButton: "groupClearButton", sortClearButton: "sortClearButton", sortDoneButton: "sortDoneButton", groupDoneButton: "groupDoneButton", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", sortToolbarToolText: "sortToolbarToolText", columnsApply: "columnsApply", columnsReset: "columnsReset", detailExpand: "detailExpand", detailCollapse: "detailCollapse", filterDateToday: "filterDateToday", filterDateToggle: "filterDateToggle", filterNumericDecrement: "filterNumericDecrement", filterNumericIncrement: "filterNumericIncrement", selectionCheckboxLabel: "selectionCheckboxLabel", selectAllCheckboxLabel: "selectAllCheckboxLabel", groupCollapse: "groupCollapse", groupExpand: "groupExpand", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel", editToolbarToolText: "editToolbarToolText", saveToolbarToolText: "saveToolbarToolText", addToolbarToolText: "addToolbarToolText", cancelToolbarToolText: "cancelToolbarToolText", removeToolbarToolText: "removeToolbarToolText", excelExportToolbarToolText: "excelExportToolbarToolText", pdfExportToolbarToolText: "pdfExportToolbarToolText", groupPanelLabel: "groupPanelLabel", dragRowHandleLabel: "dragRowHandleLabel", columnMenuFilterTabTitle: "columnMenuFilterTabTitle", columnMenuGeneralTabTitle: "columnMenuGeneralTabTitle", columnMenuColumnsTabTitle: "columnMenuColumnsTabTitle", groupChipMenuPrevious: "groupChipMenuPrevious", groupChipMenuNext: "groupChipMenuNext", groupToolbarToolText: "groupToolbarToolText", formValidationErrorText: "formValidationErrorText", removeConfirmationDialogTitle: "removeConfirmationDialogTitle", removeConfirmationDialogContent: "removeConfirmationDialogContent", removeConfirmationDialogConfirmText: "removeConfirmationDialogConfirmText", removeConfirmationDialogRejectText: "removeConfirmationDialogRejectText", externalEditingTitle: "externalEditingTitle", externalEditingAddTitle: "externalEditingAddTitle", externalEditingSaveText: "externalEditingSaveText", externalEditingCancelText: "externalEditingCancelText" }, usesInheritance: true, ngImport: i0 });
|
|
577
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: GridMessages, selector: "kendo-grid-messages-base", inputs: { groupPanelEmpty: "groupPanelEmpty", noRecords: "noRecords", pagerLabel: "pagerLabel", pagerFirstPage: "pagerFirstPage", pagerLastPage: "pagerLastPage", pagerPreviousPage: "pagerPreviousPage", pagerNextPage: "pagerNextPage", pagerPage: "pagerPage", pagerItemsPerPage: "pagerItemsPerPage", pagerOf: "pagerOf", pagerItems: "pagerItems", pagerPageNumberInputTitle: "pagerPageNumberInputTitle", pagerInputLabel: "pagerInputLabel", pagerSelectPage: "pagerSelectPage", filter: "filter", filterInputLabel: "filterInputLabel", filterMenuTitle: "filterMenuTitle", filterMenuOperatorsDropDownLabel: "filterMenuOperatorsDropDownLabel", filterMenuLogicDropDownLabel: "filterMenuLogicDropDownLabel", filterCellOperatorLabel: "filterCellOperatorLabel", booleanFilterCellLabel: "booleanFilterCellLabel", aiAssistantApplyButtonText: "aiAssistantApplyButtonText", aiAssistantToolbarToolText: "aiAssistantToolbarToolText", aiAssistantWindowTitle: "aiAssistantWindowTitle", aiAssistantWindowCloseTitle: "aiAssistantWindowCloseTitle", aiAssistantOutputCardTitle: "aiAssistantOutputCardTitle", aiAssistantOutputCardBodyContent: "aiAssistantOutputCardBodyContent", aiAssistantWindowMaximizeTitle: "aiAssistantWindowMaximizeTitle", aiAssistantWindowMinimizeTitle: "aiAssistantWindowMinimizeTitle", aiAssistantWindowRestoreTitle: "aiAssistantWindowRestoreTitle", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", adaptiveFilterOperatorsTitle: "adaptiveFilterOperatorsTitle", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", adaptiveCloseButtonTitle: "adaptiveCloseButtonTitle", adaptiveBackButtonTitle: "adaptiveBackButtonTitle", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", filterToolbarToolText: "filterToolbarToolText", loading: "loading", gridLabel: "gridLabel", columnMenu: "columnMenu", setColumnPosition: "setColumnPosition", columns: "columns", columnsSubtitle: "columnsSubtitle", adaptiveFilterTitle: "adaptiveFilterTitle", adaptiveSortTitle: "adaptiveSortTitle", adaptiveGroupTitle: "adaptiveGroupTitle", filterClearAllButton: "filterClearAllButton", groupClearButton: "groupClearButton", sortClearButton: "sortClearButton", sortDoneButton: "sortDoneButton", groupDoneButton: "groupDoneButton", lock: "lock", unlock: "unlock", stick: "stick", unstick: "unstick", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", autosizeThisColumn: "autosizeThisColumn", autosizeAllColumns: "autosizeAllColumns", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", sortToolbarToolText: "sortToolbarToolText", columnsApply: "columnsApply", columnsReset: "columnsReset", detailExpand: "detailExpand", detailCollapse: "detailCollapse", filterDateToday: "filterDateToday", filterDateToggle: "filterDateToggle", filterNumericDecrement: "filterNumericDecrement", filterNumericIncrement: "filterNumericIncrement", selectionCheckboxLabel: "selectionCheckboxLabel", selectAllCheckboxLabel: "selectAllCheckboxLabel", groupCollapse: "groupCollapse", groupExpand: "groupExpand", topToolbarLabel: "topToolbarLabel", bottomToolbarLabel: "bottomToolbarLabel", editToolbarToolText: "editToolbarToolText", saveToolbarToolText: "saveToolbarToolText", addToolbarToolText: "addToolbarToolText", cancelToolbarToolText: "cancelToolbarToolText", removeToolbarToolText: "removeToolbarToolText", excelExportToolbarToolText: "excelExportToolbarToolText", pdfExportToolbarToolText: "pdfExportToolbarToolText", groupPanelLabel: "groupPanelLabel", dragRowHandleLabel: "dragRowHandleLabel", columnMenuFilterTabTitle: "columnMenuFilterTabTitle", columnMenuGeneralTabTitle: "columnMenuGeneralTabTitle", columnMenuColumnsTabTitle: "columnMenuColumnsTabTitle", groupChipMenuPrevious: "groupChipMenuPrevious", groupChipMenuNext: "groupChipMenuNext", groupToolbarToolText: "groupToolbarToolText", formValidationErrorText: "formValidationErrorText", removeConfirmationDialogTitle: "removeConfirmationDialogTitle", removeConfirmationDialogContent: "removeConfirmationDialogContent", removeConfirmationDialogConfirmText: "removeConfirmationDialogConfirmText", removeConfirmationDialogRejectText: "removeConfirmationDialogRejectText", externalEditingTitle: "externalEditingTitle", externalEditingAddTitle: "externalEditingAddTitle", externalEditingSaveText: "externalEditingSaveText", externalEditingCancelText: "externalEditingCancelText" }, usesInheritance: true, ngImport: i0 });
|
|
542
578
|
}
|
|
543
579
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridMessages, decorators: [{
|
|
544
580
|
type: Directive,
|
|
@@ -588,6 +624,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
588
624
|
type: Input
|
|
589
625
|
}], booleanFilterCellLabel: [{
|
|
590
626
|
type: Input
|
|
627
|
+
}], aiAssistantApplyButtonText: [{
|
|
628
|
+
type: Input
|
|
629
|
+
}], aiAssistantToolbarToolText: [{
|
|
630
|
+
type: Input
|
|
631
|
+
}], aiAssistantWindowTitle: [{
|
|
632
|
+
type: Input
|
|
633
|
+
}], aiAssistantWindowCloseTitle: [{
|
|
634
|
+
type: Input
|
|
635
|
+
}], aiAssistantOutputCardTitle: [{
|
|
636
|
+
type: Input
|
|
637
|
+
}], aiAssistantOutputCardBodyContent: [{
|
|
638
|
+
type: Input
|
|
639
|
+
}], aiAssistantWindowMaximizeTitle: [{
|
|
640
|
+
type: Input
|
|
641
|
+
}], aiAssistantWindowMinimizeTitle: [{
|
|
642
|
+
type: Input
|
|
643
|
+
}], aiAssistantWindowRestoreTitle: [{
|
|
644
|
+
type: Input
|
|
591
645
|
}], filterEqOperator: [{
|
|
592
646
|
type: Input
|
|
593
647
|
}], filterNotEqOperator: [{
|
|
@@ -13,7 +13,7 @@ export class NavigationCursor {
|
|
|
13
13
|
set metadata(value) {
|
|
14
14
|
this._metadata = value;
|
|
15
15
|
if (isPresent(value)) {
|
|
16
|
-
const newActiveCol = value.hasDetailTemplate ? 1 : 0;
|
|
16
|
+
const newActiveCol = value.hasDetailTemplate && !this.metadata.isStacked ? 1 : 0;
|
|
17
17
|
const shouldChange = this.activeRow < value.headerRows && this.activeCol === 0;
|
|
18
18
|
if (shouldChange && newActiveCol !== this.activeCol) {
|
|
19
19
|
this.activeCol = newActiveCol;
|
|
@@ -133,6 +133,9 @@ export class NavigationCursor {
|
|
|
133
133
|
(this.metadata.hasDetailTemplate && (!row || !row.groupItem) ? 1 : 0);
|
|
134
134
|
}
|
|
135
135
|
offsetCol(offset) {
|
|
136
|
+
if (this.metadata.isStacked) {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
136
139
|
const prevRow = this.model.findRow(this.virtualRow);
|
|
137
140
|
const lastIndex = this.lastCellIndex(prevRow);
|
|
138
141
|
const virtualCol = this.virtualCol;
|
|
@@ -212,6 +215,9 @@ export class NavigationCursor {
|
|
|
212
215
|
if (!cell && (this.metadata.virtualColumns || this.metadata.hasDetailTemplate)) {
|
|
213
216
|
return this.activate(this.virtualRow + offset, this.virtualCol);
|
|
214
217
|
}
|
|
218
|
+
if (!cell) {
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
215
221
|
this.virtualRow = cell.rowIndex;
|
|
216
222
|
return this.activate(this.virtualRow, cell.colIndex);
|
|
217
223
|
}
|
|
@@ -14,11 +14,12 @@ export class NavigationMetadata {
|
|
|
14
14
|
gridElement;
|
|
15
15
|
virtualColumns;
|
|
16
16
|
columns;
|
|
17
|
+
isStacked;
|
|
17
18
|
get maxLogicalRowIndex() {
|
|
18
19
|
const dataRows = this.hasDetailTemplate ? this.dataRows * 2 : this.dataRows;
|
|
19
20
|
return this.headerRows + dataRows - 1;
|
|
20
21
|
}
|
|
21
|
-
constructor(dataRows, headerRows, isVirtual, hasPager, hasDetailTemplate, gridElement, virtualColumns, columns) {
|
|
22
|
+
constructor(dataRows, headerRows, isVirtual, hasPager, hasDetailTemplate, gridElement, virtualColumns, columns, isStacked) {
|
|
22
23
|
this.dataRows = dataRows;
|
|
23
24
|
this.headerRows = headerRows;
|
|
24
25
|
this.isVirtual = isVirtual;
|
|
@@ -27,5 +28,6 @@ export class NavigationMetadata {
|
|
|
27
28
|
this.gridElement = gridElement;
|
|
28
29
|
this.virtualColumns = virtualColumns;
|
|
29
30
|
this.columns = columns;
|
|
31
|
+
this.isStacked = isStacked;
|
|
30
32
|
}
|
|
31
33
|
}
|
|
@@ -11,7 +11,7 @@ import { GridFocusableElement } from './grid-focusable-element';
|
|
|
11
11
|
import { NavigationCursor } from './navigation-cursor';
|
|
12
12
|
import { NavigationModel } from './navigation-model';
|
|
13
13
|
import { DomEventsService } from '../common/dom-events.service';
|
|
14
|
-
import { isDocumentAvailable, isPresent, Keys } from '@progress/kendo-angular-common';
|
|
14
|
+
import { hasClasses, isDocumentAvailable, isPresent, Keys, normalizeNumpadKeys } from '@progress/kendo-angular-common';
|
|
15
15
|
import { EditService } from '../editing/edit.service';
|
|
16
16
|
import { GroupsService } from '../grouping/groups.service';
|
|
17
17
|
import { PagerContextService } from '@progress/kendo-angular-pager';
|
|
@@ -212,7 +212,12 @@ export class NavigationService {
|
|
|
212
212
|
// Closing the editor will not always trigger focusout in Firefox.
|
|
213
213
|
// To get around this, we ensure that the cell is closed after editing.
|
|
214
214
|
this.editService.changes.pipe(filter(e => e.action !== 'edit' && this.mode === 2 /* NavigationMode.Content */), filter((e) => e.action === 'cellClose' && !e.prevented), switchMap(onStable))
|
|
215
|
-
.subscribe(() =>
|
|
215
|
+
.subscribe((e) => {
|
|
216
|
+
const isInStackedCell = closest(e.originalEvent?.target, (el) => hasClasses(el, 'k-grid-stack-content'));
|
|
217
|
+
if (!isInStackedCell) {
|
|
218
|
+
this.leaveCell();
|
|
219
|
+
}
|
|
220
|
+
}));
|
|
216
221
|
this.subs.add(this.pagerContextService.pageChange
|
|
217
222
|
.subscribe(() => this.cursor.reset(0, 0)));
|
|
218
223
|
this.subs.add(this.domEvents.keydown
|
|
@@ -221,10 +226,18 @@ export class NavigationService {
|
|
|
221
226
|
.subscribe(() => {
|
|
222
227
|
this.isShiftPressed = false;
|
|
223
228
|
}));
|
|
224
|
-
this.subs.add(this.domEvents.keydown.pipe(filter(args => args.
|
|
229
|
+
this.subs.add(this.domEvents.keydown.pipe(filter(args => args.code === Keys.Tab && this.mode === 2 /* NavigationMode.Content */), switchMapTo(this.domEvents.focusOut.pipe(takeUntil(
|
|
225
230
|
// Timeout if focusOut doesn't fire very soon
|
|
226
231
|
interval(0).pipe(take(1))))))
|
|
227
232
|
.subscribe(() => this.onTabout()));
|
|
233
|
+
this.subs.add(this.domEvents.cellClick
|
|
234
|
+
.subscribe(() => {
|
|
235
|
+
if (this.isStackedMode) {
|
|
236
|
+
const stackedCells = this.activeCell.focusGroup.focusableChildren;
|
|
237
|
+
const currFocusedIndex = stackedCells.findIndex(el => el.hasFocus() || el.hostElement?.nativeElement === document.activeElement);
|
|
238
|
+
currFocusedIndex > -1 && (this.stackedFocusedCellIndex = currFocusedIndex);
|
|
239
|
+
}
|
|
240
|
+
}));
|
|
228
241
|
if (this.focusableParent) {
|
|
229
242
|
const element = new GridFocusableElement(this);
|
|
230
243
|
this.focusableParent.registerElement(element);
|
|
@@ -394,7 +407,7 @@ export class NavigationService {
|
|
|
394
407
|
success = fwd ? this.cursor.moveDown(1) : this.cursor.moveUp(1);
|
|
395
408
|
if (success) {
|
|
396
409
|
const row = this.cursor.row;
|
|
397
|
-
const colIdx = fwd ? 0 : this.cursor.lastCellIndex(row);
|
|
410
|
+
const colIdx = fwd || this.isStackedMode ? 0 : this.cursor.lastCellIndex(row);
|
|
398
411
|
this.cursor.reset(row.index, colIdx);
|
|
399
412
|
}
|
|
400
413
|
}
|
|
@@ -412,6 +425,12 @@ export class NavigationService {
|
|
|
412
425
|
if (!cell) {
|
|
413
426
|
return;
|
|
414
427
|
}
|
|
428
|
+
if (this.tableCellEntered && this.isStackedMode) {
|
|
429
|
+
this.stackedCellEntered = true;
|
|
430
|
+
}
|
|
431
|
+
else {
|
|
432
|
+
this.tableCellEntered = true;
|
|
433
|
+
}
|
|
415
434
|
const group = cell.focusGroup;
|
|
416
435
|
const focusable = group && group.canFocus();
|
|
417
436
|
this.mode = focusable ? 2 /* NavigationMode.Content */ : 1 /* NavigationMode.Cursor */;
|
|
@@ -419,6 +438,9 @@ export class NavigationService {
|
|
|
419
438
|
if (focusable) {
|
|
420
439
|
this.activateRow();
|
|
421
440
|
group.focus();
|
|
441
|
+
if (this.isStackedMode && this.stackedFocusedCellIndex === -1) {
|
|
442
|
+
this.stackedFocusedCellIndex = 0;
|
|
443
|
+
}
|
|
422
444
|
}
|
|
423
445
|
}
|
|
424
446
|
leaveCell() {
|
|
@@ -426,11 +448,22 @@ export class NavigationService {
|
|
|
426
448
|
if (!cell) {
|
|
427
449
|
return;
|
|
428
450
|
}
|
|
451
|
+
if (this.tableCellEntered) {
|
|
452
|
+
if (this.stackedCellEntered) {
|
|
453
|
+
this.stackedCellEntered = false;
|
|
454
|
+
}
|
|
455
|
+
else {
|
|
456
|
+
this.tableCellEntered = false;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
429
459
|
const group = cell.focusGroup;
|
|
430
460
|
const focusable = group && group.canFocus();
|
|
431
461
|
if (!focusable) {
|
|
432
462
|
this.deactivateElements();
|
|
433
463
|
}
|
|
464
|
+
if (this.isStackedMode && this.stackedFocusedCellIndex > -1) {
|
|
465
|
+
this.stackedFocusedCellIndex = -1;
|
|
466
|
+
}
|
|
434
467
|
this.mode = 1 /* NavigationMode.Cursor */;
|
|
435
468
|
this.cursor.announce();
|
|
436
469
|
}
|
|
@@ -445,11 +478,11 @@ export class NavigationService {
|
|
|
445
478
|
.forEach(cell => cell.focusGroup && cell.focusGroup.activate());
|
|
446
479
|
}
|
|
447
480
|
moveCursorFwd() {
|
|
448
|
-
this.lastCellRowIndex = this.activeCell
|
|
481
|
+
this.lastCellRowIndex = this.activeCell?.rowIndex;
|
|
449
482
|
return this.ctx.localization.rtl ? this.cursor.moveLeft() : this.cursor.moveRight();
|
|
450
483
|
}
|
|
451
484
|
moveCursorBwd() {
|
|
452
|
-
this.lastCellRowIndex = this.activeCell
|
|
485
|
+
this.lastCellRowIndex = this.activeCell?.rowIndex;
|
|
453
486
|
return this.ctx.localization.rtl ? this.cursor.moveRight() : this.cursor.moveLeft();
|
|
454
487
|
}
|
|
455
488
|
onCursorKeydown(args) {
|
|
@@ -468,14 +501,16 @@ export class NavigationService {
|
|
|
468
501
|
return;
|
|
469
502
|
}
|
|
470
503
|
const row = this.cursor.row;
|
|
471
|
-
|
|
472
|
-
const
|
|
473
|
-
const
|
|
504
|
+
// on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
|
|
505
|
+
const code = normalizeNumpadKeys(args);
|
|
506
|
+
const dir = code === Keys.ArrowDown ? 'Down' : 'Up';
|
|
507
|
+
const right = code === Keys.ArrowRight;
|
|
508
|
+
const isArrowKey = code === Keys.ArrowDown || code === Keys.ArrowUp || code === Keys.ArrowLeft || code === Keys.ArrowRight;
|
|
474
509
|
if (!this.isShiftPressed && args.shiftKey && isArrowKey) {
|
|
475
510
|
startNewSelection = true;
|
|
476
511
|
this.isShiftPressed = true;
|
|
477
512
|
}
|
|
478
|
-
switch (
|
|
513
|
+
switch (code) {
|
|
479
514
|
case Keys.ArrowDown:
|
|
480
515
|
case Keys.ArrowUp:
|
|
481
516
|
if (rowspan > 1) {
|
|
@@ -589,6 +624,15 @@ export class NavigationService {
|
|
|
589
624
|
break;
|
|
590
625
|
case Keys.Enter:
|
|
591
626
|
case Keys.F2: {
|
|
627
|
+
if (this.stackedCellEntered) {
|
|
628
|
+
if (code === Keys.F2 && row.dataRowIndex > -1) {
|
|
629
|
+
this.zone.run(() => {
|
|
630
|
+
this.editService.beginEdit(row.dataRowIndex);
|
|
631
|
+
});
|
|
632
|
+
this.enterCell();
|
|
633
|
+
}
|
|
634
|
+
break;
|
|
635
|
+
}
|
|
592
636
|
const groupItem = row.groupItem;
|
|
593
637
|
if (groupItem) {
|
|
594
638
|
this.zone.run(() => this.groupsService.toggleRow(groupItem));
|
|
@@ -597,6 +641,11 @@ export class NavigationService {
|
|
|
597
641
|
this.zone.run(() => this.detailsService.toggleRow(row.dataRowIndex, row.dataItem));
|
|
598
642
|
}
|
|
599
643
|
else {
|
|
644
|
+
if (code === Keys.F2 && row.dataRowIndex > -1) {
|
|
645
|
+
this.zone.run(() => {
|
|
646
|
+
this.editService.beginEdit(row.dataRowIndex);
|
|
647
|
+
});
|
|
648
|
+
}
|
|
600
649
|
this.enterCell();
|
|
601
650
|
if (!this.cursor.cell.focusGroup.isNavigable()) {
|
|
602
651
|
preventDefault = true;
|
|
@@ -604,6 +653,17 @@ export class NavigationService {
|
|
|
604
653
|
}
|
|
605
654
|
break;
|
|
606
655
|
}
|
|
656
|
+
case Keys.Backspace:
|
|
657
|
+
case Keys.Delete:
|
|
658
|
+
if (this.activeRow && this.activeRow.dataRowIndex >= 0 && this.activeRow.dataItem) {
|
|
659
|
+
if (!row.groupItem && !this.cursor.cell.detailExpandCell) {
|
|
660
|
+
this.zone.run(() => {
|
|
661
|
+
this.editService.remove(this.activeRow.dataRowIndex);
|
|
662
|
+
});
|
|
663
|
+
preventDefault = true;
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
break;
|
|
607
667
|
default:
|
|
608
668
|
if (!args.ctrlKey && !args.altKey && isPrintableCharacter(args.key)) {
|
|
609
669
|
this.enterCell();
|
|
@@ -625,13 +685,22 @@ export class NavigationService {
|
|
|
625
685
|
if (!this.onCellKeydown(args)) {
|
|
626
686
|
return;
|
|
627
687
|
}
|
|
628
|
-
|
|
629
|
-
|
|
688
|
+
// on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
|
|
689
|
+
const code = normalizeNumpadKeys(args);
|
|
690
|
+
const confirm = !args.defaultPrevented && code === Keys.Enter && isTextInput(args.target);
|
|
691
|
+
if (code === Keys.Escape || code === Keys.F2 || confirm) {
|
|
692
|
+
if (this.tableCellEntered && code === Keys.F2 && this.activeRow.dataRowIndex > -1) {
|
|
693
|
+
this.zone.run(() => {
|
|
694
|
+
this.editService.beginEdit(this.activeRow.dataRowIndex);
|
|
695
|
+
});
|
|
696
|
+
this.enterCell();
|
|
697
|
+
return;
|
|
698
|
+
}
|
|
630
699
|
this.leaveCell();
|
|
631
700
|
this.cursor.reset();
|
|
632
701
|
args.stopPropagation();
|
|
633
702
|
}
|
|
634
|
-
else if (isNavigationKey(
|
|
703
|
+
else if (isNavigationKey(code) && this.cursor.cell.focusGroup.isNavigable()) {
|
|
635
704
|
this.onCursorKeydown(args);
|
|
636
705
|
if (args.defaultPrevented) {
|
|
637
706
|
this.leaveCell();
|
|
@@ -640,9 +709,11 @@ export class NavigationService {
|
|
|
640
709
|
}
|
|
641
710
|
onCellKeydown(args) {
|
|
642
711
|
if (this.editService.isEditingCell()) {
|
|
643
|
-
|
|
644
|
-
const
|
|
645
|
-
const
|
|
712
|
+
// on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
|
|
713
|
+
const code = normalizeNumpadKeys(args);
|
|
714
|
+
const confirm = code === Keys.Enter;
|
|
715
|
+
const cancel = code === Keys.Escape;
|
|
716
|
+
const navigate = isNavigationKey(code);
|
|
646
717
|
if (confirm) {
|
|
647
718
|
this.editService.closeCell(args);
|
|
648
719
|
}
|
|
@@ -695,6 +766,12 @@ export class NavigationService {
|
|
|
695
766
|
this.cursor.announce();
|
|
696
767
|
}
|
|
697
768
|
onKeydown(args) {
|
|
769
|
+
if (this.isStackedMode) {
|
|
770
|
+
this.handleStackedKeydown(args);
|
|
771
|
+
if (args.defaultPrevented) {
|
|
772
|
+
return;
|
|
773
|
+
}
|
|
774
|
+
}
|
|
698
775
|
if (this.mode === 1 /* NavigationMode.Cursor */) {
|
|
699
776
|
this.onCursorKeydown(args);
|
|
700
777
|
}
|
|
@@ -783,6 +860,75 @@ export class NavigationService {
|
|
|
783
860
|
const offset = direction === 'Up' ? Math.abs(this.lastCellRowIndex - this.activeRowIndex) : (this.activeRowIndex + cellRowspan - this.lastCellRowIndex - 1);
|
|
784
861
|
return offset;
|
|
785
862
|
}
|
|
863
|
+
get isStackedMode() {
|
|
864
|
+
return this.ctx?.grid?.isStacked;
|
|
865
|
+
}
|
|
866
|
+
handleStackedKeydown(args) {
|
|
867
|
+
const target = args.target;
|
|
868
|
+
const stackedCell = closest(target, (el) => hasClasses(el, 'k-grid-stack-cell'));
|
|
869
|
+
const tableCell = closest(target, (el) => hasClasses(el, 'k-table-td'));
|
|
870
|
+
const isInStackedCell = closest(target, (el) => hasClasses(el, 'k-grid-stack-content'));
|
|
871
|
+
const isInCommandCell = closest(target, (el) => hasClasses(el, 'k-command-cell'));
|
|
872
|
+
if (!stackedCell || !tableCell) {
|
|
873
|
+
return;
|
|
874
|
+
}
|
|
875
|
+
if (args.code === Keys.Tab) {
|
|
876
|
+
this.handleStackedTabNavigation(args);
|
|
877
|
+
}
|
|
878
|
+
else if (args.code === Keys.Backspace || args.code === Keys.Delete) {
|
|
879
|
+
if (this.stackedCellEntered || this.editService.isEditing()) {
|
|
880
|
+
return;
|
|
881
|
+
}
|
|
882
|
+
if (this.activeRow && this.activeRow.dataRowIndex >= 0 && this.activeRow.dataItem) {
|
|
883
|
+
const row = this.cursor.row;
|
|
884
|
+
if (!row.groupItem && !this.cursor.cell.detailExpandCell) {
|
|
885
|
+
this.zone.run(() => {
|
|
886
|
+
this.editService.remove(this.activeRow.dataRowIndex);
|
|
887
|
+
});
|
|
888
|
+
args.preventDefault();
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
}
|
|
892
|
+
else if (isInStackedCell && (args.code === Keys.Enter || args.code === Keys.NumpadEnter || args.code === Keys.Escape)) {
|
|
893
|
+
this.editService.closeCell(args);
|
|
894
|
+
this.activeCell.focusGroup.activate();
|
|
895
|
+
this.activeCell.focusGroup.focusableChildren[this.stackedFocusedCellIndex]?.focus();
|
|
896
|
+
if (!isInCommandCell) {
|
|
897
|
+
args.preventDefault();
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
stackedFocusedCellIndex = -1;
|
|
902
|
+
tableCellEntered = false;
|
|
903
|
+
stackedCellEntered = false;
|
|
904
|
+
handleStackedTabNavigation(args) {
|
|
905
|
+
if (!isPresent(this.activeCell.focusGroup)) {
|
|
906
|
+
return;
|
|
907
|
+
}
|
|
908
|
+
if (this.stackedFocusedCellIndex === -1) {
|
|
909
|
+
return;
|
|
910
|
+
}
|
|
911
|
+
const stackedCells = this.activeCell.focusGroup.focusableChildren;
|
|
912
|
+
const currFocusedIndex = stackedCells.findIndex(el => el.hasFocus() || el.hostElement?.nativeElement === document.activeElement);
|
|
913
|
+
if (args.shiftKey) {
|
|
914
|
+
if (currFocusedIndex === 0) {
|
|
915
|
+
args.stopImmediatePropagation();
|
|
916
|
+
args.preventDefault();
|
|
917
|
+
}
|
|
918
|
+
else {
|
|
919
|
+
this.stackedFocusedCellIndex = currFocusedIndex - 1;
|
|
920
|
+
}
|
|
921
|
+
}
|
|
922
|
+
else {
|
|
923
|
+
if (currFocusedIndex === stackedCells.length - 1) {
|
|
924
|
+
args.stopImmediatePropagation();
|
|
925
|
+
args.preventDefault();
|
|
926
|
+
}
|
|
927
|
+
else {
|
|
928
|
+
this.stackedFocusedCellIndex = currFocusedIndex + 1;
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
}
|
|
786
932
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NavigationService, deps: [{ token: i0.NgZone }, { token: i1.DomEventsService }, { token: i2.PagerContextService }, { token: i3.ScrollRequestService }, { token: i4.GroupsService }, { token: i5.DetailsService }, { token: i6.FocusRoot }, { token: i7.EditService }, { token: i0.ChangeDetectorRef }, { token: i8.ContextService }, { token: i9.ColumnResizingService }, { token: i10.FocusableDirective, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
787
933
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NavigationService });
|
|
788
934
|
}
|
|
@@ -10,7 +10,7 @@ export const packageMetadata = {
|
|
|
10
10
|
productName: 'Kendo UI for Angular',
|
|
11
11
|
productCode: 'KENDOUIANGULAR',
|
|
12
12
|
productCodes: ['KENDOUIANGULAR'],
|
|
13
|
-
publishDate:
|
|
14
|
-
version: '19.3.0-develop.
|
|
13
|
+
publishDate: 1754998719,
|
|
14
|
+
version: '19.3.0-develop.41',
|
|
15
15
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
16
16
|
};
|
|
@@ -80,11 +80,14 @@ const createTable = (colGroups, headers, bodies, footers, size) => {
|
|
|
80
80
|
for (let idx = 1; idx < colGroups.length; idx++) {
|
|
81
81
|
appendNodes(colGroup, colGroups[idx].querySelectorAll('col'));
|
|
82
82
|
}
|
|
83
|
-
const header = createTableElement(headers);
|
|
84
83
|
const body = createTableElement(bodies);
|
|
85
|
-
|
|
84
|
+
let header;
|
|
85
|
+
if (headers.length > 0) {
|
|
86
|
+
header = createTableElement(headers);
|
|
87
|
+
setFirstCellClass(header, headers);
|
|
88
|
+
}
|
|
86
89
|
table.appendChild(colGroup);
|
|
87
|
-
table.appendChild(header);
|
|
90
|
+
header && table.appendChild(header);
|
|
88
91
|
table.appendChild(body);
|
|
89
92
|
if (footers.length) {
|
|
90
93
|
const footer = createTableElement(footers);
|
|
@@ -101,17 +104,23 @@ export const exportElement = (wrapper, size) => {
|
|
|
101
104
|
let result;
|
|
102
105
|
if (content) {
|
|
103
106
|
const colGroups = [content.querySelector('colgroup')];
|
|
104
|
-
const headers = [query.header().querySelector('thead')];
|
|
105
107
|
const bodies = [content.querySelector('tbody')];
|
|
108
|
+
const header = query.header();
|
|
106
109
|
const footer = query.footer();
|
|
110
|
+
const headers = [];
|
|
107
111
|
const footers = [];
|
|
112
|
+
if (header) {
|
|
113
|
+
headers.push(header.querySelector('thead'));
|
|
114
|
+
}
|
|
108
115
|
if (footer) {
|
|
109
116
|
footers.push(footer.querySelector('tfoot'));
|
|
110
117
|
}
|
|
111
118
|
const lockedContent = query.content(true);
|
|
112
119
|
if (lockedContent) {
|
|
120
|
+
if (headers.length > 0) {
|
|
121
|
+
headers.unshift(query.header(true).querySelector('thead'));
|
|
122
|
+
}
|
|
113
123
|
colGroups.unshift(lockedContent.querySelector('colgroup'));
|
|
114
|
-
headers.unshift(query.header(true).querySelector('thead'));
|
|
115
124
|
bodies.unshift(lockedContent.querySelector('tbody'));
|
|
116
125
|
if (footer) {
|
|
117
126
|
footers.unshift(query.footer(true).querySelector('tfoot'));
|
|
@@ -164,7 +164,9 @@ export class PDFComponent extends PDFExportComponent {
|
|
|
164
164
|
const overlayContent = overlayQuery.content();
|
|
165
165
|
overlayContent.scrollTop = content.scrollTop;
|
|
166
166
|
overlayContent.scrollLeft = content.scrollLeft;
|
|
167
|
-
|
|
167
|
+
if (!this.ctx?.grid?.isStacked) {
|
|
168
|
+
overlayQuery.header().scrollLeft = query.header().scrollLeft;
|
|
169
|
+
}
|
|
168
170
|
const footer = query.footer();
|
|
169
171
|
if (footer) {
|
|
170
172
|
overlayQuery.footer().scrollLeft = footer.scrollLeft;
|