@popsure/dirty-swan 0.38.0 → 0.38.2

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 (27) hide show
  1. package/dist/cjs/index.js +22 -16
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/esm/components/autocompleteAddress/index.js +1 -1
  4. package/dist/esm/components/autocompleteAddress/index.js.map +1 -1
  5. package/dist/esm/components/autocompleteAddress/index.test.js +6 -6
  6. package/dist/esm/components/autocompleteAddress/index.test.js.map +1 -1
  7. package/dist/esm/components/button/index.js +1 -1
  8. package/dist/esm/components/button/index.js.map +1 -1
  9. package/dist/esm/components/icon/IconWrapper/IconWrapper.js +5 -2
  10. package/dist/esm/components/icon/IconWrapper/IconWrapper.js.map +1 -1
  11. package/dist/esm/components/icon/icons.stories.js +1 -1
  12. package/dist/esm/components/icon/index.stories.js +1 -1
  13. package/dist/esm/components/multiDropzone/index.js +15 -12
  14. package/dist/esm/components/multiDropzone/index.js.map +1 -1
  15. package/dist/esm/components/multiDropzone/index.test.js +71 -51
  16. package/dist/esm/components/multiDropzone/index.test.js.map +1 -1
  17. package/dist/esm/{index-38cf6d96.js → index-35a77b9b.js} +1 -1
  18. package/dist/esm/{index-38cf6d96.js.map → index-35a77b9b.js.map} +1 -1
  19. package/package.json +1 -1
  20. package/src/lib/components/autocompleteAddress/index.test.tsx +6 -6
  21. package/src/lib/components/autocompleteAddress/index.tsx +9 -5
  22. package/src/lib/components/button/index.tsx +2 -3
  23. package/src/lib/components/icon/IconWrapper/IconWrapper.tsx +5 -1
  24. package/src/lib/components/icon/IconWrapper/styles.module.scss +1 -1
  25. package/src/lib/components/multiDropzone/index.test.tsx +101 -81
  26. package/src/lib/components/multiDropzone/index.tsx +52 -40
  27. package/src/lib/components/multiDropzone/style.module.scss +2 -2
@@ -19,21 +19,21 @@ import '../../index-da10b7ad.js';
19
19
  var mockOnFileSelect = jest.fn();
20
20
  var mockOnRemoveFile = jest.fn();
21
21
  var file = new File(['DummyFile'], 'dummy.png', { type: 'image/png' });
