@abcagency/hc-ui-components 1.3.28 → 1.3.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,7 +20,10 @@ var FilterItemContainer = function FilterItemContainer(_ref) {
20
20
  if (subcategoryRequireCategory && fieldKey == 'categoryClass') {
21
21
  delete updatedFilters['category'];
22
22
  }
23
- delete updatedFilters[fieldKey];
23
+ if (fieldKey == 'state' || fieldKey == 'city' || fieldKey == 'cityState') {
24
+ delete updatedFilters.entityId;
25
+ delete updatedFilters[fieldKey];
26
+ }
24
27
  return updatedFilters;
25
28
  });
26
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"filter-item-container.js","sources":["../../../../src/components/containers/accordions/filter-item-container.js"],"sourcesContent":["import React, { memo } from 'react';\r\nimport AccordionFilterItem from '~/components/modules/accordions/filterItem';\r\nimport FilterItem from '~/components/containers/filter/filter-item-container';\r\nimport ItemsPill from '~/components/modules/buttons/items-pill';\r\n\r\nconst FilterItemContainer = ({\r\n\tfilter,\r\n\tsetDefaultValue,\r\n\tsetSelectedFilters,\r\n\tselectedFilters,\r\n\tsubcategoryRequireCategory = false\r\n}) => {\r\n\tconst fieldKey = filter.id;\r\n\tconst activeItemsCount = selectedFilters != null && selectedFilters[fieldKey]\r\n\t\t? Object.keys(selectedFilters[fieldKey]).length\r\n\t\t: 0;\r\n\r\n\tconst handleClearFilters = event => {\r\n\t\tevent.stopPropagation();\r\n\t\tsetSelectedFilters(prevFilters => {\r\n\t\t\tconst updatedFilters = { ...prevFilters };\r\n\t\t\tif(subcategoryRequireCategory && fieldKey == 'categoryClass'){\r\n\t\t\t\tdelete updatedFilters['category'];\r\n\t\t\t}\r\n\t\t\tdelete updatedFilters[fieldKey];\r\n\t\t\treturn updatedFilters;\r\n\t\t});\r\n\t};\r\n\r\n\tconst header = (\r\n\t\t<>\r\n\t\t\t{filter.title}\r\n\t\t\t{activeItemsCount > 0 && (\r\n\t\t\t\t<ItemsPill\r\n\t\t\t\t\tactiveItemsCount={activeItemsCount}\r\n\t\t\t\t\tonClick={handleClearFilters}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t</>\r\n\t);\r\n\r\n\tconst body = (\r\n\t\t<>\r\n\t\t\t{filter.items.sort().map(item => (\r\n\t\t\t\t<FilterItem\r\n\t\t\t\t\tkey={item.name}\r\n\t\t\t\t\titem={item}\r\n\t\t\t\t\tfield={filter.id}\r\n\t\t\t\t\tselectedFilters={selectedFilters}\r\n\t\t\t\t\tsetSelectedFilters={setSelectedFilters}\r\n\t\t\t\t/>\r\n\t\t\t))}\r\n\t\t</>\r\n\t);\r\n\r\n\treturn (\r\n\t\t<AccordionFilterItem\r\n\t\t\tid={filter.id}\r\n\t\t\tsetDefaultValue={setDefaultValue}\r\n\t\t\theader={header}\r\n\t\t\tbody={body}\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nexport default memo(FilterItemContainer);\r\n"],"names":["FilterItemContainer","_ref","filter","setDefaultValue","setSelectedFilters","selectedFilters","_ref$subcategoryRequi","subcategoryRequireCategory","fieldKey","id","activeItemsCount","Object","keys","length","handleClearFilters","event","stopPropagation","prevFilters","updatedFilters","_objectSpread","header","React","createElement","Fragment","title","ItemsPill","onClick","body","items","sort","map","item","FilterItem","key","name","field","AccordionFilterItem","memo"],"mappings":";;;;;;AAKA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAAC,IAAA,EAMnB;AAAA,EAAA,IALLC,MAAM,GAAAD,IAAA,CAANC,MAAM;IACNC,eAAe,GAAAF,IAAA,CAAfE,eAAe;IACfC,kBAAkB,GAAAH,IAAA,CAAlBG,kBAAkB;IAClBC,eAAe,GAAAJ,IAAA,CAAfI,eAAe;IAAAC,qBAAA,GAAAL,IAAA,CACfM,0BAA0B;AAA1BA,IAAAA,0BAA0B,GAAAD,qBAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,qBAAA,CAAA;AAElC,EAAA,IAAME,QAAQ,GAAGN,MAAM,CAACO,EAAE,CAAA;EAC1B,IAAMC,gBAAgB,GAAGL,eAAe,IAAI,IAAI,IAAIA,eAAe,CAACG,QAAQ,CAAC,GAC1EG,MAAM,CAACC,IAAI,CAACP,eAAe,CAACG,QAAQ,CAAC,CAAC,CAACK,MAAM,GAC7C,CAAC,CAAA;AAEJ,EAAA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAGC,KAAK,EAAI;IACnCA,KAAK,CAACC,eAAe,EAAE,CAAA;IACvBZ,kBAAkB,CAAC,UAAAa,WAAW,EAAI;AACjC,MAAA,IAAMC,cAAc,GAAAC,cAAA,CAAA,EAAA,EAAQF,WAAW,CAAE,CAAA;AACzC,MAAA,IAAGV,0BAA0B,IAAIC,QAAQ,IAAI,eAAe,EAAC;QAC5D,OAAOU,cAAc,CAAC,UAAU,CAAC,CAAA;AAClC,OAAA;MACA,OAAOA,cAAc,CAACV,QAAQ,CAAC,CAAA;AAC/B,MAAA,OAAOU,cAAc,CAAA;AACtB,KAAC,CAAC,CAAA;GACF,CAAA;EAED,IAAME,MAAM,gBACXC,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAAE,QAAA,EACErB,IAAAA,EAAAA,MAAM,CAACsB,KAAK,EACZd,gBAAgB,GAAG,CAAC,iBACpBW,cAAA,CAAAC,aAAA,CAACG,eAAS,EAAA;AACTf,IAAAA,gBAAgB,EAAEA,gBAAiB;AACnCgB,IAAAA,OAAO,EAAEZ,kBAAAA;AAAmB,GAC5B,CAED,CACF,CAAA;EAED,IAAMa,IAAI,gBACTN,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAAE,QAAA,EAAA,IAAA,EACErB,MAAM,CAAC0B,KAAK,CAACC,IAAI,EAAE,CAACC,GAAG,CAAC,UAAAC,IAAI,EAAA;AAAA,IAAA,oBAC5BV,cAAA,CAAAC,aAAA,CAACU,qBAAU,EAAA;MACVC,GAAG,EAAEF,IAAI,CAACG,IAAK;AACfH,MAAAA,IAAI,EAAEA,IAAK;MACXI,KAAK,EAAEjC,MAAM,CAACO,EAAG;AACjBJ,MAAAA,eAAe,EAAEA,eAAgB;AACjCD,MAAAA,kBAAkB,EAAEA,kBAAAA;AAAmB,KACvC,CAAC,CAAA;AAAA,GACF,CACA,CACF,CAAA;AAED,EAAA,oBACCiB,cAAA,CAAAC,aAAA,CAACc,qBAAmB,EAAA;IACnB3B,EAAE,EAAEP,MAAM,CAACO,EAAG;AACdN,IAAAA,eAAe,EAAEA,eAAgB;AACjCiB,IAAAA,MAAM,EAAEA,MAAO;AACfO,IAAAA,IAAI,EAAEA,IAAAA;AAAK,GACX,CAAC,CAAA;AAEJ,CAAC,CAAA;AAED,0BAAeU,aAAAA,IAAI,CAACrC,mBAAmB,CAAC;;;;"}
1
+ {"version":3,"file":"filter-item-container.js","sources":["../../../../src/components/containers/accordions/filter-item-container.js"],"sourcesContent":["import React, { memo } from 'react';\nimport AccordionFilterItem from '~/components/modules/accordions/filterItem';\nimport FilterItem from '~/components/containers/filter/filter-item-container';\nimport ItemsPill from '~/components/modules/buttons/items-pill';\n\nconst FilterItemContainer = ({\n\tfilter,\n\tsetDefaultValue,\n\tsetSelectedFilters,\n\tselectedFilters,\n\tsubcategoryRequireCategory = false\n}) => {\n\tconst fieldKey = filter.id;\n\tconst activeItemsCount = selectedFilters != null && selectedFilters[fieldKey]\n\t\t? Object.keys(selectedFilters[fieldKey]).length\n\t\t: 0;\n\n\tconst handleClearFilters = event => {\n\t\tevent.stopPropagation();\n\t\tsetSelectedFilters(prevFilters => {\n\t\t\tconst updatedFilters = { ...prevFilters };\n\t\t\tif(subcategoryRequireCategory && fieldKey == 'categoryClass'){\n\t\t\t\tdelete updatedFilters['category'];\n\t\t\t}\n\t\t\tif(fieldKey == 'state' || fieldKey == 'city' || fieldKey == 'cityState'){\n\t\t\t\tdelete updatedFilters.entityId;\n\t\t\t\tdelete updatedFilters[fieldKey];\n\t\t\t}\n\t\t\treturn updatedFilters;\n\t\t});\n\t};\n\n\tconst header = (\n\t\t<>\n\t\t\t{filter.title}\n\t\t\t{activeItemsCount > 0 && (\n\t\t\t\t<ItemsPill\n\t\t\t\t\tactiveItemsCount={activeItemsCount}\n\t\t\t\t\tonClick={handleClearFilters}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n\n\tconst body = (\n\t\t<>\n\t\t\t{filter.items.sort().map(item => (\n\t\t\t\t<FilterItem\n\t\t\t\t\tkey={item.name}\n\t\t\t\t\titem={item}\n\t\t\t\t\tfield={filter.id}\n\t\t\t\t\tselectedFilters={selectedFilters}\n\t\t\t\t\tsetSelectedFilters={setSelectedFilters}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</>\n\t);\n\n\treturn (\n\t\t<AccordionFilterItem\n\t\t\tid={filter.id}\n\t\t\tsetDefaultValue={setDefaultValue}\n\t\t\theader={header}\n\t\t\tbody={body}\n\t\t/>\n\t);\n};\n\nexport default memo(FilterItemContainer);\n"],"names":["FilterItemContainer","_ref","filter","setDefaultValue","setSelectedFilters","selectedFilters","_ref$subcategoryRequi","subcategoryRequireCategory","fieldKey","id","activeItemsCount","Object","keys","length","handleClearFilters","event","stopPropagation","prevFilters","updatedFilters","_objectSpread","entityId","header","React","createElement","Fragment","title","ItemsPill","onClick","body","items","sort","map","item","FilterItem","key","name","field","AccordionFilterItem","memo"],"mappings":";;;;;;AAKA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAAC,IAAA,EAMnB;AAAA,EAAA,IALLC,MAAM,GAAAD,IAAA,CAANC,MAAM;IACNC,eAAe,GAAAF,IAAA,CAAfE,eAAe;IACfC,kBAAkB,GAAAH,IAAA,CAAlBG,kBAAkB;IAClBC,eAAe,GAAAJ,IAAA,CAAfI,eAAe;IAAAC,qBAAA,GAAAL,IAAA,CACfM,0BAA0B;AAA1BA,IAAAA,0BAA0B,GAAAD,qBAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,qBAAA,CAAA;AAElC,EAAA,IAAME,QAAQ,GAAGN,MAAM,CAACO,EAAE,CAAA;EAC1B,IAAMC,gBAAgB,GAAGL,eAAe,IAAI,IAAI,IAAIA,eAAe,CAACG,QAAQ,CAAC,GAC1EG,MAAM,CAACC,IAAI,CAACP,eAAe,CAACG,QAAQ,CAAC,CAAC,CAACK,MAAM,GAC7C,CAAC,CAAA;AAEJ,EAAA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAGC,KAAK,EAAI;IACnCA,KAAK,CAACC,eAAe,EAAE,CAAA;IACvBZ,kBAAkB,CAAC,UAAAa,WAAW,EAAI;AACjC,MAAA,IAAMC,cAAc,GAAAC,cAAA,CAAA,EAAA,EAAQF,WAAW,CAAE,CAAA;AACzC,MAAA,IAAGV,0BAA0B,IAAIC,QAAQ,IAAI,eAAe,EAAC;QAC5D,OAAOU,cAAc,CAAC,UAAU,CAAC,CAAA;AAClC,OAAA;MACA,IAAGV,QAAQ,IAAI,OAAO,IAAIA,QAAQ,IAAI,MAAM,IAAIA,QAAQ,IAAI,WAAW,EAAC;QACvE,OAAOU,cAAc,CAACE,QAAQ,CAAA;QAC9B,OAAOF,cAAc,CAACV,QAAQ,CAAC,CAAA;AAChC,OAAA;AACA,MAAA,OAAOU,cAAc,CAAA;AACtB,KAAC,CAAC,CAAA;GACF,CAAA;EAED,IAAMG,MAAM,gBACXC,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAAE,QAAA,EACEtB,IAAAA,EAAAA,MAAM,CAACuB,KAAK,EACZf,gBAAgB,GAAG,CAAC,iBACpBY,cAAA,CAAAC,aAAA,CAACG,eAAS,EAAA;AACThB,IAAAA,gBAAgB,EAAEA,gBAAiB;AACnCiB,IAAAA,OAAO,EAAEb,kBAAAA;AAAmB,GAC5B,CAED,CACF,CAAA;EAED,IAAMc,IAAI,gBACTN,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAAE,QAAA,EAAA,IAAA,EACEtB,MAAM,CAAC2B,KAAK,CAACC,IAAI,EAAE,CAACC,GAAG,CAAC,UAAAC,IAAI,EAAA;AAAA,IAAA,oBAC5BV,cAAA,CAAAC,aAAA,CAACU,qBAAU,EAAA;MACVC,GAAG,EAAEF,IAAI,CAACG,IAAK;AACfH,MAAAA,IAAI,EAAEA,IAAK;MACXI,KAAK,EAAElC,MAAM,CAACO,EAAG;AACjBJ,MAAAA,eAAe,EAAEA,eAAgB;AACjCD,MAAAA,kBAAkB,EAAEA,kBAAAA;AAAmB,KACvC,CAAC,CAAA;AAAA,GACF,CACA,CACF,CAAA;AAED,EAAA,oBACCkB,cAAA,CAAAC,aAAA,CAACc,qBAAmB,EAAA;IACnB5B,EAAE,EAAEP,MAAM,CAACO,EAAG;AACdN,IAAAA,eAAe,EAAEA,eAAgB;AACjCkB,IAAAA,MAAM,EAAEA,MAAO;AACfO,IAAAA,IAAI,EAAEA,IAAAA;AAAK,GACX,CAAC,CAAA;AAEJ,CAAC,CAAA;AAED,0BAAeU,aAAAA,IAAI,CAACtC,mBAAmB,CAAC;;;;"}
@@ -6,8 +6,8 @@ import { useTrackEvent } from '../../../contexts/trackEventContext.js';
6
6
 
