@abcagency/hc-ui-components 1.3.59 → 1.3.60

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 (277) hide show
  1. package/dist/apis/hcApi.js +85 -85
  2. package/dist/apis/hcApi.js.map +1 -1
  3. package/dist/clientToken.js.map +1 -1
  4. package/dist/components/HireControlMap.js +11 -1
  5. package/dist/components/HireControlMap.js.map +1 -1
  6. package/dist/components/containers/accordions/filter-container.js.map +1 -1
  7. package/dist/components/containers/accordions/filter-item-container.js.map +1 -1
  8. package/dist/components/containers/accordions/map-accordion-item-container.js.map +1 -1
  9. package/dist/components/containers/filter/commute-container.js +1 -1
  10. package/dist/components/containers/filter/commute-container.js.map +1 -1
  11. package/dist/components/containers/filter/filter-container.js.map +1 -1
  12. package/dist/components/containers/filter/filter-item-container.js.map +1 -1
  13. package/dist/components/containers/filter/location-container.js.map +1 -1
  14. package/dist/components/containers/filter/points-of-interest-container.js.map +1 -1
  15. package/dist/components/containers/filter/points-of-interest-radio-item-container.js.map +1 -1
  16. package/dist/components/containers/filter/search-container.js.map +1 -1
  17. package/dist/components/containers/jobListing/listing-details-container.js +5 -1
  18. package/dist/components/containers/jobListing/listing-details-container.js.map +1 -1
  19. package/dist/components/containers/list/item-list-container.js +21 -21
  20. package/dist/components/containers/list/item-list-container.js.map +1 -1
  21. package/dist/components/containers/list/list-item/list-item-container.js.map +1 -1
  22. package/dist/components/containers/maps/info-window-content-container.js.map +1 -1
  23. package/dist/components/containers/maps/map-container.js +1 -1
  24. package/dist/components/containers/maps/map-container.js.map +1 -1
  25. package/dist/components/containers/maps/map-list-container.js.map +1 -1
  26. package/dist/components/containers/maps/map-marker-container.js +1 -1
  27. package/dist/components/containers/maps/map-marker-container.js.map +1 -1
  28. package/dist/components/modules/accordions/MapAccordionItem.js.map +1 -1
  29. package/dist/components/modules/accordions/default.js +2 -2
  30. package/dist/components/modules/accordions/default.js.map +1 -1
  31. package/dist/components/modules/accordions/filterItem.js.map +1 -1
  32. package/dist/components/modules/accordions/filters.js.map +1 -1
  33. package/dist/components/modules/buttons/button-group-apply.js +48 -54
  34. package/dist/components/modules/buttons/button-group-apply.js.map +1 -1
  35. package/dist/components/modules/buttons/commute-pill.js.map +1 -1
  36. package/dist/components/modules/buttons/default.js +2 -2
  37. package/dist/components/modules/buttons/default.js.map +1 -1
  38. package/dist/components/modules/buttons/items-pill.js.map +1 -1
  39. package/dist/components/modules/buttons/pill-wrapper.js.map +1 -1
  40. package/dist/components/modules/buttons/show-all-button.js.map +1 -1
  41. package/dist/components/modules/cards/default.js +2 -2
  42. package/dist/components/modules/cards/default.js.map +1 -1
  43. package/dist/components/modules/cards/filter.js.map +1 -1
  44. package/dist/components/modules/dialogs/apply-dialog.js +1 -1
  45. package/dist/components/modules/dialogs/apply-dialog.js.map +1 -1
  46. package/dist/components/modules/filter/commute.js +2 -2
  47. package/dist/components/modules/filter/commute.js.map +1 -1
  48. package/dist/components/modules/filter/index.js.map +1 -1
  49. package/dist/components/modules/filter/item.js.map +1 -1
  50. package/dist/components/modules/filter/location.js.map +1 -1
  51. package/dist/components/modules/filter/radio-item.js.map +1 -1
  52. package/dist/components/modules/filter/search.js.map +1 -1
  53. package/dist/components/modules/filter/sort.js +2 -2
  54. package/dist/components/modules/filter/sort.js.map +1 -1
  55. package/dist/components/modules/grid.js +1 -1
  56. package/dist/components/modules/grid.js.map +1 -1
  57. package/dist/components/modules/icon.js +1 -1
  58. package/dist/components/modules/icon.js.map +1 -1
  59. package/dist/components/modules/jobListing/listing-details.js +8 -7
  60. package/dist/components/modules/jobListing/listing-details.js.map +1 -1
  61. package/dist/components/modules/list/field-mapper.js.map +1 -1
  62. package/dist/components/modules/list/header-item.js.map +1 -1
  63. package/dist/components/modules/list/header.js +1 -1
  64. package/dist/components/modules/list/header.js.map +1 -1
  65. package/dist/components/modules/list/item-expand-card/index.js +1 -1
  66. package/dist/components/modules/list/item-expand-card/index.js.map +1 -1
  67. package/dist/components/modules/list/item-expand-card/recruiter-contact-nav.js +38 -38
  68. package/dist/components/modules/list/item-expand-card/recruiter-details.js +40 -40
  69. package/dist/components/modules/list/item-expand-card/recruiter-headshot.js +20 -20
  70. package/dist/components/modules/list/item-list.js +43 -43
  71. package/dist/components/modules/list/item-list.js.map +1 -1
  72. package/dist/components/modules/list/list-item/list-item.js.map +1 -1
  73. package/dist/components/modules/maps/info-window-card.js.map +1 -1
  74. package/dist/components/modules/maps/info-window-content.js.map +1 -1
  75. package/dist/components/modules/maps/map-list.js.map +1 -1
  76. package/dist/components/modules/maps/map-marker.js +1 -1
  77. package/dist/components/modules/maps/map-marker.js.map +1 -1
  78. package/dist/components/modules/maps/map.js +1 -1
  79. package/dist/components/modules/maps/map.js.map +1 -1
  80. package/dist/components/modules/maps/place-marker.js +1 -1
  81. package/dist/components/modules/maps/place-marker.js.map +1 -1
  82. package/dist/components/modules/maps/tabs.js +1 -1
  83. package/dist/components/modules/maps/tabs.js.map +1 -1
  84. package/dist/constants/eventTypes.js +1 -0
  85. package/dist/constants/eventTypes.js.map +1 -1
  86. package/dist/constants/placeTypes.js.map +1 -1
  87. package/dist/contexts/mapContext.js +83 -83
  88. package/dist/contexts/mapContext.js.map +1 -1
  89. package/dist/contexts/mapListContext.js +192 -190
  90. package/dist/contexts/mapListContext.js.map +1 -1
  91. package/dist/contexts/placesContext.js.map +1 -1
  92. package/dist/contexts/themeContext.js.map +1 -1
  93. package/dist/contexts/trackEventContext.js.map +1 -1
  94. package/dist/hooks/useList.js.map +1 -1
  95. package/dist/services/configService.js +9 -9
  96. package/dist/services/configService.js.map +1 -1
  97. package/dist/services/googlePlacesNearbyService.js +32 -32
  98. package/dist/services/googlePlacesNearbyService.js.map +1 -1
  99. package/dist/services/listingAggregatorService.js +34 -34
  100. package/dist/services/listingAggregatorService.js.map +1 -1
  101. package/dist/services/listingEntityService.js +9 -9
  102. package/dist/services/listingEntityService.js.map +1 -1
  103. package/dist/services/listingService.js +24 -24
  104. package/dist/services/listingService.js.map +1 -1
  105. package/dist/services/recruiterService.js +10 -10
  106. package/dist/services/recruiterService.js.map +1 -1
  107. package/dist/types/apis/hcApi.d.ts +5 -5
  108. package/dist/types/clientToken.d.ts +2 -2
  109. package/dist/types/components/containers/accordions/map-accordion-item-container.d.ts +12 -12
  110. package/dist/types/components/containers/jobListing/listing-details-container.d.ts +6 -6
  111. package/dist/types/components/containers/list/item-list-container.d.ts +9 -9
  112. package/dist/types/components/containers/list/list-item/list-item-container.d.ts +14 -14
  113. package/dist/types/components/modules/accordions/MapAccordionItem.d.ts +10 -10
  114. package/dist/types/components/modules/accordions/default.d.ts +19 -19
  115. package/dist/types/components/modules/buttons/button-group-apply.d.ts +24 -24
  116. package/dist/types/components/modules/buttons/commute-pill.d.ts +5 -5
  117. package/dist/types/components/modules/buttons/default.d.ts +48 -48
  118. package/dist/types/components/modules/buttons/pill-wrapper.d.ts +3 -3
  119. package/dist/types/components/modules/dialogs/apply-dialog.d.ts +8 -8
  120. package/dist/types/components/modules/filter/sort.d.ts +8 -8
  121. package/dist/types/components/modules/grid.d.ts +8 -8
  122. package/dist/types/components/modules/icon.d.ts +10 -10
  123. package/dist/types/components/modules/jobListing/listing-details.d.ts +20 -18
  124. package/dist/types/components/modules/list/field-mapper.d.ts +10 -10
  125. package/dist/types/components/modules/list/header-item.d.ts +11 -11
  126. package/dist/types/components/modules/list/header.d.ts +12 -12
  127. package/dist/types/components/modules/list/item-expand-card/index.d.ts +7 -7
  128. package/dist/types/components/modules/list/item-expand-card/recruiter-contact-nav.d.ts +17 -17
  129. package/dist/types/components/modules/list/item-expand-card/recruiter-details.d.ts +21 -21
  130. package/dist/types/components/modules/list/item-expand-card/recruiter-headshot.d.ts +8 -8
  131. package/dist/types/components/modules/list/item-list.d.ts +20 -20
  132. package/dist/types/components/modules/list/list-item/list-item.d.ts +3 -3
  133. package/dist/types/constants/eventTypes.d.ts +15 -14
  134. package/dist/types/contexts/mapContext.d.ts +29 -29
  135. package/dist/types/contexts/mapListContext.d.ts +65 -61
  136. package/dist/types/contexts/trackEventContext.d.ts +6 -6
  137. package/dist/types/enums/SectionType.d.ts +9 -9
  138. package/dist/types/hooks/useList.d.ts +13 -13
  139. package/dist/types/services/configService.d.ts +6 -6
  140. package/dist/types/services/googlePlacesNearbyService.d.ts +5 -5
  141. package/dist/types/services/listingAggregatorService.d.ts +12 -12
  142. package/dist/types/services/listingEntityService.d.ts +6 -6
  143. package/dist/types/services/listingService.d.ts +9 -9
  144. package/dist/types/services/recruiterService.d.ts +6 -6
  145. package/dist/types/types/Address.d.ts +7 -7
  146. package/dist/types/types/ContentSection.d.ts +8 -8
  147. package/dist/types/types/GetListingParams.d.ts +8 -8
  148. package/dist/types/types/LatLng.d.ts +4 -4
  149. package/dist/types/types/ListingEntity.d.ts +10 -10
  150. package/dist/types/types/ListingFields.d.ts +25 -25
  151. package/dist/types/types/Listings.d.ts +31 -31
  152. package/dist/types/types/Recruiter.d.ts +9 -9
  153. package/dist/types/types/SimilarListing.d.ts +24 -24
  154. package/dist/types/types/config/Colors.d.ts +8 -8
  155. package/dist/types/types/config/MapConfig.d.ts +30 -30
  156. package/dist/types/types/config/PointsOfInterestConfig.d.ts +13 -13
  157. package/dist/types/types/config/SearchConfig.d.ts +4 -4
  158. package/dist/types/util/filterUtil.d.ts +28 -28
  159. package/dist/types/util/loading.d.ts +3 -3
  160. package/dist/types/util/localStorageUtil.d.ts +3 -3
  161. package/dist/types/util/mapUtil.d.ts +16 -16
  162. package/dist/types/util/sortUtil.d.ts +1 -1
  163. package/dist/types/util/stringUtils.d.ts +1 -1
  164. package/dist/types/util/urlFilterUtil.d.ts +8 -8
  165. package/dist/util/filterUtil.js +1 -1
  166. package/dist/util/filterUtil.js.map +1 -1
  167. package/dist/util/loading.js.map +1 -1
  168. package/dist/util/localStorageUtil.js +37 -37
  169. package/dist/util/localStorageUtil.js.map +1 -1
  170. package/dist/util/mapIconUtil.js.map +1 -1
  171. package/dist/util/mapUtil.js.map +1 -1
  172. package/dist/util/sortUtil.js.map +1 -1
  173. package/dist/util/stringUtils.js.map +1 -1
  174. package/dist/util/urlFilterUtil.js.map +1 -1
  175. package/package.json +90 -90
  176. package/src/.editorconfig +12 -12
  177. package/src/apis/hcApi.ts +109 -109
  178. package/src/bundleIndex.js +14 -14
  179. package/src/clientToken.js +9 -9
  180. package/src/components/HireControlMap.js +148 -142
  181. package/src/components/containers/accordions/filter-container.js +48 -48
  182. package/src/components/containers/accordions/filter-item-container.js +83 -83
  183. package/src/components/containers/accordions/map-accordion-item-container.js +70 -70
  184. package/src/components/containers/filter/commute-container.js +89 -89
  185. package/src/components/containers/filter/filter-container.js +76 -76
  186. package/src/components/containers/filter/filter-item-container.js +117 -117
  187. package/src/components/containers/filter/location-container.js +45 -45
  188. package/src/components/containers/filter/points-of-interest-container.js +33 -33
  189. package/src/components/containers/filter/points-of-interest-radio-item-container.js +35 -35
  190. package/src/components/containers/filter/search-container.js +61 -61
  191. package/src/components/containers/jobListing/listing-details-container.js +42 -40
  192. package/src/components/containers/list/item-list-container.tsx +81 -81
  193. package/src/components/containers/list/list-item/list-item-container.js +43 -43
  194. package/src/components/containers/maps/info-window-content-container.js +53 -53
  195. package/src/components/containers/maps/map-container.js +249 -249
  196. package/src/components/containers/maps/map-list-container.js +50 -50
  197. package/src/components/containers/maps/map-marker-container.js +78 -78
  198. package/src/components/modules/accordions/MapAccordionItem.js +30 -30
  199. package/src/components/modules/accordions/default.js +171 -171
  200. package/src/components/modules/accordions/filterItem.js +27 -27
  201. package/src/components/modules/accordions/filters.js +32 -32
  202. package/src/components/modules/buttons/button-group-apply.js +115 -135
  203. package/src/components/modules/buttons/commute-pill.js +22 -22
  204. package/src/components/modules/buttons/default.js +194 -194
  205. package/src/components/modules/buttons/items-pill.js +35 -35
  206. package/src/components/modules/buttons/pill-wrapper.js +27 -27
  207. package/src/components/modules/buttons/show-all-button.js +19 -19
  208. package/src/components/modules/cards/default.js +167 -167
  209. package/src/components/modules/cards/filter.js +56 -56
  210. package/src/components/modules/dialogs/apply-dialog.js +48 -48
  211. package/src/components/modules/filter/commute.js +108 -108
  212. package/src/components/modules/filter/index.js +55 -55
  213. package/src/components/modules/filter/item.js +69 -69
  214. package/src/components/modules/filter/location.js +51 -51
  215. package/src/components/modules/filter/radio-item.js +42 -42
  216. package/src/components/modules/filter/search.js +79 -79
  217. package/src/components/modules/filter/sort.js +83 -83
  218. package/src/components/modules/grid.js +54 -54
  219. package/src/components/modules/icon.js +33 -33
  220. package/src/components/modules/jobListing/listing-details.js +110 -108
  221. package/src/components/modules/list/field-mapper.js +130 -130
  222. package/src/components/modules/list/header-item.js +92 -92
  223. package/src/components/modules/list/header.js +51 -51
  224. package/src/components/modules/list/item-expand-card/index.js +22 -22
  225. package/src/components/modules/list/item-expand-card/recruiter-contact-nav.js +50 -50
  226. package/src/components/modules/list/item-expand-card/recruiter-details.js +68 -68
  227. package/src/components/modules/list/item-expand-card/recruiter-headshot.js +22 -22
  228. package/src/components/modules/list/item-list.tsx +117 -117
  229. package/src/components/modules/list/list-item/list-item.js +130 -130
  230. package/src/components/modules/maps/info-window-card.js +17 -17
  231. package/src/components/modules/maps/info-window-content.js +64 -64
  232. package/src/components/modules/maps/map-list.js +38 -38
  233. package/src/components/modules/maps/map-marker.js +29 -29
  234. package/src/components/modules/maps/map.js +64 -64
  235. package/src/components/modules/maps/place-marker.js +41 -41
  236. package/src/components/modules/maps/tabs.js +81 -81
  237. package/src/constants/eventTypes.js +15 -14
  238. package/src/constants/placeTypes.js +8 -8
  239. package/src/contexts/mapContext.tsx +129 -129
  240. package/src/contexts/mapListContext.tsx +326 -318
  241. package/src/contexts/placesContext.js +102 -102
  242. package/src/contexts/themeContext.js +40 -40
  243. package/src/contexts/trackEventContext.js +14 -14
  244. package/src/enums/SectionType.ts +9 -9
  245. package/src/hooks/useList.js +89 -89
  246. package/src/index.js +3 -3
  247. package/src/services/configService.ts +16 -16
  248. package/src/services/googlePlacesNearbyService.ts +42 -42
  249. package/src/services/listingAggregatorService.ts +76 -76
  250. package/src/services/listingEntityService.ts +16 -16
  251. package/src/services/listingService.ts +40 -40
  252. package/src/services/recruiterService.ts +18 -18
  253. package/src/styles/bundle.css +268 -268
  254. package/src/styles/index.css +33 -33
  255. package/src/types/Address.ts +7 -7
  256. package/src/types/ContentSection.ts +9 -9
  257. package/src/types/GetListingParams.ts +8 -8
  258. package/src/types/LatLng.ts +4 -4
  259. package/src/types/ListingEntity.ts +11 -11
  260. package/src/types/ListingFields.ts +25 -25
  261. package/src/types/Listings.ts +32 -32
  262. package/src/types/Recruiter.ts +9 -9
  263. package/src/types/SimilarListing.ts +24 -24
  264. package/src/types/config/Colors.ts +8 -8
  265. package/src/types/config/MapConfig.ts +31 -31
  266. package/src/types/config/PointsOfInterestConfig.ts +13 -13
  267. package/src/types/config/SearchConfig.ts +4 -4
  268. package/src/util/arrayUtil.js +3 -3
  269. package/src/util/fieldMapper.js +22 -22
  270. package/src/util/filterUtil.js +311 -311
  271. package/src/util/loading.js +17 -17
  272. package/src/util/localStorageUtil.ts +34 -34
  273. package/src/util/mapIconUtil.js +180 -180
  274. package/src/util/mapUtil.js +92 -92
  275. package/src/util/sortUtil.js +32 -32
  276. package/src/util/stringUtils.js +6 -6
  277. package/src/util/urlFilterUtil.js +85 -85
