@popsure/dirty-swan 0.33.3 → 0.33.5

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 (73) hide show
  1. package/dist/cjs/index.js +31 -18
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/lib/components/dateSelector/index.d.ts +11 -11
  4. package/dist/cjs/lib/components/dateSelector/index.stories.d.ts +65 -0
  5. package/dist/cjs/lib/components/modal/bottomModal/index.d.ts +1 -2
  6. package/dist/cjs/lib/components/modal/bottomOrRegularModal/index.d.ts +1 -2
  7. package/dist/cjs/lib/components/modal/index.d.ts +3 -3
  8. package/dist/cjs/lib/components/modal/index.stories.d.ts +62 -0
  9. package/dist/cjs/lib/components/modal/regularModal/index.d.ts +1 -2
  10. package/dist/cjs/lib/components/multiDropzone/index.d.ts +4 -4
  11. package/dist/cjs/lib/components/multiDropzone/index.stories.d.ts +72 -0
  12. package/dist/cjs/lib/index.d.ts +2 -2
  13. package/dist/cjs/lib/util/images/index.d.ts +12 -0
  14. package/dist/esm/components/dateSelector/index.js +6 -2179
  15. package/dist/esm/components/dateSelector/index.js.map +1 -1
  16. package/dist/esm/components/dateSelector/index.stories.js +92 -0
  17. package/dist/esm/components/dateSelector/index.stories.js.map +1 -0
  18. package/dist/esm/components/dateSelector/index.test.js +1 -1
  19. package/dist/esm/components/dateSelector/index.test.js.map +1 -1
  20. package/dist/esm/components/input/checkbox/index.stories.js +1 -1
  21. package/dist/esm/components/modal/bottomModal/index.js +3 -3
  22. package/dist/esm/components/modal/bottomModal/index.js.map +1 -1
  23. package/dist/esm/components/modal/bottomOrRegularModal/index.js +5 -5
  24. package/dist/esm/components/modal/bottomOrRegularModal/index.js.map +1 -1
  25. package/dist/esm/components/modal/index.stories.js +118 -0
  26. package/dist/esm/components/modal/index.stories.js.map +1 -0
  27. package/dist/esm/components/modal/regularModal/index.js +3 -3
  28. package/dist/esm/components/modal/regularModal/index.js.map +1 -1
  29. package/dist/esm/components/multiDropzone/index.js +3 -3
  30. package/dist/esm/components/multiDropzone/index.js.map +1 -1
  31. package/dist/esm/components/multiDropzone/index.stories.js +147 -0
  32. package/dist/esm/components/multiDropzone/index.stories.js.map +1 -0
  33. package/dist/esm/components/multiDropzone/index.test.js +2 -2
  34. package/dist/esm/components/multiDropzone/index.test.js.map +1 -1
  35. package/dist/esm/index-31224f74.js +26 -0
  36. package/dist/esm/index-31224f74.js.map +1 -0
  37. package/dist/esm/index-639cf8b3.js +2179 -0
  38. package/dist/esm/index-639cf8b3.js.map +1 -0
  39. package/dist/esm/index.js +6 -6
  40. package/dist/esm/lib/components/dateSelector/index.d.ts +11 -11
  41. package/dist/esm/lib/components/dateSelector/index.stories.d.ts +65 -0
  42. package/dist/esm/lib/components/modal/bottomModal/index.d.ts +1 -2
  43. package/dist/esm/lib/components/modal/bottomOrRegularModal/index.d.ts +1 -2
  44. package/dist/esm/lib/components/modal/index.d.ts +3 -3
  45. package/dist/esm/lib/components/modal/index.stories.d.ts +62 -0
  46. package/dist/esm/lib/components/modal/regularModal/index.d.ts +1 -2
  47. package/dist/esm/lib/components/multiDropzone/index.d.ts +4 -4
  48. package/dist/esm/lib/components/multiDropzone/index.stories.d.ts +72 -0
  49. package/dist/esm/lib/index.d.ts +2 -2
  50. package/dist/esm/lib/util/images/index.d.ts +12 -0
  51. package/dist/esm/util/images/index.stories.js +7 -4
  52. package/dist/esm/util/images/index.stories.js.map +1 -1
  53. package/package.json +1 -1
  54. package/src/App.tsx +1 -1
  55. package/src/lib/components/dateSelector/index.stories.tsx +104 -0
  56. package/src/lib/components/dateSelector/index.test.tsx +2 -2
  57. package/src/lib/components/dateSelector/index.tsx +14 -14
  58. package/src/lib/components/modal/bottomModal/index.tsx +1 -1
  59. package/src/lib/components/modal/bottomOrRegularModal/index.tsx +2 -2
  60. package/src/lib/components/modal/index.stories.tsx +254 -0
  61. package/src/lib/components/modal/index.ts +3 -3
  62. package/src/lib/components/modal/regularModal/index.tsx +1 -1
  63. package/src/lib/components/multiDropzone/index.stories.tsx +228 -0
  64. package/src/lib/components/multiDropzone/index.test.tsx +1 -1
  65. package/src/lib/components/multiDropzone/index.tsx +6 -6
  66. package/src/lib/index.tsx +3 -2
  67. package/src/lib/util/images/index.stories.tsx +20 -12
  68. package/src/lib/util/images/index.ts +23 -9
  69. package/dist/esm/index-db2e797f.js +0 -13
  70. package/dist/esm/index-db2e797f.js.map +0 -1
  71. package/src/lib/components/dateSelector/index.stories.mdx +0 -106
  72. package/src/lib/components/modal/index.stories.mdx +0 -313
  73. package/src/lib/components/multiDropzone/index.stories.mdx +0 -187
