@rws-aoa/react-library 7.0.0 → 7.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -18,7 +18,7 @@ export interface AoaFileDropzoneDataQas {
|
|
|
18
18
|
}
|
|
19
19
|
export interface AoaFileDropzoneProps<TProps extends object, TFile extends AoaDropableFile<TProps>> {
|
|
20
20
|
/**
|
|
21
|
-
* The current set of files that are already dropped, coming from Redux or
|
|
21
|
+
* The current set of files that are already dropped, coming from Redux or Tanstack Store
|
|
22
22
|
*/
|
|
23
23
|
currentFiles: TFile[];
|
|
24
24
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileDropzone.js","sources":["../../../../src/components/molecules/file-dropzone/FileDropzone.tsx"],"sourcesContent":["import { Box } from '@mui/material';\nimport type { PropsWithChildren, ReactNode } from 'react';\nimport { useDropzone, type Accept, type FileError, type FileRejection } from 'react-dropzone';\nimport { toast } from 'react-toastify';\nimport { isExtensionAllowed } from '../../../_constants';\n\nexport type AoaDropableFile<TProps extends object> = TProps & {\n /**\n * The file that was dropped\n */\n file: File;\n};\n\nexport interface AoaFileDropzoneDataQas {\n /**\n * The data-qa tag for the input\n */\n input: string;\n /**\n * The data-qa tag for the root element\n */\n root: string;\n}\n\nexport interface AoaFileDropzoneProps<TProps extends object, TFile extends AoaDropableFile<TProps>> {\n /**\n * The current set of files that are already dropped, coming from Redux or
|
|
1
|
+
{"version":3,"file":"FileDropzone.js","sources":["../../../../src/components/molecules/file-dropzone/FileDropzone.tsx"],"sourcesContent":["import { Box } from '@mui/material';\nimport type { PropsWithChildren, ReactNode } from 'react';\nimport { useDropzone, type Accept, type FileError, type FileRejection } from 'react-dropzone';\nimport { toast } from 'react-toastify';\nimport { isExtensionAllowed } from '../../../_constants';\n\nexport type AoaDropableFile<TProps extends object> = TProps & {\n /**\n * The file that was dropped\n */\n file: File;\n};\n\nexport interface AoaFileDropzoneDataQas {\n /**\n * The data-qa tag for the input\n */\n input: string;\n /**\n * The data-qa tag for the root element\n */\n root: string;\n}\n\nexport interface AoaFileDropzoneProps<TProps extends object, TFile extends AoaDropableFile<TProps>> {\n /**\n * The current set of files that are already dropped, coming from Redux or Tanstack Store\n */\n currentFiles: TFile[];\n /**\n * A custom function that can perform extra checks when validating files.\n * This should return `true` if the file should be rejected or `false` if it should be accepted\n *\n * @param file - The file to be validated\n */\n customFileValidator?(file: File): boolean;\n /**\n * data-qa tags for testing\n */\n dataQas?: AoaFileDropzoneDataQas;\n /**\n * The regular expression that validates if the dropped file should be accepted or rejected\n */\n extensionRegex: RegExp;\n /**\n * The toast warning message to be shown when a file is rejection\n */\n extensionWarning: string;\n /**\n * The extension map to be passed to the dropzone component\n */\n extensions: Accept;\n /**\n * The children to show inside the box where files can be dropped\n */\n fileDropChildren?: ReactNode;\n /**\n * Whether the dropzone should be disabled or not\n */\n isDisabled?: boolean;\n /**\n * A maximum count of files that should be accepted, if exceeded no save action will be performed\n */\n maxUploadFiles?: number;\n /**\n * The toast warning message to be shown when the files to be uploaded exceeds the maximum,\n * required if {@link AoaFileDropzoneProps.maxUploadFiles | maxUploadFiles} is specified.\n */\n maxUploadSizeExceededWarning?: string;\n /**\n * Additional properties to set for every file that is to be saved\n */\n perFileProperties?(acceptedFile: File): TProps;\n /**\n * The function to overwrite the files in the client store.\n * This should overwrite all files, not merge with current, which is handled in this component\n *\n * @param files - The new set of files to be stored\n */\n storeFiles(files: TFile[]): void;\n}\n\nexport function AoaFileDropzone<TProps extends object, TFile extends AoaDropableFile<TProps>>(\n props: Readonly<PropsWithChildren<AoaFileDropzoneProps<TProps, TFile>>>\n) {\n function showMaxUploadFilesWarning() {\n toast(\n props.maxUploadSizeExceededWarning ??\n `U heeft meer dan ${props.maxUploadFiles} bestand(en) geselecteerd. Dit is niet toegestaan.`,\n {\n type: 'warning'\n }\n );\n }\n\n function handleDrop(acceptedFiles: File[], fileRejections: FileRejection[]) {\n if (fileRejections.length > 0) {\n if (fileRejections.every((file) => file.errors.every((error) => error.code === 'too-many-files'))) {\n showMaxUploadFilesWarning();\n } else {\n toast(props.extensionWarning, { type: 'warning' });\n }\n }\n\n const filesClone = [...props.currentFiles];\n for (const acceptedFile of acceptedFiles) {\n const existingFileIndex = filesClone.findIndex((file) => file.file.name === acceptedFile.name);\n if (existingFileIndex === -1) {\n filesClone.push({ file: acceptedFile, ...props.perFileProperties?.(acceptedFile) } as TFile & TProps);\n } else {\n filesClone.splice(existingFileIndex, 1, {\n file: acceptedFile,\n ...props.perFileProperties?.(acceptedFile)\n } as TFile & TProps);\n }\n }\n\n if (props.maxUploadFiles && filesClone.length > props.maxUploadFiles) {\n showMaxUploadFilesWarning();\n } else {\n props.storeFiles(filesClone);\n }\n }\n\n function fileValidator(file: File): FileError | null {\n if (props.customFileValidator?.(file)) {\n return {\n code: 'custom-validator',\n message: props.extensionWarning\n };\n }\n\n if (isExtensionAllowed(props.extensionRegex, file.name)) {\n return null;\n }\n\n return {\n code: 'name-not-ok',\n message: props.extensionWarning\n };\n }\n\n const { getRootProps, getInputProps } = useDropzone({\n onDrop: handleDrop,\n disabled: props.isDisabled,\n accept: props.extensions,\n maxFiles: props.maxUploadFiles,\n validator: fileValidator\n });\n\n return (\n <Box\n {...getRootProps()}\n data-qa={props.dataQas?.root ?? 'file-dropzone-root'}\n sx={{\n '&:focus': {\n outline: 'none'\n }\n }}\n >\n <input\n {...getInputProps()}\n aria-label='File drop'\n data-qa={props.dataQas?.input ?? 'file-drop-input'}\n data-testid='file-drop-input'\n />\n <Box\n sx={{\n backgroundColor: 'var(--color-rijks-grey-2)',\n borderWidth: 1,\n borderStyle: 'dashed',\n borderColor: 'black',\n marginBottom: 0.5,\n textAlign: 'center'\n }}\n >\n {props.fileDropChildren}\n </Box>\n </Box>\n );\n}\n"],"names":["AoaFileDropzone","props","$","_c","t0","maxUploadFiles","maxUploadSizeExceededWarning","toast","type","showMaxUploadFilesWarning","t1","acceptedFiles","fileRejections","length","every","_temp2","extensionWarning","filesClone","currentFiles","acceptedFile","existingFileIndex","findIndex","file_0","file","name","push","perFileProperties","splice","storeFiles","handleDrop","t2","file_1","customFileValidator","code","message","isExtensionAllowed","extensionRegex","fileValidator","t3","extensions","isDisabled","onDrop","disabled","accept","maxFiles","validator","getRootProps","getInputProps","useDropzone","t4","t5","dataQas","root","t6","Symbol","for","outline","t7","t8","input","t9","t10","backgroundColor","borderWidth","borderStyle","borderColor","marginBottom","textAlign","t11","fileDropChildren","Box","t12","errors","_temp","error"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rws-aoa/react-library",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.1",
|
|
4
4
|
"description": "RWS AOA Design System",
|
|
5
5
|
"author": "@rws-aoa",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"@emotion/styled": "^11.14.1",
|
|
29
29
|
"@mui/icons-material": "^7.2.0",
|
|
30
30
|
"@mui/material": "^7.2.0",
|
|
31
|
-
"@tanstack/react-router": "^1.
|
|
31
|
+
"@tanstack/react-router": "^1.128.0",
|
|
32
32
|
"clsx": "^2.1.1",
|
|
33
33
|
"lodash": "^4.17.21",
|
|
34
34
|
"react": "^19.1.0",
|
|
@@ -42,13 +42,13 @@
|
|
|
42
42
|
"@mui/system": "^7.2.0",
|
|
43
43
|
"@mui/x-data-grid": "^8.8.0",
|
|
44
44
|
"@mui/x-data-grid-generator": "^8.8.0",
|
|
45
|
-
"@storybook/addon-a11y": "^9.0.
|
|
45
|
+
"@storybook/addon-a11y": "^9.0.17",
|
|
46
46
|
"@storybook/addon-console": "^3.0.0",
|
|
47
|
-
"@storybook/addon-docs": "^9.0.
|
|
48
|
-
"@storybook/addon-onboarding": "^9.0.
|
|
49
|
-
"@storybook/addon-themes": "^9.0.
|
|
50
|
-
"@storybook/addon-vitest": "9.0.
|
|
51
|
-
"@storybook/react-vite": "^9.0.
|
|
47
|
+
"@storybook/addon-docs": "^9.0.17",
|
|
48
|
+
"@storybook/addon-onboarding": "^9.0.17",
|
|
49
|
+
"@storybook/addon-themes": "^9.0.17",
|
|
50
|
+
"@storybook/addon-vitest": "9.0.17",
|
|
51
|
+
"@storybook/react-vite": "^9.0.17",
|
|
52
52
|
"@tanstack/react-form": "1.14.1",
|
|
53
53
|
"@types/lodash": "^4.17.20",
|
|
54
54
|
"@types/lodash.merge": "^4.6.9",
|
|
@@ -66,11 +66,11 @@
|
|
|
66
66
|
"react-dropzone": "^14.3.8",
|
|
67
67
|
"react-toastify": "^11.0.5",
|
|
68
68
|
"remark-gfm": "^4.0.1",
|
|
69
|
-
"storybook": "^9.0.
|
|
69
|
+
"storybook": "^9.0.17",
|
|
70
70
|
"stylelint": "^16.21.1",
|
|
71
71
|
"tslib": "^2.8.1",
|
|
72
72
|
"typescript": "^5.8.3",
|
|
73
|
-
"vite": "^7.0.
|
|
73
|
+
"vite": "^7.0.5",
|
|
74
74
|
"vite-plugin-checker": "^0.10.0",
|
|
75
75
|
"vite-plugin-dts": "^4.5.4",
|
|
76
76
|
"vite-plugin-lib-inject-css": "^2.2.2",
|