@blaze-cms/react-page-builder 0.123.0-alpha.13 → 0.123.0-alpha.16
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 +27 -0
- package/lib/components/SearchContent/index.js +12 -3
- package/lib/components/SearchContent/index.js.map +1 -1
- package/lib-es/components/SearchContent/index.js +9 -2
- package/lib-es/components/SearchContent/index.js.map +1 -1
- package/package.json +2 -2
- package/src/components/SearchContent/index.js +9 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,33 @@
|
|
|
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.123.0-alpha.16](https://github.com/thebyte9/blaze/compare/v0.123.0-alpha.15...v0.123.0-alpha.16) (2022-03-30)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @blaze-cms/react-page-builder
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# [0.123.0-alpha.15](https://github.com/thebyte9/blaze/compare/v0.123.0-alpha.14...v0.123.0-alpha.15) (2022-03-30)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @blaze-cms/react-page-builder
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# [0.123.0-alpha.14](https://github.com/thebyte9/blaze/compare/v0.123.0-alpha.13...v0.123.0-alpha.14) (2022-03-30)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
* hide error if query fails ([fdfbc41](https://github.com/thebyte9/blaze/commit/fdfbc417b767ea68a20fb300f453500f0ab11098))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
6
33
|
# [0.123.0-alpha.13](https://github.com/thebyte9/blaze/compare/v0.123.0-alpha.12...v0.123.0-alpha.13) (2022-03-30)
|
|
7
34
|
|
|
8
35
|
**Note:** Version bump only for package @blaze-cms/react-page-builder
|
|
@@ -35,7 +35,9 @@ require("core-js/modules/es.array.map.js");
|
|
|
35
35
|
|
|
36
36
|
require("core-js/modules/es.function.name.js");
|
|
37
37
|
|
|
38
|
-
require("core-js/modules/es.
|
|
38
|
+
require("core-js/modules/es.array.includes.js");
|
|
39
|
+
|
|
40
|
+
require("core-js/modules/es.string.includes.js");
|
|
39
41
|
|
|
40
42
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
41
43
|
|
|
@@ -114,13 +116,19 @@ var SearchContent = function SearchContent(_ref) {
|
|
|
114
116
|
data = _useQuery.data;
|
|
115
117
|
|
|
116
118
|
if (loading) return null;
|
|
117
|
-
if (error) return
|
|
119
|
+
if (error) return null;
|
|
118
120
|
|
|
119
121
|
var handleClick = function handleClick(e, url) {
|
|
120
122
|
e.preventDefault();
|
|
121
123
|
router.push(url);
|
|
122
124
|
};
|
|
123
125
|
|
|
126
|
+
var handleKeyPress = function handleKeyPress(e) {
|
|
127
|
+
if (e.key === 'Enter' && e.target.value !== '') {
|
|
128
|
+
router.push("/search?search_term=".concat(e.target.value));
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
|
|
124
132
|
var renderResults = function renderResults() {
|
|
125
133
|
// eslint-disable-next-line no-undef
|
|
126
134
|
var _data$searchPublished = data === null || data === void 0 ? void 0 : data.searchPublishedContent,
|
|
@@ -131,7 +139,7 @@ var SearchContent = function SearchContent(_ref) {
|
|
|
131
139
|
var name = _ref2.name,
|
|
132
140
|
url = _ref2.url;
|
|
133
141
|
|
|
134
|
-
if (name.
|
|
142
|
+
if (name.includes(searchTerm)) {
|
|
135
143
|
return /*#__PURE__*/_react["default"].createElement(_BlazeLink["default"], {
|
|
136
144
|
href: url,
|
|
137
145
|
onClick: function onClick(e) {
|
|
@@ -195,6 +203,7 @@ var SearchContent = function SearchContent(_ref) {
|
|
|
195
203
|
onChange: function onChange(e) {
|
|
196
204
|
return setSearchTerm(e.target.value);
|
|
197
205
|
},
|
|
206
|
+
onKeyPress: handleKeyPress,
|
|
198
207
|
className: "search-content--expanded__input",
|
|
199
208
|
placeholder: "Search for anything...",
|
|
200
209
|
onBlur: function onBlur() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/SearchContent/index.js"],"names":["SearchContent","entity","searchInputAlignment","searchInputWrapperMobile","searchInputWrapperDesktop","isMobile","collapsed","setCollapsed","searchTerm","setSearchTerm","router","capitalize","s","charAt","toUpperCase","slice","split","a","b","entityName","rawQueryStringified","JSON","stringify","size","query","bool","should","match","docType","minimum_should_match","gql","variables","offset","limit","loading","error","data","handleClick","e","url","preventDefault","push","renderResults","searchPublishedContent","results","map","name","searchResultsMessage","target","value","propTypes","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 isMobile\n}) => {\n const [collapsed, setCollapsed] = useState(true);\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 `Error! ${error}`;\n\n const handleClick = (e, url) => {\n e.preventDefault();\n router.push(url);\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.match(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 className=\"search-content--expanded__input\"\n placeholder=\"Search for anything...\"\n onBlur={() => {\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 isMobile: PropTypes.bool,\n entity: PropTypes.string.isRequired\n};\n\nSearchContent.defaultProps = {\n searchInputAlignment: '',\n searchInputWrapperMobile: '',\n searchInputWrapperDesktop: '',\n isMobile: false\n};\n\nexport default SearchContent;\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SearchContent/index.js"],"names":["SearchContent","entity","searchInputAlignment","searchInputWrapperMobile","searchInputWrapperDesktop","isMobile","collapsed","setCollapsed","searchTerm","setSearchTerm","router","capitalize","s","charAt","toUpperCase","slice","split","a","b","entityName","rawQueryStringified","JSON","stringify","size","query","bool","should","match","docType","minimum_should_match","gql","variables","offset","limit","loading","error","data","handleClick","e","url","preventDefault","push","handleKeyPress","key","target","value","renderResults","searchPublishedContent","results","map","name","includes","searchResultsMessage","propTypes","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 isMobile\n}) => {\n const [collapsed, setCollapsed] = useState(true);\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=\"Search for anything...\"\n onBlur={() => {\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 isMobile: PropTypes.bool,\n entity: PropTypes.string.isRequired\n};\n\nSearchContent.defaultProps = {\n searchInputAlignment: '',\n searchInputWrapperMobile: '',\n searchInputWrapperDesktop: '',\n isMobile: false\n};\n\nexport default SearchContent;\n"],"file":"index.js"}
|
|
@@ -51,13 +51,19 @@ const SearchContent = ({
|
|
|
51
51
|
}
|
|
52
52
|
});
|
|
53
53
|
if (loading) return null;
|
|
54
|
-
if (error) return
|
|
54
|
+
if (error) return null;
|
|
55
55
|
|
|
56
56
|
const handleClick = (e, url) => {
|
|
57
57
|
e.preventDefault();
|
|
58
58
|
router.push(url);
|
|
59
59
|
};
|
|
60
60
|
|
|
61
|
+
const handleKeyPress = e => {
|
|
62
|
+
if (e.key === 'Enter' && e.target.value !== '') {
|
|
63
|
+
router.push(`/search?search_term=${e.target.value}`);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
|
|
61
67
|
const renderResults = () => {
|
|
62
68
|
// eslint-disable-next-line no-undef
|
|
63
69
|
const {
|
|
@@ -69,7 +75,7 @@ const SearchContent = ({
|
|
|
69
75
|
name,
|
|
70
76
|
url
|
|
71
77
|
}) => {
|
|
72
|
-
if (name.
|
|
78
|
+
if (name.includes(searchTerm)) {
|
|
73
79
|
return /*#__PURE__*/React.createElement(BlazeLink, {
|
|
74
80
|
href: url,
|
|
75
81
|
onClick: e => handleClick(e, url)
|
|
@@ -125,6 +131,7 @@ const SearchContent = ({
|
|
|
125
131
|
type: "text",
|
|
126
132
|
name: "search",
|
|
127
133
|
onChange: e => setSearchTerm(e.target.value),
|
|
134
|
+
onKeyPress: handleKeyPress,
|
|
128
135
|
className: "search-content--expanded__input",
|
|
129
136
|
placeholder: "Search for anything...",
|
|
130
137
|
onBlur: () => {
|
|
@@ -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","isMobile","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","renderResults","results","searchPublishedContent","map","name","searchResultsMessage","target","value","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 isMobile\n}) => {\n const [collapsed, setCollapsed] = useState(true);\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 `Error! ${error}`;\n\n const handleClick = (e, url) => {\n e.preventDefault();\n router.push(url);\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.match(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 className=\"search-content--expanded__input\"\n placeholder=\"Search for anything...\"\n onBlur={() => {\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 isMobile: PropTypes.bool,\n entity: PropTypes.string.isRequired\n};\n\nSearchContent.defaultProps = {\n searchInputAlignment: '',\n searchInputWrapperMobile: '',\n searchInputWrapperDesktop: '',\n isMobile: false\n};\n\nexport default SearchContent;\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SearchContent/index.js"],"names":["React","useState","PropTypes","gql","useQuery","useRouter","getPublishedContent","BlazeLink","SearchContent","entity","searchInputAlignment","searchInputWrapperMobile","searchInputWrapperDesktop","isMobile","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 isMobile\n}) => {\n const [collapsed, setCollapsed] = useState(true);\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=\"Search for anything...\"\n onBlur={() => {\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 isMobile: PropTypes.bool,\n entity: PropTypes.string.isRequired\n};\n\nSearchContent.defaultProps = {\n searchInputAlignment: '',\n searchInputWrapperMobile: '',\n searchInputWrapperDesktop: '',\n isMobile: false\n};\n\nexport default SearchContent;\n"],"file":"index.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blaze-cms/react-page-builder",
|
|
3
|
-
"version": "0.123.0-alpha.
|
|
3
|
+
"version": "0.123.0-alpha.16",
|
|
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": "9e15473beab8e03ea0ceb91a6f93e00bc2043c7b"
|
|
88
88
|
}
|
|
@@ -50,20 +50,26 @@ const SearchContent = ({
|
|
|
50
50
|
});
|
|
51
51
|
|
|
52
52
|
if (loading) return null;
|
|
53
|
-
if (error) return
|
|
53
|
+
if (error) return null;
|
|
54
54
|
|
|
55
55
|
const handleClick = (e, url) => {
|
|
56
56
|
e.preventDefault();
|
|
57
57
|
router.push(url);
|
|
58
58
|
};
|
|
59
59
|
|
|
60
|
+
const handleKeyPress = e => {
|
|
61
|
+
if (e.key === 'Enter' && e.target.value !== '') {
|
|
62
|
+
router.push(`/search?search_term=${e.target.value}`);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
60
66
|
const renderResults = () => {
|
|
61
67
|
// eslint-disable-next-line no-undef
|
|
62
68
|
const { results } = data?.searchPublishedContent;
|
|
63
69
|
|
|
64
70
|
if (results && searchTerm && searchTerm !== '') {
|
|
65
71
|
return results.map(({ name, url }) => {
|
|
66
|
-
if (name.
|
|
72
|
+
if (name.includes(searchTerm)) {
|
|
67
73
|
return (
|
|
68
74
|
<BlazeLink href={url} onClick={e => handleClick(e, url)}>
|
|
69
75
|
{name}
|
|
@@ -122,6 +128,7 @@ const SearchContent = ({
|
|
|
122
128
|
type="text"
|
|
123
129
|
name="search"
|
|
124
130
|
onChange={e => setSearchTerm(e.target.value)}
|
|
131
|
+
onKeyPress={handleKeyPress}
|
|
125
132
|
className="search-content--expanded__input"
|
|
126
133
|
placeholder="Search for anything..."
|
|
127
134
|
onBlur={() => {
|