@blaze-cms/react-page-builder 0.125.0-alpha.3 → 0.125.0-core-styles.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,20 +3,13 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- # [0.125.0-alpha.3](https://github.com/thebyte9/blaze/compare/v0.125.0-alpha.2...v0.125.0-alpha.3) (2022-09-27)
6
+ # [0.125.0-core-styles.0](https://github.com/thebyte9/blaze/compare/v0.124.1...v0.125.0-core-styles.0) (2022-10-26)
7
7
 
8
8
 
9
9
  ### Features
10
10
 
11
11
  * adding vimeo provider ([#3605](https://github.com/thebyte9/blaze/issues/3605)) ([458c810](https://github.com/thebyte9/blaze/commit/458c810c647a6bcb0d69281865fd0afa0966475c))
12
-
13
-
14
-
15
-
16
-
17
- # [0.125.0-alpha.1](https://github.com/thebyte9/blaze/compare/v0.125.0-alpha.0...v0.125.0-alpha.1) (2022-09-15)
18
-
19
- **Note:** Version bump only for package @blaze-cms/react-page-builder
12
+ * dynamic values hook and dynamic PB button properties ([#3643](https://github.com/thebyte9/blaze/issues/3643)) ([16411e7](https://github.com/thebyte9/blaze/commit/16411e731e9ac1d05312bca59156be89a554e25b))
20
13
 
21
14
 
22
15
 
package/README.md CHANGED
@@ -22,6 +22,13 @@ The `sizeKey` is used to identifiy responsive image settings in responsive image
22
22
  - modifier set: `image:modifier-value`
23
23
  - isHero and modifier set: `image:hero:modifier-value`
24
24
 
25
+ ## Button
26
+ The following button component properties support dynamic values using [handlebar templates](../blaze-utitls-handlebars/README.md).
27
+ - url e.g. `/search?={{ currentParent.name }}`
28
+ - text
29
+ - after click text
30
+ - url
31
+
25
32
  ## Textblock
26
33
 
27
34
  The textblock renders without a wrapper unless a modifier is set OR the `BLAZE_PB_TEXTBLOCK_WRAPPER_ENABLE` env variable is set to true.
@@ -63,6 +63,8 @@ var _client = require("@apollo/client");
63
63
 
64
64
  var _propTypes = _interopRequireWildcard(require("prop-types"));
65
65
 
66
+ var _utilsHandlebars = require("@blaze-cms/utils-handlebars");
67
+
66
68
  var _ClickWrapper = _interopRequireDefault(require("./ClickWrapper"));
67
69
 
68
70
  var _BlazeLink = _interopRequireDefault(require("./BlazeLink"));
@@ -75,7 +77,7 @@ var _constants = require("../constants");
75
77
 
76
78
  var _helpers = require("../helpers");
77
79
 
78
- var _excluded = ["type", "text", "url", "icon", "name", "style", "children", "clickAction", "childSeoVisibility", "afterClickText"];
80
+ var _excluded = ["type", "text", "url", "icon", "name", "style", "children", "clickAction", "childSeoVisibility", "afterClickText", "parent"];
79
81
 
80
82
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
81
83
 
@@ -96,6 +98,7 @@ var Button = function Button(props) {
96
98
  clickAction = props.clickAction,
97
99
  childSeoVisibility = props.childSeoVisibility,
98
100
  afterClickText = props.afterClickText,
101
+ parent = props.parent,
99
102
  otherProps = (0, _objectWithoutProperties2["default"])(props, _excluded);
100
103
  var client = (0, _client.useApolloClient)();
101
104
  var router = (0, _router.useRouter)();
@@ -112,6 +115,12 @@ var Button = function Button(props) {
112
115
  showChildren = _useState2[0],
113
116
  setShowChildren = _useState2[1];
114
117
 
118
+ var _useStringTemplate = (0, _utilsHandlebars.useStringTemplate)(parent, [text, afterClickText, url]),
119
+ _useStringTemplate$da = (0, _slicedToArray2["default"])(_useStringTemplate.data, 3),
120
+ textToUse = _useStringTemplate$da[0],
121
+ afterClickTextToUse = _useStringTemplate$da[1],
122
+ urlToUse = _useStringTemplate$da[2];
123
+
115
124
  (0, _react.useEffect)(function () {
116
125
  setShowChildren(false);
117
126
  }, [router.asPath]);
@@ -124,7 +133,7 @@ var Button = function Button(props) {
124
133
 
125
134
  var logout = function logout() {
126
135
  (0, _coreAuthUi.handleLogout)(client);
127
- url ? router.reload(url) : router.reload();
136
+ url ? router.reload(urlToUse) : router.reload();
128
137
  };
129
138
 
130
139
  var handleClick = function handleClick() {
@@ -139,13 +148,13 @@ var Button = function Button(props) {
139
148
  style: style
140
149
  }, otherProps));
141
150
  var currentProps = url ? {
142
- href: url,
151
+ href: urlToUse,
143
152
  title: name
144
153
  } : {
145
154
  name: name
146
155
  };
147
156
  var DynamicButton = url && !isLogoutButton ? _BlazeLink["default"] : _button["default"];
148
- (0, _helpers.updateChildrensParent)(children, otherProps.parent.itemId, otherProps.parent.itemEntity);
157
+ (0, _helpers.updateChildrensParent)(children, parent.itemId, parent.itemEntity);
149
158
  var renderedChildren = (0, _helpers.renderChildren)(children, {
150
159
  onClose: handleClick
151
160
  });
@@ -165,10 +174,11 @@ var Button = function Button(props) {
165
174
  onClick: handleClick
166
175
  }, currentProps), icon && /*#__PURE__*/_react["default"].createElement("i", {
167
176
  className: icon
168
- }), showChildren ? afterClickText : text));
177
+ }), showChildren ? afterClickTextToUse : textToUse));
169
178
  };
