From 9d5abe676c247c62ab46d81516e6f142ac67f775 Mon Sep 17 00:00:00 2001 From: Natxo <1172351+natxocc@users.noreply.github.com> Date: Sat, 28 Mar 2026 19:59:04 +0100 Subject: [PATCH] Update sigpro-ui.js --- ui/sigpro-ui.js | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/ui/sigpro-ui.js b/ui/sigpro-ui.js index be368e7..15518f7 100644 --- a/ui/sigpro-ui.js +++ b/ui/sigpro-ui.js @@ -621,7 +621,7 @@ export const Modal = (props, children) => { /** GRID */ export const Grid = (props) => { - const { data, options, class: className } = props; + const { data, options, api, on, class: className } = props; let gridApi = null; return $html("div", { @@ -631,10 +631,32 @@ export const Grid = (props) => { const { createGrid } = await import("./grid/grid.js"); const initialData = typeof data === "function" ? data() : data; + const initialOptions = typeof options === "function" ? options() : options; + const gridOptions = { - ...(typeof options === "function" ? options() : options), + ...initialOptions, theme: getTheme(isDark()), rowData: initialData || [], + onGridReady: (params) => { + gridApi = params.api; + if (api) api.current = gridApi; + if (on?.onGridReady) on.onGridReady(params); + }, + onFilterChanged: (e) => on?.onFilterChanged?.(e), + onModelUpdated: (e) => on?.onModelUpdated?.(e), + onGridSizeChanged: (e) => on?.onGridSizeChanged?.(e), + onFirstDataRendered: (e) => on?.onFirstDataRendered?.(e), + onRowValueChanged: (e) => on?.onRowValueChanged?.(e), + onSelectionChanged: (e) => on?.onSelectionChanged?.(e), + onCellClicked: (e) => on?.onCellClicked?.(e), + onCellDoubleClicked: (e) => on?.onCellDoubleClicked?.(e), + onCellValueChanged: (e) => on?.onCellValueChanged?.(e), + onRowClicked: (e) => on?.onRowClicked?.(e), + onSortChanged: (e) => on?.onSortChanged?.(e), + onContextMenu: (e) => on?.onContextMenu?.(e), + onColumnResized: (e) => on?.onColumnResized?.(e), + onColumnMoved: (e) => on?.onColumnMoved?.(e), + onRowDataUpdated: (e) => on?.onRowDataUpdated?.(e) }; gridApi = createGrid(container, gridOptions); @@ -656,6 +678,7 @@ export const Grid = (props) => { container._cleanups.add(() => { if (gridApi) { gridApi.destroy(); + if (api) api.current = null; gridApi = null; } });