@abcagency/hc-ui-components 1.3.21 → 1.3.22

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 (120) hide show
  1. package/{bundle.js → bundleDist/bundle.js} +30 -19
  2. package/bundleDist/bundle.js.map +1 -0
  3. package/bundleDist/dist/styles/index.css +3 -0
  4. package/bundleDist/dist/types/apis/hcApi.d.ts +5 -0
  5. package/bundleDist/dist/types/clientToken.d.ts +2 -0
  6. package/bundleDist/dist/types/components/containers/accordions/map-accordion-item-container.d.ts +12 -0
  7. package/bundleDist/dist/types/components/containers/jobListing/listing-details-container.d.ts +6 -0
  8. package/bundleDist/dist/types/components/containers/list/item-list-container.d.ts +9 -0
  9. package/bundleDist/dist/types/components/containers/list/list-item/list-item-container.d.ts +14 -0
  10. package/bundleDist/dist/types/components/modules/accordions/MapAccordionItem.d.ts +10 -0
  11. package/bundleDist/dist/types/components/modules/accordions/default.d.ts +19 -0
  12. package/bundleDist/dist/types/components/modules/buttons/button-group-apply.d.ts +24 -0
  13. package/bundleDist/dist/types/components/modules/buttons/commute-pill.d.ts +5 -0
  14. package/bundleDist/dist/types/components/modules/buttons/default.d.ts +48 -0
  15. package/bundleDist/dist/types/components/modules/buttons/pill-wrapper.d.ts +3 -0
  16. package/bundleDist/dist/types/components/modules/dialogs/apply-dialog.d.ts +8 -0
  17. package/bundleDist/dist/types/components/modules/filter/sort.d.ts +8 -0
  18. package/bundleDist/dist/types/components/modules/grid.d.ts +8 -0
  19. package/bundleDist/dist/types/components/modules/icon.d.ts +10 -0
  20. package/bundleDist/dist/types/components/modules/jobListing/listing-details.d.ts +18 -0
  21. package/bundleDist/dist/types/components/modules/list/field-mapper.d.ts +10 -0
  22. package/bundleDist/dist/types/components/modules/list/header-item.d.ts +11 -0
  23. package/bundleDist/dist/types/components/modules/list/header.d.ts +11 -0
  24. package/bundleDist/dist/types/components/modules/list/item-expand-card/index.d.ts +7 -0
  25. package/bundleDist/dist/types/components/modules/list/item-expand-card/recruiter-contact-nav.d.ts +17 -0
  26. package/bundleDist/dist/types/components/modules/list/item-expand-card/recruiter-details.d.ts +21 -0
  27. package/bundleDist/dist/types/components/modules/list/item-expand-card/recruiter-headshot.d.ts +8 -0
  28. package/bundleDist/dist/types/components/modules/list/item-list.d.ts +20 -0
  29. package/bundleDist/dist/types/components/modules/list/list-item/list-item.d.ts +3 -0
  30. package/bundleDist/dist/types/constants/eventTypes.d.ts +13 -0
  31. package/bundleDist/dist/types/contexts/mapContext.d.ts +29 -0
  32. package/bundleDist/dist/types/contexts/mapListContext.d.ts +59 -0
  33. package/bundleDist/dist/types/contexts/trackEventContext.d.ts +6 -0
  34. package/bundleDist/dist/types/enums/SectionType.d.ts +9 -0
  35. package/bundleDist/dist/types/hooks/useList.d.ts +13 -0
  36. package/bundleDist/dist/types/services/configService.d.ts +6 -0
  37. package/bundleDist/dist/types/services/googlePlacesNearbyService.d.ts +5 -0
  38. package/bundleDist/dist/types/services/listingAggregatorService.d.ts +12 -0
  39. package/bundleDist/dist/types/services/listingEntityService.d.ts +6 -0
  40. package/bundleDist/dist/types/services/listingService.d.ts +9 -0
  41. package/bundleDist/dist/types/services/recruiterService.d.ts +6 -0
  42. package/bundleDist/dist/types/types/Address.d.ts +7 -0
  43. package/bundleDist/dist/types/types/ContentSection.d.ts +8 -0
  44. package/bundleDist/dist/types/types/GetListingParams.d.ts +8 -0
  45. package/bundleDist/dist/types/types/LatLng.d.ts +4 -0
  46. package/bundleDist/dist/types/types/ListingEntity.d.ts +10 -0
  47. package/bundleDist/dist/types/types/ListingFields.d.ts +25 -0
  48. package/bundleDist/dist/types/types/Listings.d.ts +31 -0
  49. package/bundleDist/dist/types/types/Recruiter.d.ts +9 -0
  50. package/bundleDist/dist/types/types/SimilarListing.d.ts +24 -0
  51. package/bundleDist/dist/types/types/config/Colors.d.ts +8 -0
  52. package/bundleDist/dist/types/types/config/MapConfig.d.ts +30 -0
  53. package/bundleDist/dist/types/types/config/PointsOfInterestConfig.d.ts +13 -0
  54. package/bundleDist/dist/types/types/config/SearchConfig.d.ts +4 -0
  55. package/bundleDist/dist/types/util/filterUtil.d.ts +28 -0
  56. package/bundleDist/dist/types/util/loading.d.ts +3 -0
  57. package/bundleDist/dist/types/util/localStorageUtil.d.ts +3 -0
  58. package/bundleDist/dist/types/util/mapUtil.d.ts +15 -0
  59. package/bundleDist/dist/types/util/sortUtil.d.ts +1 -0
  60. package/bundleDist/dist/types/util/stringUtils.d.ts +1 -0
  61. package/bundleDist/dist/types/util/urlFilterUtil.d.ts +8 -0
  62. package/bundleDist/styles/index.css +3 -0
  63. package/dist/components/containers/accordions/filter-container.js +4 -2
  64. package/dist/components/containers/accordions/filter-container.js.map +1 -1
  65. package/dist/components/containers/accordions/filter-item-container.js +6 -1
  66. package/dist/components/containers/accordions/filter-item-container.js.map +1 -1
  67. package/dist/components/containers/accordions/map-accordion-item-container.js +4 -2
  68. package/dist/components/containers/accordions/map-accordion-item-container.js.map +1 -1
  69. package/dist/components/containers/jobListing/listing-details-container.js +2 -2
  70. package/dist/components/containers/jobListing/listing-details-container.js.map +1 -1
  71. package/dist/components/containers/list/item-list-container.js +2 -2
  72. package/dist/components/containers/list/item-list-container.js.map +1 -1
  73. package/dist/components/modules/accordions/MapAccordionItem.js +2 -1
  74. package/dist/components/modules/accordions/MapAccordionItem.js.map +1 -1
  75. package/dist/components/modules/dialogs/apply-dialog.js +1 -1
  76. package/dist/components/modules/dialogs/apply-dialog.js.map +1 -1
  77. package/dist/components/modules/filter/search.js +1 -1
  78. package/dist/components/modules/filter/search.js.map +1 -1
  79. package/dist/components/modules/jobListing/listing-details.js +5 -4
  80. package/dist/components/modules/jobListing/listing-details.js.map +1 -1
  81. package/dist/components/modules/list/field-mapper.js +1 -1
  82. package/dist/components/modules/list/field-mapper.js.map +1 -1
  83. package/dist/components/modules/list/item-list.js.map +1 -1
  84. package/dist/contexts/mapListContext.js.map +1 -1
  85. package/dist/services/listingAggregatorService.js.map +1 -1
  86. package/dist/styles/index.css +3 -1
  87. package/dist/types/components/containers/jobListing/listing-details-container.d.ts +2 -2
  88. package/dist/types/components/modules/accordions/MapAccordionItem.d.ts +2 -1
  89. package/dist/types/components/modules/jobListing/listing-details.d.ts +2 -2
  90. package/dist/types/components/modules/list/item-list.d.ts +0 -1
  91. package/dist/types/types/ListingFields.d.ts +5 -0
  92. package/dist/types/types/config/MapConfig.d.ts +1 -0
  93. package/dist/util/filterUtil.js +2 -2
  94. package/dist/util/filterUtil.js.map +1 -1
  95. package/package.json +1 -1
  96. package/postcss.config.js +5 -4
  97. package/rollup.config.mjs +1 -1
  98. package/src/components/containers/accordions/filter-container.js +2 -1
  99. package/src/components/containers/accordions/filter-item-container.js +66 -62
  100. package/src/components/containers/accordions/map-accordion-item-container.js +70 -70
  101. package/src/components/containers/jobListing/listing-details-container.js +2 -2
  102. package/src/components/containers/list/item-list-container.tsx +2 -3
  103. package/src/components/modules/accordions/MapAccordionItem.js +30 -29
  104. package/src/components/modules/dialogs/apply-dialog.js +48 -48
  105. package/src/components/modules/filter/search.js +1 -1
  106. package/src/components/modules/jobListing/listing-details.js +5 -5
  107. package/src/components/modules/list/field-mapper.js +1 -1
  108. package/src/components/modules/list/item-list.tsx +0 -1
  109. package/src/contexts/mapListContext.tsx +311 -311
  110. package/src/services/listingAggregatorService.ts +76 -76
  111. package/src/styles/index.css +14 -115
  112. package/src/types/ListingFields.ts +5 -0
  113. package/src/types/config/MapConfig.ts +1 -0
  114. package/src/util/filterUtil.js +239 -239
  115. package/stats.html +1 -1
  116. package/tailwind.config.js +4 -4
  117. package/bundle.js.map +0 -1
  118. package/dist/node_modules/@babel/runtime/helpers/esm/extends.js +0 -12
  119. package/dist/node_modules/@babel/runtime/helpers/esm/extends.js.map +0 -1
  120. package/styles/index.css +0 -1
