@blaze-cms/react-page-builder 0.146.0-core-styles.60 → 0.146.0-core-styles.62

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.
Files changed (36) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/lib/HOC/withInfiniteScroll.js +5 -5
  3. package/lib/HOC/withInfiniteScroll.js.map +1 -1
  4. package/lib/components/Button.js +57 -11
  5. package/lib/components/Button.js.map +1 -1
  6. package/lib/components/List/ListFactory.js.map +1 -1
  7. package/lib/components/MenuItem/MenuItemRender.js +17 -5
  8. package/lib/components/MenuItem/MenuItemRender.js.map +1 -1
  9. package/lib/components/Video/providers/Vimeo/VimeoProvider.js +14 -14
  10. package/lib/components/Video/providers/Vimeo/VimeoProvider.js.map +1 -1
  11. package/lib/hooks/helpers/StoreImages.js +61 -41
  12. package/lib/hooks/helpers/StoreImages.js.map +1 -1
  13. package/lib/hooks/use-page-builder.js +2 -2
  14. package/lib/hooks/use-page-builder.js.map +1 -1
  15. package/lib/variants/LiveBlogList/LiveBlogList.js +45 -48
  16. package/lib/variants/LiveBlogList/LiveBlogList.js.map +1 -1
  17. package/lib-es/components/Button.js +12 -7
  18. package/lib-es/components/Button.js.map +1 -1
  19. package/lib-es/components/List/ListFactory.js +1 -1
  20. package/lib-es/components/List/ListFactory.js.map +1 -1
  21. package/lib-es/components/MenuItem/MenuItemRender.js +16 -3
  22. package/lib-es/components/MenuItem/MenuItemRender.js.map +1 -1
  23. package/lib-es/hooks/helpers/StoreImages.js +44 -30
  24. package/lib-es/hooks/helpers/StoreImages.js.map +1 -1
  25. package/lib-es/variants/LiveBlogList/LiveBlogList.js +41 -51
  26. package/lib-es/variants/LiveBlogList/LiveBlogList.js.map +1 -1
  27. package/package.json +3 -3
  28. package/src/components/Button.js +13 -9
  29. package/src/components/List/ListFactory.js +1 -1
  30. package/src/components/MenuItem/MenuItemRender.js +17 -3
  31. package/src/hooks/helpers/StoreImages.js +33 -31
  32. package/src/variants/LiveBlogList/LiveBlogList.js +51 -47
  33. package/tests/unit/src/components/MenuItem/MenuItemRender.test.js +25 -2
  34. package/tests/unit/src/components/MenuItem/__snapshots__/MenuItem.test.js.snap +1 -0
  35. package/tests/unit/src/variants/LiveBlogList/LiveBlogList.test.js +121 -0
  36. package/tests/unit/src/variants/LiveBlogList/constants.js +10 -0
@@ -1,3 +1,4 @@
1
+ /* eslint-disable jsx-a11y/no-static-element-interactions */
1
2
  import React, { useState, useContext, useEffect } from 'react';
2
3
  import PropTypes from 'prop-types';
3
4
  import { FaChevronDown, FaChevronUp } from 'react-icons/fa';
