@empathyco/x-components 7.2.1 → 7.2.3

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 (597) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/core/index.js +3 -3
  3. package/docs/API-reference/api/x-adapter-platform.browseendpointadapter.md +13 -0
  4. package/docs/API-reference/api/x-adapter-platform.browserequestmapper.md +13 -0
  5. package/docs/API-reference/api/x-adapter-platform.browserequestschema.md +13 -0
  6. package/docs/API-reference/api/x-adapter-platform.browseresponsemapper.md +13 -0
  7. package/docs/API-reference/api/x-adapter-platform.browseresponseschema.md +13 -0
  8. package/docs/API-reference/api/x-adapter-platform.md +55 -0
  9. package/docs/API-reference/api/x-types.browsablerequest.browsefield.md +11 -0
  10. package/docs/API-reference/api/x-types.browsablerequest.browsevalue.md +11 -0
  11. package/docs/API-reference/api/x-types.browsablerequest.md +73 -0
  12. package/docs/API-reference/api/x-types.browserequest.md +15 -0
  13. package/docs/API-reference/api/x-types.browseresponse.banners.md +11 -0
  14. package/docs/API-reference/api/x-types.browseresponse.browsetagging.md +11 -0
  15. package/docs/API-reference/api/x-types.browseresponse.displaybrowsetagging.md +11 -0
  16. package/docs/API-reference/api/x-types.browseresponse.facets.md +11 -0
  17. package/docs/API-reference/api/x-types.browseresponse.md +187 -0
  18. package/docs/API-reference/api/x-types.browseresponse.promoteds.md +11 -0
  19. package/docs/API-reference/api/x-types.browseresponse.results.md +11 -0
  20. package/docs/API-reference/api/x-types.browseresponse.stats.md +11 -0
  21. package/docs/API-reference/api/x-types.browseresponse.totalresults.md +11 -0
  22. package/docs/API-reference/api/x-types.md +33 -0
  23. package/js/components/animations/{animate-clip-path.vue2.js → animate-clip-path2.vue.js} +1 -1
  24. package/js/components/animations/animate-clip-path2.vue.js.map +1 -0
  25. package/js/components/animations/animate-clip-path3.vue.js +7 -0
  26. package/js/components/animations/animate-clip-path3.vue.js.map +1 -0
  27. package/js/components/animations/{animate-scale.vue2.js → animate-scale2.vue.js} +1 -1
  28. package/js/components/animations/animate-scale2.vue.js.map +1 -0
  29. package/js/components/animations/{animate-scale.vue3.js → animate-scale3.vue.js} +2 -2
  30. package/js/components/animations/animate-scale3.vue.js.map +1 -0
  31. package/js/components/animations/{animate-translate.vue2.js → animate-translate2.vue.js} +1 -1
  32. package/js/components/animations/animate-translate2.vue.js.map +1 -0
  33. package/js/components/animations/animate-translate3.vue.js +7 -0
  34. package/js/components/animations/animate-translate3.vue.js.map +1 -0
  35. package/js/components/animations/animate-width.vue.js +2 -2
  36. package/js/components/animations/{animate-width.vue2.js → animate-width2.vue.js} +1 -1
  37. package/js/components/animations/{animate-width.vue2.js.map → animate-width2.vue.js.map} +1 -1
  38. package/js/components/animations/{animate-width.vue3.js → animate-width3.vue.js} +1 -1
  39. package/js/components/animations/animate-width3.vue.js.map +1 -0
  40. package/js/components/animations/change-height.vue.js +2 -2
  41. package/js/components/animations/{change-height.vue2.js → change-height2.vue.js} +1 -1
  42. package/js/components/animations/{change-height.vue2.js.map → change-height2.vue.js.map} +1 -1
  43. package/js/components/animations/{change-height.vue3.js → change-height3.vue.js} +1 -1
  44. package/js/components/animations/change-height3.vue.js.map +1 -0
  45. package/js/components/animations/collapse-height.vue.js +2 -2
  46. package/js/components/animations/{collapse-height.vue2.js → collapse-height2.vue.js} +1 -1
  47. package/js/components/animations/{collapse-height.vue2.js.map → collapse-height2.vue.js.map} +1 -1
  48. package/js/components/animations/{collapse-height.vue3.js → collapse-height3.vue.js} +1 -1
  49. package/js/components/animations/collapse-height3.vue.js.map +1 -0
  50. package/js/components/animations/collapse-width.vue.js +2 -2
  51. package/js/components/animations/{collapse-width.vue2.js → collapse-width2.vue.js} +1 -1
  52. package/js/components/animations/{collapse-width.vue2.js.map → collapse-width2.vue.js.map} +1 -1
  53. package/js/components/animations/{collapse-width.vue3.js → collapse-width3.vue.js} +1 -1
  54. package/js/components/animations/collapse-width3.vue.js.map +1 -0
  55. package/js/components/animations/cross-fade.vue.js +2 -2
  56. package/js/components/animations/{cross-fade.vue2.js → cross-fade2.vue.js} +1 -1
  57. package/js/components/animations/{cross-fade.vue2.js.map → cross-fade2.vue.js.map} +1 -1
  58. package/js/components/animations/{cross-fade.vue3.js → cross-fade3.vue.js} +1 -1
  59. package/js/components/animations/cross-fade3.vue.js.map +1 -0
  60. package/js/components/animations/fade-and-slide.vue.js +2 -2
  61. package/js/components/animations/{fade-and-slide.vue2.js → fade-and-slide2.vue.js} +1 -1
  62. package/js/components/animations/{fade-and-slide.vue2.js.map → fade-and-slide2.vue.js.map} +1 -1
  63. package/js/components/animations/{fade-and-slide.vue3.js → fade-and-slide3.vue.js} +1 -1
  64. package/js/components/animations/fade-and-slide3.vue.js.map +1 -0
  65. package/js/components/animations/fade.vue.js +2 -2
  66. package/js/components/animations/{fade.vue2.js → fade2.vue.js} +1 -1
  67. package/js/components/animations/{fade.vue2.js.map → fade2.vue.js.map} +1 -1
  68. package/js/components/animations/{fade.vue3.js → fade3.vue.js} +1 -1
  69. package/js/components/animations/fade3.vue.js.map +1 -0
  70. package/js/components/animations/{no-animation.vue2.js → no-animation2.vue.js} +1 -1
  71. package/js/components/animations/no-animation2.vue.js.map +1 -0
  72. package/js/components/animations/staggered-fade-and-slide.vue.js +2 -2
  73. package/js/components/animations/{staggered-fade-and-slide.vue2.js → staggered-fade-and-slide2.vue.js} +1 -1
  74. package/js/components/animations/{staggered-fade-and-slide.vue2.js.map → staggered-fade-and-slide2.vue.js.map} +1 -1
  75. package/js/components/animations/{staggered-fade-and-slide.vue3.js → staggered-fade-and-slide3.vue.js} +1 -1
  76. package/js/components/animations/staggered-fade-and-slide3.vue.js.map +1 -0
  77. package/js/components/auto-progress-bar.vue.js +2 -2
  78. package/js/components/{auto-progress-bar.vue2.js → auto-progress-bar2.vue.js} +1 -1
  79. package/js/components/{auto-progress-bar.vue2.js.map → auto-progress-bar2.vue.js.map} +1 -1
  80. package/js/components/{auto-progress-bar.vue3.js → auto-progress-bar3.vue.js} +1 -1
  81. package/js/components/auto-progress-bar3.vue.js.map +1 -0
  82. package/js/components/base-dropdown.vue.js +2 -2
  83. package/js/components/{base-dropdown.vue2.js → base-dropdown2.vue.js} +20 -20
  84. package/js/components/{base-dropdown.vue2.js.map → base-dropdown2.vue.js.map} +1 -1
  85. package/js/components/{base-dropdown.vue3.js → base-dropdown3.vue.js} +1 -1
  86. package/js/components/base-dropdown3.vue.js.map +1 -0
  87. package/js/components/base-event-button.vue.js +1 -1
  88. package/js/components/{base-event-button.vue2.js → base-event-button2.vue.js} +1 -1
  89. package/js/components/{base-event-button.vue2.js.map → base-event-button2.vue.js.map} +1 -1
  90. package/js/components/base-grid.vue.js +2 -2
  91. package/js/components/{base-grid.vue2.js → base-grid2.vue.js} +1 -1
  92. package/js/components/{base-grid.vue2.js.map → base-grid2.vue.js.map} +1 -1
  93. package/js/components/{base-grid.vue3.js → base-grid3.vue.js} +1 -1
  94. package/js/components/base-grid3.vue.js.map +1 -0
  95. package/js/components/base-keyboard-navigation.vue.js +1 -1
  96. package/js/components/{base-keyboard-navigation.vue2.js → base-keyboard-navigation2.vue.js} +1 -1
  97. package/js/components/{base-keyboard-navigation.vue2.js.map → base-keyboard-navigation2.vue.js.map} +1 -1
  98. package/js/components/base-rating.vue.js +2 -2
  99. package/js/components/{base-rating.vue2.js → base-rating2.vue.js} +1 -1
  100. package/js/components/{base-rating.vue2.js.map → base-rating2.vue.js.map} +1 -1
  101. package/js/components/{base-rating.vue3.js → base-rating3.vue.js} +1 -1
  102. package/js/components/base-rating3.vue.js.map +1 -0
  103. package/js/components/base-slider.vue.js +2 -2
  104. package/js/components/{base-slider.vue2.js → base-slider2.vue.js} +1 -1
  105. package/js/components/{base-slider.vue2.js.map → base-slider2.vue.js.map} +1 -1
  106. package/js/components/{base-slider.vue3.js → base-slider3.vue.js} +1 -1
  107. package/js/components/base-slider3.vue.js.map +1 -0
  108. package/js/components/base-switch.vue.js +2 -2
  109. package/js/components/{base-switch.vue2.js → base-switch2.vue.js} +1 -1
  110. package/js/components/{base-switch.vue2.js.map → base-switch2.vue.js.map} +1 -1
  111. package/js/components/{base-switch.vue3.js → base-switch3.vue.js} +1 -1
  112. package/js/components/base-switch3.vue.js.map +1 -0
  113. package/js/components/base-teleport.vue.js +1 -1
  114. package/js/components/{base-teleport.vue2.js → base-teleport2.vue.js} +1 -1
  115. package/js/components/{base-teleport.vue2.js.map → base-teleport2.vue.js.map} +1 -1
  116. package/js/components/base-variable-column-grid.vue.js +1 -1
  117. package/js/components/{base-variable-column-grid.vue2.js → base-variable-column-grid2.vue.js} +1 -1
  118. package/js/components/{base-variable-column-grid.vue2.js.map → base-variable-column-grid2.vue.js.map} +1 -1
  119. package/js/components/column-picker/base-column-picker-dropdown.vue.js +1 -1
  120. package/js/components/column-picker/{base-column-picker-dropdown.vue2.js → base-column-picker-dropdown2.vue.js} +1 -1
  121. package/js/components/column-picker/{base-column-picker-dropdown.vue2.js.map → base-column-picker-dropdown2.vue.js.map} +1 -1
  122. package/js/components/column-picker/base-column-picker-list.vue.js +1 -1
  123. package/js/components/column-picker/{base-column-picker-list.vue2.js → base-column-picker-list2.vue.js} +1 -1
  124. package/js/components/column-picker/{base-column-picker-list.vue2.js.map → base-column-picker-list2.vue.js.map} +1 -1
  125. package/js/components/currency/base-currency.vue.js +1 -1
  126. package/js/components/currency/{base-currency.vue2.js → base-currency2.vue.js} +1 -1
  127. package/js/components/currency/{base-currency.vue2.js.map → base-currency2.vue.js.map} +1 -1
  128. package/js/components/{display-click-provider.vue2.js → display-click-provider2.vue.js} +1 -1
  129. package/js/components/display-click-provider2.vue.js.map +1 -0
  130. package/js/components/{display-emitter.vue2.js → display-emitter2.vue.js} +1 -1
  131. package/js/components/display-emitter2.vue.js.map +1 -0
  132. package/js/components/filters/labels/{base-price-filter-label.vue2.js → base-price-filter-label2.vue.js} +1 -1
  133. package/js/components/filters/labels/base-price-filter-label2.vue.js.map +1 -0
  134. package/js/components/filters/labels/base-rating-filter-label.vue.js +1 -1
  135. package/js/components/filters/labels/{base-rating-filter-label.vue2.js → base-rating-filter-label2.vue.js} +1 -1
  136. package/js/components/filters/labels/{base-rating-filter-label.vue2.js.map → base-rating-filter-label2.vue.js.map} +1 -1
  137. package/js/components/{global-x-bus.vue2.js → global-x-bus2.vue.js} +1 -1
  138. package/js/components/global-x-bus2.vue.js.map +1 -0
  139. package/js/components/highlight.vue.js +1 -1
  140. package/js/components/{highlight.vue2.js → highlight2.vue.js} +1 -1
  141. package/js/components/{highlight.vue2.js.map → highlight2.vue.js.map} +1 -1
  142. package/js/components/items-list.vue.js +1 -1
  143. package/js/components/{items-list.vue2.js → items-list2.vue.js} +1 -1
  144. package/js/components/{items-list.vue2.js.map → items-list2.vue.js.map} +1 -1
  145. package/js/components/{location-provider.vue2.js → location-provider2.vue.js} +1 -1
  146. package/js/components/location-provider2.vue.js.map +1 -0
  147. package/js/components/message.vue.js +17 -17
  148. package/js/components/{message.vue2.js → message2.vue.js} +1 -1
  149. package/js/components/message2.vue.js.map +1 -0
  150. package/js/components/modals/base-events-modal-close.vue.js +1 -1
  151. package/js/components/modals/{base-events-modal-close.vue2.js → base-events-modal-close2.vue.js} +1 -1
  152. package/js/components/modals/{base-events-modal-close.vue2.js.map → base-events-modal-close2.vue.js.map} +1 -1
  153. package/js/components/modals/base-events-modal-open.vue.js +1 -1
  154. package/js/components/modals/{base-events-modal-open.vue2.js → base-events-modal-open2.vue.js} +1 -1
  155. package/js/components/modals/{base-events-modal-open.vue2.js.map → base-events-modal-open2.vue.js.map} +1 -1
  156. package/js/components/modals/base-events-modal.vue.js +1 -1
  157. package/js/components/modals/{base-events-modal.vue2.js → base-events-modal2.vue.js} +1 -1
  158. package/js/components/modals/{base-events-modal.vue2.js.map → base-events-modal2.vue.js.map} +1 -1
  159. package/js/components/modals/base-id-modal-close.vue.js +1 -1
  160. package/js/components/modals/{base-id-modal-close.vue2.js → base-id-modal-close2.vue.js} +1 -1
  161. package/js/components/modals/{base-id-modal-close.vue2.js.map → base-id-modal-close2.vue.js.map} +1 -1
  162. package/js/components/modals/base-id-modal-open.vue.js +1 -1
  163. package/js/components/modals/{base-id-modal-open.vue2.js → base-id-modal-open2.vue.js} +1 -1
  164. package/js/components/modals/{base-id-modal-open.vue2.js.map → base-id-modal-open2.vue.js.map} +1 -1
  165. package/js/components/modals/base-id-modal.vue.js +1 -1
  166. package/js/components/modals/{base-id-modal.vue2.js → base-id-modal2.vue.js} +1 -1
  167. package/js/components/modals/{base-id-modal.vue2.js.map → base-id-modal2.vue.js.map} +1 -1
  168. package/js/components/modals/base-modal.vue.js +2 -2
  169. package/js/components/modals/{base-modal.vue2.js → base-modal2.vue.js} +18 -18
  170. package/js/components/modals/{base-modal.vue2.js.map → base-modal2.vue.js.map} +1 -1
  171. package/js/components/modals/{base-modal.vue3.js → base-modal3.vue.js} +1 -1
  172. package/js/components/modals/base-modal3.vue.js.map +1 -0
  173. package/js/components/modals/close-main-modal.vue.js +1 -1
  174. package/js/components/modals/{close-main-modal.vue2.js → close-main-modal2.vue.js} +1 -1
  175. package/js/components/modals/{close-main-modal.vue2.js.map → close-main-modal2.vue.js.map} +1 -1
  176. package/js/components/modals/main-modal.vue.js +1 -1
  177. package/js/components/modals/{main-modal.vue2.js → main-modal2.vue.js} +1 -1
  178. package/js/components/modals/{main-modal.vue2.js.map → main-modal2.vue.js.map} +1 -1
  179. package/js/components/modals/open-main-modal.vue.js +1 -1
  180. package/js/components/modals/{open-main-modal.vue2.js → open-main-modal2.vue.js} +1 -1
  181. package/js/components/modals/{open-main-modal.vue2.js.map → open-main-modal2.vue.js.map} +1 -1
  182. package/js/components/page-loader-button.vue.js +2 -2
  183. package/js/components/{page-loader-button.vue2.js → page-loader-button2.vue.js} +1 -1
  184. package/js/components/{page-loader-button.vue2.js.map → page-loader-button2.vue.js.map} +1 -1
  185. package/js/components/{page-loader-button.vue3.js → page-loader-button3.vue.js} +1 -1
  186. package/js/components/page-loader-button3.vue.js.map +1 -0
  187. package/js/components/page-selector.vue.js +2 -2
  188. package/js/components/{page-selector.vue2.js → page-selector2.vue.js} +1 -1
  189. package/js/components/{page-selector.vue2.js.map → page-selector2.vue.js.map} +1 -1
  190. package/js/components/{page-selector.vue3.js → page-selector3.vue.js} +1 -1
  191. package/js/components/page-selector3.vue.js.map +1 -0
  192. package/js/components/panels/base-header-toggle-panel.vue.js +2 -2
  193. package/js/components/panels/{base-header-toggle-panel.vue2.js → base-header-toggle-panel2.vue.js} +20 -20
  194. package/js/components/panels/{base-header-toggle-panel.vue2.js.map → base-header-toggle-panel2.vue.js.map} +1 -1
  195. package/js/components/panels/{base-header-toggle-panel.vue3.js → base-header-toggle-panel3.vue.js} +1 -1
  196. package/js/components/panels/base-header-toggle-panel3.vue.js.map +1 -0
  197. package/js/components/panels/base-id-toggle-panel-button.vue.js +1 -1
  198. package/js/components/panels/{base-id-toggle-panel-button.vue2.js → base-id-toggle-panel-button2.vue.js} +1 -1
  199. package/js/components/panels/{base-id-toggle-panel-button.vue2.js.map → base-id-toggle-panel-button2.vue.js.map} +1 -1
  200. package/js/components/panels/base-id-toggle-panel.vue.js +1 -1
  201. package/js/components/panels/{base-id-toggle-panel.vue2.js → base-id-toggle-panel2.vue.js} +20 -20
  202. package/js/components/panels/{base-id-toggle-panel.vue2.js.map → base-id-toggle-panel2.vue.js.map} +1 -1
  203. package/js/components/panels/base-tabs-panel.vue.js +2 -2
  204. package/js/components/panels/{base-tabs-panel.vue2.js → base-tabs-panel2.vue.js} +20 -20
  205. package/js/components/panels/{base-tabs-panel.vue2.js.map → base-tabs-panel2.vue.js.map} +1 -1
  206. package/js/components/panels/{base-tabs-panel.vue3.js → base-tabs-panel3.vue.js} +1 -1
  207. package/js/components/panels/base-tabs-panel3.vue.js.map +1 -0
  208. package/js/components/panels/base-toggle-panel.vue.js +1 -1
  209. package/js/components/panels/{base-toggle-panel.vue2.js → base-toggle-panel2.vue.js} +1 -1
  210. package/js/components/panels/{base-toggle-panel.vue2.js.map → base-toggle-panel2.vue.js.map} +1 -1
  211. package/js/components/result/base-result-add-to-cart.vue.js +1 -1
  212. package/js/components/result/{base-result-add-to-cart.vue2.js → base-result-add-to-cart2.vue.js} +1 -1
  213. package/js/components/result/{base-result-add-to-cart.vue2.js.map → base-result-add-to-cart2.vue.js.map} +1 -1
  214. package/js/components/result/base-result-current-price.vue.js +1 -1
  215. package/js/components/result/{base-result-current-price.vue2.js → base-result-current-price2.vue.js} +1 -1
  216. package/js/components/result/{base-result-current-price.vue2.js.map → base-result-current-price2.vue.js.map} +1 -1
  217. package/js/components/result/base-result-image.vue.js +2 -2
  218. package/js/components/result/{base-result-image.vue2.js → base-result-image2.vue.js} +20 -20
  219. package/js/components/result/{base-result-image.vue2.js.map → base-result-image2.vue.js.map} +1 -1
  220. package/js/components/result/{base-result-image.vue3.js → base-result-image3.vue.js} +1 -1
  221. package/js/components/result/base-result-image3.vue.js.map +1 -0
  222. package/js/components/result/base-result-link.vue.js +2 -2
  223. package/js/components/result/{base-result-link.vue2.js → base-result-link2.vue.js} +1 -1
  224. package/js/components/result/{base-result-link.vue2.js.map → base-result-link2.vue.js.map} +1 -1
  225. package/js/components/result/{base-result-link.vue3.js → base-result-link3.vue.js} +1 -1
  226. package/js/components/result/base-result-link3.vue.js.map +1 -0
  227. package/js/components/result/base-result-previous-price.vue.js +1 -1
  228. package/js/components/result/{base-result-previous-price.vue2.js → base-result-previous-price2.vue.js} +1 -1
  229. package/js/components/result/{base-result-previous-price.vue2.js.map → base-result-previous-price2.vue.js.map} +1 -1
  230. package/js/components/result/base-result-rating.vue.js +2 -2
  231. package/js/components/result/{base-result-rating.vue2.js → base-result-rating2.vue.js} +1 -1
  232. package/js/components/result/{base-result-rating.vue2.js.map → base-result-rating2.vue.js.map} +1 -1
  233. package/js/components/result/{base-result-rating.vue3.js → base-result-rating3.vue.js} +1 -1
  234. package/js/components/result/base-result-rating3.vue.js.map +1 -0
  235. package/js/components/result/result-variant-selector.vue.js +2 -2
  236. package/js/components/result/{result-variant-selector.vue2.js → result-variant-selector2.vue.js} +1 -1
  237. package/js/components/result/{result-variant-selector.vue2.js.map → result-variant-selector2.vue.js.map} +1 -1
  238. package/js/components/result/{result-variant-selector.vue3.js → result-variant-selector3.vue.js} +1 -1
  239. package/js/components/result/result-variant-selector3.vue.js.map +1 -0
  240. package/js/components/result/{result-variants-provider.vue2.js → result-variants-provider2.vue.js} +1 -1
  241. package/js/components/result/result-variants-provider2.vue.js.map +1 -0
  242. package/js/components/scroll/base-scroll.vue.js +1 -1
  243. package/js/components/scroll/{base-scroll.vue2.js → base-scroll2.vue.js} +1 -1
  244. package/js/components/scroll/{base-scroll.vue2.js.map → base-scroll2.vue.js.map} +1 -1
  245. package/js/components/sliding-panel.vue.js +2 -2
  246. package/js/components/{sliding-panel.vue2.js → sliding-panel2.vue.js} +1 -1
  247. package/js/components/{sliding-panel.vue2.js.map → sliding-panel2.vue.js.map} +1 -1
  248. package/js/components/{sliding-panel.vue3.js → sliding-panel3.vue.js} +1 -1
  249. package/js/components/sliding-panel3.vue.js.map +1 -0
  250. package/js/components/snippet-callbacks.vue.js +1 -1
  251. package/js/components/{snippet-callbacks.vue2.js → snippet-callbacks2.vue.js} +1 -1
  252. package/js/components/{snippet-callbacks.vue2.js.map → snippet-callbacks2.vue.js.map} +1 -1
  253. package/js/components/suggestions/base-suggestion.vue.js +1 -1
  254. package/js/components/suggestions/{base-suggestion.vue2.js → base-suggestion2.vue.js} +1 -1
  255. package/js/components/suggestions/{base-suggestion.vue2.js.map → base-suggestion2.vue.js.map} +1 -1
  256. package/js/components/suggestions/base-suggestions.vue.js +2 -2
  257. package/js/components/suggestions/{base-suggestions.vue2.js → base-suggestions2.vue.js} +1 -1
  258. package/js/components/suggestions/{base-suggestions.vue2.js.map → base-suggestions2.vue.js.map} +1 -1
  259. package/js/components/suggestions/{base-suggestions.vue3.js → base-suggestions3.vue.js} +1 -1
  260. package/js/components/suggestions/base-suggestions3.vue.js.map +1 -0
  261. package/js/index.js +3 -3
  262. package/js/x-modules/ai/components/ai-carousel.vue.js +2 -2
  263. package/js/x-modules/ai/components/{ai-carousel.vue2.js → ai-carousel2.vue.js} +75 -75
  264. package/js/x-modules/ai/components/{ai-carousel.vue2.js.map → ai-carousel2.vue.js.map} +1 -1
  265. package/js/x-modules/ai/components/{ai-carousel.vue3.js → ai-carousel3.vue.js} +1 -1
  266. package/js/x-modules/ai/components/ai-carousel3.vue.js.map +1 -0
  267. package/js/x-modules/ai/components/ai-grouped-carousel.vue.js +1 -1
  268. package/js/x-modules/ai/components/ai-grouped-carousel2.vue.js +123 -0
  269. package/js/x-modules/ai/components/{ai-grouped-carousel.vue2.js.map → ai-grouped-carousel2.vue.js.map} +1 -1
  270. package/js/x-modules/device/components/device-detector.vue.js +1 -1
  271. package/js/x-modules/device/components/{device-detector.vue2.js → device-detector2.vue.js} +1 -1
  272. package/js/x-modules/device/components/{device-detector.vue2.js.map → device-detector2.vue.js.map} +1 -1
  273. package/js/x-modules/empathize/components/empathize.vue.js +1 -1
  274. package/js/x-modules/empathize/components/{empathize.vue2.js → empathize2.vue.js} +82 -82
  275. package/js/x-modules/empathize/components/{empathize.vue2.js.map → empathize2.vue.js.map} +1 -1
  276. package/js/x-modules/experience-controls/components/{experience-controls.vue2.js → experience-controls2.vue.js} +1 -1
  277. package/js/x-modules/experience-controls/components/experience-controls2.vue.js.map +1 -0
  278. package/js/x-modules/extra-params/components/{extra-params.vue2.js → extra-params2.vue.js} +1 -1
  279. package/js/x-modules/{facets/components/facets/facets.vue3.js.map → extra-params/components/extra-params2.vue.js.map} +1 -1
  280. package/js/x-modules/extra-params/components/{renderless-extra-param.vue2.js → renderless-extra-param2.vue.js} +1 -1
  281. package/js/x-modules/extra-params/components/renderless-extra-param2.vue.js.map +1 -0
  282. package/js/x-modules/extra-params/components/snippet-config-extra-params.vue.js +1 -1
  283. package/js/x-modules/extra-params/components/{snippet-config-extra-params.vue2.js → snippet-config-extra-params2.vue.js} +1 -1
  284. package/js/x-modules/extra-params/components/{snippet-config-extra-params.vue2.js.map → snippet-config-extra-params2.vue.js.map} +1 -1
  285. package/js/x-modules/facets/components/clear-filters.vue.js +1 -1
  286. package/js/x-modules/facets/components/{clear-filters.vue2.js → clear-filters2.vue.js} +1 -1
  287. package/js/x-modules/facets/components/{clear-filters.vue2.js.map → clear-filters2.vue.js.map} +1 -1
  288. package/js/x-modules/facets/components/facets/facets-provider.vue.js +2 -2
  289. package/js/x-modules/facets/components/facets/{facets-provider.vue2.js → facets-provider2.vue.js} +1 -1
  290. package/js/x-modules/facets/components/facets/{facets-provider.vue2.js.map → facets-provider2.vue.js.map} +1 -1
  291. package/js/x-modules/facets/components/facets/{facets-provider.vue3.js → facets-provider3.vue.js} +1 -1
  292. package/js/x-modules/facets/components/facets/facets-provider3.vue.js.map +1 -0
  293. package/js/x-modules/facets/components/facets/facets.vue.js +2 -2
  294. package/js/x-modules/facets/components/facets/{facets.vue2.js → facets2.vue.js} +1 -1
  295. package/js/x-modules/facets/components/facets/{facets.vue2.js.map → facets2.vue.js.map} +1 -1
  296. package/js/x-modules/facets/components/facets/{facets.vue3.js → facets3.vue.js} +1 -1
  297. package/js/x-modules/facets/components/facets/facets3.vue.js.map +1 -0
  298. package/js/x-modules/facets/components/filters/all-filter.vue.js +1 -1
  299. package/js/x-modules/facets/components/filters/{all-filter.vue2.js → all-filter2.vue.js} +1 -1
  300. package/js/x-modules/facets/components/filters/{all-filter.vue2.js.map → all-filter2.vue.js.map} +1 -1
  301. package/js/x-modules/facets/components/filters/editable-number-range-filter.vue.js +2 -2
  302. package/js/x-modules/facets/components/filters/{editable-number-range-filter.vue2.js → editable-number-range-filter2.vue.js} +1 -1
  303. package/js/x-modules/facets/components/filters/{editable-number-range-filter.vue2.js.map → editable-number-range-filter2.vue.js.map} +1 -1
  304. package/js/x-modules/facets/components/filters/{editable-number-range-filter.vue3.js → editable-number-range-filter3.vue.js} +1 -1
  305. package/js/x-modules/facets/components/filters/editable-number-range-filter3.vue.js.map +1 -0
  306. package/js/x-modules/facets/components/filters/hierarchical-filter.vue.js +1 -1
  307. package/js/x-modules/facets/components/filters/{hierarchical-filter.vue2.js → hierarchical-filter2.vue.js} +1 -1
  308. package/js/x-modules/facets/components/filters/{hierarchical-filter.vue2.js.map → hierarchical-filter2.vue.js.map} +1 -1
  309. package/js/x-modules/facets/components/filters/number-range-filter.vue.js +1 -1
  310. package/js/x-modules/facets/components/filters/{number-range-filter.vue2.js → number-range-filter2.vue.js} +1 -1
  311. package/js/x-modules/facets/components/filters/{number-range-filter.vue2.js.map → number-range-filter2.vue.js.map} +1 -1
  312. package/js/x-modules/facets/components/filters/{renderless-filter.vue2.js → renderless-filter2.vue.js} +1 -1
  313. package/js/x-modules/facets/components/filters/renderless-filter2.vue.js.map +1 -0
  314. package/js/x-modules/facets/components/filters/simple-filter.vue.js +1 -1
  315. package/js/x-modules/facets/components/filters/{simple-filter.vue2.js → simple-filter2.vue.js} +1 -1
  316. package/js/x-modules/facets/components/filters/{simple-filter.vue2.js.map → simple-filter2.vue.js.map} +1 -1
  317. package/js/x-modules/facets/components/lists/{exclude-filters-with-no-results.vue2.js → exclude-filters-with-no-results2.vue.js} +1 -1
  318. package/js/x-modules/facets/components/lists/exclude-filters-with-no-results2.vue.js.map +1 -0
  319. package/js/x-modules/facets/components/lists/filters-list.vue.js +2 -2
  320. package/js/x-modules/facets/components/lists/{filters-list.vue2.js → filters-list2.vue.js} +1 -1
  321. package/js/x-modules/facets/components/lists/{filters-list.vue2.js.map → filters-list2.vue.js.map} +1 -1
  322. package/js/x-modules/facets/components/lists/{filters-list.vue3.js → filters-list3.vue.js} +1 -1
  323. package/js/x-modules/facets/components/lists/filters-list3.vue.js.map +1 -0
  324. package/js/x-modules/facets/components/lists/filters-search.vue.js +2 -2
  325. package/js/x-modules/facets/components/lists/{filters-search.vue2.js → filters-search2.vue.js} +1 -1
  326. package/js/x-modules/facets/components/lists/{filters-search.vue2.js.map → filters-search2.vue.js.map} +1 -1
  327. package/js/x-modules/facets/components/lists/{filters-search.vue3.js → filters-search3.vue.js} +1 -1
  328. package/js/x-modules/facets/components/lists/filters-search3.vue.js.map +1 -0
  329. package/js/x-modules/facets/components/lists/selected-filters-list.vue.js +1 -1
  330. package/js/x-modules/facets/components/lists/{selected-filters-list.vue2.js → selected-filters-list2.vue.js} +1 -1
  331. package/js/x-modules/facets/components/lists/{selected-filters-list.vue2.js.map → selected-filters-list2.vue.js.map} +1 -1
  332. package/js/x-modules/facets/components/lists/{selected-filters.vue2.js → selected-filters2.vue.js} +1 -1
  333. package/js/x-modules/facets/components/lists/selected-filters2.vue.js.map +1 -0
  334. package/js/x-modules/facets/components/lists/sliced-filters.vue.js +1 -1
  335. package/js/x-modules/facets/components/lists/{sliced-filters.vue2.js → sliced-filters2.vue.js} +1 -1
  336. package/js/x-modules/facets/components/lists/{sliced-filters.vue2.js.map → sliced-filters2.vue.js.map} +1 -1
  337. package/js/x-modules/facets/components/lists/{sorted-filters.vue2.js → sorted-filters2.vue.js} +1 -1
  338. package/js/x-modules/facets/components/lists/sorted-filters2.vue.js.map +1 -0
  339. package/js/x-modules/facets/components/{preselected-filters.vue2.js → preselected-filters2.vue.js} +1 -1
  340. package/js/x-modules/facets/components/preselected-filters2.vue.js.map +1 -0
  341. package/js/x-modules/history-queries/components/clear-history-queries.vue.js +1 -1
  342. package/js/x-modules/history-queries/components/{clear-history-queries.vue2.js → clear-history-queries2.vue.js} +1 -1
  343. package/js/x-modules/history-queries/components/{clear-history-queries.vue2.js.map → clear-history-queries2.vue.js.map} +1 -1
  344. package/js/x-modules/history-queries/components/history-queries-switch.vue.js +1 -1
  345. package/js/x-modules/history-queries/components/{history-queries-switch.vue2.js → history-queries-switch2.vue.js} +1 -1
  346. package/js/x-modules/history-queries/components/{history-queries-switch.vue2.js.map → history-queries-switch2.vue.js.map} +1 -1
  347. package/js/x-modules/history-queries/components/history-queries.vue.js +1 -1
  348. package/js/x-modules/history-queries/components/{history-queries.vue2.js → history-queries2.vue.js} +1 -1
  349. package/js/x-modules/history-queries/components/{history-queries.vue2.js.map → history-queries2.vue.js.map} +1 -1
  350. package/js/x-modules/history-queries/components/history-query.vue.js +1 -1
  351. package/js/x-modules/history-queries/components/{history-query.vue2.js → history-query2.vue.js} +1 -1
  352. package/js/x-modules/history-queries/components/{history-query.vue2.js.map → history-query2.vue.js.map} +1 -1
  353. package/js/x-modules/history-queries/components/my-history.vue.js +2 -2
  354. package/js/x-modules/history-queries/components/{my-history.vue2.js → my-history2.vue.js} +1 -1
  355. package/js/x-modules/history-queries/components/{my-history.vue2.js.map → my-history2.vue.js.map} +1 -1
  356. package/js/x-modules/history-queries/components/{my-history.vue3.js → my-history3.vue.js} +1 -1
  357. package/js/x-modules/history-queries/components/my-history3.vue.js.map +1 -0
  358. package/js/x-modules/history-queries/components/remove-history-query.vue.js +1 -1
  359. package/js/x-modules/history-queries/components/{remove-history-query.vue2.js → remove-history-query2.vue.js} +1 -1
  360. package/js/x-modules/history-queries/components/{remove-history-query.vue2.js.map → remove-history-query2.vue.js.map} +1 -1
  361. package/js/x-modules/identifier-results/components/identifier-result.vue.js +1 -1
  362. package/js/x-modules/identifier-results/components/{identifier-result.vue2.js → identifier-result2.vue.js} +1 -1
  363. package/js/x-modules/identifier-results/components/{identifier-result.vue2.js.map → identifier-result2.vue.js.map} +1 -1
  364. package/js/x-modules/identifier-results/components/identifier-results.vue.js +2 -2
  365. package/js/x-modules/identifier-results/components/{identifier-results.vue2.js → identifier-results2.vue.js} +1 -1
  366. package/js/x-modules/identifier-results/components/{identifier-results.vue2.js.map → identifier-results2.vue.js.map} +1 -1
  367. package/js/x-modules/identifier-results/components/{identifier-results.vue3.js → identifier-results3.vue.js} +1 -1
  368. package/js/x-modules/identifier-results/components/identifier-results3.vue.js.map +1 -0
  369. package/js/x-modules/next-queries/components/{next-queries-list.vue2.js → next-queries-list2.vue.js} +1 -1
  370. package/js/x-modules/next-queries/components/next-queries-list2.vue.js.map +1 -0
  371. package/js/x-modules/next-queries/components/next-queries.vue.js +1 -1
  372. package/js/x-modules/next-queries/components/{next-queries.vue2.js → next-queries2.vue.js} +1 -1
  373. package/js/x-modules/next-queries/components/{next-queries.vue2.js.map → next-queries2.vue.js.map} +1 -1
  374. package/js/x-modules/next-queries/components/next-query-preview.vue.js +1 -1
  375. package/js/x-modules/next-queries/components/{next-query-preview.vue2.js → next-query-preview2.vue.js} +1 -1
  376. package/js/x-modules/next-queries/components/{next-query-preview.vue2.js.map → next-query-preview2.vue.js.map} +1 -1
  377. package/js/x-modules/next-queries/components/next-query.vue.js +1 -1
  378. package/js/x-modules/next-queries/components/{next-query.vue2.js → next-query2.vue.js} +1 -1
  379. package/js/x-modules/next-queries/components/{next-query.vue2.js.map → next-query2.vue.js.map} +1 -1
  380. package/js/x-modules/popular-searches/components/popular-search.vue.js +1 -1
  381. package/js/x-modules/popular-searches/components/{popular-search.vue2.js → popular-search2.vue.js} +1 -1
  382. package/js/x-modules/popular-searches/components/{popular-search.vue2.js.map → popular-search2.vue.js.map} +1 -1
  383. package/js/x-modules/popular-searches/components/popular-searches.vue.js +1 -1
  384. package/js/x-modules/popular-searches/components/{popular-searches.vue2.js → popular-searches2.vue.js} +1 -1
  385. package/js/x-modules/popular-searches/components/{popular-searches.vue2.js.map → popular-searches2.vue.js.map} +1 -1
  386. package/js/x-modules/queries-preview/components/query-preview-button.vue.js +1 -1
  387. package/js/x-modules/queries-preview/components/query-preview-button2.vue.js +165 -0
  388. package/js/x-modules/queries-preview/components/{query-preview-button.vue2.js.map → query-preview-button2.vue.js.map} +1 -1
  389. package/js/x-modules/queries-preview/components/query-preview-list.vue.js +2 -2
  390. package/js/x-modules/queries-preview/components/{query-preview-list.vue2.js → query-preview-list2.vue.js} +1 -1
  391. package/js/x-modules/queries-preview/components/{query-preview-list.vue2.js.map → query-preview-list2.vue.js.map} +1 -1
  392. package/js/x-modules/queries-preview/components/{query-preview-list.vue3.js → query-preview-list3.vue.js} +1 -1
  393. package/js/x-modules/queries-preview/components/query-preview-list3.vue.js.map +1 -0
  394. package/js/x-modules/queries-preview/components/query-preview.vue.js +1 -1
  395. package/js/x-modules/queries-preview/components/{query-preview.vue2.js → query-preview2.vue.js} +82 -82
  396. package/js/x-modules/queries-preview/components/{query-preview.vue2.js.map → query-preview2.vue.js.map} +1 -1
  397. package/js/x-modules/query-suggestions/components/query-suggestion.vue.js +1 -1
  398. package/js/x-modules/query-suggestions/components/{query-suggestion.vue2.js → query-suggestion2.vue.js} +1 -1
  399. package/js/x-modules/query-suggestions/components/{query-suggestion.vue2.js.map → query-suggestion2.vue.js.map} +1 -1
  400. package/js/x-modules/query-suggestions/components/query-suggestions.vue.js +1 -1
  401. package/js/x-modules/query-suggestions/components/{query-suggestions.vue2.js → query-suggestions2.vue.js} +1 -1
  402. package/js/x-modules/query-suggestions/components/{query-suggestions.vue2.js.map → query-suggestions2.vue.js.map} +1 -1
  403. package/js/x-modules/recommendations/components/recommendations.vue.js +2 -2
  404. package/js/x-modules/recommendations/components/{recommendations.vue2.js → recommendations2.vue.js} +1 -1
  405. package/js/x-modules/recommendations/components/{recommendations.vue2.js.map → recommendations2.vue.js.map} +1 -1
  406. package/js/x-modules/recommendations/components/{recommendations.vue3.js → recommendations3.vue.js} +1 -1
  407. package/js/x-modules/recommendations/components/recommendations3.vue.js.map +1 -0
  408. package/js/x-modules/related-prompts/components/related-prompt.vue.js +2 -2
  409. package/js/x-modules/related-prompts/components/{related-prompt.vue2.js → related-prompt2.vue.js} +1 -1
  410. package/js/x-modules/related-prompts/components/{related-prompt.vue2.js.map → related-prompt2.vue.js.map} +1 -1
  411. package/js/x-modules/related-prompts/components/{related-prompt.vue3.js → related-prompt3.vue.js} +1 -1
  412. package/js/x-modules/related-prompts/components/related-prompt3.vue.js.map +1 -0
  413. package/js/x-modules/related-prompts/components/{related-prompts-list.vue2.js → related-prompts-list2.vue.js} +1 -1
  414. package/js/x-modules/related-prompts/components/related-prompts-list2.vue.js.map +1 -0
  415. package/js/x-modules/related-prompts/components/related-prompts-tag-list.vue.js +2 -2
  416. package/js/x-modules/related-prompts/components/{related-prompts-tag-list.vue2.js → related-prompts-tag-list2.vue.js} +1 -1
  417. package/js/x-modules/related-prompts/components/{related-prompts-tag-list.vue2.js.map → related-prompts-tag-list2.vue.js.map} +1 -1
  418. package/js/x-modules/related-prompts/components/{related-prompts-tag-list.vue3.js → related-prompts-tag-list3.vue.js} +1 -1
  419. package/js/x-modules/related-prompts/components/related-prompts-tag-list3.vue.js.map +1 -0
  420. package/js/x-modules/related-tags/components/related-tag.vue.js +1 -1
  421. package/js/x-modules/related-tags/components/{related-tag.vue2.js → related-tag2.vue.js} +1 -1
  422. package/js/x-modules/related-tags/components/{related-tag.vue2.js.map → related-tag2.vue.js.map} +1 -1
  423. package/js/x-modules/related-tags/components/related-tags.vue.js +2 -2
  424. package/js/x-modules/related-tags/components/{related-tags.vue2.js → related-tags2.vue.js} +1 -1
  425. package/js/x-modules/related-tags/components/{related-tags.vue2.js.map → related-tags2.vue.js.map} +1 -1
  426. package/js/x-modules/related-tags/components/{related-tags.vue3.js → related-tags3.vue.js} +1 -1
  427. package/js/x-modules/related-tags/components/related-tags3.vue.js.map +1 -0
  428. package/js/x-modules/scroll/components/main-scroll-item.vue.js +1 -1
  429. package/js/x-modules/scroll/components/{main-scroll-item.vue2.js → main-scroll-item2.vue.js} +1 -1
  430. package/js/x-modules/scroll/components/{main-scroll-item.vue2.js.map → main-scroll-item2.vue.js.map} +1 -1
  431. package/js/x-modules/scroll/components/{main-scroll.vue2.js → main-scroll2.vue.js} +1 -1
  432. package/js/x-modules/scroll/components/main-scroll2.vue.js.map +1 -0
  433. package/js/x-modules/scroll/components/scroll-to-top.vue.js +1 -1
  434. package/js/x-modules/scroll/components/{scroll-to-top.vue2.js → scroll-to-top2.vue.js} +81 -81
  435. package/js/x-modules/scroll/components/{scroll-to-top.vue2.js.map → scroll-to-top2.vue.js.map} +1 -1
  436. package/js/x-modules/scroll/components/scroll.vue.js +1 -1
  437. package/js/x-modules/scroll/components/{scroll.vue2.js → scroll2.vue.js} +1 -1
  438. package/js/x-modules/scroll/components/{scroll.vue2.js.map → scroll2.vue.js.map} +1 -1
  439. package/js/x-modules/search/components/banner.vue.js +2 -2
  440. package/js/x-modules/search/components/{banner.vue2.js → banner2.vue.js} +1 -1
  441. package/js/x-modules/search/components/{banner.vue2.js.map → banner2.vue.js.map} +1 -1
  442. package/js/x-modules/search/components/{banner.vue3.js → banner3.vue.js} +1 -1
  443. package/js/x-modules/search/components/banner3.vue.js.map +1 -0
  444. package/js/x-modules/search/components/{banners-list.vue2.js → banners-list2.vue.js} +1 -1
  445. package/js/x-modules/search/components/banners-list2.vue.js.map +1 -0
  446. package/js/x-modules/search/components/fallback-disclaimer.vue.js +1 -1
  447. package/js/x-modules/search/components/{fallback-disclaimer.vue2.js → fallback-disclaimer2.vue.js} +1 -1
  448. package/js/x-modules/search/components/{fallback-disclaimer.vue2.js.map → fallback-disclaimer2.vue.js.map} +1 -1
  449. package/js/x-modules/search/components/partial-query-button.vue.js +1 -1
  450. package/js/x-modules/search/components/{partial-query-button.vue2.js → partial-query-button2.vue.js} +1 -1
  451. package/js/x-modules/search/components/{partial-query-button.vue2.js.map → partial-query-button2.vue.js.map} +1 -1
  452. package/js/x-modules/search/components/partial-results-list.vue.js +2 -2
  453. package/js/x-modules/search/components/{partial-results-list.vue2.js → partial-results-list2.vue.js} +1 -1
  454. package/js/x-modules/search/components/{partial-results-list.vue2.js.map → partial-results-list2.vue.js.map} +1 -1
  455. package/js/x-modules/search/components/{partial-results-list.vue3.js → partial-results-list3.vue.js} +1 -1
  456. package/js/x-modules/search/components/partial-results-list3.vue.js.map +1 -0
  457. package/js/x-modules/search/components/promoted.vue.js +2 -2
  458. package/js/x-modules/search/components/{promoted.vue2.js → promoted2.vue.js} +1 -1
  459. package/js/x-modules/search/components/{promoted.vue2.js.map → promoted2.vue.js.map} +1 -1
  460. package/js/x-modules/search/components/{promoted.vue3.js → promoted3.vue.js} +1 -1
  461. package/js/x-modules/search/components/promoted3.vue.js.map +1 -0
  462. package/js/x-modules/search/components/{promoteds-list.vue2.js → promoteds-list2.vue.js} +1 -1
  463. package/js/x-modules/search/components/promoteds-list2.vue.js.map +1 -0
  464. package/js/x-modules/search/components/redirection.vue.js +1 -1
  465. package/js/x-modules/search/components/{redirection.vue2.js → redirection2.vue.js} +1 -1
  466. package/js/x-modules/search/components/{redirection.vue2.js.map → redirection2.vue.js.map} +1 -1
  467. package/js/x-modules/search/components/{results-list.vue2.js → results-list2.vue.js} +1 -1
  468. package/js/x-modules/search/components/results-list2.vue.js.map +1 -0
  469. package/js/x-modules/search/components/sort-dropdown.vue.js +1 -1
  470. package/js/x-modules/search/components/{sort-dropdown.vue2.js → sort-dropdown2.vue.js} +1 -1
  471. package/js/x-modules/search/components/{sort-dropdown.vue2.js.map → sort-dropdown2.vue.js.map} +1 -1
  472. package/js/x-modules/search/components/sort-list.vue.js +2 -2
  473. package/js/x-modules/search/components/{sort-list.vue2.js → sort-list2.vue.js} +1 -1
  474. package/js/x-modules/search/components/{sort-list.vue2.js.map → sort-list2.vue.js.map} +1 -1
  475. package/js/x-modules/search/components/{sort-list.vue3.js → sort-list3.vue.js} +1 -1
  476. package/js/x-modules/search/components/sort-list3.vue.js.map +1 -0
  477. package/js/x-modules/search/components/sort-picker-list.vue.js +1 -1
  478. package/js/x-modules/search/components/{sort-picker-list.vue2.js → sort-picker-list2.vue.js} +1 -1
  479. package/js/x-modules/search/components/{sort-picker-list.vue2.js.map → sort-picker-list2.vue.js.map} +1 -1
  480. package/js/x-modules/search/components/spellcheck-button.vue.js +1 -1
  481. package/js/x-modules/search/components/{spellcheck-button.vue2.js → spellcheck-button2.vue.js} +1 -1
  482. package/js/x-modules/search/components/{spellcheck-button.vue2.js.map → spellcheck-button2.vue.js.map} +1 -1
  483. package/js/x-modules/search/components/spellcheck.vue.js +1 -1
  484. package/js/x-modules/search/components/{spellcheck.vue2.js → spellcheck2.vue.js} +1 -1
  485. package/js/x-modules/search/components/{spellcheck.vue2.js.map → spellcheck2.vue.js.map} +1 -1
  486. package/js/x-modules/search-box/components/clear-search-input.vue.js +1 -1
  487. package/js/x-modules/search-box/components/{clear-search-input.vue2.js → clear-search-input2.vue.js} +1 -1
  488. package/js/x-modules/search-box/components/{clear-search-input.vue2.js.map → clear-search-input2.vue.js.map} +1 -1
  489. package/js/x-modules/search-box/components/search-button.vue.js +1 -1
  490. package/js/x-modules/search-box/components/{search-button.vue2.js → search-button2.vue.js} +1 -1
  491. package/js/x-modules/search-box/components/{search-button.vue2.js.map → search-button2.vue.js.map} +1 -1
  492. package/js/x-modules/search-box/components/search-input-placeholder.vue.js +3 -3
  493. package/js/x-modules/search-box/components/{search-input-placeholder.vue2.js → search-input-placeholder2.vue.js} +2 -2
  494. package/js/x-modules/search-box/components/{search-input-placeholder.vue2.js.map → search-input-placeholder2.vue.js.map} +1 -1
  495. package/js/x-modules/search-box/components/{search-input-placeholder.vue3.js → search-input-placeholder3.vue.js} +1 -1
  496. package/js/x-modules/search-box/components/search-input-placeholder3.vue.js.map +1 -0
  497. package/js/x-modules/search-box/components/{search-input-placeholder.vue4.js → search-input-placeholder4.vue.js} +1 -1
  498. package/js/x-modules/search-box/components/search-input-placeholder4.vue.js.map +1 -0
  499. package/js/x-modules/search-box/components/search-input.vue.js +2 -2
  500. package/js/x-modules/search-box/components/{search-input.vue2.js → search-input2.vue.js} +1 -1
  501. package/js/x-modules/search-box/components/{search-input.vue2.js.map → search-input2.vue.js.map} +1 -1
  502. package/js/x-modules/search-box/components/{search-input.vue3.js → search-input3.vue.js} +1 -1
  503. package/js/x-modules/search-box/components/search-input3.vue.js.map +1 -0
  504. package/js/x-modules/semantic-queries/components/semantic-queries.vue.js +1 -1
  505. package/js/x-modules/semantic-queries/components/{semantic-queries.vue2.js → semantic-queries2.vue.js} +1 -1
  506. package/js/x-modules/semantic-queries/components/{semantic-queries.vue2.js.map → semantic-queries2.vue.js.map} +1 -1
  507. package/js/x-modules/semantic-queries/components/semantic-query.vue.js +1 -1
  508. package/js/x-modules/semantic-queries/components/{semantic-query.vue2.js → semantic-query2.vue.js} +1 -1
  509. package/js/x-modules/semantic-queries/components/{semantic-query.vue2.js.map → semantic-query2.vue.js.map} +1 -1
  510. package/js/x-modules/tagging/components/{tagging.vue2.js → tagging2.vue.js} +1 -1
  511. package/js/x-modules/tagging/components/tagging2.vue.js.map +1 -0
  512. package/js/x-modules/url/components/url-handler.vue.js +1 -1
  513. package/js/x-modules/url/components/{url-handler.vue2.js → url-handler2.vue.js} +1 -1
  514. package/js/x-modules/url/components/{url-handler.vue2.js.map → url-handler2.vue.js.map} +1 -1
  515. package/package.json +23 -23
  516. package/report/tsdoc-metadata.json +1 -1
  517. package/report/x-adapter-platform.api.json +251 -1
  518. package/report/x-components.api.json +1 -1
  519. package/report/x-types.api.json +426 -1
  520. package/types/src/x-modules/related-prompts/components/related-prompts-tag-list.vue.d.ts.map +1 -1
  521. package/js/components/animations/animate-clip-path.vue2.js.map +0 -1
  522. package/js/components/animations/animate-clip-path.vue3.js +0 -7
  523. package/js/components/animations/animate-clip-path.vue3.js.map +0 -1
  524. package/js/components/animations/animate-scale.vue2.js.map +0 -1
  525. package/js/components/animations/animate-scale.vue3.js.map +0 -1
  526. package/js/components/animations/animate-translate.vue2.js.map +0 -1
  527. package/js/components/animations/animate-translate.vue3.js +0 -7
  528. package/js/components/animations/animate-translate.vue3.js.map +0 -1
  529. package/js/components/animations/animate-width.vue3.js.map +0 -1
  530. package/js/components/animations/change-height.vue3.js.map +0 -1
  531. package/js/components/animations/collapse-height.vue3.js.map +0 -1
  532. package/js/components/animations/collapse-width.vue3.js.map +0 -1
  533. package/js/components/animations/cross-fade.vue3.js.map +0 -1
  534. package/js/components/animations/fade-and-slide.vue3.js.map +0 -1
  535. package/js/components/animations/fade.vue3.js.map +0 -1
  536. package/js/components/animations/no-animation.vue2.js.map +0 -1
  537. package/js/components/animations/staggered-fade-and-slide.vue3.js.map +0 -1
  538. package/js/components/auto-progress-bar.vue3.js.map +0 -1
  539. package/js/components/base-dropdown.vue3.js.map +0 -1
  540. package/js/components/base-grid.vue3.js.map +0 -1
  541. package/js/components/base-rating.vue3.js.map +0 -1
  542. package/js/components/base-slider.vue3.js.map +0 -1
  543. package/js/components/base-switch.vue3.js.map +0 -1
  544. package/js/components/display-click-provider.vue2.js.map +0 -1
  545. package/js/components/display-emitter.vue2.js.map +0 -1
  546. package/js/components/filters/labels/base-price-filter-label.vue2.js.map +0 -1
  547. package/js/components/global-x-bus.vue2.js.map +0 -1
  548. package/js/components/location-provider.vue2.js.map +0 -1
  549. package/js/components/message.vue2.js.map +0 -1
  550. package/js/components/modals/base-modal.vue3.js.map +0 -1
  551. package/js/components/page-loader-button.vue3.js.map +0 -1
  552. package/js/components/page-selector.vue3.js.map +0 -1
  553. package/js/components/panels/base-header-toggle-panel.vue3.js.map +0 -1
  554. package/js/components/panels/base-tabs-panel.vue3.js.map +0 -1
  555. package/js/components/result/base-result-image.vue3.js.map +0 -1
  556. package/js/components/result/base-result-link.vue3.js.map +0 -1
  557. package/js/components/result/base-result-rating.vue3.js.map +0 -1
  558. package/js/components/result/result-variant-selector.vue3.js.map +0 -1
  559. package/js/components/result/result-variants-provider.vue2.js.map +0 -1
  560. package/js/components/sliding-panel.vue3.js.map +0 -1
  561. package/js/components/suggestions/base-suggestions.vue3.js.map +0 -1
  562. package/js/x-modules/ai/components/ai-carousel.vue3.js.map +0 -1
  563. package/js/x-modules/ai/components/ai-grouped-carousel.vue2.js +0 -123
  564. package/js/x-modules/experience-controls/components/experience-controls.vue2.js.map +0 -1
  565. package/js/x-modules/extra-params/components/extra-params.vue2.js.map +0 -1
  566. package/js/x-modules/extra-params/components/renderless-extra-param.vue2.js.map +0 -1
  567. package/js/x-modules/facets/components/facets/facets-provider.vue3.js.map +0 -1
  568. package/js/x-modules/facets/components/filters/editable-number-range-filter.vue3.js.map +0 -1
  569. package/js/x-modules/facets/components/filters/renderless-filter.vue2.js.map +0 -1
  570. package/js/x-modules/facets/components/lists/exclude-filters-with-no-results.vue2.js.map +0 -1
  571. package/js/x-modules/facets/components/lists/filters-list.vue3.js.map +0 -1
  572. package/js/x-modules/facets/components/lists/filters-search.vue3.js.map +0 -1
  573. package/js/x-modules/facets/components/lists/selected-filters.vue2.js.map +0 -1
  574. package/js/x-modules/facets/components/lists/sorted-filters.vue2.js.map +0 -1
  575. package/js/x-modules/facets/components/preselected-filters.vue2.js.map +0 -1
  576. package/js/x-modules/history-queries/components/my-history.vue3.js.map +0 -1
  577. package/js/x-modules/identifier-results/components/identifier-results.vue3.js.map +0 -1
  578. package/js/x-modules/next-queries/components/next-queries-list.vue2.js.map +0 -1
  579. package/js/x-modules/queries-preview/components/query-preview-button.vue2.js +0 -165
  580. package/js/x-modules/queries-preview/components/query-preview-list.vue3.js.map +0 -1
  581. package/js/x-modules/recommendations/components/recommendations.vue3.js.map +0 -1
  582. package/js/x-modules/related-prompts/components/related-prompt.vue3.js.map +0 -1
  583. package/js/x-modules/related-prompts/components/related-prompts-list.vue2.js.map +0 -1
  584. package/js/x-modules/related-prompts/components/related-prompts-tag-list.vue3.js.map +0 -1
  585. package/js/x-modules/related-tags/components/related-tags.vue3.js.map +0 -1
  586. package/js/x-modules/scroll/components/main-scroll.vue2.js.map +0 -1
  587. package/js/x-modules/search/components/banner.vue3.js.map +0 -1
  588. package/js/x-modules/search/components/banners-list.vue2.js.map +0 -1
  589. package/js/x-modules/search/components/partial-results-list.vue3.js.map +0 -1
  590. package/js/x-modules/search/components/promoted.vue3.js.map +0 -1
  591. package/js/x-modules/search/components/promoteds-list.vue2.js.map +0 -1
  592. package/js/x-modules/search/components/results-list.vue2.js.map +0 -1
  593. package/js/x-modules/search/components/sort-list.vue3.js.map +0 -1
  594. package/js/x-modules/search-box/components/search-input-placeholder.vue3.js.map +0 -1
  595. package/js/x-modules/search-box/components/search-input-placeholder.vue4.js.map +0 -1
  596. package/js/x-modules/search-box/components/search-input.vue3.js.map +0 -1
  597. package/js/x-modules/tagging/components/tagging.vue2.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import _sfc_main from './base-events-modal-open.vue2.js';