@@ -0,0 +1,147 @@
1
+ import { d as __spreadArray } from '../../tslib.es6-5bc94358.js';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { useState } from 'react';
4
+ import { MultiDropzone } from './index.js';
5
+ import '../../index-e9e37a34.js';
6
+ import '../../index-dd80248b.js';
7
+ import '../../index-21239ab0.js';
8
+ import '../../index-fb46adf9.js';
9
+ import '../../style-inject.es-1f59c1d0.js';
10
+ import '../../index-6ced5532.js';
11
+
12
+ var story = {
13
+ title: 'JSX/MultiDropzone',
14
+ component: MultiDropzone,
15
+ argTypes: {
16
+ uploadedFiles: {
17
+ defaultValue: [{
18
+ id: '123456789',
19
+ name: 'dummyfile.png'
20
+ }],
21
+ description: 'List of files to be displayed on the component.',
22
+ },
23
+ uploading: {
24
+ defaultValue: false,
25
+ description: 'Property that allows to display component in an uploading state',
26
+ },
27
+ isCondensed: {
28
+ defaultValue: false,
29
+ description: 'Property that allows to display component in a smaller layout',
30
+ },
31
+ maxFiles: {
32
+ description: 'Property that allows to display the maximum number of files allowed',
33
+ table: {
34
+ category: 'File Validation',
35
+ },
36
+ },
37
+ maxSize: {
38
+ description: 'Property that allows to display the maximum size of files allowed',
39
+ table: {
40
+ category: 'File Validation',
41
+ },
42
+ },
43
+ accept: {
44
+ description: 'Property that allows to define which file types are accepted',
45
+ table: {
46
+ category: 'File Validation',
47
+ },
48
+ },
49
+ onRemoveFile: {
50
+ description: 'Called when a file remove button is clicked',
51
+ action: true,
52
+ table: {
53
+ category: 'Callbacks',
54
+ },
55
+ },
56
+ onFileSelect: {
57
+ description: 'Called when a file is uploaded',
58
+ action: true,
59
+ table: {
60
+ category: 'Callbacks',
61
+ },
62
+ },
63
+ textOverrides: {
64
+ description: 'Properties that allow to localise component',
65
+ },
66
+ },
67
+ parameters: {
68
+ componentSubtitle: 'MultiDropzone component allows upload of multiple documents / files.',
69
+ },
70
+ };
71
+ var MultiDropzoneStory = function (_a) {
72
+ var onFileSelect = _a.onFileSelect, onRemoveFile = _a.onRemoveFile, uploading = _a.uploading, _b = _a.uploadedFiles, uploadedFiles = _b === void 0 ? [] : _b, isCondensed = _a.isCondensed, maxFiles = _a.maxFiles, maxSize = _a.maxSize, textOverrides = _a.textOverrides;
73
+ var _c = useState(uploadedFiles), localFiles = _c[0], setLocalFiles = _c[1];
74
+ var handleOnRemoveFile = function (id) {
75
+ onRemoveFile(id);
76
+ setLocalFiles(function (prevFiles) { return prevFiles.filter(function (file) { return file.id !== id; }); });
77
+ };
78
+ var handleOnFileSelect = function (files) {
79
+ var newFiles = files.map(function (newFile) { return ({
80
+ id: String(new Date().getTime()),
81
+ name: newFile.name,
82
+ progress: 100,
83
+ }); });
84
+ setLocalFiles(function (prevFiles) { return __spreadArray(__spreadArray([], prevFiles), newFiles); });
85
+ onFileSelect(files);
86
+ };
87
+ return (jsx(MultiDropzone, { onFileSelect: handleOnFileSelect, onRemoveFile: handleOnRemoveFile, uploadedFiles: localFiles, uploading: uploading, isCondensed: isCondensed, maxFiles: maxFiles, maxSize: maxSize, textOverrides: textOverrides }, void 0));
88
+ };
89
+ MultiDropzoneStory.storyName = "MultiDropzone";
90
+ var UploadingState = function () { return (jsx(MultiDropzone, { uploadedFiles: [
91
+ {
92
+ id: '123',
93
+ progress: 72,
94
+ name: 'test_file_name.pdf',
95
+ previewUrl: 'http://getpopsure.com/test_file_name.pdf',
96
+ },
97
+ {
98
+ id: '124',
99
+ progress: 72,
100
+ name: 'test_file_name.pdf',
101
+ previewUrl: 'http://getpopsure.com/test_file_name.pdf',
102
+ showLoadingSpinner: true,
103
+ showProgressBar: false,
104
+ },
105
+ {
106
+ id: '125',
107
+ progress: 72,
108
+ name: 'test_file_name.pdf',
109
+ previewUrl: 'http://getpopsure.com/test_file_name.pdf',
110
+ showLoadingSpinner: true,
111
+ },
112
+ {
113
+ id: '456',
114
+ progress: 100,
115
+ name: 'test_file_name2.pdf',
116
+ previewUrl: 'http://getpopsure.com/test_file_name2.pdf',
117
+ },
118
+ ], onFileSelect: function () { }, uploading: true, onRemoveFile: function () { } }, void 0)); };
119
+ var CondensedView = function () { return (jsx(MultiDropzone, { uploadedFiles: [
120
+ {
121
+ id: '123',
122
+ progress: 100,
123
+ name: 'test_file_name.pdf',
124
+ previewUrl: 'http://getpopsure.com/test_file_name.pdf',
125
+ },
126
+ ], onFileSelect: function () { }, uploading: false, onRemoveFile: function () { }, isCondensed: true }, void 0)); };
127
+ var ErrorState = function () { return (jsx(MultiDropzone, { uploadedFiles: [
128
+ {
129
+ id: '123',
130
+ progress: 0,
131
+ name: 'test_file_name.pdf',
132
+ previewUrl: 'http://getpopsure.com/test_file_name.pdf',
133
+ error: 'File is too big!',
134
+ },
135
+ ], onFileSelect: function () { }, uploading: false, onRemoveFile: function () { } }, void 0)); };
136
+ var AcceptingOnlyImages = function () { return (jsx(MultiDropzone, { accept: "image", isCondensed: true, uploadedFiles: [], onFileSelect: function () { }, uploading: false, onRemoveFile: function () { } }, void 0)); };
137
+ var AcceptingOnlyDocuments = function () { return (jsx(MultiDropzone, { accept: "document", isCondensed: true, uploadedFiles: [], onFileSelect: function () { }, uploading: false, onRemoveFile: function () { } }, void 0)); };
138
+ var LimitingFileSizeTo2MB = function () { return (jsx(MultiDropzone, { isCondensed: true, uploadedFiles: [], onFileSelect: function () { }, uploading: false, onRemoveFile: function () { }, maxSize: 2096000 }, void 0)); };
139
+ var I18nSupport = function () { return (jsx(MultiDropzone, { uploadedFiles: [], onFileSelect: function () { }, uploading: false, onRemoveFile: function () { }, textOverrides: {
140
+ instructionsText: 'Datei auswählen oder per Drag & Drop platzieren',
141
+ supportsTextShort: 'Unterstützt werden',
142
+ currentlyUploadingText: 'Bitte warten während die Datei hochgeladen wird...'
143
+ } }, void 0)); };
144
+
145
+ export default story;
146
+ export { AcceptingOnlyDocuments, AcceptingOnlyImages, CondensedView, ErrorState, I18nSupport, LimitingFileSizeTo2MB, MultiDropzoneStory, UploadingState };
147
+ //# sourceMappingURL=index.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.stories.js","sources":["../../../../../src/lib/components/multiDropzone/index.stories.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { MultiDropzone, MultiDropzoneProps } from '.';\nimport { UploadedFile } from './types';\n\nconst story = {\n title: 'JSX/MultiDropzone',\n component: MultiDropzone,\n argTypes: {\n uploadedFiles: {\n defaultValue: [{\n id: '123456789',\n name: 'dummyfile.png'\n }],\n description: 'List of files to be displayed on the component.',\n },\n uploading: {\n defaultValue: false,\n description: 'Property that allows to display component in an uploading state',\n },\n isCondensed: {\n defaultValue: false,\n description: 'Property that allows to display component in a smaller layout',\n },\n maxFiles: {\n description: 'Property that allows to display the maximum number of files allowed',\n table: {\n category: 'File Validation',\n },\n },\n maxSize: {\n description: 'Property that allows to display the maximum size of files allowed',\n table: {\n category: 'File Validation',\n },\n },\n accept: {\n description: 'Property that allows to define which file types are accepted',\n table: {\n category: 'File Validation',\n },\n },\n onRemoveFile: {\n description: 'Called when a file remove button is clicked',\n action: true,\n table: {\n category: 'Callbacks',\n },\n },\n onFileSelect: {\n description: 'Called when a file is uploaded',\n action: true,\n table: {\n category: 'Callbacks',\n },\n },\n textOverrides: {\n description: 'Properties that allow to localise component',\n },\n },\n parameters: {\n componentSubtitle: 'MultiDropzone component allows upload of multiple documents / files.',\n },\n};\n\nexport const MultiDropzoneStory = ({\n onFileSelect,\n onRemoveFile,\n uploading,\n uploadedFiles = [],\n isCondensed,\n maxFiles,\n maxSize,\n textOverrides,\n}: MultiDropzoneProps) => {\n const [localFiles, setLocalFiles] = useState<UploadedFile[]>(uploadedFiles);\n\n const handleOnRemoveFile = (id: string) => {\n onRemoveFile(id);\n setLocalFiles((prevFiles) => prevFiles.filter((file) => file.id !== id));\n };\n\n const handleOnFileSelect = (files: File[]) => {\n const newFiles = files.map((newFile) => ({\n id: String(new Date().getTime()),\n name: newFile.name,\n progress: 100,\n }));\n setLocalFiles((prevFiles) => [...prevFiles, ...newFiles]);\n onFileSelect(files);\n };\n\n return (\n <MultiDropzone \n onFileSelect={handleOnFileSelect} \n onRemoveFile={handleOnRemoveFile} \n uploadedFiles={localFiles} \n uploading={uploading} \n isCondensed={isCondensed}\n maxFiles={maxFiles}\n maxSize={maxSize}\n textOverrides={textOverrides}\n />\n );\n};\n\nMultiDropzoneStory.storyName = \"MultiDropzone\";\n\nexport const UploadingState = () => (\n <MultiDropzone\n uploadedFiles={[\n {\n id: '123',\n progress: 72,\n name: 'test_file_name.pdf',\n previewUrl: 'http://getpopsure.com/test_file_name.pdf',\n },\n {\n id: '124',\n progress: 72,\n name: 'test_file_name.pdf',\n previewUrl: 'http://getpopsure.com/test_file_name.pdf',\n showLoadingSpinner: true,\n showProgressBar: false,\n },\n {\n id: '125',\n progress: 72,\n name: 'test_file_name.pdf',\n previewUrl: 'http://getpopsure.com/test_file_name.pdf',\n showLoadingSpinner: true,\n },\n {\n id: '456',\n progress: 100,\n name: 'test_file_name2.pdf',\n previewUrl: 'http://getpopsure.com/test_file_name2.pdf',\n },\n ]}\n onFileSelect={() => {}}\n uploading={true}\n onRemoveFile={() => {}}\n />\n);\n\n\nexport const CondensedView = () => (\n <MultiDropzone\n uploadedFiles={[\n {\n id: '123',\n progress: 100,\n name: 'test_file_name.pdf',\n previewUrl: 'http://getpopsure.com/test_file_name.pdf',\n },\n ]}\n onFileSelect={() => {}}\n uploading={false}\n onRemoveFile={() => {}}\n isCondensed\n />\n);\n\nexport const ErrorState = () => (\n <MultiDropzone\n uploadedFiles={[\n {\n id: '123',\n progress: 0,\n name: 'test_file_name.pdf',\n previewUrl: 'http://getpopsure.com/test_file_name.pdf',\n error: 'File is too big!',\n },\n ]}\n onFileSelect={() => {}}\n uploading={false}\n onRemoveFile={() => {}}\n />\n);\n\nexport const AcceptingOnlyImages = () => (\n <MultiDropzone\n accept=\"image\"\n isCondensed\n uploadedFiles={[]}\n onFileSelect={() => {}}\n uploading={false}\n onRemoveFile={() => {}}\n />\n);\n\nexport const AcceptingOnlyDocuments = () => (\n <MultiDropzone\n accept=\"document\"\n isCondensed\n uploadedFiles={[]}\n onFileSelect={() => {}}\n uploading={false}\n onRemoveFile={() => {}}\n />\n);\n\nexport const LimitingFileSizeTo2MB = () => (\n <MultiDropzone\n isCondensed\n uploadedFiles={[]}\n onFileSelect={() => {}}\n uploading={false}\n onRemoveFile={() => {}}\n maxSize={2096000}\n />\n);\n\nexport const I18nSupport = () => (\n <MultiDropzone\n uploadedFiles={[]}\n onFileSelect={() => {}}\n uploading={false}\n onRemoveFile={() => {}}\n textOverrides={{\n instructionsText: 'Datei auswählen oder per Drag & Drop platzieren',\n supportsTextShort: 'Unterstützt werden',\n currentlyUploadingText:\n 'Bitte warten während die Datei hochgeladen wird...'\n }}\n />\n);\n\nexport default story;\n"],"names":["_jsx"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { b as __awaiter, c as __generator, _ as __assign, a as __rest } from '..
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { c as customRender, a as act, f as fireEvent } from '../../customRender-4157fcff.js';
4
4
  import '../../extend-expect-46bdce4a.js';
