@empathyco/x-components 6.0.0-alpha.6 → 6.0.0-alpha.61

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 (833) hide show
  1. package/CHANGELOG.md +531 -0
  2. package/core/index.js +9 -1
  3. package/core/index.js.map +1 -1
  4. package/design-system/deprecated-full-theme.css +2371 -2371
  5. package/docs/API-reference/api/x-adapter-platform.md +12 -0
  6. package/docs/API-reference/api/x-adapter-platform.nextqueriesrelatedpromptsschema.md +11 -0
  7. package/docs/API-reference/api/x-adapter-platform.platformadapter.relatedprompts.md +1 -1
  8. package/docs/API-reference/api/x-adapter-platform.platformrelatedprompt.md +23 -0
  9. package/docs/API-reference/api/x-adapter-platform.platformrelatedprompt.nextqueries.md +11 -0
  10. package/docs/API-reference/api/x-adapter-platform.platformrelatedprompt.suggestiontext.md +11 -0
  11. package/docs/API-reference/api/x-adapter-platform.platformrelatedprompt.tagging.md +11 -0
  12. package/docs/API-reference/api/x-adapter-platform.platformrelatedprompt.type.md +11 -0
  13. package/docs/API-reference/api/x-adapter-platform.platformrelatedpromptnextqueriestagging.md +22 -0
  14. package/docs/API-reference/api/x-adapter-platform.platformrelatedpromptnextqueriestagging.toolingdisplay.md +11 -0
  15. package/docs/API-reference/api/x-adapter-platform.platformrelatedpromptnextqueriestagging.toolingdisplayadd2cart.md +11 -0
  16. package/docs/API-reference/api/x-adapter-platform.platformrelatedpromptnextqueriestagging.toolingdisplayclick.md +11 -0
  17. package/docs/API-reference/api/x-adapter-platform.platformrelatedpromptsrequest.md +15 -0
  18. package/docs/API-reference/api/x-adapter-platform.platformrelatedpromptsresponse.data.md +13 -0
  19. package/docs/API-reference/api/x-adapter-platform.platformrelatedpromptsresponse.md +21 -0
  20. package/docs/API-reference/api/x-adapter-platform.platformrelatedpromptsresponse.status.md +11 -0
  21. package/docs/API-reference/api/x-adapter-platform.platformrelatedprompttagging.md +22 -0
  22. package/docs/API-reference/api/x-adapter-platform.platformrelatedprompttagging.nextqueries.md +11 -0
  23. package/docs/API-reference/api/x-adapter-platform.platformrelatedprompttagging.toolingdisplay.md +11 -0
  24. package/docs/API-reference/api/x-adapter-platform.platformrelatedprompttagging.toolingdisplayclick.md +11 -0
  25. package/docs/API-reference/api/x-adapter-platform.platformsearchresponse.catalog.md +6 -0
  26. package/docs/API-reference/api/x-adapter-platform.platformsearchresponse.md +1 -1
  27. package/docs/API-reference/api/x-adapter-platform.relatedpromptschema.md +13 -0
  28. package/docs/API-reference/api/x-adapter-platform.relatedpromptsendpointadapter.md +13 -0
  29. package/docs/API-reference/api/x-adapter-platform.relatedpromptsrequestmapper.md +13 -0
  30. package/docs/API-reference/api/x-adapter-platform.relatedpromptsrequestschema.md +13 -0
  31. package/docs/API-reference/api/x-adapter-platform.relatedpromptsresponsemapper.md +13 -0
  32. package/docs/API-reference/api/x-adapter-platform.relatedpromptsresponseschema.md +13 -0
  33. package/docs/API-reference/api/x-components.animationprop.md +6 -1
  34. package/docs/API-reference/api/x-components.bannerslist.md +3 -3
  35. package/docs/API-reference/api/x-components.baseaddtocart.md +1 -0
  36. package/docs/API-reference/api/x-components.basedropdown.md +5 -5
  37. package/docs/API-reference/api/x-components.baseeventsmodal.md +2 -2
  38. package/docs/API-reference/api/x-components.basegrid.md +3 -3
  39. package/docs/API-reference/api/x-components.baseheadertogglepanel.md +5 -5
  40. package/docs/API-reference/api/x-components.baseidmodal.md +2 -2
  41. package/docs/API-reference/api/x-components.baseidtogglepanel.md +5 -5
  42. package/docs/API-reference/api/x-components.basemodal.md +10 -10
  43. package/docs/API-reference/api/x-components.baseresultimage.md +9 -9
  44. package/docs/API-reference/api/x-components.baseslider.md +70 -0
  45. package/docs/API-reference/api/x-components.basesuggestions.md +3 -3
  46. package/docs/API-reference/api/x-components.baseswitch.md +1 -1
  47. package/docs/API-reference/api/x-components.basetabspanel.md +8 -8
  48. package/docs/API-reference/api/x-components.baseteleport.md +21 -0
  49. package/docs/API-reference/api/x-components.basetogglepanel.md +3 -3
  50. package/docs/API-reference/api/x-components.basevariablecolumngrid.md +3 -3
  51. package/docs/API-reference/api/x-components.cancelfetchandsaverelatedprompts.md +13 -0
  52. package/docs/API-reference/api/x-components.configmutations.config.md +11 -0
  53. package/docs/API-reference/api/x-components.configmutations.md +29 -0
  54. package/docs/API-reference/api/x-components.configmutations.mergeconfig.md +24 -0
  55. package/docs/API-reference/api/x-components.configmutations.setconfig.md +24 -0
  56. package/docs/API-reference/api/x-components.createrelatedtagsquerygetter.md +26 -0
  57. package/docs/API-reference/api/x-components.createrelatedtagsquerygetteroptions.getrelatedtags.md +13 -0
  58. package/docs/API-reference/api/x-components.createrelatedtagsquerygetteroptions.md +20 -0
  59. package/docs/API-reference/api/x-components.createtrackrelatedprompttoolingdisplayclickwire.md +19 -0
  60. package/docs/API-reference/api/x-components.createtracktoolingadd2cartwire.md +19 -0
  61. package/docs/API-reference/api/x-components.createtracktoolingdisplaywire.md +19 -0
  62. package/docs/API-reference/api/{x-components.defaultpdpaddtocartservice._constructor_.md → x-components.defaultexternaltaggingservice._constructor_.md} +3 -3
  63. package/docs/API-reference/api/x-components.defaultexternaltaggingservice.add_to_cart_id_key.md +13 -0
  64. package/docs/API-reference/api/x-components.defaultexternaltaggingservice.instance.md +13 -0
  65. package/docs/API-reference/api/x-components.defaultexternaltaggingservice.localstorageservice.md +11 -0
  66. package/docs/API-reference/api/x-components.defaultexternaltaggingservice.md +43 -0
  67. package/docs/API-reference/api/{x-components.defaultpdpaddtocartservice.movetosessionstorage.md → x-components.defaultexternaltaggingservice.movetosessionstorage.md} +2 -2
  68. package/docs/API-reference/api/x-components.defaultexternaltaggingservice.result_clicked_id_key.md +13 -0
  69. package/docs/API-reference/api/x-components.defaultexternaltaggingservice.sessionstorageservice.md +11 -0
  70. package/docs/API-reference/api/x-components.defaultexternaltaggingservice.storagekey.md +11 -0
  71. package/docs/API-reference/api/x-components.defaultexternaltaggingservice.storagettlms.md +11 -0
  72. package/docs/API-reference/api/{x-components.defaultpdpaddtocartservice.store.md → x-components.defaultexternaltaggingservice.store.md} +2 -2
  73. package/docs/API-reference/api/x-components.defaultexternaltaggingservice.storeaddtocart.md +24 -0
  74. package/docs/API-reference/api/{x-components.defaultpdpaddtocartservice.storeresultclicked.md → x-components.defaultexternaltaggingservice.storeresultclicked.md} +3 -3
  75. package/docs/API-reference/api/{x-components.defaultpdpaddtocartservice.trackaddtocart.md → x-components.defaultexternaltaggingservice.trackaddtocart.md} +3 -3
  76. package/docs/API-reference/api/x-components.displayclickprovider.md +66 -0
  77. package/docs/API-reference/api/x-components.empathize.md +6 -6
  78. package/docs/API-reference/api/x-components.empathizemutations.md +1 -1
  79. package/docs/API-reference/api/x-components.externaltaggingservice.md +23 -0
  80. package/docs/API-reference/api/{x-components.pdpaddtocartservice.movetosessionstorage.md → x-components.externaltaggingservice.movetosessionstorage.md} +2 -2
  81. package/docs/API-reference/api/x-components.externaltaggingservice.storeaddtocart.md +24 -0
  82. package/docs/API-reference/api/{x-components.pdpaddtocartservice.storeresultclicked.md → x-components.externaltaggingservice.storeresultclicked.md} +3 -3
  83. package/docs/API-reference/api/{x-components.pdpaddtocartservice.trackaddtocart.md → x-components.externaltaggingservice.trackaddtocart.md} +3 -3
  84. package/docs/API-reference/api/x-components.facets.md +3 -3
  85. package/docs/API-reference/api/x-components.facetsmutations.md +1 -1
  86. package/docs/API-reference/api/x-components.featurelocation.md +1 -1
  87. package/docs/API-reference/api/x-components.fetchandsaverelatedprompts.md +13 -0
  88. package/docs/API-reference/api/x-components.fetchrelatedprompts.md +13 -0
  89. package/docs/API-reference/api/x-components.filterslist.md +3 -3
  90. package/docs/API-reference/api/x-components.globalxbus.md +14 -0
  91. package/docs/API-reference/api/x-components.hierarchicalfilter.md +9 -2
  92. package/docs/API-reference/api/x-components.historyqueriesmutations.md +1 -1
  93. package/docs/API-reference/api/x-components.historyqueriesstate.md +1 -1
  94. package/docs/API-reference/api/x-components.identifierresults.md +3 -3
  95. package/docs/API-reference/api/x-components.identifierresultsmutations.md +1 -1
  96. package/docs/API-reference/api/x-components.identifierresultsstate.md +1 -1
  97. package/docs/API-reference/api/x-components.installxoptions.domelement.md +1 -1
  98. package/docs/API-reference/api/x-components.installxoptions.installextraplugins.md +2 -2
  99. package/docs/API-reference/api/x-components.installxoptions.md +1 -1
  100. package/docs/API-reference/api/x-components.itemslist.md +3 -3
  101. package/docs/API-reference/api/x-components.mainmodal.md +2 -2
  102. package/docs/API-reference/api/x-components.md +39 -3
  103. package/docs/API-reference/api/x-components.mergeconfig.md +27 -0
  104. package/docs/API-reference/api/x-components.multicolumnmaxwidthlayout.md +5 -5
  105. package/docs/API-reference/api/x-components.myhistory.md +3 -3
  106. package/docs/API-reference/api/x-components.nextqueriesgroup.md +22 -0
  107. package/docs/API-reference/api/x-components.nextqueriesgroup.modelname.md +11 -0
  108. package/docs/API-reference/api/x-components.nextqueriesgroup.nextqueries.md +11 -0
  109. package/docs/API-reference/api/x-components.nextquerieslist.md +3 -3
  110. package/docs/API-reference/api/x-components.nextqueriesmutations.md +1 -1
  111. package/docs/API-reference/api/x-components.nextqueriesstate.md +1 -1
  112. package/docs/API-reference/api/x-components.pageselector.md +80 -0
  113. package/docs/API-reference/api/x-components.partialresultslist.md +3 -3
  114. package/docs/API-reference/api/x-components.popularsearchesmutations.md +1 -1
  115. package/docs/API-reference/api/x-components.promotedslist.md +3 -3
  116. package/docs/API-reference/api/x-components.queriespreviewmutations.md +1 -1
  117. package/docs/API-reference/api/x-components.queryfeature.md +1 -1
  118. package/docs/API-reference/api/x-components.querymutations.md +20 -0
  119. package/docs/API-reference/api/x-components.querymutations.setquery.md +24 -0
  120. package/docs/API-reference/api/x-components.querypreviewlist.md +3 -3
  121. package/docs/API-reference/api/x-components.querystate.md +20 -0
  122. package/docs/API-reference/api/x-components.querystate.query.md +13 -0
  123. package/docs/API-reference/api/x-components.querysuggestionsmutations.md +1 -1
  124. package/docs/API-reference/api/x-components.querysuggestionsstate.md +1 -1
  125. package/docs/API-reference/api/x-components.recommendations.md +3 -3
  126. package/docs/API-reference/api/x-components.recommendationsmutations.md +1 -1
  127. package/docs/API-reference/api/x-components.relatedprompt.md +33 -0
  128. package/docs/API-reference/api/x-components.relatedpromptsactioncontext.md +15 -0
  129. package/docs/API-reference/api/x-components.relatedpromptsactions.cancelfetchandsaverelatedprompts.md +17 -0
  130. package/docs/API-reference/api/x-components.relatedpromptsactions.fetchandsaverelatedprompts.md +24 -0
  131. package/docs/API-reference/api/x-components.relatedpromptsactions.fetchrelatedprompts.md +24 -0
  132. package/docs/API-reference/api/x-components.relatedpromptsactions.md +23 -0
  133. package/docs/API-reference/api/x-components.relatedpromptsactions.seturlparams.md +24 -0
  134. package/docs/API-reference/api/x-components.relatedpromptsgetters.md +21 -0
  135. package/docs/API-reference/api/x-components.relatedpromptsgetters.query.md +13 -0
  136. package/docs/API-reference/api/x-components.relatedpromptsgetters.request.md +13 -0
  137. package/docs/API-reference/api/x-components.relatedpromptslist.md +72 -0
  138. package/docs/API-reference/api/x-components.relatedpromptsmutations.md +27 -0
  139. package/docs/API-reference/api/x-components.relatedpromptsmutations.resetrelatedpromptsstate.md +17 -0
  140. package/docs/API-reference/api/x-components.relatedpromptsmutations.resetselectedprompt.md +17 -0
  141. package/docs/API-reference/api/x-components.relatedpromptsmutations.setparams.md +24 -0
  142. package/docs/API-reference/api/x-components.relatedpromptsmutations.setrelatedpromptsproducts.md +24 -0
  143. package/docs/API-reference/api/x-components.relatedpromptsmutations.setrelatedpromptsrelatedtags.md +24 -0
  144. package/docs/API-reference/api/x-components.relatedpromptsmutations.setselectedprompt.md +24 -0
  145. package/docs/API-reference/api/x-components.relatedpromptsmutations.setselectedquery.md +24 -0
  146. package/docs/API-reference/api/x-components.relatedpromptsstate.md +25 -0
  147. package/docs/API-reference/api/x-components.relatedpromptsstate.params.md +13 -0
  148. package/docs/API-reference/api/x-components.relatedpromptsstate.relatedprompts.md +13 -0
  149. package/docs/API-reference/api/x-components.relatedpromptsstate.relatedtags.md +13 -0
  150. package/docs/API-reference/api/x-components.relatedpromptsstate.selectedprompt.md +13 -0
  151. package/docs/API-reference/api/x-components.relatedpromptsstate.selectedquery.md +13 -0
  152. package/docs/API-reference/api/x-components.relatedpromptstaglist.md +72 -0
  153. package/docs/API-reference/api/x-components.relatedpromptsxevents.md +25 -0
  154. package/docs/API-reference/api/x-components.relatedpromptsxevents.relatedpromptsrequestupdated.md +13 -0
  155. package/docs/API-reference/api/x-components.relatedpromptsxevents.selectedrelatedpromptchanged.md +13 -0
  156. package/docs/API-reference/api/x-components.relatedpromptsxevents.userclickedarelatedpromptadd2cart.md +13 -0
  157. package/docs/API-reference/api/x-components.relatedpromptsxevents.userclickedarelatedpromptresult.md +13 -0
  158. package/docs/API-reference/api/x-components.relatedpromptsxevents.userselectedarelatedprompt.md +13 -0
  159. package/docs/API-reference/api/x-components.relatedpromptsxevents.userselectedarelatedpromptquery.md +13 -0
  160. package/docs/API-reference/api/x-components.relatedpromptsxmodule.md +13 -0
  161. package/docs/API-reference/api/x-components.relatedpromptsxstoremodule.md +15 -0
  162. package/docs/API-reference/api/x-components.relatedtags.md +3 -3
  163. package/docs/API-reference/api/x-components.relatedtagsmutations.md +1 -1
  164. package/docs/API-reference/api/x-components.relatedtagsstate.md +1 -1
  165. package/docs/API-reference/api/x-components.resultfeature.md +1 -1
  166. package/docs/API-reference/api/x-components.resultslist.md +3 -3
  167. package/docs/API-reference/api/x-components.scrolltotop.md +5 -5
  168. package/docs/API-reference/api/x-components.searchboxmutations.md +1 -1
  169. package/docs/API-reference/api/x-components.searchboxstate.md +1 -1
  170. package/docs/API-reference/api/x-components.searchconfig.md +1 -0
  171. package/docs/API-reference/api/x-components.searchconfig.pagemode.md +11 -0
  172. package/docs/API-reference/api/x-components.searchinputplaceholder.md +3 -3
  173. package/docs/API-reference/api/x-components.searchmutations.md +2 -1
  174. package/docs/API-reference/api/x-components.searchmutations.setstats.md +24 -0
  175. package/docs/API-reference/api/x-components.searchstate.md +2 -1
  176. package/docs/API-reference/api/x-components.searchstate.stats.md +13 -0
  177. package/docs/API-reference/api/x-components.searchxevents.md +1 -0
  178. package/docs/API-reference/api/x-components.searchxevents.userselectedapage.md +13 -0
  179. package/docs/API-reference/api/x-components.selectedfilterslist.md +3 -3
  180. package/docs/API-reference/api/x-components.semanticqueriesgetters.md +1 -0
  181. package/docs/API-reference/api/x-components.semanticqueriesgetters.query.md +13 -0
  182. package/docs/API-reference/api/x-components.semanticqueriesmutations.md +2 -1
  183. package/docs/API-reference/api/x-components.semanticqueriesmutations.setsemanticqueriesrelatedtags.md +24 -0
  184. package/docs/API-reference/api/x-components.semanticqueriesstate.md +2 -1
  185. package/docs/API-reference/api/x-components.semanticqueriesstate.relatedtags.md +13 -0
  186. package/docs/API-reference/api/x-components.setconfig.md +27 -0
  187. package/docs/API-reference/api/x-components.setquery.md +25 -0
  188. package/docs/API-reference/api/x-components.seturlprompt.md +13 -0
  189. package/docs/API-reference/api/x-components.simplefilter.md +7 -0
  190. package/docs/API-reference/api/x-components.singlecolumnlayout.md +3 -3
  191. package/docs/API-reference/api/x-components.slidingpanel.md +13 -5
  192. package/docs/API-reference/api/x-components.snippetcallbacks.md +7 -0
  193. package/docs/API-reference/api/x-components.sortdropdown.md +1 -1
  194. package/docs/API-reference/api/x-components.tagging.md +6 -6
  195. package/docs/API-reference/api/x-components.taggingconfig.md +2 -2
  196. package/docs/API-reference/api/{x-components.taggingconfig.clickedresultstoragekey.md → x-components.taggingconfig.storagekey.md} +3 -3
  197. package/docs/API-reference/api/x-components.taggingconfig.storagettlms.md +13 -0
  198. package/docs/API-reference/api/x-components.taggingmutations.md +1 -1
  199. package/docs/API-reference/api/x-components.taggingxevents.md +1 -1
  200. package/docs/API-reference/api/x-components.taggingxevents.resulturltrackingenabled.md +1 -1
  201. package/docs/API-reference/api/x-components.trackrelatedprompttoolingdisplayclickwire.md +13 -0
  202. package/docs/API-reference/api/x-components.tracktoolingadd2cartwire.md +13 -0
  203. package/docs/API-reference/api/x-components.tracktoolingdisplayclickedwire.md +13 -0
  204. package/docs/API-reference/api/x-components.typing.md +13 -0
  205. package/docs/API-reference/api/x-components.typingoptions.md +22 -0
  206. package/docs/API-reference/api/x-components.typingoptions.speed.md +13 -0
  207. package/docs/API-reference/api/x-components.typingoptions.targetattr.md +18 -0
  208. package/docs/API-reference/api/x-components.typingoptions.text.md +13 -0
  209. package/docs/API-reference/api/x-components.urlmutations.md +2 -1
  210. package/docs/API-reference/api/x-components.urlmutations.setprompt.md +24 -0
  211. package/docs/API-reference/api/x-components.urlparams.md +1 -0
  212. package/docs/API-reference/api/x-components.urlparams.prompt.md +11 -0
  213. package/docs/API-reference/api/x-components.urlstate.md +1 -1
  214. package/docs/API-reference/api/x-components.usealiasapi.md +1 -0
  215. package/docs/API-reference/api/x-components.usealiasapi.pricestats.md +16 -0
  216. package/docs/API-reference/api/x-components.xeventstypes.md +3 -3
  217. package/docs/API-reference/api/x-components.xmodulestree.md +1 -0
  218. package/docs/API-reference/api/x-components.xmodulestree.relatedprompts.md +11 -0
  219. package/docs/API-reference/api/x-types.md +2 -0
  220. package/docs/API-reference/api/x-types.relatedprompt.md +4 -1
  221. package/docs/API-reference/api/x-types.relatedprompt.nextqueries.md +1 -1
  222. package/docs/API-reference/api/x-types.relatedprompt.relatedpromptnextqueries.md +13 -0
  223. package/docs/API-reference/api/x-types.relatedprompt.tagging.md +17 -0
  224. package/docs/API-reference/api/x-types.relatedprompt.toolingdisplaytagging.md +13 -0
  225. package/docs/API-reference/api/x-types.relatedpromptnextquery.md +23 -0
  226. package/docs/API-reference/api/x-types.relatedpromptnextquery.query.md +13 -0
  227. package/docs/API-reference/api/x-types.relatedpromptnextquery.toolingdisplayadd2carttagging.md +13 -0
  228. package/docs/API-reference/api/x-types.relatedpromptnextquery.toolingdisplayclicktagging.md +13 -0
  229. package/docs/API-reference/api/x-types.relatedpromptnextquery.toolingdisplaytagging.md +13 -0
  230. package/docs/API-reference/api/x-types.searchresponse.md +1 -0
  231. package/docs/API-reference/api/x-types.searchresponse.stats.md +11 -0
  232. package/docs/API-reference/api/x-types.stats.md +22 -0
  233. package/docs/API-reference/api/x-types.stats.price.md +14 -0
  234. package/docs/API-reference/components/common/result/x-components.base-result-image.md +2 -2
  235. package/docs/API-reference/components/common/x-components.base-slider.md +189 -0
  236. package/docs/API-reference/components/common/x-components.base-teleport.md +19 -0
  237. package/docs/API-reference/components/common/x-components.display-click-provider.md +17 -0
  238. package/docs/API-reference/components/common/x-components.items-list.md +1 -1
  239. package/docs/API-reference/components/common/x-components.page-selector.md +136 -0
  240. package/docs/API-reference/components/common/x-components.sliding-panel.md +7 -7
  241. package/docs/API-reference/components/facets/x-components.facets/facets.md +1 -1
  242. package/docs/API-reference/components/facets/x-components.lists/selected-filters-list.md +1 -1
  243. package/docs/API-reference/components/related-prompts/x-components.related-prompt.md +22 -0
  244. package/docs/API-reference/components/related-prompts/x-components.related-prompts-list.md +196 -0
  245. package/docs/API-reference/components/related-prompts/x-components.related-prompts-tag-list.md +32 -0
  246. package/docs/API-reference/components/search/x-components.results-list.md +1 -1
  247. package/docs/API-reference/components/tagging/x-components.tagging.md +15 -16
  248. package/js/components/animations/fade-and-slide.vue.js +1 -2
  249. package/js/components/animations/fade-and-slide.vue.js.map +1 -1
  250. package/js/components/base-dropdown.vue.js +1 -3
  251. package/js/components/base-dropdown.vue.js.map +1 -1
  252. package/js/components/base-dropdown.vue2.js +1 -7
  253. package/js/components/base-dropdown.vue2.js.map +1 -1
  254. package/js/components/base-event-button.vue.js +1 -2
  255. package/js/components/base-event-button.vue.js.map +1 -1
  256. package/js/components/base-grid.vue.js +11 -18
  257. package/js/components/base-grid.vue.js.map +1 -1
  258. package/js/components/base-grid.vue2.js.map +1 -1
  259. package/js/components/base-grid.vue3.js +1 -1
  260. package/js/components/base-keyboard-navigation.vue.js +1 -2
  261. package/js/components/base-keyboard-navigation.vue.js.map +1 -1
  262. package/js/components/base-rating.vue.js +1 -3
  263. package/js/components/base-rating.vue.js.map +1 -1
  264. package/js/components/base-slider.vue.js +65 -0
  265. package/js/components/base-slider.vue.js.map +1 -0
  266. package/js/components/base-slider.vue2.js +109 -0
  267. package/js/components/base-slider.vue2.js.map +1 -0
  268. package/js/components/base-slider.vue3.js +7 -0
  269. package/js/components/base-slider.vue3.js.map +1 -0
  270. package/js/components/base-switch.vue.js.map +1 -1
  271. package/js/components/base-switch.vue2.js +3 -7
  272. package/js/components/base-switch.vue2.js.map +1 -1
  273. package/js/components/base-teleport.vue.js +17 -0
  274. package/js/components/base-teleport.vue.js.map +1 -0
  275. package/js/components/base-teleport.vue2.js +14 -0
  276. package/js/components/base-teleport.vue2.js.map +1 -0
  277. package/js/components/base-teleport.vue3.js +7 -0
  278. package/js/components/base-teleport.vue3.js.map +1 -0
  279. package/js/components/base-variable-column-grid.vue.js +1 -2
  280. package/js/components/base-variable-column-grid.vue.js.map +1 -1
  281. package/js/components/column-picker/base-column-picker-dropdown.vue.js +1 -3
  282. package/js/components/column-picker/base-column-picker-dropdown.vue.js.map +1 -1
  283. package/js/components/column-picker/base-column-picker-list.vue.js +1 -3
  284. package/js/components/column-picker/base-column-picker-list.vue.js.map +1 -1
  285. package/js/components/display-click-provider.vue.js +74 -0
  286. package/js/components/display-click-provider.vue.js.map +1 -0
  287. package/js/components/display-click-provider.vue2.js +6 -0
  288. package/js/components/display-click-provider.vue2.js.map +1 -0
  289. package/js/components/filters/labels/base-rating-filter-label.vue.js +1 -3
  290. package/js/components/filters/labels/base-rating-filter-label.vue.js.map +1 -1
  291. package/js/components/icons/cross-tiny.vue.js +2 -2
  292. package/js/components/icons/plus.vue.js +2 -2
  293. package/js/components/items-list.vue.js +1 -2
  294. package/js/components/items-list.vue.js.map +1 -1
  295. package/js/components/items-list.vue2.js +2 -2
  296. package/js/components/items-list.vue2.js.map +1 -1
  297. package/js/components/layouts/fixed-header-and-asides-layout.vue.js +1 -7
  298. package/js/components/layouts/fixed-header-and-asides-layout.vue.js.map +1 -1
  299. package/js/components/layouts/multi-column-max-width-layout.vue.js +1 -9
  300. package/js/components/layouts/multi-column-max-width-layout.vue.js.map +1 -1
  301. package/js/components/layouts/single-column-layout.vue.js +1 -9
  302. package/js/components/layouts/single-column-layout.vue.js.map +1 -1
  303. package/js/components/modals/base-events-modal-close.vue.js +1 -2
  304. package/js/components/modals/base-events-modal-close.vue.js.map +1 -1
  305. package/js/components/modals/base-events-modal-open.vue.js +1 -2
  306. package/js/components/modals/base-events-modal-open.vue.js.map +1 -1
  307. package/js/components/modals/base-id-modal-close.vue.js +1 -2
  308. package/js/components/modals/base-id-modal-close.vue.js.map +1 -1
  309. package/js/components/modals/base-id-modal-open.vue.js +1 -2
  310. package/js/components/modals/base-id-modal-open.vue.js.map +1 -1
  311. package/js/components/modals/base-modal.vue.js +1 -2
  312. package/js/components/modals/base-modal.vue.js.map +1 -1
  313. package/js/components/modals/base-modal.vue2.js +13 -6
  314. package/js/components/modals/base-modal.vue2.js.map +1 -1
  315. package/js/components/page-loader-button.vue.js +8 -10
  316. package/js/components/page-loader-button.vue.js.map +1 -1
  317. package/js/components/page-loader-button.vue2.js.map +1 -1
  318. package/js/components/page-loader-button.vue3.js +7 -0
  319. package/js/components/page-loader-button.vue3.js.map +1 -0
  320. package/js/components/page-selector.vue.js +78 -0
  321. package/js/components/page-selector.vue.js.map +1 -0
  322. package/js/components/page-selector.vue2.js +128 -0
  323. package/js/components/page-selector.vue2.js.map +1 -0
  324. package/js/components/page-selector.vue3.js +7 -0
  325. package/js/components/page-selector.vue3.js.map +1 -0
  326. package/js/components/panels/base-header-toggle-panel.vue.js +1 -5
  327. package/js/components/panels/base-header-toggle-panel.vue.js.map +1 -1
  328. package/js/components/panels/base-id-toggle-panel-button.vue.js +1 -2
  329. package/js/components/panels/base-id-toggle-panel-button.vue.js.map +1 -1
  330. package/js/components/panels/base-id-toggle-panel.vue.js +1 -2
  331. package/js/components/panels/base-id-toggle-panel.vue.js.map +1 -1
  332. package/js/components/panels/base-tabs-panel.vue.js +1 -4
  333. package/js/components/panels/base-tabs-panel.vue.js.map +1 -1
  334. package/js/components/panels/base-toggle-panel.vue.js +1 -2
  335. package/js/components/panels/base-toggle-panel.vue.js.map +1 -1
  336. package/js/components/result/base-result-add-to-cart.vue.js +3 -3
  337. package/js/components/result/base-result-add-to-cart.vue.js.map +1 -1
  338. package/js/components/result/base-result-add-to-cart.vue2.js +19 -5
  339. package/js/components/result/base-result-add-to-cart.vue2.js.map +1 -1
  340. package/js/components/result/base-result-current-price.vue.js +1 -2
  341. package/js/components/result/base-result-current-price.vue.js.map +1 -1
  342. package/js/components/result/base-result-image.vue.js +39 -59
  343. package/js/components/result/base-result-image.vue.js.map +1 -1
  344. package/js/components/result/base-result-image.vue2.js +5 -5
  345. package/js/components/result/base-result-image.vue2.js.map +1 -1
  346. package/js/components/result/base-result-link.vue.js +1 -2
  347. package/js/components/result/base-result-link.vue.js.map +1 -1
  348. package/js/components/result/base-result-previous-price.vue.js +1 -2
  349. package/js/components/result/base-result-previous-price.vue.js.map +1 -1
  350. package/js/components/result/base-result-rating.vue.js +1 -4
  351. package/js/components/result/base-result-rating.vue.js.map +1 -1
  352. package/js/components/result/result-variant-selector.vue.js +1 -3
  353. package/js/components/result/result-variant-selector.vue.js.map +1 -1
  354. package/js/components/sliding-panel.vue.js +3 -6
  355. package/js/components/sliding-panel.vue.js.map +1 -1
  356. package/js/components/sliding-panel.vue2.js +2 -2
  357. package/js/components/sliding-panel.vue2.js.map +1 -1
  358. package/js/components/suggestions/base-suggestion.vue.js +1 -2
  359. package/js/components/suggestions/base-suggestion.vue.js.map +1 -1
  360. package/js/components/suggestions/base-suggestions.vue.js +1 -2
  361. package/js/components/suggestions/base-suggestions.vue.js.map +1 -1
  362. package/js/composables/use-alias-api.js +4 -1
  363. package/js/composables/use-alias-api.js.map +1 -1
  364. package/js/composables/use-getter.js +1 -1
  365. package/js/composables/use-state.js +1 -1
  366. package/js/directives/typing.js +58 -0
  367. package/js/directives/typing.js.map +1 -0
  368. package/js/index.js +21 -4
  369. package/js/index.js.map +1 -1
  370. package/js/types/animation-prop.js +5 -0
  371. package/js/types/animation-prop.js.map +1 -1
  372. package/js/x-installer/x-installer/x-installer.js +3 -3
  373. package/js/x-installer/x-installer/x-installer.js.map +1 -1
  374. package/js/x-modules/device/store/emitters.js +1 -0
  375. package/js/x-modules/device/store/emitters.js.map +1 -1
  376. package/js/x-modules/empathize/components/empathize.vue.js +1 -2
  377. package/js/x-modules/empathize/components/empathize.vue.js.map +1 -1
  378. package/js/x-modules/empathize/components/empathize.vue2.js +10 -3
  379. package/js/x-modules/empathize/components/empathize.vue2.js.map +1 -1
  380. package/js/x-modules/empathize/store/emitters.js +1 -0
  381. package/js/x-modules/empathize/store/emitters.js.map +1 -1
  382. package/js/x-modules/experience-controls/store/emitters.js +1 -0
  383. package/js/x-modules/experience-controls/store/emitters.js.map +1 -1
  384. package/js/x-modules/extra-params/components/extra-params.vue.js +1 -1
  385. package/js/x-modules/extra-params/components/extra-params.vue.js.map +1 -1
  386. package/js/x-modules/extra-params/store/emitters.js +1 -0
  387. package/js/x-modules/extra-params/store/emitters.js.map +1 -1
  388. package/js/x-modules/facets/components/facets/facets.vue.js +20 -33
  389. package/js/x-modules/facets/components/facets/facets.vue.js.map +1 -1
  390. package/js/x-modules/facets/components/facets/facets.vue2.js +2 -2
  391. package/js/x-modules/facets/components/facets/facets.vue2.js.map +1 -1
  392. package/js/x-modules/facets/components/filters/all-filter.vue.js +1 -2
  393. package/js/x-modules/facets/components/filters/all-filter.vue.js.map +1 -1
  394. package/js/x-modules/facets/components/filters/editable-number-range-filter.vue.js +1 -6
  395. package/js/x-modules/facets/components/filters/editable-number-range-filter.vue.js.map +1 -1
  396. package/js/x-modules/facets/components/filters/hierarchical-filter.vue.js +1 -3
  397. package/js/x-modules/facets/components/filters/hierarchical-filter.vue.js.map +1 -1
  398. package/js/x-modules/facets/components/filters/number-range-filter.vue.js +1 -3
  399. package/js/x-modules/facets/components/filters/number-range-filter.vue.js.map +1 -1
  400. package/js/x-modules/facets/components/filters/simple-filter.vue.js +1 -3
  401. package/js/x-modules/facets/components/filters/simple-filter.vue.js.map +1 -1
  402. package/js/x-modules/facets/components/lists/filters-list.vue.js +1 -2
  403. package/js/x-modules/facets/components/lists/filters-list.vue.js.map +1 -1
  404. package/js/x-modules/facets/components/lists/filters-search.vue.js +1 -3
  405. package/js/x-modules/facets/components/lists/filters-search.vue.js.map +1 -1
  406. package/js/x-modules/facets/components/lists/selected-filters-list.vue.js +11 -18
  407. package/js/x-modules/facets/components/lists/selected-filters-list.vue.js.map +1 -1
  408. package/js/x-modules/facets/components/lists/selected-filters-list.vue2.js +2 -2
  409. package/js/x-modules/facets/components/lists/selected-filters-list.vue2.js.map +1 -1
  410. package/js/x-modules/facets/components/lists/sliced-filters.vue.js +1 -4
  411. package/js/x-modules/facets/components/lists/sliced-filters.vue.js.map +1 -1
  412. package/js/x-modules/history-queries/components/clear-history-queries.vue.js +1 -2
  413. package/js/x-modules/history-queries/components/clear-history-queries.vue.js.map +1 -1
  414. package/js/x-modules/history-queries/components/history-queries.vue.js +1 -10
  415. package/js/x-modules/history-queries/components/history-queries.vue.js.map +1 -1
  416. package/js/x-modules/history-queries/components/history-query.vue.js +1 -6
  417. package/js/x-modules/history-queries/components/history-query.vue.js.map +1 -1
  418. package/js/x-modules/history-queries/components/my-history.vue.js +1 -4
  419. package/js/x-modules/history-queries/components/my-history.vue.js.map +1 -1
  420. package/js/x-modules/history-queries/components/remove-history-query.vue.js +1 -2
  421. package/js/x-modules/history-queries/components/remove-history-query.vue.js.map +1 -1
  422. package/js/x-modules/history-queries/store/emitters.js +1 -0
  423. package/js/x-modules/history-queries/store/emitters.js.map +1 -1
  424. package/js/x-modules/identifier-results/components/identifier-results.vue.js +1 -2
  425. package/js/x-modules/identifier-results/components/identifier-results.vue.js.map +1 -1
  426. package/js/x-modules/identifier-results/store/emitters.js +1 -0
  427. package/js/x-modules/identifier-results/store/emitters.js.map +1 -1
  428. package/js/x-modules/next-queries/components/next-queries.vue.js +1 -7
  429. package/js/x-modules/next-queries/components/next-queries.vue.js.map +1 -1
  430. package/js/x-modules/next-queries/components/next-query-preview.vue.js +1 -3
  431. package/js/x-modules/next-queries/components/next-query-preview.vue.js.map +1 -1
  432. package/js/x-modules/next-queries/components/next-query.vue.js +1 -4
  433. package/js/x-modules/next-queries/components/next-query.vue.js.map +1 -1
  434. package/js/x-modules/next-queries/store/emitters.js +1 -0
  435. package/js/x-modules/next-queries/store/emitters.js.map +1 -1
  436. package/js/x-modules/popular-searches/components/popular-search.vue.js +1 -4
  437. package/js/x-modules/popular-searches/components/popular-search.vue.js.map +1 -1
  438. package/js/x-modules/popular-searches/components/popular-searches.vue.js +1 -7
  439. package/js/x-modules/popular-searches/components/popular-searches.vue.js.map +1 -1
  440. package/js/x-modules/queries-preview/components/query-preview-button.vue.js +1 -2
  441. package/js/x-modules/queries-preview/components/query-preview-button.vue.js.map +1 -1
  442. package/js/x-modules/queries-preview/components/query-preview-button.vue2.js +8 -0
  443. package/js/x-modules/queries-preview/components/query-preview-button.vue2.js.map +1 -1
  444. package/js/x-modules/queries-preview/components/query-preview-list.vue.js.map +1 -1
  445. package/js/x-modules/queries-preview/components/query-preview-list.vue2.js +15 -2
  446. package/js/x-modules/queries-preview/components/query-preview-list.vue2.js.map +1 -1
  447. package/js/x-modules/queries-preview/components/query-preview.vue.js +1 -2
  448. package/js/x-modules/queries-preview/components/query-preview.vue.js.map +1 -1
  449. package/js/x-modules/queries-preview/components/query-preview.vue2.js +9 -1
  450. package/js/x-modules/queries-preview/components/query-preview.vue2.js.map +1 -1
  451. package/js/x-modules/queries-preview/store/actions/fetch-and-save-query-preview.action.js +2 -1
  452. package/js/x-modules/queries-preview/store/actions/fetch-and-save-query-preview.action.js.map +1 -1
  453. package/js/x-modules/queries-preview/store/emitters.js +1 -0
  454. package/js/x-modules/queries-preview/store/emitters.js.map +1 -1
  455. package/js/x-modules/queries-preview/store/module.js +1 -1
  456. package/js/x-modules/queries-preview/store/module.js.map +1 -1
  457. package/js/x-modules/queries-preview/utils/get-hash-from-query-preview.js +6 -4
  458. package/js/x-modules/queries-preview/utils/get-hash-from-query-preview.js.map +1 -1
  459. package/js/x-modules/query-suggestions/components/query-suggestion.vue.js +1 -4
  460. package/js/x-modules/query-suggestions/components/query-suggestion.vue.js.map +1 -1
  461. package/js/x-modules/query-suggestions/components/query-suggestions.vue.js +1 -7
  462. package/js/x-modules/query-suggestions/components/query-suggestions.vue.js.map +1 -1
  463. package/js/x-modules/query-suggestions/store/emitters.js +1 -0
  464. package/js/x-modules/query-suggestions/store/emitters.js.map +1 -1
  465. package/js/x-modules/recommendations/components/recommendations.vue.js +1 -2
  466. package/js/x-modules/recommendations/components/recommendations.vue.js.map +1 -1
  467. package/js/x-modules/recommendations/store/emitters.js +1 -0
  468. package/js/x-modules/recommendations/store/emitters.js.map +1 -1
  469. package/js/x-modules/related-prompts/components/related-prompt.vue.js +27 -0
  470. package/js/x-modules/related-prompts/components/related-prompt.vue.js.map +1 -0
  471. package/js/x-modules/related-prompts/components/related-prompt.vue2.js +31 -0
  472. package/js/x-modules/related-prompts/components/related-prompt.vue2.js.map +1 -0
  473. package/js/x-modules/related-prompts/components/related-prompt.vue3.js +7 -0
  474. package/js/x-modules/related-prompts/components/related-prompt.vue3.js.map +1 -0
  475. package/js/x-modules/related-prompts/components/related-prompts-list.vue.js +154 -0
  476. package/js/x-modules/related-prompts/components/related-prompts-list.vue.js.map +1 -0
  477. package/js/x-modules/related-prompts/components/related-prompts-list.vue2.js +6 -0
  478. package/js/x-modules/related-prompts/components/related-prompts-list.vue2.js.map +1 -0
  479. package/js/x-modules/related-prompts/components/related-prompts-tag-list.vue.js +101 -0
  480. package/js/x-modules/related-prompts/components/related-prompts-tag-list.vue.js.map +1 -0
  481. package/js/x-modules/related-prompts/components/related-prompts-tag-list.vue2.js +221 -0
  482. package/js/x-modules/related-prompts/components/related-prompts-tag-list.vue2.js.map +1 -0
  483. package/js/x-modules/related-prompts/components/related-prompts-tag-list.vue3.js +7 -0
  484. package/js/x-modules/related-prompts/components/related-prompts-tag-list.vue3.js.map +1 -0
  485. package/js/x-modules/related-prompts/store/actions/fetch-and-save-related-prompts.action.js +29 -0
  486. package/js/x-modules/related-prompts/store/actions/fetch-and-save-related-prompts.action.js.map +1 -0
  487. package/js/x-modules/related-prompts/store/actions/fetch-related-prompts.action.js +20 -0
  488. package/js/x-modules/related-prompts/store/actions/fetch-related-prompts.action.js.map +1 -0
  489. package/js/x-modules/related-prompts/store/actions/set-url-params.action.js +15 -0
  490. package/js/x-modules/related-prompts/store/actions/set-url-params.action.js.map +1 -0
  491. package/js/x-modules/related-prompts/store/emitters.js +16 -0
  492. package/js/x-modules/related-prompts/store/emitters.js.map +1 -0
  493. package/js/x-modules/related-prompts/store/getters/related-prompts-query.getter.js +18 -0
  494. package/js/x-modules/related-prompts/store/getters/related-prompts-query.getter.js.map +1 -0
  495. package/js/x-modules/related-prompts/store/getters/request.getter.js +17 -0
  496. package/js/x-modules/related-prompts/store/getters/request.getter.js.map +1 -0
  497. package/js/x-modules/related-prompts/store/module.js +64 -0
  498. package/js/x-modules/related-prompts/store/module.js.map +1 -0
  499. package/js/x-modules/related-prompts/wiring.js +82 -0
  500. package/js/x-modules/related-prompts/wiring.js.map +1 -0
  501. package/js/x-modules/related-prompts/x-module.js +21 -0
  502. package/js/x-modules/related-prompts/x-module.js.map +1 -0
  503. package/js/x-modules/related-tags/components/related-tag.vue.js +1 -2
  504. package/js/x-modules/related-tags/components/related-tag.vue.js.map +1 -1
  505. package/js/x-modules/related-tags/components/related-tags.vue.js +1 -4
  506. package/js/x-modules/related-tags/components/related-tags.vue.js.map +1 -1
  507. package/js/x-modules/related-tags/store/emitters.js +1 -0
  508. package/js/x-modules/related-tags/store/emitters.js.map +1 -1
  509. package/js/x-modules/scroll/components/scroll-to-top.vue.js +1 -2
  510. package/js/x-modules/scroll/components/scroll-to-top.vue.js.map +1 -1
  511. package/js/x-modules/scroll/components/scroll-to-top.vue2.js +8 -0
  512. package/js/x-modules/scroll/components/scroll-to-top.vue2.js.map +1 -1
  513. package/js/x-modules/scroll/store/emitters.js +1 -0
  514. package/js/x-modules/scroll/store/emitters.js.map +1 -1
  515. package/js/x-modules/search/components/partial-results-list.vue.js +1 -2
  516. package/js/x-modules/search/components/partial-results-list.vue.js.map +1 -1
  517. package/js/x-modules/search/components/results-list.vue.js +2 -2
  518. package/js/x-modules/search/components/results-list.vue.js.map +1 -1
  519. package/js/x-modules/search/components/sort-dropdown.vue.js +1 -3
  520. package/js/x-modules/search/components/sort-dropdown.vue.js.map +1 -1
  521. package/js/x-modules/search/store/actions/fetch-and-save-search-response.action.js +10 -3
  522. package/js/x-modules/search/store/actions/fetch-and-save-search-response.action.js.map +1 -1
  523. package/js/x-modules/search/store/actions/save-search-response.action.js +3 -1
  524. package/js/x-modules/search/store/actions/save-search-response.action.js.map +1 -1
  525. package/js/x-modules/search/store/emitters.js +1 -0
  526. package/js/x-modules/search/store/emitters.js.map +1 -1
  527. package/js/x-modules/search/store/module.js +9 -3
  528. package/js/x-modules/search/store/module.js.map +1 -1
  529. package/js/x-modules/search/wiring.js +4 -0
  530. package/js/x-modules/search/wiring.js.map +1 -1
  531. package/js/x-modules/search-box/components/clear-search-input.vue.js +1 -2
  532. package/js/x-modules/search-box/components/clear-search-input.vue.js.map +1 -1
  533. package/js/x-modules/search-box/components/search-button.vue.js +1 -2
  534. package/js/x-modules/search-box/components/search-button.vue.js.map +1 -1
  535. package/js/x-modules/search-box/store/emitters.js +1 -0
  536. package/js/x-modules/search-box/store/emitters.js.map +1 -1
  537. package/js/x-modules/semantic-queries/components/semantic-queries.vue.js +1 -3
  538. package/js/x-modules/semantic-queries/components/semantic-queries.vue.js.map +1 -1
  539. package/js/x-modules/semantic-queries/components/semantic-query.vue.js +1 -4
  540. package/js/x-modules/semantic-queries/components/semantic-query.vue.js.map +1 -1
  541. package/js/x-modules/semantic-queries/store/getters/normalized-query.getter.js +1 -1
  542. package/js/x-modules/semantic-queries/store/getters/normalized-query.getter.js.map +1 -1
  543. package/js/x-modules/semantic-queries/store/getters/request.getter.js +5 -4
  544. package/js/x-modules/semantic-queries/store/getters/request.getter.js.map +1 -1
  545. package/js/x-modules/semantic-queries/store/getters/semanti-queries-query.getter.js +18 -0
  546. package/js/x-modules/semantic-queries/store/getters/semanti-queries-query.getter.js.map +1 -0
  547. package/js/x-modules/semantic-queries/store/module.js +8 -2
  548. package/js/x-modules/semantic-queries/store/module.js.map +1 -1
  549. package/js/x-modules/semantic-queries/wiring.js +5 -0
  550. package/js/x-modules/semantic-queries/wiring.js.map +1 -1
  551. package/js/x-modules/tagging/components/tagging.vue.js +8 -7
  552. package/js/x-modules/tagging/components/tagging.vue.js.map +1 -1
  553. package/js/x-modules/tagging/service/{pdp-add-to-cart.service.js → external-tagging.service.js} +56 -25
  554. package/js/x-modules/tagging/service/external-tagging.service.js.map +1 -0
  555. package/js/x-modules/tagging/store/emitters.js +1 -1
  556. package/js/x-modules/tagging/store/emitters.js.map +1 -1
  557. package/js/x-modules/tagging/store/module.js +7 -3
  558. package/js/x-modules/tagging/store/module.js.map +1 -1
  559. package/js/x-modules/tagging/wiring.js +110 -9
  560. package/js/x-modules/tagging/wiring.js.map +1 -1
  561. package/js/x-modules/url/components/url-handler.vue.js.map +1 -1
  562. package/js/x-modules/url/components/url-handler.vue2.js +4 -5
  563. package/js/x-modules/url/components/url-handler.vue2.js.map +1 -1
  564. package/js/x-modules/url/store/emitters.js +1 -0
  565. package/js/x-modules/url/store/emitters.js.map +1 -1
  566. package/js/x-modules/url/store/getters/url-params.getter.js +2 -3
  567. package/js/x-modules/url/store/getters/url-params.getter.js.map +1 -1
  568. package/js/x-modules/url/store/initial-state.js +2 -1
  569. package/js/x-modules/url/store/initial-state.js.map +1 -1
  570. package/js/x-modules/url/store/module.js +3 -0
  571. package/js/x-modules/url/store/module.js.map +1 -1
  572. package/js/x-modules/url/wiring.js +10 -1
  573. package/js/x-modules/url/wiring.js.map +1 -1
  574. package/package.json +50 -49
  575. package/related-prompts/index.d.ts +1 -0
  576. package/related-prompts/index.js +9 -0
  577. package/report/x-adapter-platform.api.json +895 -67
  578. package/report/x-components.api.json +16491 -17162
  579. package/report/x-components.api.md +847 -215
  580. package/report/x-types.api.json +320 -4
  581. package/tagging/index.js +2 -2
  582. package/types/adapter/mocked-responses.d.ts +3 -0
  583. package/types/adapter/mocked-responses.d.ts.map +1 -1
  584. package/types/components/base-dropdown.vue.d.ts +5 -5
  585. package/types/components/base-dropdown.vue.d.ts.map +1 -1
  586. package/types/components/base-grid.vue.d.ts +3 -3
  587. package/types/components/base-slider.vue.d.ts +74 -0
  588. package/types/components/base-slider.vue.d.ts.map +1 -0
  589. package/types/components/base-switch.vue.d.ts +2 -1
  590. package/types/components/base-switch.vue.d.ts.map +1 -1
  591. package/types/components/base-teleport.vue.d.ts +13 -0
  592. package/types/components/base-teleport.vue.d.ts.map +1 -0
  593. package/types/components/base-variable-column-grid.vue.d.ts +3 -3
  594. package/types/components/display-click-provider.vue.d.ts +61 -0
  595. package/types/components/display-click-provider.vue.d.ts.map +1 -0
  596. package/types/components/global-x-bus.vue.d.ts +14 -0
  597. package/types/components/global-x-bus.vue.d.ts.map +1 -1
  598. package/types/components/index.d.ts +4 -0
  599. package/types/components/index.d.ts.map +1 -1
  600. package/types/components/items-list.vue.d.ts +3 -3
  601. package/types/components/layouts/multi-column-max-width-layout.vue.d.ts +5 -5
  602. package/types/components/layouts/single-column-layout.vue.d.ts +3 -3
  603. package/types/components/modals/base-events-modal.vue.d.ts +2 -2
  604. package/types/components/modals/base-id-modal.vue.d.ts +2 -2
  605. package/types/components/modals/base-modal.vue.d.ts +10 -10
  606. package/types/components/modals/base-modal.vue.d.ts.map +1 -1
  607. package/types/components/modals/main-modal.vue.d.ts +2 -2
  608. package/types/components/page-selector.vue.d.ts +125 -0
  609. package/types/components/page-selector.vue.d.ts.map +1 -0
  610. package/types/components/panels/base-header-toggle-panel.vue.d.ts +5 -5
  611. package/types/components/panels/base-id-toggle-panel.vue.d.ts +5 -5
  612. package/types/components/panels/base-tabs-panel.vue.d.ts +8 -8
  613. package/types/components/panels/base-toggle-panel.vue.d.ts +3 -3
  614. package/types/components/result/base-result-add-to-cart.vue.d.ts +2 -0
  615. package/types/components/result/base-result-add-to-cart.vue.d.ts.map +1 -1
  616. package/types/components/result/base-result-image.vue.d.ts +10 -10
  617. package/types/components/result/base-result-image.vue.d.ts.map +1 -1
  618. package/types/components/sliding-panel.vue.d.ts +15 -5
  619. package/types/components/sliding-panel.vue.d.ts.map +1 -1
  620. package/types/components/snippet-callbacks.vue.d.ts +7 -0
  621. package/types/components/snippet-callbacks.vue.d.ts.map +1 -1
  622. package/types/components/suggestions/base-suggestions.vue.d.ts +3 -3
  623. package/types/composables/use-alias-api.d.ts +5 -0
  624. package/types/composables/use-alias-api.d.ts.map +1 -1
  625. package/types/composables/use-store.d.ts +2 -2
  626. package/types/composables/use-store.d.ts.map +1 -1
  627. package/types/directives/index.d.ts +1 -0
  628. package/types/directives/index.d.ts.map +1 -1
  629. package/types/directives/typing.d.ts +35 -0
  630. package/types/directives/typing.d.ts.map +1 -0
  631. package/types/index.d.ts +1 -0
  632. package/types/index.d.ts.map +1 -1
  633. package/types/store/index.d.ts +4 -1
  634. package/types/store/index.d.ts.map +1 -1
  635. package/types/tailwind/plugin-options.d.ts +1 -2
  636. package/types/tailwind/plugin-options.d.ts.map +1 -1
  637. package/types/types/animation-prop.d.ts +6 -2
  638. package/types/types/animation-prop.d.ts.map +1 -1
  639. package/types/types/origin.d.ts +3 -3
  640. package/types/types/origin.d.ts.map +1 -1
  641. package/types/types/page-mode.d.ts +2 -0
  642. package/types/types/page-mode.d.ts.map +1 -0
  643. package/types/types/url-params.d.ts +1 -0
  644. package/types/types/url-params.d.ts.map +1 -1
  645. package/types/views/home/types.d.ts +3 -0
  646. package/types/views/home/types.d.ts.map +1 -1
  647. package/types/wiring/events.types.d.ts +3 -1
  648. package/types/wiring/events.types.d.ts.map +1 -1
  649. package/types/x-installer/x-installer/types.d.ts +2 -2
  650. package/types/x-installer/x-installer/types.d.ts.map +1 -1
  651. package/types/x-installer/x-installer/x-installer.d.ts +4 -4
  652. package/types/x-installer/x-installer/x-installer.d.ts.map +1 -1
  653. package/types/x-modules/empathize/components/empathize.vue.d.ts +6 -6
  654. package/types/x-modules/empathize/components/empathize.vue.d.ts.map +1 -1
  655. package/types/x-modules/facets/components/facets/facets.vue.d.ts +3 -3
  656. package/types/x-modules/facets/components/filters/hierarchical-filter.vue.d.ts +9 -2
  657. package/types/x-modules/facets/components/filters/hierarchical-filter.vue.d.ts.map +1 -1
  658. package/types/x-modules/facets/components/filters/simple-filter.vue.d.ts +7 -0
  659. package/types/x-modules/facets/components/filters/simple-filter.vue.d.ts.map +1 -1
  660. package/types/x-modules/facets/components/lists/filters-list.vue.d.ts +3 -3
  661. package/types/x-modules/facets/components/lists/selected-filters-list.vue.d.ts +3 -3
  662. package/types/x-modules/history-queries/components/my-history.vue.d.ts +3 -3
  663. package/types/x-modules/identifier-results/components/identifier-results.vue.d.ts +3 -3
  664. package/types/x-modules/next-queries/components/next-queries-list.vue.d.ts +3 -3
  665. package/types/x-modules/next-queries/index.d.ts +1 -0
  666. package/types/x-modules/next-queries/index.d.ts.map +1 -1
  667. package/types/x-modules/queries-preview/components/query-preview-list.vue.d.ts +3 -3
  668. package/types/x-modules/queries-preview/components/query-preview-list.vue.d.ts.map +1 -1
  669. package/types/x-modules/queries-preview/components/query-preview.vue.d.ts.map +1 -1
  670. package/types/x-modules/queries-preview/store/actions/fetch-and-save-query-preview.action.d.ts.map +1 -1
  671. package/types/x-modules/queries-preview/store/module.d.ts.map +1 -1
  672. package/types/x-modules/queries-preview/utils/get-hash-from-query-preview.d.ts +4 -2
  673. package/types/x-modules/queries-preview/utils/get-hash-from-query-preview.d.ts.map +1 -1
  674. package/types/x-modules/recommendations/components/recommendations.vue.d.ts +3 -3
  675. package/types/x-modules/related-prompts/components/index.d.ts +4 -0
  676. package/types/x-modules/related-prompts/components/index.d.ts.map +1 -0
  677. package/types/x-modules/related-prompts/components/related-prompt.vue.d.ts +28 -0
  678. package/types/x-modules/related-prompts/components/related-prompt.vue.d.ts.map +1 -0
  679. package/types/x-modules/related-prompts/components/related-prompts-list.vue.d.ts +106 -0
  680. package/types/x-modules/related-prompts/components/related-prompts-list.vue.d.ts.map +1 -0
  681. package/types/x-modules/related-prompts/components/related-prompts-tag-list.vue.d.ts +131 -0
  682. package/types/x-modules/related-prompts/components/related-prompts-tag-list.vue.d.ts.map +1 -0
  683. package/types/x-modules/related-prompts/events.types.d.ts +41 -0
  684. package/types/x-modules/related-prompts/events.types.d.ts.map +1 -0
  685. package/types/x-modules/related-prompts/index.d.ts +6 -0
  686. package/types/x-modules/related-prompts/index.d.ts.map +1 -0
  687. package/types/x-modules/related-prompts/store/actions/fetch-and-save-related-prompts.action.d.ts +17 -0
  688. package/types/x-modules/related-prompts/store/actions/fetch-and-save-related-prompts.action.d.ts.map +1 -0
  689. package/types/x-modules/related-prompts/store/actions/fetch-related-prompts.action.d.ts +13 -0
  690. package/types/x-modules/related-prompts/store/actions/fetch-related-prompts.action.d.ts.map +1 -0
  691. package/types/x-modules/related-prompts/store/actions/set-url-params.action.d.ts +11 -0
  692. package/types/x-modules/related-prompts/store/actions/set-url-params.action.d.ts.map +1 -0
  693. package/types/x-modules/related-prompts/store/emitters.d.ts +10 -0
  694. package/types/x-modules/related-prompts/store/emitters.d.ts.map +1 -0
  695. package/types/x-modules/related-prompts/store/getters/index.d.ts +3 -0
  696. package/types/x-modules/related-prompts/store/getters/index.d.ts.map +1 -0
  697. package/types/x-modules/related-prompts/store/getters/related-prompts-query.getter.d.ts +13 -0
  698. package/types/x-modules/related-prompts/store/getters/related-prompts-query.getter.d.ts.map +1 -0
  699. package/types/x-modules/related-prompts/store/getters/request.getter.d.ts +14 -0
  700. package/types/x-modules/related-prompts/store/getters/request.getter.d.ts.map +1 -0
  701. package/types/x-modules/related-prompts/store/index.d.ts +6 -0
  702. package/types/x-modules/related-prompts/store/index.d.ts.map +1 -0
  703. package/types/x-modules/related-prompts/store/module.d.ts +8 -0
  704. package/types/x-modules/related-prompts/store/module.d.ts.map +1 -0
  705. package/types/x-modules/related-prompts/store/types.d.ts +125 -0
  706. package/types/x-modules/related-prompts/store/types.d.ts.map +1 -0
  707. package/types/x-modules/related-prompts/types.d.ts +10 -0
  708. package/types/x-modules/related-prompts/types.d.ts.map +1 -0
  709. package/types/x-modules/related-prompts/wiring.d.ts +42 -0
  710. package/types/x-modules/related-prompts/wiring.d.ts.map +1 -0
  711. package/types/x-modules/related-prompts/x-module.d.ts +16 -0
  712. package/types/x-modules/related-prompts/x-module.d.ts.map +1 -0
  713. package/types/x-modules/related-tags/components/related-tags.vue.d.ts +3 -3
  714. package/types/x-modules/scroll/components/scroll-to-top.vue.d.ts +5 -5
  715. package/types/x-modules/search/components/banners-list.vue.d.ts +3 -3
  716. package/types/x-modules/search/components/partial-results-list.vue.d.ts +3 -3
  717. package/types/x-modules/search/components/promoteds-list.vue.d.ts +3 -3
  718. package/types/x-modules/search/components/results-list.vue.d.ts +3 -3
  719. package/types/x-modules/search/components/sort-dropdown.vue.d.ts +1 -1
  720. package/types/x-modules/search/config.types.d.ts +2 -0
  721. package/types/x-modules/search/config.types.d.ts.map +1 -1
  722. package/types/x-modules/search/events.types.d.ts +4 -0
  723. package/types/x-modules/search/events.types.d.ts.map +1 -1
  724. package/types/x-modules/search/store/actions/fetch-and-save-search-response.action.d.ts.map +1 -1
  725. package/types/x-modules/search/store/actions/save-search-response.action.d.ts.map +1 -1
  726. package/types/x-modules/search/store/module.d.ts +2 -0
  727. package/types/x-modules/search/store/module.d.ts.map +1 -1
  728. package/types/x-modules/search/store/types.d.ts +9 -1
  729. package/types/x-modules/search/store/types.d.ts.map +1 -1
  730. package/types/x-modules/search/wiring.d.ts +4 -0
  731. package/types/x-modules/search/wiring.d.ts.map +1 -1
  732. package/types/x-modules/search-box/components/search-input-placeholder.vue.d.ts +3 -3
  733. package/types/x-modules/semantic-queries/store/getters/index.d.ts +1 -0
  734. package/types/x-modules/semantic-queries/store/getters/index.d.ts.map +1 -1
  735. package/types/x-modules/semantic-queries/store/getters/normalized-query.getter.d.ts +1 -1
  736. package/types/x-modules/semantic-queries/store/getters/request.getter.d.ts +2 -1
  737. package/types/x-modules/semantic-queries/store/getters/request.getter.d.ts.map +1 -1
  738. package/types/x-modules/semantic-queries/store/getters/semanti-queries-query.getter.d.ts +13 -0
  739. package/types/x-modules/semantic-queries/store/getters/semanti-queries-query.getter.d.ts.map +1 -0
  740. package/types/x-modules/semantic-queries/store/module.d.ts.map +1 -1
  741. package/types/x-modules/semantic-queries/store/types.d.ts +13 -1
  742. package/types/x-modules/semantic-queries/store/types.d.ts.map +1 -1
  743. package/types/x-modules/semantic-queries/wiring.d.ts +3 -0
  744. package/types/x-modules/semantic-queries/wiring.d.ts.map +1 -1
  745. package/types/x-modules/tagging/components/tagging.vue.d.ts +14 -12
  746. package/types/x-modules/tagging/components/tagging.vue.d.ts.map +1 -1
  747. package/types/x-modules/tagging/config.types.d.ts +3 -3
  748. package/types/x-modules/tagging/config.types.d.ts.map +1 -1
  749. package/types/x-modules/tagging/events.types.d.ts +2 -2
  750. package/types/x-modules/tagging/service/{pdp-add-to-cart.service.d.ts → external-tagging.service.d.ts} +31 -13
  751. package/types/x-modules/tagging/service/external-tagging.service.d.ts.map +1 -0
  752. package/types/x-modules/tagging/service/index.d.ts +1 -1
  753. package/types/x-modules/tagging/service/index.d.ts.map +1 -1
  754. package/types/x-modules/tagging/service/types.d.ts +13 -4
  755. package/types/x-modules/tagging/service/types.d.ts.map +1 -1
  756. package/types/x-modules/tagging/store/module.d.ts.map +1 -1
  757. package/types/x-modules/tagging/wiring.d.ts +54 -2
  758. package/types/x-modules/tagging/wiring.d.ts.map +1 -1
  759. package/types/x-modules/url/components/url-handler.vue.d.ts.map +1 -1
  760. package/types/x-modules/url/store/getters/url-params.getter.d.ts +2 -3
  761. package/types/x-modules/url/store/getters/url-params.getter.d.ts.map +1 -1
  762. package/types/x-modules/url/store/initial-state.d.ts.map +1 -1
  763. package/types/x-modules/url/store/module.d.ts.map +1 -1
  764. package/types/x-modules/url/store/types.d.ts +6 -0
  765. package/types/x-modules/url/store/types.d.ts.map +1 -1
  766. package/types/x-modules/url/wiring.d.ts +9 -0
  767. package/types/x-modules/url/wiring.d.ts.map +1 -1
  768. package/types/x-modules/x-modules.types.d.ts +2 -0
  769. package/types/x-modules/x-modules.types.d.ts.map +1 -1
  770. package/url/index.js +1 -1
  771. package/docs/API-reference/api/x-components.defaultpdpaddtocartservice.clickedresultstoragekey.md +0 -11
  772. package/docs/API-reference/api/x-components.defaultpdpaddtocartservice.clickedresultstoragettlms.md +0 -11
  773. package/docs/API-reference/api/x-components.defaultpdpaddtocartservice.instance.md +0 -13
  774. package/docs/API-reference/api/x-components.defaultpdpaddtocartservice.localstorageservice.md +0 -11
  775. package/docs/API-reference/api/x-components.defaultpdpaddtocartservice.md +0 -41
  776. package/docs/API-reference/api/x-components.defaultpdpaddtocartservice.result_clicked_id_key.md +0 -13
  777. package/docs/API-reference/api/x-components.defaultpdpaddtocartservice.sessionstorageservice.md +0 -11
  778. package/docs/API-reference/api/x-components.pdpaddtocartservice.md +0 -22
  779. package/docs/API-reference/api/x-components.taggingconfig.clickedresultstoragettlms.md +0 -13
  780. package/docs/API-reference/api/x-components.usestore.md +0 -19
  781. package/docs/assets/features/overview-my-history.svg +0 -279
  782. package/docs/assets/features/overview-product-results-card.svg +0 -128
  783. package/docs/assets/interface/build-search-ui.svg +0 -167
  784. package/docs/assets/interface/experience-search-intro.svg +0 -1
  785. package/docs/assets/interface/integration-guide.svg +0 -1
  786. package/docs/assets/interface/integration-video.png +0 -0
  787. package/docs/assets/interface/x-architecture.svg +0 -1
  788. package/docs/assets/interface/x-empathize.gif +0 -0
  789. package/docs/assets/interface/x-facets.gif +0 -0
  790. package/docs/assets/interface/x-facets.svg +0 -189
  791. package/docs/assets/interface/x-history-queries.gif +0 -0
  792. package/docs/assets/interface/x-id-results.gif +0 -0
  793. package/docs/assets/interface/x-next-queries.gif +0 -0
  794. package/docs/assets/interface/x-popular-searches.gif +0 -0
  795. package/docs/assets/interface/x-query-suggestions.gif +0 -0
  796. package/docs/assets/interface/x-recommendations.gif +0 -0
  797. package/docs/assets/interface/x-recommendations.svg +0 -472
  798. package/docs/assets/interface/x-related-tags.gif +0 -0
  799. package/docs/assets/interface/x-results-layout.svg +0 -259
  800. package/docs/assets/interface/x-search-box-elements.svg +0 -1
  801. package/docs/assets/interface/x-search-box.svg +0 -60
  802. package/docs/build-search-ui/README.md +0 -127
  803. package/docs/build-search-ui/sidebar.js +0 -7
  804. package/docs/build-search-ui/web-archetype-development-guide.md +0 -186
  805. package/docs/build-search-ui/web-archetype-integration-guide.md +0 -458
  806. package/docs/build-search-ui/web-how-to-use-x-components-guide.md +0 -200
  807. package/docs/build-search-ui/web-x-architecture.md +0 -83
  808. package/docs/build-search-ui/web-x-components-development-guide.md +0 -157
  809. package/docs/experience-search-and-discovery/README.md +0 -132
  810. package/docs/experience-search-and-discovery/empathize.md +0 -119
  811. package/docs/experience-search-and-discovery/facets-and-filters.md +0 -154
  812. package/docs/experience-search-and-discovery/history-queries.md +0 -70
  813. package/docs/experience-search-and-discovery/id-results.md +0 -49
  814. package/docs/experience-search-and-discovery/my-history.md +0 -60
  815. package/docs/experience-search-and-discovery/next-queries.md +0 -72
  816. package/docs/experience-search-and-discovery/popular-searches.md +0 -50
  817. package/docs/experience-search-and-discovery/product-results-ui.md +0 -82
  818. package/docs/experience-search-and-discovery/query-suggestions.md +0 -48
  819. package/docs/experience-search-and-discovery/recommendations.md +0 -134
  820. package/docs/experience-search-and-discovery/related-tags.md +0 -66
  821. package/docs/experience-search-and-discovery/search-box.md +0 -99
  822. package/docs/experience-search-and-discovery/serp-ui.md +0 -125
  823. package/docs/experience-search-and-discovery/sidebar.js +0 -17
  824. package/docs/experience-search-and-discovery/web-local-storage.md +0 -30
  825. package/docs/input-status-machine-state.png +0 -0
  826. package/js/composables/use-store.js +0 -15
  827. package/js/composables/use-store.js.map +0 -1
  828. package/js/utils/options-api.js +0 -4
  829. package/js/utils/options-api.js.map +0 -1
  830. package/js/x-modules/tagging/service/pdp-add-to-cart.service.js.map +0 -1
  831. package/types/utils/options-api.d.ts +0 -3
  832. package/types/utils/options-api.d.ts.map +0 -1
  833. package/types/x-modules/tagging/service/pdp-add-to-cart.service.d.ts.map +0 -1
