@blaze-cms/react-page-builder 0.124.0-alpha.2 → 0.124.0-alpha.6
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 +32 -0
- package/lib/application/query/index.js +1 -1
- package/lib/application/query/index.js.map +1 -1
- package/lib/components/CarouselWrapper.js +2 -2
- package/lib/components/CarouselWrapper.js.map +1 -1
- package/lib/components/SearchContent/index.js +130 -63
- package/lib/components/SearchContent/index.js.map +1 -1
- package/lib/helpers/build-props-query.js +18 -11
- package/lib/helpers/build-props-query.js.map +1 -1
- package/lib-es/application/query/index.js +4 -0
- package/lib-es/application/query/index.js.map +1 -1
- package/lib-es/components/CarouselWrapper.js +2 -2
- package/lib-es/components/CarouselWrapper.js.map +1 -1
- package/lib-es/components/SearchContent/index.js +84 -50
- package/lib-es/components/SearchContent/index.js.map +1 -1
- package/lib-es/helpers/build-props-query.js +11 -2
- package/lib-es/helpers/build-props-query.js.map +1 -1
- package/package.json +2 -2
- package/src/application/query/index.js +4 -0
- package/src/components/CarouselWrapper.js +2 -2
- package/src/components/SearchContent/index.js +77 -38
- package/src/helpers/build-props-query.js +6 -3
- package/tests/unit/src/helpers/build-props-query.test.js +43 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/application/query/index.js"],"names":["gql","upperFirst","defaultSchemaProps","getSearchPublishedContent","fields","getUser","userProps","getEntitySchema","getSingleEntitySchema","getRecordParents","queryName","getMultipleSchema","identifiers","queryString","map","id","join","getFiles","getFileById","getCount","action","generateQuery","props","generateMultiItemQuery","generateSingleItemQuery","getAction","query","getPublishedContent","entity"],"mappings":"AAAA,SAASA,GAAT,QAAoB,gBAApB;AACA,OAAOC,UAAP,MAAuB,mBAAvB;AAEA,MAAMC,kBAAkB,GAAI;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CATA;;AAWA,MAAMC,yBAAyB,GAAGC,MAAM,IAAIJ,GAAI;AAChD;AACA;AACA,UAAUI,MAAO;AACjB;AACA;AACA,GANA;;AAQA,MAAMC,OAAO,GAAGC,SAAS,IAAIN,GAAI;AACjC;AACA;AACA;AACA,QAAQM,SAAU;AAClB;AACA;AACA,CAPA;;AASA,MAAMC,eAAe,GAAGP,GAAI;AAC5B;AACA;AACA,QAAQE,kBAAmB;AAC3B;AACA;AACA,CANA;AAQA,MAAMM,qBAAqB,GAAGR,GAAI;AAClC;AACA;AACA,QAAQE,kBAAmB;AAC3B;AACA;AACA,CANA;;AAQA,MAAMO,gBAAgB,GAAGC,SAAS,IAAIV,GAAI;AAC1C;AACA,mBAAmBU,SAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAZA;;AAcA,MAAMC,iBAAiB,GAAGC,WAAW,IAAI;AACvC,QAAMC,WAAW,GAAGD,WAAW,CAC5BE,GADiB,CAEhBC,EAAE,IAAK,GAAEA,EAAG,0BAAyBA,EAAG;AAC9C,cAAcb,kBAAmB;AACjC,QAJsB,EAMjBc,IANiB,CAMX,IANW,CAApB;AAOA,SAAOhB,GAAI;AACb;AACA,QAAQa,WAAY;AACpB,MAHE;AAID,CAZD;;AAcA,MAAMI,QAAQ,GAAGjB,GAAI;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CARA;AAUA,MAAMkB,WAAW,GAAGlB,GAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CARA;;AAUA,MAAMmB,QAAQ,GAAGC,MAAM,IAAIpB,GAAI;AAC/B,MAAMoB,MAAO;AACb;AACA,CAHA;;AAKA,MAAMC,aAAa,GAAG,CAACD,MAAD,EAASE,KAAT,KAAoB;AAC1C;AACA;AACA;AACA;AACA,cAAcrB,UAAU,CAACmB,MAAD,CAAS;AACjC,MAAMA,MAAO;AACb,QAAQE,KAAM;AACd;AACA;AACA;AACA;AACA,GAZA;;AAaA,MAAMC,sBAAsB,GAAG,CAACH,MAAD,EAASE,KAAT,KAAmBtB,GAAI;AACtD;AACA,MAAMoB,MAAO;AACb,QAAQE,KAAM;AACd;AACA;AACA;AACA;AACA,GARA;;AAUA,MAAME,uBAAuB,GAAG,CAACJ,MAAD,EAASE,KAAT,KAAmBtB,GAAI;AACvD;AACA,kBAAkBoB,MAAO;AACzB,MAAME,KAAM;AACZ;AACA;AACA;AACA;AACA,GARA,C,CAUA;;;AACA,MAAMG,SAAS,GAAG,CAACL,MAAD,EAASE,KAAT,KAAmB;AACnC,QAAMI,KAAK,GAAGL,aAAa,CAACD,MAAD,EAASE,KAAT,CAA3B;AACA,SAAOtB,GAAI;AACb,MAAM0B,KAAM;AACZ,GAFE;AAGD,CALD;;AAOA,MAAMC,mBAAmB,GAAGC,MAAM,IAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiBA,MAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,
|
|
1
|
+
{"version":3,"sources":["../../../src/application/query/index.js"],"names":["gql","upperFirst","defaultSchemaProps","getSearchPublishedContent","fields","getUser","userProps","getEntitySchema","getSingleEntitySchema","getRecordParents","queryName","getMultipleSchema","identifiers","queryString","map","id","join","getFiles","getFileById","getCount","action","generateQuery","props","generateMultiItemQuery","generateSingleItemQuery","getAction","query","getPublishedContent","entity"],"mappings":"AAAA,SAASA,GAAT,QAAoB,gBAApB;AACA,OAAOC,UAAP,MAAuB,mBAAvB;AAEA,MAAMC,kBAAkB,GAAI;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CATA;;AAWA,MAAMC,yBAAyB,GAAGC,MAAM,IAAIJ,GAAI;AAChD;AACA;AACA,UAAUI,MAAO;AACjB;AACA;AACA,GANA;;AAQA,MAAMC,OAAO,GAAGC,SAAS,IAAIN,GAAI;AACjC;AACA;AACA;AACA,QAAQM,SAAU;AAClB;AACA;AACA,CAPA;;AASA,MAAMC,eAAe,GAAGP,GAAI;AAC5B;AACA;AACA,QAAQE,kBAAmB;AAC3B;AACA;AACA,CANA;AAQA,MAAMM,qBAAqB,GAAGR,GAAI;AAClC;AACA;AACA,QAAQE,kBAAmB;AAC3B;AACA;AACA,CANA;;AAQA,MAAMO,gBAAgB,GAAGC,SAAS,IAAIV,GAAI;AAC1C;AACA,mBAAmBU,SAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAZA;;AAcA,MAAMC,iBAAiB,GAAGC,WAAW,IAAI;AACvC,QAAMC,WAAW,GAAGD,WAAW,CAC5BE,GADiB,CAEhBC,EAAE,IAAK,GAAEA,EAAG,0BAAyBA,EAAG;AAC9C,cAAcb,kBAAmB;AACjC,QAJsB,EAMjBc,IANiB,CAMX,IANW,CAApB;AAOA,SAAOhB,GAAI;AACb;AACA,QAAQa,WAAY;AACpB,MAHE;AAID,CAZD;;AAcA,MAAMI,QAAQ,GAAGjB,GAAI;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CARA;AAUA,MAAMkB,WAAW,GAAGlB,GAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CARA;;AAUA,MAAMmB,QAAQ,GAAGC,MAAM,IAAIpB,GAAI;AAC/B,MAAMoB,MAAO;AACb;AACA,CAHA;;AAKA,MAAMC,aAAa,GAAG,CAACD,MAAD,EAASE,KAAT,KAAoB;AAC1C;AACA;AACA;AACA;AACA,cAAcrB,UAAU,CAACmB,MAAD,CAAS;AACjC,MAAMA,MAAO;AACb,QAAQE,KAAM;AACd;AACA;AACA;AACA;AACA,GAZA;;AAaA,MAAMC,sBAAsB,GAAG,CAACH,MAAD,EAASE,KAAT,KAAmBtB,GAAI;AACtD;AACA,MAAMoB,MAAO;AACb,QAAQE,KAAM;AACd;AACA;AACA;AACA;AACA,GARA;;AAUA,MAAME,uBAAuB,GAAG,CAACJ,MAAD,EAASE,KAAT,KAAmBtB,GAAI;AACvD;AACA,kBAAkBoB,MAAO;AACzB,MAAME,KAAM;AACZ;AACA;AACA;AACA;AACA,GARA,C,CAUA;;;AACA,MAAMG,SAAS,GAAG,CAACL,MAAD,EAASE,KAAT,KAAmB;AACnC,QAAMI,KAAK,GAAGL,aAAa,CAACD,MAAD,EAASE,KAAT,CAA3B;AACA,SAAOtB,GAAI;AACb,MAAM0B,KAAM;AACZ,GAFE;AAGD,CALD;;AAOA,MAAMC,mBAAmB,GAAGC,MAAM,IAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiBA,MAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CA9BA;;AAgCA,SACErB,eADF,EAEEC,qBAFF,EAGEiB,SAHF,EAIER,QAJF,EAKEC,WALF,EAMEK,sBANF,EAOEC,uBAPF,EAQEG,mBARF,EASExB,yBATF,EAUEgB,QAVF,EAWER,iBAXF,EAYEN,OAZF,EAaEI,gBAbF","sourcesContent":["import { gql } from '@apollo/client';\nimport upperFirst from 'lodash.upperfirst';\n\nconst defaultSchemaProps = `\n id\n identifier\n properties\n dynamicProperties\n actions\n interfaces\n relations\n __typename\n`;\n\nconst getSearchPublishedContent = fields => gql`\n query searchPublishedContent($rawQueryStringified: String!, $offset: Int, $limit: Int, $sort: String) {\n searchPublishedContent(rawQueryStringified: $rawQueryStringified, offset: $offset, limit: $limit, sort: $sort) {\n ${fields}\n }\n }\n `;\n\nconst getUser = userProps => gql`\n query getUser($id: String!) {\n getUser(id: $id) {\n id\n ${userProps}\n }\n }\n`;\n\nconst getEntitySchema = gql`\n query getEntitySchemas($identifier: String!) {\n getEntitySchemas(identifier: $identifier) {\n ${defaultSchemaProps}\n }\n }\n`;\n\nconst getSingleEntitySchema = gql`\n query getEntitySchema($id: String!) {\n getEntitySchema: getEntitySchema(id: $id) {\n ${defaultSchemaProps}\n }\n }\n`;\n\nconst getRecordParents = queryName => gql`\nquery getRecordParents($id: String!){\n recordParents: ${queryName}(id: $id){\n id,\n name,\n url,\n parents {\n id,\n name\n url\n }\n }\n}`;\n\nconst getMultipleSchema = identifiers => {\n const queryString = identifiers\n .map(\n id => `${id}: getEntitySchema(id: \"${id}\") {\n ${defaultSchemaProps}\n }`\n )\n .join(`\\n`);\n return gql`\n query {\n ${queryString}\n }`;\n};\n\nconst getFiles = gql`\n query getFiles($where: JSON!) {\n getFiles(where: $where) {\n id\n url\n data\n }\n }\n`;\n\nconst getFileById = gql`\n query getFile($id: String!) {\n getFile(id: $id) {\n id\n url\n data\n }\n }\n`;\n\nconst getCount = action => gql`query countData($where: JSON!) {\n ${action} (where: $where)\n }\n`;\n\nconst generateQuery = (action, props) => `\n query getEntityData(\n $where: JSON\n $limit: Int\n $offset: Int\n $sort: [${upperFirst(action)}SortItem]){\n ${action} (where: $where, limit: $limit, offset: $offset, sort: $sort){\n ${props}\n id\n __typename\n }\n }\n `;\nconst generateMultiItemQuery = (action, props) => gql`\n query getEntityData($where: JSON){\n ${action} (where: $where){\n ${props}\n id\n __typename\n }\n }\n `;\n\nconst generateSingleItemQuery = (action, props) => gql`\n query getEntityData($id: String!){\n entityData: ${action}(id: $id){\n ${props},\n id,\n __typename\n }\n }\n `;\n\n// TODO: extend function to handle properties and make them dynamic with a config schema for each entity.\nconst getAction = (action, props) => {\n const query = generateQuery(action, props);\n return gql`\n ${query}\n `;\n};\n\nconst getPublishedContent = entity => `\n query searchPublishedContent(\n $rawQueryStringified: String!\n $offset: Int\n $limit: Int\n $sort: String\n ) {\n searchPublishedContent(\n rawQueryStringified: $rawQueryStringified\n offset: $offset\n limit: $limit\n sort: $sort\n ) {\n results {\n ... on ${entity} {\n id\n name\n image {\n url\n __typename\n }\n url\n __typename\n }\n __typename\n }\n total\n __typename\n }\n }\n`;\n\nexport {\n getEntitySchema,\n getSingleEntitySchema,\n getAction,\n getFiles,\n getFileById,\n generateMultiItemQuery,\n generateSingleItemQuery,\n getPublishedContent,\n getSearchPublishedContent,\n getCount,\n getMultipleSchema,\n getUser,\n getRecordParents\n};\n"],"file":"index.js"}
|
|
@@ -95,7 +95,7 @@ const CarouselWrapper = ({
|
|
|
95
95
|
handleButtonNavigation();
|
|
96
96
|
}
|
|
97
97
|
}, /*#__PURE__*/React.createElement("i", {
|
|
98
|
-
className: "arrow
|
|
98
|
+
className: "carousel--arrow-left"
|
|
99
99
|
}))), /*#__PURE__*/React.createElement("div", {
|
|
100
100
|
className: "cards-carousel--right-button-wrapper"
|
|
101
101
|
}, displayRight && /*#__PURE__*/React.createElement("button", {
|
|
@@ -106,7 +106,7 @@ const CarouselWrapper = ({
|
|
|
106
106
|
handleButtonNavigation(true);
|
|
107
107
|
}
|
|
108
108
|
}, /*#__PURE__*/React.createElement("i", {
|
|
109
|
-
className: "arrow
|
|
109
|
+
className: "carousel--arrow-left"
|
|
110
110
|
}))), /*#__PURE__*/React.createElement("div", {
|
|
111
111
|
className: contentClassName,
|
|
112
112
|
ref: ref,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/CarouselWrapper.js"],"names":["React","useRef","useState","useEffect","PropTypes","CarouselWrapper","children","bannerModifier","itemsPerRow","enableAutoScroll","autoScrollTimer","arrowSize","ref","buttonDisplay","setButtonDisplays","displayLeft","displayRight","shouldAutoScroll","setShouldAutoScroll","autoScrollRef","current","id","setInterval","scrollCheck","clearInterval","handleButtonNavigation","offsetWidth","scrollWidth","handleScroll","scrollLeft","updatedDisplayLeft","updatedDisplayRight","direction","wrapperClassName","contentClassName","propTypes","string","number","oneOfType","arrayOf","node","bool","defaultProps"],"mappings":"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","sourcesContent":["import React, { useRef, useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nconst CarouselWrapper = ({\n children,\n bannerModifier,\n itemsPerRow,\n enableAutoScroll,\n autoScrollTimer,\n arrowSize\n}) => {\n const ref = useRef();\n const [buttonDisplay, setButtonDisplays] = useState({ displayLeft: false, displayRight: true });\n const [shouldAutoScroll, setShouldAutoScroll] = useState(false);\n const autoScrollRef = useRef();\n\n useEffect(\n () => {\n autoScrollRef.current = shouldAutoScroll;\n const id = setInterval(scrollCheck, autoScrollTimer);\n function scrollCheck() {\n if (!autoScrollRef.current) {\n clearInterval(id);\n } else {\n handleButtonNavigation(true);\n }\n }\n\n return () => clearInterval(id);\n },\n [autoScrollTimer, shouldAutoScroll]\n );\n\n useEffect(\n () => {\n const {\n current: { offsetWidth, scrollWidth }\n } = ref;\n if (scrollWidth <= offsetWidth)\n setButtonDisplays({ displayLeft: false, displayRight: false });\n setShouldAutoScroll(enableAutoScroll);\n },\n [enableAutoScroll]\n );\n\n const handleScroll = () => {\n const {\n current: { offsetWidth, scrollLeft, scrollWidth }\n } = ref;\n const updatedDisplayLeft = !!scrollLeft;\n const updatedDisplayRight = scrollLeft + offsetWidth + 1 < scrollWidth;\n setButtonDisplays({ displayLeft: updatedDisplayLeft, displayRight: updatedDisplayRight });\n };\n\n const handleButtonNavigation = direction => {\n if (!ref || !ref.current) return;\n const {\n current: { offsetWidth, scrollLeft, scrollWidth }\n } = ref;\n\n if (autoScrollRef.current && scrollLeft + offsetWidth >= scrollWidth) {\n ref.current.scrollLeft = 0;\n } else {\n ref.current.scrollLeft = direction ? scrollLeft + offsetWidth : scrollLeft - offsetWidth;\n }\n };\n\n const { displayLeft, displayRight } = buttonDisplay;\n const wrapperClassName = `cards-carousel${bannerModifier}`;\n const contentClassName = `cards-carousel--content items-per-row-${itemsPerRow}`;\n\n return (\n <div className={wrapperClassName}>\n <div className=\"cards-carousel--left-button-wrapper\">\n {displayLeft && (\n <button\n type=\"button\"\n className=\"cards-carousel--button-back icon-button icon\"\n onClick={() => {\n setShouldAutoScroll(false);\n handleButtonNavigation();\n }}>\n <i className=\"arrow
|
|
1
|
+
{"version":3,"sources":["../../src/components/CarouselWrapper.js"],"names":["React","useRef","useState","useEffect","PropTypes","CarouselWrapper","children","bannerModifier","itemsPerRow","enableAutoScroll","autoScrollTimer","arrowSize","ref","buttonDisplay","setButtonDisplays","displayLeft","displayRight","shouldAutoScroll","setShouldAutoScroll","autoScrollRef","current","id","setInterval","scrollCheck","clearInterval","handleButtonNavigation","offsetWidth","scrollWidth","handleScroll","scrollLeft","updatedDisplayLeft","updatedDisplayRight","direction","wrapperClassName","contentClassName","propTypes","string","number","oneOfType","arrayOf","node","bool","defaultProps"],"mappings":"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","sourcesContent":["import React, { useRef, useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nconst CarouselWrapper = ({\n children,\n bannerModifier,\n itemsPerRow,\n enableAutoScroll,\n autoScrollTimer,\n arrowSize\n}) => {\n const ref = useRef();\n const [buttonDisplay, setButtonDisplays] = useState({ displayLeft: false, displayRight: true });\n const [shouldAutoScroll, setShouldAutoScroll] = useState(false);\n const autoScrollRef = useRef();\n\n useEffect(\n () => {\n autoScrollRef.current = shouldAutoScroll;\n const id = setInterval(scrollCheck, autoScrollTimer);\n function scrollCheck() {\n if (!autoScrollRef.current) {\n clearInterval(id);\n } else {\n handleButtonNavigation(true);\n }\n }\n\n return () => clearInterval(id);\n },\n [autoScrollTimer, shouldAutoScroll]\n );\n\n useEffect(\n () => {\n const {\n current: { offsetWidth, scrollWidth }\n } = ref;\n if (scrollWidth <= offsetWidth)\n setButtonDisplays({ displayLeft: false, displayRight: false });\n setShouldAutoScroll(enableAutoScroll);\n },\n [enableAutoScroll]\n );\n\n const handleScroll = () => {\n const {\n current: { offsetWidth, scrollLeft, scrollWidth }\n } = ref;\n const updatedDisplayLeft = !!scrollLeft;\n const updatedDisplayRight = scrollLeft + offsetWidth + 1 < scrollWidth;\n setButtonDisplays({ displayLeft: updatedDisplayLeft, displayRight: updatedDisplayRight });\n };\n\n const handleButtonNavigation = direction => {\n if (!ref || !ref.current) return;\n const {\n current: { offsetWidth, scrollLeft, scrollWidth }\n } = ref;\n\n if (autoScrollRef.current && scrollLeft + offsetWidth >= scrollWidth) {\n ref.current.scrollLeft = 0;\n } else {\n ref.current.scrollLeft = direction ? scrollLeft + offsetWidth : scrollLeft - offsetWidth;\n }\n };\n\n const { displayLeft, displayRight } = buttonDisplay;\n const wrapperClassName = `cards-carousel${bannerModifier}`;\n const contentClassName = `cards-carousel--content items-per-row-${itemsPerRow}`;\n\n return (\n <div className={wrapperClassName}>\n <div className=\"cards-carousel--left-button-wrapper\">\n {displayLeft && (\n <button\n type=\"button\"\n className=\"cards-carousel--button-back icon-button icon\"\n onClick={() => {\n setShouldAutoScroll(false);\n handleButtonNavigation();\n }}>\n <i className=\"carousel--arrow-left\" />\n </button>\n )}\n </div>\n <div className=\"cards-carousel--right-button-wrapper\">\n {displayRight && (\n <button\n type=\"button\"\n className=\"cards-carousel--button-forward icon-button icon\"\n onClick={() => {\n setShouldAutoScroll(false);\n handleButtonNavigation(true);\n }}>\n <i className=\"carousel--arrow-left\" />\n </button>\n )}\n </div>\n <div className={contentClassName} ref={ref} onScroll={handleScroll}>\n {children}\n </div>\n </div>\n );\n};\n\nCarouselWrapper.propTypes = {\n bannerModifier: PropTypes.string,\n itemsPerRow: PropTypes.number,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n enableAutoScroll: PropTypes.bool,\n autoScrollTimer: PropTypes.number,\n arrowSize: PropTypes.number\n};\n\nCarouselWrapper.defaultProps = {\n itemsPerRow: 0,\n bannerModifier: '',\n children: [],\n enableAutoScroll: false,\n autoScrollTimer: 0,\n arrowSize: 14\n};\n\nexport default CarouselWrapper;\n"],"file":"CarouselWrapper.js"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import { gql,
|
|
3
|
+
import { gql, useApolloClient } from '@apollo/client';
|
|
4
4
|
import { useRouter } from 'next/router';
|
|
5
5
|
import { getPublishedContent } from '../../application/query';
|
|
6
6
|
import BlazeLink from '../BlazeLink';
|
|
7
7
|
|
|
8
8
|
const SearchContent = ({
|
|
9
|
-
|
|
9
|
+
entities,
|
|
10
10
|
searchInputAlignment,
|
|
11
11
|
searchInputWrapperMobile,
|
|
12
12
|
searchInputWrapperDesktop,
|
|
@@ -16,44 +16,73 @@ const SearchContent = ({
|
|
|
16
16
|
}) => {
|
|
17
17
|
const [collapsed, setCollapsed] = useState(collapsible);
|
|
18
18
|
const [searchTerm, setSearchTerm] = useState(null);
|
|
19
|
+
const [data, setData] = useState([]);
|
|
19
20
|
const router = useRouter();
|
|
21
|
+
const client = useApolloClient();
|
|
20
22
|
|
|
21
23
|
const capitalize = s => {
|
|
22
24
|
if (typeof s !== 'string') return '';
|
|
23
25
|
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
24
26
|
};
|
|
25
27
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
React.useEffect(() => {
|
|
29
|
+
if (data && data.length !== 0) return;
|
|
30
|
+
const promises = entities.map(entity => {
|
|
31
|
+
const [a, b] = entity.split('_');
|
|
32
|
+
const entityName = capitalize(a) + capitalize(b);
|
|
33
|
+
const rawQueryStringified = JSON.stringify({
|
|
34
|
+
size: 0,
|
|
35
|
+
query: {
|
|
36
|
+
bool: {
|
|
37
|
+
should: [{
|
|
38
|
+
match: {
|
|
39
|
+
docType: entity
|
|
40
|
+
}
|
|
41
|
+
}],
|
|
42
|
+
minimum_should_match: 1
|
|
35
43
|
}
|
|
36
|
-
}
|
|
37
|
-
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
const query = gql`
|
|
47
|
+
${getPublishedContent(entityName)}
|
|
48
|
+
`;
|
|
49
|
+
|
|
50
|
+
try {
|
|
51
|
+
return client.query({
|
|
52
|
+
query,
|
|
53
|
+
variables: {
|
|
54
|
+
rawQueryStringified,
|
|
55
|
+
offset: 0,
|
|
56
|
+
limit: 5
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
} catch (e) {
|
|
60
|
+
return [];
|
|
38
61
|
}
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
try {
|
|
65
|
+
(async () => {
|
|
66
|
+
try {
|
|
67
|
+
const fetchResults = await Promise.all(promises);
|
|
68
|
+
const searchResults = fetchResults.map(result => {
|
|
69
|
+
const {
|
|
70
|
+
data
|
|
71
|
+
} = result;
|
|
72
|
+
return data.searchPublishedContent.results;
|
|
73
|
+
}).flat();
|
|
74
|
+
setData(searchResults);
|
|
75
|
+
console.log({
|
|
76
|
+
searchResults
|
|
77
|
+
});
|
|
78
|
+
} catch (e) {
|
|
79
|
+
console.error(e);
|
|
80
|
+
}
|
|
81
|
+
})();
|
|
82
|
+
} catch (e) {
|
|
83
|
+
console.error(e);
|
|
39
84
|
}
|
|
40
85
|
});
|
|
41
|
-
const query = gql`
|
|
42
|
-
${getPublishedContent(entityName)}
|
|
43
|
-
`;
|
|
44
|
-
const {
|
|
45
|
-
loading,
|
|
46
|
-
error,
|
|
47
|
-
data
|
|
48
|
-
} = useQuery(query, {
|
|
49
|
-
variables: {
|
|
50
|
-
rawQueryStringified,
|
|
51
|
-
offset: 0,
|
|
52
|
-
limit: 5
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
if (loading) return null;
|
|
56
|
-
if (error) return null;
|
|
57
86
|
|
|
58
87
|
const handleClick = (e, url) => {
|
|
59
88
|
e.preventDefault();
|
|
@@ -66,30 +95,35 @@ const SearchContent = ({
|
|
|
66
95
|
}
|
|
67
96
|
};
|
|
68
97
|
|
|
69
|
-
const renderResults = () =>
|
|
70
|
-
|
|
98
|
+
const renderResults = () => // eslint-disable-next-line no-undef
|
|
99
|
+
data === null || data === void 0 ? void 0 : data.map(dataItem => {
|
|
71
100
|
const {
|
|
72
|
-
|
|
73
|
-
|
|
101
|
+
name,
|
|
102
|
+
image,
|
|
103
|
+
url
|
|
104
|
+
} = dataItem;
|
|
74
105
|
|
|
75
|
-
if (
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
106
|
+
if (searchTerm && searchTerm !== '') {
|
|
107
|
+
if (name.includes(searchTerm)) {
|
|
108
|
+
return /*#__PURE__*/React.createElement(BlazeLink, {
|
|
109
|
+
href: url,
|
|
110
|
+
onClick: e => handleClick(e, url)
|
|
111
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
112
|
+
className: "mt-2 mb-1"
|
|
113
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
114
|
+
className: "flex justify-start items-center"
|
|
115
|
+
}, image.url ? /*#__PURE__*/React.createElement("img", {
|
|
116
|
+
src: image.url,
|
|
117
|
+
alt: name,
|
|
118
|
+
className: "w-20 h-14"
|
|
119
|
+
}) : null, /*#__PURE__*/React.createElement("span", {
|
|
120
|
+
className: "ml-2"
|
|
121
|
+
}, name))));
|
|
122
|
+
}
|
|
86
123
|
|
|
87
|
-
|
|
88
|
-
});
|
|
124
|
+
return null;
|
|
89
125
|
}
|
|
90
|
-
|
|
91
|
-
return [];
|
|
92
|
-
};
|
|
126
|
+
});
|
|
93
127
|
|
|
94
128
|
const searchResultsMessage = searchTerm ? `Search results for: ${searchTerm}` : '';
|
|
95
129
|
return collapsed ? /*#__PURE__*/React.createElement("div", {
|
|
@@ -160,7 +194,7 @@ SearchContent.propTypes = {
|
|
|
160
194
|
placeholder: PropTypes.string,
|
|
161
195
|
isMobile: PropTypes.bool,
|
|
162
196
|
collapsible: PropTypes.bool,
|
|
163
|
-
|
|
197
|
+
entities: PropTypes.array.isRequired
|
|
164
198
|
};
|
|
165
199
|
SearchContent.defaultProps = {
|
|
166
200
|
searchInputAlignment: '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/SearchContent/index.js"],"names":["React","useState","PropTypes","gql","useQuery","useRouter","getPublishedContent","BlazeLink","SearchContent","entity","searchInputAlignment","searchInputWrapperMobile","searchInputWrapperDesktop","collapsible","isMobile","placeholder","collapsed","setCollapsed","searchTerm","setSearchTerm","router","capitalize","s","charAt","toUpperCase","slice","a","b","split","entityName","rawQueryStringified","JSON","stringify","size","query","bool","should","match","docType","minimum_should_match","loading","error","data","variables","offset","limit","handleClick","e","url","preventDefault","push","handleKeyPress","key","target","value","renderResults","results","searchPublishedContent","map","name","includes","searchResultsMessage","propTypes","string","isRequired","defaultProps"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { gql, useQuery } from '@apollo/client';\nimport { useRouter } from 'next/router';\nimport { getPublishedContent } from '../../application/query';\nimport BlazeLink from '../BlazeLink';\n\nconst SearchContent = ({\n entity,\n searchInputAlignment,\n searchInputWrapperMobile,\n searchInputWrapperDesktop,\n collapsible,\n isMobile,\n placeholder\n}) => {\n const [collapsed, setCollapsed] = useState(collapsible);\n const [searchTerm, setSearchTerm] = useState(null);\n const router = useRouter();\n\n const capitalize = s => {\n if (typeof s !== 'string') return '';\n return s.charAt(0).toUpperCase() + s.slice(1);\n };\n\n const [a, b] = entity.split('_');\n\n const entityName = capitalize(a) + capitalize(b);\n\n const rawQueryStringified = JSON.stringify({\n size: 0,\n query: {\n bool: {\n should: [\n {\n match: {\n docType: entity\n }\n }\n ],\n minimum_should_match: 1\n }\n }\n });\n\n const query = gql`\n ${getPublishedContent(entityName)}\n `;\n\n const { loading, error, data } = useQuery(query, {\n variables: { rawQueryStringified, offset: 0, limit: 5 }\n });\n\n if (loading) return null;\n if (error) return null;\n\n const handleClick = (e, url) => {\n e.preventDefault();\n router.push(url);\n };\n\n const handleKeyPress = e => {\n if (e.key === 'Enter' && e.target.value !== '') {\n router.push(`/search?search_term=${e.target.value}`);\n }\n };\n\n const renderResults = () => {\n // eslint-disable-next-line no-undef\n const { results } = data?.searchPublishedContent;\n\n if (results && searchTerm && searchTerm !== '') {\n return results.map(({ name, url }) => {\n if (name.includes(searchTerm)) {\n return (\n <BlazeLink href={url} onClick={e => handleClick(e, url)}>\n {name}\n </BlazeLink>\n );\n }\n\n return null;\n });\n }\n\n return [];\n };\n\n const searchResultsMessage = searchTerm ? `Search results for: ${searchTerm}` : '';\n\n return collapsed ? (\n <div className={isMobile ? searchInputWrapperMobile : searchInputWrapperDesktop}>\n <div className=\"search-content--collapse__wrapper\">\n <label className=\"search-content--collapse__label\">\n <span className=\"search-content--collapse__icon_wrapper\">\n <svg className=\"search-content--collapse__icon\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n <input\n onFocus={() => setCollapsed(false)}\n onChange={e => setSearchTerm(e.target.value)}\n type=\"text\"\n name=\"search\"\n value=\"\"\n className=\"search-content--collapse__input\"\n />\n </label>\n </div>\n </div>\n ) : (\n <>\n <div className={`${isMobile ? searchInputWrapperMobile : searchInputWrapperDesktop}`}>\n <div className=\"search-content--expanded__wrapper\">\n <label className=\"search-content--expanded__label\">\n <span className=\"search-content--expanded__icon_wrapper\">\n <svg className=\"search-content--expanded__icon\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n <input\n type=\"text\"\n name=\"search\"\n onChange={e => setSearchTerm(e.target.value)}\n onKeyPress={handleKeyPress}\n className=\"search-content--expanded__input\"\n placeholder={placeholder}\n onBlur={() => {\n if (!collapsible) return;\n if (!searchTerm || searchTerm === '') setCollapsed(true);\n }}\n />\n </label>\n </div>\n {data &&\n searchResultsMessage !== '' && (\n <div className=\"search-content--results__wrapper\">\n <div className=\"search-content--results__wrapper--message\">\n <div className=\"text-sm pt-2\">{searchResultsMessage}</div>\n\n <div className=\"search-content--results__message\">\n <div className=\"search-content--results__content\">{renderResults()}</div>\n </div>\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nSearchContent.propTypes = {\n searchInputAlignment: PropTypes.string,\n searchInputWrapperMobile: PropTypes.string,\n searchInputWrapperDesktop: PropTypes.string,\n placeholder: PropTypes.string,\n isMobile: PropTypes.bool,\n collapsible: PropTypes.bool,\n entity: PropTypes.string.isRequired\n};\n\nSearchContent.defaultProps = {\n searchInputAlignment: '',\n searchInputWrapperMobile: '',\n searchInputWrapperDesktop: '',\n placeholder: '',\n isMobile: false,\n collapsible: false\n};\n\nexport default SearchContent;\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SearchContent/index.js"],"names":["React","useState","PropTypes","gql","useApolloClient","useRouter","getPublishedContent","BlazeLink","SearchContent","entities","searchInputAlignment","searchInputWrapperMobile","searchInputWrapperDesktop","collapsible","isMobile","placeholder","collapsed","setCollapsed","searchTerm","setSearchTerm","data","setData","router","client","capitalize","s","charAt","toUpperCase","slice","useEffect","length","promises","map","entity","a","b","split","entityName","rawQueryStringified","JSON","stringify","size","query","bool","should","match","docType","minimum_should_match","variables","offset","limit","e","fetchResults","Promise","all","searchResults","result","searchPublishedContent","results","flat","console","log","error","handleClick","url","preventDefault","push","handleKeyPress","key","target","value","renderResults","dataItem","name","image","includes","searchResultsMessage","propTypes","string","array","isRequired","defaultProps"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { gql, useApolloClient } from '@apollo/client';\n\nimport { useRouter } from 'next/router';\nimport { getPublishedContent } from '../../application/query';\nimport BlazeLink from '../BlazeLink';\n\nconst SearchContent = ({\n entities,\n searchInputAlignment,\n searchInputWrapperMobile,\n searchInputWrapperDesktop,\n collapsible,\n isMobile,\n placeholder\n}) => {\n const [collapsed, setCollapsed] = useState(collapsible);\n const [searchTerm, setSearchTerm] = useState(null);\n const [data, setData] = useState([]);\n\n const router = useRouter();\n const client = useApolloClient();\n\n const capitalize = s => {\n if (typeof s !== 'string') return '';\n return s.charAt(0).toUpperCase() + s.slice(1);\n };\n\n React.useEffect(() => {\n if (data && data.length !== 0) return;\n\n const promises = entities.map(entity => {\n const [a, b] = entity.split('_');\n\n const entityName = capitalize(a) + capitalize(b);\n\n const rawQueryStringified = JSON.stringify({\n size: 0,\n query: {\n bool: {\n should: [\n {\n match: {\n docType: entity\n }\n }\n ],\n minimum_should_match: 1\n }\n }\n });\n\n const query = gql`\n ${getPublishedContent(entityName)}\n `;\n\n try {\n return client.query({\n query,\n variables: {\n rawQueryStringified,\n offset: 0,\n limit: 5\n }\n });\n } catch (e) {\n return [];\n }\n });\n\n try {\n (async () => {\n try {\n const fetchResults = await Promise.all(promises);\n const searchResults = fetchResults\n .map(result => {\n const { data } = result;\n return data.searchPublishedContent.results;\n })\n .flat();\n\n setData(searchResults);\n console.log({ searchResults });\n } catch (e) {\n console.error(e);\n }\n })();\n } catch (e) {\n console.error(e);\n }\n });\n\n const handleClick = (e, url) => {\n e.preventDefault();\n router.push(url);\n };\n\n const handleKeyPress = e => {\n if (e.key === 'Enter' && e.target.value !== '') {\n router.push(`/search?search_term=${e.target.value}`);\n }\n };\n\n const renderResults = () =>\n // eslint-disable-next-line no-undef\n data?.map(dataItem => {\n const { name, image, url } = dataItem;\n\n if (searchTerm && searchTerm !== '') {\n if (name.includes(searchTerm)) {\n return (\n <BlazeLink href={url} onClick={e => handleClick(e, url)}>\n <div className=\"mt-2 mb-1\">\n <div className=\"flex justify-start items-center\">\n {image.url ? <img src={image.url} alt={name} className=\"w-20 h-14\" /> : null}\n <span className=\"ml-2\">{name}</span>\n </div>\n </div>\n </BlazeLink>\n );\n }\n\n return null;\n }\n });\n\n const searchResultsMessage = searchTerm ? `Search results for: ${searchTerm}` : '';\n\n return collapsed ? (\n <div className={isMobile ? searchInputWrapperMobile : searchInputWrapperDesktop}>\n <div className=\"search-content--collapse__wrapper\">\n <label className=\"search-content--collapse__label\">\n <span className=\"search-content--collapse__icon_wrapper\">\n <svg className=\"search-content--collapse__icon\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n <input\n onFocus={() => setCollapsed(false)}\n onChange={e => setSearchTerm(e.target.value)}\n type=\"text\"\n name=\"search\"\n value=\"\"\n className=\"search-content--collapse__input\"\n />\n </label>\n </div>\n </div>\n ) : (\n <>\n <div className={`${isMobile ? searchInputWrapperMobile : searchInputWrapperDesktop}`}>\n <div className=\"search-content--expanded__wrapper\">\n <label className=\"search-content--expanded__label\">\n <span className=\"search-content--expanded__icon_wrapper\">\n <svg className=\"search-content--expanded__icon\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n <input\n type=\"text\"\n name=\"search\"\n onChange={e => setSearchTerm(e.target.value)}\n onKeyPress={handleKeyPress}\n className=\"search-content--expanded__input\"\n placeholder={placeholder}\n onBlur={() => {\n if (!collapsible) return;\n if (!searchTerm || searchTerm === '') setCollapsed(true);\n }}\n />\n </label>\n </div>\n {data &&\n searchResultsMessage !== '' && (\n <div className=\"search-content--results__wrapper\">\n <div className=\"search-content--results__wrapper--message\">\n <div className=\"text-sm pt-2\">{searchResultsMessage}</div>\n\n <div className=\"search-content--results__message\">\n <div className=\"search-content--results__content\">{renderResults()}</div>\n </div>\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nSearchContent.propTypes = {\n searchInputAlignment: PropTypes.string,\n searchInputWrapperMobile: PropTypes.string,\n searchInputWrapperDesktop: PropTypes.string,\n placeholder: PropTypes.string,\n isMobile: PropTypes.bool,\n collapsible: PropTypes.bool,\n entities: PropTypes.array.isRequired\n};\n\nSearchContent.defaultProps = {\n searchInputAlignment: '',\n searchInputWrapperMobile: '',\n searchInputWrapperDesktop: '',\n placeholder: '',\n isMobile: false,\n collapsible: false\n};\n\nexport default SearchContent;\n"],"file":"index.js"}
|
|
@@ -13,12 +13,20 @@ const buildPropsQuery = (data, extraProps = [], cardOptions = null) => {
|
|
|
13
13
|
const allProps = [...typeBasedProps, ...extraProps];
|
|
14
14
|
const uniqueProps = [...new Set([...allProps])];
|
|
15
15
|
const basicProps = uniqueProps.filter(prop => prop && !prop.includes('.')).filter((prop, i, arr) => arr.indexOf(prop) === i);
|
|
16
|
-
const complexProps = buildComplexProps(shouldAddCategoryProps, uniqueProps);
|
|
16
|
+
const complexProps = buildComplexProps(shouldAddCategoryProps, uniqueProps, data);
|
|
17
17
|
return [...basicProps, ...complexProps].join(',');
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
const buildComplexProps = (shouldAddCategoryProps, props
|
|
20
|
+
const buildComplexProps = (shouldAddCategoryProps, props, {
|
|
21
|
+
getEntitySchema: {
|
|
22
|
+
relations
|
|
23
|
+
}
|
|
24
|
+
}) => props.filter(prop => prop && prop.includes('.')).map(nested => nested.split('.')[0]).filter((prop, i, arr) => arr.indexOf(prop) === i).map(base => {
|
|
25
|
+
const matchingRelation = relations.find(({
|
|
26
|
+
localField
|
|
27
|
+
}) => localField === base);
|
|
21
28
|
const nestedProps = props.filter((extraProp, i, arr) => extraProp && extraProp.startsWith(`${base}.`) && arr.indexOf(extraProp) === i).map(nested => nested.split('.')[1]);
|
|
29
|
+
if (matchingRelation && !nestedProps.includes('id')) nestedProps.push('id');
|
|
22
30
|
const jointNestedProps = nestedProps.join(',');
|
|
23
31
|
if (base === 'category' && shouldAddCategoryProps) return `${base}{${jointNestedProps}, ${categoryProps}}`;
|
|
24
32
|
|
|
@@ -55,6 +63,7 @@ const getTypeBaseProps = (data, cardOptions, extraPropsHaveCategory) => {
|
|
|
55
63
|
const typeBasedProps = [...defaultProps];
|
|
56
64
|
typeBasedProps.push(...getCategoyProps(shouldAddCategoryProps, hasCategory, hasPreheader));
|
|
57
65
|
typeBasedProps.push(...getContentProps(isContent));
|
|
66
|
+
if (properties.url || dynamicProperties.url) typeBasedProps.push('url');
|
|
58
67
|
|
|
59
68
|
if (displayThumbnail && relations.find(({
|
|
60
69
|
localField
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/helpers/build-props-query.js"],"names":["CATEGORY_ID","ID","PREHEADER_PROP","HEADLINE_PROP","defaultProps","categoryProps","checkProps","props","Object","keys","filter","prop","length","buildPropsQuery","data","extraProps","cardOptions","extraPropsHaveCategory","includes","typeBasedProps","shouldAddCategoryProps","getTypeBaseProps","allProps","uniqueProps","Set","basicProps","i","arr","indexOf","complexProps","buildComplexProps","join","map","nested","split","base","nestedProps","extraProp","startsWith","jointNestedProps","isCard","displayCategory","displayThumbnail","
|
|
1
|
+
{"version":3,"sources":["../../src/helpers/build-props-query.js"],"names":["CATEGORY_ID","ID","PREHEADER_PROP","HEADLINE_PROP","defaultProps","categoryProps","checkProps","props","Object","keys","filter","prop","length","buildPropsQuery","data","extraProps","cardOptions","extraPropsHaveCategory","includes","typeBasedProps","shouldAddCategoryProps","getTypeBaseProps","allProps","uniqueProps","Set","basicProps","i","arr","indexOf","complexProps","buildComplexProps","join","getEntitySchema","relations","map","nested","split","base","matchingRelation","find","localField","nestedProps","extraProp","startsWith","push","jointNestedProps","isCard","displayCategory","displayThumbnail","interfaces","properties","dynamicProperties","isContent","hasCategory","hasPreheader","getCategoyProps","getContentProps","url"],"mappings":"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","sourcesContent":["import { CATEGORY_ID, ID, PREHEADER_PROP, HEADLINE_PROP } from '../constants';\n\nconst defaultProps = [ID, 'name'];\nconst categoryProps = 'id publishedListingPage{id, url}';\n\nconst checkProps = props =>\n !!(props && Object.keys(props).filter(prop => prop === CATEGORY_ID).length);\n\nconst buildPropsQuery = (data, extraProps = [], cardOptions = null) => {\n const extraPropsHaveCategory = !!extraProps.filter(prop => prop.includes('category.')).length;\n\n const { typeBasedProps, shouldAddCategoryProps } = getTypeBaseProps(\n data,\n cardOptions,\n extraPropsHaveCategory\n );\n\n const allProps = [...typeBasedProps, ...extraProps];\n\n const uniqueProps = [...new Set([...allProps])];\n\n const basicProps = uniqueProps\n .filter(prop => prop && !prop.includes('.'))\n .filter((prop, i, arr) => arr.indexOf(prop) === i);\n const complexProps = buildComplexProps(shouldAddCategoryProps, uniqueProps, data);\n return [...basicProps, ...complexProps].join(',');\n};\n\nconst buildComplexProps = (shouldAddCategoryProps, props, { getEntitySchema: { relations } }) =>\n props\n .filter(prop => prop && prop.includes('.'))\n .map(nested => nested.split('.')[0])\n .filter((prop, i, arr) => arr.indexOf(prop) === i)\n .map(base => {\n const matchingRelation = relations.find(({ localField }) => localField === base);\n const nestedProps = props\n .filter(\n (extraProp, i, arr) =>\n extraProp && extraProp.startsWith(`${base}.`) && arr.indexOf(extraProp) === i\n )\n .map(nested => nested.split('.')[1]);\n if (matchingRelation && !nestedProps.includes('id')) nestedProps.push('id');\n\n const jointNestedProps = nestedProps.join(',');\n if (base === 'category' && shouldAddCategoryProps)\n return `${base}{${jointNestedProps}, ${categoryProps}}`;\n if (base.includes('published')) {\n return `${base}{${jointNestedProps},url}`;\n }\n return `${base}{${jointNestedProps}}`;\n });\n\nconst getTypeBaseProps = (data, cardOptions, extraPropsHaveCategory) => {\n const isCard = !!cardOptions;\n const { displayCategory = true, displayThumbnail = true } = cardOptions || {};\n\n const shouldAddCategoryProps =\n (isCard && displayCategory) || (!isCard && !extraPropsHaveCategory);\n\n if (!isCard) return { typeBasedProps: [ID], shouldAddCategoryProps };\n\n const { getEntitySchema } = data;\n const { interfaces, properties, dynamicProperties, relations } = getEntitySchema;\n\n const isContent = !!interfaces.includes('content/content');\n const hasCategory = checkProps(properties) || checkProps(dynamicProperties);\n const hasPreheader = properties[PREHEADER_PROP];\n\n const typeBasedProps = [...defaultProps];\n\n typeBasedProps.push(...getCategoyProps(shouldAddCategoryProps, hasCategory, hasPreheader));\n typeBasedProps.push(...getContentProps(isContent));\n\n if (properties.url || dynamicProperties.url) typeBasedProps.push('url');\n\n if (displayThumbnail && relations.find(({ localField }) => localField === 'image')) {\n typeBasedProps.push('image.id', 'image.url', 'image.data');\n }\n\n return { typeBasedProps, shouldAddCategoryProps };\n};\n\nconst getContentProps = isContent => (isContent ? ['url', 'sponsored', 'featured'] : []);\n\nconst getCategoyProps = (shouldAddCategoryProps, hasCategory, hasPreheader) => {\n if (!shouldAddCategoryProps) return [];\n\n const props = [];\n\n if (hasCategory) {\n props.push('category.name', 'category.listingPageId', 'category.listingPageEntity');\n }\n\n if (hasPreheader) {\n props.push(`${PREHEADER_PROP}{name}`);\n props.push(HEADLINE_PROP);\n }\n\n return props;\n};\n\nexport default buildPropsQuery;\n"],"file":"build-props-query.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blaze-cms/react-page-builder",
|
|
3
|
-
"version": "0.124.0-alpha.
|
|
3
|
+
"version": "0.124.0-alpha.6",
|
|
4
4
|
"description": "Blaze react page builder",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-es/index.js",
|
|
@@ -84,5 +84,5 @@
|
|
|
84
84
|
"lib/*",
|
|
85
85
|
"lib-es/*"
|
|
86
86
|
],
|
|
87
|
-
"gitHead": "
|
|
87
|
+
"gitHead": "2aa92004e0257ef18f0ebb7615617cf389cbe850"
|
|
88
88
|
}
|
|
@@ -80,7 +80,7 @@ const CarouselWrapper = ({
|
|
|
80
80
|
setShouldAutoScroll(false);
|
|
81
81
|
handleButtonNavigation();
|
|
82
82
|
}}>
|
|
83
|
-
<i className="arrow
|
|
83
|
+
<i className="carousel--arrow-left" />
|
|
84
84
|
</button>
|
|
85
85
|
)}
|
|
86
86
|
</div>
|
|
@@ -93,7 +93,7 @@ const CarouselWrapper = ({
|
|
|
93
93
|
setShouldAutoScroll(false);
|
|
94
94
|
handleButtonNavigation(true);
|
|
95
95
|
}}>
|
|
96
|
-
<i className="arrow
|
|
96
|
+
<i className="carousel--arrow-left" />
|
|
97
97
|
</button>
|
|
98
98
|
)}
|
|
99
99
|
</div>
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import { gql,
|
|
3
|
+
import { gql, useApolloClient } from '@apollo/client';
|
|
4
|
+
|
|
4
5
|
import { useRouter } from 'next/router';
|
|
5
6
|
import { getPublishedContent } from '../../application/query';
|
|
6
7
|
import BlazeLink from '../BlazeLink';
|
|
7
8
|
|
|
8
9
|
const SearchContent = ({
|
|
9
|
-
|
|
10
|
+
entities,
|
|
10
11
|
searchInputAlignment,
|
|
11
12
|
searchInputWrapperMobile,
|
|
12
13
|
searchInputWrapperDesktop,
|
|
@@ -16,44 +17,80 @@ const SearchContent = ({
|
|
|
16
17
|
}) => {
|
|
17
18
|
const [collapsed, setCollapsed] = useState(collapsible);
|
|
18
19
|
const [searchTerm, setSearchTerm] = useState(null);
|
|
20
|
+
const [data, setData] = useState([]);
|
|
21
|
+
|
|
19
22
|
const router = useRouter();
|
|
23
|
+
const client = useApolloClient();
|
|
20
24
|
|
|
21
25
|
const capitalize = s => {
|
|
22
26
|
if (typeof s !== 'string') return '';
|
|
23
27
|
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
24
28
|
};
|
|
25
29
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
React.useEffect(() => {
|
|
31
|
+
if (data && data.length !== 0) return;
|
|
32
|
+
|
|
33
|
+
const promises = entities.map(entity => {
|
|
34
|
+
const [a, b] = entity.split('_');
|
|
35
|
+
|
|
36
|
+
const entityName = capitalize(a) + capitalize(b);
|
|
37
|
+
|
|
38
|
+
const rawQueryStringified = JSON.stringify({
|
|
39
|
+
size: 0,
|
|
40
|
+
query: {
|
|
41
|
+
bool: {
|
|
42
|
+
should: [
|
|
43
|
+
{
|
|
44
|
+
match: {
|
|
45
|
+
docType: entity
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
minimum_should_match: 1
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
29
53
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
54
|
+
const query = gql`
|
|
55
|
+
${getPublishedContent(entityName)}
|
|
56
|
+
`;
|
|
57
|
+
|
|
58
|
+
try {
|
|
59
|
+
return client.query({
|
|
60
|
+
query,
|
|
61
|
+
variables: {
|
|
62
|
+
rawQueryStringified,
|
|
63
|
+
offset: 0,
|
|
64
|
+
limit: 5
|
|
39
65
|
}
|
|
40
|
-
|
|
41
|
-
|
|
66
|
+
});
|
|
67
|
+
} catch (e) {
|
|
68
|
+
return [];
|
|
42
69
|
}
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
try {
|
|
73
|
+
(async () => {
|
|
74
|
+
try {
|
|
75
|
+
const fetchResults = await Promise.all(promises);
|
|
76
|
+
const searchResults = fetchResults
|
|
77
|
+
.map(result => {
|
|
78
|
+
const { data } = result;
|
|
79
|
+
return data.searchPublishedContent.results;
|
|
80
|
+
})
|
|
81
|
+
.flat();
|
|
82
|
+
|
|
83
|
+
setData(searchResults);
|
|
84
|
+
console.log({ searchResults });
|
|
85
|
+
} catch (e) {
|
|
86
|
+
console.error(e);
|
|
87
|
+
}
|
|
88
|
+
})();
|
|
89
|
+
} catch (e) {
|
|
90
|
+
console.error(e);
|
|
43
91
|
}
|
|
44
92
|
});
|
|
45
93
|
|
|
46
|
-
const query = gql`
|
|
47
|
-
${getPublishedContent(entityName)}
|
|
48
|
-
`;
|
|
49
|
-
|
|
50
|
-
const { loading, error, data } = useQuery(query, {
|
|
51
|
-
variables: { rawQueryStringified, offset: 0, limit: 5 }
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
if (loading) return null;
|
|
55
|
-
if (error) return null;
|
|
56
|
-
|
|
57
94
|
const handleClick = (e, url) => {
|
|
58
95
|
e.preventDefault();
|
|
59
96
|
router.push(url);
|
|
@@ -65,26 +102,28 @@ const SearchContent = ({
|
|
|
65
102
|
}
|
|
66
103
|
};
|
|
67
104
|
|
|
68
|
-
const renderResults = () =>
|
|
105
|
+
const renderResults = () =>
|
|
69
106
|
// eslint-disable-next-line no-undef
|
|
70
|
-
|
|
107
|
+
data?.map(dataItem => {
|
|
108
|
+
const { name, image, url } = dataItem;
|
|
71
109
|
|
|
72
|
-
|
|
73
|
-
return results.map(({ name, url }) => {
|
|
110
|
+
if (searchTerm && searchTerm !== '') {
|
|
74
111
|
if (name.includes(searchTerm)) {
|
|
75
112
|
return (
|
|
76
113
|
<BlazeLink href={url} onClick={e => handleClick(e, url)}>
|
|
77
|
-
|
|
114
|
+
<div className="mt-2 mb-1">
|
|
115
|
+
<div className="flex justify-start items-center">
|
|
116
|
+
{image.url ? <img src={image.url} alt={name} className="w-20 h-14" /> : null}
|
|
117
|
+
<span className="ml-2">{name}</span>
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
78
120
|
</BlazeLink>
|
|
79
121
|
);
|
|
80
122
|
}
|
|
81
123
|
|
|
82
124
|
return null;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return [];
|
|
87
|
-
};
|
|
125
|
+
}
|
|
126
|
+
});
|
|
88
127
|
|
|
89
128
|
const searchResultsMessage = searchTerm ? `Search results for: ${searchTerm}` : '';
|
|
90
129
|
|
|
@@ -164,7 +203,7 @@ SearchContent.propTypes = {
|
|
|
164
203
|
placeholder: PropTypes.string,
|
|
165
204
|
isMobile: PropTypes.bool,
|
|
166
205
|
collapsible: PropTypes.bool,
|
|
167
|
-
|
|
206
|
+
entities: PropTypes.array.isRequired
|
|
168
207
|
};
|
|
169
208
|
|
|
170
209
|
SearchContent.defaultProps = {
|