@beeq/core 1.8.0-beta.14 → 1.8.0-beta.16

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 (587) 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/index.esm.js +1 -1
  4. package/dist/beeq/{p-350cd07e.entry.js → p-026fad0d.entry.js} +2 -2
  5. package/dist/beeq/p-026fad0d.entry.js.map +1 -0
  6. package/dist/beeq/{p-457ab863.entry.js → p-09323635.entry.js} +2 -2
  7. package/dist/beeq/p-09323635.entry.js.map +1 -0
  8. package/dist/beeq/p-0c0bd129.entry.js +6 -0
  9. package/dist/beeq/p-0c0bd129.entry.js.map +1 -0
  10. package/dist/beeq/{p-0180a237.entry.js → p-0c12aa01.entry.js} +2 -2
  11. package/dist/beeq/p-0c12aa01.entry.js.map +1 -0
  12. package/dist/beeq/{p-be234206.entry.js → p-0f72dbb6.entry.js} +2 -2
  13. package/dist/beeq/p-0f72dbb6.entry.js.map +1 -0
  14. package/dist/beeq/{p-96793709.entry.js → p-19b7bbe0.entry.js} +2 -2
  15. package/dist/beeq/p-19b7bbe0.entry.js.map +1 -0
  16. package/dist/beeq/{p-a89bfbd8.entry.js → p-1b0cfcd6.entry.js} +2 -2
  17. package/dist/beeq/p-1b0cfcd6.entry.js.map +1 -0
  18. package/dist/beeq/{p-0711a447.entry.js → p-1cdea079.entry.js} +2 -2
  19. package/dist/beeq/p-1cdea079.entry.js.map +1 -0
  20. package/dist/beeq/{p-99668b08.entry.js → p-20d91acf.entry.js} +2 -2
  21. package/dist/beeq/p-20d91acf.entry.js.map +1 -0
  22. package/dist/beeq/{p-854e2114.entry.js → p-29d9487c.entry.js} +2 -2
  23. package/dist/beeq/p-29d9487c.entry.js.map +1 -0
  24. package/dist/beeq/p-2c566eb0.entry.js +6 -0
  25. package/dist/beeq/p-2c566eb0.entry.js.map +1 -0
  26. package/dist/beeq/{p-d2c20a92.entry.js → p-2ef4ed54.entry.js} +2 -2
  27. package/dist/beeq/p-2ef4ed54.entry.js.map +1 -0
  28. package/dist/beeq/{p-561ff182.js → p-3c472097.js} +2 -2
  29. package/dist/beeq/{p-bdf2ea24.entry.js → p-43dc9906.entry.js} +2 -2
  30. package/dist/beeq/p-43dc9906.entry.js.map +1 -0
  31. package/dist/beeq/{p-b9171e19.entry.js → p-4c66663c.entry.js} +2 -2
  32. package/dist/beeq/p-4c66663c.entry.js.map +1 -0
  33. package/dist/beeq/{p-81b6556f.entry.js → p-4d6a9646.entry.js} +2 -2
  34. package/dist/beeq/p-4d6a9646.entry.js.map +1 -0
  35. package/dist/beeq/{p-0ff234ec.entry.js → p-52603411.entry.js} +2 -2
  36. package/dist/beeq/p-52603411.entry.js.map +1 -0
  37. package/dist/beeq/{p-c8f639ab.entry.js → p-56c43424.entry.js} +2 -2
  38. package/dist/beeq/p-56c43424.entry.js.map +1 -0
  39. package/dist/beeq/{p-5b5f9a2a.entry.js → p-5d6fc48a.entry.js} +2 -2
  40. package/dist/beeq/p-5d6fc48a.entry.js.map +1 -0
  41. package/dist/beeq/p-60094726.js +7 -0
  42. package/dist/beeq/p-60094726.js.map +1 -0
  43. package/dist/beeq/p-6079f9b2.entry.js +6 -0
  44. package/dist/beeq/p-6079f9b2.entry.js.map +1 -0
  45. package/dist/beeq/{p-6482a62d.entry.js → p-6a0b0106.entry.js} +2 -2
  46. package/dist/beeq/p-6a0b0106.entry.js.map +1 -0
  47. package/dist/beeq/{p-382eea5f.entry.js → p-73ef1309.entry.js} +2 -2
  48. package/dist/beeq/p-73ef1309.entry.js.map +1 -0
  49. package/dist/beeq/{p-cc83682b.entry.js → p-75cc6789.entry.js} +2 -2
  50. package/dist/beeq/p-75cc6789.entry.js.map +1 -0
  51. package/dist/beeq/{p-42d22a31.entry.js → p-7a719a9b.entry.js} +2 -2
  52. package/dist/beeq/p-7a719a9b.entry.js.map +1 -0
  53. package/dist/beeq/{p-a0d6207d.entry.js → p-7f124d61.entry.js} +2 -2
  54. package/dist/beeq/p-7f124d61.entry.js.map +1 -0
  55. package/dist/beeq/{p-def8acd7.entry.js → p-8ca2588f.entry.js} +2 -2
  56. package/dist/beeq/p-8ca2588f.entry.js.map +1 -0
  57. package/dist/beeq/{p-8b595d1f.entry.js → p-921fa1ea.entry.js} +2 -2
  58. package/dist/beeq/p-921fa1ea.entry.js.map +1 -0
  59. package/dist/beeq/p-99b5d671.entry.js +6 -0
  60. package/dist/beeq/p-99b5d671.entry.js.map +1 -0
  61. package/dist/beeq/{p-47d41233.entry.js → p-a5e01629.entry.js} +2 -2
  62. package/dist/beeq/p-a5e01629.entry.js.map +1 -0
  63. package/dist/beeq/{p-5f00f1f5.entry.js → p-adec3d5b.entry.js} +2 -2
  64. package/dist/beeq/{p-5f00f1f5.entry.js.map → p-adec3d5b.entry.js.map} +1 -1
  65. package/dist/beeq/{p-1d67af77.entry.js → p-b83f174c.entry.js} +2 -2
  66. package/dist/beeq/p-b83f174c.entry.js.map +1 -0
  67. package/dist/beeq/{p-4f47130c.entry.js → p-c09dac58.entry.js} +2 -2
  68. package/dist/beeq/p-c09dac58.entry.js.map +1 -0
  69. package/dist/beeq/p-c65d21e2.entry.js +6 -0
  70. package/dist/beeq/p-c65d21e2.entry.js.map +1 -0
  71. package/dist/beeq/{p-eab2d27c.entry.js → p-c70c6b00.entry.js} +2 -2
  72. package/dist/beeq/p-c70c6b00.entry.js.map +1 -0
  73. package/dist/beeq/{p-995bfd58.js → p-c9ed66d9.js} +2 -2
  74. package/dist/beeq/{p-a6094ed8.entry.js → p-d8221b88.entry.js} +2 -2
  75. package/dist/beeq/p-d8221b88.entry.js.map +1 -0
  76. package/dist/beeq/{p-439583bc.entry.js → p-d8a257b7.entry.js} +2 -2
  77. package/dist/beeq/p-d8a257b7.entry.js.map +1 -0
  78. package/dist/beeq/p-dc544089.entry.js +6 -0
  79. package/dist/beeq/p-dc544089.entry.js.map +1 -0
  80. package/dist/beeq/{p-70ae504a.entry.js → p-e056c02a.entry.js} +2 -2
  81. package/dist/beeq/p-e056c02a.entry.js.map +1 -0
  82. package/dist/beeq/{p-8e9f0bf3.entry.js → p-e68dcd3d.entry.js} +2 -2
  83. package/dist/beeq/p-e68dcd3d.entry.js.map +1 -0
  84. package/dist/beeq/{p-d7507599.entry.js → p-eb662058.entry.js} +2 -2
  85. package/dist/beeq/p-eb662058.entry.js.map +1 -0
  86. package/dist/beeq.html-custom-data.json +2029 -0
  87. package/dist/cjs/{assetsPath-557e47c5.js → assetsPath-0ec85a1a.js} +2 -2
  88. package/dist/cjs/{assetsPath-557e47c5.js.map → assetsPath-0ec85a1a.js.map} +1 -1
  89. package/dist/cjs/beeq.cjs.js +3 -3
  90. package/dist/cjs/beeq.cjs.js.map +1 -1
  91. package/dist/cjs/bq-accordion-group.cjs.entry.js +3 -3
  92. package/dist/cjs/bq-accordion-group.cjs.entry.js.map +1 -1
  93. package/dist/cjs/bq-accordion.cjs.entry.js +5 -5
  94. package/dist/cjs/bq-accordion.cjs.entry.js.map +1 -1
  95. package/dist/cjs/bq-alert.cjs.entry.js +6 -6
  96. package/dist/cjs/bq-alert.cjs.entry.js.map +1 -1
  97. package/dist/cjs/bq-avatar.cjs.entry.js +5 -5
  98. package/dist/cjs/bq-avatar.cjs.entry.js.map +1 -1
  99. package/dist/cjs/bq-badge.cjs.entry.js +3 -3
  100. package/dist/cjs/bq-badge.cjs.entry.js.map +1 -1
  101. package/dist/cjs/bq-breadcrumb-item.cjs.entry.js +4 -11
  102. package/dist/cjs/bq-breadcrumb-item.cjs.entry.js.map +1 -1
  103. package/dist/cjs/bq-breadcrumb.cjs.entry.js +20 -38
  104. package/dist/cjs/bq-breadcrumb.cjs.entry.js.map +1 -1
  105. package/dist/cjs/bq-button_2.cjs.entry.js +7 -7
  106. package/dist/cjs/bq-button_2.cjs.entry.js.map +1 -1
  107. package/dist/cjs/bq-card.cjs.entry.js +4 -4
  108. package/dist/cjs/bq-card.cjs.entry.js.map +1 -1
  109. package/dist/cjs/bq-checkbox.cjs.entry.js +9 -11
  110. package/dist/cjs/bq-checkbox.cjs.entry.js.map +1 -1
  111. package/dist/cjs/bq-date-picker.cjs.entry.js +35 -16
  112. package/dist/cjs/bq-date-picker.cjs.entry.js.map +1 -1
  113. package/dist/cjs/bq-dialog.cjs.entry.js +6 -6
  114. package/dist/cjs/bq-dialog.cjs.entry.js.map +1 -1
  115. package/dist/cjs/bq-divider.cjs.entry.js +5 -5
  116. package/dist/cjs/bq-divider.cjs.entry.js.map +1 -1
  117. package/dist/cjs/bq-drawer.cjs.entry.js +6 -6
  118. package/dist/cjs/bq-drawer.cjs.entry.js.map +1 -1
  119. package/dist/cjs/bq-dropdown_2.cjs.entry.js +5 -5
  120. package/dist/cjs/bq-dropdown_2.cjs.entry.js.map +1 -1
  121. package/dist/cjs/bq-empty-state.cjs.entry.js +5 -5
  122. package/dist/cjs/bq-empty-state.cjs.entry.js.map +1 -1
  123. package/dist/cjs/bq-input.cjs.entry.js +42 -17
  124. package/dist/cjs/bq-input.cjs.entry.js.map +1 -1
  125. package/dist/cjs/bq-notification.cjs.entry.js +4 -4
  126. package/dist/cjs/bq-notification.cjs.entry.js.map +1 -1
  127. package/dist/cjs/bq-option-group.cjs.entry.js +2 -2
  128. package/dist/cjs/bq-option-group.cjs.entry.js.map +1 -1
  129. package/dist/cjs/bq-option-list_2.cjs.entry.js +7 -7
  130. package/dist/cjs/bq-option-list_2.cjs.entry.js.map +1 -1
  131. package/dist/cjs/bq-option.cjs.entry.js +5 -5
  132. package/dist/cjs/bq-option.cjs.entry.js.map +1 -1
  133. package/dist/cjs/bq-page-title.cjs.entry.js +3 -3
  134. package/dist/cjs/bq-page-title.cjs.entry.js.map +1 -1
  135. package/dist/cjs/bq-progress.cjs.entry.js +9 -9
  136. package/dist/cjs/bq-progress.cjs.entry.js.map +1 -1
  137. package/dist/cjs/bq-radio-group.cjs.entry.js +68 -25
  138. package/dist/cjs/bq-radio-group.cjs.entry.js.map +1 -1
  139. package/dist/cjs/bq-radio.cjs.entry.js +10 -4
  140. package/dist/cjs/bq-radio.cjs.entry.js.map +1 -1
  141. package/dist/cjs/bq-select.cjs.entry.js +7 -7
  142. package/dist/cjs/bq-select.cjs.entry.js.map +1 -1
  143. package/dist/cjs/bq-side-menu-item.cjs.entry.js +2 -2
  144. package/dist/cjs/bq-side-menu-item.cjs.entry.js.map +1 -1
  145. package/dist/cjs/bq-side-menu.cjs.entry.js +3 -3
  146. package/dist/cjs/bq-side-menu.cjs.entry.js.map +1 -1
  147. package/dist/cjs/bq-slider.cjs.entry.js +21 -7
  148. package/dist/cjs/bq-slider.cjs.entry.js.map +1 -1
  149. package/dist/cjs/bq-spinner.cjs.entry.js +5 -5
  150. package/dist/cjs/bq-spinner.cjs.entry.js.map +1 -1
  151. package/dist/cjs/bq-status.cjs.entry.js +2 -2
  152. package/dist/cjs/bq-status.cjs.entry.js.map +1 -1
  153. package/dist/cjs/bq-step-item.cjs.entry.js +5 -5
  154. package/dist/cjs/bq-step-item.cjs.entry.js.map +1 -1
  155. package/dist/cjs/bq-steps.cjs.entry.js +2 -2
  156. package/dist/cjs/bq-steps.cjs.entry.js.map +1 -1
  157. package/dist/cjs/bq-switch.cjs.entry.js +56 -4
  158. package/dist/cjs/bq-switch.cjs.entry.js.map +1 -1
  159. package/dist/cjs/bq-tab-group.cjs.entry.js +9 -9
  160. package/dist/cjs/bq-tab-group.cjs.entry.js.map +1 -1
  161. package/dist/cjs/bq-tab.cjs.entry.js +6 -6
  162. package/dist/cjs/bq-tab.cjs.entry.js.map +1 -1
  163. package/dist/cjs/bq-textarea.cjs.entry.js +62 -13
  164. package/dist/cjs/bq-textarea.cjs.entry.js.map +1 -1
  165. package/dist/cjs/bq-toast.cjs.entry.js +2 -2
  166. package/dist/cjs/bq-toast.cjs.entry.js.map +1 -1
  167. package/dist/cjs/bq-tooltip.cjs.entry.js +2 -2
  168. package/dist/cjs/bq-tooltip.cjs.entry.js.map +1 -1
  169. package/dist/cjs/{index-9cbab9ab.js → index-c4edfa07.js} +787 -553
  170. package/dist/cjs/index-c4edfa07.js.map +1 -0
  171. package/dist/cjs/index.cjs.js +3 -3
  172. package/dist/cjs/{isDefined-7235b5cd.js → isDefined-e538d669.js} +2 -2
  173. package/dist/cjs/{isDefined-7235b5cd.js.map → isDefined-e538d669.js.map} +1 -1
  174. package/dist/cjs/loader.cjs.js +2 -2
  175. package/dist/collection/collection-manifest.json +1 -1
  176. package/dist/collection/components/accordion/bq-accordion.js +117 -18
  177. package/dist/collection/components/accordion/bq-accordion.js.map +1 -1
  178. package/dist/collection/components/accordion-group/bq-accordion-group.js +36 -1
  179. package/dist/collection/components/accordion-group/bq-accordion-group.js.map +1 -1
  180. package/dist/collection/components/accordion-group/scss/bq-accordion-group.css +1 -1
  181. package/dist/collection/components/alert/bq-alert.js +91 -9
  182. package/dist/collection/components/alert/bq-alert.js.map +1 -1
  183. package/dist/collection/components/alert/scss/bq-alert.css +1 -1
  184. package/dist/collection/components/avatar/bq-avatar.js +66 -4
  185. package/dist/collection/components/avatar/bq-avatar.js.map +1 -1
  186. package/dist/collection/components/avatar/scss/bq-avatar.css +1 -1
  187. package/dist/collection/components/badge/bq-badge.js +36 -2
  188. package/dist/collection/components/badge/bq-badge.js.map +1 -1
  189. package/dist/collection/components/breadcrumb/bq-breadcrumb.js +43 -119
  190. package/dist/collection/components/breadcrumb/bq-breadcrumb.js.map +1 -1
  191. package/dist/collection/components/breadcrumb/scss/bq-breadcrumb.css +1 -1
  192. package/dist/collection/components/breadcrumb-item/bq-breadcrumb-item.js +50 -46
  193. package/dist/collection/components/breadcrumb-item/bq-breadcrumb-item.js.map +1 -1
  194. package/dist/collection/components/breadcrumb-item/scss/bq-breadcrumb-item.css +1 -1
  195. package/dist/collection/components/button/bq-button.js +77 -2
  196. package/dist/collection/components/button/bq-button.js.map +1 -1
  197. package/dist/collection/components/button/scss/bq-button.css +1 -1
  198. package/dist/collection/components/card/bq-card.js +37 -3
  199. package/dist/collection/components/card/bq-card.js.map +1 -1
  200. package/dist/collection/components/card/scss/bq-card.css +1 -1
  201. package/dist/collection/components/checkbox/bq-checkbox.js +62 -9
  202. package/dist/collection/components/checkbox/bq-checkbox.js.map +1 -1
  203. package/dist/collection/components/checkbox/scss/bq-checkbox.css +1 -1
  204. package/dist/collection/components/date-picker/bq-date-picker.js +190 -43
  205. package/dist/collection/components/date-picker/bq-date-picker.js.map +1 -1
  206. package/dist/collection/components/date-picker/scss/bq-date-picker.css +1 -1
  207. package/dist/collection/components/dialog/bq-dialog.js +96 -12
  208. package/dist/collection/components/dialog/bq-dialog.js.map +1 -1
  209. package/dist/collection/components/dialog/scss/bq-dialog.css +1 -1
  210. package/dist/collection/components/divider/bq-divider.js +53 -8
  211. package/dist/collection/components/divider/bq-divider.js.map +1 -1
  212. package/dist/collection/components/drawer/bq-drawer.js +75 -13
  213. package/dist/collection/components/drawer/bq-drawer.js.map +1 -1
  214. package/dist/collection/components/drawer/scss/bq-drawer.css +1 -1
  215. package/dist/collection/components/dropdown/bq-dropdown.js +70 -4
  216. package/dist/collection/components/dropdown/bq-dropdown.js.map +1 -1
  217. package/dist/collection/components/dropdown/scss/bq-dropdown.css +1 -1
  218. package/dist/collection/components/empty-state/bq-empty-state.js +24 -4
  219. package/dist/collection/components/empty-state/bq-empty-state.js.map +1 -1
  220. package/dist/collection/components/icon/bq-icon.js +34 -2
  221. package/dist/collection/components/icon/bq-icon.js.map +1 -1
  222. package/dist/collection/components/input/bq-input.js +176 -14
  223. package/dist/collection/components/input/bq-input.js.map +1 -1
  224. package/dist/collection/components/input/scss/bq-input.css +1 -1
  225. package/dist/collection/components/notification/bq-notification.js +73 -7
  226. package/dist/collection/components/notification/bq-notification.js.map +1 -1
  227. package/dist/collection/components/notification/scss/bq-notification.css +1 -1
  228. package/dist/collection/components/option/bq-option.js +52 -4
  229. package/dist/collection/components/option/bq-option.js.map +1 -1
  230. package/dist/collection/components/option-group/bq-option-group.js +32 -1
  231. package/dist/collection/components/option-group/bq-option-group.js.map +1 -1
  232. package/dist/collection/components/option-list/bq-option-list.js +24 -1
  233. package/dist/collection/components/option-list/bq-option-list.js.map +1 -1
  234. package/dist/collection/components/option-list/scss/bq-option-list.css +1 -1
  235. package/dist/collection/components/page-title/bq-page-title.js +39 -2
  236. package/dist/collection/components/page-title/bq-page-title.js.map +1 -1
  237. package/dist/collection/components/panel/bq-panel.js +44 -1
  238. package/dist/collection/components/panel/bq-panel.js.map +1 -1
  239. package/dist/collection/components/panel/scss/bq-panel.css +1 -1
  240. package/dist/collection/components/progress/bq-progress.js +105 -67
  241. package/dist/collection/components/progress/bq-progress.js.map +1 -1
  242. package/dist/collection/components/radio/bq-radio.js +76 -2
  243. package/dist/collection/components/radio/bq-radio.js.map +1 -1
  244. package/dist/collection/components/radio/scss/bq-radio.css +1 -1
  245. package/dist/collection/components/radio-group/bq-radio-group.js +187 -57
  246. package/dist/collection/components/radio-group/bq-radio-group.js.map +1 -1
  247. package/dist/collection/components/radio-group/scss/bq-radio-group.css +1 -1
  248. package/dist/collection/components/select/bq-select.js +133 -4
  249. package/dist/collection/components/select/bq-select.js.map +1 -1
  250. package/dist/collection/components/select/scss/bq-select.css +1 -1
  251. package/dist/collection/components/side-menu/bq-side-menu.js +53 -2
  252. package/dist/collection/components/side-menu/bq-side-menu.js.map +1 -1
  253. package/dist/collection/components/side-menu-item/bq-side-menu-item.js +43 -0
  254. package/dist/collection/components/side-menu-item/bq-side-menu-item.js.map +1 -1
  255. package/dist/collection/components/side-menu-item/scss/bq-side-menu-item.css +1 -1
  256. package/dist/collection/components/slider/bq-slider.js +88 -6
  257. package/dist/collection/components/slider/bq-slider.js.map +1 -1
  258. package/dist/collection/components/spinner/bq-spinner.js +36 -4
  259. package/dist/collection/components/spinner/bq-spinner.js.map +1 -1
  260. package/dist/collection/components/status/bq-status.js +24 -4
  261. package/dist/collection/components/status/bq-status.js.map +1 -1
  262. package/dist/collection/components/step-item/bq-step-item.js +42 -4
  263. package/dist/collection/components/step-item/bq-step-item.js.map +1 -1
  264. package/dist/collection/components/steps/bq-steps.js +34 -1
  265. package/dist/collection/components/steps/bq-steps.js.map +1 -1
  266. package/dist/collection/components/switch/bq-switch.js +124 -3
  267. package/dist/collection/components/switch/bq-switch.js.map +1 -1
  268. package/dist/collection/components/switch/scss/bq-switch.css +1 -1
  269. package/dist/collection/components/tab/bq-tab.js +100 -41
  270. package/dist/collection/components/tab/bq-tab.js.map +1 -1
  271. package/dist/collection/components/tab-group/bq-tab-group.js +84 -46
  272. package/dist/collection/components/tab-group/bq-tab-group.js.map +1 -1
  273. package/dist/collection/components/tab-group/scss/bq-tab-group.css +1 -1
  274. package/dist/collection/components/tag/bq-tag.js +70 -3
  275. package/dist/collection/components/tag/bq-tag.js.map +1 -1
  276. package/dist/collection/components/tag/scss/bq-tag.css +1 -1
  277. package/dist/collection/components/textarea/bq-textarea.js +176 -11
  278. package/dist/collection/components/textarea/bq-textarea.js.map +1 -1
  279. package/dist/collection/components/textarea/scss/bq-textarea.css +1 -1
  280. package/dist/collection/components/toast/bq-toast.js +60 -3
  281. package/dist/collection/components/toast/bq-toast.js.map +1 -1
  282. package/dist/collection/components/tooltip/bq-tooltip.js +55 -1
  283. package/dist/collection/components/tooltip/bq-tooltip.js.map +1 -1
  284. package/dist/collection/global/scripts/global.js.map +1 -1
  285. package/dist/collection/tools/generate-custom-elements-json.js +8 -7
  286. package/dist/collection/tools/generate-custom-elements-json.js.map +1 -1
  287. package/dist/components/bq-accordion-group.js +1 -1
  288. package/dist/components/bq-accordion-group.js.map +1 -1
  289. package/dist/components/bq-accordion.js +1 -1
  290. package/dist/components/bq-accordion.js.map +1 -1
  291. package/dist/components/bq-alert.js +1 -1
  292. package/dist/components/bq-alert.js.map +1 -1
  293. package/dist/components/bq-avatar.js +1 -1
  294. package/dist/components/bq-avatar.js.map +1 -1
  295. package/dist/components/bq-badge.js +1 -1
  296. package/dist/components/bq-breadcrumb-item.js +1 -1
  297. package/dist/components/bq-breadcrumb-item.js.map +1 -1
  298. package/dist/components/bq-breadcrumb.js +1 -1
  299. package/dist/components/bq-breadcrumb.js.map +1 -1
  300. package/dist/components/bq-button.js +1 -1
  301. package/dist/components/bq-card.js +1 -1
  302. package/dist/components/bq-card.js.map +1 -1
  303. package/dist/components/bq-checkbox.js +1 -1
  304. package/dist/components/bq-checkbox.js.map +1 -1
  305. package/dist/components/bq-date-picker.js +1 -1
  306. package/dist/components/bq-date-picker.js.map +1 -1
  307. package/dist/components/bq-dialog.js +1 -1
  308. package/dist/components/bq-dialog.js.map +1 -1
  309. package/dist/components/bq-divider.js +1 -1
  310. package/dist/components/bq-drawer.js +1 -1
  311. package/dist/components/bq-drawer.js.map +1 -1
  312. package/dist/components/bq-dropdown.js +1 -1
  313. package/dist/components/bq-empty-state.js +1 -1
  314. package/dist/components/bq-empty-state.js.map +1 -1
  315. package/dist/components/bq-icon.js +1 -1
  316. package/dist/components/bq-input.js +1 -1
  317. package/dist/components/bq-input.js.map +1 -1
  318. package/dist/components/bq-notification.js +1 -1
  319. package/dist/components/bq-notification.js.map +1 -1
  320. package/dist/components/bq-option-group.js +1 -1
  321. package/dist/components/bq-option-group.js.map +1 -1
  322. package/dist/components/bq-option-list.js +1 -1
  323. package/dist/components/bq-option.js +1 -1
  324. package/dist/components/bq-option.js.map +1 -1
  325. package/dist/components/bq-page-title.js +1 -1
  326. package/dist/components/bq-page-title.js.map +1 -1
  327. package/dist/components/bq-panel.js +1 -1
  328. package/dist/components/bq-progress.js +1 -1
  329. package/dist/components/bq-progress.js.map +1 -1
  330. package/dist/components/bq-radio-group.js +1 -1
  331. package/dist/components/bq-radio-group.js.map +1 -1
  332. package/dist/components/bq-radio.js +1 -1
  333. package/dist/components/bq-radio.js.map +1 -1
  334. package/dist/components/bq-select.js +1 -1
  335. package/dist/components/bq-select.js.map +1 -1
  336. package/dist/components/bq-side-menu-item.js +1 -1
  337. package/dist/components/bq-side-menu-item.js.map +1 -1
  338. package/dist/components/bq-side-menu.js +1 -1
  339. package/dist/components/bq-side-menu.js.map +1 -1
  340. package/dist/components/bq-slider.js +1 -1
  341. package/dist/components/bq-slider.js.map +1 -1
  342. package/dist/components/bq-spinner.js +1 -1
  343. package/dist/components/bq-spinner.js.map +1 -1
  344. package/dist/components/bq-status.js +1 -1
  345. package/dist/components/bq-status.js.map +1 -1
  346. package/dist/components/bq-step-item.js +1 -1
  347. package/dist/components/bq-step-item.js.map +1 -1
  348. package/dist/components/bq-steps.js +1 -1
  349. package/dist/components/bq-steps.js.map +1 -1
  350. package/dist/components/bq-switch.js +1 -1
  351. package/dist/components/bq-switch.js.map +1 -1
  352. package/dist/components/bq-tab-group.js +1 -1
  353. package/dist/components/bq-tab-group.js.map +1 -1
  354. package/dist/components/bq-tab.js +1 -1
  355. package/dist/components/bq-tab.js.map +1 -1
  356. package/dist/components/bq-tag.js +1 -1
  357. package/dist/components/bq-textarea.js +1 -1
  358. package/dist/components/bq-textarea.js.map +1 -1
  359. package/dist/components/bq-toast.js +1 -1
  360. package/dist/components/bq-toast.js.map +1 -1
  361. package/dist/components/bq-tooltip.js +1 -1
  362. package/dist/components/index.js +1 -1
  363. package/dist/components/{p-2bdb6f46.js → p-27c1b08e.js} +2 -2
  364. package/dist/components/p-27c1b08e.js.map +1 -0
  365. package/dist/components/{p-209dd39e.js → p-295b174b.js} +2 -2
  366. package/dist/components/p-295b174b.js.map +1 -0
  367. package/dist/components/{p-fd41feb9.js → p-33371480.js} +2 -2
  368. package/dist/components/{p-fd41feb9.js.map → p-33371480.js.map} +1 -1
  369. package/dist/components/p-5940b410.js +7 -0
  370. package/dist/components/p-5940b410.js.map +1 -0
  371. package/dist/components/{p-00b80145.js → p-78d23ddc.js} +2 -2
  372. package/dist/components/{p-9e8fdef7.js → p-93c16753.js} +2 -2
  373. package/dist/components/p-93c16753.js.map +1 -0
  374. package/dist/components/{p-56dbc376.js → p-9f037c57.js} +2 -2
  375. package/dist/components/p-9f037c57.js.map +1 -0
  376. package/dist/components/{p-2c245c83.js → p-c2d43340.js} +2 -2
  377. package/dist/components/p-c2d43340.js.map +1 -0
  378. package/dist/components/{p-641036af.js → p-cbfc423f.js} +2 -2
  379. package/dist/components/p-cbfc423f.js.map +1 -0
  380. package/dist/components/{p-07467338.js → p-cf496927.js} +1 -1
  381. package/dist/components/p-cf496927.js.map +1 -0
  382. package/dist/components/{p-ddf2a5ae.js → p-f5cd1f38.js} +2 -2
  383. package/dist/components/p-f5cd1f38.js.map +1 -0
  384. package/dist/components/{p-59b33ad7.js → p-fe0b66e5.js} +2 -2
  385. package/dist/components/p-fe0b66e5.js.map +1 -0
  386. package/dist/custom-elements.json +17528 -0
  387. package/dist/esm/{assetsPath-15d3d3e4.js → assetsPath-6c498eae.js} +2 -2
  388. package/dist/esm/{assetsPath-15d3d3e4.js.map → assetsPath-6c498eae.js.map} +1 -1
  389. package/dist/esm/beeq.js +4 -4
  390. package/dist/esm/beeq.js.map +1 -1
  391. package/dist/esm/bq-accordion-group.entry.js +3 -3
  392. package/dist/esm/bq-accordion-group.entry.js.map +1 -1
  393. package/dist/esm/bq-accordion.entry.js +5 -5
  394. package/dist/esm/bq-accordion.entry.js.map +1 -1
  395. package/dist/esm/bq-alert.entry.js +6 -6
  396. package/dist/esm/bq-alert.entry.js.map +1 -1
  397. package/dist/esm/bq-avatar.entry.js +5 -5
  398. package/dist/esm/bq-avatar.entry.js.map +1 -1
  399. package/dist/esm/bq-badge.entry.js +3 -3
  400. package/dist/esm/bq-badge.entry.js.map +1 -1
  401. package/dist/esm/bq-breadcrumb-item.entry.js +4 -11
  402. package/dist/esm/bq-breadcrumb-item.entry.js.map +1 -1
  403. package/dist/esm/bq-breadcrumb.entry.js +20 -38
  404. package/dist/esm/bq-breadcrumb.entry.js.map +1 -1
  405. package/dist/esm/bq-button_2.entry.js +7 -7
  406. package/dist/esm/bq-button_2.entry.js.map +1 -1
  407. package/dist/esm/bq-card.entry.js +4 -4
  408. package/dist/esm/bq-card.entry.js.map +1 -1
  409. package/dist/esm/bq-checkbox.entry.js +9 -11
  410. package/dist/esm/bq-checkbox.entry.js.map +1 -1
  411. package/dist/esm/bq-date-picker.entry.js +35 -16
  412. package/dist/esm/bq-date-picker.entry.js.map +1 -1
  413. package/dist/esm/bq-dialog.entry.js +6 -6
  414. package/dist/esm/bq-dialog.entry.js.map +1 -1
  415. package/dist/esm/bq-divider.entry.js +5 -5
  416. package/dist/esm/bq-divider.entry.js.map +1 -1
  417. package/dist/esm/bq-drawer.entry.js +6 -6
  418. package/dist/esm/bq-drawer.entry.js.map +1 -1
  419. package/dist/esm/bq-dropdown_2.entry.js +5 -5
  420. package/dist/esm/bq-dropdown_2.entry.js.map +1 -1
  421. package/dist/esm/bq-empty-state.entry.js +5 -5
  422. package/dist/esm/bq-empty-state.entry.js.map +1 -1
  423. package/dist/esm/bq-input.entry.js +42 -17
  424. package/dist/esm/bq-input.entry.js.map +1 -1
  425. package/dist/esm/bq-notification.entry.js +4 -4
  426. package/dist/esm/bq-notification.entry.js.map +1 -1
  427. package/dist/esm/bq-option-group.entry.js +2 -2
  428. package/dist/esm/bq-option-group.entry.js.map +1 -1
  429. package/dist/esm/bq-option-list_2.entry.js +7 -7
  430. package/dist/esm/bq-option-list_2.entry.js.map +1 -1
  431. package/dist/esm/bq-option.entry.js +5 -5
  432. package/dist/esm/bq-option.entry.js.map +1 -1
  433. package/dist/esm/bq-page-title.entry.js +3 -3
  434. package/dist/esm/bq-page-title.entry.js.map +1 -1
  435. package/dist/esm/bq-progress.entry.js +9 -9
  436. package/dist/esm/bq-progress.entry.js.map +1 -1
  437. package/dist/esm/bq-radio-group.entry.js +68 -25
  438. package/dist/esm/bq-radio-group.entry.js.map +1 -1
  439. package/dist/esm/bq-radio.entry.js +10 -4
  440. package/dist/esm/bq-radio.entry.js.map +1 -1
  441. package/dist/esm/bq-select.entry.js +7 -7
  442. package/dist/esm/bq-select.entry.js.map +1 -1
  443. package/dist/esm/bq-side-menu-item.entry.js +2 -2
  444. package/dist/esm/bq-side-menu-item.entry.js.map +1 -1
  445. package/dist/esm/bq-side-menu.entry.js +3 -3
  446. package/dist/esm/bq-side-menu.entry.js.map +1 -1
  447. package/dist/esm/bq-slider.entry.js +21 -7
  448. package/dist/esm/bq-slider.entry.js.map +1 -1
  449. package/dist/esm/bq-spinner.entry.js +5 -5
  450. package/dist/esm/bq-spinner.entry.js.map +1 -1
  451. package/dist/esm/bq-status.entry.js +2 -2
  452. package/dist/esm/bq-status.entry.js.map +1 -1
  453. package/dist/esm/bq-step-item.entry.js +5 -5
  454. package/dist/esm/bq-step-item.entry.js.map +1 -1
  455. package/dist/esm/bq-steps.entry.js +2 -2
  456. package/dist/esm/bq-steps.entry.js.map +1 -1
  457. package/dist/esm/bq-switch.entry.js +56 -4
  458. package/dist/esm/bq-switch.entry.js.map +1 -1
  459. package/dist/esm/bq-tab-group.entry.js +9 -9
  460. package/dist/esm/bq-tab-group.entry.js.map +1 -1
  461. package/dist/esm/bq-tab.entry.js +6 -6
  462. package/dist/esm/bq-tab.entry.js.map +1 -1
  463. package/dist/esm/bq-textarea.entry.js +62 -13
  464. package/dist/esm/bq-textarea.entry.js.map +1 -1
  465. package/dist/esm/bq-toast.entry.js +2 -2
  466. package/dist/esm/bq-toast.entry.js.map +1 -1
  467. package/dist/esm/bq-tooltip.entry.js +2 -2
  468. package/dist/esm/bq-tooltip.entry.js.map +1 -1
  469. package/dist/esm/{index-f0f1a8c6.js → index-c7d02072.js} +787 -553
  470. package/dist/esm/index-c7d02072.js.map +1 -0
  471. package/dist/esm/index.js +4 -4
  472. package/dist/esm/{isDefined-edd9ee7b.js → isDefined-48de6db5.js} +2 -2
  473. package/dist/esm/{isDefined-edd9ee7b.js.map → isDefined-48de6db5.js.map} +1 -1
  474. package/dist/esm/loader.js +3 -3
  475. package/dist/hydrate/index.js +3017 -848
  476. package/dist/hydrate/index.mjs +3017 -848
  477. package/dist/stencil.config.js +14 -3
  478. package/dist/stencil.config.js.map +1 -1
  479. package/dist/types/components/accordion/bq-accordion.d.ts +100 -10
  480. package/dist/types/components/accordion-group/bq-accordion-group.d.ts +25 -0
  481. package/dist/types/components/alert/bq-alert.d.ts +71 -5
  482. package/dist/types/components/avatar/bq-avatar.d.ts +51 -1
  483. package/dist/types/components/badge/bq-badge.d.ts +28 -0
  484. package/dist/types/components/breadcrumb/bq-breadcrumb.d.ts +25 -17
  485. package/dist/types/components/breadcrumb-item/bq-breadcrumb-item.d.ts +43 -10
  486. package/dist/types/components/button/bq-button.d.ts +51 -0
  487. package/dist/types/components/card/bq-card.d.ts +31 -1
  488. package/dist/types/components/checkbox/bq-checkbox.d.ts +37 -1
  489. package/dist/types/components/date-picker/bq-date-picker.d.ts +112 -28
  490. package/dist/types/components/dialog/bq-dialog.d.ts +76 -8
  491. package/dist/types/components/divider/bq-divider.d.ts +31 -4
  492. package/dist/types/components/drawer/bq-drawer.d.ts +59 -9
  493. package/dist/types/components/dropdown/bq-dropdown.d.ts +51 -3
  494. package/dist/types/components/empty-state/bq-empty-state.d.ts +18 -0
  495. package/dist/types/components/icon/bq-icon.d.ts +21 -1
  496. package/dist/types/components/input/bq-input.d.ts +77 -0
  497. package/dist/types/components/notification/bq-notification.d.ts +57 -5
  498. package/dist/types/components/option/bq-option.d.ts +40 -0
  499. package/dist/types/components/option-group/bq-option-group.d.ts +31 -0
  500. package/dist/types/components/option-list/bq-option-list.d.ts +21 -0
  501. package/dist/types/components/page-title/bq-page-title.d.ts +37 -0
  502. package/dist/types/components/panel/bq-panel.d.ts +31 -0
  503. package/dist/types/components/progress/bq-progress.d.ts +33 -9
  504. package/dist/types/components/radio/bq-radio.d.ts +37 -0
  505. package/dist/types/components/radio-group/bq-radio-group.d.ts +53 -10
  506. package/dist/types/components/select/bq-select.d.ts +85 -0
  507. package/dist/types/components/side-menu/bq-side-menu.d.ts +45 -0
  508. package/dist/types/components/side-menu-item/bq-side-menu-item.d.ts +37 -0
  509. package/dist/types/components/slider/bq-slider.d.ts +39 -1
  510. package/dist/types/components/spinner/bq-spinner.d.ts +26 -0
  511. package/dist/types/components/status/bq-status.d.ts +21 -3
  512. package/dist/types/components/step-item/bq-step-item.d.ts +32 -0
  513. package/dist/types/components/steps/bq-steps.d.ts +27 -0
  514. package/dist/types/components/switch/bq-switch.d.ts +43 -0
  515. package/dist/types/components/tab/bq-tab.d.ts +47 -5
  516. package/dist/types/components/tab-group/bq-tab-group.d.ts +34 -8
  517. package/dist/types/components/tag/bq-tag.d.ts +49 -0
  518. package/dist/types/components/textarea/bq-textarea.d.ts +74 -0
  519. package/dist/types/components/toast/bq-toast.d.ts +47 -2
  520. package/dist/types/components/tooltip/bq-tooltip.d.ts +40 -0
  521. package/dist/types/components.d.ts +5783 -71
  522. package/dist/types/global/scripts/global.d.ts +0 -21
  523. package/dist/types/global.d.ts +26 -0
  524. package/dist/types/tools/generate-custom-elements-json.d.ts +1 -1
  525. package/package.json +1 -1
  526. package/dist/beeq/p-0180a237.entry.js.map +0 -1
  527. package/dist/beeq/p-0711a447.entry.js.map +0 -1
  528. package/dist/beeq/p-0875b715.entry.js +0 -6
  529. package/dist/beeq/p-0875b715.entry.js.map +0 -1
  530. package/dist/beeq/p-0ff234ec.entry.js.map +0 -1
  531. package/dist/beeq/p-1d67af77.entry.js.map +0 -1
  532. package/dist/beeq/p-25365502.entry.js +0 -6
  533. package/dist/beeq/p-25365502.entry.js.map +0 -1
  534. package/dist/beeq/p-350cd07e.entry.js.map +0 -1
  535. package/dist/beeq/p-382eea5f.entry.js.map +0 -1
  536. package/dist/beeq/p-42d22a31.entry.js.map +0 -1
  537. package/dist/beeq/p-439583bc.entry.js.map +0 -1
  538. package/dist/beeq/p-457ab863.entry.js.map +0 -1
  539. package/dist/beeq/p-47d41233.entry.js.map +0 -1
  540. package/dist/beeq/p-4f47130c.entry.js.map +0 -1
  541. package/dist/beeq/p-5b5f9a2a.entry.js.map +0 -1
  542. package/dist/beeq/p-5da52049.js +0 -7
  543. package/dist/beeq/p-5da52049.js.map +0 -1
  544. package/dist/beeq/p-63941636.entry.js +0 -6
  545. package/dist/beeq/p-63941636.entry.js.map +0 -1
  546. package/dist/beeq/p-6482a62d.entry.js.map +0 -1
  547. package/dist/beeq/p-64ddef8a.entry.js +0 -6
  548. package/dist/beeq/p-64ddef8a.entry.js.map +0 -1
  549. package/dist/beeq/p-70ae504a.entry.js.map +0 -1
  550. package/dist/beeq/p-81b6556f.entry.js.map +0 -1
  551. package/dist/beeq/p-854e2114.entry.js.map +0 -1
  552. package/dist/beeq/p-8b595d1f.entry.js.map +0 -1
  553. package/dist/beeq/p-8e9f0bf3.entry.js.map +0 -1
  554. package/dist/beeq/p-94ca5709.entry.js +0 -6
  555. package/dist/beeq/p-94ca5709.entry.js.map +0 -1
  556. package/dist/beeq/p-96793709.entry.js.map +0 -1
  557. package/dist/beeq/p-99668b08.entry.js.map +0 -1
  558. package/dist/beeq/p-a0d6207d.entry.js.map +0 -1
  559. package/dist/beeq/p-a6094ed8.entry.js.map +0 -1
  560. package/dist/beeq/p-a89bfbd8.entry.js.map +0 -1
  561. package/dist/beeq/p-b9171e19.entry.js.map +0 -1
  562. package/dist/beeq/p-bdf2ea24.entry.js.map +0 -1
  563. package/dist/beeq/p-be234206.entry.js.map +0 -1
  564. package/dist/beeq/p-c8f639ab.entry.js.map +0 -1
  565. package/dist/beeq/p-cc83682b.entry.js.map +0 -1
  566. package/dist/beeq/p-d2c20a92.entry.js.map +0 -1
  567. package/dist/beeq/p-d7507599.entry.js.map +0 -1
  568. package/dist/beeq/p-def8acd7.entry.js.map +0 -1
  569. package/dist/beeq/p-eab2d27c.entry.js.map +0 -1
  570. package/dist/beeq/p-f9d9bd41.entry.js +0 -6
  571. package/dist/beeq/p-f9d9bd41.entry.js.map +0 -1
  572. package/dist/cjs/index-9cbab9ab.js.map +0 -1
  573. package/dist/components/p-07467338.js.map +0 -1
  574. package/dist/components/p-209dd39e.js.map +0 -1
  575. package/dist/components/p-2bdb6f46.js.map +0 -1
  576. package/dist/components/p-2c245c83.js.map +0 -1
  577. package/dist/components/p-56dbc376.js.map +0 -1
  578. package/dist/components/p-59b33ad7.js.map +0 -1
  579. package/dist/components/p-641036af.js.map +0 -1
  580. package/dist/components/p-9e8fdef7.js.map +0 -1
  581. package/dist/components/p-ddf2a5ae.js.map +0 -1
  582. package/dist/components/p-f1736bec.js +0 -7
  583. package/dist/components/p-f1736bec.js.map +0 -1
  584. package/dist/esm/index-f0f1a8c6.js.map +0 -1
  585. /package/dist/beeq/{p-561ff182.js.map → p-3c472097.js.map} +0 -0
  586. /package/dist/beeq/{p-995bfd58.js.map → p-c9ed66d9.js.map} +0 -0
  587. /package/dist/components/{p-00b80145.js.map → p-78d23ddc.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqSliderCss","BqSliderStyle0","BqSlider","inputMinElem","inputMaxElem","minTooltipElem","maxTooltipElem","progressElem","trackElem","debounceBqChange","handleValuePropChange","newValue","this","setState","emitBqChange","handleStepPropChange","minValue","Math","round","step","maxValue","handleGapChange","isRangeType","value","isNil","min","max","stringToObject","gap","bqChange","bqBlur","bqFocus","connectedCallback","init","componentWillLoad","componentDidLoad","runUpdates","componentDidUpdate","updateProgressTrack","syncInputsValue","setThumbPosition","clamp","enableTooltip","minThumbPosition","maxThumbPosition","thumbPosition","setAttribute","toString","isString","JSON","parse","handleInputChange","type","event","target","parseFloat","reflectedValue","calculatePercent","totalRange","Number","left","width","style","insetInlineStart","inlineSize","calculateThumbPosition","trackAreaWidth","getBoundingClientRect","inputThumbSize","parseInt","getComputedStyle","el","getPropertyValue","totalWidth","undefined","cancel","debounce","emit","debounceTime","handleBlur","handleFocus","handleMouseDown","handleTooltipVisibility","handleMouseUp","action","tooltipAlwaysVisible","tooltipElem","classList","decimalCount","toFixed","split","replace","length","isTooltipAlwaysVisible","renderLabel","position","css","h","class","hidden","enableValueIndicator","part","renderInput","refCallback","zIndexValue","zIndex","disabled","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 { Component, Element, Event, EventEmitter, h, Prop, State, Watch } from '@stencil/core';\n\nimport { TSliderType, TSliderValue } from './bq-slider.types';\nimport { clamp, debounce, isNil, isString, TDebounce } from '../../shared/utils';\n\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@Component({\n tag: 'bq-slider',\n styleUrl: './scss/bq-slider.scss',\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 @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 /**\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 connectedCallback() {\n this.init();\n }\n\n componentWillLoad() {\n this.init();\n }\n\n componentDidLoad() {\n this.runUpdates();\n }\n\n componentDidUpdate() {\n this.runUpdates();\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 this.value = this.isRangeType ? [this.minValue, this.maxValue] : this.minValue;\n };\n\n private calculatePercent = (value: number) => {\n const totalRange = Number(this.max) - Number(this.min);\n return (value / 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))\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;\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]`]:\n 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':\n 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 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":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqPageTitleCss","BqPageTitleStyle0","BqPageTitle","backNavigationElem","suffixElem","subTitleElem","handleSlotChange","this","haveBackNavigation","hasSlotContent","hasSuffix","hasSubTitle","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 * @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@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 // 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]':\n 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,0zoBACvB,MAAAC,EAAeD,E,MCiBFE,EAAW,M,iDAiBgB,M,eACT,M,iBACE,K,CAfvBC,mBACAC,WACAC,a,wBA4CAC,iBAAmB,KACzBC,KAAKC,mBAAqBC,EAAeF,KAAKJ,mBAAoB,QAClEI,KAAKG,UAAYD,EAAeF,KAAKH,WAAY,UACjDG,KAAKI,YAAcF,EAAeF,KAAKF,aAAc,YAAY,EAOnE,MAAAO,GACE,OACEC,EAAA,OAAAC,IAAA,2CAAKC,MAAM,4EAA4EC,KAAK,QAE1FH,EAAA,OAAAC,IAAA,2CACEC,MAAO,CAAEE,KAAM,KAAM,WAAYV,KAAKC,oBACtCU,IAAMC,GAAaZ,KAAKJ,mBAAqBgB,EAC7CH,KAAK,QAELH,EAAA,QAAAC,IAAA,2CAAMM,KAAK,OAAOC,aAAcd,KAAKD,oBAEvCO,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,WAAYR,KAAKG,WACzEQ,IAAMC,GAAaZ,KAAKH,WAAae,EACrCH,KAAK,UAELH,EAAA,QAAAC,IAAA,2CAAMM,KAAK,SAASC,aAAcd,KAAKD,qBAI3CO,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,2IACE,KACFO,QAASf,KAAKI,aAEhBO,IAAMC,GAAaZ,KAAKF,aAAec,EACvCH,KAAK,aAELH,EAAA,QAAAC,IAAA,2CAAMM,KAAK,YAAYC,aAAcd,KAAKD,qB","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqRadioCss","BqRadioStyle0","BqRadio","inputElement","bqClick","bqFocus","bqBlur","bqKeyDown","vClick","this","click","vFocus","focus","vBlur","blur","handleClick","checked","emit","el","handleOnFocus","handleOnBlur","handleOnKeyDown","event","tabindex","render","h","key","class","disabled","backgroundOnHover","name","part","ref","element","type","form","formId","value","required","onBlur","onClick","onFocus","onKeyDown"],"sources":["../../packages/beeq/src/components/radio/scss/bq-radio.scss?tag=bq-radio&encapsulation=shadow","../../packages/beeq/src/components/radio/bq-radio.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Radio styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-radio.variables';\n\n:host {\n @apply inline-block;\n}\n\n.bq-radio {\n @apply box-border inline-flex cursor-pointer items-center justify-center gap-2 transition-[background-color] duration-300;\n @apply rounded-s p-b-xs p-i-xs;\n\n &.is-disabled {\n .bq-radio__circle {\n @apply opacity-60;\n }\n\n &.is-checked .bq-radio__circle {\n @apply border-icon-brand;\n }\n\n &.is-checked .bq-radio__checked {\n @apply bg-ui-brand;\n }\n }\n\n &.has-background:not(.is-disabled):hover {\n @apply bg-hover-ui-primary;\n }\n\n &.is-checked:not(.is-disabled) {\n .bq-radio__circle {\n @apply border-icon-brand;\n }\n\n .bq-radio__checked {\n @apply bg-ui-brand;\n }\n }\n\n &:not(.is-disabled):hover .bq-radio__circle {\n @apply border-hover-icon-brand;\n }\n\n &.is-checked:not(.is-disabled):hover {\n .bq-radio__checked,\n .bq-radio__circle {\n @apply border-hover-icon-brand;\n }\n }\n}\n\n.bq-radio__input {\n @apply pointer-events-none absolute opacity-0 p-b-0 p-i-0 m-b-0 m-i-0;\n\n &:focus-visible {\n ~ .bq-radio__circle {\n @apply focus;\n }\n }\n}\n\n.bq-radio__control {\n @apply box-border flex items-center justify-center rounded-full bs-[--bq-radio--size] is-[--bq-radio--size] p-b-[2px] p-i-[2px];\n}\n\n.bq-radio__circle {\n @apply relative box-border flex items-center justify-center rounded-full border-[length:--bq-radio--border-width] border-solid border-hover-icon-primary bs-full is-full p-b-[3px] p-i-[3px];\n}\n\n.bq-radio__checked {\n @apply rounded-full bs-full is-full;\n}\n\n.bq-radio__label {\n @apply font-medium leading-regular text-primary;\n}\n\n.bq-radio__circle,\n.bq-radio__checked,\n.bq-radio__label {\n @apply transition-[color,background-color,border-color,box-shadow] duration-300;\n}\n","import { Component, Element, Event, EventEmitter, h, Method, Prop } from '@stencil/core';\n\n/**\n * @part base - The component's internal wrapper of the radio component.\n * @part input - The native HTML `<input type=\"radio\">` used under the hood.\n * @part radio - The component's internal wrapper of the radio component.\n * @part label - The `<span>` element that holds the text content.\n */\n@Component({\n tag: 'bq-radio',\n styleUrl: './scss/bq-radio.scss',\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class BqRadio {\n // Own Properties\n // ====================\n private inputElement: HTMLInputElement;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqRadioElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** If true radio input is checked */\n @Prop({ reflect: true, mutable: true }) checked?: boolean;\n\n /** If true radio input is disabled */\n @Prop({ reflect: true }) disabled? = false;\n\n /** If true radio displays background on hover */\n @Prop({ reflect: true }) backgroundOnHover? = false;\n\n /** The form ID that the radio input is associated with */\n @Prop({ reflect: true }) formId?: string;\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 radio before the owning form can be submitted */\n @Prop({ reflect: true }) required?: boolean;\n\n /** A string representing the value of the radio. */\n @Prop({ reflect: true }) value!: string;\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 radio state changes */\n @Event() bqClick: EventEmitter<HTMLBqRadioElement>;\n\n /** Handler to be called when the radio gets focus */\n @Event() bqFocus: EventEmitter<HTMLBqRadioElement>;\n\n /** Handler to be called when the radio loses focus */\n @Event() bqBlur: EventEmitter<HTMLBqRadioElement>;\n\n /** Handler to be called when the radio key is pressed */\n @Event() bqKeyDown: EventEmitter<KeyboardEvent>;\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 /**\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.inputElement?.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.inputElement?.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.inputElement?.blur();\n }\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleClick = () => {\n this.checked = true;\n this.bqClick.emit(this.el);\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 private handleOnKeyDown = (event: KeyboardEvent) => {\n this.bqKeyDown.emit(event);\n };\n\n private get tabindex(): string {\n // NOTE: this.checked is undefined when is not part of bq-radio-group\n return `${-1 + +(this.checked ?? 1)}`;\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-radio group': true,\n 'is-disabled !cursor-not-allowed': this.disabled,\n 'is-checked': this.checked,\n 'has-background': this.backgroundOnHover,\n }}\n aria-label={this.name}\n part=\"base\"\n >\n <div class=\"bq-radio__control\">\n <input\n class=\"bq-radio__input\"\n ref={(element) => (this.inputElement = element)}\n type=\"radio\"\n form={this.formId}\n name={this.name}\n value={this.value}\n required={this.required}\n disabled={this.disabled}\n onBlur={this.handleOnBlur}\n onClick={this.handleClick}\n onFocus={this.handleOnFocus}\n onKeyDown={this.handleOnKeyDown}\n aria-checked={this.checked ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n tabindex={this.tabindex}\n part=\"input\"\n />\n <div class=\"bq-radio__circle\" part=\"radio\">\n <div class=\"bq-radio__checked\" />\n </div>\n </div>\n <span\n class=\"bq-radio__label group-hover:text-text-primary-hover group-[.is-disabled]:text-text-primary-disabled\"\n part=\"label\"\n >\n <slot></slot>\n </span>\n </label>\n );\n }\n}\n"],"mappings":";;;;oDAAA,MAAMA,EAAa,09uBACnB,MAAAC,EAAeD,E,MCcFE,EAAO,M,oMAqBmB,M,uBAGS,M,uFArBtCC,a,wBA2CCC,QAGAC,QAGAC,OAGAC,UAqBT,YAAMC,GACJC,KAAKN,cAAcO,O,CAQrB,YAAMC,GACJF,KAAKN,cAAcS,O,CAQrB,WAAMC,GACJJ,KAAKN,cAAcW,M,CAQbC,YAAc,KACpBN,KAAKO,QAAU,KACfP,KAAKL,QAAQa,KAAKR,KAAKS,GAAG,EAGpBC,cAAgB,KACtBV,KAAKJ,QAAQY,KAAKR,KAAKS,GAAG,EAGpBE,aAAe,KACrBX,KAAKH,OAAOW,KAAKR,KAAKS,GAAG,EAGnBG,gBAAmBC,IACzBb,KAAKF,UAAUU,KAAKK,EAAM,EAG5B,YAAYC,GAEV,MAAO,IAAI,KAAMd,KAAKO,SAAW,I,CAOnC,MAAAQ,GACE,OACEC,EAAA,SAAAC,IAAA,2CACEC,MAAO,CACL,iBAAkB,KAClB,kCAAmClB,KAAKmB,SACxC,aAAcnB,KAAKO,QACnB,iBAAkBP,KAAKoB,mBACxB,aACWpB,KAAKqB,KACjBC,KAAK,QAELN,EAAA,OAAAC,IAAA,2CAAKC,MAAM,qBACTF,EAAA,SAAAC,IAAA,2CACEC,MAAM,kBACNK,IAAMC,GAAaxB,KAAKN,aAAe8B,EACvCC,KAAK,QACLC,KAAM1B,KAAK2B,OACXN,KAAMrB,KAAKqB,KACXO,MAAO5B,KAAK4B,MACZC,SAAU7B,KAAK6B,SACfV,SAAUnB,KAAKmB,SACfW,OAAQ9B,KAAKW,aACboB,QAAS/B,KAAKM,YACd0B,QAAShC,KAAKU,cACduB,UAAWjC,KAAKY,gBAAe,eACjBZ,KAAKO,QAAU,OAAS,QAAO,gBAC9BP,KAAKmB,SAAW,OAAS,QACxCL,SAAUd,KAAKc,SACfQ,KAAK,UAEPN,EAAA,OAAAC,IAAA,2CAAKC,MAAM,mBAAmBI,KAAK,SACjCN,EAAA,OAAAC,IAAA,2CAAKC,MAAM,wBAGfF,EAAA,QAAAC,IAAA,2CACEC,MAAM,sGACNI,KAAK,SAELN,EAAA,QAAAC,IAAA,8C","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqTabGroupCss","BqTabGroupStyle0","BqTabGroup","debouncedBqChange","checkDebounceChange","this","debounceTime","Math","max","cancel","debounce","event","bqChange","emit","checkPropValues","validatePropValue","TAB_SIZE","el","TAB_ORIENTATION","TAB_PLACEMENT","bqTabElements","forEach","bqTabElement","size","orientation","placement","active","isNil","value","tabId","componentWillLoad","componentDidLoad","onKeyUp","target","isHTMLElement","makeTabsFocusable","onBqClick","detail","selectTab","onBqKeyDown","keyActions","ArrowDown","ArrowRight","ArrowUp","ArrowLeft","direction","key","focusTabSibling","onBqBlur","restoreTabsFocus","async","currentTarget","index","elements","getNextElement","vFocus","disabled","enableFocus","Array","from","querySelectorAll","render","h","Host","class","disableDivider","part","role"],"sources":["../../packages/beeq/src/components/tab-group/scss/bq-tab-group.scss?tag=bq-tab-group&encapsulation=shadow","../../packages/beeq/src/components/tab-group/bq-tab-group.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Tab styles */\n/* -------------------------------------------------------------------------- */\n\n:host {\n @apply block;\n}\n\n.bq-tab-group {\n @apply relative;\n\n &::after {\n @apply absolute flex border-0 border-solid border-primary content-empty;\n }\n\n &--horizontal-start,\n &--horizontal-end {\n &::after {\n @apply is-full inset-be-0 [border-block-end-width:--bq-stroke-s];\n }\n }\n\n &--horizontal-start {\n @apply justify-start;\n }\n\n &--horizontal-end {\n @apply justify-end;\n }\n\n &--vertical-start::after {\n @apply end-0 bs-full is-0 [border-block-end-width:0px] [border-inline-end-width:--bq-stroke-s];\n }\n\n &--vertical-end::after {\n @apply start-0 bs-full is-0 [border-block-end-width:0px] [border-inline-start-width:--bq-stroke-s];\n }\n}\n\n.bq-tab-group.no-divider {\n &::after {\n @apply content-none;\n }\n}\n\n.bq-tab-group--container {\n @include hide-scrollbar;\n @apply gap-xs2 p-xs2; // This will avoid cutting the outline focus style\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Prop, Watch } from '@stencil/core';\n\nimport { debounce, getNextElement, isHTMLElement, isNil, TDebounce, validatePropValue } from '../../shared/utils';\nimport {\n TAB_ORIENTATION,\n TAB_PLACEMENT,\n TAB_SIZE,\n TTabOrientation,\n TTabPlacement,\n TTabSize,\n} from '../tab/bq-tab.types';\n\n/**\n * @part base - The HTML div wrapper inside the shadow DOM.\n * @part tabs - The HTML div used to hold the tab buttons.\n */\n@Component({\n tag: 'bq-tab-group',\n styleUrl: './scss/bq-tab-group.scss',\n shadow: true,\n})\nexport class BqTabGroup {\n // Own Properties\n // ====================\n\n private debouncedBqChange: TDebounce<{ value: string; target: HTMLBqTabElement }>;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqTabGroupElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** A string representing the id of the selected tab. */\n @Prop({ reflect: true, mutable: true }) value: string;\n\n /** The size of the tab */\n @Prop({ reflect: true }) size: TTabSize = 'medium';\n\n /** The direction that tab should be render */\n @Prop({ reflect: true }) orientation?: TTabOrientation = 'horizontal';\n\n /** The placement that tab should be render */\n @Prop({ reflect: true }) placement?: TTabPlacement = 'start';\n\n /** A number representing the delay value applied to bqChange event handler */\n @Prop({ reflect: true, mutable: true }) debounceTime = 0;\n\n /** If true, the underline divider below the tabs won't be shown */\n @Prop({ reflect: true }) disableDivider = false;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('debounceTime')\n checkDebounceChange() {\n if (this.debounceTime < 0) {\n this.debounceTime = Math.max(0, this.debounceTime);\n }\n\n if (this.debouncedBqChange) {\n this.debouncedBqChange.cancel();\n }\n\n this.debouncedBqChange = debounce((event: Parameters<typeof this.debouncedBqChange>[0]) => {\n this.bqChange.emit(event);\n }, this.debounceTime);\n }\n\n @Watch('size')\n @Watch('value')\n @Watch('orientation')\n @Watch('placement')\n checkPropValues() {\n validatePropValue(TAB_SIZE, 'medium', this.el, 'size');\n validatePropValue(TAB_ORIENTATION, 'horizontal', this.el, 'orientation');\n validatePropValue(TAB_PLACEMENT, 'start', this.el, 'placement');\n\n this.bqTabElements.forEach((bqTabElement) => {\n bqTabElement.size = this.size;\n bqTabElement.orientation = this.orientation;\n bqTabElement.placement = this.placement;\n bqTabElement.active = !isNil(this.value) ? bqTabElement.tabId === this.value : false;\n });\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Handler to be called when the tab value changes */\n @Event() bqChange: EventEmitter<{ target: HTMLBqTabElement; value: string }>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.checkDebounceChange();\n this.checkPropValues();\n }\n\n componentDidLoad() {\n this.checkPropValues();\n }\n\n // Listeners\n // ==============\n\n @Listen('keyup', { target: 'body', passive: true, capture: true })\n onKeyUp(event: KeyboardEvent) {\n const { target } = event;\n if (!isHTMLElement(target, 'bq-tab')) return;\n\n this.makeTabsFocusable();\n }\n\n @Listen('bqClick', { passive: true })\n onBqClick(event: CustomEvent<HTMLBqTabElement>) {\n const { detail: target } = event;\n this.bqTabElements.forEach((bqTabElement) => (bqTabElement.active = bqTabElement === target));\n this.debouncedBqChange({ value: target.tabId, target });\n this.selectTab(target);\n }\n\n @Listen('bqKeyDown', { passive: true })\n async onBqKeyDown(event: CustomEvent<KeyboardEvent>) {\n const { target } = event;\n\n // NOTE: ensures the target is an HTML element with the tag name 'bq-tab'\n if (!isHTMLElement(target, 'bq-tab')) return;\n\n const keyActions: { [key: string]: 'forward' | 'backward' } = {\n ArrowDown: 'forward',\n ArrowRight: 'forward',\n ArrowUp: 'backward',\n ArrowLeft: 'backward',\n };\n\n // NOTE: gets the direction based on key pressed\n const direction = keyActions[event.detail.key];\n\n if (!direction) return;\n\n await this.focusTabSibling(target, direction);\n }\n\n @Listen('bqBlur', { capture: true, passive: true })\n onBqBlur() {\n this.restoreTabsFocus();\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 focusTabSibling = async (\n currentTarget: HTMLBqTabElement,\n direction: 'forward' | 'backward',\n ): Promise<void> => {\n let target: HTMLBqTabElement | null = null;\n\n this.bqTabElements.forEach((bqTabElement, index, elements) => {\n bqTabElement.active = false;\n\n if (bqTabElement === currentTarget) {\n target = getNextElement(elements, index, direction);\n }\n });\n\n if (target) {\n await target.vFocus();\n this.selectTab(target);\n }\n };\n\n private makeTabsFocusable = (): void => {\n this.bqTabElements.forEach((bqTabElement) => {\n if (bqTabElement.disabled) return;\n\n /**\n * This is a \"fire and forget\" operation. The callback itself doesn't do anything special\n * with the asynchronous code (doesn't await it or do anything with the result)\n * Details: https://stackoverflow.com/a/63488201\n */\n (async () => {\n await bqTabElement.enableFocus(true);\n })();\n });\n };\n\n private restoreTabsFocus = (): void => {\n this.bqTabElements.forEach((bqTabElement) => {\n if (bqTabElement.disabled || bqTabElement.active) return;\n\n /** @See line #173 */\n (async () => {\n await bqTabElement.enableFocus(false);\n })();\n });\n };\n\n private get bqTabElements(): HTMLBqTabElement[] {\n return Array.from(this.el.querySelectorAll('bq-tab'));\n }\n\n private selectTab = (target: HTMLBqTabElement): void => {\n const { tabId } = target;\n target.active = true;\n this.value = tabId;\n this.debouncedBqChange({ value: tabId, target });\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <Host class={{ 'inline-block': this.orientation === 'vertical' }}>\n <div\n class={{\n [`bq-tab-group bq-tab-group--${this.orientation}-${this.placement} flex is-full`]: true,\n 'no-divider': this.disableDivider,\n }}\n part=\"base\"\n >\n <div\n class={{\n 'bq-tab-group--container flex overflow-x-auto': true,\n 'flex-col': this.orientation !== 'horizontal',\n }}\n role=\"tablist\"\n part=\"tabs\"\n >\n <slot />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["STATUS_TYPE","bqStatusCss","BqStatusStyle0","BqStatus","checkPropValues","validatePropValue","this","el","componentWillLoad","render","h","key","class","part","role","type","size"],"sources":["../../packages/beeq/src/components/status/bq-status.types.ts","../../packages/beeq/src/components/status/scss/bq-status.scss?tag=bq-status&encapsulation=shadow","../../packages/beeq/src/components/status/bq-status.tsx"],"sourcesContent":["export const STATUS_TYPE = ['alert', 'danger', 'info', 'neutral', 'success'] as const;\nexport type TStatusType = (typeof STATUS_TYPE)[number];\n","@import './bq-status.variables';\n\n.bq-status__circle {\n &::part(base) {\n --bq-badge--size-medium: var(--bq-status-circle--size);\n }\n\n &.success::part(base) {\n --bq-badge--background-color: theme(backgroundColor.ui.success);\n }\n\n &.danger::part(base) {\n --bq-badge--background-color: theme(backgroundColor.ui.danger);\n }\n\n &.neutral::part(base) {\n --bq-badge--background-color: theme(backgroundColor.ui.secondary);\n }\n\n &.alert::part(base) {\n --bq-badge--background-color: theme(backgroundColor.ui.warning);\n }\n\n &.info::part(base) {\n --bq-badge--background-color: theme(backgroundColor.ui.brand);\n }\n}\n\n.bq-status__text ::slotted(*) {\n @apply text-s font-medium leading-regular text-primary p-b-0 p-i-0 m-b-0 m-i-0;\n}\n","import { Component, Element, h, Prop, Watch } from '@stencil/core';\n\nimport { STATUS_TYPE, TStatusType } from './bq-status.types';\nimport { validatePropValue } from '../../shared/utils';\n\n/**\n * @part base - The component's internal wrapper of the status component\n * @part circle - The colored circle that marks the status type\n * @part text - The `<div>` container that holds the text label of the status component\n */\n@Component({\n tag: 'bq-status',\n styleUrl: './scss/bq-status.scss',\n shadow: true,\n})\nexport class BqStatus {\n // Own Properties\n // ====================\n\n // Reference to host HTML element\n // ===================================\n @Element() el!: HTMLBqStatusElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** It defines the type of status to display */\n @Prop({ reflect: true }) type: TStatusType = 'neutral';\n\n // Prop lifecycle events\n // =======================\n @Watch('type')\n checkPropValues() {\n validatePropValue(STATUS_TYPE, 'neutral', this.el, 'type');\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 // 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 render() {\n return (\n <div class=\"bq-status inline-flex items-center gap-xs\" part=\"base\" role=\"status\">\n <bq-badge class={`bq-status__circle rounded-full ${this.type}`} size=\"medium\" part=\"circle\" role=\"img\" />\n <div\n class=\"bq-status__text text-s font-medium leading-regular text-primary max-bs-[20px] p-b-0 p-i-0 m-b-0 m-i-0\"\n part=\"text\"\n >\n <slot />\n </div>\n </div>\n );\n }\n}\n"],"mappings":";;;;sFAAO,MAAMA,EAAc,CAAC,QAAS,SAAU,OAAQ,UAAW,WCAlE,MAAMC,EAAc,+5oBACpB,MAAAC,EAAeD,E,MCcFE,EAAQ,M,mCAgB0B,S,yBAK7C,eAAAC,GACEC,EAAkBL,EAAa,UAAWM,KAAKC,GAAI,O,CAUrD,iBAAAC,GACEF,KAAKF,iB,CAoBP,MAAAK,GACE,OACEC,EAAA,OAAAC,IAAA,2CAAKC,MAAM,4CAA4CC,KAAK,OAAOC,KAAK,UACtEJ,EAAA,YAAAC,IAAA,2CAAUC,MAAO,kCAAkCN,KAAKS,OAAQC,KAAK,SAASH,KAAK,SAASC,KAAK,QACjGJ,EAAA,OAAAC,IAAA,2CACEC,MAAM,wGACNC,KAAK,QAELH,EAAA,QAAAC,IAAA,8C","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqAccordionGroupCss","BqAccordionGroupStyle0","BqAccordionGroup","checkPropValues","this","bqAccordionElements","forEach","bqAccordionElement","isNil","expandAll","expanded","appearance","noAnimation","size","onBqClick","event","detail","bqElem","isHTMLElement","el","contains","multiple","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 { TAccordionAppearance, TAccordionSize } from '../accordion/bq-accordion.types';\n\n/**\n * @part base - The component's base wrapper.\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,m3lBAC5B,MAAAC,EAAeD,E,MCYFE,EAAgB,M,yCAiBgD,S,0CAS3B,M,cAGH,M,UAGkB,Q,yBAS/D,eAAAC,GACEC,KAAKC,oBAAoBC,SAASC,IAEhC,IAAKC,EAAMJ,KAAKK,WAAY,CAC1BF,EAAmBG,SAAWN,KAAKK,S,CAErCF,EAAmBI,WAAaP,KAAKO,WACrCJ,EAAmBK,YAAcR,KAAKQ,YACtCL,EAAmBM,KAAOT,KAAKS,IAAI,G,CASvC,SAAAC,CAAUC,GACR,MAAQC,OAAQC,GAAWF,EAE3B,IAAKG,EAAcD,EAAQ,kBAAoBb,KAAKe,GAAGC,SAASH,GAAS,OAEzE,GAAIb,KAAKiB,SAAU,OAEnBjB,KAAKC,oBAAoBC,SAASC,IAChC,GAAIA,IAAuBQ,EAAMC,OAAQ,OAEzCT,EAAmBG,SAAW,KAAK,G,CAQvC,iBAAAY,GACElB,KAAKD,iB,CAkBP,uBAAYE,GACV,OAAOkB,MAAMC,KAAKpB,KAAKe,GAAGM,iBAAiB,gB,CAM7C,MAAAC,GACE,OACEC,EAAA,OAAAC,IAAA,2CAAKC,MAAM,gDAAgDC,KAAK,QAC9DH,EAAA,QAAAC,IAAA,6C","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["STEP_ITEM_STATUS","bqStepItemCss","BqStepItemStyle0","BqStepItem","checkPropValues","validatePropValue","STEPS_SIZE","this","el","handleIconPrefix","bqClick","connectedCallback","componentWillLoad","componentDidLoad","isDisabled","status","isCurrent","iconElem","querySelector","isHTMLElement","size","weight","render","h","key","class","part","type","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\n @apply bg-primary;\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;\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, EventEmitter, h, Prop, Watch } from '@stencil/core';\n\nimport { STEP_ITEM_STATUS, TStepItemStatus } from './bq-step-item.types';\nimport { isHTMLElement, validatePropValue } from '../../shared/utils';\nimport { STEPS_SIZE, TStepsSize, TStepsType } from '../steps/bq-steps.types';\n\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@Component({\n tag: 'bq-step-item',\n styleUrl: './scss/bq-step-item.scss',\n shadow: true,\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 }) 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 emitted when the step item is clicked */\n @Event() bqClick: EventEmitter<{ target: HTMLBqStepItemElement; value: string }>;\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 get isDisabled(): boolean {\n return this.status === 'disabled';\n }\n\n private get isCurrent(): boolean {\n return this.status === 'current';\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 iconElem.weight = this.isCurrent ? 'fill' : 'regular';\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <div\n class={{\n 'bq-step-item flex gap-s': true,\n [`bq-step-item--${this.status}`]: true,\n 'pointer-events-none opacity-60': this.isDisabled,\n }}\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\">\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 opacity-60': true,\n 'opacity-60': this.isDisabled,\n }}\n part=\"description\"\n >\n <slot name=\"description\" />\n </div>\n </div>\n </div>\n );\n }\n}\n"],"mappings":";;;;qKAAO,MAAMA,EAAmB,CAAC,UAAW,UAAW,YAAa,QAAS,YCA7E,MAAMC,EAAgB,mguBACtB,MAAAC,EAAeD,E,MCeFE,EAAU,M,oEAgBwB,S,YAGO,U,4CAUpD,eAAAC,GACEC,EAAkBC,EAAY,SAAUC,KAAKC,GAAI,QACjDH,EAAkBL,EAAkB,UAAWO,KAAKC,GAAI,UAExDD,KAAKE,kB,CAQEC,QAMT,iBAAAC,GACEJ,KAAKH,iB,CAGP,iBAAAQ,GACEL,KAAKH,iB,CAGP,gBAAAS,GACEN,KAAKE,kB,CAkBP,cAAYK,GACV,OAAOP,KAAKQ,SAAW,U,CAGzB,aAAYC,GACV,OAAOT,KAAKQ,SAAW,S,CAGjBN,iBAAmB,KACzB,MAAMQ,EAAWV,KAAKC,GAAGU,cAAc,mBACvC,IAAKD,IAAaE,EAAcF,EAAU,WAAY,OAEtDA,EAASG,KAAOb,KAAKa,OAAS,QAAU,GAAK,GAC7CH,EAASI,OAASd,KAAKS,UAAY,OAAS,SAAS,EAOvD,MAAAM,GACE,OACEC,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,0BAA2B,KAC3B,CAAC,iBAAiBlB,KAAKQ,UAAW,KAClC,iCAAkCR,KAAKO,YAEzCY,KAAK,QAELH,EAAA,OAAAC,IAAA,2CAAKC,MAAO,iCAAiClB,KAAKoB,QAAQpB,KAAKa,QAAQb,KAAKQ,UAC1EQ,EAAA,QAAAC,IAAA,2CAAMI,KAAK,SAASC,aAActB,KAAKE,oBAEzCc,EAAA,OAAAC,IAAA,2CAAKC,MAAM,yBAETF,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,0EAA2E,KAC3E,sBAAuBlB,KAAKO,WAC5B,aAAcP,KAAKS,WAErBU,KAAK,SAELH,EAAA,QAAAC,IAAA,8CAGFD,EAAA,OAAAC,IAAA,2CACEC,MAAO,CACL,uEAAwE,KACxE,aAAclB,KAAKO,YAErBY,KAAK,eAELH,EAAA,QAAAC,IAAA,2CAAMI,KAAK,kB","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqSelectCss","BqSelectStyle0","BqSelect","helperTextElem","inputElem","labelElem","prefixElem","suffixElem","debounceQuery","fallbackInputId","internals","handleValueChange","this","multiple","isString","value","Array","from","JSON","parse","String","setFormValue","join","syncItemsFromValue","bqBlur","bqClear","bqFocus","bqSelect","connectedCallback","initMultipleValue","componentWillLoad","componentDidLoad","isArray","selectedOptions","options","filter","item","includes","formAssociatedCallback","role","ariaExpanded","open","formResetCallback","isNil","setValidity","clear","handleOpenChange","ev","composedPath","el","detail","stopOptionFocusBlurPropagation","isHTMLElement","target","stopPropagation","disabled","undefined","displayValue","resetOptionsVisibility","emit","handleBlur","handleFocus","handleSelect","handleMultipleSelection","focus","selectedOptionsSet","Set","has","delete","add","map","handleSearchFilter","cancel","query","toLowerCase","trim","isDefined","debounce","forEach","itemLabel","getOptionLabel","hidden","debounceTime","handleClearClick","handleTagRemove","handleLabelSlotChange","hasLabel","hasSlotContent","handlePrefixSlotChange","hasPrefix","handleSuffixSlotChange","hasSuffix","handleHelperTextSlotChange","hasHelperText","length","syncSelectedOptionsState","option","updateDisplayLabel","lowerCaseValue","selected","checkedItem","find","innerText","querySelectorAll","displayPlaceholder","placeholder","displayTags","index","maxTagsVisible","h","key","removable","size","variant","onBqClose","event","onClick","exportparts","part","hasClearIcon","disableClear","render","labelId","name","class","id","htmlFor","ref","onSlotchange","distance","keepOpenOnSelect","panelHeight","placement","sameWidth","skidding","strategy","validationStatus","slot","spanElem","autoComplete","autoCapitalize","form","readOnly","readonly","required","spellcheck","type","onBlur","onFocus","onInput","appearance","clearButtonLabel","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 {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\n\nimport { Placement } from '../../services/interfaces';\nimport { debounce, hasSlotContent, isDefined, isHTMLElement, isNil, isString, TDebounce } from '../../shared/utils';\nimport { TInputValidation } from '../input/bq-input.types';\n\nexport type TSelectValue = string | string[];\n\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@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\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 /**\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 if (this.multiple && isString(this.value)) {\n // NOTE: we ensure that value is an array, changing the value will trigger Watch to execute thus the return\n this.value = Array.from(JSON.parse(String(this.value)));\n this.internals.setFormValue(this.value.join(','));\n return;\n }\n\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 // 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 if (this.multiple && Array.isArray(this.value)) {\n this.selectedOptions = this.options.filter((item) => this.value.includes(item.value));\n }\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 // 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 = undefined;\n this.selectedOptions = [];\n\n // Clear display value and input element if not multiple\n if (!multiple) {\n this.displayValue = undefined;\n inputElem.value = undefined;\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 // 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 = (ev: Event) => {\n if (this.disabled) return;\n\n this.debounceQuery?.cancel();\n\n const query = (ev.target as HTMLInputElement).value?.toLowerCase().trim();\n\n if (!isDefined(query)) {\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(query);\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 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 handleLabelSlotChange = () => {\n this.hasLabel = hasSlotContent(this.labelElem);\n };\n\n private handlePrefixSlotChange = () => {\n this.hasPrefix = hasSlotContent(this.prefixElem);\n };\n\n private handleSuffixSlotChange = () => {\n this.hasSuffix = hasSlotContent(this.suffixElem);\n };\n\n private handleHelperTextSlotChange = () => {\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 } else {\n // Sync display label for single selection mode\n this.updateDisplayLabel();\n }\n\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.handleLabelSlotChange} />\n </label>\n {/* Select dropdown */}\n <bq-dropdown\n class=\"bq-select__dropdown w-full\"\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.handlePrefixSlotChange} />\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.handleSearchFilter}\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.handleSuffixSlotChange}>\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.handleHelperTextSlotChange} />\n </div>\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["AVATAR_SIZE","AVATAR_SHAPE","bqAvatarCss","BqAvatarStyle0","BqAvatar","trimmedInitials","handleImagePropChange","this","hasError","checkPropValues","validatePropValue","el","onInitialsChange","trimInitialsBasedOnSize","componentWillLoad","onImageError","initials","forEach","size","substring","getIndex","sizeIndexMap","xsmall","small","medium","large","render","h","Host","key","class","shape","label","role","part","image","alt","altText","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, TAvatarShape, TAvatarSize } from './bq-avatar.types';\nimport { validatePropValue } from '../../shared/utils';\n\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 renderd the `Initials` text string.\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 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 >\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,8ztBACpB,MAAAC,EAAeD,E,MCcFE,EAAQ,M,qJAiC4B,S,UAGa,Q,CAhC5DC,gB,wBAsCA,qBAAAC,GAEEC,KAAKC,SAAW,K,CAKlB,eAAAC,GACEC,EAAkBT,EAAc,SAAUM,KAAKI,GAAI,SACnDD,EAAkBV,EAAa,SAAUO,KAAKI,GAAI,O,CAKpD,gBAAAC,GACEL,KAAKM,yB,CAWP,iBAAAC,GACEP,KAAKM,0BACLN,KAAKE,iB,CAkBCM,aAAe,KACrBR,KAAKC,SAAW,IAAI,EAGdK,wBAA0B,KAChC,IAAKN,KAAKS,SAAU,OAEpBhB,EAAYiB,SAASC,IACnB,GAAIX,KAAKW,OAASA,EAAM,CACtBX,KAAKF,gBAAkBE,KAAKS,SAASG,UAAU,EAAGZ,KAAKa,SAASF,G,IAElE,EAGIE,SAAYF,IAClB,MAAMG,EAAe,CACnBC,OAAQ,EACRC,MAAO,EACPC,OAAQ,EACRC,MAAO,GAET,OAAOJ,EAAaH,IAASG,EAAaC,MAAM,EAOlD,MAAAI,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CACEC,MAAO,CACL,YAAa,KACb,CAAC,SAASvB,KAAKW,QAAS,KACxB,8CAA+CX,KAAKwB,QAAU,SAC9D,gDAAiDxB,KAAKwB,QAAU,UAAYxB,KAAKW,OAAS,SAC1F,+CAAgDX,KAAKwB,QAAU,UAAYxB,KAAKW,OAAS,QACzF,+CACEX,KAAKwB,QAAU,WAAaxB,KAAKW,OAAS,UAAYX,KAAKW,OAAS,UACvE,aACWX,KAAKyB,MACjBC,KAAK,MACLC,KAAK,QAEJ3B,KAAKS,UACJW,EAAA,QAAAE,IAAA,2CACEC,MAAM,gGACNI,KAAK,QAEJ3B,KAAKF,iBAGTE,KAAK4B,QAAU5B,KAAKC,UACnBmB,EAAA,OAAAE,IAAA,2CACEC,MAAM,2DACNM,IAAK7B,KAAK8B,SAAWC,UACrBC,IAAKhC,KAAK4B,MACVK,QAASjC,KAAKQ,aACdmB,KAAK,SAIXP,EAAA,OAAAE,IAAA,2CACEC,MAAO,CACL,4CAA6C,KAC7C,kFAAmFvB,KAAKwB,QAAU,SAClG,kFAAmFxB,KAAKwB,QAAU,WAGpGJ,EAAA,QAAAE,IAAA,2CAAMY,KAAK,W","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["PROGRESS_BORDER_SHAPE","PROGRESS_THICKNESS","PROGRESS_TYPE","bqProgressCss","BqProgressStyle0","BqProgress","handleTypePropChange","validatePropValue","this","el","handleValuePropChange","newValue","validateValue","componentWillLoad","value","clampedValue","Math","max","min","render","style","thickness","type","h","Host","key","class","part","borderShape","indeterminate","undefined","enableTooltip","exportparts","alwaysVisible","distance","insetInlineStart","fontVariant","slot","label"],"sources":["../../packages/beeq/src/components/progress/bq-progress.types.ts","../../packages/beeq/src/components/progress/scss/bq-progress.scss?tag=bq-progress&encapsulation=shadow","../../packages/beeq/src/components/progress/bq-progress.tsx"],"sourcesContent":["export const PROGRESS_BORDER_SHAPE = ['square', 'rounded'] as const;\nexport type TProgressBorderShape = (typeof PROGRESS_BORDER_SHAPE)[number];\n\nexport const PROGRESS_THICKNESS = ['medium', 'large'] as const;\nexport type TProgressThickness = (typeof PROGRESS_THICKNESS)[number];\n\nexport const PROGRESS_TYPE = ['default', 'error'] as const;\nexport type TProgressType = (typeof PROGRESS_TYPE)[number];\n","/* -------------------------------------------------------------------------- */\n/* Progress styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-progress.variables';\n\n@layer component {\n @keyframes move-indeterminate {\n 0% {\n inset-inline-start: 0;\n }\n\n 100% {\n inset-inline-start: calc(100% - var(--bq-progress-bar--indeterminateWidth));\n }\n }\n\n .animate-indeterminate {\n animation: move-indeterminate 1s linear 0s infinite alternate-reverse;\n }\n}\n\n.progress-bar {\n @apply relative appearance-none bs-[--bq-progress-bar--height] is-full;\n}\n\n.progress-bar::-webkit-progress-bar {\n @apply bg-[--bq-progress-bar--trackColor];\n}\n\n.progress-bar::-webkit-progress-value {\n @apply bg-[--bq-progress-bar--indicatorColor];\n}\n\n.progress-bar::-moz-progress-bar {\n @apply animate-indeterminate bg-[--bq-progress-bar--indicatorColor];\n}\n\n.progress-bar:indeterminate::-moz-progress-bar {\n @apply bg-[--bq-progress-bar--trackColor];\n}\n\n.progress-bar.progress-bar__border-shape::-webkit-progress-value,\n.progress-bar.progress-bar__border-shape::-webkit-progress-bar {\n @apply rounded-full;\n}\n\n.progress-bar__indeterminate {\n @apply animate-indeterminate;\n}\n\n.progress-bar.progress-bar__border-shape::-moz-progress-bar {\n @apply animate-indeterminate rounded-full;\n}\n","import { Component, Element, h, Host, Prop, Watch } from '@stencil/core';\n\nimport {\n PROGRESS_BORDER_SHAPE,\n PROGRESS_THICKNESS,\n PROGRESS_TYPE,\n TProgressBorderShape,\n TProgressThickness,\n TProgressType,\n} from './bq-progress.types';\nimport { validatePropValue } from '../../shared/utils';\n\n/**\n * @part wrapper - The component wrapper container inside the shadow DOM\n * @part progress - The `<div>` container that holds the native progress element\n * @part progress-bar - The native html for progress element\n * @part label - The `<div>` container that holds the label value (in percentage)\n * @part indeterminate - The `<div>` container that holds the indeterminate progress bar\n *\n * @part base - The base container for the tooltip component inside the shadow DOM when hovering over the progress bar\n * @part trigger - The container holding the element that triggers the tooltip display when hovering over the progress bar\n * @part panel - The container holding the content of the tooltip when hovering over the progress bar\n */\n\n@Component({\n tag: 'bq-progress',\n styleUrl: './scss/bq-progress.scss',\n shadow: true,\n})\nexport class BqProgress {\n // Own Properties\n // ====================\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqProgressElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** If `true` the indeterminate state of progress bar is enabled */\n @Prop({ reflect: true }) indeterminate: boolean = false;\n\n /** A number representing the current value of the progress bar */\n @Prop({ reflect: true, mutable: true }) value = 0;\n\n /** Progress bar thickness */\n @Prop({ reflect: true }) thickness: TProgressThickness = 'medium';\n\n /** Progress type */\n @Prop({ reflect: true }) type: TProgressType = 'default';\n\n /** It will set the border style of the progress bar */\n @Prop({ reflect: true }) borderShape: TProgressBorderShape = 'rounded';\n\n /** If `true`, a label text showing the value (in percentage) will be shown */\n @Prop({ reflect: true }) label: boolean = false;\n\n /** If `true`, a tooltip will be shown displaying the progress value */\n @Prop({ reflect: true }) enableTooltip: boolean = false;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('borderShape')\n @Watch('thickness')\n @Watch('type')\n handleTypePropChange() {\n validatePropValue(PROGRESS_BORDER_SHAPE, 'rounded', this.el, 'borderShape');\n validatePropValue(PROGRESS_THICKNESS, 'medium', this.el, 'thickness');\n validatePropValue(PROGRESS_TYPE, 'default', this.el, 'type');\n }\n\n @Watch('value')\n handleValuePropChange(newValue: number) {\n this.validateValue(newValue);\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.handleTypePropChange();\n this.handleValuePropChange(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 validateValue(newValue: number) {\n const clampedValue = Math.max(0, Math.min(100, newValue));\n if (newValue !== clampedValue) {\n this.value = clampedValue;\n }\n return this.value;\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const style = {\n ...(this.thickness === 'large' && { '--bq-progress-bar--height': 'var(--bq-spacing-xs)' }),\n ...(this.type === 'error' && { '--bq-progress-bar--indicatorColor': 'var(--bq-ui--danger)' }),\n };\n\n return (\n <Host style={style}>\n <div class=\"flex items-center\" part=\"wrapper\">\n <div class=\"relative flex items-center is-full\" part=\"progress\">\n <progress\n class={{\n [`progress-bar progress-bar__${this.type} ${this.thickness}`]: true,\n 'progress-bar__border-shape rounded-full': this.borderShape === 'rounded',\n }}\n value={this.indeterminate ? undefined : this.value}\n max=\"100\"\n part=\"progress-bar\"\n />\n {this.enableTooltip && !this.indeterminate && (\n <bq-tooltip\n class=\"absolute [&::part(panel)]:absolute\"\n exportparts=\"base,trigger,panel\"\n alwaysVisible={true}\n distance={16}\n style={{ insetInlineStart: `${this.value}%`, fontVariant: 'tabular-nums' }}\n >\n <div class=\"absolute bs-1 is-1\" slot=\"trigger\"></div>\n {this.value}\n </bq-tooltip>\n )}\n {this.indeterminate && (\n <div\n class={{\n 'progress-bar__indeterminate absolute bg-[--bq-progress-bar--indicatorColor] bs-[--bq-progress-bar--height] is-[--bq-progress-bar--indeterminateWidth]':\n true,\n 'rounded-full': this.borderShape === 'rounded',\n }}\n part=\"indeterminate\"\n />\n )}\n </div>\n <div\n aria-hidden={!this.label || this.indeterminate ? 'true' : 'false'}\n class={{\n 'ms-xs font-medium leading-regular': true,\n 'text-primary': this.type !== 'error',\n 'text-danger': this.type === 'error',\n 'invisible ms-0 is-0': !this.label || this.indeterminate,\n }}\n style={{ fontVariant: 'tabular-nums' }}\n part=\"label\"\n >\n <span>{this.value}%</span>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":";;;;6FAAO,MAAMA,EAAwB,CAAC,SAAU,WAGzC,MAAMC,EAAqB,CAAC,SAAU,SAGtC,MAAMC,EAAgB,CAAC,UAAW,SCNzC,MAAMC,EAAgB,q+rBACtB,MAAAC,EAAeD,E,MC4BFE,EAAU,M,4CAiB6B,M,WAGF,E,eAGS,S,UAGV,U,iBAGc,U,WAGnB,M,mBAGQ,K,yBAQlD,oBAAAC,GACEC,EAAkBP,EAAuB,UAAWQ,KAAKC,GAAI,eAC7DF,EAAkBN,EAAoB,SAAUO,KAAKC,GAAI,aACzDF,EAAkBL,EAAe,UAAWM,KAAKC,GAAI,O,CAIvD,qBAAAC,CAAsBC,GACpBH,KAAKI,cAAcD,E,CAWrB,iBAAAE,GACEL,KAAKF,uBACLE,KAAKE,sBAAsBF,KAAKM,M,CAkB1B,aAAAF,CAAcD,GACpB,MAAMI,EAAeC,KAAKC,IAAI,EAAGD,KAAKE,IAAI,IAAKP,IAC/C,GAAIA,IAAaI,EAAc,CAC7BP,KAAKM,MAAQC,C,CAEf,OAAOP,KAAKM,K,CAOd,MAAAK,GACE,MAAMC,EAAQ,IACRZ,KAAKa,YAAc,SAAW,CAAE,4BAA6B,2BAC7Db,KAAKc,OAAS,SAAW,CAAE,oCAAqC,yBAGtE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACL,MAAOA,GACXG,EAAA,OAAAE,IAAA,2CAAKC,MAAM,oBAAoBC,KAAK,WAClCJ,EAAA,OAAAE,IAAA,2CAAKC,MAAM,qCAAqCC,KAAK,YACnDJ,EAAA,YAAAE,IAAA,2CACEC,MAAO,CACL,CAAC,8BAA8BlB,KAAKc,QAAQd,KAAKa,aAAc,KAC/D,0CAA2Cb,KAAKoB,cAAgB,WAElEd,MAAON,KAAKqB,cAAgBC,UAAYtB,KAAKM,MAC7CG,IAAI,MACJU,KAAK,iBAENnB,KAAKuB,gBAAkBvB,KAAKqB,eAC3BN,EAAA,cAAAE,IAAA,2CACEC,MAAM,qCACNM,YAAY,qBACZC,cAAe,KACfC,SAAU,GACVd,MAAO,CAAEe,iBAAkB,GAAG3B,KAAKM,SAAUsB,YAAa,iBAE1Db,EAAA,OAAAE,IAAA,2CAAKC,MAAM,qBAAqBW,KAAK,YACpC7B,KAAKM,OAGTN,KAAKqB,eACJN,EAAA,OAAAE,IAAA,2CACEC,MAAO,CACL,wJACE,KACF,eAAgBlB,KAAKoB,cAAgB,WAEvCD,KAAK,mBAIXJ,EAAA,OAAAE,IAAA,0DACgBjB,KAAK8B,OAAS9B,KAAKqB,cAAgB,OAAS,QAC1DH,MAAO,CACL,oCAAqC,KACrC,eAAgBlB,KAAKc,OAAS,QAC9B,cAAed,KAAKc,OAAS,QAC7B,uBAAwBd,KAAK8B,OAAS9B,KAAKqB,eAE7CT,MAAO,CAAEgB,YAAa,gBACtBT,KAAK,SAELJ,EAAA,QAAAE,IAAA,4CAAOjB,KAAKM,MAAK,O","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["ACCORDION_SIZE","ACCORDION_APPEARANCE","Accordion","el","header","panel","animation","isClosing","isExpanding","animationOptions","duration","easing","constructor","this","querySelector","open","style","height","offsetHeight","window","requestAnimationFrame","expand","close","startHeight","endHeight","cancel","animate","onfinish","onAnimationFinish","oncancel","removeAttribute","endEvent","Event","bubbles","composed","dispatchEvent","bqAccordionCss","BqAccordionStyle0","BqAccordion","accordion","prefixElem","suffixElem","detailsElem","checkPropValues","validatePropValue","handleExpandedChange","event","expanded","bqOpen","emit","bqClose","defaultPrevented","isCssCalcSizeSupported","setTimeout","CustomEvent","handleDisabledChange","disabled","handleJsAnimation","console","warn","noAnimation","bqBlur","bqFocus","bqAfterOpen","bqAfterClose","bqClick","componentWillLoad","componentDidLoad","onAccordionTransitionEnd","stopPropagation","target","handleClick","preventDefault","handleFocus","handleBlur","handlePrefixSlotChange","hasPrefix","hasSlotContent","handleSuffixSlotChange","hasSuffix","CSS","supports","render","h","key","class","size","appearance","ref","part","id","onClick","onFocus","onBlur","tabindex","role","element","name","onSlotchange","rotate"],"sources":["../../packages/beeq/src/components/accordion/bq-accordion.types.ts","../../packages/beeq/src/components/accordion/helper/index.ts","../../packages/beeq/src/components/accordion/scss/bq-accordion.scss?tag=bq-accordion&encapsulation=shadow","../../packages/beeq/src/components/accordion/bq-accordion.tsx"],"sourcesContent":["export const ACCORDION_SIZE = ['small', 'medium'] as const;\nexport type TAccordionSize = (typeof ACCORDION_SIZE)[number];\n\nexport const ACCORDION_APPEARANCE = ['filled', 'ghost'] as const;\nexport type TAccordionAppearance = (typeof ACCORDION_APPEARANCE)[number];\n","/* -------------------------------------------------------------------------------------- */\n/* 💡 Credits: https://css-tricks.com/how-to-animate-the-details-element-using-waapi */\n/* -------------------------------------------------------------------------------------- */\n\nexport class Accordion {\n private el: HTMLDetailsElement;\n private header: HTMLElement;\n private panel: HTMLElement;\n private animation: Animation | null;\n private isClosing: boolean;\n private isExpanding: boolean;\n private animationOptions = {\n duration: 200,\n easing: 'ease-in-out',\n };\n\n constructor(el: HTMLDetailsElement) {\n // Store the <details> element\n this.el = el;\n // Store the <summary> header element\n this.header = el.querySelector('summary');\n // Store the <div class=\"content\"> element\n this.panel = el.querySelector('.bq-accordion__body');\n // Store the animation object (so we can cancel it, if needed)\n this.animation = null;\n // Store if the element is closing\n this.isClosing = false;\n // Store if the element is expanding\n this.isExpanding = false;\n }\n\n public open() {\n // Check if the element is being closed or is already closed\n if (!this.isClosing && this.el.open) return;\n // Apply a fixed height on the element\n this.el.style.height = `${this.el.offsetHeight}px`;\n // Force the [open] attribute on the details element\n this.el.open = true;\n // Wait for the next frame to call the expand function\n window.requestAnimationFrame(() => this.expand());\n }\n\n public close() {\n // Check if the element is being opened or is already open\n if (!this.isExpanding && !this.el.open) return;\n // Set the element as \"being closed\"\n this.isClosing = true;\n\n // Store the current height of the element\n const startHeight = `${this.el.offsetHeight}px`;\n // Calculate the height of the <summary> header\n const endHeight = `${this.header.offsetHeight}px`;\n\n // If there is already an animation running\n if (this.animation) {\n // Cancel the current animation\n this.animation.cancel();\n }\n\n // Start a WAAPI animation\n this.animation = this.el.animate({ height: [startHeight, endHeight] }, this.animationOptions);\n // When the animation is complete, call onAnimationFinish()\n this.animation.onfinish = () => this.onAnimationFinish(false);\n // If the animation is cancelled, isClosing variable is set to false\n this.animation.oncancel = () => (this.isClosing = false);\n }\n\n // Expands the accordion\n private expand() {\n // Set the element as \"being expanding\"\n this.isExpanding = true;\n // Get the current fixed height of the element\n const startHeight = `${this.el.offsetHeight}px`;\n // Calculate the open height of the element (summary header height + panel body height)\n const endHeight = `${this.header.offsetHeight + this.panel.offsetHeight}px`;\n\n // If there is already an animation running\n if (this.animation) {\n // Cancel the current animation\n this.animation.cancel();\n }\n\n // Start a WAAPI animation\n this.animation = this.el.animate({ height: [startHeight, endHeight] }, this.animationOptions);\n // When the animation is complete, call onAnimationFinish()\n this.animation.onfinish = () => this.onAnimationFinish(true);\n // If the animation is cancelled, isExpanding variable is set to false\n this.animation.oncancel = () => (this.isExpanding = false);\n }\n\n // Handles the end of the animation\n private onAnimationFinish(open: boolean) {\n // Set the open attribute based on the parameter\n this.el.open = open;\n // Clear the stored animation\n this.animation = null;\n // Reset isClosing & isExpanding\n this.isClosing = false;\n this.isExpanding = false;\n // Remove the overflow hidden and the fixed height\n this.el.removeAttribute('style');\n // Dispatch a custom event based on the open parameter\n const endEvent = new Event('accordionTransitionEnd', { bubbles: false, composed: true });\n this.el.dispatchEvent(endEvent);\n }\n}\n","/* -------------------------------------------------------------------------- */\n/* Accordion styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-accordion.variables';\n\n:host {\n @apply block;\n}\n\n.bq-accordion {\n &.disabled {\n @apply cursor-not-allowed opacity-60;\n\n .bq-accordion__header {\n @apply pointer-events-none;\n }\n }\n\n &.small .bq-accordion__header {\n @apply gap-[--bq-accordion--small-gap] pe-[--bq-accordion--small-padding-end] ps-[--bq-accordion--small-padding-start] p-b-[--bq-accordion--small-padding-y];\n @apply rounded-ee-[--bq-accordion--small-radius] rounded-es-[--bq-accordion--small-radius] rounded-se-[--bq-accordion--small-radius] rounded-ss-[--bq-accordion--small-radius];\n }\n\n &.medium .bq-accordion__header {\n @apply gap-[--bq-accordion--medium-gap] pe-[--bq-accordion--medium-padding-end] ps-[--bq-accordion--medium-padding-start] p-b-[--bq-accordion--medium-padding-y];\n @apply rounded-ee-[--bq-accordion--medium-radius] rounded-es-[--bq-accordion--medium-radius] rounded-se-[--bq-accordion--medium-radius] rounded-ss-[--bq-accordion--medium-radius];\n }\n\n &[open] .bq-accordion__header {\n @apply border-[length:--bq-accordion--expanded-border-width] border-[color:--bq-accordion--expanded-border-color];\n @apply rounded-ee-[0px] rounded-es-[0px];\n\n border-style: var(--bq-accordion--expanded-border-style);\n }\n\n &.small .bq-accordion__content {\n @apply rounded-ee-[--bq-accordion--small-radius] rounded-es-[--bq-accordion--small-radius] rounded-se-[0px] rounded-ss-[0px];\n }\n\n &.medium .bq-accordion__content {\n @apply rounded-ee-[--bq-accordion--medium-radius] rounded-es-[--bq-accordion--medium-radius] rounded-se-[0px] rounded-ss-[0px];\n }\n\n &.filled {\n .bq-accordion__header {\n @apply bg-[--bq-accordion--filled-collapsed-background] hover:bg-hover-ui-secondary;\n }\n\n .bq-accordion__header--text {\n @apply text-[--bq-accordion--filled-collapsed-text-color];\n }\n\n .bq-accordion__content {\n @apply border-[length:--bq-accordion--panel-filled-border-width] border-[color:--bq-accordion--panel-filled-border-color];\n\n border-style: var(--bq-accordion--panel-filled-border-style);\n }\n\n &[open] .bq-accordion__header {\n @apply bg-[--bq-accordion--filled-expanded-background] hover:bg-hover-ui-secondary;\n }\n\n &[open] .bq-accordion__header--text {\n @apply text-[--bq-accordion--filled-expanded-text-color];\n }\n }\n\n &.ghost {\n .bq-accordion__header {\n @apply bg-[--bq-accordion--ghost-collapsed-background] hover:bg-hover-ui-secondary;\n }\n\n .bq-accordion__header--text {\n @apply text-[--bq-accordion--ghost-collapsed-text-color];\n }\n\n .bq-accordion__content {\n @apply border-[length:--bq-accordion--panel-ghost-border-width] border-[color:--bq-accordion--panel-ghost-border-color];\n\n border-style: var(--bq-accordion--panel-ghost-border-style);\n }\n\n &[open] .bq-accordion__header {\n @apply bg-[--bq-accordion--ghost-expanded-background] hover:bg-hover-ui-secondary;\n }\n\n &[open] .bq-accordion__header--text {\n @apply text-[--bq-accordion--ghost-expanded-text-color];\n }\n }\n\n &.small.filled .bq-accordion__content {\n @apply pe-[--bq-accordion--panel-small-filled-padding-end] ps-[--bq-accordion--panel-small-filled-padding-start] p-b-[--bq-accordion--panel-small-filled-padding-y];\n }\n\n &.medium.filled .bq-accordion__content {\n @apply pe-[--bq-accordion--panel-medium-filled-padding-end] ps-[--bq-accordion--panel-medium-filled-padding-start] p-b-[--bq-accordion--panel-medium-filled-padding-y];\n }\n\n &.small.ghost .bq-accordion__content {\n @apply pe-[--bq-accordion--panel-small-ghost-padding-end] ps-[--bq-accordion--panel-small-ghost-padding-start] p-b-[--bq-accordion--panel-small-ghost-padding-y];\n }\n\n &.medium.ghost .bq-accordion__content {\n @apply pe-[--bq-accordion--panel-medium-ghost-padding-end] ps-[--bq-accordion--panel-medium-ghost-padding-start] p-b-[--bq-accordion--panel-medium-ghost-padding-y];\n }\n}\n\n/* stylelint-disable-next-line selector-pseudo-element-no-unknown */\n.bq-accordion::details-content {\n @apply block overflow-hidden transition-[block-size,content-visibility] duration-300 ease-in-out bs-0 [transition-behavior:allow-discrete];\n}\n\n/* stylelint-disable-next-line selector-pseudo-element-no-unknown */\n.bq-accordion[open]::details-content {\n /* block-size: auto is just a fallback for browsers that don't support the calc-size() function */\n @apply bs-auto;\n}\n\n/* stylelint-disable-next-line selector-pseudo-element-no-unknown */\n.bq-accordion[open]:not(.no-animation)::details-content {\n @apply supports-[block-size:calc-size(auto)]:bs-[calc-size(auto)];\n}\n\n.bq-accordion__header {\n // Since there's an overflow on the <summary> element, the focus outline is not visible,\n // so we force it to be inset to avoid the overflow hidden.\n --bq-ring-offset-width: -2px;\n\n @apply flex cursor-pointer select-none list-none items-center transition-colors duration-300 ease-in-out focus-visible:focus;\n @apply border-[length:--bq-accordion--collapsed-border-width] border-[color:--bq-accordion--collapsed-border-color];\n\n border-style: var(--bq-accordion--collapsed-border-style);\n\n &::marker,\n &::-webkit-details-marker {\n @apply hidden;\n }\n}\n\n.bq-accordion__header--text {\n @apply flex-1;\n}\n\n.bq-accordion__header--prefix,\n.bq-accordion__header--suffix {\n @apply flex items-center justify-center;\n}\n","import { Component, Element, Event, EventEmitter, h, Listen, Prop, State, Watch } from '@stencil/core';\n\nimport { ACCORDION_APPEARANCE, ACCORDION_SIZE, TAccordionAppearance, TAccordionSize } from './bq-accordion.types';\nimport { Accordion } from './helper';\nimport { hasSlotContent, validatePropValue } from '../../shared/utils';\n\n/**\n * @part base - The `<details>` that holds the accordion content\n * @part header - The `<summary>` that holds the accordion header content\n * @part prefix - The `<div>` that holds the accordion text prefix icon / avatar\n * @part text - The `<div>` that holds the accordion header text\n * @part suffix - The `<div>` that holds the accordion text suffix icon\n * @part panel - The `<div>` that holds the accordion panel content\n */\n@Component({\n tag: 'bq-accordion',\n styleUrl: './scss/bq-accordion.scss',\n shadow: true,\n})\nexport class BqAccordion {\n // Own Properties\n // ====================\n\n private accordion: Accordion;\n private prefixElem: HTMLDivElement;\n private suffixElem: HTMLDivElement;\n private detailsElem: HTMLDetailsElement;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqAccordionElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private hasPrefix = false;\n @State() private hasSuffix = false;\n\n // Public Property API\n // ========================\n\n /** The appearance style of accordion */\n @Prop({ reflect: true, mutable: true }) appearance: TAccordionAppearance = 'filled';\n\n /** If true accordion is disabled */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /** If true accordion is expanded */\n @Prop({ reflect: true, mutable: true }) expanded: boolean = false;\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 accordion expand icon is rotate 180deg when expanded */\n @Prop({ reflect: true }) rotate: boolean = false;\n\n /** The size of accordion */\n @Prop({ reflect: true, mutable: true }) size: TAccordionSize = 'medium';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('size')\n checkPropValues() {\n validatePropValue(ACCORDION_SIZE, 'medium', this.el, 'size');\n validatePropValue(ACCORDION_APPEARANCE, 'filled', this.el, 'appearance');\n }\n\n @Watch('expanded')\n handleExpandedChange() {\n const event = this.expanded ? this.bqOpen.emit(this.el) : this.bqClose.emit(this.el);\n if (event.defaultPrevented) {\n this.expanded = !this.expanded;\n return;\n }\n\n if (this.expanded) {\n this.accordion?.open();\n } else {\n this.accordion?.close();\n }\n if (!this.isCssCalcSizeSupported) return;\n\n // NOTE: This is a workaround to trigger the transitionEnd event\n // when the open/close animation is handled via CSS instead of JS\n setTimeout(() => {\n this.el.dispatchEvent(new CustomEvent('accordionTransitionEnd', { bubbles: false, composed: true }));\n }, 200);\n }\n\n @Watch('disabled')\n handleDisabledChange() {\n if (!this.disabled) return;\n\n this.expanded = false;\n }\n\n @Watch('noAnimation')\n handleJsAnimation() {\n if (this.isCssCalcSizeSupported) return;\n\n console.warn(\n `[bq-accordion] calc-size() is not supported and animation will be set through JS\n For vertical layout, consider using the 'noAnimation' prop ('no-animation' attribute) to disable it`,\n );\n this.accordion = !this.noAnimation ? new Accordion(this.detailsElem) : null;\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Handler to be called when the accordion loses focus */\n @Event() bqBlur: EventEmitter<HTMLBqAccordionElement>;\n\n /** Handler to be called when the accordion gets focus */\n @Event() bqFocus: EventEmitter<HTMLBqAccordionElement>;\n\n /** Handler to be called when the accordion is opened */\n @Event() bqOpen: EventEmitter<HTMLBqAccordionElement>;\n\n /** Handler to be called after the accordion is opened */\n @Event() bqAfterOpen: EventEmitter<HTMLBqAccordionElement>;\n\n /** Handler to be called when the accordion is closed */\n @Event() bqClose: EventEmitter<HTMLBqAccordionElement>;\n\n /** Handler to be called after the accordion is closed */\n @Event() bqAfterClose: EventEmitter<HTMLBqAccordionElement>;\n\n /** @internal Handler to be called when the accordion is clicked */\n @Event() bqClick: EventEmitter<HTMLBqAccordionElement>;\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.handleJsAnimation();\n this.handleExpandedChange();\n }\n\n // Listeners\n // ==============\n\n @Listen('accordionTransitionEnd')\n onAccordionTransitionEnd(event: CustomEvent) {\n event.stopPropagation();\n if (event.target !== this.el) return;\n\n if (this.expanded) {\n this.bqAfterOpen.emit(this.el);\n return;\n }\n\n this.bqAfterClose.emit(this.el);\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 handleClick = (event: MouseEvent) => {\n event.preventDefault();\n\n if (this.disabled) return;\n\n this.bqClick.emit(this.el);\n this.expanded = !this.expanded;\n };\n\n private handleFocus = () => {\n if (this.disabled) return;\n\n this.bqFocus.emit(this.el);\n };\n\n private handleBlur = () => {\n this.bqBlur.emit(this.el);\n };\n\n private handlePrefixSlotChange = () => {\n this.hasPrefix = hasSlotContent(this.prefixElem, 'prefix');\n };\n\n private handleSuffixSlotChange = () => {\n this.hasSuffix = hasSlotContent(this.suffixElem, 'suffix');\n };\n\n private get open() {\n return this.expanded && !this.disabled;\n }\n\n private get isCssCalcSizeSupported() {\n return window.CSS?.supports('(block-size: calc-size(auto))');\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <details\n class={{\n [`bq-accordion overflow-hidden ${this.size} ${this.appearance}`]: true,\n 'no-animation': this.noAnimation,\n disabled: this.disabled,\n }}\n ref={(detailsElem: HTMLDetailsElement) => (this.detailsElem = detailsElem)}\n open={this.open}\n part=\"base\"\n >\n <summary\n id=\"bq-accordion__header\"\n class=\"bq-accordion__header\"\n onClick={this.handleClick}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n aria-expanded={this.expanded ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n aria-controls=\"bq-accordion__content\"\n tabindex={this.disabled ? -1 : 0}\n role=\"button\"\n part=\"header\"\n >\n <div\n ref={(element) => (this.prefixElem = element)}\n class={{ 'bq-accordion__header--prefix': true, '!hidden': !this.hasPrefix }}\n part=\"prefix\"\n >\n <slot name=\"prefix\" onSlotchange={this.handlePrefixSlotChange} />\n </div>\n <div class=\"bq-accordion__header--text\" part=\"text\">\n <slot name=\"header\" />\n </div>\n <div\n ref={(element) => (this.suffixElem = element)}\n class={{ 'bq-accordion__header--suffix': true, '!hidden': !this.hasSuffix }}\n part=\"suffix\"\n >\n <slot name=\"suffix\" onSlotchange={this.handleSuffixSlotChange} />\n </div>\n <div\n class={{\n 'flex items-center justify-center transition-transform duration-300 ease-in-out': true,\n '!hidden': this.open && !this.rotate,\n 'rotate-180': this.rotate && this.open,\n }}\n aria-hidden=\"true\"\n >\n <slot name=\"expand\">\n <bq-icon name=\"plus\" />\n </slot>\n </div>\n <div\n class={{ 'flex items-center justify-center': true, '!hidden': (!this.open && !this.rotate) || this.rotate }}\n aria-hidden=\"true\"\n >\n <slot name=\"collapse\">\n <bq-icon name=\"minus\" />\n </slot>\n </div>\n </summary>\n <div\n class=\"bq-accordion__body overflow-hidden\"\n aria-labelledby=\"bq-accordion__header\"\n role=\"region\"\n part=\"panel\"\n >\n <slot id=\"bq-accordion__content\" class=\"bq-accordion__content block\" />\n </div>\n </details>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["SPINNER_TEXT_POSITION","SPINNER_SIZE","bqSpinnerCss","BqSpinnerStyle0","BqSpinner","iconSlotElem","slotElem","observer","MutationObserver","mutations","mutation","this","slotContentLength","target","textContent","length","handleTextPositionProp","validatePropValue","el","handleSizeProp","setIconSize","handleHasIconSlot","componentWillLoad","checkPropValues","componentDidLoad","disconnectedCallback","disconnect","handleSlotChange","hasSlot","hasSlotContent","slot","querySelector","isNil","getTextContent","recurse","nodes","assignedNodes","flatten","forEach","node","observe","characterData","childList","subtree","handleIconSlotChange","hasIconSlot","isTextDisplayed","textPosition","bqIcon","size","parseInt","getCSSVariableValue","toString","assignedElements","filter","isHTMLElement","render","h","key","class","animation","part","role","fill","viewBox","d","opacity","flex","ref","spanElem","name","onSlotchange"],"sources":["../../packages/beeq/src/components/spinner/bq-spinner.types.ts","../../packages/beeq/src/components/spinner/scss/bq-spinner.scss?tag=bq-spinner&encapsulation=shadow","../../packages/beeq/src/components/spinner/bq-spinner.tsx"],"sourcesContent":["export const SPINNER_TEXT_POSITION = ['none', 'left', 'right', 'above', 'bellow'] as const;\nexport const SPINNER_SIZE = ['small', 'medium', 'large'] as const;\nexport type TSpinnerTextPosition = (typeof SPINNER_TEXT_POSITION)[number];\nexport type TSpinnerSize = (typeof SPINNER_SIZE)[number];\n","/* -------------------------------------------------------------------------- */\n/* Spinner styles */\n/* -------------------------------------------------------------------------- */\n@import './bq-spinner.variables';\n\n:host {\n @apply relative inline-block;\n}\n\n.bq-spinner {\n @apply flex;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Spinner loader size */\n/* -------------------------------------------------------------------------- */\n\n.bq-spinner--loader.large {\n @apply bs-[--bq-spinner--size-large] is-[--bq-spinner--size-large];\n}\n\n.bq-spinner--loader.medium {\n @apply bs-[--bq-spinner--size-medium] is-[--bq-spinner--size-medium];\n}\n\n.bq-spinner--loader.small {\n @apply bs-[--bq-spinner--size-small] is-[--bq-spinner--size-small];\n}\n\n/* -------------------------------------------------------------------------- */\n/* Text position */\n/* -------------------------------------------------------------------------- */\n\n.text-left,\n.text-right {\n @apply flex-row items-center;\n\n &.has-text {\n @apply gap-x-m;\n }\n}\n\n.text-left {\n .bq-spinner--loader,\n .bq-spinner--icon {\n @apply order-2;\n }\n\n .bq-spinner--text {\n @apply order-1;\n }\n}\n\n.text-right {\n .bq-spinner--loader,\n .bq-spinner--icon {\n @apply order-1;\n }\n\n .bq-spinner--text {\n @apply order-2;\n }\n}\n\n.text-above,\n.text-bellow {\n @apply flex-col items-center;\n\n &.has-text {\n @apply gap-y-m;\n }\n}\n\n.text-above {\n .bq-spinner--loader,\n .bq-spinner--icon {\n @apply order-2;\n }\n\n .bq-spinner--text {\n @apply order-1;\n }\n}\n\n.text-bellow {\n .bq-spinner--loader,\n .bq-spinner--icon {\n @apply order-1;\n }\n\n .bq-spinner--text {\n @apply order-2;\n }\n}\n\n/* -------------------------------------------------------------------------- */\n/* Animate slotted icon if provided */\n/* -------------------------------------------------------------------------- */\n\n.is-animated {\n .bq-spinner--icon,\n .bq-spinner--loader > svg {\n @include animation-spin;\n }\n}\n","import { Component, Element, h, Prop, State, Watch } from '@stencil/core';\n\nimport { SPINNER_SIZE, SPINNER_TEXT_POSITION, TSpinnerSize, TSpinnerTextPosition } from './bq-spinner.types';\nimport {\n getCSSVariableValue,\n getTextContent,\n hasSlotContent,\n isHTMLElement,\n isNil,\n validatePropValue,\n} from '../../shared/utils';\n\n/**\n * Spinners are designed for users to display data loading.\n *\n * @part base - The div wrapper container used under the hood.\n * @part icon - The `<svg>` icon element used to spin/animate.\n * @part custom-icon - The `<span>` tag element that holds the custom icon element passed.\n * @part text - The `<span>` tag element that renders the label text inside the component.\n */\n@Component({\n tag: 'bq-spinner',\n styleUrl: './scss/bq-spinner.scss',\n shadow: true,\n})\nexport class BqSpinner {\n // Own Properties\n // ====================\n\n private iconSlotElem: HTMLElement;\n private slotElem: HTMLElement;\n private observer: MutationObserver = new MutationObserver((mutations) => {\n const [mutation] = mutations;\n this.slotContentLength = mutation.target.textContent.length;\n });\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqSpinnerElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() private hasIconSlot = false;\n @State() private hasSlot = false;\n @State() private slotContentLength = 0;\n\n // Public Property API\n // ========================\n\n /** If `false`, the animation on the icon element will be stopped */\n @Prop({ reflect: true }) animation? = true;\n\n /** It defines the position of the label text */\n @Prop({ reflect: true }) textPosition: TSpinnerTextPosition = 'none';\n\n /** It defines the size of the icon element displayed */\n @Prop({ reflect: true }) size: TSpinnerSize = 'medium';\n\n // Prop lifecycle events\n // =======================\n\n @Watch('textPosition')\n handleTextPositionProp() {\n validatePropValue(SPINNER_TEXT_POSITION, 'none', this.el, 'textPosition');\n }\n\n @Watch('size')\n handleSizeProp() {\n validatePropValue(SPINNER_SIZE, 'medium', this.el, 'size');\n this.setIconSize();\n }\n\n @Watch('hasIconSlot')\n handleHasIconSlot() {\n this.setIconSize();\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.setIconSize();\n }\n\n disconnectedCallback() {\n this.observer?.disconnect();\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.slotElem) return;\n\n this.hasSlot = hasSlotContent(this.slotElem);\n if (!this.hasSlot) return;\n\n const slot = this.slotElem.querySelector('slot') ?? null;\n if (isNil(slot)) return;\n\n this.slotContentLength = getTextContent(slot, { recurse: true }).length;\n const nodes = slot.assignedNodes({ flatten: true });\n nodes.forEach((node) => {\n this.observer.observe(node, {\n characterData: true,\n childList: true,\n subtree: true,\n });\n });\n };\n\n private handleIconSlotChange = (): void => {\n this.hasIconSlot = hasSlotContent(this.iconSlotElem, 'icon');\n };\n\n private checkPropValues = (): void => {\n validatePropValue(SPINNER_TEXT_POSITION, 'none', this.el, 'textPosition');\n validatePropValue(SPINNER_SIZE, 'medium', this.el, 'size');\n };\n\n private get isTextDisplayed(): boolean {\n return this.textPosition !== 'none';\n }\n\n private setIconSize(): void {\n if (!this.hasIconSlot || !this.bqIcon) return;\n\n this.bqIcon.size = parseInt(getCSSVariableValue(`bq-spinner--size-${this.size}`, this.el)).toString();\n }\n\n private get bqIcon(): HTMLBqIconElement | null {\n if (!this.hasIconSlot) return null;\n\n const slot = this.iconSlotElem.querySelector('slot');\n\n return [...slot.assignedElements({ flatten: true })].filter((el: Element) =>\n isHTMLElement(el, 'bq-icon'),\n )[0] as HTMLBqIconElement;\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <div\n class={{\n [`bq-spinner ${this.size} text-${this.textPosition}`]: true,\n 'is-animated': this.animation,\n 'has-text': !!this.slotContentLength,\n }}\n part=\"base\"\n >\n {!this.hasIconSlot && (\n <div\n class={`bq-spinner--loader ${this.size} relative text-[--bq-spinner--color]`}\n aria-label=\"Loading...\"\n role=\"status\"\n >\n <svg class=\"bs-full is-full\" fill=\"currentColor\" viewBox=\"0 0 48 48\">\n <path\n fill=\"currentColor\"\n d=\"M10.27 7.637c-.937-1.117-.798-2.796.415-3.605a24 24 0 0 1 37.09 23.249c-.2 1.444-1.65 2.301-3.064 1.944-1.414-.356-2.25-1.793-2.096-3.242A18.72 18.72 0 0 0 14.102 8.11c-1.237.77-2.895.643-3.832-.474Z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M48 24c0 13.255-10.745 24-24 24S0 37.255 0 24 10.745 0 24 0s24 10.745 24 24ZM5.28 24c0 10.339 8.381 18.72 18.72 18.72 10.339 0 18.72-8.381 18.72-18.72 0-10.339-8.381-18.72-18.72-18.72C13.661 5.28 5.28 13.661 5.28 24Z\"\n opacity=\".1\"\n />\n </svg>\n </div>\n )}\n <span\n class={{\n 'bq-spinner--icon': true,\n flex: this.hasIconSlot,\n '!hidden': !this.hasIconSlot,\n }}\n ref={(spanElem) => (this.iconSlotElem = spanElem)}\n part=\"custom-icon\"\n >\n <slot name=\"icon\" onSlotchange={this.handleIconSlotChange} />\n </span>\n <span\n class={{\n 'bq-spinner--text font-medium leading-regular text-primary': true,\n '!hidden': !this.isTextDisplayed,\n }}\n part=\"text\"\n ref={(spanElem) => (this.slotElem = spanElem)}\n >\n <slot onSlotchange={this.handleSlotChange} />\n </span>\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqTooltipCss","BqTooltipStyle0","BqTooltip","trigger","panel","arrow","floatingUI","handleVisibleChange","this","visible","alwaysVisible","hide","show","handleFloatingUIOptionsChange","init","placement","distance","sameWidth","strategy","componentDidLoad","FloatingUI","hideArrow","skidding","disconnectedCallback","destroy","handleDocumentMouseDown","event","path","composedPath","includes","el","showTooltip","hideTooltip","handleTriggerMouseOver","displayOn","handleTriggerMouseLeave","handleTriggerOnClick","update","isHidden","render","h","key","class","part","onMouseOver","onMouseLeave","onClick","ref","name","hidden","role"],"sources":["../../packages/beeq/src/components/tooltip/scss/bq-tooltip.scss?tag=bq-tooltip&encapsulation=shadow","../../packages/beeq/src/components/tooltip/bq-tooltip.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Tooltip styles */\n/* -------------------------------------------------------------------------- */\n\n@import './bq-tooltip.variables';\n\n.bq-tooltip--panel {\n @include animation-fade-in;\n @apply pointer-events-none fixed z-[--bq-tooltip--z-index] box-border bg-[--bq-tooltip--background-color];\n @apply is-[--bq-tooltip--width] max-is-[--bq-tooltip--max-width] p-b-[--bq-tooltip--paddingY] p-i-[--bq-tooltip--paddingX];\n @apply text-[length:--bq-tooltip--font-size] leading-[--bq-tooltip--line-height] text-[color:--bq-tooltip--text-color];\n @apply rounded-[--bq-tooltip--border-radius] border-[length:--bq-tooltip--border-width] border-[color:--bq-tooltip--border-color];\n @apply shadow-[shadow:--bq-tooltip--box-shadow];\n}\n\n.bq-tooltip--arrow {\n &,\n &::before {\n @apply absolute -z-[1] bs-2 is-2;\n }\n\n &::before {\n @apply start-0 rotate-45 bg-[--bq-tooltip--background-color] content-empty inset-bs-0;\n }\n}\n","import { Component, Element, h, Listen, Method, Prop, Watch } from '@stencil/core';\n\nimport { Placement } from '../../services/interfaces';\nimport { FloatingUI } from '../../services/libraries';\n\n/**\n * @part base - The component wrapper container inside the shadow DOM\n * @part trigger - The `<div>` container that holds the element which displays tooltip on hover\n * @part panel - The `<div>` container that holds the tooltip content\n */\n@Component({\n tag: 'bq-tooltip',\n styleUrl: './scss/bq-tooltip.scss',\n shadow: true,\n})\nexport class BqTooltip {\n // Own Properties\n // ====================\n private trigger: HTMLElement;\n private panel: HTMLElement;\n private arrow: HTMLElement;\n private floatingUI: FloatingUI;\n\n // Reference to host HTML element\n // ===================================\n @Element() el!: HTMLBqTooltipElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** If true, the tooltip will always be visible */\n @Prop() alwaysVisible?: boolean = false;\n\n /** Distance between trigger element and tooltip */\n @Prop({ reflect: true }) distance?: number = 10;\n\n /** If true, the arrow on the tooltip content won't be shown */\n @Prop({ reflect: true }) hideArrow?: boolean = false;\n\n /* Defines the position of the tooltip */\n @Prop({ reflect: true }) placement?: Placement = 'top';\n\n /** Whether the tooltip should have the same width as the trigger element\n * (applicable only for content shorter than the trigger element) */\n @Prop({ reflect: true }) sameWidth?: boolean = false;\n\n /** Set the action when the tooltip should be displayed, on hover (default) or click */\n @Prop({ reflect: true }) displayOn: 'click' | 'hover' = 'hover';\n\n /**\n * Indicates whether or not the tooltip is visible when the component is first rendered,\n * and when interacting with the trigger\n */\n @Prop({ reflect: true, mutable: true }) visible? = false;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('visible')\n async handleVisibleChange() {\n if (!this.visible && !this.alwaysVisible) {\n return await this.hide();\n }\n\n await this.show();\n }\n\n @Watch('distance')\n @Watch('hideArrow')\n @Watch('placement')\n @Watch('sameWidth')\n handleFloatingUIOptionsChange() {\n this.floatingUI.init({\n placement: this.placement,\n distance: this.distance,\n sameWidth: this.sameWidth,\n strategy: 'fixed',\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.floatingUI = new FloatingUI(this.trigger, this.panel, {\n ...(!this.hideArrow && { arrow: this.arrow }),\n placement: this.placement,\n distance: this.distance,\n sameWidth: this.sameWidth,\n strategy: 'fixed',\n skidding: 0,\n });\n }\n\n disconnectedCallback() {\n this.floatingUI?.destroy();\n }\n // Listeners\n // ==============\n\n @Listen('mousedown', { target: 'document' })\n async handleDocumentMouseDown(event: MouseEvent) {\n // Close when clicking outside of the close element\n const path = event.composedPath();\n if (!path.includes(this.el)) {\n await this.hide();\n }\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 /** Shows the tooltip */\n @Method()\n async show() {\n this.visible = true;\n this.showTooltip();\n }\n\n /** Hides the tooltip */\n @Method()\n async hide() {\n if (this.alwaysVisible) return;\n\n this.visible = false;\n this.hideTooltip();\n }\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleTriggerMouseOver = () => {\n (async () => {\n if (this.displayOn !== 'hover') return;\n await this.show();\n })();\n };\n\n private handleTriggerMouseLeave = () => {\n (async () => {\n if (this.displayOn !== 'hover') return;\n await this.hide();\n })();\n };\n\n private handleTriggerOnClick = () => {\n (async () => {\n if (this.displayOn !== 'click') return;\n await (this.visible ? this.hide() : this.show());\n })();\n };\n\n private showTooltip = () => {\n if (!this.panel) return;\n this.floatingUI?.update();\n };\n\n private hideTooltip = () => {\n if (!this.panel) return;\n this.visible = false;\n };\n\n private get isHidden() {\n return !this.visible && !this.alwaysVisible;\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <div class=\"bq-tooltip relative\" part=\"base\">\n {/* TRIGGER */}\n <div\n class=\"bq-tooltip--trigger\"\n onMouseOver={this.handleTriggerMouseOver}\n onMouseLeave={this.handleTriggerMouseLeave}\n onClick={this.handleTriggerOnClick}\n ref={(el) => (this.trigger = el)}\n part=\"trigger\"\n >\n <slot name=\"trigger\" />\n </div>\n {/* PANEL */}\n <div\n class=\"bq-tooltip--panel\"\n aria-hidden={this.isHidden}\n hidden={this.isHidden}\n role=\"tooltip\"\n ref={(el) => (this.panel = el)}\n part=\"panel\"\n >\n {!this.hideArrow && <div class=\"bq-tooltip--arrow\" ref={(el) => (this.arrow = el)} />}\n <slot />\n </div>\n </div>\n );\n }\n}\n"],"mappings":";;;;sFAAA,MAAMA,EAAe,oqtBACrB,MAAAC,EAAeD,E,MCcFE,EAAS,M,4CAoBc,M,cAGW,G,eAGE,M,eAGE,M,eAIF,M,eAGS,Q,aAML,K,CAvC3CC,QACAC,MACAC,MACAC,W,wBA0CR,yBAAMC,GACJ,IAAKC,KAAKC,UAAYD,KAAKE,cAAe,CACxC,aAAaF,KAAKG,M,OAGdH,KAAKI,M,CAOb,6BAAAC,GACEL,KAAKF,WAAWQ,KAAK,CACnBC,UAAWP,KAAKO,UAChBC,SAAUR,KAAKQ,SACfC,UAAWT,KAAKS,UAChBC,SAAU,S,CAWd,gBAAAC,GACEX,KAAKF,WAAa,IAAIc,EAAWZ,KAAKL,QAASK,KAAKJ,MAAO,KACpDI,KAAKa,WAAa,CAAEhB,MAAOG,KAAKH,OACrCU,UAAWP,KAAKO,UAChBC,SAAUR,KAAKQ,SACfC,UAAWT,KAAKS,UAChBC,SAAU,QACVI,SAAU,G,CAId,oBAAAC,GACEf,KAAKF,YAAYkB,S,CAMnB,6BAAMC,CAAwBC,GAE5B,MAAMC,EAAOD,EAAME,eACnB,IAAKD,EAAKE,SAASrB,KAAKsB,IAAK,OACrBtB,KAAKG,M,EAaf,UAAMC,GACJJ,KAAKC,QAAU,KACfD,KAAKuB,a,CAKP,UAAMpB,GACJ,GAAIH,KAAKE,cAAe,OAExBF,KAAKC,QAAU,MACfD,KAAKwB,a,CAQCC,uBAAyB,KAC/B,WACE,GAAIzB,KAAK0B,YAAc,QAAS,aAC1B1B,KAAKI,MACZ,EAHD,EAGI,EAGEuB,wBAA0B,KAChC,WACE,GAAI3B,KAAK0B,YAAc,QAAS,aAC1B1B,KAAKG,MACZ,EAHD,EAGI,EAGEyB,qBAAuB,KAC7B,WACE,GAAI5B,KAAK0B,YAAc,QAAS,aACzB1B,KAAKC,QAAUD,KAAKG,OAASH,KAAKI,OAC1C,EAHD,EAGI,EAGEmB,YAAc,KACpB,IAAKvB,KAAKJ,MAAO,OACjBI,KAAKF,YAAY+B,QAAQ,EAGnBL,YAAc,KACpB,IAAKxB,KAAKJ,MAAO,OACjBI,KAAKC,QAAU,KAAK,EAGtB,YAAY6B,GACV,OAAQ9B,KAAKC,UAAYD,KAAKE,a,CAOhC,MAAA6B,GACE,OACEC,EAAA,OAAAC,IAAA,2CAAKC,MAAM,sBAAsBC,KAAK,QAEpCH,EAAA,OAAAC,IAAA,2CACEC,MAAM,sBACNE,YAAapC,KAAKyB,uBAClBY,aAAcrC,KAAK2B,wBACnBW,QAAStC,KAAK4B,qBACdW,IAAMjB,GAAQtB,KAAKL,QAAU2B,EAC7Ba,KAAK,WAELH,EAAA,QAAAC,IAAA,2CAAMO,KAAK,aAGbR,EAAA,OAAAC,IAAA,2CACEC,MAAM,oBAAmB,cACZlC,KAAK8B,SAClBW,OAAQzC,KAAK8B,SACbY,KAAK,UACLH,IAAMjB,GAAQtB,KAAKJ,MAAQ0B,EAC3Ba,KAAK,UAEHnC,KAAKa,WAAamB,EAAA,OAAAC,IAAA,2CAAKC,MAAM,oBAAoBK,IAAMjB,GAAQtB,KAAKH,MAAQyB,IAC9EU,EAAA,QAAAC,IAAA,8C","ignoreList":[]}
@@ -1,6 +0,0 @@
1
- /*!
2
- * Built by Endavans
3
- * © https://beeq.design - Apache 2 License.
4
- */
5
- import{r as a,c as r,g as b,h as e,a as q}from"./p-5da52049.js";import{i as n}from"./p-57621be1.js";const t='::backdrop,:root{--bq-blue-100:#e7f0fd;--bq-blue-200:#d0e2fb;--bq-blue-300:#a1c5f7;--bq-blue-400:#73a8f3;--bq-blue-500:#448bef;--bq-blue-600:#156eeb;--bq-blue-700:#1158bc;--bq-blue-800:#0d428d;--bq-blue-900:#082c5e;--bq-blue-1000:#04162f;--bq-corai-100:#fff2f2;--bq-corai-200:#ffe6e6;--bq-corai-300:#ffccce;--bq-corai-400:#ffb3b5;--bq-corai-500:#ff999d;--bq-corai-600:#ff8084;--bq-corai-700:#cc666a;--bq-corai-800:#994d4f;--bq-corai-900:#663335;--bq-corai-1000:#331a1a;--bq-cyan-100:#e8f7fb;--bq-cyan-200:#d2f0f8;--bq-cyan-300:#a5e1f1;--bq-cyan-400:#78d1e9;--bq-cyan-500:#4bc2e2;--bq-cyan-600:#1eb3db;--bq-cyan-700:#188faf;--bq-cyan-800:#126b83;--bq-cyan-900:#0c4858;--bq-cyan-1000:#06242c;--bq-gold-100:#fbf4ec;--bq-gold-200:#f7e9da;--bq-gold-300:#f0d3b6;--bq-gold-400:#e8bc91;--bq-gold-500:#e1a66d;--bq-gold-600:#d99048;--bq-gold-700:#ae733a;--bq-gold-800:#82562b;--bq-gold-900:#573a1d;--bq-gold-1000:#2b1d0e;--bq-green-100:#e8f8ef;--bq-green-200:#d2f1e0;--bq-green-300:#a5e3c1;--bq-green-400:#78d5a1;--bq-green-500:#4bc782;--bq-green-600:#1eb963;--bq-green-700:#18944f;--bq-green-800:#126f3b;--bq-green-900:#0c4a28;--bq-green-1000:#062514;--bq-grey-100:#f1f2f4;--bq-grey-200:#e7e8eb;--bq-grey-300:#caccd2;--bq-grey-400:#a6aab3;--bq-grey-50:#f6f6f8;--bq-grey-500:#898e99;--bq-grey-600:#646a77;--bq-grey-700:#3f4350;--bq-grey-800:#2a2c35;--bq-grey-900:#1c1d23;--bq-grey-950:#15161a;--bq-grey-1000:#0d0e11;--bq-indigo-100:#edecfc;--bq-indigo-200:#dcdafa;--bq-indigo-300:#b9b5f5;--bq-indigo-400:#9590ef;--bq-indigo-500:#726bea;--bq-indigo-600:#4f46e5;--bq-indigo-700:#3f38b7;--bq-indigo-800:#2f2a89;--bq-indigo-900:#201c5c;--bq-indigo-1000:#100e2e;--bq-iris-100:#e9f0ff;--bq-iris-200:#d6e0ff;--bq-iris-300:#b2c0fe;--bq-iris-400:#8691f8;--bq-iris-500:#6061ee;--bq-iris-600:#4f46e5;--bq-iris-700:#413abd;--bq-iris-800:#332e95;--bq-iris-900:#26216d;--bq-iris-1000:#181545;--bq-lime-100:#f5fae8;--bq-lime-200:#ecf6d2;--bq-lime-300:#d9eda5;--bq-lime-400:#c5e379;--bq-lime-500:#b2da4c;--bq-lime-600:#9fd11f;--bq-lime-700:#7fa719;--bq-lime-800:#5f7d13;--bq-lime-900:#40540c;--bq-lime-1000:#202a06;--bq-magenta-100:#fce7f4;--bq-magenta-200:#f9cfea;--bq-magenta-300:#f39fd6;--bq-magenta-400:#ee6fbf;--bq-magenta-500:#e83fab;--bq-magenta-600:#de1395;--bq-magenta-700:#b20f77;--bq-magenta-800:#850c59;--bq-magenta-900:#58083c;--bq-magenta-1000:#2c041e;--bq-neutral-white:#fbfbfc;--bq-neutral-black:#060708;--bq-orange-100:#fbf0e9;--bq-orange-200:#f8e1d4;--bq-orange-300:#f1c2a8;--bq-orange-400:#eaa47d;--bq-orange-500:#e38551;--bq-orange-600:#dc6726;--bq-orange-700:#b0521e;--bq-orange-800:#843e17;--bq-orange-900:#58290f;--bq-orange-1000:#2c1508;--bq-purple-100:#efebf8;--bq-purple-200:#e0d7f2;--bq-purple-300:#c1afe5;--bq-purple-400:#a388d8;--bq-purple-500:#8460cb;--bq-purple-600:#6538be;--bq-purple-700:#512d98;--bq-purple-800:#3d2272;--bq-purple-900:#28164c;--bq-purple-1000:#140b26;--bq-red-100:#fce7ea;--bq-red-200:#f9d1d5;--bq-red-300:#f3a2ac;--bq-red-400:#ed7482;--bq-red-500:#e74559;--bq-red-600:#e1172f;--bq-red-700:#b41226;--bq-red-800:#870e1c;--bq-red-900:#5a0913;--bq-red-1000:#2d0509;--bq-sky-100:#eff4fb;--bq-sky-200:#dfeaf8;--bq-sky-300:#bfd5f1;--bq-sky-400:#9ec1e9;--bq-sky-500:#7eace2;--bq-sky-600:#5e97db;--bq-sky-700:#4b79af;--bq-sky-800:#385b83;--bq-sky-900:#263c58;--bq-sky-1000:#131e2c;--bq-teal-100:#e5f7f5;--bq-teal-200:#ccf0eb;--bq-teal-300:#99e1d8;--bq-teal-400:#66d2c4;--bq-teal-500:#33c3b1;--bq-teal-600:#00b49d;--bq-teal-700:#00907e;--bq-teal-800:#006c5e;--bq-teal-900:#00483f;--bq-teal-1000:#00241f;--bq-volcano-100:#feede7;--bq-volcano-200:#fddbd1;--bq-volcano-300:#fbb8a3;--bq-volcano-400:#fa9474;--bq-volcano-500:#f87146;--bq-volcano-600:#f64d18;--bq-volcano-700:#c53e13;--bq-volcano-800:#942e0e;--bq-volcano-900:#621f0a;--bq-volcano-1000:#310f05;--bq-yellow-100:#fefbe7;--bq-yellow-200:#fcf6d0;--bq-yellow-300:#faeea0;--bq-yellow-400:#f7e571;--bq-yellow-500:#f5dd41;--bq-yellow-600:#f2d412;--bq-yellow-700:#c2aa0e;--bq-yellow-800:#917f0b;--bq-yellow-900:#615507;--bq-yellow-1000:#302a04;--bq-endava-grey-50:#f7f7f8;--bq-endava-grey-100:#e4e6e7;--bq-endava-grey-200:#b5babe;--bq-endava-grey-300:#949ca1;--bq-endava-grey-400:#737d84;--bq-endava-grey-500:#525f67;--bq-endava-grey-600:#30404b;--bq-endava-grey-700:#2b3942;--bq-endava-grey-800:#263139;--bq-endava-grey-900:#192b37;--bq-endava-grey-950:#151b1e;--bq-endava-grey-1000:#0f1316;--bq-endava-neutral-white:#fafbfb;--bq-endava-neutral-black:#060708;--bq-endava-orange-100:#fef3f1;--bq-endava-orange-200:#fbd6d1;--bq-endava-orange-300:#fab7af;--bq-endava-orange-400:#fa988b;--bq-endava-orange-500:#fc7866;--bq-endava-orange-600:#ff5640;--bq-endava-orange-700:#ce4a39;--bq-endava-orange-800:#a03d30;--bq-endava-orange-900:#722e25;--bq-endava-orange-1000:#471e19}*,:after,:before{box-sizing:border-box}*{font:inherit;margin:0}ol[role=list],ul[role=list]{list-style-type:none}html{font-size:var(--bq-font-size--m)}html:focus-within{scroll-behavior:smooth}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--bq-background--primary);color:var(--bq-text--primary);font-family:var(--bq-font-family);line-height:var(--bq-font-line-height--regular);min-height:100vh;text-rendering:optimizeSpeed}a:not([class]){text-decoration-skip-ink:auto}canvas,img,picture,svg,video{display:block;max-width:100%}button,input,select,textarea{font:inherit}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}@media (prefers-reduced-motion:reduce){html:focus-within{scroll-behavior:auto}*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto;transition-duration:.01ms!important}}:root{--bq-white:#fff;--bq-black:#060708;--bq-neutral-50:var(--bq-grey-50);--bq-neutral-100:var(--bq-grey-100);--bq-neutral-200:var(--bq-grey-200);--bq-neutral-300:var(--bq-grey-300);--bq-neutral-400:var(--bq-grey-400);--bq-neutral-500:var(--bq-grey-500);--bq-neutral-600:var(--bq-grey-600);--bq-neutral-700:var(--bq-grey-700);--bq-neutral-800:var(--bq-grey-800);--bq-neutral-900:var(--bq-grey-900);--bq-neutral-950:var(--bq-grey-950);--bq-neutral-1000:var(--bq-grey-1000);--bq-brand-light:var(--bq-iris-100);--bq-brand:var(--bq-iris-600);--bq-brand-dark:var(--bq-iris-1000);--bq-accent-light:var(--bq-purple-100);--bq-accent:var(--bq-purple-600);--bq-accent-dark:var(--bq-purple-1000);--bq-success-light:var(--bq-teal-100);--bq-success:var(--bq-teal-600);--bq-success-dark:var(--bq-teal-1000);--bq-danger-light:var(--bq-red-100);--bq-danger:var(--bq-red-600);--bq-danger-dark:var(--bq-red-1000);--bq-warning-light:var(--bq-gold-100);--bq-warning:var(--bq-gold-600);--bq-warning-dark:var(--bq-gold-1000);--bq-info-light:var(--bq-iris-100);--bq-info:var(--bq-iris-600);--bq-info-dark:var(--bq-iris-1000);--bq-focus:var(--bq-iris-600);--bq-data-01:var(--bq-brand);--bq-data-02:var(--bq-purple-600);--bq-data-03:var(--bq-magenta-600);--bq-data-04:var(--bq-cyan-600);--bq-data-05:var(--bq-teal-600);--bq-data-06:var(--bq-orange-600);--bq-data-07:var(--bq-yellow-600);--bq-data-08:var(--bq-red-600);--bq-data-09:var(--bq-blue-600);--bq-data-10:var(--bq-grey-600);--bq-data-11:var(--bq-black);--bq-data-12:var(--bq-white);--bq-radius--none:0;--bq-radius--xs2:0.125rem;--bq-radius--xs:0.25rem;--bq-radius--s:0.5rem;--bq-radius--m:0.75rem;--bq-radius--l:1.5rem;--bq-radius--full:9999px;--bq-box-shadow--xs:0 2px 0 rgba(0,0,0,.016);--bq-box-shadow--s:0 8px 24px rgba(0,0,0,.04);--bq-box-shadow--m:0 10px 48px -16px rgba(0,0,0,.12);--bq-box-shadow--l:0 20px 58px -16px rgba(0,0,0,.16);--bq-font-family:"Outfit",sans-serif;--bq-font-size--xs:0.75rem;--bq-font-size--s:0.875rem;--bq-font-size--m:1rem;--bq-font-size--l:1.125rem;--bq-font-size--xl:1.5rem;--bq-font-size--xxl:2rem;--bq-font-size--xxl2:2.5rem;--bq-font-size--xxl3:3rem;--bq-font-size--xxl4:3.5rem;--bq-font-size--xxl5:4rem;--bq-font-weight--thin:100;--bq-font-weight--light:300;--bq-font-weight--regular:400;--bq-font-weight--medium:500;--bq-font-weight--semibold:600;--bq-font-weight--bold:700;--bq-font-line-height--small:1.2;--bq-font-line-height--regular:1.5;--bq-font-line-height--large:1.5;--bq-spacing-xs3:0.125rem;--bq-spacing-xs2:0.25rem;--bq-spacing-xs:0.5rem;--bq-spacing-s:0.75rem;--bq-spacing-m:1rem;--bq-spacing-l:1.5rem;--bq-spacing-xl:2rem;--bq-spacing-xxl:2.5rem;--bq-spacing-xxl2:3.5rem;--bq-spacing-xxl3:4rem;--bq-spacing-xxl4:4.5rem;--bq-stroke-s:1px;--bq-stroke-m:2px;--bq-stroke-l:3px}.beeq.light,.light,:root,[bq-mode=light]{--bq-background--primary:var(--bq-white);--bq-background--secondary:var(--bq-neutral-100);--bq-background--tertiary:var(--bq-neutral-200);--bq-background--alt:var(--bq-neutral-300);--bq-background--inverse:var(--bq-neutral-900);--bq-background--brand:var(--bq-brand);--bq-background--overlay:var(--bq-neutral-900);--bq-icon--primary:var(--bq-neutral-800);--bq-icon--alt:var(--bq-white);--bq-icon--secondary:var(--bq-neutral-600);--bq-icon--inverse:var(--bq-neutral-50);--bq-icon--brand:var(--bq-brand);--bq-icon--info:var(--bq-brand);--bq-icon--success:var(--bq-success);--bq-icon--warning:var(--bq-warning);--bq-icon--danger:var(--bq-danger);--bq-stroke--primary:var(--bq-neutral-200);--bq-stroke--secondary:var(--bq-neutral-600);--bq-stroke--tertiary:var(--bq-neutral-900);--bq-stroke--inverse:var(--bq-white);--bq-stroke--brand:var(--bq-brand);--bq-stroke--alt:var(--bq-neutral-50);--bq-stroke--success:var(--bq-success);--bq-stroke--warning:var(--bq-warning);--bq-stroke--danger:var(--bq-danger);--bq-stroke--info:var(--bq-brand);--bq-text--primary:var(--bq-neutral-800);--bq-text--secondary:var(--bq-neutral-600);--bq-text--inverse:var(--bq-neutral-50);--bq-text--brand:var(--bq-brand);--bq-text--alt:var(--bq-white);--bq-text--info:var(--bq-brand);--bq-text--success:var(--bq-success);--bq-text--warning:var(--bq-warning);--bq-text--danger:var(--bq-danger);--bq-ui--primary:var(--bq-white);--bq-ui--secondary:var(--bq-neutral-200);--bq-ui--tertiary:var(--bq-neutral-500);--bq-ui--inverse:var(--bq-neutral-900);--bq-ui--brand:var(--bq-brand);--bq-ui--brand-alt:var(--bq-brand-light);--bq-ui--alt:var(--bq-neutral-50);--bq-ui--success:var(--bq-success);--bq-ui--success-alt:var(--bq-success-light);--bq-ui--warning:var(--bq-warning);--bq-ui--warning-alt:var(--bq-warning-light);--bq-ui--danger:var(--bq-danger);--bq-ui--danger-alt:var(--bq-danger-light);--bq-ui--info:var(--bq-brand);--bq-ui--info-alt:var(--bq-brand-light);--bq-hover:#bcbfc5;--bq-active:#444546}.beeq.dark,.dark,[bq-mode=dark]{--bq-background--primary:var(--bq-neutral-1000);--bq-background--secondary:var(--bq-neutral-950);--bq-background--tertiary:var(--bq-neutral-800);--bq-background--alt:var(--bq-neutral-700);--bq-background--inverse:var(--bq-neutral-600);--bq-background--brand:var(--bq-brand);--bq-background--overlay:var(--bq-neutral-900);--bq-icon--primary:var(--bq-neutral-100);--bq-icon--secondary:var(--bq-neutral-400);--bq-icon--inverse:var(--bq-neutral-800);--bq-icon--brand:var(--bq-brand);--bq-icon--alt:var(--bq-white);--bq-icon--info:var(--bq-brand);--bq-icon--success:var(--bq-success);--bq-icon--warning:var(--bq-warning);--bq-icon--danger:var(--bq-danger);--bq-stroke--primary:var(--bq-neutral-900);--bq-stroke--secondary:var(--bq-neutral-700);--bq-stroke--tertiary:var(--bq-neutral-400);--bq-stroke--inverse:var(--bq-neutral-950);--bq-stroke--brand:var(--bq-brand);--bq-stroke--alt:var(--bq-neutral-1000);--bq-stroke--success:var(--bq-success);--bq-stroke--warning:var(--bq-warning);--bq-stroke--danger:var(--bq-danger);--bq-stroke--info:var(--bq-brand);--bq-text--primary:var(--bq-neutral-100);--bq-text--secondary:var(--bq-neutral-400);--bq-text--inverse:var(--bq-neutral-800);--bq-text--brand:var(--bq-brand);--bq-text--alt:var(--bq-white);--bq-text--info:var(--bq-brand);--bq-text--success:var(--bq-success);--bq-text--warning:var(--bq-warning);--bq-text--danger:var(--bq-danger);--bq-ui--primary:var(--bq-neutral-900);--bq-ui--secondary:var(--bq-neutral-800);--bq-ui--tertiary:var(--bq-neutral-700);--bq-ui--inverse:var(--bq-neutral-100);--bq-ui--brand:var(--bq-brand);--bq-ui--brand-alt:var(--bq-brand-dark);--bq-ui--alt:var(--bq-neutral-950);--bq-ui--success:var(--bq-success);--bq-ui--success-alt:var(--bq-success-dark);--bq-ui--warning:var(--bq-warning);--bq-ui--warning-alt:var(--bq-warning-dark);--bq-ui--danger:var(--bq-danger);--bq-ui--danger-alt:var(--bq-danger-dark);--bq-ui--info:var(--bq-brand);--bq-ui--info-alt:var(--bq-brand-dark);--bq-hover:#444546;--bq-active:#1f2026}.endava,[bq-theme=endava]{--bq-font-family:"Poppins",sans-serif;--bq-white:#fafbfb;--bq-black:#030406;--bq-neutral-50:var(--bq-endava-grey-50);--bq-neutral-100:var(--bq-endava-grey-100);--bq-neutral-200:var(--bq-endava-grey-200);--bq-neutral-300:var(--bq-endava-grey-300);--bq-neutral-400:var(--bq-endava-grey-400);--bq-neutral-500:var(--bq-endava-grey-500);--bq-neutral-600:var(--bq-endava-grey-600);--bq-neutral-700:var(--bq-endava-grey-700);--bq-neutral-800:var(--bq-endava-grey-800);--bq-neutral-900:var(--bq-endava-grey-900);--bq-neutral-950:var(--bq-endava-grey-950);--bq-neutral-1000:var(--bq-endava-grey-1000);--bq-brand-light:var(--bq-endava-orange-100);--bq-brand:var(--bq-endava-orange-600);--bq-brand-dark:var(--bq-endava-orange-1000);--bq-accent-light:var(--bq-endava-orange-100);--bq-accent:var(--bq-endava-orange-600);--bq-accent-dark:var(--bq-endava-orange-1000);--bq-success-light:var(--bq-green-100);--bq-success:var(--bq-green-600);--bq-success-dark:var(--bq-green-1000);--bq-danger-light:var(--bq-corai-100);--bq-danger:var(--bq-corai-600);--bq-danger-dark:var(--bq-corai-1000);--bq-warning-light:var(--bq-yellow-100);--bq-warning:var(--bq-yellow-600);--bq-warning-dark:var(--bq-yellow-1000);--bq-info-light:var(--bq-blue-100);--bq-info:var(--bq-blue-600);--bq-info-dark:var(--bq-blue-1000);--bq-focus:var(--bq-endava-orange-600);--bq-data-01:var(--bq-brand);--bq-data-02:#af0cd8;--bq-data-03:#0ca8d8;--bq-data-04:var(--bq-teal-600);--bq-data-05:var(--bq-yellow-600);--bq-data-06:var(--bq-orange-600);--bq-data-07:var(--bq-blue-600);--bq-data-08:var(--bq-red-600);--bq-data-09:var(--bq-purple-600);--bq-data-10:#394b56;--bq-data-11:var(--bq-black);--bq-data-12:var(--bq-white)}.endava.light,[bq-theme=endava][bq-mode=light]{--bq-background--primary:var(--bq-white);--bq-background--secondary:var(--bq-neutral-100);--bq-background--tertiary:var(--bq-neutral-200);--bq-background--alt:var(--bq-neutral-300);--bq-background--inverse:var(--bq-neutral-900);--bq-background--brand:var(--bq-brand);--bq-background--overlay:var(--bq-neutral-900);--bq-icon--primary:var(--bq-neutral-800);--bq-icon--secondary:var(--bq-neutral-600);--bq-icon--inverse:var(--bq-neutral-50);--bq-icon--brand:var(--bq-brand);--bq-icon--alt:var(--bq-white);--bq-icon--info:var(--bq-info);--bq-icon--success:var(--bq-success);--bq-icon--warning:var(--bq-warning);--bq-icon--danger:var(--bq-danger);--bq-stroke--primary:var(--bq-neutral-200);--bq-stroke--secondary:var(--bq-neutral-600);--bq-stroke--tertiary:var(--bq-neutral-900);--bq-stroke--inverse:var(--bq-white);--bq-stroke--brand:var(--bq-brand);--bq-stroke--alt:var(--bq-neutral-50);--bq-stroke--brand-alt:var(--bq-brand-light);--bq-stroke--success:var(--bq-success);--bq-stroke--warning:var(--bq-warning);--bq-stroke--danger:var(--bq-danger);--bq-stroke--info:var(--bq-info);--bq-text--primary:var(--bq-neutral-800);--bq-text--secondary:var(--bq-neutral-600);--bq-text--inverse:var(--bq-neutral-50);--bq-text--brand:var(--bq-brand);--bq-text--alt:var(--bq-white);--bq-text--info:var(--bq-info);--bq-text--success:var(--bq-success);--bq-text--warning:var(--bq-warning);--bq-text--danger:var(--bq-danger);--bq-ui--primary:var(--bq-white);--bq-ui--secondary:var(--bq-neutral-200);--bq-ui--tertiary:var(--bq-neutral-500);--bq-ui--inverse:var(--bq-neutral-900);--bq-ui--alt:var(--bq-neutral-50);--bq-ui--brand-alt:var(--bq-brand-light);--bq-ui--brand:var(--bq-brand);--bq-ui--success:var(--bq-success);--bq-ui--success-alt:var(--bq-success-light);--bq-ui--warning:var(--bq-warning);--bq-ui--warning-alt:var(--bq-warning-light);--bq-ui--danger:var(--bq-danger);--bq-ui--danger-alt:var(--bq-danger-light);--bq-ui--info:var(--bq-info);--bq-ui--info-alt:var(--bq-info-light);--bq-hover:#444546;--bq-active:#1f2026}.endava.dark,[bq-theme=endava][bq-mode=dark]{--bq-background--primary:var(--bq-neutral-1000);--bq-background--secondary:var(--bq-neutral-900);--bq-background--tertiary:var(--bq-neutral-800);--bq-background--alt:var(--bq-neutral-700);--bq-background--inverse:var(--bq-neutral-600);--bq-background--brand:var(--bq-brand);--bq-background--overlay:var(--bq-neutral-900);--bq-icon--primary:var(--bq-neutral-100);--bq-icon--secondary:var(--bq-neutral-400);--bq-icon--inverse:var(--bq-neutral-800);--bq-icon--brand:var(--bq-brand);--bq-icon--alt:var(--bq-white);--bq-icon--info:var(--bq-info);--bq-icon--success:var(--bq-success);--bq-icon--warning:var(--bq-warning);--bq-icon--danger:var(--bq-danger);--bq-stroke--primary:var(--bq-neutral-900);--bq-stroke--secondary:var(--bq-neutral-700);--bq-stroke--tertiary:var(--bq-neutral-400);--bq-stroke--inverse:var(--bq-neutral-950);--bq-stroke--brand:var(--bq-brand);--bq-stroke--brand-alt:var(--bq-brand-dark);--bq-stroke--alt:var(--bq-neutral-1000);--bq-stroke--success:var(--bq-success);--bq-stroke--warning:var(--bq-warning);--bq-stroke--danger:var(--bq-danger);--bq-stroke--info:var(--bq-info);--bq-text--primary:var(--bq-neutral-100);--bq-text--secondary:var(--bq-neutral-400);--bq-text--inverse:var(--bq-neutral-800);--bq-text--brand:var(--bq-brand);--bq-text--alt:var(--bq-neutral-white);--bq-text--info:var(--bq-info);--bq-text--success:var(--bq-success);--bq-text--warning:var(--bq-warning);--bq-text--danger:var(--bq-danger);--bq-ui--primary:var(--bq-neutral-900);--bq-ui--secondary:var(--bq-neutral-800);--bq-ui--tertiary:var(--bq-neutral-700);--bq-ui--inverse:var(--bq-neutral-100);--bq-ui--brand:var(--bq-brand);--bq-ui--brand-alt:var(--bq-brand-dark);--bq-ui--alt:var(--bq-neutral-950);--bq-ui--success:var(--bq-success);--bq-ui--success-alt:var(--bq-success-dark);--bq-ui--warning:var(--bq-warning);--bq-ui--warning-alt:var(--bq-warning-dark);--bq-ui--danger:var(--bq-danger);--bq-ui--danger-alt:var(--bq-danger-dark);--bq-ui--info:var(--bq-info);--bq-ui--info-alt:var(--bq-info-dark);--bq-hover:#444546;--bq-active:#1f2026}.block{display:block}@-webkit-keyframes fade-in{0%{opacity:0}}@keyframes fade-in{0%{opacity:0}}@-webkit-keyframes slide-in{0%{-webkit-transform:translateY(10px);transform:translateY(10px)}}@keyframes slide-in{0%{-webkit-transform:translateY(10px);transform:translateY(10px)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}:host{display:block}.static{position:static}.flex{display:flex}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.is-3{inline-size:.75rem}.focus{outline:var(--bq-ring-width,2px) solid var(--bq-ring-color-focus,var(--bq-focus));outline-offset:var(--bq-ring-offset-width,1px)}';const i=t;const o=class{constructor(b){a(this,b);this.bqBreadcrumbBlur=r(this,"bqBreadcrumbBlur",7);this.bqBreadcrumbFocus=r(this,"bqBreadcrumbFocus",7);this.bqBreadcrumbClick=r(this,"bqBreadcrumbClick",7);this.ariaLabel="Breadcrumbs"}spanElem;get el(){return b(this)}bqBreadcrumbBlur;bqBreadcrumbFocus;bqBreadcrumbClick;onBlur(a){if(n(a.detail,"bq-breadcrumb-item"))this.bqBreadcrumbBlur.emit(a.detail)}onFocus(a){if(n(a.detail,"bq-breadcrumb-item"))this.bqBreadcrumbFocus.emit(a.detail)}onClick(a){if(n(a.detail,"bq-breadcrumb-item"))this.bqBreadcrumbClick.emit(a.detail)}setSeparator=()=>{this.breadcrumbItems.forEach(((a,r,b)=>{a.isLastItem=r===b.length-1;if(!a.isLastItem){a.append(this.getSeparatorElem())}}))};getSeparatorElem=()=>{const a=this.separatorFromSlot.cloneNode(true);a.slot="separator";return a};get breadcrumbItems(){return Array.from(this.el.querySelectorAll("bq-breadcrumb-item"))}get separatorFromSlot(){return this.spanElem.querySelector('slot[name="separator"]').assignedElements({flatten:true})[0]}render(){return e(q,{key:"8b19fb3ed3eab3ef129c39df0c958cb96b8ec372"},e("nav",{key:"b86de627c4fe184004e5d97e3a54066b8570d379",class:"flex items-center","aria-label":this.ariaLabel,part:"navigation"},e("slot",{key:"26e61864a66be926c76a3e5e87f5f76adcac30f7",onSlotchange:this.setSeparator})),e("span",{key:"a3c5daf93d836651b8eed3e73c61821eef800023",hidden:true,"aria-hidden":"true",ref:a=>this.spanElem=a},e("slot",{key:"920c61d131686209e9184015fa84c5b806ecc188",name:"separator"},e("span",{key:"3628f9a4a990227ad86b7a5ee100a7ee819d6e6e",class:"flex items-center justify-center is-3"},"/"))))}};o.style=i;export{o as bq_breadcrumb};
6
- //# sourceMappingURL=p-f9d9bd41.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["bqBreadcrumbCss","BqBreadcrumbStyle0","BqBreadcrumb","spanElem","bqBreadcrumbBlur","bqBreadcrumbFocus","bqBreadcrumbClick","onBlur","event","isHTMLElement","detail","this","emit","onFocus","onClick","setSeparator","breadcrumbItems","forEach","item","index","arr","isLastItem","length","append","getSeparatorElem","clone","separatorFromSlot","cloneNode","slot","Array","from","el","querySelectorAll","querySelector","assignedElements","flatten","render","h","Host","key","class","ariaLabel","part","onSlotchange","hidden","ref","element","name"],"sources":["../../packages/beeq/src/components/breadcrumb/scss/bq-breadcrumb.scss?tag=bq-breadcrumb&encapsulation=shadow","../../packages/beeq/src/components/breadcrumb/bq-breadcrumb.tsx"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Breadcrumb styles */\n/* -------------------------------------------------------------------------- */\n\n:host {\n @apply block;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Prop } from '@stencil/core';\n\nimport { isHTMLElement } from '../../shared/utils';\n\n/**\n * @part navigation - The `nav` tag that loads the breadcrumb items\n */\n@Component({\n tag: 'bq-breadcrumb',\n styleUrl: './scss/bq-breadcrumb.scss',\n shadow: true,\n})\nexport class BqBreadcrumb {\n // Own Properties\n // ====================\n\n private spanElem: HTMLElement;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqBreadcrumbElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** The `aria-label` attribute to describe the type of navigation */\n @Prop({ reflect: true }) ariaLabel: string = 'Breadcrumbs';\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 `bq-breadcrumb-item` item loses focus. */\n @Event() bqBreadcrumbBlur: EventEmitter<HTMLBqBreadcrumbItemElement>;\n\n /** Handler to be called when `bq-breadcrumb-item` item gets focus. */\n @Event() bqBreadcrumbFocus: EventEmitter<HTMLBqBreadcrumbItemElement>;\n\n /** Handler to be called when `bq-breadcrumb-item` is selected (on click/enter press). */\n @Event() bqBreadcrumbClick: EventEmitter<HTMLBqBreadcrumbItemElement>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n // Listeners\n // ==============\n\n @Listen('bqBlur', { passive: true })\n onBlur(event: CustomEvent<HTMLElement>) {\n if (isHTMLElement(event.detail, 'bq-breadcrumb-item')) this.bqBreadcrumbBlur.emit(event.detail);\n }\n\n @Listen('bqFocus', { passive: true })\n onFocus(event: CustomEvent<HTMLElement>) {\n if (isHTMLElement(event.detail, 'bq-breadcrumb-item')) this.bqBreadcrumbFocus.emit(event.detail);\n }\n\n @Listen('bqClick', { passive: true })\n onClick(event: CustomEvent<HTMLElement>) {\n if (isHTMLElement(event.detail, 'bq-breadcrumb-item')) this.bqBreadcrumbClick.emit(event.detail);\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 setSeparator = (): void => {\n this.breadcrumbItems.forEach((item, index, arr) => {\n item.isLastItem = index === arr.length - 1;\n if (!item.isLastItem) {\n item.append(this.getSeparatorElem());\n }\n });\n };\n\n /**\n * clone original element and add slot attr\n * @returns cloned separator element\n */\n private getSeparatorElem = (): HTMLElement => {\n const clone = this.separatorFromSlot.cloneNode(true) as HTMLElement;\n clone.slot = 'separator';\n\n return clone;\n };\n\n private get breadcrumbItems(): HTMLBqBreadcrumbItemElement[] {\n return Array.from(this.el.querySelectorAll('bq-breadcrumb-item'));\n }\n\n private get separatorFromSlot() {\n return this.spanElem\n .querySelector<HTMLSlotElement>('slot[name=\"separator\"]')\n .assignedElements({ flatten: true })[0] as HTMLElement;\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <Host>\n <nav class=\"flex items-center\" aria-label={this.ariaLabel} part=\"navigation\">\n <slot onSlotchange={this.setSeparator}></slot>\n </nav>\n\n <span hidden aria-hidden=\"true\" ref={(element) => (this.spanElem = element)}>\n <slot name=\"separator\">\n <span class=\"flex items-center justify-center is-3\">/</span>\n </slot>\n </span>\n </Host>\n );\n }\n}\n"],"mappings":";;;;oGAAA,MAAMA,EAAkB,mqlBACxB,MAAAC,EAAeD,E,MCWFE,EAAY,M,qMAmBsB,a,CAfrCC,S,wBAyBCC,iBAGAC,kBAGAC,kBAUT,MAAAC,CAAOC,GACL,GAAIC,EAAcD,EAAME,OAAQ,sBAAuBC,KAAKP,iBAAiBQ,KAAKJ,EAAME,O,CAI1F,OAAAG,CAAQL,GACN,GAAIC,EAAcD,EAAME,OAAQ,sBAAuBC,KAAKN,kBAAkBO,KAAKJ,EAAME,O,CAI3F,OAAAI,CAAQN,GACN,GAAIC,EAAcD,EAAME,OAAQ,sBAAuBC,KAAKL,kBAAkBM,KAAKJ,EAAME,O,CAenFK,aAAe,KACrBJ,KAAKK,gBAAgBC,SAAQ,CAACC,EAAMC,EAAOC,KACzCF,EAAKG,WAAaF,IAAUC,EAAIE,OAAS,EACzC,IAAKJ,EAAKG,WAAY,CACpBH,EAAKK,OAAOZ,KAAKa,mB,IAEnB,EAOIA,iBAAmB,KACzB,MAAMC,EAAQd,KAAKe,kBAAkBC,UAAU,MAC/CF,EAAMG,KAAO,YAEb,OAAOH,CAAK,EAGd,mBAAYT,GACV,OAAOa,MAAMC,KAAKnB,KAAKoB,GAAGC,iBAAiB,sB,CAG7C,qBAAYN,GACV,OAAOf,KAAKR,SACT8B,cAA+B,0BAC/BC,iBAAiB,CAAEC,QAAS,OAAQ,E,CAOzC,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,oBAAmB,aAAa7B,KAAK8B,UAAWC,KAAK,cAC9DL,EAAA,QAAAE,IAAA,2CAAMI,aAAchC,KAAKI,gBAG3BsB,EAAA,QAAAE,IAAA,2CAAMK,OAAM,mBAAa,OAAOC,IAAMC,GAAanC,KAAKR,SAAW2C,GACjET,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,aACTV,EAAA,QAAAE,IAAA,2CAAMC,MAAM,yCAAuC,O","ignoreList":[]}