@@ -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 >\n <!-- @slot (Required) Modal container content -->\n <slot />\n </div>\n </component>\n <component :is=\"overlayAnimation\">\n <div\n v-if=\"open\"\n @click=\"emitOverlayClicked\"\n @keydown=\"emitOverlayClicked\"\n class=\"x-modal__overlay\"\n :class=\"overlayClass\"\n data-test=\"modal-overlay\"\n />\n </component>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue';\n import { useDebounce } from '../../composables';\n import { AnimationProp } from '../../types';\n import { getTargetElement, FOCUSABLE_SELECTORS } from '../../utils';\n import { 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 */\n export 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;\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 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 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 if (props.referenceSelector) {\n const element = document.querySelector(props.referenceSelector) as HTMLElement;\n if (element) {\n referenceElement = element;\n resizeObserver.observe(element);\n }\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>\n import { BaseModal, FadeAndSlide } from '@empathyco/x-components';\n import Vue from 'vue';\n\n Vue.component('fadeAndSlide', FadeAndSlide);\n\n export default {\n components: {\n BaseModal\n },\n data() {\n return {\n open: false\n };\n }\n };\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>\n import { BaseModal, FadeAndSlide } from '@empathyco/x-components';\n import Vue from 'vue';\n\n Vue.component('fadeAndSlide', FadeAndSlide);\n\n export default {\n components: {\n BaseModal\n },\n data() {\n return {\n open: false\n };\n }\n };\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>\n import { BaseModal, FadeAndSlide } from '@empathyco/x-components';\n import Vue from 'vue';\n\n Vue.component('fadeAndSlide', FadeAndSlide);\n\n export default {\n components: {\n BaseModal\n },\n data() {\n return {\n open: false\n };\n }\n };\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-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 >\n <!-- @slot (Required) Modal container content -->\n <slot />\n </div>\n </component>\n <component :is=\"overlayAnimation\">\n <div\n v-if=\"open\"\n @click=\"emitOverlayClicked\"\n @keydown=\"emitOverlayClicked\"\n class=\"x-modal__overlay\"\n :class=\"overlayClass\"\n data-test=\"modal-overlay\"\n />\n </component>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue';\n import { useDebounce } from '../../composables';\n import { AnimationProp } from '../../types';\n import { getTargetElement, FOCUSABLE_SELECTORS } from '../../utils';\n import { 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 */\n export 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 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 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>\n import { BaseModal, FadeAndSlide } from '@empathyco/x-components';\n import Vue from 'vue';\n\n Vue.component('fadeAndSlide', FadeAndSlide);\n\n export default {\n components: {\n BaseModal\n },\n data() {\n return {\n open: false\n };\n }\n };\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>\n import { BaseModal, FadeAndSlide } from '@empathyco/x-components';\n import Vue from 'vue';\n\n Vue.component('fadeAndSlide', FadeAndSlide);\n\n export default {\n components: {\n BaseModal\n },\n data() {\n return {\n open: false\n };\n }\n };\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>\n import { BaseModal, FadeAndSlide } from '@empathyco/x-components';\n import Vue from 'vue';\n\n Vue.component('fadeAndSlide', FadeAndSlide);\n\n export default {\n components: {\n BaseModal\n },\n data() {\n return {\n open: false\n };\n }\n };\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCE;;;;;AAKE;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,KAAK,EAAE;;AAEL,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,QAAQ,EAAE,IAAG;AACd,SAAA;AACD;;;AAGE;AACF,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE,IAAG;AACb,SAAA;AACD;;;;AAIE;AACF,QAAA,iBAAiB,EAAE,MAAM;;AAEzB,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,OAAO,EAAE,MAAMA,WAAU;AAC1B,SAAA;AACD;;;AAGE;AACF,QAAA,gBAAgB,EAAE;AAChB,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,OAAO,EAAE,MAAM,IAAG;AACnB,SAAA;;AAED,QAAA,YAAY,EAAE,MAAM;;AAEpB,QAAA,YAAY,EAAE,MAAK;AACpB,KAAA;AACD,IAAA,KAAK,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC;AACxC,IAAA,KAAK,CAAC,KAAK,EAAE,EAAE,IAAG,EAAG,EAAA;;AAEnB,QAAA,MAAM,QAAS,GAAE,GAAG,EAAkB,CAAA;;AAEtC,QAAA,MAAM,eAAgB,GAAE,GAAG,EAAkB,CAAA;;AAG7C,QAAA,MAAM,oBAAmB,GAAI,GAAG,CAAC,EAAE,CAAC,CAAA;;AAEpC,QAAA,MAAM,oBAAmB,GAAI,GAAG,CAAC,EAAE,CAAC,CAAA;;AAEpC,QAAA,MAAM,iBAAgB,GAAI,GAAG,CAAC,KAAK,CAAC,CAAA;;AAEpC,QAAA,IAAI,gBAAyC,CAAA;;AAG7C,QAAA,SAAS,aAAa,GAAA;YACpB,oBAAoB,CAAC,KAAM,GAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA;YACzD,oBAAoB,CAAC,KAAI,GAAI,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAA;AACpE,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAO,GAAI,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,QAAO,GAAI,QAAQ,CAAA;SACnF;;AAGA,QAAA,SAAS,YAAY,GAAA;YACnB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,oBAAoB,CAAC,KAAK,CAAA;YACzD,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,QAAO,GAAI,oBAAoB,CAAC,KAAK,CAAA;SACtE;AAEA;;;;AAIE;QACF,SAAS,kBAAkB,CAAC,KAAY,EAAA;AACtC,YAAA,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAA;SAC9B;AAEA;;;;AAIE;QACF,SAAS,eAAe,CAAC,KAAiB,EAAA;AACxC,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7D,gBAAA,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;AAC7B,aAAA;SACF;AAEA;;;;;;;;AAQE;AACF,QAAA,SAAS,gBAAgB,GAAA;YACvB,UAAU,CAAC,MAAM;gBACf,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;AAC5D,aAAC,CAAC,CAAA;SACJ;;AAGA,QAAA,SAAS,mBAAmB,GAAA;YAC1B,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;SAC/D;AAEA;;;AAGE;AACF,QAAA,SAAS,QAAQ,GAAA;AACf,YAAA,MAAM,UAAU,GAAkB,KAAK,CAAC,IAAI,CAC1C,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC,mBAAmB,CAAE,IAAG,EAAC,CAClE,CAAA;AACD,YAAA,MAAM,OAAM,GAAI,UAAU,CAAC,IAAI,CAAC,OAAQ,IAAG,OAAO,CAAC,QAAQ,CAAA,IAAK,UAAU,CAAC,CAAC,CAAC,CAAA;YAC7E,OAAO,EAAE,KAAK,EAAE,CAAA;SAClB;AAEA;;;;;;;AAOE;QACF,eAAe,QAAQ,CAAC,MAAe,EAAA;AACrC,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,aAAa,EAAE,CAAA;AACf,gBAAA,gBAAgB,EAAE,CAAA;gBAClB,IAAI,KAAK,CAAC,WAAW,EAAE;oBACrB,MAAM,QAAQ,EAAE,CAAA;AAChB,oBAAA,QAAQ,EAAE,CAAA;AACZ,iBAAA;AACA,aAAA;AAAK,iBAAA;AACL,gBAAA,YAAY,EAAE,CAAA;AACd,gBAAA,mBAAmB,EAAE,CAAA;AACvB,aAAA;SACF;AAEA;;;AAGE;AACF,QAAA,MAAM,0BAA0B,WAAW,CACzC,MAAM;YACJ,MAAM,EAAE,MAAM,EAAE,CAAA,KAAM,gBAAgB,EAAE,qBAAqB,EAAC,IAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAA;AACtF,YAAA,QAAQ,CAAC,KAAM,CAAC,KAAK,CAAC,GAAE,GAAI,CAAA,EAAG,MAAO,GAAE,CAAC,CAAA,EAAA,CAAI,CAAA;YAC7C,QAAQ,CAAC,KAAM,CAAC,KAAK,CAAC,MAAK,GAAI,GAAG,CAAA;YAClC,QAAQ,CAAC,KAAM,CAAC,KAAK,CAAC,MAAK,GAAI,MAAM,CAAA;SACtC,EACD,GAAG,EACH,EAAE,OAAO,EAAE,IAAK,EAAA,CACjB,CAAA;AAED,QAAA,IAAI,cAA8B,CAAA;QAElC,SAAS,CAAC,MAAM;YACd,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YACjC,IAAI,KAAK,CAAC,IAAI,EAAE;gBACd,QAAQ,CAAC,IAAI,CAAC,CAAA;AAChB,aAAA;AAEA,YAAA,iBAAiB,IAAI,cAAc,CAAC,uBAAuB,CAAC,CAAA;YAE5D,KAAK,CACH,MAAM,KAAK,CAAC,iBAAiB,EAC7B,MAAM;gBACJ,cAAc,CAAC,UAAU,EAAE,CAAA;gBAE3B,IAAI,KAAK,CAAC,iBAAiB,EAAE;oBAC3B,MAAM,OAAM,GAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,iBAAiB,CAAgB,CAAA;AAC9E,oBAAA,IAAI,OAAO,EAAE;wBACX,mBAAmB,OAAO,CAAA;AAC1B,wBAAA,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AACjC,qBAAA;AACA,iBAAA;AAAK,qBAAA;oBACL,gBAAe,GAAI,SAAS,CAAA;AAC5B,oBAAA,uBAAuB,EAAE,CAAA;AAC3B,iBAAA;AACF,aAAC,EACD,EAAE,SAAS,EAAE,IAAK,EAAA,CACnB,CAAA;AACH,SAAC,CAAC,CAAA;QAEF,eAAe,CAAC,MAAM;YACpB,IAAI,KAAK,CAAC,IAAI,EAAE;AACd,gBAAA,mBAAmB,EAAE,CAAA;AACrB,gBAAA,YAAY,EAAE,CAAA;AAChB,aAAA;YACA,cAAc,CAAC,UAAU,EAAE,CAAA;AAC7B,SAAC,CAAC,CAAA;QAEF,OAAO;YACL,kBAAkB;YAClB,iBAAiB;YACjB,eAAe;YACf,QAAO;SACR,CAAA;KACH;AACD,CAAA,CAAC;;;;"}
@@ -1,21 +1,20 @@
1
1
  import _sfc_main from './page-loader-button.vue2.js';
