@coveord/plasma-mantine 52.26.6 → 52.27.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.
Files changed (59) hide show
  1. package/.turbo/turbo-build.log +3 -3
  2. package/.turbo/turbo-test.log +35 -34
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/cjs/components/table/Table.d.ts.map +1 -1
  5. package/dist/cjs/components/table/Table.js +7 -3
  6. package/dist/cjs/components/table/Table.js.map +1 -1
  7. package/dist/cjs/components/table/Table.styles.d.ts +1 -0
  8. package/dist/cjs/components/table/Table.styles.d.ts.map +1 -1
  9. package/dist/cjs/components/table/Table.styles.js +6 -5
  10. package/dist/cjs/components/table/Table.styles.js.map +1 -1
  11. package/dist/cjs/components/table/Table.types.d.ts +8 -2
  12. package/dist/cjs/components/table/Table.types.d.ts.map +1 -1
  13. package/dist/cjs/components/table/layouts/RowLayout.js +2 -1
  14. package/dist/cjs/components/table/layouts/RowLayout.js.map +1 -1
  15. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.d.ts +4 -0
  16. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.d.ts.map +1 -0
  17. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.js +99 -0
  18. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.js.map +1 -0
  19. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.styles.d.ts +10 -0
  20. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.styles.d.ts.map +1 -0
  21. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.styles.js +23 -0
  22. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.styles.js.map +1 -0
  23. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.types.d.ts +46 -0
  24. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.types.d.ts.map +1 -0
  25. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.types.js +6 -0
  26. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.types.js.map +1 -0
  27. package/dist/esm/components/table/Table.d.ts.map +1 -1
  28. package/dist/esm/components/table/Table.js +6 -2
  29. package/dist/esm/components/table/Table.js.map +1 -1
  30. package/dist/esm/components/table/Table.styles.d.ts +1 -0
  31. package/dist/esm/components/table/Table.styles.d.ts.map +1 -1
  32. package/dist/esm/components/table/Table.styles.js +6 -5
  33. package/dist/esm/components/table/Table.styles.js.map +1 -1
  34. package/dist/esm/components/table/Table.types.d.ts +8 -2
  35. package/dist/esm/components/table/Table.types.d.ts.map +1 -1
  36. package/dist/esm/components/table/Table.types.js.map +1 -1
  37. package/dist/esm/components/table/layouts/RowLayout.js +1 -1
  38. package/dist/esm/components/table/layouts/RowLayout.js.map +1 -1
  39. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.d.ts +4 -0
  40. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.d.ts.map +1 -0
  41. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.js +84 -0
  42. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.js.map +1 -0
  43. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.styles.d.ts +10 -0
  44. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.styles.d.ts.map +1 -0
  45. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.styles.js +11 -0
  46. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.styles.js.map +1 -0
  47. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.types.d.ts +46 -0
  48. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.types.d.ts.map +1 -0
  49. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.types.js +3 -0
  50. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.types.js.map +1 -0
  51. package/package.json +1 -1
  52. package/src/components/table/Table.styles.ts +6 -5
  53. package/src/components/table/Table.tsx +6 -1
  54. package/src/components/table/Table.types.ts +8 -1
  55. package/src/components/table/__tests__/TableColumnsSelector.spec.tsx +260 -0
  56. package/src/components/table/layouts/RowLayout.tsx +1 -1
  57. package/src/components/table/table-columns-selector/TableColumnsSelector.styles.ts +8 -0
  58. package/src/components/table/table-columns-selector/TableColumnsSelector.tsx +78 -0
  59. package/src/components/table/table-columns-selector/TableColumnsSelector.types.ts +46 -0
@@ -13,6 +13,7 @@ import { TableLayouts } from './layouts/TableLayouts';
13
13
  import { TableActions } from './table-actions/TableActions';
14
14
  import { TableAccordionColumn, TableCollapsibleColumn } from './table-column/TableCollapsibleColumn';
15
15
  import { TableSelectableColumn } from './table-column/TableSelectableColumn';
16
+ import { TableColumnsSelector } from './table-columns-selector/TableColumnsSelector';
16
17
  import { TableConsumer } from './table-consumer/TableConsumer';
17
18
  import { TableDateRangePicker } from './table-date-range-picker/TableDateRangePicker';
18
19
  import { TableFilter } from './table-filter/TableFilter';
@@ -72,6 +73,7 @@ export const Table = ({ data, getRowId, noDataChildren, getExpandChildren, initi
72
73
  },
73
74
  ...options
74
75
  });
76
+ const getAllColumns = table.getAllFlatColumns;
75
77
  const [state, setState] = useState(table.initialState);
