From 057ff0ca7e7d0b839b6113d161fcfb550d4dc08a Mon Sep 17 00:00:00 2001 From: Danilo Bassi Date: Fri, 20 Feb 2026 16:47:29 -0300 Subject: [PATCH 1/2] feat: add metadata to widgets --- projects/angular-grid-layout/src/lib/grid.component.ts | 1 + projects/angular-grid-layout/src/lib/grid.definitions.ts | 1 + projects/angular-grid-layout/src/lib/utils/grid.utils.ts | 2 +- .../src/lib/utils/react-grid-layout.utils.ts | 2 ++ 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/angular-grid-layout/src/lib/grid.component.ts b/projects/angular-grid-layout/src/lib/grid.component.ts index e24d5b5..fc655b7 100644 --- a/projects/angular-grid-layout/src/lib/grid.component.ts +++ b/projects/angular-grid-layout/src/lib/grid.component.ts @@ -702,6 +702,7 @@ export class KtdGridComponent implements OnChanges, AfterContentInit, AfterConte minH: item.minH, maxW: item.maxW, maxH: item.maxH, + metadata: item.metadata })) as KtdGridLayout); } else { // TODO: Need we really to emit if there is no layout change but drag started and ended? diff --git a/projects/angular-grid-layout/src/lib/grid.definitions.ts b/projects/angular-grid-layout/src/lib/grid.definitions.ts index b41131c..1fb2404 100644 --- a/projects/angular-grid-layout/src/lib/grid.definitions.ts +++ b/projects/angular-grid-layout/src/lib/grid.definitions.ts @@ -13,6 +13,7 @@ export interface KtdGridLayoutItem { minH?: number; maxW?: number; maxH?: number; + metadata?: any; } export type KtdGridCompactType = CompactType; diff --git a/projects/angular-grid-layout/src/lib/utils/grid.utils.ts b/projects/angular-grid-layout/src/lib/utils/grid.utils.ts index f4eca5b..02bd8fd 100644 --- a/projects/angular-grid-layout/src/lib/utils/grid.utils.ts +++ b/projects/angular-grid-layout/src/lib/utils/grid.utils.ts @@ -29,7 +29,7 @@ export function ktdGetGridItemRowHeight(layout: KtdGridLayout, gridHeight: numbe export function ktdGridCompact(layout: KtdGridLayout, compactType: KtdGridCompactType, cols: number): KtdGridLayout { return compact(layout, compactType, cols) // Prune react-grid-layout compact extra properties. - .map(item => ({ id: item.id, x: item.x, y: item.y, w: item.w, h: item.h, minW: item.minW, minH: item.minH, maxW: item.maxW, maxH: item.maxH })); + .map(item => ({ id: item.id, x: item.x, y: item.y, w: item.w, h: item.h, minW: item.minW, minH: item.minH, maxW: item.maxW, maxH: item.maxH, metadata: item.metadata })); } /** diff --git a/projects/angular-grid-layout/src/lib/utils/react-grid-layout.utils.ts b/projects/angular-grid-layout/src/lib/utils/react-grid-layout.utils.ts index 58bf306..40311ba 100644 --- a/projects/angular-grid-layout/src/lib/utils/react-grid-layout.utils.ts +++ b/projects/angular-grid-layout/src/lib/utils/react-grid-layout.utils.ts @@ -20,6 +20,7 @@ export type LayoutItem = { static?: boolean; isDraggable?: boolean | null | undefined; isResizable?: boolean | null | undefined; + metadata?: any; }; export type Layout = Array; export type Position = { @@ -110,6 +111,7 @@ export function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem { id: layoutItem.id, moved: !!layoutItem.moved, static: !!layoutItem.static, + metadata: layoutItem.metadata, }; if (layoutItem.minW !== undefined) { clonedLayoutItem.minW = layoutItem.minW;} From 017e698105ca107eea87558138376bc907eb4923 Mon Sep 17 00:00:00 2001 From: Danilo Bassi Date: Fri, 20 Feb 2026 17:38:59 -0300 Subject: [PATCH 2/2] feat(demo-app): updated example to use metadata --- .../app/playground/playground.component.html | 6 ++- .../app/playground/playground.component.scss | 27 +++++++++++++ .../app/playground/playground.component.ts | 38 ++++++++++++------- 3 files changed, 56 insertions(+), 15 deletions(-) diff --git a/projects/demo-app/src/app/playground/playground.component.html b/projects/demo-app/src/app/playground/playground.component.html index c1b8aad..9088110 100644 --- a/projects/demo-app/src/app/playground/playground.component.html +++ b/projects/demo-app/src/app/playground/playground.component.html @@ -177,7 +177,11 @@ [dragStartThreshold]="dragStartThreshold" [draggable]="!disableDrag" [resizable]="!disableResize"> -
{{item.id}}
+
+
+ +
+