@popsure/dirty-swan 0.28.0 → 0.28.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 (102) hide show
  1. package/dist/cjs/index.d.ts +1 -1
  2. package/dist/cjs/index.js +174 -155
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/lib/components/comparisonTable/components/TableButton/index.d.ts +7 -0
  5. package/dist/cjs/lib/components/comparisonTable/components/TableButton/index.test.d.ts +1 -0
  6. package/dist/cjs/lib/components/comparisonTable/components/TableRowHeader/index.d.ts +7 -5
  7. package/dist/cjs/lib/components/comparisonTable/components/TableRowHeader/index.test.d.ts +1 -0
  8. package/dist/cjs/lib/components/comparisonTable/index.d.ts +2 -1
  9. package/dist/cjs/lib/components/multiDropzone/types.d.ts +17 -5
  10. package/dist/cjs/lib/index.d.ts +4 -3
  11. package/dist/esm/{_commonjsHelpers-0f86abda.js → _commonjsHelpers-e7f67fd8.js} +2 -2
  12. package/dist/esm/_commonjsHelpers-e7f67fd8.js.map +1 -0
  13. package/dist/esm/components/autocompleteAddress/demo.js +2 -2
  14. package/dist/esm/components/autocompleteAddress/demo.js.map +1 -1
  15. package/dist/esm/components/autocompleteAddress/index.js +2 -2
  16. package/dist/esm/components/autocompleteAddress/index.js.map +1 -1
  17. package/dist/esm/components/autocompleteAddress/index.test.js +3 -3
  18. package/dist/esm/components/autocompleteAddress/index.test.js.map +1 -1
  19. package/dist/esm/components/button/index.js.map +1 -1
  20. package/dist/esm/components/cards/index.js.map +1 -1
  21. package/dist/esm/components/chip/index.js.map +1 -1
  22. package/dist/esm/components/comparisonTable/components/AccordionItem/AccordionItem.js.map +1 -1
  23. package/dist/esm/components/comparisonTable/components/Chevron.js.map +1 -1
  24. package/dist/esm/components/comparisonTable/components/Row/index.js.map +1 -1
  25. package/dist/esm/components/comparisonTable/components/TableArrows/Arrow.js.map +1 -1
  26. package/dist/esm/components/comparisonTable/components/TableArrows/index.js.map +1 -1
  27. package/dist/esm/components/comparisonTable/components/TableButton/index.js +15 -0
  28. package/dist/esm/components/comparisonTable/components/TableButton/index.js.map +1 -0
  29. package/dist/esm/components/comparisonTable/components/TableButton/index.test.js +37 -0
  30. package/dist/esm/components/comparisonTable/components/TableButton/index.test.js.map +1 -0
  31. package/dist/esm/components/comparisonTable/components/TableInfoButton/index.js.map +1 -1
  32. package/dist/esm/components/comparisonTable/components/TableRating/StarIcon.js.map +1 -1
  33. package/dist/esm/components/comparisonTable/components/TableRating/ZapIcon.js.map +1 -1
  34. package/dist/esm/components/comparisonTable/components/TableRating/index.js.map +1 -1
  35. package/dist/esm/components/comparisonTable/components/TableRowHeader/index.js +5 -9
  36. package/dist/esm/components/comparisonTable/components/TableRowHeader/index.js.map +1 -1
  37. package/dist/esm/components/comparisonTable/components/TableRowHeader/index.test.js +82 -0
  38. package/dist/esm/components/comparisonTable/components/TableRowHeader/index.test.js.map +1 -0
  39. package/dist/esm/components/comparisonTable/components/TableTrueFalse.js.map +1 -1
  40. package/dist/esm/components/comparisonTable/index.js +3 -2
  41. package/dist/esm/components/comparisonTable/index.js.map +1 -1
  42. package/dist/esm/components/dateSelector/index.js +1 -1
  43. package/dist/esm/components/dateSelector/index.js.map +1 -1
  44. package/dist/esm/components/downloadButton/index.js.map +1 -1
  45. package/dist/esm/components/input/autoSuggestInput/index.js.map +1 -1
  46. package/dist/esm/components/input/autoSuggestMultiSelect/index.js.map +1 -1
  47. package/dist/esm/components/input/currency/index.js.map +1 -1
  48. package/dist/esm/components/input/currency/index.test.js +2 -2
  49. package/dist/esm/components/input/currency/index.test.js.map +1 -1
  50. package/dist/esm/components/input/iban/index.js.map +1 -1
  51. package/dist/esm/components/input/index.js.map +1 -1
  52. package/dist/esm/components/markdown/index.js +1 -1
  53. package/dist/esm/components/markdown/index.js.map +1 -1
  54. package/dist/esm/components/modal/bottomModal/index.js.map +1 -1
  55. package/dist/esm/components/modal/bottomOrRegularModal/index.js.map +1 -1
  56. package/dist/esm/components/modal/regularModal/index.js.map +1 -1
  57. package/dist/esm/components/multiDropzone/index.js +18 -6
  58. package/dist/esm/components/multiDropzone/index.js.map +1 -1
  59. package/dist/esm/components/multiDropzone/index.test.js +5 -7405
  60. package/dist/esm/components/multiDropzone/index.test.js.map +1 -1
  61. package/dist/esm/components/segmentedControl/index.js.map +1 -1
  62. package/dist/esm/components/segmentedControl/index.test.js +2 -2
  63. package/dist/esm/components/segmentedControl/index.test.js.map +1 -1
  64. package/dist/esm/components/signaturePad/index.js.map +1 -1
  65. package/dist/esm/{customRender-39982d87.js → customRender-4157fcff.js} +2 -2
  66. package/dist/esm/{customRender-39982d87.js.map → customRender-4157fcff.js.map} +1 -1
  67. package/dist/esm/extend-expect-46bdce4a.js +7406 -0
  68. package/dist/esm/extend-expect-46bdce4a.js.map +1 -0
  69. package/dist/esm/{index-51913e93.js → index-1463d5e9.js} +2 -2
  70. package/dist/esm/{index-51913e93.js.map → index-1463d5e9.js.map} +1 -1
  71. package/dist/esm/index-47663d39.js.map +1 -1
  72. package/dist/esm/index-be398f1d.js.map +1 -1
  73. package/dist/esm/index.d.ts +1 -1
  74. package/dist/esm/index.js +3 -2
  75. package/dist/esm/index.js.map +1 -1
  76. package/dist/esm/lib/components/comparisonTable/components/TableButton/index.d.ts +7 -0
  77. package/dist/esm/lib/components/comparisonTable/components/TableButton/index.test.d.ts +1 -0
  78. package/dist/esm/lib/components/comparisonTable/components/TableRowHeader/index.d.ts +7 -5
  79. package/dist/esm/lib/components/comparisonTable/components/TableRowHeader/index.test.d.ts +1 -0
  80. package/dist/esm/lib/components/comparisonTable/index.d.ts +2 -1
  81. package/dist/esm/lib/components/multiDropzone/types.d.ts +17 -5
  82. package/dist/esm/lib/index.d.ts +4 -3
  83. package/dist/esm/mapStyle-1288a869.js.map +1 -1
  84. package/dist/esm/scss/private/base/demo.js.map +1 -1
  85. package/dist/esm/scss/public/demo.js.map +1 -1
  86. package/dist/esm/useOnClose-54f9e6b9.js.map +1 -1
  87. package/dist/esm/util/testUtils/customRender.js +2 -2
  88. package/package.json +1 -1
  89. package/src/index.tsx +1 -0
  90. package/src/lib/components/comparisonTable/components/TableButton/index.test.tsx +28 -0
  91. package/src/lib/components/comparisonTable/components/TableButton/index.tsx +22 -0
  92. package/src/lib/components/comparisonTable/components/TableButton/style.module.scss +18 -0
  93. package/src/lib/components/comparisonTable/components/TableRowHeader/index.test.tsx +78 -0
  94. package/src/lib/components/comparisonTable/components/TableRowHeader/index.tsx +20 -25
  95. package/src/lib/components/comparisonTable/index.stories.mdx +13 -5
  96. package/src/lib/components/comparisonTable/index.tsx +2 -0
  97. package/src/lib/components/multiDropzone/index.tsx +2 -2
  98. package/src/lib/components/multiDropzone/types.ts +20 -6
  99. package/src/lib/components/multiDropzone/utils/index.test.ts +2 -2
  100. package/src/lib/components/multiDropzone/utils/index.ts +8 -6
  101. package/src/lib/index.tsx +15 -1
  102. package/dist/esm/_commonjsHelpers-0f86abda.js.map +0 -1
