@coveord/plasma-mantine 52.6.0 → 52.7.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 (128) hide show
  1. package/.turbo/turbo-build.log +3 -3
  2. package/.turbo/turbo-test.log +31 -30
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/cjs/components/table/Table.d.ts.map +1 -1
  5. package/dist/cjs/components/table/Table.js +32 -86
  6. package/dist/cjs/components/table/Table.js.map +1 -1
  7. package/dist/cjs/components/table/Table.styles.d.ts +2 -5
  8. package/dist/cjs/components/table/Table.styles.d.ts.map +1 -1
  9. package/dist/cjs/components/table/Table.styles.js +7 -45
  10. package/dist/cjs/components/table/Table.styles.js.map +1 -1
  11. package/dist/cjs/components/table/Table.types.d.ts +57 -1
  12. package/dist/cjs/components/table/Table.types.d.ts.map +1 -1
  13. package/dist/cjs/components/table/TableActions.d.ts +12 -2
  14. package/dist/cjs/components/table/TableActions.d.ts.map +1 -1
  15. package/dist/cjs/components/table/TableActions.js +29 -7
  16. package/dist/cjs/components/table/TableActions.js.map +1 -1
  17. package/dist/cjs/components/table/TableDateRangePicker.d.ts +12 -1
  18. package/dist/cjs/components/table/TableDateRangePicker.d.ts.map +1 -1
  19. package/dist/cjs/components/table/TableDateRangePicker.js +31 -5
  20. package/dist/cjs/components/table/TableDateRangePicker.js.map +1 -1
  21. package/dist/cjs/components/table/TableFilter.d.ts +1 -0
  22. package/dist/cjs/components/table/TableFilter.d.ts.map +1 -1
  23. package/dist/cjs/components/table/TableFilter.js +3 -1
  24. package/dist/cjs/components/table/TableFilter.js.map +1 -1
  25. package/dist/cjs/components/table/TableHeader.d.ts.map +1 -1
  26. package/dist/cjs/components/table/TableHeader.js +3 -1
  27. package/dist/cjs/components/table/TableHeader.js.map +1 -1
  28. package/dist/cjs/components/table/TableLayoutControl.d.ts +3 -0
  29. package/dist/cjs/components/table/TableLayoutControl.d.ts.map +1 -0
  30. package/dist/cjs/components/table/TableLayoutControl.js +50 -0
  31. package/dist/cjs/components/table/TableLayoutControl.js.map +1 -0
  32. package/dist/cjs/components/table/TableLoading.d.ts +4 -0
  33. package/dist/cjs/components/table/TableLoading.d.ts.map +1 -0
  34. package/dist/cjs/components/table/TableLoading.js +28 -0
  35. package/dist/cjs/components/table/TableLoading.js.map +1 -0
  36. package/dist/cjs/components/table/TablePredicate.d.ts +12 -2
  37. package/dist/cjs/components/table/TablePredicate.d.ts.map +1 -1
  38. package/dist/cjs/components/table/TablePredicate.js +29 -4
  39. package/dist/cjs/components/table/TablePredicate.js.map +1 -1
  40. package/dist/cjs/components/table/Th.d.ts.map +1 -1
  41. package/dist/cjs/components/table/Th.js +2 -1
  42. package/dist/cjs/components/table/Th.js.map +1 -1
  43. package/dist/cjs/components/table/index.d.ts +1 -0
  44. package/dist/cjs/components/table/index.d.ts.map +1 -1
  45. package/dist/cjs/components/table/index.js +12 -3
  46. package/dist/cjs/components/table/index.js.map +1 -1
  47. package/dist/cjs/components/table/layouts/RowLayout.d.ts +3 -0
  48. package/dist/cjs/components/table/layouts/RowLayout.d.ts.map +1 -0
  49. package/dist/cjs/components/table/layouts/RowLayout.js +156 -0
  50. package/dist/cjs/components/table/layouts/RowLayout.js.map +1 -0
  51. package/dist/cjs/components/table/layouts/TableLayouts.d.ts +4 -0
  52. package/dist/cjs/components/table/layouts/TableLayouts.d.ts.map +1 -0
  53. package/dist/cjs/components/table/layouts/TableLayouts.js +16 -0
  54. package/dist/cjs/components/table/layouts/TableLayouts.js.map +1 -0
  55. package/dist/cjs/theme/Theme.js +7 -5
  56. package/dist/cjs/theme/Theme.js.map +1 -1
  57. package/dist/esm/components/table/Table.d.ts.map +1 -1
  58. package/dist/esm/components/table/Table.js +35 -89
  59. package/dist/esm/components/table/Table.js.map +1 -1
  60. package/dist/esm/components/table/Table.styles.d.ts +2 -5
  61. package/dist/esm/components/table/Table.styles.d.ts.map +1 -1
  62. package/dist/esm/components/table/Table.styles.js +7 -45
  63. package/dist/esm/components/table/Table.styles.js.map +1 -1
  64. package/dist/esm/components/table/Table.types.d.ts +57 -1
  65. package/dist/esm/components/table/Table.types.d.ts.map +1 -1
  66. package/dist/esm/components/table/Table.types.js.map +1 -1
  67. package/dist/esm/components/table/TableActions.d.ts +12 -2
  68. package/dist/esm/components/table/TableActions.d.ts.map +1 -1
  69. package/dist/esm/components/table/TableActions.js +30 -8
  70. package/dist/esm/components/table/TableActions.js.map +1 -1
  71. package/dist/esm/components/table/TableDateRangePicker.d.ts +12 -1
  72. package/dist/esm/components/table/TableDateRangePicker.d.ts.map +1 -1
  73. package/dist/esm/components/table/TableDateRangePicker.js +32 -6
  74. package/dist/esm/components/table/TableDateRangePicker.js.map +1 -1
  75. package/dist/esm/components/table/TableFilter.d.ts +1 -0
  76. package/dist/esm/components/table/TableFilter.d.ts.map +1 -1
  77. package/dist/esm/components/table/TableFilter.js +3 -1
  78. package/dist/esm/components/table/TableFilter.js.map +1 -1
  79. package/dist/esm/components/table/TableHeader.d.ts.map +1 -1
  80. package/dist/esm/components/table/TableHeader.js +3 -1
  81. package/dist/esm/components/table/TableHeader.js.map +1 -1
  82. package/dist/esm/components/table/TableLayoutControl.d.ts +3 -0
  83. package/dist/esm/components/table/TableLayoutControl.d.ts.map +1 -0
  84. package/dist/esm/components/table/TableLayoutControl.js +40 -0
  85. package/dist/esm/components/table/TableLayoutControl.js.map +1 -0
  86. package/dist/esm/components/table/TableLoading.d.ts +4 -0
  87. package/dist/esm/components/table/TableLoading.d.ts.map +1 -0
  88. package/dist/esm/components/table/TableLoading.js +18 -0
  89. package/dist/esm/components/table/TableLoading.js.map +1 -0
  90. package/dist/esm/components/table/TablePredicate.d.ts +12 -2
  91. package/dist/esm/components/table/TablePredicate.d.ts.map +1 -1
  92. package/dist/esm/components/table/TablePredicate.js +30 -5
  93. package/dist/esm/components/table/TablePredicate.js.map +1 -1
  94. package/dist/esm/components/table/Th.d.ts.map +1 -1
  95. package/dist/esm/components/table/Th.js +2 -1
  96. package/dist/esm/components/table/Th.js.map +1 -1
  97. package/dist/esm/components/table/index.d.ts +1 -0
  98. package/dist/esm/components/table/index.d.ts.map +1 -1
  99. package/dist/esm/components/table/index.js +1 -0
  100. package/dist/esm/components/table/index.js.map +1 -1
  101. package/dist/esm/components/table/layouts/RowLayout.d.ts +3 -0
  102. package/dist/esm/components/table/layouts/RowLayout.d.ts.map +1 -0
  103. package/dist/esm/components/table/layouts/RowLayout.js +146 -0
  104. package/dist/esm/components/table/layouts/RowLayout.js.map +1 -0
  105. package/dist/esm/components/table/layouts/TableLayouts.d.ts +4 -0
  106. package/dist/esm/components/table/layouts/TableLayouts.d.ts.map +1 -0
  107. package/dist/esm/components/table/layouts/TableLayouts.js +6 -0
  108. package/dist/esm/components/table/layouts/TableLayouts.js.map +1 -0
  109. package/dist/esm/theme/Theme.js +7 -5
  110. package/dist/esm/theme/Theme.js.map +1 -1
  111. package/package.json +6 -6
  112. package/src/components/table/Table.styles.ts +33 -88
  113. package/src/components/table/Table.tsx +39 -86
  114. package/src/components/table/Table.types.ts +59 -0
  115. package/src/components/table/TableActions.tsx +22 -6
  116. package/src/components/table/TableDateRangePicker.tsx +27 -6
  117. package/src/components/table/TableFilter.tsx +4 -3
  118. package/src/components/table/TableHeader.tsx +2 -0
  119. package/src/components/table/TableLayoutControl.tsx +29 -0
  120. package/src/components/table/TableLoading.tsx +8 -0
  121. package/src/components/table/TablePredicate.tsx +24 -7
  122. package/src/components/table/Th.tsx +1 -0
  123. package/src/components/table/__tests__/Table.spec.tsx +121 -369
  124. package/src/components/table/index.ts +1 -0
  125. package/src/components/table/layouts/RowLayout.tsx +150 -0
  126. package/src/components/table/layouts/TableLayouts.tsx +5 -0
  127. package/src/components/table/layouts/__tests__/RowLayout.spec.tsx +296 -0
  128. package/src/theme/Theme.tsx +5 -5