2
- import { resolveComponent, openBlock, createElementBlock, createCommentVNode, renderSlot, normalizeProps, guardReactiveProps, createElementVNode, toDisplayString, createVNode, normalizeClass, withCtx, createTextVNode } from 'vue';
2
+ import { resolveComponent, openBlock, createElementBlock, renderSlot, normalizeProps, guardReactiveProps, createElementVNode, toDisplayString, createVNode, normalizeClass, withCtx, createTextVNode } from 'vue';
3
+ import './page-loader-button.vue3.js';
3
4
  import _export_sfc from '../_virtual/_plugin-vue_export-helper.js';
4
5
 
5
6
  const _hoisted_1 = {
6
- class: "x-flex x-flex-col x-items-center x-py-32",
7
+ class: "x-page-loader",
7
8
  "data-test": "page-loader"
8
9
  };
9
10
  const _hoisted_2 = {
10
- class: "x-text x-py-16",
11
+ class: "x-page-loader__text-content",
11
12
  "data-test": "text-content"
12
13
  };
13
14
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
14
15
  const _component_BaseEventButton = resolveComponent("BaseEventButton");
15
16
  return openBlock(), createElementBlock("div", _hoisted_1, [
16
- createCommentVNode("\n @slot default\n @binding {number} resultsLength - The search result's length\n @binding {number} totalResults - The totalResults of a searched query\n "),
17
17
  renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps({ resultsLength: _ctx.resultsLength, totalResults: _ctx.totalResults })), () => [
18
- createCommentVNode(" @slot Rendered count with a text and the number of results displayed & remaining. "),
19
18
  renderSlot(_ctx.$slots, "textContent", {
20
19
  resultsLength: _ctx.resultsLength,
21
20
  totalResults: _ctx.totalResults
@@ -27,7 +26,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
27
26
  1
28
27
  /* TEXT */
29
28
  )
30
- ]),
29
+ ], true),
31
30
  createVNode(_component_BaseEventButton, {
32
31
  class: normalizeClass(["x-button", _ctx.buttonClasses]),
33
32
  events: _ctx.events,
@@ -35,18 +34,17 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
35
34
  "aria-label": "Load"
36
35
  }, {
37
36
  default: withCtx(() => [
38
- createCommentVNode(" @slot Button content with a text, an icon or both "),
39
37
  renderSlot(_ctx.$slots, "buttonContent", {}, () => [
40
38
  createTextVNode("Load")
41
- ])
39
+ ], true)
42
40
  ]),
