@blaze-cms/react-page-builder 0.146.0-node18-tooltips.32 → 0.146.0-node18-tooltips.33
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 +16 -0
- package/lib/components/Carousel/Carousel.js +44 -7
- package/lib/components/Carousel/Carousel.js.map +1 -1
- package/lib/components/Carousel/CarouselImage/CarouselImage.js +2 -1
- package/lib/components/Carousel/CarouselImage/CarouselImage.js.map +1 -1
- package/lib/components/SearchContent/SearchContent.js +4 -2
- package/lib/components/SearchContent/SearchContent.js.map +1 -1
- package/lib/components/SearchContent/SearchContentResults.js +2 -1
- package/lib/components/SearchContent/SearchContentResults.js.map +1 -1
- package/lib/hooks/use-get-image-id-from-relation.js +4 -3
- package/lib/hooks/use-get-image-id-from-relation.js.map +1 -1
- package/lib-es/components/Carousel/Carousel.js +39 -9
- package/lib-es/components/Carousel/Carousel.js.map +1 -1
- package/lib-es/components/Carousel/CarouselImage/CarouselImage.js +2 -1
- package/lib-es/components/Carousel/CarouselImage/CarouselImage.js.map +1 -1
- package/lib-es/components/SearchContent/SearchContent.js +8 -2
- package/lib-es/components/SearchContent/SearchContent.js.map +1 -1
- package/lib-es/components/SearchContent/SearchContentResults.js +2 -1
- package/lib-es/components/SearchContent/SearchContentResults.js.map +1 -1
- package/lib-es/hooks/use-get-image-id-from-relation.js +2 -2
- package/lib-es/hooks/use-get-image-id-from-relation.js.map +1 -1
- package/package.json +3 -3
- package/src/components/Carousel/Carousel.js +46 -9
- package/src/components/Carousel/CarouselImage/CarouselImage.js +3 -1
- package/src/components/SearchContent/SearchContent.js +8 -2
- package/src/components/SearchContent/SearchContentResults.js +1 -1
- package/src/hooks/use-get-image-id-from-relation.js +2 -1
- package/tests/unit/src/components/Carousel/Carousel.test.js +45 -35
- package/tests/unit/src/components/Carousel/__snapshots__/Carousel.test.js.snap +49 -8
- package/tests/unit/src/components/SearchContent/SearchContent.test.js +32 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
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.146.0-node18-tooltips.33](https://github.com/thebyte9/blaze/compare/v0.146.0-node18-tooltips.32...v0.146.0-node18-tooltips.33) (2025-12-15)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* reopen autosuggest after search submission ([#5027](https://github.com/thebyte9/blaze/issues/5027)) ([b09acc1](https://github.com/thebyte9/blaze/commit/b09acc12a66d0a67639ff0edaae82b2d376f53dd))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* get carousel images from record data ([#4341](https://github.com/thebyte9/blaze/issues/4341)) ([904e8a3](https://github.com/thebyte9/blaze/commit/904e8a319ab053ee470dbb4477c3865d3a5435df))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
6
22
|
# [0.146.0-node18-tooltips.32](https://github.com/thebyte9/blaze/compare/v0.146.0-node18-tooltips.31...v0.146.0-node18-tooltips.32) (2025-12-15)
|
|
7
23
|
|
|
8
24
|
|
|
@@ -1,36 +1,68 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
require("core-js/modules/es.array.iterator.js");
|
|
3
4
|
require("core-js/modules/es.object.define-property.js");
|
|
5
|
+
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
6
|
+
require("core-js/modules/es.object.to-string.js");
|
|
7
|
+
require("core-js/modules/es.string.iterator.js");
|
|
8
|
+
require("core-js/modules/es.weak-map.js");
|
|
9
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
4
10
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
11
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
12
|
Object.defineProperty(exports, "__esModule", {
|
|
6
13
|
value: true
|
|
7
14
|
});
|
|
8
15
|
exports["default"] = void 0;
|
|
16
|
+
require("core-js/modules/es.array.concat.js");
|
|
9
17
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
18
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
19
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
|
-
var _react =
|
|
20
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
12
21
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
22
|
+
var _nextjsComponents = require("@blaze-cms/nextjs-components");
|
|
23
|
+
var _hooks = require("../../hooks");
|
|
13
24
|
var _CarouselImage = _interopRequireDefault(require("./CarouselImage"));
|
|
14
25
|
var _CarouselRender = _interopRequireDefault(require("./CarouselRender"));
|
|
15
26
|
var _useCarouselNavigation = require("./hooks/useCarouselNavigation");
|
|
16
27
|
var _helpers = require("../../helpers");
|
|
17
|
-
var _excluded = ["caption", "imageIds", "isCaptionDisplayed", "VariantComponent"];
|
|
28
|
+
var _excluded = ["caption", "imageIds", "isCaptionDisplayed", "VariantComponent", "imagesProperty", "entity", "parent"];
|
|
29
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
30
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
18
31
|
var Carousel = function Carousel(props) {
|
|
19
32
|
var caption = props.caption,
|
|
20
33
|
imageIds = props.imageIds,
|
|
21
34
|
isCaptionDisplayed = props.isCaptionDisplayed,
|
|
22
35
|
VariantComponent = props.VariantComponent,
|
|
36
|
+
imagesProperty = props.imagesProperty,
|
|
37
|
+
entitySetting = props.entity,
|
|
38
|
+
_props$parent = props.parent,
|
|
39
|
+
itemId = _props$parent.itemId,
|
|
40
|
+
itemEntity = _props$parent.itemEntity,
|
|
23
41
|
otherProps = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
|
42
|
+
var _useContext = (0, _react.useContext)(_nextjsComponents.MainContext),
|
|
43
|
+
isPreview = _useContext.isPreview;
|
|
24
44
|
var navigationProps = (0, _useCarouselNavigation.useCarouselNavigation)(props);
|
|
25
|
-
|
|
45
|
+
var entity = imagesProperty ? entitySetting || itemEntity : null;
|
|
46
|
+
var skipSingleEntitySchema = !entity;
|
|
47
|
+
var _useGetSingleEntitySc = (0, _hooks.useGetSingleEntitySchema)(entity, skipSingleEntitySchema),
|
|
48
|
+
_useGetSingleEntitySc2 = _useGetSingleEntitySc.data,
|
|
49
|
+
_useGetSingleEntitySc3 = _useGetSingleEntitySc2 === void 0 ? {} : _useGetSingleEntitySc2,
|
|
50
|
+
_useGetSingleEntitySc4 = _useGetSingleEntitySc3.getEntitySchema,
|
|
51
|
+
_useGetSingleEntitySc5 = _useGetSingleEntitySc4 === void 0 ? {} : _useGetSingleEntitySc4,
|
|
52
|
+
actions = _useGetSingleEntitySc5.actions;
|
|
53
|
+
var _useGetImageIdFromRel = (0, _hooks.useGetImageIdFromRelation)(itemId, imagesProperty, actions, true, isPreview, false),
|
|
54
|
+
recordData = _useGetImageIdFromRel.data,
|
|
55
|
+
recordDataLoading = _useGetImageIdFromRel.loading;
|
|
56
|
+
var updatedImageIds = recordDataLoading ? [] : [].concat((0, _toConsumableArray2["default"])((0, _helpers.getImageIds)(imagesProperty, recordData, null)), (0, _toConsumableArray2["default"])(imageIds));
|
|
57
|
+
if (!updatedImageIds || !updatedImageIds.length) return null;
|
|
26
58
|
var shouldDisplayCaption = isCaptionDisplayed && caption;
|
|
27
|
-
var _getDisplayCountData = (0, _helpers.getDisplayCountData)(navigationProps.showCount,
|
|
59
|
+
var _getDisplayCountData = (0, _helpers.getDisplayCountData)(navigationProps.showCount, updatedImageIds),
|
|
28
60
|
shouldDisplayCount = _getDisplayCountData.shouldDisplayCount,
|
|
29
61
|
countMessage = _getDisplayCountData.countMessage;
|
|
30
62
|
var ComponentToRender = VariantComponent || _CarouselRender["default"];
|
|
31
63
|
return /*#__PURE__*/_react["default"].createElement(ComponentToRender, (0, _extends2["default"])({
|
|
32
64
|
caption: caption,
|
|
33
|
-
imageIds:
|
|
65
|
+
imageIds: updatedImageIds,
|
|
34
66
|
CarouselImage: _CarouselImage["default"],
|
|
35
67
|
shouldDisplayCaption: shouldDisplayCaption,
|
|
36
68
|
shouldDisplayCount: shouldDisplayCount,
|
|
@@ -39,15 +71,20 @@ var Carousel = function Carousel(props) {
|
|
|
39
71
|
};
|
|
40
72
|
Carousel.propTypes = {
|
|
41
73
|
caption: _propTypes["default"].string,
|
|
74
|
+
entity: _propTypes["default"].string,
|
|
42
75
|
imageIds: _propTypes["default"].array,
|
|
76
|
+
imagesProperty: _propTypes["default"].array,
|
|
43
77
|
isCaptionDisplayed: _propTypes["default"].bool,
|
|
44
|
-
VariantComponent: _propTypes["default"].func
|
|
78
|
+
VariantComponent: _propTypes["default"].func,
|
|
79
|
+
parent: _propTypes["default"].object.isRequired
|
|
45
80
|
};
|
|
46
81
|
Carousel.defaultProps = {
|
|
47
82
|
VariantComponent: null,
|
|
48
83
|
caption: '',
|
|
49
84
|
imageIds: [],
|
|
50
|
-
|
|
85
|
+
imagesProperty: [],
|
|
86
|
+
isCaptionDisplayed: false,
|
|
87
|
+
entity: null
|
|
51
88
|
};
|
|
52
89
|
var _default = exports["default"] = Carousel;
|
|
53
90
|
//# sourceMappingURL=Carousel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.js","names":["_react","
|
|
1
|
+
{"version":3,"file":"Carousel.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_nextjsComponents","_hooks","_CarouselImage","_CarouselRender","_useCarouselNavigation","_helpers","_excluded","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Carousel","props","caption","imageIds","isCaptionDisplayed","VariantComponent","imagesProperty","entitySetting","entity","_props$parent","parent","itemId","itemEntity","otherProps","_objectWithoutProperties2","_useContext","useContext","MainContext","isPreview","navigationProps","useCarouselNavigation","skipSingleEntitySchema","_useGetSingleEntitySc","useGetSingleEntitySchema","_useGetSingleEntitySc2","data","_useGetSingleEntitySc3","_useGetSingleEntitySc4","getEntitySchema","_useGetSingleEntitySc5","actions","_useGetImageIdFromRel","useGetImageIdFromRelation","recordData","recordDataLoading","loading","updatedImageIds","concat","_toConsumableArray2","getImageIds","length","shouldDisplayCaption","_getDisplayCountData","getDisplayCountData","showCount","shouldDisplayCount","countMessage","ComponentToRender","CarouselRender","createElement","_extends2","CarouselImage","propTypes","PropTypes","string","array","bool","func","object","isRequired","defaultProps","_default","exports"],"sources":["../../../src/components/Carousel/Carousel.js"],"sourcesContent":["import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { MainContext } from '@blaze-cms/nextjs-components';\nimport { useGetImageIdFromRelation, useGetSingleEntitySchema } from '../../hooks';\nimport CarouselImage from './CarouselImage';\nimport CarouselRender from './CarouselRender';\nimport { useCarouselNavigation } from './hooks/useCarouselNavigation';\nimport { getDisplayCountData, getImageIds } from '../../helpers';\n\nconst Carousel = props => {\n const {\n caption,\n imageIds,\n isCaptionDisplayed,\n VariantComponent,\n imagesProperty,\n entity: entitySetting,\n parent: { itemId, itemEntity },\n ...otherProps\n } = props;\n const { isPreview } = useContext(MainContext);\n const navigationProps = useCarouselNavigation(props);\n\n const entity = imagesProperty ? entitySetting || itemEntity : null;\n const skipSingleEntitySchema = !entity;\n\n const { data: { getEntitySchema: { actions } = {} } = {} } = useGetSingleEntitySchema(\n entity,\n skipSingleEntitySchema\n );\n\n const { data: recordData, loading: recordDataLoading } = useGetImageIdFromRelation(\n itemId,\n imagesProperty,\n actions,\n true,\n isPreview,\n false\n );\n\n const updatedImageIds = recordDataLoading\n ? []\n : [...getImageIds(imagesProperty, recordData, null), ...imageIds];\n\n if (!updatedImageIds || !updatedImageIds.length) return null;\n const shouldDisplayCaption = isCaptionDisplayed && caption;\n\n const { shouldDisplayCount, countMessage } = getDisplayCountData(\n navigationProps.showCount,\n updatedImageIds\n );\n\n const ComponentToRender = VariantComponent || CarouselRender;\n\n return (\n <ComponentToRender\n caption={caption}\n imageIds={updatedImageIds}\n CarouselImage={CarouselImage}\n shouldDisplayCaption={shouldDisplayCaption}\n shouldDisplayCount={shouldDisplayCount}\n countMessage={countMessage}\n {...navigationProps}\n {...otherProps}\n />\n );\n};\n\nCarousel.propTypes = {\n caption: PropTypes.string,\n entity: PropTypes.string,\n imageIds: PropTypes.array,\n imagesProperty: PropTypes.array,\n isCaptionDisplayed: PropTypes.bool,\n VariantComponent: PropTypes.func,\n parent: PropTypes.object.isRequired\n};\n\nCarousel.defaultProps = {\n VariantComponent: null,\n caption: '',\n imageIds: [],\n imagesProperty: [],\n isCaptionDisplayed: false,\n entity: null\n};\n\nexport default Carousel;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -41,9 +41,10 @@ var CarouselImage = function CarouselImage(_ref) {
|
|
|
41
41
|
toggleModal();
|
|
42
42
|
handleSelectedImage(imageId);
|
|
43
43
|
};
|
|
44
|
+
if (!loading && !imageUrl) return null;
|
|
44
45
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
45
46
|
className: "carousel__slide"
|
|
46
|
-
}, loading ? /*#__PURE__*/_react["default"].createElement("
|
|
47
|
+
}, loading ? /*#__PURE__*/_react["default"].createElement("span", null) : /*#__PURE__*/_react["default"].createElement(_LazyImage["default"], {
|
|
47
48
|
src: imageUrl,
|
|
48
49
|
alt: alt,
|
|
49
50
|
sizeKey: "carousel",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CarouselImage.js","names":["_react","_interopRequireDefault","require","_propTypes","_hooks","_utils","_LazyImage","_constants","CarouselImage","_ref","imageId","enableLightbox","toggleModal","handleSelectedImage","priority","_useGetImages","useGetImages","data","loading","error","message","_ref2","getFile","url","_ref2$url","imageUrl","_ref2$data","imageData","_getImageData","getImageData","altText","alt","CAROUSEL_DEFAULT_ALT","handleEnableLightbox","createElement","className","src","sizeKey","onClick","role","propTypes","PropTypes","string","isRequired","bool","func","_default","exports"],"sources":["../../../../src/components/Carousel/CarouselImage/CarouselImage.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useGetImages } from '../../../hooks';\nimport { getImageData } from '../../../utils';\nimport LazyImage from '../../LazyImage';\nimport { CAROUSEL_DEFAULT_ALT } from './constants';\n\nconst CarouselImage = ({ imageId, enableLightbox, toggleModal, handleSelectedImage, priority }) => {\n const { data, loading, error } = useGetImages(imageId);\n\n if (error) return error.message;\n\n const { url: imageUrl = '', data: imageData = {} } = data.getFile || {\n getFile: { url: '', data: {} }\n };\n\n const { altText } = getImageData({}, imageData);\n const alt = altText || CAROUSEL_DEFAULT_ALT;\n\n const handleEnableLightbox = () => {\n if (!enableLightbox) return;\n toggleModal();\n handleSelectedImage(imageId);\n };\n\n return (\n <div className=\"carousel__slide\">\n {loading ? (\n <
|
|
1
|
+
{"version":3,"file":"CarouselImage.js","names":["_react","_interopRequireDefault","require","_propTypes","_hooks","_utils","_LazyImage","_constants","CarouselImage","_ref","imageId","enableLightbox","toggleModal","handleSelectedImage","priority","_useGetImages","useGetImages","data","loading","error","message","_ref2","getFile","url","_ref2$url","imageUrl","_ref2$data","imageData","_getImageData","getImageData","altText","alt","CAROUSEL_DEFAULT_ALT","handleEnableLightbox","createElement","className","src","sizeKey","onClick","role","propTypes","PropTypes","string","isRequired","bool","func","_default","exports"],"sources":["../../../../src/components/Carousel/CarouselImage/CarouselImage.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useGetImages } from '../../../hooks';\nimport { getImageData } from '../../../utils';\nimport LazyImage from '../../LazyImage';\nimport { CAROUSEL_DEFAULT_ALT } from './constants';\n\nconst CarouselImage = ({ imageId, enableLightbox, toggleModal, handleSelectedImage, priority }) => {\n const { data, loading, error } = useGetImages(imageId);\n\n if (error) return error.message;\n\n const { url: imageUrl = '', data: imageData = {} } = data.getFile || {\n getFile: { url: '', data: {} }\n };\n\n const { altText } = getImageData({}, imageData);\n const alt = altText || CAROUSEL_DEFAULT_ALT;\n\n const handleEnableLightbox = () => {\n if (!enableLightbox) return;\n toggleModal();\n handleSelectedImage(imageId);\n };\n\n if (!loading && !imageUrl) return null;\n\n return (\n <div className=\"carousel__slide\">\n {loading ? (\n <span />\n ) : (\n <LazyImage\n src={imageUrl}\n alt={alt}\n sizeKey=\"carousel\"\n onClick={handleEnableLightbox}\n role=\"button\"\n aria-label=\"View Image\"\n priority={priority}\n />\n )}\n </div>\n );\n};\n\nCarouselImage.propTypes = {\n imageId: PropTypes.string.isRequired,\n enableLightbox: PropTypes.bool.isRequired,\n toggleModal: PropTypes.func.isRequired,\n handleSelectedImage: PropTypes.func.isRequired,\n priority: PropTypes.bool.isRequired\n};\n\nexport default CarouselImage;\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AAEA,IAAMM,aAAa,GAAG,SAAhBA,aAAaA,CAAAC,IAAA,EAAgF;EAAA,IAA1EC,OAAO,GAAAD,IAAA,CAAPC,OAAO;IAAEC,cAAc,GAAAF,IAAA,CAAdE,cAAc;IAAEC,WAAW,GAAAH,IAAA,CAAXG,WAAW;IAAEC,mBAAmB,GAAAJ,IAAA,CAAnBI,mBAAmB;IAAEC,QAAQ,GAAAL,IAAA,CAARK,QAAQ;EAC1F,IAAAC,aAAA,GAAiC,IAAAC,mBAAY,EAACN,OAAO,CAAC;IAA9CO,IAAI,GAAAF,aAAA,CAAJE,IAAI;IAAEC,OAAO,GAAAH,aAAA,CAAPG,OAAO;IAAEC,KAAK,GAAAJ,aAAA,CAALI,KAAK;EAE5B,IAAIA,KAAK,EAAE,OAAOA,KAAK,CAACC,OAAO;EAE/B,IAAAC,KAAA,GAAqDJ,IAAI,CAACK,OAAO,IAAI;MACnEA,OAAO,EAAE;QAAEC,GAAG,EAAE,EAAE;QAAEN,IAAI,EAAE,CAAC;MAAE;IAC/B,CAAC;IAAAO,SAAA,GAAAH,KAAA,CAFOE,GAAG;IAAEE,QAAQ,GAAAD,SAAA,cAAG,EAAE,GAAAA,SAAA;IAAAE,UAAA,GAAAL,KAAA,CAAEJ,IAAI;IAAEU,SAAS,GAAAD,UAAA,cAAG,CAAC,CAAC,GAAAA,UAAA;EAIhD,IAAAE,aAAA,GAAoB,IAAAC,mBAAY,EAAC,CAAC,CAAC,EAAEF,SAAS,CAAC;IAAvCG,OAAO,GAAAF,aAAA,CAAPE,OAAO;EACf,IAAMC,GAAG,GAAGD,OAAO,IAAIE,+BAAoB;EAE3C,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAA,EAAS;IACjC,IAAI,CAACtB,cAAc,EAAE;IACrBC,WAAW,CAAC,CAAC;IACbC,mBAAmB,CAACH,OAAO,CAAC;EAC9B,CAAC;EAED,IAAI,CAACQ,OAAO,IAAI,CAACO,QAAQ,EAAE,OAAO,IAAI;EAEtC,oBACEzB,MAAA,YAAAkC,aAAA;IAAKC,SAAS,EAAC;EAAiB,GAC7BjB,OAAO,gBACNlB,MAAA,YAAAkC,aAAA,aAAO,CAAC,gBAERlC,MAAA,YAAAkC,aAAA,CAAC5B,UAAA,WAAS;IACR8B,GAAG,EAAEX,QAAS;IACdM,GAAG,EAAEA,GAAI;IACTM,OAAO,EAAC,UAAU;IAClBC,OAAO,EAAEL,oBAAqB;IAC9BM,IAAI,EAAC,QAAQ;IACb,cAAW,YAAY;IACvBzB,QAAQ,EAAEA;EAAS,CACpB,CAEA,CAAC;AAEV,CAAC;AAEDN,aAAa,CAACgC,SAAS,GAAG;EACxB9B,OAAO,EAAE+B,qBAAS,CAACC,MAAM,CAACC,UAAU;EACpChC,cAAc,EAAE8B,qBAAS,CAACG,IAAI,CAACD,UAAU;EACzC/B,WAAW,EAAE6B,qBAAS,CAACI,IAAI,CAACF,UAAU;EACtC9B,mBAAmB,EAAE4B,qBAAS,CAACI,IAAI,CAACF,UAAU;EAC9C7B,QAAQ,EAAE2B,qBAAS,CAACG,IAAI,CAACD;AAC3B,CAAC;AAAC,IAAAG,QAAA,GAAAC,OAAA,cAEavC,aAAa","ignoreList":[]}
|
|
@@ -135,11 +135,13 @@ var SearchContent = function SearchContent(props) {
|
|
|
135
135
|
placeholder: placeholder,
|
|
136
136
|
value: searchTerm,
|
|
137
137
|
onChange: function onChange(e) {
|
|
138
|
-
|
|
138
|
+
setSearchTerm(e.target.value);
|
|
139
|
+
setShowResults(true);
|
|
139
140
|
},
|
|
140
141
|
onKeyDown: handleKeyDown,
|
|
141
142
|
onFocus: function onFocus() {
|
|
142
|
-
|
|
143
|
+
setShowResults(true);
|
|
144
|
+
if (collapsedSearch) setCollapsed(false);
|
|
143
145
|
},
|
|
144
146
|
"data-testid": "search-content-input"
|
|
145
147
|
}))), showResults && /*#__PURE__*/_react["default"].createElement(_SearchContentResults["default"], {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchContent.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_router","_pluginSearchUi","_SearchContentResults","_SearchContentToggleIcon","_hooks","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","SearchContent","props","entities","searchInputWrapperMobile","searchInputWrapperDesktop","isMobile","placeholder","modifier","collapsedSearch","searchUrl","navigateToSingleSearchResult","searchContentRef","useRef","_useState","useState","_useState2","_slicedToArray2","collapsed","setCollapsed","_useState3","_useState4","showResults","setShowResults","router","useRouter","_useAppSyncEventHook","useAppSyncEventHook","eventName","returnFunction","runHook","_useDebounceSearch","useDebounceSearch","initialSearchTerm","resultKeys","queryHook","results","searchTerm","setSearchTerm","debouncedSearchTerm","useEffect","handleRouteChange","events","on","off","handleClickOutside","event","current","contains","target","document","activeElement","querySelector","addEventListener","removeEventListener","responsiveClasses","handleNavigation","url","preventDefault","push","handleKeyDown","key","value","length","searchUrlWithoutHash","split","concat","handleIconClick","isCloseIcon","className","filter","Boolean","join","searchModifier","createElement","ref","onClick","useCloseIcon","type","name","onChange","onKeyDown","onFocus","handleClick","propTypes","PropTypes","string","bool","array","isRequired","defaultProps","_default","exports"],"sources":["../../../src/components/SearchContent/SearchContent.js"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useRouter } from 'next/router';\nimport { useDebounceSearch } from '@blaze-cms/plugin-search-ui';\nimport SearchContentResults from './SearchContentResults';\nimport SearchContentToggleIcon from './SearchContentToggleIcon';\nimport { useAppSyncEventHook } from '../../hooks';\n\nconst SearchContent = props => {\n const {\n entities,\n searchInputWrapperMobile,\n searchInputWrapperDesktop,\n isMobile,\n placeholder,\n modifier,\n collapsedSearch,\n searchUrl,\n navigateToSingleSearchResult\n } = props;\n\n const searchContentRef = useRef(null);\n const [collapsed, setCollapsed] = useState(collapsedSearch);\n const [showResults, setShowResults] = useState(false);\n const router = useRouter();\n\n const { runHook } = useAppSyncEventHook({\n eventName: 'searchcontent:query-variables',\n props,\n returnFunction: true\n });\n\n const { results, searchTerm, setSearchTerm, debouncedSearchTerm } = useDebounceSearch({\n entities,\n initialSearchTerm: '',\n resultKeys: 'id, name, image { url }, url',\n queryHook: runHook\n });\n\n useEffect(() => {\n const handleRouteChange = () => {\n setSearchTerm('');\n setShowResults(false);\n if (collapsedSearch) setCollapsed(true);\n };\n router.events.on('routeChangeStart', handleRouteChange);\n return () => {\n router.events.off('routeChangeStart', handleRouteChange);\n };\n }, [collapsedSearch, router.events, setSearchTerm]);\n\n useEffect(() => {\n const handleClickOutside = event => {\n if (searchContentRef.current && !searchContentRef.current.contains(event.target)) {\n setShowResults(false);\n setSearchTerm('');\n if (\n collapsedSearch &&\n document.activeElement !== searchContentRef.current.querySelector('input')\n ) {\n setCollapsed(true);\n }\n }\n };\n\n document.addEventListener('click', handleClickOutside);\n return () => {\n document.removeEventListener('click', handleClickOutside);\n };\n }, [collapsedSearch, setSearchTerm]);\n\n const responsiveClasses = isMobile ? searchInputWrapperMobile : searchInputWrapperDesktop;\n\n const handleNavigation = (e, url) => {\n e.preventDefault();\n router.push(url);\n };\n\n const handleKeyDown = e => {\n if (e.key === 'Enter' && e.target.value !== '') {\n if (navigateToSingleSearchResult && results && results.length === 1 && results[0].url) {\n router.push(results[0].url);\n } else {\n const searchUrlWithoutHash = (searchUrl || '/search').split('#')[0];\n router.push(`${searchUrlWithoutHash}?search_term=${e.target.value}`);\n }\n }\n };\n\n const handleIconClick = () => {\n const isCloseIcon = collapsedSearch ? !collapsed : debouncedSearchTerm;\n\n if (collapsedSearch) setCollapsed(!collapsed);\n\n if (isCloseIcon) {\n setSearchTerm('');\n setShowResults(false);\n } else {\n setShowResults(true);\n }\n };\n\n const className = ['search-content', modifier, responsiveClasses].filter(Boolean).join(' ');\n const searchModifier = collapsed ? 'search-content--collapse' : 'search-content--expanded';\n\n return (\n <div className={className} ref={searchContentRef}>\n <div className={`${searchModifier}__wrapper`}>\n <label className={`${searchModifier}__label`}>\n <span className={`${searchModifier}__icon_wrapper`}>\n <SearchContentToggleIcon\n searchTerm={debouncedSearchTerm}\n onClick={handleIconClick}\n useCloseIcon={collapsedSearch ? !collapsed : debouncedSearchTerm}\n />\n </span>\n {!collapsed && (\n <input\n className={`${searchModifier}__input`}\n type=\"text\"\n name=\"search\"\n placeholder={placeholder}\n value={searchTerm}\n onChange={e => setSearchTerm(e.target.value)}\n onKeyDown={handleKeyDown}\n onFocus={() => setShowResults(true)}\n data-testid=\"search-content-input\"\n />\n )}\n </label>\n </div>\n {showResults && (\n <SearchContentResults\n results={results}\n debouncedSearchTerm={debouncedSearchTerm}\n handleClick={handleNavigation}\n />\n )}\n </div>\n );\n};\n\nSearchContent.propTypes = {\n searchInputWrapperMobile: PropTypes.string,\n searchInputWrapperDesktop: PropTypes.string,\n placeholder: PropTypes.string,\n isMobile: PropTypes.bool,\n entities: PropTypes.array.isRequired,\n modifier: PropTypes.string,\n collapsedSearch: PropTypes.bool,\n searchUrl: PropTypes.string,\n navigateToSingleSearchResult: PropTypes.bool\n};\n\nSearchContent.defaultProps = {\n searchInputWrapperMobile: '',\n searchInputWrapperDesktop: '',\n placeholder: '',\n isMobile: false,\n modifier: '',\n collapsedSearch: false,\n searchUrl: '',\n navigateToSingleSearchResult: false\n};\n\nexport default SearchContent;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SearchContent.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_router","_pluginSearchUi","_SearchContentResults","_SearchContentToggleIcon","_hooks","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","SearchContent","props","entities","searchInputWrapperMobile","searchInputWrapperDesktop","isMobile","placeholder","modifier","collapsedSearch","searchUrl","navigateToSingleSearchResult","searchContentRef","useRef","_useState","useState","_useState2","_slicedToArray2","collapsed","setCollapsed","_useState3","_useState4","showResults","setShowResults","router","useRouter","_useAppSyncEventHook","useAppSyncEventHook","eventName","returnFunction","runHook","_useDebounceSearch","useDebounceSearch","initialSearchTerm","resultKeys","queryHook","results","searchTerm","setSearchTerm","debouncedSearchTerm","useEffect","handleRouteChange","events","on","off","handleClickOutside","event","current","contains","target","document","activeElement","querySelector","addEventListener","removeEventListener","responsiveClasses","handleNavigation","url","preventDefault","push","handleKeyDown","key","value","length","searchUrlWithoutHash","split","concat","handleIconClick","isCloseIcon","className","filter","Boolean","join","searchModifier","createElement","ref","onClick","useCloseIcon","type","name","onChange","onKeyDown","onFocus","handleClick","propTypes","PropTypes","string","bool","array","isRequired","defaultProps","_default","exports"],"sources":["../../../src/components/SearchContent/SearchContent.js"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useRouter } from 'next/router';\nimport { useDebounceSearch } from '@blaze-cms/plugin-search-ui';\nimport SearchContentResults from './SearchContentResults';\nimport SearchContentToggleIcon from './SearchContentToggleIcon';\nimport { useAppSyncEventHook } from '../../hooks';\n\nconst SearchContent = props => {\n const {\n entities,\n searchInputWrapperMobile,\n searchInputWrapperDesktop,\n isMobile,\n placeholder,\n modifier,\n collapsedSearch,\n searchUrl,\n navigateToSingleSearchResult\n } = props;\n\n const searchContentRef = useRef(null);\n const [collapsed, setCollapsed] = useState(collapsedSearch);\n const [showResults, setShowResults] = useState(false);\n const router = useRouter();\n\n const { runHook } = useAppSyncEventHook({\n eventName: 'searchcontent:query-variables',\n props,\n returnFunction: true\n });\n\n const { results, searchTerm, setSearchTerm, debouncedSearchTerm } = useDebounceSearch({\n entities,\n initialSearchTerm: '',\n resultKeys: 'id, name, image { url }, url',\n queryHook: runHook\n });\n\n useEffect(() => {\n const handleRouteChange = () => {\n setSearchTerm('');\n setShowResults(false);\n if (collapsedSearch) setCollapsed(true);\n };\n router.events.on('routeChangeStart', handleRouteChange);\n return () => {\n router.events.off('routeChangeStart', handleRouteChange);\n };\n }, [collapsedSearch, router.events, setSearchTerm]);\n\n useEffect(() => {\n const handleClickOutside = event => {\n if (searchContentRef.current && !searchContentRef.current.contains(event.target)) {\n setShowResults(false);\n setSearchTerm('');\n if (\n collapsedSearch &&\n document.activeElement !== searchContentRef.current.querySelector('input')\n ) {\n setCollapsed(true);\n }\n }\n };\n\n document.addEventListener('click', handleClickOutside);\n return () => {\n document.removeEventListener('click', handleClickOutside);\n };\n }, [collapsedSearch, setSearchTerm]);\n\n const responsiveClasses = isMobile ? searchInputWrapperMobile : searchInputWrapperDesktop;\n\n const handleNavigation = (e, url) => {\n e.preventDefault();\n router.push(url);\n };\n\n const handleKeyDown = e => {\n if (e.key === 'Enter' && e.target.value !== '') {\n if (navigateToSingleSearchResult && results && results.length === 1 && results[0].url) {\n router.push(results[0].url);\n } else {\n const searchUrlWithoutHash = (searchUrl || '/search').split('#')[0];\n router.push(`${searchUrlWithoutHash}?search_term=${e.target.value}`);\n }\n }\n };\n\n const handleIconClick = () => {\n const isCloseIcon = collapsedSearch ? !collapsed : debouncedSearchTerm;\n\n if (collapsedSearch) setCollapsed(!collapsed);\n\n if (isCloseIcon) {\n setSearchTerm('');\n setShowResults(false);\n } else {\n setShowResults(true);\n }\n };\n\n const className = ['search-content', modifier, responsiveClasses].filter(Boolean).join(' ');\n const searchModifier = collapsed ? 'search-content--collapse' : 'search-content--expanded';\n\n return (\n <div className={className} ref={searchContentRef}>\n <div className={`${searchModifier}__wrapper`}>\n <label className={`${searchModifier}__label`}>\n <span className={`${searchModifier}__icon_wrapper`}>\n <SearchContentToggleIcon\n searchTerm={debouncedSearchTerm}\n onClick={handleIconClick}\n useCloseIcon={collapsedSearch ? !collapsed : debouncedSearchTerm}\n />\n </span>\n {!collapsed && (\n <input\n className={`${searchModifier}__input`}\n type=\"text\"\n name=\"search\"\n placeholder={placeholder}\n value={searchTerm}\n onChange={e => {\n setSearchTerm(e.target.value);\n setShowResults(true);\n }}\n onKeyDown={handleKeyDown}\n onFocus={() => {\n setShowResults(true);\n if (collapsedSearch) setCollapsed(false);\n }}\n data-testid=\"search-content-input\"\n />\n )}\n </label>\n </div>\n {showResults && (\n <SearchContentResults\n results={results}\n debouncedSearchTerm={debouncedSearchTerm}\n handleClick={handleNavigation}\n />\n )}\n </div>\n );\n};\n\nSearchContent.propTypes = {\n searchInputWrapperMobile: PropTypes.string,\n searchInputWrapperDesktop: PropTypes.string,\n placeholder: PropTypes.string,\n isMobile: PropTypes.bool,\n entities: PropTypes.array.isRequired,\n modifier: PropTypes.string,\n collapsedSearch: PropTypes.bool,\n searchUrl: PropTypes.string,\n navigateToSingleSearchResult: PropTypes.bool\n};\n\nSearchContent.defaultProps = {\n searchInputWrapperMobile: '',\n searchInputWrapperDesktop: '',\n placeholder: '',\n isMobile: false,\n modifier: '',\n collapsedSearch: false,\n searchUrl: '',\n navigateToSingleSearchResult: false\n};\n\nexport default SearchContent;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -16,7 +16,8 @@ var SearchContentResults = function SearchContentResults(_ref) {
|
|
|
16
16
|
if (!debouncedSearchTerm) return null;
|
|
17
17
|
var hasResults = results.length > 0;
|
|
18
18
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
19
|
-
className: "search-content--results__wrapper"
|
|
19
|
+
className: "search-content--results__wrapper",
|
|
20
|
+
"data-testid": "search-content-results"
|
|
20
21
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
21
22
|
className: "search-content--results__wrapper--message"
|
|
22
23
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchContentResults.js","names":["_react","_interopRequireDefault","require","_BlazeLink","_SearchContentItems","SearchContentResults","_ref","results","debouncedSearchTerm","onClick","hasResults","length","createElement","className","href","concat","_default","exports"],"sources":["../../../src/components/SearchContent/SearchContentResults.js"],"sourcesContent":["import React from 'react';\nimport BlazeLink from '../BlazeLink';\nimport SearchContentItems from './SearchContentItems';\n\nconst SearchContentResults = ({ results, debouncedSearchTerm, onClick }) => {\n if (!debouncedSearchTerm) return null;\n const hasResults = results.length > 0;\n return (\n <div className=\"search-content--results__wrapper\">\n <div className=\"search-content--results__wrapper--message\">\n <div className=\"search-content--results__content\">\n {hasResults ? (\n <SearchContentItems results={results} onClick={onClick} />\n ) : (\n <div className=\"search-content--results__message\">\n <BlazeLink href={`/search?search_term=${debouncedSearchTerm}`}>\n {`Search all results for: ${debouncedSearchTerm}`}\n </BlazeLink>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default SearchContentResults;\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,mBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAMG,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAAC,IAAA,EAAkD;EAAA,IAA5CC,OAAO,GAAAD,IAAA,CAAPC,OAAO;IAAEC,mBAAmB,GAAAF,IAAA,CAAnBE,mBAAmB;IAAEC,OAAO,GAAAH,IAAA,CAAPG,OAAO;EACnE,IAAI,CAACD,mBAAmB,EAAE,OAAO,IAAI;EACrC,IAAME,UAAU,GAAGH,OAAO,CAACI,MAAM,GAAG,CAAC;EACrC,oBACEX,MAAA,YAAAY,aAAA;IAAKC,SAAS,EAAC;
|
|
1
|
+
{"version":3,"file":"SearchContentResults.js","names":["_react","_interopRequireDefault","require","_BlazeLink","_SearchContentItems","SearchContentResults","_ref","results","debouncedSearchTerm","onClick","hasResults","length","createElement","className","href","concat","_default","exports"],"sources":["../../../src/components/SearchContent/SearchContentResults.js"],"sourcesContent":["import React from 'react';\nimport BlazeLink from '../BlazeLink';\nimport SearchContentItems from './SearchContentItems';\n\nconst SearchContentResults = ({ results, debouncedSearchTerm, onClick }) => {\n if (!debouncedSearchTerm) return null;\n const hasResults = results.length > 0;\n return (\n <div className=\"search-content--results__wrapper\" data-testid=\"search-content-results\">\n <div className=\"search-content--results__wrapper--message\">\n <div className=\"search-content--results__content\">\n {hasResults ? (\n <SearchContentItems results={results} onClick={onClick} />\n ) : (\n <div className=\"search-content--results__message\">\n <BlazeLink href={`/search?search_term=${debouncedSearchTerm}`}>\n {`Search all results for: ${debouncedSearchTerm}`}\n </BlazeLink>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default SearchContentResults;\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,mBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAMG,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAAC,IAAA,EAAkD;EAAA,IAA5CC,OAAO,GAAAD,IAAA,CAAPC,OAAO;IAAEC,mBAAmB,GAAAF,IAAA,CAAnBE,mBAAmB;IAAEC,OAAO,GAAAH,IAAA,CAAPG,OAAO;EACnE,IAAI,CAACD,mBAAmB,EAAE,OAAO,IAAI;EACrC,IAAME,UAAU,GAAGH,OAAO,CAACI,MAAM,GAAG,CAAC;EACrC,oBACEX,MAAA,YAAAY,aAAA;IAAKC,SAAS,EAAC,kCAAkC;IAAC,eAAY;EAAwB,gBACpFb,MAAA,YAAAY,aAAA;IAAKC,SAAS,EAAC;EAA2C,gBACxDb,MAAA,YAAAY,aAAA;IAAKC,SAAS,EAAC;EAAkC,GAC9CH,UAAU,gBACTV,MAAA,YAAAY,aAAA,CAACR,mBAAA,WAAkB;IAACG,OAAO,EAAEA,OAAQ;IAACE,OAAO,EAAEA;EAAQ,CAAE,CAAC,gBAE1DT,MAAA,YAAAY,aAAA;IAAKC,SAAS,EAAC;EAAkC,gBAC/Cb,MAAA,YAAAY,aAAA,CAACT,UAAA,WAAS;IAACW,IAAI,yBAAAC,MAAA,CAAyBP,mBAAmB;EAAG,8BAAAO,MAAA,CAChCP,mBAAmB,CACtC,CACR,CAEJ,CACF,CACF,CAAC;AAEV,CAAC;AAAC,IAAAQ,QAAA,GAAAC,OAAA,cAEaZ,oBAAoB","ignoreList":[]}
|
|
@@ -12,7 +12,7 @@ require("core-js/modules/es.object.keys.js");
|
|
|
12
12
|
var _client = require("@apollo/client");
|
|
13
13
|
var _query = require("../application/query");
|
|
14
14
|
function useGetImageIdFromRelation(id, imageRelation, actions, isUsingRelationImage, isPreview, hasImgSrc) {
|
|
15
|
-
var skip = !id || hasImgSrc || typeof id !== 'string' || !isUsingRelationImage || !Object.keys(actions).length;
|
|
15
|
+
var skip = !actions || !id || hasImgSrc || typeof id !== 'string' || !isUsingRelationImage || !Object.keys(actions).length;
|
|
16
16
|
var _imageRelation = (0, _slicedToArray2["default"])(imageRelation, 1),
|
|
17
17
|
_imageRelation$ = _imageRelation[0],
|
|
18
18
|
imageRelationData = _imageRelation$ === void 0 ? '' : _imageRelation$;
|
|
@@ -22,8 +22,9 @@ function useGetImageIdFromRelation(id, imageRelation, actions, isUsingRelationIm
|
|
|
22
22
|
relationName = _imageRelationData$sp3 === void 0 ? '' : _imageRelationData$sp3,
|
|
23
23
|
_imageRelationData$sp4 = _imageRelationData$sp2[1],
|
|
24
24
|
relationProp = _imageRelationData$sp4 === void 0 ? '' : _imageRelationData$sp4;
|
|
25
|
-
var
|
|
26
|
-
|
|
25
|
+
var _ref = actions || {},
|
|
26
|
+
getPublished = _ref.getPublished,
|
|
27
|
+
get = _ref.get;
|
|
27
28
|
var getAction = isPreview ? get : getPublished || get;
|
|
28
29
|
var props = imageRelationData ? "".concat(relationName, " { ").concat(relationProp, " }") : 'id';
|
|
29
30
|
var _useQuery = (0, _client.useQuery)((0, _query.generateSingleItemQuery)(getAction, props), {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-get-image-id-from-relation.js","names":["_client","require","_query","useGetImageIdFromRelation","id","imageRelation","actions","isUsingRelationImage","isPreview","hasImgSrc","skip","Object","keys","length","_imageRelation","_slicedToArray2","_imageRelation$","imageRelationData","_imageRelationData$sp","split","_imageRelationData$sp2","_imageRelationData$sp3","relationName","_imageRelationData$sp4","relationProp","getPublished","get","getAction","props","concat","_useQuery","useQuery","generateSingleItemQuery","variables","_useQuery$data","data","loading","error","_default","exports"],"sources":["../../src/hooks/use-get-image-id-from-relation.js"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport { generateSingleItemQuery } from '../application/query';\n\nfunction useGetImageIdFromRelation(\n id,\n imageRelation,\n actions,\n isUsingRelationImage,\n isPreview,\n hasImgSrc\n) {\n const skip =\n !id ||\n hasImgSrc ||\n typeof id !== 'string' ||\n !isUsingRelationImage ||\n !Object.keys(actions).length;\n\n const [imageRelationData = ''] = imageRelation;\n const [relationName = '', relationProp = ''] = imageRelationData.split('.');\n const { getPublished, get } = actions;\n const getAction = isPreview ? get : getPublished || get;\n\n const props = imageRelationData ? `${relationName} { ${relationProp} }` : 'id';\n const {\n data = {},\n loading,\n error\n } = useQuery(generateSingleItemQuery(getAction, props), {\n variables: { id },\n skip\n });\n return { data, loading, error };\n}\n\nexport default useGetImageIdFromRelation;\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,SAASE,yBAAyBA,CAChCC,EAAE,EACFC,aAAa,EACbC,OAAO,EACPC,oBAAoB,EACpBC,SAAS,EACTC,SAAS,EACT;EACA,IAAMC,IAAI,GACR,
|
|
1
|
+
{"version":3,"file":"use-get-image-id-from-relation.js","names":["_client","require","_query","useGetImageIdFromRelation","id","imageRelation","actions","isUsingRelationImage","isPreview","hasImgSrc","skip","Object","keys","length","_imageRelation","_slicedToArray2","_imageRelation$","imageRelationData","_imageRelationData$sp","split","_imageRelationData$sp2","_imageRelationData$sp3","relationName","_imageRelationData$sp4","relationProp","_ref","getPublished","get","getAction","props","concat","_useQuery","useQuery","generateSingleItemQuery","variables","_useQuery$data","data","loading","error","_default","exports"],"sources":["../../src/hooks/use-get-image-id-from-relation.js"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport { generateSingleItemQuery } from '../application/query';\n\nfunction useGetImageIdFromRelation(\n id,\n imageRelation,\n actions,\n isUsingRelationImage,\n isPreview,\n hasImgSrc\n) {\n const skip =\n !actions ||\n !id ||\n hasImgSrc ||\n typeof id !== 'string' ||\n !isUsingRelationImage ||\n !Object.keys(actions).length;\n\n const [imageRelationData = ''] = imageRelation;\n const [relationName = '', relationProp = ''] = imageRelationData.split('.');\n const { getPublished, get } = actions || {};\n const getAction = isPreview ? get : getPublished || get;\n\n const props = imageRelationData ? `${relationName} { ${relationProp} }` : 'id';\n const {\n data = {},\n loading,\n error\n } = useQuery(generateSingleItemQuery(getAction, props), {\n variables: { id },\n skip\n });\n return { data, loading, error };\n}\n\nexport default useGetImageIdFromRelation;\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,SAASE,yBAAyBA,CAChCC,EAAE,EACFC,aAAa,EACbC,OAAO,EACPC,oBAAoB,EACpBC,SAAS,EACTC,SAAS,EACT;EACA,IAAMC,IAAI,GACR,CAACJ,OAAO,IACR,CAACF,EAAE,IACHK,SAAS,IACT,OAAOL,EAAE,KAAK,QAAQ,IACtB,CAACG,oBAAoB,IACrB,CAACI,MAAM,CAACC,IAAI,CAACN,OAAO,CAAC,CAACO,MAAM;EAE9B,IAAAC,cAAA,OAAAC,eAAA,aAAiCV,aAAa;IAAAW,eAAA,GAAAF,cAAA;IAAvCG,iBAAiB,GAAAD,eAAA,cAAG,EAAE,GAAAA,eAAA;EAC7B,IAAAE,qBAAA,GAA+CD,iBAAiB,CAACE,KAAK,CAAC,GAAG,CAAC;IAAAC,sBAAA,OAAAL,eAAA,aAAAG,qBAAA;IAAAG,sBAAA,GAAAD,sBAAA;IAApEE,YAAY,GAAAD,sBAAA,cAAG,EAAE,GAAAA,sBAAA;IAAAE,sBAAA,GAAAH,sBAAA;IAAEI,YAAY,GAAAD,sBAAA,cAAG,EAAE,GAAAA,sBAAA;EAC3C,IAAAE,IAAA,GAA8BnB,OAAO,IAAI,CAAC,CAAC;IAAnCoB,YAAY,GAAAD,IAAA,CAAZC,YAAY;IAAEC,GAAG,GAAAF,IAAA,CAAHE,GAAG;EACzB,IAAMC,SAAS,GAAGpB,SAAS,GAAGmB,GAAG,GAAGD,YAAY,IAAIC,GAAG;EAEvD,IAAME,KAAK,GAAGZ,iBAAiB,MAAAa,MAAA,CAAMR,YAAY,SAAAQ,MAAA,CAAMN,YAAY,UAAO,IAAI;EAC9E,IAAAO,SAAA,GAII,IAAAC,gBAAQ,EAAC,IAAAC,8BAAuB,EAACL,SAAS,EAAEC,KAAK,CAAC,EAAE;MACtDK,SAAS,EAAE;QAAE9B,EAAE,EAAFA;MAAG,CAAC;MACjBM,IAAI,EAAJA;IACF,CAAC,CAAC;IAAAyB,cAAA,GAAAJ,SAAA,CANAK,IAAI;IAAJA,IAAI,GAAAD,cAAA,cAAG,CAAC,CAAC,GAAAA,cAAA;IACTE,OAAO,GAAAN,SAAA,CAAPM,OAAO;IACPC,KAAK,GAAAP,SAAA,CAALO,KAAK;EAKP,OAAO;IAAEF,IAAI,EAAJA,IAAI;IAAEC,OAAO,EAAPA,OAAO;IAAEC,KAAK,EAALA;EAAM,CAAC;AACjC;AAAC,IAAAC,QAAA,GAAAC,OAAA,cAEcrC,yBAAyB","ignoreList":[]}
|
|
@@ -1,31 +1,56 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
-
const _excluded = ["caption", "imageIds", "isCaptionDisplayed", "VariantComponent"];
|
|
4
|
-
import React from 'react';
|
|
3
|
+
const _excluded = ["caption", "imageIds", "isCaptionDisplayed", "VariantComponent", "imagesProperty", "entity", "parent"];
|
|
4
|
+
import React, { useContext } from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
|
+
import { MainContext } from '@blaze-cms/nextjs-components';
|
|
7
|
+
import { useGetImageIdFromRelation, useGetSingleEntitySchema } from '../../hooks';
|
|
6
8
|
import CarouselImage from './CarouselImage';
|
|
7
9
|
import CarouselRender from './CarouselRender';
|
|
8
10
|
import { useCarouselNavigation } from './hooks/useCarouselNavigation';
|
|
9
|
-
import { getDisplayCountData } from '../../helpers';
|
|
11
|
+
import { getDisplayCountData, getImageIds } from '../../helpers';
|
|
10
12
|
const Carousel = props => {
|
|
11
13
|
const {
|
|
12
14
|
caption,
|
|
13
15
|
imageIds,
|
|
14
16
|
isCaptionDisplayed,
|
|
15
|
-
VariantComponent
|
|
17
|
+
VariantComponent,
|
|
18
|
+
imagesProperty,
|
|
19
|
+
entity: entitySetting,
|
|
20
|
+
parent: {
|
|
21
|
+
itemId,
|
|
22
|
+
itemEntity
|
|
23
|
+
}
|
|
16
24
|
} = props,
|
|
17
25
|
otherProps = _objectWithoutProperties(props, _excluded);
|
|
26
|
+
const {
|
|
27
|
+
isPreview
|
|
28
|
+
} = useContext(MainContext);
|
|
18
29
|
const navigationProps = useCarouselNavigation(props);
|
|
19
|
-
|
|
30
|
+
const entity = imagesProperty ? entitySetting || itemEntity : null;
|
|
31
|
+
const skipSingleEntitySchema = !entity;
|
|
32
|
+
const {
|
|
33
|
+
data: {
|
|
34
|
+
getEntitySchema: {
|
|
35
|
+
actions
|
|
36
|
+
} = {}
|
|
37
|
+
} = {}
|
|
38
|
+
} = useGetSingleEntitySchema(entity, skipSingleEntitySchema);
|
|
39
|
+
const {
|
|
40
|
+
data: recordData,
|
|
41
|
+
loading: recordDataLoading
|
|
42
|
+
} = useGetImageIdFromRelation(itemId, imagesProperty, actions, true, isPreview, false);
|
|
43
|
+
const updatedImageIds = recordDataLoading ? [] : [...getImageIds(imagesProperty, recordData, null), ...imageIds];
|
|
44
|
+
if (!updatedImageIds || !updatedImageIds.length) return null;
|
|
20
45
|
const shouldDisplayCaption = isCaptionDisplayed && caption;
|
|
21
46
|
const {
|
|
22
47
|
shouldDisplayCount,
|
|
23
48
|
countMessage
|
|
24
|
-
} = getDisplayCountData(navigationProps.showCount,
|
|
49
|
+
} = getDisplayCountData(navigationProps.showCount, updatedImageIds);
|
|
25
50
|
const ComponentToRender = VariantComponent || CarouselRender;
|
|
26
51
|
return /*#__PURE__*/React.createElement(ComponentToRender, _extends({
|
|
27
52
|
caption: caption,
|
|
28
|
-
imageIds:
|
|
53
|
+
imageIds: updatedImageIds,
|
|
29
54
|
CarouselImage: CarouselImage,
|
|
30
55
|
shouldDisplayCaption: shouldDisplayCaption,
|
|
31
56
|
shouldDisplayCount: shouldDisplayCount,
|
|
@@ -34,15 +59,20 @@ const Carousel = props => {
|
|
|
34
59
|
};
|
|
35
60
|
Carousel.propTypes = {
|
|
36
61
|
caption: PropTypes.string,
|
|
62
|
+
entity: PropTypes.string,
|
|
37
63
|
imageIds: PropTypes.array,
|
|
64
|
+
imagesProperty: PropTypes.array,
|
|
38
65
|
isCaptionDisplayed: PropTypes.bool,
|
|
39
|
-
VariantComponent: PropTypes.func
|
|
66
|
+
VariantComponent: PropTypes.func,
|
|
67
|
+
parent: PropTypes.object.isRequired
|
|
40
68
|
};
|
|
41
69
|
Carousel.defaultProps = {
|
|
42
70
|
VariantComponent: null,
|
|
43
71
|
caption: '',
|
|
44
72
|
imageIds: [],
|
|
45
|
-
|
|
73
|
+
imagesProperty: [],
|
|
74
|
+
isCaptionDisplayed: false,
|
|
75
|
+
entity: null
|
|
46
76
|
};
|
|
47
77
|
export default Carousel;
|
|
48
78
|
//# sourceMappingURL=Carousel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.js","names":["React","PropTypes","CarouselImage","CarouselRender","useCarouselNavigation","getDisplayCountData","Carousel","props","caption","imageIds","isCaptionDisplayed","VariantComponent","otherProps","_objectWithoutProperties","_excluded","navigationProps","length","shouldDisplayCaption","shouldDisplayCount","countMessage","showCount","ComponentToRender","createElement","_extends","propTypes","string","array","bool","func","defaultProps"],"sources":["../../../src/components/Carousel/Carousel.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport CarouselImage from './CarouselImage';\nimport CarouselRender from './CarouselRender';\nimport { useCarouselNavigation } from './hooks/useCarouselNavigation';\nimport { getDisplayCountData } from '../../helpers';\n\nconst Carousel = props => {\n const {
|
|
1
|
+
{"version":3,"file":"Carousel.js","names":["React","useContext","PropTypes","MainContext","useGetImageIdFromRelation","useGetSingleEntitySchema","CarouselImage","CarouselRender","useCarouselNavigation","getDisplayCountData","getImageIds","Carousel","props","caption","imageIds","isCaptionDisplayed","VariantComponent","imagesProperty","entity","entitySetting","parent","itemId","itemEntity","otherProps","_objectWithoutProperties","_excluded","isPreview","navigationProps","skipSingleEntitySchema","data","getEntitySchema","actions","recordData","loading","recordDataLoading","updatedImageIds","length","shouldDisplayCaption","shouldDisplayCount","countMessage","showCount","ComponentToRender","createElement","_extends","propTypes","string","array","bool","func","object","isRequired","defaultProps"],"sources":["../../../src/components/Carousel/Carousel.js"],"sourcesContent":["import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { MainContext } from '@blaze-cms/nextjs-components';\nimport { useGetImageIdFromRelation, useGetSingleEntitySchema } from '../../hooks';\nimport CarouselImage from './CarouselImage';\nimport CarouselRender from './CarouselRender';\nimport { useCarouselNavigation } from './hooks/useCarouselNavigation';\nimport { getDisplayCountData, getImageIds } from '../../helpers';\n\nconst Carousel = props => {\n const {\n caption,\n imageIds,\n isCaptionDisplayed,\n VariantComponent,\n imagesProperty,\n entity: entitySetting,\n parent: { itemId, itemEntity },\n ...otherProps\n } = props;\n const { isPreview } = useContext(MainContext);\n const navigationProps = useCarouselNavigation(props);\n\n const entity = imagesProperty ? entitySetting || itemEntity : null;\n const skipSingleEntitySchema = !entity;\n\n const { data: { getEntitySchema: { actions } = {} } = {} } = useGetSingleEntitySchema(\n entity,\n skipSingleEntitySchema\n );\n\n const { data: recordData, loading: recordDataLoading } = useGetImageIdFromRelation(\n itemId,\n imagesProperty,\n actions,\n true,\n isPreview,\n false\n );\n\n const updatedImageIds = recordDataLoading\n ? []\n : [...getImageIds(imagesProperty, recordData, null), ...imageIds];\n\n if (!updatedImageIds || !updatedImageIds.length) return null;\n const shouldDisplayCaption = isCaptionDisplayed && caption;\n\n const { shouldDisplayCount, countMessage } = getDisplayCountData(\n navigationProps.showCount,\n updatedImageIds\n );\n\n const ComponentToRender = VariantComponent || CarouselRender;\n\n return (\n <ComponentToRender\n caption={caption}\n imageIds={updatedImageIds}\n CarouselImage={CarouselImage}\n shouldDisplayCaption={shouldDisplayCaption}\n shouldDisplayCount={shouldDisplayCount}\n countMessage={countMessage}\n {...navigationProps}\n {...otherProps}\n />\n );\n};\n\nCarousel.propTypes = {\n caption: PropTypes.string,\n entity: PropTypes.string,\n imageIds: PropTypes.array,\n imagesProperty: PropTypes.array,\n isCaptionDisplayed: PropTypes.bool,\n VariantComponent: PropTypes.func,\n parent: PropTypes.object.isRequired\n};\n\nCarousel.defaultProps = {\n VariantComponent: null,\n caption: '',\n imageIds: [],\n imagesProperty: [],\n isCaptionDisplayed: false,\n entity: null\n};\n\nexport default Carousel;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -35,9 +35,10 @@ const CarouselImage = ({
|
|
|
35
35
|
toggleModal();
|
|
36
36
|
handleSelectedImage(imageId);
|
|
37
37
|
};
|
|
38
|
+
if (!loading && !imageUrl) return null;
|
|
38
39
|
return /*#__PURE__*/React.createElement("div", {
|
|
39
40
|
className: "carousel__slide"
|
|
40
|
-
}, loading ? /*#__PURE__*/React.createElement("
|
|
41
|
+
}, loading ? /*#__PURE__*/React.createElement("span", null) : /*#__PURE__*/React.createElement(LazyImage, {
|
|
41
42
|
src: imageUrl,
|
|
42
43
|
alt: alt,
|
|
43
44
|
sizeKey: "carousel",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CarouselImage.js","names":["React","PropTypes","useGetImages","getImageData","LazyImage","CAROUSEL_DEFAULT_ALT","CarouselImage","imageId","enableLightbox","toggleModal","handleSelectedImage","priority","data","loading","error","message","url","imageUrl","imageData","getFile","altText","alt","handleEnableLightbox","createElement","className","src","sizeKey","onClick","role","propTypes","string","isRequired","bool","func"],"sources":["../../../../src/components/Carousel/CarouselImage/CarouselImage.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useGetImages } from '../../../hooks';\nimport { getImageData } from '../../../utils';\nimport LazyImage from '../../LazyImage';\nimport { CAROUSEL_DEFAULT_ALT } from './constants';\n\nconst CarouselImage = ({ imageId, enableLightbox, toggleModal, handleSelectedImage, priority }) => {\n const { data, loading, error } = useGetImages(imageId);\n\n if (error) return error.message;\n\n const { url: imageUrl = '', data: imageData = {} } = data.getFile || {\n getFile: { url: '', data: {} }\n };\n\n const { altText } = getImageData({}, imageData);\n const alt = altText || CAROUSEL_DEFAULT_ALT;\n\n const handleEnableLightbox = () => {\n if (!enableLightbox) return;\n toggleModal();\n handleSelectedImage(imageId);\n };\n\n return (\n <div className=\"carousel__slide\">\n {loading ? (\n <
|
|
1
|
+
{"version":3,"file":"CarouselImage.js","names":["React","PropTypes","useGetImages","getImageData","LazyImage","CAROUSEL_DEFAULT_ALT","CarouselImage","imageId","enableLightbox","toggleModal","handleSelectedImage","priority","data","loading","error","message","url","imageUrl","imageData","getFile","altText","alt","handleEnableLightbox","createElement","className","src","sizeKey","onClick","role","propTypes","string","isRequired","bool","func"],"sources":["../../../../src/components/Carousel/CarouselImage/CarouselImage.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useGetImages } from '../../../hooks';\nimport { getImageData } from '../../../utils';\nimport LazyImage from '../../LazyImage';\nimport { CAROUSEL_DEFAULT_ALT } from './constants';\n\nconst CarouselImage = ({ imageId, enableLightbox, toggleModal, handleSelectedImage, priority }) => {\n const { data, loading, error } = useGetImages(imageId);\n\n if (error) return error.message;\n\n const { url: imageUrl = '', data: imageData = {} } = data.getFile || {\n getFile: { url: '', data: {} }\n };\n\n const { altText } = getImageData({}, imageData);\n const alt = altText || CAROUSEL_DEFAULT_ALT;\n\n const handleEnableLightbox = () => {\n if (!enableLightbox) return;\n toggleModal();\n handleSelectedImage(imageId);\n };\n\n if (!loading && !imageUrl) return null;\n\n return (\n <div className=\"carousel__slide\">\n {loading ? (\n <span />\n ) : (\n <LazyImage\n src={imageUrl}\n alt={alt}\n sizeKey=\"carousel\"\n onClick={handleEnableLightbox}\n role=\"button\"\n aria-label=\"View Image\"\n priority={priority}\n />\n )}\n </div>\n );\n};\n\nCarouselImage.propTypes = {\n imageId: PropTypes.string.isRequired,\n enableLightbox: PropTypes.bool.isRequired,\n toggleModal: PropTypes.func.isRequired,\n handleSelectedImage: PropTypes.func.isRequired,\n priority: PropTypes.bool.isRequired\n};\n\nexport default CarouselImage;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,OAAOC,SAAS,MAAM,iBAAiB;AACvC,SAASC,oBAAoB,QAAQ,aAAa;AAElD,MAAMC,aAAa,GAAGA,CAAC;EAAEC,OAAO;EAAEC,cAAc;EAAEC,WAAW;EAAEC,mBAAmB;EAAEC;AAAS,CAAC,KAAK;EACjG,MAAM;IAAEC,IAAI;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGZ,YAAY,CAACK,OAAO,CAAC;EAEtD,IAAIO,KAAK,EAAE,OAAOA,KAAK,CAACC,OAAO;EAE/B,MAAM;IAAEC,GAAG,EAAEC,QAAQ,GAAG,EAAE;IAAEL,IAAI,EAAEM,SAAS,GAAG,CAAC;EAAE,CAAC,GAAGN,IAAI,CAACO,OAAO,IAAI;IACnEA,OAAO,EAAE;MAAEH,GAAG,EAAE,EAAE;MAAEJ,IAAI,EAAE,CAAC;IAAE;EAC/B,CAAC;EAED,MAAM;IAAEQ;EAAQ,CAAC,GAAGjB,YAAY,CAAC,CAAC,CAAC,EAAEe,SAAS,CAAC;EAC/C,MAAMG,GAAG,GAAGD,OAAO,IAAIf,oBAAoB;EAE3C,MAAMiB,oBAAoB,GAAGA,CAAA,KAAM;IACjC,IAAI,CAACd,cAAc,EAAE;IACrBC,WAAW,CAAC,CAAC;IACbC,mBAAmB,CAACH,OAAO,CAAC;EAC9B,CAAC;EAED,IAAI,CAACM,OAAO,IAAI,CAACI,QAAQ,EAAE,OAAO,IAAI;EAEtC,oBACEjB,KAAA,CAAAuB,aAAA;IAAKC,SAAS,EAAC;EAAiB,GAC7BX,OAAO,gBACNb,KAAA,CAAAuB,aAAA,aAAO,CAAC,gBAERvB,KAAA,CAAAuB,aAAA,CAACnB,SAAS;IACRqB,GAAG,EAAER,QAAS;IACdI,GAAG,EAAEA,GAAI;IACTK,OAAO,EAAC,UAAU;IAClBC,OAAO,EAAEL,oBAAqB;IAC9BM,IAAI,EAAC,QAAQ;IACb,cAAW,YAAY;IACvBjB,QAAQ,EAAEA;EAAS,CACpB,CAEA,CAAC;AAEV,CAAC;AAEDL,aAAa,CAACuB,SAAS,GAAG;EACxBtB,OAAO,EAAEN,SAAS,CAAC6B,MAAM,CAACC,UAAU;EACpCvB,cAAc,EAAEP,SAAS,CAAC+B,IAAI,CAACD,UAAU;EACzCtB,WAAW,EAAER,SAAS,CAACgC,IAAI,CAACF,UAAU;EACtCrB,mBAAmB,EAAET,SAAS,CAACgC,IAAI,CAACF,UAAU;EAC9CpB,QAAQ,EAAEV,SAAS,CAAC+B,IAAI,CAACD;AAC3B,CAAC;AAED,eAAezB,aAAa","ignoreList":[]}
|
|
@@ -111,9 +111,15 @@ const SearchContent = props => {
|
|
|
111
111
|
name: "search",
|
|
112
112
|
placeholder: placeholder,
|
|
113
113
|
value: searchTerm,
|
|
114
|
-
onChange: e =>
|
|
114
|
+
onChange: e => {
|
|
115
|
+
setSearchTerm(e.target.value);
|
|
116
|
+
setShowResults(true);
|
|
117
|
+
},
|
|
115
118
|
onKeyDown: handleKeyDown,
|
|
116
|
-
onFocus: () =>
|
|
119
|
+
onFocus: () => {
|
|
120
|
+
setShowResults(true);
|
|
121
|
+
if (collapsedSearch) setCollapsed(false);
|
|
122
|
+
},
|
|
117
123
|
"data-testid": "search-content-input"
|
|
118
124
|
}))), showResults && /*#__PURE__*/React.createElement(SearchContentResults, {
|
|
119
125
|
results: results,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchContent.js","names":["React","useState","useEffect","useRef","PropTypes","useRouter","useDebounceSearch","SearchContentResults","SearchContentToggleIcon","useAppSyncEventHook","SearchContent","props","entities","searchInputWrapperMobile","searchInputWrapperDesktop","isMobile","placeholder","modifier","collapsedSearch","searchUrl","navigateToSingleSearchResult","searchContentRef","collapsed","setCollapsed","showResults","setShowResults","router","runHook","eventName","returnFunction","results","searchTerm","setSearchTerm","debouncedSearchTerm","initialSearchTerm","resultKeys","queryHook","handleRouteChange","events","on","off","handleClickOutside","event","current","contains","target","document","activeElement","querySelector","addEventListener","removeEventListener","responsiveClasses","handleNavigation","e","url","preventDefault","push","handleKeyDown","key","value","length","searchUrlWithoutHash","split","handleIconClick","isCloseIcon","className","filter","Boolean","join","searchModifier","createElement","ref","onClick","useCloseIcon","type","name","onChange","onKeyDown","onFocus","handleClick","propTypes","string","bool","array","isRequired","defaultProps"],"sources":["../../../src/components/SearchContent/SearchContent.js"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useRouter } from 'next/router';\nimport { useDebounceSearch } from '@blaze-cms/plugin-search-ui';\nimport SearchContentResults from './SearchContentResults';\nimport SearchContentToggleIcon from './SearchContentToggleIcon';\nimport { useAppSyncEventHook } from '../../hooks';\n\nconst SearchContent = props => {\n const {\n entities,\n searchInputWrapperMobile,\n searchInputWrapperDesktop,\n isMobile,\n placeholder,\n modifier,\n collapsedSearch,\n searchUrl,\n navigateToSingleSearchResult\n } = props;\n\n const searchContentRef = useRef(null);\n const [collapsed, setCollapsed] = useState(collapsedSearch);\n const [showResults, setShowResults] = useState(false);\n const router = useRouter();\n\n const { runHook } = useAppSyncEventHook({\n eventName: 'searchcontent:query-variables',\n props,\n returnFunction: true\n });\n\n const { results, searchTerm, setSearchTerm, debouncedSearchTerm } = useDebounceSearch({\n entities,\n initialSearchTerm: '',\n resultKeys: 'id, name, image { url }, url',\n queryHook: runHook\n });\n\n useEffect(() => {\n const handleRouteChange = () => {\n setSearchTerm('');\n setShowResults(false);\n if (collapsedSearch) setCollapsed(true);\n };\n router.events.on('routeChangeStart', handleRouteChange);\n return () => {\n router.events.off('routeChangeStart', handleRouteChange);\n };\n }, [collapsedSearch, router.events, setSearchTerm]);\n\n useEffect(() => {\n const handleClickOutside = event => {\n if (searchContentRef.current && !searchContentRef.current.contains(event.target)) {\n setShowResults(false);\n setSearchTerm('');\n if (\n collapsedSearch &&\n document.activeElement !== searchContentRef.current.querySelector('input')\n ) {\n setCollapsed(true);\n }\n }\n };\n\n document.addEventListener('click', handleClickOutside);\n return () => {\n document.removeEventListener('click', handleClickOutside);\n };\n }, [collapsedSearch, setSearchTerm]);\n\n const responsiveClasses = isMobile ? searchInputWrapperMobile : searchInputWrapperDesktop;\n\n const handleNavigation = (e, url) => {\n e.preventDefault();\n router.push(url);\n };\n\n const handleKeyDown = e => {\n if (e.key === 'Enter' && e.target.value !== '') {\n if (navigateToSingleSearchResult && results && results.length === 1 && results[0].url) {\n router.push(results[0].url);\n } else {\n const searchUrlWithoutHash = (searchUrl || '/search').split('#')[0];\n router.push(`${searchUrlWithoutHash}?search_term=${e.target.value}`);\n }\n }\n };\n\n const handleIconClick = () => {\n const isCloseIcon = collapsedSearch ? !collapsed : debouncedSearchTerm;\n\n if (collapsedSearch) setCollapsed(!collapsed);\n\n if (isCloseIcon) {\n setSearchTerm('');\n setShowResults(false);\n } else {\n setShowResults(true);\n }\n };\n\n const className = ['search-content', modifier, responsiveClasses].filter(Boolean).join(' ');\n const searchModifier = collapsed ? 'search-content--collapse' : 'search-content--expanded';\n\n return (\n <div className={className} ref={searchContentRef}>\n <div className={`${searchModifier}__wrapper`}>\n <label className={`${searchModifier}__label`}>\n <span className={`${searchModifier}__icon_wrapper`}>\n <SearchContentToggleIcon\n searchTerm={debouncedSearchTerm}\n onClick={handleIconClick}\n useCloseIcon={collapsedSearch ? !collapsed : debouncedSearchTerm}\n />\n </span>\n {!collapsed && (\n <input\n className={`${searchModifier}__input`}\n type=\"text\"\n name=\"search\"\n placeholder={placeholder}\n value={searchTerm}\n onChange={e => setSearchTerm(e.target.value)}\n onKeyDown={handleKeyDown}\n onFocus={() => setShowResults(true)}\n data-testid=\"search-content-input\"\n />\n )}\n </label>\n </div>\n {showResults && (\n <SearchContentResults\n results={results}\n debouncedSearchTerm={debouncedSearchTerm}\n handleClick={handleNavigation}\n />\n )}\n </div>\n );\n};\n\nSearchContent.propTypes = {\n searchInputWrapperMobile: PropTypes.string,\n searchInputWrapperDesktop: PropTypes.string,\n placeholder: PropTypes.string,\n isMobile: PropTypes.bool,\n entities: PropTypes.array.isRequired,\n modifier: PropTypes.string,\n collapsedSearch: PropTypes.bool,\n searchUrl: PropTypes.string,\n navigateToSingleSearchResult: PropTypes.bool\n};\n\nSearchContent.defaultProps = {\n searchInputWrapperMobile: '',\n searchInputWrapperDesktop: '',\n placeholder: '',\n isMobile: false,\n modifier: '',\n collapsedSearch: false,\n searchUrl: '',\n navigateToSingleSearchResult: false\n};\n\nexport default SearchContent;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SearchContent.js","names":["React","useState","useEffect","useRef","PropTypes","useRouter","useDebounceSearch","SearchContentResults","SearchContentToggleIcon","useAppSyncEventHook","SearchContent","props","entities","searchInputWrapperMobile","searchInputWrapperDesktop","isMobile","placeholder","modifier","collapsedSearch","searchUrl","navigateToSingleSearchResult","searchContentRef","collapsed","setCollapsed","showResults","setShowResults","router","runHook","eventName","returnFunction","results","searchTerm","setSearchTerm","debouncedSearchTerm","initialSearchTerm","resultKeys","queryHook","handleRouteChange","events","on","off","handleClickOutside","event","current","contains","target","document","activeElement","querySelector","addEventListener","removeEventListener","responsiveClasses","handleNavigation","e","url","preventDefault","push","handleKeyDown","key","value","length","searchUrlWithoutHash","split","handleIconClick","isCloseIcon","className","filter","Boolean","join","searchModifier","createElement","ref","onClick","useCloseIcon","type","name","onChange","onKeyDown","onFocus","handleClick","propTypes","string","bool","array","isRequired","defaultProps"],"sources":["../../../src/components/SearchContent/SearchContent.js"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useRouter } from 'next/router';\nimport { useDebounceSearch } from '@blaze-cms/plugin-search-ui';\nimport SearchContentResults from './SearchContentResults';\nimport SearchContentToggleIcon from './SearchContentToggleIcon';\nimport { useAppSyncEventHook } from '../../hooks';\n\nconst SearchContent = props => {\n const {\n entities,\n searchInputWrapperMobile,\n searchInputWrapperDesktop,\n isMobile,\n placeholder,\n modifier,\n collapsedSearch,\n searchUrl,\n navigateToSingleSearchResult\n } = props;\n\n const searchContentRef = useRef(null);\n const [collapsed, setCollapsed] = useState(collapsedSearch);\n const [showResults, setShowResults] = useState(false);\n const router = useRouter();\n\n const { runHook } = useAppSyncEventHook({\n eventName: 'searchcontent:query-variables',\n props,\n returnFunction: true\n });\n\n const { results, searchTerm, setSearchTerm, debouncedSearchTerm } = useDebounceSearch({\n entities,\n initialSearchTerm: '',\n resultKeys: 'id, name, image { url }, url',\n queryHook: runHook\n });\n\n useEffect(() => {\n const handleRouteChange = () => {\n setSearchTerm('');\n setShowResults(false);\n if (collapsedSearch) setCollapsed(true);\n };\n router.events.on('routeChangeStart', handleRouteChange);\n return () => {\n router.events.off('routeChangeStart', handleRouteChange);\n };\n }, [collapsedSearch, router.events, setSearchTerm]);\n\n useEffect(() => {\n const handleClickOutside = event => {\n if (searchContentRef.current && !searchContentRef.current.contains(event.target)) {\n setShowResults(false);\n setSearchTerm('');\n if (\n collapsedSearch &&\n document.activeElement !== searchContentRef.current.querySelector('input')\n ) {\n setCollapsed(true);\n }\n }\n };\n\n document.addEventListener('click', handleClickOutside);\n return () => {\n document.removeEventListener('click', handleClickOutside);\n };\n }, [collapsedSearch, setSearchTerm]);\n\n const responsiveClasses = isMobile ? searchInputWrapperMobile : searchInputWrapperDesktop;\n\n const handleNavigation = (e, url) => {\n e.preventDefault();\n router.push(url);\n };\n\n const handleKeyDown = e => {\n if (e.key === 'Enter' && e.target.value !== '') {\n if (navigateToSingleSearchResult && results && results.length === 1 && results[0].url) {\n router.push(results[0].url);\n } else {\n const searchUrlWithoutHash = (searchUrl || '/search').split('#')[0];\n router.push(`${searchUrlWithoutHash}?search_term=${e.target.value}`);\n }\n }\n };\n\n const handleIconClick = () => {\n const isCloseIcon = collapsedSearch ? !collapsed : debouncedSearchTerm;\n\n if (collapsedSearch) setCollapsed(!collapsed);\n\n if (isCloseIcon) {\n setSearchTerm('');\n setShowResults(false);\n } else {\n setShowResults(true);\n }\n };\n\n const className = ['search-content', modifier, responsiveClasses].filter(Boolean).join(' ');\n const searchModifier = collapsed ? 'search-content--collapse' : 'search-content--expanded';\n\n return (\n <div className={className} ref={searchContentRef}>\n <div className={`${searchModifier}__wrapper`}>\n <label className={`${searchModifier}__label`}>\n <span className={`${searchModifier}__icon_wrapper`}>\n <SearchContentToggleIcon\n searchTerm={debouncedSearchTerm}\n onClick={handleIconClick}\n useCloseIcon={collapsedSearch ? !collapsed : debouncedSearchTerm}\n />\n </span>\n {!collapsed && (\n <input\n className={`${searchModifier}__input`}\n type=\"text\"\n name=\"search\"\n placeholder={placeholder}\n value={searchTerm}\n onChange={e => {\n setSearchTerm(e.target.value);\n setShowResults(true);\n }}\n onKeyDown={handleKeyDown}\n onFocus={() => {\n setShowResults(true);\n if (collapsedSearch) setCollapsed(false);\n }}\n data-testid=\"search-content-input\"\n />\n )}\n </label>\n </div>\n {showResults && (\n <SearchContentResults\n results={results}\n debouncedSearchTerm={debouncedSearchTerm}\n handleClick={handleNavigation}\n />\n )}\n </div>\n );\n};\n\nSearchContent.propTypes = {\n searchInputWrapperMobile: PropTypes.string,\n searchInputWrapperDesktop: PropTypes.string,\n placeholder: PropTypes.string,\n isMobile: PropTypes.bool,\n entities: PropTypes.array.isRequired,\n modifier: PropTypes.string,\n collapsedSearch: PropTypes.bool,\n searchUrl: PropTypes.string,\n navigateToSingleSearchResult: PropTypes.bool\n};\n\nSearchContent.defaultProps = {\n searchInputWrapperMobile: '',\n searchInputWrapperDesktop: '',\n placeholder: '',\n isMobile: false,\n modifier: '',\n collapsedSearch: false,\n searchUrl: '',\n navigateToSingleSearchResult: false\n};\n\nexport default SearchContent;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,7 +9,8 @@ const SearchContentResults = ({
|
|
|
9
9
|
if (!debouncedSearchTerm) return null;
|
|
10
10
|
const hasResults = results.length > 0;
|
|
11
11
|
return /*#__PURE__*/React.createElement("div", {
|
|
12
|
-
className: "search-content--results__wrapper"
|
|
12
|
+
className: "search-content--results__wrapper",
|
|
13
|
+
"data-testid": "search-content-results"
|
|
13
14
|
}, /*#__PURE__*/React.createElement("div", {
|
|
14
15
|
className: "search-content--results__wrapper--message"
|
|
15
16
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchContentResults.js","names":["React","BlazeLink","SearchContentItems","SearchContentResults","results","debouncedSearchTerm","onClick","hasResults","length","createElement","className","href"],"sources":["../../../src/components/SearchContent/SearchContentResults.js"],"sourcesContent":["import React from 'react';\nimport BlazeLink from '../BlazeLink';\nimport SearchContentItems from './SearchContentItems';\n\nconst SearchContentResults = ({ results, debouncedSearchTerm, onClick }) => {\n if (!debouncedSearchTerm) return null;\n const hasResults = results.length > 0;\n return (\n <div className=\"search-content--results__wrapper\">\n <div className=\"search-content--results__wrapper--message\">\n <div className=\"search-content--results__content\">\n {hasResults ? (\n <SearchContentItems results={results} onClick={onClick} />\n ) : (\n <div className=\"search-content--results__message\">\n <BlazeLink href={`/search?search_term=${debouncedSearchTerm}`}>\n {`Search all results for: ${debouncedSearchTerm}`}\n </BlazeLink>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default SearchContentResults;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,cAAc;AACpC,OAAOC,kBAAkB,MAAM,sBAAsB;AAErD,MAAMC,oBAAoB,GAAGA,CAAC;EAAEC,OAAO;EAAEC,mBAAmB;EAAEC;AAAQ,CAAC,KAAK;EAC1E,IAAI,CAACD,mBAAmB,EAAE,OAAO,IAAI;EACrC,MAAME,UAAU,GAAGH,OAAO,CAACI,MAAM,GAAG,CAAC;EACrC,oBACER,KAAA,CAAAS,aAAA;IAAKC,SAAS,EAAC;
|
|
1
|
+
{"version":3,"file":"SearchContentResults.js","names":["React","BlazeLink","SearchContentItems","SearchContentResults","results","debouncedSearchTerm","onClick","hasResults","length","createElement","className","href"],"sources":["../../../src/components/SearchContent/SearchContentResults.js"],"sourcesContent":["import React from 'react';\nimport BlazeLink from '../BlazeLink';\nimport SearchContentItems from './SearchContentItems';\n\nconst SearchContentResults = ({ results, debouncedSearchTerm, onClick }) => {\n if (!debouncedSearchTerm) return null;\n const hasResults = results.length > 0;\n return (\n <div className=\"search-content--results__wrapper\" data-testid=\"search-content-results\">\n <div className=\"search-content--results__wrapper--message\">\n <div className=\"search-content--results__content\">\n {hasResults ? (\n <SearchContentItems results={results} onClick={onClick} />\n ) : (\n <div className=\"search-content--results__message\">\n <BlazeLink href={`/search?search_term=${debouncedSearchTerm}`}>\n {`Search all results for: ${debouncedSearchTerm}`}\n </BlazeLink>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default SearchContentResults;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,cAAc;AACpC,OAAOC,kBAAkB,MAAM,sBAAsB;AAErD,MAAMC,oBAAoB,GAAGA,CAAC;EAAEC,OAAO;EAAEC,mBAAmB;EAAEC;AAAQ,CAAC,KAAK;EAC1E,IAAI,CAACD,mBAAmB,EAAE,OAAO,IAAI;EACrC,MAAME,UAAU,GAAGH,OAAO,CAACI,MAAM,GAAG,CAAC;EACrC,oBACER,KAAA,CAAAS,aAAA;IAAKC,SAAS,EAAC,kCAAkC;IAAC,eAAY;EAAwB,gBACpFV,KAAA,CAAAS,aAAA;IAAKC,SAAS,EAAC;EAA2C,gBACxDV,KAAA,CAAAS,aAAA;IAAKC,SAAS,EAAC;EAAkC,GAC9CH,UAAU,gBACTP,KAAA,CAAAS,aAAA,CAACP,kBAAkB;IAACE,OAAO,EAAEA,OAAQ;IAACE,OAAO,EAAEA;EAAQ,CAAE,CAAC,gBAE1DN,KAAA,CAAAS,aAAA;IAAKC,SAAS,EAAC;EAAkC,gBAC/CV,KAAA,CAAAS,aAAA,CAACR,SAAS;IAACU,IAAI,EAAE,uBAAuBN,mBAAmB;EAAG,GAC3D,2BAA2BA,mBAAmB,EACtC,CACR,CAEJ,CACF,CACF,CAAC;AAEV,CAAC;AAED,eAAeF,oBAAoB","ignoreList":[]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { useQuery } from '@apollo/client';
|
|
2
2
|
import { generateSingleItemQuery } from '../application/query';
|
|
3
3
|
function useGetImageIdFromRelation(id, imageRelation, actions, isUsingRelationImage, isPreview, hasImgSrc) {
|
|
4
|
-
const skip = !id || hasImgSrc || typeof id !== 'string' || !isUsingRelationImage || !Object.keys(actions).length;
|
|
4
|
+
const skip = !actions || !id || hasImgSrc || typeof id !== 'string' || !isUsingRelationImage || !Object.keys(actions).length;
|
|
5
5
|
const [imageRelationData = ''] = imageRelation;
|
|
6
6
|
const [relationName = '', relationProp = ''] = imageRelationData.split('.');
|
|
7
7
|
const {
|
|
8
8
|
getPublished,
|
|
9
9
|
get
|
|
10
|
-
} = actions;
|
|
10
|
+
} = actions || {};
|
|
11
11
|
const getAction = isPreview ? get : getPublished || get;
|
|
12
12
|
const props = imageRelationData ? `${relationName} { ${relationProp} }` : 'id';
|
|
13
13
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-get-image-id-from-relation.js","names":["useQuery","generateSingleItemQuery","useGetImageIdFromRelation","id","imageRelation","actions","isUsingRelationImage","isPreview","hasImgSrc","skip","Object","keys","length","imageRelationData","relationName","relationProp","split","getPublished","get","getAction","props","data","loading","error","variables"],"sources":["../../src/hooks/use-get-image-id-from-relation.js"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport { generateSingleItemQuery } from '../application/query';\n\nfunction useGetImageIdFromRelation(\n id,\n imageRelation,\n actions,\n isUsingRelationImage,\n isPreview,\n hasImgSrc\n) {\n const skip =\n !id ||\n hasImgSrc ||\n typeof id !== 'string' ||\n !isUsingRelationImage ||\n !Object.keys(actions).length;\n\n const [imageRelationData = ''] = imageRelation;\n const [relationName = '', relationProp = ''] = imageRelationData.split('.');\n const { getPublished, get } = actions;\n const getAction = isPreview ? get : getPublished || get;\n\n const props = imageRelationData ? `${relationName} { ${relationProp} }` : 'id';\n const {\n data = {},\n loading,\n error\n } = useQuery(generateSingleItemQuery(getAction, props), {\n variables: { id },\n skip\n });\n return { data, loading, error };\n}\n\nexport default useGetImageIdFromRelation;\n"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,uBAAuB,QAAQ,sBAAsB;AAE9D,SAASC,yBAAyBA,CAChCC,EAAE,EACFC,aAAa,EACbC,OAAO,EACPC,oBAAoB,EACpBC,SAAS,EACTC,SAAS,EACT;EACA,MAAMC,IAAI,GACR,
|
|
1
|
+
{"version":3,"file":"use-get-image-id-from-relation.js","names":["useQuery","generateSingleItemQuery","useGetImageIdFromRelation","id","imageRelation","actions","isUsingRelationImage","isPreview","hasImgSrc","skip","Object","keys","length","imageRelationData","relationName","relationProp","split","getPublished","get","getAction","props","data","loading","error","variables"],"sources":["../../src/hooks/use-get-image-id-from-relation.js"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport { generateSingleItemQuery } from '../application/query';\n\nfunction useGetImageIdFromRelation(\n id,\n imageRelation,\n actions,\n isUsingRelationImage,\n isPreview,\n hasImgSrc\n) {\n const skip =\n !actions ||\n !id ||\n hasImgSrc ||\n typeof id !== 'string' ||\n !isUsingRelationImage ||\n !Object.keys(actions).length;\n\n const [imageRelationData = ''] = imageRelation;\n const [relationName = '', relationProp = ''] = imageRelationData.split('.');\n const { getPublished, get } = actions || {};\n const getAction = isPreview ? get : getPublished || get;\n\n const props = imageRelationData ? `${relationName} { ${relationProp} }` : 'id';\n const {\n data = {},\n loading,\n error\n } = useQuery(generateSingleItemQuery(getAction, props), {\n variables: { id },\n skip\n });\n return { data, loading, error };\n}\n\nexport default useGetImageIdFromRelation;\n"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,uBAAuB,QAAQ,sBAAsB;AAE9D,SAASC,yBAAyBA,CAChCC,EAAE,EACFC,aAAa,EACbC,OAAO,EACPC,oBAAoB,EACpBC,SAAS,EACTC,SAAS,EACT;EACA,MAAMC,IAAI,GACR,CAACJ,OAAO,IACR,CAACF,EAAE,IACHK,SAAS,IACT,OAAOL,EAAE,KAAK,QAAQ,IACtB,CAACG,oBAAoB,IACrB,CAACI,MAAM,CAACC,IAAI,CAACN,OAAO,CAAC,CAACO,MAAM;EAE9B,MAAM,CAACC,iBAAiB,GAAG,EAAE,CAAC,GAAGT,aAAa;EAC9C,MAAM,CAACU,YAAY,GAAG,EAAE,EAAEC,YAAY,GAAG,EAAE,CAAC,GAAGF,iBAAiB,CAACG,KAAK,CAAC,GAAG,CAAC;EAC3E,MAAM;IAAEC,YAAY;IAAEC;EAAI,CAAC,GAAGb,OAAO,IAAI,CAAC,CAAC;EAC3C,MAAMc,SAAS,GAAGZ,SAAS,GAAGW,GAAG,GAAGD,YAAY,IAAIC,GAAG;EAEvD,MAAME,KAAK,GAAGP,iBAAiB,GAAG,GAAGC,YAAY,MAAMC,YAAY,IAAI,GAAG,IAAI;EAC9E,MAAM;IACJM,IAAI,GAAG,CAAC,CAAC;IACTC,OAAO;IACPC;EACF,CAAC,GAAGvB,QAAQ,CAACC,uBAAuB,CAACkB,SAAS,EAAEC,KAAK,CAAC,EAAE;IACtDI,SAAS,EAAE;MAAErB;IAAG,CAAC;IACjBM;EACF,CAAC,CAAC;EACF,OAAO;IAAEY,IAAI;IAAEC,OAAO;IAAEC;EAAM,CAAC;AACjC;AAEA,eAAerB,yBAAyB","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blaze-cms/react-page-builder",
|
|
3
|
-
"version": "0.146.0-node18-tooltips.
|
|
3
|
+
"version": "0.146.0-node18-tooltips.33",
|
|
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.146.0-node18-tooltips.0",
|
|
33
33
|
"@blaze-cms/image-cdn-react": "0.3.0-alpha.7",
|
|
34
34
|
"@blaze-cms/nextjs-components": "0.146.0-node18-tooltips.32",
|
|
35
|
-
"@blaze-cms/plugin-search-ui": "0.146.0-node18-tooltips.
|
|
35
|
+
"@blaze-cms/plugin-search-ui": "0.146.0-node18-tooltips.33",
|
|
36
36
|
"@blaze-cms/setup-ui": "0.146.0-node18-tooltips.0",
|
|
37
37
|
"@blaze-cms/utils": "0.146.0-node18-tooltips.32",
|
|
38
38
|
"@blaze-cms/utils-handlebars": "0.146.0-node18-tooltips.32",
|
|
@@ -92,5 +92,5 @@
|
|
|
92
92
|
"lib/*",
|
|
93
93
|
"lib-es/*"
|
|
94
94
|
],
|
|
95
|
-
"gitHead": "
|
|
95
|
+
"gitHead": "716b7ae2c9ac96e4515eaf2d64f9c85f6d0458d1"
|
|
96
96
|
}
|
|
@@ -1,21 +1,53 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
+
import { MainContext } from '@blaze-cms/nextjs-components';
|
|
4
|
+
import { useGetImageIdFromRelation, useGetSingleEntitySchema } from '../../hooks';
|
|
3
5
|
import CarouselImage from './CarouselImage';
|
|
4
6
|
import CarouselRender from './CarouselRender';
|
|
5
7
|
import { useCarouselNavigation } from './hooks/useCarouselNavigation';
|
|
6
|
-
import { getDisplayCountData } from '../../helpers';
|
|
8
|
+
import { getDisplayCountData, getImageIds } from '../../helpers';
|
|
7
9
|
|
|
8
10
|
const Carousel = props => {
|
|
9
|
-
const {
|
|
10
|
-
|
|
11
|
+
const {
|
|
12
|
+
caption,
|
|
13
|
+
imageIds,
|
|
14
|
+
isCaptionDisplayed,
|
|
15
|
+
VariantComponent,
|
|
16
|
+
imagesProperty,
|
|
17
|
+
entity: entitySetting,
|
|
18
|
+
parent: { itemId, itemEntity },
|
|
19
|
+
...otherProps
|
|
20
|
+
} = props;
|
|
21
|
+
const { isPreview } = useContext(MainContext);
|
|
11
22
|
const navigationProps = useCarouselNavigation(props);
|
|
12
23
|
|
|
13
|
-
|
|
24
|
+
const entity = imagesProperty ? entitySetting || itemEntity : null;
|
|
25
|
+
const skipSingleEntitySchema = !entity;
|
|
26
|
+
|
|
27
|
+
const { data: { getEntitySchema: { actions } = {} } = {} } = useGetSingleEntitySchema(
|
|
28
|
+
entity,
|
|
29
|
+
skipSingleEntitySchema
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
const { data: recordData, loading: recordDataLoading } = useGetImageIdFromRelation(
|
|
33
|
+
itemId,
|
|
34
|
+
imagesProperty,
|
|
35
|
+
actions,
|
|
36
|
+
true,
|
|
37
|
+
isPreview,
|
|
38
|
+
false
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
const updatedImageIds = recordDataLoading
|
|
42
|
+
? []
|
|
43
|
+
: [...getImageIds(imagesProperty, recordData, null), ...imageIds];
|
|
44
|
+
|
|
45
|
+
if (!updatedImageIds || !updatedImageIds.length) return null;
|
|
14
46
|
const shouldDisplayCaption = isCaptionDisplayed && caption;
|
|
15
47
|
|
|
16
48
|
const { shouldDisplayCount, countMessage } = getDisplayCountData(
|
|
17
49
|
navigationProps.showCount,
|
|
18
|
-
|
|
50
|
+
updatedImageIds
|
|
19
51
|
);
|
|
20
52
|
|
|
21
53
|
const ComponentToRender = VariantComponent || CarouselRender;
|
|
@@ -23,7 +55,7 @@ const Carousel = props => {
|
|
|
23
55
|
return (
|
|
24
56
|
<ComponentToRender
|
|
25
57
|
caption={caption}
|
|
26
|
-
imageIds={
|
|
58
|
+
imageIds={updatedImageIds}
|
|
27
59
|
CarouselImage={CarouselImage}
|
|
28
60
|
shouldDisplayCaption={shouldDisplayCaption}
|
|
29
61
|
shouldDisplayCount={shouldDisplayCount}
|
|
@@ -36,16 +68,21 @@ const Carousel = props => {
|
|
|
36
68
|
|
|
37
69
|
Carousel.propTypes = {
|
|
38
70
|
caption: PropTypes.string,
|
|
71
|
+
entity: PropTypes.string,
|
|
39
72
|
imageIds: PropTypes.array,
|
|
73
|
+
imagesProperty: PropTypes.array,
|
|
40
74
|
isCaptionDisplayed: PropTypes.bool,
|
|
41
|
-
VariantComponent: PropTypes.func
|
|
75
|
+
VariantComponent: PropTypes.func,
|
|
76
|
+
parent: PropTypes.object.isRequired
|
|
42
77
|
};
|
|
43
78
|
|
|
44
79
|
Carousel.defaultProps = {
|
|
45
80
|
VariantComponent: null,
|
|
46
81
|
caption: '',
|
|
47
82
|
imageIds: [],
|
|
48
|
-
|
|
83
|
+
imagesProperty: [],
|
|
84
|
+
isCaptionDisplayed: false,
|
|
85
|
+
entity: null
|
|
49
86
|
};
|
|
50
87
|
|
|
51
88
|
export default Carousel;
|
|
@@ -23,10 +23,12 @@ const CarouselImage = ({ imageId, enableLightbox, toggleModal, handleSelectedIma
|
|
|
23
23
|
handleSelectedImage(imageId);
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
+
if (!loading && !imageUrl) return null;
|
|
27
|
+
|
|
26
28
|
return (
|
|
27
29
|
<div className="carousel__slide">
|
|
28
30
|
{loading ? (
|
|
29
|
-
<
|
|
31
|
+
<span />
|
|
30
32
|
) : (
|
|
31
33
|
<LazyImage
|
|
32
34
|
src={imageUrl}
|
|
@@ -121,9 +121,15 @@ const SearchContent = props => {
|
|
|
121
121
|
name="search"
|
|
122
122
|
placeholder={placeholder}
|
|
123
123
|
value={searchTerm}
|
|
124
|
-
onChange={e =>
|
|
124
|
+
onChange={e => {
|
|
125
|
+
setSearchTerm(e.target.value);
|
|
126
|
+
setShowResults(true);
|
|
127
|
+
}}
|
|
125
128
|
onKeyDown={handleKeyDown}
|
|
126
|
-
onFocus={() =>
|
|
129
|
+
onFocus={() => {
|
|
130
|
+
setShowResults(true);
|
|
131
|
+
if (collapsedSearch) setCollapsed(false);
|
|
132
|
+
}}
|
|
127
133
|
data-testid="search-content-input"
|
|
128
134
|
/>
|
|
129
135
|
)}
|
|
@@ -6,7 +6,7 @@ const SearchContentResults = ({ results, debouncedSearchTerm, onClick }) => {
|
|
|
6
6
|
if (!debouncedSearchTerm) return null;
|
|
7
7
|
const hasResults = results.length > 0;
|
|
8
8
|
return (
|
|
9
|
-
<div className="search-content--results__wrapper">
|
|
9
|
+
<div className="search-content--results__wrapper" data-testid="search-content-results">
|
|
10
10
|
<div className="search-content--results__wrapper--message">
|
|
11
11
|
<div className="search-content--results__content">
|
|
12
12
|
{hasResults ? (
|
|
@@ -10,6 +10,7 @@ function useGetImageIdFromRelation(
|
|
|
10
10
|
hasImgSrc
|
|
11
11
|
) {
|
|
12
12
|
const skip =
|
|
13
|
+
!actions ||
|
|
13
14
|
!id ||
|
|
14
15
|
hasImgSrc ||
|
|
15
16
|
typeof id !== 'string' ||
|
|
@@ -18,7 +19,7 @@ function useGetImageIdFromRelation(
|
|
|
18
19
|
|
|
19
20
|
const [imageRelationData = ''] = imageRelation;
|
|
20
21
|
const [relationName = '', relationProp = ''] = imageRelationData.split('.');
|
|
21
|
-
const { getPublished, get } = actions;
|
|
22
|
+
const { getPublished, get } = actions || {};
|
|
22
23
|
const getAction = isPreview ? get : getPublished || get;
|
|
23
24
|
|
|
24
25
|
const props = imageRelationData ? `${relationName} { ${relationProp} }` : 'id';
|
|
@@ -4,28 +4,35 @@
|
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import '@testing-library/jest-dom/extend-expect';
|
|
6
6
|
import { MockedProvider } from '@apollo/client/testing';
|
|
7
|
-
import { render, screen, waitFor } from '@testing-library/react';
|
|
7
|
+
import { render, screen, act, waitFor } from '@testing-library/react';
|
|
8
|
+
import { MockedRoot } from '@blaze-cms/tools/test-helpers/test-functions';
|
|
8
9
|
import { getFileById } from '../../../../../src/application/query';
|
|
9
10
|
import Carousel from '../../../../../src/components/Carousel';
|
|
11
|
+
import { MOCK_RELATION } from '../Image/mocks';
|
|
10
12
|
|
|
11
13
|
const imageId = 'test-id';
|
|
12
|
-
const getMockedProps = overrides => ({
|
|
14
|
+
const getMockedProps = (overrides = {}) => ({
|
|
13
15
|
imageIds: [imageId],
|
|
14
16
|
enableLightbox: true,
|
|
15
17
|
imageId,
|
|
16
18
|
toggleModal: jest.fn(),
|
|
17
19
|
handleSelectedImage: jest.fn(),
|
|
18
20
|
displayCount: true,
|
|
21
|
+
entity: 'page',
|
|
22
|
+
imagesProperty: ['publishedPage.otherImageIds'],
|
|
23
|
+
parent: {
|
|
24
|
+
itemId: 'parentId',
|
|
25
|
+
getAction: 'getPublishedPage',
|
|
26
|
+
itemEntity: 'page'
|
|
27
|
+
},
|
|
19
28
|
...overrides
|
|
20
29
|
});
|
|
21
30
|
|
|
22
|
-
const
|
|
31
|
+
const mocks = [
|
|
23
32
|
{
|
|
24
33
|
request: {
|
|
25
34
|
query: getFileById,
|
|
26
|
-
variables: {
|
|
27
|
-
id: imageId
|
|
28
|
-
}
|
|
35
|
+
variables: { id: imageId }
|
|
29
36
|
},
|
|
30
37
|
result: {
|
|
31
38
|
data: {
|
|
@@ -42,73 +49,76 @@ const mock = [
|
|
|
42
49
|
}
|
|
43
50
|
];
|
|
44
51
|
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const mockComponent = (
|
|
49
|
-
<MockedProvider mocks={mock}>
|
|
52
|
+
const setup = props =>
|
|
53
|
+
render(
|
|
54
|
+
<MockedProvider mocks={mocks}>
|
|
50
55
|
<Carousel {...props} />
|
|
51
56
|
</MockedProvider>
|
|
52
57
|
);
|
|
53
58
|
|
|
54
|
-
|
|
59
|
+
const setupWithRoot = async (props, mockOverrides) => {
|
|
60
|
+
const component = (
|
|
61
|
+
<MockedRoot mocks={mockOverrides}>
|
|
62
|
+
<Carousel {...props} />
|
|
63
|
+
</MockedRoot>
|
|
64
|
+
);
|
|
65
|
+
let renderResults;
|
|
66
|
+
await act(async () => {
|
|
67
|
+
renderResults = render(component);
|
|
68
|
+
});
|
|
69
|
+
return renderResults;
|
|
55
70
|
};
|
|
56
71
|
|
|
57
72
|
describe('Carousel component', () => {
|
|
58
73
|
it('should render loading state initially', async () => {
|
|
59
|
-
const { container } =
|
|
60
|
-
|
|
74
|
+
const { container } = setup(getMockedProps());
|
|
61
75
|
expect(container.innerHTML).toContain('carousel');
|
|
62
76
|
});
|
|
63
77
|
|
|
64
78
|
it('should render carousel and match snapshot', async () => {
|
|
65
|
-
const { asFragment } =
|
|
66
|
-
|
|
67
|
-
await waitFor(() => expect(asFragment()).toBeDefined());
|
|
68
|
-
|
|
79
|
+
const { asFragment } = setup(getMockedProps());
|
|
69
80
|
await waitFor(() => expect(asFragment()).toMatchSnapshot());
|
|
70
81
|
});
|
|
71
82
|
|
|
72
83
|
it('should render priority images and match snapshot', async () => {
|
|
73
|
-
const { asFragment, getAllByRole } =
|
|
74
|
-
|
|
75
|
-
await waitFor(() => expect(asFragment()).toBeDefined());
|
|
76
|
-
|
|
84
|
+
const { asFragment, getAllByRole } = setup(getMockedProps({ priorityLimit: 1 }));
|
|
77
85
|
await waitFor(() => expect(asFragment()).toMatchSnapshot());
|
|
78
|
-
expect(getAllByRole('button')
|
|
86
|
+
expect(getAllByRole('button')).toHaveLength(3);
|
|
79
87
|
});
|
|
80
88
|
|
|
81
89
|
it('should return null if there are no imageIds', () => {
|
|
82
|
-
const
|
|
83
|
-
const { container } = setup(mockedProps);
|
|
84
|
-
|
|
90
|
+
const { container } = setup(getMockedProps({ imageIds: [] }));
|
|
85
91
|
expect(container.innerHTML).toBe('');
|
|
86
92
|
});
|
|
87
93
|
|
|
94
|
+
it('should render image fetching data from relation', async () => {
|
|
95
|
+
const { asFragment, container } = await setupWithRoot(getMockedProps({ imageIds: [] }), [
|
|
96
|
+
...MOCK_RELATION,
|
|
97
|
+
...mocks
|
|
98
|
+
]);
|
|
99
|
+
await waitFor(() => expect(container.childNodes.length).toBeGreaterThan(1));
|
|
100
|
+
expect(asFragment()).toMatchSnapshot();
|
|
101
|
+
});
|
|
102
|
+
|
|
88
103
|
it('should display caption if shouldDisplayCaption is true', () => {
|
|
89
104
|
const caption = 'caption test';
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
setup(mockedProps);
|
|
105
|
+
setup(getMockedProps({ isCaptionDisplayed: true, caption }));
|
|
93
106
|
expect(screen.getByText(caption)).toBeInTheDocument();
|
|
94
107
|
});
|
|
95
108
|
|
|
96
109
|
it('should render VariantComponent if it is set', () => {
|
|
97
|
-
const mockedProps = getMockedProps({ VariantComponent:
|
|
110
|
+
const mockedProps = getMockedProps({ VariantComponent: () => <div>Variation component</div> });
|
|
98
111
|
const { container } = setup(mockedProps);
|
|
99
|
-
|
|
100
112
|
expect(container.innerHTML).toBe('<div>Variation component</div>');
|
|
101
113
|
});
|
|
102
114
|
|
|
103
115
|
it('should display image count if displayCount is true', () => {
|
|
104
|
-
|
|
105
|
-
setup(mockedProps);
|
|
116
|
+
setup(getMockedProps({ imageIds: ['id1', 'id2', 'id3'] }));
|
|
106
117
|
expect(screen.getByTestId('count')).toHaveTextContent('3 images');
|
|
107
118
|
});
|
|
108
119
|
|
|
109
120
|
it('should not display image count if displayCount is false', () => {
|
|
110
|
-
|
|
111
|
-
setup(mockedProps);
|
|
121
|
+
setup(getMockedProps({ displayCount: false }));
|
|
112
122
|
expect(screen.queryByTestId('count')).toBeNull();
|
|
113
123
|
});
|
|
114
124
|
});
|
|
@@ -43,6 +43,54 @@ exports[`Carousel component should render carousel and match snapshot 1`] = `
|
|
|
43
43
|
</DocumentFragment>
|
|
44
44
|
`;
|
|
45
45
|
|
|
46
|
+
exports[`Carousel component should render image fetching data from relation 1`] = `
|
|
47
|
+
<DocumentFragment>
|
|
48
|
+
<div
|
|
49
|
+
class="carousel"
|
|
50
|
+
>
|
|
51
|
+
<div>
|
|
52
|
+
<div
|
|
53
|
+
aria-label="Previous Slide"
|
|
54
|
+
class="carousel__button carousel__button--previous"
|
|
55
|
+
role="button"
|
|
56
|
+
>
|
|
57
|
+
<div
|
|
58
|
+
class="arrow arrow--left"
|
|
59
|
+
/>
|
|
60
|
+
</div>
|
|
61
|
+
<div
|
|
62
|
+
class="carousel__list"
|
|
63
|
+
>
|
|
64
|
+
<div
|
|
65
|
+
class="carousel__slide"
|
|
66
|
+
>
|
|
67
|
+
<span />
|
|
68
|
+
</div>
|
|
69
|
+
<div
|
|
70
|
+
class="carousel__slide"
|
|
71
|
+
>
|
|
72
|
+
<span />
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
<div
|
|
76
|
+
aria-label="Next Slide"
|
|
77
|
+
class="carousel__button carousel__button--next"
|
|
78
|
+
role="button"
|
|
79
|
+
>
|
|
80
|
+
<p
|
|
81
|
+
data-testid="count"
|
|
82
|
+
>
|
|
83
|
+
2 images
|
|
84
|
+
</p>
|
|
85
|
+
<div
|
|
86
|
+
class="arrow arrow--right"
|
|
87
|
+
/>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
</DocumentFragment>
|
|
92
|
+
`;
|
|
93
|
+
|
|
46
94
|
exports[`Carousel component should render priority images and match snapshot 1`] = `
|
|
47
95
|
<DocumentFragment>
|
|
48
96
|
<div
|
|
@@ -64,14 +112,7 @@ exports[`Carousel component should render priority images and match snapshot 1`]
|
|
|
64
112
|
<div
|
|
65
113
|
class="carousel__slide"
|
|
66
114
|
>
|
|
67
|
-
<span
|
|
68
|
-
<img
|
|
69
|
-
alt="Carousel image"
|
|
70
|
-
aria-label="View Image"
|
|
71
|
-
role="button"
|
|
72
|
-
src="test-url"
|
|
73
|
-
/>
|
|
74
|
-
</span>
|
|
115
|
+
<span />
|
|
75
116
|
</div>
|
|
76
117
|
</div>
|
|
77
118
|
<div
|
|
@@ -12,8 +12,16 @@ jest.mock('@apollo/client', () => ({
|
|
|
12
12
|
useQuery: jest.fn(() => ({ data: {}, loading: false, error: null }))
|
|
13
13
|
}));
|
|
14
14
|
|
|
15
|
+
const mockPush = jest.fn();
|
|
16
|
+
const mockOn = jest.fn();
|
|
17
|
+
const mockOff = jest.fn();
|
|
18
|
+
|
|
15
19
|
jest.mock('next/router', () => ({
|
|
16
|
-
useRouter: jest.fn(() => ({
|
|
20
|
+
useRouter: jest.fn(() => ({
|
|
21
|
+
asPath: 'test-url',
|
|
22
|
+
push: mockPush,
|
|
23
|
+
events: { on: mockOn, off: mockOff }
|
|
24
|
+
}))
|
|
17
25
|
}));
|
|
18
26
|
|
|
19
27
|
const SEARCH_INPUT_TEST_ID = 'search-content-input';
|
|
@@ -54,4 +62,27 @@ describe('SearchContent', () => {
|
|
|
54
62
|
fireEvent.click(closeIcon);
|
|
55
63
|
await waitFor(() => expect(queryByTestId(SEARCH_INPUT_TEST_ID)).toBeNull());
|
|
56
64
|
});
|
|
65
|
+
|
|
66
|
+
it('should trigger autosuggest again after navigation and typing', async () => {
|
|
67
|
+
const { getByTestId, queryByTestId } = render(
|
|
68
|
+
<MockedProvider mocks={[]} addTypename={false}>
|
|
69
|
+
<SearchContent entities={entities} />
|
|
70
|
+
</MockedProvider>
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
const input = getByTestId(SEARCH_INPUT_TEST_ID);
|
|
74
|
+
|
|
75
|
+
fireEvent.change(input, { target: { value: 'novartis' } });
|
|
76
|
+
|
|
77
|
+
await waitFor(() => expect(queryByTestId('search-content-results')).toBeTruthy());
|
|
78
|
+
|
|
79
|
+
fireEvent.keyDown(input, { key: 'Enter', code: 'Enter' });
|
|
80
|
+
|
|
81
|
+
const routeChangeHandler = mockOn.mock.calls[0][1];
|
|
82
|
+
routeChangeHandler();
|
|
83
|
+
|
|
84
|
+
fireEvent.change(input, { target: { value: 'blaze' } });
|
|
85
|
+
|
|
86
|
+
await waitFor(() => expect(queryByTestId('search-content-results')).toBeTruthy());
|
|
87
|
+
});
|
|
57
88
|
});
|