@@ -1,81 +1,81 @@
1
- import React from 'react';
2
- import useListLogic from '~/hooks/useList';
3
- import { useMap } from '~/contexts/mapContext';
4
- import { useMapList } from '~/contexts/mapListContext';
5
- import { useTrackEvent } from '~/contexts/trackEventContext';
6
- import ItemsList from '~/components/modules/list/item-list';
7
- import Accordion from '~/components/modules/accordions/default';
8
- import MapAccordionItemContainer from '~/components/containers/accordions/map-accordion-item-container';
9
- import { dynamicSort } from '~/util/sortUtil';
10
- import { Listing } from '~/types/Listings';
11
- import ListingDetailsContainer from '../jobListing/listing-details-container';
12
-
13
- interface ItemsListContainerProps {
14
- fieldNames: Record<string, string>;
15
- showMap: boolean;
16
- fieldsShown: string[];
17
- specialFeatures: any;
18
- }
19
-
20
- const ItemsListContainer: React.FC<ItemsListContainerProps> = ({
21
- fieldNames,
22
- showMap,
23
- fieldsShown,
24
- specialFeatures
25
- }) => {
26
- const { filteredListings, loading, commuteLocation, sortSetting, setSortSetting } = useMapList();
27
- const { itemLimit, loader, scrollContainerRef, itemRefs } = useListLogic(filteredListings as any);
28
- const { selectedListItem } = useMap();
29
- const { trackEvent, eventTypes } = useTrackEvent() as any;
30
- const itemExpandedContent = (item: any, recruiter: any) =>
31
- item ? <ListingDetailsContainer item={item} recruiter={recruiter} /> : null;
32
-
33
- if (!fieldsShown.includes('travelTime') && commuteLocation != null && Object.entries(commuteLocation).length > 0) {
34
- fieldsShown.push('travelTime');
35
- fieldNames['travelTime'] = 'Commute';
36
- } else if (fieldsShown.includes('travelTime') && !commuteLocation) {
37
- fieldsShown = fieldsShown.filter(x => x !== 'travelTime');
38
- }
39
-
40
- const setTrackedSortSetting = (sortSetting: { field: string; type: string }) => {
41
- trackEvent(eventTypes.LIST_SORTED, sortSetting);
42
- setSortSetting(sortSetting);
43
- };
44
- return (
45
- <ItemsList
46
- fieldNames={fieldNames}
47
- showMap={showMap}
48
- fieldsShown={fieldsShown}
49
- filteredListings={filteredListings}
50
- loading={loading}
51
- sortSetting={sortSetting}
52
- setSortSetting={setTrackedSortSetting}
53
- itemLimit={itemLimit}
54
- loader={loader}
55
- scrollContainerRef={scrollContainerRef}
56
- itemRefs={itemRefs}
57
- selectedListItem={selectedListItem}
58
- includeFavorite={true}
59
- >
60
- <Accordion className="hc-divide-y hc-divide-uiAccent/10 hc-z-[1000]" defaultValue={selectedListItem?.id}>
61
- {(sortSetting ? dynamicSort(filteredListings, sortSetting.field, sortSetting.type) : filteredListings)
62
- .slice(0, itemLimit)
63
- .map((item: Listing) => (
64
- <MapAccordionItemContainer
65
- key={item.id}
66
- showMap={showMap}
67
- item={item}
68
- itemRefs={itemRefs}
69
- fieldsShown={fieldsShown}
70
- itemExpandedContent={itemExpandedContent}
71
- specialFeatures={specialFeatures}
72
- isActive={selectedListItem?.id === item.id}
73
- hasListItemSelected={selectedListItem != null}
74
- />
75
- ))}
76
- </Accordion>
77
- </ItemsList>
78
- );
79
- };
80
-
81
- export default ItemsListContainer;
1
+ import React from 'react';
2
+ import useListLogic from '~/hooks/useList';
3
+ import { useMap } from '~/contexts/mapContext';
4
+ import { useMapList } from '~/contexts/mapListContext';
5
+ import { useTrackEvent } from '~/contexts/trackEventContext';
6
+ import ItemsList from '~/components/modules/list/item-list';
7
+ import Accordion from '~/components/modules/accordions/default';
8
+ import MapAccordionItemContainer from '~/components/containers/accordions/map-accordion-item-container';
9
+ import { dynamicSort } from '~/util/sortUtil';
10
+ import { Listing } from '~/types/Listings';
11
+ import ListingDetailsContainer from '../jobListing/listing-details-container';
12
+
13
+ interface ItemsListContainerProps {
14
+ fieldNames: Record<string, string>;
15
+ showMap: boolean;
16
+ fieldsShown: string[];
17
+ specialFeatures: any;
18
+ }
19
+
20
+ const ItemsListContainer: React.FC<ItemsListContainerProps> = ({
21
+ fieldNames,
22
+ showMap,
23
+ fieldsShown,
24
+ specialFeatures
25
+ }) => {
26
+ const { filteredListings, loading, commuteLocation, sortSetting, setSortSetting } = useMapList();
27
+ const { itemLimit, loader, scrollContainerRef, itemRefs } = useListLogic(filteredListings as any);
28
+ const { selectedListItem } = useMap();
29
+ const { trackEvent, eventTypes } = useTrackEvent() as any;
30
+ const itemExpandedContent = (item: any, recruiter: any) =>
31
+ item ? <ListingDetailsContainer item={item} recruiter={recruiter} /> : null;
32
+
33
+ if (!fieldsShown.includes('travelTime') && commuteLocation != null && Object.entries(commuteLocation).length > 0) {
34
+ fieldsShown.push('travelTime');
35
+ fieldNames['travelTime'] = 'Commute';
36
+ } else if (fieldsShown.includes('travelTime') && !commuteLocation) {
37
+ fieldsShown = fieldsShown.filter(x => x !== 'travelTime');
38
+ }
39
+
40
+ const setTrackedSortSetting = (sortSetting: { field: string; type: string }) => {
41
+ trackEvent(eventTypes.LIST_SORTED, sortSetting);
42
+ setSortSetting(sortSetting);
43
+ };
44
+ return (
45
+ <ItemsList
46
+ fieldNames={fieldNames}
47
+ showMap={showMap}
48
+ fieldsShown={fieldsShown}
49
+ filteredListings={filteredListings}
50
+ loading={loading}
51
+ sortSetting={sortSetting}
52
+ setSortSetting={setTrackedSortSetting}
53
+ itemLimit={itemLimit}
54
+ loader={loader}
55
+ scrollContainerRef={scrollContainerRef}
56
+ itemRefs={itemRefs}
57
+ selectedListItem={selectedListItem}
58
+ includeFavorite={true}
59
+ >
60
+ <Accordion className="hc-divide-y hc-divide-uiAccent/10 hc-z-[1000]" defaultValue={selectedListItem?.id}>
61
+ {(sortSetting ? dynamicSort(filteredListings, sortSetting.field, sortSetting.type) : filteredListings)
62
+ .slice(0, itemLimit)
63
+ .map((item: Listing) => (
64
+ <MapAccordionItemContainer
65
+ key={item.id}
66
+ showMap={showMap}
67
+ item={item}
68
+ itemRefs={itemRefs}
69
+ fieldsShown={fieldsShown}
70
+ itemExpandedContent={itemExpandedContent}
71
+ specialFeatures={specialFeatures}
72
+ isActive={selectedListItem?.id === item.id}
73
+ hasListItemSelected={selectedListItem != null}
74
+ />
75
+ ))}
76
+ </Accordion>
77
+ </ItemsList>
78
+ );
79
+ };
80
+
81
+ export default ItemsListContainer;
@@ -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;
@@ -1,53 +1,53 @@
1
- import React from 'react';
2
- import InfoWindowContent from '~/components/modules/maps/info-window-content';
3
- import { useMapList } from '~/contexts/mapListContext';
4
- import { useTrackEvent } from '~/contexts/trackEventContext';
5
-
6
- const InfoWindowContentContainer = ({
7
- item,
8
- filterListingsByLocation
9
- }) => {
10
- const { trackEvent, eventTypes } = useTrackEvent();
11
- const { setSelectedFilters, setMobileTab, selectedFilters, siteConfig, filteredListings } = useMapList();
12
- const fieldsShown = siteConfig.locationFiltersShown;
13
- let items = item && item.items ? Object.values(item.items) : null;
14
-
15
- const addressParts = [
16
- items[0].mapDetails?.address?.street,
17
- items[0].mapDetails?.address?.city,
18
- items[0].mapDetails?.address?.state,
19
- items[0].mapDetails?.address?.zip
20
- ];
21
- const fullAddress = addressParts.filter(Boolean).join(', ');
22
-
23
- const applyFilters = () => {
24
- setMobileTab("listTab");
25
- const newFilters = { ...selectedFilters };
26
- let filters = [];
27
-
28
- if (fieldsShown.includes('cityState')) {
29
- newFilters.cityState = { [items[0].fields.cityState]: true };
30
- filters.push({ filterType: 'cityState', filterChecked: items[0].fields.cityState });
31
- }
32
-
33
- if (fieldsShown.includes('city')) {
34
- newFilters.city = { [items[0].fields.city]: true };
35
- filters.push({ filterType: 'city', filterChecked: items[0].fields.city });
36
- }
37
-
38
- if (fieldsShown.includes('state')) {
39
- newFilters.state = { [items[0].fields.state]: true };
40
- filters.push({ filterType: 'state', filterChecked: items[0].fields.state });
41
- }
42
-
43
- newFilters.entityName = { [items[0].fields.entityName]: true };
44
- filters.push({ filterType: 'entityName', filterChecked: items[0].fields.entityName });
45
-
46
- trackEvent(eventTypes.VIEW_JOBS_AT_Location, { filtersApplied: filters });
47
- setSelectedFilters(newFilters);
48
- };
49
-
50
- return <InfoWindowContent items={items} fullAddress={fullAddress} applyFilters={applyFilters} mapInfoWindowConfig={siteConfig.mapInfoWindowConfig}/>;
51
- };
52
-
53
- export default InfoWindowContentContainer;
1
+ import React from 'react';
2
+ import InfoWindowContent from '~/components/modules/maps/info-window-content';
3
+ import { useMapList } from '~/contexts/mapListContext';
4
+ import { useTrackEvent } from '~/contexts/trackEventContext';
5
+
6
+ const InfoWindowContentContainer = ({
7
+ item,
8
+ filterListingsByLocation
9
+ }) => {
10
+ const { trackEvent, eventTypes } = useTrackEvent();
11
+ const { setSelectedFilters, setMobileTab, selectedFilters, siteConfig, filteredListings } = useMapList();
12
+ const fieldsShown = siteConfig.locationFiltersShown;
13
+ let items = item && item.items ? Object.values(item.items) : null;
14
+
15
+ const addressParts = [
16
+ items[0].mapDetails?.address?.street,
17
+ items[0].mapDetails?.address?.city,
18
+ items[0].mapDetails?.address?.state,
19
+ items[0].mapDetails?.address?.zip
20
+ ];
21
+ const fullAddress = addressParts.filter(Boolean).join(', ');
22
+
23
+ const applyFilters = () => {
24
+ setMobileTab("listTab");
25
+ const newFilters = { ...selectedFilters };
26
+ let filters = [];
27
+
28
+ if (fieldsShown.includes('cityState')) {
29
+ newFilters.cityState = { [items[0].fields.cityState]: true };
30
+ filters.push({ filterType: 'cityState', filterChecked: items[0].fields.cityState });
31
+ }
32
+
33
+ if (fieldsShown.includes('city')) {
34
+ newFilters.city = { [items[0].fields.city]: true };
35
+ filters.push({ filterType: 'city', filterChecked: items[0].fields.city });
36
+ }
37
+
38
+ if (fieldsShown.includes('state')) {
39
+ newFilters.state = { [items[0].fields.state]: true };
40
+ filters.push({ filterType: 'state', filterChecked: items[0].fields.state });
41
+ }
42
+
43
+ newFilters.entityName = { [items[0].fields.entityName]: true };
44
+ filters.push({ filterType: 'entityName', filterChecked: items[0].fields.entityName });
45
+
46
+ trackEvent(eventTypes.VIEW_JOBS_AT_Location, { filtersApplied: filters });
47
+ setSelectedFilters(newFilters);
48
+ };
49
+
50
+ return <InfoWindowContent items={items} fullAddress={fullAddress} applyFilters={applyFilters} mapInfoWindowConfig={siteConfig.mapInfoWindowConfig}/>;
51
+ };
52
+
53
+ export default InfoWindowContentContainer;