@@ -1,10 +1,19 @@
1
- import {Grid, Group} from '@mantine/core';
1
+ import {createStyles, DefaultProps, Grid, Group, Selectors} from '@mantine/core';
2
2
  import {ReactElement, ReactNode} from 'react';
3
- import {TableComponentsOrder} from './Table.styles';
4
3
 
4
+ import {TableComponentsOrder} from './Table.styles';
5
5
  import {useTable} from './TableContext';
6
6
 
7
- interface TableActionsProps<T> {
7
+ const useStyles = createStyles((theme) => ({
8
+ root: {},
9
+ wrapper: {
10
+ display: 'inline-flex',
11
+ },
12
+ }));
13
+
14
+ type TableActionsStylesNames = Selectors<typeof useStyles>;
15
+
16
+ interface TableActionsProps<T> extends DefaultProps<TableActionsStylesNames> {
8
17
  /**
9
18
  * Function that return components for the selected row or selected rows when multi row selection is enabled
10
19
  *
@@ -27,7 +36,14 @@ interface TableActionsProps<T> {
27
36
  children: ((datum: T) => ReactNode) | ((data: T[]) => ReactNode);
28
37
  }
29
38
 
30
- export const TableActions = <T,>({children}: TableActionsProps<T>): ReactElement => {
39
+ export const TableActions = <T,>({
40
+ children,
41
+ classNames,
42
+ styles,
43
+ unstyled,
44
+ ...others
45
+ }: TableActionsProps<T>): ReactElement => {
46
+ const {classes} = useStyles(null, {name: 'TableActions', classNames, styles, unstyled});
31
47
  const {getSelectedRows, multiRowSelectionEnabled} = useTable<T>();
32
48
  const selectedRows = getSelectedRows();
33
49
 
@@ -36,8 +52,8 @@ export const TableActions = <T,>({children}: TableActionsProps<T>): ReactElement
36
52
  }
37
53
 
38
54
  return (
39
- <Grid.Col span="content" order={TableComponentsOrder.Actions} py="sm">
40
- <Group spacing="xs" style={{display: 'inline-flex'}}>
55
+ <Grid.Col span="content" order={TableComponentsOrder.Actions} py="sm" className={classes.root} {...others}>
56
+ <Group spacing="xs" className={classes.wrapper}>
41
57
  {multiRowSelectionEnabled
42
58
  ? (children as (data: T[]) => ReactNode)(selectedRows)
43
59
  : (children as (datum: T) => ReactNode)(selectedRows[0])}
@@ -1,9 +1,9 @@
1
1
  import {CalendarSize24Px} from '@coveord/plasma-react-icons';
2
- import {Grid, Group, Popover, Text} from '@mantine/core';
2
+ import {createStyles, DefaultProps, Grid, Group, Popover, Selectors, Text} from '@mantine/core';
3
+ import {useToggle} from '@mantine/hooks';
3
4
  import dayjs from 'dayjs';
4
5
  import {FunctionComponent} from 'react';
5
6
 
6
- import {useToggle} from '@mantine/hooks';
7
7
  import {Button} from '../button';
8
8
  import {
9
9
  DateRangePickerInlineCalendar,
@@ -14,8 +14,16 @@ import {
14
14
  import {TableComponentsOrder} from './Table.styles';
15
15
  import {useTable} from './TableContext';
16
16
 
17
+ const useStyles = createStyles((theme) => ({
18
+ root: {},
19
+ wrapper: {},
20
+ label: {},
21
+ }));
22
+
23
+ type TableDateRangePickerStylesNames = Selectors<typeof useStyles>;
17
24
  interface TableDateRangePickerProps
18
- extends Pick<DateRangePickerInlineCalendarProps, 'startProps' | 'endProps' | 'rangeCalendarProps'> {
25
+ extends Pick<DateRangePickerInlineCalendarProps, 'startProps' | 'endProps' | 'rangeCalendarProps'>,
26
+ DefaultProps<TableDateRangePickerStylesNames> {
19
27
  /**
20
28
  * An object containing date presets.
21
29
  * If empty the preset dropdown won't be shown
@@ -33,7 +41,12 @@ interface TableDateRangePickerProps
33
41
  export const TableDateRangePicker: FunctionComponent<TableDateRangePickerProps> = ({
34
42
  presets = {},
35
43
  rangeCalendarProps,
44
+ classNames,
45
+ styles,
46
+ unstyled,
47
+ ...others
36
48
  }) => {
49
+ const {classes} = useStyles(null, {name: 'TableDateRangePicker', classNames, styles, unstyled});
37
50
  const [opened, toggleOpened] = useToggle();
38
51
  const {form} = useTable();
39
52
 
@@ -49,9 +62,17 @@ export const TableDateRangePicker: FunctionComponent<TableDateRangePickerProps>
49
62
  const formattedRange = `${formatDate(form.values.dateRange[0])} - ${formatDate(form.values.dateRange[1])}`;
50
63
 
51
64
  return (
52
- <Grid.Col span="content" order={TableComponentsOrder.DateRangePicker} py="sm">
53
- <Group spacing="xs">
54
- <Text span>{formattedRange}</Text>
65
+ <Grid.Col
66
+ span="content"
67
+ order={TableComponentsOrder.DateRangePicker}
68
+ py="sm"
69
+ className={classes.root}
70
+ {...others}
71
+ >
72
+ <Group spacing="xs" className={classes.wrapper}>
73
+ <Text span className={classes.label}>
74
+ {formattedRange}
75
+ </Text>
55
76
  <Popover opened={opened} onChange={toggleOpened} withinPortal>
56
77
  <Popover.Target>
57
78
  <Button variant="outline" color="gray" onClick={() => toggleOpened()} px="xs">
@@ -1,11 +1,12 @@
1
1
  import {CrossSize16Px, SearchSize16Px} from '@coveord/plasma-react-icons';
2
2
  import {ActionIcon, createStyles, DefaultProps, Grid, Selectors, TextInput} from '@mantine/core';
3
3
  import {ChangeEventHandler, FunctionComponent, MouseEventHandler} from 'react';
4
- import {TableComponentsOrder} from './Table.styles';
5
4
 
5
+ import {TableComponentsOrder} from './Table.styles';
6
6
  import {useTable} from './TableContext';
7
7
 
8
8
  const useStyles = createStyles((theme) => ({
9
+ root: {},
9
10
  wrapper: {
10
11
  marginBottom: '0 !important',
11
12
  },
@@ -31,7 +32,7 @@ export const TableFilter: FunctionComponent<TableFilterProps> = ({
31
32
  unstyled,
32
33
  ...others
33
34
  }) => {
34
- const {classes} = useStyles(null, {name: 'TableHeader', classNames, styles, unstyled});
35
+ const {classes} = useStyles(null, {name: 'TableFilter', classNames, styles, unstyled});
35
36
  const {state, setState} = useTable();
36
37
 
37
38
  const changeFilterValue = (value: string) => {
@@ -54,7 +55,7 @@ export const TableFilter: FunctionComponent<TableFilterProps> = ({
54
55
  };
55
56
 
56
57
  return (
57
- <Grid.Col span="content" order={TableComponentsOrder.Filter} py="sm">
58
+ <Grid.Col span="content" order={TableComponentsOrder.Filter} py="sm" className={classes.root}>
58
59
  <TextInput
59
60
  className={classes.wrapper}
60
61
  placeholder={placeholder}
@@ -5,6 +5,7 @@ import {FunctionComponent, ReactNode} from 'react';
5
5
  import {Button} from '../button';
6
6
  import {TableComponentsOrder} from './Table.styles';
7
7
  import {useTable} from './TableContext';
8
+ import {TableLayoutControl} from './TableLayoutControl';
8
9
 
9
10
  const useStyles = createStyles((theme) => ({
10
11
  root: {
@@ -66,6 +67,7 @@ export const TableHeader: FunctionComponent<TableHeaderProps> = ({
66
67
  </Grid.Col>
67
68
  ) : null}
68
69
  {children}
70
+ <TableLayoutControl />
69
71
  </Grid>
70
72
  );
71
73
  };
@@ -0,0 +1,29 @@
1
+ import {Box, Center, Grid, SegmentedControl, Space} from '@mantine/core';
2
+ import {TableComponentsOrder} from './Table.styles';
3
+ import {useTable} from './TableContext';
4
+
5
+ export const TableLayoutControl = () => {
6
+ const {form, layouts} = useTable();
7
+ return layouts.length > 1 ? (
8
+ <Grid.Col order={TableComponentsOrder.LayoutControl} span="content">
9
+ <SegmentedControl
10
+ color="action"
11
+ data={layouts.map(({name, icon: Icon}) => ({
12
+ value: name,
13
+ label: (
14
+ <Center>
15
+ {Icon ? (
16
+ <>
17
+ <Icon height={16} />
18
+ <Space w="xs" />
19
+ </>
20
+ ) : null}
21
+ <Box>{name}</Box>
22
+ </Center>
23
+ ),
24
+ }))}
25
+ {...form.getInputProps('layout')}
26
+ />
27
+ </Grid.Col>
28
+ ) : null;
29
+ };
@@ -0,0 +1,8 @@
1
+ import {Skeleton, SkeletonProps} from '@mantine/core';
2
+ import {FunctionComponent} from 'react';
3
+
4
+ export const TableLoading: FunctionComponent<SkeletonProps> = (props) => (
5
+ <Skeleton style={{display: 'inline-block'}} {...props} sx={!props.visible ? {borderRadius: 0} : undefined}>
6
+ {props.children}
7
+ </Skeleton>
8
+ );
@@ -1,10 +1,18 @@
1
- import {Grid, Group, Select, SelectItem, Text} from '@mantine/core';
1
+ import {createStyles, DefaultProps, Grid, Group, Select, SelectItem, Selectors, Text} from '@mantine/core';
2
2
  import {FunctionComponent} from 'react';
3
- import {TableComponentsOrder} from './Table.styles';
4
3
 
4
+ import {TableComponentsOrder} from './Table.styles';
5
5
  import {useTable} from './TableContext';
6
6
 
7
- interface TablePredicateProps {
7
+ const useStyles = createStyles((theme) => ({
8
+ root: {},
9
+ wrapper: {},
10
+ label: {},
11
+ }));
12
+
13
+ type TablePredicateStylesNames = Selectors<typeof useStyles>;
14
+
15
+ interface TablePredicateProps extends DefaultProps<TablePredicateStylesNames> {
8
16
  /**
9
17
  * Unique identifier for this predicate. Will be used to access the selected value in the table state
10
18
  */
@@ -21,7 +29,16 @@ interface TablePredicateProps {
21
29
  label?: string;
22
30
  }
23
31
 
24
- export const TablePredicate: FunctionComponent<TablePredicateProps> = ({id, data, label}) => {
32
+ export const TablePredicate: FunctionComponent<TablePredicateProps> = ({
33
+ id,
34
+ data,
35
+ label,
36
+ classNames,
37
+ styles,
38
+ unstyled,
39
+ ...others
40
+ }) => {
41
+ const {classes} = useStyles(null, {name: 'TablePredicate', classNames, styles, unstyled});
25
42
  const {onChange, form} = useTable();
26
43
 
27
44
  const onUpdate = (newValue: string) => {
@@ -30,9 +47,9 @@ export const TablePredicate: FunctionComponent<TablePredicateProps> = ({id, data
30
47
  };
31
48
 
32
49
  return (
33
- <Grid.Col span="content" order={TableComponentsOrder.Predicate} py="sm">
34
- <Group spacing="xs">
35
- {label ? <Text>{label}:</Text> : null}
50
+ <Grid.Col span="content" order={TableComponentsOrder.Predicate} py="sm" className={classes.root} {...others}>
51
+ <Group spacing="xs" className={classes.wrapper}>
52
+ {label ? <Text className={classes.label}>{label}:</Text> : null}
36
53
  <Select
37
54
  withinPortal
38
55
  value={form.values.predicates[id]}
@@ -7,6 +7,7 @@ const useStyles = createStyles((theme) => ({
7
7
  fontWeight: '400 !important' as any,
8
8
  padding: '0 !important',
9
9
  verticalAlign: 'middle',
10
+ whiteSpace: 'nowrap',
10
11
  },
11
12
 
12
13
  control: {