@abcagency/hc-ui-components 1.3.27 → 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.
Files changed (47) hide show
  1. package/dist/components/HireControlMap.js +9 -1
  2. package/dist/components/HireControlMap.js.map +1 -1
  3. package/dist/components/containers/accordions/filter-item-container.js +4 -1
  4. package/dist/components/containers/accordions/filter-item-container.js.map +1 -1
  5. package/dist/components/containers/jobListing/listing-details-container.js.map +1 -1
  6. package/dist/components/containers/list/list-item/list-item-container.js.map +1 -1
  7. package/dist/components/containers/maps/info-window-content-container.js +9 -4
  8. package/dist/components/containers/maps/info-window-content-container.js.map +1 -1
  9. package/dist/components/containers/maps/map-container.js +34 -35
  10. package/dist/components/containers/maps/map-container.js.map +1 -1
  11. package/dist/components/containers/maps/map-list-container.js +2 -2
  12. package/dist/components/containers/maps/map-list-container.js.map +1 -1
  13. package/dist/components/containers/maps/map-marker-container.js +3 -5
  14. package/dist/components/containers/maps/map-marker-container.js.map +1 -1
  15. package/dist/components/modules/jobListing/listing-details.js +2 -23
  16. package/dist/components/modules/jobListing/listing-details.js.map +1 -1
  17. package/dist/components/modules/list/list-item/list-item.js.map +1 -1
  18. package/dist/components/modules/maps/info-window-content.js +4 -2
  19. package/dist/components/modules/maps/info-window-content.js.map +1 -1
  20. package/dist/components/modules/maps/map.js +4 -13
  21. package/dist/components/modules/maps/map.js.map +1 -1
  22. package/dist/contexts/mapListContext.js +6 -0
  23. package/dist/contexts/mapListContext.js.map +1 -1
  24. package/dist/contexts/themeContext.js +33 -0
  25. package/dist/contexts/themeContext.js.map +1 -0
  26. package/dist/styles/index.css +1 -1
  27. package/dist/types/components/modules/jobListing/listing-details.d.ts +1 -1
  28. package/dist/types/contexts/mapListContext.d.ts +1 -0
  29. package/dist/types/contexts/themeContext.d.ts +11 -0
  30. package/dist/util/urlFilterUtil.js +0 -10
  31. package/dist/util/urlFilterUtil.js.map +1 -1
  32. package/package.json +1 -1
  33. package/src/components/HireControlMap.js +58 -55
  34. package/src/components/containers/accordions/filter-item-container.js +69 -66
  35. package/src/components/containers/jobListing/listing-details-container.js +40 -40
  36. package/src/components/containers/list/list-item/list-item-container.js +43 -43
  37. package/src/components/containers/maps/info-window-content-container.js +5 -3
  38. package/src/components/containers/maps/map-container.js +37 -35
  39. package/src/components/containers/maps/map-list-container.js +1 -1
  40. package/src/components/containers/maps/map-marker-container.js +2 -2
  41. package/src/components/modules/jobListing/listing-details.js +109 -109
  42. package/src/components/modules/list/list-item/list-item.js +130 -130
  43. package/src/components/modules/maps/info-window-content.js +36 -35
  44. package/src/components/modules/maps/map.js +5 -17
  45. package/src/contexts/mapListContext.tsx +319 -311
  46. package/src/contexts/themeContext.js +40 -0
  47. package/src/styles/index.css +33 -24
@@ -1,12 +1,7 @@
1
1
  import { createForOfIteratorHelper as _createForOfIteratorHelper, slicedToArray as _slicedToArray } from '../_virtual/_rollupPluginBabelHelpers.js';
2
2
 
3
3
  var updateURLWithFilters = function updateURLWithFilters(filters, location, query) {
4
- console.log("updating with filters");
5
- console.log(filters);
6
- console.log(query);
7
4
  var searchParams = new URLSearchParams(location.search);
8
-
9
- // Remove keys with a '.' or those equal to 'query'
10
5
  var filteredSearchParams = new URLSearchParams();
11
6
  var _iterator = _createForOfIteratorHelper(searchParams.entries()),
12
7
  _step;
@@ -19,8 +14,6 @@ var updateURLWithFilters = function updateURLWithFilters(filters, location, quer
19
14
  filteredSearchParams.set(_key, value);
20
15
  }
21
16
  }
