@coveord/plasma-mantine 52.12.0 → 52.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAwC,SAAS,EAAC,MAAM,eAAe,CAAC;AAiB/E,eAAO,MAAM,KAAK,EAAE,SA+KnB,CAAC"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAwC,SAAS,EAAC,MAAM,eAAe,CAAC;AAiB/E,eAAO,MAAM,KAAK,EAAE,SAoLnB,CAAC"}
@@ -93,7 +93,12 @@ var Table = function(param) {
93
93
  var _getExpandChildren;
94
94
  return (_ref = !!((_getExpandChildren = getExpandChildren) === null || _getExpandChildren === void 0 ? void 0 : _getExpandChildren(row.original))) !== null && _ref !== void 0 ? _ref : false;
95
95
  },
96
- enableRowSelection: !loading
96
+ enableRowSelection: !loading,
97
+ defaultColumn: {
98
+ size: undefined,
99
+ minSize: _reacttable.defaultColumnSizing.minSize,
100
+ maxSize: _reacttable.defaultColumnSizing.maxSize
101
+ }
97
102
  }, options));
98
103
  var _useState = _sliced_to_array._((0, _react.useState)(table.initialState), 2), state = _useState[0], setState = _useState[1];
99
104
  table.setOptions(function(prev) {
@@ -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 {ColumnDef, getCoreRowModel, Row, TableState as TanstackTableState, useReactTable} from '@tanstack/react-table';\nimport debounce from 'lodash.debounce';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport {Children, cloneElement, Dispatch, ReactElement, useCallback, useEffect, useState} from 'react';\n\nimport {TableLayouts} from './layouts/TableLayouts';\nimport useStyles from './Table.styles';\nimport {TableFormType, TableProps, TableState, TableType} from './Table.types';\nimport {TableActions} from './TableActions';\nimport {TableAccordionColumn, TableCollapsibleColumn} from './TableCollapsibleColumn';\nimport {TableConsumer} from './TableConsumer';\nimport {TableContext} from './TableContext';\nimport {TableDateRangePicker} from './TableDateRangePicker';\nimport {TableFilter} from './TableFilter';\nimport {TableFooter} from './TableFooter';\nimport {TableHeader} from './TableHeader';\nimport {TableLastUpdated} from './TableLastUpdated';\nimport {TableLoading} from './TableLoading';\nimport {TablePagination} from './TablePagination';\nimport {TablePerPage} from './TablePerPage';\nimport {TablePredicate} from './TablePredicate';\nimport {TableSelectableColumn} from './TableSelectableColumn';\nimport {useRowSelection} from './useRowSelection';\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 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();\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 ...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>\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":["Table","data","getRowId","noDataChildren","getExpandChildren","initialState","columns","layouts","TableLayouts","Rows","onMount","onChange","children","loading","doubleClickAction","multiRowSelectionEnabled","disableRowSelection","onRowSelectionChange","additionalRootNodes","options","form","convertedChildren","Children","toArray","header","find","child","type","TableHeader","footer","TableFooter","consumer","TableConsumer","lastUpdated","TableLastUpdated","predicates","dateRange","initialStateWithoutForm","useForm","initialValues","layout","name","classes","useStyles","table","useReactTable","defaultsDeep","pagination","pageSize","TablePerPage","DEFAULT_SIZE","globalFilter","TableSelectableColumn","concat","getCoreRowModel","manualPagination","getPaginationRowModel","undefined","enableMultiRowSelection","getRowCanExpand","row","original","enableRowSelection","useState","state","setState","setOptions","prev","onStateChange","useRowSelection","clearSelection","getSelectedRow","getSelectedRows","outsideClickRef","isFiltered","Object","keys","values","some","predicate","triggerChange","debounce","useEffect","cancel","useDidUpdate","sorting","JSON","stringify","clearFilters","useCallback","setFieldValue","prevState","Center","sx","flexGrow","Loader","Layout","hasRows","getRowModel","rows","length","Box","ref","TableContext","Provider","value","containerRef","getPageCount","component","className","pb","thead","tr","th","style","padding","colSpan","getAllColumns","Header","tbody","Body","td","TableLoading","visible","cloneElement","dependencies","props","Actions","TableActions","Filter","TableFilter","Footer","LastUpdated","Pagination","TablePagination","Predicate","TablePredicate","PerPage","CollapsibleColumn","TableCollapsibleColumn","AccordionColumn","TableAccordionColumn","DateRangePicker","TableDateRangePicker","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 defaultColumnSizing,\n getCoreRowModel,\n Row,\n TableState as TanstackTableState,\n useReactTable,\n} from '@tanstack/react-table';\nimport debounce from 'lodash.debounce';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport {Children, cloneElement, Dispatch, ReactElement, useCallback, useEffect, useState} from 'react';\n\nimport {TableLayouts} from './layouts/TableLayouts';\nimport useStyles from './Table.styles';\nimport {TableFormType, TableProps, TableState, TableType} from './Table.types';\nimport {TableActions} from './TableActions';\nimport {TableAccordionColumn, TableCollapsibleColumn} from './TableCollapsibleColumn';\nimport {TableConsumer} from './TableConsumer';\nimport {TableContext} from './TableContext';\nimport {TableDateRangePicker} from './TableDateRangePicker';\nimport {TableFilter} from './TableFilter';\nimport {TableFooter} from './TableFooter';\nimport {TableHeader} from './TableHeader';\nimport {TableLastUpdated} from './TableLastUpdated';\nimport {TableLoading} from './TableLoading';\nimport {TablePagination} from './TablePagination';\nimport {TablePerPage} from './TablePerPage';\nimport {TablePredicate} from './TablePredicate';\nimport {TableSelectableColumn} from './TableSelectableColumn';\nimport {useRowSelection} from './useRowSelection';\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 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();\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>\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":["Table","data","getRowId","noDataChildren","getExpandChildren","initialState","columns","layouts","TableLayouts","Rows","onMount","onChange","children","loading","doubleClickAction","multiRowSelectionEnabled","disableRowSelection","onRowSelectionChange","additionalRootNodes","options","form","convertedChildren","Children","toArray","header","find","child","type","TableHeader","footer","TableFooter","consumer","TableConsumer","lastUpdated","TableLastUpdated","predicates","dateRange","initialStateWithoutForm","useForm","initialValues","layout","name","classes","useStyles","table","useReactTable","defaultsDeep","pagination","pageSize","TablePerPage","DEFAULT_SIZE","globalFilter","TableSelectableColumn","concat","getCoreRowModel","manualPagination","getPaginationRowModel","undefined","enableMultiRowSelection","getRowCanExpand","row","original","enableRowSelection","defaultColumn","size","minSize","defaultColumnSizing","maxSize","useState","state","setState","setOptions","prev","onStateChange","useRowSelection","clearSelection","getSelectedRow","getSelectedRows","outsideClickRef","isFiltered","Object","keys","values","some","predicate","triggerChange","debounce","useEffect","cancel","useDidUpdate","sorting","JSON","stringify","clearFilters","useCallback","setFieldValue","prevState","Center","sx","flexGrow","Loader","Layout","hasRows","getRowModel","rows","length","Box","ref","TableContext","Provider","value","containerRef","getPageCount","component","className","pb","thead","tr","th","style","padding","colSpan","getAllColumns","Header","tbody","Body","td","TableLoading","visible","cloneElement","dependencies","props","Actions","TableActions","Filter","TableFilter","Footer","LastUpdated","Pagination","TablePagination","Predicate","TablePredicate","PerPage","CollapsibleColumn","TableCollapsibleColumn","AccordionColumn","TableAccordionColumn","DateRangePicker","TableDateRangePicker","Consumer","Loading","Layouts"],"mappings":"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"}
@@ -14,6 +14,7 @@ var _jsxruntime = require("react/jsx-runtime");
14
14
  var _plasmareacticons = require("@coveord/plasma-react-icons");
15
15
  var _core = require("@mantine/core");
16
16
  var _reacttable = require("@tanstack/react-table");
17
+ var _columnSizing_size;
17
18
  var useStyles = (0, _core.createStyles)(function(theme, columnSizing) {
18
19
  return {
19
20
  th: {
@@ -24,7 +25,7 @@ var useStyles = (0, _core.createStyles)(function(theme, columnSizing) {
24
25
  textAlign: "left",
25
26
  color: theme.colors.gray[6],
26
27
  backgroundColor: theme.colorScheme === "dark" ? theme.colors.gray[8] : theme.colors.gray[0],
27
- width: columnSizing.size,
28
+ width: (_columnSizing_size = columnSizing.size) !== null && _columnSizing_size !== void 0 ? _columnSizing_size : "auto",
28
29
  minWidth: columnSizing.minSize,
29
30
  maxWidth: columnSizing.maxSize
30
31
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/Th.tsx"],"sourcesContent":["import {ArrowDownSize16Px, ArrowUpSize16Px, DoubleArrowHeadVSize16Px} from '@coveord/plasma-react-icons';\nimport {Center, Group, Text, UnstyledButton, createStyles} from '@mantine/core';\nimport {Header, defaultColumnSizing, flexRender} from '@tanstack/react-table';\n\nconst useStyles = createStyles((theme, columnSizing: {size: number; minSize: number; maxSize: number}) => ({\n th: {\n fontWeight: '400 !important' as any,\n padding: '0 !important',\n verticalAlign: 'middle',\n whiteSpace: 'nowrap',\n textAlign: 'left',\n color: theme.colors.gray[6],\n backgroundColor: theme.colorScheme === 'dark' ? theme.colors.gray[8] : theme.colors.gray[0],\n width: columnSizing.size,\n minWidth: columnSizing.minSize,\n maxWidth: columnSizing.maxSize,\n },\n\n control: {\n color: 'inherit',\n whiteSpace: 'inherit',\n fontWeight: 'inherit',\n width: '100%',\n padding: `${theme.spacing.xs} ${theme.spacing.sm}`,\n '&:hover': {\n backgroundColor: theme.colorScheme === 'dark' ? theme.colors.gray[7] : theme.colors.gray[1],\n },\n },\n}));\n\ninterface ThProps<T> {\n header: Header<T, unknown>;\n}\n\nconst SortingIcons = {\n asc: ArrowUpSize16Px,\n desc: ArrowDownSize16Px,\n none: DoubleArrowHeadVSize16Px,\n};\n\nconst SortingLabels = {\n asc: 'ascending',\n desc: 'descending',\n none: 'none',\n} as const;\n\nexport const Th = <T,>({header}: ThProps<T>) => {\n const columnSizing = {\n ...defaultColumnSizing,\n size: header.column.columnDef.size,\n minSize: header.column.columnDef.minSize,\n maxSize: header.column.columnDef.maxSize,\n };\n\n const {classes} = useStyles(columnSizing);\n\n if (header.isPlaceholder) {\n return null;\n }\n\n if (!header.column.getCanSort()) {\n return (\n <th className={classes.th}>\n <Text size=\"xs\" py=\"xs\" px=\"sm\" fw={500}>\n {flexRender(header.column.columnDef.header, header.getContext())}\n </Text>\n </th>\n );\n }\n\n const onSort = header.column.getToggleSortingHandler();\n const sortingOrder = header.column.getIsSorted() || 'none';\n const Icon = SortingIcons[sortingOrder];\n\n return (\n <th className={classes.th} aria-sort={SortingLabels[sortingOrder]}>\n <UnstyledButton onClick={onSort} className={classes.control}>\n <Group position=\"apart\" noWrap>\n <Text size=\"xs\" fw={500}>\n {flexRender(header.column.columnDef.header, header.getContext())}\n </Text>\n <Center>\n <Icon height={14} />\n </Center>\n </Group>\n </UnstyledButton>\n </th>\n );\n};\n"],"names":["Th","useStyles","createStyles","theme","columnSizing","th","fontWeight","padding","verticalAlign","whiteSpace","textAlign","color","colors","gray","backgroundColor","colorScheme","width","size","minWidth","minSize","maxWidth","maxSize","control","spacing","xs","sm","SortingIcons","asc","ArrowUpSize16Px","desc","ArrowDownSize16Px","none","DoubleArrowHeadVSize16Px","SortingLabels","header","defaultColumnSizing","column","columnDef","classes","isPlaceholder","getCanSort","className","Text","py","px","fw","flexRender","getContext","onSort","getToggleSortingHandler","sortingOrder","getIsSorted","Icon","aria-sort","UnstyledButton","onClick","Group","position","noWrap","Center","height"],"mappings":";;;;+BA8CaA;;;eAAAA;;;;;;gCA9C8D;oBACX;0BACV;AAEtD,IAAMC,YAAYC,IAAAA,kBAAY,EAAC,SAACC,OAAOC;WAAoE;QACvGC,IAAI;YACAC,YAAY;YACZC,SAAS;YACTC,eAAe;YACfC,YAAY;YACZC,WAAW;YACXC,OAAOR,MAAMS,MAAM,CAACC,IAAI,CAAC,EAAE;YAC3BC,iBAAiBX,MAAMY,WAAW,KAAK,SAASZ,MAAMS,MAAM,CAACC,IAAI,CAAC,EAAE,GAAGV,MAAMS,MAAM,CAACC,IAAI,CAAC,EAAE;YAC3FG,OAAOZ,aAAaa,IAAI;YACxBC,UAAUd,aAAae,OAAO;YAC9BC,UAAUhB,aAAaiB,OAAO;QAClC;QAEAC,SAAS;YACLX,OAAO;YACPF,YAAY;YACZH,YAAY;YACZU,OAAO;YACPT,SAAS,AAAC,GAAsBJ,OAApBA,MAAMoB,OAAO,CAACC,EAAE,EAAC,KAAoB,OAAjBrB,MAAMoB,OAAO,CAACE,EAAE;YAChD,WAAW;gBACPX,iBAAiBX,MAAMY,WAAW,KAAK,SAASZ,MAAMS,MAAM,CAACC,IAAI,CAAC,EAAE,GAAGV,MAAMS,MAAM,CAACC,IAAI,CAAC,EAAE;YAC/F;QACJ;IACJ;;AAMA,IAAMa,eAAe;IACjBC,KAAKC,iCAAe;IACpBC,MAAMC,mCAAiB;IACvBC,MAAMC,0CAAwB;AAClC;AAEA,IAAMC,gBAAgB;IAClBN,KAAK;IACLE,MAAM;IACNE,MAAM;AACV;AAEO,IAAM/B,KAAK;QAAMkC,eAAAA;IACpB,IAAM9B,eAAe,4CACd+B,+BAAmB;QACtBlB,MAAMiB,OAAOE,MAAM,CAACC,SAAS,CAACpB,IAAI;QAClCE,SAASe,OAAOE,MAAM,CAACC,SAAS,CAAClB,OAAO;QACxCE,SAASa,OAAOE,MAAM,CAACC,SAAS,CAAChB,OAAO;;IAG5C,IAAM,AAACiB,UAAWrC,UAAUG,cAArBkC;IAEP,IAAIJ,OAAOK,aAAa,EAAE;QACtB,OAAO;IACX;IAEA,IAAI,CAACL,OAAOE,MAAM,CAACI,UAAU,IAAI;QAC7B,qBACI,qBAACnC;YAAGoC,WAAWH,QAAQjC,EAAE;sBACrB,cAAA,qBAACqC,UAAI;gBAACzB,MAAK;gBAAK0B,IAAG;gBAAKC,IAAG;gBAAKC,IAAI;0BAC/BC,IAAAA,sBAAU,EAACZ,OAAOE,MAAM,CAACC,SAAS,CAACH,MAAM,EAAEA,OAAOa,UAAU;;;IAI7E;IAEA,IAAMC,SAASd,OAAOE,MAAM,CAACa,uBAAuB;IACpD,IAAMC,eAAehB,OAAOE,MAAM,CAACe,WAAW,MAAM;IACpD,IAAMC,OAAO1B,YAAY,CAACwB,aAAa;IAEvC,qBACI,qBAAC7C;QAAGoC,WAAWH,QAAQjC,EAAE;QAAEgD,aAAWpB,aAAa,CAACiB,aAAa;kBAC7D,cAAA,qBAACI,oBAAc;YAACC,SAASP;YAAQP,WAAWH,QAAQhB,OAAO;sBACvD,cAAA,sBAACkC,WAAK;gBAACC,UAAS;gBAAQC,MAAM;;kCAC1B,qBAAChB,UAAI;wBAACzB,MAAK;wBAAK4B,IAAI;kCACfC,IAAAA,sBAAU,EAACZ,OAAOE,MAAM,CAACC,SAAS,CAACH,MAAM,EAAEA,OAAOa,UAAU;;kCAEjE,qBAACY,YAAM;kCACH,cAAA,qBAACP;4BAAKQ,QAAQ;;;;;;;AAMtC"}
1
+ {"version":3,"sources":["../../../../src/components/table/Th.tsx"],"sourcesContent":["import {ArrowDownSize16Px, ArrowUpSize16Px, DoubleArrowHeadVSize16Px} from '@coveord/plasma-react-icons';\nimport {Center, Group, Text, UnstyledButton, createStyles} from '@mantine/core';\nimport {Header, defaultColumnSizing, flexRender} from '@tanstack/react-table';\n\nconst useStyles = createStyles((theme, columnSizing: {size: number; minSize: number; maxSize: number}) => ({\n th: {\n fontWeight: '400 !important' as any,\n padding: '0 !important',\n verticalAlign: 'middle',\n whiteSpace: 'nowrap',\n textAlign: 'left',\n color: theme.colors.gray[6],\n backgroundColor: theme.colorScheme === 'dark' ? theme.colors.gray[8] : theme.colors.gray[0],\n width: columnSizing.size ?? 'auto',\n minWidth: columnSizing.minSize,\n maxWidth: columnSizing.maxSize,\n },\n\n control: {\n color: 'inherit',\n whiteSpace: 'inherit',\n fontWeight: 'inherit',\n width: '100%',\n padding: `${theme.spacing.xs} ${theme.spacing.sm}`,\n '&:hover': {\n backgroundColor: theme.colorScheme === 'dark' ? theme.colors.gray[7] : theme.colors.gray[1],\n },\n },\n}));\n\ninterface ThProps<T> {\n header: Header<T, unknown>;\n}\n\nconst SortingIcons = {\n asc: ArrowUpSize16Px,\n desc: ArrowDownSize16Px,\n none: DoubleArrowHeadVSize16Px,\n};\n\nconst SortingLabels = {\n asc: 'ascending',\n desc: 'descending',\n none: 'none',\n} as const;\n\nexport const Th = <T,>({header}: ThProps<T>) => {\n const columnSizing = {\n ...defaultColumnSizing,\n size: header.column.columnDef.size,\n minSize: header.column.columnDef.minSize,\n maxSize: header.column.columnDef.maxSize,\n };\n\n const {classes} = useStyles(columnSizing);\n\n if (header.isPlaceholder) {\n return null;\n }\n\n if (!header.column.getCanSort()) {\n return (\n <th className={classes.th}>\n <Text size=\"xs\" py=\"xs\" px=\"sm\" fw={500}>\n {flexRender(header.column.columnDef.header, header.getContext())}\n </Text>\n </th>\n );\n }\n\n const onSort = header.column.getToggleSortingHandler();\n const sortingOrder = header.column.getIsSorted() || 'none';\n const Icon = SortingIcons[sortingOrder];\n\n return (\n <th className={classes.th} aria-sort={SortingLabels[sortingOrder]}>\n <UnstyledButton onClick={onSort} className={classes.control}>\n <Group position=\"apart\" noWrap>\n <Text size=\"xs\" fw={500}>\n {flexRender(header.column.columnDef.header, header.getContext())}\n </Text>\n <Center>\n <Icon height={14} />\n </Center>\n </Group>\n </UnstyledButton>\n </th>\n );\n};\n"],"names":["Th","columnSizing","useStyles","createStyles","theme","th","fontWeight","padding","verticalAlign","whiteSpace","textAlign","color","colors","gray","backgroundColor","colorScheme","width","size","minWidth","minSize","maxWidth","maxSize","control","spacing","xs","sm","SortingIcons","asc","ArrowUpSize16Px","desc","ArrowDownSize16Px","none","DoubleArrowHeadVSize16Px","SortingLabels","header","defaultColumnSizing","column","columnDef","classes","isPlaceholder","getCanSort","className","Text","py","px","fw","flexRender","getContext","onSort","getToggleSortingHandler","sortingOrder","getIsSorted","Icon","aria-sort","UnstyledButton","onClick","Group","position","noWrap","Center","height"],"mappings":";;;;+BA8CaA;;;eAAAA;;;;;;gCA9C8D;oBACX;0BACV;IAWvCC;AATf,IAAMC,YAAYC,IAAAA,kBAAY,EAAC,SAACC,OAAOH;WAAoE;QACvGI,IAAI;YACAC,YAAY;YACZC,SAAS;YACTC,eAAe;YACfC,YAAY;YACZC,WAAW;YACXC,OAAOP,MAAMQ,MAAM,CAACC,IAAI,CAAC,EAAE;YAC3BC,iBAAiBV,MAAMW,WAAW,KAAK,SAASX,MAAMQ,MAAM,CAACC,IAAI,CAAC,EAAE,GAAGT,MAAMQ,MAAM,CAACC,IAAI,CAAC,EAAE;YAC3FG,OAAOf,CAAAA,qBAAAA,aAAagB,IAAI,cAAjBhB,gCAAAA,qBAAqB;YAC5BiB,UAAUjB,aAAakB,OAAO;YAC9BC,UAAUnB,aAAaoB,OAAO;QAClC;QAEAC,SAAS;YACLX,OAAO;YACPF,YAAY;YACZH,YAAY;YACZU,OAAO;YACPT,SAAS,AAAC,GAAsBH,OAApBA,MAAMmB,OAAO,CAACC,EAAE,EAAC,KAAoB,OAAjBpB,MAAMmB,OAAO,CAACE,EAAE;YAChD,WAAW;gBACPX,iBAAiBV,MAAMW,WAAW,KAAK,SAASX,MAAMQ,MAAM,CAACC,IAAI,CAAC,EAAE,GAAGT,MAAMQ,MAAM,CAACC,IAAI,CAAC,EAAE;YAC/F;QACJ;IACJ;;AAMA,IAAMa,eAAe;IACjBC,KAAKC,iCAAe;IACpBC,MAAMC,mCAAiB;IACvBC,MAAMC,0CAAwB;AAClC;AAEA,IAAMC,gBAAgB;IAClBN,KAAK;IACLE,MAAM;IACNE,MAAM;AACV;AAEO,IAAM/B,KAAK;QAAMkC,eAAAA;IACpB,IAAMjC,eAAe,4CACdkC,+BAAmB;QACtBlB,MAAMiB,OAAOE,MAAM,CAACC,SAAS,CAACpB,IAAI;QAClCE,SAASe,OAAOE,MAAM,CAACC,SAAS,CAAClB,OAAO;QACxCE,SAASa,OAAOE,MAAM,CAACC,SAAS,CAAChB,OAAO;;IAG5C,IAAM,AAACiB,UAAWpC,UAAUD,cAArBqC;IAEP,IAAIJ,OAAOK,aAAa,EAAE;QACtB,OAAO;IACX;IAEA,IAAI,CAACL,OAAOE,MAAM,CAACI,UAAU,IAAI;QAC7B,qBACI,qBAACnC;YAAGoC,WAAWH,QAAQjC,EAAE;sBACrB,cAAA,qBAACqC,UAAI;gBAACzB,MAAK;gBAAK0B,IAAG;gBAAKC,IAAG;gBAAKC,IAAI;0BAC/BC,IAAAA,sBAAU,EAACZ,OAAOE,MAAM,CAACC,SAAS,CAACH,MAAM,EAAEA,OAAOa,UAAU;;;IAI7E;IAEA,IAAMC,SAASd,OAAOE,MAAM,CAACa,uBAAuB;IACpD,IAAMC,eAAehB,OAAOE,MAAM,CAACe,WAAW,MAAM;IACpD,IAAMC,OAAO1B,YAAY,CAACwB,aAAa;IAEvC,qBACI,qBAAC7C;QAAGoC,WAAWH,QAAQjC,EAAE;QAAEgD,aAAWpB,aAAa,CAACiB,aAAa;kBAC7D,cAAA,qBAACI,oBAAc;YAACC,SAASP;YAAQP,WAAWH,QAAQhB,OAAO;sBACvD,cAAA,sBAACkC,WAAK;gBAACC,UAAS;gBAAQC,MAAM;;kCAC1B,qBAAChB,UAAI;wBAACzB,MAAK;wBAAK4B,IAAI;kCACfC,IAAAA,sBAAU,EAACZ,OAAOE,MAAM,CAACC,SAAS,CAACH,MAAM,EAAEA,OAAOa,UAAU;;kCAEjE,qBAACY,YAAM;kCACH,cAAA,qBAACP;4BAAKQ,QAAQ;;;;;;;AAMtC"}
@@ -150,10 +150,11 @@ var RowLayoutBody = function(param) {
150
150
  row.getToggleSelectedHandler();
151
151
  }
152
152
  };
153
+ var _columnSizing_size;
153
154
  return /*#__PURE__*/ (0, _jsxruntime.jsx)("td", {
154
155
  "data-testid": cell.id,
155
156
  style: {
156
- width: columnSizing.size,
157
+ width: (_columnSizing_size = columnSizing.size) !== null && _columnSizing_size !== void 0 ? _columnSizing_size : "auto",
157
158
  minWidth: columnSizing.minSize,
158
159
  maxWidth: columnSizing.maxSize
159
160
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/table/layouts/RowLayout.tsx"],"sourcesContent":["import {ListSize16Px} from '@coveord/plasma-react-icons';\nimport {Box, Collapse, createStyles, rem} from '@mantine/core';\nimport {flexRender} from '@tanstack/react-table';\nimport {defaultColumnSizing} from '@tanstack/table-core';\nimport {Fragment, type MouseEvent} from 'react';\nimport {TableLayout, TableLayoutProps} from '../Table.types';\nimport {TableCollapsibleColumn} from '../TableCollapsibleColumn';\nimport {useTable} from '../TableContext';\nimport {TableLoading} from '../TableLoading';\nimport {TableSelectableColumn} from '../TableSelectableColumn';\nimport {Th} from '../Th';\n\ninterface TableStylesParams {\n multiRowSelectionEnabled: boolean;\n disableRowSelection: boolean;\n}\n\nconst useStyles = createStyles<string, TableStylesParams>((theme, {multiRowSelectionEnabled, disableRowSelection}) => {\n const rowBackgroundColor =\n theme.colorScheme === 'dark' ? theme.fn.rgba(theme.colors[theme.primaryColor][7], 0.2) : theme.colors.gray[1];\n const border = `${rem(1)} solid ${theme.colorScheme === 'dark' ? theme.colors.dark[4] : theme.colors.gray[3]}`;\n return {\n headerColumns: {\n '& th:first-of-type > *': {\n paddingLeft: '40px',\n },\n\n '& input[type=checkbox]': {\n backgroundColor: disableRowSelection ? `${theme.colors.gray[2]}` : undefined,\n borderColor: disableRowSelection ? `${theme.colors.gray[3]}` : `${theme.colors.gray[4]}`,\n pointerEvents: disableRowSelection ? 'none' : 'auto',\n cursor: disableRowSelection ? 'not-allowed' : 'default',\n\n '& + svg': {\n color: disableRowSelection ? `${theme.colors.gray[5]}` : 'inherit',\n },\n },\n },\n\n rowSelected: {\n backgroundColor: multiRowSelectionEnabled ? undefined : rowBackgroundColor,\n },\n\n rowUnselectable: {\n '& input[type=checkbox]': {\n backgroundColor: `${theme.colors.gray[2]}`,\n borderColor: `${theme.colors.gray[3]}`,\n pointerEvents: 'none',\n cursor: 'not-allowed',\n\n '&:checked + svg': {\n color: `${theme.colors.gray[5]}`,\n },\n },\n },\n\n rowCollapsibleButtonCell: {\n textAlign: 'right',\n padding: `calc(${theme.spacing.xs}/2) ${theme.spacing.sm} !important`,\n },\n\n row: {\n '& td:first-of-type': {\n paddingLeft: '40px',\n },\n '&:hover': {\n backgroundColor: rowBackgroundColor,\n },\n },\n\n cell: {\n verticalAlign: 'middle',\n // We must use height instead of minHeight here, otherwise it doesn't apply\n height: '56px',\n padding: `${theme.spacing.xs} ${theme.spacing.sm}`,\n borderBottom: border,\n },\n\n collapsible: {\n backgroundColor: rowBackgroundColor,\n borderBottom: border,\n },\n };\n});\n\nconst RowLayoutHeader = <T,>({table}: TableLayoutProps<T>) => {\n const {multiRowSelectionEnabled, disableRowSelection} = useTable();\n const {classes} = useStyles({disableRowSelection, multiRowSelectionEnabled});\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}: TableLayoutProps<T>) => {\n const {multiRowSelectionEnabled, disableRowSelection} = useTable();\n const {classes, cx} = useStyles({disableRowSelection, multiRowSelectionEnabled});\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,\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":["RowLayout","useStyles","createStyles","theme","multiRowSelectionEnabled","disableRowSelection","rowBackgroundColor","colorScheme","fn","rgba","colors","primaryColor","gray","border","rem","dark","headerColumns","paddingLeft","backgroundColor","undefined","borderColor","pointerEvents","cursor","color","rowSelected","rowUnselectable","rowCollapsibleButtonCell","textAlign","padding","spacing","xs","sm","row","cell","verticalAlign","height","borderBottom","collapsible","RowLayoutHeader","table","useTable","classes","headers","getHeaderGroups","map","headerGroup","tr","className","columnHeader","Th","header","id","RowLayoutBody","doubleClickAction","getExpandChildren","loading","keepSelection","cx","toggleCollapsible","el","children","length","querySelector","click","rows","getRowModel","rowChildren","original","isSelected","getIsSelected","shouldKeepSelection","onClick","event","currentTarget","toggleSelected","Fragment","onDoubleClick","aria-selected","data-testid","getVisibleCells","columnSizing","defaultColumnSizing","size","column","columnDef","minSize","maxSize","onCollapsibleCellClick","TableSelectableColumn","stopPropagation","getToggleSelectedHandler","td","style","width","minWidth","maxWidth","TableCollapsibleColumn","TableLoading","visible","flexRender","getContext","colSpan","getAllColumns","Collapse","in","getIsExpanded","Box","px","py","name","icon","ListSize16Px","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, createStyles, rem} from '@mantine/core';\nimport {flexRender} from '@tanstack/react-table';\nimport {defaultColumnSizing} from '@tanstack/table-core';\nimport {Fragment, type MouseEvent} from 'react';\nimport {TableLayout, TableLayoutProps} from '../Table.types';\nimport {TableCollapsibleColumn} from '../TableCollapsibleColumn';\nimport {useTable} from '../TableContext';\nimport {TableLoading} from '../TableLoading';\nimport {TableSelectableColumn} from '../TableSelectableColumn';\nimport {Th} from '../Th';\n\ninterface TableStylesParams {\n multiRowSelectionEnabled: boolean;\n disableRowSelection: boolean;\n}\n\nconst useStyles = createStyles<string, TableStylesParams>((theme, {multiRowSelectionEnabled, disableRowSelection}) => {\n const rowBackgroundColor =\n theme.colorScheme === 'dark' ? theme.fn.rgba(theme.colors[theme.primaryColor][7], 0.2) : theme.colors.gray[1];\n const border = `${rem(1)} solid ${theme.colorScheme === 'dark' ? theme.colors.dark[4] : theme.colors.gray[3]}`;\n return {\n headerColumns: {\n '& th:first-of-type > *': {\n paddingLeft: '40px',\n },\n\n '& input[type=checkbox]': {\n backgroundColor: disableRowSelection ? `${theme.colors.gray[2]}` : undefined,\n borderColor: disableRowSelection ? `${theme.colors.gray[3]}` : `${theme.colors.gray[4]}`,\n pointerEvents: disableRowSelection ? 'none' : 'auto',\n cursor: disableRowSelection ? 'not-allowed' : 'default',\n\n '& + svg': {\n color: disableRowSelection ? `${theme.colors.gray[5]}` : 'inherit',\n },\n },\n },\n\n rowSelected: {\n backgroundColor: multiRowSelectionEnabled ? undefined : rowBackgroundColor,\n },\n\n rowUnselectable: {\n '& input[type=checkbox]': {\n backgroundColor: `${theme.colors.gray[2]}`,\n borderColor: `${theme.colors.gray[3]}`,\n pointerEvents: 'none',\n cursor: 'not-allowed',\n\n '&:checked + svg': {\n color: `${theme.colors.gray[5]}`,\n },\n },\n },\n\n rowCollapsibleButtonCell: {\n textAlign: 'right',\n padding: `calc(${theme.spacing.xs}/2) ${theme.spacing.sm} !important`,\n },\n\n row: {\n '& td:first-of-type': {\n paddingLeft: '40px',\n },\n '&:hover': {\n backgroundColor: rowBackgroundColor,\n },\n },\n\n cell: {\n verticalAlign: 'middle',\n // We must use height instead of minHeight here, otherwise it doesn't apply\n height: '56px',\n padding: `${theme.spacing.xs} ${theme.spacing.sm}`,\n borderBottom: border,\n },\n\n collapsible: {\n backgroundColor: rowBackgroundColor,\n borderBottom: border,\n },\n };\n});\n\nconst RowLayoutHeader = <T,>({table}: TableLayoutProps<T>) => {\n const {multiRowSelectionEnabled, disableRowSelection} = useTable();\n const {classes} = useStyles({disableRowSelection, multiRowSelectionEnabled});\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}: TableLayoutProps<T>) => {\n const {multiRowSelectionEnabled, disableRowSelection} = useTable();\n const {classes, cx} = useStyles({disableRowSelection, multiRowSelectionEnabled});\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":["RowLayout","useStyles","createStyles","theme","multiRowSelectionEnabled","disableRowSelection","rowBackgroundColor","colorScheme","fn","rgba","colors","primaryColor","gray","border","rem","dark","headerColumns","paddingLeft","backgroundColor","undefined","borderColor","pointerEvents","cursor","color","rowSelected","rowUnselectable","rowCollapsibleButtonCell","textAlign","padding","spacing","xs","sm","row","cell","verticalAlign","height","borderBottom","collapsible","RowLayoutHeader","table","useTable","classes","headers","getHeaderGroups","map","headerGroup","tr","className","columnHeader","Th","header","id","RowLayoutBody","doubleClickAction","getExpandChildren","loading","keepSelection","cx","toggleCollapsible","el","children","length","querySelector","click","rows","getRowModel","rowChildren","original","isSelected","getIsSelected","shouldKeepSelection","onClick","event","currentTarget","toggleSelected","Fragment","onDoubleClick","aria-selected","data-testid","getVisibleCells","columnSizing","defaultColumnSizing","size","column","columnDef","minSize","maxSize","onCollapsibleCellClick","TableSelectableColumn","stopPropagation","getToggleSelectedHandler","td","style","width","minWidth","maxWidth","TableCollapsibleColumn","TableLoading","visible","flexRender","getContext","colSpan","getAllColumns","Collapse","in","getIsExpanded","Box","px","py","name","icon","ListSize16Px","Header","Body"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAwC,SAAS,EAAC,MAAM,eAAe,CAAC;AAiB/E,eAAO,MAAM,KAAK,EAAE,SA+KnB,CAAC"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAwC,SAAS,EAAC,MAAM,eAAe,CAAC;AAiB/E,eAAO,MAAM,KAAK,EAAE,SAoLnB,CAAC"}
@@ -7,7 +7,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
7
7
  import { Box, Center, Loader } from "@mantine/core";
8
8
  import { useForm } from "@mantine/form";
9
9
  import { useDidUpdate } from "@mantine/hooks";
10
- import { getCoreRowModel, useReactTable } from "@tanstack/react-table";
10
+ import { defaultColumnSizing, getCoreRowModel, useReactTable } from "@tanstack/react-table";
11
11
  import debounce from "lodash.debounce";
12
12
  import defaultsDeep from "lodash.defaultsdeep";
13
13
  import { Children, cloneElement, useCallback, useEffect, useState } from "react";
@@ -82,7 +82,12 @@ export var Table = function(param) {
82
82
  var _getExpandChildren;
83
83
  return (_ref = !!((_getExpandChildren = getExpandChildren) === null || _getExpandChildren === void 0 ? void 0 : _getExpandChildren(row.original))) !== null && _ref !== void 0 ? _ref : false;
84
84
  },
85
- enableRowSelection: !loading
85
+ enableRowSelection: !loading,
86
+ defaultColumn: {
87
+ size: undefined,
88
+ minSize: defaultColumnSizing.minSize,
89
+ maxSize: defaultColumnSizing.maxSize
90
+ }
86
91
  }, options));
87
92
  var _useState = _sliced_to_array(useState(table.initialState), 2), state = _useState[0], setState = _useState[1];
88
93
  table.setOptions(function(prev) {
@@ -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 {ColumnDef, getCoreRowModel, Row, TableState as TanstackTableState, useReactTable} from '@tanstack/react-table';\nimport debounce from 'lodash.debounce';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport {Children, cloneElement, Dispatch, ReactElement, useCallback, useEffect, useState} from 'react';\n\nimport {TableLayouts} from './layouts/TableLayouts';\nimport useStyles from './Table.styles';\nimport {TableFormType, TableProps, TableState, TableType} from './Table.types';\nimport {TableActions} from './TableActions';\nimport {TableAccordionColumn, TableCollapsibleColumn} from './TableCollapsibleColumn';\nimport {TableConsumer} from './TableConsumer';\nimport {TableContext} from './TableContext';\nimport {TableDateRangePicker} from './TableDateRangePicker';\nimport {TableFilter} from './TableFilter';\nimport {TableFooter} from './TableFooter';\nimport {TableHeader} from './TableHeader';\nimport {TableLastUpdated} from './TableLastUpdated';\nimport {TableLoading} from './TableLoading';\nimport {TablePagination} from './TablePagination';\nimport {TablePerPage} from './TablePerPage';\nimport {TablePredicate} from './TablePredicate';\nimport {TableSelectableColumn} from './TableSelectableColumn';\nimport {useRowSelection} from './useRowSelection';\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 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();\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 ...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>\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","getCoreRowModel","useReactTable","debounce","defaultsDeep","Children","cloneElement","useCallback","useEffect","useState","TableLayouts","useStyles","TableActions","TableAccordionColumn","TableCollapsibleColumn","TableConsumer","TableContext","TableDateRangePicker","TableFilter","TableFooter","TableHeader","TableLastUpdated","TableLoading","TablePagination","TablePerPage","TablePredicate","TableSelectableColumn","useRowSelection","Table","data","getRowId","noDataChildren","getExpandChildren","initialState","columns","layouts","Rows","onMount","onChange","children","loading","doubleClickAction","multiRowSelectionEnabled","disableRowSelection","onRowSelectionChange","additionalRootNodes","options","form","convertedChildren","toArray","header","find","child","type","footer","consumer","lastUpdated","predicates","dateRange","initialStateWithoutForm","initialValues","layout","name","classes","table","pagination","pageSize","DEFAULT_SIZE","globalFilter","concat","manualPagination","getPaginationRowModel","undefined","enableMultiRowSelection","getRowCanExpand","row","original","enableRowSelection","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","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 defaultColumnSizing,\n getCoreRowModel,\n Row,\n TableState as TanstackTableState,\n useReactTable,\n} from '@tanstack/react-table';\nimport debounce from 'lodash.debounce';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport {Children, cloneElement, Dispatch, ReactElement, useCallback, useEffect, useState} from 'react';\n\nimport {TableLayouts} from './layouts/TableLayouts';\nimport useStyles from './Table.styles';\nimport {TableFormType, TableProps, TableState, TableType} from './Table.types';\nimport {TableActions} from './TableActions';\nimport {TableAccordionColumn, TableCollapsibleColumn} from './TableCollapsibleColumn';\nimport {TableConsumer} from './TableConsumer';\nimport {TableContext} from './TableContext';\nimport {TableDateRangePicker} from './TableDateRangePicker';\nimport {TableFilter} from './TableFilter';\nimport {TableFooter} from './TableFooter';\nimport {TableHeader} from './TableHeader';\nimport {TableLastUpdated} from './TableLastUpdated';\nimport {TableLoading} from './TableLoading';\nimport {TablePagination} from './TablePagination';\nimport {TablePerPage} from './TablePerPage';\nimport {TablePredicate} from './TablePredicate';\nimport {TableSelectableColumn} from './TableSelectableColumn';\nimport {useRowSelection} from './useRowSelection';\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 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();\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>\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","TableLayouts","useStyles","TableActions","TableAccordionColumn","TableCollapsibleColumn","TableConsumer","TableContext","TableDateRangePicker","TableFilter","TableFooter","TableHeader","TableLastUpdated","TableLoading","TablePagination","TablePerPage","TablePredicate","TableSelectableColumn","useRowSelection","Table","data","getRowId","noDataChildren","getExpandChildren","initialState","columns","layouts","Rows","onMount","onChange","children","loading","doubleClickAction","multiRowSelectionEnabled","disableRowSelection","onRowSelectionChange","additionalRootNodes","options","form","convertedChildren","toArray","header","find","child","type","footer","consumer","lastUpdated","predicates","dateRange","initialStateWithoutForm","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","td","visible","dependencies","props","Actions","Filter","Footer","LastUpdated","Pagination","Predicate","PerPage","CollapsibleColumn","AccordionColumn","DateRangePicker","Consumer","Loading","Layouts"],"mappings":"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"}
@@ -4,6 +4,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { ArrowDownSize16Px, ArrowUpSize16Px, DoubleArrowHeadVSize16Px } from "@coveord/plasma-react-icons";
5
5
  import { Center, Group, Text, UnstyledButton, createStyles } from "@mantine/core";
6
6
  import { defaultColumnSizing, flexRender } from "@tanstack/react-table";
7
+ var _columnSizing_size;
7
8
  var useStyles = createStyles(function(theme, columnSizing) {
8
9
  return {
9
10
  th: {
@@ -14,7 +15,7 @@ var useStyles = createStyles(function(theme, columnSizing) {
14
15
  textAlign: "left",
15
16
  color: theme.colors.gray[6],
16
17
  backgroundColor: theme.colorScheme === "dark" ? theme.colors.gray[8] : theme.colors.gray[0],
17
- width: columnSizing.size,
18
+ width: (_columnSizing_size = columnSizing.size) !== null && _columnSizing_size !== void 0 ? _columnSizing_size : "auto",
18
19
  minWidth: columnSizing.minSize,
19
20
  maxWidth: columnSizing.maxSize
20
21
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/Th.tsx"],"sourcesContent":["import {ArrowDownSize16Px, ArrowUpSize16Px, DoubleArrowHeadVSize16Px} from '@coveord/plasma-react-icons';\nimport {Center, Group, Text, UnstyledButton, createStyles} from '@mantine/core';\nimport {Header, defaultColumnSizing, flexRender} from '@tanstack/react-table';\n\nconst useStyles = createStyles((theme, columnSizing: {size: number; minSize: number; maxSize: number}) => ({\n th: {\n fontWeight: '400 !important' as any,\n padding: '0 !important',\n verticalAlign: 'middle',\n whiteSpace: 'nowrap',\n textAlign: 'left',\n color: theme.colors.gray[6],\n backgroundColor: theme.colorScheme === 'dark' ? theme.colors.gray[8] : theme.colors.gray[0],\n width: columnSizing.size,\n minWidth: columnSizing.minSize,\n maxWidth: columnSizing.maxSize,\n },\n\n control: {\n color: 'inherit',\n whiteSpace: 'inherit',\n fontWeight: 'inherit',\n width: '100%',\n padding: `${theme.spacing.xs} ${theme.spacing.sm}`,\n '&:hover': {\n backgroundColor: theme.colorScheme === 'dark' ? theme.colors.gray[7] : theme.colors.gray[1],\n },\n },\n}));\n\ninterface ThProps<T> {\n header: Header<T, unknown>;\n}\n\nconst SortingIcons = {\n asc: ArrowUpSize16Px,\n desc: ArrowDownSize16Px,\n none: DoubleArrowHeadVSize16Px,\n};\n\nconst SortingLabels = {\n asc: 'ascending',\n desc: 'descending',\n none: 'none',\n} as const;\n\nexport const Th = <T,>({header}: ThProps<T>) => {\n const columnSizing = {\n ...defaultColumnSizing,\n size: header.column.columnDef.size,\n minSize: header.column.columnDef.minSize,\n maxSize: header.column.columnDef.maxSize,\n };\n\n const {classes} = useStyles(columnSizing);\n\n if (header.isPlaceholder) {\n return null;\n }\n\n if (!header.column.getCanSort()) {\n return (\n <th className={classes.th}>\n <Text size=\"xs\" py=\"xs\" px=\"sm\" fw={500}>\n {flexRender(header.column.columnDef.header, header.getContext())}\n </Text>\n </th>\n );\n }\n\n const onSort = header.column.getToggleSortingHandler();\n const sortingOrder = header.column.getIsSorted() || 'none';\n const Icon = SortingIcons[sortingOrder];\n\n return (\n <th className={classes.th} aria-sort={SortingLabels[sortingOrder]}>\n <UnstyledButton onClick={onSort} className={classes.control}>\n <Group position=\"apart\" noWrap>\n <Text size=\"xs\" fw={500}>\n {flexRender(header.column.columnDef.header, header.getContext())}\n </Text>\n <Center>\n <Icon height={14} />\n </Center>\n </Group>\n </UnstyledButton>\n </th>\n );\n};\n"],"names":["ArrowDownSize16Px","ArrowUpSize16Px","DoubleArrowHeadVSize16Px","Center","Group","Text","UnstyledButton","createStyles","defaultColumnSizing","flexRender","useStyles","theme","columnSizing","th","fontWeight","padding","verticalAlign","whiteSpace","textAlign","color","colors","gray","backgroundColor","colorScheme","width","size","minWidth","minSize","maxWidth","maxSize","control","spacing","xs","sm","SortingIcons","asc","desc","none","SortingLabels","Th","header","column","columnDef","classes","isPlaceholder","getCanSort","className","py","px","fw","getContext","onSort","getToggleSortingHandler","sortingOrder","getIsSorted","Icon","aria-sort","onClick","position","noWrap","height"],"mappings":";;;AAAA,SAAQA,iBAAiB,EAAEC,eAAe,EAAEC,wBAAwB,QAAO,8BAA8B;AACzG,SAAQC,MAAM,EAAEC,KAAK,EAAEC,IAAI,EAAEC,cAAc,EAAEC,YAAY,QAAO,gBAAgB;AAChF,SAAgBC,mBAAmB,EAAEC,UAAU,QAAO,wBAAwB;AAE9E,IAAMC,YAAYH,aAAa,SAACI,OAAOC;WAAoE;QACvGC,IAAI;YACAC,YAAY;YACZC,SAAS;YACTC,eAAe;YACfC,YAAY;YACZC,WAAW;YACXC,OAAOR,MAAMS,MAAM,CAACC,IAAI,CAAC,EAAE;YAC3BC,iBAAiBX,MAAMY,WAAW,KAAK,SAASZ,MAAMS,MAAM,CAACC,IAAI,CAAC,EAAE,GAAGV,MAAMS,MAAM,CAACC,IAAI,CAAC,EAAE;YAC3FG,OAAOZ,aAAaa,IAAI;YACxBC,UAAUd,aAAae,OAAO;YAC9BC,UAAUhB,aAAaiB,OAAO;QAClC;QAEAC,SAAS;YACLX,OAAO;YACPF,YAAY;YACZH,YAAY;YACZU,OAAO;YACPT,SAAS,AAAC,GAAsBJ,OAApBA,MAAMoB,OAAO,CAACC,EAAE,EAAC,KAAoB,OAAjBrB,MAAMoB,OAAO,CAACE,EAAE;YAChD,WAAW;gBACPX,iBAAiBX,MAAMY,WAAW,KAAK,SAASZ,MAAMS,MAAM,CAACC,IAAI,CAAC,EAAE,GAAGV,MAAMS,MAAM,CAACC,IAAI,CAAC,EAAE;YAC/F;QACJ;IACJ;;AAMA,IAAMa,eAAe;IACjBC,KAAKlC;IACLmC,MAAMpC;IACNqC,MAAMnC;AACV;AAEA,IAAMoC,gBAAgB;IAClBH,KAAK;IACLC,MAAM;IACNC,MAAM;AACV;AAEA,OAAO,IAAME,KAAK;QAAMC,eAAAA;IACpB,IAAM5B,eAAe,wCACdJ;QACHiB,MAAMe,OAAOC,MAAM,CAACC,SAAS,CAACjB,IAAI;QAClCE,SAASa,OAAOC,MAAM,CAACC,SAAS,CAACf,OAAO;QACxCE,SAASW,OAAOC,MAAM,CAACC,SAAS,CAACb,OAAO;;IAG5C,IAAM,AAACc,UAAWjC,UAAUE,cAArB+B;IAEP,IAAIH,OAAOI,aAAa,EAAE;QACtB,OAAO;IACX;IAEA,IAAI,CAACJ,OAAOC,MAAM,CAACI,UAAU,IAAI;QAC7B,qBACI,KAAChC;YAAGiC,WAAWH,QAAQ9B,EAAE;sBACrB,cAAA,KAACR;gBAAKoB,MAAK;gBAAKsB,IAAG;gBAAKC,IAAG;gBAAKC,IAAI;0BAC/BxC,WAAW+B,OAAOC,MAAM,CAACC,SAAS,CAACF,MAAM,EAAEA,OAAOU,UAAU;;;IAI7E;IAEA,IAAMC,SAASX,OAAOC,MAAM,CAACW,uBAAuB;IACpD,IAAMC,eAAeb,OAAOC,MAAM,CAACa,WAAW,MAAM;IACpD,IAAMC,OAAOrB,YAAY,CAACmB,aAAa;IAEvC,qBACI,KAACxC;QAAGiC,WAAWH,QAAQ9B,EAAE;QAAE2C,aAAWlB,aAAa,CAACe,aAAa;kBAC7D,cAAA,KAAC/C;YAAemD,SAASN;YAAQL,WAAWH,QAAQb,OAAO;sBACvD,cAAA,MAAC1B;gBAAMsD,UAAS;gBAAQC,MAAM;;kCAC1B,KAACtD;wBAAKoB,MAAK;wBAAKwB,IAAI;kCACfxC,WAAW+B,OAAOC,MAAM,CAACC,SAAS,CAACF,MAAM,EAAEA,OAAOU,UAAU;;kCAEjE,KAAC/C;kCACG,cAAA,KAACoD;4BAAKK,QAAQ;;;;;;;AAMtC,EAAE"}
1
+ {"version":3,"sources":["../../../../src/components/table/Th.tsx"],"sourcesContent":["import {ArrowDownSize16Px, ArrowUpSize16Px, DoubleArrowHeadVSize16Px} from '@coveord/plasma-react-icons';\nimport {Center, Group, Text, UnstyledButton, createStyles} from '@mantine/core';\nimport {Header, defaultColumnSizing, flexRender} from '@tanstack/react-table';\n\nconst useStyles = createStyles((theme, columnSizing: {size: number; minSize: number; maxSize: number}) => ({\n th: {\n fontWeight: '400 !important' as any,\n padding: '0 !important',\n verticalAlign: 'middle',\n whiteSpace: 'nowrap',\n textAlign: 'left',\n color: theme.colors.gray[6],\n backgroundColor: theme.colorScheme === 'dark' ? theme.colors.gray[8] : theme.colors.gray[0],\n width: columnSizing.size ?? 'auto',\n minWidth: columnSizing.minSize,\n maxWidth: columnSizing.maxSize,\n },\n\n control: {\n color: 'inherit',\n whiteSpace: 'inherit',\n fontWeight: 'inherit',\n width: '100%',\n padding: `${theme.spacing.xs} ${theme.spacing.sm}`,\n '&:hover': {\n backgroundColor: theme.colorScheme === 'dark' ? theme.colors.gray[7] : theme.colors.gray[1],\n },\n },\n}));\n\ninterface ThProps<T> {\n header: Header<T, unknown>;\n}\n\nconst SortingIcons = {\n asc: ArrowUpSize16Px,\n desc: ArrowDownSize16Px,\n none: DoubleArrowHeadVSize16Px,\n};\n\nconst SortingLabels = {\n asc: 'ascending',\n desc: 'descending',\n none: 'none',\n} as const;\n\nexport const Th = <T,>({header}: ThProps<T>) => {\n const columnSizing = {\n ...defaultColumnSizing,\n size: header.column.columnDef.size,\n minSize: header.column.columnDef.minSize,\n maxSize: header.column.columnDef.maxSize,\n };\n\n const {classes} = useStyles(columnSizing);\n\n if (header.isPlaceholder) {\n return null;\n }\n\n if (!header.column.getCanSort()) {\n return (\n <th className={classes.th}>\n <Text size=\"xs\" py=\"xs\" px=\"sm\" fw={500}>\n {flexRender(header.column.columnDef.header, header.getContext())}\n </Text>\n </th>\n );\n }\n\n const onSort = header.column.getToggleSortingHandler();\n const sortingOrder = header.column.getIsSorted() || 'none';\n const Icon = SortingIcons[sortingOrder];\n\n return (\n <th className={classes.th} aria-sort={SortingLabels[sortingOrder]}>\n <UnstyledButton onClick={onSort} className={classes.control}>\n <Group position=\"apart\" noWrap>\n <Text size=\"xs\" fw={500}>\n {flexRender(header.column.columnDef.header, header.getContext())}\n </Text>\n <Center>\n <Icon height={14} />\n </Center>\n </Group>\n </UnstyledButton>\n </th>\n );\n};\n"],"names":["ArrowDownSize16Px","ArrowUpSize16Px","DoubleArrowHeadVSize16Px","Center","Group","Text","UnstyledButton","createStyles","defaultColumnSizing","flexRender","columnSizing","useStyles","theme","th","fontWeight","padding","verticalAlign","whiteSpace","textAlign","color","colors","gray","backgroundColor","colorScheme","width","size","minWidth","minSize","maxWidth","maxSize","control","spacing","xs","sm","SortingIcons","asc","desc","none","SortingLabels","Th","header","column","columnDef","classes","isPlaceholder","getCanSort","className","py","px","fw","getContext","onSort","getToggleSortingHandler","sortingOrder","getIsSorted","Icon","aria-sort","onClick","position","noWrap","height"],"mappings":";;;AAAA,SAAQA,iBAAiB,EAAEC,eAAe,EAAEC,wBAAwB,QAAO,8BAA8B;AACzG,SAAQC,MAAM,EAAEC,KAAK,EAAEC,IAAI,EAAEC,cAAc,EAAEC,YAAY,QAAO,gBAAgB;AAChF,SAAgBC,mBAAmB,EAAEC,UAAU,QAAO,wBAAwB;IAW/DC;AATf,IAAMC,YAAYJ,aAAa,SAACK,OAAOF;WAAoE;QACvGG,IAAI;YACAC,YAAY;YACZC,SAAS;YACTC,eAAe;YACfC,YAAY;YACZC,WAAW;YACXC,OAAOP,MAAMQ,MAAM,CAACC,IAAI,CAAC,EAAE;YAC3BC,iBAAiBV,MAAMW,WAAW,KAAK,SAASX,MAAMQ,MAAM,CAACC,IAAI,CAAC,EAAE,GAAGT,MAAMQ,MAAM,CAACC,IAAI,CAAC,EAAE;YAC3FG,OAAOd,CAAAA,qBAAAA,aAAae,IAAI,cAAjBf,gCAAAA,qBAAqB;YAC5BgB,UAAUhB,aAAaiB,OAAO;YAC9BC,UAAUlB,aAAamB,OAAO;QAClC;QAEAC,SAAS;YACLX,OAAO;YACPF,YAAY;YACZH,YAAY;YACZU,OAAO;YACPT,SAAS,AAAC,GAAsBH,OAApBA,MAAMmB,OAAO,CAACC,EAAE,EAAC,KAAoB,OAAjBpB,MAAMmB,OAAO,CAACE,EAAE;YAChD,WAAW;gBACPX,iBAAiBV,MAAMW,WAAW,KAAK,SAASX,MAAMQ,MAAM,CAACC,IAAI,CAAC,EAAE,GAAGT,MAAMQ,MAAM,CAACC,IAAI,CAAC,EAAE;YAC/F;QACJ;IACJ;;AAMA,IAAMa,eAAe;IACjBC,KAAKlC;IACLmC,MAAMpC;IACNqC,MAAMnC;AACV;AAEA,IAAMoC,gBAAgB;IAClBH,KAAK;IACLC,MAAM;IACNC,MAAM;AACV;AAEA,OAAO,IAAME,KAAK;QAAMC,eAAAA;IACpB,IAAM9B,eAAe,wCACdF;QACHiB,MAAMe,OAAOC,MAAM,CAACC,SAAS,CAACjB,IAAI;QAClCE,SAASa,OAAOC,MAAM,CAACC,SAAS,CAACf,OAAO;QACxCE,SAASW,OAAOC,MAAM,CAACC,SAAS,CAACb,OAAO;;IAG5C,IAAM,AAACc,UAAWhC,UAAUD,cAArBiC;IAEP,IAAIH,OAAOI,aAAa,EAAE;QACtB,OAAO;IACX;IAEA,IAAI,CAACJ,OAAOC,MAAM,CAACI,UAAU,IAAI;QAC7B,qBACI,KAAChC;YAAGiC,WAAWH,QAAQ9B,EAAE;sBACrB,cAAA,KAACR;gBAAKoB,MAAK;gBAAKsB,IAAG;gBAAKC,IAAG;gBAAKC,IAAI;0BAC/BxC,WAAW+B,OAAOC,MAAM,CAACC,SAAS,CAACF,MAAM,EAAEA,OAAOU,UAAU;;;IAI7E;IAEA,IAAMC,SAASX,OAAOC,MAAM,CAACW,uBAAuB;IACpD,IAAMC,eAAeb,OAAOC,MAAM,CAACa,WAAW,MAAM;IACpD,IAAMC,OAAOrB,YAAY,CAACmB,aAAa;IAEvC,qBACI,KAACxC;QAAGiC,WAAWH,QAAQ9B,EAAE;QAAE2C,aAAWlB,aAAa,CAACe,aAAa;kBAC7D,cAAA,KAAC/C;YAAemD,SAASN;YAAQL,WAAWH,QAAQb,OAAO;sBACvD,cAAA,MAAC1B;gBAAMsD,UAAS;gBAAQC,MAAM;;kCAC1B,KAACtD;wBAAKoB,MAAK;wBAAKwB,IAAI;kCACfxC,WAAW+B,OAAOC,MAAM,CAACC,SAAS,CAACF,MAAM,EAAEA,OAAOU,UAAU;;kCAEjE,KAAC/C;kCACG,cAAA,KAACoD;4BAAKK,QAAQ;;;;;;;AAMtC,EAAE"}
@@ -140,10 +140,11 @@ var RowLayoutBody = function(param) {
140
140
  row.getToggleSelectedHandler();
141
141
  }
142
142
  };
143
+ var _columnSizing_size;
143
144
  return /*#__PURE__*/ _jsx("td", {
144
145
  "data-testid": cell.id,
145
146
  style: {
146
- width: columnSizing.size,
147
+ width: (_columnSizing_size = columnSizing.size) !== null && _columnSizing_size !== void 0 ? _columnSizing_size : "auto",
147
148
  minWidth: columnSizing.minSize,
148
149
  maxWidth: columnSizing.maxSize
149
150
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/table/layouts/RowLayout.tsx"],"sourcesContent":["import {ListSize16Px} from '@coveord/plasma-react-icons';\nimport {Box, Collapse, createStyles, rem} from '@mantine/core';\nimport {flexRender} from '@tanstack/react-table';\nimport {defaultColumnSizing} from '@tanstack/table-core';\nimport {Fragment, type MouseEvent} from 'react';\nimport {TableLayout, TableLayoutProps} from '../Table.types';\nimport {TableCollapsibleColumn} from '../TableCollapsibleColumn';\nimport {useTable} from '../TableContext';\nimport {TableLoading} from '../TableLoading';\nimport {TableSelectableColumn} from '../TableSelectableColumn';\nimport {Th} from '../Th';\n\ninterface TableStylesParams {\n multiRowSelectionEnabled: boolean;\n disableRowSelection: boolean;\n}\n\nconst useStyles = createStyles<string, TableStylesParams>((theme, {multiRowSelectionEnabled, disableRowSelection}) => {\n const rowBackgroundColor =\n theme.colorScheme === 'dark' ? theme.fn.rgba(theme.colors[theme.primaryColor][7], 0.2) : theme.colors.gray[1];\n const border = `${rem(1)} solid ${theme.colorScheme === 'dark' ? theme.colors.dark[4] : theme.colors.gray[3]}`;\n return {\n headerColumns: {\n '& th:first-of-type > *': {\n paddingLeft: '40px',\n },\n\n '& input[type=checkbox]': {\n backgroundColor: disableRowSelection ? `${theme.colors.gray[2]}` : undefined,\n borderColor: disableRowSelection ? `${theme.colors.gray[3]}` : `${theme.colors.gray[4]}`,\n pointerEvents: disableRowSelection ? 'none' : 'auto',\n cursor: disableRowSelection ? 'not-allowed' : 'default',\n\n '& + svg': {\n color: disableRowSelection ? `${theme.colors.gray[5]}` : 'inherit',\n },\n },\n },\n\n rowSelected: {\n backgroundColor: multiRowSelectionEnabled ? undefined : rowBackgroundColor,\n },\n\n rowUnselectable: {\n '& input[type=checkbox]': {\n backgroundColor: `${theme.colors.gray[2]}`,\n borderColor: `${theme.colors.gray[3]}`,\n pointerEvents: 'none',\n cursor: 'not-allowed',\n\n '&:checked + svg': {\n color: `${theme.colors.gray[5]}`,\n },\n },\n },\n\n rowCollapsibleButtonCell: {\n textAlign: 'right',\n padding: `calc(${theme.spacing.xs}/2) ${theme.spacing.sm} !important`,\n },\n\n row: {\n '& td:first-of-type': {\n paddingLeft: '40px',\n },\n '&:hover': {\n backgroundColor: rowBackgroundColor,\n },\n },\n\n cell: {\n verticalAlign: 'middle',\n // We must use height instead of minHeight here, otherwise it doesn't apply\n height: '56px',\n padding: `${theme.spacing.xs} ${theme.spacing.sm}`,\n borderBottom: border,\n },\n\n collapsible: {\n backgroundColor: rowBackgroundColor,\n borderBottom: border,\n },\n };\n});\n\nconst RowLayoutHeader = <T,>({table}: TableLayoutProps<T>) => {\n const {multiRowSelectionEnabled, disableRowSelection} = useTable();\n const {classes} = useStyles({disableRowSelection, multiRowSelectionEnabled});\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}: TableLayoutProps<T>) => {\n const {multiRowSelectionEnabled, disableRowSelection} = useTable();\n const {classes, cx} = useStyles({disableRowSelection, multiRowSelectionEnabled});\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,\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","createStyles","rem","flexRender","defaultColumnSizing","Fragment","TableCollapsibleColumn","useTable","TableLoading","TableSelectableColumn","Th","useStyles","theme","multiRowSelectionEnabled","disableRowSelection","rowBackgroundColor","colorScheme","fn","rgba","colors","primaryColor","gray","border","dark","headerColumns","paddingLeft","backgroundColor","undefined","borderColor","pointerEvents","cursor","color","rowSelected","rowUnselectable","rowCollapsibleButtonCell","textAlign","padding","spacing","xs","sm","row","cell","verticalAlign","height","borderBottom","collapsible","RowLayoutHeader","table","classes","headers","getHeaderGroups","map","headerGroup","tr","className","columnHeader","header","id","RowLayoutBody","doubleClickAction","getExpandChildren","loading","keepSelection","cx","toggleCollapsible","el","children","length","querySelector","click","rows","getRowModel","rowChildren","original","isSelected","getIsSelected","shouldKeepSelection","onClick","event","currentTarget","toggleSelected","onDoubleClick","aria-selected","data-testid","getVisibleCells","columnSizing","size","column","columnDef","minSize","maxSize","onCollapsibleCellClick","stopPropagation","getToggleSelectedHandler","td","style","width","minWidth","maxWidth","visible","getContext","colSpan","getAllColumns","in","getIsExpanded","px","py","RowLayout","name","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, createStyles, rem} from '@mantine/core';\nimport {flexRender} from '@tanstack/react-table';\nimport {defaultColumnSizing} from '@tanstack/table-core';\nimport {Fragment, type MouseEvent} from 'react';\nimport {TableLayout, TableLayoutProps} from '../Table.types';\nimport {TableCollapsibleColumn} from '../TableCollapsibleColumn';\nimport {useTable} from '../TableContext';\nimport {TableLoading} from '../TableLoading';\nimport {TableSelectableColumn} from '../TableSelectableColumn';\nimport {Th} from '../Th';\n\ninterface TableStylesParams {\n multiRowSelectionEnabled: boolean;\n disableRowSelection: boolean;\n}\n\nconst useStyles = createStyles<string, TableStylesParams>((theme, {multiRowSelectionEnabled, disableRowSelection}) => {\n const rowBackgroundColor =\n theme.colorScheme === 'dark' ? theme.fn.rgba(theme.colors[theme.primaryColor][7], 0.2) : theme.colors.gray[1];\n const border = `${rem(1)} solid ${theme.colorScheme === 'dark' ? theme.colors.dark[4] : theme.colors.gray[3]}`;\n return {\n headerColumns: {\n '& th:first-of-type > *': {\n paddingLeft: '40px',\n },\n\n '& input[type=checkbox]': {\n backgroundColor: disableRowSelection ? `${theme.colors.gray[2]}` : undefined,\n borderColor: disableRowSelection ? `${theme.colors.gray[3]}` : `${theme.colors.gray[4]}`,\n pointerEvents: disableRowSelection ? 'none' : 'auto',\n cursor: disableRowSelection ? 'not-allowed' : 'default',\n\n '& + svg': {\n color: disableRowSelection ? `${theme.colors.gray[5]}` : 'inherit',\n },\n },\n },\n\n rowSelected: {\n backgroundColor: multiRowSelectionEnabled ? undefined : rowBackgroundColor,\n },\n\n rowUnselectable: {\n '& input[type=checkbox]': {\n backgroundColor: `${theme.colors.gray[2]}`,\n borderColor: `${theme.colors.gray[3]}`,\n pointerEvents: 'none',\n cursor: 'not-allowed',\n\n '&:checked + svg': {\n color: `${theme.colors.gray[5]}`,\n },\n },\n },\n\n rowCollapsibleButtonCell: {\n textAlign: 'right',\n padding: `calc(${theme.spacing.xs}/2) ${theme.spacing.sm} !important`,\n },\n\n row: {\n '& td:first-of-type': {\n paddingLeft: '40px',\n },\n '&:hover': {\n backgroundColor: rowBackgroundColor,\n },\n },\n\n cell: {\n verticalAlign: 'middle',\n // We must use height instead of minHeight here, otherwise it doesn't apply\n height: '56px',\n padding: `${theme.spacing.xs} ${theme.spacing.sm}`,\n borderBottom: border,\n },\n\n collapsible: {\n backgroundColor: rowBackgroundColor,\n borderBottom: border,\n },\n };\n});\n\nconst RowLayoutHeader = <T,>({table}: TableLayoutProps<T>) => {\n const {multiRowSelectionEnabled, disableRowSelection} = useTable();\n const {classes} = useStyles({disableRowSelection, multiRowSelectionEnabled});\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}: TableLayoutProps<T>) => {\n const {multiRowSelectionEnabled, disableRowSelection} = useTable();\n const {classes, cx} = useStyles({disableRowSelection, multiRowSelectionEnabled});\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","createStyles","rem","flexRender","defaultColumnSizing","Fragment","TableCollapsibleColumn","useTable","TableLoading","TableSelectableColumn","Th","useStyles","theme","multiRowSelectionEnabled","disableRowSelection","rowBackgroundColor","colorScheme","fn","rgba","colors","primaryColor","gray","border","dark","headerColumns","paddingLeft","backgroundColor","undefined","borderColor","pointerEvents","cursor","color","rowSelected","rowUnselectable","rowCollapsibleButtonCell","textAlign","padding","spacing","xs","sm","row","cell","verticalAlign","height","borderBottom","collapsible","RowLayoutHeader","table","classes","headers","getHeaderGroups","map","headerGroup","tr","className","columnHeader","header","id","RowLayoutBody","doubleClickAction","getExpandChildren","loading","keepSelection","cx","toggleCollapsible","el","children","length","querySelector","click","rows","getRowModel","rowChildren","original","isSelected","getIsSelected","shouldKeepSelection","onClick","event","currentTarget","toggleSelected","onDoubleClick","aria-selected","data-testid","getVisibleCells","columnSizing","size","column","columnDef","minSize","maxSize","onCollapsibleCellClick","stopPropagation","getToggleSelectedHandler","td","style","width","minWidth","maxWidth","visible","getContext","colSpan","getAllColumns","in","getIsExpanded","px","py","RowLayout","name","icon","Header","Body"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coveord/plasma-mantine",
3
- "version": "52.12.0",
3
+ "version": "52.12.1",
4
4
  "description": "A Plasma flavoured Mantine theme",
5
5
  "keywords": [
6
6
  "plasma",
@@ -41,8 +41,8 @@
41
41
  "lodash.debounce": "4.0.8",
42
42
  "lodash.defaultsdeep": "4.6.1",
43
43
  "monaco-editor": "0.40.0",
44
- "@coveord/plasma-react-icons": "52.12.0",
45
- "@coveord/plasma-tokens": "52.12.0"
44
+ "@coveord/plasma-react-icons": "52.12.1",
45
+ "@coveord/plasma-tokens": "52.12.1"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@emotion/react": "11.11.1",
@@ -54,7 +54,7 @@
54
54
  "@mantine/modals": "6.0.17",
55
55
  "@mantine/notifications": "6.0.17",
56
56
  "@swc/cli": "0.1.62",
57
- "@swc/core": "1.3.70",
57
+ "@swc/core": "1.3.71",
58
58
  "@swc/jest": "0.2.27",
59
59
  "@testing-library/jest-dom": "5.17.0",
60
60
  "@testing-library/react": "14.0.0",
@@ -73,7 +73,7 @@
73
73
  "identity-obj-proxy": "3.0.0",
74
74
  "jest": "29.6.1",
75
75
  "jest-environment-jsdom": "29.6.1",
76
- "jest-junit": "13.2.0",
76
+ "jest-junit": "16.0.0",
77
77
  "npm-run-all": "4.1.5",
78
78
  "publint": "0.1.16",
79
79
  "react": "18.2.0",
@@ -1,7 +1,14 @@
1
1
  import {Box, Center, Loader} from '@mantine/core';
2
2
  import {useForm} from '@mantine/form';
3
3
  import {useDidUpdate} from '@mantine/hooks';
4
- import {ColumnDef, getCoreRowModel, Row, TableState as TanstackTableState, useReactTable} from '@tanstack/react-table';
4
+ import {
5
+ ColumnDef,
6
+ defaultColumnSizing,
7
+ getCoreRowModel,
8
+ Row,
9
+ TableState as TanstackTableState,
10
+ useReactTable,
11
+ } from '@tanstack/react-table';
5
12
  import debounce from 'lodash.debounce';
6
13
  import defaultsDeep from 'lodash.defaultsdeep';
7
14
  import {Children, cloneElement, Dispatch, ReactElement, useCallback, useEffect, useState} from 'react';
@@ -73,6 +80,11 @@ export const Table: TableType = <T,>({
73
80
  getRowId,
74
81
  getRowCanExpand: (row: Row<T>) => !!getExpandChildren?.(row.original) ?? false,
75
82
  enableRowSelection: !loading,
83
+ defaultColumn: {
84
+ size: undefined,
85
+ minSize: defaultColumnSizing.minSize,
86
+ maxSize: defaultColumnSizing.maxSize,
87
+ },
76
88
  ...options,
77
89
  });
78
90
 
@@ -11,7 +11,7 @@ const useStyles = createStyles((theme, columnSizing: {size: number; minSize: num
11
11
  textAlign: 'left',
12
12
  color: theme.colors.gray[6],
13
13
  backgroundColor: theme.colorScheme === 'dark' ? theme.colors.gray[8] : theme.colors.gray[0],
14
- width: columnSizing.size,
14
+ width: columnSizing.size ?? 'auto',
15
15
  minWidth: columnSizing.minSize,
16
16
  maxWidth: columnSizing.maxSize,
17
17
  },
@@ -155,7 +155,7 @@ const RowLayoutBody = <T,>({
155
155
  key={cell.id}
156
156
  data-testid={cell.id}
157
157
  style={{
158
- width: columnSizing.size,
158
+ width: columnSizing.size ?? 'auto',
159
159
  minWidth: columnSizing.minSize,
160
160
  maxWidth: columnSizing.maxSize,
161
161
  }}