@coveord/plasma-mantine 51.2.0 → 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.
Files changed (77) hide show
  1. package/.turbo/turbo-build.log +3 -3
  2. package/.turbo/turbo-test.log +30 -29
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/cjs/components/code-editor/CodeEditor.js +3 -21
  5. package/dist/cjs/components/code-editor/CodeEditor.js.map +1 -1
  6. package/dist/cjs/components/collection/Collection.js +6 -3
  7. package/dist/cjs/components/collection/Collection.js.map +1 -1
  8. package/dist/cjs/components/collection/CollectionItem.js +1 -1
  9. package/dist/cjs/components/collection/CollectionItem.js.map +1 -1
  10. package/dist/cjs/components/copyToClipboard/CopyToClipboard.js +60 -0
  11. package/dist/cjs/components/copyToClipboard/CopyToClipboard.js.map +1 -0
  12. package/dist/cjs/components/copyToClipboard/index.js +8 -0
  13. package/dist/cjs/components/copyToClipboard/index.js.map +1 -0
  14. package/dist/cjs/components/index.js +1 -0
  15. package/dist/cjs/components/index.js.map +1 -1
  16. package/dist/cjs/components/modal-wizard/ModalWizard.js +2 -2
  17. package/dist/cjs/components/modal-wizard/ModalWizard.js.map +1 -1
  18. package/dist/cjs/components/table/Table.js +43 -35
  19. package/dist/cjs/components/table/Table.js.map +1 -1
  20. package/dist/cjs/components/table/TableConsumer.js +19 -0
  21. package/dist/cjs/components/table/TableConsumer.js.map +1 -0
  22. package/dist/cjs/index.js +3 -0
  23. package/dist/cjs/index.js.map +1 -1
  24. package/dist/definitions/components/code-editor/CodeEditor.d.ts.map +1 -1
  25. package/dist/definitions/components/collection/Collection.d.ts +10 -0
  26. package/dist/definitions/components/collection/Collection.d.ts.map +1 -1
  27. package/dist/definitions/components/copyToClipboard/CopyToClipboard.d.ts +15 -0
  28. package/dist/definitions/components/copyToClipboard/CopyToClipboard.d.ts.map +1 -0
  29. package/dist/definitions/components/copyToClipboard/index.d.ts +2 -0
  30. package/dist/definitions/components/copyToClipboard/index.d.ts.map +1 -0
  31. package/dist/definitions/components/index.d.ts +1 -0
  32. package/dist/definitions/components/index.d.ts.map +1 -1
  33. package/dist/definitions/components/modal-wizard/ModalWizard.d.ts +2 -2
  34. package/dist/definitions/components/modal-wizard/ModalWizard.d.ts.map +1 -1
  35. package/dist/definitions/components/table/Table.d.ts.map +1 -1
  36. package/dist/definitions/components/table/Table.types.d.ts +2 -0
  37. package/dist/definitions/components/table/Table.types.d.ts.map +1 -1
  38. package/dist/definitions/components/table/TableConsumer.d.ts +5 -0
  39. package/dist/definitions/components/table/TableConsumer.d.ts.map +1 -0
  40. package/dist/definitions/index.d.ts +1 -1
  41. package/dist/definitions/index.d.ts.map +1 -1
  42. package/dist/esm/components/code-editor/CodeEditor.js +4 -22
  43. package/dist/esm/components/code-editor/CodeEditor.js.map +1 -1
  44. package/dist/esm/components/collection/Collection.js +7 -4
  45. package/dist/esm/components/collection/Collection.js.map +1 -1
  46. package/dist/esm/components/collection/CollectionItem.js +1 -1
  47. package/dist/esm/components/collection/CollectionItem.js.map +1 -1
  48. package/dist/esm/components/copyToClipboard/CopyToClipboard.js +49 -0
  49. package/dist/esm/components/copyToClipboard/CopyToClipboard.js.map +1 -0
  50. package/dist/esm/components/copyToClipboard/index.js +3 -0
  51. package/dist/esm/components/copyToClipboard/index.js.map +1 -0
  52. package/dist/esm/components/index.js +1 -0
  53. package/dist/esm/components/index.js.map +1 -1
  54. package/dist/esm/components/modal-wizard/ModalWizard.js +2 -2
  55. package/dist/esm/components/modal-wizard/ModalWizard.js.map +1 -1
  56. package/dist/esm/components/table/Table.js +43 -35
  57. package/dist/esm/components/table/Table.js.map +1 -1
  58. package/dist/esm/components/table/Table.types.js.map +1 -1
  59. package/dist/esm/components/table/TableConsumer.js +9 -0
  60. package/dist/esm/components/table/TableConsumer.js.map +1 -0
  61. package/dist/esm/index.js +1 -1
  62. package/dist/esm/index.js.map +1 -1
  63. package/package.json +16 -16
  64. package/src/components/code-editor/CodeEditor.tsx +2 -13
  65. package/src/components/collection/Collection.tsx +15 -4
  66. package/src/components/collection/CollectionItem.tsx +1 -1
  67. package/src/components/copyToClipboard/CopyToClipboard.tsx +52 -0
  68. package/src/components/copyToClipboard/__tests__/CopyToClipboard.spec.tsx +25 -0
  69. package/src/components/copyToClipboard/index.ts +1 -0
  70. package/src/components/index.ts +1 -0
  71. package/src/components/modal-wizard/ModalWizard.tsx +4 -4
  72. package/src/components/modal-wizard/__tests__/ModalWizard.spec.tsx +10 -0
  73. package/src/components/table/Table.tsx +4 -0
  74. package/src/components/table/Table.types.ts +3 -1
  75. package/src/components/table/TableConsumer.tsx +3 -0
  76. package/src/components/table/__tests__/Table.spec.tsx +25 -0
  77. package/src/index.ts +2 -0
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { CheckSize24Px, CopySize24Px } from "@coveord/plasma-react-icons";
4
+ import { TextInput, CopyButton, Tooltip, ActionIcon, createStyles } from "@mantine/core";
5
+ var useStyles = createStyles(function(theme) {
6
+ return {
7
+ input: {
8
+ color: theme.colors.gray[7]
9
+ }
10
+ };
11
+ });
12
+ var CopyToClipboardButton = function(param) {
13
+ var value = param.value;
14
+ return /*#__PURE__*/ _jsx(CopyButton, {
15
+ value: value,
16
+ timeout: 2000,
17
+ children: function(param) {
18
+ var copied = param.copied, copy = param.copy;
19
+ return /*#__PURE__*/ _jsx(Tooltip, {
20
+ label: copied ? "Copied" : "Copy",
21
+ withArrow: true,
22
+ position: "top",
23
+ children: /*#__PURE__*/ _jsx(ActionIcon, {
24
+ color: copied ? "teal" : "gray",
25
+ onClick: copy,
26
+ children: copied ? /*#__PURE__*/ _jsx(CheckSize24Px, {}) : /*#__PURE__*/ _jsx(CopySize24Px, {})
27
+ })
28
+ });
29
+ }
30
+ });
31
+ };
32
+ export var CopyToClipboard = function(param) {
33
+ var value = param.value, withLabel = param.withLabel;
34
+ var classes = useStyles().classes;
35
+ return withLabel ? /*#__PURE__*/ _jsx(TextInput, {
36
+ classNames: {
37
+ input: classes.input
38
+ },
39
+ value: value,
40
+ readOnly: true,
41
+ rightSection: /*#__PURE__*/ _jsx(CopyToClipboardButton, {
42
+ value: value
43
+ })
44
+ }) : /*#__PURE__*/ _jsx(CopyToClipboardButton, {
45
+ value: value
46
+ });
47
+ };
48
+
49
+ //# sourceMappingURL=CopyToClipboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/copyToClipboard/CopyToClipboard.tsx"],"sourcesContent":["import React from 'react';\n\nimport {CheckSize24Px, CopySize24Px} from '@coveord/plasma-react-icons';\nimport {TextInput, CopyButton, Tooltip, ActionIcon, createStyles} from '@mantine/core';\n\nexport interface CopyToClipboardProps {\n /**\n * The value to be copied to the clipboard.\n */\n value: string;\n /**\n * Whether to display the string to be copied alongside the button.\n *\n * @default false\n */\n withLabel?: boolean;\n}\n\nconst useStyles = createStyles((theme) => ({\n input: {\n color: theme.colors.gray[7],\n },\n}));\n\nconst CopyToClipboardButton: React.FunctionComponent<{value: string}> = ({value}) => (\n <CopyButton value={value} timeout={2000}>\n {({copied, copy}) => (\n <Tooltip label={copied ? 'Copied' : 'Copy'} withArrow position=\"top\">\n <ActionIcon color={copied ? 'teal' : 'gray'} onClick={copy}>\n {copied ? <CheckSize24Px /> : <CopySize24Px />}\n </ActionIcon>\n </Tooltip>\n )}\n </CopyButton>\n);\n\nexport const CopyToClipboard: React.FunctionComponent<CopyToClipboardProps> = ({value, withLabel}) => {\n const {classes} = useStyles();\n\n return withLabel ? (\n <TextInput\n classNames={{\n input: classes.input,\n }}\n value={value}\n readOnly\n rightSection={<CopyToClipboardButton value={value} />}\n />\n ) : (\n <CopyToClipboardButton value={value} />\n );\n};\n"],"names":["React","CheckSize24Px","CopySize24Px","TextInput","CopyButton","Tooltip","ActionIcon","createStyles","useStyles","theme","input","color","colors","gray","CopyToClipboardButton","value","timeout","copied","copy","label","withArrow","position","onClick","CopyToClipboard","withLabel","classes","classNames","readOnly","rightSection"],"mappings":";AAAA,OAAOA,WAAW,QAAQ;AAE1B,SAAQC,aAAa,EAAEC,YAAY,QAAO,8BAA8B;AACxE,SAAQC,SAAS,EAAEC,UAAU,EAAEC,OAAO,EAAEC,UAAU,EAAEC,YAAY,QAAO,gBAAgB;AAevF,IAAMC,YAAYD,aAAa,SAACE;WAAW;QACvCC,OAAO;YACHC,OAAOF,MAAMG,MAAM,CAACC,IAAI,CAAC,EAAE;QAC/B;IACJ;;AAEA,IAAMC,wBAAkE;QAAEC,cAAAA;yBACtE,KAACX;QAAWW,OAAOA;QAAOC,SAAS;kBAC9B;gBAAEC,eAAAA,QAAQC,aAAAA;iCACP,KAACb;gBAAQc,OAAOF,SAAS,WAAW,MAAM;gBAAEG,SAAS;gBAACC,UAAS;0BAC3D,cAAA,KAACf;oBAAWK,OAAOM,SAAS,SAAS,MAAM;oBAAEK,SAASJ;8BACjDD,uBAAS,KAAChB,mCAAmB,KAACC,iBAAe;;;;;;AAOlE,OAAO,IAAMqB,kBAAiE,gBAAwB;QAAtBR,cAAAA,OAAOS,kBAAAA;IACnF,IAAM,AAACC,UAAWjB,YAAXiB;IAEP,OAAOD,0BACH,KAACrB;QACGuB,YAAY;YACRhB,OAAOe,QAAQf,KAAK;QACxB;QACAK,OAAOA;QACPY,QAAQ;QACRC,4BAAc,KAACd;YAAsBC,OAAOA;;uBAGhD,KAACD;QAAsBC,OAAOA;MACjC;AACL,EAAE"}
@@ -0,0 +1,3 @@
1
+ export * from "./CopyToClipboard";
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/copyToClipboard/index.ts"],"sourcesContent":["export * from './CopyToClipboard';\n"],"names":[],"mappings":"AAAA,cAAc,oBAAoB"}
@@ -10,5 +10,6 @@ export * from "./prompt";
10
10
  export * from "./modal-wizard";
