@popsure/dirty-swan 0.66.27 → 0.66.29

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 (36) hide show
  1. package/dist/cjs/index.js +14 -6
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/lib/components/downloadButton/index.test.d.ts +1 -0
  4. package/dist/cjs/lib/components/input/autoSuggestInput/index.test.d.ts +1 -0
  5. package/dist/cjs/lib/components/tabs/Tabs.d.ts +1 -0
  6. package/dist/esm/components/autocompleteAddress/index.js +2 -2
  7. package/dist/esm/components/autocompleteAddress/index.js.map +1 -1
  8. package/dist/esm/components/autocompleteAddress/index.test.js +21 -12
  9. package/dist/esm/components/autocompleteAddress/index.test.js.map +1 -1
  10. package/dist/esm/components/downloadButton/index.js +1 -1
  11. package/dist/esm/components/downloadButton/index.js.map +1 -1
  12. package/dist/esm/components/downloadButton/index.test.js +25 -0
  13. package/dist/esm/components/downloadButton/index.test.js.map +1 -0
  14. package/dist/esm/components/input/autoSuggestInput/index.js +1 -1
  15. package/dist/esm/components/input/autoSuggestInput/index.js.map +1 -1
  16. package/dist/esm/components/input/autoSuggestInput/index.test.js +24 -0
  17. package/dist/esm/components/input/autoSuggestInput/index.test.js.map +1 -0
  18. package/dist/esm/components/table/Table.js +9 -1
  19. package/dist/esm/components/table/Table.js.map +1 -1
  20. package/dist/esm/components/table/Table.test.js +25 -0
  21. package/dist/esm/components/table/Table.test.js.map +1 -1
  22. package/dist/esm/components/tabs/Tabs.js +1 -1
  23. package/dist/esm/components/tabs/Tabs.js.map +1 -1
  24. package/dist/esm/lib/components/downloadButton/index.test.d.ts +1 -0
  25. package/dist/esm/lib/components/input/autoSuggestInput/index.test.d.ts +1 -0
  26. package/dist/esm/lib/components/tabs/Tabs.d.ts +1 -0
  27. package/package.json +1 -1
  28. package/src/lib/components/autocompleteAddress/index.test.tsx +17 -11
  29. package/src/lib/components/autocompleteAddress/index.tsx +7 -0
  30. package/src/lib/components/downloadButton/index.test.tsx +22 -0
  31. package/src/lib/components/downloadButton/index.tsx +1 -0
  32. package/src/lib/components/input/autoSuggestInput/index.test.tsx +22 -0
  33. package/src/lib/components/input/autoSuggestInput/index.tsx +1 -0
  34. package/src/lib/components/table/Table.test.tsx +43 -0
  35. package/src/lib/components/table/Table.tsx +9 -1
  36. package/src/lib/components/tabs/Tabs.tsx +2 -0
@@ -1,6 +1,7 @@
1
1
  export interface TabItem {
2
2
  id: string;
3
3
  label: string;
4
+ dataTestId?: string;
4
5
  }
5
6
  export interface TabsProps {
6
7
  tabs: TabItem[];
@@ -185,8 +185,8 @@ var AutocompleteAddress = function (_a) {
185
185
  };
186
186
  return (jsxs(Fragment, { children: [jsxs("div", { className: classNames("wmx8 bg-neutral-600 ".concat(styles['map-container']), (_b = {},
187
187
  _b[styles['map-container--hidden']] = place === null,
188
- _b)), children: [jsx("div", { className: styles.map, id: "map", "aria-hidden": "true" }), isLoading && (jsx("div", { className: styles['loading-spinner'], children: jsx("div", { className: "ds-spinner ds-spinner__m" }) }))] }), jsx("div", { className: "wmx8", children: manualAddressEntry === false ? (jsxs("div", { style: { position: 'relative' }, children: [jsx(Input, { className: "w100", id: "autocomplete", "data-cy": "autocomplete", type: "text", placeholder: (placeholders === null || placeholders === void 0 ? void 0 : placeholders.manualAddressEntry) || 'Search for address', ref: autocompleteElement, disabled: hasLoadedGoogleAPI === false }, "autocomplete-search"), hasLoadedGoogleAPI === false && (jsx("div", { "data-cy": "google-api-loader", className: styles['loading-spinner'], children: jsx("div", { className: "ds-spinner ds-spinner__m" }) }))] })) : (jsxs(Fragment, { children: [jsxs("div", { className: "d-flex c-gap16 ".concat(styles['input-line']), children: [jsx(Input, __assign({ className: "w100", "data-cy": "autocomplete", type: "text", placeholder: (placeholders === null || placeholders === void 0 ? void 0 : placeholders.street) || 'Street', value: (address === null || address === void 0 ? void 0 : address.street) || '', onChange: onManualAddressChange(), name: "street" }, inputProps === null || inputProps === void 0 ? void 0 : inputProps.street), "autocomplete-street"), jsx(Input, __assign({ className: "wmx2 ".concat(styles['house-number-input']), "data-cy": "autocomplete-house-number", placeholder: (placeholders === null || placeholders === void 0 ? void 0 : placeholders.houseNumber) || 'House number', value: (address === null || address === void 0 ? void 0 : address.houseNumber) || '', name: "houseNumber", onChange: onManualAddressChange() }, inputProps === null || inputProps === void 0 ? void 0 : inputProps.houseNumber), "autocomplete-house-number")] }), jsx(Input, __assign({ className: "mt16", "data-cy": "autocomplete-additional-info", placeholder: (placeholders === null || placeholders === void 0 ? void 0 : placeholders.additionalInformation) ||
189
- 'Additional information (C/O, apartment, etc.)', value: (address === null || address === void 0 ? void 0 : address.additionalInformation) || '', name: "additionalInformation", onChange: onManualAddressChange({ updatePlace: false }) }, inputProps === null || inputProps === void 0 ? void 0 : inputProps.additionalInformation), "autocomplete-additional-info"), jsxs("div", { className: "d-flex mt16 c-gap16 ".concat(styles['input-line']), children: [jsx(Input, __assign({ className: "w100", "data-cy": "autocomplete-postcode", placeholder: (placeholders === null || placeholders === void 0 ? void 0 : placeholders.postcode) || 'Postcode', value: (address === null || address === void 0 ? void 0 : address.postcode) || '', name: "postcode", onChange: onManualAddressChange() }, inputProps === null || inputProps === void 0 ? void 0 : inputProps.postcode), "autocomplete-postcode"), jsx(Input, __assign({ className: "w100", "data-cy": "autocomplete-city", placeholder: (placeholders === null || placeholders === void 0 ? void 0 : placeholders.city) || 'City', value: (address === null || address === void 0 ? void 0 : address.city) || '', name: "city", onChange: onManualAddressChange() }, inputProps === null || inputProps === void 0 ? void 0 : inputProps.city), "autocomplete-city")] })] })) }), manualAddressEntry === false && (jsxs("div", { className: "p-p mt8", children: [(manualAddressEntryTexts === null || manualAddressEntryTexts === void 0 ? void 0 : manualAddressEntryTexts.preText) || 'Or ', jsx("button", { className: 'p-a p-p fw-bold c-pointer bg-transparent', onClick: handleEnterAddressManually, type: "button", children: (manualAddressEntryTexts === null || manualAddressEntryTexts === void 0 ? void 0 : manualAddressEntryTexts.cta) || 'enter address manually' })] }))] }));
188
+ _b)), children: [jsx("div", { className: styles.map, id: "map", "aria-hidden": "true" }), isLoading && (jsx("div", { className: styles['loading-spinner'], children: jsx("div", { className: "ds-spinner ds-spinner__m" }) }))] }), jsx("div", { className: "wmx8", children: manualAddressEntry === false ? (jsxs("div", { style: { position: 'relative' }, children: [jsx(Input, { className: "w100", id: "autocomplete", "data-cy": "autocomplete", "data-testid": "autocomplete", type: "text", placeholder: (placeholders === null || placeholders === void 0 ? void 0 : placeholders.manualAddressEntry) || 'Search for address', ref: autocompleteElement, disabled: hasLoadedGoogleAPI === false }, "autocomplete-search"), hasLoadedGoogleAPI === false && (jsx("div", { "data-cy": "google-api-loader", "data-testid": "google-api-loader", className: styles['loading-spinner'], children: jsx("div", { className: "ds-spinner ds-spinner__m" }) }))] })) : (jsxs(Fragment, { children: [jsxs("div", { className: "d-flex c-gap16 ".concat(styles['input-line']), children: [jsx(Input, __assign({ className: "w100", "data-cy": "autocomplete", "data-testid": "autocomplete", type: "text", placeholder: (placeholders === null || placeholders === void 0 ? void 0 : placeholders.street) || 'Street', value: (address === null || address === void 0 ? void 0 : address.street) || '', onChange: onManualAddressChange(), name: "street" }, inputProps === null || inputProps === void 0 ? void 0 : inputProps.street), "autocomplete-street"), jsx(Input, __assign({ className: "wmx2 ".concat(styles['house-number-input']), "data-cy": "autocomplete-house-number", "data-testid": "autocomplete-house-number", placeholder: (placeholders === null || placeholders === void 0 ? void 0 : placeholders.houseNumber) || 'House number', value: (address === null || address === void 0 ? void 0 : address.houseNumber) || '', name: "houseNumber", onChange: onManualAddressChange() }, inputProps === null || inputProps === void 0 ? void 0 : inputProps.houseNumber), "autocomplete-house-number")] }), jsx(Input, __assign({ className: "mt16", "data-cy": "autocomplete-additional-info", "data-testid": "autocomplete-additional-info", placeholder: (placeholders === null || placeholders === void 0 ? void 0 : placeholders.additionalInformation) ||
189
+ 'Additional information (C/O, apartment, etc.)', value: (address === null || address === void 0 ? void 0 : address.additionalInformation) || '', name: "additionalInformation", onChange: onManualAddressChange({ updatePlace: false }) }, inputProps === null || inputProps === void 0 ? void 0 : inputProps.additionalInformation), "autocomplete-additional-info"), jsxs("div", { className: "d-flex mt16 c-gap16 ".concat(styles['input-line']), children: [jsx(Input, __assign({ className: "w100", "data-cy": "autocomplete-postcode", "data-testid": "autocomplete-postcode", placeholder: (placeholders === null || placeholders === void 0 ? void 0 : placeholders.postcode) || 'Postcode', value: (address === null || address === void 0 ? void 0 : address.postcode) || '', name: "postcode", onChange: onManualAddressChange() }, inputProps === null || inputProps === void 0 ? void 0 : inputProps.postcode), "autocomplete-postcode"), jsx(Input, __assign({ className: "w100", "data-cy": "autocomplete-city", "data-testid": "autocomplete-city", placeholder: (placeholders === null || placeholders === void 0 ? void 0 : placeholders.city) || 'City', value: (address === null || address === void 0 ? void 0 : address.city) || '', name: "city", onChange: onManualAddressChange() }, inputProps === null || inputProps === void 0 ? void 0 : inputProps.city), "autocomplete-city")] })] })) }), manualAddressEntry === false && (jsxs("div", { className: "p-p mt8", children: [(manualAddressEntryTexts === null || manualAddressEntryTexts === void 0 ? void 0 : manualAddressEntryTexts.preText) || 'Or ', jsx("button", { className: 'p-a p-p fw-bold c-pointer bg-transparent', onClick: handleEnterAddressManually, type: "button", children: (manualAddressEntryTexts === null || manualAddressEntryTexts === void 0 ? void 0 : manualAddressEntryTexts.cta) || 'enter address manually' })] }))] }));
190
190
  };