@@ -6,6 +6,11 @@ export type ListingFields = {
6
6
  category?: string;
7
7
  categoryClass?: string;
8
8
  shift?: string;
9
+ custom1?: string;
10
+ custom2?: string;
11
+ custom3?: string;
12
+ custom4?: string;
13
+ custom5?: string;
9
14
  cityState?: string;
10
15
  city?: string;
11
16
  state?: string;
@@ -26,4 +26,5 @@ export type MapConfig = {
26
26
  pointsOfInterestConfig: PointsOfInterestConfig;
27
27
  showMap: boolean;
28
28
  companyId: string;
29
+ SubcategoryRequireCategory: boolean;
29
30
  };
@@ -40,7 +40,7 @@ var getSpecialFeatureOptions = function getSpecialFeatureOptions(listings, filte
40
40
  var _ref2 = _slicedToArray(_ref, 2),
41
41
  featureKey = _ref2[0],
42
42
  featureName = _ref2[1];
43
- if (listing.fields[featureKey] === 1) {
43
+ if (listing.fields[featureKey] == 1) {
44
44
  featureCounts[featureName] += 1;
45
45
  }
46
46
  });
@@ -165,7 +165,7 @@ var applyFilters = function applyFilters(allListings, selectedFilters, query, li
165
165
  filterName = _ref10[0],
166
166
  filterValue = _ref10[1];
167
167
  var listingFieldName = invertedSpecialFeaturesMap[filterName];
168
- return filterValue && listing.fields[listingFieldName] === 1;
168
+ return filterValue && listing.fields[listingFieldName] == 1;
169
169
  });
170
170
  });
