@vuu-ui/vuu-table 0.13.63 → 0.13.65

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.
@@ -1 +1 @@
1
- {"version":3,"file":"useTableContextMenu.js","sources":["../../../packages/vuu-table/src/useTableContextMenu.ts"],"sourcesContent":["import { useContextMenu } from \"@vuu-ui/vuu-context-menu\";\nimport { DataSource, DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnDescriptor,\n TableContextMenuOptions,\n TableMenuLocation,\n} from \"@vuu-ui/vuu-table-types\";\nimport { buildColumnMap } from \"@vuu-ui/vuu-utils\";\nimport { MouseEvent, useCallback } from \"react\";\nimport { getAriaColIndex, getAriaRowIndex } from \"./table-dom-utils\";\n\nexport interface TableContextMenuHookProps {\n allowContextMenu?: boolean;\n // columns: RuntimeColumnDescriptor[];\n columns: ColumnDescriptor[];\n data: DataSourceRow[];\n dataSource: DataSource;\n getSelectedRows: () => DataSourceRow[];\n // TODO can we eliminate this it is only needed to convert aria row index to actual row index\n headerCount?: number;\n}\n\nconst NO_ROWS: DataSourceRow[] = [] as const;\n\nexport const isTableLocation = (\n location: string,\n): location is TableMenuLocation =>\n [\"grid\", \"header\", \"filter\"].includes(location);\n\nconst getDataSourceRow = (rows: DataSourceRow[], rowIndex: number) => {\n const row = rows.find(([idx]) => idx === rowIndex);\n if (row) {\n return row;\n } else {\n throw Error(\n `useTableContextMenu data row not found for rowIndex ${rowIndex}`,\n );\n }\n};\n\nexport const useTableContextMenu = ({\n allowContextMenu = true,\n columns,\n data,\n dataSource,\n getSelectedRows,\n headerCount = 1,\n}: TableContextMenuHookProps) => {\n const showContextMenu = useContextMenu();\n\n const onContextMenu = useCallback(\n (evt: MouseEvent<HTMLElement>) => {\n const target = evt.target as HTMLElement;\n const cellEl = target?.closest<HTMLElement>(\"div[role='cell']\");\n const rowEl = target?.closest<HTMLElement>(\"div[role='row']\");\n if (cellEl && rowEl) {\n const { selectedRowsCount } = dataSource;\n const columnMap = buildColumnMap(columns);\n const rowIndex = getAriaRowIndex(rowEl) - headerCount - 1;\n const cellIndex = getAriaColIndex(cellEl) - 1;\n const row = getDataSourceRow(data, rowIndex);\n const column = columns[cellIndex];\n\n // TODO does it really make sense to collect selected rows ?\n // We only have access to rows in local cache\n const menuOptions: TableContextMenuOptions = {\n columnMap,\n column,\n columns,\n row,\n selectedRows: selectedRowsCount === 0 ? NO_ROWS : getSelectedRows(),\n viewport: dataSource.viewport,\n };\n\n const menuShowing = showContextMenu(evt, \"grid\", menuOptions, {\n onOpenChange: (isOpen: boolean) => {\n console.log(`[useTableContextMenu] onOpenChange ${isOpen}`);\n cellEl.classList.remove(\"ContextOpen\");\n },\n });\n if (menuShowing) {\n cellEl.classList.add(\"ContextOpen\");\n }\n }\n },\n [columns, data, dataSource, getSelectedRows, headerCount, showContextMenu],\n );\n\n return allowContextMenu ? onContextMenu : undefined;\n};\n"],"names":["useContextMenu","useCallback","buildColumnMap","getAriaRowIndex","getAriaColIndex"],"mappings":";;;;;;;AAsBA,MAAM,UAA2B,EAAC;AAErB,MAAA,eAAA,GAAkB,CAC7B,QAEA,KAAA,CAAC,QAAQ,QAAU,EAAA,QAAQ,CAAE,CAAA,QAAA,CAAS,QAAQ;AAEhD,MAAM,gBAAA,GAAmB,CAAC,IAAA,EAAuB,QAAqB,KAAA;AACpE,EAAM,MAAA,GAAA,GAAM,KAAK,IAAK,CAAA,CAAC,CAAC,GAAG,CAAA,KAAM,QAAQ,QAAQ,CAAA;AACjD,EAAA,IAAI,GAAK,EAAA;AACP,IAAO,OAAA,GAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA,KAAA;AAAA,MACJ,uDAAuD,QAAQ,CAAA;AAAA,KACjE;AAAA;AAEJ,CAAA;AAEO,MAAM,sBAAsB,CAAC;AAAA,EAClC,gBAAmB,GAAA,IAAA;AAAA,EACnB,OAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAc,GAAA;AAChB,CAAiC,KAAA;AAC/B,EAAA,MAAM,kBAAkBA,6BAAe,EAAA;AAEvC,EAAA,MAAM,aAAgB,GAAAC,iBAAA;AAAA,IACpB,CAAC,GAAiC,KAAA;AAChC,MAAA,MAAM,SAAS,GAAI,CAAA,MAAA;AACnB,MAAM,MAAA,MAAA,GAAS,MAAQ,EAAA,OAAA,CAAqB,kBAAkB,CAAA;AAC9D,MAAM,MAAA,KAAA,GAAQ,MAAQ,EAAA,OAAA,CAAqB,iBAAiB,CAAA;AAC5D,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAM,MAAA,EAAE,mBAAsB,GAAA,UAAA;AAC9B,QAAM,MAAA,SAAA,GAAYC,wBAAe,OAAO,CAAA;AACxC,QAAA,MAAM,QAAW,GAAAC,6BAAA,CAAgB,KAAK,CAAA,GAAI,WAAc,GAAA,CAAA;AACxD,QAAM,MAAA,SAAA,GAAYC,6BAAgB,CAAA,MAAM,CAAI,GAAA,CAAA;AAC5C,QAAM,MAAA,GAAA,GAAM,gBAAiB,CAAA,IAAA,EAAM,QAAQ,CAAA;AAC3C,QAAM,MAAA,MAAA,GAAS,QAAQ,SAAS,CAAA;AAIhC,QAAA,MAAM,WAAuC,GAAA;AAAA,UAC3C,SAAA;AAAA,UACA,MAAA;AAAA,UACA,OAAA;AAAA,UACA,GAAA;AAAA,UACA,YAAc,EAAA,iBAAA,KAAsB,CAAI,GAAA,OAAA,GAAU,eAAgB,EAAA;AAAA,UAClE,UAAU,UAAW,CAAA;AAAA,SACvB;AAEA,QAAA,MAAM,WAAc,GAAA,eAAA,CAAgB,GAAK,EAAA,MAAA,EAAQ,WAAa,EAAA;AAAA,UAC5D,YAAA,EAAc,CAAC,MAAoB,KAAA;AACjC,YAAQ,OAAA,CAAA,GAAA,CAAI,CAAsC,mCAAA,EAAA,MAAM,CAAE,CAAA,CAAA;AAC1D,YAAO,MAAA,CAAA,SAAA,CAAU,OAAO,aAAa,CAAA;AAAA;AACvC,SACD,CAAA;AACD,QAAA,IAAI,WAAa,EAAA;AACf,UAAO,MAAA,CAAA,SAAA,CAAU,IAAI,aAAa,CAAA;AAAA;AACpC;AACF,KACF;AAAA,IACA,CAAC,OAAS,EAAA,IAAA,EAAM,UAAY,EAAA,eAAA,EAAiB,aAAa,eAAe;AAAA,GAC3E;AAEA,EAAA,OAAO,mBAAmB,aAAgB,GAAA,KAAA,CAAA;AAC5C;;;;;"}
1
+ {"version":3,"file":"useTableContextMenu.js","sources":["../../../packages/vuu-table/src/useTableContextMenu.ts"],"sourcesContent":["import { useContextMenu } from \"@vuu-ui/vuu-context-menu\";\nimport { DataSource, DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnDescriptor,\n TableContextMenuOptions,\n TableMenuLocation,\n} from \"@vuu-ui/vuu-table-types\";\nimport { buildColumnMap } from \"@vuu-ui/vuu-utils\";\nimport { MouseEvent, useCallback } from \"react\";\nimport { getAriaColIndex, getAriaRowIndex } from \"./table-dom-utils\";\n\nexport interface TableContextMenuHookProps {\n allowContextMenu?: boolean;\n columns: ColumnDescriptor[];\n data: DataSourceRow[];\n dataSource: DataSource;\n getSelectedRows: () => DataSourceRow[];\n // TODO can we eliminate this it is only needed to convert aria row index to actual row index\n headerCount?: number;\n}\n\nconst NO_ROWS: DataSourceRow[] = [] as const;\n\nexport const isTableLocation = (\n location: string,\n): location is TableMenuLocation =>\n [\"grid\", \"header\", \"filter\"].includes(location);\n\nconst getDataSourceRow = (rows: DataSourceRow[], rowIndex: number) => {\n const row = rows.find(([idx]) => idx === rowIndex);\n if (row) {\n return row;\n } else {\n throw Error(\n `useTableContextMenu data row not found for rowIndex ${rowIndex}`,\n );\n }\n};\n\nexport const useTableContextMenu = ({\n allowContextMenu = true,\n columns,\n data,\n dataSource,\n getSelectedRows,\n headerCount = 1,\n}: TableContextMenuHookProps) => {\n const showContextMenu = useContextMenu();\n\n const onContextMenu = useCallback(\n (evt: MouseEvent<HTMLElement>) => {\n const target = evt.target as HTMLElement;\n const cellEl = target?.closest<HTMLElement>(\"div[role='cell']\");\n const rowEl = target?.closest<HTMLElement>(\"div[role='row']\");\n if (cellEl && rowEl) {\n const { selectedRowsCount } = dataSource;\n const columnMap = buildColumnMap(columns);\n const rowIndex = getAriaRowIndex(rowEl) - headerCount - 1;\n const cellIndex = getAriaColIndex(cellEl) - 1;\n const row = getDataSourceRow(data, rowIndex);\n const column = columns[cellIndex];\n\n // TODO does it really make sense to collect selected rows ?\n // We only have access to rows in local cache\n const menuOptions: TableContextMenuOptions = {\n columnMap,\n column,\n columns,\n row,\n selectedRows: selectedRowsCount === 0 ? NO_ROWS : getSelectedRows(),\n viewport: dataSource.viewport,\n };\n\n const menuShowing = showContextMenu(evt, \"grid\", menuOptions, {\n onOpenChange: (isOpen: boolean) => {\n console.log(`[useTableContextMenu] onOpenChange ${isOpen}`);\n cellEl.classList.remove(\"ContextOpen\");\n },\n });\n if (menuShowing) {\n cellEl.classList.add(\"ContextOpen\");\n }\n }\n },\n [columns, data, dataSource, getSelectedRows, headerCount, showContextMenu],\n );\n\n return allowContextMenu ? onContextMenu : undefined;\n};\n"],"names":["useContextMenu","useCallback","buildColumnMap","getAriaRowIndex","getAriaColIndex"],"mappings":";;;;;;;AAqBA,MAAM,UAA2B,EAAC;AAErB,MAAA,eAAA,GAAkB,CAC7B,QAEA,KAAA,CAAC,QAAQ,QAAU,EAAA,QAAQ,CAAE,CAAA,QAAA,CAAS,QAAQ;AAEhD,MAAM,gBAAA,GAAmB,CAAC,IAAA,EAAuB,QAAqB,KAAA;AACpE,EAAM,MAAA,GAAA,GAAM,KAAK,IAAK,CAAA,CAAC,CAAC,GAAG,CAAA,KAAM,QAAQ,QAAQ,CAAA;AACjD,EAAA,IAAI,GAAK,EAAA;AACP,IAAO,OAAA,GAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA,KAAA;AAAA,MACJ,uDAAuD,QAAQ,CAAA;AAAA,KACjE;AAAA;AAEJ,CAAA;AAEO,MAAM,sBAAsB,CAAC;AAAA,EAClC,gBAAmB,GAAA,IAAA;AAAA,EACnB,OAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAc,GAAA;AAChB,CAAiC,KAAA;AAC/B,EAAA,MAAM,kBAAkBA,6BAAe,EAAA;AAEvC,EAAA,MAAM,aAAgB,GAAAC,iBAAA;AAAA,IACpB,CAAC,GAAiC,KAAA;AAChC,MAAA,MAAM,SAAS,GAAI,CAAA,MAAA;AACnB,MAAM,MAAA,MAAA,GAAS,MAAQ,EAAA,OAAA,CAAqB,kBAAkB,CAAA;AAC9D,MAAM,MAAA,KAAA,GAAQ,MAAQ,EAAA,OAAA,CAAqB,iBAAiB,CAAA;AAC5D,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAM,MAAA,EAAE,mBAAsB,GAAA,UAAA;AAC9B,QAAM,MAAA,SAAA,GAAYC,wBAAe,OAAO,CAAA;AACxC,QAAA,MAAM,QAAW,GAAAC,6BAAA,CAAgB,KAAK,CAAA,GAAI,WAAc,GAAA,CAAA;AACxD,QAAM,MAAA,SAAA,GAAYC,6BAAgB,CAAA,MAAM,CAAI,GAAA,CAAA;AAC5C,QAAM,MAAA,GAAA,GAAM,gBAAiB,CAAA,IAAA,EAAM,QAAQ,CAAA;AAC3C,QAAM,MAAA,MAAA,GAAS,QAAQ,SAAS,CAAA;AAIhC,QAAA,MAAM,WAAuC,GAAA;AAAA,UAC3C,SAAA;AAAA,UACA,MAAA;AAAA,UACA,OAAA;AAAA,UACA,GAAA;AAAA,UACA,YAAc,EAAA,iBAAA,KAAsB,CAAI,GAAA,OAAA,GAAU,eAAgB,EAAA;AAAA,UAClE,UAAU,UAAW,CAAA;AAAA,SACvB;AAEA,QAAA,MAAM,WAAc,GAAA,eAAA,CAAgB,GAAK,EAAA,MAAA,EAAQ,WAAa,EAAA;AAAA,UAC5D,YAAA,EAAc,CAAC,MAAoB,KAAA;AACjC,YAAQ,OAAA,CAAA,GAAA,CAAI,CAAsC,mCAAA,EAAA,MAAM,CAAE,CAAA,CAAA;AAC1D,YAAO,MAAA,CAAA,SAAA,CAAU,OAAO,aAAa,CAAA;AAAA;AACvC,SACD,CAAA;AACD,QAAA,IAAI,WAAa,EAAA;AACf,UAAO,MAAA,CAAA,SAAA,CAAU,IAAI,aAAa,CAAA;AAAA;AACpC;AACF,KACF;AAAA,IACA,CAAC,OAAS,EAAA,IAAA,EAAM,UAAY,EAAA,eAAA,EAAiB,aAAa,eAAe;AAAA,GAC3E;AAEA,EAAA,OAAO,mBAAmB,aAAgB,GAAA,KAAA,CAAA;AAC5C;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTableContextMenu.js","sources":["../../../packages/vuu-table/src/useTableContextMenu.ts"],"sourcesContent":["import { useContextMenu } from \"@vuu-ui/vuu-context-menu\";\nimport { DataSource, DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnDescriptor,\n TableContextMenuOptions,\n TableMenuLocation,\n} from \"@vuu-ui/vuu-table-types\";\nimport { buildColumnMap } from \"@vuu-ui/vuu-utils\";\nimport { MouseEvent, useCallback } from \"react\";\nimport { getAriaColIndex, getAriaRowIndex } from \"./table-dom-utils\";\n\nexport interface TableContextMenuHookProps {\n allowContextMenu?: boolean;\n // columns: RuntimeColumnDescriptor[];\n columns: ColumnDescriptor[];\n data: DataSourceRow[];\n dataSource: DataSource;\n getSelectedRows: () => DataSourceRow[];\n // TODO can we eliminate this it is only needed to convert aria row index to actual row index\n headerCount?: number;\n}\n\nconst NO_ROWS: DataSourceRow[] = [] as const;\n\nexport const isTableLocation = (\n location: string,\n): location is TableMenuLocation =>\n [\"grid\", \"header\", \"filter\"].includes(location);\n\nconst getDataSourceRow = (rows: DataSourceRow[], rowIndex: number) => {\n const row = rows.find(([idx]) => idx === rowIndex);\n if (row) {\n return row;\n } else {\n throw Error(\n `useTableContextMenu data row not found for rowIndex ${rowIndex}`,\n );\n }\n};\n\nexport const useTableContextMenu = ({\n allowContextMenu = true,\n columns,\n data,\n dataSource,\n getSelectedRows,\n headerCount = 1,\n}: TableContextMenuHookProps) => {\n const showContextMenu = useContextMenu();\n\n const onContextMenu = useCallback(\n (evt: MouseEvent<HTMLElement>) => {\n const target = evt.target as HTMLElement;\n const cellEl = target?.closest<HTMLElement>(\"div[role='cell']\");\n const rowEl = target?.closest<HTMLElement>(\"div[role='row']\");\n if (cellEl && rowEl) {\n const { selectedRowsCount } = dataSource;\n const columnMap = buildColumnMap(columns);\n const rowIndex = getAriaRowIndex(rowEl) - headerCount - 1;\n const cellIndex = getAriaColIndex(cellEl) - 1;\n const row = getDataSourceRow(data, rowIndex);\n const column = columns[cellIndex];\n\n // TODO does it really make sense to collect selected rows ?\n // We only have access to rows in local cache\n const menuOptions: TableContextMenuOptions = {\n columnMap,\n column,\n columns,\n row,\n selectedRows: selectedRowsCount === 0 ? NO_ROWS : getSelectedRows(),\n viewport: dataSource.viewport,\n };\n\n const menuShowing = showContextMenu(evt, \"grid\", menuOptions, {\n onOpenChange: (isOpen: boolean) => {\n console.log(`[useTableContextMenu] onOpenChange ${isOpen}`);\n cellEl.classList.remove(\"ContextOpen\");\n },\n });\n if (menuShowing) {\n cellEl.classList.add(\"ContextOpen\");\n }\n }\n },\n [columns, data, dataSource, getSelectedRows, headerCount, showContextMenu],\n );\n\n return allowContextMenu ? onContextMenu : undefined;\n};\n"],"names":[],"mappings":";;;;;AAsBA,MAAM,UAA2B,EAAC;AAErB,MAAA,eAAA,GAAkB,CAC7B,QAEA,KAAA,CAAC,QAAQ,QAAU,EAAA,QAAQ,CAAE,CAAA,QAAA,CAAS,QAAQ;AAEhD,MAAM,gBAAA,GAAmB,CAAC,IAAA,EAAuB,QAAqB,KAAA;AACpE,EAAM,MAAA,GAAA,GAAM,KAAK,IAAK,CAAA,CAAC,CAAC,GAAG,CAAA,KAAM,QAAQ,QAAQ,CAAA;AACjD,EAAA,IAAI,GAAK,EAAA;AACP,IAAO,OAAA,GAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA,KAAA;AAAA,MACJ,uDAAuD,QAAQ,CAAA;AAAA,KACjE;AAAA;AAEJ,CAAA;AAEO,MAAM,sBAAsB,CAAC;AAAA,EAClC,gBAAmB,GAAA,IAAA;AAAA,EACnB,OAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAc,GAAA;AAChB,CAAiC,KAAA;AAC/B,EAAA,MAAM,kBAAkB,cAAe,EAAA;AAEvC,EAAA,MAAM,aAAgB,GAAA,WAAA;AAAA,IACpB,CAAC,GAAiC,KAAA;AAChC,MAAA,MAAM,SAAS,GAAI,CAAA,MAAA;AACnB,MAAM,MAAA,MAAA,GAAS,MAAQ,EAAA,OAAA,CAAqB,kBAAkB,CAAA;AAC9D,MAAM,MAAA,KAAA,GAAQ,MAAQ,EAAA,OAAA,CAAqB,iBAAiB,CAAA;AAC5D,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAM,MAAA,EAAE,mBAAsB,GAAA,UAAA;AAC9B,QAAM,MAAA,SAAA,GAAY,eAAe,OAAO,CAAA;AACxC,QAAA,MAAM,QAAW,GAAA,eAAA,CAAgB,KAAK,CAAA,GAAI,WAAc,GAAA,CAAA;AACxD,QAAM,MAAA,SAAA,GAAY,eAAgB,CAAA,MAAM,CAAI,GAAA,CAAA;AAC5C,QAAM,MAAA,GAAA,GAAM,gBAAiB,CAAA,IAAA,EAAM,QAAQ,CAAA;AAC3C,QAAM,MAAA,MAAA,GAAS,QAAQ,SAAS,CAAA;AAIhC,QAAA,MAAM,WAAuC,GAAA;AAAA,UAC3C,SAAA;AAAA,UACA,MAAA;AAAA,UACA,OAAA;AAAA,UACA,GAAA;AAAA,UACA,YAAc,EAAA,iBAAA,KAAsB,CAAI,GAAA,OAAA,GAAU,eAAgB,EAAA;AAAA,UAClE,UAAU,UAAW,CAAA;AAAA,SACvB;AAEA,QAAA,MAAM,WAAc,GAAA,eAAA,CAAgB,GAAK,EAAA,MAAA,EAAQ,WAAa,EAAA;AAAA,UAC5D,YAAA,EAAc,CAAC,MAAoB,KAAA;AACjC,YAAQ,OAAA,CAAA,GAAA,CAAI,CAAsC,mCAAA,EAAA,MAAM,CAAE,CAAA,CAAA;AAC1D,YAAO,MAAA,CAAA,SAAA,CAAU,OAAO,aAAa,CAAA;AAAA;AACvC,SACD,CAAA;AACD,QAAA,IAAI,WAAa,EAAA;AACf,UAAO,MAAA,CAAA,SAAA,CAAU,IAAI,aAAa,CAAA;AAAA;AACpC;AACF,KACF;AAAA,IACA,CAAC,OAAS,EAAA,IAAA,EAAM,UAAY,EAAA,eAAA,EAAiB,aAAa,eAAe;AAAA,GAC3E;AAEA,EAAA,OAAO,mBAAmB,aAAgB,GAAA,KAAA,CAAA;AAC5C;;;;"}
1
+ {"version":3,"file":"useTableContextMenu.js","sources":["../../../packages/vuu-table/src/useTableContextMenu.ts"],"sourcesContent":["import { useContextMenu } from \"@vuu-ui/vuu-context-menu\";\nimport { DataSource, DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnDescriptor,\n TableContextMenuOptions,\n TableMenuLocation,\n} from \"@vuu-ui/vuu-table-types\";\nimport { buildColumnMap } from \"@vuu-ui/vuu-utils\";\nimport { MouseEvent, useCallback } from \"react\";\nimport { getAriaColIndex, getAriaRowIndex } from \"./table-dom-utils\";\n\nexport interface TableContextMenuHookProps {\n allowContextMenu?: boolean;\n columns: ColumnDescriptor[];\n data: DataSourceRow[];\n dataSource: DataSource;\n getSelectedRows: () => DataSourceRow[];\n // TODO can we eliminate this it is only needed to convert aria row index to actual row index\n headerCount?: number;\n}\n\nconst NO_ROWS: DataSourceRow[] = [] as const;\n\nexport const isTableLocation = (\n location: string,\n): location is TableMenuLocation =>\n [\"grid\", \"header\", \"filter\"].includes(location);\n\nconst getDataSourceRow = (rows: DataSourceRow[], rowIndex: number) => {\n const row = rows.find(([idx]) => idx === rowIndex);\n if (row) {\n return row;\n } else {\n throw Error(\n `useTableContextMenu data row not found for rowIndex ${rowIndex}`,\n );\n }\n};\n\nexport const useTableContextMenu = ({\n allowContextMenu = true,\n columns,\n data,\n dataSource,\n getSelectedRows,\n headerCount = 1,\n}: TableContextMenuHookProps) => {\n const showContextMenu = useContextMenu();\n\n const onContextMenu = useCallback(\n (evt: MouseEvent<HTMLElement>) => {\n const target = evt.target as HTMLElement;\n const cellEl = target?.closest<HTMLElement>(\"div[role='cell']\");\n const rowEl = target?.closest<HTMLElement>(\"div[role='row']\");\n if (cellEl && rowEl) {\n const { selectedRowsCount } = dataSource;\n const columnMap = buildColumnMap(columns);\n const rowIndex = getAriaRowIndex(rowEl) - headerCount - 1;\n const cellIndex = getAriaColIndex(cellEl) - 1;\n const row = getDataSourceRow(data, rowIndex);\n const column = columns[cellIndex];\n\n // TODO does it really make sense to collect selected rows ?\n // We only have access to rows in local cache\n const menuOptions: TableContextMenuOptions = {\n columnMap,\n column,\n columns,\n row,\n selectedRows: selectedRowsCount === 0 ? NO_ROWS : getSelectedRows(),\n viewport: dataSource.viewport,\n };\n\n const menuShowing = showContextMenu(evt, \"grid\", menuOptions, {\n onOpenChange: (isOpen: boolean) => {\n console.log(`[useTableContextMenu] onOpenChange ${isOpen}`);\n cellEl.classList.remove(\"ContextOpen\");\n },\n });\n if (menuShowing) {\n cellEl.classList.add(\"ContextOpen\");\n }\n }\n },\n [columns, data, dataSource, getSelectedRows, headerCount, showContextMenu],\n );\n\n return allowContextMenu ? onContextMenu : undefined;\n};\n"],"names":[],"mappings":";;;;;AAqBA,MAAM,UAA2B,EAAC;AAErB,MAAA,eAAA,GAAkB,CAC7B,QAEA,KAAA,CAAC,QAAQ,QAAU,EAAA,QAAQ,CAAE,CAAA,QAAA,CAAS,QAAQ;AAEhD,MAAM,gBAAA,GAAmB,CAAC,IAAA,EAAuB,QAAqB,KAAA;AACpE,EAAM,MAAA,GAAA,GAAM,KAAK,IAAK,CAAA,CAAC,CAAC,GAAG,CAAA,KAAM,QAAQ,QAAQ,CAAA;AACjD,EAAA,IAAI,GAAK,EAAA;AACP,IAAO,OAAA,GAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA,KAAA;AAAA,MACJ,uDAAuD,QAAQ,CAAA;AAAA,KACjE;AAAA;AAEJ,CAAA;AAEO,MAAM,sBAAsB,CAAC;AAAA,EAClC,gBAAmB,GAAA,IAAA;AAAA,EACnB,OAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAc,GAAA;AAChB,CAAiC,KAAA;AAC/B,EAAA,MAAM,kBAAkB,cAAe,EAAA;AAEvC,EAAA,MAAM,aAAgB,GAAA,WAAA;AAAA,IACpB,CAAC,GAAiC,KAAA;AAChC,MAAA,MAAM,SAAS,GAAI,CAAA,MAAA;AACnB,MAAM,MAAA,MAAA,GAAS,MAAQ,EAAA,OAAA,CAAqB,kBAAkB,CAAA;AAC9D,MAAM,MAAA,KAAA,GAAQ,MAAQ,EAAA,OAAA,CAAqB,iBAAiB,CAAA;AAC5D,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAM,MAAA,EAAE,mBAAsB,GAAA,UAAA;AAC9B,QAAM,MAAA,SAAA,GAAY,eAAe,OAAO,CAAA;AACxC,QAAA,MAAM,QAAW,GAAA,eAAA,CAAgB,KAAK,CAAA,GAAI,WAAc,GAAA,CAAA;AACxD,QAAM,MAAA,SAAA,GAAY,eAAgB,CAAA,MAAM,CAAI,GAAA,CAAA;AAC5C,QAAM,MAAA,GAAA,GAAM,gBAAiB,CAAA,IAAA,EAAM,QAAQ,CAAA;AAC3C,QAAM,MAAA,MAAA,GAAS,QAAQ,SAAS,CAAA;AAIhC,QAAA,MAAM,WAAuC,GAAA;AAAA,UAC3C,SAAA;AAAA,UACA,MAAA;AAAA,UACA,OAAA;AAAA,UACA,GAAA;AAAA,UACA,YAAc,EAAA,iBAAA,KAAsB,CAAI,GAAA,OAAA,GAAU,eAAgB,EAAA;AAAA,UAClE,UAAU,UAAW,CAAA;AAAA,SACvB;AAEA,QAAA,MAAM,WAAc,GAAA,eAAA,CAAgB,GAAK,EAAA,MAAA,EAAQ,WAAa,EAAA;AAAA,UAC5D,YAAA,EAAc,CAAC,MAAoB,KAAA;AACjC,YAAQ,OAAA,CAAA,GAAA,CAAI,CAAsC,mCAAA,EAAA,MAAM,CAAE,CAAA,CAAA;AAC1D,YAAO,MAAA,CAAA,SAAA,CAAU,OAAO,aAAa,CAAA;AAAA;AACvC,SACD,CAAA;AACD,QAAA,IAAI,WAAa,EAAA;AACf,UAAO,MAAA,CAAA,SAAA,CAAU,IAAI,aAAa,CAAA;AAAA;AACpC;AACF,KACF;AAAA,IACA,CAAC,OAAS,EAAA,IAAA,EAAM,UAAY,EAAA,eAAA,EAAiB,aAAa,eAAe;AAAA,GAC3E;AAEA,EAAA,OAAO,mBAAmB,aAAgB,GAAA,KAAA,CAAA;AAC5C;;;;"}
package/package.json CHANGED
@@ -1,22 +1,22 @@
1
1
  {
2
- "version": "0.13.63",
2
+ "version": "0.13.65",
3
3
  "author": "heswell",
4
4
  "license": "Apache-2.0",
5
5
  "devDependencies": {
6
- "@vuu-ui/vuu-data-types": "0.13.63",
7
- "@vuu-ui/vuu-table-types": "0.13.63",
8
- "@vuu-ui/vuu-protocol-types": "0.13.63"
6
+ "@vuu-ui/vuu-data-types": "0.13.65",
7
+ "@vuu-ui/vuu-table-types": "0.13.65",
8
+ "@vuu-ui/vuu-protocol-types": "0.13.65"
9
9
  },
10
10
  "dependencies": {
11
11
  "@salt-ds/core": "1.48.0",
12
12
  "@salt-ds/styles": "0.2.1",
13
13
  "@salt-ds/window": "0.1.1",
14
- "@vuu-ui/vuu-context-menu": "0.13.63",
15
- "@vuu-ui/vuu-data-react": "0.13.63",
16
- "@vuu-ui/vuu-popups": "0.13.63",
17
- "@vuu-ui/vuu-table-extras": "0.13.63",
18
- "@vuu-ui/vuu-ui-controls": "0.13.63",
19
- "@vuu-ui/vuu-utils": "0.13.63"
14
+ "@vuu-ui/vuu-context-menu": "0.13.65",
15
+ "@vuu-ui/vuu-data-react": "0.13.65",
16
+ "@vuu-ui/vuu-popups": "0.13.65",
17
+ "@vuu-ui/vuu-table-extras": "0.13.65",
18
+ "@vuu-ui/vuu-ui-controls": "0.13.65",
19
+ "@vuu-ui/vuu-utils": "0.13.65"
20
20
  },
21
21
  "peerDependencies": {
22
22
  "clsx": "^2.0.0",