@coveord/plasma-mantine 52.11.1 → 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.
Files changed (59) hide show
  1. package/.turbo/turbo-build.log +3 -3
  2. package/.turbo/turbo-test.log +32 -32
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/cjs/components/table/Table.d.ts.map +1 -1
  5. package/dist/cjs/components/table/Table.js +6 -1
  6. package/dist/cjs/components/table/Table.js.map +1 -1
  7. package/dist/cjs/components/table/Table.types.d.ts +4 -0
  8. package/dist/cjs/components/table/Table.types.d.ts.map +1 -1
  9. package/dist/cjs/components/table/TablePagination.d.ts +6 -0
  10. package/dist/cjs/components/table/TablePagination.d.ts.map +1 -1
  11. package/dist/cjs/components/table/TablePagination.js +3 -1
  12. package/dist/cjs/components/table/TablePagination.js.map +1 -1
  13. package/dist/cjs/components/table/TablePerPage.d.ts +6 -0
  14. package/dist/cjs/components/table/TablePerPage.d.ts.map +1 -1
  15. package/dist/cjs/components/table/TablePerPage.js +6 -4
  16. package/dist/cjs/components/table/TablePerPage.js.map +1 -1
  17. package/dist/cjs/components/table/Th.d.ts.map +1 -1
  18. package/dist/cjs/components/table/Th.js +13 -5
  19. package/dist/cjs/components/table/Th.js.map +1 -1
  20. package/dist/cjs/components/table/layouts/RowLayout.d.ts.map +1 -1
  21. package/dist/cjs/components/table/layouts/RowLayout.js +14 -5
  22. package/dist/cjs/components/table/layouts/RowLayout.js.map +1 -1
  23. package/dist/cjs/components/table/useRowSelection.d.ts.map +1 -1
  24. package/dist/cjs/components/table/useRowSelection.js +8 -2
  25. package/dist/cjs/components/table/useRowSelection.js.map +1 -1
  26. package/dist/esm/components/table/Table.d.ts.map +1 -1
  27. package/dist/esm/components/table/Table.js +7 -2
  28. package/dist/esm/components/table/Table.js.map +1 -1
  29. package/dist/esm/components/table/Table.types.d.ts +4 -0
  30. package/dist/esm/components/table/Table.types.d.ts.map +1 -1
  31. package/dist/esm/components/table/Table.types.js.map +1 -1
  32. package/dist/esm/components/table/TablePagination.d.ts +6 -0
  33. package/dist/esm/components/table/TablePagination.d.ts.map +1 -1
  34. package/dist/esm/components/table/TablePagination.js +3 -1
  35. package/dist/esm/components/table/TablePagination.js.map +1 -1
  36. package/dist/esm/components/table/TablePerPage.d.ts +6 -0
  37. package/dist/esm/components/table/TablePerPage.d.ts.map +1 -1
  38. package/dist/esm/components/table/TablePerPage.js +6 -4
  39. package/dist/esm/components/table/TablePerPage.js.map +1 -1
  40. package/dist/esm/components/table/Th.d.ts.map +1 -1
  41. package/dist/esm/components/table/Th.js +13 -5
  42. package/dist/esm/components/table/Th.js.map +1 -1
  43. package/dist/esm/components/table/layouts/RowLayout.d.ts.map +1 -1
  44. package/dist/esm/components/table/layouts/RowLayout.js +14 -5
  45. package/dist/esm/components/table/layouts/RowLayout.js.map +1 -1
  46. package/dist/esm/components/table/useRowSelection.d.ts.map +1 -1
  47. package/dist/esm/components/table/useRowSelection.js +9 -3
  48. package/dist/esm/components/table/useRowSelection.js.map +1 -1
  49. package/package.json +28 -28
  50. package/src/components/table/Table.tsx +13 -1
  51. package/src/components/table/Table.types.ts +4 -0
  52. package/src/components/table/TablePagination.tsx +8 -1
  53. package/src/components/table/TablePerPage.tsx +11 -3
  54. package/src/components/table/Th.tsx +12 -5
  55. package/src/components/table/__tests__/TablePagination.spec.tsx +33 -0
  56. package/src/components/table/__tests__/TablePerPage.spec.tsx +39 -3
  57. package/src/components/table/layouts/RowLayout.tsx +21 -5
  58. package/src/components/table/layouts/__tests__/RowLayout.spec.tsx +90 -0
  59. package/src/components/table/useRowSelection.ts +7 -3
