@abcagency/hc-ui-components 1.3.18 → 1.3.20

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 (190) hide show
  1. package/dist/apis/hcApi.js +85 -183
  2. package/dist/apis/hcApi.js.map +1 -1
  3. package/dist/components/HireControlMap.js +10 -5
  4. package/dist/components/HireControlMap.js.map +1 -1
  5. package/dist/components/modules/accordions/MapAccordionItem.js +10 -67
  6. package/dist/components/modules/accordions/MapAccordionItem.js.map +1 -1
  7. package/dist/components/modules/filter/index.js.map +1 -1
  8. package/dist/components/modules/filter/radio-item.js +1 -2
  9. package/dist/components/modules/filter/radio-item.js.map +1 -1
  10. package/dist/components/modules/jobListing/listing-details-container.js +45 -0
  11. package/dist/components/modules/jobListing/listing-details-container.js.map +1 -0
  12. package/dist/components/modules/jobListing/listing-details.js +25 -24
  13. package/dist/components/modules/jobListing/listing-details.js.map +1 -1
  14. package/dist/components/modules/{maps/list → list}/field-mapper.js +8 -7
  15. package/dist/components/modules/list/field-mapper.js.map +1 -0
  16. package/dist/components/modules/{maps/list → list}/header-item.js +2 -2
  17. package/dist/components/modules/list/header-item.js.map +1 -0
  18. package/dist/components/modules/{maps/list → list}/header.js +6 -4
  19. package/dist/components/modules/list/header.js.map +1 -0
  20. package/dist/components/modules/list/index.js +36 -0
  21. package/dist/components/modules/list/index.js.map +1 -0
  22. package/dist/components/modules/{maps/list → list}/item-expand-card/index.js +3 -1
  23. package/dist/components/modules/list/item-expand-card/index.js.map +1 -0
  24. package/dist/components/modules/{maps/list → list}/item-expand-card/recruiter-contact-nav.js +2 -2
  25. package/dist/components/modules/list/item-expand-card/recruiter-contact-nav.js.map +1 -0
  26. package/dist/components/modules/{maps/list → list}/item-expand-card/recruiter-details.js +1 -1
  27. package/dist/components/modules/list/item-expand-card/recruiter-details.js.map +1 -0
  28. package/dist/components/modules/list/item-expand-card/recruiter-headshot.js.map +1 -0
  29. package/dist/components/modules/list/item-list.js +131 -0
  30. package/dist/components/modules/list/item-list.js.map +1 -0
  31. package/dist/components/modules/list/list-item/index.js +75 -0
  32. package/dist/components/modules/list/list-item/index.js.map +1 -0
  33. package/dist/components/modules/list/list-item/list-item-container.js +47 -0
  34. package/dist/components/modules/list/list-item/list-item-container.js.map +1 -0
  35. package/dist/components/modules/{maps/list/list-item/index.js → list/list-item/list-item.js} +29 -33
  36. package/dist/components/modules/list/list-item/list-item.js.map +1 -0
  37. package/dist/components/modules/maps/map-list.js +3 -3
  38. package/dist/components/modules/maps/map-list.js.map +1 -1
  39. package/dist/contexts/mapContext.js +84 -113
  40. package/dist/contexts/mapContext.js.map +1 -1
  41. package/dist/contexts/mapListContext.js +181 -293
  42. package/dist/contexts/mapListContext.js.map +1 -1
  43. package/dist/contexts/trackEventContext.js +1 -1
  44. package/dist/services/configService.js +10 -28
  45. package/dist/services/configService.js.map +1 -1
  46. package/dist/services/googlePlacesNearbyService.js +33 -58
  47. package/dist/services/googlePlacesNearbyService.js.map +1 -1
  48. package/dist/services/listingAggregatorService.js +35 -75
  49. package/dist/services/listingAggregatorService.js.map +1 -1
  50. package/dist/services/listingEntityService.js +10 -31
  51. package/dist/services/listingEntityService.js.map +1 -1
  52. package/dist/services/listingService.js +26 -60
  53. package/dist/services/listingService.js.map +1 -1
  54. package/dist/services/recruiterService.js +11 -31
  55. package/dist/services/recruiterService.js.map +1 -1
  56. package/dist/types/apis/hcApi.d.ts +5 -0
  57. package/dist/types/clientToken.d.ts +2 -0
  58. package/dist/types/components/modules/accordions/MapAccordionItem.d.ts +9 -0
  59. package/dist/types/components/modules/accordions/default.d.ts +19 -0
  60. package/dist/types/components/modules/buttons/button-group-apply.d.ts +24 -0
  61. package/dist/types/components/modules/buttons/commute-pill.d.ts +5 -0
  62. package/dist/types/components/modules/buttons/default.d.ts +48 -0
  63. package/dist/types/components/modules/buttons/pill-wrapper.d.ts +3 -0
  64. package/dist/types/components/modules/dialogs/apply-dialog.d.ts +8 -0
  65. package/dist/types/components/modules/filter/sort.d.ts +8 -0
  66. package/dist/types/components/modules/grid.d.ts +8 -0
  67. package/dist/types/components/modules/icon.d.ts +10 -0
  68. package/dist/types/components/modules/jobListing/listing-details-container.d.ts +6 -0
  69. package/dist/types/components/modules/jobListing/listing-details.d.ts +18 -0
  70. package/dist/types/components/modules/list/field-mapper.d.ts +10 -0
  71. package/dist/types/components/modules/list/header-item.d.ts +11 -0
  72. package/dist/types/components/modules/list/header.d.ts +11 -0
  73. package/dist/types/components/modules/list/index.d.ts +9 -0
  74. package/dist/types/components/modules/list/item-expand-card/index.d.ts +7 -0
  75. package/dist/types/components/modules/list/item-expand-card/recruiter-contact-nav.d.ts +17 -0
  76. package/dist/types/components/modules/list/item-expand-card/recruiter-details.d.ts +21 -0
  77. package/dist/types/components/modules/list/item-expand-card/recruiter-headshot.d.ts +8 -0
  78. package/dist/types/components/modules/list/item-list.d.ts +21 -0
  79. package/dist/types/components/modules/list/list-item/index.d.ts +12 -0
  80. package/dist/types/components/modules/list/list-item/list-item-container.d.ts +14 -0
  81. package/dist/types/components/modules/list/list-item/list-item.d.ts +3 -0
  82. package/dist/types/constants/eventTypes.d.ts +13 -0
  83. package/dist/types/contexts/mapContext.d.ts +29 -0
  84. package/dist/types/contexts/mapListContext.d.ts +58 -0
  85. package/dist/types/contexts/trackEventContext.d.ts +6 -0
  86. package/dist/types/enums/SectionType.d.ts +9 -0
  87. package/dist/types/hooks/useList.d.ts +13 -0
  88. package/dist/types/services/configService.d.ts +6 -0
  89. package/dist/types/services/googlePlacesNearbyService.d.ts +5 -0
  90. package/dist/types/services/listingAggregatorService.d.ts +12 -0
  91. package/dist/types/services/listingEntityService.d.ts +6 -0
  92. package/dist/types/services/listingService.d.ts +9 -0
  93. package/dist/types/services/recruiterService.d.ts +6 -0
  94. package/dist/types/types/Address.d.ts +7 -0
  95. package/dist/types/types/ContentSection.d.ts +8 -0
  96. package/dist/types/types/GetListingParams.d.ts +8 -0
  97. package/dist/types/types/LatLng.d.ts +4 -0
  98. package/dist/types/types/ListingEntity.d.ts +10 -0
  99. package/dist/types/types/ListingFields.d.ts +20 -0
  100. package/dist/types/types/Listings.d.ts +31 -0
  101. package/dist/types/types/Recruiter.d.ts +9 -0
  102. package/dist/types/types/SimilarListing.d.ts +24 -0
  103. package/dist/types/types/config/Colors.d.ts +8 -0
  104. package/dist/types/types/config/MapConfig.d.ts +29 -0
  105. package/dist/types/types/config/PointsOfInterestConfig.d.ts +13 -0
  106. package/dist/types/types/config/SearchConfig.d.ts +4 -0
  107. package/dist/types/util/filterUtil.d.ts +28 -0
  108. package/dist/types/util/loading.d.ts +3 -0
  109. package/dist/types/util/localStorageUtil.d.ts +3 -0
  110. package/dist/types/util/mapUtil.d.ts +15 -0
  111. package/dist/types/util/sortUtil.d.ts +1 -0
  112. package/dist/types/util/stringUtils.d.ts +1 -0
  113. package/dist/util/filterUtil.js +1 -3
  114. package/dist/util/filterUtil.js.map +1 -1
  115. package/dist/util/localStorageUtil.js +37 -28
  116. package/dist/util/localStorageUtil.js.map +1 -1
  117. package/dist/util/mapUtil.js.map +1 -1
  118. package/package.json +23 -17
  119. package/rollup.config.mjs +23 -19
  120. package/src/apis/{hcApi.js → hcApi.ts} +27 -11
  121. package/src/components/HireControlMap.js +132 -129
  122. package/src/components/modules/accordions/MapAccordionItem.js +32 -74
  123. package/src/components/modules/filter/index.js +89 -89
  124. package/src/components/modules/filter/radio-item.js +0 -1
  125. package/src/components/modules/jobListing/listing-details-container.js +40 -0
  126. package/src/components/modules/jobListing/listing-details.js +209 -99
  127. package/src/components/modules/{maps/list → list}/field-mapper.js +114 -112
  128. package/src/components/modules/{maps/list → list}/header.js +49 -47
  129. package/src/components/modules/list/index.tsx +83 -0
  130. package/src/components/modules/{maps/list → list}/item-expand-card/index.js +24 -22
  131. package/src/components/modules/list/item-list.tsx +198 -0
  132. package/src/components/modules/list/list-item/index.js +70 -0
  133. package/src/components/modules/list/list-item/list-item-container.js +43 -0
  134. package/src/components/modules/{maps/list/list-item/index.js → list/list-item/list-item.js} +32 -38
  135. package/src/components/modules/maps/map-list.js +74 -74
  136. package/src/contexts/mapContext.tsx +129 -0
  137. package/src/contexts/mapListContext.tsx +297 -0
  138. package/src/enums/SectionType.ts +9 -0
  139. package/src/services/{configService.js → configService.ts} +16 -16
  140. package/src/services/{googlePlacesNearbyService.js → googlePlacesNearbyService.ts} +11 -2
  141. package/src/services/listingAggregatorService.ts +76 -0
  142. package/src/services/listingEntityService.ts +16 -0
  143. package/src/services/listingService.ts +40 -0
  144. package/src/services/{recruiterService.js → recruiterService.ts} +18 -17
  145. package/src/types/Address.ts +7 -0
  146. package/src/types/ContentSection.ts +9 -0
  147. package/src/types/GetListingParams.ts +8 -0
  148. package/src/types/LatLng.ts +4 -0
  149. package/src/types/ListingEntity.ts +11 -0
  150. package/src/types/ListingFields.ts +20 -0
  151. package/src/types/Listings.ts +32 -0
  152. package/src/types/Recruiter.ts +9 -0
  153. package/src/types/SimilarListing.ts +24 -0
  154. package/src/types/config/Colors.ts +8 -0
  155. package/src/types/config/MapConfig.ts +30 -0
  156. package/src/types/config/PointsOfInterestConfig.ts +13 -0
  157. package/src/types/config/SearchConfig.ts +4 -0
  158. package/src/util/filterUtil.js +239 -239
  159. package/src/util/localStorageUtil.ts +34 -0
  160. package/src/util/mapUtil.js +91 -91
  161. package/tsconfig.json +23 -0
  162. package/dist/components/modules/maps/list/field-mapper.js.map +0 -1
  163. package/dist/components/modules/maps/list/header-item.js.map +0 -1
  164. package/dist/components/modules/maps/list/header.js.map +0 -1
  165. package/dist/components/modules/maps/list/index.js +0 -102
  166. package/dist/components/modules/maps/list/index.js.map +0 -1
  167. package/dist/components/modules/maps/list/item-expand-card/index.js.map +0 -1
  168. package/dist/components/modules/maps/list/item-expand-card/recruiter-contact-nav.js.map +0 -1
  169. package/dist/components/modules/maps/list/item-expand-card/recruiter-details.js.map +0 -1
  170. package/dist/components/modules/maps/list/item-expand-card/recruiter-headshot.js.map +0 -1
  171. package/dist/components/modules/maps/list/list-item/index.js.map +0 -1
  172. package/dist/services/_virtual/_rollupPluginBabelHelpers.js +0 -372
  173. package/dist/services/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  174. package/dist/services/apis/hcApi.js +0 -189
  175. package/dist/services/apis/hcApi.js.map +0 -1
  176. package/dist/services/clientToken.js +0 -7
  177. package/dist/services/clientToken.js.map +0 -1
  178. package/dist/services/styles/index.css +0 -3
  179. package/src/components/modules/maps/list/index.js +0 -112
  180. package/src/contexts/mapContext.js +0 -101
  181. package/src/contexts/mapListContext.js +0 -242
  182. package/src/services/listingAggregatorService.js +0 -50
  183. package/src/services/listingEntityService.js +0 -15
  184. package/src/services/listingService.js +0 -26
  185. package/src/util/localStorageUtil.js +0 -27
  186. /package/dist/components/modules/{maps/list → list}/item-expand-card/recruiter-headshot.js +0 -0
  187. /package/src/components/modules/{maps/list → list}/header-item.js +0 -0
  188. /package/src/components/modules/{maps/list → list}/item-expand-card/recruiter-contact-nav.js +0 -0
  189. /package/src/components/modules/{maps/list → list}/item-expand-card/recruiter-details.js +0 -0
  190. /package/src/components/modules/{maps/list → list}/item-expand-card/recruiter-headshot.js +0 -0