@@ -0,0 +1,78 @@
1
+ import { render } from '../../../../util/testUtils';
2
+ import '@testing-library/jest-dom';
3
+
4
+ import TableRowHeader, { TableRowHeaderProps } from '.';
5
+
6
+ const mockOnClick = jest.fn();
7
+
8
+ const label = "Table label";
9
+ const subtitle = "Subtitle label";
10
+ const icon = "🎉";
11
+ const buttonTestId = "ds-table-button";
12
+
13
+ const setup = (props: Partial<TableRowHeaderProps> = {}) => render(
14
+ <TableRowHeader
15
+ label={label}
16
+ {...props}
17
+ />
18
+ );
19
+
20
+ describe('TableRowHeader component', () => {
21
+ it("should render label", () => {
22
+ const { getByText } = setup();
23
+
24
+ expect(getByText(label)).toBeInTheDocument();
25
+ });
26
+
27
+ it("should not render subtitle", () => {
28
+ const { queryByText } = setup();
29
+
30
+ expect(queryByText(subtitle)).not.toBeInTheDocument();
31
+ });
32
+
33
+ it("should render subtitle", () => {
34
+ const { getByText } = setup({ subtitle });
35
+
36
+ expect(getByText(subtitle)).toBeInTheDocument();
37
+ });
38
+
39
+ it("should not render icon", () => {
40
+ const { queryByText } = setup();
41
+
42
+ expect(queryByText(icon)).not.toBeInTheDocument();
43
+ });
44
+
45
+ it("should render icon", () => {
46
+ const { getByText } = setup({ icon });
47
+
48
+ expect(getByText(icon)).toBeInTheDocument();
49
+ });
50
+
51
+ it("should not render button if onClickInfo is not defined", () => {
52
+ const { queryByTestId } = setup();
53
+
54
+ expect(queryByTestId(buttonTestId)).not.toBeInTheDocument();
55
+ });
56
+
57
+ it("should render button if onClickInfo is defined", () => {
58
+ const { getByTestId } = setup({ onClickInfo: mockOnClick });
59
+
60
+ expect(getByTestId(buttonTestId)).toBeInTheDocument();
61
+ });
62
+
63
+ it("should not call onClickInfo if not defined", async () => {
64
+ const { getByText, user } = setup();
65
+
66
+ await user.click(getByText(label));
67
+
68
+ expect(mockOnClick).not.toHaveBeenCalled();
69
+ });
70
+
71
+ it("should call onClickInfo if defined", async () => {
72
+ const { getByText, user } = setup({ onClickInfo: mockOnClick });
73
+
74
+ await user.click(getByText(label));
75
+
76
+ expect(mockOnClick).toHaveBeenCalled();
77
+ });
78
+ });
@@ -1,35 +1,30 @@
1
- import React from 'react';
2
- import classNames from 'classnames';
3
-
4
- import TableInfoButton from '../TableInfoButton';
5
-
1
+ import TableButton from '../TableButton';
6
2
  import styles from './style.module.scss';
