@2uinc/frontend-enterprise-catalog-search 11.0.2 → 11.1.1

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/CHANGELOG.md CHANGED
@@ -3,6 +3,28 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [11.1.1](https://github.com/edx/frontend-enterprise/compare/@2uinc/frontend-enterprise-catalog-search@11.1.0...@2uinc/frontend-enterprise-catalog-search@11.1.1) (2026-04-27)
7
+
8
+ **Note:** Version bump only for package @2uinc/frontend-enterprise-catalog-search
9
+
10
+
11
+
12
+
13
+
14
+ ## [11.1.0](https://github.com/edx/frontend-enterprise/compare/@2uinc/frontend-enterprise-catalog-search@11.0.2...@2uinc/frontend-enterprise-catalog-search@11.1.0) (2026-04-27)
15
+
16
+
17
+ ### Features
18
+
19
+ * support isEndOfRow facets in SearchFilters ([e2acc1e](https://github.com/edx/frontend-enterprise/commit/e2acc1edf44ae96ccf8b809a94d97607e50133c7))
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * publishing new npm packages ([39f18ed](https://github.com/edx/frontend-enterprise/commit/39f18ed01ecaf095230684f5a336afcb454339a4))
25
+
26
+
27
+
6
28
  ## [11.0.2](https://github.com/openedx/frontend-enterprise/compare/@edx/frontend-enterprise-catalog-search@11.0.1...@edx/frontend-enterprise-catalog-search@11.0.2) (2025-04-25)
7
29
 
8
30
 
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
- @edx/frontend-enterprise-catalog-search
1
+ @2uinc/frontend-enterprise-catalog-search
2
2
  ================
3
3
 
4
- [![Codecov](https://img.shields.io/codecov/c/github/openedx/frontend-enterprise)](https://codecov.io/gh/openedx/frontend-enterprise)
5
- [![NPM Version](https://img.shields.io/npm/v/@edx/frontend-enterprise-catalog-search.svg)](https://www.npmjs.com/package/@edx/frontend-enterprise-catalog-search)
6
- [![npm_downloads](https://img.shields.io/npm/dt/@edx/frontend-enterprise-catalog-search.svg)](https://www.npmjs.com/package/@edx/frontend-enterprise-catalog-search)
7
- [![license](https://img.shields.io/npm/l/@edx/frontend-enterprise-catalog-search.svg)](https://www.npmjs.com/package/@edx/frontend-enterprise-catalog-search)
4
+ [![Codecov](https://img.shields.io/codecov/c/github/edx/frontend-enterprise)](https://codecov.io/gh/edx/frontend-enterprise)
5
+ [![NPM Version](https://img.shields.io/npm/v/@2uinc/frontend-enterprise-catalog-search.svg)](https://www.npmjs.com/package/@2uinc/frontend-enterprise-catalog-search)
6
+ [![npm_downloads](https://img.shields.io/npm/dt/@2uinc/frontend-enterprise-catalog-search.svg)](https://www.npmjs.com/package/@2uinc/frontend-enterprise-catalog-search)
7
+ [![license](https://img.shields.io/npm/l/@2uinc/frontend-enterprise-catalog-search.svg)](https://www.npmjs.com/package/@2uinc/frontend-enterprise-catalog-search)
8
8
  [![semantic release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)
9
9
 
10
10
  This package exports UI components, React hooks, and actions functions related to Enterprise catalog search using [Algolia](https://algolia.com) as a hosted search backend. It is intended to be used when it is necessary to only show the content available to a particular Enterprise Customer.
package/SearchContext.js CHANGED
@@ -8,7 +8,7 @@ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
8
8
  import React, { createContext, useReducer, useMemo, useEffect } from 'react';
9
9
  import PropTypes from 'prop-types';
10
10
  import { useLocation, useNavigate } from 'react-router-dom';
11
- import { useIsFirstRender } from '@edx/frontend-enterprise-utils';
11
+ import { useIsFirstRender } from '@2uinc/frontend-enterprise-utils';
12
12
  import { useIntl } from '@edx/frontend-platform/i18n';
13
13
  import { BOOLEAN_FILTERS, ADDITIONAL_FACET_FILTERS, URL_FILTERS } from './data/constants';
14
14
  import { refinementsReducer } from './data/reducer';
@@ -1 +1 @@
1
- {"version":3,"file":"SearchContext.js","names":["React","createContext","useReducer","useMemo","useEffect","PropTypes","useLocation","useNavigate","useIsFirstRender","useIntl","BOOLEAN_FILTERS","ADDITIONAL_FACET_FILTERS","URL_FILTERS","refinementsReducer","setMultipleRefinementsAction","searchParamsToObject","stringifyRefinements","getSearchFacetFilters","SearchContext","getRefinementsToSet","queryParams","activeFacetAttributes","refinementsToSet","Object","entries","forEach","_ref","_ref2","_slicedToArray","key","value","includes","valueAsArray","Array","isArray","SearchData","_ref3","children","searchFacetFilters","trackingName","enableVideos","_useReducer","_useReducer2","refinements","dispatch","intl","searchFilters","_useLocation","pathname","search","navigate","initialQueryParams","URLSearchParams","map","filter","attribute","isFirstRender","newQueryString","JSON","stringify","createElement","Provider","defaultProps","propTypes","node","isRequired","arrayOf","shape","string","title","isSortedAlphabetical","bool"],"sources":["../src/SearchContext.jsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport React, {\n createContext, useReducer, useMemo, useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { useIsFirstRender } from '@edx/frontend-enterprise-utils';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport {\n BOOLEAN_FILTERS,\n ADDITIONAL_FACET_FILTERS,\n URL_FILTERS,\n} from './data/constants';\nimport { refinementsReducer } from './data/reducer';\nimport { setMultipleRefinementsAction } from './data/actions';\nimport { searchParamsToObject, stringifyRefinements } from './data/utils';\nimport { getSearchFacetFilters } from './utils';\n\nexport const SearchContext = createContext();\n\nexport const getRefinementsToSet = (queryParams, activeFacetAttributes) => {\n const refinementsToSet = {};\n Object.entries(queryParams).forEach(([key, value]) => {\n // Any additional facet filter to SEARCH_FACET_FILTERS who's data needs to be kept in an\n // array can live in ADDITIONAL_FACET_FILTERS.\n if (activeFacetAttributes.includes(key) || ADDITIONAL_FACET_FILTERS.includes(key) || URL_FILTERS.includes(key)) {\n const valueAsArray = Array.isArray(value) ? value : [value];\n refinementsToSet[key] = valueAsArray;\n } else if (BOOLEAN_FILTERS.includes(key)) {\n // convert a string into a number (this should be a 1 or 0)\n refinementsToSet[key] = +value;\n } else {\n refinementsToSet[key] = value;\n }\n });\n\n return refinementsToSet;\n};\n\nconst SearchData = ({\n children, searchFacetFilters, trackingName, enableVideos,\n}) => {\n const [refinements, dispatch] = useReducer(\n refinementsReducer,\n {},\n );\n const intl = useIntl();\n const searchFilters = searchFacetFilters || getSearchFacetFilters(intl);\n\n const { pathname, search } = useLocation();\n const navigate = useNavigate();\n\n /**\n * Applies initial URL query params on page load to the refinements\n * reducer to update search results. Note the empty dependency list\n * here is important; we only want to set the refinements reducer with\n * the initial query parameters, *not* any time the query parameters change.\n *\n * The URL query parameters will be kept in sync with any updates to the\n * reducer state below.\n */\n useEffect(() => {\n const initialQueryParams = searchParamsToObject(new URLSearchParams(search));\n const activeFacetAttributes = searchFilters.map(filter => filter.attribute);\n const refinementsToSet = getRefinementsToSet(initialQueryParams, activeFacetAttributes);\n dispatch(setMultipleRefinementsAction(refinementsToSet));\n }, []);\n\n const isFirstRender = useIsFirstRender();\n\n /**\n * Syncs the refinements reducer state with the URL query parameters.\n */\n useEffect(() => {\n if (!isFirstRender) {\n const newQueryString = stringifyRefinements(refinements);\n navigate({ pathname, search: newQueryString });\n }\n }, [JSON.stringify(refinements)]);\n\n const value = useMemo(\n () => ({\n refinements,\n dispatch,\n searchFacetFilters: searchFilters,\n trackingName,\n enableVideos,\n }),\n [JSON.stringify(refinements), dispatch, searchFilters, trackingName, enableVideos],\n );\n\n return (\n <SearchContext.Provider value={value}>{children}</SearchContext.Provider>\n );\n};\n\nSearchData.defaultProps = {\n searchFacetFilters: null,\n trackingName: null,\n enableVideos: false,\n};\n\nSearchData.propTypes = {\n children: PropTypes.node.isRequired,\n searchFacetFilters: PropTypes.arrayOf(PropTypes.shape({\n attribute: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n isSortedAlphabetical: PropTypes.bool,\n })),\n trackingName: PropTypes.string,\n enableVideos: PropTypes.bool,\n};\n\nexport default SearchData;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SearchContext.js","names":["React","createContext","useReducer","useMemo","useEffect","PropTypes","useLocation","useNavigate","useIsFirstRender","useIntl","BOOLEAN_FILTERS","ADDITIONAL_FACET_FILTERS","URL_FILTERS","refinementsReducer","setMultipleRefinementsAction","searchParamsToObject","stringifyRefinements","getSearchFacetFilters","SearchContext","getRefinementsToSet","queryParams","activeFacetAttributes","refinementsToSet","Object","entries","forEach","_ref","_ref2","_slicedToArray","key","value","includes","valueAsArray","Array","isArray","SearchData","_ref3","children","searchFacetFilters","trackingName","enableVideos","_useReducer","_useReducer2","refinements","dispatch","intl","searchFilters","_useLocation","pathname","search","navigate","initialQueryParams","URLSearchParams","map","filter","attribute","isFirstRender","newQueryString","JSON","stringify","createElement","Provider","defaultProps","propTypes","node","isRequired","arrayOf","shape","string","title","isSortedAlphabetical","bool"],"sources":["../src/SearchContext.jsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport React, {\n createContext, useReducer, useMemo, useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { useIsFirstRender } from '@2uinc/frontend-enterprise-utils';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport {\n BOOLEAN_FILTERS,\n ADDITIONAL_FACET_FILTERS,\n URL_FILTERS,\n} from './data/constants';\nimport { refinementsReducer } from './data/reducer';\nimport { setMultipleRefinementsAction } from './data/actions';\nimport { searchParamsToObject, stringifyRefinements } from './data/utils';\nimport { getSearchFacetFilters } from './utils';\n\nexport const SearchContext = createContext();\n\nexport const getRefinementsToSet = (queryParams, activeFacetAttributes) => {\n const refinementsToSet = {};\n Object.entries(queryParams).forEach(([key, value]) => {\n // Any additional facet filter to SEARCH_FACET_FILTERS who's data needs to be kept in an\n // array can live in ADDITIONAL_FACET_FILTERS.\n if (activeFacetAttributes.includes(key) || ADDITIONAL_FACET_FILTERS.includes(key) || URL_FILTERS.includes(key)) {\n const valueAsArray = Array.isArray(value) ? value : [value];\n refinementsToSet[key] = valueAsArray;\n } else if (BOOLEAN_FILTERS.includes(key)) {\n // convert a string into a number (this should be a 1 or 0)\n refinementsToSet[key] = +value;\n } else {\n refinementsToSet[key] = value;\n }\n });\n\n return refinementsToSet;\n};\n\nconst SearchData = ({\n children, searchFacetFilters, trackingName, enableVideos,\n}) => {\n const [refinements, dispatch] = useReducer(\n refinementsReducer,\n {},\n );\n const intl = useIntl();\n const searchFilters = searchFacetFilters || getSearchFacetFilters(intl);\n\n const { pathname, search } = useLocation();\n const navigate = useNavigate();\n\n /**\n * Applies initial URL query params on page load to the refinements\n * reducer to update search results. Note the empty dependency list\n * here is important; we only want to set the refinements reducer with\n * the initial query parameters, *not* any time the query parameters change.\n *\n * The URL query parameters will be kept in sync with any updates to the\n * reducer state below.\n */\n useEffect(() => {\n const initialQueryParams = searchParamsToObject(new URLSearchParams(search));\n const activeFacetAttributes = searchFilters.map(filter => filter.attribute);\n const refinementsToSet = getRefinementsToSet(initialQueryParams, activeFacetAttributes);\n dispatch(setMultipleRefinementsAction(refinementsToSet));\n }, []);\n\n const isFirstRender = useIsFirstRender();\n\n /**\n * Syncs the refinements reducer state with the URL query parameters.\n */\n useEffect(() => {\n if (!isFirstRender) {\n const newQueryString = stringifyRefinements(refinements);\n navigate({ pathname, search: newQueryString });\n }\n }, [JSON.stringify(refinements)]);\n\n const value = useMemo(\n () => ({\n refinements,\n dispatch,\n searchFacetFilters: searchFilters,\n trackingName,\n enableVideos,\n }),\n [JSON.stringify(refinements), dispatch, searchFilters, trackingName, enableVideos],\n );\n\n return (\n <SearchContext.Provider value={value}>{children}</SearchContext.Provider>\n );\n};\n\nSearchData.defaultProps = {\n searchFacetFilters: null,\n trackingName: null,\n enableVideos: false,\n};\n\nSearchData.propTypes = {\n children: PropTypes.node.isRequired,\n searchFacetFilters: PropTypes.arrayOf(PropTypes.shape({\n attribute: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n isSortedAlphabetical: PropTypes.bool,\n })),\n trackingName: PropTypes.string,\n enableVideos: PropTypes.bool,\n};\n\nexport default SearchData;\n"],"mappings":"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","ignoreList":[]}
package/SearchFilters.js CHANGED
@@ -13,12 +13,13 @@ import LearningTypeRadioFacet from './LearningTypeRadioFacet';
13
13
  export var FREE_ALL_TITLE = 'Free / All';
14
14
  var SearchFilters = function SearchFilters(_ref) {
15
15
  var variant = _ref.variant,
16
- enablePathways = _ref.enablePathways;
16
+ enablePathways = _ref.enablePathways,
17
+ filterComponents = _ref.filterComponents;
17
18
  var _useContext = useContext(SearchContext),
18
19
  refinements = _useContext.refinements,
19
20
  searchFacetFilters = _useContext.searchFacetFilters;
20
- var searchFacets = useMemo(function () {
21
- var filtersFromRefinements = searchFacetFilters.map(function (_ref2) {
21
+ var defaultSearchFacets = useMemo(function () {
22
+ return /*#__PURE__*/React.createElement(React.Fragment, null, searchFacetFilters.map(function (_ref2) {
22
23
  var title = _ref2.title,
23
24
  attribute = _ref2.attribute,
24
25
  isSortedAlphabetical = _ref2.isSortedAlphabetical,
@@ -44,11 +45,11 @@ var SearchFilters = function SearchFilters(_ref) {
44
45
  variant: variant,
45
46
  noDisplay: noDisplay
46
47
  });
47
- });
48
- return /*#__PURE__*/React.createElement(React.Fragment, null, filtersFromRefinements, features.LEARNING_TYPE_FACET && /*#__PURE__*/React.createElement(LearningTypeRadioFacet, {
48
+ }), features.LEARNING_TYPE_FACET && /*#__PURE__*/React.createElement(LearningTypeRadioFacet, {
49
49
  enablePathways: enablePathways
50
50
  }));
51
51
  }, [JSON.stringify(refinements)]);
52
+ var searchFacets = filterComponents !== null && filterComponents !== void 0 ? filterComponents : defaultSearchFacets;
52
53
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(MediaQuery, {
53
54
  maxWidth: breakpoints.large.maxWidth
54
55
  }, /*#__PURE__*/React.createElement(MobileFilterMenu, {
@@ -63,11 +64,16 @@ var SearchFilters = function SearchFilters(_ref) {
63
64
  };
64
65
  SearchFilters.defaultProps = {
65
66
  variant: STYLE_VARIANTS.inverse,
66
- enablePathways: null
67
+ enablePathways: null,
68
+ filterComponents: null
67
69
  };
68
70
  SearchFilters.propTypes = {
69
71
  variant: PropTypes.oneOf([STYLE_VARIANTS["default"], STYLE_VARIANTS.inverse]),
70
- enablePathways: PropTypes.bool
72
+ enablePathways: PropTypes.bool,
73
+ // Optional: custom filter content to render in place of the default facet list.
74
+ // Accepts either an array of React elements (consumer-ordered list) or a single node.
75
+ // When provided, the shared layout wrappers (mobile/desktop switch, CurrentRefinements) stay intact.
76
+ filterComponents: PropTypes.node
71
77
  };
72
78
  export default SearchFilters;
73
79
  //# sourceMappingURL=SearchFilters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchFilters.js","names":["React","useMemo","useContext","PropTypes","breakpoints","MediaQuery","FacetListRefinement","CurrentRefinements","MobileFilterMenu","STYLE_VARIANTS","sortItemsByLabelAsc","SearchContext","features","LearningTypeRadioFacet","FREE_ALL_TITLE","SearchFilters","_ref","variant","enablePathways","_useContext","refinements","searchFacetFilters","searchFacets","filtersFromRefinements","map","_ref2","title","attribute","isSortedAlphabetical","typeaheadOptions","noDisplay","createElement","key","limit","transformItems","items","defaultRefinement","facetValueType","searchable","Fragment","LEARNING_TYPE_FACET","JSON","stringify","maxWidth","large","className","minWidth","extraLarge","defaultProps","inverse","propTypes","oneOf","bool"],"sources":["../src/SearchFilters.jsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useMemo, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { breakpoints, MediaQuery } from '@openedx/paragon';\n\nimport FacetListRefinement from './FacetListRefinement';\nimport CurrentRefinements from './CurrentRefinements';\n\nimport MobileFilterMenu from './MobileFilterMenu';\n\nimport { STYLE_VARIANTS } from './data/constants';\nimport { sortItemsByLabelAsc } from './data/utils';\n\nimport { SearchContext } from './SearchContext';\nimport { features } from './config';\nimport LearningTypeRadioFacet from './LearningTypeRadioFacet';\n\nexport const FREE_ALL_TITLE = 'Free / All';\n\nconst SearchFilters = ({ variant, enablePathways }) => {\n const { refinements, searchFacetFilters } = useContext(SearchContext);\n\n const searchFacets = useMemo(\n () => {\n const filtersFromRefinements = searchFacetFilters.map(({\n title, attribute, isSortedAlphabetical, typeaheadOptions, noDisplay,\n }) => (\n <FacetListRefinement\n key={attribute}\n title={title}\n attribute={attribute}\n limit={300} // this is replicating the B2C search experience\n transformItems={(items) => {\n if (isSortedAlphabetical) {\n return sortItemsByLabelAsc(items);\n }\n return items;\n }}\n refinements={refinements}\n defaultRefinement={refinements[attribute]}\n facetValueType=\"array\"\n typeaheadOptions={typeaheadOptions}\n searchable={!!typeaheadOptions}\n variant={variant}\n noDisplay={noDisplay}\n />\n ));\n return (\n <>\n {filtersFromRefinements}\n {features.LEARNING_TYPE_FACET && (<LearningTypeRadioFacet enablePathways={enablePathways} />)}\n </>\n );\n },\n [JSON.stringify(refinements)],\n );\n\n return (\n <>\n <MediaQuery maxWidth={breakpoints.large.maxWidth}>\n <MobileFilterMenu className=\"mb-3\">\n {searchFacets}\n </MobileFilterMenu>\n </MediaQuery>\n <MediaQuery minWidth={breakpoints.extraLarge.minWidth}>\n <>\n <div className=\"d-flex\">\n {searchFacets}\n </div>\n <CurrentRefinements variant={variant} />\n </>\n </MediaQuery>\n </>\n );\n};\n\nSearchFilters.defaultProps = {\n variant: STYLE_VARIANTS.inverse,\n enablePathways: null,\n};\n\nSearchFilters.propTypes = {\n variant: PropTypes.oneOf([STYLE_VARIANTS.default, STYLE_VARIANTS.inverse]),\n enablePathways: PropTypes.bool,\n};\n\nexport default SearchFilters;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SearchFilters.js","names":["React","useMemo","useContext","PropTypes","breakpoints","MediaQuery","FacetListRefinement","CurrentRefinements","MobileFilterMenu","STYLE_VARIANTS","sortItemsByLabelAsc","SearchContext","features","LearningTypeRadioFacet","FREE_ALL_TITLE","SearchFilters","_ref","variant","enablePathways","filterComponents","_useContext","refinements","searchFacetFilters","defaultSearchFacets","createElement","Fragment","map","_ref2","title","attribute","isSortedAlphabetical","typeaheadOptions","noDisplay","key","limit","transformItems","items","defaultRefinement","facetValueType","searchable","LEARNING_TYPE_FACET","JSON","stringify","searchFacets","maxWidth","large","className","minWidth","extraLarge","defaultProps","inverse","propTypes","oneOf","bool","node"],"sources":["../src/SearchFilters.jsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useMemo, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { breakpoints, MediaQuery } from '@openedx/paragon';\n\nimport FacetListRefinement from './FacetListRefinement';\nimport CurrentRefinements from './CurrentRefinements';\n\nimport MobileFilterMenu from './MobileFilterMenu';\n\nimport { STYLE_VARIANTS } from './data/constants';\nimport { sortItemsByLabelAsc } from './data/utils';\n\nimport { SearchContext } from './SearchContext';\nimport { features } from './config';\nimport LearningTypeRadioFacet from './LearningTypeRadioFacet';\n\nexport const FREE_ALL_TITLE = 'Free / All';\n\nconst SearchFilters = ({ variant, enablePathways, filterComponents }) => {\n const { refinements, searchFacetFilters } = useContext(SearchContext);\n\n const defaultSearchFacets = useMemo(\n () => (\n <>\n {searchFacetFilters.map(({\n title, attribute, isSortedAlphabetical, typeaheadOptions, noDisplay,\n }) => (\n <FacetListRefinement\n key={attribute}\n title={title}\n attribute={attribute}\n limit={300} // this is replicating the B2C search experience\n transformItems={(items) => {\n if (isSortedAlphabetical) {\n return sortItemsByLabelAsc(items);\n }\n return items;\n }}\n refinements={refinements}\n defaultRefinement={refinements[attribute]}\n facetValueType=\"array\"\n typeaheadOptions={typeaheadOptions}\n searchable={!!typeaheadOptions}\n variant={variant}\n noDisplay={noDisplay}\n />\n ))}\n {features.LEARNING_TYPE_FACET && (<LearningTypeRadioFacet enablePathways={enablePathways} />)}\n </>\n ),\n [JSON.stringify(refinements)],\n );\n\n const searchFacets = filterComponents ?? defaultSearchFacets;\n\n return (\n <>\n <MediaQuery maxWidth={breakpoints.large.maxWidth}>\n <MobileFilterMenu className=\"mb-3\">\n {searchFacets}\n </MobileFilterMenu>\n </MediaQuery>\n <MediaQuery minWidth={breakpoints.extraLarge.minWidth}>\n <>\n <div className=\"d-flex\">\n {searchFacets}\n </div>\n <CurrentRefinements variant={variant} />\n </>\n </MediaQuery>\n </>\n );\n};\n\nSearchFilters.defaultProps = {\n variant: STYLE_VARIANTS.inverse,\n enablePathways: null,\n filterComponents: null,\n};\n\nSearchFilters.propTypes = {\n variant: PropTypes.oneOf([STYLE_VARIANTS.default, STYLE_VARIANTS.inverse]),\n enablePathways: PropTypes.bool,\n // Optional: custom filter content to render in place of the default facet list.\n // Accepts either an array of React elements (consumer-ordered list) or a single node.\n // When provided, the shared layout wrappers (mobile/desktop switch, CurrentRefinements) stay intact.\n filterComponents: PropTypes.node,\n};\n\nexport default SearchFilters;\n"],"mappings":"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","ignoreList":[]}
package/SearchHeader.js CHANGED
@@ -27,7 +27,8 @@ var SearchHeader = function SearchHeader(_ref) {
27
27
  slug = _ref$enterpriseConfig.slug,
28
28
  enablePathways = _ref$enterpriseConfig.enablePathways,
29
29
  disableSuggestionRedirect = _ref.disableSuggestionRedirect,
30
- hideSearchBox = _ref.hideSearchBox;
30
+ hideSearchBox = _ref.hideSearchBox,
31
+ filterComponents = _ref.filterComponents;
31
32
  var _useContext = useContext(SearchContext),
32
33
  refinements = _useContext.refinements;
33
34
  var searchQueryFromRefinements;
@@ -78,7 +79,8 @@ var SearchHeader = function SearchHeader(_ref) {
78
79
  }, /*#__PURE__*/React.createElement(SearchFilters, {
79
80
  className: "mb-3",
80
81
  variant: variant,
81
- enablePathways: enablePathways
82
+ enablePathways: enablePathways,
83
+ filterComponents: filterComponents
82
84
  })))));
83
85
  };
84
86
  SearchHeader.defaultProps = {
@@ -94,7 +96,8 @@ SearchHeader.defaultProps = {
94
96
  suggestionSubmitOverride: undefined,
95
97
  disableSuggestionRedirect: false,
96
98
  index: undefined,
97
- hideSearchBox: false
99
+ hideSearchBox: false,
100
+ filterComponents: null
98
101
  };
99
102
  SearchHeader.propTypes = {
100
103
  headerTitle: PropTypes.string,
@@ -111,7 +114,9 @@ SearchHeader.propTypes = {
111
114
  }),
112
115
  suggestionSubmitOverride: PropTypes.func,
113
116
  disableSuggestionRedirect: PropTypes.bool,
114
- hideSearchBox: PropTypes.bool
117
+ hideSearchBox: PropTypes.bool,
118
+ // Optional: custom filter content to render in place of the default SearchFilters facet list.
119
+ filterComponents: PropTypes.node
115
120
  };
116
121
  export default SearchHeader;
117
122
  //# sourceMappingURL=SearchHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchHeader.js","names":["React","useContext","PropTypes","Container","Row","Col","classNames","SearchBox","SearchFilters","STYLE_VARIANTS","SearchContext","searchHeaderTestId","searchBoxColTestId","filtersColTestId","SearchHeader","_ref","variant","containerSize","headerTitle","hideTitle","index","filters","suggestionSubmitOverride","_ref$enterpriseConfig","enterpriseConfig","slug","enablePathways","disableSuggestionRedirect","hideSearchBox","_useContext","refinements","searchQueryFromRefinements","Array","isArray","q","_refinements$q","_slicedToArray","modifiedFilters","concat","createElement","className","inverse","size","xs","md","defaultRefinement","enterpriseSlug","defaultProps","undefined","propTypes","string","oneOf","bool","shape","search","func","isRequired"],"sources":["../src/SearchHeader.jsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { Container, Row, Col } from '@openedx/paragon';\nimport classNames from 'classnames';\n\nimport SearchBox from './SearchBox';\nimport SearchFilters from './SearchFilters';\nimport { STYLE_VARIANTS } from './data/constants';\n\nimport { SearchContext } from './SearchContext';\n\nexport const searchHeaderTestId = 'search-header';\nexport const searchBoxColTestId = 'search-box-col';\nexport const filtersColTestId = 'filters-col';\n\nconst SearchHeader = ({\n variant,\n containerSize,\n headerTitle,\n hideTitle,\n index,\n filters,\n suggestionSubmitOverride,\n enterpriseConfig: { slug, enablePathways },\n disableSuggestionRedirect,\n hideSearchBox,\n}) => {\n const { refinements } = useContext(SearchContext);\n let searchQueryFromRefinements;\n // Sometimes the query is set to an array of one string instead of just the string\n if (Array.isArray(refinements.q)) {\n [searchQueryFromRefinements] = refinements.q;\n } else {\n searchQueryFromRefinements = refinements.q;\n }\n\n // Add filter to only include course and program content_types\n // as we are currently not supporting videos and pathways\n const modifiedFilters = filters\n ? `${filters} AND (content_type:\"course\" OR content_type:\"program\")`\n : '(content_type:\"course\" OR content_type:\"program\")';\n\n return (\n <div\n data-testid={searchHeaderTestId}\n className={classNames({ 'bg-brand-primary': variant === STYLE_VARIANTS.inverse })}\n >\n <Container size={containerSize}>\n <Row className=\"pt-4 pb-3\">\n <Col\n data-testid={searchBoxColTestId}\n className={classNames('fe__searchbox-col', { 'fe__searchbox-col--default': variant === STYLE_VARIANTS.default })}\n xs={12}\n md={8}\n >\n {!hideSearchBox && (\n <SearchBox\n className=\"mb-4\"\n defaultRefinement={searchQueryFromRefinements}\n variant={variant}\n headerTitle={headerTitle}\n hideTitle={hideTitle}\n index={index}\n filters={modifiedFilters}\n enterpriseSlug={slug}\n suggestionSubmitOverride={suggestionSubmitOverride}\n disableSuggestionRedirect={disableSuggestionRedirect}\n />\n )}\n </Col>\n <Col\n data-testid={filtersColTestId}\n className={classNames('fe__searchbox-col', { 'fe__searchbox-col--default': variant === STYLE_VARIANTS.default })}\n xs={12}\n >\n <SearchFilters className=\"mb-3\" variant={variant} enablePathways={enablePathways} />\n </Col>\n </Row>\n </Container>\n </div>\n );\n};\n\nSearchHeader.defaultProps = {\n variant: STYLE_VARIANTS.inverse,\n containerSize: null,\n headerTitle: undefined,\n hideTitle: false,\n filters: '',\n enterpriseConfig: { slug: undefined, enablePathways: undefined },\n suggestionSubmitOverride: undefined,\n disableSuggestionRedirect: false,\n index: undefined,\n hideSearchBox: false,\n};\n\nSearchHeader.propTypes = {\n headerTitle: PropTypes.string,\n containerSize: PropTypes.string,\n variant: PropTypes.oneOf([STYLE_VARIANTS.default, STYLE_VARIANTS.inverse]),\n hideTitle: PropTypes.bool,\n index: PropTypes.shape({ search: PropTypes.func.isRequired }),\n filters: PropTypes.string,\n enterpriseConfig: PropTypes.shape(\n {\n slug: PropTypes.string,\n enablePathways: PropTypes.bool,\n },\n ),\n suggestionSubmitOverride: PropTypes.func,\n disableSuggestionRedirect: PropTypes.bool,\n hideSearchBox: PropTypes.bool,\n};\n\nexport default SearchHeader;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SearchHeader.js","names":["React","useContext","PropTypes","Container","Row","Col","classNames","SearchBox","SearchFilters","STYLE_VARIANTS","SearchContext","searchHeaderTestId","searchBoxColTestId","filtersColTestId","SearchHeader","_ref","variant","containerSize","headerTitle","hideTitle","index","filters","suggestionSubmitOverride","_ref$enterpriseConfig","enterpriseConfig","slug","enablePathways","disableSuggestionRedirect","hideSearchBox","filterComponents","_useContext","refinements","searchQueryFromRefinements","Array","isArray","q","_refinements$q","_slicedToArray","modifiedFilters","concat","createElement","className","inverse","size","xs","md","defaultRefinement","enterpriseSlug","defaultProps","undefined","propTypes","string","oneOf","bool","shape","search","func","isRequired","node"],"sources":["../src/SearchHeader.jsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { Container, Row, Col } from '@openedx/paragon';\nimport classNames from 'classnames';\n\nimport SearchBox from './SearchBox';\nimport SearchFilters from './SearchFilters';\nimport { STYLE_VARIANTS } from './data/constants';\n\nimport { SearchContext } from './SearchContext';\n\nexport const searchHeaderTestId = 'search-header';\nexport const searchBoxColTestId = 'search-box-col';\nexport const filtersColTestId = 'filters-col';\n\nconst SearchHeader = ({\n variant,\n containerSize,\n headerTitle,\n hideTitle,\n index,\n filters,\n suggestionSubmitOverride,\n enterpriseConfig: { slug, enablePathways },\n disableSuggestionRedirect,\n hideSearchBox,\n filterComponents,\n}) => {\n const { refinements } = useContext(SearchContext);\n let searchQueryFromRefinements;\n // Sometimes the query is set to an array of one string instead of just the string\n if (Array.isArray(refinements.q)) {\n [searchQueryFromRefinements] = refinements.q;\n } else {\n searchQueryFromRefinements = refinements.q;\n }\n\n // Add filter to only include course and program content_types\n // as we are currently not supporting videos and pathways\n const modifiedFilters = filters\n ? `${filters} AND (content_type:\"course\" OR content_type:\"program\")`\n : '(content_type:\"course\" OR content_type:\"program\")';\n\n return (\n <div\n data-testid={searchHeaderTestId}\n className={classNames({ 'bg-brand-primary': variant === STYLE_VARIANTS.inverse })}\n >\n <Container size={containerSize}>\n <Row className=\"pt-4 pb-3\">\n <Col\n data-testid={searchBoxColTestId}\n className={classNames('fe__searchbox-col', { 'fe__searchbox-col--default': variant === STYLE_VARIANTS.default })}\n xs={12}\n md={8}\n >\n {!hideSearchBox && (\n <SearchBox\n className=\"mb-4\"\n defaultRefinement={searchQueryFromRefinements}\n variant={variant}\n headerTitle={headerTitle}\n hideTitle={hideTitle}\n index={index}\n filters={modifiedFilters}\n enterpriseSlug={slug}\n suggestionSubmitOverride={suggestionSubmitOverride}\n disableSuggestionRedirect={disableSuggestionRedirect}\n />\n )}\n </Col>\n <Col\n data-testid={filtersColTestId}\n className={classNames('fe__searchbox-col', { 'fe__searchbox-col--default': variant === STYLE_VARIANTS.default })}\n xs={12}\n >\n <SearchFilters\n className=\"mb-3\"\n variant={variant}\n enablePathways={enablePathways}\n filterComponents={filterComponents}\n />\n </Col>\n </Row>\n </Container>\n </div>\n );\n};\n\nSearchHeader.defaultProps = {\n variant: STYLE_VARIANTS.inverse,\n containerSize: null,\n headerTitle: undefined,\n hideTitle: false,\n filters: '',\n enterpriseConfig: { slug: undefined, enablePathways: undefined },\n suggestionSubmitOverride: undefined,\n disableSuggestionRedirect: false,\n index: undefined,\n hideSearchBox: false,\n filterComponents: null,\n};\n\nSearchHeader.propTypes = {\n headerTitle: PropTypes.string,\n containerSize: PropTypes.string,\n variant: PropTypes.oneOf([STYLE_VARIANTS.default, STYLE_VARIANTS.inverse]),\n hideTitle: PropTypes.bool,\n index: PropTypes.shape({ search: PropTypes.func.isRequired }),\n filters: PropTypes.string,\n enterpriseConfig: PropTypes.shape(\n {\n slug: PropTypes.string,\n enablePathways: PropTypes.bool,\n },\n ),\n suggestionSubmitOverride: PropTypes.func,\n disableSuggestionRedirect: PropTypes.bool,\n hideSearchBox: PropTypes.bool,\n // Optional: custom filter content to render in place of the default SearchFilters facet list.\n filterComponents: PropTypes.node,\n};\n\nexport default SearchHeader;\n"],"mappings":"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","ignoreList":[]}
package/config/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { hasFeatureFlagEnabled } from '@edx/frontend-enterprise-utils';
1
+ import { hasFeatureFlagEnabled } from '@2uinc/frontend-enterprise-utils';
2
2
  export var FEATURE_ENROLL_WITH_CODES = 'ENROLL_WITH_CODES';
3
3
  export var FEATURE_LANGUAGE_FACET = 'LANGUAGE_FACET';
4
4
  export var FEATURE_PROGRAM_TITLES_FACET = 'PROGRAM_TITLES_FACET';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["hasFeatureFlagEnabled","FEATURE_ENROLL_WITH_CODES","FEATURE_LANGUAGE_FACET","FEATURE_PROGRAM_TITLES_FACET","LEARNING_TYPE_FACET","FEATURE_ENABLE_PATHWAYS","FEATURE_SUBTITLE_FACET","features","ENROLL_WITH_CODES","process","env","LANGUAGE_FACET","PROGRAM_TITLES_FACET","ENABlE_PATHWAYS","SUBTITLE_FACET"],"sources":["../../src/config/index.js"],"sourcesContent":["import { hasFeatureFlagEnabled } from '@edx/frontend-enterprise-utils';\n\nexport const FEATURE_ENROLL_WITH_CODES = 'ENROLL_WITH_CODES';\nexport const FEATURE_LANGUAGE_FACET = 'LANGUAGE_FACET';\nexport const FEATURE_PROGRAM_TITLES_FACET = 'PROGRAM_TITLES_FACET';\nexport const LEARNING_TYPE_FACET = 'LEARNING_TYPE_FACET';\nexport const FEATURE_ENABLE_PATHWAYS = 'ENABLE_PATHWAYS';\nexport const FEATURE_SUBTITLE_FACET = 'SUBTITLE_FACET';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const features = {\n ENROLL_WITH_CODES: process.env.FEATURE_ENROLL_WITH_CODES || hasFeatureFlagEnabled(FEATURE_ENROLL_WITH_CODES),\n LANGUAGE_FACET: process.env.FEATURE_LANGUAGE_FACET || hasFeatureFlagEnabled(FEATURE_LANGUAGE_FACET),\n PROGRAM_TITLES_FACET: (\n process.env.FEATURE_PROGRAM_TITLES_FACET || hasFeatureFlagEnabled(FEATURE_PROGRAM_TITLES_FACET)\n ),\n LEARNING_TYPE_FACET: (\n process.env.LEARNING_TYPE_FACET || hasFeatureFlagEnabled(LEARNING_TYPE_FACET)\n ),\n ENABlE_PATHWAYS: (\n process.env.FEATURE_ENABLE_PATHWAYS || hasFeatureFlagEnabled(FEATURE_ENABLE_PATHWAYS)\n ),\n SUBTITLE_FACET: (\n process.env.FEATURE_SUBTITLE_FACET || hasFeatureFlagEnabled(FEATURE_SUBTITLE_FACET)\n ),\n};\n"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,gCAAgC;AAEtE,OAAO,IAAMC,yBAAyB,GAAG,mBAAmB;AAC5D,OAAO,IAAMC,sBAAsB,GAAG,gBAAgB;AACtD,OAAO,IAAMC,4BAA4B,GAAG,sBAAsB;AAClE,OAAO,IAAMC,mBAAmB,GAAG,qBAAqB;AACxD,OAAO,IAAMC,uBAAuB,GAAG,iBAAiB;AACxD,OAAO,IAAMC,sBAAsB,GAAG,gBAAgB;;AAEtD;AACA,OAAO,IAAMC,QAAQ,GAAG;EACtBC,iBAAiB,EAAEC,OAAO,CAACC,GAAG,CAACT,yBAAyB,IAAID,qBAAqB,CAACC,yBAAyB,CAAC;EAC5GU,cAAc,EAAEF,OAAO,CAACC,GAAG,CAACR,sBAAsB,IAAIF,qBAAqB,CAACE,sBAAsB,CAAC;EACnGU,oBAAoB,EAClBH,OAAO,CAACC,GAAG,CAACP,4BAA4B,IAAIH,qBAAqB,CAACG,4BAA4B,CAC/F;EACDC,mBAAmB,EACjBK,OAAO,CAACC,GAAG,CAACN,mBAAmB,IAAIJ,qBAAqB,CAACI,mBAAmB,CAC7E;EACDS,eAAe,EACbJ,OAAO,CAACC,GAAG,CAACL,uBAAuB,IAAIL,qBAAqB,CAACK,uBAAuB,CACrF;EACDS,cAAc,EACZL,OAAO,CAACC,GAAG,CAACJ,sBAAsB,IAAIN,qBAAqB,CAACM,sBAAsB;AAEtF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["hasFeatureFlagEnabled","FEATURE_ENROLL_WITH_CODES","FEATURE_LANGUAGE_FACET","FEATURE_PROGRAM_TITLES_FACET","LEARNING_TYPE_FACET","FEATURE_ENABLE_PATHWAYS","FEATURE_SUBTITLE_FACET","features","ENROLL_WITH_CODES","process","env","LANGUAGE_FACET","PROGRAM_TITLES_FACET","ENABlE_PATHWAYS","SUBTITLE_FACET"],"sources":["../../src/config/index.js"],"sourcesContent":["import { hasFeatureFlagEnabled } from '@2uinc/frontend-enterprise-utils';\n\nexport const FEATURE_ENROLL_WITH_CODES = 'ENROLL_WITH_CODES';\nexport const FEATURE_LANGUAGE_FACET = 'LANGUAGE_FACET';\nexport const FEATURE_PROGRAM_TITLES_FACET = 'PROGRAM_TITLES_FACET';\nexport const LEARNING_TYPE_FACET = 'LEARNING_TYPE_FACET';\nexport const FEATURE_ENABLE_PATHWAYS = 'ENABLE_PATHWAYS';\nexport const FEATURE_SUBTITLE_FACET = 'SUBTITLE_FACET';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const features = {\n ENROLL_WITH_CODES: process.env.FEATURE_ENROLL_WITH_CODES || hasFeatureFlagEnabled(FEATURE_ENROLL_WITH_CODES),\n LANGUAGE_FACET: process.env.FEATURE_LANGUAGE_FACET || hasFeatureFlagEnabled(FEATURE_LANGUAGE_FACET),\n PROGRAM_TITLES_FACET: (\n process.env.FEATURE_PROGRAM_TITLES_FACET || hasFeatureFlagEnabled(FEATURE_PROGRAM_TITLES_FACET)\n ),\n LEARNING_TYPE_FACET: (\n process.env.LEARNING_TYPE_FACET || hasFeatureFlagEnabled(LEARNING_TYPE_FACET)\n ),\n ENABlE_PATHWAYS: (\n process.env.FEATURE_ENABLE_PATHWAYS || hasFeatureFlagEnabled(FEATURE_ENABLE_PATHWAYS)\n ),\n SUBTITLE_FACET: (\n process.env.FEATURE_SUBTITLE_FACET || hasFeatureFlagEnabled(FEATURE_SUBTITLE_FACET)\n ),\n};\n"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,kCAAkC;AAExE,OAAO,IAAMC,yBAAyB,GAAG,mBAAmB;AAC5D,OAAO,IAAMC,sBAAsB,GAAG,gBAAgB;AACtD,OAAO,IAAMC,4BAA4B,GAAG,sBAAsB;AAClE,OAAO,IAAMC,mBAAmB,GAAG,qBAAqB;AACxD,OAAO,IAAMC,uBAAuB,GAAG,iBAAiB;AACxD,OAAO,IAAMC,sBAAsB,GAAG,gBAAgB;;AAEtD;AACA,OAAO,IAAMC,QAAQ,GAAG;EACtBC,iBAAiB,EAAEC,OAAO,CAACC,GAAG,CAACT,yBAAyB,IAAID,qBAAqB,CAACC,yBAAyB,CAAC;EAC5GU,cAAc,EAAEF,OAAO,CAACC,GAAG,CAACR,sBAAsB,IAAIF,qBAAqB,CAACE,sBAAsB,CAAC;EACnGU,oBAAoB,EAClBH,OAAO,CAACC,GAAG,CAACP,4BAA4B,IAAIH,qBAAqB,CAACG,4BAA4B,CAC/F;EACDC,mBAAmB,EACjBK,OAAO,CAACC,GAAG,CAACN,mBAAmB,IAAIJ,qBAAqB,CAACI,mBAAmB,CAC7E;EACDS,eAAe,EACbJ,OAAO,CAACC,GAAG,CAACL,uBAAuB,IAAIL,qBAAqB,CAACK,uBAAuB,CACrF;EACDS,cAAc,EACZL,OAAO,CAACC,GAAG,CAACJ,sBAAsB,IAAIN,qBAAqB,CAACM,sBAAsB;AAEtF,CAAC","ignoreList":[]}
package/data/hooks.js CHANGED
@@ -16,7 +16,7 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
16
16
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
17
17
  /* eslint-disable react-hooks/exhaustive-deps */
18
18
  import { useMemo, useState, useEffect } from 'react';
19
- import { isNull } from '@edx/frontend-enterprise-utils';
19
+ import { isNull } from '@2uinc/frontend-enterprise-utils';
20
20
 
21
21
  /**
22
22
  * Transforms items into an object with a key for each facet attribute
package/data/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","names":["useMemo","useState","useEffect","isNull","useActiveRefinementsByAttribute","items","refinementsByAttribute","refinementsMap","forEach","facet","attribute","useActiveRefinementsAsFlatArray","refinementsAsFlatArray","refinements","Object","entries","_ref","_ref2","_slicedToArray","key","value","updatedValue","map","item","_objectSpread","push","apply","_toConsumableArray","JSON","stringify","useNbHitsFromSearchResults","searchResults","nbHits","getCatalogString","catalogs","catalogFilterReducer","result","catalog","index","isLastCatalog","length","query","concat","reduce","useActiveElement","_useState","document","activeElement","_useState2","active","setActive","handleFocusIn","addEventListener","removeEventListener"],"sources":["../../src/data/hooks.js"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport { useMemo, useState, useEffect } from 'react';\nimport { isNull } from '@edx/frontend-enterprise-utils';\n\n/**\n * Transforms items into an object with a key for each facet attribute\n * with a list of that facet attribute's active selection(s).\n */\nexport const useActiveRefinementsByAttribute = (items) => {\n const refinementsByAttribute = useMemo(\n () => {\n const refinementsMap = {};\n items.forEach((facet) => {\n const { attribute } = facet;\n refinementsMap[attribute] = facet.items;\n });\n return refinementsMap;\n },\n [items],\n );\n\n return refinementsByAttribute;\n};\n\n/**\n * Transforms refinementsByAttribute into a flat array of objects,\n * each with an attribute key so we can still associate which attribute\n * a refinement is for.\n */\nexport const useActiveRefinementsAsFlatArray = (items) => {\n const refinementsByAttribute = useActiveRefinementsByAttribute(items);\n\n const refinementsAsFlatArray = useMemo(\n () => {\n const refinements = [];\n Object.entries(refinementsByAttribute).forEach(([key, value]) => {\n const updatedValue = value.map((item) => ({\n ...item,\n attribute: key,\n }));\n refinements.push(...updatedValue);\n });\n return refinements;\n },\n [JSON.stringify(refinementsByAttribute)],\n );\n\n return refinementsAsFlatArray;\n};\n\nexport const useNbHitsFromSearchResults = (searchResults) => {\n const nbHits = useMemo(\n () => {\n if (searchResults && !isNull(searchResults.nbHits)) {\n return searchResults && searchResults.nbHits;\n }\n return null;\n },\n [searchResults],\n );\n\n return nbHits;\n};\n\nexport const getCatalogString = (catalogs) => {\n function catalogFilterReducer(result, catalog, index) {\n const isLastCatalog = index === catalogs.length - 1;\n let query = `${result}enterprise_catalog_uuids:${catalog}`;\n if (!isLastCatalog) {\n query += ' OR ';\n }\n return query;\n }\n\n return catalogs.reduce(catalogFilterReducer, '');\n};\n\nexport const useActiveElement = () => {\n const [active, setActive] = useState(document.activeElement);\n const handleFocusIn = () => setActive(document.activeElement);\n\n useEffect(() => {\n document.addEventListener('focusin', handleFocusIn);\n return () => {\n document.removeEventListener('focusin', handleFocusIn);\n };\n }, []);\n\n return active;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"hooks.js","names":["useMemo","useState","useEffect","isNull","useActiveRefinementsByAttribute","items","refinementsByAttribute","refinementsMap","forEach","facet","attribute","useActiveRefinementsAsFlatArray","refinementsAsFlatArray","refinements","Object","entries","_ref","_ref2","_slicedToArray","key","value","updatedValue","map","item","_objectSpread","push","apply","_toConsumableArray","JSON","stringify","useNbHitsFromSearchResults","searchResults","nbHits","getCatalogString","catalogs","catalogFilterReducer","result","catalog","index","isLastCatalog","length","query","concat","reduce","useActiveElement","_useState","document","activeElement","_useState2","active","setActive","handleFocusIn","addEventListener","removeEventListener"],"sources":["../../src/data/hooks.js"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport { useMemo, useState, useEffect } from 'react';\nimport { isNull } from '@2uinc/frontend-enterprise-utils';\n\n/**\n * Transforms items into an object with a key for each facet attribute\n * with a list of that facet attribute's active selection(s).\n */\nexport const useActiveRefinementsByAttribute = (items) => {\n const refinementsByAttribute = useMemo(\n () => {\n const refinementsMap = {};\n items.forEach((facet) => {\n const { attribute } = facet;\n refinementsMap[attribute] = facet.items;\n });\n return refinementsMap;\n },\n [items],\n );\n\n return refinementsByAttribute;\n};\n\n/**\n * Transforms refinementsByAttribute into a flat array of objects,\n * each with an attribute key so we can still associate which attribute\n * a refinement is for.\n */\nexport const useActiveRefinementsAsFlatArray = (items) => {\n const refinementsByAttribute = useActiveRefinementsByAttribute(items);\n\n const refinementsAsFlatArray = useMemo(\n () => {\n const refinements = [];\n Object.entries(refinementsByAttribute).forEach(([key, value]) => {\n const updatedValue = value.map((item) => ({\n ...item,\n attribute: key,\n }));\n refinements.push(...updatedValue);\n });\n return refinements;\n },\n [JSON.stringify(refinementsByAttribute)],\n );\n\n return refinementsAsFlatArray;\n};\n\nexport const useNbHitsFromSearchResults = (searchResults) => {\n const nbHits = useMemo(\n () => {\n if (searchResults && !isNull(searchResults.nbHits)) {\n return searchResults && searchResults.nbHits;\n }\n return null;\n },\n [searchResults],\n );\n\n return nbHits;\n};\n\nexport const getCatalogString = (catalogs) => {\n function catalogFilterReducer(result, catalog, index) {\n const isLastCatalog = index === catalogs.length - 1;\n let query = `${result}enterprise_catalog_uuids:${catalog}`;\n if (!isLastCatalog) {\n query += ' OR ';\n }\n return query;\n }\n\n return catalogs.reduce(catalogFilterReducer, '');\n};\n\nexport const useActiveElement = () => {\n const [active, setActive] = useState(document.activeElement);\n const handleFocusIn = () => setActive(document.activeElement);\n\n useEffect(() => {\n document.addEventListener('focusin', handleFocusIn);\n return () => {\n document.removeEventListener('focusin', handleFocusIn);\n };\n }, []);\n\n return active;\n};\n"],"mappings":"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","ignoreList":[]}
package/index.js CHANGED
@@ -2,6 +2,7 @@ export { default as SearchData, SearchContext } from './SearchContext';
2
2
  export { default as SearchHeader } from './SearchHeader';
3
3
  export { default as SearchPagination } from './SearchPagination';
4
4
  export { default as FacetListRefinement } from './FacetListRefinement';
5
+ export { default as LearningTypeRadioFacet } from './LearningTypeRadioFacet';
5
6
  export { SEARCH_FACET_FILTERS, SHOW_ALL_NAME } from './data/constants';
6
7
  export { useNbHitsFromSearchResults, getCatalogString } from './data/hooks';
7
8
  export { addToRefinementArray, deleteRefinementAction, removeFromRefinementArray, setMultipleRefinementsAction, setRefinementAction, clearRefinementsAction } from './data/actions';
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","SearchData","SearchContext","SearchHeader","SearchPagination","FacetListRefinement","SEARCH_FACET_FILTERS","SHOW_ALL_NAME","useNbHitsFromSearchResults","getCatalogString","addToRefinementArray","deleteRefinementAction","removeFromRefinementArray","setMultipleRefinementsAction","setRefinementAction","clearRefinementsAction","getSearchFacetFilters"],"sources":["../src/index.js"],"sourcesContent":["export { default as SearchData, SearchContext } from './SearchContext';\nexport { default as SearchHeader } from './SearchHeader';\nexport { default as SearchPagination } from './SearchPagination';\nexport { default as FacetListRefinement } from './FacetListRefinement';\n\nexport {\n SEARCH_FACET_FILTERS,\n SHOW_ALL_NAME,\n} from './data/constants';\n\nexport {\n useNbHitsFromSearchResults,\n getCatalogString,\n} from './data/hooks';\n\nexport {\n addToRefinementArray,\n deleteRefinementAction,\n removeFromRefinementArray,\n setMultipleRefinementsAction,\n setRefinementAction,\n clearRefinementsAction,\n} from './data/actions';\n\nexport {\n getSearchFacetFilters,\n} from './utils';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,UAAU,EAAEC,aAAa,QAAQ,iBAAiB;AACtE,SAASF,OAAO,IAAIG,YAAY,QAAQ,gBAAgB;AACxD,SAASH,OAAO,IAAII,gBAAgB,QAAQ,oBAAoB;AAChE,SAASJ,OAAO,IAAIK,mBAAmB,QAAQ,uBAAuB;AAEtE,SACEC,oBAAoB,EACpBC,aAAa,QACR,kBAAkB;AAEzB,SACEC,0BAA0B,EAC1BC,gBAAgB,QACX,cAAc;AAErB,SACEC,oBAAoB,EACpBC,sBAAsB,EACtBC,yBAAyB,EACzBC,4BAA4B,EAC5BC,mBAAmB,EACnBC,sBAAsB,QACjB,gBAAgB;AAEvB,SACEC,qBAAqB,QAChB,SAAS","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["default","SearchData","SearchContext","SearchHeader","SearchPagination","FacetListRefinement","LearningTypeRadioFacet","SEARCH_FACET_FILTERS","SHOW_ALL_NAME","useNbHitsFromSearchResults","getCatalogString","addToRefinementArray","deleteRefinementAction","removeFromRefinementArray","setMultipleRefinementsAction","setRefinementAction","clearRefinementsAction","getSearchFacetFilters"],"sources":["../src/index.js"],"sourcesContent":["export { default as SearchData, SearchContext } from './SearchContext';\nexport { default as SearchHeader } from './SearchHeader';\nexport { default as SearchPagination } from './SearchPagination';\nexport { default as FacetListRefinement } from './FacetListRefinement';\nexport { default as LearningTypeRadioFacet } from './LearningTypeRadioFacet';\n\nexport {\n SEARCH_FACET_FILTERS,\n SHOW_ALL_NAME,\n} from './data/constants';\n\nexport {\n useNbHitsFromSearchResults,\n getCatalogString,\n} from './data/hooks';\n\nexport {\n addToRefinementArray,\n deleteRefinementAction,\n removeFromRefinementArray,\n setMultipleRefinementsAction,\n setRefinementAction,\n clearRefinementsAction,\n} from './data/actions';\n\nexport {\n getSearchFacetFilters,\n} from './utils';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,UAAU,EAAEC,aAAa,QAAQ,iBAAiB;AACtE,SAASF,OAAO,IAAIG,YAAY,QAAQ,gBAAgB;AACxD,SAASH,OAAO,IAAII,gBAAgB,QAAQ,oBAAoB;AAChE,SAASJ,OAAO,IAAIK,mBAAmB,QAAQ,uBAAuB;AACtE,SAASL,OAAO,IAAIM,sBAAsB,QAAQ,0BAA0B;AAE5E,SACEC,oBAAoB,EACpBC,aAAa,QACR,kBAAkB;AAEzB,SACEC,0BAA0B,EAC1BC,gBAAgB,QACX,cAAc;AAErB,SACEC,oBAAoB,EACpBC,sBAAsB,EACtBC,yBAAyB,EACzBC,4BAA4B,EAC5BC,mBAAmB,EACnBC,sBAAsB,QACjB,gBAAgB;AAEvB,SACEC,qBAAqB,QAChB,SAAS","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@2uinc/frontend-enterprise-catalog-search",
3
- "version": "11.0.2",
3
+ "version": "11.1.1",
4
4
  "description": "Components related to Enterprise catalog search.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -37,7 +37,7 @@
37
37
  },
38
38
  "sideEffects": false,
39
39
  "dependencies": {
40
- "@edx/frontend-enterprise-utils": "^10.0.0",
40
+ "@2uinc/frontend-enterprise-utils": "^10.0.2",
41
41
  "classnames": "^2.5.1",
42
42
  "lodash.debounce": "^4.0.8",
43
43
  "prop-types": "^15.8.1"
package/tests/utils.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { renderWithRouter } from '@edx/frontend-enterprise-utils';
2
+ import { renderWithRouter } from '@2uinc/frontend-enterprise-utils';
3
3
  import { IntlProvider } from '@edx/frontend-platform/i18n';
4
4
  import SearchData from '../SearchContext';
5
5
  export var renderWithSearchContext = function renderWithSearchContext(children) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["React","renderWithRouter","IntlProvider","SearchData","renderWithSearchContext","children","createElement","locale","renderWithSearchContextAndTracking","trackingName","renderWithIntlProvider"],"sources":["../../src/tests/utils.jsx"],"sourcesContent":["import React from 'react';\nimport { renderWithRouter } from '@edx/frontend-enterprise-utils';\nimport { IntlProvider } from '@edx/frontend-platform/i18n';\n\nimport SearchData from '../SearchContext';\n\nexport const renderWithSearchContext = (children) => renderWithRouter(\n <IntlProvider locale=\"en\">\n <SearchData>\n {children}\n </SearchData>\n </IntlProvider>,\n);\n\nexport const renderWithSearchContextAndTracking = (children, trackingName) => renderWithRouter(\n <IntlProvider locale=\"en\">\n <SearchData trackingName={trackingName}>\n {children}\n </SearchData>\n </IntlProvider>,\n);\n\nexport const renderWithIntlProvider = (children) => renderWithRouter(\n <IntlProvider locale=\"en\">\n {children}\n </IntlProvider>,\n);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,gBAAgB,QAAQ,gCAAgC;AACjE,SAASC,YAAY,QAAQ,6BAA6B;AAE1D,OAAOC,UAAU,MAAM,kBAAkB;AAEzC,OAAO,IAAMC,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAIC,QAAQ;EAAA,OAAKJ,gBAAgB,cACnED,KAAA,CAAAM,aAAA,CAACJ,YAAY;IAACK,MAAM,EAAC;EAAI,gBACvBP,KAAA,CAAAM,aAAA,CAACH,UAAU,QACRE,QACS,CACA,CAChB,CAAC;AAAA;AAED,OAAO,IAAMG,kCAAkC,GAAG,SAArCA,kCAAkCA,CAAIH,QAAQ,EAAEI,YAAY;EAAA,OAAKR,gBAAgB,cAC5FD,KAAA,CAAAM,aAAA,CAACJ,YAAY;IAACK,MAAM,EAAC;EAAI,gBACvBP,KAAA,CAAAM,aAAA,CAACH,UAAU;IAACM,YAAY,EAAEA;EAAa,GACpCJ,QACS,CACA,CAChB,CAAC;AAAA;AAED,OAAO,IAAMK,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAIL,QAAQ;EAAA,OAAKJ,gBAAgB,cAClED,KAAA,CAAAM,aAAA,CAACJ,YAAY;IAACK,MAAM,EAAC;EAAI,GACtBF,QACW,CAChB,CAAC;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["React","renderWithRouter","IntlProvider","SearchData","renderWithSearchContext","children","createElement","locale","renderWithSearchContextAndTracking","trackingName","renderWithIntlProvider"],"sources":["../../src/tests/utils.jsx"],"sourcesContent":["import React from 'react';\nimport { renderWithRouter } from '@2uinc/frontend-enterprise-utils';\nimport { IntlProvider } from '@edx/frontend-platform/i18n';\n\nimport SearchData from '../SearchContext';\n\nexport const renderWithSearchContext = (children) => renderWithRouter(\n <IntlProvider locale=\"en\">\n <SearchData>\n {children}\n </SearchData>\n </IntlProvider>,\n);\n\nexport const renderWithSearchContextAndTracking = (children, trackingName) => renderWithRouter(\n <IntlProvider locale=\"en\">\n <SearchData trackingName={trackingName}>\n {children}\n </SearchData>\n </IntlProvider>,\n);\n\nexport const renderWithIntlProvider = (children) => renderWithRouter(\n <IntlProvider locale=\"en\">\n {children}\n </IntlProvider>,\n);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,gBAAgB,QAAQ,kCAAkC;AACnE,SAASC,YAAY,QAAQ,6BAA6B;AAE1D,OAAOC,UAAU,MAAM,kBAAkB;AAEzC,OAAO,IAAMC,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAIC,QAAQ;EAAA,OAAKJ,gBAAgB,cACnED,KAAA,CAAAM,aAAA,CAACJ,YAAY;IAACK,MAAM,EAAC;EAAI,gBACvBP,KAAA,CAAAM,aAAA,CAACH,UAAU,QACRE,QACS,CACA,CAChB,CAAC;AAAA;AAED,OAAO,IAAMG,kCAAkC,GAAG,SAArCA,kCAAkCA,CAAIH,QAAQ,EAAEI,YAAY;EAAA,OAAKR,gBAAgB,cAC5FD,KAAA,CAAAM,aAAA,CAACJ,YAAY;IAACK,MAAM,EAAC;EAAI,gBACvBP,KAAA,CAAAM,aAAA,CAACH,UAAU;IAACM,YAAY,EAAEA;EAAa,GACpCJ,QACS,CACA,CAChB,CAAC;AAAA;AAED,OAAO,IAAMK,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAIL,QAAQ;EAAA,OAAKJ,gBAAgB,cAClED,KAAA,CAAAM,aAAA,CAACJ,YAAY;IAACK,MAAM,EAAC;EAAI,GACtBF,QACW,CAChB,CAAC;AAAA","ignoreList":[]}