@@ -1,89 +1,89 @@
1
- import React, { useState } from 'react';
2
-
3
- import FilterSearch from '~/components/modules/filter/search';
4
- import FiltersAccordion from '~/components/modules/accordions/filters';
5
- import FilterLocations from '~/components/modules/filter/location';
6
- import Button from '~/components/modules/buttons/default';
7
-
8
- import { useMap } from '~/contexts/mapContext';
9
- import { useMapList } from '~/contexts/mapListContext';
10
- import { useTrackEvent } from '~/contexts/trackEventContext';
11
-
12
- const Filter = ({
13
- className,
14
- showMap
15
- }) => {
16
- const { trackEvent, eventTypes } = useTrackEvent();
17
- const [hasActiveFilters, setHasActiveFilters] = useState(false);
18
- const [defaultValue, setDefaultValue] = useState(null);
19
- const { setSelectedListItem, setLocation, filterReset } = useMap();
20
- const {
21
- filteredListings,
22
- selectedFilters,
23
- setSelectedFilters,
24
- setMobileTab,
25
- handleSettingFavorites,
26
- setQuery,
27
- siteConfig
28
- } = useMapList();
29
-
30
- return (
31
- <div
32
- className={`
33
- hc-relative hc-max-h-[95vh] md:hc-max-h-screen hc-overflow-y-auto hc-overflow-x-auto
34
- ${className ?? ""}
35
- `}
36
- >
37
- <div className="hc-px-4 md:hc-pt-4 hc-space-y-4">
38
- <FiltersAccordion
39
- setHasActiveFilters={setHasActiveFilters}
40
- defaultValue={defaultValue}
41
- setDefaultValue={value => { setDefaultValue(value == defaultValue ? "" : value); }}
42
- setLocation={setLocation}
43
- setSelectedListItem={setSelectedListItem}
44
- />
45
- <FilterSearch />
46
- {siteConfig.hideLocations !== true &&
47
- <FilterLocations
48
- setHasActiveFilters={setHasActiveFilters}
49
- defaultValue={defaultValue}
50
- showMap={showMap}
51
- setDefaultValue={value => { setDefaultValue(value == defaultValue ? "" : value); }}
52
- setLocation={setLocation}
53
- setSelectedListItem={setSelectedListItem}
54
- />
55
- }
56
- </div>
57
- <div className="hc-sticky hc-bottom-0 hc-inset-x-0 hc-flex hc-items-center hc-justify-between hc-gap-2 hc-py-2 hc-px-4 hc-mt-2 hc-bg-white md:hc-bg-gray-100">
58
- <Button.Btn
59
- onClick={() => {trackEvent(eventTypes.FILTERS_RESET, { filtersRemoved: selectedFilters }); filterReset(); setSelectedFilters({}); setQuery(null); handleSettingFavorites(null); }}
60
- variant="outline"
61
- size="sm"
62
- >
63
- Reset
64
- </Button.Btn>
65
- {selectedFilters && Object.keys(selectedFilters).length > 0 &&
66
- <Button.Btn
67
- onClick={() => setMobileTab("listTab")}
68
- variant="primary"
69
- size="sm"
70
- className={`
71
- md:hc-hidden
72
- ${hasActiveFilters ? "hc-opacity-0 hc-pointer-events-none" : "hc-opacity-100"}
73
- `}
74
- >
75
- <Button.Body>
76
- <Button.Icon
77
- icon="fluent:search-12-filled"
78
- size="hc-size-3.5"
79
- />
80
- Show {filteredListings.length} Jobs
81
- </Button.Body>
82
- </Button.Btn>
83
- }
84
- </div>
85
- </div>
86
- );
87
- };
88
-
89
- export default Filter;
1
+ import React, { useState } from 'react';
2
+
3
+ import FilterSearch from '~/components/modules/filter/search';
4
+ import FiltersAccordion from '~/components/modules/accordions/filters';
5
+ import FilterLocations from '~/components/modules/filter/location';
6
+ import Button from '~/components/modules/buttons/default';
7
+
8
+ import { useMap } from '~/contexts/mapContext';
9
+ import { useMapList } from '~/contexts/mapListContext';
10
+ import { useTrackEvent } from '~/contexts/trackEventContext';
11
+
12
+ const Filter = ({
13
+ className,
14
+ showMap
15
+ }) => {
16
+ const { trackEvent, eventTypes } = useTrackEvent();
17
+ const [hasActiveFilters, setHasActiveFilters] = useState(false);
18
+ const [defaultValue, setDefaultValue] = useState(null);
19
+ const { setSelectedListItem, setLocation, filterReset } = useMap();
20
+ const {
21
+ filteredListings,
22
+ selectedFilters,
23
+ setSelectedFilters,
24
+ setMobileTab,
25
+ handleSettingFavorites,
26
+ setQuery,
27
+ siteConfig
28
+ } = useMapList();
29
+
30
+ return (
31
+ <div
32
+ className={`
33
+ hc-relative hc-max-h-[95vh] md:hc-max-h-screen hc-overflow-y-auto hc-overflow-x-auto
34
+ ${className ?? ""}
35
+ `}
36
+ >
37
+ <div className="hc-px-4 md:hc-pt-4 hc-space-y-4">
38
+ <FiltersAccordion
39
+ setHasActiveFilters={setHasActiveFilters}
40
+ defaultValue={defaultValue}
41
+ setDefaultValue={value => { setDefaultValue(value == defaultValue ? "" : value); }}
42
+ setLocation={setLocation}
43
+ setSelectedListItem={setSelectedListItem}
44
+ />
45
+ <FilterSearch />
46
+ {siteConfig.hideLocations !== true &&
47
+ <FilterLocations
48
+ setHasActiveFilters={setHasActiveFilters}
49
+ defaultValue={defaultValue}
50
+ showMap={showMap}
51
+ setDefaultValue={value => { setDefaultValue(value == defaultValue ? "" : value); }}
52
+ setLocation={setLocation}
53
+ setSelectedListItem={setSelectedListItem}
54
+ />
55
+ }
56
+ </div>
57
+ <div className="hc-sticky hc-bottom-0 hc-inset-x-0 hc-flex hc-items-center hc-justify-between hc-gap-2 hc-py-2 hc-px-4 hc-mt-2 hc-bg-white md:hc-bg-gray-100">
58
+ <Button.Btn
59
+ onClick={() => {trackEvent(eventTypes.FILTERS_RESET, { filtersRemoved: selectedFilters }); filterReset(); setSelectedFilters({}); setQuery(null); handleSettingFavorites(null); }}
60
+ variant="outline"
61
+ size="sm"
62
+ >
63
+ Reset
64
+ </Button.Btn>
65
+ {selectedFilters && Object.keys(selectedFilters).length > 0 &&
66
+ <Button.Btn
67
+ onClick={() => setMobileTab("listTab")}
68
+ variant="primary"
69
+ size="sm"
70
+ className={`
71
+ md:hc-hidden
72
+ ${hasActiveFilters ? "hc-opacity-0 hc-pointer-events-none" : "hc-opacity-100"}
73
+ `}
74
+ >
75
+ <Button.Body>
76
+ <Button.Icon
77
+ icon="fluent:search-12-filled"
78
+ size="hc-size-3.5"
79
+ />
80
+ Show {filteredListings.length} Jobs
81
+ </Button.Body>
82
+ </Button.Btn>
83
+ }
84
+ </div>
85
+ </div>
86
+ );
87
+ };
88
+
89
+ export default Filter;
@@ -42,7 +42,6 @@ const RadioItem = ({
42
42
  onClick={() => {
43
43
  changeHandler();
44
44
  }}
45
- onChange={() => { }}
46
45
  />
47
46
  <span className="hc-font-medium">{item.key}</span>
48
47
  {isActive &&
@@ -0,0 +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, recruiters }) => {
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
+ recruiters={recruiters}
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,99 +1,209 @@
1
- import React from 'react';
2
-
3
- import RecruiterHeadshot from '~/components/modules/maps/list/item-expand-card/recruiter-headshot';
4
- import RecruiterDetails from '~/components/modules/maps/list/item-expand-card/recruiter-details';
5
- import RecruiterContactNav from '~/components/modules/maps/list/item-expand-card/recruiter-contact-nav';
6
- import ApplyButtonGroup from '~/components/modules/buttons/button-group-apply';
7
- import CommutePill from '~/components/modules/buttons/commute-pill';
8
-
9
- import { useMap } from '~/contexts/mapContext';
10
- import { useMapList } from '~/contexts/mapListContext';
11
- import { useTrackEvent } from '~/contexts/trackEventContext';
12
-
13
- const ListingDetails = ({ item, recruiters }) => {
14
- const { trackEvent, eventTypes } = useTrackEvent();
15
- const { travelTime } = useMap();
16
- const { siteConfig, navigateToDetails, navigateToEasyApply, Link, linkFormat } = useMapList();
17
- if (!item) {
18
- return null;
19
- }
20
- let matchingRecruiter = !recruiters ? null : recruiters[item?.recruiterId];
21
- return (
22
- <div className="hc-w-full">
23
- <div className="hc-grow hc-flex hc-flex-wrap hc-items-center hc-gap-4">
24
- {matchingRecruiter?.headshot && (
25
- <RecruiterHeadshot
26
- image={`https:${matchingRecruiter.headshot}`}
27
- alt={matchingRecruiter?.firstName}
28
- className="hc-bg-gray-300"
29
- />
30
- )}
31
- {matchingRecruiter && (
32
- <RecruiterDetails
33
- contactNav={
34
- <RecruiterContactNav>
35
- {matchingRecruiter?.mobilePhone && (
36
- <RecruiterContactNav.Button
37
- href={`tel:${matchingRecruiter.mobilePhone}`}
38
- title={`Call ${matchingRecruiter.mobilePhone}`}
39
- icon="fluent:phone-32-regular"
40
- />
41
- )}
42
- {matchingRecruiter?.email && (
43
- <RecruiterContactNav.Button
44
- href={`mailto:${matchingRecruiter.email}`}
45
- title={`email ${matchingRecruiter.email}`}
46
- icon="bi:envelope-at"
47
- />
48
- )}
49
- {matchingRecruiter?.linkedIn && (
50
- <RecruiterContactNav.Button
51
- href={matchingRecruiter.linkedIn}
52
- title="LinkedIn"
53
- icon="ant-design:linkedin-outlined"
54
- />
55
- )}
56
- </RecruiterContactNav>
57
- }
58
- >
59
- {matchingRecruiter?.firstName && matchingRecruiter?.lastName && (
60
- <RecruiterDetails.Title>
61
- {`${matchingRecruiter?.firstName} ${matchingRecruiter?.lastName}`}
62
- </RecruiterDetails.Title>
63
- )}
64
- {item.details?.recruiter?.title && (
65
- <RecruiterDetails.Text>
66
- {item.details.recruiter.title}
67
- </RecruiterDetails.Text>
68
- )}
69
- </RecruiterDetails>
70
- )}
71
- <ApplyButtonGroup
72
- useDetailsPostMessage={siteConfig.useDetailsPostMessage}
73
- navigateToDetails={navigateToDetails}
74
- navigateToEasyApply={navigateToEasyApply}
75
- Link={Link}
76
- linkFormat={linkFormat}
77
- includeDialog={siteConfig.useApplyDialog}
78
- internalApplyLink={siteConfig.internalApplyLink}
79
- companyName={siteConfig.companyName}
80
- applyUrl={item?.applyUrl}
81
- itemId={item.id}
82
- item={item}
83
- trackEvent={trackEvent}
84
- eventTypes={eventTypes}
85
- detailsUrl={item.useClientJobUrl ? item?.detailsUrl : `${siteConfig.jobsDomain}${item.id}`}
86
- className={`
87
- 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
88
- ${matchingRecruiter ? "lg:hc-flex-col lg:hc-w-auto" : "lg:hc-flex-row"}
89
- `}
90
- />
91
- </div>
92
- <div className="hc-w-full">
93
- <CommutePill travelTime={travelTime} className="hc-ml-0" />
94
- </div>
95
- </div>
96
- );
97
- };
98
-
99
- export default ListingDetails;
1
+ // import React from 'react';
2
+
3
+ // import RecruiterHeadshot from '~/components/modules/list/item-expand-card/recruiter-headshot';
4
+ // import RecruiterDetails from '~/components/modules/list/item-expand-card/recruiter-details';
5
+ // import RecruiterContactNav from '~/components/modules/list/item-expand-card/recruiter-contact-nav';
6
+ // import ApplyButtonGroup from '~/components/modules/buttons/button-group-apply';
7
+ // import CommutePill from '~/components/modules/buttons/commute-pill';
8
+
9
+ // import { useMap } from '~/contexts/mapContext';
10
+ // import { useMapList } from '~/contexts/mapListContext';
11
+ // import { useTrackEvent } from '~/contexts/trackEventContext';
12
+
13
+ // const ListingDetails = ({ item, recruiters }) => {
14
+ // const { trackEvent, eventTypes } = useTrackEvent();
15
+ // const { travelTime } = useMap();
16
+ // const { siteConfig, navigateToDetails, navigateToEasyApply, Link, linkFormat } = useMapList();
17
+ // if (!item) {
18
+ // return null;
19
+ // }
20
+ // let matchingRecruiter = !recruiters ? null : recruiters[item?.recruiterId];
21
+ // return (
22
+ // <div className="hc-w-full">
23
+ // <div className="hc-grow hc-flex hc-flex-wrap hc-items-center hc-gap-4">
24
+ // {matchingRecruiter?.headshot && (
25
+ // <RecruiterHeadshot
26
+ // image={`https:${matchingRecruiter.headshot}`}
27
+ // alt={matchingRecruiter?.firstName}
28
+ // className="hc-bg-gray-300"
29
+ // />
30
+ // )}
31
+ // {matchingRecruiter && (
32
+ // <RecruiterDetails
33
+ // contactNav={
34
+ // <RecruiterContactNav>
35
+ // {matchingRecruiter?.mobilePhone && (
36
+ // <RecruiterContactNav.Button
37
+ // href={`tel:${matchingRecruiter.mobilePhone}`}
38
+ // title={`Call ${matchingRecruiter.mobilePhone}`}
39
+ // icon="fluent:phone-32-regular"
40
+ // />
41
+ // )}
42
+ // {matchingRecruiter?.email && (
43
+ // <RecruiterContactNav.Button
44
+ // href={`mailto:${matchingRecruiter.email}`}
45
+ // title={`email ${matchingRecruiter.email}`}
46
+ // icon="bi:envelope-at"
47
+ // />
48
+ // )}
49
+ // {matchingRecruiter?.linkedIn && (
50
+ // <RecruiterContactNav.Button
51
+ // href={matchingRecruiter.linkedIn}
52
+ // title="LinkedIn"
53
+ // icon="ant-design:linkedin-outlined"
54
+ // />
55
+ // )}
56
+ // </RecruiterContactNav>
57
+ // }
58
+ // >
59
+ // {matchingRecruiter?.firstName && matchingRecruiter?.lastName && (
60
+ // <RecruiterDetails.Title>
61
+ // {`${matchingRecruiter?.firstName} ${matchingRecruiter?.lastName}`}
62
+ // </RecruiterDetails.Title>
63
+ // )}
64
+ // {item.details?.recruiter?.title && (
65
+ // <RecruiterDetails.Text>
66
+ // {item.details.recruiter.title}
67
+ // </RecruiterDetails.Text>
68
+ // )}
69
+ // </RecruiterDetails>
70
+ // )}
71
+ // <ApplyButtonGroup
72
+ // useDetailsPostMessage={siteConfig.useDetailsPostMessage}
73
+ // navigateToDetails={navigateToDetails}
74
+ // navigateToEasyApply={navigateToEasyApply}
75
+ // Link={Link}
76
+ // linkFormat={linkFormat}
77
+ // includeDialog={siteConfig.useApplyDialog}
78
+ // internalApplyLink={siteConfig.internalApplyLink}
79
+ // companyName={siteConfig.companyName}
80
+ // applyUrl={item?.applyUrl}
81
+ // itemId={item.id}
82
+ // item={item}
83
+ // trackEvent={trackEvent}
84
+ // eventTypes={eventTypes}
85
+ // detailsUrl={item.useClientJobUrl ? item?.detailsUrl : `${siteConfig.jobsDomain}${item.id}`}
86
+ // className={`
87
+ // 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
88
+ // ${matchingRecruiter ? "lg:hc-flex-col lg:hc-w-auto" : "lg:hc-flex-row"}
89
+ // `}
90
+ // />
91
+ // </div>
92
+ // <div className="hc-w-full">
93
+ // <CommutePill travelTime={travelTime} className="hc-ml-0" />
94
+ // </div>
95
+ // </div>
96
+ // );
97
+ // };
98
+
99
+ // export default ListingDetails;
100
+ import React from 'react';
101
+ import RecruiterHeadshot from '~/components/modules/list/item-expand-card/recruiter-headshot';
102
+ import RecruiterDetails from '~/components/modules/list/item-expand-card/recruiter-details';
103
+ import RecruiterContactNav from '~/components/modules/list/item-expand-card/recruiter-contact-nav';
104
+ import ApplyButtonGroup from '~/components/modules/buttons/button-group-apply';
105
+ import CommutePill from '~/components/modules/buttons/commute-pill';
106
+
107
+ const ListingDetails = ({
108
+ item,
109
+ recruiters,
110
+ travelTime,
111
+ useDetailsPostMessage,
112
+ navigateToDetails,
113
+ navigateToEasyApply,
114
+ Link,
115
+ linkFormat,
116
+ useApplyDialog,
117
+ internalApplyLink,
118
+ companyName,
119
+ jobsDomain,
120
+ trackEvent,
121
+ eventTypes
122
+ }) => {
123
+ console.log(item);
124
+ if (!item) {
125
+ return null;
126
+ }
127
+
128
+ let matchingRecruiter = !recruiters ? null : recruiters[item?.recruiterId];
129
+
130
+ return (
131
+ <div className="hc-w-full">
132
+ <div className="hc-grow hc-flex hc-flex-wrap hc-items-center hc-gap-4">
133
+ {matchingRecruiter?.headshot && (
134
+ <RecruiterHeadshot
135
+ image={`https:${matchingRecruiter.headshot}`}
136
+ alt={matchingRecruiter?.firstName}
137
+ className="hc-bg-gray-300"
138
+ />
139
+ )}
140
+ {matchingRecruiter && (
141
+ <RecruiterDetails
142
+ contactNav={
143
+ <RecruiterContactNav>
144
+ {matchingRecruiter?.mobilePhone && (
145
+ <RecruiterContactNav.Button
146
+ href={`tel:${matchingRecruiter.mobilePhone}`}
147
+ title={`Call ${matchingRecruiter.mobilePhone}`}
148
+ icon="fluent:phone-32-regular"
149
+ />
150
+ )}
151
+ {matchingRecruiter?.email && (
152
+ <RecruiterContactNav.Button
153
+ href={`mailto:${matchingRecruiter.email}`}
154
+ title={`email ${matchingRecruiter.email}`}
155
+ icon="bi:envelope-at"
156
+ />
157
+ )}
158
+ {matchingRecruiter?.linkedIn && (
159
+ <RecruiterContactNav.Button
160
+ href={matchingRecruiter.linkedIn}
161
+ title="LinkedIn"
162
+ icon="ant-design:linkedin-outlined"
163
+ />
164
+ )}
165
+ </RecruiterContactNav>
166
+ }
167
+ >
168
+ {matchingRecruiter?.firstName && matchingRecruiter?.lastName && (
169
+ <RecruiterDetails.Title>
170
+ {`${matchingRecruiter?.firstName} ${matchingRecruiter?.lastName}`}
171
+ </RecruiterDetails.Title>
172
+ )}
173
+ {item.details?.recruiter?.title && (
174
+ <RecruiterDetails.Text>
175
+ {item.details.recruiter.title}
176
+ </RecruiterDetails.Text>
177
+ )}
178
+ </RecruiterDetails>
179
+ )}
180
+ <ApplyButtonGroup
181
+ useDetailsPostMessage={useDetailsPostMessage}
182
+ navigateToDetails={navigateToDetails}
183
+ navigateToEasyApply={navigateToEasyApply}
184
+ Link={Link}
185
+ linkFormat={linkFormat}
186
+ includeDialog={useApplyDialog}
187
+ internalApplyLink={internalApplyLink}
188
+ companyName={companyName}
189
+ applyUrl={item?.applyUrl}
190
+ itemId={item.id}
191
+ item={item}
192
+ trackEvent={trackEvent}
193
+ eventTypes={eventTypes}
194
+ detailsUrl={item.useClientJobUrl ? item?.detailsUrl : `${jobsDomain}${item.id}`}
195
+ className={`
196
+ 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
197
+ ${matchingRecruiter ? "lg:hc-flex-col lg:hc-w-auto" : "lg:hc-flex-row"}
198
+ `}
199
+ />
200
+ </div>
201
+ <div className="hc-w-full">
202
+ <CommutePill travelTime={travelTime} className="hc-ml-0" />
203
+ </div>
204
+ </div>
205
+ );
206
+ };
207
+
208
+ export default ListingDetails;
209
+