11
11
  export * from "./button";
12
12
  export * from "./menu";
13
+ export * from "./copyToClipboard";
13
14
 
14
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/index.ts"],"sourcesContent":["export * from './blank-slate';\nexport * from './code-editor';\nexport * from './collection';\nexport * from './date-range-picker';\nexport * from './sticky-footer';\nexport * from './header';\nexport * from './inline-confirm';\nexport * from './table';\nexport * from './prompt';\nexport * from './modal-wizard';\nexport * from './button';\nexport * from './menu';\n"],"names":[],"mappings":"AAAA,cAAc,gBAAgB;AAC9B,cAAc,gBAAgB;AAC9B,cAAc,eAAe;AAC7B,cAAc,sBAAsB;AACpC,cAAc,kBAAkB;AAChC,cAAc,WAAW;AACzB,cAAc,mBAAmB;AACjC,cAAc,UAAU;AACxB,cAAc,WAAW;AACzB,cAAc,iBAAiB;AAC/B,cAAc,WAAW;AACzB,cAAc,SAAS"}
1
+ {"version":3,"sources":["../../../src/components/index.ts"],"sourcesContent":["export * from './blank-slate';\nexport * from './code-editor';\nexport * from './collection';\nexport * from './date-range-picker';\nexport * from './sticky-footer';\nexport * from './header';\nexport * from './inline-confirm';\nexport * from './table';\nexport * from './prompt';\nexport * from './modal-wizard';\nexport * from './button';\nexport * from './menu';\nexport * from './copyToClipboard';\n"],"names":[],"mappings":"AAAA,cAAc,gBAAgB;AAC9B,cAAc,gBAAgB;AAC9B,cAAc,eAAe;AAC7B,cAAc,sBAAsB;AACpC,cAAc,kBAAkB;AAChC,cAAc,WAAW;AACzB,cAAc,mBAAmB;AACjC,cAAc,UAAU;AACxB,cAAc,WAAW;AACzB,cAAc,iBAAiB;AAC/B,cAAc,WAAW;AACzB,cAAc,SAAS;AACvB,cAAc,oBAAoB"}
@@ -156,7 +156,7 @@ export var ModalWizard = function(_param) {
156
156
  if (isFirstStep) {
157
157
  handleClose(true);
158
158
  } else {
159
- onPrevious === null || onPrevious === void 0 ? void 0 : onPrevious();
159
+ onPrevious === null || onPrevious === void 0 ? void 0 : onPrevious(currentStepIndex - 1);
160
160
  setCurrentStepIndex(currentStepIndex - 1);
161
161
  }
162
162
  },
@@ -169,7 +169,7 @@ export var ModalWizard = function(_param) {
169
169
  var _onFinish;
170
170
  (_onFinish = onFinish === null || onFinish === void 0 ? void 0 : onFinish()) !== null && _onFinish !== void 0 ? _onFinish : handleClose(false);
171
171
  } else {
172
- onNext === null || onNext === void 0 ? void 0 : onNext();
172
+ onNext === null || onNext === void 0 ? void 0 : onNext(currentStepIndex + 1);
173
173
  setCurrentStepIndex(currentStepIndex + 1);
174
174
  }
