@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,7 +1,24 @@
1
1
  import { useSearchcraftStore } from "../../provider/store";
2
2
  import { Fragment, h } from "@stencil/core";
3
+ /**
4
+ * This web component is designed to display detailed information for a single search result.
5
+ * Once a query is submitted, the component formats and presents the result.
6
+ * It is consumed within the `searchcraft-base-search-results` component.
7
+ */
3
8
  export class SearchcraftBaseSearchResult {
4
9
  constructor() {
10
+ /**
11
+ * Where to open the link for the button rendered when containerHref is not present.
12
+ */
13
+ this.buttonTarget = '_blank';
14
+ /**
15
+ * Where to open the link for the containing element.
16
+ */
17
+ this.containerTarget = '_blank';
18
+ /**
19
+ * The position in the document. Used with the "document_clicked" measure event.
20
+ */
21
+ this.documentPosition = 0;
5
22
  this.searchcraftStore = useSearchcraftStore.getState();
6
23
  this.recordMeasureEvent = () => {
7
24
  var _a, _b, _c;
@@ -29,22 +46,6 @@ export class SearchcraftBaseSearchResult {
29
46
  }
30
47
  return {};
31
48
  };
32
- this.titleContent = undefined;
33
- this.subtitleContent = undefined;
34
- this.bodyContent = undefined;
35
- this.footerContent = undefined;
36
- this.buttonLabel = undefined;
37
- this.buttonHref = undefined;
38
- this.buttonTarget = '_blank';
39
- this.buttonRel = undefined;
40
- this.containerHref = undefined;
41
- this.containerTarget = '_blank';
42
- this.containerRel = undefined;
43
- this.imageSrc = undefined;
44
- this.imageAlt = undefined;
45
- this.imagePlacement = undefined;
46
- this.customStyles = undefined;
47
- this.documentPosition = 0;
48
49
  }
49
50
  render() {
50
51
  const styles = this.parseStyles();
@@ -82,8 +83,10 @@ export class SearchcraftBaseSearchResult {
82
83
  "optional": false,
83
84
  "docs": {
84
85
  "tags": [],
85
- "text": ""
86
+ "text": "The title content."
86
87
  },
88
+ "getter": false,
89
+ "setter": false,
87
90
  "attribute": "title-content",
88
91
  "reflect": false
89
92
  },
@@ -99,8 +102,10 @@ export class SearchcraftBaseSearchResult {
99
102
  "optional": false,
100
103
  "docs": {
101
104
  "tags": [],
102
- "text": ""
105
+ "text": "The subtitle content."
103
106
  },
107
+ "getter": false,
108
+ "setter": false,
104
109
  "attribute": "subtitle-content",
105
110
  "reflect": false
106
111
  },
@@ -116,8 +121,10 @@ export class SearchcraftBaseSearchResult {
116
121
  "optional": false,
117
122
  "docs": {
118
123
  "tags": [],
119
- "text": ""
124
+ "text": "The body content."
120
125
  },
126
+ "getter": false,
127
+ "setter": false,
121
128
  "attribute": "body-content",
122
129
  "reflect": false
123
130
  },
@@ -133,8 +140,10 @@ export class SearchcraftBaseSearchResult {
133
140
  "optional": false,
134
141
  "docs": {
135
142
  "tags": [],
136
- "text": ""
143
+ "text": "The footer content."
137
144
  },
145
+ "getter": false,
146
+ "setter": false,
138
147
  "attribute": "footer-content",
139
148
  "reflect": false
140
149
  },
@@ -150,8 +159,10 @@ export class SearchcraftBaseSearchResult {
150
159
  "optional": false,
151
160
  "docs": {
152
161
  "tags": [],
153
- "text": ""
162
+ "text": "The label for the button rendered when containerHref is not present."
154
163
  },
164
+ "getter": false,
165
+ "setter": false,
155
166
  "attribute": "button-label",
156
167
  "reflect": false
157
168
  },
@@ -167,8 +178,10 @@ export class SearchcraftBaseSearchResult {
167
178
  "optional": false,
168
179
  "docs": {
169
180
  "tags": [],
170
- "text": ""
181
+ "text": "The link for the button rendered when containerHref is not present."
171
182
  },
183
+ "getter": false,
184
+ "setter": false,
172
185
  "attribute": "button-href",
173
186
  "reflect": false
174
187
  },
@@ -184,8 +197,10 @@ export class SearchcraftBaseSearchResult {
184
197
  "optional": false,
185
198
  "docs": {
186
199
  "tags": [],
187
- "text": ""
200
+ "text": "Where to open the link for the button rendered when containerHref is not present."
188
201
  },
202
+ "getter": false,
203
+ "setter": false,
189
204
  "attribute": "button-target",
190
205
  "reflect": false,
191
206
  "defaultValue": "'_blank'"
@@ -202,8 +217,10 @@ export class SearchcraftBaseSearchResult {
202
217
  "optional": false,
203
218
  "docs": {
204
219
  "tags": [],
205
- "text": ""
220
+ "text": "The relationship between the current document and the link for the button rendered when containerHref is not present."
206
221
  },
222
+ "getter": false,
223
+ "setter": false,
207
224
  "attribute": "button-rel",
208
225
  "reflect": false
209
226
  },
@@ -219,8 +236,10 @@ export class SearchcraftBaseSearchResult {
219
236
  "optional": false,
220
237
  "docs": {
221
238
  "tags": [],
222
- "text": ""
239
+ "text": "The link for the containing element."
223
240
  },
241
+ "getter": false,
242
+ "setter": false,
224
243
  "attribute": "container-href",
225
244
  "reflect": false
226
245
  },
@@ -236,8 +255,10 @@ export class SearchcraftBaseSearchResult {
236
255
  "optional": false,
237
256
  "docs": {
238
257
  "tags": [],
239
- "text": ""
258
+ "text": "Where to open the link for the containing element."
240
259
  },
260
+ "getter": false,
261
+ "setter": false,
241
262
  "attribute": "container-target",
242
263
  "reflect": false,
243
264
  "defaultValue": "'_blank'"
@@ -254,8 +275,10 @@ export class SearchcraftBaseSearchResult {
254
275
  "optional": false,
255
276
  "docs": {
256
277
  "tags": [],
257
- "text": ""
278
+ "text": "The relationship between the current document and the link for the containing element."
258
279
  },
280
+ "getter": false,
281
+ "setter": false,
259
282
  "attribute": "container-rel",
260
283
  "reflect": false
261
284
  },
@@ -271,8 +294,10 @@ export class SearchcraftBaseSearchResult {
271
294
  "optional": false,
272
295
  "docs": {
273
296
  "tags": [],
274
- "text": ""
297
+ "text": "The image source."
275
298
  },
299
+ "getter": false,
300
+ "setter": false,
276
301
  "attribute": "image-src",
277
302
  "reflect": false
278
303
  },
@@ -288,8 +313,10 @@ export class SearchcraftBaseSearchResult {
288
313
  "optional": false,
289
314
  "docs": {
290
315
  "tags": [],
291
- "text": ""
316
+ "text": "The image alternative text."
292
317
  },
318
+ "getter": false,
319
+ "setter": false,
293
320
  "attribute": "image-alt",
294
321
  "reflect": false
295
322
  },
@@ -305,8 +332,10 @@ export class SearchcraftBaseSearchResult {
305
332
  "optional": false,
306
333
  "docs": {
307
334
  "tags": [],
308
- "text": ""
335
+ "text": "The placement of the image."
309
336
  },
337
+ "getter": false,
338
+ "setter": false,
310
339
  "attribute": "image-placement",
311
340
  "reflect": false
312
341
  },
@@ -322,8 +351,10 @@ export class SearchcraftBaseSearchResult {
322
351
  "optional": false,
323
352
  "docs": {
324
353
  "tags": [],
325
- "text": ""
354
+ "text": "A custom styles object."
326
355
  },
356
+ "getter": false,
357
+ "setter": false,
327
358
  "attribute": "custom-styles",
328
359
  "reflect": false
329
360
  },
@@ -339,8 +370,10 @@ export class SearchcraftBaseSearchResult {
339
370
  "optional": false,
340
371
  "docs": {
341
372
  "tags": [],
342
- "text": ""
373
+ "text": "The position in the document. Used with the \"document_clicked\" measure event."
343
374
  },
375
+ "getter": false,
376
+ "setter": false,
344
377
  "attribute": "document-position",
345
378
  "reflect": false,
346
379
  "defaultValue": "0"
@@ -1 +1 @@
1
- {"version":3,"file":"searchcraft-base-search-result.js","sourceRoot":"","sources":["../../../../src/components/searchcraft-base-search-result/searchcraft-base-search-result.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useSearchcraftStore } from '@provider/store';\nimport { Component, Fragment, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'searchcraft-base-search-result',\n styleUrl: 'searchcraft-base-search-result.module.scss',\n shadow: false,\n})\nexport class SearchcraftBaseSearchResult {\n @Prop() titleContent: string | undefined;\n @Prop() subtitleContent: string | undefined;\n @Prop() bodyContent: string | undefined;\n @Prop() footerContent: string | undefined;\n @Prop() buttonLabel: string | undefined;\n @Prop() buttonHref: string | undefined;\n @Prop() buttonTarget: '_blank' | '_self' | '_top' | '_parent' = '_blank';\n @Prop() buttonRel: 'noreferrer' | 'noopener' | 'nofollow' | undefined;\n @Prop() containerHref: string | undefined;\n @Prop() containerTarget: '_blank' | '_self' | '_top' | '_parent' = '_blank';\n @Prop() containerRel: 'noreferrer' | 'noopener' | 'nofollow' | undefined;\n @Prop() imageSrc: string | undefined;\n @Prop() imageAlt: string | undefined;\n @Prop() imagePlacement: 'left' | 'right';\n @Prop() customStyles: string | undefined;\n @Prop() documentPosition = 0;\n\n private searchcraftStore = useSearchcraftStore.getState();\n\n private recordMeasureEvent = () => {\n const searchcraft = this.searchcraftStore.getSearchcraftInstance();\n\n if (searchcraft) {\n const document_position = this.documentPosition;\n const search_term = this.searchcraftStore.query;\n const number_of_documents =\n this.searchcraftStore.searchResults?.data?.hits?.length || 0;\n\n searchcraft.sendMeasureEvent('document_clicked', {\n document_position,\n number_of_documents,\n search_term,\n });\n }\n };\n\n private parseStyles = (): Record<string, { [key: string]: string }> => {\n if (this.customStyles) {\n try {\n return JSON.parse(this.customStyles);\n } catch (error) {\n console.error('Error parsing custom styles:', error);\n return {};\n }\n }\n return {};\n };\n\n render() {\n const styles = this.parseStyles();\n const imageContainer = this.imageSrc && (\n <img\n alt={this.imageAlt}\n class='searchcraft-search-result-image'\n src={this.imageSrc}\n style={styles.image || {}}\n />\n );\n\n const contentContainer = (\n <Fragment>\n {this.imageSrc && this.imagePlacement === 'left' && imageContainer}\n <div class='searchcraft-base-search-result-content-container'>\n {this.titleContent && (\n <h2\n class='searchcraft-base-search-result-title'\n style={styles.title || {}}\n >\n {this.titleContent}\n </h2>\n )}\n {this.subtitleContent && (\n <h3\n class='searchcraft-base-search-result-subtitle'\n style={styles.subtitle || {}}\n >\n {this.subtitleContent}\n </h3>\n )}\n {this.bodyContent && (\n <p\n class='searchcraft-base-search-result-body-content'\n style={styles.primaryContent || {}}\n >\n {this.bodyContent}\n </p>\n )}\n\n {this.footerContent && (\n <p\n class='searchcraft-base-search-result-footer-content'\n style={styles.secondaryContent || {}}\n >\n {this.footerContent}\n </p>\n )}\n {this.buttonHref && !this.containerHref && this.buttonLabel && (\n <a\n class='searchcraft-search-result-button'\n href={this.buttonHref}\n style={styles.button || {}}\n target={this.buttonTarget}\n rel={this.buttonRel}\n >\n {this.buttonLabel}\n </a>\n )}\n </div>\n {this.imageSrc && this.imagePlacement === 'right' && imageContainer}\n </Fragment>\n );\n\n /** Render as an anchor tag if the containerHref prop is present. */\n if (this.containerHref) {\n return (\n <a\n class='searchcraft-search-result-container'\n onClick={this.recordMeasureEvent}\n href={this.containerHref}\n rel={this.containerRel}\n style={styles.container || {}}\n tabindex='0'\n target={this.containerTarget}\n >\n {contentContainer}\n </a>\n );\n }\n\n /** Render as a div if no href prop. */\n return (\n <div\n class='searchcraft-search-result-container'\n style={styles.container || {}}\n >\n {contentContainer}\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"searchcraft-base-search-result.js","sourceRoot":"","sources":["../../../../src/components/searchcraft-base-search-result/searchcraft-base-search-result.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useSearchcraftStore } from '@provider/store';\nimport { Component, Fragment, h, Prop } from '@stencil/core';\n\n/**\n * This web component is designed to display detailed information for a single search result.\n * Once a query is submitted, the component formats and presents the result.\n * It is consumed within the `searchcraft-base-search-results` component.\n */\n@Component({\n tag: 'searchcraft-base-search-result',\n styleUrl: 'searchcraft-base-search-result.module.scss',\n shadow: false,\n})\nexport class SearchcraftBaseSearchResult {\n /**\n * The title content.\n */\n @Prop() titleContent: string | undefined;\n /**\n * The subtitle content.\n */\n @Prop() subtitleContent: string | undefined;\n /**\n * The body content.\n */\n @Prop() bodyContent: string | undefined;\n /**\n * The footer content.\n */\n @Prop() footerContent: string | undefined;\n /**\n * The label for the button rendered when containerHref is not present.\n */\n @Prop() buttonLabel: string | undefined;\n /**\n * The link for the button rendered when containerHref is not present.\n */\n @Prop() buttonHref: string | undefined;\n /**\n * Where to open the link for the button rendered when containerHref is not present.\n */\n @Prop() buttonTarget: '_blank' | '_self' | '_top' | '_parent' = '_blank';\n /**\n * The relationship between the current document and the link for the button rendered when containerHref is not present.\n */\n @Prop() buttonRel: 'noreferrer' | 'noopener' | 'nofollow' | undefined;\n /**\n * The link for the containing element.\n */\n @Prop() containerHref: string | undefined;\n /**\n * Where to open the link for the containing element.\n */\n @Prop() containerTarget: '_blank' | '_self' | '_top' | '_parent' = '_blank';\n /**\n * The relationship between the current document and the link for the containing element.\n */\n @Prop() containerRel: 'noreferrer' | 'noopener' | 'nofollow' | undefined;\n /**\n * The image source.\n */\n @Prop() imageSrc: string | undefined;\n /**\n * The image alternative text.\n */\n @Prop() imageAlt: string | undefined;\n /**\n * The placement of the image.\n */\n @Prop() imagePlacement: 'left' | 'right';\n /**\n * A custom styles object.\n */\n @Prop() customStyles: string | undefined;\n /**\n * The position in the document. Used with the \"document_clicked\" measure event.\n */\n @Prop() documentPosition = 0;\n\n private searchcraftStore = useSearchcraftStore.getState();\n\n private recordMeasureEvent = () => {\n const searchcraft = this.searchcraftStore.getSearchcraftInstance();\n\n if (searchcraft) {\n const document_position = this.documentPosition;\n const search_term = this.searchcraftStore.query;\n const number_of_documents =\n this.searchcraftStore.searchResults?.data?.hits?.length || 0;\n\n searchcraft.sendMeasureEvent('document_clicked', {\n document_position,\n number_of_documents,\n search_term,\n });\n }\n };\n\n private parseStyles = (): Record<string, { [key: string]: string }> => {\n if (this.customStyles) {\n try {\n return JSON.parse(this.customStyles);\n } catch (error) {\n console.error('Error parsing custom styles:', error);\n return {};\n }\n }\n return {};\n };\n\n render() {\n const styles = this.parseStyles();\n const imageContainer = this.imageSrc && (\n <img\n alt={this.imageAlt}\n class='searchcraft-search-result-image'\n src={this.imageSrc}\n style={styles.image || {}}\n />\n );\n\n const contentContainer = (\n <Fragment>\n {this.imageSrc && this.imagePlacement === 'left' && imageContainer}\n <div class='searchcraft-base-search-result-content-container'>\n {this.titleContent && (\n <h2\n class='searchcraft-base-search-result-title'\n style={styles.title || {}}\n >\n {this.titleContent}\n </h2>\n )}\n {this.subtitleContent && (\n <h3\n class='searchcraft-base-search-result-subtitle'\n style={styles.subtitle || {}}\n >\n {this.subtitleContent}\n </h3>\n )}\n {this.bodyContent && (\n <p\n class='searchcraft-base-search-result-body-content'\n style={styles.primaryContent || {}}\n >\n {this.bodyContent}\n </p>\n )}\n\n {this.footerContent && (\n <p\n class='searchcraft-base-search-result-footer-content'\n style={styles.secondaryContent || {}}\n >\n {this.footerContent}\n </p>\n )}\n {this.buttonHref && !this.containerHref && this.buttonLabel && (\n <a\n class='searchcraft-search-result-button'\n href={this.buttonHref}\n style={styles.button || {}}\n target={this.buttonTarget}\n rel={this.buttonRel}\n >\n {this.buttonLabel}\n </a>\n )}\n </div>\n {this.imageSrc && this.imagePlacement === 'right' && imageContainer}\n </Fragment>\n );\n\n /** Render as an anchor tag if the containerHref prop is present. */\n if (this.containerHref) {\n return (\n <a\n class='searchcraft-search-result-container'\n onClick={this.recordMeasureEvent}\n href={this.containerHref}\n rel={this.containerRel}\n style={styles.container || {}}\n tabindex='0'\n target={this.containerTarget}\n >\n {contentContainer}\n </a>\n );\n }\n\n /** Render as a div if no href prop. */\n return (\n <div\n class='searchcraft-search-result-container'\n style={styles.container || {}}\n >\n {contentContainer}\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-search-result-container {
101
151
  all: unset;
102
152
  align-items: flex-start;
@@ -108,7 +158,7 @@
108
158
  color: inherit;
109
159
  background-color: var(--sc-surface-neutral-primary);
110
160
  }
111
- @media (min-width: 900px) {
161
+ @media (min-width: 768px) {
112
162
  .searchcraft-search-result-container {
113
163
  flex-direction: row;
114
164
  }
@@ -130,7 +180,7 @@ a.searchcraft-search-result-container {
130
180
  border-radius: var(--sc-image-border-radius);
131
181
  width: 100%;
132
182
  }
133
- @media (min-width: 900px) {
183
+ @media (min-width: 768px) {
134
184
  .searchcraft-search-result-image {
135
185
  width: 200px;
136
186
  }
@@ -1,19 +1,64 @@
1
1
  import { h, } from "@stencil/core";
2
2
  import { useSearchcraftStore } from "../../provider/store";
3
- import { getDocumentValueFromSearchResultMapping, serializeStyles, } from "../../utils/utils";
3
+ import { getDocumentValueFromSearchResultMapping, serializeStyles, } from "../../utils/index";
4
+ /**
5
+ * This web component is responsible for displaying the results of a search query.
6
+ * Once a query is submitted, the component formats and presents an ordered list of the results.
7
+ *
8
+ * ## Usage
9
+ * ```html
10
+ * <!-- index.html -->
11
+ * <searchcraft-base-search-results
12
+ * ad-interval="4"
13
+ * place-ad-at-start="false"
14
+ * result-image-placement="right"
15
+ * />
16
+ * ```
17
+ *
18
+ * ```js
19
+ * // index.js
20
+ * const baseSearchResults = document.querySelector('searchcraft-base-search-results');
21
+ *
22
+ * baseSearchResults.searchResultMappings = containerHref: {
23
+ * fieldNames: [
24
+ * {
25
+ * fieldName: 'canonical_link',
26
+ * dataType: 'text',
27
+ * },
28
+ * ],
29
+ * };
30
+ *
31
+ * baseSearchResults.addEventListener('noResults', () => {
32
+ * console.log('No search results found');
33
+ * });
34
+ * ```
35
+ */
4
36
  export class SearchcraftBaseSearchResults {
5
37
  constructor() {
38
+ /**
39
+ * How often ads are injected.
40
+ */
6
41
  this.adInterval = 4;
7
- this.customStylesForResults = undefined;
8
- this.searchResultMappings = undefined;
42
+ /**
43
+ * Should an ad be placed at the end of the results.
44
+ */
9
45
  this.placeAdAtEnd = false;
46
+ /**
47
+ * Should an ad be placed at the start of the results.
48
+ */
10
49
  this.placeAdAtStart = true;
50
+ /**
51
+ * The placement of the image for each result.
52
+ */
11
53
  this.resultImagePlacement = 'right';
12
- this.buttonLabel = undefined;
54
+ /**
55
+ * Where to open the link for the button rendered when containerHref is not present for each result.
56
+ */
13
57
  this.buttonTarget = '_blank';
14
- this.buttonRel = undefined;
58
+ /**
59
+ * Where to open the link for the containing element for each result.
60
+ */
15
61
  this.containerTarget = '_blank';
16
- this.containerRel = undefined;
17
62
  this.hasSearched = false;
18
63
  this.query = '';
19
64
  this.searchResults = null;
@@ -116,8 +161,10 @@ export class SearchcraftBaseSearchResults {
116
161
  "optional": false,
117
162
  "docs": {
118
163
  "tags": [],
119
- "text": ""
164
+ "text": "How often ads are injected."
120
165
  },
166
+ "getter": false,
167
+ "setter": false,
121
168
  "attribute": "ad-interval",
122
169
  "reflect": false,
123
170
  "defaultValue": "4"
@@ -139,8 +186,10 @@ export class SearchcraftBaseSearchResults {
139
186
  "optional": false,
140
187
  "docs": {
141
188
  "tags": [],
142
- "text": ""
189
+ "text": "A custom styles object."
143
190
  },
191
+ "getter": false,
192
+ "setter": false,
144
193
  "attribute": "custom-styles-for-results",
145
194
  "reflect": false
146
195
  },
@@ -162,8 +211,10 @@ export class SearchcraftBaseSearchResults {
162
211
  "optional": false,
163
212
  "docs": {
164
213
  "tags": [],
165
- "text": ""
166
- }
214
+ "text": "Formats the content rendered for each result."
215
+ },
216
+ "getter": false,
217
+ "setter": false
167
218
  },
168
219
  "placeAdAtEnd": {
169
220
  "type": "boolean",
@@ -177,8 +228,10 @@ export class SearchcraftBaseSearchResults {
177
228
  "optional": false,
178
229
  "docs": {
179
230
  "tags": [],
180
- "text": ""
231
+ "text": "Should an ad be placed at the end of the results."
181
232
  },
233
+ "getter": false,
234
+ "setter": false,
182
235
  "attribute": "place-ad-at-end",
183
236
  "reflect": false,
184
237
  "defaultValue": "false"
@@ -195,8 +248,10 @@ export class SearchcraftBaseSearchResults {
195
248
  "optional": false,
196
249
  "docs": {
197
250
  "tags": [],
198
- "text": ""
251
+ "text": "Should an ad be placed at the start of the results."
199
252
  },
253
+ "getter": false,
254
+ "setter": false,
200
255
  "attribute": "place-ad-at-start",
201
256
  "reflect": false,
202
257
  "defaultValue": "true"
@@ -213,8 +268,10 @@ export class SearchcraftBaseSearchResults {
213
268
  "optional": false,
214
269
  "docs": {
215
270
  "tags": [],
216
- "text": ""
271
+ "text": "The placement of the image for each result."
217
272
  },
273
+ "getter": false,
274
+ "setter": false,
218
275
  "attribute": "result-image-placement",
219
276
  "reflect": false,
220
277
  "defaultValue": "'right'"
@@ -231,8 +288,10 @@ export class SearchcraftBaseSearchResults {
231
288
  "optional": false,
232
289
  "docs": {
233
290
  "tags": [],
234
- "text": ""
291
+ "text": "The label for the button rendered when containerHref is not present for each result."
235
292
  },
293
+ "getter": false,
294
+ "setter": false,
236
295
  "attribute": "button-label",
237
296
  "reflect": false
238
297
  },
@@ -248,8 +307,10 @@ export class SearchcraftBaseSearchResults {
248
307
  "optional": false,
249
308
  "docs": {
250
309
  "tags": [],
251
- "text": ""
310
+ "text": "Where to open the link for the button rendered when containerHref is not present for each result."
252
311
  },
312
+ "getter": false,
313
+ "setter": false,
253
314
  "attribute": "button-target",
254
315
  "reflect": false,
255
316
  "defaultValue": "'_blank'"
@@ -266,8 +327,10 @@ export class SearchcraftBaseSearchResults {
266
327
  "optional": false,
267
328
  "docs": {
268
329
  "tags": [],
269
- "text": ""
330
+ "text": "The relationship between the current document and the link for the button rendered when containerHref is not present for each result."
270
331
  },
332
+ "getter": false,
333
+ "setter": false,
271
334
  "attribute": "button-rel",
272
335
  "reflect": false
273
336
  },
@@ -283,8 +346,10 @@ export class SearchcraftBaseSearchResults {
283
346
  "optional": false,
284
347
  "docs": {
285
348
  "tags": [],
286
- "text": ""
349
+ "text": "Where to open the link for the containing element for each result."
287
350
  },
351
+ "getter": false,
352
+ "setter": false,
288
353
  "attribute": "container-target",
289
354
  "reflect": false,
290
355
  "defaultValue": "'_blank'"
@@ -301,8 +366,10 @@ export class SearchcraftBaseSearchResults {
301
366
  "optional": false,
302
367
  "docs": {
303
368
  "tags": [],
304
- "text": ""
369
+ "text": "The relationship between the current document and the link for the containing element for each result."
305
370
  },
371
+ "getter": false,
372
+ "setter": false,
306
373
  "attribute": "container-rel",
307
374
  "reflect": false
308
375
  }
@@ -324,7 +391,7 @@ export class SearchcraftBaseSearchResults {
324
391
  "composed": true,
325
392
  "docs": {
326
393
  "tags": [],
327
- "text": ""
394
+ "text": "When no results are returned."
328
395
  },
329
396
  "complexType": {
330
397
  "original": "void",
@@ -1 +1 @@
1
- {"version":3,"file":"searchcraft-base-search-results.js","sourceRoot":"","sources":["../../../../src/components/searchcraft-base-search-results/searchcraft-base-search-results.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Event,\n Prop,\n State,\n type EventEmitter,\n} from '@stencil/core';\n\nimport type { SearchcraftResponse } from '@searchcraft/core';\n\nimport { useSearchcraftStore } from '@provider/store';\n\nimport {\n getDocumentValueFromSearchResultMapping,\n serializeStyles,\n} from '@utils/utils';\nimport type { SearchResultMappings } from 'types';\n\n@Component({\n tag: 'searchcraft-base-search-results',\n styleUrl: 'searchcraft-base-search-results.module.scss',\n shadow: false,\n})\nexport class SearchcraftBaseSearchResults {\n @Prop() adInterval = 4;\n @Prop() customStylesForResults:\n | string\n | Record<string, Record<string, string>>\n | undefined;\n @Prop() searchResultMappings: SearchResultMappings | undefined;\n @Prop() placeAdAtEnd = false;\n @Prop() placeAdAtStart = true;\n @Prop() resultImagePlacement: 'left' | 'right' = 'right';\n @Prop() buttonLabel: string | undefined;\n @Prop() buttonTarget: '_blank' | '_self' | '_top' | '_parent' = '_blank';\n @Prop() buttonRel: 'noreferrer' | 'noopener' | 'nofollow' | undefined;\n @Prop() containerTarget: '_blank' | '_self' | '_top' | '_parent' = '_blank';\n @Prop() containerRel: 'noreferrer' | 'noopener' | 'nofollow' | undefined;\n\n @Event() noResults: EventEmitter<void>;\n\n @State() hasSearched = false;\n @State() query = '';\n @State() searchResults: SearchcraftResponse | null = null;\n\n private unsubscribe: () => void;\n\n componentDidLoad() {\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n if (state.query.length > 0) {\n this.hasSearched = true;\n } else {\n this.hasSearched = false;\n }\n this.searchResults = { ...state.searchResults };\n this.query = state.query;\n });\n\n const { searchResults, query } = useSearchcraftStore.getState();\n this.searchResults = searchResults;\n this.query = query;\n }\n\n disconnectedCallback() {\n if (this.unsubscribe) {\n this.unsubscribe();\n }\n }\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.searchResultMappings.title,\n );\n const subtitleContent = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.subtitle,\n );\n const bodyContent = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.body,\n );\n const containerHref = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.containerHref,\n );\n const buttonHref = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.buttonHref,\n );\n const imageSource = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.imageSource,\n );\n const footerContent = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.footer,\n );\n\n const serializedStyles =\n typeof this.customStylesForResults === 'string'\n ? this.customStylesForResults\n : serializeStyles(this.customStylesForResults);\n\n return (\n <searchcraft-base-search-result\n key={`${document.document_id}-${index}`}\n custom-styles={serializedStyles}\n image-placement={this.resultImagePlacement}\n container-rel={this.containerRel}\n container-target={this.containerTarget}\n button-label={this.buttonLabel || 'View more'}\n button-rel={this.buttonRel}\n button-target={this.buttonTarget}\n document-position={index}\n title-content={titleContent}\n subtitle-content={subtitleContent}\n body-content={bodyContent}\n footer-content={footerContent}\n container-href={containerHref}\n button-href={buttonHref}\n image-src={imageSource}\n />\n );\n }\n\n render() {\n if (this.query.trim() === '') {\n return (\n <div class='searchcraft-search-results-empty-state-container'>\n <slot name='empty-search' />\n </div>\n );\n }\n\n if (!this.searchResults?.data) {\n return;\n }\n\n const documents: Record<string, unknown>[] =\n this.searchResults?.data?.hits?.map((data, _index) => {\n const { doc: result } = data;\n return result;\n });\n\n const finalComponents: JSX.Element[] = [];\n\n if (this.placeAdAtStart) {\n finalComponents.push(\n <div key='ad-section-start' class='searchcraft-ad-section'>\n <p>Ad Section</p>\n </div>,\n );\n }\n\n if (this.adInterval > 0) {\n documents.forEach((document, index) => {\n finalComponents.push(this.renderDocument(document, index));\n\n if ((index + 1) % this.adInterval === 0) {\n finalComponents.push(\n <div\n key={`ad-section-${index + 1}`}\n class='searchcraft-ad-section '\n >\n <p>Ad Section</p>\n </div>,\n );\n }\n });\n } else {\n const documentElements = documents.map((document, index) =>\n this.renderDocument(document, index),\n );\n finalComponents.push(...documentElements);\n }\n\n if (this.placeAdAtEnd) {\n finalComponents.push(\n <div key='ad-section-end' class='searchcraft-ad-section'>\n <p>Ad Section</p>\n </div>,\n );\n }\n\n if (this.query.length > 0 && this.searchResults?.data?.hits?.length === 0) {\n this.noResults.emit();\n }\n\n return (\n <div class='searchcraft-search-results-container'>\n {finalComponents}\n {this.query.length > 0 &&\n this.searchResults?.data?.hits?.length === 0 && (\n <div class='searchcraft-search-results-error-message-container'>\n <searchcraft-error-message\n error-message={`No search results found for \"${this.query}\" query`}\n />\n </div>\n )}\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"searchcraft-base-search-results.js","sourceRoot":"","sources":["../../../../src/components/searchcraft-base-search-results/searchcraft-base-search-results.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Event,\n Prop,\n State,\n type EventEmitter,\n} from '@stencil/core';\n\nimport type { SearchcraftResponse } from '@searchcraft/core';\n\nimport { useSearchcraftStore } from '@provider/store';\n\nimport {\n getDocumentValueFromSearchResultMapping,\n serializeStyles,\n} from '@utils';\nimport type { SearchResultMappings } from 'types';\n\n/**\n * This web component is responsible for displaying the results of a search query.\n * Once a query is submitted, the component formats and presents an ordered list of the results.\n *\n * ## Usage\n * ```html\n * <!-- index.html -->\n * <searchcraft-base-search-results\n * ad-interval=\"4\"\n * place-ad-at-start=\"false\"\n * result-image-placement=\"right\"\n * />\n * ```\n *\n * ```js\n * // index.js\n * const baseSearchResults = document.querySelector('searchcraft-base-search-results');\n *\n * baseSearchResults.searchResultMappings = containerHref: {\n * fieldNames: [\n * {\n * fieldName: 'canonical_link',\n * dataType: 'text',\n * },\n * ],\n * };\n *\n * baseSearchResults.addEventListener('noResults', () => {\n * console.log('No search results found');\n * });\n * ```\n */\n@Component({\n tag: 'searchcraft-base-search-results',\n styleUrl: 'searchcraft-base-search-results.module.scss',\n shadow: false,\n})\nexport class SearchcraftBaseSearchResults {\n /**\n * How often ads are injected.\n */\n @Prop() adInterval = 4;\n /**\n * A custom styles object.\n */\n @Prop() customStylesForResults:\n | string\n | Record<string, Record<string, string>>\n | undefined;\n /**\n * Formats the content rendered for each result.\n */\n @Prop() searchResultMappings: SearchResultMappings | undefined;\n /**\n * Should an ad be placed at the end of the results.\n */\n @Prop() placeAdAtEnd = false;\n /**\n * Should an ad be placed at the start of the results.\n */\n @Prop() placeAdAtStart = true;\n /**\n * The placement of the image for each result.\n */\n @Prop() resultImagePlacement: 'left' | 'right' = 'right';\n /**\n * The label for the button rendered when containerHref is not present for each result.\n */\n @Prop() buttonLabel: string | undefined;\n /**\n * Where to open the link for the button rendered when containerHref is not present for each result.\n */\n @Prop() buttonTarget: '_blank' | '_self' | '_top' | '_parent' = '_blank';\n /**\n * The relationship between the current document and the link for the button rendered when containerHref is not present for each result.\n */\n @Prop() buttonRel: 'noreferrer' | 'noopener' | 'nofollow' | undefined;\n /**\n * Where to open the link for the containing element for each result.\n */\n @Prop() containerTarget: '_blank' | '_self' | '_top' | '_parent' = '_blank';\n /**\n * The relationship between the current document and the link for the containing element for each result.\n */\n @Prop() containerRel: 'noreferrer' | 'noopener' | 'nofollow' | undefined;\n\n /**\n * When no results are returned.\n */\n @Event() noResults: EventEmitter<void>;\n\n @State() hasSearched = false;\n @State() query = '';\n @State() searchResults: SearchcraftResponse | null = null;\n\n private unsubscribe: () => void;\n\n componentDidLoad() {\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n if (state.query.length > 0) {\n this.hasSearched = true;\n } else {\n this.hasSearched = false;\n }\n this.searchResults = { ...state.searchResults };\n this.query = state.query;\n });\n\n const { searchResults, query } = useSearchcraftStore.getState();\n this.searchResults = searchResults;\n this.query = query;\n }\n\n disconnectedCallback() {\n if (this.unsubscribe) {\n this.unsubscribe();\n }\n }\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.searchResultMappings.title,\n );\n const subtitleContent = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.subtitle,\n );\n const bodyContent = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.body,\n );\n const containerHref = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.containerHref,\n );\n const buttonHref = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.buttonHref,\n );\n const imageSource = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.imageSource,\n );\n const footerContent = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.footer,\n );\n\n const serializedStyles =\n typeof this.customStylesForResults === 'string'\n ? this.customStylesForResults\n : serializeStyles(this.customStylesForResults);\n\n return (\n <searchcraft-base-search-result\n key={`${document.document_id}-${index}`}\n custom-styles={serializedStyles}\n image-placement={this.resultImagePlacement}\n container-rel={this.containerRel}\n container-target={this.containerTarget}\n button-label={this.buttonLabel || 'View more'}\n button-rel={this.buttonRel}\n button-target={this.buttonTarget}\n document-position={index}\n title-content={titleContent}\n subtitle-content={subtitleContent}\n body-content={bodyContent}\n footer-content={footerContent}\n container-href={containerHref}\n button-href={buttonHref}\n image-src={imageSource}\n />\n );\n }\n\n render() {\n if (this.query.trim() === '') {\n return (\n <div class='searchcraft-search-results-empty-state-container'>\n <slot name='empty-search' />\n </div>\n );\n }\n\n if (!this.searchResults?.data) {\n return;\n }\n\n const documents: Record<string, unknown>[] =\n this.searchResults?.data?.hits?.map((data, _index) => {\n const { doc: result } = data;\n return result;\n });\n\n const finalComponents: JSX.Element[] = [];\n\n if (this.placeAdAtStart) {\n finalComponents.push(\n <div key='ad-section-start' class='searchcraft-ad-section'>\n <p>Ad Section</p>\n </div>,\n );\n }\n\n if (this.adInterval > 0) {\n documents.forEach((document, index) => {\n finalComponents.push(this.renderDocument(document, index));\n\n if ((index + 1) % this.adInterval === 0) {\n finalComponents.push(\n <div\n key={`ad-section-${index + 1}`}\n class='searchcraft-ad-section '\n >\n <p>Ad Section</p>\n </div>,\n );\n }\n });\n } else {\n const documentElements = documents.map((document, index) =>\n this.renderDocument(document, index),\n );\n finalComponents.push(...documentElements);\n }\n\n if (this.placeAdAtEnd) {\n finalComponents.push(\n <div key='ad-section-end' class='searchcraft-ad-section'>\n <p>Ad Section</p>\n </div>,\n );\n }\n\n if (this.query.length > 0 && this.searchResults?.data?.hits?.length === 0) {\n this.noResults.emit();\n }\n\n return (\n <div class='searchcraft-search-results-container'>\n {finalComponents}\n {this.query.length > 0 &&\n this.searchResults?.data?.hits?.length === 0 && (\n <div class='searchcraft-search-results-error-message-container'>\n <searchcraft-error-message\n error-message={`No search results found for \"${this.query}\" query`}\n />\n </div>\n )}\n </div>\n );\n }\n}\n"]}