@searchcraft/javascript-sdk 0.7.0 → 0.7.2

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 (263) hide show
  1. package/README.md +7 -1
  2. package/dist/cjs/{index-d4b4a45e.js → index-a81df4f0.js} +29 -113
  3. package/dist/{components/p-6cafd48d.js.map → cjs/index-a81df4f0.js.map} +1 -1
  4. package/dist/cjs/index.cjs.js +1 -1
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/searchcraft-base-search-result.cjs.entry.js +91 -44
  7. package/dist/cjs/searchcraft-base-search-result.cjs.entry.js.map +1 -1
  8. package/dist/cjs/searchcraft-base-search-results.cjs.entry.js +74 -50
  9. package/dist/cjs/searchcraft-base-search-results.cjs.entry.js.map +1 -1
  10. package/dist/cjs/searchcraft-button_3.cjs.entry.js +37 -36
  11. package/dist/cjs/searchcraft-button_3.cjs.entry.js.map +1 -1
  12. package/dist/cjs/searchcraft-facet-list_3.cjs.entry.js +141 -119
  13. package/dist/cjs/searchcraft-facet-list_3.cjs.entry.js.map +1 -1
  14. package/dist/cjs/searchcraft-filter-panel.cjs.entry.js +11 -14
  15. package/dist/cjs/searchcraft-filter-panel.cjs.entry.js.map +1 -1
  16. package/dist/cjs/searchcraft-input-form_2.cjs.entry.js +127 -92
  17. package/dist/cjs/searchcraft-input-form_2.cjs.entry.js.map +1 -1
  18. package/dist/cjs/searchcraft-javascript-sdk.cjs.js +2 -2
  19. package/dist/cjs/searchcraft-popover-button.cjs.entry.js +3 -7
  20. package/dist/cjs/searchcraft-popover-button.cjs.entry.js.map +1 -1
  21. package/dist/cjs/searchcraft-popover-form.cjs.entry.js +81 -75
  22. package/dist/cjs/searchcraft-popover-form.cjs.entry.js.map +1 -1
  23. package/dist/cjs/searchcraft-popover-list-item.cjs.entry.js +29 -6
  24. package/dist/cjs/searchcraft-popover-list-item.cjs.entry.js.map +1 -1
  25. package/dist/cjs/searchcraft-results-info.cjs.entry.js +9 -13
  26. package/dist/cjs/searchcraft-results-info.cjs.entry.js.map +1 -1
  27. package/dist/cjs/searchcraft-theme.cjs.entry.js +38 -0
  28. package/dist/cjs/searchcraft-theme.cjs.entry.js.map +1 -0
  29. package/dist/cjs/{store-abe47006.js → store-f6ba3dfb.js} +26 -10
  30. package/dist/cjs/{store-abe47006.js.map → store-f6ba3dfb.js.map} +1 -1
  31. package/dist/collection/collection-manifest.json +1 -0
  32. package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.js +102 -62
  33. package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.js.map +1 -1
  34. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.js +77 -61
  35. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.js.map +1 -1
  36. package/dist/collection/components/searchcraft-button/searchcraft-button.js +26 -30
  37. package/dist/collection/components/searchcraft-button/searchcraft-button.js.map +1 -1
  38. package/dist/collection/components/searchcraft-error-message/searchcraft-error-message.js +6 -12
  39. package/dist/collection/components/searchcraft-error-message/searchcraft-error-message.js.map +1 -1
  40. package/dist/collection/components/searchcraft-facet-list/searchcraft-facet-list.js +59 -51
  41. package/dist/collection/components/searchcraft-facet-list/searchcraft-facet-list.js.map +1 -1
  42. package/dist/collection/components/searchcraft-filter-panel/searchcraft-filter-panel.js +9 -20
  43. package/dist/collection/components/searchcraft-filter-panel/searchcraft-filter-panel.js.map +1 -1
  44. package/dist/collection/components/searchcraft-input-form/searchcraft-input-form.js +109 -87
  45. package/dist/collection/components/searchcraft-input-form/searchcraft-input-form.js.map +1 -1
  46. package/dist/collection/components/searchcraft-input-label/searchcraft-input-label.js +10 -20
  47. package/dist/collection/components/searchcraft-input-label/searchcraft-input-label.js.map +1 -1
  48. package/dist/collection/components/searchcraft-popover-button/searchcraft-popover-button.js +1 -11
  49. package/dist/collection/components/searchcraft-popover-button/searchcraft-popover-button.js.map +1 -1
  50. package/dist/collection/components/searchcraft-popover-form/searchcraft-popover-form.js +81 -82
  51. package/dist/collection/components/searchcraft-popover-form/searchcraft-popover-form.js.map +1 -1
  52. package/dist/collection/components/searchcraft-popover-list-item/searchcraft-popover-list-item.js +35 -17
  53. package/dist/collection/components/searchcraft-popover-list-item/searchcraft-popover-list-item.js.map +1 -1
  54. package/dist/collection/components/searchcraft-popover-list-view/searchcraft-popover-list-view.js +17 -19
  55. package/dist/collection/components/searchcraft-popover-list-view/searchcraft-popover-list-view.js.map +1 -1
  56. package/dist/collection/components/searchcraft-results-info/searchcraft-results-info.js +7 -19
  57. package/dist/collection/components/searchcraft-results-info/searchcraft-results-info.js.map +1 -1
  58. package/dist/collection/components/searchcraft-slider/searchcraft-slider.js +57 -65
  59. package/dist/collection/components/searchcraft-slider/searchcraft-slider.js.map +1 -1
  60. package/dist/collection/components/searchcraft-theme/searchcraft-theme.js +37 -0
  61. package/dist/collection/components/searchcraft-theme/searchcraft-theme.js.map +1 -0
  62. package/dist/collection/components/searchcraft-toggle-button/searchcraft-toggle-button.js +23 -26
  63. package/dist/collection/components/searchcraft-toggle-button/searchcraft-toggle-button.js.map +1 -1
  64. package/dist/collection/index.js.map +1 -1
  65. package/dist/collection/provider/store.js +25 -9
  66. package/dist/collection/provider/store.js.map +1 -1
  67. package/dist/collection/utils/facets.js +5 -3
  68. package/dist/collection/utils/facets.js.map +1 -1
  69. package/dist/components/index.js +4 -2
  70. package/dist/components/index.js.map +1 -1
  71. package/dist/components/p-0ef4ab33.js +66 -0
  72. package/dist/components/p-0ef4ab33.js.map +1 -0
  73. package/dist/components/p-1234974c.js +72 -0
  74. package/dist/components/p-1234974c.js.map +1 -0
  75. package/dist/components/p-4b92ae26.js +109 -0
  76. package/dist/components/p-4b92ae26.js.map +1 -0
  77. package/dist/components/{p-e1cf5f9d.js → p-506cdac1.js} +18 -14
  78. package/dist/components/p-506cdac1.js.map +1 -0
  79. package/dist/components/p-521fe971.js +60 -0
  80. package/dist/components/p-521fe971.js.map +1 -0
  81. package/dist/components/{p-6cafd48d.js → p-5365011f.js} +30 -123
  82. package/dist/components/p-5365011f.js.map +1 -0
  83. package/dist/components/p-54998882.js +285 -0
  84. package/dist/components/p-54998882.js.map +1 -0
  85. package/dist/{esm/store-712f0586.js → components/p-936e2ed4.js} +26 -10
  86. package/dist/components/{p-01dc5b3b.js.map → p-936e2ed4.js.map} +1 -1
  87. package/dist/components/p-960ddc89.js +284 -0
  88. package/dist/components/p-960ddc89.js.map +1 -0
  89. package/dist/components/p-a75ef832.js +34 -0
  90. package/dist/components/p-a75ef832.js.map +1 -0
  91. package/dist/components/p-b4a8fcbe.js +144 -0
  92. package/dist/components/p-b4a8fcbe.js.map +1 -0
  93. package/dist/components/p-ca881e5c.js +37 -0
  94. package/dist/components/p-ca881e5c.js.map +1 -0
  95. package/dist/components/searchcraft-base-search-result.js +1 -1
  96. package/dist/components/searchcraft-base-search-results.js +76 -52
  97. package/dist/components/searchcraft-base-search-results.js.map +1 -1
  98. package/dist/components/searchcraft-button.js +1 -1
  99. package/dist/components/searchcraft-error-message.js +1 -1
  100. package/dist/components/searchcraft-facet-list.js +1 -1
  101. package/dist/components/searchcraft-filter-panel.js +14 -17
  102. package/dist/components/searchcraft-filter-panel.js.map +1 -1
  103. package/dist/components/searchcraft-input-form.js +1 -1
  104. package/dist/components/searchcraft-input-label.js +1 -1
  105. package/dist/components/searchcraft-popover-button.js +3 -7
  106. package/dist/components/searchcraft-popover-button.js.map +1 -1
  107. package/dist/components/searchcraft-popover-form.js +87 -81
  108. package/dist/components/searchcraft-popover-form.js.map +1 -1
  109. package/dist/components/searchcraft-popover-list-item.js +1 -1
  110. package/dist/components/searchcraft-popover-list-view.js +1 -1
  111. package/dist/components/searchcraft-results-info.js +9 -13
  112. package/dist/components/searchcraft-results-info.js.map +1 -1
  113. package/dist/components/searchcraft-slider.js +1 -1
  114. package/dist/components/searchcraft-theme.d.ts +11 -0
  115. package/dist/components/searchcraft-theme.js +51 -0
  116. package/dist/components/searchcraft-theme.js.map +1 -0
  117. package/dist/components/searchcraft-toggle-button.js +1 -1
  118. package/dist/esm/{index-56b713de.js → index-3608c57d.js} +29 -113
  119. package/dist/esm/index-3608c57d.js.map +1 -0
  120. package/dist/esm/index.js +1 -1
  121. package/dist/esm/loader.js +3 -3
  122. package/dist/esm/searchcraft-base-search-result.entry.js +91 -44
  123. package/dist/esm/searchcraft-base-search-result.entry.js.map +1 -1
  124. package/dist/esm/searchcraft-base-search-results.entry.js +74 -50
  125. package/dist/esm/searchcraft-base-search-results.entry.js.map +1 -1
  126. package/dist/esm/searchcraft-button_3.entry.js +37 -36
  127. package/dist/esm/searchcraft-button_3.entry.js.map +1 -1
  128. package/dist/esm/searchcraft-facet-list_3.entry.js +141 -119
  129. package/dist/esm/searchcraft-facet-list_3.entry.js.map +1 -1
  130. package/dist/esm/searchcraft-filter-panel.entry.js +11 -14
  131. package/dist/esm/searchcraft-filter-panel.entry.js.map +1 -1
  132. package/dist/esm/searchcraft-input-form_2.entry.js +127 -92
  133. package/dist/esm/searchcraft-input-form_2.entry.js.map +1 -1
  134. package/dist/esm/searchcraft-javascript-sdk.js +3 -3
  135. package/dist/esm/searchcraft-popover-button.entry.js +3 -7
  136. package/dist/esm/searchcraft-popover-button.entry.js.map +1 -1
  137. package/dist/esm/searchcraft-popover-form.entry.js +81 -75
  138. package/dist/esm/searchcraft-popover-form.entry.js.map +1 -1
  139. package/dist/esm/searchcraft-popover-list-item.entry.js +29 -6
  140. package/dist/esm/searchcraft-popover-list-item.entry.js.map +1 -1
  141. package/dist/esm/searchcraft-results-info.entry.js +9 -13
  142. package/dist/esm/searchcraft-results-info.entry.js.map +1 -1
  143. package/dist/esm/searchcraft-theme.entry.js +34 -0
  144. package/dist/esm/searchcraft-theme.entry.js.map +1 -0
  145. package/dist/{components/p-01dc5b3b.js → esm/store-aa071d9c.js} +26 -10
  146. package/dist/esm/{store-712f0586.js.map → store-aa071d9c.js.map} +1 -1
  147. package/dist/searchcraft-javascript-sdk/index.esm.js +1 -1
  148. package/dist/searchcraft-javascript-sdk/p-109ab0e0.entry.js +2 -0
  149. package/dist/searchcraft-javascript-sdk/p-109ab0e0.entry.js.map +1 -0
  150. package/dist/searchcraft-javascript-sdk/p-26f5263d.entry.js +2 -0
  151. package/dist/searchcraft-javascript-sdk/p-26f5263d.entry.js.map +1 -0
  152. package/dist/searchcraft-javascript-sdk/p-2ff7eb35.entry.js +2 -0
  153. package/dist/searchcraft-javascript-sdk/p-2ff7eb35.entry.js.map +1 -0
  154. package/dist/searchcraft-javascript-sdk/p-36f0532e.entry.js +2 -0
  155. package/dist/searchcraft-javascript-sdk/p-36f0532e.entry.js.map +1 -0
  156. package/dist/searchcraft-javascript-sdk/p-41b6bc5d.entry.js +2 -0
  157. package/dist/searchcraft-javascript-sdk/p-41b6bc5d.entry.js.map +1 -0
  158. package/dist/searchcraft-javascript-sdk/p-57eddb07.entry.js +2 -0
  159. package/dist/searchcraft-javascript-sdk/p-57eddb07.entry.js.map +1 -0
  160. package/dist/searchcraft-javascript-sdk/p-5d6fbee0.entry.js +2 -0
  161. package/dist/searchcraft-javascript-sdk/p-5d6fbee0.entry.js.map +1 -0
  162. package/dist/searchcraft-javascript-sdk/p-64c5a1d2.entry.js +2 -0
  163. package/dist/searchcraft-javascript-sdk/p-64c5a1d2.entry.js.map +1 -0
  164. package/dist/searchcraft-javascript-sdk/p-7e13c128.js +3 -0
  165. package/dist/searchcraft-javascript-sdk/p-7e13c128.js.map +1 -0
  166. package/dist/searchcraft-javascript-sdk/{p-01dc5b3b.js → p-936e2ed4.js} +2 -2
  167. package/dist/searchcraft-javascript-sdk/{p-01dc5b3b.js.map → p-936e2ed4.js.map} +1 -1
  168. package/dist/searchcraft-javascript-sdk/p-c7df8be6.entry.js +2 -0
  169. package/dist/searchcraft-javascript-sdk/p-c7df8be6.entry.js.map +1 -0
  170. package/dist/searchcraft-javascript-sdk/p-eb6058e8.entry.js +2 -0
  171. package/dist/searchcraft-javascript-sdk/p-eb6058e8.entry.js.map +1 -0
  172. package/dist/searchcraft-javascript-sdk/p-faaa4394.entry.js +2 -0
  173. package/dist/searchcraft-javascript-sdk/p-faaa4394.entry.js.map +1 -0
  174. package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js +1 -1
  175. package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js.map +1 -1
  176. package/dist/types/components/searchcraft-base-search-result/searchcraft-base-search-result.d.ts +1 -0
  177. package/dist/types/components/searchcraft-base-search-results/searchcraft-base-search-results.d.ts +2 -1
  178. package/dist/types/components/searchcraft-button/searchcraft-button.d.ts +1 -0
  179. package/dist/types/components/searchcraft-error-message/searchcraft-error-message.d.ts +1 -0
  180. package/dist/types/components/searchcraft-facet-list/searchcraft-facet-list.d.ts +2 -1
  181. package/dist/types/components/searchcraft-filter-panel/searchcraft-filter-panel.d.ts +1 -0
  182. package/dist/types/components/searchcraft-input-form/searchcraft-input-form.d.ts +7 -10
  183. package/dist/types/components/searchcraft-input-label/searchcraft-input-label.d.ts +2 -1
  184. package/dist/types/components/searchcraft-popover-button/searchcraft-popover-button.d.ts +1 -0
  185. package/dist/types/components/searchcraft-popover-form/searchcraft-popover-form.d.ts +2 -1
  186. package/dist/types/components/searchcraft-popover-list-item/searchcraft-popover-list-item.d.ts +2 -0
  187. package/dist/types/components/searchcraft-popover-list-view/searchcraft-popover-list-view.d.ts +1 -0
  188. package/dist/types/components/searchcraft-results-info/searchcraft-results-info.d.ts +1 -0
  189. package/dist/types/components/searchcraft-slider/searchcraft-slider.d.ts +2 -1
  190. package/dist/types/components/searchcraft-theme/searchcraft-theme.d.ts +15 -0
  191. package/dist/types/components/searchcraft-toggle-button/searchcraft-toggle-button.d.ts +2 -1
  192. package/dist/types/components.d.ts +53 -4
  193. package/dist/types/index.d.ts +2 -1
  194. package/dist/types/provider/store.d.ts +1 -0
  195. package/dist/types/types/_shared.types.d.ts +1 -0
  196. package/dist/types/types/index.d.ts +1 -0
  197. package/dist/types/types/raw.d.ts +4 -0
  198. package/dist/types/types/searchcraft-base-search-results.types.d.ts +1 -0
  199. package/dist/types/types/searchcraft-filter-panel.types.d.ts +1 -0
  200. package/dist/types/types/searchcraft-popover-form.types.d.ts +1 -0
  201. package/dist/types/utils/facets.d.ts +1 -0
  202. package/dist/types/utils/index.d.ts +1 -0
  203. package/dist/types/utils/styles.d.ts +1 -0
  204. package/dist/types/utils/units.d.ts +1 -0
  205. package/package.json +5 -4
  206. package/dist/cjs/index-d4b4a45e.js.map +0 -1
  207. package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.module.css +0 -227
  208. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.module.css +0 -179
  209. package/dist/collection/components/searchcraft-button/searchcraft-button.module.css +0 -174
  210. package/dist/collection/components/searchcraft-error-message/searchcraft-error-message.module.css +0 -158
  211. package/dist/collection/components/searchcraft-facet-list/searchcraft-facet-list.module.css +0 -266
  212. package/dist/collection/components/searchcraft-filter-panel/searchcraft-filter-panel.module.css +0 -168
  213. package/dist/collection/components/searchcraft-input-form/searchcraft-input-form.module.css +0 -293
  214. package/dist/collection/components/searchcraft-input-label/searchcraft-input-label.module.css +0 -159
  215. package/dist/collection/components/searchcraft-popover-button/searchcraft-popover-button.module.css +0 -0
  216. package/dist/collection/components/searchcraft-popover-form/searchcraft-popover-form.module.css +0 -322
  217. package/dist/collection/components/searchcraft-popover-list-item/searchcraft-popover-list-item.module.css +0 -209
  218. package/dist/collection/components/searchcraft-popover-list-view/searchcraft-popover-list-view.module.css +0 -0
  219. package/dist/collection/components/searchcraft-results-info/searchcraft-results-info.module.css +0 -169
  220. package/dist/collection/components/searchcraft-slider/searchcraft-slider.module.css +0 -231
  221. package/dist/collection/components/searchcraft-toggle-button/searchcraft-toggle-button.module.css +0 -207
  222. package/dist/components/p-1ae87308.js +0 -43
  223. package/dist/components/p-1ae87308.js.map +0 -1
  224. package/dist/components/p-649654b5.js +0 -268
  225. package/dist/components/p-649654b5.js.map +0 -1
  226. package/dist/components/p-662cb490.js +0 -67
  227. package/dist/components/p-662cb490.js.map +0 -1
  228. package/dist/components/p-87d1611b.js +0 -97
  229. package/dist/components/p-87d1611b.js.map +0 -1
  230. package/dist/components/p-c273e43d.js +0 -40
  231. package/dist/components/p-c273e43d.js.map +0 -1
  232. package/dist/components/p-cc9f8c61.js +0 -109
  233. package/dist/components/p-cc9f8c61.js.map +0 -1
  234. package/dist/components/p-cf096782.js +0 -56
  235. package/dist/components/p-cf096782.js.map +0 -1
  236. package/dist/components/p-da5b92ef.js +0 -253
  237. package/dist/components/p-da5b92ef.js.map +0 -1
  238. package/dist/components/p-e1cf5f9d.js.map +0 -1
  239. package/dist/components/p-f5a06210.js +0 -34
  240. package/dist/components/p-f5a06210.js.map +0 -1
  241. package/dist/esm/index-56b713de.js.map +0 -1
  242. package/dist/searchcraft-javascript-sdk/p-117fcdd3.entry.js +0 -2
  243. package/dist/searchcraft-javascript-sdk/p-117fcdd3.entry.js.map +0 -1
  244. package/dist/searchcraft-javascript-sdk/p-129e6f2c.js +0 -3
  245. package/dist/searchcraft-javascript-sdk/p-129e6f2c.js.map +0 -1
  246. package/dist/searchcraft-javascript-sdk/p-27cb401c.entry.js +0 -2
  247. package/dist/searchcraft-javascript-sdk/p-27cb401c.entry.js.map +0 -1
  248. package/dist/searchcraft-javascript-sdk/p-4df4a29e.entry.js +0 -2
  249. package/dist/searchcraft-javascript-sdk/p-4df4a29e.entry.js.map +0 -1
  250. package/dist/searchcraft-javascript-sdk/p-54248dd8.entry.js +0 -2
  251. package/dist/searchcraft-javascript-sdk/p-54248dd8.entry.js.map +0 -1
  252. package/dist/searchcraft-javascript-sdk/p-69430dbf.entry.js +0 -2
  253. package/dist/searchcraft-javascript-sdk/p-69430dbf.entry.js.map +0 -1
  254. package/dist/searchcraft-javascript-sdk/p-a460755d.entry.js +0 -2
  255. package/dist/searchcraft-javascript-sdk/p-a460755d.entry.js.map +0 -1
  256. package/dist/searchcraft-javascript-sdk/p-bc2c4259.entry.js +0 -2
  257. package/dist/searchcraft-javascript-sdk/p-bc2c4259.entry.js.map +0 -1
  258. package/dist/searchcraft-javascript-sdk/p-caecdcda.entry.js +0 -2
  259. package/dist/searchcraft-javascript-sdk/p-caecdcda.entry.js.map +0 -1
  260. package/dist/searchcraft-javascript-sdk/p-f8129731.entry.js +0 -2
  261. package/dist/searchcraft-javascript-sdk/p-f8129731.entry.js.map +0 -1
  262. package/dist/searchcraft-javascript-sdk/p-f839b682.entry.js +0 -2
  263. package/dist/searchcraft-javascript-sdk/p-f839b682.entry.js.map +0 -1