175
175
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/modal-wizard/ModalWizard.tsx"],"sourcesContent":["import {Box, CloseButton, createStyles, DefaultProps, Modal, ModalProps, Progress, Selectors} from '@mantine/core';\nimport {Children, ReactElement, useEffect, useMemo, useState} from 'react';\n\nimport {Button} from '../button';\nimport {Header} from '../header';\nimport {StickyFooter} from '../sticky-footer';\nimport {ModalWizardStep, ModalWizardStepProps, ResolveStep} from './ModalWizardStep';\n\nconst useStyles = createStyles(() => ({\n content: {\n display: 'flex',\n flexDirection: 'column',\n },\n body: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n },\n}));\n\ntype ModalWizardStylesNames = Selectors<typeof useStyles>;\n\nexport interface ModalWizardProps\n extends Omit<DefaultProps<ModalWizardStylesNames>, 'classNames' | 'styles'>,\n Omit<ModalProps, 'centered' | 'title'> {\n /**\n * The label of the cancel button\n *\n * @default \"Cancel\"\n */\n cancelButtonLabel?: string;\n\n /**\n * The label of the next button\n *\n * @default \"Next\"\n */\n nextButtonLabel?: string;\n\n /**\n * The label of the previous button\n *\n * @default \"Previous\"\n */\n previousButtonLabel?: string;\n\n /**\n * The label of the finish button\n *\n * @default \"Finish\"\n */\n finishButtonLabel?: string;\n\n /**\n * A callback function that is executed when the user clicks on the next button\n */\n onNext?: () => unknown;\n\n /**\n * A callback function that is executed when the user clicks on the previous button\n */\n onPrevious?: () => unknown;\n\n /**\n * A function that is executed when user completes all the steps.\n *\n * @param close A function that closes the modal when called.\n */\n onFinish?: () => unknown;\n\n /**\n * Determine if user interacted with any steps in the modal wizard\n */\n isDirty?: () => boolean;\n\n /**\n * A function to confirm close if the state is dirty before closing\n */\n handleDirtyState?: () => boolean;\n\n /**\n * Children to display in modal wizard\n * */\n children?: Array<ReturnType<typeof ModalWizardStep>>;\n}\n\ninterface ModalWizardType {\n (props: ModalWizardProps): ReactElement;\n\n Step: typeof ModalWizardStep;\n}\n\nexport const ModalWizard: ModalWizardType = ({\n cancelButtonLabel = 'Cancel',\n nextButtonLabel = 'Next',\n previousButtonLabel = 'Previous',\n finishButtonLabel = 'Finish',\n opened,\n onNext,\n onPrevious,\n onClose,\n onFinish,\n isDirty,\n handleDirtyState,\n classNames,\n styles,\n unstyled,\n children,\n ...modalProps\n}) => {\n const {\n classes: {content, body},\n cx,\n } = useStyles(null, {\n name: 'ModalWizard',\n classNames,\n styles,\n unstyled,\n });\n\n const [currentStepIndex, setCurrentStepIndex] = useState(0);\n const modalSteps = (Children.toArray(children) as ReactElement[]).filter((child) => child.type === ModalWizardStep);\n\n const numberOfSteps = modalSteps.length;\n const isFirstStep = currentStepIndex === 0;\n const isLastStep = currentStepIndex === numberOfSteps - 1;\n const currentStep = modalSteps.filter((step: ReactElement, index: number) => index === currentStepIndex)[0];\n\n const {isValid} = currentStep?.props?.validateStep?.(currentStepIndex, numberOfSteps) ?? {isValid: true};\n\n useEffect(() => {\n if (opened) {\n setCurrentStepIndex(0);\n }\n }, [opened]);\n\n const handleClose = (confirmDirty: boolean) => {\n if (confirmDirty) {\n const isModalDirty = isDirty?.() ?? false;\n if (isModalDirty) {\n const discardChanges = handleDirtyState?.() ?? true;\n if (!discardChanges) {\n return;\n }\n }\n }\n onClose?.();\n };\n\n const resolveStepDependentProp = <P extends keyof ModalWizardStepProps>(\n prop: P\n ): ResolveStep<ModalWizardStepProps[P]> =>\n typeof currentStep.props[prop] === 'function'\n ? currentStep.props[prop](currentStepIndex + 1, numberOfSteps)\n : currentStep.props[prop];\n\n const getProgress = useMemo(\n () => (currStepIndex: number) => {\n const totalNumberOfSteps = modalSteps.filter((step) => step.props.countsAsProgress).length;\n const numberOfCompletedSteps = modalSteps.filter(\n (step, index) => step.props.countsAsProgress && index <= currStepIndex\n ).length;\n return (numberOfCompletedSteps / totalNumberOfSteps) * 100;\n },\n []\n );\n\n return (\n <Modal\n opened={opened}\n classNames={{content: cx(content, classNames?.content), body: cx(body, classNames?.body)}}\n centered\n onClose={() => handleClose(true)}\n withCloseButton={false}\n padding={0}\n {...modalProps}\n >\n <Header\n p=\"lg\"\n pr=\"md\"\n variant=\"modal\"\n description={resolveStepDependentProp('description')}\n borderBottom={!currentStep.props.showProgressBar}\n >\n {resolveStepDependentProp('title')}\n {resolveStepDependentProp('docLink') ? (\n <Header.DocAnchor\n href={resolveStepDependentProp('docLink')}\n label={resolveStepDependentProp('docLinkTooltipLabel')}\n />\n ) : null}\n <Header.Actions>\n <CloseButton aria-label={'close-modal'} onClick={() => handleClose(true)} />\n </Header.Actions>\n </Header>\n {currentStep.props.showProgressBar && (\n <Progress color=\"navy.5\" size=\"sm\" radius={0} value={getProgress(currentStepIndex)} />\n )}\n <Box p=\"lg\">{currentStep}</Box>\n <Box\n sx={{\n marginTop: 'auto',\n }}\n >\n <StickyFooter borderTop>\n <Button\n name={isFirstStep ? cancelButtonLabel : previousButtonLabel}\n variant=\"outline\"\n onClick={() => {\n if (isFirstStep) {\n handleClose(true);\n } else {\n onPrevious?.();\n setCurrentStepIndex(currentStepIndex - 1);\n }\n }}\n >\n {isFirstStep ? cancelButtonLabel : previousButtonLabel}\n </Button>\n\n <Button\n disabled={!isValid}\n onClick={() => {\n if (isLastStep) {\n onFinish?.() ?? handleClose(false);\n } else {\n onNext?.();\n setCurrentStepIndex(currentStepIndex + 1);\n }\n }}\n >\n {isLastStep ? finishButtonLabel : nextButtonLabel}\n </Button>\n </StickyFooter>\n </Box>\n </Modal>\n );\n};\n\nModalWizard.Step = ModalWizardStep;\n"],"names":["Box","CloseButton","createStyles","Modal","Progress","Children","useEffect","useMemo","useState","Button","Header","StickyFooter","ModalWizardStep","useStyles","content","display","flexDirection","body","flex","ModalWizard","cancelButtonLabel","nextButtonLabel","previousButtonLabel","finishButtonLabel","opened","onNext","onPrevious","onClose","onFinish","isDirty","handleDirtyState","classNames","styles","unstyled","children","modalProps","currentStep","name","classes","cx","currentStepIndex","setCurrentStepIndex","modalSteps","toArray","filter","child","type","numberOfSteps","length","isFirstStep","isLastStep","step","index","isValid","props","validateStep","handleClose","confirmDirty","isModalDirty","discardChanges","resolveStepDependentProp","prop","getProgress","currStepIndex","totalNumberOfSteps","countsAsProgress","numberOfCompletedSteps","centered","withCloseButton","padding","p","pr","variant","description","borderBottom","showProgressBar","DocAnchor","href","label","Actions","aria-label","onClick","color","size","radius","value","sx","marginTop","borderTop","disabled","Step"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/modal-wizard/ModalWizard.tsx"],"sourcesContent":["import {Box, CloseButton, createStyles, DefaultProps, Modal, ModalProps, Progress, Selectors} from '@mantine/core';\nimport {Children, ReactElement, useEffect, useMemo, useState} from 'react';\n\nimport {Button} from '../button';\nimport {Header} from '../header';\nimport {StickyFooter} from '../sticky-footer';\nimport {ModalWizardStep, ModalWizardStepProps, ResolveStep} from './ModalWizardStep';\n\nconst useStyles = createStyles(() => ({\n content: {\n display: 'flex',\n flexDirection: 'column',\n },\n body: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n },\n}));\n\ntype ModalWizardStylesNames = Selectors<typeof useStyles>;\n\nexport interface ModalWizardProps\n extends Omit<DefaultProps<ModalWizardStylesNames>, 'classNames' | 'styles'>,\n Omit<ModalProps, 'centered' | 'title'> {\n /**\n * The label of the cancel button\n *\n * @default \"Cancel\"\n */\n cancelButtonLabel?: string;\n\n /**\n * The label of the next button\n *\n * @default \"Next\"\n */\n nextButtonLabel?: string;\n\n /**\n * The label of the previous button\n *\n * @default \"Previous\"\n */\n previousButtonLabel?: string;\n\n /**\n * The label of the finish button\n *\n * @default \"Finish\"\n */\n finishButtonLabel?: string;\n\n /**\n * A callback function that is executed when the user clicks on the next button\n */\n onNext?: (newStep: number) => unknown;\n\n /**\n * A callback function that is executed when the user clicks on the previous button\n */\n onPrevious?: (newStep: number) => unknown;\n\n /**\n * A function that is executed when user completes all the steps.\n *\n * @param close A function that closes the modal when called.\n */\n onFinish?: () => unknown;\n\n /**\n * Determine if user interacted with any steps in the modal wizard\n */\n isDirty?: () => boolean;\n\n /**\n * A function to confirm close if the state is dirty before closing\n */\n handleDirtyState?: () => boolean;\n\n /**\n * Children to display in modal wizard\n * */\n children?: Array<ReturnType<typeof ModalWizardStep>>;\n}\n\ninterface ModalWizardType {\n (props: ModalWizardProps): ReactElement;\n\n Step: typeof ModalWizardStep;\n}\n\nexport const ModalWizard: ModalWizardType = ({\n cancelButtonLabel = 'Cancel',\n nextButtonLabel = 'Next',\n previousButtonLabel = 'Previous',\n finishButtonLabel = 'Finish',\n opened,\n onNext,\n onPrevious,\n onClose,\n onFinish,\n isDirty,\n handleDirtyState,\n classNames,\n styles,\n unstyled,\n children,\n ...modalProps\n}) => {\n const {\n classes: {content, body},\n cx,\n } = useStyles(null, {\n name: 'ModalWizard',\n classNames,\n styles,\n unstyled,\n });\n\n const [currentStepIndex, setCurrentStepIndex] = useState(0);\n const modalSteps = (Children.toArray(children) as ReactElement[]).filter((child) => child.type === ModalWizardStep);\n\n const numberOfSteps = modalSteps.length;\n const isFirstStep = currentStepIndex === 0;\n const isLastStep = currentStepIndex === numberOfSteps - 1;\n const currentStep = modalSteps.filter((step: ReactElement, index: number) => index === currentStepIndex)[0];\n\n const {isValid} = currentStep?.props?.validateStep?.(currentStepIndex, numberOfSteps) ?? {isValid: true};\n\n useEffect(() => {\n if (opened) {\n setCurrentStepIndex(0);\n }\n }, [opened]);\n\n const handleClose = (confirmDirty: boolean) => {\n if (confirmDirty) {\n const isModalDirty = isDirty?.() ?? false;\n if (isModalDirty) {\n const discardChanges = handleDirtyState?.() ?? true;\n if (!discardChanges) {\n return;\n }\n }\n }\n onClose?.();\n };\n\n const resolveStepDependentProp = <P extends keyof ModalWizardStepProps>(\n prop: P\n ): ResolveStep<ModalWizardStepProps[P]> =>\n typeof currentStep.props[prop] === 'function'\n ? currentStep.props[prop](currentStepIndex + 1, numberOfSteps)\n : currentStep.props[prop];\n\n const getProgress = useMemo(\n () => (currStepIndex: number) => {\n const totalNumberOfSteps = modalSteps.filter((step) => step.props.countsAsProgress).length;\n const numberOfCompletedSteps = modalSteps.filter(\n (step, index) => step.props.countsAsProgress && index <= currStepIndex\n ).length;\n return (numberOfCompletedSteps / totalNumberOfSteps) * 100;\n },\n []\n );\n\n return (\n <Modal\n opened={opened}\n classNames={{content: cx(content, classNames?.content), body: cx(body, classNames?.body)}}\n centered\n onClose={() => handleClose(true)}\n withCloseButton={false}\n padding={0}\n {...modalProps}\n >\n <Header\n p=\"lg\"\n pr=\"md\"\n variant=\"modal\"\n description={resolveStepDependentProp('description')}\n borderBottom={!currentStep.props.showProgressBar}\n >\n {resolveStepDependentProp('title')}\n {resolveStepDependentProp('docLink') ? (\n <Header.DocAnchor\n href={resolveStepDependentProp('docLink')}\n label={resolveStepDependentProp('docLinkTooltipLabel')}\n />\n ) : null}\n <Header.Actions>\n <CloseButton aria-label={'close-modal'} onClick={() => handleClose(true)} />\n </Header.Actions>\n </Header>\n {currentStep.props.showProgressBar && (\n <Progress color=\"navy.5\" size=\"sm\" radius={0} value={getProgress(currentStepIndex)} />\n )}\n <Box p=\"lg\">{currentStep}</Box>\n <Box\n sx={{\n marginTop: 'auto',\n }}\n >\n <StickyFooter borderTop>\n <Button\n name={isFirstStep ? cancelButtonLabel : previousButtonLabel}\n variant=\"outline\"\n onClick={() => {\n if (isFirstStep) {\n handleClose(true);\n } else {\n onPrevious?.(currentStepIndex - 1);\n setCurrentStepIndex(currentStepIndex - 1);\n }\n }}\n >\n {isFirstStep ? cancelButtonLabel : previousButtonLabel}\n </Button>\n\n <Button\n disabled={!isValid}\n onClick={() => {\n if (isLastStep) {\n onFinish?.() ?? handleClose(false);\n } else {\n onNext?.(currentStepIndex + 1);\n setCurrentStepIndex(currentStepIndex + 1);\n }\n }}\n >\n {isLastStep ? finishButtonLabel : nextButtonLabel}\n </Button>\n </StickyFooter>\n </Box>\n </Modal>\n );\n};\n\nModalWizard.Step = ModalWizardStep;\n"],"names":["Box","CloseButton","createStyles","Modal","Progress","Children","useEffect","useMemo","useState","Button","Header","StickyFooter","ModalWizardStep","useStyles","content","display","flexDirection","body","flex","ModalWizard","cancelButtonLabel","nextButtonLabel","previousButtonLabel","finishButtonLabel","opened","onNext","onPrevious","onClose","onFinish","isDirty","handleDirtyState","classNames","styles","unstyled","children","modalProps","currentStep","name","classes","cx","currentStepIndex","setCurrentStepIndex","modalSteps","toArray","filter","child","type","numberOfSteps","length","isFirstStep","isLastStep","step","index","isValid","props","validateStep","handleClose","confirmDirty","isModalDirty","discardChanges","resolveStepDependentProp","prop","getProgress","currStepIndex","totalNumberOfSteps","countsAsProgress","numberOfCompletedSteps","centered","withCloseButton","padding","p","pr","variant","description","borderBottom","showProgressBar","DocAnchor","href","label","Actions","aria-label","onClick","color","size","radius","value","sx","marginTop","borderTop","disabled","Step"],"mappings":"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"}
@@ -22,6 +22,7 @@ import { TableHeader } from "./TableHeader";
22
22
  import { TablePagination } from "./TablePagination";
23
23
  import { TablePerPage } from "./TablePerPage";
24
24
  import { TablePredicate } from "./TablePredicate";
25
+ import { TableConsumer } from "./TableConsumer";
25
26
  import { TableSelectableColumn } from "./TableSelectableColumn";
26
27
  import { Th } from "./Th";
27
28
  import { useRowSelection } from "./useRowSelection";
@@ -47,6 +48,9 @@ export var Table = function(param) {
47
48
  var footer = convertedChildren.find(function(child) {
48
49
  return child.type === TableFooter;
49
50
  });
51
+ var consumer = convertedChildren.find(function(child) {
52
+ return child.type === TableConsumer;
53
+ });
50
54
  var predicates = initialState.predicates, dateRange = initialState.dateRange, initialStateWithoutForm = _object_without_properties(initialState, [
51
55
  "predicates",
52
56
  "dateRange"
@@ -190,7 +194,7 @@ export var Table = function(param) {
190
194
  });
191
195
  return /*#__PURE__*/ _jsx(Box, {
192
196
  ref: outsideClickRef,
193
- children: /*#__PURE__*/ _jsx(TableContext.Provider, {
197
+ children: /*#__PURE__*/ _jsxs(TableContext.Provider, {
194
198
  value: {
195
199
  onChange: triggerChange,
196
200
  state: state,
@@ -205,43 +209,46 @@ export var Table = function(param) {
205
209
  multiRowSelectionEnabled: multiRowSelectionEnabled,
206
210
  getPageCount: table.getPageCount
207
211
  },
208
- children: !rows.length && !isFiltered && !loading ? noDataChildren : /*#__PURE__*/ _jsxs(_Fragment, {
209
- children: [
210
- header,
211
- /*#__PURE__*/ _jsxs(MantineTable, {
212
- className: classes.table,
213
- horizontalSpacing: "sm",
214
- verticalSpacing: "xs",
215
- pb: "sm",
216
- children: [
217
- /*#__PURE__*/ _jsx("thead", {
218
- className: classes.header,
219
- children: table.getHeaderGroups().map(function(headerGroup) {
220
- return /*#__PURE__*/ _jsx("tr", {
221
- children: headerGroup.headers.map(function(columnHeader) {
222
- return /*#__PURE__*/ _jsx(Th, {
223
- header: columnHeader
224
- }, columnHeader.id);
225
- })
226
- }, headerGroup.id);
227
- })
228
- }),
229
- /*#__PURE__*/ _jsx("tbody", {
230
- children: rows.length ? rows : /*#__PURE__*/ _jsx("tr", {
231
- children: /*#__PURE__*/ _jsx("td", {
232
- colSpan: table.getAllColumns().length,
233
- children: /*#__PURE__*/ _jsx(LoadingSkeleton, {
234
- visible: loading,
235
- children: noDataChildren
212
+ children: [
213
+ consumer,
214
+ !rows.length && !isFiltered && !loading ? noDataChildren : /*#__PURE__*/ _jsxs(_Fragment, {
215
+ children: [
216
+ header,
217
+ /*#__PURE__*/ _jsxs(MantineTable, {
218
+ className: classes.table,
219
+ horizontalSpacing: "sm",
220
+ verticalSpacing: "xs",
221
+ pb: "sm",
222
+ children: [
223
+ /*#__PURE__*/ _jsx("thead", {
224
+ className: classes.header,
225
+ children: table.getHeaderGroups().map(function(headerGroup) {
226
+ return /*#__PURE__*/ _jsx("tr", {
227
+ children: headerGroup.headers.map(function(columnHeader) {
228
+ return /*#__PURE__*/ _jsx(Th, {
229
+ header: columnHeader
230
+ }, columnHeader.id);
231
+ })
232
+ }, headerGroup.id);
233
+ })
234
+ }),
235
+ /*#__PURE__*/ _jsx("tbody", {
236
+ children: rows.length ? rows : /*#__PURE__*/ _jsx("tr", {
237
+ children: /*#__PURE__*/ _jsx("td", {
238
+ colSpan: table.getAllColumns().length,
239
+ children: /*#__PURE__*/ _jsx(LoadingSkeleton, {
240
+ visible: loading,
241
+ children: noDataChildren
242
+ })
236
243
  })
237
244
  })
238
245
  })
239
- })
240
- ]
241
- }),
242
- footer
243
- ]
244
- })
246
+ ]
247
+ }),
248
+ footer
249
+ ]
250
+ })
251
+ ]
245
252
  })
246
253
  });
247
254
  };
@@ -256,5 +263,6 @@ Table.Predicate = TablePredicate;
256
263
  Table.CollapsibleColumn = TableCollapsibleColumn;
257
264
  Table.AccordionColumn = TableAccordionColumn;
258
265
  Table.DateRangePicker = TableDateRangePicker;
266
+ Table.Consumer = TableConsumer;
259
267
 
260
268
  //# sourceMappingURL=Table.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {Box, Center, Collapse, Loader, Skeleton, SkeletonProps, Table as MantineTable} from '@mantine/core';\nimport {useForm} from '@mantine/form';\nimport {useDidUpdate} from '@mantine/hooks';\nimport {\n ColumnDef,\n defaultColumnSizing,\n flexRender,\n getCoreRowModel,\n Row,\n TableState as TanstackTableState,\n useReactTable,\n} from '@tanstack/react-table';\nimport debounce from 'lodash.debounce';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport {Children, Dispatch, FC, Fragment, ReactElement, useCallback, useEffect, useState} from 'react';\n\nimport useStyles from './Table.styles';\nimport {TableFormType, TableProps, TableState, TableType} from './Table.types';\nimport {TableActions} from './TableActions';\nimport {TableAccordionColumn, TableCollapsibleColumn} from './TableCollapsibleColumn';\nimport {TableContext} 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 {TableSelectableColumn} from './TableSelectableColumn';\nimport {Th} from './Th';\nimport {useRowSelection} from './useRowSelection';\n\nconst LoadingSkeleton: FC<SkeletonProps> = (props) => (\n <Skeleton style={{display: 'inline-block'}} {...props} sx={!props.visible ? {borderRadius: 0} : undefined}>\n {props.children}\n </Skeleton>\n);\n\nexport const Table: TableType = <T,>({\n data,\n getRowId,\n noDataChildren,\n getExpandChildren,\n initialState = {},\n columns,\n onMount,\n onChange,\n children,\n loading = false,\n doubleClickAction,\n multiRowSelectionEnabled,\n onRowSelectionChange,\n options = {},\n}: TableProps<T>) => {\n const convertedChildren = Children.toArray(children) as ReactElement[];\n const header = convertedChildren.find((child) => child.type === TableHeader);\n const footer = convertedChildren.find((child) => child.type === TableFooter);\n\n const {predicates, dateRange, ...initialStateWithoutForm} = initialState;\n const form = useForm<TableFormType>({\n initialValues: {predicates: initialState?.predicates ?? {}, dateRange: initialState?.dateRange ?? [null, null]},\n });\n const {cx, classes} = useStyles({hasHeader: !!header, multiRowSelectionEnabled});\n\n const table = useReactTable({\n initialState: defaultsDeep(initialStateWithoutForm, {pagination: {pageSize: TablePerPage.DEFAULT_SIZE}}),\n data,\n columns: multiRowSelectionEnabled ? [TableSelectableColumn as ColumnDef<T>].concat(columns) : columns,\n getCoreRowModel: getCoreRowModel(),\n manualPagination: options?.getPaginationRowModel === undefined,\n enableMultiRowSelection: !!multiRowSelectionEnabled,\n getRowId,\n getRowCanExpand: (row: Row<T>) => !!getExpandChildren?.(row.original) ?? false,\n enableRowSelection: !loading,\n ...options,\n });\n const [state, setState] = useState<TableState<T>>(table.initialState as TableState<T>);\n table.setOptions((prev) => ({\n ...prev,\n state: state as TanstackTableState,\n onStateChange: setState as Dispatch<React.SetStateAction<TanstackTableState>>,\n }));\n const {clearSelection, getSelectedRow, getSelectedRows, outsideClickRef} = useRowSelection(table, {\n multiRowSelectionEnabled,\n onRowSelectionChange,\n });\n const isFiltered =\n !!state.globalFilter ||\n Object.keys(form.values?.predicates ?? {}).some((predicate) => !!form.values.predicates[predicate]) ||\n !!form.values.dateRange?.[0] ||\n !!form.values.dateRange?.[1];\n\n const triggerChange = debounce(() => onChange?.({...state, ...form.values}), 500);\n\n useEffect(() => {\n onMount?.({...state, ...form.values});\n return () => {\n triggerChange.cancel();\n };\n }, []);\n\n useDidUpdate(() => {\n triggerChange();\n if (!multiRowSelectionEnabled) {\n clearSelection();\n }\n }, [state.globalFilter, state.pagination, state.sorting, form.values]);\n\n const clearFilters = useCallback(() => {\n form.setFieldValue('predicates', initialState.predicates ?? {});\n setState((prevState) => ({...prevState, globalFilter: ''}));\n }, []);\n\n if (!data) {\n return (\n <Center sx={{flexGrow: 1}}>\n <Loader />\n </Center>\n );\n }\n\n const rows = table.getRowModel().rows.map((row) => {\n const rowChildren = getExpandChildren?.(row.original) ?? null;\n const isSelected = !!row.getIsSelected();\n\n return (\n <Fragment key={row.id}>\n <tr\n onClick={() => row.toggleSelected()}\n onDoubleClick={() => doubleClickAction?.(row.original)}\n className={cx(classes.row, {[classes.rowSelected]: isSelected})}\n aria-selected={isSelected}\n >\n {row.getVisibleCells().map((cell) => {\n const size = cell.column.getSize();\n const width = size !== defaultColumnSizing.size ? size : undefined;\n return (\n <td\n key={cell.id}\n style={{width}}\n className={cx({\n [classes.rowCollapsibleButtonCell]: cell.column.id === TableCollapsibleColumn.id,\n })}\n >\n <LoadingSkeleton visible={loading}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </LoadingSkeleton>\n </td>\n );\n })}\n </tr>\n {rowChildren ? (\n <tr>\n <td\n colSpan={table.getAllColumns().length}\n style={{\n padding: 0,\n borderTop: row.getIsExpanded() ? undefined : 'none',\n borderBottom: row.getIsExpanded() ? undefined : 'none',\n }}\n >\n <Collapse in={row.getIsExpanded()}>\n <Box px=\"sm\" py=\"xs\">\n {rowChildren}\n </Box>\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 isFiltered,\n setState,\n clearFilters,\n getSelectedRow,\n getSelectedRows,\n clearSelection,\n form,\n containerRef: outsideClickRef,\n multiRowSelectionEnabled,\n getPageCount: table.getPageCount,\n }}\n >\n {!rows.length && !isFiltered && !loading ? (\n noDataChildren\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={table.getAllColumns().length}>\n <LoadingSkeleton visible={loading}>{noDataChildren}</LoadingSkeleton>\n </td>\n </tr>\n )}\n </tbody>\n </MantineTable>\n {footer}\n </>\n )}\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.AccordionColumn = TableAccordionColumn;\nTable.DateRangePicker = TableDateRangePicker;\n"],"names":["Box","Center","Collapse","Loader","Skeleton","Table","MantineTable","useForm","useDidUpdate","defaultColumnSizing","flexRender","getCoreRowModel","useReactTable","debounce","defaultsDeep","Children","Fragment","useCallback","useEffect","useState","useStyles","TableActions","TableAccordionColumn","TableCollapsibleColumn","TableContext","TableDateRangePicker","TableFilter","TableFooter","TableHeader","TablePagination","TablePerPage","TablePredicate","TableSelectableColumn","Th","useRowSelection","LoadingSkeleton","props","style","display","sx","visible","borderRadius","undefined","children","data","getRowId","noDataChildren","getExpandChildren","initialState","columns","onMount","onChange","loading","doubleClickAction","multiRowSelectionEnabled","onRowSelectionChange","options","form","convertedChildren","toArray","header","find","child","type","footer","predicates","dateRange","initialStateWithoutForm","initialValues","hasHeader","cx","classes","table","pagination","pageSize","DEFAULT_SIZE","concat","manualPagination","getPaginationRowModel","enableMultiRowSelection","getRowCanExpand","row","original","enableRowSelection","state","setState","setOptions","prev","onStateChange","clearSelection","getSelectedRow","getSelectedRows","outsideClickRef","isFiltered","globalFilter","Object","keys","values","some","predicate","triggerChange","cancel","sorting","clearFilters","setFieldValue","prevState","flexGrow","rows","getRowModel","map","rowChildren","isSelected","getIsSelected","tr","onClick","toggleSelected","onDoubleClick","className","rowSelected","aria-selected","getVisibleCells","cell","size","column","getSize","width","td","rowCollapsibleButtonCell","id","columnDef","getContext","colSpan","getAllColumns","length","padding","borderTop","getIsExpanded","borderBottom","in","px","py","ref","Provider","value","containerRef","getPageCount","horizontalSpacing","verticalSpacing","pb","thead","getHeaderGroups","headerGroup","headers","columnHeader","tbody","Actions","Filter","Footer","Header","Pagination","Predicate","PerPage","CollapsibleColumn","AccordionColumn","DateRangePicker"],"mappings":";;;;;;AAAA,SAAQA,GAAG,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,QAAQ,EAAiBC,SAASC,YAAY,QAAO,gBAAgB;AAC5G,SAAQC,OAAO,QAAO,gBAAgB;AACtC,SAAQC,YAAY,QAAO,iBAAiB;AAC5C,SAEIC,mBAAmB,EACnBC,UAAU,EACVC,eAAe,EAGfC,aAAa,QACV,wBAAwB;AAC/B,OAAOC,cAAc,kBAAkB;AACvC,OAAOC,kBAAkB,sBAAsB;AAC/C,SAAQC,QAAQ,EAAgBC,QAAQ,EAAgBC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAO,QAAQ;AAEvG,OAAOC,eAAe,iBAAiB;AAEvC,SAAQC,YAAY,QAAO,iBAAiB;AAC5C,SAAQC,oBAAoB,EAAEC,sBAAsB,QAAO,2BAA2B;AACtF,SAAQC,YAAY,QAAO,iBAAiB;AAC5C,SAAQC,oBAAoB,QAAO,yBAAyB;AAC5D,SAAQC,WAAW,QAAO,gBAAgB;AAC1C,SAAQC,WAAW,QAAO,gBAAgB;AAC1C,SAAQC,WAAW,QAAO,gBAAgB;AAC1C,SAAQC,eAAe,QAAO,oBAAoB;AAClD,SAAQC,YAAY,QAAO,iBAAiB;AAC5C,SAAQC,cAAc,QAAO,mBAAmB;AAChD,SAAQC,qBAAqB,QAAO,0BAA0B;AAC9D,SAAQC,EAAE,QAAO,OAAO;AACxB,SAAQC,eAAe,QAAO,oBAAoB;AAElD,IAAMC,kBAAqC,SAACC;yBACxC,KAAChC;QAASiC,OAAO;YAACC,SAAS;QAAc;OAAOF;QAAOG,IAAI,CAACH,MAAMI,OAAO,GAAG;YAACC,cAAc;QAAC,IAAIC,SAAS;kBACpGN,MAAMO,QAAQ;;;AAIvB,OAAO,IAAMtC,QAAmB,gBAeX;QAdjBuC,aAAAA,MACAC,iBAAAA,UACAC,uBAAAA,gBACAC,0BAAAA,+CACAC,cAAAA,gDAAe,CAAC,yBAChBC,gBAAAA,SACAC,gBAAAA,SACAC,iBAAAA,UACAR,iBAAAA,iCACAS,SAAAA,sCAAU,KAAK,mBACfC,0BAAAA,mBACAC,iCAAAA,0BACAC,6BAAAA,6CACAC,SAAAA,sCAAU,CAAC;QAoCKC,cACVA,wBACAA;IApCN,IAAMC,oBAAoB3C,SAAS4C,OAAO,CAAChB;IAC3C,IAAMiB,SAASF,kBAAkBG,IAAI,CAAC,SAACC;eAAUA,MAAMC,IAAI,KAAKnC;;IAChE,IAAMoC,SAASN,kBAAkBG,IAAI,CAAC,SAACC;eAAUA,MAAMC,IAAI,KAAKpC;;IAEhE,IAAOsC,aAAqDjB,aAArDiB,YAAYC,YAAyClB,aAAzCkB,WAAcC,qDAA2BnB;QAArDiB;QAAYC;;QAEalB,0BAA2CA;IAD3E,IAAMS,OAAOlD,QAAuB;QAChC6D,eAAe;YAACH,YAAYjB,CAAAA,2BAAAA,yBAAAA,0BAAAA,KAAAA,IAAAA,aAAciB,UAAU,cAAxBjB,sCAAAA,2BAA4B,CAAC,CAAC;YAAEkB,WAAWlB,CAAAA,0BAAAA,yBAAAA,0BAAAA,KAAAA,IAAAA,aAAckB,SAAS,cAAvBlB,qCAAAA,0BAA2B;gBAAC,IAAI;gBAAE,IAAI;aAAC;QAAA;IAClH;IACA,IAAsB5B,aAAAA,UAAU;QAACiD,WAAW,CAAC,CAACT;QAAQN,0BAAAA;IAAwB,IAAvEgB,KAAelD,WAAfkD,IAAIC,UAAWnD,WAAXmD;QAU2B;IARtC,IAAMC,QAAQ5D,cAAc;QACxBoC,cAAclC,aAAaqD,yBAAyB;YAACM,YAAY;gBAACC,UAAU5C,aAAa6C,YAAY;YAAA;QAAC;QACtG/B,MAAAA;QACAK,SAASK,2BAA2B;YAACtB;SAAsC,CAAC4C,MAAM,CAAC3B,WAAWA,OAAO;QACrGtC,iBAAiBA;QACjBkE,kBAAkBrB,CAAAA,oBAAAA,qBAAAA,KAAAA,IAAAA,QAASsB,qBAAqB,AAAD,MAAMpC;QACrDqC,yBAAyB,CAAC,CAACzB;QAC3BT,UAAAA;QACAmC,iBAAiB,SAACC;YAAgB,OAAA,CAAA,OAAA,CAAC,EAAClC,8BAAAA,+BAAAA,KAAAA,IAAAA,kBAAoBkC,IAAIC,QAAQ,gBAAlC,kBAAA,OAAuC,KAAK;;QAC9EC,oBAAoB,CAAC/B;OAClBI;IAEP,IAA0BrC,6BAAAA,SAAwBqD,MAAMxB,YAAY,OAA7DoC,QAAmBjE,cAAZkE,WAAYlE;IAC1BqD,MAAMc,UAAU,CAAC,SAACC;eAAU,wCACrBA;YACHH,OAAOA;YACPI,eAAeH;;;IAEnB,IAA2EnD,mBAAAA,gBAAgBsC,OAAO;QAC9FlB,0BAAAA;QACAC,sBAAAA;IACJ,IAHOkC,iBAAoEvD,iBAApEuD,gBAAgBC,iBAAoDxD,iBAApDwD,gBAAgBC,kBAAoCzD,iBAApCyD,iBAAiBC,kBAAmB1D,iBAAnB0D;QAMxCnC;IAFhB,IAAMoC,aACF,CAAC,CAACT,MAAMU,YAAY,IACpBC,OAAOC,IAAI,CAACvC,CAAAA,0BAAAA,CAAAA,eAAAA,KAAKwC,MAAM,cAAXxC,0BAAAA,KAAAA,IAAAA,aAAaQ,UAAU,cAAvBR,qCAAAA,0BAA2B,CAAC,CAAC,EAAEyC,IAAI,CAAC,SAACC;eAAc,CAAC,CAAC1C,KAAKwC,MAAM,CAAChC,UAAU,CAACkC,UAAU;UAClG,CAAC,CAAC1C,CAAAA,CAAAA,yBAAAA,KAAKwC,MAAM,CAAC/B,SAAS,cAArBT,oCAAAA,KAAAA,IAAAA,sBAAuB,CAAC,EAAE,AAAD,KAC3B,CAAC,CAACA,CAAAA,CAAAA,0BAAAA,KAAKwC,MAAM,CAAC/B,SAAS,cAArBT,qCAAAA,KAAAA,IAAAA,uBAAuB,CAAC,EAAE,AAAD;IAE/B,IAAM2C,gBAAgBvF,SAAS;QAAMsC,OAAAA,qBAAAA,sBAAAA,KAAAA,IAAAA,SAAW,mBAAIiC,OAAU3B,KAAKwC,MAAM;OAAI;IAE7E/E,UAAU,WAAM;QACZgC,oBAAAA,qBAAAA,KAAAA,IAAAA,QAAU,mBAAIkC,OAAU3B,KAAKwC,MAAM;QACnC,OAAO,WAAM;YACTG,cAAcC,MAAM;QACxB;IACJ,GAAG,EAAE;IAEL7F,aAAa,WAAM;QACf4F;QACA,IAAI,CAAC9C,0BAA0B;YAC3BmC;QACJ,CAAC;IACL,GAAG;QAACL,MAAMU,YAAY;QAAEV,MAAMX,UAAU;QAAEW,MAAMkB,OAAO;QAAE7C,KAAKwC,MAAM;KAAC;IAErE,IAAMM,eAAetF,YAAY,WAAM;YACF+B;QAAjCS,KAAK+C,aAAa,CAAC,cAAcxD,CAAAA,2BAAAA,aAAaiB,UAAU,cAAvBjB,sCAAAA,2BAA2B,CAAC,CAAC;QAC9DqC,SAAS,SAACoB;mBAAe,wCAAIA;gBAAWX,cAAc;;;IAC1D,GAAG,EAAE;IAEL,IAAI,CAAClD,MAAM;QACP,qBACI,KAAC3C;YAAOsC,IAAI;gBAACmE,UAAU;YAAC;sBACpB,cAAA,KAACvG;;IAGb,CAAC;IAED,IAAMwG,OAAOnC,MAAMoC,WAAW,GAAGD,IAAI,CAACE,GAAG,CAAC,SAAC5B,KAAQ;YAC3BlC;QAApB,IAAM+D,cAAc/D,CAAAA,qBAAAA,8BAAAA,+BAAAA,KAAAA,IAAAA,kBAAoBkC,IAAIC,QAAQ,eAAhCnC,gCAAAA,qBAAqC,IAAI;QAC7D,IAAMgE,aAAa,CAAC,CAAC9B,IAAI+B,aAAa;QAEtC,qBACI,MAAChG;;8BACG,KAACiG;oBACGC,SAAS;+BAAMjC,IAAIkC,cAAc;;oBACjCC,eAAe;wBAAM/D,OAAAA,8BAAAA,+BAAAA,KAAAA,IAAAA,kBAAoB4B,IAAIC,QAAQ;;oBACrDmC,WAAW/C,GAAGC,QAAQU,GAAG,EAAG,qBAACV,QAAQ+C,WAAW,EAAGP;oBACnDQ,iBAAeR;8BAEd9B,IAAIuC,eAAe,GAAGX,GAAG,CAAC,SAACY,MAAS;wBACjC,IAAMC,OAAOD,KAAKE,MAAM,CAACC,OAAO;wBAChC,IAAMC,QAAQH,SAASjH,oBAAoBiH,IAAI,GAAGA,OAAOhF,SAAS;wBAClE,qBACI,KAACoF;4BAEGzF,OAAO;gCAACwF,OAAAA;4BAAK;4BACbR,WAAW/C,GACP,qBAACC,QAAQwD,wBAAwB,EAAGN,KAAKE,MAAM,CAACK,EAAE,KAAKzG,uBAAuByG,EAAE;sCAGpF,cAAA,KAAC7F;gCAAgBK,SAASY;0CACrB1C,WAAW+G,KAAKE,MAAM,CAACM,SAAS,CAACR,IAAI,EAAEA,KAAKS,UAAU;;2BAPtDT,KAAKO,EAAE;oBAWxB;;gBAEHlB,4BACG,KAACG;8BACG,cAAA,KAACa;wBACGK,SAAS3D,MAAM4D,aAAa,GAAGC,MAAM;wBACrChG,OAAO;4BACHiG,SAAS;4BACTC,WAAWtD,IAAIuD,aAAa,KAAK9F,YAAY,MAAM;4BACnD+F,cAAcxD,IAAIuD,aAAa,KAAK9F,YAAY,MAAM;wBAC1D;kCAEA,cAAA,KAACxC;4BAASwI,IAAIzD,IAAIuD,aAAa;sCAC3B,cAAA,KAACxI;gCAAI2I,IAAG;gCAAKC,IAAG;0CACX9B;;;;qBAKjB,IAAI;;WA1CG7B,IAAI+C,EAAE;IA6C7B;IAEA,qBACI,KAAChI;QAAI6I,KAAKjD;kBACN,cAAA,KAACpE,aAAasH,QAAQ;YAClBC,OAAO;gBACH5F,UAAUiD;gBACVhB,OAAAA;gBACAS,YAAAA;gBACAR,UAAAA;gBACAkB,cAAAA;gBACAb,gBAAAA;gBACAC,iBAAAA;gBACAF,gBAAAA;gBACAhC,MAAAA;gBACAuF,cAAcpD;gBACdtC,0BAAAA;gBACA2F,cAAczE,MAAMyE,YAAY;YACpC;sBAEC,CAACtC,KAAK0B,MAAM,IAAI,CAACxC,cAAc,CAACzC,UAC7BN,+BAEA;;oBACKc;kCACD,MAACtD;wBAAa+G,WAAW9C,QAAQC,KAAK;wBAAE0E,mBAAkB;wBAAKC,iBAAgB;wBAAKC,IAAG;;0CACnF,KAACC;gCAAMhC,WAAW9C,QAAQX,MAAM;0CAC3BY,MAAM8E,eAAe,GAAGzC,GAAG,CAAC,SAAC0C;yDAC1B,KAACtC;kDACIsC,YAAYC,OAAO,CAAC3C,GAAG,CAAC,SAAC4C;iEACtB,KAACxH;gDAAyB2B,QAAQ6F;+CAAzBA,aAAazB,EAAE;;uCAFvBuB,YAAYvB,EAAE;;;0CAO/B,KAAC0B;0CACI/C,KAAK0B,MAAM,GACR1B,qBAEA,KAACM;8CACG,cAAA,KAACa;wCAAGK,SAAS3D,MAAM4D,aAAa,GAAGC,MAAM;kDACrC,cAAA,KAAClG;4CAAgBK,SAASY;sDAAUN;;;kCAG/C;;;;oBAGRkB;;cAER;;;AAIjB,EAAE;AAEF3D,MAAMsJ,OAAO,GAAGtI;AAChBhB,MAAMuJ,MAAM,GAAGlI;AACfrB,MAAMwJ,MAAM,GAAGlI;AACftB,MAAMyJ,MAAM,GAAGlI;AACfvB,MAAM0J,UAAU,GAAGlI;AACnBxB,MAAM2J,SAAS,GAAGjI;AAClB1B,MAAM4J,OAAO,GAAGnI;AAChBzB,MAAM2J,SAAS,GAAGjI;AAClB1B,MAAM6J,iBAAiB,GAAG3I;AAC1BlB,MAAM8J,eAAe,GAAG7I;AACxBjB,MAAM+J,eAAe,GAAG3I"}
1
+ {"version":3,"sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {Box, Center, Collapse, Loader, Skeleton, SkeletonProps, Table as MantineTable} from '@mantine/core';\nimport {useForm} from '@mantine/form';\nimport {useDidUpdate} from '@mantine/hooks';\nimport {\n ColumnDef,\n defaultColumnSizing,\n flexRender,\n getCoreRowModel,\n Row,\n TableState as TanstackTableState,\n useReactTable,\n} from '@tanstack/react-table';\nimport debounce from 'lodash.debounce';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport {Children, Dispatch, FC, Fragment, ReactElement, useCallback, useEffect, useState} from 'react';\n\nimport useStyles from './Table.styles';\nimport {TableFormType, TableProps, TableState, TableType} from './Table.types';\nimport {TableActions} from './TableActions';\nimport {TableAccordionColumn, TableCollapsibleColumn} from './TableCollapsibleColumn';\nimport {TableContext} 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 {TableConsumer} from './TableConsumer';\nimport {TableSelectableColumn} from './TableSelectableColumn';\nimport {Th} from './Th';\nimport {useRowSelection} from './useRowSelection';\n\nconst LoadingSkeleton: FC<SkeletonProps> = (props) => (\n <Skeleton style={{display: 'inline-block'}} {...props} sx={!props.visible ? {borderRadius: 0} : undefined}>\n {props.children}\n </Skeleton>\n);\n\nexport const Table: TableType = <T,>({\n data,\n getRowId,\n noDataChildren,\n getExpandChildren,\n initialState = {},\n columns,\n onMount,\n onChange,\n children,\n loading = false,\n doubleClickAction,\n multiRowSelectionEnabled,\n onRowSelectionChange,\n options = {},\n}: TableProps<T>) => {\n const convertedChildren = Children.toArray(children) as ReactElement[];\n const header = convertedChildren.find((child) => child.type === TableHeader);\n const footer = convertedChildren.find((child) => child.type === TableFooter);\n const consumer = convertedChildren.find((child) => child.type === TableConsumer);\n\n const {predicates, dateRange, ...initialStateWithoutForm} = initialState;\n const form = useForm<TableFormType>({\n initialValues: {predicates: initialState?.predicates ?? {}, dateRange: initialState?.dateRange ?? [null, null]},\n });\n const {cx, classes} = useStyles({hasHeader: !!header, multiRowSelectionEnabled});\n\n const table = useReactTable({\n initialState: defaultsDeep(initialStateWithoutForm, {pagination: {pageSize: TablePerPage.DEFAULT_SIZE}}),\n data,\n columns: multiRowSelectionEnabled ? [TableSelectableColumn as ColumnDef<T>].concat(columns) : columns,\n getCoreRowModel: getCoreRowModel(),\n manualPagination: options?.getPaginationRowModel === undefined,\n enableMultiRowSelection: !!multiRowSelectionEnabled,\n getRowId,\n getRowCanExpand: (row: Row<T>) => !!getExpandChildren?.(row.original) ?? false,\n enableRowSelection: !loading,\n ...options,\n });\n const [state, setState] = useState<TableState<T>>(table.initialState as TableState<T>);\n table.setOptions((prev) => ({\n ...prev,\n state: state as TanstackTableState,\n onStateChange: setState as Dispatch<React.SetStateAction<TanstackTableState>>,\n }));\n const {clearSelection, getSelectedRow, getSelectedRows, outsideClickRef} = useRowSelection(table, {\n multiRowSelectionEnabled,\n onRowSelectionChange,\n });\n const isFiltered =\n !!state.globalFilter ||\n Object.keys(form.values?.predicates ?? {}).some((predicate) => !!form.values.predicates[predicate]) ||\n !!form.values.dateRange?.[0] ||\n !!form.values.dateRange?.[1];\n\n const triggerChange = debounce(() => onChange?.({...state, ...form.values}), 500);\n\n useEffect(() => {\n onMount?.({...state, ...form.values});\n return () => {\n triggerChange.cancel();\n };\n }, []);\n\n useDidUpdate(() => {\n triggerChange();\n if (!multiRowSelectionEnabled) {\n clearSelection();\n }\n }, [state.globalFilter, state.pagination, state.sorting, form.values]);\n\n const clearFilters = useCallback(() => {\n form.setFieldValue('predicates', initialState.predicates ?? {});\n setState((prevState) => ({...prevState, globalFilter: ''}));\n }, []);\n\n if (!data) {\n return (\n <Center sx={{flexGrow: 1}}>\n <Loader />\n </Center>\n );\n }\n\n const rows = table.getRowModel().rows.map((row) => {\n const rowChildren = getExpandChildren?.(row.original) ?? null;\n const isSelected = !!row.getIsSelected();\n\n return (\n <Fragment key={row.id}>\n <tr\n onClick={() => row.toggleSelected()}\n onDoubleClick={() => doubleClickAction?.(row.original)}\n className={cx(classes.row, {[classes.rowSelected]: isSelected})}\n aria-selected={isSelected}\n >\n {row.getVisibleCells().map((cell) => {\n const size = cell.column.getSize();\n const width = size !== defaultColumnSizing.size ? size : undefined;\n return (\n <td\n key={cell.id}\n style={{width}}\n className={cx({\n [classes.rowCollapsibleButtonCell]: cell.column.id === TableCollapsibleColumn.id,\n })}\n >\n <LoadingSkeleton visible={loading}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </LoadingSkeleton>\n </td>\n );\n })}\n </tr>\n {rowChildren ? (\n <tr>\n <td\n colSpan={table.getAllColumns().length}\n style={{\n padding: 0,\n borderTop: row.getIsExpanded() ? undefined : 'none',\n borderBottom: row.getIsExpanded() ? undefined : 'none',\n }}\n >\n <Collapse in={row.getIsExpanded()}>\n <Box px=\"sm\" py=\"xs\">\n {rowChildren}\n </Box>\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 isFiltered,\n setState,\n clearFilters,\n getSelectedRow,\n getSelectedRows,\n clearSelection,\n form,\n containerRef: outsideClickRef,\n multiRowSelectionEnabled,\n getPageCount: table.getPageCount,\n }}\n >\n {consumer}\n {!rows.length && !isFiltered && !loading ? (\n noDataChildren\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={table.getAllColumns().length}>\n <LoadingSkeleton visible={loading}>{noDataChildren}</LoadingSkeleton>\n </td>\n </tr>\n )}\n </tbody>\n </MantineTable>\n {footer}\n </>\n )}\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.AccordionColumn = TableAccordionColumn;\nTable.DateRangePicker = TableDateRangePicker;\nTable.Consumer = TableConsumer;\n"],"names":["Box","Center","Collapse","Loader","Skeleton","Table","MantineTable","useForm","useDidUpdate","defaultColumnSizing","flexRender","getCoreRowModel","useReactTable","debounce","defaultsDeep","Children","Fragment","useCallback","useEffect","useState","useStyles","TableActions","TableAccordionColumn","TableCollapsibleColumn","TableContext","TableDateRangePicker","TableFilter","TableFooter","TableHeader","TablePagination","TablePerPage","TablePredicate","TableConsumer","TableSelectableColumn","Th","useRowSelection","LoadingSkeleton","props","style","display","sx","visible","borderRadius","undefined","children","data","getRowId","noDataChildren","getExpandChildren","initialState","columns","onMount","onChange","loading","doubleClickAction","multiRowSelectionEnabled","onRowSelectionChange","options","form","convertedChildren","toArray","header","find","child","type","footer","consumer","predicates","dateRange","initialStateWithoutForm","initialValues","hasHeader","cx","classes","table","pagination","pageSize","DEFAULT_SIZE","concat","manualPagination","getPaginationRowModel","enableMultiRowSelection","getRowCanExpand","row","original","enableRowSelection","state","setState","setOptions","prev","onStateChange","clearSelection","getSelectedRow","getSelectedRows","outsideClickRef","isFiltered","globalFilter","Object","keys","values","some","predicate","triggerChange","cancel","sorting","clearFilters","setFieldValue","prevState","flexGrow","rows","getRowModel","map","rowChildren","isSelected","getIsSelected","tr","onClick","toggleSelected","onDoubleClick","className","rowSelected","aria-selected","getVisibleCells","cell","size","column","getSize","width","td","rowCollapsibleButtonCell","id","columnDef","getContext","colSpan","getAllColumns","length","padding","borderTop","getIsExpanded","borderBottom","in","px","py","ref","Provider","value","containerRef","getPageCount","horizontalSpacing","verticalSpacing","pb","thead","getHeaderGroups","headerGroup","headers","columnHeader","tbody","Actions","Filter","Footer","Header","Pagination","Predicate","PerPage","CollapsibleColumn","AccordionColumn","DateRangePicker","Consumer"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/Table.types.ts"],"sourcesContent":["import {UseFormReturnType} from '@mantine/form';\nimport {\n ColumnDef,\n CoreOptions,\n InitialTableState as TanstackInitialTableState,\n TableOptions,\n TableState as TanstackTableState,\n} from '@tanstack/table-core';\nimport {Dispatch, ReactElement, ReactNode, RefObject} from 'react';\nimport {DateRangePickerValue} from '../date-range-picker/DateRangePickerInlineCalendar';\n\nimport {TableActions} from './TableActions';\nimport {TableAccordionColumn, TableCollapsibleColumn} from './TableCollapsibleColumn';\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';\n\nexport type RowSelectionWithData<TData> = Record<string, TData>;\nexport interface RowSelectionState<TData> {\n rowSelection: RowSelectionWithData<TData>;\n}\n\nexport interface TableState<TData> extends Omit<TanstackTableState, 'rowSelection'>, RowSelectionState<TData> {}\n\nexport interface InitialTableState<TData>\n extends Omit<TanstackInitialTableState, 'rowSelection'>,\n Partial<RowSelectionState<TData>>,\n Partial<TableFormType> {}\n\nexport type onTableChangeEvent<TData> = (params: TableState<TData> & TableFormType) => void;\n\nexport type TableFormType = {\n /**\n * Object containing the table predicates and their selected values\n *\n * @example {type: \"LONG\", origin: \"system\"}\n */\n predicates: Record<string, string>;\n /**\n * Selected date range in the table\n *\n * @example [new Date(2022, 0, 1), new Date(2022, 0, 31)]\n */\n dateRange: DateRangePickerValue;\n};\n\nexport type TableContextType<TData> = {\n /**\n * Function to call when the table needs an update\n */\n onChange: () => void;\n /**\n * Internal state of the table\n *\n * @see https://tanstack.com/table/v8/docs/api/core/table#state\n */\n state: TableState<TData>;\n /**\n * Function to update the table state\n */\n setState: Dispatch<(prevState: TableState<TData>) => TableState<TData>>;\n /**\n * Whether the table currently as any kind of filter applied.\n * Useful to determine if the noDataChildren is an empty state or just the result of a filter\n */\n isFiltered: boolean;\n /**\n * Function that clears the filter and predicates\n */\n clearFilters: () => void;\n /**\n * Function that returns the selected row if any.\n */\n getSelectedRow: () => TData | null;\n /**\n * Function that returns an array of the selected rows. Most useful when multi row selection is enabled.\n */\n getSelectedRows: () => TData[];\n /**\n * Function that clear the selected row\n */\n clearSelection: () => void;\n /**\n * Form used to handle predicates and dateRange\n */\n form: UseFormReturnType<TableFormType>;\n /**\n * Table container ref\n */\n containerRef: RefObject<HTMLDivElement>;\n /**\n * Whether multi row selection is activated\n */\n multiRowSelectionEnabled: boolean;\n /**\n * Function that returns the number of pages\n */\n getPageCount: () => number;\n};\n\nexport interface TableProps<T> {\n /**\n * Data to display in the table\n */\n data: T[];\n /**\n * Defines how each row is uniquely identified. It is highly recommended that you specify this prop to an ID that makes sense.\n */\n getRowId?: CoreOptions<T>['getRowId'];\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<T>;\n /**\n * Function called when the table should update\n *\n * @param state the state of the table\n */\n onChange?: onTableChangeEvent<T>;\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 * Initial state of the table\n */\n initialState?: InitialTableState<T>;\n /**\n * Action passed when user double clicks on a row\n */\n doubleClickAction?: (datum: T) => void;\n /**\n * Function called whenever the row selection changes\n *\n * @param selectedRows The selected rows\n */\n onRowSelectionChange?: (selectedRows: T[]) => void;\n /**\n * Whether the user can select multiple rows in order to perform actions in bulk\n *\n * @default false\n */\n multiRowSelectionEnabled?: boolean;\n /**\n * Additional options that can be passed to the table\n */\n options?: Omit<\n Partial<TableOptions<T>>,\n | 'initialState'\n | 'data'\n | 'columns'\n | 'manualPagination'\n | 'enableMultiRowSelection'\n | 'getRowId'\n | 'getRowCanExpand'\n | 'enableRowSelection'\n | 'onRowSelectionChange'\n >;\n}\n\nexport interface 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 DateRangePicker: typeof TableDateRangePicker;\n CollapsibleColumn: typeof TableCollapsibleColumn;\n AccordionColumn: typeof TableAccordionColumn;\n}\n"],"names":[],"mappings":"AAAA,WAgNC"}
1
+ {"version":3,"sources":["../../../../src/components/table/Table.types.ts"],"sourcesContent":["import {UseFormReturnType} from '@mantine/form';\nimport {\n ColumnDef,\n CoreOptions,\n InitialTableState as TanstackInitialTableState,\n TableOptions,\n TableState as TanstackTableState,\n} from '@tanstack/table-core';\nimport {Dispatch, ReactElement, ReactNode, RefObject} from 'react';\n\nimport {DateRangePickerValue} from '../date-range-picker/DateRangePickerInlineCalendar';\nimport {TableActions} from './TableActions';\nimport {TableAccordionColumn, TableCollapsibleColumn} from './TableCollapsibleColumn';\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 {TableConsumer} from './TableConsumer';\n\nexport type RowSelectionWithData<TData> = Record<string, TData>;\nexport interface RowSelectionState<TData> {\n rowSelection: RowSelectionWithData<TData>;\n}\n\nexport interface TableState<TData> extends Omit<TanstackTableState, 'rowSelection'>, RowSelectionState<TData> {}\n\nexport interface InitialTableState<TData>\n extends Omit<TanstackInitialTableState, 'rowSelection'>,\n Partial<RowSelectionState<TData>>,\n Partial<TableFormType> {}\n\nexport type onTableChangeEvent<TData> = (params: TableState<TData> & TableFormType) => void;\n\nexport type TableFormType = {\n /**\n * Object containing the table predicates and their selected values\n *\n * @example {type: \"LONG\", origin: \"system\"}\n */\n predicates: Record<string, string>;\n /**\n * Selected date range in the table\n *\n * @example [new Date(2022, 0, 1), new Date(2022, 0, 31)]\n */\n dateRange: DateRangePickerValue;\n};\n\nexport type TableContextType<TData> = {\n /**\n * Function to call when the table needs an update\n */\n onChange: () => void;\n /**\n * Internal state of the table\n *\n * @see https://tanstack.com/table/v8/docs/api/core/table#state\n */\n state: TableState<TData>;\n /**\n * Function to update the table state\n */\n setState: Dispatch<(prevState: TableState<TData>) => TableState<TData>>;\n /**\n * Whether the table currently as any kind of filter applied.\n * Useful to determine if the noDataChildren is an empty state or just the result of a filter\n */\n isFiltered: boolean;\n /**\n * Function that clears the filter and predicates\n */\n clearFilters: () => void;\n /**\n * Function that returns the selected row if any.\n */\n getSelectedRow: () => TData | null;\n /**\n * Function that returns an array of the selected rows. Most useful when multi row selection is enabled.\n */\n getSelectedRows: () => TData[];\n /**\n * Function that clear the selected row\n */\n clearSelection: () => void;\n /**\n * Form used to handle predicates and dateRange\n */\n form: UseFormReturnType<TableFormType>;\n /**\n * Table container ref\n */\n containerRef: RefObject<HTMLDivElement>;\n /**\n * Whether multi row selection is activated\n */\n multiRowSelectionEnabled: boolean;\n /**\n * Function that returns the number of pages\n */\n getPageCount: () => number;\n};\n\nexport interface TableProps<T> {\n /**\n * Data to display in the table\n */\n data: T[];\n /**\n * Defines how each row is uniquely identified. It is highly recommended that you specify this prop to an ID that makes sense.\n */\n getRowId?: CoreOptions<T>['getRowId'];\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<T>;\n /**\n * Function called when the table should update\n *\n * @param state the state of the table\n */\n onChange?: onTableChangeEvent<T>;\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 * Initial state of the table\n */\n initialState?: InitialTableState<T>;\n /**\n * Action passed when user double clicks on a row\n */\n doubleClickAction?: (datum: T) => void;\n /**\n * Function called whenever the row selection changes\n *\n * @param selectedRows The selected rows\n */\n onRowSelectionChange?: (selectedRows: T[]) => void;\n /**\n * Whether the user can select multiple rows in order to perform actions in bulk\n *\n * @default false\n */\n multiRowSelectionEnabled?: boolean;\n /**\n * Additional options that can be passed to the table\n */\n options?: Omit<\n Partial<TableOptions<T>>,\n | 'initialState'\n | 'data'\n | 'columns'\n | 'manualPagination'\n | 'enableMultiRowSelection'\n | 'getRowId'\n | 'getRowCanExpand'\n | 'enableRowSelection'\n | 'onRowSelectionChange'\n >;\n}\n\nexport interface 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 DateRangePicker: typeof TableDateRangePicker;\n CollapsibleColumn: typeof TableCollapsibleColumn;\n AccordionColumn: typeof TableAccordionColumn;\n Consumer: typeof TableConsumer;\n}\n"],"names":[],"mappings":"AAAA,WAkNC"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ export var TableConsumer = function(param) {
3
+ var children = param.children;
4
+ return /*#__PURE__*/ _jsx(_Fragment, {
5
+ children: children
6
+ });
7
+ };
8
+
9
+ //# sourceMappingURL=TableConsumer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/table/TableConsumer.tsx"],"sourcesContent":["import type {FunctionComponent, ReactNode} from 'react';\n\nexport const TableConsumer: FunctionComponent<{children: ReactNode}> = ({children}) => <>{children}</>;\n"],"names":["TableConsumer","children"],"mappings":";AAEA,OAAO,IAAMA,gBAA0D;QAAEC,iBAAAA;yBAAc;kBAAGA;;EAAa"}
package/dist/esm/index.js CHANGED
@@ -7,7 +7,7 @@ export * from "./components";
7
7
  export * from "@mantine/form";
8
8
  export { Pagination } from "@mantine/core";
9
9
  // explicitly overriding mantine components
10
- export { Header, Table, Button, Menu } from "./components";
10
+ export { Header, Table, Button, Menu, CopyToClipboard } from "./components";
11
11
  export { useForm, createFormContext } from "./form";
12
12
  export * from "./theme";
13
13
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["import {Tuple} from '@mantine/core';\n\nimport {PlasmaColors} from './theme/PlasmaColors';\n\nexport * from '@mantine/notifications';\nexport * from '@mantine/carousel';\nexport * from '@mantine/core';\nexport type {FormValidateInput} from '@mantine/form/lib/types';\nexport * from '@mantine/hooks';\nexport * from '@tanstack/table-core';\nexport * from './components';\nexport * from '@mantine/form';\nexport {type NotificationProps} from '@mantine/notifications';\nexport {Pagination} from '@mantine/core';\n// explicitly overriding mantine components\nexport {\n Header,\n type HeaderProps,\n Table,\n type TableProps,\n type TableState,\n type InitialTableState,\n Button,\n type ButtonProps,\n Menu,\n type MenuItemProps,\n} from './components';\nexport {useForm, createFormContext} from './form';\n\nexport * from './theme';\n\ndeclare module '@mantine/core' {\n export interface MantineThemeColorsOverride {\n // eslint-disable-next-line @typescript-eslint/ban-types\n colors: Record<keyof typeof PlasmaColors | (string & {}), Tuple<string, 10>>;\n }\n}\n"],"names":["Pagination","Header","Table","Button","Menu","useForm","createFormContext"],"mappings":"AAIA,cAAc,yBAAyB;AACvC,cAAc,oBAAoB;AAClC,cAAc,gBAAgB;AAE9B,cAAc,iBAAiB;AAC/B,cAAc,uBAAuB;AACrC,cAAc,eAAe;AAC7B,cAAc,gBAAgB;AAE9B,SAAQA,UAAU,QAAO,gBAAgB;AACzC,2CAA2C;AAC3C,SACIC,MAAM,EAENC,KAAK,EAILC,MAAM,EAENC,IAAI,QAED,eAAe;AACtB,SAAQC,OAAO,EAAEC,iBAAiB,QAAO,SAAS;AAElD,cAAc,UAAU"}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["import {Tuple} from '@mantine/core';\n\nimport {PlasmaColors} from './theme/PlasmaColors';\n\nexport * from '@mantine/notifications';\nexport * from '@mantine/carousel';\nexport * from '@mantine/core';\nexport type {FormValidateInput} from '@mantine/form/lib/types';\nexport * from '@mantine/hooks';\nexport * from '@tanstack/table-core';\nexport * from './components';\nexport * from '@mantine/form';\nexport {type NotificationProps} from '@mantine/notifications';\nexport {Pagination} from '@mantine/core';\n// explicitly overriding mantine components\nexport {\n Header,\n type HeaderProps,\n Table,\n type TableProps,\n type TableState,\n type InitialTableState,\n Button,\n type ButtonProps,\n Menu,\n type MenuItemProps,\n CopyToClipboard,\n type CopyToClipboardProps,\n} from './components';\nexport {useForm, createFormContext} from './form';\n\nexport * from './theme';\n\ndeclare module '@mantine/core' {\n export interface MantineThemeColorsOverride {\n // eslint-disable-next-line @typescript-eslint/ban-types\n colors: Record<keyof typeof PlasmaColors | (string & {}), Tuple<string, 10>>;\n }\n}\n"],"names":["Pagination","Header","Table","Button","Menu","CopyToClipboard","useForm","createFormContext"],"mappings":"AAIA,cAAc,yBAAyB;AACvC,cAAc,oBAAoB;AAClC,cAAc,gBAAgB;AAE9B,cAAc,iBAAiB;AAC/B,cAAc,uBAAuB;AACrC,cAAc,eAAe;AAC7B,cAAc,gBAAgB;AAE9B,SAAQA,UAAU,QAAO,gBAAgB;AACzC,2CAA2C;AAC3C,SACIC,MAAM,EAENC,KAAK,EAILC,MAAM,EAENC,IAAI,EAEJC,eAAe,QAEZ,eAAe;AACtB,SAAQC,OAAO,EAAEC,iBAAiB,QAAO,SAAS;AAElD,cAAc,UAAU"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coveord/plasma-mantine",
3
- "version": "51.2.0",
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.1",
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": "51.1.30",
29
- "@coveord/plasma-tokens": "50.0.2"
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.1",
34
- "@mantine/core": "6.0.1",
35
- "@mantine/dates": "6.0.1",
36
- "@mantine/form": "6.0.1",
37
- "@mantine/hooks": "6.0.1",
38
- "@mantine/modals": "6.0.1",
39
- "@mantine/notifications": "6.0.1",
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.42",
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.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.54",
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.4.0",
68
- "typescript": "4.9.3",
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
- <CopyButton value={_value} timeout={2000}>
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