7
7
  var InfoWindowContentContainer = function InfoWindowContentContainer(_ref) {
8
8
  var _items$0$mapDetails, _items$0$mapDetails2, _items$0$mapDetails3, _items$0$mapDetails4;
9
- var item = _ref.item,
10
- filterListingsByLocation = _ref.filterListingsByLocation;
9
+ var item = _ref.item;
10
+ _ref.filterListingsByLocation;
11
11
  var _useTrackEvent = useTrackEvent(),
12
12
  trackEvent = _useTrackEvent.trackEvent,
13
13
  eventTypes = _useTrackEvent.eventTypes;
@@ -16,7 +16,8 @@ var InfoWindowContentContainer = function InfoWindowContentContainer(_ref) {
16
16
  setMobileTab = _useMapList.setMobileTab,
17
17
  selectedFilters = _useMapList.selectedFilters,
18
18
  siteConfig = _useMapList.siteConfig;
19
- var fieldsShown = siteConfig.fieldsShown;
19
+ _useMapList.filteredListings;
20
+ var fieldsShown = siteConfig.locationFiltersShown;
20
21
  var items = item && item.items ? Object.values(item.items) : null;
21
22
  var addressParts = [(_items$0$mapDetails = items[0].mapDetails) === null || _items$0$mapDetails === void 0 || (_items$0$mapDetails = _items$0$mapDetails.address) === null || _items$0$mapDetails === void 0 ? void 0 : _items$0$mapDetails.street, (_items$0$mapDetails2 = items[0].mapDetails) === null || _items$0$mapDetails2 === void 0 || (_items$0$mapDetails2 = _items$0$mapDetails2.address) === null || _items$0$mapDetails2 === void 0 ? void 0 : _items$0$mapDetails2.city, (_items$0$mapDetails3 = items[0].mapDetails) === null || _items$0$mapDetails3 === void 0 || (_items$0$mapDetails3 = _items$0$mapDetails3.address) === null || _items$0$mapDetails3 === void 0 ? void 0 : _items$0$mapDetails3.state, (_items$0$mapDetails4 = items[0].mapDetails) === null || _items$0$mapDetails4 === void 0 || (_items$0$mapDetails4 = _items$0$mapDetails4.address) === null || _items$0$mapDetails4 === void 0 ? void 0 : _items$0$mapDetails4.zip];
22
23
  var fullAddress = addressParts.filter(Boolean).join(', ');
@@ -45,11 +46,15 @@ var InfoWindowContentContainer = function InfoWindowContentContainer(_ref) {
45
46
  filterChecked: items[0].fields.state
46
47
  });
47
48
  }
49
+ newFilters.entityId = _defineProperty({}, items[0].fields.entityId, true);
50
+ filters.push({
51
+ filterType: 'entityId',
52
+ filterChecked: items[0].fields.entityId
53
+ });
48
54
  trackEvent(eventTypes.VIEW_JOBS_AT_Location, {
49
55
  filtersApplied: filters
50
56
  });
51
57
  setSelectedFilters(newFilters);
52
- filterListingsByLocation();
53
58
  };
