@popsure/dirty-swan 0.66.3 → 0.66.4

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.
@@ -37,6 +37,10 @@ var geocoderAddressComponentToPartialAddress = function (input) {
37
37
  var type = value.types[0];
38
38
  var mappedValue = mapping[type];
39
39
  if (mappedValue) {
40
+ var isPostalCodePrefix = value.types.includes('postal_code_prefix');
41
+ if (mappedValue.key === 'postcode' && isPostalCodePrefix) {
42
+ return;
43
+ }
40
44
  toReturn[mappedValue.key] = value[mappedValue.value];
41
45
  }
42
46
  });
@@ -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 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 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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"}
@@ -135,8 +135,8 @@ var useComparisonTable = function (_a) {
135
135
  };
136
136
  };
137
137
 
138
- var css_248z = ".style-module_container__xHPlk {\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n scroll-snap-type: x mandatory;\n}\n@media (min-width: 34rem) {\n .style-module_container__xHPlk {\n scroll-snap-type: unset;\n }\n}\n\n.style-module_noScrollBars__1ri_E {\n scrollbar-width: none; /* Firefox */\n -ms-overflow-style: none; /* Internet Explorer 10+ */\n}\n.style-module_noScrollBars__1ri_E::-webkit-scrollbar {\n /* WebKit */\n width: 0;\n height: 0;\n}\n\n@media (max-width: 34rem) {\n .style-module_noScrollBarsMobile__1txeg * {\n scrollbar-width: none; /* Firefox */\n -ms-overflow-style: none; /* Internet Explorer 10+ */\n }\n .style-module_noScrollBarsMobile__1txeg * -webkit-scrollbar {\n /* WebKit */\n width: 0;\n height: 0;\n display: none;\n }\n}\n\n.style-module_section__1bf_0 + .style-module_section__1bf_0 {\n margin-top: 48px;\n}\n@media (min-width: 34rem) {\n .style-module_section__1bf_0 + .style-module_section__1bf_0 {\n margin-top: 72px;\n }\n}\n\n.style-module_overflow-container__oBPQw {\n width: max-content;\n min-width: 100%;\n}\n\n.style-module_group-container__2G6Ix {\n display: flex;\n flex-flow: column;\n width: max-content;\n width: var(--growContent, max-content);\n margin: auto;\n}\n\n.style-module_group-title__2vvRm {\n width: 100%;\n background-color: #FAF8F5;\n border-radius: 8px;\n}\n.style-module_group-title__2vvRm > h4 {\n padding: 24px;\n display: inline-block;\n}\n\n.style-module_sticky__2Xmbl {\n position: sticky;\n justify-content: flex-start;\n z-index: 1;\n top: 0;\n left: 0;\n}\n@media (min-width: 34rem) {\n .style-module_sticky__2Xmbl {\n border-right: 1px solid #f9f9fd;\n }\n}\n\n.style-module_header__23SZy {\n position: sticky;\n top: 0;\n top: var(--stickyHeaderTopOffset, 0);\n z-index: 2;\n background-color: white;\n}\n.style-module_header__23SZy .style-module_container__xHPlk {\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n}\n.style-module_header__23SZy .style-module_container__xHPlk::-webkit-scrollbar {\n display: none;\n}\n\n.style-module_show-details-container__1smn4 {\n width: 100%;\n border: none;\n}\n\n.style-module_show-details-button__3HR-p {\n font-family: inherit;\n background-color: #FAF8F5;\n border: none;\n border-radius: 8px;\n height: 64px;\n justify-content: center;\n align-items: center;\n}\n.style-module_show-details-button__3HR-p svg {\n margin-left: 8px;\n}\n.style-module_show-details-button__3HR-p:hover {\n background-color: #FCF7EF;\n}\n\n.style-module_icon-inverted__1SnO1 {\n transform: rotate(180deg);\n transition: all 0.25s ease;\n}";
139
- var baseStyles = {"container":"style-module_container__xHPlk","noScrollBars":"style-module_noScrollBars__1ri_E","noScrollBarsMobile":"style-module_noScrollBarsMobile__1txeg","section":"style-module_section__1bf_0","overflow-container":"style-module_overflow-container__oBPQw","group-container":"style-module_group-container__2G6Ix","group-title":"style-module_group-title__2vvRm","sticky":"style-module_sticky__2Xmbl","header":"style-module_header__23SZy","show-details-container":"style-module_show-details-container__1smn4","show-details-button":"style-module_show-details-button__3HR-p","icon-inverted":"style-module_icon-inverted__1SnO1"};
138
+ var css_248z = ".style-module_container__xHPlk {\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n scroll-snap-type: x mandatory;\n}\n@media (min-width: 34rem) {\n .style-module_container__xHPlk {\n scroll-snap-type: unset;\n }\n}\n\n.style-module_noScrollBars__1ri_E {\n scrollbar-width: none; /* Firefox */\n -ms-overflow-style: none; /* Internet Explorer 10+ */\n}\n.style-module_noScrollBars__1ri_E::-webkit-scrollbar {\n /* WebKit */\n width: 0;\n height: 0;\n}\n\n@media (max-width: 34rem) {\n .style-module_noScrollBarsMobile__1txeg * {\n scrollbar-width: none; /* Firefox */\n -ms-overflow-style: none; /* Internet Explorer 10+ */\n }\n .style-module_noScrollBarsMobile__1txeg * -webkit-scrollbar {\n /* WebKit */\n width: 0;\n height: 0;\n display: none;\n }\n}\n\n.style-module_collapsible-section__3pH68 {\n margin-top: 6px;\n}\n\n.style-module_section__1bf_0 + .style-module_section__1bf_0 {\n margin-top: 48px;\n}\n@media (min-width: 34rem) {\n .style-module_section__1bf_0 + .style-module_section__1bf_0 {\n margin-top: 72px;\n }\n}\n\n.style-module_overflow-container__oBPQw {\n width: max-content;\n min-width: 100%;\n}\n\n.style-module_group-container__2G6Ix {\n display: flex;\n flex-flow: column;\n width: max-content;\n width: var(--growContent, max-content);\n margin: auto;\n}\n\n.style-module_group-title__2vvRm {\n width: 100%;\n background-color: #FAF8F5;\n border-radius: 8px;\n}\n.style-module_group-title__2vvRm > h4 {\n padding: 24px;\n display: inline-block;\n}\n\n.style-module_sticky__2Xmbl {\n position: sticky;\n justify-content: flex-start;\n z-index: 1;\n top: 0;\n left: 0;\n}\n@media (min-width: 34rem) {\n .style-module_sticky__2Xmbl {\n border-right: 1px solid #f9f9fd;\n }\n}\n\n.style-module_header__23SZy {\n position: sticky;\n top: 0;\n top: var(--stickyHeaderTopOffset, 0);\n z-index: 2;\n background-color: white;\n}\n.style-module_header__23SZy .style-module_container__xHPlk {\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n}\n.style-module_header__23SZy .style-module_container__xHPlk::-webkit-scrollbar {\n display: none;\n}\n\n.style-module_show-details-container__1smn4 {\n width: 100%;\n border: none;\n}\n\n.style-module_show-details-button__3HR-p {\n font-family: inherit;\n background-color: #FAF8F5;\n border: none;\n border-radius: 8px;\n height: 64px;\n justify-content: center;\n align-items: center;\n}\n.style-module_show-details-button__3HR-p svg {\n margin-left: 8px;\n}\n.style-module_show-details-button__3HR-p:hover {\n background-color: #FCF7EF;\n}\n\n.style-module_icon-inverted__1SnO1 {\n transform: rotate(180deg);\n transition: all 0.25s ease;\n}";
139
+ var baseStyles = {"container":"style-module_container__xHPlk","noScrollBars":"style-module_noScrollBars__1ri_E","noScrollBarsMobile":"style-module_noScrollBarsMobile__1txeg","collapsible-section":"style-module_collapsible-section__3pH68","section":"style-module_section__1bf_0","overflow-container":"style-module_overflow-container__oBPQw","group-container":"style-module_group-container__2G6Ix","group-title":"style-module_group-title__2vvRm","sticky":"style-module_sticky__2Xmbl","header":"style-module_header__23SZy","show-details-container":"style-module_show-details-container__1smn4","show-details-button":"style-module_show-details-button__3HR-p","icon-inverted":"style-module_icon-inverted__1SnO1"};
140
140
  styleInject(css_248z);