1
+ import _sfc_main from './base-events-modal-open2.vue.js';
2
2
  import { resolveComponent, openBlock, createBlock, withCtx, renderSlot } from 'vue';
3
3
  import _export_sfc from '../../_virtual/_plugin-vue_export-helper.js';
4
4
 
@@ -31,4 +31,4 @@ var _sfc_main = defineComponent({
31
31
  });
32
32
 
33
33
  export { _sfc_main as default };
34
- //# sourceMappingURL=base-events-modal-open.vue2.js.map
34
+ //# sourceMappingURL=base-events-modal-open2.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-events-modal-open.vue2.js","sources":["../../../../src/components/modals/base-events-modal-open.vue"],"sourcesContent":["<template>\n <BaseEventButton\n :events=\"events\"\n class=\"x-events-modal-open-button xds:button\"\n data-test=\"open-modal\"\n aria-label=\"Open\"\n >\n <!-- @slot (Required) Button content with a text, an icon or both -->\n <slot />\n </BaseEventButton>\n</template>\n\n<script lang=\"ts\">\nimport type { PropType } from 'vue'\nimport type { PropsWithType } from '../../utils/types'\nimport type { XEventsTypes } from '../../wiring/events.types'\nimport { computed, defineComponent } from 'vue'\nimport BaseEventButton from '../base-event-button.vue'\n\n/**\n * Component contains an event button that emits {@link XEventsTypes.UserClickedOpenEventsModal}\n * when clicked. It has a default slot to customize its contents.\n *\n * @public\n */\nexport default defineComponent({\n components: {\n BaseEventButton,\n },\n props: {\n /**\n * Event name to use for opening the modal.\n *\n * @public\n */\n openingEvent: {\n type: String as PropType<PropsWithType<XEventsTypes, void>>,\n default: 'UserClickedOpenEventsModal',\n },\n },\n setup(props) {\n const events = computed<Partial<XEventsTypes>>(() => ({ [props.openingEvent]: undefined }))\n\n return {\n events,\n }\n },\n})\n</script>\n\n<docs lang=\"mdx\">\n## Events\n\nA list of events that the component will emit:\n\n- [`UserClickedOpenEventsModal`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts):\n the event is emitted after the user clicks the button.\n\n## Examples\n\nThis component serves to open the `BaseEventsModal`.\n\n### Basic example\n\nOn click, the component opens the `BaseEventsModal`. The only required part is the content that\nthe button should render, which can be anything: text, image, icon, or a combination.\n\n```vue\n<template>\n <BaseEventsModalOpen>\n <img src=\"./open-button-icon.svg\" />\n <span>Open</span>\n </BaseEventsModalOpen>\n</template>\n\n<script setup>\nimport { BaseEventsModalOpen } from '@empathyco/x-components'\n</script>\n```\n\n### Defining another event to emit when clicking the button\n\nBy default, it uses the same `openingEvent` that the `BaseEventsModal` is listening to by default.\nThis event can be changed using the `openingEvent` prop, but remember to change it in the target `BaseEventsModal` too.\n\n```vue\n<template>\n <BaseEventsModalOpen openingEvent=\"UserOpenedEmpathize\">\n <span>Open</span>\n </BaseEventsModalOpen>\n</template>\n\n<script setup>\nimport { BaseEventsModalOpen } from '@empathyco/x-components'\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;AAmBA;;;;;AAKE;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,UAAU,EAAE;QACV,eAAe;AAChB,KAAA;AACD,IAAA,KAAK,EAAE;AACL;;;;AAIE;AACF,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,MAAqD;AAC3D,YAAA,OAAO,EAAE,4BAA4B;AACtC,SAAA;AACF,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAA;AACT,QAAA,MAAM,MAAK,GAAI,QAAQ,CAAwB,OAAO,EAAE,CAAC,KAAK,CAAC,YAAY,GAAG,SAAQ,EAAG,CAAC,CAAA;QAE1F,OAAO;YACL,MAAM;SACR;IACF,CAAC;AACF,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"base-events-modal-open2.vue.js","sources":["../../../../src/components/modals/base-events-modal-open.vue"],"sourcesContent":["<template>\n <BaseEventButton\n :events=\"events\"\n class=\"x-events-modal-open-button xds:button\"\n data-test=\"open-modal\"\n aria-label=\"Open\"\n >\n <!-- @slot (Required) Button content with a text, an icon or both -->\n <slot />\n </BaseEventButton>\n</template>\n\n<script lang=\"ts\">\nimport type { PropType } from 'vue'\nimport type { PropsWithType } from '../../utils/types'\nimport type { XEventsTypes } from '../../wiring/events.types'\nimport { computed, defineComponent } from 'vue'\nimport BaseEventButton from '../base-event-button.vue'\n\n/**\n * Component contains an event button that emits {@link XEventsTypes.UserClickedOpenEventsModal}\n * when clicked. It has a default slot to customize its contents.\n *\n * @public\n */\nexport default defineComponent({\n components: {\n BaseEventButton,\n },\n props: {\n /**\n * Event name to use for opening the modal.\n *\n * @public\n */\n openingEvent: {\n type: String as PropType<PropsWithType<XEventsTypes, void>>,\n default: 'UserClickedOpenEventsModal',\n },\n },\n setup(props) {\n const events = computed<Partial<XEventsTypes>>(() => ({ [props.openingEvent]: undefined }))\n\n return {\n events,\n }\n },\n})\n</script>\n\n<docs lang=\"mdx\">\n## Events\n\nA list of events that the component will emit:\n\n- [`UserClickedOpenEventsModal`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts):\n the event is emitted after the user clicks the button.\n\n## Examples\n\nThis component serves to open the `BaseEventsModal`.\n\n### Basic example\n\nOn click, the component opens the `BaseEventsModal`. The only required part is the content that\nthe button should render, which can be anything: text, image, icon, or a combination.\n\n```vue\n<template>\n <BaseEventsModalOpen>\n <img src=\"./open-button-icon.svg\" />\n <span>Open</span>\n </BaseEventsModalOpen>\n</template>\n\n<script setup>\nimport { BaseEventsModalOpen } from '@empathyco/x-components'\n</script>\n```\n\n### Defining another event to emit when clicking the button\n\nBy default, it uses the same `openingEvent` that the `BaseEventsModal` is listening to by default.\nThis event can be changed using the `openingEvent` prop, but remember to change it in the target `BaseEventsModal` too.\n\n```vue\n<template>\n <BaseEventsModalOpen openingEvent=\"UserOpenedEmpathize\">\n <span>Open</span>\n </BaseEventsModalOpen>\n</template>\n\n<script setup>\nimport { BaseEventsModalOpen } from '@empathyco/x-components'\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;AAmBA;;;;;AAKE;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,UAAU,EAAE;QACV,eAAe;AAChB,KAAA;AACD,IAAA,KAAK,EAAE;AACL;;;;AAIE;AACF,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,MAAqD;AAC3D,YAAA,OAAO,EAAE,4BAA4B;AACtC,SAAA;AACF,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAA;AACT,QAAA,MAAM,MAAK,GAAI,QAAQ,CAAwB,OAAO,EAAE,CAAC,KAAK,CAAC,YAAY,GAAG,SAAQ,EAAG,CAAC,CAAA;QAE1F,OAAO;YACL,MAAM;SACR;IACF,CAAC;AACF,CAAA,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import _sfc_main from './base-events-modal.vue2.js';
1
+ import _sfc_main from './base-events-modal2.vue.js';
2
2
  import { resolveComponent, openBlock, createBlock, withCtx, renderSlot } from 'vue';