170
179
 
171
180
  Button.propTypes = {
181
+ parent: _propTypes["default"].object,
172
182
  clickAction: _propTypes["default"].string,
173
183
  text: _propTypes["default"].string,
174
184
  afterClickText: _propTypes.string,
@@ -182,6 +192,7 @@ Button.propTypes = {
182
192
  children: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].node), _propTypes["default"].node])
183
193
  };
184
194
  Button.defaultProps = {
195
+ parent: {},
185
196
  clickAction: '',
186
197
  text: '',
187
198
  afterClickText: '',
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","names":["Button","props","type","text","url","icon","name","style","children","clickAction","childSeoVisibility","afterClickText","otherProps","client","useApolloClient","router","useRouter","isLogoutButton","LOGOUT","useCookies","cookies","blazeCookie","blaze_auth","useState","showChildren","setShowChildren","useEffect","asPath","checkIfButtonShouldRender","hasChildren","logout","handleLogout","reload","handleClick","buttonType","modifiers","getClassModifiers","currentProps","href","title","DynamicButton","BlazeLink","BlazeButton","updateChildrensParent","parent","itemId","itemEntity","renderedChildren","renderChildren","onClose","getClickWrapperOptions","shouldUseClickWrapper","wrapperProps","Wrapper","ClickWrapper","Fragment","contentClassName","classnames","propTypes","PropTypes","string","size","bool","oneOfType","arrayOf","node","defaultProps","withTitle"],"sources":["../../src/components/Button.js"],"sourcesContent":["import React, { useState, Fragment, useEffect } from 'react';\nimport { useCookies } from 'react-cookie';\nimport { useRouter } from 'next/router';\nimport classnames from 'classnames';\nimport BlazeButton from '@blaze-react/button';\nimport { handleLogout } from '@blaze-cms/core-auth-ui';\nimport { useApolloClient } from '@apollo/client';\nimport PropTypes, { bool, string } from 'prop-types';\nimport ClickWrapper from './ClickWrapper';\nimport BlazeLink from './BlazeLink';\nimport { withTitle } from '../HOC';\nimport { getClassModifiers } from '../utils';\nimport { LOGOUT } from '../constants';\nimport {\n renderChildren,\n updateChildrensParent,\n hasChildren,\n getClickWrapperOptions\n} from '../helpers';\n\nconst Button = props => {\n const {\n type,\n text,\n url,\n icon,\n name,\n style,\n children,\n clickAction,\n childSeoVisibility,\n afterClickText,\n ...otherProps\n } = props;\n const client = useApolloClient();\n const router = useRouter();\n const isLogoutButton = clickAction === LOGOUT;\n const [cookies] = useCookies();\n const { blaze_auth: blazeCookie } = cookies;\n const [showChildren, setShowChildren] = useState(false);\n\n useEffect(\n () => {\n setShowChildren(false);\n },\n [router.asPath]\n );\n\n const checkIfButtonShouldRender = () => {\n if (isLogoutButton) return !!blazeCookie;\n if (!text && !icon) return false;\n return !!(url || hasChildren(children));\n };\n\n const logout = () => {\n handleLogout(client);\n url ? router.reload(url) : router.reload();\n };\n\n const handleClick = () => {\n if (isLogoutButton) logout();\n if (!url && !isLogoutButton) setShowChildren(!showChildren);\n };\n\n if (!checkIfButtonShouldRender()) return null;\n\n const buttonType = !text && icon ? 'icon' : type;\n const modifiers = getClassModifiers(buttonType, { icon, style, ...otherProps });\n const currentProps = url ? { href: url, title: name } : { name };\n const DynamicButton = url && !isLogoutButton ? BlazeLink : BlazeButton;\n updateChildrensParent(children, otherProps.parent.itemId, otherProps.parent.itemEntity);\n\n const renderedChildren = renderChildren(children, { onClose: handleClick });\n const { shouldUseClickWrapper, wrapperProps } = getClickWrapperOptions(children, props);\n const Wrapper = shouldUseClickWrapper ? ClickWrapper : Fragment;\n\n const contentClassName = classnames('button__content', {\n 'button__content--show': showChildren\n });\n\n return (\n <Wrapper {...wrapperProps}>\n {childSeoVisibility && <div className={contentClassName}>{renderedChildren}</div>}\n {!childSeoVisibility && showChildren && renderedChildren}\n <DynamicButton className={modifiers} onClick={handleClick} {...currentProps}>\n {icon && <i className={icon} />}\n {showChildren ? afterClickText : text}\n </DynamicButton>\n </Wrapper>\n );\n};\n\nButton.propTypes = {\n clickAction: PropTypes.string,\n text: PropTypes.string,\n afterClickText: string,\n name: PropTypes.string,\n type: PropTypes.string,\n url: PropTypes.string,\n size: PropTypes.string,\n icon: PropTypes.string,\n style: PropTypes.string,\n childSeoVisibility: bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nButton.defaultProps = {\n clickAction: '',\n text: '',\n afterClickText: '',\n name: '',\n type: '',\n url: null,\n size: '',\n icon: '',\n style: '',\n children: [],\n childSeoVisibility: false\n};\n\nexport default withTitle(Button);\n"],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","names":["Button","props","type","text","url","icon","name","style","children","clickAction","childSeoVisibility","afterClickText","parent","otherProps","client","useApolloClient","router","useRouter","isLogoutButton","LOGOUT","useCookies","cookies","blazeCookie","blaze_auth","useState","showChildren","setShowChildren","useStringTemplate","data","textToUse","afterClickTextToUse","urlToUse","useEffect","asPath","checkIfButtonShouldRender","hasChildren","logout","handleLogout","reload","handleClick","buttonType","modifiers","getClassModifiers","currentProps","href","title","DynamicButton","BlazeLink","BlazeButton","updateChildrensParent","itemId","itemEntity","renderedChildren","renderChildren","onClose","getClickWrapperOptions","shouldUseClickWrapper","wrapperProps","Wrapper","ClickWrapper","Fragment","contentClassName","classnames","propTypes","PropTypes","object","string","size","bool","oneOfType","arrayOf","node","defaultProps","withTitle"],"sources":["../../src/components/Button.js"],"sourcesContent":["import React, { useState, Fragment, useEffect } from 'react';\nimport { useCookies } from 'react-cookie';\nimport { useRouter } from 'next/router';\nimport classnames from 'classnames';\nimport BlazeButton from '@blaze-react/button';\nimport { handleLogout } from '@blaze-cms/core-auth-ui';\nimport { useApolloClient } from '@apollo/client';\nimport PropTypes, { bool, string } from 'prop-types';\nimport { useStringTemplate } from '@blaze-cms/utils-handlebars';\nimport ClickWrapper from './ClickWrapper';\nimport BlazeLink from './BlazeLink';\nimport { withTitle } from '../HOC';\nimport { getClassModifiers } from '../utils';\nimport { LOGOUT } from '../constants';\nimport {\n renderChildren,\n updateChildrensParent,\n hasChildren,\n getClickWrapperOptions\n} from '../helpers';\n\nconst Button = props => {\n const {\n type,\n text,\n url,\n icon,\n name,\n style,\n children,\n clickAction,\n childSeoVisibility,\n afterClickText,\n parent,\n ...otherProps\n } = props;\n const client = useApolloClient();\n const router = useRouter();\n const isLogoutButton = clickAction === LOGOUT;\n const [cookies] = useCookies();\n const { blaze_auth: blazeCookie } = cookies;\n const [showChildren, setShowChildren] = useState(false);\n const {\n data: [textToUse, afterClickTextToUse, urlToUse]\n } = useStringTemplate(parent, [text, afterClickText, url]);\n\n useEffect(\n () => {\n setShowChildren(false);\n },\n [router.asPath]\n );\n\n const checkIfButtonShouldRender = () => {\n if (isLogoutButton) return !!blazeCookie;\n if (!text && !icon) return false;\n return !!(url || hasChildren(children));\n };\n\n const logout = () => {\n handleLogout(client);\n url ? router.reload(urlToUse) : router.reload();\n };\n\n const handleClick = () => {\n if (isLogoutButton) logout();\n if (!url && !isLogoutButton) setShowChildren(!showChildren);\n };\n\n if (!checkIfButtonShouldRender()) return null;\n\n const buttonType = !text && icon ? 'icon' : type;\n const modifiers = getClassModifiers(buttonType, { icon, style, ...otherProps });\n const currentProps = url ? { href: urlToUse, title: name } : { name };\n const DynamicButton = url && !isLogoutButton ? BlazeLink : BlazeButton;\n updateChildrensParent(children, parent.itemId, parent.itemEntity);\n\n const renderedChildren = renderChildren(children, { onClose: handleClick });\n const { shouldUseClickWrapper, wrapperProps } = getClickWrapperOptions(children, props);\n const Wrapper = shouldUseClickWrapper ? ClickWrapper : Fragment;\n\n const contentClassName = classnames('button__content', {\n 'button__content--show': showChildren\n });\n\n return (\n <Wrapper {...wrapperProps}>\n {childSeoVisibility && <div className={contentClassName}>{renderedChildren}</div>}\n {!childSeoVisibility && showChildren && renderedChildren}\n <DynamicButton className={modifiers} onClick={handleClick} {...currentProps}>\n {icon && <i className={icon} />}\n {showChildren ? afterClickTextToUse : textToUse}\n </DynamicButton>\n </Wrapper>\n );\n};\n\nButton.propTypes = {\n parent: PropTypes.object,\n clickAction: PropTypes.string,\n text: PropTypes.string,\n afterClickText: string,\n name: PropTypes.string,\n type: PropTypes.string,\n url: PropTypes.string,\n size: PropTypes.string,\n icon: PropTypes.string,\n style: PropTypes.string,\n childSeoVisibility: bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nButton.defaultProps = {\n parent: {},\n clickAction: '',\n text: '',\n afterClickText: '',\n name: '',\n type: '',\n url: null,\n size: '',\n icon: '',\n style: '',\n children: [],\n childSeoVisibility: false\n};\n\nexport default withTitle(Button);\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- const _excluded = ["type", "text", "url", "icon", "name", "style", "children", "clickAction", "childSeoVisibility", "afterClickText"];
4
+ const _excluded = ["type", "text", "url", "icon", "name", "style", "children", "clickAction", "childSeoVisibility", "afterClickText", "parent"];
5
5
 
6
6
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
7
7
 
@@ -15,6 +15,7 @@ import BlazeButton from '@blaze-react/button';
15
15
  import { handleLogout } from '@blaze-cms/core-auth-ui';
16
16
  import { useApolloClient } from '@apollo/client';
17
17
  import PropTypes, { bool, string } from 'prop-types';
18
+ import { useStringTemplate } from '@blaze-cms/utils-handlebars';
18
19
  import ClickWrapper from './ClickWrapper';
19
20
  import BlazeLink from './BlazeLink';
20
21
  import { withTitle } from '../HOC';
@@ -33,7 +34,8 @@ const Button = props => {
33
34
  children,
34
35
  clickAction,
35
36
  childSeoVisibility,
36
- afterClickText
37
+ afterClickText,
38
+ parent
37
39
  } = props,
38
40
  otherProps = _objectWithoutProperties(props, _excluded);
39
41
 
@@ -45,6 +47,9 @@ const Button = props => {
45
47
  blaze_auth: blazeCookie
46
48
  } = cookies;
47
49
  const [showChildren, setShowChildren] = useState(false);
50
+ const {
51
+ data: [textToUse, afterClickTextToUse, urlToUse]
52
+ } = useStringTemplate(parent, [text, afterClickText, url]);
48
53
  useEffect(() => {
49
54
  setShowChildren(false);
50
55
  }, [router.asPath]);
@@ -57,7 +62,7 @@ const Button = props => {
57
62
 
58
63
  const logout = () => {
59
64
  handleLogout(client);
60
- url ? router.reload(url) : router.reload();
65
+ url ? router.reload(urlToUse) : router.reload();
61
66
  };
62
67
 
63
68
  const handleClick = () => {
@@ -72,13 +77,13 @@ const Button = props => {
72
77
  style
73
78
  }, otherProps));
74
79
  const currentProps = url ? {
75
- href: url,
80
+ href: urlToUse,
76
81
  title: name
77
82
  } : {
78
83
  name
79
84
  };
80
85
  const DynamicButton = url && !isLogoutButton ? BlazeLink : BlazeButton;
81
- updateChildrensParent(children, otherProps.parent.itemId, otherProps.parent.itemEntity);
86
+ updateChildrensParent(children, parent.itemId, parent.itemEntity);
82
87
  const renderedChildren = renderChildren(children, {
83
88
  onClose: handleClick
84
89
  });
@@ -97,10 +102,11 @@ const Button = props => {
97
102
  onClick: handleClick
98
103
  }, currentProps), icon && /*#__PURE__*/React.createElement("i", {
99
104
  className: icon
100
- }), showChildren ? afterClickText : text));
105
+ }), showChildren ? afterClickTextToUse : textToUse));
101
106
  };
