@coveord/plasma-mantine 48.2.0 → 48.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/.turbo/turbo-build.log +3 -3
  2. package/.turbo/turbo-test.log +8 -8
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/cjs/components/table/Table.js +2 -1
  5. package/dist/cjs/components/table/Table.js.map +1 -1
  6. package/dist/cjs/components/table/TableContext.js.map +1 -1
  7. package/dist/cjs/components/table/TablePagination.js +4 -1
  8. package/dist/cjs/components/table/TablePagination.js.map +1 -1
  9. package/dist/definitions/components/table/Table.d.ts.map +1 -1
  10. package/dist/definitions/components/table/TableContext.d.ts +5 -1
  11. package/dist/definitions/components/table/TableContext.d.ts.map +1 -1
  12. package/dist/definitions/components/table/TablePagination.d.ts.map +1 -1
  13. package/dist/definitions/components/table/useTable.d.ts +1 -0
  14. package/dist/definitions/components/table/useTable.d.ts.map +1 -1
  15. package/dist/esm/components/table/Table.js +2 -1
  16. package/dist/esm/components/table/Table.js.map +1 -1
  17. package/dist/esm/components/table/TableContext.js.map +1 -1
  18. package/dist/esm/components/table/TablePagination.js +4 -1
  19. package/dist/esm/components/table/TablePagination.js.map +1 -1
  20. package/package.json +2 -2
  21. package/src/components/collection/__tests__/Collection.spec.tsx +14 -8
  22. package/src/components/date-range-picker/__tests__/DateRangePickerInlineCalendar.spec.tsx +23 -18
  23. package/src/components/date-range-picker/__tests__/DateRangePickerPopoverCalendar.spec.tsx +15 -12
  24. package/src/components/date-range-picker/__tests__/DateRangePickerPresetSelect.spec.tsx +4 -3
  25. package/src/components/date-range-picker/__tests__/EditableDateRangePicker.spec.tsx +6 -5
  26. package/src/components/inline-confirm/__tests__/InlineConfirm.spec.tsx +17 -13
  27. package/src/components/modal-wizard/__tests__/ModalWizard.spec.tsx +20 -14
  28. package/src/components/table/Table.tsx +1 -0
  29. package/src/components/table/TableContext.tsx +5 -1
  30. package/src/components/table/TablePagination.tsx +2 -1
  31. package/src/components/table/__tests__/Table.spec.tsx +6 -4
  32. package/src/components/table/__tests__/TableActions.spec.tsx +4 -3
  33. package/src/components/table/__tests__/TableDateRangePicker.spec.tsx +5 -4
  34. package/src/components/table/__tests__/TableFilter.spec.tsx +3 -2
  35. package/src/components/table/__tests__/TablePagination.spec.tsx +8 -0
  36. package/src/components/table/__tests__/TablePerPage.spec.tsx +3 -2
  37. package/src/components/table/__tests__/TablePredicate.spec.tsx +3 -2
@@ -223,7 +223,8 @@ var Table = function(param) {
223
223
  clearFilters: clearFilters,
224
224
  getSelectedRow: getSelectedRow,
225
225
  clearSelection: clearSelection,
226
- form: form
226
+ form: form,
227
+ containerRef: outsideClickRef
227
228
  },