3
3
  import _export_sfc from '../../_virtual/_plugin-vue_export-helper.js';
4
4
 
@@ -87,4 +87,4 @@ var _sfc_main = defineComponent({
87
87
  });
88
88
 
89
89
  export { _sfc_main as default };
90
- //# sourceMappingURL=base-events-modal.vue2.js.map
90
+ //# sourceMappingURL=base-events-modal2.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-events-modal.vue2.js","sources":["../../../../src/components/modals/base-events-modal.vue"],"sourcesContent":["<template>\n <BaseModal\n ref=\"baseModalEl\"\n :animation=\"animation\"\n :open=\"isOpen\"\n @click:overlay=\"emitBodyClickEvent\"\n @focusin:body=\"emitBodyClickEvent\"\n >\n <slot />\n </BaseModal>\n</template>\n\n<script lang=\"ts\">\nimport type { PropType } from 'vue'\nimport type { XEvent } from '../../wiring/events.types'\nimport { defineComponent, ref } from 'vue'\nimport { use$x } from '../../composables/use-$x'\nimport { AnimationProp } from '../../types/animation-prop'\nimport { getTargetElement, isElementEqualOrContained } from '../../utils/html'\nimport BaseModal from './base-modal.vue'\n\n/**\n * Component containing a modal that emits a {@link XEventsTypes.UserClickedCloseEventsModal} when\n * clicking outside the content rendered in the default slot and can receive, through the\n * eventsToCloseModal prop, a list of {@link XEvent} to listen to in order to close\n * also the modal, eventsToOpenModal prop, another list of {@link XEvent} to customize\n * the events to listen to open the modal and a prop, displayOverlay, to display an\n * overlay over the rest of the html. The default slot offers the possibility to customize the\n * modal content.\n *\n * @public\n */\nexport default defineComponent({\n name: 'BaseEventsModal',\n components: {\n BaseModal,\n },\n props: {\n /** Array of {@link XEvent} to listen to open the modal. */\n eventsToOpenModal: {\n type: Array as PropType<XEvent[]>,\n default: (): XEvent[] => ['UserClickedOpenEventsModal'],\n },\n /** Array of {@link XEvent} to listen to close the modal. */\n eventsToCloseModal: {\n type: Array as PropType<XEvent[]>,\n default: (): XEvent[] => ['UserClickedCloseEventsModal', 'UserClickedOutOfEventsModal'],\n },\n /** Event to emit when any part of the website out of the modal has been clicked. */\n bodyClickEvent: {\n type: String as PropType<XEvent>,\n default: 'UserClickedOutOfEventsModal',\n },\n /** Animation to use for opening/closing the modal. */\n animation: AnimationProp,\n },\n setup(props) {\n const $x = use$x()\n\n /** Whether the modal is open or not. */\n const isOpen = ref(false)\n\n /** The element that opened the modal. */\n const openerElement = ref<HTMLElement>()\n const baseModalEl = ref<HTMLElement>()\n\n /**\n * Opens the modal.\n *\n * @param _payload - The payload of the event that opened the modal.\n * @param metadata - The metadata of the event that opened the modal.\n */\n props.eventsToOpenModal?.forEach(event =>\n $x.on(event, true).subscribe(({ metadata }) => {\n if (!isOpen.value) {\n openerElement.value = metadata.target\n isOpen.value = true\n }\n }),\n )\n\n /** Closes the modal. */\n props.eventsToCloseModal?.forEach(event =>\n $x.on(event, false).subscribe(() => {\n if (isOpen.value) {\n isOpen.value = false\n }\n }),\n )\n\n /**\n * Emits the event defined in the {@link BaseEventsModal.bodyClickEvent} event unless the passed\n * event target is the button that opened the modal.\n *\n * @param event - The event that triggered the close attempt.\n */\n const emitBodyClickEvent = (event: MouseEvent | FocusEvent) => {\n // Prevents clicking the open button when the panel is already open to close the panel.\n if (\n !openerElement.value ||\n !isElementEqualOrContained(openerElement.value, getTargetElement(event))\n ) {\n $x.emit(props.bodyClickEvent, undefined, { target: baseModalEl.value as HTMLElement })\n }\n }\n\n return {\n isOpen,\n openerElement,\n baseModalEl,\n emitBodyClickEvent,\n }\n },\n})\n</script>\n\n<docs lang=\"mdx\">\n## Events\n\nA list of events that the component will emit:\n\n- [`UserClickedCloseEventsModal`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts):\n the event is emitted after clicking outside the content rendered in the default slot.\n- [`UserClickedOutOfEventsModal`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts):\n the event is emitted after clicking outside the modal.\n- Custom events to open or close the modal.\n\n## Examples\n\nThe `BaseEventsModal` component handles the modal open/close state via the events passed via props.\nIt is configured by default to work as a modal for a whole search application, but if the events are\nchanged, it can work as a modal that is opened/closed when the events it is listening to are emitted.\n\n### Basic usage\n\nThe component interacts with the open and close components, which are preconfigured by default to\nemit the same events that the `BaseEventsModal` component is listening to:\n\n```vue\n<template>\n <div>\n <BaseEventsModalOpen>Open</BaseEventsModalOpen>\n <BaseEventsModal>\n <BaseEventsModalClose>Close</BaseEventsModalClose>\n <img src=\"success.png\" />\n </BaseEventsModal>\n </div>\n</template>\n\n<script setup>\nimport { BaseEventsModalOpen, BaseEventsModal, BaseEventsModalClose } from '@empathyco/x-components'\n</script>\n```\n\n### Customizing the events\n\nIf needed, the events to open/close the modal can be changed. The modal can listen to one or more\nevents. To do so, the `eventsToCloseModal` and `eventsToOpenModal` props can be used. Below you can\nsee a full example on how this would work with custom events.\n\n```vue\n<template>\n <div>\n <BaseEventsModalOpen openingEvent=\"UserClickedOpenMyCustomModal\">Open</BaseEventsModalOpen>\n <BaseEventsModal\n :eventsToCloseModal=\"eventsToCloseModal\"\n :eventsToOpenModal=\"eventsToOpenModal\"\n >\n <BaseEventsModalClose closingEvent=\"UserClickedCloseMyCustomModalFromHeader\">\n Close from header\n </BaseEventsModalClose>\n <img src=\"success.png\" />\n <BaseEventsModalClose closingEvent=\"UserClickedCloseMyCustomModalFromFooter\">\n Close from footer\n </BaseEventsModalClose>\n </BaseEventsModal>\n </div>\n</template>\n\n<script setup>\nimport { BaseEventsModalOpen, BaseEventsModal, BaseEventsModalClose } from '@empathyco/x-components'\nconst eventsToOpenModal = ['UserClickedOpenMyCustomModal']\nconst eventsToCloseModal = [\n 'UserClickedCloseMyCustomModalFromHeader',\n 'UserClickedCloseMyCustomModalFromFooter',\n]\n</script>\n```\n\n### Customizing the content with classes\n\nThe `contentClass` prop can be used to add classes to the modal content.\n\n```vue\n<template>\n <div>\n <BaseEventsModalOpen>Open</BaseEventsModalOpen>\n <BaseEventsModal contentClass=\"x-bg-neutral-75\">\n <BaseEventsModalClose>Close</BaseEventsModalClose>\n <img src=\"success.png\" />\n </BaseEventsModal>\n </div>\n</template>\n\n<script setup>\nimport { BaseEventsModalOpen, BaseEventsModal, BaseEventsModalClose } from '@empathyco/x-components'\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;;;;AAqBA;;;;;;;;;;AAUE;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,UAAU,EAAE;QACV,SAAS;AACV,KAAA;AACD,IAAA,KAAK,EAAE;;AAEL,QAAA,iBAAiB,EAAE;AACjB,YAAA,IAAI,EAAE,KAA2B;AACjC,YAAA,OAAO,EAAE,MAAgB,CAAC,4BAA4B,CAAC;AACxD,SAAA;;AAED,QAAA,kBAAkB,EAAE;AAClB,YAAA,IAAI,EAAE,KAA2B;YACjC,OAAO,EAAE,MAAgB,CAAC,6BAA6B,EAAE,6BAA6B,CAAC;AACxF,SAAA;;AAED,QAAA,cAAc,EAAE;AACd,YAAA,IAAI,EAAE,MAA0B;AAChC,YAAA,OAAO,EAAE,6BAA6B;AACvC,SAAA;;AAED,QAAA,SAAS,EAAE,aAAa;AACzB,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAA;AACT,QAAA,MAAM,EAAC,GAAI,KAAK,EAAC;;AAGjB,QAAA,MAAM,SAAS,GAAG,CAAC,KAAK,CAAA;;AAGxB,QAAA,MAAM,aAAY,GAAI,GAAG,EAAc;AACvC,QAAA,MAAM,WAAU,GAAI,GAAG,EAAc;AAErC;;;;;AAKE;QACF,KAAK,CAAC,iBAAiB,EAAE,OAAO,CAAC,SAC/B,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,KAAG;AAC3C,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACjB,gBAAA,aAAa,CAAC,KAAI,GAAI,QAAQ,CAAC,MAAK;AACpC,gBAAA,MAAM,CAAC,KAAI,GAAI,IAAG;YACpB;QACF,CAAC,CAAC,CACJ;;QAGA,KAAK,CAAC,kBAAkB,EAAE,OAAO,CAAC,SAChC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,MAAI;AAChC,YAAA,IAAI,MAAM,CAAC,KAAK,EAAE;AAChB,gBAAA,MAAM,CAAC,KAAI,GAAI,KAAI;YACrB;QACF,CAAC,CAAC,CACJ;AAEA;;;;;AAKE;AACF,QAAA,MAAM,kBAAiB,GAAI,CAAC,KAA8B,KAAG;;YAE3D,IACE,CAAC,aAAa,CAAC;AACf,gBAAA,CAAC,yBAAyB,CAAC,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAA,EACvE;AACA,gBAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAsB,CAAA;YACvF;AACF,QAAA,CAAA;QAEA,OAAO;YACL,MAAM;YACN,aAAa;YACb,WAAW;YACX,kBAAkB;SACpB;IACF,CAAC;AACF,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"base-events-modal2.vue.js","sources":["../../../../src/components/modals/base-events-modal.vue"],"sourcesContent":["<template>\n <BaseModal\n ref=\"baseModalEl\"\n :animation=\"animation\"\n :open=\"isOpen\"\n @click:overlay=\"emitBodyClickEvent\"\n @focusin:body=\"emitBodyClickEvent\"\n >\n <slot />\n </BaseModal>\n</template>\n\n<script lang=\"ts\">\nimport type { PropType } from 'vue'\nimport type { XEvent } from '../../wiring/events.types'\nimport { defineComponent, ref } from 'vue'\nimport { use$x } from '../../composables/use-$x'\nimport { AnimationProp } from '../../types/animation-prop'\nimport { getTargetElement, isElementEqualOrContained } from '../../utils/html'\nimport BaseModal from './base-modal.vue'\n\n/**\n * Component containing a modal that emits a {@link XEventsTypes.UserClickedCloseEventsModal} when\n * clicking outside the content rendered in the default slot and can receive, through the\n * eventsToCloseModal prop, a list of {@link XEvent} to listen to in order to close\n * also the modal, eventsToOpenModal prop, another list of {@link XEvent} to customize\n * the events to listen to open the modal and a prop, displayOverlay, to display an\n * overlay over the rest of the html. The default slot offers the possibility to customize the\n * modal content.\n *\n * @public\n */\nexport default defineComponent({\n name: 'BaseEventsModal',\n components: {\n BaseModal,\n },\n props: {\n /** Array of {@link XEvent} to listen to open the modal. */\n eventsToOpenModal: {\n type: Array as PropType<XEvent[]>,\n default: (): XEvent[] => ['UserClickedOpenEventsModal'],\n },\n /** Array of {@link XEvent} to listen to close the modal. */\n eventsToCloseModal: {\n type: Array as PropType<XEvent[]>,\n default: (): XEvent[] => ['UserClickedCloseEventsModal', 'UserClickedOutOfEventsModal'],\n },\n /** Event to emit when any part of the website out of the modal has been clicked. */\n bodyClickEvent: {\n type: String as PropType<XEvent>,\n default: 'UserClickedOutOfEventsModal',\n },\n /** Animation to use for opening/closing the modal. */\n animation: AnimationProp,\n },\n setup(props) {\n const $x = use$x()\n\n /** Whether the modal is open or not. */\n const isOpen = ref(false)\n\n /** The element that opened the modal. */\n const openerElement = ref<HTMLElement>()\n const baseModalEl = ref<HTMLElement>()\n\n /**\n * Opens the modal.\n *\n * @param _payload - The payload of the event that opened the modal.\n * @param metadata - The metadata of the event that opened the modal.\n */\n props.eventsToOpenModal?.forEach(event =>\n $x.on(event, true).subscribe(({ metadata }) => {\n if (!isOpen.value) {\n openerElement.value = metadata.target\n isOpen.value = true\n }\n }),\n )\n\n /** Closes the modal. */\n props.eventsToCloseModal?.forEach(event =>\n $x.on(event, false).subscribe(() => {\n if (isOpen.value) {\n isOpen.value = false\n }\n }),\n )\n\n /**\n * Emits the event defined in the {@link BaseEventsModal.bodyClickEvent} event unless the passed\n * event target is the button that opened the modal.\n *\n * @param event - The event that triggered the close attempt.\n */\n const emitBodyClickEvent = (event: MouseEvent | FocusEvent) => {\n // Prevents clicking the open button when the panel is already open to close the panel.\n if (\n !openerElement.value ||\n !isElementEqualOrContained(openerElement.value, getTargetElement(event))\n ) {\n $x.emit(props.bodyClickEvent, undefined, { target: baseModalEl.value as HTMLElement })\n }\n }\n\n return {\n isOpen,\n openerElement,\n baseModalEl,\n emitBodyClickEvent,\n }\n },\n})\n</script>\n\n<docs lang=\"mdx\">\n## Events\n\nA list of events that the component will emit:\n\n- [`UserClickedCloseEventsModal`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts):\n the event is emitted after clicking outside the content rendered in the default slot.\n- [`UserClickedOutOfEventsModal`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts):\n the event is emitted after clicking outside the modal.\n- Custom events to open or close the modal.\n\n## Examples\n\nThe `BaseEventsModal` component handles the modal open/close state via the events passed via props.\nIt is configured by default to work as a modal for a whole search application, but if the events are\nchanged, it can work as a modal that is opened/closed when the events it is listening to are emitted.\n\n### Basic usage\n\nThe component interacts with the open and close components, which are preconfigured by default to\nemit the same events that the `BaseEventsModal` component is listening to:\n\n```vue\n<template>\n <div>\n <BaseEventsModalOpen>Open</BaseEventsModalOpen>\n <BaseEventsModal>\n <BaseEventsModalClose>Close</BaseEventsModalClose>\n <img src=\"success.png\" />\n </BaseEventsModal>\n </div>\n</template>\n\n<script setup>\nimport { BaseEventsModalOpen, BaseEventsModal, BaseEventsModalClose } from '@empathyco/x-components'\n</script>\n```\n\n### Customizing the events\n\nIf needed, the events to open/close the modal can be changed. The modal can listen to one or more\nevents. To do so, the `eventsToCloseModal` and `eventsToOpenModal` props can be used. Below you can\nsee a full example on how this would work with custom events.\n\n```vue\n<template>\n <div>\n <BaseEventsModalOpen openingEvent=\"UserClickedOpenMyCustomModal\">Open</BaseEventsModalOpen>\n <BaseEventsModal\n :eventsToCloseModal=\"eventsToCloseModal\"\n :eventsToOpenModal=\"eventsToOpenModal\"\n >\n <BaseEventsModalClose closingEvent=\"UserClickedCloseMyCustomModalFromHeader\">\n Close from header\n </BaseEventsModalClose>\n <img src=\"success.png\" />\n <BaseEventsModalClose closingEvent=\"UserClickedCloseMyCustomModalFromFooter\">\n Close from footer\n </BaseEventsModalClose>\n </BaseEventsModal>\n </div>\n</template>\n\n<script setup>\nimport { BaseEventsModalOpen, BaseEventsModal, BaseEventsModalClose } from '@empathyco/x-components'\nconst eventsToOpenModal = ['UserClickedOpenMyCustomModal']\nconst eventsToCloseModal = [\n 'UserClickedCloseMyCustomModalFromHeader',\n 'UserClickedCloseMyCustomModalFromFooter',\n]\n</script>\n```\n\n### Customizing the content with classes\n\nThe `contentClass` prop can be used to add classes to the modal content.\n\n```vue\n<template>\n <div>\n <BaseEventsModalOpen>Open</BaseEventsModalOpen>\n <BaseEventsModal contentClass=\"x-bg-neutral-75\">\n <BaseEventsModalClose>Close</BaseEventsModalClose>\n <img src=\"success.png\" />\n </BaseEventsModal>\n </div>\n</template>\n\n<script setup>\nimport { BaseEventsModalOpen, BaseEventsModal, BaseEventsModalClose } from '@empathyco/x-components'\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;;;;AAqBA;;;;;;;;;;AAUE;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,UAAU,EAAE;QACV,SAAS;AACV,KAAA;AACD,IAAA,KAAK,EAAE;;AAEL,QAAA,iBAAiB,EAAE;AACjB,YAAA,IAAI,EAAE,KAA2B;AACjC,YAAA,OAAO,EAAE,MAAgB,CAAC,4BAA4B,CAAC;AACxD,SAAA;;AAED,QAAA,kBAAkB,EAAE;AAClB,YAAA,IAAI,EAAE,KAA2B;YACjC,OAAO,EAAE,MAAgB,CAAC,6BAA6B,EAAE,6BAA6B,CAAC;AACxF,SAAA;;AAED,QAAA,cAAc,EAAE;AACd,YAAA,IAAI,EAAE,MAA0B;AAChC,YAAA,OAAO,EAAE,6BAA6B;AACvC,SAAA;;AAED,QAAA,SAAS,EAAE,aAAa;AACzB,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAA;AACT,QAAA,MAAM,EAAC,GAAI,KAAK,EAAC;;AAGjB,QAAA,MAAM,SAAS,GAAG,CAAC,KAAK,CAAA;;AAGxB,QAAA,MAAM,aAAY,GAAI,GAAG,EAAc;AACvC,QAAA,MAAM,WAAU,GAAI,GAAG,EAAc;AAErC;;;;;AAKE;QACF,KAAK,CAAC,iBAAiB,EAAE,OAAO,CAAC,SAC/B,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,KAAG;AAC3C,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACjB,gBAAA,aAAa,CAAC,KAAI,GAAI,QAAQ,CAAC,MAAK;AACpC,gBAAA,MAAM,CAAC,KAAI,GAAI,IAAG;YACpB;QACF,CAAC,CAAC,CACJ;;QAGA,KAAK,CAAC,kBAAkB,EAAE,OAAO,CAAC,SAChC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,MAAI;AAChC,YAAA,IAAI,MAAM,CAAC,KAAK,EAAE;AAChB,gBAAA,MAAM,CAAC,KAAI,GAAI,KAAI;YACrB;QACF,CAAC,CAAC,CACJ;AAEA;;;;;AAKE;AACF,QAAA,MAAM,kBAAiB,GAAI,CAAC,KAA8B,KAAG;;YAE3D,IACE,CAAC,aAAa,CAAC;AACf,gBAAA,CAAC,yBAAyB,CAAC,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAA,EACvE;AACA,gBAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAsB,CAAA;YACvF;AACF,QAAA,CAAA;QAEA,OAAO;YACL,MAAM;YACN,aAAa;YACb,WAAW;YACX,kBAAkB;SACpB;IACF,CAAC;AACF,CAAA,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import _sfc_main from './base-id-modal-close.vue2.js';
1
+ import _sfc_main from './base-id-modal-close2.vue.js';
2
2
  import { openBlock, createElementBlock, renderSlot } from 'vue';
