@blaze-cms/react-page-builder 0.124.0-alpha.9 → 0.124.0
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 +303 -0
- package/README.md +8 -0
- package/lib/application/query/index.js +8 -2
- package/lib/application/query/index.js.map +1 -1
- package/lib/components/Button.js +18 -5
- package/lib/components/Button.js.map +1 -1
- package/lib/components/Card/CardContainer.js +3 -7
- package/lib/components/Card/CardContainer.js.map +1 -1
- package/lib/components/Card/CardFactory.js +6 -3
- package/lib/components/Card/CardFactory.js.map +1 -1
- package/lib/components/CarouselWrapper.js +2 -2
- package/lib/components/CarouselWrapper.js.map +1 -1
- package/lib/components/Image/ImageRender.js +5 -1
- package/lib/components/Image/ImageRender.js.map +1 -1
- package/lib/components/ItemList/ItemListButton/ItemListButton.js +161 -0
- package/lib/components/ItemList/ItemListButton/ItemListButton.js.map +1 -0
- package/lib/components/ItemList/ItemListButton/index.js +16 -0
- package/lib/components/ItemList/ItemListButton/index.js.map +1 -0
- package/lib/components/ItemList/ItemListCounter/ItemListCounter.js +83 -0
- package/lib/components/ItemList/ItemListCounter/ItemListCounter.js.map +1 -0
- package/lib/components/ItemList/ItemListCounter/index.js +16 -0
- package/lib/components/ItemList/ItemListCounter/index.js.map +1 -0
- package/lib/components/ItemList/ItemListNew/ItemListNew.js +87 -0
- package/lib/components/ItemList/ItemListNew/ItemListNew.js.map +1 -0
- package/lib/components/ItemList/ItemListNew/index.js +16 -0
- package/lib/components/ItemList/ItemListNew/index.js.map +1 -0
- package/lib/components/ItemList/constants.js +19 -0
- package/lib/components/ItemList/constants.js.map +1 -0
- package/lib/components/ItemList/helpers/get-item-list-data.js +17 -0
- package/lib/components/ItemList/helpers/get-item-list-data.js.map +1 -0
- package/lib/components/ItemList/helpers/get-item-list-id.js +23 -0
- package/lib/components/ItemList/helpers/get-item-list-id.js.map +1 -0
- package/lib/components/ItemList/helpers/get-item-list-ids.js +28 -0
- package/lib/components/ItemList/helpers/get-item-list-ids.js.map +1 -0
- package/lib/components/ItemList/helpers/index.js +50 -0
- package/lib/components/ItemList/helpers/index.js.map +1 -0
- package/lib/components/ItemList/helpers/set-item-list-id.js +22 -0
- package/lib/components/ItemList/helpers/set-item-list-id.js.map +1 -0
- package/lib/components/ItemList/helpers/set-param-and-redirect.js +51 -0
- package/lib/components/ItemList/helpers/set-param-and-redirect.js.map +1 -0
- package/lib/components/ItemList/hooks/index.js +18 -0
- package/lib/components/ItemList/hooks/index.js.map +1 -0
- package/lib/components/ItemList/hooks/use-item-list-id.js +45 -0
- package/lib/components/ItemList/hooks/use-item-list-id.js.map +1 -0
- package/lib/components/LazyImage/LazyImage.js +5 -1
- package/lib/components/LazyImage/LazyImage.js.map +1 -1
- package/lib/components/List/ListBuilder.js +12 -6
- package/lib/components/List/ListBuilder.js.map +1 -1
- package/lib/components/List/ListFactory.js +34 -7
- package/lib/components/List/ListFactory.js.map +1 -1
- package/lib/components/List/helpers/has-required-item-list-details.js +29 -0
- package/lib/components/List/helpers/has-required-item-list-details.js.map +1 -0
- package/lib/components/List/helpers/index.js +8 -0
- package/lib/components/List/helpers/index.js.map +1 -1
- package/lib/components/Menu/Menu.js +41 -28
- package/lib/components/Menu/Menu.js.map +1 -1
- package/lib/components/Menu/MenuContext.js +20 -0
- package/lib/components/Menu/MenuContext.js.map +1 -0
- package/lib/components/MenuItem/MenuItem.js +26 -7
- package/lib/components/MenuItem/MenuItem.js.map +1 -1
- package/lib/components/SearchContent/SearchContent.js +183 -0
- package/lib/components/SearchContent/SearchContent.js.map +1 -0
- package/lib/components/SearchContent/SearchContentItems.js +51 -0
- package/lib/components/SearchContent/SearchContentItems.js.map +1 -0
- package/lib/components/SearchContent/SearchContentResults.js +45 -0
- package/lib/components/SearchContent/SearchContentResults.js.map +1 -0
- package/lib/components/SearchContent/SearchContentToggleIcon.js +42 -0
- package/lib/components/SearchContent/SearchContentToggleIcon.js.map +1 -0
- package/lib/components/SearchContent/index.js +2 -301
- package/lib/components/SearchContent/index.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilter/FiltersList.js +2 -4
- package/lib/components/SearchFilter/SearchFilter/FiltersList.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilter/SearchFilter.js +16 -66
- package/lib/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilterContainer.js +87 -23
- package/lib/components/SearchFilter/SearchFilterContainer.js.map +1 -1
- package/lib/components/SearchFilter/components/Checkbox.js +19 -9
- package/lib/components/SearchFilter/components/Checkbox.js.map +1 -1
- package/lib/components/SearchFilter/components/Select.js +27 -11
- package/lib/components/SearchFilter/components/Select.js.map +1 -1
- package/lib/components/SearchFilter/components/TextSearch.js +1 -5
- package/lib/components/SearchFilter/components/TextSearch.js.map +1 -1
- package/lib/components/SearchFilter/helpers/build-filters-query.js +87 -0
- package/lib/components/SearchFilter/helpers/build-filters-query.js.map +1 -0
- package/lib/components/SearchFilter/helpers/build-query.js +1 -1
- package/lib/components/SearchFilter/helpers/build-query.js.map +1 -1
- package/lib/components/SearchFilter/helpers/build-raw-query-stringified.js +2 -1
- package/lib/components/SearchFilter/helpers/build-raw-query-stringified.js.map +1 -1
- package/lib/components/SearchFilter/helpers/get-initial-filter-values.js +18 -3
- package/lib/components/SearchFilter/helpers/get-initial-filter-values.js.map +1 -1
- package/lib/components/SearchFilter/helpers/index.js +8 -0
- package/lib/components/SearchFilter/helpers/index.js.map +1 -1
- package/lib/components/SearchFilter/helpers/parse-filter-value.js +3 -7
- package/lib/components/SearchFilter/helpers/parse-filter-value.js.map +1 -1
- package/lib/components/index.js +16 -1
- package/lib/components/index.js.map +1 -1
- package/lib/constants/index.js +3 -1
- package/lib/constants/index.js.map +1 -1
- package/lib/helpers/build-raw-query.js.map +1 -1
- package/lib/hooks/helpers/append-gtm-classname.js +1 -0
- package/lib/hooks/helpers/append-gtm-classname.js.map +1 -1
- package/lib-es/application/query/index.js +45 -1
- package/lib-es/application/query/index.js.map +1 -1
- package/lib-es/components/Button.js +18 -6
- package/lib-es/components/Button.js.map +1 -1
- package/lib-es/components/Card/CardContainer.js +3 -7
- package/lib-es/components/Card/CardContainer.js.map +1 -1
- package/lib-es/components/Card/CardFactory.js +7 -4
- package/lib-es/components/Card/CardFactory.js.map +1 -1
- package/lib-es/components/CarouselWrapper.js +2 -2
- package/lib-es/components/CarouselWrapper.js.map +1 -1
- package/lib-es/components/Image/ImageRender.js +4 -1
- package/lib-es/components/Image/ImageRender.js.map +1 -1
- package/lib-es/components/ItemList/ItemListButton/ItemListButton.js +111 -0
- package/lib-es/components/ItemList/ItemListButton/ItemListButton.js.map +1 -0
- package/lib-es/components/ItemList/ItemListButton/index.js +3 -0
- package/lib-es/components/ItemList/ItemListButton/index.js.map +1 -0
- package/lib-es/components/ItemList/ItemListCounter/ItemListCounter.js +60 -0
- package/lib-es/components/ItemList/ItemListCounter/ItemListCounter.js.map +1 -0
- package/lib-es/components/ItemList/ItemListCounter/index.js +3 -0
- package/lib-es/components/ItemList/ItemListCounter/index.js.map +1 -0
- package/lib-es/components/ItemList/ItemListNew/ItemListNew.js +64 -0
- package/lib-es/components/ItemList/ItemListNew/ItemListNew.js.map +1 -0
- package/lib-es/components/ItemList/ItemListNew/index.js +3 -0
- package/lib-es/components/ItemList/ItemListNew/index.js.map +1 -0
- package/lib-es/components/ItemList/constants.js +6 -0
- package/lib-es/components/ItemList/constants.js.map +1 -0
- package/lib-es/components/ItemList/helpers/get-item-list-data.js +7 -0
- package/lib-es/components/ItemList/helpers/get-item-list-data.js.map +1 -0
- package/lib-es/components/ItemList/helpers/get-item-list-id.js +11 -0
- package/lib-es/components/ItemList/helpers/get-item-list-id.js.map +1 -0
- package/lib-es/components/ItemList/helpers/get-item-list-ids.js +13 -0
- package/lib-es/components/ItemList/helpers/get-item-list-ids.js.map +1 -0
- package/lib-es/components/ItemList/helpers/index.js +6 -0
- package/lib-es/components/ItemList/helpers/index.js.map +1 -0
- package/lib-es/components/ItemList/helpers/set-item-list-id.js +10 -0
- package/lib-es/components/ItemList/helpers/set-item-list-id.js.map +1 -0
- package/lib-es/components/ItemList/helpers/set-param-and-redirect.js +20 -0
- package/lib-es/components/ItemList/helpers/set-param-and-redirect.js.map +1 -0
- package/lib-es/components/ItemList/hooks/index.js +2 -0
- package/lib-es/components/ItemList/hooks/index.js.map +1 -0
- package/lib-es/components/ItemList/hooks/use-item-list-id.js +26 -0
- package/lib-es/components/ItemList/hooks/use-item-list-id.js.map +1 -0
- package/lib-es/components/LazyImage/LazyImage.js +4 -1
- package/lib-es/components/LazyImage/LazyImage.js.map +1 -1
- package/lib-es/components/List/ListBuilder.js +12 -6
- package/lib-es/components/List/ListBuilder.js.map +1 -1
- package/lib-es/components/List/ListFactory.js +33 -9
- package/lib-es/components/List/ListFactory.js.map +1 -1
- package/lib-es/components/List/helpers/has-required-item-list-details.js +20 -0
- package/lib-es/components/List/helpers/has-required-item-list-details.js.map +1 -0
- package/lib-es/components/List/helpers/index.js +1 -0
- package/lib-es/components/List/helpers/index.js.map +1 -1
- package/lib-es/components/Menu/Menu.js +54 -46
- package/lib-es/components/Menu/Menu.js.map +1 -1
- package/lib-es/components/Menu/MenuContext.js +6 -0
- package/lib-es/components/Menu/MenuContext.js.map +1 -0
- package/lib-es/components/MenuItem/MenuItem.js +24 -9
- package/lib-es/components/MenuItem/MenuItem.js.map +1 -1
- package/lib-es/components/SearchContent/SearchContent.js +129 -0
- package/lib-es/components/SearchContent/SearchContent.js.map +1 -0
- package/lib-es/components/SearchContent/SearchContentItems.js +33 -0
- package/lib-es/components/SearchContent/SearchContentItems.js.map +1 -0
- package/lib-es/components/SearchContent/SearchContentResults.js +31 -0
- package/lib-es/components/SearchContent/SearchContentResults.js.map +1 -0
- package/lib-es/components/SearchContent/SearchContentToggleIcon.js +30 -0
- package/lib-es/components/SearchContent/SearchContentToggleIcon.js.map +1 -0
- package/lib-es/components/SearchContent/index.js +1 -205
- package/lib-es/components/SearchContent/index.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilter/FiltersList.js +2 -4
- package/lib-es/components/SearchFilter/SearchFilter/FiltersList.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js +10 -43
- package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilterContainer.js +70 -15
- package/lib-es/components/SearchFilter/SearchFilterContainer.js.map +1 -1
- package/lib-es/components/SearchFilter/components/Checkbox.js +18 -9
- package/lib-es/components/SearchFilter/components/Checkbox.js.map +1 -1
- package/lib-es/components/SearchFilter/components/Select.js +23 -8
- package/lib-es/components/SearchFilter/components/Select.js.map +1 -1
- package/lib-es/components/SearchFilter/components/TextSearch.js +1 -5
- package/lib-es/components/SearchFilter/components/TextSearch.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/build-filters-query.js +54 -0
- package/lib-es/components/SearchFilter/helpers/build-filters-query.js.map +1 -0
- package/lib-es/components/SearchFilter/helpers/build-query.js +1 -1
- package/lib-es/components/SearchFilter/helpers/build-query.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/build-raw-query-stringified.js +2 -1
- package/lib-es/components/SearchFilter/helpers/build-raw-query-stringified.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/get-initial-filter-values.js +13 -1
- package/lib-es/components/SearchFilter/helpers/get-initial-filter-values.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/index.js +2 -1
- package/lib-es/components/SearchFilter/helpers/index.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/parse-filter-value.js +3 -3
- package/lib-es/components/SearchFilter/helpers/parse-filter-value.js.map +1 -1
- package/lib-es/components/index.js +10 -1
- package/lib-es/components/index.js.map +1 -1
- package/lib-es/constants/index.js +2 -1
- package/lib-es/constants/index.js.map +1 -1
- package/lib-es/helpers/build-raw-query.js.map +1 -1
- package/lib-es/hooks/helpers/append-gtm-classname.js +1 -0
- package/lib-es/hooks/helpers/append-gtm-classname.js.map +1 -1
- package/package.json +5 -4
- package/src/application/query/index.js +51 -1
- package/src/components/Button.js +27 -5
- package/src/components/Card/CardContainer.js +2 -6
- package/src/components/Card/CardFactory.js +5 -3
- package/src/components/CarouselWrapper.js +2 -2
- package/src/components/Image/ImageRender.js +3 -0
- package/src/components/ItemList/ItemListButton/ItemListButton.js +94 -0
- package/src/components/ItemList/ItemListButton/index.js +3 -0
- package/src/components/ItemList/ItemListCounter/ItemListCounter.js +52 -0
- package/src/components/ItemList/ItemListCounter/index.js +3 -0
- package/src/components/ItemList/ItemListNew/ItemListNew.js +51 -0
- package/src/components/ItemList/ItemListNew/index.js +3 -0
- package/src/components/ItemList/constants.js +5 -0
- package/src/components/ItemList/helpers/get-item-list-data.js +6 -0
- package/src/components/ItemList/helpers/get-item-list-id.js +11 -0
- package/src/components/ItemList/helpers/get-item-list-ids.js +10 -0
- package/src/components/ItemList/helpers/index.js +5 -0
- package/src/components/ItemList/helpers/set-item-list-id.js +9 -0
- package/src/components/ItemList/helpers/set-param-and-redirect.js +20 -0
- package/src/components/ItemList/hooks/index.js +1 -0
- package/src/components/ItemList/hooks/use-item-list-id.js +27 -0
- package/src/components/LazyImage/LazyImage.js +11 -1
- package/src/components/List/ListBuilder.js +10 -5
- package/src/components/List/ListFactory.js +48 -12
- package/src/components/List/helpers/has-required-item-list-details.js +14 -0
- package/src/components/List/helpers/index.js +1 -0
- package/src/components/Menu/Menu.js +61 -54
- package/src/components/Menu/MenuContext.js +5 -0
- package/src/components/MenuItem/MenuItem.js +39 -14
- package/src/components/SearchContent/SearchContent.js +136 -0
- package/src/components/SearchContent/SearchContentItems.js +28 -0
- package/src/components/SearchContent/SearchContentResults.js +27 -0
- package/src/components/SearchContent/SearchContentToggleIcon.js +27 -0
- package/src/components/SearchContent/index.js +1 -217
- package/src/components/SearchFilter/SearchFilter/FiltersList.js +30 -37
- package/src/components/SearchFilter/SearchFilter/SearchFilter.js +10 -25
- package/src/components/SearchFilter/SearchFilterContainer.js +61 -16
- package/src/components/SearchFilter/components/Checkbox.js +23 -8
- package/src/components/SearchFilter/components/Select.js +18 -11
- package/src/components/SearchFilter/components/TextSearch.js +1 -3
- package/src/components/SearchFilter/helpers/build-filters-query.js +40 -0
- package/src/components/SearchFilter/helpers/build-query.js +3 -1
- package/src/components/SearchFilter/helpers/build-raw-query-stringified.js +2 -1
- package/src/components/SearchFilter/helpers/get-initial-filter-values.js +12 -1
- package/src/components/SearchFilter/helpers/index.js +3 -1
- package/src/components/SearchFilter/helpers/parse-filter-value.js +3 -3
- package/src/components/index.js +10 -1
- package/src/constants/index.js +2 -0
- package/src/helpers/build-raw-query.js +1 -0
- package/src/hooks/helpers/append-gtm-classname.js +3 -0
- package/tests/unit/src/components/Button.test.js +55 -1
- package/tests/unit/src/components/ItemList/ItemListButton.test.js +175 -0
- package/tests/unit/src/components/ItemList/ItemListCounter.test.js +65 -0
- package/tests/unit/src/components/ItemList/ItemListNew.test.js +164 -0
- package/tests/unit/src/components/ItemList/__snapshots__/ItemListButton.test.js.snap +107 -0
- package/tests/unit/src/components/ItemList/__snapshots__/ItemListCounter.test.js.snap +31 -0
- package/tests/unit/src/components/ItemList/__snapshots__/ItemListNew.test.js.snap +27 -0
- package/tests/unit/src/components/ItemList/helpers/get-item-list-data.test.js +28 -0
- package/tests/unit/src/components/ItemList/helpers/get-item-list-id.test.js +20 -0
- package/tests/unit/src/components/ItemList/helpers/get-item-list-ids.test.js +19 -0
- package/tests/unit/src/components/ItemList/helpers/set-item-list-id.test.js +13 -0
- package/tests/unit/src/components/ItemList/helpers/set-param-and-redirect.test.js +30 -0
- package/tests/unit/src/components/ItemList/hooks/use-item-list-id.test.js +32 -0
- package/tests/unit/src/components/List/helpers/has-required-item-list-details.test.js +30 -0
- package/tests/unit/src/components/Menu/Menu.test.js +9 -3
- package/tests/unit/src/components/Menu/__snapshots__/Menu.test.js.snap +12 -11
- package/tests/unit/src/components/MenuItem/MenuItem.test.js +1 -1
- package/tests/unit/src/components/MenuItem/SubMenu.test.js +5 -1
- package/tests/unit/src/components/MenuItem/__snapshots__/MenuItem.test.js.snap +54 -10
- package/tests/unit/src/components/SearchContent/SearchContent.test.js +29 -0
- package/tests/unit/src/components/SearchContent/__snapshots__/SearchContent.test.js.snap +9 -0
- package/tests/unit/src/components/SearchFilter/SearchFilter/SearchFilter.test.js +3 -6
- package/tests/unit/src/components/SearchFilter/components/__snapshots__/Checkbox.test.js.snap +2 -0
- package/tests/unit/src/components/SearchFilter/components/__snapshots__/Select.test.js.snap +4 -0
- package/tests/unit/src/components/SearchFilter/helpers/build-query.test.js +2 -2
- package/tests/unit/src/components/SearchFilter/helpers/get-initial-filter-values.test.js +25 -11
- package/tests/unit/src/components/SearchFilter/helpers/parse-filter-value.test.js +1 -1
- package/tests/unit/src/components/__snapshots__/index.test.js.snap +12 -0
|
@@ -4,10 +4,14 @@ import { parseUrl } from 'query-string';
|
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import { useRouter } from 'next/router';
|
|
6
6
|
import { MainContext } from '@blaze-cms/nextjs-components';
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
getSingleEntitySchema,
|
|
9
|
+
generateSingleItemQuery,
|
|
10
|
+
getItemList
|
|
11
|
+
} from '../../application/query';
|
|
8
12
|
import ListBuilder from './ListBuilder';
|
|
9
13
|
import { AZ_LIST_TYPE } from './constants';
|
|
10
|
-
import { getAzQueryFilter, getSortProps } from './helpers';
|
|
14
|
+
import { getAzQueryFilter, getSortProps, hasRequiredItemListDetails } from './helpers';
|
|
11
15
|
import {
|
|
12
16
|
getGenericProps,
|
|
13
17
|
getRequiredSchemas,
|
|
@@ -21,6 +25,7 @@ import {
|
|
|
21
25
|
getInheritedFilters,
|
|
22
26
|
getQueryProps
|
|
23
27
|
} from '../../helpers';
|
|
28
|
+
import { getItemListId, getItemListIds } from '../ItemList/helpers';
|
|
24
29
|
import { useGetEntitySchemasAsObj } from '../../hooks';
|
|
25
30
|
import { AND_OPERATOR, TEXT_SEARCH, ID, AND, FULL } from '../../constants';
|
|
26
31
|
|
|
@@ -37,16 +42,18 @@ const ListFactory = props => {
|
|
|
37
42
|
sort: defaultSort,
|
|
38
43
|
searchFilter,
|
|
39
44
|
operator: filterOperator,
|
|
40
|
-
sortProperties
|
|
45
|
+
sortProperties,
|
|
46
|
+
itemListName
|
|
41
47
|
} = props;
|
|
42
|
-
|
|
43
48
|
const { isPreview } = useContext(MainContext);
|
|
44
49
|
const router = useRouter();
|
|
45
50
|
const { asPath } = router;
|
|
46
51
|
const parsedQuery = asPath.replace(/%5D/g, ']').replace(/%5B/g, '[');
|
|
47
|
-
const {
|
|
48
|
-
|
|
49
|
-
|
|
52
|
+
const {
|
|
53
|
+
query,
|
|
54
|
+
url,
|
|
55
|
+
query: { sort: querySort, sortby: querySortBy, itemListId: queryItemListId } = {}
|
|
56
|
+
} = parseUrl(parsedQuery);
|
|
50
57
|
const { sortbyFilters, updatedSortProperties } = getSortProps({
|
|
51
58
|
querySort,
|
|
52
59
|
sortProperties,
|
|
@@ -55,6 +62,7 @@ const ListFactory = props => {
|
|
|
55
62
|
defaultSortBy
|
|
56
63
|
});
|
|
57
64
|
|
|
65
|
+
const itemListId = getItemListId(itemListName, queryItemListId);
|
|
58
66
|
const { itemEntity, itemId } = parent;
|
|
59
67
|
const itemEntityUpdated = getUnpublishedEntityName(itemEntity);
|
|
60
68
|
const paginationIndex = getPaginationIndex(query, name);
|
|
@@ -98,13 +106,38 @@ const ListFactory = props => {
|
|
|
98
106
|
variables: { id: itemId },
|
|
99
107
|
skip: schemasLoading || (!inheritedFilters.length && queryProps === ID)
|
|
100
108
|
});
|
|
101
|
-
|
|
109
|
+
|
|
110
|
+
const { data: itemListData = {}, error: itemListError, loading: itemListLoading } = useQuery(
|
|
111
|
+
getItemList,
|
|
112
|
+
{
|
|
113
|
+
variables: { id: itemListId },
|
|
114
|
+
skip: !itemListId
|
|
115
|
+
}
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
if (!hasRequiredItemListDetails({ itemListName, router, itemListId, queryItemListId })) return '';
|
|
119
|
+
|
|
120
|
+
const errorsToCheck = [
|
|
121
|
+
schemaError,
|
|
122
|
+
schemasError,
|
|
123
|
+
requiredSchemaError,
|
|
124
|
+
itemQueryError,
|
|
125
|
+
itemListError
|
|
126
|
+
];
|
|
102
127
|
const { hasErr, errMsg } = checkForError(errorsToCheck);
|
|
103
128
|
|
|
104
|
-
if (
|
|
129
|
+
if (
|
|
130
|
+
requiredSchemaLoading ||
|
|
131
|
+
schemasLoading ||
|
|
132
|
+
schemaLoading ||
|
|
133
|
+
itemQueryLoading ||
|
|
134
|
+
itemListLoading
|
|
135
|
+
)
|
|
136
|
+
return '';
|
|
105
137
|
if (hasErr) return errMsg;
|
|
106
138
|
if (!entitySchema) return null;
|
|
107
139
|
|
|
140
|
+
const itemListIds = getItemListIds(itemListData);
|
|
108
141
|
const isCard = type !== FULL;
|
|
109
142
|
const isAZ = type === AZ_LIST_TYPE;
|
|
110
143
|
const genericProps = getGenericProps(props);
|
|
@@ -147,7 +180,8 @@ const ListFactory = props => {
|
|
|
147
180
|
paginationIndex,
|
|
148
181
|
entityData,
|
|
149
182
|
inheritedFilters,
|
|
150
|
-
filterOperator
|
|
183
|
+
filterOperator,
|
|
184
|
+
itemListIds
|
|
151
185
|
};
|
|
152
186
|
|
|
153
187
|
return <ListBuilder {...listProps} />;
|
|
@@ -165,7 +199,8 @@ ListFactory.propTypes = {
|
|
|
165
199
|
sortby: PropTypes.array,
|
|
166
200
|
sort: PropTypes.string,
|
|
167
201
|
searchFilter: PropTypes.object,
|
|
168
|
-
sortProperties: PropTypes.array
|
|
202
|
+
sortProperties: PropTypes.array,
|
|
203
|
+
itemListName: PropTypes.string
|
|
169
204
|
};
|
|
170
205
|
|
|
171
206
|
ListFactory.defaultProps = {
|
|
@@ -177,7 +212,8 @@ ListFactory.defaultProps = {
|
|
|
177
212
|
sortProperties: [],
|
|
178
213
|
sort: '',
|
|
179
214
|
operator: AND,
|
|
180
|
-
searchFilter: {}
|
|
215
|
+
searchFilter: {},
|
|
216
|
+
itemListName: ''
|
|
181
217
|
};
|
|
182
218
|
|
|
183
219
|
export default ListFactory;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { setParamAndRedirect } from '../../ItemList/helpers';
|
|
2
|
+
|
|
3
|
+
const hasRequiredItemListDetails = ({ itemListName, router, itemListId, queryItemListId }) => {
|
|
4
|
+
if (!itemListName) return true;
|
|
5
|
+
|
|
6
|
+
if (!queryItemListId && itemListId) {
|
|
7
|
+
setParamAndRedirect(router, itemListId);
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
return !!queryItemListId;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export default hasRequiredItemListDetails;
|
|
@@ -5,3 +5,4 @@ export { default as buildAzUrl } from './build-az-url';
|
|
|
5
5
|
export { default as sortAggs } from './sort-aggs';
|
|
6
6
|
export { default as getItemsPerPageToUse } from './get-items-per-page-to-use';
|
|
7
7
|
export { default as getSortProps } from './get-sort-props';
|
|
8
|
+
export { default as hasRequiredItemListDetails } from './has-required-item-list-details';
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import BlazeButton from '@blaze-react/button';
|
|
4
|
+
import classnames from 'classnames';
|
|
5
|
+
import { useRouter } from 'next/router';
|
|
4
6
|
import { MdMenu, MdClose } from 'react-icons/md';
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
+
import { Link } from '@blaze-cms/nextjs-components';
|
|
8
|
+
import MenuContext from './MenuContext';
|
|
7
9
|
|
|
8
10
|
const Menu = ({
|
|
9
11
|
children,
|
|
@@ -21,65 +23,68 @@ const Menu = ({
|
|
|
21
23
|
logoOnMobileModifier,
|
|
22
24
|
logoOnDesktopModifier,
|
|
23
25
|
logoOnDesktopAlignment,
|
|
24
|
-
closeIconModifier
|
|
25
|
-
...rest
|
|
26
|
+
closeIconModifier
|
|
26
27
|
}) => {
|
|
27
|
-
const
|
|
28
|
+
const router = useRouter();
|
|
28
29
|
const [showMobileMenu, setShowMobileMenu] = useState(false);
|
|
29
30
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
shouldDisplayChildren && !isMobile ? modifier : `${modifier} ${HIDDEN}`;
|
|
31
|
+
useEffect(
|
|
32
|
+
() => {
|
|
33
|
+
const handleRouteChange = () => setShowMobileMenu(false);
|
|
34
|
+
router.events.on('routeChangeStart', handleRouteChange);
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
return () => {
|
|
37
|
+
router.events.off('routeChangeStart', handleRouteChange);
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
[router.events]
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
const shouldDisplayChildren = collapse ? showMobileMenu : true;
|
|
44
|
+
|
|
45
|
+
const childModifiers = classnames({
|
|
46
|
+
[mobileMenuChildrenModifier]: shouldDisplayChildren,
|
|
47
|
+
[modifier]: !showMobileMenu
|
|
48
|
+
});
|
|
38
49
|
|
|
39
50
|
const isMobileMenuExpanded = showMobileMenu ? `${mobileMenuModifier}` : '';
|
|
51
|
+
const menuWrapperClasses = classnames('menu--wrapper', {
|
|
52
|
+
'menu--wrapper--mobile-open': showMobileMenu,
|
|
53
|
+
'menu--wrapper--mobile-closed': collapse && !showMobileMenu
|
|
54
|
+
});
|
|
40
55
|
|
|
41
56
|
return (
|
|
42
|
-
|
|
43
|
-
{
|
|
44
|
-
|
|
45
|
-
<div
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
<MenuContext.Provider value={{ showMobileMenu }}>
|
|
58
|
+
<div className={menuWrapperClasses}>
|
|
59
|
+
{collapse && (
|
|
60
|
+
<div className="menu--mobile-wrapper">
|
|
61
|
+
<div
|
|
62
|
+
className={`flex w-screen z-50 justify-${mobileIconAlignment} ${isMobileMenuExpanded}`}>
|
|
63
|
+
<BlazeButton
|
|
64
|
+
className={`menu--mobile-button ${mobileButtonModifier}`}
|
|
65
|
+
onClick={() => setShowMobileMenu(!showMobileMenu)}>
|
|
66
|
+
<i>
|
|
67
|
+
{showMobileMenu ? (
|
|
68
|
+
<MdClose className={closeIconModifier} />
|
|
69
|
+
) : (
|
|
70
|
+
<MdMenu className={hamburgerIconModifier} />
|
|
71
|
+
)}
|
|
72
|
+
</i>
|
|
73
|
+
</BlazeButton>
|
|
74
|
+
</div>
|
|
58
75
|
</div>
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
76
|
+
)}
|
|
77
|
+
{logoOnMobile &&
|
|
78
|
+
!showMobileMenu && (
|
|
79
|
+
<Link href="/">
|
|
80
|
+
<img src={logoOnMobileUrl} alt={logoOnMobileAlt} className={logoOnMobileModifier} />
|
|
81
|
+
</Link>
|
|
82
|
+
)}
|
|
66
83
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
<a href="/" className="menu--desktop__logo-wrapper">
|
|
72
|
-
<img
|
|
73
|
-
src={logoOnMobileUrl}
|
|
74
|
-
alt={logoOnMobileAlt}
|
|
75
|
-
className={logoOnDesktopModifier}
|
|
76
|
-
/>
|
|
77
|
-
</a>
|
|
78
|
-
)}
|
|
79
|
-
{children}
|
|
80
|
-
{logoOnDesktop &&
|
|
81
|
-
logoOnDesktopAlignment === 'right' && (
|
|
82
|
-
<a href="/" className="menu--desktop__logo-wrapper">
|
|
84
|
+
<div className="menu--desktop-wrapper">
|
|
85
|
+
<ul className={childModifiers}>
|
|
86
|
+
{logoOnDesktop && (
|
|
87
|
+
<a href="/" className="">
|
|
83
88
|
<img
|
|
84
89
|
src={logoOnMobileUrl}
|
|
85
90
|
alt={logoOnMobileAlt}
|
|
@@ -87,9 +92,11 @@ const Menu = ({
|
|
|
87
92
|
/>
|
|
88
93
|
</a>
|
|
89
94
|
)}
|
|
90
|
-
|
|
95
|
+
{children}
|
|
96
|
+
</ul>
|
|
97
|
+
</div>
|
|
91
98
|
</div>
|
|
92
|
-
|
|
99
|
+
</MenuContext.Provider>
|
|
93
100
|
);
|
|
94
101
|
};
|
|
95
102
|
|
|
@@ -1,35 +1,60 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
1
|
+
import React, { useState, useContext, useEffect } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import {
|
|
3
|
+
import { FaChevronDown, FaChevronUp } from 'react-icons/fa';
|
|
4
|
+
import { HOVER, MOUSE_ENTER, MOUSE_LEAVE, HIDDEN } from '../../constants';
|
|
4
5
|
import { hasChildren } from '../../helpers';
|
|
5
6
|
import BlazeLink from '../BlazeLink';
|
|
7
|
+
import MenuContext from '../Menu/MenuContext';
|
|
6
8
|
|
|
7
9
|
const MenuItem = ({ children, eventType, text, modifier, url }) => {
|
|
8
10
|
const [displayChildren, setDisplayChildren] = useState(false);
|
|
11
|
+
const { showMobileMenu } = useContext(MenuContext);
|
|
12
|
+
|
|
13
|
+
useEffect(
|
|
14
|
+
() => {
|
|
15
|
+
if (!showMobileMenu) setDisplayChildren(false);
|
|
16
|
+
},
|
|
17
|
+
[showMobileMenu]
|
|
18
|
+
);
|
|
19
|
+
|
|
9
20
|
const isHoverEvent = eventType === HOVER;
|
|
10
21
|
const childrenDisplayClass = displayChildren ? '' : HIDDEN;
|
|
11
22
|
|
|
12
23
|
const handleItemEvent = ({ type }) => {
|
|
13
24
|
if (isHoverEvent) {
|
|
14
|
-
if (type === MOUSE_ENTER)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
25
|
+
if (type === MOUSE_ENTER) {
|
|
26
|
+
setDisplayChildren(true);
|
|
27
|
+
}
|
|
28
|
+
if (type === MOUSE_LEAVE) {
|
|
29
|
+
setDisplayChildren(false);
|
|
30
|
+
}
|
|
19
31
|
}
|
|
20
32
|
};
|
|
21
33
|
const hasValidChildren = hasChildren(children);
|
|
22
34
|
|
|
23
35
|
return (
|
|
24
36
|
<li className={modifier} onMouseEnter={handleItemEvent} onMouseLeave={handleItemEvent}>
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
{
|
|
30
|
-
|
|
37
|
+
<div className="menu--item--link">
|
|
38
|
+
{url ? (
|
|
39
|
+
<BlazeLink href={url}>{text}</BlazeLink>
|
|
40
|
+
) : (
|
|
41
|
+
<span role="button" onClick={handleItemEvent}>
|
|
42
|
+
{text}
|
|
43
|
+
</span>
|
|
44
|
+
)}
|
|
45
|
+
{hasValidChildren && (
|
|
46
|
+
<i
|
|
47
|
+
role="button"
|
|
48
|
+
className="menu--item--link--icon"
|
|
49
|
+
onClick={() => setDisplayChildren(!displayChildren)}>
|
|
50
|
+
{displayChildren ? <FaChevronUp /> : <FaChevronDown />}
|
|
51
|
+
</i>
|
|
52
|
+
)}
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
{hasValidChildren && (
|
|
56
|
+
<div className={`menu--item-children ${childrenDisplayClass}`}>{children}</div>
|
|
31
57
|
)}
|
|
32
|
-
{hasValidChildren && <div className={childrenDisplayClass}>{children}</div>}
|
|
33
58
|
</li>
|
|
34
59
|
);
|
|
35
60
|
};
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { useRouter } from 'next/router';
|
|
4
|
+
import { useDebounceSearch } from '@blaze-cms/plugin-search-ui';
|
|
5
|
+
import SearchContentResults from './SearchContentResults';
|
|
6
|
+
import SearchContentToggleIcon from './SearchContentToggleIcon';
|
|
7
|
+
|
|
8
|
+
const SearchContent = ({
|
|
9
|
+
entities,
|
|
10
|
+
searchInputAlignment,
|
|
11
|
+
searchInputWrapperMobile,
|
|
12
|
+
searchInputWrapperDesktop,
|
|
13
|
+
collapsible,
|
|
14
|
+
isMobile,
|
|
15
|
+
placeholder,
|
|
16
|
+
modifier
|
|
17
|
+
}) => {
|
|
18
|
+
const [collapsed, setCollapsed] = useState(collapsible);
|
|
19
|
+
const router = useRouter();
|
|
20
|
+
|
|
21
|
+
const { results, searchTerm, setSearchTerm, debouncedSearchTerm } = useDebounceSearch({
|
|
22
|
+
entities,
|
|
23
|
+
initialSearchTerm: '',
|
|
24
|
+
resultKeys: 'id, name, image { url }, url'
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
useEffect(
|
|
28
|
+
() => {
|
|
29
|
+
const handleRouteChange = () => setSearchTerm('');
|
|
30
|
+
router.events.on('routeChangeStart', handleRouteChange);
|
|
31
|
+
|
|
32
|
+
return () => {
|
|
33
|
+
router.events.off('routeChangeStart', handleRouteChange);
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
[router.events, setSearchTerm]
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
const responsiveClasses = isMobile ? searchInputWrapperMobile : searchInputWrapperDesktop;
|
|
40
|
+
|
|
41
|
+
const handleClick = (e, url) => {
|
|
42
|
+
e.preventDefault();
|
|
43
|
+
router.push(url);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const handleKeyPress = e => {
|
|
47
|
+
if (e.key === 'Enter' && e.target.value !== '') {
|
|
48
|
+
router.push(`/search?search_term=${e.target.value}`);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
const handleOnBlur = () => {
|
|
53
|
+
if (!collapsible) return;
|
|
54
|
+
if (!debouncedSearchTerm || debouncedSearchTerm === '') setCollapsed(true);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const handleClearSearchResults = () => {
|
|
58
|
+
setSearchTerm('');
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const className = ['search-content', modifier, responsiveClasses].filter(Boolean).join(' ');
|
|
62
|
+
return collapsed ? (
|
|
63
|
+
<div className={className}>
|
|
64
|
+
<div className="search-content--collapse__wrapper">
|
|
65
|
+
<label className="search-content--collapse__label">
|
|
66
|
+
<span className="search-content--collapse__icon_wrapper">
|
|
67
|
+
<svg className="search-content--collapse__icon" viewBox="0 0 20 20">
|
|
68
|
+
<path
|
|
69
|
+
fillRule="evenodd"
|
|
70
|
+
d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z"
|
|
71
|
+
clipRule="evenodd"
|
|
72
|
+
/>
|
|
73
|
+
</svg>
|
|
74
|
+
</span>
|
|
75
|
+
<input
|
|
76
|
+
onFocus={() => setCollapsed(false)}
|
|
77
|
+
onChange={e => setSearchTerm(e.target.value)}
|
|
78
|
+
type="text"
|
|
79
|
+
name="search"
|
|
80
|
+
className="search-content--collapse__input"
|
|
81
|
+
/>
|
|
82
|
+
</label>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
) : (
|
|
86
|
+
<>
|
|
87
|
+
<div className={className}>
|
|
88
|
+
<div className="search-content--expanded__wrapper">
|
|
89
|
+
<label className="search-content--expanded__label">
|
|
90
|
+
<span className="search-content--expanded__icon_wrapper">
|
|
91
|
+
<SearchContentToggleIcon results={results} onClear={handleClearSearchResults} />
|
|
92
|
+
</span>
|
|
93
|
+
<input
|
|
94
|
+
type="text"
|
|
95
|
+
name="search"
|
|
96
|
+
onChange={e => setSearchTerm(e.target.value)}
|
|
97
|
+
onKeyPress={handleKeyPress}
|
|
98
|
+
className="search-content--expanded__input"
|
|
99
|
+
placeholder={placeholder}
|
|
100
|
+
value={searchTerm}
|
|
101
|
+
onBlur={handleOnBlur}
|
|
102
|
+
/>
|
|
103
|
+
</label>
|
|
104
|
+
</div>
|
|
105
|
+
<SearchContentResults
|
|
106
|
+
results={results}
|
|
107
|
+
debouncedSearchTerm={debouncedSearchTerm}
|
|
108
|
+
handleClick={handleClick}
|
|
109
|
+
/>
|
|
110
|
+
</div>
|
|
111
|
+
</>
|
|
112
|
+
);
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
SearchContent.propTypes = {
|
|
116
|
+
searchInputAlignment: PropTypes.string,
|
|
117
|
+
searchInputWrapperMobile: PropTypes.string,
|
|
118
|
+
searchInputWrapperDesktop: PropTypes.string,
|
|
119
|
+
placeholder: PropTypes.string,
|
|
120
|
+
isMobile: PropTypes.bool,
|
|
121
|
+
collapsible: PropTypes.bool,
|
|
122
|
+
entities: PropTypes.array.isRequired,
|
|
123
|
+
modifier: PropTypes.string
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
SearchContent.defaultProps = {
|
|
127
|
+
searchInputAlignment: '',
|
|
128
|
+
searchInputWrapperMobile: '',
|
|
129
|
+
searchInputWrapperDesktop: '',
|
|
130
|
+
placeholder: '',
|
|
131
|
+
isMobile: false,
|
|
132
|
+
collapsible: false,
|
|
133
|
+
modifier: ''
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
export default SearchContent;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import BlazeLink from '../BlazeLink';
|
|
3
|
+
import LazyImage from '../LazyImage';
|
|
4
|
+
|
|
5
|
+
const SearchContentItems = ({ results = [], onClick }) =>
|
|
6
|
+
results.map(item => {
|
|
7
|
+
if (!item.url) return null;
|
|
8
|
+
|
|
9
|
+
const { id, name, image, url } = item;
|
|
10
|
+
|
|
11
|
+
return (
|
|
12
|
+
<BlazeLink href={url} onClick={onClick} key={id}>
|
|
13
|
+
<div className="search-content--results__wrapper">
|
|
14
|
+
{image?.url ? (
|
|
15
|
+
<LazyImage
|
|
16
|
+
src={image.url}
|
|
17
|
+
alt={name}
|
|
18
|
+
className="search-content--results__image"
|
|
19
|
+
sizeKey="search-result"
|
|
20
|
+
/>
|
|
21
|
+
) : null}
|
|
22
|
+
<span className="search-content--results__title">{name}</span>
|
|
23
|
+
</div>
|
|
24
|
+
</BlazeLink>
|
|
25
|
+
);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
export default SearchContentItems;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import BlazeLink from '../BlazeLink';
|
|
3
|
+
import SearchContentItems from './SearchContentItems';
|
|
4
|
+
|
|
5
|
+
const SearchContentResults = ({ results, debouncedSearchTerm, onClick }) => {
|
|
6
|
+
if (debouncedSearchTerm !== '') {
|
|
7
|
+
return (
|
|
8
|
+
<div className="search-content--results__wrapper">
|
|
9
|
+
<div className="search-content--results__wrapper--message">
|
|
10
|
+
<div className="search-content--results__content">
|
|
11
|
+
{results.length === 0 && (
|
|
12
|
+
<div className="search-content--results__message">
|
|
13
|
+
<BlazeLink href={`/search?search_term=${debouncedSearchTerm}`}>
|
|
14
|
+
{`Search all results for: ${debouncedSearchTerm}`}
|
|
15
|
+
</BlazeLink>
|
|
16
|
+
</div>
|
|
17
|
+
)}
|
|
18
|
+
{results.length > 0 && <SearchContentItems results={results} onClick={onClick} />}
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export default SearchContentResults;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
const SearchContentToggleIcon = ({ results, onClear }) => {
|
|
4
|
+
if (results && results.length > 0) {
|
|
5
|
+
return (
|
|
6
|
+
<svg className="search-content--expanded__icon" viewBox="0 0 20 20" onClick={onClear}>
|
|
7
|
+
<path
|
|
8
|
+
fillRule="evenodd"
|
|
9
|
+
d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z"
|
|
10
|
+
clipRule="evenodd"
|
|
11
|
+
/>
|
|
12
|
+
</svg>
|
|
13
|
+
);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<svg className="search-content--expanded__icon" viewBox="0 0 20 20">
|
|
18
|
+
<path
|
|
19
|
+
fillRule="evenodd"
|
|
20
|
+
d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z"
|
|
21
|
+
clipRule="evenodd"
|
|
22
|
+
/>
|
|
23
|
+
</svg>
|
|
24
|
+
);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export default SearchContentToggleIcon;
|