@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.
- package/CHANGELOG.md +22 -0
- package/lib/HOC/withInfiniteScroll.js +5 -5
- package/lib/HOC/withInfiniteScroll.js.map +1 -1
- package/lib/components/Button.js +57 -11
- package/lib/components/Button.js.map +1 -1
- package/lib/components/List/ListFactory.js.map +1 -1
- package/lib/components/MenuItem/MenuItemRender.js +17 -5
- package/lib/components/MenuItem/MenuItemRender.js.map +1 -1
- package/lib/components/Video/providers/Vimeo/VimeoProvider.js +14 -14
- package/lib/components/Video/providers/Vimeo/VimeoProvider.js.map +1 -1
- package/lib/hooks/helpers/StoreImages.js +61 -41
- package/lib/hooks/helpers/StoreImages.js.map +1 -1
- package/lib/hooks/use-page-builder.js +2 -2
- package/lib/hooks/use-page-builder.js.map +1 -1
- package/lib/variants/LiveBlogList/LiveBlogList.js +45 -48
- package/lib/variants/LiveBlogList/LiveBlogList.js.map +1 -1
- package/lib-es/components/Button.js +12 -7
- package/lib-es/components/Button.js.map +1 -1
- package/lib-es/components/List/ListFactory.js +1 -1
- package/lib-es/components/List/ListFactory.js.map +1 -1
- package/lib-es/components/MenuItem/MenuItemRender.js +16 -3
- package/lib-es/components/MenuItem/MenuItemRender.js.map +1 -1
- package/lib-es/hooks/helpers/StoreImages.js +44 -30
- package/lib-es/hooks/helpers/StoreImages.js.map +1 -1
- package/lib-es/variants/LiveBlogList/LiveBlogList.js +41 -51
- package/lib-es/variants/LiveBlogList/LiveBlogList.js.map +1 -1
- package/package.json +3 -3
- package/src/components/Button.js +13 -9
- package/src/components/List/ListFactory.js +1 -1
- package/src/components/MenuItem/MenuItemRender.js +17 -3
- package/src/hooks/helpers/StoreImages.js +33 -31
- package/src/variants/LiveBlogList/LiveBlogList.js +51 -47
- package/tests/unit/src/components/MenuItem/MenuItemRender.test.js +25 -2
- package/tests/unit/src/components/MenuItem/__snapshots__/MenuItem.test.js.snap +1 -0
- package/tests/unit/src/variants/LiveBlogList/LiveBlogList.test.js +121 -0
- 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
|
|
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:
|
|
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","
|
|
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
|
-
|
|
5
|
-
|
|
12
|
+
_classPrivateFieldInitSpec(this, _images, []);
|
|
13
|
+
_classPrivateFieldInitSpec(this, _pageBuilderID, null);
|
|
14
|
+
_classPrivateFieldInitSpec(this, _handlers, {
|
|
15
|
+
toggleModal: () => {},
|
|
16
|
+
onSelect: () => {}
|
|
6
17
|
});
|
|
7
|
-
_defineProperty(this, "
|
|
8
|
-
|
|
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, "
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
this.setSelectedImage = () => {};
|
|
25
|
+
}
|
|
26
|
+
get images() {
|
|
27
|
+
return [..._classPrivateFieldGet(_images, this)];
|
|
36
28
|
}
|
|
37
29
|
resetImages() {
|
|
38
|
-
this
|
|
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","
|
|
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
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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: ' ',
|
|
22
|
-
|
|
23
|
+
displayedTime: ''
|
|
23
24
|
});
|
|
24
|
-
const usedDate = date
|
|
25
|
+
const usedDate = date;
|
|
25
26
|
const contentRef = useRef(null);
|
|
26
27
|
useEffect(() => {
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
|
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:
|
|
68
|
-
},
|
|
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("
|
|
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","
|
|
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: ' ',\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.
|
|
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.
|
|
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": "
|
|
94
|
+
"gitHead": "92dcab6fab3478c0e7966f13df33bd4a144c1401"
|
|
95
95
|
}
|
package/src/components/Button.js
CHANGED
|
@@ -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 (
|
|
63
|
+
if (hasChildren(children)) {
|
|
64
|
+
setShowChildren(true);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
65
67
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
|
|
@@ -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
|
|
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
|
|
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={
|
|
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
|
-
|
|
3
|
-
this.images = [];
|
|
4
|
-
this.id = null;
|
|
5
|
-
this.toggleModal = () => {};
|
|
6
|
-
this.setSelectedImage = () => {};
|
|
7
|
-
}
|
|
2
|
+
#images = [];
|
|
8
3
|
|
|
9
|
-
|
|
10
|
-
this.images = [];
|
|
11
|
-
}
|
|
4
|
+
#pageBuilderID = null;
|
|
12
5
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
this.setSelectedImage(index);
|
|
25
|
-
}
|
|
26
|
-
};
|
|
11
|
+
get images() {
|
|
12
|
+
return [...this.#images];
|
|
13
|
+
}
|
|
27
14
|
|
|
28
|
-
|
|
29
|
-
this
|
|
30
|
-
|
|
31
|
-
};
|
|
15
|
+
resetImages() {
|
|
16
|
+
this.#images = [];
|
|
17
|
+
}
|
|
32
18
|
|
|
33
|
-
|
|
34
|
-
if (
|
|
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
|
-
|
|
24
|
+
addImages(newImages, { pageBuilderID } = {}, handlers = {}) {
|
|
25
|
+
if (!Array.isArray(newImages) || newImages.length === 0) {
|
|
26
|
+
return this.images;
|
|
27
|
+
}
|
|
37
28
|
|
|
38
|
-
if (pageBuilderID !== this
|
|
29
|
+
if (pageBuilderID != null && pageBuilderID !== this.#pageBuilderID) {
|
|
39
30
|
this.resetImages();
|
|
40
|
-
this
|
|
31
|
+
this.#pageBuilderID = pageBuilderID;
|
|
41
32
|
}
|
|
42
33
|
|
|
43
|
-
this
|
|
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
|
|