@coveord/plasma-mantine 54.0.1 → 54.0.2

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":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.tsx"],"names":[],"mappings":"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"}
@@ -165,6 +165,23 @@ var Table = function(props) {
165
165
  }
166
166
  });
167
167
  });
168
+ (0, _react.useEffect)(function() {
169
+ // Update the selected rows data when the data prop changes
170
+ if (store.getSelectedRows().length > 0) {
171
+ store.setRowSelection(function(old) {
172
+ var rowsById = table.getRowModel().rowsById;
173
+ var newSelection = _object_spread._({}, old);
174
+ Object.keys(old).forEach(function(rowId) {
175
+ if (rowsById[rowId]) {
176
+ newSelection[rowId] = rowsById[rowId].original;
177
+ }
178
+ });
179
+ return (0, _fastdeepequal.default)(newSelection, old) ? old : newSelection;
180
+ });
181
+ }
182
+ }, [
183
+ data
184
+ ]);
168
185
  var containerRef = (0, _react.useRef)();
169
186
  (0, _hooks.useClickOutside)(function() {
170
187
  if (!store.multiRowSelectionEnabled) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {Box, Center, Factory, Loader, useProps, useStyles} from '@mantine/core';\nimport {useClickOutside, useMergedRef} from '@mantine/hooks';\nimport {\n ColumnDef,\n Row,\n RowSelectionState,\n defaultColumnSizing,\n getCoreRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport isEqual from 'fast-deep-equal';\nimport {Children, ForwardedRef, ReactElement, useRef} from 'react';\nimport {CustomComponentThemeExtend, identity} from '../../utils';\nimport classes from './Table.module.css';\nimport {TableLayout, TableProps} from './Table.types';\nimport {TableProvider} from './TableContext';\nimport {TableLayouts} from './layouts/TableLayouts';\nimport {TableActionItem, TableActionItemStylesNames, TableHeaderActionsStylesNames} from './table-actions';\nimport {TableActionsListStylesNames} from './table-actions/TableActionsList';\nimport {TableActionsColumn} from './table-column/TableActionsColumn';\nimport {\n TableAccordionColumn,\n TableCollapsibleColumn,\n TableCollapsibleColumnStylesNames,\n} from './table-column/TableCollapsibleColumn';\nimport {TableSelectableColumn} from './table-column/TableSelectableColumn';\nimport {TableColumnsSelector, TableColumnsSelectorStylesNames} from './table-columns-selector/TableColumnsSelector';\nimport {TableDateRangePicker, TableDateRangePickerStylesNames} from './table-date-range-picker/TableDateRangePicker';\nimport {TableFilter, TableFilterStylesNames} from './table-filter/TableFilter';\nimport {TableFooter} from './table-footer/TableFooter';\nimport {TableHeader, TableHeaderStylesNames} from './table-header/TableHeader';\nimport {TableThStylesNames} from './table-header/Th';\nimport {TableLastUpdated, TableLastUpdatedStylesNames} from './table-last-updated/TableLastUpdated';\nimport {TableLoading} from './table-loading/TableLoading';\nimport {TableNoData} from './table-no-data/TableNoData';\nimport {TablePagination} from './table-pagination/TablePagination';\nimport {TablePerPage} from './table-per-page/TablePerPage';\nimport {TablePredicate, TablePredicateStylesNames} from './table-predicate/TablePredicate';\nimport {TableState} from './use-table';\n\ntype TableStylesNames =\n | 'root'\n | 'table'\n | 'header'\n | 'body'\n | TableHeaderActionsStylesNames\n | TableActionsListStylesNames\n | TableActionItemStylesNames\n | TableCollapsibleColumnStylesNames\n | TableDateRangePickerStylesNames\n | TableFilterStylesNames\n | TableHeaderStylesNames\n | TableThStylesNames\n | TableLastUpdatedStylesNames\n | TablePredicateStylesNames\n | TableColumnsSelectorStylesNames;\n\nexport type PlasmaTableFactory = Factory<{\n props: TableProps<unknown>;\n ref: HTMLDivElement;\n stylesNames: TableStylesNames;\n staticComponents: {\n AccordionColumn: typeof TableAccordionColumn;\n ActionsColumn: typeof TableActionsColumn;\n ActionItem: typeof TableActionItem;\n CollapsibleColumn: typeof TableCollapsibleColumn;\n ColumnsSelector: typeof TableColumnsSelector;\n DateRangePicker: typeof TableDateRangePicker;\n Filter: typeof TableFilter;\n Footer: typeof TableFooter;\n Header: typeof TableHeader;\n LastUpdated: typeof TableLastUpdated;\n Layouts: typeof TableLayouts;\n Loading: typeof TableLoading;\n NoData: typeof TableNoData;\n Pagination: typeof TablePagination;\n PerPage: typeof TablePerPage;\n Predicate: typeof TablePredicate;\n };\n}>;\n\nconst defaultProps: Partial<TableProps<unknown>> = {\n layouts: [TableLayouts.Rows as TableLayout],\n layoutProps: {},\n loading: false,\n additionalRootNodes: [],\n options: {},\n getRowActions: () => [],\n};\n\nexport const Table = <T,>(props: TableProps<T> & {ref?: ForwardedRef<HTMLDivElement>}) => {\n const {\n store,\n data,\n getRowId,\n getRowAttributes,\n getRowExpandedContent,\n getRowActions,\n columns,\n layouts,\n layoutProps,\n children,\n loading,\n additionalRootNodes,\n options,\n ref,\n\n // Style props\n style,\n className,\n classNames,\n styles,\n unstyled,\n ...others\n } = useProps('PlasmaTable', defaultProps as TableProps<T>, props);\n\n const getStyles = useStyles<PlasmaTableFactory>({\n name: 'PlasmaTable',\n classes,\n props: props as TableProps<unknown>,\n className,\n style,\n classNames,\n styles,\n unstyled,\n });\n\n const convertedChildren = Children.toArray(children) as ReactElement[];\n const header = convertedChildren.find((child) => child.type === TableHeader);\n const footer = convertedChildren.find((child) => child.type === TableFooter);\n const lastUpdated = convertedChildren.find((child) => child.type === TableLastUpdated);\n const noData = convertedChildren.find((child) => child.type === TableNoData);\n\n const table = useReactTable({\n data,\n state: {\n globalFilter: store.state.globalFilter,\n sorting: store.state.sorting,\n pagination: store.state.pagination,\n columnVisibility: store.state.columnVisibility,\n expanded: store.state.expanded,\n },\n onGlobalFilterChange: store.setGlobalFilter,\n onExpandedChange: store.setExpanded,\n onSortingChange: store.setSorting,\n onPaginationChange: store.setPagination,\n onColumnVisibilityChange: store.setColumnVisibility,\n columns: store.multiRowSelectionEnabled ? [TableSelectableColumn as ColumnDef<T>].concat(columns) : columns,\n getCoreRowModel: getCoreRowModel(),\n manualPagination: options?.getPaginationRowModel === undefined,\n enableMultiRowSelection: !!store.multiRowSelectionEnabled,\n getRowId,\n getRowCanExpand: (row: Row<T>) => !!getRowExpandedContent?.(row.original, row.index, row) ?? false,\n enableRowSelection: !loading,\n defaultColumn: {\n size: undefined,\n minSize: defaultColumnSizing.minSize,\n maxSize: defaultColumnSizing.maxSize,\n },\n rowCount: options?.getFilteredRowModel ? undefined : store.state.totalEntries,\n ...options,\n });\n\n table.setOptions((prev) => ({\n ...prev,\n state: {\n ...prev.state,\n rowSelection: store.state.rowSelection as RowSelectionState,\n },\n onRowSelectionChange: (rowSelectionUpdater) => {\n store.setRowSelection((old) => {\n const newRowSelection = (\n rowSelectionUpdater instanceof Function\n ? rowSelectionUpdater(old as RowSelectionState)\n : rowSelectionUpdater\n ) as TableState<T>['rowSelection'];\n\n if (isEqual(old, newRowSelection)) {\n return old;\n }\n\n const rows = table.getRowModel().rowsById;\n\n Object.keys(newRowSelection).forEach((rowId) => {\n if (newRowSelection[rowId] === true) {\n if (!rows[rowId]) {\n console.error(\n 'The table was not initialized properly, the rowSelection state should contain an object of type Record<string, TData>.',\n );\n }\n newRowSelection[rowId] = rows[rowId]?.original ?? (true as T);\n }\n });\n\n return newRowSelection;\n });\n },\n }));\n\n const containerRef = useRef<HTMLDivElement>();\n useClickOutside(\n () => {\n if (!store.multiRowSelectionEnabled) {\n store.clearRowSelection();\n }\n },\n null,\n [containerRef.current, ...additionalRootNodes],\n );\n const mergedRef = useMergedRef(containerRef, ref);\n\n if (!data) {\n return (\n <Center style={{flexGrow: 1}}>\n <Loader />\n </Center>\n );\n }\n\n const Layout =\n store.state.layout === null ? layouts[0] : layouts.find(({displayName}) => displayName === store.state.layout);\n const hasRows = table.getRowModel().rows.length > 0;\n\n return (\n <Box ref={mergedRef} {...others} {...getStyles('root')}>\n <TableProvider<T> value={{getStyles, getRowActions, store, table, layouts, containerRef}}>\n <Layout>\n {store.isVacant && !store.isFiltered ? (\n noData\n ) : (\n <>\n <Box component=\"table\" {...getStyles('table')} pb=\"sm\" mod={{loading}}>\n <thead {...getStyles('header')}>\n {!!header ? (\n <tr>\n <th style={{padding: 0}} colSpan={table.getAllColumns().length}>\n {header}\n </th>\n </tr>\n ) : null}\n <Layout.Header\n getRowExpandedContent={getRowExpandedContent}\n getRowAttributes={getRowAttributes}\n loading={loading}\n {...layoutProps}\n />\n </thead>\n <tbody {...getStyles('body')}>\n {hasRows ? (\n <Layout.Body\n getRowExpandedContent={getRowExpandedContent}\n getRowAttributes={getRowAttributes}\n loading={loading}\n {...layoutProps}\n />\n ) : (\n <tr>\n <td colSpan={table.getAllColumns().length}>\n <TableLoading visible={loading || !store.isFiltered}>\n {noData}\n </TableLoading>\n </td>\n </tr>\n )}\n </tbody>\n </Box>\n {footer}\n {lastUpdated}\n </>\n )}\n </Layout>\n </TableProvider>\n </Box>\n );\n};\n\nexport const TableComponentsOrder = {\n MultiSelectInfo: 7,\n Actions: 6,\n Predicate: 5,\n Filter: 4,\n DateRangePicker: 3,\n ColumnsSelector: 2,\n LayoutControl: 1,\n};\n\nTable.AccordionColumn = TableAccordionColumn;\nTable.ActionsColumn = TableActionsColumn;\nTable.ActionItem = TableActionItem;\nTable.CollapsibleColumn = TableCollapsibleColumn;\nTable.ColumnsSelector = TableColumnsSelector;\nTable.DateRangePicker = TableDateRangePicker;\nTable.Filter = TableFilter;\nTable.Footer = TableFooter;\nTable.Header = TableHeader;\nTable.LastUpdated = TableLastUpdated;\nTable.Layouts = TableLayouts;\nTable.Loading = TableLoading;\nTable.NoData = TableNoData;\nTable.Pagination = TablePagination;\nTable.PerPage = TablePerPage;\nTable.Predicate = TablePredicate;\n\nTable.extend = identity as CustomComponentThemeExtend<PlasmaTableFactory>;\n"],"names":["Table","TableComponentsOrder","defaultProps","layouts","TableLayouts","Rows","layoutProps","loading","additionalRootNodes","options","getRowActions","props","useProps","store","data","getRowId","getRowAttributes","getRowExpandedContent","columns","children","ref","style","className","classNames","styles","unstyled","others","getStyles","useStyles","name","classes","convertedChildren","Children","toArray","header","find","child","type","TableHeader","footer","TableFooter","lastUpdated","TableLastUpdated","noData","TableNoData","table","useReactTable","state","globalFilter","sorting","pagination","columnVisibility","expanded","onGlobalFilterChange","setGlobalFilter","onExpandedChange","setExpanded","onSortingChange","setSorting","onPaginationChange","setPagination","onColumnVisibilityChange","setColumnVisibility","multiRowSelectionEnabled","TableSelectableColumn","concat","getCoreRowModel","manualPagination","getPaginationRowModel","undefined","enableMultiRowSelection","getRowCanExpand","row","original","index","enableRowSelection","defaultColumn","size","minSize","defaultColumnSizing","maxSize","rowCount","getFilteredRowModel","totalEntries","setOptions","prev","rowSelection","onRowSelectionChange","rowSelectionUpdater","setRowSelection","old","newRowSelection","Function","isEqual","rows","getRowModel","rowsById","Object","keys","forEach","rowId","console","error","containerRef","useRef","useClickOutside","clearRowSelection","current","mergedRef","useMergedRef","Center","flexGrow","Loader","Layout","layout","displayName","hasRows","length","Box","TableProvider","value","isVacant","isFiltered","component","pb","mod","thead","tr","th","padding","colSpan","getAllColumns","Header","tbody","Body","td","TableLoading","visible","MultiSelectInfo","Actions","Predicate","Filter","DateRangePicker","ColumnsSelector","LayoutControl","AccordionColumn","TableAccordionColumn","ActionsColumn","TableActionsColumn","ActionItem","TableActionItem","CollapsibleColumn","TableCollapsibleColumn","TableColumnsSelector","TableDateRangePicker","TableFilter","Footer","LastUpdated","Layouts","Loading","NoData","Pagination","TablePagination","PerPage","TablePerPage","TablePredicate","extend","identity"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {Box, Center, Factory, Loader, useProps, useStyles} from '@mantine/core';\nimport {useClickOutside, useMergedRef} from '@mantine/hooks';\nimport {\n ColumnDef,\n Row,\n RowSelectionState,\n defaultColumnSizing,\n getCoreRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport isEqual from 'fast-deep-equal';\nimport {Children, ForwardedRef, ReactElement, useEffect, useRef} from 'react';\nimport {CustomComponentThemeExtend, identity} from '../../utils';\nimport classes from './Table.module.css';\nimport {TableLayout, TableProps} from './Table.types';\nimport {TableProvider} from './TableContext';\nimport {TableLayouts} from './layouts/TableLayouts';\nimport {TableActionItem, TableActionItemStylesNames, TableHeaderActionsStylesNames} from './table-actions';\nimport {TableActionsListStylesNames} from './table-actions/TableActionsList';\nimport {TableActionsColumn} from './table-column/TableActionsColumn';\nimport {\n TableAccordionColumn,\n TableCollapsibleColumn,\n TableCollapsibleColumnStylesNames,\n} from './table-column/TableCollapsibleColumn';\nimport {TableSelectableColumn} from './table-column/TableSelectableColumn';\nimport {TableColumnsSelector, TableColumnsSelectorStylesNames} from './table-columns-selector/TableColumnsSelector';\nimport {TableDateRangePicker, TableDateRangePickerStylesNames} from './table-date-range-picker/TableDateRangePicker';\nimport {TableFilter, TableFilterStylesNames} from './table-filter/TableFilter';\nimport {TableFooter} from './table-footer/TableFooter';\nimport {TableHeader, TableHeaderStylesNames} from './table-header/TableHeader';\nimport {TableThStylesNames} from './table-header/Th';\nimport {TableLastUpdated, TableLastUpdatedStylesNames} from './table-last-updated/TableLastUpdated';\nimport {TableLoading} from './table-loading/TableLoading';\nimport {TableNoData} from './table-no-data/TableNoData';\nimport {TablePagination} from './table-pagination/TablePagination';\nimport {TablePerPage} from './table-per-page/TablePerPage';\nimport {TablePredicate, TablePredicateStylesNames} from './table-predicate/TablePredicate';\nimport {TableState} from './use-table';\n\ntype TableStylesNames =\n | 'root'\n | 'table'\n | 'header'\n | 'body'\n | TableHeaderActionsStylesNames\n | TableActionsListStylesNames\n | TableActionItemStylesNames\n | TableCollapsibleColumnStylesNames\n | TableDateRangePickerStylesNames\n | TableFilterStylesNames\n | TableHeaderStylesNames\n | TableThStylesNames\n | TableLastUpdatedStylesNames\n | TablePredicateStylesNames\n | TableColumnsSelectorStylesNames;\n\nexport type PlasmaTableFactory = Factory<{\n props: TableProps<unknown>;\n ref: HTMLDivElement;\n stylesNames: TableStylesNames;\n staticComponents: {\n AccordionColumn: typeof TableAccordionColumn;\n ActionsColumn: typeof TableActionsColumn;\n ActionItem: typeof TableActionItem;\n CollapsibleColumn: typeof TableCollapsibleColumn;\n ColumnsSelector: typeof TableColumnsSelector;\n DateRangePicker: typeof TableDateRangePicker;\n Filter: typeof TableFilter;\n Footer: typeof TableFooter;\n Header: typeof TableHeader;\n LastUpdated: typeof TableLastUpdated;\n Layouts: typeof TableLayouts;\n Loading: typeof TableLoading;\n NoData: typeof TableNoData;\n Pagination: typeof TablePagination;\n PerPage: typeof TablePerPage;\n Predicate: typeof TablePredicate;\n };\n}>;\n\nconst defaultProps: Partial<TableProps<unknown>> = {\n layouts: [TableLayouts.Rows as TableLayout],\n layoutProps: {},\n loading: false,\n additionalRootNodes: [],\n options: {},\n getRowActions: () => [],\n};\n\nexport const Table = <T,>(props: TableProps<T> & {ref?: ForwardedRef<HTMLDivElement>}) => {\n const {\n store,\n data,\n getRowId,\n getRowAttributes,\n getRowExpandedContent,\n getRowActions,\n columns,\n layouts,\n layoutProps,\n children,\n loading,\n additionalRootNodes,\n options,\n ref,\n\n // Style props\n style,\n className,\n classNames,\n styles,\n unstyled,\n ...others\n } = useProps('PlasmaTable', defaultProps as TableProps<T>, props);\n\n const getStyles = useStyles<PlasmaTableFactory>({\n name: 'PlasmaTable',\n classes,\n props: props as TableProps<unknown>,\n className,\n style,\n classNames,\n styles,\n unstyled,\n });\n\n const convertedChildren = Children.toArray(children) as ReactElement[];\n const header = convertedChildren.find((child) => child.type === TableHeader);\n const footer = convertedChildren.find((child) => child.type === TableFooter);\n const lastUpdated = convertedChildren.find((child) => child.type === TableLastUpdated);\n const noData = convertedChildren.find((child) => child.type === TableNoData);\n\n const table = useReactTable({\n data,\n state: {\n globalFilter: store.state.globalFilter,\n sorting: store.state.sorting,\n pagination: store.state.pagination,\n columnVisibility: store.state.columnVisibility,\n expanded: store.state.expanded,\n },\n onGlobalFilterChange: store.setGlobalFilter,\n onExpandedChange: store.setExpanded,\n onSortingChange: store.setSorting,\n onPaginationChange: store.setPagination,\n onColumnVisibilityChange: store.setColumnVisibility,\n columns: store.multiRowSelectionEnabled ? [TableSelectableColumn as ColumnDef<T>].concat(columns) : columns,\n getCoreRowModel: getCoreRowModel(),\n manualPagination: options?.getPaginationRowModel === undefined,\n enableMultiRowSelection: !!store.multiRowSelectionEnabled,\n getRowId,\n getRowCanExpand: (row: Row<T>) => !!getRowExpandedContent?.(row.original, row.index, row) ?? false,\n enableRowSelection: !loading,\n defaultColumn: {\n size: undefined,\n minSize: defaultColumnSizing.minSize,\n maxSize: defaultColumnSizing.maxSize,\n },\n rowCount: options?.getFilteredRowModel ? undefined : store.state.totalEntries,\n ...options,\n });\n\n table.setOptions((prev) => ({\n ...prev,\n state: {\n ...prev.state,\n rowSelection: store.state.rowSelection as RowSelectionState,\n },\n onRowSelectionChange: (rowSelectionUpdater) => {\n store.setRowSelection((old) => {\n const newRowSelection = (\n rowSelectionUpdater instanceof Function\n ? rowSelectionUpdater(old as RowSelectionState)\n : rowSelectionUpdater\n ) as TableState<T>['rowSelection'];\n\n if (isEqual(old, newRowSelection)) {\n return old;\n }\n\n const rows = table.getRowModel().rowsById;\n\n Object.keys(newRowSelection).forEach((rowId) => {\n if (newRowSelection[rowId] === true) {\n if (!rows[rowId]) {\n console.error(\n 'The table was not initialized properly, the rowSelection state should contain an object of type Record<string, TData>.',\n );\n }\n newRowSelection[rowId] = rows[rowId]?.original ?? (true as T);\n }\n });\n\n return newRowSelection;\n });\n },\n }));\n\n useEffect(() => {\n // Update the selected rows data when the data prop changes\n if (store.getSelectedRows().length > 0) {\n store.setRowSelection((old) => {\n const rowsById = table.getRowModel().rowsById;\n const newSelection = {...old};\n Object.keys(old).forEach((rowId) => {\n if (rowsById[rowId]) {\n newSelection[rowId] = rowsById[rowId].original;\n }\n });\n return isEqual(newSelection, old) ? old : newSelection;\n });\n }\n }, [data]);\n\n const containerRef = useRef<HTMLDivElement>();\n useClickOutside(\n () => {\n if (!store.multiRowSelectionEnabled) {\n store.clearRowSelection();\n }\n },\n null,\n [containerRef.current, ...additionalRootNodes],\n );\n const mergedRef = useMergedRef(containerRef, ref);\n\n if (!data) {\n return (\n <Center style={{flexGrow: 1}}>\n <Loader />\n </Center>\n );\n }\n\n const Layout =\n store.state.layout === null ? layouts[0] : layouts.find(({displayName}) => displayName === store.state.layout);\n const hasRows = table.getRowModel().rows.length > 0;\n\n return (\n <Box ref={mergedRef} {...others} {...getStyles('root')}>\n <TableProvider<T> value={{getStyles, getRowActions, store, table, layouts, containerRef}}>\n <Layout>\n {store.isVacant && !store.isFiltered ? (\n noData\n ) : (\n <>\n <Box component=\"table\" {...getStyles('table')} pb=\"sm\" mod={{loading}}>\n <thead {...getStyles('header')}>\n {!!header ? (\n <tr>\n <th style={{padding: 0}} colSpan={table.getAllColumns().length}>\n {header}\n </th>\n </tr>\n ) : null}\n <Layout.Header\n getRowExpandedContent={getRowExpandedContent}\n getRowAttributes={getRowAttributes}\n loading={loading}\n {...layoutProps}\n />\n </thead>\n <tbody {...getStyles('body')}>\n {hasRows ? (\n <Layout.Body\n getRowExpandedContent={getRowExpandedContent}\n getRowAttributes={getRowAttributes}\n loading={loading}\n {...layoutProps}\n />\n ) : (\n <tr>\n <td colSpan={table.getAllColumns().length}>\n <TableLoading visible={loading || !store.isFiltered}>\n {noData}\n </TableLoading>\n </td>\n </tr>\n )}\n </tbody>\n </Box>\n {footer}\n {lastUpdated}\n </>\n )}\n </Layout>\n </TableProvider>\n </Box>\n );\n};\n\nexport const TableComponentsOrder = {\n MultiSelectInfo: 7,\n Actions: 6,\n Predicate: 5,\n Filter: 4,\n DateRangePicker: 3,\n ColumnsSelector: 2,\n LayoutControl: 1,\n};\n\nTable.AccordionColumn = TableAccordionColumn;\nTable.ActionsColumn = TableActionsColumn;\nTable.ActionItem = TableActionItem;\nTable.CollapsibleColumn = TableCollapsibleColumn;\nTable.ColumnsSelector = TableColumnsSelector;\nTable.DateRangePicker = TableDateRangePicker;\nTable.Filter = TableFilter;\nTable.Footer = TableFooter;\nTable.Header = TableHeader;\nTable.LastUpdated = TableLastUpdated;\nTable.Layouts = TableLayouts;\nTable.Loading = TableLoading;\nTable.NoData = TableNoData;\nTable.Pagination = TablePagination;\nTable.PerPage = TablePerPage;\nTable.Predicate = TablePredicate;\n\nTable.extend = identity as CustomComponentThemeExtend<PlasmaTableFactory>;\n"],"names":["Table","TableComponentsOrder","defaultProps","layouts","TableLayouts","Rows","layoutProps","loading","additionalRootNodes","options","getRowActions","props","useProps","store","data","getRowId","getRowAttributes","getRowExpandedContent","columns","children","ref","style","className","classNames","styles","unstyled","others","getStyles","useStyles","name","classes","convertedChildren","Children","toArray","header","find","child","type","TableHeader","footer","TableFooter","lastUpdated","TableLastUpdated","noData","TableNoData","table","useReactTable","state","globalFilter","sorting","pagination","columnVisibility","expanded","onGlobalFilterChange","setGlobalFilter","onExpandedChange","setExpanded","onSortingChange","setSorting","onPaginationChange","setPagination","onColumnVisibilityChange","setColumnVisibility","multiRowSelectionEnabled","TableSelectableColumn","concat","getCoreRowModel","manualPagination","getPaginationRowModel","undefined","enableMultiRowSelection","getRowCanExpand","row","original","index","enableRowSelection","defaultColumn","size","minSize","defaultColumnSizing","maxSize","rowCount","getFilteredRowModel","totalEntries","setOptions","prev","rowSelection","onRowSelectionChange","rowSelectionUpdater","setRowSelection","old","newRowSelection","Function","isEqual","rows","getRowModel","rowsById","Object","keys","forEach","rowId","console","error","useEffect","getSelectedRows","length","newSelection","containerRef","useRef","useClickOutside","clearRowSelection","current","mergedRef","useMergedRef","Center","flexGrow","Loader","Layout","layout","displayName","hasRows","Box","TableProvider","value","isVacant","isFiltered","component","pb","mod","thead","tr","th","padding","colSpan","getAllColumns","Header","tbody","Body","td","TableLoading","visible","MultiSelectInfo","Actions","Predicate","Filter","DateRangePicker","ColumnsSelector","LayoutControl","AccordionColumn","TableAccordionColumn","ActionsColumn","TableActionsColumn","ActionItem","TableActionItem","CollapsibleColumn","TableCollapsibleColumn","TableColumnsSelector","TableDateRangePicker","TableFilter","Footer","LastUpdated","Layouts","Loading","NoData","Pagination","TablePagination","PerPage","TablePerPage","TablePredicate","extend","identity"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IA0FaA,KAAK;eAALA;;IA0MAC,oBAAoB;eAApBA;;;;;;;;;;oBApSmD;qBACpB;0BAQrC;sEACa;qBACkD;qBACnB;uEAC/B;4BAEQ;4BACD;4BAC8D;kCAExD;sCAK1B;qCAC6B;oCACgC;oCACA;2BAClB;2BACxB;2BACwB;gCAEU;4BACjC;2BACD;+BACI;4BACH;8BAC6B;AA4CxD,IAAMC,eAA6C;IAC/CC,SAAS;QAACC,0BAAY,CAACC,IAAI;KAAgB;IAC3CC,aAAa,CAAC;IACdC,SAAS;IACTC,qBAAqB,EAAE;IACvBC,SAAS,CAAC;IACVC,eAAe;eAAM,EAAE;;AAC3B;AAEO,IAAMV,QAAQ,SAAKW;IACtB,IAuBIC,YAAAA,IAAAA,cAAQ,EAAC,eAAeV,cAA+BS,QAtBvDE,QAsBAD,UAtBAC,OACAC,OAqBAF,UArBAE,MACAC,WAoBAH,UApBAG,UACAC,mBAmBAJ,UAnBAI,kBACAC,wBAkBAL,UAlBAK,uBACAP,gBAiBAE,UAjBAF,eACAQ,UAgBAN,UAhBAM,SACAf,UAeAS,UAfAT,SACAG,cAcAM,UAdAN,aACAa,WAaAP,UAbAO,UACAZ,UAYAK,UAZAL,SACAC,sBAWAI,UAXAJ,qBACAC,UAUAG,UAVAH,SACAW,MASAR,UATAQ,KAEA,cAAc;IACdC,QAMAT,UANAS,OACAC,YAKAV,UALAU,WACAC,aAIAX,UAJAW,YACAC,SAGAZ,UAHAY,QACAC,WAEAb,UAFAa,UACGC,sCACHd;QAtBAC;QACAC;QACAC;QACAC;QACAC;QACAP;QACAQ;QACAf;QACAG;QACAa;QACAZ;QACAC;QACAC;QACAW;QAGAC;QACAC;QACAC;QACAC;QACAC;;IAIJ,IAAME,YAAYC,IAAAA,eAAS,EAAqB;QAC5CC,MAAM;QACNC,SAAAA,uBAAO;QACPnB,OAAOA;QACPW,WAAAA;QACAD,OAAAA;QACAE,YAAAA;QACAC,QAAAA;QACAC,UAAAA;IACJ;IAEA,IAAMM,oBAAoBC,eAAQ,CAACC,OAAO,CAACd;IAC3C,IAAMe,SAASH,kBAAkBI,IAAI,CAAC,SAACC;eAAUA,MAAMC,IAAI,KAAKC,wBAAW;;IAC3E,IAAMC,SAASR,kBAAkBI,IAAI,CAAC,SAACC;eAAUA,MAAMC,IAAI,KAAKG,wBAAW;;IAC3E,IAAMC,cAAcV,kBAAkBI,IAAI,CAAC,SAACC;eAAUA,MAAMC,IAAI,KAAKK,kCAAgB;;IACrF,IAAMC,SAASZ,kBAAkBI,IAAI,CAAC,SAACC;eAAUA,MAAMC,IAAI,KAAKO,wBAAW;;IAE3E,IAAMC,QAAQC,IAAAA,yBAAa,EAAC;QACxBhC,MAAAA;QACAiC,OAAO;YACHC,cAAcnC,MAAMkC,KAAK,CAACC,YAAY;YACtCC,SAASpC,MAAMkC,KAAK,CAACE,OAAO;YAC5BC,YAAYrC,MAAMkC,KAAK,CAACG,UAAU;YAClCC,kBAAkBtC,MAAMkC,KAAK,CAACI,gBAAgB;YAC9CC,UAAUvC,MAAMkC,KAAK,CAACK,QAAQ;QAClC;QACAC,sBAAsBxC,MAAMyC,eAAe;QAC3CC,kBAAkB1C,MAAM2C,WAAW;QACnCC,iBAAiB5C,MAAM6C,UAAU;QACjCC,oBAAoB9C,MAAM+C,aAAa;QACvCC,0BAA0BhD,MAAMiD,mBAAmB;QACnD5C,SAASL,MAAMkD,wBAAwB,GAAG;YAACC,4CAAqB;SAAiB,CAACC,MAAM,CAAC/C,WAAWA;QACpGgD,iBAAiBA,IAAAA,2BAAe;QAChCC,kBAAkB1D,CAAAA,oBAAAA,8BAAAA,QAAS2D,qBAAqB,MAAKC;QACrDC,yBAAyB,CAAC,CAACzD,MAAMkD,wBAAwB;QACzDhD,UAAAA;QACAwD,iBAAiB,SAACC;gBAAgB;mBAAA,CAAA,OAAA,CAAC,EAACvD,kCAAAA,4CAAAA,sBAAwBuD,IAAIC,QAAQ,EAAED,IAAIE,KAAK,EAAEF,mBAAnD,kBAAA,OAA2D;QAAI;QACjGG,oBAAoB,CAACpE;QACrBqE,eAAe;YACXC,MAAMR;YACNS,SAASC,+BAAmB,CAACD,OAAO;YACpCE,SAASD,+BAAmB,CAACC,OAAO;QACxC;QACAC,UAAUxE,CAAAA,oBAAAA,8BAAAA,QAASyE,mBAAmB,IAAGb,YAAYxD,MAAMkC,KAAK,CAACoC,YAAY;OAC1E1E;IAGPoC,MAAMuC,UAAU,CAAC,SAACC;eAAU,4CACrBA;YACHtC,OAAO,4CACAsC,KAAKtC,KAAK;gBACbuC,cAAczE,MAAMkC,KAAK,CAACuC,YAAY;;YAE1CC,sBAAsB,SAACC;gBACnB3E,MAAM4E,eAAe,CAAC,SAACC;oBACnB,IAAMC,kBACFH,AAAmB,aAAYI,CAA/BJ,qBAA+BI,YACzBJ,oBAAoBE,OACpBF;oBAGV,IAAIK,IAAAA,sBAAO,EAACH,KAAKC,kBAAkB;wBAC/B,OAAOD;oBACX;oBAEA,IAAMI,OAAOjD,MAAMkD,WAAW,GAAGC,QAAQ;oBAEzCC,OAAOC,IAAI,CAACP,iBAAiBQ,OAAO,CAAC,SAACC;wBAClC,IAAIT,eAAe,CAACS,MAAM,KAAK,MAAM;gCAMRN;4BALzB,IAAI,CAACA,IAAI,CAACM,MAAM,EAAE;gCACdC,QAAQC,KAAK,CACT;4BAER;gCACyBR;4BAAzBH,eAAe,CAACS,MAAM,GAAGN,CAAAA,wBAAAA,cAAAA,IAAI,CAACM,MAAM,cAAXN,kCAAAA,YAAarB,QAAQ,cAArBqB,kCAAAA,uBAA0B;wBACvD;oBACJ;oBAEA,OAAOH;gBACX;YACJ;;;IAGJY,IAAAA,gBAAS,EAAC;QACN,2DAA2D;QAC3D,IAAI1F,MAAM2F,eAAe,GAAGC,MAAM,GAAG,GAAG;YACpC5F,MAAM4E,eAAe,CAAC,SAACC;gBACnB,IAAMM,WAAWnD,MAAMkD,WAAW,GAAGC,QAAQ;gBAC7C,IAAMU,eAAe,qBAAIhB;gBACzBO,OAAOC,IAAI,CAACR,KAAKS,OAAO,CAAC,SAACC;oBACtB,IAAIJ,QAAQ,CAACI,MAAM,EAAE;wBACjBM,YAAY,CAACN,MAAM,GAAGJ,QAAQ,CAACI,MAAM,CAAC3B,QAAQ;oBAClD;gBACJ;gBACA,OAAOoB,IAAAA,sBAAO,EAACa,cAAchB,OAAOA,MAAMgB;YAC9C;QACJ;IACJ,GAAG;QAAC5F;KAAK;IAET,IAAM6F,eAAeC,IAAAA,aAAM;IAC3BC,IAAAA,sBAAe,EACX;QACI,IAAI,CAAChG,MAAMkD,wBAAwB,EAAE;YACjClD,MAAMiG,iBAAiB;QAC3B;IACJ,GACA,MACA;QAACH,aAAaI,OAAO;KAAyB,CAA9C,OAAuB,uBAAGvG;IAE9B,IAAMwG,YAAYC,IAAAA,mBAAY,EAACN,cAAcvF;IAE7C,IAAI,CAACN,MAAM;QACP,qBACI,qBAACoG,YAAM;YAAC7F,OAAO;gBAAC8F,UAAU;YAAC;sBACvB,cAAA,qBAACC,YAAM;;IAGnB;IAEA,IAAMC,SACFxG,MAAMkC,KAAK,CAACuE,MAAM,KAAK,OAAOnH,OAAO,CAAC,EAAE,GAAGA,QAAQgC,IAAI,CAAC;YAAEoF,oBAAAA;eAAiBA,gBAAgB1G,MAAMkC,KAAK,CAACuE,MAAM;;IACjH,IAAME,UAAU3E,MAAMkD,WAAW,GAAGD,IAAI,CAACW,MAAM,GAAG;IAElD,qBACI,qBAACgB,SAAG;QAACrG,KAAK4F;OAAetF,QAAYC,UAAU;kBAC3C,cAAA,qBAAC+F,2BAAa;YAAIC,OAAO;gBAAChG,WAAAA;gBAAWjB,eAAAA;gBAAeG,OAAAA;gBAAOgC,OAAAA;gBAAO1C,SAAAA;gBAASwG,cAAAA;YAAY;sBACnF,cAAA,qBAACU;0BACIxG,MAAM+G,QAAQ,IAAI,CAAC/G,MAAMgH,UAAU,GAChClF,uBAEA;;sCACI,sBAAC8E,SAAG;4BAACK,WAAU;2BAAYnG,UAAU;4BAAUoG,IAAG;4BAAKC,KAAK;gCAACzH,SAAAA;4BAAO;;8CAChE,sBAAC0H,qDAAUtG,UAAU;;wCAChB,CAAC,CAACO,uBACC,qBAACgG;sDACG,cAAA,qBAACC;gDAAG9G,OAAO;oDAAC+G,SAAS;gDAAC;gDAAGC,SAASxF,MAAMyF,aAAa,GAAG7B,MAAM;0DACzDvE;;6CAGT;sDACJ,qBAACmF,OAAOkB,MAAM;4CACVtH,uBAAuBA;4CACvBD,kBAAkBA;4CAClBT,SAASA;2CACLD;;;8CAGZ,qBAACkI,qDAAU7G,UAAU;8CAChB6F,wBACG,qBAACH,OAAOoB,IAAI;wCACRxH,uBAAuBA;wCACvBD,kBAAkBA;wCAClBT,SAASA;uCACLD,8BAGR,qBAAC4H;kDACG,cAAA,qBAACQ;4CAAGL,SAASxF,MAAMyF,aAAa,GAAG7B,MAAM;sDACrC,cAAA,qBAACkC,0BAAY;gDAACC,SAASrI,WAAW,CAACM,MAAMgH,UAAU;0DAC9ClF;;;;;;;wBAOxBJ;wBACAE;;;;;;AAO7B;AAEO,IAAMxC,uBAAuB;IAChC4I,iBAAiB;IACjBC,SAAS;IACTC,WAAW;IACXC,QAAQ;IACRC,iBAAiB;IACjBC,iBAAiB;IACjBC,eAAe;AACnB;AAEAnJ,MAAMoJ,eAAe,GAAGC,4CAAoB;AAC5CrJ,MAAMsJ,aAAa,GAAGC,sCAAkB;AACxCvJ,MAAMwJ,UAAU,GAAGC,6BAAe;AAClCzJ,MAAM0J,iBAAiB,GAAGC,8CAAsB;AAChD3J,MAAMkJ,eAAe,GAAGU,0CAAoB;AAC5C5J,MAAMiJ,eAAe,GAAGY,0CAAoB;AAC5C7J,MAAMgJ,MAAM,GAAGc,wBAAW;AAC1B9J,MAAM+J,MAAM,GAAGvH,wBAAW;AAC1BxC,MAAMuI,MAAM,GAAGjG,wBAAW;AAC1BtC,MAAMgK,WAAW,GAAGtH,kCAAgB;AACpC1C,MAAMiK,OAAO,GAAG7J,0BAAY;AAC5BJ,MAAMkK,OAAO,GAAGvB,0BAAY;AAC5B3I,MAAMmK,MAAM,GAAGvH,wBAAW;AAC1B5C,MAAMoK,UAAU,GAAGC,gCAAe;AAClCrK,MAAMsK,OAAO,GAAGC,0BAAY;AAC5BvK,MAAM+I,SAAS,GAAGyB,8BAAc;AAEhCxK,MAAMyK,MAAM,GAAGC,eAAQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"TableHeaderActions.d.ts","sourceRoot":"","sources":["../../../../../src/components/table/table-actions/TableHeaderActions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,YAAY,EAAkB,MAAM,eAAe,CAAC;AAQpF,MAAM,MAAM,6BAA6B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;AAEvF,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC;CAAG;AAWlF,eAAO,MAAM,kBAAkB;WARpB,uBAAuB;SACzB,cAAc;iBACN,6BAA6B;cAChC,IAAI;EAuCjB,CAAC"}
1
+ {"version":3,"file":"TableHeaderActions.d.ts","sourceRoot":"","sources":["../../../../../src/components/table/table-actions/TableHeaderActions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,YAAY,EAAkB,MAAM,eAAe,CAAC;AAOpF,MAAM,MAAM,6BAA6B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;AAEvF,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC;CAAG;AAWlF,eAAO,MAAM,kBAAkB;WARpB,uBAAuB;SACzB,cAAc;iBACN,6BAA6B;cAChC,IAAI;EA0CjB,CAAC"}
@@ -13,6 +13,7 @@ var _object_spread_props = require("@swc/helpers/_/_object_spread_props");
13
13
  var _object_without_properties = require("@swc/helpers/_/_object_without_properties");
14
14
  var _jsxruntime = require("react/jsx-runtime");
15
15
  var _core = require("@mantine/core");
16
+ var _react = require("react");
16
17
  var _Table = require("../Table");
17
18
  var _TableContext = require("../TableContext");
18
19
  var _TableActionsList = require("./TableActionsList");
@@ -25,11 +26,15 @@ var TableHeaderActions = (0, _core.factory)(function(props, ref) {
25
26
  "classNames",
26
27
  "styles"
27
28
  ]);
28
- var selectedRows = store.getSelectedRows();
29
- if (selectedRows.length === 0) {
30
- return null;
31
- }
32
- var actions = getRowActions(selectedRows);
29
+ var actions = (0, _react.useMemo)(function() {
30
+ var selectedRows = store.getSelectedRows();
31
+ if (selectedRows.length === 0) {
32
+ return [];
33
+ }
34
+ return getRowActions(selectedRows);
35
+ }, [
36
+ store.state.rowSelection
37
+ ]);
33
38
  if (actions.length === 0) {
34
39
  return null;
35
40
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/table/table-actions/TableHeaderActions.tsx"],"sourcesContent":["import {Factory, factory, Grid, GridColProps, Group, useProps} from '@mantine/core';\nimport {ReactElement} from 'react';\n\nimport {TableComponentsOrder} from '../Table';\nimport {TableAction} from '../Table.types';\nimport {useTableContext} from '../TableContext';\nimport {TableActionsList} from './TableActionsList';\n\nexport type TableHeaderActionsStylesNames = 'headerActionsRoot' | 'headerActionsGroup';\n\nexport interface TableHeaderActionsProps extends Omit<GridColProps, 'children'> {}\n\ntype TableHeaderActionsFactory = Factory<{\n props: TableHeaderActionsProps;\n ref: HTMLDivElement;\n stylesNames: TableHeaderActionsStylesNames;\n compound: true;\n}>;\n\nconst defaultProps: Partial<TableHeaderActionsProps> = {};\n\nexport const TableHeaderActions = factory<TableHeaderActionsFactory>(\n (props: TableHeaderActionsProps, ref): ReactElement => {\n const {store, getStyles, getRowActions} = useTableContext();\n const {style, className, classNames, styles, ...others} = useProps(\n 'PlasmaTableHeaderActions',\n defaultProps,\n props,\n );\n const selectedRows = store.getSelectedRows();\n if (selectedRows.length === 0) {\n return null;\n }\n\n const actions: TableAction[] = getRowActions(selectedRows);\n if (actions.length === 0) {\n return null;\n }\n\n const stylesApiProps = {classNames, styles};\n\n return (\n <Grid.Col\n span=\"content\"\n order={TableComponentsOrder.Actions}\n ref={ref}\n {...getStyles('headerActionsRoot', {className, style, ...stylesApiProps})}\n {...others}\n >\n <Group gap=\"xs\" {...getStyles('headerActionsGroup', stylesApiProps)}>\n <TableActionsList actions={actions} variant=\"split\" />\n </Group>\n </Grid.Col>\n );\n },\n);\n"],"names":["TableHeaderActions","defaultProps","factory","props","ref","useTableContext","store","getStyles","getRowActions","useProps","style","className","classNames","styles","others","selectedRows","getSelectedRows","length","actions","stylesApiProps","Grid","Col","span","order","TableComponentsOrder","Actions","Group","gap","TableActionsList","variant"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BAqBaA;;;eAAAA;;;;;;;oBArBuD;qBAGjC;4BAEL;gCACC;AAa/B,IAAMC,eAAiD,CAAC;AAEjD,IAAMD,qBAAqBE,IAAAA,aAAO,EACrC,SAACC,OAAgCC;IAC7B,IAA0CC,mBAAAA,IAAAA,6BAAe,KAAlDC,QAAmCD,iBAAnCC,OAAOC,YAA4BF,iBAA5BE,WAAWC,gBAAiBH,iBAAjBG;IACzB,IAA0DC,YAAAA,IAAAA,cAAQ,EAC9D,4BACAR,cACAE,QAHGO,QAAmDD,UAAnDC,OAAOC,YAA4CF,UAA5CE,WAAWC,aAAiCH,UAAjCG,YAAYC,SAAqBJ,UAArBI,QAAWC,sCAAUL;QAAnDC;QAAOC;QAAWC;QAAYC;;IAKrC,IAAME,eAAeT,MAAMU,eAAe;IAC1C,IAAID,aAAaE,MAAM,KAAK,GAAG;QAC3B,OAAO;IACX;IAEA,IAAMC,UAAyBV,cAAcO;IAC7C,IAAIG,QAAQD,MAAM,KAAK,GAAG;QACtB,OAAO;IACX;IAEA,IAAME,iBAAiB;QAACP,YAAAA;QAAYC,QAAAA;IAAM;IAE1C,qBACI,qBAACO,UAAI,CAACC,GAAG;QACLC,MAAK;QACLC,OAAOC,2BAAoB,CAACC,OAAO;QACnCrB,KAAKA;OACDG,UAAU,qBAAqB;QAACI,WAAAA;QAAWD,OAAAA;OAAUS,kBACrDL;kBAEJ,cAAA,qBAACY,WAAK;YAACC,KAAI;WAASpB,UAAU,sBAAsBY;sBAChD,cAAA,qBAACS,kCAAgB;gBAACV,SAASA;gBAASW,SAAQ;;;;AAI5D"}
1
+ {"version":3,"sources":["../../../../../src/components/table/table-actions/TableHeaderActions.tsx"],"sourcesContent":["import {Factory, factory, Grid, GridColProps, Group, useProps} from '@mantine/core';\nimport {ReactElement, useMemo} from 'react';\n\nimport {TableComponentsOrder} from '../Table';\nimport {useTableContext} from '../TableContext';\nimport {TableActionsList} from './TableActionsList';\n\nexport type TableHeaderActionsStylesNames = 'headerActionsRoot' | 'headerActionsGroup';\n\nexport interface TableHeaderActionsProps extends Omit<GridColProps, 'children'> {}\n\ntype TableHeaderActionsFactory = Factory<{\n props: TableHeaderActionsProps;\n ref: HTMLDivElement;\n stylesNames: TableHeaderActionsStylesNames;\n compound: true;\n}>;\n\nconst defaultProps: Partial<TableHeaderActionsProps> = {};\n\nexport const TableHeaderActions = factory<TableHeaderActionsFactory>(\n (props: TableHeaderActionsProps, ref): ReactElement => {\n const {store, getStyles, getRowActions} = useTableContext();\n const {style, className, classNames, styles, ...others} = useProps(\n 'PlasmaTableHeaderActions',\n defaultProps,\n props,\n );\n\n const actions = useMemo(() => {\n const selectedRows = store.getSelectedRows();\n if (selectedRows.length === 0) {\n return [];\n }\n return getRowActions(selectedRows);\n }, [store.state.rowSelection]);\n\n if (actions.length === 0) {\n return null;\n }\n\n const stylesApiProps = {classNames, styles};\n\n return (\n <Grid.Col\n span=\"content\"\n order={TableComponentsOrder.Actions}\n ref={ref}\n {...getStyles('headerActionsRoot', {className, style, ...stylesApiProps})}\n {...others}\n >\n <Group gap=\"xs\" {...getStyles('headerActionsGroup', stylesApiProps)}>\n <TableActionsList actions={actions} variant=\"split\" />\n </Group>\n </Grid.Col>\n );\n },\n);\n"],"names":["TableHeaderActions","defaultProps","factory","props","ref","useTableContext","store","getStyles","getRowActions","useProps","style","className","classNames","styles","others","actions","useMemo","selectedRows","getSelectedRows","length","state","rowSelection","stylesApiProps","Grid","Col","span","order","TableComponentsOrder","Actions","Group","gap","TableActionsList","variant"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BAoBaA;;;eAAAA;;;;;;;oBApBuD;qBAChC;qBAED;4BACL;gCACC;AAa/B,IAAMC,eAAiD,CAAC;AAEjD,IAAMD,qBAAqBE,IAAAA,aAAO,EACrC,SAACC,OAAgCC;IAC7B,IAA0CC,mBAAAA,IAAAA,6BAAe,KAAlDC,QAAmCD,iBAAnCC,OAAOC,YAA4BF,iBAA5BE,WAAWC,gBAAiBH,iBAAjBG;IACzB,IAA0DC,YAAAA,IAAAA,cAAQ,EAC9D,4BACAR,cACAE,QAHGO,QAAmDD,UAAnDC,OAAOC,YAA4CF,UAA5CE,WAAWC,aAAiCH,UAAjCG,YAAYC,SAAqBJ,UAArBI,QAAWC,sCAAUL;QAAnDC;QAAOC;QAAWC;QAAYC;;IAMrC,IAAME,UAAUC,IAAAA,cAAO,EAAC;QACpB,IAAMC,eAAeX,MAAMY,eAAe;QAC1C,IAAID,aAAaE,MAAM,KAAK,GAAG;YAC3B,OAAO,EAAE;QACb;QACA,OAAOX,cAAcS;IACzB,GAAG;QAACX,MAAMc,KAAK,CAACC,YAAY;KAAC;IAE7B,IAAIN,QAAQI,MAAM,KAAK,GAAG;QACtB,OAAO;IACX;IAEA,IAAMG,iBAAiB;QAACV,YAAAA;QAAYC,QAAAA;IAAM;IAE1C,qBACI,qBAACU,UAAI,CAACC,GAAG;QACLC,MAAK;QACLC,OAAOC,2BAAoB,CAACC,OAAO;QACnCxB,KAAKA;OACDG,UAAU,qBAAqB;QAACI,WAAAA;QAAWD,OAAAA;OAAUY,kBACrDR;kBAEJ,cAAA,qBAACe,WAAK;YAACC,KAAI;WAASvB,UAAU,sBAAsBe;sBAChD,cAAA,qBAACS,kCAAgB;gBAAChB,SAASA;gBAASiB,SAAQ;;;;AAI5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.tsx"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { Box, Center, Loader, useProps, useStyles } from '@mantine/core';
3
3
  import { useClickOutside, useMergedRef } from '@mantine/hooks';
4
4
  import { defaultColumnSizing, getCoreRowModel, useReactTable } from '@tanstack/react-table';
5
5
  import isEqual from 'fast-deep-equal';
6
- import { Children, useRef } from 'react';
6
+ import { Children, useEffect, useRef } from 'react';
7
7
  import { identity } from '../../utils';
8
8
  import classes from './Table.module.css';
9
9
  import { TableProvider } from './TableContext';
@@ -107,6 +107,25 @@ export const Table = (props)=>{
107
107
  });
108
108
  }
109
109
  }));
110
+ useEffect(()=>{
111
+ // Update the selected rows data when the data prop changes
112
+ if (store.getSelectedRows().length > 0) {
113
+ store.setRowSelection((old)=>{
114
+ const rowsById = table.getRowModel().rowsById;
115
+ const newSelection = {
116
+ ...old
117
+ };
118
+ Object.keys(old).forEach((rowId)=>{
119
+ if (rowsById[rowId]) {
120
+ newSelection[rowId] = rowsById[rowId].original;
121
+ }
122
+ });
123
+ return isEqual(newSelection, old) ? old : newSelection;
124
+ });
125
+ }
126
+ }, [
127
+ data
128
+ ]);
110
129
  const containerRef = useRef();
111
130
  useClickOutside(()=>{
112
131
  if (!store.multiRowSelectionEnabled) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {Box, Center, Factory, Loader, useProps, useStyles} from '@mantine/core';\nimport {useClickOutside, useMergedRef} from '@mantine/hooks';\nimport {\n ColumnDef,\n Row,\n RowSelectionState,\n defaultColumnSizing,\n getCoreRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport isEqual from 'fast-deep-equal';\nimport {Children, ForwardedRef, ReactElement, useRef} from 'react';\nimport {CustomComponentThemeExtend, identity} from '../../utils';\nimport classes from './Table.module.css';\nimport {TableLayout, TableProps} from './Table.types';\nimport {TableProvider} from './TableContext';\nimport {TableLayouts} from './layouts/TableLayouts';\nimport {TableActionItem, TableActionItemStylesNames, TableHeaderActionsStylesNames} from './table-actions';\nimport {TableActionsListStylesNames} from './table-actions/TableActionsList';\nimport {TableActionsColumn} from './table-column/TableActionsColumn';\nimport {\n TableAccordionColumn,\n TableCollapsibleColumn,\n TableCollapsibleColumnStylesNames,\n} from './table-column/TableCollapsibleColumn';\nimport {TableSelectableColumn} from './table-column/TableSelectableColumn';\nimport {TableColumnsSelector, TableColumnsSelectorStylesNames} from './table-columns-selector/TableColumnsSelector';\nimport {TableDateRangePicker, TableDateRangePickerStylesNames} from './table-date-range-picker/TableDateRangePicker';\nimport {TableFilter, TableFilterStylesNames} from './table-filter/TableFilter';\nimport {TableFooter} from './table-footer/TableFooter';\nimport {TableHeader, TableHeaderStylesNames} from './table-header/TableHeader';\nimport {TableThStylesNames} from './table-header/Th';\nimport {TableLastUpdated, TableLastUpdatedStylesNames} from './table-last-updated/TableLastUpdated';\nimport {TableLoading} from './table-loading/TableLoading';\nimport {TableNoData} from './table-no-data/TableNoData';\nimport {TablePagination} from './table-pagination/TablePagination';\nimport {TablePerPage} from './table-per-page/TablePerPage';\nimport {TablePredicate, TablePredicateStylesNames} from './table-predicate/TablePredicate';\nimport {TableState} from './use-table';\n\ntype TableStylesNames =\n | 'root'\n | 'table'\n | 'header'\n | 'body'\n | TableHeaderActionsStylesNames\n | TableActionsListStylesNames\n | TableActionItemStylesNames\n | TableCollapsibleColumnStylesNames\n | TableDateRangePickerStylesNames\n | TableFilterStylesNames\n | TableHeaderStylesNames\n | TableThStylesNames\n | TableLastUpdatedStylesNames\n | TablePredicateStylesNames\n | TableColumnsSelectorStylesNames;\n\nexport type PlasmaTableFactory = Factory<{\n props: TableProps<unknown>;\n ref: HTMLDivElement;\n stylesNames: TableStylesNames;\n staticComponents: {\n AccordionColumn: typeof TableAccordionColumn;\n ActionsColumn: typeof TableActionsColumn;\n ActionItem: typeof TableActionItem;\n CollapsibleColumn: typeof TableCollapsibleColumn;\n ColumnsSelector: typeof TableColumnsSelector;\n DateRangePicker: typeof TableDateRangePicker;\n Filter: typeof TableFilter;\n Footer: typeof TableFooter;\n Header: typeof TableHeader;\n LastUpdated: typeof TableLastUpdated;\n Layouts: typeof TableLayouts;\n Loading: typeof TableLoading;\n NoData: typeof TableNoData;\n Pagination: typeof TablePagination;\n PerPage: typeof TablePerPage;\n Predicate: typeof TablePredicate;\n };\n}>;\n\nconst defaultProps: Partial<TableProps<unknown>> = {\n layouts: [TableLayouts.Rows as TableLayout],\n layoutProps: {},\n loading: false,\n additionalRootNodes: [],\n options: {},\n getRowActions: () => [],\n};\n\nexport const Table = <T,>(props: TableProps<T> & {ref?: ForwardedRef<HTMLDivElement>}) => {\n const {\n store,\n data,\n getRowId,\n getRowAttributes,\n getRowExpandedContent,\n getRowActions,\n columns,\n layouts,\n layoutProps,\n children,\n loading,\n additionalRootNodes,\n options,\n ref,\n\n // Style props\n style,\n className,\n classNames,\n styles,\n unstyled,\n ...others\n } = useProps('PlasmaTable', defaultProps as TableProps<T>, props);\n\n const getStyles = useStyles<PlasmaTableFactory>({\n name: 'PlasmaTable',\n classes,\n props: props as TableProps<unknown>,\n className,\n style,\n classNames,\n styles,\n unstyled,\n });\n\n const convertedChildren = Children.toArray(children) as ReactElement[];\n const header = convertedChildren.find((child) => child.type === TableHeader);\n const footer = convertedChildren.find((child) => child.type === TableFooter);\n const lastUpdated = convertedChildren.find((child) => child.type === TableLastUpdated);\n const noData = convertedChildren.find((child) => child.type === TableNoData);\n\n const table = useReactTable({\n data,\n state: {\n globalFilter: store.state.globalFilter,\n sorting: store.state.sorting,\n pagination: store.state.pagination,\n columnVisibility: store.state.columnVisibility,\n expanded: store.state.expanded,\n },\n onGlobalFilterChange: store.setGlobalFilter,\n onExpandedChange: store.setExpanded,\n onSortingChange: store.setSorting,\n onPaginationChange: store.setPagination,\n onColumnVisibilityChange: store.setColumnVisibility,\n columns: store.multiRowSelectionEnabled ? [TableSelectableColumn as ColumnDef<T>].concat(columns) : columns,\n getCoreRowModel: getCoreRowModel(),\n manualPagination: options?.getPaginationRowModel === undefined,\n enableMultiRowSelection: !!store.multiRowSelectionEnabled,\n getRowId,\n getRowCanExpand: (row: Row<T>) => !!getRowExpandedContent?.(row.original, row.index, row) ?? false,\n enableRowSelection: !loading,\n defaultColumn: {\n size: undefined,\n minSize: defaultColumnSizing.minSize,\n maxSize: defaultColumnSizing.maxSize,\n },\n rowCount: options?.getFilteredRowModel ? undefined : store.state.totalEntries,\n ...options,\n });\n\n table.setOptions((prev) => ({\n ...prev,\n state: {\n ...prev.state,\n rowSelection: store.state.rowSelection as RowSelectionState,\n },\n onRowSelectionChange: (rowSelectionUpdater) => {\n store.setRowSelection((old) => {\n const newRowSelection = (\n rowSelectionUpdater instanceof Function\n ? rowSelectionUpdater(old as RowSelectionState)\n : rowSelectionUpdater\n ) as TableState<T>['rowSelection'];\n\n if (isEqual(old, newRowSelection)) {\n return old;\n }\n\n const rows = table.getRowModel().rowsById;\n\n Object.keys(newRowSelection).forEach((rowId) => {\n if (newRowSelection[rowId] === true) {\n if (!rows[rowId]) {\n console.error(\n 'The table was not initialized properly, the rowSelection state should contain an object of type Record<string, TData>.',\n );\n }\n newRowSelection[rowId] = rows[rowId]?.original ?? (true as T);\n }\n });\n\n return newRowSelection;\n });\n },\n }));\n\n const containerRef = useRef<HTMLDivElement>();\n useClickOutside(\n () => {\n if (!store.multiRowSelectionEnabled) {\n store.clearRowSelection();\n }\n },\n null,\n [containerRef.current, ...additionalRootNodes],\n );\n const mergedRef = useMergedRef(containerRef, ref);\n\n if (!data) {\n return (\n <Center style={{flexGrow: 1}}>\n <Loader />\n </Center>\n );\n }\n\n const Layout =\n store.state.layout === null ? layouts[0] : layouts.find(({displayName}) => displayName === store.state.layout);\n const hasRows = table.getRowModel().rows.length > 0;\n\n return (\n <Box ref={mergedRef} {...others} {...getStyles('root')}>\n <TableProvider<T> value={{getStyles, getRowActions, store, table, layouts, containerRef}}>\n <Layout>\n {store.isVacant && !store.isFiltered ? (\n noData\n ) : (\n <>\n <Box component=\"table\" {...getStyles('table')} pb=\"sm\" mod={{loading}}>\n <thead {...getStyles('header')}>\n {!!header ? (\n <tr>\n <th style={{padding: 0}} colSpan={table.getAllColumns().length}>\n {header}\n </th>\n </tr>\n ) : null}\n <Layout.Header\n getRowExpandedContent={getRowExpandedContent}\n getRowAttributes={getRowAttributes}\n loading={loading}\n {...layoutProps}\n />\n </thead>\n <tbody {...getStyles('body')}>\n {hasRows ? (\n <Layout.Body\n getRowExpandedContent={getRowExpandedContent}\n getRowAttributes={getRowAttributes}\n loading={loading}\n {...layoutProps}\n />\n ) : (\n <tr>\n <td colSpan={table.getAllColumns().length}>\n <TableLoading visible={loading || !store.isFiltered}>\n {noData}\n </TableLoading>\n </td>\n </tr>\n )}\n </tbody>\n </Box>\n {footer}\n {lastUpdated}\n </>\n )}\n </Layout>\n </TableProvider>\n </Box>\n );\n};\n\nexport const TableComponentsOrder = {\n MultiSelectInfo: 7,\n Actions: 6,\n Predicate: 5,\n Filter: 4,\n DateRangePicker: 3,\n ColumnsSelector: 2,\n LayoutControl: 1,\n};\n\nTable.AccordionColumn = TableAccordionColumn;\nTable.ActionsColumn = TableActionsColumn;\nTable.ActionItem = TableActionItem;\nTable.CollapsibleColumn = TableCollapsibleColumn;\nTable.ColumnsSelector = TableColumnsSelector;\nTable.DateRangePicker = TableDateRangePicker;\nTable.Filter = TableFilter;\nTable.Footer = TableFooter;\nTable.Header = TableHeader;\nTable.LastUpdated = TableLastUpdated;\nTable.Layouts = TableLayouts;\nTable.Loading = TableLoading;\nTable.NoData = TableNoData;\nTable.Pagination = TablePagination;\nTable.PerPage = TablePerPage;\nTable.Predicate = TablePredicate;\n\nTable.extend = identity as CustomComponentThemeExtend<PlasmaTableFactory>;\n"],"names":["Box","Center","Loader","useProps","useStyles","useClickOutside","useMergedRef","defaultColumnSizing","getCoreRowModel","useReactTable","isEqual","Children","useRef","identity","classes","TableProvider","TableLayouts","TableActionItem","TableActionsColumn","TableAccordionColumn","TableCollapsibleColumn","TableSelectableColumn","TableColumnsSelector","TableDateRangePicker","TableFilter","TableFooter","TableHeader","TableLastUpdated","TableLoading","TableNoData","TablePagination","TablePerPage","TablePredicate","defaultProps","layouts","Rows","layoutProps","loading","additionalRootNodes","options","getRowActions","Table","props","store","data","getRowId","getRowAttributes","getRowExpandedContent","columns","children","ref","style","className","classNames","styles","unstyled","others","getStyles","name","convertedChildren","toArray","header","find","child","type","footer","lastUpdated","noData","table","state","globalFilter","sorting","pagination","columnVisibility","expanded","onGlobalFilterChange","setGlobalFilter","onExpandedChange","setExpanded","onSortingChange","setSorting","onPaginationChange","setPagination","onColumnVisibilityChange","setColumnVisibility","multiRowSelectionEnabled","concat","manualPagination","getPaginationRowModel","undefined","enableMultiRowSelection","getRowCanExpand","row","original","index","enableRowSelection","defaultColumn","size","minSize","maxSize","rowCount","getFilteredRowModel","totalEntries","setOptions","prev","rowSelection","onRowSelectionChange","rowSelectionUpdater","setRowSelection","old","newRowSelection","Function","rows","getRowModel","rowsById","Object","keys","forEach","rowId","console","error","containerRef","clearRowSelection","current","mergedRef","flexGrow","Layout","layout","displayName","hasRows","length","value","isVacant","isFiltered","component","pb","mod","thead","tr","th","padding","colSpan","getAllColumns","Header","tbody","Body","td","visible","TableComponentsOrder","MultiSelectInfo","Actions","Predicate","Filter","DateRangePicker","ColumnsSelector","LayoutControl","AccordionColumn","ActionsColumn","ActionItem","CollapsibleColumn","Footer","LastUpdated","Layouts","Loading","NoData","Pagination","PerPage","extend"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {Box, Center, Factory, Loader, useProps, useStyles} from '@mantine/core';\nimport {useClickOutside, useMergedRef} from '@mantine/hooks';\nimport {\n ColumnDef,\n Row,\n RowSelectionState,\n defaultColumnSizing,\n getCoreRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport isEqual from 'fast-deep-equal';\nimport {Children, ForwardedRef, ReactElement, useEffect, useRef} from 'react';\nimport {CustomComponentThemeExtend, identity} from '../../utils';\nimport classes from './Table.module.css';\nimport {TableLayout, TableProps} from './Table.types';\nimport {TableProvider} from './TableContext';\nimport {TableLayouts} from './layouts/TableLayouts';\nimport {TableActionItem, TableActionItemStylesNames, TableHeaderActionsStylesNames} from './table-actions';\nimport {TableActionsListStylesNames} from './table-actions/TableActionsList';\nimport {TableActionsColumn} from './table-column/TableActionsColumn';\nimport {\n TableAccordionColumn,\n TableCollapsibleColumn,\n TableCollapsibleColumnStylesNames,\n} from './table-column/TableCollapsibleColumn';\nimport {TableSelectableColumn} from './table-column/TableSelectableColumn';\nimport {TableColumnsSelector, TableColumnsSelectorStylesNames} from './table-columns-selector/TableColumnsSelector';\nimport {TableDateRangePicker, TableDateRangePickerStylesNames} from './table-date-range-picker/TableDateRangePicker';\nimport {TableFilter, TableFilterStylesNames} from './table-filter/TableFilter';\nimport {TableFooter} from './table-footer/TableFooter';\nimport {TableHeader, TableHeaderStylesNames} from './table-header/TableHeader';\nimport {TableThStylesNames} from './table-header/Th';\nimport {TableLastUpdated, TableLastUpdatedStylesNames} from './table-last-updated/TableLastUpdated';\nimport {TableLoading} from './table-loading/TableLoading';\nimport {TableNoData} from './table-no-data/TableNoData';\nimport {TablePagination} from './table-pagination/TablePagination';\nimport {TablePerPage} from './table-per-page/TablePerPage';\nimport {TablePredicate, TablePredicateStylesNames} from './table-predicate/TablePredicate';\nimport {TableState} from './use-table';\n\ntype TableStylesNames =\n | 'root'\n | 'table'\n | 'header'\n | 'body'\n | TableHeaderActionsStylesNames\n | TableActionsListStylesNames\n | TableActionItemStylesNames\n | TableCollapsibleColumnStylesNames\n | TableDateRangePickerStylesNames\n | TableFilterStylesNames\n | TableHeaderStylesNames\n | TableThStylesNames\n | TableLastUpdatedStylesNames\n | TablePredicateStylesNames\n | TableColumnsSelectorStylesNames;\n\nexport type PlasmaTableFactory = Factory<{\n props: TableProps<unknown>;\n ref: HTMLDivElement;\n stylesNames: TableStylesNames;\n staticComponents: {\n AccordionColumn: typeof TableAccordionColumn;\n ActionsColumn: typeof TableActionsColumn;\n ActionItem: typeof TableActionItem;\n CollapsibleColumn: typeof TableCollapsibleColumn;\n ColumnsSelector: typeof TableColumnsSelector;\n DateRangePicker: typeof TableDateRangePicker;\n Filter: typeof TableFilter;\n Footer: typeof TableFooter;\n Header: typeof TableHeader;\n LastUpdated: typeof TableLastUpdated;\n Layouts: typeof TableLayouts;\n Loading: typeof TableLoading;\n NoData: typeof TableNoData;\n Pagination: typeof TablePagination;\n PerPage: typeof TablePerPage;\n Predicate: typeof TablePredicate;\n };\n}>;\n\nconst defaultProps: Partial<TableProps<unknown>> = {\n layouts: [TableLayouts.Rows as TableLayout],\n layoutProps: {},\n loading: false,\n additionalRootNodes: [],\n options: {},\n getRowActions: () => [],\n};\n\nexport const Table = <T,>(props: TableProps<T> & {ref?: ForwardedRef<HTMLDivElement>}) => {\n const {\n store,\n data,\n getRowId,\n getRowAttributes,\n getRowExpandedContent,\n getRowActions,\n columns,\n layouts,\n layoutProps,\n children,\n loading,\n additionalRootNodes,\n options,\n ref,\n\n // Style props\n style,\n className,\n classNames,\n styles,\n unstyled,\n ...others\n } = useProps('PlasmaTable', defaultProps as TableProps<T>, props);\n\n const getStyles = useStyles<PlasmaTableFactory>({\n name: 'PlasmaTable',\n classes,\n props: props as TableProps<unknown>,\n className,\n style,\n classNames,\n styles,\n unstyled,\n });\n\n const convertedChildren = Children.toArray(children) as ReactElement[];\n const header = convertedChildren.find((child) => child.type === TableHeader);\n const footer = convertedChildren.find((child) => child.type === TableFooter);\n const lastUpdated = convertedChildren.find((child) => child.type === TableLastUpdated);\n const noData = convertedChildren.find((child) => child.type === TableNoData);\n\n const table = useReactTable({\n data,\n state: {\n globalFilter: store.state.globalFilter,\n sorting: store.state.sorting,\n pagination: store.state.pagination,\n columnVisibility: store.state.columnVisibility,\n expanded: store.state.expanded,\n },\n onGlobalFilterChange: store.setGlobalFilter,\n onExpandedChange: store.setExpanded,\n onSortingChange: store.setSorting,\n onPaginationChange: store.setPagination,\n onColumnVisibilityChange: store.setColumnVisibility,\n columns: store.multiRowSelectionEnabled ? [TableSelectableColumn as ColumnDef<T>].concat(columns) : columns,\n getCoreRowModel: getCoreRowModel(),\n manualPagination: options?.getPaginationRowModel === undefined,\n enableMultiRowSelection: !!store.multiRowSelectionEnabled,\n getRowId,\n getRowCanExpand: (row: Row<T>) => !!getRowExpandedContent?.(row.original, row.index, row) ?? false,\n enableRowSelection: !loading,\n defaultColumn: {\n size: undefined,\n minSize: defaultColumnSizing.minSize,\n maxSize: defaultColumnSizing.maxSize,\n },\n rowCount: options?.getFilteredRowModel ? undefined : store.state.totalEntries,\n ...options,\n });\n\n table.setOptions((prev) => ({\n ...prev,\n state: {\n ...prev.state,\n rowSelection: store.state.rowSelection as RowSelectionState,\n },\n onRowSelectionChange: (rowSelectionUpdater) => {\n store.setRowSelection((old) => {\n const newRowSelection = (\n rowSelectionUpdater instanceof Function\n ? rowSelectionUpdater(old as RowSelectionState)\n : rowSelectionUpdater\n ) as TableState<T>['rowSelection'];\n\n if (isEqual(old, newRowSelection)) {\n return old;\n }\n\n const rows = table.getRowModel().rowsById;\n\n Object.keys(newRowSelection).forEach((rowId) => {\n if (newRowSelection[rowId] === true) {\n if (!rows[rowId]) {\n console.error(\n 'The table was not initialized properly, the rowSelection state should contain an object of type Record<string, TData>.',\n );\n }\n newRowSelection[rowId] = rows[rowId]?.original ?? (true as T);\n }\n });\n\n return newRowSelection;\n });\n },\n }));\n\n useEffect(() => {\n // Update the selected rows data when the data prop changes\n if (store.getSelectedRows().length > 0) {\n store.setRowSelection((old) => {\n const rowsById = table.getRowModel().rowsById;\n const newSelection = {...old};\n Object.keys(old).forEach((rowId) => {\n if (rowsById[rowId]) {\n newSelection[rowId] = rowsById[rowId].original;\n }\n });\n return isEqual(newSelection, old) ? old : newSelection;\n });\n }\n }, [data]);\n\n const containerRef = useRef<HTMLDivElement>();\n useClickOutside(\n () => {\n if (!store.multiRowSelectionEnabled) {\n store.clearRowSelection();\n }\n },\n null,\n [containerRef.current, ...additionalRootNodes],\n );\n const mergedRef = useMergedRef(containerRef, ref);\n\n if (!data) {\n return (\n <Center style={{flexGrow: 1}}>\n <Loader />\n </Center>\n );\n }\n\n const Layout =\n store.state.layout === null ? layouts[0] : layouts.find(({displayName}) => displayName === store.state.layout);\n const hasRows = table.getRowModel().rows.length > 0;\n\n return (\n <Box ref={mergedRef} {...others} {...getStyles('root')}>\n <TableProvider<T> value={{getStyles, getRowActions, store, table, layouts, containerRef}}>\n <Layout>\n {store.isVacant && !store.isFiltered ? (\n noData\n ) : (\n <>\n <Box component=\"table\" {...getStyles('table')} pb=\"sm\" mod={{loading}}>\n <thead {...getStyles('header')}>\n {!!header ? (\n <tr>\n <th style={{padding: 0}} colSpan={table.getAllColumns().length}>\n {header}\n </th>\n </tr>\n ) : null}\n <Layout.Header\n getRowExpandedContent={getRowExpandedContent}\n getRowAttributes={getRowAttributes}\n loading={loading}\n {...layoutProps}\n />\n </thead>\n <tbody {...getStyles('body')}>\n {hasRows ? (\n <Layout.Body\n getRowExpandedContent={getRowExpandedContent}\n getRowAttributes={getRowAttributes}\n loading={loading}\n {...layoutProps}\n />\n ) : (\n <tr>\n <td colSpan={table.getAllColumns().length}>\n <TableLoading visible={loading || !store.isFiltered}>\n {noData}\n </TableLoading>\n </td>\n </tr>\n )}\n </tbody>\n </Box>\n {footer}\n {lastUpdated}\n </>\n )}\n </Layout>\n </TableProvider>\n </Box>\n );\n};\n\nexport const TableComponentsOrder = {\n MultiSelectInfo: 7,\n Actions: 6,\n Predicate: 5,\n Filter: 4,\n DateRangePicker: 3,\n ColumnsSelector: 2,\n LayoutControl: 1,\n};\n\nTable.AccordionColumn = TableAccordionColumn;\nTable.ActionsColumn = TableActionsColumn;\nTable.ActionItem = TableActionItem;\nTable.CollapsibleColumn = TableCollapsibleColumn;\nTable.ColumnsSelector = TableColumnsSelector;\nTable.DateRangePicker = TableDateRangePicker;\nTable.Filter = TableFilter;\nTable.Footer = TableFooter;\nTable.Header = TableHeader;\nTable.LastUpdated = TableLastUpdated;\nTable.Layouts = TableLayouts;\nTable.Loading = TableLoading;\nTable.NoData = TableNoData;\nTable.Pagination = TablePagination;\nTable.PerPage = TablePerPage;\nTable.Predicate = TablePredicate;\n\nTable.extend = identity as CustomComponentThemeExtend<PlasmaTableFactory>;\n"],"names":["Box","Center","Loader","useProps","useStyles","useClickOutside","useMergedRef","defaultColumnSizing","getCoreRowModel","useReactTable","isEqual","Children","useEffect","useRef","identity","classes","TableProvider","TableLayouts","TableActionItem","TableActionsColumn","TableAccordionColumn","TableCollapsibleColumn","TableSelectableColumn","TableColumnsSelector","TableDateRangePicker","TableFilter","TableFooter","TableHeader","TableLastUpdated","TableLoading","TableNoData","TablePagination","TablePerPage","TablePredicate","defaultProps","layouts","Rows","layoutProps","loading","additionalRootNodes","options","getRowActions","Table","props","store","data","getRowId","getRowAttributes","getRowExpandedContent","columns","children","ref","style","className","classNames","styles","unstyled","others","getStyles","name","convertedChildren","toArray","header","find","child","type","footer","lastUpdated","noData","table","state","globalFilter","sorting","pagination","columnVisibility","expanded","onGlobalFilterChange","setGlobalFilter","onExpandedChange","setExpanded","onSortingChange","setSorting","onPaginationChange","setPagination","onColumnVisibilityChange","setColumnVisibility","multiRowSelectionEnabled","concat","manualPagination","getPaginationRowModel","undefined","enableMultiRowSelection","getRowCanExpand","row","original","index","enableRowSelection","defaultColumn","size","minSize","maxSize","rowCount","getFilteredRowModel","totalEntries","setOptions","prev","rowSelection","onRowSelectionChange","rowSelectionUpdater","setRowSelection","old","newRowSelection","Function","rows","getRowModel","rowsById","Object","keys","forEach","rowId","console","error","getSelectedRows","length","newSelection","containerRef","clearRowSelection","current","mergedRef","flexGrow","Layout","layout","displayName","hasRows","value","isVacant","isFiltered","component","pb","mod","thead","tr","th","padding","colSpan","getAllColumns","Header","tbody","Body","td","visible","TableComponentsOrder","MultiSelectInfo","Actions","Predicate","Filter","DateRangePicker","ColumnsSelector","LayoutControl","AccordionColumn","ActionsColumn","ActionItem","CollapsibleColumn","Footer","LastUpdated","Layouts","Loading","NoData","Pagination","PerPage","extend"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAAA,SAAQA,GAAG,EAAEC,MAAM,EAAWC,MAAM,EAAEC,QAAQ,EAAEC,SAAS,QAAO,gBAAgB;AAChF,SAAQC,eAAe,EAAEC,YAAY,QAAO,iBAAiB;AAC7D,SAIIC,mBAAmB,EACnBC,eAAe,EACfC,aAAa,QACV,wBAAwB;AAC/B,OAAOC,aAAa,kBAAkB;AACtC,SAAQC,QAAQ,EAA8BC,SAAS,EAAEC,MAAM,QAAO,QAAQ;AAC9E,SAAoCC,QAAQ,QAAO,cAAc;AACjE,OAAOC,aAAa,qBAAqB;AAEzC,SAAQC,aAAa,QAAO,iBAAiB;AAC7C,SAAQC,YAAY,QAAO,yBAAyB;AACpD,SAAQC,eAAe,QAAkE,kBAAkB;AAE3G,SAAQC,kBAAkB,QAAO,oCAAoC;AACrE,SACIC,oBAAoB,EACpBC,sBAAsB,QAEnB,wCAAwC;AAC/C,SAAQC,qBAAqB,QAAO,uCAAuC;AAC3E,SAAQC,oBAAoB,QAAwC,gDAAgD;AACpH,SAAQC,oBAAoB,QAAwC,iDAAiD;AACrH,SAAQC,WAAW,QAA+B,6BAA6B;AAC/E,SAAQC,WAAW,QAAO,6BAA6B;AACvD,SAAQC,WAAW,QAA+B,6BAA6B;AAE/E,SAAQC,gBAAgB,QAAoC,wCAAwC;AACpG,SAAQC,YAAY,QAAO,+BAA+B;AAC1D,SAAQC,WAAW,QAAO,8BAA8B;AACxD,SAAQC,eAAe,QAAO,qCAAqC;AACnE,SAAQC,YAAY,QAAO,gCAAgC;AAC3D,SAAQC,cAAc,QAAkC,mCAAmC;AA4C3F,MAAMC,eAA6C;IAC/CC,SAAS;QAAClB,aAAamB,IAAI;KAAgB;IAC3CC,aAAa,CAAC;IACdC,SAAS;IACTC,qBAAqB,EAAE;IACvBC,SAAS,CAAC;IACVC,eAAe,IAAM,EAAE;AAC3B;AAEA,OAAO,MAAMC,QAAQ,CAAKC;IACtB,MAAM,EACFC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,gBAAgB,EAChBC,qBAAqB,EACrBP,aAAa,EACbQ,OAAO,EACPd,OAAO,EACPE,WAAW,EACXa,QAAQ,EACRZ,OAAO,EACPC,mBAAmB,EACnBC,OAAO,EACPW,GAAG,EAEH,cAAc;IACdC,KAAK,EACLC,SAAS,EACTC,UAAU,EACVC,MAAM,EACNC,QAAQ,EACR,GAAGC,QACN,GAAGtD,SAAS,eAAe+B,cAA+BS;IAE3D,MAAMe,YAAYtD,UAA8B;QAC5CuD,MAAM;QACN5C;QACA4B,OAAOA;QACPU;QACAD;QACAE;QACAC;QACAC;IACJ;IAEA,MAAMI,oBAAoBjD,SAASkD,OAAO,CAACX;IAC3C,MAAMY,SAASF,kBAAkBG,IAAI,CAAC,CAACC,QAAUA,MAAMC,IAAI,KAAKtC;IAChE,MAAMuC,SAASN,kBAAkBG,IAAI,CAAC,CAACC,QAAUA,MAAMC,IAAI,KAAKvC;IAChE,MAAMyC,cAAcP,kBAAkBG,IAAI,CAAC,CAACC,QAAUA,MAAMC,IAAI,KAAKrC;IACrE,MAAMwC,SAASR,kBAAkBG,IAAI,CAAC,CAACC,QAAUA,MAAMC,IAAI,KAAKnC;IAEhE,MAAMuC,QAAQ5D,cAAc;QACxBoC;QACAyB,OAAO;YACHC,cAAc3B,MAAM0B,KAAK,CAACC,YAAY;YACtCC,SAAS5B,MAAM0B,KAAK,CAACE,OAAO;YAC5BC,YAAY7B,MAAM0B,KAAK,CAACG,UAAU;YAClCC,kBAAkB9B,MAAM0B,KAAK,CAACI,gBAAgB;YAC9CC,UAAU/B,MAAM0B,KAAK,CAACK,QAAQ;QAClC;QACAC,sBAAsBhC,MAAMiC,eAAe;QAC3CC,kBAAkBlC,MAAMmC,WAAW;QACnCC,iBAAiBpC,MAAMqC,UAAU;QACjCC,oBAAoBtC,MAAMuC,aAAa;QACvCC,0BAA0BxC,MAAMyC,mBAAmB;QACnDpC,SAASL,MAAM0C,wBAAwB,GAAG;YAAChE;SAAsC,CAACiE,MAAM,CAACtC,WAAWA;QACpGzC,iBAAiBA;QACjBgF,kBAAkBhD,SAASiD,0BAA0BC;QACrDC,yBAAyB,CAAC,CAAC/C,MAAM0C,wBAAwB;QACzDxC;QACA8C,iBAAiB,CAACC,MAAgB,CAAC,CAAC7C,wBAAwB6C,IAAIC,QAAQ,EAAED,IAAIE,KAAK,EAAEF,QAAQ;QAC7FG,oBAAoB,CAAC1D;QACrB2D,eAAe;YACXC,MAAMR;YACNS,SAAS5F,oBAAoB4F,OAAO;YACpCC,SAAS7F,oBAAoB6F,OAAO;QACxC;QACAC,UAAU7D,SAAS8D,sBAAsBZ,YAAY9C,MAAM0B,KAAK,CAACiC,YAAY;QAC7E,GAAG/D,OAAO;IACd;IAEA6B,MAAMmC,UAAU,CAAC,CAACC,OAAU,CAAA;YACxB,GAAGA,IAAI;YACPnC,OAAO;gBACH,GAAGmC,KAAKnC,KAAK;gBACboC,cAAc9D,MAAM0B,KAAK,CAACoC,YAAY;YAC1C;YACAC,sBAAsB,CAACC;gBACnBhE,MAAMiE,eAAe,CAAC,CAACC;oBACnB,MAAMC,kBACFH,+BAA+BI,WACzBJ,oBAAoBE,OACpBF;oBAGV,IAAIlG,QAAQoG,KAAKC,kBAAkB;wBAC/B,OAAOD;oBACX;oBAEA,MAAMG,OAAO5C,MAAM6C,WAAW,GAAGC,QAAQ;oBAEzCC,OAAOC,IAAI,CAACN,iBAAiBO,OAAO,CAAC,CAACC;wBAClC,IAAIR,eAAe,CAACQ,MAAM,KAAK,MAAM;4BACjC,IAAI,CAACN,IAAI,CAACM,MAAM,EAAE;gCACdC,QAAQC,KAAK,CACT;4BAER;4BACAV,eAAe,CAACQ,MAAM,GAAGN,IAAI,CAACM,MAAM,EAAEzB,YAAa;wBACvD;oBACJ;oBAEA,OAAOiB;gBACX;YACJ;QACJ,CAAA;IAEAnG,UAAU;QACN,2DAA2D;QAC3D,IAAIgC,MAAM8E,eAAe,GAAGC,MAAM,GAAG,GAAG;YACpC/E,MAAMiE,eAAe,CAAC,CAACC;gBACnB,MAAMK,WAAW9C,MAAM6C,WAAW,GAAGC,QAAQ;gBAC7C,MAAMS,eAAe;oBAAC,GAAGd,GAAG;gBAAA;gBAC5BM,OAAOC,IAAI,CAACP,KAAKQ,OAAO,CAAC,CAACC;oBACtB,IAAIJ,QAAQ,CAACI,MAAM,EAAE;wBACjBK,YAAY,CAACL,MAAM,GAAGJ,QAAQ,CAACI,MAAM,CAACzB,QAAQ;oBAClD;gBACJ;gBACA,OAAOpF,QAAQkH,cAAcd,OAAOA,MAAMc;YAC9C;QACJ;IACJ,GAAG;QAAC/E;KAAK;IAET,MAAMgF,eAAehH;IACrBR,gBACI;QACI,IAAI,CAACuC,MAAM0C,wBAAwB,EAAE;YACjC1C,MAAMkF,iBAAiB;QAC3B;IACJ,GACA,MACA;QAACD,aAAaE,OAAO;WAAKxF;KAAoB;IAElD,MAAMyF,YAAY1H,aAAauH,cAAc1E;IAE7C,IAAI,CAACN,MAAM;QACP,qBACI,KAAC5C;YAAOmD,OAAO;gBAAC6E,UAAU;YAAC;sBACvB,cAAA,KAAC/H;;IAGb;IAEA,MAAMgI,SACFtF,MAAM0B,KAAK,CAAC6D,MAAM,KAAK,OAAOhG,OAAO,CAAC,EAAE,GAAGA,QAAQ4B,IAAI,CAAC,CAAC,EAACqE,WAAW,EAAC,GAAKA,gBAAgBxF,MAAM0B,KAAK,CAAC6D,MAAM;IACjH,MAAME,UAAUhE,MAAM6C,WAAW,GAAGD,IAAI,CAACU,MAAM,GAAG;IAElD,qBACI,KAAC3H;QAAImD,KAAK6E;QAAY,GAAGvE,MAAM;QAAG,GAAGC,UAAU,OAAO;kBAClD,cAAA,KAAC1C;YAAiBsH,OAAO;gBAAC5E;gBAAWjB;gBAAeG;gBAAOyB;gBAAOlC;gBAAS0F;YAAY;sBACnF,cAAA,KAACK;0BACItF,MAAM2F,QAAQ,IAAI,CAAC3F,MAAM4F,UAAU,GAChCpE,uBAEA;;sCACI,MAACpE;4BAAIyI,WAAU;4BAAS,GAAG/E,UAAU,QAAQ;4BAAEgF,IAAG;4BAAKC,KAAK;gCAACrG;4BAAO;;8CAChE,MAACsG;oCAAO,GAAGlF,UAAU,SAAS;;wCACzB,CAAC,CAACI,uBACC,KAAC+E;sDACG,cAAA,KAACC;gDAAG1F,OAAO;oDAAC2F,SAAS;gDAAC;gDAAGC,SAAS3E,MAAM4E,aAAa,GAAGtB,MAAM;0DACzD7D;;6CAGT;sDACJ,KAACoE,OAAOgB,MAAM;4CACVlG,uBAAuBA;4CACvBD,kBAAkBA;4CAClBT,SAASA;4CACR,GAAGD,WAAW;;;;8CAGvB,KAAC8G;oCAAO,GAAGzF,UAAU,OAAO;8CACvB2E,wBACG,KAACH,OAAOkB,IAAI;wCACRpG,uBAAuBA;wCACvBD,kBAAkBA;wCAClBT,SAASA;wCACR,GAAGD,WAAW;uDAGnB,KAACwG;kDACG,cAAA,KAACQ;4CAAGL,SAAS3E,MAAM4E,aAAa,GAAGtB,MAAM;sDACrC,cAAA,KAAC9F;gDAAayH,SAAShH,WAAW,CAACM,MAAM4F,UAAU;0DAC9CpE;;;;;;;wBAOxBF;wBACAC;;;;;;AAO7B,EAAE;AAEF,OAAO,MAAMoF,uBAAuB;IAChCC,iBAAiB;IACjBC,SAAS;IACTC,WAAW;IACXC,QAAQ;IACRC,iBAAiB;IACjBC,iBAAiB;IACjBC,eAAe;AACnB,EAAE;AAEFpH,MAAMqH,eAAe,GAAG3I;AACxBsB,MAAMsH,aAAa,GAAG7I;AACtBuB,MAAMuH,UAAU,GAAG/I;AACnBwB,MAAMwH,iBAAiB,GAAG7I;AAC1BqB,MAAMmH,eAAe,GAAGtI;AACxBmB,MAAMkH,eAAe,GAAGpI;AACxBkB,MAAMiH,MAAM,GAAGlI;AACfiB,MAAMyH,MAAM,GAAGzI;AACfgB,MAAMwG,MAAM,GAAGvH;AACfe,MAAM0H,WAAW,GAAGxI;AACpBc,MAAM2H,OAAO,GAAGpJ;AAChByB,MAAM4H,OAAO,GAAGzI;AAChBa,MAAM6H,MAAM,GAAGzI;AACfY,MAAM8H,UAAU,GAAGzI;AACnBW,MAAM+H,OAAO,GAAGzI;AAChBU,MAAMgH,SAAS,GAAGzH;AAElBS,MAAMgI,MAAM,GAAG5J"}
@@ -1 +1 @@
1
- {"version":3,"file":"TableHeaderActions.d.ts","sourceRoot":"","sources":["../../../../../src/components/table/table-actions/TableHeaderActions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,YAAY,EAAkB,MAAM,eAAe,CAAC;AAQpF,MAAM,MAAM,6BAA6B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;AAEvF,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC;CAAG;AAWlF,eAAO,MAAM,kBAAkB;WARpB,uBAAuB;SACzB,cAAc;iBACN,6BAA6B;cAChC,IAAI;EAuCjB,CAAC"}
1
+ {"version":3,"file":"TableHeaderActions.d.ts","sourceRoot":"","sources":["../../../../../src/components/table/table-actions/TableHeaderActions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,YAAY,EAAkB,MAAM,eAAe,CAAC;AAOpF,MAAM,MAAM,6BAA6B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;AAEvF,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC;CAAG;AAWlF,eAAO,MAAM,kBAAkB;WARpB,uBAAuB;SACzB,cAAc;iBACN,6BAA6B;cAChC,IAAI;EA0CjB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { factory, Grid, Group, useProps } from '@mantine/core';
3
+ import { useMemo } from 'react';
3
4
  import { TableComponentsOrder } from '../Table';
4
5
  import { useTableContext } from '../TableContext';
5
6
  import { TableActionsList } from './TableActionsList';
@@ -7,11 +8,15 @@ const defaultProps = {};
7
8
  export const TableHeaderActions = factory((props, ref)=>{
8
9
  const { store, getStyles, getRowActions } = useTableContext();
9
10
  const { style, className, classNames, styles, ...others } = useProps('PlasmaTableHeaderActions', defaultProps, props);
10
- const selectedRows = store.getSelectedRows();
11
- if (selectedRows.length === 0) {
12
- return null;
13
- }
14
- const actions = getRowActions(selectedRows);
11
+ const actions = useMemo(()=>{
12
+ const selectedRows = store.getSelectedRows();
13
+ if (selectedRows.length === 0) {
14
+ return [];
15
+ }
16
+ return getRowActions(selectedRows);
17
+ }, [
18
+ store.state.rowSelection
19
+ ]);
15
20
  if (actions.length === 0) {
16
21
  return null;
17
22
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/table/table-actions/TableHeaderActions.tsx"],"sourcesContent":["import {Factory, factory, Grid, GridColProps, Group, useProps} from '@mantine/core';\nimport {ReactElement} from 'react';\n\nimport {TableComponentsOrder} from '../Table';\nimport {TableAction} from '../Table.types';\nimport {useTableContext} from '../TableContext';\nimport {TableActionsList} from './TableActionsList';\n\nexport type TableHeaderActionsStylesNames = 'headerActionsRoot' | 'headerActionsGroup';\n\nexport interface TableHeaderActionsProps extends Omit<GridColProps, 'children'> {}\n\ntype TableHeaderActionsFactory = Factory<{\n props: TableHeaderActionsProps;\n ref: HTMLDivElement;\n stylesNames: TableHeaderActionsStylesNames;\n compound: true;\n}>;\n\nconst defaultProps: Partial<TableHeaderActionsProps> = {};\n\nexport const TableHeaderActions = factory<TableHeaderActionsFactory>(\n (props: TableHeaderActionsProps, ref): ReactElement => {\n const {store, getStyles, getRowActions} = useTableContext();\n const {style, className, classNames, styles, ...others} = useProps(\n 'PlasmaTableHeaderActions',\n defaultProps,\n props,\n );\n const selectedRows = store.getSelectedRows();\n if (selectedRows.length === 0) {\n return null;\n }\n\n const actions: TableAction[] = getRowActions(selectedRows);\n if (actions.length === 0) {\n return null;\n }\n\n const stylesApiProps = {classNames, styles};\n\n return (\n <Grid.Col\n span=\"content\"\n order={TableComponentsOrder.Actions}\n ref={ref}\n {...getStyles('headerActionsRoot', {className, style, ...stylesApiProps})}\n {...others}\n >\n <Group gap=\"xs\" {...getStyles('headerActionsGroup', stylesApiProps)}>\n <TableActionsList actions={actions} variant=\"split\" />\n </Group>\n </Grid.Col>\n );\n },\n);\n"],"names":["factory","Grid","Group","useProps","TableComponentsOrder","useTableContext","TableActionsList","defaultProps","TableHeaderActions","props","ref","store","getStyles","getRowActions","style","className","classNames","styles","others","selectedRows","getSelectedRows","length","actions","stylesApiProps","Col","span","order","Actions","gap","variant"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAAA,SAAiBA,OAAO,EAAEC,IAAI,EAAgBC,KAAK,EAAEC,QAAQ,QAAO,gBAAgB;AAGpF,SAAQC,oBAAoB,QAAO,WAAW;AAE9C,SAAQC,eAAe,QAAO,kBAAkB;AAChD,SAAQC,gBAAgB,QAAO,qBAAqB;AAapD,MAAMC,eAAiD,CAAC;AAExD,OAAO,MAAMC,qBAAqBR,QAC9B,CAACS,OAAgCC;IAC7B,MAAM,EAACC,KAAK,EAAEC,SAAS,EAAEC,aAAa,EAAC,GAAGR;IAC1C,MAAM,EAACS,KAAK,EAAEC,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAE,GAAGC,QAAO,GAAGf,SACtD,4BACAI,cACAE;IAEJ,MAAMU,eAAeR,MAAMS,eAAe;IAC1C,IAAID,aAAaE,MAAM,KAAK,GAAG;QAC3B,OAAO;IACX;IAEA,MAAMC,UAAyBT,cAAcM;IAC7C,IAAIG,QAAQD,MAAM,KAAK,GAAG;QACtB,OAAO;IACX;IAEA,MAAME,iBAAiB;QAACP;QAAYC;IAAM;IAE1C,qBACI,KAAChB,KAAKuB,GAAG;QACLC,MAAK;QACLC,OAAOtB,qBAAqBuB,OAAO;QACnCjB,KAAKA;QACJ,GAAGE,UAAU,qBAAqB;YAACG;YAAWD;YAAO,GAAGS,cAAc;QAAA,EAAE;QACxE,GAAGL,MAAM;kBAEV,cAAA,KAAChB;YAAM0B,KAAI;YAAM,GAAGhB,UAAU,sBAAsBW,eAAe;sBAC/D,cAAA,KAACjB;gBAAiBgB,SAASA;gBAASO,SAAQ;;;;AAI5D,GACF"}
1
+ {"version":3,"sources":["../../../../../src/components/table/table-actions/TableHeaderActions.tsx"],"sourcesContent":["import {Factory, factory, Grid, GridColProps, Group, useProps} from '@mantine/core';\nimport {ReactElement, useMemo} from 'react';\n\nimport {TableComponentsOrder} from '../Table';\nimport {useTableContext} from '../TableContext';\nimport {TableActionsList} from './TableActionsList';\n\nexport type TableHeaderActionsStylesNames = 'headerActionsRoot' | 'headerActionsGroup';\n\nexport interface TableHeaderActionsProps extends Omit<GridColProps, 'children'> {}\n\ntype TableHeaderActionsFactory = Factory<{\n props: TableHeaderActionsProps;\n ref: HTMLDivElement;\n stylesNames: TableHeaderActionsStylesNames;\n compound: true;\n}>;\n\nconst defaultProps: Partial<TableHeaderActionsProps> = {};\n\nexport const TableHeaderActions = factory<TableHeaderActionsFactory>(\n (props: TableHeaderActionsProps, ref): ReactElement => {\n const {store, getStyles, getRowActions} = useTableContext();\n const {style, className, classNames, styles, ...others} = useProps(\n 'PlasmaTableHeaderActions',\n defaultProps,\n props,\n );\n\n const actions = useMemo(() => {\n const selectedRows = store.getSelectedRows();\n if (selectedRows.length === 0) {\n return [];\n }\n return getRowActions(selectedRows);\n }, [store.state.rowSelection]);\n\n if (actions.length === 0) {\n return null;\n }\n\n const stylesApiProps = {classNames, styles};\n\n return (\n <Grid.Col\n span=\"content\"\n order={TableComponentsOrder.Actions}\n ref={ref}\n {...getStyles('headerActionsRoot', {className, style, ...stylesApiProps})}\n {...others}\n >\n <Group gap=\"xs\" {...getStyles('headerActionsGroup', stylesApiProps)}>\n <TableActionsList actions={actions} variant=\"split\" />\n </Group>\n </Grid.Col>\n );\n },\n);\n"],"names":["factory","Grid","Group","useProps","useMemo","TableComponentsOrder","useTableContext","TableActionsList","defaultProps","TableHeaderActions","props","ref","store","getStyles","getRowActions","style","className","classNames","styles","others","actions","selectedRows","getSelectedRows","length","state","rowSelection","stylesApiProps","Col","span","order","Actions","gap","variant"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAAA,SAAiBA,OAAO,EAAEC,IAAI,EAAgBC,KAAK,EAAEC,QAAQ,QAAO,gBAAgB;AACpF,SAAsBC,OAAO,QAAO,QAAQ;AAE5C,SAAQC,oBAAoB,QAAO,WAAW;AAC9C,SAAQC,eAAe,QAAO,kBAAkB;AAChD,SAAQC,gBAAgB,QAAO,qBAAqB;AAapD,MAAMC,eAAiD,CAAC;AAExD,OAAO,MAAMC,qBAAqBT,QAC9B,CAACU,OAAgCC;IAC7B,MAAM,EAACC,KAAK,EAAEC,SAAS,EAAEC,aAAa,EAAC,GAAGR;IAC1C,MAAM,EAACS,KAAK,EAAEC,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAE,GAAGC,QAAO,GAAGhB,SACtD,4BACAK,cACAE;IAGJ,MAAMU,UAAUhB,QAAQ;QACpB,MAAMiB,eAAeT,MAAMU,eAAe;QAC1C,IAAID,aAAaE,MAAM,KAAK,GAAG;YAC3B,OAAO,EAAE;QACb;QACA,OAAOT,cAAcO;IACzB,GAAG;QAACT,MAAMY,KAAK,CAACC,YAAY;KAAC;IAE7B,IAAIL,QAAQG,MAAM,KAAK,GAAG;QACtB,OAAO;IACX;IAEA,MAAMG,iBAAiB;QAACT;QAAYC;IAAM;IAE1C,qBACI,KAACjB,KAAK0B,GAAG;QACLC,MAAK;QACLC,OAAOxB,qBAAqByB,OAAO;QACnCnB,KAAKA;QACJ,GAAGE,UAAU,qBAAqB;YAACG;YAAWD;YAAO,GAAGW,cAAc;QAAA,EAAE;QACxE,GAAGP,MAAM;kBAEV,cAAA,KAACjB;YAAM6B,KAAI;YAAM,GAAGlB,UAAU,sBAAsBa,eAAe;sBAC/D,cAAA,KAACnB;gBAAiBa,SAASA;gBAASY,SAAQ;;;;AAI5D,GACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coveord/plasma-mantine",
3
- "version": "54.0.1",
3
+ "version": "54.0.2",
4
4
  "description": "A Plasma flavoured Mantine theme",
5
5
  "keywords": [
6
6
  "plasma",
@@ -9,7 +9,7 @@ import {
9
9
  useReactTable,
10
10
  } from '@tanstack/react-table';
11
11
  import isEqual from 'fast-deep-equal';
12
- import {Children, ForwardedRef, ReactElement, useRef} from 'react';
12
+ import {Children, ForwardedRef, ReactElement, useEffect, useRef} from 'react';
13
13
  import {CustomComponentThemeExtend, identity} from '../../utils';
14
14
  import classes from './Table.module.css';
15
15
  import {TableLayout, TableProps} from './Table.types';
@@ -197,6 +197,22 @@ export const Table = <T,>(props: TableProps<T> & {ref?: ForwardedRef<HTMLDivElem
197
197
  },
198
198
  }));
199
199
 
200
+ useEffect(() => {
201
+ // Update the selected rows data when the data prop changes
202
+ if (store.getSelectedRows().length > 0) {
203
+ store.setRowSelection((old) => {
204
+ const rowsById = table.getRowModel().rowsById;
205
+ const newSelection = {...old};
206
+ Object.keys(old).forEach((rowId) => {
207
+ if (rowsById[rowId]) {
208
+ newSelection[rowId] = rowsById[rowId].original;
209
+ }
210
+ });
211
+ return isEqual(newSelection, old) ? old : newSelection;
212
+ });
213
+ }
214
+ }, [data]);
215
+
200
216
  const containerRef = useRef<HTMLDivElement>();
201
217
  useClickOutside(
202
218
  () => {
@@ -1,11 +1,11 @@
1
1
  import {ColumnDef, createColumnHelper} from '@tanstack/table-core';
2
2
  import {render, screen, userEvent, waitFor, within} from '@test-utils';
3
+ import {useState} from 'react';
3
4
 
4
5
  import {Table} from '../Table';
5
6
  import {useTable} from '../use-table';
6
7
 
7
8
  type RowData = {name: string};
8
-
9
9
  const columnHelper = createColumnHelper<RowData>();
10
10
  const columns: Array<ColumnDef<RowData>> = [columnHelper.accessor('name', {enableSorting: false})];
11
11
 
@@ -23,7 +23,7 @@ describe('Table.Actions', () => {
23
23
  getRowActions={(selected: RowData[]) => [
24
24
  {
25
25
  group: '$$primary',
26
- component: <Table.ActionItem leftSection={null}>Eat {selected[0].name}</Table.ActionItem>,
26
+ component: <Table.ActionItem>Eat {selected[0].name}</Table.ActionItem>,
27
27
  },
28
28
  ]}
29
29
  >
@@ -60,19 +60,11 @@ describe('Table.Actions', () => {
60
60
  getRowActions={(selected: RowData[]) => [
61
61
  {
62
62
  group: 'secondary',
63
- component: (
64
- <Table.ActionItem key="peel" leftSection={null}>
65
- Peel {selected[0].name}
66
- </Table.ActionItem>
67
- ),
63
+ component: <Table.ActionItem key="peel">Peel {selected[0].name}</Table.ActionItem>,
68
64
  },
69
65
  {
70
66
  group: 'secondary',
71
- component: (
72
- <Table.ActionItem key="chop" leftSection={null}>
73
- Chop {selected[0].name}
74
- </Table.ActionItem>
75
- ),
67
+ component: <Table.ActionItem key="chop">Chop {selected[0].name}</Table.ActionItem>,
76
68
  },
77
69
  ]}
78
70
  >
@@ -107,7 +99,7 @@ describe('Table.Actions', () => {
107
99
  getRowActions={(selected: RowData[]) => [
108
100
  {
109
101
  group: '$$primary',
110
- component: <Table.ActionItem leftSection={null}>Eat {selected[0].name}</Table.ActionItem>,
102
+ component: <Table.ActionItem>Eat {selected[0].name}</Table.ActionItem>,
111
103
  },
112
104
  ]}
113
105
  >
@@ -135,7 +127,7 @@ describe('Table.Actions', () => {
135
127
  getRowActions={(selected: RowData[]) => [
136
128
  {
137
129
  group: '$$primary',
138
- component: <Table.ActionItem leftSection={null}>Eat {selected[0].name}</Table.ActionItem>,
130
+ component: <Table.ActionItem>Eat {selected[0].name}</Table.ActionItem>,
139
131
  },
140
132
  ]}
141
133
  >
@@ -151,6 +143,56 @@ describe('Table.Actions', () => {
151
143
  expect(screen.queryByRole('button', {name: 'Eat vegetable'})).not.toBeInTheDocument();
152
144
  });
153
145
 
146
+ it('keeps the selected row data in sync with the data prop', async () => {
147
+ // When a row is selected and the data prop changes, the selected row data should be updated with the new data without having to reselect the row
148
+ type Food = {name: string; status: 'fresh' | 'eaten'};
149
+ const foodColumnHelper = createColumnHelper<Food>();
150
+ const myColumns: Array<ColumnDef<Food>> = [foodColumnHelper.accessor('name', {enableSorting: false})];
151
+ const user = userEvent.setup();
152
+
153
+ const Fixture = () => {
154
+ const [data, setData] = useState<Food[]>([{name: 'fruit', status: 'fresh'}]);
155
+ const eatFruit = () => setData([{name: 'fruit', status: 'eaten'}]);
156
+
157
+ const store = useTable<Food>();
158
+ return (
159
+ <Table<Food>
160
+ store={store}
161
+ data={data}
162
+ columns={myColumns}
163
+ getRowActions={(selected: Food[]) => [
164
+ {
165
+ group: '$$primary',
166
+ component:
167
+ selected[0].status === 'fresh' ? (
168
+ <Table.ActionItem key="eat" onClick={eatFruit}>
169
+ Eat
170
+ </Table.ActionItem>
171
+ ) : null,
172
+ },
173
+ {
174
+ group: '$$primary',
175
+ component:
176
+ selected[0].status === 'eaten' ? (
177
+ <Table.ActionItem key="trash">Throw away</Table.ActionItem>
178
+ ) : null,
179
+ },
180
+ ]}
181
+ >
182
+ <Table.Header />
183
+ </Table>
184
+ );
185
+ };
186
+ render(<Fixture />);
187
+ await user.click(screen.getByRole('cell', {name: 'fruit'}));
188
+ expect(screen.getByRole('button', {name: 'Eat'})).toBeVisible();
189
+ expect(screen.queryByRole('button', {name: 'Throw away'})).not.toBeInTheDocument();
190
+
191
+ await user.click(screen.getByRole('button', {name: 'Eat'}));
192
+ expect(screen.queryByRole('button', {name: 'Eat'})).not.toBeInTheDocument();
193
+ expect(screen.getByRole('button', {name: 'Throw away'})).toBeVisible();
194
+ });
195
+
154
196
  describe('when multi row selection is enabled', () => {
155
197
  it('passes down an array of selected rows', async () => {
156
198
  const user = userEvent.setup();
@@ -166,9 +208,7 @@ describe('Table.Actions', () => {
166
208
  {
167
209
  group: '$$primary',
168
210
  component: (
169
- <Table.ActionItem leftSection={null}>
170
- Eat {data.map((d) => d.name).join(', ')}
171
- </Table.ActionItem>
211
+ <Table.ActionItem>Eat {data.map((d) => d.name).join(', ')}</Table.ActionItem>
172
212
  ),
173
213
  },
174
214
  ]}