7
3
 
8
- const TableRowHeader = (props: {
4
+ interface TableRowHeaderProps {
9
5
  label: string;
10
6
  icon?: string;
11
7
  subtitle?: string;
12
8
  onClickInfo?: () => void;
13
- }) => {
14
- const { icon, label, subtitle, onClickInfo } = props;
15
- return (
16
- <div className="d-flex">
17
- <span className={`mr8 ${styles.icon}`}>{icon}</span>
18
- <div>
19
- <p className="p-p d-inline">
20
- <span
21
- className={classNames({
22
- mr8: onClickInfo,
23
- })}
24
- >
9
+ }
10
+
11
+ const TableRowHeader = ({ icon, label, subtitle, onClickInfo }: TableRowHeaderProps) => (
12
+ <div className="d-flex">
13
+ {icon && <span className={`mr8 ${styles.icon}`}>{icon}</span>}
14
+ <div>
15
+ <p className="p-p d-inline">
16
+ {!onClickInfo ? (
17
+ <span>{label}</span>
18
+ ) : (
19
+ <TableButton className="mr8" onClick={onClickInfo}>
25
20
  {label}
26
- </span>
27
- {onClickInfo && <TableInfoButton onClick={onClickInfo} />}
28
- </p>
29
- {subtitle && <p className="p-p--small tc-grey-500">{subtitle}</p>}
30
- </div>
21
+ </TableButton>
22
+ )}
23
+ </p>
24
+ {subtitle && <p className="p-p--small tc-grey-500">{subtitle}</p>}
31
25
  </div>
32
- );
33
- };
26
+ </div>
27
+ );
34
28
 
29
+ export type { TableRowHeaderProps };
35
30
  export default TableRowHeader;
@@ -1,6 +1,6 @@
1
1
  import { Meta, Preview } from '@storybook/addon-docs/blocks';
2
2
 
