@abcagency/hc-ui-components 1.9.20 → 1.9.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/containers/accordions/filter-container.js +4 -2
- package/dist/components/containers/accordions/filter-container.js.map +1 -1
- package/dist/components/containers/filter/filter-container.js +2 -2
- package/dist/components/containers/filter/filter-container.js.map +1 -1
- package/dist/components/containers/maps/map-container.js +2 -2
- package/dist/components/containers/maps/map-container.js.map +1 -1
- package/dist/components/modules/accordions/filters.js +12 -2
- package/dist/components/modules/accordions/filters.js.map +1 -1
- package/dist/components/modules/filter/index.js +9 -31
- package/dist/components/modules/filter/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/containers/accordions/filter-container.js +4 -2
- package/src/components/containers/filter/filter-container.js +1 -1
- package/src/components/containers/maps/map-container.js +2 -2
- package/src/components/modules/accordions/filters.js +19 -4
- package/src/components/modules/filter/index.js +12 -51
|
@@ -11,7 +11,8 @@ var AccordionFiltersContainer = function AccordionFiltersContainer(_ref) {
|
|
|
11
11
|
setDefaultValue = _ref.setDefaultValue,
|
|
12
12
|
setLocation = _ref.setLocation,
|
|
13
13
|
setSelectedListItem = _ref.setSelectedListItem,
|
|
14
|
-
SubcategoryRequireCategory = _ref.SubcategoryRequireCategory
|
|
14
|
+
SubcategoryRequireCategory = _ref.SubcategoryRequireCategory,
|
|
15
|
+
handleReset = _ref.handleReset;
|
|
15
16
|
var _useMapList = useMapList(),
|
|
16
17
|
filterOptions = _useMapList.filterOptions,
|
|
17
18
|
selectedFilters = _useMapList.selectedFilters,
|
|
@@ -40,7 +41,8 @@ var AccordionFiltersContainer = function AccordionFiltersContainer(_ref) {
|
|
|
40
41
|
return /*#__PURE__*/React.createElement(AccordionFilters, {
|
|
41
42
|
className: className,
|
|
42
43
|
defaultValue: defaultValue,
|
|
43
|
-
filterOptions: filterOptions
|
|
44
|
+
filterOptions: filterOptions,
|
|
45
|
+
handleReset: handleReset
|
|
44
46
|
}, (_displayedFilters = displayedFilters) === null || _displayedFilters === void 0 ? void 0 : _displayedFilters.map(function (filter) {
|
|
45
47
|
if (filter.id === 'category' && SubcategoryRequireCategory === true && (!selectedFilters.categoryClass || Object.keys(selectedFilters.categoryClass).length < 1)) {
|
|
46
48
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-container.js","sources":["../../../../src/components/containers/accordions/filter-container.js"],"sourcesContent":["import React from 'react';\nimport { useMapList } from '~/contexts/mapListContext';\nimport AccordionFilters from '~/components/modules/accordions/filters';\nimport AccordionFilterItem from '~/components/containers/accordions/filter-item-container';\nimport FilterItem from '~/components/containers/filter/filter-item-container';\n\nconst AccordionFiltersContainer = ({\n\tclassName,\n\tdefaultValue,\n\tsetDefaultValue,\n\tsetLocation,\n\tsetSelectedListItem,\n\tSubcategoryRequireCategory\n}) => {\n\tconst { filterOptions, selectedFilters, setSelectedFilters, siteConfig, hiddenFilters, noEntities } = useMapList();\n\n\tconst handleSetSelectedFilters = prevFilters => {\n\t\tsetSelectedFilters(prevFilters);\n\t\tsetLocation(null);\n\t\tsetSelectedListItem(null);\n\t};\n\tlet displayedFilters = filterOptions?.filters;\n\n\tif (hiddenFilters) {\n\t\t displayedFilters = filterOptions?.filters.filter(filter => !hiddenFilters.includes(filter.id));\n\t}\n\n\t// Hide entity-dependent filters when noEntities is true\n\tif (noEntities && displayedFilters) {\n\t\tdisplayedFilters = displayedFilters.filter(filter => filter.id !== 'entityName');\n\t}\n\n\treturn (\n\t\t<AccordionFilters\n\t\t\tclassName={className}\n\t\t\tdefaultValue={defaultValue}\n\t\t\tfilterOptions={filterOptions}\n\t\t>\n\t\t\t{displayedFilters?.map(filter => {\n\t\t\t\tif(filter.id === 'category' && SubcategoryRequireCategory === true && (!selectedFilters.categoryClass || Object.keys(selectedFilters.categoryClass).length < 1)){\n\t\t\t\t\treturn;\n\t\t\t\t} else if (filter.id === 'category' && SubcategoryRequireCategory === true && filter.items.length > 0) {\n\t\t\t\t\tfilter.items = filter.items.filter(item => item.count > 0);\n\t\t\t\t}\n\n\t\t\telse if(filter.id === 'specialFeatures' && !filter.items.some(item => item.name !== \"Favorite\" && item.count > 0)){\n\t\t\t\t\tconst favorite = filter.items.find(item => item.name === \"Favorite\");\n\t\t\t\t\treturn \t<FilterItem\n\t\t\t\t\t\tkey={\"Favorite\"}\n\t\t\t\t\t\titem={favorite}\n\t\t\t\t\t\tfield={filter.id}\n\t\t\t\t\t\tselectedFilters={selectedFilters}\n\t\t\t\t\t\tsetSelectedFilters={setSelectedFilters}\n\t\t\t\t\t\tsubcategoryRequireCategory={false}\n\t\t\t\t\t/>;\n\n\t\t\t\t}\n\n\t\t\t\treturn (<AccordionFilterItem\n\t\t\t\t\tkey={filter.id}\n\t\t\t\t\tfilter={filter}\n\t\t\t\t\texternalLinksInFilters={siteConfig.externalLinksInFilters}\n\t\t\t\t\tsetDefaultValue={setDefaultValue}\n\t\t\t\t\tselectedFilters={selectedFilters}\n\t\t\t\t\tsetSelectedFilters={handleSetSelectedFilters}\n\t\t\t\t\tsubcategoryRequireCategory={siteConfig.subcategoryRequireCategory}\n\t\t\t\t/>);\n\t\t\t}\n\t\t\t)}\n\t\t</AccordionFilters>\n\t);\n};\n\nexport default AccordionFiltersContainer;\n"],"names":["AccordionFiltersContainer","_ref","_displayedFilters","className","defaultValue","setDefaultValue","setLocation","setSelectedListItem","SubcategoryRequireCategory","_useMapList","useMapList","filterOptions","selectedFilters","setSelectedFilters","siteConfig","hiddenFilters","noEntities","handleSetSelectedFilters","prevFilters","displayedFilters","filters","filter","includes","id","React","createElement","AccordionFilters","map","categoryClass","Object","keys","length","items","item","count","some","name","favorite","find","FilterItem","key","field","subcategoryRequireCategory","AccordionFilterItem","externalLinksInFilters"],"mappings":";;;;;;AAMA,IAAMA,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAAC,IAAA,
|
|
1
|
+
{"version":3,"file":"filter-container.js","sources":["../../../../src/components/containers/accordions/filter-container.js"],"sourcesContent":["import React from 'react';\nimport { useMapList } from '~/contexts/mapListContext';\nimport AccordionFilters from '~/components/modules/accordions/filters';\nimport AccordionFilterItem from '~/components/containers/accordions/filter-item-container';\nimport FilterItem from '~/components/containers/filter/filter-item-container';\n\nconst AccordionFiltersContainer = ({\n\tclassName,\n\tdefaultValue,\n\tsetDefaultValue,\n\tsetLocation,\n\tsetSelectedListItem,\n\tSubcategoryRequireCategory,\n\thandleReset\n}) => {\n\tconst { filterOptions, selectedFilters, setSelectedFilters, siteConfig, hiddenFilters, noEntities } = useMapList();\n\n\tconst handleSetSelectedFilters = prevFilters => {\n\t\tsetSelectedFilters(prevFilters);\n\t\tsetLocation(null);\n\t\tsetSelectedListItem(null);\n\t};\n\tlet displayedFilters = filterOptions?.filters;\n\n\tif (hiddenFilters) {\n\t\t displayedFilters = filterOptions?.filters.filter(filter => !hiddenFilters.includes(filter.id));\n\t}\n\n\t// Hide entity-dependent filters when noEntities is true\n\tif (noEntities && displayedFilters) {\n\t\tdisplayedFilters = displayedFilters.filter(filter => filter.id !== 'entityName');\n\t}\n\n\treturn (\n\t\t<AccordionFilters\n\t\t\tclassName={className}\n\t\t\tdefaultValue={defaultValue}\n\t\t\tfilterOptions={filterOptions}\n\t\t\thandleReset={handleReset}\n\t\t>\n\t\t\t{displayedFilters?.map(filter => {\n\t\t\t\tif(filter.id === 'category' && SubcategoryRequireCategory === true && (!selectedFilters.categoryClass || Object.keys(selectedFilters.categoryClass).length < 1)){\n\t\t\t\t\treturn;\n\t\t\t\t} else if (filter.id === 'category' && SubcategoryRequireCategory === true && filter.items.length > 0) {\n\t\t\t\t\tfilter.items = filter.items.filter(item => item.count > 0);\n\t\t\t\t}\n\n\t\t\t\telse if(filter.id === 'specialFeatures' && !filter.items.some(item => item.name !== \"Favorite\" && item.count > 0)){\n\t\t\t\t\tconst favorite = filter.items.find(item => item.name === \"Favorite\");\n\t\t\t\t\treturn \t<FilterItem\n\t\t\t\t\t\tkey={\"Favorite\"}\n\t\t\t\t\t\titem={favorite}\n\t\t\t\t\t\tfield={filter.id}\n\t\t\t\t\t\tselectedFilters={selectedFilters}\n\t\t\t\t\t\tsetSelectedFilters={setSelectedFilters}\n\t\t\t\t\t\tsubcategoryRequireCategory={false}\n\t\t\t\t\t/>;\n\n\t\t\t\t}\n\n\t\t\t\treturn (<AccordionFilterItem\n\t\t\t\t\tkey={filter.id}\n\t\t\t\t\tfilter={filter}\n\t\t\t\t\texternalLinksInFilters={siteConfig.externalLinksInFilters}\n\t\t\t\t\tsetDefaultValue={setDefaultValue}\n\t\t\t\t\tselectedFilters={selectedFilters}\n\t\t\t\t\tsetSelectedFilters={handleSetSelectedFilters}\n\t\t\t\t\tsubcategoryRequireCategory={siteConfig.subcategoryRequireCategory}\n\t\t\t\t/>);\n\t\t\t}\n\t\t\t)}\n\t\t</AccordionFilters>\n\t);\n};\n\nexport default AccordionFiltersContainer;\n"],"names":["AccordionFiltersContainer","_ref","_displayedFilters","className","defaultValue","setDefaultValue","setLocation","setSelectedListItem","SubcategoryRequireCategory","handleReset","_useMapList","useMapList","filterOptions","selectedFilters","setSelectedFilters","siteConfig","hiddenFilters","noEntities","handleSetSelectedFilters","prevFilters","displayedFilters","filters","filter","includes","id","React","createElement","AccordionFilters","map","categoryClass","Object","keys","length","items","item","count","some","name","favorite","find","FilterItem","key","field","subcategoryRequireCategory","AccordionFilterItem","externalLinksInFilters"],"mappings":"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"}
|
|
@@ -61,7 +61,6 @@ var FilterContainer = function FilterContainer(_ref) {
|
|
|
61
61
|
selectedFilters: selectedFilters,
|
|
62
62
|
setSelectedFilters: setSelectedFilters,
|
|
63
63
|
setMobileTab: setMobileTab,
|
|
64
|
-
handleReset: handleReset,
|
|
65
64
|
siteConfig: siteConfig,
|
|
66
65
|
style: containerStyle
|
|
67
66
|
}, /*#__PURE__*/React.createElement(AccordionFiltersContainer, {
|
|
@@ -72,7 +71,8 @@ var FilterContainer = function FilterContainer(_ref) {
|
|
|
72
71
|
},
|
|
73
72
|
setLocation: setLocation,
|
|
74
73
|
setSelectedListItem: setSelectedListItem,
|
|
75
|
-
SubcategoryRequireCategory: siteConfig.subcategoryRequireCategory
|
|
74
|
+
SubcategoryRequireCategory: siteConfig.subcategoryRequireCategory,
|
|
75
|
+
handleReset: handleReset
|
|
76
76
|
}), /*#__PURE__*/React.createElement(SearchContainer, null), siteConfig.hideLocations !== true && !noEntities && /*#__PURE__*/React.createElement(FilterLocationContainer, {
|
|
77
77
|
setHasActiveFilters: setHasActiveFilters,
|
|
78
78
|
defaultValue: defaultValue,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-container.js","sources":["../../../../src/components/containers/filter/filter-container.js"],"sourcesContent":["import React, { useState } from 'react';\nimport { useMap } from '~/contexts/mapContext';\nimport { useMapList } from '~/contexts/mapListContext';\nimport { useTrackEvent } from '~/contexts/trackEventContext';\nimport Filter from '~/components/modules/filter/index';\nimport FilterSearch from '~/components/containers/filter/search-container';\nimport FiltersAccordion from '~/components/containers/accordions/filter-container';\nimport FilterLocations from '~/components/containers/filter/location-container';\n\nconst FilterContainer = ({\n\tclassName,\n\tshowMap,\n\tisDesktop = false\n}) => {\n\tconst { trackEvent, eventTypes } = useTrackEvent();\n\tconst [hasActiveFilters, setHasActiveFilters] = useState(false);\n\n\tconst { setSelectedListItem, setLocation, filterReset } = useMap();\n\tconst {\n\t\tfilteredListings,\n\t\tselectedFilters,\n\t\tsetSelectedFilters,\n\t\tsetMobileTab,\n\t\thandleSettingFavorites,\n\t\tsetQuery,\n\t\tsiteConfig,\n\t\tcontainerStyle,\n\t\tnoEntities\n\t} = useMapList();\n\tconst [defaultValue, setDefaultValue] = useState(siteConfig?.defaultFilterOpen ? siteConfig?.defaultFilterOpen : null);\n\tconst handleReset = () => {\n\t\ttrackEvent(eventTypes.FILTERS_RESET, { filtersRemoved: selectedFilters });\n\t\tfilterReset();\n\t\tsetSelectedFilters({});\n\t\tsetQuery(null);\n\t\thandleSettingFavorites(null);\n\t};\n\n\treturn (\n\t\t<Filter\n\t\t\tclassName={className}\n\t\t\tshowMap={showMap}\n\t\t\tisDesktop={isDesktop}\n\t\t\thasActiveFilters={hasActiveFilters}\n\t\t\tsetHasActiveFilters={setHasActiveFilters}\n\t\t\tdefaultValue={defaultValue}\n\t\t\tsetDefaultValue={setDefaultValue}\n\t\t\tsetSelectedListItem={setSelectedListItem}\n\t\t\tsetLocation={setLocation}\n\t\t\tfilteredListings={filteredListings}\n\t\t\tselectedFilters={selectedFilters}\n\t\t\tsetSelectedFilters={setSelectedFilters}\n\t\t\tsetMobileTab={setMobileTab}\n\t\t\
|
|
1
|
+
{"version":3,"file":"filter-container.js","sources":["../../../../src/components/containers/filter/filter-container.js"],"sourcesContent":["import React, { useState } from 'react';\nimport { useMap } from '~/contexts/mapContext';\nimport { useMapList } from '~/contexts/mapListContext';\nimport { useTrackEvent } from '~/contexts/trackEventContext';\nimport Filter from '~/components/modules/filter/index';\nimport FilterSearch from '~/components/containers/filter/search-container';\nimport FiltersAccordion from '~/components/containers/accordions/filter-container';\nimport FilterLocations from '~/components/containers/filter/location-container';\n\nconst FilterContainer = ({\n\tclassName,\n\tshowMap,\n\tisDesktop = false\n}) => {\n\tconst { trackEvent, eventTypes } = useTrackEvent();\n\tconst [hasActiveFilters, setHasActiveFilters] = useState(false);\n\n\tconst { setSelectedListItem, setLocation, filterReset } = useMap();\n\tconst {\n\t\tfilteredListings,\n\t\tselectedFilters,\n\t\tsetSelectedFilters,\n\t\tsetMobileTab,\n\t\thandleSettingFavorites,\n\t\tsetQuery,\n\t\tsiteConfig,\n\t\tcontainerStyle,\n\t\tnoEntities\n\t} = useMapList();\n\tconst [defaultValue, setDefaultValue] = useState(siteConfig?.defaultFilterOpen ? siteConfig?.defaultFilterOpen : null);\n\tconst handleReset = () => {\n\t\ttrackEvent(eventTypes.FILTERS_RESET, { filtersRemoved: selectedFilters });\n\t\tfilterReset();\n\t\tsetSelectedFilters({});\n\t\tsetQuery(null);\n\t\thandleSettingFavorites(null);\n\t};\n\n\treturn (\n\t\t<Filter\n\t\t\tclassName={className}\n\t\t\tshowMap={showMap}\n\t\t\tisDesktop={isDesktop}\n\t\t\thasActiveFilters={hasActiveFilters}\n\t\t\tsetHasActiveFilters={setHasActiveFilters}\n\t\t\tdefaultValue={defaultValue}\n\t\t\tsetDefaultValue={setDefaultValue}\n\t\t\tsetSelectedListItem={setSelectedListItem}\n\t\t\tsetLocation={setLocation}\n\t\t\tfilteredListings={filteredListings}\n\t\t\tselectedFilters={selectedFilters}\n\t\t\tsetSelectedFilters={setSelectedFilters}\n\t\t\tsetMobileTab={setMobileTab}\n\t\t\tsiteConfig={siteConfig}\n\t\t\tstyle={containerStyle}\n\n\t\t>\n\t\t\t<FiltersAccordion\n\t\t\t\tsetHasActiveFilters={setHasActiveFilters}\n\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\tsetDefaultValue={value => { setDefaultValue(value === defaultValue ? \"\" : value); }}\n\t\t\t\tsetLocation={setLocation}\n\t\t\t\tsetSelectedListItem={setSelectedListItem}\n\t\t\t\tSubcategoryRequireCategory={siteConfig.subcategoryRequireCategory}\n\t\t\t\thandleReset={handleReset}\n\t\t\t/>\n\t\t\t<FilterSearch />\n\t\t\t{siteConfig.hideLocations !== true && !noEntities &&\n\t\t\t<FilterLocations\n\t\t\t\tsetHasActiveFilters={setHasActiveFilters}\n\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\tshowMap={showMap}\n\t\t\t\tsetDefaultValue={value => { setDefaultValue(value === defaultValue ? \"\" : value); }}\n\t\t\t\tsetLocation={setLocation}\n\t\t\t\tsetSelectedListItem={setSelectedListItem}\n\t\t\t/>\n\t\t\t}\n\t\t</Filter>\n\t);\n};\n\nexport default FilterContainer;\n"],"names":["FilterContainer","_ref","className","showMap","_ref$isDesktop","isDesktop","_useTrackEvent","useTrackEvent","trackEvent","eventTypes","_useState","useState","_useState2","_slicedToArray","hasActiveFilters","setHasActiveFilters","_useMap","useMap","setSelectedListItem","setLocation","filterReset","_useMapList","useMapList","filteredListings","selectedFilters","setSelectedFilters","setMobileTab","handleSettingFavorites","setQuery","siteConfig","containerStyle","noEntities","_useState3","defaultFilterOpen","_useState4","defaultValue","setDefaultValue","handleReset","FILTERS_RESET","filtersRemoved","React","createElement","Filter","style","FiltersAccordion","value","SubcategoryRequireCategory","subcategoryRequireCategory","FilterSearch","hideLocations","FilterLocations"],"mappings":"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"}
|
|
@@ -337,7 +337,7 @@ var MapContainer = function MapContainer(_ref) {
|
|
|
337
337
|
});
|
|
338
338
|
}), additionalMapMarkers && additionalMapMarkers.map(function (marker, index) {
|
|
339
339
|
return currentZoom >= marker.minZoom && currentZoom <= marker.maxZoom && /*#__PURE__*/React.createElement(Marker, {
|
|
340
|
-
key: "marker-".concat(marker.title, "-").concat(index),
|
|
340
|
+
key: "additional-marker-".concat(marker.title, "-").concat(index),
|
|
341
341
|
position: marker.position,
|
|
342
342
|
title: marker.title,
|
|
343
343
|
icon: {
|
|
@@ -347,7 +347,7 @@ var MapContainer = function MapContainer(_ref) {
|
|
|
347
347
|
});
|
|
348
348
|
}), poiMarkers && poiMarkers.markers.map(function (marker, index) {
|
|
349
349
|
return /*#__PURE__*/React.createElement(PlaceMarker, {
|
|
350
|
-
key: "marker-".concat(marker.title, "-").concat(index),
|
|
350
|
+
key: "poi-marker-".concat(marker.title, "-").concat(index),
|
|
351
351
|
marker: marker,
|
|
352
352
|
index: index,
|
|
353
353
|
selectedPlaceMarker: selectedPlaceMarker,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-container.js","sources":["../../../../src/components/containers/maps/map-container.js"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useRef, useState } from \"react\";\n\nimport MapMarker from \"~/components/containers/maps/map-marker-container\";\nimport PlaceMarker from \"~/components/modules/maps/place-marker\";\n\nimport { usePlaces } from \"~/contexts/placesContext\";\nimport { useMap } from \"~/contexts/mapContext\";\nimport { useMapList } from \"~/contexts/mapListContext\";\n\nimport { markerIconSelected, markerIcon, pinIcon } from \"~/util/mapIconUtil\";\n\nimport Map from \"~/components/modules/maps/map\";\nimport { MarkerClustererF, Marker } from \"@react-google-maps/api\";\nimport { clusterOptions } from \"~/util/mapUtil\";\nimport { BallTriangle } from 'react-loader-spinner';\n\nconst MapContainer = ({ markerConfigs, infoWindowClasses, clusterGridSize = 60 }) => {\n\tconst [isGoogleMapsReady, setIsGoogleMapsReady] = useState(false);\n\n\t// Check if Google Maps is loaded\n\tuseEffect(() => {\n\t\tif (typeof window !== 'undefined' && window.google && window.google.maps && window.google.maps.Map) {\n\t\t\tconsole.log('Google Maps already loaded');\n\t\t\tsetIsGoogleMapsReady(true);\n\t\t\treturn;\n\t\t}\n\n\t\tconsole.log('Waiting for Google Maps to load...');\n\t\tlet attempts = 0;\n\t\tconst maxAttempts = 50; // 5 seconds max\n\t\t\n\t\t// Poll for Google Maps to become available\n\t\tconst checkInterval = setInterval(() => {\n\t\t\tattempts++;\n\t\t\tif (typeof window !== 'undefined' && window.google && window.google.maps && window.google.maps.Map) {\n\t\t\t\tconsole.log('Google Maps loaded after', attempts * 100, 'ms');\n\t\t\t\tsetIsGoogleMapsReady(true);\n\t\t\t\tclearInterval(checkInterval);\n\t\t\t} else if (attempts >= maxAttempts) {\n\t\t\t\tconsole.error('Google Maps failed to load after 5 seconds');\n\t\t\t\tclearInterval(checkInterval);\n\t\t\t}\n\t\t}, 100);\n\n\t\treturn () => clearInterval(checkInterval);\n\t}, []);\n\n\tconst {\n\t\tlocation,\n\t\tzoom,\n\t\tcenter,\n\t\tselectLocationEntity,\n\t\tsetLocation,\n\t\tmapInteracted,\n\t\tsetMapInteracted,\n\t\tdefaultZoomOverride\n\t} = useMap();\n\n\tconst {\n\t\tmapItems: oldMapItems,\n\t\tfilteredListings,\n\t\tselectedFilters,\n\t\tsetSelectedFilters,\n\t\tsetQuery,\n\t\tsiteConfig\n\t} = useMapList();\n\tconst [mapItems, setMapItems] = useState(null);\n\tconst [markersToHideFromBounds, setMarkersToHideFromBounds] = useState([]);\n\n\tconst mapRef = useRef();\n\tconst markerRefs = useRef({});\n\tconst mapContainerRef = useRef(null);\n\tconst {\n\t\tpoiMarkers,\n\t\tsetCurrentCenter,\n\t\tcurrentCenter,\n\t\tsetCurrentZoom,\n\t\tcurrentZoom,\n\t\tselectedPlaceMarker,\n\t\tsetSelectedPlaceMarker,\n\t\tplacesWindow,\n\t\tsetPlacesWindow,\n\t\tadditionalMapMarkers\n\t} = usePlaces();\n\n\tconst onIdle = () => {\n\t\tif (!currentCenter || !mapRef.current) return;\n\t\tconst newCenter = mapRef.current.getCenter().toJSON();\n\t\tconst newZoom = mapRef.current.zoom;\n\t\tsetCurrentCenter(newCenter);\n\n\t\tif (newZoom !== currentZoom) {\n\t\t\tsetCurrentZoom(newZoom);\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tif (!oldMapItems || oldMapItems.length === 0) return;\n\n\t\tif (!siteConfig.defaultMapState || mapInteracted || selectedFilters?.state || selectedFilters?.city) {\n\t\t\tsetMapItems(oldMapItems);\n\t\t\tsetMarkersToHideFromBounds([]);\n\t\t\treturn;\n\t\t}\n\n\t\tconst markersToHide = oldMapItems\n\t\t\t.filter(x => x.address.state !== siteConfig.defaultMapState)\n\t\t\t.map(item => item.id);\n\n\t\tsetMarkersToHideFromBounds(markersToHide);\n\t\tsetMapItems(oldMapItems);\n\t}, [oldMapItems, selectedFilters, siteConfig, mapInteracted]);\n\n\tuseEffect(() => {\n\t\tif (mapContainerRef.current) {\n\t\t\tconst handleScroll = () => {\n\t\t\t\tsetMapInteracted(true);\n\t\t\t};\n\t\t\tvar mapContainerRefCurrent = mapContainerRef.current;\n\t\t\tmapContainerRef.current.addEventListener(\"wheel\", handleScroll);\n\t\t\treturn () => mapContainerRefCurrent.removeEventListener(\"wheel\", handleScroll);\n\t\t}\n\t}, [mapContainerRef.current]);\n\n\tuseEffect(() => {\n\t\tif (mapRef.current && defaultZoomOverride && !mapInteracted && !location) {\n\t\t\tmapRef.current.setZoom(defaultZoomOverride);\n\t\t}\n\t}, [mapInteracted]);\n\n\tuseEffect(() => {\n\t\tif (mapRef.current) {\n\t\t\tconst mapInstance = mapRef.current;\n\t\t\tconst dragStartListener = mapInstance.addListener(\"dragstart\", () => {\n\t\t\t\tsetMapInteracted(true);\n\t\t\t\tsetMarkersToHideFromBounds([]);\n\t\t\t});\n\t\t\tconst mouseDownListener = mapInstance.addListener(\"mousedown\", () => {\n\t\t\t\tsetMapInteracted(true);\n\t\t\t\tsetMarkersToHideFromBounds([]);\n\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tgoogle.maps.event.removeListener(dragStartListener);\n\t\t\t\tgoogle.maps.event.removeListener(mouseDownListener);\n\t\t\t};\n\t\t}\n\t}, [mapRef.current, mapContainerRef.current]);\n\n\tuseEffect(() => {\n\t\tif (((mapItems && mapItems.length > 0) || poiMarkers.length > 0) && mapRef.current && !mapInteracted) {\n\t\t\tfitBounds(mapRef.current);\n\t\t}\n\t}, [mapItems, mapRef.current, location]);\n\n\tuseEffect(() => {\n\t\tif (((mapItems && mapItems.length > 0) || poiMarkers.length > 0) && mapRef.current && !mapInteracted) {\n\t\t\tfitBounds(mapRef.current, true);\n\t\t}\n\t\tif (mapRef.current && !mapInteracted) {\n\t\t\tconst jobPinZoomLevel = siteConfig?.jobPinZoomLevel ?? 12;\n\t\t\tconst currZoom = mapRef.current.zoom;\n\t\t\tconst setZoomVal = currZoom < (jobPinZoomLevel + 1) ? currZoom : jobPinZoomLevel;\n\t\t\tmapRef.current.setZoom(setZoomVal);\n\t\t}\n\t}, [filteredListings, siteConfig]);\n\n\tuseEffect(() => {\n\t\tif (!mapRef.current || !location || mapInteracted) return;\n\t\tconst jobPinZoomLevel = siteConfig?.jobPinZoomLevel ?? 12;\n\t\tmapRef.current.panTo(new google.maps.LatLng(location.latitude, location.longitude));\n\t\tif (mapRef.current) {\n\t\t\tconst setZoomVal = zoom < (jobPinZoomLevel + 1) ? zoom : jobPinZoomLevel;\n\t\t\tmapRef.current.setZoom(setZoomVal);\n\t\t}\n\t}, [location, zoom, siteConfig]);\n\n\tconst fitBounds = (map, overload = false) => {\n\t\tif ((mapInteracted === false || overload) && mapItems != null) {\n\t\t\tif (typeof window === 'undefined' || !window.google) return;\n\t\t\tconst bounds = new window.google.maps.LatLngBounds();\n\n\t\t\tmapItems.forEach(item => {\n\t\t\t\tif (!mapInteracted && markersToHideFromBounds.includes(item.id)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbounds.extend(new google.maps.LatLng(item.latitude, item.longitude));\n\t\t\t});\n\n\t\t\tif (siteConfig.optionalShowLocationClusterConfig) {\n\t\t\t\tconst configLocation = new google.maps.LatLng(\n\t\t\t\t\tsiteConfig.optionalShowLocationClusterConfig.latitude,\n\t\t\t\t\tsiteConfig.optionalShowLocationClusterConfig.longitude\n\t\t\t\t);\n\t\t\t\tmap.panTo(configLocation);\n\t\t\t\tbounds.extend(\n\t\t\t\t\tnew google.maps.LatLng(\n\t\t\t\t\t\tsiteConfig.optionalShowLocationClusterConfig.latitude,\n\t\t\t\t\t\tsiteConfig.optionalShowLocationClusterConfig.longitude\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (!map) return;\n\t\t\tconst currentCenter = map.getCenter();\n\t\t\tmap.fitBounds(bounds);\n\t\t\tconst newCenter = bounds.getCenter();\n\t\t\tif (currentCenter && newCenter) {\n\t\t\t\tmap.panTo(newCenter);\n\t\t\t}\n\t\t}\n\t\tif (defaultZoomOverride && !mapInteracted && !location) {\n\t\t\tmapRef.current.setZoom(defaultZoomOverride);\n\t\t} else if (mapRef.current.zoom > 17) {\n\t\t\tmapRef.current.setZoom(16);\n\t\t}\n\t};\n\n\tconst markerClickHandler = mapLocation => {\n\t\tsetMapInteracted(true);\n\t\tsetMarkersToHideFromBounds([]);\n\t\tselectLocationEntity(mapLocation);\n\t\tconst jobPinZoomLevel = siteConfig?.jobPinZoomLevel;\n\t\tif (jobPinZoomLevel !== undefined && mapRef.current) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (mapRef.current) {\n\t\t\t\t\tmapRef.current.panTo(new google.maps.LatLng(mapLocation.latitude, mapLocation.longitude));\n\t\t\t\t\tmapRef.current.setZoom(jobPinZoomLevel);\n\t\t\t\t}\n\t\t\t}, 300);\n\t\t}\n\t};\n\n\tconst onLoad = map => {\n\t\tif (!location || location === null) {\n\t\t\tmapRef.current = map;\n\t\t\tfitBounds(map, true);\n\t\t\treturn;\n\t\t}\n\t\tmapRef.current = map;\n\n\t\tif (mapInteracted === false) {\n\t\t\tmapRef.current.panTo(new google.maps.LatLng(location.latitude, location.longitude));\n\n\t\t\tmapRef.current.setZoom(zoom);\n\t\t}\n\t};\n\n\tconst pinIconUrl = pinIcon({\n\t\tfillColor: markerConfigs.fillColor,\n\t\tstrokeColor: markerConfigs.strokeColor\n\t});\n\n\tconst onClusterClick = cluster => {\n\t\tif (\n\t\t\t!siteConfig.optionalShowLocationClusterConfig ||\n mapRef.current.zoom > siteConfig.optionalShowLocationClusterConfig.showForZoomLevelLessThan\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!cluster || typeof cluster.getMarkers !== \"function\") {\n\t\t\tconsole.error(\"Cluster object or getMarkers method not available.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst markers = cluster.getMarkers();\n\n\t\tif (!markers || markers.length === 0) {\n\t\t\tconsole.error(\"No markers found in the cluster.\");\n\t\t\treturn;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tif (typeof window === 'undefined' || !window.google) return;\n\t\t\tconst bounds = new window.google.maps.LatLngBounds();\n\n\t\t\tmarkers.forEach(marker => {\n\t\t\t\tbounds.extend(marker.getPosition());\n\t\t\t});\n\t\t\tconst clusterCenter = bounds.getCenter();\n\n\t\t\tconst configLat = siteConfig.optionalShowLocationClusterConfig.latitude;\n\t\t\tconst configLng = siteConfig.optionalShowLocationClusterConfig.longitude;\n\n\t\t\tconst latDiff = clusterCenter.lat() - configLat;\n\t\t\tconst lngDiff = clusterCenter.lng() - configLng;\n\t\t\tconst distance = Math.sqrt(latDiff * latDiff + lngDiff * lngDiff);\n\n\t\t\tconst distanceThreshold = 1;\n\t\t\tif (distance <= distanceThreshold) {\n\t\t\t\tbounds.extend(new google.maps.LatLng(configLat, configLng));\n\t\t\t}\n\n\t\t\tif (mapRef.current) {\n\t\t\t\tmapRef.current.fitBounds(bounds);\n\t\t\t}\n\t\t}, 300);\n\t};\n\tif (!isGoogleMapsReady) {\n\t\treturn (\n\t\t\t<div className=\"hc-w-full hc-h-full hc-bg-gray-100 hc-flex hc-items-center hc-justify-center hc-min-h-[400px]\">\n\t\t\t\t<BallTriangle\n\t\t\t\t\theight={80}\n\t\t\t\t\twidth={80}\n\t\t\t\t\tradius={5}\n\t\t\t\t\tcolor=\"#2563eb\"\n\t\t\t\t\tariaLabel=\"ball-triangle-loading\"\n\t\t\t\t\twrapperStyle={{}}\n\t\t\t\t\twrapperClass=\"\"\n\t\t\t\t\tvisible={true}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Ensure mapItems is an array\n\tconst mapItemsArray = Array.isArray(mapItems) ? mapItems : [];\n\t\n\tif (!mapItemsArray || mapItemsArray.length === 0) {\n\t\treturn (\n\t\t\t<div className=\"hc-w-full hc-h-full hc-bg-gray-100 hc-flex hc-items-center hc-justify-center\">\n\t\t\t\t<div className=\"hc-text-gray-600\">No locations to display</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst mapItemsKey = mapItemsArray.map(item => item.id).join(\"-\");\n\n\n\treturn (\n\t\t<Map\n\t\t\tzoom={zoom}\n\t\t\tcenter={center}\n\t\t\tmapContainerRef={mapContainerRef}\n\t\t\tonLoad={onLoad}\n\t\t\tonIdle={onIdle}\n\t\t\tmapInteracted={mapInteracted}\n\t\t\tpinIconUrl={pinIconUrl}\n\t\t\tsetMapInteracted={setMapInteracted}\n\t\t\tfitBounds={fitBounds}\n\t\t\tmapRef={mapRef}\n\t\t\tsetQuery={setQuery}\n\t\t\tfilteredListingsLength={filteredListings.length}\n\t\t\tsetSelectedFilters={setSelectedFilters}\n\t\t>\n\t\t\t<MarkerClustererF\n\t\t\t\tkey={mapItemsKey}\n\t\t\t\tcalculator={markers => {\n\t\t\t\t\tconst totalCount = markers.reduce((sum, marker) => sum + (marker.get(\"count\") || 1), 0);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: totalCount.toString(),\n\t\t\t\t\t\tindex: Math.min(5, Math.floor(totalCount / 10))\n\t\t\t\t\t};\n\t\t\t\t}}\n\t\t\t\toptions={{\n\t\t\t\t\t...clusterOptions(clusterGridSize, markerConfigs.fillColor)\n\t\t\t\t}}\n\t\t\t\tonClick={onClusterClick}\n\t\t\t>\n\t\t\t\t{clusterer => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{mapItemsArray.map(item => {\n\t\t\t\t\t\t\tconst markerCount = Object.values(item.items).length;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<MapMarker\n\t\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\t\tselectedLocation={location}\n\t\t\t\t\t\t\t\t\tmarkerRefs={markerRefs}\n\t\t\t\t\t\t\t\t\tinfoWindowClasses={infoWindowClasses}\n\t\t\t\t\t\t\t\t\tsetSelectedLocation={setLocation}\n\t\t\t\t\t\t\t\t\tmarkerClickHandler={markerClickHandler}\n\t\t\t\t\t\t\t\t\tclusterer={clusterer}\n\t\t\t\t\t\t\t\t\tmarkerIcon={markerIcon(markerConfigs, markerCount)}\n\t\t\t\t\t\t\t\t\tmarkerIconSelected={markerIconSelected(markerConfigs, markerCount)}\n\t\t\t\t\t\t\t\t\tsetMapInteracted={setMapInteracted}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\n\t\t\t\t\t\t{additionalMapMarkers &&\n additionalMapMarkers.map(\n \t(marker, index) =>\n \t\tcurrentZoom >= marker.minZoom &&\n currentZoom <= marker.maxZoom && (\n \t\t\t<Marker\n \t\t\t\tkey={`marker-${marker.title}-${index}`}\n \t\t\t\tposition={marker.position}\n \t\t\t\ttitle={marker.title}\n \t\t\t\ticon={{\n \t\t\t\t\turl: marker.iconUrl,\n \t\t\t\t\tscaledSize: new window.google.maps.Size(40, 40)\n \t\t\t\t}}\n \t\t\t/>\n \t\t)\n )}\n\n\t\t\t\t\t\t{poiMarkers &&\n poiMarkers.markers.map((marker, index) => (\n \t<PlaceMarker\n \t\tkey={`marker-${marker.title}-${index}`}\n \t\tmarker={marker}\n \t\tindex={index}\n \t\tselectedPlaceMarker={selectedPlaceMarker}\n \t\tplacesWindow={placesWindow}\n \t\tsetPlacesWindow={setPlacesWindow}\n \t\tsetSelectedPlaceMarker={setSelectedPlaceMarker}\n \t/>\n ))}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</MarkerClustererF>\n\t\t</Map>\n\t);\n};\n\nexport default MapContainer;\n\n"],"names":["MapContainer","_ref","markerConfigs","infoWindowClasses","_ref$clusterGridSize","clusterGridSize","_useState","useState","_useState2","_slicedToArray","isGoogleMapsReady","setIsGoogleMapsReady","useEffect","window","google","maps","Map","console","log","attempts","maxAttempts","checkInterval","setInterval","clearInterval","error","_useMap","useMap","location","zoom","center","selectLocationEntity","setLocation","mapInteracted","setMapInteracted","defaultZoomOverride","_useMapList","useMapList","oldMapItems","mapItems","filteredListings","selectedFilters","setSelectedFilters","setQuery","siteConfig","_useState3","_useState4","setMapItems","_useState5","_useState6","markersToHideFromBounds","setMarkersToHideFromBounds","mapRef","useRef","markerRefs","mapContainerRef","_usePlaces","usePlaces","poiMarkers","setCurrentCenter","currentCenter","setCurrentZoom","currentZoom","selectedPlaceMarker","setSelectedPlaceMarker","placesWindow","setPlacesWindow","additionalMapMarkers","onIdle","current","newCenter","getCenter","toJSON","newZoom","length","defaultMapState","state","city","markersToHide","filter","x","address","map","item","id","handleScroll","mapContainerRefCurrent","addEventListener","removeEventListener","setZoom","mapInstance","dragStartListener","addListener","mouseDownListener","event","removeListener","fitBounds","_siteConfig$jobPinZoo","jobPinZoomLevel","currZoom","setZoomVal","_siteConfig$jobPinZoo2","panTo","LatLng","latitude","longitude","overload","arguments","undefined","bounds","LatLngBounds","forEach","includes","extend","optionalShowLocationClusterConfig","configLocation","markerClickHandler","mapLocation","setTimeout","onLoad","pinIconUrl","pinIcon","fillColor","strokeColor","onClusterClick","cluster","showForZoomLevelLessThan","getMarkers","markers","marker","getPosition","clusterCenter","configLat","configLng","latDiff","lat","lngDiff","lng","distance","Math","sqrt","distanceThreshold","React","createElement","className","BallTriangle","height","width","radius","color","ariaLabel","wrapperStyle","wrapperClass","visible","mapItemsArray","Array","isArray","mapItemsKey","join","filteredListingsLength","MarkerClustererF","key","calculator","totalCount","reduce","sum","get","text","toString","index","min","floor","options","_objectSpread","clusterOptions","onClick","clusterer","Fragment","markerCount","Object","values","items","MapMarker","selectedLocation","setSelectedLocation","markerIcon","markerIconSelected","minZoom","maxZoom","Marker","concat","title","position","icon","url","iconUrl","scaledSize","Size","PlaceMarker"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"map-container.js","sources":["../../../../src/components/containers/maps/map-container.js"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useRef, useState } from \"react\";\n\nimport MapMarker from \"~/components/containers/maps/map-marker-container\";\nimport PlaceMarker from \"~/components/modules/maps/place-marker\";\n\nimport { usePlaces } from \"~/contexts/placesContext\";\nimport { useMap } from \"~/contexts/mapContext\";\nimport { useMapList } from \"~/contexts/mapListContext\";\n\nimport { markerIconSelected, markerIcon, pinIcon } from \"~/util/mapIconUtil\";\n\nimport Map from \"~/components/modules/maps/map\";\nimport { MarkerClustererF, Marker } from \"@react-google-maps/api\";\nimport { clusterOptions } from \"~/util/mapUtil\";\nimport { BallTriangle } from 'react-loader-spinner';\n\nconst MapContainer = ({ markerConfigs, infoWindowClasses, clusterGridSize = 60 }) => {\n\tconst [isGoogleMapsReady, setIsGoogleMapsReady] = useState(false);\n\n\t// Check if Google Maps is loaded\n\tuseEffect(() => {\n\t\tif (typeof window !== 'undefined' && window.google && window.google.maps && window.google.maps.Map) {\n\t\t\tconsole.log('Google Maps already loaded');\n\t\t\tsetIsGoogleMapsReady(true);\n\t\t\treturn;\n\t\t}\n\n\t\tconsole.log('Waiting for Google Maps to load...');\n\t\tlet attempts = 0;\n\t\tconst maxAttempts = 50; // 5 seconds max\n\t\t\n\t\t// Poll for Google Maps to become available\n\t\tconst checkInterval = setInterval(() => {\n\t\t\tattempts++;\n\t\t\tif (typeof window !== 'undefined' && window.google && window.google.maps && window.google.maps.Map) {\n\t\t\t\tconsole.log('Google Maps loaded after', attempts * 100, 'ms');\n\t\t\t\tsetIsGoogleMapsReady(true);\n\t\t\t\tclearInterval(checkInterval);\n\t\t\t} else if (attempts >= maxAttempts) {\n\t\t\t\tconsole.error('Google Maps failed to load after 5 seconds');\n\t\t\t\tclearInterval(checkInterval);\n\t\t\t}\n\t\t}, 100);\n\n\t\treturn () => clearInterval(checkInterval);\n\t}, []);\n\n\tconst {\n\t\tlocation,\n\t\tzoom,\n\t\tcenter,\n\t\tselectLocationEntity,\n\t\tsetLocation,\n\t\tmapInteracted,\n\t\tsetMapInteracted,\n\t\tdefaultZoomOverride\n\t} = useMap();\n\n\tconst {\n\t\tmapItems: oldMapItems,\n\t\tfilteredListings,\n\t\tselectedFilters,\n\t\tsetSelectedFilters,\n\t\tsetQuery,\n\t\tsiteConfig\n\t} = useMapList();\n\tconst [mapItems, setMapItems] = useState(null);\n\tconst [markersToHideFromBounds, setMarkersToHideFromBounds] = useState([]);\n\n\tconst mapRef = useRef();\n\tconst markerRefs = useRef({});\n\tconst mapContainerRef = useRef(null);\n\tconst {\n\t\tpoiMarkers,\n\t\tsetCurrentCenter,\n\t\tcurrentCenter,\n\t\tsetCurrentZoom,\n\t\tcurrentZoom,\n\t\tselectedPlaceMarker,\n\t\tsetSelectedPlaceMarker,\n\t\tplacesWindow,\n\t\tsetPlacesWindow,\n\t\tadditionalMapMarkers\n\t} = usePlaces();\n\n\tconst onIdle = () => {\n\t\tif (!currentCenter || !mapRef.current) return;\n\t\tconst newCenter = mapRef.current.getCenter().toJSON();\n\t\tconst newZoom = mapRef.current.zoom;\n\t\tsetCurrentCenter(newCenter);\n\n\t\tif (newZoom !== currentZoom) {\n\t\t\tsetCurrentZoom(newZoom);\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tif (!oldMapItems || oldMapItems.length === 0) return;\n\n\t\tif (!siteConfig.defaultMapState || mapInteracted || selectedFilters?.state || selectedFilters?.city) {\n\t\t\tsetMapItems(oldMapItems);\n\t\t\tsetMarkersToHideFromBounds([]);\n\t\t\treturn;\n\t\t}\n\n\t\tconst markersToHide = oldMapItems\n\t\t\t.filter(x => x.address.state !== siteConfig.defaultMapState)\n\t\t\t.map(item => item.id);\n\n\t\tsetMarkersToHideFromBounds(markersToHide);\n\t\tsetMapItems(oldMapItems);\n\t}, [oldMapItems, selectedFilters, siteConfig, mapInteracted]);\n\n\tuseEffect(() => {\n\t\tif (mapContainerRef.current) {\n\t\t\tconst handleScroll = () => {\n\t\t\t\tsetMapInteracted(true);\n\t\t\t};\n\t\t\tvar mapContainerRefCurrent = mapContainerRef.current;\n\t\t\tmapContainerRef.current.addEventListener(\"wheel\", handleScroll);\n\t\t\treturn () => mapContainerRefCurrent.removeEventListener(\"wheel\", handleScroll);\n\t\t}\n\t}, [mapContainerRef.current]);\n\n\tuseEffect(() => {\n\t\tif (mapRef.current && defaultZoomOverride && !mapInteracted && !location) {\n\t\t\tmapRef.current.setZoom(defaultZoomOverride);\n\t\t}\n\t}, [mapInteracted]);\n\n\tuseEffect(() => {\n\t\tif (mapRef.current) {\n\t\t\tconst mapInstance = mapRef.current;\n\t\t\tconst dragStartListener = mapInstance.addListener(\"dragstart\", () => {\n\t\t\t\tsetMapInteracted(true);\n\t\t\t\tsetMarkersToHideFromBounds([]);\n\t\t\t});\n\t\t\tconst mouseDownListener = mapInstance.addListener(\"mousedown\", () => {\n\t\t\t\tsetMapInteracted(true);\n\t\t\t\tsetMarkersToHideFromBounds([]);\n\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tgoogle.maps.event.removeListener(dragStartListener);\n\t\t\t\tgoogle.maps.event.removeListener(mouseDownListener);\n\t\t\t};\n\t\t}\n\t}, [mapRef.current, mapContainerRef.current]);\n\n\tuseEffect(() => {\n\t\tif (((mapItems && mapItems.length > 0) || poiMarkers.length > 0) && mapRef.current && !mapInteracted) {\n\t\t\tfitBounds(mapRef.current);\n\t\t}\n\t}, [mapItems, mapRef.current, location]);\n\n\tuseEffect(() => {\n\t\tif (((mapItems && mapItems.length > 0) || poiMarkers.length > 0) && mapRef.current && !mapInteracted) {\n\t\t\tfitBounds(mapRef.current, true);\n\t\t}\n\t\tif (mapRef.current && !mapInteracted) {\n\t\t\tconst jobPinZoomLevel = siteConfig?.jobPinZoomLevel ?? 12;\n\t\t\tconst currZoom = mapRef.current.zoom;\n\t\t\tconst setZoomVal = currZoom < (jobPinZoomLevel + 1) ? currZoom : jobPinZoomLevel;\n\t\t\tmapRef.current.setZoom(setZoomVal);\n\t\t}\n\t}, [filteredListings, siteConfig]);\n\n\tuseEffect(() => {\n\t\tif (!mapRef.current || !location || mapInteracted) return;\n\t\tconst jobPinZoomLevel = siteConfig?.jobPinZoomLevel ?? 12;\n\t\tmapRef.current.panTo(new google.maps.LatLng(location.latitude, location.longitude));\n\t\tif (mapRef.current) {\n\t\t\tconst setZoomVal = zoom < (jobPinZoomLevel + 1) ? zoom : jobPinZoomLevel;\n\t\t\tmapRef.current.setZoom(setZoomVal);\n\t\t}\n\t}, [location, zoom, siteConfig]);\n\n\tconst fitBounds = (map, overload = false) => {\n\t\tif ((mapInteracted === false || overload) && mapItems != null) {\n\t\t\tif (typeof window === 'undefined' || !window.google) return;\n\t\t\tconst bounds = new window.google.maps.LatLngBounds();\n\n\t\t\tmapItems.forEach(item => {\n\t\t\t\tif (!mapInteracted && markersToHideFromBounds.includes(item.id)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbounds.extend(new google.maps.LatLng(item.latitude, item.longitude));\n\t\t\t});\n\n\t\t\tif (siteConfig.optionalShowLocationClusterConfig) {\n\t\t\t\tconst configLocation = new google.maps.LatLng(\n\t\t\t\t\tsiteConfig.optionalShowLocationClusterConfig.latitude,\n\t\t\t\t\tsiteConfig.optionalShowLocationClusterConfig.longitude\n\t\t\t\t);\n\t\t\t\tmap.panTo(configLocation);\n\t\t\t\tbounds.extend(\n\t\t\t\t\tnew google.maps.LatLng(\n\t\t\t\t\t\tsiteConfig.optionalShowLocationClusterConfig.latitude,\n\t\t\t\t\t\tsiteConfig.optionalShowLocationClusterConfig.longitude\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (!map) return;\n\t\t\tconst currentCenter = map.getCenter();\n\t\t\tmap.fitBounds(bounds);\n\t\t\tconst newCenter = bounds.getCenter();\n\t\t\tif (currentCenter && newCenter) {\n\t\t\t\tmap.panTo(newCenter);\n\t\t\t}\n\t\t}\n\t\tif (defaultZoomOverride && !mapInteracted && !location) {\n\t\t\tmapRef.current.setZoom(defaultZoomOverride);\n\t\t} else if (mapRef.current.zoom > 17) {\n\t\t\tmapRef.current.setZoom(16);\n\t\t}\n\t};\n\n\tconst markerClickHandler = mapLocation => {\n\t\tsetMapInteracted(true);\n\t\tsetMarkersToHideFromBounds([]);\n\t\tselectLocationEntity(mapLocation);\n\t\tconst jobPinZoomLevel = siteConfig?.jobPinZoomLevel;\n\t\tif (jobPinZoomLevel !== undefined && mapRef.current) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (mapRef.current) {\n\t\t\t\t\tmapRef.current.panTo(new google.maps.LatLng(mapLocation.latitude, mapLocation.longitude));\n\t\t\t\t\tmapRef.current.setZoom(jobPinZoomLevel);\n\t\t\t\t}\n\t\t\t}, 300);\n\t\t}\n\t};\n\n\tconst onLoad = map => {\n\t\tif (!location || location === null) {\n\t\t\tmapRef.current = map;\n\t\t\tfitBounds(map, true);\n\t\t\treturn;\n\t\t}\n\t\tmapRef.current = map;\n\n\t\tif (mapInteracted === false) {\n\t\t\tmapRef.current.panTo(new google.maps.LatLng(location.latitude, location.longitude));\n\n\t\t\tmapRef.current.setZoom(zoom);\n\t\t}\n\t};\n\n\tconst pinIconUrl = pinIcon({\n\t\tfillColor: markerConfigs.fillColor,\n\t\tstrokeColor: markerConfigs.strokeColor\n\t});\n\n\tconst onClusterClick = cluster => {\n\t\tif (\n\t\t\t!siteConfig.optionalShowLocationClusterConfig ||\n mapRef.current.zoom > siteConfig.optionalShowLocationClusterConfig.showForZoomLevelLessThan\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!cluster || typeof cluster.getMarkers !== \"function\") {\n\t\t\tconsole.error(\"Cluster object or getMarkers method not available.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst markers = cluster.getMarkers();\n\n\t\tif (!markers || markers.length === 0) {\n\t\t\tconsole.error(\"No markers found in the cluster.\");\n\t\t\treturn;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tif (typeof window === 'undefined' || !window.google) return;\n\t\t\tconst bounds = new window.google.maps.LatLngBounds();\n\n\t\t\tmarkers.forEach(marker => {\n\t\t\t\tbounds.extend(marker.getPosition());\n\t\t\t});\n\t\t\tconst clusterCenter = bounds.getCenter();\n\n\t\t\tconst configLat = siteConfig.optionalShowLocationClusterConfig.latitude;\n\t\t\tconst configLng = siteConfig.optionalShowLocationClusterConfig.longitude;\n\n\t\t\tconst latDiff = clusterCenter.lat() - configLat;\n\t\t\tconst lngDiff = clusterCenter.lng() - configLng;\n\t\t\tconst distance = Math.sqrt(latDiff * latDiff + lngDiff * lngDiff);\n\n\t\t\tconst distanceThreshold = 1;\n\t\t\tif (distance <= distanceThreshold) {\n\t\t\t\tbounds.extend(new google.maps.LatLng(configLat, configLng));\n\t\t\t}\n\n\t\t\tif (mapRef.current) {\n\t\t\t\tmapRef.current.fitBounds(bounds);\n\t\t\t}\n\t\t}, 300);\n\t};\n\tif (!isGoogleMapsReady) {\n\t\treturn (\n\t\t\t<div className=\"hc-w-full hc-h-full hc-bg-gray-100 hc-flex hc-items-center hc-justify-center hc-min-h-[400px]\">\n\t\t\t\t<BallTriangle\n\t\t\t\t\theight={80}\n\t\t\t\t\twidth={80}\n\t\t\t\t\tradius={5}\n\t\t\t\t\tcolor=\"#2563eb\"\n\t\t\t\t\tariaLabel=\"ball-triangle-loading\"\n\t\t\t\t\twrapperStyle={{}}\n\t\t\t\t\twrapperClass=\"\"\n\t\t\t\t\tvisible={true}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Ensure mapItems is an array\n\tconst mapItemsArray = Array.isArray(mapItems) ? mapItems : [];\n\t\n\tif (!mapItemsArray || mapItemsArray.length === 0) {\n\t\treturn (\n\t\t\t<div className=\"hc-w-full hc-h-full hc-bg-gray-100 hc-flex hc-items-center hc-justify-center\">\n\t\t\t\t<div className=\"hc-text-gray-600\">No locations to display</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst mapItemsKey = mapItemsArray.map(item => item.id).join(\"-\");\n\n\n\treturn (\n\t\t<Map\n\t\t\tzoom={zoom}\n\t\t\tcenter={center}\n\t\t\tmapContainerRef={mapContainerRef}\n\t\t\tonLoad={onLoad}\n\t\t\tonIdle={onIdle}\n\t\t\tmapInteracted={mapInteracted}\n\t\t\tpinIconUrl={pinIconUrl}\n\t\t\tsetMapInteracted={setMapInteracted}\n\t\t\tfitBounds={fitBounds}\n\t\t\tmapRef={mapRef}\n\t\t\tsetQuery={setQuery}\n\t\t\tfilteredListingsLength={filteredListings.length}\n\t\t\tsetSelectedFilters={setSelectedFilters}\n\t\t>\n\t\t\t<MarkerClustererF\n\t\t\t\tkey={mapItemsKey}\n\t\t\t\tcalculator={markers => {\n\t\t\t\t\tconst totalCount = markers.reduce((sum, marker) => sum + (marker.get(\"count\") || 1), 0);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: totalCount.toString(),\n\t\t\t\t\t\tindex: Math.min(5, Math.floor(totalCount / 10))\n\t\t\t\t\t};\n\t\t\t\t}}\n\t\t\t\toptions={{\n\t\t\t\t\t...clusterOptions(clusterGridSize, markerConfigs.fillColor)\n\t\t\t\t}}\n\t\t\t\tonClick={onClusterClick}\n\t\t\t>\n\t\t\t\t{clusterer => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{mapItemsArray.map(item => {\n\t\t\t\t\t\t\tconst markerCount = Object.values(item.items).length;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<MapMarker\n\t\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\t\tselectedLocation={location}\n\t\t\t\t\t\t\t\t\tmarkerRefs={markerRefs}\n\t\t\t\t\t\t\t\t\tinfoWindowClasses={infoWindowClasses}\n\t\t\t\t\t\t\t\t\tsetSelectedLocation={setLocation}\n\t\t\t\t\t\t\t\t\tmarkerClickHandler={markerClickHandler}\n\t\t\t\t\t\t\t\t\tclusterer={clusterer}\n\t\t\t\t\t\t\t\t\tmarkerIcon={markerIcon(markerConfigs, markerCount)}\n\t\t\t\t\t\t\t\t\tmarkerIconSelected={markerIconSelected(markerConfigs, markerCount)}\n\t\t\t\t\t\t\t\t\tsetMapInteracted={setMapInteracted}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\n\t\t\t\t\t\t{additionalMapMarkers &&\n additionalMapMarkers.map(\n \t(marker, index) =>\n \t\tcurrentZoom >= marker.minZoom &&\n currentZoom <= marker.maxZoom && (\n \t\t\t<Marker\n \t\t\t\tkey={`additional-marker-${marker.title}-${index}`}\n \t\t\t\tposition={marker.position}\n \t\t\t\ttitle={marker.title}\n \t\t\t\ticon={{\n \t\t\t\t\turl: marker.iconUrl,\n \t\t\t\t\tscaledSize: new window.google.maps.Size(40, 40)\n \t\t\t\t}}\n \t\t\t/>\n \t\t)\n )}\n\n\t\t\t\t\t\t{poiMarkers &&\n poiMarkers.markers.map((marker, index) => (\n \t<PlaceMarker\n \t\tkey={`poi-marker-${marker.title}-${index}`}\n \t\tmarker={marker}\n \t\tindex={index}\n \t\tselectedPlaceMarker={selectedPlaceMarker}\n \t\tplacesWindow={placesWindow}\n \t\tsetPlacesWindow={setPlacesWindow}\n \t\tsetSelectedPlaceMarker={setSelectedPlaceMarker}\n \t/>\n ))}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</MarkerClustererF>\n\t\t</Map>\n\t);\n};\n\nexport default MapContainer;\n\n"],"names":["MapContainer","_ref","markerConfigs","infoWindowClasses","_ref$clusterGridSize","clusterGridSize","_useState","useState","_useState2","_slicedToArray","isGoogleMapsReady","setIsGoogleMapsReady","useEffect","window","google","maps","Map","console","log","attempts","maxAttempts","checkInterval","setInterval","clearInterval","error","_useMap","useMap","location","zoom","center","selectLocationEntity","setLocation","mapInteracted","setMapInteracted","defaultZoomOverride","_useMapList","useMapList","oldMapItems","mapItems","filteredListings","selectedFilters","setSelectedFilters","setQuery","siteConfig","_useState3","_useState4","setMapItems","_useState5","_useState6","markersToHideFromBounds","setMarkersToHideFromBounds","mapRef","useRef","markerRefs","mapContainerRef","_usePlaces","usePlaces","poiMarkers","setCurrentCenter","currentCenter","setCurrentZoom","currentZoom","selectedPlaceMarker","setSelectedPlaceMarker","placesWindow","setPlacesWindow","additionalMapMarkers","onIdle","current","newCenter","getCenter","toJSON","newZoom","length","defaultMapState","state","city","markersToHide","filter","x","address","map","item","id","handleScroll","mapContainerRefCurrent","addEventListener","removeEventListener","setZoom","mapInstance","dragStartListener","addListener","mouseDownListener","event","removeListener","fitBounds","_siteConfig$jobPinZoo","jobPinZoomLevel","currZoom","setZoomVal","_siteConfig$jobPinZoo2","panTo","LatLng","latitude","longitude","overload","arguments","undefined","bounds","LatLngBounds","forEach","includes","extend","optionalShowLocationClusterConfig","configLocation","markerClickHandler","mapLocation","setTimeout","onLoad","pinIconUrl","pinIcon","fillColor","strokeColor","onClusterClick","cluster","showForZoomLevelLessThan","getMarkers","markers","marker","getPosition","clusterCenter","configLat","configLng","latDiff","lat","lngDiff","lng","distance","Math","sqrt","distanceThreshold","React","createElement","className","BallTriangle","height","width","radius","color","ariaLabel","wrapperStyle","wrapperClass","visible","mapItemsArray","Array","isArray","mapItemsKey","join","filteredListingsLength","MarkerClustererF","key","calculator","totalCount","reduce","sum","get","text","toString","index","min","floor","options","_objectSpread","clusterOptions","onClick","clusterer","Fragment","markerCount","Object","values","items","MapMarker","selectedLocation","setSelectedLocation","markerIcon","markerIconSelected","minZoom","maxZoom","Marker","concat","title","position","icon","url","iconUrl","scaledSize","Size","PlaceMarker"],"mappings":"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"}
|
|
@@ -2,19 +2,29 @@ import React from 'react';
|
|
|
2
2
|
import Accordion from './default.js';
|
|
3
3
|
import CardFilter from '../cards/filter.js';
|
|
4
4
|
import Loading from '../../../util/loading.js';
|
|
5
|
+
import Button from '../buttons/default.js';
|
|
5
6
|
|
|
6
7
|
var AccordionFilters = function AccordionFilters(_ref) {
|
|
7
8
|
var className = _ref.className,
|
|
8
9
|
defaultValue = _ref.defaultValue,
|
|
9
10
|
children = _ref.children,
|
|
10
|
-
filterOptions = _ref.filterOptions
|
|
11
|
+
filterOptions = _ref.filterOptions,
|
|
12
|
+
handleReset = _ref.handleReset;
|
|
11
13
|
return /*#__PURE__*/React.createElement(CardFilter, {
|
|
12
14
|
className: className !== null && className !== void 0 ? className : ""
|
|
13
15
|
}, /*#__PURE__*/React.createElement(CardFilter.Title, {
|
|
14
16
|
icon: "fa-solid:sliders-h"
|
|
17
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
18
|
+
className: "hc-flex hc-items-center hc-justify-between hc-w-full"
|
|
15
19
|
}, /*#__PURE__*/React.createElement("span", null, "Filter ", /*#__PURE__*/React.createElement("span", {
|
|
16
20
|
className: "md:hc-hidden lg:hc-inline"
|
|
17
|
-
}, "your search"))
|
|
21
|
+
}, "your search")), handleReset && /*#__PURE__*/React.createElement(Button.Btn, {
|
|
22
|
+
type: "button",
|
|
23
|
+
variant: "outline",
|
|
24
|
+
size: "none",
|
|
25
|
+
onClick: handleReset,
|
|
26
|
+
className: "hc-ml-auto hc-text-xs hc-px-2 hc-py-0.5"
|
|
27
|
+
}, "Reset"))), /*#__PURE__*/React.createElement(Accordion, {
|
|
18
28
|
defaultValue: defaultValue,
|
|
19
29
|
className: "hc-space-y-4"
|
|
20
30
|
}, !(filterOptions !== null && filterOptions !== void 0 && filterOptions.filters) && /*#__PURE__*/React.createElement(Accordion.Item, null, /*#__PURE__*/React.createElement(Loading, null)), (filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.filters) && children));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters.js","sources":["../../../../src/components/modules/accordions/filters.js"],"sourcesContent":["import React from 'react';\nimport Accordion from '~/components/modules/accordions/default';\nimport FilterCard from '~/components/modules/cards/filter';\nimport Loading from '~/util/loading';\n\nconst AccordionFilters = ({\n\tclassName,\n\tdefaultValue,\n\tchildren,\n\tfilterOptions\n}) => {\n\treturn (\n\t\t<FilterCard className={className ?? \"\"}>\n\t\t\t<FilterCard.Title icon=\"fa-solid:sliders-h\">\n\t\t\t\t<span>\n
|
|
1
|
+
{"version":3,"file":"filters.js","sources":["../../../../src/components/modules/accordions/filters.js"],"sourcesContent":["import React from 'react';\nimport Accordion from '~/components/modules/accordions/default';\nimport FilterCard from '~/components/modules/cards/filter';\nimport Loading from '~/util/loading';\nimport Button from '~/components/modules/buttons/default';\n\nconst AccordionFilters = ({\n\tclassName,\n\tdefaultValue,\n\tchildren,\n\tfilterOptions,\n\thandleReset\n}) => {\n\treturn (\n\t\t<FilterCard className={className ?? \"\"}>\n\t\t\t<FilterCard.Title icon=\"fa-solid:sliders-h\">\n\t\t\t\t<div className=\"hc-flex hc-items-center hc-justify-between hc-w-full\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\tFilter <span className=\"md:hc-hidden lg:hc-inline\">your search</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t{handleReset && (\n\t\t\t\t\t\t<Button.Btn\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\tsize=\"none\"\n\t\t\t\t\t\t\tonClick={handleReset}\n\t\t\t\t\t\t\tclassName=\"hc-ml-auto hc-text-xs hc-px-2 hc-py-0.5\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tReset\n\t\t\t\t\t\t</Button.Btn>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</FilterCard.Title>\n\n\t\t\t<Accordion defaultValue={defaultValue} className=\"hc-space-y-4\" >\n\t\t\t\t{!filterOptions?.filters && (\n\t\t\t\t\t<Accordion.Item>\n\t\t\t\t\t\t<Loading />\n\t\t\t\t\t</Accordion.Item>\n\t\t\t\t)}\n\t\t\t\t{filterOptions?.filters && children}\n\t\t\t</Accordion>\n\t\t</FilterCard>\n\t);\n};\n\nexport default AccordionFilters;\n"],"names":["AccordionFilters","_ref","className","defaultValue","children","filterOptions","handleReset","React","createElement","FilterCard","Title","icon","Button","Btn","type","variant","size","onClick","Accordion","filters","Item","Loading"],"mappings":";;;;;;AAMA,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAAC,IAAA,EAMhB;AAAA,EAAA,IALLC,SAAS,GAAAD,IAAA,CAATC,SAAS;IACTC,YAAY,GAAAF,IAAA,CAAZE,YAAY;IACZC,QAAQ,GAAAH,IAAA,CAARG,QAAQ;IACRC,aAAa,GAAAJ,IAAA,CAAbI,aAAa;IACbC,WAAW,GAAAL,IAAA,CAAXK,WAAW,CAAA;AAEX,EAAA,oBACCC,KAAA,CAAAC,aAAA,CAACC,UAAU,EAAA;AAACP,IAAAA,SAAS,EAAEA,SAAS,KAAA,IAAA,IAATA,SAAS,KAAA,KAAA,CAAA,GAATA,SAAS,GAAI,EAAA;AAAG,GAAA,eACtCK,KAAA,CAAAC,aAAA,CAACC,UAAU,CAACC,KAAK,EAAA;AAACC,IAAAA,IAAI,EAAC,oBAAA;GACtBJ,eAAAA,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKN,IAAAA,SAAS,EAAC,sDAAA;GACdK,eAAAA,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA,IAAA,EAAM,SACE,eAAAD,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMN,IAAAA,SAAS,EAAC,2BAAA;AAA2B,GAAA,EAAC,aAAiB,CAC/D,CAAC,EACNI,WAAW,iBACXC,KAAA,CAAAC,aAAA,CAACI,MAAM,CAACC,GAAG,EAAA;AACVC,IAAAA,IAAI,EAAC,QAAQ;AACbC,IAAAA,OAAO,EAAC,SAAS;AACjBC,IAAAA,IAAI,EAAC,MAAM;AACXC,IAAAA,OAAO,EAAEX,WAAY;AACrBJ,IAAAA,SAAS,EAAC,yCAAA;GACV,EAAA,OAEW,CAET,CACY,CAAC,eAEnBK,KAAA,CAAAC,aAAA,CAACU,SAAS,EAAA;AAACf,IAAAA,YAAY,EAAEA,YAAa;AAACD,IAAAA,SAAS,EAAC,cAAA;AAAc,GAAA,EAC7D,EAACG,aAAa,KAAA,IAAA,IAAbA,aAAa,KAAA,KAAA,CAAA,IAAbA,aAAa,CAAEc,OAAO,CACvBZ,iBAAAA,KAAA,CAAAC,aAAA,CAACU,SAAS,CAACE,IAAI,EACdb,IAAAA,eAAAA,KAAA,CAAAC,aAAA,CAACa,OAAO,EAAA,IAAE,CACK,CAChB,EACA,CAAAhB,aAAa,KAAbA,IAAAA,IAAAA,aAAa,uBAAbA,aAAa,CAAEc,OAAO,KAAIf,QACjB,CACA,CAAC,CAAA;AAEf;;;;"}
|
|
@@ -5,13 +5,12 @@ import { twMerge } from '../../../util/twMerge.js';
|
|
|
5
5
|
import { useMapList } from '../../../contexts/mapListContext.js';
|
|
6
6
|
|
|
7
7
|
var Filter = function Filter(_ref) {
|
|
8
|
-
var _filterConfig$
|
|
8
|
+
var _filterConfig$classNa2, _filterConfig$classNa3, _filterConfig$classNa4;
|
|
9
9
|
var className = _ref.className,
|
|
10
10
|
hasActiveFilters = _ref.hasActiveFilters,
|
|
11
11
|
filteredListings = _ref.filteredListings,
|
|
12
12
|
selectedFilters = _ref.selectedFilters,
|
|
13
13
|
setMobileTab = _ref.setMobileTab,
|
|
14
|
-
handleReset = _ref.handleReset,
|
|
15
14
|
_ref$isDesktop = _ref.isDesktop,
|
|
16
15
|
isDesktop = _ref$isDesktop === void 0 ? false : _ref$isDesktop,
|
|
17
16
|
style = _ref.style,
|
|
@@ -108,19 +107,14 @@ var Filter = function Filter(_ref) {
|
|
|
108
107
|
|
|
109
108
|
// Reusable button component
|
|
110
109
|
var MobileButtons = function MobileButtons() {
|
|
111
|
-
var _filterConfig$classNa
|
|
112
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button.Btn, {
|
|
113
|
-
onClick: handleReset,
|
|
114
|
-
variant: "outline",
|
|
115
|
-
size: "sm",
|
|
116
|
-
className: filterConfig === null || filterConfig === void 0 || (_filterConfig$classNa = filterConfig.classNames) === null || _filterConfig$classNa === void 0 ? void 0 : _filterConfig$classNa.resetButton
|
|
117
|
-
}, "Reset All"), selectedFilters && Object.keys(selectedFilters).length > 0 && /*#__PURE__*/React.createElement(Button.Btn, {
|
|
110
|
+
var _filterConfig$classNa;
|
|
111
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, selectedFilters && Object.keys(selectedFilters).length > 0 && /*#__PURE__*/React.createElement(Button.Btn, {
|
|
118
112
|
onClick: function onClick() {
|
|
119
113
|
return setMobileTab("listTab");
|
|
120
114
|
},
|
|
121
115
|
variant: "primary",
|
|
122
116
|
size: "sm",
|
|
123
|
-
className: twMerge("".concat(hasActiveFilters ? "hc-opacity-0 hc-pointer-events-none" : "hc-opacity-100"), filterConfig === null || filterConfig === void 0 || (_filterConfig$
|
|
117
|
+
className: twMerge("".concat(hasActiveFilters ? "hc-opacity-0 hc-pointer-events-none" : "hc-opacity-100"), filterConfig === null || filterConfig === void 0 || (_filterConfig$classNa = filterConfig.classNames) === null || _filterConfig$classNa === void 0 ? void 0 : _filterConfig$classNa.showJobsButton)
|
|
124
118
|
}, /*#__PURE__*/React.createElement(Button.Body, null, /*#__PURE__*/React.createElement(Button.Icon, {
|
|
125
119
|
icon: "fluent:search-12-filled",
|
|
126
120
|
size: "hc-size-3.5"
|
|
@@ -129,33 +123,17 @@ var Filter = function Filter(_ref) {
|
|
|
129
123
|
return /*#__PURE__*/React.createElement("div", {
|
|
130
124
|
ref: containerRef,
|
|
131
125
|
style: isDesktop ? style : undefined,
|
|
132
|
-
className: twMerge("/* Mobile layout */\n
|
|
126
|
+
className: twMerge("/* Mobile layout */\n\t\t\t\thc-relative hc-w-full hc-h-full hc-flex hc-flex-col\n\n\t\t\t\t/* Desktop layout */\n\t\t\t\tmd:hc-relative md:hc-flex md:hc-flex-col md:hc-max-h-[100%]\n\n\t\t\t\t".concat(className !== null && className !== void 0 ? className : ""), filterConfig === null || filterConfig === void 0 || (_filterConfig$classNa2 = filterConfig.classNames) === null || _filterConfig$classNa2 === void 0 ? void 0 : _filterConfig$classNa2.filterContainer)
|
|
133
127
|
}, /*#__PURE__*/React.createElement("div", {
|
|
134
128
|
ref: contentRef,
|
|
135
|
-
className: twMerge("hc-w-full hc-flex-grow hc-max-h-full hc-overflow-auto ".concat(hasOverflow ? 'hc-pb-16' : '', " md:hc-overflow-y-auto ").concat(hasOverflow ? 'md:hc-pb-16' : 'md:hc-pb-0'), filterConfig === null || filterConfig === void 0 || (_filterConfig$
|
|
129
|
+
className: twMerge("hc-w-full hc-flex-grow hc-max-h-full hc-overflow-auto ".concat(hasOverflow ? 'hc-pb-16' : '', " md:hc-overflow-y-auto ").concat(hasOverflow ? 'md:hc-pb-16' : 'md:hc-pb-0'), filterConfig === null || filterConfig === void 0 || (_filterConfig$classNa3 = filterConfig.classNames) === null || _filterConfig$classNa3 === void 0 ? void 0 : _filterConfig$classNa3.filterContent)
|
|
136
130
|
}, /*#__PURE__*/React.createElement("div", {
|
|
137
131
|
className: "hc-px-4 md:hc-pt-4 hc-space-y-4"
|
|
138
132
|
}, children, !hasOverflow && !showFixedFooter && /*#__PURE__*/React.createElement("div", {
|
|
139
|
-
className: twMerge("hc-flex hc-items-center hc-justify-between hc-gap-2 hc-py-2 hc-border-t hc-border-gray-200 hc-animate-in hc-fade-in hc-duration-300", filterConfig === null || filterConfig === void 0 || (_filterConfig$
|
|
140
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
141
|
-
className: "hc-flex hc-items-center hc-justify-between hc-gap-2 hc-w-full md:hc-hidden"
|
|
142
|
-
}, /*#__PURE__*/React.createElement(MobileButtons, null)), /*#__PURE__*/React.createElement("div", {
|
|
143
|
-
className: "hc-hidden md:hc-flex"
|
|
144
|
-
}, /*#__PURE__*/React.createElement(Button.Btn, {
|
|
145
|
-
onClick: handleReset,
|
|
146
|
-
variant: "outline",
|
|
147
|
-
size: "sm",
|
|
148
|
-
className: filterConfig === null || filterConfig === void 0 || (_filterConfig$classNa6 = filterConfig.classNames) === null || _filterConfig$classNa6 === void 0 ? void 0 : _filterConfig$classNa6.resetButton
|
|
149
|
-
}, "Reset All"))))), showFixedFooter && /*#__PURE__*/React.createElement("div", {
|
|
133
|
+
className: twMerge("hc-flex hc-items-center hc-justify-between hc-gap-2 hc-py-2 hc-border-t hc-border-gray-200 hc-animate-in hc-fade-in hc-duration-300 md:hc-hidden", filterConfig === null || filterConfig === void 0 || (_filterConfig$classNa4 = filterConfig.classNames) === null || _filterConfig$classNa4 === void 0 ? void 0 : _filterConfig$classNa4.filterFooter)
|
|
134
|
+
}, /*#__PURE__*/React.createElement(MobileButtons, null)))), showFixedFooter && /*#__PURE__*/React.createElement("div", {
|
|
150
135
|
className: "hc-w-full hc-absolute hc-bottom-0 hc-left-0 hc-right-0 hc-flex hc-items-center hc-justify-between hc-gap-2 hc-py-2 hc-px-4 hc-bg-gray-100 hc-border-t hc-border-gray-200 hc-z-50 md:hc-hidden hc-animate-in hc-fade-in hc-slide-in-from-bottom-2 hc-duration-200"
|
|
151
|
-
}, /*#__PURE__*/React.createElement(MobileButtons, null))
|
|
152
|
-
className: "hc-hidden md:hc-flex md:hc-justify-start hc-px-4 hc-py-4 hc-absolute hc-bottom-0 hc-left-0 hc-right-0 hc-bg-gray-100 hc-border-t hc-border-gray-200 hc-z-50 hc-animate-in hc-fade-in hc-slide-in-from-bottom-2 hc-duration-200"
|
|
153
|
-
}, /*#__PURE__*/React.createElement(Button.Btn, {
|
|
154
|
-
onClick: handleReset,
|
|
155
|
-
variant: "outline",
|
|
156
|
-
size: "sm",
|
|
157
|
-
className: filterConfig === null || filterConfig === void 0 || (_filterConfig$classNa7 = filterConfig.classNames) === null || _filterConfig$classNa7 === void 0 ? void 0 : _filterConfig$classNa7.resetButton
|
|
158
|
-
}, "Reset All")));
|
|
136
|
+
}, /*#__PURE__*/React.createElement(MobileButtons, null)));
|
|
159
137
|
};
|
|
160
138
|
|
|
161
139
|
export { Filter as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/modules/filter/index.js"],"sourcesContent":["\"use client\";\nimport Button from \"~/components/modules/buttons/default\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { twMerge } from '~/util/twMerge';\nimport { useMapList } from \"~/contexts/mapListContext\";\n\nconst Filter = ({\n\tclassName,\n\thasActiveFilters,\n\tfilteredListings,\n\tselectedFilters,\n\tsetMobileTab,\n\thandleReset,\n\tisDesktop = false,\n\tstyle,\n\tchildren\n}) => {\n\tconst { filterConfig } = useMapList();\n\tconst contentRef = useRef(null);\n\tconst containerRef = useRef(null);\n\tconst [hasOverflow, setHasOverflow] = useState(false);\n\tconst [showFixedFooter, setShowFixedFooter] = useState(false);\n\tconst [hasMounted, setHasMounted] = useState(false);\n\tconst transitionTimeoutRef = useRef(null);\n\n\t// Set mounted state to avoid hydration mismatch\n\tuseEffect(() => {\n\t\tsetHasMounted(true);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined' || !hasMounted) return;\n\t\t\n\t\tconst checkOverflow = () => {\n\t\t\tif (contentRef.current) {\n\t\t\t\t// Add a small tolerance (5px) to avoid false positives from rounding/padding\n\t\t\t\tconst hasScroll = contentRef.current.scrollHeight > contentRef.current.clientHeight + 5;\n\n\t\t\t\tif (hasScroll !== hasOverflow) {\n\t\t\t\t\tsetHasOverflow(hasScroll);\n\n\t\t\t\t\t// Clear any pending transitions\n\t\t\t\t\tif (transitionTimeoutRef.current) {\n\t\t\t\t\t\tclearTimeout(transitionTimeoutRef.current);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add a delay when transitioning to fixed footer to smooth the transition\n\t\t\t\t\tif (hasScroll) {\n\t\t\t\t\t\ttransitionTimeoutRef.current = setTimeout(() => setShowFixedFooter(true), 200);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Delay hiding fixed footer to allow animation to complete and prevent flashing\n\t\t\t\t\t\ttransitionTimeoutRef.current = setTimeout(() => setShowFixedFooter(false), 200);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Delay initial check to ensure layout is complete\n\t\tsetTimeout(checkOverflow, 100);\n\n\t\t// Check on resize\n\t\twindow.addEventListener('resize', checkOverflow);\n\n\t\t// Use ResizeObserver to detect container size changes\n\t\tconst resizeObserver = new ResizeObserver(() => {\n\t\t\tsetTimeout(checkOverflow, 50);\n\t\t});\n\t\tif (containerRef.current) {\n\t\t\tresizeObserver.observe(containerRef.current);\n\t\t}\n\t\tif (contentRef.current) {\n\t\t\tresizeObserver.observe(contentRef.current);\n\t\t}\n\n\t\t// Use MutationObserver to detect content changes\n\t\tconst mutationObserver = new MutationObserver(() => {\n\t\t\tsetTimeout(checkOverflow, 50);\n\t\t});\n\t\tif (contentRef.current) {\n\t\t\tmutationObserver.observe(contentRef.current, { childList: true, subtree: true, attributes: true });\n\t\t}\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', checkOverflow);\n\t\t\tresizeObserver.disconnect();\n\t\t\tmutationObserver.disconnect();\n\t\t\t// Clear timeout on unmount\n\t\t\tif (transitionTimeoutRef.current) {\n\t\t\t\tclearTimeout(transitionTimeoutRef.current);\n\t\t\t}\n\t\t};\n\t}, [children, hasOverflow, hasMounted]);\n\n\t// Reusable button component\n\tconst MobileButtons = () => (\n\t\t<>\n\t\t\t<Button.Btn\n\t\t\t\tonClick={handleReset}\n\t\t\t\tvariant=\"outline\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\tclassName={filterConfig?.classNames?.resetButton}\n\t\t\t>\n\t\t\t\tReset All\n\t\t\t</Button.Btn>\n\t\t\t{selectedFilters && Object.keys(selectedFilters).length > 0 && (\n\t\t\t\t<Button.Btn\n\t\t\t\t\tonClick={() => setMobileTab(\"listTab\")}\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t`${hasActiveFilters ? \"hc-opacity-0 hc-pointer-events-none\" : \"hc-opacity-100\"}`,\n\t\t\t\t\t\tfilterConfig?.classNames?.showJobsButton\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<Button.Body>\n\t\t\t\t\t\t<Button.Icon icon=\"fluent:search-12-filled\" size=\"hc-size-3.5\" />\n\t\t\t\t\t\tShow {filteredListings.length} Jobs\n\t\t\t\t\t</Button.Body>\n\t\t\t\t</Button.Btn>\n\t\t\t)}\n\t\t</>\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tstyle={isDesktop ? style : undefined}\n\t\t\tclassName={twMerge(\n `/* Mobile layout */\n hc-relative hc-w-full hc-h-full hc-flex hc-flex-col\n\n /* Desktop layout */\n md:hc-relative md:hc-flex md:hc-flex-col md:hc-max-h-[100%]\n\n ${className ?? \"\"}`,\n filterConfig?.classNames?.filterContainer\n )}\n\t\t>\n\t\t\t{/* Content area with scroll */}\n\t\t\t<div\n\t\t\t\tref={contentRef}\n\t\t\t\tclassName={twMerge(\n\t\t\t\t\t`hc-w-full hc-flex-grow hc-max-h-full hc-overflow-auto ${hasOverflow ? 'hc-pb-16' : ''} md:hc-overflow-y-auto ${hasOverflow ? 'md:hc-pb-16' : 'md:hc-pb-0'}`,\n\t\t\t\t\tfilterConfig?.classNames?.filterContent\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<div className=\"hc-px-4 md:hc-pt-4 hc-space-y-4\">\n\t\t\t\t\t{children}\n\n\t\t\t\t\t{/* Inline buttons when no overflow - both mobile and desktop */}\n\t\t\t\t\t{!hasOverflow && !showFixedFooter && (\n\t\t\t\t\t\t<div className={twMerge(\n\t\t\t\t\t\t\t\"hc-flex hc-items-center hc-justify-between hc-gap-2 hc-py-2 hc-border-t hc-border-gray-200 hc-animate-in hc-fade-in hc-duration-300\",\n\t\t\t\t\t\t\tfilterConfig?.classNames?.filterFooter\n\t\t\t\t\t\t)}>\n\t\t\t\t\t\t\t{/* Mobile buttons */}\n\t\t\t\t\t\t\t<div className=\"hc-flex hc-items-center hc-justify-between hc-gap-2 hc-w-full md:hc-hidden\">\n\t\t\t\t\t\t\t\t<MobileButtons />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{/* Desktop button */}\n\t\t\t\t\t\t\t<div className=\"hc-hidden md:hc-flex\">\n\t\t\t\t\t\t\t\t<Button.Btn\n\t\t\t\t\t\t\t\t\tonClick={handleReset}\n\t\t\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\tclassName={filterConfig?.classNames?.resetButton}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tReset All\n\t\t\t\t\t\t\t\t</Button.Btn>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Mobile Footer - fixed at bottom (only when overflow) */}\n\t\t\t{showFixedFooter && (\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"hc-w-full hc-absolute hc-bottom-0 hc-left-0 hc-right-0 hc-flex hc-items-center hc-justify-between hc-gap-2 hc-py-2 hc-px-4 hc-bg-gray-100 hc-border-t hc-border-gray-200 hc-z-50 md:hc-hidden hc-animate-in hc-fade-in hc-slide-in-from-bottom-2 hc-duration-200\"\n\t\t\t\t>\n\t\t\t\t\t<MobileButtons />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* Desktop Footer - fixed at bottom (only when overflow) */}\n\t\t\t{showFixedFooter && (\n\t\t\t\t<div className=\"hc-hidden md:hc-flex md:hc-justify-start hc-px-4 hc-py-4 hc-absolute hc-bottom-0 hc-left-0 hc-right-0 hc-bg-gray-100 hc-border-t hc-border-gray-200 hc-z-50 hc-animate-in hc-fade-in hc-slide-in-from-bottom-2 hc-duration-200\">\n\t\t\t\t\t<Button.Btn\n\t\t\t\t\t\tonClick={handleReset}\n\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tclassName={filterConfig?.classNames?.resetButton}\n\t\t\t\t\t>\n\t\t\t\t\t\tReset All\n\t\t\t\t\t</Button.Btn>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Filter;\n"],"names":["Filter","_ref","_filterConfig$classNa3","_filterConfig$classNa4","_filterConfig$classNa5","_filterConfig$classNa6","_filterConfig$classNa7","className","hasActiveFilters","filteredListings","selectedFilters","setMobileTab","handleReset","_ref$isDesktop","isDesktop","style","children","_useMapList","useMapList","filterConfig","contentRef","useRef","containerRef","_useState","useState","_useState2","_slicedToArray","hasOverflow","setHasOverflow","_useState3","_useState4","showFixedFooter","setShowFixedFooter","_useState5","_useState6","hasMounted","setHasMounted","transitionTimeoutRef","useEffect","window","checkOverflow","current","hasScroll","scrollHeight","clientHeight","clearTimeout","setTimeout","addEventListener","resizeObserver","ResizeObserver","observe","mutationObserver","MutationObserver","childList","subtree","attributes","removeEventListener","disconnect","MobileButtons","_filterConfig$classNa","_filterConfig$classNa2","React","createElement","Fragment","Button","Btn","onClick","variant","size","classNames","resetButton","Object","keys","length","twMerge","concat","showJobsButton","Body","Icon","icon","ref","undefined","filterContainer","filterContent","filterFooter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/modules/filter/index.js"],"sourcesContent":["\"use client\";\nimport Button from \"~/components/modules/buttons/default\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { twMerge } from '~/util/twMerge';\nimport { useMapList } from \"~/contexts/mapListContext\";\n\nconst Filter = ({\n\tclassName,\n\thasActiveFilters,\n\tfilteredListings,\n\tselectedFilters,\n\tsetMobileTab,\n\tisDesktop = false,\n\tstyle,\n\tchildren\n}) => {\n\tconst { filterConfig } = useMapList();\n\tconst contentRef = useRef(null);\n\tconst containerRef = useRef(null);\n\tconst [hasOverflow, setHasOverflow] = useState(false);\n\tconst [showFixedFooter, setShowFixedFooter] = useState(false);\n\tconst [hasMounted, setHasMounted] = useState(false);\n\tconst transitionTimeoutRef = useRef(null);\n\n\t// Set mounted state to avoid hydration mismatch\n\tuseEffect(() => {\n\t\tsetHasMounted(true);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined' || !hasMounted) return;\n\t\t\n\t\tconst checkOverflow = () => {\n\t\t\tif (contentRef.current) {\n\t\t\t\t// Add a small tolerance (5px) to avoid false positives from rounding/padding\n\t\t\t\tconst hasScroll = contentRef.current.scrollHeight > contentRef.current.clientHeight + 5;\n\n\t\t\t\tif (hasScroll !== hasOverflow) {\n\t\t\t\t\tsetHasOverflow(hasScroll);\n\n\t\t\t\t\t// Clear any pending transitions\n\t\t\t\t\tif (transitionTimeoutRef.current) {\n\t\t\t\t\t\tclearTimeout(transitionTimeoutRef.current);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add a delay when transitioning to fixed footer to smooth the transition\n\t\t\t\t\tif (hasScroll) {\n\t\t\t\t\t\ttransitionTimeoutRef.current = setTimeout(() => setShowFixedFooter(true), 200);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Delay hiding fixed footer to allow animation to complete and prevent flashing\n\t\t\t\t\t\ttransitionTimeoutRef.current = setTimeout(() => setShowFixedFooter(false), 200);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Delay initial check to ensure layout is complete\n\t\tsetTimeout(checkOverflow, 100);\n\n\t\t// Check on resize\n\t\twindow.addEventListener('resize', checkOverflow);\n\n\t\t// Use ResizeObserver to detect container size changes\n\t\tconst resizeObserver = new ResizeObserver(() => {\n\t\t\tsetTimeout(checkOverflow, 50);\n\t\t});\n\t\tif (containerRef.current) {\n\t\t\tresizeObserver.observe(containerRef.current);\n\t\t}\n\t\tif (contentRef.current) {\n\t\t\tresizeObserver.observe(contentRef.current);\n\t\t}\n\n\t\t// Use MutationObserver to detect content changes\n\t\tconst mutationObserver = new MutationObserver(() => {\n\t\t\tsetTimeout(checkOverflow, 50);\n\t\t});\n\t\tif (contentRef.current) {\n\t\t\tmutationObserver.observe(contentRef.current, { childList: true, subtree: true, attributes: true });\n\t\t}\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', checkOverflow);\n\t\t\tresizeObserver.disconnect();\n\t\t\tmutationObserver.disconnect();\n\t\t\t// Clear timeout on unmount\n\t\t\tif (transitionTimeoutRef.current) {\n\t\t\t\tclearTimeout(transitionTimeoutRef.current);\n\t\t\t}\n\t\t};\n\t}, [children, hasOverflow, hasMounted]);\n\n\t// Reusable button component\n\tconst MobileButtons = () => (\n\t\t<>\n\t\t\t{selectedFilters && Object.keys(selectedFilters).length > 0 && (\n\t\t\t\t<Button.Btn\n\t\t\t\t\tonClick={() => setMobileTab(\"listTab\")}\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t`${hasActiveFilters ? \"hc-opacity-0 hc-pointer-events-none\" : \"hc-opacity-100\"}`,\n\t\t\t\t\t\tfilterConfig?.classNames?.showJobsButton\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<Button.Body>\n\t\t\t\t\t\t<Button.Icon icon=\"fluent:search-12-filled\" size=\"hc-size-3.5\" />\n\t\t\t\t\t\tShow {filteredListings.length} Jobs\n\t\t\t\t\t</Button.Body>\n\t\t\t\t</Button.Btn>\n\t\t\t)}\n\t\t</>\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tstyle={isDesktop ? style : undefined}\n\t\t\tclassName={twMerge(\n\t\t\t\t`/* Mobile layout */\n\t\t\t\thc-relative hc-w-full hc-h-full hc-flex hc-flex-col\n\n\t\t\t\t/* Desktop layout */\n\t\t\t\tmd:hc-relative md:hc-flex md:hc-flex-col md:hc-max-h-[100%]\n\n\t\t\t\t${className ?? \"\"}`,\n\t\t\t\tfilterConfig?.classNames?.filterContainer\n\t\t\t)}\n\t\t>\n\t\t\t{/* Content area with scroll */}\n\t\t\t<div\n\t\t\t\tref={contentRef}\n\t\t\t\tclassName={twMerge(\n\t\t\t\t\t`hc-w-full hc-flex-grow hc-max-h-full hc-overflow-auto ${hasOverflow ? 'hc-pb-16' : ''} md:hc-overflow-y-auto ${hasOverflow ? 'md:hc-pb-16' : 'md:hc-pb-0'}`,\n\t\t\t\t\tfilterConfig?.classNames?.filterContent\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<div className=\"hc-px-4 md:hc-pt-4 hc-space-y-4\">\n\t\t\t\t\t{children}\n\n\t\t\t\t\t{/* Inline buttons when no overflow - mobile only */}\n\t\t\t\t\t{!hasOverflow && !showFixedFooter && (\n\t\t\t\t\t\t<div className={twMerge(\n\t\t\t\t\t\t\t\"hc-flex hc-items-center hc-justify-between hc-gap-2 hc-py-2 hc-border-t hc-border-gray-200 hc-animate-in hc-fade-in hc-duration-300 md:hc-hidden\",\n\t\t\t\t\t\t\tfilterConfig?.classNames?.filterFooter\n\t\t\t\t\t\t)}>\n\t\t\t\t\t\t\t<MobileButtons />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Mobile Footer - fixed at bottom (only when overflow) */}\n\t\t\t{showFixedFooter && (\n\t\t\t\t<div className=\"hc-w-full hc-absolute hc-bottom-0 hc-left-0 hc-right-0 hc-flex hc-items-center hc-justify-between hc-gap-2 hc-py-2 hc-px-4 hc-bg-gray-100 hc-border-t hc-border-gray-200 hc-z-50 md:hc-hidden hc-animate-in hc-fade-in hc-slide-in-from-bottom-2 hc-duration-200\">\n\t\t\t\t\t<MobileButtons />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Filter;"],"names":["Filter","_ref","_filterConfig$classNa2","_filterConfig$classNa3","_filterConfig$classNa4","className","hasActiveFilters","filteredListings","selectedFilters","setMobileTab","_ref$isDesktop","isDesktop","style","children","_useMapList","useMapList","filterConfig","contentRef","useRef","containerRef","_useState","useState","_useState2","_slicedToArray","hasOverflow","setHasOverflow","_useState3","_useState4","showFixedFooter","setShowFixedFooter","_useState5","_useState6","hasMounted","setHasMounted","transitionTimeoutRef","useEffect","window","checkOverflow","current","hasScroll","scrollHeight","clientHeight","clearTimeout","setTimeout","addEventListener","resizeObserver","ResizeObserver","observe","mutationObserver","MutationObserver","childList","subtree","attributes","removeEventListener","disconnect","MobileButtons","_filterConfig$classNa","React","createElement","Fragment","Object","keys","length","Button","Btn","onClick","variant","size","twMerge","concat","classNames","showJobsButton","Body","Icon","icon","ref","undefined","filterContainer","filterContent","filterFooter"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -10,7 +10,8 @@ const AccordionFiltersContainer = ({
|
|
|
10
10
|
setDefaultValue,
|
|
11
11
|
setLocation,
|
|
12
12
|
setSelectedListItem,
|
|
13
|
-
SubcategoryRequireCategory
|
|
13
|
+
SubcategoryRequireCategory,
|
|
14
|
+
handleReset
|
|
14
15
|
}) => {
|
|
15
16
|
const { filterOptions, selectedFilters, setSelectedFilters, siteConfig, hiddenFilters, noEntities } = useMapList();
|
|
16
17
|
|
|
@@ -35,6 +36,7 @@ const AccordionFiltersContainer = ({
|
|
|
35
36
|
className={className}
|
|
36
37
|
defaultValue={defaultValue}
|
|
37
38
|
filterOptions={filterOptions}
|
|
39
|
+
handleReset={handleReset}
|
|
38
40
|
>
|
|
39
41
|
{displayedFilters?.map(filter => {
|
|
40
42
|
if(filter.id === 'category' && SubcategoryRequireCategory === true && (!selectedFilters.categoryClass || Object.keys(selectedFilters.categoryClass).length < 1)){
|
|
@@ -43,7 +45,7 @@ const AccordionFiltersContainer = ({
|
|
|
43
45
|
filter.items = filter.items.filter(item => item.count > 0);
|
|
44
46
|
}
|
|
45
47
|
|
|
46
|
-
|
|
48
|
+
else if(filter.id === 'specialFeatures' && !filter.items.some(item => item.name !== "Favorite" && item.count > 0)){
|
|
47
49
|
const favorite = filter.items.find(item => item.name === "Favorite");
|
|
48
50
|
return <FilterItem
|
|
49
51
|
key={"Favorite"}
|
|
@@ -51,7 +51,6 @@ const FilterContainer = ({
|
|
|
51
51
|
selectedFilters={selectedFilters}
|
|
52
52
|
setSelectedFilters={setSelectedFilters}
|
|
53
53
|
setMobileTab={setMobileTab}
|
|
54
|
-
handleReset={handleReset}
|
|
55
54
|
siteConfig={siteConfig}
|
|
56
55
|
style={containerStyle}
|
|
57
56
|
|
|
@@ -63,6 +62,7 @@ const FilterContainer = ({
|
|
|
63
62
|
setLocation={setLocation}
|
|
64
63
|
setSelectedListItem={setSelectedListItem}
|
|
65
64
|
SubcategoryRequireCategory={siteConfig.subcategoryRequireCategory}
|
|
65
|
+
handleReset={handleReset}
|
|
66
66
|
/>
|
|
67
67
|
<FilterSearch />
|
|
68
68
|
{siteConfig.hideLocations !== true && !noEntities &&
|
|
@@ -386,7 +386,7 @@ const MapContainer = ({ markerConfigs, infoWindowClasses, clusterGridSize = 60 }
|
|
|
386
386
|
currentZoom >= marker.minZoom &&
|
|
387
387
|
currentZoom <= marker.maxZoom && (
|
|
388
388
|
<Marker
|
|
389
|
-
key={`marker-${marker.title}-${index}`}
|
|
389
|
+
key={`additional-marker-${marker.title}-${index}`}
|
|
390
390
|
position={marker.position}
|
|
391
391
|
title={marker.title}
|
|
392
392
|
icon={{
|
|
@@ -400,7 +400,7 @@ const MapContainer = ({ markerConfigs, infoWindowClasses, clusterGridSize = 60 }
|
|
|
400
400
|
{poiMarkers &&
|
|
401
401
|
poiMarkers.markers.map((marker, index) => (
|
|
402
402
|
<PlaceMarker
|
|
403
|
-
key={`marker-${marker.title}-${index}`}
|
|
403
|
+
key={`poi-marker-${marker.title}-${index}`}
|
|
404
404
|
marker={marker}
|
|
405
405
|
index={index}
|
|
406
406
|
selectedPlaceMarker={selectedPlaceMarker}
|
|
@@ -2,19 +2,34 @@ import React from 'react';
|
|
|
2
2
|
import Accordion from '~/components/modules/accordions/default';
|
|
3
3
|
import FilterCard from '~/components/modules/cards/filter';
|
|
4
4
|
import Loading from '~/util/loading';
|
|
5
|
+
import Button from '~/components/modules/buttons/default';
|
|
5
6
|
|
|
6
7
|
const AccordionFilters = ({
|
|
7
8
|
className,
|
|
8
9
|
defaultValue,
|
|
9
10
|
children,
|
|
10
|
-
filterOptions
|
|
11
|
+
filterOptions,
|
|
12
|
+
handleReset
|
|
11
13
|
}) => {
|
|
12
14
|
return (
|
|
13
15
|
<FilterCard className={className ?? ""}>
|
|
14
16
|
<FilterCard.Title icon="fa-solid:sliders-h">
|
|
15
|
-
<
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
<div className="hc-flex hc-items-center hc-justify-between hc-w-full">
|
|
18
|
+
<span>
|
|
19
|
+
Filter <span className="md:hc-hidden lg:hc-inline">your search</span>
|
|
20
|
+
</span>
|
|
21
|
+
{handleReset && (
|
|
22
|
+
<Button.Btn
|
|
23
|
+
type="button"
|
|
24
|
+
variant="outline"
|
|
25
|
+
size="none"
|
|
26
|
+
onClick={handleReset}
|
|
27
|
+
className="hc-ml-auto hc-text-xs hc-px-2 hc-py-0.5"
|
|
28
|
+
>
|
|
29
|
+
Reset
|
|
30
|
+
</Button.Btn>
|
|
31
|
+
)}
|
|
32
|
+
</div>
|
|
18
33
|
</FilterCard.Title>
|
|
19
34
|
|
|
20
35
|
<Accordion defaultValue={defaultValue} className="hc-space-y-4" >
|
|
@@ -10,7 +10,6 @@ const Filter = ({
|
|
|
10
10
|
filteredListings,
|
|
11
11
|
selectedFilters,
|
|
12
12
|
setMobileTab,
|
|
13
|
-
handleReset,
|
|
14
13
|
isDesktop = false,
|
|
15
14
|
style,
|
|
16
15
|
children
|
|
@@ -94,14 +93,6 @@ const Filter = ({
|
|
|
94
93
|
// Reusable button component
|
|
95
94
|
const MobileButtons = () => (
|
|
96
95
|
<>
|
|
97
|
-
<Button.Btn
|
|
98
|
-
onClick={handleReset}
|
|
99
|
-
variant="outline"
|
|
100
|
-
size="sm"
|
|
101
|
-
className={filterConfig?.classNames?.resetButton}
|
|
102
|
-
>
|
|
103
|
-
Reset All
|
|
104
|
-
</Button.Btn>
|
|
105
96
|
{selectedFilters && Object.keys(selectedFilters).length > 0 && (
|
|
106
97
|
<Button.Btn
|
|
107
98
|
onClick={() => setMobileTab("listTab")}
|
|
@@ -126,15 +117,15 @@ const Filter = ({
|
|
|
126
117
|
ref={containerRef}
|
|
127
118
|
style={isDesktop ? style : undefined}
|
|
128
119
|
className={twMerge(
|
|
129
|
-
|
|
130
|
-
|
|
120
|
+
`/* Mobile layout */
|
|
121
|
+
hc-relative hc-w-full hc-h-full hc-flex hc-flex-col
|
|
131
122
|
|
|
132
|
-
|
|
133
|
-
|
|
123
|
+
/* Desktop layout */
|
|
124
|
+
md:hc-relative md:hc-flex md:hc-flex-col md:hc-max-h-[100%]
|
|
134
125
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
126
|
+
${className ?? ""}`,
|
|
127
|
+
filterConfig?.classNames?.filterContainer
|
|
128
|
+
)}
|
|
138
129
|
>
|
|
139
130
|
{/* Content area with scroll */}
|
|
140
131
|
<div
|
|
@@ -147,27 +138,13 @@ const Filter = ({
|
|
|
147
138
|
<div className="hc-px-4 md:hc-pt-4 hc-space-y-4">
|
|
148
139
|
{children}
|
|
149
140
|
|
|
150
|
-
{/* Inline buttons when no overflow -
|
|
141
|
+
{/* Inline buttons when no overflow - mobile only */}
|
|
151
142
|
{!hasOverflow && !showFixedFooter && (
|
|
152
143
|
<div className={twMerge(
|
|
153
|
-
"hc-flex hc-items-center hc-justify-between hc-gap-2 hc-py-2 hc-border-t hc-border-gray-200 hc-animate-in hc-fade-in hc-duration-300",
|
|
144
|
+
"hc-flex hc-items-center hc-justify-between hc-gap-2 hc-py-2 hc-border-t hc-border-gray-200 hc-animate-in hc-fade-in hc-duration-300 md:hc-hidden",
|
|
154
145
|
filterConfig?.classNames?.filterFooter
|
|
155
146
|
)}>
|
|
156
|
-
|
|
157
|
-
<div className="hc-flex hc-items-center hc-justify-between hc-gap-2 hc-w-full md:hc-hidden">
|
|
158
|
-
<MobileButtons />
|
|
159
|
-
</div>
|
|
160
|
-
{/* Desktop button */}
|
|
161
|
-
<div className="hc-hidden md:hc-flex">
|
|
162
|
-
<Button.Btn
|
|
163
|
-
onClick={handleReset}
|
|
164
|
-
variant="outline"
|
|
165
|
-
size="sm"
|
|
166
|
-
className={filterConfig?.classNames?.resetButton}
|
|
167
|
-
>
|
|
168
|
-
Reset All
|
|
169
|
-
</Button.Btn>
|
|
170
|
-
</div>
|
|
147
|
+
<MobileButtons />
|
|
171
148
|
</div>
|
|
172
149
|
)}
|
|
173
150
|
</div>
|
|
@@ -175,28 +152,12 @@ const Filter = ({
|
|
|
175
152
|
|
|
176
153
|
{/* Mobile Footer - fixed at bottom (only when overflow) */}
|
|
177
154
|
{showFixedFooter && (
|
|
178
|
-
<div
|
|
179
|
-
className="hc-w-full hc-absolute hc-bottom-0 hc-left-0 hc-right-0 hc-flex hc-items-center hc-justify-between hc-gap-2 hc-py-2 hc-px-4 hc-bg-gray-100 hc-border-t hc-border-gray-200 hc-z-50 md:hc-hidden hc-animate-in hc-fade-in hc-slide-in-from-bottom-2 hc-duration-200"
|
|
180
|
-
>
|
|
155
|
+
<div className="hc-w-full hc-absolute hc-bottom-0 hc-left-0 hc-right-0 hc-flex hc-items-center hc-justify-between hc-gap-2 hc-py-2 hc-px-4 hc-bg-gray-100 hc-border-t hc-border-gray-200 hc-z-50 md:hc-hidden hc-animate-in hc-fade-in hc-slide-in-from-bottom-2 hc-duration-200">
|
|
181
156
|
<MobileButtons />
|
|
182
157
|
</div>
|
|
183
158
|
)}
|
|
184
|
-
|
|
185
|
-
{/* Desktop Footer - fixed at bottom (only when overflow) */}
|
|
186
|
-
{showFixedFooter && (
|
|
187
|
-
<div className="hc-hidden md:hc-flex md:hc-justify-start hc-px-4 hc-py-4 hc-absolute hc-bottom-0 hc-left-0 hc-right-0 hc-bg-gray-100 hc-border-t hc-border-gray-200 hc-z-50 hc-animate-in hc-fade-in hc-slide-in-from-bottom-2 hc-duration-200">
|
|
188
|
-
<Button.Btn
|
|
189
|
-
onClick={handleReset}
|
|
190
|
-
variant="outline"
|
|
191
|
-
size="sm"
|
|
192
|
-
className={filterConfig?.classNames?.resetButton}
|
|
193
|
-
>
|
|
194
|
-
Reset All
|
|
195
|
-
</Button.Btn>
|
|
196
|
-
</div>
|
|
197
|
-
)}
|
|
198
159
|
</div>
|
|
199
160
|
);
|
|
200
161
|
};
|
|
201
162
|
|
|
202
|
-
export default Filter;
|
|
163
|
+
export default Filter;
|