@@ -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":";;;;+BA2BaA;;;eAAAA;;;;;;;;;;oBA3BqB;oBACZ;qBACK;0BACoE;uEAC1E;2EACI;qBACsE;4BAEpE;oEACL;4BAEK;sCACgC;6BAC/B;4BACD;oCACQ;2BACT;2BACA;2BACA;gCACK;4BACJ;+BACG;4BACH;8BACE;qCACO;+BACN;AAEvB,IAAMA,QAAmB;QAC5BC,aAAAA,MACAC,iBAAAA,UACAC,uBAAAA,gBACAC,0BAAAA,+CACAC,cAAAA,gDAAe,CAAC,yBAChBC,gBAAAA,gCACAC,SAAAA,sCAAU;QAACC,0BAAY,CAACC,IAAI;KAAC,mBAC7BC,gBAAAA,SACAC,iBAAAA,UACAC,iBAAAA,iCACAC,SAAAA,sCAAU,wBACVC,0BAAAA,mBACAC,iCAAAA,0BACAC,4BAAAA,qBACAC,6BAAAA,sBACAC,4BAAAA,4CACAC,SAAAA,sCAAU,CAAC;QAWSd,eACDA,gBACHA,gBAaMc,UAqBNC,cACVA,wBACAA;IA/CN,IAAMC,oBAAoBC,eAAQ,CAACC,OAAO,CAACX;IAC3C,IAAMY,SAASH,kBAAkBI,IAAI,CAAC,SAACC;eAAUA,MAAMC,IAAI,KAAKC,wBAAW;;IAC3E,IAAMC,SAASR,kBAAkBI,IAAI,CAAC,SAACC;eAAUA,MAAMC,IAAI,KAAKG,wBAAW;;IAC3E,IAAMC,WAAWV,kBAAkBI,IAAI,CAAC,SAACC;eAAUA,MAAMC,IAAI,KAAKK,4BAAa;;IAC/E,IAAMC,cAAcZ,kBAAkBI,IAAI,CAAC,SAACC;eAAUA,MAAMC,IAAI,KAAKO,kCAAgB;;IAErF,IAAOC,aAAqD9B,aAArD8B,YAAYC,YAAyC/B,aAAzC+B,WAAcC,uDAA2BhC;QAArD8B;QAAYC;;QAGC/B,0BACDA,yBACHA;IAJhB,IAAMe,OAAOkB,IAAAA,aAAO,EAAgB;QAChCC,eAAe;YACXJ,YAAY9B,CAAAA,4BAAAA,gBAAAA,0BAAAA,oCAAAA,cAAc8B,UAAU,cAAxB9B,sCAAAA,2BAA4B,CAAC;YACzC+B,WAAW/B,CAAAA,2BAAAA,iBAAAA,0BAAAA,qCAAAA,eAAc+B,SAAS,cAAvB/B,qCAAAA,0BAA2B;gBAAC;gBAAM;aAAK;YAClDmC,QAAQnC,CAAAA,wBAAAA,iBAAAA,0BAAAA,qCAAAA,eAAcmC,MAAM,cAApBnC,kCAAAA,uBAAwBE,OAAO,CAAC,EAAE,CAACkC,IAAI;QACnD;IACJ;IACA,IAAM,AAACC,UAAWC,IAAAA,oBAAS,IAApBD;QAa+B;IAXtC,IAAME,QAAQC,IAAAA,yBAAa,EAAC;QACxBxC,cAAcyC,IAAAA,2BAAY,EAACT,yBAAyB;YAChDU,YAAY;gBAACC,UAAUC,0BAAY,CAACC,YAAY;YAAA;YAChDC,cAAc;QAClB;QACAlD,MAAAA;QACAK,SAASS,2BAA2B;YAACqC,4CAAqB;SAAiB,CAACC,MAAM,CAAC/C,WAAWA;QAC9FgD,iBAAiBA,IAAAA,2BAAe;QAChCC,kBAAkBpC,EAAAA,WAAAA,qBAAAA,+BAAAA,SAASqC,qBAAqB,MAAKC;QACrDC,yBAAyB,CAAC,CAAC3C;QAC3Bb,UAAAA;QACAyD,iBAAiB,SAACC;gBAAkBxD;mBAAF,CAAA,OAAA,CAAC,GAACA,qBAAAA,+BAAAA,yCAAAA,mBAAoBwD,IAAIC,QAAQ,gBAAlC,kBAAA,OAAuC;;QACzEC,oBAAoB,CAACjD;OAClBM;IAGP,IAA0B4C,+BAAAA,IAAAA,eAAQ,EAAgBnB,MAAMvC,YAAY,OAA7D2D,QAAmBD,cAAZE,WAAYF;IAC1BnB,MAAMsB,UAAU,CAAC,SAACC;eAAU,4CACrBA;YACHH,OAAOA;YACPI,eAAeH;;;IAEnB,IAA2EI,oBAAAA,IAAAA,gCAAe,EAACzB,OAAO;QAC9F7B,0BAAAA;QACAE,sBAAAA;QACAC,qBAAAA;IACJ,IAJOoD,iBAAoED,kBAApEC,gBAAgBC,iBAAoDF,kBAApDE,gBAAgBC,kBAAoCH,kBAApCG,iBAAiBC,kBAAmBJ,kBAAnBI;QAOxCrD;IAFhB,IAAMsD,aACF,CAAC,CAACV,MAAMb,YAAY,IACpBwB,OAAOC,IAAI,CAACxD,CAAAA,2BAAAA,eAAAA,KAAKyD,MAAM,cAAXzD,mCAAAA,aAAae,UAAU,cAAvBf,qCAAAA,0BAA2B,CAAC,GAAG0D,IAAI,CAAC,SAACC;eAAc,CAAC,CAAC3D,KAAKyD,MAAM,CAAC1C,UAAU,CAAC4C,UAAU;UAClG,CAAC,GAAC3D,yBAAAA,KAAKyD,MAAM,CAACzC,SAAS,cAArBhB,6CAAAA,sBAAuB,CAAC,EAAE,KAC5B,CAAC,GAACA,0BAAAA,KAAKyD,MAAM,CAACzC,SAAS,cAArBhB,8CAAAA,uBAAuB,CAAC,EAAE;IAEhC,IAAM4D,gBAAgBC,IAAAA,uBAAQ,EAAC;YAAMtE;gBAAAA,YAAAA,sBAAAA,gCAAAA,UAAW,qBAAIqD,OAAU5C,KAAKyD,MAAM;OAAI;IAE7EK,IAAAA,gBAAS,EAAC;YACNxE;SAAAA,WAAAA,qBAAAA,+BAAAA,SAAU,qBAAIsD,OAAU5C,KAAKyD,MAAM;QACnC,OAAO;YACHG,cAAcG,MAAM;QACxB;IACJ,GAAG,EAAE;IAELC,IAAAA,mBAAY,EAAC;QACTJ;QACA,IAAI,CAACjE,0BAA0B;YAC3BuD;QACJ;IACJ,GAAG;QACCN,MAAMb,YAAY;QAClBa,MAAMjB,UAAU;QAChBiB,MAAMqB,OAAO;QACbC,KAAKC,SAAS,CAACnE,KAAKyD,MAAM,CAACzC,SAAS;QACpCkD,KAAKC,SAAS,CAACnE,KAAKyD,MAAM,CAAC1C,UAAU;KACxC;IAED,IAAMqD,eAAeC,IAAAA,kBAAW,EAAC;YACIpF;QAAjCe,KAAKsE,aAAa,CAAC,cAAcrF,CAAAA,2BAAAA,aAAa8B,UAAU,cAAvB9B,sCAAAA,2BAA2B,CAAC;QAC7D4D,SAAS,SAAC0B;mBAAe,4CAAIA;gBAAWxC,cAAc;;;IAC1D,GAAG,EAAE;IAEL,IAAI,CAAClD,MAAM;QACP,qBACI,qBAAC2F,YAAM;YAACC,IAAI;gBAACC,UAAU;YAAC;sBACpB,cAAA,qBAACC,YAAM;;IAGnB;IAEA,IAAMC,SAASzF,QAAQkB,IAAI,CAAC;YAAEgB,aAAAA;eAAUA,SAASrB,KAAKyD,MAAM,CAACrC,MAAM;;IACnE,IAAMyD,UAAUrD,MAAMsD,WAAW,GAAGC,IAAI,CAACC,MAAM,GAAG;QA+DKnE;IA7DvD,qBACI,qBAACoE,SAAG;QAACC,KAAK7B;kBACN,cAAA,sBAAC8B,0BAAY,CAACC,QAAQ;YAClBC,OAAO;gBACH9F,UAAUqE;gBACVhB,OAAAA;gBACAU,YAAAA;gBACAT,UAAAA;gBACAuB,cAAAA;gBACAjB,gBAAAA;gBACAC,iBAAAA;gBACAF,gBAAAA;gBACAlD,MAAAA;gBACAsF,cAAcjC;gBACd1D,0BAAAA;gBACA4F,cAAc/D,MAAM+D,YAAY;gBAChC3F,qBAAAA;gBACAT,SAAAA;YACJ;;gBAECwB;gBACA,CAACkE,WAAW,CAACvB,cAAc,CAAC7D,UACzBV,+BAEA;;sCACI,sBAACkG,SAAG;4BAACO,WAAU;4BAAQC,WAAWnE,QAAQE,KAAK;4BAAEkE,IAAG;;8CAChD,sBAACC;oCAAMF,WAAWnE,QAAQlB,MAAM;;wCAC3B,CAAC,CAACA,uBACC,qBAACwF;sDACG,cAAA,qBAACC;gDAAGC,OAAO;oDAACC,SAAS;gDAAC;gDAAGC,SAASxE,MAAMyE,aAAa,GAAGjB,MAAM;0DACzD5E;;6CAGT;sDACJ,qBAACwE,OAAOsB,MAAM;4CACV1E,OAAOA;4CACP9B,mBAAmBA;4CACnBV,mBAAmBA;4CACnBS,SAASA;;;;8CAGjB,qBAAC0G;8CACItB,wBACG,qBAACD,OAAOwB,IAAI;wCACR5E,OAAOA;wCACP9B,mBAAmBA;wCACnBV,mBAAmBA;wCACnBS,SAASA;uDAGb,qBAACmG;kDACG,cAAA,qBAACS;4CAAGL,SAASxE,MAAMyE,aAAa,GAAGjB,MAAM;sDACrC,cAAA,qBAACsB,0BAAY;gDAACC,SAAS9G;0DAAUV;;;;;;;wBAMpD0B;wBACAI,4BACK2F,IAAAA,mBAAY,EAAC3F,aAAa;4BACtB4F,cAAc;gCAAC5H;6BAAgD,CAAjD,OAAO,uBAAIgC,CAAAA,kCAAAA,YAAY6F,KAAK,CAACD,YAAY,cAA9B5F,6CAAAA,kCAAkC,EAAE;wBACjE,KACA;;;;;;AAM9B;AAEAjC,MAAM+H,OAAO,GAAGC,0BAAY;AAC5BhI,MAAMiI,MAAM,GAAGC,wBAAW;AAC1BlI,MAAMmI,MAAM,GAAGrG,wBAAW;AAC1B9B,MAAMsH,MAAM,GAAG1F,wBAAW;AAC1B5B,MAAMoI,WAAW,GAAGlG,kCAAgB;AACpClC,MAAMqI,UAAU,GAAGC,gCAAe;AAClCtI,MAAMuI,SAAS,GAAGC,8BAAc;AAChCxI,MAAMyI,OAAO,GAAGxF,0BAAY;AAC5BjD,MAAMuI,SAAS,GAAGC,8BAAc;AAChCxI,MAAM0I,iBAAiB,GAAGC,8CAAsB;AAChD3I,MAAM4I,eAAe,GAAGC,4CAAoB;AAC5C7I,MAAM8I,eAAe,GAAGC,0CAAoB;AAC5C/I,MAAMgJ,QAAQ,GAAGhH,4BAAa;AAC9BhC,MAAMiJ,OAAO,GAAGvB,0BAAY;AAC5B1H,MAAMkJ,OAAO,GAAG1I,0BAAY"}
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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"}
@@ -61,6 +61,10 @@ export interface TableLayoutProps<T = unknown> {
61
61
  * @param datum the row for which the children should be generated.
62
62
  */
63
63
  getExpandChildren?: (datum: T) => ReactNode;
64
+ /**
65
+ * Whether clicking on a selected row will deselect the row or not.
66
+ */
67
+ keepSelection?: boolean;
64
68
  }
