@abcagency/hc-ui-components 1.5.1 → 1.5.3

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 (173) hide show
  1. package/dist/components/HireControlMap.js +52 -22
  2. package/dist/components/HireControlMap.js.map +1 -1
  3. package/dist/components/containers/accordions/filter-container.js +13 -5
  4. package/dist/components/containers/accordions/filter-container.js.map +1 -1
  5. package/dist/components/containers/accordions/filter-item-container.js +9 -9
  6. package/dist/components/containers/accordions/filter-item-container.js.map +1 -1
  7. package/dist/components/containers/accordions/map-accordion-item-container.js +10 -5
  8. package/dist/components/containers/accordions/map-accordion-item-container.js.map +1 -1
  9. package/dist/components/containers/filter/commute-container.js +3 -3
  10. package/dist/components/containers/filter/commute-container.js.map +1 -1
  11. package/dist/components/containers/filter/filter-container.js +6 -5
  12. package/dist/components/containers/filter/filter-container.js.map +1 -1
  13. package/dist/components/containers/filter/filter-item-container.js +12 -12
  14. package/dist/components/containers/filter/filter-item-container.js.map +1 -1
  15. package/dist/components/containers/filter/location-container.js +6 -5
  16. package/dist/components/containers/filter/location-container.js.map +1 -1
  17. package/dist/components/containers/filter/points-of-interest-container.js +5 -5
  18. package/dist/components/containers/filter/points-of-interest-container.js.map +1 -1
  19. package/dist/components/containers/filter/points-of-interest-radio-item-container.js +2 -2
  20. package/dist/components/containers/filter/points-of-interest-radio-item-container.js.map +1 -1
  21. package/dist/components/containers/filter/search-container.js +2 -2
  22. package/dist/components/containers/filter/search-container.js.map +1 -1
  23. package/dist/components/containers/jobListing/listing-details-container.js +2 -2
  24. package/dist/components/containers/jobListing/listing-details-container.js.map +1 -1
  25. package/dist/components/containers/list/item-list-container.js +8 -8
  26. package/dist/components/containers/list/item-list-container.js.map +1 -1
  27. package/dist/components/containers/list/list-item/list-item-container.js +2 -2
  28. package/dist/components/containers/list/list-item/list-item-container.js.map +1 -1
  29. package/dist/components/containers/maps/info-window-content-container.js +2 -2
  30. package/dist/components/containers/maps/info-window-content-container.js.map +1 -1
  31. package/dist/components/containers/maps/map-container.js +8 -9
  32. package/dist/components/containers/maps/map-container.js.map +1 -1
  33. package/dist/components/containers/maps/map-list-container.js +5 -5
  34. package/dist/components/containers/maps/map-list-container.js.map +1 -1
  35. package/dist/components/containers/maps/map-marker-container.js +6 -6
  36. package/dist/components/containers/maps/map-marker-container.js.map +1 -1
  37. package/dist/components/modules/accordions/MapAccordionItem.js +5 -5
  38. package/dist/components/modules/accordions/MapAccordionItem.js.map +1 -1
  39. package/dist/components/modules/accordions/default.js +15 -15
  40. package/dist/components/modules/accordions/default.js.map +1 -1
  41. package/dist/components/modules/accordions/filterItem.js +4 -4
  42. package/dist/components/modules/accordions/filterItem.js.map +1 -1
  43. package/dist/components/modules/accordions/filters.js +6 -6
  44. package/dist/components/modules/accordions/filters.js.map +1 -1
  45. package/dist/components/modules/buttons/button-group-apply.js +19 -19
  46. package/dist/components/modules/buttons/button-group-apply.js.map +1 -1
  47. package/dist/components/modules/buttons/default.js +9 -9
  48. package/dist/components/modules/buttons/default.js.map +1 -1
  49. package/dist/components/modules/buttons/items-pill.js +2 -2
  50. package/dist/components/modules/buttons/items-pill.js.map +1 -1
  51. package/dist/components/modules/buttons/pill-wrapper.js +2 -2
  52. package/dist/components/modules/buttons/pill-wrapper.js.map +1 -1
  53. package/dist/components/modules/buttons/show-all-button.js +3 -3
  54. package/dist/components/modules/buttons/show-all-button.js.map +1 -1
  55. package/dist/components/modules/cards/default.js +11 -11
  56. package/dist/components/modules/cards/default.js.map +1 -1
  57. package/dist/components/modules/cards/filter.js +5 -5
  58. package/dist/components/modules/cards/filter.js.map +1 -1
  59. package/dist/components/modules/dialogs/apply-dialog.js +19 -19
  60. package/dist/components/modules/dialogs/apply-dialog.js.map +1 -1
  61. package/dist/components/modules/filter/commute.js +18 -19
  62. package/dist/components/modules/filter/commute.js.map +1 -1
  63. package/dist/components/modules/filter/index.js +10 -10
  64. package/dist/components/modules/filter/index.js.map +1 -1
  65. package/dist/components/modules/filter/item.js +6 -6
  66. package/dist/components/modules/filter/item.js.map +1 -1
  67. package/dist/components/modules/filter/location.js +6 -6
  68. package/dist/components/modules/filter/location.js.map +1 -1
  69. package/dist/components/modules/filter/radio-item.js +6 -6
  70. package/dist/components/modules/filter/radio-item.js.map +1 -1
  71. package/dist/components/modules/filter/search.js +10 -10
  72. package/dist/components/modules/filter/search.js.map +1 -1
  73. package/dist/components/modules/filter/sort.js +28 -28
  74. package/dist/components/modules/filter/sort.js.map +1 -1
  75. package/dist/components/modules/grid.js +4 -4
  76. package/dist/components/modules/grid.js.map +1 -1
  77. package/dist/components/modules/icon.js +4 -4
  78. package/dist/components/modules/icon.js.map +1 -1
  79. package/dist/components/modules/jobListing/listing-details.js +4 -4
  80. package/dist/components/modules/jobListing/listing-details.js.map +1 -1
  81. package/dist/components/modules/list/field-mapper-desktop.js +8 -8
  82. package/dist/components/modules/list/field-mapper-desktop.js.map +1 -1
  83. package/dist/components/modules/list/field-mapper-mobile.js +18 -18
  84. package/dist/components/modules/list/field-mapper-mobile.js.map +1 -1
  85. package/dist/components/modules/list/header-item.js +7 -7
  86. package/dist/components/modules/list/header-item.js.map +1 -1
  87. package/dist/components/modules/list/header.js +5 -5
  88. package/dist/components/modules/list/header.js.map +1 -1
  89. package/dist/components/modules/list/item-expand-card/index.js +3 -3
  90. package/dist/components/modules/list/item-expand-card/index.js.map +1 -1
  91. package/dist/components/modules/list/item-list.js +15 -15
  92. package/dist/components/modules/list/item-list.js.map +1 -1
  93. package/dist/components/modules/list/list-item/list-item.js +13 -13
  94. package/dist/components/modules/list/list-item/list-item.js.map +1 -1
  95. package/dist/components/modules/maps/info-window-card.js +2 -2
  96. package/dist/components/modules/maps/info-window-card.js.map +1 -1
  97. package/dist/components/modules/maps/info-window-content.js +5 -5
  98. package/dist/components/modules/maps/info-window-content.js.map +1 -1
  99. package/dist/components/modules/maps/map-list.js +5 -5
  100. package/dist/components/modules/maps/map-list.js.map +1 -1
  101. package/dist/components/modules/maps/map-marker.js +3 -3
  102. package/dist/components/modules/maps/map-marker.js.map +1 -1
  103. package/dist/components/modules/maps/map.js +5 -5
  104. package/dist/components/modules/maps/map.js.map +1 -1
  105. package/dist/components/modules/maps/place-marker.js +5 -5
  106. package/dist/components/modules/maps/place-marker.js.map +1 -1
  107. package/dist/components/modules/maps/tabs.js +21 -21
  108. package/dist/components/modules/maps/tabs.js.map +1 -1
  109. package/dist/contexts/mapContext.js +18 -18
  110. package/dist/contexts/mapContext.js.map +1 -1
  111. package/dist/contexts/mapListContext.js +28 -24
  112. package/dist/contexts/mapListContext.js.map +1 -1
  113. package/dist/contexts/placesContext.js +2 -2
  114. package/dist/contexts/placesContext.js.map +1 -1
  115. package/dist/contexts/themeContext.js +2 -2
  116. package/dist/contexts/themeContext.js.map +1 -1
  117. package/dist/contexts/trackEventContext.js +2 -2
  118. package/dist/contexts/trackEventContext.js.map +1 -1
  119. package/dist/services/listingAggregatorService.js +19 -15
  120. package/dist/services/listingAggregatorService.js.map +1 -1
  121. package/dist/services/listingEntityService.js +3 -2
  122. package/dist/services/listingEntityService.js.map +1 -1
  123. package/dist/services/listingService.js +1 -16
  124. package/dist/services/listingService.js.map +1 -1
  125. package/dist/styles/index.css +1 -3
  126. package/dist/types/contexts/mapContext.d.ts +1 -0
  127. package/dist/types/services/listingAggregatorService.d.ts +2 -2
  128. package/dist/types/services/listingEntityService.d.ts +2 -3
  129. package/dist/types/types/GetListingParams.d.ts +1 -1
  130. package/dist/types/types/ListingEntity.d.ts +2 -1
  131. package/dist/types/types/ListingFields.d.ts +4 -2
  132. package/dist/types/types/Listings.d.ts +0 -1
  133. package/dist/types/util/algoliaSearchUtil.d.ts +4 -0
  134. package/dist/types/util/filterUtil.d.ts +2 -2
  135. package/dist/types/util/mapUtil.d.ts +3 -3
  136. package/dist/util/algoliaSearchUtil.js +133 -0
  137. package/dist/util/algoliaSearchUtil.js.map +1 -0
  138. package/dist/util/filterUtil.js +129 -66
  139. package/dist/util/filterUtil.js.map +1 -1
  140. package/dist/util/loading.js +3 -3
  141. package/dist/util/loading.js.map +1 -1
  142. package/dist/util/mapUtil.js +37 -25
  143. package/dist/util/mapUtil.js.map +1 -1
  144. package/package.json +60 -17
  145. package/src/components/HireControlMap.js +35 -9
  146. package/src/components/containers/accordions/filter-container.js +6 -1
  147. package/src/components/containers/accordions/filter-item-container.js +2 -2
  148. package/src/components/containers/accordions/map-accordion-item-container.js +6 -2
  149. package/src/components/containers/filter/filter-container.js +3 -2
  150. package/src/components/containers/filter/filter-item-container.js +10 -10
  151. package/src/components/containers/filter/location-container.js +3 -3
  152. package/src/components/containers/list/item-list-container.tsx +3 -3
  153. package/src/components/containers/maps/info-window-content-container.js +1 -1
  154. package/src/components/containers/maps/map-container.js +2 -1
  155. package/src/components/modules/buttons/button-group-apply.js +8 -8
  156. package/src/components/modules/dialogs/apply-dialog.js +2 -2
  157. package/src/components/modules/list/field-mapper-desktop.jsx +2 -2
  158. package/src/components/modules/list/field-mapper-mobile.jsx +8 -8
  159. package/src/components/modules/list/header-item.js +1 -1
  160. package/src/components/modules/maps/map-list.js +1 -1
  161. package/src/contexts/mapContext.tsx +17 -16
  162. package/src/contexts/mapListContext.tsx +55 -49
  163. package/src/services/listingAggregatorService.ts +29 -21
  164. package/src/services/listingEntityService.ts +3 -3
  165. package/src/services/listingService.ts +1 -11
  166. package/src/styles/components.css +30 -0
  167. package/src/types/GetListingParams.ts +1 -1
  168. package/src/types/ListingEntity.ts +2 -1
  169. package/src/types/ListingFields.ts +4 -2
  170. package/src/types/Listings.ts +0 -1
  171. package/src/util/algoliaSearchUtil.js +91 -0
  172. package/src/util/filterUtil.js +19 -8
  173. package/src/util/mapUtil.js +52 -41
