@popsure/dirty-swan 0.66.28 → 0.66.30
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.
- package/dist/cjs/index.js +12 -12
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/components/dateSelector/index.d.ts +0 -1
- package/dist/cjs/lib/components/downloadButton/index.test.d.ts +1 -0
- package/dist/cjs/lib/components/input/autoSuggestInput/index.test.d.ts +1 -0
- package/dist/cjs/lib/components/table/components/TableCell/BaseCell/BaseCell.d.ts +0 -1
- package/dist/cjs/lib/components/table/components/TableCell/ButtonCell/ButtonCell.d.ts +1 -2
- package/dist/cjs/lib/components/table/components/TableCell/ButtonCell/ButtonCell.stories.d.ts +1 -1
- package/dist/cjs/lib/components/table/components/TableCell/CTACell/CTACell.d.ts +1 -2
- package/dist/cjs/lib/components/table/components/TableCell/CTACell/CTACell.stories.d.ts +1 -1
- package/dist/esm/components/autocompleteAddress/index.js +2 -2
- package/dist/esm/components/autocompleteAddress/index.js.map +1 -1
- package/dist/esm/components/autocompleteAddress/index.test.js +21 -12
- package/dist/esm/components/autocompleteAddress/index.test.js.map +1 -1
- package/dist/esm/components/dateSelector/index.js +1 -1
- package/dist/esm/components/dateSelector/index.js.map +1 -1
- package/dist/esm/components/downloadButton/index.js +1 -1
- package/dist/esm/components/downloadButton/index.js.map +1 -1
- package/dist/esm/components/downloadButton/index.test.js +25 -0
- package/dist/esm/components/downloadButton/index.test.js.map +1 -0
- package/dist/esm/components/input/autoSuggestInput/index.js +1 -1
- package/dist/esm/components/input/autoSuggestInput/index.js.map +1 -1
- package/dist/esm/components/input/autoSuggestInput/index.test.js +24 -0
- package/dist/esm/components/input/autoSuggestInput/index.test.js.map +1 -0
- package/dist/esm/components/input/checkbox/index.js +1 -1
- package/dist/esm/components/input/checkbox/index.js.map +1 -1
- package/dist/esm/components/input/radio/index.js +1 -1
- package/dist/esm/components/input/radio/index.js.map +1 -1
- package/dist/esm/components/input/toggle/index.js +1 -1
- package/dist/esm/components/input/toggle/index.js.map +1 -1
- package/dist/esm/components/table/components/TableCell/BaseCell/BaseCell.js.map +1 -1
- package/dist/esm/components/table/components/TableCell/ButtonCell/ButtonCell.js +2 -2
- package/dist/esm/components/table/components/TableCell/ButtonCell/ButtonCell.js.map +1 -1
- package/dist/esm/components/table/components/TableCell/CTACell/CTACell.js +2 -2
- package/dist/esm/components/table/components/TableCell/CTACell/CTACell.js.map +1 -1
- package/dist/esm/lib/components/dateSelector/index.d.ts +0 -1
- package/dist/esm/lib/components/downloadButton/index.test.d.ts +1 -0
- package/dist/esm/lib/components/input/autoSuggestInput/index.test.d.ts +1 -0
- package/dist/esm/lib/components/table/components/TableCell/BaseCell/BaseCell.d.ts +0 -1
- package/dist/esm/lib/components/table/components/TableCell/ButtonCell/ButtonCell.d.ts +1 -2
- package/dist/esm/lib/components/table/components/TableCell/ButtonCell/ButtonCell.stories.d.ts +1 -1
- package/dist/esm/lib/components/table/components/TableCell/CTACell/CTACell.d.ts +1 -2
- package/dist/esm/lib/components/table/components/TableCell/CTACell/CTACell.stories.d.ts +1 -1
- package/package.json +1 -1
- package/src/lib/components/autocompleteAddress/index.test.tsx +17 -11
- package/src/lib/components/autocompleteAddress/index.tsx +7 -7
- package/src/lib/components/dateSelector/index.tsx +0 -2
- package/src/lib/components/downloadButton/index.test.tsx +22 -0
- package/src/lib/components/downloadButton/index.tsx +1 -1
- package/src/lib/components/input/autoSuggestInput/index.test.tsx +22 -0
- package/src/lib/components/input/autoSuggestInput/index.tsx +1 -1
- package/src/lib/components/input/checkbox/index.tsx +0 -1
- package/src/lib/components/input/radio/index.tsx +0 -1
- package/src/lib/components/input/toggle/index.tsx +0 -1
- package/src/lib/components/table/components/TableCell/BaseCell/BaseCell.tsx +0 -1
- package/src/lib/components/table/components/TableCell/ButtonCell/ButtonCell.tsx +0 -3
- package/src/lib/components/table/components/TableCell/CTACell/CTACell.tsx +0 -3
|
@@ -23,7 +23,7 @@ var AutoSuggestInput = function (_a) {
|
|
|
23
23
|
_a)), children: suggestion.value })] }));
|
|
24
24
|
};
|
|
25
25
|
var getSuggestionValue = function (suggestion) { return suggestion.value; };
|
|
26
|
-
var renderInputComponent = function (autoSuggestInputProps) { return (jsx(Input, __assign({}, autoSuggestInputProps, { placeholder: placeholder, "data-
|
|
26
|
+
var renderInputComponent = function (autoSuggestInputProps) { return (jsx(Input, __assign({}, autoSuggestInputProps, { placeholder: placeholder, "data-testid": "suggest-multi-select-input" }))); };
|
|
27
27
|
return (jsx("div", { className: className, children: jsx(Autosuggest, { theme: styles, suggestions: suggestions, onSuggestionsFetchRequested: handleSuggestionFetchRequest, onSuggestionsClearRequested: handleSuggestionClearRequest, getSuggestionValue: getSuggestionValue, renderSuggestion: renderSuggestion, highlightFirstSuggestion: true, inputProps: __assign(__assign({}, inputProps), { value: currentOption, onChange: function (_, _a) {
|
|
28
28
|
var newValue = _a.newValue;
|
|
29
29
|
onChange(newValue);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/lib/components/input/autoSuggestInput/index.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport Autosuggest, { RenderInputComponentProps } from 'react-autosuggest';\n\nimport styles from './style.module.scss';\nimport { Option } from '../../../models/autoSuggestInput';\nimport { Input, InputProps } from '../index';\n\nexport interface AutoSuggestInputProps {\n currentOption: string;\n suggestions: Option[];\n handleSuggestionSelected: (value: Option) => void;\n onChange: (value: string) => void;\n handleSuggestionFetchRequest: (value: Option) => void;\n handleSuggestionClearRequest: () => void;\n placeholder: string;\n className?: string;\n wrapText?: boolean;\n inputProps?: Omit<RenderInputComponentProps, 'value' | 'onChange'>;\n}\n\nexport const AutoSuggestInput = ({\n currentOption,\n suggestions,\n handleSuggestionSelected,\n onChange,\n handleSuggestionFetchRequest,\n handleSuggestionClearRequest,\n placeholder,\n className,\n wrapText,\n inputProps\n}: AutoSuggestInputProps) => {\n const renderSuggestion = (suggestion: Option) => (\n <div className={`${styles['suggestion-option']}`}>\n {suggestion.leftIcon && (\n <img\n className={`mr16 ${styles['suggestion-img']}`}\n src={suggestion.leftIcon}\n alt={suggestion.value}\n />\n )}\n <div\n className={classNames(styles['suggestion-text'], {\n [styles.nowrap]: !wrapText,\n })}\n >\n {suggestion.value}\n </div>\n </div>\n );\n\n const getSuggestionValue = (suggestion: Option) => suggestion.value;\n\n const renderInputComponent = (autoSuggestInputProps: Omit<InputProps, 'ref'>) => (\n <Input\n {...autoSuggestInputProps}\n placeholder={placeholder}\n data-
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/lib/components/input/autoSuggestInput/index.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport Autosuggest, { RenderInputComponentProps } from 'react-autosuggest';\n\nimport styles from './style.module.scss';\nimport { Option } from '../../../models/autoSuggestInput';\nimport { Input, InputProps } from '../index';\n\nexport interface AutoSuggestInputProps {\n currentOption: string;\n suggestions: Option[];\n handleSuggestionSelected: (value: Option) => void;\n onChange: (value: string) => void;\n handleSuggestionFetchRequest: (value: Option) => void;\n handleSuggestionClearRequest: () => void;\n placeholder: string;\n className?: string;\n wrapText?: boolean;\n inputProps?: Omit<RenderInputComponentProps, 'value' | 'onChange'>;\n}\n\nexport const AutoSuggestInput = ({\n currentOption,\n suggestions,\n handleSuggestionSelected,\n onChange,\n handleSuggestionFetchRequest,\n handleSuggestionClearRequest,\n placeholder,\n className,\n wrapText,\n inputProps\n}: AutoSuggestInputProps) => {\n const renderSuggestion = (suggestion: Option) => (\n <div className={`${styles['suggestion-option']}`}>\n {suggestion.leftIcon && (\n <img\n className={`mr16 ${styles['suggestion-img']}`}\n src={suggestion.leftIcon}\n alt={suggestion.value}\n />\n )}\n <div\n className={classNames(styles['suggestion-text'], {\n [styles.nowrap]: !wrapText,\n })}\n >\n {suggestion.value}\n </div>\n </div>\n );\n\n const getSuggestionValue = (suggestion: Option) => suggestion.value;\n\n const renderInputComponent = (autoSuggestInputProps: Omit<InputProps, 'ref'>) => (\n <Input\n {...autoSuggestInputProps}\n placeholder={placeholder}\n data-testid=\"suggest-multi-select-input\"\n />\n );\n\n return (\n <div className={className}>\n <Autosuggest\n theme={styles}\n suggestions={suggestions}\n onSuggestionsFetchRequested={handleSuggestionFetchRequest}\n onSuggestionsClearRequested={handleSuggestionClearRequest}\n getSuggestionValue={getSuggestionValue}\n renderSuggestion={renderSuggestion}\n highlightFirstSuggestion={true}\n inputProps={{\n ...inputProps,\n value: currentOption,\n onChange: (_, { newValue }) => {\n onChange(newValue);\n },\n }}\n onSuggestionSelected={(_, { suggestion }) => {\n handleSuggestionSelected(suggestion);\n }}\n renderInputComponent={renderInputComponent}\n />\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;;AAoBO,IAAM,gBAAgB,GAAG,UAAC,EAWT,EAAA;QAVtB,aAAa,GAAA,EAAA,CAAA,aAAA,EACb,WAAW,GAAA,EAAA,CAAA,WAAA,EACX,wBAAwB,GAAA,EAAA,CAAA,wBAAA,EACxB,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,4BAA4B,GAAA,EAAA,CAAA,4BAAA,EAC5B,4BAA4B,GAAA,EAAA,CAAA,4BAAA,EAC5B,WAAW,GAAA,EAAA,CAAA,WAAA,EACX,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,UAAU,GAAA,EAAA,CAAA,UAAA;IAEV,IAAM,gBAAgB,GAAG,UAAC,UAAkB,EAAA;;QAAK,QAC/CA,cAAK,SAAS,EAAE,UAAG,MAAM,CAAC,mBAAmB,CAAC,CAAE,EAAA,QAAA,EAAA,CAC7C,UAAU,CAAC,QAAQ,KAClBC,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,OAAA,CAAA,MAAA,CAAQ,MAAM,CAAC,gBAAgB,CAAC,CAAE,EAC7C,GAAG,EAAE,UAAU,CAAC,QAAQ,EACxB,GAAG,EAAE,UAAU,CAAC,KAAK,GACrB,CACH,EACDA,aACE,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAA,EAAA,GAAA,EAAA;AAC7C,wBAAA,EAAA,CAAC,MAAM,CAAC,MAAM,CAAA,GAAG,CAAC,QAAQ;AAC1B,wBAAA,EAAA,EAAA,EAAA,QAAA,EAED,UAAU,CAAC,KAAK,EAAA,CACb,IACF;AAhByC,IAAA,CAiBhD;IAED,IAAM,kBAAkB,GAAG,UAAC,UAAkB,EAAA,EAAK,OAAA,UAAU,CAAC,KAAK,CAAA,CAAhB,CAAgB;IAEnE,IAAM,oBAAoB,GAAG,UAAC,qBAA8C,IAAK,QAC/EA,IAAC,KAAK,EAAA,QAAA,CAAA,EAAA,EACA,qBAAqB,EAAA,EACzB,WAAW,EAAE,WAAW,EAAA,aAAA,EACZ,4BAA4B,EAAA,CAAA,CACxC,EACH,CANgF,CAMhF;IAED,QACEA,aAAK,SAAS,EAAE,SAAS,EAAA,QAAA,EACvBA,GAAA,CAAC,WAAW,EAAA,EACV,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,WAAW,EACxB,2BAA2B,EAAE,4BAA4B,EACzD,2BAA2B,EAAE,4BAA4B,EACzD,kBAAkB,EAAE,kBAAkB,EACtC,gBAAgB,EAAE,gBAAgB,EAClC,wBAAwB,EAAE,IAAI,EAC9B,UAAU,wBACL,UAAU,CAAA,EAAA,EACb,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,UAAC,CAAC,EAAE,EAAY,EAAA;AAAV,oBAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA;oBACtB,QAAQ,CAAC,QAAQ,CAAC;AACpB,gBAAA,CAAC,KAEH,oBAAoB,EAAE,UAAC,CAAC,EAAE,EAAc,EAAA;AAAZ,gBAAA,IAAA,UAAU,GAAA,EAAA,CAAA,UAAA;gBACpC,wBAAwB,CAAC,UAAU,CAAC;AACtC,YAAA,CAAC,EACD,oBAAoB,EAAE,oBAAoB,EAAA,CAC1C,EAAA,CACE;AAEV;;;;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { c as customRender, s as screen } from '../../../customRender-DzdqZxUd.js';
|
|
3
|
+
import { AutoSuggestInput } from './index.js';
|
|
4
|
+
import '../../../tslib.es6-CVlKGIvp.js';
|
|
5
|
+
import '../../../_commonjsHelpers-BFTU3MAI.js';
|
|
6
|
+
import 'react';
|
|
7
|
+
import 'react-dom';
|
|
8
|
+
import 'util';
|
|
9
|
+
import 'react-dom/test-utils';
|
|
10
|
+
import '../../../index-DLQEsiym.js';
|
|
11
|
+
import '../../../index-BraF21Ae.js';
|
|
12
|
+
import '../../../index-DuaJiEiT.js';
|
|
13
|
+
import '../../../index-hWqCLhoS.js';
|
|
14
|
+
import '../../../style-inject.es-tgCJW-Cu.js';
|
|
15
|
+
import '../index.js';
|
|
16
|
+
import '../../../index-CNcEE5dn.js';
|
|
17
|
+
|
|
18
|
+
describe('AutoSuggestInput', function () {
|
|
19
|
+
it('exposes its input as suggest-multi-select-input', function () {
|
|
20
|
+
customRender(jsx(AutoSuggestInput, { currentOption: "", suggestions: [], handleSuggestionSelected: jest.fn(), onChange: jest.fn(), handleSuggestionFetchRequest: jest.fn(), handleSuggestionClearRequest: jest.fn(), placeholder: "Search countries" }));
|
|
21
|
+
expect(screen.getByTestId('suggest-multi-select-input').tagName).toBe('INPUT');
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sources":["../../../../../../src/lib/components/input/autoSuggestInput/index.test.tsx"],"sourcesContent":["import { render, screen } from '../../../util/testUtils';\nimport { AutoSuggestInput } from '.';\n\ndescribe('AutoSuggestInput', () => {\n it('exposes its input as suggest-multi-select-input', () => {\n render(\n <AutoSuggestInput\n currentOption=\"\"\n suggestions={[]}\n handleSuggestionSelected={jest.fn()}\n onChange={jest.fn()}\n handleSuggestionFetchRequest={jest.fn()}\n handleSuggestionClearRequest={jest.fn()}\n placeholder=\"Search countries\"\n />\n );\n\n expect(screen.getByTestId('suggest-multi-select-input').tagName).toBe(\n 'INPUT'\n );\n });\n});\n"],"names":["render","_jsx"],"mappings":";;;;;;;;;;;;;;;;;AAGA,QAAQ,CAAC,kBAAkB,EAAE,YAAA;IAC3B,EAAE,CAAC,iDAAiD,EAAE,YAAA;QACpDA,YAAM,CACJC,IAAC,gBAAgB,EAAA,EACf,aAAa,EAAC,EAAE,EAChB,WAAW,EAAE,EAAE,EACf,wBAAwB,EAAE,IAAI,CAAC,EAAE,EAAE,EACnC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,EACnB,4BAA4B,EAAE,IAAI,CAAC,EAAE,EAAE,EACvC,4BAA4B,EAAE,IAAI,CAAC,EAAE,EAAE,EACvC,WAAW,EAAC,kBAAkB,EAAA,CAC9B,CACH;AAED,QAAA,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CACnE,OAAO,CACR;AACH,IAAA,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -53,7 +53,7 @@ var Checkbox = function (_a) {
|
|
|
53
53
|
'p-label--bordered': bordered,
|
|
54
54
|
'jc-center': customIcon,
|
|
55
55
|
'fd-column': customIcon,
|
|
56
|
-
}), "data-
|
|
56
|
+
}), "data-testid": "checkbox-".concat(currentValue), children: [customIcon && jsx("div", { className: "mt8", children: customIcon === null || customIcon === void 0 ? void 0 : customIcon(checked) }), isCheckboxLabelObject(label) ? (jsxs("div", { children: [jsx("p", { className: "p-p", children: label.title }), jsx("span", { className: "d-block p-p p-p--small tc-neutral-700", children: label.description })] })) : (label)] })] }, currentValue));
|
|
57
57
|
})] }));
|
|
58
58
|
};
|
|
59
59
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/lib/components/input/checkbox/index.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { ReactNode } from 'react';\n\nimport styles from './styles.module.scss';\nexport interface CheckboxWithDescription {\n title: ReactNode;\n description?: string;\n icon?: (selected: boolean) => ReactNode;\n}\n\nexport interface CheckboxProps<ValueType extends string> {\n options: Record<ValueType, ReactNode | CheckboxWithDescription>;\n value?: ValueType[];\n onChange: (value: ValueType[]) => void;\n wide?: boolean;\n inlineLayout?: boolean;\n bordered?: Boolean;\n classNames?: {\n container?: string;\n label?: string;\n option?: string;\n };\n fieldLegend?: string;\n}\n\nexport const Checkbox = <ValueType extends string>({\n options,\n value = [],\n onChange,\n wide = false,\n inlineLayout = false,\n bordered = true,\n classNames: classNamesObj,\n fieldLegend,\n}: CheckboxProps<ValueType> & {}) => {\n const hasNoneValue = Object.keys(options).includes('NONE');\n\n const handleOnChange = (newValue: ValueType) => {\n if (value?.includes(newValue)) {\n const filteredCheckboxValues = value.filter(\n (selectedValue) => selectedValue !== newValue\n );\n\n onChange(filteredCheckboxValues);\n return;\n }\n\n if (hasNoneValue && newValue === 'NONE') {\n onChange([newValue]);\n return;\n }\n\n if (hasNoneValue && newValue !== 'NONE') {\n const newValues = value\n ? [...value.filter((v) => v !== 'NONE'), newValue]\n : [newValue];\n onChange(newValues);\n return;\n }\n\n const newValues = value ? [...value, newValue] : [newValue];\n onChange(newValues);\n };\n\n const entries = Object.entries(options) as [\n ValueType,\n ReactNode | CheckboxWithDescription\n ][];\n\n const isCheckboxLabelObject = (\n label: ReactNode | CheckboxWithDescription\n ): label is CheckboxWithDescription => {\n return (label as CheckboxWithDescription).title !== undefined;\n };\n\n const legend =\n fieldLegend ??\n (Object.keys(options).length > 1\n ? 'Select one or more options'\n : 'You may select this option');\n\n return (\n <fieldset\n className={classNames(\n classNamesObj?.container,\n styles.container,\n 'd-flex gap8',\n {\n [styles.narrow]: !wide,\n 'fd-row': inlineLayout,\n 'f-wrap': inlineLayout,\n 'fd-column': !inlineLayout,\n }\n )}\n >\n <legend className=\"sr-only\">{legend}</legend>\n {entries.map(([currentValue, label]) => {\n const checked = value?.includes(currentValue);\n const customIcon = (label as CheckboxWithDescription)?.icon;\n\n return (\n <div className={classNamesObj?.option} key={currentValue}>\n <input\n className={classNames('p-checkbox', {\n 'p-checkbox--no-icon': customIcon,\n })}\n id={currentValue}\n type=\"checkbox\"\n value={currentValue}\n onChange={() => handleOnChange(currentValue)}\n checked={checked}\n data-testid={`checkbox-input-${currentValue}`}\n />\n\n <label\n htmlFor={currentValue}\n className={classNames(classNamesObj?.label, 'p-label pr16', {\n 'p-label--bordered': bordered,\n 'jc-center': customIcon,\n 'fd-column': customIcon,\n })}\n data-
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/lib/components/input/checkbox/index.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { ReactNode } from 'react';\n\nimport styles from './styles.module.scss';\nexport interface CheckboxWithDescription {\n title: ReactNode;\n description?: string;\n icon?: (selected: boolean) => ReactNode;\n}\n\nexport interface CheckboxProps<ValueType extends string> {\n options: Record<ValueType, ReactNode | CheckboxWithDescription>;\n value?: ValueType[];\n onChange: (value: ValueType[]) => void;\n wide?: boolean;\n inlineLayout?: boolean;\n bordered?: Boolean;\n classNames?: {\n container?: string;\n label?: string;\n option?: string;\n };\n fieldLegend?: string;\n}\n\nexport const Checkbox = <ValueType extends string>({\n options,\n value = [],\n onChange,\n wide = false,\n inlineLayout = false,\n bordered = true,\n classNames: classNamesObj,\n fieldLegend,\n}: CheckboxProps<ValueType> & {}) => {\n const hasNoneValue = Object.keys(options).includes('NONE');\n\n const handleOnChange = (newValue: ValueType) => {\n if (value?.includes(newValue)) {\n const filteredCheckboxValues = value.filter(\n (selectedValue) => selectedValue !== newValue\n );\n\n onChange(filteredCheckboxValues);\n return;\n }\n\n if (hasNoneValue && newValue === 'NONE') {\n onChange([newValue]);\n return;\n }\n\n if (hasNoneValue && newValue !== 'NONE') {\n const newValues = value\n ? [...value.filter((v) => v !== 'NONE'), newValue]\n : [newValue];\n onChange(newValues);\n return;\n }\n\n const newValues = value ? [...value, newValue] : [newValue];\n onChange(newValues);\n };\n\n const entries = Object.entries(options) as [\n ValueType,\n ReactNode | CheckboxWithDescription\n ][];\n\n const isCheckboxLabelObject = (\n label: ReactNode | CheckboxWithDescription\n ): label is CheckboxWithDescription => {\n return (label as CheckboxWithDescription).title !== undefined;\n };\n\n const legend =\n fieldLegend ??\n (Object.keys(options).length > 1\n ? 'Select one or more options'\n : 'You may select this option');\n\n return (\n <fieldset\n className={classNames(\n classNamesObj?.container,\n styles.container,\n 'd-flex gap8',\n {\n [styles.narrow]: !wide,\n 'fd-row': inlineLayout,\n 'f-wrap': inlineLayout,\n 'fd-column': !inlineLayout,\n }\n )}\n >\n <legend className=\"sr-only\">{legend}</legend>\n {entries.map(([currentValue, label]) => {\n const checked = value?.includes(currentValue);\n const customIcon = (label as CheckboxWithDescription)?.icon;\n\n return (\n <div className={classNamesObj?.option} key={currentValue}>\n <input\n className={classNames('p-checkbox', {\n 'p-checkbox--no-icon': customIcon,\n })}\n id={currentValue}\n type=\"checkbox\"\n value={currentValue}\n onChange={() => handleOnChange(currentValue)}\n checked={checked}\n data-testid={`checkbox-input-${currentValue}`}\n />\n\n <label\n htmlFor={currentValue}\n className={classNames(classNamesObj?.label, 'p-label pr16', {\n 'p-label--bordered': bordered,\n 'jc-center': customIcon,\n 'fd-column': customIcon,\n })}\n data-testid={`checkbox-${currentValue}`}\n >\n {customIcon && <div className=\"mt8\">{customIcon?.(checked)}</div>}\n\n {isCheckboxLabelObject(label) ? (\n <div>\n <p className=\"p-p\">{label.title}</p>\n <span className=\"d-block p-p p-p--small tc-neutral-700\">\n {label.description}\n </span>\n </div>\n ) : (\n label\n )}\n </label>\n </div>\n );\n })}\n </fieldset>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ var Radio = function (_a) {
|
|
|
34
34
|
'jc-center': customIcon && !inlineIcon,
|
|
35
35
|
'fd-column': customIcon && !inlineIcon,
|
|
36
36
|
'p-label--bordered': bordered,
|
|
37
|
-
}), "data-
|
|
37
|
+
}), "data-testid": "radio-".concat(currentValue), children: [customIcon && (jsx("div", { className: classNames('d-inline-flex ai-center jc-center', inlineIcon ? 'mr8' : 'mt8'), children: customIcon === null || customIcon === void 0 ? void 0 : customIcon(checked) })), isRadioLabelObject(label) ? (jsxs("div", { children: [jsx("p", { className: "p-p", children: label.title }), jsx("span", { className: "d-block p-p p-p--small tc-neutral-700", children: label.description })] })) : (label)] })] }, currentValue));
|
|
38
38
|
})] }));
|
|
39
39
|
};
|
|
40
40
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/lib/components/input/radio/index.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { ReactNode } from 'react';\n\nimport styles from './styles.module.scss';\nimport generateId from '../../../util/generateId';\nexport interface RadioWithDescription {\n title: ReactNode;\n description?: string;\n icon?: (selected: boolean) => ReactNode;\n hideBox?: boolean;\n}\n\nexport interface RadioProps<ValueType extends string> {\n options: Record<ValueType, ReactNode | RadioWithDescription>;\n value?: ValueType;\n onChange: (value: ValueType) => void;\n wide?: boolean;\n inlineLayout?: boolean;\n inlineIcon?: boolean;\n classNames?: {\n container?: string;\n label?: string;\n option?: string;\n };\n bordered?: boolean;\n disabled?: boolean;\n fieldLegend?: string;\n groupName?: string;\n}\n\nexport const Radio = <ValueType extends string>({\n options,\n value,\n onChange,\n wide = false,\n inlineLayout = false,\n inlineIcon = false,\n classNames: classNamesObj,\n bordered = true,\n disabled = false,\n fieldLegend = 'Select an option',\n groupName,\n}: RadioProps<ValueType>) => {\n const entries = Object.entries(options) as [\n ValueType,\n ReactNode | RadioWithDescription\n ][];\n\n const name = groupName ?? generateId();\n\n return (\n <fieldset\n className={classNames(\n classNamesObj?.container,\n styles.container,\n 'd-flex gap8',\n {\n [styles.wide]: wide,\n [styles.narrow]: !wide,\n 'fd-row': inlineLayout,\n 'f-wrap': inlineLayout,\n 'fd-column': !inlineLayout,\n }\n )}\n >\n <legend className=\"sr-only\">{fieldLegend}</legend>\n {entries.map(([currentValue, label]) => {\n const checked = value === currentValue;\n const customIcon = (label as RadioWithDescription)?.icon;\n const hideIcon = (label as RadioWithDescription)?.hideBox;\n\n const isRadioLabelObject = (\n label: ReactNode | RadioWithDescription\n ): label is RadioWithDescription => {\n return (label as RadioWithDescription).title !== undefined;\n };\n\n return (\n <div className={classNamesObj?.option} key={currentValue}>\n <input\n className={classNames('p-radio', {\n 'p-radio--no-icon': customIcon || hideIcon,\n 'p-radio--centered': !label,\n })}\n id={currentValue}\n type=\"radio\"\n value={currentValue}\n onChange={() => onChange(currentValue)}\n checked={checked}\n data-testid={`radio-input-${currentValue}`}\n disabled={disabled}\n name={name}\n />\n\n <label\n htmlFor={currentValue}\n className={classNames(classNamesObj?.label, 'p-label', {\n 'jc-center': customIcon && !inlineIcon,\n 'fd-column': customIcon && !inlineIcon,\n 'p-label--bordered': bordered,\n })}\n data-
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/lib/components/input/radio/index.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { ReactNode } from 'react';\n\nimport styles from './styles.module.scss';\nimport generateId from '../../../util/generateId';\nexport interface RadioWithDescription {\n title: ReactNode;\n description?: string;\n icon?: (selected: boolean) => ReactNode;\n hideBox?: boolean;\n}\n\nexport interface RadioProps<ValueType extends string> {\n options: Record<ValueType, ReactNode | RadioWithDescription>;\n value?: ValueType;\n onChange: (value: ValueType) => void;\n wide?: boolean;\n inlineLayout?: boolean;\n inlineIcon?: boolean;\n classNames?: {\n container?: string;\n label?: string;\n option?: string;\n };\n bordered?: boolean;\n disabled?: boolean;\n fieldLegend?: string;\n groupName?: string;\n}\n\nexport const Radio = <ValueType extends string>({\n options,\n value,\n onChange,\n wide = false,\n inlineLayout = false,\n inlineIcon = false,\n classNames: classNamesObj,\n bordered = true,\n disabled = false,\n fieldLegend = 'Select an option',\n groupName,\n}: RadioProps<ValueType>) => {\n const entries = Object.entries(options) as [\n ValueType,\n ReactNode | RadioWithDescription\n ][];\n\n const name = groupName ?? generateId();\n\n return (\n <fieldset\n className={classNames(\n classNamesObj?.container,\n styles.container,\n 'd-flex gap8',\n {\n [styles.wide]: wide,\n [styles.narrow]: !wide,\n 'fd-row': inlineLayout,\n 'f-wrap': inlineLayout,\n 'fd-column': !inlineLayout,\n }\n )}\n >\n <legend className=\"sr-only\">{fieldLegend}</legend>\n {entries.map(([currentValue, label]) => {\n const checked = value === currentValue;\n const customIcon = (label as RadioWithDescription)?.icon;\n const hideIcon = (label as RadioWithDescription)?.hideBox;\n\n const isRadioLabelObject = (\n label: ReactNode | RadioWithDescription\n ): label is RadioWithDescription => {\n return (label as RadioWithDescription).title !== undefined;\n };\n\n return (\n <div className={classNamesObj?.option} key={currentValue}>\n <input\n className={classNames('p-radio', {\n 'p-radio--no-icon': customIcon || hideIcon,\n 'p-radio--centered': !label,\n })}\n id={currentValue}\n type=\"radio\"\n value={currentValue}\n onChange={() => onChange(currentValue)}\n checked={checked}\n data-testid={`radio-input-${currentValue}`}\n disabled={disabled}\n name={name}\n />\n\n <label\n htmlFor={currentValue}\n className={classNames(classNamesObj?.label, 'p-label', {\n 'jc-center': customIcon && !inlineIcon,\n 'fd-column': customIcon && !inlineIcon,\n 'p-label--bordered': bordered,\n })}\n data-testid={`radio-${currentValue}`}\n >\n {customIcon && (\n <div\n className={classNames(\n 'd-inline-flex ai-center jc-center',\n inlineIcon ? 'mr8' : 'mt8'\n )}\n >\n {customIcon?.(checked)}\n </div>\n )}\n\n {isRadioLabelObject(label) ? (\n <div>\n <p className=\"p-p\">{label.title}</p>\n <span className=\"d-block p-p p-p--small tc-neutral-700\">\n {label.description}\n </span>\n </div>\n ) : (\n label\n )}\n </label>\n </div>\n );\n })}\n </fieldset>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -44,7 +44,7 @@ var Toggle = function (_a) {
|
|
|
44
44
|
var checked = value === null || value === void 0 ? void 0 : value.includes(currentValue);
|
|
45
45
|
return (jsx("div", { className: classNamesObj === null || classNamesObj === void 0 ? void 0 : classNamesObj.option, children: jsxs("label", { className: classNames(styles.label, classNamesObj === null || classNamesObj === void 0 ? void 0 : classNamesObj.label, 'p-label pr16 gap16', {
|
|
46
46
|
'p-label--bordered': bordered,
|
|
47
|
-
}), "data-
|
|
47
|
+
}), "data-testid": "toggle-".concat(currentValue), children: [jsxs("span", { className: classNames(styles.toggleContainer, 'd-inline-block'), children: [jsx("input", { checked: checked, className: styles.input, "data-testid": "toggle-input-".concat(currentValue), onChange: function () { return handleOnChange(currentValue); }, type: "checkbox", value: currentValue, disabled: disabled }), jsx("span", { className: styles.toggle })] }), isToggleLabelObject(label) ? (jsxs("div", { children: [jsx("p", { className: "p-p", children: label.title }), jsx("span", { className: "d-block p-p p-p--small tc-neutral-700", children: label.description })] })) : label] }) }, currentValue));
|
|
48
48
|
}) }));
|
|
49
49
|
};
|
|
50
50
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/lib/components/input/toggle/index.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\nimport classNames from \"classnames\";\n\nimport styles from './styles.module.scss';\nexport interface ToggleWithDescription {\n title: ReactNode;\n description?: string;\n}\n\nexport interface ToggleProps<ValueType extends string> {\n options: Record<ValueType, ReactNode | ToggleWithDescription>;\n value?: ValueType[];\n onChange: (value: ValueType[]) => void;\n inlineLayout?: boolean;\n disabled?: boolean;\n bordered?: boolean,\n classNames?: {\n container?: string;\n label?: string;\n option?: string;\n }\n}\n\nexport const Toggle = <ValueType extends string>({\n options,\n value = [],\n onChange,\n inlineLayout = false,\n bordered = true,\n classNames: classNamesObj,\n disabled,\n}: ToggleProps<ValueType> & { }) => {\n const hasNoneValue = Object.keys(options).includes('NONE');\n\n const isToggleLabelObject = (\n label: ReactNode | ToggleWithDescription\n ): label is ToggleWithDescription => {\n return (label as ToggleWithDescription).title !== undefined;\n };\n\n const handleOnChange = (newValue: ValueType) => {\n if (value?.includes(newValue)) {\n const filteredToggleValues = value.filter(\n (selectedValue) => selectedValue !== newValue\n );\n\n onChange(filteredToggleValues);\n return;\n }\n\n if (hasNoneValue && newValue === 'NONE') {\n onChange([newValue]);\n return;\n }\n\n if (hasNoneValue && newValue !== 'NONE') {\n const newValues = value\n ? [...value.filter((v) => v !== 'NONE'), newValue]\n : [newValue];\n onChange(newValues);\n return;\n }\n\n const newValues = value\n ? [...value, newValue]\n : [newValue];\n onChange(newValues);\n };\n\n\n const entries = Object.entries(options) as [\n ValueType,\n string | ToggleWithDescription\n ][];\n\n return (\n <div\n className={classNames(classNamesObj?.container, styles.container, 'd-flex gap8', {\n 'fd-row': inlineLayout,\n 'f-wrap': inlineLayout,\n 'fd-column': !inlineLayout,\n })}\n >\n {entries.map(([currentValue, label]) => {\n const checked = value?.includes(currentValue);\n\n return (\n <div className={classNamesObj?.option} key={currentValue}>\n <label\n className={classNames(\n styles.label,\n classNamesObj?.label,\n 'p-label pr16 gap16',\n {\n 'p-label--bordered': bordered,\n }\n )}\n data-
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/lib/components/input/toggle/index.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\nimport classNames from \"classnames\";\n\nimport styles from './styles.module.scss';\nexport interface ToggleWithDescription {\n title: ReactNode;\n description?: string;\n}\n\nexport interface ToggleProps<ValueType extends string> {\n options: Record<ValueType, ReactNode | ToggleWithDescription>;\n value?: ValueType[];\n onChange: (value: ValueType[]) => void;\n inlineLayout?: boolean;\n disabled?: boolean;\n bordered?: boolean,\n classNames?: {\n container?: string;\n label?: string;\n option?: string;\n }\n}\n\nexport const Toggle = <ValueType extends string>({\n options,\n value = [],\n onChange,\n inlineLayout = false,\n bordered = true,\n classNames: classNamesObj,\n disabled,\n}: ToggleProps<ValueType> & { }) => {\n const hasNoneValue = Object.keys(options).includes('NONE');\n\n const isToggleLabelObject = (\n label: ReactNode | ToggleWithDescription\n ): label is ToggleWithDescription => {\n return (label as ToggleWithDescription).title !== undefined;\n };\n\n const handleOnChange = (newValue: ValueType) => {\n if (value?.includes(newValue)) {\n const filteredToggleValues = value.filter(\n (selectedValue) => selectedValue !== newValue\n );\n\n onChange(filteredToggleValues);\n return;\n }\n\n if (hasNoneValue && newValue === 'NONE') {\n onChange([newValue]);\n return;\n }\n\n if (hasNoneValue && newValue !== 'NONE') {\n const newValues = value\n ? [...value.filter((v) => v !== 'NONE'), newValue]\n : [newValue];\n onChange(newValues);\n return;\n }\n\n const newValues = value\n ? [...value, newValue]\n : [newValue];\n onChange(newValues);\n };\n\n\n const entries = Object.entries(options) as [\n ValueType,\n string | ToggleWithDescription\n ][];\n\n return (\n <div\n className={classNames(classNamesObj?.container, styles.container, 'd-flex gap8', {\n 'fd-row': inlineLayout,\n 'f-wrap': inlineLayout,\n 'fd-column': !inlineLayout,\n })}\n >\n {entries.map(([currentValue, label]) => {\n const checked = value?.includes(currentValue);\n\n return (\n <div className={classNamesObj?.option} key={currentValue}>\n <label\n className={classNames(\n styles.label,\n classNamesObj?.label,\n 'p-label pr16 gap16',\n {\n 'p-label--bordered': bordered,\n }\n )}\n data-testid={`toggle-${currentValue}`}\n >\n <span className={classNames(styles.toggleContainer, 'd-inline-block')}>\n <input \n checked={checked}\n className={styles.input}\n data-testid={`toggle-input-${currentValue}`}\n onChange={() => handleOnChange(currentValue)}\n type=\"checkbox\" \n value={currentValue}\n disabled={disabled}\n />\n <span className={styles.toggle} />\n </span>\n \n {isToggleLabelObject(label) ? (\n <div>\n <p className=\"p-p\">{label.title}</p>\n <span className=\"d-block p-p p-p--small tc-neutral-700\">\n {label.description}\n </span>\n </div>\n ) : label}\n </label>\n </div>\n );\n })}\n </div>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseCell.js","sources":["../../../../../../../../src/lib/components/table/components/TableCell/BaseCell/BaseCell.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport {\n CheckThickIcon,\n StarFilledIcon,\n XIcon,\n ZapFilledIcon,\n} from '../../../../icon';\nimport { ReactNode } from 'react';\nimport styles from './BaseCell.module.scss';\nimport { MiniProgressBar } from './MiniProgressBar/MiniProgressBar';\nimport { TableInfoButton } from '../../../../comparisonTable';\nimport { ModalFunction } from '../../../types';\n\nexport type FontVariant = 'NORMAL' | 'TITLE' | 'SUBTITLE' | 'PRICE';\n\nconst progressLookup: Record<string, number> = {\n '30%': 1,\n '50%': 2,\n '70%': 3,\n '75%': 4,\n '80%': 4,\n '90%': 4,\n '75%-90%': 4,\n '75%-100%': 4,\n '80%-100%': 4,\n '100%': 5,\n};\n\nexport type Alignment = 'center' | 'left' | 'right';\n\nexport type BaseCellProps = {\n align?: Alignment;\n checkmarkValue?: boolean;\n description?: ReactNode;\n fontVariant?: FontVariant;\n hideProgressBar?: boolean;\n modalTitle?: ReactNode;\n modalContent?: ReactNode;\n openModal?: ModalFunction;\n text?: ReactNode;\n rating?: {\n value: number;\n type: 'zap' | 'star';\n };\n className?: string;\n dataTestId?: string;\n
|
|
1
|
+
{"version":3,"file":"BaseCell.js","sources":["../../../../../../../../src/lib/components/table/components/TableCell/BaseCell/BaseCell.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport {\n CheckThickIcon,\n StarFilledIcon,\n XIcon,\n ZapFilledIcon,\n} from '../../../../icon';\nimport { ReactNode } from 'react';\nimport styles from './BaseCell.module.scss';\nimport { MiniProgressBar } from './MiniProgressBar/MiniProgressBar';\nimport { TableInfoButton } from '../../../../comparisonTable';\nimport { ModalFunction } from '../../../types';\n\nexport type FontVariant = 'NORMAL' | 'TITLE' | 'SUBTITLE' | 'PRICE';\n\nconst progressLookup: Record<string, number> = {\n '30%': 1,\n '50%': 2,\n '70%': 3,\n '75%': 4,\n '80%': 4,\n '90%': 4,\n '75%-90%': 4,\n '75%-100%': 4,\n '80%-100%': 4,\n '100%': 5,\n};\n\nexport type Alignment = 'center' | 'left' | 'right';\n\nexport type BaseCellProps = {\n align?: Alignment;\n checkmarkValue?: boolean;\n description?: ReactNode;\n fontVariant?: FontVariant;\n hideProgressBar?: boolean;\n modalTitle?: ReactNode;\n modalContent?: ReactNode;\n openModal?: ModalFunction;\n text?: ReactNode;\n rating?: {\n value: number;\n type: 'zap' | 'star';\n };\n className?: string;\n dataTestId?: string;\n};\n\nexport const BaseCell = ({\n align = 'center',\n checkmarkValue,\n description = '',\n fontVariant = 'NORMAL',\n hideProgressBar = false,\n modalTitle = '',\n modalContent = '',\n openModal,\n rating,\n text = '',\n className,\n}: BaseCellProps) => {\n const alignClassName = {\n center: 'ta-center jc-center ai-center',\n left: 'ta-left jc-start',\n right: 'ta-right jc-end ai-end',\n }[align];\n\n const validRatingValues: number[] = [1, 2, 3];\n const SelectedIcon = rating?.type === 'zap' ? ZapFilledIcon : StarFilledIcon;\n\n const progressBarValue =\n !hideProgressBar && typeof text === 'string'\n ? progressLookup[text]\n : undefined;\n\n return (\n <div\n className={classNames(\n className,\n 'd-flex gap8 ai-center', {\n 'jc-center': align === 'center',\n })}\n >\n <div\n className={classNames('d-flex fd-column', alignClassName, {\n [styles.maxWidth]: modalContent && align === 'center',\n })}\n >\n <div className=\"d-flex ai-center\">\n {rating?.value && (\n <span\n data-testid=\"table-cell-rating\"\n title={`${rating?.value} out of 3`}\n >\n {validRatingValues.map((value) => (\n <SelectedIcon\n aria-hidden=\"true\"\n key={value}\n color={value <= rating?.value ? 'neutral-900' : 'neutral-400'}\n className={styles.icon}\n size={rating?.type === 'zap' ? 16 : 14}\n />\n ))}\n </span>\n )}\n\n {checkmarkValue !== undefined && (\n <span className='d-inline-block mx8' title={checkmarkValue ? 'Yes' : 'No'}>\n {checkmarkValue ? (\n <CheckThickIcon\n noMargin\n data-testid=\"table-cell-boolean-yes\"\n size={24}\n aria-hidden\n color=\"neutral-900\"\n />\n ) : (\n <XIcon\n noMargin\n data-testid=\"table-cell-boolean-no\"\n size={24}\n aria-hidden\n color=\"neutral-500\"\n />\n )}\n </span>\n )}\n\n <div className=\"d-flex ai-center\">\n {text && fontVariant === 'NORMAL' && (\n <div className={classNames(\n \"p-p d-inline\",\n { 'ml8': align !== 'left' }\n )}\n data-testid=\"table-cell-text\"\n >\n {text}\n </div>\n )}\n\n {text && fontVariant === 'PRICE' && (\n <div\n className=\"p-h2 tc-neutral-900\"\n data-testid=\"table-cell-content\"\n >\n {text}\n </div>\n )}\n\n {text && fontVariant === 'TITLE' && (\n <h2\n aria-hidden\n className=\"tc-grey-800 p-h2 p--serif\"\n >\n {text}\n </h2>\n )}\n\n {text && fontVariant === 'SUBTITLE' && (\n <h2\n aria-hidden\n className=\"tc-grey-800 p-h4\"\n >\n {text}\n </h2>\n )}\n\n {modalContent && openModal && (\n <span className=\"ml8\">\n <TableInfoButton\n onClick={() =>\n openModal({\n title: modalTitle,\n body: modalContent,\n })\n }\n />\n </span>\n )}\n </div>\n </div>\n\n {progressBarValue !== undefined && (\n <MiniProgressBar nFilledBars={progressBarValue} />\n )}\n\n {description && (\n <div\n className={classNames(\n styles.description,\n 'd-flex p-p--small tc-neutral-600',\n alignClassName\n )}\n >\n {description}\n </div>\n )}\n </div>\n </div>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -14,8 +14,8 @@ styleInject(css_248z);
|
|
|
14
14
|
|
|
15
15
|
var ButtonCell = function (_a) {
|
|
16
16
|
var _b;
|
|
17
|
-
var isSelected = _a.isSelected, onClick = _a.onClick, buttonCaption = _a.buttonCaption, price = _a.price, disabled = _a.disabled, className = _a.className,
|
|
18
|
-
return (jsx("div", { className: classNames("w100 d-flex fd-column ai-start jc-center gap8", styles.wrapper, className), "data-
|
|
17
|
+
var isSelected = _a.isSelected, onClick = _a.onClick, buttonCaption = _a.buttonCaption, price = _a.price, disabled = _a.disabled, className = _a.className, dataTestId = _a.dataTestId;
|
|
18
|
+
return (jsx("div", { className: classNames("w100 d-flex fd-column ai-start jc-center gap8", styles.wrapper, className), "data-testid": dataTestId, children: jsxs("button", { className: classNames('w100 wmx5', styles.buttonCell, (_b = {},
|
|
19
19
|
_b[styles.selected] = isSelected,
|
|
20
20
|
_b[styles.disabled] = disabled,
|
|
21
21
|
_b)), type: "button", onClick: onClick, disabled: disabled, children: [jsxs("div", { className: "d-flex fd-column ai-start", children: [jsx("span", { className: "p-p fw-bold", children: buttonCaption }), price && jsx("span", { className: "p-p", children: price })] }), !disabled && (isSelected ? (jsx(CircleSelectedIcon, { size: 16 })) : (jsx(CircleUnselectedIcon, { size: 16 })))] }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonCell.js","sources":["../../../../../../../../src/lib/components/table/components/TableCell/ButtonCell/ButtonCell.tsx"],"sourcesContent":["import classNames from 'classnames';\n\nimport styles from './ButtonCell.module.scss';\nimport { CircleSelectedIcon, CircleUnselectedIcon } from '../../../../icon';\nimport { ReactNode } from 'react';\n\nexport type ButtonCellProps = {\n buttonCaption: ReactNode;\n disabled?: boolean;\n isSelected?: boolean;\n onClick: () => void;\n price?: ReactNode;\n className?: string;\n dataTestId?: string;\n
|
|
1
|
+
{"version":3,"file":"ButtonCell.js","sources":["../../../../../../../../src/lib/components/table/components/TableCell/ButtonCell/ButtonCell.tsx"],"sourcesContent":["import classNames from 'classnames';\n\nimport styles from './ButtonCell.module.scss';\nimport { CircleSelectedIcon, CircleUnselectedIcon } from '../../../../icon';\nimport { ReactNode } from 'react';\n\nexport type ButtonCellProps = {\n buttonCaption: ReactNode;\n disabled?: boolean;\n isSelected?: boolean;\n onClick: () => void;\n price?: ReactNode;\n className?: string;\n dataTestId?: string;\n};\n\nexport const ButtonCell = ({\n isSelected,\n onClick,\n buttonCaption,\n price,\n disabled,\n className,\n dataTestId,\n}: ButtonCellProps) => {\n return (\n <div\n className={classNames(\n \"w100 d-flex fd-column ai-start jc-center gap8\",\n styles.wrapper,\n className,\n )}\n data-testid={dataTestId}\n >\n <button\n className={classNames('w100 wmx5', styles.buttonCell, {\n [styles.selected]: isSelected,\n [styles.disabled]: disabled,\n })}\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n >\n <div className=\"d-flex fd-column ai-start\">\n <span className=\"p-p fw-bold\">{buttonCaption}</span>\n {price && <span className=\"p-p\">{price}</span>}\n </div>\n {!disabled && (isSelected ? (\n <CircleSelectedIcon size={16} />\n ) : (\n <CircleUnselectedIcon size={16} />\n ))}\n </button>\n </div>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;;;AAgBO,IAAM,UAAU,GAAG,UAAC,EAQT,EAAA;;AAPhB,IAAA,IAAA,UAAU,gBAAA,EACV,OAAO,aAAA,EACP,aAAa,mBAAA,EACb,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,UAAU,GAAA,EAAA,CAAA,UAAA;IAEV,QACEA,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,UAAU,CACnB,+CAA+C,EAC/C,MAAM,CAAC,OAAO,EACd,SAAS,CACV,EAAA,aAAA,EACY,UAAU,EAAA,QAAA,EAEvBC,IAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAE,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,GAAA,EAAA,GAAA,EAAA;AAClD,gBAAA,EAAA,CAAC,MAAM,CAAC,QAAQ,CAAA,GAAG,UAAU;AAC7B,gBAAA,EAAA,CAAC,MAAM,CAAC,QAAQ,CAAA,GAAG,QAAQ;AAC3B,gBAAA,EAAA,EAAA,EACF,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAAA,QAAA,EAAA,CAElBA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,2BAA2B,EAAA,QAAA,EAAA,CACxCD,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,aAAa,EAAA,QAAA,EAAE,aAAa,EAAA,CAAQ,EACnD,KAAK,IAAIA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,KAAK,YAAE,KAAK,EAAA,CAAQ,CAAA,EAAA,CAC1C,EACL,CAAC,QAAQ,KAAK,UAAU,IACvBA,GAAA,CAAC,kBAAkB,EAAA,EAAC,IAAI,EAAE,EAAE,EAAA,CAAI,KAEhCA,GAAA,CAAC,oBAAoB,EAAA,EAAC,IAAI,EAAE,EAAE,GAAI,CACnC,CAAC,CAAA,EAAA,CACK,EAAA,CACL;AAEV;;;;"}
|
|
@@ -13,11 +13,11 @@ styleInject(css_248z);
|
|
|
13
13
|
|
|
14
14
|
var CTACell = function (_a) {
|
|
15
15
|
var _b;
|
|
16
|
-
var title = _a.title, price = _a.price, icon = _a.icon, grey = _a.grey, narrow = _a.narrow, centered = _a.centered, href = _a.href, buttonCaption = _a.buttonCaption, imageComponent = _a.imageComponent, className = _a.className,
|
|
16
|
+
var title = _a.title, price = _a.price, icon = _a.icon, grey = _a.grey, narrow = _a.narrow, centered = _a.centered, href = _a.href, buttonCaption = _a.buttonCaption, imageComponent = _a.imageComponent, className = _a.className, dataTestId = _a.dataTestId, onClick = _a.onClick;
|
|
17
17
|
var renderedIcon = (jsx(IconRenderer, { icon: icon, imageComponent: imageComponent }));
|
|
18
18
|
return (jsxs("div", { className: classNames(className, 'ta-left', {
|
|
19
19
|
'd-flex fd-column ai-center': centered,
|
|
20
|
-
}), "data-
|
|
20
|
+
}), "data-testid": dataTestId, children: [jsxs("div", { className: "d-flex ai-center gap8", children: [renderedIcon, jsxs("p", { className: "p-h3", children: [title, price && jsxs("span", { className: "tc-purple-600", children: [" ", price] })] })] }), jsx(Button, __assign({}, onClick ? { onClick: onClick } : {
|
|
21
21
|
as: 'a',
|
|
22
22
|
href: href,
|
|
23
23
|
target: '_blank',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CTACell.js","sources":["../../../../../../../../src/lib/components/table/components/TableCell/CTACell/CTACell.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { ReactNode } from 'react';\n\nimport styles from './CTACell.module.scss';\nimport { IconRenderer } from '../../IconRenderer/IconRenderer';\nimport { Button } from '../../../../button';\n\nexport type CTACellProps = {\n title: ReactNode;\n price?: ReactNode;\n icon?: ReactNode;\n imageComponent?: (args: any) => JSX.Element;\n buttonCaption?: ReactNode;\n grey?: boolean;\n narrow?: boolean;\n centered?: boolean;\n href: string;\n className?: string;\n dataTestId?: string;\n
|
|
1
|
+
{"version":3,"file":"CTACell.js","sources":["../../../../../../../../src/lib/components/table/components/TableCell/CTACell/CTACell.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { ReactNode } from 'react';\n\nimport styles from './CTACell.module.scss';\nimport { IconRenderer } from '../../IconRenderer/IconRenderer';\nimport { Button } from '../../../../button';\n\nexport type CTACellProps = {\n title: ReactNode;\n price?: ReactNode;\n icon?: ReactNode;\n imageComponent?: (args: any) => JSX.Element;\n buttonCaption?: ReactNode;\n grey?: boolean;\n narrow?: boolean;\n centered?: boolean;\n href: string;\n className?: string;\n dataTestId?: string;\n onClick?: () => void;\n};\n\nexport const CTACell = ({\n title,\n price,\n icon,\n grey,\n narrow,\n centered,\n href,\n buttonCaption,\n imageComponent,\n className,\n dataTestId,\n onClick,\n}: CTACellProps) => {\n const renderedIcon = (\n <IconRenderer icon={icon} imageComponent={imageComponent} />\n );\n\n return (\n <div\n className={classNames(className, 'ta-left', {\n 'd-flex fd-column ai-center': centered,\n })}\n data-testid={dataTestId}\n >\n <div className=\"d-flex ai-center gap8\">\n {renderedIcon}\n <p className=\"p-h3\">\n {title}\n {price && <span className=\"tc-purple-600\"> {price}</span>}\n </p>\n </div>\n\n <Button\n {...onClick ? { onClick } : {\n as: 'a',\n href: href,\n target: '_blank',\n rel: 'noopener noreferrer',\n }}\n className={classNames('mt16 w100', styles.button, {\n 'p-btn--primary': !grey,\n 'p-btn--secondary-grey': grey,\n [styles.narrow]: narrow,\n })}\n >\n {buttonCaption}\n </Button>\n </div>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;;AAsBO,IAAM,OAAO,GAAG,UAAC,EAaT,EAAA;;AAZb,IAAA,IAAA,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,aAAa,GAAA,EAAA,CAAA,aAAA,EACb,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,SAAS,eAAA,EACT,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,OAAO,GAAA,EAAA,CAAA,OAAA;AAEP,IAAA,IAAM,YAAY,IAChBA,GAAA,CAAC,YAAY,EAAA,EAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,EAAA,CAAI,CAC7D;IAED,QACEC,cACE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE;AAC1C,YAAA,4BAA4B,EAAE,QAAQ;AACvC,SAAA,CAAC,iBACW,UAAU,EAAA,QAAA,EAAA,CAEvBA,cAAK,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAAA,CACnC,YAAY,EACbA,IAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,MAAM,EAAA,QAAA,EAAA,CAChB,KAAK,EACL,KAAK,IAAIA,IAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,eAAe,kBAAG,KAAK,CAAA,EAAA,CAAQ,IACvD,CAAA,EAAA,CACA,EAEND,IAAC,MAAM,EAAA,QAAA,CAAA,EAAA,EACD,OAAO,GAAG,EAAE,OAAO,SAAA,EAAE,GAAG;AAC1B,gBAAA,EAAE,EAAE,GAAG;AACP,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,GAAG,EAAE,qBAAqB;aAC3B,EAAA,EACD,SAAS,EAAE,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,GAAA,EAAA,GAAA;wBAC9C,gBAAgB,EAAE,CAAC,IAAI;AACvB,wBAAA,uBAAuB,EAAE;;AACzB,oBAAA,EAAA,CAAC,MAAM,CAAC,MAAM,CAAA,GAAG,MAAM;AACvB,oBAAA,EAAA,EAAA,EAAA,QAAA,EAED,aAAa,EAAA,CAAA,CACP,CAAA,EAAA,CACL;AAEV;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -18,6 +18,5 @@ export type BaseCellProps = {
|
|
|
18
18
|
};
|
|
19
19
|
className?: string;
|
|
20
20
|
dataTestId?: string;
|
|
21
|
-
dataCy?: string;
|
|
22
21
|
};
|
|
23
22
|
export declare const BaseCell: ({ align, checkmarkValue, description, fontVariant, hideProgressBar, modalTitle, modalContent, openModal, rating, text, className, }: BaseCellProps) => JSX.Element;
|
|
@@ -7,6 +7,5 @@ export type ButtonCellProps = {
|
|
|
7
7
|
price?: ReactNode;
|
|
8
8
|
className?: string;
|
|
9
9
|
dataTestId?: string;
|
|
10
|
-
dataCy?: string;
|
|
11
10
|
};
|
|
12
|
-
export declare const ButtonCell: ({ isSelected, onClick, buttonCaption, price, disabled, className,
|
|
11
|
+
export declare const ButtonCell: ({ isSelected, onClick, buttonCaption, price, disabled, className, dataTestId, }: ButtonCellProps) => JSX.Element;
|
package/dist/esm/lib/components/table/components/TableCell/ButtonCell/ButtonCell.stories.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ButtonCell } from './ButtonCell';
|
|
2
2
|
declare const story: {
|
|
3
3
|
title: string;
|
|
4
|
-
component: ({ isSelected, onClick, buttonCaption, price, disabled, className,
|
|
4
|
+
component: ({ isSelected, onClick, buttonCaption, price, disabled, className, dataTestId, }: import("./ButtonCell").ButtonCellProps) => JSX.Element;
|
|
5
5
|
argTypes: {};
|
|
6
6
|
args: {
|
|
7
7
|
buttonCaption: string;
|
|
@@ -11,7 +11,6 @@ export type CTACellProps = {
|
|
|
11
11
|
href: string;
|
|
12
12
|
className?: string;
|
|
13
13
|
dataTestId?: string;
|
|
14
|
-
dataCy?: string;
|
|
15
14
|
onClick?: () => void;
|
|
16
15
|
};
|
|
17
|
-
export declare const CTACell: ({ title, price, icon, grey, narrow, centered, href, buttonCaption, imageComponent, className,
|
|
16
|
+
export declare const CTACell: ({ title, price, icon, grey, narrow, centered, href, buttonCaption, imageComponent, className, dataTestId, onClick, }: CTACellProps) => JSX.Element;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CTACell } from './CTACell';
|
|
2
2
|
declare const story: {
|
|
3
3
|
title: string;
|
|
4
|
-
component: ({ title, price, icon, grey, narrow, centered, href, buttonCaption, imageComponent, className,
|
|
4
|
+
component: ({ title, price, icon, grey, narrow, centered, href, buttonCaption, imageComponent, className, dataTestId, onClick, }: import("./CTACell").CTACellProps) => JSX.Element;
|
|
5
5
|
argTypes: {};
|
|
6
6
|
args: {
|
|
7
7
|
title: string;
|
package/package.json
CHANGED
|
@@ -24,7 +24,13 @@ const setup = (
|
|
|
24
24
|
);
|
|
25
25
|
};
|
|
26
26
|
|
|
27
|
-
const
|
|
27
|
+
const addressFieldTestIds = [
|
|
28
|
+
'autocomplete',
|
|
29
|
+
'autocomplete-house-number',
|
|
30
|
+
'autocomplete-additional-info',
|
|
31
|
+
'autocomplete-postcode',
|
|
32
|
+
'autocomplete-city',
|
|
33
|
+
];
|
|
28
34
|
|
|
29
35
|
describe('AutocompleteAddress component', () => {
|
|
30
36
|
it('Should show all address fields once a search is completed', async () => {
|
|
@@ -55,30 +61,30 @@ describe('AutocompleteAddress component', () => {
|
|
|
55
61
|
}
|
|
56
62
|
};
|
|
57
63
|
|
|
58
|
-
const {
|
|
64
|
+
const { getByDisplayValue, getByTestId } = setup();
|
|
59
65
|
|
|
60
|
-
fireEvent.change(getByTestId(
|
|
66
|
+
fireEvent.change(getByTestId('autocomplete'), {
|
|
61
67
|
target: { value: 'Köpeniker' },
|
|
62
68
|
});
|
|
63
69
|
|
|
64
|
-
|
|
70
|
+
addressFieldTestIds.forEach((testId) =>
|
|
71
|
+
expect(getByTestId(testId)).toBeInTheDocument()
|
|
72
|
+
);
|
|
65
73
|
expect(getByDisplayValue('Köpeniker Strasse')).toBeVisible();
|
|
66
74
|
});
|
|
67
75
|
|
|
68
76
|
it('Should enable to enter the address manually', async () => {
|
|
69
77
|
const callback = jest.fn();
|
|
70
|
-
const { findByText,
|
|
78
|
+
const { findByText, getByTestId, user } = setup(undefined, callback);
|
|
71
79
|
const btn = await findByText('enter address manually');
|
|
72
80
|
|
|
73
81
|
await user.click(btn);
|
|
74
82
|
|
|
75
83
|
// fill out all fields
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
await user.type(
|
|
79
|
-
await user.type(
|
|
80
|
-
await user.type(inputs[3], '10179');
|
|
81
|
-
await user.type(inputs[4], 'Berlin');
|
|
84
|
+
await user.type(getByTestId('autocomplete'), 'Köpeniker Strasse');
|
|
85
|
+
await user.type(getByTestId('autocomplete-house-number'), '4000');
|
|
86
|
+
await user.type(getByTestId('autocomplete-postcode'), '10179');
|
|
87
|
+
await user.type(getByTestId('autocomplete-city'), 'Berlin');
|
|
82
88
|
|
|
83
89
|
// callback should be called with a complete address
|
|
84
90
|
expect(callback).toHaveBeenCalledWith(address);
|
|
@@ -264,7 +264,7 @@ const AutocompleteAddress = ({
|
|
|
264
264
|
className="w100"
|
|
265
265
|
id="autocomplete"
|
|
266
266
|
key="autocomplete-search"
|
|
267
|
-
data-
|
|
267
|
+
data-testid="autocomplete"
|
|
268
268
|
type="text"
|
|
269
269
|
placeholder={
|
|
270
270
|
placeholders?.manualAddressEntry || 'Search for address'
|
|
@@ -274,7 +274,7 @@ const AutocompleteAddress = ({
|
|
|
274
274
|
/>
|
|
275
275
|
{hasLoadedGoogleAPI === false && (
|
|
276
276
|
<div
|
|
277
|
-
data-
|
|
277
|
+
data-testid="google-api-loader"
|
|
278
278
|
className={styles['loading-spinner']}
|
|
279
279
|
>
|
|
280
280
|
<div className="ds-spinner ds-spinner__m" />
|
|
@@ -286,7 +286,7 @@ const AutocompleteAddress = ({
|
|
|
286
286
|
<div className={`d-flex c-gap16 ${styles['input-line']}`}>
|
|
287
287
|
<Input
|
|
288
288
|
className="w100"
|
|
289
|
-
data-
|
|
289
|
+
data-testid="autocomplete"
|
|
290
290
|
key="autocomplete-street"
|
|
291
291
|
type="text"
|
|
292
292
|
placeholder={placeholders?.street || 'Street'}
|
|
@@ -297,7 +297,7 @@ const AutocompleteAddress = ({
|
|
|
297
297
|
/>
|
|
298
298
|
<Input
|
|
299
299
|
className={`wmx2 ${styles['house-number-input']}`}
|
|
300
|
-
data-
|
|
300
|
+
data-testid="autocomplete-house-number"
|
|
301
301
|
key="autocomplete-house-number"
|
|
302
302
|
placeholder={placeholders?.houseNumber || 'House number'}
|
|
303
303
|
value={address?.houseNumber || ''}
|
|
@@ -308,7 +308,7 @@ const AutocompleteAddress = ({
|
|
|
308
308
|
</div>
|
|
309
309
|
<Input
|
|
310
310
|
className="mt16"
|
|
311
|
-
data-
|
|
311
|
+
data-testid="autocomplete-additional-info"
|
|
312
312
|
key="autocomplete-additional-info"
|
|
313
313
|
placeholder={
|
|
314
314
|
placeholders?.additionalInformation ||
|
|
@@ -322,7 +322,7 @@ const AutocompleteAddress = ({
|
|
|
322
322
|
<div className={`d-flex mt16 c-gap16 ${styles['input-line']}`}>
|
|
323
323
|
<Input
|
|
324
324
|
className="w100"
|
|
325
|
-
data-
|
|
325
|
+
data-testid="autocomplete-postcode"
|
|
326
326
|
key="autocomplete-postcode"
|
|
327
327
|
placeholder={placeholders?.postcode || 'Postcode'}
|
|
328
328
|
value={address?.postcode || ''}
|
|
@@ -332,7 +332,7 @@ const AutocompleteAddress = ({
|
|
|
332
332
|
/>
|
|
333
333
|
<Input
|
|
334
334
|
className="w100"
|
|
335
|
-
data-
|
|
335
|
+
data-testid="autocomplete-city"
|
|
336
336
|
key="autocomplete-city"
|
|
337
337
|
placeholder={placeholders?.city || 'City'}
|
|
338
338
|
value={address?.city || ''}
|
|
@@ -18,7 +18,6 @@ const COLLECTABLE_DATE_FORMAT = 'YYYY-MM-DD';
|
|
|
18
18
|
type FormatPlaceholder = 'dayFormat' | 'monthFormat' | 'yearFormat';
|
|
19
19
|
|
|
20
20
|
interface DateSelectorInputProps extends InputProps {
|
|
21
|
-
'data-cy': string;
|
|
22
21
|
'data-testid': string;
|
|
23
22
|
ref: (el: HTMLInputElement) => void;
|
|
24
23
|
}
|
|
@@ -212,7 +211,6 @@ export const DateSelector = ({
|
|
|
212
211
|
}
|
|
213
212
|
|
|
214
213
|
const getInputProps = (key: keyof CalendarDate, index: number): DateSelectorInputProps => ({
|
|
215
|
-
'data-cy': `date-selector-${key}`,
|
|
216
214
|
'data-testid': `date-selector-${key}`,
|
|
217
215
|
className: styles[`${key}Input`],
|
|
218
216
|
id: key,
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { fireEvent, render, screen } from '../../util/testUtils';
|
|
2
|
+
import { DownloadButton } from '.';
|
|
3
|
+
|
|
4
|
+
describe('DownloadButton', () => {
|
|
5
|
+
it.each(['INITIAL', 'FAILED'] as const)(
|
|
6
|
+
'exposes the %s download button as download-documents-button',
|
|
7
|
+
(downloadStatus) => {
|
|
8
|
+
const onDownload = jest.fn();
|
|
9
|
+
|
|
10
|
+
render(
|
|
11
|
+
<DownloadButton
|
|
12
|
+
downloadStatus={downloadStatus}
|
|
13
|
+
onDownload={onDownload}
|
|
14
|
+
/>
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
fireEvent.click(screen.getByTestId('download-documents-button'));
|
|
18
|
+
|
|
19
|
+
expect(onDownload).toHaveBeenCalledTimes(1);
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
});
|
|
@@ -15,7 +15,7 @@ const InitialButton = ({ onDownload }: { onDownload: () => void }) => (
|
|
|
15
15
|
className={`w100 ${styles.button}`}
|
|
16
16
|
leftIcon={<DownloadIcon />}
|
|
17
17
|
onClick={onDownload}
|
|
18
|
-
data-
|
|
18
|
+
data-testid="download-documents-button"
|
|
19
19
|
>
|
|
20
20
|
Download
|
|
21
21
|
</Button>
|