@@ -30,77 +30,66 @@ import classNames from "classnames";
30
30
  * ```
31
31
  */
32
32
  export class SearchcraftInput {
33
- constructor() {
34
- /**
35
- * Whether or not to automatically submit the search term when the input changes.
36
- */
37
- this.autoSearch = true;
38
- /**
39
- * Where to place the search button.
40
- */
41
- this.buttonPlacement = 'none';
42
- /**
43
- * A custom styles object to be applied to the input element.
44
- */
45
- this.customStyles = {};
46
- /**
47
- * The input element's placeholder value.
48
- */
49
- this.placeholderValue = 'Enter Search';
50
- /**
51
- * The starting value of the input element.
52
- */
53
- this.searchTerm = '';
54
- this.inputValue = this.searchTerm;
55
- this.error = false;
56
- this.isSearchcraftInitialized = false;
57
- this.searchStore = useSearchcraftStore.getState();
58
- this.handleOnInput = (event) => {
59
- const input = event.target;
60
- this.inputValue = input.value;
61
- if (input.value.trim() === '') {
62
- this.inputCleared.emit();
63
- this.searchTerm = '';
64
- this.searchStore.setQuery('');
65
- this.searchStore.setSearchResults(null);
66
- return;
67
- }
68
- if (!this.autoSearch) {
69
- return;
70
- }
71
- this.performSearch(input.value);
72
- };
73
- this.performSearch = async (value) => {
74
- if (value === useSearchcraftStore.getState().query) {
75
- return;
76
- }
77
- this.searchTerm = value.trim();
78
- this.error = false;
79
- this.searchStore.setQuery(this.searchTerm);
80
- this.querySubmit.emit(this.searchTerm);
81
- try {
82
- await this.searchStore.search();
83
- }
84
- catch (error) {
85
- this.error = true;
86
- this.inputCleared.emit();
87
- }
88
- };
89
- this.handleClearInput = () => {
90
- this.inputValue = '';
91
- this.searchTerm = '';
92
- this.searchStore.setQuery('');
93
- this.searchStore.setSearchResults(null);
94
- this.error = false;
95
- if (this.inputCleared) {
96
- this.inputCleared.emit();
97
- }
98
- };
99
- this.handleFormSubmit = async (event) => {
100
- event.preventDefault();
101
- await this.performSearch(this.searchTerm);
102
- };
103
- }
33
+ /**
34
+ * The Searchcraft config object.
35
+ */
36
+ config;
37
+ /**
38
+ * Whether or not to automatically submit the search term when the input changes.
39
+ */
40
+ autoSearch = true;
41
+ /**
42
+ * Where to place the search button.
43
+ */
44
+ buttonPlacement = 'none';
45
+ /**
46
+ * The label for the submit button.
47
+ */
48
+ buttonLabel;
49
+ /**
50
+ * The label rendered above the input.
51
+ */
52
+ inputLabel;
53
+ /**
54
+ * A custom styles object to be applied to the input element.
55
+ */
56
+ customStyles = {};
57
+ /**
58
+ * The input element's placeholder value.
59
+ */
60
+ placeholderValue = 'Enter Search';
61
+ /**
62
+ * The starting value of the input element.
63
+ */
64
+ searchTerm = '';
65
+ /**
66
+ * When the input is cleared.
67
+ */
68
+ inputCleared;
69
+ /**
70
+ * When no results are returned.
71
+ */
72
+ noResultsReceived;
73
+ /**
74
+ * When the input becomes focused.
75
+ */
76
+ inputFocus;
77
+ /**
78
+ * When the input becomes unfocused.
79
+ */
80
+ inputBlur;
81
+ /**
82
+ * Event emitted when input initializes.
83
+ */
84
+ inputInit;
85
+ /**
86
+ * Event emitted when a query has been submitted.
87
+ */
88
+ querySubmit;
89
+ inputValue = this.searchTerm;
90
+ error = false;
91
+ isSearchcraftInitialized = false;
92
+ searchStore = useSearchcraftStore.getState();
104
93
  init() {
105
94
  if (this.config && !this.isSearchcraftInitialized) {
106
95
  const searchcraft = new SearchcraftCore(this.config, {
@@ -109,7 +98,7 @@ export class SearchcraftInput {
109
98
  });
110
99
  this.searchStore.initialize(searchcraft, true);
111
100
  this.isSearchcraftInitialized = true;
112
- this.inputInit.emit();
101
+ this.inputInit?.emit();
113
102
  }
114
103
  }
115
104
  componentDidLoad() {
@@ -118,6 +107,49 @@ export class SearchcraftInput {
118
107
  onConfigChange() {
119
108
  this.init();
120
109
  }
110
+ handleOnInput = (event) => {
111
+ const input = event.target;
112
+ this.inputValue = input.value;
113
+ if (input.value.trim() === '') {
114
+ this.inputCleared?.emit();
115
+ this.searchTerm = '';
116
+ this.searchStore.setQuery('');
117
+ this.searchStore.setSearchResults(null);
118
+ return;
119
+ }
120
+ if (!this.autoSearch) {
121
+ return;
122
+ }
123
+ this.performSearch(input.value);
124
+ };
125
+ performSearch = async (value) => {
126
+ if (value === useSearchcraftStore.getState().query) {
127
+ return;
128
+ }
129
+ this.searchTerm = value.trim();
130
+ this.error = false;
131
+ this.searchStore.setQuery(this.searchTerm);
132
+ this.querySubmit?.emit(this.searchTerm);
133
+ try {
134
+ await this.searchStore.search();
135
+ }
136
+ catch (error) {
137
+ this.error = true;
138
+ this.inputCleared?.emit();
139
+ }
140
+ };
141
+ handleClearInput = () => {
142
+ this.inputValue = '';
143
+ this.searchTerm = '';
144
+ this.searchStore.setQuery('');
145
+ this.searchStore.setSearchResults(null);
146
+ this.error = false;
147
+ this.inputCleared?.emit();
148
+ };
149
+ handleFormSubmit = async (event) => {
150
+ event.preventDefault();
151
+ await this.performSearch(this.searchTerm);
152
+ };
121
153
  render() {
122
154
  const validatedCustomStyles = parseCustomStyles(this.customStyles);
123
155
  const isShowingClearButton = this.inputValue.length > 0;
@@ -130,21 +162,11 @@ export class SearchcraftInput {
130
162
  const inputGridStyles = {
131
163
  gap: shouldHaveVerticalGap ? '4px 8px' : '0px 8px',
132
164
  };
133
- return (h("form", { key: 'd257962d56a583e66bdf8b55786d5dfbae231965', class: 'searchcraft-input-form', onSubmit: this.handleFormSubmit }, h("div", { key: 'd9a8467a4d76433bc473941bd4583d991ae38040', class: inputGridClassNames, style: inputGridStyles }, h("div", { key: 'a94eacc99593ed6a30006532c51cdd38c692c93f', class: 'searchcraft-input-button-wrapper' }, h("searchcraft-button", { key: '43de9d2cd538bbdf2a2bbc9f5165bfb969943831', onButtonClick: this.handleFormSubmit, label: this.buttonLabel })), this.inputLabel && (h("div", { key: 'b3554f81577d4526023d8b67de6837386789e9f3', class: 'searchcraft-input-label-wrapper' }, h("searchcraft-input-label", { key: '5cda67f38d0914dfe7e1ea71bee60b69524e9d5c', label: this.inputLabel }))), this.error && (h("div", { key: '22b82da9420159ebaf00fe3bb790d6b07341a79e', class: 'searchcraft-input-error-wrapper' }, h("searchcraft-error-message", { key: '2cc5c322408b976a7043ef9640c812036468435d', errorMessage: 'Something went wrong.' }))), h("div", { key: 'f2741bd0d20604327fa4661c3213e48df7a58249', class: 'searchcraft-input-wrapper' }, h("input", { key: '692822c6a38001ba4c71289b6b7fba13767742b5', autoComplete: 'off', class: 'searchcraft-input', onFocus: () => this.inputFocus.emit(), onBlur: () => this.inputBlur.emit(), onInput: (event) => {
165
+ return (h("form", { key: 'b23e712102e03332d5958b736133ac5222c571ed', class: 'searchcraft-input-form', onSubmit: this.handleFormSubmit }, h("div", { key: '62e1666b20e3901565241c83cb6b398afbaf14bf', class: inputGridClassNames, style: inputGridStyles }, h("div", { key: '1f78f96f48e354ba434bcd6c8eb20f6940d2281c', class: 'searchcraft-input-button-wrapper' }, h("searchcraft-button", { key: '0e89a333f3d489dccb05d978dde8622ee24a2508', onButtonClick: this.handleFormSubmit, label: this.buttonLabel })), this.inputLabel && (h("div", { key: '1b75214db1a0a9d7144e8974e3467da9a94cc845', class: 'searchcraft-input-label-wrapper' }, h("searchcraft-input-label", { key: 'd7edaa9b980eae47628747488e4966ef62fab574', label: this.inputLabel }))), this.error && (h("div", { key: '936858e238d96838caa3aa34dbb4d86b3f6ad839', class: 'searchcraft-input-error-wrapper' }, h("searchcraft-error-message", { key: '75400c0a6f9d20f5c58ef0125f70a0ba8f2da920', errorMessage: 'Something went wrong.' }))), h("div", { key: '0978f74e9a83c78604c494fca9d8a885f73b5fff', class: 'searchcraft-input-wrapper' }, h("input", { key: '4a9f69a9e21c89c97daea9e4c19e41523c71e0f2', autoComplete: 'off', class: 'searchcraft-input', onFocus: () => this.inputFocus?.emit(), onBlur: () => this.inputBlur?.emit(), onInput: (event) => {
134
166
  this.handleOnInput(event);
135
- }, placeholder: this.placeholderValue, style: validatedCustomStyles, type: 'text', value: this.inputValue }), h("div", { key: '58af613c048e7c072e4a976f71ea1bd7b3632a62', class: 'searchcraft-input-search-icon-wrapper' }, h("svg", { key: 'e6cf67405b45703ca7ddaf46a59adbf5ff926f0e', class: 'searchcraft-input-search-icon', viewBox: '0 0 20 20', fill: 'none', xmlns: 'http://www.w3.org/2000/svg', "aria-labelledby": 'searchcraft-title' }, h("title", { key: 'fa510c85900d9a716076ba79866f5bbe4f1a20ed', id: 'searchcraft-title' }, "Searchcraft Search Icon Light"), h("path", { key: 'ac9d166c19e6644adcbc00fe665e17fcf5449b73', d: 'M17.5 17.5L13.875 13.875M15.8333 9.16667C15.8333 12.8486 12.8486 15.8333 9.16667 15.8333C5.48477 15.8333 2.5 12.8486 2.5 9.16667C2.5 5.48477 5.48477 2.5 9.16667 2.5C12.8486 2.5 15.8333 5.48477 15.8333 9.16667Z', stroke: '#404040', "stroke-width": '1.5', "stroke-linecap": 'round', "stroke-linejoin": 'round' }))), isShowingClearButton && (h("button", { key: '992cf037b6b75200c64c21809915b5ce6f970f5c', type: 'button', class: 'searchcraft-input-clear-button', onClick: this.handleClearInput }, h("svg", { key: 'f09a5f2c1007cc11d89b2df06ec189d923bc634f', class: 'searchcraft-input-clear-icon', viewBox: '0 0 22 22', fill: 'none', xmlns: 'http://www.w3.org/2000/svg', "aria-labelledby": 'icon-title' }, h("title", { key: '92bd5162ae636aaf6c8051959ff16cd26ee98660', id: 'icon-title' }, "Searchcraft Clear Input Icon Light"), h("path", { key: '9b5a8a4113a3162035d48895f0facf6f6045f266', d: 'M14 8L8 14M8 8L14 14M21 11C21 16.5228 16.5228 21 11 21C5.47715 21 1 16.5228 1 11C1 5.47715 5.47715 1 11 1C16.5228 1 21 5.47715 21 11Z', stroke: 'black', "stroke-width": '1.5', "stroke-linecap": 'round', "stroke-linejoin": 'round' }))))))));
167
+ }, placeholder: this.placeholderValue, style: validatedCustomStyles, type: 'text', value: this.inputValue }), h("div", { key: '9c215722544c132dc9e302c522d0f7c36c205b74', class: 'searchcraft-input-search-icon-wrapper' }, h("svg", { key: '4f6dfc2a89a888eafcd4aee6d02e40635c2fb78a', class: 'searchcraft-input-search-icon', viewBox: '0 0 20 20', fill: 'none', xmlns: 'http://www.w3.org/2000/svg', "aria-labelledby": 'searchcraft-title' }, h("title", { key: '6be4ba3b739aeebd27e2ba0f3b7766c1ac6cf2e3', id: 'searchcraft-title' }, "Searchcraft Search Icon Light"), h("path", { key: 'd62f785b5bb2f261a3dbf8e4d91f2db405e36dc4', d: 'M17.5 17.5L13.875 13.875M15.8333 9.16667C15.8333 12.8486 12.8486 15.8333 9.16667 15.8333C5.48477 15.8333 2.5 12.8486 2.5 9.16667C2.5 5.48477 5.48477 2.5 9.16667 2.5C12.8486 2.5 15.8333 5.48477 15.8333 9.16667Z', stroke: '#404040', "stroke-width": '1.5', "stroke-linecap": 'round', "stroke-linejoin": 'round' }))), isShowingClearButton && (h("button", { key: '8ca5193982311991eb0bf30a200b5bee25688c54', type: 'button', class: 'searchcraft-input-clear-button', onClick: this.handleClearInput }, h("svg", { key: 'a929aee41d677e850a2568ee08a047f35711b4bf', class: 'searchcraft-input-clear-icon', viewBox: '0 0 22 22', fill: 'none', xmlns: 'http://www.w3.org/2000/svg', "aria-labelledby": 'icon-title' }, h("title", { key: '60b50c641ab494c1e8f02f3e1fa19d0a41162859', id: 'icon-title' }, "Searchcraft Clear Input Icon Light"), h("path", { key: '6d47a20770f51f069efe06ee29c1451fd78de357', d: 'M14 8L8 14M8 8L14 14M21 11C21 16.5228 16.5228 21 11 21C5.47715 21 1 16.5228 1 11C1 5.47715 5.47715 1 11 1C16.5228 1 21 5.47715 21 11Z', stroke: 'black', "stroke-width": '1.5', "stroke-linecap": 'round', "stroke-linejoin": 'round' }))))))));
136
168
  }
137
169
  static get is() { return "searchcraft-input-form"; }
138
- static get originalStyleUrls() {
139
- return {
140
- "$": ["searchcraft-input-form.module.scss"]
141
- };
142
- }
143
- static get styleUrls() {
144
- return {
145
- "$": ["searchcraft-input-form.module.css"]
146
- };
147
- }
148
170
  static get properties() {
149
171
  return {
150
172
  "config": {
@@ -152,7 +174,7 @@ export class SearchcraftInput {
152
174
  "mutable": false,
153
175
  "complexType": {
154
176
  "original": "SearchcraftConfig | undefined",
155
- "resolved": "SearchcraftConfig",
177
+ "resolved": "SearchcraftConfig | undefined",
156
178
  "references": {
157
179
  "SearchcraftConfig": {
158
180
  "location": "import",
@@ -215,7 +237,7 @@ export class SearchcraftInput {
215
237
  "mutable": false,
216
238
  "complexType": {
217
239
  "original": "string | undefined",
218
- "resolved": "string",
240
+ "resolved": "string | undefined",
219
241
  "references": {}
220
242
  },
221
243
  "required": false,
@@ -234,7 +256,7 @@ export class SearchcraftInput {
234
256
  "mutable": false,
235
257
  "complexType": {
236
258
  "original": "string | undefined",
237
- "resolved": "string",
259
+ "resolved": "string | undefined",
238
260
  "references": {}
239
261
  },
240
262
  "required": false,
@@ -1 +1 @@
1
- {"version":3,"file":"searchcraft-input-form.js","sourceRoot":"","sources":["../../../../src/components/searchcraft-input-form/searchcraft-input-form.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Prop,\n State,\n Event,\n type EventEmitter,\n Watch,\n} from '@stencil/core';\n\nimport { type SearchcraftConfig, SearchcraftCore } from '@searchcraft/core';\nimport packageJson from '../../../package.json';\n\nimport { parseCustomStyles } from '@utils';\nimport { useSearchcraftStore } from '@provider/store';\nimport classNames from 'classnames';\n\nexport interface ScInputCustomEvent<T> extends CustomEvent<T> {\n detail: T;\n target: HTMLSearchcraftInputFormElement;\n}\n\n/**\n * This web component provides a user-friendly interface for querying an indexed dataset, enabling users to easily search large collections of data.\n * It abstracts the complexities of index-based searching, making it accessible to users of all technical levels.\n *\n * ## Usage\n * ```html\n * <!-- index.html -->\n * <searchcraft-input-form placeholder-value=\"Search here\" />\n * ```\n *\n * ```js\n * // index.js\n * const searchInputForm = document.querySelector('searchcraft-input-form');\n *\n * seardchInputForm.config = {\n * index: [],\n * readKey: '',\n * endpointUrl: '',\n * };\n *\n * searchForm.addEventListener('querySubmit', (event) => {\n * console.log('Query submitted', event.detail);\n * });\n * ```\n */\n@Component({\n tag: 'searchcraft-input-form',\n styleUrl: 'searchcraft-input-form.module.scss',\n shadow: false,\n})\nexport class SearchcraftInput {\n /**\n * The Searchcraft config object.\n */\n @Prop() config: SearchcraftConfig | undefined;\n /**\n * Whether or not to automatically submit the search term when the input changes.\n */\n @Prop() autoSearch = true;\n /**\n * Where to place the search button.\n */\n @Prop() buttonPlacement: 'left' | 'right' | 'none' = 'none';\n /**\n * The label for the submit button.\n */\n @Prop() buttonLabel: string | undefined;\n /**\n * The label rendered above the input.\n */\n @Prop() inputLabel: string | undefined;\n /**\n * A custom styles object to be applied to the input element.\n */\n @Prop() customStyles: string | Record<string, string> = {};\n /**\n * The input element's placeholder value.\n */\n @Prop() placeholderValue = 'Enter Search';\n /**\n * The starting value of the input element.\n */\n @Prop() searchTerm = '';\n /**\n * When the input is cleared.\n */\n @Event() inputCleared: EventEmitter<void>;\n /**\n * When no results are returned.\n */\n @Event() noResultsReceived: EventEmitter<void>;\n /**\n * When the input becomes focused.\n */\n @Event() inputFocus: EventEmitter<void>;\n /**\n * When the input becomes unfocused.\n */\n @Event() inputBlur: EventEmitter<void>;\n /**\n * Event emitted when input initializes.\n */\n @Event() inputInit: EventEmitter<void>;\n /**\n * Event emitted when a query has been submitted.\n */\n @Event() querySubmit: EventEmitter<string>;\n\n @State() inputValue = this.searchTerm;\n @State() error = false;\n @State() isSearchcraftInitialized = false;\n\n private searchStore = useSearchcraftStore.getState();\n\n init() {\n if (this.config && !this.isSearchcraftInitialized) {\n const searchcraft = new SearchcraftCore(this.config, {\n sdkName: packageJson.name,\n sdkVersion: packageJson.version,\n });\n this.searchStore.initialize(searchcraft, true);\n this.isSearchcraftInitialized = true;\n this.inputInit.emit();\n }\n }\n\n componentDidLoad() {\n this.init();\n }\n\n @Watch('config')\n onConfigChange() {\n this.init();\n }\n\n handleOnInput = (event: Event) => {\n const input = event.target as HTMLInputElement;\n this.inputValue = input.value;\n\n if (input.value.trim() === '') {\n this.inputCleared.emit();\n this.searchTerm = '';\n this.searchStore.setQuery('');\n this.searchStore.setSearchResults(null);\n return;\n }\n\n if (!this.autoSearch) {\n return;\n }\n\n this.performSearch(input.value);\n };\n\n private performSearch = async (value: string) => {\n if (value === useSearchcraftStore.getState().query) {\n return;\n }\n\n this.searchTerm = value.trim();\n this.error = false;\n this.searchStore.setQuery(this.searchTerm);\n this.querySubmit.emit(this.searchTerm);\n\n try {\n await this.searchStore.search();\n } catch (error) {\n this.error = true;\n this.inputCleared.emit();\n }\n };\n\n handleClearInput = () => {\n this.inputValue = '';\n this.searchTerm = '';\n this.searchStore.setQuery('');\n this.searchStore.setSearchResults(null);\n this.error = false;\n\n if (this.inputCleared) {\n this.inputCleared.emit();\n }\n };\n\n handleFormSubmit = async (event: Event) => {\n event.preventDefault();\n await this.performSearch(this.searchTerm);\n };\n\n render() {\n const validatedCustomStyles = parseCustomStyles(this.customStyles);\n\n const isShowingClearButton = this.inputValue.length > 0;\n\n const inputGridClassNames = classNames('searchcraft-input-grid', {\n 'searchcraft-input-grid-buttonLeft': this.buttonPlacement === 'left',\n 'searchcraft-input-grid-buttonRight': this.buttonPlacement === 'right',\n 'searchcraft-input-grid-buttonNone': this.buttonPlacement === 'none',\n });\n\n const shouldHaveVerticalGap = this.inputLabel || this.error;\n const inputGridStyles = {\n gap: shouldHaveVerticalGap ? '4px 8px' : '0px 8px',\n };\n\n return (\n <form class='searchcraft-input-form' onSubmit={this.handleFormSubmit}>\n <div class={inputGridClassNames} style={inputGridStyles}>\n <div class='searchcraft-input-button-wrapper'>\n <searchcraft-button\n onButtonClick={this.handleFormSubmit}\n label={this.buttonLabel}\n />\n </div>\n {this.inputLabel && (\n <div class='searchcraft-input-label-wrapper'>\n <searchcraft-input-label label={this.inputLabel} />\n </div>\n )}\n {this.error && (\n <div class='searchcraft-input-error-wrapper'>\n <searchcraft-error-message errorMessage='Something went wrong.' />\n </div>\n )}\n <div class='searchcraft-input-wrapper'>\n <input\n autoComplete='off'\n class='searchcraft-input'\n onFocus={() => this.inputFocus.emit()}\n onBlur={() => this.inputBlur.emit()}\n onInput={(event) => {\n this.handleOnInput(event);\n }}\n placeholder={this.placeholderValue}\n style={validatedCustomStyles}\n type='text'\n value={this.inputValue}\n />\n <div class='searchcraft-input-search-icon-wrapper'>\n <svg\n class='searchcraft-input-search-icon'\n viewBox='0 0 20 20'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n aria-labelledby='searchcraft-title'\n >\n <title id='searchcraft-title'>\n Searchcraft Search Icon Light\n </title>\n <path\n d='M17.5 17.5L13.875 13.875M15.8333 9.16667C15.8333 12.8486 12.8486 15.8333 9.16667 15.8333C5.48477 15.8333 2.5 12.8486 2.5 9.16667C2.5 5.48477 5.48477 2.5 9.16667 2.5C12.8486 2.5 15.8333 5.48477 15.8333 9.16667Z'\n stroke='#404040'\n stroke-width='1.5'\n stroke-linecap='round'\n stroke-linejoin='round'\n />\n </svg>\n </div>\n {isShowingClearButton && (\n <button\n type='button'\n class='searchcraft-input-clear-button'\n onClick={this.handleClearInput}\n >\n <svg\n class='searchcraft-input-clear-icon'\n viewBox='0 0 22 22'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n aria-labelledby='icon-title'\n >\n <title id='icon-title'>\n Searchcraft Clear Input Icon Light\n </title>\n <path\n d='M14 8L8 14M8 8L14 14M21 11C21 16.5228 16.5228 21 11 21C5.47715 21 1 16.5228 1 11C1 5.47715 5.47715 1 11 1C16.5228 1 21 5.47715 21 11Z'\n stroke='black'\n stroke-width='1.5'\n stroke-linecap='round'\n stroke-linejoin='round'\n />\n </svg>\n </button>\n )}\n </div>\n </div>\n </form>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"searchcraft-input-form.js","sourceRoot":"","sources":["../../../../src/components/searchcraft-input-form/searchcraft-input-form.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Prop,\n State,\n Event,\n type EventEmitter,\n Watch,\n} from '@stencil/core';\n\nimport { type SearchcraftConfig, SearchcraftCore } from '@searchcraft/core';\nimport packageJson from '../../../package.json';\n\nimport { parseCustomStyles } from '@utils';\nimport { useSearchcraftStore } from '@provider/store';\nimport classNames from 'classnames';\n\n/**\n * This web component provides a user-friendly interface for querying an indexed dataset, enabling users to easily search large collections of data.\n * It abstracts the complexities of index-based searching, making it accessible to users of all technical levels.\n *\n * ## Usage\n * ```html\n * <!-- index.html -->\n * <searchcraft-input-form placeholder-value=\"Search here\" />\n * ```\n *\n * ```js\n * // index.js\n * const searchInputForm = document.querySelector('searchcraft-input-form');\n *\n * seardchInputForm.config = {\n * index: [],\n * readKey: '',\n * endpointUrl: '',\n * };\n *\n * searchForm.addEventListener('querySubmit', (event) => {\n * console.log('Query submitted', event.detail);\n * });\n * ```\n */\n@Component({\n tag: 'searchcraft-input-form',\n shadow: false,\n})\nexport class SearchcraftInput {\n /**\n * The Searchcraft config object.\n */\n @Prop() config: SearchcraftConfig | undefined;\n /**\n * Whether or not to automatically submit the search term when the input changes.\n */\n @Prop() autoSearch = true;\n /**\n * Where to place the search button.\n */\n @Prop() buttonPlacement: 'left' | 'right' | 'none' = 'none';\n /**\n * The label for the submit button.\n */\n @Prop() buttonLabel: string | undefined;\n /**\n * The label rendered above the input.\n */\n @Prop() inputLabel: string | undefined;\n /**\n * A custom styles object to be applied to the input element.\n */\n @Prop() customStyles: string | Record<string, string> = {};\n /**\n * The input element's placeholder value.\n */\n @Prop() placeholderValue = 'Enter Search';\n /**\n * The starting value of the input element.\n */\n @Prop() searchTerm = '';\n /**\n * When the input is cleared.\n */\n @Event() inputCleared?: EventEmitter<void>;\n /**\n * When no results are returned.\n */\n @Event() noResultsReceived?: EventEmitter<void>;\n /**\n * When the input becomes focused.\n */\n @Event() inputFocus?: EventEmitter<void>;\n /**\n * When the input becomes unfocused.\n */\n @Event() inputBlur?: EventEmitter<void>;\n /**\n * Event emitted when input initializes.\n */\n @Event() inputInit?: EventEmitter<void>;\n /**\n * Event emitted when a query has been submitted.\n */\n @Event() querySubmit?: EventEmitter<string>;\n\n @State() inputValue = this.searchTerm;\n @State() error = false;\n @State() isSearchcraftInitialized = false;\n\n private searchStore = useSearchcraftStore.getState();\n\n init() {\n if (this.config && !this.isSearchcraftInitialized) {\n const searchcraft = new SearchcraftCore(this.config, {\n sdkName: packageJson.name,\n sdkVersion: packageJson.version,\n });\n this.searchStore.initialize(searchcraft, true);\n this.isSearchcraftInitialized = true;\n this.inputInit?.emit();\n }\n }\n\n componentDidLoad() {\n this.init();\n }\n\n @Watch('config')\n onConfigChange() {\n this.init();\n }\n\n handleOnInput = (event: Event) => {\n const input = event.target as HTMLInputElement;\n this.inputValue = input.value;\n\n if (input.value.trim() === '') {\n this.inputCleared?.emit();\n this.searchTerm = '';\n this.searchStore.setQuery('');\n this.searchStore.setSearchResults(null);\n return;\n }\n\n if (!this.autoSearch) {\n return;\n }\n\n this.performSearch(input.value);\n };\n\n private performSearch = async (value: string) => {\n if (value === useSearchcraftStore.getState().query) {\n return;\n }\n\n this.searchTerm = value.trim();\n this.error = false;\n this.searchStore.setQuery(this.searchTerm);\n this.querySubmit?.emit(this.searchTerm);\n\n try {\n await this.searchStore.search();\n } catch (error) {\n this.error = true;\n this.inputCleared?.emit();\n }\n };\n\n handleClearInput = () => {\n this.inputValue = '';\n this.searchTerm = '';\n this.searchStore.setQuery('');\n this.searchStore.setSearchResults(null);\n this.error = false;\n\n this.inputCleared?.emit();\n };\n\n handleFormSubmit = async (event: Event) => {\n event.preventDefault();\n await this.performSearch(this.searchTerm);\n };\n\n render() {\n const validatedCustomStyles = parseCustomStyles(this.customStyles);\n\n const isShowingClearButton = this.inputValue.length > 0;\n\n const inputGridClassNames = classNames('searchcraft-input-grid', {\n 'searchcraft-input-grid-buttonLeft': this.buttonPlacement === 'left',\n 'searchcraft-input-grid-buttonRight': this.buttonPlacement === 'right',\n 'searchcraft-input-grid-buttonNone': this.buttonPlacement === 'none',\n });\n\n const shouldHaveVerticalGap = this.inputLabel || this.error;\n const inputGridStyles = {\n gap: shouldHaveVerticalGap ? '4px 8px' : '0px 8px',\n };\n\n return (\n <form class='searchcraft-input-form' onSubmit={this.handleFormSubmit}>\n <div class={inputGridClassNames} style={inputGridStyles}>\n <div class='searchcraft-input-button-wrapper'>\n <searchcraft-button\n onButtonClick={this.handleFormSubmit}\n label={this.buttonLabel}\n />\n </div>\n {this.inputLabel && (\n <div class='searchcraft-input-label-wrapper'>\n <searchcraft-input-label label={this.inputLabel} />\n </div>\n )}\n {this.error && (\n <div class='searchcraft-input-error-wrapper'>\n <searchcraft-error-message errorMessage='Something went wrong.' />\n </div>\n )}\n <div class='searchcraft-input-wrapper'>\n <input\n autoComplete='off'\n class='searchcraft-input'\n onFocus={() => this.inputFocus?.emit()}\n onBlur={() => this.inputBlur?.emit()}\n onInput={(event) => {\n this.handleOnInput(event);\n }}\n placeholder={this.placeholderValue}\n style={validatedCustomStyles}\n type='text'\n value={this.inputValue}\n />\n <div class='searchcraft-input-search-icon-wrapper'>\n <svg\n class='searchcraft-input-search-icon'\n viewBox='0 0 20 20'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n aria-labelledby='searchcraft-title'\n >\n <title id='searchcraft-title'>\n Searchcraft Search Icon Light\n </title>\n <path\n d='M17.5 17.5L13.875 13.875M15.8333 9.16667C15.8333 12.8486 12.8486 15.8333 9.16667 15.8333C5.48477 15.8333 2.5 12.8486 2.5 9.16667C2.5 5.48477 5.48477 2.5 9.16667 2.5C12.8486 2.5 15.8333 5.48477 15.8333 9.16667Z'\n stroke='#404040'\n stroke-width='1.5'\n stroke-linecap='round'\n stroke-linejoin='round'\n />\n </svg>\n </div>\n {isShowingClearButton && (\n <button\n type='button'\n class='searchcraft-input-clear-button'\n onClick={this.handleClearInput}\n >\n <svg\n class='searchcraft-input-clear-icon'\n viewBox='0 0 22 22'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n aria-labelledby='icon-title'\n >\n <title id='icon-title'>\n Searchcraft Clear Input Icon Light\n </title>\n <path\n d='M14 8L8 14M8 8L14 14M21 11C21 16.5228 16.5228 21 11 21C5.47715 21 1 16.5228 1 11C1 5.47715 5.47715 1 11 1C16.5228 1 21 5.47715 21 11Z'\n stroke='black'\n stroke-width='1.5'\n stroke-linecap='round'\n stroke-linejoin='round'\n />\n </svg>\n </button>\n )}\n </div>\n </div>\n </form>\n );\n }\n}\n"]}
@@ -10,34 +10,23 @@ import classNames from "classnames";
10
10
  * ```
11
11
  */
12
12
  export class SearchcraftInputLabel {
13
- constructor() {
14
- /**
15
- * The classname applied to the label element.
16
- */
17
- this.inputLabelClassName = '';
18
- }
13
+ /**
14
+ * The classname applied to the label element.
15
+ */
16
+ inputLabelClassName = '';
17
+ label = '';
19
18
  render() {
20
- return (h("label", { key: '4f913c1d9027ff781725a01e71e241cb5767eadb', class: classNames('searchcraft-input-label', this.inputLabelClassName), htmlFor: 'searchcraft-input-id' }, this.label));
19
+ return (h("label", { key: '9c71dc7429d7289ed59e7effacb91e040a9ac6a1', class: classNames('searchcraft-input-label', this.inputLabelClassName), htmlFor: 'searchcraft-input-id' }, this.label));
21
20
  }
22
21
  static get is() { return "searchcraft-input-label"; }
23
- static get originalStyleUrls() {
24
- return {
25
- "$": ["searchcraft-input-label.module.scss"]
26
- };
27
- }
28
- static get styleUrls() {
29
- return {
30
- "$": ["searchcraft-input-label.module.css"]
31
- };
32
- }
33
22
  static get properties() {
34
23
  return {
35
24
  "inputLabelClassName": {
36
25
  "type": "string",
37
26
  "mutable": false,
38
27
  "complexType": {
39
- "original": "string",
40
- "resolved": "string",
28
+ "original": "string | undefined",
29
+ "resolved": "string | undefined",
41
30
  "references": {}
42
31
  },
43
32
  "required": false,
@@ -69,7 +58,8 @@ export class SearchcraftInputLabel {
69
58
  "getter": false,
70
59
  "setter": false,
71
60
  "attribute": "label",
72
- "reflect": false
61
+ "reflect": false,
62
+ "defaultValue": "''"
73
63
  }
74
64
  };
75
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"searchcraft-input-label.js","sourceRoot":"","sources":["../../../../src/components/searchcraft-input-label/searchcraft-input-label.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC;;;;;;;;GAQG;AAMH,MAAM,OAAO,qBAAqB;IALlC;QAME;;WAEG;QACK,wBAAmB,GAAI,EAAE,CAAC;KAanC;IAVC,MAAM;QACJ,OAAO,CACL,8DACE,KAAK,EAAE,UAAU,CAAC,yBAAyB,EAAE,IAAI,CAAC,mBAAmB,CAAC,EACtE,OAAO,EAAC,sBAAsB,IAE7B,IAAI,CAAC,KAAK,CACL,CACT,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, h } from '@stencil/core';\nimport classNames from 'classnames';\n\n/**\n * This web component serves as the input label for the searchcraft-input-form component.\n *\n * ## Usage\n * ```html\n * <!-- index.html -->\n * <searchcraft-input-label label=\"Search\" />\n * ```\n */\n@Component({\n tag: 'searchcraft-input-label',\n styleUrl: 'searchcraft-input-label.module.scss',\n shadow: false,\n})\nexport class SearchcraftInputLabel {\n /**\n * The classname applied to the label element.\n */\n @Prop() inputLabelClassName? = '';\n @Prop() label: string;\n\n render() {\n return (\n <label\n class={classNames('searchcraft-input-label', this.inputLabelClassName)}\n htmlFor='searchcraft-input-id'\n >\n {this.label}\n </label>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"searchcraft-input-label.js","sourceRoot":"","sources":["../../../../src/components/searchcraft-input-label/searchcraft-input-label.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC;;;;;;;;GAQG;AAKH,MAAM,OAAO,qBAAqB;IAChC;;OAEG;IACK,mBAAmB,GAAI,EAAE,CAAC;IAC1B,KAAK,GAAG,EAAE,CAAC;IAEnB,MAAM;QACJ,OAAO,CACL,8DACE,KAAK,EAAE,UAAU,CAAC,yBAAyB,EAAE,IAAI,CAAC,mBAAmB,CAAC,EACtE,OAAO,EAAC,sBAAsB,IAE7B,IAAI,CAAC,KAAK,CACL,CACT,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, h } from '@stencil/core';\nimport classNames from 'classnames';\n\n/**\n * This web component serves as the input label for the searchcraft-input-form component.\n *\n * ## Usage\n * ```html\n * <!-- index.html -->\n * <searchcraft-input-label label=\"Search\" />\n * ```\n */\n@Component({\n tag: 'searchcraft-input-label',\n shadow: false,\n})\nexport class SearchcraftInputLabel {\n /**\n * The classname applied to the label element.\n */\n @Prop() inputLabelClassName? = '';\n @Prop() label = '';\n\n render() {\n return (\n <label\n class={classNames('searchcraft-input-label', this.inputLabelClassName)}\n htmlFor='searchcraft-input-id'\n >\n {this.label}\n </label>\n );\n }\n}\n"]}
@@ -8,18 +8,8 @@ export class SearchcraftPopoverButton {
8
8
  useSearchcraftStore.getState().setPopoverVisibility(true);
9
9
  }