171
171
  } else if (Object.keys(filterItems).length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"filterUtil.js","sources":["../../src/util/filterUtil.js"],"sourcesContent":["import { getDistinctItemsByProximity } from '~/util/mapUtil';\r\n\r\nimport Fuse from 'fuse.js';\r\n\r\nexport const getFilterOptions = (listings, filteredListings, field, excludeZeroCount = null) => {\r\n\tconst options = new Set();\r\n\tlistings.forEach(listing => {\r\n\t\tif (listing.fields[field]) {\r\n\t\t\toptions.add(listing.fields[field]);\r\n\t\t}\r\n\t});\r\n\r\n\tconst optionCounts = {};\r\n\toptions.forEach(option => {\r\n\t\toptionCounts[option] = 0;\r\n\t});\r\n\r\n\tfilteredListings.forEach(listing => {\r\n\t\tconst value = listing.fields[field];\r\n\t\tif (value && optionCounts.hasOwnProperty(value)) {\r\n\t\t\toptionCounts[value] += 1;\r\n\t\t}\r\n\t});\r\n\r\n\treturn Array.from(options)\r\n\t\t.sort()\r\n\t\t.map(option => ({\r\n\t\t\tname: option,\r\n\t\t\tcount: optionCounts[option] || 0\r\n\t\t}))\r\n\t\t.filter(option => !(excludeZeroCount === true && option.count === 0));\r\n};\r\n\r\nexport const getSpecialFeatureOptions = (listings, filteredListings, siteConfig, favorites) => {\r\n\tconst specialFeatures = siteConfig.specialFeatures;\r\n\tconst featureCounts = Object.keys(specialFeatures).sort().reduce((acc, key) => {\r\n\t\tacc[specialFeatures[key]] = 0;\r\n\t\treturn acc;\r\n\t}, {});\r\n\r\n\tfilteredListings.forEach(listing => {\r\n\t\tObject.entries(specialFeatures).forEach(([featureKey, featureName]) => {\r\n\t\t\tif (listing.fields[featureKey] === 1) {\r\n\t\t\t\tfeatureCounts[featureName] += 1;\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tconst specialFeatureOptions = Object.entries(featureCounts).map(([name, count]) => ({\r\n\t\tname,\r\n\t\tcount\r\n\t}));\r\n\r\n\tfor (let option of specialFeatureOptions) {\r\n\t\tif (option.name === 'Favorite') {\r\n\t\t\toption.count = filteredListings.filter(x => favorites.includes(x.id)).length;\r\n\t\t}\r\n\t}\r\n\r\n\treturn specialFeatureOptions;\r\n};\r\n\r\nconst getPointsOfInterestOptions = pointsOfInterestNames => {\r\n\treturn Object.entries(pointsOfInterestNames).sort().map(([key, name]) => ({\r\n\t\tkey,\r\n\t\tname\r\n\t}));\r\n};\r\n\r\nexport const generateFilterOptions = (\r\n\tfilteredListings,\r\n\tallListings,\r\n\tsiteConfig,\r\n\tfilterOptions,\r\n\tparentField,\r\n\tfavorites\r\n) => {\r\n\tif (allListings.length > 0) {\r\n\t\tconst dynamicFilters = siteConfig.fieldFiltersShown.map(fieldName => {\r\n\t\t\tif (fieldName === parentField && filterOptions?.filters) {\r\n\t\t\t\treturn filterOptions.filters.find(filter => filter.id === fieldName);\r\n\t\t\t}\r\n\t\t\tif (fieldName == \"specialFeatures\") {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: fieldName,\r\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\r\n\t\t\t\t\titems: getSpecialFeatureOptions(allListings, filteredListings, siteConfig, favorites).sort()\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tid: fieldName,\r\n\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\r\n\t\t\t\titems: getFilterOptions(allListings, filteredListings, fieldName)\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst locations =\r\n\t\t\tsiteConfig.locationFiltersShown.map((fieldName, index) => {\r\n\t\t\t\tif (index === 0 && filterOptions?.locations) {\r\n\t\t\t\t\treturn filterOptions.locations.find(filter => filter.id === fieldName);\r\n\t\t\t\t}\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: fieldName,\r\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\r\n\t\t\t\t\titems: getFilterOptions(allListings, filteredListings, fieldName, true)\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\tconst pointsOfInterest = {\r\n\t\t\tid: \"pointsOfInterest\",\r\n\t\t\ttitle: siteConfig.pointsOfInterestConfig.title,\r\n\t\t\titems: getPointsOfInterestOptions(\r\n\t\t\t\tsiteConfig.pointsOfInterestConfig.pointsOfInterestNames\r\n\t\t\t)\r\n\t\t};\r\n\r\n\t\treturn {\r\n\t\t\tfilters: dynamicFilters,\r\n\t\t\tlocations: locations,\r\n\t\t\tpointsOfInterest: pointsOfInterest\r\n\t\t};\r\n\t}\r\n\r\n\treturn null;\r\n};\r\n\r\nexport const applyFilters = (\r\n\tallListings,\r\n\tselectedFilters,\r\n\tquery,\r\n\tlistingEntities,\r\n\tfavorites,\r\n\tsiteConfig\r\n) => {\r\n\tlet results = allListings;\r\n\tlet invertedSpecialFeaturesMap;\r\n\tif (siteConfig.specialFeatures) {\r\n\t\tinvertedSpecialFeaturesMap = Object.entries(siteConfig.specialFeatures).reduce((acc, [key, value]) => {\r\n\t\t\tacc[value] = key;\r\n\t\t\treturn acc;\r\n\t\t}, {});\r\n\r\n\t}\r\n\tconst hasFavorite = !!selectedFilters.specialFeatures && !!selectedFilters.specialFeatures.Favorite;\r\n\r\n\tif (hasFavorite && selectedFilters.specialFeatures.Favorite == true) {\r\n\t\tresults = results.filter(x => favorites.includes(x.id));\r\n\t}\r\n\tvar favorite;\r\n\tif (hasFavorite) {\r\n\t\tfavorite = selectedFilters.specialFeatures.Favorite;\r\n\t\tdelete selectedFilters.specialFeatures.Favorite;\r\n\t}\r\n\tfor (const [field, filterItems] of Object.entries(selectedFilters)) {\r\n\t\tconst formattedField = field;\r\n\t\tif (field === \"pointsOfInterest\") continue;\r\n\t\tif (field === \"specialFeatures\" && invertedSpecialFeaturesMap && Object.keys(filterItems).length > 0) {\r\n\t\t\tresults = results.filter(listing => {\r\n\t\t\t\treturn Object.entries(filterItems).some(([filterName, filterValue]) => {\r\n\t\t\t\t\tconst listingFieldName = invertedSpecialFeaturesMap[filterName];\r\n\t\t\t\t\treturn filterValue && listing.fields[listingFieldName] === 1;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t} else if (Object.keys(filterItems).length > 0) {\r\n\t\t\tresults = results.filter(listing =>\r\n\t\t\t\tfilterItems.hasOwnProperty(listing.fields[formattedField])\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\tif (query) {\r\n\t\tresults = searchResults(results, query);\r\n\t}\r\n\tconst distinctItems = getDistinctItemsByProximity(results, listingEntities);\r\n\tif (hasFavorite) {\r\n\t\tselectedFilters.specialFeatures.Favorite = favorite;\r\n\t}\r\n\treturn { filteredListings: results, mapItems: distinctItems };\r\n};\r\n\r\nfunction searchResults(results, query) {\r\n\tconst fields = [\r\n\t\t'id',\r\n\t\t'fields.posted',\r\n\t\t'fields.subtitle',\r\n\t\t'fields.education',\r\n\t\t'fields.position',\r\n\t\t'fields.category',\r\n\t\t'fields.categoryclass',\r\n\t\t'fields.shift',\r\n\t\t'fields.citystate',\r\n\t\t'fields.city',\r\n\t\t'fields.state',\r\n\t\t'fields.schedule',\r\n\t\t'fields.customflag1',\r\n\t\t'fields.bonus',\r\n\t\t'fields.remote',\r\n\t\t'fields.useclientjoburl',\r\n\t\t'fields.datecreated',\r\n\t\t'fields.datelastedited'\r\n\t];\r\n\r\n\tconst options = {\r\n\t\tincludeScore: true,\r\n\t\tthreshold: 0.3,\r\n\t\tkeys: fields\r\n\t};\r\n\r\n\tconst fuse = new Fuse(results, options);\r\n\tconst lowerCaseQuery = query.toLowerCase();\r\n\tconst queryTerms = lowerCaseQuery.split(' ');\r\n\r\n\tconst exactIdMatch = results.find(result => result.id.toString() === query);\r\n\tif (exactIdMatch) {\r\n\t\treturn [exactIdMatch];\r\n\t}\r\n\r\n\tconst fuseQuery = queryTerms.map(term => ({\r\n\t\t$or: fields.map(field => ({ [field]: term }))\r\n\t}));\r\n\r\n\tconst fuseResults = fuse.search({ $and: fuseQuery });\r\n\r\n\treturn fuseResults.map(result => result.item);\r\n}\r\n\r\nexport const filterListingsByLocation = (\r\n\tallListings,\r\n\tselectedLocation,\r\n\tlistingEntities\r\n) => {\r\n\tlet results = allListings;\r\n\tif (selectedLocation !== null) {\r\n\t\tresults = results.filter(item =>\r\n\t\t\tselectedLocation.items.hasOwnProperty(item.id)\r\n\t\t);\r\n\t}\r\n\tconst mapItems = getDistinctItemsByProximity(results, listingEntities);\r\n\treturn { filteredListings: results, mapItems: mapItems };\r\n};\r\n"],"names":["getFilterOptions","listings","filteredListings","field","excludeZeroCount","arguments","length","undefined","options","Set","forEach","listing","fields","add","optionCounts","option","value","hasOwnProperty","Array","from","sort","map","name","count","filter","getSpecialFeatureOptions","siteConfig","favorites","specialFeatures","featureCounts","Object","keys","reduce","acc","key","entries","_ref","_ref2","_slicedToArray","featureKey","featureName","specialFeatureOptions","_ref3","_ref4","_iterator","_createForOfIteratorHelper","_step","s","n","done","x","includes","id","err","e","f","getPointsOfInterestOptions","pointsOfInterestNames","_ref5","_ref6","generateFilterOptions","allListings","filterOptions","parentField","dynamicFilters","fieldFiltersShown","fieldName","filters","find","title","fieldNames","items","locations","locationFiltersShown","index","pointsOfInterest","pointsOfInterestConfig","applyFilters","selectedFilters","query","listingEntities","results","invertedSpecialFeaturesMap","_ref7","_ref8","hasFavorite","Favorite","favorite","_loop","_Object$entries$_i","_Object$entries","_i","filterItems","formattedField","some","_ref9","_ref10","filterName","filterValue","listingFieldName","searchResults","distinctItems","getDistinctItemsByProximity","mapItems","includeScore","threshold","fuse","Fuse","lowerCaseQuery","toLowerCase","queryTerms","split","exactIdMatch","result","toString","fuseQuery","term","$or","_defineProperty","fuseResults","search","$and","item","filterListingsByLocation","selectedLocation"],"mappings":"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"}