43
41
  _: 3
44
42
  /* FORWARDED */
45
43
  }, 8, ["class", "events"])
46
- ])
44
+ ], true)
47
45
  ]);
48
46
  }
49
- var pageLoaderButton = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
47
+ var pageLoaderButton = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-1e62f4ee"]]);
50
48
 
51
49
  export { pageLoaderButton as default };
52
50
  //# sourceMappingURL=page-loader-button.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-loader-button.vue.js","sources":["../../../src/components/page-loader-button.vue"],"sourcesContent":["<template>\n <div class=\"x-flex x-flex-col x-items-center x-py-32\" 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\" :resultsLength=\"resultsLength\" :totalResults=\"totalResults\">\n <p class=\"x-text x-py-16\" data-test=\"text-content\">\n You are seeing {{ resultsLength }} of {{ totalResults }} results\n </p>\n </slot>\n <BaseEventButton\n class=\"x-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\">\n import { computed, defineComponent, PropType } from 'vue';\n import { VueCSSClasses } from '../utils/types';\n import { use$x } from '../composables';\n import { XEventsTypes } from '../wiring';\n import 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 */\n export 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<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>\n import { PageLoaderButton } from '@empathyco/x-components';\n\n export 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>\n import { PageLoaderButton } from '@empathyco/x-components';\n\n export 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>\n import { PageLoaderButton } from '@empathyco/x-components';\n\n export 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>\n import { PageLoaderButton } from '@empathyco/x-components';\n\n export 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":["_resolveComponent","_openBlock","_createElementBlock","_createCommentVNode","_renderSlot","_normalizeProps","_guardReactiveProps","resultsLength","totalResults","_createElementVNode","_toDisplayString","events","_withCtx"],"mappings":";;;;MACwD,UAAU,GAAA;AAAA,EAAA,KAAA,EAAA,0CAAA;;;MAShC,UAAU,GAAA;AAAA,EAAA,KAAA,EAAA,gBAAA;;;;qCAT1CA,gBAwBM,CAAA,iBAAA,CAAA,CAAA;AAlBJ,EAAA,OAAAC,SAAA,EAPJ,EAAAC,kBAAA,CAAA,KAAA,EAAA,UAAA,EAAA;AAAA,IAAAC,kBAAA,CAQM,wLAA0F,CAAA;AAAA,IAAAC,UAAA,CAC1F,IAIO,CAAA,MAAA,EAAA,SAAA,EAAAC,cAAA,CAAAC,kBAAA,CAAA,EAAA,aAAA,EAAA,IAAA,CAAA,aAAA,EAAA,YAAA,EAAA,IAAA,CAAA,YAAA,EAAA,CAAA,CAAA,EAAA,MAAA;AAAA,MAAAH,kBAAA,CAJkCI,qFAAa,CAAA;AAAA,MAAAH,UAAA,CAAG,KAAcI,MAAY,EAAA,aAAA,EAAA;AAAA,QAI5E,aAAA,EAAA,IAAA,CAAA,aAAA;AAAA,QAHL,YAAA,EAAA,IAAA,CAAA,YAAA;AAAA,OAAA,EAAA,MAAA;AAIF,QAAAC,kBAAA;AAAA,UASkB,GAAA;AAAA,UAAA,UAAA;AAAA,UAAA,kBAAA,GAAAC,eAAA,CAAA,IAAA,CAAA,aAAA,CAAA,GAAA,MAAA,GAAAA,eAAA,CAAA,IAAA,CAAA,YAAA,CAAA,GAAA,WAAA;AAAA,UAAA,CAAA;AAAA;AAAA,SAAA;AAAA,OAAA,CAAA;kBANPC,0BAAM,EAAA;AAAA,QACf,sBAAU,CAAc,UAAA,EAAA,IAAA,CAAA,aAAA,CAAA,CAAA;AAAA,QACxB,MAAU,EAAA,IAAA,CAAA,MAAA;AAAA,QAAA,WAAA,EAAA,cAAA;AAnBlB,QAAA,YAAA,EAAA,MAAA;AAAA,OAAA,EAAA;iBAsBQC,OAAsC,CAAA,MAAA;AAAA,UAAAT,kBAAA,CAAX,qDAAI,CAAA;AAAA,UAAAC,UAAA,CAAA,IAAA,CAAA,MAAA,EAAA,eAAA,EAAA,EAAA,EAAA,MAAA;;AAtBvC,WAAA,CAAA;AAAA,SAAA,CAAA;;;;;;;;;;;"}
