@blaze-cms/plugin-search-ui 0.110.0-alpha.1

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.
Files changed (111) hide show
  1. package/CHANGELOG.md +345 -0
  2. package/LICENSE +674 -0
  3. package/README.md +45 -0
  4. package/babel.config.js +3 -0
  5. package/jest.config.js +5 -0
  6. package/lib/application/query/index.js +32 -0
  7. package/lib/application/query/index.js.map +1 -0
  8. package/lib/components/SearchAdmin/RecentSearches/RecentSearches.js +62 -0
  9. package/lib/components/SearchAdmin/RecentSearches/RecentSearches.js.map +1 -0
  10. package/lib/components/SearchAdmin/RecentSearches/index.js +16 -0
  11. package/lib/components/SearchAdmin/RecentSearches/index.js.map +1 -0
  12. package/lib/components/SearchAdmin/SearchAdmin.js +191 -0
  13. package/lib/components/SearchAdmin/SearchAdmin.js.map +1 -0
  14. package/lib/components/SearchAdmin/SearchBar/SearchBar.js +72 -0
  15. package/lib/components/SearchAdmin/SearchBar/SearchBar.js.map +1 -0
  16. package/lib/components/SearchAdmin/SearchBar/index.js +16 -0
  17. package/lib/components/SearchAdmin/SearchBar/index.js.map +1 -0
  18. package/lib/components/SearchAdmin/SearchResults/SearchResults.js +200 -0
  19. package/lib/components/SearchAdmin/SearchResults/SearchResults.js.map +1 -0
  20. package/lib/components/SearchAdmin/SearchResults/index.js +16 -0
  21. package/lib/components/SearchAdmin/SearchResults/index.js.map +1 -0
  22. package/lib/components/SearchAdmin/TriggerModal/TriggerModal.js +30 -0
  23. package/lib/components/SearchAdmin/TriggerModal/TriggerModal.js.map +1 -0
  24. package/lib/components/SearchAdmin/TriggerModal/index.js +16 -0
  25. package/lib/components/SearchAdmin/TriggerModal/index.js.map +1 -0
  26. package/lib/components/SearchAdmin/index.js +16 -0
  27. package/lib/components/SearchAdmin/index.js.map +1 -0
  28. package/lib/components/SearchPublishedContent/SearchPublishedContent.js +216 -0
  29. package/lib/components/SearchPublishedContent/SearchPublishedContent.js.map +1 -0
  30. package/lib/components/SearchPublishedContent/index.js +16 -0
  31. package/lib/components/SearchPublishedContent/index.js.map +1 -0
  32. package/lib/components/useLocalStorage/index.js +16 -0
  33. package/lib/components/useLocalStorage/index.js.map +1 -0
  34. package/lib/components/useLocalStorage/useLocalStorage.js +36 -0
  35. package/lib/components/useLocalStorage/useLocalStorage.js.map +1 -0
  36. package/lib/components/useSearch/index.js +16 -0
  37. package/lib/components/useSearch/index.js.map +1 -0
  38. package/lib/components/useSearch/useSearch.js +154 -0
  39. package/lib/components/useSearch/useSearch.js.map +1 -0
  40. package/lib/components/useSearchResults/index.js +16 -0
  41. package/lib/components/useSearchResults/index.js.map +1 -0
  42. package/lib/components/useSearchResults/useSearchResults.js +102 -0
  43. package/lib/components/useSearchResults/useSearchResults.js.map +1 -0
  44. package/lib/constants.js +25 -0
  45. package/lib/constants.js.map +1 -0
  46. package/lib/index.js +34 -0
  47. package/lib/index.js.map +1 -0
  48. package/lib-es/application/query/index.js +34 -0
  49. package/lib-es/application/query/index.js.map +1 -0
  50. package/lib-es/components/SearchAdmin/RecentSearches/RecentSearches.js +40 -0
  51. package/lib-es/components/SearchAdmin/RecentSearches/RecentSearches.js.map +1 -0
  52. package/lib-es/components/SearchAdmin/RecentSearches/index.js +3 -0
  53. package/lib-es/components/SearchAdmin/RecentSearches/index.js.map +1 -0
  54. package/lib-es/components/SearchAdmin/SearchAdmin.js +126 -0
  55. package/lib-es/components/SearchAdmin/SearchAdmin.js.map +1 -0
  56. package/lib-es/components/SearchAdmin/SearchBar/SearchBar.js +54 -0
  57. package/lib-es/components/SearchAdmin/SearchBar/SearchBar.js.map +1 -0
  58. package/lib-es/components/SearchAdmin/SearchBar/index.js +3 -0
  59. package/lib-es/components/SearchAdmin/SearchBar/index.js.map +1 -0
  60. package/lib-es/components/SearchAdmin/SearchResults/SearchResults.js +120 -0
  61. package/lib-es/components/SearchAdmin/SearchResults/SearchResults.js.map +1 -0
  62. package/lib-es/components/SearchAdmin/SearchResults/index.js +3 -0
  63. package/lib-es/components/SearchAdmin/SearchResults/index.js.map +1 -0
  64. package/lib-es/components/SearchAdmin/TriggerModal/TriggerModal.js +16 -0
  65. package/lib-es/components/SearchAdmin/TriggerModal/TriggerModal.js.map +1 -0
  66. package/lib-es/components/SearchAdmin/TriggerModal/index.js +3 -0
  67. package/lib-es/components/SearchAdmin/TriggerModal/index.js.map +1 -0
  68. package/lib-es/components/SearchAdmin/index.js +3 -0
  69. package/lib-es/components/SearchAdmin/index.js.map +1 -0
  70. package/lib-es/components/SearchPublishedContent/SearchPublishedContent.js +157 -0
  71. package/lib-es/components/SearchPublishedContent/SearchPublishedContent.js.map +1 -0
  72. package/lib-es/components/SearchPublishedContent/index.js +3 -0
  73. package/lib-es/components/SearchPublishedContent/index.js.map +1 -0
  74. package/lib-es/components/useLocalStorage/index.js +3 -0
  75. package/lib-es/components/useLocalStorage/index.js.map +1 -0
  76. package/lib-es/components/useLocalStorage/useLocalStorage.js +19 -0
  77. package/lib-es/components/useLocalStorage/useLocalStorage.js.map +1 -0
  78. package/lib-es/components/useSearch/index.js +3 -0
  79. package/lib-es/components/useSearch/index.js.map +1 -0
  80. package/lib-es/components/useSearch/useSearch.js +100 -0
  81. package/lib-es/components/useSearch/useSearch.js.map +1 -0
  82. package/lib-es/components/useSearchResults/index.js +3 -0
  83. package/lib-es/components/useSearchResults/index.js.map +1 -0
  84. package/lib-es/components/useSearchResults/useSearchResults.js +57 -0
  85. package/lib-es/components/useSearchResults/useSearchResults.js.map +1 -0
  86. package/lib-es/constants.js +10 -0
  87. package/lib-es/constants.js.map +1 -0
  88. package/lib-es/index.js +5 -0
  89. package/lib-es/index.js.map +1 -0
  90. package/package.json +56 -0
  91. package/src/application/query/index.js +28 -0
  92. package/src/components/SearchAdmin/RecentSearches/RecentSearches.js +33 -0
  93. package/src/components/SearchAdmin/RecentSearches/index.js +3 -0
  94. package/src/components/SearchAdmin/SearchAdmin.js +129 -0
  95. package/src/components/SearchAdmin/SearchBar/SearchBar.js +58 -0
  96. package/src/components/SearchAdmin/SearchBar/index.js +3 -0
  97. package/src/components/SearchAdmin/SearchResults/SearchResults.js +112 -0
  98. package/src/components/SearchAdmin/SearchResults/index.js +3 -0
  99. package/src/components/SearchAdmin/TriggerModal/TriggerModal.js +17 -0
  100. package/src/components/SearchAdmin/TriggerModal/index.js +3 -0
  101. package/src/components/SearchAdmin/index.js +3 -0
  102. package/src/components/SearchPublishedContent/SearchPublishedContent.js +157 -0
  103. package/src/components/SearchPublishedContent/index.js +3 -0
  104. package/src/components/useLocalStorage/index.js +3 -0
  105. package/src/components/useLocalStorage/useLocalStorage.js +18 -0
  106. package/src/components/useSearch/index.js +3 -0
  107. package/src/components/useSearch/useSearch.js +85 -0
  108. package/src/components/useSearchResults/index.js +3 -0
  109. package/src/components/useSearchResults/useSearchResults.js +38 -0
  110. package/src/constants.js +19 -0
  111. package/src/index.js +5 -0
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _useSearch = _interopRequireDefault(require("./useSearch"));
13
+
14
+ var _default = _useSearch["default"];
15
+ exports["default"] = _default;
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/useSearch/index.js"],"names":["useSearch"],"mappings":";;;;;;;;;;;AAAA;;eAEeA,qB","sourcesContent":["import useSearch from './useSearch';\n\nexport default useSearch;\n"],"file":"index.js"}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.keys.js");
4
+
5
+ require("core-js/modules/es.symbol.js");
6
+
7
+ require("core-js/modules/es.array.filter.js");
8
+
9
+ require("core-js/modules/es.object.get-own-property-descriptor.js");
10
+
11
+ require("core-js/modules/es.array.for-each.js");
12
+
13
+ require("core-js/modules/web.dom-collections.for-each.js");
14
+
15
+ require("core-js/modules/es.object.get-own-property-descriptors.js");
16
+
17
+ require("core-js/modules/es.object.define-properties.js");
18
+
19
+ require("core-js/modules/es.object.define-property.js");
20
+
21
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
22
+
23
+ Object.defineProperty(exports, "__esModule", {
24
+ value: true
25
+ });
26
+ exports["default"] = void 0;
27
+
28
+ require("core-js/modules/es.array.map.js");
29
+
30
+ require("core-js/modules/es.regexp.exec.js");
31
+
32
+ require("core-js/modules/es.string.search.js");
33
+
34
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
35
+
36
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
37
+
38
+ var _react = require("react");
39
+
40
+ var _reactApollo = require("react-apollo");
41
+
42
+ var _query = _interopRequireDefault(require("../../application/query"));
43
+
44
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
45
+
46
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
47
+
48
+ function useSearch(_ref) {
49
+ var queryKey = _ref.queryKey,
50
+ resultKeys = _ref.resultKeys,
51
+ _ref$entities = _ref.entities,
52
+ entities = _ref$entities === void 0 ? [] : _ref$entities,
53
+ fields = _ref.fields;
54
+
55
+ var _useState = (0, _react.useState)({
56
+ limit: 20,
57
+ offset: 0,
58
+ value: ''
59
+ }),
60
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
61
+ queryParams = _useState2[0],
62
+ setParams = _useState2[1];
63
+
64
+ var _useState3 = (0, _react.useState)(null),
65
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
66
+ searchedValue = _useState4[0],
67
+ setSearchedValue = _useState4[1];
68
+
69
+ var _useState5 = (0, _react.useState)(null),
70
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
71
+ previousOffset = _useState6[0],
72
+ setPreviousOffset = _useState6[1];
73
+
74
+ var buildSearchQuery = _query["default"][queryKey];
75
+
76
+ var _useLazyQuery = (0, _reactApollo.useLazyQuery)(buildSearchQuery({
77
+ resultKeys: resultKeys
78
+ })),
79
+ _useLazyQuery2 = (0, _slicedToArray2["default"])(_useLazyQuery, 2),
80
+ getSearchResults = _useLazyQuery2[0],
81
+ _useLazyQuery2$ = _useLazyQuery2[1],
82
+ loading = _useLazyQuery2$.loading,
83
+ _useLazyQuery2$$data = _useLazyQuery2$.data;
84
+
85
+ _useLazyQuery2$$data = _useLazyQuery2$$data === void 0 ? {
86
+ search: {
87
+ results: [],
88
+ total: 0
89
+ }
90
+ } : _useLazyQuery2$$data;
91
+ var _useLazyQuery2$$data$ = _useLazyQuery2$$data.search,
92
+ results = _useLazyQuery2$$data$.results,
93
+ jsonResults = _useLazyQuery2$$data$.jsonResults,
94
+ total = _useLazyQuery2$$data$.total;
95
+
96
+ var handleQueryParams = function handleQueryParams(newQueryParams) {
97
+ setParams(_objectSpread(_objectSpread({}, queryParams), newQueryParams));
98
+ };
99
+
100
+ (0, _react.useEffect)(function () {
101
+ var limit = queryParams.limit,
102
+ offset = queryParams.offset,
103
+ value = queryParams.value;
104
+ var isNewValueSet = value && value !== searchedValue;
105
+ var isNewOffsetSet = previousOffset !== null && offset !== previousOffset;
106
+ var parsedEntities = entities.length ? entities.map(function (entity) {
107
+ return {
108
+ match: {
109
+ docType: entity
110
+ }
111
+ };
112
+ }) : [];
113
+
114
+ if (isNewValueSet || isNewOffsetSet) {
115
+ getSearchResults({
116
+ variables: {
117
+ limit: limit,
118
+ offset: offset,
119
+ rawQuery: {
120
+ query: {
121
+ bool: {
122
+ must: [{
123
+ query_string: {
124
+ query: value,
125
+ fields: fields,
126
+ type: 'most_fields'
127
+ }
128
+ }, {
129
+ bool: {
130
+ should: parsedEntities
131
+ }
132
+ }]
133
+ }
134
+ }
135
+ }
136
+ }
137
+ });
138
+ setSearchedValue(value);
139
+ setPreviousOffset(offset);
140
+ }
141
+ }, [queryParams, queryParams.limit, queryParams.value, queryParams.offset, searchedValue, previousOffset, getSearchResults, entities, fields]);
142
+ return [{
143
+ searchedValue: queryParams.value,
144
+ loading: loading,
145
+ data: {
146
+ results: results || jsonResults,
147
+ total: total
148
+ }
149
+ }, handleQueryParams];
150
+ }
151
+
152
+ var _default = useSearch;
153
+ exports["default"] = _default;
154
+ //# sourceMappingURL=useSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/useSearch/useSearch.js"],"names":["useSearch","queryKey","resultKeys","entities","fields","limit","offset","value","queryParams","setParams","searchedValue","setSearchedValue","previousOffset","setPreviousOffset","buildSearchQuery","searchQueries","getSearchResults","loading","data","search","results","total","jsonResults","handleQueryParams","newQueryParams","isNewValueSet","isNewOffsetSet","parsedEntities","length","map","entity","match","docType","variables","rawQuery","query","bool","must","query_string","type","should"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAEA,SAASA,SAAT,OAAoE;AAAA,MAA/CC,QAA+C,QAA/CA,QAA+C;AAAA,MAArCC,UAAqC,QAArCA,UAAqC;AAAA,2BAAzBC,QAAyB;AAAA,MAAzBA,QAAyB,8BAAd,EAAc;AAAA,MAAVC,MAAU,QAAVA,MAAU;;AAClE,kBAAiC,qBAAS;AAAEC,IAAAA,KAAK,EAAE,EAAT;AAAaC,IAAAA,MAAM,EAAE,CAArB;AAAwBC,IAAAA,KAAK,EAAE;AAA/B,GAAT,CAAjC;AAAA;AAAA,MAAOC,WAAP;AAAA,MAAoBC,SAApB;;AACA,mBAA0C,qBAAS,IAAT,CAA1C;AAAA;AAAA,MAAOC,aAAP;AAAA,MAAsBC,gBAAtB;;AACA,mBAA4C,qBAAS,IAAT,CAA5C;AAAA;AAAA,MAAOC,cAAP;AAAA,MAAuBC,iBAAvB;;AACA,MAAMC,gBAAgB,GAAGC,kBAAcd,QAAd,CAAzB;;AACA,sBAQI,+BAAaa,gBAAgB,CAAC;AAAEZ,IAAAA,UAAU,EAAVA;AAAF,GAAD,CAA7B,CARJ;AAAA;AAAA,MACEc,gBADF;AAAA;AAAA,MAGIC,OAHJ,mBAGIA,OAHJ;AAAA,6CAIIC,IAJJ;;AAAA,2DAIwD;AAClDC,IAAAA,MAAM,EAAE;AAAEC,MAAAA,OAAO,EAAE,EAAX;AAAeC,MAAAA,KAAK,EAAE;AAAtB;AAD0C,GAJxD;AAAA,mDAIYF,MAJZ;AAAA,MAIsBC,OAJtB,yBAIsBA,OAJtB;AAAA,MAI+BE,WAJ/B,yBAI+BA,WAJ/B;AAAA,MAI4CD,KAJ5C,yBAI4CA,KAJ5C;;AAUA,MAAME,iBAAiB,GAAG,SAApBA,iBAAoB,CAAAC,cAAc,EAAI;AAC1Cf,IAAAA,SAAS,iCAAMD,WAAN,GAAsBgB,cAAtB,EAAT;AACD,GAFD;;AAIA,wBACE,YAAM;AACJ,QAAQnB,KAAR,GAAiCG,WAAjC,CAAQH,KAAR;AAAA,QAAeC,MAAf,GAAiCE,WAAjC,CAAeF,MAAf;AAAA,QAAuBC,KAAvB,GAAiCC,WAAjC,CAAuBD,KAAvB;AACA,QAAMkB,aAAa,GAAGlB,KAAK,IAAIA,KAAK,KAAKG,aAAzC;AACA,QAAMgB,cAAc,GAAGd,cAAc,KAAK,IAAnB,IAA2BN,MAAM,KAAKM,cAA7D;AACA,QAAMe,cAAc,GAAGxB,QAAQ,CAACyB,MAAT,GACnBzB,QAAQ,CAAC0B,GAAT,CAAa,UAAAC,MAAM;AAAA,aAAK;AACtBC,QAAAA,KAAK,EAAE;AAAEC,UAAAA,OAAO,EAAEF;AAAX;AADe,OAAL;AAAA,KAAnB,CADmB,GAInB,EAJJ;;AAMA,QAAIL,aAAa,IAAIC,cAArB,EAAqC;AACnCV,MAAAA,gBAAgB,CAAC;AACfiB,QAAAA,SAAS,EAAE;AACT5B,UAAAA,KAAK,EAALA,KADS;AAETC,UAAAA,MAAM,EAANA,MAFS;AAGT4B,UAAAA,QAAQ,EAAE;AACRC,YAAAA,KAAK,EAAE;AACLC,cAAAA,IAAI,EAAE;AACJC,gBAAAA,IAAI,EAAE,CACJ;AACEC,kBAAAA,YAAY,EAAE;AACZH,oBAAAA,KAAK,EAAE5B,KADK;AAEZH,oBAAAA,MAAM,EAANA,MAFY;AAGZmC,oBAAAA,IAAI,EAAE;AAHM;AADhB,iBADI,EAQJ;AACEH,kBAAAA,IAAI,EAAE;AACJI,oBAAAA,MAAM,EAAEb;AADJ;AADR,iBARI;AADF;AADD;AADC;AAHD;AADI,OAAD,CAAhB;AA0BAhB,MAAAA,gBAAgB,CAACJ,KAAD,CAAhB;AACAM,MAAAA,iBAAiB,CAACP,MAAD,CAAjB;AACD;AACF,GAzCH,EA0CE,CACEE,WADF,EAEEA,WAAW,CAACH,KAFd,EAGEG,WAAW,CAACD,KAHd,EAIEC,WAAW,CAACF,MAJd,EAKEI,aALF,EAMEE,cANF,EAOEI,gBAPF,EAQEb,QARF,EASEC,MATF,CA1CF;AAuDA,SAAO,CACL;AAAEM,IAAAA,aAAa,EAAEF,WAAW,CAACD,KAA7B;AAAoCU,IAAAA,OAAO,EAAPA,OAApC;AAA6CC,IAAAA,IAAI,EAAE;AAAEE,MAAAA,OAAO,EAAEA,OAAO,IAAIE,WAAtB;AAAmCD,MAAAA,KAAK,EAALA;AAAnC;AAAnD,GADK,EAELE,iBAFK,CAAP;AAID;;eAEcvB,S","sourcesContent":["import { useState, useEffect } from 'react';\nimport { useLazyQuery } from 'react-apollo';\nimport searchQueries from '../../application/query';\n\nfunction useSearch({ queryKey, resultKeys, entities = [], fields }) {\n const [queryParams, setParams] = useState({ limit: 20, offset: 0, value: '' });\n const [searchedValue, setSearchedValue] = useState(null);\n const [previousOffset, setPreviousOffset] = useState(null);\n const buildSearchQuery = searchQueries[queryKey];\n const [\n getSearchResults,\n {\n loading,\n data: { search: { results, jsonResults, total } } = {\n search: { results: [], total: 0 }\n }\n }\n ] = useLazyQuery(buildSearchQuery({ resultKeys }));\n\n const handleQueryParams = newQueryParams => {\n setParams({ ...queryParams, ...newQueryParams });\n };\n\n useEffect(\n () => {\n const { limit, offset, value } = queryParams;\n const isNewValueSet = value && value !== searchedValue;\n const isNewOffsetSet = previousOffset !== null && offset !== previousOffset;\n const parsedEntities = entities.length\n ? entities.map(entity => ({\n match: { docType: entity }\n }))\n : [];\n\n if (isNewValueSet || isNewOffsetSet) {\n getSearchResults({\n variables: {\n limit,\n offset,\n rawQuery: {\n query: {\n bool: {\n must: [\n {\n query_string: {\n query: value,\n fields,\n type: 'most_fields'\n }\n },\n {\n bool: {\n should: parsedEntities\n }\n }\n ]\n }\n }\n }\n }\n });\n setSearchedValue(value);\n setPreviousOffset(offset);\n }\n },\n [\n queryParams,\n queryParams.limit,\n queryParams.value,\n queryParams.offset,\n searchedValue,\n previousOffset,\n getSearchResults,\n entities,\n fields\n ]\n );\n\n return [\n { searchedValue: queryParams.value, loading, data: { results: results || jsonResults, total } },\n handleQueryParams\n ];\n}\n\nexport default useSearch;\n"],"file":"useSearch.js"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _useSearchResults = _interopRequireDefault(require("./useSearchResults"));
13
+
14
+ var _default = _useSearchResults["default"];
15
+ exports["default"] = _default;
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/useSearchResults/index.js"],"names":["useSearchResults"],"mappings":";;;;;;;;;;;AAAA;;eAEeA,4B","sourcesContent":["import useSearchResults from './useSearchResults';\n\nexport default useSearchResults;\n"],"file":"index.js"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.keys.js");
4
+
5
+ require("core-js/modules/es.symbol.js");
6
+
7
+ require("core-js/modules/es.array.filter.js");
8
+
9
+ require("core-js/modules/es.object.get-own-property-descriptor.js");
10
+
11
+ require("core-js/modules/es.array.for-each.js");
12
+
13
+ require("core-js/modules/web.dom-collections.for-each.js");
14
+
15
+ require("core-js/modules/es.object.get-own-property-descriptors.js");
16
+
17
+ require("core-js/modules/es.object.define-properties.js");
18
+
19
+ require("core-js/modules/es.object.define-property.js");
20
+
21
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
22
+
23
+ Object.defineProperty(exports, "__esModule", {
24
+ value: true
25
+ });
26
+ exports["default"] = void 0;
27
+
28
+ require("core-js/modules/es.array.concat.js");
29
+
30
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
31
+
32
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
33
+
34
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
35
+
36
+ var _react = require("react");
37
+
38
+ var _useSearch3 = _interopRequireDefault(require("../useSearch"));
39
+
40
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
41
+
42
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
43
+
44
+ function useSearchResults(_ref) {
45
+ var queryKey = _ref.queryKey,
46
+ resultKeys = _ref.resultKeys,
47
+ entities = _ref.entities,
48
+ fields = _ref.fields;
49
+
50
+ var _useSearch = (0, _useSearch3["default"])({
51
+ queryKey: queryKey,
52
+ resultKeys: resultKeys,
53
+ entities: entities,
54
+ fields: fields
55
+ }),
56
+ _useSearch2 = (0, _slicedToArray2["default"])(_useSearch, 2),
57
+ _useSearch2$ = _useSearch2[0],
58
+ searchedValue = _useSearch2$.searchedValue,
59
+ loading = _useSearch2$.loading,
60
+ _useSearch2$$data = _useSearch2$.data,
61
+ results = _useSearch2$$data.results,
62
+ total = _useSearch2$$data.total,
63
+ setParams = _useSearch2[1];
64
+
65
+ var _useState = (0, _react.useState)([]),
66
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
67
+ currentResults = _useState2[0],
68
+ setCurrentResults = _useState2[1];
69
+
70
+ var _useState3 = (0, _react.useState)([]),
71
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
72
+ allResults = _useState4[0],
73
+ setAllResults = _useState4[1];
74
+
75
+ (0, _react.useEffect)(function () {
76
+ if (currentResults.length !== results.length) {
77
+ setAllResults([].concat((0, _toConsumableArray2["default"])(allResults), (0, _toConsumableArray2["default"])(results)));
78
+ setCurrentResults(results);
79
+ }
80
+ }, [allResults, currentResults, currentResults.length, results]);
81
+
82
+ var clearList = function clearList(params) {
83
+ setAllResults([]);
84
+ setParams(_objectSpread(_objectSpread({}, params), {}, {
85
+ offset: 0
86
+ }));
87
+ };
88
+
89
+ var setQueryParams = function setQueryParams(params) {
90
+ params.value !== searchedValue ? clearList(params) : setParams(params);
91
+ };
92
+
93
+ return [{
94
+ loading: loading,
95
+ results: allResults,
96
+ total: total
97
+ }, setQueryParams];
98
+ }
99
+
100
+ var _default = useSearchResults;
101
+ exports["default"] = _default;
102
+ //# sourceMappingURL=useSearchResults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/useSearchResults/useSearchResults.js"],"names":["useSearchResults","queryKey","resultKeys","entities","fields","searchedValue","loading","data","results","total","setParams","currentResults","setCurrentResults","allResults","setAllResults","length","clearList","params","offset","setQueryParams","value"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;AAEA,SAASA,gBAAT,OAAsE;AAAA,MAA1CC,QAA0C,QAA1CA,QAA0C;AAAA,MAAhCC,UAAgC,QAAhCA,UAAgC;AAAA,MAApBC,QAAoB,QAApBA,QAAoB;AAAA,MAAVC,MAAU,QAAVA,MAAU;;AACpE,mBAOI,4BAAU;AAAEH,IAAAA,QAAQ,EAARA,QAAF;AAAYC,IAAAA,UAAU,EAAVA,UAAZ;AAAwBC,IAAAA,QAAQ,EAARA,QAAxB;AAAkCC,IAAAA,MAAM,EAANA;AAAlC,GAAV,CAPJ;AAAA;AAAA;AAAA,MAEIC,aAFJ,gBAEIA,aAFJ;AAAA,MAGIC,OAHJ,gBAGIA,OAHJ;AAAA,uCAIIC,IAJJ;AAAA,MAIYC,OAJZ,qBAIYA,OAJZ;AAAA,MAIqBC,KAJrB,qBAIqBA,KAJrB;AAAA,MAMEC,SANF;;AAQA,kBAA4C,qBAAS,EAAT,CAA5C;AAAA;AAAA,MAAOC,cAAP;AAAA,MAAuBC,iBAAvB;;AACA,mBAAoC,qBAAS,EAAT,CAApC;AAAA;AAAA,MAAOC,UAAP;AAAA,MAAmBC,aAAnB;;AAEA,wBACE,YAAM;AACJ,QAAIH,cAAc,CAACI,MAAf,KAA0BP,OAAO,CAACO,MAAtC,EAA8C;AAC5CD,MAAAA,aAAa,+CAAKD,UAAL,uCAAoBL,OAApB,GAAb;AACAI,MAAAA,iBAAiB,CAACJ,OAAD,CAAjB;AACD;AACF,GANH,EAOE,CAACK,UAAD,EAAaF,cAAb,EAA6BA,cAAc,CAACI,MAA5C,EAAoDP,OAApD,CAPF;;AAUA,MAAMQ,SAAS,GAAG,SAAZA,SAAY,CAAAC,MAAM,EAAI;AAC1BH,IAAAA,aAAa,CAAC,EAAD,CAAb;AACAJ,IAAAA,SAAS,iCAAMO,MAAN;AAAcC,MAAAA,MAAM,EAAE;AAAtB,OAAT;AACD,GAHD;;AAKA,MAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAAAF,MAAM,EAAI;AAC/BA,IAAAA,MAAM,CAACG,KAAP,KAAiBf,aAAjB,GAAiCW,SAAS,CAACC,MAAD,CAA1C,GAAqDP,SAAS,CAACO,MAAD,CAA9D;AACD,GAFD;;AAIA,SAAO,CAAC;AAAEX,IAAAA,OAAO,EAAPA,OAAF;AAAWE,IAAAA,OAAO,EAAEK,UAApB;AAAgCJ,IAAAA,KAAK,EAALA;AAAhC,GAAD,EAA0CU,cAA1C,CAAP;AACD;;eAEcnB,gB","sourcesContent":["import { useState, useEffect } from 'react';\nimport useSearch from '../useSearch';\n\nfunction useSearchResults({ queryKey, resultKeys, entities, fields }) {\n const [\n {\n searchedValue,\n loading,\n data: { results, total }\n },\n setParams\n ] = useSearch({ queryKey, resultKeys, entities, fields });\n const [currentResults, setCurrentResults] = useState([]);\n const [allResults, setAllResults] = useState([]);\n\n useEffect(\n () => {\n if (currentResults.length !== results.length) {\n setAllResults([...allResults, ...results]);\n setCurrentResults(results);\n }\n },\n [allResults, currentResults, currentResults.length, results]\n );\n\n const clearList = params => {\n setAllResults([]);\n setParams({ ...params, offset: 0 });\n };\n\n const setQueryParams = params => {\n params.value !== searchedValue ? clearList(params) : setParams(params);\n };\n\n return [{ loading, results: allResults, total }, setQueryParams];\n}\n\nexport default useSearchResults;\n"],"file":"useSearchResults.js"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.SEARCH_RESULTS_OVER_SCAN_BUFFER = exports.SEARCH_RESULTS_ITEM_SIZE = exports.SEARCH_RESULTS_ELEMETS_HEIGHT_ABOVE_LIST = exports.SEARCH_PUBLISHED = exports.SEARCH_BUTTON = exports.SEARCH_ADMIN = exports.FILE = exports.DEFAULT_RESULTS_KEYS = void 0;
9
+ var SEARCH_ADMIN = 'SEARCH_ADMIN';
10
+ exports.SEARCH_ADMIN = SEARCH_ADMIN;
11
+ var SEARCH_PUBLISHED = 'SEARCH_PUBLISHED';
12
+ exports.SEARCH_PUBLISHED = SEARCH_PUBLISHED;
13
+ var SEARCH_RESULTS_OVER_SCAN_BUFFER = 0;
14
+ exports.SEARCH_RESULTS_OVER_SCAN_BUFFER = SEARCH_RESULTS_OVER_SCAN_BUFFER;
15
+ var SEARCH_RESULTS_ELEMETS_HEIGHT_ABOVE_LIST = 186;
16
+ exports.SEARCH_RESULTS_ELEMETS_HEIGHT_ABOVE_LIST = SEARCH_RESULTS_ELEMETS_HEIGHT_ABOVE_LIST;
17
+ var SEARCH_RESULTS_ITEM_SIZE = 105;
18
+ exports.SEARCH_RESULTS_ITEM_SIZE = SEARCH_RESULTS_ITEM_SIZE;
19
+ var DEFAULT_RESULTS_KEYS = 'name, url';
20
+ exports.DEFAULT_RESULTS_KEYS = DEFAULT_RESULTS_KEYS;
21
+ var SEARCH_BUTTON = 'search-button';
22
+ exports.SEARCH_BUTTON = SEARCH_BUTTON;
23
+ var FILE = 'file';
24
+ exports.FILE = FILE;
25
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants.js"],"names":["SEARCH_ADMIN","SEARCH_PUBLISHED","SEARCH_RESULTS_OVER_SCAN_BUFFER","SEARCH_RESULTS_ELEMETS_HEIGHT_ABOVE_LIST","SEARCH_RESULTS_ITEM_SIZE","DEFAULT_RESULTS_KEYS","SEARCH_BUTTON","FILE"],"mappings":";;;;;;;;AAAA,IAAMA,YAAY,GAAG,cAArB;;AACA,IAAMC,gBAAgB,GAAG,kBAAzB;;AACA,IAAMC,+BAA+B,GAAG,CAAxC;;AACA,IAAMC,wCAAwC,GAAG,GAAjD;;AACA,IAAMC,wBAAwB,GAAG,GAAjC;;AACA,IAAMC,oBAAoB,GAAG,WAA7B;;AACA,IAAMC,aAAa,GAAG,eAAtB;;AACA,IAAMC,IAAI,GAAG,MAAb","sourcesContent":["const SEARCH_ADMIN = 'SEARCH_ADMIN';\nconst SEARCH_PUBLISHED = 'SEARCH_PUBLISHED';\nconst SEARCH_RESULTS_OVER_SCAN_BUFFER = 0;\nconst SEARCH_RESULTS_ELEMETS_HEIGHT_ABOVE_LIST = 186;\nconst SEARCH_RESULTS_ITEM_SIZE = 105;\nconst DEFAULT_RESULTS_KEYS = 'name, url';\nconst SEARCH_BUTTON = 'search-button';\nconst FILE = 'file';\n\nexport {\n SEARCH_ADMIN,\n SEARCH_PUBLISHED,\n SEARCH_RESULTS_OVER_SCAN_BUFFER,\n SEARCH_RESULTS_ELEMETS_HEIGHT_ABOVE_LIST,\n SEARCH_RESULTS_ITEM_SIZE,\n DEFAULT_RESULTS_KEYS,\n SEARCH_BUTTON,\n FILE\n};\n"],"file":"constants.js"}
package/lib/index.js ADDED
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ Object.defineProperty(exports, "SearchAdmin", {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _SearchAdmin["default"];
14
+ }
15
+ });
16
+ Object.defineProperty(exports, "SearchBar", {
17
+ enumerable: true,
18
+ get: function get() {
19
+ return _SearchBar["default"];
20
+ }
21
+ });
22
+ Object.defineProperty(exports, "SearchPublishedContent", {
23
+ enumerable: true,
24
+ get: function get() {
25
+ return _SearchPublishedContent["default"];
26
+ }
27
+ });
28
+
29
+ var _SearchAdmin = _interopRequireDefault(require("./components/SearchAdmin"));
30
+
31
+ var _SearchPublishedContent = _interopRequireDefault(require("./components/SearchPublishedContent"));
32
+
33
+ var _SearchBar = _interopRequireDefault(require("./components/SearchAdmin/SearchBar"));
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA","sourcesContent":["import SearchAdmin from './components/SearchAdmin';\nimport SearchPublishedContent from './components/SearchPublishedContent';\nimport SearchBar from './components/SearchAdmin/SearchBar';\n\nexport { SearchAdmin, SearchPublishedContent, SearchBar };\n"],"file":"index.js"}
@@ -0,0 +1,34 @@
1
+ import gql from 'graphql-tag';
2
+
3
+ const SEARCH_ADMIN = () => gql`
4
+ query searchAdmin($limit: Int, $offset: Int, $sort: String, $rawQuery: JSON!) {
5
+ search: searchAdmin(limit: $limit, offset: $offset, sort: $sort, rawQuery: $rawQuery) {
6
+ jsonResults
7
+ total
8
+ }
9
+ }
10
+ `;
11
+
12
+ const SEARCH_PUBLISHED = ({
13
+ resultKeys
14
+ }) => gql`
15
+ query searchPublishedContent($limit: Int, $offset: Int, $sort: String, $rawQuery: JSON!) {
16
+ search: searchPublishedContent(
17
+ limit: $limit
18
+ offset: $offset
19
+ sort: $sort
20
+ rawQuery: $rawQuery
21
+ ) {
22
+ results {
23
+ ${resultKeys}
24
+ }
25
+ total
26
+ }
27
+ }
28
+ `;
29
+
30
+ export default {
31
+ SEARCH_ADMIN,
32
+ SEARCH_PUBLISHED
33
+ };
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/application/query/index.js"],"names":["gql","SEARCH_ADMIN","SEARCH_PUBLISHED","resultKeys"],"mappings":"AAAA,OAAOA,GAAP,MAAgB,aAAhB;;AAEA,MAAMC,YAAY,GAAG,MAAMD,GAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,CAPA;;AASA,MAAME,gBAAgB,GAAG,CAAC;AAAEC,EAAAA;AAAF,CAAD,KAAoBH,GAAI;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAUG,UAAW;AACrB;AACA;AACA;AACA;AACA,CAdA;;AAgBA,eAAe;AAAEF,EAAAA,YAAF;AAAgBC,EAAAA;AAAhB,CAAf","sourcesContent":["import gql from 'graphql-tag';\n\nconst SEARCH_ADMIN = () => gql`\n query searchAdmin($limit: Int, $offset: Int, $sort: String, $rawQuery: JSON!) {\n search: searchAdmin(limit: $limit, offset: $offset, sort: $sort, rawQuery: $rawQuery) {\n jsonResults\n total\n }\n }\n`;\n\nconst SEARCH_PUBLISHED = ({ resultKeys }) => gql`\n query searchPublishedContent($limit: Int, $offset: Int, $sort: String, $rawQuery: JSON!) {\n search: searchPublishedContent(\n limit: $limit\n offset: $offset\n sort: $sort\n rawQuery: $rawQuery\n ) {\n results {\n ${resultKeys}\n }\n total\n }\n }\n`;\n\nexport default { SEARCH_ADMIN, SEARCH_PUBLISHED };\n"],"file":"index.js"}
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+
4
+ const RecentSearches = ({
5
+ recentSearches,
6
+ handleSearchTerm,
7
+ search
8
+ }) => /*#__PURE__*/React.createElement("div", {
9
+ className: "list list--search"
10
+ }, /*#__PURE__*/React.createElement("div", {
11
+ className: "header header--list"
12
+ }, /*#__PURE__*/React.createElement("h2", null, "Recent searches")), recentSearches.map(searchedTerm => /*#__PURE__*/React.createElement("div", {
13
+ key: searchedTerm,
14
+ role: "button",
15
+ className: "list__item list__item--search",
16
+ onClick: () => {
17
+ handleSearchTerm({
18
+ target: {
19
+ value: searchedTerm
20
+ }
21
+ });
22
+ search({
23
+ value: searchedTerm
24
+ });
25
+ }
26
+ }, /*#__PURE__*/React.createElement("div", {
27
+ className: "list__item-row list__item-row--search"
28
+ }, /*#__PURE__*/React.createElement("i", {
29
+ className: "material-icons"
30
+ }, "search"), /*#__PURE__*/React.createElement("div", {
31
+ className: "list__item-text list__item-text--search"
32
+ }, searchedTerm)))));
33
+
34
+ RecentSearches.propTypes = {
35
+ recentSearches: PropTypes.array.isRequired,
36
+ handleSearchTerm: PropTypes.func.isRequired,
37
+ search: PropTypes.func.isRequired
38
+ };
39
+ export default RecentSearches;
40
+ //# sourceMappingURL=RecentSearches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/SearchAdmin/RecentSearches/RecentSearches.js"],"names":["React","PropTypes","RecentSearches","recentSearches","handleSearchTerm","search","map","searchedTerm","target","value","propTypes","array","isRequired","func"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;;AAEA,MAAMC,cAAc,GAAG,CAAC;AAAEC,EAAAA,cAAF;AAAkBC,EAAAA,gBAAlB;AAAoCC,EAAAA;AAApC,CAAD,kBACrB;AAAK,EAAA,SAAS,EAAC;AAAf,gBACE;AAAK,EAAA,SAAS,EAAC;AAAf,gBACE,kDADF,CADF,EAIGF,cAAc,CAACG,GAAf,CAAmBC,YAAY,iBAC9B;AACE,EAAA,GAAG,EAAEA,YADP;AAEE,EAAA,IAAI,EAAC,QAFP;AAGE,EAAA,SAAS,EAAC,+BAHZ;AAIE,EAAA,OAAO,EAAE,MAAM;AACbH,IAAAA,gBAAgB,CAAC;AAAEI,MAAAA,MAAM,EAAE;AAAEC,QAAAA,KAAK,EAAEF;AAAT;AAAV,KAAD,CAAhB;AACAF,IAAAA,MAAM,CAAC;AAAEI,MAAAA,KAAK,EAAEF;AAAT,KAAD,CAAN;AACD;AAPH,gBAQE;AAAK,EAAA,SAAS,EAAC;AAAf,gBACE;AAAG,EAAA,SAAS,EAAC;AAAb,YADF,eAEE;AAAK,EAAA,SAAS,EAAC;AAAf,GAA0DA,YAA1D,CAFF,CARF,CADD,CAJH,CADF;;AAuBAL,cAAc,CAACQ,SAAf,GAA2B;AACzBP,EAAAA,cAAc,EAAEF,SAAS,CAACU,KAAV,CAAgBC,UADP;AAEzBR,EAAAA,gBAAgB,EAAEH,SAAS,CAACY,IAAV,CAAeD,UAFR;AAGzBP,EAAAA,MAAM,EAAEJ,SAAS,CAACY,IAAV,CAAeD;AAHE,CAA3B;AAMA,eAAeV,cAAf","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst RecentSearches = ({ recentSearches, handleSearchTerm, search }) => (\n <div className=\"list list--search\">\n <div className=\"header header--list\">\n <h2>Recent searches</h2>\n </div>\n {recentSearches.map(searchedTerm => (\n <div\n key={searchedTerm}\n role=\"button\"\n className=\"list__item list__item--search\"\n onClick={() => {\n handleSearchTerm({ target: { value: searchedTerm } });\n search({ value: searchedTerm });\n }}>\n <div className=\"list__item-row list__item-row--search\">\n <i className=\"material-icons\">search</i>\n <div className=\"list__item-text list__item-text--search\">{searchedTerm}</div>\n </div>\n </div>\n ))}\n </div>\n);\n\nRecentSearches.propTypes = {\n recentSearches: PropTypes.array.isRequired,\n handleSearchTerm: PropTypes.func.isRequired,\n search: PropTypes.func.isRequired\n};\n\nexport default RecentSearches;\n"],"file":"RecentSearches.js"}
@@ -0,0 +1,3 @@
1
+ import RecentSearches from './RecentSearches';
2
+ export default RecentSearches;
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/SearchAdmin/RecentSearches/index.js"],"names":["RecentSearches"],"mappings":"AAAA,OAAOA,cAAP,MAA2B,kBAA3B;AAEA,eAAeA,cAAf","sourcesContent":["import RecentSearches from './RecentSearches';\n\nexport default RecentSearches;\n"],"file":"index.js"}
@@ -0,0 +1,126 @@
1
+ import React, { useState, useRef, useEffect } from 'react';
2
+ import classnames from 'classnames';
3
+ import useLocalStorage from '../useLocalStorage';
4
+ import SearchBar from './SearchBar';
5
+ import RecentSearches from './RecentSearches';
6
+ import SearchResults from './SearchResults';
7
+ import TriggerModal from './TriggerModal';
8
+ import useSearchResults from '../useSearchResults';
9
+ import { SEARCH_ADMIN } from '../../constants';
10
+
11
+ const SearchAdmin = () => {
12
+ const [searchTerm, setSearchTerm] = useState('');
13
+ const [recentSearches, setRecentSearches] = useLocalStorage('recentSearches', []);
14
+ const [displaySearchModalFrame, setDisplaySearchModalFrame] = useState(false);
15
+ const [enableResults, setEnableResults] = useState(true);
16
+ const searchInputRef = useRef(null);
17
+ const [{
18
+ loading,
19
+ results,
20
+ total
21
+ }, setQueryParams] = useSearchResults({
22
+ queryKey: SEARCH_ADMIN
23
+ });
24
+ useEffect(() => {
25
+ if (searchInputRef && searchInputRef.current) {
26
+ searchInputRef.current.focus();
27
+ }
28
+ }, [displaySearchModalFrame]);
29
+
30
+ const handleSearchTerm = ({
31
+ target: {
32
+ value
33
+ }
34
+ }) => {
35
+ setSearchTerm(value);
36
+ };
37
+
38
+ const toggleSearchModal = () => {
39
+ setSearchTerm(null);
40
+ setEnableResults(false);
41
+ setDisplaySearchModalFrame(!displaySearchModalFrame);
42
+ };
43
+
44
+ const search = ({
45
+ value
46
+ }) => {
47
+ if (!value) return;
48
+ !enableResults && setEnableResults(true);
49
+ const MAX_RECENT_SEARCHES = 5;
50
+ const recentSearchesCopy = recentSearches.slice();
51
+
52
+ if (!recentSearchesCopy.includes(value)) {
53
+ recentSearchesCopy.push(value);
54
+
55
+ if (recentSearchesCopy.length > MAX_RECENT_SEARCHES) {
56
+ recentSearchesCopy.shift();
57
+ }
58
+ }
59
+
60
+ setRecentSearches(recentSearchesCopy);
61
+ setQueryParams({
62
+ value
63
+ });
64
+ };
65
+
66
+ const handleKeyDown = ({
67
+ key
68
+ }) => {
69
+ if (key === 'Enter') {
70
+ if (!searchTerm) return clear();
71
+ search({
72
+ value: searchTerm
73
+ });
74
+ }
75
+ };
76
+
77
+ const clear = () => {
78
+ setSearchTerm('');
79
+ setEnableResults(false);
80
+ };
81
+
82
+ const searchModalResultsClassName = classnames('modal modal--full-screen modal--search', {
83
+ 'modal--show': displaySearchModalFrame
84
+ });
85
+ const isEmptySearchTermAndData = !searchTerm && !results.length;
86
+ const isEmptySearchTermnAndDisabledResults = !searchTerm && !enableResults;
87
+ const shouldDisplayRecentSearches = isEmptySearchTermAndData || isEmptySearchTermnAndDisabledResults;
88
+ const showResults = enableResults && results.length;
89
+ return /*#__PURE__*/React.createElement("div", {
90
+ className: "search search--header"
91
+ }, /*#__PURE__*/React.createElement(TriggerModal, {
92
+ toggleSearchModal: toggleSearchModal
93
+ }), /*#__PURE__*/React.createElement("div", {
94
+ className: searchModalResultsClassName
95
+ }, displaySearchModalFrame && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
96
+ className: "modal__header modal__header--search"
97
+ }, /*#__PURE__*/React.createElement(SearchBar, {
98
+ toggleSearchModal: toggleSearchModal,
99
+ handleKeyDown: handleKeyDown,
100
+ searchInputRef: searchInputRef,
101
+ handleSearchTerm: handleSearchTerm,
102
+ searchTerm: searchTerm,
103
+ search: () => search({
104
+ value: searchTerm
105
+ })
106
+ })), shouldDisplayRecentSearches ? /*#__PURE__*/React.createElement(RecentSearches, {
107
+ recentSearches: recentSearches,
108
+ handleSearchTerm: handleSearchTerm,
109
+ search: search
110
+ }) : /*#__PURE__*/React.createElement(React.Fragment, null, !showResults && /*#__PURE__*/React.createElement("div", {
111
+ className: "list list--search"
112
+ }, /*#__PURE__*/React.createElement("div", {
113
+ className: "header header--list"
114
+ }, /*#__PURE__*/React.createElement("h2", null, "No Results")))), showResults && /*#__PURE__*/React.createElement(SearchResults, {
115
+ currentValue: searchTerm,
116
+ searchTerm: searchTerm,
117
+ loading: loading,
118
+ results: results,
119
+ total: total,
120
+ setQueryParams: setQueryParams,
121
+ closeModal: toggleSearchModal
122
+ }))));
123
+ };
124
+
125
+ export default SearchAdmin;
126
+ //# sourceMappingURL=SearchAdmin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/SearchAdmin/SearchAdmin.js"],"names":["React","useState","useRef","useEffect","classnames","useLocalStorage","SearchBar","RecentSearches","SearchResults","TriggerModal","useSearchResults","SEARCH_ADMIN","SearchAdmin","searchTerm","setSearchTerm","recentSearches","setRecentSearches","displaySearchModalFrame","setDisplaySearchModalFrame","enableResults","setEnableResults","searchInputRef","loading","results","total","setQueryParams","queryKey","current","focus","handleSearchTerm","target","value","toggleSearchModal","search","MAX_RECENT_SEARCHES","recentSearchesCopy","slice","includes","push","length","shift","handleKeyDown","key","clear","searchModalResultsClassName","isEmptySearchTermAndData","isEmptySearchTermnAndDisabledResults","shouldDisplayRecentSearches","showResults"],"mappings":"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","sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport classnames from 'classnames';\nimport useLocalStorage from '../useLocalStorage';\nimport SearchBar from './SearchBar';\nimport RecentSearches from './RecentSearches';\nimport SearchResults from './SearchResults';\nimport TriggerModal from './TriggerModal';\nimport useSearchResults from '../useSearchResults';\nimport { SEARCH_ADMIN } from '../../constants';\n\nconst SearchAdmin = () => {\n const [searchTerm, setSearchTerm] = useState('');\n const [recentSearches, setRecentSearches] = useLocalStorage('recentSearches', []);\n const [displaySearchModalFrame, setDisplaySearchModalFrame] = useState(false);\n const [enableResults, setEnableResults] = useState(true);\n const searchInputRef = useRef(null);\n const [{ loading, results, total }, setQueryParams] = useSearchResults({\n queryKey: SEARCH_ADMIN\n });\n\n useEffect(\n () => {\n if (searchInputRef && searchInputRef.current) {\n searchInputRef.current.focus();\n }\n },\n [displaySearchModalFrame]\n );\n\n const handleSearchTerm = ({ target: { value } }) => {\n setSearchTerm(value);\n };\n const toggleSearchModal = () => {\n setSearchTerm(null);\n setEnableResults(false);\n setDisplaySearchModalFrame(!displaySearchModalFrame);\n };\n const search = ({ value }) => {\n if (!value) return;\n !enableResults && setEnableResults(true);\n const MAX_RECENT_SEARCHES = 5;\n const recentSearchesCopy = recentSearches.slice();\n\n if (!recentSearchesCopy.includes(value)) {\n recentSearchesCopy.push(value);\n if (recentSearchesCopy.length > MAX_RECENT_SEARCHES) {\n recentSearchesCopy.shift();\n }\n }\n\n setRecentSearches(recentSearchesCopy);\n setQueryParams({ value });\n };\n\n const handleKeyDown = ({ key }) => {\n if (key === 'Enter') {\n if (!searchTerm) return clear();\n search({ value: searchTerm });\n }\n };\n\n const clear = () => {\n setSearchTerm('');\n setEnableResults(false);\n };\n\n const searchModalResultsClassName = classnames('modal modal--full-screen modal--search', {\n 'modal--show': displaySearchModalFrame\n });\n\n const isEmptySearchTermAndData = !searchTerm && !results.length;\n const isEmptySearchTermnAndDisabledResults = !searchTerm && !enableResults;\n const shouldDisplayRecentSearches =\n isEmptySearchTermAndData || isEmptySearchTermnAndDisabledResults;\n\n const showResults = enableResults && results.length;\n\n return (\n <div className=\"search search--header\">\n <TriggerModal toggleSearchModal={toggleSearchModal} />\n <div className={searchModalResultsClassName}>\n {displaySearchModalFrame && (\n <>\n <div className=\"modal__header modal__header--search\">\n <SearchBar\n toggleSearchModal={toggleSearchModal}\n handleKeyDown={handleKeyDown}\n searchInputRef={searchInputRef}\n handleSearchTerm={handleSearchTerm}\n searchTerm={searchTerm}\n search={() => search({ value: searchTerm })}\n />\n </div>\n {shouldDisplayRecentSearches ? (\n <RecentSearches\n recentSearches={recentSearches}\n handleSearchTerm={handleSearchTerm}\n search={search}\n />\n ) : (\n <>\n {!showResults && (\n <div className=\"list list--search\">\n <div className=\"header header--list\">\n <h2>No Results</h2>\n </div>\n </div>\n )}\n </>\n )}\n {showResults && (\n <SearchResults\n currentValue={searchTerm}\n searchTerm={searchTerm}\n loading={loading}\n results={results}\n total={total}\n setQueryParams={setQueryParams}\n closeModal={toggleSearchModal}\n />\n )}\n </>\n )}\n </div>\n </div>\n );\n};\n\nexport default SearchAdmin;\n"],"file":"SearchAdmin.js"}