@searchcraft/javascript-sdk 0.7.1 → 0.8.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.
- package/dist/cjs/{store-f6ba3dfb.js → SearchcraftStore-75fac5e0.js} +576 -443
- package/dist/cjs/SearchcraftStore-75fac5e0.js.map +1 -0
- package/dist/cjs/index.cjs.js +2 -3
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/searchcraft-base-search-result_2.cjs.entry.js +152 -0
- package/dist/cjs/searchcraft-base-search-result_2.cjs.entry.js.map +1 -0
- package/dist/cjs/searchcraft-base-search-results.cjs.entry.js +30 -80
- package/dist/cjs/searchcraft-base-search-results.cjs.entry.js.map +1 -1
- package/dist/cjs/searchcraft-button_3.cjs.entry.js +22 -7
- package/dist/cjs/searchcraft-button_3.cjs.entry.js.map +1 -1
- package/dist/cjs/searchcraft-facet-list_3.cjs.entry.js +19 -18
- package/dist/cjs/searchcraft-facet-list_3.cjs.entry.js.map +1 -1
- package/dist/cjs/searchcraft-filter-panel.cjs.entry.js +6 -6
- package/dist/cjs/searchcraft-filter-panel.cjs.entry.js.map +1 -1
- package/dist/cjs/searchcraft-input-form_2.cjs.entry.js +20 -33
- package/dist/cjs/searchcraft-input-form_2.cjs.entry.js.map +1 -1
- package/dist/cjs/searchcraft-javascript-sdk.cjs.js +1 -1
- package/dist/cjs/searchcraft-pagination.cjs.entry.js +106 -0
- package/dist/cjs/searchcraft-pagination.cjs.entry.js.map +1 -0
- package/dist/cjs/searchcraft-popover-button.cjs.entry.js +3 -3
- package/dist/cjs/searchcraft-popover-button.cjs.entry.js.map +1 -1
- package/dist/cjs/searchcraft-popover-form.cjs.entry.js +27 -25
- package/dist/cjs/searchcraft-popover-form.cjs.entry.js.map +1 -1
- package/dist/cjs/searchcraft-popover-list-item_2.cjs.entry.js +101 -0
- package/dist/cjs/searchcraft-popover-list-item_2.cjs.entry.js.map +1 -0
- package/dist/cjs/searchcraft-results-info.cjs.entry.js +51 -13
- package/dist/cjs/searchcraft-results-info.cjs.entry.js.map +1 -1
- package/dist/cjs/searchcraft-search-results-per-page.cjs.entry.js +75 -0
- package/dist/cjs/searchcraft-search-results-per-page.cjs.entry.js.map +1 -0
- package/dist/cjs/searchcraft-select.cjs.entry.js +70 -0
- package/dist/cjs/searchcraft-select.cjs.entry.js.map +1 -0
- package/dist/cjs/searchcraft-theme.cjs.entry.js +29 -11
- package/dist/cjs/searchcraft-theme.cjs.entry.js.map +1 -1
- package/dist/cjs/units-fe4d8083.js.map +1 -1
- package/dist/collection/collection-manifest.json +5 -0
- package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.js +86 -208
- package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.js.map +1 -1
- package/dist/collection/components/searchcraft-base-search-result-ad/searchcraft-base-search-result-ad.js +73 -0
- package/dist/collection/components/searchcraft-base-search-result-ad/searchcraft-base-search-result-ad.js.map +1 -0
- package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.js +37 -144
- package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.js.map +1 -1
- package/dist/collection/components/searchcraft-button/searchcraft-button.js +87 -17
- package/dist/collection/components/searchcraft-button/searchcraft-button.js.map +1 -1
- package/dist/collection/components/searchcraft-error-message/searchcraft-error-message.js +1 -1
- package/dist/collection/components/searchcraft-facet-list/searchcraft-facet-list.js +8 -8
- package/dist/collection/components/searchcraft-facet-list/searchcraft-facet-list.js.map +1 -1
- package/dist/collection/components/searchcraft-filter-panel/searchcraft-filter-panel.js +7 -7
- package/dist/collection/components/searchcraft-filter-panel/searchcraft-filter-panel.js.map +1 -1
- package/dist/collection/components/searchcraft-input-form/searchcraft-input-form.js +10 -14
- package/dist/collection/components/searchcraft-input-form/searchcraft-input-form.js.map +1 -1
- package/dist/collection/components/searchcraft-input-label/searchcraft-input-label.js +1 -1
- package/dist/collection/components/searchcraft-pagination/searchcraft-pagination.js +141 -0
- package/dist/collection/components/searchcraft-pagination/searchcraft-pagination.js.map +1 -0
- package/dist/collection/components/searchcraft-popover-button/searchcraft-popover-button.js +1 -1
- package/dist/collection/components/searchcraft-popover-form/searchcraft-popover-form.js +26 -21
- package/dist/collection/components/searchcraft-popover-form/searchcraft-popover-form.js.map +1 -1
- package/dist/collection/components/searchcraft-popover-list-item/searchcraft-popover-list-item.js +59 -92
- package/dist/collection/components/searchcraft-popover-list-item/searchcraft-popover-list-item.js.map +1 -1
- package/dist/collection/components/searchcraft-popover-list-item-ad/searchcraft-popover-list-item-ad.js +73 -0
- package/dist/collection/components/searchcraft-popover-list-item-ad/searchcraft-popover-list-item-ad.js.map +1 -0
- package/dist/collection/components/searchcraft-popover-list-view/searchcraft-popover-list-view.js +77 -24
- package/dist/collection/components/searchcraft-popover-list-view/searchcraft-popover-list-view.js.map +1 -1
- package/dist/collection/components/searchcraft-results-info/searchcraft-results-info.js +105 -17
- package/dist/collection/components/searchcraft-results-info/searchcraft-results-info.js.map +1 -1
- package/dist/collection/components/searchcraft-search-results-per-page/searchcraft-search-results-per-page.js +129 -0
- package/dist/collection/components/searchcraft-search-results-per-page/searchcraft-search-results-per-page.js.map +1 -0
- package/dist/collection/components/searchcraft-select/searchcraft-select.js +261 -0
- package/dist/collection/components/searchcraft-select/searchcraft-select.js.map +1 -0
- package/dist/collection/components/searchcraft-slider/searchcraft-slider.js +2 -2
- package/dist/collection/components/searchcraft-theme/searchcraft-theme.js +81 -11
- package/dist/collection/components/searchcraft-theme/searchcraft-theme.js.map +1 -1
- package/dist/collection/components/searchcraft-toggle-button/searchcraft-toggle-button.js +7 -6
- package/dist/collection/components/searchcraft-toggle-button/searchcraft-toggle-button.js.map +1 -1
- package/dist/collection/index.js +1 -2
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/provider/SearchcraftStore.js +160 -0
- package/dist/collection/provider/SearchcraftStore.js.map +1 -0
- package/dist/collection/provider/SearchcraftStore.types.js +2 -0
- package/dist/collection/provider/SearchcraftStore.types.js.map +1 -0
- package/dist/collection/provider/store.js +2 -136
- package/dist/collection/provider/store.js.map +1 -1
- package/dist/collection/utils/units.js.map +1 -1
- package/dist/components/index.js +11 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/{p-a75ef832.js → p-0e393fe1.js} +2 -2
- package/dist/components/{p-a75ef832.js.map → p-0e393fe1.js.map} +1 -1
- package/dist/components/p-25ee7496.js +58 -0
- package/dist/components/p-25ee7496.js.map +1 -0
- package/dist/components/{p-936e2ed4.js → p-38419178.js} +576 -442
- package/dist/components/p-38419178.js.map +1 -0
- package/dist/components/{p-d95bc2a0.js → p-3df3ff8b.js} +17 -21
- package/dist/components/p-3df3ff8b.js.map +1 -0
- package/dist/components/{p-1234974c.js → p-433f974c.js} +9 -8
- package/dist/components/p-433f974c.js.map +1 -0
- package/dist/components/{p-4b92ae26.js → p-4e9cd62e.js} +4 -4
- package/dist/components/{p-4b92ae26.js.map → p-4e9cd62e.js.map} +1 -1
- package/dist/components/{p-755f491b.js → p-6104fe5d.js} +2 -2
- package/dist/components/p-6104fe5d.js.map +1 -0
- package/dist/components/{p-b4a8fcbe.js → p-97332d3e.js} +51 -59
- package/dist/components/p-97332d3e.js.map +1 -0
- package/dist/components/p-bf6a086a.js +92 -0
- package/dist/components/p-bf6a086a.js.map +1 -0
- package/dist/components/p-bff4d3fc.js +65 -0
- package/dist/components/p-bff4d3fc.js.map +1 -0
- package/dist/components/{p-521fe971.js → p-d19bf6ff.js} +25 -8
- package/dist/components/p-d19bf6ff.js.map +1 -0
- package/dist/components/p-de4a48b1.js +65 -0
- package/dist/components/p-de4a48b1.js.map +1 -0
- package/dist/components/{p-ca881e5c.js → p-e55a7970.js} +2 -2
- package/dist/components/{p-ca881e5c.js.map → p-e55a7970.js.map} +1 -1
- package/dist/components/p-ec0d230e.js +75 -0
- package/dist/components/p-ec0d230e.js.map +1 -0
- package/dist/components/{p-54998882.js → p-fc7cda96.js} +10 -10
- package/dist/components/p-fc7cda96.js.map +1 -0
- package/dist/components/searchcraft-base-search-result-ad.d.ts +11 -0
- package/dist/components/searchcraft-base-search-result-ad.js +8 -0
- package/dist/components/searchcraft-base-search-result-ad.js.map +1 -0
- package/dist/components/searchcraft-base-search-result.js +1 -1
- package/dist/components/searchcraft-base-search-results.js +44 -89
- package/dist/components/searchcraft-base-search-results.js.map +1 -1
- package/dist/components/searchcraft-button.js +1 -1
- package/dist/components/searchcraft-error-message.js +1 -1
- package/dist/components/searchcraft-facet-list.js +1 -1
- package/dist/components/searchcraft-filter-panel.js +9 -9
- package/dist/components/searchcraft-filter-panel.js.map +1 -1
- package/dist/components/searchcraft-input-form.js +1 -1
- package/dist/components/searchcraft-input-label.js +1 -1
- package/dist/components/searchcraft-pagination.d.ts +11 -0
- package/dist/components/searchcraft-pagination.js +135 -0
- package/dist/components/searchcraft-pagination.js.map +1 -0
- package/dist/components/searchcraft-popover-button.js +2 -2
- package/dist/components/searchcraft-popover-form.js +41 -30
- package/dist/components/searchcraft-popover-form.js.map +1 -1
- package/dist/components/searchcraft-popover-list-item-ad.d.ts +11 -0
- package/dist/components/searchcraft-popover-list-item-ad.js +8 -0
- package/dist/components/searchcraft-popover-list-item-ad.js.map +1 -0
- package/dist/components/searchcraft-popover-list-item.js +1 -1
- package/dist/components/searchcraft-popover-list-view.js +1 -1
- package/dist/components/searchcraft-results-info.js +60 -17
- package/dist/components/searchcraft-results-info.js.map +1 -1
- package/dist/components/searchcraft-search-results-per-page.d.ts +11 -0
- package/dist/components/searchcraft-search-results-per-page.js +105 -0
- package/dist/components/searchcraft-search-results-per-page.js.map +1 -0
- package/dist/components/searchcraft-select.d.ts +11 -0
- package/dist/components/searchcraft-select.js +8 -0
- package/dist/components/searchcraft-select.js.map +1 -0
- package/dist/components/searchcraft-slider.js +1 -1
- package/dist/components/searchcraft-theme.js +34 -13
- package/dist/components/searchcraft-theme.js.map +1 -1
- package/dist/components/searchcraft-toggle-button.js +1 -1
- package/dist/esm/{store-aa071d9c.js → SearchcraftStore-3cfd565a.js} +576 -442
- package/dist/esm/SearchcraftStore-3cfd565a.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/searchcraft-base-search-result_2.entry.js +147 -0
- package/dist/esm/searchcraft-base-search-result_2.entry.js.map +1 -0
- package/dist/esm/searchcraft-base-search-results.entry.js +30 -80
- package/dist/esm/searchcraft-base-search-results.entry.js.map +1 -1
- package/dist/esm/searchcraft-button_3.entry.js +22 -7
- package/dist/esm/searchcraft-button_3.entry.js.map +1 -1
- package/dist/esm/searchcraft-facet-list_3.entry.js +17 -16
- package/dist/esm/searchcraft-facet-list_3.entry.js.map +1 -1
- package/dist/esm/searchcraft-filter-panel.entry.js +5 -5
- package/dist/esm/searchcraft-filter-panel.entry.js.map +1 -1
- package/dist/esm/searchcraft-input-form_2.entry.js +19 -32
- package/dist/esm/searchcraft-input-form_2.entry.js.map +1 -1
- package/dist/esm/searchcraft-javascript-sdk.js +1 -1
- package/dist/esm/searchcraft-pagination.entry.js +102 -0
- package/dist/esm/searchcraft-pagination.entry.js.map +1 -0
- package/dist/esm/searchcraft-popover-button.entry.js +2 -2
- package/dist/esm/searchcraft-popover-form.entry.js +20 -18
- package/dist/esm/searchcraft-popover-form.entry.js.map +1 -1
- package/dist/esm/searchcraft-popover-list-item_2.entry.js +96 -0
- package/dist/esm/searchcraft-popover-list-item_2.entry.js.map +1 -0
- package/dist/esm/searchcraft-results-info.entry.js +51 -13
- package/dist/esm/searchcraft-results-info.entry.js.map +1 -1
- package/dist/esm/searchcraft-search-results-per-page.entry.js +71 -0
- package/dist/esm/searchcraft-search-results-per-page.entry.js.map +1 -0
- package/dist/esm/searchcraft-select.entry.js +66 -0
- package/dist/esm/searchcraft-select.entry.js.map +1 -0
- package/dist/esm/searchcraft-theme.entry.js +29 -11
- package/dist/esm/searchcraft-theme.entry.js.map +1 -1
- package/dist/esm/{units-b6eba560.js → units-daaf96f5.js} +2 -2
- package/dist/esm/units-daaf96f5.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/index.esm.js +1 -1
- package/dist/searchcraft-javascript-sdk/p-279f3e15.entry.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-279f3e15.entry.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-2bc82b48.entry.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-2bc82b48.entry.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-2dc07b47.entry.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-2dc07b47.entry.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-38419178.js +11 -0
- package/dist/searchcraft-javascript-sdk/p-38419178.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-5e064c07.entry.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-5e064c07.entry.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/{p-755f491b.js → p-6104fe5d.js} +2 -2
- package/dist/searchcraft-javascript-sdk/p-6104fe5d.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-69da4e58.entry.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-69da4e58.entry.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-6bffd3f5.entry.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-6bffd3f5.entry.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-7f4dd50c.entry.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-9340f4e4.entry.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-9340f4e4.entry.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-a3074a6d.entry.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-a3074a6d.entry.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-a84b1548.entry.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-a84b1548.entry.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-b8ea0454.entry.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-b8ea0454.entry.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-c4a9d8ab.entry.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-c4a9d8ab.entry.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-d2fffca9.entry.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-d2fffca9.entry.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/p-e11de2d6.entry.js +2 -0
- package/dist/searchcraft-javascript-sdk/p-e11de2d6.entry.js.map +1 -0
- package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js +1 -1
- package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js.map +1 -1
- package/dist/types/components/searchcraft-base-search-result/searchcraft-base-search-result.d.ts +20 -41
- package/dist/types/components/searchcraft-base-search-result-ad/searchcraft-base-search-result-ad.d.ts +14 -0
- package/dist/types/components/searchcraft-base-search-results/searchcraft-base-search-results.d.ts +9 -18
- package/dist/types/components/searchcraft-button/searchcraft-button.d.ts +17 -6
- package/dist/types/components/searchcraft-facet-list/searchcraft-facet-list.d.ts +1 -1
- package/dist/types/components/searchcraft-filter-panel/searchcraft-filter-panel.d.ts +2 -2
- package/dist/types/components/searchcraft-input-form/searchcraft-input-form.d.ts +1 -1
- package/dist/types/components/searchcraft-pagination/searchcraft-pagination.d.ts +33 -0
- package/dist/types/components/searchcraft-popover-form/searchcraft-popover-form.d.ts +9 -7
- package/dist/types/components/searchcraft-popover-list-item/searchcraft-popover-list-item.d.ts +9 -12
- package/dist/types/components/searchcraft-popover-list-item-ad/searchcraft-popover-list-item-ad.d.ts +14 -0
- package/dist/types/components/searchcraft-popover-list-view/searchcraft-popover-list-view.d.ts +7 -4
- package/dist/types/components/searchcraft-results-info/searchcraft-results-info.d.ts +26 -4
- package/dist/types/components/searchcraft-search-results-per-page/searchcraft-search-results-per-page.d.ts +33 -0
- package/dist/types/components/searchcraft-select/searchcraft-select.d.ts +64 -0
- package/dist/types/components/searchcraft-theme/searchcraft-theme.d.ts +20 -1
- package/dist/types/components/searchcraft-toggle-button/searchcraft-toggle-button.d.ts +1 -1
- package/dist/types/components.d.ts +476 -166
- package/dist/types/index.d.ts +1 -2
- package/dist/types/provider/SearchcraftStore.d.ts +4 -0
- package/dist/types/provider/SearchcraftStore.types.d.ts +44 -0
- package/dist/types/provider/store.d.ts +2 -34
- package/dist/types/utils/units.d.ts +1 -1
- package/package.json +3 -3
- package/dist/cjs/searchcraft-base-search-result.cjs.entry.js +0 -117
- package/dist/cjs/searchcraft-base-search-result.cjs.entry.js.map +0 -1
- package/dist/cjs/searchcraft-popover-list-item.cjs.entry.js +0 -49
- package/dist/cjs/searchcraft-popover-list-item.cjs.entry.js.map +0 -1
- package/dist/cjs/store-f6ba3dfb.js.map +0 -1
- package/dist/collection/types/_shared.types.js +0 -2
- package/dist/collection/types/_shared.types.js.map +0 -1
- package/dist/collection/types/index.js +0 -5
- package/dist/collection/types/index.js.map +0 -1
- package/dist/collection/types/searchcraft-base-search-results.types.js +0 -2
- package/dist/collection/types/searchcraft-base-search-results.types.js.map +0 -1
- package/dist/collection/types/searchcraft-filter-panel.types.js +0 -2
- package/dist/collection/types/searchcraft-filter-panel.types.js.map +0 -1
- package/dist/collection/types/searchcraft-popover-form.types.js +0 -2
- package/dist/collection/types/searchcraft-popover-form.types.js.map +0 -1
- package/dist/components/p-0ef4ab33.js +0 -66
- package/dist/components/p-0ef4ab33.js.map +0 -1
- package/dist/components/p-1234974c.js.map +0 -1
- package/dist/components/p-506cdac1.js +0 -58
- package/dist/components/p-506cdac1.js.map +0 -1
- package/dist/components/p-521fe971.js.map +0 -1
- package/dist/components/p-54998882.js.map +0 -1
- package/dist/components/p-755f491b.js.map +0 -1
- package/dist/components/p-936e2ed4.js.map +0 -1
- package/dist/components/p-b4a8fcbe.js.map +0 -1
- package/dist/components/p-d95bc2a0.js.map +0 -1
- package/dist/esm/searchcraft-base-search-result.entry.js +0 -113
- package/dist/esm/searchcraft-base-search-result.entry.js.map +0 -1
- package/dist/esm/searchcraft-popover-list-item.entry.js +0 -45
- package/dist/esm/searchcraft-popover-list-item.entry.js.map +0 -1
- package/dist/esm/store-aa071d9c.js.map +0 -1
- package/dist/esm/units-b6eba560.js.map +0 -1
- package/dist/searchcraft-javascript-sdk/p-26f5263d.entry.js +0 -2
- package/dist/searchcraft-javascript-sdk/p-26f5263d.entry.js.map +0 -1
- package/dist/searchcraft-javascript-sdk/p-2ff7eb35.entry.js +0 -2
- package/dist/searchcraft-javascript-sdk/p-2ff7eb35.entry.js.map +0 -1
- package/dist/searchcraft-javascript-sdk/p-36f0532e.entry.js +0 -2
- package/dist/searchcraft-javascript-sdk/p-36f0532e.entry.js.map +0 -1
- package/dist/searchcraft-javascript-sdk/p-41b6bc5d.entry.js +0 -2
- package/dist/searchcraft-javascript-sdk/p-41b6bc5d.entry.js.map +0 -1
- package/dist/searchcraft-javascript-sdk/p-57eddb07.entry.js +0 -2
- package/dist/searchcraft-javascript-sdk/p-57eddb07.entry.js.map +0 -1
- package/dist/searchcraft-javascript-sdk/p-5d6fbee0.entry.js +0 -2
- package/dist/searchcraft-javascript-sdk/p-5d6fbee0.entry.js.map +0 -1
- package/dist/searchcraft-javascript-sdk/p-64c5a1d2.entry.js +0 -2
- package/dist/searchcraft-javascript-sdk/p-64c5a1d2.entry.js.map +0 -1
- package/dist/searchcraft-javascript-sdk/p-755f491b.js.map +0 -1
- package/dist/searchcraft-javascript-sdk/p-8b0a60b3.entry.js +0 -2
- package/dist/searchcraft-javascript-sdk/p-8b0a60b3.entry.js.map +0 -1
- package/dist/searchcraft-javascript-sdk/p-936e2ed4.js +0 -11
- package/dist/searchcraft-javascript-sdk/p-936e2ed4.js.map +0 -1
- package/dist/searchcraft-javascript-sdk/p-c7df8be6.entry.js +0 -2
- package/dist/searchcraft-javascript-sdk/p-c7df8be6.entry.js.map +0 -1
- package/dist/searchcraft-javascript-sdk/p-eb6058e8.entry.js +0 -2
- package/dist/searchcraft-javascript-sdk/p-eb6058e8.entry.js.map +0 -1
- package/dist/searchcraft-javascript-sdk/p-faaa4394.entry.js +0 -2
- package/dist/types/types/_shared.types.d.ts +0 -46
- package/dist/types/types/index.d.ts +0 -5
- package/dist/types/types/searchcraft-base-search-results.types.d.ts +0 -11
- package/dist/types/types/searchcraft-filter-panel.types.d.ts +0 -43
- package/dist/types/types/searchcraft-popover-form.types.d.ts +0 -9
- /package/dist/searchcraft-javascript-sdk/{p-faaa4394.entry.js.map → p-7f4dd50c.entry.js.map} +0 -0
- /package/dist/types/{types → themes}/raw.d.ts +0 -0
|
@@ -2,7 +2,7 @@ import { h } from "@stencil/core";
|
|
|
2
2
|
import classNames from "classnames";
|
|
3
3
|
import { useSearchcraftStore } from "../../provider/store";
|
|
4
4
|
/**
|
|
5
|
-
* This web component is designed to display search results in a popover container that dynamically appears when the user interacts with a search input field.
|
|
5
|
+
* This web component is designed to display search results in a popover container that dynamically appears when the user interacts with a search input field, or when a popover-button is pressed.
|
|
6
6
|
*
|
|
7
7
|
* ## Usage
|
|
8
8
|
* ```html
|
|
@@ -58,12 +58,15 @@ export class SearchcraftPopoverForm {
|
|
|
58
58
|
hotkeyModifier = 'meta';
|
|
59
59
|
isPopoverVisibleInState = false;
|
|
60
60
|
unsubscribe;
|
|
61
|
-
|
|
61
|
+
searchClientResponseItems = [];
|
|
62
|
+
adClientResponseItems = [];
|
|
62
63
|
searchTerm;
|
|
63
64
|
isFocused = false;
|
|
64
65
|
breakpointSm = 576;
|
|
65
66
|
breakpointMd = 768;
|
|
66
67
|
breakpointLg = 992;
|
|
68
|
+
searchResultsPage;
|
|
69
|
+
searchResultsPerPage;
|
|
67
70
|
modalElement;
|
|
68
71
|
hostElement;
|
|
69
72
|
componentDidLoad() {
|
|
@@ -83,8 +86,11 @@ export class SearchcraftPopoverForm {
|
|
|
83
86
|
if (this.isPopoverVisibleInState !== state.isPopoverVisible) {
|
|
84
87
|
this.handlePopoverVisibilityChange(state.isPopoverVisible);
|
|
85
88
|
}
|
|
86
|
-
this.
|
|
87
|
-
this.
|
|
89
|
+
this.searchClientResponseItems = [...state.searchClientResponseItems];
|
|
90
|
+
this.adClientResponseItems = [...state.adClientResponseItems];
|
|
91
|
+
this.searchTerm = state.searchTerm;
|
|
92
|
+
this.searchResultsPage = state.searchResultsPage;
|
|
93
|
+
this.searchResultsPerPage = state.searchResultsPerPage;
|
|
88
94
|
});
|
|
89
95
|
}
|
|
90
96
|
disconnectedCallback() {
|
|
@@ -211,40 +217,36 @@ export class SearchcraftPopoverForm {
|
|
|
211
217
|
get hasResultsToShow() {
|
|
212
218
|
return (this.searchTerm &&
|
|
213
219
|
this.searchTerm?.trim()?.length > 0 &&
|
|
214
|
-
|
|
220
|
+
this.searchClientResponseItems.length > 0);
|
|
215
221
|
}
|
|
216
|
-
renderInlinePopover(
|
|
222
|
+
renderInlinePopover() {
|
|
217
223
|
const isListViewVisible = this.hasResultsToShow && this.isFocused;
|
|
218
224
|
const popoverFormClassNames = classNames('searchcraft-popover-form searchcraft-popover-form-inline', {
|
|
219
225
|
'searchcraft-popover-form-active': isListViewVisible,
|
|
220
226
|
});
|
|
221
|
-
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,
|
|
227
|
+
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, searchClientResponseItems: this.searchClientResponseItems, adClientResponseItems: this.adClientResponseItems, searchResultsPage: this.searchResultsPage, searchResultsPerPage: this.searchResultsPerPage }))))));
|
|
222
228
|
}
|
|
223
|
-
renderModalPopover(
|
|
229
|
+
renderModalPopover() {
|
|
224
230
|
if (this.isPopoverVisibleInState) {
|
|
225
231
|
const popoverFormClassNames = classNames('searchcraft-popover-form', {
|
|
226
232
|
'searchcraft-popover-form-active': this.hasResultsToShow,
|
|
227
233
|
});
|
|
228
|
-
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,
|
|
234
|
+
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, searchClientResponseItems: this.searchClientResponseItems, adClientResponseItems: this.adClientResponseItems, searchResultsPage: this.searchResultsPage, searchResultsPerPage: this.searchResultsPerPage }))))));
|
|
229
235
|
}
|
|
230
236
|
}
|
|
231
|
-
renderFullscreenPopover(
|
|
237
|
+
renderFullscreenPopover() {
|
|
232
238
|
if (this.isPopoverVisibleInState) {
|
|
233
|
-
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,
|
|
239
|
+
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, searchClientResponseItems: this.searchClientResponseItems, adClientResponseItems: this.adClientResponseItems, searchResultsPage: this.searchResultsPage, searchResultsPerPage: this.searchResultsPerPage })))));
|
|
234
240
|
}
|
|
235
241
|
}
|
|
236
242
|
render() {
|
|
237
|
-
const documents = this.searchResults?.data?.hits?.map((data, _index) => {
|
|
238
|
-
const { doc: result } = data;
|
|
239
|
-
return result;
|
|
240
|
-
});
|
|
241
243
|
switch (this.type) {
|
|
242
244
|
case 'inline':
|
|
243
|
-
return this.renderInlinePopover(
|
|
245
|
+
return this.renderInlinePopover();
|
|
244
246
|
case 'modal':
|
|
245
|
-
return this.renderModalPopover(
|
|
247
|
+
return this.renderModalPopover();
|
|
246
248
|
case 'fullscreen':
|
|
247
|
-
return this.renderFullscreenPopover(
|
|
249
|
+
return this.renderFullscreenPopover();
|
|
248
250
|
}
|
|
249
251
|
}
|
|
250
252
|
static get is() { return "searchcraft-popover-form"; }
|
|
@@ -302,8 +304,8 @@ export class SearchcraftPopoverForm {
|
|
|
302
304
|
"references": {
|
|
303
305
|
"PopoverResultMappings": {
|
|
304
306
|
"location": "import",
|
|
305
|
-
"path": "
|
|
306
|
-
"id": "
|
|
307
|
+
"path": "@searchcraft/core",
|
|
308
|
+
"id": "../core-sdk/dist/index.d.ts::PopoverResultMappings"
|
|
307
309
|
}
|
|
308
310
|
}
|
|
309
311
|
},
|
|
@@ -362,12 +364,15 @@ export class SearchcraftPopoverForm {
|
|
|
362
364
|
return {
|
|
363
365
|
"isPopoverVisibleInState": {},
|
|
364
366
|
"unsubscribe": {},
|
|
365
|
-
"
|
|
367
|
+
"searchClientResponseItems": {},
|
|
368
|
+
"adClientResponseItems": {},
|
|
366
369
|
"searchTerm": {},
|
|
367
370
|
"isFocused": {},
|
|
368
371
|
"breakpointSm": {},
|
|
369
372
|
"breakpointMd": {},
|
|
370
373
|
"breakpointLg": {},
|
|
374
|
+
"searchResultsPage": {},
|
|
375
|
+
"searchResultsPerPage": {},
|
|
371
376
|
"modalElement": {}
|
|
372
377
|
};
|
|
373
378
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchcraft-popover-form.js","sourceRoot":"","sources":["../../../../src/components/searchcraft-popover-form/searchcraft-popover-form.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Prop, State, h } from '@stencil/core';\nimport classNames from 'classnames';\nimport type { SearchcraftConfig, SearchcraftResponse } from '@searchcraft/core';\n\nimport { useSearchcraftStore } from '@provider/store';\nimport type { PopoverResultMappings } from 'types';\n\n/**\n * This web component is designed to display search results in a popover container that dynamically appears when the user interacts with a search input field.\n *\n * ## Usage\n * ```html\n * <!-- index.html -->\n * <searchcraft-popover-form type=\"fullscreen\" />\n * ```\n *\n * ```js\n * // index.js\n * const popoverForm = document.querySelector('searchcraft-popover-form');\n *\n * popoverForm.config = {\n * index: [index_name_from_vektron],\n * readKey: 'read_key_from_vektron',\n * endpointUrl: 'enpoint_url_from_vektron',\n * };\n *\n * popoverForm.popoverResultMappings = {\n * containerHref: {\n * fieldNames: [\n * {\n * fieldName: 'canonical_link',\n * dataType: 'text',\n * },\n * ],\n * };\n * ```\n */\n@Component({\n tag: 'searchcraft-popover-form',\n shadow: false,\n})\nexport class SearchcraftPopoverForm {\n /**\n * The Searchcraft config object.\n */\n @Prop() config: SearchcraftConfig | undefined;\n /**\n * The type of popover form to render.\n *\n * - `inline` - Renders inline with the rest of the content on the page. The search results pop over the page content.\n * - `fullscreen` - Renders in fullscreen view. Used together with the `searchcraft-popover-button` component.\n * - `modal` - Renders in a modal view. Used together with the `searchcraft-popover-button` component.\n */\n @Prop() type: 'inline' | 'fullscreen' | 'modal' = 'inline';\n /**\n * Formats the content rendered for each result.\n */\n @Prop() popoverResultMappings: PopoverResultMappings | undefined;\n /**\n * The hotkey that activates the popover.\n */\n @Prop() hotkey = 'k';\n /**\n * The hotkey modifier that activates the popover. Used together with the `hotkey` prop.\n */\n @Prop() hotkeyModifier: 'ctrl' | 'meta' | 'alt' | 'option' = 'meta';\n\n @State() isPopoverVisibleInState = false;\n @State() unsubscribe: (() => void) | undefined;\n @State() searchResults: SearchcraftResponse | undefined;\n @State() searchTerm: string | undefined;\n @State() isFocused = false;\n @State() breakpointSm = 576;\n @State() breakpointMd = 768;\n @State() breakpointLg = 992;\n\n @State() modalElement;\n\n @Element() hostElement!: HTMLElement;\n\n componentDidLoad() {\n // Loads the breakpoint values into state\n const computedStyle = getComputedStyle(document.documentElement);\n this.breakpointSm = Number.parseFloat(\n computedStyle.getPropertyValue('--sc-breakpoint-sm').trim(),\n );\n this.breakpointMd = Number.parseFloat(\n computedStyle.getPropertyValue('--sc-breakpoint-md').trim(),\n );\n this.breakpointLg = Number.parseFloat(\n computedStyle.getPropertyValue('--sc-breakpoint-lg').trim(),\n );\n // Set popover visiblity in state\n this.isPopoverVisibleInState =\n useSearchcraftStore.getState().isPopoverVisible;\n\n // Add event listeners\n document.addEventListener('click', this.handleDocumentClick);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n\n // Subscribe to state events\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n if (this.isPopoverVisibleInState !== state.isPopoverVisible) {\n this.handlePopoverVisibilityChange(state.isPopoverVisible);\n }\n\n this.searchResults = { ...state.searchResults } as SearchcraftResponse;\n this.searchTerm = state.query;\n });\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n document.removeEventListener('click', this.handleDocumentClick);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n handleDocumentClick = (event: MouseEvent) => {\n if (!this.hostElement.contains(event.target as Node)) {\n this.isFocused = false;\n }\n };\n\n /**\n * Handles when popover visibility is changed in state\n */\n handlePopoverVisibilityChange(isVisible: boolean) {\n this.isPopoverVisibleInState = isVisible;\n document.body.style.overflow = isVisible ? 'hidden' : 'auto';\n }\n\n /**\n * Actions to perform when various keys are pressed within the popover form.\n */\n handleDocumentKeyDown = (event: KeyboardEvent) => {\n // Document-scoped actions\n if (event.key === this.hotkey) {\n this.handleHotkeyPressed(event);\n }\n\n // Document-scoped -> Popover-scoped keyboard event boundary\n if (!this.hostElement.contains(document.activeElement)) {\n return;\n }\n\n // Popover-scoped actions\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n event.preventDefault();\n this.focusOnNextListItem(event.key);\n break;\n case 'Escape':\n useSearchcraftStore.getState().setPopoverVisibility(false);\n break;\n default:\n return;\n }\n };\n\n handleInputInit = () => {\n const input = this.hostElement.querySelector('.searchcraft-input') as\n | HTMLInputElement\n | undefined;\n input?.focus();\n };\n\n /**\n * When popover is `inline` and the viewport is at the smallest breakpoint,\n * focusing on the input will open a modal version of the popover form.\n */\n handleInputFocus() {\n this.isFocused = true;\n\n if (\n this.type === 'inline' &&\n window.visualViewport &&\n window.visualViewport.width < this.breakpointSm\n ) {\n useSearchcraftStore.getState().setPopoverVisibility(true);\n\n // Appends a popover form of type=`modal` to the body\n if (!this.modalElement) {\n this.modalElement = document.createElement('searchcraft-popover-form');\n this.modalElement.config = this.config;\n this.modalElement.popoverResultMappings = this.popoverResultMappings;\n this.modalElement.setAttribute('type', 'fullscreen');\n document.body.appendChild(this.modalElement);\n }\n }\n }\n\n handleModalBackdropClick(_event: MouseEvent) {\n useSearchcraftStore.getState().setPopoverVisibility(false);\n }\n\n /**\n * When a hotkey is pressed, tests if the modifiers also match.\n * If modifiers match, toggles visibility of the popover modal.\n */\n handleHotkeyPressed(event: KeyboardEvent) {\n if (\n (event.ctrlKey && this.hotkeyModifier === 'ctrl') ||\n (event.altKey && this.hotkeyModifier === 'alt') ||\n (event.metaKey && this.hotkeyModifier === 'meta')\n ) {\n event.preventDefault();\n if (this.type === 'inline' && !this.isPopoverVisibleInState) {\n const hostElementInput = this.hostElement.querySelector(\n '.searchcraft-input',\n ) as HTMLInputElement | undefined;\n hostElementInput?.focus();\n } else {\n useSearchcraftStore\n .getState()\n .setPopoverVisibility(!this.isPopoverVisibleInState);\n }\n }\n }\n\n handleCancelButtonClick() {\n useSearchcraftStore.getState().setPopoverVisibility(false);\n }\n\n /**\n * Moves focus to the next/previous list item in the list view. If you are at the top\n * of the list view, it moves focus back to the input.\n *\n * @param direction\n */\n focusOnNextListItem(direction: 'ArrowDown' | 'ArrowUp') {\n const listItems = Array.from(\n document.querySelectorAll<HTMLAnchorElement>(\n 'a.searchcraft-popover-list-item',\n ),\n ).filter((el) => !el.hasAttribute('disabled') && el.offsetParent !== null);\n\n const currentIndex = listItems.indexOf(\n document.activeElement as HTMLAnchorElement,\n );\n\n if (direction === 'ArrowDown') {\n listItems[(currentIndex + 1) % listItems.length]?.focus();\n } else if (direction === 'ArrowUp') {\n if (currentIndex >= 1) {\n listItems[currentIndex - 1]?.focus();\n } else {\n const input = document.querySelector('.searchcraft-input') as\n | HTMLInputElement\n | undefined;\n\n if (input) {\n input.focus();\n requestAnimationFrame(() => {\n input.selectionEnd = input.value.length;\n input.selectionStart = input.value.length;\n });\n }\n }\n }\n }\n\n get hasResultsToShow() {\n return (\n this.searchTerm &&\n this.searchTerm?.trim()?.length > 0 &&\n (this.searchResults?.data?.hits?.length || 0) > 0\n );\n }\n\n renderInlinePopover(documents: Record<string, unknown>[]) {\n const isListViewVisible = this.hasResultsToShow && this.isFocused;\n\n const popoverFormClassNames = classNames(\n 'searchcraft-popover-form searchcraft-popover-form-inline',\n {\n 'searchcraft-popover-form-active': isListViewVisible,\n },\n );\n\n return (\n <div class={popoverFormClassNames}>\n <searchcraft-input-form\n config={this.config}\n onInputFocus={this.handleInputFocus.bind(this)}\n />\n {isListViewVisible && (\n <div class='searchcraft-popover-inline-wrapper-outer'>\n <div class='searchcraft-popover-inline-wrapper-inner'>\n <searchcraft-popover-list-view\n popoverResultMappings={this.popoverResultMappings}\n documents={documents}\n />\n </div>\n </div>\n )}\n </div>\n );\n }\n\n renderModalPopover(documents: Record<string, unknown>[]) {\n if (this.isPopoverVisibleInState) {\n const popoverFormClassNames = classNames('searchcraft-popover-form', {\n 'searchcraft-popover-form-active': this.hasResultsToShow,\n });\n\n return (\n <div class='searchcraft-popover-form-modal'>\n {/* biome-ignore lint/a11y/useKeyWithClickEvents: <explanation> */}\n <div\n class='searchcraft-popover-form-modal-backdrop'\n onClick={this.handleModalBackdropClick}\n />\n <div class='searchcraft-popover-form-modal-inner'>\n <div class={popoverFormClassNames}>\n <div class='searchcraft-popover-form-input-wrapper'>\n <searchcraft-input-form\n config={this.config}\n onInputFocus={this.handleInputFocus.bind(this)}\n onInputInit={this.handleInputInit.bind(this)}\n />\n <button\n type='button'\n class='searchcraft-popover-form-cancel-button'\n onClick={this.handleCancelButtonClick.bind(this)}\n >\n Cancel\n </button>\n </div>\n {this.hasResultsToShow && (\n <searchcraft-popover-list-view\n popoverResultMappings={this.popoverResultMappings}\n documents={documents}\n />\n )}\n </div>\n </div>\n </div>\n );\n }\n }\n\n renderFullscreenPopover(documents: Record<string, unknown>[]) {\n if (this.isPopoverVisibleInState) {\n return (\n <div class='searchcraft-popover-form-fullscreen'>\n <div class='searchcraft-popover-form'>\n <div class='searchcraft-popover-form-input-wrapper'>\n <searchcraft-input-form\n config={this.config}\n onInputFocus={this.handleInputFocus.bind(this)}\n onInputInit={this.handleInputInit.bind(this)}\n />\n <button\n type='button'\n class='searchcraft-popover-form-cancel-button'\n onClick={this.handleCancelButtonClick.bind(this)}\n >\n Cancel\n </button>\n </div>\n {this.hasResultsToShow && (\n <searchcraft-popover-list-view\n popoverResultMappings={this.popoverResultMappings}\n documents={documents}\n />\n )}\n </div>\n </div>\n );\n }\n }\n\n render() {\n const documents: Record<string, unknown>[] =\n this.searchResults?.data?.hits?.map((data, _index) => {\n const { doc: result } = data;\n return result;\n }) as Record<string, unknown>[];\n\n switch (this.type) {\n case 'inline':\n return this.renderInlinePopover(documents);\n case 'modal':\n return this.renderModalPopover(documents);\n case 'fullscreen':\n return this.renderFullscreenPopover(documents);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"searchcraft-popover-form.js","sourceRoot":"","sources":["../../../../src/components/searchcraft-popover-form/searchcraft-popover-form.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Prop, State, h } from '@stencil/core';\nimport classNames from 'classnames';\nimport type {\n SearchcraftConfig,\n SearchClientResponseItem,\n AdClientResponseItem,\n PopoverResultMappings,\n} from '@searchcraft/core';\n\nimport { useSearchcraftStore } from '@provider/store';\n\n/**\n * This web component is designed to display search results in a popover container that dynamically appears when the user interacts with a search input field, or when a popover-button is pressed.\n *\n * ## Usage\n * ```html\n * <!-- index.html -->\n * <searchcraft-popover-form type=\"fullscreen\" />\n * ```\n *\n * ```js\n * // index.js\n * const popoverForm = document.querySelector('searchcraft-popover-form');\n *\n * popoverForm.config = {\n * index: [index_name_from_vektron],\n * readKey: 'read_key_from_vektron',\n * endpointUrl: 'enpoint_url_from_vektron',\n * };\n *\n * popoverForm.popoverResultMappings = {\n * containerHref: {\n * fieldNames: [\n * {\n * fieldName: 'canonical_link',\n * dataType: 'text',\n * },\n * ],\n * };\n * ```\n */\n@Component({\n tag: 'searchcraft-popover-form',\n shadow: false,\n})\nexport class SearchcraftPopoverForm {\n /**\n * The Searchcraft config object.\n */\n @Prop() config: SearchcraftConfig | undefined;\n /**\n * The type of popover form to render.\n *\n * - `inline` - Renders inline with the rest of the content on the page. The search results pop over the page content.\n * - `fullscreen` - Renders in fullscreen view. Used together with the `searchcraft-popover-button` component.\n * - `modal` - Renders in a modal view. Used together with the `searchcraft-popover-button` component.\n */\n @Prop() type: 'inline' | 'fullscreen' | 'modal' = 'inline';\n /**\n * Formats the content rendered for each result.\n */\n @Prop() popoverResultMappings: PopoverResultMappings | undefined;\n /**\n * The hotkey that activates the popover.\n */\n @Prop() hotkey = 'k';\n /**\n * The hotkey modifier that activates the popover. Used together with the `hotkey` prop.\n */\n @Prop() hotkeyModifier: 'ctrl' | 'meta' | 'alt' | 'option' = 'meta';\n\n @State() isPopoverVisibleInState = false;\n @State() unsubscribe: (() => void) | undefined;\n @State() searchClientResponseItems: SearchClientResponseItem[] = [];\n @State() adClientResponseItems: AdClientResponseItem[] = [];\n @State() searchTerm: string | undefined;\n @State() isFocused = false;\n @State() breakpointSm = 576;\n @State() breakpointMd = 768;\n @State() breakpointLg = 992;\n @State() searchResultsPage;\n @State() searchResultsPerPage;\n\n @State() modalElement;\n\n @Element() hostElement!: HTMLElement;\n\n componentDidLoad() {\n // Loads the breakpoint values into state\n const computedStyle = getComputedStyle(document.documentElement);\n this.breakpointSm = Number.parseFloat(\n computedStyle.getPropertyValue('--sc-breakpoint-sm').trim(),\n );\n this.breakpointMd = Number.parseFloat(\n computedStyle.getPropertyValue('--sc-breakpoint-md').trim(),\n );\n this.breakpointLg = Number.parseFloat(\n computedStyle.getPropertyValue('--sc-breakpoint-lg').trim(),\n );\n // Set popover visiblity in state\n this.isPopoverVisibleInState =\n useSearchcraftStore.getState().isPopoverVisible;\n\n // Add event listeners\n document.addEventListener('click', this.handleDocumentClick);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n\n // Subscribe to state events\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n if (this.isPopoverVisibleInState !== state.isPopoverVisible) {\n this.handlePopoverVisibilityChange(state.isPopoverVisible);\n }\n\n this.searchClientResponseItems = [...state.searchClientResponseItems];\n this.adClientResponseItems = [...state.adClientResponseItems];\n this.searchTerm = state.searchTerm;\n this.searchResultsPage = state.searchResultsPage;\n this.searchResultsPerPage = state.searchResultsPerPage;\n });\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n document.removeEventListener('click', this.handleDocumentClick);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n handleDocumentClick = (event: MouseEvent) => {\n if (!this.hostElement.contains(event.target as Node)) {\n this.isFocused = false;\n }\n };\n\n /**\n * Handles when popover visibility is changed in state\n */\n handlePopoverVisibilityChange(isVisible: boolean) {\n this.isPopoverVisibleInState = isVisible;\n document.body.style.overflow = isVisible ? 'hidden' : 'auto';\n }\n\n /**\n * Actions to perform when various keys are pressed within the popover form.\n */\n handleDocumentKeyDown = (event: KeyboardEvent) => {\n // Document-scoped actions\n if (event.key === this.hotkey) {\n this.handleHotkeyPressed(event);\n }\n\n // Document-scoped -> Popover-scoped keyboard event boundary\n if (!this.hostElement.contains(document.activeElement)) {\n return;\n }\n\n // Popover-scoped actions\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n event.preventDefault();\n this.focusOnNextListItem(event.key);\n break;\n case 'Escape':\n useSearchcraftStore.getState().setPopoverVisibility(false);\n break;\n default:\n return;\n }\n };\n\n handleInputInit = () => {\n const input = this.hostElement.querySelector('.searchcraft-input') as\n | HTMLInputElement\n | undefined;\n input?.focus();\n };\n\n /**\n * When popover is `inline` and the viewport is at the smallest breakpoint,\n * focusing on the input will open a modal version of the popover form.\n */\n handleInputFocus() {\n this.isFocused = true;\n\n if (\n this.type === 'inline' &&\n window.visualViewport &&\n window.visualViewport.width < this.breakpointSm\n ) {\n useSearchcraftStore.getState().setPopoverVisibility(true);\n\n // Appends a popover form of type=`modal` to the body\n if (!this.modalElement) {\n this.modalElement = document.createElement('searchcraft-popover-form');\n this.modalElement.config = this.config;\n this.modalElement.popoverResultMappings = this.popoverResultMappings;\n this.modalElement.setAttribute('type', 'fullscreen');\n document.body.appendChild(this.modalElement);\n }\n }\n }\n\n handleModalBackdropClick(_event: MouseEvent) {\n useSearchcraftStore.getState().setPopoverVisibility(false);\n }\n\n /**\n * When a hotkey is pressed, tests if the modifiers also match.\n * If modifiers match, toggles visibility of the popover modal.\n */\n handleHotkeyPressed(event: KeyboardEvent) {\n if (\n (event.ctrlKey && this.hotkeyModifier === 'ctrl') ||\n (event.altKey && this.hotkeyModifier === 'alt') ||\n (event.metaKey && this.hotkeyModifier === 'meta')\n ) {\n event.preventDefault();\n if (this.type === 'inline' && !this.isPopoverVisibleInState) {\n const hostElementInput = this.hostElement.querySelector(\n '.searchcraft-input',\n ) as HTMLInputElement | undefined;\n hostElementInput?.focus();\n } else {\n useSearchcraftStore\n .getState()\n .setPopoverVisibility(!this.isPopoverVisibleInState);\n }\n }\n }\n\n handleCancelButtonClick() {\n useSearchcraftStore.getState().setPopoverVisibility(false);\n }\n\n /**\n * Moves focus to the next/previous list item in the list view. If you are at the top\n * of the list view, it moves focus back to the input.\n *\n * @param direction\n */\n focusOnNextListItem(direction: 'ArrowDown' | 'ArrowUp') {\n const listItems = Array.from(\n document.querySelectorAll<HTMLAnchorElement>(\n 'a.searchcraft-popover-list-item',\n ),\n ).filter((el) => !el.hasAttribute('disabled') && el.offsetParent !== null);\n\n const currentIndex = listItems.indexOf(\n document.activeElement as HTMLAnchorElement,\n );\n\n if (direction === 'ArrowDown') {\n listItems[(currentIndex + 1) % listItems.length]?.focus();\n } else if (direction === 'ArrowUp') {\n if (currentIndex >= 1) {\n listItems[currentIndex - 1]?.focus();\n } else {\n const input = document.querySelector('.searchcraft-input') as\n | HTMLInputElement\n | undefined;\n\n if (input) {\n input.focus();\n requestAnimationFrame(() => {\n input.selectionEnd = input.value.length;\n input.selectionStart = input.value.length;\n });\n }\n }\n }\n }\n\n get hasResultsToShow() {\n return (\n this.searchTerm &&\n this.searchTerm?.trim()?.length > 0 &&\n this.searchClientResponseItems.length > 0\n );\n }\n\n renderInlinePopover() {\n const isListViewVisible = this.hasResultsToShow && this.isFocused;\n\n const popoverFormClassNames = classNames(\n 'searchcraft-popover-form searchcraft-popover-form-inline',\n {\n 'searchcraft-popover-form-active': isListViewVisible,\n },\n );\n\n return (\n <div class={popoverFormClassNames}>\n <searchcraft-input-form\n config={this.config}\n onInputFocus={this.handleInputFocus.bind(this)}\n />\n {isListViewVisible && (\n <div class='searchcraft-popover-inline-wrapper-outer'>\n <div class='searchcraft-popover-inline-wrapper-inner'>\n <searchcraft-popover-list-view\n popoverResultMappings={this.popoverResultMappings}\n searchClientResponseItems={this.searchClientResponseItems}\n adClientResponseItems={this.adClientResponseItems}\n searchResultsPage={this.searchResultsPage}\n searchResultsPerPage={this.searchResultsPerPage}\n />\n </div>\n </div>\n )}\n </div>\n );\n }\n\n renderModalPopover() {\n if (this.isPopoverVisibleInState) {\n const popoverFormClassNames = classNames('searchcraft-popover-form', {\n 'searchcraft-popover-form-active': this.hasResultsToShow,\n });\n\n return (\n <div class='searchcraft-popover-form-modal'>\n {/* biome-ignore lint/a11y/useKeyWithClickEvents: <explanation> */}\n <div\n class='searchcraft-popover-form-modal-backdrop'\n onClick={this.handleModalBackdropClick}\n />\n <div class='searchcraft-popover-form-modal-inner'>\n <div class={popoverFormClassNames}>\n <div class='searchcraft-popover-form-input-wrapper'>\n <searchcraft-input-form\n config={this.config}\n onInputFocus={this.handleInputFocus.bind(this)}\n onInputInit={this.handleInputInit.bind(this)}\n />\n <button\n type='button'\n class='searchcraft-popover-form-cancel-button'\n onClick={this.handleCancelButtonClick.bind(this)}\n >\n Cancel\n </button>\n </div>\n {this.hasResultsToShow && (\n <searchcraft-popover-list-view\n popoverResultMappings={this.popoverResultMappings}\n searchClientResponseItems={this.searchClientResponseItems}\n adClientResponseItems={this.adClientResponseItems}\n searchResultsPage={this.searchResultsPage}\n searchResultsPerPage={this.searchResultsPerPage}\n />\n )}\n </div>\n </div>\n </div>\n );\n }\n }\n\n renderFullscreenPopover() {\n if (this.isPopoverVisibleInState) {\n return (\n <div class='searchcraft-popover-form-fullscreen'>\n <div class='searchcraft-popover-form'>\n <div class='searchcraft-popover-form-input-wrapper'>\n <searchcraft-input-form\n config={this.config}\n onInputFocus={this.handleInputFocus.bind(this)}\n onInputInit={this.handleInputInit.bind(this)}\n />\n <button\n type='button'\n class='searchcraft-popover-form-cancel-button'\n onClick={this.handleCancelButtonClick.bind(this)}\n >\n Cancel\n </button>\n </div>\n {this.hasResultsToShow && (\n <searchcraft-popover-list-view\n popoverResultMappings={this.popoverResultMappings}\n searchClientResponseItems={this.searchClientResponseItems}\n adClientResponseItems={this.adClientResponseItems}\n searchResultsPage={this.searchResultsPage}\n searchResultsPerPage={this.searchResultsPerPage}\n />\n )}\n </div>\n </div>\n );\n }\n }\n\n render() {\n switch (this.type) {\n case 'inline':\n return this.renderInlinePopover();\n case 'modal':\n return this.renderModalPopover();\n case 'fullscreen':\n return this.renderFullscreenPopover();\n }\n }\n}\n"]}
|
package/dist/collection/components/searchcraft-popover-list-item/searchcraft-popover-list-item.js
CHANGED
|
@@ -1,33 +1,40 @@
|
|
|
1
1
|
import { useSearchcraftStore } from "../../provider/store";
|
|
2
2
|
import { h } from "@stencil/core";
|
|
3
|
+
import { getDocumentValueFromSearchResultMapping } from "../../utils/index";
|
|
3
4
|
/**
|
|
4
5
|
* A single list item rendered in a searchcraft-popover-list-view.
|
|
5
6
|
*/
|
|
6
7
|
export class SearchcraftPopoverListItem {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
/** The result subtitle */
|
|
10
|
-
subtitleContent;
|
|
11
|
-
/** The source of the image. If not included, no item will be rendered. */
|
|
12
|
-
imageSrc;
|
|
13
|
-
/** The image alt tag. */
|
|
14
|
-
imageAlt;
|
|
15
|
-
/** The link href */
|
|
16
|
-
href;
|
|
8
|
+
item;
|
|
9
|
+
popoverResultMappings;
|
|
17
10
|
/** The document position relative to the search results (For Measure) */
|
|
18
11
|
documentPosition = 0;
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
href;
|
|
13
|
+
imageSrc;
|
|
14
|
+
imageAlt;
|
|
15
|
+
titleContent;
|
|
16
|
+
subtitleContent;
|
|
17
|
+
mapValuesFromDocument(document) {
|
|
18
|
+
this.titleContent = getDocumentValueFromSearchResultMapping(document, this.popoverResultMappings?.title);
|
|
19
|
+
this.subtitleContent = getDocumentValueFromSearchResultMapping(document, this.popoverResultMappings?.subtitle);
|
|
20
|
+
this.href = getDocumentValueFromSearchResultMapping(document, this.popoverResultMappings?.href);
|
|
21
|
+
this.imageSrc = getDocumentValueFromSearchResultMapping(document, this.popoverResultMappings?.imageSource);
|
|
22
|
+
this.imageAlt = getDocumentValueFromSearchResultMapping(document, this.popoverResultMappings?.imageAlt);
|
|
23
|
+
}
|
|
24
|
+
connectedCallback() {
|
|
25
|
+
if (this.item) {
|
|
26
|
+
this.mapValuesFromDocument(this.item.document);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
21
29
|
disconnectedCallback() { }
|
|
22
|
-
handleButtonClick() { }
|
|
23
30
|
handleLinkClick = () => {
|
|
24
31
|
const state = useSearchcraftStore.getState();
|
|
25
32
|
const searchcraft = state.getSearchcraftInstance();
|
|
26
33
|
if (searchcraft) {
|
|
27
34
|
const document_position = this.documentPosition;
|
|
28
|
-
const search_term = state.
|
|
29
|
-
const number_of_documents = state.
|
|
30
|
-
searchcraft.sendMeasureEvent('document_clicked', {
|
|
35
|
+
const search_term = state.searchTerm;
|
|
36
|
+
const number_of_documents = state.searchClientResponseItems.length || 0;
|
|
37
|
+
searchcraft.measureClient?.sendMeasureEvent('document_clicked', {
|
|
31
38
|
document_position,
|
|
32
39
|
number_of_documents,
|
|
33
40
|
search_term,
|
|
@@ -35,105 +42,56 @@ export class SearchcraftPopoverListItem {
|
|
|
35
42
|
}
|
|
36
43
|
};
|
|
37
44
|
render() {
|
|
38
|
-
return (h("a", { key: '
|
|
45
|
+
return (h("a", { key: '77e0a59f0441c7ed717ffc0de7f335e76b7b5f5e', class: 'searchcraft-popover-list-item', href: this.href, onClick: this.handleLinkClick.bind(this) }, this.imageSrc && (h("div", { key: '70fe7167cd9baa5029b1482ac6e71bd46c3171a7', class: 'searchcraft-popover-list-item-image-wrapper' }, h("img", { key: '768f651b06005ecefb9818268664334c6bf0d333', alt: this.imageAlt, src: this.imageSrc, class: 'searchcraft-popover-list-item-image' }))), h("div", { key: 'a34b31b92d232193e9d43c5871ecad0d4ee3f59a', class: 'searchcraft-popover-list-item-info-wrapper' }, h("p", { key: 'f2bd9dab4008d200b4528fde35950be90503d66c', class: 'searchcraft-popover-list-item-title' }, this.titleContent), h("p", { key: '4231966d7c4c48dfaaf4925ad18db3428219edad', class: 'searchcraft-popover-list-item-subtitle' }, this.subtitleContent))));
|
|
39
46
|
}
|
|
40
47
|
static get is() { return "searchcraft-popover-list-item"; }
|
|
41
48
|
static get properties() {
|
|
42
49
|
return {
|
|
43
|
-
"
|
|
44
|
-
"type": "
|
|
45
|
-
"mutable": false,
|
|
46
|
-
"complexType": {
|
|
47
|
-
"original": "string | undefined",
|
|
48
|
-
"resolved": "string | undefined",
|
|
49
|
-
"references": {}
|
|
50
|
-
},
|
|
51
|
-
"required": false,
|
|
52
|
-
"optional": false,
|
|
53
|
-
"docs": {
|
|
54
|
-
"tags": [],
|
|
55
|
-
"text": "The result title"
|
|
56
|
-
},
|
|
57
|
-
"getter": false,
|
|
58
|
-
"setter": false,
|
|
59
|
-
"attribute": "title-content",
|
|
60
|
-
"reflect": false
|
|
61
|
-
},
|
|
62
|
-
"subtitleContent": {
|
|
63
|
-
"type": "string",
|
|
64
|
-
"mutable": false,
|
|
65
|
-
"complexType": {
|
|
66
|
-
"original": "string | undefined",
|
|
67
|
-
"resolved": "string | undefined",
|
|
68
|
-
"references": {}
|
|
69
|
-
},
|
|
70
|
-
"required": false,
|
|
71
|
-
"optional": false,
|
|
72
|
-
"docs": {
|
|
73
|
-
"tags": [],
|
|
74
|
-
"text": "The result subtitle"
|
|
75
|
-
},
|
|
76
|
-
"getter": false,
|
|
77
|
-
"setter": false,
|
|
78
|
-
"attribute": "subtitle-content",
|
|
79
|
-
"reflect": false
|
|
80
|
-
},
|
|
81
|
-
"imageSrc": {
|
|
82
|
-
"type": "string",
|
|
83
|
-
"mutable": false,
|
|
84
|
-
"complexType": {
|
|
85
|
-
"original": "string | undefined",
|
|
86
|
-
"resolved": "string | undefined",
|
|
87
|
-
"references": {}
|
|
88
|
-
},
|
|
89
|
-
"required": false,
|
|
90
|
-
"optional": false,
|
|
91
|
-
"docs": {
|
|
92
|
-
"tags": [],
|
|
93
|
-
"text": "The source of the image. If not included, no item will be rendered."
|
|
94
|
-
},
|
|
95
|
-
"getter": false,
|
|
96
|
-
"setter": false,
|
|
97
|
-
"attribute": "image-src",
|
|
98
|
-
"reflect": false
|
|
99
|
-
},
|
|
100
|
-
"imageAlt": {
|
|
101
|
-
"type": "string",
|
|
50
|
+
"item": {
|
|
51
|
+
"type": "unknown",
|
|
102
52
|
"mutable": false,
|
|
103
53
|
"complexType": {
|
|
104
|
-
"original": "
|
|
105
|
-
"resolved": "
|
|
106
|
-
"references": {
|
|
54
|
+
"original": "SearchClientResponseItem | undefined",
|
|
55
|
+
"resolved": "SearchClientResponseItem | undefined",
|
|
56
|
+
"references": {
|
|
57
|
+
"SearchClientResponseItem": {
|
|
58
|
+
"location": "import",
|
|
59
|
+
"path": "@searchcraft/core",
|
|
60
|
+
"id": "../core-sdk/dist/index.d.ts::SearchClientResponseItem"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
107
63
|
},
|
|
108
64
|
"required": false,
|
|
109
65
|
"optional": false,
|
|
110
66
|
"docs": {
|
|
111
67
|
"tags": [],
|
|
112
|
-
"text": "
|
|
68
|
+
"text": ""
|
|
113
69
|
},
|
|
114
70
|
"getter": false,
|
|
115
|
-
"setter": false
|
|
116
|
-
"attribute": "image-alt",
|
|
117
|
-
"reflect": false
|
|
71
|
+
"setter": false
|
|
118
72
|
},
|
|
119
|
-
"
|
|
120
|
-
"type": "
|
|
73
|
+
"popoverResultMappings": {
|
|
74
|
+
"type": "unknown",
|
|
121
75
|
"mutable": false,
|
|
122
76
|
"complexType": {
|
|
123
|
-
"original": "
|
|
124
|
-
"resolved": "
|
|
125
|
-
"references": {
|
|
77
|
+
"original": "PopoverResultMappings | undefined",
|
|
78
|
+
"resolved": "undefined | { title?: SearchResultMapping | undefined; subtitle?: SearchResultMapping | undefined; imageSource?: SearchResultMapping | undefined; imageAlt?: SearchResultMapping | undefined; href?: SearchResultMapping | undefined; }",
|
|
79
|
+
"references": {
|
|
80
|
+
"PopoverResultMappings": {
|
|
81
|
+
"location": "import",
|
|
82
|
+
"path": "@searchcraft/core",
|
|
83
|
+
"id": "../core-sdk/dist/index.d.ts::PopoverResultMappings"
|
|
84
|
+
}
|
|
85
|
+
}
|
|
126
86
|
},
|
|
127
87
|
"required": false,
|
|
128
88
|
"optional": false,
|
|
129
89
|
"docs": {
|
|
130
90
|
"tags": [],
|
|
131
|
-
"text": "
|
|
91
|
+
"text": ""
|
|
132
92
|
},
|
|
133
93
|
"getter": false,
|
|
134
|
-
"setter": false
|
|
135
|
-
"attribute": "href",
|
|
136
|
-
"reflect": false
|
|
94
|
+
"setter": false
|
|
137
95
|
},
|
|
138
96
|
"documentPosition": {
|
|
139
97
|
"type": "number",
|
|
@@ -157,5 +115,14 @@ export class SearchcraftPopoverListItem {
|
|
|
157
115
|
}
|
|
158
116
|
};
|
|
159
117
|
}
|
|
118
|
+
static get states() {
|
|
119
|
+
return {
|
|
120
|
+
"href": {},
|
|
121
|
+
"imageSrc": {},
|
|
122
|
+
"imageAlt": {},
|
|
123
|
+
"titleContent": {},
|
|
124
|
+
"subtitleContent": {}
|
|
125
|
+
};
|
|
126
|
+
}
|
|
160
127
|
}
|
|
161
128
|
//# sourceMappingURL=searchcraft-popover-list-item.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchcraft-popover-list-item.js","sourceRoot":"","sources":["../../../../src/components/searchcraft-popover-list-item/searchcraft-popover-list-item.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"searchcraft-popover-list-item.js","sourceRoot":"","sources":["../../../../src/components/searchcraft-popover-list-item/searchcraft-popover-list-item.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAMtD,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,uCAAuC,EAAE,MAAM,QAAQ,CAAC;AAEjE;;GAEG;AAKH,MAAM,OAAO,0BAA0B;IAC7B,IAAI,CAAuC;IAC3C,qBAAqB,CAAoC;IACjE,yEAAyE;IACjE,gBAAgB,GAAG,CAAC,CAAC;IAEpB,IAAI,CAAU;IACd,QAAQ,CAAU;IAClB,QAAQ,CAAU;IAClB,YAAY,CAAU;IACtB,eAAe,CAAU;IAElC,qBAAqB,CAAC,QAAwB;QAC5C,IAAI,CAAC,YAAY,GAAG,uCAAuC,CACzD,QAAQ,EACR,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAClC,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,uCAAuC,CAC5D,QAAQ,EACR,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CACrC,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uCAAuC,CACjD,QAAQ,EACR,IAAI,CAAC,qBAAqB,EAAE,IAAI,CACjC,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,uCAAuC,CACrD,QAAQ,EACR,IAAI,CAAC,qBAAqB,EAAE,WAAW,CACxC,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,uCAAuC,CACrD,QAAQ,EACR,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CACrC,CAAC;IACJ,CAAC;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,oBAAoB,KAAI,CAAC;IAEzB,eAAe,GAAG,GAAG,EAAE;QACrB,MAAM,KAAK,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,sBAAsB,EAAE,CAAC;QAEnD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAChD,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;YACrC,MAAM,mBAAmB,GAAG,KAAK,CAAC,yBAAyB,CAAC,MAAM,IAAI,CAAC,CAAC;YAExE,WAAW,CAAC,aAAa,EAAE,gBAAgB,CAAC,kBAAkB,EAAE;gBAC9D,iBAAiB;gBACjB,mBAAmB;gBACnB,WAAW;aACZ,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,MAAM;QACJ,OAAO,CACL,0DACE,KAAK,EAAC,+BAA+B,EACrC,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YAEvC,IAAI,CAAC,QAAQ,IAAI,CAChB,4DAAK,KAAK,EAAC,6CAA6C;gBACtD,4DACE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAClB,GAAG,EAAE,IAAI,CAAC,QAAQ,EAClB,KAAK,EAAC,qCAAqC,GAC3C,CACE,CACP;YACD,4DAAK,KAAK,EAAC,4CAA4C;gBACrD,0DAAG,KAAK,EAAC,qCAAqC,IAAE,IAAI,CAAC,YAAY,CAAK;gBACtE,0DAAG,KAAK,EAAC,wCAAwC,IAC9C,IAAI,CAAC,eAAe,CACnB,CACA,CACJ,CACL,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { useSearchcraftStore } from '@provider/store';\nimport type {\n SearchDocument,\n SearchClientResponseItem,\n PopoverResultMappings,\n} from '@searchcraft/core';\nimport { Component, h, Prop, State } from '@stencil/core';\nimport { getDocumentValueFromSearchResultMapping } from '@utils';\n\n/**\n * A single list item rendered in a searchcraft-popover-list-view.\n */\n@Component({\n tag: 'searchcraft-popover-list-item',\n shadow: false,\n})\nexport class SearchcraftPopoverListItem {\n @Prop() item: SearchClientResponseItem | undefined;\n @Prop() popoverResultMappings: PopoverResultMappings | undefined;\n /** The document position relative to the search results (For Measure) */\n @Prop() documentPosition = 0;\n\n @State() href?: string;\n @State() imageSrc?: string;\n @State() imageAlt?: string;\n @State() titleContent?: string;\n @State() subtitleContent?: string;\n\n mapValuesFromDocument(document: SearchDocument) {\n this.titleContent = getDocumentValueFromSearchResultMapping(\n document,\n this.popoverResultMappings?.title,\n );\n this.subtitleContent = getDocumentValueFromSearchResultMapping(\n document,\n this.popoverResultMappings?.subtitle,\n );\n this.href = getDocumentValueFromSearchResultMapping(\n document,\n this.popoverResultMappings?.href,\n );\n this.imageSrc = getDocumentValueFromSearchResultMapping(\n document,\n this.popoverResultMappings?.imageSource,\n );\n this.imageAlt = getDocumentValueFromSearchResultMapping(\n document,\n this.popoverResultMappings?.imageAlt,\n );\n }\n\n connectedCallback() {\n if (this.item) {\n this.mapValuesFromDocument(this.item.document);\n }\n }\n\n disconnectedCallback() {}\n\n handleLinkClick = () => {\n const state = useSearchcraftStore.getState();\n const searchcraft = state.getSearchcraftInstance();\n\n if (searchcraft) {\n const document_position = this.documentPosition;\n const search_term = state.searchTerm;\n const number_of_documents = state.searchClientResponseItems.length || 0;\n\n searchcraft.measureClient?.sendMeasureEvent('document_clicked', {\n document_position,\n number_of_documents,\n search_term,\n });\n }\n };\n\n render() {\n return (\n <a\n class='searchcraft-popover-list-item'\n href={this.href}\n onClick={this.handleLinkClick.bind(this)}\n >\n {this.imageSrc && (\n <div class='searchcraft-popover-list-item-image-wrapper'>\n <img\n alt={this.imageAlt}\n src={this.imageSrc}\n class='searchcraft-popover-list-item-image'\n />\n </div>\n )}\n <div class='searchcraft-popover-list-item-info-wrapper'>\n <p class='searchcraft-popover-list-item-title'>{this.titleContent}</p>\n <p class='searchcraft-popover-list-item-subtitle'>\n {this.subtitleContent}\n </p>\n </div>\n </a>\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
|
+
/**
|
|
3
|
+
* A single list item rendered in a searchcraft-popover-list-view.
|
|
4
|
+
*/
|
|
5
|
+
export class SearchcraftPopoverListItemAd {
|
|
6
|
+
adClientResponseItem;
|
|
7
|
+
connectedCallback() {
|
|
8
|
+
if (this.adClientResponseItem?.admAd?.impression_url) {
|
|
9
|
+
fetch(this.adClientResponseItem?.admAd?.impression_url);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
renderADMProductAd() {
|
|
13
|
+
const ad = this.adClientResponseItem?.admAd;
|
|
14
|
+
if (!ad) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
return (h("a", { class: 'searchcraft-popover-list-item-ad', href: ad.click_url }, ad.image_url && (h("div", { class: 'searchcraft-popover-list-item-ad-image-wrapper' }, h("img", { alt: ad.term, src: ad.image_url, class: 'searchcraft-popover-list-item-ad-image' }))), h("div", { class: 'searchcraft-popover-list-item-ad-info-wrapper' }, h("p", { class: 'searchcraft-popover-list-item-ad-title' }, ad.term), h("p", { class: 'searchcraft-popover-list-item-ad-subtitle' }, ad.price))));
|
|
18
|
+
}
|
|
19
|
+
renderADMTextAd() {
|
|
20
|
+
const ad = this.adClientResponseItem?.admAd;
|
|
21
|
+
if (!ad) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
return (h("a", { class: 'searchcraft-popover-list-item-ad', href: ad.click_url }, ad.image_url && (h("div", { class: 'searchcraft-popover-list-item-ad-image-wrapper' }, h("img", { alt: ad.term, src: ad.image_url, class: 'searchcraft-popover-list-item-ad-image' }))), h("div", { class: 'searchcraft-popover-list-item-ad-info-wrapper' }, h("p", { class: 'searchcraft-popover-list-item-ad-title' }, ad.term))));
|
|
25
|
+
}
|
|
26
|
+
renderNativoAd() { }
|
|
27
|
+
renderAdPlaceholder() {
|
|
28
|
+
return h("p", null, "Ad placeholder");
|
|
29
|
+
// return;
|
|
30
|
+
}
|
|
31
|
+
render() {
|
|
32
|
+
if (!this.adClientResponseItem) {
|
|
33
|
+
return this.renderAdPlaceholder();
|
|
34
|
+
}
|
|
35
|
+
switch (this.adClientResponseItem.type) {
|
|
36
|
+
case 'adm-product-ad':
|
|
37
|
+
return this.renderADMProductAd();
|
|
38
|
+
case 'adm-text-ad':
|
|
39
|
+
return this.renderADMTextAd();
|
|
40
|
+
case 'nativo-ad':
|
|
41
|
+
return this.renderNativoAd();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
static get is() { return "searchcraft-popover-list-item-ad"; }
|
|
45
|
+
static get properties() {
|
|
46
|
+
return {
|
|
47
|
+
"adClientResponseItem": {
|
|
48
|
+
"type": "unknown",
|
|
49
|
+
"mutable": false,
|
|
50
|
+
"complexType": {
|
|
51
|
+
"original": "AdClientResponseItem",
|
|
52
|
+
"resolved": "AdClientResponseItem | undefined",
|
|
53
|
+
"references": {
|
|
54
|
+
"AdClientResponseItem": {
|
|
55
|
+
"location": "import",
|
|
56
|
+
"path": "@searchcraft/core",
|
|
57
|
+
"id": "../core-sdk/dist/index.d.ts::AdClientResponseItem"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"required": false,
|
|
62
|
+
"optional": true,
|
|
63
|
+
"docs": {
|
|
64
|
+
"tags": [],
|
|
65
|
+
"text": ""
|
|
66
|
+
},
|
|
67
|
+
"getter": false,
|
|
68
|
+
"setter": false
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=searchcraft-popover-list-item-ad.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchcraft-popover-list-item-ad.js","sourceRoot":"","sources":["../../../../src/components/searchcraft-popover-list-item-ad/searchcraft-popover-list-item-ad.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEnD;;GAEG;AAKH,MAAM,OAAO,4BAA4B;IAC/B,oBAAoB,CAAwB;IAEpD,iBAAiB;QACf,IAAI,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;YACrD,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,MAAM,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE,KAAqB,CAAC;QAC5D,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,OAAO,CACL,SAAG,KAAK,EAAC,kCAAkC,EAAC,IAAI,EAAE,EAAE,CAAC,SAAS;YAC3D,EAAE,CAAC,SAAS,IAAI,CACf,WAAK,KAAK,EAAC,gDAAgD;gBACzD,WACE,GAAG,EAAE,EAAE,CAAC,IAAI,EACZ,GAAG,EAAE,EAAE,CAAC,SAAS,EACjB,KAAK,EAAC,wCAAwC,GAC9C,CACE,CACP;YACD,WAAK,KAAK,EAAC,+CAA+C;gBACxD,SAAG,KAAK,EAAC,wCAAwC,IAAE,EAAE,CAAC,IAAI,CAAK;gBAC/D,SAAG,KAAK,EAAC,2CAA2C,IAAE,EAAE,CAAC,KAAK,CAAK,CAC/D,CACJ,CACL,CAAC;IACJ,CAAC;IAED,eAAe;QACb,MAAM,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE,KAAkB,CAAC;QACzD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,OAAO,CACL,SAAG,KAAK,EAAC,kCAAkC,EAAC,IAAI,EAAE,EAAE,CAAC,SAAS;YAC3D,EAAE,CAAC,SAAS,IAAI,CACf,WAAK,KAAK,EAAC,gDAAgD;gBACzD,WACE,GAAG,EAAE,EAAE,CAAC,IAAI,EACZ,GAAG,EAAE,EAAE,CAAC,SAAS,EACjB,KAAK,EAAC,wCAAwC,GAC9C,CACE,CACP;YACD,WAAK,KAAK,EAAC,+CAA+C;gBACxD,SAAG,KAAK,EAAC,wCAAwC,IAAE,EAAE,CAAC,IAAI,CAAK,CAC3D,CACJ,CACL,CAAC;IACJ,CAAC;IAED,cAAc,KAAI,CAAC;IAEnB,mBAAmB;QACjB,OAAO,8BAAqB,CAAC;QAC7B,UAAU;IACZ,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACpC,CAAC;QAED,QAAQ,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;YACvC,KAAK,gBAAgB;gBACnB,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACnC,KAAK,aAAa;gBAChB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;YAChC,KAAK,WAAW;gBACd,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import type {\n AdClientResponseItem,\n ADMProductAd,\n ADMTextAd,\n} from '@searchcraft/core';\nimport { Component, h, Prop } from '@stencil/core';\n\n/**\n * A single list item rendered in a searchcraft-popover-list-view.\n */\n@Component({\n tag: 'searchcraft-popover-list-item-ad',\n shadow: false,\n})\nexport class SearchcraftPopoverListItemAd {\n @Prop() adClientResponseItem?: AdClientResponseItem;\n\n connectedCallback() {\n if (this.adClientResponseItem?.admAd?.impression_url) {\n fetch(this.adClientResponseItem?.admAd?.impression_url);\n }\n }\n\n renderADMProductAd() {\n const ad = this.adClientResponseItem?.admAd as ADMProductAd;\n if (!ad) {\n return;\n }\n\n return (\n <a class='searchcraft-popover-list-item-ad' href={ad.click_url}>\n {ad.image_url && (\n <div class='searchcraft-popover-list-item-ad-image-wrapper'>\n <img\n alt={ad.term}\n src={ad.image_url}\n class='searchcraft-popover-list-item-ad-image'\n />\n </div>\n )}\n <div class='searchcraft-popover-list-item-ad-info-wrapper'>\n <p class='searchcraft-popover-list-item-ad-title'>{ad.term}</p>\n <p class='searchcraft-popover-list-item-ad-subtitle'>{ad.price}</p>\n </div>\n </a>\n );\n }\n\n renderADMTextAd() {\n const ad = this.adClientResponseItem?.admAd as ADMTextAd;\n if (!ad) {\n return;\n }\n\n return (\n <a class='searchcraft-popover-list-item-ad' href={ad.click_url}>\n {ad.image_url && (\n <div class='searchcraft-popover-list-item-ad-image-wrapper'>\n <img\n alt={ad.term}\n src={ad.image_url}\n class='searchcraft-popover-list-item-ad-image'\n />\n </div>\n )}\n <div class='searchcraft-popover-list-item-ad-info-wrapper'>\n <p class='searchcraft-popover-list-item-ad-title'>{ad.term}</p>\n </div>\n </a>\n );\n }\n\n renderNativoAd() {}\n\n renderAdPlaceholder() {\n return <p>Ad placeholder</p>;\n // return;\n }\n\n render() {\n if (!this.adClientResponseItem) {\n return this.renderAdPlaceholder();\n }\n\n switch (this.adClientResponseItem.type) {\n case 'adm-product-ad':\n return this.renderADMProductAd();\n case 'adm-text-ad':\n return this.renderADMTextAd();\n case 'nativo-ad':\n return this.renderNativoAd();\n }\n }\n}\n"]}
|