@abcagency/hc-ui-components 1.3.44 → 1.3.46
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-container.js +1 -0
- package/dist/components/containers/accordions/filter-container.js.map +1 -1
- package/dist/components/containers/accordions/filter-item-container.js +15 -1
- package/dist/components/containers/accordions/filter-item-container.js.map +1 -1
- package/dist/components/containers/filter/filter-item-container.js +11 -4
- package/dist/components/containers/filter/filter-item-container.js.map +1 -1
- package/dist/components/modules/filter/item.js +41 -20
- package/dist/components/modules/filter/item.js.map +1 -1
- package/dist/components/modules/jobListing/listing-details.js +0 -1
- package/dist/components/modules/jobListing/listing-details.js.map +1 -1
- package/dist/components/modules/list/item-list.js +0 -1
- package/dist/components/modules/list/item-list.js.map +1 -1
- package/dist/constants/eventTypes.js +2 -1
- package/dist/constants/eventTypes.js.map +1 -1
- package/dist/types/constants/eventTypes.d.ts +1 -0
- package/package.json +1 -1
- package/src/components/containers/accordions/filter-container.js +48 -48
- package/src/components/containers/accordions/filter-item-container.js +12 -1
- package/src/components/containers/filter/filter-item-container.js +8 -2
- package/src/components/modules/filter/item.js +69 -48
- package/src/components/modules/jobListing/listing-details.js +0 -1
- package/src/components/modules/list/item-list.tsx +0 -1
- package/src/constants/eventTypes.js +2 -1
|
@@ -36,6 +36,7 @@ var AccordionFiltersContainer = function AccordionFiltersContainer(_ref) {
|
|
|
36
36
|
return /*#__PURE__*/React__default.createElement(AccordionFilterItem, {
|
|
37
37
|
key: filter.id,
|
|
38
38
|
filter: filter,
|
|
39
|
+
externalLinksInFilters: siteConfig.externalLinksInFilters,
|
|
39
40
|
setDefaultValue: setDefaultValue,
|
|
40
41
|
selectedFilters: selectedFilters,
|
|
41
42
|
setSelectedFilters: handleSetSelectedFilters,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-container.js","sources":["../../../../src/components/containers/accordions/filter-container.js"],"sourcesContent":["import React from 'react';\nimport { useMapList } from '~/contexts/mapListContext';\nimport AccordionFilters from '~/components/modules/accordions/filters';\nimport AccordionFilterItem from '~/components/containers/accordions/filter-item-container';\n\nconst AccordionFiltersContainer = ({\n\tclassName,\n\tdefaultValue,\n\tsetDefaultValue,\n\tsetLocation,\n\tsetSelectedListItem,\n\tSubcategoryRequireCategory\n}) => {\n\tconst { filterOptions, selectedFilters, setSelectedFilters, siteConfig } = useMapList();\n\n\tconst handleSetSelectedFilters = prevFilters => {\n\t\tsetSelectedFilters(prevFilters);\n\t\tsetLocation(null);\n\t\tsetSelectedListItem(null);\n\t};\
|
|
1
|
+
{"version":3,"file":"filter-container.js","sources":["../../../../src/components/containers/accordions/filter-container.js"],"sourcesContent":["import React from 'react';\r\nimport { useMapList } from '~/contexts/mapListContext';\r\nimport AccordionFilters from '~/components/modules/accordions/filters';\r\nimport AccordionFilterItem from '~/components/containers/accordions/filter-item-container';\r\n\r\nconst AccordionFiltersContainer = ({\r\n\tclassName,\r\n\tdefaultValue,\r\n\tsetDefaultValue,\r\n\tsetLocation,\r\n\tsetSelectedListItem,\r\n\tSubcategoryRequireCategory\r\n}) => {\r\n\tconst { filterOptions, selectedFilters, setSelectedFilters, siteConfig } = useMapList();\r\n\r\n\tconst handleSetSelectedFilters = prevFilters => {\r\n\t\tsetSelectedFilters(prevFilters);\r\n\t\tsetLocation(null);\r\n\t\tsetSelectedListItem(null);\r\n\t};\r\n\treturn (\r\n\t\t<AccordionFilters\r\n\t\t\tclassName={className}\r\n\t\t\tdefaultValue={defaultValue}\r\n\t\t\tfilterOptions={filterOptions}\r\n\t\t>\r\n\t\t\t{filterOptions?.filters?.map(filter => {\r\n\t\t\t\tif(filter.id === 'category' && SubcategoryRequireCategory === true && (!selectedFilters.categoryClass || Object.keys(selectedFilters.categoryClass).length < 1)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t} else if (filter.id === 'category' && SubcategoryRequireCategory === true && filter.items.length > 0) {\r\n\t\t\t\t\tfilter.items = filter.items.filter(item => item.count > 0);\r\n\t\t\t\t}\r\n\t\t\t\treturn (<AccordionFilterItem\r\n\t\t\t\t\tkey={filter.id}\r\n\t\t\t\t\tfilter={filter}\r\n\t\t\t\t\texternalLinksInFilters={siteConfig.externalLinksInFilters}\r\n\t\t\t\t\tsetDefaultValue={setDefaultValue}\r\n\t\t\t\t\tselectedFilters={selectedFilters}\r\n\t\t\t\t\tsetSelectedFilters={handleSetSelectedFilters}\r\n\t\t\t\t\tsubcategoryRequireCategory={siteConfig.subcategoryRequireCategory}\r\n\t\t\t\t/>);\r\n\t\t\t}\r\n\t\t\t)}\r\n\t\t</AccordionFilters>\r\n\t);\r\n};\r\n\r\nexport default AccordionFiltersContainer;\r\n"],"names":["AccordionFiltersContainer","_ref","_filterOptions$filter","className","defaultValue","setDefaultValue","setLocation","setSelectedListItem","SubcategoryRequireCategory","_useMapList","useMapList","filterOptions","selectedFilters","setSelectedFilters","siteConfig","handleSetSelectedFilters","prevFilters","React","createElement","AccordionFilters","filters","map","filter","id","categoryClass","Object","keys","length","items","item","count","AccordionFilterItem","key","externalLinksInFilters","subcategoryRequireCategory"],"mappings":";;;;;AAKA,IAAMA,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAAC,IAAA,EAOzB;AAAA,EAAA,IAAAC,qBAAA,CAAA;AAAA,EAAA,IANLC,SAAS,GAAAF,IAAA,CAATE,SAAS;IACTC,YAAY,GAAAH,IAAA,CAAZG,YAAY;IACZC,eAAe,GAAAJ,IAAA,CAAfI,eAAe;IACfC,WAAW,GAAAL,IAAA,CAAXK,WAAW;IACXC,mBAAmB,GAAAN,IAAA,CAAnBM,mBAAmB;IACnBC,0BAA0B,GAAAP,IAAA,CAA1BO,0BAA0B,CAAA;AAE1B,EAAA,IAAAC,WAAA,GAA2EC,UAAU,EAAE;IAA/EC,aAAa,GAAAF,WAAA,CAAbE,aAAa;IAAEC,eAAe,GAAAH,WAAA,CAAfG,eAAe;IAAEC,kBAAkB,GAAAJ,WAAA,CAAlBI,kBAAkB;IAAEC,UAAU,GAAAL,WAAA,CAAVK,UAAU,CAAA;AAEtE,EAAA,IAAMC,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAAGC,WAAW,EAAI;IAC/CH,kBAAkB,CAACG,WAAW,CAAC,CAAA;IAC/BV,WAAW,CAAC,IAAI,CAAC,CAAA;IACjBC,mBAAmB,CAAC,IAAI,CAAC,CAAA;GACzB,CAAA;AACD,EAAA,oBACCU,cAAA,CAAAC,aAAA,CAACC,gBAAgB,EAAA;AAChBhB,IAAAA,SAAS,EAAEA,SAAU;AACrBC,IAAAA,YAAY,EAAEA,YAAa;AAC3BO,IAAAA,aAAa,EAAEA,aAAAA;AAAc,GAAA,EAE5BA,aAAa,KAAbA,IAAAA,IAAAA,aAAa,gBAAAT,qBAAA,GAAbS,aAAa,CAAES,OAAO,MAAAlB,IAAAA,IAAAA,qBAAA,uBAAtBA,qBAAA,CAAwBmB,GAAG,CAAC,UAAAC,MAAM,EAAI;AACtC,IAAA,IAAGA,MAAM,CAACC,EAAE,KAAK,UAAU,IAAIf,0BAA0B,KAAK,IAAI,KAAK,CAACI,eAAe,CAACY,aAAa,IAAIC,MAAM,CAACC,IAAI,CAACd,eAAe,CAACY,aAAa,CAAC,CAACG,MAAM,GAAG,CAAC,CAAC,EAAC;AAC/J,MAAA,OAAA;AACD,KAAC,MAAM,IAAIL,MAAM,CAACC,EAAE,KAAK,UAAU,IAAIf,0BAA0B,KAAK,IAAI,IAAIc,MAAM,CAACM,KAAK,CAACD,MAAM,GAAG,CAAC,EAAE;MACtGL,MAAM,CAACM,KAAK,GAAGN,MAAM,CAACM,KAAK,CAACN,MAAM,CAAC,UAAAO,IAAI,EAAA;AAAA,QAAA,OAAIA,IAAI,CAACC,KAAK,GAAG,CAAC,CAAA;OAAC,CAAA,CAAA;AAC3D,KAAA;AACA,IAAA,oBAAQb,cAAA,CAAAC,aAAA,CAACa,mBAAmB,EAAA;MAC3BC,GAAG,EAAEV,MAAM,CAACC,EAAG;AACfD,MAAAA,MAAM,EAAEA,MAAO;MACfW,sBAAsB,EAAEnB,UAAU,CAACmB,sBAAuB;AAC1D5B,MAAAA,eAAe,EAAEA,eAAgB;AACjCO,MAAAA,eAAe,EAAEA,eAAgB;AACjCC,MAAAA,kBAAkB,EAAEE,wBAAyB;MAC7CmB,0BAA0B,EAAEpB,UAAU,CAACoB,0BAAAA;AAA2B,KAClE,CAAC,CAAA;AACH,GACA,CACiB,CAAC,CAAA;AAErB;;;;"}
|
|
@@ -10,7 +10,11 @@ var FilterItemContainer = function FilterItemContainer(_ref) {
|
|
|
10
10
|
setSelectedFilters = _ref.setSelectedFilters,
|
|
11
11
|
selectedFilters = _ref.selectedFilters,
|
|
12
12
|
_ref$subcategoryRequi = _ref.subcategoryRequireCategory,
|
|
13
|
-
subcategoryRequireCategory = _ref$subcategoryRequi === void 0 ? false : _ref$subcategoryRequi
|
|
13
|
+
subcategoryRequireCategory = _ref$subcategoryRequi === void 0 ? false : _ref$subcategoryRequi,
|
|
14
|
+
externalLinksInFilters = _ref.externalLinksInFilters;
|
|
15
|
+
var externalLinks = externalLinksInFilters === null || externalLinksInFilters === void 0 ? void 0 : externalLinksInFilters.filter(function (x) {
|
|
16
|
+
return x.fieldName == filter.id;
|
|
17
|
+
});
|
|
14
18
|
var fieldKey = filter.id;
|
|
15
19
|
var activeItemsCount = selectedFilters != null && selectedFilters[fieldKey] ? Object.keys(selectedFilters[fieldKey]).length : 0;
|
|
16
20
|
var handleClearFilters = function handleClearFilters(event) {
|
|
@@ -39,6 +43,16 @@ var FilterItemContainer = function FilterItemContainer(_ref) {
|
|
|
39
43
|
selectedFilters: selectedFilters,
|
|
40
44
|
setSelectedFilters: setSelectedFilters
|
|
41
45
|
});
|
|
46
|
+
}), externalLinks && externalLinks.map(function (link) {
|
|
47
|
+
return /*#__PURE__*/React__default.createElement(FilterItemContainer$1, {
|
|
48
|
+
key: link.externalLink,
|
|
49
|
+
item: /*#__PURE__*/React__default.createElement("a", {
|
|
50
|
+
href: link.externalLinkUrl
|
|
51
|
+
}, link.externalLink),
|
|
52
|
+
isExternalLink: true,
|
|
53
|
+
externalLinkUrl: link.externalLinkUrl,
|
|
54
|
+
field: filter.id
|
|
55
|
+
});
|
|
42
56
|
}));
|
|
43
57
|
return /*#__PURE__*/React__default.createElement(AccordionFilterItem$1, {
|
|
44
58
|
id: filter.id,
|
|
@@ -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}) => {\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}\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</>\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","
|
|
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}\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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"}
|
|
@@ -3,7 +3,7 @@ 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
5
|
|
|
6
|
-
var _excluded = ["className", "item", "type", "itemKey", "hasCount", "field", "selectedFilters", "setSelectedFilters"];
|
|
6
|
+
var _excluded = ["className", "item", "type", "itemKey", "hasCount", "field", "isExternalLink", "externalLinkUrl", "selectedFilters", "setSelectedFilters"];
|
|
7
7
|
var FilterItemContainer = function FilterItemContainer(_ref) {
|
|
8
8
|
var _selectedFilters$fiel;
|
|
9
9
|
var className = _ref.className,
|
|
@@ -15,6 +15,9 @@ var FilterItemContainer = function FilterItemContainer(_ref) {
|
|
|
15
15
|
_ref$hasCount = _ref.hasCount,
|
|
16
16
|
hasCount = _ref$hasCount === void 0 ? true : _ref$hasCount,
|
|
17
17
|
field = _ref.field,
|
|
18
|
+
_ref$isExternalLink = _ref.isExternalLink,
|
|
19
|
+
isExternalLink = _ref$isExternalLink === void 0 ? false : _ref$isExternalLink,
|
|
20
|
+
externalLinkUrl = _ref.externalLinkUrl,
|
|
18
21
|
selectedFilters = _ref.selectedFilters,
|
|
19
22
|
setSelectedFilters = _ref.setSelectedFilters,
|
|
20
23
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
@@ -30,11 +33,11 @@ var FilterItemContainer = function FilterItemContainer(_ref) {
|
|
|
30
33
|
setActiveItem = _useState2[1];
|
|
31
34
|
useEffect(function () {
|
|
32
35
|
var _selectedFilters$fiel2;
|
|
33
|
-
if (!selectedFilters) return;
|
|
36
|
+
if (!selectedFilters || isExternalLink) return;
|
|
34
37
|
setActiveItem(!!((_selectedFilters$fiel2 = selectedFilters[field]) !== null && _selectedFilters$fiel2 !== void 0 && _selectedFilters$fiel2[itemKey]));
|
|
35
38
|
}, [selectedFilters, field, itemKey]);
|
|
36
39
|
var changeHandler = function changeHandler() {
|
|
37
|
-
if (!isActive) {
|
|
40
|
+
if (!isActive || isExternalLink) {
|
|
38
41
|
trackEvent(eventTypes.FILTER_APPLIED, {
|
|
39
42
|
filterType: field,
|
|
40
43
|
filterChecked: itemKey
|
|
@@ -71,7 +74,11 @@ var FilterItemContainer = function FilterItemContainer(_ref) {
|
|
|
71
74
|
field: field,
|
|
72
75
|
activeItem: activeItem,
|
|
73
76
|
setActiveItem: setActiveItem,
|
|
74
|
-
changeHandler: changeHandler
|
|
77
|
+
changeHandler: changeHandler,
|
|
78
|
+
isExternalLink: isExternalLink,
|
|
79
|
+
externalLinkUrl: externalLinkUrl,
|
|
80
|
+
trackEvent: trackEvent,
|
|
81
|
+
eventTypes: eventTypes
|
|
75
82
|
}, rest));
|
|
76
83
|
};
|
|
77
84
|
|
|
@@ -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';\nimport { useTrackEvent } from '~/contexts/trackEventContext';\nimport FilterItem from '~/components/modules/filter/item';\n\nconst FilterItemContainer = ({\n\tclassName,\n\titem,\n\ttype = 'checkbox',\n\titemKey = null,\n\thasCount = true,\n\tfield,\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) return;\n\t\tsetActiveItem(!!selectedFilters[field]?.[itemKey]);\n\t}, [selectedFilters, field, itemKey]);\n\n\tconst changeHandler = () => {\n\t\tif (!isActive) {\n\t\t\ttrackEvent(eventTypes.FILTER_APPLIED, { filterType: field, filterChecked: itemKey });\n\t\t}\n\t\tsetSelectedFilters(prevFilters => {\n\t\t\tconst updatedFilters = { ...prevFilters };\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\t\t\tdelete updatedFilters[field][itemKey];\n\t\t\tif (Object.keys(updatedFilters[field]).length === 0) {\n\t\t\t\tdelete updatedFilters[field];\n\t\t\t}\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\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","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":";;;;;;AAIA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAAC,IAAA,
|
|
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';\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 changeHandler = () => {\n\t\tif (!isActive || isExternalLink) {\n\t\t\ttrackEvent(eventTypes.FILTER_APPLIED, { filterType: field, filterChecked: itemKey });\n\t\t}\n\t\tsetSelectedFilters(prevFilters => {\n\t\t\tconst updatedFilters = { ...prevFilters };\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\t\t\tdelete updatedFilters[field][itemKey];\n\t\t\tif (Object.keys(updatedFilters[field]).length === 0) {\n\t\t\t\tdelete updatedFilters[field];\n\t\t\t}\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","changeHandler","FILTER_APPLIED","filterType","filterChecked","prevFilters","updatedFilters","_objectSpread","Object","keys","length","_Object$keys","React","createElement","FilterItem","_extends"],"mappings":";;;;;;AAIA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAAC,IAAA,EAYnB;AAAA,EAAA,IAAAC,qBAAA,CAAA;AAAA,EAAA,IAXLC,SAAS,GAAAF,IAAA,CAATE,SAAS;IACTC,IAAI,GAAAH,IAAA,CAAJG,IAAI;IAAAC,SAAA,GAAAJ,IAAA,CACJK,IAAI;AAAJA,IAAAA,IAAI,GAAAD,SAAA,KAAG,KAAA,CAAA,GAAA,UAAU,GAAAA,SAAA;IAAAE,YAAA,GAAAN,IAAA,CACjBO,OAAO;AAAPA,IAAAA,OAAO,GAAAD,YAAA,KAAG,KAAA,CAAA,GAAA,IAAI,GAAAA,YAAA;IAAAE,aAAA,GAAAR,IAAA,CACdS,QAAQ;AAARA,IAAAA,QAAQ,GAAAD,aAAA,KAAG,KAAA,CAAA,GAAA,IAAI,GAAAA,aAAA;IACfE,KAAK,GAAAV,IAAA,CAALU,KAAK;IAAAC,mBAAA,GAAAX,IAAA,CACLY,cAAc;AAAdA,IAAAA,cAAc,GAAAD,mBAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,mBAAA;IACtBE,eAAe,GAAAb,IAAA,CAAfa,eAAe;IACfC,eAAe,GAAAd,IAAA,CAAfc,eAAe;IACfC,kBAAkB,GAAAf,IAAA,CAAlBe,kBAAkB;AACfC,IAAAA,IAAI,GAAAC,wBAAA,CAAAjB,IAAA,EAAAkB,SAAA,CAAA,CAAA;AAEP,EAAA,IAAAC,cAAA,GAAmCC,aAAa,EAAE;IAA1CC,UAAU,GAAAF,cAAA,CAAVE,UAAU;IAAEC,UAAU,GAAAH,cAAA,CAAVG,UAAU,CAAA;EAC9B,IAAMC,QAAQ,GAAGpB,IAAI,CAACqB,IAAI,GAAGrB,IAAI,CAACqB,IAAI,GAAGrB,IAAI,CAAA;AAC7CI,EAAAA,OAAO,GAAGA,OAAO,KAAK,IAAI,GAAGgB,QAAQ,GAAGhB,OAAO,CAAA;EAC/C,IAAMkB,QAAQ,GAAGX,eAAe,IAAIY,SAAS,IAAI,CAAC,GAAAzB,qBAAA,GAACa,eAAe,CAACJ,KAAK,CAAC,MAAAT,IAAAA,IAAAA,qBAAA,eAAtBA,qBAAA,CAAyBM,OAAO,CAAC,CAAA,CAAA;AACpF,EAAA,IAAAoB,SAAA,GAAoCC,QAAQ,CAACH,QAAQ,CAAC;IAAAI,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAA/CI,IAAAA,UAAU,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,aAAa,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AAEhCI,EAAAA,SAAS,CAAC,YAAM;AAAA,IAAA,IAAAC,sBAAA,CAAA;AACf,IAAA,IAAI,CAACpB,eAAe,IAAIF,cAAc,EAAE,OAAA;AACxCoB,IAAAA,aAAa,CAAC,CAAC,EAAA,CAAAE,sBAAA,GAACpB,eAAe,CAACJ,KAAK,CAAC,MAAA,IAAA,IAAAwB,sBAAA,KAAtBA,KAAAA,CAAAA,IAAAA,sBAAA,CAAyB3B,OAAO,CAAC,CAAC,CAAA,CAAA;GAClD,EAAE,CAACO,eAAe,EAAEJ,KAAK,EAAEH,OAAO,CAAC,CAAC,CAAA;AAErC,EAAA,IAAM4B,aAAa,GAAG,SAAhBA,aAAaA,GAAS;AAC3B,IAAA,IAAI,CAACV,QAAQ,IAAIb,cAAc,EAAE;AAChCS,MAAAA,UAAU,CAACC,UAAU,CAACc,cAAc,EAAE;AAAEC,QAAAA,UAAU,EAAE3B,KAAK;AAAE4B,QAAAA,aAAa,EAAE/B,OAAAA;AAAQ,OAAC,CAAC,CAAA;AACrF,KAAA;IACAQ,kBAAkB,CAAC,UAAAwB,WAAW,EAAI;AACjC,MAAA,IAAMC,cAAc,GAAAC,cAAA,CAAA,EAAA,EAAQF,WAAW,CAAE,CAAA;MACzC,IAAI,CAACd,QAAQ,EAAE;AACd,QAAA,IAAI,CAACe,cAAc,CAAC9B,KAAK,CAAC,EAAE;AAC3B8B,UAAAA,cAAc,CAAC9B,KAAK,CAAC,GAAG,EAAE,CAAA;AAC3B,SAAA;AACA8B,QAAAA,cAAc,CAAC9B,KAAK,CAAC,CAACH,OAAO,CAAC,GAAG,IAAI,CAAA;AACrC,QAAA,OAAOiC,cAAc,CAAA;AACtB,OAAA;AACA,MAAA,OAAOA,cAAc,CAAC9B,KAAK,CAAC,CAACH,OAAO,CAAC,CAAA;AACrC,MAAA,IAAImC,MAAM,CAACC,IAAI,CAACH,cAAc,CAAC9B,KAAK,CAAC,CAAC,CAACkC,MAAM,KAAK,CAAC,EAAE;QACpD,OAAOJ,cAAc,CAAC9B,KAAK,CAAC,CAAA;AAC7B,OAAA;AACA,MAAA,OAAO8B,cAAc,CAAA;AACtB,KAAC,CAAC,CAAA;GACF,CAAA;AAEDP,EAAAA,SAAS,CAAC,YAAM;AAAA,IAAA,IAAAY,YAAA,CAAA;AACf,IAAA,IAAI/B,eAAe,IAAIA,eAAe,CAACJ,KAAK,CAAC,IAAI,CAAAmC,CAAAA,YAAA,GAAAH,MAAM,CAACC,IAAI,CAAC7B,eAAe,CAACJ,KAAK,CAAC,CAAC,MAAAmC,IAAAA,IAAAA,YAAA,KAAnCA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAA,CAAqCD,MAAM,IAAG,CAAC,EAAE,OAAO,KACpG,IAAIb,UAAU,KAAK,IAAI,EAAE;MAC7BC,aAAa,CAAC,KAAK,CAAC,CAAA;AACrB,KAAA;AACD,GAAC,EAAE,CAAClB,eAAe,CAAC,CAAC,CAAA;AAErB,EAAA,oBACCgC,cAAA,CAAAC,aAAA,CAACC,UAAU,EAAAC,QAAA,CAAA;AACV/C,IAAAA,SAAS,EAAEA,SAAU;AACrBC,IAAAA,IAAI,EAAEA,IAAK;AACXE,IAAAA,IAAI,EAAEA,IAAK;AACXE,IAAAA,OAAO,EAAEA,OAAQ;AACjBE,IAAAA,QAAQ,EAAEA,QAAS;AACnBC,IAAAA,KAAK,EAAEA,KAAM;AACbqB,IAAAA,UAAU,EAAEA,UAAW;AACvBC,IAAAA,aAAa,EAAEA,aAAc;AAC7BG,IAAAA,aAAa,EAAEA,aAAc;AAC7BvB,IAAAA,cAAc,EAAEA,cAAe;AAC/BC,IAAAA,eAAe,EAAEA,eAAgB;AACjCQ,IAAAA,UAAU,EAAEA,UAAW;AACvBC,IAAAA,UAAU,EAAEA,UAAAA;GACRN,EAAAA,IAAI,CACR,CAAC,CAAA;AAEJ;;;;"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { objectWithoutProperties as _objectWithoutProperties, extends as _extends } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import React__default from 'react';
|
|
3
|
+
import IconContained from '../icon.js';
|
|
3
4
|
|
|
4
|
-
var _excluded = ["className", "item", "type", "itemKey", "hasCount", "field", "activeItem", "setActiveItem", "changeHandler"];
|
|
5
|
+
var _excluded = ["className", "item", "type", "itemKey", "hasCount", "field", "activeItem", "setActiveItem", "changeHandler", "isExternalLink", "externalLinkUrl", "trackEvent", "eventTypes"];
|
|
5
6
|
var FilterItem = function FilterItem(_ref) {
|
|
6
7
|
var className = _ref.className,
|
|
7
8
|
item = _ref.item,
|
|
@@ -12,27 +13,47 @@ var FilterItem = function FilterItem(_ref) {
|
|
|
12
13
|
activeItem = _ref.activeItem,
|
|
13
14
|
setActiveItem = _ref.setActiveItem,
|
|
14
15
|
changeHandler = _ref.changeHandler,
|
|
16
|
+
_ref$isExternalLink = _ref.isExternalLink,
|
|
17
|
+
isExternalLink = _ref$isExternalLink === void 0 ? false : _ref$isExternalLink,
|
|
18
|
+
externalLinkUrl = _ref.externalLinkUrl,
|
|
19
|
+
trackEvent = _ref.trackEvent,
|
|
20
|
+
eventTypes = _ref.eventTypes,
|
|
15
21
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
16
22
|
var itemName = item.name ? item.name : item;
|
|
17
|
-
return
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
23
|
+
return (
|
|
24
|
+
/*#__PURE__*/
|
|
25
|
+
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions
|
|
26
|
+
React__default.createElement("label", _extends({
|
|
27
|
+
onClick: function onClick() {
|
|
28
|
+
if (!isExternalLink) return;
|
|
29
|
+
trackEvent(eventTypes.EXTERNAL_LINK_CLICKED, {
|
|
30
|
+
link: externalLinkUrl
|
|
31
|
+
});
|
|
32
|
+
window.location.href = externalLinkUrl;
|
|
33
|
+
},
|
|
34
|
+
className: "\n hc-flex hc-items-start hc-gap-2 hc-px-2 hc-py-1.5 hc-rounded-sm hc-text-sm hc-cursor-pointer hc-transition hover:hc-bg-uiAccent/5\n ".concat(className !== null && className !== void 0 ? className : "", "\n ")
|
|
35
|
+
}, rest), isExternalLink ? /*#__PURE__*/React__default.createElement(IconContained, {
|
|
36
|
+
icon: "tabler:external-link",
|
|
37
|
+
size: "hc-size-4",
|
|
38
|
+
className: 'hc-size-4 hc-mt-px hc-text-primary hc-border-uiAccent/30'
|
|
39
|
+
}) : /*#__PURE__*/React__default.createElement("input", {
|
|
40
|
+
id: itemKey,
|
|
41
|
+
name: field,
|
|
42
|
+
disabled: item.count === 0,
|
|
43
|
+
value: itemName,
|
|
44
|
+
type: type,
|
|
45
|
+
className: "hc-size-4 hc-mt-px hc-text-primary hc-border-uiAccent/30 hc-transition-colors hc-rounded-sm",
|
|
46
|
+
checked: activeItem,
|
|
47
|
+
onChange: function onChange() {
|
|
48
|
+
setActiveItem(!activeItem);
|
|
49
|
+
changeHandler();
|
|
50
|
+
}
|
|
51
|
+
}), /*#__PURE__*/React__default.createElement("span", {
|
|
52
|
+
className: "hc-text-left hc-font-medium"
|
|
53
|
+
}, itemName), hasCount && !isExternalLink && /*#__PURE__*/React__default.createElement("span", {
|
|
54
|
+
className: "hc-inline-block hc-mt-1 hc-ml-auto hc-text-xs hc-leading-none hc-text-primary"
|
|
55
|
+
}, "(", item.count, ")"))
|
|
56
|
+
);
|
|
36
57
|
};
|
|
37
58
|
|
|
38
59
|
export { FilterItem as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.js","sources":["../../../../src/components/modules/filter/item.js"],"sourcesContent":["import React from 'react';\n\nconst FilterItem = ({\n\tclassName,\n\titem,\n\ttype,\n\titemKey,\n\thasCount,\n\tfield,\n\tactiveItem,\n\tsetActiveItem,\n\tchangeHandler,\n\t...rest\n}) => {\n\tconst itemName = item.name ? item.name : item;\n\n\treturn (\n\t\t<label\n\t\t\tclassName={`\n hc-flex hc-items-start hc-gap-2 hc-px-2 hc-py-1.5 hc-rounded-sm hc-text-sm hc-cursor-pointer hc-transition hover:hc-bg-uiAccent/5\n ${className ?? \"\"}\n `}\n\t\t\t{...rest}\n\t\t>\n\t\t\t<input\n\t\t\t\tid={itemKey}\n\t\t\t\tname={field}\n\t\t\t\tdisabled={item.count === 0}\n\t\t\t\tvalue={itemName}\n\t\t\t\ttype={type}\n\t\t\t\tclassName=\"hc-size-4 hc-mt-px hc-text-primary hc-border-uiAccent/30 hc-transition-colors hc-rounded-sm\"\n\t\t\t\tchecked={activeItem}\n\t\t\t\tonChange={() => {\n\t\t\t\t\tsetActiveItem(!activeItem);\n\t\t\t\t\tchangeHandler();\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<span className=\"hc-text-left hc-font-medium\">{itemName}</span>\n\t\t\t{hasCount && (\n\t\t\t\t<span className=\"hc-inline-block hc-mt-1 hc-ml-auto hc-text-xs hc-leading-none hc-text-primary\">\n ({item.count})\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</label>\n\t);\n};\n\nexport default FilterItem;\n"],"names":["FilterItem","_ref","className","item","type","itemKey","hasCount","field","activeItem","setActiveItem","changeHandler","rest","_objectWithoutProperties","_excluded","itemName","name","React","createElement","_extends","concat","id","disabled","count","value","checked","onChange"],"mappings":"
|
|
1
|
+
{"version":3,"file":"item.js","sources":["../../../../src/components/modules/filter/item.js"],"sourcesContent":["import React from 'react';\r\nimport Icon from '~/components/modules/icon';\r\n\r\nconst FilterItem = ({\r\n\tclassName,\r\n\titem,\r\n\ttype,\r\n\titemKey,\r\n\thasCount,\r\n\tfield,\r\n\tactiveItem,\r\n\tsetActiveItem,\r\n\tchangeHandler,\r\n\tisExternalLink = false,\r\n\texternalLinkUrl,\r\n\ttrackEvent,\r\n\teventTypes,\r\n\t...rest\r\n}) => {\r\n\tconst itemName = item.name ? item.name : item;\r\n\r\n\treturn (\r\n\t\t// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions\r\n\t\t<label\r\n\t\t onClick={() =>\r\n\t\t\t{\r\n\t\t\t\tif(!isExternalLink) return;\r\n\t\t\t trackEvent(eventTypes.EXTERNAL_LINK_CLICKED, { link: externalLinkUrl });\r\n\t\t\t\twindow.location.href = externalLinkUrl;\r\n\t\t\t}}\r\n\t\t\tclassName={`\r\n hc-flex hc-items-start hc-gap-2 hc-px-2 hc-py-1.5 hc-rounded-sm hc-text-sm hc-cursor-pointer hc-transition hover:hc-bg-uiAccent/5\r\n ${className ?? \"\"}\r\n `}\r\n\t\t\t{...rest}\r\n\t\t>\r\n\t\t\t{isExternalLink ? (\r\n\t\t\t\t<Icon\r\n\t\t\t\t\ticon=\"tabler:external-link\"\r\n\t\t\t\t\tsize=\"hc-size-4\"\r\n\t\t\t\t\tclassName={'hc-size-4 hc-mt-px hc-text-primary hc-border-uiAccent/30'}\r\n\t\t\t\t></Icon>\r\n\t\t\t) : (\r\n\t\t\t\t<input\r\n\t\t\t\t\tid={itemKey}\r\n\t\t\t\t\tname={field}\r\n\t\t\t\t\tdisabled={item.count === 0}\r\n\t\t\t\t\tvalue={itemName}\r\n\t\t\t\t\ttype={type}\r\n\t\t\t\t\tclassName=\"hc-size-4 hc-mt-px hc-text-primary hc-border-uiAccent/30 hc-transition-colors hc-rounded-sm\"\r\n\t\t\t\t\tchecked={activeItem}\r\n\t\t\t\t\tonChange={() => {\r\n\t\t\t\t\t\tsetActiveItem(!activeItem);\r\n\t\t\t\t\t\tchangeHandler();\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\r\n\t\t\t<span className=\"hc-text-left hc-font-medium\">{itemName}</span>\r\n\t\t\t{hasCount && !isExternalLink && (\r\n\t\t\t\t<span className=\"hc-inline-block hc-mt-1 hc-ml-auto hc-text-xs hc-leading-none hc-text-primary\">\r\n ({item.count})\r\n\t\t\t\t</span>\r\n\t\t\t)}\r\n\t\t</label>\r\n\t);\r\n};\r\n\r\nexport default FilterItem;\r\n"],"names":["FilterItem","_ref","className","item","type","itemKey","hasCount","field","activeItem","setActiveItem","changeHandler","_ref$isExternalLink","isExternalLink","externalLinkUrl","trackEvent","eventTypes","rest","_objectWithoutProperties","_excluded","itemName","name","React","createElement","_extends","onClick","EXTERNAL_LINK_CLICKED","link","window","location","href","concat","Icon","icon","size","id","disabled","count","value","checked","onChange"],"mappings":";;;;;AAGA,IAAMA,UAAU,GAAG,SAAbA,UAAUA,CAAAC,IAAA,EAeV;AAAA,EAAA,IAdLC,SAAS,GAAAD,IAAA,CAATC,SAAS;IACTC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IACJC,IAAI,GAAAH,IAAA,CAAJG,IAAI;IACJC,OAAO,GAAAJ,IAAA,CAAPI,OAAO;IACPC,QAAQ,GAAAL,IAAA,CAARK,QAAQ;IACRC,KAAK,GAAAN,IAAA,CAALM,KAAK;IACLC,UAAU,GAAAP,IAAA,CAAVO,UAAU;IACVC,aAAa,GAAAR,IAAA,CAAbQ,aAAa;IACbC,aAAa,GAAAT,IAAA,CAAbS,aAAa;IAAAC,mBAAA,GAAAV,IAAA,CACbW,cAAc;AAAdA,IAAAA,cAAc,GAAAD,mBAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,mBAAA;IACtBE,eAAe,GAAAZ,IAAA,CAAfY,eAAe;IACfC,UAAU,GAAAb,IAAA,CAAVa,UAAU;IACVC,UAAU,GAAAd,IAAA,CAAVc,UAAU;AACPC,IAAAA,IAAI,GAAAC,wBAAA,CAAAhB,IAAA,EAAAiB,SAAA,CAAA,CAAA;EAEP,IAAMC,QAAQ,GAAGhB,IAAI,CAACiB,IAAI,GAAGjB,IAAI,CAACiB,IAAI,GAAGjB,IAAI,CAAA;AAE7C,EAAA;AAAA;AACC;IACAkB,cAAA,CAAAC,aAAA,CAAA,OAAA,EAAAC,QAAA,CAAA;MACEC,OAAO,EAAE,SAAAA,OAAAA,GACV;QACC,IAAG,CAACZ,cAAc,EAAE,OAAA;AACjBE,QAAAA,UAAU,CAACC,UAAU,CAACU,qBAAqB,EAAE;AAAEC,UAAAA,IAAI,EAAEb,eAAAA;AAAgB,SAAC,CAAC,CAAA;AAC1Ec,QAAAA,MAAM,CAACC,QAAQ,CAACC,IAAI,GAAGhB,eAAe,CAAA;OACrC;MACFX,SAAS,EAAA,uJAAA,CAAA4B,MAAA,CAEF5B,SAAS,aAATA,SAAS,KAAA,KAAA,CAAA,GAATA,SAAS,GAAI,EAAE,EAAA,UAAA,CAAA;KAElBc,EAAAA,IAAI,GAEPJ,cAAc,gBACdS,cAAA,CAAAC,aAAA,CAACS,aAAI,EAAA;AACJC,MAAAA,IAAI,EAAC,sBAAsB;AAC3BC,MAAAA,IAAI,EAAC,WAAW;AAChB/B,MAAAA,SAAS,EAAE,0DAAA;AAA2D,KAChE,CAAC,gBAERmB,cAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AACCY,MAAAA,EAAE,EAAE7B,OAAQ;AACZe,MAAAA,IAAI,EAAEb,KAAM;AACZ4B,MAAAA,QAAQ,EAAEhC,IAAI,CAACiC,KAAK,KAAK,CAAE;AAC3BC,MAAAA,KAAK,EAAElB,QAAS;AAChBf,MAAAA,IAAI,EAAEA,IAAK;AACXF,MAAAA,SAAS,EAAC,6FAA6F;AACvGoC,MAAAA,OAAO,EAAE9B,UAAW;MACpB+B,QAAQ,EAAE,SAAAA,QAAAA,GAAM;QACf9B,aAAa,CAAC,CAACD,UAAU,CAAC,CAAA;AAC1BE,QAAAA,aAAa,EAAE,CAAA;AAChB,OAAA;AAAE,KACF,CACD,eAEDW,cAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMpB,MAAAA,SAAS,EAAC,6BAAA;KAA+BiB,EAAAA,QAAe,CAAC,EAC9Db,QAAQ,IAAI,CAACM,cAAc,iBAC3BS,cAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMpB,MAAAA,SAAS,EAAC,+EAAA;AAA+E,KAAA,EAAC,GACzF,EAACC,IAAI,CAACiC,KAAK,EAAC,GACb,CAED,CAAA;AAAC,IAAA;AAEV;;;;"}
|
|
@@ -22,7 +22,6 @@ var ListingDetails = function ListingDetails(_ref) {
|
|
|
22
22
|
return null;
|
|
23
23
|
}
|
|
24
24
|
var matchingRecruiter = recruiter;
|
|
25
|
-
console.log(matchingRecruiter);
|
|
26
25
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
27
26
|
className: "hc-w-full"
|
|
28
27
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listing-details.js","sources":["../../../../src/components/modules/jobListing/listing-details.js"],"sourcesContent":["import React from 'react';\nimport RecruiterHeadshot from '~/components/modules/list/item-expand-card/recruiter-headshot';\nimport RecruiterDetails from '~/components/modules/list/item-expand-card/recruiter-details';\nimport RecruiterContactNav from '~/components/modules/list/item-expand-card/recruiter-contact-nav';\nimport ApplyButtonGroup from '~/components/modules/buttons/button-group-apply';\nimport CommutePill from '~/components/modules/buttons/commute-pill';\n\nconst ListingDetails = ({\n\titem,\n\trecruiter,\n\ttravelTime,\n\tuseDetailsPostMessage,\n\tnavigateToDetails,\n\tnavigateToEasyApply,\n\tLink,\n\tlinkFormat,\n\tuseApplyDialog,\n\tinternalApplyLink,\n\tcompanyName,\n\tjobsDomain,\n\ttrackEvent,\n\teventTypes\n}) => {\n\tif (!item) {\n\t\treturn null;\n\t}\n\n\tlet matchingRecruiter = recruiter;\n\
|
|
1
|
+
{"version":3,"file":"listing-details.js","sources":["../../../../src/components/modules/jobListing/listing-details.js"],"sourcesContent":["import React from 'react';\nimport RecruiterHeadshot from '~/components/modules/list/item-expand-card/recruiter-headshot';\nimport RecruiterDetails from '~/components/modules/list/item-expand-card/recruiter-details';\nimport RecruiterContactNav from '~/components/modules/list/item-expand-card/recruiter-contact-nav';\nimport ApplyButtonGroup from '~/components/modules/buttons/button-group-apply';\nimport CommutePill from '~/components/modules/buttons/commute-pill';\n\nconst ListingDetails = ({\n\titem,\n\trecruiter,\n\ttravelTime,\n\tuseDetailsPostMessage,\n\tnavigateToDetails,\n\tnavigateToEasyApply,\n\tLink,\n\tlinkFormat,\n\tuseApplyDialog,\n\tinternalApplyLink,\n\tcompanyName,\n\tjobsDomain,\n\ttrackEvent,\n\teventTypes\n}) => {\n\tif (!item) {\n\t\treturn null;\n\t}\n\n\tlet matchingRecruiter = recruiter;\n\treturn (\n\t\t<div className=\"hc-w-full\">\n\t\t\t<div className=\"hc-grow hc-flex hc-flex-wrap hc-items-center hc-gap-4\">\n\t\t\t\t{/* {matchingRecruiter?.headshot && (\n\t\t\t\t\t<RecruiterHeadshot\n\t\t\t\t\t\timage={`${matchingRecruiter.headshot.includes(\"http\") ? '' :'https:'}${matchingRecruiter.headshot}`}\n\t\t\t\t\t\talt={matchingRecruiter?.firstName}\n\t\t\t\t\t\tclassName=\"hc-bg-gray-300\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t{matchingRecruiter && (\n\t\t\t\t\t<RecruiterDetails\n\t\t\t\t\t\tcontactNav={\n\t\t\t\t\t\t\t<RecruiterContactNav>\n\t\t\t\t\t\t\t\t{matchingRecruiter?.mobilePhone && (\n\t\t\t\t\t\t\t\t\t<RecruiterContactNav.Button\n\t\t\t\t\t\t\t\t\t\thref={`tel:${matchingRecruiter.mobilePhone}`}\n\t\t\t\t\t\t\t\t\t\ttitle={`Call ${matchingRecruiter.mobilePhone}`}\n\t\t\t\t\t\t\t\t\t\ticon=\"fluent:phone-32-regular\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{matchingRecruiter?.email && (\n\t\t\t\t\t\t\t\t\t<RecruiterContactNav.Button\n\t\t\t\t\t\t\t\t\t\thref={`mailto:${matchingRecruiter.email}`}\n\t\t\t\t\t\t\t\t\t\ttitle={`email ${matchingRecruiter.email}`}\n\t\t\t\t\t\t\t\t\t\ticon=\"bi:envelope-at\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{matchingRecruiter?.linkedIn && (\n\t\t\t\t\t\t\t\t\t<RecruiterContactNav.Button\n\t\t\t\t\t\t\t\t\t\thref={matchingRecruiter.linkedIn}\n\t\t\t\t\t\t\t\t\t\ttitle=\"LinkedIn\"\n\t\t\t\t\t\t\t\t\t\ticon=\"ant-design:linkedin-outlined\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</RecruiterContactNav>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{matchingRecruiter?.firstName || matchingRecruiter?.lastName && (\n\t\t\t\t\t\t\t<RecruiterDetails.Title>\n\t\t\t\t\t\t\t\t{`${matchingRecruiter?.firstName} ${matchingRecruiter?.lastName}`}\n\t\t\t\t\t\t\t</RecruiterDetails.Title>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{item.details?.recruiter?.title && (\n\t\t\t\t\t\t\t<RecruiterDetails.Text>\n\t\t\t\t\t\t\t\t{item.details.recruiter.title}\n\t\t\t\t\t\t\t</RecruiterDetails.Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</RecruiterDetails>\n\t\t\t\t)} */}\n\t\t\t\t<ApplyButtonGroup\n\t\t\t\t\tuseDetailsPostMessage={useDetailsPostMessage}\n\t\t\t\t\tnavigateToDetails={navigateToDetails}\n\t\t\t\t\tnavigateToEasyApply={navigateToEasyApply}\n\t\t\t\t\tLink={Link}\n\t\t\t\t\tlinkFormat={linkFormat}\n\t\t\t\t\tincludeDialog={useApplyDialog}\n\t\t\t\t\tinternalApplyLink={internalApplyLink}\n\t\t\t\t\tcompanyName={companyName}\n\t\t\t\t\tapplyUrl={item?.applyUrl}\n\t\t\t\t\titemId={item.id}\n\t\t\t\t\titem={item}\n\t\t\t\t\ttrackEvent={trackEvent}\n\t\t\t\t\teventTypes={eventTypes}\n\t\t\t\t\tdetailsUrl={item.useClientJobUrl ? item?.detailsUrl : `${jobsDomain}${item.id}`}\n\t\t\t\t\tclassName={`\n lg:hc-w-auto hc-order-first lg:hc-order-last md:hc-self-center hc-py-2 lg:hc-p-0 lg:hc-mb-0 hc-border-b lg:hc-border-none hc-border-uiAccent/20\n ${matchingRecruiter ? \"lg:hc-flex-col lg:hc-w-auto\" : \"lg:hc-flex-row\"}\n `}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"hc-w-full\">\n\t\t\t\t<CommutePill travelTime={travelTime} className=\"hc-ml-0\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default ListingDetails;\n\n"],"names":["ListingDetails","_ref","item","recruiter","travelTime","useDetailsPostMessage","navigateToDetails","navigateToEasyApply","Link","linkFormat","useApplyDialog","internalApplyLink","companyName","jobsDomain","trackEvent","eventTypes","matchingRecruiter","React","createElement","className","ApplyButtonGroup","includeDialog","applyUrl","itemId","id","detailsUrl","useClientJobUrl","concat","CommutePill"],"mappings":";;;;;AAOA,IAAMA,cAAc,GAAG,SAAjBA,cAAcA,CAAAC,IAAA,EAed;AAAA,EAAA,IAdLC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IACJC,SAAS,GAAAF,IAAA,CAATE,SAAS;IACTC,UAAU,GAAAH,IAAA,CAAVG,UAAU;IACVC,qBAAqB,GAAAJ,IAAA,CAArBI,qBAAqB;IACrBC,iBAAiB,GAAAL,IAAA,CAAjBK,iBAAiB;IACjBC,mBAAmB,GAAAN,IAAA,CAAnBM,mBAAmB;IACnBC,IAAI,GAAAP,IAAA,CAAJO,IAAI;IACJC,UAAU,GAAAR,IAAA,CAAVQ,UAAU;IACVC,cAAc,GAAAT,IAAA,CAAdS,cAAc;IACdC,iBAAiB,GAAAV,IAAA,CAAjBU,iBAAiB;IACjBC,WAAW,GAAAX,IAAA,CAAXW,WAAW;IACXC,UAAU,GAAAZ,IAAA,CAAVY,UAAU;IACVC,UAAU,GAAAb,IAAA,CAAVa,UAAU;IACVC,UAAU,GAAAd,IAAA,CAAVc,UAAU,CAAA;EAEV,IAAI,CAACb,IAAI,EAAE;AACV,IAAA,OAAO,IAAI,CAAA;AACZ,GAAA;EAEA,IAAIc,iBAAiB,GAAGb,SAAS,CAAA;EACjC,oBACCc,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,WAAA;GACdF,eAAAA,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,uDAAA;AAAuD,GAAA,eAgDrEF,cAAA,CAAAC,aAAA,CAACE,gBAAgB,EAAA;AAChBf,IAAAA,qBAAqB,EAAEA,qBAAsB;AAC7CC,IAAAA,iBAAiB,EAAEA,iBAAkB;AACrCC,IAAAA,mBAAmB,EAAEA,mBAAoB;AACzCC,IAAAA,IAAI,EAAEA,IAAK;AACXC,IAAAA,UAAU,EAAEA,UAAW;AACvBY,IAAAA,aAAa,EAAEX,cAAe;AAC9BC,IAAAA,iBAAiB,EAAEA,iBAAkB;AACrCC,IAAAA,WAAW,EAAEA,WAAY;AACzBU,IAAAA,QAAQ,EAAEpB,IAAI,KAAA,IAAA,IAAJA,IAAI,KAAJA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAEoB,QAAS;IACzBC,MAAM,EAAErB,IAAI,CAACsB,EAAG;AAChBtB,IAAAA,IAAI,EAAEA,IAAK;AACXY,IAAAA,UAAU,EAAEA,UAAW;AACvBC,IAAAA,UAAU,EAAEA,UAAW;IACvBU,UAAU,EAAEvB,IAAI,CAACwB,eAAe,GAAGxB,IAAI,KAAA,IAAA,IAAJA,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJA,IAAI,CAAEuB,UAAU,GAAAE,EAAAA,CAAAA,MAAA,CAAMd,UAAU,CAAA,CAAAc,MAAA,CAAGzB,IAAI,CAACsB,EAAE,CAAG;AAChFL,IAAAA,SAAS,gLAAAQ,MAAA,CAEAX,iBAAiB,GAAG,6BAA6B,GAAG,gBAAgB,EAAA,cAAA,CAAA;AACtE,GACP,CACG,CAAC,eACNC,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,WAAA;AAAW,GAAA,eACzBF,cAAA,CAAAC,aAAA,CAACU,WAAW,EAAA;AAACxB,IAAAA,UAAU,EAAEA,UAAW;AAACe,IAAAA,SAAS,EAAC,SAAA;GAAW,CACtD,CACD,CAAC,CAAA;AAER;;;;"}
|
|
@@ -11,7 +11,6 @@ const ItemsList = ({ fieldNames, showMap, fieldsShown, filteredListings, loading
|
|
|
11
11
|
const hasVerticalScrollbar = scrollHeight > clientHeight;
|
|
12
12
|
const newScrollbarWidth = hasVerticalScrollbar ? offsetWidth - clientWidth : 0;
|
|
13
13
|
setScrollbarWidth(newScrollbarWidth);
|
|
14
|
-
console.log('Scrollbar width:', newScrollbarWidth);
|
|
15
14
|
}
|
|
16
15
|
};
|
|
17
16
|
useEffect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item-list.js","sources":["../../../../src/components/modules/list/item-list.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState, RefObject, ReactNode } from 'react';\nimport Header from '~/components/modules/list/header';\nimport Sort from '~/components/modules/filter/sort';\nimport Loading from \"~/util/loading\";\nimport { Listing } from '~/types/Listings';\n\ninterface ItemsListProps {\n fieldNames: Record<string, string>;\n showMap: boolean;\n fieldsShown: string[];\n filteredListings: Listing[];\n loading: boolean;\n sortSetting: any;\n setSortSetting: (setting: any) => void;\n itemLimit: number;\n loader: RefObject<HTMLDivElement>;\n scrollContainerRef: RefObject<HTMLDivElement>;\n itemRefs: any;\n selectedListItem: Listing | null;\n children: ReactNode;\n includeFavorite: boolean;\n}\n\nconst ItemsList: React.FC<ItemsListProps> = ({\n fieldNames,\n showMap,\n fieldsShown,\n filteredListings,\n loading,\n sortSetting,\n setSortSetting,\n itemLimit,\n loader,\n scrollContainerRef,\n includeFavorite = false,\n children\n}) => {\n const [scrollbarWidth, setScrollbarWidth] = useState<number>(0);\n\n const checkScrollbar = () => {\n if (scrollContainerRef.current) {\n const { scrollHeight, clientHeight, offsetWidth, clientWidth } = scrollContainerRef.current;\n const hasVerticalScrollbar = scrollHeight > clientHeight;\n const newScrollbarWidth = hasVerticalScrollbar ? offsetWidth - clientWidth : 0;\n setScrollbarWidth(newScrollbarWidth);\n
|
|
1
|
+
{"version":3,"file":"item-list.js","sources":["../../../../src/components/modules/list/item-list.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState, RefObject, ReactNode } from 'react';\nimport Header from '~/components/modules/list/header';\nimport Sort from '~/components/modules/filter/sort';\nimport Loading from \"~/util/loading\";\nimport { Listing } from '~/types/Listings';\n\ninterface ItemsListProps {\n fieldNames: Record<string, string>;\n showMap: boolean;\n fieldsShown: string[];\n filteredListings: Listing[];\n loading: boolean;\n sortSetting: any;\n setSortSetting: (setting: any) => void;\n itemLimit: number;\n loader: RefObject<HTMLDivElement>;\n scrollContainerRef: RefObject<HTMLDivElement>;\n itemRefs: any;\n selectedListItem: Listing | null;\n children: ReactNode;\n includeFavorite: boolean;\n}\n\nconst ItemsList: React.FC<ItemsListProps> = ({\n fieldNames,\n showMap,\n fieldsShown,\n filteredListings,\n loading,\n sortSetting,\n setSortSetting,\n itemLimit,\n loader,\n scrollContainerRef,\n includeFavorite = false,\n children\n}) => {\n const [scrollbarWidth, setScrollbarWidth] = useState<number>(0);\n\n const checkScrollbar = () => {\n if (scrollContainerRef.current) {\n const { scrollHeight, clientHeight, offsetWidth, clientWidth } = scrollContainerRef.current;\n const hasVerticalScrollbar = scrollHeight > clientHeight;\n const newScrollbarWidth = hasVerticalScrollbar ? offsetWidth - clientWidth : 0;\n setScrollbarWidth(newScrollbarWidth);\n }\n };\n\n useEffect(() => {\n checkScrollbar();\n\n const resizeObserver = new ResizeObserver(() => checkScrollbar());\n const mutationObserver = new MutationObserver(() => checkScrollbar());\n\n if (scrollContainerRef.current) {\n resizeObserver.observe(scrollContainerRef.current);\n mutationObserver.observe(scrollContainerRef.current, { childList: true, subtree: true, attributes: true });\n }\n\n return () => {\n if (scrollContainerRef.current) {\n resizeObserver.unobserve(scrollContainerRef.current);\n mutationObserver.disconnect();\n }\n };\n }, [scrollContainerRef]);\n\n return (\n <div className=\"hc-relative hc-bg-white md:hc-px-4 hc-flex hc-flex-col\">\n <div className=\"hc-flex hc-flex-wrap hc-items-center hc-justify-between hc-gap-4 md:hc-mb-2 hc-p-3 md:hc-p-0 hc-bg-uiAccent/10 md:hc-bg-transparent hc-border-b md:hc-border-none hc-border-uiAccent/20\">\n <h2 className=\"hc-text-gray-500 hc-font-semibold hc-text-xs md:hc-text-sm\">\n {loading && <span>Loading...</span>}\n {!loading && <span>{filteredListings.length} results</span>}\n </h2>\n <div className=\"hc-block md:hc-hidden\">\n <Sort\n className={''}\n fields={fieldsShown}\n setSortSetting={setSortSetting}\n fieldNames={fieldNames}\n />\n </div>\n </div>\n <div>\n <Header\n className={''}\n setSortSetting={setSortSetting}\n sortSetting={sortSetting}\n fieldsShown={fieldsShown}\n fieldNames={fieldNames}\n includeFavorite={includeFavorite}\n scrollbarWidth={scrollbarWidth}\n />\n </div>\n <div\n ref={scrollContainerRef}\n className={`\n hc-flex-grow hc-overflow-y-auto\n ${showMap ? \"md:hc-max-h-45vh hc-max-h-[100vh]\" : \"md:hc-max-h-95vh hc-max-h-[95vh]\"}\n `}\n >\n {loading ? (\n <div className=\"hc-flex hc-justify-center hc-items-center hc-pt-20\">\n <Loading />\n </div>\n ) : (\n children\n )}\n <div ref={loader} style={{ height: \"100px\", textAlign: \"center\" }}>\n {filteredListings.length >= itemLimit && <Loading />}\n </div>\n </div>\n </div>\n );\n};\n\nexport default ItemsList;\n"],"names":["React","Sort","Header"],"mappings":"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"}
|
|
@@ -9,7 +9,8 @@ var eventTypes = {
|
|
|
9
9
|
VIEW_JOBS_AT_Location: "view_jobs_at_location_clicked",
|
|
10
10
|
FAVORITE_SELECTED: "favorite_job_selected",
|
|
11
11
|
LIST_SORTED: "jobs_list_sorted",
|
|
12
|
-
FILTERS_RESET: "filter_reset_button_clicked"
|
|
12
|
+
FILTERS_RESET: "filter_reset_button_clicked",
|
|
13
|
+
EXTERNAL_LINK_CLICKED: "external_link_clicked"
|
|
13
14
|
};
|
|
14
15
|
|
|
15
16
|
export { eventTypes };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventTypes.js","sources":["../../src/constants/eventTypes.js"],"sourcesContent":["export const eventTypes = {\n\tFILTER_APPLIED: \"filter_applied\",\n\tMAP_MARKER_CLICKED: \"map_marker_clicked\",\n\tJOB_LISTING_SELECTED: \"job_listing_selected\",\n\tAPPLY_NOW_CLICKED: \"apply_now_clicked\",\n\tVIEW_DETAILS_CLICKED: \"view_details_clicked\",\n\tCOMMUTE_ORIGIN_ADDED: \"commute_origin_added\",\n\tPOI_APPLIED: \"point_of_interest_applied\",\n\tVIEW_JOBS_AT_Location: \"view_jobs_at_location_clicked\",\n\tFAVORITE_SELECTED: \"favorite_job_selected\",\n\tLIST_SORTED: \"jobs_list_sorted\",\n\tFILTERS_RESET: \"filter_reset_button_clicked\"\n};\n"],"names":["eventTypes","FILTER_APPLIED","MAP_MARKER_CLICKED","JOB_LISTING_SELECTED","APPLY_NOW_CLICKED","VIEW_DETAILS_CLICKED","COMMUTE_ORIGIN_ADDED","POI_APPLIED","VIEW_JOBS_AT_Location","FAVORITE_SELECTED","LIST_SORTED","FILTERS_RESET"],"mappings":"AAAO,IAAMA,UAAU,GAAG;AACzBC,EAAAA,cAAc,EAAE,gBAAgB;AAChCC,EAAAA,kBAAkB,EAAE,oBAAoB;AACxCC,EAAAA,oBAAoB,EAAE,sBAAsB;AAC5CC,EAAAA,iBAAiB,EAAE,mBAAmB;AACtCC,EAAAA,oBAAoB,EAAE,sBAAsB;AAC5CC,EAAAA,oBAAoB,EAAE,sBAAsB;AAC5CC,EAAAA,WAAW,EAAE,2BAA2B;AACxCC,EAAAA,qBAAqB,EAAE,+BAA+B;AACtDC,EAAAA,iBAAiB,EAAE,uBAAuB;AAC1CC,EAAAA,WAAW,EAAE,kBAAkB;AAC/BC,EAAAA,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"eventTypes.js","sources":["../../src/constants/eventTypes.js"],"sourcesContent":["export const eventTypes = {\n\tFILTER_APPLIED: \"filter_applied\",\n\tMAP_MARKER_CLICKED: \"map_marker_clicked\",\n\tJOB_LISTING_SELECTED: \"job_listing_selected\",\n\tAPPLY_NOW_CLICKED: \"apply_now_clicked\",\n\tVIEW_DETAILS_CLICKED: \"view_details_clicked\",\n\tCOMMUTE_ORIGIN_ADDED: \"commute_origin_added\",\n\tPOI_APPLIED: \"point_of_interest_applied\",\n\tVIEW_JOBS_AT_Location: \"view_jobs_at_location_clicked\",\n\tFAVORITE_SELECTED: \"favorite_job_selected\",\n\tLIST_SORTED: \"jobs_list_sorted\",\n\tFILTERS_RESET: \"filter_reset_button_clicked\",\n\tEXTERNAL_LINK_CLICKED: \"external_link_clicked\"\n};\n"],"names":["eventTypes","FILTER_APPLIED","MAP_MARKER_CLICKED","JOB_LISTING_SELECTED","APPLY_NOW_CLICKED","VIEW_DETAILS_CLICKED","COMMUTE_ORIGIN_ADDED","POI_APPLIED","VIEW_JOBS_AT_Location","FAVORITE_SELECTED","LIST_SORTED","FILTERS_RESET","EXTERNAL_LINK_CLICKED"],"mappings":"AAAO,IAAMA,UAAU,GAAG;AACzBC,EAAAA,cAAc,EAAE,gBAAgB;AAChCC,EAAAA,kBAAkB,EAAE,oBAAoB;AACxCC,EAAAA,oBAAoB,EAAE,sBAAsB;AAC5CC,EAAAA,iBAAiB,EAAE,mBAAmB;AACtCC,EAAAA,oBAAoB,EAAE,sBAAsB;AAC5CC,EAAAA,oBAAoB,EAAE,sBAAsB;AAC5CC,EAAAA,WAAW,EAAE,2BAA2B;AACxCC,EAAAA,qBAAqB,EAAE,+BAA+B;AACtDC,EAAAA,iBAAiB,EAAE,uBAAuB;AAC1CC,EAAAA,WAAW,EAAE,kBAAkB;AAC/BC,EAAAA,aAAa,EAAE,6BAA6B;AAC5CC,EAAAA,qBAAqB,EAAE,uBAAA;AACxB;;;;"}
|
package/package.json
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { useMapList } from '~/contexts/mapListContext';
|
|
3
|
-
import AccordionFilters from '~/components/modules/accordions/filters';
|
|
4
|
-
import AccordionFilterItem from '~/components/containers/accordions/filter-item-container';
|
|
5
|
-
|
|
6
|
-
const AccordionFiltersContainer = ({
|
|
7
|
-
className,
|
|
8
|
-
defaultValue,
|
|
9
|
-
setDefaultValue,
|
|
10
|
-
setLocation,
|
|
11
|
-
setSelectedListItem,
|
|
12
|
-
SubcategoryRequireCategory
|
|
13
|
-
}) => {
|
|
14
|
-
const { filterOptions, selectedFilters, setSelectedFilters, siteConfig } = useMapList();
|
|
15
|
-
|
|
16
|
-
const handleSetSelectedFilters = prevFilters => {
|
|
17
|
-
setSelectedFilters(prevFilters);
|
|
18
|
-
setLocation(null);
|
|
19
|
-
setSelectedListItem(null);
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
setDefaultValue={setDefaultValue}
|
|
38
|
-
selectedFilters={selectedFilters}
|
|
39
|
-
setSelectedFilters={handleSetSelectedFilters}
|
|
40
|
-
subcategoryRequireCategory={siteConfig.subcategoryRequireCategory}
|
|
41
|
-
/>);
|
|
42
|
-
}
|
|
43
|
-
)}
|
|
44
|
-
</AccordionFilters>
|
|
45
|
-
);
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export default AccordionFiltersContainer;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useMapList } from '~/contexts/mapListContext';
|
|
3
|
+
import AccordionFilters from '~/components/modules/accordions/filters';
|
|
4
|
+
import AccordionFilterItem from '~/components/containers/accordions/filter-item-container';
|
|
5
|
+
|
|
6
|
+
const AccordionFiltersContainer = ({
|
|
7
|
+
className,
|
|
8
|
+
defaultValue,
|
|
9
|
+
setDefaultValue,
|
|
10
|
+
setLocation,
|
|
11
|
+
setSelectedListItem,
|
|
12
|
+
SubcategoryRequireCategory
|
|
13
|
+
}) => {
|
|
14
|
+
const { filterOptions, selectedFilters, setSelectedFilters, siteConfig } = useMapList();
|
|
15
|
+
|
|
16
|
+
const handleSetSelectedFilters = prevFilters => {
|
|
17
|
+
setSelectedFilters(prevFilters);
|
|
18
|
+
setLocation(null);
|
|
19
|
+
setSelectedListItem(null);
|
|
20
|
+
};
|
|
21
|
+
return (
|
|
22
|
+
<AccordionFilters
|
|
23
|
+
className={className}
|
|
24
|
+
defaultValue={defaultValue}
|
|
25
|
+
filterOptions={filterOptions}
|
|
26
|
+
>
|
|
27
|
+
{filterOptions?.filters?.map(filter => {
|
|
28
|
+
if(filter.id === 'category' && SubcategoryRequireCategory === true && (!selectedFilters.categoryClass || Object.keys(selectedFilters.categoryClass).length < 1)){
|
|
29
|
+
return;
|
|
30
|
+
} else if (filter.id === 'category' && SubcategoryRequireCategory === true && filter.items.length > 0) {
|
|
31
|
+
filter.items = filter.items.filter(item => item.count > 0);
|
|
32
|
+
}
|
|
33
|
+
return (<AccordionFilterItem
|
|
34
|
+
key={filter.id}
|
|
35
|
+
filter={filter}
|
|
36
|
+
externalLinksInFilters={siteConfig.externalLinksInFilters}
|
|
37
|
+
setDefaultValue={setDefaultValue}
|
|
38
|
+
selectedFilters={selectedFilters}
|
|
39
|
+
setSelectedFilters={handleSetSelectedFilters}
|
|
40
|
+
subcategoryRequireCategory={siteConfig.subcategoryRequireCategory}
|
|
41
|
+
/>);
|
|
42
|
+
}
|
|
43
|
+
)}
|
|
44
|
+
</AccordionFilters>
|
|
45
|
+
);
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export default AccordionFiltersContainer;
|
|
@@ -8,8 +8,10 @@ const FilterItemContainer = ({
|
|
|
8
8
|
setDefaultValue,
|
|
9
9
|
setSelectedFilters,
|
|
10
10
|
selectedFilters,
|
|
11
|
-
subcategoryRequireCategory = false
|
|
11
|
+
subcategoryRequireCategory = false,
|
|
12
|
+
externalLinksInFilters
|
|
12
13
|
}) => {
|
|
14
|
+
const externalLinks = externalLinksInFilters?.filter(x => x.fieldName == filter.id);
|
|
13
15
|
const fieldKey = filter.id;
|
|
14
16
|
const activeItemsCount = selectedFilters != null && selectedFilters[fieldKey]
|
|
15
17
|
? Object.keys(selectedFilters[fieldKey]).length
|
|
@@ -53,6 +55,15 @@ const FilterItemContainer = ({
|
|
|
53
55
|
setSelectedFilters={setSelectedFilters}
|
|
54
56
|
/>
|
|
55
57
|
))}
|
|
58
|
+
{externalLinks && externalLinks.map(link => (
|
|
59
|
+
<FilterItem
|
|
60
|
+
key={link.externalLink}
|
|
61
|
+
item={<a href={link.externalLinkUrl}>{link.externalLink}</a>}
|
|
62
|
+
isExternalLink={true}
|
|
63
|
+
externalLinkUrl={link.externalLinkUrl}
|
|
64
|
+
field={filter.id}
|
|
65
|
+
/>
|
|
66
|
+
))}
|
|
56
67
|
</>
|
|
57
68
|
);
|
|
58
69
|
|
|
@@ -9,6 +9,8 @@ const FilterItemContainer = ({
|
|
|
9
9
|
itemKey = null,
|
|
10
10
|
hasCount = true,
|
|
11
11
|
field,
|
|
12
|
+
isExternalLink = false,
|
|
13
|
+
externalLinkUrl,
|
|
12
14
|
selectedFilters,
|
|
13
15
|
setSelectedFilters,
|
|
14
16
|
...rest
|
|
@@ -20,12 +22,12 @@ const FilterItemContainer = ({
|
|
|
20
22
|
const [activeItem, setActiveItem] = useState(isActive);
|
|
21
23
|
|
|
22
24
|
useEffect(() => {
|
|
23
|
-
if (!selectedFilters) return;
|
|
25
|
+
if (!selectedFilters || isExternalLink) return;
|
|
24
26
|
setActiveItem(!!selectedFilters[field]?.[itemKey]);
|
|
25
27
|
}, [selectedFilters, field, itemKey]);
|
|
26
28
|
|
|
27
29
|
const changeHandler = () => {
|
|
28
|
-
if (!isActive) {
|
|
30
|
+
if (!isActive || isExternalLink) {
|
|
29
31
|
trackEvent(eventTypes.FILTER_APPLIED, { filterType: field, filterChecked: itemKey });
|
|
30
32
|
}
|
|
31
33
|
setSelectedFilters(prevFilters => {
|
|
@@ -63,6 +65,10 @@ const FilterItemContainer = ({
|
|
|
63
65
|
activeItem={activeItem}
|
|
64
66
|
setActiveItem={setActiveItem}
|
|
65
67
|
changeHandler={changeHandler}
|
|
68
|
+
isExternalLink={isExternalLink}
|
|
69
|
+
externalLinkUrl={externalLinkUrl}
|
|
70
|
+
trackEvent={trackEvent}
|
|
71
|
+
eventTypes={eventTypes}
|
|
66
72
|
{...rest}
|
|
67
73
|
/>
|
|
68
74
|
);
|
|
@@ -1,48 +1,69 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Icon from '~/components/modules/icon';
|
|
3
|
+
|
|
4
|
+
const FilterItem = ({
|
|
5
|
+
className,
|
|
6
|
+
item,
|
|
7
|
+
type,
|
|
8
|
+
itemKey,
|
|
9
|
+
hasCount,
|
|
10
|
+
field,
|
|
11
|
+
activeItem,
|
|
12
|
+
setActiveItem,
|
|
13
|
+
changeHandler,
|
|
14
|
+
isExternalLink = false,
|
|
15
|
+
externalLinkUrl,
|
|
16
|
+
trackEvent,
|
|
17
|
+
eventTypes,
|
|
18
|
+
...rest
|
|
19
|
+
}) => {
|
|
20
|
+
const itemName = item.name ? item.name : item;
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions
|
|
24
|
+
<label
|
|
25
|
+
onClick={() =>
|
|
26
|
+
{
|
|
27
|
+
if(!isExternalLink) return;
|
|
28
|
+
trackEvent(eventTypes.EXTERNAL_LINK_CLICKED, { link: externalLinkUrl });
|
|
29
|
+
window.location.href = externalLinkUrl;
|
|
30
|
+
}}
|
|
31
|
+
className={`
|
|
32
|
+
hc-flex hc-items-start hc-gap-2 hc-px-2 hc-py-1.5 hc-rounded-sm hc-text-sm hc-cursor-pointer hc-transition hover:hc-bg-uiAccent/5
|
|
33
|
+
${className ?? ""}
|
|
34
|
+
`}
|
|
35
|
+
{...rest}
|
|
36
|
+
>
|
|
37
|
+
{isExternalLink ? (
|
|
38
|
+
<Icon
|
|
39
|
+
icon="tabler:external-link"
|
|
40
|
+
size="hc-size-4"
|
|
41
|
+
className={'hc-size-4 hc-mt-px hc-text-primary hc-border-uiAccent/30'}
|
|
42
|
+
></Icon>
|
|
43
|
+
) : (
|
|
44
|
+
<input
|
|
45
|
+
id={itemKey}
|
|
46
|
+
name={field}
|
|
47
|
+
disabled={item.count === 0}
|
|
48
|
+
value={itemName}
|
|
49
|
+
type={type}
|
|
50
|
+
className="hc-size-4 hc-mt-px hc-text-primary hc-border-uiAccent/30 hc-transition-colors hc-rounded-sm"
|
|
51
|
+
checked={activeItem}
|
|
52
|
+
onChange={() => {
|
|
53
|
+
setActiveItem(!activeItem);
|
|
54
|
+
changeHandler();
|
|
55
|
+
}}
|
|
56
|
+
/>
|
|
57
|
+
)}
|
|
58
|
+
|
|
59
|
+
<span className="hc-text-left hc-font-medium">{itemName}</span>
|
|
60
|
+
{hasCount && !isExternalLink && (
|
|
61
|
+
<span className="hc-inline-block hc-mt-1 hc-ml-auto hc-text-xs hc-leading-none hc-text-primary">
|
|
62
|
+
({item.count})
|
|
63
|
+
</span>
|
|
64
|
+
)}
|
|
65
|
+
</label>
|
|
66
|
+
);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export default FilterItem;
|
|
@@ -43,7 +43,6 @@ const ItemsList: React.FC<ItemsListProps> = ({
|
|
|
43
43
|
const hasVerticalScrollbar = scrollHeight > clientHeight;
|
|
44
44
|
const newScrollbarWidth = hasVerticalScrollbar ? offsetWidth - clientWidth : 0;
|
|
45
45
|
setScrollbarWidth(newScrollbarWidth);
|
|
46
|
-
console.log('Scrollbar width:', newScrollbarWidth);
|
|
47
46
|
}
|
|
48
47
|
};
|
|
49
48
|
|
|
@@ -9,5 +9,6 @@ export const eventTypes = {
|
|
|
9
9
|
VIEW_JOBS_AT_Location: "view_jobs_at_location_clicked",
|
|
10
10
|
FAVORITE_SELECTED: "favorite_job_selected",
|
|
11
11
|
LIST_SORTED: "jobs_list_sorted",
|
|
12
|
-
FILTERS_RESET: "filter_reset_button_clicked"
|
|
12
|
+
FILTERS_RESET: "filter_reset_button_clicked",
|
|
13
|
+
EXTERNAL_LINK_CLICKED: "external_link_clicked"
|
|
13
14
|
};
|