3
3
  import _export_sfc from '../../_virtual/_plugin-vue_export-helper.js';
4
4
 
@@ -44,4 +44,4 @@ var _sfc_main = defineComponent({
44
44
  });
45
45
 
46
46
  export { _sfc_main as default };
47
- //# sourceMappingURL=base-id-modal-close.vue2.js.map
47
+ //# sourceMappingURL=base-id-modal-close2.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-id-modal-close.vue2.js","sources":["../../../../src/components/modals/base-id-modal-close.vue"],"sourcesContent":["<template>\n <button\n class=\"x-events-modal-id-close-button xds:button\"\n data-test=\"close-modal-id\"\n @click=\"closeModal\"\n >\n <!-- @slot (Required) Button content with a text, an icon or both -->\n <slot />\n </button>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { use$x } from '../../composables'\n\n/**\n * Component that allows to close a modal by emitting\n * {@link XEventsTypes.UserClickedCloseModal}.\n * It allows full customization with the 'closing-element' slot and exposes the 'closeModal'\n * function.\n *\n * @public\n */\nexport default defineComponent({\n name: 'BaseIdModalClose',\n props: {\n /** The modalId of the modal that will be closed. */\n modalId: {\n type: String,\n required: true,\n },\n },\n setup(props, { slots }) {\n const $x = use$x()\n\n /**\n * Emits the {@link XEventsTypes.UserClickedCloseModal} event with the modalId as payload.\n *\n * @param event - The event triggering the function.\n * @param event.target - Event target.\n */\n function closeModal({ target }: Event) {\n $x.emit('UserClickedCloseModal', props.modalId, { target: target as HTMLElement })\n }\n\n /* Hack to render through a render-function, the `closing-element` slot or, in its absence,\n the component itself. It is the alternative for the NoElement antipattern. */\n const innerProps = { closeModal }\n return (\n slots['closing-element'] ? () => slots['closing-element']?.(innerProps)[0] : innerProps\n ) as typeof innerProps\n },\n})\n</script>\n\n<docs lang=\"mdx\">\n## Events\n\nA list of events that the component will emit:\n\n- [`UserClickedCloseModal`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts):\n the event is emitted after the user clicks the button. The event payload is the id of the modal\n that is going to be closed.\n\n## Examples\n\nComponent containing an event button that emits `UserClickedCloseModal` when clicked with the\nmodalId as payload. It has a default slot to customize its contents and can also be fully\ncustomized, replacing the default button with any other element.\n\n### Basic example\n\nThe component renders whatever is passed to it in the default slot inside the button and closes the\nmodal with modalId `my-modal`.\n\n```vue\n<template>\n <BaseIdModalClose modalId=\"my-modal\">\n <img src=\"./close-button-icon.svg\" />\n </BaseIdModalClose>\n</template>\n\n<script setup>\nimport { BaseIdModalClose } from '@empathyco/x-components'\n</script>\n```\n\n### Replacing the default button\n\nThe component renders whatever element is passed, replacing the default button and exposing the\nfunction to close the modal with modalId `my-modal`.\n\n```vue\n<template>\n <BaseIdModalClose modalId=\"my-modal\">\n <template #closing-element=\"{ closeModal }\">\n <ul>\n <li @click=\"closeModal\">Close here</li>\n <li>Not here</li>\n </ul>\n </template>\n </BaseIdModalClose>\n</template>\n\n<script setup>\nimport { BaseIdModalClose } from '@empathyco/x-components'\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;;;;;;;;AAeA;;;;;;;AAOE;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,IAAI,EAAE,kBAAkB;AACxB,IAAA,KAAK,EAAE;;AAEL,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA;AACF,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAE,EAAE,KAAI,EAAG,EAAA;AACpB,QAAA,MAAM,EAAC,GAAI,KAAK,EAAC;AAEjB;;;;;AAKE;AACF,QAAA,SAAS,UAAU,CAAC,EAAE,MAAK,EAAU,EAAA;AACnC,YAAA,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,QAAuB,CAAA;QACnF;AAEA;AAC+E;AAC/E,QAAA,MAAM,UAAS,GAAI,EAAE,UAAS,EAAE;QAChC,QACE,KAAK,CAAC,iBAAiB,CAAA,GAAI,MAAM,KAAK,CAAC,iBAAiB,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA,GAAI,UAAS;IAE1F,CAAC;AACF,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"base-id-modal-close2.vue.js","sources":["../../../../src/components/modals/base-id-modal-close.vue"],"sourcesContent":["<template>\n <button\n class=\"x-events-modal-id-close-button xds:button\"\n data-test=\"close-modal-id\"\n @click=\"closeModal\"\n >\n <!-- @slot (Required) Button content with a text, an icon or both -->\n <slot />\n </button>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { use$x } from '../../composables'\n\n/**\n * Component that allows to close a modal by emitting\n * {@link XEventsTypes.UserClickedCloseModal}.\n * It allows full customization with the 'closing-element' slot and exposes the 'closeModal'\n * function.\n *\n * @public\n */\nexport default defineComponent({\n name: 'BaseIdModalClose',\n props: {\n /** The modalId of the modal that will be closed. */\n modalId: {\n type: String,\n required: true,\n },\n },\n setup(props, { slots }) {\n const $x = use$x()\n\n /**\n * Emits the {@link XEventsTypes.UserClickedCloseModal} event with the modalId as payload.\n *\n * @param event - The event triggering the function.\n * @param event.target - Event target.\n */\n function closeModal({ target }: Event) {\n $x.emit('UserClickedCloseModal', props.modalId, { target: target as HTMLElement })\n }\n\n /* Hack to render through a render-function, the `closing-element` slot or, in its absence,\n the component itself. It is the alternative for the NoElement antipattern. */\n const innerProps = { closeModal }\n return (\n slots['closing-element'] ? () => slots['closing-element']?.(innerProps)[0] : innerProps\n ) as typeof innerProps\n },\n})\n</script>\n\n<docs lang=\"mdx\">\n## Events\n\nA list of events that the component will emit:\n\n- [`UserClickedCloseModal`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts):\n the event is emitted after the user clicks the button. The event payload is the id of the modal\n that is going to be closed.\n\n## Examples\n\nComponent containing an event button that emits `UserClickedCloseModal` when clicked with the\nmodalId as payload. It has a default slot to customize its contents and can also be fully\ncustomized, replacing the default button with any other element.\n\n### Basic example\n\nThe component renders whatever is passed to it in the default slot inside the button and closes the\nmodal with modalId `my-modal`.\n\n```vue\n<template>\n <BaseIdModalClose modalId=\"my-modal\">\n <img src=\"./close-button-icon.svg\" />\n </BaseIdModalClose>\n</template>\n\n<script setup>\nimport { BaseIdModalClose } from '@empathyco/x-components'\n</script>\n```\n\n### Replacing the default button\n\nThe component renders whatever element is passed, replacing the default button and exposing the\nfunction to close the modal with modalId `my-modal`.\n\n```vue\n<template>\n <BaseIdModalClose modalId=\"my-modal\">\n <template #closing-element=\"{ closeModal }\">\n <ul>\n <li @click=\"closeModal\">Close here</li>\n <li>Not here</li>\n </ul>\n </template>\n </BaseIdModalClose>\n</template>\n\n<script setup>\nimport { BaseIdModalClose } from '@empathyco/x-components'\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;;;;;;;;AAeA;;;;;;;AAOE;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,IAAI,EAAE,kBAAkB;AACxB,IAAA,KAAK,EAAE;;AAEL,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA;AACF,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAE,EAAE,KAAI,EAAG,EAAA;AACpB,QAAA,MAAM,EAAC,GAAI,KAAK,EAAC;AAEjB;;;;;AAKE;AACF,QAAA,SAAS,UAAU,CAAC,EAAE,MAAK,EAAU,EAAA;AACnC,YAAA,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,QAAuB,CAAA;QACnF;AAEA;AAC+E;AAC/E,QAAA,MAAM,UAAS,GAAI,EAAE,UAAS,EAAE;QAChC,QACE,KAAK,CAAC,iBAAiB,CAAA,GAAI,MAAM,KAAK,CAAC,iBAAiB,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA,GAAI,UAAS;IAE1F,CAAC;AACF,CAAA,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import _sfc_main from './base-id-modal-open.vue2.js';
1
+ import _sfc_main from './base-id-modal-open2.vue.js';
2
2
  import { openBlock, createElementBlock, renderSlot } from 'vue';
