@abcagency/hc-ui-components 1.3.61 → 1.3.63

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 (279) 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 +14 -4
  5. package/dist/components/HireControlMap.js.map +1 -1
  6. package/dist/components/containers/accordions/filter-container.js +10 -3
  7. package/dist/components/containers/accordions/filter-container.js.map +1 -1
  8. package/dist/components/containers/accordions/filter-item-container.js.map +1 -1
  9. package/dist/components/containers/accordions/map-accordion-item-container.js.map +1 -1
  10. package/dist/components/containers/filter/commute-container.js +1 -1
  11. package/dist/components/containers/filter/commute-container.js.map +1 -1
  12. package/dist/components/containers/filter/filter-container.js.map +1 -1
  13. package/dist/components/containers/filter/filter-item-container.js.map +1 -1
  14. package/dist/components/containers/filter/location-container.js.map +1 -1
  15. package/dist/components/containers/filter/points-of-interest-container.js.map +1 -1
  16. package/dist/components/containers/filter/points-of-interest-radio-item-container.js.map +1 -1
  17. package/dist/components/containers/filter/search-container.js.map +1 -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 +1 -1
  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 +5 -8
  39. package/dist/components/modules/buttons/items-pill.js.map +1 -1
  40. package/dist/components/modules/buttons/pill-wrapper.js.map +1 -1
  41. package/dist/components/modules/buttons/show-all-button.js.map +1 -1
  42. package/dist/components/modules/cards/default.js +2 -2
  43. package/dist/components/modules/cards/default.js.map +1 -1
  44. package/dist/components/modules/cards/filter.js.map +1 -1
  45. package/dist/components/modules/dialogs/apply-dialog.js +1 -1
  46. package/dist/components/modules/dialogs/apply-dialog.js.map +1 -1
  47. package/dist/components/modules/filter/commute.js +2 -2
  48. package/dist/components/modules/filter/commute.js.map +1 -1
  49. package/dist/components/modules/filter/index.js +1 -1
  50. package/dist/components/modules/filter/index.js.map +1 -1
  51. package/dist/components/modules/filter/item.js.map +1 -1
  52. package/dist/components/modules/filter/location.js.map +1 -1
  53. package/dist/components/modules/filter/radio-item.js.map +1 -1
  54. package/dist/components/modules/filter/search.js.map +1 -1
  55. package/dist/components/modules/filter/sort.js +2 -2
  56. package/dist/components/modules/filter/sort.js.map +1 -1
  57. package/dist/components/modules/grid.js +1 -1
  58. package/dist/components/modules/grid.js.map +1 -1
  59. package/dist/components/modules/icon.js +1 -1
  60. package/dist/components/modules/icon.js.map +1 -1
  61. package/dist/components/modules/jobListing/listing-details.js +1 -1
  62. package/dist/components/modules/jobListing/listing-details.js.map +1 -1
  63. package/dist/components/modules/list/field-mapper.js.map +1 -1
  64. package/dist/components/modules/list/header-item.js.map +1 -1
  65. package/dist/components/modules/list/header.js +1 -1
  66. package/dist/components/modules/list/header.js.map +1 -1
  67. package/dist/components/modules/list/item-expand-card/index.js +1 -1
  68. package/dist/components/modules/list/item-expand-card/index.js.map +1 -1
  69. package/dist/components/modules/list/item-expand-card/recruiter-contact-nav.js +38 -38
  70. package/dist/components/modules/list/item-expand-card/recruiter-details.js +40 -40
  71. package/dist/components/modules/list/item-expand-card/recruiter-headshot.js +20 -20
  72. package/dist/components/modules/list/item-list.js +43 -43
  73. package/dist/components/modules/list/item-list.js.map +1 -1
  74. package/dist/components/modules/list/list-item/list-item.js.map +1 -1
  75. package/dist/components/modules/maps/info-window-card.js.map +1 -1
  76. package/dist/components/modules/maps/info-window-content.js.map +1 -1
  77. package/dist/components/modules/maps/map-list.js.map +1 -1
  78. package/dist/components/modules/maps/map-marker.js +1 -1
  79. package/dist/components/modules/maps/map-marker.js.map +1 -1
  80. package/dist/components/modules/maps/map.js +1 -1
  81. package/dist/components/modules/maps/map.js.map +1 -1
  82. package/dist/components/modules/maps/place-marker.js +1 -1
  83. package/dist/components/modules/maps/place-marker.js.map +1 -1
  84. package/dist/components/modules/maps/tabs.js +1 -1
  85. package/dist/components/modules/maps/tabs.js.map +1 -1
  86. package/dist/constants/eventTypes.js.map +1 -1
  87. package/dist/constants/placeTypes.js.map +1 -1
  88. package/dist/contexts/mapContext.js +83 -83
  89. package/dist/contexts/mapContext.js.map +1 -1
  90. package/dist/contexts/mapListContext.js +211 -192
  91. package/dist/contexts/mapListContext.js.map +1 -1
  92. package/dist/contexts/placesContext.js.map +1 -1
  93. package/dist/contexts/themeContext.js.map +1 -1
  94. package/dist/contexts/trackEventContext.js.map +1 -1
  95. package/dist/hooks/useList.js.map +1 -1
  96. package/dist/services/configService.js +9 -9
  97. package/dist/services/configService.js.map +1 -1
  98. package/dist/services/googlePlacesNearbyService.js +32 -32
  99. package/dist/services/googlePlacesNearbyService.js.map +1 -1
  100. package/dist/services/listingAggregatorService.js +34 -34
  101. package/dist/services/listingAggregatorService.js.map +1 -1
  102. package/dist/services/listingEntityService.js +9 -9
  103. package/dist/services/listingEntityService.js.map +1 -1
  104. package/dist/services/listingService.js +24 -24
  105. package/dist/services/listingService.js.map +1 -1
  106. package/dist/services/recruiterService.js +10 -10
  107. package/dist/services/recruiterService.js.map +1 -1
  108. package/dist/styles/index.css +1 -1
  109. package/dist/types/apis/hcApi.d.ts +5 -5
  110. package/dist/types/clientToken.d.ts +2 -2
  111. package/dist/types/components/containers/accordions/map-accordion-item-container.d.ts +12 -12
  112. package/dist/types/components/containers/jobListing/listing-details-container.d.ts +6 -6
  113. package/dist/types/components/containers/list/item-list-container.d.ts +9 -9
  114. package/dist/types/components/containers/list/list-item/list-item-container.d.ts +14 -14
  115. package/dist/types/components/modules/accordions/MapAccordionItem.d.ts +10 -10
  116. package/dist/types/components/modules/accordions/default.d.ts +19 -19
  117. package/dist/types/components/modules/buttons/button-group-apply.d.ts +24 -24
  118. package/dist/types/components/modules/buttons/commute-pill.d.ts +5 -5
  119. package/dist/types/components/modules/buttons/default.d.ts +48 -48
  120. package/dist/types/components/modules/buttons/pill-wrapper.d.ts +3 -3
  121. package/dist/types/components/modules/dialogs/apply-dialog.d.ts +8 -8
  122. package/dist/types/components/modules/filter/sort.d.ts +8 -8
  123. package/dist/types/components/modules/grid.d.ts +8 -8
  124. package/dist/types/components/modules/icon.d.ts +10 -10
  125. package/dist/types/components/modules/jobListing/listing-details.d.ts +20 -20
  126. package/dist/types/components/modules/list/field-mapper.d.ts +10 -10
  127. package/dist/types/components/modules/list/header-item.d.ts +11 -11
  128. package/dist/types/components/modules/list/header.d.ts +12 -12
  129. package/dist/types/components/modules/list/item-expand-card/index.d.ts +7 -7
  130. package/dist/types/components/modules/list/item-expand-card/recruiter-contact-nav.d.ts +17 -17
  131. package/dist/types/components/modules/list/item-expand-card/recruiter-details.d.ts +21 -21
  132. package/dist/types/components/modules/list/item-expand-card/recruiter-headshot.d.ts +8 -8
  133. package/dist/types/components/modules/list/item-list.d.ts +20 -20
  134. package/dist/types/components/modules/list/list-item/list-item.d.ts +3 -3
  135. package/dist/types/constants/eventTypes.d.ts +15 -15
  136. package/dist/types/contexts/mapContext.d.ts +29 -29
  137. package/dist/types/contexts/mapListContext.d.ts +69 -65
  138. package/dist/types/contexts/trackEventContext.d.ts +6 -6
  139. package/dist/types/enums/SectionType.d.ts +9 -9
  140. package/dist/types/hooks/useList.d.ts +13 -13
  141. package/dist/types/services/configService.d.ts +6 -6
  142. package/dist/types/services/googlePlacesNearbyService.d.ts +5 -5
  143. package/dist/types/services/listingAggregatorService.d.ts +12 -12
  144. package/dist/types/services/listingEntityService.d.ts +6 -6
  145. package/dist/types/services/listingService.d.ts +9 -9
  146. package/dist/types/services/recruiterService.d.ts +6 -6
  147. package/dist/types/types/Address.d.ts +7 -7
  148. package/dist/types/types/ContentSection.d.ts +8 -8
  149. package/dist/types/types/GetListingParams.d.ts +8 -8
  150. package/dist/types/types/LatLng.d.ts +4 -4
  151. package/dist/types/types/ListingEntity.d.ts +10 -10
  152. package/dist/types/types/ListingFields.d.ts +25 -25
  153. package/dist/types/types/Listings.d.ts +31 -31
  154. package/dist/types/types/Recruiter.d.ts +9 -9
  155. package/dist/types/types/SimilarListing.d.ts +24 -24
  156. package/dist/types/types/config/Colors.d.ts +8 -8
  157. package/dist/types/types/config/MapConfig.d.ts +30 -30
  158. package/dist/types/types/config/PointsOfInterestConfig.d.ts +13 -13
  159. package/dist/types/types/config/SearchConfig.d.ts +4 -4
  160. package/dist/types/util/filterUtil.d.ts +28 -28
  161. package/dist/types/util/loading.d.ts +3 -3
  162. package/dist/types/util/localStorageUtil.d.ts +3 -3
  163. package/dist/types/util/mapUtil.d.ts +16 -16
  164. package/dist/types/util/sortUtil.d.ts +1 -1
  165. package/dist/types/util/stringUtils.d.ts +1 -1
  166. package/dist/types/util/urlFilterUtil.d.ts +8 -8
  167. package/dist/util/filterUtil.js +1 -1
  168. package/dist/util/filterUtil.js.map +1 -1
  169. package/dist/util/loading.js.map +1 -1
  170. package/dist/util/localStorageUtil.js +37 -37
  171. package/dist/util/localStorageUtil.js.map +1 -1
  172. package/dist/util/mapIconUtil.js.map +1 -1
  173. package/dist/util/mapUtil.js.map +1 -1
  174. package/dist/util/sortUtil.js.map +1 -1
  175. package/dist/util/stringUtils.js.map +1 -1
  176. package/dist/util/urlFilterUtil.js.map +1 -1
  177. package/package.json +90 -90
  178. package/src/.editorconfig +12 -12
  179. package/src/apis/hcApi.ts +109 -109
  180. package/src/bundleIndex.js +14 -14
  181. package/src/clientToken.js +9 -9
  182. package/src/components/HireControlMap.js +153 -148
  183. package/src/components/containers/accordions/filter-container.js +52 -48
  184. package/src/components/containers/accordions/filter-item-container.js +83 -83
  185. package/src/components/containers/accordions/map-accordion-item-container.js +70 -70
  186. package/src/components/containers/filter/commute-container.js +89 -89
  187. package/src/components/containers/filter/filter-container.js +76 -76
  188. package/src/components/containers/filter/filter-item-container.js +117 -117
  189. package/src/components/containers/filter/location-container.js +45 -45
  190. package/src/components/containers/filter/points-of-interest-container.js +33 -33
  191. package/src/components/containers/filter/points-of-interest-radio-item-container.js +35 -35
  192. package/src/components/containers/filter/search-container.js +61 -61
  193. package/src/components/containers/jobListing/listing-details-container.js +42 -42
  194. package/src/components/containers/list/item-list-container.tsx +81 -81
  195. package/src/components/containers/list/list-item/list-item-container.js +43 -43
  196. package/src/components/containers/maps/info-window-content-container.js +53 -53
  197. package/src/components/containers/maps/map-container.js +249 -249
  198. package/src/components/containers/maps/map-list-container.js +50 -50
  199. package/src/components/containers/maps/map-marker-container.js +78 -78
  200. package/src/components/modules/accordions/MapAccordionItem.js +30 -30
  201. package/src/components/modules/accordions/default.js +171 -171
  202. package/src/components/modules/accordions/filterItem.js +27 -27
  203. package/src/components/modules/accordions/filters.js +32 -32
  204. package/src/components/modules/buttons/button-group-apply.js +115 -115
  205. package/src/components/modules/buttons/commute-pill.js +22 -22
  206. package/src/components/modules/buttons/default.js +194 -194
  207. package/src/components/modules/buttons/items-pill.js +31 -35
  208. package/src/components/modules/buttons/pill-wrapper.js +27 -27
  209. package/src/components/modules/buttons/show-all-button.js +19 -19
  210. package/src/components/modules/cards/default.js +167 -167
  211. package/src/components/modules/cards/filter.js +56 -56
  212. package/src/components/modules/dialogs/apply-dialog.js +48 -48
  213. package/src/components/modules/filter/commute.js +108 -108
  214. package/src/components/modules/filter/index.js +55 -55
  215. package/src/components/modules/filter/item.js +69 -69
  216. package/src/components/modules/filter/location.js +51 -51
  217. package/src/components/modules/filter/radio-item.js +42 -42
  218. package/src/components/modules/filter/search.js +79 -79
  219. package/src/components/modules/filter/sort.js +83 -83
  220. package/src/components/modules/grid.js +54 -54
  221. package/src/components/modules/icon.js +33 -33
  222. package/src/components/modules/jobListing/listing-details.js +110 -110
  223. package/src/components/modules/list/field-mapper.js +130 -130
  224. package/src/components/modules/list/header-item.js +92 -92
  225. package/src/components/modules/list/header.js +51 -51
  226. package/src/components/modules/list/item-expand-card/index.js +22 -22
  227. package/src/components/modules/list/item-expand-card/recruiter-contact-nav.js +50 -50
  228. package/src/components/modules/list/item-expand-card/recruiter-details.js +68 -68
  229. package/src/components/modules/list/item-expand-card/recruiter-headshot.js +22 -22
  230. package/src/components/modules/list/item-list.tsx +117 -117
  231. package/src/components/modules/list/list-item/list-item.js +130 -130
  232. package/src/components/modules/maps/info-window-card.js +17 -17
  233. package/src/components/modules/maps/info-window-content.js +64 -64
  234. package/src/components/modules/maps/map-list.js +38 -38
  235. package/src/components/modules/maps/map-marker.js +29 -29
  236. package/src/components/modules/maps/map.js +64 -64
  237. package/src/components/modules/maps/place-marker.js +41 -41
  238. package/src/components/modules/maps/tabs.js +81 -81
  239. package/src/constants/eventTypes.js +15 -15
  240. package/src/constants/placeTypes.js +8 -8
  241. package/src/contexts/mapContext.tsx +129 -129
  242. package/src/contexts/mapListContext.tsx +351 -326
  243. package/src/contexts/placesContext.js +102 -102
  244. package/src/contexts/themeContext.js +40 -40
  245. package/src/contexts/trackEventContext.js +14 -14
  246. package/src/enums/SectionType.ts +9 -9
  247. package/src/hooks/useList.js +89 -89
  248. package/src/index.js +3 -3
  249. package/src/services/configService.ts +16 -16
  250. package/src/services/googlePlacesNearbyService.ts +42 -42
  251. package/src/services/listingAggregatorService.ts +76 -76
  252. package/src/services/listingEntityService.ts +16 -16
  253. package/src/services/listingService.ts +40 -40
  254. package/src/services/recruiterService.ts +18 -18
  255. package/src/styles/bundle.css +268 -268
  256. package/src/styles/index.css +33 -33
  257. package/src/types/Address.ts +7 -7
  258. package/src/types/ContentSection.ts +9 -9
  259. package/src/types/GetListingParams.ts +8 -8
  260. package/src/types/LatLng.ts +4 -4
  261. package/src/types/ListingEntity.ts +11 -11
  262. package/src/types/ListingFields.ts +25 -25
  263. package/src/types/Listings.ts +32 -32
  264. package/src/types/Recruiter.ts +9 -9
  265. package/src/types/SimilarListing.ts +24 -24
  266. package/src/types/config/Colors.ts +8 -8
  267. package/src/types/config/MapConfig.ts +31 -31
  268. package/src/types/config/PointsOfInterestConfig.ts +13 -13
  269. package/src/types/config/SearchConfig.ts +4 -4
  270. package/src/util/arrayUtil.js +3 -3
  271. package/src/util/fieldMapper.js +22 -22
  272. package/src/util/filterUtil.js +311 -311
  273. package/src/util/loading.js +17 -17
  274. package/src/util/localStorageUtil.ts +34 -34
  275. package/src/util/mapIconUtil.js +180 -180
  276. package/src/util/mapUtil.js +92 -92
  277. package/src/util/sortUtil.js +32 -32
  278. package/src/util/stringUtils.js +6 -6
  279. package/src/util/urlFilterUtil.js +85 -85