54
59
  return /*#__PURE__*/React__default.createElement(InfoWindowContent, {
55
60
  items: items,
@@ -1 +1 @@
1
- {"version":3,"file":"info-window-content-container.js","sources":["../../../../src/components/containers/maps/info-window-content-container.js"],"sourcesContent":["import React from 'react';\nimport InfoWindowContent from '~/components/modules/maps/info-window-content';\nimport { useMapList } from '~/contexts/mapListContext';\nimport { useTrackEvent } from '~/contexts/trackEventContext';\n\nconst InfoWindowContentContainer = ({\n\titem,\n\tfilterListingsByLocation\n}) => {\n\tconst { trackEvent, eventTypes } = useTrackEvent();\n\tconst { setSelectedFilters, setMobileTab, selectedFilters, siteConfig } = useMapList();\n\tconst fieldsShown = siteConfig.fieldsShown;\n\tlet items = item && item.items ? Object.values(item.items) : null;\n\n\tconst addressParts = [\n\t\titems[0].mapDetails?.address?.street,\n\t\titems[0].mapDetails?.address?.city,\n\t\titems[0].mapDetails?.address?.state,\n\t\titems[0].mapDetails?.address?.zip\n\t];\n\tconst fullAddress = addressParts.filter(Boolean).join(', ');\n\n\tconst applyFilters = () => {\n\t\tsetMobileTab(\"listTab\");\n\t\tconst newFilters = { ...selectedFilters };\n\t\tlet filters = [];\n\n\t\tif (fieldsShown.includes('cityState')) {\n\t\t\tnewFilters.cityState = { [items[0].fields.cityState]: true };\n\t\t\tfilters.push({ filterType: 'cityState', filterChecked: items[0].fields.cityState });\n\t\t}\n\n\t\tif (fieldsShown.includes('city')) {\n\t\t\tnewFilters.city = { [items[0].fields.city]: true };\n\t\t\tfilters.push({ filterType: 'city', filterChecked: items[0].fields.city });\n\t\t}\n\n\t\tif (fieldsShown.includes('state')) {\n\t\t\tnewFilters.state = { [items[0].fields.state]: true };\n\t\t\tfilters.push({ filterType: 'state', filterChecked: items[0].fields.state });\n\t\t}\n\n\t\ttrackEvent(eventTypes.VIEW_JOBS_AT_Location, { filtersApplied: filters });\n\t\tsetSelectedFilters(newFilters);\n\t\tfilterListingsByLocation();\n\t};\n\n\treturn <InfoWindowContent items={items} fullAddress={fullAddress} applyFilters={applyFilters} />;\n};\n\nexport default InfoWindowContentContainer;\n"],"names":["InfoWindowContentContainer","_ref","_items$0$mapDetails","_items$0$mapDetails2","_items$0$mapDetails3","_items$0$mapDetails4","item","filterListingsByLocation","_useTrackEvent","useTrackEvent","trackEvent","eventTypes","_useMapList","useMapList","setSelectedFilters","setMobileTab","selectedFilters","siteConfig","fieldsShown","items","Object","values","addressParts","mapDetails","address","street","city","state","zip","fullAddress","filter","Boolean","join","applyFilters","newFilters","_objectSpread","filters","includes","cityState","_defineProperty","fields","push","filterType","filterChecked","VIEW_JOBS_AT_Location","filtersApplied","React","createElement","InfoWindowContent"],"mappings":"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"}
1
+ {"version":3,"file":"info-window-content-container.js","sources":["../../../../src/components/containers/maps/info-window-content-container.js"],"sourcesContent":["import React from 'react';\nimport InfoWindowContent from '~/components/modules/maps/info-window-content';\nimport { useMapList } from '~/contexts/mapListContext';\nimport { useTrackEvent } from '~/contexts/trackEventContext';\n\nconst InfoWindowContentContainer = ({\n\titem,\n\tfilterListingsByLocation\n}) => {\n\tconst { trackEvent, eventTypes } = useTrackEvent();\n\tconst { setSelectedFilters, setMobileTab, selectedFilters, siteConfig, filteredListings } = useMapList();\n\tconst fieldsShown = siteConfig.locationFiltersShown;\n\tlet items = item && item.items ? Object.values(item.items) : null;\n\n\tconst addressParts = [\n\t\titems[0].mapDetails?.address?.street,\n\t\titems[0].mapDetails?.address?.city,\n\t\titems[0].mapDetails?.address?.state,\n\t\titems[0].mapDetails?.address?.zip\n\t];\n\tconst fullAddress = addressParts.filter(Boolean).join(', ');\n\n\tconst applyFilters = () => {\n\t\tsetMobileTab(\"listTab\");\n\t\tconst newFilters = { ...selectedFilters };\n\t\tlet filters = [];\n\n\t\tif (fieldsShown.includes('cityState')) {\n\t\t\tnewFilters.cityState = { [items[0].fields.cityState]: true };\n\t\t\tfilters.push({ filterType: 'cityState', filterChecked: items[0].fields.cityState });\n\t\t}\n\n\t\tif (fieldsShown.includes('city')) {\n\t\t\tnewFilters.city = { [items[0].fields.city]: true };\n\t\t\tfilters.push({ filterType: 'city', filterChecked: items[0].fields.city });\n\t\t}\n\n\t\tif (fieldsShown.includes('state')) {\n\t\t\tnewFilters.state = { [items[0].fields.state]: true };\n\t\t\tfilters.push({ filterType: 'state', filterChecked: items[0].fields.state });\n\t\t}\n\n\t\tnewFilters.entityId = { [items[0].fields.entityId]: true };\n\t\tfilters.push({ filterType: 'entityId', filterChecked: items[0].fields.entityId });\n\n\t\ttrackEvent(eventTypes.VIEW_JOBS_AT_Location, { filtersApplied: filters });\n\t\tsetSelectedFilters(newFilters);\n\t};\n\n\treturn <InfoWindowContent items={items} fullAddress={fullAddress} applyFilters={applyFilters} />;\n};\n\nexport default InfoWindowContentContainer;\n"],"names":["InfoWindowContentContainer","_ref","_items$0$mapDetails","_items$0$mapDetails2","_items$0$mapDetails3","_items$0$mapDetails4","item","filterListingsByLocation","_useTrackEvent","useTrackEvent","trackEvent","eventTypes","_useMapList","useMapList","setSelectedFilters","setMobileTab","selectedFilters","siteConfig","filteredListings","fieldsShown","locationFiltersShown","items","Object","values","addressParts","mapDetails","address","street","city","state","zip","fullAddress","filter","Boolean","join","applyFilters","newFilters","_objectSpread","filters","includes","cityState","_defineProperty","fields","push","filterType","filterChecked","entityId","VIEW_JOBS_AT_Location","filtersApplied","React","createElement","InfoWindowContent"],"mappings":"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"}
@@ -26,7 +26,7 @@ var MapMarkerContainer = function MapMarkerContainer(_ref) {
26
26
  trackEvent = _useTrackEvent.trackEvent,
27
27
  eventTypes = _useTrackEvent.eventTypes;
28
28
  var _useMapList = useMapList(),
29
- handleFilterListingsByLocation = _useMapList.handleFilterListingsByLocation;
29
+ resetEntityFilter = _useMapList.resetEntityFilter;
30
30
  useEffect(function () {
31
31
  markerRefs.current[item.id] = markerRef.current;
32
32
  }, []);
@@ -62,6 +62,7 @@ var MapMarkerContainer = function MapMarkerContainer(_ref) {
62
62
  onCloseClick: function onCloseClick() {
63
63
  setMapInteracted(true);
64
64
  setLocation(null);
65
+ resetEntityFilter();
65
66
  },
66
67
  options: {
67
68
  maxWidth: 400
@@ -71,10 +72,7 @@ var MapMarkerContainer = function MapMarkerContainer(_ref) {
71
72
  id: item.id,
72
73
  content: /*#__PURE__*/React__default.createElement(InfoWindowContentContainer, {
73
74
  item: item,
74
- commuteLocation: commuteLocation,
75
- filterListingsByLocation: function filterListingsByLocation() {
76
- return handleFilterListingsByLocation(selectedLocation);
77
- }
75
+ commuteLocation: commuteLocation
78
76
  })
79
77
  })));
80
78
  };
@@ -1 +1 @@
1
- {"version":3,"file":"map-marker-container.js","sources":["../../../../src/components/containers/maps/map-marker-container.js"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport MapMarker from '~/components/modules/maps/map-marker';\nimport { InfoWindow } from '@react-google-maps/api';\nimport InfoWindowCard from '~/components/modules/maps/info-window-card';\nimport InfoWindowContent from \"~/components/containers/maps/info-window-content-container\";\n\nimport { useMap } from \"~/contexts/mapContext\";\nimport { useMapList } from \"~/contexts/mapListContext\";\nimport { useTrackEvent } from '~/contexts/trackEventContext';\n\nconst MapMarkerContainer = ({\n\titem,\n\tmarkerRefs,\n\tinfoWindowClasses,\n\tmarkerClickHandler,\n\tclusterer,\n\tmarkerIconSelected,\n\tmarkerIcon,\n\tselectedLocation,\n\tsetMapInteracted\n}) => {\n\tconst { setLocation, commuteLocation } = useMap();\n\tconst isSelected = item.id === selectedLocation?.id;\n\tconst markerRef = useRef(null);\n\tconst { trackEvent, eventTypes } = useTrackEvent();\n\tconst { handleFilterListingsByLocation } = useMapList();\n\n\tuseEffect(() => {\n\t\tmarkerRefs.current[item.id] = markerRef.current;\n\t}, []);\n\n\tconst onMarkerClick = () => {\n\t\ttrackEvent(eventTypes.MAP_MARKER_CLICKED, {\n\t\t\tentityDisplayName: item.entityDisplayName,\n\t\t\tlat: item.latitude,\n\t\t\tlng: item.longitude,\n\t\t\ttravelTime: item.travelTime\n\t\t});\n\t\tsetMapInteracted(true);\n\t\tmarkerClickHandler(item);\n\t};\n\n\treturn (\n\t\t<MapMarker\n\t\t\tposition={{ lat: item.latitude, lng: item.longitude }}\n\t\t\ttitle={item.name}\n\t\t\ticon={isSelected ? markerIconSelected : markerIcon}\n\t\t\tzIndex={isSelected ? 9999 : 1}\n\t\t\tonLoad={marker => (markerRef.current = marker)}\n\t\t\tonClick={onMarkerClick}\n\t\t\tclusterer={clusterer}\n\t\t>\n\t\t\t{isSelected && (\n\t\t\t\t<InfoWindow\n\t\t\t\t\tposition={{ lat: item.latitude, lng: item.longitude }}\n\t\t\t\t\tanchor={markerRefs.current[item.id]}\n\t\t\t\t\tonCloseClick={() => {\n\t\t\t\t\t\tsetMapInteracted(true);\n\t\t\t\t\t\tsetLocation(null);\n\t\t\t\t\t}}\n\t\t\t\t\toptions={{ maxWidth: 400 }}\n\t\t\t\t>\n\t\t\t\t\t<InfoWindowCard\n\t\t\t\t\t\tclassName={infoWindowClasses}\n\t\t\t\t\t\tid={item.id}\n\t\t\t\t\t\tcontent={<InfoWindowContent\n\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\tcommuteLocation={commuteLocation}\n\t\t\t\t\t\t\tfilterListingsByLocation={() => handleFilterListingsByLocation(selectedLocation)}\n\t\t\t\t\t\t/>}\n\t\t\t\t\t/>\n\t\t\t\t</InfoWindow>\n\t\t\t)}\n\t\t</MapMarker>\n\t);\n};\n\nexport default MapMarkerContainer;\n"],"names":["MapMarkerContainer","_ref","item","markerRefs","infoWindowClasses","markerClickHandler","clusterer","markerIconSelected","markerIcon","selectedLocation","setMapInteracted","_useMap","useMap","setLocation","commuteLocation","isSelected","id","markerRef","useRef","_useTrackEvent","useTrackEvent","trackEvent","eventTypes","_useMapList","useMapList","handleFilterListingsByLocation","useEffect","current","onMarkerClick","MAP_MARKER_CLICKED","entityDisplayName","lat","latitude","lng","longitude","travelTime","React","createElement","MapMarker","position","title","name","icon","zIndex","onLoad","marker","onClick","InfoWindow","anchor","onCloseClick","options","maxWidth","InfoWindowCard","className","content","InfoWindowContent","filterListingsByLocation"],"mappings":"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"}
1
+ {"version":3,"file":"map-marker-container.js","sources":["../../../../src/components/containers/maps/map-marker-container.js"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport MapMarker from '~/components/modules/maps/map-marker';\nimport { InfoWindow } from '@react-google-maps/api';\nimport InfoWindowCard from '~/components/modules/maps/info-window-card';\nimport InfoWindowContent from \"~/components/containers/maps/info-window-content-container\";\n\nimport { useMap } from \"~/contexts/mapContext\";\nimport { useMapList } from \"~/contexts/mapListContext\";\nimport { useTrackEvent } from '~/contexts/trackEventContext';\n\nconst MapMarkerContainer = ({\n\titem,\n\tmarkerRefs,\n\tinfoWindowClasses,\n\tmarkerClickHandler,\n\tclusterer,\n\tmarkerIconSelected,\n\tmarkerIcon,\n\tselectedLocation,\n\tsetMapInteracted\n}) => {\n\tconst { setLocation, commuteLocation } = useMap();\n\tconst isSelected = item.id === selectedLocation?.id;\n\tconst markerRef = useRef(null);\n\tconst { trackEvent, eventTypes } = useTrackEvent();\n\tconst { resetEntityFilter } = useMapList();\n\n\tuseEffect(() => {\n\t\tmarkerRefs.current[item.id] = markerRef.current;\n\t}, []);\n\n\tconst onMarkerClick = () => {\n\t\ttrackEvent(eventTypes.MAP_MARKER_CLICKED, {\n\t\t\tentityDisplayName: item.entityDisplayName,\n\t\t\tlat: item.latitude,\n\t\t\tlng: item.longitude,\n\t\t\ttravelTime: item.travelTime\n\t\t});\n\t\tsetMapInteracted(true);\n\t\tmarkerClickHandler(item);\n\t};\n\n\treturn (\n\t\t<MapMarker\n\t\t\tposition={{ lat: item.latitude, lng: item.longitude }}\n\t\t\ttitle={item.name}\n\t\t\ticon={isSelected ? markerIconSelected : markerIcon}\n\t\t\tzIndex={isSelected ? 9999 : 1}\n\t\t\tonLoad={marker => (markerRef.current = marker)}\n\t\t\tonClick={onMarkerClick}\n\t\t\tclusterer={clusterer}\n\t\t>\n\t\t\t{isSelected && (\n\t\t\t\t<InfoWindow\n\t\t\t\t\tposition={{ lat: item.latitude, lng: item.longitude }}\n\t\t\t\t\tanchor={markerRefs.current[item.id]}\n\t\t\t\t\tonCloseClick={() => {\n\t\t\t\t\t\tsetMapInteracted(true);\n\t\t\t\t\t\tsetLocation(null);\n\t\t\t\t\t\tresetEntityFilter();\n\t\t\t\t\t}}\n\t\t\t\t\toptions={{ maxWidth: 400 }}\n\t\t\t\t>\n\t\t\t\t\t<InfoWindowCard\n\t\t\t\t\t\tclassName={infoWindowClasses}\n\t\t\t\t\t\tid={item.id}\n\t\t\t\t\t\tcontent={<InfoWindowContent\n\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\tcommuteLocation={commuteLocation}\n\t\t\t\t\t\t/>}\n\t\t\t\t\t/>\n\t\t\t\t</InfoWindow>\n\t\t\t)}\n\t\t</MapMarker>\n\t);\n};\n\nexport default MapMarkerContainer;\n"],"names":["MapMarkerContainer","_ref","item","markerRefs","infoWindowClasses","markerClickHandler","clusterer","markerIconSelected","markerIcon","selectedLocation","setMapInteracted","_useMap","useMap","setLocation","commuteLocation","isSelected","id","markerRef","useRef","_useTrackEvent","useTrackEvent","trackEvent","eventTypes","_useMapList","useMapList","resetEntityFilter","useEffect","current","onMarkerClick","MAP_MARKER_CLICKED","entityDisplayName","lat","latitude","lng","longitude","travelTime","React","createElement","MapMarker","position","title","name","icon","zIndex","onLoad","marker","onClick","InfoWindow","anchor","onCloseClick","options","maxWidth","InfoWindowCard","className","content","InfoWindowContent"],"mappings":"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"}
@@ -1,18 +1,20 @@
1
1
  import React__default from 'react';
2
2
 
3
3
  var InfoWindowContent = function InfoWindowContent(_ref) {
4
- var _items$0$mapDetails;
4
+ var _items$0$mapDetails, _items$0$mapDetails2, _items$0$mapDetails3;
5
5
  var items = _ref.items,
6
6
  fullAddress = _ref.fullAddress,
7
7
  applyFilters = _ref.applyFilters;
8
8
  if (!items || items.length < 0) {
9
9
  return null;
10
10
  }
11
+ var entityDisplayName = (_items$0$mapDetails = items[0].mapDetails) === null || _items$0$mapDetails === void 0 ? void 0 : _items$0$mapDetails.entityDisplayName;
12
+ console.log(items[0].mapDetails);
11
13
  return /*#__PURE__*/React__default.createElement("div", {
12
14
  className: "hc-flex-auto hc-p-2"
13
15
  }, /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement("h4", {
14
16
  className: "hc-text-lg hc-font-bold hc-leading-tight hc-mb-3"
15
- }, (_items$0$mapDetails = items[0].mapDetails) === null || _items$0$mapDetails === void 0 ? void 0 : _items$0$mapDetails.entityDisplayName), /*#__PURE__*/React__default.createElement("p", null, fullAddress), /*#__PURE__*/React__default.createElement("div", {
17
+ }, entityDisplayName), /*#__PURE__*/React__default.createElement("p", null, !entityDisplayName.includes((_items$0$mapDetails2 = items[0].mapDetails) === null || _items$0$mapDetails2 === void 0 || (_items$0$mapDetails2 = _items$0$mapDetails2.address) === null || _items$0$mapDetails2 === void 0 ? void 0 : _items$0$mapDetails2.street) && !entityDisplayName.icnludes((_items$0$mapDetails3 = items[0].mapDetails) === null || _items$0$mapDetails3 === void 0 || (_items$0$mapDetails3 = _items$0$mapDetails3.address) === null || _items$0$mapDetails3 === void 0 ? void 0 : _items$0$mapDetails3.zip) && fullAddress), /*#__PURE__*/React__default.createElement("div", {
16
18
  className: "hc-pt-2"
17
19
  }, /*#__PURE__*/React__default.createElement("button", {
18
20
  className: "hc-cursor-pointer hover:hc-opacity-70 hc-text-primary",
@@ -1 +1 @@
1
- {"version":3,"file":"info-window-content.js","sources":["../../../../src/components/modules/maps/info-window-content.js"],"sourcesContent":["import React from 'react';\n\nconst InfoWindowContent = ({\n\titems,\n\tfullAddress,\n\tapplyFilters\n}) => {\n\tif (!items || items.length < 0) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<div className=\"hc-flex-auto hc-p-2\">\n\t\t\t<div>\n\t\t\t\t<div>\n\t\t\t\t\t<h4 className=\"hc-text-lg hc-font-bold hc-leading-tight hc-mb-3\">\n\t\t\t\t\t\t{items[0].mapDetails?.entityDisplayName}\n\t\t\t\t\t</h4>\n\t\t\t\t\t<p>{fullAddress}</p>\n\t\t\t\t\t<div className=\"hc-pt-2\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName=\"hc-cursor-pointer hover:hc-opacity-70 hc-text-primary\"\n\t\t\t\t\t\t\tonClick={applyFilters}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{items.length > 1\n\t\t\t\t\t\t\t\t? `View All ${items.length} jobs at this location`\n\t\t\t\t\t\t\t\t: `View job at this location`}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default InfoWindowContent;\n"],"names":["InfoWindowContent","_ref","_items$0$mapDetails","items","fullAddress","applyFilters","length","React","createElement","className","mapDetails","entityDisplayName","onClick","concat"],"mappings":";;AAEA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAAC,IAAA,EAIjB;AAAA,EAAA,IAAAC,mBAAA,CAAA;AAAA,EAAA,IAHLC,KAAK,GAAAF,IAAA,CAALE,KAAK;IACLC,WAAW,GAAAH,IAAA,CAAXG,WAAW;IACXC,YAAY,GAAAJ,IAAA,CAAZI,YAAY,CAAA;EAEZ,IAAI,CAACF,KAAK,IAAIA,KAAK,CAACG,MAAM,GAAG,CAAC,EAAE;AAC/B,IAAA,OAAO,IAAI,CAAA;AACZ,GAAA;EACA,oBACCC,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,qBAAA;GACdF,eAAAA,cAAA,CAAAC,aAAA,CACCD,KAAAA,EAAAA,IAAAA,eAAAA,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA,IAAA,eACCD,cAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIC,IAAAA,SAAS,EAAC,kDAAA;GAAkDP,EAAAA,CAAAA,mBAAA,GAC9DC,KAAK,CAAC,CAAC,CAAC,CAACO,UAAU,MAAAR,IAAAA,IAAAA,mBAAA,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAA,CAAqBS,iBACnB,CAAC,eACLJ,cAAA,CAAAC,aAAA,CAAIJ,GAAAA,EAAAA,IAAAA,EAAAA,WAAe,CAAC,eACpBG,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,SAAA;GACdF,eAAAA,cAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACCC,IAAAA,SAAS,EAAC,uDAAuD;AACjEG,IAAAA,OAAO,EAAEP,YAAAA;AAAa,GAAA,EAErBF,KAAK,CAACG,MAAM,GAAG,CAAC,eAAAO,MAAA,CACFV,KAAK,CAACG,MAAM,EAEpB,wBAAA,CAAA,GAAA,2BAAA,CACJ,CACD,CACD,CACD,CAAC,CAAA;AAER;;;;"}
1
+ {"version":3,"file":"info-window-content.js","sources":["../../../../src/components/modules/maps/info-window-content.js"],"sourcesContent":["import React from 'react';\n\nconst InfoWindowContent = ({\n\titems,\n\tfullAddress,\n\tapplyFilters\n}) => {\n\tif (!items || items.length < 0) {\n\t\treturn null;\n\t}\n\tlet entityDisplayName = items[0].mapDetails?.entityDisplayName;\n\tconsole.log(items[0].mapDetails);\n\treturn (\n\t\t<div className=\"hc-flex-auto hc-p-2\">\n\t\t\t<div>\n\t\t\t\t<div>\n\t\t\t\t\t<h4 className=\"hc-text-lg hc-font-bold hc-leading-tight hc-mb-3\">\n\t\t\t\t\t\t{entityDisplayName}\n\t\t\t\t\t</h4>\n\t\t\t\t\t<p>{!entityDisplayName.includes(items[0].mapDetails?.address?.street) && !entityDisplayName.icnludes(items[0].mapDetails?.address?.zip) && fullAddress}</p>\n\t\t\t\t\t<div className=\"hc-pt-2\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName=\"hc-cursor-pointer hover:hc-opacity-70 hc-text-primary\"\n\t\t\t\t\t\t\tonClick={applyFilters}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{items.length > 1\n\t\t\t\t\t\t\t\t? `View All ${items.length} jobs at this location`\n\t\t\t\t\t\t\t\t: `View job at this location`}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default InfoWindowContent;\n"],"names":["InfoWindowContent","_ref","_items$0$mapDetails","_items$0$mapDetails2","_items$0$mapDetails3","items","fullAddress","applyFilters","length","entityDisplayName","mapDetails","console","log","React","createElement","className","includes","address","street","icnludes","zip","onClick","concat"],"mappings":";;AAEA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAAC,IAAA,EAIjB;AAAA,EAAA,IAAAC,mBAAA,EAAAC,oBAAA,EAAAC,oBAAA,CAAA;AAAA,EAAA,IAHLC,KAAK,GAAAJ,IAAA,CAALI,KAAK;IACLC,WAAW,GAAAL,IAAA,CAAXK,WAAW;IACXC,YAAY,GAAAN,IAAA,CAAZM,YAAY,CAAA;EAEZ,IAAI,CAACF,KAAK,IAAIA,KAAK,CAACG,MAAM,GAAG,CAAC,EAAE;AAC/B,IAAA,OAAO,IAAI,CAAA;AACZ,GAAA;AACA,EAAA,IAAIC,iBAAiB,GAAA,CAAAP,mBAAA,GAAGG,KAAK,CAAC,CAAC,CAAC,CAACK,UAAU,MAAAR,IAAAA,IAAAA,mBAAA,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAA,CAAqBO,iBAAiB,CAAA;EAC9DE,OAAO,CAACC,GAAG,CAACP,KAAK,CAAC,CAAC,CAAC,CAACK,UAAU,CAAC,CAAA;EAChC,oBACCG,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,qBAAA;GACdF,eAAAA,cAAA,CAAAC,aAAA,CACCD,KAAAA,EAAAA,IAAAA,eAAAA,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA,IAAA,eACCD,cAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIC,IAAAA,SAAS,EAAC,kDAAA;AAAkD,GAAA,EAC9DN,iBACE,CAAC,eACLI,cAAA,CAAAC,aAAA,CAAA,GAAA,EAAA,IAAA,EAAI,CAACL,iBAAiB,CAACO,QAAQ,CAAAb,CAAAA,oBAAA,GAACE,KAAK,CAAC,CAAC,CAAC,CAACK,UAAU,MAAAP,IAAAA,IAAAA,oBAAA,gBAAAA,oBAAA,GAAnBA,oBAAA,CAAqBc,OAAO,MAAAd,IAAAA,IAAAA,oBAAA,KAA5BA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAA,CAA8Be,MAAM,CAAC,IAAI,CAACT,iBAAiB,CAACU,QAAQ,CAAA,CAAAf,oBAAA,GAACC,KAAK,CAAC,CAAC,CAAC,CAACK,UAAU,MAAA,IAAA,IAAAN,oBAAA,KAAAA,KAAAA,CAAAA,IAAAA,CAAAA,oBAAA,GAAnBA,oBAAA,CAAqBa,OAAO,MAAAb,IAAAA,IAAAA,oBAAA,uBAA5BA,oBAAA,CAA8BgB,GAAG,CAAC,IAAId,WAAe,CAAC,eAC3JO,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,SAAA;GACdF,eAAAA,cAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACCC,IAAAA,SAAS,EAAC,uDAAuD;AACjEM,IAAAA,OAAO,EAAEd,YAAAA;AAAa,GAAA,EAErBF,KAAK,CAACG,MAAM,GAAG,CAAC,eAAAc,MAAA,CACFjB,KAAK,CAACG,MAAM,EAEpB,wBAAA,CAAA,GAAA,2BAAA,CACJ,CACD,CACD,CACD,CAAC,CAAA;AAER;;;;"}
@@ -151,6 +151,11 @@ const MapListProvider = ({ children, siteConfig, resetFilters, navigateToDetails
151
151
  const { filteredListings } = filterListingsByLocation(allListings, selectedLocation, listingEntities);
152
152
  setNewFilteredListings(filteredListings);
153
153
  };
154
+ const resetEntityFilter = () => {
155
+ let newFilters = { ...selectedFilters };
156
+ delete newFilters.entityId;
157
+ setSelectedFilters(newFilters);
158
+ };
154
159
  const handleSettingFavorites = (newFavorites) => {
155
160
  if (newFavorites == null) {
156
161
  localStorage.removeItem('favorites');
@@ -181,6 +186,7 @@ const MapListProvider = ({ children, siteConfig, resetFilters, navigateToDetails
181
186
  siteConfig,
182
187
  favorites,
183
188
  handleSettingFavorites,
189
+ resetEntityFilter,
184
190
  setFilterByFavorites,
185
191
  filterByFavorites,
186
192
  commuteLocation,
@@ -1 +1 @@
1
- {"version":3,"file":"mapListContext.js","sources":["../../src/contexts/mapListContext.tsx"],"sourcesContent":["import React, { createContext, useState, useEffect, useContext, ReactNode } from 'react';\r\n\r\nimport { generateFilterOptions, applyFilters, filterListingsByLocation } from '~/util/filterUtil';\r\nimport { getStorageObject, setStorageObject } from '~/util/localStorageUtil';\r\nimport { updateURLWithFilters, filtersFromURL } from '~/util/urlFilterUtil';\r\n\r\nimport { getListingEntities } from \"~/services/listingEntityService\";\r\nimport fetchListings from '~/services/listingAggregatorService';\r\n\r\nimport { Listing } from '~/types/Listings';\r\nimport { ListingEntity } from '~/types/ListingEntity';\r\nimport { Recruiter } from '~/types/Recruiter';\r\nimport { MapConfig, MapConfig as SiteConfig } from '~/types/config/MapConfig';\r\n\r\ninterface MapListContextProps {\r\n loading: boolean;\r\n allListings: Listing[];\r\n filteredListings: Listing[];\r\n mapItems: any;\r\n query: string | null;\r\n setNewFilteredListings: (filteredListings: Listing[]) => void;\r\n setQuery: (query: string | null) => void;\r\n listingEntities: Record<number, ListingEntity> | null;\r\n selectedFilters: Record<string, any>;\r\n setSelectedFilters: (filters: Record<string, any>) => void;\r\n filterOptions: any;\r\n recruiters: Record<number, Recruiter>;\r\n handleFilterListingsByLocation: (selectedLocation: any) => void;\r\n filterDialogIsOpen: boolean;\r\n setFilterDialogIsOpen: (isOpen: boolean) => void;\r\n setMobileTab: (tab: string) => void;\r\n mobileTab: string;\r\n siteConfig: SiteConfig;\r\n favorites: number[];\r\n handleSettingFavorites: (favorites: number[] | null) => void;\r\n setFilterByFavorites: (filter: boolean) => void;\r\n filterByFavorites: boolean;\r\n commuteLocation: any | null;\r\n setCommuteLocation: (location: any | null) => void;\r\n navigateToDetails: (id: number) => void;\r\n navigateToEasyApply: (id: number) => void;\r\n Link: React.ComponentType<any>;\r\n linkFormat: string;\r\n sortSetting: { field: string; type: string };\r\n setSortSetting: (setting: { field: string; type: string }) => void;\r\n trackEvent: (event: string) => void;\r\n}\r\n\r\nconst MapListContext = createContext<MapListContextProps | undefined>(undefined);\r\n\r\nexport const useMapList = () => {\r\n\tconst context = useContext(MapListContext);\r\n\tif (!context) {\r\n\t\tthrow new Error('useMapList must be used within a MapListProvider');\r\n\t}\r\n\treturn context;\r\n};\r\n\r\nconst getQuery = (): string | null => {\r\n\tlet query: string | null = null;\r\n\tif (typeof window !== 'undefined') {\r\n\t\tquery = localStorage.getItem('query');\r\n\t}\r\n\treturn query;\r\n};\r\n\r\ninterface MapListProviderProps {\r\n children: ReactNode;\r\n siteConfig: MapConfig;\r\n resetFilters: boolean;\r\n navigateToDetails: (id: number) => void;\r\n navigateToEasyApply: (id: number) => void;\r\n Link: React.ComponentType<any>;\r\n linkFormat: string;\r\n trackEvent: (event: string) => void;\r\n listings?: Listing[];\r\n setFiltersUrl?:boolean;\r\n}\r\n\r\nexport const MapListProvider: React.FC<MapListProviderProps> = ({\r\n\tchildren,\r\n\tsiteConfig,\r\n\tresetFilters,\r\n\tnavigateToDetails,\r\n\tnavigateToEasyApply,\r\n\tLink,\r\n\tlinkFormat,\r\n\ttrackEvent,\r\n\tlistings = [],\r\n\tsetFiltersUrl\r\n}) => {\r\n\tconst firstLoadFilters = () =>{\r\n\t\tlet urlFilters = filtersFromURL(window.location)?.filters;\r\n\t\treturn (setFiltersUrl === true && urlFilters && Object.keys(urlFilters).length > 0) ? urlFilters : getStorageObject('selectedFilters', {}) || {}\r\n\t}\r\n\tconst [allListings, setAllListings] = useState<Listing[]>(getStorageObject(\"listings\", listings) || []);\r\n\tconst [filteredListings, setFilteredListings] = useState<Listing[]>([]);\r\n\tconst [loading, setLoading] = useState<boolean>(false);\r\n\tconst [mapItems, setMapItems] = useState<any>(getStorageObject('mapItems', []) || []);\r\n\tconst [query, setQuery] = useState<string | null>(() => resetFilters ? null : getQuery());\r\n\tconst [sortSetting, setSortSetting] = useState<{ field: string; type: string }>(getStorageObject('sortSetting', { field: 'position', type: 'asc' }) || { field: 'position', type: 'asc' });\r\n\tconst [listingEntities, setListingEntities] = useState<Record<number, ListingEntity> | null>(getStorageObject(\"listingEntities\", null));\r\n\tconst [firstLoad, setFirstLoad] = useState<boolean>(true);\r\n\tconst [commuteLocation, setCommuteLocation] = useState<any | null>(getStorageObject('commuteLocation'));\r\n\tconst [selectedFilters, setSelectedFilters] = useState<Record<string, any>>(() => resetFilters ? {} : firstLoadFilters());\r\n\tconst [filterOptions, setFilterOptions] = useState<any>();\r\n\tconst [recruiters, setRecruiters] = useState<Record<number, Recruiter>>(getStorageObject(\"recruiters\", {}) || {});\r\n\tconst [filterDialogIsOpen, setFilterDialogIsOpen] = useState<boolean>(false);\r\n\tconst [mobileTab, setMobileTab] = useState<string>(\"listTab\");\r\n\tconst [favorites, setFavorites] = useState<number[]>([]);\r\n\tconst [filterByFavorites, setFilterByFavorites] = useState<boolean>(false);\r\n\r\n\tconst setNewFilteredListings = (filteredListings: Listing[]) => {\r\n\t\tsetFilteredListings(filteredListings);\r\n\t};\r\n\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!sortSetting) return;\r\n\t\tlocalStorage.setItem('sortSetting', JSON.stringify(sortSetting));\r\n\t\tsetNewFilteredListings(filteredListings);\r\n\t}, [sortSetting]);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst loadedFavorites = JSON.parse(localStorage.getItem('favorites') || '[]');\r\n\t\tsetFavorites(loadedFavorites);\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetStorageObject(\"commuteLocation\", commuteLocation);\r\n\t}, [commuteLocation]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!commuteLocation) return;\r\n\r\n\t\tasync function fetchEntities() {\r\n\t\t\tconst distinctEntityIds = [\r\n\t\t\t\t...new Set(allListings.map(listing => listing.entityId ?? -1))\r\n\t\t\t];\r\n\t\t\ttry {\r\n\t\t\t\tconst fetchedEntities = await getListingEntities(\r\n\t\t\t\t\tdistinctEntityIds,\r\n\t\t\t\t\t`${commuteLocation.lat}, ${commuteLocation.lng}`\r\n\t\t\t\t);\r\n\t\t\t\tsetListingEntities(fetchedEntities);\r\n\t\t\t\tconst newFilteredListings: Listing[] = [...filteredListings] ?? [];\r\n\t\t\t\tfor (let i = 0; i < allListings.length; i++) {\r\n\t\t\t\t\tconst listing = newFilteredListings[i];\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tlisting &&\r\n\t\t\t\t\t\tlisting.fields &&\r\n\t\t\t\t\t\tlisting.entityId !== undefined &&\r\n\t\t\t\t\t\tlisting.entityId !== -1\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tconst entityId = listing.entityId;\r\n\t\t\t\t\t\tconst travelTime = fetchedEntities[entityId]?.travelTime;\r\n\r\n\t\t\t\t\t\tif (travelTime !== undefined && listing.fields) {\r\n\t\t\t\t\t\t\tlisting.fields.travelTime = travelTime;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.error(\"Failed to fetch listing entities:\", error);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfetchEntities();\r\n\t}, [commuteLocation, allListings, siteConfig.companyId]);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst handleFetchListings = async () => {\r\n\t\t\tif (!getStorageObject('listings') ?? [].length) {\r\n\t\t\t\tsetLoading(true);\r\n\t\t\t}\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst {\r\n\t\t\t\t\tlistingsResult,\r\n\t\t\t\t\tfetchedRecruiters,\r\n\t\t\t\t\tfetchedEntities,\r\n\t\t\t\t\tdistinctItems\r\n\t\t\t\t} = await fetchListings(query ?? '', siteConfig, commuteLocation);\r\n\t\t\t\tsetAllListings(listingsResult);\r\n\t\t\t\tsetRecruiters(fetchedRecruiters);\r\n\t\t\t\tsetListingEntities(fetchedEntities);\r\n\t\t\t\tsetMapItems(distinctItems);\r\n\t\t\t\tsetStorageObject(\"mapItems\", distinctItems);\r\n\t\t\t\tsetStorageObject(\"listingEntities\", fetchedEntities);\r\n\t\t\t\tsetStorageObject(\"recruiters\", fetchedRecruiters);\r\n\t\t\t\tsetStorageObject(\"listings\", listingsResult);\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t}\r\n\t\t\tsetLoading(false);\r\n\t\t};\r\n\t\thandleFetchListings();\r\n\t}, [query, siteConfig]);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst processListings = () => {\r\n\t\t\tlet filteredListings: Listing[];\r\n\t\t\tlet tempSelectedFilters = selectedFilters;\r\n\t\t\tlet tempQuery = query;\r\n\r\n\t\t\tconst { mapItems, filteredListings: tempFilteredListings } = applyFilters(\r\n\t\t\t\tallListings,\r\n\t\t\t\ttempSelectedFilters,\r\n\t\t\t\ttempQuery,\r\n\t\t\t\tlistingEntities,\r\n\t\t\t\tfavorites,\r\n\t\t\t\tsiteConfig\r\n\t\t\t);\r\n\t\t\tfilteredListings = tempFilteredListings;\r\n\r\n\t\t\tif (filterByFavorites) {\r\n\t\t\t\tfilteredListings = filteredListings.filter((x: Listing) => favorites.includes(x.id));\r\n\t\t\t}\r\n\t\t\tsetNewFilteredListings(filteredListings);\r\n\t\t\tif (firstLoad && tempSelectedFilters) {\r\n\t\t\t\t// Update URL with filters if needed\r\n\t\t\t} else if (Object.keys(tempSelectedFilters).length === 0 && !firstLoad) {\r\n\t\t\t\tlocalStorage.removeItem('selectedFilters');\r\n\t\t\t} else if (!firstLoad) {\r\n\t\t\t\tsetStorageObject('selectedFilters', tempSelectedFilters);\r\n\t\t\t}\r\n\t\t\tif(setFiltersUrl === true)\r\n\t\t\t{\r\n\t\t\t\tupdateURLWithFilters(tempSelectedFilters, window.location, tempQuery);\r\n\t\t\t}\r\n\t\t\ttempQuery != null ? localStorage.setItem('query', tempQuery) : localStorage.removeItem('query');\r\n\t\t\tsetMapItems(mapItems);\r\n\r\n\t\t\tif (tempSelectedFilters) {\r\n\t\t\t\tconst keys = Object.keys(tempSelectedFilters);\r\n\t\t\t\tconst lastKey = keys[keys.length - 1];\r\n\t\t\t\tconst options = generateFilterOptions(\r\n\t\t\t\t\tfirstLoad ? allListings : filteredListings,\r\n\t\t\t\t\tallListings,\r\n\t\t\t\t\tsiteConfig,\r\n\t\t\t\t\tfilterOptions,\r\n\t\t\t\t\tlastKey,\r\n\t\t\t\t\tfavorites\r\n\t\t\t\t);\r\n\t\t\t\tif (options) {\r\n\t\t\t\t\tsetFilterOptions(options);\r\n\t\t\t\t\tif (firstLoad) setFirstLoad(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprocessListings();\r\n\t}, [selectedFilters, query, listingEntities, filterByFavorites, favorites]);\r\n\r\n\tconst handleFilterListingsByLocation = (selectedLocation: any) => {\r\n\t\tconst { filteredListings } = filterListingsByLocation(\r\n\t\t\tallListings,\r\n\t\t\tselectedLocation,\r\n\t\t\tlistingEntities\r\n\t\t);\r\n\t\tsetNewFilteredListings(filteredListings);\r\n\t};\r\n\r\n\tconst handleSettingFavorites = (newFavorites: number[] | null) => {\r\n\t\tif (newFavorites == null) {\r\n\t\t\tlocalStorage.removeItem('favorites');\r\n\t\t} else {\r\n\t\t\tsetFavorites(newFavorites);\r\n\t\t\tlocalStorage.setItem('favorites', JSON.stringify(newFavorites));\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t<MapListContext.Provider value={{\r\n\t\t\tloading,\r\n\t\t\tallListings,\r\n\t\t\tfilteredListings,\r\n\t\t\tmapItems,\r\n\t\t\tquery,\r\n\t\t\tsetNewFilteredListings,\r\n\t\t\tsetQuery,\r\n\t\t\tlistingEntities,\r\n\t\t\tselectedFilters,\r\n\t\t\tsetSelectedFilters,\r\n\t\t\tfilterOptions,\r\n\t\t\trecruiters,\r\n\t\t\thandleFilterListingsByLocation,\r\n\t\t\tfilterDialogIsOpen,\r\n\t\t\tsetFilterDialogIsOpen,\r\n\t\t\tsetMobileTab,\r\n\t\t\tmobileTab,\r\n\t\t\tsiteConfig,\r\n\t\t\tfavorites,\r\n\t\t\thandleSettingFavorites,\r\n\t\t\tsetFilterByFavorites,\r\n\t\t\tfilterByFavorites,\r\n\t\t\tcommuteLocation,\r\n\t\t\tsetCommuteLocation,\r\n\t\t\tnavigateToDetails,\r\n\t\t\tnavigateToEasyApply,\r\n\t\t\tLink,\r\n\t\t\tlinkFormat,\r\n\t\t\tsortSetting,\r\n\t\t\tsetSortSetting,\r\n\t\t\ttrackEvent\r\n\t\t}}>\r\n\t\t\t{children}\r\n\t\t</MapListContext.Provider>\r\n\t);\r\n};\r\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"mapListContext.js","sources":["../../src/contexts/mapListContext.tsx"],"sourcesContent":["import React, { createContext, useState, useEffect, useContext, ReactNode } from 'react';\n\nimport { generateFilterOptions, applyFilters, filterListingsByLocation } from '~/util/filterUtil';\nimport { getStorageObject, setStorageObject } from '~/util/localStorageUtil';\nimport { updateURLWithFilters, filtersFromURL } from '~/util/urlFilterUtil';\n\nimport { getListingEntities } from \"~/services/listingEntityService\";\nimport fetchListings from '~/services/listingAggregatorService';\n\nimport { Listing } from '~/types/Listings';\nimport { ListingEntity } from '~/types/ListingEntity';\nimport { Recruiter } from '~/types/Recruiter';\nimport { MapConfig, MapConfig as SiteConfig } from '~/types/config/MapConfig';\n\ninterface MapListContextProps {\n loading: boolean;\n allListings: Listing[];\n filteredListings: Listing[];\n mapItems: any;\n query: string | null;\n setNewFilteredListings: (filteredListings: Listing[]) => void;\n setQuery: (query: string | null) => void;\n listingEntities: Record<number, ListingEntity> | null;\n selectedFilters: Record<string, any>;\n setSelectedFilters: (filters: Record<string, any>) => void;\n filterOptions: any;\n recruiters: Record<number, Recruiter>;\n handleFilterListingsByLocation: (selectedLocation: any) => void;\n filterDialogIsOpen: boolean;\n setFilterDialogIsOpen: (isOpen: boolean) => void;\n setMobileTab: (tab: string) => void;\n mobileTab: string;\n siteConfig: SiteConfig;\n favorites: number[];\n resetEntityFilter: () => void;\n handleSettingFavorites: (favorites: number[] | null) => void;\n setFilterByFavorites: (filter: boolean) => void;\n filterByFavorites: boolean;\n commuteLocation: any | null;\n setCommuteLocation: (location: any | null) => void;\n navigateToDetails: (id: number) => void;\n navigateToEasyApply: (id: number) => void;\n Link: React.ComponentType<any>;\n linkFormat: string;\n sortSetting: { field: string; type: string };\n setSortSetting: (setting: { field: string; type: string }) => void;\n trackEvent: (event: string) => void;\n}\n\nconst MapListContext = createContext<MapListContextProps | undefined>(undefined);\n\nexport const useMapList = () => {\n\tconst context = useContext(MapListContext);\n\tif (!context) {\n\t\tthrow new Error('useMapList must be used within a MapListProvider');\n\t}\n\treturn context;\n};\n\nconst getQuery = (): string | null => {\n\tlet query: string | null = null;\n\tif (typeof window !== 'undefined') {\n\t\tquery = localStorage.getItem('query');\n\t}\n\treturn query;\n};\n\ninterface MapListProviderProps {\n children: ReactNode;\n siteConfig: MapConfig;\n resetFilters: boolean;\n navigateToDetails: (id: number) => void;\n navigateToEasyApply: (id: number) => void;\n Link: React.ComponentType<any>;\n linkFormat: string;\n trackEvent: (event: string) => void;\n listings?: Listing[];\n setFiltersUrl?:boolean;\n}\n\nexport const MapListProvider: React.FC<MapListProviderProps> = ({\n\tchildren,\n\tsiteConfig,\n\tresetFilters,\n\tnavigateToDetails,\n\tnavigateToEasyApply,\n\tLink,\n\tlinkFormat,\n\ttrackEvent,\n\tlistings = [],\n\tsetFiltersUrl\n}) => {\n\tconst firstLoadFilters = () =>{\n\t\tlet urlFilters = filtersFromURL(window.location)?.filters;\n\t\treturn (setFiltersUrl === true && urlFilters && Object.keys(urlFilters).length > 0) ? urlFilters : getStorageObject('selectedFilters', {}) || {}\n\t}\n\tconst [allListings, setAllListings] = useState<Listing[]>(getStorageObject(\"listings\", listings) || []);\n\tconst [filteredListings, setFilteredListings] = useState<Listing[]>([]);\n\tconst [loading, setLoading] = useState<boolean>(false);\n\tconst [mapItems, setMapItems] = useState<any>(getStorageObject('mapItems', []) || []);\n\tconst [query, setQuery] = useState<string | null>(() => resetFilters ? null : getQuery());\n\tconst [sortSetting, setSortSetting] = useState<{ field: string; type: string }>(getStorageObject('sortSetting', { field: 'position', type: 'asc' }) || { field: 'position', type: 'asc' });\n\tconst [listingEntities, setListingEntities] = useState<Record<number, ListingEntity> | null>(getStorageObject(\"listingEntities\", null));\n\tconst [firstLoad, setFirstLoad] = useState<boolean>(true);\n\tconst [commuteLocation, setCommuteLocation] = useState<any | null>(getStorageObject('commuteLocation'));\n\tconst [selectedFilters, setSelectedFilters] = useState<Record<string, any>>(() => resetFilters ? {} : firstLoadFilters());\n\tconst [filterOptions, setFilterOptions] = useState<any>();\n\tconst [recruiters, setRecruiters] = useState<Record<number, Recruiter>>(getStorageObject(\"recruiters\", {}) || {});\n\tconst [filterDialogIsOpen, setFilterDialogIsOpen] = useState<boolean>(false);\n\tconst [mobileTab, setMobileTab] = useState<string>(\"listTab\");\n\tconst [favorites, setFavorites] = useState<number[]>([]);\n\tconst [filterByFavorites, setFilterByFavorites] = useState<boolean>(false);\n\n\tconst setNewFilteredListings = (filteredListings: Listing[]) => {\n\t\tsetFilteredListings(filteredListings);\n\t};\n\n\n\n\tuseEffect(() => {\n\t\tif (!sortSetting) return;\n\t\tlocalStorage.setItem('sortSetting', JSON.stringify(sortSetting));\n\t\tsetNewFilteredListings(filteredListings);\n\t}, [sortSetting]);\n\n\tuseEffect(() => {\n\t\tconst loadedFavorites = JSON.parse(localStorage.getItem('favorites') || '[]');\n\t\tsetFavorites(loadedFavorites);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tsetStorageObject(\"commuteLocation\", commuteLocation);\n\t}, [commuteLocation]);\n\n\tuseEffect(() => {\n\t\tif (!commuteLocation) return;\n\n\t\tasync function fetchEntities() {\n\t\t\tconst distinctEntityIds = [\n\t\t\t\t...new Set(allListings.map(listing => listing.entityId ?? -1))\n\t\t\t];\n\t\t\ttry {\n\t\t\t\tconst fetchedEntities = await getListingEntities(\n\t\t\t\t\tdistinctEntityIds,\n\t\t\t\t\t`${commuteLocation.lat}, ${commuteLocation.lng}`\n\t\t\t\t);\n\t\t\t\tsetListingEntities(fetchedEntities);\n\t\t\t\tconst newFilteredListings: Listing[] = [...filteredListings] ?? [];\n\t\t\t\tfor (let i = 0; i < allListings.length; i++) {\n\t\t\t\t\tconst listing = newFilteredListings[i];\n\t\t\t\t\tif (\n\t\t\t\t\t\tlisting &&\n\t\t\t\t\t\tlisting.fields &&\n\t\t\t\t\t\tlisting.entityId !== undefined &&\n\t\t\t\t\t\tlisting.entityId !== -1\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst entityId = listing.entityId;\n\t\t\t\t\t\tconst travelTime = fetchedEntities[entityId]?.travelTime;\n\n\t\t\t\t\t\tif (travelTime !== undefined && listing.fields) {\n\t\t\t\t\t\t\tlisting.fields.travelTime = travelTime;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\"Failed to fetch listing entities:\", error);\n\t\t\t}\n\t\t}\n\n\t\tfetchEntities();\n\t}, [commuteLocation, allListings, siteConfig.companyId]);\n\n\tuseEffect(() => {\n\t\tconst handleFetchListings = async () => {\n\t\t\tif (!getStorageObject('listings') ?? [].length) {\n\t\t\t\tsetLoading(true);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst {\n\t\t\t\t\tlistingsResult,\n\t\t\t\t\tfetchedRecruiters,\n\t\t\t\t\tfetchedEntities,\n\t\t\t\t\tdistinctItems\n\t\t\t\t} = await fetchListings(query ?? '', siteConfig, commuteLocation);\n\t\t\t\tsetAllListings(listingsResult);\n\t\t\t\tsetRecruiters(fetchedRecruiters);\n\t\t\t\tsetListingEntities(fetchedEntities);\n\t\t\t\tsetMapItems(distinctItems);\n\t\t\t\tsetStorageObject(\"mapItems\", distinctItems);\n\t\t\t\tsetStorageObject(\"listingEntities\", fetchedEntities);\n\t\t\t\tsetStorageObject(\"recruiters\", fetchedRecruiters);\n\t\t\t\tsetStorageObject(\"listings\", listingsResult);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(error);\n\t\t\t}\n\t\t\tsetLoading(false);\n\t\t};\n\t\thandleFetchListings();\n\t}, [query, siteConfig]);\n\n\tuseEffect(() => {\n\t\tconst processListings = () => {\n\t\t\tlet filteredListings: Listing[];\n\t\t\tlet tempSelectedFilters = selectedFilters;\n\t\t\tlet tempQuery = query;\n\n\t\t\tconst { mapItems, filteredListings: tempFilteredListings } = applyFilters(\n\t\t\t\tallListings,\n\t\t\t\ttempSelectedFilters,\n\t\t\t\ttempQuery,\n\t\t\t\tlistingEntities,\n\t\t\t\tfavorites,\n\t\t\t\tsiteConfig\n\t\t\t);\n\t\t\tfilteredListings = tempFilteredListings;\n\n\t\t\tif (filterByFavorites) {\n\t\t\t\tfilteredListings = filteredListings.filter((x: Listing) => favorites.includes(x.id));\n\t\t\t}\n\t\t\tsetNewFilteredListings(filteredListings);\n\t\t\tif (firstLoad && tempSelectedFilters) {\n\t\t\t\t// Update URL with filters if needed\n\t\t\t} else if (Object.keys(tempSelectedFilters).length === 0 && !firstLoad) {\n\t\t\t\tlocalStorage.removeItem('selectedFilters');\n\t\t\t} else if (!firstLoad) {\n\t\t\t\tsetStorageObject('selectedFilters', tempSelectedFilters);\n\t\t\t}\n\t\t\tif(setFiltersUrl === true)\n\t\t\t{\n\t\t\t\tupdateURLWithFilters(tempSelectedFilters, window.location, tempQuery);\n\t\t\t}\n\t\t\ttempQuery != null ? localStorage.setItem('query', tempQuery) : localStorage.removeItem('query');\n\t\t\tsetMapItems(mapItems);\n\n\t\t\tif (tempSelectedFilters) {\n\t\t\t\tconst keys = Object.keys(tempSelectedFilters);\n\t\t\t\tconst lastKey = keys[keys.length - 1];\n\t\t\t\tconst options = generateFilterOptions(\n\t\t\t\t\tfirstLoad ? allListings : filteredListings,\n\t\t\t\t\tallListings,\n\t\t\t\t\tsiteConfig,\n\t\t\t\t\tfilterOptions,\n\t\t\t\t\tlastKey,\n\t\t\t\t\tfavorites\n\t\t\t\t);\n\t\t\t\tif (options) {\n\t\t\t\t\tsetFilterOptions(options);\n\t\t\t\t\tif (firstLoad) setFirstLoad(false);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tprocessListings();\n\t}, [selectedFilters, query, listingEntities, filterByFavorites, favorites]);\n\n\tconst handleFilterListingsByLocation = (selectedLocation: any) => {\n\t\tconst { filteredListings } = filterListingsByLocation(\n\t\t\tallListings,\n\t\t\tselectedLocation,\n\t\t\tlistingEntities\n\t\t);\n\t\tsetNewFilteredListings(filteredListings);\n\t};\n\n\tconst resetEntityFilter = () => {\n\t\tlet newFilters = {...selectedFilters};\n\t\tdelete newFilters.entityId;\n\t\tsetSelectedFilters(newFilters);\n\t}\n\n\tconst handleSettingFavorites = (newFavorites: number[] | null) => {\n\t\tif (newFavorites == null) {\n\t\t\tlocalStorage.removeItem('favorites');\n\t\t} else {\n\t\t\tsetFavorites(newFavorites);\n\t\t\tlocalStorage.setItem('favorites', JSON.stringify(newFavorites));\n\t\t}\n\t};\n\n\treturn (\n\t\t<MapListContext.Provider value={{\n\t\t\tloading,\n\t\t\tallListings,\n\t\t\tfilteredListings,\n\t\t\tmapItems,\n\t\t\tquery,\n\t\t\tsetNewFilteredListings,\n\t\t\tsetQuery,\n\t\t\tlistingEntities,\n\t\t\tselectedFilters,\n\t\t\tsetSelectedFilters,\n\t\t\tfilterOptions,\n\t\t\trecruiters,\n\t\t\thandleFilterListingsByLocation,\n\t\t\tfilterDialogIsOpen,\n\t\t\tsetFilterDialogIsOpen,\n\t\t\tsetMobileTab,\n\t\t\tmobileTab,\n\t\t\tsiteConfig,\n\t\t\tfavorites,\n\t\t\thandleSettingFavorites,\n\t\t\tresetEntityFilter,\n\t\t\tsetFilterByFavorites,\n\t\t\tfilterByFavorites,\n\t\t\tcommuteLocation,\n\t\t\tsetCommuteLocation,\n\t\t\tnavigateToDetails,\n\t\t\tnavigateToEasyApply,\n\t\t\tLink,\n\t\t\tlinkFormat,\n\t\t\tsortSetting,\n\t\t\tsetSortSetting,\n\t\t\ttrackEvent\n\t\t}}>\n\t\t\t{children}\n\t\t</MapListContext.Provider>\n\t);\n};\n"],"names":["React"],"mappings":"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"}
@@ -23,6 +23,7 @@ interface MapListContextProps {
23
23
  mobileTab: string;
24
24
  siteConfig: SiteConfig;
25
25
  favorites: number[];
26
+ resetEntityFilter: () => void;
26
27
  handleSettingFavorites: (favorites: number[] | null) => void;
27
28
  setFilterByFavorites: (filter: boolean) => void;
28
29
  filterByFavorites: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abcagency/hc-ui-components",
3
- "version": "1.3.28",
3
+ "version": "1.3.29",
4
4
  "description": "UI Components for HireControl",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -1,66 +1,69 @@
1
- import React, { memo } from 'react';
2
- import AccordionFilterItem from '~/components/modules/accordions/filterItem';
3
- import FilterItem from '~/components/containers/filter/filter-item-container';
4
- import ItemsPill from '~/components/modules/buttons/items-pill';
5
-
6
- const FilterItemContainer = ({
7
- filter,
8
- setDefaultValue,
9
- setSelectedFilters,
10
- selectedFilters,
11
- subcategoryRequireCategory = false
12
- }) => {
13
- const fieldKey = filter.id;
14
- const activeItemsCount = selectedFilters != null && selectedFilters[fieldKey]
15
- ? Object.keys(selectedFilters[fieldKey]).length
16
- : 0;
17
-
18
- const handleClearFilters = event => {
19
- event.stopPropagation();
20
- setSelectedFilters(prevFilters => {
21
- const updatedFilters = { ...prevFilters };
22
- if(subcategoryRequireCategory && fieldKey == 'categoryClass'){
23
- delete updatedFilters['category'];
24
- }
25
- delete updatedFilters[fieldKey];
26
- return updatedFilters;
27
- });
28
- };
29
-
30
- const header = (
31
- <>
32
- {filter.title}
33
- {activeItemsCount > 0 && (
34
- <ItemsPill
35
- activeItemsCount={activeItemsCount}
36
- onClick={handleClearFilters}
37
- />
38
- )}
39
- </>
40
- );
41
-
42
- const body = (
43
- <>
44
- {filter.items.sort().map(item => (
45
- <FilterItem
46
- key={item.name}
47
- item={item}
48
- field={filter.id}
49
- selectedFilters={selectedFilters}
50
- setSelectedFilters={setSelectedFilters}
51
- />
52
- ))}
53
- </>
54
- );
55
-
56
- return (
57
- <AccordionFilterItem
58
- id={filter.id}
59
- setDefaultValue={setDefaultValue}
60
- header={header}
61
- body={body}
62
- />
63
- );
64
- };
65
-
66
- export default memo(FilterItemContainer);
1
+ import React, { memo } from 'react';
2
+ import AccordionFilterItem from '~/components/modules/accordions/filterItem';
3
+ import FilterItem from '~/components/containers/filter/filter-item-container';
4
+ import ItemsPill from '~/components/modules/buttons/items-pill';
5
+
6
+ const FilterItemContainer = ({
7
+ filter,
8
+ setDefaultValue,
9
+ setSelectedFilters,
10
+ selectedFilters,
11
+ subcategoryRequireCategory = false
12
+ }) => {
13
+ const fieldKey = filter.id;
14
+ const activeItemsCount = selectedFilters != null && selectedFilters[fieldKey]
15
+ ? Object.keys(selectedFilters[fieldKey]).length
16
+ : 0;
17
+
18
+ const handleClearFilters = event => {
19
+ event.stopPropagation();
20
+ setSelectedFilters(prevFilters => {
21
+ const updatedFilters = { ...prevFilters };
22
+ if(subcategoryRequireCategory && fieldKey == 'categoryClass'){
23
+ delete updatedFilters['category'];
24
+ }
25
+ if(fieldKey == 'state' || fieldKey == 'city' || fieldKey == 'cityState'){
26
+ delete updatedFilters.entityId;
27
+ delete updatedFilters[fieldKey];
28
+ }
29
+ return updatedFilters;
30
+ });
31
+ };
32
+
33
+ const header = (
34
+ <>
35
+ {filter.title}
36
+ {activeItemsCount > 0 && (
37
+ <ItemsPill
38
+ activeItemsCount={activeItemsCount}
39
+ onClick={handleClearFilters}
40
+ />
41
+ )}
42
+ </>
43
+ );
44
+
45
+ const body = (
46
+ <>
47
+ {filter.items.sort().map(item => (
48
+ <FilterItem
49
+ key={item.name}
50
+ item={item}
51
+ field={filter.id}
52
+ selectedFilters={selectedFilters}
53
+ setSelectedFilters={setSelectedFilters}
54
+ />
55
+ ))}
56
+ </>
57
+ );
58
+
59
+ return (
60
+ <AccordionFilterItem
61
+ id={filter.id}
62
+ setDefaultValue={setDefaultValue}
63
+ header={header}
64
+ body={body}
65
+ />
66
+ );
67
+ };
68
+
69
+ export default memo(FilterItemContainer);
@@ -8,8 +8,8 @@ const InfoWindowContentContainer = ({
8
8
  filterListingsByLocation
9
9
  }) => {
10
10
  const { trackEvent, eventTypes } = useTrackEvent();
11
- const { setSelectedFilters, setMobileTab, selectedFilters, siteConfig } = useMapList();
12
- const fieldsShown = siteConfig.fieldsShown;
11
+ const { setSelectedFilters, setMobileTab, selectedFilters, siteConfig, filteredListings } = useMapList();
12
+ const fieldsShown = siteConfig.locationFiltersShown;
13
13
  let items = item && item.items ? Object.values(item.items) : null;
14
14
 
15
15
  const addressParts = [
@@ -40,9 +40,11 @@ const InfoWindowContentContainer = ({
40
40
  filters.push({ filterType: 'state', filterChecked: items[0].fields.state });
41
41
  }
42
42
 
43
+ newFilters.entityId = { [items[0].fields.entityId]: true };
44
+ filters.push({ filterType: 'entityId', filterChecked: items[0].fields.entityId });
45
+
43
46
  trackEvent(eventTypes.VIEW_JOBS_AT_Location, { filtersApplied: filters });
44
47
  setSelectedFilters(newFilters);
45
- filterListingsByLocation();
46
48
  };
47
49
 
48
50
  return <InfoWindowContent items={items} fullAddress={fullAddress} applyFilters={applyFilters} />;
@@ -23,7 +23,7 @@ const MapMarkerContainer = ({
23
23
  const isSelected = item.id === selectedLocation?.id;
24
24
  const markerRef = useRef(null);
25
25
  const { trackEvent, eventTypes } = useTrackEvent();
26
- const { handleFilterListingsByLocation } = useMapList();
26
+ const { resetEntityFilter } = useMapList();
27
27
 
28
28
  useEffect(() => {
29
29
  markerRefs.current[item.id] = markerRef.current;
@@ -57,6 +57,7 @@ const MapMarkerContainer = ({
57
57
  onCloseClick={() => {
58
58
  setMapInteracted(true);
59
59
  setLocation(null);
60
+ resetEntityFilter();
60
61
  }}
61
62
  options={{ maxWidth: 400 }}
62
63
  >
@@ -66,7 +67,6 @@ const MapMarkerContainer = ({
66
67
  content={<InfoWindowContent
67
68
  item={item}
68
69
  commuteLocation={commuteLocation}
69
- filterListingsByLocation={() => handleFilterListingsByLocation(selectedLocation)}
70
70
  />}
71
71
  />
72
72
  </InfoWindow>
@@ -1,35 +1,36 @@
1
- import React from 'react';
2
-
3
- const InfoWindowContent = ({
4
- items,
5
- fullAddress,
6
- applyFilters
7
- }) => {
8
- if (!items || items.length < 0) {
9
- return null;
10
- }
11
- return (
12
- <div className="hc-flex-auto hc-p-2">
13
- <div>
14
- <div>
15
- <h4 className="hc-text-lg hc-font-bold hc-leading-tight hc-mb-3">
16
- {items[0].mapDetails?.entityDisplayName}
17
- </h4>
18
- <p>{fullAddress}</p>
19
- <div className="hc-pt-2">
20
- <button
21
- className="hc-cursor-pointer hover:hc-opacity-70 hc-text-primary"
22
- onClick={applyFilters}
23
- >
24
- {items.length > 1
25
- ? `View All ${items.length} jobs at this location`
26
- : `View job at this location`}
27
- </button>
28
- </div>
29
- </div>
30
- </div>
31
- </div>
32
- );
33
- };
34
-
35
- export default InfoWindowContent;
1
+ import React from 'react';
2
+
3
+ const InfoWindowContent = ({
4
+ items,
5
+ fullAddress,
6
+ applyFilters
7
+ }) => {
8
+ if (!items || items.length < 0) {
9
+ return null;
10
+ }
11
+ let entityDisplayName = items[0].mapDetails?.entityDisplayName;
12
+ return (
13
+ <div className="hc-flex-auto hc-p-2">
14
+ <div>
15
+ <div>
16
+ <h4 className="hc-text-lg hc-font-bold hc-leading-tight hc-mb-3">
17
+ {entityDisplayName}
18
+ </h4>
19
+ <p>{!entityDisplayName.includes(items[0].mapDetails?.address?.street) && !entityDisplayName.includes(items[0].mapDetails?.address?.zip) && fullAddress}</p>
20
+ <div className="hc-pt-2">
21
+ <button
22
+ className="hc-cursor-pointer hover:hc-opacity-70 hc-text-primary"
23
+ onClick={applyFilters}
24
+ >
25
+ {items.length > 1
26
+ ? `View All ${items.length} jobs at this location`
27
+ : `View job at this location`}
28
+ </button>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ );
34
+ };
35
+
36
+ export default InfoWindowContent;
@@ -1,311 +1,319 @@
1
- import React, { createContext, useState, useEffect, useContext, ReactNode } from 'react';
2
-
3
- import { generateFilterOptions, applyFilters, filterListingsByLocation } from '~/util/filterUtil';
4
- import { getStorageObject, setStorageObject } from '~/util/localStorageUtil';
5
- import { updateURLWithFilters, filtersFromURL } from '~/util/urlFilterUtil';
6
-
7
- import { getListingEntities } from "~/services/listingEntityService";
8
- import fetchListings from '~/services/listingAggregatorService';
9
-
10
- import { Listing } from '~/types/Listings';
11
- import { ListingEntity } from '~/types/ListingEntity';
12
- import { Recruiter } from '~/types/Recruiter';
13
- import { MapConfig, MapConfig as SiteConfig } from '~/types/config/MapConfig';
14
-
15
- interface MapListContextProps {
16
- loading: boolean;
17
- allListings: Listing[];
18
- filteredListings: Listing[];
19
- mapItems: any;
20
- query: string | null;
21
- setNewFilteredListings: (filteredListings: Listing[]) => void;
22
- setQuery: (query: string | null) => void;
23
- listingEntities: Record<number, ListingEntity> | null;
24
- selectedFilters: Record<string, any>;
25
- setSelectedFilters: (filters: Record<string, any>) => void;
26
- filterOptions: any;
27
- recruiters: Record<number, Recruiter>;
28
- handleFilterListingsByLocation: (selectedLocation: any) => void;
29
- filterDialogIsOpen: boolean;
30
- setFilterDialogIsOpen: (isOpen: boolean) => void;
31
- setMobileTab: (tab: string) => void;
32
- mobileTab: string;
33
- siteConfig: SiteConfig;
34
- favorites: number[];
35
- handleSettingFavorites: (favorites: number[] | null) => void;
36
- setFilterByFavorites: (filter: boolean) => void;
37
- filterByFavorites: boolean;
38
- commuteLocation: any | null;
39
- setCommuteLocation: (location: any | null) => void;
40
- navigateToDetails: (id: number) => void;
41
- navigateToEasyApply: (id: number) => void;
42
- Link: React.ComponentType<any>;
43
- linkFormat: string;
44
- sortSetting: { field: string; type: string };
45
- setSortSetting: (setting: { field: string; type: string }) => void;
46
- trackEvent: (event: string) => void;
47
- }
48
-
49
- const MapListContext = createContext<MapListContextProps | undefined>(undefined);
50
-
51
- export const useMapList = () => {
52
- const context = useContext(MapListContext);
53
- if (!context) {
54
- throw new Error('useMapList must be used within a MapListProvider');
55
- }
56
- return context;
57
- };
58
-
59
- const getQuery = (): string | null => {
60
- let query: string | null = null;
61
- if (typeof window !== 'undefined') {
62
- query = localStorage.getItem('query');
63
- }
64
- return query;
65
- };
66
-
67
- interface MapListProviderProps {
68
- children: ReactNode;
69
- siteConfig: MapConfig;
70
- resetFilters: boolean;
71
- navigateToDetails: (id: number) => void;
72
- navigateToEasyApply: (id: number) => void;
73
- Link: React.ComponentType<any>;
74
- linkFormat: string;
75
- trackEvent: (event: string) => void;
76
- listings?: Listing[];
77
- setFiltersUrl?:boolean;
78
- }
79
-
80
- export const MapListProvider: React.FC<MapListProviderProps> = ({
81
- children,
82
- siteConfig,
83
- resetFilters,
84
- navigateToDetails,
85
- navigateToEasyApply,
86
- Link,
87
- linkFormat,
88
- trackEvent,
89
- listings = [],
90
- setFiltersUrl
91
- }) => {
92
- const firstLoadFilters = () =>{
93
- let urlFilters = filtersFromURL(window.location)?.filters;
94
- return (setFiltersUrl === true && urlFilters && Object.keys(urlFilters).length > 0) ? urlFilters : getStorageObject('selectedFilters', {}) || {}
95
- }
96
- const [allListings, setAllListings] = useState<Listing[]>(getStorageObject("listings", listings) || []);
97
- const [filteredListings, setFilteredListings] = useState<Listing[]>([]);
98
- const [loading, setLoading] = useState<boolean>(false);
99
- const [mapItems, setMapItems] = useState<any>(getStorageObject('mapItems', []) || []);
100
- const [query, setQuery] = useState<string | null>(() => resetFilters ? null : getQuery());
101
- const [sortSetting, setSortSetting] = useState<{ field: string; type: string }>(getStorageObject('sortSetting', { field: 'position', type: 'asc' }) || { field: 'position', type: 'asc' });
102
- const [listingEntities, setListingEntities] = useState<Record<number, ListingEntity> | null>(getStorageObject("listingEntities", null));
103
- const [firstLoad, setFirstLoad] = useState<boolean>(true);
104
- const [commuteLocation, setCommuteLocation] = useState<any | null>(getStorageObject('commuteLocation'));
105
- const [selectedFilters, setSelectedFilters] = useState<Record<string, any>>(() => resetFilters ? {} : firstLoadFilters());
106
- const [filterOptions, setFilterOptions] = useState<any>();
107
- const [recruiters, setRecruiters] = useState<Record<number, Recruiter>>(getStorageObject("recruiters", {}) || {});
108
- const [filterDialogIsOpen, setFilterDialogIsOpen] = useState<boolean>(false);
109
- const [mobileTab, setMobileTab] = useState<string>("listTab");
110
- const [favorites, setFavorites] = useState<number[]>([]);
111
- const [filterByFavorites, setFilterByFavorites] = useState<boolean>(false);
112
-
113
- const setNewFilteredListings = (filteredListings: Listing[]) => {
114
- setFilteredListings(filteredListings);
115
- };
116
-
117
-
118
-
119
- useEffect(() => {
120
- if (!sortSetting) return;
121
- localStorage.setItem('sortSetting', JSON.stringify(sortSetting));
122
- setNewFilteredListings(filteredListings);
123
- }, [sortSetting]);
124
-
125
- useEffect(() => {
126
- const loadedFavorites = JSON.parse(localStorage.getItem('favorites') || '[]');
127
- setFavorites(loadedFavorites);
128
- }, []);
129
-
130
- useEffect(() => {
131
- setStorageObject("commuteLocation", commuteLocation);
132
- }, [commuteLocation]);
133
-
134
- useEffect(() => {
135
- if (!commuteLocation) return;
136
-
137
- async function fetchEntities() {
138
- const distinctEntityIds = [
139
- ...new Set(allListings.map(listing => listing.entityId ?? -1))
140
- ];
141
- try {
142
- const fetchedEntities = await getListingEntities(
143
- distinctEntityIds,
144
- `${commuteLocation.lat}, ${commuteLocation.lng}`
145
- );
146
- setListingEntities(fetchedEntities);
147
- const newFilteredListings: Listing[] = [...filteredListings] ?? [];
148
- for (let i = 0; i < allListings.length; i++) {
149
- const listing = newFilteredListings[i];
150
- if (
151
- listing &&
152
- listing.fields &&
153
- listing.entityId !== undefined &&
154
- listing.entityId !== -1
155
- ) {
156
- const entityId = listing.entityId;
157
- const travelTime = fetchedEntities[entityId]?.travelTime;
158
-
159
- if (travelTime !== undefined && listing.fields) {
160
- listing.fields.travelTime = travelTime;
161
- }
162
- }
163
- }
164
- } catch (error) {
165
- console.error("Failed to fetch listing entities:", error);
166
- }
167
- }
168
-
169
- fetchEntities();
170
- }, [commuteLocation, allListings, siteConfig.companyId]);
171
-
172
- useEffect(() => {
173
- const handleFetchListings = async () => {
174
- if (!getStorageObject('listings') ?? [].length) {
175
- setLoading(true);
176
- }
177
-
178
- try {
179
- const {
180
- listingsResult,
181
- fetchedRecruiters,
182
- fetchedEntities,
183
- distinctItems
184
- } = await fetchListings(query ?? '', siteConfig, commuteLocation);
185
- setAllListings(listingsResult);
186
- setRecruiters(fetchedRecruiters);
187
- setListingEntities(fetchedEntities);
188
- setMapItems(distinctItems);
189
- setStorageObject("mapItems", distinctItems);
190
- setStorageObject("listingEntities", fetchedEntities);
191
- setStorageObject("recruiters", fetchedRecruiters);
192
- setStorageObject("listings", listingsResult);
193
- } catch (error) {
194
- console.log(error);
195
- }
196
- setLoading(false);
197
- };
198
- handleFetchListings();
199
- }, [query, siteConfig]);
200
-
201
- useEffect(() => {
202
- const processListings = () => {
203
- let filteredListings: Listing[];
204
- let tempSelectedFilters = selectedFilters;
205
- let tempQuery = query;
206
-
207
- const { mapItems, filteredListings: tempFilteredListings } = applyFilters(
208
- allListings,
209
- tempSelectedFilters,
210
- tempQuery,
211
- listingEntities,
212
- favorites,
213
- siteConfig
214
- );
215
- filteredListings = tempFilteredListings;
216
-
217
- if (filterByFavorites) {
218
- filteredListings = filteredListings.filter((x: Listing) => favorites.includes(x.id));
219
- }
220
- setNewFilteredListings(filteredListings);
221
- if (firstLoad && tempSelectedFilters) {
222
- // Update URL with filters if needed
223
- } else if (Object.keys(tempSelectedFilters).length === 0 && !firstLoad) {
224
- localStorage.removeItem('selectedFilters');
225
- } else if (!firstLoad) {
226
- setStorageObject('selectedFilters', tempSelectedFilters);
227
- }
228
- if(setFiltersUrl === true)
229
- {
230
- updateURLWithFilters(tempSelectedFilters, window.location, tempQuery);
231
- }
232
- tempQuery != null ? localStorage.setItem('query', tempQuery) : localStorage.removeItem('query');
233
- setMapItems(mapItems);
234
-
235
- if (tempSelectedFilters) {
236
- const keys = Object.keys(tempSelectedFilters);
237
- const lastKey = keys[keys.length - 1];
238
- const options = generateFilterOptions(
239
- firstLoad ? allListings : filteredListings,
240
- allListings,
241
- siteConfig,
242
- filterOptions,
243
- lastKey,
244
- favorites
245
- );
246
- if (options) {
247
- setFilterOptions(options);
248
- if (firstLoad) setFirstLoad(false);
249
- }
250
- }
251
- };
252
-
253
- processListings();
254
- }, [selectedFilters, query, listingEntities, filterByFavorites, favorites]);
255
-
256
- const handleFilterListingsByLocation = (selectedLocation: any) => {
257
- const { filteredListings } = filterListingsByLocation(
258
- allListings,
259
- selectedLocation,
260
- listingEntities
261
- );
262
- setNewFilteredListings(filteredListings);
263
- };
264
-
265
- const handleSettingFavorites = (newFavorites: number[] | null) => {
266
- if (newFavorites == null) {
267
- localStorage.removeItem('favorites');
268
- } else {
269
- setFavorites(newFavorites);
270
- localStorage.setItem('favorites', JSON.stringify(newFavorites));
271
- }
272
- };
273
-
274
- return (
275
- <MapListContext.Provider value={{
276
- loading,
277
- allListings,
278
- filteredListings,
279
- mapItems,
280
- query,
281
- setNewFilteredListings,
282
- setQuery,
283
- listingEntities,
284
- selectedFilters,
285
- setSelectedFilters,
286
- filterOptions,
287
- recruiters,
288
- handleFilterListingsByLocation,
289
- filterDialogIsOpen,
290
- setFilterDialogIsOpen,
291
- setMobileTab,
292
- mobileTab,
293
- siteConfig,
294
- favorites,
295
- handleSettingFavorites,
296
- setFilterByFavorites,
297
- filterByFavorites,
298
- commuteLocation,
299
- setCommuteLocation,
300
- navigateToDetails,
301
- navigateToEasyApply,
302
- Link,
303
- linkFormat,
304
- sortSetting,
305
- setSortSetting,
306
- trackEvent
307
- }}>
308
- {children}
309
- </MapListContext.Provider>
310
- );
311
- };
1
+ import React, { createContext, useState, useEffect, useContext, ReactNode } from 'react';
2
+
3
+ import { generateFilterOptions, applyFilters, filterListingsByLocation } from '~/util/filterUtil';
4
+ import { getStorageObject, setStorageObject } from '~/util/localStorageUtil';
5
+ import { updateURLWithFilters, filtersFromURL } from '~/util/urlFilterUtil';
6
+
7
+ import { getListingEntities } from "~/services/listingEntityService";
8
+ import fetchListings from '~/services/listingAggregatorService';
9
+
10
+ import { Listing } from '~/types/Listings';
11
+ import { ListingEntity } from '~/types/ListingEntity';
12
+ import { Recruiter } from '~/types/Recruiter';
13
+ import { MapConfig, MapConfig as SiteConfig } from '~/types/config/MapConfig';
14
+
15
+ interface MapListContextProps {
16
+ loading: boolean;
17
+ allListings: Listing[];
18
+ filteredListings: Listing[];
19
+ mapItems: any;
20
+ query: string | null;
21
+ setNewFilteredListings: (filteredListings: Listing[]) => void;
22
+ setQuery: (query: string | null) => void;
23
+ listingEntities: Record<number, ListingEntity> | null;
24
+ selectedFilters: Record<string, any>;
25
+ setSelectedFilters: (filters: Record<string, any>) => void;
26
+ filterOptions: any;
27
+ recruiters: Record<number, Recruiter>;
28
+ handleFilterListingsByLocation: (selectedLocation: any) => void;
29
+ filterDialogIsOpen: boolean;
30
+ setFilterDialogIsOpen: (isOpen: boolean) => void;
31
+ setMobileTab: (tab: string) => void;
32
+ mobileTab: string;
33
+ siteConfig: SiteConfig;
34
+ favorites: number[];
35
+ resetEntityFilter: () => void;
36
+ handleSettingFavorites: (favorites: number[] | null) => void;
37
+ setFilterByFavorites: (filter: boolean) => void;
38
+ filterByFavorites: boolean;
39
+ commuteLocation: any | null;
40
+ setCommuteLocation: (location: any | null) => void;
41
+ navigateToDetails: (id: number) => void;
42
+ navigateToEasyApply: (id: number) => void;
43
+ Link: React.ComponentType<any>;
44
+ linkFormat: string;
45
+ sortSetting: { field: string; type: string };
46
+ setSortSetting: (setting: { field: string; type: string }) => void;
47
+ trackEvent: (event: string) => void;
48
+ }
49
+
50
+ const MapListContext = createContext<MapListContextProps | undefined>(undefined);
51
+
52
+ export const useMapList = () => {
53
+ const context = useContext(MapListContext);
54
+ if (!context) {
55
+ throw new Error('useMapList must be used within a MapListProvider');
56
+ }
57
+ return context;
58
+ };
59
+
60
+ const getQuery = (): string | null => {
61
+ let query: string | null = null;
62
+ if (typeof window !== 'undefined') {
63
+ query = localStorage.getItem('query');
64
+ }
65
+ return query;
66
+ };
67
+
68
+ interface MapListProviderProps {
69
+ children: ReactNode;
70
+ siteConfig: MapConfig;
71
+ resetFilters: boolean;
72
+ navigateToDetails: (id: number) => void;
73
+ navigateToEasyApply: (id: number) => void;
74
+ Link: React.ComponentType<any>;
75
+ linkFormat: string;
76
+ trackEvent: (event: string) => void;
77
+ listings?: Listing[];
78
+ setFiltersUrl?:boolean;
79
+ }
80
+
81
+ export const MapListProvider: React.FC<MapListProviderProps> = ({
82
+ children,
83
+ siteConfig,
84
+ resetFilters,
85
+ navigateToDetails,
86
+ navigateToEasyApply,
87
+ Link,
88
+ linkFormat,
89
+ trackEvent,
90
+ listings = [],
91
+ setFiltersUrl
92
+ }) => {
93
+ const firstLoadFilters = () =>{
94
+ let urlFilters = filtersFromURL(window.location)?.filters;
95
+ return (setFiltersUrl === true && urlFilters && Object.keys(urlFilters).length > 0) ? urlFilters : getStorageObject('selectedFilters', {}) || {}
96
+ }
97
+ const [allListings, setAllListings] = useState<Listing[]>(getStorageObject("listings", listings) || []);
98
+ const [filteredListings, setFilteredListings] = useState<Listing[]>([]);
99
+ const [loading, setLoading] = useState<boolean>(false);
100
+ const [mapItems, setMapItems] = useState<any>(getStorageObject('mapItems', []) || []);
101
+ const [query, setQuery] = useState<string | null>(() => resetFilters ? null : getQuery());
102
+ const [sortSetting, setSortSetting] = useState<{ field: string; type: string }>(getStorageObject('sortSetting', { field: 'position', type: 'asc' }) || { field: 'position', type: 'asc' });
103
+ const [listingEntities, setListingEntities] = useState<Record<number, ListingEntity> | null>(getStorageObject("listingEntities", null));
104
+ const [firstLoad, setFirstLoad] = useState<boolean>(true);
105
+ const [commuteLocation, setCommuteLocation] = useState<any | null>(getStorageObject('commuteLocation'));
106
+ const [selectedFilters, setSelectedFilters] = useState<Record<string, any>>(() => resetFilters ? {} : firstLoadFilters());
107
+ const [filterOptions, setFilterOptions] = useState<any>();
108
+ const [recruiters, setRecruiters] = useState<Record<number, Recruiter>>(getStorageObject("recruiters", {}) || {});
109
+ const [filterDialogIsOpen, setFilterDialogIsOpen] = useState<boolean>(false);
110
+ const [mobileTab, setMobileTab] = useState<string>("listTab");
111
+ const [favorites, setFavorites] = useState<number[]>([]);
112
+ const [filterByFavorites, setFilterByFavorites] = useState<boolean>(false);
113
+
114
+ const setNewFilteredListings = (filteredListings: Listing[]) => {
115
+ setFilteredListings(filteredListings);
116
+ };
117
+
118
+
119
+
120
+ useEffect(() => {
121
+ if (!sortSetting) return;
122
+ localStorage.setItem('sortSetting', JSON.stringify(sortSetting));
123
+ setNewFilteredListings(filteredListings);
124
+ }, [sortSetting]);
125
+
126
+ useEffect(() => {
127
+ const loadedFavorites = JSON.parse(localStorage.getItem('favorites') || '[]');
128
+ setFavorites(loadedFavorites);
129
+ }, []);
130
+
131
+ useEffect(() => {
132
+ setStorageObject("commuteLocation", commuteLocation);
133
+ }, [commuteLocation]);
134
+
135
+ useEffect(() => {
136
+ if (!commuteLocation) return;
137
+
138
+ async function fetchEntities() {
139
+ const distinctEntityIds = [
140
+ ...new Set(allListings.map(listing => listing.entityId ?? -1))
141
+ ];
142
+ try {
143
+ const fetchedEntities = await getListingEntities(
144
+ distinctEntityIds,
145
+ `${commuteLocation.lat}, ${commuteLocation.lng}`
146
+ );
147
+ setListingEntities(fetchedEntities);
148
+ const newFilteredListings: Listing[] = [...filteredListings] ?? [];
149
+ for (let i = 0; i < allListings.length; i++) {
150
+ const listing = newFilteredListings[i];
151
+ if (
152
+ listing &&
153
+ listing.fields &&
154
+ listing.entityId !== undefined &&
155
+ listing.entityId !== -1
156
+ ) {
157
+ const entityId = listing.entityId;
158
+ const travelTime = fetchedEntities[entityId]?.travelTime;
159
+
160
+ if (travelTime !== undefined && listing.fields) {
161
+ listing.fields.travelTime = travelTime;
162
+ }
163
+ }
164
+ }
165
+ } catch (error) {
166
+ console.error("Failed to fetch listing entities:", error);
167
+ }
168
+ }
169
+
170
+ fetchEntities();
171
+ }, [commuteLocation, allListings, siteConfig.companyId]);
172
+
173
+ useEffect(() => {
174
+ const handleFetchListings = async () => {
175
+ if (!getStorageObject('listings') ?? [].length) {
176
+ setLoading(true);
177
+ }
178
+
179
+ try {
180
+ const {
181
+ listingsResult,
182
+ fetchedRecruiters,
183
+ fetchedEntities,
184
+ distinctItems
185
+ } = await fetchListings(query ?? '', siteConfig, commuteLocation);
186
+ setAllListings(listingsResult);
187
+ setRecruiters(fetchedRecruiters);
188
+ setListingEntities(fetchedEntities);
189
+ setMapItems(distinctItems);
190
+ setStorageObject("mapItems", distinctItems);
191
+ setStorageObject("listingEntities", fetchedEntities);
192
+ setStorageObject("recruiters", fetchedRecruiters);
193
+ setStorageObject("listings", listingsResult);
194
+ } catch (error) {
195
+ console.log(error);
196
+ }
197
+ setLoading(false);
198
+ };
199
+ handleFetchListings();
200
+ }, [query, siteConfig]);
201
+
202
+ useEffect(() => {
203
+ const processListings = () => {
204
+ let filteredListings: Listing[];
205
+ let tempSelectedFilters = selectedFilters;
206
+ let tempQuery = query;
207
+
208
+ const { mapItems, filteredListings: tempFilteredListings } = applyFilters(
209
+ allListings,
210
+ tempSelectedFilters,
211
+ tempQuery,
212
+ listingEntities,
213
+ favorites,
214
+ siteConfig
215
+ );
216
+ filteredListings = tempFilteredListings;
217
+
218
+ if (filterByFavorites) {
219
+ filteredListings = filteredListings.filter((x: Listing) => favorites.includes(x.id));
220
+ }
221
+ setNewFilteredListings(filteredListings);
222
+ if (firstLoad && tempSelectedFilters) {
223
+ // Update URL with filters if needed
224
+ } else if (Object.keys(tempSelectedFilters).length === 0 && !firstLoad) {
225
+ localStorage.removeItem('selectedFilters');
226
+ } else if (!firstLoad) {
227
+ setStorageObject('selectedFilters', tempSelectedFilters);
228
+ }
229
+ if(setFiltersUrl === true)
230
+ {
231
+ updateURLWithFilters(tempSelectedFilters, window.location, tempQuery);
232
+ }
233
+ tempQuery != null ? localStorage.setItem('query', tempQuery) : localStorage.removeItem('query');
234
+ setMapItems(mapItems);
235
+
236
+ if (tempSelectedFilters) {
237
+ const keys = Object.keys(tempSelectedFilters);
238
+ const lastKey = keys[keys.length - 1];
239
+ const options = generateFilterOptions(
240
+ firstLoad ? allListings : filteredListings,
241
+ allListings,
242
+ siteConfig,
243
+ filterOptions,
244
+ lastKey,
245
+ favorites
246
+ );
247
+ if (options) {
248
+ setFilterOptions(options);
249
+ if (firstLoad) setFirstLoad(false);
250
+ }
251
+ }
252
+ };
253
+
254
+ processListings();
255
+ }, [selectedFilters, query, listingEntities, filterByFavorites, favorites]);
256
+
257
+ const handleFilterListingsByLocation = (selectedLocation: any) => {
258
+ const { filteredListings } = filterListingsByLocation(
259
+ allListings,
260
+ selectedLocation,
261
+ listingEntities
262
+ );
263
+ setNewFilteredListings(filteredListings);
264
+ };
265
+
266
+ const resetEntityFilter = () => {
267
+ let newFilters = {...selectedFilters};
268
+ delete newFilters.entityId;
269
+ setSelectedFilters(newFilters);
270
+ }
271
+
272
+ const handleSettingFavorites = (newFavorites: number[] | null) => {
273
+ if (newFavorites == null) {
274
+ localStorage.removeItem('favorites');
275
+ } else {
276
+ setFavorites(newFavorites);
277
+ localStorage.setItem('favorites', JSON.stringify(newFavorites));
278
+ }
279
+ };
280
+
281
+ return (
282
+ <MapListContext.Provider value={{
283
+ loading,
284
+ allListings,
285
+ filteredListings,
286
+ mapItems,
287
+ query,
288
+ setNewFilteredListings,
289
+ setQuery,
290
+ listingEntities,
291
+ selectedFilters,
292
+ setSelectedFilters,
293
+ filterOptions,
294
+ recruiters,
295
+ handleFilterListingsByLocation,
296
+ filterDialogIsOpen,
297
+ setFilterDialogIsOpen,
298
+ setMobileTab,
299
+ mobileTab,
300
+ siteConfig,
301
+ favorites,
302
+ handleSettingFavorites,
303
+ resetEntityFilter,
304
+ setFilterByFavorites,
305
+ filterByFavorites,
306
+ commuteLocation,
307
+ setCommuteLocation,
308
+ navigateToDetails,
309
+ navigateToEasyApply,
310
+ Link,
311
+ linkFormat,
312
+ sortSetting,
313
+ setSortSetting,
314
+ trackEvent
315
+ }}>
316
+ {children}
317
+ </MapListContext.Provider>
318
+ );
319
+ };