22
- var inputTestId = "ds-drop-input";
23
- var spinnerTestId = "ds-filecell-spinner";
24
- var progressbarTestId = "ds-filecell-progressbar";
22
+ var inputTestId = 'ds-drop-input';
23
+ var spinnerTestId = 'ds-filecell-spinner';
24
+ var progressbarTestId = 'ds-filecell-progressbar';
25
25
  var uploadedFilesMock = {
26
- id: "123",
27
- name: "File name",
26
+ id: '123',
27
+ name: 'File name',
28
28
  progress: 100,
29
- type: "jpg",
29
+ type: 'jpg',
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
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
- it("should call onFileSelect on files change", function () { return __awaiter(void 0, void 0, void 0, function () {
36
+ it('should call onFileSelect on files change', function () { return __awaiter(void 0, void 0, void 0, function () {
37
37
  var _a, getByTestId, user, files;
38
38
  return __generator(this, function (_b) {
39
39
  switch (_b.label) {
@@ -49,14 +49,17 @@ describe('MultiDropzone component', function () {
49
49
  });
50
50
  }); });
51
51
  describe('Error states', function () {
52
- it("should show max files error message", function () {
52
+ it('should show max files error message', function () {
53
53
  var screen = setup({
54
54
  maxFiles: 1,
55
- uploadedFiles: [uploadedFilesMock, __assign(__assign({}, uploadedFilesMock), { id: "222" })],
55
+ uploadedFiles: [
56
+ uploadedFilesMock,
57
+ __assign(__assign({}, uploadedFilesMock), { id: '222' }),
58
+ ],
56
59
  });
57
- expect(screen.getByText("Too many files.")).toBeVisible();
60
+ expect(screen.getByText('Too many files.')).toBeVisible();
58
61
  });
59
- it("should show max file size error message", function () { return __awaiter(void 0, void 0, void 0, function () {
62
+ it('should show max file size error message', function () { return __awaiter(void 0, void 0, void 0, function () {
60
63
  var _a, getByTestId, getByText, user, bigFile;
61
64
  return __generator(this, function (_b) {
62
65
  switch (_b.label) {
@@ -67,17 +70,17 @@ describe('MultiDropzone component', function () {
67
70
  return [4 /*yield*/, user.upload(getByTestId(inputTestId), [bigFile])];
68
71
  case 1:
69
72
  _b.sent();
70
- expect(getByText("File is too large. It must be less than 10 Bytes.")).toBeInTheDocument();
73
+ expect(getByText('File is too large. It must be less than 10 Bytes.')).toBeInTheDocument();
71
74
  return [2 /*return*/];
72
75
  }
73
76
  });
74
77
  }); });
75
- it("should show wrong filetype error message", function () { return __awaiter(void 0, void 0, void 0, function () {
78
+ it('should show wrong filetype error message', function () { return __awaiter(void 0, void 0, void 0, function () {
76
79
  var _a, getByTestId, getByText, input;
77
80
  return __generator(this, function (_b) {
78
81
  switch (_b.label) {
79
82
  case 0:
80
- _a = setup({ accept: "document" }), getByTestId = _a.getByTestId, getByText = _a.getByText;
83
+ _a = setup({ accept: 'document' }), getByTestId = _a.getByTestId, getByText = _a.getByText;
81
84
  input = getByTestId(inputTestId);
82
85
  return [4 /*yield*/, act(function () { return __awaiter(void 0, void 0, void 0, function () {
83
86
  return __generator(this, function (_a) {
@@ -89,17 +92,19 @@ describe('MultiDropzone component', function () {
89
92
  }); })];
90
93
  case 1:
91
94
  _b.sent();
92
- expect(getByText("File type must be one of DOC, DOCX, PDF")).toBeInTheDocument();
95
+ expect(getByText('File type must be one of DOC, DOCX, PDF')).toBeInTheDocument();
93
96
  return [2 /*return*/];
94
97
  }
95
98
  });
96
99
  }); });
97
- it("should remove wrong filetype error message", function () { return __awaiter(void 0, void 0, void 0, function () {
100
+ it('should remove wrong filetype error message', function () { return __awaiter(void 0, void 0, void 0, function () {
98
101
  var _a, getByAltText, getByTestId, queryByText, user, input;
99
102
  return __generator(this, function (_b) {
100
103
  switch (_b.label) {
101
104
  case 0:
102
- _a = setup({ accept: "document" }), getByAltText = _a.getByAltText, getByTestId = _a.getByTestId, queryByText = _a.queryByText, user = _a.user;
105
+ _a = setup({
106
+ accept: 'document',
107
+ }), getByAltText = _a.getByAltText, getByTestId = _a.getByTestId, queryByText = _a.queryByText, user = _a.user;
103
108
  input = getByTestId(inputTestId);
104
109
  return [4 /*yield*/, act(function () { return __awaiter(void 0, void 0, void 0, function () {
105
110
  return __generator(this, function (_a) {
@@ -111,88 +116,103 @@ describe('MultiDropzone component', function () {
111
116
  }); })];
112
117
  case 1:
113
118
  _b.sent();
114
- return [4 /*yield*/, user.click(getByAltText("remove"))];
119
+ return [4 /*yield*/, user.click(getByAltText('remove'))];
115
120
  case 2:
116
121
  _b.sent();
117
- expect(queryByText("File type must be one of DOC, DOCX, PDF")).not.toBeInTheDocument();
122
+ expect(queryByText('File type must be one of DOC, DOCX, PDF')).not.toBeInTheDocument();
118
123
  return [2 /*return*/];
119
124
  }
120
125
  });
121
126
  }); });
122
127
  });
123
128
  describe('Copy text', function () {
124
- it("should show uploader text", function () {
129
+ it('should show uploader text', function () {
125
130
  var screen = setup({});
126
- expect(screen.getByText("Choose file or drag & drop")).toBeInTheDocument();
131
+ expect(screen.getByText('Choose file or drag & drop')).toBeInTheDocument();
127
132
  });
128
- it("should show uploader text translated", function () {
129
- var instructionsText = "Drag drop file";
133
+ it('should show uploader text translated', function () {
134
+ var instructionsText = 'Drag drop file';
130
135
  var screen = setup({
131
- textOverrides: { instructionsText: instructionsText }
136
+ textOverrides: { instructionsText: instructionsText },
132
137
  });
133
138
  expect(screen.getByText(instructionsText)).toBeInTheDocument();
134
139
  });
135
- it("should show image accept file type label", function () {
136
- var screen = setup({ accept: "image" });
137
- expect(screen.getByText("Supports HEIC, BMP, JPEG, JPG, PNG")).toBeInTheDocument();
140
+ it('should show image accept file type label', function () {
141
+ var screen = setup({ accept: 'image' });
142
+ expect(screen.getByText('Supports HEIC, BMP, JPEG, JPG, PNG')).toBeInTheDocument();
138
143
  });
139
- it("should show document accept file type label", function () {
140
- var screen = setup({ accept: "document" });
141
- expect(screen.getByText("Supports DOC, DOCX, PDF")).toBeInTheDocument();
144
+ it('should show document accept file type label', function () {
145
+ var screen = setup({ accept: 'document' });
146
+ expect(screen.getByText('Supports DOC, DOCX, PDF')).toBeInTheDocument();
142
147
  });
143
- it("should custom document accept file type label", function () {
144
- var screen = setup({ accept: {
145
- "application/pdf": [".pdf"],
146
- "image/jpg": [".jpg"],
147
- } });
148
- expect(screen.getByText("Supports PDF, JPG")).toBeInTheDocument();
148
+ it('should custom document accept file type label', function () {
149
+ var screen = setup({
150
+ accept: {
151
+ 'application/pdf': ['.pdf'],
152
+ 'image/jpg': ['.jpg'],
153
+ },
154
+ });
155
+ expect(screen.getByText('Supports PDF, JPG')).toBeInTheDocument();
149
156
  });
150
- it("should show disabled text if is uploading", function () {
157
+ it('should show disabled text if is uploading', function () {
151
158
  var screen = setup({ uploading: true });
152
- expect(screen.getByText("Please wait while uploading file...")).toBeInTheDocument();
159
+ expect(screen.getByText('Please wait while uploading file...')).toBeInTheDocument();
160
+ });
161
+ it('should associate input with its label', function () {
162
+ var getByLabelText = setup({}).getByLabelText;
163
+ var input = getByLabelText('Choose file or drag & drop');
164
+ expect(input).toBeInTheDocument();
153
165
  });
154
166
  });
155
167
  describe('Uploaded files', function () {
156
- it("should show uploaded files", function () {
168
+ it('should show uploaded files', function () {
157
169
  var screen = setup({
158
170
  uploadedFiles: [uploadedFilesMock],
159
171
  });
160
172
  expect(screen.getByText(uploadedFilesMock.name)).toBeInTheDocument();
161
173
  });
162
- it("should call onRemoveFile with uploaded file id", function () {
174
+ it('should call onRemoveFile with uploaded file id', function () {
163
175
  var screen = setup({
164
176
  uploadedFiles: [uploadedFilesMock],
165
177
  });
166
- screen.getByAltText("remove").click();
178
+ screen.getByAltText('remove').click();
167
179
  expect(mockOnRemoveFile).toBeCalledWith(uploadedFilesMock.id);
168
180
  });
169
- it("should show uploaded file with uploading label", function () {
181
+ it('should show uploaded file with uploading label', function () {
170
182
  var screen = setup({
171
183
  uploadedFiles: [__assign(__assign({}, uploadedFilesMock), { progress: 50 })],
172
184
  });
173
- expect(screen.getByText("Uploading...")).toBeInTheDocument();
185
+ expect(screen.getByText('Uploading...')).toBeInTheDocument();
174
186
  });
175
- it("should show uploaded file with progress bar", function () {
187
+ it('should show uploaded file with progress bar', function () {
176
188
  var screen = setup({
177
- uploadedFiles: [__assign(__assign({}, uploadedFilesMock), { progress: 50 })],
189
+ uploadedFiles: [
190
+ __assign(__assign({}, uploadedFilesMock), { progress: 50 }),
191
+ ],
178
192
  });
179
193
  expect(screen.getByTestId(progressbarTestId)).toBeInTheDocument();
180
194
  });
181
- it("should show uploaded file with no progress bar", function () {
195
+ it('should show uploaded file with no progress bar', function () {
182
196
  var screen = setup({
183
- uploadedFiles: [__assign(__assign({}, uploadedFilesMock), { progress: 50, showProgressBar: false })],
197
+ uploadedFiles: [
198
+ __assign(__assign({}, uploadedFilesMock), { progress: 50, showProgressBar: false }),
199
+ ],
184
200
  });
185
201
  expect(screen.queryByTestId(progressbarTestId)).not.toBeInTheDocument();
186
202
  });
187
- it("should show uploaded file with loading spinner", function () {
203
+ it('should show uploaded file with loading spinner', function () {
188
204
  var screen = setup({
189
- uploadedFiles: [__assign(__assign({}, uploadedFilesMock), { progress: 50, showLoadingSpinner: true })],
205
+ uploadedFiles: [
206
+ __assign(__assign({}, uploadedFilesMock), { progress: 50, showLoadingSpinner: true }),
207
+ ],
190
208
  });
191
209
  expect(screen.getByTestId(spinnerTestId)).toBeInTheDocument();
192
210
  });
193
- it("should show uploaded file with no loading spinner", function () {
211
+ it('should show uploaded file with no loading spinner', function () {
194
212
  var screen = setup({
195
- uploadedFiles: [__assign(__assign({}, uploadedFilesMock), { progress: 50, showLoadingSpinner: false })],
213
+ uploadedFiles: [
214
+ __assign(__assign({}, uploadedFilesMock), { progress: 50, showLoadingSpinner: false }),
215
+ ],
196
216
  });
197
217
  expect(screen.queryByTestId(spinnerTestId)).not.toBeInTheDocument();
198
218
  });
@@ -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"],"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: [\n uploadedFilesMock,\n {\n ...uploadedFilesMock,\n id: '222',\n },\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({\n accept: 'document',\n });\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(\n queryByText('File type must be one of DOC, DOCX, PDF')\n ).not.toBeInTheDocument();\n });\n });\n\n describe('Copy text', () => {\n it('should show uploader text', () => {\n const screen = setup({});\n\n expect(\n screen.getByText('Choose file or drag & drop')\n ).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(screen.getByText('Supports DOC, DOCX, PDF')).toBeInTheDocument();\n });\n\n it('should custom document accept file type label', () => {\n const screen = setup({\n accept: {\n 'application/pdf': ['.pdf'],\n 'image/jpg': ['.jpg'],\n },\n });\n\n expect(screen.getByText('Supports PDF, JPG')).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 it('should associate input with its label', () => {\n const { getByLabelText } = setup({});\n const input = getByLabelText('Choose file or drag & drop');\n\n expect(input).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(screen.getByText(uploadedFilesMock.name)).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 {\n ...uploadedFilesMock,\n progress: 50,\n },\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 {\n ...uploadedFilesMock,\n progress: 50,\n showProgressBar: false,\n },\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 {\n ...uploadedFilesMock,\n progress: 50,\n showLoadingSpinner: true,\n },\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 {\n ...uploadedFilesMock,\n progress: 50,\n showLoadingSpinner: false,\n },\n ],\n });\n\n expect(screen.queryByTestId(spinnerTestId)).not.toBeInTheDocument();\n });\n });\n});\n"],"names":["render","_jsx"],"mappings":"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"}
@@ -726,4 +726,4 @@ var icons = /*#__PURE__*/Object.freeze({
726
726
  });
727
727
 
728
728
  export { icons as i };
729
- //# sourceMappingURL=index-38cf6d96.js.map
729
+ //# sourceMappingURL=index-35a77b9b.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-38cf6d96.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index-35a77b9b.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@popsure/dirty-swan",
3
- "version": "0.38.0",
3
+ "version": "0.38.2",
4
4
  "author": "Vincent Audoire <vincent@getpopsure.com>",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -62,13 +62,13 @@ describe('AutocompleteAddress component', () => {
62
62
  });
63
63
 
64
64
  expect(getAllByTestId(inputTestId).length).toEqual(5);
65
- expect(getByDisplayValue("Köpeniker Strasse")).toBeVisible();
65
+ expect(getByDisplayValue('Köpeniker Strasse')).toBeVisible();
66
66
  });
67
67
 
68
68
  it('Should enable to enter the address manually', async () => {
69
69
  const callback = jest.fn();
70
70
  const { findByText, getAllByTestId, user } = setup(undefined, callback);
71
- const btn = await findByText('Enter address manually');
71
+ const btn = await findByText('enter address manually');
72
72
 
73
73
  await user.click(btn);
74
74
 
@@ -87,9 +87,9 @@ describe('AutocompleteAddress component', () => {
87
87
  it('Should prefill fields if an address is provided', async () => {
88
88
  const { getByDisplayValue } = setup(address);
89
89
 
90
- expect(getByDisplayValue("Köpeniker Strasse")).toBeVisible();
91
- expect(getByDisplayValue("4000")).toBeVisible();
92
- expect(getByDisplayValue("10179")).toBeVisible();
93
- expect(getByDisplayValue("Berlin")).toBeVisible();
90
+ expect(getByDisplayValue('Köpeniker Strasse')).toBeVisible();
91
+ expect(getByDisplayValue('4000')).toBeVisible();
92
+ expect(getByDisplayValue('10179')).toBeVisible();
93
+ expect(getByDisplayValue('Berlin')).toBeVisible();
94
94
  });
95
95
  });
@@ -239,7 +239,10 @@ const AutocompleteAddress = ({
239
239
  ref={autocompleteElement}
240
240
  />
241
241
  {hasLoadedGoogleAPI === false && (
242
- <div data-cy="google-api-loader" className={styles['loading-spinner']}>
242
+ <div
243
+ data-cy="google-api-loader"
244
+ className={styles['loading-spinner']}
245
+ >
243
246
  <div className="ds-spinner ds-spinner__m" />
244
247
  </div>
245
248
  )}
@@ -339,12 +342,13 @@ const AutocompleteAddress = ({
339
342
  {manualAddressEntry === false && (
340
343
  <div className="p-p mt8">
341
344
  {manualAddressEntryTexts?.preText || 'Or '}
342
- <span
343
- className="p-a fw-bold c-pointer"
345
+ <button
346
+ className={'p-a p-p fw-bold c-pointer bg-transparent'}
344
347
  onClick={handleEnterAddressManually}
348
+ type="button"
345
349
  >
346
- {manualAddressEntryTexts?.cta || 'Enter address manually'}
347
- </span>
350
+ {manualAddressEntryTexts?.cta || 'enter address manually'}
351
+ </button>
348
352
  </div>
349
353
  )}
350
354
  </>
@@ -22,7 +22,7 @@ interface Icon {
22
22
  alt: string;
23
23
  }
24
24
 
25
- type InputProps = {
25
+ type ButtonProps = {
26
26
  buttonTitle: string;
27
27
  buttonType?: ButtonType;
28
28
  leftIcon?: Icon;
@@ -37,9 +37,8 @@ export default React.forwardRef(
37
37
  buttonTitle,
38
38
  buttonType = 'primary',
39
39
  leftIcon,
40
- type,
41
40
  ...props
42
- }: InputProps,
41
+ }: ButtonProps,
43
42
  ref?: React.ForwardedRef<HTMLButtonElement>
44
43
  ) => {
45
44
  const buttonClassName = buttonTypeClassNameMap[buttonType];
@@ -21,8 +21,12 @@ const IconWrapper = ({
21
21
  className={classNames('d-inline-block', styles.wrapper, className ?? '', {
22
22
  [`tc-${color}`]: !!color,
23
23
  })}
24
+ style={{
25
+ width: `${size}px`,
26
+ height: `${size}px`
27
+ }}
24
28
  >
25
- <svg width={size} height={size} viewBox="0 0 24 24" fill="none">
29
+ <svg className='w100' viewBox="0 0 24 24" fill="none">
26
30
  {children}
27
31
  </svg>
28
32
  </span>
@@ -1,3 +1,3 @@
1
1
  .wrapper {
2
- margin: 4px;
2
+ padding: 4px;
3
3
  }