@@ -35,6 +36,7 @@ const MenuItemRender = ({
35
36
  const isActive = router ? isUrlPathMatch(router.asPath, urlToUse) : false;
36
37
  const isActiveParent = router ? hasActiveChild(router.asPath, children) : false;
37
38
  const shouldPreOpen = openActiveSubmenus && isActiveParent && isClickEvent;
39
+ const hasValidChildren = hasChildren(children);
38
40
  const [displayChildren, setDisplayChildren] = useState(shouldPreOpen);
39
41
  useEffect(() => {
40
42
  if (!showMobileMenu && !shouldPreOpen) setDisplayChildren(false);
@@ -58,7 +60,11 @@ const MenuItemRender = ({
58
60
  }
59
61
  }
60
62
  };
61
- const hasValidChildren = hasChildren(children);
63
+ const handleMobileClick = () => {
64
+ if (!urlToUse && hasValidChildren) {
65
+ setDisplayChildren(!displayChildren);
66
+ }
67
+ };
62
68
  const menuItemLinkClassname = classnames('menu--item--link', {
63
69
  'menu--item--link--active': isActive,
64
70
  'menu--item--link--active-parent': isActiveParent
@@ -68,7 +74,10 @@ const MenuItemRender = ({
68
74
  onMouseEnter: handleItemEvent,
69
75
  onMouseLeave: handleItemEvent
70
76
  }, /*#__PURE__*/React.createElement("div", {
71
- className: menuItemLinkClassname
77
+ className: menuItemLinkClassname,
78
+ onClick: handleMobileClick,
79
+ role: !urlToUse && hasValidChildren ? 'button' : undefined,
80
+ tabIndex: !urlToUse && hasValidChildren ? 0 : undefined
72
81
  }, urlToUse ? /*#__PURE__*/React.createElement(BlazeLink, {
73
82
  href: urlToUse
74
83
  }, textToUse) : /*#__PURE__*/React.createElement("span", {
@@ -77,7 +86,11 @@ const MenuItemRender = ({
77
86
  }, textToUse), hasValidChildren && /*#__PURE__*/React.createElement("i", {
78
87
  role: "button",
79
88
  className: "menu--item--link--icon",
80
- onClick: () => setDisplayChildren(!displayChildren)
89
+ onClick: e => {
90
+ e.stopPropagation();
91
+ setDisplayChildren(!displayChildren);
92
+ },
93
+ tabIndex: 0
81
94
  }, displayChildren ? /*#__PURE__*/React.createElement(FaChevronUp, null) : /*#__PURE__*/React.createElement(FaChevronDown, null))), hasValidChildren && /*#__PURE__*/React.createElement("div", {
82
95
  className: `menu--item-children ${childrenDisplayClass}`
83
96
  }, children));
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItemRender.js","names":["React","useState","useContext","useEffect","PropTypes","FaChevronDown","FaChevronUp","classnames","useRouter","useStringTemplate","HOVER","MOUSE_ENTER","MOUSE_LEAVE","HIDDEN","CLICK","hasChildren","BlazeLink","MenuContext","injectHelperIntoTemplate","isUrlPathMatch","hasActiveChild","MenuItemRender","children","eventType","text","modifier","url","parent","router","showMobileMenu","openActiveSubmenus","isHoverEvent","isClickEvent","loading","loadingText","data","textToUse","loadingUrl","urlToUse","isActive","asPath","isActiveParent","shouldPreOpen","displayChildren","setDisplayChildren","childrenDisplayClass","handleItemEvent","type","hasValidChildren","menuItemLinkClassname","createElement","className","onMouseEnter","onMouseLeave","href","role","onClick","propTypes","string","isRequired","object","oneOfType","arrayOf","node","defaultProps"],"sources":["../../../src/components/MenuItem/MenuItemRender.js"],"sourcesContent":["import React, { useState, useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { FaChevronDown, FaChevronUp } from 'react-icons/fa';\nimport classnames from 'classnames';\nimport { useRouter } from 'next/router';\nimport { useStringTemplate } from '@blaze-cms/utils-handlebars';\nimport { HOVER, MOUSE_ENTER, MOUSE_LEAVE, HIDDEN, CLICK } from '../../constants';\nimport { hasChildren } from '../../helpers';\nimport BlazeLink from '../BlazeLink';\nimport MenuContext from '../Menu/MenuContext';\nimport { injectHelperIntoTemplate, isUrlPathMatch, hasActiveChild } from './helpers';\n\nconst MenuItemRender = ({ children, eventType, text, modifier, url, parent }) => {\n const router = useRouter();\n const { showMobileMenu, openActiveSubmenus } = useContext(MenuContext);\n\n const isHoverEvent = eventType === HOVER;\n const isClickEvent = eventType === CLICK;\n\n const {\n loading: loadingText,\n data: [textToUse]\n } = useStringTemplate(parent, [text]);\n const {\n loading: loadingUrl,\n data: [urlToUse]\n } = useStringTemplate(parent, [injectHelperIntoTemplate(url, 'url_encode')]);\n\n const isActive = router ? isUrlPathMatch(router.asPath, urlToUse) : false;\n const isActiveParent = router ? hasActiveChild(router.asPath, children) : false;\n const shouldPreOpen = openActiveSubmenus && isActiveParent && isClickEvent;\n\n const [displayChildren, setDisplayChildren] = useState(shouldPreOpen);\n\n useEffect(\n () => {\n if (!showMobileMenu && !shouldPreOpen) setDisplayChildren(false);\n },\n [children, isClickEvent, loadingUrl, openActiveSubmenus, router, shouldPreOpen, showMobileMenu]\n );\n\n useEffect(\n () => {\n if (isHoverEvent) {\n setDisplayChildren(false);\n }\n },\n [router.asPath, isHoverEvent]\n );\n\n if (loadingUrl || loadingText) return '';\n\n const childrenDisplayClass = displayChildren ? '' : HIDDEN;\n\n const handleItemEvent = ({ type }) => {\n if (isHoverEvent) {\n if (type === MOUSE_ENTER) {\n setDisplayChildren(true);\n }\n if (type === MOUSE_LEAVE) {\n setDisplayChildren(false);\n }\n }\n };\n\n const hasValidChildren = hasChildren(children);\n\n const menuItemLinkClassname = classnames('menu--item--link', {\n 'menu--item--link--active': isActive,\n 'menu--item--link--active-parent': isActiveParent\n });\n\n return (\n <li className={modifier} onMouseEnter={handleItemEvent} onMouseLeave={handleItemEvent}>\n <div className={menuItemLinkClassname}>\n {urlToUse ? (\n <BlazeLink href={urlToUse}>{textToUse}</BlazeLink>\n ) : (\n <span role=\"button\" onClick={handleItemEvent}>\n {textToUse}\n </span>\n )}\n {hasValidChildren && (\n <i\n role=\"button\"\n className=\"menu--item--link--icon\"\n onClick={() => setDisplayChildren(!displayChildren)}>\n {displayChildren ? <FaChevronUp /> : <FaChevronDown />}\n </i>\n )}\n </div>\n\n {hasValidChildren && (\n <div className={`menu--item-children ${childrenDisplayClass}`}>{children}</div>\n )}\n </li>\n );\n};\n\nMenuItemRender.propTypes = {\n modifier: PropTypes.string,\n text: PropTypes.string,\n url: PropTypes.string,\n eventType: PropTypes.string.isRequired,\n parent: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nMenuItemRender.defaultProps = {\n url: '',\n modifier: '',\n text: '',\n children: null,\n parent: {}\n};\n\nexport default MenuItemRender;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"MenuItemRender.js","names":["React","useState","useContext","useEffect","PropTypes","FaChevronDown","FaChevronUp","classnames","useRouter","useStringTemplate","HOVER","MOUSE_ENTER","MOUSE_LEAVE","HIDDEN","CLICK","hasChildren","BlazeLink","MenuContext","injectHelperIntoTemplate","isUrlPathMatch","hasActiveChild","MenuItemRender","children","eventType","text","modifier","url","parent","router","showMobileMenu","openActiveSubmenus","isHoverEvent","isClickEvent","loading","loadingText","data","textToUse","loadingUrl","urlToUse","isActive","asPath","isActiveParent","shouldPreOpen","hasValidChildren","displayChildren","setDisplayChildren","childrenDisplayClass","handleItemEvent","type","handleMobileClick","menuItemLinkClassname","createElement","className","onMouseEnter","onMouseLeave","onClick","role","undefined","tabIndex","href","e","stopPropagation","propTypes","string","isRequired","object","oneOfType","arrayOf","node","defaultProps"],"sources":["../../../src/components/MenuItem/MenuItemRender.js"],"sourcesContent":["/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport React, { useState, useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { FaChevronDown, FaChevronUp } from 'react-icons/fa';\nimport classnames from 'classnames';\nimport { useRouter } from 'next/router';\nimport { useStringTemplate } from '@blaze-cms/utils-handlebars';\nimport { HOVER, MOUSE_ENTER, MOUSE_LEAVE, HIDDEN, CLICK } from '../../constants';\nimport { hasChildren } from '../../helpers';\nimport BlazeLink from '../BlazeLink';\nimport MenuContext from '../Menu/MenuContext';\nimport { injectHelperIntoTemplate, isUrlPathMatch, hasActiveChild } from './helpers';\n\nconst MenuItemRender = ({ children, eventType, text, modifier, url, parent }) => {\n const router = useRouter();\n const { showMobileMenu, openActiveSubmenus } = useContext(MenuContext);\n\n const isHoverEvent = eventType === HOVER;\n const isClickEvent = eventType === CLICK;\n\n const {\n loading: loadingText,\n data: [textToUse]\n } = useStringTemplate(parent, [text]);\n const {\n loading: loadingUrl,\n data: [urlToUse]\n } = useStringTemplate(parent, [injectHelperIntoTemplate(url, 'url_encode')]);\n\n const isActive = router ? isUrlPathMatch(router.asPath, urlToUse) : false;\n const isActiveParent = router ? hasActiveChild(router.asPath, children) : false;\n const shouldPreOpen = openActiveSubmenus && isActiveParent && isClickEvent;\n const hasValidChildren = hasChildren(children);\n\n const [displayChildren, setDisplayChildren] = useState(shouldPreOpen);\n\n useEffect(\n () => {\n if (!showMobileMenu && !shouldPreOpen) setDisplayChildren(false);\n },\n [children, isClickEvent, loadingUrl, openActiveSubmenus, router, shouldPreOpen, showMobileMenu]\n );\n\n useEffect(\n () => {\n if (isHoverEvent) {\n setDisplayChildren(false);\n }\n },\n [router.asPath, isHoverEvent]\n );\n\n if (loadingUrl || loadingText) return '';\n\n const childrenDisplayClass = displayChildren ? '' : HIDDEN;\n\n const handleItemEvent = ({ type }) => {\n if (isHoverEvent) {\n if (type === MOUSE_ENTER) {\n setDisplayChildren(true);\n }\n if (type === MOUSE_LEAVE) {\n setDisplayChildren(false);\n }\n }\n };\n\n const handleMobileClick = () => {\n if (!urlToUse && hasValidChildren) {\n setDisplayChildren(!displayChildren);\n }\n };\n\n const menuItemLinkClassname = classnames('menu--item--link', {\n 'menu--item--link--active': isActive,\n 'menu--item--link--active-parent': isActiveParent\n });\n\n return (\n <li className={modifier} onMouseEnter={handleItemEvent} onMouseLeave={handleItemEvent}>\n <div\n className={menuItemLinkClassname}\n onClick={handleMobileClick}\n role={!urlToUse && hasValidChildren ? 'button' : undefined}\n tabIndex={!urlToUse && hasValidChildren ? 0 : undefined}>\n {urlToUse ? (\n <BlazeLink href={urlToUse}>{textToUse}</BlazeLink>\n ) : (\n <span role=\"button\" onClick={handleItemEvent}>\n {textToUse}\n </span>\n )}\n {hasValidChildren && (\n <i\n role=\"button\"\n className=\"menu--item--link--icon\"\n onClick={e => {\n e.stopPropagation();\n setDisplayChildren(!displayChildren);\n }}\n tabIndex={0}>\n {displayChildren ? <FaChevronUp /> : <FaChevronDown />}\n </i>\n )}\n </div>\n\n {hasValidChildren && (\n <div className={`menu--item-children ${childrenDisplayClass}`}>{children}</div>\n )}\n </li>\n );\n};\n\nMenuItemRender.propTypes = {\n modifier: PropTypes.string,\n text: PropTypes.string,\n url: PropTypes.string,\n eventType: PropTypes.string.isRequired,\n parent: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nMenuItemRender.defaultProps = {\n url: '',\n modifier: '',\n text: '',\n children: null,\n parent: {}\n};\n\nexport default MenuItemRender;\n"],"mappings":"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","ignoreList":[]}
@@ -1,41 +1,55 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
3
+ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
4
+ function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
5
+ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
6
+ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
7
+ var _images = /*#__PURE__*/new WeakMap();
8
+ var _pageBuilderID = /*#__PURE__*/new WeakMap();
9
+ var _handlers = /*#__PURE__*/new WeakMap();
2
10
  class StoreImages {
3
11
  constructor() {
4
- _defineProperty(this, "removeDuplicated", (images, key) => {
5
- this.images = images.map(item => item[key]).map((item, index, final) => final.indexOf(item) === index && index).filter(item => images[item]).map(item => images[item]);
12
+ _classPrivateFieldInitSpec(this, _images, []);
13
+ _classPrivateFieldInitSpec(this, _pageBuilderID, null);
14
+ _classPrivateFieldInitSpec(this, _handlers, {
15
+ toggleModal: () => {},
16
+ onSelect: () => {}
6
17
  });
7
- _defineProperty(this, "handleSelectedImage", imageId => {
8
- const index = this.images.findIndex(image => image.imageId === imageId);
9
- if (index !== -1) {
10
- this.setSelectedImage(index);
11
- }
12
- });
13
- _defineProperty(this, "setHandlers", ({
14
- toggleModal = this.toggleModal,
15
- setSelectedImage = this.setSelectedImage
16
- }) => {
17
- this.toggleModal = toggleModal;
18
- this.setSelectedImage = setSelectedImage;
18
+ _defineProperty(this, "toggleModal", () => {
19
+ _classPrivateFieldGet(_handlers, this).toggleModal();
19
20
  });
20
- _defineProperty(this, "addImages", (images, options = {}) => {
21
- if (!images.length) return this.images;
22
- const {
23
- pageBuilderID
24
- } = options;
25
- if (pageBuilderID !== this.id) {
26
- this.resetImages();
27
- this.id = pageBuilderID;
28
- }
29
- this.removeDuplicated(this.images.concat(images), 'imageId');
30
- return this.images;
21
+ _defineProperty(this, "handleSelectedImage", imageId => {
22
+ const idx = _classPrivateFieldGet(_images, this).findIndex(img => img.imageId === imageId);
23
+ if (idx !== -1) _classPrivateFieldGet(_handlers, this).onSelect(idx);
31
24
  });
32
- this.images = [];
33
- this.id = null;
34
- this.toggleModal = () => {};
35
- this.setSelectedImage = () => {};
25
+ }
26
+ get images() {
27
+ return [..._classPrivateFieldGet(_images, this)];
36
28
  }
37
29
  resetImages() {
38
- this.images = [];
30
+ _classPrivateFieldSet(_images, this, []);
31
+ }
32
+ setHandlers({
33
+ toggleModal,
34
+ setSelectedImage
35
+ }) {
36
+ if (typeof toggleModal === 'function') _classPrivateFieldGet(_handlers, this).toggleModal = toggleModal;
37
+ if (typeof setSelectedImage === 'function') _classPrivateFieldGet(_handlers, this).onSelect = setSelectedImage;
38
+ }
39
+ addImages(newImages, {
40
+ pageBuilderID
41
+ } = {}, handlers = {}) {
42
+ if (!Array.isArray(newImages) || newImages.length === 0) {
43
+ return this.images;
44
+ }
45
+ if (pageBuilderID != null && pageBuilderID !== _classPrivateFieldGet(_pageBuilderID, this)) {
46
+ this.resetImages();
47
+ _classPrivateFieldSet(_pageBuilderID, this, pageBuilderID);
48
+ }
49
+ const merged = _classPrivateFieldGet(_images, this).concat(newImages);
50
+ _classPrivateFieldSet(_images, this, Array.from(new Map(merged.map(img => [img.imageId, img])).values()));
51
+ this.setHandlers(handlers);
52
+ return this.images;
39
53
  }
40
54
  }
41
55
  export default new StoreImages();
@@ -1 +1 @@
1
- {"version":3,"file":"StoreImages.js","names":["StoreImages","constructor","_defineProperty","images","key","map","item","index","final","indexOf","filter","imageId","findIndex","image","setSelectedImage","toggleModal","options","length","pageBuilderID","id","resetImages","removeDuplicated","concat"],"sources":["../../../src/hooks/helpers/StoreImages.js"],"sourcesContent":["class StoreImages {\n constructor() {\n this.images = [];\n this.id = null;\n this.toggleModal = () => {};\n this.setSelectedImage = () => {};\n }\n\n resetImages() {\n this.images = [];\n }\n\n removeDuplicated = (images, key) => {\n this.images = images\n .map(item => item[key])\n .map((item, index, final) => final.indexOf(item) === index && index)\n .filter(item => images[item])\n .map(item => images[item]);\n };\n\n handleSelectedImage = imageId => {\n const index = this.images.findIndex(image => image.imageId === imageId);\n if (index !== -1) {\n this.setSelectedImage(index);\n }\n };\n\n setHandlers = ({ toggleModal = this.toggleModal, setSelectedImage = this.setSelectedImage }) => {\n this.toggleModal = toggleModal;\n this.setSelectedImage = setSelectedImage;\n };\n\n addImages = (images, options = {}) => {\n if (!images.length) return this.images;\n\n const { pageBuilderID } = options;\n\n if (pageBuilderID !== this.id) {\n this.resetImages();\n this.id = pageBuilderID;\n }\n\n this.removeDuplicated(this.images.concat(images), 'imageId');\n\n return this.images;\n };\n}\n\nexport default new StoreImages();\n"],"mappings":";AAAA,MAAMA,WAAW,CAAC;EAChBC,WAAWA,CAAA,EAAG;IAAAC,eAAA,2BAWK,CAACC,MAAM,EAAEC,GAAG,KAAK;MAClC,IAAI,CAACD,MAAM,GAAGA,MAAM,CACjBE,GAAG,CAACC,IAAI,IAAIA,IAAI,CAACF,GAAG,CAAC,CAAC,CACtBC,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,EAAEC,KAAK,KAAKA,KAAK,CAACC,OAAO,CAACH,IAAI,CAAC,KAAKC,KAAK,IAAIA,KAAK,CAAC,CACnEG,MAAM,CAACJ,IAAI,IAAIH,MAAM,CAACG,IAAI,CAAC,CAAC,CAC5BD,GAAG,CAACC,IAAI,IAAIH,MAAM,CAACG,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAAJ,eAAA,8BAEqBS,OAAO,IAAI;MAC/B,MAAMJ,KAAK,GAAG,IAAI,CAACJ,MAAM,CAACS,SAAS,CAACC,KAAK,IAAIA,KAAK,CAACF,OAAO,KAAKA,OAAO,CAAC;MACvE,IAAIJ,KAAK,KAAK,CAAC,CAAC,EAAE;QAChB,IAAI,CAACO,gBAAgB,CAACP,KAAK,CAAC;MAC9B;IACF,CAAC;IAAAL,eAAA,sBAEa,CAAC;MAAEa,WAAW,GAAG,IAAI,CAACA,WAAW;MAAED,gBAAgB,GAAG,IAAI,CAACA;IAAiB,CAAC,KAAK;MAC9F,IAAI,CAACC,WAAW,GAAGA,WAAW;MAC9B,IAAI,CAACD,gBAAgB,GAAGA,gBAAgB;IAC1C,CAAC;IAAAZ,eAAA,oBAEW,CAACC,MAAM,EAAEa,OAAO,GAAG,CAAC,CAAC,KAAK;MACpC,IAAI,CAACb,MAAM,CAACc,MAAM,EAAE,OAAO,IAAI,CAACd,MAAM;MAEtC,MAAM;QAAEe;MAAc,CAAC,GAAGF,OAAO;MAEjC,IAAIE,aAAa,KAAK,IAAI,CAACC,EAAE,EAAE;QAC7B,IAAI,CAACC,WAAW,CAAC,CAAC;QAClB,IAAI,CAACD,EAAE,GAAGD,aAAa;MACzB;MAEA,IAAI,CAACG,gBAAgB,CAAC,IAAI,CAAClB,MAAM,CAACmB,MAAM,CAACnB,MAAM,CAAC,EAAE,SAAS,CAAC;MAE5D,OAAO,IAAI,CAACA,MAAM;IACpB,CAAC;IA3CC,IAAI,CAACA,MAAM,GAAG,EAAE;IAChB,IAAI,CAACgB,EAAE,GAAG,IAAI;IACd,IAAI,CAACJ,WAAW,GAAG,MAAM,CAAC,CAAC;IAC3B,IAAI,CAACD,gBAAgB,GAAG,MAAM,CAAC,CAAC;EAClC;EAEAM,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACjB,MAAM,GAAG,EAAE;EAClB;AAoCF;AAEA,eAAe,IAAIH,WAAW,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"StoreImages.js","names":["StoreImages","constructor","_classPrivateFieldInitSpec","_images","_pageBuilderID","_handlers","toggleModal","onSelect","_defineProperty","_classPrivateFieldGet","imageId","idx","findIndex","img","images","resetImages","_classPrivateFieldSet","setHandlers","setSelectedImage","addImages","newImages","pageBuilderID","handlers","Array","isArray","length","merged","concat","from","Map","map","values"],"sources":["../../../src/hooks/helpers/StoreImages.js"],"sourcesContent":["class StoreImages {\n #images = [];\n\n #pageBuilderID = null;\n\n #handlers = {\n toggleModal: () => {},\n onSelect: () => {}\n };\n\n get images() {\n return [...this.#images];\n }\n\n resetImages() {\n this.#images = [];\n }\n\n setHandlers({ toggleModal, setSelectedImage }) {\n if (typeof toggleModal === 'function') this.#handlers.toggleModal = toggleModal;\n if (typeof setSelectedImage === 'function') this.#handlers.onSelect = setSelectedImage;\n }\n\n addImages(newImages, { pageBuilderID } = {}, handlers = {}) {\n if (!Array.isArray(newImages) || newImages.length === 0) {\n return this.images;\n }\n\n if (pageBuilderID != null && pageBuilderID !== this.#pageBuilderID) {\n this.resetImages();\n this.#pageBuilderID = pageBuilderID;\n }\n\n const merged = this.#images.concat(newImages);\n this.#images = Array.from(new Map(merged.map(img => [img.imageId, img])).values());\n\n this.setHandlers(handlers);\n return this.images;\n }\n\n toggleModal = () => {\n this.#handlers.toggleModal();\n };\n\n handleSelectedImage = imageId => {\n const idx = this.#images.findIndex(img => img.imageId === imageId);\n if (idx !== -1) this.#handlers.onSelect(idx);\n };\n}\n\nexport default new StoreImages();\n"],"mappings":";;;;;;;;;AAAA,MAAMA,WAAW,CAAC;EAAAC,YAAA;IAChBC,0BAAA,OAAAC,OAAO,EAAG,EAAE;IAEZD,0BAAA,OAAAE,cAAc,EAAG,IAAI;IAErBF,0BAAA,OAAAG,SAAS,EAAG;MACVC,WAAW,EAAEA,CAAA,KAAM,CAAC,CAAC;MACrBC,QAAQ,EAAEA,CAAA,KAAM,CAAC;IACnB,CAAC;IAACC,eAAA,sBAgCY,MAAM;MAClBC,qBAAA,CAAKJ,SAAS,EAAd,IAAa,CAAC,CAACC,WAAW,CAAC,CAAC;IAC9B,CAAC;IAAAE,eAAA,8BAEqBE,OAAO,IAAI;MAC/B,MAAMC,GAAG,GAAGF,qBAAA,CAAKN,OAAO,EAAZ,IAAW,CAAC,CAACS,SAAS,CAACC,GAAG,IAAIA,GAAG,CAACH,OAAO,KAAKA,OAAO,CAAC;MAClE,IAAIC,GAAG,KAAK,CAAC,CAAC,EAAEF,qBAAA,CAAKJ,SAAS,EAAd,IAAa,CAAC,CAACE,QAAQ,CAACI,GAAG,CAAC;IAC9C,CAAC;EAAA;EArCD,IAAIG,MAAMA,CAAA,EAAG;IACX,OAAO,CAAC,GAAGL,qBAAA,CAAKN,OAAO,EAAZ,IAAW,CAAC,CAAC;EAC1B;EAEAY,WAAWA,CAAA,EAAG;IACZC,qBAAA,CAAKb,OAAO,EAAZ,IAAI,EAAW,EAAJ,CAAC;EACd;EAEAc,WAAWA,CAAC;IAAEX,WAAW;IAAEY;EAAiB,CAAC,EAAE;IAC7C,IAAI,OAAOZ,WAAW,KAAK,UAAU,EAAEG,qBAAA,CAAKJ,SAAS,EAAd,IAAa,CAAC,CAACC,WAAW,GAAGA,WAAW;IAC/E,IAAI,OAAOY,gBAAgB,KAAK,UAAU,EAAET,qBAAA,CAAKJ,SAAS,EAAd,IAAa,CAAC,CAACE,QAAQ,GAAGW,gBAAgB;EACxF;EAEAC,SAASA,CAACC,SAAS,EAAE;IAAEC;EAAc,CAAC,GAAG,CAAC,CAAC,EAAEC,QAAQ,GAAG,CAAC,CAAC,EAAE;IAC1D,IAAI,CAACC,KAAK,CAACC,OAAO,CAACJ,SAAS,CAAC,IAAIA,SAAS,CAACK,MAAM,KAAK,CAAC,EAAE;MACvD,OAAO,IAAI,CAACX,MAAM;IACpB;IAEA,IAAIO,aAAa,IAAI,IAAI,IAAIA,aAAa,KAAKZ,qBAAA,CAAKL,cAAc,EAAnB,IAAkB,CAAC,EAAE;MAClE,IAAI,CAACW,WAAW,CAAC,CAAC;MAClBC,qBAAA,CAAKZ,cAAc,EAAnB,IAAI,EAAkBiB,aAAJ,CAAC;IACrB;IAEA,MAAMK,MAAM,GAAGjB,qBAAA,CAAKN,OAAO,EAAZ,IAAW,CAAC,CAACwB,MAAM,CAACP,SAAS,CAAC;IAC7CJ,qBAAA,CAAKb,OAAO,EAAZ,IAAI,EAAWoB,KAAK,CAACK,IAAI,CAAC,IAAIC,GAAG,CAACH,MAAM,CAACI,GAAG,CAACjB,GAAG,IAAI,CAACA,GAAG,CAACH,OAAO,EAAEG,GAAG,CAAC,CAAC,CAAC,CAACkB,MAAM,CAAC,CAAC,CAAtE,CAAC;IAEZ,IAAI,CAACd,WAAW,CAACK,QAAQ,CAAC;IAC1B,OAAO,IAAI,CAACR,MAAM;EACpB;AAUF;AAEA,eAAe,IAAId,WAAW,CAAC,CAAC","ignoreList":[]}
@@ -5,13 +5,14 @@ import Button from '@blaze-react/button';
5
5
  import { FaPlus, FaMinus } from 'react-icons/fa';
6
6
  import { BsPinAngleFill } from 'react-icons/bs';
7
7
  dayjs.extend(relativeTime);
8
- const LiveBlogList = props => {
9
- const {
10
- children,
11
- date,
12
- published,
13
- featured
14
- } = props;
8
+ const COLLAPSE_HEIGHT = 380;
9
+ const LiveBlogList = ({
10
+ children,
11
+ date,
12
+ published,
13
+ featured,
14
+ alternativeHeadline
15
+ }) => {
15
16
  const [isExpanded, setIsExpanded] = useState(false);
16
17
  const [shouldShowButton, setShouldShowButton] = useState(false);
17
18
  const [{
@@ -19,64 +20,53 @@ const LiveBlogList = props => {
19
20
  displayedTime
20
21
  }, setDisplayedDate] = useState({
21
22
  displayedDate: '&nbsp;',
22
- displayTime: ''
23
+ displayedTime: ''
23
24
  });
24
- const usedDate = date || published;
25
+ const usedDate = date;
25
26
  const contentRef = useRef(null);
26
27
  useEffect(() => {
27
- const timeout = setTimeout(() => {
28
- if (contentRef.current) {
29
- const contentHeight = contentRef.current.scrollHeight;
30
- if (contentHeight > 380) {
31
- setShouldShowButton(true);
32
- }
33
- }
34
- }, 500); // delay to wait for content load
35
- // todo: change to use mutation observer
36
-
37
- return () => {
38
- clearTimeout(timeout);
39
- };
28
+ const el = contentRef.current;
29
+ if (!el) return;
30
+ const check = () => setShouldShowButton(el.scrollHeight > COLLAPSE_HEIGHT);
31
+ if (typeof ResizeObserver !== 'undefined') {
32
+ check();
33
+ const ro = new ResizeObserver(check);
34
+ ro.observe(el);
35
+ return () => ro.disconnect();
36
+ }
37
+ check();
40
38
  }, [children]);
41
39
  useEffect(() => {
42
- // delay setting time so no SSR issues based on timezone
43
- let newDate = '';
44
- if (usedDate) {
45
- const diffInDays = dayjs().diff(dayjs(usedDate), 'day');
46
- if (diffInDays < 1) {
47
- newDate = dayjs(usedDate).fromNow();
48
- } else if (diffInDays < 365) {
49
- newDate = dayjs(usedDate).format('DD MMM');
50
- } else {
51
- newDate = dayjs(usedDate).format('DD MMM YYYY');
52
- }
53
- setDisplayedDate({
54
- displayedDate: newDate,
55
- displayedTime: dayjs(usedDate).format('HH:mm')
56
- });
57
- }
58
- }, [date, published, usedDate]);
59
- const toggleExpanded = () => {
60
- setIsExpanded(!isExpanded);
61
- };
40
+ if (!usedDate) return;
41
+ const days = dayjs().diff(dayjs(usedDate), 'day');
42
+ const lessThanAYear = days < 365;
43
+ let newDate;
44
+ if (days < 1) newDate = dayjs(usedDate).fromNow();else if (lessThanAYear) newDate = dayjs(usedDate).format('DD MMM');else newDate = dayjs(usedDate).format('DD MMM YYYY');
45
+ setDisplayedDate({
46
+ displayedDate: newDate,
47
+ displayedTime: lessThanAYear ? dayjs(usedDate).format('HH:mm') : null
48
+ });
49
+ }, [usedDate]);
50
+ const toggleExpanded = () => setIsExpanded(value => !value);
62
51
  const isCollapsed = !isExpanded;
63
- const baseClass = 'live-blog-container';
64
- const modifier = featured ? ` ${baseClass}--featured` : '';
65
- const className = `${baseClass}${modifier}`;
52
+ const showHeader = usedDate || alternativeHeadline || featured;
66
53
  return /*#__PURE__*/React.createElement("div", {
67
- className: className
68
- }, usedDate && /*#__PURE__*/React.createElement("div", {
54
+ className: `live-blog-container${featured ? ' live-blog-container--featured' : ''}`
55
+ }, showHeader && /*#__PURE__*/React.createElement("div", {
69
56
  className: "live-blog-date"
70
- }, featured && /*#__PURE__*/React.createElement(BsPinAngleFill, null), /*#__PURE__*/React.createElement("span", {
57
+ }, featured && /*#__PURE__*/React.createElement(BsPinAngleFill, null), usedDate && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
71
58
  className: "live-blog-date--date"
72
- }, displayedDate), /*#__PURE__*/React.createElement("span", {
59
+ }, displayedDate), displayedTime && /*#__PURE__*/React.createElement("span", {
73
60
  className: "live-blog-date--time"
74
- }, displayedTime)), /*#__PURE__*/React.createElement("div", {
61
+ }, displayedTime)), alternativeHeadline && /*#__PURE__*/React.createElement("span", {
62
+ className: "live-blog-date--headline"
63
+ }, alternativeHeadline)), /*#__PURE__*/React.createElement("div", {
75
64
  ref: contentRef,
76
- className: `live-blog-content ${isCollapsed ? 'live-blog-content--collapsed' : 'live-blog-content--opened'}`
65
+ className: `live-blog-content ${isCollapsed ? 'live-blog-content--collapsed collapsed' : 'live-blog-content--opened opened'}`
77
66
  }, children), shouldShowButton && /*#__PURE__*/React.createElement("div", {
78
67
  className: "live-blog-button-wrapper"
79
68
  }, /*#__PURE__*/React.createElement(Button, {
69
+ "aria-label": isExpanded ? 'Show Less' : 'Show More',
80
70
  className: "live-blog-toggle",
81
71
  onClick: toggleExpanded,
82
72
  type: "button"
@@ -1 +1 @@
1
- {"version":3,"file":"LiveBlogList.js","names":["React","useRef","useState","useEffect","dayjs","relativeTime","Button","FaPlus","FaMinus","BsPinAngleFill","extend","LiveBlogList","props","children","date","published","featured","isExpanded","setIsExpanded","shouldShowButton","setShouldShowButton","displayedDate","displayedTime","setDisplayedDate","displayTime","usedDate","contentRef","timeout","setTimeout","current","contentHeight","scrollHeight","clearTimeout","newDate","diffInDays","diff","fromNow","format","toggleExpanded","isCollapsed","baseClass","modifier","className","createElement","ref","onClick","type","Fragment"],"sources":["../../../src/variants/LiveBlogList/LiveBlogList.js"],"sourcesContent":["import React, { useRef, useState, useEffect } from 'react';\nimport dayjs from 'dayjs';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport Button from '@blaze-react/button';\nimport { FaPlus, FaMinus } from 'react-icons/fa';\nimport { BsPinAngleFill } from 'react-icons/bs';\n\ndayjs.extend(relativeTime);\n\nconst LiveBlogList = props => {\n const { children, date, published, featured } = props;\n const [isExpanded, setIsExpanded] = useState(false);\n const [shouldShowButton, setShouldShowButton] = useState(false);\n const [{ displayedDate, displayedTime }, setDisplayedDate] = useState({\n displayedDate: '&nbsp;',\n displayTime: ''\n });\n const usedDate = date || published;\n\n const contentRef = useRef(null);\n\n useEffect(\n () => {\n const timeout = setTimeout(() => {\n if (contentRef.current) {\n const contentHeight = contentRef.current.scrollHeight;\n if (contentHeight > 380) {\n setShouldShowButton(true);\n }\n }\n }, 500); // delay to wait for content load\n // todo: change to use mutation observer\n\n return () => {\n clearTimeout(timeout);\n };\n },\n [children]\n );\n\n useEffect(\n () => {\n // delay setting time so no SSR issues based on timezone\n let newDate = '';\n if (usedDate) {\n const diffInDays = dayjs().diff(dayjs(usedDate), 'day');\n if (diffInDays < 1) {\n newDate = dayjs(usedDate).fromNow();\n } else if (diffInDays < 365) {\n newDate = dayjs(usedDate).format('DD MMM');\n } else {\n newDate = dayjs(usedDate).format('DD MMM YYYY');\n }\n setDisplayedDate({\n displayedDate: newDate,\n displayedTime: dayjs(usedDate).format('HH:mm')\n });\n }\n },\n [date, published, usedDate]\n );\n\n const toggleExpanded = () => {\n setIsExpanded(!isExpanded);\n };\n\n const isCollapsed = !isExpanded;\n const baseClass = 'live-blog-container';\n const modifier = featured ? ` ${baseClass}--featured` : '';\n const className = `${baseClass}${modifier}`;\n\n return (\n <div className={className}>\n {usedDate && (\n <div className=\"live-blog-date\">\n {featured && <BsPinAngleFill />}\n <span className=\"live-blog-date--date\">{displayedDate}</span>\n <span className=\"live-blog-date--time\">{displayedTime}</span>\n </div>\n )}\n\n <div\n ref={contentRef}\n className={`live-blog-content ${\n isCollapsed ? 'live-blog-content--collapsed' : 'live-blog-content--opened'\n }`}>\n {children}\n </div>\n\n {shouldShowButton && (\n <div className=\"live-blog-button-wrapper\">\n <Button className=\"live-blog-toggle\" onClick={toggleExpanded} type=\"button\">\n {isExpanded ? (\n <>\n <FaMinus className=\"toggle-icon\" /> Show Less\n </>\n ) : (\n <>\n <FaPlus className=\"toggle-icon\" /> Show More\n </>\n )}\n </Button>\n </div>\n )}\n </div>\n );\n};\n\nexport default LiveBlogList;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"LiveBlogList.js","names":["React","useRef","useState","useEffect","dayjs","relativeTime","Button","FaPlus","FaMinus","BsPinAngleFill","extend","COLLAPSE_HEIGHT","LiveBlogList","children","date","published","featured","alternativeHeadline","isExpanded","setIsExpanded","shouldShowButton","setShouldShowButton","displayedDate","displayedTime","setDisplayedDate","usedDate","contentRef","el","current","check","scrollHeight","ResizeObserver","ro","observe","disconnect","days","diff","lessThanAYear","newDate","fromNow","format","toggleExpanded","value","isCollapsed","showHeader","createElement","className","Fragment","ref","onClick","type"],"sources":["../../../src/variants/LiveBlogList/LiveBlogList.js"],"sourcesContent":["import React, { useRef, useState, useEffect } from 'react';\nimport dayjs from 'dayjs';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport Button from '@blaze-react/button';\nimport { FaPlus, FaMinus } from 'react-icons/fa';\nimport { BsPinAngleFill } from 'react-icons/bs';\n\ndayjs.extend(relativeTime);\n\nconst COLLAPSE_HEIGHT = 380;\n\nconst LiveBlogList = ({ children, date, published, featured, alternativeHeadline }) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const [shouldShowButton, setShouldShowButton] = useState(false);\n const [{ displayedDate, displayedTime }, setDisplayedDate] = useState({\n displayedDate: '&nbsp;',\n displayedTime: ''\n });\n const usedDate = date;\n const contentRef = useRef(null);\n\n useEffect(\n () => {\n const el = contentRef.current;\n if (!el) return;\n\n const check = () => setShouldShowButton(el.scrollHeight > COLLAPSE_HEIGHT);\n\n if (typeof ResizeObserver !== 'undefined') {\n check();\n const ro = new ResizeObserver(check);\n ro.observe(el);\n return () => ro.disconnect();\n }\n check();\n },\n [children]\n );\n\n useEffect(\n () => {\n if (!usedDate) return;\n const days = dayjs().diff(dayjs(usedDate), 'day');\n const lessThanAYear = days < 365;\n\n let newDate;\n if (days < 1) newDate = dayjs(usedDate).fromNow();\n else if (lessThanAYear) newDate = dayjs(usedDate).format('DD MMM');\n else newDate = dayjs(usedDate).format('DD MMM YYYY');\n\n setDisplayedDate({\n displayedDate: newDate,\n displayedTime: lessThanAYear ? dayjs(usedDate).format('HH:mm') : null\n });\n },\n [usedDate]\n );\n\n const toggleExpanded = () => setIsExpanded(value => !value);\n const isCollapsed = !isExpanded;\n const showHeader = usedDate || alternativeHeadline || featured;\n\n return (\n <div className={`live-blog-container${featured ? ' live-blog-container--featured' : ''}`}>\n {showHeader && (\n <div className=\"live-blog-date\">\n {featured && <BsPinAngleFill />}\n {usedDate && (\n <>\n <span className=\"live-blog-date--date\">{displayedDate}</span>\n {displayedTime && <span className=\"live-blog-date--time\">{displayedTime}</span>}\n </>\n )}\n {alternativeHeadline && (\n <span className=\"live-blog-date--headline\">{alternativeHeadline}</span>\n )}\n </div>\n )}\n\n <div\n ref={contentRef}\n className={`live-blog-content ${\n isCollapsed\n ? 'live-blog-content--collapsed collapsed'\n : 'live-blog-content--opened opened'\n }`}>\n {children}\n </div>\n\n {shouldShowButton && (\n <div className=\"live-blog-button-wrapper\">\n <Button\n aria-label={isExpanded ? 'Show Less' : 'Show More'}\n className=\"live-blog-toggle\"\n onClick={toggleExpanded}\n type=\"button\">\n {isExpanded ? (\n <>\n <FaMinus className=\"toggle-icon\" /> Show Less\n </>\n ) : (\n <>\n <FaPlus className=\"toggle-icon\" /> Show More\n </>\n )}\n </Button>\n </div>\n )}\n </div>\n );\n};\n\nexport default LiveBlogList;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaze-cms/react-page-builder",
3
- "version": "0.146.0-core-styles.60",
3
+ "version": "0.146.0-core-styles.62",
4
4
  "description": "Blaze react page builder",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-es/index.js",
@@ -32,7 +32,7 @@
32
32
  "@blaze-cms/core-errors-ui": "0.145.1-core-styles.0",
33
33
  "@blaze-cms/image-cdn-react": "0.3.0-alpha.7",
34
34
  "@blaze-cms/nextjs-components": "0.146.0-core-styles.42",
35
- "@blaze-cms/plugin-search-ui": "0.146.0-core-styles.60",
35
+ "@blaze-cms/plugin-search-ui": "0.146.0-core-styles.61",
36
36
  "@blaze-cms/setup-ui": "0.145.1-core-styles.0",
37
37
  "@blaze-cms/utils": "0.146.0-core-styles.52",
38
38
  "@blaze-cms/utils-handlebars": "0.146.0-core-styles.42",
@@ -91,5 +91,5 @@
91
91
  "lib/*",
92
92
  "lib-es/*"
93
93
  ],
94
- "gitHead": "46c7acca5c2b59a139a483135c81e0ee40f50e51"
94
+ "gitHead": "92dcab6fab3478c0e7966f13df33bd4a144c1401"
95
95
  }
@@ -57,19 +57,23 @@ const Button = props => {
57
57
  return !!(url || hasChildren(children));
58
58
  };
59
59
 
60
- const logout = () => {
61
- handleLogout(client);
62
- if (hasChildren(children)) return setShowChildren(true);
60
+ const logout = async () => {
61
+ await handleLogout(client);
63
62
 
64
- if (!urlToUse) return router.reload();
63
+ if (hasChildren(children)) {
64
+ setShowChildren(true);
65
+ return;
66
+ }
65
67
 
66
- return urlToUse.startsWith('/')
67
- ? router.push('/Resolver', urlToUse)
68
- : (window.location.href = urlToUse);
68
+ if (!urlToUse) {
69
+ return router.reload();
70
+ }
71
+
72
+ window.location.href = urlToUse;
69
73
  };
70
74
 
71
- const handleClick = () => {
72
- if (isLogoutButton) logout();
75
+ const handleClick = async () => {
76
+ if (isLogoutButton) await logout();
73
77
  if (!url && !isLogoutButton) setShowChildren(!showChildren);
74
78
  };
75
79
 
@@ -49,7 +49,7 @@ const ListFactory = props => {
49
49
  operator: filterOperator,
50
50
  sortProperties,
51
51
  itemListName,
52
- VariantComponent // extracted from props
52
+ VariantComponent
53
53
  } = props;
54
54
  const { isPreview } = useContext(MainContext);
55
55
  const router = useRouter();
@@ -1,3 +1,4 @@
1
+ /* eslint-disable jsx-a11y/no-static-element-interactions */
1
2
  import React, { useState, useContext, useEffect } from 'react';
2
3
  import PropTypes from 'prop-types';
3
4
  import { FaChevronDown, FaChevronUp } from 'react-icons/fa';
@@ -29,6 +30,7 @@ const MenuItemRender = ({ children, eventType, text, modifier, url, parent }) =>
29
30
  const isActive = router ? isUrlPathMatch(router.asPath, urlToUse) : false;
30
31
  const isActiveParent = router ? hasActiveChild(router.asPath, children) : false;
31
32
  const shouldPreOpen = openActiveSubmenus && isActiveParent && isClickEvent;
33
+ const hasValidChildren = hasChildren(children);
32
34
 
33
35
  const [displayChildren, setDisplayChildren] = useState(shouldPreOpen);
34
36
 
@@ -63,7 +65,11 @@ const MenuItemRender = ({ children, eventType, text, modifier, url, parent }) =>
63
65
  }
64
66
  };
65
67
 
66
- const hasValidChildren = hasChildren(children);
68
+ const handleMobileClick = () => {
69
+ if (!urlToUse && hasValidChildren) {
70
+ setDisplayChildren(!displayChildren);
71
+ }
72
+ };
67
73
 
68
74
  const menuItemLinkClassname = classnames('menu--item--link', {
69
75
  'menu--item--link--active': isActive,
@@ -72,7 +78,11 @@ const MenuItemRender = ({ children, eventType, text, modifier, url, parent }) =>
72
78
 
73
79
  return (
74
80
  <li className={modifier} onMouseEnter={handleItemEvent} onMouseLeave={handleItemEvent}>
75
- <div className={menuItemLinkClassname}>
81
+ <div
82
+ className={menuItemLinkClassname}
83
+ onClick={handleMobileClick}
84
+ role={!urlToUse && hasValidChildren ? 'button' : undefined}
85
+ tabIndex={!urlToUse && hasValidChildren ? 0 : undefined}>
76
86
  {urlToUse ? (
77
87
  <BlazeLink href={urlToUse}>{textToUse}</BlazeLink>
78
88
  ) : (
@@ -84,7 +94,11 @@ const MenuItemRender = ({ children, eventType, text, modifier, url, parent }) =>
84
94
  <i
85
95
  role="button"
86
96
  className="menu--item--link--icon"
87
- onClick={() => setDisplayChildren(!displayChildren)}>
97
+ onClick={e => {
98
+ e.stopPropagation();
99
+ setDisplayChildren(!displayChildren);
100
+ }}
101
+ tabIndex={0}>
88
102
  {displayChildren ? <FaChevronUp /> : <FaChevronDown />}
89
103
  </i>
90
104
  )}
@@ -1,48 +1,50 @@
1
1
  class StoreImages {
2
- constructor() {
3
- this.images = [];
4
- this.id = null;
5
- this.toggleModal = () => {};
6
- this.setSelectedImage = () => {};
7
- }
2
+ #images = [];
8
3
 
9
- resetImages() {
10
- this.images = [];
11
- }
4
+ #pageBuilderID = null;
12
5
 
13
- removeDuplicated = (images, key) => {
14
- this.images = images
15
- .map(item => item[key])
16
- .map((item, index, final) => final.indexOf(item) === index && index)
17
- .filter(item => images[item])
18
- .map(item => images[item]);
6
+ #handlers = {
7
+ toggleModal: () => {},
8
+ onSelect: () => {}
19
9
  };
20
10
 
21
- handleSelectedImage = imageId => {
22
- const index = this.images.findIndex(image => image.imageId === imageId);
23
- if (index !== -1) {
24
- this.setSelectedImage(index);
25
- }
26
- };
11
+ get images() {
12
+ return [...this.#images];
13
+ }
27
14
 
28
- setHandlers = ({ toggleModal = this.toggleModal, setSelectedImage = this.setSelectedImage }) => {
29
- this.toggleModal = toggleModal;
30
- this.setSelectedImage = setSelectedImage;
31
- };
15
+ resetImages() {
16
+ this.#images = [];
17
+ }
32
18
 
33
- addImages = (images, options = {}) => {
34
- if (!images.length) return this.images;
19
+ setHandlers({ toggleModal, setSelectedImage }) {
20
+ if (typeof toggleModal === 'function') this.#handlers.toggleModal = toggleModal;
21
+ if (typeof setSelectedImage === 'function') this.#handlers.onSelect = setSelectedImage;
22
+ }
35
23
 
36
- const { pageBuilderID } = options;
24
+ addImages(newImages, { pageBuilderID } = {}, handlers = {}) {
25
+ if (!Array.isArray(newImages) || newImages.length === 0) {
26
+ return this.images;
27
+ }
37
28
 
38
- if (pageBuilderID !== this.id) {
29
+ if (pageBuilderID != null && pageBuilderID !== this.#pageBuilderID) {
39
30
  this.resetImages();
40
- this.id = pageBuilderID;
31
+ this.#pageBuilderID = pageBuilderID;
41
32
  }
42
33
 
43
- this.removeDuplicated(this.images.concat(images), 'imageId');
34
+ const merged = this.#images.concat(newImages);
35
+ this.#images = Array.from(new Map(merged.map(img => [img.imageId, img])).values());
44
36
 
37
+ this.setHandlers(handlers);
45
38
  return this.images;
39
+ }
40
+
41
+ toggleModal = () => {
42
+ this.#handlers.toggleModal();
43
+ };
44
+
45
+ handleSelectedImage = imageId => {
46
+ const idx = this.#images.findIndex(img => img.imageId === imageId);
47
+ if (idx !== -1) this.#handlers.onSelect(idx);
46
48
  };
47
49
  }
48
50