141
141
 
142
142
  var ComparisonTable = function (props) {
@@ -171,7 +171,7 @@ var ComparisonTable = function (props) {
171
171
  return (jsx(Row, { rowId: rowId, cell: cell, data: data, cellClassName: classNameOverrides === null || classNameOverrides === void 0 ? void 0 : classNameOverrides.cell }, rowId));
172
172
  });
173
173
  var idString = "headerGroup-".concat(headerGroup.id);
174
- return (jsx(Fragment, { children: headerGroup.label && collapsibleSections ? (jsx(AccordionItem, { className: classNames('mt16', classNameOverrides === null || classNameOverrides === void 0 ? void 0 : classNameOverrides.collapsibleSection), label: headerGroup.label, headerClassName: "p24 br8", isOpen: openSectionId === headerGroup.id, onToggle: function () {
174
+ return (jsx(Fragment, { children: headerGroup.label && collapsibleSections ? (jsx(AccordionItem, { className: classNames(baseStyles['collapsible-section'], classNameOverrides === null || classNameOverrides === void 0 ? void 0 : classNameOverrides.collapsibleSection), label: headerGroup.label, headerClassName: "p24 br8", isOpen: openSectionId === headerGroup.id, onToggle: function () {
175
175
  return setOpenSectionId(function (prev) {
176
176
  return prev === headerGroup.id ? null : headerGroup.id;
177
177
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/lib/components/comparisonTable/hooks/useComparisonTable.ts","../../../../../src/lib/components/comparisonTable/index.tsx"],"sourcesContent":["import debounce from 'lodash.debounce';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport generateId from '../../../util/generateId';\nimport { ArrowValues } from '../components/TableArrows';\n\nexport const useComparisonTable = ({\n onSelectionChanged,\n}: {\n onSelectionChanged?: (selectedIndex: number) => void;\n}) => {\n const [showMore, setShowMore] = useState<boolean>(false);\n const [headerWidth, setHeaderWidth] = useState(1400);\n const [selectedTabIndex, setSelectedTabIndex] = useState(0);\n const [headerId, setHeaderId] = useState('');\n const headerRef = useRef<HTMLDivElement | null>(null);\n const contentContainerRef = useRef<HTMLDivElement | null>(null);\n const observerRef = useRef<ResizeObserver | null>(null);\n\n const headerRefCallbackRef = useCallback((node) => {\n if (node) {\n setHeaderWidth(node.clientWidth);\n }\n\n headerRef.current = node;\n }, []);\n\n useEffect(() => {\n if (!observerRef.current) {\n observerRef.current = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const currentTabIndex = Math.round(\n entry.target.scrollLeft / entry.contentRect.width\n );\n\n setHeaderWidth(entry.contentRect.width);\n\n // Update selectedTabIndex to match the calculated current tab index\n setSelectedTabIndex(currentTabIndex);\n });\n });\n }\n\n if (headerRef.current) {\n observerRef.current.observe(headerRef.current);\n }\n\n return () => {\n if (headerRef.current) {\n observerRef.current?.unobserve(headerRef.current);\n }\n observerRef.current?.disconnect();\n };\n }, []);\n\n useEffect(() => {\n const resetHeaderWidth = () => {\n if (headerRef.current) {\n setHeaderWidth(headerRef.current.clientWidth);\n }\n };\n\n window.addEventListener('resize', resetHeaderWidth);\n\n return () => window.removeEventListener('resize', resetHeaderWidth);\n }, []);\n\n const handleTableScroll = () => {\n if (!headerRef.current) {\n return;\n }\n\n const headerWidth = headerRef.current.getBoundingClientRect().width;\n\n const currentTabIndex = Math.round(\n headerRef.current.scrollLeft / headerWidth\n );\n\n setSelectedTabIndex(currentTabIndex);\n };\n\n const debouncedTableScroll = debounce(handleTableScroll, 150);\n\n useEffect(() => {\n headerRef.current?.addEventListener('scroll', debouncedTableScroll, {\n passive: true,\n });\n\n return headerRef.current?.removeEventListener('scroll', handleTableScroll);\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleArrowsClick = (value: ArrowValues) => {\n if (headerRef.current) {\n const currentTabIndex = Math.round(\n headerRef.current.scrollLeft / headerRef.current.clientWidth\n );\n\n const direction = value === 'next' ? 1 : -1;\n\n const newTabIndex = currentTabIndex + direction;\n\n headerRef.current.scroll({\n top: 0,\n left: headerWidth * newTabIndex,\n behavior: 'smooth',\n });\n\n setSelectedTabIndex(() => {\n return newTabIndex;\n });\n }\n };\n\n const toggleMoreRows = async () => {\n setShowMore(!showMore);\n };\n\n useEffect(() => {\n if (headerRef.current) {\n return;\n }\n\n const headerById = document.getElementById(headerId);\n\n if (headerById) {\n headerRefCallbackRef(headerById);\n }\n }, [headerId, headerRefCallbackRef]);\n\n useEffect(() => {\n setHeaderId(generateId());\n }, []);\n\n useEffect(() => {\n onSelectionChanged?.(selectedTabIndex);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedTabIndex]);\n\n return {\n headerWidth,\n headerId,\n contentContainerRef,\n selectedTabIndex,\n setSelectedTabIndex,\n headerRefCallbackRef,\n handleArrowsClick,\n toggleMoreRows,\n showMore,\n };\n};\n","import classNames from 'classnames';\nimport { Fragment, useRef, useState } from 'react';\nimport { ScrollSync, ScrollSyncPane } from 'react-scroll-sync';\n\nimport { AccordionItem } from './components/AccordionItem';\nimport Chevron from './components/Chevron';\nimport Row from './components/Row';\nimport TableArrows from './components/TableArrows';\nimport TableButton from './components/TableButton';\nimport TableInfoButton from './components/TableInfoButton';\nimport TableRating from './components/TableRating';\nimport TableRowHeader from './components/TableRowHeader';\nimport TableTrueFalse from './components/TableTrueFalse';\nimport { useComparisonTable } from './hooks/useComparisonTable';\nimport baseStyles from './style.module.scss';\n\nexport interface CellBaseProps<T> {\n /** Used to display the row's title */\n label?: React.ReactNode;\n /**\n *\n * @param value The current data value\n * @param element The complete data object\n */\n render?: (value: any, element: T) => React.ReactNode; // TODO: add typing to value param\n}\n\ninterface CellWithId<T> extends CellBaseProps<T> {\n /** Used when adding component add-ons */\n addonId: string | number;\n}\n\nexport type Cell<T> =\n | ({ key: Extract<keyof T, string> } & CellBaseProps<T>)\n | ({ key?: undefined } & CellWithId<T>);\n\nexport interface TableHeader<T> {\n /** Required unique id number for each table group */\n id: number;\n /** Used to display a table group subheader */\n label?: React.ReactNode;\n cells: Array<Cell<T>>;\n default?: boolean;\n}\n\nexport interface ComparisonTableProps<T> {\n headers: Array<TableHeader<T>>;\n data: Array<T>;\n hideDetails?: boolean;\n hideDetailsCaption?: string;\n showDetailsCaption?: string;\n hideScrollBars?: boolean;\n hideScrollBarsMobile?: boolean;\n collapsibleSections?: boolean;\n scrollOnOpen?: boolean;\n scrollTopOffset?: number;\n cellWidth?: number;\n firstColumnWidth?: number;\n stickyHeaderTopOffset?: number;\n growContent?: boolean;\n classNameOverrides?: ClassNameOverrides;\n onSelectionChanged?: (selectedIndex: number) => void;\n}\n\nexport interface ClassNameOverrides {\n header?: string;\n container?: string;\n cell?: string;\n headerCell?: string;\n collapsibleSection?: string;\n section?: string;\n hideDetailsButton?: string;\n}\n\nconst ComparisonTable = <T extends { id: number }>(\n props: ComparisonTableProps<T>\n) => {\n const {\n headers,\n data,\n hideDetails,\n hideDetailsCaption = 'Hide details',\n showDetailsCaption = 'Show details',\n classNameOverrides,\n hideScrollBars,\n hideScrollBarsMobile = true,\n collapsibleSections,\n scrollOnOpen,\n scrollTopOffset = 0,\n cellWidth,\n firstColumnWidth,\n stickyHeaderTopOffset,\n growContent,\n onSelectionChanged,\n } = props;\n\n const {\n headerWidth,\n headerId,\n contentContainerRef,\n selectedTabIndex,\n headerRefCallbackRef,\n handleArrowsClick,\n toggleMoreRows,\n showMore,\n } = useComparisonTable({ onSelectionChanged });\n\n const [openSectionId, setOpenSectionId] = useState<number | null>(null);\n const stickyHeaderRef = useRef<HTMLDivElement>(null);\n\n const cssVariablesStyle = {\n '--tableWidth': `${headerWidth}px`,\n ...(cellWidth ? { '--cellWidth': `${cellWidth}px` } : {}),\n ...(firstColumnWidth\n ? { '--firstColumnWidth': `${firstColumnWidth}px` }\n : {}),\n ...(stickyHeaderTopOffset\n ? { '--stickyHeaderTopOffset': `${stickyHeaderTopOffset}px` }\n : {}),\n ...(growContent ? { '--growContent': '100%' } : {}),\n } as React.CSSProperties;\n\n return (\n <ScrollSync onSync={headerRefCallbackRef}>\n <div\n style={cssVariablesStyle}\n className={classNames({\n [baseStyles.noScrollBars]: hideScrollBars,\n [baseStyles.noScrollBarsMobile]: hideScrollBarsMobile,\n })}\n >\n <div\n ref={stickyHeaderRef}\n id={headerId}\n className={classNames(baseStyles.header, classNameOverrides?.header)}\n >\n <ScrollSyncPane>\n <div className={classNames(baseStyles.container)}>\n <div className={classNames(baseStyles['overflow-container'])}>\n <div className={baseStyles['group-container']}>\n <TableArrows\n onClick={handleArrowsClick}\n active={{\n left: selectedTabIndex > 0,\n right: selectedTabIndex < data.length - 1,\n }}\n />\n <Row<T>\n key=\"table-header-row\"\n rowId=\"table-header-row\"\n cell={headers[0].cells[0]}\n data={data}\n isRowHeader\n cellClassName={classNameOverrides?.headerCell}\n />\n </div>\n </div>\n </div>\n </ScrollSyncPane>\n </div>\n <div ref={contentContainerRef}>\n {Array.isArray(headers) &&\n headers\n .filter(\n (headerGroup) => !hideDetails || showMore || headerGroup.default\n )\n .map((headerGroup, headerGroupIndex) => {\n const content = headerGroup.cells?.map((cell, index) => {\n const rowId = `${headerGroup.id}-${\n cell.key ?? 'addon'\n }-${index}`;\n\n /** Do not render the first row */\n if (index === 0 && headerGroupIndex === 0) return null;\n\n return (\n <Row<T>\n key={rowId}\n rowId={rowId}\n cell={cell}\n data={data}\n cellClassName={classNameOverrides?.cell}\n />\n );\n });\n\n const idString = `headerGroup-${headerGroup.id}`;\n\n return (\n <Fragment key={idString}>\n {headerGroup.label && collapsibleSections ? (\n <AccordionItem\n className={classNames(\n 'mt16',\n classNameOverrides?.collapsibleSection\n )}\n label={headerGroup.label}\n headerClassName=\"p24 br8\"\n isOpen={openSectionId === headerGroup.id}\n onToggle={() =>\n setOpenSectionId((prev) =>\n prev === headerGroup.id ? null : headerGroup.id\n )\n }\n scrollOnOpen={scrollOnOpen}\n scrollTopOffset={\n scrollTopOffset +\n (stickyHeaderRef.current?.getBoundingClientRect()\n .height ?? 0)\n }\n >\n <ScrollSyncPane>\n <div\n className={classNames(\n baseStyles.container,\n 'pb16',\n classNameOverrides?.container,\n {\n [baseStyles.noScrollBars]: hideScrollBars,\n }\n )}\n >\n <div\n className={classNames(\n baseStyles['overflow-container']\n )}\n >\n <div className={baseStyles['group-container']}>\n {content}\n </div>\n </div>\n </div>\n </ScrollSyncPane>\n </AccordionItem>\n ) : (\n <section\n key={idString}\n className={classNames(\n baseStyles.section,\n classNameOverrides?.section\n )}\n >\n <ScrollSyncPane>\n <div\n className={classNames(\n baseStyles.container,\n 'pb16',\n classNameOverrides?.container,\n {\n [baseStyles.noScrollBars]: hideScrollBars,\n }\n )}\n >\n <div\n className={classNames(\n baseStyles['overflow-container']\n )}\n >\n <div className={baseStyles['group-container']}>\n {\n /**\n * Print a table subheader if the `label` value is present\n */\n headerGroup.label && !collapsibleSections && (\n <div className={baseStyles['group-title']}>\n <h4\n className={`p-h4 ${baseStyles.sticky}`}\n >\n {headerGroup.label}\n </h4>\n </div>\n )\n }\n {content}\n </div>\n </div>\n </div>\n </ScrollSyncPane>\n </section>\n )}\n </Fragment>\n );\n })}\n {hideDetails && (\n <div\n className={classNames(\n baseStyles['show-details-container'],\n baseStyles.sticky,\n 'mt48'\n )}\n >\n <div>\n <button\n className={classNames(\n 'w100 d-flex p-h4 c-pointer',\n baseStyles['show-details-button'],\n classNameOverrides?.hideDetailsButton\n )}\n onClick={toggleMoreRows}\n type=\"button\"\n >\n {showMore ? hideDetailsCaption : showDetailsCaption}\n <Chevron\n className={showMore ? '' : baseStyles['icon-inverted']}\n />\n </button>\n </div>\n </div>\n )}\n </div>\n </div>\n </ScrollSync>\n );\n};\n\nexport {\n ComparisonTable,\n TableButton,\n TableInfoButton,\n TableRating,\n TableRowHeader,\n TableTrueFalse,\n};\n"],"names":["_jsx","ScrollSync","_jsxs","ScrollSyncPane"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/lib/components/comparisonTable/hooks/useComparisonTable.ts","../../../../../src/lib/components/comparisonTable/index.tsx"],"sourcesContent":["import debounce from 'lodash.debounce';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport generateId from '../../../util/generateId';\nimport { ArrowValues } from '../components/TableArrows';\n\nexport const useComparisonTable = ({\n onSelectionChanged,\n}: {\n onSelectionChanged?: (selectedIndex: number) => void;\n}) => {\n const [showMore, setShowMore] = useState<boolean>(false);\n const [headerWidth, setHeaderWidth] = useState(1400);\n const [selectedTabIndex, setSelectedTabIndex] = useState(0);\n const [headerId, setHeaderId] = useState('');\n const headerRef = useRef<HTMLDivElement | null>(null);\n const contentContainerRef = useRef<HTMLDivElement | null>(null);\n const observerRef = useRef<ResizeObserver | null>(null);\n\n const headerRefCallbackRef = useCallback((node) => {\n if (node) {\n setHeaderWidth(node.clientWidth);\n }\n\n headerRef.current = node;\n }, []);\n\n useEffect(() => {\n if (!observerRef.current) {\n observerRef.current = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const currentTabIndex = Math.round(\n entry.target.scrollLeft / entry.contentRect.width\n );\n\n setHeaderWidth(entry.contentRect.width);\n\n // Update selectedTabIndex to match the calculated current tab index\n setSelectedTabIndex(currentTabIndex);\n });\n });\n }\n\n if (headerRef.current) {\n observerRef.current.observe(headerRef.current);\n }\n\n return () => {\n if (headerRef.current) {\n observerRef.current?.unobserve(headerRef.current);\n }\n observerRef.current?.disconnect();\n };\n }, []);\n\n useEffect(() => {\n const resetHeaderWidth = () => {\n if (headerRef.current) {\n setHeaderWidth(headerRef.current.clientWidth);\n }\n };\n\n window.addEventListener('resize', resetHeaderWidth);\n\n return () => window.removeEventListener('resize', resetHeaderWidth);\n }, []);\n\n const handleTableScroll = () => {\n if (!headerRef.current) {\n return;\n }\n\n const headerWidth = headerRef.current.getBoundingClientRect().width;\n\n const currentTabIndex = Math.round(\n headerRef.current.scrollLeft / headerWidth\n );\n\n setSelectedTabIndex(currentTabIndex);\n };\n\n const debouncedTableScroll = debounce(handleTableScroll, 150);\n\n useEffect(() => {\n headerRef.current?.addEventListener('scroll', debouncedTableScroll, {\n passive: true,\n });\n\n return headerRef.current?.removeEventListener('scroll', handleTableScroll);\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleArrowsClick = (value: ArrowValues) => {\n if (headerRef.current) {\n const currentTabIndex = Math.round(\n headerRef.current.scrollLeft / headerRef.current.clientWidth\n );\n\n const direction = value === 'next' ? 1 : -1;\n\n const newTabIndex = currentTabIndex + direction;\n\n headerRef.current.scroll({\n top: 0,\n left: headerWidth * newTabIndex,\n behavior: 'smooth',\n });\n\n setSelectedTabIndex(() => {\n return newTabIndex;\n });\n }\n };\n\n const toggleMoreRows = async () => {\n setShowMore(!showMore);\n };\n\n useEffect(() => {\n if (headerRef.current) {\n return;\n }\n\n const headerById = document.getElementById(headerId);\n\n if (headerById) {\n headerRefCallbackRef(headerById);\n }\n }, [headerId, headerRefCallbackRef]);\n\n useEffect(() => {\n setHeaderId(generateId());\n }, []);\n\n useEffect(() => {\n onSelectionChanged?.(selectedTabIndex);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedTabIndex]);\n\n return {\n headerWidth,\n headerId,\n contentContainerRef,\n selectedTabIndex,\n setSelectedTabIndex,\n headerRefCallbackRef,\n handleArrowsClick,\n toggleMoreRows,\n showMore,\n };\n};\n","import classNames from 'classnames';\nimport { Fragment, useRef, useState } from 'react';\nimport { ScrollSync, ScrollSyncPane } from 'react-scroll-sync';\n\nimport { AccordionItem } from './components/AccordionItem';\nimport Chevron from './components/Chevron';\nimport Row from './components/Row';\nimport TableArrows from './components/TableArrows';\nimport TableButton from './components/TableButton';\nimport TableInfoButton from './components/TableInfoButton';\nimport TableRating from './components/TableRating';\nimport TableRowHeader from './components/TableRowHeader';\nimport TableTrueFalse from './components/TableTrueFalse';\nimport { useComparisonTable } from './hooks/useComparisonTable';\nimport baseStyles from './style.module.scss';\n\nexport interface CellBaseProps<T> {\n /** Used to display the row's title */\n label?: React.ReactNode;\n /**\n *\n * @param value The current data value\n * @param element The complete data object\n */\n render?: (value: any, element: T) => React.ReactNode; // TODO: add typing to value param\n}\n\ninterface CellWithId<T> extends CellBaseProps<T> {\n /** Used when adding component add-ons */\n addonId: string | number;\n}\n\nexport type Cell<T> =\n | ({ key: Extract<keyof T, string> } & CellBaseProps<T>)\n | ({ key?: undefined } & CellWithId<T>);\n\nexport interface TableHeader<T> {\n /** Required unique id number for each table group */\n id: number;\n /** Used to display a table group subheader */\n label?: React.ReactNode;\n cells: Array<Cell<T>>;\n default?: boolean;\n}\n\nexport interface ComparisonTableProps<T> {\n headers: Array<TableHeader<T>>;\n data: Array<T>;\n hideDetails?: boolean;\n hideDetailsCaption?: string;\n showDetailsCaption?: string;\n hideScrollBars?: boolean;\n hideScrollBarsMobile?: boolean;\n collapsibleSections?: boolean;\n scrollOnOpen?: boolean;\n scrollTopOffset?: number;\n cellWidth?: number;\n firstColumnWidth?: number;\n stickyHeaderTopOffset?: number;\n growContent?: boolean;\n classNameOverrides?: ClassNameOverrides;\n onSelectionChanged?: (selectedIndex: number) => void;\n}\n\nexport interface ClassNameOverrides {\n header?: string;\n container?: string;\n cell?: string;\n headerCell?: string;\n collapsibleSection?: string;\n section?: string;\n hideDetailsButton?: string;\n}\n\nconst ComparisonTable = <T extends { id: number }>(\n props: ComparisonTableProps<T>\n) => {\n const {\n headers,\n data,\n hideDetails,\n hideDetailsCaption = 'Hide details',\n showDetailsCaption = 'Show details',\n classNameOverrides,\n hideScrollBars,\n hideScrollBarsMobile = true,\n collapsibleSections,\n scrollOnOpen,\n scrollTopOffset = 0,\n cellWidth,\n firstColumnWidth,\n stickyHeaderTopOffset,\n growContent,\n onSelectionChanged,\n } = props;\n\n const {\n headerWidth,\n headerId,\n contentContainerRef,\n selectedTabIndex,\n headerRefCallbackRef,\n handleArrowsClick,\n toggleMoreRows,\n showMore,\n } = useComparisonTable({ onSelectionChanged });\n\n const [openSectionId, setOpenSectionId] = useState<number | null>(null);\n const stickyHeaderRef = useRef<HTMLDivElement>(null);\n\n const cssVariablesStyle = {\n '--tableWidth': `${headerWidth}px`,\n ...(cellWidth ? { '--cellWidth': `${cellWidth}px` } : {}),\n ...(firstColumnWidth\n ? { '--firstColumnWidth': `${firstColumnWidth}px` }\n : {}),\n ...(stickyHeaderTopOffset\n ? { '--stickyHeaderTopOffset': `${stickyHeaderTopOffset}px` }\n : {}),\n ...(growContent ? { '--growContent': '100%' } : {}),\n } as React.CSSProperties;\n\n return (\n <ScrollSync onSync={headerRefCallbackRef}>\n <div\n style={cssVariablesStyle}\n className={classNames({\n [baseStyles.noScrollBars]: hideScrollBars,\n [baseStyles.noScrollBarsMobile]: hideScrollBarsMobile,\n })}\n >\n <div\n ref={stickyHeaderRef}\n id={headerId}\n className={classNames(baseStyles.header, classNameOverrides?.header)}\n >\n <ScrollSyncPane>\n <div className={classNames(baseStyles.container)}>\n <div className={classNames(baseStyles['overflow-container'])}>\n <div className={baseStyles['group-container']}>\n <TableArrows\n onClick={handleArrowsClick}\n active={{\n left: selectedTabIndex > 0,\n right: selectedTabIndex < data.length - 1,\n }}\n />\n <Row<T>\n key=\"table-header-row\"\n rowId=\"table-header-row\"\n cell={headers[0].cells[0]}\n data={data}\n isRowHeader\n cellClassName={classNameOverrides?.headerCell}\n />\n </div>\n </div>\n </div>\n </ScrollSyncPane>\n </div>\n <div ref={contentContainerRef}>\n {Array.isArray(headers) &&\n headers\n .filter(\n (headerGroup) => !hideDetails || showMore || headerGroup.default\n )\n .map((headerGroup, headerGroupIndex) => {\n const content = headerGroup.cells?.map((cell, index) => {\n const rowId = `${headerGroup.id}-${\n cell.key ?? 'addon'\n }-${index}`;\n\n /** Do not render the first row */\n if (index === 0 && headerGroupIndex === 0) return null;\n\n return (\n <Row<T>\n key={rowId}\n rowId={rowId}\n cell={cell}\n data={data}\n cellClassName={classNameOverrides?.cell}\n />\n );\n });\n\n const idString = `headerGroup-${headerGroup.id}`;\n\n return (\n <Fragment key={idString}>\n {headerGroup.label && collapsibleSections ? (\n <AccordionItem\n className={classNames(\n baseStyles['collapsible-section'],\n classNameOverrides?.collapsibleSection\n )}\n label={headerGroup.label}\n headerClassName=\"p24 br8\"\n isOpen={openSectionId === headerGroup.id}\n onToggle={() =>\n setOpenSectionId((prev) =>\n prev === headerGroup.id ? null : headerGroup.id\n )\n }\n scrollOnOpen={scrollOnOpen}\n scrollTopOffset={\n scrollTopOffset +\n (stickyHeaderRef.current?.getBoundingClientRect()\n .height ?? 0)\n }\n >\n <ScrollSyncPane>\n <div\n className={classNames(\n baseStyles.container,\n 'pb16',\n classNameOverrides?.container,\n {\n [baseStyles.noScrollBars]: hideScrollBars,\n }\n )}\n >\n <div\n className={classNames(\n baseStyles['overflow-container']\n )}\n >\n <div className={baseStyles['group-container']}>\n {content}\n </div>\n </div>\n </div>\n </ScrollSyncPane>\n </AccordionItem>\n ) : (\n <section\n key={idString}\n className={classNames(\n baseStyles.section,\n classNameOverrides?.section\n )}\n >\n <ScrollSyncPane>\n <div\n className={classNames(\n baseStyles.container,\n 'pb16',\n classNameOverrides?.container,\n {\n [baseStyles.noScrollBars]: hideScrollBars,\n }\n )}\n >\n <div\n className={classNames(\n baseStyles['overflow-container']\n )}\n >\n <div className={baseStyles['group-container']}>\n {\n /**\n * Print a table subheader if the `label` value is present\n */\n headerGroup.label && !collapsibleSections && (\n <div className={baseStyles['group-title']}>\n <h4\n className={`p-h4 ${baseStyles.sticky}`}\n >\n {headerGroup.label}\n </h4>\n </div>\n )\n }\n {content}\n </div>\n </div>\n </div>\n </ScrollSyncPane>\n </section>\n )}\n </Fragment>\n );\n })}\n {hideDetails && (\n <div\n className={classNames(\n baseStyles['show-details-container'],\n baseStyles.sticky,\n 'mt48'\n )}\n >\n <div>\n <button\n className={classNames(\n 'w100 d-flex p-h4 c-pointer',\n baseStyles['show-details-button'],\n classNameOverrides?.hideDetailsButton\n )}\n onClick={toggleMoreRows}\n type=\"button\"\n >\n {showMore ? hideDetailsCaption : showDetailsCaption}\n <Chevron\n className={showMore ? '' : baseStyles['icon-inverted']}\n />\n </button>\n </div>\n </div>\n )}\n </div>\n </div>\n </ScrollSync>\n );\n};\n\nexport {\n ComparisonTable,\n TableButton,\n TableInfoButton,\n TableRating,\n TableRowHeader,\n TableTrueFalse,\n};\n"],"names":["_jsx","ScrollSync","_jsxs","ScrollSyncPane"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@popsure/dirty-swan",
3
- "version": "0.66.3",
3
+ "version": "0.66.4",
4
4
  "author": "Vincent Audoire <vincent@getpopsure.com>",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -48,4 +48,39 @@ describe('geocoderAddressComponentToPartialAddress text', () => {
48
48
  expectedOutput
49
49
  );
50
50
  });
51
+
52
+ it('Should not populate postcode when postal_code_prefix is present in types', () => {
53
+ const input = [
54
+ {
55
+ long_name: 'Alte Jakobstraße',
56
+ short_name: 'Alte Jakobstraße',
57
+ types: ['route'],
58
+ },
59
+ {
60
+ long_name: 'Berlin',
61
+ short_name: 'Berlin',
62
+ types: ['locality', 'political'],
63
+ },
64
+ {
65
+ long_name: 'Germany',
66
+ short_name: 'DE',
67
+ types: ['country', 'political'],
68
+ },
69
+ {
70
+ long_name: '10',
71
+ short_name: '10',
72
+ types: ['postal_code', 'postal_code_prefix'],
73
+ },
74
+ ];
75
+
76
+ const expectedOutput = {
77
+ street: 'Alte Jakobstraße',
78
+ city: 'Berlin',
79
+ country: 'DE',
80
+ };
81
+
82
+ expect(geocoderAddressComponentToPartialAddress(input)).toEqual(
83
+ expectedOutput
84
+ );
85
+ });
51
86
  });
@@ -46,6 +46,12 @@ export const geocoderAddressComponentToPartialAddress = (
46
46
  const type = value.types[0] as keyof typeof mapping;
47
47
  const mappedValue = mapping[type];
48
48
  if (mappedValue) {
49
+ const isPostalCodePrefix = value.types.includes(
50
+ 'postal_code_prefix' as string
51
+ );
52
+ if (mappedValue.key === 'postcode' && isPostalCodePrefix) {
53
+ return;
54
+ }
49
55
  toReturn[mappedValue.key] = value[mappedValue.value];
50
56
  }
51
57
  });
@@ -191,7 +191,7 @@ const ComparisonTable = <T extends { id: number }>(
191
191
  {headerGroup.label && collapsibleSections ? (
192
192
  <AccordionItem
193
193
  className={classNames(
194
- 'mt16',
194
+ baseStyles['collapsible-section'],
195
195
  classNameOverrides?.collapsibleSection
196
196
  )}
197
197
  label={headerGroup.label}
@@ -39,6 +39,10 @@
39
39
  }
40
40
  }
41
41
 
42
+ .collapsible-section {
43
+ margin-top: 6px;
44
+ }
45
+
42
46
  .section + .section {
43
47
  margin-top: 48px;
44
48