@coveord/plasma-mantine 48.1.1 → 48.2.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.
- package/.turbo/turbo-build.log +3 -3
- package/.turbo/turbo-test.log +6 -6
- package/dist/.tsbuildinfo +1 -1
- package/dist/cjs/components/table/Table.js +7 -1
- package/dist/cjs/components/table/Table.js.map +1 -1
- package/dist/definitions/components/table/Table.d.ts.map +1 -1
- package/dist/esm/components/table/Table.js +7 -1
- package/dist/esm/components/table/Table.js.map +1 -1
- package/package.json +2 -2
- package/src/components/collection/__tests__/Collection.spec.tsx +14 -8
- package/src/components/date-range-picker/__tests__/DateRangePickerInlineCalendar.spec.tsx +23 -18
- package/src/components/date-range-picker/__tests__/DateRangePickerPopoverCalendar.spec.tsx +15 -12
- package/src/components/date-range-picker/__tests__/DateRangePickerPresetSelect.spec.tsx +4 -3
- package/src/components/date-range-picker/__tests__/EditableDateRangePicker.spec.tsx +6 -5
- package/src/components/inline-confirm/__tests__/InlineConfirm.spec.tsx +17 -13
- package/src/components/modal-wizard/__tests__/ModalWizard.spec.tsx +20 -14
- package/src/components/table/Table.tsx +7 -0
- package/src/components/table/__tests__/Table.spec.tsx +6 -4
- package/src/components/table/__tests__/TableActions.spec.tsx +4 -3
- package/src/components/table/__tests__/TableDateRangePicker.spec.tsx +5 -4
- package/src/components/table/__tests__/TableFilter.spec.tsx +3 -2
- package/src/components/table/__tests__/TablePerPage.spec.tsx +3 -2
- package/src/components/table/__tests__/TablePredicate.spec.tsx +3 -2
|
@@ -36,7 +36,10 @@ var useStyles = (0, _core.createStyles)(function(theme, param, getRef) {
|
|
|
36
36
|
var hasHeader = param.hasHeader;
|
|
37
37
|
return {
|
|
38
38
|
table: {
|
|
39
|
-
width: "100%"
|
|
39
|
+
width: "100%",
|
|
40
|
+
"& td:first-child": {
|
|
41
|
+
paddingLeft: theme.spacing.md
|
|
42
|
+
}
|
|
40
43
|
},
|
|
41
44
|
header: {
|
|
42
45
|
position: "sticky",
|
|
@@ -44,6 +47,9 @@ var useStyles = (0, _core.createStyles)(function(theme, param, getRef) {
|
|
|
44
47
|
backgroundColor: theme.colorScheme === "dark" ? theme.black : theme.white,
|
|
45
48
|
transition: "box-shadow 150ms ease",
|
|
46
49
|
zIndex: 12,
|
|
50
|
+
"& tr th:first-child div": {
|
|
51
|
+
paddingLeft: theme.spacing.md
|
|
52
|
+
},
|
|
47
53
|
"&::after": {
|
|
48
54
|
content: '""',
|
|
49
55
|
position: "absolute",
|
|
@@ -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 },\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\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","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 }}\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 +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;
|
|
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"}
|
|
@@ -25,7 +25,10 @@ var useStyles = createStyles(function(theme, param, getRef) {
|
|
|
25
25
|
var hasHeader = param.hasHeader;
|
|
26
26
|
return {
|
|
27
27
|
table: {
|
|
28
|
-
width: "100%"
|
|
28
|
+
width: "100%",
|
|
29
|
+
"& td:first-child": {
|
|
30
|
+
paddingLeft: theme.spacing.md
|
|
31
|
+
}
|
|
29
32
|
},
|
|
30
33
|
header: {
|
|
31
34
|
position: "sticky",
|
|
@@ -33,6 +36,9 @@ var useStyles = createStyles(function(theme, param, getRef) {
|
|
|
33
36
|
backgroundColor: theme.colorScheme === "dark" ? theme.black : theme.white,
|
|
34
37
|
transition: "box-shadow 150ms ease",
|
|
35
38
|
zIndex: 12,
|
|
39
|
+
"& tr th:first-child div": {
|
|
40
|
+
paddingLeft: theme.spacing.md
|
|
41
|
+
},
|
|
36
42
|
"&::after": {
|
|
37
43
|
content: '""',
|
|
38
44
|
position: "absolute",
|
|
@@ -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 },\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\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","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 }}\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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coveord/plasma-mantine",
|
|
3
|
-
"version": "48.
|
|
3
|
+
"version": "48.2.1",
|
|
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": "
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
274
|
+
await user.click(removeButtons[1]);
|
|
269
275
|
|
|
270
276
|
expect(screen.queryByRole('button', {name: /remove/i})).not.toBeInTheDocument();
|
|
271
277
|
});
|
|
@@ -4,21 +4,23 @@ import dayjs from 'dayjs';
|
|
|
4
4
|
import {DateRangePickerInlineCalendar} from '../DateRangePickerInlineCalendar';
|
|
5
5
|
|
|
6
6
|
describe('DateRangePickerInlineCalendar', () => {
|
|
7
|
-
it('calls onApply when the user clicks on the apply button', () => {
|
|
7
|
+
it('calls onApply when the user clicks on the apply button', async () => {
|
|
8
|
+
const user = userEvent.setup({delay: null});
|
|
8
9
|
const onApply = jest.fn();
|
|
9
10
|
render(<DateRangePickerInlineCalendar initialRange={[null, null]} onApply={onApply} onCancel={jest.fn()} />);
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
await user.click(screen.getByRole('button', {name: 'Apply'}));
|
|
12
13
|
|
|
13
14
|
expect(onApply).toHaveBeenCalledTimes(1);
|
|
14
15
|
expect(onApply).toHaveBeenCalledWith([null, null]);
|
|
15
16
|
});
|
|
16
17
|
|
|
17
|
-
it('calls onCancel when the user clicks on the cancel button', () => {
|
|
18
|
+
it('calls onCancel when the user clicks on the cancel button', async () => {
|
|
19
|
+
const user = userEvent.setup({delay: null});
|
|
18
20
|
const onCancel = jest.fn();
|
|
19
21
|
render(<DateRangePickerInlineCalendar initialRange={[null, null]} onApply={jest.fn()} onCancel={onCancel} />);
|
|
20
22
|
|
|
21
|
-
|
|
23
|
+
await user.click(screen.getByRole('button', {name: 'Cancel'}));
|
|
22
24
|
|
|
23
25
|
expect(onCancel).toHaveBeenCalledTimes(1);
|
|
24
26
|
});
|
|
@@ -29,7 +31,8 @@ describe('DateRangePickerInlineCalendar', () => {
|
|
|
29
31
|
expect(screen.queryByRole('searchbox')).not.toBeInTheDocument();
|
|
30
32
|
});
|
|
31
33
|
|
|
32
|
-
it('calls onApply with the selected dates when choosing a preset', () => {
|
|
34
|
+
it('calls onApply with the selected dates when choosing a preset', async () => {
|
|
35
|
+
const user = userEvent.setup({delay: null});
|
|
33
36
|
const onApply = jest.fn();
|
|
34
37
|
render(
|
|
35
38
|
<DateRangePickerInlineCalendar
|
|
@@ -42,50 +45,52 @@ describe('DateRangePickerInlineCalendar', () => {
|
|
|
42
45
|
/>
|
|
43
46
|
);
|
|
44
47
|
|
|
45
|
-
|
|
48
|
+
await user.click(
|
|
46
49
|
screen.getByRole('searchbox', {
|
|
47
50
|
name: 'Date range',
|
|
48
51
|
})
|
|
49
52
|
);
|
|
50
|
-
|
|
51
|
-
|
|
53
|
+
await user.click(screen.getByRole('option', {name: 'select me'}));
|
|
54
|
+
await user.click(screen.getByRole('button', {name: 'Apply'}));
|
|
52
55
|
|
|
53
56
|
expect(onApply).toHaveBeenCalledWith([new Date(1999, 11, 31), new Date(2000, 0, 1)]);
|
|
54
57
|
});
|
|
55
58
|
|
|
56
|
-
it('calls onApply with the selected dates when clicking in the calendar', () => {
|
|
59
|
+
it('calls onApply with the selected dates when clicking in the calendar', async () => {
|
|
60
|
+
const user = userEvent.setup({delay: null});
|
|
57
61
|
jest.useFakeTimers().setSystemTime(new Date(2022, 0, 31));
|
|
58
62
|
const onApply = jest.fn();
|
|
59
63
|
render(<DateRangePickerInlineCalendar initialRange={[null, null]} onApply={onApply} onCancel={jest.fn()} />);
|
|
60
64
|
|
|
61
65
|
// click once for the start, once for the end
|
|
62
|
-
|
|
63
|
-
|
|
66
|
+
await user.click(screen.getAllByRole('button', {name: '8'})[0]);
|
|
67
|
+
await user.click(screen.getAllByRole('button', {name: '14'})[0]);
|
|
64
68
|
|
|
65
|
-
|
|
69
|
+
await user.click(screen.getByRole('button', {name: 'Apply'}));
|
|
66
70
|
|
|
67
71
|
expect(onApply).toHaveBeenCalledWith([new Date(2022, 0, 8), new Date(2022, 0, 14)]);
|
|
68
72
|
|
|
69
73
|
jest.useRealTimers();
|
|
70
74
|
});
|
|
71
75
|
|
|
72
|
-
it('calls onApply with the selected dates when typing in the inputs', () => {
|
|
76
|
+
it('calls onApply with the selected dates when typing in the inputs', async () => {
|
|
77
|
+
const user = userEvent.setup({delay: null});
|
|
73
78
|
const onApply = jest.fn();
|
|
74
79
|
render(<DateRangePickerInlineCalendar initialRange={[null, null]} onApply={onApply} onCancel={jest.fn()} />);
|
|
75
80
|
|
|
76
81
|
const startInput = screen.getByRole('textbox', {
|
|
77
82
|
name: /start/i,
|
|
78
83
|
});
|
|
79
|
-
|
|
80
|
-
|
|
84
|
+
await user.clear(startInput);
|
|
85
|
+
await user.type(startInput, 'Jan 8, 2022');
|
|
81
86
|
|
|
82
87
|
const endInput = screen.getByRole('textbox', {
|
|
83
88
|
name: /end/i,
|
|
84
89
|
});
|
|
85
|
-
|
|
86
|
-
|
|
90
|
+
await user.clear(endInput);
|
|
91
|
+
await user.type(endInput, 'Jan 14, 2022');
|
|
87
92
|
|
|
88
|
-
|
|
93
|
+
await user.click(screen.getByRole('button', {name: 'Apply'}));
|
|
89
94
|
|
|
90
95
|
expect(onApply).toHaveBeenCalledWith([
|
|
91
96
|
dayjs(new Date(2022, 0, 8)).startOf('day').toDate(),
|
|
@@ -19,7 +19,8 @@ describe('DateRangePickerPopoverCalendar', () => {
|
|
|
19
19
|
expect(screen.queryByRole('searchbox')).not.toBeInTheDocument();
|
|
20
20
|
});
|
|
21
21
|
|
|
22
|
-
it('updates with the selected dates when choosing a preset', () => {
|
|
22
|
+
it('updates with the selected dates when choosing a preset', async () => {
|
|
23
|
+
const user = userEvent.setup({delay: null});
|
|
23
24
|
const Fixture = () => {
|
|
24
25
|
const form = useForm<{dates: DateRangePickerValue}>({initialValues: {dates: [null, null]}});
|
|
25
26
|
return (
|
|
@@ -36,17 +37,18 @@ describe('DateRangePickerPopoverCalendar', () => {
|
|
|
36
37
|
};
|
|
37
38
|
render(<Fixture />);
|
|
38
39
|
|
|
39
|
-
|
|
40
|
+
await user.click(
|
|
40
41
|
screen.getByRole('searchbox', {
|
|
41
42
|
name: 'Date range',
|
|
42
43
|
})
|
|
43
44
|
);
|
|
44
|
-
|
|
45
|
+
await user.click(screen.getByRole('option', {name: 'select me'}));
|
|
45
46
|
|
|
46
47
|
expect(screen.getByTestId('json')).toHaveTextContent('["1999-12-31T00:00:00.000Z","2000-01-01T00:00:00.000Z"]');
|
|
47
48
|
});
|
|
48
49
|
|
|
49
|
-
it('calls onApply with the selected dates when clicking in the calendar', () => {
|
|
50
|
+
it('calls onApply with the selected dates when clicking in the calendar', async () => {
|
|
51
|
+
const user = userEvent.setup({delay: null});
|
|
50
52
|
jest.useFakeTimers().setSystemTime(new Date(2022, 0, 31));
|
|
51
53
|
const Fixture = () => {
|
|
52
54
|
const form = useForm<{dates: DateRangePickerValue}>({initialValues: {dates: [null, null]}});
|
|
@@ -59,10 +61,10 @@ describe('DateRangePickerPopoverCalendar', () => {
|
|
|
59
61
|
};
|
|
60
62
|
render(<Fixture />);
|
|
61
63
|
|
|
62
|
-
|
|
64
|
+
await user.click(screen.getByRole('textbox', {name: 'Start'}));
|
|
63
65
|
// click once for the start, once for the end
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
await user.click(screen.getAllByRole('button', {name: '8'})[0]);
|
|
67
|
+
await user.click(screen.getAllByRole('button', {name: '14'})[0]);
|
|
66
68
|
|
|
67
69
|
// hides the calendar when the second date is clicked
|
|
68
70
|
expect(screen.queryByRole('button', {name: '8'})).not.toBeInTheDocument();
|
|
@@ -72,7 +74,8 @@ describe('DateRangePickerPopoverCalendar', () => {
|
|
|
72
74
|
jest.useRealTimers();
|
|
73
75
|
});
|
|
74
76
|
|
|
75
|
-
it('calls onApply with the selected dates when typing in the inputs', () => {
|
|
77
|
+
it('calls onApply with the selected dates when typing in the inputs', async () => {
|
|
78
|
+
const user = userEvent.setup({delay: null});
|
|
76
79
|
const Fixture = () => {
|
|
77
80
|
const form = useForm<{dates: DateRangePickerValue}>({initialValues: {dates: [null, null]}});
|
|
78
81
|
return (
|
|
@@ -87,14 +90,14 @@ describe('DateRangePickerPopoverCalendar', () => {
|
|
|
87
90
|
const startInput = screen.getByRole('textbox', {
|
|
88
91
|
name: /start/i,
|
|
89
92
|
});
|
|
90
|
-
|
|
91
|
-
|
|
93
|
+
await user.clear(startInput);
|
|
94
|
+
await user.type(startInput, 'Jan 8, 2022');
|
|
92
95
|
|
|
93
96
|
const endInput = screen.getByRole('textbox', {
|
|
94
97
|
name: /end/i,
|
|
95
98
|
});
|
|
96
|
-
|
|
97
|
-
|
|
99
|
+
await user.clear(endInput);
|
|
100
|
+
await user.type(endInput, 'Jan 14, 2022');
|
|
98
101
|
|
|
99
102
|
expect(screen.getByTestId('json')).toHaveTextContent('["2022-01-08T00:00:00.000Z","2022-01-14T23:59:59.999Z"]');
|
|
100
103
|
});
|
|
@@ -3,7 +3,8 @@ import {render, screen, userEvent} from '@test-utils';
|
|
|
3
3
|
import {DateRangePickerPresetSelect} from '../DateRangePickerPresetSelect';
|
|
4
4
|
|
|
5
5
|
describe('DateRangePickerPresetSelect', () => {
|
|
6
|
-
it('calls onChange when selecting a preset', () => {
|
|
6
|
+
it('calls onChange when selecting a preset', async () => {
|
|
7
|
+
const user = userEvent.setup({delay: null});
|
|
7
8
|
const onChange = jest.fn();
|
|
8
9
|
render(
|
|
9
10
|
<DateRangePickerPresetSelect
|
|
@@ -15,12 +16,12 @@ describe('DateRangePickerPresetSelect', () => {
|
|
|
15
16
|
/>
|
|
16
17
|
);
|
|
17
18
|
|
|
18
|
-
|
|
19
|
+
await user.click(
|
|
19
20
|
screen.getByRole('searchbox', {
|
|
20
21
|
name: 'Date range',
|
|
21
22
|
})
|
|
22
23
|
);
|
|
23
|
-
|
|
24
|
+
await user.click(screen.getByRole('option', {name: 'select me'}));
|
|
24
25
|
|
|
25
26
|
expect(onChange).toHaveBeenCalledWith([new Date(1999, 11, 31), new Date(2000, 0, 1)]);
|
|
26
27
|
});
|
|
@@ -18,7 +18,8 @@ describe('EditableDateRangePicker', () => {
|
|
|
18
18
|
expect(screen.getByText('SEPARATOR')).toBeVisible();
|
|
19
19
|
});
|
|
20
20
|
|
|
21
|
-
it('updates when editing values', () => {
|
|
21
|
+
it('updates when editing values', async () => {
|
|
22
|
+
const user = userEvent.setup({delay: null});
|
|
22
23
|
const Fixture = () => {
|
|
23
24
|
const [value, setValue] = useState<DateRangePickerValue>([null, null]);
|
|
24
25
|
return (
|
|
@@ -33,14 +34,14 @@ describe('EditableDateRangePicker', () => {
|
|
|
33
34
|
const startInput = screen.getByRole('textbox', {
|
|
34
35
|
name: /start/i,
|
|
35
36
|
});
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
await user.clear(startInput);
|
|
38
|
+
await user.type(startInput, 'Jan 8, 2022');
|
|
38
39
|
|
|
39
40
|
const endInput = screen.getByRole('textbox', {
|
|
40
41
|
name: /end/i,
|
|
41
42
|
});
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
await user.clear(endInput);
|
|
44
|
+
await user.type(endInput, 'Jan 14, 2022');
|
|
44
45
|
|
|
45
46
|
expect(screen.getByTestId('json')).toHaveTextContent('["2022-01-08T00:00:00.000Z","2022-01-14T23:59:59.999Z"]');
|
|
46
47
|
});
|