@abcagency/hc-ui-components 1.3.56 → 1.3.57

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.
@@ -2,6 +2,7 @@ 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
7
  var _excluded = ["className", "item", "type", "itemKey", "hasCount", "field", "isExternalLink", "externalLinkUrl", "selectedFilters", "setSelectedFilters"];
7
8
  var FilterItemContainer = function FilterItemContainer(_ref) {
@@ -36,6 +37,8 @@ var FilterItemContainer = function FilterItemContainer(_ref) {
36
37
  if (!selectedFilters || isExternalLink) return;
37
38
  setActiveItem(!!((_selectedFilters$fiel2 = selectedFilters[field]) !== null && _selectedFilters$fiel2 !== void 0 && _selectedFilters$fiel2[itemKey]));
38
39
  }, [selectedFilters, field, itemKey]);
40
+ var _useMapList = useMapList(),
41
+ filteredListings = _useMapList.filteredListings;
39
42
  var changeHandler = function changeHandler() {
40
43
  if (!isActive || isExternalLink) {
41
44
  trackEvent(eventTypes.FILTER_APPLIED, {
@@ -45,7 +48,7 @@ var FilterItemContainer = function FilterItemContainer(_ref) {
45
48
  }
46
49
  setSelectedFilters(function (prevFilters) {
47
50
  var updatedFilters = _objectSpread2({}, prevFilters);
48
- if (field == 'city' || field == 'state' || field == 'cityState') {
51
+ if (field === 'city' || field === 'state' || field === 'cityState') {
49
52
  delete updatedFilters['entityName'];
50
53
  }
51
54
  if (!isActive) {
@@ -56,9 +59,34 @@ var FilterItemContainer = function FilterItemContainer(_ref) {
56
59
  return updatedFilters;
57
60
  }
58
61
  delete updatedFilters[field][itemKey];
59
- if (Object.keys(updatedFilters[field]).length === 0) {
62
+ if (updatedFilters[field] && Object.keys(updatedFilters[field]).length === 0) {
60
63
  delete updatedFilters[field];
61
64
  }
65
+ if (field === 'categoryClass') {
66
+ var activeCategoryClass = itemKey;
67
+ var categoriesToConsiderForRemoval = new Set(filteredListings.filter(function (listing) {
68
+ return listing.fields.categoryClass === activeCategoryClass;
69
+ }).flatMap(function (listing) {
70
+ return listing.fields.category || [];
71
+ }));
72
+ var categoriesToRetain = new Set(filteredListings.filter(function (listing) {
73
+ return listing.fields.categoryClass !== activeCategoryClass;
74
+ }).flatMap(function (listing) {
75
+ return listing.fields.category || [];
76
+ }).filter(function (category) {
77
+ return categoriesToConsiderForRemoval.has(category);
78
+ }));
79
+ if (updatedFilters['category']) {
80
+ Object.keys(updatedFilters['category']).forEach(function (categoryKey) {
81
+ if (categoriesToConsiderForRemoval.has(categoryKey) && !categoriesToRetain.has(categoryKey)) {
82
+ delete updatedFilters['category'][categoryKey];
83
+ }
84
+ });
85
+ if (Object.keys(updatedFilters['category']).length === 0) {
86
+ delete updatedFilters['category'];
87
+ }
88
+ }
89
+ }
62
90
  return updatedFilters;
63
91
  });
64
92
  };
@@ -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\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') {\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","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.57",
4
4
  "description": "UI Components for HireControl",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -1,80 +1,116 @@
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
+ ...rest
18
+ }) => {
19
+ const { trackEvent, eventTypes } = useTrackEvent();
20
+ const itemName = item.name ? item.name : item;
21
+ itemKey = itemKey === null ? itemName : itemKey;
22
+ const isActive = selectedFilters != undefined && !!selectedFilters[field]?.[itemKey];
23
+ const [activeItem, setActiveItem] = useState(isActive);
24
+
25
+ useEffect(() => {
26
+ if (!selectedFilters || isExternalLink) return;
27
+ setActiveItem(!!selectedFilters[field]?.[itemKey]);
28
+ }, [selectedFilters, field, itemKey]);
29
+
30
+ const { filteredListings } = useMapList();
31
+ const changeHandler = () => {
32
+ if (!isActive || isExternalLink) {
33
+ trackEvent(eventTypes.FILTER_APPLIED, { filterType: field, filterChecked: itemKey });
34
+ }
35
+
36
+ setSelectedFilters(prevFilters => {
37
+ const updatedFilters = { ...prevFilters };
38
+
39
+ if (field === 'city' || field === 'state' || field === 'cityState') {
40
+ delete updatedFilters['entityName'];
41
+ }
42
+
43
+ if (!isActive) {
44
+ if (!updatedFilters[field]) {
45
+ updatedFilters[field] = {};
46
+ }
47
+ updatedFilters[field][itemKey] = true;
48
+ return updatedFilters;
49
+ }
50
+
51
+ delete updatedFilters[field][itemKey];
52
+
53
+ if (updatedFilters[field] && Object.keys(updatedFilters[field]).length === 0) {
54
+ delete updatedFilters[field];
55
+ }
56
+
57
+ if (field === 'categoryClass') {
58
+ const activeCategoryClass = itemKey;
59
+ const categoriesToConsiderForRemoval = new Set(
60
+ filteredListings
61
+ .filter(listing => listing.fields.categoryClass === activeCategoryClass)
62
+ .flatMap(listing => listing.fields.category || [])
63
+ );
64
+
65
+ const categoriesToRetain = new Set(
66
+ filteredListings
67
+ .filter(listing => listing.fields.categoryClass !== activeCategoryClass)
68
+ .flatMap(listing => listing.fields.category || [])
69
+ .filter(category => categoriesToConsiderForRemoval.has(category))
70
+ );
71
+
72
+ if (updatedFilters['category']) {
73
+ Object.keys(updatedFilters['category']).forEach(categoryKey => {
74
+ if (categoriesToConsiderForRemoval.has(categoryKey) && !categoriesToRetain.has(categoryKey)) {
75
+ delete updatedFilters['category'][categoryKey];
76
+ }
77
+ });
78
+
79
+ if (Object.keys(updatedFilters['category']).length === 0) {
80
+ delete updatedFilters['category'];
81
+ }
82
+ }
83
+ }
84
+
85
+ return updatedFilters;
86
+ });
87
+ };
88
+
89
+ useEffect(() => {
90
+ if (selectedFilters && selectedFilters[field] && Object.keys(selectedFilters[field])?.length > 0) return;
91
+ else if (activeItem === true) {
92
+ setActiveItem(false);
93
+ }
94
+ }, [selectedFilters]);
95
+
96
+ return (
97
+ <FilterItem
98
+ className={className}
99
+ item={item}
100
+ type={type}
101
+ itemKey={itemKey}
102
+ hasCount={hasCount}
103
+ field={field}
104
+ activeItem={activeItem}
105
+ setActiveItem={setActiveItem}
106
+ changeHandler={changeHandler}
107
+ isExternalLink={isExternalLink}
108
+ externalLinkUrl={externalLinkUrl}
109
+ trackEvent={trackEvent}
110
+ eventTypes={eventTypes}
111
+ {...rest}
112
+ />
113
+ );
114
+ };
115
+
116
+ export default FilterItemContainer;