@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
@@ -0,0 +1,233 @@
1
+ import { r as registerInstance, c as createEvent, h } from './index-56b713de.js';
2
+ import { u as useSearchcraftStore, b as ae } from './store-712f0586.js';
3
+ import { p as parseCustomStyles } from './styles-961644ef.js';
4
+ import { c as classNames } from './index-72ac5051.js';
5
+ import { g as getDocumentValueFromSearchResultMapping } from './units-b6eba560.js';
6
+
7
+ const name = "@searchcraft/javascript-sdk";
8
+ const version = "0.7.0";
9
+ const description = "Searchcraft Javascript SDK";
10
+ const author = "Searchcraft";
11
+ const license = "Apache-2.0";
12
+ const main = "dist/index.cjs.js";
13
+ const module = "dist/index.js";
14
+ const types = "dist/types/index.d.ts";
15
+ const collection = "dist/collection/collection-manifest.json";
16
+ const unpkg = "dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js";
17
+ const exports = {
18
+ ".": {
19
+ "import": "./dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js",
20
+ require: "./dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.cjs.js",
21
+ types: "./dist/types/index.d.ts"
22
+ },
23
+ "./components": {
24
+ "import": "./dist/components/index.js",
25
+ types: "./dist/components/index.d.ts"
26
+ },
27
+ "./loader": {
28
+ "import": "./dist/loader/index.js",
29
+ require: "./dist/loader/index.cjs",
30
+ types: "./dist/loader/index.d.ts"
31
+ },
32
+ "./dist/components/*": {
33
+ "import": "./dist/components/*",
34
+ types: "./dist/components/*"
35
+ }
36
+ };
37
+ const repository = {
38
+ type: "git",
39
+ url: "https://bitbucket.org/madebychalk/searchcraft-javascript-sdks/"
40
+ };
41
+ const files = [
42
+ "dist/"
43
+ ];
44
+ const scripts = {
45
+ build: "stencil build",
46
+ dev: "stencil build --dev --watch",
47
+ test: "stencil test --spec --e2e",
48
+ "test.watch": "stencil test --spec --e2e --watchAll",
49
+ generate: "stencil generate"
50
+ };
51
+ const dependencies = {
52
+ "@stencil/vue-output-target": "^0.9.2",
53
+ classnames: "^2.3.2"
54
+ };
55
+ const devDependencies = {
56
+ "@searchcraft/core": "^0.7.0",
57
+ "@searchcraft/javascript-sdk": "*",
58
+ "@stencil/core": "^4.7.0",
59
+ "@stencil/react-output-target": "^0.8.2",
60
+ "@stencil/sass": "^3.0.12",
61
+ "@types/node": "^16.18.11",
62
+ zustand: "^5.0.1"
63
+ };
64
+ const packageJson = {
65
+ name: name,
66
+ "private": false,
67
+ version: version,
68
+ description: description,
69
+ author: author,
70
+ license: license,
71
+ main: main,
72
+ module: module,
73
+ types: types,
74
+ collection: collection,
75
+ "collection:main": "dist/collection/index.js",
76
+ unpkg: unpkg,
77
+ exports: exports,
78
+ repository: repository,
79
+ files: files,
80
+ scripts: scripts,
81
+ dependencies: dependencies,
82
+ devDependencies: devDependencies
83
+ };
84
+
85
+ const searchcraftInputFormModuleCss = ":root{--sc-input-border-radius:8px;--sc-input-search-icon-size:20px;--sc-input-clear-icon-size:20px;--sc-input-padding-left:44px;--sc-input-padding-right:44px;--sc-image-border-radius:8px;--sc-popover-form-border-radius:8px;--sc-popover-list-view-height:400px;--sc-popover-list-item-image-size:60px;--sc-popover-list-item-padding-horizontal:8px;--sc-popover-list-item-padding-vertical:8px;--sc-popover-modal-max-width:570px}:root{--sc-surface-disabled:#D9D9D9;--sc-surface-neutral-primary:#FFFFFF;--sc-surface-neutral-secondary:#F3F3F3;--sc-surface-neutral-light:#FFFFFF;--sc-surface-neutral-primary-hover:#FAFAFA;--sc-surface-neutral-primary-active:#F7F7F7;--sc-surface-neutral-secondary-hover:#EDEDED;--sc-surface-neutral-secondary-active:#E6E6E6;--sc-surface-brand-primary:#000000;--sc-surface-brand-secondary:#E6E6E6;--sc-surface-brand-primary-hover:#2E2E2E;--sc-surface-brand-primary-active:#292929;--sc-surface-brand-secondary-hover:#EBEBEB;--sc-surface-brand-secondary-active:#E0E0E0;--sc-surface-success-primary:#008000;--sc-surface-success-secondary:#CCFFCC;--sc-surface-success-primary-hover:#009900;--sc-surface-success-primary-active:#006600;--sc-surface-success-secondary-hover:#E6FFE6;--sc-surface-success-secondary-active:#E6FFE6;--sc-surface-caution-primary:#CC6600;--sc-surface-caution-secondary:#FFD9B3;--sc-surface-caution-primary-hover:#E57300;--sc-surface-caution-primary-active:#B25A00;--sc-surface-caution-secondary-hover:#FFE5CC;--sc-surface-caution-secondary-active:#FFCC99;--sc-surface-danger-primary:#CC0000;--sc-surface-danger-secondary:#FFCCCC;--sc-surface-danger-primary-hover:#E50000;--sc-surface-danger-primary-active:#B30000;--sc-surface-danger-secondary-hover:#FFE7E7;--sc-surface-danger-secondary-active:#FFB3B3;--sc-content-brand:#000000;--sc-content-success:#008000;--sc-content-caution:#994D00;--sc-content-danger:#990000;--sc-content-disabled:#737373;--sc-content-neutral-primary:#292929;--sc-content-neutral-secondary:#404040;--sc-content-brand-on-primary:#FFFFFF;--sc-content-success-on-primary:#FFFFFF;--sc-content-caution-on-primary:#FFFFFF;--sc-content-danger-on-primary:#FFFFFF;--sc-content-disabled-on-disabled:#737373;--sc-border-neutral:rgba(0,0,0, 0.1);--sc-border-brand:#000000;--sc-border-success:#008000;--sc-border-caution:#CC6600;--sc-border-danger:#CC0000;--sc-border-disabled:#737373}:root{--sc-font-family:sans-serif;--sc-heading-1-font-size:32px;--sc-heading-1-line-height:36px;--sc-heading-1-font-weight:700;--sc-heading-2-font-size:29px;--sc-heading-2-line-height:32px;--sc-heading-2-font-weight:700;--sc-heading-3-font-size:26px;--sc-heading-3-line-height:28px;--sc-heading-3-font-weight:700;--sc-heading-4-font-size:23px;--sc-heading-4-line-height:24px;--sc-heading-4-font-weight:700;--sc-heading-5-font-size:20px;--sc-heading-5-line-height:24px;--sc-heading-5-font-weight:700;--sc-heading-6-font-size:10px;--sc-heading-6-line-height:12px;--sc-heading-6-font-weight:700;--sc-body-bold-font-size:16px;--sc-body-bold-line-height:20px;--sc-body-bold-font-weight:700;--sc-body-font-size:16px;--sc-body-line-height:20px;--sc-body-font-weight:400;--sc-body-small-bold-font-size:12px;--sc-body-small-bold-line-height:16px;--sc-body-small-bold-font-weight:700;--sc-body-small-font-size:12px;--sc-body-small-line-height:16px;--sc-body-small-font-weight:400}:root{--sc-breakpoint-sm:576px;--sc-breakpoint-md:768px;--sc-breakpoint-lg:992px}.searchcraft-input-grid{display:grid;gap:4px 8px}.searchcraft-input-grid-buttonLeft{grid-template-rows:repeat(3, auto);grid-template-columns:auto 1fr}.searchcraft-input-grid-buttonLeft .searchcraft-input-button-wrapper{grid-column:1/span 1;grid-row:2/span 1}.searchcraft-input-grid-buttonLeft .searchcraft-input-label-wrapper{grid-column:2/span 1;grid-row:1/span 1}.searchcraft-input-grid-buttonLeft .searchcraft-input-error-wrapper{grid-column:2/span 1;grid-row:3/span 1}.searchcraft-input-grid-buttonLeft .searchcraft-input-wrapper{grid-column:2/span 1;grid-row:2/span 1}.searchcraft-input-grid-buttonRight{grid-template-rows:repeat(3, auto);grid-template-columns:1fr auto}.searchcraft-input-grid-buttonRight .searchcraft-input-button-wrapper{grid-column:2/span 1;grid-row:2/span 1}.searchcraft-input-grid-buttonRight .searchcraft-input-label-wrapper{grid-column:1/span 1;grid-row:1/span 1}.searchcraft-input-grid-buttonRight .searchcraft-input-error-wrapper{grid-column:1/span 1;grid-row:3/span 1}.searchcraft-input-grid-buttonRight .searchcraft-input-wrapper{grid-column:1/span 1;grid-row:2/span 1}.searchcraft-input-grid-buttonNone{grid-template-rows:repeat(3, auto);grid-template-columns:auto}.searchcraft-input-grid-buttonNone .searchcraft-input-button-wrapper{display:none}.searchcraft-input-grid-buttonNone .searchcraft-input-label-wrapper{grid-column:1/span 1;grid-row:1/span 1}.searchcraft-input-grid-buttonNone .searchcraft-input-error-wrapper{grid-column:1/span 1;grid-row:3/span 1}.searchcraft-input-grid-buttonNone .searchcraft-input-wrapper{grid-column:1/span 1;grid-row:2/span 1}.searchcraft-input-wrapper{position:relative;display:flex}.searchcraft-input{font-family:var(--sc-font-family);-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-body-font-weight);line-height:var(--sc-body-line-height);background-color:var(--sc-surface-neutral-secondary);border-radius:var(--sc-input-border-radius);border:none;color:var(--sc-content-neutral-primary);outline:none;padding-left:var(--sc-input-padding-left);padding-right:var(--sc-input-padding-right);padding-top:12px;padding-bottom:12px;flex:1}.searchcraft-input::placeholder{color:var(--sc-content-disabled)}.searchcraft-input:focus{outline:var(--sc-border-brand) solid 2px}.searchcraft-input:focus::placeholder{opacity:0}.searchcraft-input.error{color:var(--sc-content-danger);outline:var(--sc-border-danger) solid 2px}.searchcraft-input.error:focus{outline:var(--sc-border-danger) solid 2px}.searchcraft-input-search-icon-wrapper{align-items:center;justify-content:center;display:flex;position:absolute;pointer-events:none;bottom:0;left:0;top:0;width:var(--sc-input-padding-left)}.searchcraft-input-search-icon{pointer-events:none;width:var(--sc-input-search-icon-size);height:var(--sc-input-search-icon-size)}.searchcraft-input-clear-button{all:unset;align-items:center;justify-content:center;cursor:pointer;display:flex;position:absolute;border:none;outline:none;bottom:0;right:0;top:0;width:var(--sc-input-padding-right)}.searchcraft-input-clear-icon{width:var(--sc-input-clear-icon-size);height:var(--sc-input-clear-icon-size)}";
86
+ const SearchcraftInputFormStyle0 = searchcraftInputFormModuleCss;
87
+
88
+ const SearchcraftInput = class {
89
+ constructor(hostRef) {
90
+ registerInstance(this, hostRef);
91
+ this.inputCleared = createEvent(this, "inputCleared", 7);
92
+ this.noResultsReceived = createEvent(this, "noResultsReceived", 7);
93
+ this.inputFocus = createEvent(this, "inputFocus", 7);
94
+ this.inputBlur = createEvent(this, "inputBlur", 7);
95
+ this.inputInit = createEvent(this, "inputInit", 7);
96
+ this.querySubmit = createEvent(this, "querySubmit", 7);
97
+ /**
98
+ * Whether or not to automatically submit the search term when the input changes.
99
+ */
100
+ this.autoSearch = true;
101
+ /**
102
+ * Where to place the search button.
103
+ */
104
+ this.buttonPlacement = 'none';
105
+ /**
106
+ * A custom styles object to be applied to the input element.
107
+ */
108
+ this.customStyles = {};
109
+ /**
110
+ * The input element's placeholder value.
111
+ */
112
+ this.placeholderValue = 'Enter Search';
113
+ /**
114
+ * The starting value of the input element.
115
+ */
116
+ this.searchTerm = '';
117
+ this.inputValue = this.searchTerm;
118
+ this.error = false;
119
+ this.isSearchcraftInitialized = false;
120
+ this.searchStore = useSearchcraftStore.getState();
121
+ this.handleOnInput = (event) => {
122
+ const input = event.target;
123
+ this.inputValue = input.value;
124
+ if (input.value.trim() === '') {
125
+ this.inputCleared.emit();
126
+ this.searchTerm = '';
127
+ this.searchStore.setQuery('');
128
+ this.searchStore.setSearchResults(null);
129
+ return;
130
+ }
131
+ if (!this.autoSearch) {
132
+ return;
133
+ }
134
+ this.performSearch(input.value);
135
+ };
136
+ this.performSearch = async (value) => {
137
+ if (value === useSearchcraftStore.getState().query) {
138
+ return;
139
+ }
140
+ this.searchTerm = value.trim();
141
+ this.error = false;
142
+ this.searchStore.setQuery(this.searchTerm);
143
+ this.querySubmit.emit(this.searchTerm);
144
+ try {
145
+ await this.searchStore.search();
146
+ }
147
+ catch (error) {
148
+ this.error = true;
149
+ this.inputCleared.emit();
150
+ }
151
+ };
152
+ this.handleClearInput = () => {
153
+ this.inputValue = '';
154
+ this.searchTerm = '';
155
+ this.searchStore.setQuery('');
156
+ this.searchStore.setSearchResults(null);
157
+ this.error = false;
158
+ if (this.inputCleared) {
159
+ this.inputCleared.emit();
160
+ }
161
+ };
162
+ this.handleFormSubmit = async (event) => {
163
+ event.preventDefault();
164
+ await this.performSearch(this.searchTerm);
165
+ };
166
+ }
167
+ init() {
168
+ if (this.config && !this.isSearchcraftInitialized) {
169
+ const searchcraft = new ae(this.config, {
170
+ sdkName: packageJson.name,
171
+ sdkVersion: packageJson.version,
172
+ });
173
+ this.searchStore.initialize(searchcraft, true);
174
+ this.isSearchcraftInitialized = true;
175
+ this.inputInit.emit();
176
+ }
177
+ }
178
+ componentDidLoad() {
179
+ this.init();
180
+ }
181
+ onConfigChange() {
182
+ this.init();
183
+ }
184
+ render() {
185
+ const validatedCustomStyles = parseCustomStyles(this.customStyles);
186
+ const isShowingClearButton = this.inputValue.length > 0;
187
+ const inputGridClassNames = classNames('searchcraft-input-grid', {
188
+ 'searchcraft-input-grid-buttonLeft': this.buttonPlacement === 'left',
189
+ 'searchcraft-input-grid-buttonRight': this.buttonPlacement === 'right',
190
+ 'searchcraft-input-grid-buttonNone': this.buttonPlacement === 'none',
191
+ });
192
+ const shouldHaveVerticalGap = this.inputLabel || this.error;
193
+ const inputGridStyles = {
194
+ gap: shouldHaveVerticalGap ? '4px 8px' : '0px 8px',
195
+ };
196
+ 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) => {
197
+ this.handleOnInput(event);
198
+ }, 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' }))))))));
199
+ }
200
+ static get watchers() { return {
201
+ "config": ["onConfigChange"]
202
+ }; }
203
+ };
204
+ SearchcraftInput.style = SearchcraftInputFormStyle0;
205
+
206
+ const searchcraftPopoverListViewModuleCss = "";
207
+ const SearchcraftPopoverListViewStyle0 = searchcraftPopoverListViewModuleCss;
208
+
209
+ const SearchcraftPopoverListView = class {
210
+ constructor(hostRef) {
211
+ registerInstance(this, hostRef);
212
+ }
213
+ renderDocument(document, index) {
214
+ /**
215
+ * Index field values -> Result container props mappings.
216
+ */
217
+ const titleContent = getDocumentValueFromSearchResultMapping(document, this.popoverResultMappings.title);
218
+ const subtitleContent = getDocumentValueFromSearchResultMapping(document, this.popoverResultMappings.subtitle);
219
+ const href = getDocumentValueFromSearchResultMapping(document, this.popoverResultMappings.href);
220
+ const imageSource = getDocumentValueFromSearchResultMapping(document, this.popoverResultMappings.imageSource);
221
+ const imageAlt = getDocumentValueFromSearchResultMapping(document, this.popoverResultMappings.imageAlt);
222
+ return (h("searchcraft-popover-list-item", { key: `${document.document_id}-${index}`, "title-content": titleContent, "subtitle-content": subtitleContent, "image-src": imageSource, "image-alt": imageAlt, href: href, "document-position": index }));
223
+ }
224
+ render() {
225
+ var _a;
226
+ return (h("div", { key: '6e9017370d7079412d6d31fb439be599d689c9c2', class: 'searchcraft-popover-list-view' }, (_a = this.documents) === null || _a === void 0 ? void 0 : _a.map((document, index) => this.renderDocument(document, index))));
227
+ }
228
+ };
229
+ SearchcraftPopoverListView.style = SearchcraftPopoverListViewStyle0;
230
+
231
+ export { SearchcraftInput as searchcraft_input_form, SearchcraftPopoverListView as searchcraft_popover_list_view };
232
+
233
+ //# sourceMappingURL=searchcraft-input-form_2.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"searchcraft-input-form.searchcraft-popover-list-view.entry.js","mappings":"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","names":["SearchcraftCore"],"sources":["src/components/searchcraft-input-form/searchcraft-input-form.module.scss?tag=searchcraft-input-form","src/components/searchcraft-input-form/searchcraft-input-form.tsx","src/components/searchcraft-popover-list-view/searchcraft-popover-list-view.module.scss?tag=searchcraft-popover-list-view","src/components/searchcraft-popover-list-view/searchcraft-popover-list-view.tsx"],"sourcesContent":[".searchcraft-input-grid {\n display: grid;\n gap: 4px 8px;\n}\n\n.searchcraft-input-grid-buttonLeft {\n grid-template-rows: repeat(3, auto);\n grid-template-columns: auto 1fr;\n\n & .searchcraft-input-button-wrapper {\n grid-column: 1 / span 1;\n grid-row: 2 / span 1;\n }\n\n & .searchcraft-input-label-wrapper {\n grid-column: 2 / span 1;\n grid-row: 1 / span 1;\n }\n\n & .searchcraft-input-error-wrapper {\n grid-column: 2 / span 1;\n grid-row: 3 / span 1;\n }\n\n & .searchcraft-input-wrapper {\n grid-column: 2 / span 1;\n grid-row: 2 / span 1;\n }\n}\n\n.searchcraft-input-grid-buttonRight {\n grid-template-rows: repeat(3, auto);\n grid-template-columns: 1fr auto;\n\n & .searchcraft-input-button-wrapper {\n grid-column: 2 / span 1;\n grid-row: 2 / span 1;\n }\n\n & .searchcraft-input-label-wrapper {\n grid-column: 1 / span 1;\n grid-row: 1 / span 1;\n }\n\n & .searchcraft-input-error-wrapper {\n grid-column: 1 / span 1;\n grid-row: 3 / span 1;\n }\n\n & .searchcraft-input-wrapper {\n grid-column: 1 / span 1;\n grid-row: 2 / span 1;\n }\n}\n\n.searchcraft-input-grid-buttonNone {\n grid-template-rows: repeat(3, auto);\n grid-template-columns: auto;\n\n & .searchcraft-input-button-wrapper {\n display: none;\n }\n\n & .searchcraft-input-label-wrapper {\n grid-column: 1 / span 1;\n grid-row: 1 / span 1;\n }\n\n & .searchcraft-input-error-wrapper {\n grid-column: 1 / span 1;\n grid-row: 3 / span 1;\n }\n\n & .searchcraft-input-wrapper {\n grid-column: 1 / span 1;\n grid-row: 2 / span 1;\n }\n}\n\n.searchcraft-input-wrapper {\n position: relative;\n display: flex;\n}\n\n.searchcraft-input {\n @include body();\n background-color: var(--sc-surface-neutral-secondary);\n border-radius: var(--sc-input-border-radius);\n border: none;\n color: var(--sc-content-neutral-primary);\n outline: none;\n padding-left: var(--sc-input-padding-left);\n padding-right: var(--sc-input-padding-right);\n padding-top: 12px;\n padding-bottom: 12px;\n flex: 1;\n\n &::placeholder {\n color: var(--sc-content-disabled);\n }\n\n &:focus {\n outline: var(--sc-border-brand) solid 2px;\n }\n\n &:focus::placeholder {\n opacity: 0;\n }\n}\n\n.searchcraft-input.error {\n color: var(--sc-content-danger);\n outline: var(--sc-border-danger) solid 2px;\n\n &:focus {\n outline: var(--sc-border-danger) solid 2px;\n }\n}\n\n.searchcraft-input-search-icon-wrapper {\n align-items: center;\n justify-content: center;\n display: flex;\n position: absolute;\n pointer-events: none;\n bottom: 0;\n left: 0;\n top: 0;\n width: var(--sc-input-padding-left);\n}\n\n.searchcraft-input-search-icon {\n pointer-events: none;\n width: var(--sc-input-search-icon-size);\n height: var(--sc-input-search-icon-size);\n}\n\n.searchcraft-input-clear-button {\n all: unset;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n display: flex;\n position: absolute;\n border: none;\n outline: none;\n bottom: 0;\n right: 0;\n top: 0;\n width: var(--sc-input-padding-right);\n}\n\n.searchcraft-input-clear-icon {\n width: var(--sc-input-clear-icon-size);\n height: var(--sc-input-clear-icon-size);\n}\n","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","","import { Component, h, Prop } from '@stencil/core';\n\nimport { getDocumentValueFromSearchResultMapping } from '@utils';\nimport type { PopoverResultMappings } from 'types';\n\n/**\n * This web component is designed to display a list of results within a popover interface.\n * It is consumed within the `searchcraft-popover-form` component.\n *\n * ## Usage\n * ```html\n * <!-- index.html -->\n * <searchcraft-popover-list-view />\n * ```\n */\n@Component({\n tag: 'searchcraft-popover-list-view',\n styleUrl: 'searchcraft-popover-list-view.module.scss',\n shadow: false,\n})\nexport class SearchcraftPopoverListView {\n /**\n * The mappings that define how the data in the documents are mapped to the\n * list-view-item elements.\n */\n @Prop() popoverResultMappings: PopoverResultMappings | undefined;\n /**\n * The documents to render in the list view.\n */\n @Prop() documents: Record<string, unknown>[] | undefined;\n\n renderDocument(document: Record<string, unknown>, index: number) {\n /**\n * Index field values -> Result container props mappings.\n */\n const titleContent = getDocumentValueFromSearchResultMapping(\n document,\n this.popoverResultMappings.title,\n );\n const subtitleContent = getDocumentValueFromSearchResultMapping(\n document,\n this.popoverResultMappings.subtitle,\n );\n const href = getDocumentValueFromSearchResultMapping(\n document,\n this.popoverResultMappings.href,\n );\n const imageSource = getDocumentValueFromSearchResultMapping(\n document,\n this.popoverResultMappings.imageSource,\n );\n const imageAlt = getDocumentValueFromSearchResultMapping(\n document,\n this.popoverResultMappings.imageAlt,\n );\n\n return (\n <searchcraft-popover-list-item\n key={`${document.document_id}-${index}`}\n title-content={titleContent}\n subtitle-content={subtitleContent}\n image-src={imageSource}\n image-alt={imageAlt}\n href={href}\n document-position={index}\n />\n );\n }\n\n render() {\n return (\n <div class='searchcraft-popover-list-view'>\n {this.documents?.map((document, index) =>\n this.renderDocument(document, index),\n )}\n </div>\n );\n }\n}\n"],"version":3}
@@ -1,9 +1,9 @@
1
- import { p as promiseResolve, b as bootstrapLazy } from './index-be042742.js';
2
- export { s as setNonce } from './index-be042742.js';
1
+ import { p as promiseResolve, b as bootstrapLazy } from './index-56b713de.js';
2
+ export { s as setNonce } from './index-56b713de.js';
3
3
  import { g as globalScripts } from './app-globals-0f993ce5.js';