5
- import MultiDropZone from './index.js';
5
+ import { MultiDropzone } from './index.js';
6
6
  import 'react';
7
7
  import 'react-dom';
8
8
  import '../../_commonjsHelpers-e7f67fd8.js';
@@ -30,7 +30,7 @@ var uploadedFilesMock = {
30
30
  };
31
31
  var setup = function (_a) {
32
32
  var _b = _a.uploadedFiles, uploadedFiles = _b === void 0 ? [] : _b, _c = _a.uploading, uploading = _c === void 0 ? false : _c, rest = __rest(_a, ["uploadedFiles", "uploading"]);
33
- return customRender(jsx(MultiDropZone, __assign({}, rest, { uploadedFiles: uploadedFiles, uploading: uploading, onFileSelect: mockOnFileSelect, onRemoveFile: mockOnRemoveFile }), void 0));
33
+ return customRender(jsx(MultiDropzone, __assign({}, rest, { uploadedFiles: uploadedFiles, uploading: uploading, onFileSelect: mockOnFileSelect, onRemoveFile: mockOnRemoveFile }), void 0));
34
34
  };
35
35
  describe('MultiDropzone component', function () {
36
36
  it("should call onFileSelect on files change", function () { return __awaiter(void 0, void 0, void 0, function () {
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sources":["../../../../../src/lib/components/multiDropzone/index.test.tsx"],"sourcesContent":["import { act, fireEvent, render } from '../../util/testUtils';\nimport '@testing-library/jest-dom';\n\nimport MultiDropzone, { MultiDropzoneProps } from '.';\n\nconst mockOnFileSelect = jest.fn();\nconst mockOnRemoveFile = jest.fn();\nconst file = new File(['DummyFile'], 'dummy.png', { type: 'image/png' });\n\nconst inputTestId = \"ds-drop-input\";\nconst spinnerTestId = \"ds-filecell-spinner\";\nconst progressbarTestId = \"ds-filecell-progressbar\";\nconst uploadedFilesMock = {\n id: \"123\",\n name: \"File name\",\n progress: 100,\n type: \"jpg\",\n};\n\nconst setup = ({\n uploadedFiles = [],\n uploading = false,\n ...rest\n}: Partial<MultiDropzoneProps>) => {\n return render(\n <MultiDropzone\n {...rest}\n uploadedFiles={uploadedFiles}\n uploading={uploading}\n onFileSelect={mockOnFileSelect}\n onRemoveFile={mockOnRemoveFile}\n />\n );\n};\n\ndescribe('MultiDropzone component', () => {\n it(\"should call onFileSelect on files change\", async () => {\n const { getByTestId, user } = setup({});\n const files = [file, file];\n\n await user.upload(getByTestId(inputTestId), files);\n\n expect(mockOnFileSelect).toHaveBeenCalledWith(files);\n });\n\n describe('Error states', () => {\n it(\"should show max files error message\", () => {\n const screen = setup({\n maxFiles: 1,\n uploadedFiles: [uploadedFilesMock, {\n ...uploadedFilesMock,\n id: \"222\"\n }],\n });\n \n expect(screen.getByText(\"Too many files.\")).toBeVisible();\n });\n\n it(\"should show max file size error message\", async () => {\n const { getByTestId, getByText, user } = setup({ maxSize: 10 });\n const bigFile = file;\n Object.defineProperty(bigFile, 'size', { value: 1024 });\n\n await user.upload(getByTestId(inputTestId), [bigFile]);\n\n expect(\n getByText(\"File is too large. It must be less than 10 Bytes.\")\n ).toBeInTheDocument();\n });\n\n it(\"should show wrong filetype error message\", async () => {\n const { getByTestId, getByText } = setup({ accept: \"document\" });\n const input = getByTestId(inputTestId);\n\n await act(async () => {\n // Keeping fireevent to emulate file change like drop\n // Using userevent.upload doesn't work since input has an accept/html validation\n fireEvent.change(input, { target: { files: [file] } });\n });\n\n expect(\n getByText(\"File type must be one of DOC, DOCX, PDF\")\n ).toBeInTheDocument();\n });\n\n it(\"should remove wrong filetype error message\", async () => {\n const { getByAltText, getByTestId, queryByText, user } = setup({ accept: \"document\" });\n const input = getByTestId(inputTestId);\n\n await act(async () => {\n // Keeping fireevent to emulate file change like drop\n // Using userevent.upload doesn't work since input has an accept/html validation\n fireEvent.change(input, { target: { files: [file] } });\n });\n\n await user.click(getByAltText(\"remove\"));\n\n expect(queryByText(\"File type must be one of DOC, DOCX, PDF\")).not.toBeInTheDocument();\n });\n });\n\n describe('Copy text', () => {\n it(\"should show uploader text\", () => {\n const screen = setup({});\n\n expect(screen.getByText(\"Choose file or drag & drop\")).toBeInTheDocument();\n });\n\n it(\"should show uploader text translated\", () => {\n const instructionsText = \"Drag drop file\";\n const screen = setup({\n textOverrides: { instructionsText }\n });\n\n expect(screen.getByText(instructionsText)).toBeInTheDocument();\n });\n\n it(\"should show image accept file type label\", () => {\n const screen = setup({ accept: \"image\" });\n\n expect(\n screen.getByText(\"Supports HEIC, BMP, JPEG, JPG, PNG\")\n ).toBeInTheDocument();\n });\n\n it(\"should show document accept file type label\", () => {\n const screen = setup({ accept: \"document\" });\n\n expect(\n screen.getByText(\"Supports DOC, DOCX, PDF\")\n ).toBeInTheDocument();\n });\n\n it(\"should custom document accept file type label\", () => {\n const screen = setup({ accept: {\n \"application/pdf\": [\".pdf\"],\n \"image/jpg\": [\".jpg\"],\n } });\n\n expect(\n screen.getByText(\"Supports PDF, JPG\")\n ).toBeInTheDocument();\n });\n\n it(\"should show disabled text if is uploading\", () => {\n const screen = setup({ uploading: true });\n\n expect(\n screen.getByText(\"Please wait while uploading file...\")\n ).toBeInTheDocument();\n });\n });\n\n describe('Uploaded files', () => {\n it(\"should show uploaded files\", () => {\n const screen = setup({\n uploadedFiles: [uploadedFilesMock],\n });\n\n expect(\n screen.getByText(uploadedFilesMock.name)\n ).toBeInTheDocument();\n });\n\n it(\"should call onRemoveFile with uploaded file id\", () => {\n const screen = setup({\n uploadedFiles: [uploadedFilesMock],\n });\n\n screen.getByAltText(\"remove\").click();\n\n expect(mockOnRemoveFile).toBeCalledWith(uploadedFilesMock.id);\n });\n\n it(\"should show uploaded file with uploading label\", () => {\n const screen = setup({\n uploadedFiles: [{ ...uploadedFilesMock, progress: 50 }],\n });\n\n expect(screen.getByText(\"Uploading...\")).toBeInTheDocument();\n });\n\n it(\"should show uploaded file with progress bar\", () => {\n const screen = setup({\n uploadedFiles: [{\n ...uploadedFilesMock,\n progress: 50,\n }],\n });\n\n expect(screen.getByTestId(progressbarTestId)).toBeInTheDocument();\n });\n\n it(\"should show uploaded file with no progress bar\", () => {\n const screen = setup({\n uploadedFiles: [{\n ...uploadedFilesMock,\n progress: 50,\n showProgressBar: false\n }],\n });\n\n expect(screen.queryByTestId(progressbarTestId)).not.toBeInTheDocument();\n });\n\n it(\"should show uploaded file with loading spinner\", () => {\n const screen = setup({\n uploadedFiles: [{\n ...uploadedFilesMock,\n progress: 50,\n showLoadingSpinner: true\n }],\n });\n\n expect(screen.getByTestId(spinnerTestId)).toBeInTheDocument();\n });\n\n it(\"should show uploaded file with no loading spinner\", () => {\n const screen = setup({\n uploadedFiles: [{\n ...uploadedFilesMock,\n progress: 50,\n showLoadingSpinner: false\n }],\n });\n\n expect(screen.queryByTestId(spinnerTestId)).not.toBeInTheDocument();\n });\n });\n});\n"],"names":["render","_jsx","MultiDropzone"],"mappings":"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"}
1
+ {"version":3,"file":"index.test.js","sources":["../../../../../src/lib/components/multiDropzone/index.test.tsx"],"sourcesContent":["import { act, fireEvent, render } from '../../util/testUtils';\nimport '@testing-library/jest-dom';\n\nimport { MultiDropzone, MultiDropzoneProps } from '.';\n\nconst mockOnFileSelect = jest.fn();\nconst mockOnRemoveFile = jest.fn();\nconst file = new File(['DummyFile'], 'dummy.png', { type: 'image/png' });\n\nconst inputTestId = \"ds-drop-input\";\nconst spinnerTestId = \"ds-filecell-spinner\";\nconst progressbarTestId = \"ds-filecell-progressbar\";\nconst uploadedFilesMock = {\n id: \"123\",\n name: \"File name\",\n progress: 100,\n type: \"jpg\",\n};\n\nconst setup = ({\n uploadedFiles = [],\n uploading = false,\n ...rest\n}: Partial<MultiDropzoneProps>) => {\n return render(\n <MultiDropzone\n {...rest}\n uploadedFiles={uploadedFiles}\n uploading={uploading}\n onFileSelect={mockOnFileSelect}\n onRemoveFile={mockOnRemoveFile}\n />\n );\n};\n\ndescribe('MultiDropzone component', () => {\n it(\"should call onFileSelect on files change\", async () => {\n const { getByTestId, user } = setup({});\n const files = [file, file];\n\n await user.upload(getByTestId(inputTestId), files);\n\n expect(mockOnFileSelect).toHaveBeenCalledWith(files);\n });\n\n describe('Error states', () => {\n it(\"should show max files error message\", () => {\n const screen = setup({\n maxFiles: 1,\n uploadedFiles: [uploadedFilesMock, {\n ...uploadedFilesMock,\n id: \"222\"\n }],\n });\n \n expect(screen.getByText(\"Too many files.\")).toBeVisible();\n });\n\n it(\"should show max file size error message\", async () => {\n const { getByTestId, getByText, user } = setup({ maxSize: 10 });\n const bigFile = file;\n Object.defineProperty(bigFile, 'size', { value: 1024 });\n\n await user.upload(getByTestId(inputTestId), [bigFile]);\n\n expect(\n getByText(\"File is too large. It must be less than 10 Bytes.\")\n ).toBeInTheDocument();\n });\n\n it(\"should show wrong filetype error message\", async () => {\n const { getByTestId, getByText } = setup({ accept: \"document\" });\n const input = getByTestId(inputTestId);\n\n await act(async () => {\n // Keeping fireevent to emulate file change like drop\n // Using userevent.upload doesn't work since input has an accept/html validation\n fireEvent.change(input, { target: { files: [file] } });\n });\n\n expect(\n getByText(\"File type must be one of DOC, DOCX, PDF\")\n ).toBeInTheDocument();\n });\n\n it(\"should remove wrong filetype error message\", async () => {\n const { getByAltText, getByTestId, queryByText, user } = setup({ accept: \"document\" });\n const input = getByTestId(inputTestId);\n\n await act(async () => {\n // Keeping fireevent to emulate file change like drop\n // Using userevent.upload doesn't work since input has an accept/html validation\n fireEvent.change(input, { target: { files: [file] } });\n });\n\n await user.click(getByAltText(\"remove\"));\n\n expect(queryByText(\"File type must be one of DOC, DOCX, PDF\")).not.toBeInTheDocument();\n });\n });\n\n describe('Copy text', () => {\n it(\"should show uploader text\", () => {\n const screen = setup({});\n\n expect(screen.getByText(\"Choose file or drag & drop\")).toBeInTheDocument();\n });\n\n it(\"should show uploader text translated\", () => {\n const instructionsText = \"Drag drop file\";\n const screen = setup({\n textOverrides: { instructionsText }\n });\n\n expect(screen.getByText(instructionsText)).toBeInTheDocument();\n });\n\n it(\"should show image accept file type label\", () => {\n const screen = setup({ accept: \"image\" });\n\n expect(\n screen.getByText(\"Supports HEIC, BMP, JPEG, JPG, PNG\")\n ).toBeInTheDocument();\n });\n\n it(\"should show document accept file type label\", () => {\n const screen = setup({ accept: \"document\" });\n\n expect(\n screen.getByText(\"Supports DOC, DOCX, PDF\")\n ).toBeInTheDocument();\n });\n\n it(\"should custom document accept file type label\", () => {\n const screen = setup({ accept: {\n \"application/pdf\": [\".pdf\"],\n \"image/jpg\": [\".jpg\"],\n } });\n\n expect(\n screen.getByText(\"Supports PDF, JPG\")\n ).toBeInTheDocument();\n });\n\n it(\"should show disabled text if is uploading\", () => {\n const screen = setup({ uploading: true });\n\n expect(\n screen.getByText(\"Please wait while uploading file...\")\n ).toBeInTheDocument();\n });\n });\n\n describe('Uploaded files', () => {\n it(\"should show uploaded files\", () => {\n const screen = setup({\n uploadedFiles: [uploadedFilesMock],\n });\n\n expect(\n screen.getByText(uploadedFilesMock.name)\n ).toBeInTheDocument();\n });\n\n it(\"should call onRemoveFile with uploaded file id\", () => {\n const screen = setup({\n uploadedFiles: [uploadedFilesMock],\n });\n\n screen.getByAltText(\"remove\").click();\n\n expect(mockOnRemoveFile).toBeCalledWith(uploadedFilesMock.id);\n });\n\n it(\"should show uploaded file with uploading label\", () => {\n const screen = setup({\n uploadedFiles: [{ ...uploadedFilesMock, progress: 50 }],\n });\n\n expect(screen.getByText(\"Uploading...\")).toBeInTheDocument();\n });\n\n it(\"should show uploaded file with progress bar\", () => {\n const screen = setup({\n uploadedFiles: [{\n ...uploadedFilesMock,\n progress: 50,\n }],\n });\n\n expect(screen.getByTestId(progressbarTestId)).toBeInTheDocument();\n });\n\n it(\"should show uploaded file with no progress bar\", () => {\n const screen = setup({\n uploadedFiles: [{\n ...uploadedFilesMock,\n progress: 50,\n showProgressBar: false\n }],\n });\n\n expect(screen.queryByTestId(progressbarTestId)).not.toBeInTheDocument();\n });\n\n it(\"should show uploaded file with loading spinner\", () => {\n const screen = setup({\n uploadedFiles: [{\n ...uploadedFilesMock,\n progress: 50,\n showLoadingSpinner: true\n }],\n });\n\n expect(screen.getByTestId(spinnerTestId)).toBeInTheDocument();\n });\n\n it(\"should show uploaded file with no loading spinner\", () => {\n const screen = setup({\n uploadedFiles: [{\n ...uploadedFilesMock,\n progress: 50,\n showLoadingSpinner: false\n }],\n });\n\n expect(screen.queryByTestId(spinnerTestId)).not.toBeInTheDocument();\n });\n });\n});\n"],"names":["render","_jsx"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ var basePath = 'https://assets.cdn.feather-insurance.com/assets/images';
2
+ var images = {
3
+ aid: basePath + "/aid.svg",
4
+ bed: basePath + "/bed.svg",
5
+ bigDog: basePath + "/bigDog.svg",
6
+ verticalIcons: {
7
+ dogLiability: basePath + "/dogLiabilityIcon.png",
8
+ dogLiability2x: basePath + "/dogLiabilityIcon2x.png",
9
+ dogLiability3x: basePath + "/dogLiabilityIcon3x.png",
10
+ lifeIcon: basePath + "/lifeIcon.png",
11
+ lifeIcon2x: basePath + "/lifeIcon2x.png",
12
+ lifeIcon3x: basePath + "/lifeIcon3x.png",
13
+ },
14
+ brokenAquarium: basePath + "/brokenAquarium.svg",
15
+ brokenGlass: basePath + "/brokenGlass.svg",
16
+ damagedLaptop: basePath + "/damagedLaptop.svg",
17
+ moneyIncome: basePath + "/moneyIncome.svg",
18
+ washingMachine: basePath + "/washingMachine.svg",
19
+ bill: basePath + "/bill.svg",
20
+ books: basePath + "/books.svg",
21
+ finalExpenses: basePath + "/finalExpenses.svg",
22
+ mortgage: basePath + "/mortgage.svg",
23
+ };
24
+
25
+ export { images as i };
26
+ //# sourceMappingURL=index-31224f74.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-31224f74.js","sources":["../../../src/lib/util/images/index.ts"],"sourcesContent":["const basePath = 'https://assets.cdn.feather-insurance.com/assets/images';\n\nconst images = {\n aid: `${basePath}/aid.svg`,\n bed: `${basePath}/bed.svg`,\n bigDog: `${basePath}/bigDog.svg`,\n verticalIcons: {\n dogLiability: `${basePath}/dogLiabilityIcon.png`,\n dogLiability2x: `${basePath}/dogLiabilityIcon2x.png`,\n dogLiability3x: `${basePath}/dogLiabilityIcon3x.png`,\n lifeIcon: `${basePath}/lifeIcon.png`,\n lifeIcon2x: `${basePath}/lifeIcon2x.png`,\n lifeIcon3x: `${basePath}/lifeIcon3x.png`,\n },\n brokenAquarium: `${basePath}/brokenAquarium.svg`,\n brokenGlass: `${basePath}/brokenGlass.svg`,\n damagedLaptop: `${basePath}/damagedLaptop.svg`,\n moneyIncome: `${basePath}/moneyIncome.svg`,\n washingMachine: `${basePath}/washingMachine.svg`,\n bill: `${basePath}/bill.svg`,\n books: `${basePath}/books.svg`,\n finalExpenses: `${basePath}/finalExpenses.svg`,\n mortgage: `${basePath}/mortgage.svg`,\n} as const;\n\nexport { images };\n"],"names":[],"mappings":"AAAA,IAAM,QAAQ,GAAG,wDAAwD,CAAC;IAEpE,MAAM,GAAG;IACb,GAAG,EAAK,QAAQ,aAAU;IAC1B,GAAG,EAAK,QAAQ,aAAU;IAC1B,MAAM,EAAK,QAAQ,gBAAa;IAChC,aAAa,EAAE;QACb,YAAY,EAAK,QAAQ,0BAAuB;QAChD,cAAc,EAAK,QAAQ,4BAAyB;QACpD,cAAc,EAAK,QAAQ,4BAAyB;QACpD,QAAQ,EAAK,QAAQ,kBAAe;QACpC,UAAU,EAAK,QAAQ,oBAAiB;QACxC,UAAU,EAAK,QAAQ,oBAAiB;KACzC;IACD,cAAc,EAAK,QAAQ,wBAAqB;IAChD,WAAW,EAAK,QAAQ,qBAAkB;IAC1C,aAAa,EAAK,QAAQ,uBAAoB;IAC9C,WAAW,EAAK,QAAQ,qBAAkB;IAC1C,cAAc,EAAK,QAAQ,wBAAqB;IAChD,IAAI,EAAK,QAAQ,cAAW;IAC5B,KAAK,EAAK,QAAQ,eAAY;IAC9B,aAAa,EAAK,QAAQ,uBAAoB;IAC9C,QAAQ,EAAK,QAAQ,kBAAe;;;;;"}