1
+ {"version":3,"file":"page-loader-button.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\" :resultsLength=\"resultsLength\" :totalResults=\"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=\"x-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\">\n import { computed, defineComponent, PropType } from 'vue';\n import { VueCSSClasses } from '../utils/types';\n import { use$x } from '../composables';\n import { XEventsTypes } from '../wiring';\n import 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 */\n export 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>\n import { PageLoaderButton } from '@empathyco/x-components';\n\n export 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>\n import { PageLoaderButton } from '@empathyco/x-components';\n\n export 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>\n import { PageLoaderButton } from '@empathyco/x-components';\n\n export 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>\n import { PageLoaderButton } from '@empathyco/x-components';\n\n export 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":["_resolveComponent","_openBlock","_createElementBlock","_renderSlot","resultsLength","_normalizeProps","_guardReactiveProps","totalResults","_createElementVNode","_toDisplayString","_createVNode","events","_withCtx"],"mappings":";;;;;MAC6B,UAAU,GAAA;AAAA,EAAA,KAAA,EAAA,eAAA;;;MASQ,UAAU,GAAA;AAAA,EAAA,KAAA,EAAA,6BAAA;;;;qCATvDA,gBAwBM,CAAA,iBAAA,CAAA,CAAA;SAhBFC,SAIO,EAAA,EAAAC,kBAAA,CAAA,KAAA,EAAA,UAAA,EAAA;AAAA,IAJmBC,UAAA,CAAA,IAAA,CAAa,QAAEC,SAAa,EAAAC,cAAA,CAAAC,kBAAA,CAAA,EAAA,aAAA,EAAA,IAAA,CAAA,aAAA,EAAA,YAAA,EAAA,IAAA,CAAA,YAAA,EAAA,CAAA,CAAA,EAAA,MAAA;AAAA,MAAAH,UAAA,CAAG,KAAcI,MAAY,EAAA,aAAA,EAAA;AAAA,QAI5E,aAAA,EAAA,IAAA,CAAA,aAAA;AAAA,QAHL,YAAA,EAAA,IAAA,CAAA,YAAA;AAAA,OAAA,EAAA,MAAA;AAIF,QAAAC,kBAAA;AAAA,UASkB,GAAA;AAAA,UAAA,UAAA;AAAA,UAAA,kBAAA,GAAAC,eAAA,CAAA,IAAA,CAAA,aAAA,CAAA,GAAA,MAAA,GAAAA,eAAA,CAAA,IAAA,CAAA,YAAA,CAAA,GAAA,WAAA;AAAA,UAAA,CAAA;AAAA;AAAA,SAAA;AAAA,OAAA,EARhB,IAAK,CAAA;AAAA,MAAAC,WAAA,CAEIC,0BAAM,EAAA;AAAA,QACf,sBAAU,CAAc,UAAA,EAAA,IAAA,CAAA,aAAA,CAAA,CAAA;AAAA,QACxB,MAAU,EAAA,IAAA,CAAA,MAAA;AAAA,QAAA,WAAA,EAAA,cAAA;AAnBlB,QAAA,YAAA,EAAA,MAAA;AAAA,OAAA,EAAA;iBAAAC,OAsBmC,CAAA,MAAA;AAAA,UAAAT,UAAA,CAAA,IAAA,CAAA,MAAA,EAAA,eAAA,EAAA,EAAA,EAAA,MAAA;;AAtBnC,WAAA,EAAA,IAAA,CAAA;AAAA,SAAA,CAAA;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"page-loader-button.vue2.js","sources":["../../../src/components/page-loader-button.vue"],"sourcesContent":["<template>\n <div class=\"x-flex x-flex-col x-items-center x-py-32\" 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\" :resultsLength=\"resultsLength\" :totalResults=\"totalResults\">\n <p class=\"x-text x-py-16\" data-test=\"text-content\">\n You are seeing {{ resultsLength }} of {{ totalResults }} results\n </p>\n </slot>\n <BaseEventButton\n class=\"x-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\">\n import { computed, defineComponent, PropType } from 'vue';\n import { VueCSSClasses } from '../utils/types';\n import { use$x } from '../composables';\n import { XEventsTypes } from '../wiring';\n import 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 */\n export 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<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>\n import { PageLoaderButton } from '@empathyco/x-components';\n\n export 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>\n import { PageLoaderButton } from '@empathyco/x-components';\n\n export 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>\n import { PageLoaderButton } from '@empathyco/x-components';\n\n export 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>\n import { PageLoaderButton } from '@empathyco/x-components';\n\n export 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":";;;;;;;;;;;;;;;AAmCE;;;;;;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,EAAC;AACX,SAAA;AACD;;;;AAIE;AACF,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,MAAwC;AAChD,SAAA;AACD,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAA;AACT,QAAA,MAAM,EAAC,GAAI,KAAK,EAAE,CAAA;AAClB,QAAA,MAAM,aAAY,GAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACvD,MAAM,YAAW,GAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,CAAA;AAEpD;;;;;AAKE;AACF,QAAA,MAAM,MAAK,GAAI,QAAQ,CAAwB,MAAM;YACnD,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,cAAc,CAAA;AACxE,SAAC,CAAC,CAAA;QAEF,OAAO;YACL,aAAa;YACb,YAAY;YACZ,MAAK;SACN,CAAA;KACH;AACD,CAAA,CAAC;;;;"}
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\" :resultsLength=\"resultsLength\" :totalResults=\"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=\"x-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\">\n import { computed, defineComponent, PropType } from 'vue';\n import { VueCSSClasses } from '../utils/types';\n import { use$x } from '../composables';\n import { XEventsTypes } from '../wiring';\n import 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 */\n export 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>\n import { PageLoaderButton } from '@empathyco/x-components';\n\n export 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>\n import { PageLoaderButton } from '@empathyco/x-components';\n\n export 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>\n import { PageLoaderButton } from '@empathyco/x-components';\n\n export 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>\n import { PageLoaderButton } from '@empathyco/x-components';\n\n export 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":";;;;;;;;;;;;;;;AAmCE;;;;;;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,EAAC;AACX,SAAA;AACD;;;;AAIE;AACF,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,MAAwC;AAChD,SAAA;AACD,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAA;AACT,QAAA,MAAM,EAAC,GAAI,KAAK,EAAE,CAAA;AAClB,QAAA,MAAM,aAAY,GAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACvD,MAAM,YAAW,GAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,CAAA;AAEpD;;;;;AAKE;AACF,QAAA,MAAM,MAAK,GAAI,QAAQ,CAAwB,MAAM;YACnD,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,cAAc,CAAA;AACxE,SAAC,CAAC,CAAA;QAEF,OAAO;YACL,aAAa;YACb,YAAY;YACZ,MAAK;SACN,CAAA;KACH;AACD,CAAA,CAAC;;;;"}
@@ -0,0 +1,7 @@
1
+ import injectCss from '../../tools/inject-css.js';
2
+
3
+ var css = ".x-page-loader[data-v-1e62f4ee]{align-items:center;display:flex;flex-direction:column;padding:32px 0}.x-page-loader__text-content[data-v-1e62f4ee]{padding:16px 0}";
4
+ injectCss(css);
5
+
6
+ export { css, css as default };
7
+ //# sourceMappingURL=page-loader-button.vue3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-loader-button.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,78 @@
1
+ import _sfc_main from './page-selector.vue2.js';
2
+ import { openBlock, createElementBlock, createElementVNode, normalizeClass, renderSlot, createTextVNode, Fragment, renderList, toDisplayString, createCommentVNode } from 'vue';
3
+ import './page-selector.vue3.js';
4
+ import _export_sfc from '../_virtual/_plugin-vue_export-helper.js';
5
+
6
+ const _hoisted_1 = {
7
+ key: 0,
8
+ class: "x-page-selector",
9
+ "aria-label": "Pagination"
10
+ };
11
+ const _hoisted_2 = ["disabled", "aria-disabled"];
12
+ const _hoisted_3 = ["onClick", "data-test", "aria-label", "aria-current"];
13
+ const _hoisted_4 = ["disabled", "aria-disabled"];
14
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
15
+ return _ctx.visiblePages?.length > 1 ? (openBlock(), createElementBlock("nav", _hoisted_1, [
16
+ createElementVNode("button", {
17
+ onClick: _cache[0] || (_cache[0] = ($event) => _ctx.selectPage(_ctx.currentPage - 1)),
18
+ class: normalizeClass(["x-button", _ctx.buttonClasses]),
19
+ disabled: _ctx.currentPage === 1,
20
+ "data-test": "previous-page-button",
21
+ "aria-label": "Previous page",
22
+ "aria-disabled": _ctx.currentPage === 1
23
+ }, [
24
+ renderSlot(_ctx.$slots, "previous-page-button", {}, () => [
25
+ createTextVNode("Prev")
26
+ ], true)
27
+ ], 10, _hoisted_2),
28
+ (openBlock(true), createElementBlock(
29
+ Fragment,
30
+ null,
31
+ renderList(_ctx.visiblePages, (page) => {
32
+ return openBlock(), createElementBlock("button", {
33
+ key: page.value,
34
+ onClick: ($event) => _ctx.selectPage(page.value),
35
+ class: normalizeClass(["x-button x-page-selector__page", [
36
+ _ctx.itemClasses(page.isSelected),
37
+ {
38
+ "x-page-selector__page--current": page.isSelected,
39
+ "x-page-selector__page--hidden": page.value === _ctx.hiddenPage
40
+ }
41
+ ]]),
42
+ "data-test": `page-button-${page.value}`,
43
+ "aria-label": `Page ${page.value}`,
44
+ "aria-current": page.isSelected ? "page" : void 0
45
+ }, [
46
+ renderSlot(_ctx.$slots, "page-button", {
47
+ page: page.value,
48
+ isSelected: page.isSelected
49
+ }, () => [
50
+ createTextVNode(
51
+ toDisplayString(page.value),
52
+ 1
53
+ /* TEXT */
54
+ )
55
+ ], true)
56
+ ], 10, _hoisted_3);
57
+ }),
58
+ 128
59
+ /* KEYED_FRAGMENT */
60
+ )),
61
+ createElementVNode("button", {
62
+ onClick: _cache[1] || (_cache[1] = ($event) => _ctx.selectPage(_ctx.currentPage + 1)),
63
+ class: normalizeClass(["x-button", _ctx.buttonClasses]),
64
+ disabled: _ctx.currentPage === _ctx.totalPages,
65
+ "data-test": "next-page-button",
66
+ "aria-label": "Next page",
67
+ "aria-disabled": _ctx.currentPage === _ctx.totalPages
68
+ }, [
69
+ renderSlot(_ctx.$slots, "next-page-button", {}, () => [
70
+ createTextVNode("Next")
71
+ ], true)
72
+ ], 10, _hoisted_4)
73
+ ])) : createCommentVNode("v-if", true);
74
+ }
75
+ var pageSelector = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-b08cf95a"]]);
76
+
77
+ export { pageSelector as default };
78
+ //# sourceMappingURL=page-selector.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-selector.vue.js","sources":["../../../src/components/page-selector.vue"],"sourcesContent":["<template>\n <nav v-if=\"visiblePages?.length > 1\" class=\"x-page-selector\" aria-label=\"Pagination\">\n <button\n @click=\"selectPage(currentPage - 1)\"\n class=\"x-button\"\n :class=\"buttonClasses\"\n :disabled=\"currentPage === 1\"\n data-test=\"previous-page-button\"\n aria-label=\"Previous page\"\n :aria-disabled=\"currentPage === 1\"\n >\n <slot name=\"previous-page-button\">Prev</slot>\n </button>\n\n <button\n v-for=\"page in visiblePages\"\n :key=\"page.value\"\n @click=\"selectPage(page.value)\"\n class=\"x-button x-page-selector__page\"\n :class=\"[\n itemClasses(page.isSelected),\n {\n 'x-page-selector__page--current': page.isSelected,\n 'x-page-selector__page--hidden': page.value === hiddenPage\n }\n ]\"\n :data-test=\"`page-button-${page.value}`\"\n :aria-label=\"`Page ${page.value}`\"\n :aria-current=\"page.isSelected ? 'page' : undefined\"\n >\n <slot name=\"page-button\" :page=\"page.value\" :is-selected=\"page.isSelected\">\n {{ page.value }}\n </slot>\n </button>\n\n <button\n @click=\"selectPage(currentPage + 1)\"\n class=\"x-button\"\n :class=\"buttonClasses\"\n :disabled=\"currentPage === totalPages\"\n data-test=\"next-page-button\"\n aria-label=\"Next page\"\n :aria-disabled=\"currentPage === totalPages\"\n >\n <slot name=\"next-page-button\">Next</slot>\n </button>\n </nav>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, computed, PropType } from 'vue';\n import { Dictionary } from '@empathyco/x-utils';\n import { useXBus } from '../composables';\n\n interface PageItem {\n value: number | string;\n isSelected: boolean;\n }\n\n /**\n * Component that renders a pagination control with buttons for navigating\n * between pages. It displays the current page, allows selecting other pages,\n * and emits events when a page is selected.\n *\n * @public\n */\n export default defineComponent({\n name: 'PageSelector',\n props: {\n /**\n * CSS classes to customize the prev/next buttons.\n */\n buttonClasses: {\n type: Array as PropType<(string | Dictionary<boolean>)[]>,\n default: () => []\n },\n /**\n * The current page number.\n */\n currentPage: {\n type: Number,\n required: true\n },\n /**\n * The string content of the hidden pages.\n */\n hiddenPage: {\n type: String,\n default: '...'\n },\n /**\n * CSS classes to customize the page items.\n */\n itemClasses: {\n type: Function as PropType<\n (isSelected: boolean) => string | Dictionary<boolean> | (string | Dictionary<boolean>)[]\n >,\n default: () => []\n },\n /**\n * The number of pages to show before and after the current page.\n */\n range: {\n type: Number,\n default: 2\n },\n /**\n * The class of the scroll container to scroll to top when a page is selected.\n */\n scrollTarget: {\n type: String,\n default: 'main-scroll'\n },\n /**\n * The total number of pages.\n */\n totalPages: {\n type: Number,\n required: true\n }\n },\n setup(props) {\n const bus = useXBus();\n\n const visiblePages = computed(() => {\n const start = Math.max(props.currentPage - props.range, 1);\n const end = Math.min(props.currentPage + props.range, props.totalPages);\n const pages: PageItem[] = Array.from({ length: end - start + 1 }, (_, i) => {\n const pageValue: string | number = start + i;\n return { value: pageValue, isSelected: pageValue === props.currentPage };\n });\n\n // Ensure first and last pages are always visible when needed\n if (start > 1) {\n pages.unshift({ value: 1, isSelected: 1 === props.currentPage });\n if (start > 2) {\n pages.splice(1, 0, { value: props.hiddenPage, isSelected: false });\n }\n }\n if (end < props.totalPages) {\n if (end < props.totalPages - 1) {\n pages.push({ value: props.hiddenPage, isSelected: false });\n }\n pages.push({\n value: props.totalPages,\n isSelected: props.totalPages === props.currentPage\n });\n }\n\n return pages;\n });\n\n /**\n * Handles the selection of a page.\n *\n * @param page - The page to select. Can be a number representing the page number or a string '...' indicating an ellipsis.\n */\n const selectPage = (page: number | string): void => {\n if (page === '...') {\n return;\n }\n if (typeof page === 'number' && page > 0 && page <= props.totalPages) {\n bus.emit('UserSelectedAPage', page);\n /**\n * Emits scroll to top to prevent keeping the position if there is more content\n * after results, as for example Next Queries Preview.\n */\n bus.emit('UserClickedScrollToTop', props.scrollTarget);\n }\n };\n\n return {\n visiblePages,\n selectPage\n };\n }\n });\n</script>\n\n<style scoped>\n .x-page-selector {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 2px;\n }\n\n .x-page-selector__page--current,\n .x-page-selector__page--hidden {\n cursor: default;\n }\n</style>\n\n<docs lang=\"mdx\">\n## Events\n\nThis component emits the \"UserSelectedAPage\" and the UserClickedScrollToTop events by default.\n\n## See it in action\n\nBasic example of how the component is rendered.\n\n```vue live\n<template>\n <PageSelector :current-page=\"page\" :total-pages=\"totalPages\" />\n</template>\n\n<script>\n import { PageSelector } from '@empathyco/x-components';\n\n export default {\n name: 'PageSelectorDemo',\n components: {\n PageSelector\n },\n data() {\n return {\n page: 0,\n totalPages: 10\n };\n }\n };\n</script>\n```\n\n### Customize the slots\n\nThis component allows to customise its content using slots.\n\n```vue live\n<template>\n <PageSelector\n :total-pages=\"totalPages\"\n :currentPage=\"page\"\n :item-classes=\"\n (isSelected: boolean) =>\n isSelected\n ? 'x-button-lead x-text-neutral-10'\n : 'x-text-neutral-90 x-button-outlined'\n \"\n :buttonClasses=\"['x-rounded-md']\"\n >\n <template #previous-page-button>\n <span>Back</span>\n </template>\n <template #page-button=\"{ page, isSelected }\">\n <h2 :class=\"{ 'x-text1': !isSelected }\">\n {{ page }}\n </h2>\n </template>\n <template #next-page-button>\n <span>Forward</span>\n </template>\n </PageSelector>\n</template>\n\n<script>\n import { PageSelector } from '@empathyco/x-components';\n\n export default {\n name: 'PageSelectorDemo',\n components: {\n PageSelector\n },\n data() {\n return {\n page: 2,\n totalPages: 10\n };\n }\n };\n</script>\n```\n\n### Customize the number of pages to show before and after the current page by changing the range default value.\n\n```vue live\n<template>\n <PageSelector :current-page=\"page\" :total-pages=\"totalPages\" :range=\"range\" />\n</template>\n\n<script>\n import { PageSelector } from '@empathyco/x-components';\n\n export default {\n name: 'PageSelectorDemo',\n components: {\n PageSelector\n },\n data() {\n return {\n page: 6,\n totalPages: 100,\n range: 4\n };\n }\n };\n</script>\n```\n</docs>\n"],"names":["selectPage","currentPage","_createTextVNode","_openBlock","_createElementBlock","_Fragment","_renderList","itemClasses","_normalizeClass","_renderSlot","_toDisplayString","_createElementVNode","totalPages","_createCommentVNode"],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import { defineComponent, computed } from 'vue';
2
+ import '../composables/create-use-device.js';
3
+ import '@vue/devtools-api';
4
+ import '../plugins/devtools/timeline.devtools.js';
5
+ import '@empathyco/x-utils';
6
+ import 'rxjs/operators';
7
+ import 'rxjs';
8
+ import '../plugins/devtools/colors.utils.js';
9
+ import '../plugins/x-bus.js';
10
+ import '../plugins/x-plugin.js';
11
+ import 'vuex';
12
+ import { useXBus } from '../composables/use-x-bus.js';
13
+ import '@vueuse/core';
14
+
15
+ /**
16
+ * Component that renders a pagination control with buttons for navigating
17
+ * between pages. It displays the current page, allows selecting other pages,
18
+ * and emits events when a page is selected.
19
+ *
20
+ * @public
21
+ */
22
+ var _sfc_main = defineComponent({
23
+ name: 'PageSelector',
24
+ props: {
25
+ /**
26
+ * CSS classes to customize the prev/next buttons.
27
+ */
28
+ buttonClasses: {
29
+ type: Array,
30
+ default: () => []
31
+ },
32
+ /**
33
+ * The current page number.
34
+ */
35
+ currentPage: {
36
+ type: Number,
37
+ required: true
38
+ },
39
+ /**
40
+ * The string content of the hidden pages.
41
+ */
42
+ hiddenPage: {
43
+ type: String,
44
+ default: '...'
45
+ },
46
+ /**
47
+ * CSS classes to customize the page items.
48
+ */
49
+ itemClasses: {
50
+ type: Function,
51
+ default: () => []
52
+ },
53
+ /**
54
+ * The number of pages to show before and after the current page.
55
+ */
56
+ range: {
57
+ type: Number,
58
+ default: 2
59
+ },
60
+ /**
61
+ * The class of the scroll container to scroll to top when a page is selected.
62
+ */
63
+ scrollTarget: {
64
+ type: String,
65
+ default: 'main-scroll'
66
+ },
67
+ /**
68
+ * The total number of pages.
69
+ */
70
+ totalPages: {
71
+ type: Number,
72
+ required: true
73
+ }
74
+ },
75
+ setup(props) {
76
+ const bus = useXBus();
77
+ const visiblePages = computed(() => {
78
+ const start = Math.max(props.currentPage - props.range, 1);
79
+ const end = Math.min(props.currentPage + props.range, props.totalPages);
80
+ const pages = Array.from({ length: end - start + 1 }, (_, i) => {
81
+ const pageValue = start + i;
82
+ return { value: pageValue, isSelected: pageValue === props.currentPage };
83
+ });
84
+ // Ensure first and last pages are always visible when needed
85
+ if (start > 1) {
86
+ pages.unshift({ value: 1, isSelected: 1 === props.currentPage });
87
+ if (start > 2) {
88
+ pages.splice(1, 0, { value: props.hiddenPage, isSelected: false });
89
+ }
90
+ }
91
+ if (end < props.totalPages) {
92
+ if (end < props.totalPages - 1) {
93
+ pages.push({ value: props.hiddenPage, isSelected: false });
94
+ }
95
+ pages.push({
96
+ value: props.totalPages,
97
+ isSelected: props.totalPages === props.currentPage
98
+ });
99
+ }
100
+ return pages;
101
+ });
102
+ /**
103
+ * Handles the selection of a page.
104
+ *
105
+ * @param page - The page to select. Can be a number representing the page number or a string '...' indicating an ellipsis.
106
+ */
107
+ const selectPage = (page) => {
108
+ if (page === '...') {
109
+ return;
110
+ }
111
+ if (typeof page === 'number' && page > 0 && page <= props.totalPages) {
112
+ bus.emit('UserSelectedAPage', page);
113
+ /**
114
+ * Emits scroll to top to prevent keeping the position if there is more content
115
+ * after results, as for example Next Queries Preview.
116
+ */
117
+ bus.emit('UserClickedScrollToTop', props.scrollTarget);
118
+ }
119
+ };
120
+ return {
121
+ visiblePages,
122
+ selectPage
123
+ };
124
+ }
125
+ });
126
+
127
+ export { _sfc_main as default };
128
+ //# sourceMappingURL=page-selector.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-selector.vue2.js","sources":["../../../src/components/page-selector.vue"],"sourcesContent":["<template>\n <nav v-if=\"visiblePages?.length > 1\" class=\"x-page-selector\" aria-label=\"Pagination\">\n <button\n @click=\"selectPage(currentPage - 1)\"\n class=\"x-button\"\n :class=\"buttonClasses\"\n :disabled=\"currentPage === 1\"\n data-test=\"previous-page-button\"\n aria-label=\"Previous page\"\n :aria-disabled=\"currentPage === 1\"\n >\n <slot name=\"previous-page-button\">Prev</slot>\n </button>\n\n <button\n v-for=\"page in visiblePages\"\n :key=\"page.value\"\n @click=\"selectPage(page.value)\"\n class=\"x-button x-page-selector__page\"\n :class=\"[\n itemClasses(page.isSelected),\n {\n 'x-page-selector__page--current': page.isSelected,\n 'x-page-selector__page--hidden': page.value === hiddenPage\n }\n ]\"\n :data-test=\"`page-button-${page.value}`\"\n :aria-label=\"`Page ${page.value}`\"\n :aria-current=\"page.isSelected ? 'page' : undefined\"\n >\n <slot name=\"page-button\" :page=\"page.value\" :is-selected=\"page.isSelected\">\n {{ page.value }}\n </slot>\n </button>\n\n <button\n @click=\"selectPage(currentPage + 1)\"\n class=\"x-button\"\n :class=\"buttonClasses\"\n :disabled=\"currentPage === totalPages\"\n data-test=\"next-page-button\"\n aria-label=\"Next page\"\n :aria-disabled=\"currentPage === totalPages\"\n >\n <slot name=\"next-page-button\">Next</slot>\n </button>\n </nav>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, computed, PropType } from 'vue';\n import { Dictionary } from '@empathyco/x-utils';\n import { useXBus } from '../composables';\n\n interface PageItem {\n value: number | string;\n isSelected: boolean;\n }\n\n /**\n * Component that renders a pagination control with buttons for navigating\n * between pages. It displays the current page, allows selecting other pages,\n * and emits events when a page is selected.\n *\n * @public\n */\n export default defineComponent({\n name: 'PageSelector',\n props: {\n /**\n * CSS classes to customize the prev/next buttons.\n */\n buttonClasses: {\n type: Array as PropType<(string | Dictionary<boolean>)[]>,\n default: () => []\n },\n /**\n * The current page number.\n */\n currentPage: {\n type: Number,\n required: true\n },\n /**\n * The string content of the hidden pages.\n */\n hiddenPage: {\n type: String,\n default: '...'\n },\n /**\n * CSS classes to customize the page items.\n */\n itemClasses: {\n type: Function as PropType<\n (isSelected: boolean) => string | Dictionary<boolean> | (string | Dictionary<boolean>)[]\n >,\n default: () => []\n },\n /**\n * The number of pages to show before and after the current page.\n */\n range: {\n type: Number,\n default: 2\n },\n /**\n * The class of the scroll container to scroll to top when a page is selected.\n */\n scrollTarget: {\n type: String,\n default: 'main-scroll'\n },\n /**\n * The total number of pages.\n */\n totalPages: {\n type: Number,\n required: true\n }\n },\n setup(props) {\n const bus = useXBus();\n\n const visiblePages = computed(() => {\n const start = Math.max(props.currentPage - props.range, 1);\n const end = Math.min(props.currentPage + props.range, props.totalPages);\n const pages: PageItem[] = Array.from({ length: end - start + 1 }, (_, i) => {\n const pageValue: string | number = start + i;\n return { value: pageValue, isSelected: pageValue === props.currentPage };\n });\n\n // Ensure first and last pages are always visible when needed\n if (start > 1) {\n pages.unshift({ value: 1, isSelected: 1 === props.currentPage });\n if (start > 2) {\n pages.splice(1, 0, { value: props.hiddenPage, isSelected: false });\n }\n }\n if (end < props.totalPages) {\n if (end < props.totalPages - 1) {\n pages.push({ value: props.hiddenPage, isSelected: false });\n }\n pages.push({\n value: props.totalPages,\n isSelected: props.totalPages === props.currentPage\n });\n }\n\n return pages;\n });\n\n /**\n * Handles the selection of a page.\n *\n * @param page - The page to select. Can be a number representing the page number or a string '...' indicating an ellipsis.\n */\n const selectPage = (page: number | string): void => {\n if (page === '...') {\n return;\n }\n if (typeof page === 'number' && page > 0 && page <= props.totalPages) {\n bus.emit('UserSelectedAPage', page);\n /**\n * Emits scroll to top to prevent keeping the position if there is more content\n * after results, as for example Next Queries Preview.\n */\n bus.emit('UserClickedScrollToTop', props.scrollTarget);\n }\n };\n\n return {\n visiblePages,\n selectPage\n };\n }\n });\n</script>\n\n<style scoped>\n .x-page-selector {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 2px;\n }\n\n .x-page-selector__page--current,\n .x-page-selector__page--hidden {\n cursor: default;\n }\n</style>\n\n<docs lang=\"mdx\">\n## Events\n\nThis component emits the \"UserSelectedAPage\" and the UserClickedScrollToTop events by default.\n\n## See it in action\n\nBasic example of how the component is rendered.\n\n```vue live\n<template>\n <PageSelector :current-page=\"page\" :total-pages=\"totalPages\" />\n</template>\n\n<script>\n import { PageSelector } from '@empathyco/x-components';\n\n export default {\n name: 'PageSelectorDemo',\n components: {\n PageSelector\n },\n data() {\n return {\n page: 0,\n totalPages: 10\n };\n }\n };\n</script>\n```\n\n### Customize the slots\n\nThis component allows to customise its content using slots.\n\n```vue live\n<template>\n <PageSelector\n :total-pages=\"totalPages\"\n :currentPage=\"page\"\n :item-classes=\"\n (isSelected: boolean) =>\n isSelected\n ? 'x-button-lead x-text-neutral-10'\n : 'x-text-neutral-90 x-button-outlined'\n \"\n :buttonClasses=\"['x-rounded-md']\"\n >\n <template #previous-page-button>\n <span>Back</span>\n </template>\n <template #page-button=\"{ page, isSelected }\">\n <h2 :class=\"{ 'x-text1': !isSelected }\">\n {{ page }}\n </h2>\n </template>\n <template #next-page-button>\n <span>Forward</span>\n </template>\n </PageSelector>\n</template>\n\n<script>\n import { PageSelector } from '@empathyco/x-components';\n\n export default {\n name: 'PageSelectorDemo',\n components: {\n PageSelector\n },\n data() {\n return {\n page: 2,\n totalPages: 10\n };\n }\n };\n</script>\n```\n\n### Customize the number of pages to show before and after the current page by changing the range default value.\n\n```vue live\n<template>\n <PageSelector :current-page=\"page\" :total-pages=\"totalPages\" :range=\"range\" />\n</template>\n\n<script>\n import { PageSelector } from '@empathyco/x-components';\n\n export default {\n name: 'PageSelectorDemo',\n components: {\n PageSelector\n },\n data() {\n return {\n page: 6,\n totalPages: 100,\n range: 4\n };\n }\n };\n</script>\n```\n</docs>\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import injectCss from '../../tools/inject-css.js';
2
+
3
+ var css = ".x-page-selector[data-v-b08cf95a]{align-items:center;display:flex;gap:2px;justify-content:center}.x-page-selector__page--current[data-v-b08cf95a],.x-page-selector__page--hidden[data-v-b08cf95a]{cursor:default}";
4
+ injectCss(css);
5
+
6
+ export { css, css as default };
7
+ //# sourceMappingURL=page-selector.vue3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-selector.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import _sfc_main from './base-header-toggle-panel.vue2.js';
2
- import { resolveComponent, openBlock, createElementBlock, createCommentVNode, renderSlot, normalizeProps, guardReactiveProps, createElementVNode, normalizeClass, createVNode, withCtx } from 'vue';
2
+ import { resolveComponent, openBlock, createElementBlock, renderSlot, normalizeProps, guardReactiveProps, createElementVNode, normalizeClass, createVNode, withCtx } from 'vue';
3
3
  import './base-header-toggle-panel.vue3.js';