10
10
  render() {
11
- return (h("button", { key: '7885ca44b5ce619d572194d60c3b7e9d9f6666be', type: 'button', onClick: this.handleOnClick.bind(this) }, h("slot", { key: '0a8dc506eadbc725e3ed4c7c6987e02dfcecc229' })));
11
+ return (h("button", { key: '3907a514a85a79c320f529840fda06474721871a', type: 'button', onClick: this.handleOnClick.bind(this) }, h("slot", { key: '91bedc41efb5c17a774eab7a95e0abac39497408' })));
12
12
  }
13
13
  static get is() { return "searchcraft-popover-button"; }
14
- static get originalStyleUrls() {
15
- return {
16
- "$": ["searchcraft-popover-button.module.scss"]
17
- };
18
- }
19
- static get styleUrls() {
20
- return {
21
- "$": ["searchcraft-popover-button.module.css"]
22
- };
23
- }
24
14
  }
25
15
  //# sourceMappingURL=searchcraft-popover-button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchcraft-popover-button.js","sourceRoot":"","sources":["../../../../src/components/searchcraft-popover-button/searchcraft-popover-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAE7C;;GAEG;AAMH,MAAM,OAAO,wBAAwB;IACnC,aAAa;QACX,mBAAmB,CAAC,QAAQ,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM;QACJ,OAAO,CACL,+DAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1D,8DAAQ,CACD,CACV,CAAC;IACJ,CAAC;;;;;;;;CACF","sourcesContent":["import { useSearchcraftStore } from '@provider/store';\nimport { Component, h } from '@stencil/core';\n\n/**\n * Renders a button which, when clicked, turns on popover visibility.\n */\n@Component({\n tag: 'searchcraft-popover-button',\n styleUrl: 'searchcraft-popover-button.module.scss',\n shadow: false,\n})\nexport class SearchcraftPopoverButton {\n handleOnClick() {\n useSearchcraftStore.getState().setPopoverVisibility(true);\n }\n\n render() {\n return (\n <button type='button' onClick={this.handleOnClick.bind(this)}>\n <slot />\n </button>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"searchcraft-popover-button.js","sourceRoot":"","sources":["../../../../src/components/searchcraft-popover-button/searchcraft-popover-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAE7C;;GAEG;AAKH,MAAM,OAAO,wBAAwB;IACnC,aAAa;QACX,mBAAmB,CAAC,QAAQ,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM;QACJ,OAAO,CACL,+DAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1D,8DAAQ,CACD,CACV,CAAC;IACJ,CAAC;;CACF","sourcesContent":["import { useSearchcraftStore } from '@provider/store';\nimport { Component, h } from '@stencil/core';\n\n/**\n * Renders a button which, when clicked, turns on popover visibility.\n */\n@Component({\n tag: 'searchcraft-popover-button',\n shadow: false,\n})\nexport class SearchcraftPopoverButton {\n handleOnClick() {\n useSearchcraftStore.getState().setPopoverVisibility(true);\n }\n\n render() {\n return (\n <button type='button' onClick={this.handleOnClick.bind(this)}>\n <slot />\n </button>\n );\n }\n}\n"]}