@@ -1,54 +1,59 @@
1
- export const getDistinctItemsByProximity = (items, listingEntitiesDetails) => {
1
+ export const getDistinctItemsByProximity = (items, listingEntitiesDetailsInput) => {
2
2
  const clusters = {};
3
3
 
4
- if (!listingEntitiesDetails) return [];
4
+ if (!listingEntitiesDetailsInput) return [];
5
+
6
+ const listingEntitiesDetails = Array.isArray(listingEntitiesDetailsInput)
7
+ ? listingEntitiesDetailsInput.reduce((acc, entity) => {
8
+ if (entity?.entityKey) acc[entity.entityKey.toLowerCase()] = entity;
9
+ return acc;
10
+ }, {})
11
+ : Object.keys(listingEntitiesDetailsInput).reduce((acc, key) => {
12
+ acc[key.toLowerCase()] = listingEntitiesDetailsInput[key];
13
+ return acc;
14
+ }, {});
5
15
 
6
16
  const closeItemPairs = findCloseItems(listingEntitiesDetails);
7
17
  if (closeItemPairs.length > 0) {
8
- listingEntitiesDetails = adjustItemPositions(
9
- listingEntitiesDetails,
10
- closeItemPairs
11
- );
18
+ const adjusted = adjustItemPositions(listingEntitiesDetails, closeItemPairs);
19
+ Object.assign(listingEntitiesDetails, adjusted);
12
20
  }
13
21
 
14
22
  items?.forEach(item => {
15
- if(item.entityId !== -1){
16
-
17
- const entityDetails = listingEntitiesDetails[item.entityId];
18
-
19
- if (!entityDetails) {
20
- console.error(`Details not found for entityId: ${item.entityId}`);
21
- return;
22
- }
23
+ const entityKey = item?.fields?.entityKey;
24
+ if (!entityKey || entityKey === '-1') return;
25
+ const entityDetails = listingEntitiesDetails[entityKey.toLowerCase()];
26
+ if (!entityDetails) {
27
+ console.error(`Details not found for entityKey: ${entityKey}`);
28
+ return;
29
+ }
23
30
 
24
- item.mapDetails = entityDetails;
31
+ item.mapDetails = entityDetails;
25
32
 
26
- if (!clusters[item.entityId]) {
27
- clusters[item.entityId] = {
28
- ...item.mapDetails,
29
- items: { [item.id]: item }
30
- };
31
- } else {
32
- clusters[item.entityId].items[item.id] = item;
33
- }}
33
+ const normalizedEntityKey = entityKey.toLowerCase();
34
+ if (!clusters[normalizedEntityKey]) {
35
+ clusters[normalizedEntityKey] = {
36
+ ...entityDetails,
37
+ items: { [item.id]: item }
38
+ };
39
+ } else {
40
+ clusters[normalizedEntityKey].items[item.id] = item;
41
+ }
34
42
  });
35
43
 
36
44
  return Object.values(clusters);
37
45
  };
38
46
 
39
- export const findCloseItems = itemsObj => {
47
+ export const findCloseItems = entitiesByKey => {
40
48
  const closeItems = [];
41
- const items = Object.values(itemsObj); // Convert object to array for iteration
49
+ const items = Object.values(entitiesByKey); // Convert object to array
42
50
  const proximityThreshold = 0.0001;
43
51
 
44
52
  for (let i = 0; i < items.length; i++) {
45
53
  for (let j = i + 1; j < items.length; j++) {
46
54
  const distanceLat = Math.abs(items[i].latitude - items[j].latitude);
47
55
  const distanceLng = Math.abs(items[i].longitude - items[j].longitude);
48
- if (
49
- distanceLat < proximityThreshold &&
50
- distanceLng < proximityThreshold
51
- ) {
56
+ if (distanceLat < proximityThreshold && distanceLng < proximityThreshold) {
52
57
  closeItems.push({ item1: items[i], item2: items[j] });
53
58
  }
54
59
  }
@@ -57,14 +62,18 @@ export const findCloseItems = itemsObj => {
57
62
  return closeItems;
58
63
  };
59
64
 
60
- export const adjustItemPositions = (itemsObj, closeItemPairs) => {
65
+ export const adjustItemPositions = (entitiesByKey, closeItemPairs) => {
61
66
  const adjustmentValue = 0.0001;
62
- const adjustedItems = { ...itemsObj }; // Create a shallow copy of the object
67
+ const adjustedItems = { ...entitiesByKey };
63
68
 
64
69
  closeItemPairs.forEach(pair => {
65
- if (adjustedItems[pair.item1.id] && adjustedItems[pair.item2.id]) {
66
- adjustedItems[pair.item2.id].latitude += adjustmentValue;
67
- adjustedItems[pair.item2.id].longitude += adjustmentValue;
70
+ const key2 = pair.item2.entityKey;
71
+ if (adjustedItems[key2]) {
72
+ adjustedItems[key2] = {
73
+ ...adjustedItems[key2],
74
+ latitude: adjustedItems[key2].latitude + adjustmentValue,
75
+ longitude: adjustedItems[key2].longitude + adjustmentValue
76
+ };
68
77
  }
69
78
  });
70
79
 
@@ -74,13 +83,15 @@ export const adjustItemPositions = (itemsObj, closeItemPairs) => {
74
83
  export const clusterOptions = (clusterGridSize, fillColor) => {
75
84
  return {
76
85
  gridSize: clusterGridSize,
77
- maxZoom:15,
78
- styles:[{
79
- url: createSvgDataUri(fillColor),
80
- textColor:'white',
81
- height: 40,
82
- width: 40
83
- }]
86
+ maxZoom: 15,
87
+ styles: [
88
+ {
89
+ url: createSvgDataUri(fillColor),
90
+ textColor: 'white',
91
+ height: 40,
92
+ width: 40
93
+ }
94
+ ]
84
95
  };
85
96
  };
86
97