4
4
 
5
5
  /*
6
- Stencil Client Patch Browser v4.22.3 | MIT Licensed | https://stenciljs.com
6
+ Stencil Client Patch Browser v4.25.0 | MIT Licensed | https://stenciljs.com
7
7
  */
8
8
  var patchBrowser = () => {
9
9
  const importMeta = import.meta.url;
@@ -16,7 +16,7 @@ var patchBrowser = () => {
16
16
 
17
17
  patchBrowser().then(async (options) => {
18
18
  await globalScripts();
19
- return bootstrapLazy([["searchcraft-filter-panel",[[0,"searchcraft-filter-panel",{"items":[16],"unsubscribe":[32],"lastQuery":[32]}]]],["searchcraft-input-form",[[0,"searchcraft-input-form",{"config":[16],"autoSearch":[4,"auto-search"],"buttonPlacement":[1,"button-placement"],"buttonLabel":[1,"button-label"],"inputLabel":[1,"input-label"],"customStyles":[1,"custom-styles"],"placeholderValue":[1,"placeholder-value"],"searchTerm":[1,"search-term"],"debounceDelay":[2,"debounce-delay"],"inputValue":[32],"error":[32],"isSearchcraftInitialized":[32]},null,{"config":["onConfigChange"]}]]],["searchcraft-base-search-results",[[4,"searchcraft-base-search-results",{"adInterval":[2,"ad-interval"],"customStylesForResults":[1,"custom-styles-for-results"],"searchResultMappings":[16],"placeAdAtEnd":[4,"place-ad-at-end"],"placeAdAtStart":[4,"place-ad-at-start"],"resultImagePlacement":[1,"result-image-placement"],"buttonLabel":[1,"button-label"],"buttonTarget":[1,"button-target"],"buttonRel":[1,"button-rel"],"containerTarget":[1,"container-target"],"containerRel":[1,"container-rel"],"hasSearched":[32],"query":[32],"searchResults":[32]}]]],["searchcraft-popover-form",[[0,"searchcraft-popover-form",{"config":[16],"type":[1],"popoverResultMappings":[16]}]]],["searchcraft-popover-result",[[0,"searchcraft-popover-result"]]],["searchcraft-results-info",[[0,"searchcraft-results-info",{"isRequesting":[32],"resultsCount":[32],"responseTime":[32],"query":[32]}]]],["searchcraft-base-search-result",[[0,"searchcraft-base-search-result",{"titleContent":[1,"title-content"],"subtitleContent":[1,"subtitle-content"],"bodyContent":[1,"body-content"],"footerContent":[1,"footer-content"],"buttonLabel":[1,"button-label"],"buttonHref":[1,"button-href"],"buttonTarget":[1,"button-target"],"buttonRel":[1,"button-rel"],"containerHref":[1,"container-href"],"containerTarget":[1,"container-target"],"containerRel":[1,"container-rel"],"imageSrc":[1,"image-src"],"imageAlt":[1,"image-alt"],"imagePlacement":[1,"image-placement"],"customStyles":[1,"custom-styles"],"documentPosition":[2,"document-position"]}]]],["searchcraft-popover-list-view",[[0,"searchcraft-popover-list-view",{"popoverResultMappings":[16]}]]],["searchcraft-button_2",[[0,"searchcraft-button",{"iconElement":[16],"iconOnly":[4,"icon-only"],"iconPosition":[1,"icon-position"],"label":[1],"isRequesting":[32]}],[0,"searchcraft-input-label",{"inputLabelClassName":[1,"input-label-class-name"],"label":[1]}]]],["searchcraft-error-message",[[0,"searchcraft-error-message",{"errorMessage":[1,"error-message"]}]]],["searchcraft-facet-list_3",[[0,"searchcraft-facet-list",{"fieldName":[1,"field-name"],"baseFacetRoot":[32],"facetRoot":[32],"selectedPaths":[32],"lastTimeTaken":[32],"hasNewSearchTerm":[32],"lastQuery":[32],"lastSearchMode":[32],"lastSortType":[32],"unsubscribe":[32]}],[0,"searchcraft-slider",{"max":[2],"min":[2],"granularity":[2],"dataType":[1,"data-type"],"endValue":[32],"startValue":[32],"lastFocusedHandle":[32]}],[0,"searchcraft-toggle-button",{"label":[1],"subLabel":[1,"sub-label"],"isActive":[32],"unsubscribe":[32],"lastQuery":[32]}]]]], options);
19
+ return bootstrapLazy([["searchcraft-filter-panel",[[0,"searchcraft-filter-panel",{"items":[16],"unsubscribe":[32],"lastQuery":[32]}]]],["searchcraft-base-search-results",[[4,"searchcraft-base-search-results",{"adInterval":[2,"ad-interval"],"customStylesForResults":[1,"custom-styles-for-results"],"searchResultMappings":[16],"placeAdAtEnd":[4,"place-ad-at-end"],"placeAdAtStart":[4,"place-ad-at-start"],"resultImagePlacement":[1,"result-image-placement"],"buttonLabel":[1,"button-label"],"buttonTarget":[1,"button-target"],"buttonRel":[1,"button-rel"],"containerTarget":[1,"container-target"],"containerRel":[1,"container-rel"],"hasSearched":[32],"query":[32],"searchResults":[32]}]]],["searchcraft-popover-button",[[4,"searchcraft-popover-button"]]],["searchcraft-results-info",[[0,"searchcraft-results-info",{"isRequesting":[32],"resultsCount":[32],"responseTime":[32],"query":[32]}]]],["searchcraft-base-search-result",[[0,"searchcraft-base-search-result",{"titleContent":[1,"title-content"],"subtitleContent":[1,"subtitle-content"],"bodyContent":[1,"body-content"],"footerContent":[1,"footer-content"],"buttonLabel":[1,"button-label"],"buttonHref":[1,"button-href"],"buttonTarget":[1,"button-target"],"buttonRel":[1,"button-rel"],"containerHref":[1,"container-href"],"containerTarget":[1,"container-target"],"containerRel":[1,"container-rel"],"imageSrc":[1,"image-src"],"imageAlt":[1,"image-alt"],"imagePlacement":[1,"image-placement"],"customStyles":[1,"custom-styles"],"documentPosition":[2,"document-position"]}]]],["searchcraft-popover-list-item",[[0,"searchcraft-popover-list-item",{"titleContent":[1,"title-content"],"subtitleContent":[1,"subtitle-content"],"imageSrc":[1,"image-src"],"imageAlt":[1,"image-alt"],"href":[1],"documentPosition":[2,"document-position"]}]]],["searchcraft-button_3",[[0,"searchcraft-button",{"iconElement":[16],"iconOnly":[4,"icon-only"],"iconPosition":[1,"icon-position"],"label":[1],"isRequesting":[32]}],[0,"searchcraft-input-label",{"inputLabelClassName":[1,"input-label-class-name"],"label":[1]}],[0,"searchcraft-error-message",{"errorMessage":[1,"error-message"]}]]],["searchcraft-input-form_2",[[0,"searchcraft-input-form",{"config":[16],"autoSearch":[4,"auto-search"],"buttonPlacement":[1,"button-placement"],"buttonLabel":[1,"button-label"],"inputLabel":[1,"input-label"],"customStyles":[1,"custom-styles"],"placeholderValue":[1,"placeholder-value"],"searchTerm":[1,"search-term"],"inputValue":[32],"error":[32],"isSearchcraftInitialized":[32]},null,{"config":["onConfigChange"]}],[0,"searchcraft-popover-list-view",{"popoverResultMappings":[16],"documents":[16]}]]],["searchcraft-popover-form",[[0,"searchcraft-popover-form",{"config":[16],"type":[1],"popoverResultMappings":[16],"hotkey":[1],"hotkeyModifier":[1,"hotkey-modifier"],"isPopoverVisibleInState":[32],"unsubscribe":[32],"searchResults":[32],"searchTerm":[32],"isFocused":[32],"breakpointSm":[32],"breakpointMd":[32],"breakpointLg":[32],"modalElement":[32]}]]],["searchcraft-facet-list_3",[[0,"searchcraft-facet-list",{"fieldName":[1,"field-name"],"baseFacetRoot":[32],"facetRoot":[32],"selectedPaths":[32],"lastTimeTaken":[32],"hasNewSearchTerm":[32],"lastQuery":[32],"lastSearchMode":[32],"lastSortType":[32],"unsubscribe":[32]}],[0,"searchcraft-slider",{"max":[2],"min":[2],"granularity":[2],"dataType":[1,"data-type"],"endValue":[32],"startValue":[32],"lastFocusedHandle":[32]}],[0,"searchcraft-toggle-button",{"label":[1],"subLabel":[1,"sub-label"],"isActive":[32],"unsubscribe":[32],"lastQuery":[32]}]]]], options);
20
20
  });
21
21
 
22
22
  //# sourceMappingURL=searchcraft-javascript-sdk.js.map
@@ -1 +1 @@
1
- {"file":"searchcraft-javascript-sdk.js","mappings":";;;;AAAA;AACA;AACA;AAKA,IAAI,YAAY,GAAG,MAAM;AAUzB,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACrC,EAAE,MAAM,IAAI,GAAiE,EAAE,CAAC;AAChF,EAAE,IAAI,UAAU,KAAK,EAAE,EAAE;AACzB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC;AACtD,GAAG;AACH,EAAE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;;ACnBD,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK;AACvC,EAAE,MAAM,aAAa,EAAE,CAAC;AACxB,EAAE,OAAO,aAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC,CAAC","names":[],"sources":["../../node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v4.22.3 | MIT Licensed | https://stenciljs.com\n */\n\n// src/client/client-patch-browser.ts\nimport { BUILD, NAMESPACE } from \"@stencil/core/internal/app-data\";\nimport { consoleDevInfo, doc, H, promiseResolve } from \"@stencil/core\";\nvar patchBrowser = () => {\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo(\"Running in development mode.\");\n }\n if (BUILD.cloneNodeFix) {\n patchCloneNodeFix(H.prototype);\n }\n const scriptElm = BUILD.scriptDataOpts ? Array.from(doc.querySelectorAll(\"script\")).find(\n (s) => new RegExp(`/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) || s.getAttribute(\"data-stencil-namespace\") === NAMESPACE\n ) : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? (scriptElm || {})[\"data-opts\"] || {} : {};\n if (importMeta !== \"\") {\n opts.resourcesUrl = new URL(\".\", importMeta).href;\n }\n return promiseResolve(opts);\n};\nvar patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function(deep) {\n if (this.nodeName === \"TEMPLATE\") {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport {\n patchBrowser\n};\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(async (options) => {\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"version":3}
1
+ {"file":"searchcraft-javascript-sdk.js","mappings":";;;;AAAA;AACA;AACA;AAKA,IAAI,YAAY,GAAG,MAAM;AAUzB,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACrC,EAAE,MAAM,IAAI,GAAiE,EAAE,CAAC;AAChF,EAAE,IAAI,UAAU,KAAK,EAAE,EAAE;AACzB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC;AACtD,GAAG;AACH,EAAE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;;ACnBD,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK;AACvC,EAAE,MAAM,aAAa,EAAE,CAAC;AACxB,EAAE,OAAO,aAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC,CAAC","names":[],"sources":["../../node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v4.25.0 | MIT Licensed | https://stenciljs.com\n */\n\n// src/client/client-patch-browser.ts\nimport { BUILD, NAMESPACE } from \"@stencil/core/internal/app-data\";\nimport { consoleDevInfo, doc, H, promiseResolve } from \"@stencil/core\";\nvar patchBrowser = () => {\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo(\"Running in development mode.\");\n }\n if (BUILD.cloneNodeFix) {\n patchCloneNodeFix(H.prototype);\n }\n const scriptElm = BUILD.scriptDataOpts ? Array.from(doc.querySelectorAll(\"script\")).find(\n (s) => new RegExp(`/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) || s.getAttribute(\"data-stencil-namespace\") === NAMESPACE\n ) : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? (scriptElm || {})[\"data-opts\"] || {} : {};\n if (importMeta !== \"\") {\n opts.resourcesUrl = new URL(\".\", importMeta).href;\n }\n return promiseResolve(opts);\n};\nvar patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function(deep) {\n if (this.nodeName === \"TEMPLATE\") {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport {\n patchBrowser\n};\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(async (options) => {\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"version":3}
@@ -0,0 +1,22 @@
1
+ import { r as registerInstance, h } from './index-56b713de.js';
2
+ import { u as useSearchcraftStore } from './store-712f0586.js';
3
+
4
+ const searchcraftPopoverButtonModuleCss = "";
5
+ const SearchcraftPopoverButtonStyle0 = searchcraftPopoverButtonModuleCss;
6
+
7
+ const SearchcraftPopoverButton = class {
8
+ constructor(hostRef) {
9
+ registerInstance(this, hostRef);
10
+ }
11
+ handleOnClick() {
12
+ useSearchcraftStore.getState().setPopoverVisibility(true);
13
+ }
14
+ render() {
15
+ return (h("button", { key: '7885ca44b5ce619d572194d60c3b7e9d9f6666be', type: 'button', onClick: this.handleOnClick.bind(this) }, h("slot", { key: '0a8dc506eadbc725e3ed4c7c6987e02dfcecc229' })));
16
+ }
17
+ };
18
+ SearchcraftPopoverButton.style = SearchcraftPopoverButtonStyle0;
19
+
20
+ export { SearchcraftPopoverButton as searchcraft_popover_button };
21
+
22
+ //# sourceMappingURL=searchcraft-popover-button.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"searchcraft-popover-button.entry.js","mappings":";;;AAAA,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAC7C,uCAAe,iCAAiC;;MCUnC,wBAAwB;;;;IACnC,aAAa;QACX,mBAAmB,CAAC,QAAQ,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;KAC3D;IAED,MAAM;QACJ,QACE,+DAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAC1D,8DAAQ,CACD,EACT;KACH;;;;;;","names":[],"sources":["src/components/searchcraft-popover-button/searchcraft-popover-button.module.scss?tag=searchcraft-popover-button","src/components/searchcraft-popover-button/searchcraft-popover-button.tsx"],"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"],"version":3}
@@ -1,18 +1,219 @@
1
- import { r as registerInstance, h } from './index-be042742.js';
1
+ import { r as registerInstance, h, g as getElement } from './index-56b713de.js';
2
+ import { c as classNames } from './index-72ac5051.js';
3
+ import { u as useSearchcraftStore } from './store-712f0586.js';
2
4
 
3
- const searchcraftPopoverFormModuleCss = "";
5
+ const searchcraftPopoverFormModuleCss = ":root{--sc-input-border-radius:8px;--sc-input-search-icon-size:20px;--sc-input-clear-icon-size:20px;--sc-input-padding-left:44px;--sc-input-padding-right:44px;--sc-image-border-radius:8px;--sc-popover-form-border-radius:8px;--sc-popover-list-view-height:400px;--sc-popover-list-item-image-size:60px;--sc-popover-list-item-padding-horizontal:8px;--sc-popover-list-item-padding-vertical:8px;--sc-popover-modal-max-width:570px}:root{--sc-surface-disabled:#D9D9D9;--sc-surface-neutral-primary:#FFFFFF;--sc-surface-neutral-secondary:#F3F3F3;--sc-surface-neutral-light:#FFFFFF;--sc-surface-neutral-primary-hover:#FAFAFA;--sc-surface-neutral-primary-active:#F7F7F7;--sc-surface-neutral-secondary-hover:#EDEDED;--sc-surface-neutral-secondary-active:#E6E6E6;--sc-surface-brand-primary:#000000;--sc-surface-brand-secondary:#E6E6E6;--sc-surface-brand-primary-hover:#2E2E2E;--sc-surface-brand-primary-active:#292929;--sc-surface-brand-secondary-hover:#EBEBEB;--sc-surface-brand-secondary-active:#E0E0E0;--sc-surface-success-primary:#008000;--sc-surface-success-secondary:#CCFFCC;--sc-surface-success-primary-hover:#009900;--sc-surface-success-primary-active:#006600;--sc-surface-success-secondary-hover:#E6FFE6;--sc-surface-success-secondary-active:#E6FFE6;--sc-surface-caution-primary:#CC6600;--sc-surface-caution-secondary:#FFD9B3;--sc-surface-caution-primary-hover:#E57300;--sc-surface-caution-primary-active:#B25A00;--sc-surface-caution-secondary-hover:#FFE5CC;--sc-surface-caution-secondary-active:#FFCC99;--sc-surface-danger-primary:#CC0000;--sc-surface-danger-secondary:#FFCCCC;--sc-surface-danger-primary-hover:#E50000;--sc-surface-danger-primary-active:#B30000;--sc-surface-danger-secondary-hover:#FFE7E7;--sc-surface-danger-secondary-active:#FFB3B3;--sc-content-brand:#000000;--sc-content-success:#008000;--sc-content-caution:#994D00;--sc-content-danger:#990000;--sc-content-disabled:#737373;--sc-content-neutral-primary:#292929;--sc-content-neutral-secondary:#404040;--sc-content-brand-on-primary:#FFFFFF;--sc-content-success-on-primary:#FFFFFF;--sc-content-caution-on-primary:#FFFFFF;--sc-content-danger-on-primary:#FFFFFF;--sc-content-disabled-on-disabled:#737373;--sc-border-neutral:rgba(0,0,0, 0.1);--sc-border-brand:#000000;--sc-border-success:#008000;--sc-border-caution:#CC6600;--sc-border-danger:#CC0000;--sc-border-disabled:#737373}:root{--sc-font-family:sans-serif;--sc-heading-1-font-size:32px;--sc-heading-1-line-height:36px;--sc-heading-1-font-weight:700;--sc-heading-2-font-size:29px;--sc-heading-2-line-height:32px;--sc-heading-2-font-weight:700;--sc-heading-3-font-size:26px;--sc-heading-3-line-height:28px;--sc-heading-3-font-weight:700;--sc-heading-4-font-size:23px;--sc-heading-4-line-height:24px;--sc-heading-4-font-weight:700;--sc-heading-5-font-size:20px;--sc-heading-5-line-height:24px;--sc-heading-5-font-weight:700;--sc-heading-6-font-size:10px;--sc-heading-6-line-height:12px;--sc-heading-6-font-weight:700;--sc-body-bold-font-size:16px;--sc-body-bold-line-height:20px;--sc-body-bold-font-weight:700;--sc-body-font-size:16px;--sc-body-line-height:20px;--sc-body-font-weight:400;--sc-body-small-bold-font-size:12px;--sc-body-small-bold-line-height:16px;--sc-body-small-bold-font-weight:700;--sc-body-small-font-size:12px;--sc-body-small-line-height:16px;--sc-body-small-font-weight:400}:root{--sc-breakpoint-sm:576px;--sc-breakpoint-md:768px;--sc-breakpoint-lg:992px}.searchcraft-popover-form{display:flex;flex-direction:column;flex:1}.searchcraft-popover-form .searchcraft-popover-form-input-wrapper{padding:12px;background-color:var(--sc-surface-neutral-secondary);display:flex;flex-direction:row;gap:4px}.searchcraft-popover-form .searchcraft-popover-form-input-wrapper>searchcraft-input-form{flex:1}.searchcraft-popover-form .searchcraft-popover-form-cancel-button{font-family:var(--sc-font-family);-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-body-font-weight);line-height:var(--sc-body-line-height);border:0;outline:0;padding:0;flex-shrink:0;background:none;cursor:pointer;padding-left:12px;padding-right:12px;border-radius:calc(var(--sc-popover-form-border-radius) * 0.8)}.searchcraft-popover-form .searchcraft-popover-form-cancel-button:hover{background-color:var(--sc-surface-brand-secondary-hover)}.searchcraft-popover-form .searchcraft-popover-form-cancel-button:focus{background-color:var(--sc-surface-brand-secondary-active)}.searchcraft-popover-form-inline .searchcraft-input{border-top-left-radius:var(--sc-popover-form-border-radius);border-top-right-radius:var(--sc-popover-form-border-radius);border-bottom-left-radius:var(--sc-popover-form-border-radius);border-bottom-right-radius:var(--sc-popover-form-border-radius);border:none;outline:none}.searchcraft-popover-form-inline.searchcraft-popover-form-active .searchcraft-input{border-top-left-radius:var(--sc-popover-form-border-radius);border-top-right-radius:var(--sc-popover-form-border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0}.searchcraft-popover-form-inline .searchcraft-popover-inline-wrapper-outer{position:relative}.searchcraft-popover-form-inline .searchcraft-popover-inline-wrapper-inner{position:absolute;height:var(--sc-popover-list-view-height);z-index:1000;width:100%}.searchcraft-popover-form-inline .searchcraft-popover-list-view{display:flex;flex-direction:column;overflow:auto;background-color:var(--sc-surface-neutral-secondary);border-bottom-left-radius:var(--sc-popover-form-border-radius);border-bottom-right-radius:var(--sc-popover-form-border-radius);max-height:var(--sc-popover-list-view-height)}.searchcraft-popover-form-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:flex-start;justify-content:center;padding:0;background-color:var(--sc-surface-neutral-secondary)}@media (min-width: 576px){.searchcraft-popover-form-modal{padding:16px;background-color:transparent}}.searchcraft-popover-form-modal .searchcraft-input{border-radius:calc(var(--sc-popover-form-border-radius) * 0.8);outline-width:1px;outline-color:var(--sc-border-neutral)}.searchcraft-popover-form-modal .searchcraft-popover-form-modal-backdrop{position:absolute;inset:0;background-color:rgba(0, 0, 0, 0.5);display:none}@media (min-width: 576px){.searchcraft-popover-form-modal .searchcraft-popover-form-modal-backdrop{display:block}}.searchcraft-popover-form-modal .searchcraft-popover-form-modal-inner{position:absolute;inset:0;z-index:1002;margin-top:0px;display:flex;border-radius:var(--sc-popover-form-border-radius);overflow:hidden}@media (min-width: 576px){.searchcraft-popover-form-modal .searchcraft-popover-form-modal-inner{inset:auto;position:relative;width:100%;margin-top:100px;max-width:var(--sc-popover-modal-max-width)}}.searchcraft-popover-form-modal .searchcraft-popover-list-view{display:flex;flex-direction:column;overflow:auto;background-color:var(--sc-surface-neutral-secondary);border-bottom-left-radius:0;border-bottom-right-radius:0}@media (min-width: 576px){.searchcraft-popover-form-modal .searchcraft-popover-list-view{max-height:var(--sc-popover-list-view-height)}}.searchcraft-popover-form-modal searchcraft-popover-list-view{overflow:scroll}@media (min-width: 576px){.searchcraft-popover-form-modal searchcraft-popover-list-view{overflow:auto}}.searchcraft-popover-form-fullscreen{position:fixed;inset:0;z-index:1000;background-color:var(--sc-surface-neutral-secondary)}.searchcraft-popover-form-fullscreen .searchcraft-popover-form{position:absolute;inset:0}.searchcraft-popover-form-fullscreen .searchcraft-input{border-radius:calc(var(--sc-popover-form-border-radius) * 0.8);outline-width:1px;outline-color:var(--sc-border-neutral)}.searchcraft-popover-form-fullscreen searchcraft-popover-list-view{overflow:scroll}";
4
6
  const SearchcraftPopoverFormStyle0 = searchcraftPopoverFormModuleCss;
5
7
 
6
8
  const SearchcraftPopoverForm = class {
7
9
  constructor(hostRef) {
8
10
  registerInstance(this, hostRef);
9
- this.config = undefined;
11
+ /**
12
+ * The type of popover form to render.
13
+ *
14
+ * - `inline` - Renders inline with the rest of the content on the page. The search results pop over the page content.
15
+ * - `fullscreen` - Renders in fullscreen view. Used together with the `searchcraft-popover-button` component.
16
+ * - `modal` - Renders in a modal view. Used together with the `searchcraft-popover-button` component.
17
+ */
10
18
  this.type = 'inline';
11
- this.popoverResultMappings = undefined;
19
+ /**
20
+ * The hotkey that activates the popover.
21
+ */
22
+ this.hotkey = 'k';
23
+ /**
24
+ * The hotkey modifier that activates the popover. Used together with the `hotkey` prop.
25
+ */
26
+ this.hotkeyModifier = 'meta';
27
+ this.isPopoverVisibleInState = false;
28
+ this.isFocused = false;
29
+ this.breakpointSm = 576;
30
+ this.breakpointMd = 768;
31
+ this.breakpointLg = 992;
32
+ this.handleDocumentClick = (event) => {
33
+ if (!this.hostElement.contains(event.target)) {
34
+ this.isFocused = false;
35
+ }
36
+ };
37
+ /**
38
+ * Actions to perform when various keys are pressed within the popover form.
39
+ */
40
+ this.handleDocumentKeyDown = (event) => {
41
+ // Document-scoped actions
42
+ if (event.key === this.hotkey) {
43
+ this.handleHotkeyPressed(event);
44
+ }
45
+ // Document-scoped -> Popover-scoped keyboard event boundary
46
+ if (!this.hostElement.contains(document.activeElement)) {
47
+ return;
48
+ }
49
+ // Popover-scoped actions
50
+ switch (event.key) {
51
+ case 'ArrowDown':
52
+ case 'ArrowUp':
53
+ event.preventDefault();
54
+ this.focusOnNextListItem(event.key);
55
+ break;
56
+ case 'Escape':
57
+ useSearchcraftStore.getState().setPopoverVisibility(false);
58
+ break;
59
+ default:
60
+ return;
61
+ }
62
+ };
63
+ this.handleInputInit = () => {
64
+ const input = this.hostElement.querySelector('.searchcraft-input');
65
+ input === null || input === void 0 ? void 0 : input.focus();
66
+ };
67
+ }
68
+ componentDidLoad() {
69
+ // Loads the breakpoint values into state
70
+ const computedStyle = getComputedStyle(document.documentElement);
71
+ this.breakpointSm = Number.parseFloat(computedStyle.getPropertyValue('--sc-breakpoint-sm').trim());
72
+ this.breakpointMd = Number.parseFloat(computedStyle.getPropertyValue('--sc-breakpoint-md').trim());
73
+ this.breakpointLg = Number.parseFloat(computedStyle.getPropertyValue('--sc-breakpoint-lg').trim());
74
+ // Set popover visiblity in state
75
+ this.isPopoverVisibleInState =
76
+ useSearchcraftStore.getState().isPopoverVisible;
77
+ // Add event listeners
78
+ document.addEventListener('click', this.handleDocumentClick);
79
+ document.addEventListener('keydown', this.handleDocumentKeyDown);
80
+ // Subscribe to state events
81
+ this.unsubscribe = useSearchcraftStore.subscribe((state) => {
82
+ if (this.isPopoverVisibleInState !== state.isPopoverVisible) {
83
+ this.handlePopoverVisibilityChange(state.isPopoverVisible);
84
+ }
85
+ this.searchResults = Object.assign({}, state.searchResults);
86
+ this.searchTerm = state.query;
87
+ });
88
+ }
89
+ disconnectedCallback() {
90
+ var _a;
91
+ (_a = this.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(this);
92
+ document.removeEventListener('click', this.handleDocumentClick);
93
+ document.removeEventListener('keydown', this.handleDocumentKeyDown);
94
+ }
95
+ /**
96
+ * Handles when popover visibility is changed in state
97
+ */
98
+ handlePopoverVisibilityChange(isVisible) {
99
+ this.isPopoverVisibleInState = isVisible;
100
+ document.body.style.overflow = isVisible ? 'hidden' : 'auto';
101
+ }
102
+ /**
103
+ * When popover is `inline` and the viewport is at the smallest breakpoint,
104
+ * focusing on the input will open a modal version of the popover form.
105
+ */
106
+ handleInputFocus() {
107
+ this.isFocused = true;
108
+ if (this.type === 'inline' &&
109
+ window.visualViewport.width < this.breakpointSm) {
110
+ useSearchcraftStore.getState().setPopoverVisibility(true);
111
+ // Appends a popover form of type=`modal` to the body
112
+ if (!this.modalElement) {
113
+ this.modalElement = document.createElement('searchcraft-popover-form');
114
+ this.modalElement.config = this.config;
115
+ this.modalElement.popoverResultMappings = this.popoverResultMappings;
116
+ this.modalElement.setAttribute('type', 'fullscreen');
117
+ document.body.appendChild(this.modalElement);
118
+ }
119
+ }
120
+ }
121
+ handleModalBackdropClick(_event) {
122
+ useSearchcraftStore.getState().setPopoverVisibility(false);
123
+ }
124
+ /**
125
+ * When a hotkey is pressed, tests if the modifiers also match.
126
+ * If modifiers match, toggles visibility of the popover modal.
127
+ */
128
+ handleHotkeyPressed(event) {
129
+ if ((event.ctrlKey && this.hotkeyModifier === 'ctrl') ||
130
+ (event.altKey && this.hotkeyModifier === 'alt') ||
131
+ (event.metaKey && this.hotkeyModifier === 'meta')) {
132
+ event.preventDefault();
133
+ if (this.type === 'inline' && !this.isPopoverVisibleInState) {
134
+ const hostElementInput = this.hostElement.querySelector('.searchcraft-input');
135
+ hostElementInput === null || hostElementInput === void 0 ? void 0 : hostElementInput.focus();
136
+ }
137
+ else {
138
+ useSearchcraftStore
139
+ .getState()
140
+ .setPopoverVisibility(!this.isPopoverVisibleInState);
141
+ }
142
+ }
143
+ }
144
+ handleCancelButtonClick() {
145
+ useSearchcraftStore.getState().setPopoverVisibility(false);
146
+ }
147
+ /**
148
+ * Moves focus to the next/previous list item in the list view. If you are at the top
149
+ * of the list view, it moves focus back to the input.
150
+ *
151
+ * @param direction
152
+ */
153
+ focusOnNextListItem(direction) {
154
+ var _a, _b;
155
+ const listItems = Array.from(document.querySelectorAll('a.searchcraft-popover-list-item')).filter((el) => !el.hasAttribute('disabled') && el.offsetParent !== null);
156
+ const currentIndex = listItems.indexOf(document.activeElement);
157
+ if (direction === 'ArrowDown') {
158
+ (_a = listItems[(currentIndex + 1) % listItems.length]) === null || _a === void 0 ? void 0 : _a.focus();
159
+ }
160
+ else if (direction === 'ArrowUp') {
161
+ if (currentIndex >= 1) {
162
+ (_b = listItems[currentIndex - 1]) === null || _b === void 0 ? void 0 : _b.focus();
163
+ }
164
+ else {
165
+ const input = document.querySelector('.searchcraft-input');
166
+ if (input) {
167
+ input.focus();
168
+ requestAnimationFrame(() => {
169
+ input.selectionEnd = input.value.length;
170
+ input.selectionStart = input.value.length;
171
+ });
172
+ }
173
+ }
174
+ }
175
+ }
176
+ get hasResultsToShow() {
177
+ var _a, _b, _c, _d, _e;
178
+ return (((_b = (_a = this.searchTerm) === null || _a === void 0 ? void 0 : _a.trim()) === null || _b === void 0 ? void 0 : _b.length) > 0 &&
179
+ ((_e = (_d = (_c = this.searchResults) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.hits) === null || _e === void 0 ? void 0 : _e.length) > 0);
180
+ }
181
+ renderInlinePopover(documents) {
182
+ const isListViewVisible = this.hasResultsToShow && this.isFocused;
183
+ const popoverFormClassNames = classNames('searchcraft-popover-form searchcraft-popover-form-inline', {
184
+ 'searchcraft-popover-form-active': isListViewVisible,
185
+ });
186
+ return (h("div", { class: popoverFormClassNames }, h("searchcraft-input-form", { config: this.config, onInputFocus: this.handleInputFocus.bind(this) }), isListViewVisible && (h("div", { class: 'searchcraft-popover-inline-wrapper-outer' }, h("div", { class: 'searchcraft-popover-inline-wrapper-inner' }, h("searchcraft-popover-list-view", { popoverResultMappings: this.popoverResultMappings, documents: documents }))))));
187
+ }
188
+ renderModalPopover(documents) {
189
+ if (this.isPopoverVisibleInState) {
190
+ const popoverFormClassNames = classNames('searchcraft-popover-form', {
191
+ 'searchcraft-popover-form-active': this.hasResultsToShow,
192
+ });
193
+ return (h("div", { class: 'searchcraft-popover-form-modal' }, h("div", { class: 'searchcraft-popover-form-modal-backdrop', onClick: this.handleModalBackdropClick }), h("div", { class: 'searchcraft-popover-form-modal-inner' }, h("div", { class: popoverFormClassNames }, h("div", { class: 'searchcraft-popover-form-input-wrapper' }, h("searchcraft-input-form", { config: this.config, onInputFocus: this.handleInputFocus.bind(this), onInputInit: this.handleInputInit.bind(this) }), h("button", { type: 'button', class: 'searchcraft-popover-form-cancel-button', onClick: this.handleCancelButtonClick.bind(this) }, "Cancel")), this.hasResultsToShow && (h("searchcraft-popover-list-view", { popoverResultMappings: this.popoverResultMappings, documents: documents }))))));
194
+ }
195
+ }
196
+ renderFullscreenPopover(documents) {
197
+ if (this.isPopoverVisibleInState) {
198
+ return (h("div", { class: 'searchcraft-popover-form-fullscreen' }, h("div", { class: 'searchcraft-popover-form' }, h("div", { class: 'searchcraft-popover-form-input-wrapper' }, h("searchcraft-input-form", { config: this.config, onInputFocus: this.handleInputFocus.bind(this), onInputInit: this.handleInputInit.bind(this) }), h("button", { type: 'button', class: 'searchcraft-popover-form-cancel-button', onClick: this.handleCancelButtonClick.bind(this) }, "Cancel")), this.hasResultsToShow && (h("searchcraft-popover-list-view", { popoverResultMappings: this.popoverResultMappings, documents: documents })))));
199
+ }
12
200
  }
13
201
  render() {
14
- return (h("div", { key: 'a0a5602203dc33f66fd950187e8f9761a13e5bdc', style: { display: 'flex', flexDirection: 'column', flex: '1' } }, h("searchcraft-input", { key: 'b8f9b0d86e66a17f8ddd9966e577e16c4834d1cb', onInputFocus: () => console.log('focused'), onInputBlur: () => console.log('blurred') }), h("searchcraft-popover-list-view", { key: 'a6f5bf1118cd759f28e634e3dadbe64fe3470b6b', popoverResultMappings: this.popoverResultMappings })));
202
+ var _a, _b, _c;
203
+ const documents = (_c = (_b = (_a = this.searchResults) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.hits) === null || _c === void 0 ? void 0 : _c.map((data, _index) => {
204
+ const { doc: result } = data;
205
+ return result;
206
+ });
207
+ switch (this.type) {
208
+ case 'inline':
209
+ return this.renderInlinePopover(documents);
210
+ case 'modal':
211
+ return this.renderModalPopover(documents);
212
+ case 'fullscreen':
213
+ return this.renderFullscreenPopover(documents);
214
+ }
15
215
  }
216
+ get hostElement() { return getElement(this); }
16
217
  };
17
218
  SearchcraftPopoverForm.style = SearchcraftPopoverFormStyle0;
18
219