3
- import { ComparisonTable, TableRating, TableTrueFalse } from '.';
3
+ import { ComparisonTable, TableRating, TableRowHeader, TableButton, TableTrueFalse } from '.';
4
4
 
5
5
  <Meta title="JSX/Comparison Table" component={ComparisonTable} />
6
6
 
@@ -81,8 +81,12 @@ export const ComparisonTableWithData = () => {
81
81
  {
82
82
  id: 3,
83
83
  key: 'rating',
84
- label: 'Our rating',
85
- render: (value) => <TableRating type="star" rating={value} />,
84
+ label: <TableRowHeader label="Our Rating" onClickInfo={console.log} />,
85
+ render: (value) => (
86
+ <TableButton className="jc-center" onClick={console.log}>
87
+ <TableRating type="star" rating={value} />
88
+ </TableButton>
89
+ ),
86
90
  },
87
91
  {
88
92
  id: 5,
@@ -297,8 +301,12 @@ export const ComparisonTableWithData = () => {
297
301
  {
298
302
  id: 3,
299
303
  key: 'rating',
300
- label: 'Our rating',
301
- render: (value) => <TableRating type="star" rating={value} />,
304
+ label: <TableRowHeader label="Our Rating" onClickInfo={console.log} />,
305
+ render: (value) => (
306
+ <TableButton className="jc-center" onClick={console.log}>
307
+ <TableRating type="star" rating={value} />
308
+ </TableButton>
309
+ ),
302
310
  },
303
311
  {
304
312
  id: 5,
@@ -5,6 +5,7 @@ import { AccordionItem } from './components/AccordionItem';
5
5
  import Chevron from './components/Chevron';
6
6
  import Row from './components/Row';
7
7
  import TableArrows from './components/TableArrows';
8
+ import TableButton from './components/TableButton';
8
9
  import TableInfoButton from './components/TableInfoButton';
9
10
  import TableRating from './components/TableRating';
10
11
  import TableRowHeader from './components/TableRowHeader';
@@ -257,6 +258,7 @@ const ComparisonTable = <T extends { id: number }>(
257
258
 
258
259
  export {
259
260
  ComparisonTable,
261
+ TableButton,
260
262
  TableInfoButton,
261
263
  TableRating,
262
264
  TableRowHeader,
@@ -16,11 +16,12 @@ import {
16
16
  import {
17
17
  AcceptType,
18
18
  ErrorMessage,
19
- FileType,
19
+ FileType,
20
20
  TextOverrides,
21
21
  UploadedFile,
22
22
  UploadStatus
23
23
  } from './types';
24
+
24
25
  import { formatBytes } from '../../util/formatBytes';
25
26
 
26
27
  interface MultiDropzoneProps {
@@ -125,7 +126,6 @@ const placeholder = `${textOverrides?.supportsTextShort || "Supports"} ${fileLis
125
126
  id,
126
127
  name: message,
127
128
  progress: 0,
128
- type: "",
129
129
  }}
130
130
  key={id}
131
131
  onRemoveFile={() => removeError(id)}
@@ -1,17 +1,30 @@
1
1
  import { Accept } from "react-dropzone";
2
2
 
3
- export type UploadStatus = 'UPLOADING' | 'COMPLETE' | 'ERROR';
3
+ export enum FileMimeTypes {
4
+ bmp = "image/bmp",
5
+ doc = "application/msword",
6
+ docx = "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
7
+ heic = "image/heic",
8
+ jpeg = "image/jpeg",
9
+ jpg = "image/jpg",
10
+ pdf = "application/pdf",
11
+ png = "image/png",
12
+ tif = "image/tiff",
13
+ tiff = "image/tiff",
14
+ webp = "image/webp",
15
+ }
4
16
 
5
- export const DOCUMENT_FILES = ['doc', 'docx', 'pdf'];
6
- export const IMAGE_FILES = ['heic', 'bmp', 'jpeg', 'jpg', 'png'];
17
+ export type FileType = keyof typeof FileMimeTypes;
7
18
 
8
- export const FILE_TYPES = [...DOCUMENT_FILES, ...IMAGE_FILES];
9
- export type FileType = typeof FILE_TYPES[number];
19
+ export type UploadStatus = 'UPLOADING' | 'COMPLETE' | 'ERROR';
20
+
21
+ export const DOCUMENT_FILES: FileType[] = ['doc', 'docx', 'pdf'];
22
+ export const IMAGE_FILES: FileType[] = ['heic', 'bmp', 'jpeg', 'jpg', 'png'];
10
23
 
11
24
  export interface UploadedFile {
12
25
  id: string;
13
26
  name: string;
14
- type: FileType | string;
27
+ type?: FileType;
15
28
  previewUrl?: string;
16
29
  progress: number;
17
30
  error?: string;
@@ -20,6 +33,7 @@ export interface UploadedFile {
20
33
  }
21
34
 
22
35
  export type AcceptType = "document" | "image" | Accept;
36
+
23
37
  export interface TextOverrides {
24
38
  currentlyUploadingText?: string;
25
39
  fileTypeError?: string;
@@ -7,8 +7,8 @@ import {
7
7
  } from '.';
8
8
 
9
9
  const documentsAccept = {
10
- 'application/doc': ['.doc'],
11
- 'application/docx': ['.docx'],
10
+ 'application/msword': ['.doc'],
11
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': ['.docx'],
12
12
  'application/pdf': ['.pdf']
13
13
  };
14
14
 
@@ -3,10 +3,12 @@ import { formatBytes } from "../../../util/formatBytes";
3
3
  import {
4
4
  AcceptType,
5
5
  DOCUMENT_FILES,
6
- FileType,
6
+ FileMimeTypes,
7
+ FileType,
7
8
  IMAGE_FILES,
8
9
  TextOverrides,
9
- UploadStatus } from "../types";
10
+ UploadStatus
11
+ } from "../types";
10
12
 
11
13
  export const getUploadStatus = (progress: number, error?: string): UploadStatus => {
12
14
  if (error) {
@@ -20,18 +22,18 @@ export const getUploadStatus = (progress: number, error?: string): UploadStatus
20
22
  return 'COMPLETE';
21
23
  };
22
24
 
23
- const formatMimeType = (type: string, values: FileType[]): Accept => {
25
+ const formatMimeType = (values: FileType[]): Accept => {
24
26
  const formatedValues = {} as Accept;
25
27
 
26
28
  values.forEach((value) => {
27
- formatedValues[`${type}/${value}`] = [`.${value}`];
29
+ formatedValues[FileMimeTypes[value]] = [`.${value}`];
28
30
  });
29
31
 
30
32
  return formatedValues;
31
33
  };
32
34
 
33
- export const DOCUMENT_FILES_ACCEPT = formatMimeType("application", DOCUMENT_FILES);
34
- export const IMAGE_FILES_ACCEPT = formatMimeType("image", IMAGE_FILES);
35
+ export const DOCUMENT_FILES_ACCEPT = formatMimeType(DOCUMENT_FILES);
36
+ export const IMAGE_FILES_ACCEPT = formatMimeType(IMAGE_FILES);
35
37
 
36
38
  export const getFormattedAcceptObject = (accept: AcceptType = {}): Accept => {
37
39
  if (accept === "document") {
package/src/lib/index.tsx CHANGED
@@ -2,7 +2,12 @@ import DateSelector from './components/dateSelector';
2
2
  import SignaturePad from './components/signaturePad';
3
3
  import AutocompleteAddress from './components/autocompleteAddress';
4
4
  import Input from './components/input';
5
- import MultiDropzone from './components/multiDropzone';
5
+ import MultiDropzone, {
6
+ FileType,
7
+ MultiDropzoneProps,
8
+ UploadedFile,
9
+ UploadStatus
10
+ } from './components/multiDropzone';
6
11
  import DownloadButton from './components/downloadButton';
7
12
  import IbanInput from './components/input/iban';
8
13
  import CurrencyInput from './components/input/currency';
@@ -27,12 +32,20 @@ import {
27
32
  TableRating,
28
33
  TableTrueFalse,
29
34
  TableRowHeader,
35
+ TableButton,
30
36
  TableInfoButton,
31
37
  TableHeader,
32
38
  } from './components/comparisonTable';
33
39
  import SegmentedControl from './components/segmentedControl';
34
40
  import Markdown from './components/markdown';
35
41
 
42
+ export type {
43
+ FileType,
44
+ MultiDropzoneProps,
45
+ UploadedFile,
46
+ UploadStatus
47
+ };
48
+
36
49
  export {
37
50
  DateSelector,
38
51
  SignaturePad,
@@ -58,6 +71,7 @@ export {
58
71
  TableRating,
59
72
  TableTrueFalse,
60
73
  TableRowHeader,
74
+ TableButton,
61
75
  TableInfoButton,
62
76
  SegmentedControl,
63
77
  Markdown,
@@ -1 +0,0 @@
1
- {"version":3,"file":"_commonjsHelpers-0f86abda.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}