@progress/kendo-angular-grid 19.3.0-develop.9 → 19.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +2 -1
- 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/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/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/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/filter-cell-operators.component.mjs +2 -2
- package/esm2022/filtering/filter-row.component.mjs +5 -2
- package/esm2022/filtering/menu/filter-menu-dropdownlist.directive.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 +168 -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 +273 -0
- package/esm2022/rendering/toolbar/tools/ai-assistant/utils.mjs +74 -0
- package/esm2022/rendering/toolbar/tools/column-chooser-tool.directive.mjs +5 -4
- 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/fesm2022/progress-kendo-angular-grid.mjs +2583 -639
- 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 +131 -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
|
@@ -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,21 @@ 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
|
+
if (!isPresent(stackedCells) || stackedCells.length === 0) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
const currFocusedIndex = stackedCells.findIndex(el => el.hasFocus() || el.hostElement?.nativeElement === document.activeElement);
|
|
241
|
+
currFocusedIndex > -1 && (this.stackedFocusedCellIndex = currFocusedIndex);
|
|
242
|
+
}
|
|
243
|
+
}));
|
|
228
244
|
if (this.focusableParent) {
|
|
229
245
|
const element = new GridFocusableElement(this);
|
|
230
246
|
this.focusableParent.registerElement(element);
|
|
@@ -394,7 +410,7 @@ export class NavigationService {
|
|
|
394
410
|
success = fwd ? this.cursor.moveDown(1) : this.cursor.moveUp(1);
|
|
395
411
|
if (success) {
|
|
396
412
|
const row = this.cursor.row;
|
|
397
|
-
const colIdx = fwd ? 0 : this.cursor.lastCellIndex(row);
|
|
413
|
+
const colIdx = fwd || this.isStackedMode ? 0 : this.cursor.lastCellIndex(row);
|
|
398
414
|
this.cursor.reset(row.index, colIdx);
|
|
399
415
|
}
|
|
400
416
|
}
|
|
@@ -412,6 +428,12 @@ export class NavigationService {
|
|
|
412
428
|
if (!cell) {
|
|
413
429
|
return;
|
|
414
430
|
}
|
|
431
|
+
if (this.tableCellEntered && this.isStackedMode) {
|
|
432
|
+
this.stackedCellEntered = true;
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
this.tableCellEntered = true;
|
|
436
|
+
}
|
|
415
437
|
const group = cell.focusGroup;
|
|
416
438
|
const focusable = group && group.canFocus();
|
|
417
439
|
this.mode = focusable ? 2 /* NavigationMode.Content */ : 1 /* NavigationMode.Cursor */;
|
|
@@ -419,6 +441,9 @@ export class NavigationService {
|
|
|
419
441
|
if (focusable) {
|
|
420
442
|
this.activateRow();
|
|
421
443
|
group.focus();
|
|
444
|
+
if (this.isStackedMode && this.stackedFocusedCellIndex === -1) {
|
|
445
|
+
this.stackedFocusedCellIndex = 0;
|
|
446
|
+
}
|
|
422
447
|
}
|
|
423
448
|
}
|
|
424
449
|
leaveCell() {
|
|
@@ -426,11 +451,22 @@ export class NavigationService {
|
|
|
426
451
|
if (!cell) {
|
|
427
452
|
return;
|
|
428
453
|
}
|
|
454
|
+
if (this.tableCellEntered) {
|
|
455
|
+
if (this.stackedCellEntered) {
|
|
456
|
+
this.stackedCellEntered = false;
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
this.tableCellEntered = false;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
429
462
|
const group = cell.focusGroup;
|
|
430
463
|
const focusable = group && group.canFocus();
|
|
431
464
|
if (!focusable) {
|
|
432
465
|
this.deactivateElements();
|
|
433
466
|
}
|
|
467
|
+
if (this.isStackedMode && this.stackedFocusedCellIndex > -1) {
|
|
468
|
+
this.stackedFocusedCellIndex = -1;
|
|
469
|
+
}
|
|
434
470
|
this.mode = 1 /* NavigationMode.Cursor */;
|
|
435
471
|
this.cursor.announce();
|
|
436
472
|
}
|
|
@@ -445,11 +481,11 @@ export class NavigationService {
|
|
|
445
481
|
.forEach(cell => cell.focusGroup && cell.focusGroup.activate());
|
|
446
482
|
}
|
|
447
483
|
moveCursorFwd() {
|
|
448
|
-
this.lastCellRowIndex = this.activeCell
|
|
484
|
+
this.lastCellRowIndex = this.activeCell?.rowIndex;
|
|
449
485
|
return this.ctx.localization.rtl ? this.cursor.moveLeft() : this.cursor.moveRight();
|
|
450
486
|
}
|
|
451
487
|
moveCursorBwd() {
|
|
452
|
-
this.lastCellRowIndex = this.activeCell
|
|
488
|
+
this.lastCellRowIndex = this.activeCell?.rowIndex;
|
|
453
489
|
return this.ctx.localization.rtl ? this.cursor.moveRight() : this.cursor.moveLeft();
|
|
454
490
|
}
|
|
455
491
|
onCursorKeydown(args) {
|
|
@@ -468,14 +504,16 @@ export class NavigationService {
|
|
|
468
504
|
return;
|
|
469
505
|
}
|
|
470
506
|
const row = this.cursor.row;
|
|
471
|
-
|
|
472
|
-
const
|
|
473
|
-
const
|
|
507
|
+
// on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
|
|
508
|
+
const code = normalizeNumpadKeys(args);
|
|
509
|
+
const dir = code === Keys.ArrowDown ? 'Down' : 'Up';
|
|
510
|
+
const right = code === Keys.ArrowRight;
|
|
511
|
+
const isArrowKey = code === Keys.ArrowDown || code === Keys.ArrowUp || code === Keys.ArrowLeft || code === Keys.ArrowRight;
|
|
474
512
|
if (!this.isShiftPressed && args.shiftKey && isArrowKey) {
|
|
475
513
|
startNewSelection = true;
|
|
476
514
|
this.isShiftPressed = true;
|
|
477
515
|
}
|
|
478
|
-
switch (
|
|
516
|
+
switch (code) {
|
|
479
517
|
case Keys.ArrowDown:
|
|
480
518
|
case Keys.ArrowUp:
|
|
481
519
|
if (rowspan > 1) {
|
|
@@ -589,6 +627,15 @@ export class NavigationService {
|
|
|
589
627
|
break;
|
|
590
628
|
case Keys.Enter:
|
|
591
629
|
case Keys.F2: {
|
|
630
|
+
if (this.stackedCellEntered) {
|
|
631
|
+
if (code === Keys.F2 && row.dataRowIndex > -1) {
|
|
632
|
+
this.zone.run(() => {
|
|
633
|
+
this.editService.beginEdit(row.dataRowIndex);
|
|
634
|
+
});
|
|
635
|
+
this.enterCell();
|
|
636
|
+
}
|
|
637
|
+
break;
|
|
638
|
+
}
|
|
592
639
|
const groupItem = row.groupItem;
|
|
593
640
|
if (groupItem) {
|
|
594
641
|
this.zone.run(() => this.groupsService.toggleRow(groupItem));
|
|
@@ -597,6 +644,11 @@ export class NavigationService {
|
|
|
597
644
|
this.zone.run(() => this.detailsService.toggleRow(row.dataRowIndex, row.dataItem));
|
|
598
645
|
}
|
|
599
646
|
else {
|
|
647
|
+
if (code === Keys.F2 && row.dataRowIndex > -1) {
|
|
648
|
+
this.zone.run(() => {
|
|
649
|
+
this.editService.beginEdit(row.dataRowIndex);
|
|
650
|
+
});
|
|
651
|
+
}
|
|
600
652
|
this.enterCell();
|
|
601
653
|
if (!this.cursor.cell.focusGroup.isNavigable()) {
|
|
602
654
|
preventDefault = true;
|
|
@@ -604,6 +656,17 @@ export class NavigationService {
|
|
|
604
656
|
}
|
|
605
657
|
break;
|
|
606
658
|
}
|
|
659
|
+
case Keys.Backspace:
|
|
660
|
+
case Keys.Delete:
|
|
661
|
+
if (this.activeRow && this.activeRow.dataRowIndex >= 0 && this.activeRow.dataItem) {
|
|
662
|
+
if (!row.groupItem && !this.cursor.cell.detailExpandCell) {
|
|
663
|
+
this.zone.run(() => {
|
|
664
|
+
this.editService.remove(this.activeRow.dataRowIndex);
|
|
665
|
+
});
|
|
666
|
+
preventDefault = true;
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
break;
|
|
607
670
|
default:
|
|
608
671
|
if (!args.ctrlKey && !args.altKey && isPrintableCharacter(args.key)) {
|
|
609
672
|
this.enterCell();
|
|
@@ -625,13 +688,22 @@ export class NavigationService {
|
|
|
625
688
|
if (!this.onCellKeydown(args)) {
|
|
626
689
|
return;
|
|
627
690
|
}
|
|
628
|
-
|
|
629
|
-
|
|
691
|
+
// on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
|
|
692
|
+
const code = normalizeNumpadKeys(args);
|
|
693
|
+
const confirm = !args.defaultPrevented && code === Keys.Enter && isTextInput(args.target);
|
|
694
|
+
if (code === Keys.Escape || code === Keys.F2 || confirm) {
|
|
695
|
+
if (this.tableCellEntered && code === Keys.F2 && this.activeRow.dataRowIndex > -1) {
|
|
696
|
+
this.zone.run(() => {
|
|
697
|
+
this.editService.beginEdit(this.activeRow.dataRowIndex);
|
|
698
|
+
});
|
|
699
|
+
this.enterCell();
|
|
700
|
+
return;
|
|
701
|
+
}
|
|
630
702
|
this.leaveCell();
|
|
631
703
|
this.cursor.reset();
|
|
632
704
|
args.stopPropagation();
|
|
633
705
|
}
|
|
634
|
-
else if (isNavigationKey(
|
|
706
|
+
else if (isNavigationKey(code) && this.cursor.cell.focusGroup.isNavigable()) {
|
|
635
707
|
this.onCursorKeydown(args);
|
|
636
708
|
if (args.defaultPrevented) {
|
|
637
709
|
this.leaveCell();
|
|
@@ -640,9 +712,11 @@ export class NavigationService {
|
|
|
640
712
|
}
|
|
641
713
|
onCellKeydown(args) {
|
|
642
714
|
if (this.editService.isEditingCell()) {
|
|
643
|
-
|
|
644
|
-
const
|
|
645
|
-
const
|
|
715
|
+
// on some keyboards arrow keys, PageUp/Down, and Home/End are mapped to Numpad keys
|
|
716
|
+
const code = normalizeNumpadKeys(args);
|
|
717
|
+
const confirm = code === Keys.Enter;
|
|
718
|
+
const cancel = code === Keys.Escape;
|
|
719
|
+
const navigate = isNavigationKey(code);
|
|
646
720
|
if (confirm) {
|
|
647
721
|
this.editService.closeCell(args);
|
|
648
722
|
}
|
|
@@ -695,6 +769,12 @@ export class NavigationService {
|
|
|
695
769
|
this.cursor.announce();
|
|
696
770
|
}
|
|
697
771
|
onKeydown(args) {
|
|
772
|
+
if (this.isStackedMode) {
|
|
773
|
+
this.handleStackedKeydown(args);
|
|
774
|
+
if (args.defaultPrevented) {
|
|
775
|
+
return;
|
|
776
|
+
}
|
|
777
|
+
}
|
|
698
778
|
if (this.mode === 1 /* NavigationMode.Cursor */) {
|
|
699
779
|
this.onCursorKeydown(args);
|
|
700
780
|
}
|
|
@@ -783,6 +863,78 @@ export class NavigationService {
|
|
|
783
863
|
const offset = direction === 'Up' ? Math.abs(this.lastCellRowIndex - this.activeRowIndex) : (this.activeRowIndex + cellRowspan - this.lastCellRowIndex - 1);
|
|
784
864
|
return offset;
|
|
785
865
|
}
|
|
866
|
+
get isStackedMode() {
|
|
867
|
+
return this.ctx?.grid?.isStacked;
|
|
868
|
+
}
|
|
869
|
+
handleStackedKeydown(args) {
|
|
870
|
+
const target = args.target;
|
|
871
|
+
const stackedCell = closest(target, (el) => hasClasses(el, 'k-grid-stack-cell'));
|
|
872
|
+
const tableCell = closest(target, (el) => hasClasses(el, 'k-table-td'));
|
|
873
|
+
const isInStackedCell = closest(target, (el) => hasClasses(el, 'k-grid-stack-content'));
|
|
874
|
+
const isInCommandCell = closest(target, (el) => hasClasses(el, 'k-command-cell'));
|
|
875
|
+
if (!stackedCell || !tableCell) {
|
|
876
|
+
return;
|
|
877
|
+
}
|
|
878
|
+
if (args.code === Keys.Tab) {
|
|
879
|
+
this.handleStackedTabNavigation(args);
|
|
880
|
+
}
|
|
881
|
+
else if (args.code === Keys.Backspace || args.code === Keys.Delete) {
|
|
882
|
+
if (this.stackedCellEntered || this.editService.isEditing()) {
|
|
883
|
+
return;
|
|
884
|
+
}
|
|
885
|
+
if (this.activeRow && this.activeRow.dataRowIndex >= 0 && this.activeRow.dataItem) {
|
|
886
|
+
const row = this.cursor.row;
|
|
887
|
+
if (!row.groupItem && !this.cursor.cell.detailExpandCell) {
|
|
888
|
+
this.zone.run(() => {
|
|
889
|
+
this.editService.remove(this.activeRow.dataRowIndex);
|
|
890
|
+
});
|
|
891
|
+
args.preventDefault();
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
else if (isInStackedCell && (args.code === Keys.Enter || args.code === Keys.NumpadEnter || args.code === Keys.Escape)) {
|
|
896
|
+
this.editService.closeCell(args);
|
|
897
|
+
this.activeCell.focusGroup.activate();
|
|
898
|
+
this.activeCell.focusGroup.focusableChildren[this.stackedFocusedCellIndex]?.focus();
|
|
899
|
+
if (!isInCommandCell) {
|
|
900
|
+
args.preventDefault();
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
stackedFocusedCellIndex = -1;
|
|
905
|
+
tableCellEntered = false;
|
|
906
|
+
stackedCellEntered = false;
|
|
907
|
+
handleStackedTabNavigation(args) {
|
|
908
|
+
if (!isPresent(this.activeCell.focusGroup)) {
|
|
909
|
+
return;
|
|
910
|
+
}
|
|
911
|
+
if (this.stackedFocusedCellIndex === -1) {
|
|
912
|
+
return;
|
|
913
|
+
}
|
|
914
|
+
const stackedCells = this.activeCell?.focusGroup?.focusableChildren;
|
|
915
|
+
if (!isPresent(stackedCells) || stackedCells.length === 0) {
|
|
916
|
+
return;
|
|
917
|
+
}
|
|
918
|
+
const currFocusedIndex = stackedCells.findIndex(el => el.hasFocus() || el.hostElement?.nativeElement === document.activeElement);
|
|
919
|
+
if (args.shiftKey) {
|
|
920
|
+
if (currFocusedIndex === 0) {
|
|
921
|
+
args.stopImmediatePropagation();
|
|
922
|
+
args.preventDefault();
|
|
923
|
+
}
|
|
924
|
+
else {
|
|
925
|
+
this.stackedFocusedCellIndex = currFocusedIndex - 1;
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
else {
|
|
929
|
+
if (currFocusedIndex === stackedCells.length - 1) {
|
|
930
|
+
args.stopImmediatePropagation();
|
|
931
|
+
args.preventDefault();
|
|
932
|
+
}
|
|
933
|
+
else {
|
|
934
|
+
this.stackedFocusedCellIndex = currFocusedIndex + 1;
|
|
935
|
+
}
|
|
936
|
+
}
|
|
937
|
+
}
|
|
786
938
|
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
939
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NavigationService });
|
|
788
940
|
}
|
|
@@ -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
|
|
13
|
+
publishDate: 1755030618,
|
|
14
|
+
version: '19.3.0',
|
|
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;
|