191
191
 
192
192
  export { AutocompleteAddress };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/lib/components/autocompleteAddress/util/index.ts","../../../../../src/lib/components/autocompleteAddress/index.tsx"],"sourcesContent":["import {\n Address,\n countryNameFromAlphaCode,\n Alpha2CountryCode,\n} from '@popsure/public-models';\n\nexport const geocoderAddressComponentToPartialAddress = (\n input: google.maps.GeocoderAddressComponent[]\n): Partial<Address> => {\n interface MappedType {\n key: keyof Address;\n value: 'long_name' | 'short_name';\n }\n\n const mapping: {\n route: MappedType;\n street_number: MappedType;\n postal_code: MappedType;\n locality: MappedType;\n country: MappedType;\n } = {\n route: {\n key: 'street',\n value: 'long_name',\n },\n street_number: {\n key: 'houseNumber',\n value: 'long_name',\n },\n postal_code: {\n key: 'postcode',\n value: 'long_name',\n },\n locality: {\n key: 'city',\n value: 'long_name',\n },\n country: {\n key: 'country',\n value: 'short_name',\n },\n };\n\n const toReturn: Partial<Address> = {};\n input.forEach((value) => {\n const type = value.types[0] as keyof typeof mapping;\n const mappedValue = mapping[type];\n if (mappedValue) {\n const isPostalCodePrefix = value.types.includes(\n 'postal_code_prefix' as string\n );\n if (mappedValue.key === 'postcode' && isPostalCodePrefix) {\n return;\n }\n toReturn[mappedValue.key] = value[mappedValue.value];\n }\n });\n\n return toReturn;\n};\n\nexport const inlineAddress = (address: Address) =>\n `${address.street} ${address.houseNumber}, ${\n address.city\n }, ${countryNameFromAlphaCode(address.country as Alpha2CountryCode)}`;\n","import { ChangeEvent, useCallback, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { Input } from '../input';\nimport {\n Address,\n Alpha2CountryCode,\n countryNameFromAlphaCode,\n} from '@popsure/public-models';\n\nimport { geocoderAddressComponentToPartialAddress } from './util';\n\nimport styles from './style.module.scss';\n\nconst GERMANY_LAT_LNG = { lat: 51.54317, lng: 10.3181503 };\n\nconst GERMANY_ALPHA_CODE = 'DE';\n\nconst MAP_CONFIG_OBJ = {\n zoom: 6,\n center: GERMANY_LAT_LNG,\n fullscreenControl: false,\n mapTypeControl: false,\n panControl: false,\n zoomControl: false,\n streetViewControl: false,\n scrollwheel: false,\n scaleControl: false,\n rotateControl: false,\n draggable: false,\n};\n\nconst loadGoogleMapsApiDynamically = (callback: () => void, apiKey: string) => {\n const existingScript = document.getElementById('googleMapsImportScript');\n\n if (existingScript) {\n return;\n }\n\n const googleMapImportScript = document.createElement('script');\n googleMapImportScript.id = 'googleMapsImportScript';\n googleMapImportScript.type = 'text/javascript';\n googleMapImportScript.src = `https://maps.googleapis.com/maps/api/js?key=${apiKey}&libraries=places`;\n document.head.appendChild(googleMapImportScript);\n\n googleMapImportScript.onload = () => {\n callback();\n };\n};\n\nexport interface AutocompleteAddressProps {\n apiKey: string;\n address?: Partial<Address>;\n onAddressChange: (address: Partial<Address>) => void;\n inputProps?: {\n street?: {\n name?: string;\n };\n houseNumber?: {\n name?: string;\n };\n additionalInformation?: {\n name?: string;\n };\n postcode?: {\n name?: string;\n };\n city?: {\n name?: string;\n };\n };\n placeholders?: {\n manualAddressEntry?: string;\n street?: string;\n houseNumber?: string;\n additionalInformation?: string;\n postcode?: string;\n city?: string;\n };\n manualAddressEntryTexts?: {\n preText?: string;\n cta?: string;\n };\n countryCode?: string;\n}\n\nconst AutocompleteAddress = ({\n apiKey,\n address: initialAddress,\n onAddressChange,\n placeholders,\n manualAddressEntryTexts,\n inputProps,\n countryCode = GERMANY_ALPHA_CODE\n}: AutocompleteAddressProps) => {\n const [manualAddressEntry, setManualAddressEntry] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const autocomplete = useRef<google.maps.places.Autocomplete | null>(null);\n const autocompleteElement = useRef<HTMLInputElement | null>(null);\n const map = useRef<google.maps.Map | null>(null);\n const marker = useRef<google.maps.Marker | null>(null);\n const [address, setAddress] = useState(initialAddress);\n const [hasLoadedGoogleAPI, setHasLoadedGoogleAPI] = useState(\n window.google?.maps !== undefined\n );\n\n loadGoogleMapsApiDynamically(() => {\n setHasLoadedGoogleAPI(true);\n }, apiKey);\n\n const [place, setPlace] = useState<google.maps.places.PlaceResult | null>(\n null\n );\n\n useEffect(() => {\n if (address) {\n if (autocompleteElement.current && address.street) {\n autocompleteElement.current.value = address.street;\n }\n\n handleEnterAddressManually();\n }\n }, [address, onAddressChange, hasLoadedGoogleAPI]);\n\n useEffect(() => {\n if (!hasLoadedGoogleAPI) {\n return;\n }\n\n const reference = document.getElementById(\n 'autocomplete'\n ) as HTMLInputElement;\n\n autocomplete.current = new google.maps.places.Autocomplete(reference, {\n types: ['address'],\n componentRestrictions: { country: countryCode },\n });\n\n autocomplete.current.addListener('place_changed', onPlaceChanged);\n\n map.current = new google.maps.Map(\n document.getElementById('map')!,\n MAP_CONFIG_OBJ\n );\n\n import('./mapStyle').then(({ style }) => {\n map.current?.mapTypes.set('styled_map', style);\n map.current?.setMapTypeId('styled_map');\n });\n\n marker.current = new google.maps.Marker({\n map: map.current,\n });\n\n setPlaceFromAddress(address);\n }, [hasLoadedGoogleAPI, countryCode]); // eslint-disable-line\n\n const onPlaceChanged = (\n newPlace:\n | google.maps.places.PlaceResult\n | undefined = autocomplete.current?.getPlace(),\n updateAddress: boolean = true\n ) => {\n if (newPlace?.geometry?.location) {\n const geocoderAddress = geocoderAddressComponentToPartialAddress(\n newPlace.address_components!\n );\n\n setPlace(newPlace);\n if (updateAddress) {\n setAddress((oldValue) => ({\n ...geocoderAddress,\n additionalInformation: oldValue?.additionalInformation,\n }));\n onAddressChange?.(geocoderAddress);\n }\n\n map.current?.panTo(newPlace.geometry.location);\n map.current?.setZoom(15);\n\n marker.current?.setPosition(newPlace.geometry.location);\n }\n };\n\n const setPlaceFromAddress = useCallback(\n (address: Partial<Address> | undefined) => {\n if (!map.current) {\n return;\n }\n\n if (address) {\n const service = new google.maps.places.PlacesService(map.current);\n const query = `${address.street ?? ''} ${address.houseNumber ?? ''}, ${\n address.city ?? ''\n }, ${\n address.country\n ? countryNameFromAlphaCode(address.country as Alpha2CountryCode)\n : ''\n }`;\n setIsLoading(true);\n service.findPlaceFromQuery(\n {\n fields: ['place_id'],\n query,\n },\n (results) => {\n const firstResult = results && results[0];\n if (firstResult && firstResult.place_id) {\n service.getDetails(\n { placeId: firstResult.place_id },\n (newPlace) => {\n onPlaceChanged(newPlace ?? undefined, false);\n }\n );\n }\n setIsLoading(false);\n }\n );\n }\n },\n []\n );\n\n const debouncedSetPlace = debounce(setPlaceFromAddress, 2000);\n\n const handleEnterAddressManually = () => {\n setManualAddressEntry(true);\n };\n\n const onManualAddressChange =\n ({ updatePlace } = { updatePlace: true }) =>\n (e: ChangeEvent<HTMLInputElement>) => {\n const newAddress = {\n ...address,\n [e.target.name]: e.target.value,\n country: countryCode,\n };\n setAddress(newAddress);\n onAddressChange(newAddress);\n\n if (updatePlace) {\n debouncedSetPlace(newAddress);\n }\n };\n\n return (\n <>\n <div\n className={classNames(`wmx8 bg-neutral-600 ${styles['map-container']}`, {\n [styles['map-container--hidden']]: place === null,\n })}\n >\n <div className={styles.map} id=\"map\" aria-hidden=\"true\" />\n {isLoading && (\n <div className={styles['loading-spinner']}>\n <div className=\"ds-spinner ds-spinner__m\" />\n </div>\n )}\n </div>\n <div className={`wmx8`}>\n {manualAddressEntry === false ? (\n <div style={{ position: 'relative' }}>\n <Input\n className=\"w100\"\n id=\"autocomplete\"\n key=\"autocomplete-search\"\n data-cy=\"autocomplete\"\n type=\"text\"\n placeholder={\n placeholders?.manualAddressEntry || 'Search for address'\n }\n ref={autocompleteElement}\n disabled={hasLoadedGoogleAPI === false}\n />\n {hasLoadedGoogleAPI === false && (\n <div\n data-cy=\"google-api-loader\"\n className={styles['loading-spinner']}\n >\n <div className=\"ds-spinner ds-spinner__m\" />\n </div>\n )}\n </div>\n ) : (\n <>\n <div className={`d-flex c-gap16 ${styles['input-line']}`}>\n <Input\n className=\"w100\"\n data-cy=\"autocomplete\"\n key=\"autocomplete-street\"\n type=\"text\"\n placeholder={placeholders?.street || 'Street'}\n value={address?.street || ''}\n onChange={onManualAddressChange()}\n name=\"street\"\n {...inputProps?.street}\n />\n <Input\n className={`wmx2 ${styles['house-number-input']}`}\n data-cy=\"autocomplete-house-number\"\n key=\"autocomplete-house-number\"\n placeholder={placeholders?.houseNumber || 'House number'}\n value={address?.houseNumber || ''}\n name=\"houseNumber\"\n onChange={onManualAddressChange()}\n {...inputProps?.houseNumber}\n />\n </div>\n <Input\n className=\"mt16\"\n data-cy=\"autocomplete-additional-info\"\n key=\"autocomplete-additional-info\"\n placeholder={\n placeholders?.additionalInformation ||\n 'Additional information (C/O, apartment, etc.)'\n }\n value={address?.additionalInformation || ''}\n name=\"additionalInformation\"\n onChange={onManualAddressChange({ updatePlace: false })}\n {...inputProps?.additionalInformation}\n />\n <div className={`d-flex mt16 c-gap16 ${styles['input-line']}`}>\n <Input\n className=\"w100\"\n data-cy=\"autocomplete-postcode\"\n key=\"autocomplete-postcode\"\n placeholder={placeholders?.postcode || 'Postcode'}\n value={address?.postcode || ''}\n name=\"postcode\"\n onChange={onManualAddressChange()}\n {...inputProps?.postcode}\n />\n <Input\n className=\"w100\"\n data-cy=\"autocomplete-city\"\n key=\"autocomplete-city\"\n placeholder={placeholders?.city || 'City'}\n value={address?.city || ''}\n name=\"city\"\n onChange={onManualAddressChange()}\n {...inputProps?.city}\n />\n </div>\n </>\n )}\n </div>\n {manualAddressEntry === false && (\n <div className=\"p-p mt8\">\n {manualAddressEntryTexts?.preText || 'Or '}\n <button\n className={'p-a p-p fw-bold c-pointer bg-transparent'}\n onClick={handleEnterAddressManually}\n type=\"button\"\n >\n {manualAddressEntryTexts?.cta || 'enter address manually'}\n </button>\n </div>\n )}\n </>\n );\n};\n\nexport { AutocompleteAddress };\n"],"names":["countryNameFromAlphaCode","_jsxs","_Fragment","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/lib/components/autocompleteAddress/util/index.ts","../../../../../src/lib/components/autocompleteAddress/index.tsx"],"sourcesContent":["import {\n Address,\n countryNameFromAlphaCode,\n Alpha2CountryCode,\n} from '@popsure/public-models';\n\nexport const geocoderAddressComponentToPartialAddress = (\n input: google.maps.GeocoderAddressComponent[]\n): Partial<Address> => {\n interface MappedType {\n key: keyof Address;\n value: 'long_name' | 'short_name';\n }\n\n const mapping: {\n route: MappedType;\n street_number: MappedType;\n postal_code: MappedType;\n locality: MappedType;\n country: MappedType;\n } = {\n route: {\n key: 'street',\n value: 'long_name',\n },\n street_number: {\n key: 'houseNumber',\n value: 'long_name',\n },\n postal_code: {\n key: 'postcode',\n value: 'long_name',\n },\n locality: {\n key: 'city',\n value: 'long_name',\n },\n country: {\n key: 'country',\n value: 'short_name',\n },\n };\n\n const toReturn: Partial<Address> = {};\n input.forEach((value) => {\n const type = value.types[0] as keyof typeof mapping;\n const mappedValue = mapping[type];\n if (mappedValue) {\n const isPostalCodePrefix = value.types.includes(\n 'postal_code_prefix' as string\n );\n if (mappedValue.key === 'postcode' && isPostalCodePrefix) {\n return;\n }\n toReturn[mappedValue.key] = value[mappedValue.value];\n }\n });\n\n return toReturn;\n};\n\nexport const inlineAddress = (address: Address) =>\n `${address.street} ${address.houseNumber}, ${\n address.city\n }, ${countryNameFromAlphaCode(address.country as Alpha2CountryCode)}`;\n","import { ChangeEvent, useCallback, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { Input } from '../input';\nimport {\n Address,\n Alpha2CountryCode,\n countryNameFromAlphaCode,\n} from '@popsure/public-models';\n\nimport { geocoderAddressComponentToPartialAddress } from './util';\n\nimport styles from './style.module.scss';\n\nconst GERMANY_LAT_LNG = { lat: 51.54317, lng: 10.3181503 };\n\nconst GERMANY_ALPHA_CODE = 'DE';\n\nconst MAP_CONFIG_OBJ = {\n zoom: 6,\n center: GERMANY_LAT_LNG,\n fullscreenControl: false,\n mapTypeControl: false,\n panControl: false,\n zoomControl: false,\n streetViewControl: false,\n scrollwheel: false,\n scaleControl: false,\n rotateControl: false,\n draggable: false,\n};\n\nconst loadGoogleMapsApiDynamically = (callback: () => void, apiKey: string) => {\n const existingScript = document.getElementById('googleMapsImportScript');\n\n if (existingScript) {\n return;\n }\n\n const googleMapImportScript = document.createElement('script');\n googleMapImportScript.id = 'googleMapsImportScript';\n googleMapImportScript.type = 'text/javascript';\n googleMapImportScript.src = `https://maps.googleapis.com/maps/api/js?key=${apiKey}&libraries=places`;\n document.head.appendChild(googleMapImportScript);\n\n googleMapImportScript.onload = () => {\n callback();\n };\n};\n\nexport interface AutocompleteAddressProps {\n apiKey: string;\n address?: Partial<Address>;\n onAddressChange: (address: Partial<Address>) => void;\n inputProps?: {\n street?: {\n name?: string;\n };\n houseNumber?: {\n name?: string;\n };\n additionalInformation?: {\n name?: string;\n };\n postcode?: {\n name?: string;\n };\n city?: {\n name?: string;\n };\n };\n placeholders?: {\n manualAddressEntry?: string;\n street?: string;\n houseNumber?: string;\n additionalInformation?: string;\n postcode?: string;\n city?: string;\n };\n manualAddressEntryTexts?: {\n preText?: string;\n cta?: string;\n };\n countryCode?: string;\n}\n\nconst AutocompleteAddress = ({\n apiKey,\n address: initialAddress,\n onAddressChange,\n placeholders,\n manualAddressEntryTexts,\n inputProps,\n countryCode = GERMANY_ALPHA_CODE\n}: AutocompleteAddressProps) => {\n const [manualAddressEntry, setManualAddressEntry] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const autocomplete = useRef<google.maps.places.Autocomplete | null>(null);\n const autocompleteElement = useRef<HTMLInputElement | null>(null);\n const map = useRef<google.maps.Map | null>(null);\n const marker = useRef<google.maps.Marker | null>(null);\n const [address, setAddress] = useState(initialAddress);\n const [hasLoadedGoogleAPI, setHasLoadedGoogleAPI] = useState(\n window.google?.maps !== undefined\n );\n\n loadGoogleMapsApiDynamically(() => {\n setHasLoadedGoogleAPI(true);\n }, apiKey);\n\n const [place, setPlace] = useState<google.maps.places.PlaceResult | null>(\n null\n );\n\n useEffect(() => {\n if (address) {\n if (autocompleteElement.current && address.street) {\n autocompleteElement.current.value = address.street;\n }\n\n handleEnterAddressManually();\n }\n }, [address, onAddressChange, hasLoadedGoogleAPI]);\n\n useEffect(() => {\n if (!hasLoadedGoogleAPI) {\n return;\n }\n\n const reference = document.getElementById(\n 'autocomplete'\n ) as HTMLInputElement;\n\n autocomplete.current = new google.maps.places.Autocomplete(reference, {\n types: ['address'],\n componentRestrictions: { country: countryCode },\n });\n\n autocomplete.current.addListener('place_changed', onPlaceChanged);\n\n map.current = new google.maps.Map(\n document.getElementById('map')!,\n MAP_CONFIG_OBJ\n );\n\n import('./mapStyle').then(({ style }) => {\n map.current?.mapTypes.set('styled_map', style);\n map.current?.setMapTypeId('styled_map');\n });\n\n marker.current = new google.maps.Marker({\n map: map.current,\n });\n\n setPlaceFromAddress(address);\n }, [hasLoadedGoogleAPI, countryCode]); // eslint-disable-line\n\n const onPlaceChanged = (\n newPlace:\n | google.maps.places.PlaceResult\n | undefined = autocomplete.current?.getPlace(),\n updateAddress: boolean = true\n ) => {\n if (newPlace?.geometry?.location) {\n const geocoderAddress = geocoderAddressComponentToPartialAddress(\n newPlace.address_components!\n );\n\n setPlace(newPlace);\n if (updateAddress) {\n setAddress((oldValue) => ({\n ...geocoderAddress,\n additionalInformation: oldValue?.additionalInformation,\n }));\n onAddressChange?.(geocoderAddress);\n }\n\n map.current?.panTo(newPlace.geometry.location);\n map.current?.setZoom(15);\n\n marker.current?.setPosition(newPlace.geometry.location);\n }\n };\n\n const setPlaceFromAddress = useCallback(\n (address: Partial<Address> | undefined) => {\n if (!map.current) {\n return;\n }\n\n if (address) {\n const service = new google.maps.places.PlacesService(map.current);\n const query = `${address.street ?? ''} ${address.houseNumber ?? ''}, ${\n address.city ?? ''\n }, ${\n address.country\n ? countryNameFromAlphaCode(address.country as Alpha2CountryCode)\n : ''\n }`;\n setIsLoading(true);\n service.findPlaceFromQuery(\n {\n fields: ['place_id'],\n query,\n },\n (results) => {\n const firstResult = results && results[0];\n if (firstResult && firstResult.place_id) {\n service.getDetails(\n { placeId: firstResult.place_id },\n (newPlace) => {\n onPlaceChanged(newPlace ?? undefined, false);\n }\n );\n }\n setIsLoading(false);\n }\n );\n }\n },\n []\n );\n\n const debouncedSetPlace = debounce(setPlaceFromAddress, 2000);\n\n const handleEnterAddressManually = () => {\n setManualAddressEntry(true);\n };\n\n const onManualAddressChange =\n ({ updatePlace } = { updatePlace: true }) =>\n (e: ChangeEvent<HTMLInputElement>) => {\n const newAddress = {\n ...address,\n [e.target.name]: e.target.value,\n country: countryCode,\n };\n setAddress(newAddress);\n onAddressChange(newAddress);\n\n if (updatePlace) {\n debouncedSetPlace(newAddress);\n }\n };\n\n return (\n <>\n <div\n className={classNames(`wmx8 bg-neutral-600 ${styles['map-container']}`, {\n [styles['map-container--hidden']]: place === null,\n })}\n >\n <div className={styles.map} id=\"map\" aria-hidden=\"true\" />\n {isLoading && (\n <div className={styles['loading-spinner']}>\n <div className=\"ds-spinner ds-spinner__m\" />\n </div>\n )}\n </div>\n <div className={`wmx8`}>\n {manualAddressEntry === false ? (\n <div style={{ position: 'relative' }}>\n <Input\n className=\"w100\"\n id=\"autocomplete\"\n key=\"autocomplete-search\"\n data-cy=\"autocomplete\"\n data-testid=\"autocomplete\"\n type=\"text\"\n placeholder={\n placeholders?.manualAddressEntry || 'Search for address'\n }\n ref={autocompleteElement}\n disabled={hasLoadedGoogleAPI === false}\n />\n {hasLoadedGoogleAPI === false && (\n <div\n data-cy=\"google-api-loader\"\n data-testid=\"google-api-loader\"\n className={styles['loading-spinner']}\n >\n <div className=\"ds-spinner ds-spinner__m\" />\n </div>\n )}\n </div>\n ) : (\n <>\n <div className={`d-flex c-gap16 ${styles['input-line']}`}>\n <Input\n className=\"w100\"\n data-cy=\"autocomplete\"\n data-testid=\"autocomplete\"\n key=\"autocomplete-street\"\n type=\"text\"\n placeholder={placeholders?.street || 'Street'}\n value={address?.street || ''}\n onChange={onManualAddressChange()}\n name=\"street\"\n {...inputProps?.street}\n />\n <Input\n className={`wmx2 ${styles['house-number-input']}`}\n data-cy=\"autocomplete-house-number\"\n data-testid=\"autocomplete-house-number\"\n key=\"autocomplete-house-number\"\n placeholder={placeholders?.houseNumber || 'House number'}\n value={address?.houseNumber || ''}\n name=\"houseNumber\"\n onChange={onManualAddressChange()}\n {...inputProps?.houseNumber}\n />\n </div>\n <Input\n className=\"mt16\"\n data-cy=\"autocomplete-additional-info\"\n data-testid=\"autocomplete-additional-info\"\n key=\"autocomplete-additional-info\"\n placeholder={\n placeholders?.additionalInformation ||\n 'Additional information (C/O, apartment, etc.)'\n }\n value={address?.additionalInformation || ''}\n name=\"additionalInformation\"\n onChange={onManualAddressChange({ updatePlace: false })}\n {...inputProps?.additionalInformation}\n />\n <div className={`d-flex mt16 c-gap16 ${styles['input-line']}`}>\n <Input\n className=\"w100\"\n data-cy=\"autocomplete-postcode\"\n data-testid=\"autocomplete-postcode\"\n key=\"autocomplete-postcode\"\n placeholder={placeholders?.postcode || 'Postcode'}\n value={address?.postcode || ''}\n name=\"postcode\"\n onChange={onManualAddressChange()}\n {...inputProps?.postcode}\n />\n <Input\n className=\"w100\"\n data-cy=\"autocomplete-city\"\n data-testid=\"autocomplete-city\"\n key=\"autocomplete-city\"\n placeholder={placeholders?.city || 'City'}\n value={address?.city || ''}\n name=\"city\"\n onChange={onManualAddressChange()}\n {...inputProps?.city}\n />\n </div>\n </>\n )}\n </div>\n {manualAddressEntry === false && (\n <div className=\"p-p mt8\">\n {manualAddressEntryTexts?.preText || 'Or '}\n <button\n className={'p-a p-p fw-bold c-pointer bg-transparent'}\n onClick={handleEnterAddressManually}\n type=\"button\"\n >\n {manualAddressEntryTexts?.cta || 'enter address manually'}\n </button>\n </div>\n )}\n </>\n );\n};\n\nexport { AutocompleteAddress };\n"],"names":["countryNameFromAlphaCode","_jsxs","_Fragment","_jsx"],"mappings":"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"}
@@ -26,10 +26,16 @@ var setup = function (address, onAddressChange) {
26
26
  if (onAddressChange === void 0) { onAddressChange = function () { }; }
27
27
  return customRender(jsx(AutocompleteAddress, { address: address, apiKey: '', onAddressChange: onAddressChange }));
28
28
  };
29
- var inputTestId = 'ds-input-input';
29
+ var addressFieldTestIds = [
30
+ 'autocomplete',
31
+ 'autocomplete-house-number',
32
+ 'autocomplete-additional-info',
33
+ 'autocomplete-postcode',
34
+ 'autocomplete-city',
35
+ ];
30
36
  describe('AutocompleteAddress component', function () {
31
37
  it('Should show all address fields once a search is completed', function () { return __awaiter(void 0, void 0, void 0, function () {
32
- var _a, getAllByTestId, getByDisplayValue, getByTestId;
38
+ var _a, getByDisplayValue, getByTestId;
33
39
  return __generator(this, function (_b) {
34
40
  // @ts-ignore
35
41
  window.google.maps.places.Autocomplete = /** @class */ (function () {
@@ -61,39 +67,42 @@ describe('AutocompleteAddress component', function () {
61
67
  };
62
68
  return class_1;
63
69
  }());
64
- _a = setup(), getAllByTestId = _a.getAllByTestId, getByDisplayValue = _a.getByDisplayValue, getByTestId = _a.getByTestId;
65
- fireEvent.change(getByTestId(inputTestId), {
70
+ _a = setup(), getByDisplayValue = _a.getByDisplayValue, getByTestId = _a.getByTestId;
71
+ fireEvent.change(getByTestId('autocomplete'), {
66
72
  target: { value: 'Köpeniker' },
67
73
  });
68
- expect(getAllByTestId(inputTestId).length).toEqual(5);
74
+ addressFieldTestIds.forEach(function (testId) {
75
+ return expect(getByTestId(testId)).toBeInTheDocument();
76
+ });
69
77
  expect(getByDisplayValue('Köpeniker Strasse')).toBeVisible();
70
78
  return [2 /*return*/];
71
79
  });
72
80
  }); });
73
81
  it('Should enable to enter the address manually', function () { return __awaiter(void 0, void 0, void 0, function () {
74
- var callback, _a, findByText, getAllByTestId, user, btn, inputs;
82
+ var callback, _a, findByText, getByTestId, user, btn;
75
83
  return __generator(this, function (_b) {
76
84
  switch (_b.label) {
77
85
  case 0:
78
86
  callback = jest.fn();
79
- _a = setup(undefined, callback), findByText = _a.findByText, getAllByTestId = _a.getAllByTestId, user = _a.user;
87
+ _a = setup(undefined, callback), findByText = _a.findByText, getByTestId = _a.getByTestId, user = _a.user;
80
88
  return [4 /*yield*/, findByText('enter address manually')];
81
89
  case 1:
82
90
  btn = _b.sent();
83
91
  return [4 /*yield*/, user.click(btn)];
84
92
  case 2:
85
93
  _b.sent();
86
- inputs = getAllByTestId(inputTestId);
87
- return [4 /*yield*/, user.type(inputs[0], 'Köpeniker Strasse')];
94
+ // fill out all fields
95
+ return [4 /*yield*/, user.type(getByTestId('autocomplete'), 'Köpeniker Strasse')];
88
96
  case 3:
97
+ // fill out all fields
89
98
  _b.sent();
90
- return [4 /*yield*/, user.type(inputs[1], '4000')];
99
+ return [4 /*yield*/, user.type(getByTestId('autocomplete-house-number'), '4000')];
91
100
  case 4:
92
101
  _b.sent();
93
- return [4 /*yield*/, user.type(inputs[3], '10179')];
102
+ return [4 /*yield*/, user.type(getByTestId('autocomplete-postcode'), '10179')];
94
103
  case 5:
95
104
  _b.sent();
96
- return [4 /*yield*/, user.type(inputs[4], 'Berlin')];
105
+ return [4 /*yield*/, user.type(getByTestId('autocomplete-city'), 'Berlin')];
97
106
  case 6:
98
107
  _b.sent();
99
108
  // callback should be called with a complete address
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sources":["../../../../../src/lib/components/autocompleteAddress/index.test.tsx"],"sourcesContent":["import { Address } from '@popsure/public-models';\nimport { fireEvent, render } from '../../util/testUtils';\n\nimport { AutocompleteAddress } from '.';\n\nconst address = {\n street: 'Köpeniker Strasse',\n houseNumber: '4000',\n postcode: '10179',\n city: 'Berlin',\n country: 'DE',\n};\n\nconst setup = (\n address: Partial<Address> | undefined = undefined,\n onAddressChange: (address: Partial<Address>) => void = () => {}\n) => {\n return render(\n <AutocompleteAddress\n address={address}\n apiKey={''}\n onAddressChange={onAddressChange}\n />\n );\n};\n\nconst inputTestId = 'ds-input-input';\n\ndescribe('AutocompleteAddress component', () => {\n it('Should show all address fields once a search is completed', async () => {\n // @ts-ignore\n window.google.maps.places.Autocomplete = class {\n reference: HTMLElement;\n constructor(reference: HTMLElement) {\n this.reference = reference;\n }\n // @ts-ignore\n addListener(_action, callback) {\n this.reference.addEventListener('change', (e: Event) =>\n (e.target as HTMLInputElement).value !== ''\n ? callback({\n geometry: {\n location: class {},\n },\n address_components: [\n {\n long_name: 'Köpeniker Strasse',\n short_name: 'Köpeniker Strasse',\n types: ['route'],\n },\n ],\n })\n : null\n );\n }\n };\n\n const { getAllByTestId, getByDisplayValue, getByTestId } = setup();\n\n fireEvent.change(getByTestId(inputTestId), {\n target: { value: 'Köpeniker' },\n });\n\n expect(getAllByTestId(inputTestId).length).toEqual(5);\n expect(getByDisplayValue('Köpeniker Strasse')).toBeVisible();\n });\n\n it('Should enable to enter the address manually', async () => {\n const callback = jest.fn();\n const { findByText, getAllByTestId, user } = setup(undefined, callback);\n const btn = await findByText('enter address manually');\n\n await user.click(btn);\n\n // fill out all fields\n const inputs = getAllByTestId(inputTestId);\n\n await user.type(inputs[0], 'Köpeniker Strasse');\n await user.type(inputs[1], '4000');\n await user.type(inputs[3], '10179');\n await user.type(inputs[4], 'Berlin');\n\n // callback should be called with a complete address\n expect(callback).toHaveBeenCalledWith(address);\n });\n\n it('Should prefill fields if an address is provided', async () => {\n const { getByDisplayValue } = setup(address);\n\n expect(getByDisplayValue('Köpeniker Strasse')).toBeVisible();\n expect(getByDisplayValue('4000')).toBeVisible();\n expect(getByDisplayValue('10179')).toBeVisible();\n expect(getByDisplayValue('Berlin')).toBeVisible();\n });\n});\n"],"names":["render","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"index.test.js","sources":["../../../../../src/lib/components/autocompleteAddress/index.test.tsx"],"sourcesContent":["import { Address } from '@popsure/public-models';\nimport { fireEvent, render } from '../../util/testUtils';\n\nimport { AutocompleteAddress } from '.';\n\nconst address = {\n street: 'Köpeniker Strasse',\n houseNumber: '4000',\n postcode: '10179',\n city: 'Berlin',\n country: 'DE',\n};\n\nconst setup = (\n address: Partial<Address> | undefined = undefined,\n onAddressChange: (address: Partial<Address>) => void = () => {}\n) => {\n return render(\n <AutocompleteAddress\n address={address}\n apiKey={''}\n onAddressChange={onAddressChange}\n />\n );\n};\n\nconst addressFieldTestIds = [\n 'autocomplete',\n 'autocomplete-house-number',\n 'autocomplete-additional-info',\n 'autocomplete-postcode',\n 'autocomplete-city',\n];\n\ndescribe('AutocompleteAddress component', () => {\n it('Should show all address fields once a search is completed', async () => {\n // @ts-ignore\n window.google.maps.places.Autocomplete = class {\n reference: HTMLElement;\n constructor(reference: HTMLElement) {\n this.reference = reference;\n }\n // @ts-ignore\n addListener(_action, callback) {\n this.reference.addEventListener('change', (e: Event) =>\n (e.target as HTMLInputElement).value !== ''\n ? callback({\n geometry: {\n location: class {},\n },\n address_components: [\n {\n long_name: 'Köpeniker Strasse',\n short_name: 'Köpeniker Strasse',\n types: ['route'],\n },\n ],\n })\n : null\n );\n }\n };\n\n const { getByDisplayValue, getByTestId } = setup();\n\n fireEvent.change(getByTestId('autocomplete'), {\n target: { value: 'Köpeniker' },\n });\n\n addressFieldTestIds.forEach((testId) =>\n expect(getByTestId(testId)).toBeInTheDocument()\n );\n expect(getByDisplayValue('Köpeniker Strasse')).toBeVisible();\n });\n\n it('Should enable to enter the address manually', async () => {\n const callback = jest.fn();\n const { findByText, getByTestId, user } = setup(undefined, callback);\n const btn = await findByText('enter address manually');\n\n await user.click(btn);\n\n // fill out all fields\n await user.type(getByTestId('autocomplete'), 'Köpeniker Strasse');\n await user.type(getByTestId('autocomplete-house-number'), '4000');\n await user.type(getByTestId('autocomplete-postcode'), '10179');\n await user.type(getByTestId('autocomplete-city'), 'Berlin');\n\n // callback should be called with a complete address\n expect(callback).toHaveBeenCalledWith(address);\n });\n\n it('Should prefill fields if an address is provided', async () => {\n const { getByDisplayValue } = setup(address);\n\n expect(getByDisplayValue('Köpeniker Strasse')).toBeVisible();\n expect(getByDisplayValue('4000')).toBeVisible();\n expect(getByDisplayValue('10179')).toBeVisible();\n expect(getByDisplayValue('Berlin')).toBeVisible();\n });\n});\n"],"names":["render","_jsx"],"mappings":"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"}
@@ -15,7 +15,7 @@ styleInject(css_248z);
15
15
 
16
16
  var InitialButton = function (_a) {
17
17
  var onDownload = _a.onDownload;
18
- return (jsx(Button, { className: "w100 ".concat(styles.button), leftIcon: jsx(DownloadIcon, {}), onClick: onDownload, "data-cy": "download-documents-button", children: "Download" }));
18
+ return (jsx(Button, { className: "w100 ".concat(styles.button), leftIcon: jsx(DownloadIcon, {}), onClick: onDownload, "data-cy": "download-documents-button", "data-testid": "download-documents-button", children: "Download" }));
19
19
  };
20
20
  // TODO: Allow setting loading to true to display text
21
21
  var GeneratingButton = function () { return (jsx(Button, { className: "w100 ".concat(styles.button), loading: true, children: "Generating" })); };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/lib/components/downloadButton/index.tsx"],"sourcesContent":["import { Button } from '../button';\nimport { DownloadStatus } from '../../models/download';\nimport { CheckIcon, DownloadIcon } from '../icon/icons';\nimport styles from './style.module.scss';\n\nexport interface DownloadButtonProps {\n downloadStatus: DownloadStatus;\n onDownload: () => void;\n className?: string;\n customFail?: React.ReactNode;\n}\n\nconst InitialButton = ({ onDownload }: { onDownload: () => void }) => (\n <Button\n className={`w100 ${styles.button}`}\n leftIcon={<DownloadIcon />}\n onClick={onDownload}\n data-cy=\"download-documents-button\"\n >\n Download\n </Button>\n);\n\n// TODO: Allow setting loading to true to display text\nconst GeneratingButton = () => (\n <Button\n className={`w100 ${styles.button}`}\n loading={true}\n >\n Generating\n </Button>\n);\n\nconst CompletedChip = () => (\n <div className={styles['chip-complete']}>\n <CheckIcon color={'neutral-600'} size={16} />\n <div className=\"p-h4 tc-neutral-600 ml8\">Download complete</div>\n </div>\n);\n\nconst DownloadButton = ({\n downloadStatus,\n onDownload,\n className = '',\n customFail,\n}: DownloadButtonProps) => {\n const mapDownloadButton: { [K in DownloadStatus]: React.ReactNode } = {\n INITIAL: <InitialButton onDownload={onDownload} />,\n GENERATING: <GeneratingButton />,\n COMPLETED: <CompletedChip />,\n FAILED: <InitialButton onDownload={onDownload} />,\n };\n\n return (\n <div className={`d-flex fd-column ai-center ${className}`}>\n <div className=\"ws4\">{mapDownloadButton[downloadStatus]}</div>\n {downloadStatus === 'FAILED' && (\n <div className=\"p-notice p-notice--danger p-p mt40 wmx5\">\n {customFail ??\n 'An error occured when generating documents. Please try again or contact us.'}\n </div>\n )}\n </div>\n );\n};\n\nexport { DownloadButton };\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;;;;AAYA,IAAM,aAAa,GAAG,UAAC,EAA0C,EAAA;AAAxC,IAAA,IAAA,UAAU,GAAA,EAAA,CAAA,UAAA;IAAmC,QACpEA,GAAA,CAAC,MAAM,EAAA,EACL,SAAS,EAAE,OAAA,CAAA,MAAA,CAAQ,MAAM,CAAC,MAAM,CAAE,EAClC,QAAQ,EAAEA,GAAA,CAAC,YAAY,EAAA,EAAA,CAAG,EAC1B,OAAO,EAAE,UAAU,EAAA,SAAA,EACX,2BAA2B,EAAA,QAAA,EAAA,UAAA,EAAA,CAG5B;AAR2D,CASrE;AAED;AACA,IAAM,gBAAgB,GAAG,YAAA,EAAM,QAC7BA,GAAA,CAAC,MAAM,EAAA,EACL,SAAS,EAAE,OAAA,CAAA,MAAA,CAAQ,MAAM,CAAC,MAAM,CAAE,EAClC,OAAO,EAAE,IAAI,EAAA,QAAA,EAAA,YAAA,EAAA,CAGN,EACV,CAP8B,CAO9B;AAED,IAAM,aAAa,GAAG,YAAA,EAAM,QAC1BC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,EAAA,QAAA,EAAA,CACrCD,GAAA,CAAC,SAAS,EAAA,EAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,GAAI,EAC7CA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAwB,CAAA,EAAA,CAC5D,EACP,CAL2B,CAK3B;AAED,IAAM,cAAc,GAAG,UAAC,EAKF,EAAA;AAJpB,IAAA,IAAA,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,EAAA,GAAA,EAAA,CAAA,SAAc,EAAd,SAAS,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,GAAA,EAAA,EACd,UAAU,GAAA,EAAA,CAAA,UAAA;AAEV,IAAA,IAAM,iBAAiB,GAA+C;AACpE,QAAA,OAAO,EAAEA,GAAA,CAAC,aAAa,IAAC,UAAU,EAAE,UAAU,EAAA,CAAI;QAClD,UAAU,EAAEA,GAAA,CAAC,gBAAgB,EAAA,EAAA,CAAG;QAChC,SAAS,EAAEA,GAAA,CAAC,aAAa,EAAA,EAAA,CAAG;AAC5B,QAAA,MAAM,EAAEA,GAAA,CAAC,aAAa,IAAC,UAAU,EAAE,UAAU,EAAA,CAAI;KAClD;AAED,IAAA,QACEC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,6BAAA,CAAA,MAAA,CAA8B,SAAS,CAAE,EAAA,QAAA,EAAA,CACvDD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,KAAK,EAAA,QAAA,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAAO,EAC7D,cAAc,KAAK,QAAQ,KAC1BA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yCAAyC,YACrD,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,MAAA,GAAV,UAAU,GACT,6EAA6E,GAC3E,CACP,CAAA,EAAA,CACG;AAEV;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/lib/components/downloadButton/index.tsx"],"sourcesContent":["import { Button } from '../button';\nimport { DownloadStatus } from '../../models/download';\nimport { CheckIcon, DownloadIcon } from '../icon/icons';\nimport styles from './style.module.scss';\n\nexport interface DownloadButtonProps {\n downloadStatus: DownloadStatus;\n onDownload: () => void;\n className?: string;\n customFail?: React.ReactNode;\n}\n\nconst InitialButton = ({ onDownload }: { onDownload: () => void }) => (\n <Button\n className={`w100 ${styles.button}`}\n leftIcon={<DownloadIcon />}\n onClick={onDownload}\n data-cy=\"download-documents-button\"\n data-testid=\"download-documents-button\"\n >\n Download\n </Button>\n);\n\n// TODO: Allow setting loading to true to display text\nconst GeneratingButton = () => (\n <Button\n className={`w100 ${styles.button}`}\n loading={true}\n >\n Generating\n </Button>\n);\n\nconst CompletedChip = () => (\n <div className={styles['chip-complete']}>\n <CheckIcon color={'neutral-600'} size={16} />\n <div className=\"p-h4 tc-neutral-600 ml8\">Download complete</div>\n </div>\n);\n\nconst DownloadButton = ({\n downloadStatus,\n onDownload,\n className = '',\n customFail,\n}: DownloadButtonProps) => {\n const mapDownloadButton: { [K in DownloadStatus]: React.ReactNode } = {\n INITIAL: <InitialButton onDownload={onDownload} />,\n GENERATING: <GeneratingButton />,\n COMPLETED: <CompletedChip />,\n FAILED: <InitialButton onDownload={onDownload} />,\n };\n\n return (\n <div className={`d-flex fd-column ai-center ${className}`}>\n <div className=\"ws4\">{mapDownloadButton[downloadStatus]}</div>\n {downloadStatus === 'FAILED' && (\n <div className=\"p-notice p-notice--danger p-p mt40 wmx5\">\n {customFail ??\n 'An error occured when generating documents. Please try again or contact us.'}\n </div>\n )}\n </div>\n );\n};\n\nexport { DownloadButton };\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;;;;AAYA,IAAM,aAAa,GAAG,UAAC,EAA0C,EAAA;AAAxC,IAAA,IAAA,UAAU,GAAA,EAAA,CAAA,UAAA;IAAmC,QACpEA,GAAA,CAAC,MAAM,EAAA,EACL,SAAS,EAAE,OAAA,CAAA,MAAA,CAAQ,MAAM,CAAC,MAAM,CAAE,EAClC,QAAQ,EAAEA,GAAA,CAAC,YAAY,EAAA,EAAA,CAAG,EAC1B,OAAO,EAAE,UAAU,EAAA,SAAA,EACX,2BAA2B,EAAA,aAAA,EACvB,2BAA2B,EAAA,QAAA,EAAA,UAAA,EAAA,CAGhC;AAT2D,CAUrE;AAED;AACA,IAAM,gBAAgB,GAAG,YAAA,EAAM,QAC7BA,GAAA,CAAC,MAAM,EAAA,EACL,SAAS,EAAE,OAAA,CAAA,MAAA,CAAQ,MAAM,CAAC,MAAM,CAAE,EAClC,OAAO,EAAE,IAAI,EAAA,QAAA,EAAA,YAAA,EAAA,CAGN,EACV,CAP8B,CAO9B;AAED,IAAM,aAAa,GAAG,YAAA,EAAM,QAC1BC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,EAAA,QAAA,EAAA,CACrCD,GAAA,CAAC,SAAS,EAAA,EAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,GAAI,EAC7CA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAwB,CAAA,EAAA,CAC5D,EACP,CAL2B,CAK3B;AAED,IAAM,cAAc,GAAG,UAAC,EAKF,EAAA;AAJpB,IAAA,IAAA,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,EAAA,GAAA,EAAA,CAAA,SAAc,EAAd,SAAS,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,GAAA,EAAA,EACd,UAAU,GAAA,EAAA,CAAA,UAAA;AAEV,IAAA,IAAM,iBAAiB,GAA+C;AACpE,QAAA,OAAO,EAAEA,GAAA,CAAC,aAAa,IAAC,UAAU,EAAE,UAAU,EAAA,CAAI;QAClD,UAAU,EAAEA,GAAA,CAAC,gBAAgB,EAAA,EAAA,CAAG;QAChC,SAAS,EAAEA,GAAA,CAAC,aAAa,EAAA,EAAA,CAAG;AAC5B,QAAA,MAAM,EAAEA,GAAA,CAAC,aAAa,IAAC,UAAU,EAAE,UAAU,EAAA,CAAI;KAClD;AAED,IAAA,QACEC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,6BAAA,CAAA,MAAA,CAA8B,SAAS,CAAE,EAAA,QAAA,EAAA,CACvDD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,KAAK,EAAA,QAAA,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAAO,EAC7D,cAAc,KAAK,QAAQ,KAC1BA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yCAAyC,YACrD,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,MAAA,GAAV,UAAU,GACT,6EAA6E,GAC3E,CACP,CAAA,EAAA,CACG;AAEV;;;;"}
@@ -0,0 +1,25 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { c as customRender, f as fireEvent, s as screen } from '../../customRender-DzdqZxUd.js';
3
+ import { DownloadButton } 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 '../button/index.js';
11
+ import '../../index-DLQEsiym.js';
12
+ import '../icon/icons/Check.js';
13
+ import '../icon/IconWrapper/IconWrapper.js';
14
+ import '../../style-inject.es-tgCJW-Cu.js';
15
+ import '../icon/icons/Download.js';
16
+
17
+ describe('DownloadButton', function () {
18
+ it.each(['INITIAL', 'FAILED'])('exposes the %s download button as download-documents-button', function (downloadStatus) {
19
+ var onDownload = jest.fn();
20
+ customRender(jsx(DownloadButton, { downloadStatus: downloadStatus, onDownload: onDownload }));
21
+ fireEvent.click(screen.getByTestId('download-documents-button'));
22
+ expect(onDownload).toHaveBeenCalledTimes(1);
23
+ });
24
+ });
25
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sources":["../../../../../src/lib/components/downloadButton/index.test.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '../../util/testUtils';\nimport { DownloadButton } from '.';\n\ndescribe('DownloadButton', () => {\n it.each(['INITIAL', 'FAILED'] as const)(\n 'exposes the %s download button as download-documents-button',\n (downloadStatus) => {\n const onDownload = jest.fn();\n\n render(\n <DownloadButton\n downloadStatus={downloadStatus}\n onDownload={onDownload}\n />\n );\n\n fireEvent.click(screen.getByTestId('download-documents-button'));\n\n expect(onDownload).toHaveBeenCalledTimes(1);\n }\n );\n});\n"],"names":["render","_jsx"],"mappings":";;;;;;;;;;;;;;;;AAGA,QAAQ,CAAC,gBAAgB,EAAE,YAAA;AACzB,IAAA,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAU,CAAC,CACrC,6DAA6D,EAC7D,UAAC,cAAc,EAAA;AACb,QAAA,IAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE;AAE5B,QAAAA,YAAM,CACJC,GAAA,CAAC,cAAc,EAAA,EACb,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,UAAU,EAAA,CACtB,CACH;QAED,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;QAEhE,MAAM,CAAC,UAAU,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC7C,IAAA,CAAC,CACF;AACH,CAAC,CAAC"}
@@ -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-cy": "suggest-multi-select-input" }))); };
26
+ var renderInputComponent = function (autoSuggestInputProps) { return (jsx(Input, __assign({}, autoSuggestInputProps, { placeholder: placeholder, "data-cy": "suggest-multi-select-input", "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-cy=\"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,SAAA,EAChB,4BAA4B,EAAA,CAAA,CACpC,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;;;;"}
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-cy=\"suggest-multi-select-input\"\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,GAAA,CAAC,KAAK,EAAA,QAAA,CAAA,EAAA,EACA,qBAAqB,IACzB,WAAW,EAAE,WAAW,EAAA,SAAA,EAChB,4BAA4B,EAAA,aAAA,EACxB,4BAA4B,EAAA,CAAA,CACxC,EACH,CAPgF,CAOhF;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"}
@@ -54,6 +54,9 @@ var defaultTextOverrides = {
54
54
  showDetails: 'Show details',
55
55
  hideDetails: 'Hide details',
56
56
  };
57
+ var getCellDataTestId = function (cell) {
58
+ return cell && 'dataTestId' in cell ? cell.dataTestId : undefined;
59
+ };
57
60
  var Table = function (_a) {
58
61
  var _b, _c, _d, _e, _f;
59
62
  var cellReplacements = _a.cellReplacements, className = _a.className, collapsibleSections = _a.collapsibleSections, _g = _a.hideColumns, hideColumns = _g === void 0 ? [] : _g, hideDetails = _a.hideDetails, _h = _a.hideRows, hideRows = _h === void 0 ? [] : _h, imageComponent = _a.imageComponent, modalContentRenderer = _a.modalContentRenderer, onModalOpen = _a.onModalOpen, onSelectionChanged = _a.onSelectionChanged, scrollOnOpen = _a.scrollOnOpen, _j = _a.scrollTopOffset, scrollTopOffset = _j === void 0 ? 0 : _j, _k = _a.stickyHeaderTopOffset, stickyHeaderTopOffset = _k === void 0 ? 0 : _k, tableData = _a.tableData, definedTextOverrides = _a.textOverrides, title = _a.title, externalActiveSection = _a.activeSection, _l = _a.hideTableNavigation, hideTableNavigation = _l === void 0 ? false : _l, _m = _a.hideStickyHeader, hideStickyHeader = _m === void 0 ? false : _m, _o = _a.showSelectedColumn, showSelectedColumn = _o === void 0 ? false : _o, _p = _a.mobileNavigationMode, mobileNavigationMode = _p === void 0 ? 'arrows' : _p;
@@ -78,6 +81,7 @@ var Table = function (_a) {
78
81
  var currentActiveSection = headerRow === null || headerRow === void 0 ? void 0 : headerRow[activeSection];
79
82
  var mobileTabs = useTabs
80
83
  ? (_d = headerRow === null || headerRow === void 0 ? void 0 : headerRow.slice(1).map(function (cell, index) {
84
+ var _a;
81
85
  var label = '';
82
86
  if (!cell.type)
83
87
  label = String(cell.text || '');
@@ -85,7 +89,11 @@ var Table = function (_a) {
85
89
  label = String(cell.title || '');
86
90
  else if (cell.type === 'BUTTON')
87
91
  label = String(cell.buttonCaption || '');
88
- return { id: String(index), label: label };
92
+ var replacement = cell.cellId
93
+ ? cellReplacements === null || cellReplacements === void 0 ? void 0 : cellReplacements[cell.cellId]
94
+ : undefined;
95
+ var dataTestId = (_a = getCellDataTestId(replacement)) !== null && _a !== void 0 ? _a : getCellDataTestId(cell);
96
+ return { id: String(index), label: label, dataTestId: dataTestId };
89
97
  })) !== null && _d !== void 0 ? _d : []
90
98
  : [];
91
99
  var currentActiveSectionReplacements = ((currentActiveSection === null || currentActiveSection === void 0 ? void 0 : currentActiveSection.cellId) &&
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sources":["../../../../../src/lib/components/table/Table.tsx"],"sourcesContent":["import { TableCell } from './components/TableCell/TableCell';\nimport { BottomOrRegularModal } from '../modal';\nimport { ReactNode, useCallback, useEffect, useRef, useState } from 'react';\nimport { ChevronDownIcon, ChevronUpIcon } from '../icon';\nimport { Card } from '../cards/card';\n\nimport styles from './Table.module.scss';\nimport { useMediaQuery } from '../../hooks/useMediaQuery';\nimport { TableContents } from './components/TableContents/TableContents';\nimport classNames from 'classnames';\nimport { useTableNavigation } from './utils/useTableNavigation/useTableNavigation';\nimport { TableControls } from './components/TableControls/TableControls';\nimport { TableSection } from './components/TableSection/TableSection';\nimport { useScrollSync } from './utils/useScrollSync/useScrollSync';\nimport {\n CellReplacements,\n isBaseCell,\n ModalData,\n ModalFunction,\n TableCellData,\n TableData,\n} from './types';\nimport { Tabs, TabItem } from '../tabs/Tabs';\n\nexport type { TableData } from './types';\n\ntype TextOverrides = {\n showDetails?: string;\n hideDetails?: string;\n};\n\nexport interface TableProps {\n cellReplacements?: CellReplacements;\n className?: string;\n collapsibleSections?: boolean;\n hideColumns?: number[];\n hideDetails?: boolean;\n hideRows?: number[];\n imageComponent?: (args: any) => JSX.Element;\n modalContentRenderer?: (content: ReactNode) => ReactNode;\n onModalOpen?: ModalFunction;\n onSelectionChanged?: (index: number) => void;\n scrollOnOpen?: boolean;\n scrollTopOffset?: number;\n stickyHeaderTopOffset?: number;\n tableData: TableData;\n textOverrides?: TextOverrides;\n title: string;\n activeSection?: number;\n hideTableNavigation?: boolean;\n hideStickyHeader?: boolean;\n showSelectedColumn?: boolean;\n mobileNavigationMode?: 'arrows' | 'tabs';\n}\n\nconst defaultTextOverrides = {\n showDetails: 'Show details',\n hideDetails: 'Hide details',\n};\n\nconst Table = ({\n cellReplacements,\n className,\n collapsibleSections,\n hideColumns = [],\n hideDetails,\n hideRows = [],\n imageComponent,\n modalContentRenderer,\n onModalOpen,\n onSelectionChanged,\n scrollOnOpen,\n scrollTopOffset = 0,\n stickyHeaderTopOffset = 0,\n tableData,\n textOverrides: definedTextOverrides,\n title,\n activeSection: externalActiveSection,\n hideTableNavigation = false,\n hideStickyHeader = false,\n showSelectedColumn = false,\n mobileNavigationMode = 'arrows',\n}: TableProps) => {\n const textOverrides = { ...defaultTextOverrides, ...definedTextOverrides };\n const isMobile = useMediaQuery('BELOW_MOBILE');\n const [infoModalData, setInfoModalData] = useState<ModalData | null>(null);\n const [shouldHideDetails, setShouldHideDetails] = useState(true);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const headerRef = useRef<HTMLDivElement | null>(null);\n const stickyHeaderRef = useRef<HTMLDivElement | null>(null);\n const columnsLength = tableData[0].rows[0].length;\n\n useScrollSync(headerRef, containerRef, !isMobile);\n\n const useTabs = isMobile && mobileNavigationMode === 'tabs';\n\n const { activeSection, navigateTable, setActiveSection, syncActiveSection } =\n useTableNavigation({\n enabled: isMobile,\n containerRef,\n initialSection: externalActiveSection ? externalActiveSection - 1 : 0,\n onSelectionChanged,\n });\n\n const headerRow = tableData?.[0]?.rows?.[0];\n const titleCell = {\n text: '',\n ...(headerRow?.[0] || {}),\n };\n const currentActiveSection = headerRow?.[activeSection];\n\n const mobileTabs: TabItem[] = useTabs\n ? headerRow\n ?.slice(1)\n .map((cell, index) => {\n let label = '';\n if (!cell.type) label = String(cell.text || '');\n else if (cell.type === 'CTA') label = String(cell.title || '');\n else if (cell.type === 'BUTTON') label = String(cell.buttonCaption || '');\n return { id: String(index), label };\n }) ?? []\n : [];\n\n const currentActiveSectionReplacements =\n (currentActiveSection?.cellId &&\n cellReplacements?.[currentActiveSection.cellId]) ||\n {};\n\n const activeCellProps = {\n ...currentActiveSection,\n ...currentActiveSectionReplacements,\n } as TableCellData;\n\n const handleOpenModal: ModalFunction = useCallback(({ body, title }) => {\n onModalOpen?.({ body, title });\n setInfoModalData({ body, title });\n }, []);\n\n useEffect(() => {\n if (externalActiveSection && externalActiveSection !== activeSection) {\n syncActiveSection(externalActiveSection - 1);\n }\n }, [externalActiveSection]);\n\n return (\n <div className={classNames(styles.wrapper, 'bg-white')}>\n {isMobile ? (\n <>\n {!useTabs && titleCell?.text && (\n <TableCell\n {...titleCell}\n align=\"left\"\n isNavigation\n isTopLeftCell\n type={undefined}\n />\n )}\n\n {!hideTableNavigation && currentActiveSection && (\n useTabs ? (\n <div\n className={classNames(\n 'bg-white',\n styles.stickyHeader\n )}\n style={{ top: `${stickyHeaderTopOffset}px` }}\n >\n <Tabs\n tabs={mobileTabs}\n activeIndex={activeSection - 1}\n onTabChange={(index) => setActiveSection(index)}\n className=\"mb16\"\n />\n </div>\n ) : (\n <TableControls\n activeSection={activeSection}\n columnsLength={columnsLength}\n navigateTable={navigateTable}\n stickyHeaderTopOffset={stickyHeaderTopOffset}\n >\n <TableCell\n {...(isBaseCell(currentActiveSection)\n ? {\n openModal: (body: ReactNode) =>\n handleOpenModal({\n body,\n title: currentActiveSection?.text,\n }),\n }\n : {})}\n {...activeCellProps}\n imageComponent={imageComponent}\n isNavigation\n />\n </TableControls>\n )\n )}\n </>\n ) : (\n !hideStickyHeader && (\n <div\n ref={stickyHeaderRef}\n aria-hidden\n className={styles.stickyHeader}\n style={{ top: `${stickyHeaderTopOffset}px` }}\n >\n <div className={styles.container} ref={headerRef}>\n <TableSection\n cellReplacements={cellReplacements}\n className={className}\n hideColumns={hideColumns}\n hideRows={hideRows}\n openModal={handleOpenModal}\n tableCellRows={[tableData?.[0]?.rows?.[0]]}\n title={title}\n imageComponent={imageComponent}\n />\n </div>\n </div>\n )\n )}\n\n <div ref={containerRef} className={classNames(styles.container, 'pb8')}>\n <TableContents\n tableData={tableData}\n title={title}\n className={className}\n collapsibleSections={collapsibleSections}\n scrollOnOpen={scrollOnOpen}\n scrollTopOffset={scrollTopOffset}\n stickyHeaderRef={stickyHeaderRef}\n hideColumns={hideColumns}\n hideDetails={hideDetails}\n hideRows={hideRows}\n isMobile={isMobile}\n shouldHideDetails={shouldHideDetails}\n openModal={handleOpenModal}\n cellReplacements={cellReplacements}\n imageComponent={imageComponent}\n selectedColumn={showSelectedColumn ? activeSection : undefined}\n showHeader={useTabs}\n />\n </div>\n\n {tableData?.length > 1 && hideDetails && (\n <Card\n data-testid=\"show-hide-details\"\n classNames={{\n buttonWrapper: classNames(styles.cardButton, 'm8 mt32'),\n title: 'd-flex gap8 ai-center jc-center fw-bold',\n }}\n title={\n <>\n {shouldHideDetails\n ? textOverrides.showDetails\n : textOverrides.hideDetails}\n {shouldHideDetails ? (\n <ChevronDownIcon size={20} />\n ) : (\n <ChevronUpIcon size={20} />\n )}\n </>\n }\n actionIcon={null}\n dropShadow={false}\n titleVariant=\"small\"\n density=\"xsmall\"\n onClick={() => setShouldHideDetails((current) => !current)}\n />\n )}\n\n <BottomOrRegularModal\n isOpen={infoModalData?.body ? true : false}\n title={infoModalData?.title}\n onClose={() => setInfoModalData(null)}\n >\n <div className={classNames(styles.modalContent, 'pt8 p24 wmn6')}>\n {modalContentRenderer\n ? modalContentRenderer(infoModalData?.body)\n : infoModalData?.body}\n </div>\n </BottomOrRegularModal>\n </div>\n );\n};\n\nexport { Table };\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"Table.js","sources":["../../../../../src/lib/components/table/Table.tsx"],"sourcesContent":["import { TableCell } from './components/TableCell/TableCell';\nimport { BottomOrRegularModal } from '../modal';\nimport { ReactNode, useCallback, useEffect, useRef, useState } from 'react';\nimport { ChevronDownIcon, ChevronUpIcon } from '../icon';\nimport { Card } from '../cards/card';\n\nimport styles from './Table.module.scss';\nimport { useMediaQuery } from '../../hooks/useMediaQuery';\nimport { TableContents } from './components/TableContents/TableContents';\nimport classNames from 'classnames';\nimport { useTableNavigation } from './utils/useTableNavigation/useTableNavigation';\nimport { TableControls } from './components/TableControls/TableControls';\nimport { TableSection } from './components/TableSection/TableSection';\nimport { useScrollSync } from './utils/useScrollSync/useScrollSync';\nimport {\n CellReplacements,\n isBaseCell,\n ModalData,\n ModalFunction,\n TableCellData,\n TableData,\n} from './types';\nimport { Tabs, TabItem } from '../tabs/Tabs';\n\nexport type { TableData } from './types';\n\ntype TextOverrides = {\n showDetails?: string;\n hideDetails?: string;\n};\n\nexport interface TableProps {\n cellReplacements?: CellReplacements;\n className?: string;\n collapsibleSections?: boolean;\n hideColumns?: number[];\n hideDetails?: boolean;\n hideRows?: number[];\n imageComponent?: (args: any) => JSX.Element;\n modalContentRenderer?: (content: ReactNode) => ReactNode;\n onModalOpen?: ModalFunction;\n onSelectionChanged?: (index: number) => void;\n scrollOnOpen?: boolean;\n scrollTopOffset?: number;\n stickyHeaderTopOffset?: number;\n tableData: TableData;\n textOverrides?: TextOverrides;\n title: string;\n activeSection?: number;\n hideTableNavigation?: boolean;\n hideStickyHeader?: boolean;\n showSelectedColumn?: boolean;\n mobileNavigationMode?: 'arrows' | 'tabs';\n}\n\nconst defaultTextOverrides = {\n showDetails: 'Show details',\n hideDetails: 'Hide details',\n};\n\nconst getCellDataTestId = (cell?: Partial<TableCellData>) =>\n cell && 'dataTestId' in cell ? cell.dataTestId : undefined;\n\nconst Table = ({\n cellReplacements,\n className,\n collapsibleSections,\n hideColumns = [],\n hideDetails,\n hideRows = [],\n imageComponent,\n modalContentRenderer,\n onModalOpen,\n onSelectionChanged,\n scrollOnOpen,\n scrollTopOffset = 0,\n stickyHeaderTopOffset = 0,\n tableData,\n textOverrides: definedTextOverrides,\n title,\n activeSection: externalActiveSection,\n hideTableNavigation = false,\n hideStickyHeader = false,\n showSelectedColumn = false,\n mobileNavigationMode = 'arrows',\n}: TableProps) => {\n const textOverrides = { ...defaultTextOverrides, ...definedTextOverrides };\n const isMobile = useMediaQuery('BELOW_MOBILE');\n const [infoModalData, setInfoModalData] = useState<ModalData | null>(null);\n const [shouldHideDetails, setShouldHideDetails] = useState(true);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const headerRef = useRef<HTMLDivElement | null>(null);\n const stickyHeaderRef = useRef<HTMLDivElement | null>(null);\n const columnsLength = tableData[0].rows[0].length;\n\n useScrollSync(headerRef, containerRef, !isMobile);\n\n const useTabs = isMobile && mobileNavigationMode === 'tabs';\n\n const { activeSection, navigateTable, setActiveSection, syncActiveSection } =\n useTableNavigation({\n enabled: isMobile,\n containerRef,\n initialSection: externalActiveSection ? externalActiveSection - 1 : 0,\n onSelectionChanged,\n });\n\n const headerRow = tableData?.[0]?.rows?.[0];\n const titleCell = {\n text: '',\n ...(headerRow?.[0] || {}),\n };\n const currentActiveSection = headerRow?.[activeSection];\n\n const mobileTabs: TabItem[] = useTabs\n ? headerRow\n ?.slice(1)\n .map((cell, index) => {\n let label = '';\n if (!cell.type) label = String(cell.text || '');\n else if (cell.type === 'CTA') label = String(cell.title || '');\n else if (cell.type === 'BUTTON') label = String(cell.buttonCaption || '');\n const replacement = cell.cellId\n ? cellReplacements?.[cell.cellId]\n : undefined;\n const dataTestId =\n getCellDataTestId(replacement) ?? getCellDataTestId(cell);\n return { id: String(index), label, dataTestId };\n }) ?? []\n : [];\n\n const currentActiveSectionReplacements =\n (currentActiveSection?.cellId &&\n cellReplacements?.[currentActiveSection.cellId]) ||\n {};\n\n const activeCellProps = {\n ...currentActiveSection,\n ...currentActiveSectionReplacements,\n } as TableCellData;\n\n const handleOpenModal: ModalFunction = useCallback(({ body, title }) => {\n onModalOpen?.({ body, title });\n setInfoModalData({ body, title });\n }, []);\n\n useEffect(() => {\n if (externalActiveSection && externalActiveSection !== activeSection) {\n syncActiveSection(externalActiveSection - 1);\n }\n }, [externalActiveSection]);\n\n return (\n <div className={classNames(styles.wrapper, 'bg-white')}>\n {isMobile ? (\n <>\n {!useTabs && titleCell?.text && (\n <TableCell\n {...titleCell}\n align=\"left\"\n isNavigation\n isTopLeftCell\n type={undefined}\n />\n )}\n\n {!hideTableNavigation && currentActiveSection && (\n useTabs ? (\n <div\n className={classNames(\n 'bg-white',\n styles.stickyHeader\n )}\n style={{ top: `${stickyHeaderTopOffset}px` }}\n >\n <Tabs\n tabs={mobileTabs}\n activeIndex={activeSection - 1}\n onTabChange={(index) => setActiveSection(index)}\n className=\"mb16\"\n />\n </div>\n ) : (\n <TableControls\n activeSection={activeSection}\n columnsLength={columnsLength}\n navigateTable={navigateTable}\n stickyHeaderTopOffset={stickyHeaderTopOffset}\n >\n <TableCell\n {...(isBaseCell(currentActiveSection)\n ? {\n openModal: (body: ReactNode) =>\n handleOpenModal({\n body,\n title: currentActiveSection?.text,\n }),\n }\n : {})}\n {...activeCellProps}\n imageComponent={imageComponent}\n isNavigation\n />\n </TableControls>\n )\n )}\n </>\n ) : (\n !hideStickyHeader && (\n <div\n ref={stickyHeaderRef}\n aria-hidden\n className={styles.stickyHeader}\n style={{ top: `${stickyHeaderTopOffset}px` }}\n >\n <div className={styles.container} ref={headerRef}>\n <TableSection\n cellReplacements={cellReplacements}\n className={className}\n hideColumns={hideColumns}\n hideRows={hideRows}\n openModal={handleOpenModal}\n tableCellRows={[tableData?.[0]?.rows?.[0]]}\n title={title}\n imageComponent={imageComponent}\n />\n </div>\n </div>\n )\n )}\n\n <div ref={containerRef} className={classNames(styles.container, 'pb8')}>\n <TableContents\n tableData={tableData}\n title={title}\n className={className}\n collapsibleSections={collapsibleSections}\n scrollOnOpen={scrollOnOpen}\n scrollTopOffset={scrollTopOffset}\n stickyHeaderRef={stickyHeaderRef}\n hideColumns={hideColumns}\n hideDetails={hideDetails}\n hideRows={hideRows}\n isMobile={isMobile}\n shouldHideDetails={shouldHideDetails}\n openModal={handleOpenModal}\n cellReplacements={cellReplacements}\n imageComponent={imageComponent}\n selectedColumn={showSelectedColumn ? activeSection : undefined}\n showHeader={useTabs}\n />\n </div>\n\n {tableData?.length > 1 && hideDetails && (\n <Card\n data-testid=\"show-hide-details\"\n classNames={{\n buttonWrapper: classNames(styles.cardButton, 'm8 mt32'),\n title: 'd-flex gap8 ai-center jc-center fw-bold',\n }}\n title={\n <>\n {shouldHideDetails\n ? textOverrides.showDetails\n : textOverrides.hideDetails}\n {shouldHideDetails ? (\n <ChevronDownIcon size={20} />\n ) : (\n <ChevronUpIcon size={20} />\n )}\n </>\n }\n actionIcon={null}\n dropShadow={false}\n titleVariant=\"small\"\n density=\"xsmall\"\n onClick={() => setShouldHideDetails((current) => !current)}\n />\n )}\n\n <BottomOrRegularModal\n isOpen={infoModalData?.body ? true : false}\n title={infoModalData?.title}\n onClose={() => setInfoModalData(null)}\n >\n <div className={classNames(styles.modalContent, 'pt8 p24 wmn6')}>\n {modalContentRenderer\n ? modalContentRenderer(infoModalData?.body)\n : infoModalData?.body}\n </div>\n </BottomOrRegularModal>\n </div>\n );\n};\n\nexport { Table };\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
@@ -195,4 +195,29 @@ describe('Table on mobile with a parent-controlled section', function () {
195
195
  expect(screen.getByTestId('next-section-button')).toBeDisabled();
196
196
  });
197
197
  });
198
+ describe('Table on mobile with tabs navigation', function () {
199
+ var planTable = [
200
+ {
201
+ rows: [
202
+ [
203
+ { text: 'Choose your plan' },
204
+ { text: 'Basic', cellId: 'basic' },
205
+ { text: 'Advanced', cellId: 'advanced', dataTestId: 'advanced-plan' },
206
+ ],
207
+ ],
208
+ },
209
+ ];
210
+ beforeAll(function () {
211
+ HTMLElement.prototype.scroll = jest.fn();
212
+ useMediaQuery.mockReturnValue(true);
213
+ });
214
+ afterAll(function () {
215
+ useMediaQuery.mockReturnValue(false);
216
+ });
217
+ it('forwards the header cell test ids to the tabs, preferring cell replacements', function () {
218
+ customRender(jsx(Table, { title: "Plans", tableData: planTable, mobileNavigationMode: "tabs", cellReplacements: { basic: { dataTestId: 'basic-plan' } } }));
219
+ expect(screen.getByRole('tab', { name: 'Basic' })).toHaveAttribute('data-testid', 'basic-plan');
220
+ expect(screen.getByRole('tab', { name: 'Advanced' })).toHaveAttribute('data-testid', 'advanced-plan');
221
+ });
222
+ });
198
223
  //# sourceMappingURL=Table.test.js.map