@beeq/core 1.10.0 → 1.11.0-beta.1

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 (508) hide show
  1. package/dist/beeq/beeq.esm.js +1 -1
  2. package/dist/beeq/beeq.esm.js.map +1 -1
  3. package/dist/beeq/bq-accordion-group.entry.esm.js.map +1 -1
  4. package/dist/beeq/bq-alert.entry.esm.js.map +1 -1
  5. package/dist/beeq/bq-avatar.entry.esm.js.map +1 -1
  6. package/dist/beeq/bq-breadcrumb-item.entry.esm.js.map +1 -1
  7. package/dist/beeq/bq-breadcrumb.entry.esm.js.map +1 -1
  8. package/dist/beeq/bq-button.bq-icon.entry.esm.js.map +1 -1
  9. package/dist/beeq/bq-card.entry.esm.js.map +1 -1
  10. package/dist/beeq/bq-checkbox.entry.esm.js.map +1 -1
  11. package/dist/beeq/bq-date-picker.entry.esm.js.map +1 -1
  12. package/dist/beeq/bq-dialog.entry.esm.js.map +1 -1
  13. package/dist/beeq/bq-drawer.entry.esm.js.map +1 -1
  14. package/dist/beeq/bq-dropdown.bq-panel.entry.esm.js.map +1 -1
  15. package/dist/beeq/bq-empty-state.entry.esm.js.map +1 -1
  16. package/dist/beeq/bq-input.entry.esm.js.map +1 -1
  17. package/dist/beeq/bq-notification.entry.esm.js.map +1 -1
  18. package/dist/beeq/bq-option-group.entry.esm.js.map +1 -1
  19. package/dist/beeq/bq-option-list.bq-tag.entry.esm.js.map +1 -1
  20. package/dist/beeq/bq-page-title.entry.esm.js.map +1 -1
  21. package/dist/beeq/bq-progress.entry.esm.js.map +1 -1
  22. package/dist/beeq/bq-radio-group.entry.esm.js.map +1 -1
  23. package/dist/beeq/bq-select.entry.esm.js.map +1 -1
  24. package/dist/beeq/bq-side-menu-item.entry.esm.js.map +1 -1
  25. package/dist/beeq/bq-spinner.entry.esm.js.map +1 -1
  26. package/dist/beeq/bq-status.entry.esm.js.map +1 -1
  27. package/dist/beeq/bq-steps.entry.esm.js.map +1 -1
  28. package/dist/beeq/bq-switch.entry.esm.js.map +1 -1
  29. package/dist/beeq/bq-tab-group.entry.esm.js.map +1 -1
  30. package/dist/beeq/bq-tab.entry.esm.js.map +1 -1
  31. package/dist/beeq/bq-textarea.entry.esm.js.map +1 -1
  32. package/dist/beeq/bq-toast.entry.esm.js.map +1 -1
  33. package/dist/beeq/index.esm.js +1 -1
  34. package/dist/beeq/{p-67597553.entry.js → p-08b19f97.entry.js} +2 -2
  35. package/dist/beeq/p-08b19f97.entry.js.map +1 -0
  36. package/dist/beeq/{p-c7b5ae9b.entry.js → p-0e481031.entry.js} +2 -2
  37. package/dist/beeq/p-0e481031.entry.js.map +1 -0
  38. package/dist/beeq/{p-69f1f5ad.entry.js → p-1770fd5b.entry.js} +2 -2
  39. package/dist/beeq/p-1770fd5b.entry.js.map +1 -0
  40. package/dist/beeq/{p-6eb439a3.entry.js → p-1f8cc15c.entry.js} +2 -2
  41. package/dist/beeq/p-1f8cc15c.entry.js.map +1 -0
  42. package/dist/beeq/{p-12c13e8e.entry.js → p-25e92d0a.entry.js} +2 -2
  43. package/dist/beeq/p-25e92d0a.entry.js.map +1 -0
  44. package/dist/beeq/{p-afb356b4.entry.js → p-28788a48.entry.js} +2 -2
  45. package/dist/beeq/p-28788a48.entry.js.map +1 -0
  46. package/dist/beeq/{p-22c634b5.entry.js → p-32a07a71.entry.js} +2 -2
  47. package/dist/beeq/p-32a07a71.entry.js.map +1 -0
  48. package/dist/beeq/{p-622b9249.entry.js → p-33899839.entry.js} +2 -2
  49. package/dist/beeq/p-33899839.entry.js.map +1 -0
  50. package/dist/beeq/{p-def3bd26.entry.js → p-3424586a.entry.js} +2 -2
  51. package/dist/beeq/p-3424586a.entry.js.map +1 -0
  52. package/dist/beeq/{p-c7d5983f.entry.js → p-3b1ef7e6.entry.js} +2 -2
  53. package/dist/beeq/p-3b1ef7e6.entry.js.map +1 -0
  54. package/dist/beeq/p-42515484.entry.js +6 -0
  55. package/dist/beeq/p-42515484.entry.js.map +1 -0
  56. package/dist/beeq/{p-9b03ec25.entry.js → p-4a726c36.entry.js} +2 -2
  57. package/dist/beeq/p-4a726c36.entry.js.map +1 -0
  58. package/dist/beeq/{p-4aa72d5a.entry.js → p-61fe519c.entry.js} +2 -2
  59. package/dist/beeq/p-61fe519c.entry.js.map +1 -0
  60. package/dist/beeq/{p-1dded250.entry.js → p-6eb0f643.entry.js} +2 -2
  61. package/dist/beeq/p-6eb0f643.entry.js.map +1 -0
  62. package/dist/beeq/{p-38b70ecf.entry.js → p-73054d34.entry.js} +2 -2
  63. package/dist/beeq/p-73054d34.entry.js.map +1 -0
  64. package/dist/beeq/{p-b144f52a.entry.js → p-7bf79e31.entry.js} +2 -2
  65. package/dist/beeq/p-7bf79e31.entry.js.map +1 -0
  66. package/dist/beeq/{p-d90d892b.entry.js → p-7ecff021.entry.js} +2 -2
  67. package/dist/beeq/p-7ecff021.entry.js.map +1 -0
  68. package/dist/beeq/{p-18af4fe6.entry.js → p-84c96afc.entry.js} +2 -2
  69. package/dist/beeq/p-84c96afc.entry.js.map +1 -0
  70. package/dist/beeq/{p-dac78869.entry.js → p-895454b8.entry.js} +2 -2
  71. package/dist/beeq/p-895454b8.entry.js.map +1 -0
  72. package/dist/beeq/{p-b7be6f2a.entry.js → p-9584ff4f.entry.js} +2 -2
  73. package/dist/beeq/p-9584ff4f.entry.js.map +1 -0
  74. package/dist/beeq/{p-C4jSqdYP.js → p-B2Q_ACEf.js} +3 -3
  75. package/dist/beeq/p-B2Q_ACEf.js.map +1 -0
  76. package/dist/beeq/p-C_mtknb1.js +6 -0
  77. package/dist/beeq/p-C_mtknb1.js.map +1 -0
  78. package/dist/beeq/p-DMf9D39m.js +6 -0
  79. package/dist/beeq/p-DMf9D39m.js.map +1 -0
  80. package/dist/beeq/p-DdvbF5yL.js.map +1 -1
  81. package/dist/beeq/p-Ds7rcaFH.js +6 -0
  82. package/dist/beeq/p-Ds7rcaFH.js.map +1 -0
  83. package/dist/beeq/{p-1a19b5fa.entry.js → p-a287dd31.entry.js} +2 -2
  84. package/dist/beeq/p-a287dd31.entry.js.map +1 -0
  85. package/dist/beeq/{p-cb1ec3ac.entry.js → p-acec3250.entry.js} +2 -2
  86. package/dist/beeq/p-acec3250.entry.js.map +1 -0
  87. package/dist/beeq/{p-fc2f0022.entry.js → p-afecb3f2.entry.js} +2 -2
  88. package/dist/beeq/p-afecb3f2.entry.js.map +1 -0
  89. package/dist/beeq/{p-694593eb.entry.js → p-b324e939.entry.js} +2 -2
  90. package/dist/beeq/p-b324e939.entry.js.map +1 -0
  91. package/dist/beeq/{p-4362ebdd.entry.js → p-b387860a.entry.js} +2 -2
  92. package/dist/beeq/p-b387860a.entry.js.map +1 -0
  93. package/dist/beeq/p-b40aaef2.entry.js +6 -0
  94. package/dist/beeq/p-b40aaef2.entry.js.map +1 -0
  95. package/dist/beeq/{p-cf711f06.entry.js → p-ba7572f4.entry.js} +2 -2
  96. package/dist/beeq/p-ba7572f4.entry.js.map +1 -0
  97. package/dist/beeq/{p-ad56e393.entry.js → p-bcd00932.entry.js} +2 -2
  98. package/dist/beeq/p-bcd00932.entry.js.map +1 -0
  99. package/dist/beeq/p-c737da48.entry.js +6 -0
  100. package/dist/beeq/p-c737da48.entry.js.map +1 -0
  101. package/dist/beeq/{p-bb038cc5.entry.js → p-c7471d26.entry.js} +2 -2
  102. package/dist/beeq/p-c7471d26.entry.js.map +1 -0
  103. package/dist/beeq/{p-96fed9ed.entry.js → p-dc188227.entry.js} +2 -2
  104. package/dist/beeq/p-dc188227.entry.js.map +1 -0
  105. package/dist/beeq/{p-c886eaab.entry.js → p-de332995.entry.js} +2 -2
  106. package/dist/beeq/p-de332995.entry.js.map +1 -0
  107. package/dist/beeq/{p-88a8f431.entry.js → p-e1450a16.entry.js} +2 -2
  108. package/dist/beeq/p-e1450a16.entry.js.map +1 -0
  109. package/dist/beeq/{p-5b60b7fa.entry.js → p-e1ecf09d.entry.js} +2 -2
  110. package/dist/beeq/p-e1ecf09d.entry.js.map +1 -0
  111. package/dist/beeq/{p-3464beb1.entry.js → p-e2aec11c.entry.js} +2 -2
  112. package/dist/beeq/p-e2aec11c.entry.js.map +1 -0
  113. package/dist/beeq/{p-1ca28052.entry.js → p-e5e294ad.entry.js} +2 -2
  114. package/dist/beeq/p-e5e294ad.entry.js.map +1 -0
  115. package/dist/beeq/{p-83c5cd25.entry.js → p-e97a106c.entry.js} +2 -2
  116. package/dist/beeq/p-e97a106c.entry.js.map +1 -0
  117. package/dist/beeq/{p-8918acc2.entry.js → p-ee9117e4.entry.js} +2 -2
  118. package/dist/beeq/p-ee9117e4.entry.js.map +1 -0
  119. package/dist/beeq/{p-ef64ddbc.entry.js → p-f82cff9e.entry.js} +2 -2
  120. package/dist/beeq/p-f82cff9e.entry.js.map +1 -0
  121. package/dist/beeq.html-custom-data.json +33 -33
  122. package/dist/cjs/{assetsPath-CyeA6tpY.js → assetsPath-pf4usGy6.js} +8 -12
  123. package/dist/cjs/assetsPath-pf4usGy6.js.map +1 -0
  124. package/dist/cjs/beeq.cjs.js +2 -4
  125. package/dist/cjs/beeq.cjs.js.map +1 -1
  126. package/dist/cjs/bq-accordion-group.cjs.entry.js +2 -4
  127. package/dist/cjs/bq-accordion-group.entry.cjs.js.map +1 -1
  128. package/dist/cjs/bq-accordion.cjs.entry.js +1 -3
  129. package/dist/cjs/bq-alert.cjs.entry.js +2 -4
  130. package/dist/cjs/bq-alert.entry.cjs.js.map +1 -1
  131. package/dist/cjs/bq-avatar.cjs.entry.js +2 -4
  132. package/dist/cjs/bq-avatar.entry.cjs.js.map +1 -1
  133. package/dist/cjs/bq-badge.cjs.entry.js +1 -3
  134. package/dist/cjs/bq-breadcrumb-item.cjs.entry.js +2 -4
  135. package/dist/cjs/bq-breadcrumb-item.entry.cjs.js.map +1 -1
  136. package/dist/cjs/bq-breadcrumb.cjs.entry.js +2 -4
  137. package/dist/cjs/bq-breadcrumb.entry.cjs.js.map +1 -1
  138. package/dist/cjs/bq-button.bq-icon.entry.cjs.js.map +1 -1
  139. package/dist/cjs/bq-button_2.cjs.entry.js +3 -5
  140. package/dist/cjs/bq-card.cjs.entry.js +2 -4
  141. package/dist/cjs/bq-card.entry.cjs.js.map +1 -1
  142. package/dist/cjs/bq-checkbox.cjs.entry.js +2 -4
  143. package/dist/cjs/bq-checkbox.entry.cjs.js.map +1 -1
  144. package/dist/cjs/bq-date-picker.cjs.entry.js +2 -4
  145. package/dist/cjs/bq-date-picker.entry.cjs.js.map +1 -1
  146. package/dist/cjs/bq-dialog.cjs.entry.js +2 -4
  147. package/dist/cjs/bq-dialog.entry.cjs.js.map +1 -1
  148. package/dist/cjs/bq-divider.cjs.entry.js +1 -3
  149. package/dist/cjs/bq-drawer.cjs.entry.js +2 -4
  150. package/dist/cjs/bq-drawer.entry.cjs.js.map +1 -1
  151. package/dist/cjs/bq-dropdown.bq-panel.entry.cjs.js.map +1 -1
  152. package/dist/cjs/bq-dropdown_2.cjs.entry.js +3 -5
  153. package/dist/cjs/bq-empty-state.cjs.entry.js +2 -4
  154. package/dist/cjs/bq-empty-state.entry.cjs.js.map +1 -1
  155. package/dist/cjs/bq-input.cjs.entry.js +2 -4
  156. package/dist/cjs/bq-input.entry.cjs.js.map +1 -1
  157. package/dist/cjs/bq-notification.cjs.entry.js +2 -4
  158. package/dist/cjs/bq-notification.entry.cjs.js.map +1 -1
  159. package/dist/cjs/bq-option-group.cjs.entry.js +2 -4
  160. package/dist/cjs/bq-option-group.entry.cjs.js.map +1 -1
  161. package/dist/cjs/bq-option-list.bq-tag.entry.cjs.js.map +1 -1
  162. package/dist/cjs/bq-option-list_2.cjs.entry.js +3 -5
  163. package/dist/cjs/bq-option.cjs.entry.js +1 -3
  164. package/dist/cjs/bq-page-title.cjs.entry.js +2 -4
  165. package/dist/cjs/bq-page-title.entry.cjs.js.map +1 -1
  166. package/dist/cjs/bq-progress.cjs.entry.js +2 -4
  167. package/dist/cjs/bq-progress.entry.cjs.js.map +1 -1
  168. package/dist/cjs/bq-radio-group.cjs.entry.js +18 -11
  169. package/dist/cjs/bq-radio-group.entry.cjs.js.map +1 -1
  170. package/dist/cjs/bq-radio.cjs.entry.js +1 -3
  171. package/dist/cjs/bq-select.cjs.entry.js +11 -11
  172. package/dist/cjs/bq-select.entry.cjs.js.map +1 -1
  173. package/dist/cjs/bq-side-menu-item.cjs.entry.js +2 -4
  174. package/dist/cjs/bq-side-menu-item.entry.cjs.js.map +1 -1
  175. package/dist/cjs/bq-side-menu.cjs.entry.js +1 -3
  176. package/dist/cjs/bq-slider.cjs.entry.js +1 -3
  177. package/dist/cjs/bq-spinner.cjs.entry.js +2 -4
  178. package/dist/cjs/bq-spinner.entry.cjs.js.map +1 -1
  179. package/dist/cjs/bq-status.cjs.entry.js +2 -4
  180. package/dist/cjs/bq-status.entry.cjs.js.map +1 -1
  181. package/dist/cjs/bq-step-item.cjs.entry.js +1 -3
  182. package/dist/cjs/bq-steps.cjs.entry.js +2 -4
  183. package/dist/cjs/bq-steps.entry.cjs.js.map +1 -1
  184. package/dist/cjs/bq-switch.cjs.entry.js +2 -4
  185. package/dist/cjs/bq-switch.entry.cjs.js.map +1 -1
  186. package/dist/cjs/bq-tab-group.cjs.entry.js +2 -4
  187. package/dist/cjs/bq-tab-group.entry.cjs.js.map +1 -1
  188. package/dist/cjs/bq-tab.cjs.entry.js +2 -4
  189. package/dist/cjs/bq-tab.entry.cjs.js.map +1 -1
  190. package/dist/cjs/bq-textarea.cjs.entry.js +2 -4
  191. package/dist/cjs/bq-textarea.entry.cjs.js.map +1 -1
  192. package/dist/cjs/bq-toast.cjs.entry.js +2 -4
  193. package/dist/cjs/bq-toast.entry.cjs.js.map +1 -1
  194. package/dist/cjs/bq-tooltip.cjs.entry.js +2 -4
  195. package/dist/cjs/{index-tFN0ax76.js → index-B6fG32hZ.js} +39 -22
  196. package/dist/cjs/index-B6fG32hZ.js.map +1 -0
  197. package/dist/cjs/{index-BKXwzJHW.js → index-DMgUhnao.js} +26 -21
  198. package/dist/cjs/index-DMgUhnao.js.map +1 -0
  199. package/dist/cjs/index.cjs.js +2 -4
  200. package/dist/cjs/loader.cjs.js +1 -3
  201. package/dist/cjs/{stringToArray-DWnmNBjZ.js → stringToArray-DTx7uqZ4.js} +4 -3
  202. package/dist/cjs/stringToArray-DTx7uqZ4.js.map +1 -0
  203. package/dist/cjs/transition-C0S-pYqN.js.map +1 -1
  204. package/dist/collection/collection-manifest.json +1 -1
  205. package/dist/collection/components/radio-group/bq-radio-group.js +35 -9
  206. package/dist/collection/components/radio-group/bq-radio-group.js.map +1 -1
  207. package/dist/collection/components/select/bq-select.js +10 -8
  208. package/dist/collection/components/select/bq-select.js.map +1 -1
  209. package/dist/collection/components/select/scss/bq-select.css +1 -1
  210. package/dist/collection/shared/utils/assetsPath.js +6 -10
  211. package/dist/collection/shared/utils/assetsPath.js.map +1 -1
  212. package/dist/collection/shared/utils/stringToArray.js +2 -1
  213. package/dist/collection/shared/utils/stringToArray.js.map +1 -1
  214. package/dist/components/bq-accordion-group.js +1 -1
  215. package/dist/components/bq-accordion-group.js.map +1 -1
  216. package/dist/components/bq-accordion.js +1 -1
  217. package/dist/components/bq-accordion.js.map +1 -1
  218. package/dist/components/bq-alert.js +1 -1
  219. package/dist/components/bq-alert.js.map +1 -1
  220. package/dist/components/bq-avatar.js +1 -1
  221. package/dist/components/bq-avatar.js.map +1 -1
  222. package/dist/components/bq-badge.js +1 -1
  223. package/dist/components/bq-breadcrumb-item.js +1 -1
  224. package/dist/components/bq-breadcrumb-item.js.map +1 -1
  225. package/dist/components/bq-breadcrumb.js +1 -1
  226. package/dist/components/bq-breadcrumb.js.map +1 -1
  227. package/dist/components/bq-button.js +1 -1
  228. package/dist/components/bq-card.js +1 -1
  229. package/dist/components/bq-card.js.map +1 -1
  230. package/dist/components/bq-checkbox.js +1 -1
  231. package/dist/components/bq-checkbox.js.map +1 -1
  232. package/dist/components/bq-date-picker.js +1 -1
  233. package/dist/components/bq-date-picker.js.map +1 -1
  234. package/dist/components/bq-dialog.js +1 -1
  235. package/dist/components/bq-dialog.js.map +1 -1
  236. package/dist/components/bq-divider.js +1 -1
  237. package/dist/components/bq-drawer.js +1 -1
  238. package/dist/components/bq-drawer.js.map +1 -1
  239. package/dist/components/bq-dropdown.js +1 -1
  240. package/dist/components/bq-empty-state.js +1 -1
  241. package/dist/components/bq-empty-state.js.map +1 -1
  242. package/dist/components/bq-icon.js +1 -1
  243. package/dist/components/bq-input.js +1 -1
  244. package/dist/components/bq-input.js.map +1 -1
  245. package/dist/components/bq-notification.js +1 -1
  246. package/dist/components/bq-notification.js.map +1 -1
  247. package/dist/components/bq-option-group.js +1 -1
  248. package/dist/components/bq-option-group.js.map +1 -1
  249. package/dist/components/bq-option-list.js +1 -1
  250. package/dist/components/bq-option.js +1 -1
  251. package/dist/components/bq-option.js.map +1 -1
  252. package/dist/components/bq-page-title.js +1 -1
  253. package/dist/components/bq-page-title.js.map +1 -1
  254. package/dist/components/bq-panel.js +1 -1
  255. package/dist/components/bq-progress.js +1 -1
  256. package/dist/components/bq-progress.js.map +1 -1
  257. package/dist/components/bq-radio-group.js +1 -1
  258. package/dist/components/bq-radio-group.js.map +1 -1
  259. package/dist/components/bq-radio.js +1 -1
  260. package/dist/components/bq-radio.js.map +1 -1
  261. package/dist/components/bq-select.js +1 -1
  262. package/dist/components/bq-select.js.map +1 -1
  263. package/dist/components/bq-side-menu-item.js +1 -1
  264. package/dist/components/bq-side-menu-item.js.map +1 -1
  265. package/dist/components/bq-side-menu.js +1 -1
  266. package/dist/components/bq-side-menu.js.map +1 -1
  267. package/dist/components/bq-slider.js +1 -1
  268. package/dist/components/bq-slider.js.map +1 -1
  269. package/dist/components/bq-spinner.js +1 -1
  270. package/dist/components/bq-spinner.js.map +1 -1
  271. package/dist/components/bq-status.js +1 -1
  272. package/dist/components/bq-status.js.map +1 -1
  273. package/dist/components/bq-step-item.js +1 -1
  274. package/dist/components/bq-step-item.js.map +1 -1
  275. package/dist/components/bq-steps.js +1 -1
  276. package/dist/components/bq-steps.js.map +1 -1
  277. package/dist/components/bq-switch.js +1 -1
  278. package/dist/components/bq-switch.js.map +1 -1
  279. package/dist/components/bq-tab-group.js +1 -1
  280. package/dist/components/bq-tab-group.js.map +1 -1
  281. package/dist/components/bq-tab.js +1 -1
  282. package/dist/components/bq-tab.js.map +1 -1
  283. package/dist/components/bq-tag.js +1 -1
  284. package/dist/components/bq-textarea.js +1 -1
  285. package/dist/components/bq-textarea.js.map +1 -1
  286. package/dist/components/bq-toast.js +1 -1
  287. package/dist/components/bq-toast.js.map +1 -1
  288. package/dist/components/bq-tooltip.js +1 -1
  289. package/dist/components/index.js +1 -1
  290. package/dist/components/{p-CttsUm37.js → p--r87nWid.js} +2 -2
  291. package/dist/components/{p-CttsUm37.js.map → p--r87nWid.js.map} +1 -1
  292. package/dist/components/{p-DpHyV2gx.js → p-3U5U42sd.js} +2 -2
  293. package/dist/components/{p-DpHyV2gx.js.map → p-3U5U42sd.js.map} +1 -1
  294. package/dist/components/{p-BREXcAn5.js → p-5stK0dyx.js} +2 -2
  295. package/dist/components/{p-BREXcAn5.js.map → p-5stK0dyx.js.map} +1 -1
  296. package/dist/components/{p-BrcJUBET.js → p-CHy0sCco.js} +2 -2
  297. package/dist/components/{p-BrcJUBET.js.map → p-CHy0sCco.js.map} +1 -1
  298. package/dist/components/p-C_mtknb1.js +6 -0
  299. package/dist/components/p-C_mtknb1.js.map +1 -0
  300. package/dist/components/{p-BzYR7w7X.js → p-CeT8gvNG.js} +2 -2
  301. package/dist/components/{p-BzYR7w7X.js.map → p-CeT8gvNG.js.map} +1 -1
  302. package/dist/components/{p-DngixUI8.js → p-D5Ui9x2e.js} +2 -2
  303. package/dist/components/{p-DngixUI8.js.map → p-D5Ui9x2e.js.map} +1 -1
  304. package/dist/components/p-D8zAe4nK.js +6 -0
  305. package/dist/components/p-D8zAe4nK.js.map +1 -0
  306. package/dist/components/{p-9gvSRSmi.js → p-DX628oDu.js} +2 -2
  307. package/dist/components/{p-9gvSRSmi.js.map → p-DX628oDu.js.map} +1 -1
  308. package/dist/components/p-DdvbF5yL.js.map +1 -1
  309. package/dist/components/{p-DZeqNx0s.js → p-DwLfHxB7.js} +2 -2
  310. package/dist/components/{p-DZeqNx0s.js.map → p-DwLfHxB7.js.map} +1 -1
  311. package/dist/components/{p-DZoizZde.js → p-eLopxgQr.js} +2 -2
  312. package/dist/components/p-eLopxgQr.js.map +1 -0
  313. package/dist/custom-elements.json +232 -225
  314. package/dist/esm/{assetsPath-v2hVBSPV.js → assetsPath-CJqXJ_hN.js} +8 -12
  315. package/dist/esm/assetsPath-CJqXJ_hN.js.map +1 -0
  316. package/dist/esm/beeq.js +3 -5
  317. package/dist/esm/beeq.js.map +1 -1
  318. package/dist/esm/bq-accordion-group.entry.js +2 -4
  319. package/dist/esm/bq-accordion-group.entry.js.map +1 -1
  320. package/dist/esm/bq-accordion.entry.js +1 -3
  321. package/dist/esm/bq-alert.entry.js +2 -4
  322. package/dist/esm/bq-alert.entry.js.map +1 -1
  323. package/dist/esm/bq-avatar.entry.js +2 -4
  324. package/dist/esm/bq-avatar.entry.js.map +1 -1
  325. package/dist/esm/bq-badge.entry.js +1 -3
  326. package/dist/esm/bq-breadcrumb-item.entry.js +2 -4
  327. package/dist/esm/bq-breadcrumb-item.entry.js.map +1 -1
  328. package/dist/esm/bq-breadcrumb.entry.js +2 -4
  329. package/dist/esm/bq-breadcrumb.entry.js.map +1 -1
  330. package/dist/esm/bq-button.bq-icon.entry.js.map +1 -1
  331. package/dist/esm/bq-button_2.entry.js +3 -5
  332. package/dist/esm/bq-card.entry.js +2 -4
  333. package/dist/esm/bq-card.entry.js.map +1 -1
  334. package/dist/esm/bq-checkbox.entry.js +2 -4
  335. package/dist/esm/bq-checkbox.entry.js.map +1 -1
  336. package/dist/esm/bq-date-picker.entry.js +2 -4
  337. package/dist/esm/bq-date-picker.entry.js.map +1 -1
  338. package/dist/esm/bq-dialog.entry.js +2 -4
  339. package/dist/esm/bq-dialog.entry.js.map +1 -1
  340. package/dist/esm/bq-divider.entry.js +1 -3
  341. package/dist/esm/bq-drawer.entry.js +2 -4
  342. package/dist/esm/bq-drawer.entry.js.map +1 -1
  343. package/dist/esm/bq-dropdown.bq-panel.entry.js.map +1 -1
  344. package/dist/esm/bq-dropdown_2.entry.js +3 -5
  345. package/dist/esm/bq-empty-state.entry.js +2 -4
  346. package/dist/esm/bq-empty-state.entry.js.map +1 -1
  347. package/dist/esm/bq-input.entry.js +2 -4
  348. package/dist/esm/bq-input.entry.js.map +1 -1
  349. package/dist/esm/bq-notification.entry.js +2 -4
  350. package/dist/esm/bq-notification.entry.js.map +1 -1
  351. package/dist/esm/bq-option-group.entry.js +2 -4
  352. package/dist/esm/bq-option-group.entry.js.map +1 -1
  353. package/dist/esm/bq-option-list.bq-tag.entry.js.map +1 -1
  354. package/dist/esm/bq-option-list_2.entry.js +3 -5
  355. package/dist/esm/bq-option.entry.js +1 -3
  356. package/dist/esm/bq-page-title.entry.js +2 -4
  357. package/dist/esm/bq-page-title.entry.js.map +1 -1
  358. package/dist/esm/bq-progress.entry.js +2 -4
  359. package/dist/esm/bq-progress.entry.js.map +1 -1
  360. package/dist/esm/bq-radio-group.entry.js +18 -11
  361. package/dist/esm/bq-radio-group.entry.js.map +1 -1
  362. package/dist/esm/bq-radio.entry.js +1 -3
  363. package/dist/esm/bq-select.entry.js +11 -11
  364. package/dist/esm/bq-select.entry.js.map +1 -1
  365. package/dist/esm/bq-side-menu-item.entry.js +2 -4
  366. package/dist/esm/bq-side-menu-item.entry.js.map +1 -1
  367. package/dist/esm/bq-side-menu.entry.js +1 -3
  368. package/dist/esm/bq-slider.entry.js +1 -3
  369. package/dist/esm/bq-spinner.entry.js +2 -4
  370. package/dist/esm/bq-spinner.entry.js.map +1 -1
  371. package/dist/esm/bq-status.entry.js +2 -4
  372. package/dist/esm/bq-status.entry.js.map +1 -1
  373. package/dist/esm/bq-step-item.entry.js +1 -3
  374. package/dist/esm/bq-steps.entry.js +2 -4
  375. package/dist/esm/bq-steps.entry.js.map +1 -1
  376. package/dist/esm/bq-switch.entry.js +2 -4
  377. package/dist/esm/bq-switch.entry.js.map +1 -1
  378. package/dist/esm/bq-tab-group.entry.js +2 -4
  379. package/dist/esm/bq-tab-group.entry.js.map +1 -1
  380. package/dist/esm/bq-tab.entry.js +2 -4
  381. package/dist/esm/bq-tab.entry.js.map +1 -1
  382. package/dist/esm/bq-textarea.entry.js +2 -4
  383. package/dist/esm/bq-textarea.entry.js.map +1 -1
  384. package/dist/esm/bq-toast.entry.js +2 -4
  385. package/dist/esm/bq-toast.entry.js.map +1 -1
  386. package/dist/esm/bq-tooltip.entry.js +2 -4
  387. package/dist/esm/{index-C4jSqdYP.js → index-B2Q_ACEf.js} +26 -21
  388. package/dist/esm/index-B2Q_ACEf.js.map +1 -0
  389. package/dist/esm/{index-y49NXy_H.js → index-C_mtknb1.js} +39 -22
  390. package/dist/esm/index-C_mtknb1.js.map +1 -0
  391. package/dist/esm/index.js +2 -4
  392. package/dist/esm/loader.js +2 -4
  393. package/dist/esm/{stringToArray-g9MEtfgW.js → stringToArray-DD7NecAG.js} +4 -3
  394. package/dist/esm/stringToArray-DD7NecAG.js.map +1 -0
  395. package/dist/esm/transition-DdvbF5yL.js.map +1 -1
  396. package/dist/hydrate/index.js +83 -53
  397. package/dist/hydrate/index.mjs +83 -53
  398. package/dist/types/components/radio-group/bq-radio-group.d.ts +2 -0
  399. package/dist/types/components.d.ts +5 -0
  400. package/dist/types/stencil-public-runtime.d.ts +23 -0
  401. package/package.json +4 -4
  402. package/dist/beeq/p-12c13e8e.entry.js.map +0 -1
  403. package/dist/beeq/p-18af4fe6.entry.js.map +0 -1
  404. package/dist/beeq/p-1a19b5fa.entry.js.map +0 -1
  405. package/dist/beeq/p-1ca28052.entry.js.map +0 -1
  406. package/dist/beeq/p-1dded250.entry.js.map +0 -1
  407. package/dist/beeq/p-22c634b5.entry.js.map +0 -1
  408. package/dist/beeq/p-3464beb1.entry.js.map +0 -1
  409. package/dist/beeq/p-36d1fb9d.entry.js +0 -6
  410. package/dist/beeq/p-36d1fb9d.entry.js.map +0 -1
  411. package/dist/beeq/p-38b70ecf.entry.js.map +0 -1
  412. package/dist/beeq/p-4362ebdd.entry.js.map +0 -1
  413. package/dist/beeq/p-4aa72d5a.entry.js.map +0 -1
  414. package/dist/beeq/p-5b60b7fa.entry.js.map +0 -1
  415. package/dist/beeq/p-622b9249.entry.js.map +0 -1
  416. package/dist/beeq/p-67597553.entry.js.map +0 -1
  417. package/dist/beeq/p-694593eb.entry.js.map +0 -1
  418. package/dist/beeq/p-69f1f5ad.entry.js.map +0 -1
  419. package/dist/beeq/p-6eb439a3.entry.js.map +0 -1
  420. package/dist/beeq/p-83c5cd25.entry.js.map +0 -1
  421. package/dist/beeq/p-88a8f431.entry.js.map +0 -1
  422. package/dist/beeq/p-8918acc2.entry.js.map +0 -1
  423. package/dist/beeq/p-9573c018.entry.js +0 -6
  424. package/dist/beeq/p-9573c018.entry.js.map +0 -1
  425. package/dist/beeq/p-96fed9ed.entry.js.map +0 -1
  426. package/dist/beeq/p-9b03ec25.entry.js.map +0 -1
  427. package/dist/beeq/p-BO2RoztC.js +0 -6
  428. package/dist/beeq/p-BO2RoztC.js.map +0 -1
  429. package/dist/beeq/p-C4jSqdYP.js.map +0 -1
  430. package/dist/beeq/p-DG51kDIQ.js +0 -6
  431. package/dist/beeq/p-DG51kDIQ.js.map +0 -1
  432. package/dist/beeq/p-a8c20aaf.entry.js +0 -6
  433. package/dist/beeq/p-a8c20aaf.entry.js.map +0 -1
  434. package/dist/beeq/p-ad56e393.entry.js.map +0 -1
  435. package/dist/beeq/p-afb356b4.entry.js.map +0 -1
  436. package/dist/beeq/p-b144f52a.entry.js.map +0 -1
  437. package/dist/beeq/p-b7be6f2a.entry.js.map +0 -1
  438. package/dist/beeq/p-bb038cc5.entry.js.map +0 -1
  439. package/dist/beeq/p-c7b5ae9b.entry.js.map +0 -1
  440. package/dist/beeq/p-c7d5983f.entry.js.map +0 -1
  441. package/dist/beeq/p-c886eaab.entry.js.map +0 -1
  442. package/dist/beeq/p-cb1ec3ac.entry.js.map +0 -1
  443. package/dist/beeq/p-cf711f06.entry.js.map +0 -1
  444. package/dist/beeq/p-d90d892b.entry.js.map +0 -1
  445. package/dist/beeq/p-dac78869.entry.js.map +0 -1
  446. package/dist/beeq/p-def3bd26.entry.js.map +0 -1
  447. package/dist/beeq/p-ef64ddbc.entry.js.map +0 -1
  448. package/dist/beeq/p-fc2f0022.entry.js.map +0 -1
  449. package/dist/beeq/p-y49NXy_H.js +0 -6
  450. package/dist/beeq/p-y49NXy_H.js.map +0 -1
  451. package/dist/cjs/assetsPath-CyeA6tpY.js.map +0 -1
  452. package/dist/cjs/bq-accordion-group.cjs.entry.js.map +0 -1
  453. package/dist/cjs/bq-accordion.cjs.entry.js.map +0 -1
  454. package/dist/cjs/bq-alert.cjs.entry.js.map +0 -1
  455. package/dist/cjs/bq-avatar.cjs.entry.js.map +0 -1
  456. package/dist/cjs/bq-badge.cjs.entry.js.map +0 -1
  457. package/dist/cjs/bq-breadcrumb-item.cjs.entry.js.map +0 -1
  458. package/dist/cjs/bq-breadcrumb.cjs.entry.js.map +0 -1
  459. package/dist/cjs/bq-button_2.cjs.entry.js.map +0 -1
  460. package/dist/cjs/bq-card.cjs.entry.js.map +0 -1
  461. package/dist/cjs/bq-checkbox.cjs.entry.js.map +0 -1
  462. package/dist/cjs/bq-date-picker.cjs.entry.js.map +0 -1
  463. package/dist/cjs/bq-dialog.cjs.entry.js.map +0 -1
  464. package/dist/cjs/bq-divider.cjs.entry.js.map +0 -1
  465. package/dist/cjs/bq-drawer.cjs.entry.js.map +0 -1
  466. package/dist/cjs/bq-dropdown_2.cjs.entry.js.map +0 -1
  467. package/dist/cjs/bq-empty-state.cjs.entry.js.map +0 -1
  468. package/dist/cjs/bq-input.cjs.entry.js.map +0 -1
  469. package/dist/cjs/bq-notification.cjs.entry.js.map +0 -1
  470. package/dist/cjs/bq-option-group.cjs.entry.js.map +0 -1
  471. package/dist/cjs/bq-option-list_2.cjs.entry.js.map +0 -1
  472. package/dist/cjs/bq-option.cjs.entry.js.map +0 -1
  473. package/dist/cjs/bq-page-title.cjs.entry.js.map +0 -1
  474. package/dist/cjs/bq-progress.cjs.entry.js.map +0 -1
  475. package/dist/cjs/bq-radio-group.cjs.entry.js.map +0 -1
  476. package/dist/cjs/bq-radio.cjs.entry.js.map +0 -1
  477. package/dist/cjs/bq-select.cjs.entry.js.map +0 -1
  478. package/dist/cjs/bq-side-menu-item.cjs.entry.js.map +0 -1
  479. package/dist/cjs/bq-side-menu.cjs.entry.js.map +0 -1
  480. package/dist/cjs/bq-slider.cjs.entry.js.map +0 -1
  481. package/dist/cjs/bq-spinner.cjs.entry.js.map +0 -1
  482. package/dist/cjs/bq-status.cjs.entry.js.map +0 -1
  483. package/dist/cjs/bq-step-item.cjs.entry.js.map +0 -1
  484. package/dist/cjs/bq-steps.cjs.entry.js.map +0 -1
  485. package/dist/cjs/bq-switch.cjs.entry.js.map +0 -1
  486. package/dist/cjs/bq-tab-group.cjs.entry.js.map +0 -1
  487. package/dist/cjs/bq-tab.cjs.entry.js.map +0 -1
  488. package/dist/cjs/bq-textarea.cjs.entry.js.map +0 -1
  489. package/dist/cjs/bq-toast.cjs.entry.js.map +0 -1
  490. package/dist/cjs/bq-tooltip.cjs.entry.js.map +0 -1
  491. package/dist/cjs/index-BKXwzJHW.js.map +0 -1
  492. package/dist/cjs/index-tFN0ax76.js.map +0 -1
  493. package/dist/cjs/stringToArray-DWnmNBjZ.js.map +0 -1
  494. package/dist/components/p-DSDQV9S1.js +0 -6
  495. package/dist/components/p-DSDQV9S1.js.map +0 -1
  496. package/dist/components/p-DZoizZde.js.map +0 -1
  497. package/dist/components/p-y49NXy_H.js +0 -6
  498. package/dist/components/p-y49NXy_H.js.map +0 -1
  499. package/dist/esm/assetsPath-v2hVBSPV.js.map +0 -1
  500. package/dist/esm/bq-button_2.entry.js.map +0 -1
  501. package/dist/esm/bq-dropdown_2.entry.js.map +0 -1
  502. package/dist/esm/bq-option-list_2.entry.js.map +0 -1
  503. package/dist/esm/index-C4jSqdYP.js.map +0 -1
  504. package/dist/esm/index-y49NXy_H.js.map +0 -1
  505. package/dist/esm/stringToArray-g9MEtfgW.js.map +0 -1
  506. /package/dist/types/{home/runner/work/BEEQ/BEEQ → Users/dramos/PROJECTs/ENDAVA/BEEQ-Design-System}/.stencil/packages/beeq/jest.config.d.ts +0 -0
  507. /package/dist/types/{home/runner/work/BEEQ/BEEQ → Users/dramos/PROJECTs/ENDAVA/BEEQ-Design-System}/.stencil/packages/beeq/stencil.config.d.ts +0 -0
  508. /package/dist/types/{home/runner/work/BEEQ/BEEQ → Users/dramos/PROJECTs/ENDAVA/BEEQ-Design-System}/.stencil/tailwind.config.d.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqSideMenuCss","BqSideMenu","menuItemCssSelector","bodyCss","bodyCssExpand","bodyCssCollapse","menuElem","documentBody","appearance","collapse","size","onCollapsePropChange","this","handleCollapse","bqCollapse","emit","bqSelect","componentDidLoad","isClient","document","querySelector","classList","add","disconnectedCallback","cleanDocumentBodyClass","onMenuItemClick","event","target","item","isHTMLElement","menuItems","forEach","menuItem","active","disabled","toggleCollapse","slot","assignedElements","flatten","filter","el","tagName","toLowerCase","length","collapseDocumentBody","expandDocumentBody","remove","render","h","key","class","part","name","ref","navElem","role"],"sources":["../../packages/beeq/src/components/side-menu/scss/bq-side-menu.scss?tag=bq-side-menu&encapsulation=shadow","../../packages/beeq/src/components/side-menu/bq-side-menu.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Side menu styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-side-menu.variables';\n\n:host {\n @apply flex overflow-hidden;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Aside container */\n/* -------------------------------------------------------------------------- */\n\n.bq-side-menu {\n @apply fixed flex h-dynamic-vh grow flex-col bg-[--bq-side-menu--bg-color] is-[--bq-side-menu--width] inset-bs-0 inset-is-0;\n @apply border-0 border-e-s border-solid border-[color:--bq-side-menu--border-color];\n @apply transition-[background-color,width] duration-150;\n @include hide-scrollbar;\n}\n\n.bq-side-menu.is-collapsed {\n @apply is-[--bq-side-menu--width-collapse];\n}\n\n/* -------------------------------------------------------------------------- */\n/* Logo container */\n/* -------------------------------------------------------------------------- */\n\n.bq-side-menu--logo {\n @apply sticky top-0 z-[1] p-xs;\n @apply box-content flex items-center bg-[--bq-side-menu--bg-color] text-[color:--bq-side-menu--brand-color];\n}\n\n/* -------------------------------------------------------------------------- */\n/* APPEARANCE */\n/* -------------------------------------------------------------------------- */\n\n/**\n * The following change the default values of some CSS custom properties\n * to make it complain with the side menu appearance selected\n */\n\n:host([size='small']) {\n ::slotted(bq-side-menu-item) {\n --bq-side-menu-item--paddingY: theme(space.s);\n }\n}\n\n:host([appearance='brand']) {\n --bq-focus: theme(stroke.alt);\n --bq-side-menu--bg-color: theme(backgroundColor.ui.brand);\n --bq-side-menu--brand-color: theme(stroke.inverse);\n --bq-side-menu--border-color: theme(stroke.brand);\n\n ::slotted(bq-side-menu-item) {\n --bq-side-menu-item--bg-hover: color-mix(in srgb, var(--bq-ui--brand), var(--bq-hover) 20%);\n\n --bq-side-menu-item--text-default: theme(textColor.alt);\n --bq-side-menu-item--text-hover: theme(textColor.alt);\n }\n\n .bq-side-menu--footer ::slotted([slot='footer']) {\n --bq-ui--secondary: theme(colors.transparent);\n --bq-text--primary: theme(textColor.inverse);\n }\n}\n\n:host([appearance='inverse']) {\n --bq-side-menu--bg-color: theme(backgroundColor.ui.inverse);\n --bq-side-menu--brand-color: theme(stroke.inverse);\n --bq-side-menu--border-color: theme(backgroundColor.ui.inverse);\n\n ::slotted(bq-side-menu-item) {\n --bq-side-menu-item--bg-hover: color-mix(in srgb, var(--bq-ui--inverse), var(--bq-hover) 20%);\n --bq-side-menu-item--bg-active: color-mix(in srgb, var(--bq-ui--alt), var(--bq-active) 20%);\n\n --bq-side-menu-item--text-default: theme(textColor.inverse);\n --bq-side-menu-item--text-hover: theme(textColor.inverse);\n --bq-side-menu-item--text-active: theme(textColor.primary);\n }\n\n .bq-side-menu--footer ::slotted([slot='footer']) {\n --bq-ui--secondary: theme(colors.transparent);\n --bq-text--primary: theme(textColor.inverse);\n }\n}\n","import { Component, Event, h, Listen, Method, Prop, State, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\nimport type { TSideMenuAppearance, TSideMenuSize } from './bq-side-menu.types';\nimport { isClient, isHTMLElement } from '../../shared/utils';\n\n/**\n *The default side menu serves as a versatile container for organizing and displaying navigation elements,\n * with default side menu items providing a clean and straightforward way to represent individual menu options.\n * Together, they form the foundation for building structured and intuitive side menu layouts.\n *\n * @example How to use it\n * ```html\n * <bq-side-menu>\n * <div slot=\"logo\">\n * <h1>Your Logo</h1>\n * </div>\n * <bq-side-menu-item active>\n * <bq-icon name=\"home\" slot=\"prefix\"></bq-icon>\n * Home\n * </bq-side-menu-item>\n * <bq-side-menu-item>\n * <bq-icon name=\"settings\" slot=\"prefix\"></bq-icon>\n * Settings\n * </bq-side-menu-item>\n * <bq-side-menu-item disabled>\n * <bq-icon name=\"help\" slot=\"prefix\"></bq-icon>\n * Help\n * </bq-side-menu-item>\n * </bq-side-menu>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/99822d-side-menu/b/09d7b1\n * @status stable\n *\n * @attr {\"brand\" | \"default\" | \"inverse\"} appearance - It sets a predefined appearance of the side menu.\n * @attr {boolean} collapse - If `true`, the container will reduce its width.\n * @attr {\"medium\" | \"small\"} - size - It sets the size of the navigation menu items.\n *\n * @method toggleCollapse - Method to be called to toggle the collapse state of the side menu.\n *\n * @event bqCollapse - Callback handler to be called when the Side menu changes its width from expanded to collapse and vice versa.\n * @event bqSelect - Callback handler to be called when the active/selected menu item changes.\n *\n * @slot logo - The section for displaying the logo or brand in the side menu.\n * @slot The main section that holds all menu items.\n * @slot footer - The section for adding footer content to the side menu.\n *\n * @part base - HTML `<aside>` root container\n * @part footer - HTML `<div>` element that holds the footer\n * @part logo - HTML `<div>` element that holds the logo\n * @part nav - HTML `<nav>` element that holds the navigation items\n *\n * @cssprop --bq-side-menu--bg-color - Side menu background color\n * @cssprop --bq-side-menu--brand-color - Side menu logo color\n * @cssprop --bq-side-menu--border-color - Side menu border color\n */\n@Component({\n tag: 'bq-side-menu',\n styleUrl: './scss/bq-side-menu.scss',\n shadow: true,\n})\nexport class BqSideMenu {\n // Own Properties\n // ====================\n\n private menuItemCssSelector = 'bq-side-menu-item';\n\n private bodyCss = 'bq-body--side-menu';\n private bodyCssExpand = 'bq-body--side-menu__expand';\n private bodyCssCollapse = 'bq-body--side-menu__collapse';\n\n private menuElem: HTMLElement;\n\n // Reference to host HTML element\n // ===================================\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private documentBody: HTMLBodyElement;\n\n // Public Property API\n // ========================\n\n /** It sets a predefined appearance of the side menu */\n @Prop({ reflect: true }) appearance: TSideMenuAppearance = 'default';\n\n /** If true, the container will reduce its width */\n @Prop({ reflect: true }) collapse: boolean = false;\n\n /** It sets the size of the navigation menu items */\n @Prop({ reflect: true }) size: TSideMenuSize = 'medium';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('collapse')\n onCollapsePropChange() {\n this.handleCollapse();\n this.bqCollapse.emit({ collapse: this.collapse });\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler to be called when the Side menu changes its width from expanded to collapse and vice versa */\n @Event() bqCollapse: EventEmitter<{ collapse: boolean }>;\n\n /** Callback handler to be called when the active/selected menu item changes */\n @Event() bqSelect: EventEmitter<HTMLBqSideMenuItemElement>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentDidLoad() {\n if (!isClient()) return;\n\n this.documentBody = document.querySelector('body');\n this.documentBody.classList.add(this.bodyCss);\n this.handleCollapse();\n }\n\n disconnectedCallback() {\n this.cleanDocumentBodyClass();\n }\n\n // Listeners\n // ==============\n\n @Listen('bqClick', { passive: true })\n onMenuItemClick(event: Event) {\n const { target: item } = event;\n if (!isHTMLElement(item, 'bq-side-menu-item')) return;\n\n this.menuItems.forEach(\n (menuItem: HTMLBqSideMenuItemElement) => (menuItem.active = !menuItem.disabled && menuItem === item),\n );\n this.bqSelect.emit(item);\n }\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n /** Toggle the collapse state of the side menu */\n @Method()\n async toggleCollapse() {\n this.collapse = !this.collapse;\n }\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private get menuItems() {\n if (!this.menuElem) return [];\n\n const slot = this.menuElem.querySelector('slot');\n return [...slot.assignedElements({ flatten: true })].filter(\n (el: HTMLBqSideMenuItemElement) => el.tagName.toLowerCase() === this.menuItemCssSelector,\n ) as [HTMLBqSideMenuItemElement];\n }\n\n private handleCollapse = () => {\n if (!this.menuItems.length) return;\n\n this.menuItems.forEach((menuItem: HTMLBqSideMenuItemElement) => (menuItem.collapse = this.collapse));\n if (this.collapse) {\n this.collapseDocumentBody();\n } else {\n this.expandDocumentBody();\n }\n };\n\n private collapseDocumentBody = () => {\n if (!this.collapse) return;\n\n this.documentBody.classList.remove(this.bodyCssExpand);\n this.documentBody.classList.add(this.bodyCssCollapse);\n };\n\n private expandDocumentBody = () => {\n if (this.collapse) return;\n\n this.documentBody.classList.remove(this.bodyCssCollapse);\n this.documentBody.classList.add(this.bodyCssExpand);\n };\n\n private cleanDocumentBodyClass = () => {\n this.documentBody.classList.remove(this.bodyCss, this.bodyCssCollapse, this.bodyCssExpand);\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <aside class={{ 'bq-side-menu overflow-y-auto': true, 'is-collapsed': this.collapse }} part=\"base\">\n {/* Company logo and name */}\n <div class={{ 'bq-side-menu--logo': true, 'is-collapsed': this.collapse }} part=\"logo\">\n <slot name=\"logo\" />\n </div>\n {/* Navigation content */}\n <nav\n class=\"bq-side-menu--nav flex flex-col gap-y-xs px-xs pt-xs2\"\n ref={(navElem) => (this.menuElem = navElem)}\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role\n role=\"menu\"\n part=\"nav\"\n >\n <slot />\n </nav>\n {/* Footer */}\n <div\n class=\"bq-side-menu--footer sticky flex justify-center bg-[var(--bq-side-menu--bg-color)] p-xs inset-be-0 m-bs-[auto]\"\n part=\"footer\"\n >\n <slot name=\"footer\"></slot>\n </div>\n </aside>\n );\n }\n}\n"],"mappings":";;;;0HAAA,MAAMA,EAAgB,squB,MC8DTC,EAAU,M,+FAIbC,oBAAsB,oBAEtBC,QAAU,qBACVC,cAAgB,6BAChBC,gBAAkB,+BAElBC,SASSC,aAMQC,WAAkC,UAGlCC,SAAoB,MAGpBC,KAAsB,SAM/C,oBAAAC,GACEC,KAAKC,iBACLD,KAAKE,WAAWC,KAAK,CAAEN,SAAUG,KAAKH,U,CAQ/BK,WAGAE,SAMT,gBAAAC,GACE,IAAKC,IAAY,OAEjBN,KAAKL,aAAeY,SAASC,cAAc,QAC3CR,KAAKL,aAAac,UAAUC,IAAIV,KAAKT,SACrCS,KAAKC,gB,CAGP,oBAAAU,GACEX,KAAKY,wB,CAOP,eAAAC,CAAgBC,GACd,MAAQC,OAAQC,GAASF,EACzB,IAAKG,EAAcD,EAAM,qBAAsB,OAE/ChB,KAAKkB,UAAUC,SACZC,GAAyCA,EAASC,QAAUD,EAASE,UAAYF,IAAaJ,IAEjGhB,KAAKI,SAASD,KAAKa,E,CAYrB,oBAAMO,GACJvB,KAAKH,UAAYG,KAAKH,Q,CAQxB,aAAYqB,GACV,IAAKlB,KAAKN,SAAU,MAAO,GAE3B,MAAM8B,EAAOxB,KAAKN,SAASc,cAAc,QACzC,MAAO,IAAIgB,EAAKC,iBAAiB,CAAEC,QAAS,QAASC,QAClDC,GAAkCA,EAAGC,QAAQC,gBAAkB9B,KAAKV,qB,CAIjEW,eAAiB,KACvB,IAAKD,KAAKkB,UAAUa,OAAQ,OAE5B/B,KAAKkB,UAAUC,SAASC,GAAyCA,EAASvB,SAAWG,KAAKH,WAC1F,GAAIG,KAAKH,SAAU,CACjBG,KAAKgC,sB,KACA,CACLhC,KAAKiC,oB,GAIDD,qBAAuB,KAC7B,IAAKhC,KAAKH,SAAU,OAEpBG,KAAKL,aAAac,UAAUyB,OAAOlC,KAAKR,eACxCQ,KAAKL,aAAac,UAAUC,IAAIV,KAAKP,gBAAgB,EAG/CwC,mBAAqB,KAC3B,GAAIjC,KAAKH,SAAU,OAEnBG,KAAKL,aAAac,UAAUyB,OAAOlC,KAAKP,iBACxCO,KAAKL,aAAac,UAAUC,IAAIV,KAAKR,cAAc,EAG7CoB,uBAAyB,KAC/BZ,KAAKL,aAAac,UAAUyB,OAAOlC,KAAKT,QAASS,KAAKP,gBAAiBO,KAAKR,cAAc,EAO5F,MAAA2C,GACE,OACEC,EAAO,SAAAC,IAAA,2CAAAC,MAAO,CAAE,+BAAgC,KAAM,eAAgBtC,KAAKH,UAAY0C,KAAK,QAE1FH,EAAA,OAAAC,IAAA,2CAAKC,MAAO,CAAE,qBAAsB,KAAM,eAAgBtC,KAAKH,UAAY0C,KAAK,QAC9EH,EAAA,QAAAC,IAAA,2CAAMG,KAAK,UAGbJ,EAAA,OAAAC,IAAA,2CACEC,MAAM,wDACNG,IAAMC,GAAa1C,KAAKN,SAAWgD,EAEnCC,KAAK,OACLJ,KAAK,OAELH,EAAA,QAAAC,IAAA,8CAGFD,EAAA,OAAAC,IAAA,2CACEC,MAAM,iHACNC,KAAK,UAELH,EAAA,QAAAC,IAAA,2CAAMG,KAAK,Y","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["AVATAR_SIZE","AVATAR_SHAPE","bqAvatarCss","BqAvatar","trimmedInitials","hasError","altText","image","label","initials","shape","size","handleImagePropChange","this","checkPropValues","validatePropValue","el","onInitialsChange","trimInitialsBasedOnSize","componentWillLoad","onImageError","forEach","substring","getIndex","sizeIndexMap","xsmall","small","medium","large","render","h","Host","key","class","role","part","alt","undefined","src","onError","name"],"sources":["../../packages/beeq/src/components/avatar/bq-avatar.types.ts","../../packages/beeq/src/components/avatar/scss/bq-avatar.scss?tag=bq-avatar&encapsulation=shadow","../../packages/beeq/src/components/avatar/bq-avatar.tsx"],"sourcesContent":["export const AVATAR_SIZE = ['xsmall', 'small', 'medium', 'large'] as const;\nexport type TAvatarSize = (typeof AVATAR_SIZE)[number];\n\nexport const AVATAR_SHAPE = ['circle', 'square'] as const;\nexport type TAvatarShape = (typeof AVATAR_SHAPE)[number];\n","/* -------------------------------------------------------------------------- */\n/* Avatar styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-avatar.variables';\n\n:host {\n @apply relative inline-block;\n}\n\n.bq-avatar {\n @apply relative overflow-hidden bg-[var(--bq-avatar-background)];\n @apply border-[length:var(--bq-avatar--border-width)] border-[color:var(--bq-avatar--border-color)];\n\n border-style: var(--bq-avatar--border-style);\n}\n\n.size {\n &--xsmall {\n @apply text-[length:var(--bq-avatar--font-size-xsmall)] bs-[--bq-avatar--size-xsmall] is-[--bq-avatar--size-xsmall];\n }\n\n &--small {\n @apply text-[length:var(--bq-avatar--font-size-small)] bs-[--bq-avatar--size-small] is-[--bq-avatar--size-small];\n }\n\n &--medium {\n @apply text-[length:var(--bq-avatar--font-size-medium)] bs-[--bq-avatar--size-medium] is-[--bq-avatar--size-medium];\n }\n\n &--large {\n @apply text-[length:var(--bq-avatar--font-size-large)] bs-[--bq-avatar--size-large] is-[--bq-avatar--size-large];\n }\n}\n","import { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core';\n\nimport { AVATAR_SHAPE, AVATAR_SIZE } from './bq-avatar.types';\nimport type { TAvatarShape, TAvatarSize } from './bq-avatar.types';\nimport { validatePropValue } from '../../shared/utils';\n\n/**\n * The Avatar component is a simple and customizable element that displays an image or initials in a circular or square shape.\n * This component is useful for displaying user profile pictures or any other image that represents a person or an entity.\n *\n * @example How to use it\n * ```html\n * <bq-avatar\n * alt-text=\"John Doe profile picture\"\n * image=\"/image/url/photo-1524593689594.jpeg\"\n * label=\"John Doe profile picture\"\n * shape=\"circle\"\n * size=\"medium\"\n * >\n * <bq-badge slot=\"badge\" text-color=\"#fff\">9</bq-badge>\n * </bq-avatar>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/148da7-avatar\n * @status stable\n *\n * @attr {string} alt-text - Alternate text for the avatar image if the image cannot be displayed.\n * @attr {string} image - The image source to load on the avatar (this can be also a base64 encoded image).\n * @attr {string} label - A text to use for describing the avatar on assistive devices.\n * @attr {string} initials - The text to display on avatar.\n * @attr {\"circle\" | \"square\"} shape - The shape of the avatar.\n * @attr {\"xsmall\" | \"small\" | \"medium\" | \"large\"} size - The size of the avatar.\n *\n * @slot badge - The badge slot is used to add a badge to the avatar. The badge is a small circle or square that can be used to display a number or a status.\n *\n * @part base - The component's internal wrapper.\n * @part img - The `<image>` tag element that load the image source.\n * @part text - The `<span>` tag element that rendered the `Initials` text string.\n * @part badge - The container that wraps the badge slot element.\n *\n * @cssprop --bq-avatar--background - Avatar background color\n *\n * @cssprop --bq-avatar--border-color - Avatar border color\n * @cssprop --bq-avatar--border-style - Avatar border style\n * @cssprop --bq-avatar--border-width - Avatar border width\n *\n * @cssprop --bq-avatar--border-radius-circle - Avatar border radius for circle & any size\n * @cssprop --bq-avatar--border-radius-squareXs - Avatar border radius for square & size xsmall\n * @cssprop --bq-avatar--border-radius-squareS - Avatar border radius for square & size small\n * @cssprop --bq-avatar--border-radius-squareM - Avatar border radius for square & size medium/large\n *\n * @cssprop --bq-avatar--size-xsmall - Avatar xsmall size\n * @cssprop --bq-avatar--size-small - Avatar small size\n * @cssprop --bq-avatar--size-medium - Avatar medium size\n * @cssprop --bq-avatar--size-large - Avatar large size\n *\n * @cssprop --bq-avatar--badge-top-square - Badge top position shape square\n * @cssprop --bq-avatar--badge-left-square - Badge left position shape square\n * @cssprop --bq-avatar--badge-top-circle - Badge top position shape circle\n * @cssprop --bq-avatar--badge-left-circle - Badge left position shape circle\n */\n@Component({\n tag: 'bq-avatar',\n styleUrl: './scss/bq-avatar.scss',\n shadow: true,\n})\nexport class BqAvatar {\n // Own Properties\n // ====================\n\n trimmedInitials: string;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqAvatarElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() hasError: boolean;\n\n // Public Property API\n // ========================\n\n /** Alternate text for the avatar image if the image cannot be displayed */\n @Prop({ reflect: true }) altText: string;\n\n /** The image source to load on the avatar (this can be also a base64 encoded image) */\n @Prop({ reflect: true }) image: string;\n\n /** A text to use for describing the avatar on assistive devices */\n @Prop({ reflect: true }) label: string;\n\n /** The text to display on avatar */\n @Prop({ reflect: true }) initials: string;\n\n /** The shape of the avatar */\n @Prop({ reflect: true }) shape: TAvatarShape = 'circle';\n\n /** The size of the avatar */\n @Prop({ reflect: true, mutable: true }) size: TAvatarSize = 'medium';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('image')\n handleImagePropChange() {\n // Reset the error when a new image source is provided\n this.hasError = false;\n }\n\n @Watch('shape')\n @Watch('size')\n checkPropValues() {\n validatePropValue(AVATAR_SHAPE, 'circle', this.el, 'shape');\n validatePropValue(AVATAR_SIZE, 'medium', this.el, 'size');\n }\n\n @Watch('initials')\n @Watch('size')\n onInitialsChange() {\n this.trimInitialsBasedOnSize();\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.trimInitialsBasedOnSize();\n this.checkPropValues();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private onImageError = () => {\n this.hasError = true;\n };\n\n private trimInitialsBasedOnSize = (): void => {\n if (!this.initials) return;\n\n AVATAR_SIZE.forEach((size: TAvatarSize) => {\n if (this.size === size) {\n this.trimmedInitials = this.initials.substring(0, this.getIndex(size));\n }\n });\n };\n\n private getIndex = (size: TAvatarSize): number => {\n const sizeIndexMap = {\n xsmall: 1,\n small: 2,\n medium: 3,\n large: 4,\n };\n return sizeIndexMap[size] ?? sizeIndexMap.xsmall;\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <Host>\n <div\n class={{\n 'bq-avatar': true,\n [`size--${this.size}`]: true,\n 'rounded-[--bq-avatar--border-radius-circle]': this.shape === 'circle',\n 'rounded-[--bq-avatar--border-radius-squareXs]': this.shape === 'square' && this.size === 'xsmall',\n 'rounded-[--bq-avatar--border-radius-squareS]': this.shape === 'square' && this.size === 'small',\n 'rounded-[--bq-avatar--border-radius-squareM]':\n this.shape === 'square' && (this.size === 'medium' || this.size === 'large'),\n }}\n aria-label={this.label}\n role=\"img\"\n part=\"base\"\n >\n {this.initials && (\n <span\n class=\"absolute start-0 inline-flex items-center justify-center font-bold text-primary bs-full is-full inset-bs-0\"\n part=\"text\"\n >\n {this.trimmedInitials}\n </span>\n )}\n {this.image && !this.hasError && (\n <img\n class=\"absolute start-0 object-cover bs-full is-full inset-bs-0\"\n alt={this.altText ?? undefined}\n src={this.image}\n onError={this.onImageError}\n part=\"img\"\n />\n )}\n </div>\n <div\n class={{\n 'absolute flex items-center justify-center': true,\n 'start-[--bq-avatar--badge-left-square] inset-bs-[--bq-avatar--badge-top-square]': this.shape === 'square',\n 'start-[--bq-avatar--badge-left-circle] inset-bs-[--bq-avatar--badge-top-circle]': this.shape === 'circle',\n }}\n part=\"badge\"\n >\n <slot name=\"badge\"></slot>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":";;;;6FAAO,MAAMA,EAAc,CAAC,SAAU,QAAS,SAAU,SAGlD,MAAMC,EAAe,CAAC,SAAU,UCHvC,MAAMC,EAAc,szuB,MCkEPC,EAAQ,M,yBAInBC,gB,wBAWSC,SAMgBC,QAGAC,MAGAC,MAGAC,SAGAC,MAAsB,SAGPC,KAAoB,SAM5D,qBAAAC,GAEEC,KAAKR,SAAW,K,CAKlB,eAAAS,GACEC,EAAkBd,EAAc,SAAUY,KAAKG,GAAI,SACnDD,EAAkBf,EAAa,SAAUa,KAAKG,GAAI,O,CAKpD,gBAAAC,GACEJ,KAAKK,yB,CAWP,iBAAAC,GACEN,KAAKK,0BACLL,KAAKC,iB,CAkBCM,aAAe,KACrBP,KAAKR,SAAW,IAAI,EAGda,wBAA0B,KAChC,IAAKL,KAAKJ,SAAU,OAEpBT,EAAYqB,SAASV,IACnB,GAAIE,KAAKF,OAASA,EAAM,CACtBE,KAAKT,gBAAkBS,KAAKJ,SAASa,UAAU,EAAGT,KAAKU,SAASZ,G,IAElE,EAGIY,SAAYZ,IAClB,MAAMa,EAAe,CACnBC,OAAQ,EACRC,MAAO,EACPC,OAAQ,EACRC,MAAO,GAET,OAAOJ,EAAab,IAASa,EAAaC,MAAM,EAOlD,MAAAI,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CACEC,MAAO,CACL,YAAa,KACb,CAAC,SAASpB,KAAKF,QAAS,KACxB,8CAA+CE,KAAKH,QAAU,SAC9D,gDAAiDG,KAAKH,QAAU,UAAYG,KAAKF,OAAS,SAC1F,+CAAgDE,KAAKH,QAAU,UAAYG,KAAKF,OAAS,QACzF,+CACEE,KAAKH,QAAU,WAAaG,KAAKF,OAAS,UAAYE,KAAKF,OAAS,UAE5D,aAAAE,KAAKL,MACjB0B,KAAK,MACLC,KAAK,QAEJtB,KAAKJ,UACJqB,EAAA,QAAAE,IAAA,2CACEC,MAAM,6GACNE,KAAK,QAEJtB,KAAKT,iBAGTS,KAAKN,QAAUM,KAAKR,UACnByB,EAAA,OAAAE,IAAA,2CACEC,MAAM,2DACNG,IAAKvB,KAAKP,SAAW+B,UACrBC,IAAKzB,KAAKN,MACVgC,QAAS1B,KAAKO,aACde,KAAK,SAIXL,EAAA,OAAAE,IAAA,2CACEC,MAAO,CACL,4CAA6C,KAC7C,kFAAmFpB,KAAKH,QAAU,SAClG,kFAAmFG,KAAKH,QAAU,UAEpGyB,KAAK,SAELL,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,W","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["STEP_ITEM_STATUS","bqStepItemCss","BqStepItem","size","status","type","checkPropValues","validatePropValue","STEPS_SIZE","this","el","handleIconPrefix","bqClick","bqFocus","bqBlur","connectedCallback","componentWillLoad","componentDidLoad","handleFocus","emit","handleBlur","handleClick","async","isDisabled","isCurrent","clickEvent","defaultPrevented","stepsParent","closest","setCurrentStepItem","iconElem","querySelector","isHTMLElement","render","h","key","class","disabled","onClick","onFocus","onBlur","part","name","onSlotchange"],"sources":["../../packages/beeq/src/components/step-item/bq-step-item.types.ts","../../packages/beeq/src/components/step-item/scss/bq-step-item.scss?tag=bq-step-item&encapsulation=shadow","../../packages/beeq/src/components/step-item/bq-step-item.tsx"],"sourcesContent":["export const STEP_ITEM_STATUS = ['default', 'current', 'completed', 'error', 'disabled'] as const;\nexport type TStepItemStatus = (typeof STEP_ITEM_STATUS)[number];\n","/* -------------------------------------------------------------------------- */\n/* Step item styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-step-item.variables';\n\n:host {\n --bq-icon--color: theme(stroke.icon.primary);\n // !Note: The use of the `bg-primary` is to avoid the divider to be visible behind the step item.\n @apply bg-primary;\n}\n\n.bq-step-item {\n @apply flex gap-s rounded-m border-none bg-transparent pe-[--bq-steps--gap] ps-0 p-b-xs2 focus-visible:focus hover:bg-hover-ui-secondary;\n @apply transition-colors duration-300;\n}\n\n.bq-step-item__prefix.dot,\n.bq-step-item__prefix.icon {\n ::slotted(bq-icon) {\n --bq-icon--color: var(--bq-step-item--prefix-color);\n }\n\n &.current {\n ::slotted(bq-icon) {\n --bq-icon--color: var(--bq-step-item--prefix-color-current);\n }\n }\n\n &.completed {\n ::slotted(bq-icon) {\n --bq-icon--color: var(--bq-step-item--prefix-color-completed);\n }\n }\n\n &.error {\n ::slotted(bq-icon) {\n --bq-icon--color: var(--bq-step-item--prefix-color-error);\n }\n }\n\n &.disabled {\n ::slotted(bq-icon) {\n opacity: 0.6;\n }\n }\n}\n\n.bq-step-item__prefix.numeric {\n @apply flex items-center justify-center rounded-full;\n @apply bg-[--bq-step-item--prefix-num-bg-color] bs-[--bq-step-item--prefix-num-size] is-[--bq-step-item--prefix-num-size];\n @apply text-m font-semibold leading-regular text-primary;\n\n &.small {\n @apply text-s [--bq-step-item--prefix-num-size:--bq-spacing-l];\n }\n\n // Status\n\n &.current {\n @apply bg-[var(--bq-step-item--prefix-color-current)] text-alt;\n }\n\n &.completed {\n @apply bg-ui-success-alt text-success;\n }\n\n &.error {\n @apply bg-ui-danger-alt text-danger;\n }\n\n &.disabled {\n @apply opacity-60;\n }\n}\n\n.bq-step-item__content--description::slotted(*) {\n @apply text-s leading-regular opacity-60;\n}\n","import { Component, Element, Event, h, Prop, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\nimport { STEP_ITEM_STATUS } from './bq-step-item.types';\nimport type { TStepItemStatus } from './bq-step-item.types';\nimport { isHTMLElement, validatePropValue } from '../../shared/utils';\nimport { STEPS_SIZE } from '../steps/bq-steps.types';\nimport type { TStepsSize, TStepsType } from '../steps/bq-steps.types';\n\n/**\n * The Step Item Component is a UI element used to display a single step or stage in a process or task.\n * It should be used inside the Steps component.\n *\n * @example How to use it\n * ```html\n * <bq-step-item status=\"completed\">\n * <bq-icon slot=\"prefix\" name=\"check-circle\"></bq-icon>\n * <span>Title</span>\n * <span slot=\"description\">Description</span>\n * </bq-step-item>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/896b66-stepper\n * @status stable\n *\n * @attr {\"small\" | \"medium\"} size - It defines prefix size\n * @attr {\"completed\" | \"current\" | \"error\" | \"default\" | \"disabled\"} status - It defines step item appearance based on its status\n * @attr {\"numeric\" | \"icon\" | \"dot\"} type - It defines the step item type used\n *\n * @event bqClick - Callback handler emitted when the step item is clicked\n *\n * @slot - The step item content\n * @slot prefix - The step item prefix\n * @slot description - The step item description\n *\n * @part base - The component's base wrapper.\n * @part title - The component's title.\n * @part description - The component's description.\n *\n * @cssprop --bq-step-item--prefix-color - Color of the prefix icon\n * @cssprop --bq-step-item--prefix-color-current - Color of the prefix icon when current\n * @cssprop --bq-step-item--prefix-color-completed - Color of the prefix icon when completed\n * @cssprop --bq-step-item--prefix-color-error - Color of the prefix icon when error\n * @cssprop --bq-step-item--prefix-num-size - Size of the prefix number\n * @cssprop --bq-step-item--prefix-num-bg-color - Background color of the prefix number\n */\n@Component({\n tag: 'bq-step-item',\n styleUrl: './scss/bq-step-item.scss',\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class BqStepItem {\n // Own Properties\n // ====================\n\n // Reference to host HTML element\n // ===================================\n @Element() el!: HTMLBqStepItemElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** It defines prefix size */\n @Prop({ reflect: true }) size?: TStepsSize = 'medium';\n\n /** It defines step item appearance based on its status */\n @Prop({ reflect: true, mutable: true }) status?: TStepItemStatus = 'default';\n\n /** It defines the step item type used */\n @Prop({ reflect: true }) type?: TStepsType;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('size')\n @Watch('status')\n checkPropValues() {\n validatePropValue(STEPS_SIZE, 'medium', this.el, 'size');\n validatePropValue(STEP_ITEM_STATUS, 'default', this.el, 'status');\n\n this.handleIconPrefix();\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler triggered when the step item is clicked */\n @Event() bqClick: EventEmitter<HTMLBqStepItemElement>;\n\n /** Callback handler triggered when the step item is focused */\n @Event() bqFocus: EventEmitter<HTMLBqStepItemElement>;\n\n /** Callback handler triggered when the step item loses focus */\n @Event() bqBlur: EventEmitter<HTMLBqStepItemElement>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n connectedCallback() {\n this.checkPropValues();\n }\n\n componentWillLoad() {\n this.checkPropValues();\n }\n\n componentDidLoad() {\n this.handleIconPrefix();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleFocus = () => {\n this.bqFocus.emit(this.el);\n };\n\n private handleBlur = () => {\n this.bqBlur.emit(this.el);\n };\n\n private handleClick = async () => {\n if (this.isDisabled || this.isCurrent) return;\n\n const clickEvent = this.bqClick.emit(this.el);\n if (clickEvent.defaultPrevented) return;\n\n const stepsParent = this.el.closest('bq-steps') as HTMLBqStepsElement;\n if (!stepsParent) return;\n\n await stepsParent.setCurrentStepItem(this.el);\n };\n\n private handleIconPrefix = () => {\n const iconElem = this.el.querySelector('[slot=\"prefix\"]');\n if (!iconElem || !isHTMLElement(iconElem, 'bq-icon')) return;\n\n iconElem.size = this.size === 'small' ? 24 : 32;\n };\n\n private get isDisabled(): boolean {\n return this.status === 'disabled';\n }\n\n private get isCurrent(): boolean {\n return this.status === 'current';\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <button\n class={{\n 'bq-step-item': true,\n [`bq-step-item--${this.status}`]: true,\n 'pointer-events-none opacity-60': this.isDisabled,\n }}\n disabled={this.isDisabled}\n onClick={this.handleClick}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n type=\"button\"\n part=\"base\"\n >\n <div class={`bq-step-item__prefix relative ${this.type} ${this.size} ${this.status}`}>\n <slot name=\"prefix\" onSlotchange={this.handleIconPrefix} />\n </div>\n <div class=\"bq-step-item__content items-start text-start\">\n {/* TITLE */}\n <div\n class={{\n 'bq-step-item__content--title pe-xs3 text-m leading-regular text-primary': true,\n 'pointer-events-none': this.isDisabled,\n 'text-brand': this.isCurrent,\n }}\n part=\"title\"\n >\n <slot />\n </div>\n {/* DESCRIPTION */}\n <div\n class={{\n 'bq-step-item__content--description text-s leading-regular text-secondary': true,\n 'opacity-60': this.isDisabled,\n }}\n part=\"description\"\n >\n <slot name=\"description\" />\n </div>\n </div>\n </button>\n );\n }\n}\n"],"mappings":";;;;gKAAO,MAAMA,EAAmB,CAAC,UAAW,UAAW,YAAa,QAAS,YCA7E,MAAMC,EAAgB,wqxB,MCqDTC,EAAU,M,4IAgBIC,KAAoB,SAGLC,OAA2B,UAG1CC,KAOzB,eAAAC,GACEC,EAAkBC,EAAY,SAAUC,KAAKC,GAAI,QACjDH,EAAkBP,EAAkB,UAAWS,KAAKC,GAAI,UAExDD,KAAKE,kB,CAQEC,QAGAC,QAGAC,OAMT,iBAAAC,GACEN,KAAKH,iB,CAGP,iBAAAU,GACEP,KAAKH,iB,CAGP,gBAAAW,GACER,KAAKE,kB,CAkBCO,YAAc,KACpBT,KAAKI,QAAQM,KAAKV,KAAKC,GAAG,EAGpBU,WAAa,KACnBX,KAAKK,OAAOK,KAAKV,KAAKC,GAAG,EAGnBW,YAAcC,UACpB,GAAIb,KAAKc,YAAcd,KAAKe,UAAW,OAEvC,MAAMC,EAAahB,KAAKG,QAAQO,KAAKV,KAAKC,IAC1C,GAAIe,EAAWC,iBAAkB,OAEjC,MAAMC,EAAclB,KAAKC,GAAGkB,QAAQ,YACpC,IAAKD,EAAa,aAEZA,EAAYE,mBAAmBpB,KAAKC,GAAG,EAGvCC,iBAAmB,KACzB,MAAMmB,EAAWrB,KAAKC,GAAGqB,cAAc,mBACvC,IAAKD,IAAaE,EAAcF,EAAU,WAAY,OAEtDA,EAAS3B,KAAOM,KAAKN,OAAS,QAAU,GAAK,EAAE,EAGjD,cAAYoB,GACV,OAAOd,KAAKL,SAAW,U,CAGzB,aAAYoB,GACV,OAAOf,KAAKL,SAAW,S,CAOzB,MAAA6B,GACE,OACEC,EACE,UAAAC,IAAA,2CAAAC,MAAO,CACL,eAAgB,KAChB,CAAC,iBAAiB3B,KAAKL,UAAW,KAClC,iCAAkCK,KAAKc,YAEzCc,SAAU5B,KAAKc,WACfe,QAAS7B,KAAKY,YACdkB,QAAS9B,KAAKS,YACdsB,OAAQ/B,KAAKW,WACbf,KAAK,SACLoC,KAAK,QAELP,EAAA,OAAAC,IAAA,2CAAKC,MAAO,iCAAiC3B,KAAKJ,QAAQI,KAAKN,QAAQM,KAAKL,UAC1E8B,EAAM,QAAAC,IAAA,2CAAAO,KAAK,SAASC,aAAclC,KAAKE,oBAEzCuB,EAAK,OAAAC,IAAA,2CAAAC,MAAM,gDAETF,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,0EAA2E,KAC3E,sBAAuB3B,KAAKc,WAC5B,aAAcd,KAAKe,WAErBiB,KAAK,SAELP,EAAA,QAAAC,IAAA,8CAGFD,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,2EAA4E,KAC5E,aAAc3B,KAAKc,YAErBkB,KAAK,eAELP,EAAM,QAAAC,IAAA,2CAAAO,KAAK,kB","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqAccordionGroupCss","BqAccordionGroup","appearance","expandAll","noAnimation","multiple","size","checkPropValues","this","bqAccordionElements","forEach","bqAccordionElement","isNil","expanded","onBqClick","event","detail","bqElem","isHTMLElement","el","contains","componentWillLoad","Array","from","querySelectorAll","render","h","key","class","part"],"sources":["../../packages/beeq/src/components/accordion-group/scss/bq-accordion-group.scss?tag=bq-accordion-group&encapsulation=shadow","../../packages/beeq/src/components/accordion-group/bq-accordion-group.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Accordion group styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-accordion-group.variables';\n\n:host {\n @apply block;\n}\n","import { Component, Element, h, Listen, Prop, Watch } from '@stencil/core';\n\nimport { isHTMLElement, isNil } from '../../shared/utils';\nimport type { TAccordionAppearance, TAccordionSize } from '../accordion/bq-accordion.types';\n\n/**\n * The accordion group component is a container for multiple accordion elements.\n * It allows to manage the appearance and size of all accordions at once.\n *\n * @example How to use it\n * ```html\n * <bq-accordion-group appearance=\"filled\" size=\"medium\">\n * <bq-accordion> ... </bq-accordion>\n * <bq-accordion> ... </bq-accordion>\n * <bq-accordion> ... </bq-accordion>\n * </bq-accordion-group>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/713eae-accordion\n * @status stable\n *\n * @attr {\"filled\" | \"ghost\"} [appearance=\"filled\"] - The appearance style of accordion to be applied to all accordions\n * @attr {boolean} [expandAll=false] - If true all accordions are expanded\n * @attr {boolean} [no-animation=false] - Animation is set through JS when the browser does not support CSS calc-size() If true, the accordion animation, will be disabled. No animation will be applied.\n * @attr {boolean} [multiple=false] - If true multiple accordions can be expanded at the same time\n * @attr {\"small\" | \"medium\"} [size=\"medium\"] - The size of accordion to be applied to all accordions\n *\n * @slot - The default slot where the bq-accordion elements are placed.\n *\n * @part base - The component's base wrapper.\n *\n * @cssprop --bq-accordion-group--gap - Accordion group distance between elements\n */\n@Component({\n tag: 'bq-accordion-group',\n styleUrl: './scss/bq-accordion-group.scss',\n shadow: true,\n})\nexport class BqAccordionGroup {\n // Own Properties\n // ====================\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqAccordionGroupElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** The appearance style of accordion to be applied to all accordions */\n @Prop({ reflect: true, mutable: true }) appearance: TAccordionAppearance = 'filled';\n\n /** If true all accordions are expanded */\n @Prop({ reflect: true }) expandAll: boolean;\n\n /**\n * Animation is set through JS when the browser does not support CSS calc-size()\n * If true, the accordion animation, will be disabled. No animation will be applied.\n */\n @Prop({ reflect: true }) noAnimation: boolean = false;\n\n /** If true multiple accordions can be expanded at the same time */\n @Prop({ reflect: true }) multiple: boolean = false;\n\n /** The size of accordion to be applied to all accordions */\n @Prop({ reflect: true, mutable: true }) size: TAccordionSize = 'medium';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('appearance')\n @Watch('expandAll')\n @Watch('noAnimation')\n @Watch('size')\n checkPropValues() {\n this.bqAccordionElements.forEach((bqAccordionElement) => {\n // NOTE: if expandAll is nil we will keep accordion default state\n if (!isNil(this.expandAll)) {\n bqAccordionElement.expanded = this.expandAll;\n }\n bqAccordionElement.appearance = this.appearance;\n bqAccordionElement.noAnimation = this.noAnimation;\n bqAccordionElement.size = this.size;\n });\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n @Listen('bqClick', { passive: true })\n onBqClick(event: CustomEvent<HTMLBqAccordionElement>) {\n const { detail: bqElem } = event;\n // Make sure the event is coming from a bq-accordion element and its a child of the bq-accordion-group\n if (!isHTMLElement(bqElem, 'bq-accordion') || !this.el.contains(bqElem)) return;\n // We keep default behavior if multiple accordion can be expanded\n if (this.multiple) return;\n\n this.bqAccordionElements.forEach((bqAccordionElement) => {\n if (bqAccordionElement === event.detail) return;\n\n bqAccordionElement.expanded = false;\n });\n }\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.checkPropValues();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private get bqAccordionElements(): HTMLBqAccordionElement[] {\n return Array.from(this.el.querySelectorAll('bq-accordion'));\n }\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <div class=\"flex flex-col gap-[--bq-accordion-group--gap]\" part=\"base\">\n <slot />\n </div>\n );\n }\n}\n"],"mappings":";;;;0HAAA,MAAMA,EAAsB,+zmB,MCsCfC,EAAgB,M,iDAiBaC,WAAmC,SAGlDC,UAMAC,YAAuB,MAGvBC,SAAoB,MAGLC,KAAuB,SAS/D,eAAAC,GACEC,KAAKC,oBAAoBC,SAASC,IAEhC,IAAKC,EAAMJ,KAAKL,WAAY,CAC1BQ,EAAmBE,SAAWL,KAAKL,S,CAErCQ,EAAmBT,WAAaM,KAAKN,WACrCS,EAAmBP,YAAcI,KAAKJ,YACtCO,EAAmBL,KAAOE,KAAKF,IAAI,G,CASvC,SAAAQ,CAAUC,GACR,MAAQC,OAAQC,GAAWF,EAE3B,IAAKG,EAAcD,EAAQ,kBAAoBT,KAAKW,GAAGC,SAASH,GAAS,OAEzE,GAAIT,KAAKH,SAAU,OAEnBG,KAAKC,oBAAoBC,SAASC,IAChC,GAAIA,IAAuBI,EAAMC,OAAQ,OAEzCL,EAAmBE,SAAW,KAAK,G,CAQvC,iBAAAQ,GACEb,KAAKD,iB,CAkBP,uBAAYE,GACV,OAAOa,MAAMC,KAAKf,KAAKW,GAAGK,iBAAiB,gB,CAM7C,MAAAC,GACE,OACEC,EAAA,OAAAC,IAAA,2CAAKC,MAAM,gDAAgDC,KAAK,QAC9DH,EAAQ,QAAAC,IAAA,6C","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqSliderCss","BqSlider","inputMinElem","inputMaxElem","minTooltipElem","maxTooltipElem","progressElem","trackElem","debounceBqChange","internals","minValue","maxValue","minThumbPosition","maxThumbPosition","debounceTime","disabled","enableValueIndicator","gap","max","min","name","step","type","value","enableTooltip","tooltipAlwaysVisible","handleValuePropChange","newValue","this","setState","emitBqChange","handleStepPropChange","Math","round","handleGapChange","isRangeType","isNil","stringToObject","bqChange","bqBlur","bqFocus","componentWillLoad","init","componentDidLoad","runUpdates","componentDidUpdate","formAssociatedCallback","setFormValue","updateProgressTrack","syncInputsValue","setThumbPosition","clamp","thumbPosition","setAttribute","toString","isString","JSON","parse","handleInputChange","event","target","parseFloat","reflectedValue","stringify","el","calculatePercent","totalRange","Number","left","width","style","insetInlineStart","inlineSize","calculateThumbPosition","trackAreaWidth","getBoundingClientRect","inputThumbSize","parseInt","getComputedStyle","getPropertyValue","totalWidth","undefined","cancel","debounce","emit","handleBlur","handleFocus","handleMouseDown","handleTooltipVisibility","handleMouseUp","action","tooltipElem","classList","decimalCount","toFixed","split","replace","length","isTooltipAlwaysVisible","renderLabel","position","css","h","class","hidden","part","renderInput","refCallback","zIndexValue","zIndex","ref","onInput","ev","onBlur","onFocus","onMouseDown","onMouseUp","renderTooltip","exportparts","alwaysVisible","distance","fontVariant","slot","render","key","elem","input"],"sources":["../../packages/beeq/src/components/slider/scss/bq-slider.scss?tag=bq-slider&encapsulation=shadow","../../packages/beeq/src/components/slider/bq-slider.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Slider styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-slider.variables';\n\n@layer components {\n .thumb {\n @apply pointer-events-auto box-content size-[--bq-slider--thumb-size] cursor-pointer appearance-none rounded-full border-m border-solid border-brand bg-ui-primary;\n @apply transition-[background-color,border-color,box-shadow] duration-300;\n }\n\n .thumb-focus {\n @apply focus;\n }\n\n .thumb-hover {\n @apply border-hover-brand;\n }\n\n .thumb-active {\n @apply cursor-grabbing bg-active-ui-brand border-active-brand;\n }\n}\n\n:host {\n @apply block is-full;\n}\n\n/* ---------------------- Webkit (Chrome, Safari, Edge) --------------------- */\n\ninput[type='range']::-webkit-slider-thumb {\n @apply thumb;\n}\n\ninput[type='range']::-webkit-slider-runnable-track {\n @apply transition-all duration-300 ease-in;\n}\n\ninput[type='range']:focus-visible::-webkit-slider-thumb {\n @apply thumb-focus;\n}\n\ninput[type='range']:hover::-webkit-slider-thumb {\n @apply thumb-hover;\n}\n\ninput[type='range']:active::-webkit-slider-thumb {\n @apply thumb-active;\n}\n\ninput[type='range'][disabled]::-webkit-slider-thumb {\n @apply cursor-not-allowed;\n}\n\n/* ---------------------------- Mozilla (Firefox) --------------------------- */\n\ninput[type='range']::-moz-range-thumb {\n @apply thumb;\n}\n\ninput[type='range']::-moz-range-track {\n @apply transition-all duration-300 ease-in;\n}\n\ninput[type='range']:focus-visible::-moz-range-thumb {\n @apply thumb-focus;\n}\n\ninput[type='range']:hover::-moz-range-thumb {\n @apply thumb-hover;\n}\n\ninput[type='range']:active::-moz-range-thumb {\n @apply thumb-active;\n}\n\ninput[type='range'][disabled]::-moz-range-thumb {\n @apply cursor-not-allowed;\n}\n","import { AttachInternals, Component, Element, Event, h, Prop, State, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\nimport type { TSliderType, TSliderValue } from './bq-slider.types';\nimport { clamp, debounce, isNil, isString, TDebounce } from '../../shared/utils';\n\n/**\n * Sliders provide a visual representation of adjustable content, enabling users to change values by dragging a handle along a horizontal track.\n *\n * @example How to use it\n * ```html\n * <bq-slider max=\"100\" value=\"30\"></bq-slider>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/509cbc-slider/b/09d7b1\n * @status stable\n *\n * @dependency bq-tooltip\n *\n * @attr {number} debounce-time - The amount of time, in milliseconds, to wait to trigger the bqChange event after each value change.\n * @attr {boolean} disabled - If `true` the slider is disabled.\n * @attr {boolean} enable-tooltip - If `true`, a tooltip will be shown displaying the progress value.\n * @attr {boolean} enable-value-indicator - If `true` it will show the value label on the side of the slider track area.\n * @attr {number} gap - A number representing the amount to remain between the minimum and maximum values (only for range type).\n * @attr {number} max - A number representing the max value of the slider.\n * @attr {number} min - A number representing the min value of the slider.\n * @attr {number} step - A number represents the step of the slider. ⚠️ Please notice that the value (or list of values if the slider type is range) will be rounded to the nearest multiple of step.\n * @attr {boolean} tooltip-always-visible - If `true`, a tooltip will always display the progress value. It relies on enableTooltip and if enableTooltip is false, tooltipAlwaysVisible cannot be true.\n * @attr {\"range\" | \"single\"} type - It defines the type of slider to display.\n * @attr {\"[number, number]\" | \"number\" | \"string\"} value - The value of the slider. If the slider type is single, the value is a number.\n * If the slider type is range, the value is an array of two numbers (the first number represents the min value and the second number represents the max value).\n *\n * @event bqBlur - Handler to be called when the slider loses focus.\n * @event bqChange - Handler to be called when changing the value on range inputs.\n * @event bqFocus - Handler to be called when the slider gets focused.\n *\n * @part base - The component's base wrapper.\n * @part container - The container of the slider.\n * @part track-area - The track area of the slider.\n * @part progress-area - The progress area of the slider.\n * @part input-min - The input element for the value when the slider type is `single` or the minimum value when the slider type is `range`.\n * @part input-max - The input element for the maximum value.\n * @part label-start - The label for the value when the slider type is `single` or the minimum value when the slider type is `range`.\n * @part label-end - The label for maximum value when the slider type is `range`.\n *\n * @cssprop --bq-slider--size - The height of the slider track/progress area\n * @cssprop --bq-slider--border-radius - Slider border radius\n * @cssprop --bq-slider--thumb-size - Slider hover thumb size\n * @cssprop --bq-slider--progress-color - Slider progress background color\n * @cssprop --bq-slider--trackarea-color - Slider track background color\n */\n@Component({\n tag: 'bq-slider',\n styleUrl: './scss/bq-slider.scss',\n formAssociated: true,\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class BqSlider {\n // Own Properties\n // ====================\n\n private inputMinElem: HTMLInputElement;\n private inputMaxElem: HTMLInputElement;\n private minTooltipElem: HTMLBqTooltipElement;\n private maxTooltipElem: HTMLBqTooltipElement;\n private progressElem: HTMLSpanElement;\n private trackElem: HTMLSpanElement;\n private debounceBqChange: TDebounce<void>;\n\n // Reference to host HTML element\n // ===================================\n\n @AttachInternals() internals!: ElementInternals;\n @Element() el!: HTMLBqSliderElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n /**\n * The `minValue` state is the only value when the slider type is `single`\n * and the minimum value when the slider type is `range`.\n */\n @State() minValue: number;\n /** The `maxValue` state is only used when the slider type is `range`. */\n @State() maxValue: number;\n /** It hold the left position of the Thumb for the value or the minimum value (if the slider type is `range`) */\n @State() minThumbPosition: number;\n /** It hold the left position of the Thumb for the maximum value (if the slider type is `range`) */\n @State() maxThumbPosition: number;\n\n // Public Property API\n // ========================\n\n /** The amount of time, in milliseconds, to wait to trigger the `bqChange` event after each value change. */\n @Prop({ reflect: true }) debounceTime = 0;\n\n /** If `true` the slider is disabled. */\n @Prop({ reflect: true }) disabled? = false;\n\n /** If `true` it will show the value label on a side of the slider track area */\n @Prop({ reflect: true }) enableValueIndicator? = false;\n\n /** A number representing the amount to remain between the minimum and maximum values (only for range type). */\n @Prop({ reflect: true, mutable: true }) gap = 0;\n\n /** A number representing the max value of the slider. */\n @Prop({ reflect: true }) max = 100;\n\n /** A number representing the min value of the slider. */\n @Prop({ reflect: true }) min = 0;\n\n /** Name of the form control. Submitted with the form as part of a name/value pair */\n @Prop({ reflect: true }) name: string;\n\n /**\n * A number representing the step of the slider.\n * ⚠️ Please notice that the value (or list of values if the slider type is `range`) will be rounded to the nearest multiple of `step`.\n */\n @Prop({ reflect: true }) step = 1;\n\n /** It defines the type of slider to display */\n @Prop({ reflect: true }) type: TSliderType = 'single';\n\n /**\n * The value of the slider.\n * - If the slider type is `single`, the value is a number.\n * - If the slider type is `range`, the value is an array of two numbers (the first number represents the `min` value and the second number represents the `max` value).\n */\n @Prop({ reflect: true, mutable: true }) value: TSliderValue;\n\n /** If `true`, a tooltip will be shown displaying the progress value */\n @Prop({ reflect: true }) enableTooltip: boolean = false;\n\n /**\n * If `true`, a tooltip will always display the progress value.\n * It relies on enableTooltip and if enableTooltip is false, tooltipAlwaysVisible cannot be true.\n */\n @Prop({ reflect: true }) tooltipAlwaysVisible: boolean = false;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('value')\n handleValuePropChange(newValue: TSliderValue) {\n this.setState(newValue);\n this.emitBqChange();\n }\n\n @Watch('step')\n handleStepPropChange() {\n this.minValue = Math.round(this.minValue / this.step) * this.step;\n this.maxValue = Math.round(this.maxValue / this.step) * this.step;\n }\n\n @Watch('gap')\n handleGapChange(newValue: number) {\n if (!this.isRangeType) return;\n // Use the this.value prop value when the component is initialized\n // Otherwise, use the current this.min and this.max state values\n const value = !isNil(this.min) && !isNil(this.max) ? [this.min, this.max] : this.stringToObject(this.value);\n // If the gap is less than the min or greater than the max, set it to 0\n this.gap = newValue < value[0] || newValue > value[1] ? 0 : newValue;\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Handler to be called when change the value on range inputs */\n @Event() bqChange: EventEmitter<{ value: Exclude<TSliderValue, string>; el: HTMLBqSliderElement }>;\n\n /** Handler to be called when the slider loses focus */\n @Event() bqBlur: EventEmitter<HTMLBqSliderElement>;\n\n /** Handler to be called when the slider gets focused */\n @Event() bqFocus: EventEmitter<HTMLBqSliderElement>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.init();\n }\n\n componentDidLoad() {\n this.runUpdates();\n }\n\n componentDidUpdate() {\n this.runUpdates();\n }\n\n formAssociatedCallback() {\n this.internals?.setFormValue(`${this.value}`);\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private init = () => {\n this.handleGapChange(this.gap);\n this.setState(this.value);\n this.handleStepPropChange();\n };\n\n private runUpdates = () => {\n this.updateProgressTrack();\n this.syncInputsValue();\n this.setThumbPosition();\n };\n\n private setState = (newValue: TSliderValue) => {\n const isRangeType = this.isRangeType;\n const value = this.stringToObject(newValue);\n\n this.minValue = isRangeType ? clamp(value[0], this.min, this.max - this.gap) : value;\n this.maxValue = isRangeType ? clamp(value[1], this.minValue + this.gap, this.max) : this.minValue;\n };\n\n private setThumbPosition = () => {\n if (!this.enableTooltip) return;\n\n // Destructure the returned object from this.thumbPosition() and assign the properties to this.minThumbPosition and this.maxThumbPosition\n ({ minThumbPosition: this.minThumbPosition, maxThumbPosition: this.maxThumbPosition } = this.thumbPosition());\n };\n\n private syncInputsValue = () => {\n this.inputMinElem?.setAttribute('value', this.minValue.toString());\n this.inputMaxElem?.setAttribute('value', this.maxValue.toString());\n };\n\n private stringToObject = (value: TSliderValue) => (isString(value) ? JSON.parse(value) : value);\n\n private handleInputChange = (type: 'min' | 'max', event: InputEvent) => {\n const target = event.target as HTMLInputElement;\n const value = parseFloat(target.value);\n\n if (type === 'min') {\n this.minValue = this.isRangeType ? Math.min(value, this.maxValue - this.gap) : value;\n } else if (type === 'max') {\n this.maxValue = this.isRangeType ? Math.max(value, this.minValue + this.gap) : value;\n }\n\n // Update the input value to reflect the clamped value\n const reflectedValue = (type === 'min' ? this.minValue : this.maxValue).toString();\n target.value = reflectedValue;\n target.setAttribute('value', reflectedValue);\n\n // Sync the prop value.\n // This will trigger the `@Watch('value')` method and emit the `bqChange` event.\n const { internals, isRangeType, maxValue, minValue } = this;\n this.value = isRangeType ? [minValue, maxValue] : minValue;\n internals?.setFormValue(isRangeType ? JSON.stringify(this.value) : this.value.toString());\n if (isRangeType) this.el.setAttribute('value', JSON.stringify(this.value));\n };\n\n private calculatePercent = (value: number) => {\n const totalRange = Number(this.max) - Number(this.min);\n return ((value - this.min) / totalRange) * 100;\n };\n\n private updateProgressTrack = () => {\n if (!this.progressElem) return;\n\n // For range type, left starts from the `min` value and width is the difference between `max` and `min`.\n // For non-range type, left starts from 0 and width is the `min` value.\n const left = this.isRangeType ? this.calculatePercent(this.minValue) : 0;\n const width = this.isRangeType\n ? this.calculatePercent(Number(this.maxValue) - Number(this.minValue) + this.min)\n : this.calculatePercent(this.minValue);\n\n this.progressElem.style.insetInlineStart = `${left}%`;\n this.progressElem.style.inlineSize = `${width}%`;\n };\n\n private calculateThumbPosition = (value: number): number => {\n if (!this.progressElem) return 0;\n\n // Get the width of the track area and the size of the input range thumb\n const trackAreaWidth = this.trackElem.getBoundingClientRect().width;\n // We need to also add 4px to the thumb size,\n // this is because the thumb is 2px border (`border-m`)\n const inputThumbSize = parseInt(getComputedStyle(this.el).getPropertyValue('--bq-slider--thumb-size'), 10) + 4;\n const totalWidth = trackAreaWidth - inputThumbSize;\n\n return ((value - this.min) / (this.max - this.min)) * totalWidth + inputThumbSize / 2;\n };\n\n private thumbPosition = (): { minThumbPosition: number; maxThumbPosition?: number } => {\n const minThumbPosition = this.calculateThumbPosition(this.minValue);\n const maxThumbPosition = this.isRangeType ? this.calculateThumbPosition(this.maxValue) : undefined;\n\n return { minThumbPosition, maxThumbPosition };\n };\n\n private emitBqChange = () => {\n this.debounceBqChange?.cancel();\n\n const value: Exclude<TSliderValue, string> = this.isRangeType ? [this.minValue, this.maxValue] : this.minValue;\n this.debounceBqChange = debounce(() => this.bqChange.emit({ value, el: this.el }), this.debounceTime);\n\n this.debounceBqChange();\n };\n\n private handleBlur = () => {\n this.bqBlur.emit(this.el);\n };\n\n private handleFocus = () => {\n this.bqFocus.emit(this.el);\n };\n\n private handleMouseDown = (event: MouseEvent) => {\n this.handleTooltipVisibility(event, 'remove');\n };\n\n private handleMouseUp = (event: MouseEvent) => {\n this.handleTooltipVisibility(event, 'add');\n };\n\n private handleTooltipVisibility = (event: MouseEvent, action: 'add' | 'remove') => {\n if (!this.enableTooltip || this.tooltipAlwaysVisible) return;\n\n const target = event.target as HTMLElement;\n const tooltipElem = target === this.inputMinElem ? this.minTooltipElem : this.maxTooltipElem;\n tooltipElem.classList[action]('hidden');\n };\n\n private get decimalCount(): number {\n // Return the length of the decimal part of the step value.\n return (this.step % 1).toFixed(10).split('.')[1].replace(/0+$/, '').length;\n }\n\n private get isRangeType() {\n return this.type === 'range';\n }\n\n private get isTooltipAlwaysVisible(): boolean {\n return this.tooltipAlwaysVisible && this.enableTooltip;\n }\n\n private renderLabel = (value: number, position: 'start' | 'end', css?: string) => {\n return (\n <span\n class={{\n [`${css} box-content block text-s font-medium leading-regular text-primary is-fit min-is-8 [font-variant:tabular-nums]`]: true,\n hidden: position === 'start' ? !this.enableValueIndicator : !this.enableValueIndicator || !this.isRangeType,\n }}\n part={`label-${position}`}\n >\n {value.toFixed(this.decimalCount)}\n </span>\n );\n };\n\n private renderInput = (type: 'max' | 'min', value: number, refCallback: (input: HTMLInputElement) => void) => {\n // Determine the zIndex value based on the type and the current min and max values.\n const zIndexValue = (type: 'min' | 'max'): string => {\n const zIndex = {\n min: this.minValue === this.min && this.maxValue === this.minValue,\n max: this.maxValue === this.max && this.minValue === this.maxValue,\n };\n\n // If the value of both thumbs is the same as the min or max value, set the zIndex to -1\n return zIndex[type] ? '-1' : '0';\n };\n\n return (\n <input\n type=\"range\"\n class={{\n 'absolute start-0 -translate-y-1/2 cursor-pointer appearance-none bg-transparent outline-none is-full inset-bs-[50%] disabled:cursor-not-allowed': true,\n 'pointer-events-none': this.isRangeType,\n }}\n style={this.isRangeType ? { zIndex: zIndexValue(type) } : undefined}\n disabled={this.disabled}\n min={this.min}\n max={this.max}\n name={this.name}\n step={this.step}\n ref={refCallback}\n onInput={(ev) => this.handleInputChange(type, ev)}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onMouseDown={this.handleMouseDown}\n onMouseUp={this.handleMouseUp}\n value={value}\n part={`input-${type}`}\n />\n );\n };\n\n private renderTooltip = (\n value: number,\n thumbPosition: number,\n refCallback: (elem: HTMLBqTooltipElement) => void,\n ): HTMLBqTooltipElement => (\n <bq-tooltip\n class={{\n 'absolute [&::part(panel)]:absolute': true,\n hidden: !this.isTooltipAlwaysVisible,\n }}\n exportparts=\"base,trigger,panel\"\n alwaysVisible={true}\n distance={this.enableValueIndicator ? 6 : 16}\n style={{ insetInlineStart: `${thumbPosition}px`, fontVariant: 'tabular-nums' }}\n ref={refCallback}\n >\n <div class=\"absolute bs-1 is-1\" slot=\"trigger\" />\n {value.toFixed(this.decimalCount)}\n </bq-tooltip>\n );\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <div\n aria-disabled={this.disabled ? 'true' : 'false'}\n class={{ 'flex is-full': true, 'cursor-not-allowed opacity-60': this.disabled }}\n part=\"base\"\n >\n {/* LABEL (start) */}\n {this.renderLabel(this.minValue, 'start', 'me-xs text-end')}\n {/* SLIDER */}\n <div class=\"relative is-full\" part=\"container\">\n {/* TRACK AREA */}\n <span\n class=\"absolute start-0 -translate-y-1/2 rounded-xs bg-[--bq-slider--trackarea-color] bs-1 is-full inset-bs-[50%]\"\n ref={(elem) => (this.trackElem = elem)}\n part=\"track-area\"\n />\n {/* PROGRESS AREA */}\n <span\n class=\"absolute -translate-y-1/2 rounded-xs bg-[--bq-slider--progress-color] bs-1 is-[50%] inset-bs-[50%]\"\n ref={(elem) => (this.progressElem = elem)}\n part=\"progress-area\"\n />\n {/* TOOLTIP on top of the value or min value (if the slider type is `range`) */}\n {this.enableTooltip &&\n this.renderTooltip(this.minValue, this.minThumbPosition, (elem) => (this.minTooltipElem = elem))}\n {/* INPUT (Min), used on single type */}\n {this.renderInput('min', this.minValue, (input) => (this.inputMinElem = input))}\n {/* TOOLTIP on top of the max value (if the slider type is `range`) */}\n {this.enableTooltip &&\n this.isRangeType &&\n this.renderTooltip(this.maxValue, this.maxThumbPosition, (elem) => (this.maxTooltipElem = elem))}\n {/* INPUT (Max) */}\n {this.isRangeType && this.renderInput('max', this.maxValue, (input) => (this.inputMaxElem = input))}\n </div>\n {/* LABEL (end) */}\n {this.renderLabel(this.maxValue, 'end', 'ms-xs text-start')}\n </div>\n );\n }\n}\n"],"mappings":";;;;+LAAA,MAAMA,EAAc,yyzB,MC2DPC,EAAQ,M,uRAIXC,aACAC,aACAC,eACAC,eACAC,aACAC,UACAC,iBAKWC,U,wBAWVC,SAEAC,SAEAC,iBAEAC,iBAMgBC,aAAe,EAGfC,SAAY,MAGZC,qBAAwB,MAGTC,IAAM,EAGrBC,IAAM,IAGNC,IAAM,EAGNC,KAMAC,KAAO,EAGPC,KAAoB,SAOLC,MAGfC,cAAyB,MAMzBC,qBAAgC,MAMzD,qBAAAC,CAAsBC,GACpBC,KAAKC,SAASF,GACdC,KAAKE,c,CAIP,oBAAAC,GACEH,KAAKlB,SAAWsB,KAAKC,MAAML,KAAKlB,SAAWkB,KAAKP,MAAQO,KAAKP,KAC7DO,KAAKjB,SAAWqB,KAAKC,MAAML,KAAKjB,SAAWiB,KAAKP,MAAQO,KAAKP,I,CAI/D,eAAAa,CAAgBP,GACd,IAAKC,KAAKO,YAAa,OAGvB,MAAMZ,GAASa,EAAMR,KAAKT,OAASiB,EAAMR,KAAKV,KAAO,CAACU,KAAKT,IAAKS,KAAKV,KAAOU,KAAKS,eAAeT,KAAKL,OAErGK,KAAKX,IAAMU,EAAWJ,EAAM,IAAMI,EAAWJ,EAAM,GAAK,EAAII,C,CAQrDW,SAGAC,OAGAC,QAMT,iBAAAC,GACEb,KAAKc,M,CAGP,gBAAAC,GACEf,KAAKgB,Y,CAGP,kBAAAC,GACEjB,KAAKgB,Y,CAGP,sBAAAE,GACElB,KAAKnB,WAAWsC,aAAa,GAAGnB,KAAKL,Q,CAkB/BmB,KAAO,KACbd,KAAKM,gBAAgBN,KAAKX,KAC1BW,KAAKC,SAASD,KAAKL,OACnBK,KAAKG,sBAAsB,EAGrBa,WAAa,KACnBhB,KAAKoB,sBACLpB,KAAKqB,kBACLrB,KAAKsB,kBAAkB,EAGjBrB,SAAYF,IAClB,MAAMQ,EAAcP,KAAKO,YACzB,MAAMZ,EAAQK,KAAKS,eAAeV,GAElCC,KAAKlB,SAAWyB,EAAcgB,EAAM5B,EAAM,GAAIK,KAAKT,IAAKS,KAAKV,IAAMU,KAAKX,KAAOM,EAC/EK,KAAKjB,SAAWwB,EAAcgB,EAAM5B,EAAM,GAAIK,KAAKlB,SAAWkB,KAAKX,IAAKW,KAAKV,KAAOU,KAAKlB,QAAQ,EAG3FwC,iBAAmB,KACzB,IAAKtB,KAAKJ,cAAe,SAGtBZ,iBAAkBgB,KAAKhB,iBAAkBC,iBAAkBe,KAAKf,kBAAqBe,KAAKwB,gBAAe,EAGtGH,gBAAkB,KACxBrB,KAAK1B,cAAcmD,aAAa,QAASzB,KAAKlB,SAAS4C,YACvD1B,KAAKzB,cAAckD,aAAa,QAASzB,KAAKjB,SAAS2C,WAAW,EAG5DjB,eAAkBd,GAAyBgC,EAAShC,GAASiC,KAAKC,MAAMlC,GAASA,EAEjFmC,kBAAoB,CAACpC,EAAqBqC,KAChD,MAAMC,EAASD,EAAMC,OACrB,MAAMrC,EAAQsC,WAAWD,EAAOrC,OAEhC,GAAID,IAAS,MAAO,CAClBM,KAAKlB,SAAWkB,KAAKO,YAAcH,KAAKb,IAAII,EAAOK,KAAKjB,SAAWiB,KAAKX,KAAOM,C,MAC1E,GAAID,IAAS,MAAO,CACzBM,KAAKjB,SAAWiB,KAAKO,YAAcH,KAAKd,IAAIK,EAAOK,KAAKlB,SAAWkB,KAAKX,KAAOM,C,CAIjF,MAAMuC,GAAkBxC,IAAS,MAAQM,KAAKlB,SAAWkB,KAAKjB,UAAU2C,WACxEM,EAAOrC,MAAQuC,EACfF,EAAOP,aAAa,QAASS,GAI7B,MAAMrD,UAAEA,EAAS0B,YAAEA,EAAWxB,SAAEA,EAAQD,SAAEA,GAAakB,KACvDA,KAAKL,MAAQY,EAAc,CAACzB,EAAUC,GAAYD,EAClDD,GAAWsC,aAAaZ,EAAcqB,KAAKO,UAAUnC,KAAKL,OAASK,KAAKL,MAAM+B,YAC9E,GAAInB,EAAaP,KAAKoC,GAAGX,aAAa,QAASG,KAAKO,UAAUnC,KAAKL,OAAO,EAGpE0C,iBAAoB1C,IAC1B,MAAM2C,EAAaC,OAAOvC,KAAKV,KAAOiD,OAAOvC,KAAKT,KAClD,OAASI,EAAQK,KAAKT,KAAO+C,EAAc,GAAG,EAGxClB,oBAAsB,KAC5B,IAAKpB,KAAKtB,aAAc,OAIxB,MAAM8D,EAAOxC,KAAKO,YAAcP,KAAKqC,iBAAiBrC,KAAKlB,UAAY,EACvE,MAAM2D,EAAQzC,KAAKO,YACfP,KAAKqC,iBAAiBE,OAAOvC,KAAKjB,UAAYwD,OAAOvC,KAAKlB,UAAYkB,KAAKT,KAC3ES,KAAKqC,iBAAiBrC,KAAKlB,UAE/BkB,KAAKtB,aAAagE,MAAMC,iBAAmB,GAAGH,KAC9CxC,KAAKtB,aAAagE,MAAME,WAAa,GAAGH,IAAQ,EAG1CI,uBAA0BlD,IAChC,IAAKK,KAAKtB,aAAc,OAAO,EAG/B,MAAMoE,EAAiB9C,KAAKrB,UAAUoE,wBAAwBN,MAG9D,MAAMO,EAAiBC,SAASC,iBAAiBlD,KAAKoC,IAAIe,iBAAiB,2BAA4B,IAAM,EAC7G,MAAMC,EAAaN,EAAiBE,EAEpC,OAASrD,EAAQK,KAAKT,MAAQS,KAAKV,IAAMU,KAAKT,KAAQ6D,EAAaJ,EAAiB,CAAC,EAG/ExB,cAAgB,KACtB,MAAMxC,EAAmBgB,KAAK6C,uBAAuB7C,KAAKlB,UAC1D,MAAMG,EAAmBe,KAAKO,YAAcP,KAAK6C,uBAAuB7C,KAAKjB,UAAYsE,UAEzF,MAAO,CAAErE,mBAAkBC,mBAAkB,EAGvCiB,aAAe,KACrBF,KAAKpB,kBAAkB0E,SAEvB,MAAM3D,EAAuCK,KAAKO,YAAc,CAACP,KAAKlB,SAAUkB,KAAKjB,UAAYiB,KAAKlB,SACtGkB,KAAKpB,iBAAmB2E,GAAS,IAAMvD,KAAKU,SAAS8C,KAAK,CAAE7D,QAAOyC,GAAIpC,KAAKoC,MAAOpC,KAAKd,cAExFc,KAAKpB,kBAAkB,EAGjB6E,WAAa,KACnBzD,KAAKW,OAAO6C,KAAKxD,KAAKoC,GAAG,EAGnBsB,YAAc,KACpB1D,KAAKY,QAAQ4C,KAAKxD,KAAKoC,GAAG,EAGpBuB,gBAAmB5B,IACzB/B,KAAK4D,wBAAwB7B,EAAO,SAAS,EAGvC8B,cAAiB9B,IACvB/B,KAAK4D,wBAAwB7B,EAAO,MAAM,EAGpC6B,wBAA0B,CAAC7B,EAAmB+B,KACpD,IAAK9D,KAAKJ,eAAiBI,KAAKH,qBAAsB,OAEtD,MAAMmC,EAASD,EAAMC,OACrB,MAAM+B,EAAc/B,IAAWhC,KAAK1B,aAAe0B,KAAKxB,eAAiBwB,KAAKvB,eAC9EsF,EAAYC,UAAUF,GAAQ,SAAS,EAGzC,gBAAYG,GAEV,OAAQjE,KAAKP,KAAO,GAAGyE,QAAQ,IAAIC,MAAM,KAAK,GAAGC,QAAQ,MAAO,IAAIC,M,CAGtE,eAAY9D,GACV,OAAOP,KAAKN,OAAS,O,CAGvB,0BAAY4E,GACV,OAAOtE,KAAKH,sBAAwBG,KAAKJ,a,CAGnC2E,YAAc,CAAC5E,EAAe6E,EAA2BC,IAE7DC,EACE,QAAAC,MAAO,CACL,CAAC,GAAGF,mHAAsH,KAC1HG,OAAQJ,IAAa,SAAWxE,KAAKZ,sBAAwBY,KAAKZ,uBAAyBY,KAAKO,aAElGsE,KAAM,SAASL,KAEd7E,EAAMuE,QAAQlE,KAAKiE,eAKlBa,YAAc,CAACpF,EAAqBC,EAAeoF,KAEzD,MAAMC,EAAetF,IACnB,MAAMuF,EAAS,CACb1F,IAAKS,KAAKlB,WAAakB,KAAKT,KAAOS,KAAKjB,WAAaiB,KAAKlB,SAC1DQ,IAAKU,KAAKjB,WAAaiB,KAAKV,KAAOU,KAAKlB,WAAakB,KAAKjB,UAI5D,OAAOkG,EAAOvF,GAAQ,KAAO,GAAG,EAGlC,OACEgF,EACE,SAAAhF,KAAK,QACLiF,MAAO,CACL,kJAAmJ,KACnJ,sBAAuB3E,KAAKO,aAE9BmC,MAAO1C,KAAKO,YAAc,CAAE0E,OAAQD,EAAYtF,IAAU2D,UAC1DlE,SAAUa,KAAKb,SACfI,IAAKS,KAAKT,IACVD,IAAKU,KAAKV,IACVE,KAAMQ,KAAKR,KACXC,KAAMO,KAAKP,KACXyF,IAAKH,EACLI,QAAUC,GAAOpF,KAAK8B,kBAAkBpC,EAAM0F,GAC9CC,OAAQrF,KAAKyD,WACb6B,QAAStF,KAAK0D,YACd6B,YAAavF,KAAK2D,gBAClB6B,UAAWxF,KAAK6D,cAChBlE,MAAOA,EACPkF,KAAM,SAASnF,KACf,EAIE+F,cAAgB,CACtB9F,EACA6B,EACAuD,IAEAL,EAAA,cACEC,MAAO,CACL,qCAAsC,KACtCC,QAAS5E,KAAKsE,wBAEhBoB,YAAY,qBACZC,cAAe,KACfC,SAAU5F,KAAKZ,qBAAuB,EAAI,GAC1CsD,MAAO,CAAEC,iBAAkB,GAAGnB,MAAmBqE,YAAa,gBAC9DX,IAAKH,GAELL,EAAA,OAAKC,MAAM,qBAAqBmB,KAAK,YACpCnG,EAAMuE,QAAQlE,KAAKiE,eAQxB,MAAA8B,GACE,OACErB,EAAA,OAAAsB,IAAA,2DACiBhG,KAAKb,SAAW,OAAS,QACxCwF,MAAO,CAAE,eAAgB,KAAM,gCAAiC3E,KAAKb,UACrE0F,KAAK,QAGJ7E,KAAKuE,YAAYvE,KAAKlB,SAAU,QAAS,kBAE1C4F,EAAA,OAAAsB,IAAA,2CAAKrB,MAAM,mBAAmBE,KAAK,aAEjCH,EACE,QAAAsB,IAAA,2CAAArB,MAAM,6GACNO,IAAMe,GAAUjG,KAAKrB,UAAYsH,EACjCpB,KAAK,eAGPH,EACE,QAAAsB,IAAA,2CAAArB,MAAM,qGACNO,IAAMe,GAAUjG,KAAKtB,aAAeuH,EACpCpB,KAAK,kBAGN7E,KAAKJ,eACJI,KAAKyF,cAAczF,KAAKlB,SAAUkB,KAAKhB,kBAAmBiH,GAAUjG,KAAKxB,eAAiByH,IAE3FjG,KAAK8E,YAAY,MAAO9E,KAAKlB,UAAWoH,GAAWlG,KAAK1B,aAAe4H,IAEvElG,KAAKJ,eACJI,KAAKO,aACLP,KAAKyF,cAAczF,KAAKjB,SAAUiB,KAAKf,kBAAmBgH,GAAUjG,KAAKvB,eAAiBwH,IAE3FjG,KAAKO,aAAeP,KAAK8E,YAAY,MAAO9E,KAAKjB,UAAWmH,GAAWlG,KAAKzB,aAAe2H,KAG7FlG,KAAKuE,YAAYvE,KAAKjB,SAAU,MAAO,oB","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqSideMenuItemCss","BqSideMenuItem","labelElem","textContent","active","collapse","disabled","bqBlur","bqFocus","bqClick","componentDidLoad","this","handleSlotChange","getTextContent","querySelector","handleBlur","ev","preventDefault","stopPropagation","emit","el","handleFocus","handleClick","menuItem","h","class","onBlur","onFocus","onClick","role","tabindex","slot","part","name","ref","onSlotchange","render","placement","exportparts"],"sources":["../../packages/beeq/src/components/side-menu-item/scss/bq-side-menu-item.scss?tag=bq-side-menu-item&encapsulation=shadow","../../packages/beeq/src/components/side-menu-item/bq-side-menu-item.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Side menu item styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-side-menu-item.variables';\n\n:host {\n @apply flex;\n}\n\n.bq-side-menu__item {\n @apply flex flex-grow items-center gap-x-s rounded-s border-none px-[var(--bq-side-menu-item--paddingX)] py-[var(--bq-side-menu-item--paddingY)] no-underline transition-colors duration-150;\n\n // Default state\n @apply bg-[var(--bq-side-menu-item--bg-default)] text-m text-[color:var(--bq-side-menu-item--text-default)];\n\n // Focus state\n @apply [&:not(.disabled)]:focus-visible:focus;\n\n // Hover state\n @apply [&:not(.disabled)]:hover:cursor-pointer;\n @apply [&:not(.disabled,.active)]:hover:text-m [&:not(.disabled,.active)]:hover:bg-hover-ui-alt [&:not(.disabled,.active)]:hover:text-hover-primary;\n}\n\n.bq-side-menu__item.active {\n // Active state\n @apply bg-[var(--bq-side-menu-item--bg-active)] text-m text-[color:var(--bq-side-menu-item--text-active)];\n}\n\n.bq-side-menu__item.disabled {\n @apply opacity-60 hover:cursor-not-allowed;\n}\n\n.bq-side-menu__item.is-collapsed {\n @apply justify-center gap-0;\n\n .bq-side-menu__item--label,\n .bq-side-menu__item--suffix {\n @apply sr-only scale-0;\n }\n}\n\n.bq-side-menu__item--label,\n.bq-side-menu__item--suffix {\n @apply transition-all duration-300 ease-in-out;\n}\n","import { Component, Element, Event, h, Prop, State } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\nimport { getTextContent } from '../../shared/utils';\n\n/**\n * Represents the default side menu item for standard navigation elements, providing a clean and straightforward way to display menu options.\n *\n * @example How to use it\n * ```html\n * <bq-side-menu-item>\n * <bq-icon name=\"star-four\" slot=\"prefix\"></bq-icon>\n * Menu item\n * <bq-badge slot=\"suffix\">5</bq-badge>\n * </bq-side-menu-item>\n * ```\n * @documentation https://www.beeq.design/3d466e231/p/99822d-side-menu/b/09d7b1\n * @status stable\n *\n * @dependency bq-tooltip\n *\n * @attr {boolean} active - If `true`, the menu item will be shown as active/selected.\n * @attr {boolean} collapse - If `true`, the item label and suffix will be hidden and the `width` will be reduced according to its parent.\n * @attr {boolean} disabled - If `true`, the menu item will be disabled (no interaction allowed).\n *\n * @event bqBlur - Handler to be called when the button loses focus.\n * @event bqClick - Handler to be called when the button gets focused.\n * @event bqFocus - Handler to be called when the button is clicked.\n *\n * @slot prefix - The prefix part of menu item.\n * @slot - The content of the menu item.\n * @slot suffix - The suffix part of menu item.\n *\n * @part base - The component wrapper container inside the shadow DOM\n * @part label - The label slot\n * @part prefix - The prefix slot\n * @part suffix - The suffix slot\n * @part panel - The `<div>` container that holds the tooltip content (when the side menu is collapsed)\n * @part trigger - The `<div>` container that holds the element which displays tooltip on hover (when the side menu is collapsed)\n *\n * @cssprop --bq-side-menu-item--bg-default - Side menu item default background color\n * @cssprop --bq-side-menu-item--bg-active - Side menu item active background color\n * @cssprop --bq-side-menu-item--text-default - Side menu item default text color\n * @cssprop --bq-side-menu-item--text-active - Side menu item active text color\n * @cssprop --bq-side-menu-item--paddingX - Side menu item vertical padding\n * @cssprop --bq-side-menu-item--paddingY - Side menu item horizontal padding\n */\n@Component({\n tag: 'bq-side-menu-item',\n styleUrl: './scss/bq-side-menu-item.scss',\n shadow: true,\n})\nexport class BqSideMenuItem {\n // Own Properties\n // ====================\n\n private labelElem: HTMLElement;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqSideMenuItemElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() textContent: string;\n\n // Public Property API\n // ========================\n\n /** If true, the menu item will be shown as active/selected. */\n @Prop() active: boolean = false;\n\n /** If true, the item label and suffix will be hidden and the `width` will be reduced according to its parent. */\n @Prop() collapse: boolean = false;\n\n /** If true, the menu item will be disabled (no interaction allowed) */\n @Prop() disabled: boolean = false;\n\n // Prop lifecycle events\n // =======================\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Handler to be called when the button loses focus */\n @Event() bqBlur: EventEmitter<HTMLBqSideMenuItemElement>;\n\n /** Handler to be called when the button is clicked */\n @Event() bqFocus: EventEmitter<HTMLBqSideMenuItemElement>;\n\n /** Handler to be called when button gets focus */\n @Event() bqClick: EventEmitter<HTMLBqSideMenuItemElement>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentDidLoad() {\n this.handleSlotChange();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleSlotChange = () => {\n if (!this.labelElem) return;\n this.textContent = getTextContent(this.labelElem.querySelector('slot'));\n };\n\n handleBlur = (ev: Event) => {\n if (this.disabled) {\n ev.preventDefault();\n ev.stopPropagation();\n return;\n }\n\n this.bqBlur.emit(this.el);\n };\n\n handleFocus = (ev: Event) => {\n if (this.disabled) {\n ev.preventDefault();\n ev.stopPropagation();\n return;\n }\n\n this.bqFocus.emit(this.el);\n };\n\n handleClick = (ev: Event) => {\n if (this.disabled || this.active) {\n ev.preventDefault();\n ev.stopPropagation();\n return;\n }\n\n this.bqClick.emit(this.el);\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n private menuItem = () => (\n <button\n class={{\n 'bq-side-menu__item': true,\n active: this.active,\n disabled: this.disabled,\n 'is-collapsed': this.collapse,\n }}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.handleClick}\n aria-disabled={this.disabled ? 'true' : 'false'}\n role=\"menuitem\"\n tabindex={this.disabled ? -1 : 0}\n slot=\"trigger\"\n part=\"base\"\n >\n <div class=\"bq-side-menu__item--prefix flex items-center\" part=\"prefix\">\n <slot name=\"prefix\" />\n </div>\n <div\n class=\"bq-side-menu__item--label overflow-hidden text-ellipsis whitespace-nowrap\"\n ref={(labelElem) => (this.labelElem = labelElem)}\n >\n <slot onSlotchange={this.handleSlotChange} />\n </div>\n <div class=\"bq-side-menu__item--suffix ml-auto flex items-center\" part=\"suffix\">\n <slot name=\"suffix\" />\n </div>\n </button>\n );\n\n render() {\n return !this.collapse ? (\n this.menuItem()\n ) : (\n <bq-tooltip class=\"bq-side-menu__item--tooltip block\" placement=\"right\" exportparts=\"trigger, panel\">\n {this.textContent}\n {this.menuItem()}\n </bq-tooltip>\n );\n }\n}\n"],"mappings":";;;;6FAAA,MAAMA,EAAoB,i/vB,MCoDbC,EAAc,M,oHAIjBC,U,wBAWCC,YAMDC,OAAkB,MAGlBC,SAAoB,MAGpBC,SAAoB,MAUnBC,OAGAC,QAGAC,QAMT,gBAAAC,GACEC,KAAKC,kB,CAkBCA,iBAAmB,KACzB,IAAKD,KAAKT,UAAW,OACrBS,KAAKR,YAAcU,EAAeF,KAAKT,UAAUY,cAAc,QAAQ,EAGzEC,WAAcC,IACZ,GAAIL,KAAKL,SAAU,CACjBU,EAAGC,iBACHD,EAAGE,kBACH,M,CAGFP,KAAKJ,OAAOY,KAAKR,KAAKS,GAAG,EAG3BC,YAAeL,IACb,GAAIL,KAAKL,SAAU,CACjBU,EAAGC,iBACHD,EAAGE,kBACH,M,CAGFP,KAAKH,QAAQW,KAAKR,KAAKS,GAAG,EAG5BE,YAAeN,IACb,GAAIL,KAAKL,UAAYK,KAAKP,OAAQ,CAChCY,EAAGC,iBACHD,EAAGE,kBACH,M,CAGFP,KAAKF,QAAQU,KAAKR,KAAKS,GAAG,EAOpBG,SAAW,IACjBC,EAAA,UACEC,MAAO,CACL,qBAAsB,KACtBrB,OAAQO,KAAKP,OACbE,SAAUK,KAAKL,SACf,eAAgBK,KAAKN,UAEvBqB,OAAQf,KAAKI,WACbY,QAAShB,KAAKU,YACdO,QAASjB,KAAKW,YACC,gBAAAX,KAAKL,SAAW,OAAS,QACxCuB,KAAK,WACLC,SAAUnB,KAAKL,UAAW,EAAK,EAC/ByB,KAAK,UACLC,KAAK,QAELR,EAAA,OAAKC,MAAM,+CAA+CO,KAAK,UAC7DR,EAAA,QAAMS,KAAK,YAEbT,EAAA,OACEC,MAAM,4EACNS,IAAMhC,GAAeS,KAAKT,UAAYA,GAEtCsB,EAAA,QAAMW,aAAcxB,KAAKC,oBAE3BY,EAAA,OAAKC,MAAM,uDAAuDO,KAAK,UACrER,EAAA,QAAMS,KAAK,aAKjB,MAAAG,GACE,OAAQzB,KAAKN,SACXM,KAAKY,WAELC,EAAA,cAAYC,MAAM,oCAAoCY,UAAU,QAAQC,YAAY,kBACjF3B,KAAKR,YACLQ,KAAKY,W","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["EMPTY_STATE_SIZE","SIZE_TO_VALUE_MAP","small","medium","large","bqEmptyStateCss","BqEmptyState","bodyElem","footerElem","hasBody","hasFooter","size","checkPropValues","validatePropValue","this","el","componentWillLoad","componentDidLoad","handleSlotChange","hasSlotContent","iconSize","render","h","key","class","part","name","exportparts","ref","div","onSlotchange"],"sources":["../../packages/beeq/src/components/empty-state/bq-empty-state.types.ts","../../packages/beeq/src/components/empty-state/scss/bq-empty-state.scss?tag=bq-empty-state&encapsulation=shadow","../../packages/beeq/src/components/empty-state/bq-empty-state.tsx"],"sourcesContent":["export const EMPTY_STATE_SIZE = ['small', 'medium', 'large'] as const;\nexport type TEmptyStateSize = (typeof EMPTY_STATE_SIZE)[number];\n\nexport const SIZE_TO_VALUE_MAP: Record<TEmptyStateSize, number> = {\n small: 40,\n medium: 80,\n large: 180,\n};\n","/* -------------------------------------------------------------------------- */\n/* Empty state styles */\n/* -------------------------------------------------------------------------- */\n\n:host {\n @apply relative inline-block;\n}\n","import { Component, Element, h, Prop, State, Watch } from '@stencil/core';\n\nimport { EMPTY_STATE_SIZE, SIZE_TO_VALUE_MAP } from './bq-empty-state.types';\nimport type { TEmptyStateSize } from './bq-empty-state.types';\nimport { hasSlotContent, validatePropValue } from '../../shared/utils';\n\n/**\n * An Empty State is a UI component displayed when there is no data or content available, often used in dynamic or inactive application states.\n *\n * @example How to use it\n * ```html\n * <bq-empty-state size=\"medium\">Title</bq-empty-state>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/673ae0-empty-state/b/09d7b1\n * @status stable\n *\n * @dependency bq-icon\n *\n * @attr {\"large\" | \"medium\" | \"small\"} size - The size of the empty state component\n *\n * @slot thumbnail - The element that wraps the thumbnail element\n * @slot body - The content to be displayed after the thumbnail section\n * @slot footer - The content to be displayed after the body section as footer\n *\n * @part body - The container `<div>` that wraps the alert description content\n * @part footer - The container `<div>` that wraps the alert footer content\n * @part icon - The `<bq-icon>` element used to render a predefined icon size based on the empty state size (small, medium, large)\n * @part thumbnail - The container `<div>` that wraps the thumbnail element\n * @part title - The container `<div>` that wraps the empty state title content\n * @part wrapper - The wrapper container `<div>` of the element inside the shadow DOM\n */\n\n@Component({\n tag: 'bq-empty-state',\n styleUrl: './scss/bq-empty-state.scss',\n shadow: true,\n})\nexport class BqEmptyState {\n // Own Properties\n // ====================\n\n private bodyElem: HTMLDivElement;\n private footerElem: HTMLDivElement;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqEmptyStateElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private hasBody = false;\n @State() private hasFooter = false;\n\n // Public Property API\n // ========================\n\n /** The size of the empty state component */\n @Prop({ reflect: true, mutable: true }) size: TEmptyStateSize = 'medium';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('size')\n checkPropValues() {\n validatePropValue(EMPTY_STATE_SIZE, 'medium', this.el, 'size');\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.checkPropValues();\n }\n\n componentDidLoad() {\n this.handleSlotChange();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleSlotChange = () => {\n this.hasBody = hasSlotContent(this.bodyElem, 'body');\n this.hasFooter = hasSlotContent(this.footerElem, 'footer');\n };\n\n private get iconSize(): number {\n return SIZE_TO_VALUE_MAP[this.size] || SIZE_TO_VALUE_MAP.medium;\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <div class=\"inline-flex flex-col items-center\" part=\"wrapper\">\n <div\n class={{\n 'm-be-m': this.size === 'small',\n 'm-be-xl': this.size === 'medium',\n 'm-be-xxl': this.size === 'large',\n }}\n part=\"thumbnail\"\n >\n <slot name=\"thumbnail\">\n <bq-icon size={this.iconSize} name=\"database\" part=\"icon\" exportparts=\"base,svg\" />\n </slot>\n </div>\n <div\n class={{\n 'font-bold leading-regular text-primary': true,\n 'text-m': this.size === 'small',\n 'text-l': this.size === 'medium',\n 'text-xxl2': this.size === 'large',\n 'm-be-xs': this.size === 'small' && this.hasBody,\n 'm-be-m': this.size === 'medium' && this.hasBody,\n 'm-be-l': this.size === 'large' && this.hasBody,\n }}\n part=\"title\"\n >\n <slot />\n </div>\n <div\n class={{\n 'font-normal leading-regular': true,\n 'text-s': this.size === 'small',\n 'text-m': this.size === 'medium',\n 'text-l': this.size === 'large',\n 'm-be-m': this.size === 'small' && this.hasFooter,\n 'm-be-l': this.size === 'medium' && this.hasFooter,\n 'm-be-xl': this.size === 'large' && this.hasFooter,\n }}\n ref={(div) => (this.bodyElem = div)}\n part=\"body\"\n >\n <slot name=\"body\" onSlotchange={this.handleSlotChange} />\n </div>\n <div class=\"flex items-start gap-xs\" ref={(div) => (this.footerElem = div)} part=\"footer\">\n <slot name=\"footer\" onSlotchange={this.handleSlotChange} />\n </div>\n </div>\n );\n }\n}\n"],"mappings":";;;;0HAAO,MAAMA,EAAmB,CAAC,QAAS,SAAU,SAG7C,MAAMC,EAAqD,CAChEC,MAAO,GACPC,OAAQ,GACRC,MAAO,KCNT,MAAMC,EAAkB,4znB,MCsCXC,EAAY,M,yBAIfC,SACAC,W,wBAWSC,QAAU,MACVC,UAAY,MAMWC,KAAwB,SAMhE,eAAAC,GACEC,EAAkBb,EAAkB,SAAUc,KAAKC,GAAI,O,CAWzD,iBAAAC,GACEF,KAAKF,iB,CAGP,gBAAAK,GACEH,KAAKI,kB,CAkBCA,iBAAmB,KACzBJ,KAAKL,QAAUU,EAAeL,KAAKP,SAAU,QAC7CO,KAAKJ,UAAYS,EAAeL,KAAKN,WAAY,SAAS,EAG5D,YAAYY,GACV,OAAOnB,EAAkBa,KAAKH,OAASV,EAAkBE,M,CAO3D,MAAAkB,GACE,OACEC,EAAA,OAAAC,IAAA,2CAAKC,MAAM,oCAAoCC,KAAK,WAClDH,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,SAAUV,KAAKH,OAAS,QACxB,UAAWG,KAAKH,OAAS,SACzB,WAAYG,KAAKH,OAAS,SAE5Bc,KAAK,aAELH,EAAM,QAAAC,IAAA,2CAAAG,KAAK,aACTJ,EAAA,WAAAC,IAAA,2CAASZ,KAAMG,KAAKM,SAAUM,KAAK,WAAWD,KAAK,OAAOE,YAAY,eAG1EL,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,yCAA0C,KAC1C,SAAUV,KAAKH,OAAS,QACxB,SAAUG,KAAKH,OAAS,SACxB,YAAaG,KAAKH,OAAS,QAC3B,UAAWG,KAAKH,OAAS,SAAWG,KAAKL,QACzC,SAAUK,KAAKH,OAAS,UAAYG,KAAKL,QACzC,SAAUK,KAAKH,OAAS,SAAWG,KAAKL,SAE1CgB,KAAK,SAELH,EAAA,QAAAC,IAAA,8CAEFD,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,8BAA+B,KAC/B,SAAUV,KAAKH,OAAS,QACxB,SAAUG,KAAKH,OAAS,SACxB,SAAUG,KAAKH,OAAS,QACxB,SAAUG,KAAKH,OAAS,SAAWG,KAAKJ,UACxC,SAAUI,KAAKH,OAAS,UAAYG,KAAKJ,UACzC,UAAWI,KAAKH,OAAS,SAAWG,KAAKJ,WAE3CkB,IAAMC,GAASf,KAAKP,SAAWsB,EAC/BJ,KAAK,QAELH,EAAM,QAAAC,IAAA,2CAAAG,KAAK,OAAOI,aAAchB,KAAKI,oBAEvCI,EAAK,OAAAC,IAAA,2CAAAC,MAAM,0BAA0BI,IAAMC,GAASf,KAAKN,WAAaqB,EAAMJ,KAAK,UAC/EH,EAAA,QAAAC,IAAA,2CAAMG,KAAK,SAASI,aAAchB,KAAKI,oB","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqSelectCss","BqSelect","helperTextElem","inputElem","labelElem","prefixElem","suffixElem","debounceQuery","debounceInput","fallbackInputId","internals","displayValue","hasHelperText","selectedOptions","hasLabel","hasPrefix","hasSuffix","hasValue","autofocus","clearButtonLabel","debounceTime","disableScrollLock","disabled","disableClear","distance","form","keepOpenOnSelect","name","maxTagsVisible","multiple","open","panelHeight","placeholder","placement","readonly","required","sameWidth","skidding","strategy","validationStatus","value","handleValueChange","isNil","this","setFormValue","undefined","syncItemsFromValue","stringToArray","join","String","bqBlur","bqClear","bqFocus","bqSelect","bqInput","connectedCallback","initMultipleValue","componentWillLoad","componentDidLoad","handleSlotChange","Array","isArray","options","filter","item","includes","formAssociatedCallback","role","ariaExpanded","formResetCallback","setValidity","clear","handleOpenChange","ev","composedPath","el","detail","stopOptionFocusBlurPropagation","isHTMLElement","target","stopPropagation","handleScrollEvent","resetOptionsVisibility","emit","reset","from","JSON","parse","handleBlur","handleFocus","handleSelect","handleMultipleSelection","focus","selectedOptionsSet","Set","has","delete","add","map","handleSearchFilter","cancel","isDefined","debounce","forEach","itemLabel","getOptionLabel","toLowerCase","hidden","handleInput","inputEvent","defaultPrevented","handleClearClick","handleTagRemove","hasSlotContent","length","syncSelectedOptionsState","option","updateDisplayLabel","lowerCaseValue","selected","checkedItem","find","innerText","trim","querySelectorAll","displayPlaceholder","displayTags","index","h","key","removable","size","variant","onBqClose","event","onClick","exportparts","part","hasClearIcon","render","labelId","class","id","htmlFor","ref","onSlotchange","slot","spanElem","autoComplete","autoCapitalize","readOnly","spellcheck","type","onBlur","onFocus","onInput","appearance","onBqClick","tabIndex","onBqSelect","divElem"],"sources":["../../packages/beeq/src/components/select/scss/bq-select.scss?tag=bq-select&encapsulation=shadow","../../packages/beeq/src/components/select/bq-select.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Select styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-select.variables';\n\n:host {\n @apply block w-full;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Label and Helper text */\n/* -------------------------------------------------------------------------- */\n\n.bq-select__label {\n @apply flex items-center m-be-[--bq-select--label-margin-bottom];\n @apply text-[length:--bq-select--label-text-size] text-[color:--bq-select--label-text-color];\n}\n\n.bq-select__helper-text {\n @apply text-[length:--bq-select--helper-text-size] text-[color:--bq-select--helper-text-color] m-bs-[--bq-select--helper-margin-top];\n}\n\n.bq-select__helper-text.validation-error {\n @apply text-danger;\n}\n\n.bq-select__helper-text.validation-success {\n @apply text-success;\n}\n\n.bq-select__helper-text.validation-warning {\n @apply text-warning;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Select input group control */\n/* -------------------------------------------------------------------------- */\n\n.bq-select__dropdown:has(:focus-within, :focus-visible) {\n // The focus state will be controlled by the dropdown element\n // if any of its children has focus, the dropdown will set the focus state to the .bq-select__control\n .bq-select__control {\n --bq-ring-width: 1px;\n --bq-ring-offset-width: 0;\n --bq-ring-color-focus: var(--bq-select--border-color-focus);\n\n @apply focus border-[color:--bq-select--border-color-focus];\n }\n}\n\n.bq-select__control {\n @apply flex items-center transition-[border-color,box-shadow] is-full;\n // Border\n @apply rounded-[--bq-select--border-radius] border-[length:--bq-select--border-width] border-[color:--bq-select--border-color];\n // Padding\n @apply pe-[--bq-select--padding-end] ps-[--bq-select--padding-start] p-b-[var(--bq-select--paddingY)];\n // Text\n @apply select-none text-[length:--bq-select--text-size] text-[color:--bq-select--text-color] placeholder:text-[color:--bq-select--text-placeholder-color];\n // Hover\n @apply [&:not(.disabled):not(:focus-within)]:hover:border-hover-brand;\n\n border-style: var(--bq-select--border-style);\n\n // Enable clear button whenever the input group control is hovered or has focus\n &:not(.disabled):hover,\n &:not(.disabled):focus-within {\n .bq-select__control--clear {\n @apply inline-block;\n }\n }\n}\n\n.bq-select__control.disabled {\n @apply cursor-not-allowed opacity-60;\n}\n\n/* ------------------------------- Validation ------------------------------- */\n\n.bq-select__control.validation-error {\n @apply border-danger [&:not(.disabled):not(:focus-within)]:hover:border-hover-danger;\n\n &:not(.disabled):focus-within {\n --bq-ring-color-focus: theme(stroke.danger);\n\n @apply border-active-danger;\n }\n}\n\n.bq-select__control.validation-success {\n @apply border-success [&:not(.disabled):not(:focus-within)]:hover:border-hover-success;\n\n &:not(.disabled):focus-within {\n --bq-ring-color-focus: theme(stroke.success);\n\n @apply border-active-success;\n }\n}\n\n.bq-select__control.validation-warning {\n @apply border-warning [&:not(.disabled):not(:focus-within)]:hover:border-hover-warning;\n\n &:not(.disabled):focus-within {\n --bq-ring-color-focus: theme(stroke.warning);\n\n @apply border-active-warning;\n }\n}\n\n/* -------------------------------------------------------------------------- */\n/* Native HTML Input */\n/* -------------------------------------------------------------------------- */\n\n.bq-select__control--input {\n @apply flex-auto cursor-inherit select-none appearance-none bg-inherit font-inherit text-[length:inherit] text-inherit;\n @apply m-0 border-none p-0 min-bs-[var(--bq-select--icon-size)] min-is-0 focus:outline-none focus-visible:outline-none;\n\n box-shadow: none;\n font-weight: inherit;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Clear button */\n/* -------------------------------------------------------------------------- */\n\n.bq-select__control--clear::part(button) {\n // Since the clear button is inside the input group control,\n // we need to reset the focus ring styles\n --bq-ring-width: initial;\n --bq-ring-offset-width: initial;\n --bq-ring-color-focus: initial;\n\n @apply rounded-xs border-none p-0 bs-auto;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Prefix and suffix */\n/* -------------------------------------------------------------------------- */\n\n.bq-select__control--prefix,\n.bq-select__control--suffix {\n @apply pointer-events-none flex items-center text-[color:var(--bq-select--text-color)];\n}\n\n.bq-select__control--prefix {\n @apply me-[--bq-select--gap];\n}\n\n.bq-select__control--suffix {\n @apply ms-[--bq-select--gap] transition-transform duration-300 ease-in-out;\n}\n\n.bq-select__tags {\n @apply me-xs2 flex flex-1 gap-xs2;\n\n bq-tag,\n ::slotted(bq-tag) {\n @apply inline-flex;\n }\n\n bq-tag::part(text) {\n @apply text-nowrap leading-small;\n }\n}\n\n/* -------------------------------------------------------------------------- */\n/* Slotted and internal icons */\n/* -------------------------------------------------------------------------- */\n\nbq-icon,\n::slotted(bq-icon) {\n --bq-icon--size: var(--bq-select--icon-size) !important;\n}\n","import { AttachInternals, Component, Element, Event, h, Listen, Method, Prop, State, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\nimport type { Placement } from '../../services/interfaces';\nimport {\n debounce,\n hasSlotContent,\n isDefined,\n isHTMLElement,\n isNil,\n stringToArray,\n TDebounce,\n} from '../../shared/utils';\nimport type { TInputValidation } from '../input/bq-input.types';\n\nexport type TSelectValue = string | string[];\n\n/**\n * The select input component lets users choose from a predefined list, commonly used in forms for easy data selection.\n *\n * @example How to use it\n * ```html\n * <bq-select placeholder=\"Placeholder\">\n * <label slot=\"label\">Select label</label>\n * <span slot=\"helper-text\">\n * <bq-icon name=\"star\"></bq-icon>\n * Helper text\n * </span>\n *\n * <bq-option value=\"1\">Option 1</bq-option>\n * <bq-option value=\"2\">Option 2</bq-option>\n * <bq-option value=\"3\">Option 3</bq-option>\n * </bq-select>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/41989d-select/b/09d7b1\n * @status stable\n *\n * @dependency bq-button\n * @dependency bq-dropdown\n * @dependency bq-icon\n * @dependency bq-option-list\n * @dependency bq-tag\n *\n * @attr {boolean} autofocus - If `true`, the Select input will be focused on component render.\n * @attr {string} clear-button-label - The clear button aria label.\n * @attr {number} debounce-time - The amount of time, in milliseconds, to wait before emitting the `bqInput` event after the input value changes.\n * @attr {boolean} disable-clear - If `true`, the clear button won't be displayed.\n * @attr {boolean} disabled - Indicates whether the Select input is disabled and cannot be interacted with.\n * @attr {number} distance - Represents the distance (gutter or margin) between the Select panel and the input element.\n * @attr {string} form - The ID of the form that Select input field belongs to.\n * @attr {boolean} keep-open-on-select - If `true`, the Select panel will remain open after a selection is made.\n * @attr {number} max-tags-visible - The maximum number of tags to display when multiple selection is enabled.\n * @attr {boolean} multiple - If `true`, the Select input will allow multiple selections.\n * @attr {string} name - The Select input name.\n * @attr {boolean} open - If `true`, the Select panel will be visible.\n * @attr {string} panel-height - When set, it will override the height of the Select panel.\n * @attr {string} placeholder - The Select input placeholder text value.\n * @attr {\"bottom\" | \"bottom-end\" | \"bottom-start\" | \"left\" | \"left-end\" | \"left-start\" | \"right\" | \"right-end\" | \"right-start\" | \"top\" | \"top-end\" | \"top-start\"} placement - Position of the Select panel.\n * @attr {boolean} readonly - If `true`, the Select input cannot be modified.\n * @attr {boolean} required - Indicates whether or not the Select input is required to be filled out before submitting the form.\n * @attr {boolean} same-width - Whether the panel should have the Select same width as the input element.\n * @attr {number} skidding - Represents the skidding between the Select panel and the input element.\n * @attr {\"absolute\" | \"fixed\"} strategy - Defines the strategy to position the Select panel.\n * @attr {\"error\" | \"success\" | \"warning\" | \"none\"} validation-status - The validation status of the Select input.\n * @attr {\"number\" | \"string\" | \"string[]\"} value - The select input value can be used to reset the field to a previous value.\n *\n * @method clear - Method to be called to clear the selected value.\n *\n * @event bqBlur - The callback handler is emitted when the Select input loses focus.\n * @event bqClear - The callback handler is emitted when the selected value has been cleared.\n * @event bqFocus - A callback handler is emitted when the Select input has received focus.\n * @event bqSelect - The callback handler is emitted when the selected value has changed.\n *\n * @slot label - The label slot container.\n * @slot prefix - The prefix slot container.\n * @slot tags - The tags slot container.\n * @slot clear-icon - The clear icon slot container.\n * @slot suffix - The suffix slot container.\n * @slot helper-text - The helper text slot container.\n *\n * @part base - The component's base wrapper.\n * @part button - The native HTML button used under the hood in the clear button.\n * @part clear-btn - The clear button.\n * @part control - The input control wrapper.\n * @part input-outline - The input outline wrapper that holds the tags container and the native HTML input used under the hood.\n * @part helper-text - The helper text slot container.\n * @part input - The native HTML input element used under the hood.\n * @part label - The label slot container.\n * @part panel - The select panel container\n * @part prefix - The prefix slot container.\n * @part suffix - The suffix slot container.\n * @part tags - The tags container of the BqTags for multiple selection.\n * @part tag - The tag container of the BqTag for multiple selection.\n * @part tag__base - The base wrapper of the BqTag for multiple selection.\n * @part tag__prefix - The prefix slot container of the BqTag for multiple selection.\n * @part tag__text - The text slot container of the BqTag for multiple selection.\n * @part tag__btn-close - The close button of the BqTag for multiple selection.\n * @part option-list - The option list container.\n *\n * @cssprop --bq-select--background-color - Select background color\n * @cssprop --bq-select--border-color - Select border color\n * @cssprop --bq-select--border-color-focus - Select border color on focus\n * @cssprop --bq-select--border-color-disabled - Select border color when disabled\n * @cssprop --bq-select--border-radius - Select border radius\n * @cssprop --bq-select--border-width - Select border width\n * @cssprop --bq-select--border-style - Select border style\n * @cssprop --bq-select--gap - Gap between Select content and prefix/suffix\n * @cssprop --bq-select--helper-margin-top - Helper text margin top\n * @cssprop --bq-select--helper-text-color - Helper text color\n * @cssprop --bq-select--helper-text-size - Helper text size\n * @cssprop --bq-select--icon-size - Icon size to use in prefix/suffix and clear button\n * @cssprop --bq-select--label-margin-bottom - Select label margin bottom\n * @cssprop --bq-select--label-text-color - Select label text color\n * @cssprop --bq-select--label-text-size - Select label text size\n * @cssprop --bq-select--padding-start - Select padding start\n * @cssprop --bq-select--padding-end - Select padding end\n * @cssprop --bq-select--paddingY - Select padding top and bottom\n * @cssprop --bq-select--text-color - Select text color\n * @cssprop --bq-select--text-size - Select text size\n * @cssprop --bq-select--text-placeholder-color - Select placeholder text color\n */\n@Component({\n tag: 'bq-select',\n styleUrl: './scss/bq-select.scss',\n formAssociated: true,\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class BqSelect {\n // Own Properties\n // ====================\n\n private helperTextElem?: HTMLElement;\n private inputElem?: HTMLInputElement;\n private labelElem?: HTMLElement;\n private prefixElem?: HTMLElement;\n private suffixElem?: HTMLElement;\n\n private debounceQuery: TDebounce<void>;\n private debounceInput: TDebounce<void>;\n\n private fallbackInputId = 'select';\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqSelectElement;\n @AttachInternals() internals!: ElementInternals;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() displayValue?: string;\n @State() hasHelperText = false;\n @State() selectedOptions: HTMLBqOptionElement[] = [];\n\n @State() hasLabel = false;\n @State() hasPrefix = false;\n @State() hasSuffix = false;\n @State() hasValue = false;\n\n // Public Property API\n // ========================\n\n /** If true, the Select input will be focused on component render */\n @Prop({ reflect: true }) autofocus: boolean;\n\n /** The clear button aria label */\n @Prop({ reflect: true }) clearButtonLabel? = 'Clear value';\n\n /**\n * The amount of time, in milliseconds, to wait before emitting the `bqInput` event after the input value changes.\n * A value of 0 means no debouncing will occur.\n */\n @Prop({ reflect: true, mutable: true }) debounceTime? = 0;\n\n /** If true, the Select panel will not lock the page body scroll when open. */\n @Prop({ reflect: true }) disableScrollLock?: boolean = false;\n\n /**\n * Indicates whether the Select input is disabled or not.\n * If `true`, the Select is disabled and cannot be interacted with.\n */\n @Prop({ mutable: true }) disabled?: boolean = false;\n\n /** If true, the clear button won't be displayed */\n @Prop({ reflect: true }) disableClear? = false;\n\n /** Represents the distance (gutter or margin) between the Select panel and the input element. */\n @Prop({ reflect: true }) distance?: number = 8;\n\n /** The ID of the form that the Select input belongs to. */\n @Prop({ reflect: true }) form?: string;\n\n /** If true, the Select panel will remain open after a selection is made. */\n @Prop({ reflect: true }) keepOpenOnSelect?: boolean = false;\n\n /** The Select input name. */\n @Prop({ reflect: true }) name!: string;\n\n /** The maximum number of tags to display when multiple selection is enabled */\n @Prop({ mutable: true }) maxTagsVisible: number = 2;\n\n /** If true, the Select input will allow multiple selections. */\n @Prop({ reflect: true }) multiple?: boolean = false;\n\n /** If true, the Select panel will be visible. */\n @Prop({ reflect: true, mutable: true }) open?: boolean = false;\n\n /** When set, it will override the height of the Select panel. */\n @Prop({ reflect: true }) panelHeight?: string;\n\n /** The Select input placeholder text value */\n @Prop({ reflect: true }) placeholder?: string;\n\n /** Position of the Select panel */\n @Prop({ reflect: true }) placement?: Placement = 'bottom';\n\n /** If true, the list of options cannot be filtered (searching won't be available) */\n @Prop({ reflect: true }) readonly?: boolean;\n\n /** Indicates whether or not the Select input is required to be filled out before submitting the form. */\n @Prop({ reflect: true }) required?: boolean;\n\n /** Whether the panel should have the Select same width as the input element */\n @Prop({ reflect: true }) sameWidth?: boolean = true;\n\n /** Represents the skidding between the Select panel and the input element. */\n @Prop({ reflect: true }) skidding?: number = 0;\n\n /** Defines the strategy to position the Select panel */\n @Prop({ reflect: true }) strategy?: 'fixed' | 'absolute' = 'fixed';\n\n /**\n * The validation status of the Select input.\n *\n * @remarks\n * This property is used to indicate the validation status of the select input. It can be set to one of the following values:\n * - `'none'`: No validation status is set.\n * - `'error'`: The input has a validation error.\n * - `'warning'`: The input has a validation warning.\n * - `'success'`: The input has passed validation.\n */\n @Prop({ reflect: true }) validationStatus: TInputValidation = 'none';\n\n /** The select input value, it can be used to reset the field to a previous value */\n @Prop({ reflect: true, mutable: true }) value: TSelectValue;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('value')\n handleValueChange() {\n // Early return for undefined/null values\n if (isNil(this.value)) {\n this.value = this.multiple ? [] : '';\n this.internals.setFormValue(undefined);\n this.syncItemsFromValue();\n return;\n }\n\n // Handle multiple selection mode\n if (this.multiple) {\n this.value = stringToArray(this.value);\n this.internals.setFormValue(this.value.join(','));\n this.syncItemsFromValue();\n\n return;\n }\n\n // Handle single selection mode\n this.value = String(this.value);\n this.internals.setFormValue(this.value);\n this.syncItemsFromValue();\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler emitted when the Select input loses focus */\n @Event() bqBlur!: EventEmitter<HTMLBqSelectElement>;\n\n /** Callback handler emitted when the selected value has been cleared */\n @Event() bqClear!: EventEmitter<HTMLBqSelectElement>;\n\n /** Callback handler emitted when the Select input has received focus */\n @Event() bqFocus!: EventEmitter<HTMLBqSelectElement>;\n\n /** Callback handler emitted when the selected value has changed */\n @Event() bqSelect!: EventEmitter<{ value: string | number | string[]; item: HTMLBqOptionElement }>;\n\n /** Callback handler emitted when the Select input changes its value while typing */\n @Event() bqInput: EventEmitter<{ value: string | number | string[] }>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n connectedCallback() {\n this.initMultipleValue();\n }\n\n componentWillLoad() {\n this.initMultipleValue();\n }\n\n componentDidLoad() {\n this.handleSlotChange();\n\n if (this.multiple && Array.isArray(this.value)) {\n this.selectedOptions = this.options.filter((item) => this.value.includes(item.value));\n }\n this.handleValueChange();\n }\n\n formAssociatedCallback() {\n this.internals.role = 'combobox';\n this.internals.ariaExpanded = this.open ? 'true' : 'false';\n }\n\n async formResetCallback() {\n if (isNil(this.value)) return;\n\n this.internals.setValidity({});\n this.clear();\n }\n\n // Listeners\n // ==============\n\n @Listen('bqOpen', { capture: true })\n handleOpenChange(ev: CustomEvent<{ open: boolean }>) {\n if (!ev.composedPath().includes(this.el)) return;\n\n this.open = ev.detail.open;\n }\n\n @Listen('bqFocus', { capture: true })\n @Listen('bqBlur', { capture: true })\n stopOptionFocusBlurPropagation(ev: CustomEvent) {\n // Stop propagation of focus and blur events coming from the `bq-option` elements\n if (isHTMLElement(ev.target, 'bq-select')) return;\n\n ev.stopPropagation();\n }\n\n @Listen('scroll', { target: 'window', passive: true, capture: true })\n handleScrollEvent() {\n if (!this.open || this.disableScrollLock) return;\n\n // Close the panel when the scroll event is triggered.\n // This is useful for those cases where the floating panel is inside a scrollable container.\n // For example, a select inside a dialog, drawer, etc.\n // ⚠️ Notice that document body scroll lock is handled via the `scrollLock` utility.\n this.open = false;\n }\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n /**\n * Clears the selected value.\n *\n * @return {Promise<void>}\n * @memberof BqSelect\n */\n @Method()\n async clear(): Promise<void> {\n if (this.disabled) return;\n\n const { multiple, inputElem, bqClear, el } = this;\n\n // Clear value and selected options\n this.value = '';\n this.selectedOptions = [];\n\n // Clear display value and input element if not multiple\n if (!multiple) {\n this.displayValue = '';\n inputElem.value = '';\n }\n\n // Update form value and reset options visibility\n this.resetOptionsVisibility();\n\n // Emit clear event\n bqClear.emit(el);\n }\n\n /**\n * Resets the Select input to a previous value.\n *\n * @param {TSelectValue} value - The value to reset the Select input to.\n * @return {Promise<void>}\n * @memberof BqSelect\n */\n @Method()\n async reset(value: TSelectValue): Promise<void> {\n if (isNil(value)) return;\n\n this.value = value;\n this.syncItemsFromValue();\n }\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private initMultipleValue = () => {\n if (!this.multiple) return;\n\n this.value = Array.isArray(this.value) ? this.value : Array.from(JSON.parse(String(this.value)));\n };\n\n private handleBlur = () => {\n if (this.disabled) return;\n\n this.bqBlur.emit(this.el);\n };\n\n private handleFocus = () => {\n if (this.disabled) return;\n\n this.bqFocus.emit(this.el);\n };\n\n private handleSelect = (ev: CustomEvent<{ value: TSelectValue; item: HTMLBqOptionElement }>) => {\n if (this.disabled) return;\n\n if (this.multiple) {\n ev.stopPropagation();\n }\n\n const { value, item } = ev.detail;\n\n if (this.multiple) {\n this.handleMultipleSelection(item);\n // Clear the input value after selecting an item\n this.inputElem.value = '';\n // If multiple selection is enabled, emit the selected items array instead of relying on\n // the option list to emit the value of the selected item\n this.bqSelect.emit({ value: this.value, item });\n } else {\n this.value = value;\n }\n\n this.resetOptionsVisibility();\n this.inputElem.focus();\n };\n\n private handleMultipleSelection = (item: HTMLBqOptionElement) => {\n // Set has O(1) complexity for insertion, deletion, and search operations, compared to an Array's O(n)\n const selectedOptionsSet = new Set(this.selectedOptions);\n\n if (selectedOptionsSet.has(item)) {\n selectedOptionsSet.delete(item);\n } else {\n selectedOptionsSet.add(item);\n }\n\n this.selectedOptions = Array.from(selectedOptionsSet);\n this.value = this.selectedOptions.map((item) => item.value);\n };\n\n private handleSearchFilter = (value: string) => {\n if (this.disabled) return;\n\n this.debounceQuery?.cancel();\n\n if (!isDefined(value)) {\n this.clear();\n } else {\n this.debounceQuery = debounce(() => {\n this.options.forEach((item: HTMLBqOptionElement) => {\n const itemLabel = this.getOptionLabel(item).toLowerCase();\n item.hidden = !itemLabel.includes(value);\n });\n }, this.debounceTime);\n\n this.debounceQuery();\n }\n\n // The panel will close once a selection is made\n // so we need to make sure it's open when the user is typing and the query is not empty\n this.open = true;\n };\n\n private handleInput = (ev: Event) => {\n if (this.disabled) return;\n\n const { value } = ev.target as HTMLInputElement;\n\n this.debounceInput?.cancel();\n\n this.debounceInput = debounce(() => {\n const inputEvent = this.bqInput.emit({ value });\n if (!inputEvent.defaultPrevented) {\n // Continue with search filtering only if the event wasn't prevented\n this.handleSearchFilter(value);\n }\n }, this.debounceTime);\n\n this.debounceInput();\n };\n\n private handleClearClick = (ev: CustomEvent) => {\n (async () => {\n await this.clear();\n })();\n this.inputElem.focus();\n\n ev.stopPropagation();\n };\n\n private handleTagRemove = (item: HTMLBqOptionElement) => {\n if (this.disabled) return;\n\n this.handleMultipleSelection(item);\n this.bqSelect.emit({ value: this.value, item });\n };\n\n private handleSlotChange = () => {\n this.hasLabel = hasSlotContent(this.labelElem);\n this.hasPrefix = hasSlotContent(this.prefixElem);\n this.hasSuffix = hasSlotContent(this.suffixElem);\n this.hasHelperText = hasSlotContent(this.helperTextElem);\n };\n\n private resetOptionsVisibility = () => {\n this.options.forEach((item: HTMLBqOptionElement) => (item.hidden = false));\n };\n\n private syncItemsFromValue = () => {\n const { internals, options, value } = this;\n if (!options.length) return;\n\n // Sync selected state of the BqOption elements\n this.syncSelectedOptionsState();\n\n if (this.multiple) {\n // Sync selected options for multiple selection mode\n this.selectedOptions = options.filter((option) => this.value?.includes(option.value));\n }\n\n // Always update display value and form value\n this.updateDisplayLabel();\n internals.setFormValue(!isNil(value) ? `${value}` : undefined);\n };\n\n /**\n * Syncs the selected state of the BqOption elements which value is included in the `value` property.\n * Notice that value can be a string or an array of strings.\n *\n * @private\n * @memberof BqSelect\n */\n private syncSelectedOptionsState = () => {\n const { options, multiple, value } = this;\n const lowerCaseValue = String(value).toLowerCase();\n\n options.forEach((option: HTMLBqOptionElement) => {\n if (multiple && Array.isArray(value)) {\n option.selected = value.includes(option.value);\n } else {\n option.selected = option.value.toLowerCase() === lowerCaseValue;\n }\n });\n };\n\n /**\n * Updates the display value of the input element based on the selected option.\n *\n * @private\n * @memberof BqSelect\n */\n private updateDisplayLabel = () => {\n const { value, options, inputElem } = this;\n\n const checkedItem = options.find((item) => item.value === value);\n const displayValue = checkedItem ? this.getOptionLabel(checkedItem) : '';\n\n inputElem.value = displayValue;\n this.displayValue = displayValue;\n };\n\n private getOptionLabel = (item: HTMLBqOptionElement) => {\n if (!item) return '';\n return item.innerText.trim() ?? '';\n };\n\n private get options() {\n return Array.from(this.el.querySelectorAll('bq-option'));\n }\n\n private get displayPlaceholder() {\n // Hide the placeholder when multiple selection is enabled and there are selected items\n return this.multiple && this.selectedOptions.length !== 0 ? undefined : this.placeholder;\n }\n\n private get displayTags() {\n return this.selectedOptions.map((item, index) => {\n if (index < this.maxTagsVisible || this.maxTagsVisible < 0) {\n return (\n <bq-tag\n key={item.value}\n removable\n size=\"xsmall\"\n variant=\"filled\"\n onBqClose={(event) => {\n // NOTE: prevents triggering bqClose on parent\n event.stopPropagation();\n this.handleTagRemove(item);\n }}\n // Prevent the tag from closing the panel when clicked\n onClick={(ev: MouseEvent) => ev.stopPropagation()}\n exportparts=\"wrapper:tag__base,prefix:tag__prefix,text:tag__text,btn-close:tag__btn-close\"\n part=\"tag\"\n >\n {this.getOptionLabel(item)}\n </bq-tag>\n );\n } else if (index === this.maxTagsVisible) {\n return (\n <bq-tag\n key=\"more\"\n size=\"xsmall\"\n variant=\"filled\"\n exportparts=\"wrapper:tag__base,prefix:tag__prefix,text:tag__text,btn-close:tag__btn-close\"\n part=\"tag\"\n >\n +{this.selectedOptions.length - index}\n </bq-tag>\n );\n }\n\n return null;\n });\n }\n\n private get hasClearIcon() {\n if (this.disableClear || this.disabled) {\n return false;\n }\n\n if (this.multiple) {\n return this.selectedOptions.length > 0;\n }\n\n return isDefined(this.displayValue);\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const labelId = `bq-select__label-${this.name || this.fallbackInputId}`;\n\n return (\n <div class=\"bq-select\" part=\"base\">\n {/* Label */}\n <label\n id={labelId}\n class={{ 'bq-select__label': true, '!hidden': !this.hasLabel }}\n aria-label={this.name || this.fallbackInputId}\n htmlFor={this.name || this.fallbackInputId}\n ref={(labelElem: HTMLSpanElement) => (this.labelElem = labelElem)}\n part=\"label\"\n >\n <slot name=\"label\" onSlotchange={this.handleSlotChange} />\n </label>\n {/* Select dropdown */}\n <bq-dropdown\n class=\"bq-select__dropdown w-full\"\n disableScrollLock={this.disableScrollLock}\n disabled={this.disabled}\n distance={this.distance}\n keepOpenOnSelect={this.keepOpenOnSelect}\n open={this.open}\n panelHeight={this.panelHeight}\n placement={this.placement}\n sameWidth={this.sameWidth}\n skidding={this.skidding}\n strategy={this.strategy}\n exportparts=\"panel\"\n >\n {/* Input control group */}\n <div\n class={{\n 'bq-select__control': true,\n [`validation-${this.validationStatus}`]: true,\n disabled: this.disabled,\n }}\n part=\"control\"\n slot=\"trigger\"\n >\n {/* Prefix */}\n <span\n class={{ 'bq-select__control--prefix': true, '!hidden': !this.hasPrefix }}\n ref={(spanElem: HTMLSpanElement) => (this.prefixElem = spanElem)}\n part=\"prefix\"\n >\n <slot name=\"prefix\" onSlotchange={this.handleSlotChange} />\n </span>\n <div class=\"flex flex-1 overflow-x-auto\" part=\"input-outline\">\n {/* Display selected values using BqTags for multiple selection */}\n {this.multiple && (\n <span class=\"bq-select__tags\" part=\"tags\">\n <slot name=\"tags\">{this.displayTags}</slot>\n </span>\n )}\n {/* HTML Input */}\n <input\n id={this.name || this.fallbackInputId}\n class=\"bq-select__control--input flex-grow is-full\"\n autoComplete=\"off\"\n autoCapitalize=\"off\"\n aria-disabled={this.disabled ? 'true' : 'false'}\n aria-controls={`bq-options-${this.name}`}\n aria-expanded={this.open ? 'true' : 'false'}\n aria-haspopup=\"listbox\"\n disabled={this.disabled}\n form={this.form}\n name={this.name}\n placeholder={this.displayPlaceholder}\n ref={(inputElem: HTMLInputElement) => (this.inputElem = inputElem)}\n readOnly={this.readonly}\n required={this.required}\n role=\"combobox\"\n spellcheck={false}\n type=\"text\"\n value={this.displayValue}\n part=\"input\"\n // Events\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onInput={this.handleInput}\n />\n </div>\n {/* Clear Button */}\n {this.hasClearIcon && (\n // The clear button will be visible as long as the input has a value\n // and the parent group is hovered or has focus-within\n <bq-button\n class=\"bq-select__control--clear ms-[--bq-select--gap]\"\n appearance=\"text\"\n aria-label={this.clearButtonLabel}\n size=\"small\"\n onBqClick={this.handleClearClick}\n part=\"clear-btn\"\n exportparts=\"button\"\n tabIndex={-1}\n >\n <slot name=\"clear-icon\">\n <bq-icon name=\"x-circle\" class=\"flex\" />\n </slot>\n </bq-button>\n )}\n {/* Suffix */}\n <span\n class={{ 'bq-select__control--suffix': true, 'rotate-180': this.open, 'rotate-0': !this.open }}\n ref={(spanElem: HTMLSpanElement) => (this.suffixElem = spanElem)}\n part=\"suffix\"\n >\n <slot name=\"suffix\" onSlotchange={this.handleSlotChange}>\n <bq-icon name=\"caret-down\" class=\"flex\" />\n </slot>\n </span>\n </div>\n <bq-option-list\n id={`bq-options-${this.name}`}\n onBqSelect={this.handleSelect}\n aria-expanded={this.open ? 'true' : 'false'}\n exportparts=\"base:option-list\"\n role=\"listbox\"\n >\n <slot />\n </bq-option-list>\n </bq-dropdown>\n {/* Helper text */}\n <div\n class={{\n [`bq-select__helper-text validation-${this.validationStatus}`]: true,\n '!hidden': !this.hasHelperText,\n }}\n ref={(divElem: HTMLDivElement) => (this.helperTextElem = divElem)}\n part=\"helper-text\"\n >\n <slot name=\"helper-text\" onSlotchange={this.handleSlotChange} />\n </div>\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqCheckboxCss","BqCheckbox","inputElem","prevCheckedValue","internals","backgroundOnHover","formId","formValidationMessage","checked","disabled","indeterminate","name","required","value","handleIndeterminatePropChange","this","handleRequiredPropChange","updateFormValidity","bqChange","bqFocus","bqBlur","componentWillLoad","componentDidUpdate","emit","formAssociatedCallback","setFormValue","formResetCallback","removeAttribute","undefined","vClick","click","vFocus","focus","vBlur","blur","states","clear","add","setValidity","valueMissing","handleChange","handleOnFocus","el","handleOnBlur","render","h","key","class","part","type","isNil","form","ref","input","onBlur","onChange","onFocus","tabindex","xmlns","viewBox","fill","d","stroke"],"sources":["../../packages/beeq/src/components/checkbox/scss/bq-checkbox.scss?tag=bq-checkbox&encapsulation=shadow","../../packages/beeq/src/components/checkbox/bq-checkbox.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Checkbox styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-checkbox.variables';\n\n:host {\n @apply inline-block;\n}\n\n.bq-checkbox {\n @apply box-border inline-flex cursor-pointer select-none rounded-s transition-colors duration-300 ease-in-out p-b-xs p-i-xs;\n\n // Default hover state\n &:not(.is-checked),\n &:not(.is-indeterminate) {\n &:not(.is-disabled):hover .bq-checkbox__checkbox {\n @apply border-hover-brand;\n }\n }\n\n // Display background on hover (if enabled)\n &.has-background:not(.is-disabled):hover {\n @apply bg-hover-ui-primary;\n }\n\n // Checked/Indeterminate hover state\n &.is-checked,\n &.is-indeterminate {\n &:not(.is-disabled):hover .bq-checkbox__checkbox {\n @apply bg-hover-ui-brand border-hover-brand;\n }\n }\n}\n\n.bq-checkbox__input {\n // Checkbox square icon has `FOCUS`\n &:focus,\n &:focus-visible {\n ~ .bq-checkbox__checkbox {\n @apply focus border-brand;\n }\n }\n\n // Checkbox square icon is `CHECKED/INDETERMINATE`\n &:checked,\n &:indeterminate {\n ~ .bq-checkbox__checkbox {\n @apply border-brand bg-ui-brand;\n }\n }\n\n // Checkbox square icon is `CHECKED/INDETERMINATE` and `DISABLED`\n &:checked:disabled,\n &:indeterminate:disabled {\n ~ .bq-checkbox__checkbox {\n @apply opacity-60;\n }\n }\n\n &:disabled {\n ~ .bq-checkbox__checkbox {\n @apply opacity-60;\n }\n }\n}\n\n// Checkbox square icon `DEFAULT` state (not checked/indeterminate, not hover, not disabled)\n.bq-checkbox__checkbox {\n @apply rounded-[--bq-checkbox--border-radius] border-[length:--bq-checkbox--border-width] border-solid border-[color:--bq-icon--primary];\n}\n\n.bq-checkbox__checkbox,\n.bq-checkbox__label {\n @apply transition-[color,background-color,border-color,box-shadow] duration-300;\n}\n","import { AttachInternals, Component, Element, Event, h, Method, Prop, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\nimport { isNil } from '../../shared/utils';\n\n/**\n * The checkbox is a UI component that allows users to select one or more options from a list of choices.\n * It is commonly used in forms, surveys, and settings pages.\n *\n * @example How to use it\n * ```html\n * <bq-checkbox name=\"bq-checkbox\" value=\"checkbox-value\" background-on-hover>\n * Checkbox label\n * </bq-checkbox>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/431f17-checkbox\n * @status stable\n *\n * @attr {boolean} background-on-hover - If true checkbox displays background on hover\n * @attr {string} form-id - The form ID that the checkbox is associated with\n * @attr {string} form-validation-message - The native form validation message\n * @attr {boolean} checked - If true checkbox is checked\n * @attr {boolean} disabled - If true checkbox is disabled\n * @attr {boolean} indeterminate - A state that is neither checked nor unchecked\n * @attr {string} name - Name of the HTML input form control. Submitted with the form as part of a name/value pair\n * @attr {boolean} required - If `true`, it will indicate that the user must specify a value for the checkbox before the owning form can be submitted\n * @attr {string} value - A string representing the value of the checkbox. Primarily used to differentiate a list of related checkboxes that have the same name\n *\n * @method vClick - Simulate a click event on the native `<input>` HTML element used under the hood\n * @method vFocus - Sets focus on the native `<input>` HTML element used under the hood\n * @method vBlur - Remove focus from the native `<input>` HTML element used under the hood\n *\n * @event bqChange - Handler to be called when the checkbox state changes\n * @event bqFocus - Handler to be called when the checkbox gets focus\n * @event bqBlur - Handler to be called when the checkbox loses focus\n *\n * @slot - The content of the checkbox component\n *\n * @part base - The component's internal wrapper of the checkbox component.\n * @part control - The container `<div>` element that holds the custom checkbox.\n * @part input - The native HTML `<input type=\"checkbox\">` used under the hood.\n * @part checkbox - The `<span>` element that renders the custom checked/indeterminate state.\n * @part label - The `<span>` element that holds the text content.\n *\n * @cssprop --bq-checkbox--size - Checkbox size\n * @cssprop --bq-checkbox--border-radius - Checkbox border radius\n * @cssprop --bq-checkbox--border-width - Checkbox border width\n */\n@Component({\n tag: 'bq-checkbox',\n styleUrl: './scss/bq-checkbox.scss',\n formAssociated: true,\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class BqCheckbox {\n // Own Properties\n // ====================\n\n private inputElem: HTMLInputElement;\n private prevCheckedValue: boolean;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqCheckboxElement;\n @AttachInternals() internals!: ElementInternals;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** If true checkbox displays background on hover */\n @Prop({ reflect: true }) backgroundOnHover? = false;\n\n /** The form ID that the checkbox is associated with */\n @Prop({ reflect: true }) formId?: string;\n\n /** The native form validation message */\n @Prop({ mutable: true }) formValidationMessage?: string;\n\n /** If true checkbox is checked */\n @Prop({ reflect: true, mutable: true }) checked?: boolean;\n\n /** If true checkbox is disabled */\n @Prop({ reflect: true }) disabled? = false;\n\n /** A state that is neither checked nor unchecked */\n @Prop({ reflect: true, mutable: true }) indeterminate? = false;\n\n /** Name of the HTML input form control. Submitted with the form as part of a name/value pair. */\n @Prop({ reflect: true }) name!: string;\n\n /** If `true`, it will indicate that the user must specify a value for the checkbox before the owning form can be submitted */\n @Prop({ reflect: true }) required?: boolean;\n\n /** A string representing the value of the checkbox. Primarily used to differentiate a list of related checkboxes that have the same name. */\n @Prop({ reflect: true }) value!: string;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('indeterminate')\n handleIndeterminatePropChange() {\n if (!this.inputElem) return;\n\n this.inputElem.indeterminate = this.indeterminate;\n if (this.indeterminate) {\n this.checked = false;\n }\n }\n\n @Watch('required')\n handleRequiredPropChange() {\n this.updateFormValidity();\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Handler to be called when the checkbox state changes */\n @Event() bqChange: EventEmitter<{ checked: boolean }>;\n\n /** Handler to be called when the checkbox gets focus */\n @Event() bqFocus: EventEmitter<HTMLBqCheckboxElement>;\n\n /** Handler to be called when the checkbox loses focus */\n @Event() bqBlur: EventEmitter<HTMLBqCheckboxElement>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.prevCheckedValue = this.checked;\n }\n\n componentDidUpdate() {\n /**\n * We need to trigger the `bqChange` immediately after the first update happens\n * so the checked attribute get applied, otherwise, a delay will happen\n * between the event emits and when the checked attribute value gets reflected in the element host.\n */\n if (this.checked !== this.prevCheckedValue) {\n if (!this.indeterminate) {\n this.bqChange.emit({ checked: this.checked });\n }\n this.prevCheckedValue = this.checked;\n }\n }\n\n formAssociatedCallback() {\n this.setFormValue(this.checked);\n this.updateFormValidity();\n }\n\n formResetCallback() {\n // Reset the form value and validity state\n this.checked = false;\n this.indeterminate = false;\n this.inputElem.removeAttribute('checked');\n this.internals?.setFormValue(undefined);\n this.updateFormValidity();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n /**\n * Simulate a click event on the native `<input>` HTML element used under the hood.\n * Use this method instead of the global `element.click()`.\n */\n @Method()\n async vClick() {\n this.inputElem?.click();\n }\n\n /**\n * Sets focus on the native `<input>` HTML element used under the hood.\n * Use this method instead of the global `element.focus()`.\n */\n @Method()\n async vFocus() {\n this.inputElem?.focus();\n }\n\n /**\n * Remove focus from the native `<input>` HTML element used under the hood.\n * Use this method instead of the global `element.blur()`.\n */\n @Method()\n async vBlur() {\n this.inputElem?.blur();\n }\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private setFormValue = (checked: boolean) => {\n const value = checked ? 'on' : undefined;\n // Set form value based on the checked state\n // Here we also pass the state of the checkbox (2nd argument) as the state of the form control\n // Details: https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/setFormValue\n this.internals?.setFormValue(value, `${this.checked}`);\n };\n\n private updateFormValidity = () => {\n const { formValidationMessage, internals, required, checked, inputElem } = this;\n // Clear the validity state\n internals?.states.clear();\n\n if (!(required && !checked)) {\n // If the checkbox is not required or is checked, set the validity state to valid\n internals?.states.add('valid');\n internals?.setValidity({});\n return;\n }\n\n // Set validity state based on the required property and checked state\n internals?.states.add('invalid');\n internals?.setValidity({ valueMissing: true }, formValidationMessage, inputElem);\n };\n\n private handleChange = () => {\n this.checked = !this.checked;\n this.indeterminate = false;\n\n this.setFormValue(this.checked);\n this.updateFormValidity();\n };\n\n private handleOnFocus = () => {\n this.bqFocus.emit(this.el);\n };\n\n private handleOnBlur = () => {\n this.bqBlur.emit(this.el);\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <label\n class={{\n 'bq-checkbox group': true,\n 'is-checked': this.checked,\n 'is-indeterminate': this.indeterminate,\n 'is-disabled !cursor-not-allowed': this.disabled,\n 'has-background': this.backgroundOnHover,\n }}\n aria-label={this.name || 'checkbox'}\n part=\"base\"\n >\n <div\n class=\"bq-checkbox__control relative box-border flex items-center justify-center bs-[--bq-checkbox--size] is-[--bq-checkbox--size] p-b-xs3 p-i-xs3\"\n part=\"control\"\n >\n <input\n type=\"checkbox\"\n class=\"bq-checkbox__input pointer-events-none absolute opacity-0 p-b-0 p-i-0 m-b-0 m-i-0\"\n name={!isNil(this.name) ? this.name : undefined}\n checked={this.checked}\n disabled={this.disabled}\n indeterminate={this.indeterminate}\n form={this.formId}\n required={this.required}\n value={this.value}\n aria-checked={this.checked ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n ref={(input: HTMLInputElement) => (this.inputElem = input)}\n onBlur={this.handleOnBlur}\n onChange={this.handleChange}\n onFocus={this.handleOnFocus}\n part=\"input\"\n tabindex=\"0\"\n />\n <span\n class=\"bq-checkbox__checkbox relative box-border flex items-center justify-center bs-full is-[--bq-checkbox--size]\"\n part=\"checkbox\"\n >\n {/*\n We could move these SVGs to separated functional components, but it seems there's a weird issue with\n Stencil and pure SVG components: https://stencil-worldwide.slack.com/archives/C79EANFL7/p1663779385026389\n */}\n {this.checked && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"absolute text-neutral-white bs-full is-full\"\n viewBox=\"0 0 256 256\"\n >\n <path fill=\"none\" d=\"M0 0h256v256H0z\" />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"32\"\n d=\"M216 72 104 184l-56-56\"\n />\n </svg>\n )}\n {!this.checked && this.indeterminate && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"absolute text-neutral-white bs-full is-full\"\n viewBox=\"0 0 256 256\"\n fill=\"currentColor\"\n >\n <path fill=\"none\" d=\"M0 0h256v256H0z\" />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"32\"\n d=\"M40 128h176\"\n />\n </svg>\n )}\n </span>\n </div>\n <span\n class=\"bq-checkbox__label ps-xs text-start font-medium leading-regular text-primary group-hover-[&:not(.is-disabled)]:text-hover-primary group-[.is-disabled]:opacity-60\"\n part=\"label\"\n >\n <slot />\n </span>\n </label>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqOptionGroupCss","BqOptionGroup","render","h","key","class","part","name","role"],"sources":["../../packages/beeq/src/components/option-group/scss/bq-option-group.scss?tag=bq-option-group&encapsulation=shadow","../../packages/beeq/src/components/option-group/bq-option-group.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Option group styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-option-group.variables';\n\n:host {\n @apply block;\n}\n\n.bq-option-group {\n @apply flex overflow-hidden overflow-ellipsis;\n @apply bg-[--bq-option-group--background] text-[length:--bq-option-group--font-size] leading-[--bq-option-group--line-height];\n @apply pe-[--bq-option-group--label-padding-end] ps-[--bq-option-group--label-padding-start] p-b-[--bq-option-group--label-paddingY] p-i-[--bq-option-group--label-paddingY];\n\n &__child {\n @apply flex items-center;\n }\n}\n\n.bq-option-group__label {\n @apply pe-[--bq-option-group--label-text-padding-end] ps-[--bq-option-group--label-text-padding-start];\n}\n\n.bq-option-group__container ::slotted(bq-option) {\n @apply ps-[--bq-option-group--container-padding-start];\n}\n","import { Component, Element, h } from '@stencil/core';\n\n/**\n * The option group component is a container for multiple option elements.\n * It allows to manage the appearance and size of all options at once.\n *\n * @example How to use it\n * ```html\n * <bq-option-group class=\"hydrated\">\n * <span slot=\"header-label\">Sport</span>\n * <bq-option value=\"football\">Football</bq-option>\n * <bq-option value=\"basketball\">Basketball</bq-option>\n * <bq-option value=\"tennis\">Tennis</bq-option>\n * </bq-option-group>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/3b1b7b-option-group\n * @status stable\n *\n * @slot header-label - The label of the option group\n * @slot header-prefix - The prefix of the label\n * @slot header-suffix - The suffix of the label\n * @slot - The option items\n *\n * @part label - The `legend` tag element which acts as a container for the label\n * @part prefix - The prefix of the label\n * @part label - The text of the label\n * @part suffix - The suffix of the label\n * @part group - The `div` element which holds the option items\n *\n * @cssprop --bq-option-group--background - option group background color\n * @cssprop --bq-option-group--font-size - option group font size\n * @cssprop --bq-option-group--line-height - option group line height\n * @cssprop --bq-option-group--label-padding-start - option group header padding start\n * @cssprop --bq-option-group--label-padding-end - option group header padding start\n * @cssprop --bq-option-group--label-paddingY - option group header padding Y axis\n * @cssprop --bq-option-group--label-text-padding-start - option group text within label padding start\n * @cssprop --bq-option-group--label-text-padding-end - option group text within label padding start\n * @cssprop --bq-option-group--container-padding-start - option group container padding start\n */\n@Component({\n tag: 'bq-option-group',\n styleUrl: './scss/bq-option-group.scss',\n shadow: true,\n})\nexport class BqOptionGroup {\n // Own Properties\n // ====================\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n // Prop lifecycle events\n // =======================\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <div class=\"bg-ui-primary\">\n <legend class=\"bq-option-group m-be-[--bq-option-group--gapY-list]\" part=\"label\">\n <span class=\"option-group__prefix flex items-center\" part=\"prefix\">\n <slot name=\"header-prefix\" />\n </span>\n <span\n class=\"bq-option-group__label inline-block overflow-hidden text-ellipsis whitespace-nowrap is-auto\"\n part=\"label\"\n >\n <slot name=\"header-label\" />\n </span>\n <span class=\"bq-option-group__suffix\" part=\"suffix\">\n <slot name=\"header-suffix\" />\n </span>\n </legend>\n <div\n class=\"bq-option-group__container flex flex-col gap-[--bq-option-group--gapY-list]\"\n role=\"group\"\n aria-label=\"Options\"\n part=\"group\"\n >\n <slot />\n </div>\n </div>\n );\n }\n}\n"],"mappings":";;;;kDAAA,MAAMA,EAAmB,27rB,MC6CZC,EAAa,M,iDA8CxB,MAAAC,GACE,OACEC,EAAA,OAAAC,IAAA,2CAAKC,MAAM,iBACTF,EAAA,UAAAC,IAAA,2CAAQC,MAAM,sDAAsDC,KAAK,SACvEH,EAAA,QAAAC,IAAA,2CAAMC,MAAM,yCAAyCC,KAAK,UACxDH,EAAA,QAAAC,IAAA,2CAAMG,KAAK,mBAEbJ,EAAA,QAAAC,IAAA,2CACEC,MAAM,8FACNC,KAAK,SAELH,EAAA,QAAAC,IAAA,2CAAMG,KAAK,kBAEbJ,EAAA,QAAAC,IAAA,2CAAMC,MAAM,0BAA0BC,KAAK,UACzCH,EAAA,QAAAC,IAAA,2CAAMG,KAAK,oBAGfJ,EAAA,OAAAC,IAAA,2CACEC,MAAM,8EACNG,KAAK,QAAO,aACD,UACXF,KAAK,SAELH,EAAQ,QAAAC,IAAA,8C","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqPageTitleCss","BqPageTitle","backNavigationElem","suffixElem","subTitleElem","haveBackNavigation","hasSuffix","hasSubTitle","componentDidLoad","this","handleSlotChange","hasSlotContent","render","h","key","class","part","flex","ref","divElem","name","onSlotchange","hidden"],"sources":["../../packages/beeq/src/components/page-title/scss/bq-page-title.scss?tag=bq-page-title&encapsulation=shadow","../../packages/beeq/src/components/page-title/bq-page-title.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Page title styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-page-title.variables';\n\n:host {\n @apply block;\n}\n","import { Component, Element, h, State } from '@stencil/core';\n\nimport { hasSlotContent } from '../../shared/utils';\n\n/**\n * The Page Title component is a versatile and essential element used to display the main title of a page or section within an application.\n *\n * @example How to use it\n * ```html\n * <bq-page-title>\n * <bq-button appearance=\"link\" slot=\"back\">\n * <bq-icon\n * color=\"text--primary\"\n * name=\"arrow-left\"\n * weight=\"bold\"\n * role=\"img\"\n * title=\"Navigate back to the previous page\"\n * ></bq-icon>\n * </bq-button>\n * Title\n * <div slot=\"sub-title\">Sub-title</div>\n * </bq-page-title>\n * ```\n *\n * @documentation https://storybook.beeq.design/?path=/docs/components-page-title--overview\n * @status stable\n *\n * @slot back - The back navigation button.\n * @slot - The main title content.\n * @slot sub-title - The sub-title content.\n * @slot suffix - The suffix content.\n *\n * @part base - The inner container `<div>`of element that contains the base page title component.\n * @part content - Defines the main container of the page title component, which includes the title and subtitle elements.\n * @part title-suffix - Defines the container that holds the title and any suffix content.\n * @part back - The container `<div>` page title element that acts as back slot container.\n * @part title - The `<h1>` element serves as a container for the page title content, to improve accessibility.\n * @part suffix - The `<div>` page title element that acts as suffix slot container.\n * @part sub-title - The `<div>` page title element that acts as sub-title slot container.\n *\n * @cssprop --paddingY - Padding top and bottom of the page title wrapper\n * @cssprop --subtitle-borderBlockEnd - Page title border end color\n * @cssprop --subtitle-fontWeight - Page title font weight for subtitle\n * @cssprop --subtitle-textColor - Page title color for sub-title\n * @cssprop --subtitle-textSize - Page title text size for subtitle\n * @cssprop --title-fontWeight - Page title font weight for title\n * @cssprop --title-lineHeight - Page title text line height\n * @cssprop --title-textColor - Page title color for title\n * @cssprop --title-textSize - Page title text size for title\n */\n@Component({\n tag: 'bq-page-title',\n styleUrl: './scss/bq-page-title.scss',\n shadow: true,\n})\nexport class BqPageTitle {\n // Own Properties\n // ====================\n\n private backNavigationElem: HTMLElement;\n private suffixElem: HTMLElement;\n private subTitleElem: HTMLElement;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqPageTitleElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private haveBackNavigation = false;\n @State() private hasSuffix = false;\n @State() private hasSubTitle = false;\n\n // Public Property API\n // ========================\n\n // Prop lifecycle events\n // =======================\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentDidLoad() {\n this.handleSlotChange();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleSlotChange = () => {\n this.haveBackNavigation = hasSlotContent(this.backNavigationElem, 'back');\n this.hasSuffix = hasSlotContent(this.suffixElem, 'suffix');\n this.hasSubTitle = hasSlotContent(this.subTitleElem, 'sub-title');\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <div class=\"flex gap-xs p-b-[--paddingY] [border-block-end:--subtitle-borderBlockEnd]\" part=\"base\">\n {/* Back navigation button */}\n <div\n class={{ flex: true, '!hidden': !this.haveBackNavigation }}\n ref={(divElem) => (this.backNavigationElem = divElem)}\n part=\"back\"\n >\n <slot name=\"back\" onSlotchange={this.handleSlotChange} />\n </div>\n <div class=\"flex flex-grow flex-col gap-xs\" part=\"content\">\n <div class=\"flex items-center gap-xs\" part=\"title-suffix\">\n {/* Title */}\n <h1\n class=\"title-font text-[length:--title-textSize] font-[--title-fontWeight] leading-[--title-lineHeight] text-[color:--title-textColor]\"\n part=\"title\"\n >\n <slot />\n </h1>\n {/* Suffix */}\n <div\n class={{ 'flex flex-grow gap-xs p-b-xs2 p-i-xs2': true, '!hidden': !this.hasSuffix }}\n ref={(divElem) => (this.suffixElem = divElem)}\n part=\"suffix\"\n >\n <slot name=\"suffix\" onSlotchange={this.handleSlotChange} />\n </div>\n </div>\n {/* Sub-title */}\n <div\n class={{\n 'title-font text-[length:--subtitle-textSize] font-[--subtitle-fontWeight] leading-[--title-lineHeight] text-[color:--subtitle-textColor]': true,\n hidden: !this.hasSubTitle,\n }}\n ref={(divElem) => (this.subTitleElem = divElem)}\n part=\"sub-title\"\n >\n <slot name=\"sub-title\" onSlotchange={this.handleSlotChange} />\n </div>\n </div>\n </div>\n );\n }\n}\n"],"mappings":";;;;iFAAA,MAAMA,EAAiB,i+oB,MCuDVC,EAAW,M,yBAIdC,mBACAC,WACAC,a,wBAWSC,mBAAqB,MACrBC,UAAY,MACZC,YAAc,MAgB/B,gBAAAC,GACEC,KAAKC,kB,CAkBCA,iBAAmB,KACzBD,KAAKJ,mBAAqBM,EAAeF,KAAKP,mBAAoB,QAClEO,KAAKH,UAAYK,EAAeF,KAAKN,WAAY,UACjDM,KAAKF,YAAcI,EAAeF,KAAKL,aAAc,YAAY,EAOnE,MAAAQ,GACE,OACEC,EAAA,OAAAC,IAAA,2CAAKC,MAAM,4EAA4EC,KAAK,QAE1FH,EAAA,OAAAC,IAAA,2CACEC,MAAO,CAAEE,KAAM,KAAM,WAAYR,KAAKJ,oBACtCa,IAAMC,GAAaV,KAAKP,mBAAqBiB,EAC7CH,KAAK,QAELH,EAAM,QAAAC,IAAA,2CAAAM,KAAK,OAAOC,aAAcZ,KAAKC,oBAEvCG,EAAA,OAAAC,IAAA,2CAAKC,MAAM,iCAAiCC,KAAK,WAC/CH,EAAA,OAAAC,IAAA,2CAAKC,MAAM,2BAA2BC,KAAK,gBAEzCH,EAAA,MAAAC,IAAA,2CACEC,MAAM,kIACNC,KAAK,SAELH,EAAA,QAAAC,IAAA,8CAGFD,EAAA,OAAAC,IAAA,2CACEC,MAAO,CAAE,wCAAyC,KAAM,WAAYN,KAAKH,WACzEY,IAAMC,GAAaV,KAAKN,WAAagB,EACrCH,KAAK,UAELH,EAAM,QAAAC,IAAA,2CAAAM,KAAK,SAASC,aAAcZ,KAAKC,qBAI3CG,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,2IAA4I,KAC5IO,QAASb,KAAKF,aAEhBW,IAAMC,GAAaV,KAAKL,aAAee,EACvCH,KAAK,aAELH,EAAA,QAAAC,IAAA,2CAAMM,KAAK,YAAYC,aAAcZ,KAAKC,qB","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqInputCss","BqInput","helperTextElem","inputElem","labelElem","prefixElem","suffixElem","debounceBqInput","fallbackInputId","internals","hasHelperText","hasLabel","hasPrefix","hasSuffix","hasValue","autocapitalize","autocomplete","autocorrect","autofocus","clearButtonLabel","debounceTime","disabled","disableClear","form","formValidationMessage","inputmode","max","maxlength","min","minlength","name","pattern","placeholder","readonly","required","step","type","validationStatus","value","handleValueChange","this","Array","isArray","some","val","length","setFormValue","join","isDefined","isNil","undefined","bqBlur","bqChange","bqClear","bqFocus","bqInput","componentWillLoad","componentDidLoad","handleSlotChange","formAssociatedCallback","toString","updateFormValidity","formResetCallback","handleClear","handleBlur","emit","el","handleFocus","handleInput","ev","cancel","isHTMLElement","target","Number","debounce","handleChange","handleClearClick","stopPropagation","focus","states","clear","trim","add","setValidity","valueMissing","hasSlotContent","render","h","key","class","part","htmlFor","ref","onSlotchange","spanElem","id","autoCapitalize","autoComplete","autoCorrect","inputMode","maxLength","minLength","readOnly","onBlur","onChange","onFocus","onInput","appearance","size","onBqClick","exportparts","divElem"],"sources":["../../packages/beeq/src/components/input/scss/bq-input.scss?tag=bq-input&encapsulation=shadow","../../packages/beeq/src/components/input/bq-input.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Input styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-input.variables';\n\n:host {\n @apply block is-full;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Label and Helper text */\n/* -------------------------------------------------------------------------- */\n\n.bq-input--label {\n @apply flex flex-grow items-center m-be-[--bq-input--label-margin-bottom];\n @apply text-[length:--bq-input--label-text-size] text-[color:--bq-input--label-text-color];\n}\n\n.bq-input--helper-text {\n @apply text-[length:--bq-input--helper-text-size] text-[color:--bq-input--helper-text-color] m-bs-[--bq-input--helper-margin-top];\n}\n\n.bq-input--helper-text.validation-error {\n @apply text-danger;\n}\n\n.bq-input--helper-text.validation-success {\n @apply text-success;\n}\n\n.bq-input--helper-text.validation-warning {\n @apply text-warning;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Input group control */\n/* -------------------------------------------------------------------------- */\n\n.bq-input--control {\n @apply flex items-center transition-[border-color,box-shadow] is-full;\n // Border\n @apply rounded-[--bq-input--border-radius] border-[length:--bq-input--border-width] border-[color:--bq-input--border-color];\n // Padding\n @apply pe-[--bq-input--padding-end] ps-[--bq-input--padding-start] p-b-[--bq-input--paddingY];\n // Text\n @apply text-[length:--bq-input--text-size] text-[color:--bq-input--text-color] placeholder:text-[color:--bq-input--text-placeholder-color];\n // Hover\n @apply [&:not(.disabled):not(:focus-within)]:hover:border-hover-brand;\n\n border-style: var(--bq-input--border-style);\n\n // Focus\n &:not(.disabled):focus-within {\n --bq-ring-width: 1px;\n --bq-ring-offset-width: 0;\n --bq-ring-color-focus: var(--bq-input--border-color-focus);\n\n @apply focus border-[color:--bq-input--border-color-focus];\n }\n\n // Enable clear button whenever the input group control is hovered or has focus\n &:not(.disabled):hover,\n &:not(.disabled):focus-within {\n .bq-input--control__clear {\n @apply inline-block;\n }\n }\n}\n\n.bq-input--control.disabled {\n @apply cursor-not-allowed opacity-60;\n}\n\n/* ------------------------------- Validation ------------------------------- */\n\n.bq-input--control.validation-error {\n @apply border-danger [&:not(.disabled):not(:focus-within)]:hover:border-hover-danger;\n\n &:not(.disabled):focus-within {\n --bq-ring-color-focus: theme(stroke.danger);\n\n @apply border-active-danger;\n }\n}\n\n.bq-input--control.validation-success {\n @apply border-success [&:not(.disabled):not(:focus-within)]:hover:border-hover-success;\n\n &:not(.disabled):focus-within {\n --bq-ring-color-focus: theme(stroke.success);\n\n @apply border-active-success;\n }\n}\n\n.bq-input--control.validation-warning {\n @apply border-warning [&:not(.disabled):not(:focus-within)]:hover:border-hover-warning;\n\n &:not(.disabled):focus-within {\n --bq-ring-color-focus: theme(stroke.warning);\n\n @apply border-active-warning;\n }\n}\n\n/* -------------------------------------------------------------------------- */\n/* Native HTML Input */\n/* -------------------------------------------------------------------------- */\n\n.bq-input--control__input {\n @apply flex-auto cursor-inherit appearance-none bg-inherit font-inherit text-[length:inherit] text-inherit;\n @apply border-none min-bs-[--bq-input--icon-size] min-is-0 p-b-0 p-i-0 m-b-0 m-i-0 focus:outline-none focus-visible:outline-none;\n\n box-shadow: none;\n font-weight: inherit;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Clear button */\n/* -------------------------------------------------------------------------- */\n\n.bq-input--control__clear::part(button) {\n // Since the clear button is inside the input group control,\n // we need to reset the focus ring styles\n --bq-ring-width: initial;\n --bq-ring-offset-width: initial;\n --bq-ring-color-focus: initial;\n\n @apply rounded-xs border-none bs-auto p-b-0 p-i-0;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Prefix and suffix */\n/* -------------------------------------------------------------------------- */\n\n.bq-input--control__prefix,\n.bq-input--control__suffix {\n @apply pointer-events-none flex items-center text-[color:--bq-input--text-color];\n}\n\n.bq-input--control__prefix {\n @apply me-[--bq-input--gap];\n}\n\n.bq-input--control__suffix {\n @apply ms-[--bq-input--gap];\n}\n\n/* -------------------------------------------------------------------------- */\n/* Slotted and internal icons */\n/* -------------------------------------------------------------------------- */\n\nbq-icon,\n::slotted(bq-icon) {\n --bq-icon--size: var(--bq-input--icon-size) !important;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Hide webkit clear button */\n/* -------------------------------------------------------------------------- */\n\n/* Remove clear controls from search input */\n\n.bq-input--control__input::-moz-search-cancel {\n @apply hidden appearance-none;\n}\n\n.bq-input--control__input::-webkit-search-decoration,\n.bq-input--control__input::-webkit-search-cancel-button,\n.bq-input--control__input::-webkit-search-results-button,\n.bq-input--control__input::-webkit-search-results-decoration {\n @apply hidden appearance-none;\n}\n\n/* Remove native control extra padding from input date and datetime */\n\n.bq-input--control__input::-webkit-datetime-edit-fields-wrapper,\n.bq-input--control__input::-webkit-datetime-edit,\n.bq-input--control__input::-webkit-datetime-edit-year-field,\n.bq-input--control__input::-webkit-datetime-edit-month-field,\n.bq-input--control__input::-webkit-datetime-edit-day-field,\n.bq-input--control__input::-webkit-datetime-edit-hour-field,\n.bq-input--control__input::-webkit-datetime-edit-minute-field,\n.bq-input--control__input::-webkit-datetime-edit-second-field,\n.bq-input--control__input::-webkit-datetime-edit-millisecond-field,\n.bq-input--control__input::-webkit-datetime-edit-meridiem-field {\n @apply p-b-0 p-i-0;\n}\n","import { AttachInternals, Component, Element, Event, h, Prop, State, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\nimport type { TInputType, TInputValidation, TInputValue } from './bq-input.types';\nimport { debounce, hasSlotContent, isDefined, isHTMLElement, isNil, TDebounce } from '../../shared/utils';\n\n/**\n * The Input component is a fundamental user interface element that allows users to input data by typing it into a text field.\n * It is commonly used in web and mobile applications for various purposes, such as collecting user information, search inputs, and login forms.\n *\n * @example How to use it\n * ```html\n * <bq-input name=\"username\" label=\"Username\" placeholder=\"Enter your username\"></bq-input>\n * ```\n *\n * @documentation https://www.beeq.design/3d466e231/p/980362-input\n * @status stable\n *\n * @dependency bq-button\n * @dependency bq-icon\n *\n * @attr {string} autocapitalize - Controls whether or not the input field should be capitalized and how.\n * @attr {string} autocomplete - Specifies whether or not the input field should have autocomplete enabled.\n * @attr {string} autocorrect - Controls whether or not the input field should have autocorrect enabled.\n * @attr {boolean} autofocus - If true, the input will be focused on component render.\n * @attr {string} clear-button-label - The clear button aria label.\n * @attr {number} debounce-time - The amount of time, in milliseconds, to wait before emitting the `bqInput` event after the input value changes.\n * @attr {boolean} disabled - Indicates whether the input is disabled or not.\n * @attr {boolean} disable-clear - If true, the clear button won't be displayed.\n * @attr {string} form - The ID of the form that the input field belongs to.\n * @attr {string} form-validation-message - The native form validation message (mandatory if `required` is set).\n * @attr {string} inputmode - The inputmode attribute specifies what kind of input mechanism would be most helpful for users entering content into the input field.\n * @attr {number | string} max - The maximum value that the input field can accept.\n * @attr {number} maxlength - The maximum number of characters that the input field can accept.\n * @attr {number | string} min - The minimum value that the input field can accept.\n * @attr {number} minlength - The minimum number of characters that the input field can accept.\n * @attr {string} name - The input field name.\n * @attr {string} pattern - Specifies a regular expression the form control's value should match.\n * @attr {string} placeholder - The input placeholder text value.\n * @attr {boolean} readonly - If true, the input field cannot be modified.\n * @attr {boolean} required - Indicates whether or not the input field is required to be filled out before submitting the form.\n * @attr {number | 'any'} step - A number that specifies the granularity that the value must adhere to.\n * @attr {string} type - The type attribute specifies the type of input field to display.\n * @attr {'none' | 'error' | 'warning' | 'success'} validation-status - The validation status of the input.\n * @attr {string | number | string[]} value - The input value, it can be used to reset the input to a previous value.\n *\n * @event bqBlur - Callback handler emitted when the input loses focus.\n * @event bqChange - Callback handler emitted when the input value has changed and the input loses focus.\n * @event bqClear - Callback handler emitted when the input value has been cleared.\n * @event bqFocus - Callback handler emitted when the input has received focus.\n * @event bqInput - Callback handler emitted when the input value changes.\n *\n * @slot label - The label slot container.\n * @slot prefix - The prefix slot container.\n * @slot suffix - The suffix slot container.\n * @slot helper-text - The helper text slot container.\n * @slot clear-icon - The clear icon slot container.\n *\n * @part base - The component's base wrapper.\n * @part button - The native HTML button used under the hood in the clear button.\n * @part clear-btn - The clear button.\n * @part control - The input control wrapper.\n * @part helper-text - The helper text slot container.\n * @part label - The label slot container.\n * @part input - The native HTML input element used under the hood.\n * @part prefix - The prefix slot container.\n * @part suffix - The suffix slot container.\n *\n * @cssprop --bq-input--background-color - Input background color\n * @cssprop --bq-input--border-color - Input border color\n * @cssprop --bq-input--border-color-focus - Input border color on focus\n * @cssprop --bq-input--border-radius - Input border radius\n * @cssprop --bq-input--border-width - Input border width\n * @cssprop --bq-input--border-style - Input border style\n * @cssprop --bq-input--gap - Gap between input content and prefix/suffix\n * @cssprop --bq-input--helper-margin-top - Helper text margin top\n * @cssprop --bq-input--helper-text-color - Helper text color\n * @cssprop --bq-input--helper-text-size - Helper text size\n * @cssprop --bq-input--icon-size - Icon size to use in prefix/suffix and clear button\n * @cssprop --bq-input--label-margin-bottom - Input label margin bottom\n * @cssprop --bq-input--label-text-color - Input label text color\n * @cssprop --bq-input--label-text-size - Input label text size\n * @cssprop --bq-input--padding-start - Input padding start\n * @cssprop --bq-input--padding-end - Input padding end\n * @cssprop --bq-input--paddingY - Input padding top and bottom\n * @cssprop --bq-input--text-color - Input text color\n * @cssprop --bq-input--text-size - Input text size\n * @cssprop --bq-input--text-placeholder-color - Input placeholder text color\n */\n@Component({\n tag: 'bq-input',\n styleUrl: './scss/bq-input.scss',\n formAssociated: true,\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class BqInput {\n // Own Properties\n // ====================\n\n private helperTextElem?: HTMLElement;\n private inputElem?: HTMLInputElement;\n private labelElem?: HTMLElement;\n private prefixElem?: HTMLElement;\n private suffixElem?: HTMLElement;\n\n private debounceBqInput: TDebounce<void>;\n private fallbackInputId = 'input';\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqInputElement;\n @AttachInternals() internals!: ElementInternals;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() hasHelperText = false;\n @State() hasLabel = false;\n @State() hasPrefix = false;\n @State() hasSuffix = false;\n @State() hasValue = false;\n\n // Public Property API\n // ========================\n\n /**\n * Controls whether or not the input field should be capitalized and how.\n * Possible values are 'off', 'none', 'on', 'sentences', 'words', and 'characters'.\n * See: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize\n */\n @Prop({ reflect: true }) autocapitalize: string = 'off';\n\n /**\n * Specifies whether or not the input field should have autocomplete enabled.\n * See: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values\n */\n @Prop({ reflect: true }) autocomplete: string = 'off';\n\n /**\n * Controls whether or not the input field should have autocorrect enabled.\n * Possible values are 'on' and 'off'.\n */\n @Prop({ reflect: true }) autocorrect: 'on' | 'off' = 'off';\n\n /** If true, the input will be focused on component render */\n @Prop({ reflect: true }) autofocus: boolean;\n\n /** The clear button aria label */\n @Prop({ reflect: true }) clearButtonLabel? = 'Clear value';\n\n /**\n * The amount of time, in milliseconds, to wait before emitting the `bqInput` event after the input value changes.\n * A value of 0 means no debouncing will occur.\n */\n @Prop({ reflect: true, mutable: true }) debounceTime? = 0;\n\n /**\n * Indicates whether the input is disabled or not.\n * If `true`, the input is disabled and cannot be interacted with.\n */\n @Prop({ mutable: true }) disabled?: boolean = false;\n\n /** If true, the clear button won't be displayed */\n @Prop({ reflect: true }) disableClear? = false;\n\n /** The ID of the form that the input field belongs to. */\n @Prop({ reflect: true }) form?: string;\n\n /** The native form validation message (mandatory if `required` is set) */\n @Prop({ mutable: true }) formValidationMessage?: string;\n\n /**\n * The inputmode attribute specifies what kind of input mechanism would be most helpful for users entering content into the input field.\n * This allows a browser to display an appropriate virtual keyboard while editing.\n * Possible values are 'none', 'text', 'decimal', 'numeric', 'tel', 'search', 'email', 'url', and 'date'.\n */\n @Prop() inputmode?: string;\n\n /**\n * The maximum value that the input field can accept.\n * Only applies to date and number input types.\n */\n @Prop({ reflect: true }) max?: number | string;\n\n /** The maximum number of characters that the input field can accept. */\n @Prop({ reflect: true }) maxlength: number;\n\n /**\n * The minimum value that the input field can accept.\n * Only applies to date and number input types.\n */\n @Prop({ reflect: true }) min?: number | string;\n\n /** The minimum number of characters that the input field can accept. */\n @Prop({ reflect: true }) minlength: number;\n\n /** The input field name. */\n @Prop({ reflect: true }) name!: string;\n\n /**\n * Specifies a regular expression the form control's value should match.\n * See: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern\n */\n @Prop({ reflect: true }) pattern?: string;\n\n /** The input placeholder text value */\n @Prop({ reflect: true }) placeholder?: string;\n\n /** If true, the input field cannot be modified. */\n @Prop({ reflect: true }) readonly?: boolean;\n\n /** Indicates whether or not the input field is required to be filled out before submitting the form. */\n @Prop({ reflect: true }) required?: boolean;\n\n /**\n * A number that specifies the granularity that the value must adhere to.\n * Valid for date, month, week, time, datetime-local, number, and range.\n * See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#step\n */\n @Prop({ reflect: true }) step: number | 'any';\n\n /**\n * The type attribute specifies the type of input field to display.\n * Possible values are 'text', 'password', 'email', 'number', 'tel', 'search', 'url', and more.\n * See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#input_types\n */\n @Prop({ reflect: true }) type: TInputType = 'text';\n\n /**\n * The validation status of the input.\n *\n * @remarks\n * This property is used to indicate the validation status of the input. It can be set to one of the following values:\n * - `'none'`: No validation status is set.\n * - `'error'`: The input has a validation error.\n * - `'warning'`: The input has a validation warning.\n * - `'success'`: The input has passed validation.\n */\n @Prop({ reflect: true }) validationStatus: TInputValidation = 'none';\n\n /** The input value, it can be used to reset the input to a previous value */\n @Prop({ reflect: true, mutable: true }) value: TInputValue;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('value')\n handleValueChange() {\n const { internals, value } = this;\n if (Array.isArray(value)) {\n this.hasValue = value.some((val) => val.length > 0);\n this.internals.setFormValue(value.join(','));\n return;\n }\n\n this.hasValue = isDefined(value);\n internals.setFormValue(!isNil(value) ? `${value}` : undefined);\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler emitted when the input loses focus */\n @Event() bqBlur!: EventEmitter<HTMLBqInputElement>;\n\n /**\n * Callback handler emitted when the input value has changed and the input loses focus.\n * This handler is called whenever the user finishes typing or pasting text into the input field and then clicks outside of the input field.\n */\n @Event() bqChange!: EventEmitter<{ value: string | number | string[]; el: HTMLBqInputElement }>;\n\n /** Callback handler emitted when the input value has been cleared */\n @Event() bqClear!: EventEmitter<HTMLBqInputElement>;\n\n /** Callback handler emitted when the input has received focus */\n @Event() bqFocus!: EventEmitter<HTMLBqInputElement>;\n\n /**\n * Callback handler emitted when the input value changes.\n * This handler is called whenever the user types or pastes text into the input field.\n */\n @Event() bqInput!: EventEmitter<{ value: string | number | string[]; el: HTMLBqInputElement }>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.handleValueChange();\n }\n\n componentDidLoad() {\n this.handleSlotChange();\n }\n\n formAssociatedCallback() {\n this.setFormValue(this.value?.toString());\n this.updateFormValidity();\n }\n\n formResetCallback() {\n if (isNil(this.value)) return;\n\n this.handleClear();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleBlur = () => {\n if (this.disabled) return;\n\n this.bqBlur.emit(this.el);\n };\n\n private handleFocus = () => {\n if (this.disabled) return;\n\n this.bqFocus.emit(this.el);\n };\n\n private handleInput = (ev: Event) => {\n if (this.disabled) return;\n\n this.debounceBqInput?.cancel();\n\n if (!isHTMLElement(ev.target, 'input')) return;\n this.value = this.type === 'number' ? Number(ev.target.value) : ev.target.value;\n\n this.debounceBqInput = debounce(() => {\n this.bqInput.emit({ value: this.value, el: this.el });\n }, this.debounceTime);\n this.debounceBqInput();\n };\n\n private handleChange = (ev: Event) => {\n if (this.disabled) return;\n\n if (!isHTMLElement(ev.target, 'input')) return;\n this.value = this.type === 'number' ? Number(ev.target.value) : ev.target.value;\n // Update form value and validity\n this.setFormValue(`${this.value}`);\n this.updateFormValidity();\n\n this.bqChange.emit({ value: this.value, el: this.el });\n };\n\n private handleClear = () => {\n if (this.disabled) return;\n\n const { inputElem, setFormValue, updateFormValidity } = this;\n // Clear input element value\n inputElem.value = '';\n this.value = inputElem.value;\n // Set form value to empty string abd update validity\n setFormValue(this.value);\n updateFormValidity();\n };\n\n private handleClearClick = (ev: CustomEvent) => {\n ev.stopPropagation();\n this.handleClear();\n\n const { bqClear, bqChange, bqInput, el, inputElem } = this;\n // Emit events\n bqClear.emit(el);\n bqInput.emit({ value: this.value, el });\n bqChange.emit({ value: this.value, el });\n // Refocus input element\n inputElem.focus();\n };\n\n private setFormValue = (value?: string) => {\n this.internals.setFormValue(!isNil(value) ? `${value}` : undefined);\n };\n\n private updateFormValidity = () => {\n const { formValidationMessage, internals, required, value, inputElem } = this;\n\n // Clear the validity state\n internals?.states.clear();\n\n if (required && (!value || value.toString().trim() === '')) {\n // Set validity state to invalid\n internals?.states.add('invalid');\n internals?.setValidity({ valueMissing: true }, formValidationMessage, inputElem);\n return;\n }\n\n // Set validity state to valid if textarea has value or is not required\n internals?.states.add('valid');\n internals?.setValidity({});\n };\n\n private handleSlotChange = () => {\n this.hasLabel = hasSlotContent(this.labelElem);\n this.hasPrefix = hasSlotContent(this.prefixElem);\n this.hasSuffix = hasSlotContent(this.suffixElem);\n this.hasHelperText = hasSlotContent(this.helperTextElem);\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <div class=\"bq-input\" part=\"base\">\n {/* Label */}\n <label\n class={{ 'bq-input--label': true, '!hidden': !this.hasLabel }}\n aria-label={this.name || this.fallbackInputId}\n htmlFor={this.name || this.fallbackInputId}\n ref={(labelElem) => (this.labelElem = labelElem)}\n part=\"label\"\n >\n <slot name=\"label\" onSlotchange={this.handleSlotChange} />\n </label>\n {/* Input control group */}\n <div\n class={{\n 'bq-input--control': true,\n [`validation-${this.validationStatus}`]: true,\n disabled: this.disabled,\n }}\n part=\"control\"\n >\n {/* Prefix */}\n <span\n class={{ 'bq-input--control__prefix': true, '!hidden': !this.hasPrefix }}\n ref={(spanElem) => (this.prefixElem = spanElem)}\n part=\"prefix\"\n >\n <slot name=\"prefix\" onSlotchange={this.handleSlotChange} />\n </span>\n {/* HTML Input */}\n <input\n id={this.name || this.fallbackInputId}\n class=\"bq-input--control__input\"\n aria-disabled={this.disabled ? 'true' : 'false'}\n autoCapitalize={this.autocapitalize}\n autoComplete={this.autocomplete}\n autoCorrect={this.autocorrect}\n disabled={this.disabled}\n form={this.form}\n inputMode={this.inputmode}\n max={this.max}\n maxLength={this.maxlength}\n min={this.min}\n minLength={this.minlength}\n name={this.name}\n pattern={this.pattern}\n placeholder={this.placeholder}\n ref={(inputElem) => (this.inputElem = inputElem)}\n readOnly={this.readonly}\n required={this.required}\n step={this.step}\n type={this.type}\n value={this.value}\n part=\"input\"\n // Events\n onBlur={this.handleBlur}\n onChange={this.handleChange}\n onFocus={this.handleFocus}\n onInput={this.handleInput}\n />\n {/* Clear Button */}\n {this.hasValue && !this.disabled && !this.disableClear && (\n // The clear button will be visible as long as the input has a value\n // and the parent group is hovered or has focus-within\n <bq-button\n class=\"bq-input--control__clear ms-[--bq-input--gap] hidden\"\n appearance=\"text\"\n aria-label={this.clearButtonLabel}\n size=\"small\"\n onBqClick={this.handleClearClick}\n part=\"clear-btn\"\n exportparts=\"button\"\n >\n <slot name=\"clear-icon\">\n <bq-icon name=\"x-circle\" class=\"flex\" />\n </slot>\n </bq-button>\n )}\n {/* Suffix */}\n <span\n class={{ 'bq-input--control__suffix': true, '!hidden': !this.hasSuffix }}\n ref={(spanElem) => (this.suffixElem = spanElem)}\n part=\"suffix\"\n >\n <slot name=\"suffix\" onSlotchange={this.handleSlotChange} />\n </span>\n </div>\n {/* Helper text */}\n <div\n class={{\n [`bq-input--helper-text validation-${this.validationStatus}`]: true,\n '!hidden': !this.hasHelperText,\n }}\n ref={(divElem) => (this.helperTextElem = divElem)}\n part=\"helper-text\"\n >\n <slot name=\"helper-text\" onSlotchange={this.handleSlotChange} />\n </div>\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}