@blaze-cms/react-page-builder 0.146.0-core-styles.0 → 0.146.0-core-styles.3
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 +12 -0
- package/lib/components/BackToTop/BackToTop.js +8 -13
- package/lib/components/BackToTop/BackToTop.js.map +1 -1
- package/lib/components/Card/Card.js +5 -3
- package/lib/components/Card/Card.js.map +1 -1
- package/lib/components/Card/CardsContainer.js +8 -4
- package/lib/components/Card/CardsContainer.js.map +1 -1
- package/lib/components/Card/CardsFactory.js +37 -7
- package/lib/components/Card/CardsFactory.js.map +1 -1
- package/lib/components/Card/CardsRender.js +8 -4
- package/lib/components/Card/CardsRender.js.map +1 -1
- package/lib/components/Card/helpers/index.js +6 -6
- package/lib/components/Card/helpers/index.js.map +1 -1
- package/lib/components/Carousel/CarouselImage/CarouselImage.js +3 -1
- package/lib/components/Carousel/CarouselImage/CarouselImage.js.map +1 -1
- package/lib/components/Carousel/CarouselImage/constants.js +9 -0
- package/lib/components/Carousel/CarouselImage/constants.js.map +1 -0
- package/lib/components/CarouselWrapper/DefaultCarousel.js +2 -0
- package/lib/components/CarouselWrapper/DefaultCarousel.js.map +1 -1
- package/lib/components/ContentGroup/ContentGroupTabs.js +1 -2
- package/lib/components/ContentGroup/ContentGroupTabs.js.map +1 -1
- package/lib/components/Image/GlobalLightbox/GlobalLightbox.js +3 -3
- package/lib/components/Image/GlobalLightbox/GlobalLightbox.js.map +1 -1
- package/lib/components/Image/GlobalLightbox/NavButton.js +6 -3
- package/lib/components/Image/GlobalLightbox/NavButton.js.map +1 -1
- package/lib/components/Image/Image.js +1 -0
- package/lib/components/Image/Image.js.map +1 -1
- package/lib/components/ItemList/ItemListNew/ItemListNew.js +1 -2
- package/lib/components/ItemList/ItemListNew/ItemListNew.js.map +1 -1
- package/lib/components/List/components/Cards/CardsRender.js.map +1 -1
- package/lib/components/List/components/Full/FullRender.js +2 -2
- package/lib/components/List/components/Full/FullRender.js.map +1 -1
- package/lib/components/Menu/Menu.js +1 -1
- package/lib/components/Menu/Menu.js.map +1 -1
- package/lib/components/MenuItem/MenuEntitiesItem.js +203 -0
- package/lib/components/MenuItem/MenuEntitiesItem.js.map +1 -0
- package/lib/components/MenuItem/MenuItem.js +25 -71
- package/lib/components/MenuItem/MenuItem.js.map +1 -1
- package/lib/components/MenuItem/MenuItemRender.js +103 -0
- package/lib/components/MenuItem/MenuItemRender.js.map +1 -0
- package/lib/components/SearchFilter/SearchFilter/FiltersList.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilter/MobileFormToolbar.js +1 -1
- package/lib/components/SearchFilter/SearchFilter/MobileFormToolbar.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilter/ResetDesktopForm.js +3 -3
- package/lib/components/SearchFilter/SearchFilter/ResetDesktopForm.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilter/SearchFilter.js +4 -3
- package/lib/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
- package/lib/components/SearchFilter/components/Checkbox.js +1 -1
- package/lib/components/SearchFilter/components/Checkbox.js.map +1 -1
- package/lib/components/SearchFilter/components/TextSearch.js +1 -0
- package/lib/components/SearchFilter/components/TextSearch.js.map +1 -1
- package/lib/components/Video/providers/Vimeo/VimeoProvider.js +0 -1
- package/lib/components/Video/providers/Vimeo/VimeoProvider.js.map +1 -1
- package/lib/{components/Card/helpers → helpers}/filter-query-setup.js +10 -7
- package/lib/helpers/filter-query-setup.js.map +1 -0
- package/lib/{components/Card/helpers → helpers}/filters-setup.js +8 -5
- package/lib/helpers/filters-setup.js.map +1 -0
- package/lib/helpers/get-updated-items-to-display.js.map +1 -0
- package/lib/helpers/get-updated-sort-properties.js.map +1 -0
- package/lib/helpers/index.js +42 -0
- package/lib/helpers/index.js.map +1 -1
- package/lib/helpers/should-return.js.map +1 -0
- package/lib/{components/Card/helpers → helpers}/should-skip-single-query.js +1 -1
- package/lib/helpers/should-skip-single-query.js.map +1 -0
- package/lib-es/components/BackToTop/BackToTop.js +11 -17
- package/lib-es/components/BackToTop/BackToTop.js.map +1 -1
- package/lib-es/components/Card/Card.js +5 -3
- package/lib-es/components/Card/Card.js.map +1 -1
- package/lib-es/components/Card/CardsContainer.js +9 -5
- package/lib-es/components/Card/CardsContainer.js.map +1 -1
- package/lib-es/components/Card/CardsFactory.js +40 -9
- package/lib-es/components/Card/CardsFactory.js.map +1 -1
- package/lib-es/components/Card/CardsRender.js +9 -5
- package/lib-es/components/Card/CardsRender.js.map +1 -1
- package/lib-es/components/Card/helpers/index.js +6 -6
- package/lib-es/components/Card/helpers/index.js.map +1 -1
- package/lib-es/components/Carousel/CarouselImage/CarouselImage.js +3 -1
- package/lib-es/components/Carousel/CarouselImage/CarouselImage.js.map +1 -1
- package/lib-es/components/Carousel/CarouselImage/constants.js +2 -0
- package/lib-es/components/Carousel/CarouselImage/constants.js.map +1 -0
- package/lib-es/components/CarouselWrapper/DefaultCarousel.js +2 -0
- package/lib-es/components/CarouselWrapper/DefaultCarousel.js.map +1 -1
- package/lib-es/components/ContentGroup/ContentGroupTabs.js +1 -2
- package/lib-es/components/ContentGroup/ContentGroupTabs.js.map +1 -1
- package/lib-es/components/Image/GlobalLightbox/GlobalLightbox.js +3 -3
- package/lib-es/components/Image/GlobalLightbox/GlobalLightbox.js.map +1 -1
- package/lib-es/components/Image/GlobalLightbox/NavButton.js +6 -3
- package/lib-es/components/Image/GlobalLightbox/NavButton.js.map +1 -1
- package/lib-es/components/Image/Image.js +1 -0
- package/lib-es/components/Image/Image.js.map +1 -1
- package/lib-es/components/ItemList/ItemListNew/ItemListNew.js +1 -2
- package/lib-es/components/ItemList/ItemListNew/ItemListNew.js.map +1 -1
- package/lib-es/components/List/components/Cards/CardsRender.js.map +1 -1
- package/lib-es/components/List/components/Full/FullRender.js +2 -2
- package/lib-es/components/List/components/Full/FullRender.js.map +1 -1
- package/lib-es/components/Menu/Menu.js +1 -1
- package/lib-es/components/Menu/Menu.js.map +1 -1
- package/lib-es/components/MenuItem/MenuEntitiesItem.js +177 -0
- package/lib-es/components/MenuItem/MenuEntitiesItem.js.map +1 -0
- package/lib-es/components/MenuItem/MenuItem.js +28 -60
- package/lib-es/components/MenuItem/MenuItem.js.map +1 -1
- package/lib-es/components/MenuItem/MenuItemRender.js +83 -0
- package/lib-es/components/MenuItem/MenuItemRender.js.map +1 -0
- package/lib-es/components/SearchFilter/SearchFilter/FiltersList.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilter/MobileFormToolbar.js +1 -1
- package/lib-es/components/SearchFilter/SearchFilter/MobileFormToolbar.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilter/ResetDesktopForm.js +3 -3
- package/lib-es/components/SearchFilter/SearchFilter/ResetDesktopForm.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js +4 -3
- package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
- package/lib-es/components/SearchFilter/components/Checkbox.js +1 -1
- package/lib-es/components/SearchFilter/components/Checkbox.js.map +1 -1
- package/lib-es/components/SearchFilter/components/TextSearch.js +1 -0
- package/lib-es/components/SearchFilter/components/TextSearch.js.map +1 -1
- package/lib-es/components/Video/providers/Vimeo/VimeoProvider.js +0 -1
- package/lib-es/components/Video/providers/Vimeo/VimeoProvider.js.map +1 -1
- package/lib-es/{components/Card/helpers → helpers}/filter-query-setup.js +5 -3
- package/lib-es/helpers/filter-query-setup.js.map +1 -0
- package/lib-es/{components/Card/helpers → helpers}/filters-setup.js +4 -2
- package/lib-es/helpers/filters-setup.js.map +1 -0
- package/lib-es/helpers/get-updated-items-to-display.js.map +1 -0
- package/lib-es/helpers/get-updated-sort-properties.js.map +1 -0
- package/lib-es/helpers/index.js +6 -0
- package/lib-es/helpers/index.js.map +1 -1
- package/lib-es/helpers/should-return.js.map +1 -0
- package/lib-es/{components/Card/helpers → helpers}/should-skip-single-query.js +1 -1
- package/lib-es/helpers/should-skip-single-query.js.map +1 -0
- package/package.json +4 -4
- package/src/components/BackToTop/BackToTop.js +6 -11
- package/src/components/Card/Card.js +4 -3
- package/src/components/Card/CardsContainer.js +7 -3
- package/src/components/Card/CardsFactory.js +34 -6
- package/src/components/Card/CardsRender.js +6 -2
- package/src/components/Card/helpers/index.js +6 -6
- package/src/components/Carousel/CarouselImage/CarouselImage.js +3 -1
- package/src/components/Carousel/CarouselImage/constants.js +1 -0
- package/src/components/CarouselWrapper/DefaultCarousel.js +2 -0
- package/src/components/ContentGroup/ContentGroupTabs.js +1 -3
- package/src/components/Image/GlobalLightbox/GlobalLightbox.js +3 -3
- package/src/components/Image/GlobalLightbox/NavButton.js +5 -3
- package/src/components/Image/Image.js +1 -0
- package/src/components/ItemList/ItemListNew/ItemListNew.js +1 -4
- package/src/components/List/components/Cards/CardsRender.js +2 -0
- package/src/components/List/components/Full/FullRender.js +2 -1
- package/src/components/Menu/Menu.js +1 -1
- package/src/components/MenuItem/MenuEntitiesItem.js +202 -0
- package/src/components/MenuItem/MenuItem.js +15 -65
- package/src/components/MenuItem/MenuItemRender.js +91 -0
- package/src/components/SearchFilter/SearchFilter/FiltersList.js +3 -0
- package/src/components/SearchFilter/SearchFilter/MobileFormToolbar.js +1 -1
- package/src/components/SearchFilter/SearchFilter/ResetDesktopForm.js +3 -2
- package/src/components/SearchFilter/SearchFilter/SearchFilter.js +10 -5
- package/src/components/SearchFilter/components/Checkbox.js +3 -1
- package/src/components/SearchFilter/components/TextSearch.js +1 -0
- package/src/components/Video/providers/Vimeo/VimeoProvider.js +0 -1
- package/src/{components/Card/helpers → helpers}/filter-query-setup.js +5 -3
- package/src/{components/Card/helpers → helpers}/filters-setup.js +5 -2
- package/src/helpers/index.js +6 -0
- package/src/{components/Card/helpers → helpers}/should-skip-single-query.js +1 -1
- package/tests/unit/src/components/BackToTop/BackToTop.test.js +9 -5
- package/tests/unit/src/components/BackToTop/__snapshots__/BackToTop.test.js.snap +1 -1
- package/tests/unit/src/components/Card/helpers/get-updated-items-to-display.test.js +1 -1
- package/tests/unit/src/components/Carousel/CarouselImage/__snapshots__/CarouselImage.test.js.snap +1 -1
- package/tests/unit/src/components/Carousel/__snapshots__/Carousel.test.js.snap +1 -1
- package/tests/unit/src/components/ContentGroup/__snapshots__/ContentGroupTabs.test.js.snap +4 -4
- package/tests/unit/src/components/ItemList/__snapshots__/ItemListNew.test.js.snap +0 -2
- package/tests/unit/src/components/MenuItem/MenuEntitiesItem.test.js +23 -0
- package/tests/unit/src/components/MenuItem/MenuItem.test.js +30 -11
- package/tests/unit/src/components/MenuItem/MenuItemRender.test.js +55 -0
- package/tests/unit/src/components/MenuItem/__snapshots__/MenuEntitiesItem.test.js.snap +3 -0
- package/tests/unit/src/components/MenuItem/__snapshots__/MenuItem.test.js.snap +5 -56
- package/tests/unit/src/components/MenuItem/mocks.js +71 -0
- package/tests/unit/src/components/SearchFilter/SearchFilter/__snapshots__/MobileFormToolbar.test.js.snap +1 -1
- package/tests/unit/src/components/SearchFilter/SearchFilter/__snapshots__/ResetDesktopForm.test.js.snap +1 -1
- package/tests/unit/src/components/SearchFilter/SearchFilter/__snapshots__/SearchFilter.test.js.snap +19 -17
- package/tests/unit/src/components/SearchFilter/components/__snapshots__/Select.test.js.snap +1 -0
- package/tests/unit/src/components/SearchFilter/components/__snapshots__/TextSearch.test.js.snap +1 -0
- package/tests/unit/src/components/SearchFilterSort/__snapshots__/SearchFilterSort.test.js.snap +1 -0
- package/tests/unit/src/components/Video/providers/Vimeo/__snapshots__/Vimeo.test.js.snap +0 -1
- package/lib/components/Card/helpers/filter-query-setup.js.map +0 -1
- package/lib/components/Card/helpers/filters-setup.js.map +0 -1
- package/lib/components/Card/helpers/get-updated-items-to-display.js.map +0 -1
- package/lib/components/Card/helpers/get-updated-sort-properties.js.map +0 -1
- package/lib/components/Card/helpers/should-return.js.map +0 -1
- package/lib/components/Card/helpers/should-skip-single-query.js.map +0 -1
- package/lib-es/components/Card/helpers/filter-query-setup.js.map +0 -1
- package/lib-es/components/Card/helpers/filters-setup.js.map +0 -1
- package/lib-es/components/Card/helpers/get-updated-items-to-display.js.map +0 -1
- package/lib-es/components/Card/helpers/get-updated-sort-properties.js.map +0 -1
- package/lib-es/components/Card/helpers/should-return.js.map +0 -1
- package/lib-es/components/Card/helpers/should-skip-single-query.js.map +0 -1
- /package/lib/{components/Card/helpers → helpers}/get-updated-items-to-display.js +0 -0
- /package/lib/{components/Card/helpers → helpers}/get-updated-sort-properties.js +0 -0
- /package/lib/{components/Card/helpers → helpers}/should-return.js +0 -0
- /package/lib-es/{components/Card/helpers → helpers}/get-updated-items-to-display.js +0 -0
- /package/lib-es/{components/Card/helpers → helpers}/get-updated-sort-properties.js +0 -0
- /package/lib-es/{components/Card/helpers → helpers}/should-return.js +0 -0
- /package/src/{components/Card/helpers → helpers}/get-updated-items-to-display.js +0 -0
- /package/src/{components/Card/helpers → helpers}/get-updated-sort-properties.js +0 -0
- /package/src/{components/Card/helpers → helpers}/should-return.js +0 -0
|
@@ -1,83 +1,33 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { hasChildren } from '../../helpers';
|
|
6
|
-
import BlazeLink from '../BlazeLink';
|
|
7
|
-
import MenuContext from '../Menu/MenuContext';
|
|
3
|
+
import MenuItemRender from './MenuItemRender';
|
|
4
|
+
import MenuEntitiesItem from './MenuEntitiesItem';
|
|
8
5
|
|
|
9
|
-
const MenuItem = ({
|
|
10
|
-
const
|
|
11
|
-
const { showMobileMenu } = useContext(MenuContext);
|
|
6
|
+
const MenuItem = ({ entities, parent, ...props }) => {
|
|
7
|
+
const hasEntities = entities && entities.length;
|
|
12
8
|
|
|
13
|
-
|
|
14
|
-
() => {
|
|
15
|
-
if (!showMobileMenu) setDisplayChildren(false);
|
|
16
|
-
},
|
|
17
|
-
[showMobileMenu]
|
|
18
|
-
);
|
|
9
|
+
if (!hasEntities) return <MenuItemRender parent={parent} {...props} />;
|
|
19
10
|
|
|
20
|
-
|
|
21
|
-
const childrenDisplayClass = displayChildren ? '' : HIDDEN;
|
|
22
|
-
|
|
23
|
-
const handleItemEvent = ({ type }) => {
|
|
24
|
-
if (isHoverEvent) {
|
|
25
|
-
if (type === MOUSE_ENTER) {
|
|
26
|
-
setDisplayChildren(true);
|
|
27
|
-
}
|
|
28
|
-
if (type === MOUSE_LEAVE) {
|
|
29
|
-
setDisplayChildren(false);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
const hasValidChildren = hasChildren(children);
|
|
34
|
-
|
|
35
|
-
return (
|
|
36
|
-
<li
|
|
37
|
-
className={modifier}
|
|
38
|
-
onMouseEnter={handleItemEvent}
|
|
39
|
-
onMouseLeave={handleItemEvent}
|
|
40
|
-
aria-label={text}>
|
|
41
|
-
<div className="menu--item--link">
|
|
42
|
-
{url ? (
|
|
43
|
-
<BlazeLink href={url}>{text}</BlazeLink>
|
|
44
|
-
) : (
|
|
45
|
-
<span role="button" onClick={handleItemEvent} aria-label={text}>
|
|
46
|
-
{text}
|
|
47
|
-
</span>
|
|
48
|
-
)}
|
|
49
|
-
{hasValidChildren && (
|
|
50
|
-
<i
|
|
51
|
-
role="button"
|
|
52
|
-
aria-label={
|
|
53
|
-
displayChildren ? `Collapse ${text} menu items` : `Expand ${text} menu items`
|
|
54
|
-
}
|
|
55
|
-
className="menu--item--link--icon"
|
|
56
|
-
onClick={() => setDisplayChildren(!displayChildren)}>
|
|
57
|
-
{displayChildren ? <FaChevronUp /> : <FaChevronDown />}
|
|
58
|
-
</i>
|
|
59
|
-
)}
|
|
60
|
-
</div>
|
|
61
|
-
{hasValidChildren && (
|
|
62
|
-
<div className={`menu--item-children ${childrenDisplayClass}`}>{children}</div>
|
|
63
|
-
)}
|
|
64
|
-
</li>
|
|
65
|
-
);
|
|
11
|
+
return <MenuEntitiesItem entities={entities} parent={parent} {...props} />;
|
|
66
12
|
};
|
|
67
13
|
|
|
68
14
|
MenuItem.propTypes = {
|
|
15
|
+
children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),
|
|
16
|
+
eventType: PropTypes.string.isRequired,
|
|
69
17
|
modifier: PropTypes.string,
|
|
18
|
+
parent: PropTypes.object,
|
|
70
19
|
text: PropTypes.string,
|
|
71
20
|
url: PropTypes.string,
|
|
72
|
-
|
|
73
|
-
children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])
|
|
21
|
+
entities: PropTypes.array
|
|
74
22
|
};
|
|
75
23
|
|
|
76
24
|
MenuItem.defaultProps = {
|
|
77
|
-
|
|
25
|
+
children: null,
|
|
78
26
|
modifier: '',
|
|
27
|
+
parent: {},
|
|
79
28
|
text: '',
|
|
80
|
-
|
|
29
|
+
url: '',
|
|
30
|
+
entities: []
|
|
81
31
|
};
|
|
82
32
|
|
|
83
33
|
export default MenuItem;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import React, { useState, useContext, useEffect } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { FaChevronDown, FaChevronUp } from 'react-icons/fa';
|
|
4
|
+
import { useStringTemplate } from '@blaze-cms/utils-handlebars';
|
|
5
|
+
import { HOVER, MOUSE_ENTER, MOUSE_LEAVE, HIDDEN } from '../../constants';
|
|
6
|
+
import { hasChildren } from '../../helpers';
|
|
7
|
+
import BlazeLink from '../BlazeLink';
|
|
8
|
+
import MenuContext from '../Menu/MenuContext';
|
|
9
|
+
|
|
10
|
+
const MenuItemRender = ({ children, eventType, text, modifier, url, parent }) => {
|
|
11
|
+
const [displayChildren, setDisplayChildren] = useState(false);
|
|
12
|
+
const { showMobileMenu } = useContext(MenuContext);
|
|
13
|
+
const {
|
|
14
|
+
loading: loadingText,
|
|
15
|
+
data: [textToUse]
|
|
16
|
+
} = useStringTemplate(parent, [text]);
|
|
17
|
+
|
|
18
|
+
const {
|
|
19
|
+
loading: loadingUrl,
|
|
20
|
+
data: [urlToUse]
|
|
21
|
+
} = useStringTemplate(parent, [url]);
|
|
22
|
+
|
|
23
|
+
useEffect(
|
|
24
|
+
() => {
|
|
25
|
+
if (!showMobileMenu) setDisplayChildren(false);
|
|
26
|
+
},
|
|
27
|
+
[showMobileMenu]
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
if (loadingUrl || loadingText) return '';
|
|
31
|
+
|
|
32
|
+
const isHoverEvent = eventType === HOVER;
|
|
33
|
+
const childrenDisplayClass = displayChildren ? '' : HIDDEN;
|
|
34
|
+
|
|
35
|
+
const handleItemEvent = ({ type }) => {
|
|
36
|
+
if (isHoverEvent) {
|
|
37
|
+
if (type === MOUSE_ENTER) {
|
|
38
|
+
setDisplayChildren(true);
|
|
39
|
+
}
|
|
40
|
+
if (type === MOUSE_LEAVE) {
|
|
41
|
+
setDisplayChildren(false);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const hasValidChildren = hasChildren(children);
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<li className={modifier} onMouseEnter={handleItemEvent} onMouseLeave={handleItemEvent}>
|
|
49
|
+
<div className="menu--item--link">
|
|
50
|
+
{urlToUse ? (
|
|
51
|
+
<BlazeLink href={urlToUse}>{textToUse}</BlazeLink>
|
|
52
|
+
) : (
|
|
53
|
+
<span role="button" onClick={handleItemEvent}>
|
|
54
|
+
{textToUse}
|
|
55
|
+
</span>
|
|
56
|
+
)}
|
|
57
|
+
{hasValidChildren && (
|
|
58
|
+
<i
|
|
59
|
+
role="button"
|
|
60
|
+
className="menu--item--link--icon"
|
|
61
|
+
onClick={() => setDisplayChildren(!displayChildren)}>
|
|
62
|
+
{displayChildren ? <FaChevronUp /> : <FaChevronDown />}
|
|
63
|
+
</i>
|
|
64
|
+
)}
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
{hasValidChildren && (
|
|
68
|
+
<div className={`menu--item-children ${childrenDisplayClass}`}>{children}</div>
|
|
69
|
+
)}
|
|
70
|
+
</li>
|
|
71
|
+
);
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
MenuItemRender.propTypes = {
|
|
75
|
+
modifier: PropTypes.string,
|
|
76
|
+
text: PropTypes.string,
|
|
77
|
+
url: PropTypes.string,
|
|
78
|
+
eventType: PropTypes.string.isRequired,
|
|
79
|
+
parent: PropTypes.object,
|
|
80
|
+
children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
MenuItemRender.defaultProps = {
|
|
84
|
+
url: '',
|
|
85
|
+
modifier: '',
|
|
86
|
+
text: '',
|
|
87
|
+
children: null,
|
|
88
|
+
parent: {}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
export default MenuItemRender;
|
|
@@ -38,6 +38,7 @@ const FiltersList = ({
|
|
|
38
38
|
/>
|
|
39
39
|
</div>
|
|
40
40
|
);
|
|
41
|
+
|
|
41
42
|
case CHECKBOX:
|
|
42
43
|
return (
|
|
43
44
|
<div
|
|
@@ -56,6 +57,7 @@ const FiltersList = ({
|
|
|
56
57
|
/>
|
|
57
58
|
</div>
|
|
58
59
|
);
|
|
60
|
+
|
|
59
61
|
case SELECT:
|
|
60
62
|
return (
|
|
61
63
|
<div
|
|
@@ -74,6 +76,7 @@ const FiltersList = ({
|
|
|
74
76
|
/>
|
|
75
77
|
</div>
|
|
76
78
|
);
|
|
79
|
+
|
|
77
80
|
case RANGE:
|
|
78
81
|
return (
|
|
79
82
|
!!areAggregationsAvailable && (
|
|
@@ -10,13 +10,14 @@ const ResetDesktopForm = ({ handleReset }) => (
|
|
|
10
10
|
className="icon-button icon-button--reset"
|
|
11
11
|
title="reset--button"
|
|
12
12
|
data-testid="reset-icon"
|
|
13
|
-
onClick={handleReset}
|
|
13
|
+
onClick={handleReset}
|
|
14
|
+
aria-label="Reset search filters">
|
|
14
15
|
<i>
|
|
15
16
|
<FaRedoAlt />
|
|
16
17
|
</i>
|
|
17
18
|
</button>
|
|
18
19
|
|
|
19
|
-
<div role="button" onClick={handleReset} data-testid="reset-button"
|
|
20
|
+
<div role="button" onClick={handleReset} data-testid="reset-button">
|
|
20
21
|
{RESET}
|
|
21
22
|
</div>
|
|
22
23
|
</div>
|
|
@@ -152,6 +152,11 @@ const SearchFilter = ({
|
|
|
152
152
|
data-testId="search-filter-desktop-toggler"
|
|
153
153
|
className={moreFiltersDesktopTogglerClass}
|
|
154
154
|
type="button"
|
|
155
|
+
aria-label={
|
|
156
|
+
moreFiltersDesktopCollapsed
|
|
157
|
+
? 'Show more search filters'
|
|
158
|
+
: 'Show less search filters'
|
|
159
|
+
}
|
|
155
160
|
onClick={() =>
|
|
156
161
|
setMoreFiltersDesktopCollapsed(!moreFiltersDesktopCollapsed)
|
|
157
162
|
}>
|
|
@@ -206,11 +211,11 @@ const SearchFilter = ({
|
|
|
206
211
|
|
|
207
212
|
{isCollapsedOnResponsive &&
|
|
208
213
|
!displaySearchFilter && (
|
|
209
|
-
<div
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
+
<div
|
|
215
|
+
className="filter__refine filter__refine--mobile-close"
|
|
216
|
+
data-testid="refine-mobile"
|
|
217
|
+
aria-label="Toggle Search Filter">
|
|
218
|
+
<div role="button" onClick={() => setDisplaySearchFilter(true)}>
|
|
214
219
|
{REFINE}
|
|
215
220
|
</div>
|
|
216
221
|
</div>
|
|
@@ -84,7 +84,9 @@ const Checkbox = ({
|
|
|
84
84
|
role="button"
|
|
85
85
|
className="see-more"
|
|
86
86
|
onClick={handleCheckboxOptions}
|
|
87
|
-
aria-label={
|
|
87
|
+
aria-label={
|
|
88
|
+
shouldDisplayMore ? `See ${MORE} ${label} options` : `See ${LESS} ${label} options`
|
|
89
|
+
}>
|
|
88
90
|
{shouldDisplayMore ? (
|
|
89
91
|
<>
|
|
90
92
|
<i>
|
|
@@ -22,6 +22,7 @@ const TextSearch = ({ label, searchValue, updateFilterValues, elementTitle }) =>
|
|
|
22
22
|
<button
|
|
23
23
|
type="button"
|
|
24
24
|
className="icon-button icon-button--search"
|
|
25
|
+
aria-label="Search"
|
|
25
26
|
onClick={e => {
|
|
26
27
|
e.preventDefault();
|
|
27
28
|
updateFilterValues({ [SEARCH_TERM]: searchValue }, true);
|
|
@@ -51,7 +51,6 @@ const VimeoProvider = ({ url, autoplay, loop, imageData }) => {
|
|
|
51
51
|
role="button"
|
|
52
52
|
className={VIDEO_WRAPPER_CLASS_NAME}
|
|
53
53
|
style={videoStyle}
|
|
54
|
-
aria-label="Open video"
|
|
55
54
|
onClick={() => !shouldRenderVideo && setShouldRenderVideo(true)}>
|
|
56
55
|
{shouldRenderVideo && !videoError && wrappedCode}
|
|
57
56
|
{videoError && videoError.message}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { getStringTypeProps } from '@blaze-cms/utils/src/helpers';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
2
|
+
import getGenericRenderVariables from './get-generic-render-variables';
|
|
3
|
+
import buildRawQueryBase from './build-raw-query-base';
|
|
4
|
+
import buildSetFilters from './build-set-filters';
|
|
5
|
+
import { DEFAULT_LIMIT } from '../constants';
|
|
4
6
|
|
|
5
7
|
const filterQuerySetup = ({
|
|
6
8
|
getEntitySchemas,
|
|
@@ -13,7 +15,7 @@ const filterQuerySetup = ({
|
|
|
13
15
|
itemsToDisplay,
|
|
14
16
|
entitySameAsCurrentItemEntity,
|
|
15
17
|
entitySchema,
|
|
16
|
-
useRandomSort
|
|
18
|
+
useRandomSort = false
|
|
17
19
|
}) => {
|
|
18
20
|
const stringProps = getStringTypeProps(entity, filterEntityRelations, getEntitySchemas);
|
|
19
21
|
const filterValues =
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import buildQueryFields from './build-query-fields';
|
|
2
|
+
import getInheritedFilters from './get-inherited-filters';
|
|
3
|
+
import getQueryProps from './get-query-props';
|
|
4
|
+
import { getSearchPublishedContent } from '../application/query';
|
|
3
5
|
|
|
4
6
|
const filtersSetup = ({
|
|
5
7
|
entityFields,
|
|
@@ -16,6 +18,7 @@ const filtersSetup = ({
|
|
|
16
18
|
const fields = buildQueryFields(entityFields, entityTypes, isFull);
|
|
17
19
|
const action = getSearchPublishedContent(fields);
|
|
18
20
|
const inheritedFilters = getInheritedFilters(filterBy, filterByProperty);
|
|
21
|
+
|
|
19
22
|
const entitySameAsCurrentItemEntity = entities.includes(itemEntityUpdated);
|
|
20
23
|
const { relations: filterEntityRelations = [] } = filterEntitySchema;
|
|
21
24
|
const queryProps = getQueryProps(inheritedFilters, currentSchema, filterEntitySchema);
|
package/src/helpers/index.js
CHANGED
|
@@ -53,5 +53,11 @@ export { default as appendImages } from './append-images';
|
|
|
53
53
|
export { default as parseTextBlock } from './parse-TextBlock';
|
|
54
54
|
export { default as processDataSummaryValue } from './process-data-summary-value';
|
|
55
55
|
export { default as buildQueryKey } from './build-query-key';
|
|
56
|
+
export { default as filterQuerySetup } from './filter-query-setup';
|
|
57
|
+
export { default as filtersSetup } from './filters-setup';
|
|
58
|
+
export { default as getUpdatedItemsToDisplay } from './get-updated-items-to-display';
|
|
59
|
+
export { default as getUpdatedSortProperties } from './get-updated-sort-properties';
|
|
60
|
+
export { default as shouldReturn } from './should-return';
|
|
61
|
+
export { default as shouldSkipSingleQuery } from './should-skip-single-query';
|
|
56
62
|
export { default as buildRawQueryStringified } from './build-raw-query-stringified';
|
|
57
63
|
export { default as buildFiltersQuery } from './build-filters-query';
|
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @jest-environment jsdom
|
|
3
3
|
*/
|
|
4
|
+
import React from 'react';
|
|
4
5
|
import '@testing-library/jest-dom/extend-expect';
|
|
5
|
-
import { render } from '@
|
|
6
|
+
import { render, screen } from '@testing-library/react';
|
|
6
7
|
import BackToTop from '../../../../../src/components/BackToTop';
|
|
7
8
|
|
|
8
|
-
describe('
|
|
9
|
+
describe('BackToTop component', () => {
|
|
9
10
|
it('should be a function', () => {
|
|
10
11
|
expect(typeof BackToTop).toEqual('function');
|
|
11
12
|
});
|
|
12
13
|
|
|
13
14
|
it('should render without throwing an error and match snapshot', () => {
|
|
14
|
-
const { asFragment } = render(BackToTop
|
|
15
|
-
showAfterPixels: 500
|
|
16
|
-
});
|
|
15
|
+
const { asFragment } = render(<BackToTop showAfterPixels={500} />);
|
|
17
16
|
expect(asFragment()).toMatchSnapshot();
|
|
18
17
|
});
|
|
18
|
+
|
|
19
|
+
it('should not render the button initially', () => {
|
|
20
|
+
render(<BackToTop showAfterPixels={500} />);
|
|
21
|
+
expect(screen.queryByRole('link', { name: /back to top/i })).not.toBeInTheDocument();
|
|
22
|
+
});
|
|
19
23
|
});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`
|
|
3
|
+
exports[`BackToTop component should render without throwing an error and match snapshot 1`] = `<DocumentFragment />`;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '@testing-library/jest-dom/extend-expect';
|
|
2
|
-
import getUpdatedItemsToDisplay from '../../../../../../src/
|
|
2
|
+
import getUpdatedItemsToDisplay from '../../../../../../src/helpers/get-updated-items-to-display';
|
|
3
3
|
|
|
4
4
|
const mockedProps = {
|
|
5
5
|
itemsToDisplay: [
|
|
@@ -11,7 +11,7 @@ exports[`ContentGroupTabs component should match snapshot and render sidepanel c
|
|
|
11
11
|
role="tablist"
|
|
12
12
|
>
|
|
13
13
|
<button
|
|
14
|
-
aria-controls="
|
|
14
|
+
aria-controls="section-one"
|
|
15
15
|
aria-selected="true"
|
|
16
16
|
class="content-group-sidepanel__button--is-active"
|
|
17
17
|
id="tab-section-one"
|
|
@@ -21,7 +21,7 @@ exports[`ContentGroupTabs component should match snapshot and render sidepanel c
|
|
|
21
21
|
sectionOne
|
|
22
22
|
</button>
|
|
23
23
|
<button
|
|
24
|
-
aria-controls="
|
|
24
|
+
aria-controls="section-two"
|
|
25
25
|
aria-selected="false"
|
|
26
26
|
class="content-group-sidepanel__button"
|
|
27
27
|
id="tab-section-two"
|
|
@@ -57,7 +57,7 @@ exports[`ContentGroupTabs component should match snapshot and render tabs conten
|
|
|
57
57
|
role="tablist"
|
|
58
58
|
>
|
|
59
59
|
<button
|
|
60
|
-
aria-controls="
|
|
60
|
+
aria-controls="section-one"
|
|
61
61
|
aria-selected="true"
|
|
62
62
|
class="content-group-tabs__button--is-active"
|
|
63
63
|
id="tab-section-one"
|
|
@@ -67,7 +67,7 @@ exports[`ContentGroupTabs component should match snapshot and render tabs conten
|
|
|
67
67
|
sectionOne
|
|
68
68
|
</button>
|
|
69
69
|
<button
|
|
70
|
-
aria-controls="
|
|
70
|
+
aria-controls="section-two"
|
|
71
71
|
aria-selected="false"
|
|
72
72
|
class="content-group-tabs__button"
|
|
73
73
|
id="tab-section-two"
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
exports[`ItemListNew component should match snapshot and render without throwing an error 1`] = `
|
|
4
4
|
<DocumentFragment>
|
|
5
5
|
<button
|
|
6
|
-
aria-label="Create new list_name"
|
|
7
6
|
class="item-list-new button"
|
|
8
7
|
type="button"
|
|
9
8
|
>
|
|
@@ -19,7 +18,6 @@ exports[`ItemListNew component should not render if list not found 1`] = `<Docum
|
|
|
19
18
|
exports[`ItemListNew component should render using listId from query 1`] = `
|
|
20
19
|
<DocumentFragment>
|
|
21
20
|
<button
|
|
22
|
-
aria-label="Create new QUERY-LIST-ID"
|
|
23
21
|
class="item-list-new button"
|
|
24
22
|
type="button"
|
|
25
23
|
>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @jest-environment jsdom
|
|
3
|
+
*/
|
|
4
|
+
import '@testing-library/jest-dom/extend-expect';
|
|
5
|
+
import { render } from '@testing-library/react';
|
|
6
|
+
import MenuEntitiesItem from '../../../../../src/components/MenuItem/MenuEntitiesItem';
|
|
7
|
+
import { MOCKED_MENUITEMS_PROPS } from './mocks';
|
|
8
|
+
|
|
9
|
+
jest.mock('@apollo/client', () => ({
|
|
10
|
+
...jest.requireActual('@apollo/client'),
|
|
11
|
+
useQuery: jest.fn(({ data, loading, error, fetchMore }) => ({ data, loading, error, fetchMore }))
|
|
12
|
+
}));
|
|
13
|
+
|
|
14
|
+
jest.mock('@blaze-cms/utils-handlebars', () => ({
|
|
15
|
+
useStringTemplate: jest.fn((parent, [title]) => ({ loading: false, data: [title] }))
|
|
16
|
+
}));
|
|
17
|
+
|
|
18
|
+
describe('MenuEntitiesItem component', () => {
|
|
19
|
+
it('should render based on listData received', async () => {
|
|
20
|
+
const { asFragment } = await render(MenuEntitiesItem, MOCKED_MENUITEMS_PROPS);
|
|
21
|
+
expect(asFragment()).toMatchSnapshot();
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -6,25 +6,44 @@ import { render } from '@blaze-cms/tools/test-helpers/test-functions';
|
|
|
6
6
|
import '@testing-library/jest-dom/extend-expect';
|
|
7
7
|
import MenuItem from '../../../../../src/components/MenuItem';
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
jest.mock('@apollo/client', () => ({
|
|
10
|
+
...jest.requireActual('@apollo/client'),
|
|
11
|
+
useQuery: jest.fn(({ data, loading, error, fetchMore }) => ({ data, loading, error, fetchMore }))
|
|
12
|
+
}));
|
|
13
|
+
|
|
14
|
+
jest.mock('@blaze-cms/utils-handlebars', () => ({
|
|
15
|
+
useStringTemplate: jest.fn((parent, [title]) => ({ loading: false, data: [title] }))
|
|
16
|
+
}));
|
|
17
|
+
|
|
18
|
+
const componentProps = {
|
|
19
|
+
id: 'id',
|
|
20
|
+
name: 'mock name',
|
|
10
21
|
eventType: 'hover',
|
|
11
|
-
|
|
22
|
+
url: '/search?category.name={{currentParent.name}}',
|
|
23
|
+
text: 'Category: {{currentParent.name}}',
|
|
24
|
+
entity: 'page',
|
|
25
|
+
parent: {
|
|
26
|
+
itemEntity: 'page',
|
|
27
|
+
itemId: 'item-id'
|
|
28
|
+
},
|
|
29
|
+
category: {
|
|
30
|
+
publishedListingPage: {
|
|
31
|
+
url: 'published-url'
|
|
32
|
+
},
|
|
33
|
+
name: 'Category name'
|
|
34
|
+
},
|
|
12
35
|
modifier: 'menu-item-mod',
|
|
13
36
|
children: [
|
|
14
37
|
<div className="child_1" key="1" component={{ type: 'menuitem' }}>
|
|
15
|
-
|
|
38
|
+
menu child
|
|
16
39
|
</div>
|
|
17
|
-
]
|
|
40
|
+
],
|
|
41
|
+
displayCategory: true
|
|
18
42
|
};
|
|
19
43
|
|
|
20
44
|
describe('MenuItem component', () => {
|
|
21
|
-
it('should render
|
|
22
|
-
const { asFragment } = render(MenuItem,
|
|
23
|
-
expect(asFragment()).toMatchSnapshot();
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
it('should render link if url is passed', () => {
|
|
27
|
-
const { asFragment } = render(MenuItem, { ...props, url: '/somewhere' });
|
|
45
|
+
it('should render a MenuItem based on passed parameters', async () => {
|
|
46
|
+
const { asFragment } = await render(MenuItem, componentProps);
|
|
28
47
|
expect(asFragment()).toMatchSnapshot();
|
|
29
48
|
});
|
|
30
49
|
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @jest-environment jsdom
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import { render, fireEvent } from '@testing-library/react';
|
|
7
|
+
import '@testing-library/jest-dom/extend-expect';
|
|
8
|
+
import MenuRender from '../../../../../src/components/MenuItem/MenuItemRender';
|
|
9
|
+
|
|
10
|
+
jest.mock('@blaze-cms/utils-handlebars', () => ({
|
|
11
|
+
useStringTemplate: jest.fn((parent, [title]) => ({ loadig: false, data: [title] }))
|
|
12
|
+
}));
|
|
13
|
+
|
|
14
|
+
describe('MenuRender component', () => {
|
|
15
|
+
it('renders menu item with link when URL is provided', () => {
|
|
16
|
+
const { getByText } = render(<MenuRender eventType="click" text="Home" url="/home" />);
|
|
17
|
+
const linkElement = getByText('Home');
|
|
18
|
+
expect(linkElement).toBeInTheDocument();
|
|
19
|
+
expect(linkElement.tagName).toBe('A');
|
|
20
|
+
expect(linkElement.getAttribute('href')).toBe('/home');
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('renders menu item without link when URL is not provided', () => {
|
|
24
|
+
const { getByText } = render(<MenuRender eventType="click" text="About" />);
|
|
25
|
+
const spanElement = getByText('About');
|
|
26
|
+
expect(spanElement).toBeInTheDocument();
|
|
27
|
+
expect(spanElement.tagName).toBe('SPAN');
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('toggles display of children on mouse enter and leave events', () => {
|
|
31
|
+
const { getByText, getByTestId } = render(
|
|
32
|
+
<MenuRender eventType="hover" text="Parent">
|
|
33
|
+
<div data-testid="child">Child</div>
|
|
34
|
+
</MenuRender>
|
|
35
|
+
);
|
|
36
|
+
const parentElement = getByText('Parent');
|
|
37
|
+
const childElement = getByTestId('child');
|
|
38
|
+
|
|
39
|
+
fireEvent.mouseEnter(parentElement);
|
|
40
|
+
expect(childElement).toBeInTheDocument();
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it('toggles display of children on click event when URL is not provided', () => {
|
|
44
|
+
const { getByText, getByTestId } = render(
|
|
45
|
+
<MenuRender eventType="click" text="Parent">
|
|
46
|
+
<div data-testid="child">Child</div>
|
|
47
|
+
</MenuRender>
|
|
48
|
+
);
|
|
49
|
+
const parentElement = getByText('Parent');
|
|
50
|
+
const childElement = getByTestId('child');
|
|
51
|
+
|
|
52
|
+
fireEvent.click(parentElement);
|
|
53
|
+
expect(childElement).toBeInTheDocument();
|
|
54
|
+
});
|
|
55
|
+
});
|