4
4
  import _export_sfc from '../../_virtual/_plugin-vue_export-helper.js';
5
5
 
@@ -7,9 +7,7 @@ const _hoisted_1 = { class: "x-header-toggle-panel" };
7
7
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
8
8
  const _component_BaseTogglePanel = resolveComponent("BaseTogglePanel");
9
9
  return openBlock(), createElementBlock("div", _hoisted_1, [
10
- createCommentVNode(" @slot (Required) Slot that is be used for replacing the whole header. "),
11
10
  renderSlot(_ctx.$slots, "header", normalizeProps(guardReactiveProps({ toggleOpen: _ctx.toggleOpen, open: _ctx.open })), () => [
12
- createCommentVNode(" header-toggle-panel__header "),
13
11
  createElementVNode(
14
12
  "button",
15
13
  {
@@ -18,7 +16,6 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
18
16
  "data-test": "toggle-panel-header"
19
17
  },
20
18
  [
21
- createCommentVNode(" @slot (Required) Slot used to just pass the content. "),
22
19
  renderSlot(_ctx.$slots, "header-content", normalizeProps(guardReactiveProps({ open: _ctx.open })), void 0, true)
23
20
  ],
24
21
  2
@@ -30,7 +27,6 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
30
27
  animation: _ctx.animation
31
28
  }, {
32
29
  default: withCtx(() => [
33
- createCommentVNode(" @slot (Required) Default content. "),
34
30
  renderSlot(_ctx.$slots, "default", {}, void 0, true)
35
31
  ]),
36
32
  _: 3
@@ -1 +1 @@
1
- {"version":3,"file":"base-header-toggle-panel.vue.js","sources":["../../../../src/components/panels/base-header-toggle-panel.vue"],"sourcesContent":["<template>\n <div class=\"x-header-toggle-panel\">\n <!-- @slot (Required) Slot that is be used for replacing the whole header. -->\n <slot name=\"header\" v-bind=\"{ toggleOpen, open }\">\n <!-- header-toggle-panel__header -->\n <button\n @click=\"toggleOpen\"\n class=\"x-header-toggle-panel__header\"\n :class=\"headerClass\"\n data-test=\"toggle-panel-header\"\n >\n <!-- @slot (Required) Slot used to just pass the content. -->\n <slot name=\"header-content\" v-bind=\"{ open }\"></slot>\n </button>\n </slot>\n\n <BaseTogglePanel :open=\"open\" :animation=\"animation\">\n <!-- @slot (Required) Default content. -->\n <slot />\n </BaseTogglePanel>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, ref } from 'vue';\n import { AnimationProp } from '../../types';\n import { NoAnimation } from '../animations';\n import BaseTogglePanel from './base-toggle-panel.vue';\n\n /**\n * Toggle panel which uses the base toggle panel, adds a header and manage the\n * open / close state of the panel.\n *\n * @public\n */\n export default defineComponent({\n name: 'BaseHeaderTogglePanel',\n components: { BaseTogglePanel },\n props: {\n /** Animation component that will be used to animate the base-toggle-panel. */\n animation: {\n type: AnimationProp,\n default: () => NoAnimation\n },\n /** Handles if the panel is open by default. */\n startCollapsed: Boolean,\n /** Class inherited by content element. */\n headerClass: String\n },\n setup: function (props, { emit }) {\n /**\n * Handles if the base panel is open or closed.\n *\n * @internal\n */\n const open = ref(!props.startCollapsed);\n\n /**\n * Emits open status event.\n *\n * @internal\n */\n const emitOpenStatusEvent = () => {\n emit(open.value ? 'open' : 'close');\n };\n\n /**\n * Toggles the open property.\n *\n * @internal\n */\n const toggleOpen = () => {\n open.value = !open.value;\n emitOpenStatusEvent();\n };\n\n return {\n open,\n toggleOpen\n };\n }\n });\n</script>\n\n<style lang=\"css\" scoped>\n .x-header-toggle-panel__header {\n cursor: pointer;\n }\n</style>\n\n<docs lang=\"mdx\">\n## Events\n\nA list of events that the component will emit:\n\n- `open`: the event is emitted after the user clicks the element and opens it.\n- `close`: the event is emitted after the user clicks the element and closes it.\n\n## Examples\n\nToggle panel which uses the base toggle panel, adds a header and manage the open / close state of\nthe panel.\n\n### Basic usage\n\n```vue\n<BaseHeaderTogglePanel :animation=\"collapseHeight\" :start-collapsed=\"false\">\n <template #header-content=\"{ open }\">\n <p>Header, open: {{ open ? 'close' : 'open' }}</p>\n </template>\n <template>\n <p>Default content</p>\n </template>\n</BaseHeaderTogglePanel>\n```\n\n### Custom header\n\n```vue\n<BaseHeaderTogglePanel :animation=\"collapseHeight\" :start-collapsed=\"true\">\n <template #header=\"{ toggleOpen, open }\">\n <p>Header, open: {{ open ? 'close' : 'open' }}</p>\n <button @click=\"toggleOpen\">Toggle</button>\n </template>\n <template>\n <p>Default content</p>\n </template>\n</BaseHeaderTogglePanel>\n```\n\n### Customizing default header with classes\n\nThe `headerClass` prop can be used to add classes to the header of the toggle panel.\n\n```vue\n<BaseHeaderTogglePanel\n headerClass=\"custom-class\"\n :animation=\"collapseHeight\"\n :start-collapsed=\"false\"\n>\n <template #header-content=\"{ open }\">\n <p>Header, open: {{ open ? 'close' : 'open' }}</p>\n </template>\n <template>\n <p>Default content</p>\n </template>\n</BaseHeaderTogglePanel>\n```\n</docs>\n"],"names":["_resolveComponent","_openBlock","_createElementBlock","_createCommentVNode","_renderSlot","_normalizeProps","_guardReactiveProps","_createElementVNode","_normalizeClass","_createVNode","animation","_withCtx"],"mappings":";;;;;;;qCACEA,gBAmBM,CAAA,iBAAA,CAAA,CAAA;AAjBJ,EAAA,OAAAC,SAAA,EAHJ,EAAAC,kBAAA,CAAA,KAAA,EAAA,UAAA,EAAA;AAAA,IAAAC,kBAAA,CAIM,yEAAoC,CAAA;AAAA,IAAAC,UAAA,CACpC,IAQS,CAAA,MAAA,EAAA,QAAA,EAAAC,cAAA,CAAAC,kBAAA,CAAA,EAAA,UAAA,EAAA,IAAA,CAAA,UAAA,EAAA,IAAA,EAAA,IAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA,MAAA;AAAA,MAAAH,kBAAA,CAPD,+BAAE,CAAA;AAAA,MAAAI,kBAAA;AANhB,QAAA,QAAA;AAAA,QAOc;AAAA,UAEN,gBAAU,CAAqB,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,UAAA,IAAA,IAAA,CAAA,UAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,UAAA,KAAA,EAAAC,cAAA,CAAA,CAAA,+BAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAE/B,UAAA,WAAA,EAAA,qBAAA;AAAA,SAAA;AACA,QAAA;AAAA,UAAAL,kBAAA,CAAA,wDAAA,CAAA;;AAIJ,SAAA;AAAA,QAAA,CAAA;AAAA;AAAA,OAGkB;AAAA,KAAA,EAHA,IAAI,CAAA;AAAA,IAAAM,WAAA,CAAoBC,0BAAS,EAAA;AAAA,MAAA,IAAA,EAAA,IAAA,CAAA,IAAA;AAhBvD,MAAA,SAAA,EAAA,IAAA,CAAA,SAAA;AAAA,KAAA,EAAA;eAkBMC,OAAQ,CAAA,MAAA;AAAA,QAAAR,kBAAA,CAAA,qCAAA,CAAA;AAlBd,QAAAC,UAAA,CAAA,IAAA,CAAA,MAAA,EAAA,SAAA,EAAA,EAAA,EAAA,KAAA,CAAA,EAAA,IAAA,CAAA;AAAA,OAAA,CAAA;;;;;;;;;;"}
1
+ {"version":3,"file":"base-header-toggle-panel.vue.js","sources":["../../../../src/components/panels/base-header-toggle-panel.vue"],"sourcesContent":["<template>\n <div class=\"x-header-toggle-panel\">\n <!-- @slot (Required) Slot that is be used for replacing the whole header. -->\n <slot name=\"header\" v-bind=\"{ toggleOpen, open }\">\n <!-- header-toggle-panel__header -->\n <button\n @click=\"toggleOpen\"\n class=\"x-header-toggle-panel__header\"\n :class=\"headerClass\"\n data-test=\"toggle-panel-header\"\n >\n <!-- @slot (Required) Slot used to just pass the content. -->\n <slot name=\"header-content\" v-bind=\"{ open }\"></slot>\n </button>\n </slot>\n\n <BaseTogglePanel :open=\"open\" :animation=\"animation\">\n <!-- @slot (Required) Default content. -->\n <slot />\n </BaseTogglePanel>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent, ref } from 'vue';\n import { AnimationProp } from '../../types';\n import { NoAnimation } from '../animations';\n import BaseTogglePanel from './base-toggle-panel.vue';\n\n /**\n * Toggle panel which uses the base toggle panel, adds a header and manage the\n * open / close state of the panel.\n *\n * @public\n */\n export default defineComponent({\n name: 'BaseHeaderTogglePanel',\n components: { BaseTogglePanel },\n props: {\n /** Animation component that will be used to animate the base-toggle-panel. */\n animation: {\n type: AnimationProp,\n default: () => NoAnimation\n },\n /** Handles if the panel is open by default. */\n startCollapsed: Boolean,\n /** Class inherited by content element. */\n headerClass: String\n },\n setup: function (props, { emit }) {\n /**\n * Handles if the base panel is open or closed.\n *\n * @internal\n */\n const open = ref(!props.startCollapsed);\n\n /**\n * Emits open status event.\n *\n * @internal\n */\n const emitOpenStatusEvent = () => {\n emit(open.value ? 'open' : 'close');\n };\n\n /**\n * Toggles the open property.\n *\n * @internal\n */\n const toggleOpen = () => {\n open.value = !open.value;\n emitOpenStatusEvent();\n };\n\n return {\n open,\n toggleOpen\n };\n }\n });\n</script>\n\n<style lang=\"css\" scoped>\n .x-header-toggle-panel__header {\n cursor: pointer;\n }\n</style>\n\n<docs lang=\"mdx\">\n## Events\n\nA list of events that the component will emit:\n\n- `open`: the event is emitted after the user clicks the element and opens it.\n- `close`: the event is emitted after the user clicks the element and closes it.\n\n## Examples\n\nToggle panel which uses the base toggle panel, adds a header and manage the open / close state of\nthe panel.\n\n### Basic usage\n\n```vue\n<BaseHeaderTogglePanel :animation=\"collapseHeight\" :start-collapsed=\"false\">\n <template #header-content=\"{ open }\">\n <p>Header, open: {{ open ? 'close' : 'open' }}</p>\n </template>\n <template>\n <p>Default content</p>\n </template>\n</BaseHeaderTogglePanel>\n```\n\n### Custom header\n\n```vue\n<BaseHeaderTogglePanel :animation=\"collapseHeight\" :start-collapsed=\"true\">\n <template #header=\"{ toggleOpen, open }\">\n <p>Header, open: {{ open ? 'close' : 'open' }}</p>\n <button @click=\"toggleOpen\">Toggle</button>\n </template>\n <template>\n <p>Default content</p>\n </template>\n</BaseHeaderTogglePanel>\n```\n\n### Customizing default header with classes\n\nThe `headerClass` prop can be used to add classes to the header of the toggle panel.\n\n```vue\n<BaseHeaderTogglePanel\n headerClass=\"custom-class\"\n :animation=\"collapseHeight\"\n :start-collapsed=\"false\"\n>\n <template #header-content=\"{ open }\">\n <p>Header, open: {{ open ? 'close' : 'open' }}</p>\n </template>\n <template>\n <p>Default content</p>\n </template>\n</BaseHeaderTogglePanel>\n```\n</docs>\n"],"names":["_resolveComponent","_openBlock","_createElementBlock","_renderSlot","_createElementVNode","_normalizeClass","_createVNode","animation"],"mappings":";;;;;;;qCACEA,gBAmBM,CAAA,iBAAA,CAAA,CAAA;SAfFC,SAQS,EAAA,EAAAC,kBAAA,CAAA,KAAA,EAAA,UAAA,EAAA;AAAA,IAAAC,UAAA,CAPD,yDAAE,EAAU,UAAA,EAAA,IAAA,CAAA,UAAA,EAAA,IAAA,EAAA,IAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA,MAAA;AAAA,MAAAC,kBAAA;AAN1B,QAAA,QAAA;AAAA,QAOc;AAAA,UAEN,gBAAU,CAAqB,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,UAAA,IAAA,IAAA,CAAA,UAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,UAAA,KAAA,EAAAC,cAAA,CAAA,CAAA,+BAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;UAG/B,WAAqD,EAAA,qBAAA;AAAA,SAAA;;;AAIzD,SAAA;AAAA,QAAA,CAAA;AAAA;AAAA,OAGkB;AAAA,KAAA,EAHA,IAAI,CAAA;AAAA,IAAAC,WAAA,CAAoBC,0BAAS,EAAA;AAAA,MAAA,IAAA,EAAA,IAAA,CAAA,IAAA;AAhBvD,MAAA,SAAA,EAAA,IAAA,CAAA,SAAA;AAAA,KAAA,EAAA;;AAAA,QAAAJ,UAAA,CAAA,IAAA,CAAA,MAAA,EAAA,SAAA,EAAA,EAAA,EAAA,KAAA,CAAA,EAAA,IAAA,CAAA;AAAA,OAAA,CAAA;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import _sfc_main from './base-id-toggle-panel-button.vue2.js';
2
- import { resolveComponent, openBlock, createBlock, withCtx, createCommentVNode, renderSlot } from 'vue';
2
+ import { resolveComponent, openBlock, createBlock, withCtx, renderSlot } from 'vue';
3
3
  import _export_sfc from '../../_virtual/_plugin-vue_export-helper.js';
4
4
 
5
5
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
@@ -11,7 +11,6 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
11
11
  "aria-pressed": _ctx.isPanelOpen.toString()
12
12
  }, {
13
13
  default: withCtx(() => [
14
- createCommentVNode(" @slot (Required) Button content with a text, an icon or both "),
15
14
  renderSlot(_ctx.$slots, "default", { isPanelOpen: _ctx.isPanelOpen })
16
15
  ]),
17
16
  _: 3