@searchcraft/javascript-sdk 0.5.3 → 0.7.0

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 (326) hide show
  1. package/README.md +53 -55
  2. package/dist/cjs/{index-b76bece0.js → index-d4b4a45e.js} +234 -130
  3. package/dist/cjs/index-d4b4a45e.js.map +1 -0
  4. package/dist/cjs/index.cjs.js +4 -4
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/searchcraft-base-search-result.cjs.entry.js +15 -19
  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 +31 -17
  9. package/dist/cjs/searchcraft-base-search-results.cjs.entry.js.map +1 -1
  10. package/dist/cjs/searchcraft-button_3.cjs.entry.js +72 -0
  11. package/dist/cjs/searchcraft-button_3.cjs.entry.js.map +1 -0
  12. package/dist/cjs/searchcraft-facet-list_3.cjs.entry.js +163 -35
  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 -10
  15. package/dist/cjs/searchcraft-filter-panel.cjs.entry.js.map +1 -1
  16. package/dist/cjs/searchcraft-input-form_2.cjs.entry.js +238 -0
  17. package/dist/cjs/searchcraft-input-form_2.cjs.entry.js.map +1 -0
  18. package/dist/cjs/searchcraft-javascript-sdk.cjs.js +3 -3
  19. package/dist/cjs/searchcraft-javascript-sdk.cjs.js.map +1 -1
  20. package/dist/cjs/searchcraft-popover-button.cjs.entry.js +26 -0
  21. package/dist/cjs/searchcraft-popover-button.cjs.entry.js.map +1 -0
  22. package/dist/cjs/searchcraft-popover-form.cjs.entry.js +206 -5
  23. package/dist/cjs/searchcraft-popover-form.cjs.entry.js.map +1 -1
  24. package/dist/cjs/searchcraft-popover-list-item.cjs.entry.js +26 -0
  25. package/dist/cjs/searchcraft-popover-list-item.cjs.entry.js.map +1 -0
  26. package/dist/cjs/searchcraft-results-info.cjs.entry.js +5 -5
  27. package/dist/cjs/searchcraft-results-info.cjs.entry.js.map +1 -1
  28. package/dist/cjs/store-abe47006.js +1479 -0
  29. package/dist/cjs/store-abe47006.js.map +1 -0
  30. package/dist/cjs/styles-7b2d06f2.js +28 -0
  31. package/dist/cjs/styles-7b2d06f2.js.map +1 -0
  32. package/dist/cjs/units-fe4d8083.js +88 -0
  33. package/dist/cjs/units-fe4d8083.js.map +1 -0
  34. package/dist/collection/collection-manifest.json +3 -2
  35. package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.js +65 -32
  36. package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.js.map +1 -1
  37. package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.module.css +54 -4
  38. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.js +86 -19
  39. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.js.map +1 -1
  40. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.module.css +52 -2
  41. package/dist/collection/components/searchcraft-button/searchcraft-button.js +32 -11
  42. package/dist/collection/components/searchcraft-button/searchcraft-button.js.map +1 -1
  43. package/dist/collection/components/searchcraft-button/searchcraft-button.module.css +52 -2
  44. package/dist/collection/components/searchcraft-error-message/searchcraft-error-message.js +13 -5
  45. package/dist/collection/components/searchcraft-error-message/searchcraft-error-message.js.map +1 -1
  46. package/dist/collection/components/searchcraft-error-message/searchcraft-error-message.module.css +52 -2
  47. package/dist/collection/components/searchcraft-facet-list/searchcraft-facet-list.js +27 -14
  48. package/dist/collection/components/searchcraft-facet-list/searchcraft-facet-list.js.map +1 -1
  49. package/dist/collection/components/searchcraft-facet-list/searchcraft-facet-list.module.css +52 -2
  50. package/dist/collection/components/searchcraft-filter-panel/searchcraft-filter-panel.js +19 -7
  51. package/dist/collection/components/searchcraft-filter-panel/searchcraft-filter-panel.js.map +1 -1
  52. package/dist/collection/components/searchcraft-filter-panel/searchcraft-filter-panel.module.css +52 -2
  53. package/dist/collection/components/searchcraft-input-form/searchcraft-input-form.js +106 -61
  54. package/dist/collection/components/searchcraft-input-form/searchcraft-input-form.js.map +1 -1
  55. package/dist/collection/components/searchcraft-input-form/searchcraft-input-form.module.css +56 -6
  56. package/dist/collection/components/searchcraft-input-label/searchcraft-input-label.js +19 -7
  57. package/dist/collection/components/searchcraft-input-label/searchcraft-input-label.js.map +1 -1
  58. package/dist/collection/components/searchcraft-input-label/searchcraft-input-label.module.css +52 -2
  59. package/dist/collection/components/searchcraft-popover-button/searchcraft-popover-button.js +25 -0
  60. package/dist/collection/components/searchcraft-popover-button/searchcraft-popover-button.js.map +1 -0
  61. package/dist/collection/components/searchcraft-popover-form/searchcraft-popover-form.js +299 -9
  62. package/dist/collection/components/searchcraft-popover-form/searchcraft-popover-form.js.map +1 -1
  63. package/dist/collection/components/searchcraft-popover-form/searchcraft-popover-form.module.css +322 -0
  64. package/dist/collection/components/searchcraft-popover-list-item/searchcraft-popover-list-item.js +143 -0
  65. package/dist/collection/components/searchcraft-popover-list-item/searchcraft-popover-list-item.js.map +1 -0
  66. package/dist/collection/components/searchcraft-popover-list-item/searchcraft-popover-list-item.module.css +209 -0
  67. package/dist/collection/components/searchcraft-popover-list-view/searchcraft-popover-list-view.js +50 -9
  68. package/dist/collection/components/searchcraft-popover-list-view/searchcraft-popover-list-view.js.map +1 -1
  69. package/dist/collection/components/searchcraft-results-info/searchcraft-results-info.js +11 -1
  70. package/dist/collection/components/searchcraft-results-info/searchcraft-results-info.js.map +1 -1
  71. package/dist/collection/components/searchcraft-results-info/searchcraft-results-info.module.css +53 -3
  72. package/dist/collection/components/searchcraft-slider/searchcraft-slider.js +38 -15
  73. package/dist/collection/components/searchcraft-slider/searchcraft-slider.js.map +1 -1
  74. package/dist/collection/components/searchcraft-slider/searchcraft-slider.module.css +52 -2
  75. package/dist/collection/components/searchcraft-toggle-button/searchcraft-toggle-button.js +18 -10
  76. package/dist/collection/components/searchcraft-toggle-button/searchcraft-toggle-button.js.map +1 -1
  77. package/dist/collection/components/searchcraft-toggle-button/searchcraft-toggle-button.module.css +52 -2
  78. package/dist/collection/index.js +1 -1
  79. package/dist/collection/index.js.map +1 -1
  80. package/dist/collection/provider/store.js +14 -15
  81. package/dist/collection/provider/store.js.map +1 -1
  82. package/dist/collection/types/_shared.types.js +2 -0
  83. package/dist/collection/types/_shared.types.js.map +1 -0
  84. package/dist/collection/types/index.js +1 -0
  85. package/dist/collection/types/index.js.map +1 -1
  86. package/dist/collection/types/searchcraft-base-search-results.types.js.map +1 -1
  87. package/dist/collection/types/searchcraft-popover-form.types.js.map +1 -1
  88. package/dist/collection/utils/{utils.js → facets.js} +7 -105
  89. package/dist/collection/utils/facets.js.map +1 -0
  90. package/dist/collection/utils/index.js +4 -0
  91. package/dist/collection/utils/index.js.map +1 -0
  92. package/dist/collection/utils/styles.js +22 -0
  93. package/dist/collection/utils/styles.js.map +1 -0
  94. package/dist/collection/utils/units.js +83 -0
  95. package/dist/collection/utils/units.js.map +1 -0
  96. package/dist/components/index.js +7 -5
  97. package/dist/components/index.js.map +1 -1
  98. package/dist/components/p-01dc5b3b.js +1475 -0
  99. package/dist/components/p-01dc5b3b.js.map +1 -0
  100. package/dist/components/p-1ae87308.js +43 -0
  101. package/dist/components/p-1ae87308.js.map +1 -0
  102. package/dist/components/p-649654b5.js +268 -0
  103. package/dist/components/p-649654b5.js.map +1 -0
  104. package/dist/components/p-662cb490.js +67 -0
  105. package/dist/components/p-662cb490.js.map +1 -0
  106. package/dist/components/{p-e4846fa2.js → p-6cafd48d.js} +189 -112
  107. package/dist/components/p-6cafd48d.js.map +1 -0
  108. package/dist/components/p-755f491b.js +84 -0
  109. package/dist/components/p-755f491b.js.map +1 -0
  110. package/dist/components/p-87d1611b.js +97 -0
  111. package/dist/components/p-87d1611b.js.map +1 -0
  112. package/dist/components/p-c273e43d.js +40 -0
  113. package/dist/components/p-c273e43d.js.map +1 -0
  114. package/dist/components/p-cc9f8c61.js +109 -0
  115. package/dist/components/p-cc9f8c61.js.map +1 -0
  116. package/dist/components/p-cf096782.js +56 -0
  117. package/dist/components/p-cf096782.js.map +1 -0
  118. package/dist/components/p-d9551738.js +25 -0
  119. package/dist/components/p-d9551738.js.map +1 -0
  120. package/dist/components/p-da5b92ef.js +253 -0
  121. package/dist/components/p-da5b92ef.js.map +1 -0
  122. package/dist/components/p-e1cf5f9d.js +54 -0
  123. package/dist/components/p-e1cf5f9d.js.map +1 -0
  124. package/dist/components/p-f5a06210.js +34 -0
  125. package/dist/components/p-f5a06210.js.map +1 -0
  126. package/dist/components/searchcraft-base-search-result.js +1 -1
  127. package/dist/components/searchcraft-base-search-results.js +25 -11
  128. package/dist/components/searchcraft-base-search-results.js.map +1 -1
  129. package/dist/components/searchcraft-button.js +1 -1
  130. package/dist/components/searchcraft-error-message.js +1 -1
  131. package/dist/components/searchcraft-facet-list.js +1 -1
  132. package/dist/components/searchcraft-filter-panel.js +13 -12
  133. package/dist/components/searchcraft-filter-panel.js.map +1 -1
  134. package/dist/components/searchcraft-input-form.js +1 -241
  135. package/dist/components/searchcraft-input-form.js.map +1 -1
  136. package/dist/components/searchcraft-input-label.js +1 -1
  137. package/dist/components/searchcraft-popover-button.d.ts +11 -0
  138. package/dist/components/searchcraft-popover-button.js +39 -0
  139. package/dist/components/searchcraft-popover-button.js.map +1 -0
  140. package/dist/components/searchcraft-popover-form.js +255 -8
  141. package/dist/components/searchcraft-popover-form.js.map +1 -1
  142. package/dist/components/searchcraft-popover-list-item.d.ts +11 -0
  143. package/dist/components/searchcraft-popover-list-item.js +8 -0
  144. package/dist/components/searchcraft-popover-list-item.js.map +1 -0
  145. package/dist/components/searchcraft-popover-list-view.js +1 -1
  146. package/dist/components/searchcraft-results-info.js +4 -4
  147. package/dist/components/searchcraft-results-info.js.map +1 -1
  148. package/dist/components/searchcraft-slider.js +1 -1
  149. package/dist/components/searchcraft-toggle-button.js +1 -1
  150. package/dist/esm/{index-be042742.js → index-56b713de.js} +234 -131
  151. package/dist/esm/index-56b713de.js.map +1 -0
  152. package/dist/esm/index.js +2 -2
  153. package/dist/esm/loader.js +3 -3
  154. package/dist/esm/searchcraft-base-search-result.entry.js +15 -19
  155. package/dist/esm/searchcraft-base-search-result.entry.js.map +1 -1
  156. package/dist/esm/searchcraft-base-search-results.entry.js +23 -9
  157. package/dist/esm/searchcraft-base-search-results.entry.js.map +1 -1
  158. package/dist/esm/searchcraft-button_3.entry.js +66 -0
  159. package/dist/esm/searchcraft-button_3.entry.js.map +1 -0
  160. package/dist/esm/searchcraft-facet-list_3.entry.js +161 -33
  161. package/dist/esm/searchcraft-facet-list_3.entry.js.map +1 -1
  162. package/dist/esm/searchcraft-filter-panel.entry.js +10 -9
  163. package/dist/esm/searchcraft-filter-panel.entry.js.map +1 -1
  164. package/dist/esm/searchcraft-input-form_2.entry.js +233 -0
  165. package/dist/esm/searchcraft-input-form_2.entry.js.map +1 -0
  166. package/dist/esm/searchcraft-javascript-sdk.js +4 -4
  167. package/dist/esm/searchcraft-javascript-sdk.js.map +1 -1
  168. package/dist/esm/searchcraft-popover-button.entry.js +22 -0
  169. package/dist/esm/searchcraft-popover-button.entry.js.map +1 -0
  170. package/dist/esm/searchcraft-popover-form.entry.js +206 -5
  171. package/dist/esm/searchcraft-popover-form.entry.js.map +1 -1
  172. package/dist/esm/searchcraft-popover-list-item.entry.js +22 -0
  173. package/dist/esm/searchcraft-popover-list-item.entry.js.map +1 -0
  174. package/dist/esm/searchcraft-results-info.entry.js +4 -4
  175. package/dist/esm/searchcraft-results-info.entry.js.map +1 -1
  176. package/dist/esm/store-712f0586.js +1475 -0
  177. package/dist/esm/store-712f0586.js.map +1 -0
  178. package/dist/esm/styles-961644ef.js +25 -0
  179. package/dist/esm/styles-961644ef.js.map +1 -0
  180. package/dist/esm/units-b6eba560.js +84 -0
  181. package/dist/esm/units-b6eba560.js.map +1 -0
  182. package/dist/searchcraft-javascript-sdk/index.esm.js +1 -1
  183. package/dist/searchcraft-javascript-sdk/p-01dc5b3b.js +11 -0
  184. package/dist/searchcraft-javascript-sdk/p-01dc5b3b.js.map +1 -0
  185. package/dist/searchcraft-javascript-sdk/p-117fcdd3.entry.js +2 -0
  186. package/dist/searchcraft-javascript-sdk/p-117fcdd3.entry.js.map +1 -0
  187. package/dist/searchcraft-javascript-sdk/p-129e6f2c.js +3 -0
  188. package/dist/searchcraft-javascript-sdk/p-129e6f2c.js.map +1 -0
  189. package/dist/searchcraft-javascript-sdk/p-27cb401c.entry.js +2 -0
  190. package/dist/searchcraft-javascript-sdk/p-27cb401c.entry.js.map +1 -0
  191. package/dist/searchcraft-javascript-sdk/p-4df4a29e.entry.js +2 -0
  192. package/dist/searchcraft-javascript-sdk/p-4df4a29e.entry.js.map +1 -0
  193. package/dist/searchcraft-javascript-sdk/p-54248dd8.entry.js +2 -0
  194. package/dist/searchcraft-javascript-sdk/p-54248dd8.entry.js.map +1 -0
  195. package/dist/searchcraft-javascript-sdk/p-69430dbf.entry.js +2 -0
  196. package/dist/searchcraft-javascript-sdk/p-69430dbf.entry.js.map +1 -0
  197. package/dist/searchcraft-javascript-sdk/p-755f491b.js +2 -0
  198. package/dist/searchcraft-javascript-sdk/p-755f491b.js.map +1 -0
  199. package/dist/searchcraft-javascript-sdk/p-a460755d.entry.js +2 -0
  200. package/dist/searchcraft-javascript-sdk/p-a460755d.entry.js.map +1 -0
  201. package/dist/searchcraft-javascript-sdk/p-bc2c4259.entry.js +2 -0
  202. package/dist/searchcraft-javascript-sdk/p-bc2c4259.entry.js.map +1 -0
  203. package/dist/searchcraft-javascript-sdk/p-caecdcda.entry.js +2 -0
  204. package/dist/searchcraft-javascript-sdk/p-caecdcda.entry.js.map +1 -0
  205. package/dist/searchcraft-javascript-sdk/p-d9551738.js +2 -0
  206. package/dist/searchcraft-javascript-sdk/p-d9551738.js.map +1 -0
  207. package/dist/searchcraft-javascript-sdk/p-f8129731.entry.js +2 -0
  208. package/dist/searchcraft-javascript-sdk/p-f8129731.entry.js.map +1 -0
  209. package/dist/searchcraft-javascript-sdk/p-f839b682.entry.js +2 -0
  210. package/dist/searchcraft-javascript-sdk/p-f839b682.entry.js.map +1 -0
  211. package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js +1 -1
  212. package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js.map +1 -1
  213. package/dist/types/components/searchcraft-base-search-result/searchcraft-base-search-result.d.ts +53 -0
  214. package/dist/types/components/searchcraft-base-search-results/searchcraft-base-search-results.d.ts +68 -0
  215. package/dist/types/components/searchcraft-button/searchcraft-button.d.ts +20 -0
  216. package/dist/types/components/searchcraft-error-message/searchcraft-error-message.d.ts +12 -0
  217. package/dist/types/components/searchcraft-facet-list/searchcraft-facet-list.d.ts +25 -0
  218. package/dist/types/components/searchcraft-filter-panel/searchcraft-filter-panel.d.ts +12 -0
  219. package/dist/types/components/searchcraft-input-form/searchcraft-input-form.d.ts +37 -13
  220. package/dist/types/components/searchcraft-input-label/searchcraft-input-label.d.ts +13 -1
  221. package/dist/types/components/searchcraft-popover-button/searchcraft-popover-button.d.ts +7 -0
  222. package/dist/types/components/searchcraft-popover-form/searchcraft-popover-form.d.ts +97 -1
  223. package/dist/types/components/searchcraft-popover-list-item/searchcraft-popover-list-item.d.ts +22 -0
  224. package/dist/types/components/searchcraft-popover-list-view/searchcraft-popover-list-view.d.ts +19 -3
  225. package/dist/types/components/searchcraft-results-info/searchcraft-results-info.d.ts +10 -0
  226. package/dist/types/components/searchcraft-slider/searchcraft-slider.d.ts +18 -0
  227. package/dist/types/components/searchcraft-toggle-button/searchcraft-toggle-button.d.ts +11 -3
  228. package/dist/types/components.d.ts +1023 -30
  229. package/dist/types/index.d.ts +1 -1
  230. package/dist/types/provider/store.d.ts +4 -2
  231. package/dist/types/types/_shared.types.d.ts +45 -0
  232. package/dist/types/types/index.d.ts +1 -0
  233. package/dist/types/types/searchcraft-base-search-results.types.d.ts +1 -8
  234. package/dist/types/types/searchcraft-popover-form.types.d.ts +2 -1
  235. package/dist/types/utils/facets.d.ts +6 -0
  236. package/dist/types/utils/index.d.ts +3 -0
  237. package/dist/types/utils/styles.d.ts +2 -0
  238. package/dist/types/utils/{utils.d.ts → units.d.ts} +12 -19
  239. package/package.json +8 -4
  240. package/dist/cjs/index-b76bece0.js.map +0 -1
  241. package/dist/cjs/searchcraft-button_2.cjs.entry.js +0 -51
  242. package/dist/cjs/searchcraft-button_2.cjs.entry.js.map +0 -1
  243. package/dist/cjs/searchcraft-error-message.cjs.entry.js +0 -23
  244. package/dist/cjs/searchcraft-error-message.cjs.entry.js.map +0 -1
  245. package/dist/cjs/searchcraft-input-form.cjs.entry.js +0 -202
  246. package/dist/cjs/searchcraft-input-form.cjs.entry.js.map +0 -1
  247. package/dist/cjs/searchcraft-popover-list-view.cjs.entry.js +0 -26
  248. package/dist/cjs/searchcraft-popover-list-view.cjs.entry.js.map +0 -1
  249. package/dist/cjs/searchcraft-popover-result.cjs.entry.js +0 -25
  250. package/dist/cjs/searchcraft-popover-result.cjs.entry.js.map +0 -1
  251. package/dist/cjs/store-943576b0.js +0 -956
  252. package/dist/cjs/store-943576b0.js.map +0 -1
  253. package/dist/cjs/utils-a17279a2.js +0 -226
  254. package/dist/cjs/utils-a17279a2.js.map +0 -1
  255. package/dist/collection/components/searchcraft-popover-result/searchcraft-popover-result.js +0 -21
  256. package/dist/collection/components/searchcraft-popover-result/searchcraft-popover-result.js.map +0 -1
  257. package/dist/collection/utils/utils.js.map +0 -1
  258. package/dist/components/p-16983367.js +0 -35
  259. package/dist/components/p-16983367.js.map +0 -1
  260. package/dist/components/p-42bfef5f.js +0 -151
  261. package/dist/components/p-42bfef5f.js.map +0 -1
  262. package/dist/components/p-5380505b.js +0 -99
  263. package/dist/components/p-5380505b.js.map +0 -1
  264. package/dist/components/p-672354c0.js +0 -38
  265. package/dist/components/p-672354c0.js.map +0 -1
  266. package/dist/components/p-9cb3d38b.js +0 -48
  267. package/dist/components/p-9cb3d38b.js.map +0 -1
  268. package/dist/components/p-a23d2994.js +0 -67
  269. package/dist/components/p-a23d2994.js.map +0 -1
  270. package/dist/components/p-ad4ebde0.js +0 -952
  271. package/dist/components/p-ad4ebde0.js.map +0 -1
  272. package/dist/components/p-bd5fede3.js +0 -41
  273. package/dist/components/p-bd5fede3.js.map +0 -1
  274. package/dist/components/p-cbdcf6df.js +0 -101
  275. package/dist/components/p-cbdcf6df.js.map +0 -1
  276. package/dist/components/p-e4846fa2.js.map +0 -1
  277. package/dist/components/p-f308d05d.js +0 -218
  278. package/dist/components/p-f308d05d.js.map +0 -1
  279. package/dist/components/searchcraft-popover-result.d.ts +0 -11
  280. package/dist/components/searchcraft-popover-result.js +0 -38
  281. package/dist/components/searchcraft-popover-result.js.map +0 -1
  282. package/dist/esm/index-be042742.js.map +0 -1
  283. package/dist/esm/searchcraft-button_2.entry.js +0 -46
  284. package/dist/esm/searchcraft-button_2.entry.js.map +0 -1
  285. package/dist/esm/searchcraft-error-message.entry.js +0 -19
  286. package/dist/esm/searchcraft-error-message.entry.js.map +0 -1
  287. package/dist/esm/searchcraft-input-form.entry.js +0 -198
  288. package/dist/esm/searchcraft-input-form.entry.js.map +0 -1
  289. package/dist/esm/searchcraft-popover-list-view.entry.js +0 -22
  290. package/dist/esm/searchcraft-popover-list-view.entry.js.map +0 -1
  291. package/dist/esm/searchcraft-popover-result.entry.js +0 -21
  292. package/dist/esm/searchcraft-popover-result.entry.js.map +0 -1
  293. package/dist/esm/store-eb4269d6.js +0 -952
  294. package/dist/esm/store-eb4269d6.js.map +0 -1
  295. package/dist/esm/utils-c2ce411f.js +0 -218
  296. package/dist/esm/utils-c2ce411f.js.map +0 -1
  297. package/dist/searchcraft-javascript-sdk/p-04300412.entry.js +0 -2
  298. package/dist/searchcraft-javascript-sdk/p-04300412.entry.js.map +0 -1
  299. package/dist/searchcraft-javascript-sdk/p-09c7fbef.entry.js +0 -2
  300. package/dist/searchcraft-javascript-sdk/p-09c7fbef.entry.js.map +0 -1
  301. package/dist/searchcraft-javascript-sdk/p-32068485.entry.js +0 -2
  302. package/dist/searchcraft-javascript-sdk/p-32068485.entry.js.map +0 -1
  303. package/dist/searchcraft-javascript-sdk/p-4d3682a8.entry.js +0 -2
  304. package/dist/searchcraft-javascript-sdk/p-4d3682a8.entry.js.map +0 -1
  305. package/dist/searchcraft-javascript-sdk/p-61cf9d6c.entry.js +0 -2
  306. package/dist/searchcraft-javascript-sdk/p-61cf9d6c.entry.js.map +0 -1
  307. package/dist/searchcraft-javascript-sdk/p-93b92b65.entry.js +0 -2
  308. package/dist/searchcraft-javascript-sdk/p-93b92b65.entry.js.map +0 -1
  309. package/dist/searchcraft-javascript-sdk/p-a7a7b4e0.entry.js +0 -2
  310. package/dist/searchcraft-javascript-sdk/p-a7a7b4e0.entry.js.map +0 -1
  311. package/dist/searchcraft-javascript-sdk/p-a810aeae.entry.js +0 -2
  312. package/dist/searchcraft-javascript-sdk/p-a810aeae.entry.js.map +0 -1
  313. package/dist/searchcraft-javascript-sdk/p-aa155194.entry.js +0 -2
  314. package/dist/searchcraft-javascript-sdk/p-aa155194.entry.js.map +0 -1
  315. package/dist/searchcraft-javascript-sdk/p-ad4ebde0.js +0 -11
  316. package/dist/searchcraft-javascript-sdk/p-ad4ebde0.js.map +0 -1
  317. package/dist/searchcraft-javascript-sdk/p-adadf38a.entry.js +0 -2
  318. package/dist/searchcraft-javascript-sdk/p-adadf38a.entry.js.map +0 -1
  319. package/dist/searchcraft-javascript-sdk/p-d57eba31.entry.js +0 -2
  320. package/dist/searchcraft-javascript-sdk/p-d57eba31.entry.js.map +0 -1
  321. package/dist/searchcraft-javascript-sdk/p-d7d0b88c.js +0 -3
  322. package/dist/searchcraft-javascript-sdk/p-d7d0b88c.js.map +0 -1
  323. package/dist/searchcraft-javascript-sdk/p-f308d05d.js +0 -2
  324. package/dist/searchcraft-javascript-sdk/p-f308d05d.js.map +0 -1
  325. package/dist/types/components/searchcraft-popover-result/searchcraft-popover-result.d.ts +0 -6
  326. /package/dist/collection/components/{searchcraft-popover-result/searchcraft-popover-result.module.css → searchcraft-popover-button/searchcraft-popover-button.module.css} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"searchcraft-filter-panel.js","sourceRoot":"","sources":["../../../../src/components/searchcraft-filter-panel/searchcraft-filter-panel.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Prop, State } from '@stencil/core';\nimport type {\n FilterItem,\n DateRangeFilterItem,\n NumericFilterItem,\n ExactMatchToggleFilterItem,\n FacetsFilterItem,\n} from '../../types/searchcraft-filter-panel.types';\nimport { useSearchcraftStore } from '@provider/store';\nimport { getMillis } from '@utils/utils';\n\n@Component({\n tag: 'searchcraft-filter-panel',\n styleUrl: 'searchcraft-filter-panel.module.scss',\n shadow: false,\n})\nexport class SearchcraftFilterPanel {\n @Prop() items: FilterItem[] = [];\n\n @State() unsubscribe: (() => void) | undefined;\n @State() lastQuery: string | undefined;\n\n private searchStore = useSearchcraftStore.getState();\n\n componentDidLoad() {\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n if (this.lastQuery !== state.query) {\n // A place to put actions to do when the query changes\n }\n this.lastQuery = state.query || '';\n });\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n }\n\n handleDateRangeChanged(fieldName: string, min: number, max: number) {\n const start = new Date(min);\n const end = new Date(max);\n this.searchStore.addRangeValueForIndexField({\n fieldName,\n value: `${fieldName}:[${start.toISOString()} TO ${end.toISOString()}]`,\n });\n\n this.searchStore.search();\n }\n\n handleNumericRangeChanged(fieldName: string, min: number, max: number) {\n this.searchStore.addRangeValueForIndexField({\n fieldName,\n value: `${fieldName}:[${min} TO ${max}]`,\n });\n this.searchStore.search();\n }\n\n handleFacetSelectionUpdated(fieldName: string, paths: string[]) {\n if (paths.length > 0) {\n this.searchStore.addFacetPathsForIndexField({\n fieldName,\n value: `${fieldName}: IN [${paths.join(' ')}]`,\n });\n } else {\n this.searchStore.removeFacetPathsForIndexField(fieldName);\n }\n this.searchStore.search();\n }\n\n handleExactMatchToggleUpdated(isActive: boolean) {\n this.searchStore.setSearchMode(isActive ? 'normal' : 'fuzzy');\n this.searchStore.search();\n }\n\n handleMostRecentToggleUpdated(isActive: boolean) {\n this.searchStore.setSortType(isActive ? 'desc' : 'asc');\n this.searchStore.search();\n }\n\n /**\n * Iterate through `items` and render them based on `type`\n */\n render() {\n return (\n <div class='searchcraft-filter-panel'>\n {this.items.map((filterItem) => {\n switch (filterItem.type) {\n case 'dateRange': {\n const item = filterItem as DateRangeFilterItem;\n const min = new Date(item.options.minDate).getTime();\n const max = new Date(item.options.maxDate).getTime();\n const granularityValue = getMillis(item.options.granularity);\n // return date range slider\n return (\n <div class='searchcraft-filter-panel-section'>\n <p class='searchcraft-filter-panel-label'>\n {filterItem.label}\n </p>\n <searchcraft-slider\n min={min}\n max={max}\n granularity={granularityValue}\n dataType='date'\n onRangeChanged={(event) => {\n this.handleDateRangeChanged(\n item.fieldName,\n event.detail.startValue,\n event.detail.endValue,\n );\n }}\n />\n </div>\n );\n }\n case 'numericRange': {\n const item = filterItem as NumericFilterItem;\n // return date range slider\n return (\n <div class='searchcraft-filter-panel-section'>\n <p class='searchcraft-filter-panel-label'>\n {filterItem.label}\n </p>\n <searchcraft-slider\n min={item.options.min}\n max={item.options.max}\n granularity={item.options.granularity}\n onRangeChanged={(event) => {\n this.handleNumericRangeChanged(\n item.fieldName,\n event.detail.startValue,\n event.detail.endValue,\n );\n }}\n />\n </div>\n );\n }\n case 'facets': {\n const item = filterItem as FacetsFilterItem;\n // return \"filters-list\"\n return (\n <div class='searchcraft-filter-panel-section'>\n <p class='searchcraft-filter-panel-label'>\n {filterItem.label}\n </p>\n <searchcraft-facet-list\n fieldName={item.fieldName}\n onFacetSelectionUpdated={(event) => {\n this.handleFacetSelectionUpdated(\n item.fieldName,\n event.detail.paths,\n );\n }}\n />\n </div>\n );\n }\n case 'exactMatchToggle': {\n const item = filterItem as ExactMatchToggleFilterItem;\n return (\n <searchcraft-toggle-button\n label={item.label}\n subLabel={item.options.subLabel}\n onToggleUpdated={(event) => {\n this.handleExactMatchToggleUpdated(event.detail);\n }}\n />\n );\n }\n case 'mostRecentToggle': {\n const item = filterItem as ExactMatchToggleFilterItem;\n return (\n <searchcraft-toggle-button\n label={item.label}\n subLabel={item.options.subLabel}\n onToggleUpdated={(event) => {\n this.handleMostRecentToggleUpdated(event.detail);\n }}\n />\n );\n }\n }\n })}\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"searchcraft-filter-panel.js","sourceRoot":"","sources":["../../../../src/components/searchcraft-filter-panel/searchcraft-filter-panel.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Prop, State } from '@stencil/core';\nimport type {\n FilterItem,\n DateRangeFilterItem,\n NumericFilterItem,\n ExactMatchToggleFilterItem,\n FacetsFilterItem,\n} from '../../types/searchcraft-filter-panel.types';\nimport { useSearchcraftStore } from '@provider/store';\nimport { getMillis } from '@utils';\n\n/**\n * This web component represents a series of filters that allows users to refine and control their search queries by applying various filter criteria.\n *\n * ## Usage\n * ```html\n * <!-- index.html -->\n * <searchcraft-filter-panel />\n * ```\n */\n@Component({\n tag: 'searchcraft-filter-panel',\n styleUrl: 'searchcraft-filter-panel.module.scss',\n shadow: false,\n})\nexport class SearchcraftFilterPanel {\n /**\n * The items to filter.\n */\n @Prop() items: FilterItem[] = [];\n\n @State() unsubscribe: (() => void) | undefined;\n @State() lastQuery: string | undefined;\n\n private searchStore = useSearchcraftStore.getState();\n\n componentDidLoad() {\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n if (this.lastQuery !== state.query) {\n // A place to put actions to do when the query changes\n }\n this.lastQuery = state.query || '';\n });\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n }\n\n handleDateRangeChanged(fieldName: string, min: number, max: number) {\n const start = new Date(min);\n const end = new Date(max);\n this.searchStore.addRangeValueForIndexField({\n fieldName,\n value: `${fieldName}:[${start.toISOString()} TO ${end.toISOString()}]`,\n });\n\n this.searchStore.search();\n }\n\n handleNumericRangeChanged(fieldName: string, min: number, max: number) {\n this.searchStore.addRangeValueForIndexField({\n fieldName,\n value: `${fieldName}:[${min} TO ${max}]`,\n });\n this.searchStore.search();\n }\n\n handleFacetSelectionUpdated(fieldName: string, paths: string[]) {\n if (paths.length > 0) {\n this.searchStore.addFacetPathsForIndexField({\n fieldName,\n value: `${fieldName}: IN [${paths.join(' ')}]`,\n });\n } else {\n this.searchStore.removeFacetPathsForIndexField(fieldName);\n }\n this.searchStore.search();\n }\n\n handleExactMatchToggleUpdated(isActive: boolean) {\n this.searchStore.setSearchMode(isActive ? 'exact' : 'fuzzy');\n this.searchStore.search();\n }\n\n handleMostRecentToggleUpdated(isActive: boolean) {\n this.searchStore.setSortType(isActive ? 'desc' : 'asc');\n this.searchStore.search();\n }\n\n /**\n * Iterate through `items` and render them based on `type`\n */\n render() {\n return (\n <div class='searchcraft-filter-panel'>\n {this.items.map((filterItem) => {\n switch (filterItem.type) {\n case 'dateRange': {\n const item = filterItem as DateRangeFilterItem;\n const min = new Date(item.options.minDate).getTime();\n const max = new Date(item.options.maxDate).getTime();\n const granularityValue = getMillis(item.options.granularity);\n // return date range slider\n return (\n <div class='searchcraft-filter-panel-section'>\n <p class='searchcraft-filter-panel-label'>\n {filterItem.label}\n </p>\n <searchcraft-slider\n min={min}\n max={max}\n granularity={granularityValue}\n dataType='date'\n onRangeChanged={(event) => {\n this.handleDateRangeChanged(\n item.fieldName,\n event.detail.startValue,\n event.detail.endValue,\n );\n }}\n />\n </div>\n );\n }\n case 'numericRange': {\n const item = filterItem as NumericFilterItem;\n // return date range slider\n return (\n <div class='searchcraft-filter-panel-section'>\n <p class='searchcraft-filter-panel-label'>\n {filterItem.label}\n </p>\n <searchcraft-slider\n min={item.options.min}\n max={item.options.max}\n granularity={item.options.granularity}\n onRangeChanged={(event) => {\n this.handleNumericRangeChanged(\n item.fieldName,\n event.detail.startValue,\n event.detail.endValue,\n );\n }}\n />\n </div>\n );\n }\n case 'facets': {\n const item = filterItem as FacetsFilterItem;\n // return \"filters-list\"\n return (\n <div class='searchcraft-filter-panel-section'>\n <p class='searchcraft-filter-panel-label'>\n {filterItem.label}\n </p>\n <searchcraft-facet-list\n fieldName={item.fieldName}\n onFacetSelectionUpdated={(event) => {\n this.handleFacetSelectionUpdated(\n item.fieldName,\n event.detail.paths,\n );\n }}\n />\n </div>\n );\n }\n case 'exactMatchToggle': {\n const item = filterItem as ExactMatchToggleFilterItem;\n return (\n <searchcraft-toggle-button\n label={item.label}\n subLabel={item.options.subLabel}\n onToggleUpdated={(event) => {\n this.handleExactMatchToggleUpdated(event.detail);\n }}\n />\n );\n }\n case 'mostRecentToggle': {\n const item = filterItem as ExactMatchToggleFilterItem;\n return (\n <searchcraft-toggle-button\n label={item.label}\n subLabel={item.options.subLabel}\n onToggleUpdated={(event) => {\n this.handleMostRecentToggleUpdated(event.detail);\n }}\n />\n );\n }\n }\n })}\n </div>\n );\n }\n}\n"]}
@@ -1,12 +1,53 @@
1
+ /** Appearance & Layout */
1
2
  :root {
2
- /** Appearance & Layout */
3
- --sc-spinner-size: 20px;
3
+ /**
4
+ * Border radius of the input form element.
5
+ */
4
6
  --sc-input-border-radius: 8px;
7
+ /**
8
+ * Icon size of the "magnifying glass" icon rendered in the input form.
9
+ */
5
10
  --sc-input-search-icon-size: 20px;
11
+ /**
12
+ * Icon size of the `x` button rendered in the input form.
13
+ */
6
14
  --sc-input-clear-icon-size: 20px;
15
+ /**
16
+ * Padding on the left side of the input form.
17
+ */
7
18
  --sc-input-padding-left: 44px;
19
+ /**
20
+ * Padding on the right side of the input form.
21
+ */
8
22
  --sc-input-padding-right: 44px;
23
+ /**
24
+ * Border radius applied to result images.
25
+ */
9
26
  --sc-image-border-radius: 8px;
27
+ /**
28
+ * Border radius applied to popover form containers.
29
+ */
30
+ --sc-popover-form-border-radius: 8px;
31
+ /**
32
+ * Height of the list view/results container portion of the popover form.
33
+ */
34
+ --sc-popover-list-view-height: 400px;
35
+ /**
36
+ * Size of images of list view items in the popoer list view.
37
+ */
38
+ --sc-popover-list-item-image-size: 60px;
39
+ /**
40
+ * Horizontal padding of popover list items.
41
+ */
42
+ --sc-popover-list-item-padding-horizontal: 8px;
43
+ /**
44
+ * Vertical padding of popover list items.
45
+ */
46
+ --sc-popover-list-item-padding-vertical: 8px;
47
+ /**
48
+ * Maximum width of popover forms of type `modal`.
49
+ */
50
+ --sc-popover-modal-max-width: 570px;
10
51
  }
11
52
 
12
53
  :root {
@@ -97,6 +138,15 @@
97
138
  --sc-body-small-font-weight: 400;
98
139
  }
99
140
 
141
+ /**
142
+ * Variables that need to be part of the preprocessor can go here.
143
+ */
144
+ :root {
145
+ --sc-breakpoint-sm: 576px;
146
+ --sc-breakpoint-md: 768px;
147
+ --sc-breakpoint-lg: 992px;
148
+ }
149
+
100
150
  .searchcraft-filter-panel {
101
151
  display: flex;
102
152
  flex-direction: column;
@@ -1,41 +1,83 @@
1
1
  import { h, } from "@stencil/core";
2
2
  import { SearchcraftCore } from "@searchcraft/core";
3
3
  import packageJson from "../../../package.json";
4
- import { parseCustomStyles } from "../../utils/utils";
4
+ import { parseCustomStyles } from "../../utils/index";
5
5
  import { useSearchcraftStore } from "../../provider/store";
6
6
  import classNames from "classnames";
7
+ /**
8
+ * This web component provides a user-friendly interface for querying an indexed dataset, enabling users to easily search large collections of data.
9
+ * It abstracts the complexities of index-based searching, making it accessible to users of all technical levels.
10
+ *
11
+ * ## Usage
12
+ * ```html
13
+ * <!-- index.html -->
14
+ * <searchcraft-input-form placeholder-value="Search here" />
15
+ * ```
16
+ *
17
+ * ```js
18
+ * // index.js
19
+ * const searchInputForm = document.querySelector('searchcraft-input-form');
20
+ *
21
+ * seardchInputForm.config = {
22
+ * index: [],
23
+ * readKey: '',
24
+ * endpointUrl: '',
25
+ * };
26
+ *
27
+ * searchForm.addEventListener('querySubmit', (event) => {
28
+ * console.log('Query submitted', event.detail);
29
+ * });
30
+ * ```
31
+ */
7
32
  export class SearchcraftInput {
8
33
  constructor() {
9
- this.debounceTimeout = null;
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;
10
57
  this.searchStore = useSearchcraftStore.getState();
11
58
  this.handleOnInput = (event) => {
12
59
  const input = event.target;
13
60
  this.inputValue = input.value;
14
61
  if (input.value.trim() === '') {
15
62
  this.inputCleared.emit();
63
+ this.searchTerm = '';
64
+ this.searchStore.setQuery('');
65
+ this.searchStore.setSearchResults(null);
16
66
  return;
17
67
  }
18
68
  if (!this.autoSearch) {
19
69
  return;
20
70
  }
21
- if (this.debounceDelay > 0) {
22
- if (this.debounceTimeout) {
23
- clearTimeout(this.debounceTimeout);
24
- }
25
- this.debounceTimeout = setTimeout(() => this.performSearch(input.value), this.debounceDelay);
26
- }
27
- else {
28
- this.performSearch(input.value);
29
- }
71
+ this.performSearch(input.value);
30
72
  };
31
73
  this.performSearch = async (value) => {
32
74
  if (value === useSearchcraftStore.getState().query) {
33
75
  return;
34
76
  }
35
- this.querySubmit.emit(value);
36
77
  this.searchTerm = value.trim();
37
78
  this.error = false;
38
79
  this.searchStore.setQuery(this.searchTerm);
80
+ this.querySubmit.emit(this.searchTerm);
39
81
  try {
40
82
  await this.searchStore.search();
41
83
  }
@@ -46,9 +88,6 @@ export class SearchcraftInput {
46
88
  };
47
89
  this.handleClearInput = () => {
48
90
  this.inputValue = '';
49
- if (this.debounceTimeout) {
50
- clearTimeout(this.debounceTimeout);
51
- }
52
91
  this.searchTerm = '';
53
92
  this.searchStore.setQuery('');
54
93
  this.searchStore.setSearchResults(null);
@@ -61,18 +100,6 @@ export class SearchcraftInput {
61
100
  event.preventDefault();
62
101
  await this.performSearch(this.searchTerm);
63
102
  };
64
- this.config = undefined;
65
- this.autoSearch = true;
66
- this.buttonPlacement = 'none';
67
- this.buttonLabel = undefined;
68
- this.inputLabel = undefined;
69
- this.customStyles = {};
70
- this.placeholderValue = 'Enter Search';
71
- this.searchTerm = '';
72
- this.debounceDelay = 0;
73
- this.inputValue = this.searchTerm;
74
- this.error = false;
75
- this.isSearchcraftInitialized = false;
76
103
  }
77
104
  init() {
78
105
  if (this.config && !this.isSearchcraftInitialized) {
@@ -82,6 +109,7 @@ export class SearchcraftInput {
82
109
  });
83
110
  this.searchStore.initialize(searchcraft, true);
84
111
  this.isSearchcraftInitialized = true;
112
+ this.inputInit.emit();
85
113
  }
86
114
  }
87
115
  componentDidLoad() {
@@ -98,9 +126,13 @@ export class SearchcraftInput {
98
126
  'searchcraft-input-grid-buttonRight': this.buttonPlacement === 'right',
99
127
  'searchcraft-input-grid-buttonNone': this.buttonPlacement === 'none',
100
128
  });
101
- return (h("form", { key: '7f224a10ab80d70660c9db97be5d68830932570b', class: 'searchcraft-input-form', onSubmit: this.handleFormSubmit }, h("div", { key: '6822a21a43e5be992b11ddb6c86370ddd68e1475', class: inputGridClassNames }, h("div", { key: '6022989ca876ea46de048398a076bc43d5213554', class: 'searchcraft-input-button-wrapper' }, h("searchcraft-button", { key: 'd48b61729ef9a3f19049dfe751aefa22fdc85e9f', onButtonClick: this.handleFormSubmit, label: this.buttonLabel })), h("div", { key: '3465e467cbb965ad813b6c9c726173bb3fe828f2', class: 'searchcraft-input-label-wrapper' }, h("searchcraft-input-label", { key: '1026b7834358c6673a72ef8352830c9b4681020f', label: this.inputLabel })), this.error && (h("div", { key: 'ff0d55cd88e1895f9b0bd4c0afc917127e76afa2', class: 'searchcraft-input-error-wrapper' }, h("searchcraft-error-message", { key: '57fc160411f21f45617e1a3b8677fb4c6e96c0f0', errorMessage: 'Please enter a search query.' }))), h("div", { key: 'b2783bf86177d22d4abedb4420fdb2a1807527ef', class: 'searchcraft-input-wrapper' }, h("input", { key: 'e985da32be58ab3e200866e085b2acd25b54aa31', autoComplete: 'off', class: 'searchcraft-input', onFocus: () => this.inputFocus.emit(), onBlur: () => this.inputBlur.emit(), onInput: (event) => {
129
+ const shouldHaveVerticalGap = this.inputLabel || this.error;
130
+ const inputGridStyles = {
131
+ gap: shouldHaveVerticalGap ? '4px 8px' : '0px 8px',
132
+ };
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) => {
102
134
  this.handleOnInput(event);
103
- }, placeholder: this.placeholderValue, style: validatedCustomStyles, type: 'text', value: this.inputValue }), h("div", { key: 'd5277758ae26262f5f3b49e8763add412661e5cf', class: 'searchcraft-input-search-icon-wrapper' }, h("svg", { key: '79792740ea1207fad40786f555c63c4a26ff3fe2', 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: '7a487bdf41babdafb802ebd79c34a6a5da300cd6', id: 'searchcraft-title' }, "Searchcraft Search Icon Light"), h("path", { key: '27c442bf412aca373cbc982b3a35a00fe7bb82ed', 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: '4c4bc21e9e87f4245ac38d7af269aae35876b6b0', type: 'button', class: 'searchcraft-input-clear-button', onClick: this.handleClearInput }, h("svg", { key: '4b82e65987a8a8c296d2b9c279474c29607727e0', 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: '9d64212798691a2f8c6c9c4f74ceca1d2fe39fd1', id: 'icon-title' }, "Searchcraft Clear Input Icon Light"), h("path", { key: '4c6c5b33fbd9ac02661996bb56e0902094e9b140', 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' }))))))));
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' }))))))));
104
136
  }
105
137
  static get is() { return "searchcraft-input-form"; }
106
138
  static get originalStyleUrls() {
@@ -134,7 +166,9 @@ export class SearchcraftInput {
134
166
  "docs": {
135
167
  "tags": [],
136
168
  "text": "The Searchcraft config object."
137
- }
169
+ },
170
+ "getter": false,
171
+ "setter": false
138
172
  },
139
173
  "autoSearch": {
140
174
  "type": "boolean",
@@ -150,6 +184,8 @@ export class SearchcraftInput {
150
184
  "tags": [],
151
185
  "text": "Whether or not to automatically submit the search term when the input changes."
152
186
  },
187
+ "getter": false,
188
+ "setter": false,
153
189
  "attribute": "auto-search",
154
190
  "reflect": false,
155
191
  "defaultValue": "true"
@@ -168,6 +204,8 @@ export class SearchcraftInput {
168
204
  "tags": [],
169
205
  "text": "Where to place the search button."
170
206
  },
207
+ "getter": false,
208
+ "setter": false,
171
209
  "attribute": "button-placement",
172
210
  "reflect": false,
173
211
  "defaultValue": "'none'"
@@ -186,6 +224,8 @@ export class SearchcraftInput {
186
224
  "tags": [],
187
225
  "text": "The label for the submit button."
188
226
  },
227
+ "getter": false,
228
+ "setter": false,
189
229
  "attribute": "button-label",
190
230
  "reflect": false
191
231
  },
@@ -203,6 +243,8 @@ export class SearchcraftInput {
203
243
  "tags": [],
204
244
  "text": "The label rendered above the input."
205
245
  },
246
+ "getter": false,
247
+ "setter": false,
206
248
  "attribute": "input-label",
207
249
  "reflect": false
208
250
  },
@@ -225,6 +267,8 @@ export class SearchcraftInput {
225
267
  "tags": [],
226
268
  "text": "A custom styles object to be applied to the input element."
227
269
  },
270
+ "getter": false,
271
+ "setter": false,
228
272
  "attribute": "custom-styles",
229
273
  "reflect": false,
230
274
  "defaultValue": "{}"
@@ -243,6 +287,8 @@ export class SearchcraftInput {
243
287
  "tags": [],
244
288
  "text": "The input element's placeholder value."
245
289
  },
290
+ "getter": false,
291
+ "setter": false,
246
292
  "attribute": "placeholder-value",
247
293
  "reflect": false,
248
294
  "defaultValue": "'Enter Search'"
@@ -261,27 +307,11 @@ export class SearchcraftInput {
261
307
  "tags": [],
262
308
  "text": "The starting value of the input element."
263
309
  },
310
+ "getter": false,
311
+ "setter": false,
264
312
  "attribute": "search-term",
265
313
  "reflect": false,
266
314
  "defaultValue": "''"
267
- },
268
- "debounceDelay": {
269
- "type": "number",
270
- "mutable": false,
271
- "complexType": {
272
- "original": "number",
273
- "resolved": "number",
274
- "references": {}
275
- },
276
- "required": false,
277
- "optional": false,
278
- "docs": {
279
- "tags": [],
280
- "text": "The duration to debounce the input's `inputChange` event."
281
- },
282
- "attribute": "debounce-delay",
283
- "reflect": false,
284
- "defaultValue": "0"
285
315
  }
286
316
  };
287
317
  }
@@ -301,7 +331,7 @@ export class SearchcraftInput {
301
331
  "composed": true,
302
332
  "docs": {
303
333
  "tags": [],
304
- "text": "Event emitted when the input element has been cleared."
334
+ "text": "When the input is cleared."
305
335
  },
306
336
  "complexType": {
307
337
  "original": "void",
@@ -316,7 +346,7 @@ export class SearchcraftInput {
316
346
  "composed": true,
317
347
  "docs": {
318
348
  "tags": [],
319
- "text": "Event emitted when a query returns with no results received."
349
+ "text": "When no results are returned."
320
350
  },
321
351
  "complexType": {
322
352
  "original": "void",
@@ -324,29 +354,29 @@ export class SearchcraftInput {
324
354
  "references": {}
325
355
  }
326
356
  }, {
327
- "method": "querySubmit",
328
- "name": "querySubmit",
357
+ "method": "inputFocus",
358
+ "name": "inputFocus",
329
359
  "bubbles": true,
330
360
  "cancelable": true,
331
361
  "composed": true,
332
362
  "docs": {
333
363
  "tags": [],
334
- "text": "Event emitted when a new search request has been submitted."
364
+ "text": "When the input becomes focused."
335
365
  },
336
366
  "complexType": {
337
- "original": "string",
338
- "resolved": "string",
367
+ "original": "void",
368
+ "resolved": "void",
339
369
  "references": {}
340
370
  }
341
371
  }, {
342
- "method": "inputFocus",
343
- "name": "inputFocus",
372
+ "method": "inputBlur",
373
+ "name": "inputBlur",
344
374
  "bubbles": true,
345
375
  "cancelable": true,
346
376
  "composed": true,
347
377
  "docs": {
348
378
  "tags": [],
349
- "text": "Event emitted when the input has gained focus."
379
+ "text": "When the input becomes unfocused."
350
380
  },
351
381
  "complexType": {
352
382
  "original": "void",
@@ -354,20 +384,35 @@ export class SearchcraftInput {
354
384
  "references": {}
355
385
  }
356
386
  }, {
357
- "method": "inputBlur",
358
- "name": "inputBlur",
387
+ "method": "inputInit",
388
+ "name": "inputInit",
359
389
  "bubbles": true,
360
390
  "cancelable": true,
361
391
  "composed": true,
362
392
  "docs": {
363
393
  "tags": [],
364
- "text": "Event emitted when the input has lost focus."
394
+ "text": "Event emitted when input initializes."
365
395
  },
366
396
  "complexType": {
367
397
  "original": "void",
368
398
  "resolved": "void",
369
399
  "references": {}
370
400
  }
401
+ }, {
402
+ "method": "querySubmit",
403
+ "name": "querySubmit",
404
+ "bubbles": true,
405
+ "cancelable": true,
406
+ "composed": true,
407
+ "docs": {
408
+ "tags": [],
409
+ "text": "Event emitted when a query has been submitted."
410
+ },
411
+ "complexType": {
412
+ "original": "string",
413
+ "resolved": "string",
414
+ "references": {}
415
+ }
371
416
  }];
372
417
  }
373
418
  static get watchers() {
@@ -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/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@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 * The duration to debounce the input's `inputChange` event.\n */\n @Prop() debounceDelay = 0;\n /**\n * Event emitted when the input element has been cleared.\n */\n @Event() inputCleared: EventEmitter<void>;\n /**\n * Event emitted when a query returns with no results received.\n */\n @Event() noResultsReceived: EventEmitter<void>;\n /**\n * Event emitted when a new search request has been submitted.\n */\n @Event() querySubmit: EventEmitter<string>;\n /**\n * Event emitted when the input has gained focus.\n */\n @Event() inputFocus: EventEmitter<void>;\n /**\n * Event emitted when the input has lost focus.\n */\n @Event() inputBlur: EventEmitter<void>;\n\n @State() inputValue = this.searchTerm;\n @State() error = false;\n @State() isSearchcraftInitialized = false;\n\n private debounceTimeout: ReturnType<typeof setTimeout> | null = null;\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 }\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 return;\n }\n\n if (!this.autoSearch) {\n return;\n }\n\n if (this.debounceDelay > 0) {\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n }\n\n this.debounceTimeout = setTimeout(\n () => this.performSearch(input.value),\n this.debounceDelay,\n );\n } else {\n this.performSearch(input.value);\n }\n };\n\n private performSearch = async (value: string) => {\n if (value === useSearchcraftStore.getState().query) {\n return;\n }\n this.querySubmit.emit(value);\n this.searchTerm = value.trim();\n this.error = false;\n this.searchStore.setQuery(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\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n }\n\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 return (\n <form class='searchcraft-input-form' onSubmit={this.handleFormSubmit}>\n <div class={inputGridClassNames}>\n <div class='searchcraft-input-button-wrapper'>\n <searchcraft-button\n onButtonClick={this.handleFormSubmit}\n label={this.buttonLabel}\n />\n </div>\n <div class='searchcraft-input-label-wrapper'>\n <searchcraft-input-label label={this.inputLabel} />\n </div>\n {this.error && (\n <div class='searchcraft-input-error-wrapper'>\n <searchcraft-error-message errorMessage='Please enter a search query.' />\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\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,12 +1,53 @@
1
+ /** Appearance & Layout */
1
2
  :root {
2
- /** Appearance & Layout */
3
- --sc-spinner-size: 20px;
3
+ /**
4
+ * Border radius of the input form element.
5
+ */
4
6
  --sc-input-border-radius: 8px;
7
+ /**
8
+ * Icon size of the "magnifying glass" icon rendered in the input form.
9
+ */
5
10
  --sc-input-search-icon-size: 20px;
11
+ /**
12
+ * Icon size of the `x` button rendered in the input form.
13
+ */
6
14
  --sc-input-clear-icon-size: 20px;
15
+ /**
16
+ * Padding on the left side of the input form.
17
+ */
7
18
  --sc-input-padding-left: 44px;
19
+ /**
20
+ * Padding on the right side of the input form.
21
+ */
8
22
  --sc-input-padding-right: 44px;
23
+ /**
24
+ * Border radius applied to result images.
25
+ */
9
26
  --sc-image-border-radius: 8px;
27
+ /**
28
+ * Border radius applied to popover form containers.
29
+ */
30
+ --sc-popover-form-border-radius: 8px;
31
+ /**
32
+ * Height of the list view/results container portion of the popover form.
33
+ */
34
+ --sc-popover-list-view-height: 400px;
35
+ /**
36
+ * Size of images of list view items in the popoer list view.
37
+ */
38
+ --sc-popover-list-item-image-size: 60px;
39
+ /**
40
+ * Horizontal padding of popover list items.
41
+ */
42
+ --sc-popover-list-item-padding-horizontal: 8px;
43
+ /**
44
+ * Vertical padding of popover list items.
45
+ */
46
+ --sc-popover-list-item-padding-vertical: 8px;
47
+ /**
48
+ * Maximum width of popover forms of type `modal`.
49
+ */
50
+ --sc-popover-modal-max-width: 570px;
10
51
  }
11
52
 
12
53
  :root {
@@ -97,9 +138,13 @@
97
138
  --sc-body-small-font-weight: 400;
98
139
  }
99
140
 
100
- .searchcraft-input-wrapper {
101
- position: relative;
102
- display: flex;
141
+ /**
142
+ * Variables that need to be part of the preprocessor can go here.
143
+ */
144
+ :root {
145
+ --sc-breakpoint-sm: 576px;
146
+ --sc-breakpoint-md: 768px;
147
+ --sc-breakpoint-lg: 992px;
103
148
  }
104
149
 
105
150
  .searchcraft-input-grid {
@@ -169,6 +214,11 @@
169
214
  grid-row: 2/span 1;
170
215
  }
171
216
 
217
+ .searchcraft-input-wrapper {
218
+ position: relative;
219
+ display: flex;
220
+ }
221
+
172
222
  .searchcraft-input {
173
223
  font-family: var(--sc-font-family);
174
224
  -webkit-font-smoothing: antialiased;
@@ -176,8 +226,8 @@
176
226
  font-weight: var(--sc-body-font-weight);
177
227
  line-height: var(--sc-body-line-height);
178
228
  background-color: var(--sc-surface-neutral-secondary);
179
- border: none;
180
229
  border-radius: var(--sc-input-border-radius);
230
+ border: none;
181
231
  color: var(--sc-content-neutral-primary);
182
232
  outline: none;
183
233
  padding-left: var(--sc-input-padding-left);