@coveord/plasma-mantine 51.1.30 → 52.0.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.
- package/.turbo/turbo-build.log +3 -3
- package/.turbo/turbo-test.log +28 -27
- package/dist/.tsbuildinfo +1 -1
- package/dist/cjs/components/code-editor/CodeEditor.js +3 -21
- package/dist/cjs/components/code-editor/CodeEditor.js.map +1 -1
- package/dist/cjs/components/collection/Collection.js +6 -3
- package/dist/cjs/components/collection/Collection.js.map +1 -1
- package/dist/cjs/components/collection/CollectionItem.js +1 -1
- package/dist/cjs/components/collection/CollectionItem.js.map +1 -1
- package/dist/cjs/components/copyToClipboard/CopyToClipboard.js +60 -0
- package/dist/cjs/components/copyToClipboard/CopyToClipboard.js.map +1 -0
- package/dist/cjs/components/copyToClipboard/index.js +8 -0
- package/dist/cjs/components/copyToClipboard/index.js.map +1 -0
- package/dist/cjs/components/index.js +1 -0
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/components/modal-wizard/ModalWizard.js +2 -2
- package/dist/cjs/components/modal-wizard/ModalWizard.js.map +1 -1
- package/dist/cjs/components/table/Table.js +43 -35
- package/dist/cjs/components/table/Table.js.map +1 -1
- package/dist/cjs/components/table/TableConsumer.js +19 -0
- package/dist/cjs/components/table/TableConsumer.js.map +1 -0
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/theme/Theme.js +13 -7
- package/dist/cjs/theme/Theme.js.map +1 -1
- package/dist/definitions/components/code-editor/CodeEditor.d.ts.map +1 -1
- package/dist/definitions/components/collection/Collection.d.ts +10 -0
- package/dist/definitions/components/collection/Collection.d.ts.map +1 -1
- package/dist/definitions/components/copyToClipboard/CopyToClipboard.d.ts +15 -0
- package/dist/definitions/components/copyToClipboard/CopyToClipboard.d.ts.map +1 -0
- package/dist/definitions/components/copyToClipboard/index.d.ts +2 -0
- package/dist/definitions/components/copyToClipboard/index.d.ts.map +1 -0
- package/dist/definitions/components/index.d.ts +1 -0
- package/dist/definitions/components/index.d.ts.map +1 -1
- package/dist/definitions/components/modal-wizard/ModalWizard.d.ts +2 -2
- package/dist/definitions/components/modal-wizard/ModalWizard.d.ts.map +1 -1
- package/dist/definitions/components/table/Table.d.ts.map +1 -1
- package/dist/definitions/components/table/Table.types.d.ts +2 -0
- package/dist/definitions/components/table/Table.types.d.ts.map +1 -1
- package/dist/definitions/components/table/TableConsumer.d.ts +5 -0
- package/dist/definitions/components/table/TableConsumer.d.ts.map +1 -0
- package/dist/definitions/index.d.ts +1 -1
- package/dist/definitions/index.d.ts.map +1 -1
- package/dist/definitions/theme/Theme.d.ts.map +1 -1
- package/dist/esm/components/code-editor/CodeEditor.js +4 -22
- package/dist/esm/components/code-editor/CodeEditor.js.map +1 -1
- package/dist/esm/components/collection/Collection.js +7 -4
- package/dist/esm/components/collection/Collection.js.map +1 -1
- package/dist/esm/components/collection/CollectionItem.js +1 -1
- package/dist/esm/components/collection/CollectionItem.js.map +1 -1
- package/dist/esm/components/copyToClipboard/CopyToClipboard.js +49 -0
- package/dist/esm/components/copyToClipboard/CopyToClipboard.js.map +1 -0
- package/dist/esm/components/copyToClipboard/index.js +3 -0
- package/dist/esm/components/copyToClipboard/index.js.map +1 -0
- package/dist/esm/components/index.js +1 -0
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/components/modal-wizard/ModalWizard.js +2 -2
- package/dist/esm/components/modal-wizard/ModalWizard.js.map +1 -1
- package/dist/esm/components/table/Table.js +43 -35
- package/dist/esm/components/table/Table.js.map +1 -1
- package/dist/esm/components/table/Table.types.js.map +1 -1
- package/dist/esm/components/table/TableConsumer.js +9 -0
- package/dist/esm/components/table/TableConsumer.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/theme/Theme.js +13 -7
- package/dist/esm/theme/Theme.js.map +1 -1
- package/package.json +16 -16
- package/src/components/code-editor/CodeEditor.tsx +2 -13
- package/src/components/collection/Collection.tsx +15 -4
- package/src/components/collection/CollectionItem.tsx +1 -1
- package/src/components/copyToClipboard/CopyToClipboard.tsx +52 -0
- package/src/components/copyToClipboard/__tests__/CopyToClipboard.spec.tsx +25 -0
- package/src/components/copyToClipboard/index.ts +1 -0
- package/src/components/index.ts +1 -0
- package/src/components/modal-wizard/ModalWizard.tsx +4 -4
- package/src/components/modal-wizard/__tests__/ModalWizard.spec.tsx +10 -0
- package/src/components/table/Table.tsx +4 -0
- package/src/components/table/Table.types.ts +3 -1
- package/src/components/table/TableConsumer.tsx +3 -0
- package/src/components/table/__tests__/Table.spec.tsx +25 -0
- package/src/index.ts +2 -0
- package/src/theme/Theme.tsx +8 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/theme/Theme.tsx"],"sourcesContent":["import {InfoSize24Px} from '@coveord/plasma-react-icons';\nimport {color} from '@coveord/plasma-tokens';\nimport {getSize, MantineThemeOverride, NotificationProps, rem} from '@mantine/core';\n\nimport {PlasmaColors} from './PlasmaColors';\n\nexport const plasmaTheme: MantineThemeOverride = {\n // These are overrides over https://github.com/mantinedev/mantine/blob/master/src/mantine-styles/src/theme/default-theme.ts\n colorScheme: 'light',\n fontFamily: 'canada-type-gibson, sans-serif',\n black: color.primary.gray[9],\n defaultRadius: 8,\n lineHeight: 1.5,\n spacing: {\n xs: '8px',\n sm: '16px',\n md: '24px',\n lg: '32px',\n xl: '40px',\n },\n primaryColor: 'action',\n headings: {\n fontFamily: 'canada-type-gibson, sans-serif',\n fontWeight: 500,\n sizes: {\n h1: {fontSize: '48px', lineHeight: undefined, fontWeight: 300},\n h2: {fontSize: '32px', lineHeight: undefined, fontWeight: 500},\n h3: {fontSize: '24px', lineHeight: undefined, fontWeight: 500},\n h4: {fontSize: '18px', lineHeight: undefined, fontWeight: 300},\n h5: {fontSize: '14px', lineHeight: undefined, fontWeight: 500},\n h6: {fontSize: '12px', lineHeight: undefined, fontWeight: 500},\n },\n },\n shadows: {\n xs: '0px 1px 0px rgba(4, 8, 31, 0.08)',\n sm: '0px 2px 4px rgba(4, 8, 31, 0.12)',\n md: '0px 4px 8px rgba(4, 8, 31, 0.08)',\n lg: '0px 8px 16px rgba(7, 12, 41, 0.06)',\n xl: '0px 16px 24px rgba(4, 8, 31, 0.06)',\n },\n colors: PlasmaColors,\n components: {\n Alert: {\n defaultProps: {\n icon: <InfoSize24Px height={24} />,\n color: 'navy',\n },\n styles: {\n title: {\n fontWeight: 500,\n },\n },\n },\n Title: {\n styles: (theme) => ({\n root: {\n '&:is(h1,h2,h3,h4,h5,h6)': {letterSpacing: '0.011em'},\n },\n }),\n },\n Text: {\n defaultProps: {\n weight: 300,\n },\n styles: (theme, {}, {size}) => ({\n root: {\n fontSize: getSize({size: size ?? 'sm', sizes: theme.fontSizes}),\n },\n }),\n },\n Button: {\n styles: () => ({\n root: {\n fontWeight: 400,\n },\n }),\n variants: {\n outline: () => ({\n root: {\n backgroundColor: 'white',\n },\n }),\n },\n },\n Modal: {\n styles: (theme, {fullScreen}, {size}) => ({\n content: {\n flex: fullScreen\n ? '0 0 100%'\n : `0 0 ${getSize({\n size,\n sizes: {\n xs: rem(440),\n sm: rem(550),\n md: rem(800),\n lg: rem(1334),\n xl: rem('85%'),\n },\n })}`,\n overflow: 'auto',\n },\n title: {\n width: '100%',\n fontSize: theme.headings.sizes.h3.fontSize,\n lineHeight: theme.headings.sizes.h3.lineHeight,\n fontWeight: 500,\n },\n }),\n defaultProps: {\n overlayProps: {\n color: color.primary.navy[9],\n opacity: 0.9,\n },\n },\n },\n InputWrapper: {\n defaultProps: {\n withAsterisk: false,\n },\n styles: (theme) => ({\n label: {\n marginBottom: theme.spacing.xs,\n },\n description: {\n fontSize: theme.fontSizes.sm,\n color: theme.colors.gray[7],\n marginBottom: theme.spacing.xs,\n },\n invalid: {\n color: theme.colors.red[9],\n borderColor: theme.colors.red[6],\n },\n error: {\n color: theme.colors.red[9],\n },\n }),\n },\n TextInput: {\n defaultProps: {\n radius: 8,\n },\n },\n Tooltip: {\n defaultProps: {\n color: 'navy',\n withArrow: true,\n withinPortal: true,\n multiline: true,\n },\n },\n Loader: {\n defaultProps: {\n variant: 'dots',\n color: 'action',\n },\n },\n DateRangePicker: {\n styles: {\n cell: {\n textAlign: 'center',\n },\n },\n },\n Anchor: {\n defaultProps: {\n color: 'action.6',\n },\n styles: (theme) => ({\n root: {\n ...theme.fn.hover({\n textDecoration: 'underline',\n color: theme.colors.action[8],\n }),\n },\n }),\n },\n Checkbox: {\n defaultProps: {\n radius: 'sm',\n },\n },\n List: {\n styles: () => ({\n root: {\n listStyleType: 'disc',\n },\n }),\n },\n Radio: {\n styles: {\n labelWrapper: {\n display: 'flex',\n alignItems: 'flex-start',\n },\n },\n },\n Popover: {\n defaultProps: {\n shadow: 'md',\n withArrow: true,\n },\n },\n Badge: {\n styles: {\n root: {\n textTransform: 'none',\n padding: '4px 8px',\n fontWeight: 500,\n },\n },\n },\n ColorSwatch: {\n defaultProps: {\n size: 8,\n withShadow: false,\n },\n },\n MenuItem: {\n defaultProps: {\n fw: 300,\n },\n },\n Notification: {\n styles: (theme, {color: notificationType}: NotificationProps) => ({\n root: {\n borderColor: theme.colors.gray[3],\n backgroundColor: theme.colors.gray[0],\n boxShadow: theme.shadows.lg,\n padding: theme.spacing.sm,\n '&[data-with-icon]': {\n paddingLeft: theme.spacing.sm,\n },\n },\n icon: {\n backgroundColor: 'transparent',\n marginRight: theme.spacing.sm,\n color: theme.colors?.[notificationType][6],\n },\n closeButton: {\n margin: theme.spacing.xs,\n color: theme.colors.gray[5],\n },\n }),\n defaultProps: {\n icon: <InfoSize24Px height={24} />,\n color: 'info',\n },\n },\n Skeleton: {\n styles: {\n visible: {\n '&::before': {zIndex: 'unset'},\n '&::after': {zIndex: 'unset'},\n },\n },\n },\n Segmented: {\n styles: {\n control: {\n zIndex: 'unset',\n },\n },\n },\n },\n};\n"],"names":["InfoSize24Px","color","getSize","rem","PlasmaColors","plasmaTheme","colorScheme","fontFamily","black","primary","gray","defaultRadius","lineHeight","spacing","xs","sm","md","lg","xl","primaryColor","headings","fontWeight","sizes","h1","fontSize","undefined","h2","h3","h4","h5","h6","shadows","colors","components","Alert","defaultProps","icon","height","styles","title","Title","theme","root","letterSpacing","Text","weight","size","fontSizes","Button","variants","outline","backgroundColor","Modal","fullScreen","content","flex","overflow","width","overlayProps","navy","opacity","InputWrapper","withAsterisk","label","marginBottom","description","invalid","red","borderColor","error","TextInput","radius","Tooltip","withArrow","withinPortal","multiline","Loader","variant","DateRangePicker","cell","textAlign","Anchor","fn","hover","textDecoration","action","Checkbox","List","listStyleType","Radio","labelWrapper","display","alignItems","Popover","shadow","Badge","textTransform","padding","ColorSwatch","withShadow","MenuItem","fw","Notification","notificationType","boxShadow","paddingLeft","marginRight","closeButton","margin","Skeleton","visible","zIndex","Segmented","control"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/theme/Theme.tsx"],"sourcesContent":["import {InfoSize24Px} from '@coveord/plasma-react-icons';\nimport {color} from '@coveord/plasma-tokens';\nimport {getSize, MantineThemeOverride, NotificationProps, rem} from '@mantine/core';\n\nimport {PlasmaColors} from './PlasmaColors';\n\nexport const plasmaTheme: MantineThemeOverride = {\n // These are overrides over https://github.com/mantinedev/mantine/blob/master/src/mantine-styles/src/theme/default-theme.ts\n colorScheme: 'light',\n fontFamily: 'canada-type-gibson, sans-serif',\n black: color.primary.gray[9],\n defaultRadius: 8,\n lineHeight: 1.5,\n spacing: {\n xs: '8px',\n sm: '16px',\n md: '24px',\n lg: '32px',\n xl: '40px',\n },\n primaryColor: 'action',\n headings: {\n fontFamily: 'canada-type-gibson, sans-serif',\n fontWeight: 500,\n sizes: {\n h1: {fontSize: '48px', lineHeight: undefined, fontWeight: 300},\n h2: {fontSize: '32px', lineHeight: undefined, fontWeight: 500},\n h3: {fontSize: '24px', lineHeight: undefined, fontWeight: 500},\n h4: {fontSize: '18px', lineHeight: undefined, fontWeight: 300},\n h5: {fontSize: '14px', lineHeight: undefined, fontWeight: 500},\n h6: {fontSize: '12px', lineHeight: undefined, fontWeight: 500},\n },\n },\n shadows: {\n xs: '0px 1px 0px rgba(4, 8, 31, 0.08)',\n sm: '0px 2px 4px rgba(4, 8, 31, 0.12)',\n md: '0px 4px 8px rgba(4, 8, 31, 0.08)',\n lg: '0px 8px 16px rgba(7, 12, 41, 0.06)',\n xl: '0px 16px 24px rgba(4, 8, 31, 0.06)',\n },\n colors: PlasmaColors,\n components: {\n Alert: {\n defaultProps: {\n icon: <InfoSize24Px height={24} />,\n color: 'navy',\n },\n styles: {\n title: {\n fontWeight: 500,\n },\n },\n },\n Title: {\n styles: {\n root: {\n '&:is(h1,h2,h3,h4,h5,h6)': {letterSpacing: '0.011em'},\n },\n },\n },\n Text: {\n defaultProps: {\n weight: 300,\n },\n styles: (theme, {}, {size}) => ({\n root: {\n fontSize: getSize({size: size ?? 'sm', sizes: theme.fontSizes}),\n },\n }),\n },\n Button: {\n styles: () => ({\n root: {\n fontWeight: 400,\n },\n }),\n variants: {\n outline: () => ({\n root: {\n backgroundColor: 'white',\n },\n }),\n },\n },\n Modal: {\n styles: (theme, {fullScreen}, {size}) => ({\n content: {\n flex: fullScreen\n ? '0 0 100%'\n : `0 0 ${getSize({\n size,\n sizes: {\n xs: rem(440),\n sm: rem(550),\n md: rem(800),\n lg: rem(1334),\n xl: rem('85%'),\n },\n })}`,\n overflow: 'auto',\n },\n title: {\n width: '100%',\n fontSize: theme.headings.sizes.h3.fontSize,\n lineHeight: theme.headings.sizes.h3.lineHeight,\n fontWeight: 500,\n },\n }),\n defaultProps: {\n overlayProps: {\n color: color.primary.navy[9],\n opacity: 0.9,\n },\n },\n },\n InputWrapper: {\n defaultProps: {\n withAsterisk: false,\n },\n styles: (theme) => ({\n label: {\n marginBottom: theme.spacing.xs,\n },\n description: {\n fontSize: theme.fontSizes.sm,\n color: theme.colors.gray[7],\n marginBottom: theme.spacing.xs,\n },\n invalid: {\n color: theme.colors.red[9],\n borderColor: theme.colors.red[6],\n },\n error: {\n color: theme.colors.red[9],\n },\n }),\n },\n TextInput: {\n defaultProps: {\n radius: 8,\n },\n },\n Tooltip: {\n defaultProps: {\n color: 'navy',\n withArrow: true,\n withinPortal: true,\n multiline: true,\n },\n },\n Loader: {\n defaultProps: {\n variant: 'dots',\n color: 'action',\n },\n },\n DateRangePicker: {\n styles: {\n cell: {\n textAlign: 'center',\n },\n },\n },\n Anchor: {\n defaultProps: {\n color: 'action.6',\n },\n styles: (theme) => ({\n root: {\n ...theme.fn.hover({\n textDecoration: 'underline',\n color: theme.colors.action[8],\n }),\n },\n }),\n },\n Checkbox: {\n defaultProps: {\n radius: 'sm',\n },\n styles: (theme) => ({\n label: {\n fontSize: theme.fontSizes.sm,\n fontWeight: 300,\n },\n }),\n },\n List: {\n styles: () => ({\n root: {\n listStyleType: 'disc',\n },\n }),\n },\n Radio: {\n styles: {\n labelWrapper: {\n display: 'flex',\n alignItems: 'flex-start',\n },\n },\n },\n Popover: {\n defaultProps: {\n shadow: 'md',\n withArrow: true,\n },\n },\n Badge: {\n styles: {\n root: {\n textTransform: 'none',\n padding: '4px 8px',\n fontWeight: 500,\n },\n },\n },\n ColorSwatch: {\n defaultProps: {\n size: 8,\n withShadow: false,\n },\n },\n MenuItem: {\n defaultProps: {\n fw: 300,\n },\n },\n Notification: {\n styles: (theme, {color: notificationType}: NotificationProps) => ({\n root: {\n borderColor: theme.colors.gray[3],\n backgroundColor: theme.colors.gray[0],\n boxShadow: theme.shadows.lg,\n padding: theme.spacing.sm,\n '&[data-with-icon]': {\n paddingLeft: theme.spacing.sm,\n },\n },\n icon: {\n backgroundColor: 'transparent',\n marginRight: theme.spacing.sm,\n color: theme.colors?.[notificationType][6],\n },\n closeButton: {\n margin: theme.spacing.xs,\n color: theme.colors.gray[5],\n },\n }),\n defaultProps: {\n icon: <InfoSize24Px height={24} />,\n color: 'info',\n },\n },\n Skeleton: {\n styles: {\n visible: {\n '&::before': {zIndex: 'unset'},\n '&::after': {zIndex: 'unset'},\n },\n },\n },\n Segmented: {\n styles: {\n control: {\n zIndex: 'unset',\n },\n },\n },\n },\n};\n"],"names":["InfoSize24Px","color","getSize","rem","PlasmaColors","plasmaTheme","colorScheme","fontFamily","black","primary","gray","defaultRadius","lineHeight","spacing","xs","sm","md","lg","xl","primaryColor","headings","fontWeight","sizes","h1","fontSize","undefined","h2","h3","h4","h5","h6","shadows","colors","components","Alert","defaultProps","icon","height","styles","title","Title","root","letterSpacing","Text","weight","theme","size","fontSizes","Button","variants","outline","backgroundColor","Modal","fullScreen","content","flex","overflow","width","overlayProps","navy","opacity","InputWrapper","withAsterisk","label","marginBottom","description","invalid","red","borderColor","error","TextInput","radius","Tooltip","withArrow","withinPortal","multiline","Loader","variant","DateRangePicker","cell","textAlign","Anchor","fn","hover","textDecoration","action","Checkbox","List","listStyleType","Radio","labelWrapper","display","alignItems","Popover","shadow","Badge","textTransform","padding","ColorSwatch","withShadow","MenuItem","fw","Notification","notificationType","boxShadow","paddingLeft","marginRight","closeButton","margin","Skeleton","visible","zIndex","Segmented","control"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coveord/plasma-mantine",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "52.0.0",
|
|
4
4
|
"description": "A Plasma flavoured Mantine theme",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"plasma",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"module": "./dist/esm/index.js",
|
|
15
15
|
"types": "./dist/definitions/index.d.ts",
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@mantine/utils": "6.0.
|
|
17
|
+
"@mantine/utils": "6.0.6",
|
|
18
18
|
"@monaco-editor/react": "4.4.5",
|
|
19
19
|
"@swc/helpers": "0.4.14",
|
|
20
20
|
"@tanstack/react-table": "8.7.9",
|
|
@@ -25,20 +25,20 @@
|
|
|
25
25
|
"lodash.defaultsdeep": "4.6.1",
|
|
26
26
|
"monaco-editor": "0.34.0",
|
|
27
27
|
"react-beautiful-dnd": "13.1.1",
|
|
28
|
-
"@coveord/plasma-react-icons": "
|
|
29
|
-
"@coveord/plasma-tokens": "
|
|
28
|
+
"@coveord/plasma-react-icons": "52.0.0",
|
|
29
|
+
"@coveord/plasma-tokens": "52.0.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@emotion/react": "11.10.6",
|
|
33
|
-
"@mantine/carousel": "6.0.
|
|
34
|
-
"@mantine/core": "6.0.
|
|
35
|
-
"@mantine/dates": "6.0.
|
|
36
|
-
"@mantine/form": "6.0.
|
|
37
|
-
"@mantine/hooks": "6.0.
|
|
38
|
-
"@mantine/modals": "6.0.
|
|
39
|
-
"@mantine/notifications": "6.0.
|
|
33
|
+
"@mantine/carousel": "6.0.6",
|
|
34
|
+
"@mantine/core": "6.0.6",
|
|
35
|
+
"@mantine/dates": "6.0.6",
|
|
36
|
+
"@mantine/form": "6.0.6",
|
|
37
|
+
"@mantine/hooks": "6.0.6",
|
|
38
|
+
"@mantine/modals": "6.0.6",
|
|
39
|
+
"@mantine/notifications": "6.0.6",
|
|
40
40
|
"@swc/cli": "0.1.62",
|
|
41
|
-
"@swc/core": "1.3.
|
|
41
|
+
"@swc/core": "1.3.44",
|
|
42
42
|
"@swc/jest": "0.2.24",
|
|
43
43
|
"@testing-library/dom": "8.18.1",
|
|
44
44
|
"@testing-library/jest-dom": "5.16.5",
|
|
@@ -51,10 +51,10 @@
|
|
|
51
51
|
"@types/react-beautiful-dnd": "13.1.4",
|
|
52
52
|
"@types/react-dom": "18.0.6",
|
|
53
53
|
"@types/testing-library__jest-dom": "5.14.5",
|
|
54
|
-
"csstype": "3.1.
|
|
54
|
+
"csstype": "3.1.2",
|
|
55
55
|
"embla-carousel-react": "7.1.0",
|
|
56
56
|
"eslint-plugin-testing-library": "5.7.2",
|
|
57
|
-
"eslint-plugin-vitest": "0.0.
|
|
57
|
+
"eslint-plugin-vitest": "0.0.57",
|
|
58
58
|
"eslint-plugin-vitest-globals": "1.2.0",
|
|
59
59
|
"identity-obj-proxy": "3.0.0",
|
|
60
60
|
"jest": "29.2.1",
|
|
@@ -64,8 +64,8 @@
|
|
|
64
64
|
"react": "18.2.0",
|
|
65
65
|
"react-dom": "18.2.0",
|
|
66
66
|
"rimraf": "3.0.2",
|
|
67
|
-
"tslib": "2.
|
|
68
|
-
"typescript": "
|
|
67
|
+
"tslib": "2.5.0",
|
|
68
|
+
"typescript": "5.0.3",
|
|
69
69
|
"vitest": "0.28.3"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import {CheckSize16Px, CopySize16Px} from '@coveord/plasma-react-icons';
|
|
2
1
|
import {
|
|
3
|
-
ActionIcon,
|
|
4
2
|
Box,
|
|
5
3
|
Center,
|
|
6
|
-
CopyButton,
|
|
7
4
|
createStyles,
|
|
8
5
|
DefaultProps,
|
|
9
6
|
Group,
|
|
@@ -14,7 +11,6 @@ import {
|
|
|
14
11
|
Selectors,
|
|
15
12
|
Space,
|
|
16
13
|
Stack,
|
|
17
|
-
Tooltip,
|
|
18
14
|
useComponentDefaultProps,
|
|
19
15
|
} from '@mantine/core';
|
|
20
16
|
import {useUncontrolled} from '@mantine/hooks';
|
|
@@ -23,6 +19,7 @@ import {FunctionComponent, useEffect, useState} from 'react';
|
|
|
23
19
|
|
|
24
20
|
import {useParentHeight} from '../../hooks';
|
|
25
21
|
import {XML} from './languages/xml';
|
|
22
|
+
import {CopyToClipboard} from '../copyToClipboard';
|
|
26
23
|
|
|
27
24
|
const useStyles = createStyles((theme) => ({
|
|
28
25
|
root: {},
|
|
@@ -162,15 +159,7 @@ export const CodeEditor: FunctionComponent<CodeEditorProps> = (props) => {
|
|
|
162
159
|
|
|
163
160
|
const _copyButton = (
|
|
164
161
|
<Group position="right">
|
|
165
|
-
<
|
|
166
|
-
{({copied, copy}) => (
|
|
167
|
-
<Tooltip label={copied ? 'Copied' : 'Copy'} withArrow position="right">
|
|
168
|
-
<ActionIcon color={copied ? 'lime' : 'gray'} onClick={copy}>
|
|
169
|
-
{copied ? <CheckSize16Px height={16} /> : <CopySize16Px height={16} />}
|
|
170
|
-
</ActionIcon>
|
|
171
|
-
</Tooltip>
|
|
172
|
-
)}
|
|
173
|
-
</CopyButton>
|
|
162
|
+
<CopyToClipboard value={_value} />
|
|
174
163
|
</Group>
|
|
175
164
|
);
|
|
176
165
|
|
|
@@ -12,8 +12,8 @@ import {
|
|
|
12
12
|
useComponentDefaultProps,
|
|
13
13
|
} from '@mantine/core';
|
|
14
14
|
import {ReorderPayload} from '@mantine/form/lib/types';
|
|
15
|
-
import {useDidUpdate
|
|
16
|
-
import {ReactNode} from 'react';
|
|
15
|
+
import {useDidUpdate} from '@mantine/hooks';
|
|
16
|
+
import {ReactNode, useId} from 'react';
|
|
17
17
|
import {DragDropContext, Droppable} from 'react-beautiful-dnd';
|
|
18
18
|
|
|
19
19
|
import {Button} from '../button';
|
|
@@ -40,6 +40,16 @@ interface CollectionProps<T>
|
|
|
40
40
|
* @default []
|
|
41
41
|
*/
|
|
42
42
|
value?: T[];
|
|
43
|
+
/**
|
|
44
|
+
* Defines how each item is uniquely identified. It is highly recommended that you specify this prop to an ID that makes sense.
|
|
45
|
+
*
|
|
46
|
+
* This method is required when using this component with ReactHookForm.
|
|
47
|
+
*
|
|
48
|
+
* @see {@link https://react-hook-form.com/api/usefieldarray/} for using a collection with ReactHookForm.
|
|
49
|
+
*
|
|
50
|
+
* @param originalItem The original item
|
|
51
|
+
*/
|
|
52
|
+
getItemId?: (originalItem: T) => string;
|
|
43
53
|
/**
|
|
44
54
|
* Unused, has no effect
|
|
45
55
|
*/
|
|
@@ -146,6 +156,7 @@ export const Collection = <T,>(props: CollectionProps<T>) => {
|
|
|
146
156
|
descriptionProps,
|
|
147
157
|
error,
|
|
148
158
|
errorProps,
|
|
159
|
+
getItemId,
|
|
149
160
|
|
|
150
161
|
// Style props
|
|
151
162
|
classNames,
|
|
@@ -156,7 +167,7 @@ export const Collection = <T,>(props: CollectionProps<T>) => {
|
|
|
156
167
|
...others
|
|
157
168
|
} = useComponentDefaultProps('Collection', defaultProps as CollectionProps<T>, props);
|
|
158
169
|
const {classes, cx} = useStyles(null, {classNames, name: 'Collection', styles, unstyled});
|
|
159
|
-
const collectionID = useId(
|
|
170
|
+
const collectionID = useId();
|
|
160
171
|
|
|
161
172
|
const hasOnlyOneItem = value.length === 1;
|
|
162
173
|
|
|
@@ -188,7 +199,7 @@ export const Collection = <T,>(props: CollectionProps<T>) => {
|
|
|
188
199
|
|
|
189
200
|
const items = value.map((item, index) => (
|
|
190
201
|
<CollectionItem
|
|
191
|
-
key={index}
|
|
202
|
+
key={(getItemId?.(item) ?? index) as string}
|
|
192
203
|
disabled={disabled}
|
|
193
204
|
draggable={draggable}
|
|
194
205
|
index={index}
|
|
@@ -62,7 +62,7 @@ const DraggableCollectionItem: FunctionComponent<PropsWithChildren<CollectionIte
|
|
|
62
62
|
const removeButton = removable && onRemove ? <RemoveButton onClick={onRemove} /> : null;
|
|
63
63
|
|
|
64
64
|
return (
|
|
65
|
-
<Draggable index={index} draggableId={index.toString()}>
|
|
65
|
+
<Draggable key={index} index={index} draggableId={index.toString()}>
|
|
66
66
|
{(provided, {isDragging}) => (
|
|
67
67
|
<Group
|
|
68
68
|
ref={provided.innerRef}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import {CheckSize24Px, CopySize24Px} from '@coveord/plasma-react-icons';
|
|
4
|
+
import {TextInput, CopyButton, Tooltip, ActionIcon, createStyles} from '@mantine/core';
|
|
5
|
+
|
|
6
|
+
export interface CopyToClipboardProps {
|
|
7
|
+
/**
|
|
8
|
+
* The value to be copied to the clipboard.
|
|
9
|
+
*/
|
|
10
|
+
value: string;
|
|
11
|
+
/**
|
|
12
|
+
* Whether to display the string to be copied alongside the button.
|
|
13
|
+
*
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
16
|
+
withLabel?: boolean;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const useStyles = createStyles((theme) => ({
|
|
20
|
+
input: {
|
|
21
|
+
color: theme.colors.gray[7],
|
|
22
|
+
},
|
|
23
|
+
}));
|
|
24
|
+
|
|
25
|
+
const CopyToClipboardButton: React.FunctionComponent<{value: string}> = ({value}) => (
|
|
26
|
+
<CopyButton value={value} timeout={2000}>
|
|
27
|
+
{({copied, copy}) => (
|
|
28
|
+
<Tooltip label={copied ? 'Copied' : 'Copy'} withArrow position="top">
|
|
29
|
+
<ActionIcon color={copied ? 'teal' : 'gray'} onClick={copy}>
|
|
30
|
+
{copied ? <CheckSize24Px /> : <CopySize24Px />}
|
|
31
|
+
</ActionIcon>
|
|
32
|
+
</Tooltip>
|
|
33
|
+
)}
|
|
34
|
+
</CopyButton>
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
export const CopyToClipboard: React.FunctionComponent<CopyToClipboardProps> = ({value, withLabel}) => {
|
|
38
|
+
const {classes} = useStyles();
|
|
39
|
+
|
|
40
|
+
return withLabel ? (
|
|
41
|
+
<TextInput
|
|
42
|
+
classNames={{
|
|
43
|
+
input: classes.input,
|
|
44
|
+
}}
|
|
45
|
+
value={value}
|
|
46
|
+
readOnly
|
|
47
|
+
rightSection={<CopyToClipboardButton value={value} />}
|
|
48
|
+
/>
|
|
49
|
+
) : (
|
|
50
|
+
<CopyToClipboardButton value={value} />
|
|
51
|
+
);
|
|
52
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import {render, screen} from '@test-utils';
|
|
2
|
+
|
|
3
|
+
import {CopyToClipboard} from '../CopyToClipboard';
|
|
4
|
+
|
|
5
|
+
describe('CopyToClipboard', () => {
|
|
6
|
+
it('should display only a button by default', () => {
|
|
7
|
+
const testValue = 'text value';
|
|
8
|
+
render(<CopyToClipboard value={testValue} />);
|
|
9
|
+
|
|
10
|
+
expect(screen.getByRole('button', {name: /copy/i})).toBeVisible();
|
|
11
|
+
expect(screen.queryByDisplayValue(testValue)).not.toBeInTheDocument();
|
|
12
|
+
expect(document.querySelector('input')).not.toBeInTheDocument();
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
describe('when "isLabel" is true', () => {
|
|
16
|
+
it('should display an input element', () => {
|
|
17
|
+
const testValue = 'text value';
|
|
18
|
+
render(<CopyToClipboard value={testValue} withLabel />);
|
|
19
|
+
|
|
20
|
+
expect(screen.getByDisplayValue(testValue)).toBeVisible();
|
|
21
|
+
expect(screen.getByRole('button', {name: /copy/i})).toBeVisible();
|
|
22
|
+
expect(document.querySelector('input')).toBeInTheDocument();
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './CopyToClipboard';
|
package/src/components/index.ts
CHANGED
|
@@ -54,12 +54,12 @@ export interface ModalWizardProps
|
|
|
54
54
|
/**
|
|
55
55
|
* A callback function that is executed when the user clicks on the next button
|
|
56
56
|
*/
|
|
57
|
-
onNext?: () => unknown;
|
|
57
|
+
onNext?: (newStep: number) => unknown;
|
|
58
58
|
|
|
59
59
|
/**
|
|
60
60
|
* A callback function that is executed when the user clicks on the previous button
|
|
61
61
|
*/
|
|
62
|
-
onPrevious?: () => unknown;
|
|
62
|
+
onPrevious?: (newStep: number) => unknown;
|
|
63
63
|
|
|
64
64
|
/**
|
|
65
65
|
* A function that is executed when user completes all the steps.
|
|
@@ -210,7 +210,7 @@ export const ModalWizard: ModalWizardType = ({
|
|
|
210
210
|
if (isFirstStep) {
|
|
211
211
|
handleClose(true);
|
|
212
212
|
} else {
|
|
213
|
-
onPrevious?.();
|
|
213
|
+
onPrevious?.(currentStepIndex - 1);
|
|
214
214
|
setCurrentStepIndex(currentStepIndex - 1);
|
|
215
215
|
}
|
|
216
216
|
}}
|
|
@@ -224,7 +224,7 @@ export const ModalWizard: ModalWizardType = ({
|
|
|
224
224
|
if (isLastStep) {
|
|
225
225
|
onFinish?.() ?? handleClose(false);
|
|
226
226
|
} else {
|
|
227
|
-
onNext?.();
|
|
227
|
+
onNext?.(currentStepIndex + 1);
|
|
228
228
|
setCurrentStepIndex(currentStepIndex + 1);
|
|
229
229
|
}
|
|
230
230
|
}}
|
|
@@ -34,6 +34,8 @@ describe('ModalWizard', () => {
|
|
|
34
34
|
];
|
|
35
35
|
|
|
36
36
|
const isDirty = () => false;
|
|
37
|
+
const onNextSpy = vi.fn();
|
|
38
|
+
const onPreviousSpy = vi.fn();
|
|
37
39
|
|
|
38
40
|
render(
|
|
39
41
|
<ModalWizard
|
|
@@ -41,6 +43,8 @@ describe('ModalWizard', () => {
|
|
|
41
43
|
handleDirtyState={() => confirm('Are you sure you want to close?')}
|
|
42
44
|
opened={true}
|
|
43
45
|
onClose={undefined}
|
|
46
|
+
onNext={onNextSpy}
|
|
47
|
+
onPrevious={onPreviousSpy}
|
|
44
48
|
>
|
|
45
49
|
{modelSteps.map((model_item) => (
|
|
46
50
|
<ModalWizard.Step
|
|
@@ -75,6 +79,8 @@ describe('ModalWizard', () => {
|
|
|
75
79
|
|
|
76
80
|
await user.click(nextButton);
|
|
77
81
|
|
|
82
|
+
expect(onNextSpy).toHaveBeenCalledWith(1);
|
|
83
|
+
|
|
78
84
|
expect(
|
|
79
85
|
screen.getByRole('heading', {
|
|
80
86
|
name: /current step is: 2/i,
|
|
@@ -102,6 +108,8 @@ describe('ModalWizard', () => {
|
|
|
102
108
|
|
|
103
109
|
await user.click(nextButton);
|
|
104
110
|
|
|
111
|
+
expect(onNextSpy).toHaveBeenCalledWith(2);
|
|
112
|
+
|
|
105
113
|
expect(
|
|
106
114
|
screen.getByRole('heading', {
|
|
107
115
|
name: /current step is: 3/i,
|
|
@@ -135,6 +143,8 @@ describe('ModalWizard', () => {
|
|
|
135
143
|
})
|
|
136
144
|
);
|
|
137
145
|
|
|
146
|
+
expect(onNextSpy).toHaveBeenCalledWith(1);
|
|
147
|
+
|
|
138
148
|
expect(
|
|
139
149
|
screen.getByRole('heading', {
|
|
140
150
|
name: /current step is: 2/i,
|
|
@@ -26,6 +26,7 @@ import {TableHeader} from './TableHeader';
|
|
|
26
26
|
import {TablePagination} from './TablePagination';
|
|
27
27
|
import {TablePerPage} from './TablePerPage';
|
|
28
28
|
import {TablePredicate} from './TablePredicate';
|
|
29
|
+
import {TableConsumer} from './TableConsumer';
|
|
29
30
|
import {TableSelectableColumn} from './TableSelectableColumn';
|
|
30
31
|
import {Th} from './Th';
|
|
31
32
|
import {useRowSelection} from './useRowSelection';
|
|
@@ -55,6 +56,7 @@ export const Table: TableType = <T,>({
|
|
|
55
56
|
const convertedChildren = Children.toArray(children) as ReactElement[];
|
|
56
57
|
const header = convertedChildren.find((child) => child.type === TableHeader);
|
|
57
58
|
const footer = convertedChildren.find((child) => child.type === TableFooter);
|
|
59
|
+
const consumer = convertedChildren.find((child) => child.type === TableConsumer);
|
|
58
60
|
|
|
59
61
|
const {predicates, dateRange, ...initialStateWithoutForm} = initialState;
|
|
60
62
|
const form = useForm<TableFormType>({
|
|
@@ -189,6 +191,7 @@ export const Table: TableType = <T,>({
|
|
|
189
191
|
getPageCount: table.getPageCount,
|
|
190
192
|
}}
|
|
191
193
|
>
|
|
194
|
+
{consumer}
|
|
192
195
|
{!rows.length && !isFiltered && !loading ? (
|
|
193
196
|
noDataChildren
|
|
194
197
|
) : (
|
|
@@ -235,3 +238,4 @@ Table.Predicate = TablePredicate;
|
|
|
235
238
|
Table.CollapsibleColumn = TableCollapsibleColumn;
|
|
236
239
|
Table.AccordionColumn = TableAccordionColumn;
|
|
237
240
|
Table.DateRangePicker = TableDateRangePicker;
|
|
241
|
+
Table.Consumer = TableConsumer;
|
|
@@ -7,8 +7,8 @@ import {
|
|
|
7
7
|
TableState as TanstackTableState,
|
|
8
8
|
} from '@tanstack/table-core';
|
|
9
9
|
import {Dispatch, ReactElement, ReactNode, RefObject} from 'react';
|
|
10
|
-
import {DateRangePickerValue} from '../date-range-picker/DateRangePickerInlineCalendar';
|
|
11
10
|
|
|
11
|
+
import {DateRangePickerValue} from '../date-range-picker/DateRangePickerInlineCalendar';
|
|
12
12
|
import {TableActions} from './TableActions';
|
|
13
13
|
import {TableAccordionColumn, TableCollapsibleColumn} from './TableCollapsibleColumn';
|
|
14
14
|
import {TableDateRangePicker} from './TableDateRangePicker';
|
|
@@ -18,6 +18,7 @@ import {TableHeader} from './TableHeader';
|
|
|
18
18
|
import {TablePagination} from './TablePagination';
|
|
19
19
|
import {TablePerPage} from './TablePerPage';
|
|
20
20
|
import {TablePredicate} from './TablePredicate';
|
|
21
|
+
import {TableConsumer} from './TableConsumer';
|
|
21
22
|
|
|
22
23
|
export type RowSelectionWithData<TData> = Record<string, TData>;
|
|
23
24
|
export interface RowSelectionState<TData> {
|
|
@@ -206,4 +207,5 @@ export interface TableType {
|
|
|
206
207
|
DateRangePicker: typeof TableDateRangePicker;
|
|
207
208
|
CollapsibleColumn: typeof TableCollapsibleColumn;
|
|
208
209
|
AccordionColumn: typeof TableAccordionColumn;
|
|
210
|
+
Consumer: typeof TableConsumer;
|
|
209
211
|
}
|
|
@@ -137,6 +137,31 @@ describe('Table', () => {
|
|
|
137
137
|
expect(screen.queryByTestId('empty-state')).not.toBeInTheDocument();
|
|
138
138
|
});
|
|
139
139
|
|
|
140
|
+
it('updates the table when a component in Table.Consumer triggers a change', async () => {
|
|
141
|
+
const user = userEvent.setup();
|
|
142
|
+
const spy = vi.fn();
|
|
143
|
+
const Fixture = () => {
|
|
144
|
+
const {onChange} = useTable();
|
|
145
|
+
return <button onClick={() => onChange()}>Click me</button>;
|
|
146
|
+
};
|
|
147
|
+
render(
|
|
148
|
+
<Table onChange={spy} data={[{id: '🆔', firstName: 'first', lastName: 'last'}]} columns={columns}>
|
|
149
|
+
<Table.Consumer>
|
|
150
|
+
<Fixture />
|
|
151
|
+
</Table.Consumer>
|
|
152
|
+
</Table>
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
expect(screen.getByRole('button', {name: 'Click me'})).toBeVisible();
|
|
156
|
+
expect(spy).not.toHaveBeenCalled();
|
|
157
|
+
|
|
158
|
+
await user.click(screen.getByRole('button', {name: 'Click me'}));
|
|
159
|
+
|
|
160
|
+
await waitFor(() => {
|
|
161
|
+
expect(spy).toHaveBeenCalledTimes(1);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
|
|
140
165
|
describe('shows a loading animation', () => {
|
|
141
166
|
const doRender = (props: Omit<TableProps<RowData>, 'columns'>) => {
|
|
142
167
|
const NoData = () => {
|
package/src/index.ts
CHANGED
package/src/theme/Theme.tsx
CHANGED
|
@@ -52,11 +52,11 @@ export const plasmaTheme: MantineThemeOverride = {
|
|
|
52
52
|
},
|
|
53
53
|
},
|
|
54
54
|
Title: {
|
|
55
|
-
styles:
|
|
55
|
+
styles: {
|
|
56
56
|
root: {
|
|
57
57
|
'&:is(h1,h2,h3,h4,h5,h6)': {letterSpacing: '0.011em'},
|
|
58
58
|
},
|
|
59
|
-
}
|
|
59
|
+
},
|
|
60
60
|
},
|
|
61
61
|
Text: {
|
|
62
62
|
defaultProps: {
|
|
@@ -178,6 +178,12 @@ export const plasmaTheme: MantineThemeOverride = {
|
|
|
178
178
|
defaultProps: {
|
|
179
179
|
radius: 'sm',
|
|
180
180
|
},
|
|
181
|
+
styles: (theme) => ({
|
|
182
|
+
label: {
|
|
183
|
+
fontSize: theme.fontSizes.sm,
|
|
184
|
+
fontWeight: 300,
|
|
185
|
+
},
|
|
186
|
+
}),
|
|
181
187
|
},
|
|
182
188
|
List: {
|
|
183
189
|
styles: () => ({
|