@coveord/plasma-mantine 54.0.3 → 54.1.0

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.
@@ -220,8 +220,7 @@ var Table = function(props) {
220
220
  children: store.isVacant && !store.isFiltered ? noData : /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
221
221
  children: [
222
222
  /*#__PURE__*/ (0, _jsxruntime.jsxs)(_core.Box, _object_spread_props._(_object_spread._({
223
- component: "table",
224
- pb: "sm"
223
+ component: "table"
225
224
  }, getStyles('table')), {
226
225
  mod: {
227
226
  loading: loading
@@ -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, 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\" pb=\"sm\" {...getStyles('table')} 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"],"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')} 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","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"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  .table {
2
2
  width: 100%;
3
+ padding-bottom: var(--mantine-spacing-sm);
3
4
  }
4
5
 
5
6
  .header {
@@ -164,7 +164,6 @@ export const Table = (props)=>{
164
164
  children: [
165
165
  /*#__PURE__*/ _jsxs(Box, {
166
166
  component: "table",
167
- pb: "sm",
168
167
  ...getStyles('table'),
169
168
  mod: {
170
169
  loading
@@ -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, 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\" pb=\"sm\" {...getStyles('table')} 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"],"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')} 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","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"],"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,KAAK;gCAACpG;4BAAO;;8CACxD,MAACqG;oCAAO,GAAGjF,UAAU,SAAS;;wCACzB,CAAC,CAACI,uBACC,KAAC8E;sDACG,cAAA,KAACC;gDAAGzF,OAAO;oDAAC0F,SAAS;gDAAC;gDAAGC,SAAS1E,MAAM2E,aAAa,GAAGrB,MAAM;0DACzD7D;;6CAGT;sDACJ,KAACoE,OAAOe,MAAM;4CACVjG,uBAAuBA;4CACvBD,kBAAkBA;4CAClBT,SAASA;4CACR,GAAGD,WAAW;;;;8CAGvB,KAAC6G;oCAAO,GAAGxF,UAAU,OAAO;8CACvB2E,wBACG,KAACH,OAAOiB,IAAI;wCACRnG,uBAAuBA;wCACvBD,kBAAkBA;wCAClBT,SAASA;wCACR,GAAGD,WAAW;uDAGnB,KAACuG;kDACG,cAAA,KAACQ;4CAAGL,SAAS1E,MAAM2E,aAAa,GAAGrB,MAAM;sDACrC,cAAA,KAAC9F;gDAAawH,SAAS/G,WAAW,CAACM,MAAM4F,UAAU;0DAC9CpE;;;;;;;wBAOxBF;wBACAC;;;;;;AAO7B,EAAE;AAEF,OAAO,MAAMmF,uBAAuB;IAChCC,iBAAiB;IACjBC,SAAS;IACTC,WAAW;IACXC,QAAQ;IACRC,iBAAiB;IACjBC,iBAAiB;IACjBC,eAAe;AACnB,EAAE;AAEFnH,MAAMoH,eAAe,GAAG1I;AACxBsB,MAAMqH,aAAa,GAAG5I;AACtBuB,MAAMsH,UAAU,GAAG9I;AACnBwB,MAAMuH,iBAAiB,GAAG5I;AAC1BqB,MAAMkH,eAAe,GAAGrI;AACxBmB,MAAMiH,eAAe,GAAGnI;AACxBkB,MAAMgH,MAAM,GAAGjI;AACfiB,MAAMwH,MAAM,GAAGxI;AACfgB,MAAMuG,MAAM,GAAGtH;AACfe,MAAMyH,WAAW,GAAGvI;AACpBc,MAAM0H,OAAO,GAAGnJ;AAChByB,MAAM2H,OAAO,GAAGxI;AAChBa,MAAM4H,MAAM,GAAGxI;AACfY,MAAM6H,UAAU,GAAGxI;AACnBW,MAAM8H,OAAO,GAAGxI;AAChBU,MAAM+G,SAAS,GAAGxH;AAElBS,MAAM+H,MAAM,GAAG3J"}
@@ -1,5 +1,6 @@
1
1
  .table {
2
2
  width: 100%;
3
+ padding-bottom: var(--mantine-spacing-sm);
3
4
  }
4
5
 
5
6
  .header {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coveord/plasma-mantine",
3
- "version": "54.0.3",
3
+ "version": "54.1.0",
4
4
  "description": "A Plasma flavoured Mantine theme",
5
5
  "keywords": [
6
6
  "plasma",
@@ -1,5 +1,6 @@
1
1
  .table {
2
2
  width: 100%;
3
+ padding-bottom: var(--mantine-spacing-sm);
3
4
  }
4
5
 
5
6
  .header {
@@ -245,7 +245,7 @@ export const Table = <T,>(props: TableProps<T> & {ref?: ForwardedRef<HTMLDivElem
245
245
  noData
246
246
  ) : (
247
247
  <>
248
- <Box component="table" pb="sm" {...getStyles('table')} mod={{loading}}>
248
+ <Box component="table" {...getStyles('table')} mod={{loading}}>
249
249
  <thead {...getStyles('header')}>
250
250
  {!!header ? (
251
251
  <tr>