From 2d67fca1a0c75b6d3be416d4ef0553b55f573dce Mon Sep 17 00:00:00 2001 From: andrasincze Date: Mon, 5 Oct 2026 14:59:13 +0200 Subject: [PATCH 1/2] feat(table): support master-detail toggle in a data column - Add masterDetailToggleColumnId configuration - Preserve the trailing detail column when no target is specified - Fall back to the default column for invalid or hidden targets --- .../app/pages/table/table-demo.component.html | 1 + .../src/app/pages/table/table-demo.service.ts | 12 ++++ projects/widgets/table/table-defaults.ts | 3 +- .../widgets/table/table.component.docs.json | 7 +++ projects/widgets/table/table.component.html | 59 ++++++++++++------- projects/widgets/table/table.component.ts | 58 +++++++++++++----- 6 files changed, 103 insertions(+), 37 deletions(-) diff --git a/projects/demo/src/app/pages/table/table-demo.component.html b/projects/demo/src/app/pages/table/table-demo.component.html index e64fbc90..a5ba5020 100644 --- a/projects/demo/src/app/pages/table/table-demo.component.html +++ b/projects/demo/src/app/pages/table/table-demo.component.html @@ -20,6 +20,7 @@ [enableRowSelection]="_tableDemoService.model.enableRowSelection" [enableSorting]="_tableDemoService.model.enableSorting" [masterDetail]="_tableDemoService.model.masterDetail" + [masterDetailToggleColumnId]="_tableDemoService.model.masterDetailToggleColumnId" [showDetailHeader]="_tableDemoService.model.showDetailHeader" [detailStickyColumns]="_tableDemoService.model.detailStickyColumns" [hasDetailRow]="_hasDetailRow" diff --git a/projects/demo/src/app/pages/table/table-demo.service.ts b/projects/demo/src/app/pages/table/table-demo.service.ts index e21e204a..0cfdb78e 100644 --- a/projects/demo/src/app/pages/table/table-demo.service.ts +++ b/projects/demo/src/app/pages/table/table-demo.service.ts @@ -44,6 +44,7 @@ export type TableInputControls = { clearSelectionOnChange: boolean; enableSorting: boolean; masterDetail: boolean; + masterDetailToggleColumnId: string | null; showDetailHeader: boolean; detailStickyColumns: boolean; withBorder: boolean; @@ -234,6 +235,17 @@ export class TableDemoService { default: defaultConfig.masterDetail, control: DemoControl.SWITCH, }, + masterDetailToggleColumnId: { + description: this._widgetDocs.getDescription(TABLE_DOCS_PATH, 'masterDetailToggleColumnId', + 'Visible data column ID for the master-detail toggle.'), + type: 'string | null', + default: defaultConfig.masterDetailToggleColumnId, + control: DemoControl.SELECT, + list: [ + '', + ...this.colDefs.filter((column) => column.visible !== false).map((column) => column.id), + ], + }, showDetailHeader: { description: this._widgetDocs.getDescription( TABLE_DOCS_PATH, diff --git a/projects/widgets/table/table-defaults.ts b/projects/widgets/table/table-defaults.ts index cf6d9dc4..27a2b131 100644 --- a/projects/widgets/table/table-defaults.ts +++ b/projects/widgets/table/table-defaults.ts @@ -13,6 +13,7 @@ export interface IdsTableDefaultConfig { fixedHeader?: boolean, enableSorting?: boolean, masterDetail?: boolean, + masterDetailToggleColumnId?: string | null, detailTemplateName?: string, detailStickyColumns?: boolean, showDetailHeader?: boolean, @@ -38,6 +39,7 @@ export function IDS_TABLE_DEFAULT_CONFIG_FACTORY(): Required