228
229
  children: [
229
230
  header,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {Box, Center, Collapse, createStyles, Loader, Skeleton, Table as MantineTable} from '@mantine/core';\nimport {useForm} from '@mantine/form';\nimport {useClickOutside, useDidUpdate} from '@mantine/hooks';\nimport {\n ColumnDef,\n defaultColumnSizing,\n flexRender,\n getCoreRowModel,\n Row,\n TableState,\n useReactTable,\n} from '@tanstack/react-table';\nimport {InitialTableState} from '@tanstack/table-core';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport {Children, Fragment, ReactElement, ReactNode, useCallback, useEffect, useState} from 'react';\n\nimport {TableActions} from './TableActions';\nimport {TableCollapsibleColumn} from './TableCollapsibleColumn';\nimport {onTableChangeEvent, TableContext, TableFormType} from './TableContext';\nimport {TableDateRangePicker} from './TableDateRangePicker';\nimport {TableFilter} from './TableFilter';\nimport {TableFooter} from './TableFooter';\nimport {TableHeader} from './TableHeader';\nimport {TablePagination} from './TablePagination';\nimport {TablePerPage} from './TablePerPage';\nimport {TablePredicate} from './TablePredicate';\nimport {Th} from './Th';\n\nconst useStyles = createStyles<string, {hasHeader: boolean}>((theme, {hasHeader}, getRef) => ({\n table: {\n width: '100%',\n '& td:first-child': {\n paddingLeft: theme.spacing.md,\n },\n },\n\n header: {\n position: 'sticky',\n top: hasHeader ? 69 : 0,\n backgroundColor: theme.colorScheme === 'dark' ? theme.black : theme.white,\n transition: 'box-shadow 150ms ease',\n zIndex: 12, // skeleton is 11\n '& tr th:first-child div': {\n paddingLeft: theme.spacing.md,\n },\n\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n borderBottom: `1px solid ${theme.colors.gray[2]}`,\n },\n },\n\n rowSelected: {\n ref: getRef('rowSelected'),\n },\n\n row: {\n [`&:hover, &.${getRef('rowSelected')}`]: {\n backgroundColor:\n theme.colorScheme === 'dark'\n ? theme.fn.rgba(theme.colors[theme.primaryColor][7], 0.2)\n : theme.colors[theme.primaryColor][0],\n },\n },\n}));\n\ninterface TableProps<T> {\n /**\n * Data to display in the table\n */\n data: T[];\n /**\n * Columns to display in the table.\n *\n * @see https://tanstack.com/table/v8/docs/guide/column-defs\n */\n columns: Array<ColumnDef<T>>;\n /**\n * Function called when the table mounts\n *\n * @param state the state of the table\n */\n onMount?: onTableChangeEvent;\n /**\n * Function called when the table should update\n *\n * @param state the state of the table\n */\n onChange?: onTableChangeEvent;\n /**\n * Function that generates the expandable content of a row\n * Return null for rows that don't need to be expandable\n *\n * @param datum the row for which the children should be generated.\n */\n getExpandChildren?: (datum: T) => ReactNode;\n /**\n * React children to show when the table has no rows to show. You can leverage useTable to get the state of the table\n */\n noDataChildren?: ReactNode;\n /**\n * Whether the table is loading or not\n *\n * @default false\n */\n loading?: boolean;\n /**\n * Childrens to display in the table. They need to be wrap in either `Table.Header` or `Table.Footer`\n *\n * @example\n * <Table ...>\n * <Table.Header>\n * <div>Hello</div>\n * </Table.Header>\n * </Table>\n */\n children?: ReactNode;\n\n /**\n * Initial state of the table\n */\n initialState?: InitialTableState & Partial<TableFormType>;\n}\n\ninterface TableType {\n <T>(props: TableProps<T>): ReactElement;\n Actions: typeof TableActions;\n Filter: typeof TableFilter;\n Footer: typeof TableFooter;\n Header: typeof TableHeader;\n Pagination: typeof TablePagination;\n PerPage: typeof TablePerPage;\n Predicate: typeof TablePredicate;\n CollapsibleColumn: typeof TableCollapsibleColumn;\n DateRangePicker: typeof TableDateRangePicker;\n}\n\nexport const Table: TableType = <T,>({\n data,\n noDataChildren,\n getExpandChildren,\n initialState = {},\n columns,\n onMount,\n onChange,\n children,\n loading = false,\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\n const {predicates, dateRange, ...initialStateWithoutForm} = initialState;\n const form = useForm<TableFormType>({\n initialValues: {predicates: initialState?.predicates ?? {}, dateRange: initialState?.dateRange ?? [null, null]},\n });\n\n const {cx, classes} = useStyles({hasHeader: !!header});\n\n const table = useReactTable({\n initialState: defaultsDeep(initialStateWithoutForm, {pagination: {pageSize: TablePerPage.DEFAULT_SIZE}}),\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n manualPagination: true,\n getRowCanExpand: (row: Row<T>) => !!getExpandChildren?.(row.original) ?? false,\n });\n const [state, setState] = useState<TableState>(table.initialState);\n table.setOptions((prev) => ({\n ...prev,\n state,\n onStateChange: setState,\n }));\n\n const triggerChange = () => onChange?.({...state, ...form.values});\n\n useEffect(() => {\n onMount?.({...state, ...form.values});\n }, []);\n\n const outsideClickRef = useClickOutside(() => {\n table.resetRowSelection(true);\n });\n\n useDidUpdate(() => {\n triggerChange();\n clearSelection();\n }, [state.globalFilter, state.sorting, state.pagination, form.values]);\n\n const clearFilters = useCallback(() => {\n form.setFieldValue('predicates', {});\n setState((prevState) => ({...prevState, globalFilter: ''}));\n }, []);\n\n const clearSelection = () => {\n setState((prevState) => ({...prevState, rowSelection: {}}));\n };\n\n const getSelectedRow = useCallback(\n () => table.getSelectedRowModel().flatRows?.[0]?.original ?? null,\n [state.rowSelection]\n );\n\n if (!data) {\n return (\n <Center sx={{flexGrow: 1}}>\n <Loader />\n </Center>\n );\n }\n\n const toggleRowSelection = (row: Row<T>) => {\n table.setRowSelection(() => ({[row.id]: !row.getIsSelected()}));\n };\n\n const rows = table.getRowModel().rows.map((row) => {\n const rowChildren = getExpandChildren?.(row.original) ?? null;\n\n return (\n <Fragment key={row.id}>\n <tr\n onClick={() => toggleRowSelection(row)}\n className={cx(classes.row, {[classes.rowSelected]: row.getIsSelected()})}\n >\n {row.getVisibleCells().map((cell) => {\n const size = cell.column.getSize();\n const width = size !== defaultColumnSizing.size ? size : undefined;\n return (\n <td key={cell.id} style={{width}}>\n <Skeleton visible={loading} sx={!loading ? {borderRadius: 0} : undefined}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Skeleton>\n </td>\n );\n })}\n </tr>\n {rowChildren ? (\n <tr>\n <td\n colSpan={columns.length + 1}\n style={{padding: 0, borderBottomColor: row.getIsExpanded() ? undefined : 'transparent'}}\n >\n <Collapse in={row.getIsExpanded()} px=\"sm\" py=\"xs\">\n {rowChildren}\n </Collapse>\n </td>\n </tr>\n ) : null}\n </Fragment>\n );\n });\n\n return (\n <Box ref={outsideClickRef}>\n <TableContext.Provider\n value={{\n onChange: triggerChange,\n state,\n setState,\n clearFilters,\n getSelectedRow,\n clearSelection,\n form,\n }}\n >\n {header}\n <MantineTable className={classes.table} horizontalSpacing=\"sm\" verticalSpacing=\"xs\" pb=\"sm\">\n <thead className={classes.header}>\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map((columnHeader) => (\n <Th key={columnHeader.id} header={columnHeader} />\n ))}\n </tr>\n ))}\n </thead>\n <tbody>\n {rows.length ? (\n rows\n ) : (\n <tr>\n <td colSpan={columns.length}>{noDataChildren}</td>\n </tr>\n )}\n </tbody>\n </MantineTable>\n {footer}\n </TableContext.Provider>\n </Box>\n );\n};\n\nTable.Actions = TableActions;\nTable.Filter = TableFilter;\nTable.Footer = TableFooter;\nTable.Header = TableHeader;\nTable.Pagination = TablePagination;\nTable.Predicate = TablePredicate;\nTable.PerPage = TablePerPage;\nTable.Predicate = TablePredicate;\nTable.CollapsibleColumn = TableCollapsibleColumn;\nTable.DateRangePicker = TableDateRangePicker;\n"],"names":["Table","useStyles","createStyles","theme","getRef","hasHeader","table","width","paddingLeft","spacing","md","header","position","top","backgroundColor","colorScheme","black","white","transition","zIndex","content","left","right","bottom","borderBottom","colors","gray","rowSelected","ref","row","fn","rgba","primaryColor","data","noDataChildren","getExpandChildren","initialState","columns","onMount","onChange","children","loading","convertedChildren","Children","toArray","find","child","type","TableHeader","footer","TableFooter","predicates","dateRange","initialStateWithoutForm","form","useForm","initialValues","cx","classes","useReactTable","defaultsDeep","pagination","pageSize","TablePerPage","DEFAULT_SIZE","getCoreRowModel","manualPagination","getRowCanExpand","original","useState","state","setState","setOptions","prev","onStateChange","triggerChange","values","useEffect","outsideClickRef","useClickOutside","resetRowSelection","useDidUpdate","clearSelection","globalFilter","sorting","clearFilters","useCallback","setFieldValue","prevState","rowSelection","getSelectedRow","getSelectedRowModel","flatRows","Center","sx","flexGrow","Loader","toggleRowSelection","setRowSelection","id","getIsSelected","rows","getRowModel","map","rowChildren","Fragment","tr","onClick","className","getVisibleCells","cell","size","column","getSize","defaultColumnSizing","undefined","td","style","Skeleton","visible","borderRadius","flexRender","columnDef","getContext","colSpan","length","padding","borderBottomColor","getIsExpanded","Collapse","in","px","py","Box","TableContext","Provider","value","MantineTable","horizontalSpacing","verticalSpacing","pb","thead","getHeaderGroups","headerGroup","headers","columnHeader","Th","tbody","Actions","TableActions","Filter","TableFilter","Footer","Header","Pagination","TablePagination","Predicate","TablePredicate","PerPage","CollapsibleColumn","TableCollapsibleColumn","DateRangePicker","TableDateRangePicker"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {Box, Center, Collapse, createStyles, Loader, Skeleton, Table as MantineTable} from '@mantine/core';\nimport {useForm} from '@mantine/form';\nimport {useClickOutside, useDidUpdate} from '@mantine/hooks';\nimport {\n ColumnDef,\n defaultColumnSizing,\n flexRender,\n getCoreRowModel,\n Row,\n TableState,\n useReactTable,\n} from '@tanstack/react-table';\nimport {InitialTableState} from '@tanstack/table-core';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport {Children, Fragment, ReactElement, ReactNode, useCallback, useEffect, useState} from 'react';\n\nimport {TableActions} from './TableActions';\nimport {TableCollapsibleColumn} from './TableCollapsibleColumn';\nimport {onTableChangeEvent, TableContext, TableFormType} from './TableContext';\nimport {TableDateRangePicker} from './TableDateRangePicker';\nimport {TableFilter} from './TableFilter';\nimport {TableFooter} from './TableFooter';\nimport {TableHeader} from './TableHeader';\nimport {TablePagination} from './TablePagination';\nimport {TablePerPage} from './TablePerPage';\nimport {TablePredicate} from './TablePredicate';\nimport {Th} from './Th';\n\nconst useStyles = createStyles<string, {hasHeader: boolean}>((theme, {hasHeader}, getRef) => ({\n table: {\n width: '100%',\n '& td:first-child': {\n paddingLeft: theme.spacing.md,\n },\n },\n\n header: {\n position: 'sticky',\n top: hasHeader ? 69 : 0,\n backgroundColor: theme.colorScheme === 'dark' ? theme.black : theme.white,\n transition: 'box-shadow 150ms ease',\n zIndex: 12, // skeleton is 11\n '& tr th:first-child div': {\n paddingLeft: theme.spacing.md,\n },\n\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n borderBottom: `1px solid ${theme.colors.gray[2]}`,\n },\n },\n\n rowSelected: {\n ref: getRef('rowSelected'),\n },\n\n row: {\n [`&:hover, &.${getRef('rowSelected')}`]: {\n backgroundColor:\n theme.colorScheme === 'dark'\n ? theme.fn.rgba(theme.colors[theme.primaryColor][7], 0.2)\n : theme.colors[theme.primaryColor][0],\n },\n },\n}));\n\ninterface TableProps<T> {\n /**\n * Data to display in the table\n */\n data: T[];\n /**\n * Columns to display in the table.\n *\n * @see https://tanstack.com/table/v8/docs/guide/column-defs\n */\n columns: Array<ColumnDef<T>>;\n /**\n * Function called when the table mounts\n *\n * @param state the state of the table\n */\n onMount?: onTableChangeEvent;\n /**\n * Function called when the table should update\n *\n * @param state the state of the table\n */\n onChange?: onTableChangeEvent;\n /**\n * Function that generates the expandable content of a row\n * Return null for rows that don't need to be expandable\n *\n * @param datum the row for which the children should be generated.\n */\n getExpandChildren?: (datum: T) => ReactNode;\n /**\n * React children to show when the table has no rows to show. You can leverage useTable to get the state of the table\n */\n noDataChildren?: ReactNode;\n /**\n * Whether the table is loading or not\n *\n * @default false\n */\n loading?: boolean;\n /**\n * Childrens to display in the table. They need to be wrap in either `Table.Header` or `Table.Footer`\n *\n * @example\n * <Table ...>\n * <Table.Header>\n * <div>Hello</div>\n * </Table.Header>\n * </Table>\n */\n children?: ReactNode;\n\n /**\n * Initial state of the table\n */\n initialState?: InitialTableState & Partial<TableFormType>;\n}\n\ninterface TableType {\n <T>(props: TableProps<T>): ReactElement;\n Actions: typeof TableActions;\n Filter: typeof TableFilter;\n Footer: typeof TableFooter;\n Header: typeof TableHeader;\n Pagination: typeof TablePagination;\n PerPage: typeof TablePerPage;\n Predicate: typeof TablePredicate;\n CollapsibleColumn: typeof TableCollapsibleColumn;\n DateRangePicker: typeof TableDateRangePicker;\n}\n\nexport const Table: TableType = <T,>({\n data,\n noDataChildren,\n getExpandChildren,\n initialState = {},\n columns,\n onMount,\n onChange,\n children,\n loading = false,\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\n const {predicates, dateRange, ...initialStateWithoutForm} = initialState;\n const form = useForm<TableFormType>({\n initialValues: {predicates: initialState?.predicates ?? {}, dateRange: initialState?.dateRange ?? [null, null]},\n });\n\n const {cx, classes} = useStyles({hasHeader: !!header});\n\n const table = useReactTable({\n initialState: defaultsDeep(initialStateWithoutForm, {pagination: {pageSize: TablePerPage.DEFAULT_SIZE}}),\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n manualPagination: true,\n getRowCanExpand: (row: Row<T>) => !!getExpandChildren?.(row.original) ?? false,\n });\n const [state, setState] = useState<TableState>(table.initialState);\n table.setOptions((prev) => ({\n ...prev,\n state,\n onStateChange: setState,\n }));\n\n const triggerChange = () => onChange?.({...state, ...form.values});\n\n useEffect(() => {\n onMount?.({...state, ...form.values});\n }, []);\n\n const outsideClickRef = useClickOutside(() => {\n table.resetRowSelection(true);\n });\n\n useDidUpdate(() => {\n triggerChange();\n clearSelection();\n }, [state.globalFilter, state.sorting, state.pagination, form.values]);\n\n const clearFilters = useCallback(() => {\n form.setFieldValue('predicates', {});\n setState((prevState) => ({...prevState, globalFilter: ''}));\n }, []);\n\n const clearSelection = () => {\n setState((prevState) => ({...prevState, rowSelection: {}}));\n };\n\n const getSelectedRow = useCallback(\n () => table.getSelectedRowModel().flatRows?.[0]?.original ?? null,\n [state.rowSelection]\n );\n\n if (!data) {\n return (\n <Center sx={{flexGrow: 1}}>\n <Loader />\n </Center>\n );\n }\n\n const toggleRowSelection = (row: Row<T>) => {\n table.setRowSelection(() => ({[row.id]: !row.getIsSelected()}));\n };\n\n const rows = table.getRowModel().rows.map((row) => {\n const rowChildren = getExpandChildren?.(row.original) ?? null;\n\n return (\n <Fragment key={row.id}>\n <tr\n onClick={() => toggleRowSelection(row)}\n className={cx(classes.row, {[classes.rowSelected]: row.getIsSelected()})}\n >\n {row.getVisibleCells().map((cell) => {\n const size = cell.column.getSize();\n const width = size !== defaultColumnSizing.size ? size : undefined;\n return (\n <td key={cell.id} style={{width}}>\n <Skeleton visible={loading} sx={!loading ? {borderRadius: 0} : undefined}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Skeleton>\n </td>\n );\n })}\n </tr>\n {rowChildren ? (\n <tr>\n <td\n colSpan={columns.length + 1}\n style={{padding: 0, borderBottomColor: row.getIsExpanded() ? undefined : 'transparent'}}\n >\n <Collapse in={row.getIsExpanded()} px=\"sm\" py=\"xs\">\n {rowChildren}\n </Collapse>\n </td>\n </tr>\n ) : null}\n </Fragment>\n );\n });\n\n return (\n <Box ref={outsideClickRef}>\n <TableContext.Provider\n value={{\n onChange: triggerChange,\n state,\n setState,\n clearFilters,\n getSelectedRow,\n clearSelection,\n form,\n containerRef: outsideClickRef,\n }}\n >\n {header}\n <MantineTable className={classes.table} horizontalSpacing=\"sm\" verticalSpacing=\"xs\" pb=\"sm\">\n <thead className={classes.header}>\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map((columnHeader) => (\n <Th key={columnHeader.id} header={columnHeader} />\n ))}\n </tr>\n ))}\n </thead>\n <tbody>\n {rows.length ? (\n rows\n ) : (\n <tr>\n <td colSpan={columns.length}>{noDataChildren}</td>\n </tr>\n )}\n </tbody>\n </MantineTable>\n {footer}\n </TableContext.Provider>\n </Box>\n );\n};\n\nTable.Actions = TableActions;\nTable.Filter = TableFilter;\nTable.Footer = TableFooter;\nTable.Header = TableHeader;\nTable.Pagination = TablePagination;\nTable.Predicate = TablePredicate;\nTable.PerPage = TablePerPage;\nTable.Predicate = TablePredicate;\nTable.CollapsibleColumn = TableCollapsibleColumn;\nTable.DateRangePicker = TableDateRangePicker;\n"],"names":["Table","useStyles","createStyles","theme","getRef","hasHeader","table","width","paddingLeft","spacing","md","header","position","top","backgroundColor","colorScheme","black","white","transition","zIndex","content","left","right","bottom","borderBottom","colors","gray","rowSelected","ref","row","fn","rgba","primaryColor","data","noDataChildren","getExpandChildren","initialState","columns","onMount","onChange","children","loading","convertedChildren","Children","toArray","find","child","type","TableHeader","footer","TableFooter","predicates","dateRange","initialStateWithoutForm","form","useForm","initialValues","cx","classes","useReactTable","defaultsDeep","pagination","pageSize","TablePerPage","DEFAULT_SIZE","getCoreRowModel","manualPagination","getRowCanExpand","original","useState","state","setState","setOptions","prev","onStateChange","triggerChange","values","useEffect","outsideClickRef","useClickOutside","resetRowSelection","useDidUpdate","clearSelection","globalFilter","sorting","clearFilters","useCallback","setFieldValue","prevState","rowSelection","getSelectedRow","getSelectedRowModel","flatRows","Center","sx","flexGrow","Loader","toggleRowSelection","setRowSelection","id","getIsSelected","rows","getRowModel","map","rowChildren","Fragment","tr","onClick","className","getVisibleCells","cell","size","column","getSize","defaultColumnSizing","undefined","td","style","Skeleton","visible","borderRadius","flexRender","columnDef","getContext","colSpan","length","padding","borderBottomColor","getIsExpanded","Collapse","in","px","py","Box","TableContext","Provider","value","containerRef","MantineTable","horizontalSpacing","verticalSpacing","pb","thead","getHeaderGroups","headerGroup","headers","columnHeader","Th","tbody","Actions","TableActions","Filter","TableFilter","Footer","Header","Pagination","TablePagination","Predicate","TablePredicate","PerPage","CollapsibleColumn","TableCollapsibleColumn","DateRangePicker","TableDateRangePicker"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/TableContext.tsx"],"sourcesContent":["import {DateRangePickerValue} from '@mantine/dates';\nimport {UseFormReturnType} from '@mantine/form';\nimport {TableState} from '@tanstack/react-table';\nimport {createContext, Dispatch} from 'react';\n\nexport type onTableChangeEvent = (params: TableState & TableFormType) => void;\n\nexport type TableFormType = {\n /**\n * Object containing the table predicates and their selected values\n *\n * @example {type: \"LONG\", origin: \"system\"}\n */\n predicates: Record<string, string>;\n /**\n * Selected date range in the table\n *\n * @example [new Date(2022, 0, 1), new Date(2022, 0, 31)]\n */\n dateRange: DateRangePickerValue;\n};\n\ntype TableContextType = {\n /**\n * Function to call when the table needs an update\n */\n onChange: () => void;\n /**\n * Internal state of the table\n *\n * @see https://tanstack.com/table/v8/docs/api/core/table#state\n */\n state: TableState;\n /**\n * Function to update the table state\n */\n setState: Dispatch<(prevState: TableState) => TableState>;\n /**\n * Function that clears the filter and predicates\n */\n clearFilters: () => void;\n /**\n * Function that returns the selected row if any\n */\n getSelectedRow: () => any | null;\n /**\n * Function that clear the selected row\n */\n clearSelection: () => void;\n /**\n * Form used to handle predicates and dateRange\n */\n form: UseFormReturnType<TableFormType>;\n};\n\nexport const TableContext = createContext<TableContextType | null>(null);\n"],"names":["TableContext","createContext"],"mappings":"AAAA;;;;+BAuDaA,cAAY;;;eAAZA,YAAY;;;qBApDa,OAAO;AAoDtC,IAAMA,YAAY,iBAAGC,IAAAA,MAAa,cAAA,EAA0B,IAAI,CAAC,AAAC"}
1
+ {"version":3,"sources":["../../../../src/components/table/TableContext.tsx"],"sourcesContent":["import {DateRangePickerValue} from '@mantine/dates';\nimport {UseFormReturnType} from '@mantine/form';\nimport {TableState} from '@tanstack/react-table';\nimport {createContext, Dispatch, RefObject} from 'react';\n\nexport type onTableChangeEvent = (params: TableState & TableFormType) => void;\n\nexport type TableFormType = {\n /**\n * Object containing the table predicates and their selected values\n *\n * @example {type: \"LONG\", origin: \"system\"}\n */\n predicates: Record<string, string>;\n /**\n * Selected date range in the table\n *\n * @example [new Date(2022, 0, 1), new Date(2022, 0, 31)]\n */\n dateRange: DateRangePickerValue;\n};\n\ntype TableContextType = {\n /**\n * Function to call when the table needs an update\n */\n onChange: () => void;\n /**\n * Internal state of the table\n *\n * @see https://tanstack.com/table/v8/docs/api/core/table#state\n */\n state: TableState;\n /**\n * Function to update the table state\n */\n setState: Dispatch<(prevState: TableState) => TableState>;\n /**\n * Function that clears the filter and predicates\n */\n clearFilters: () => void;\n /**\n * Function that returns the selected row if any\n */\n getSelectedRow: () => any | null;\n /**\n * Function that clear the selected row\n */\n clearSelection: () => void;\n /**\n * Form used to handle predicates and dateRange\n */\n form: UseFormReturnType<TableFormType>;\n /**\n * Table container ref\n */\n containerRef: RefObject<HTMLDivElement>;\n};\n\nexport const TableContext = createContext<TableContextType | null>(null);\n"],"names":["TableContext","createContext"],"mappings":"AAAA;;;;+BA2DaA,cAAY;;;eAAZA,YAAY;;;qBAxDwB,OAAO;AAwDjD,IAAMA,YAAY,iBAAGC,IAAAA,MAAa,cAAA,EAA0B,IAAI,CAAC,AAAC"}
@@ -15,7 +15,7 @@ var _core = require("@mantine/core");
15
15
  var _useTable = require("./useTable");
16
16
  var TablePagination = function(param) {
17
17
  var totalPages = param.totalPages;
18
- var ref = (0, _useTable.useTable)(), state = ref.state, setState = ref.setState;
18
+ var ref = (0, _useTable.useTable)(), state = ref.state, setState = ref.setState, containerRef = ref.containerRef;
19
19
  var updatePage = function(newPage) {
20
20
  setState(function(prevState) {
21
21
  return _objectSpreadProps(_objectSpread({}, prevState), {
@@ -24,6 +24,9 @@ var TablePagination = function(param) {
24
24
  })
25
25
  });
26
26
  });
27
+ containerRef.current.scrollIntoView({
28
+ behavior: "smooth"
29
+ });
27
30
  };
28
31
  return /*#__PURE__*/ (0, _jsxRuntime.jsx)(_core.Pagination, {
29
32
  page: state.pagination.pageIndex + 1,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/TablePagination.tsx"],"sourcesContent":["import {Pagination} from '@mantine/core';\nimport {TableState} from '@tanstack/react-table';\nimport {FunctionComponent} from 'react';\nimport {useTable} from './useTable';\n\ninterface TablePaginationProps {\n /**\n * The total number of page\n */\n totalPages: number;\n}\n\nexport const TablePagination: FunctionComponent<TablePaginationProps> = ({totalPages}) => {\n const {state, setState} = useTable();\n const updatePage = (newPage: number) => {\n setState((prevState: TableState) => ({\n ...prevState,\n pagination: {...prevState.pagination, pageIndex: newPage - 1},\n }));\n };\n\n return (\n <Pagination\n page={state.pagination.pageIndex + 1}\n onChange={updatePage}\n total={totalPages}\n boundaries={0}\n size=\"md\"\n getItemAriaLabel={(label) => {\n switch (label) {\n case 'prev':\n return 'previous page';\n case 'next':\n return 'next page';\n default:\n return `${label}`;\n }\n }}\n />\n );\n};\n"],"names":["TablePagination","totalPages","useTable","state","setState","updatePage","newPage","prevState","pagination","pageIndex","Pagination","page","onChange","total","boundaries","size","getItemAriaLabel","label"],"mappings":"AAAA;;;;+BAYaA,iBAAe;;;eAAfA,eAAe;;;;;;oBAZH,eAAe;wBAGjB,YAAY;AAS5B,IAAMA,eAAe,GAA4C,gBAAkB;QAAhBC,UAAU,SAAVA,UAAU;IAChF,IAA0BC,GAAU,GAAVA,IAAAA,SAAQ,SAAA,GAAE,EAA7BC,KAAK,GAAcD,GAAU,CAA7BC,KAAK,EAAEC,QAAQ,GAAIF,GAAU,CAAtBE,QAAQ,AAAe;IACrC,IAAMC,UAAU,GAAG,SAACC,OAAe,EAAK;QACpCF,QAAQ,CAAC,SAACG,SAAqB;mBAAM,qCAC9BA,SAAS;gBACZC,UAAU,EAAE,qCAAID,SAAS,CAACC,UAAU;oBAAEC,SAAS,EAAEH,OAAO,GAAG,CAAC;kBAAC;cAChE;SAAC,CAAC,CAAC;IACR,CAAC,AAAC;IAEF,qBACI,qBAACI,KAAU,WAAA;QACPC,IAAI,EAAER,KAAK,CAACK,UAAU,CAACC,SAAS,GAAG,CAAC;QACpCG,QAAQ,EAAEP,UAAU;QACpBQ,KAAK,EAAEZ,UAAU;QACjBa,UAAU,EAAE,CAAC;QACbC,IAAI,EAAC,IAAI;QACTC,gBAAgB,EAAE,SAACC,KAAK,EAAK;YACzB,OAAQA,KAAK;gBACT,KAAK,MAAM;oBACP,OAAO,eAAe,CAAC;gBAC3B,KAAK,MAAM;oBACP,OAAO,WAAW,CAAC;gBACvB;oBACI,OAAO,AAAC,EAAA,CAAQ,MAAA,CAANA,KAAK,CAAE,CAAC;aACzB;QACL,CAAC;MACH,CACJ;AACN,CAAC,AAAC"}
1
+ {"version":3,"sources":["../../../../src/components/table/TablePagination.tsx"],"sourcesContent":["import {Pagination} from '@mantine/core';\nimport {TableState} from '@tanstack/react-table';\nimport {FunctionComponent} from 'react';\nimport {useTable} from './useTable';\n\ninterface TablePaginationProps {\n /**\n * The total number of page\n */\n totalPages: number;\n}\n\nexport const TablePagination: FunctionComponent<TablePaginationProps> = ({totalPages}) => {\n const {state, setState, containerRef} = useTable();\n const updatePage = (newPage: number) => {\n setState((prevState: TableState) => ({\n ...prevState,\n pagination: {...prevState.pagination, pageIndex: newPage - 1},\n }));\n containerRef.current.scrollIntoView({behavior: 'smooth'});\n };\n\n return (\n <Pagination\n page={state.pagination.pageIndex + 1}\n onChange={updatePage}\n total={totalPages}\n boundaries={0}\n size=\"md\"\n getItemAriaLabel={(label) => {\n switch (label) {\n case 'prev':\n return 'previous page';\n case 'next':\n return 'next page';\n default:\n return `${label}`;\n }\n }}\n />\n );\n};\n"],"names":["TablePagination","totalPages","useTable","state","setState","containerRef","updatePage","newPage","prevState","pagination","pageIndex","current","scrollIntoView","behavior","Pagination","page","onChange","total","boundaries","size","getItemAriaLabel","label"],"mappings":"AAAA;;;;+BAYaA,iBAAe;;;eAAfA,eAAe;;;;;;oBAZH,eAAe;wBAGjB,YAAY;AAS5B,IAAMA,eAAe,GAA4C,gBAAkB;QAAhBC,UAAU,SAAVA,UAAU;IAChF,IAAwCC,GAAU,GAAVA,IAAAA,SAAQ,SAAA,GAAE,EAA3CC,KAAK,GAA4BD,GAAU,CAA3CC,KAAK,EAAEC,QAAQ,GAAkBF,GAAU,CAApCE,QAAQ,EAAEC,YAAY,GAAIH,GAAU,CAA1BG,YAAY,AAAe;IACnD,IAAMC,UAAU,GAAG,SAACC,OAAe,EAAK;QACpCH,QAAQ,CAAC,SAACI,SAAqB;mBAAM,qCAC9BA,SAAS;gBACZC,UAAU,EAAE,qCAAID,SAAS,CAACC,UAAU;oBAAEC,SAAS,EAAEH,OAAO,GAAG,CAAC;kBAAC;cAChE;SAAC,CAAC,CAAC;QACJF,YAAY,CAACM,OAAO,CAACC,cAAc,CAAC;YAACC,QAAQ,EAAE,QAAQ;SAAC,CAAC,CAAC;IAC9D,CAAC,AAAC;IAEF,qBACI,qBAACC,KAAU,WAAA;QACPC,IAAI,EAAEZ,KAAK,CAACM,UAAU,CAACC,SAAS,GAAG,CAAC;QACpCM,QAAQ,EAAEV,UAAU;QACpBW,KAAK,EAAEhB,UAAU;QACjBiB,UAAU,EAAE,CAAC;QACbC,IAAI,EAAC,IAAI;QACTC,gBAAgB,EAAE,SAACC,KAAK,EAAK;YACzB,OAAQA,KAAK;gBACT,KAAK,MAAM;oBACP,OAAO,eAAe,CAAC;gBAC3B,KAAK,MAAM;oBACP,OAAO,WAAW,CAAC;gBACvB;oBACI,OAAO,AAAC,EAAA,CAAQ,MAAA,CAANA,KAAK,CAAE,CAAC;aACzB;QACL,CAAC;MACH,CACJ;AACN,CAAC,AAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.tsx"],"names":[],"mappings":"AAGA,OAAO,EACH,SAAS,EAOZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAqB,YAAY,EAAE,SAAS,EAAmC,MAAM,OAAO,CAAC;AAEpG,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,sBAAsB,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAC,kBAAkB,EAAgB,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AA6ChD,UAAU,UAAU,CAAC,CAAC;IAClB;;OAEG;IACH,IAAI,EAAE,CAAC,EAAE,CAAC;IACV;;;;OAIG;IACH,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,CAAC;IAC5C;;OAEG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC7D;AAED,UAAU,SAAS;IACf,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;IACxC,OAAO,EAAE,OAAO,YAAY,CAAC;IAC7B,MAAM,EAAE,OAAO,WAAW,CAAC;IAC3B,MAAM,EAAE,OAAO,WAAW,CAAC;IAC3B,MAAM,EAAE,OAAO,WAAW,CAAC;IAC3B,UAAU,EAAE,OAAO,eAAe,CAAC;IACnC,OAAO,EAAE,OAAO,YAAY,CAAC;IAC7B,SAAS,EAAE,OAAO,cAAc,CAAC;IACjC,iBAAiB,EAAE,OAAO,sBAAsB,CAAC;IACjD,eAAe,EAAE,OAAO,oBAAoB,CAAC;CAChD;AAED,eAAO,MAAM,KAAK,EAAE,SAyJnB,CAAC"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.tsx"],"names":[],"mappings":"AAGA,OAAO,EACH,SAAS,EAOZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAqB,YAAY,EAAE,SAAS,EAAmC,MAAM,OAAO,CAAC;AAEpG,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,sBAAsB,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAC,kBAAkB,EAAgB,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AA6ChD,UAAU,UAAU,CAAC,CAAC;IAClB;;OAEG;IACH,IAAI,EAAE,CAAC,EAAE,CAAC;IACV;;;;OAIG;IACH,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,CAAC;IAC5C;;OAEG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC7D;AAED,UAAU,SAAS;IACf,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;IACxC,OAAO,EAAE,OAAO,YAAY,CAAC;IAC7B,MAAM,EAAE,OAAO,WAAW,CAAC;IAC3B,MAAM,EAAE,OAAO,WAAW,CAAC;IAC3B,MAAM,EAAE,OAAO,WAAW,CAAC;IAC3B,UAAU,EAAE,OAAO,eAAe,CAAC;IACnC,OAAO,EAAE,OAAO,YAAY,CAAC;IAC7B,SAAS,EAAE,OAAO,cAAc,CAAC;IACjC,iBAAiB,EAAE,OAAO,sBAAsB,CAAC;IACjD,eAAe,EAAE,OAAO,oBAAoB,CAAC;CAChD;AAED,eAAO,MAAM,KAAK,EAAE,SA0JnB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { DateRangePickerValue } from '@mantine/dates';
2
2
  import { UseFormReturnType } from '@mantine/form';
3
3
  import { TableState } from '@tanstack/react-table';
4
- import { Dispatch } from 'react';
4
+ import { Dispatch, RefObject } from 'react';
5
5
  export declare type onTableChangeEvent = (params: TableState & TableFormType) => void;
6
6
  export declare type TableFormType = {
7
7
  /**
@@ -48,6 +48,10 @@ declare type TableContextType = {
48
48
  * Form used to handle predicates and dateRange
49
49
  */
50
50
  form: UseFormReturnType<TableFormType>;
51
+ /**
52
+ * Table container ref
53
+ */
54
+ containerRef: RefObject<HTMLDivElement>;
51
55
  };
52
56
  export declare const TableContext: import("react").Context<TableContextType>;
53
57
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"TableContext.d.ts","sourceRoot":"","sources":["../../../../src/components/table/TableContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAChD,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAgB,QAAQ,EAAC,MAAM,OAAO,CAAC;AAE9C,oBAAY,kBAAkB,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,aAAa,KAAK,IAAI,CAAC;AAE9E,oBAAY,aAAa,GAAG;IACxB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC;;;;OAIG;IACH,SAAS,EAAE,oBAAoB,CAAC;CACnC,CAAC;AAEF,aAAK,gBAAgB,GAAG;IACpB;;OAEG;IACH,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB;;;;OAIG;IACH,KAAK,EAAE,UAAU,CAAC;IAClB;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC,CAAC,SAAS,EAAE,UAAU,KAAK,UAAU,CAAC,CAAC;IAC1D;;OAEG;IACH,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB;;OAEG;IACH,cAAc,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC;IACjC;;OAEG;IACH,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B;;OAEG;IACH,IAAI,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;CAC1C,CAAC;AAEF,eAAO,MAAM,YAAY,2CAA+C,CAAC"}
1
+ {"version":3,"file":"TableContext.d.ts","sourceRoot":"","sources":["../../../../src/components/table/TableContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAChD,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAgB,QAAQ,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAEzD,oBAAY,kBAAkB,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,aAAa,KAAK,IAAI,CAAC;AAE9E,oBAAY,aAAa,GAAG;IACxB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC;;;;OAIG;IACH,SAAS,EAAE,oBAAoB,CAAC;CACnC,CAAC;AAEF,aAAK,gBAAgB,GAAG;IACpB;;OAEG;IACH,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB;;;;OAIG;IACH,KAAK,EAAE,UAAU,CAAC;IAClB;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC,CAAC,SAAS,EAAE,UAAU,KAAK,UAAU,CAAC,CAAC;IAC1D;;OAEG;IACH,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB;;OAEG;IACH,cAAc,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC;IACjC;;OAEG;IACH,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B;;OAEG;IACH,IAAI,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACvC;;OAEG;IACH,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,YAAY,2CAA+C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TablePagination.d.ts","sourceRoot":"","sources":["../../../../src/components/table/TablePagination.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAC,iBAAiB,EAAC,MAAM,OAAO,CAAC;AAGxC,UAAU,oBAAoB;IAC1B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,oBAAoB,CA4BnE,CAAC"}
1
+ {"version":3,"file":"TablePagination.d.ts","sourceRoot":"","sources":["../../../../src/components/table/TablePagination.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAC,iBAAiB,EAAC,MAAM,OAAO,CAAC;AAGxC,UAAU,oBAAoB;IAC1B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,oBAAoB,CA6BnE,CAAC"}
@@ -7,5 +7,6 @@ export declare const useTable: () => {
7
7
  getSelectedRow: () => any;
8
8
  clearSelection: () => void;
9
9
  form: import("@mantine/form").UseFormReturnType<import("./TableContext").TableFormType, (values: import("./TableContext").TableFormType) => import("./TableContext").TableFormType>;
10
+ containerRef: import("react").RefObject<HTMLDivElement>;
10
11
  };
11
12
  //# sourceMappingURL=useTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTable.d.ts","sourceRoot":"","sources":["../../../../src/components/table/useTable.tsx"],"names":[],"mappings":";AAGA,eAAO,MAAM,QAAQ;;;;;;;;CAOpB,CAAC"}
1
+ {"version":3,"file":"useTable.d.ts","sourceRoot":"","sources":["../../../../src/components/table/useTable.tsx"],"names":[],"mappings":";AAGA,eAAO,MAAM,QAAQ;;;;;;;;;CAOpB,CAAC"}
@@ -212,7 +212,8 @@ export var Table = function(param) {
212
212
  clearFilters: clearFilters,
213
213
  getSelectedRow: getSelectedRow,
214
214
  clearSelection: clearSelection,
215
- form: form
215
+ form: form,
216
+ containerRef: outsideClickRef
216
217
  },
217
218
  children: [
218
219
  header,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {Box, Center, Collapse, createStyles, Loader, Skeleton, Table as MantineTable} from '@mantine/core';\nimport {useForm} from '@mantine/form';\nimport {useClickOutside, useDidUpdate} from '@mantine/hooks';\nimport {\n ColumnDef,\n defaultColumnSizing,\n flexRender,\n getCoreRowModel,\n Row,\n TableState,\n useReactTable,\n} from '@tanstack/react-table';\nimport {InitialTableState} from '@tanstack/table-core';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport {Children, Fragment, ReactElement, ReactNode, useCallback, useEffect, useState} from 'react';\n\nimport {TableActions} from './TableActions';\nimport {TableCollapsibleColumn} from './TableCollapsibleColumn';\nimport {onTableChangeEvent, TableContext, TableFormType} from './TableContext';\nimport {TableDateRangePicker} from './TableDateRangePicker';\nimport {TableFilter} from './TableFilter';\nimport {TableFooter} from './TableFooter';\nimport {TableHeader} from './TableHeader';\nimport {TablePagination} from './TablePagination';\nimport {TablePerPage} from './TablePerPage';\nimport {TablePredicate} from './TablePredicate';\nimport {Th} from './Th';\n\nconst useStyles = createStyles<string, {hasHeader: boolean}>((theme, {hasHeader}, getRef) => ({\n table: {\n width: '100%',\n '& td:first-child': {\n paddingLeft: theme.spacing.md,\n },\n },\n\n header: {\n position: 'sticky',\n top: hasHeader ? 69 : 0,\n backgroundColor: theme.colorScheme === 'dark' ? theme.black : theme.white,\n transition: 'box-shadow 150ms ease',\n zIndex: 12, // skeleton is 11\n '& tr th:first-child div': {\n paddingLeft: theme.spacing.md,\n },\n\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n borderBottom: `1px solid ${theme.colors.gray[2]}`,\n },\n },\n\n rowSelected: {\n ref: getRef('rowSelected'),\n },\n\n row: {\n [`&:hover, &.${getRef('rowSelected')}`]: {\n backgroundColor:\n theme.colorScheme === 'dark'\n ? theme.fn.rgba(theme.colors[theme.primaryColor][7], 0.2)\n : theme.colors[theme.primaryColor][0],\n },\n },\n}));\n\ninterface TableProps<T> {\n /**\n * Data to display in the table\n */\n data: T[];\n /**\n * Columns to display in the table.\n *\n * @see https://tanstack.com/table/v8/docs/guide/column-defs\n */\n columns: Array<ColumnDef<T>>;\n /**\n * Function called when the table mounts\n *\n * @param state the state of the table\n */\n onMount?: onTableChangeEvent;\n /**\n * Function called when the table should update\n *\n * @param state the state of the table\n */\n onChange?: onTableChangeEvent;\n /**\n * Function that generates the expandable content of a row\n * Return null for rows that don't need to be expandable\n *\n * @param datum the row for which the children should be generated.\n */\n getExpandChildren?: (datum: T) => ReactNode;\n /**\n * React children to show when the table has no rows to show. You can leverage useTable to get the state of the table\n */\n noDataChildren?: ReactNode;\n /**\n * Whether the table is loading or not\n *\n * @default false\n */\n loading?: boolean;\n /**\n * Childrens to display in the table. They need to be wrap in either `Table.Header` or `Table.Footer`\n *\n * @example\n * <Table ...>\n * <Table.Header>\n * <div>Hello</div>\n * </Table.Header>\n * </Table>\n */\n children?: ReactNode;\n\n /**\n * Initial state of the table\n */\n initialState?: InitialTableState & Partial<TableFormType>;\n}\n\ninterface TableType {\n <T>(props: TableProps<T>): ReactElement;\n Actions: typeof TableActions;\n Filter: typeof TableFilter;\n Footer: typeof TableFooter;\n Header: typeof TableHeader;\n Pagination: typeof TablePagination;\n PerPage: typeof TablePerPage;\n Predicate: typeof TablePredicate;\n CollapsibleColumn: typeof TableCollapsibleColumn;\n DateRangePicker: typeof TableDateRangePicker;\n}\n\nexport const Table: TableType = <T,>({\n data,\n noDataChildren,\n getExpandChildren,\n initialState = {},\n columns,\n onMount,\n onChange,\n children,\n loading = false,\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\n const {predicates, dateRange, ...initialStateWithoutForm} = initialState;\n const form = useForm<TableFormType>({\n initialValues: {predicates: initialState?.predicates ?? {}, dateRange: initialState?.dateRange ?? [null, null]},\n });\n\n const {cx, classes} = useStyles({hasHeader: !!header});\n\n const table = useReactTable({\n initialState: defaultsDeep(initialStateWithoutForm, {pagination: {pageSize: TablePerPage.DEFAULT_SIZE}}),\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n manualPagination: true,\n getRowCanExpand: (row: Row<T>) => !!getExpandChildren?.(row.original) ?? false,\n });\n const [state, setState] = useState<TableState>(table.initialState);\n table.setOptions((prev) => ({\n ...prev,\n state,\n onStateChange: setState,\n }));\n\n const triggerChange = () => onChange?.({...state, ...form.values});\n\n useEffect(() => {\n onMount?.({...state, ...form.values});\n }, []);\n\n const outsideClickRef = useClickOutside(() => {\n table.resetRowSelection(true);\n });\n\n useDidUpdate(() => {\n triggerChange();\n clearSelection();\n }, [state.globalFilter, state.sorting, state.pagination, form.values]);\n\n const clearFilters = useCallback(() => {\n form.setFieldValue('predicates', {});\n setState((prevState) => ({...prevState, globalFilter: ''}));\n }, []);\n\n const clearSelection = () => {\n setState((prevState) => ({...prevState, rowSelection: {}}));\n };\n\n const getSelectedRow = useCallback(\n () => table.getSelectedRowModel().flatRows?.[0]?.original ?? null,\n [state.rowSelection]\n );\n\n if (!data) {\n return (\n <Center sx={{flexGrow: 1}}>\n <Loader />\n </Center>\n );\n }\n\n const toggleRowSelection = (row: Row<T>) => {\n table.setRowSelection(() => ({[row.id]: !row.getIsSelected()}));\n };\n\n const rows = table.getRowModel().rows.map((row) => {\n const rowChildren = getExpandChildren?.(row.original) ?? null;\n\n return (\n <Fragment key={row.id}>\n <tr\n onClick={() => toggleRowSelection(row)}\n className={cx(classes.row, {[classes.rowSelected]: row.getIsSelected()})}\n >\n {row.getVisibleCells().map((cell) => {\n const size = cell.column.getSize();\n const width = size !== defaultColumnSizing.size ? size : undefined;\n return (\n <td key={cell.id} style={{width}}>\n <Skeleton visible={loading} sx={!loading ? {borderRadius: 0} : undefined}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Skeleton>\n </td>\n );\n })}\n </tr>\n {rowChildren ? (\n <tr>\n <td\n colSpan={columns.length + 1}\n style={{padding: 0, borderBottomColor: row.getIsExpanded() ? undefined : 'transparent'}}\n >\n <Collapse in={row.getIsExpanded()} px=\"sm\" py=\"xs\">\n {rowChildren}\n </Collapse>\n </td>\n </tr>\n ) : null}\n </Fragment>\n );\n });\n\n return (\n <Box ref={outsideClickRef}>\n <TableContext.Provider\n value={{\n onChange: triggerChange,\n state,\n setState,\n clearFilters,\n getSelectedRow,\n clearSelection,\n form,\n }}\n >\n {header}\n <MantineTable className={classes.table} horizontalSpacing=\"sm\" verticalSpacing=\"xs\" pb=\"sm\">\n <thead className={classes.header}>\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map((columnHeader) => (\n <Th key={columnHeader.id} header={columnHeader} />\n ))}\n </tr>\n ))}\n </thead>\n <tbody>\n {rows.length ? (\n rows\n ) : (\n <tr>\n <td colSpan={columns.length}>{noDataChildren}</td>\n </tr>\n )}\n </tbody>\n </MantineTable>\n {footer}\n </TableContext.Provider>\n </Box>\n );\n};\n\nTable.Actions = TableActions;\nTable.Filter = TableFilter;\nTable.Footer = TableFooter;\nTable.Header = TableHeader;\nTable.Pagination = TablePagination;\nTable.Predicate = TablePredicate;\nTable.PerPage = TablePerPage;\nTable.Predicate = TablePredicate;\nTable.CollapsibleColumn = TableCollapsibleColumn;\nTable.DateRangePicker = TableDateRangePicker;\n"],"names":["Box","Center","Collapse","createStyles","Loader","Skeleton","Table","MantineTable","useForm","useClickOutside","useDidUpdate","defaultColumnSizing","flexRender","getCoreRowModel","useReactTable","defaultsDeep","Children","Fragment","useCallback","useEffect","useState","TableActions","TableCollapsibleColumn","TableContext","TableDateRangePicker","TableFilter","TableFooter","TableHeader","TablePagination","TablePerPage","TablePredicate","Th","useStyles","theme","getRef","hasHeader","table","width","paddingLeft","spacing","md","header","position","top","backgroundColor","colorScheme","black","white","transition","zIndex","content","left","right","bottom","borderBottom","colors","gray","rowSelected","ref","row","fn","rgba","primaryColor","data","noDataChildren","getExpandChildren","initialState","columns","onMount","onChange","children","loading","convertedChildren","toArray","find","child","type","footer","predicates","dateRange","initialStateWithoutForm","form","initialValues","cx","classes","pagination","pageSize","DEFAULT_SIZE","manualPagination","getRowCanExpand","original","state","setState","setOptions","prev","onStateChange","triggerChange","values","outsideClickRef","resetRowSelection","clearSelection","globalFilter","sorting","clearFilters","setFieldValue","prevState","rowSelection","getSelectedRow","getSelectedRowModel","flatRows","sx","flexGrow","toggleRowSelection","setRowSelection","id","getIsSelected","rows","getRowModel","map","rowChildren","tr","onClick","className","getVisibleCells","cell","size","column","getSize","undefined","td","style","visible","borderRadius","columnDef","getContext","colSpan","length","padding","borderBottomColor","getIsExpanded","in","px","py","Provider","value","horizontalSpacing","verticalSpacing","pb","thead","getHeaderGroups","headerGroup","headers","columnHeader","tbody","Actions","Filter","Footer","Header","Pagination","Predicate","PerPage","CollapsibleColumn","DateRangePicker"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {Box, Center, Collapse, createStyles, Loader, Skeleton, Table as MantineTable} from '@mantine/core';\nimport {useForm} from '@mantine/form';\nimport {useClickOutside, useDidUpdate} from '@mantine/hooks';\nimport {\n ColumnDef,\n defaultColumnSizing,\n flexRender,\n getCoreRowModel,\n Row,\n TableState,\n useReactTable,\n} from '@tanstack/react-table';\nimport {InitialTableState} from '@tanstack/table-core';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport {Children, Fragment, ReactElement, ReactNode, useCallback, useEffect, useState} from 'react';\n\nimport {TableActions} from './TableActions';\nimport {TableCollapsibleColumn} from './TableCollapsibleColumn';\nimport {onTableChangeEvent, TableContext, TableFormType} from './TableContext';\nimport {TableDateRangePicker} from './TableDateRangePicker';\nimport {TableFilter} from './TableFilter';\nimport {TableFooter} from './TableFooter';\nimport {TableHeader} from './TableHeader';\nimport {TablePagination} from './TablePagination';\nimport {TablePerPage} from './TablePerPage';\nimport {TablePredicate} from './TablePredicate';\nimport {Th} from './Th';\n\nconst useStyles = createStyles<string, {hasHeader: boolean}>((theme, {hasHeader}, getRef) => ({\n table: {\n width: '100%',\n '& td:first-child': {\n paddingLeft: theme.spacing.md,\n },\n },\n\n header: {\n position: 'sticky',\n top: hasHeader ? 69 : 0,\n backgroundColor: theme.colorScheme === 'dark' ? theme.black : theme.white,\n transition: 'box-shadow 150ms ease',\n zIndex: 12, // skeleton is 11\n '& tr th:first-child div': {\n paddingLeft: theme.spacing.md,\n },\n\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n borderBottom: `1px solid ${theme.colors.gray[2]}`,\n },\n },\n\n rowSelected: {\n ref: getRef('rowSelected'),\n },\n\n row: {\n [`&:hover, &.${getRef('rowSelected')}`]: {\n backgroundColor:\n theme.colorScheme === 'dark'\n ? theme.fn.rgba(theme.colors[theme.primaryColor][7], 0.2)\n : theme.colors[theme.primaryColor][0],\n },\n },\n}));\n\ninterface TableProps<T> {\n /**\n * Data to display in the table\n */\n data: T[];\n /**\n * Columns to display in the table.\n *\n * @see https://tanstack.com/table/v8/docs/guide/column-defs\n */\n columns: Array<ColumnDef<T>>;\n /**\n * Function called when the table mounts\n *\n * @param state the state of the table\n */\n onMount?: onTableChangeEvent;\n /**\n * Function called when the table should update\n *\n * @param state the state of the table\n */\n onChange?: onTableChangeEvent;\n /**\n * Function that generates the expandable content of a row\n * Return null for rows that don't need to be expandable\n *\n * @param datum the row for which the children should be generated.\n */\n getExpandChildren?: (datum: T) => ReactNode;\n /**\n * React children to show when the table has no rows to show. You can leverage useTable to get the state of the table\n */\n noDataChildren?: ReactNode;\n /**\n * Whether the table is loading or not\n *\n * @default false\n */\n loading?: boolean;\n /**\n * Childrens to display in the table. They need to be wrap in either `Table.Header` or `Table.Footer`\n *\n * @example\n * <Table ...>\n * <Table.Header>\n * <div>Hello</div>\n * </Table.Header>\n * </Table>\n */\n children?: ReactNode;\n\n /**\n * Initial state of the table\n */\n initialState?: InitialTableState & Partial<TableFormType>;\n}\n\ninterface TableType {\n <T>(props: TableProps<T>): ReactElement;\n Actions: typeof TableActions;\n Filter: typeof TableFilter;\n Footer: typeof TableFooter;\n Header: typeof TableHeader;\n Pagination: typeof TablePagination;\n PerPage: typeof TablePerPage;\n Predicate: typeof TablePredicate;\n CollapsibleColumn: typeof TableCollapsibleColumn;\n DateRangePicker: typeof TableDateRangePicker;\n}\n\nexport const Table: TableType = <T,>({\n data,\n noDataChildren,\n getExpandChildren,\n initialState = {},\n columns,\n onMount,\n onChange,\n children,\n loading = false,\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\n const {predicates, dateRange, ...initialStateWithoutForm} = initialState;\n const form = useForm<TableFormType>({\n initialValues: {predicates: initialState?.predicates ?? {}, dateRange: initialState?.dateRange ?? [null, null]},\n });\n\n const {cx, classes} = useStyles({hasHeader: !!header});\n\n const table = useReactTable({\n initialState: defaultsDeep(initialStateWithoutForm, {pagination: {pageSize: TablePerPage.DEFAULT_SIZE}}),\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n manualPagination: true,\n getRowCanExpand: (row: Row<T>) => !!getExpandChildren?.(row.original) ?? false,\n });\n const [state, setState] = useState<TableState>(table.initialState);\n table.setOptions((prev) => ({\n ...prev,\n state,\n onStateChange: setState,\n }));\n\n const triggerChange = () => onChange?.({...state, ...form.values});\n\n useEffect(() => {\n onMount?.({...state, ...form.values});\n }, []);\n\n const outsideClickRef = useClickOutside(() => {\n table.resetRowSelection(true);\n });\n\n useDidUpdate(() => {\n triggerChange();\n clearSelection();\n }, [state.globalFilter, state.sorting, state.pagination, form.values]);\n\n const clearFilters = useCallback(() => {\n form.setFieldValue('predicates', {});\n setState((prevState) => ({...prevState, globalFilter: ''}));\n }, []);\n\n const clearSelection = () => {\n setState((prevState) => ({...prevState, rowSelection: {}}));\n };\n\n const getSelectedRow = useCallback(\n () => table.getSelectedRowModel().flatRows?.[0]?.original ?? null,\n [state.rowSelection]\n );\n\n if (!data) {\n return (\n <Center sx={{flexGrow: 1}}>\n <Loader />\n </Center>\n );\n }\n\n const toggleRowSelection = (row: Row<T>) => {\n table.setRowSelection(() => ({[row.id]: !row.getIsSelected()}));\n };\n\n const rows = table.getRowModel().rows.map((row) => {\n const rowChildren = getExpandChildren?.(row.original) ?? null;\n\n return (\n <Fragment key={row.id}>\n <tr\n onClick={() => toggleRowSelection(row)}\n className={cx(classes.row, {[classes.rowSelected]: row.getIsSelected()})}\n >\n {row.getVisibleCells().map((cell) => {\n const size = cell.column.getSize();\n const width = size !== defaultColumnSizing.size ? size : undefined;\n return (\n <td key={cell.id} style={{width}}>\n <Skeleton visible={loading} sx={!loading ? {borderRadius: 0} : undefined}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Skeleton>\n </td>\n );\n })}\n </tr>\n {rowChildren ? (\n <tr>\n <td\n colSpan={columns.length + 1}\n style={{padding: 0, borderBottomColor: row.getIsExpanded() ? undefined : 'transparent'}}\n >\n <Collapse in={row.getIsExpanded()} px=\"sm\" py=\"xs\">\n {rowChildren}\n </Collapse>\n </td>\n </tr>\n ) : null}\n </Fragment>\n );\n });\n\n return (\n <Box ref={outsideClickRef}>\n <TableContext.Provider\n value={{\n onChange: triggerChange,\n state,\n setState,\n clearFilters,\n getSelectedRow,\n clearSelection,\n form,\n containerRef: outsideClickRef,\n }}\n >\n {header}\n <MantineTable className={classes.table} horizontalSpacing=\"sm\" verticalSpacing=\"xs\" pb=\"sm\">\n <thead className={classes.header}>\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map((columnHeader) => (\n <Th key={columnHeader.id} header={columnHeader} />\n ))}\n </tr>\n ))}\n </thead>\n <tbody>\n {rows.length ? (\n rows\n ) : (\n <tr>\n <td colSpan={columns.length}>{noDataChildren}</td>\n </tr>\n )}\n </tbody>\n </MantineTable>\n {footer}\n </TableContext.Provider>\n </Box>\n );\n};\n\nTable.Actions = TableActions;\nTable.Filter = TableFilter;\nTable.Footer = TableFooter;\nTable.Header = TableHeader;\nTable.Pagination = TablePagination;\nTable.Predicate = TablePredicate;\nTable.PerPage = TablePerPage;\nTable.Predicate = TablePredicate;\nTable.CollapsibleColumn = TableCollapsibleColumn;\nTable.DateRangePicker = TableDateRangePicker;\n"],"names":["Box","Center","Collapse","createStyles","Loader","Skeleton","Table","MantineTable","useForm","useClickOutside","useDidUpdate","defaultColumnSizing","flexRender","getCoreRowModel","useReactTable","defaultsDeep","Children","Fragment","useCallback","useEffect","useState","TableActions","TableCollapsibleColumn","TableContext","TableDateRangePicker","TableFilter","TableFooter","TableHeader","TablePagination","TablePerPage","TablePredicate","Th","useStyles","theme","getRef","hasHeader","table","width","paddingLeft","spacing","md","header","position","top","backgroundColor","colorScheme","black","white","transition","zIndex","content","left","right","bottom","borderBottom","colors","gray","rowSelected","ref","row","fn","rgba","primaryColor","data","noDataChildren","getExpandChildren","initialState","columns","onMount","onChange","children","loading","convertedChildren","toArray","find","child","type","footer","predicates","dateRange","initialStateWithoutForm","form","initialValues","cx","classes","pagination","pageSize","DEFAULT_SIZE","manualPagination","getRowCanExpand","original","state","setState","setOptions","prev","onStateChange","triggerChange","values","outsideClickRef","resetRowSelection","clearSelection","globalFilter","sorting","clearFilters","setFieldValue","prevState","rowSelection","getSelectedRow","getSelectedRowModel","flatRows","sx","flexGrow","toggleRowSelection","setRowSelection","id","getIsSelected","rows","getRowModel","map","rowChildren","tr","onClick","className","getVisibleCells","cell","size","column","getSize","undefined","td","style","visible","borderRadius","columnDef","getContext","colSpan","length","padding","borderBottomColor","getIsExpanded","in","px","py","Provider","value","containerRef","horizontalSpacing","verticalSpacing","pb","thead","getHeaderGroups","headerGroup","headers","columnHeader","tbody","Actions","Filter","Footer","Header","Pagination","Predicate","PerPage","CollapsibleColumn","DateRangePicker"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/TableContext.tsx"],"sourcesContent":["import {DateRangePickerValue} from '@mantine/dates';\nimport {UseFormReturnType} from '@mantine/form';\nimport {TableState} from '@tanstack/react-table';\nimport {createContext, Dispatch} from 'react';\n\nexport type onTableChangeEvent = (params: TableState & TableFormType) => void;\n\nexport type TableFormType = {\n /**\n * Object containing the table predicates and their selected values\n *\n * @example {type: \"LONG\", origin: \"system\"}\n */\n predicates: Record<string, string>;\n /**\n * Selected date range in the table\n *\n * @example [new Date(2022, 0, 1), new Date(2022, 0, 31)]\n */\n dateRange: DateRangePickerValue;\n};\n\ntype TableContextType = {\n /**\n * Function to call when the table needs an update\n */\n onChange: () => void;\n /**\n * Internal state of the table\n *\n * @see https://tanstack.com/table/v8/docs/api/core/table#state\n */\n state: TableState;\n /**\n * Function to update the table state\n */\n setState: Dispatch<(prevState: TableState) => TableState>;\n /**\n * Function that clears the filter and predicates\n */\n clearFilters: () => void;\n /**\n * Function that returns the selected row if any\n */\n getSelectedRow: () => any | null;\n /**\n * Function that clear the selected row\n */\n clearSelection: () => void;\n /**\n * Form used to handle predicates and dateRange\n */\n form: UseFormReturnType<TableFormType>;\n};\n\nexport const TableContext = createContext<TableContextType | null>(null);\n"],"names":["createContext","TableContext"],"mappings":"AAGA,SAAQA,aAAa,QAAiB,OAAO,CAAC;AAoD9C,OAAO,IAAMC,YAAY,iBAAGD,aAAa,CAA0B,IAAI,CAAC,CAAC"}
1
+ {"version":3,"sources":["../../../../src/components/table/TableContext.tsx"],"sourcesContent":["import {DateRangePickerValue} from '@mantine/dates';\nimport {UseFormReturnType} from '@mantine/form';\nimport {TableState} from '@tanstack/react-table';\nimport {createContext, Dispatch, RefObject} from 'react';\n\nexport type onTableChangeEvent = (params: TableState & TableFormType) => void;\n\nexport type TableFormType = {\n /**\n * Object containing the table predicates and their selected values\n *\n * @example {type: \"LONG\", origin: \"system\"}\n */\n predicates: Record<string, string>;\n /**\n * Selected date range in the table\n *\n * @example [new Date(2022, 0, 1), new Date(2022, 0, 31)]\n */\n dateRange: DateRangePickerValue;\n};\n\ntype TableContextType = {\n /**\n * Function to call when the table needs an update\n */\n onChange: () => void;\n /**\n * Internal state of the table\n *\n * @see https://tanstack.com/table/v8/docs/api/core/table#state\n */\n state: TableState;\n /**\n * Function to update the table state\n */\n setState: Dispatch<(prevState: TableState) => TableState>;\n /**\n * Function that clears the filter and predicates\n */\n clearFilters: () => void;\n /**\n * Function that returns the selected row if any\n */\n getSelectedRow: () => any | null;\n /**\n * Function that clear the selected row\n */\n clearSelection: () => void;\n /**\n * Form used to handle predicates and dateRange\n */\n form: UseFormReturnType<TableFormType>;\n /**\n * Table container ref\n */\n containerRef: RefObject<HTMLDivElement>;\n};\n\nexport const TableContext = createContext<TableContextType | null>(null);\n"],"names":["createContext","TableContext"],"mappings":"AAGA,SAAQA,aAAa,QAA4B,OAAO,CAAC;AAwDzD,OAAO,IAAMC,YAAY,iBAAGD,aAAa,CAA0B,IAAI,CAAC,CAAC"}
@@ -5,7 +5,7 @@ import { Pagination } from "@mantine/core";
5
5
  import { useTable } from "./useTable";
6
6
  export var TablePagination = function(param) {
7
7
  var totalPages = param.totalPages;
8
- var ref = useTable(), state = ref.state, setState = ref.setState;
8
+ var ref = useTable(), state = ref.state, setState = ref.setState, containerRef = ref.containerRef;
9
9
  var updatePage = function(newPage) {
10
10
  setState(function(prevState) {
11
11
  return _object_spread_props(_object_spread({}, prevState), {
@@ -14,6 +14,9 @@ export var TablePagination = function(param) {
14
14
  })
15
15
  });
16
16
  });
17
+ containerRef.current.scrollIntoView({
18
+ behavior: "smooth"
19
+ });
17
20
  };
18
21
  return /*#__PURE__*/ _jsx(Pagination, {
19
22
  page: state.pagination.pageIndex + 1,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/TablePagination.tsx"],"sourcesContent":["import {Pagination} from '@mantine/core';\nimport {TableState} from '@tanstack/react-table';\nimport {FunctionComponent} from 'react';\nimport {useTable} from './useTable';\n\ninterface TablePaginationProps {\n /**\n * The total number of page\n */\n totalPages: number;\n}\n\nexport const TablePagination: FunctionComponent<TablePaginationProps> = ({totalPages}) => {\n const {state, setState} = useTable();\n const updatePage = (newPage: number) => {\n setState((prevState: TableState) => ({\n ...prevState,\n pagination: {...prevState.pagination, pageIndex: newPage - 1},\n }));\n };\n\n return (\n <Pagination\n page={state.pagination.pageIndex + 1}\n onChange={updatePage}\n total={totalPages}\n boundaries={0}\n size=\"md\"\n getItemAriaLabel={(label) => {\n switch (label) {\n case 'prev':\n return 'previous page';\n case 'next':\n return 'next page';\n default:\n return `${label}`;\n }\n }}\n />\n );\n};\n"],"names":["Pagination","useTable","TablePagination","totalPages","state","setState","updatePage","newPage","prevState","pagination","pageIndex","page","onChange","total","boundaries","size","getItemAriaLabel","label"],"mappings":"AAAA;;;AAAA,SAAQA,UAAU,QAAO,eAAe,CAAC;AAGzC,SAAQC,QAAQ,QAAO,YAAY,CAAC;AASpC,OAAO,IAAMC,eAAe,GAA4C,gBAAkB;QAAhBC,UAAU,SAAVA,UAAU;IAChF,IAA0BF,GAAU,GAAVA,QAAQ,EAAE,EAA7BG,KAAK,GAAcH,GAAU,CAA7BG,KAAK,EAAEC,QAAQ,GAAIJ,GAAU,CAAtBI,QAAQ,AAAe;IACrC,IAAMC,UAAU,GAAG,SAACC,OAAe,EAAK;QACpCF,QAAQ,CAAC,SAACG,SAAqB;mBAAM,wCAC9BA,SAAS;gBACZC,UAAU,EAAE,wCAAID,SAAS,CAACC,UAAU;oBAAEC,SAAS,EAAEH,OAAO,GAAG,CAAC;kBAAC;cAChE;SAAC,CAAC,CAAC;IACR,CAAC,AAAC;IAEF,qBACI,KAACP,UAAU;QACPW,IAAI,EAAEP,KAAK,CAACK,UAAU,CAACC,SAAS,GAAG,CAAC;QACpCE,QAAQ,EAAEN,UAAU;QACpBO,KAAK,EAAEV,UAAU;QACjBW,UAAU,EAAE,CAAC;QACbC,IAAI,EAAC,IAAI;QACTC,gBAAgB,EAAE,SAACC,KAAK,EAAK;YACzB,OAAQA,KAAK;gBACT,KAAK,MAAM;oBACP,OAAO,eAAe,CAAC;gBAC3B,KAAK,MAAM;oBACP,OAAO,WAAW,CAAC;gBACvB;oBACI,OAAO,AAAC,EAAA,CAAQ,MAAA,CAANA,KAAK,CAAE,CAAC;aACzB;QACL,CAAC;MACH,CACJ;AACN,CAAC,CAAC"}
1
+ {"version":3,"sources":["../../../../src/components/table/TablePagination.tsx"],"sourcesContent":["import {Pagination} from '@mantine/core';\nimport {TableState} from '@tanstack/react-table';\nimport {FunctionComponent} from 'react';\nimport {useTable} from './useTable';\n\ninterface TablePaginationProps {\n /**\n * The total number of page\n */\n totalPages: number;\n}\n\nexport const TablePagination: FunctionComponent<TablePaginationProps> = ({totalPages}) => {\n const {state, setState, containerRef} = useTable();\n const updatePage = (newPage: number) => {\n setState((prevState: TableState) => ({\n ...prevState,\n pagination: {...prevState.pagination, pageIndex: newPage - 1},\n }));\n containerRef.current.scrollIntoView({behavior: 'smooth'});\n };\n\n return (\n <Pagination\n page={state.pagination.pageIndex + 1}\n onChange={updatePage}\n total={totalPages}\n boundaries={0}\n size=\"md\"\n getItemAriaLabel={(label) => {\n switch (label) {\n case 'prev':\n return 'previous page';\n case 'next':\n return 'next page';\n default:\n return `${label}`;\n }\n }}\n />\n );\n};\n"],"names":["Pagination","useTable","TablePagination","totalPages","state","setState","containerRef","updatePage","newPage","prevState","pagination","pageIndex","current","scrollIntoView","behavior","page","onChange","total","boundaries","size","getItemAriaLabel","label"],"mappings":"AAAA;;;AAAA,SAAQA,UAAU,QAAO,eAAe,CAAC;AAGzC,SAAQC,QAAQ,QAAO,YAAY,CAAC;AASpC,OAAO,IAAMC,eAAe,GAA4C,gBAAkB;QAAhBC,UAAU,SAAVA,UAAU;IAChF,IAAwCF,GAAU,GAAVA,QAAQ,EAAE,EAA3CG,KAAK,GAA4BH,GAAU,CAA3CG,KAAK,EAAEC,QAAQ,GAAkBJ,GAAU,CAApCI,QAAQ,EAAEC,YAAY,GAAIL,GAAU,CAA1BK,YAAY,AAAe;IACnD,IAAMC,UAAU,GAAG,SAACC,OAAe,EAAK;QACpCH,QAAQ,CAAC,SAACI,SAAqB;mBAAM,wCAC9BA,SAAS;gBACZC,UAAU,EAAE,wCAAID,SAAS,CAACC,UAAU;oBAAEC,SAAS,EAAEH,OAAO,GAAG,CAAC;kBAAC;cAChE;SAAC,CAAC,CAAC;QACJF,YAAY,CAACM,OAAO,CAACC,cAAc,CAAC;YAACC,QAAQ,EAAE,QAAQ;SAAC,CAAC,CAAC;IAC9D,CAAC,AAAC;IAEF,qBACI,KAACd,UAAU;QACPe,IAAI,EAAEX,KAAK,CAACM,UAAU,CAACC,SAAS,GAAG,CAAC;QACpCK,QAAQ,EAAET,UAAU;QACpBU,KAAK,EAAEd,UAAU;QACjBe,UAAU,EAAE,CAAC;QACbC,IAAI,EAAC,IAAI;QACTC,gBAAgB,EAAE,SAACC,KAAK,EAAK;YACzB,OAAQA,KAAK;gBACT,KAAK,MAAM;oBACP,OAAO,eAAe,CAAC;gBAC3B,KAAK,MAAM;oBACP,OAAO,WAAW,CAAC;gBACvB;oBACI,OAAO,AAAC,EAAA,CAAQ,MAAA,CAANA,KAAK,CAAE,CAAC;aACzB;QACL,CAAC;MACH,CACJ;AACN,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coveord/plasma-mantine",
3
- "version": "48.2.0",
3
+ "version": "48.3.0",
4
4
  "description": "A Plasma flavoured Mantine theme",
5
5
  "keywords": [
6
6
  "plasma",
@@ -46,7 +46,7 @@
46
46
  "@testing-library/dom": "8.18.1",
47
47
  "@testing-library/jest-dom": "5.16.5",
48
48
  "@testing-library/react": "13.4.0",
49
- "@testing-library/user-event": "12.8.3",
49
+ "@testing-library/user-event": "14.4.3",
50
50
  "@types/jest": "29.1.2",
51
51
  "@types/lodash.defaultsdeep": "4.6.7",
52
52
  "@types/react": "18.0.21",
@@ -24,6 +24,7 @@ describe('Collection', () => {
24
24
  });
25
25
 
26
26
  it('removes the item when clicking on its remove button', async () => {
27
+ const user = userEvent.setup({delay: null});
27
28
  const Fixture = () => {
28
29
  const form = useForm({initialValues: {fruits: ['banana', 'orange']}});
29
30
  return (
@@ -42,7 +43,7 @@ describe('Collection', () => {
42
43
  /* eslint-disable-next-line testing-library/no-node-access */
43
44
  const removeBanana = await within(items[0].parentElement).findByRole('button', {name: /remove/i});
44
45
 
45
- userEvent.click(removeBanana);
46
+ await user.click(removeBanana);
46
47
 
47
48
  items = screen.getAllByTestId('item');
48
49
  // eslint-disable-next-line jest-dom/prefer-in-document
@@ -52,6 +53,7 @@ describe('Collection', () => {
52
53
  });
53
54
 
54
55
  it('calls the onRemoveItem function when clicking on a remove button', async () => {
56
+ const user = userEvent.setup({delay: null});
55
57
  const onRemoveItemSpy = jest.fn();
56
58
  const Fixture = () => {
57
59
  const form = useForm({initialValues: {fruits: ['banana', 'orange']}});
@@ -67,18 +69,19 @@ describe('Collection', () => {
67
69
  expect(items).toHaveLength(2);
68
70
  /* eslint-disable-next-line testing-library/no-node-access */
69
71
  const removeOrange = await within(items[1].parentElement).findByRole('button', {name: /remove/i});
70
- userEvent.click(removeOrange);
72
+ await user.click(removeOrange);
71
73
 
72
74
  expect(onRemoveItemSpy).toHaveBeenCalledWith(1);
73
75
 
74
76
  items = screen.getAllByTestId('item');
75
77
  const removeBanana = await within(items[0].parentElement).findByRole('button', {name: /remove/i});
76
- userEvent.click(removeBanana);
78
+ await user.click(removeBanana);
77
79
 
78
80
  expect(onRemoveItemSpy).toHaveBeenCalledWith(0);
79
81
  });
80
82
 
81
83
  it('does not render the remove button when disabled', async () => {
84
+ const user = userEvent.setup({delay: null});
82
85
  const Fixture = () => {
83
86
  const [disabled, setDisabled] = useState(false);
84
87
  const form = useForm({initialValues: {fruits: ['banana', 'orange']}});
@@ -94,11 +97,12 @@ describe('Collection', () => {
94
97
 
95
98
  render(<Fixture />);
96
99
  await screen.findAllByRole('button', {name: /remove/i});
97
- userEvent.click(screen.getByRole('button', {name: /disable/i}));
100
+ await user.click(screen.getByRole('button', {name: /disable/i}));
98
101
  expect(screen.queryByRole('button', {name: /remove/i})).not.toBeInTheDocument();
99
102
  });
100
103
 
101
- it('adds a new item when clicking on the add button', () => {
104
+ it('adds a new item when clicking on the add button', async () => {
105
+ const user = userEvent.setup({delay: null});
102
106
  const Fixture = () => {
103
107
  const form = useForm({initialValues: {fruits: ['banana', 'orange']}});
104
108
  return (
@@ -113,7 +117,7 @@ describe('Collection', () => {
113
117
 
114
118
  render(<Fixture />);
115
119
  const addItem = screen.getByRole('button', {name: /add/i});
116
- userEvent.click(addItem);
120
+ await user.click(addItem);
117
121
 
118
122
  const items = screen.getAllByTestId('item');
119
123
  expect(items).toHaveLength(3);
@@ -190,6 +194,7 @@ describe('Collection', () => {
190
194
  });
191
195
 
192
196
  it('not render the remove button after removing an item from a collection containing two items', async () => {
197
+ const user = userEvent.setup({delay: null});
193
198
  const Fixture = () => {
194
199
  const form = useForm({initialValues: {fruits: ['banana', 'orange']}});
195
200
  return (
@@ -211,7 +216,7 @@ describe('Collection', () => {
211
216
  expect(items[0]).toHaveTextContent('banana');
212
217
  expect(items[1]).toHaveTextContent('orange');
213
218
 
214
- userEvent.click(removeButtons[1]);
219
+ await user.click(removeButtons[1]);
215
220
 
216
221
  expect(screen.queryByRole('button', {name: /remove/i})).not.toBeInTheDocument();
217
222
  });
@@ -238,6 +243,7 @@ describe('Collection', () => {
238
243
 
239
244
  describe('when required is true', () => {
240
245
  it('not render the remove button after removing an item from a collection containing two items', async () => {
246
+ const user = userEvent.setup({delay: null});
241
247
  const Fixture = () => {
242
248
  const form = useForm({initialValues: {fruits: ['banana', 'orange']}});
243
249
  return (
@@ -265,7 +271,7 @@ describe('Collection', () => {
265
271
  expect(items[0]).toHaveTextContent('banana');
266
272
  expect(items[1]).toHaveTextContent('orange');
267
273
 
268
- userEvent.click(removeButtons[1]);
274
+ await user.click(removeButtons[1]);
269
275
 
270
276
  expect(screen.queryByRole('button', {name: /remove/i})).not.toBeInTheDocument();
271
277
  });