3
3
  import _export_sfc from '../../_virtual/_plugin-vue_export-helper.js';
4
4
 
@@ -43,4 +43,4 @@ var _sfc_main = defineComponent({
43
43
  });
44
44
 
45
45
  export { _sfc_main as default };
46
- //# sourceMappingURL=base-id-modal-open.vue2.js.map
46
+ //# sourceMappingURL=base-id-modal-open2.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-id-modal-open.vue2.js","sources":["../../../../src/components/modals/base-id-modal-open.vue"],"sourcesContent":["<template>\n <button\n class=\"x-events-modal-id-open-button xds:button\"\n data-test=\"open-modal-id\"\n @click=\"openModal\"\n >\n <!-- @slot (Required) Button content with a text, an icon or both -->\n <slot />\n </button>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { use$x } from '../../composables'\n\n/**\n * Component that allows to open a modal by emitting {@link XEventsTypes.UserClickedOpenModal}\n * with the modalId as payload. It allows full customization with the 'opening-element' slot and\n * exposes the 'openModal' function.\n *\n * @public\n */\nexport default defineComponent({\n name: 'BaseIdModalOpen',\n props: {\n /** The modalId of the modal that will be opened. */\n modalId: {\n type: String,\n required: true,\n },\n },\n setup(props, { slots }) {\n const $x = use$x()\n\n /**\n * Emits the {@link XEventsTypes.UserClickedOpenModal} event with the modalId as payload.\n *\n * @param event - The event triggering the function.\n * @param event.target - Event target.\n */\n function openModal({ target }: Event) {\n $x.emit('UserClickedOpenModal', props.modalId, { target: target as HTMLElement })\n }\n\n /* Hack to render through a render-function, the `opening-element` slot or, in its absence,\n the component itself. It is the alternative for the NoElement antipattern. */\n const innerProps = { openModal }\n return (\n slots['opening-element'] ? () => slots['opening-element']?.(innerProps)[0] : innerProps\n ) as typeof innerProps\n },\n})\n</script>\n\n<docs lang=\"mdx\">\n## Events\n\nA list of events that the component will emit:\n\n- [`UserClickedOpenModal`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts):\n the event is emitted after the user clicks the button. The event payload is the id of the modal\n that is going to be opened.\n\n## Examples\n\nComponent containing an event button that emits `UserClickedOpenModal` when it is clicked with the\nmodalId as payload. It has a default slot to customize its contents and can also be fully\ncustomized, replacing the default button with any other element.\n\n### Basic example\n\nThe component rendering content passed to the default slot inside the button and opening the modal\nwith modalId `my-modal`.\n\n```vue\n<template>\n <BaseIdModalOpen modalId=\"my-modal\">\n <img src=\"./open-button-icon.svg\" />\n <span>Open</span>\n </BaseIdModalOpen>\n</template>\n\n<script setup>\nimport { BaseIdModalOpen } from '@empathyco/x-components'\n</script>\n```\n\n### Replacing the default button\n\nThe component renders whatever element is passed, replacing the default button and exposing the\nfunction to open the modal with modalId `my-modal`.\n\n```vue\n<template>\n <BaseIdModalOpen modalId=\"my-modal\">\n <template #opening-element=\"{ openModal }\">\n <ul>\n <li @click=\"openModal\">Open here</li>\n <li>Not here</li>\n </ul>\n </template>\n </BaseIdModalOpen>\n</template>\n\n<script setup>\nimport { BaseIdModalOpen } from '@empathyco/x-components'\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;;;;;;;;AAeA;;;;;;AAME;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,KAAK,EAAE;;AAEL,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA;AACF,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAE,EAAE,KAAI,EAAG,EAAA;AACpB,QAAA,MAAM,EAAC,GAAI,KAAK,EAAC;AAEjB;;;;;AAKE;AACF,QAAA,SAAS,SAAS,CAAC,EAAE,MAAK,EAAU,EAAA;AAClC,YAAA,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,QAAuB,CAAA;QAClF;AAEA;AAC+E;AAC/E,QAAA,MAAM,UAAS,GAAI,EAAE,SAAQ,EAAE;QAC/B,QACE,KAAK,CAAC,iBAAiB,CAAA,GAAI,MAAM,KAAK,CAAC,iBAAiB,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA,GAAI,UAAS;IAE1F,CAAC;AACF,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"base-id-modal-open2.vue.js","sources":["../../../../src/components/modals/base-id-modal-open.vue"],"sourcesContent":["<template>\n <button\n class=\"x-events-modal-id-open-button xds:button\"\n data-test=\"open-modal-id\"\n @click=\"openModal\"\n >\n <!-- @slot (Required) Button content with a text, an icon or both -->\n <slot />\n </button>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { use$x } from '../../composables'\n\n/**\n * Component that allows to open a modal by emitting {@link XEventsTypes.UserClickedOpenModal}\n * with the modalId as payload. It allows full customization with the 'opening-element' slot and\n * exposes the 'openModal' function.\n *\n * @public\n */\nexport default defineComponent({\n name: 'BaseIdModalOpen',\n props: {\n /** The modalId of the modal that will be opened. */\n modalId: {\n type: String,\n required: true,\n },\n },\n setup(props, { slots }) {\n const $x = use$x()\n\n /**\n * Emits the {@link XEventsTypes.UserClickedOpenModal} event with the modalId as payload.\n *\n * @param event - The event triggering the function.\n * @param event.target - Event target.\n */\n function openModal({ target }: Event) {\n $x.emit('UserClickedOpenModal', props.modalId, { target: target as HTMLElement })\n }\n\n /* Hack to render through a render-function, the `opening-element` slot or, in its absence,\n the component itself. It is the alternative for the NoElement antipattern. */\n const innerProps = { openModal }\n return (\n slots['opening-element'] ? () => slots['opening-element']?.(innerProps)[0] : innerProps\n ) as typeof innerProps\n },\n})\n</script>\n\n<docs lang=\"mdx\">\n## Events\n\nA list of events that the component will emit:\n\n- [`UserClickedOpenModal`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts):\n the event is emitted after the user clicks the button. The event payload is the id of the modal\n that is going to be opened.\n\n## Examples\n\nComponent containing an event button that emits `UserClickedOpenModal` when it is clicked with the\nmodalId as payload. It has a default slot to customize its contents and can also be fully\ncustomized, replacing the default button with any other element.\n\n### Basic example\n\nThe component rendering content passed to the default slot inside the button and opening the modal\nwith modalId `my-modal`.\n\n```vue\n<template>\n <BaseIdModalOpen modalId=\"my-modal\">\n <img src=\"./open-button-icon.svg\" />\n <span>Open</span>\n </BaseIdModalOpen>\n</template>\n\n<script setup>\nimport { BaseIdModalOpen } from '@empathyco/x-components'\n</script>\n```\n\n### Replacing the default button\n\nThe component renders whatever element is passed, replacing the default button and exposing the\nfunction to open the modal with modalId `my-modal`.\n\n```vue\n<template>\n <BaseIdModalOpen modalId=\"my-modal\">\n <template #opening-element=\"{ openModal }\">\n <ul>\n <li @click=\"openModal\">Open here</li>\n <li>Not here</li>\n </ul>\n </template>\n </BaseIdModalOpen>\n</template>\n\n<script setup>\nimport { BaseIdModalOpen } from '@empathyco/x-components'\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;;;;;;;;AAeA;;;;;;AAME;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,KAAK,EAAE;;AAEL,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA;AACF,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAE,EAAE,KAAI,EAAG,EAAA;AACpB,QAAA,MAAM,EAAC,GAAI,KAAK,EAAC;AAEjB;;;;;AAKE;AACF,QAAA,SAAS,SAAS,CAAC,EAAE,MAAK,EAAU,EAAA;AAClC,YAAA,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,QAAuB,CAAA;QAClF;AAEA;AAC+E;AAC/E,QAAA,MAAM,UAAS,GAAI,EAAE,SAAQ,EAAE;QAC/B,QACE,KAAK,CAAC,iBAAiB,CAAA,GAAI,MAAM,KAAK,CAAC,iBAAiB,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA,GAAI,UAAS;IAE1F,CAAC;AACF,CAAA,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import _sfc_main from './base-id-modal.vue2.js';
1
+ import _sfc_main from './base-id-modal2.vue.js';
2
2
  import { resolveComponent, openBlock, createBlock, withCtx, renderSlot } from 'vue';
3
3
  import _export_sfc from '../../_virtual/_plugin-vue_export-helper.js';
4
4
 
@@ -98,4 +98,4 @@ var _sfc_main = defineComponent({
98
98
  });
99
99
 
100
100
  export { _sfc_main as default };