76
78
  table.setOptions((prev)=>({
77
79
  ...prev,
@@ -125,7 +127,7 @@ export const Table = ({ data, getRowId, noDataChildren, getExpandChildren, initi
125
127
  });
126
128
  }
127
129
  const Layout = layouts.find(({ name })=>name === form.values.layout);
128
- const hasRows = table.getRowModel().rows.length > 0;
130
+ const hasRows = table.getRowModel()?.rows.length > 0;
129
131
  return /*#__PURE__*/ _jsx(Box, {
130
132
  ref: outsideClickRef,
131
133
  children: /*#__PURE__*/ _jsxs(TableContext.Provider, {
@@ -143,7 +145,8 @@ export const Table = ({ data, getRowId, noDataChildren, getExpandChildren, initi
143
145
  multiRowSelectionEnabled,
144
146
  getPageCount: table.getPageCount,
145
147
  disableRowSelection,
146
- layouts
148
+ layouts,
149
+ getAllColumns
147
150
  },
148
151
  children: [
149
152
  consumer,
@@ -206,6 +209,7 @@ export const Table = ({ data, getRowId, noDataChildren, getExpandChildren, initi
206
209
  })
207
210
  });
208
211
  };
212
+ Table.ColumnsSelector = TableColumnsSelector;
209
213
  Table.Actions = TableActions;
210
214
  Table.Filter = TableFilter;
211
215
  Table.Footer = TableFooter;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {Box, Center, Loader} from '@mantine/core';\nimport {useForm} from '@mantine/form';\nimport {useDidUpdate} from '@mantine/hooks';\nimport {\n ColumnDef,\n Row,\n TableState as TanstackTableState,\n defaultColumnSizing,\n getCoreRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport debounce from 'lodash.debounce';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport {Children, Dispatch, ReactElement, cloneElement, useCallback, useEffect, useState} from 'react';\n\nimport {useRowSelection} from '../../hooks/useRowSelection';\nimport useStyles from './Table.styles';\nimport {TableFormType, TableProps, TableState, TableType} from './Table.types';\nimport {TableContext} from './TableContext';\nimport {TableLayouts} from './layouts/TableLayouts';\nimport {TableActions} from './table-actions/TableActions';\nimport {TableAccordionColumn, TableCollapsibleColumn} from './table-column/TableCollapsibleColumn';\nimport {TableSelectableColumn} from './table-column/TableSelectableColumn';\nimport {TableConsumer} from './table-consumer/TableConsumer';\nimport {TableDateRangePicker} from './table-date-range-picker/TableDateRangePicker';\nimport {TableFilter} from './table-filter/TableFilter';\nimport {TableFooter} from './table-footer/TableFooter';\nimport {TableHeader} from './table-header/TableHeader';\nimport {TableLastUpdated} from './table-last-updated/TableLastUpdated';\nimport {TableLoading} from './table-loading/TableLoading';\nimport {TablePagination} from './table-pagination/TablePagination';\nimport {TablePerPage} from './table-per-page/TablePerPage';\nimport {TablePredicate} from './table-predicate/TablePredicate';\n\nexport const Table: TableType = <T,>({\n data,\n getRowId,\n noDataChildren,\n getExpandChildren,\n initialState = {},\n columns,\n layouts = [TableLayouts.Rows],\n onMount,\n onChange,\n children,\n loading = false,\n doubleClickAction,\n multiRowSelectionEnabled,\n disableRowSelection,\n onRowSelectionChange,\n additionalRootNodes,\n classNames,\n styles,\n unstyled,\n options = {},\n}: TableProps<T>) => {\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 consumer = convertedChildren.find((child) => child.type === TableConsumer);\n const lastUpdated = convertedChildren.find((child) => child.type === TableLastUpdated);\n\n const {predicates, dateRange, ...initialStateWithoutForm} = initialState;\n const form = useForm<TableFormType>({\n initialValues: {\n predicates: initialState?.predicates ?? {},\n dateRange: initialState?.dateRange ?? [null, null],\n layout: initialState?.layout ?? layouts[0].name,\n },\n });\n const {classes} = useStyles(null, {name: 'PlasmaTable', classNames, styles, unstyled});\n\n const table = useReactTable({\n initialState: defaultsDeep(initialStateWithoutForm, {\n pagination: {pageSize: TablePerPage.DEFAULT_SIZE},\n globalFilter: '',\n }),\n data,\n columns: multiRowSelectionEnabled ? [TableSelectableColumn as ColumnDef<T>].concat(columns) : columns,\n getCoreRowModel: getCoreRowModel(),\n manualPagination: options?.getPaginationRowModel === undefined,\n enableMultiRowSelection: !!multiRowSelectionEnabled,\n getRowId,\n getRowCanExpand: (row: Row<T>) => !!getExpandChildren?.(row.original) ?? false,\n enableRowSelection: !loading,\n defaultColumn: {\n size: undefined,\n minSize: defaultColumnSizing.minSize,\n maxSize: defaultColumnSizing.maxSize,\n },\n ...options,\n });\n\n const [state, setState] = useState<TableState<T>>(table.initialState as TableState<T>);\n table.setOptions((prev) => ({\n ...prev,\n state: state as TanstackTableState,\n onStateChange: setState as Dispatch<React.SetStateAction<TanstackTableState>>,\n }));\n const {clearSelection, getSelectedRow, getSelectedRows, outsideClickRef} = useRowSelection(table, {\n multiRowSelectionEnabled,\n onRowSelectionChange,\n additionalRootNodes,\n });\n const isFiltered =\n !!state.globalFilter ||\n Object.keys(form.values?.predicates ?? {}).some((predicate) => !!form.values.predicates[predicate]) ||\n !!form.values.dateRange?.[0] ||\n !!form.values.dateRange?.[1];\n\n const triggerChange = debounce(() => onChange?.({...state, ...form.values}), 500);\n\n useEffect(() => {\n onMount?.({...state, ...form.values});\n return () => {\n triggerChange.cancel();\n };\n }, []);\n\n useDidUpdate(() => {\n triggerChange();\n if (!multiRowSelectionEnabled) {\n clearSelection();\n }\n }, [\n state.globalFilter,\n state.pagination,\n state.sorting,\n JSON.stringify(form.values.dateRange),\n JSON.stringify(form.values.predicates),\n ]);\n\n const clearFilters = useCallback(() => {\n form.setFieldValue('predicates', initialState.predicates ?? {});\n setState((prevState) => ({...prevState, globalFilter: ''}));\n }, []);\n\n if (!data) {\n return (\n <Center sx={{flexGrow: 1}}>\n <Loader />\n </Center>\n );\n }\n\n const Layout = layouts.find(({name}) => name === form.values.layout);\n const hasRows = table.getRowModel().rows.length > 0;\n\n return (\n <Box ref={outsideClickRef}>\n <TableContext.Provider\n value={{\n onChange: triggerChange,\n state,\n isFiltered,\n setState,\n clearFilters,\n getSelectedRow,\n getSelectedRows,\n clearSelection,\n form,\n containerRef: outsideClickRef,\n multiRowSelectionEnabled,\n getPageCount: table.getPageCount,\n disableRowSelection,\n layouts,\n }}\n >\n {consumer}\n {!hasRows && !isFiltered && !loading ? (\n noDataChildren\n ) : (\n <>\n <Box component=\"table\" className={classes.table} pb=\"sm\">\n <thead className={classes.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 table={table}\n doubleClickAction={doubleClickAction}\n getExpandChildren={getExpandChildren}\n loading={loading}\n />\n </thead>\n <tbody className={classes.body}>\n {hasRows ? (\n <Layout.Body\n table={table}\n doubleClickAction={doubleClickAction}\n getExpandChildren={getExpandChildren}\n loading={loading}\n />\n ) : (\n <tr>\n <td colSpan={table.getAllColumns().length}>\n <TableLoading visible={loading}>{noDataChildren}</TableLoading>\n </td>\n </tr>\n )}\n </tbody>\n </Box>\n {footer}\n {lastUpdated\n ? cloneElement(lastUpdated, {\n dependencies: [data, ...(lastUpdated.props.dependencies ?? [])],\n })\n : null}\n </>\n )}\n </TableContext.Provider>\n </Box>\n );\n};\n\nTable.Actions = TableActions;\nTable.Filter = TableFilter;\nTable.Footer = TableFooter;\nTable.Header = TableHeader;\nTable.LastUpdated = TableLastUpdated;\nTable.Pagination = TablePagination;\nTable.Predicate = TablePredicate;\nTable.PerPage = TablePerPage;\nTable.Predicate = TablePredicate;\nTable.CollapsibleColumn = TableCollapsibleColumn;\nTable.AccordionColumn = TableAccordionColumn;\nTable.DateRangePicker = TableDateRangePicker;\nTable.Consumer = TableConsumer;\nTable.Loading = TableLoading;\nTable.Layouts = TableLayouts;\n"],"names":["Box","Center","Loader","useForm","useDidUpdate","defaultColumnSizing","getCoreRowModel","useReactTable","debounce","defaultsDeep","Children","cloneElement","useCallback","useEffect","useState","useRowSelection","useStyles","TableContext","TableLayouts","TableActions","TableAccordionColumn","TableCollapsibleColumn","TableSelectableColumn","TableConsumer","TableDateRangePicker","TableFilter","TableFooter","TableHeader","TableLastUpdated","TableLoading","TablePagination","TablePerPage","TablePredicate","Table","data","getRowId","noDataChildren","getExpandChildren","initialState","columns","layouts","Rows","onMount","onChange","children","loading","doubleClickAction","multiRowSelectionEnabled","disableRowSelection","onRowSelectionChange","additionalRootNodes","classNames","styles","unstyled","options","convertedChildren","toArray","header","find","child","type","footer","consumer","lastUpdated","predicates","dateRange","initialStateWithoutForm","form","initialValues","layout","name","classes","table","pagination","pageSize","DEFAULT_SIZE","globalFilter","concat","manualPagination","getPaginationRowModel","undefined","enableMultiRowSelection","getRowCanExpand","row","original","enableRowSelection","defaultColumn","size","minSize","maxSize","state","setState","setOptions","prev","onStateChange","clearSelection","getSelectedRow","getSelectedRows","outsideClickRef","isFiltered","Object","keys","values","some","predicate","triggerChange","cancel","sorting","JSON","stringify","clearFilters","setFieldValue","prevState","sx","flexGrow","Layout","hasRows","getRowModel","rows","length","ref","Provider","value","containerRef","getPageCount","component","className","pb","thead","tr","th","style","padding","colSpan","getAllColumns","Header","tbody","body","Body","td","visible","dependencies","props","Actions","Filter","Footer","LastUpdated","Pagination","Predicate","PerPage","CollapsibleColumn","AccordionColumn","DateRangePicker","Consumer","Loading","Layouts"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {Box, Center, Loader} from '@mantine/core';\nimport {useForm} from '@mantine/form';\nimport {useDidUpdate} from '@mantine/hooks';\nimport {\n ColumnDef,\n Row,\n TableState as TanstackTableState,\n defaultColumnSizing,\n getCoreRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport debounce from 'lodash.debounce';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport {Children, Dispatch, ReactElement, cloneElement, useCallback, useEffect, useState} from 'react';\n\nimport {useRowSelection} from '../../hooks/useRowSelection';\nimport useStyles from './Table.styles';\nimport {TableFormType, TableProps, TableState, TableType} from './Table.types';\nimport {TableContext} from './TableContext';\nimport {TableLayouts} from './layouts/TableLayouts';\nimport {TableActions} from './table-actions/TableActions';\nimport {TableAccordionColumn, TableCollapsibleColumn} from './table-column/TableCollapsibleColumn';\nimport {TableSelectableColumn} from './table-column/TableSelectableColumn';\nimport {TableColumnsSelector} from './table-columns-selector/TableColumnsSelector';\nimport {TableConsumer} from './table-consumer/TableConsumer';\nimport {TableDateRangePicker} from './table-date-range-picker/TableDateRangePicker';\nimport {TableFilter} from './table-filter/TableFilter';\nimport {TableFooter} from './table-footer/TableFooter';\nimport {TableHeader} from './table-header/TableHeader';\nimport {TableLastUpdated} from './table-last-updated/TableLastUpdated';\nimport {TableLoading} from './table-loading/TableLoading';\nimport {TablePagination} from './table-pagination/TablePagination';\nimport {TablePerPage} from './table-per-page/TablePerPage';\nimport {TablePredicate} from './table-predicate/TablePredicate';\n\nexport const Table: TableType = <T,>({\n data,\n getRowId,\n noDataChildren,\n getExpandChildren,\n initialState = {},\n columns,\n layouts = [TableLayouts.Rows],\n onMount,\n onChange,\n children,\n loading = false,\n doubleClickAction,\n multiRowSelectionEnabled,\n disableRowSelection,\n onRowSelectionChange,\n additionalRootNodes,\n classNames,\n styles,\n unstyled,\n options = {},\n}: TableProps<T>) => {\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 consumer = convertedChildren.find((child) => child.type === TableConsumer);\n const lastUpdated = convertedChildren.find((child) => child.type === TableLastUpdated);\n\n const {predicates, dateRange, ...initialStateWithoutForm} = initialState;\n const form = useForm<TableFormType>({\n initialValues: {\n predicates: initialState?.predicates ?? {},\n dateRange: initialState?.dateRange ?? [null, null],\n layout: initialState?.layout ?? layouts[0].name,\n },\n });\n const {classes} = useStyles(null, {name: 'PlasmaTable', classNames, styles, unstyled});\n\n const table = useReactTable({\n initialState: defaultsDeep(initialStateWithoutForm, {\n pagination: {pageSize: TablePerPage.DEFAULT_SIZE},\n globalFilter: '',\n }),\n data,\n columns: multiRowSelectionEnabled ? [TableSelectableColumn as ColumnDef<T>].concat(columns) : columns,\n getCoreRowModel: getCoreRowModel(),\n manualPagination: options?.getPaginationRowModel === undefined,\n enableMultiRowSelection: !!multiRowSelectionEnabled,\n getRowId,\n getRowCanExpand: (row: Row<T>) => !!getExpandChildren?.(row.original) ?? false,\n enableRowSelection: !loading,\n defaultColumn: {\n size: undefined,\n minSize: defaultColumnSizing.minSize,\n maxSize: defaultColumnSizing.maxSize,\n },\n ...options,\n });\n\n const getAllColumns = table.getAllFlatColumns;\n\n const [state, setState] = useState<TableState<T>>(table.initialState as TableState<T>);\n table.setOptions((prev) => ({\n ...prev,\n state: state as TanstackTableState,\n onStateChange: setState as Dispatch<React.SetStateAction<TanstackTableState>>,\n }));\n const {clearSelection, getSelectedRow, getSelectedRows, outsideClickRef} = useRowSelection(table, {\n multiRowSelectionEnabled,\n onRowSelectionChange,\n additionalRootNodes,\n });\n const isFiltered =\n !!state.globalFilter ||\n Object.keys(form.values?.predicates ?? {}).some((predicate) => !!form.values.predicates[predicate]) ||\n !!form.values.dateRange?.[0] ||\n !!form.values.dateRange?.[1];\n\n const triggerChange = debounce(() => onChange?.({...state, ...form.values}), 500);\n\n useEffect(() => {\n onMount?.({...state, ...form.values});\n return () => {\n triggerChange.cancel();\n };\n }, []);\n\n useDidUpdate(() => {\n triggerChange();\n if (!multiRowSelectionEnabled) {\n clearSelection();\n }\n }, [\n state.globalFilter,\n state.pagination,\n state.sorting,\n JSON.stringify(form.values.dateRange),\n JSON.stringify(form.values.predicates),\n ]);\n\n const clearFilters = useCallback(() => {\n form.setFieldValue('predicates', initialState.predicates ?? {});\n setState((prevState) => ({...prevState, globalFilter: ''}));\n }, []);\n\n if (!data) {\n return (\n <Center sx={{flexGrow: 1}}>\n <Loader />\n </Center>\n );\n }\n\n const Layout = layouts.find(({name}) => name === form.values.layout);\n const hasRows = table.getRowModel()?.rows.length > 0;\n\n return (\n <Box ref={outsideClickRef}>\n <TableContext.Provider\n value={{\n onChange: triggerChange,\n state,\n isFiltered,\n setState,\n clearFilters,\n getSelectedRow,\n getSelectedRows,\n clearSelection,\n form,\n containerRef: outsideClickRef,\n multiRowSelectionEnabled,\n getPageCount: table.getPageCount,\n disableRowSelection,\n layouts,\n getAllColumns,\n }}\n >\n {consumer}\n {!hasRows && !isFiltered && !loading ? (\n noDataChildren\n ) : (\n <>\n <Box component=\"table\" className={classes.table} pb=\"sm\">\n <thead className={classes.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 table={table}\n doubleClickAction={doubleClickAction}\n getExpandChildren={getExpandChildren}\n loading={loading}\n />\n </thead>\n <tbody className={classes.body}>\n {hasRows ? (\n <Layout.Body\n table={table}\n doubleClickAction={doubleClickAction}\n getExpandChildren={getExpandChildren}\n loading={loading}\n />\n ) : (\n <tr>\n <td colSpan={table.getAllColumns().length}>\n <TableLoading visible={loading}>{noDataChildren}</TableLoading>\n </td>\n </tr>\n )}\n </tbody>\n </Box>\n {footer}\n {lastUpdated\n ? cloneElement(lastUpdated, {\n dependencies: [data, ...(lastUpdated.props.dependencies ?? [])],\n })\n : null}\n </>\n )}\n </TableContext.Provider>\n </Box>\n );\n};\n\nTable.ColumnsSelector = TableColumnsSelector;\nTable.Actions = TableActions;\nTable.Filter = TableFilter;\nTable.Footer = TableFooter;\nTable.Header = TableHeader;\nTable.LastUpdated = TableLastUpdated;\nTable.Pagination = TablePagination;\nTable.Predicate = TablePredicate;\nTable.PerPage = TablePerPage;\nTable.Predicate = TablePredicate;\nTable.CollapsibleColumn = TableCollapsibleColumn;\nTable.AccordionColumn = TableAccordionColumn;\nTable.DateRangePicker = TableDateRangePicker;\nTable.Consumer = TableConsumer;\nTable.Loading = TableLoading;\nTable.Layouts = TableLayouts;\n"],"names":["Box","Center","Loader","useForm","useDidUpdate","defaultColumnSizing","getCoreRowModel","useReactTable","debounce","defaultsDeep","Children","cloneElement","useCallback","useEffect","useState","useRowSelection","useStyles","TableContext","TableLayouts","TableActions","TableAccordionColumn","TableCollapsibleColumn","TableSelectableColumn","TableColumnsSelector","TableConsumer","TableDateRangePicker","TableFilter","TableFooter","TableHeader","TableLastUpdated","TableLoading","TablePagination","TablePerPage","TablePredicate","Table","data","getRowId","noDataChildren","getExpandChildren","initialState","columns","layouts","Rows","onMount","onChange","children","loading","doubleClickAction","multiRowSelectionEnabled","disableRowSelection","onRowSelectionChange","additionalRootNodes","classNames","styles","unstyled","options","convertedChildren","toArray","header","find","child","type","footer","consumer","lastUpdated","predicates","dateRange","initialStateWithoutForm","form","initialValues","layout","name","classes","table","pagination","pageSize","DEFAULT_SIZE","globalFilter","concat","manualPagination","getPaginationRowModel","undefined","enableMultiRowSelection","getRowCanExpand","row","original","enableRowSelection","defaultColumn","size","minSize","maxSize","getAllColumns","getAllFlatColumns","state","setState","setOptions","prev","onStateChange","clearSelection","getSelectedRow","getSelectedRows","outsideClickRef","isFiltered","Object","keys","values","some","predicate","triggerChange","cancel","sorting","JSON","stringify","clearFilters","setFieldValue","prevState","sx","flexGrow","Layout","hasRows","getRowModel","rows","length","ref","Provider","value","containerRef","getPageCount","component","className","pb","thead","tr","th","style","padding","colSpan","Header","tbody","body","Body","td","visible","dependencies","props","ColumnsSelector","Actions","Filter","Footer","LastUpdated","Pagination","Predicate","PerPage","CollapsibleColumn","AccordionColumn","DateRangePicker","Consumer","Loading","Layouts"],"mappings":"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"}
@@ -11,6 +11,7 @@ export declare const TableComponentsOrder: {
11
11
  Predicate: number;
12
12
  Filter: number;
13
13
  DateRangePicker: number;
14
+ ColumnsSelector: number;
14
15
  LayoutControl: number;
15
16
  };
16
17
  export default useStyles;
@@ -1 +1 @@
1
- {"version":3,"file":"Table.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.styles.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,SAAS;;;;;;CAuBZ,CAAC;AAEJ,eAAO,MAAM,oBAAoB;;;;;;;CAOhC,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"Table.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.styles.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,SAAS;;;;;;CAuBZ,CAAC;AAEJ,eAAO,MAAM,oBAAoB;;;;;;;;CAQhC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -21,11 +21,12 @@ const useStyles = createStyles((theme)=>({
21
21
  body: {}
22
22
  }));
23
23
  export const TableComponentsOrder = {
24
- MultiSelectInfo: 6,
25
- Actions: 5,
26
- Predicate: 4,
27
- Filter: 3,
28
- DateRangePicker: 2,
24
+ MultiSelectInfo: 7,
25
+ Actions: 6,
26
+ Predicate: 5,
27
+ Filter: 4,
28
+ DateRangePicker: 3,
29
+ ColumnsSelector: 2,
29
30
  LayoutControl: 1
30
31
  };
31
32
  export default useStyles;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/Table.styles.ts"],"sourcesContent":["import {createStyles} from '@mantine/core';\n\nconst useStyles = createStyles<string>((theme) => ({\n table: {\n width: '100%',\n },\n\n header: {\n position: 'sticky',\n top: 0,\n backgroundColor: theme.colorScheme === 'dark' ? theme.black : theme.white,\n transition: 'box-shadow 150ms ease',\n zIndex: 1,\n\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n borderBottom: `1px solid ${theme.colors.gray[3]}`,\n },\n },\n\n body: {},\n}));\n\nexport const TableComponentsOrder = {\n MultiSelectInfo: 6,\n Actions: 5,\n Predicate: 4,\n Filter: 3,\n DateRangePicker: 2,\n LayoutControl: 1,\n};\n\nexport default useStyles;\n"],"names":["createStyles","useStyles","theme","table","width","header","position","top","backgroundColor","colorScheme","black","white","transition","zIndex","content","left","right","bottom","borderBottom","colors","gray","body","TableComponentsOrder","MultiSelectInfo","Actions","Predicate","Filter","DateRangePicker","LayoutControl"],"mappings":"AAAA,SAAQA,YAAY,QAAO,gBAAgB;AAE3C,MAAMC,YAAYD,aAAqB,CAACE,QAAW,CAAA;QAC/CC,OAAO;YACHC,OAAO;QACX;QAEAC,QAAQ;YACJC,UAAU;YACVC,KAAK;YACLC,iBAAiBN,MAAMO,WAAW,KAAK,SAASP,MAAMQ,KAAK,GAAGR,MAAMS,KAAK;YACzEC,YAAY;YACZC,QAAQ;YAER,YAAY;gBACRC,SAAS;gBACTR,UAAU;gBACVS,MAAM;gBACNC,OAAO;gBACPC,QAAQ;gBACRC,cAAc,CAAC,UAAU,EAAEhB,MAAMiB,MAAM,CAACC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrD;QACJ;QAEAC,MAAM,CAAC;IACX,CAAA;AAEA,OAAO,MAAMC,uBAAuB;IAChCC,iBAAiB;IACjBC,SAAS;IACTC,WAAW;IACXC,QAAQ;IACRC,iBAAiB;IACjBC,eAAe;AACnB,EAAE;AAEF,eAAe3B,UAAU"}
1
+ {"version":3,"sources":["../../../../src/components/table/Table.styles.ts"],"sourcesContent":["import {createStyles} from '@mantine/core';\n\nconst useStyles = createStyles<string>((theme) => ({\n table: {\n width: '100%',\n },\n\n header: {\n position: 'sticky',\n top: 0,\n backgroundColor: theme.colorScheme === 'dark' ? theme.black : theme.white,\n transition: 'box-shadow 150ms ease',\n zIndex: 1,\n\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n borderBottom: `1px solid ${theme.colors.gray[3]}`,\n },\n },\n\n body: {},\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\nexport default useStyles;\n"],"names":["createStyles","useStyles","theme","table","width","header","position","top","backgroundColor","colorScheme","black","white","transition","zIndex","content","left","right","bottom","borderBottom","colors","gray","body","TableComponentsOrder","MultiSelectInfo","Actions","Predicate","Filter","DateRangePicker","ColumnsSelector","LayoutControl"],"mappings":"AAAA,SAAQA,YAAY,QAAO,gBAAgB;AAE3C,MAAMC,YAAYD,aAAqB,CAACE,QAAW,CAAA;QAC/CC,OAAO;YACHC,OAAO;QACX;QAEAC,QAAQ;YACJC,UAAU;YACVC,KAAK;YACLC,iBAAiBN,MAAMO,WAAW,KAAK,SAASP,MAAMQ,KAAK,GAAGR,MAAMS,KAAK;YACzEC,YAAY;YACZC,QAAQ;YAER,YAAY;gBACRC,SAAS;gBACTR,UAAU;gBACVS,MAAM;gBACNC,OAAO;gBACPC,QAAQ;gBACRC,cAAc,CAAC,UAAU,EAAEhB,MAAMiB,MAAM,CAACC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrD;QACJ;QAEAC,MAAM,CAAC;IACX,CAAA;AAEA,OAAO,MAAMC,uBAAuB;IAChCC,iBAAiB;IACjBC,SAAS;IACTC,WAAW;IACXC,QAAQ;IACRC,iBAAiB;IACjBC,iBAAiB;IACjBC,eAAe;AACnB,EAAE;AAEF,eAAe5B,UAAU"}
@@ -1,13 +1,15 @@
1
1
  import { Icon } from '@coveord/plasma-react-icons';
2
2
  import { DefaultProps, Selectors } from '@mantine/core';
3
3
  import { UseFormReturnType } from '@mantine/form';
4
- import { ColumnDef, CoreOptions, TableOptions, InitialTableState as TanstackInitialTableState, TableState as TanstackTableState } from '@tanstack/table-core';
4
+ import { Column, ColumnDef, CoreOptions, TableOptions, InitialTableState as TanstackInitialTableState, TableState as TanstackTableState } from '@tanstack/table-core';
5
5
  import { Dispatch, ReactElement, ReactNode, RefObject } from 'react';
6
6
  import { DateRangePickerValue } from '../date-range-picker/DateRangePickerInlineCalendar';
7
+ import useStyles from './Table.styles';
7
8
  import { TableLayoutProps } from './layouts/RowLayout.types';
8
9
  import { TableLayouts } from './layouts/TableLayouts';
9
10
  import { TableActions } from './table-actions/TableActions';
10
11
  import { TableAccordionColumn, TableCollapsibleColumn } from './table-column/TableCollapsibleColumn';
12
+ import { TableColumnsSelector } from './table-columns-selector/TableColumnsSelector';
11
13
  import { TableConsumer } from './table-consumer/TableConsumer';
12
14
  import { TableDateRangePicker } from './table-date-range-picker/TableDateRangePicker';
13
15
  import { TableFilter } from './table-filter/TableFilter';
@@ -18,7 +20,6 @@ import { TableLoading } from './table-loading/TableLoading';
18
20
  import { TablePagination } from './table-pagination/TablePagination';
19
21
  import { TablePerPage } from './table-per-page/TablePerPage';
20
22
  import { TablePredicate } from './table-predicate/TablePredicate';
21
- import useStyles from './Table.styles';
22
23
  export type RowSelectionWithData<TData> = Record<string, TData>;
23
24
  export interface RowSelectionState<TData> {
24
25
  rowSelection: RowSelectionWithData<TData>;
@@ -69,6 +70,10 @@ export type TableFormType = {
69
70
  layout: TableLayout['name'];
70
71
  };
71
72
  export type TableContextType<TData> = {
73
+ /**
74
+ * Returns all flat columns in the table.
75
+ */
76
+ getAllColumns: () => Array<Column<TData, unknown>>;
72
77
  /**
73
78
  * Function to call when the table needs an update
74
79
  */
@@ -233,6 +238,7 @@ export interface TableProps<T> extends DefaultProps<TableStylesNames> {
233
238
  }
234
239
  export interface TableType {
235
240
  <T>(props: TableProps<T>): ReactElement;
241
+ ColumnsSelector: typeof TableColumnsSelector;
236
242
  Actions: typeof TableActions;
237
243
  Filter: typeof TableFilter;
238
244
  Footer: typeof TableFooter;
@@ -1 +1 @@
1
- {"version":3,"file":"Table.types.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Table.types.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/Table.types.ts"],"sourcesContent":["import {Icon} from '@coveord/plasma-react-icons';\nimport {DefaultProps, Selectors} from '@mantine/core';\nimport {UseFormReturnType} from '@mantine/form';\nimport {\n ColumnDef,\n CoreOptions,\n TableOptions,\n InitialTableState as TanstackInitialTableState,\n TableState as TanstackTableState,\n} from '@tanstack/table-core';\nimport {Dispatch, ReactElement, ReactNode, RefObject} from 'react';\n\nimport {DateRangePickerValue} from '../date-range-picker/DateRangePickerInlineCalendar';\nimport {TableLayoutProps} from './layouts/RowLayout.types'; // TODO https://coveord.atlassian.net/browse/ADUI-9182\nimport {TableLayouts} from './layouts/TableLayouts';\nimport {TableActions} from './table-actions/TableActions';\nimport {TableAccordionColumn, TableCollapsibleColumn} from './table-column/TableCollapsibleColumn';\nimport {TableConsumer} from './table-consumer/TableConsumer';\nimport {TableDateRangePicker} from './table-date-range-picker/TableDateRangePicker';\nimport {TableFilter} from './table-filter/TableFilter';\nimport {TableFooter} from './table-footer/TableFooter';\nimport {TableHeader} from './table-header/TableHeader';\nimport {TableLastUpdated} from './table-last-updated/TableLastUpdated';\nimport {TableLoading} from './table-loading/TableLoading';\nimport {TablePagination} from './table-pagination/TablePagination';\nimport {TablePerPage} from './table-per-page/TablePerPage';\nimport {TablePredicate} from './table-predicate/TablePredicate';\nimport useStyles from './Table.styles';\n\nexport type RowSelectionWithData<TData> = Record<string, TData>;\nexport interface RowSelectionState<TData> {\n rowSelection: RowSelectionWithData<TData>;\n}\n\nexport interface TableState<TData> extends Omit<TanstackTableState, 'rowSelection'>, RowSelectionState<TData> {}\n\nexport interface InitialTableState<TData>\n extends Omit<TanstackInitialTableState, 'rowSelection'>,\n Partial<RowSelectionState<TData>>,\n Partial<TableFormType> {}\n\nexport type onTableChangeEvent<TData> = (params: TableState<TData> & TableFormType) => void;\n\nexport interface TableLayout {\n /**\n * Name of the layout.\n * Will be displayed in the layout control\n */\n name: string;\n /**\n * Icon illustrating the layout.\n * Will be displayed in the layout control\n */\n icon?: Icon;\n /**\n * Header portion of the table.\n * In the standard row layout that is where column headers would be displayed.\n */\n Header: <T>(props: TableLayoutProps<T>) => ReactElement;\n /**\n * Body portion of the table.\n * In the standard row layout that is where the rows would be displayed.\n */\n Body: <T>(props: TableLayoutProps<T>) => ReactElement;\n}\n\nexport type TableFormType = {\n /**\n * Object containing the table predicates and their selected values\n *\n * @example {type: \"LONG\", origin: \"system\"}\n */\n predicates: Record<string, string>;\n /**\n * Selected date range in the table\n *\n * @example [new Date(2022, 0, 1), new Date(2022, 0, 31)]\n */\n dateRange: DateRangePickerValue;\n /**\n * Selected layout name\n */\n layout: TableLayout['name'];\n};\n\nexport type TableContextType<TData> = {\n /**\n * Function to call when the table needs an update\n */\n onChange: () => void;\n /**\n * Internal state of the table\n *\n * @see https://tanstack.com/table/v8/docs/api/core/table#state\n */\n state: TableState<TData>;\n /**\n * Function to update the table state\n */\n setState: Dispatch<(prevState: TableState<TData>) => TableState<TData>>;\n /**\n * Whether the table currently as any kind of filter applied.\n * Useful to determine if the noDataChildren is an empty state or just the result of a filter\n */\n isFiltered: boolean;\n /**\n * Function that clears the filter and predicates\n */\n clearFilters: () => void;\n /**\n * Function that returns the selected row if any.\n */\n getSelectedRow: () => TData | null;\n /**\n * Function that returns an array of the selected rows. Most useful when multi row selection is enabled.\n */\n getSelectedRows: () => TData[];\n /**\n * Function that clear the selected row\n */\n clearSelection: () => void;\n /**\n * Form used to handle predicates and dateRange\n */\n form: UseFormReturnType<TableFormType>;\n /**\n * Table container ref\n */\n containerRef: RefObject<HTMLDivElement>;\n /**\n * Whether multi row selection is activated\n */\n multiRowSelectionEnabled: boolean;\n /**\n * Whether row selection is enabled or not\n */\n disableRowSelection: boolean;\n /**\n * Function that returns the number of pages\n */\n getPageCount: () => number;\n /**\n * Available layouts. When more than one layout is provided, it will display a layout control to switch between them.\n */\n layouts: TableLayout[];\n};\n\ntype TableStylesNames = Selectors<typeof useStyles>;\n\nexport interface TableProps<T> extends DefaultProps<TableStylesNames> {\n /**\n * Data to display in the table\n */\n data: T[];\n /**\n * Defines how each row is uniquely identified. It is highly recommended that you specify this prop to an ID that makes sense.\n */\n getRowId?: CoreOptions<T>['getRowId'];\n /**\n * Columns to display in the table.\n *\n * @see https://tanstack.com/table/v8/docs/guide/column-defs\n */\n columns: Array<ColumnDef<T>>;\n /**\n * Available layouts\n *\n * @default [Table.Layouts.Rows]\n */\n layouts?: TableLayout[];\n /**\n * Function called when the table mounts\n *\n * @param state the state of the table\n */\n onMount?: onTableChangeEvent<T>;\n /**\n * Function called when the table should update\n *\n * @param state the state of the table\n */\n onChange?: onTableChangeEvent<T>;\n /**\n * Function that generates the expandable content of a row\n * Return null for rows that don't need to be expandable\n *\n * @param datum the row for which the children should be generated.\n */\n getExpandChildren?: (datum: T) => ReactNode;\n /**\n * React children to show when the table has no rows to show. You can leverage useTable to get the state of the table\n */\n noDataChildren?: ReactNode;\n /**\n * Whether the table is loading or not\n *\n * @default false\n */\n loading?: boolean;\n /**\n * Childrens to display in the table. They need to be wrap in either `Table.Header` or `Table.Footer`\n *\n * @example\n * <Table ...>\n * <Table.Header>\n * <div>Hello</div>\n * </Table.Header>\n * </Table>\n */\n children?: ReactNode;\n /**\n * Initial state of the table\n */\n initialState?: InitialTableState<T>;\n /**\n * Action passed when user double clicks on a row\n */\n doubleClickAction?: (datum: T) => void;\n /**\n * Function called whenever the row selection changes\n *\n * @param selectedRows The selected rows\n */\n onRowSelectionChange?: (selectedRows: T[]) => void;\n /**\n * Whether the user can select multiple rows in order to perform actions in bulk\n *\n * @default false\n */\n multiRowSelectionEnabled?: boolean;\n /**\n * Whether row selection is enabled or not\n *\n * @default false\n */\n disableRowSelection?: boolean;\n /**\n * Nodes that are considered inside the table.\n *\n * Rows normally get unselected when clicking outside the table, but sometimes it has difficulties guessing what is inside or outside, for example when using modals.\n * You can use this prop to force the table to consider some nodes to be inside the table.\n *\n * @see https://mantine.dev/hooks/use-click-outside/#multiple-nodes\n */\n additionalRootNodes?: HTMLElement[];\n /**\n * Additional options that can be passed to the table\n */\n options?: Omit<\n Partial<TableOptions<T>>,\n | 'initialState'\n | 'data'\n | 'columns'\n | 'manualPagination'\n | 'enableMultiRowSelection'\n | 'getRowId'\n | 'getRowCanExpand'\n | 'enableRowSelection'\n | 'onRowSelectionChange'\n >;\n}\n\nexport interface TableType {\n <T>(props: TableProps<T>): ReactElement;\n Actions: typeof TableActions;\n Filter: typeof TableFilter;\n Footer: typeof TableFooter;\n Header: typeof TableHeader;\n LastUpdated: typeof TableLastUpdated;\n Pagination: typeof TablePagination;\n PerPage: typeof TablePerPage;\n Predicate: typeof TablePredicate;\n DateRangePicker: typeof TableDateRangePicker;\n CollapsibleColumn: typeof TableCollapsibleColumn;\n AccordionColumn: typeof TableAccordionColumn;\n Consumer: typeof TableConsumer;\n Loading: typeof TableLoading;\n Layouts: typeof TableLayouts;\n}\n"],"names":[],"mappings":"AAAA,WAsRC"}
1
+ {"version":3,"sources":["../../../../src/components/table/Table.types.ts"],"sourcesContent":["import {Icon} from '@coveord/plasma-react-icons';\nimport {DefaultProps, Selectors} from '@mantine/core';\nimport {UseFormReturnType} from '@mantine/form';\nimport {\n Column,\n ColumnDef,\n CoreOptions,\n TableOptions,\n InitialTableState as TanstackInitialTableState,\n TableState as TanstackTableState,\n} from '@tanstack/table-core';\nimport {Dispatch, ReactElement, ReactNode, RefObject} from 'react';\n\nimport {DateRangePickerValue} from '../date-range-picker/DateRangePickerInlineCalendar';\nimport useStyles from './Table.styles';\nimport {TableLayoutProps} from './layouts/RowLayout.types'; // TODO https://coveord.atlassian.net/browse/ADUI-9182\nimport {TableLayouts} from './layouts/TableLayouts';\nimport {TableActions} from './table-actions/TableActions';\nimport {TableAccordionColumn, TableCollapsibleColumn} from './table-column/TableCollapsibleColumn';\nimport {TableColumnsSelector} from './table-columns-selector/TableColumnsSelector';\nimport {TableConsumer} from './table-consumer/TableConsumer';\nimport {TableDateRangePicker} from './table-date-range-picker/TableDateRangePicker';\nimport {TableFilter} from './table-filter/TableFilter';\nimport {TableFooter} from './table-footer/TableFooter';\nimport {TableHeader} from './table-header/TableHeader';\nimport {TableLastUpdated} from './table-last-updated/TableLastUpdated';\nimport {TableLoading} from './table-loading/TableLoading';\nimport {TablePagination} from './table-pagination/TablePagination';\nimport {TablePerPage} from './table-per-page/TablePerPage';\nimport {TablePredicate} from './table-predicate/TablePredicate';\n\nexport type RowSelectionWithData<TData> = Record<string, TData>;\nexport interface RowSelectionState<TData> {\n rowSelection: RowSelectionWithData<TData>;\n}\n\nexport interface TableState<TData> extends Omit<TanstackTableState, 'rowSelection'>, RowSelectionState<TData> {}\n\nexport interface InitialTableState<TData>\n extends Omit<TanstackInitialTableState, 'rowSelection'>,\n Partial<RowSelectionState<TData>>,\n Partial<TableFormType> {}\n\nexport type onTableChangeEvent<TData> = (params: TableState<TData> & TableFormType) => void;\n\nexport interface TableLayout {\n /**\n * Name of the layout.\n * Will be displayed in the layout control\n */\n name: string;\n /**\n * Icon illustrating the layout.\n * Will be displayed in the layout control\n */\n icon?: Icon;\n /**\n * Header portion of the table.\n * In the standard row layout that is where column headers would be displayed.\n */\n Header: <T>(props: TableLayoutProps<T>) => ReactElement;\n /**\n * Body portion of the table.\n * In the standard row layout that is where the rows would be displayed.\n */\n Body: <T>(props: TableLayoutProps<T>) => ReactElement;\n}\n\nexport type TableFormType = {\n /**\n * Object containing the table predicates and their selected values\n *\n * @example {type: \"LONG\", origin: \"system\"}\n */\n predicates: Record<string, string>;\n /**\n * Selected date range in the table\n *\n * @example [new Date(2022, 0, 1), new Date(2022, 0, 31)]\n */\n dateRange: DateRangePickerValue;\n /**\n * Selected layout name\n */\n layout: TableLayout['name'];\n};\n\nexport type TableContextType<TData> = {\n /**\n * Returns all flat columns in the table.\n */\n getAllColumns: () => Array<Column<TData, unknown>>;\n /**\n * Function to call when the table needs an update\n */\n onChange: () => void;\n /**\n * Internal state of the table\n *\n * @see https://tanstack.com/table/v8/docs/api/core/table#state\n */\n state: TableState<TData>;\n /**\n * Function to update the table state\n */\n setState: Dispatch<(prevState: TableState<TData>) => TableState<TData>>;\n /**\n * Whether the table currently as any kind of filter applied.\n * Useful to determine if the noDataChildren is an empty state or just the result of a filter\n */\n isFiltered: boolean;\n /**\n * Function that clears the filter and predicates\n */\n clearFilters: () => void;\n /**\n * Function that returns the selected row if any.\n */\n getSelectedRow: () => TData | null;\n /**\n * Function that returns an array of the selected rows. Most useful when multi row selection is enabled.\n */\n getSelectedRows: () => TData[];\n /**\n * Function that clear the selected row\n */\n clearSelection: () => void;\n /**\n * Form used to handle predicates and dateRange\n */\n form: UseFormReturnType<TableFormType>;\n /**\n * Table container ref\n */\n containerRef: RefObject<HTMLDivElement>;\n /**\n * Whether multi row selection is activated\n */\n multiRowSelectionEnabled: boolean;\n /**\n * Whether row selection is enabled or not\n */\n disableRowSelection: boolean;\n /**\n * Function that returns the number of pages\n */\n getPageCount: () => number;\n /**\n * Available layouts. When more than one layout is provided, it will display a layout control to switch between them.\n */\n layouts: TableLayout[];\n};\n\ntype TableStylesNames = Selectors<typeof useStyles>;\n\nexport interface TableProps<T> extends DefaultProps<TableStylesNames> {\n /**\n * Data to display in the table\n */\n data: T[];\n /**\n * Defines how each row is uniquely identified. It is highly recommended that you specify this prop to an ID that makes sense.\n */\n getRowId?: CoreOptions<T>['getRowId'];\n /**\n * Columns to display in the table.\n *\n * @see https://tanstack.com/table/v8/docs/guide/column-defs\n */\n columns: Array<ColumnDef<T>>;\n /**\n * Available layouts\n *\n * @default [Table.Layouts.Rows]\n */\n layouts?: TableLayout[];\n /**\n * Function called when the table mounts\n *\n * @param state the state of the table\n */\n onMount?: onTableChangeEvent<T>;\n /**\n * Function called when the table should update\n *\n * @param state the state of the table\n */\n onChange?: onTableChangeEvent<T>;\n /**\n * Function that generates the expandable content of a row\n * Return null for rows that don't need to be expandable\n *\n * @param datum the row for which the children should be generated.\n */\n getExpandChildren?: (datum: T) => ReactNode;\n /**\n * React children to show when the table has no rows to show. You can leverage useTable to get the state of the table\n */\n noDataChildren?: ReactNode;\n /**\n * Whether the table is loading or not\n *\n * @default false\n */\n loading?: boolean;\n /**\n * Childrens to display in the table. They need to be wrap in either `Table.Header` or `Table.Footer`\n *\n * @example\n * <Table ...>\n * <Table.Header>\n * <div>Hello</div>\n * </Table.Header>\n * </Table>\n */\n children?: ReactNode;\n /**\n * Initial state of the table\n */\n initialState?: InitialTableState<T>;\n /**\n * Action passed when user double clicks on a row\n */\n doubleClickAction?: (datum: T) => void;\n /**\n * Function called whenever the row selection changes\n *\n * @param selectedRows The selected rows\n */\n onRowSelectionChange?: (selectedRows: T[]) => void;\n /**\n * Whether the user can select multiple rows in order to perform actions in bulk\n *\n * @default false\n */\n multiRowSelectionEnabled?: boolean;\n /**\n * Whether row selection is enabled or not\n *\n * @default false\n */\n disableRowSelection?: boolean;\n /**\n * Nodes that are considered inside the table.\n *\n * Rows normally get unselected when clicking outside the table, but sometimes it has difficulties guessing what is inside or outside, for example when using modals.\n * You can use this prop to force the table to consider some nodes to be inside the table.\n *\n * @see https://mantine.dev/hooks/use-click-outside/#multiple-nodes\n */\n additionalRootNodes?: HTMLElement[];\n /**\n * Additional options that can be passed to the table\n */\n options?: Omit<\n Partial<TableOptions<T>>,\n | 'initialState'\n | 'data'\n | 'columns'\n | 'manualPagination'\n | 'enableMultiRowSelection'\n | 'getRowId'\n | 'getRowCanExpand'\n | 'enableRowSelection'\n | 'onRowSelectionChange'\n >;\n}\n\nexport interface TableType {\n <T>(props: TableProps<T>): ReactElement;\n ColumnsSelector: typeof TableColumnsSelector;\n Actions: typeof TableActions;\n Filter: typeof TableFilter;\n Footer: typeof TableFooter;\n Header: typeof TableHeader;\n LastUpdated: typeof TableLastUpdated;\n Pagination: typeof TablePagination;\n PerPage: typeof TablePerPage;\n Predicate: typeof TablePredicate;\n DateRangePicker: typeof TableDateRangePicker;\n CollapsibleColumn: typeof TableCollapsibleColumn;\n AccordionColumn: typeof TableAccordionColumn;\n Consumer: typeof TableConsumer;\n Loading: typeof TableLoading;\n Layouts: typeof TableLayouts;\n}\n"],"names":[],"mappings":"AAAA,WA6RC"}
@@ -46,7 +46,7 @@ const RowLayoutBody = ({ table, doubleClickAction, getExpandChildren, loading, k
46
46
  const cell = el.children[el.children.length - 1];
47
47
  cell.querySelector('button').click();
48
48
  };
49
- const rows = table.getRowModel().rows.map((row)=>{
49
+ const rows = table.getRowModel()?.rows.map((row)=>{
50
50
  const rowChildren = getExpandChildren?.(row.original) ?? null;
51
51
  const isSelected = !!row.getIsSelected();
52
52
  const shouldKeepSelection = keepSelection && isSelected;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/table/layouts/RowLayout.tsx"],"sourcesContent":["import {ListSize16Px} from '@coveord/plasma-react-icons';\nimport {Box, Collapse} from '@mantine/core';\nimport {flexRender} from '@tanstack/react-table';\nimport {defaultColumnSizing} from '@tanstack/table-core';\nimport {Fragment, type MouseEvent} from 'react';\nimport {TableLayout} from '../Table.types';\nimport {useTable} from '../TableContext';\nimport {TableCollapsibleColumn} from '../table-column/TableCollapsibleColumn';\nimport {TableSelectableColumn} from '../table-column/TableSelectableColumn';\nimport {Th} from '../table-header/Th';\nimport {TableLoading} from '../table-loading/TableLoading';\nimport useStyles from './RowLayout.styles';\nimport {TableLayoutProps} from './RowLayout.types'; // TODO https://coveord.atlassian.net/browse/ADUI-9182\n\nconst RowLayoutHeader = <T,>({table, classNames, styles, unstyled}: TableLayoutProps<T>) => {\n const {multiRowSelectionEnabled, disableRowSelection} = useTable();\n const {classes} = useStyles(\n {disableRowSelection, multiRowSelectionEnabled},\n {name: 'RowLayout', classNames, styles, unstyled},\n );\n const headers = table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id} className={classes.headerColumns}>\n {headerGroup.headers.map((columnHeader) => (\n <Th key={columnHeader.id} header={columnHeader} />\n ))}\n </tr>\n ));\n return <>{headers}</>;\n};\n\nconst RowLayoutBody = <T,>({\n table,\n doubleClickAction,\n getExpandChildren,\n loading,\n keepSelection,\n classNames,\n styles,\n unstyled,\n ...others\n}: TableLayoutProps<T>) => {\n const {multiRowSelectionEnabled, disableRowSelection} = useTable();\n const {classes, cx} = useStyles(\n {disableRowSelection, multiRowSelectionEnabled},\n {name: 'RowLayout', classNames, styles, unstyled},\n );\n\n const toggleCollapsible = (el: HTMLTableRowElement) => {\n const cell = el.children[el.children.length - 1] as HTMLTableCellElement;\n cell.querySelector('button').click();\n };\n\n const rows = table.getRowModel().rows.map((row) => {\n const rowChildren = getExpandChildren?.(row.original) ?? null;\n const isSelected = !!row.getIsSelected();\n const shouldKeepSelection = keepSelection && isSelected;\n const onClick = (event: MouseEvent<HTMLTableRowElement>) => {\n if (rowChildren) {\n toggleCollapsible(event.currentTarget);\n }\n if (!disableRowSelection && !multiRowSelectionEnabled && !shouldKeepSelection) {\n row.toggleSelected();\n }\n };\n\n return (\n <Fragment key={row.id}>\n <tr\n onClick={onClick}\n onDoubleClick={() => doubleClickAction?.(row.original)}\n className={cx(classes.row, {\n [classes.rowSelected]: isSelected,\n [classes.rowUnselectable]: disableRowSelection,\n })}\n aria-selected={isSelected}\n data-testid={row.id}\n >\n {row.getVisibleCells().map((cell) => {\n const columnSizing = {\n ...defaultColumnSizing,\n size: cell.column.columnDef.size,\n minSize: cell.column.columnDef.minSize,\n maxSize: cell.column.columnDef.maxSize,\n };\n\n const onCollapsibleCellClick = (event: MouseEvent<HTMLTableCellElement>) => {\n if (cell.column.id === TableSelectableColumn.id && !disableRowSelection) {\n event.stopPropagation();\n row.getToggleSelectedHandler();\n }\n };\n return (\n <td\n key={cell.id}\n data-testid={cell.id}\n style={{\n width: columnSizing.size ?? 'auto',\n minWidth: columnSizing.minSize,\n maxWidth: columnSizing.maxSize,\n }}\n className={cx(classes.cell, {\n [classes.rowCollapsibleButtonCell]: cell.column.id === TableCollapsibleColumn.id,\n })}\n onClick={onCollapsibleCellClick}\n >\n <TableLoading visible={loading}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableLoading>\n </td>\n );\n })}\n </tr>\n {rowChildren ? (\n <tr>\n <td\n colSpan={table.getAllColumns().length}\n style={{\n padding: 0,\n }}\n >\n <Collapse in={row.getIsExpanded()}>\n <Box className={classes.collapsible} px=\"sm\" py=\"xs\">\n {rowChildren}\n </Box>\n </Collapse>\n </td>\n </tr>\n ) : null}\n </Fragment>\n );\n });\n\n return <>{rows}</>;\n};\n\nexport const RowLayout: TableLayout = {\n name: 'Rows',\n icon: ListSize16Px,\n Header: RowLayoutHeader,\n Body: RowLayoutBody,\n};\n"],"names":["ListSize16Px","Box","Collapse","flexRender","defaultColumnSizing","Fragment","useTable","TableCollapsibleColumn","TableSelectableColumn","Th","TableLoading","useStyles","RowLayoutHeader","table","classNames","styles","unstyled","multiRowSelectionEnabled","disableRowSelection","classes","name","headers","getHeaderGroups","map","headerGroup","tr","className","headerColumns","columnHeader","header","id","RowLayoutBody","doubleClickAction","getExpandChildren","loading","keepSelection","others","cx","toggleCollapsible","el","cell","children","length","querySelector","click","rows","getRowModel","row","rowChildren","original","isSelected","getIsSelected","shouldKeepSelection","onClick","event","currentTarget","toggleSelected","onDoubleClick","rowSelected","rowUnselectable","aria-selected","data-testid","getVisibleCells","columnSizing","size","column","columnDef","minSize","maxSize","onCollapsibleCellClick","stopPropagation","getToggleSelectedHandler","td","style","width","minWidth","maxWidth","rowCollapsibleButtonCell","visible","getContext","colSpan","getAllColumns","padding","in","getIsExpanded","collapsible","px","py","RowLayout","icon","Header","Body"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/components/table/layouts/RowLayout.tsx"],"sourcesContent":["import {ListSize16Px} from '@coveord/plasma-react-icons';\nimport {Box, Collapse} from '@mantine/core';\nimport {flexRender} from '@tanstack/react-table';\nimport {defaultColumnSizing} from '@tanstack/table-core';\nimport {Fragment, type MouseEvent} from 'react';\nimport {TableLayout} from '../Table.types';\nimport {useTable} from '../TableContext';\nimport {TableCollapsibleColumn} from '../table-column/TableCollapsibleColumn';\nimport {TableSelectableColumn} from '../table-column/TableSelectableColumn';\nimport {Th} from '../table-header/Th';\nimport {TableLoading} from '../table-loading/TableLoading';\nimport useStyles from './RowLayout.styles';\nimport {TableLayoutProps} from './RowLayout.types'; // TODO https://coveord.atlassian.net/browse/ADUI-9182\n\nconst RowLayoutHeader = <T,>({table, classNames, styles, unstyled}: TableLayoutProps<T>) => {\n const {multiRowSelectionEnabled, disableRowSelection} = useTable();\n const {classes} = useStyles(\n {disableRowSelection, multiRowSelectionEnabled},\n {name: 'RowLayout', classNames, styles, unstyled},\n );\n const headers = table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id} className={classes.headerColumns}>\n {headerGroup.headers.map((columnHeader) => (\n <Th key={columnHeader.id} header={columnHeader} />\n ))}\n </tr>\n ));\n return <>{headers}</>;\n};\n\nconst RowLayoutBody = <T,>({\n table,\n doubleClickAction,\n getExpandChildren,\n loading,\n keepSelection,\n classNames,\n styles,\n unstyled,\n ...others\n}: TableLayoutProps<T>) => {\n const {multiRowSelectionEnabled, disableRowSelection} = useTable();\n const {classes, cx} = useStyles(\n {disableRowSelection, multiRowSelectionEnabled},\n {name: 'RowLayout', classNames, styles, unstyled},\n );\n\n const toggleCollapsible = (el: HTMLTableRowElement) => {\n const cell = el.children[el.children.length - 1] as HTMLTableCellElement;\n cell.querySelector('button').click();\n };\n\n const rows = table.getRowModel()?.rows.map((row) => {\n const rowChildren = getExpandChildren?.(row.original) ?? null;\n const isSelected = !!row.getIsSelected();\n const shouldKeepSelection = keepSelection && isSelected;\n const onClick = (event: MouseEvent<HTMLTableRowElement>) => {\n if (rowChildren) {\n toggleCollapsible(event.currentTarget);\n }\n if (!disableRowSelection && !multiRowSelectionEnabled && !shouldKeepSelection) {\n row.toggleSelected();\n }\n };\n\n return (\n <Fragment key={row.id}>\n <tr\n onClick={onClick}\n onDoubleClick={() => doubleClickAction?.(row.original)}\n className={cx(classes.row, {\n [classes.rowSelected]: isSelected,\n [classes.rowUnselectable]: disableRowSelection,\n })}\n aria-selected={isSelected}\n data-testid={row.id}\n >\n {row.getVisibleCells().map((cell) => {\n const columnSizing = {\n ...defaultColumnSizing,\n size: cell.column.columnDef.size,\n minSize: cell.column.columnDef.minSize,\n maxSize: cell.column.columnDef.maxSize,\n };\n\n const onCollapsibleCellClick = (event: MouseEvent<HTMLTableCellElement>) => {\n if (cell.column.id === TableSelectableColumn.id && !disableRowSelection) {\n event.stopPropagation();\n row.getToggleSelectedHandler();\n }\n };\n return (\n <td\n key={cell.id}\n data-testid={cell.id}\n style={{\n width: columnSizing.size ?? 'auto',\n minWidth: columnSizing.minSize,\n maxWidth: columnSizing.maxSize,\n }}\n className={cx(classes.cell, {\n [classes.rowCollapsibleButtonCell]: cell.column.id === TableCollapsibleColumn.id,\n })}\n onClick={onCollapsibleCellClick}\n >\n <TableLoading visible={loading}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableLoading>\n </td>\n );\n })}\n </tr>\n {rowChildren ? (\n <tr>\n <td\n colSpan={table.getAllColumns().length}\n style={{\n padding: 0,\n }}\n >\n <Collapse in={row.getIsExpanded()}>\n <Box className={classes.collapsible} px=\"sm\" py=\"xs\">\n {rowChildren}\n </Box>\n </Collapse>\n </td>\n </tr>\n ) : null}\n </Fragment>\n );\n });\n\n return <>{rows}</>;\n};\n\nexport const RowLayout: TableLayout = {\n name: 'Rows',\n icon: ListSize16Px,\n Header: RowLayoutHeader,\n Body: RowLayoutBody,\n};\n"],"names":["ListSize16Px","Box","Collapse","flexRender","defaultColumnSizing","Fragment","useTable","TableCollapsibleColumn","TableSelectableColumn","Th","TableLoading","useStyles","RowLayoutHeader","table","classNames","styles","unstyled","multiRowSelectionEnabled","disableRowSelection","classes","name","headers","getHeaderGroups","map","headerGroup","tr","className","headerColumns","columnHeader","header","id","RowLayoutBody","doubleClickAction","getExpandChildren","loading","keepSelection","others","cx","toggleCollapsible","el","cell","children","length","querySelector","click","rows","getRowModel","row","rowChildren","original","isSelected","getIsSelected","shouldKeepSelection","onClick","event","currentTarget","toggleSelected","onDoubleClick","rowSelected","rowUnselectable","aria-selected","data-testid","getVisibleCells","columnSizing","size","column","columnDef","minSize","maxSize","onCollapsibleCellClick","stopPropagation","getToggleSelectedHandler","td","style","width","minWidth","maxWidth","rowCollapsibleButtonCell","visible","getContext","colSpan","getAllColumns","padding","in","getIsExpanded","collapsible","px","py","RowLayout","icon","Header","Body"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { FunctionComponent } from 'react';
2
+ import { TableColumnsSelectorProps } from './TableColumnsSelector.types';
3
+ export declare const TableColumnsSelector: FunctionComponent<TableColumnsSelectorProps>;
4
+ //# sourceMappingURL=TableColumnsSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableColumnsSelector.d.ts","sourceRoot":"","sources":["../../../../../src/components/table/table-columns-selector/TableColumnsSelector.tsx"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,OAAO,CAAC;AAKxC,OAAO,EAAC,yBAAyB,EAAC,MAAM,8BAA8B,CAAC;AAIvE,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,CAAC,yBAAyB,CAmE7E,CAAC"}
@@ -0,0 +1,84 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Button, Checkbox, Divider, Grid, Popover, ScrollArea, Stack, Tooltip } from '@mantine/core';
3
+ import { TableComponentsOrder } from '../Table.styles';
4
+ import { useTable } from '../TableContext';
5
+ import useStyles from './TableColumnsSelector.styles';
6
+ const COLUMNS_IDS_TO_EXCLUDE = [
7
+ 'collapsible',
8
+ 'select'
9
+ ];
10
+ export const TableColumnsSelector = ({ classNames, styles, unstyled, label = 'Edit columns', buttonVariant = 'outline', showVisibleCountLabel = false, nonHideableColumns = [], maxSelectableColumns, footer, limitReachedTooltip = 'You have reached the maximum display limit.', columnNames })=>{
11
+ const { classes } = useStyles(null, {
12
+ name: 'TableColumnsSelector',
13
+ classNames,
14
+ styles,
15
+ unstyled
16
+ });
17
+ const { getAllColumns } = useTable();
18
+ const columnsToExclude = [
19
+ ...nonHideableColumns,
20
+ ...COLUMNS_IDS_TO_EXCLUDE
21
+ ];
22
+ const filteredColumns = getAllColumns().filter((column)=>!columnsToExclude.includes(column.id));
23
+ const selectedColumnsCount = filteredColumns.filter((column)=>column.getIsVisible()).length;
24
+ if (filteredColumns.length <= 0) {
25
+ return null;
26
+ }
27
+ return /*#__PURE__*/ _jsx(Grid.Col, {
28
+ span: "content",
29
+ order: TableComponentsOrder.ColumnsSelector,
30
+ py: "sm",
31
+ className: classes.root,
32
+ children: /*#__PURE__*/ _jsxs(Popover, {
33
+ withinPortal: true,
34
+ position: "bottom",
35
+ shadow: "md",
36
+ children: [
37
+ /*#__PURE__*/ _jsx(Popover.Target, {
38
+ children: /*#__PURE__*/ _jsx(Button, {
39
+ variant: buttonVariant,
40
+ children: `${label}${showVisibleCountLabel ? ` (${selectedColumnsCount})` : ''}`
41
+ })
42
+ }),
43
+ /*#__PURE__*/ _jsxs(Popover.Dropdown, {
44
+ miw: 240,
45
+ children: [
46
+ /*#__PURE__*/ _jsx(ScrollArea.Autosize, {
47
+ mah: 154,
48
+ children: /*#__PURE__*/ _jsx(Stack, {
49
+ children: filteredColumns.map((column)=>{
50
+ const isDisabled = selectedColumnsCount >= maxSelectableColumns && !column.getIsVisible();
51
+ return /*#__PURE__*/ _jsx(Tooltip, {
52
+ label: limitReachedTooltip,
53
+ disabled: !isDisabled,
54
+ position: "left",
55
+ children: /*#__PURE__*/ _jsx("div", {
56
+ children: /*#__PURE__*/ _jsx(Checkbox, {
57
+ label: columnNames?.[column.id] || column.id,
58
+ name: column.id,
59
+ checked: column.getIsVisible(),
60
+ disabled: isDisabled,
61
+ onChange: column.getToggleVisibilityHandler()
62
+ }, column.id)
63
+ })
64
+ });
65
+ })
66
+ })
67
+ }),
68
+ maxSelectableColumns && /*#__PURE__*/ _jsxs(_Fragment, {
69
+ children: [
70
+ /*#__PURE__*/ _jsx(Divider, {
71
+ mb: "xs",
72
+ mt: "sm"
73
+ }),
74
+ footer
75
+ ]
76
+ })
77
+ ]
78
+ })
79
+ ]
80
+ })
81
+ });
82
+ };
83
+
84
+ //# sourceMappingURL=TableColumnsSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/table/table-columns-selector/TableColumnsSelector.tsx"],"sourcesContent":["import {Button, Checkbox, Divider, Grid, Popover, ScrollArea, Stack, Tooltip} from '@mantine/core';\nimport {FunctionComponent} from 'react';\n\nimport {TableComponentsOrder} from '../Table.styles';\nimport {useTable} from '../TableContext';\nimport useStyles from './TableColumnsSelector.styles';\nimport {TableColumnsSelectorProps} from './TableColumnsSelector.types';\n\nconst COLUMNS_IDS_TO_EXCLUDE = ['collapsible', 'select'];\n\nexport const TableColumnsSelector: FunctionComponent<TableColumnsSelectorProps> = ({\n classNames,\n styles,\n unstyled,\n label = 'Edit columns',\n buttonVariant = 'outline',\n showVisibleCountLabel = false,\n nonHideableColumns = [],\n maxSelectableColumns,\n footer,\n limitReachedTooltip = 'You have reached the maximum display limit.',\n columnNames,\n}) => {\n const {classes} = useStyles(null, {name: 'TableColumnsSelector', classNames, styles, unstyled});\n const {getAllColumns} = useTable();\n\n const columnsToExclude = [...nonHideableColumns, ...COLUMNS_IDS_TO_EXCLUDE];\n\n const filteredColumns = getAllColumns().filter((column) => !columnsToExclude.includes(column.id));\n\n const selectedColumnsCount = filteredColumns.filter((column) => column.getIsVisible()).length;\n\n if (filteredColumns.length <= 0) {\n return null;\n }\n\n return (\n <Grid.Col span=\"content\" order={TableComponentsOrder.ColumnsSelector} py=\"sm\" className={classes.root}>\n <Popover withinPortal position=\"bottom\" shadow=\"md\">\n <Popover.Target>\n <Button variant={buttonVariant}>{`${label}${\n showVisibleCountLabel ? ` (${selectedColumnsCount})` : ''\n }`}</Button>\n </Popover.Target>\n <Popover.Dropdown miw={240}>\n <ScrollArea.Autosize mah={154}>\n <Stack>\n {filteredColumns.map((column) => {\n const isDisabled =\n selectedColumnsCount >= maxSelectableColumns && !column.getIsVisible();\n return (\n <Tooltip label={limitReachedTooltip} disabled={!isDisabled} position=\"left\">\n <div>\n <Checkbox\n key={column.id}\n label={columnNames?.[column.id] || column.id}\n name={column.id}\n checked={column.getIsVisible()}\n disabled={isDisabled}\n onChange={column.getToggleVisibilityHandler()}\n />\n </div>\n </Tooltip>\n );\n })}\n </Stack>\n </ScrollArea.Autosize>\n {maxSelectableColumns && (\n <>\n <Divider mb=\"xs\" mt=\"sm\" />\n {footer}\n </>\n )}\n </Popover.Dropdown>\n </Popover>\n </Grid.Col>\n );\n};\n"],"names":["Button","Checkbox","Divider","Grid","Popover","ScrollArea","Stack","Tooltip","TableComponentsOrder","useTable","useStyles","COLUMNS_IDS_TO_EXCLUDE","TableColumnsSelector","classNames","styles","unstyled","label","buttonVariant","showVisibleCountLabel","nonHideableColumns","maxSelectableColumns","footer","limitReachedTooltip","columnNames","classes","name","getAllColumns","columnsToExclude","filteredColumns","filter","column","includes","id","selectedColumnsCount","getIsVisible","length","Col","span","order","ColumnsSelector","py","className","root","withinPortal","position","shadow","Target","variant","Dropdown","miw","Autosize","mah","map","isDisabled","disabled","div","checked","onChange","getToggleVisibilityHandler","mb","mt"],"mappings":";AAAA,SAAQA,MAAM,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,IAAI,EAAEC,OAAO,EAAEC,UAAU,EAAEC,KAAK,EAAEC,OAAO,QAAO,gBAAgB;AAGnG,SAAQC,oBAAoB,QAAO,kBAAkB;AACrD,SAAQC,QAAQ,QAAO,kBAAkB;AACzC,OAAOC,eAAe,gCAAgC;AAGtD,MAAMC,yBAAyB;IAAC;IAAe;CAAS;AAExD,OAAO,MAAMC,uBAAqE,CAAC,EAC/EC,UAAU,EACVC,MAAM,EACNC,QAAQ,EACRC,QAAQ,cAAc,EACtBC,gBAAgB,SAAS,EACzBC,wBAAwB,KAAK,EAC7BC,qBAAqB,EAAE,EACvBC,oBAAoB,EACpBC,MAAM,EACNC,sBAAsB,6CAA6C,EACnEC,WAAW,EACd;IACG,MAAM,EAACC,OAAO,EAAC,GAAGd,UAAU,MAAM;QAACe,MAAM;QAAwBZ;QAAYC;QAAQC;IAAQ;IAC7F,MAAM,EAACW,aAAa,EAAC,GAAGjB;IAExB,MAAMkB,mBAAmB;WAAIR;WAAuBR;KAAuB;IAE3E,MAAMiB,kBAAkBF,gBAAgBG,MAAM,CAAC,CAACC,SAAW,CAACH,iBAAiBI,QAAQ,CAACD,OAAOE,EAAE;IAE/F,MAAMC,uBAAuBL,gBAAgBC,MAAM,CAAC,CAACC,SAAWA,OAAOI,YAAY,IAAIC,MAAM;IAE7F,IAAIP,gBAAgBO,MAAM,IAAI,GAAG;QAC7B,OAAO;IACX;IAEA,qBACI,KAAChC,KAAKiC,GAAG;QAACC,MAAK;QAAUC,OAAO9B,qBAAqB+B,eAAe;QAAEC,IAAG;QAAKC,WAAWjB,QAAQkB,IAAI;kBACjG,cAAA,MAACtC;YAAQuC,YAAY;YAACC,UAAS;YAASC,QAAO;;8BAC3C,KAACzC,QAAQ0C,MAAM;8BACX,cAAA,KAAC9C;wBAAO+C,SAAS9B;kCAAgB,CAAC,EAAED,MAAM,EACtCE,wBAAwB,CAAC,EAAE,EAAEe,qBAAqB,CAAC,CAAC,GAAG,GAC1D,CAAC;;;8BAEN,MAAC7B,QAAQ4C,QAAQ;oBAACC,KAAK;;sCACnB,KAAC5C,WAAW6C,QAAQ;4BAACC,KAAK;sCACtB,cAAA,KAAC7C;0CACIsB,gBAAgBwB,GAAG,CAAC,CAACtB;oCAClB,MAAMuB,aACFpB,wBAAwBb,wBAAwB,CAACU,OAAOI,YAAY;oCACxE,qBACI,KAAC3B;wCAAQS,OAAOM;wCAAqBgC,UAAU,CAACD;wCAAYT,UAAS;kDACjE,cAAA,KAACW;sDACG,cAAA,KAACtD;gDAEGe,OAAOO,aAAa,CAACO,OAAOE,EAAE,CAAC,IAAIF,OAAOE,EAAE;gDAC5CP,MAAMK,OAAOE,EAAE;gDACfwB,SAAS1B,OAAOI,YAAY;gDAC5BoB,UAAUD;gDACVI,UAAU3B,OAAO4B,0BAA0B;+CALtC5B,OAAOE,EAAE;;;gCAUlC;;;wBAGPZ,sCACG;;8CACI,KAAClB;oCAAQyD,IAAG;oCAAKC,IAAG;;gCACnBvC;;;;;;;;AAO7B,EAAE"}
@@ -0,0 +1,10 @@
1
+ declare const _default: (params: void, options?: import("@mantine/core").UseStylesOptions<string>) => {
2
+ classes: {
3
+ root: string;
4
+ wrapper: string;
5
+ };
6
+ cx: (...args: any) => string;
7
+ theme: import("@mantine/core").MantineTheme;
8
+ };
9
+ export default _default;
10
+ //# sourceMappingURL=TableColumnsSelector.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableColumnsSelector.styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/table/table-columns-selector/TableColumnsSelector.styles.ts"],"names":[],"mappings":";;;;;;;;AAEA,wBAKI"}
@@ -0,0 +1,11 @@
1
+ import { createStyles } from '@mantine/core';
2
+ export default createStyles((theme)=>({
3
+ root: {
4
+ maxWidth: '100%'
5
+ },
6
+ wrapper: {
7
+ display: 'inline-flex'
8
+ }
9
+ }));
10
+
11
+ //# sourceMappingURL=TableColumnsSelector.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/table/table-columns-selector/TableColumnsSelector.styles.ts"],"sourcesContent":["import {createStyles} from '@mantine/core';\n\nexport default createStyles((theme) => ({\n root: {maxWidth: '100%'},\n wrapper: {\n display: 'inline-flex',\n },\n}));\n"],"names":["createStyles","theme","root","maxWidth","wrapper","display"],"mappings":"AAAA,SAAQA,YAAY,QAAO,gBAAgB;AAE3C,eAAeA,aAAa,CAACC,QAAW,CAAA;QACpCC,MAAM;YAACC,UAAU;QAAM;QACvBC,SAAS;YACLC,SAAS;QACb;IACJ,CAAA,GAAI"}
@@ -0,0 +1,46 @@
1
+ import { DefaultProps, Selectors } from '@mantine/core';
2
+ import { ReactNode } from 'react';
3
+ import useStyles from './TableColumnsSelector.styles';
4
+ type TableColumnsSelectorStylesNames = Selectors<typeof useStyles>;
5
+ export interface TableColumnsSelectorProps extends DefaultProps<TableColumnsSelectorStylesNames> {
6
+ /**
7
+ * The label of the button
8
+ * @default 'Edit columns'
9
+ */
10
+ label?: ReactNode;
11
+ /**
12
+ * The style variant of the button
13
+ * @default 'outline'
14
+ */
15
+ buttonVariant?: string;
16
+ /**
17
+ * An array of column ids that the user cannot hide. This is useful for columns that are required for the table to function properly.
18
+ * @default []
19
+ */
20
+ nonHideableColumns?: string[];
21
+ /**
22
+ * Whether the count of visible columns is shown in the button label.
23
+ * @default false
24
+ */
25
+ showVisibleCountLabel?: boolean;
26
+ /**
27
+ * The maximum number of columns that can be selected at the same time.
28
+ * If defined a footer will render with the remaining number of columns that can be selected.
29
+ */
30
+ maxSelectableColumns?: number;
31
+ /**
32
+ * A dictionary of column ids and names to use for the checkbox labels.
33
+ */
34
+ columnNames: Record<string, string>;
35
+ /**
36
+ * The content to display in the footer when maxSelectableColumns is defined.
37
+ */
38
+ footer?: ReactNode;
39
+ /**
40
+ * The tooltip to display when the user hovers over a disabled checkbox.
41
+ * @default 'You have reached the maximum display limit.'
42
+ */
43
+ limitReachedTooltip?: string;
44
+ }
45
+ export {};
46
+ //# sourceMappingURL=TableColumnsSelector.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableColumnsSelector.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/table/table-columns-selector/TableColumnsSelector.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAChC,OAAO,SAAS,MAAM,+BAA+B,CAAC;AAEtD,KAAK,+BAA+B,GAAG,SAAS,CAAC,OAAO,SAAS,CAAC,CAAC;AAEnE,MAAM,WAAW,yBAA0B,SAAQ,YAAY,CAAC,+BAA+B,CAAC;IAC5F;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC"}
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=TableColumnsSelector.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/table/table-columns-selector/TableColumnsSelector.types.ts"],"sourcesContent":["import {DefaultProps, Selectors} from '@mantine/core';\nimport {ReactNode} from 'react';\nimport useStyles from './TableColumnsSelector.styles';\n\ntype TableColumnsSelectorStylesNames = Selectors<typeof useStyles>;\n\nexport interface TableColumnsSelectorProps extends DefaultProps<TableColumnsSelectorStylesNames> {\n /**\n * The label of the button\n * @default 'Edit columns'\n */\n label?: ReactNode;\n /**\n * The style variant of the button\n * @default 'outline'\n */\n buttonVariant?: string;\n /**\n * An array of column ids that the user cannot hide. This is useful for columns that are required for the table to function properly.\n * @default []\n */\n nonHideableColumns?: string[];\n /**\n * Whether the count of visible columns is shown in the button label.\n * @default false\n */\n showVisibleCountLabel?: boolean;\n /**\n * The maximum number of columns that can be selected at the same time.\n * If defined a footer will render with the remaining number of columns that can be selected.\n */\n maxSelectableColumns?: number;\n /**\n * A dictionary of column ids and names to use for the checkbox labels.\n */\n columnNames: Record<string, string>;\n /**\n * The content to display in the footer when maxSelectableColumns is defined.\n */\n footer?: ReactNode;\n /**\n * The tooltip to display when the user hovers over a disabled checkbox.\n * @default 'You have reached the maximum display limit.'\n */\n limitReachedTooltip?: string;\n}\n"],"names":[],"mappings":"AAAA,WA6CC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coveord/plasma-mantine",
3
- "version": "52.26.6",
3
+ "version": "52.27.0",
4
4
  "description": "A Plasma flavoured Mantine theme",
5
5
  "keywords": [
6
6
  "plasma",
@@ -26,11 +26,12 @@ const useStyles = createStyles<string>((theme) => ({
26
26
  }));
27
27
 
28
28
  export const TableComponentsOrder = {
29
- MultiSelectInfo: 6,
30
- Actions: 5,
31
- Predicate: 4,
32
- Filter: 3,
33
- DateRangePicker: 2,
29
+ MultiSelectInfo: 7,
30
+ Actions: 6,
31
+ Predicate: 5,
32
+ Filter: 4,
33
+ DateRangePicker: 3,
34
+ ColumnsSelector: 2,
34
35
  LayoutControl: 1,
35
36
  };
36
37