@@ -1,110 +1,110 @@
1
- import React from 'react';
2
- import RecruiterHeadshot from '~/components/modules/list/item-expand-card/recruiter-headshot';
3
- import RecruiterDetails from '~/components/modules/list/item-expand-card/recruiter-details';
4
- import RecruiterContactNav from '~/components/modules/list/item-expand-card/recruiter-contact-nav';
5
- import ApplyButtonGroup from '~/components/modules/buttons/button-group-apply';
6
- import CommutePill from '~/components/modules/buttons/commute-pill';
7
-
8
- const ListingDetails = ({
9
- item,
10
- recruiter,
11
- travelTime,
12
- useDetailsPostMessage,
13
- navigateToDetails,
14
- navigateToEasyApply,
15
- Link,
16
- linkFormat,
17
- easyApplyUrl,
18
- easyApplyText,
19
- useApplyDialog,
20
- internalApplyLink,
21
- companyName,
22
- jobsDomain,
23
- trackEvent,
24
- eventTypes
25
- }) => {
26
- if (!item) {
27
- return null;
28
- }
29
-
30
- let matchingRecruiter = recruiter;
31
- return (
32
- <div className="hc-w-full">
33
- <div className="hc-grow hc-flex hc-flex-wrap hc-items-center hc-gap-4">
34
- {/* {matchingRecruiter?.headshot && (
35
- <RecruiterHeadshot
36
- image={`${matchingRecruiter.headshot.includes("http") ? '' :'https:'}${matchingRecruiter.headshot}`}
37
- alt={matchingRecruiter?.firstName}
38
- className="hc-bg-gray-300"
39
- />
40
- )}
41
- {matchingRecruiter && (
42
- <RecruiterDetails
43
- contactNav={
44
- <RecruiterContactNav>
45
- {matchingRecruiter?.mobilePhone && (
46
- <RecruiterContactNav.Button
47
- href={`tel:${matchingRecruiter.mobilePhone}`}
48
- title={`Call ${matchingRecruiter.mobilePhone}`}
49
- icon="fluent:phone-32-regular"
50
- />
51
- )}
52
- {matchingRecruiter?.email && (
53
- <RecruiterContactNav.Button
54
- href={`mailto:${matchingRecruiter.email}`}
55
- title={`email ${matchingRecruiter.email}`}
56
- icon="bi:envelope-at"
57
- />
58
- )}
59
- {matchingRecruiter?.linkedIn && (
60
- <RecruiterContactNav.Button
61
- href={matchingRecruiter.linkedIn}
62
- title="LinkedIn"
63
- icon="ant-design:linkedin-outlined"
64
- />
65
- )}
66
- </RecruiterContactNav>
67
- }
68
- >
69
- {matchingRecruiter?.firstName || matchingRecruiter?.lastName && (
70
- <RecruiterDetails.Title>
71
- {`${matchingRecruiter?.firstName} ${matchingRecruiter?.lastName}`}
72
- </RecruiterDetails.Title>
73
- )}
74
- {item.details?.recruiter?.title && (
75
- <RecruiterDetails.Text>
76
- {item.details.recruiter.title}
77
- </RecruiterDetails.Text>
78
- )}
79
- </RecruiterDetails>
80
- )} */}
81
- <ApplyButtonGroup
82
- useDetailsPostMessage={useDetailsPostMessage}
83
- navigateToDetails={navigateToDetails}
84
- navigateToEasyApply={navigateToEasyApply}
85
- Link={Link}
86
- linkFormat={linkFormat}
87
- easyApplyUrl={easyApplyUrl}
88
- easyApplyText={easyApplyText}
89
- includeDialog={useApplyDialog}
90
- internalApplyLink={internalApplyLink}
91
- companyName={companyName}
92
- item={item}
93
- trackEvent={trackEvent}
94
- eventTypes={eventTypes}
95
- detailsUrl={item.useClientJobUrl ? item?.detailsUrl : `${jobsDomain}${item.id}`}
96
- className={`
97
- lg:hc-w-auto hc-order-first lg:hc-order-last md:hc-self-center hc-py-2 lg:hc-p-0 lg:hc-mb-0 hc-border-b lg:hc-border-none hc-border-uiAccent/20
98
- lg:hc-flex-col lg:hc-w-auto
99
- `}
100
- />
101
- </div>
102
- <div className="hc-w-full">
103
- <CommutePill travelTime={travelTime} className="hc-ml-0" />
104
- </div>
105
- </div>
106
- );
107
- };
108
-
109
- export default ListingDetails;
110
-
1
+ import React from 'react';
2
+ import RecruiterHeadshot from '~/components/modules/list/item-expand-card/recruiter-headshot';
3
+ import RecruiterDetails from '~/components/modules/list/item-expand-card/recruiter-details';
4
+ import RecruiterContactNav from '~/components/modules/list/item-expand-card/recruiter-contact-nav';
5
+ import ApplyButtonGroup from '~/components/modules/buttons/button-group-apply';
6
+ import CommutePill from '~/components/modules/buttons/commute-pill';
7
+
8
+ const ListingDetails = ({
9
+ item,
10
+ recruiter,
11
+ travelTime,
12
+ useDetailsPostMessage,
13
+ navigateToDetails,
14
+ navigateToEasyApply,
15
+ Link,
16
+ linkFormat,
17
+ easyApplyUrl,
18
+ easyApplyText,
19
+ useApplyDialog,
20
+ internalApplyLink,
21
+ companyName,
22
+ jobsDomain,
23
+ trackEvent,
24
+ eventTypes
25
+ }) => {
26
+ if (!item) {
27
+ return null;
28
+ }
29
+
30
+ let matchingRecruiter = recruiter;
31
+ return (
32
+ <div className="hc-w-full">
33
+ <div className="hc-grow hc-flex hc-flex-wrap hc-items-center hc-gap-4">
34
+ {/* {matchingRecruiter?.headshot && (
35
+ <RecruiterHeadshot
36
+ image={`${matchingRecruiter.headshot.includes("http") ? '' :'https:'}${matchingRecruiter.headshot}`}
37
+ alt={matchingRecruiter?.firstName}
38
+ className="hc-bg-gray-300"
39
+ />
40
+ )}
41
+ {matchingRecruiter && (
42
+ <RecruiterDetails
43
+ contactNav={
44
+ <RecruiterContactNav>
45
+ {matchingRecruiter?.mobilePhone && (
46
+ <RecruiterContactNav.Button
47
+ href={`tel:${matchingRecruiter.mobilePhone}`}
48
+ title={`Call ${matchingRecruiter.mobilePhone}`}
49
+ icon="fluent:phone-32-regular"
50
+ />
51
+ )}
52
+ {matchingRecruiter?.email && (
53
+ <RecruiterContactNav.Button
54
+ href={`mailto:${matchingRecruiter.email}`}
55
+ title={`email ${matchingRecruiter.email}`}
56
+ icon="bi:envelope-at"
57
+ />
58
+ )}
59
+ {matchingRecruiter?.linkedIn && (
60
+ <RecruiterContactNav.Button
61
+ href={matchingRecruiter.linkedIn}
62
+ title="LinkedIn"
63
+ icon="ant-design:linkedin-outlined"
64
+ />
65
+ )}
66
+ </RecruiterContactNav>
67
+ }
68
+ >
69
+ {matchingRecruiter?.firstName || matchingRecruiter?.lastName && (
70
+ <RecruiterDetails.Title>
71
+ {`${matchingRecruiter?.firstName} ${matchingRecruiter?.lastName}`}
72
+ </RecruiterDetails.Title>
73
+ )}
74
+ {item.details?.recruiter?.title && (
75
+ <RecruiterDetails.Text>
76
+ {item.details.recruiter.title}
77
+ </RecruiterDetails.Text>
78
+ )}
79
+ </RecruiterDetails>
80
+ )} */}
81
+ <ApplyButtonGroup
82
+ useDetailsPostMessage={useDetailsPostMessage}
83
+ navigateToDetails={navigateToDetails}
84
+ navigateToEasyApply={navigateToEasyApply}
85
+ Link={Link}
86
+ linkFormat={linkFormat}
87
+ easyApplyUrl={easyApplyUrl}
88
+ easyApplyText={easyApplyText}
89
+ includeDialog={useApplyDialog}
90
+ internalApplyLink={internalApplyLink}
91
+ companyName={companyName}
92
+ item={item}
93
+ trackEvent={trackEvent}
94
+ eventTypes={eventTypes}
95
+ detailsUrl={item.useClientJobUrl ? item?.detailsUrl : `${jobsDomain}${item.id}`}
96
+ className={`
97
+ lg:hc-w-auto hc-order-first lg:hc-order-last md:hc-self-center hc-py-2 lg:hc-p-0 lg:hc-mb-0 hc-border-b lg:hc-border-none hc-border-uiAccent/20
98
+ lg:hc-flex-row
99
+ `}
100
+ />
101
+ </div>
102
+ <div className="hc-w-full">
103
+ <CommutePill travelTime={travelTime} className="hc-ml-0" />
104
+ </div>
105
+ </div>
106
+ );
107
+ };
108
+
109
+ export default ListingDetails;
110
+
@@ -1,130 +1,130 @@
1
- import React from 'react';
2
-
3
- import Grid from '~/components/modules/grid';
4
- import Icon from '~/components/modules/icon';
5
- import PillWrapper from '~/components/modules/buttons/pill-wrapper';
6
-
7
- import { capitalize } from '~/util/stringUtils';
8
-
9
- const FieldMapper = ({
10
- item,
11
- fieldsShown,
12
- specialFeatures,
13
- handleFavouriteClick,
14
- isFavorite,
15
- includeFavorite = true
16
- }) => {
17
- const orderedFields = fieldsShown.filter(field => field in item.fields);
18
-
19
- const specialFeaturePills = field => {
20
- return field === 'position' && specialFeatures &&
21
- Object.entries(specialFeatures).map(([featureKey, featureLabel]) => {
22
- return item.fields[featureKey] == 1 && (
23
- <PillWrapper key={featureKey}>{featureLabel}</PillWrapper>
24
- );
25
- });
26
- };
27
-
28
- return (
29
- <>
30
- {orderedFields.map((field, index) => {
31
- let value = item.fields[field];
32
- return (
33
- <Grid.Item
34
- key={field}
35
- className={`
36
- hc-hidden md:hc-block hc-px-2
37
- ${index === 0 ? "hc-pl-7" : ""}
38
- ${field.toLowerCase() === "position" ? "hc-col-span-4 hc-text-balance hc-font-semibold" : (field.toLowerCase() === "state" || field.toLowerCase() == "favorite") ? "hc-col-span-1" : "hc-col-span-2"}
39
- `}
40
- >
41
- <span className="hc-sr-only">{capitalize(field)}</span>
42
- {value}
43
- <br />
44
- {specialFeaturePills(field)}
45
- </Grid.Item>
46
- );
47
- })}
48
- <Grid.Item className="md:hc-hidden">
49
- {fieldsShown.includes("position") &&
50
- <>
51
- <div className="hc-flex hc-items-start">
52
- <div className="hc-flex hc-justify-between hc-items-center hc-min-w-[100%]"> {}
53
- <h3 className="hc-font-bold hc-mb-3 hc-flex-1">{item.fields.position}</h3>
54
- {includeFavorite && <div className="hc-flex hc-justify-end hc-pb-2">
55
- <Icon
56
- icon={isFavorite ? "mdi:heart" : "mdi:heart-outline"}
57
- size="hc-size-3.5"
58
- iconClasses={isFavorite ? "hc-text-primary" : ""}
59
- className={`hc-transition-opacity hc-duration-300 hc-cursor-pointer
60
- ${isFavorite ? "hc-opacity-100" : "hc-text-uiText/60 group-hover:hc-opacity-100"}
61
- `}
62
- onClick={e => handleFavouriteClick(e, item)}
63
- />
64
- </div>
65
- }
66
- </div>
67
- </div>
68
- {specialFeatures && <div className='hc-pb-4'>{specialFeaturePills("position", true)} </div>}
69
- </>
70
- }
71
-
72
- <ul className="hc-space-y-2 hc-text-xs">
73
- {[
74
- {
75
- field: "categoryClass",
76
- name: "categoryClass",
77
- icon: "icon-park-solid:tree-list"
78
- },
79
- {
80
- field: "category",
81
- name: "Category",
82
- icon: "icon-park-solid:tree-list"
83
- },
84
- {
85
- field: "schedule",
86
- name: "Schedule",
87
- icon: "gravity-ui:clock-fill"
88
- },
89
- {
90
- field: "city",
91
- name: "Location",
92
- icon: "fluent:location-16-filled"
93
- },
94
- {
95
- field: "state",
96
- name: "Location",
97
- icon: "fluent:location-16-filled"
98
- },
99
- {
100
- field: "cityState",
101
- name: "Location",
102
- icon: "fluent:location-16-filled"
103
- },
104
- {
105
- field: "travelTime",
106
- name: "Commute",
107
- icon: "ri:pin-distance-fill"
108
- }
109
- ].map(listItem => (
110
- (fieldsShown.includes(listItem.field) && item.fields[listItem.field]) &&
111
- <li
112
- key={listItem.field}
113
- className="hc-flex hc-gap-2"
114
- >
115
- <Icon
116
- icon={listItem.icon}
117
- size="hc-size-3.5"
118
- className="hc-text-uiAccent/30"
119
- />
120
- <span className="hc-sr-only">{listItem.name}</span>
121
- {item.fields[listItem.field]}
122
- </li>
123
- ))}
124
- </ul>
125
- </Grid.Item>
126
- </>
127
- );
128
- };
129
-
130
- export default FieldMapper;
1
+ import React from 'react';
2
+
3
+ import Grid from '~/components/modules/grid';
4
+ import Icon from '~/components/modules/icon';
5
+ import PillWrapper from '~/components/modules/buttons/pill-wrapper';
6
+
7
+ import { capitalize } from '~/util/stringUtils';
8
+
9
+ const FieldMapper = ({
10
+ item,
11
+ fieldsShown,
12
+ specialFeatures,
13
+ handleFavouriteClick,
14
+ isFavorite,
15
+ includeFavorite = true
16
+ }) => {
17
+ const orderedFields = fieldsShown.filter(field => field in item.fields);
18
+
19
+ const specialFeaturePills = field => {
20
+ return field === 'position' && specialFeatures &&
21
+ Object.entries(specialFeatures).map(([featureKey, featureLabel]) => {
22
+ return item.fields[featureKey] == 1 && (
23
+ <PillWrapper key={featureKey}>{featureLabel}</PillWrapper>
24
+ );
25
+ });
26
+ };
27
+
28
+ return (
29
+ <>
30
+ {orderedFields.map((field, index) => {
31
+ let value = item.fields[field];
32
+ return (
33
+ <Grid.Item
34
+ key={field}
35
+ className={`
36
+ hc-hidden md:hc-block hc-px-2
37
+ ${index === 0 ? "hc-pl-7" : ""}
38
+ ${field.toLowerCase() === "position" ? "hc-col-span-4 hc-text-balance hc-font-semibold" : (field.toLowerCase() === "state" || field.toLowerCase() == "favorite") ? "hc-col-span-1" : "hc-col-span-2"}
39
+ `}
40
+ >
41
+ <span className="hc-sr-only">{capitalize(field)}</span>
42
+ {value}
43
+ <br />
44
+ {specialFeaturePills(field)}
45
+ </Grid.Item>
46
+ );
47
+ })}
48
+ <Grid.Item className="md:hc-hidden">
49
+ {fieldsShown.includes("position") &&
50
+ <>
51
+ <div className="hc-flex hc-items-start">
52
+ <div className="hc-flex hc-justify-between hc-items-center hc-min-w-[100%]"> {}
53
+ <h3 className="hc-font-bold hc-mb-3 hc-flex-1">{item.fields.position}</h3>
54
+ {includeFavorite && <div className="hc-flex hc-justify-end hc-pb-2">
55
+ <Icon
56
+ icon={isFavorite ? "mdi:heart" : "mdi:heart-outline"}
57
+ size="hc-size-3.5"
58
+ iconClasses={isFavorite ? "hc-text-primary" : ""}
59
+ className={`hc-transition-opacity hc-duration-300 hc-cursor-pointer
60
+ ${isFavorite ? "hc-opacity-100" : "hc-text-uiText/60 group-hover:hc-opacity-100"}
61
+ `}
62
+ onClick={e => handleFavouriteClick(e, item)}
63
+ />
64
+ </div>
65
+ }
66
+ </div>
67
+ </div>
68
+ {specialFeatures && <div className='hc-pb-4'>{specialFeaturePills("position", true)} </div>}
69
+ </>
70
+ }
71
+
72
+ <ul className="hc-space-y-2 hc-text-xs">
73
+ {[
74
+ {
75
+ field: "categoryClass",
76
+ name: "categoryClass",
77
+ icon: "icon-park-solid:tree-list"
78
+ },
79
+ {
80
+ field: "category",
81
+ name: "Category",
82
+ icon: "icon-park-solid:tree-list"
83
+ },
84
+ {
85
+ field: "schedule",
86
+ name: "Schedule",
87
+ icon: "gravity-ui:clock-fill"
88
+ },
89
+ {
90
+ field: "city",
91
+ name: "Location",
92
+ icon: "fluent:location-16-filled"
93
+ },
94
+ {
95
+ field: "state",
96
+ name: "Location",
97
+ icon: "fluent:location-16-filled"
98
+ },
99
+ {
100
+ field: "cityState",
101
+ name: "Location",
102
+ icon: "fluent:location-16-filled"
103
+ },
104
+ {
105
+ field: "travelTime",
106
+ name: "Commute",
107
+ icon: "ri:pin-distance-fill"
108
+ }
109
+ ].map(listItem => (
110
+ (fieldsShown.includes(listItem.field) && item.fields[listItem.field]) &&
111
+ <li
112
+ key={listItem.field}
113
+ className="hc-flex hc-gap-2"
114
+ >
115
+ <Icon
116
+ icon={listItem.icon}
117
+ size="hc-size-3.5"
118
+ className="hc-text-uiAccent/30"
119
+ />
120
+ <span className="hc-sr-only">{listItem.name}</span>
121
+ {item.fields[listItem.field]}
122
+ </li>
123
+ ))}
124
+ </ul>
125
+ </Grid.Item>
126
+ </>
127
+ );
128
+ };
129
+
130
+ export default FieldMapper;
@@ -1,92 +1,92 @@
1
- import React, { useState, useEffect } from 'react';
2
-
3
- import Button from '~/components/modules/buttons/default';
4
-
5
- const SORT_STATE = {
6
- notSorted: "not-sorted",
7
- sortedAsc: "sorted-asc",
8
- sortedDesc: "sorted-desc"
9
- };
10
-
11
- const HeaderItem = ({
12
- className,
13
- children,
14
- field,
15
- setSortSetting,
16
- sortSetting,
17
- isSortable,
18
- ...rest
19
- }) => {
20
- const [isSorted, setIsSorted] = useState(SORT_STATE.notSorted);
21
-
22
- const handleChange = field => {
23
- if (isSortable === false)
24
- return;
25
- let setting = {
26
- field: field,
27
- type: isSorted === SORT_STATE.sortedAsc ? "desc" : "asc"
28
- };
29
- setSortSetting(setting);
30
- isSorted === SORT_STATE.notSorted
31
- ? setIsSorted(SORT_STATE.sortedAsc)
32
- : isSorted === SORT_STATE.sortedAsc
33
- ? setIsSorted(SORT_STATE.sortedDesc)
34
- : setIsSorted(SORT_STATE.sortedAsc);
35
- };
36
-
37
- useEffect(() => {
38
- if (sortSetting?.field != null && sortSetting.field != field) {
39
- setIsSorted(SORT_STATE.notSorted);
40
- } else if (
41
- sortSetting?.field != null &&
42
- isSorted == SORT_STATE.notSorted &&
43
- sortSetting.field == field
44
- ) {
45
- setIsSorted(
46
- sortSetting.type == "asc"
47
- ? SORT_STATE.sortedAsc
48
- : SORT_STATE.sortedDesc
49
- );
50
- }
51
- }, [sortSetting, isSorted, field]);
52
-
53
- return (
54
- <Button.Btn
55
- onClick={() => handleChange(field)}
56
- variant="none"
57
- size="none"
58
- className={`
59
- hc-p-2 hc-rounded-none hc-text-left hc-normal-case hover:hc-bg-uiAccent/5 focus:hc-bg-uiAccent/5
60
- ${field.toLowerCase() === "position" ? "hc-pl-7 hc-col-span-4" : (field.toLowerCase() === "state" || field.toLowerCase() == "favorite") ? "hc-col-span-1" : "hc-col-span-2"}
61
- ${className ?? ""}
62
- `}
63
- {...rest}
64
- >
65
- <Button.Body>
66
- <span className="hc-font-semibold">{children}</span>
67
- {isSortable && (
68
- <div className="hc-flex hc-flex-col hc-pr-2">
69
- <Button.Icon
70
- icon="bi:caret-up-fill"
71
- size="hc-size-2.5"
72
- className={`
73
- hc-transition-opacity
74
- ${isSorted === "sorted-asc" ? "hc-opacity-100 hc-text-primary" : "hc-opacity-30"}
75
- `}
76
- />
77
- <Button.Icon
78
- icon="bi:caret-down-fill"
79
- size="hc-size-2.5"
80
- className={`
81
- transition-opacity
82
- ${isSorted === "sorted-desc" ? "hc-opacity-100" : "hc-opacity-30"}
83
- `}
84
- />
85
- </div>
86
- )}
87
- </Button.Body>
88
- </Button.Btn>
89
- );
90
- };
91
-
92
- export default HeaderItem;
1
+ import React, { useState, useEffect } from 'react';
2
+
3
+ import Button from '~/components/modules/buttons/default';
4
+
5
+ const SORT_STATE = {
6
+ notSorted: "not-sorted",
7
+ sortedAsc: "sorted-asc",
8
+ sortedDesc: "sorted-desc"
9
+ };
10
+
11
+ const HeaderItem = ({
12
+ className,
13
+ children,
14
+ field,
15
+ setSortSetting,
16
+ sortSetting,
17
+ isSortable,
18
+ ...rest
19
+ }) => {
20
+ const [isSorted, setIsSorted] = useState(SORT_STATE.notSorted);
21
+
22
+ const handleChange = field => {
23
+ if (isSortable === false)
24
+ return;
25
+ let setting = {
26
+ field: field,
27
+ type: isSorted === SORT_STATE.sortedAsc ? "desc" : "asc"
28
+ };
29
+ setSortSetting(setting);
30
+ isSorted === SORT_STATE.notSorted
31
+ ? setIsSorted(SORT_STATE.sortedAsc)
32
+ : isSorted === SORT_STATE.sortedAsc
33
+ ? setIsSorted(SORT_STATE.sortedDesc)
34
+ : setIsSorted(SORT_STATE.sortedAsc);
35
+ };
36
+
37
+ useEffect(() => {
38
+ if (sortSetting?.field != null && sortSetting.field != field) {
39
+ setIsSorted(SORT_STATE.notSorted);
40
+ } else if (
41
+ sortSetting?.field != null &&
42
+ isSorted == SORT_STATE.notSorted &&
43
+ sortSetting.field == field
44
+ ) {
45
+ setIsSorted(
46
+ sortSetting.type == "asc"
47
+ ? SORT_STATE.sortedAsc
48
+ : SORT_STATE.sortedDesc
49
+ );
50
+ }
51
+ }, [sortSetting, isSorted, field]);
52
+
53
+ return (
54
+ <Button.Btn
55
+ onClick={() => handleChange(field)}
56
+ variant="none"
57
+ size="none"
58
+ className={`
59
+ hc-p-2 hc-rounded-none hc-text-left hc-normal-case hover:hc-bg-uiAccent/5 focus:hc-bg-uiAccent/5
60
+ ${field.toLowerCase() === "position" ? "hc-pl-7 hc-col-span-4" : (field.toLowerCase() === "state" || field.toLowerCase() == "favorite") ? "hc-col-span-1" : "hc-col-span-2"}
61
+ ${className ?? ""}
62
+ `}
63
+ {...rest}
64
+ >
65
+ <Button.Body>
66
+ <span className="hc-font-semibold">{children}</span>
67
+ {isSortable && (
68
+ <div className="hc-flex hc-flex-col hc-pr-2">
69
+ <Button.Icon
70
+ icon="bi:caret-up-fill"
71
+ size="hc-size-2.5"
72
+ className={`
73
+ hc-transition-opacity
74
+ ${isSorted === "sorted-asc" ? "hc-opacity-100 hc-text-primary" : "hc-opacity-30"}
75
+ `}
76
+ />
77
+ <Button.Icon
78
+ icon="bi:caret-down-fill"
79
+ size="hc-size-2.5"
80
+ className={`
81
+ transition-opacity
82
+ ${isSorted === "sorted-desc" ? "hc-opacity-100" : "hc-opacity-30"}
83
+ `}
84
+ />
85
+ </div>
86
+ )}
87
+ </Button.Body>
88
+ </Button.Btn>
89
+ );
90
+ };
91
+
92
+ export default HeaderItem;