101
- //# sourceMappingURL=base-id-modal.vue2.js.map
101
+ //# sourceMappingURL=base-id-modal2.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-id-modal.vue2.js","sources":["../../../../src/components/modals/base-id-modal.vue"],"sourcesContent":["<template>\n <BaseModal\n ref=\"modal\"\n :animation=\"animation\"\n :open=\"isOpen\"\n @click:overlay=\"emitClickOutOfModal\"\n @focusin:body=\"emitClickOutOfModal\"\n >\n <slot />\n </BaseModal>\n</template>\n\n<script lang=\"ts\">\nimport type { XEvent } from '../../wiring/events.types'\nimport type { WireMetadata } from '../../wiring/wiring.types'\nimport { defineComponent, ref, useTemplateRef } from 'vue'\nimport { useXBus } from '../../composables'\nimport { AnimationProp } from '../../types/animation-prop'\nimport { getTargetElement, isElementEqualOrContained } from '../../utils/html'\nimport BaseModal from './base-modal.vue'\n\n/**\n * Component containing a modal expecting a required prop, named `modalId`. It reacts to\n * `UserClickedOpenModal`, `UserClickedCloseModal` and `UserClickedOutOfModal` events, when their\n * payload matches the component's 'modalId' prop, to handle its open/close state. The default\n * slot offers the possibility to customise the modal content.\n *\n * @public\n */\nexport default defineComponent({\n name: 'BaseIdModal',\n components: { BaseModal },\n props: {\n /**\n * Animation to use for opening/closing the modal.\n */\n animation: {\n type: AnimationProp,\n },\n /**\n * The modalId to use for the open and close event listeners.\n */\n modalId: {\n type: String,\n required: true,\n },\n },\n setup(props) {\n /** The element that opened the modal. */\n let openerElement: HTMLElement | undefined\n\n /** Whether the modal is open or not. */\n const isOpen = ref(false)\n\n const el = useTemplateRef<InstanceType<typeof BaseModal>>('modal')\n\n const closeModalEvents: XEvent[] = ['UserClickedCloseModal', 'UserClickedOutOfModal']\n\n const xBus = useXBus()\n\n /**\n * Opens the modal.\n *\n * @param modalId - The payload of the {@link XEventsTypes.UserClickedOpenModal} event.\n * @param metadata - The metadata of the emitted event.\n * @public\n */\n function openModal(modalId: string, metadata: WireMetadata): void {\n if (!isOpen.value && props.modalId === modalId) {\n openerElement = metadata.target\n isOpen.value = true\n }\n }\n\n /**\n * Closes the modal.\n *\n * @param payload - The payload of the closing events:\n * {@link XEventsTypes.UserClickedCloseModal} or {@link XEventsTypes.UserClickedOutOfModal}.\n *\n * @public\n */\n function closeModal(payload: string): void {\n if (isOpen.value && props.modalId === payload) {\n isOpen.value = false\n }\n }\n\n /**\n * Emits a {@link XEventsTypes.UserClickedOutOfModal} event unless the passed event target\n * is the button that opened the modal.\n *\n * @param event - The event that triggered the close attempt.\n * @public\n */\n function emitClickOutOfModal(event: MouseEvent | FocusEvent): void {\n // Prevents clicking the open button when the panel is already open to close the panel.\n if (!openerElement || !isElementEqualOrContained(openerElement, getTargetElement(event))) {\n xBus.emit('UserClickedOutOfModal', props.modalId, { target: el.value?.$el as HTMLElement })\n }\n }\n\n xBus\n .on('UserClickedOpenModal', true)\n .subscribe(({ eventPayload, metadata }) => openModal(eventPayload, metadata))\n\n closeModalEvents.forEach(event => {\n xBus.on(event, false).subscribe(eventPayload => closeModal(eventPayload as string))\n })\n\n return {\n el,\n isOpen,\n emitClickOutOfModal,\n }\n },\n})\n</script>\n\n<docs lang=\"mdx\">\n## Events\n\nA list of events that the component will emit:\n\n- [`UserClickedOutOfModal`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts):\n the event is emitted after the user clicks outside the modal. The event payload is the id of the\n modal and a metadata with the target element that emitted it.\n\n## Examples\n\nThe `BaseIdModal` component reacts to the `UserClickedOpenModal`, `UserClickedCloseModal` and\n`UserClickedOutOfModal` to handle its open/close state. The component filters out the events which\npayload doesn't match its `modalId` prop and reacts only to those who match this criteria.\n\n### Basic usage\n\nThe component interacts with both `BaseIdModalOpen` and `BaseIdModalClose` components, which have to\nshare the same value in their `modalId` prop to work:\n\n```vue\n<template>\n <div>\n <BaseIdModalOpen modalId=\"myModal\">Open</BaseIdModalOpen>\n <BaseIdModal modalId=\"myModal\">\n <img src=\"success.png\" />\n <BaseIdModalClose modalId=\"myModal\">Close</BaseIdModalClose>\n </BaseIdModal>\n </div>\n</template>\n\n<script setup>\nimport { BaseIdModalOpen, BaseIdModal, BaseIdModalClose } from '@empathyco/x-components'\n</script>\n```\n\n### Customized usage\n\n#### Customizing the content with classes\n\nThe `contentClass` prop can be used to add classes to the modal content.\n\n```vue\n<template>\n <div>\n <BaseIdModalOpen modalId=\"myModal\">Open</BaseIdModalOpen>\n <BaseIdModal modalId=\"myModal\" contentClass=\"x-bg-neutral-75\">\n <img src=\"success.png\" />\n <BaseIdModalClose modalId=\"myModal\">Close</BaseIdModalClose>\n </BaseIdModal>\n </div>\n</template>\n\n<script setup>\nimport { BaseIdModalOpen, BaseIdModal, BaseIdModalClose } from '@empathyco/x-components'\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;;;;;;;;;;AAqBA;;;;;;;AAOE;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,IAAI,EAAE,aAAa;IACnB,UAAU,EAAE,EAAE,WAAW;AACzB,IAAA,KAAK,EAAE;AACL;;AAEE;AACF,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,aAAa;AACpB,SAAA;AACD;;AAEE;AACF,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA;AACF,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAA;;AAET,QAAA,IAAI,aAAqC;;AAGzC,QAAA,MAAM,SAAS,GAAG,CAAC,KAAK,CAAA;AAExB,QAAA,MAAM,EAAC,GAAI,cAAc,CAAiC,OAAO,CAAA;AAEjE,QAAA,MAAM,gBAAgB,GAAa,CAAC,uBAAuB,EAAE,uBAAuB,CAAA;AAEpF,QAAA,MAAM,IAAG,GAAI,OAAO,EAAC;AAErB;;;;;;AAME;AACF,QAAA,SAAS,SAAS,CAAC,OAAe,EAAE,QAAsB,EAAA;YACxD,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC,OAAM,KAAM,OAAO,EAAE;AAC9C,gBAAA,aAAY,GAAI,QAAQ,CAAC,MAAK;AAC9B,gBAAA,MAAM,CAAC,KAAI,GAAI,IAAG;YACpB;QACF;AAEA;;;;;;;AAOE;QACF,SAAS,UAAU,CAAC,OAAe,EAAA;YACjC,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,OAAM,KAAM,OAAO,EAAE;AAC7C,gBAAA,MAAM,CAAC,KAAI,GAAI,KAAI;YACrB;QACF;AAEA;;;;;;AAME;QACF,SAAS,mBAAmB,CAAC,KAA8B,EAAA;;AAEzD,YAAA,IAAI,CAAC,aAAY,IAAK,CAAC,yBAAyB,CAAC,aAAa,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE;AACxF,gBAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,KAAoB,CAAA;YAC5F;QACF;QAEA;AACG,aAAA,EAAE,CAAC,sBAAsB,EAAE,IAAI;AAC/B,aAAA,SAAS,CAAC,CAAC,EAAE,YAAY,EAAE,QAAO,EAAG,KAAK,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;AAE9E,QAAA,gBAAgB,CAAC,OAAO,CAAC,KAAI,IAAG;AAC9B,YAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,YAAW,IAAK,UAAU,CAAC,YAAsB,CAAC,CAAA;AACpF,QAAA,CAAC,CAAA;QAED,OAAO;YACL,EAAE;YACF,MAAM;YACN,mBAAmB;SACrB;IACF,CAAC;AACF,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"base-id-modal2.vue.js","sources":["../../../../src/components/modals/base-id-modal.vue"],"sourcesContent":["<template>\n <BaseModal\n ref=\"modal\"\n :animation=\"animation\"\n :open=\"isOpen\"\n @click:overlay=\"emitClickOutOfModal\"\n @focusin:body=\"emitClickOutOfModal\"\n >\n <slot />\n </BaseModal>\n</template>\n\n<script lang=\"ts\">\nimport type { XEvent } from '../../wiring/events.types'\nimport type { WireMetadata } from '../../wiring/wiring.types'\nimport { defineComponent, ref, useTemplateRef } from 'vue'\nimport { useXBus } from '../../composables'\nimport { AnimationProp } from '../../types/animation-prop'\nimport { getTargetElement, isElementEqualOrContained } from '../../utils/html'\nimport BaseModal from './base-modal.vue'\n\n/**\n * Component containing a modal expecting a required prop, named `modalId`. It reacts to\n * `UserClickedOpenModal`, `UserClickedCloseModal` and `UserClickedOutOfModal` events, when their\n * payload matches the component's 'modalId' prop, to handle its open/close state. The default\n * slot offers the possibility to customise the modal content.\n *\n * @public\n */\nexport default defineComponent({\n name: 'BaseIdModal',\n components: { BaseModal },\n props: {\n /**\n * Animation to use for opening/closing the modal.\n */\n animation: {\n type: AnimationProp,\n },\n /**\n * The modalId to use for the open and close event listeners.\n */\n modalId: {\n type: String,\n required: true,\n },\n },\n setup(props) {\n /** The element that opened the modal. */\n let openerElement: HTMLElement | undefined\n\n /** Whether the modal is open or not. */\n const isOpen = ref(false)\n\n const el = useTemplateRef<InstanceType<typeof BaseModal>>('modal')\n\n const closeModalEvents: XEvent[] = ['UserClickedCloseModal', 'UserClickedOutOfModal']\n\n const xBus = useXBus()\n\n /**\n * Opens the modal.\n *\n * @param modalId - The payload of the {@link XEventsTypes.UserClickedOpenModal} event.\n * @param metadata - The metadata of the emitted event.\n * @public\n */\n function openModal(modalId: string, metadata: WireMetadata): void {\n if (!isOpen.value && props.modalId === modalId) {\n openerElement = metadata.target\n isOpen.value = true\n }\n }\n\n /**\n * Closes the modal.\n *\n * @param payload - The payload of the closing events:\n * {@link XEventsTypes.UserClickedCloseModal} or {@link XEventsTypes.UserClickedOutOfModal}.\n *\n * @public\n */\n function closeModal(payload: string): void {\n if (isOpen.value && props.modalId === payload) {\n isOpen.value = false\n }\n }\n\n /**\n * Emits a {@link XEventsTypes.UserClickedOutOfModal} event unless the passed event target\n * is the button that opened the modal.\n *\n * @param event - The event that triggered the close attempt.\n * @public\n */\n function emitClickOutOfModal(event: MouseEvent | FocusEvent): void {\n // Prevents clicking the open button when the panel is already open to close the panel.\n if (!openerElement || !isElementEqualOrContained(openerElement, getTargetElement(event))) {\n xBus.emit('UserClickedOutOfModal', props.modalId, { target: el.value?.$el as HTMLElement })\n }\n }\n\n xBus\n .on('UserClickedOpenModal', true)\n .subscribe(({ eventPayload, metadata }) => openModal(eventPayload, metadata))\n\n closeModalEvents.forEach(event => {\n xBus.on(event, false).subscribe(eventPayload => closeModal(eventPayload as string))\n })\n\n return {\n el,\n isOpen,\n emitClickOutOfModal,\n }\n },\n})\n</script>\n\n<docs lang=\"mdx\">\n## Events\n\nA list of events that the component will emit:\n\n- [`UserClickedOutOfModal`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts):\n the event is emitted after the user clicks outside the modal. The event payload is the id of the\n modal and a metadata with the target element that emitted it.\n\n## Examples\n\nThe `BaseIdModal` component reacts to the `UserClickedOpenModal`, `UserClickedCloseModal` and\n`UserClickedOutOfModal` to handle its open/close state. The component filters out the events which\npayload doesn't match its `modalId` prop and reacts only to those who match this criteria.\n\n### Basic usage\n\nThe component interacts with both `BaseIdModalOpen` and `BaseIdModalClose` components, which have to\nshare the same value in their `modalId` prop to work:\n\n```vue\n<template>\n <div>\n <BaseIdModalOpen modalId=\"myModal\">Open</BaseIdModalOpen>\n <BaseIdModal modalId=\"myModal\">\n <img src=\"success.png\" />\n <BaseIdModalClose modalId=\"myModal\">Close</BaseIdModalClose>\n </BaseIdModal>\n </div>\n</template>\n\n<script setup>\nimport { BaseIdModalOpen, BaseIdModal, BaseIdModalClose } from '@empathyco/x-components'\n</script>\n```\n\n### Customized usage\n\n#### Customizing the content with classes\n\nThe `contentClass` prop can be used to add classes to the modal content.\n\n```vue\n<template>\n <div>\n <BaseIdModalOpen modalId=\"myModal\">Open</BaseIdModalOpen>\n <BaseIdModal modalId=\"myModal\" contentClass=\"x-bg-neutral-75\">\n <img src=\"success.png\" />\n <BaseIdModalClose modalId=\"myModal\">Close</BaseIdModalClose>\n </BaseIdModal>\n </div>\n</template>\n\n<script setup>\nimport { BaseIdModalOpen, BaseIdModal, BaseIdModalClose } from '@empathyco/x-components'\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;;;;;;;;;;AAqBA;;;;;;;AAOE;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,IAAI,EAAE,aAAa;IACnB,UAAU,EAAE,EAAE,WAAW;AACzB,IAAA,KAAK,EAAE;AACL;;AAEE;AACF,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,aAAa;AACpB,SAAA;AACD;;AAEE;AACF,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA;AACF,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAA;;AAET,QAAA,IAAI,aAAqC;;AAGzC,QAAA,MAAM,SAAS,GAAG,CAAC,KAAK,CAAA;AAExB,QAAA,MAAM,EAAC,GAAI,cAAc,CAAiC,OAAO,CAAA;AAEjE,QAAA,MAAM,gBAAgB,GAAa,CAAC,uBAAuB,EAAE,uBAAuB,CAAA;AAEpF,QAAA,MAAM,IAAG,GAAI,OAAO,EAAC;AAErB;;;;;;AAME;AACF,QAAA,SAAS,SAAS,CAAC,OAAe,EAAE,QAAsB,EAAA;YACxD,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC,OAAM,KAAM,OAAO,EAAE;AAC9C,gBAAA,aAAY,GAAI,QAAQ,CAAC,MAAK;AAC9B,gBAAA,MAAM,CAAC,KAAI,GAAI,IAAG;YACpB;QACF;AAEA;;;;;;;AAOE;QACF,SAAS,UAAU,CAAC,OAAe,EAAA;YACjC,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,OAAM,KAAM,OAAO,EAAE;AAC7C,gBAAA,MAAM,CAAC,KAAI,GAAI,KAAI;YACrB;QACF;AAEA;;;;;;AAME;QACF,SAAS,mBAAmB,CAAC,KAA8B,EAAA;;AAEzD,YAAA,IAAI,CAAC,aAAY,IAAK,CAAC,yBAAyB,CAAC,aAAa,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE;AACxF,gBAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,KAAoB,CAAA;YAC5F;QACF;QAEA;AACG,aAAA,EAAE,CAAC,sBAAsB,EAAE,IAAI;AAC/B,aAAA,SAAS,CAAC,CAAC,EAAE,YAAY,EAAE,QAAO,EAAG,KAAK,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;AAE9E,QAAA,gBAAgB,CAAC,OAAO,CAAC,KAAI,IAAG;AAC9B,YAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,YAAW,IAAK,UAAU,CAAC,YAAsB,CAAC,CAAA;AACpF,QAAA,CAAC,CAAA;QAED,OAAO;YACL,EAAE;YACF,MAAM;YACN,mBAAmB;SACrB;IACF,CAAC;AACF,CAAA,CAAA;;;;"}
@@ -1,6 +1,6 @@
1
- import _sfc_main from './base-modal.vue2.js';
1
+ import _sfc_main from './base-modal2.vue.js';
2
2
  import { withDirectives, openBlock, createElementBlock, createBlock, resolveDynamicComponent, withCtx, normalizeClass, renderSlot, createCommentVNode, vShow } from 'vue';
3
- import './base-modal.vue3.js';
3
+ import './base-modal3.vue.js';
4
4
  import _export_sfc from '../../_virtual/_plugin-vue_export-helper.js';
5
5
 
