@abcagency/hc-ui-components 1.3.56 → 1.3.58

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.
@@ -42,7 +42,8 @@ var FilterItemContainer = function FilterItemContainer(_ref) {
42
42
  item: item,
43
43
  field: filter.id,
44
44
  selectedFilters: selectedFilters,
45
- setSelectedFilters: setSelectedFilters
45
+ setSelectedFilters: setSelectedFilters,
46
+ subcategoryRequireCategory: subcategoryRequireCategory
46
47
  });
47
48
  }), externalLinks && externalLinks.map(function (link) {
48
49
  return /*#__PURE__*/React__default.createElement(FilterItemContainer$1, {
@@ -52,7 +53,8 @@ var FilterItemContainer = function FilterItemContainer(_ref) {
52
53
  }, link.externalLink),
53
54
  isExternalLink: true,
54
55
  externalLinkUrl: link.externalLinkUrl,
55
- field: filter.id
56
+ field: filter.id,
57
+ subcategoryRequireCategory: subcategoryRequireCategory
56
58
  });
57
59
  }));
58
60
  return /*#__PURE__*/React__default.createElement(AccordionFilterItem$1, {
@@ -1 +1 @@
1
- {"version":3,"file":"filter-item-container.js","sources":["../../../../src/components/containers/accordions/filter-item-container.js"],"sourcesContent":["import React, { memo } from 'react';\nimport AccordionFilterItem from '~/components/modules/accordions/filterItem';\nimport FilterItem from '~/components/containers/filter/filter-item-container';\nimport ItemsPill from '~/components/modules/buttons/items-pill';\n\nconst FilterItemContainer = ({\n\tfilter,\n\tsetDefaultValue,\n\tsetSelectedFilters,\n\tselectedFilters,\n\tsubcategoryRequireCategory = false,\n\texternalLinksInFilters\n}) => {\n\tconst externalLinks = externalLinksInFilters?.filter(x => x.fieldName == filter.id);\n\tconst fieldKey = filter.id;\n\tconst activeItemsCount = selectedFilters != null && selectedFilters[fieldKey]\n\t\t? Object.keys(selectedFilters[fieldKey]).length\n\t\t: 0;\n\n\tconst handleClearFilters = event => {\n\t\tevent.stopPropagation();\n\t\tsetSelectedFilters(prevFilters => {\n\t\t\tconst updatedFilters = { ...prevFilters };\n\t\t\tif(subcategoryRequireCategory && fieldKey == 'categoryClass'){\n\t\t\t\tdelete updatedFilters['category'];\n\t\t\t}\n\t\t\tif(fieldKey == 'state' || fieldKey == 'city' || fieldKey == 'cityState'){\n\t\t\t\tdelete updatedFilters.entityId;\n\t\t\t\tdelete updatedFilters['entityName'];\n\t\t\t}\n\t\t\tdelete updatedFilters[fieldKey];\n\t\t\treturn updatedFilters;\n\t\t});\n\t};\n\n\tconst header = (\n\t\t<>\n\t\t\t{filter.title}\n\t\t\t{activeItemsCount > 0 && (\n\t\t\t\t<ItemsPill\n\t\t\t\t\tactiveItemsCount={activeItemsCount}\n\t\t\t\t\tonClick={handleClearFilters}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n\n\tconst body = (\n\t\t<>\n\t\t\t{filter.items.sort().map(item => (\n\t\t\t\t<FilterItem\n\t\t\t\t\tkey={item.name}\n\t\t\t\t\titem={item}\n\t\t\t\t\tfield={filter.id}\n\t\t\t\t\tselectedFilters={selectedFilters}\n\t\t\t\t\tsetSelectedFilters={setSelectedFilters}\n\t\t\t\t/>\n\t\t\t))}\n\t\t\t{externalLinks && externalLinks.map(link => (\n\t\t\t\t<FilterItem\n\t\t\t\t\tkey={link.externalLink}\n\t\t\t\t\titem={<a href={link.externalLinkUrl}>{link.externalLink}</a>}\n\t\t\t\t\tisExternalLink={true}\n\t\t\t\t\texternalLinkUrl={link.externalLinkUrl}\n\t\t\t\t\tfield={filter.id}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</>\n\t);\n\n\treturn (\n\t\t<AccordionFilterItem\n\t\t\tid={filter.id}\n\t\t\tsetDefaultValue={setDefaultValue}\n\t\t\theader={header}\n\t\t\tbody={body}\n\t\t/>\n\t);\n};\n\nexport default memo(FilterItemContainer);\n"],"names":["FilterItemContainer","_ref","filter","setDefaultValue","setSelectedFilters","selectedFilters","_ref$subcategoryRequi","subcategoryRequireCategory","externalLinksInFilters","externalLinks","x","fieldName","id","fieldKey","activeItemsCount","Object","keys","length","handleClearFilters","event","stopPropagation","prevFilters","updatedFilters","_objectSpread","entityId","header","React","createElement","Fragment","title","ItemsPill","onClick","body","items","sort","map","item","FilterItem","key","name","field","link","externalLink","href","externalLinkUrl","isExternalLink","AccordionFilterItem","memo"],"mappings":"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"}
1
+ {"version":3,"file":"filter-item-container.js","sources":["../../../../src/components/containers/accordions/filter-item-container.js"],"sourcesContent":["import React, { memo } from 'react';\nimport AccordionFilterItem from '~/components/modules/accordions/filterItem';\nimport FilterItem from '~/components/containers/filter/filter-item-container';\nimport ItemsPill from '~/components/modules/buttons/items-pill';\n\nconst FilterItemContainer = ({\n\tfilter,\n\tsetDefaultValue,\n\tsetSelectedFilters,\n\tselectedFilters,\n\tsubcategoryRequireCategory = false,\n\texternalLinksInFilters\n}) => {\n\tconst externalLinks = externalLinksInFilters?.filter(x => x.fieldName == filter.id);\n\tconst fieldKey = filter.id;\n\tconst activeItemsCount = selectedFilters != null && selectedFilters[fieldKey]\n\t\t? Object.keys(selectedFilters[fieldKey]).length\n\t\t: 0;\n\n\tconst handleClearFilters = event => {\n\t\tevent.stopPropagation();\n\t\tsetSelectedFilters(prevFilters => {\n\t\t\tconst updatedFilters = { ...prevFilters };\n\t\t\tif(subcategoryRequireCategory && fieldKey == 'categoryClass'){\n\t\t\t\tdelete updatedFilters['category'];\n\t\t\t}\n\t\t\tif(fieldKey == 'state' || fieldKey == 'city' || fieldKey == 'cityState'){\n\t\t\t\tdelete updatedFilters.entityId;\n\t\t\t\tdelete updatedFilters['entityName'];\n\t\t\t}\n\t\t\tdelete updatedFilters[fieldKey];\n\t\t\treturn updatedFilters;\n\t\t});\n\t};\n\n\tconst header = (\n\t\t<>\n\t\t\t{filter.title}\n\t\t\t{activeItemsCount > 0 && (\n\t\t\t\t<ItemsPill\n\t\t\t\t\tactiveItemsCount={activeItemsCount}\n\t\t\t\t\tonClick={handleClearFilters}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n\n\tconst body = (\n\t\t<>\n\t\t\t{filter.items.sort().map(item => (\n\t\t\t\t<FilterItem\n\t\t\t\t\tkey={item.name}\n\t\t\t\t\titem={item}\n\t\t\t\t\tfield={filter.id}\n\t\t\t\t\tselectedFilters={selectedFilters}\n\t\t\t\t\tsetSelectedFilters={setSelectedFilters}\n\t\t\t\t\tsubcategoryRequireCategory={subcategoryRequireCategory}\n\t\t\t\t/>\n\t\t\t))}\n\t\t\t{externalLinks && externalLinks.map(link => (\n\t\t\t\t<FilterItem\n\t\t\t\t\tkey={link.externalLink}\n\t\t\t\t\titem={<a href={link.externalLinkUrl}>{link.externalLink}</a>}\n\t\t\t\t\tisExternalLink={true}\n\t\t\t\t\texternalLinkUrl={link.externalLinkUrl}\n\t\t\t\t\tfield={filter.id}\n\t\t\t\t\tsubcategoryRequireCategory={subcategoryRequireCategory}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</>\n\t);\n\n\treturn (\n\t\t<AccordionFilterItem\n\t\t\tid={filter.id}\n\t\t\tsetDefaultValue={setDefaultValue}\n\t\t\theader={header}\n\t\t\tbody={body}\n\t\t/>\n\t);\n};\n\nexport default memo(FilterItemContainer);\n"],"names":["FilterItemContainer","_ref","filter","setDefaultValue","setSelectedFilters","selectedFilters","_ref$subcategoryRequi","subcategoryRequireCategory","externalLinksInFilters","externalLinks","x","fieldName","id","fieldKey","activeItemsCount","Object","keys","length","handleClearFilters","event","stopPropagation","prevFilters","updatedFilters","_objectSpread","entityId","header","React","createElement","Fragment","title","ItemsPill","onClick","body","items","sort","map","item","FilterItem","key","name","field","link","externalLink","href","externalLinkUrl","isExternalLink","AccordionFilterItem","memo"],"mappings":"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"}
@@ -2,8 +2,9 @@ import { objectWithoutProperties as _objectWithoutProperties, slicedToArray as _
2
2
  import React__default, { useState, useEffect } from 'react';
3
3
  import { useTrackEvent } from '../../../contexts/trackEventContext.js';
4
4
  import FilterItem from '../../modules/filter/item.js';
5
+ import { useMapList } from '../../../contexts/mapListContext.js';
5
6
 
6
- var _excluded = ["className", "item", "type", "itemKey", "hasCount", "field", "isExternalLink", "externalLinkUrl", "selectedFilters", "setSelectedFilters"];
7
+ var _excluded = ["className", "item", "type", "itemKey", "hasCount", "field", "isExternalLink", "externalLinkUrl", "selectedFilters", "setSelectedFilters", "subcategoryRequireCategory"];
7
8
  var FilterItemContainer = function FilterItemContainer(_ref) {
8
9
  var _selectedFilters$fiel;
9
10
  var className = _ref.className,
@@ -20,6 +21,8 @@ var FilterItemContainer = function FilterItemContainer(_ref) {
20
21
  externalLinkUrl = _ref.externalLinkUrl,
21
22
  selectedFilters = _ref.selectedFilters,
22
23
  setSelectedFilters = _ref.setSelectedFilters,
24
+ _ref$subcategoryRequi = _ref.subcategoryRequireCategory,
25
+ subcategoryRequireCategory = _ref$subcategoryRequi === void 0 ? false : _ref$subcategoryRequi,
23
26
  rest = _objectWithoutProperties(_ref, _excluded);
24
27
  var _useTrackEvent = useTrackEvent(),
25
28
  trackEvent = _useTrackEvent.trackEvent,
@@ -36,6 +39,8 @@ var FilterItemContainer = function FilterItemContainer(_ref) {
36
39
  if (!selectedFilters || isExternalLink) return;
37
40
  setActiveItem(!!((_selectedFilters$fiel2 = selectedFilters[field]) !== null && _selectedFilters$fiel2 !== void 0 && _selectedFilters$fiel2[itemKey]));
38
41
  }, [selectedFilters, field, itemKey]);
42
+ var _useMapList = useMapList(),
43
+ filteredListings = _useMapList.filteredListings;
39
44
  var changeHandler = function changeHandler() {
40
45
  if (!isActive || isExternalLink) {
41
46
  trackEvent(eventTypes.FILTER_APPLIED, {
@@ -45,7 +50,7 @@ var FilterItemContainer = function FilterItemContainer(_ref) {
45
50
  }
46
51
  setSelectedFilters(function (prevFilters) {
47
52
  var updatedFilters = _objectSpread2({}, prevFilters);
48
- if (field == 'city' || field == 'state' || field == 'cityState') {
53
+ if (field === 'city' || field === 'state' || field === 'cityState') {
49
54
  delete updatedFilters['entityName'];
50
55
  }
51
56
  if (!isActive) {
@@ -56,9 +61,34 @@ var FilterItemContainer = function FilterItemContainer(_ref) {
56
61
  return updatedFilters;
57
62
  }
58
63
  delete updatedFilters[field][itemKey];
59
- if (Object.keys(updatedFilters[field]).length === 0) {
64
+ if (updatedFilters[field] && Object.keys(updatedFilters[field]).length === 0) {
60
65
  delete updatedFilters[field];
61
66
  }
67
+ if (field === 'categoryClass' && subcategoryRequireCategory) {
68
+ var activeCategoryClass = itemKey;
69
+ var categoriesToConsiderForRemoval = new Set(filteredListings.filter(function (listing) {
70
+ return listing.fields.categoryClass === activeCategoryClass;
71
+ }).flatMap(function (listing) {
72
+ return listing.fields.category || [];
73
+ }));
74
+ var categoriesToRetain = new Set(filteredListings.filter(function (listing) {
75
+ return listing.fields.categoryClass !== activeCategoryClass;
76
+ }).flatMap(function (listing) {
77
+ return listing.fields.category || [];
78
+ }).filter(function (category) {
79
+ return categoriesToConsiderForRemoval.has(category);
80
+ }));
81
+ if (updatedFilters['category']) {
82
+ Object.keys(updatedFilters['category']).forEach(function (categoryKey) {
83
+ if (categoriesToConsiderForRemoval.has(categoryKey) && !categoriesToRetain.has(categoryKey)) {
84
+ delete updatedFilters['category'][categoryKey];
85
+ }
86
+ });
87
+ if (Object.keys(updatedFilters['category']).length === 0) {
88
+ delete updatedFilters['category'];
89
+ }
90
+ }
91
+ }
62
92
  return updatedFilters;
63
93
  });
64
94
  };
@@ -1 +1 @@
1
- {"version":3,"file":"filter-item-container.js","sources":["../../../../src/components/containers/filter/filter-item-container.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\r\nimport { useTrackEvent } from '~/contexts/trackEventContext';\r\nimport FilterItem from '~/components/modules/filter/item';\r\n\r\nconst FilterItemContainer = ({\r\n\tclassName,\r\n\titem,\r\n\ttype = 'checkbox',\r\n\titemKey = null,\r\n\thasCount = true,\r\n\tfield,\r\n\tisExternalLink = false,\r\n\texternalLinkUrl,\r\n\tselectedFilters,\r\n\tsetSelectedFilters,\r\n\t...rest\r\n}) => {\r\n\tconst { trackEvent, eventTypes } = useTrackEvent();\r\n\tconst itemName = item.name ? item.name : item;\r\n\titemKey = itemKey === null ? itemName : itemKey;\r\n\tconst isActive = selectedFilters != undefined && !!selectedFilters[field]?.[itemKey];\r\n\tconst [activeItem, setActiveItem] = useState(isActive);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!selectedFilters || isExternalLink) return;\r\n\t\tsetActiveItem(!!selectedFilters[field]?.[itemKey]);\r\n\t}, [selectedFilters, field, itemKey]);\r\n\r\n\tconst changeHandler = () => {\r\n\t\tif (!isActive || isExternalLink) {\r\n\t\t\ttrackEvent(eventTypes.FILTER_APPLIED, { filterType: field, filterChecked: itemKey });\r\n\t\t}\r\n\t\tsetSelectedFilters(prevFilters => {\r\n\t\t\tconst updatedFilters = { ...prevFilters };\r\n\t\t\tif(field == 'city' || field == 'state' || field == 'cityState'){\r\n\t\t\t\tdelete updatedFilters['entityName'];\r\n\t\t\t}\r\n\t\t\tif (!isActive) {\r\n\t\t\t\tif (!updatedFilters[field]) {\r\n\t\t\t\t\tupdatedFilters[field] = {};\r\n\t\t\t\t}\r\n\t\t\t\tupdatedFilters[field][itemKey] = true;\r\n\t\t\t\treturn updatedFilters;\r\n\t\t\t}\r\n\t\t\tdelete updatedFilters[field][itemKey];\r\n\t\t\tif (Object.keys(updatedFilters[field]).length === 0) {\r\n\t\t\t\tdelete updatedFilters[field];\r\n\t\t\t}\r\n\t\t\treturn updatedFilters;\r\n\t\t});\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tif (selectedFilters && selectedFilters[field] && Object.keys(selectedFilters[field])?.length > 0) return;\r\n\t\telse if (activeItem === true) {\r\n\t\t\tsetActiveItem(false);\r\n\t\t}\r\n\t}, [selectedFilters]);\r\n\r\n\treturn (\r\n\t\t<FilterItem\r\n\t\t\tclassName={className}\r\n\t\t\titem={item}\r\n\t\t\ttype={type}\r\n\t\t\titemKey={itemKey}\r\n\t\t\thasCount={hasCount}\r\n\t\t\tfield={field}\r\n\t\t\tactiveItem={activeItem}\r\n\t\t\tsetActiveItem={setActiveItem}\r\n\t\t\tchangeHandler={changeHandler}\r\n\t\t\tisExternalLink={isExternalLink}\r\n\t\t\texternalLinkUrl={externalLinkUrl}\r\n\t\t\ttrackEvent={trackEvent}\r\n\t\t\teventTypes={eventTypes}\r\n\t\t\t{...rest}\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nexport default FilterItemContainer;\r\n"],"names":["FilterItemContainer","_ref","_selectedFilters$fiel","className","item","_ref$type","type","_ref$itemKey","itemKey","_ref$hasCount","hasCount","field","_ref$isExternalLink","isExternalLink","externalLinkUrl","selectedFilters","setSelectedFilters","rest","_objectWithoutProperties","_excluded","_useTrackEvent","useTrackEvent","trackEvent","eventTypes","itemName","name","isActive","undefined","_useState","useState","_useState2","_slicedToArray","activeItem","setActiveItem","useEffect","_selectedFilters$fiel2","changeHandler","FILTER_APPLIED","filterType","filterChecked","prevFilters","updatedFilters","_objectSpread","Object","keys","length","_Object$keys","React","createElement","FilterItem","_extends"],"mappings":"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"}
1
+ {"version":3,"file":"filter-item-container.js","sources":["../../../../src/components/containers/filter/filter-item-container.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { useTrackEvent } from '~/contexts/trackEventContext';\nimport FilterItem from '~/components/modules/filter/item';\nimport { useMapList } from '~/contexts/mapListContext';\n\nconst FilterItemContainer = ({\n\tclassName,\n\titem,\n\ttype = 'checkbox',\n\titemKey = null,\n\thasCount = true,\n\tfield,\n\tisExternalLink = false,\n\texternalLinkUrl,\n\tselectedFilters,\n\tsetSelectedFilters,\n\tsubcategoryRequireCategory = false,\n\t...rest\n}) => {\n\tconst { trackEvent, eventTypes } = useTrackEvent();\n\tconst itemName = item.name ? item.name : item;\n\titemKey = itemKey === null ? itemName : itemKey;\n\tconst isActive = selectedFilters != undefined && !!selectedFilters[field]?.[itemKey];\n\tconst [activeItem, setActiveItem] = useState(isActive);\n\n\tuseEffect(() => {\n\t\tif (!selectedFilters || isExternalLink) return;\n\t\tsetActiveItem(!!selectedFilters[field]?.[itemKey]);\n\t}, [selectedFilters, field, itemKey]);\n\n\tconst { filteredListings } = useMapList();\n\tconst changeHandler = () => {\n\t\tif (!isActive || isExternalLink) {\n\t\t\ttrackEvent(eventTypes.FILTER_APPLIED, { filterType: field, filterChecked: itemKey });\n\t\t}\n\n\t\tsetSelectedFilters(prevFilters => {\n\t\t\tconst updatedFilters = { ...prevFilters };\n\n\t\t\tif (field === 'city' || field === 'state' || field === 'cityState') {\n\t\t\t\tdelete updatedFilters['entityName'];\n\t\t\t}\n\n\t\t\tif (!isActive) {\n\t\t\t\tif (!updatedFilters[field]) {\n\t\t\t\t\tupdatedFilters[field] = {};\n\t\t\t\t}\n\t\t\t\tupdatedFilters[field][itemKey] = true;\n\t\t\t\treturn updatedFilters;\n\t\t\t}\n\n\t\t\tdelete updatedFilters[field][itemKey];\n\n\t\t\tif (updatedFilters[field] && Object.keys(updatedFilters[field]).length === 0) {\n\t\t\t\tdelete updatedFilters[field];\n\t\t\t}\n\n\t\t\tif (field === 'categoryClass' && subcategoryRequireCategory) {\n\t\t\t\tconst activeCategoryClass = itemKey;\n\t\t\t\tconst categoriesToConsiderForRemoval = new Set(\n\t\t\t\t\tfilteredListings\n\t\t\t\t\t\t.filter(listing => listing.fields.categoryClass === activeCategoryClass)\n\t\t\t\t\t\t.flatMap(listing => listing.fields.category || [])\n\t\t\t\t);\n\n\t\t\t\tconst categoriesToRetain = new Set(\n\t\t\t\t\tfilteredListings\n\t\t\t\t\t\t.filter(listing => listing.fields.categoryClass !== activeCategoryClass)\n\t\t\t\t\t\t.flatMap(listing => listing.fields.category || [])\n\t\t\t\t\t\t.filter(category => categoriesToConsiderForRemoval.has(category))\n\t\t\t\t);\n\n\t\t\t\tif (updatedFilters['category']) {\n\t\t\t\t\tObject.keys(updatedFilters['category']).forEach(categoryKey => {\n\t\t\t\t\t\tif (categoriesToConsiderForRemoval.has(categoryKey) && !categoriesToRetain.has(categoryKey)) {\n\t\t\t\t\t\t\tdelete updatedFilters['category'][categoryKey];\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (Object.keys(updatedFilters['category']).length === 0) {\n\t\t\t\t\t\tdelete updatedFilters['category'];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn updatedFilters;\n\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tif (selectedFilters && selectedFilters[field] && Object.keys(selectedFilters[field])?.length > 0) return;\n\t\telse if (activeItem === true) {\n\t\t\tsetActiveItem(false);\n\t\t}\n\t}, [selectedFilters]);\n\n\treturn (\n\t\t<FilterItem\n\t\t\tclassName={className}\n\t\t\titem={item}\n\t\t\ttype={type}\n\t\t\titemKey={itemKey}\n\t\t\thasCount={hasCount}\n\t\t\tfield={field}\n\t\t\tactiveItem={activeItem}\n\t\t\tsetActiveItem={setActiveItem}\n\t\t\tchangeHandler={changeHandler}\n\t\t\tisExternalLink={isExternalLink}\n\t\t\texternalLinkUrl={externalLinkUrl}\n\t\t\ttrackEvent={trackEvent}\n\t\t\teventTypes={eventTypes}\n\t\t\t{...rest}\n\t\t/>\n\t);\n};\n\nexport default FilterItemContainer;\n"],"names":["FilterItemContainer","_ref","_selectedFilters$fiel","className","item","_ref$type","type","_ref$itemKey","itemKey","_ref$hasCount","hasCount","field","_ref$isExternalLink","isExternalLink","externalLinkUrl","selectedFilters","setSelectedFilters","_ref$subcategoryRequi","subcategoryRequireCategory","rest","_objectWithoutProperties","_excluded","_useTrackEvent","useTrackEvent","trackEvent","eventTypes","itemName","name","isActive","undefined","_useState","useState","_useState2","_slicedToArray","activeItem","setActiveItem","useEffect","_selectedFilters$fiel2","_useMapList","useMapList","filteredListings","changeHandler","FILTER_APPLIED","filterType","filterChecked","prevFilters","updatedFilters","_objectSpread","Object","keys","length","activeCategoryClass","categoriesToConsiderForRemoval","Set","filter","listing","fields","categoryClass","flatMap","category","categoriesToRetain","has","forEach","categoryKey","_Object$keys","React","createElement","FilterItem","_extends"],"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.56",
3
+ "version": "1.3.58",
4
4
  "description": "UI Components for HireControl",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -54,6 +54,7 @@ const FilterItemContainer = ({
54
54
  field={filter.id}
55
55
  selectedFilters={selectedFilters}
56
56
  setSelectedFilters={setSelectedFilters}
57
+ subcategoryRequireCategory={subcategoryRequireCategory}
57
58
  />
58
59
  ))}
59
60
  {externalLinks && externalLinks.map(link => (
@@ -63,6 +64,7 @@ const FilterItemContainer = ({
63
64
  isExternalLink={true}
64
65
  externalLinkUrl={link.externalLinkUrl}
65
66
  field={filter.id}
67
+ subcategoryRequireCategory={subcategoryRequireCategory}
66
68
  />
67
69
  ))}
68
70
  </>
@@ -1,80 +1,117 @@
1
- import React, { useState, useEffect } from 'react';
2
- import { useTrackEvent } from '~/contexts/trackEventContext';
3
- import FilterItem from '~/components/modules/filter/item';
4
-
5
- const FilterItemContainer = ({
6
- className,
7
- item,
8
- type = 'checkbox',
9
- itemKey = null,
10
- hasCount = true,
11
- field,
12
- isExternalLink = false,
13
- externalLinkUrl,
14
- selectedFilters,
15
- setSelectedFilters,
16
- ...rest
17
- }) => {
18
- const { trackEvent, eventTypes } = useTrackEvent();
19
- const itemName = item.name ? item.name : item;
20
- itemKey = itemKey === null ? itemName : itemKey;
21
- const isActive = selectedFilters != undefined && !!selectedFilters[field]?.[itemKey];
22
- const [activeItem, setActiveItem] = useState(isActive);
23
-
24
- useEffect(() => {
25
- if (!selectedFilters || isExternalLink) return;
26
- setActiveItem(!!selectedFilters[field]?.[itemKey]);
27
- }, [selectedFilters, field, itemKey]);
28
-
29
- const changeHandler = () => {
30
- if (!isActive || isExternalLink) {
31
- trackEvent(eventTypes.FILTER_APPLIED, { filterType: field, filterChecked: itemKey });
32
- }
33
- setSelectedFilters(prevFilters => {
34
- const updatedFilters = { ...prevFilters };
35
- if(field == 'city' || field == 'state' || field == 'cityState'){
36
- delete updatedFilters['entityName'];
37
- }
38
- if (!isActive) {
39
- if (!updatedFilters[field]) {
40
- updatedFilters[field] = {};
41
- }
42
- updatedFilters[field][itemKey] = true;
43
- return updatedFilters;
44
- }
45
- delete updatedFilters[field][itemKey];
46
- if (Object.keys(updatedFilters[field]).length === 0) {
47
- delete updatedFilters[field];
48
- }
49
- return updatedFilters;
50
- });
51
- };
52
-
53
- useEffect(() => {
54
- if (selectedFilters && selectedFilters[field] && Object.keys(selectedFilters[field])?.length > 0) return;
55
- else if (activeItem === true) {
56
- setActiveItem(false);
57
- }
58
- }, [selectedFilters]);
59
-
60
- return (
61
- <FilterItem
62
- className={className}
63
- item={item}
64
- type={type}
65
- itemKey={itemKey}
66
- hasCount={hasCount}
67
- field={field}
68
- activeItem={activeItem}
69
- setActiveItem={setActiveItem}
70
- changeHandler={changeHandler}
71
- isExternalLink={isExternalLink}
72
- externalLinkUrl={externalLinkUrl}
73
- trackEvent={trackEvent}
74
- eventTypes={eventTypes}
75
- {...rest}
76
- />
77
- );
78
- };
79
-
80
- export default FilterItemContainer;
1
+ import React, { useState, useEffect } from 'react';
2
+ import { useTrackEvent } from '~/contexts/trackEventContext';
3
+ import FilterItem from '~/components/modules/filter/item';
4
+ import { useMapList } from '~/contexts/mapListContext';
5
+
6
+ const FilterItemContainer = ({
7
+ className,
8
+ item,
9
+ type = 'checkbox',
10
+ itemKey = null,
11
+ hasCount = true,
12
+ field,
13
+ isExternalLink = false,
14
+ externalLinkUrl,
15
+ selectedFilters,
16
+ setSelectedFilters,
17
+ subcategoryRequireCategory = false,
18
+ ...rest
19
+ }) => {
20
+ const { trackEvent, eventTypes } = useTrackEvent();
21
+ const itemName = item.name ? item.name : item;
22
+ itemKey = itemKey === null ? itemName : itemKey;
23
+ const isActive = selectedFilters != undefined && !!selectedFilters[field]?.[itemKey];
24
+ const [activeItem, setActiveItem] = useState(isActive);
25
+
26
+ useEffect(() => {
27
+ if (!selectedFilters || isExternalLink) return;
28
+ setActiveItem(!!selectedFilters[field]?.[itemKey]);
29
+ }, [selectedFilters, field, itemKey]);
30
+
31
+ const { filteredListings } = useMapList();
32
+ const changeHandler = () => {
33
+ if (!isActive || isExternalLink) {
34
+ trackEvent(eventTypes.FILTER_APPLIED, { filterType: field, filterChecked: itemKey });
35
+ }
36
+
37
+ setSelectedFilters(prevFilters => {
38
+ const updatedFilters = { ...prevFilters };
39
+
40
+ if (field === 'city' || field === 'state' || field === 'cityState') {
41
+ delete updatedFilters['entityName'];
42
+ }
43
+
44
+ if (!isActive) {
45
+ if (!updatedFilters[field]) {
46
+ updatedFilters[field] = {};
47
+ }
48
+ updatedFilters[field][itemKey] = true;
49
+ return updatedFilters;
50
+ }
51
+
52
+ delete updatedFilters[field][itemKey];
53
+
54
+ if (updatedFilters[field] && Object.keys(updatedFilters[field]).length === 0) {
55
+ delete updatedFilters[field];
56
+ }
57
+
58
+ if (field === 'categoryClass' && subcategoryRequireCategory) {
59
+ const activeCategoryClass = itemKey;
60
+ const categoriesToConsiderForRemoval = new Set(
61
+ filteredListings
62
+ .filter(listing => listing.fields.categoryClass === activeCategoryClass)
63
+ .flatMap(listing => listing.fields.category || [])
64
+ );
65
+
66
+ const categoriesToRetain = new Set(
67
+ filteredListings
68
+ .filter(listing => listing.fields.categoryClass !== activeCategoryClass)
69
+ .flatMap(listing => listing.fields.category || [])
70
+ .filter(category => categoriesToConsiderForRemoval.has(category))
71
+ );
72
+
73
+ if (updatedFilters['category']) {
74
+ Object.keys(updatedFilters['category']).forEach(categoryKey => {
75
+ if (categoriesToConsiderForRemoval.has(categoryKey) && !categoriesToRetain.has(categoryKey)) {
76
+ delete updatedFilters['category'][categoryKey];
77
+ }
78
+ });
79
+
80
+ if (Object.keys(updatedFilters['category']).length === 0) {
81
+ delete updatedFilters['category'];
82
+ }
83
+ }
84
+ }
85
+
86
+ return updatedFilters;
87
+ });
88
+ };
89
+
90
+ useEffect(() => {
91
+ if (selectedFilters && selectedFilters[field] && Object.keys(selectedFilters[field])?.length > 0) return;
92
+ else if (activeItem === true) {
93
+ setActiveItem(false);
94
+ }
95
+ }, [selectedFilters]);
96
+
97
+ return (
98
+ <FilterItem
99
+ className={className}
100
+ item={item}
101
+ type={type}
102
+ itemKey={itemKey}
103
+ hasCount={hasCount}
104
+ field={field}
105
+ activeItem={activeItem}
106
+ setActiveItem={setActiveItem}
107
+ changeHandler={changeHandler}
108
+ isExternalLink={isExternalLink}
109
+ externalLinkUrl={externalLinkUrl}
110
+ trackEvent={trackEvent}
111
+ eventTypes={eventTypes}
112
+ {...rest}
113
+ />
114
+ );
115
+ };
116
+
117
+ export default FilterItemContainer;