@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.
- package/dist/components/containers/accordions/filter-item-container.js +4 -2
- package/dist/components/containers/accordions/filter-item-container.js.map +1 -1
- package/dist/components/containers/filter/filter-item-container.js +33 -3
- package/dist/components/containers/filter/filter-item-container.js.map +1 -1
- package/package.json +1 -1
- package/src/components/containers/accordions/filter-item-container.js +2 -0
- package/src/components/containers/filter/filter-item-container.js +117 -80
|
@@ -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":";;;;;;AAKA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAAC,IAAA,EAOnB;AAAA,EAAA,IANLC,MAAM,GAAAD,IAAA,CAANC,MAAM;IACNC,eAAe,GAAAF,IAAA,CAAfE,eAAe;IACfC,kBAAkB,GAAAH,IAAA,CAAlBG,kBAAkB;IAClBC,eAAe,GAAAJ,IAAA,CAAfI,eAAe;IAAAC,qBAAA,GAAAL,IAAA,CACfM,0BAA0B;AAA1BA,IAAAA,0BAA0B,GAAAD,qBAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,qBAAA;IAClCE,sBAAsB,GAAAP,IAAA,CAAtBO,sBAAsB,CAAA;EAEtB,IAAMC,aAAa,GAAGD,sBAAsB,KAAtBA,IAAAA,IAAAA,sBAAsB,KAAtBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAsB,CAAEN,MAAM,CAAC,UAAAQ,CAAC,EAAA;AAAA,IAAA,OAAIA,CAAC,CAACC,SAAS,IAAIT,MAAM,CAACU,EAAE,CAAA;GAAC,CAAA,CAAA;AACnF,EAAA,IAAMC,QAAQ,GAAGX,MAAM,CAACU,EAAE,CAAA;EAC1B,IAAME,gBAAgB,GAAGT,eAAe,IAAI,IAAI,IAAIA,eAAe,CAACQ,QAAQ,CAAC,GAC1EE,MAAM,CAACC,IAAI,CAACX,eAAe,CAACQ,QAAQ,CAAC,CAAC,CAACI,MAAM,GAC7C,CAAC,CAAA;AAEJ,EAAA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAGC,KAAK,EAAI;IACnCA,KAAK,CAACC,eAAe,EAAE,CAAA;IACvBhB,kBAAkB,CAAC,UAAAiB,WAAW,EAAI;AACjC,MAAA,IAAMC,cAAc,GAAAC,cAAA,CAAA,EAAA,EAAQF,WAAW,CAAE,CAAA;AACzC,MAAA,IAAGd,0BAA0B,IAAIM,QAAQ,IAAI,eAAe,EAAC;QAC5D,OAAOS,cAAc,CAAC,UAAU,CAAC,CAAA;AAClC,OAAA;MACA,IAAGT,QAAQ,IAAI,OAAO,IAAIA,QAAQ,IAAI,MAAM,IAAIA,QAAQ,IAAI,WAAW,EAAC;QACvE,OAAOS,cAAc,CAACE,QAAQ,CAAA;QAC9B,OAAOF,cAAc,CAAC,YAAY,CAAC,CAAA;AACpC,OAAA;MACA,OAAOA,cAAc,CAACT,QAAQ,CAAC,CAAA;AAC/B,MAAA,OAAOS,cAAc,CAAA;AACtB,KAAC,CAAC,CAAA;GACF,CAAA;EAED,IAAMG,MAAM,gBACXC,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAAE,QAAA,EACE1B,IAAAA,EAAAA,MAAM,CAAC2B,KAAK,EACZf,gBAAgB,GAAG,CAAC,iBACpBY,cAAA,CAAAC,aAAA,CAACG,eAAS,EAAA;AACThB,IAAAA,gBAAgB,EAAEA,gBAAiB;AACnCiB,IAAAA,OAAO,EAAEb,kBAAAA;AAAmB,GAC5B,CAED,CACF,CAAA;EAED,IAAMc,IAAI,gBACTN,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAAE,QAAA,EAAA,IAAA,EACE1B,MAAM,CAAC+B,KAAK,CAACC,IAAI,EAAE,CAACC,GAAG,CAAC,UAAAC,IAAI,EAAA;AAAA,IAAA,oBAC5BV,cAAA,CAAAC,aAAA,CAACU,qBAAU,EAAA;MACVC,GAAG,EAAEF,IAAI,CAACG,IAAK;AACfH,MAAAA,IAAI,EAAEA,IAAK;MACXI,KAAK,EAAEtC,MAAM,CAACU,EAAG;AACjBP,MAAAA,eAAe,EAAEA,eAAgB;AACjCD,MAAAA,kBAAkB,EAAEA,
|
|
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
|
|
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';\
|
|
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
|
@@ -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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
|
|
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;
|