6
6
  const _hoisted_1 = {
@@ -11,25 +11,25 @@ import { AnimationProp } from '../../types/animation-prop.js';
11
11
  import { FOCUSABLE_SELECTORS } from '../../utils/focus.js';
12
12
  import { getTargetElement } from '../../utils/html.js';
13
13
  import '../../utils/storage.js';
14
- import '../animations/animate-clip-path.vue2.js';
15
- import '../animations/animate-scale.vue2.js';
16
- import '../animations/animate-translate.vue2.js';
17
- import '../animations/animate-width.vue2.js';
18
- import '../animations/animate-width.vue3.js';
19
- import '../animations/change-height.vue2.js';
20
- import '../animations/change-height.vue3.js';
21
- import '../animations/collapse-height.vue2.js';
22
- import '../animations/collapse-height.vue3.js';
23
- import '../animations/collapse-width.vue2.js';
24
- import '../animations/collapse-width.vue3.js';
25
- import '../animations/cross-fade.vue2.js';
26
- import '../animations/cross-fade.vue3.js';
27
- import '../animations/fade-and-slide.vue2.js';
28
- import '../animations/fade-and-slide.vue3.js';
14
+ import '../animations/animate-clip-path2.vue.js';
15
+ import '../animations/animate-scale2.vue.js';
16
+ import '../animations/animate-translate2.vue.js';
17
+ import '../animations/animate-width2.vue.js';
18
+ import '../animations/animate-width3.vue.js';
19
+ import '../animations/change-height2.vue.js';
20
+ import '../animations/change-height3.vue.js';
21
+ import '../animations/collapse-height2.vue.js';
22
+ import '../animations/collapse-height3.vue.js';
23
+ import '../animations/collapse-width2.vue.js';
24
+ import '../animations/collapse-width3.vue.js';
25
+ import '../animations/cross-fade2.vue.js';
26
+ import '../animations/cross-fade3.vue.js';
27
+ import '../animations/fade-and-slide2.vue.js';
28
+ import '../animations/fade-and-slide3.vue.js';
29
29
  import Fade from '../animations/fade.vue.js';
30
30
  import _sfc_main$1 from '../animations/no-animation.vue.js';
31
- import '../animations/staggered-fade-and-slide.vue2.js';
32
- import '../animations/staggered-fade-and-slide.vue3.js';
31
+ import '../animations/staggered-fade-and-slide2.vue.js';
32
+ import '../animations/staggered-fade-and-slide3.vue.js';
33
33
 
34
34
  /**
35
35
  * Base component with no XPlugin dependencies that serves as a utility for constructing more
@@ -220,4 +220,4 @@ var _sfc_main = defineComponent({
220
220
  });
221
221
 
222
222
  export { _sfc_main as default };
223
- //# sourceMappingURL=base-modal.vue2.js.map
223
+ //# sourceMappingURL=base-modal2.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-modal.vue2.js","sources":["../../../../src/components/modals/base-modal.vue"],"sourcesContent":["<template>\n <div v-show=\"isWaitingForLeave || open\" ref=\"modalRef\" class=\"x-modal\" data-test=\"modal\">\n <component\n :is=\"animation\"\n @before-leave=\"isWaitingForLeave = true\"\n @after-leave=\"isWaitingForLeave = false\"\n >\n <div\n v-if=\"open\"\n ref=\"modalContentRef\"\n class=\"x-modal__content\"\n data-test=\"modal-content\"\n role=\"dialog\"\n :class=\"contentClass\"\n aria-label=\"Base modal content\"\n >\n <!-- @slot (Required) Modal container content -->\n <slot />\n </div>\n </component>\n <component :is=\"overlayAnimation\">\n <div\n v-if=\"open\"\n class=\"x-modal__overlay\"\n :class=\"overlayClass\"\n data-test=\"modal-overlay\"\n @click=\"emitOverlayClicked\"\n @keydown=\"emitOverlayClicked\"\n />\n </component>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { useDebounce } from '../../composables'\nimport { AnimationProp } from '../../types'\nimport { FOCUSABLE_SELECTORS, getTargetElement } from '../../utils'\nimport { Fade, NoAnimation } from '../animations'\n\n/**\n * Base component with no XPlugin dependencies that serves as a utility for constructing more\n * complex modals.\n *\n * @public\n */\nexport default defineComponent({\n name: 'BaseModal',\n props: {\n /** Determines if the modal is open or not. */\n open: {\n type: Boolean,\n required: true,\n },\n /**\n * Determines if the focused element changes to one inside the modal when it opens. Either the\n * first element with a positive tabindex or just the first focusable element.\n */\n focusOnOpen: {\n type: Boolean,\n default: true,\n },\n /**\n * The reference selector of a DOM element to use as reference to position the modal.\n * This selector can be an ID or a class, if it is a class, it will use the first\n * element that matches.\n */\n referenceSelector: String,\n /** Animation to use for opening/closing the modal.This animation only affects the content. */\n animation: {\n type: AnimationProp,\n default: () => NoAnimation,\n },\n /**\n * Animation to use for the overlay (backdrop) part of the modal. By default, it uses\n * a fade transition.\n */\n overlayAnimation: {\n type: AnimationProp,\n default: () => Fade,\n },\n /** Class inherited by content element. */\n contentClass: String,\n /** Class inherited by overlay element. */\n overlayClass: String,\n },\n emits: ['click:overlay', 'focusin:body'],\n setup(props, { emit }) {\n /** Reference to the modal element in the DOM. */\n const modalRef = ref<HTMLDivElement>()\n /** Reference to the modal content element in the DOM. */\n const modalContentRef = ref<HTMLDivElement>()\n\n /** The previous value of the body overflow style. */\n const previousBodyOverflow = ref('')\n /** The previous value of the HTML element overflow style. */\n const previousHTMLOverflow = ref('')\n /** Boolean to delay the leave animation until it has completed. */\n const isWaitingForLeave = ref(false)\n /** The reference element to use to find the modal's position. */\n let referenceElement: HTMLElement | undefined\n\n /** Disables the scroll of both the body and the window. */\n function disableScroll() {\n previousBodyOverflow.value = document.body.style.overflow\n previousHTMLOverflow.value = document.documentElement.style.overflow\n document.body.style.overflow = document.documentElement.style.overflow = 'hidden'\n }\n\n /** Restores the scroll of both the body and the window. */\n function enableScroll() {\n document.body.style.overflow = previousBodyOverflow.value\n document.documentElement.style.overflow = previousHTMLOverflow.value\n }\n\n /**\n * Emits the `click:overlay` event if the click has been triggered in the overlay layer.\n *\n * @param event - The click event.\n */\n function emitOverlayClicked(event: Event) {\n // eslint-disable-next-line vue/custom-event-name-casing\n emit('click:overlay', event)\n }\n\n /**\n * Emits the `focusin:body` event if a focus event has been triggered outside the modal.\n *\n * @param event - The focusin event.\n */\n function emitFocusInBody(event: FocusEvent) {\n if (!modalContentRef.value?.contains(getTargetElement(event))) {\n // eslint-disable-next-line vue/custom-event-name-casing\n emit('focusin:body', event)\n }\n }\n\n /**\n * Adds listeners to the body element ot detect if the modal should be closed.\n *\n * @remarks TODO find a better solution and remove the timeout\n * To avoid emit the focusin on opening X that provokes closing it immediately.\n * This is because this event was emitted after the open of main modal when the user clicks\n * on the customer website search box (focus event). This way we avoid add the listener before\n * the open and the avoid the event that provokes the close.\n */\n function addBodyListeners() {\n setTimeout(() => {\n document.body.addEventListener('focusin', emitFocusInBody)\n })\n }\n\n /** Removes the body listeners. */\n function removeBodyListeners() {\n document.body.removeEventListener('focusin', emitFocusInBody)\n }\n\n /**\n * Sets the focused element to the first element either the first element with a positive\n * tabindex or, if there isn't any, the first focusable element inside the modal.\n */\n function setFocus() {\n const candidates: HTMLElement[] = Array.from(\n modalContentRef.value?.querySelectorAll(FOCUSABLE_SELECTORS) ?? [],\n )\n const element = candidates.find(element => element.tabIndex) ?? candidates[0]\n element?.focus()\n }\n\n /**\n * Syncs the body to the open state of the modal, adding or removing styles and listeners.\n *\n * @remarks nextTick() to wait for `modalContentRef` to be updated to look for focusable\n * candidates inside.\n *\n * @param isOpen - True when the modal is opened.\n */\n async function syncBody(isOpen: boolean) {\n if (isOpen) {\n disableScroll()\n addBodyListeners()\n if (props.focusOnOpen) {\n await nextTick()\n setFocus()\n }\n } else {\n enableScroll()\n removeBodyListeners()\n }\n }\n\n /**\n * Updates the position of the modal setting the top of the element depending\n * on the selector. The modal will be placed under this selector.\n */\n const debouncedUpdatePosition = useDebounce(\n () => {\n const { height, y } = referenceElement?.getBoundingClientRect() ?? { height: 0, y: 0 }\n modalRef.value!.style.top = `${height + y}px`\n modalRef.value!.style.bottom = '0'\n modalRef.value!.style.height = 'auto'\n },\n 100,\n { leading: true },\n )\n\n let resizeObserver: ResizeObserver\n\n onMounted(() => {\n watch(() => props.open, syncBody)\n if (props.open) {\n syncBody(true)\n }\n\n resizeObserver = new ResizeObserver(debouncedUpdatePosition)\n\n watch(\n () => props.referenceSelector,\n () => {\n resizeObserver.disconnect()\n\n if (props.referenceSelector) {\n const element = document.querySelector(props.referenceSelector) as HTMLElement\n if (element) {\n referenceElement = element\n resizeObserver.observe(element)\n }\n } else {\n referenceElement = undefined\n debouncedUpdatePosition()\n }\n },\n { immediate: true },\n )\n })\n\n onBeforeUnmount(() => {\n if (props.open) {\n removeBodyListeners()\n enableScroll()\n }\n resizeObserver.disconnect()\n })\n\n return {\n emitOverlayClicked,\n isWaitingForLeave,\n modalContentRef,\n modalRef,\n }\n },\n})\n</script>\n\n<style lang=\"css\" scoped>\n.x-modal {\n position: fixed;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n width: 100%;\n height: 100%;\n z-index: 1;\n}\n\n.x-modal__content {\n display: flex;\n flex-flow: column nowrap;\n z-index: 1;\n}\n\n.x-modal__overlay {\n width: 100%;\n height: 100%;\n position: absolute;\n background-color: rgb(0, 0, 0);\n opacity: 0.3;\n}\n</style>\n\n<docs lang=\"mdx\">\n## Examples\n\nThe `BaseModal` is a simple component that serves to create complex modals. Its open state has to be\npassed via prop. There is a prop, `referenceSelector`, used to place the modal under some element\ninstead of set the top of the element directly. It also accepts an animation to use for opening &\nclosing.\n\nIt emits a `click:overlay` event when any part out of the content is clicked, but only if the modal\nis open.\n\n```vue\n<template>\n <div>\n <button @click=\"open = true\">Open modal</button>\n <BaseModal\n :animation=\"fadeAndSlide\"\n :open=\"open\"\n @click:overlay=\"open = false\"\n referenceSelector=\".header\"\n >\n <h1>Hello</h1>\n <p>The modal is working</p>\n <button @click=\"open = false\">Close modal</button>\n </BaseModal>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue'\nimport { BaseModal, FadeAndSlide } from '@empathyco/x-components'\nconst open = ref(false)\nconst fadeAndSlide = FadeAndSlide\n</script>\n```\n\n### Customized usage\n\n#### Customizing the content with classes\n\nThe `contentClass` prop can be used to add classes to the modal content.\n\n```vue\n<template>\n <div>\n <button @click=\"open = true\">Open modal</button>\n <BaseModal\n :animation=\"fadeAndSlide\"\n :open=\"open\"\n @click:overlay=\"open = false\"\n referenceSelector=\".header\"\n contentClass=\"x-bg-neutral-75\"\n >\n <h1>Hello</h1>\n <p>The modal is working</p>\n <button @click=\"open = false\">Close modal</button>\n </BaseModal>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue'\nimport { BaseModal, FadeAndSlide } from '@empathyco/x-components'\nconst open = ref(false)\nconst fadeAndSlide = FadeAndSlide\n</script>\n```\n\n#### Customizing the overlay with classes\n\nThe `overlayClass` prop can be used to add classes to the modal overlay.\n\n```vue\n<template>\n <div>\n <button @click=\"open = true\">Open modal</button>\n <BaseModal\n :animation=\"fadeAndSlide\"\n :open=\"open\"\n @click:overlay=\"open = false\"\n referenceSelector=\".header\"\n overlayClass=\"x-bg-neutral-75\"\n >\n <h1>Hello</h1>\n <p>The modal is working</p>\n <button @click=\"open = false\">Close modal</button>\n </BaseModal>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue'\nimport { BaseModal, FadeAndSlide } from '@empathyco/x-components'\nconst open = ref(false)\nconst fadeAndSlide = FadeAndSlide\n</script>\n```\n\n## Vue Events\n\nA list of events that the component will emit:\n\n- `click:overlay`: the event is emitted after the user clicks any part out of the content but only\n if the modal is open. The event payload is the mouse event that triggers it.\n- `focusin:body`: the event is emitted after the user focus in any part out of the content but only\n if the modal is open. The event payload is the focus event that triggers it.\n</docs>\n"],"names":["NoAnimation"],"mappings":"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"}
1
+ {"version":3,"file":"base-modal2.vue.js","sources":["../../../../src/components/modals/base-modal.vue"],"sourcesContent":["<template>\n <div v-show=\"isWaitingForLeave || open\" ref=\"modalRef\" class=\"x-modal\" data-test=\"modal\">\n <component\n :is=\"animation\"\n @before-leave=\"isWaitingForLeave = true\"\n @after-leave=\"isWaitingForLeave = false\"\n >\n <div\n v-if=\"open\"\n ref=\"modalContentRef\"\n class=\"x-modal__content\"\n data-test=\"modal-content\"\n role=\"dialog\"\n :class=\"contentClass\"\n aria-label=\"Base modal content\"\n >\n <!-- @slot (Required) Modal container content -->\n <slot />\n </div>\n </component>\n <component :is=\"overlayAnimation\">\n <div\n v-if=\"open\"\n class=\"x-modal__overlay\"\n :class=\"overlayClass\"\n data-test=\"modal-overlay\"\n @click=\"emitOverlayClicked\"\n @keydown=\"emitOverlayClicked\"\n />\n </component>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { useDebounce } from '../../composables'\nimport { AnimationProp } from '../../types'\nimport { FOCUSABLE_SELECTORS, getTargetElement } from '../../utils'\nimport { Fade, NoAnimation } from '../animations'\n\n/**\n * Base component with no XPlugin dependencies that serves as a utility for constructing more\n * complex modals.\n *\n * @public\n */\nexport default defineComponent({\n name: 'BaseModal',\n props: {\n /** Determines if the modal is open or not. */\n open: {\n type: Boolean,\n required: true,\n },\n /**\n * Determines if the focused element changes to one inside the modal when it opens. Either the\n * first element with a positive tabindex or just the first focusable element.\n */\n focusOnOpen: {\n type: Boolean,\n default: true,\n },\n /**\n * The reference selector of a DOM element to use as reference to position the modal.\n * This selector can be an ID or a class, if it is a class, it will use the first\n * element that matches.\n */\n referenceSelector: String,\n /** Animation to use for opening/closing the modal.This animation only affects the content. */\n animation: {\n type: AnimationProp,\n default: () => NoAnimation,\n },\n /**\n * Animation to use for the overlay (backdrop) part of the modal. By default, it uses\n * a fade transition.\n */\n overlayAnimation: {\n type: AnimationProp,\n default: () => Fade,\n },\n /** Class inherited by content element. */\n contentClass: String,\n /** Class inherited by overlay element. */\n overlayClass: String,\n },\n emits: ['click:overlay', 'focusin:body'],\n setup(props, { emit }) {\n /** Reference to the modal element in the DOM. */\n const modalRef = ref<HTMLDivElement>()\n /** Reference to the modal content element in the DOM. */\n const modalContentRef = ref<HTMLDivElement>()\n\n /** The previous value of the body overflow style. */\n const previousBodyOverflow = ref('')\n /** The previous value of the HTML element overflow style. */\n const previousHTMLOverflow = ref('')\n /** Boolean to delay the leave animation until it has completed. */\n const isWaitingForLeave = ref(false)\n /** The reference element to use to find the modal's position. */\n let referenceElement: HTMLElement | undefined\n\n /** Disables the scroll of both the body and the window. */\n function disableScroll() {\n previousBodyOverflow.value = document.body.style.overflow\n previousHTMLOverflow.value = document.documentElement.style.overflow\n document.body.style.overflow = document.documentElement.style.overflow = 'hidden'\n }\n\n /** Restores the scroll of both the body and the window. */\n function enableScroll() {\n document.body.style.overflow = previousBodyOverflow.value\n document.documentElement.style.overflow = previousHTMLOverflow.value\n }\n\n /**\n * Emits the `click:overlay` event if the click has been triggered in the overlay layer.\n *\n * @param event - The click event.\n */\n function emitOverlayClicked(event: Event) {\n // eslint-disable-next-line vue/custom-event-name-casing\n emit('click:overlay', event)\n }\n\n /**\n * Emits the `focusin:body` event if a focus event has been triggered outside the modal.\n *\n * @param event - The focusin event.\n */\n function emitFocusInBody(event: FocusEvent) {\n if (!modalContentRef.value?.contains(getTargetElement(event))) {\n // eslint-disable-next-line vue/custom-event-name-casing\n emit('focusin:body', event)\n }\n }\n\n /**\n * Adds listeners to the body element ot detect if the modal should be closed.\n *\n * @remarks TODO find a better solution and remove the timeout\n * To avoid emit the focusin on opening X that provokes closing it immediately.\n * This is because this event was emitted after the open of main modal when the user clicks\n * on the customer website search box (focus event). This way we avoid add the listener before\n * the open and the avoid the event that provokes the close.\n */\n function addBodyListeners() {\n setTimeout(() => {\n document.body.addEventListener('focusin', emitFocusInBody)\n })\n }\n\n /** Removes the body listeners. */\n function removeBodyListeners() {\n document.body.removeEventListener('focusin', emitFocusInBody)\n }\n\n /**\n * Sets the focused element to the first element either the first element with a positive\n * tabindex or, if there isn't any, the first focusable element inside the modal.\n */\n function setFocus() {\n const candidates: HTMLElement[] = Array.from(\n modalContentRef.value?.querySelectorAll(FOCUSABLE_SELECTORS) ?? [],\n )\n const element = candidates.find(element => element.tabIndex) ?? candidates[0]\n element?.focus()\n }\n\n /**\n * Syncs the body to the open state of the modal, adding or removing styles and listeners.\n *\n * @remarks nextTick() to wait for `modalContentRef` to be updated to look for focusable\n * candidates inside.\n *\n * @param isOpen - True when the modal is opened.\n */\n async function syncBody(isOpen: boolean) {\n if (isOpen) {\n disableScroll()\n addBodyListeners()\n if (props.focusOnOpen) {\n await nextTick()\n setFocus()\n }\n } else {\n enableScroll()\n removeBodyListeners()\n }\n }\n\n /**\n * Updates the position of the modal setting the top of the element depending\n * on the selector. The modal will be placed under this selector.\n */\n const debouncedUpdatePosition = useDebounce(\n () => {\n const { height, y } = referenceElement?.getBoundingClientRect() ?? { height: 0, y: 0 }\n modalRef.value!.style.top = `${height + y}px`\n modalRef.value!.style.bottom = '0'\n modalRef.value!.style.height = 'auto'\n },\n 100,\n { leading: true },\n )\n\n let resizeObserver: ResizeObserver\n\n onMounted(() => {\n watch(() => props.open, syncBody)\n if (props.open) {\n syncBody(true)\n }\n\n resizeObserver = new ResizeObserver(debouncedUpdatePosition)\n\n watch(\n () => props.referenceSelector,\n () => {\n resizeObserver.disconnect()\n\n if (props.referenceSelector) {\n const element = document.querySelector(props.referenceSelector) as HTMLElement\n if (element) {\n referenceElement = element\n resizeObserver.observe(element)\n }\n } else {\n referenceElement = undefined\n debouncedUpdatePosition()\n }\n },\n { immediate: true },\n )\n })\n\n onBeforeUnmount(() => {\n if (props.open) {\n removeBodyListeners()\n enableScroll()\n }\n resizeObserver.disconnect()\n })\n\n return {\n emitOverlayClicked,\n isWaitingForLeave,\n modalContentRef,\n modalRef,\n }\n },\n})\n</script>\n\n<style lang=\"css\" scoped>\n.x-modal {\n position: fixed;\n top: 0;\n left: 0;\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n width: 100%;\n height: 100%;\n z-index: 1;\n}\n\n.x-modal__content {\n display: flex;\n flex-flow: column nowrap;\n z-index: 1;\n}\n\n.x-modal__overlay {\n width: 100%;\n height: 100%;\n position: absolute;\n background-color: rgb(0, 0, 0);\n opacity: 0.3;\n}\n</style>\n\n<docs lang=\"mdx\">\n## Examples\n\nThe `BaseModal` is a simple component that serves to create complex modals. Its open state has to be\npassed via prop. There is a prop, `referenceSelector`, used to place the modal under some element\ninstead of set the top of the element directly. It also accepts an animation to use for opening &\nclosing.\n\nIt emits a `click:overlay` event when any part out of the content is clicked, but only if the modal\nis open.\n\n```vue\n<template>\n <div>\n <button @click=\"open = true\">Open modal</button>\n <BaseModal\n :animation=\"fadeAndSlide\"\n :open=\"open\"\n @click:overlay=\"open = false\"\n referenceSelector=\".header\"\n >\n <h1>Hello</h1>\n <p>The modal is working</p>\n <button @click=\"open = false\">Close modal</button>\n </BaseModal>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue'\nimport { BaseModal, FadeAndSlide } from '@empathyco/x-components'\nconst open = ref(false)\nconst fadeAndSlide = FadeAndSlide\n</script>\n```\n\n### Customized usage\n\n#### Customizing the content with classes\n\nThe `contentClass` prop can be used to add classes to the modal content.\n\n```vue\n<template>\n <div>\n <button @click=\"open = true\">Open modal</button>\n <BaseModal\n :animation=\"fadeAndSlide\"\n :open=\"open\"\n @click:overlay=\"open = false\"\n referenceSelector=\".header\"\n contentClass=\"x-bg-neutral-75\"\n >\n <h1>Hello</h1>\n <p>The modal is working</p>\n <button @click=\"open = false\">Close modal</button>\n </BaseModal>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue'\nimport { BaseModal, FadeAndSlide } from '@empathyco/x-components'\nconst open = ref(false)\nconst fadeAndSlide = FadeAndSlide\n</script>\n```\n\n#### Customizing the overlay with classes\n\nThe `overlayClass` prop can be used to add classes to the modal overlay.\n\n```vue\n<template>\n <div>\n <button @click=\"open = true\">Open modal</button>\n <BaseModal\n :animation=\"fadeAndSlide\"\n :open=\"open\"\n @click:overlay=\"open = false\"\n referenceSelector=\".header\"\n overlayClass=\"x-bg-neutral-75\"\n >\n <h1>Hello</h1>\n <p>The modal is working</p>\n <button @click=\"open = false\">Close modal</button>\n </BaseModal>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue'\nimport { BaseModal, FadeAndSlide } from '@empathyco/x-components'\nconst open = ref(false)\nconst fadeAndSlide = FadeAndSlide\n</script>\n```\n\n## Vue Events\n\nA list of events that the component will emit:\n\n- `click:overlay`: the event is emitted after the user clicks any part out of the content but only\n if the modal is open. The event payload is the mouse event that triggers it.\n- `focusin:body`: the event is emitted after the user focus in any part out of the content but only\n if the modal is open. The event payload is the focus event that triggers it.\n</docs>\n"],"names":["NoAnimation"],"mappings":"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"}
@@ -4,4 +4,4 @@ var css = ".x-modal[data-v-61b0d59b]{align-items:flex-start;display:flex;height:
4
4
  injectCss(css);
5
5
 
6
6
  export { css };
7
- //# sourceMappingURL=base-modal.vue3.js.map
7
+ //# sourceMappingURL=base-modal3.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-modal3.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -1,4 +1,4 @@
1
- import _sfc_main from './close-main-modal.vue2.js';
1
+ import _sfc_main from './close-main-modal2.vue.js';
2
2
  import { resolveComponent, openBlock, createBlock, withCtx, renderSlot } from 'vue';
3
3
  import _export_sfc from '../../_virtual/_plugin-vue_export-helper.js';
4
4
 
@@ -24,4 +24,4 @@ var _sfc_main = defineComponent({
24
24
  });
25
25
 
26
26
  export { _sfc_main as default };
27
- //# sourceMappingURL=close-main-modal.vue2.js.map
27
+ //# sourceMappingURL=close-main-modal2.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"close-main-modal.vue2.js","sources":["../../../../src/components/modals/close-main-modal.vue"],"sourcesContent":["<template>\n <BaseEventsModalClose\n class=\"x-close-main-modal\"\n data-test=\"close-main-modal\"\n :closing-event=\"closingEvent\"\n >\n <slot />\n </BaseEventsModalClose>\n</template>\n\n<script lang=\"ts\">\nimport type { XEvent } from '../../wiring/events.types'\nimport { defineComponent } from 'vue'\nimport BaseEventsModalClose from './base-events-modal-close.vue'\n\n/**\n * Button to close the {@link MainModal}.\n *\n * @public\n */\nexport default defineComponent({\n components: {\n BaseEventsModalClose,\n },\n setup() {\n /**\n * Event to be emitted to close the {@link MainModal}.\n *\n * @internal\n */\n const closingEvent: XEvent = 'UserClickedCloseX'\n\n return {\n closingEvent,\n }\n },\n})\n</script>\n\n<docs lang=\"mdx\">\n## Events\n\nThis component emits the following events:\n\n- [`UserClickedCloseX`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts)\n\n## Example\n\nA basic example of how the close main modal button works:\n\n```vue live\n<template>\n <OpenMainModal>Open X</OpenMainModal>\n <MainModal>\n <CloseMainModal>Close X</CloseMainModal>\n </MainModal>\n</template>\n\n<script setup>\nimport { MainModal, CloseMainModal, OpenMainModal } from '@empathyco/x-components'\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;AAeA;;;;AAIE;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,UAAU,EAAE;QACV,oBAAoB;AACrB,KAAA;IACD,KAAK,GAAA;AACH;;;;AAIE;QACF,MAAM,YAAY,GAAW,mBAAkB;QAE/C,OAAO;YACL,YAAY;SACd;IACF,CAAC;AACF,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"close-main-modal2.vue.js","sources":["../../../../src/components/modals/close-main-modal.vue"],"sourcesContent":["<template>\n <BaseEventsModalClose\n class=\"x-close-main-modal\"\n data-test=\"close-main-modal\"\n :closing-event=\"closingEvent\"\n >\n <slot />\n </BaseEventsModalClose>\n</template>\n\n<script lang=\"ts\">\nimport type { XEvent } from '../../wiring/events.types'\nimport { defineComponent } from 'vue'\nimport BaseEventsModalClose from './base-events-modal-close.vue'\n\n/**\n * Button to close the {@link MainModal}.\n *\n * @public\n */\nexport default defineComponent({\n components: {\n BaseEventsModalClose,\n },\n setup() {\n /**\n * Event to be emitted to close the {@link MainModal}.\n *\n * @internal\n */\n const closingEvent: XEvent = 'UserClickedCloseX'\n\n return {\n closingEvent,\n }\n },\n})\n</script>\n\n<docs lang=\"mdx\">\n## Events\n\nThis component emits the following events:\n\n- [`UserClickedCloseX`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts)\n\n## Example\n\nA basic example of how the close main modal button works:\n\n```vue live\n<template>\n <OpenMainModal>Open X</OpenMainModal>\n <MainModal>\n <CloseMainModal>Close X</CloseMainModal>\n </MainModal>\n</template>\n\n<script setup>\nimport { MainModal, CloseMainModal, OpenMainModal } from '@empathyco/x-components'\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;AAeA;;;;AAIE;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,UAAU,EAAE;QACV,oBAAoB;AACrB,KAAA;IACD,KAAK,GAAA;AACH;;;;AAIE;QACF,MAAM,YAAY,GAAW,mBAAkB;QAE/C,OAAO;YACL,YAAY;SACd;IACF,CAAC;AACF,CAAA,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import _sfc_main from './main-modal.vue2.js';
1
+ import _sfc_main from './main-modal2.vue.js';
2
2
  import { resolveComponent, openBlock, createBlock, withCtx, renderSlot } from 'vue';
3
3
  import _export_sfc from '../../_virtual/_plugin-vue_export-helper.js';
4
4
 
@@ -53,4 +53,4 @@ var _sfc_main = defineComponent({
53
53
  });
54
54
 
55
55
  export { _sfc_main as default };
56
- //# sourceMappingURL=main-modal.vue2.js.map
56
+ //# sourceMappingURL=main-modal2.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main-modal.vue2.js","sources":["../../../../src/components/modals/main-modal.vue"],"sourcesContent":["<template>\n <BaseEventsModal\n class=\"x-main-modal\"\n data-test=\"main-modal\"\n :events-to-open-modal=\"openEvents\"\n :events-to-close-modal=\"closeEvents\"\n :body-click-event=\"outOfModalClickEvent\"\n :animation=\"animation\"\n :focus-on-open=\"focusOnOpen\"\n >\n <slot />\n </BaseEventsModal>\n</template>\n\n<script lang=\"ts\">\nimport type { PropType } from 'vue'\nimport type { XEvent } from '../../wiring/events.types'\nimport { defineComponent } from 'vue'\nimport { AnimationProp } from '../../types/animation-prop'\nimport BaseEventsModal from './base-events-modal.vue'\n\n/**\n * A specialised version of a modal component, made to contain a full search application.\n *\n * @public\n */\nexport default defineComponent({\n components: {\n BaseEventsModal,\n },\n props: {\n /**\n * Animation to use for opening/closing the modal.\n *\n * @public\n */\n animation: {\n type: AnimationProp,\n },\n /**\n * Events to listen for closing the main modal.\n */\n closeEvents: {\n type: Array as PropType<XEvent[]>,\n default: () => ['UserClickedCloseX', 'UserClickedOutOfMainModal'],\n },\n /**\n * Determines if the focused element changes to one inside the modal when it opens. Either the\n * first element with a positive tabindex or just the first focusable element.\n */\n focusOnOpen: {\n type: Boolean,\n default: false,\n },\n /**\n * Events to listen for opening the main modal.\n */\n openEvents: {\n type: Array as PropType<XEvent[]>,\n default: () => ['UserClickedOpenX', 'UserOpenXProgrammatically'],\n },\n /**\n * Event to be emitted by the modal when clicked out of its content.\n */\n outOfModalClickEvent: {\n type: (String as PropType<XEvent>) || null,\n default: 'UserClickedOutOfMainModal',\n },\n },\n})\n</script>\n\n<docs lang=\"mdx\">\n## Events\n\nThis component emits the following events:\n\n- [`UserClickedOutOfMainModal`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts)\n\n## Examples\n\nA basic example of how the main modal works:\n\n```vue live\n<template>\n <OpenMainModal>Open X</OpenMainModal>\n <MainModal>\n <CloseMainModal>Close X</CloseMainModal>\n </MainModal>\n</template>\n\n<script setup>\nimport { MainModal, CloseMainModal, OpenMainModal } from '@empathyco/x-components'\n</script>\n```\n\n### Customizing the content with classes\n\nThe `contentClass` prop can be used to add classes to the modal content.\n\n```vue live\n<template>\n <OpenMainModal>Open X</OpenMainModal>\n <MainModal contentClass=\"x-bg-neutral-75\">\n <CloseMainModal>Close X</CloseMainModal>\n </MainModal>\n</template>\n\n<script setup>\nimport { MainModal, CloseMainModal, OpenMainModal } from '@empathyco/x-components'\n</script>\n```\n\n### Customizing the modal events\n\nThe modal events can be customized by changing its props values:\n\n- To add or subtract events to open or close the modal,\n- To modify or remove the default [`UserClickedOutOfMainModal`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts) that the modal emits.\n\nIn this example, we are changing the `openEvents` prop to add another event, and removing the event\nthat the modal would emit when the user clicks out of the modal.\n\n```vue live\n<template>\n <OpenMainModal>Open X</OpenMainModal>\n <MainModal\n :openEvents=\"['UserClickedOpenX', 'UserOpenXProgrammatically', 'MyCustomXEvent']\"\n :outOfModalClickEvent=\"null\"\n >\n <CloseMainModal>Close X</CloseMainModal>\n </MainModal>\n</template>\n\n<script setup>\nimport { MainModal, CloseMainModal, OpenMainModal } from '@empathyco/x-components'\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;;AAqBA;;;;AAIE;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,UAAU,EAAE;QACV,eAAe;AAChB,KAAA;AACD,IAAA,KAAK,EAAE;AACL;;;;AAIE;AACF,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,aAAa;AACpB,SAAA;AACD;;AAEE;AACF,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,EAAE,KAA2B;YACjC,OAAO,EAAE,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;AAClE,SAAA;AACD;;;AAGE;AACF,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE,KAAK;AACf,SAAA;AACD;;AAEE;AACF,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,KAA2B;YACjC,OAAO,EAAE,MAAM,CAAC,kBAAkB,EAAE,2BAA2B,CAAC;AACjE,SAAA;AACD;;AAEE;AACF,QAAA,oBAAoB,EAAE;YACpB,IAAI,EAAG,UAA+B,IAAI;AAC1C,YAAA,OAAO,EAAE,2BAA2B;AACrC,SAAA;AACF,KAAA;AACF,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"main-modal2.vue.js","sources":["../../../../src/components/modals/main-modal.vue"],"sourcesContent":["<template>\n <BaseEventsModal\n class=\"x-main-modal\"\n data-test=\"main-modal\"\n :events-to-open-modal=\"openEvents\"\n :events-to-close-modal=\"closeEvents\"\n :body-click-event=\"outOfModalClickEvent\"\n :animation=\"animation\"\n :focus-on-open=\"focusOnOpen\"\n >\n <slot />\n </BaseEventsModal>\n</template>\n\n<script lang=\"ts\">\nimport type { PropType } from 'vue'\nimport type { XEvent } from '../../wiring/events.types'\nimport { defineComponent } from 'vue'\nimport { AnimationProp } from '../../types/animation-prop'\nimport BaseEventsModal from './base-events-modal.vue'\n\n/**\n * A specialised version of a modal component, made to contain a full search application.\n *\n * @public\n */\nexport default defineComponent({\n components: {\n BaseEventsModal,\n },\n props: {\n /**\n * Animation to use for opening/closing the modal.\n *\n * @public\n */\n animation: {\n type: AnimationProp,\n },\n /**\n * Events to listen for closing the main modal.\n */\n closeEvents: {\n type: Array as PropType<XEvent[]>,\n default: () => ['UserClickedCloseX', 'UserClickedOutOfMainModal'],\n },\n /**\n * Determines if the focused element changes to one inside the modal when it opens. Either the\n * first element with a positive tabindex or just the first focusable element.\n */\n focusOnOpen: {\n type: Boolean,\n default: false,\n },\n /**\n * Events to listen for opening the main modal.\n */\n openEvents: {\n type: Array as PropType<XEvent[]>,\n default: () => ['UserClickedOpenX', 'UserOpenXProgrammatically'],\n },\n /**\n * Event to be emitted by the modal when clicked out of its content.\n */\n outOfModalClickEvent: {\n type: (String as PropType<XEvent>) || null,\n default: 'UserClickedOutOfMainModal',\n },\n },\n})\n</script>\n\n<docs lang=\"mdx\">\n## Events\n\nThis component emits the following events:\n\n- [`UserClickedOutOfMainModal`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts)\n\n## Examples\n\nA basic example of how the main modal works:\n\n```vue live\n<template>\n <OpenMainModal>Open X</OpenMainModal>\n <MainModal>\n <CloseMainModal>Close X</CloseMainModal>\n </MainModal>\n</template>\n\n<script setup>\nimport { MainModal, CloseMainModal, OpenMainModal } from '@empathyco/x-components'\n</script>\n```\n\n### Customizing the content with classes\n\nThe `contentClass` prop can be used to add classes to the modal content.\n\n```vue live\n<template>\n <OpenMainModal>Open X</OpenMainModal>\n <MainModal contentClass=\"x-bg-neutral-75\">\n <CloseMainModal>Close X</CloseMainModal>\n </MainModal>\n</template>\n\n<script setup>\nimport { MainModal, CloseMainModal, OpenMainModal } from '@empathyco/x-components'\n</script>\n```\n\n### Customizing the modal events\n\nThe modal events can be customized by changing its props values:\n\n- To add or subtract events to open or close the modal,\n- To modify or remove the default [`UserClickedOutOfMainModal`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts) that the modal emits.\n\nIn this example, we are changing the `openEvents` prop to add another event, and removing the event\nthat the modal would emit when the user clicks out of the modal.\n\n```vue live\n<template>\n <OpenMainModal>Open X</OpenMainModal>\n <MainModal\n :openEvents=\"['UserClickedOpenX', 'UserOpenXProgrammatically', 'MyCustomXEvent']\"\n :outOfModalClickEvent=\"null\"\n >\n <CloseMainModal>Close X</CloseMainModal>\n </MainModal>\n</template>\n\n<script setup>\nimport { MainModal, CloseMainModal, OpenMainModal } from '@empathyco/x-components'\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;;AAqBA;;;;AAIE;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,UAAU,EAAE;QACV,eAAe;AAChB,KAAA;AACD,IAAA,KAAK,EAAE;AACL;;;;AAIE;AACF,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,aAAa;AACpB,SAAA;AACD;;AAEE;AACF,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,EAAE,KAA2B;YACjC,OAAO,EAAE,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;AAClE,SAAA;AACD;;;AAGE;AACF,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE,KAAK;AACf,SAAA;AACD;;AAEE;AACF,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,KAA2B;YACjC,OAAO,EAAE,MAAM,CAAC,kBAAkB,EAAE,2BAA2B,CAAC;AACjE,SAAA;AACD;;AAEE;AACF,QAAA,oBAAoB,EAAE;YACpB,IAAI,EAAG,UAA+B,IAAI;AAC1C,YAAA,OAAO,EAAE,2BAA2B;AACrC,SAAA;AACF,KAAA;AACF,CAAA,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import _sfc_main from './open-main-modal.vue2.js';
1
+ import _sfc_main from './open-main-modal2.vue.js';
2
2
  import { resolveComponent, openBlock, createBlock, withCtx, renderSlot } from 'vue';
3
3
  import _export_sfc from '../../_virtual/_plugin-vue_export-helper.js';
4
4
 
@@ -24,4 +24,4 @@ var _sfc_main = defineComponent({
24
24
  });
25
25
 
26
26
  export { _sfc_main as default };
27
- //# sourceMappingURL=open-main-modal.vue2.js.map
27
+ //# sourceMappingURL=open-main-modal2.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"open-main-modal.vue2.js","sources":["../../../../src/components/modals/open-main-modal.vue"],"sourcesContent":["<template>\n <BaseEventsModalOpen\n class=\"x-open-main-modal\"\n data-test=\"open-main-modal\"\n :opening-event=\"openingEvent\"\n >\n <slot />\n </BaseEventsModalOpen>\n</template>\n\n<script lang=\"ts\">\nimport type { XEvent } from '../../wiring/events.types'\nimport { defineComponent } from 'vue'\nimport BaseEventsModalOpen from './base-events-modal-open.vue'\n\n/**\n * Button to open the {@link MainModal}.\n *\n * @public\n */\nexport default defineComponent({\n components: {\n BaseEventsModalOpen,\n },\n setup() {\n /**\n * Event to be emitted to open the {@link MainModal}.\n *\n * @internal\n */\n const openingEvent: XEvent = 'UserClickedOpenX'\n\n return {\n openingEvent,\n }\n },\n})\n</script>\n\n<docs lang=\"mdx\">\n## Events\n\nThis component emits the following events:\n\n- [`UserClickedOpenX`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts)\n\n## Example\n\nA basic example of how the open main modal button works:\n\n```vue live\n<template>\n <OpenMainModal>Open X</OpenMainModal>\n <MainModal>\n <CloseMainModal>Close X</CloseMainModal>\n </MainModal>\n</template>\n\n<script setup>\nimport { MainModal, CloseMainModal, OpenMainModal } from '@empathyco/x-components'\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;AAeA;;;;AAIE;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,UAAU,EAAE;QACV,mBAAmB;AACpB,KAAA;IACD,KAAK,GAAA;AACH;;;;AAIE;QACF,MAAM,YAAY,GAAW,kBAAiB;QAE9C,OAAO;YACL,YAAY;SACd;IACF,CAAC;AACF,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"open-main-modal2.vue.js","sources":["../../../../src/components/modals/open-main-modal.vue"],"sourcesContent":["<template>\n <BaseEventsModalOpen\n class=\"x-open-main-modal\"\n data-test=\"open-main-modal\"\n :opening-event=\"openingEvent\"\n >\n <slot />\n </BaseEventsModalOpen>\n</template>\n\n<script lang=\"ts\">\nimport type { XEvent } from '../../wiring/events.types'\nimport { defineComponent } from 'vue'\nimport BaseEventsModalOpen from './base-events-modal-open.vue'\n\n/**\n * Button to open the {@link MainModal}.\n *\n * @public\n */\nexport default defineComponent({\n components: {\n BaseEventsModalOpen,\n },\n setup() {\n /**\n * Event to be emitted to open the {@link MainModal}.\n *\n * @internal\n */\n const openingEvent: XEvent = 'UserClickedOpenX'\n\n return {\n openingEvent,\n }\n },\n})\n</script>\n\n<docs lang=\"mdx\">\n## Events\n\nThis component emits the following events:\n\n- [`UserClickedOpenX`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts)\n\n## Example\n\nA basic example of how the open main modal button works:\n\n```vue live\n<template>\n <OpenMainModal>Open X</OpenMainModal>\n <MainModal>\n <CloseMainModal>Close X</CloseMainModal>\n </MainModal>\n</template>\n\n<script setup>\nimport { MainModal, CloseMainModal, OpenMainModal } from '@empathyco/x-components'\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;AAeA;;;;AAIE;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,UAAU,EAAE;QACV,mBAAmB;AACpB,KAAA;IACD,KAAK,GAAA;AACH;;;;AAIE;QACF,MAAM,YAAY,GAAW,kBAAiB;QAE9C,OAAO;YACL,YAAY;SACd;IACF,CAAC;AACF,CAAA,CAAA;;;;"}
@@ -1,6 +1,6 @@
1
- import _sfc_main from './page-loader-button.vue2.js';
1
+ import _sfc_main from './page-loader-button2.vue.js';
2
2
  import { resolveComponent, openBlock, createElementBlock, renderSlot, normalizeProps, guardReactiveProps, createElementVNode, toDisplayString, createVNode, normalizeClass, withCtx, createTextVNode } from 'vue';
3
- import './page-loader-button.vue3.js';
3
+ import './page-loader-button3.vue.js';
4
4
  import _export_sfc from '../_virtual/_plugin-vue_export-helper.js';
5
5
 
6
6
  const _hoisted_1 = {
@@ -60,4 +60,4 @@ var _sfc_main = defineComponent({
60
60
  });
61
61
 
62
62
  export { _sfc_main as default };
63
- //# sourceMappingURL=page-loader-button.vue2.js.map
63
+ //# sourceMappingURL=page-loader-button2.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-loader-button.vue2.js","sources":["../../../src/components/page-loader-button.vue"],"sourcesContent":["<template>\n <div class=\"x-page-loader\" data-test=\"page-loader\">\n <!--\n @slot default\n @binding {number} resultsLength - The search result's length\n @binding {number} totalResults - The totalResults of a searched query\n -->\n <slot v-bind=\"{ resultsLength, totalResults }\">\n <!-- @slot Rendered count with a text and the number of results displayed & remaining. -->\n <slot name=\"textContent\" :results-length=\"resultsLength\" :total-results=\"totalResults\">\n <p class=\"x-page-loader__text-content\" data-test=\"text-content\">\n You are seeing {{ resultsLength }} of {{ totalResults }} results\n </p>\n </slot>\n <BaseEventButton\n class=\"xds:button\"\n :class=\"buttonClasses\"\n :events=\"events\"\n data-test=\"load-content\"\n aria-label=\"Load\"\n >\n <!-- @slot Button content with a text, an icon or both -->\n <slot name=\"buttonContent\">Load</slot>\n </BaseEventButton>\n </slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport type { PropType } from 'vue'\nimport type { VueCSSClasses } from '../utils/types'\nimport type { XEventsTypes } from '../wiring'\nimport { computed, defineComponent } from 'vue'\nimport { use$x } from '../composables'\nimport BaseEventButton from './base-event-button.vue'\n\n/**\n * Component that renders a text with the number of rendered results and\n * the remaining ones and a `<BaseEventButton>` with the logic of emitting\n * the event \"UserReachedResultsListEnd\" to load more results on click.\n *\n * @public\n */\nexport default defineComponent({\n name: 'PageLoaderButton',\n components: { BaseEventButton },\n props: {\n /**\n * CSS classes to customize the loader button.\n *\n * @internal\n */\n buttonClasses: {\n type: String as PropType<VueCSSClasses>,\n default: '',\n },\n /**\n * Events to customize what will be emitted by the loader button.\n *\n * @internal\n */\n buttonEvents: {\n type: Object as PropType<Partial<XEventsTypes>>,\n },\n },\n setup(props) {\n const $x = use$x()\n const resultsLength = computed(() => $x.results.length)\n const totalResults = computed(() => $x.totalResults)\n\n /**\n * The events that will be emitted when clicking on the loader button.\n *\n * @returns The {@link XEvent} to emit.\n * @public\n */\n const events = computed<Partial<XEventsTypes>>(() => {\n return { UserReachedResultsListEnd: undefined, ...props.buttonEvents }\n })\n\n return {\n resultsLength,\n totalResults,\n events,\n }\n },\n})\n</script>\n\n<style scoped>\n.x-page-loader {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 32px 0;\n}\n\n.x-page-loader__text-content {\n padding: 16px 0;\n}\n</style>\n\n<docs lang=\"mdx\">\n## Events\n\nThis component emits the \"UserReachedResultsListEnd\" event by default. This can be changed using the\nbuttonEvents prop:\n\n```vue live\n<template>\n <PageLoaderButton :buttonEvents=\"{ UserClickedCloseX: undefined }\" />\n</template>\n\n<script>\nimport { PageLoaderButton } from '@empathyco/x-components'\n\nexport default {\n name: 'PageLoaderButtonDemo',\n components: {\n PageLoaderButton,\n },\n}\n</script>\n```\n\n## See it in action\n\nHere you have a basic example of how the page loader component is rendered.\n\n```vue live\n<template>\n <PageLoaderButton />\n</template>\n\n<script>\nimport { PageLoaderButton } from '@empathyco/x-components'\n\nexport default {\n name: 'PageLoaderButtonDemo',\n components: {\n PageLoaderButton,\n },\n}\n</script>\n```\n\n### Customise the default layout\n\nThis component has a default slot which allows to customise the entire layout.\n\n```vue live\n<template>\n <PageLoaderButton>\n <template #default=\"{ resultsLength, totalResults }\">\n <div class=\"x-flex x-flex-col\">\n <div class=\"x-flex x-gap-4 x-text\">\n <span class=\"x-text-accent-50 x-font-bold\">{{ resultsLength }}</span>\n <span>of</span>\n <span class=\"x-text-accent-50\">{{ totalResults }}</span>\n </div>\n <button\n @click=\"$x.emit('UserReachedResultsListEnd', undefined)\"\n class=\"x-button x-button-ghost\"\n >\n Load more\n </button>\n </div>\n </template>\n </PageLoaderButton>\n</template>\n\n<script>\nimport { PageLoaderButton } from '@empathyco/x-components'\n\nexport default {\n name: 'PageLoaderButtonDemo',\n components: {\n PageLoaderButton,\n },\n}\n</script>\n```\n\n### Customise the slots\n\nThis component allows to customise both the textContent and the buttonContent slots. The\ntextContent's slot layout can be replaced entirely, while the buttonContent's slot enables wrapping\ncontent inside and customizing its style using the buttonClasses prop.\n\n```vue live\n<template>\n <PageLoaderButton :buttonClasses=\"buttonClasses\">\n <template #textContent=\"{ resultsLength, totalResults }\">\n <div class=\"x-flex x-gap-4 x-text\">\n <span class=\"x-text-accent-50 x-font-bold\">{{ resultsLength }}</span>\n <span>of</span>\n <span class=\"x-text-accent-50\">{{ totalResults }}</span>\n </div>\n </template>\n <template #buttonContent>Load more results</template>\n </PageLoaderButton>\n</template>\n\n<script>\nimport { PageLoaderButton } from '@empathyco/x-components'\n\nexport default {\n name: 'PageLoaderButtonDemo',\n components: {\n PageLoaderButton,\n },\n data() {\n return {\n buttonClasses: 'x-rounded-full',\n }\n },\n}\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;;;;;;;;;AAoCA;;;;;;AAME;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,IAAI,EAAE,kBAAkB;IACxB,UAAU,EAAE,EAAE,eAAc,EAAG;AAC/B,IAAA,KAAK,EAAE;AACL;;;;AAIE;AACF,QAAA,aAAa,EAAE;AACb,YAAA,IAAI,EAAE,MAAiC;AACvC,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA;AACD;;;;AAIE;AACF,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,MAAyC;AAChD,SAAA;AACF,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAA;AACT,QAAA,MAAM,EAAC,GAAI,KAAK,EAAC;AACjB,QAAA,MAAM,gBAAgB,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAA;QACtD,MAAM,YAAW,GAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,YAAY,CAAA;AAEnD;;;;;AAKE;AACF,QAAA,MAAM,MAAK,GAAI,QAAQ,CAAwB,MAAI;YACjD,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,YAAW,EAAE;AACvE,QAAA,CAAC,CAAA;QAED,OAAO;YACL,aAAa;YACb,YAAY;YACZ,MAAM;SACR;IACF,CAAC;AACF,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"page-loader-button2.vue.js","sources":["../../../src/components/page-loader-button.vue"],"sourcesContent":["<template>\n <div class=\"x-page-loader\" data-test=\"page-loader\">\n <!--\n @slot default\n @binding {number} resultsLength - The search result's length\n @binding {number} totalResults - The totalResults of a searched query\n -->\n <slot v-bind=\"{ resultsLength, totalResults }\">\n <!-- @slot Rendered count with a text and the number of results displayed & remaining. -->\n <slot name=\"textContent\" :results-length=\"resultsLength\" :total-results=\"totalResults\">\n <p class=\"x-page-loader__text-content\" data-test=\"text-content\">\n You are seeing {{ resultsLength }} of {{ totalResults }} results\n </p>\n </slot>\n <BaseEventButton\n class=\"xds:button\"\n :class=\"buttonClasses\"\n :events=\"events\"\n data-test=\"load-content\"\n aria-label=\"Load\"\n >\n <!-- @slot Button content with a text, an icon or both -->\n <slot name=\"buttonContent\">Load</slot>\n </BaseEventButton>\n </slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport type { PropType } from 'vue'\nimport type { VueCSSClasses } from '../utils/types'\nimport type { XEventsTypes } from '../wiring'\nimport { computed, defineComponent } from 'vue'\nimport { use$x } from '../composables'\nimport BaseEventButton from './base-event-button.vue'\n\n/**\n * Component that renders a text with the number of rendered results and\n * the remaining ones and a `<BaseEventButton>` with the logic of emitting\n * the event \"UserReachedResultsListEnd\" to load more results on click.\n *\n * @public\n */\nexport default defineComponent({\n name: 'PageLoaderButton',\n components: { BaseEventButton },\n props: {\n /**\n * CSS classes to customize the loader button.\n *\n * @internal\n */\n buttonClasses: {\n type: String as PropType<VueCSSClasses>,\n default: '',\n },\n /**\n * Events to customize what will be emitted by the loader button.\n *\n * @internal\n */\n buttonEvents: {\n type: Object as PropType<Partial<XEventsTypes>>,\n },\n },\n setup(props) {\n const $x = use$x()\n const resultsLength = computed(() => $x.results.length)\n const totalResults = computed(() => $x.totalResults)\n\n /**\n * The events that will be emitted when clicking on the loader button.\n *\n * @returns The {@link XEvent} to emit.\n * @public\n */\n const events = computed<Partial<XEventsTypes>>(() => {\n return { UserReachedResultsListEnd: undefined, ...props.buttonEvents }\n })\n\n return {\n resultsLength,\n totalResults,\n events,\n }\n },\n})\n</script>\n\n<style scoped>\n.x-page-loader {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 32px 0;\n}\n\n.x-page-loader__text-content {\n padding: 16px 0;\n}\n</style>\n\n<docs lang=\"mdx\">\n## Events\n\nThis component emits the \"UserReachedResultsListEnd\" event by default. This can be changed using the\nbuttonEvents prop:\n\n```vue live\n<template>\n <PageLoaderButton :buttonEvents=\"{ UserClickedCloseX: undefined }\" />\n</template>\n\n<script>\nimport { PageLoaderButton } from '@empathyco/x-components'\n\nexport default {\n name: 'PageLoaderButtonDemo',\n components: {\n PageLoaderButton,\n },\n}\n</script>\n```\n\n## See it in action\n\nHere you have a basic example of how the page loader component is rendered.\n\n```vue live\n<template>\n <PageLoaderButton />\n</template>\n\n<script>\nimport { PageLoaderButton } from '@empathyco/x-components'\n\nexport default {\n name: 'PageLoaderButtonDemo',\n components: {\n PageLoaderButton,\n },\n}\n</script>\n```\n\n### Customise the default layout\n\nThis component has a default slot which allows to customise the entire layout.\n\n```vue live\n<template>\n <PageLoaderButton>\n <template #default=\"{ resultsLength, totalResults }\">\n <div class=\"x-flex x-flex-col\">\n <div class=\"x-flex x-gap-4 x-text\">\n <span class=\"x-text-accent-50 x-font-bold\">{{ resultsLength }}</span>\n <span>of</span>\n <span class=\"x-text-accent-50\">{{ totalResults }}</span>\n </div>\n <button\n @click=\"$x.emit('UserReachedResultsListEnd', undefined)\"\n class=\"x-button x-button-ghost\"\n >\n Load more\n </button>\n </div>\n </template>\n </PageLoaderButton>\n</template>\n\n<script>\nimport { PageLoaderButton } from '@empathyco/x-components'\n\nexport default {\n name: 'PageLoaderButtonDemo',\n components: {\n PageLoaderButton,\n },\n}\n</script>\n```\n\n### Customise the slots\n\nThis component allows to customise both the textContent and the buttonContent slots. The\ntextContent's slot layout can be replaced entirely, while the buttonContent's slot enables wrapping\ncontent inside and customizing its style using the buttonClasses prop.\n\n```vue live\n<template>\n <PageLoaderButton :buttonClasses=\"buttonClasses\">\n <template #textContent=\"{ resultsLength, totalResults }\">\n <div class=\"x-flex x-gap-4 x-text\">\n <span class=\"x-text-accent-50 x-font-bold\">{{ resultsLength }}</span>\n <span>of</span>\n <span class=\"x-text-accent-50\">{{ totalResults }}</span>\n </div>\n </template>\n <template #buttonContent>Load more results</template>\n </PageLoaderButton>\n</template>\n\n<script>\nimport { PageLoaderButton } from '@empathyco/x-components'\n\nexport default {\n name: 'PageLoaderButtonDemo',\n components: {\n PageLoaderButton,\n },\n data() {\n return {\n buttonClasses: 'x-rounded-full',\n }\n },\n}\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;;;;;;;;;AAoCA;;;;;;AAME;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,IAAI,EAAE,kBAAkB;IACxB,UAAU,EAAE,EAAE,eAAc,EAAG;AAC/B,IAAA,KAAK,EAAE;AACL;;;;AAIE;AACF,QAAA,aAAa,EAAE;AACb,YAAA,IAAI,EAAE,MAAiC;AACvC,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA;AACD;;;;AAIE;AACF,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,MAAyC;AAChD,SAAA;AACF,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAA;AACT,QAAA,MAAM,EAAC,GAAI,KAAK,EAAC;AACjB,QAAA,MAAM,gBAAgB,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAA;QACtD,MAAM,YAAW,GAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,YAAY,CAAA;AAEnD;;;;;AAKE;AACF,QAAA,MAAM,MAAK,GAAI,QAAQ,CAAwB,MAAI;YACjD,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,YAAW,EAAE;AACvE,QAAA,CAAC,CAAA;QAED,OAAO;YACL,aAAa;YACb,YAAY;YACZ,MAAM;SACR;IACF,CAAC;AACF,CAAA,CAAA;;;;"}
@@ -4,4 +4,4 @@ var css = ".x-page-loader[data-v-1e62f4ee]{align-items:center;display:flex;flex-
4
4
  injectCss(css);
5
5
 
6
6
  export { css };
7
- //# sourceMappingURL=page-loader-button.vue3.js.map
7
+ //# sourceMappingURL=page-loader-button3.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-loader-button3.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -1,6 +1,6 @@
1
- import _sfc_main from './page-selector.vue2.js';
1
+ import _sfc_main from './page-selector2.vue.js';
2
2
  import { openBlock, createElementBlock, createElementVNode, normalizeClass, renderSlot, createTextVNode, Fragment, renderList, toDisplayString, createCommentVNode } from 'vue';
3
- import './page-selector.vue3.js';
3
+ import './page-selector3.vue.js';
4
4
  import _export_sfc from '../_virtual/_plugin-vue_export-helper.js';
5
5
 
6
6
  const _hoisted_1 = {
@@ -120,4 +120,4 @@ var _sfc_main = defineComponent({
120
120
  });
121
121
 
122
122
  export { _sfc_main as default };
123
- //# sourceMappingURL=page-selector.vue2.js.map
123
+ //# sourceMappingURL=page-selector2.vue.js.map