102
107
 
103
108
  Button.propTypes = {
109
+ parent: PropTypes.object,
104
110
  clickAction: PropTypes.string,
105
111
  text: PropTypes.string,
106
112
  afterClickText: string,
@@ -114,6 +120,7 @@ Button.propTypes = {
114
120
  children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])
115
121
  };
116
122
  Button.defaultProps = {
123
+ parent: {},
117
124
  clickAction: '',
118
125
  text: '',
119
126
  afterClickText: '',
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","names":["React","useState","Fragment","useEffect","useCookies","useRouter","classnames","BlazeButton","handleLogout","useApolloClient","PropTypes","bool","string","ClickWrapper","BlazeLink","withTitle","getClassModifiers","LOGOUT","renderChildren","updateChildrensParent","hasChildren","getClickWrapperOptions","Button","props","type","text","url","icon","name","style","children","clickAction","childSeoVisibility","afterClickText","otherProps","client","router","isLogoutButton","cookies","blaze_auth","blazeCookie","showChildren","setShowChildren","asPath","checkIfButtonShouldRender","logout","reload","handleClick","buttonType","modifiers","currentProps","href","title","DynamicButton","parent","itemId","itemEntity","renderedChildren","onClose","shouldUseClickWrapper","wrapperProps","Wrapper","contentClassName","propTypes","size","oneOfType","arrayOf","node","defaultProps"],"sources":["../../src/components/Button.js"],"sourcesContent":["import React, { useState, Fragment, useEffect } from 'react';\nimport { useCookies } from 'react-cookie';\nimport { useRouter } from 'next/router';\nimport classnames from 'classnames';\nimport BlazeButton from '@blaze-react/button';\nimport { handleLogout } from '@blaze-cms/core-auth-ui';\nimport { useApolloClient } from '@apollo/client';\nimport PropTypes, { bool, string } from 'prop-types';\nimport ClickWrapper from './ClickWrapper';\nimport BlazeLink from './BlazeLink';\nimport { withTitle } from '../HOC';\nimport { getClassModifiers } from '../utils';\nimport { LOGOUT } from '../constants';\nimport {\n renderChildren,\n updateChildrensParent,\n hasChildren,\n getClickWrapperOptions\n} from '../helpers';\n\nconst Button = props => {\n const {\n type,\n text,\n url,\n icon,\n name,\n style,\n children,\n clickAction,\n childSeoVisibility,\n afterClickText,\n ...otherProps\n } = props;\n const client = useApolloClient();\n const router = useRouter();\n const isLogoutButton = clickAction === LOGOUT;\n const [cookies] = useCookies();\n const { blaze_auth: blazeCookie } = cookies;\n const [showChildren, setShowChildren] = useState(false);\n\n useEffect(\n () => {\n setShowChildren(false);\n },\n [router.asPath]\n );\n\n const checkIfButtonShouldRender = () => {\n if (isLogoutButton) return !!blazeCookie;\n if (!text && !icon) return false;\n return !!(url || hasChildren(children));\n };\n\n const logout = () => {\n handleLogout(client);\n url ? router.reload(url) : router.reload();\n };\n\n const handleClick = () => {\n if (isLogoutButton) logout();\n if (!url && !isLogoutButton) setShowChildren(!showChildren);\n };\n\n if (!checkIfButtonShouldRender()) return null;\n\n const buttonType = !text && icon ? 'icon' : type;\n const modifiers = getClassModifiers(buttonType, { icon, style, ...otherProps });\n const currentProps = url ? { href: url, title: name } : { name };\n const DynamicButton = url && !isLogoutButton ? BlazeLink : BlazeButton;\n updateChildrensParent(children, otherProps.parent.itemId, otherProps.parent.itemEntity);\n\n const renderedChildren = renderChildren(children, { onClose: handleClick });\n const { shouldUseClickWrapper, wrapperProps } = getClickWrapperOptions(children, props);\n const Wrapper = shouldUseClickWrapper ? ClickWrapper : Fragment;\n\n const contentClassName = classnames('button__content', {\n 'button__content--show': showChildren\n });\n\n return (\n <Wrapper {...wrapperProps}>\n {childSeoVisibility && <div className={contentClassName}>{renderedChildren}</div>}\n {!childSeoVisibility && showChildren && renderedChildren}\n <DynamicButton className={modifiers} onClick={handleClick} {...currentProps}>\n {icon && <i className={icon} />}\n {showChildren ? afterClickText : text}\n </DynamicButton>\n </Wrapper>\n );\n};\n\nButton.propTypes = {\n clickAction: PropTypes.string,\n text: PropTypes.string,\n afterClickText: string,\n name: PropTypes.string,\n type: PropTypes.string,\n url: PropTypes.string,\n size: PropTypes.string,\n icon: PropTypes.string,\n style: PropTypes.string,\n childSeoVisibility: bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nButton.defaultProps = {\n clickAction: '',\n text: '',\n afterClickText: '',\n name: '',\n type: '',\n url: null,\n size: '',\n icon: '',\n style: '',\n children: [],\n childSeoVisibility: false\n};\n\nexport default withTitle(Button);\n"],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","names":["React","useState","Fragment","useEffect","useCookies","useRouter","classnames","BlazeButton","handleLogout","useApolloClient","PropTypes","bool","string","useStringTemplate","ClickWrapper","BlazeLink","withTitle","getClassModifiers","LOGOUT","renderChildren","updateChildrensParent","hasChildren","getClickWrapperOptions","Button","props","type","text","url","icon","name","style","children","clickAction","childSeoVisibility","afterClickText","parent","otherProps","client","router","isLogoutButton","cookies","blaze_auth","blazeCookie","showChildren","setShowChildren","data","textToUse","afterClickTextToUse","urlToUse","asPath","checkIfButtonShouldRender","logout","reload","handleClick","buttonType","modifiers","currentProps","href","title","DynamicButton","itemId","itemEntity","renderedChildren","onClose","shouldUseClickWrapper","wrapperProps","Wrapper","contentClassName","propTypes","object","size","oneOfType","arrayOf","node","defaultProps"],"sources":["../../src/components/Button.js"],"sourcesContent":["import React, { useState, Fragment, useEffect } from 'react';\nimport { useCookies } from 'react-cookie';\nimport { useRouter } from 'next/router';\nimport classnames from 'classnames';\nimport BlazeButton from '@blaze-react/button';\nimport { handleLogout } from '@blaze-cms/core-auth-ui';\nimport { useApolloClient } from '@apollo/client';\nimport PropTypes, { bool, string } from 'prop-types';\nimport { useStringTemplate } from '@blaze-cms/utils-handlebars';\nimport ClickWrapper from './ClickWrapper';\nimport BlazeLink from './BlazeLink';\nimport { withTitle } from '../HOC';\nimport { getClassModifiers } from '../utils';\nimport { LOGOUT } from '../constants';\nimport {\n renderChildren,\n updateChildrensParent,\n hasChildren,\n getClickWrapperOptions\n} from '../helpers';\n\nconst Button = props => {\n const {\n type,\n text,\n url,\n icon,\n name,\n style,\n children,\n clickAction,\n childSeoVisibility,\n afterClickText,\n parent,\n ...otherProps\n } = props;\n const client = useApolloClient();\n const router = useRouter();\n const isLogoutButton = clickAction === LOGOUT;\n const [cookies] = useCookies();\n const { blaze_auth: blazeCookie } = cookies;\n const [showChildren, setShowChildren] = useState(false);\n const {\n data: [textToUse, afterClickTextToUse, urlToUse]\n } = useStringTemplate(parent, [text, afterClickText, url]);\n\n useEffect(\n () => {\n setShowChildren(false);\n },\n [router.asPath]\n );\n\n const checkIfButtonShouldRender = () => {\n if (isLogoutButton) return !!blazeCookie;\n if (!text && !icon) return false;\n return !!(url || hasChildren(children));\n };\n\n const logout = () => {\n handleLogout(client);\n url ? router.reload(urlToUse) : router.reload();\n };\n\n const handleClick = () => {\n if (isLogoutButton) logout();\n if (!url && !isLogoutButton) setShowChildren(!showChildren);\n };\n\n if (!checkIfButtonShouldRender()) return null;\n\n const buttonType = !text && icon ? 'icon' : type;\n const modifiers = getClassModifiers(buttonType, { icon, style, ...otherProps });\n const currentProps = url ? { href: urlToUse, title: name } : { name };\n const DynamicButton = url && !isLogoutButton ? BlazeLink : BlazeButton;\n updateChildrensParent(children, parent.itemId, parent.itemEntity);\n\n const renderedChildren = renderChildren(children, { onClose: handleClick });\n const { shouldUseClickWrapper, wrapperProps } = getClickWrapperOptions(children, props);\n const Wrapper = shouldUseClickWrapper ? ClickWrapper : Fragment;\n\n const contentClassName = classnames('button__content', {\n 'button__content--show': showChildren\n });\n\n return (\n <Wrapper {...wrapperProps}>\n {childSeoVisibility && <div className={contentClassName}>{renderedChildren}</div>}\n {!childSeoVisibility && showChildren && renderedChildren}\n <DynamicButton className={modifiers} onClick={handleClick} {...currentProps}>\n {icon && <i className={icon} />}\n {showChildren ? afterClickTextToUse : textToUse}\n </DynamicButton>\n </Wrapper>\n );\n};\n\nButton.propTypes = {\n parent: PropTypes.object,\n clickAction: PropTypes.string,\n text: PropTypes.string,\n afterClickText: string,\n name: PropTypes.string,\n type: PropTypes.string,\n url: PropTypes.string,\n size: PropTypes.string,\n icon: PropTypes.string,\n style: PropTypes.string,\n childSeoVisibility: bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nButton.defaultProps = {\n parent: {},\n clickAction: '',\n text: '',\n afterClickText: '',\n name: '',\n type: '',\n url: null,\n size: '',\n icon: '',\n style: '',\n children: [],\n childSeoVisibility: false\n};\n\nexport default withTitle(Button);\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaze-cms/react-page-builder",
3
- "version": "0.125.0-alpha.3",
3
+ "version": "0.125.0-core-styles.0",
4
4
  "description": "Blaze react page builder",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-es/index.js",
@@ -31,9 +31,10 @@
31
31
  "@blaze-cms/core-errors": "^0.118.0",
32
32
  "@blaze-cms/image-cdn-react": "0.3.0-alpha.3",
33
33
  "@blaze-cms/nextjs-components": "^0.124.0",
34
- "@blaze-cms/plugin-search-ui": "^0.125.0-alpha.1",
34
+ "@blaze-cms/plugin-search-ui": "0.125.0-core-styles.0",
35
35
  "@blaze-cms/setup-ui": "^0.92.0",
36
36
  "@blaze-cms/utils": "^0.118.0",
37
+ "@blaze-cms/utils-handlebars": "0.125.0-core-styles.0",
37
38
  "@blaze-react/breadcrumb": "0.8.0-alpha.60",
38
39
  "@blaze-react/button": "0.5.19",
39
40
  "@blaze-react/checkboxes": "0.5.31",
@@ -86,5 +87,5 @@
86
87
  "lib/*",
87
88
  "lib-es/*"
88
89
  ],
89
- "gitHead": "6dd2cf1e5dcf86ad90a48d333e1e517fdd208800"
90
+ "gitHead": "14973185e5f2ade1d5258477ea188dbc3c6756d2"
90
91
  }
@@ -6,6 +6,7 @@ import BlazeButton from '@blaze-react/button';
6
6
  import { handleLogout } from '@blaze-cms/core-auth-ui';
7
7
  import { useApolloClient } from '@apollo/client';
8
8
  import PropTypes, { bool, string } from 'prop-types';
9
+ import { useStringTemplate } from '@blaze-cms/utils-handlebars';
9
10
  import ClickWrapper from './ClickWrapper';
10
11
  import BlazeLink from './BlazeLink';
11
12
  import { withTitle } from '../HOC';
@@ -30,6 +31,7 @@ const Button = props => {
30
31
  clickAction,
31
32
  childSeoVisibility,
32
33
  afterClickText,
34
+ parent,
33
35
  ...otherProps
34
36
  } = props;
35
37
  const client = useApolloClient();
@@ -38,6 +40,9 @@ const Button = props => {
38
40
  const [cookies] = useCookies();
39
41
  const { blaze_auth: blazeCookie } = cookies;
40
42
  const [showChildren, setShowChildren] = useState(false);
43
+ const {
44
+ data: [textToUse, afterClickTextToUse, urlToUse]
45
+ } = useStringTemplate(parent, [text, afterClickText, url]);
41
46
 
42
47
  useEffect(
43
48
  () => {
@@ -54,7 +59,7 @@ const Button = props => {
54
59
 
55
60
  const logout = () => {
56
61
  handleLogout(client);
57
- url ? router.reload(url) : router.reload();
62
+ url ? router.reload(urlToUse) : router.reload();
58
63
  };
59
64
 
60
65
  const handleClick = () => {
@@ -66,9 +71,9 @@ const Button = props => {
66
71
 
67
72
  const buttonType = !text && icon ? 'icon' : type;
68
73
  const modifiers = getClassModifiers(buttonType, { icon, style, ...otherProps });
69
- const currentProps = url ? { href: url, title: name } : { name };
74
+ const currentProps = url ? { href: urlToUse, title: name } : { name };
70
75
  const DynamicButton = url && !isLogoutButton ? BlazeLink : BlazeButton;
71
- updateChildrensParent(children, otherProps.parent.itemId, otherProps.parent.itemEntity);
76
+ updateChildrensParent(children, parent.itemId, parent.itemEntity);
72
77
 
73
78
  const renderedChildren = renderChildren(children, { onClose: handleClick });
74
79
  const { shouldUseClickWrapper, wrapperProps } = getClickWrapperOptions(children, props);
@@ -84,13 +89,14 @@ const Button = props => {
84
89
  {!childSeoVisibility && showChildren && renderedChildren}
85
90
  <DynamicButton className={modifiers} onClick={handleClick} {...currentProps}>
86
91
  {icon && <i className={icon} />}
87
- {showChildren ? afterClickText : text}
92
+ {showChildren ? afterClickTextToUse : textToUse}
88
93
  </DynamicButton>
89
94
  </Wrapper>
90
95
  );
91
96
  };
92
97
 
93
98
  Button.propTypes = {
99
+ parent: PropTypes.object,
94
100
  clickAction: PropTypes.string,
95
101
  text: PropTypes.string,
96
102
  afterClickText: string,
@@ -105,6 +111,7 @@ Button.propTypes = {
105
111
  };
106
112
 
107
113
  Button.defaultProps = {
114
+ parent: {},
108
115
  clickAction: '',
109
116
  text: '',
110
117
  afterClickText: '',
@@ -12,6 +12,13 @@ jest.mock('next/router', () => ({
12
12
  useRouter: jest.fn(() => ({ asPath: '' }))
13
13
  }));
14
14
 
15
+ jest.mock('@blaze-cms/utils-handlebars', () => ({
16
+ useStringTemplate: jest.fn((parent, [text, after, url]) => ({
17
+ loading: false,
18
+ data: [text, after, url]
19
+ }))
20
+ }));
21
+
15
22
  const componentProps = {
16
23
  type: 'icon',
17
24
  text: 'test',