22
-
23
- // Add the query parameter if it exists
24
17
  } catch (err) {
25
18
  _iterator.e(err);
26
19
  } finally {
@@ -29,8 +22,6 @@ var updateURLWithFilters = function updateURLWithFilters(filters, location, quer
29
22
  if (query) {
30
23
  filteredSearchParams.set('query', query);
31
24
  }
32
-
33
- // Add the filters back to the search params
34
25
  for (var category in filters) {
35
26
  for (var filter in filters[category]) {
36
27
  var key = "".concat(category, ".").concat(filter);
@@ -40,7 +31,6 @@ var updateURLWithFilters = function updateURLWithFilters(filters, location, quer
40
31
  }
41
32
  }
42
33
  var newUrl = "".concat(location.pathname, "?").concat(filteredSearchParams.toString());
43
- console.log(newUrl);
44
34
  window.history.replaceState({}, '', newUrl);
45
35
  };
46
36
  var parseQueryParams = function parseQueryParams(search) {
@@ -1 +1 @@
1
- {"version":3,"file":"urlFilterUtil.js","sources":["../../src/util/urlFilterUtil.js"],"sourcesContent":["export const updateURLWithFilters = (filters, location, query) => {\n\tconsole.log(\"updating with filters\");\n\tconsole.log(filters);\n\tconsole.log(query);\n\n\tconst searchParams = new URLSearchParams(location.search);\n\n\t// Remove keys with a '.' or those equal to 'query'\n\tconst filteredSearchParams = new URLSearchParams();\n\tfor (const [key, value] of searchParams.entries()) {\n\t\tif (!key.includes('.') && key !== 'query') {\n\t\t\tfilteredSearchParams.set(key, value);\n\t\t}\n\t}\n\n\t// Add the query parameter if it exists\n\tif (query) {\n\t\tfilteredSearchParams.set('query', query);\n\t}\n\n\t// Add the filters back to the search params\n\tfor (const category in filters) {\n\t\tfor (const filter in filters[category]) {\n\t\t\tconst key = `${category}.${filter}`;\n\t\t\tif (filters[category][filter]) {\n\t\t\t\tfilteredSearchParams.set(key, 'true');\n\t\t\t}\n\t\t}\n\t}\n\n\tconst newUrl = `${location.pathname}?${filteredSearchParams.toString()}`;\n\tconsole.log(newUrl);\n\twindow.history.replaceState({}, '', newUrl);\n};\n\nfunction notifyParentOfUrlChange() {\n\tsetTimeout(() => {\n\t\tvar message = {\n\t\t\ttype: 'URL_CHANGE',\n\t\t\turl: window.location.href\n\t\t};\n\t\twindow.parent.postMessage(message, \"*\");\n\t}, 500);\n}\n\nexport const parseQueryParams = search => {\n\tconst queryParams = {};\n\tif (!search) return queryParams;\n\tlet queryString = search.split('?')[1];\n\tif (!queryString) {\n\t\treturn queryParams;\n\t}\n\tqueryString = queryString.replaceAll('+', ' ');\n\tqueryString.split('&').forEach(param => {\n\t\tconst [key, value] = param.split('=');\n\t\tqueryParams[decodeURIComponent(key)] = decodeURIComponent(value);\n\t});\n\treturn queryParams;\n};\n\nexport const filtersFromURL = location => {\n\tif (!location || !location.search) return;\n\tconst filters = {};\n\tlet queryParam = null;\n\tconst queryParams = parseQueryParams(location.search);\n\tif (!queryParams) return;\n\tObject.keys(queryParams).forEach(key => {\n\t\tif (key && key.includes('.')) {\n\t\t\tconst [category, filter] = key.split('.');\n\t\t\tif (!filters[category]) {\n\t\t\t\tfilters[category] = {};\n\t\t\t}\n\t\t\tfilters[category][filter] = queryParams[key] === 'true';\n\t\t} else if (key === 'query') {\n\t\t\tqueryParam = queryParams[key];\n\t\t}\n\t});\n\n\treturn { filters, query: queryParam };\n};\n\nexport const hasFiltersInURL = location => {\n\tif (!location || !location.search) return;\n\tconst queryParams = parseQueryParams(location.search);\n\tif (!queryParams) return;\n\treturn Object.keys(queryParams).some(key => key.includes('.'));\n};\n\nexport const hasQueryInUrl = location => {\n\tif (!location || !location.search) return;\n\tconst queryParams = parseQueryParams(location.search);\n\tif (!queryParams) return;\n\treturn Object.keys(queryParams).includes('query');\n};\n"],"names":["updateURLWithFilters","filters","location","query","console","log","searchParams","URLSearchParams","search","filteredSearchParams","_iterator","_createForOfIteratorHelper","entries","_step","s","n","done","_step$value","_slicedToArray","value","key","includes","set","err","e","f","category","filter","concat","newUrl","pathname","toString","window","history","replaceState","parseQueryParams","queryParams","queryString","split","replaceAll","forEach","param","_param$split","_param$split2","decodeURIComponent","filtersFromURL","queryParam","Object","keys","_key$split","_key$split2"],"mappings":";;AAAO,IAAMA,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIC,OAAO,EAAEC,QAAQ,EAAEC,KAAK,EAAK;AACjEC,EAAAA,OAAO,CAACC,GAAG,CAAC,uBAAuB,CAAC,CAAA;AACpCD,EAAAA,OAAO,CAACC,GAAG,CAACJ,OAAO,CAAC,CAAA;AACpBG,EAAAA,OAAO,CAACC,GAAG,CAACF,KAAK,CAAC,CAAA;EAElB,IAAMG,YAAY,GAAG,IAAIC,eAAe,CAACL,QAAQ,CAACM,MAAM,CAAC,CAAA;;AAEzD;AACA,EAAA,IAAMC,oBAAoB,GAAG,IAAIF,eAAe,EAAE,CAAA;EAAC,IAAAG,SAAA,GAAAC,0BAAA,CACxBL,YAAY,CAACM,OAAO,EAAE,CAAA;IAAAC,KAAA,CAAA;AAAA,EAAA,IAAA;IAAjD,KAAAH,SAAA,CAAAI,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAH,SAAA,CAAAK,CAAA,EAAAC,EAAAA,IAAA,GAAmD;AAAA,MAAA,IAAAC,WAAA,GAAAC,cAAA,CAAAL,KAAA,CAAAM,KAAA,EAAA,CAAA,CAAA;AAAvCC,QAAAA,IAAG,GAAAH,WAAA,CAAA,CAAA,CAAA;AAAEE,QAAAA,KAAK,GAAAF,WAAA,CAAA,CAAA,CAAA,CAAA;MACrB,IAAI,CAACG,IAAG,CAACC,QAAQ,CAAC,GAAG,CAAC,IAAID,IAAG,KAAK,OAAO,EAAE;AAC1CX,QAAAA,oBAAoB,CAACa,GAAG,CAACF,IAAG,EAAED,KAAK,CAAC,CAAA;AACrC,OAAA;AACD,KAAA;;AAEA;AAAA,GAAA,CAAA,OAAAI,GAAA,EAAA;IAAAb,SAAA,CAAAc,CAAA,CAAAD,GAAA,CAAA,CAAA;AAAA,GAAA,SAAA;AAAAb,IAAAA,SAAA,CAAAe,CAAA,EAAA,CAAA;AAAA,GAAA;AACA,EAAA,IAAItB,KAAK,EAAE;AACVM,IAAAA,oBAAoB,CAACa,GAAG,CAAC,OAAO,EAAEnB,KAAK,CAAC,CAAA;AACzC,GAAA;;AAEA;AACA,EAAA,KAAK,IAAMuB,QAAQ,IAAIzB,OAAO,EAAE;AAC/B,IAAA,KAAK,IAAM0B,MAAM,IAAI1B,OAAO,CAACyB,QAAQ,CAAC,EAAE;MACvC,IAAMN,GAAG,MAAAQ,MAAA,CAAMF,QAAQ,EAAAE,GAAAA,CAAAA,CAAAA,MAAA,CAAID,MAAM,CAAE,CAAA;AACnC,MAAA,IAAI1B,OAAO,CAACyB,QAAQ,CAAC,CAACC,MAAM,CAAC,EAAE;AAC9BlB,QAAAA,oBAAoB,CAACa,GAAG,CAACF,GAAG,EAAE,MAAM,CAAC,CAAA;AACtC,OAAA;AACD,KAAA;AACD,GAAA;AAEA,EAAA,IAAMS,MAAM,GAAA,EAAA,CAAAD,MAAA,CAAM1B,QAAQ,CAAC4B,QAAQ,EAAAF,GAAAA,CAAAA,CAAAA,MAAA,CAAInB,oBAAoB,CAACsB,QAAQ,EAAE,CAAE,CAAA;AACxE3B,EAAAA,OAAO,CAACC,GAAG,CAACwB,MAAM,CAAC,CAAA;EACnBG,MAAM,CAACC,OAAO,CAACC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAEL,MAAM,CAAC,CAAA;AAC5C,EAAC;IAYYM,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAG3B,MAAM,EAAI;EACzC,IAAM4B,WAAW,GAAG,EAAE,CAAA;AACtB,EAAA,IAAI,CAAC5B,MAAM,EAAE,OAAO4B,WAAW,CAAA;EAC/B,IAAIC,WAAW,GAAG7B,MAAM,CAAC8B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;EACtC,IAAI,CAACD,WAAW,EAAE;AACjB,IAAA,OAAOD,WAAW,CAAA;AACnB,GAAA;EACAC,WAAW,GAAGA,WAAW,CAACE,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;EAC9CF,WAAW,CAACC,KAAK,CAAC,GAAG,CAAC,CAACE,OAAO,CAAC,UAAAC,KAAK,EAAI;AACvC,IAAA,IAAAC,YAAA,GAAqBD,KAAK,CAACH,KAAK,CAAC,GAAG,CAAC;MAAAK,aAAA,GAAAzB,cAAA,CAAAwB,YAAA,EAAA,CAAA,CAAA;AAA9BtB,MAAAA,GAAG,GAAAuB,aAAA,CAAA,CAAA,CAAA;AAAExB,MAAAA,KAAK,GAAAwB,aAAA,CAAA,CAAA,CAAA,CAAA;IACjBP,WAAW,CAACQ,kBAAkB,CAACxB,GAAG,CAAC,CAAC,GAAGwB,kBAAkB,CAACzB,KAAK,CAAC,CAAA;AACjE,GAAC,CAAC,CAAA;AACF,EAAA,OAAOiB,WAAW,CAAA;AACnB,EAAC;IAEYS,cAAc,GAAG,SAAjBA,cAAcA,CAAG3C,QAAQ,EAAI;AACzC,EAAA,IAAI,CAACA,QAAQ,IAAI,CAACA,QAAQ,CAACM,MAAM,EAAE,OAAA;EACnC,IAAMP,OAAO,GAAG,EAAE,CAAA;EAClB,IAAI6C,UAAU,GAAG,IAAI,CAAA;AACrB,EAAA,IAAMV,WAAW,GAAGD,gBAAgB,CAACjC,QAAQ,CAACM,MAAM,CAAC,CAAA;EACrD,IAAI,CAAC4B,WAAW,EAAE,OAAA;EAClBW,MAAM,CAACC,IAAI,CAACZ,WAAW,CAAC,CAACI,OAAO,CAAC,UAAApB,GAAG,EAAI;IACvC,IAAIA,GAAG,IAAIA,GAAG,CAACC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC7B,MAAA,IAAA4B,UAAA,GAA2B7B,GAAG,CAACkB,KAAK,CAAC,GAAG,CAAC;QAAAY,WAAA,GAAAhC,cAAA,CAAA+B,UAAA,EAAA,CAAA,CAAA;AAAlCvB,QAAAA,QAAQ,GAAAwB,WAAA,CAAA,CAAA,CAAA;AAAEvB,QAAAA,MAAM,GAAAuB,WAAA,CAAA,CAAA,CAAA,CAAA;AACvB,MAAA,IAAI,CAACjD,OAAO,CAACyB,QAAQ,CAAC,EAAE;AACvBzB,QAAAA,OAAO,CAACyB,QAAQ,CAAC,GAAG,EAAE,CAAA;AACvB,OAAA;AACAzB,MAAAA,OAAO,CAACyB,QAAQ,CAAC,CAACC,MAAM,CAAC,GAAGS,WAAW,CAAChB,GAAG,CAAC,KAAK,MAAM,CAAA;AACxD,KAAC,MAAM,IAAIA,GAAG,KAAK,OAAO,EAAE;AAC3B0B,MAAAA,UAAU,GAAGV,WAAW,CAAChB,GAAG,CAAC,CAAA;AAC9B,KAAA;AACD,GAAC,CAAC,CAAA;EAEF,OAAO;AAAEnB,IAAAA,OAAO,EAAPA,OAAO;AAAEE,IAAAA,KAAK,EAAE2C,UAAAA;GAAY,CAAA;AACtC;;;;"}
1
+ {"version":3,"file":"urlFilterUtil.js","sources":["../../src/util/urlFilterUtil.js"],"sourcesContent":["export const updateURLWithFilters = (filters, location, query) => {\n\tconst searchParams = new URLSearchParams(location.search);\n\n\tconst filteredSearchParams = new URLSearchParams();\n\tfor (const [key, value] of searchParams.entries()) {\n\t\tif (!key.includes('.') && key !== 'query') {\n\t\t\tfilteredSearchParams.set(key, value);\n\t\t}\n\t}\n\n\tif (query) {\n\t\tfilteredSearchParams.set('query', query);\n\t}\n\n\tfor (const category in filters) {\n\t\tfor (const filter in filters[category]) {\n\t\t\tconst key = `${category}.${filter}`;\n\t\t\tif (filters[category][filter]) {\n\t\t\t\tfilteredSearchParams.set(key, 'true');\n\t\t\t}\n\t\t}\n\t}\n\n\tconst newUrl = `${location.pathname}?${filteredSearchParams.toString()}`;\n\twindow.history.replaceState({}, '', newUrl);\n};\n\nfunction notifyParentOfUrlChange() {\n\tsetTimeout(() => {\n\t\tvar message = {\n\t\t\ttype: 'URL_CHANGE',\n\t\t\turl: window.location.href\n\t\t};\n\t\twindow.parent.postMessage(message, \"*\");\n\t}, 500);\n}\n\nexport const parseQueryParams = search => {\n\tconst queryParams = {};\n\tif (!search) return queryParams;\n\tlet queryString = search.split('?')[1];\n\tif (!queryString) {\n\t\treturn queryParams;\n\t}\n\tqueryString = queryString.replaceAll('+', ' ');\n\tqueryString.split('&').forEach(param => {\n\t\tconst [key, value] = param.split('=');\n\t\tqueryParams[decodeURIComponent(key)] = decodeURIComponent(value);\n\t});\n\treturn queryParams;\n};\n\nexport const filtersFromURL = location => {\n\tif (!location || !location.search) return;\n\tconst filters = {};\n\tlet queryParam = null;\n\tconst queryParams = parseQueryParams(location.search);\n\tif (!queryParams) return;\n\tObject.keys(queryParams).forEach(key => {\n\t\tif (key && key.includes('.')) {\n\t\t\tconst [category, filter] = key.split('.');\n\t\t\tif (!filters[category]) {\n\t\t\t\tfilters[category] = {};\n\t\t\t}\n\t\t\tfilters[category][filter] = queryParams[key] === 'true';\n\t\t} else if (key === 'query') {\n\t\t\tqueryParam = queryParams[key];\n\t\t}\n\t});\n\n\treturn { filters, query: queryParam };\n};\n\nexport const hasFiltersInURL = location => {\n\tif (!location || !location.search) return;\n\tconst queryParams = parseQueryParams(location.search);\n\tif (!queryParams) return;\n\treturn Object.keys(queryParams).some(key => key.includes('.'));\n};\n\nexport const hasQueryInUrl = location => {\n\tif (!location || !location.search) return;\n\tconst queryParams = parseQueryParams(location.search);\n\tif (!queryParams) return;\n\treturn Object.keys(queryParams).includes('query');\n};\n"],"names":["updateURLWithFilters","filters","location","query","searchParams","URLSearchParams","search","filteredSearchParams","_iterator","_createForOfIteratorHelper","entries","_step","s","n","done","_step$value","_slicedToArray","value","key","includes","set","err","e","f","category","filter","concat","newUrl","pathname","toString","window","history","replaceState","parseQueryParams","queryParams","queryString","split","replaceAll","forEach","param","_param$split","_param$split2","decodeURIComponent","filtersFromURL","queryParam","Object","keys","_key$split","_key$split2"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abcagency/hc-ui-components",
3
- "version": "1.3.27",
3
+ "version": "1.3.29",
4
4
  "description": "UI Components for HireControl",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -14,6 +14,7 @@ import { getMapConfig } from '~/services/configService';
14
14
  import { setClientAuthKey } from '~/clientToken.js';
15
15
 
16
16
  import '../styles/index.css';
17
+ import { ThemeProvider } from '~/contexts/themeContext';
17
18
 
18
19
  const libraries = ['places'];
19
20
 
@@ -72,62 +73,64 @@ const HomeBody = ({ siteConfig, navigateToDetails, navigateToEasyApply, Link, li
72
73
 
73
74
  return (
74
75
  <TrackEventProvider trackEvent={trackEvent}>
75
- <MapListProvider
76
- siteConfig={siteConfig}
77
- resetFilters={resetFilters}
78
- avigateToDetails={navigateToDetails}
79
- navigateToEasyApply={navigateToEasyApply}
80
- Link={Link}
81
- linkFormat={linkFormat}
82
- listings={listings}
83
- setFiltersUrl={setFiltersUrl}
84
- >
85
- <MapProvider resetFilters={resetFilters}>
86
- <PlacesProvider
87
- placeMappings={siteConfig.pointsOfInterestConfig.placeMappings ?? {}}
88
- markerColors={{
89
- fillColor: siteConfig.colors.primary,
90
- strokeColor: siteConfig.colors.primaryDark,
91
- selectedFillColor: siteConfig.colors.secondary,
92
- selectedStrokeColor: siteConfig.colors.secondaryDark,
93
- placeMarkers: {
94
- colors: siteConfig.pointsOfInterestConfig.placeMarkerColors,
95
- size: siteConfig.pointsOfInterestConfig.placeMarkerSize
96
- }
97
- }}
98
- >
99
- <Grid
100
- as='section'
101
- id='job-search-interface'
102
- columns='md:hc-grid-cols-[1fr_2.5fr] lg:hc-grid-cols-[1fr_3.5fr]'
103
- gap='hc-gap-0'
104
- autoRows={false}
105
- className='hc-bundle hc-items-stretch hc-h-screen hc-min-h-[30rem] hc-divide-x hc-divide-uiAccent/20'
76
+ <ThemeProvider uiText={siteConfig.colors.uiText} uiAccent={siteConfig.colors.uiAccent} primary={siteConfig.colors.primary} primaryDark={siteConfig.colors.primaryDark} secondary={siteConfig.colors.secondary} secondaryDark={siteConfig.colors.secondaryDark}>
77
+ <MapListProvider
78
+ siteConfig={siteConfig}
79
+ resetFilters={resetFilters}
80
+ avigateToDetails={navigateToDetails}
81
+ navigateToEasyApply={navigateToEasyApply}
82
+ Link={Link}
83
+ linkFormat={linkFormat}
84
+ listings={listings}
85
+ setFiltersUrl={setFiltersUrl}
86
+ >
87
+ <MapProvider resetFilters={resetFilters}>
88
+ <PlacesProvider
89
+ placeMappings={siteConfig.pointsOfInterestConfig.placeMappings ?? {}}
90
+ markerColors={{
91
+ fillColor: siteConfig.colors.primary,
92
+ strokeColor: siteConfig.colors.primaryDark,
93
+ selectedFillColor: siteConfig.colors.secondary,
94
+ selectedStrokeColor: siteConfig.colors.secondaryDark,
95
+ placeMarkers: {
96
+ colors: siteConfig.pointsOfInterestConfig.placeMarkerColors,
97
+ size: siteConfig.pointsOfInterestConfig.placeMarkerSize
98
+ }
99
+ }}
106
100
  >
107
- <Grid.Item className='hc-bg-gray-100'>
108
- <Filter showMap={siteConfig.showMap} className='hc-hidden md:hc-block' />
109
- </Grid.Item>
110
- <MapList
111
- markerConfigs={{
112
- fillColor: siteConfig.colors.primary,
113
- strokeColor: siteConfig.colors.primaryDark,
114
- selectedFillColor: siteConfig.colors.secondary,
115
- selectedStrokeColor: siteConfig.colors.secondaryDark,
116
- placeMarkers: {
117
- colors: siteConfig.pointsOfInterestConfig.placeMarkerColors,
118
- size: siteConfig.pointsOfInterestConfig.placeMarkerSize
119
- }
120
- }}
121
- showMap={siteConfig.showMap}
122
- fieldsShown={siteConfig.fieldsShown}
123
- specialFeatures={siteConfig.specialFeatures}
124
- fieldNames={siteConfig.fieldNames}
125
- placeMappings={siteConfig.pointsOfInterestConfig.placeMappings ?? {}}
126
- />
127
- </Grid>
128
- </PlacesProvider>
129
- </MapProvider>
130
- </MapListProvider>
101
+ <Grid
102
+ as='section'
103
+ id='job-search-interface'
104
+ columns='md:hc-grid-cols-[1fr_2.5fr] lg:hc-grid-cols-[1fr_3.5fr]'
105
+ gap='hc-gap-0'
106
+ autoRows={false}
107
+ className='hc-bundle hc-items-stretch hc-h-screen hc-min-h-[30rem] hc-divide-x hc-divide-uiAccent/20'
108
+ >
109
+ <Grid.Item className='hc-bg-gray-100'>
110
+ <Filter showMap={siteConfig.showMap} className='hc-hidden md:hc-block' />
111
+ </Grid.Item>
112
+ <MapList
113
+ markerConfigs={{
114
+ fillColor: siteConfig.colors.primary,
115
+ strokeColor: siteConfig.colors.primaryDark,
116
+ selectedFillColor: siteConfig.colors.secondary,
117
+ selectedStrokeColor: siteConfig.colors.secondaryDark,
118
+ placeMarkers: {
119
+ colors: siteConfig.pointsOfInterestConfig.placeMarkerColors,
120
+ size: siteConfig.pointsOfInterestConfig.placeMarkerSize
121
+ }
122
+ }}
123
+ showMap={siteConfig.showMap}
124
+ fieldsShown={siteConfig.fieldsShown}
125
+ specialFeatures={siteConfig.specialFeatures}
126
+ fieldNames={siteConfig.fieldNames}
127
+ placeMappings={siteConfig.pointsOfInterestConfig.placeMappings ?? {}}
128
+ />
129
+ </Grid>
130
+ </PlacesProvider>
131
+ </MapProvider>
132
+ </MapListProvider>
133
+ </ThemeProvider>
131
134
  </TrackEventProvider>
132
135
  );
133
136
  };
@@ -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);
@@ -1,40 +1,40 @@
1
- import React from 'react';
2
- import { useMap } from '~/contexts/mapContext';
3
- import { useMapList } from '~/contexts/mapListContext';
4
- import { useTrackEvent } from '~/contexts/trackEventContext';
5
- import ListingDetails from '~/components/modules/jobListing/listing-details';
6
-
7
- const ListingDetailsContainer = ({ item, recruiter }) => {
8
- const { trackEvent, eventTypes } = useTrackEvent();
9
- const { travelTime } = useMap();
10
- const { siteConfig, navigateToDetails, navigateToEasyApply, Link, linkFormat } = useMapList();
11
-
12
- const {
13
- useDetailsPostMessage,
14
- useApplyDialog,
15
- internalApplyLink,
16
- companyName,
17
- jobsDomain
18
- } = siteConfig;
19
-
20
- return (
21
- <ListingDetails
22
- item={item}
23
- recruiter={recruiter}
24
- travelTime={travelTime}
25
- useDetailsPostMessage={useDetailsPostMessage}
26
- navigateToDetails={navigateToDetails}
27
- navigateToEasyApply={navigateToEasyApply}
28
- Link={Link}
29
- linkFormat={linkFormat}
30
- useApplyDialog={useApplyDialog}
31
- internalApplyLink={internalApplyLink}
32
- companyName={companyName}
33
- jobsDomain={jobsDomain}
34
- trackEvent={trackEvent}
35
- eventTypes={eventTypes}
36
- />
37
- );
38
- };
39
-
40
- export default ListingDetailsContainer;
1
+ import React from 'react';
2
+ import { useMap } from '~/contexts/mapContext';
3
+ import { useMapList } from '~/contexts/mapListContext';
4
+ import { useTrackEvent } from '~/contexts/trackEventContext';
5
+ import ListingDetails from '~/components/modules/jobListing/listing-details';
6
+
7
+ const ListingDetailsContainer = ({ item, recruiter }) => {
8
+ const { trackEvent, eventTypes } = useTrackEvent();
9
+ const { travelTime } = useMap();
10
+ const { siteConfig, navigateToDetails, navigateToEasyApply, Link, linkFormat } = useMapList();
11
+
12
+ const {
13
+ useDetailsPostMessage,
14
+ useApplyDialog,
15
+ internalApplyLink,
16
+ companyName,
17
+ jobsDomain
18
+ } = siteConfig;
19
+
20
+ return (
21
+ <ListingDetails
22
+ item={item}
23
+ recruiter={recruiter}
24
+ travelTime={travelTime}
25
+ useDetailsPostMessage={useDetailsPostMessage}
26
+ navigateToDetails={navigateToDetails}
27
+ navigateToEasyApply={navigateToEasyApply}
28
+ Link={Link}
29
+ linkFormat={linkFormat}
30
+ useApplyDialog={useApplyDialog}
31
+ internalApplyLink={internalApplyLink}
32
+ companyName={companyName}
33
+ jobsDomain={jobsDomain}
34
+ trackEvent={trackEvent}
35
+ eventTypes={eventTypes}
36
+ />
37
+ );
38
+ };
39
+
40
+ export default ListingDetailsContainer;
@@ -1,43 +1,43 @@
1
- import React, { useState } from 'react';
2
- import { useMapList } from '~/contexts/mapListContext';
3
- import { useTrackEvent } from '~/contexts/trackEventContext';
4
- import ListItem from '~/components/modules/list/list-item/list-item';
5
-
6
- const ListItemContainer = ({
7
- isActive,
8
- showMap,
9
- item,
10
- itemRefs,
11
- fieldsShown,
12
- specialFeatures,
13
- className,
14
- bodyClassName,
15
- onItemSelected,
16
- ...props
17
- }) => {
18
- const { siteConfig, favorites, handleSettingFavorites, setMobileTab } = useMapList();
19
- const { trackEvent, eventTypes } = useTrackEvent();
20
-
21
- return (
22
- <ListItem
23
- isActive={isActive}
24
- showMap={showMap}
25
- item={item}
26
- itemRefs={itemRefs}
27
- fieldsShown={fieldsShown}
28
- specialFeatures={specialFeatures}
29
- className={isActive ? "!hc-border-secondary hc-border hc-border-b-0" : "hc-opacity-85"}
30
- bodyClassName={bodyClassName}
31
- onItemSelected={onItemSelected}
32
- setMobileTab={setMobileTab}
33
- siteConfig={siteConfig}
34
- trackEvent={trackEvent}
35
- eventTypes={eventTypes}
36
- favorites={favorites}
37
- handleSettingFavorites={handleSettingFavorites}
38
- {...props}
39
- />
40
- );
41
- };
42
-
43
- export default ListItemContainer;
1
+ import React, { useState } from 'react';
2
+ import { useMapList } from '~/contexts/mapListContext';
3
+ import { useTrackEvent } from '~/contexts/trackEventContext';
4
+ import ListItem from '~/components/modules/list/list-item/list-item';
5
+
6
+ const ListItemContainer = ({
7
+ isActive,
8
+ showMap,
9
+ item,
10
+ itemRefs,
11
+ fieldsShown,
12
+ specialFeatures,
13
+ className,
14
+ bodyClassName,
15
+ onItemSelected,
16
+ ...props
17
+ }) => {
18
+ const { siteConfig, favorites, handleSettingFavorites, setMobileTab } = useMapList();
19
+ const { trackEvent, eventTypes } = useTrackEvent();
20
+
21
+ return (
22
+ <ListItem
23
+ isActive={isActive}
24
+ showMap={showMap}
25
+ item={item}
26
+ itemRefs={itemRefs}
27
+ fieldsShown={fieldsShown}
28
+ specialFeatures={specialFeatures}
29
+ className={isActive ? "!hc-border-secondary hc-border hc-border-b-0" : "hc-opacity-85"}
30
+ bodyClassName={bodyClassName}
31
+ onItemSelected={onItemSelected}
32
+ setMobileTab={setMobileTab}
33
+ siteConfig={siteConfig}
34
+ trackEvent={trackEvent}
35
+ eventTypes={eventTypes}
36
+ favorites={favorites}
37
+ handleSettingFavorites={handleSettingFavorites}
38
+ {...props}
39
+ />
40
+ );
41
+ };
42
+
43
+ export default ListItemContainer;
@@ -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} />;
@@ -1,4 +1,3 @@
1
- /* eslint-disable no-undef */
2
1
  import React, { useEffect, useRef } from 'react';
3
2
 
4
3
  import MapMarker from "~/components/containers/maps/map-marker-container";
@@ -11,17 +10,18 @@ import { useMapList } from "~/contexts/mapListContext";
11
10
  import { markerIconSelected, markerIcon, pinIcon } from "~/util/mapIconUtil";
12
11
 
13
12
  import Map from "~/components/modules/maps/map";
13
+ import { MarkerClustererF } from "@react-google-maps/api";
14
+ import { clusterOptions } from "~/util/mapUtil";
14
15
 
15
16
  const MapContainer = ({
16
17
  markerConfigs,
17
18
  infoWindowClasses,
18
- clusterGridSize = 60
19
+ clusterGridSize = 10
19
20
  }) => {
20
21
  const {
21
22
  location,
22
23
  zoom,
23
24
  center,
24
- commuteLocation,
25
25
  selectLocationEntity,
26
26
  setLocation,
27
27
  mapInteracted,
@@ -151,33 +151,6 @@ const MapContainer = ({
151
151
  strokeColor: markerConfigs.strokeColor
152
152
  });
153
153
 
154
- const mapMarkers = mapItems.map(item => (
155
- <MapMarker
156
- key={item.id}
157
- item={item}
158
- selectedLocation={location}
159
- markerRefs={markerRefs}
160
- infoWindowClasses={infoWindowClasses}
161
- setSelectedLocation={setLocation}
162
- markerClickHandler={markerClickHandler}
163
- markerIcon={markerIcon(markerConfigs)}
164
- markerIconSelected={markerIconSelected(markerConfigs)}
165
- setMapInteracted={setMapInteracted}
166
- />
167
- ));
168
-
169
- const placeMarkers = poiMarkers.markers.map((marker, index) => (
170
- <PlaceMarker
171
- key={`marker-${marker.title}-${index}`}
172
- marker={marker}
173
- index={index}
174
- selectedPlaceMarker={selectedPlaceMarker}
175
- placesWindow={placesWindow}
176
- setPlacesWindow={setPlacesWindow}
177
- setSelectedPlaceMarker={setSelectedPlaceMarker}
178
- />
179
- ));
180
-
181
154
  return (
182
155
  <Map
183
156
  zoom={zoom}
@@ -185,10 +158,6 @@ const MapContainer = ({
185
158
  mapContainerRef={mapContainerRef}
186
159
  onLoad={onLoad}
187
160
  onIdle={onIdle}
188
- clusterGridSize={clusterGridSize}
189
- markerConfigs={markerConfigs}
190
- mapMarkers={mapMarkers}
191
- placeMarkers={placeMarkers}
192
161
  mapInteracted={mapInteracted}
193
162
  pinIconUrl={pinIconUrl}
194
163
  setMapInteracted={setMapInteracted}
@@ -197,7 +166,40 @@ const MapContainer = ({
197
166
  setQuery={setQuery}
198
167
  filteredListingsLength={filteredListings.length}
199
168
  setSelectedFilters={setSelectedFilters}
200
- />
169
+ >
170
+ <MarkerClustererF options={clusterOptions(clusterGridSize, markerConfigs.fillColor)}>
171
+ {clusterer => (
172
+ <>
173
+ {mapItems.map(item => (
174
+ <MapMarker
175
+ key={item.id}
176
+ item={item}
177
+ selectedLocation={location}
178
+ markerRefs={markerRefs}
179
+ infoWindowClasses={infoWindowClasses}
180
+ setSelectedLocation={setLocation}
181
+ markerClickHandler={markerClickHandler}
182
+ clusterer={clusterer}
183
+ markerIcon={markerIcon(markerConfigs)}
184
+ markerIconSelected={markerIconSelected(markerConfigs)}
185
+ setMapInteracted={setMapInteracted}
186
+ />
187
+ ))}
188
+ {poiMarkers && poiMarkers.markers.map((marker, index) => (
189
+ <PlaceMarker
190
+ key={`marker-${marker.title}-${index}`}
191
+ marker={marker}
192
+ index={index}
193
+ selectedPlaceMarker={selectedPlaceMarker}
194
+ placesWindow={placesWindow}
195
+ setPlacesWindow={setPlacesWindow}
196
+ setSelectedPlaceMarker={setSelectedPlaceMarker}
197
+ />
198
+ ))}
199
+ </>
200
+ )}
201
+ </MarkerClustererF>
202
+ </Map>
201
203
  );
202
204
  };
203
205
 
@@ -2,7 +2,7 @@ import React from 'react';
2
2
 
3
3
  import List from '~/components/containers/list/item-list-container';
4
4
  import Map from '~/components/containers/maps/map-container';
5
- import Filter from '~/components/modules/filter';
5
+ import Filter from '~/components/containers/filter/filter-container';
6
6
  import MapList from '~/components/modules/maps/map-list';
7
7
 
8
8
  const MapListContainer = ({