1
+ {"version":3,"file":"filterUtil.js","sources":["../../src/util/filterUtil.js"],"sourcesContent":["import { getDistinctItemsByProximity } from '~/util/mapUtil';\n\nimport Fuse from 'fuse.js';\n\nexport const getFilterOptions = (listings, filteredListings, field, excludeZeroCount = null) => {\n\tconst options = new Set();\n\tlistings.forEach(listing => {\n\t\tif (listing.fields[field]) {\n\t\t\toptions.add(listing.fields[field]);\n\t\t}\n\t});\n\n\tconst optionCounts = {};\n\toptions.forEach(option => {\n\t\toptionCounts[option] = 0;\n\t});\n\n\tfilteredListings.forEach(listing => {\n\t\tconst value = listing.fields[field];\n\t\tif (value && optionCounts.hasOwnProperty(value)) {\n\t\t\toptionCounts[value] += 1;\n\t\t}\n\t});\n\n\treturn Array.from(options)\n\t\t.sort()\n\t\t.map(option => ({\n\t\t\tname: option,\n\t\t\tcount: optionCounts[option] || 0\n\t\t}))\n\t\t.filter(option => !(excludeZeroCount === true && option.count === 0));\n};\n\nexport const getSpecialFeatureOptions = (listings, filteredListings, siteConfig, favorites) => {\n\tconst specialFeatures = siteConfig.specialFeatures;\n\tconst featureCounts = Object.keys(specialFeatures).sort().reduce((acc, key) => {\n\t\tacc[specialFeatures[key]] = 0;\n\t\treturn acc;\n\t}, {});\n\n\tfilteredListings.forEach(listing => {\n\t\tObject.entries(specialFeatures).forEach(([featureKey, featureName]) => {\n\t\t\tif (listing.fields[featureKey] == 1) {\n\t\t\t\tfeatureCounts[featureName] += 1;\n\t\t\t}\n\t\t});\n\t});\n\n\tconst specialFeatureOptions = Object.entries(featureCounts).map(([name, count]) => ({\n\t\tname,\n\t\tcount\n\t}));\n\n\tfor (let option of specialFeatureOptions) {\n\t\tif (option.name === 'Favorite') {\n\t\t\toption.count = filteredListings.filter(x => favorites.includes(x.id)).length;\n\t\t}\n\t}\n\n\treturn specialFeatureOptions;\n};\n\nconst getPointsOfInterestOptions = pointsOfInterestNames => {\n\treturn Object.entries(pointsOfInterestNames).sort().map(([key, name]) => ({\n\t\tkey,\n\t\tname\n\t}));\n};\n\nexport const generateFilterOptions = (\n\tfilteredListings,\n\tallListings,\n\tsiteConfig,\n\tfilterOptions,\n\tparentField,\n\tfavorites\n) => {\n\tif (allListings.length > 0) {\n\t\tconst dynamicFilters = siteConfig.fieldFiltersShown.map(fieldName => {\n\t\t\tif (fieldName === parentField && filterOptions?.filters) {\n\t\t\t\treturn filterOptions.filters.find(filter => filter.id === fieldName);\n\t\t\t}\n\t\t\tif (fieldName == \"specialFeatures\") {\n\t\t\t\treturn {\n\t\t\t\t\tid: fieldName,\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\titems: getSpecialFeatureOptions(allListings, filteredListings, siteConfig, favorites).sort()\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tid: fieldName,\n\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\titems: getFilterOptions(allListings, filteredListings, fieldName)\n\t\t\t};\n\t\t});\n\n\t\tconst locations =\n\t\t\tsiteConfig.locationFiltersShown.map((fieldName, index) => {\n\t\t\t\tif (index === 0 && filterOptions?.locations) {\n\t\t\t\t\treturn filterOptions.locations.find(filter => filter.id === fieldName);\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tid: fieldName,\n\t\t\t\t\ttitle: siteConfig.fieldNames[fieldName],\n\t\t\t\t\titems: getFilterOptions(allListings, filteredListings, fieldName, true)\n\t\t\t\t};\n\t\t\t});\n\n\t\tconst pointsOfInterest = {\n\t\t\tid: \"pointsOfInterest\",\n\t\t\ttitle: siteConfig.pointsOfInterestConfig.title,\n\t\t\titems: getPointsOfInterestOptions(\n\t\t\t\tsiteConfig.pointsOfInterestConfig.pointsOfInterestNames\n\t\t\t)\n\t\t};\n\n\t\treturn {\n\t\t\tfilters: dynamicFilters,\n\t\t\tlocations: locations,\n\t\t\tpointsOfInterest: pointsOfInterest\n\t\t};\n\t}\n\n\treturn null;\n};\n\nexport const applyFilters = (\n\tallListings,\n\tselectedFilters,\n\tquery,\n\tlistingEntities,\n\tfavorites,\n\tsiteConfig\n) => {\n\tlet results = allListings;\n\tlet invertedSpecialFeaturesMap;\n\tif (siteConfig.specialFeatures) {\n\t\tinvertedSpecialFeaturesMap = Object.entries(siteConfig.specialFeatures).reduce((acc, [key, value]) => {\n\t\t\tacc[value] = key;\n\t\t\treturn acc;\n\t\t}, {});\n\n\t}\n\tconst hasFavorite = !!selectedFilters.specialFeatures && !!selectedFilters.specialFeatures.Favorite;\n\n\tif (hasFavorite && selectedFilters.specialFeatures.Favorite == true) {\n\t\tresults = results.filter(x => favorites.includes(x.id));\n\t}\n\tvar favorite;\n\tif (hasFavorite) {\n\t\tfavorite = selectedFilters.specialFeatures.Favorite;\n\t\tdelete selectedFilters.specialFeatures.Favorite;\n\t}\n\tfor (const [field, filterItems] of Object.entries(selectedFilters)) {\n\t\tconst formattedField = field;\n\t\tif (field === \"pointsOfInterest\") continue;\n\t\tif (field === \"specialFeatures\" && invertedSpecialFeaturesMap && Object.keys(filterItems).length > 0) {\n\t\t\tresults = results.filter(listing => {\n\t\t\t\treturn Object.entries(filterItems).some(([filterName, filterValue]) => {\n\t\t\t\t\tconst listingFieldName = invertedSpecialFeaturesMap[filterName];\n\t\t\t\t\treturn filterValue && listing.fields[listingFieldName] == 1;\n\t\t\t\t});\n\t\t\t});\n\t\t} else if (Object.keys(filterItems).length > 0) {\n\t\t\tresults = results.filter(listing =>\n\t\t\t\tfilterItems.hasOwnProperty(listing.fields[formattedField])\n\t\t\t);\n\t\t}\n\t}\n\tif (query) {\n\t\tresults = searchResults(results, query);\n\t}\n\tconst distinctItems = getDistinctItemsByProximity(results, listingEntities);\n\tif (hasFavorite) {\n\t\tselectedFilters.specialFeatures.Favorite = favorite;\n\t}\n\treturn { filteredListings: results, mapItems: distinctItems };\n};\n\nfunction searchResults(results, query) {\n\tconst fields = [\n\t\t'id',\n\t\t'fields.posted',\n\t\t'fields.subtitle',\n\t\t'fields.education',\n\t\t'fields.position',\n\t\t'fields.category',\n\t\t'fields.categoryclass',\n\t\t'fields.shift',\n\t\t'fields.citystate',\n\t\t'fields.city',\n\t\t'fields.state',\n\t\t'fields.schedule',\n\t\t'fields.customflag1',\n\t\t'fields.bonus',\n\t\t'fields.remote',\n\t\t'fields.useclientjoburl',\n\t\t'fields.datecreated',\n\t\t'fields.datelastedited'\n\t];\n\n\tconst options = {\n\t\tincludeScore: true,\n\t\tthreshold: 0.3,\n\t\tkeys: fields\n\t};\n\n\tconst fuse = new Fuse(results, options);\n\tconst lowerCaseQuery = query.toLowerCase();\n\tconst queryTerms = lowerCaseQuery.split(' ');\n\n\tconst exactIdMatch = results.find(result => result.id.toString() === query);\n\tif (exactIdMatch) {\n\t\treturn [exactIdMatch];\n\t}\n\n\tconst fuseQuery = queryTerms.map(term => ({\n\t\t$or: fields.map(field => ({ [field]: term }))\n\t}));\n\n\tconst fuseResults = fuse.search({ $and: fuseQuery });\n\n\treturn fuseResults.map(result => result.item);\n}\n\nexport const filterListingsByLocation = (\n\tallListings,\n\tselectedLocation,\n\tlistingEntities\n) => {\n\tlet results = allListings;\n\tif (selectedLocation !== null) {\n\t\tresults = results.filter(item =>\n\t\t\tselectedLocation.items.hasOwnProperty(item.id)\n\t\t);\n\t}\n\tconst mapItems = getDistinctItemsByProximity(results, listingEntities);\n\treturn { filteredListings: results, mapItems: mapItems };\n};\n"],"names":["getFilterOptions","listings","filteredListings","field","excludeZeroCount","arguments","length","undefined","options","Set","forEach","listing","fields","add","optionCounts","option","value","hasOwnProperty","Array","from","sort","map","name","count","filter","getSpecialFeatureOptions","siteConfig","favorites","specialFeatures","featureCounts","Object","keys","reduce","acc","key","entries","_ref","_ref2","_slicedToArray","featureKey","featureName","specialFeatureOptions","_ref3","_ref4","_iterator","_createForOfIteratorHelper","_step","s","n","done","x","includes","id","err","e","f","getPointsOfInterestOptions","pointsOfInterestNames","_ref5","_ref6","generateFilterOptions","allListings","filterOptions","parentField","dynamicFilters","fieldFiltersShown","fieldName","filters","find","title","fieldNames","items","locations","locationFiltersShown","index","pointsOfInterest","pointsOfInterestConfig","applyFilters","selectedFilters","query","listingEntities","results","invertedSpecialFeaturesMap","_ref7","_ref8","hasFavorite","Favorite","favorite","_loop","_Object$entries$_i","_Object$entries","_i","filterItems","formattedField","some","_ref9","_ref10","filterName","filterValue","listingFieldName","searchResults","distinctItems","getDistinctItemsByProximity","mapItems","includeScore","threshold","fuse","Fuse","lowerCaseQuery","toLowerCase","queryTerms","split","exactIdMatch","result","toString","fuseQuery","term","$or","_defineProperty","fuseResults","search","$and","item","filterListingsByLocation","selectedLocation"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abcagency/hc-ui-components",
3
- "version": "1.3.21",
3
+ "version": "1.3.22",
4
4
  "description": "UI Components for HireControl",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
package/postcss.config.js CHANGED
@@ -1,11 +1,12 @@
1
1
  module.exports = {
2
2
  plugins: {
3
- 'postcss-nesting': {}, // Use postcss-nesting directly
4
-
3
+ 'tailwindcss/nesting': 'postcss-nesting',
4
+ tailwindcss: {},
5
5
  'postcss-preset-env': {
6
- stage: 4, // Consider specifying a higher stage if you don't need all experimental features
6
+ autoprefixer: false,
7
+ stage: 0,
7
8
  features: {
8
- 'nesting-rules': false // Ensure no conflict with postcss-nesting
9
+ 'nesting-rules': false
9
10
  }
10
11
  },
11
12
  autoprefixer: {}
package/rollup.config.mjs CHANGED
@@ -94,7 +94,7 @@ export default [
94
94
  {
95
95
  input: path.resolve(__dirname, 'src/bundleIndex.js'),
96
96
  output: {
97
- file: path.resolve(__dirname, 'bundle.js'),
97
+ file: path.resolve(__dirname, 'bundleDist/bundle.js'),
98
98
  format: 'iife',
99
99
  name: 'MyBundle',
100
100
  sourcemap: true,
@@ -11,7 +11,7 @@ const AccordionFiltersContainer = ({
11
11
  setSelectedListItem,
12
12
  SubcategoryRequireCategory
13
13
  }) => {
14
- const { filterOptions, selectedFilters, setSelectedFilters } = useMapList();
14
+ const { filterOptions, selectedFilters, setSelectedFilters, siteConfig } = useMapList();
15
15
 
16
16
  const handleSetSelectedFilters = prevFilters => {
17
17
  setSelectedFilters(prevFilters);
@@ -37,6 +37,7 @@ const AccordionFiltersContainer = ({
37
37
  setDefaultValue={setDefaultValue}
38
38
  selectedFilters={selectedFilters}
39
39
  setSelectedFilters={handleSetSelectedFilters}
40
+ subcategoryRequireCategory={siteConfig.subcategoryRequireCategory}
40
41
  />);
41
42
  }
42
43
  )}
@@ -1,62 +1,66 @@
1
- import React, { memo } from 'react';
2
- import AccordionFilterItem from '~/components/modules/accordions/filterItem';
3
- import FilterItem from '~/components/containers/filter/filter-item-container';
4
- import ItemsPill from '~/components/modules/buttons/items-pill';
5
-
6
- const FilterItemContainer = ({
7
- filter,
8
- setDefaultValue,
9
- setSelectedFilters,
10
- selectedFilters
11
- }) => {
12
- const fieldKey = filter.id;
13
- const activeItemsCount = selectedFilters != null && selectedFilters[fieldKey]
14
- ? Object.keys(selectedFilters[fieldKey]).length
15
- : 0;
16
-
17
- const handleClearFilters = event => {
18
- event.stopPropagation();
19
- setSelectedFilters(prevFilters => {
20
- const updatedFilters = { ...prevFilters };
21
- delete updatedFilters[fieldKey];
22
- return updatedFilters;
23
- });
24
- };
25
-
26
- const header = (
27
- <>
28
- {filter.title}
29
- {activeItemsCount > 0 && (
30
- <ItemsPill
31
- activeItemsCount={activeItemsCount}
32
- onClick={handleClearFilters}
33
- />
34
- )}
35
- </>
36
- );
37
-
38
- const body = (
39
- <>
40
- {filter.items.sort().map(item => (
41
- <FilterItem
42
- key={item.name}
43
- item={item}
44
- field={filter.id}
45
- selectedFilters={selectedFilters}
46
- setSelectedFilters={setSelectedFilters}
47
- />
48
- ))}
49
- </>
50
- );
51
-
52
- return (
53
- <AccordionFilterItem
54
- id={filter.id}
55
- setDefaultValue={setDefaultValue}
56
- header={header}
57
- body={body}
58
- />
59
- );
60
- };
61
-
62
- export default memo(FilterItemContainer);
1
+ import React, { memo } from 'react';
2
+ import AccordionFilterItem from '~/components/modules/accordions/filterItem';
3
+ import FilterItem from '~/components/containers/filter/filter-item-container';
4
+ import ItemsPill from '~/components/modules/buttons/items-pill';
5
+
6
+ const FilterItemContainer = ({
7
+ filter,
8
+ setDefaultValue,
9
+ setSelectedFilters,
10
+ selectedFilters,
11
+ subcategoryRequireCategory = false
12
+ }) => {
13
+ const fieldKey = filter.id;
14
+ const activeItemsCount = selectedFilters != null && selectedFilters[fieldKey]
15
+ ? Object.keys(selectedFilters[fieldKey]).length
16
+ : 0;
17
+
18
+ const handleClearFilters = event => {
19
+ event.stopPropagation();
20
+ setSelectedFilters(prevFilters => {
21
+ const updatedFilters = { ...prevFilters };
22
+ if(subcategoryRequireCategory && fieldKey == 'categoryClass'){
23
+ delete updatedFilters['category'];
24
+ }
25
+ delete updatedFilters[fieldKey];
26
+ return updatedFilters;
27
+ });
28
+ };
29
+
30
+ const header = (
31
+ <>
32
+ {filter.title}
33
+ {activeItemsCount > 0 && (
34
+ <ItemsPill
35
+ activeItemsCount={activeItemsCount}
36
+ onClick={handleClearFilters}
37
+ />
38
+ )}
39
+ </>
40
+ );
41
+
42
+ const body = (
43
+ <>
44
+ {filter.items.sort().map(item => (
45
+ <FilterItem
46
+ key={item.name}
47
+ item={item}
48
+ field={filter.id}
49
+ selectedFilters={selectedFilters}
50
+ setSelectedFilters={setSelectedFilters}
51
+ />
52
+ ))}
53
+ </>
54
+ );
55
+
56
+ return (
57
+ <AccordionFilterItem
58
+ id={filter.id}
59
+ setDefaultValue={setDefaultValue}
60
+ header={header}
61
+ body={body}
62
+ />
63
+ );
64
+ };
65
+
66
+ export default memo(FilterItemContainer);
@@ -1,70 +1,70 @@
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 { setStorageObject } from '~/util/localStorageUtil';
6
- import MapAccordionItem from '~/components/modules/accordions/MapAccordionItem';
7
- import ListItemContainer from '~/components/containers/list/list-item/list-item-container';
8
-
9
- const MapAccordionItemContainer = ({
10
- showMap,
11
- item,
12
- itemRefs,
13
- fieldsShown,
14
- itemExpandedContent,
15
- specialFeatures,
16
- isActive,
17
- hasListItemSelected
18
- }) => {
19
- const { mapItems } = useMapList();
20
- const { selectItem } = useMap();
21
- const { trackEvent, eventTypes } = useTrackEvent();
22
-
23
- const setSelectedItemAndZoomMap = (item, isActive) => {
24
- if (isActive) {
25
- localStorage.removeItem("selectedListItem");
26
- const location = mapItems.find(x => Object.prototype.hasOwnProperty.call(x.items, item.id)) || null;
27
- selectItem(null, null, 9, { lat: 39.8283, lng: -98.5795 });
28
- } else {
29
- setStorageObject("selectedListItem", item);
30
- const location = mapItems.find(x => Object.prototype.hasOwnProperty.call(x.items, item.id)) || null;
31
- selectItem(item, location, 12, {
32
- lat: location?.latitude,
33
- lng: location?.longitude
34
- });
35
- }
36
- };
37
-
38
- const handleItemClick = item => {
39
- trackEvent(eventTypes.JOB_LISTING_SELECTED, {
40
- jobTitle: item.fields.position,
41
- jobCategory: item.fields.category,
42
- entityDisplayName: item?.mapDetails?.entityDisplayName
43
- });
44
-
45
- setSelectedItemAndZoomMap(item, isActive);
46
- };
47
-
48
- return (
49
- <MapAccordionItem
50
- item={item}
51
- itemRefs={itemRefs}
52
- itemExpandedContent={itemExpandedContent}
53
- isActive={isActive}
54
-
55
- >
56
- <ListItemContainer
57
- showMap={showMap}
58
- item={item}
59
- itemRefs={itemRefs}
60
- fieldsShown={fieldsShown}
61
- specialFeatures={specialFeatures}
62
- isActive={isActive}
63
- hasListItemSelected={hasListItemSelected}
64
- onClick={() => handleItemClick(item)}
65
- />
66
- </MapAccordionItem>
67
- );
68
- };
69
-
70
- export default MapAccordionItemContainer;
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 { setStorageObject } from '~/util/localStorageUtil';
6
+ import MapAccordionItem from '~/components/modules/accordions/MapAccordionItem';
7
+ import ListItemContainer from '~/components/containers/list/list-item/list-item-container';
8
+
9
+ const MapAccordionItemContainer = ({
10
+ showMap,
11
+ item,
12
+ itemRefs,
13
+ fieldsShown,
14
+ itemExpandedContent,
15
+ specialFeatures,
16
+ isActive,
17
+ hasListItemSelected
18
+ }) => {
19
+ const { mapItems, recruiters } = useMapList();
20
+ const { selectItem } = useMap();
21
+ const { trackEvent, eventTypes } = useTrackEvent();
22
+
23
+ const setSelectedItemAndZoomMap = (item, isActive) => {
24
+ if (isActive) {
25
+ localStorage.removeItem("selectedListItem");
26
+ const location = mapItems.find(x => Object.prototype.hasOwnProperty.call(x.items, item.id)) || null;
27
+ selectItem(null, null, 9, { lat: 39.8283, lng: -98.5795 });
28
+ } else {
29
+ setStorageObject("selectedListItem", item);
30
+ const location = mapItems.find(x => Object.prototype.hasOwnProperty.call(x.items, item.id)) || null;
31
+ selectItem(item, location, 12, {
32
+ lat: location?.latitude,
33
+ lng: location?.longitude
34
+ });
35
+ }
36
+ };
37
+
38
+ const handleItemClick = item => {
39
+ trackEvent(eventTypes.JOB_LISTING_SELECTED, {
40
+ jobTitle: item.fields.position,
41
+ jobCategory: item.fields.category,
42
+ entityDisplayName: item?.mapDetails?.entityDisplayName
43
+ });
44
+
45
+ setSelectedItemAndZoomMap(item, isActive);
46
+ };
47
+
48
+ return (
49
+ <MapAccordionItem
50
+ item={item}
51
+ itemRefs={itemRefs}
52
+ itemExpandedContent={itemExpandedContent}
53
+ isActive={isActive}
54
+ recruiter={recruiters[item.recruiterId]}
55
+ >
56
+ <ListItemContainer
57
+ showMap={showMap}
58
+ item={item}
59
+ itemRefs={itemRefs}
60
+ fieldsShown={fieldsShown}
61
+ specialFeatures={specialFeatures}
62
+ isActive={isActive}
63
+ hasListItemSelected={hasListItemSelected}
64
+ onClick={() => handleItemClick(item)}
65
+ />
66
+ </MapAccordionItem>
67
+ );
68
+ };
69
+
70
+ export default MapAccordionItemContainer;
@@ -4,7 +4,7 @@ import { useMapList } from '~/contexts/mapListContext';
4
4
  import { useTrackEvent } from '~/contexts/trackEventContext';
5
5
  import ListingDetails from '~/components/modules/jobListing/listing-details';
6
6
 
7
- const ListingDetailsContainer = ({ item, recruiters }) => {
7
+ const ListingDetailsContainer = ({ item, recruiter }) => {
8
8
  const { trackEvent, eventTypes } = useTrackEvent();
9
9
  const { travelTime } = useMap();
10
10
  const { siteConfig, navigateToDetails, navigateToEasyApply, Link, linkFormat } = useMapList();
@@ -20,7 +20,7 @@ const ListingDetailsContainer = ({ item, recruiters }) => {
20
20
  return (
21
21
  <ListingDetails
22
22
  item={item}
23
- recruiters={recruiters}
23
+ recruiter={recruiter}
24
24
  travelTime={travelTime}
25
25
  useDetailsPostMessage={useDetailsPostMessage}
26
26
  navigateToDetails={navigateToDetails}
@@ -27,8 +27,8 @@ const ItemsListContainer: React.FC<ItemsListContainerProps> = ({
27
27
  const { itemLimit, loader, scrollContainerRef, itemRefs } = useListLogic(filteredListings as any);
28
28
  const { selectedListItem } = useMap();
29
29
  const { trackEvent, eventTypes } = useTrackEvent() as any;
30
- const itemExpandedContent = (item: any, recruiters: any) =>
31
- item ? <ListingDetailsContainer item={item} recruiters={recruiters} /> : null;
30
+ const itemExpandedContent = (item: any, recruiter: any) =>
31
+ item ? <ListingDetailsContainer item={item} recruiter={recruiter} /> : null;
32
32
 
33
33
  if (!fieldsShown.includes('travelTime') && commuteLocation != null && Object.entries(commuteLocation).length > 0) {
34
34
  fieldsShown.push('travelTime');
@@ -55,7 +55,6 @@ const ItemsListContainer: React.FC<ItemsListContainerProps> = ({
55
55
  scrollContainerRef={scrollContainerRef}
56
56
  itemRefs={itemRefs}
57
57
  selectedListItem={selectedListItem}
58
- itemExpandedContent={itemExpandedContent}
59
58
  includeFavorite={true}
60
59
  >
61
60
  <Accordion className="hc-divide-y hc-divide-uiAccent/10 hc-z-[1000]" defaultValue={selectedListItem?.id}>
@@ -1,29 +1,30 @@
1
- import React from 'react';
2
- import Accordion from '~/components/modules/accordions/default';
3
- import ItemExpandCard from '~/components/modules/list/item-expand-card';
4
-
5
- const MapAccordionItem = ({
6
- item,
7
- itemRefs,
8
- itemExpandedContent,
9
- isActive,
10
- children
11
- }) => {
12
- return (
13
- <Accordion.Item key={item.id} id={item.id}>
14
- <Accordion.Trigger.Blank>
15
- <div ref={el => (itemRefs.current[item.id] = el)}>
16
- {children}
17
- </div>
18
- </Accordion.Trigger.Blank>
19
- {isActive &&
20
-
21
- <Accordion.Content bodyClassName="hc-px-2 hc-py-2 hc-pt-0 hc-bg-uiAccent/5 hc-border-secondary hc-border hc-border-t-0">
22
- { <ItemExpandCard content={itemExpandedContent(item)} />}
23
- </Accordion.Content>
24
- }
25
- </Accordion.Item>
26
- );
27
- };
28
-
29
- export default MapAccordionItem;
1
+ import React from 'react';
2
+ import Accordion from '~/components/modules/accordions/default';
3
+ import ItemExpandCard from '~/components/modules/list/item-expand-card';
4
+
5
+ const MapAccordionItem = ({
6
+ item,
7
+ itemRefs,
8
+ itemExpandedContent,
9
+ isActive,
10
+ recruiter,
11
+ children
12
+ }) => {
13
+ return (
14
+ <Accordion.Item key={item.id} id={item.id}>
15
+ <Accordion.Trigger.Blank>
16
+ <div ref={el => (itemRefs.current[item.id] = el)}>
17
+ {children}
18
+ </div>
19
+ </Accordion.Trigger.Blank>
20
+ {isActive &&
21
+
22
+ <Accordion.Content bodyClassName="hc-px-2 hc-py-2 hc-pt-0 hc-bg-uiAccent/5 hc-border-secondary hc-border hc-border-t-0">
23
+ { <ItemExpandCard content={itemExpandedContent(item, recruiter)} />}
24
+ </Accordion.Content>
25
+ }
26
+ </Accordion.Item>
27
+ );
28
+ };
29
+
30
+ export default MapAccordionItem;