65
69
  export type TableFormType = {
66
70
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Table.types.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Table.types.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.types.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,12 @@ interface TablePaginationProps {
4
4
  * The total number of page. Use null only if your table is paginated client side
5
5
  */
6
6
  totalPages: number | null;
7
+ /**
8
+ * The callback if the current page is changed.
9
+ *
10
+ * @param pageIndex The index of the updated page.
11
+ */
12
+ onPageChange?: (pageIndex: number) => void;
7
13
  }
8
14
  export declare const TablePagination: FunctionComponent<TablePaginationProps>;
9
15
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"TablePagination.d.ts","sourceRoot":"","sources":["../../../../src/components/table/TablePagination.tsx"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,OAAO,CAAC;AAIxC,UAAU,oBAAoB;IAC1B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,oBAAoB,CAmCnE,CAAC"}
1
+ {"version":3,"file":"TablePagination.d.ts","sourceRoot":"","sources":["../../../../src/components/table/TablePagination.tsx"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,OAAO,CAAC;AAIxC,UAAU,oBAAoB;IAC1B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAED,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,oBAAoB,CAoCnE,CAAC"}
@@ -14,9 +14,11 @@ var _jsxruntime = require("react/jsx-runtime");
14
14
  var _core = require("@mantine/core");
15
15
  var _TableContext = require("./TableContext");
16
16
  var TablePagination = function(param) {
17
- var totalPages = param.totalPages;
17
+ var totalPages = param.totalPages, onPageChange = param.onPageChange;
18
18
  var _useTable = (0, _TableContext.useTable)(), state = _useTable.state, setState = _useTable.setState, containerRef = _useTable.containerRef, getPageCount = _useTable.getPageCount;
19
19
  var updatePage = function(newPage) {
20
+ var _onPageChange;
21
+ (_onPageChange = onPageChange) === null || _onPageChange === void 0 ? void 0 : _onPageChange(newPage - 1);
20
22
  setState(function(prevState) {
21
23
  return _object_spread_props._(_object_spread._({}, prevState), {
22
24
  pagination: _object_spread_props._(_object_spread._({}, prevState.pagination), {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/TablePagination.tsx"],"sourcesContent":["import {Pagination} from '@mantine/core';\nimport {FunctionComponent} from 'react';\n\nimport {useTable} from './TableContext';\n\ninterface TablePaginationProps {\n /**\n * The total number of page. Use null only if your table is paginated client side\n */\n totalPages: number | null;\n}\n\nexport const TablePagination: FunctionComponent<TablePaginationProps> = ({totalPages}) => {\n const {state, setState, containerRef, getPageCount} = useTable();\n const updatePage = (newPage: number) => {\n setState((prevState) => ({\n ...prevState,\n pagination: {...prevState.pagination, pageIndex: newPage - 1},\n }));\n containerRef.current.scrollIntoView({behavior: 'smooth'});\n };\n\n const total = totalPages === null ? getPageCount() : totalPages;\n\n return (\n <Pagination\n value={state.pagination.pageIndex + 1}\n onChange={updatePage}\n total={total}\n boundaries={0}\n size=\"md\"\n spacing=\"xs\"\n getControlProps={(control) => {\n switch (control) {\n case 'previous':\n return {\n component: 'button',\n 'aria-label': 'previous page',\n };\n case 'next':\n return {component: 'button', 'aria-label': 'next page'};\n default:\n return {};\n }\n }}\n />\n );\n};\n"],"names":["TablePagination","totalPages","useTable","state","setState","containerRef","getPageCount","updatePage","newPage","prevState","pagination","pageIndex","current","scrollIntoView","behavior","total","Pagination","value","onChange","boundaries","size","spacing","getControlProps","control","component"],"mappings":";;;;+BAYaA;;;eAAAA;;;;;;oBAZY;4BAGF;AAShB,IAAMA,kBAA2D;QAAEC,mBAAAA;IACtE,IAAsDC,YAAAA,IAAAA,sBAAQ,KAAvDC,QAA+CD,UAA/CC,OAAOC,WAAwCF,UAAxCE,UAAUC,eAA8BH,UAA9BG,cAAcC,eAAgBJ,UAAhBI;IACtC,IAAMC,aAAa,SAACC;QAChBJ,SAAS,SAACK;mBAAe,4CAClBA;gBACHC,YAAY,4CAAID,UAAUC,UAAU;oBAAEC,WAAWH,UAAU;;;;QAE/DH,aAAaO,OAAO,CAACC,cAAc,CAAC;YAACC,UAAU;QAAQ;IAC3D;IAEA,IAAMC,QAAQd,eAAe,OAAOK,iBAAiBL;IAErD,qBACI,qBAACe,gBAAU;QACPC,OAAOd,MAAMO,UAAU,CAACC,SAAS,GAAG;QACpCO,UAAUX;QACVQ,OAAOA;QACPI,YAAY;QACZC,MAAK;QACLC,SAAQ;QACRC,iBAAiB,SAACC;YACd,OAAQA;gBACJ,KAAK;oBACD,OAAO;wBACHC,WAAW;wBACX,cAAc;oBAClB;gBACJ,KAAK;oBACD,OAAO;wBAACA,WAAW;wBAAU,cAAc;oBAAW;gBAC1D;oBACI,OAAO,CAAC;YAChB;QACJ;;AAGZ"}
1
+ {"version":3,"sources":["../../../../src/components/table/TablePagination.tsx"],"sourcesContent":["import {Pagination} from '@mantine/core';\nimport {FunctionComponent} from 'react';\n\nimport {useTable} from './TableContext';\n\ninterface TablePaginationProps {\n /**\n * The total number of page. Use null only if your table is paginated client side\n */\n totalPages: number | null;\n /**\n * The callback if the current page is changed.\n *\n * @param pageIndex The index of the updated page.\n */\n onPageChange?: (pageIndex: number) => void;\n}\n\nexport const TablePagination: FunctionComponent<TablePaginationProps> = ({totalPages, onPageChange}) => {\n const {state, setState, containerRef, getPageCount} = useTable();\n const updatePage = (newPage: number) => {\n onPageChange?.(newPage - 1);\n setState((prevState) => ({\n ...prevState,\n pagination: {...prevState.pagination, pageIndex: newPage - 1},\n }));\n containerRef.current.scrollIntoView({behavior: 'smooth'});\n };\n\n const total = totalPages === null ? getPageCount() : totalPages;\n\n return (\n <Pagination\n value={state.pagination.pageIndex + 1}\n onChange={updatePage}\n total={total}\n boundaries={0}\n size=\"md\"\n spacing=\"xs\"\n getControlProps={(control) => {\n switch (control) {\n case 'previous':\n return {\n component: 'button',\n 'aria-label': 'previous page',\n };\n case 'next':\n return {component: 'button', 'aria-label': 'next page'};\n default:\n return {};\n }\n }}\n />\n );\n};\n"],"names":["TablePagination","totalPages","onPageChange","useTable","state","setState","containerRef","getPageCount","updatePage","newPage","prevState","pagination","pageIndex","current","scrollIntoView","behavior","total","Pagination","value","onChange","boundaries","size","spacing","getControlProps","control","component"],"mappings":";;;;+BAkBaA;;;eAAAA;;;;;;oBAlBY;4BAGF;AAehB,IAAMA,kBAA2D;QAAEC,mBAAAA,YAAYC,qBAAAA;IAClF,IAAsDC,YAAAA,IAAAA,sBAAQ,KAAvDC,QAA+CD,UAA/CC,OAAOC,WAAwCF,UAAxCE,UAAUC,eAA8BH,UAA9BG,cAAcC,eAAgBJ,UAAhBI;IACtC,IAAMC,aAAa,SAACC;YAChBP;SAAAA,gBAAAA,0BAAAA,oCAAAA,cAAeO,UAAU;QACzBJ,SAAS,SAACK;mBAAe,4CAClBA;gBACHC,YAAY,4CAAID,UAAUC,UAAU;oBAAEC,WAAWH,UAAU;;;;QAE/DH,aAAaO,OAAO,CAACC,cAAc,CAAC;YAACC,UAAU;QAAQ;IAC3D;IAEA,IAAMC,QAAQf,eAAe,OAAOM,iBAAiBN;IAErD,qBACI,qBAACgB,gBAAU;QACPC,OAAOd,MAAMO,UAAU,CAACC,SAAS,GAAG;QACpCO,UAAUX;QACVQ,OAAOA;QACPI,YAAY;QACZC,MAAK;QACLC,SAAQ;QACRC,iBAAiB,SAACC;YACd,OAAQA;gBACJ,KAAK;oBACD,OAAO;wBACHC,WAAW;wBACX,cAAc;oBAClB;gBACJ,KAAK;oBACD,OAAO;wBAACA,WAAW;wBAAU,cAAc;oBAAW;gBAC1D;oBACI,OAAO,CAAC;YAChB;QACJ;;AAGZ"}
@@ -12,6 +12,12 @@ interface TablePerPageProps {
12
12
  * @default [25, 50, 100]
13
13
  */
14
14
  values?: number[];
15
+ /**
16
+ * The callback if the entries per page is changed.
17
+ *
18
+ * @param perPage the new number of entries per page
19
+ */
20
+ onPerPageChange?: (perPage: number) => void;
15
21
  }
16
22
  export declare const TablePerPage: FunctionComponent<TablePerPageProps> & {
17
23
  DEFAULT_SIZE: number;
@@ -1 +1 @@
1
- {"version":3,"file":"TablePerPage.d.ts","sourceRoot":"","sources":["../../../../src/components/table/TablePerPage.tsx"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,OAAO,CAAC;AAIxC,UAAU,iBAAiB;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,YAAY,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,GAAG;IAAC,YAAY,EAAE,MAAM,CAAA;CAyBtF,CAAC"}
1
+ {"version":3,"file":"TablePerPage.d.ts","sourceRoot":"","sources":["../../../../src/components/table/TablePerPage.tsx"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,OAAO,CAAC;AAIxC,UAAU,iBAAiB;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AAED,eAAO,MAAM,YAAY,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,GAAG;IAAC,YAAY,EAAE,MAAM,CAAA;CA2BtF,CAAC"}
@@ -18,10 +18,12 @@ var TablePerPage = function(param) {
18
18
  25,
19
19
  50,
20
20
  100
21
- ] : _param_values;
21
+ ] : _param_values, onPerPageChange = param.onPerPageChange;
22
22
  var _values;
23
- var _useTable = (0, _TableContext.useTable)(), state = _useTable.state, setState = _useTable.setState;
23
+ var _useTable = (0, _TableContext.useTable)(), state = _useTable.state, setState = _useTable.setState, getPageCount = _useTable.getPageCount;
24
24
  var updatePerPage = function(newPerPage) {
25
+ var _onPerPageChange;
26
+ (_onPerPageChange = onPerPageChange) === null || _onPerPageChange === void 0 ? void 0 : _onPerPageChange(Number(newPerPage));
25
27
  setState(function(prevState) {
26
28
  return _object_spread_props._(_object_spread._({}, prevState), {
27
29
  pagination: {
@@ -32,7 +34,7 @@ var TablePerPage = function(param) {
32
34
  });
33
35
  };
34
36
  var _state_pagination_pageSize_toString;
35
- return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_core.Group, {
37
+ return getPageCount() > 0 ? /*#__PURE__*/ (0, _jsxruntime.jsxs)(_core.Group, {
36
38
  spacing: "sm",
37
39
  children: [
38
40
  /*#__PURE__*/ (0, _jsxruntime.jsx)(_core.Text, {
@@ -49,7 +51,7 @@ var TablePerPage = function(param) {
49
51
  size: "sm"
50
52
  })
51
53
  ]
52
- });
54
+ }) : null;
53
55
  };
54
56
  TablePerPage.DEFAULT_SIZE = 50;
55
57
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/TablePerPage.tsx"],"sourcesContent":["import {Group, SegmentedControl, Text} from '@mantine/core';\nimport {FunctionComponent} from 'react';\n\nimport {useTable} from './TableContext';\n\ninterface TablePerPageProps {\n /**\n * The label displayed before the control\n *\n * @default Results per page\n */\n label?: string;\n /**\n * The per page choices to display\n *\n * @default [25, 50, 100]\n */\n values?: number[];\n}\n\nexport const TablePerPage: FunctionComponent<TablePerPageProps> & {DEFAULT_SIZE: number} = ({\n label = 'Results per page',\n values = [25, 50, 100],\n}) => {\n const {state, setState} = useTable();\n\n const updatePerPage = (newPerPage: string) => {\n setState((prevState) => ({\n ...prevState,\n pagination: {pageIndex: 0, pageSize: parseInt(newPerPage, 10)},\n }));\n };\n\n return (\n <Group spacing=\"sm\">\n <Text fw={500}>{label}</Text>\n <SegmentedControl\n value={state.pagination.pageSize.toString() ?? values?.[1].toString()}\n onChange={updatePerPage}\n data={values.map((value) => value.toString())}\n color=\"action\"\n size=\"sm\"\n />\n </Group>\n );\n};\n\nTablePerPage.DEFAULT_SIZE = 50;\n"],"names":["TablePerPage","label","values","useTable","state","setState","updatePerPage","newPerPage","prevState","pagination","pageIndex","pageSize","parseInt","Group","spacing","Text","fw","SegmentedControl","value","toString","onChange","data","map","color","size","DEFAULT_SIZE"],"mappings":";;;;+BAoBaA;;;eAAAA;;;;;;oBApB+B;4BAGrB;AAiBhB,IAAMA,eAA8E;6BACvFC,OAAAA,kCAAQ,yDACRC,QAAAA,oCAAS;QAAC;QAAI;QAAI;KAAI;QAeqCA;IAb3D,IAA0BC,YAAAA,IAAAA,sBAAQ,KAA3BC,QAAmBD,UAAnBC,OAAOC,WAAYF,UAAZE;IAEd,IAAMC,gBAAgB,SAACC;QACnBF,SAAS,SAACG;mBAAe,4CAClBA;gBACHC,YAAY;oBAACC,WAAW;oBAAGC,UAAUC,SAASL,YAAY;gBAAG;;;IAErE;QAMmBH;IAJnB,qBACI,sBAACS,WAAK;QAACC,SAAQ;;0BACX,qBAACC,UAAI;gBAACC,IAAI;0BAAMf;;0BAChB,qBAACgB,sBAAgB;gBACbC,OAAOd,CAAAA,sCAAAA,MAAMK,UAAU,CAACE,QAAQ,CAACQ,QAAQ,gBAAlCf,iDAAAA,uCAAwCF,UAAAA,oBAAAA,8BAAAA,OAAQ,CAAC,EAAE,CAACiB,QAAQ;gBACnEC,UAAUd;gBACVe,MAAMnB,OAAOoB,GAAG,CAAC,SAACJ;2BAAUA,MAAMC,QAAQ;;gBAC1CI,OAAM;gBACNC,MAAK;;;;AAIrB;AAEAxB,aAAayB,YAAY,GAAG"}
1
+ {"version":3,"sources":["../../../../src/components/table/TablePerPage.tsx"],"sourcesContent":["import {Group, SegmentedControl, Text} from '@mantine/core';\nimport {FunctionComponent} from 'react';\n\nimport {useTable} from './TableContext';\n\ninterface TablePerPageProps {\n /**\n * The label displayed before the control\n *\n * @default Results per page\n */\n label?: string;\n /**\n * The per page choices to display\n *\n * @default [25, 50, 100]\n */\n values?: number[];\n /**\n * The callback if the entries per page is changed.\n *\n * @param perPage the new number of entries per page\n */\n onPerPageChange?: (perPage: number) => void;\n}\n\nexport const TablePerPage: FunctionComponent<TablePerPageProps> & {DEFAULT_SIZE: number} = ({\n label = 'Results per page',\n values = [25, 50, 100],\n onPerPageChange,\n}) => {\n const {state, setState, getPageCount} = useTable();\n\n const updatePerPage = (newPerPage: string) => {\n onPerPageChange?.(Number(newPerPage));\n setState((prevState) => ({\n ...prevState,\n pagination: {pageIndex: 0, pageSize: parseInt(newPerPage, 10)},\n }));\n };\n\n return getPageCount() > 0 ? (\n <Group spacing=\"sm\">\n <Text fw={500}>{label}</Text>\n <SegmentedControl\n value={state.pagination.pageSize.toString() ?? values?.[1].toString()}\n onChange={updatePerPage}\n data={values.map((value) => value.toString())}\n color=\"action\"\n size=\"sm\"\n />\n </Group>\n ) : null;\n};\n\nTablePerPage.DEFAULT_SIZE = 50;\n"],"names":["TablePerPage","label","values","onPerPageChange","useTable","state","setState","getPageCount","updatePerPage","newPerPage","Number","prevState","pagination","pageIndex","pageSize","parseInt","Group","spacing","Text","fw","SegmentedControl","value","toString","onChange","data","map","color","size","DEFAULT_SIZE"],"mappings":";;;;+BA0BaA;;;eAAAA;;;;;;oBA1B+B;4BAGrB;AAuBhB,IAAMA,eAA8E;6BACvFC,OAAAA,kCAAQ,yDACRC,QAAAA,oCAAS;QAAC;QAAI;QAAI;KAAI,kBACtBC,wBAAAA;QAgB2DD;IAd3D,IAAwCE,YAAAA,IAAAA,sBAAQ,KAAzCC,QAAiCD,UAAjCC,OAAOC,WAA0BF,UAA1BE,UAAUC,eAAgBH,UAAhBG;IAExB,IAAMC,gBAAgB,SAACC;YACnBN;SAAAA,mBAAAA,6BAAAA,uCAAAA,iBAAkBO,OAAOD;QACzBH,SAAS,SAACK;mBAAe,4CAClBA;gBACHC,YAAY;oBAACC,WAAW;oBAAGC,UAAUC,SAASN,YAAY;gBAAG;;;IAErE;QAMmBJ;IAJnB,OAAOE,iBAAiB,kBACpB,sBAACS,WAAK;QAACC,SAAQ;;0BACX,qBAACC,UAAI;gBAACC,IAAI;0BAAMlB;;0BAChB,qBAACmB,sBAAgB;gBACbC,OAAOhB,CAAAA,sCAAAA,MAAMO,UAAU,CAACE,QAAQ,CAACQ,QAAQ,gBAAlCjB,iDAAAA,uCAAwCH,UAAAA,oBAAAA,8BAAAA,OAAQ,CAAC,EAAE,CAACoB,QAAQ;gBACnEC,UAAUf;gBACVgB,MAAMtB,OAAOuB,GAAG,CAAC,SAACJ;2BAAUA,MAAMC,QAAQ;;gBAC1CI,OAAM;gBACNC,MAAK;;;SAGb;AACR;AAEA3B,aAAa4B,YAAY,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"Th.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Th.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAC,MAAM,EAAkC,MAAM,uBAAuB,CAAC;AA0B9E,UAAU,OAAO,CAAC,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;CAC9B;AAcD,eAAO,MAAM,EAAE,4CAqCd,CAAC"}
1
+ {"version":3,"file":"Th.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Th.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAC,MAAM,EAAkC,MAAM,uBAAuB,CAAC;AA4B9E,UAAU,OAAO,CAAC,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;CAC9B;AAcD,eAAO,MAAM,EAAE,4CA0Cd,CAAC"}
@@ -8,11 +8,14 @@ Object.defineProperty(exports, "Th", {
8
8
  return Th;
9
9
  }
10
10
  });
11
+ var _object_spread = require("@swc/helpers/_/_object_spread");
12
+ var _object_spread_props = require("@swc/helpers/_/_object_spread_props");
11
13
  var _jsxruntime = require("react/jsx-runtime");
12
14
  var _plasmareacticons = require("@coveord/plasma-react-icons");
13
15
  var _core = require("@mantine/core");
14
16
  var _reacttable = require("@tanstack/react-table");
15
- var useStyles = (0, _core.createStyles)(function(theme, width) {
17
+ var _columnSizing_size;
18
+ var useStyles = (0, _core.createStyles)(function(theme, columnSizing) {
16
19
  return {
17
20
  th: {
18
21
  fontWeight: "400 !important",
@@ -22,7 +25,9 @@ var useStyles = (0, _core.createStyles)(function(theme, width) {
22
25
  textAlign: "left",
23
26
  color: theme.colors.gray[6],
24
27
  backgroundColor: theme.colorScheme === "dark" ? theme.colors.gray[8] : theme.colors.gray[0],
25
- width: width
28
+ width: (_columnSizing_size = columnSizing.size) !== null && _columnSizing_size !== void 0 ? _columnSizing_size : "auto",
29
+ minWidth: columnSizing.minSize,
30
+ maxWidth: columnSizing.maxSize
26
31
  },
27
32
  control: {
28
33
  color: "inherit",
@@ -48,9 +53,12 @@ var SortingLabels = {
48
53
  };
49
54
  var Th = function(param) {
50
55
  var header = param.header;
51
- var size = header.column.getSize();
52
- var width = size !== _reacttable.defaultColumnSizing.size ? size : undefined;
53
- var classes = useStyles(width).classes;
56
+ var columnSizing = _object_spread_props._(_object_spread._({}, _reacttable.defaultColumnSizing), {
57
+ size: header.column.columnDef.size,
58
+ minSize: header.column.columnDef.minSize,
59
+ maxSize: header.column.columnDef.maxSize
60
+ });
61
+ var classes = useStyles(columnSizing).classes;
54
62
  if (header.isPlaceholder) {
55
63
  return null;
56
64
  }
@@ -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, width: 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,\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 size = header.column.getSize();\n const width = size !== defaultColumnSizing.size ? size : undefined;\n const {classes} = useStyles(width);\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","width","th","fontWeight","padding","verticalAlign","whiteSpace","textAlign","color","colors","gray","backgroundColor","colorScheme","control","spacing","xs","sm","SortingIcons","asc","ArrowUpSize16Px","desc","ArrowDownSize16Px","none","DoubleArrowHeadVSize16Px","SortingLabels","header","size","column","getSize","defaultColumnSizing","undefined","classes","isPlaceholder","getCanSort","className","Text","py","px","fw","flexRender","columnDef","getContext","onSort","getToggleSortingHandler","sortingOrder","getIsSorted","Icon","aria-sort","UnstyledButton","onClick","Group","position","noWrap","Center","height"],"mappings":";;;;+BA4CaA;;;eAAAA;;;;gCA5C8D;oBACX;0BACV;AAEtD,IAAMC,YAAYC,IAAAA,kBAAY,EAAC,SAACC,OAAOC;WAAmB;QACtDC,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;YAC3FT,OAAAA;QACJ;QAEAY,SAAS;YACLL,OAAO;YACPF,YAAY;YACZH,YAAY;YACZF,OAAO;YACPG,SAAS,AAAC,GAAsBJ,OAApBA,MAAMc,OAAO,CAACC,EAAE,EAAC,KAAoB,OAAjBf,MAAMc,OAAO,CAACE,EAAE;YAChD,WAAW;gBACPL,iBAAiBX,MAAMY,WAAW,KAAK,SAASZ,MAAMS,MAAM,CAACC,IAAI,CAAC,EAAE,GAAGV,MAAMS,MAAM,CAACC,IAAI,CAAC,EAAE;YAC/F;QACJ;IACJ;;AAMA,IAAMO,eAAe;IACjBC,KAAKC,iCAAe;IACpBC,MAAMC,mCAAiB;IACvBC,MAAMC,0CAAwB;AAClC;AAEA,IAAMC,gBAAgB;IAClBN,KAAK;IACLE,MAAM;IACNE,MAAM;AACV;AAEO,IAAMzB,KAAK;QAAM4B,eAAAA;IACpB,IAAMC,OAAOD,OAAOE,MAAM,CAACC,OAAO;IAClC,IAAM3B,QAAQyB,SAASG,+BAAmB,CAACH,IAAI,GAAGA,OAAOI;IACzD,IAAM,AAACC,UAAWjC,UAAUG,OAArB8B;IAEP,IAAIN,OAAOO,aAAa,EAAE;QACtB,OAAO;IACX;IAEA,IAAI,CAACP,OAAOE,MAAM,CAACM,UAAU,IAAI;QAC7B,qBACI,qBAAC/B;YAAGgC,WAAWH,QAAQ7B,EAAE;sBACrB,cAAA,qBAACiC,UAAI;gBAACT,MAAK;gBAAKU,IAAG;gBAAKC,IAAG;gBAAKC,IAAI;0BAC/BC,IAAAA,sBAAU,EAACd,OAAOE,MAAM,CAACa,SAAS,CAACf,MAAM,EAAEA,OAAOgB,UAAU;;;IAI7E;IAEA,IAAMC,SAASjB,OAAOE,MAAM,CAACgB,uBAAuB;IACpD,IAAMC,eAAenB,OAAOE,MAAM,CAACkB,WAAW,MAAM;IACpD,IAAMC,OAAO7B,YAAY,CAAC2B,aAAa;IAEvC,qBACI,qBAAC1C;QAAGgC,WAAWH,QAAQ7B,EAAE;QAAE6C,aAAWvB,aAAa,CAACoB,aAAa;kBAC7D,cAAA,qBAACI,oBAAc;YAACC,SAASP;YAAQR,WAAWH,QAAQlB,OAAO;sBACvD,cAAA,sBAACqC,WAAK;gBAACC,UAAS;gBAAQC,MAAM;;kCAC1B,qBAACjB,UAAI;wBAACT,MAAK;wBAAKY,IAAI;kCACfC,IAAAA,sBAAU,EAACd,OAAOE,MAAM,CAACa,SAAS,CAACf,MAAM,EAAEA,OAAOgB,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RowLayout.d.ts","sourceRoot":"","sources":["../../../../../src/components/table/layouts/RowLayout.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAC,WAAW,EAAmB,MAAM,gBAAgB,CAAC;AA+K7D,eAAO,MAAM,SAAS,EAAE,WAKvB,CAAC"}
1
+ {"version":3,"file":"RowLayout.d.ts","sourceRoot":"","sources":["../../../../../src/components/table/layouts/RowLayout.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAC,WAAW,EAAmB,MAAM,gBAAgB,CAAC;AA+L7D,eAAO,MAAM,SAAS,EAAE,WAKvB,CAAC"}
@@ -9,6 +9,8 @@ Object.defineProperty(exports, "RowLayout", {
9
9
  }
10
10
  });
11
11
  var _define_property = require("@swc/helpers/_/_define_property");
12
+ var _object_spread = require("@swc/helpers/_/_object_spread");
13
+ var _object_spread_props = require("@swc/helpers/_/_object_spread_props");
12
14
  var _jsxruntime = require("react/jsx-runtime");
13
15
  var _plasmareacticons = require("@coveord/plasma-react-icons");
14
16
  var _core = require("@mantine/core");
@@ -100,7 +102,7 @@ var RowLayoutHeader = function(param) {
100
102
  });
101
103
  };
102
104
  var RowLayoutBody = function(param) {
103
- var table = param.table, doubleClickAction = param.doubleClickAction, getExpandChildren = param.getExpandChildren, loading = param.loading;
105
+ var table = param.table, doubleClickAction = param.doubleClickAction, getExpandChildren = param.getExpandChildren, loading = param.loading, keepSelection = param.keepSelection;
104
106
  var _useTable = (0, _TableContext.useTable)(), multiRowSelectionEnabled = _useTable.multiRowSelectionEnabled, disableRowSelection = _useTable.disableRowSelection;
105
107
  var _useStyles = useStyles({
106
108
  disableRowSelection: disableRowSelection,
@@ -115,11 +117,12 @@ var RowLayoutBody = function(param) {
115
117
  var _getExpandChildren1;
116
118
  var rowChildren = (_getExpandChildren1 = (_getExpandChildren = getExpandChildren) === null || _getExpandChildren === void 0 ? void 0 : _getExpandChildren(row.original)) !== null && _getExpandChildren1 !== void 0 ? _getExpandChildren1 : null;
117
119
  var isSelected = !!row.getIsSelected();
120
+ var shouldKeepSelection = keepSelection && isSelected;
118
121
  var onClick = function(event) {
119
122
  if (rowChildren) {
120
123
  toggleCollapsible(event.currentTarget);
121
124
  }
122
- if (!disableRowSelection && !multiRowSelectionEnabled) {
125
+ if (!disableRowSelection && !multiRowSelectionEnabled && !shouldKeepSelection) {
123
126
  row.toggleSelected();
124
127
  }
125
128
  };
@@ -136,18 +139,24 @@ var RowLayoutBody = function(param) {
136
139
  "aria-selected": isSelected,
137
140
  "data-testid": row.id,
138
141
  children: row.getVisibleCells().map(function(cell) {
139
- var size = cell.column.getSize();
140
- var width = size !== _tablecore.defaultColumnSizing.size ? size : undefined;
142
+ var columnSizing = _object_spread_props._(_object_spread._({}, _tablecore.defaultColumnSizing), {
143
+ size: cell.column.columnDef.size,
144
+ minSize: cell.column.columnDef.minSize,
145
+ maxSize: cell.column.columnDef.maxSize
146
+ });
141
147
  var onCollapsibleCellClick = function(event) {
142
148
  if (cell.column.id === _TableSelectableColumn.TableSelectableColumn.id && !disableRowSelection) {
143
149
  event.stopPropagation();
144
150
  row.getToggleSelectedHandler();
145
151
  }
146
152
  };
153
+ var _columnSizing_size;
147
154
  return /*#__PURE__*/ (0, _jsxruntime.jsx)("td", {
148
155
  "data-testid": cell.id,
149
156
  style: {
150
- width: width
157
+ width: (_columnSizing_size = columnSizing.size) !== null && _columnSizing_size !== void 0 ? _columnSizing_size : "auto",
158
+ minWidth: columnSizing.minSize,
159
+ maxWidth: columnSizing.maxSize
151
160
  },
152
161
  className: cx(classes.cell, _define_property._({}, classes.rowCollapsibleButtonCell, cell.column.id === _TableCollapsibleColumn.TableCollapsibleColumn.id)),
153
162
  onClick: onCollapsibleCellClick,
@@ -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,>({table, doubleClickAction, getExpandChildren, loading}: 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 onClick = (event: MouseEvent<HTMLTableRowElement>) => {\n if (rowChildren) {\n toggleCollapsible(event.currentTarget);\n }\n if (!disableRowSelection && !multiRowSelectionEnabled) {\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 size = cell.column.getSize();\n const width = size !== defaultColumnSizing.size ? size : undefined;\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={{width}}\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","cx","toggleCollapsible","el","children","length","querySelector","click","rows","getRowModel","rowChildren","original","isSelected","getIsSelected","onClick","event","currentTarget","toggleSelected","Fragment","onDoubleClick","aria-selected","data-testid","getVisibleCells","size","column","getSize","width","defaultColumnSizing","onCollapsibleCellClick","TableSelectableColumn","stopPropagation","getToggleSelectedHandler","td","style","TableCollapsibleColumn","TableLoading","visible","flexRender","columnDef","getContext","colSpan","getAllColumns","Collapse","in","getIsExpanded","Box","px","py","name","icon","ListSize16Px","Header","Body"],"mappings":";;;;+BAoLaA;;;eAAAA;;;;;gCApLc;oBACoB;0BACtB;yBACS;qBACM;sCAEH;4BACd;4BACI;qCACS;kBACnB;AAOjB,IAAMC,YAAYC,IAAAA,kBAAY,EAA4B,SAACC;QAAQC,iCAAAA,0BAA0BC,4BAAAA;IACzF,IAAMC,qBACFH,MAAMI,WAAW,KAAK,SAASJ,MAAMK,EAAE,CAACC,IAAI,CAACN,MAAMO,MAAM,CAACP,MAAMQ,YAAY,CAAC,CAAC,EAAE,EAAE,OAAOR,MAAMO,MAAM,CAACE,IAAI,CAAC,EAAE;IACjH,IAAMC,SAAS,AAAC,GAAkBV,OAAhBW,IAAAA,SAAG,EAAC,IAAG,WAAoF,OAA3EX,MAAMI,WAAW,KAAK,SAASJ,MAAMO,MAAM,CAACK,IAAI,CAAC,EAAE,GAAGZ,MAAMO,MAAM,CAACE,IAAI,CAAC,EAAE;IAC5G,OAAO;QACHI,eAAe;YACX,0BAA0B;gBACtBC,aAAa;YACjB;YAEA,0BAA0B;gBACtBC,iBAAiBb,sBAAsB,AAAC,GAAuB,OAArBF,MAAMO,MAAM,CAACE,IAAI,CAAC,EAAE,IAAKO;gBACnEC,aAAaf,sBAAsB,AAAC,GAAuB,OAArBF,MAAMO,MAAM,CAACE,IAAI,CAAC,EAAE,IAAK,AAAC,GAAuB,OAArBT,MAAMO,MAAM,CAACE,IAAI,CAAC,EAAE;gBACtFS,eAAehB,sBAAsB,SAAS;gBAC9CiB,QAAQjB,sBAAsB,gBAAgB;gBAE9C,WAAW;oBACPkB,OAAOlB,sBAAsB,AAAC,GAAuB,OAArBF,MAAMO,MAAM,CAACE,IAAI,CAAC,EAAE,IAAK;gBAC7D;YACJ;QACJ;QAEAY,aAAa;YACTN,iBAAiBd,2BAA2Be,YAAYb;QAC5D;QAEAmB,iBAAiB;YACb,0BAA0B;gBACtBP,iBAAiB,AAAC,GAAuB,OAArBf,MAAMO,MAAM,CAACE,IAAI,CAAC,EAAE;gBACxCQ,aAAa,AAAC,GAAuB,OAArBjB,MAAMO,MAAM,CAACE,IAAI,CAAC,EAAE;gBACpCS,eAAe;gBACfC,QAAQ;gBAER,mBAAmB;oBACfC,OAAO,AAAC,GAAuB,OAArBpB,MAAMO,MAAM,CAACE,IAAI,CAAC,EAAE;gBAClC;YACJ;QACJ;QAEAc,0BAA0B;YACtBC,WAAW;YACXC,SAAS,AAAC,QAA8BzB,OAAvBA,MAAM0B,OAAO,CAACC,EAAE,EAAC,QAAuB,OAAjB3B,MAAM0B,OAAO,CAACE,EAAE,EAAC;QAC7D;QAEAC,KAAK;YACD,sBAAsB;gBAClBf,aAAa;YACjB;YACA,WAAW;gBACPC,iBAAiBZ;YACrB;QACJ;QAEA2B,MAAM;YACFC,eAAe;YACf,2EAA2E;YAC3EC,QAAQ;YACRP,SAAS,AAAC,GAAsBzB,OAApBA,MAAM0B,OAAO,CAACC,EAAE,EAAC,KAAoB,OAAjB3B,MAAM0B,OAAO,CAACE,EAAE;YAChDK,cAAcvB;QAClB;QAEAwB,aAAa;YACTnB,iBAAiBZ;YACjB8B,cAAcvB;QAClB;IACJ;AACJ;AAEA,IAAMyB,kBAAkB;QAAMC,cAAAA;IAC1B,IAAwDC,YAAAA,IAAAA,sBAAQ,KAAzDpC,2BAAiDoC,UAAjDpC,0BAA0BC,sBAAuBmC,UAAvBnC;IACjC,IAAM,AAACoC,UAAWxC,UAAU;QAACI,qBAAAA;QAAqBD,0BAAAA;IAAwB,GAAnEqC;IACP,IAAMC,UAAUH,MAAMI,eAAe,GAAGC,GAAG,CAAC,SAACC;6BACzC,qBAACC;YAAwBC,WAAWN,QAAQzB,aAAa;sBACpD6B,YAAYH,OAAO,CAACE,GAAG,CAAC,SAACI;qCACtB,qBAACC,MAAE;oBAAuBC,QAAQF;mBAAzBA,aAAaG,EAAE;;WAFvBN,YAAYM,EAAE;;IAM3B,qBAAO;kBAAGT;;AACd;AAEA,IAAMU,gBAAgB;QAAMb,cAAAA,OAAOc,0BAAAA,mBAAmBC,0BAAAA,mBAAmBC,gBAAAA;IACrE,IAAwDf,YAAAA,IAAAA,sBAAQ,KAAzDpC,2BAAiDoC,UAAjDpC,0BAA0BC,sBAAuBmC,UAAvBnC;IACjC,IAAsBJ,aAAAA,UAAU;QAACI,qBAAAA;QAAqBD,0BAAAA;IAAwB,IAAvEqC,UAAexC,WAAfwC,SAASe,KAAMvD,WAANuD;IAEhB,IAAMC,oBAAoB,SAACC;QACvB,IAAMzB,OAAOyB,GAAGC,QAAQ,CAACD,GAAGC,QAAQ,CAACC,MAAM,GAAG,EAAE;QAChD3B,KAAK4B,aAAa,CAAC,UAAUC,KAAK;IACtC;IAEA,IAAMC,OAAOxB,MAAMyB,WAAW,GAAGD,IAAI,CAACnB,GAAG,CAAC,SAACZ;YACnBsB;YAAAA;QAApB,IAAMW,cAAcX,CAAAA,uBAAAA,qBAAAA,+BAAAA,yCAAAA,mBAAoBtB,IAAIkC,QAAQ,eAAhCZ,iCAAAA,sBAAqC;QACzD,IAAMa,aAAa,CAAC,CAACnC,IAAIoC,aAAa;QACtC,IAAMC,UAAU,SAACC;YACb,IAAIL,aAAa;gBACbR,kBAAkBa,MAAMC,aAAa;YACzC;YACA,IAAI,CAAClE,uBAAuB,CAACD,0BAA0B;gBACnD4B,IAAIwC,cAAc;YACtB;QACJ;YAOuC;QALvC,qBACI,sBAACC,eAAQ;;8BACL,qBAAC3B;oBACGuB,SAASA;oBACTK,eAAe;4BAAMrB;gCAAAA,qBAAAA,+BAAAA,yCAAAA,mBAAoBrB,IAAIkC,QAAQ;;oBACrDnB,WAAWS,GAAGf,QAAQT,GAAG,GAAE,WACvB,mBADuB,MACtBS,QAAQjB,WAAW,EAAG2C,aACvB,mBAFuB,MAEtB1B,QAAQhB,eAAe,EAAGpB,sBAFJ;oBAI3BsE,iBAAeR;oBACfS,eAAa5C,IAAImB,EAAE;8BAElBnB,IAAI6C,eAAe,GAAGjC,GAAG,CAAC,SAACX;wBACxB,IAAM6C,OAAO7C,KAAK8C,MAAM,CAACC,OAAO;wBAChC,IAAMC,QAAQH,SAASI,8BAAmB,CAACJ,IAAI,GAAGA,OAAO3D;wBACzD,IAAMgE,yBAAyB,SAACb;4BAC5B,IAAIrC,KAAK8C,MAAM,CAAC5B,EAAE,KAAKiC,4CAAqB,CAACjC,EAAE,IAAI,CAAC9C,qBAAqB;gCACrEiE,MAAMe,eAAe;gCACrBrD,IAAIsD,wBAAwB;4BAChC;wBACJ;wBACA,qBACI,qBAACC;4BAEGX,eAAa3C,KAAKkB,EAAE;4BACpBqC,OAAO;gCAACP,OAAAA;4BAAK;4BACblC,WAAWS,GAAGf,QAAQR,IAAI,EACtB,uBAACQ,QAAQf,wBAAwB,EAAGO,KAAK8C,MAAM,CAAC5B,EAAE,KAAKsC,8CAAsB,CAACtC,EAAE;4BAEpFkB,SAASc;sCAET,cAAA,qBAACO,0BAAY;gCAACC,SAASpC;0CAClBqC,IAAAA,sBAAU,EAAC3D,KAAK8C,MAAM,CAACc,SAAS,CAAC5D,IAAI,EAAEA,KAAK6D,UAAU;;2BATtD7D,KAAKkB,EAAE;oBAaxB;;gBAEHc,4BACG,qBAACnB;8BACG,cAAA,qBAACyC;wBACGQ,SAASxD,MAAMyD,aAAa,GAAGpC,MAAM;wBACrC4B,OAAO;4BACH5D,SAAS;wBACb;kCAEA,cAAA,qBAACqE,cAAQ;4BAACC,IAAIlE,IAAImE,aAAa;sCAC3B,cAAA,qBAACC,SAAG;gCAACrD,WAAWN,QAAQJ,WAAW;gCAAEgE,IAAG;gCAAKC,IAAG;0CAC3CrC;;;;qBAKjB;;WApDOjC,IAAImB,EAAE;IAuD7B;IAEA,qBAAO;kBAAGY;;AACd;AAEO,IAAM/D,YAAyB;IAClCuG,MAAM;IACNC,MAAMC,8BAAY;IAClBC,QAAQpE;IACRqE,MAAMvD;AACV"}
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":"useRowSelection.d.ts","sourceRoot":"","sources":["../../../../src/components/table/useRowSelection.ts"],"names":[],"mappings":";AACA,OAAO,EAAsC,KAAK,EAAC,MAAM,sBAAsB,CAAC;AAIhF,OAAO,EAAuB,UAAU,EAAa,MAAM,eAAe,CAAC;AAE3E,eAAO,MAAM,eAAe;;;;;CAgE3B,CAAC"}
1
+ {"version":3,"file":"useRowSelection.d.ts","sourceRoot":"","sources":["../../../../src/components/table/useRowSelection.ts"],"names":[],"mappings":";AACA,OAAO,EAAsC,KAAK,EAAC,MAAM,sBAAsB,CAAC;AAIhF,OAAO,EAAuB,UAAU,EAAa,MAAM,eAAe,CAAC;AAE3E,eAAO,MAAM,eAAe;;;;;CAoE3B,CAAC"}
@@ -26,11 +26,18 @@ var useRowSelection = function(table, param) {
26
26
  }, null, [
27
27
  outsideClickRef.current
28
28
  ].concat(_to_consumable_array._(additionalRootNodes)));
29
+ // Need to call this outside of the onRowSelectionChange of the table to avoid rendering conflicts if the callback queues an update in a parent component.
30
+ // See this warning introduced in React v.16.13.0: https://legacy.reactjs.org/blog/2020/02/26/react-v16.13.0.html#warnings-for-some-updates-during-render
31
+ (0, _hooks.useDidUpdate)(function() {
32
+ var _onRowSelectionChange;
33
+ (_onRowSelectionChange = onRowSelectionChange) === null || _onRowSelectionChange === void 0 ? void 0 : _onRowSelectionChange(getSelectedRows());
34
+ }, [
35
+ table.getState().rowSelection
36
+ ]);
29
37
  table.setOptions(function(prev) {
30
38
  return _object_spread_props._(_object_spread._({}, prev), {
31
39
  onRowSelectionChange: function(rowSelectionUpdater) {
32
40
  table.setState(function(old) {
33
- var _onRowSelectionChange;
34
41
  var newRowSelection = (0, _tablecore.functionalUpdate)(rowSelectionUpdater, old["rowSelection"]);
35
42
  if ((0, _fastdeepequal.default)(old["rowSelection"], newRowSelection)) {
36
43
  return old;
@@ -46,7 +53,6 @@ var useRowSelection = function(table, param) {
46
53
  newRowSelection[rowId] = (_rows_rowId_original = (_rows_rowId = rows[rowId]) === null || _rows_rowId === void 0 ? void 0 : _rows_rowId.original) !== null && _rows_rowId_original !== void 0 ? _rows_rowId_original : true;
47
54
  }
48
55
  });
49
- (_onRowSelectionChange = onRowSelectionChange) === null || _onRowSelectionChange === void 0 ? void 0 : _onRowSelectionChange(Object.values(newRowSelection));
50
56
  return _object_spread_props._(_object_spread._({}, old), {
51
57
  rowSelection: newRowSelection
52
58
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/useRowSelection.ts"],"sourcesContent":["import {useClickOutside} from '@mantine/hooks';\nimport {functionalUpdate, RowSelectionState, Table} from '@tanstack/table-core';\nimport isEqual from 'fast-deep-equal';\n\nimport {useRef} from 'react';\nimport {RowSelectionWithData, TableProps, TableState} from './Table.types';\n\nexport const useRowSelection = <T>(\n table: Table<T>,\n {\n onRowSelectionChange,\n multiRowSelectionEnabled,\n additionalRootNodes = [],\n }: Pick<TableProps<T>, 'onRowSelectionChange' | 'multiRowSelectionEnabled' | 'additionalRootNodes'>\n) => {\n const outsideClickRef = useRef<HTMLDivElement>();\n useClickOutside(\n () => {\n if (!multiRowSelectionEnabled) {\n clearSelection();\n }\n },\n null,\n [outsideClickRef.current, ...additionalRootNodes]\n );\n\n table.setOptions((prev) => ({\n ...prev,\n onRowSelectionChange: (rowSelectionUpdater) => {\n table.setState((old) => {\n const newRowSelection = functionalUpdate(\n rowSelectionUpdater,\n old['rowSelection']\n ) as RowSelectionWithData<T>;\n\n if (isEqual(old['rowSelection'], newRowSelection)) {\n return old;\n }\n\n const rows = table.getRowModel().rowsById;\n\n Object.keys(newRowSelection).forEach((rowId) => {\n if (newRowSelection[rowId] === true) {\n if (!rows[rowId]) {\n console.error(\n 'The table was not initialized properly, the rowSelection state should contain an object of type Record<string, TData>.'\n );\n }\n newRowSelection[rowId] = rows[rowId]?.original ?? (true as T);\n }\n });\n\n onRowSelectionChange?.(Object.values(newRowSelection));\n\n return {\n ...old,\n rowSelection: newRowSelection as RowSelectionState,\n };\n });\n },\n }));\n\n const clearSelection = () => {\n table.resetRowSelection(true);\n };\n\n const getSelectedRows = () => Object.values((table.getState() as TableState<T>).rowSelection);\n\n const getSelectedRow = () => getSelectedRows()[0] ?? null;\n\n return {clearSelection, getSelectedRow, getSelectedRows, outsideClickRef};\n};\n"],"names":["useRowSelection","table","onRowSelectionChange","multiRowSelectionEnabled","additionalRootNodes","outsideClickRef","useRef","useClickOutside","clearSelection","current","setOptions","prev","rowSelectionUpdater","setState","old","newRowSelection","functionalUpdate","isEqual","rows","getRowModel","rowsById","Object","keys","forEach","rowId","console","error","original","values","rowSelection","resetRowSelection","getSelectedRows","getState","getSelectedRow"],"mappings":";;;;+BAOaA;;;eAAAA;;;;;;;qBAPiB;yBAC2B;sEACrC;qBAEC;AAGd,IAAMA,kBAAkB,SAC3BC;QAEIC,6BAAAA,sBACAC,iCAAAA,6DACAC,qBAAAA,8DAAsB,EAAE;IAG5B,IAAMC,kBAAkBC,IAAAA,aAAM;IAC9BC,IAAAA,sBAAe,EACX;QACI,IAAI,CAACJ,0BAA0B;YAC3BK;QACJ;IACJ,GACA,MACA;QAACH,gBAAgBI,OAAO;KAAyB,CAAjD,OAA0B,uBAAGL;IAGjCH,MAAMS,UAAU,CAAC,SAACC;eAAU,4CACrBA;YACHT,sBAAsB,SAACU;gBACnBX,MAAMY,QAAQ,CAAC,SAACC;wBAuBZZ;oBAtBA,IAAMa,kBAAkBC,IAAAA,2BAAgB,EACpCJ,qBACAE,GAAG,CAAC,eAAe;oBAGvB,IAAIG,IAAAA,sBAAO,EAACH,GAAG,CAAC,eAAe,EAAEC,kBAAkB;wBAC/C,OAAOD;oBACX;oBAEA,IAAMI,OAAOjB,MAAMkB,WAAW,GAAGC,QAAQ;oBAEzCC,OAAOC,IAAI,CAACP,iBAAiBQ,OAAO,CAAC,SAACC;wBAClC,IAAIT,eAAe,CAACS,MAAM,KAAK,MAAM;gCAMRN;4BALzB,IAAI,CAACA,IAAI,CAACM,MAAM,EAAE;gCACdC,QAAQC,KAAK,CACT;4BAER;gCACyBR;4BAAzBH,eAAe,CAACS,MAAM,GAAGN,CAAAA,wBAAAA,cAAAA,IAAI,CAACM,MAAM,cAAXN,kCAAAA,YAAaS,QAAQ,cAArBT,kCAAAA,uBAA0B;wBACvD;oBACJ;qBAEAhB,wBAAAA,kCAAAA,4CAAAA,sBAAuBmB,OAAOO,MAAM,CAACb;oBAErC,OAAO,4CACAD;wBACHe,cAAcd;;gBAEtB;YACJ;;;IAGJ,IAAMP,iBAAiB;QACnBP,MAAM6B,iBAAiB,CAAC;IAC5B;IAEA,IAAMC,kBAAkB;eAAMV,OAAOO,MAAM,CAAC,AAAC3B,MAAM+B,QAAQ,GAAqBH,YAAY;;QAE/DE;IAA7B,IAAME,iBAAiB;eAAMF,CAAAA,oBAAAA,iBAAiB,CAAC,EAAE,cAApBA,+BAAAA,oBAAwB;;IAErD,OAAO;QAACvB,gBAAAA;QAAgByB,gBAAAA;QAAgBF,iBAAAA;QAAiB1B,iBAAAA;IAAe;AAC5E"}
1
+ {"version":3,"sources":["../../../../src/components/table/useRowSelection.ts"],"sourcesContent":["import {useClickOutside, useDidUpdate} from '@mantine/hooks';\nimport {functionalUpdate, RowSelectionState, Table} from '@tanstack/table-core';\nimport isEqual from 'fast-deep-equal';\n\nimport {useRef} from 'react';\nimport {RowSelectionWithData, TableProps, TableState} from './Table.types';\n\nexport const useRowSelection = <T>(\n table: Table<T>,\n {\n onRowSelectionChange,\n multiRowSelectionEnabled,\n additionalRootNodes = [],\n }: Pick<TableProps<T>, 'onRowSelectionChange' | 'multiRowSelectionEnabled' | 'additionalRootNodes'>\n) => {\n const outsideClickRef = useRef<HTMLDivElement>();\n useClickOutside(\n () => {\n if (!multiRowSelectionEnabled) {\n clearSelection();\n }\n },\n null,\n [outsideClickRef.current, ...additionalRootNodes]\n );\n\n // Need to call this outside of the onRowSelectionChange of the table to avoid rendering conflicts if the callback queues an update in a parent component.\n // See this warning introduced in React v.16.13.0: https://legacy.reactjs.org/blog/2020/02/26/react-v16.13.0.html#warnings-for-some-updates-during-render\n useDidUpdate(() => {\n onRowSelectionChange?.(getSelectedRows());\n }, [table.getState().rowSelection]);\n\n table.setOptions((prev) => ({\n ...prev,\n onRowSelectionChange: (rowSelectionUpdater) => {\n table.setState((old) => {\n const newRowSelection = functionalUpdate(\n rowSelectionUpdater,\n old['rowSelection']\n ) as RowSelectionWithData<T>;\n\n if (isEqual(old['rowSelection'], newRowSelection)) {\n return old;\n }\n\n const rows = table.getRowModel().rowsById;\n\n Object.keys(newRowSelection).forEach((rowId) => {\n if (newRowSelection[rowId] === true) {\n if (!rows[rowId]) {\n console.error(\n 'The table was not initialized properly, the rowSelection state should contain an object of type Record<string, TData>.'\n );\n }\n newRowSelection[rowId] = rows[rowId]?.original ?? (true as T);\n }\n });\n\n return {\n ...old,\n rowSelection: newRowSelection as RowSelectionState,\n };\n });\n },\n }));\n\n const clearSelection = () => {\n table.resetRowSelection(true);\n };\n\n const getSelectedRows = () => Object.values((table.getState() as TableState<T>).rowSelection);\n\n const getSelectedRow = () => getSelectedRows()[0] ?? null;\n\n return {clearSelection, getSelectedRow, getSelectedRows, outsideClickRef};\n};\n"],"names":["useRowSelection","table","onRowSelectionChange","multiRowSelectionEnabled","additionalRootNodes","outsideClickRef","useRef","useClickOutside","clearSelection","current","useDidUpdate","getSelectedRows","getState","rowSelection","setOptions","prev","rowSelectionUpdater","setState","old","newRowSelection","functionalUpdate","isEqual","rows","getRowModel","rowsById","Object","keys","forEach","rowId","console","error","original","resetRowSelection","values","getSelectedRow"],"mappings":";;;;+BAOaA;;;eAAAA;;;;;;;qBAP+B;yBACa;sEACrC;qBAEC;AAGd,IAAMA,kBAAkB,SAC3BC;QAEIC,6BAAAA,sBACAC,iCAAAA,6DACAC,qBAAAA,8DAAsB,EAAE;IAG5B,IAAMC,kBAAkBC,IAAAA,aAAM;IAC9BC,IAAAA,sBAAe,EACX;QACI,IAAI,CAACJ,0BAA0B;YAC3BK;QACJ;IACJ,GACA,MACA;QAACH,gBAAgBI,OAAO;KAAyB,CAAjD,OAA0B,uBAAGL;IAGjC,0JAA0J;IAC1J,yJAAyJ;IACzJM,IAAAA,mBAAY,EAAC;YACTR;SAAAA,wBAAAA,kCAAAA,4CAAAA,sBAAuBS;IAC3B,GAAG;QAACV,MAAMW,QAAQ,GAAGC,YAAY;KAAC;IAElCZ,MAAMa,UAAU,CAAC,SAACC;eAAU,4CACrBA;YACHb,sBAAsB,SAACc;gBACnBf,MAAMgB,QAAQ,CAAC,SAACC;oBACZ,IAAMC,kBAAkBC,IAAAA,2BAAgB,EACpCJ,qBACAE,GAAG,CAAC,eAAe;oBAGvB,IAAIG,IAAAA,sBAAO,EAACH,GAAG,CAAC,eAAe,EAAEC,kBAAkB;wBAC/C,OAAOD;oBACX;oBAEA,IAAMI,OAAOrB,MAAMsB,WAAW,GAAGC,QAAQ;oBAEzCC,OAAOC,IAAI,CAACP,iBAAiBQ,OAAO,CAAC,SAACC;wBAClC,IAAIT,eAAe,CAACS,MAAM,KAAK,MAAM;gCAMRN;4BALzB,IAAI,CAACA,IAAI,CAACM,MAAM,EAAE;gCACdC,QAAQC,KAAK,CACT;4BAER;gCACyBR;4BAAzBH,eAAe,CAACS,MAAM,GAAGN,CAAAA,wBAAAA,cAAAA,IAAI,CAACM,MAAM,cAAXN,kCAAAA,YAAaS,QAAQ,cAArBT,kCAAAA,uBAA0B;wBACvD;oBACJ;oBAEA,OAAO,4CACAJ;wBACHL,cAAcM;;gBAEtB;YACJ;;;IAGJ,IAAMX,iBAAiB;QACnBP,MAAM+B,iBAAiB,CAAC;IAC5B;IAEA,IAAMrB,kBAAkB;eAAMc,OAAOQ,MAAM,CAAC,AAAChC,MAAMW,QAAQ,GAAqBC,YAAY;;QAE/DF;IAA7B,IAAMuB,iBAAiB;eAAMvB,CAAAA,oBAAAA,iBAAiB,CAAC,EAAE,cAApBA,+BAAAA,oBAAwB;;IAErD,OAAO;QAACH,gBAAAA;QAAgB0B,gBAAAA;QAAgBvB,iBAAAA;QAAiBN,iBAAAA;IAAe;AAC5E"}
@@ -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) {