@beeq/core 1.7.0 → 1.8.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) 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/{p-a062b9c4.entry.js → p-235328ee.entry.js} +2 -2
  4. package/dist/beeq/{p-c88ca7e9.entry.js → p-255fcbe4.entry.js} +2 -2
  5. package/dist/beeq/{p-5402707e.entry.js → p-268dc1e3.entry.js} +2 -2
  6. package/dist/beeq/p-38d4bd8a.js +6 -0
  7. package/dist/beeq/p-38d4bd8a.js.map +1 -0
  8. package/dist/beeq/{p-7691bdfc.entry.js → p-3aa41d80.entry.js} +2 -2
  9. package/dist/beeq/{p-6b824dba.entry.js → p-3b2ce34b.entry.js} +2 -2
  10. package/dist/beeq/p-3fd0d92d.js.map +1 -1
  11. package/dist/beeq/{p-a2157e4d.entry.js → p-41bac721.entry.js} +2 -2
  12. package/dist/beeq/{p-d9a3844f.entry.js → p-4739f5c3.entry.js} +2 -2
  13. package/dist/beeq/{p-889e6317.entry.js → p-4ba2bec7.entry.js} +2 -2
  14. package/dist/beeq/{p-d4ca1283.entry.js → p-52577f3a.entry.js} +2 -2
  15. package/dist/beeq/{p-2e8e7e37.entry.js → p-571b40ff.entry.js} +2 -2
  16. package/dist/beeq/{p-fbb780c2.entry.js → p-606c080c.entry.js} +2 -2
  17. package/dist/beeq/{p-21a51ee0.entry.js → p-633319f3.entry.js} +2 -2
  18. package/dist/beeq/p-63ad9702.entry.js +6 -0
  19. package/dist/beeq/p-63ad9702.entry.js.map +1 -0
  20. package/dist/beeq/{p-8b870d05.entry.js → p-6e026fad.entry.js} +2 -2
  21. package/dist/beeq/p-76e714c6.js +7 -0
  22. package/dist/beeq/p-76e714c6.js.map +1 -0
  23. package/dist/beeq/{p-4291b23f.entry.js → p-79b7547b.entry.js} +2 -2
  24. package/dist/beeq/{p-a453d36c.entry.js → p-7f23cde7.entry.js} +2 -2
  25. package/dist/beeq/{p-4f8ce653.entry.js → p-8059836c.entry.js} +2 -2
  26. package/dist/beeq/p-8b7c7049.entry.js +6 -0
  27. package/dist/beeq/p-8b7c7049.entry.js.map +1 -0
  28. package/dist/beeq/{p-64835973.entry.js → p-90c5851d.entry.js} +2 -2
  29. package/dist/beeq/{p-3711298a.entry.js → p-94d62f1b.entry.js} +2 -2
  30. package/dist/beeq/{p-61c97bdc.entry.js → p-96d7f361.entry.js} +2 -2
  31. package/dist/beeq/{p-cec068b9.entry.js → p-9acfedb8.entry.js} +2 -2
  32. package/dist/beeq/p-9acfedb8.entry.js.map +1 -0
  33. package/dist/beeq/p-9c6c6646.entry.js +6 -0
  34. package/dist/beeq/p-9c6c6646.entry.js.map +1 -0
  35. package/dist/beeq/{p-a9ca89e7.entry.js → p-9cd26e8d.entry.js} +2 -2
  36. package/dist/beeq/{p-bcf6e585.entry.js → p-9f40249f.entry.js} +2 -2
  37. package/dist/beeq/{p-9c3030c7.entry.js → p-a006be9e.entry.js} +2 -2
  38. package/dist/beeq/{p-b2c55a62.entry.js → p-a7b0fd0b.entry.js} +2 -2
  39. package/dist/beeq/p-a8cb8989.entry.js +6 -0
  40. package/dist/beeq/p-a8cb8989.entry.js.map +1 -0
  41. package/dist/beeq/{p-c3e33045.entry.js → p-ae8ffb81.entry.js} +2 -2
  42. package/dist/beeq/p-af062402.js +6 -0
  43. package/dist/beeq/p-af062402.js.map +1 -0
  44. package/dist/beeq/{p-39f3d9d2.entry.js → p-b7281046.entry.js} +2 -2
  45. package/dist/beeq/{p-d62cad31.entry.js → p-b90c6de9.entry.js} +2 -2
  46. package/dist/beeq/{p-aae41e31.entry.js → p-b9544567.entry.js} +2 -2
  47. package/dist/beeq/p-b9544567.entry.js.map +1 -0
  48. package/dist/beeq/{p-f7d3f428.entry.js → p-be664fb0.entry.js} +2 -2
  49. package/dist/beeq/{p-819acf02.entry.js → p-c9c942e6.entry.js} +2 -2
  50. package/dist/beeq/{p-ec4a6d10.entry.js → p-d2bbae3b.entry.js} +2 -2
  51. package/dist/beeq/p-d2bbae3b.entry.js.map +1 -0
  52. package/dist/beeq/{p-bcc85103.entry.js → p-ddb23180.entry.js} +2 -2
  53. package/dist/beeq/{p-67367b7d.entry.js → p-e6382462.entry.js} +2 -2
  54. package/dist/beeq/{p-554d0f45.entry.js → p-eab59153.entry.js} +2 -2
  55. package/dist/beeq/{p-02202605.entry.js → p-eddb77c7.entry.js} +2 -2
  56. package/dist/cjs/app-globals-b11284b9.js.map +1 -1
  57. package/dist/cjs/beeq.cjs.js +2 -2
  58. package/dist/cjs/bq-accordion-group.cjs.entry.js +1 -1
  59. package/dist/cjs/bq-accordion.cjs.entry.js +1 -1
  60. package/dist/cjs/bq-alert.cjs.entry.js +1 -1
  61. package/dist/cjs/bq-avatar.cjs.entry.js +1 -1
  62. package/dist/cjs/bq-badge.cjs.entry.js +1 -1
  63. package/dist/cjs/bq-breadcrumb-item.cjs.entry.js +1 -1
  64. package/dist/cjs/bq-breadcrumb.cjs.entry.js +1 -1
  65. package/dist/cjs/bq-button_2.cjs.entry.js +23 -19
  66. package/dist/cjs/bq-button_2.cjs.entry.js.map +1 -1
  67. package/dist/cjs/bq-card.cjs.entry.js +1 -1
  68. package/dist/cjs/bq-checkbox.cjs.entry.js +56 -5
  69. package/dist/cjs/bq-checkbox.cjs.entry.js.map +1 -1
  70. package/dist/cjs/bq-date-picker.cjs.entry.js +1 -1
  71. package/dist/cjs/bq-dialog.cjs.entry.js +2 -2
  72. package/dist/cjs/bq-divider.cjs.entry.js +1 -1
  73. package/dist/cjs/bq-drawer.cjs.entry.js +6 -6
  74. package/dist/cjs/bq-drawer.cjs.entry.js.map +1 -1
  75. package/dist/cjs/bq-dropdown_2.cjs.entry.js +2 -2
  76. package/dist/cjs/bq-empty-state.cjs.entry.js +1 -1
  77. package/dist/cjs/bq-input.cjs.entry.js +41 -14
  78. package/dist/cjs/bq-input.cjs.entry.js.map +1 -1
  79. package/dist/cjs/bq-notification.cjs.entry.js +1 -1
  80. package/dist/cjs/bq-option-group.cjs.entry.js +1 -1
  81. package/dist/cjs/bq-option-list_2.cjs.entry.js +4 -4
  82. package/dist/cjs/bq-option.cjs.entry.js +1 -1
  83. package/dist/cjs/bq-page-title.cjs.entry.js +1 -1
  84. package/dist/cjs/bq-progress.cjs.entry.js +1 -1
  85. package/dist/cjs/bq-radio-group.cjs.entry.js +1 -1
  86. package/dist/cjs/bq-radio.cjs.entry.js +1 -1
  87. package/dist/cjs/bq-select.cjs.entry.js +74 -26
  88. package/dist/cjs/bq-select.cjs.entry.js.map +1 -1
  89. package/dist/cjs/bq-side-menu-item.cjs.entry.js +1 -1
  90. package/dist/cjs/bq-side-menu.cjs.entry.js +1 -1
  91. package/dist/cjs/bq-slider.cjs.entry.js +1 -1
  92. package/dist/cjs/bq-spinner.cjs.entry.js +1 -1
  93. package/dist/cjs/bq-status.cjs.entry.js +1 -1
  94. package/dist/cjs/bq-step-item.cjs.entry.js +1 -1
  95. package/dist/cjs/bq-steps.cjs.entry.js +1 -1
  96. package/dist/cjs/bq-switch.cjs.entry.js +1 -1
  97. package/dist/cjs/bq-tab-group.cjs.entry.js +31 -15
  98. package/dist/cjs/bq-tab-group.cjs.entry.js.map +1 -1
  99. package/dist/cjs/bq-tab.cjs.entry.js +13 -7
  100. package/dist/cjs/bq-tab.cjs.entry.js.map +1 -1
  101. package/dist/cjs/bq-tab.types-a8b320b0.js +15 -0
  102. package/dist/cjs/bq-tab.types-a8b320b0.js.map +1 -0
  103. package/dist/cjs/bq-textarea.cjs.entry.js +4 -4
  104. package/dist/cjs/bq-toast.cjs.entry.js +2 -2
  105. package/dist/cjs/bq-tooltip.cjs.entry.js +3 -3
  106. package/dist/cjs/{index-a09d1c08.js → index-e4c116b6.js} +12 -9
  107. package/dist/cjs/index-e4c116b6.js.map +1 -0
  108. package/dist/cjs/{index-76b0999c.js → index-e6d59dbb.js} +30 -2
  109. package/dist/cjs/index-e6d59dbb.js.map +1 -0
  110. package/dist/cjs/loader.cjs.js +2 -2
  111. package/dist/collection/components/checkbox/bq-checkbox.js +67 -3
  112. package/dist/collection/components/checkbox/bq-checkbox.js.map +1 -1
  113. package/dist/collection/components/dialog/scss/bq-dialog.css +1 -1
  114. package/dist/collection/components/drawer/bq-drawer.js +7 -5
  115. package/dist/collection/components/drawer/bq-drawer.js.map +1 -1
  116. package/dist/collection/components/drawer/scss/bq-drawer.css +1 -1
  117. package/dist/collection/components/icon/helper/request.js +23 -19
  118. package/dist/collection/components/icon/helper/request.js.map +1 -1
  119. package/dist/collection/components/input/bq-input.js +34 -13
  120. package/dist/collection/components/input/bq-input.js.map +1 -1
  121. package/dist/collection/components/select/bq-select.js +68 -26
  122. package/dist/collection/components/select/bq-select.js.map +1 -1
  123. package/dist/collection/components/select/scss/bq-select.css +1 -1
  124. package/dist/collection/components/tab/bq-tab.js +62 -4
  125. package/dist/collection/components/tab/bq-tab.js.map +1 -1
  126. package/dist/collection/components/tab/bq-tab.types.js +2 -0
  127. package/dist/collection/components/tab/bq-tab.types.js.map +1 -1
  128. package/dist/collection/components/tab/scss/bq-tab.css +1 -1
  129. package/dist/collection/components/tab-group/bq-tab-group.js +81 -14
  130. package/dist/collection/components/tab-group/bq-tab-group.js.map +1 -1
  131. package/dist/collection/components/tab-group/scss/bq-tab-group.css +1 -1
  132. package/dist/collection/components/tag/bq-tag.js +3 -3
  133. package/dist/collection/components/textarea/bq-textarea.js +3 -3
  134. package/dist/collection/components/toast/bq-toast.js +1 -1
  135. package/dist/collection/components/tooltip/bq-tooltip.js +1 -1
  136. package/dist/components/bq-checkbox.js +53 -6
  137. package/dist/components/bq-checkbox.js.map +1 -1
  138. package/dist/components/bq-dialog.js +1 -1
  139. package/dist/components/bq-drawer.js +5 -5
  140. package/dist/components/bq-drawer.js.map +1 -1
  141. package/dist/components/bq-icon2.js +23 -19
  142. package/dist/components/bq-icon2.js.map +1 -1
  143. package/dist/components/bq-input.js +35 -13
  144. package/dist/components/bq-input.js.map +1 -1
  145. package/dist/components/bq-select.js +68 -25
  146. package/dist/components/bq-select.js.map +1 -1
  147. package/dist/components/bq-tab-group.js +36 -16
  148. package/dist/components/bq-tab-group.js.map +1 -1
  149. package/dist/components/bq-tab.js +17 -7
  150. package/dist/components/bq-tab.js.map +1 -1
  151. package/dist/components/bq-tab.types.js +3 -1
  152. package/dist/components/bq-tab.types.js.map +1 -1
  153. package/dist/components/bq-tag2.js +3 -3
  154. package/dist/components/bq-textarea.js +3 -3
  155. package/dist/components/bq-toast.js +1 -1
  156. package/dist/components/bq-tooltip2.js +1 -1
  157. package/dist/components/index2.js +11 -8
  158. package/dist/components/index2.js.map +1 -1
  159. package/dist/esm/app-globals-de5a646b.js.map +1 -1
  160. package/dist/esm/beeq.js +3 -3
  161. package/dist/esm/bq-accordion-group.entry.js +1 -1
  162. package/dist/esm/bq-accordion.entry.js +1 -1
  163. package/dist/esm/bq-alert.entry.js +1 -1
  164. package/dist/esm/bq-avatar.entry.js +1 -1
  165. package/dist/esm/bq-badge.entry.js +1 -1
  166. package/dist/esm/bq-breadcrumb-item.entry.js +1 -1
  167. package/dist/esm/bq-breadcrumb.entry.js +1 -1
  168. package/dist/esm/bq-button_2.entry.js +23 -19
  169. package/dist/esm/bq-button_2.entry.js.map +1 -1
  170. package/dist/esm/bq-card.entry.js +1 -1
  171. package/dist/esm/bq-checkbox.entry.js +56 -5
  172. package/dist/esm/bq-checkbox.entry.js.map +1 -1
  173. package/dist/esm/bq-date-picker.entry.js +1 -1
  174. package/dist/esm/bq-dialog.entry.js +2 -2
  175. package/dist/esm/bq-divider.entry.js +1 -1
  176. package/dist/esm/bq-drawer.entry.js +6 -6
  177. package/dist/esm/bq-drawer.entry.js.map +1 -1
  178. package/dist/esm/bq-dropdown_2.entry.js +2 -2
  179. package/dist/esm/bq-empty-state.entry.js +1 -1
  180. package/dist/esm/bq-input.entry.js +41 -14
  181. package/dist/esm/bq-input.entry.js.map +1 -1
  182. package/dist/esm/bq-notification.entry.js +1 -1
  183. package/dist/esm/bq-option-group.entry.js +1 -1
  184. package/dist/esm/bq-option-list_2.entry.js +4 -4
  185. package/dist/esm/bq-option.entry.js +1 -1
  186. package/dist/esm/bq-page-title.entry.js +1 -1
  187. package/dist/esm/bq-progress.entry.js +1 -1
  188. package/dist/esm/bq-radio-group.entry.js +1 -1
  189. package/dist/esm/bq-radio.entry.js +1 -1
  190. package/dist/esm/bq-select.entry.js +74 -26
  191. package/dist/esm/bq-select.entry.js.map +1 -1
  192. package/dist/esm/bq-side-menu-item.entry.js +1 -1
  193. package/dist/esm/bq-side-menu.entry.js +1 -1
  194. package/dist/esm/bq-slider.entry.js +1 -1
  195. package/dist/esm/bq-spinner.entry.js +1 -1
  196. package/dist/esm/bq-status.entry.js +1 -1
  197. package/dist/esm/bq-step-item.entry.js +1 -1
  198. package/dist/esm/bq-steps.entry.js +1 -1
  199. package/dist/esm/bq-switch.entry.js +1 -1
  200. package/dist/esm/bq-tab-group.entry.js +31 -15
  201. package/dist/esm/bq-tab-group.entry.js.map +1 -1
  202. package/dist/esm/bq-tab.entry.js +13 -7
  203. package/dist/esm/bq-tab.entry.js.map +1 -1
  204. package/dist/esm/bq-tab.types-36e2666e.js +11 -0
  205. package/dist/esm/bq-tab.types-36e2666e.js.map +1 -0
  206. package/dist/esm/bq-textarea.entry.js +4 -4
  207. package/dist/esm/bq-toast.entry.js +2 -2
  208. package/dist/esm/bq-tooltip.entry.js +3 -3
  209. package/dist/esm/{index-138f308e.js → index-136429a6.js} +12 -9
  210. package/dist/esm/index-136429a6.js.map +1 -0
  211. package/dist/esm/{index-7eed7a88.js → index-efc1c2ef.js} +30 -2
  212. package/dist/esm/index-efc1c2ef.js.map +1 -0
  213. package/dist/esm/loader.js +3 -3
  214. package/dist/hydrate/index.js +294 -105
  215. package/dist/hydrate/index.mjs +294 -105
  216. package/dist/stencil.config.js +1 -4
  217. package/dist/stencil.config.js.map +1 -1
  218. package/dist/types/components/checkbox/bq-checkbox.d.ts +9 -0
  219. package/dist/types/components/drawer/bq-drawer.d.ts +3 -1
  220. package/dist/types/components/input/bq-input.d.ts +4 -1
  221. package/dist/types/components/select/bq-select.d.ts +18 -0
  222. package/dist/types/components/tab/bq-tab.d.ts +5 -1
  223. package/dist/types/components/tab/bq-tab.types.d.ts +4 -0
  224. package/dist/types/components/tab-group/bq-tab-group.d.ts +5 -1
  225. package/dist/types/components.d.ts +42 -2
  226. package/package.json +24 -24
  227. package/dist/beeq/p-0f528ec6.js +0 -6
  228. package/dist/beeq/p-0f528ec6.js.map +0 -1
  229. package/dist/beeq/p-1d3f236b.entry.js +0 -6
  230. package/dist/beeq/p-1d3f236b.entry.js.map +0 -1
  231. package/dist/beeq/p-3a1f06e1.entry.js +0 -6
  232. package/dist/beeq/p-3a1f06e1.entry.js.map +0 -1
  233. package/dist/beeq/p-463a17cf.js +0 -7
  234. package/dist/beeq/p-463a17cf.js.map +0 -1
  235. package/dist/beeq/p-48b27aef.entry.js +0 -6
  236. package/dist/beeq/p-48b27aef.entry.js.map +0 -1
  237. package/dist/beeq/p-68fdea6a.js +0 -6
  238. package/dist/beeq/p-68fdea6a.js.map +0 -1
  239. package/dist/beeq/p-7567ae06.entry.js +0 -6
  240. package/dist/beeq/p-7567ae06.entry.js.map +0 -1
  241. package/dist/beeq/p-aae41e31.entry.js.map +0 -1
  242. package/dist/beeq/p-cec068b9.entry.js.map +0 -1
  243. package/dist/beeq/p-ec4a6d10.entry.js.map +0 -1
  244. package/dist/cjs/bq-tab.types-9fe0234a.js +0 -11
  245. package/dist/cjs/bq-tab.types-9fe0234a.js.map +0 -1
  246. package/dist/cjs/index-76b0999c.js.map +0 -1
  247. package/dist/cjs/index-a09d1c08.js.map +0 -1
  248. package/dist/esm/bq-tab.types-f64aa67d.js +0 -9
  249. package/dist/esm/bq-tab.types-f64aa67d.js.map +0 -1
  250. package/dist/esm/index-138f308e.js.map +0 -1
  251. package/dist/esm/index-7eed7a88.js.map +0 -1
  252. /package/dist/beeq/{p-a062b9c4.entry.js.map → p-235328ee.entry.js.map} +0 -0
  253. /package/dist/beeq/{p-c88ca7e9.entry.js.map → p-255fcbe4.entry.js.map} +0 -0
  254. /package/dist/beeq/{p-5402707e.entry.js.map → p-268dc1e3.entry.js.map} +0 -0
  255. /package/dist/beeq/{p-7691bdfc.entry.js.map → p-3aa41d80.entry.js.map} +0 -0
  256. /package/dist/beeq/{p-6b824dba.entry.js.map → p-3b2ce34b.entry.js.map} +0 -0
  257. /package/dist/beeq/{p-a2157e4d.entry.js.map → p-41bac721.entry.js.map} +0 -0
  258. /package/dist/beeq/{p-d9a3844f.entry.js.map → p-4739f5c3.entry.js.map} +0 -0
  259. /package/dist/beeq/{p-889e6317.entry.js.map → p-4ba2bec7.entry.js.map} +0 -0
  260. /package/dist/beeq/{p-d4ca1283.entry.js.map → p-52577f3a.entry.js.map} +0 -0
  261. /package/dist/beeq/{p-2e8e7e37.entry.js.map → p-571b40ff.entry.js.map} +0 -0
  262. /package/dist/beeq/{p-fbb780c2.entry.js.map → p-606c080c.entry.js.map} +0 -0
  263. /package/dist/beeq/{p-21a51ee0.entry.js.map → p-633319f3.entry.js.map} +0 -0
  264. /package/dist/beeq/{p-8b870d05.entry.js.map → p-6e026fad.entry.js.map} +0 -0
  265. /package/dist/beeq/{p-4291b23f.entry.js.map → p-79b7547b.entry.js.map} +0 -0
  266. /package/dist/beeq/{p-a453d36c.entry.js.map → p-7f23cde7.entry.js.map} +0 -0
  267. /package/dist/beeq/{p-4f8ce653.entry.js.map → p-8059836c.entry.js.map} +0 -0
  268. /package/dist/beeq/{p-64835973.entry.js.map → p-90c5851d.entry.js.map} +0 -0
  269. /package/dist/beeq/{p-3711298a.entry.js.map → p-94d62f1b.entry.js.map} +0 -0
  270. /package/dist/beeq/{p-61c97bdc.entry.js.map → p-96d7f361.entry.js.map} +0 -0
  271. /package/dist/beeq/{p-a9ca89e7.entry.js.map → p-9cd26e8d.entry.js.map} +0 -0
  272. /package/dist/beeq/{p-bcf6e585.entry.js.map → p-9f40249f.entry.js.map} +0 -0
  273. /package/dist/beeq/{p-9c3030c7.entry.js.map → p-a006be9e.entry.js.map} +0 -0
  274. /package/dist/beeq/{p-b2c55a62.entry.js.map → p-a7b0fd0b.entry.js.map} +0 -0
  275. /package/dist/beeq/{p-c3e33045.entry.js.map → p-ae8ffb81.entry.js.map} +0 -0
  276. /package/dist/beeq/{p-39f3d9d2.entry.js.map → p-b7281046.entry.js.map} +0 -0
  277. /package/dist/beeq/{p-d62cad31.entry.js.map → p-b90c6de9.entry.js.map} +0 -0
  278. /package/dist/beeq/{p-f7d3f428.entry.js.map → p-be664fb0.entry.js.map} +0 -0
  279. /package/dist/beeq/{p-819acf02.entry.js.map → p-c9c942e6.entry.js.map} +0 -0
  280. /package/dist/beeq/{p-bcc85103.entry.js.map → p-ddb23180.entry.js.map} +0 -0
  281. /package/dist/beeq/{p-67367b7d.entry.js.map → p-e6382462.entry.js.map} +0 -0
  282. /package/dist/beeq/{p-554d0f45.entry.js.map → p-eab59153.entry.js.map} +0 -0
  283. /package/dist/beeq/{p-02202605.entry.js.map → p-eddb77c7.entry.js.map} +0 -0
  284. /package/dist/types/{home/runner/work/BEEQ/BEEQ → Users/dramos/PROJECTs/ENDAVA/BEEQ-Design-System}/packages/beeq/.stencil/packages/beeq/stencil.config.d.ts +0 -0
  285. /package/dist/types/{home/runner/work/BEEQ/BEEQ → Users/dramos/PROJECTs/ENDAVA/BEEQ-Design-System}/packages/beeq/.stencil/tailwind.config.d.ts +0 -0
@@ -5,33 +5,37 @@
5
5
  /* -------------------------------------------------------------------------- */
6
6
  /* Icon request helper */
7
7
  /* -------------------------------------------------------------------------- */
8
- import { isString } from "../../../shared/utils";
8
+ import { isNil, isString } from "../../../shared/utils";
9
9
  const requests = new Map();
10
10
  const fetchSvg = async (url, sanitize) => {
11
- let req;
12
- if (typeof fetch !== 'undefined' && typeof document !== 'undefined') {
13
- const rsp = await fetch(url);
14
- if (rsp.ok) {
15
- return rsp.text().then((svgContent) => {
16
- if (svgContent && sanitize !== false)
17
- svgContent = validateContent(svgContent);
18
- iconContent.set(url, svgContent || '');
19
- });
11
+ if (typeof fetch === 'undefined' || typeof document === 'undefined')
12
+ return;
13
+ if (requests.has(url))
14
+ return requests.get(url);
15
+ try {
16
+ const response = await fetch(url);
17
+ if (!response.ok) {
18
+ iconContent.set(url, '');
19
+ return;
20
20
  }
21
+ let svgContent = (await response.text()) || '';
22
+ if (svgContent && sanitize !== false)
23
+ svgContent = validateContent(svgContent);
24
+ iconContent.set(url, svgContent);
25
+ }
26
+ catch (error) {
27
+ console.error(`[BqIcon] Failed to fetch SVG from ${url}:`, error);
21
28
  iconContent.set(url, '');
22
- // cache for the same requests
23
- requests.set(url, req);
24
- return req;
25
29
  }
26
- iconContent.set(url, '');
27
- return Promise.resolve();
28
30
  };
29
31
  export const iconContent = new Map();
30
32
  export const getSvgContent = async (url, sanitize) => {
31
- // see if we already have a request for this SVG file
32
- const req = await requests.get(url);
33
- if (!req)
34
- return fetchSvg(url, sanitize);
33
+ let req = requests.get(url);
34
+ // NOTE: if the request does not exists we will cache it
35
+ if (isNil(req)) {
36
+ req = fetchSvg(url, sanitize);
37
+ requests.set(url, req);
38
+ }
35
39
  return req;
36
40
  };
37
41
  export const validateContent = (svgContent) => {
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../../../../../src/components/icon/helper/request.ts"],"names":[],"mappings":"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","sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Icon request helper */\n/* -------------------------------------------------------------------------- */\n\nimport { isString } from '../../../shared/utils';\n\nconst requests = new Map<string, Promise<unknown>>();\n\nconst fetchSvg = async (url: string, sanitize: boolean): Promise<unknown> => {\n let req: Promise<unknown>;\n\n if (typeof fetch !== 'undefined' && typeof document !== 'undefined') {\n const rsp = await fetch(url);\n if (rsp.ok) {\n return rsp.text().then((svgContent) => {\n if (svgContent && sanitize !== false) svgContent = validateContent(svgContent);\n iconContent.set(url, svgContent || '');\n });\n }\n iconContent.set(url, '');\n // cache for the same requests\n requests.set(url, req);\n return req;\n }\n\n iconContent.set(url, '');\n return Promise.resolve();\n};\n\nexport const iconContent = new Map<string, string>();\n\nexport const getSvgContent = async (url: string, sanitize: boolean) => {\n // see if we already have a request for this SVG file\n const req = await requests.get(url);\n if (!req) return fetchSvg(url, sanitize);\n\n return req;\n};\n\nexport const validateContent = (svgContent: string): string => {\n const svgTag = 'svg';\n const iconCssClass = 'bq-icon__svg';\n\n const div = document.createElement('div');\n div.innerHTML = svgContent;\n\n for (let i = div.childNodes.length - 1; i >= 0; i--) {\n if (div.childNodes[i].nodeName.toLowerCase() !== svgTag) {\n div.removeChild(div.childNodes[i]);\n }\n }\n\n // must only have 1 root element\n const svgElm = div.firstElementChild;\n if (svgElm && svgElm.nodeName.toLowerCase() === svgTag) {\n // keep other CSS classes (if there's any) and add the `bq-icon__svg` CSS class\n const othersCssClasses = svgElm.getAttribute('class') || '';\n svgElm.setAttribute('class', `${othersCssClasses} ${iconCssClass}`.trim());\n // set the shadow DOM part for the SVG element\n svgElm.setAttribute('part', svgTag);\n\n // remove height and width attribute, if for some reason they are still present in the SVG tag\n svgElm.removeAttribute('height');\n svgElm.removeAttribute('width');\n\n // root element must be an svg\n // lets double check we've got valid elements\n // do not allow scripts\n if (isValid(svgElm as HTMLElement)) return div.innerHTML;\n }\n\n return '';\n};\n\nexport const isValid = (elm: HTMLElement): boolean => {\n if (elm.nodeType === Node.ELEMENT_NODE) {\n if (elm.nodeName.toLowerCase() === 'script') return false;\n\n for (const attribute of Array.from(elm.attributes)) {\n const value = attribute.value;\n if (isString(value) && value.toLowerCase().startsWith('on')) {\n return false;\n }\n }\n\n for (const childNode of Array.from(elm.children) as HTMLElement[]) {\n if (!isValid(childNode)) return false;\n }\n }\n return true;\n};\n"]}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../../../../../src/components/icon/helper/request.ts"],"names":[],"mappings":"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","sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Icon request helper */\n/* -------------------------------------------------------------------------- */\n\nimport { isNil, isString } from '../../../shared/utils';\n\nconst requests = new Map<string, Promise<unknown>>();\n\nconst fetchSvg = async (url: string, sanitize: boolean): Promise<unknown> => {\n if (typeof fetch === 'undefined' || typeof document === 'undefined') return;\n\n if (requests.has(url)) return requests.get(url);\n\n try {\n const response = await fetch(url);\n\n if (!response.ok) {\n iconContent.set(url, '');\n return;\n }\n\n let svgContent = (await response.text()) || '';\n\n if (svgContent && sanitize !== false) svgContent = validateContent(svgContent);\n\n iconContent.set(url, svgContent);\n } catch (error) {\n console.error(`[BqIcon] Failed to fetch SVG from ${url}:`, error);\n iconContent.set(url, '');\n }\n};\n\nexport const iconContent = new Map<string, string>();\n\nexport const getSvgContent = async (url: string, sanitize: boolean) => {\n let req = requests.get(url);\n\n // NOTE: if the request does not exists we will cache it\n if (isNil(req)) {\n req = fetchSvg(url, sanitize);\n requests.set(url, req);\n }\n return req;\n};\n\nexport const validateContent = (svgContent: string): string => {\n const svgTag = 'svg';\n const iconCssClass = 'bq-icon__svg';\n\n const div = document.createElement('div');\n div.innerHTML = svgContent;\n\n for (let i = div.childNodes.length - 1; i >= 0; i--) {\n if (div.childNodes[i].nodeName.toLowerCase() !== svgTag) {\n div.removeChild(div.childNodes[i]);\n }\n }\n\n // must only have 1 root element\n const svgElm = div.firstElementChild;\n if (svgElm && svgElm.nodeName.toLowerCase() === svgTag) {\n // keep other CSS classes (if there's any) and add the `bq-icon__svg` CSS class\n const othersCssClasses = svgElm.getAttribute('class') || '';\n svgElm.setAttribute('class', `${othersCssClasses} ${iconCssClass}`.trim());\n // set the shadow DOM part for the SVG element\n svgElm.setAttribute('part', svgTag);\n\n // remove height and width attribute, if for some reason they are still present in the SVG tag\n svgElm.removeAttribute('height');\n svgElm.removeAttribute('width');\n\n // root element must be an svg\n // lets double check we've got valid elements\n // do not allow scripts\n if (isValid(svgElm as HTMLElement)) return div.innerHTML;\n }\n\n return '';\n};\n\nexport const isValid = (elm: HTMLElement): boolean => {\n if (elm.nodeType === Node.ELEMENT_NODE) {\n if (elm.nodeName.toLowerCase() === 'script') return false;\n\n for (const attribute of Array.from(elm.attributes)) {\n const value = attribute.value;\n if (isString(value) && value.toLowerCase().startsWith('on')) {\n return false;\n }\n }\n\n for (const childNode of Array.from(elm.children) as HTMLElement[]) {\n if (!isValid(childNode)) return false;\n }\n }\n return true;\n};\n"]}
@@ -3,7 +3,7 @@
3
3
  * © https://beeq.design - Apache 2 License.
4
4
  */
5
5
  import { h } from "@stencil/core";
6
- import { debounce, hasSlotContent, isDefined, isHTMLElement } from "../../shared/utils";
6
+ import { debounce, hasSlotContent, isDefined, isHTMLElement, isNil } from "../../shared/utils";
7
7
  /**
8
8
  * @part base - The component's base wrapper.
9
9
  * @part button - The native HTML button used under the hood in the clear button.
@@ -48,6 +48,7 @@ export class BqInput {
48
48
  if (!isHTMLElement(ev.target, 'input'))
49
49
  return;
50
50
  this.value = this.type === 'number' ? Number(ev.target.value) : ev.target.value;
51
+ this.internals.setFormValue(`${this.value}`);
51
52
  this.debounceBqInput = debounce(() => {
52
53
  this.bqInput.emit({ value: this.value, el: this.el });
53
54
  }, this.debounceTime);
@@ -59,18 +60,29 @@ export class BqInput {
59
60
  if (!isHTMLElement(ev.target, 'input'))
60
61
  return;
61
62
  this.value = this.type === 'number' ? Number(ev.target.value) : ev.target.value;
63
+ this.internals.setFormValue(`${this.value}`);
62
64
  this.bqChange.emit({ value: this.value, el: this.el });
63
65
  };
64
- this.handleClearClick = (ev) => {
66
+ this.handleClear = () => {
65
67
  if (this.disabled)
66
68
  return;
67
- this.inputElem.value = '';
68
- this.value = this.inputElem.value;
69
- this.bqClear.emit(this.el);
70
- this.bqInput.emit({ value: this.value, el: this.el });
71
- this.bqChange.emit({ value: this.value, el: this.el });
72
- this.inputElem.focus();
69
+ const { inputElem, internals } = this;
70
+ // Clear input element value
71
+ inputElem.value = '';
72
+ this.value = inputElem.value;
73
+ // Update associated form control value
74
+ internals.setFormValue(undefined);
75
+ };
76
+ this.handleClearClick = (ev) => {
73
77
  ev.stopPropagation();
78
+ this.handleClear();
79
+ const { bqClear, bqChange, bqInput, el, inputElem } = this;
80
+ // Emit events
81
+ bqClear.emit(el);
82
+ bqInput.emit({ value: this.value, el });
83
+ bqChange.emit({ value: this.value, el });
84
+ // Refocus input element
85
+ inputElem.focus();
74
86
  };
75
87
  this.handleLabelSlotChange = () => {
76
88
  this.hasLabel = hasSlotContent(this.labelElem);
@@ -118,37 +130,45 @@ export class BqInput {
118
130
  handleValueChange() {
119
131
  if (Array.isArray(this.value)) {
120
132
  this.hasValue = this.value.some((val) => val.length > 0);
133
+ this.internals.setFormValue(this.value.join(','));
121
134
  return;
122
135
  }
123
136
  this.hasValue = isDefined(this.value);
137
+ this.internals.setFormValue(`${this.value}`);
124
138
  }
125
139
  // Component lifecycle events
126
140
  // Ordered by their natural call order
127
141
  // =====================================
128
- componentDidLoad() {
142
+ componentWillLoad() {
129
143
  this.handleValueChange();
130
144
  }
145
+ formResetCallback() {
146
+ if (isNil(this.value))
147
+ return;
148
+ this.handleClear();
149
+ }
131
150
  // render() function
132
151
  // Always the last one in the class.
133
152
  // ===================================
134
153
  render() {
135
- return (h("div", { key: '1ae2deecd4fa19bd61218aa9d19f904484920f41', class: "bq-input", part: "base" }, h("label", { key: '9de5803ed7c8d8a8a891f9e18956ea35c826c8f4', class: { 'bq-input--label': true, '!hidden': !this.hasLabel }, htmlFor: this.name || this.fallbackInputId, ref: (labelElem) => (this.labelElem = labelElem), part: "label" }, h("slot", { key: '7f0c67232346e6f3b4406a85dc32f8cff07bf92f', name: "label", onSlotchange: this.handleLabelSlotChange })), h("div", { key: '81fc67ce7d417e3bd058b002084b5d4caf4d34b3', class: {
154
+ return (h("div", { key: 'c9d184b8abfbaebda3478f7b8892c7d2bf024fdc', class: "bq-input", part: "base" }, h("label", { key: 'a938804cb78f78b65c1c2139d90fd98e5edecb52', class: { 'bq-input--label': true, '!hidden': !this.hasLabel }, htmlFor: this.name || this.fallbackInputId, ref: (labelElem) => (this.labelElem = labelElem), part: "label" }, h("slot", { key: '37c407ab1b0399be8371629431d839f138f751df', name: "label", onSlotchange: this.handleLabelSlotChange })), h("div", { key: '130305745ed36bbe2d1012508f3ae2653b6794b2', class: {
136
155
  'bq-input--control': true,
137
156
  [`validation-${this.validationStatus}`]: true,
138
157
  disabled: this.disabled,
139
- }, part: "control" }, h("span", { key: '21bfb1ba4c4696c903d89912a9792a516229065e', class: { 'bq-input--control__prefix': true, '!hidden': !this.hasPrefix }, ref: (spanElem) => (this.prefixElem = spanElem), part: "prefix" }, h("slot", { key: '6c1e6fadf86ac71e4625a76ef4db47145f7f0536', name: "prefix", onSlotchange: this.handlePrefixSlotChange })), h("input", { key: '2a9f590bebc2e4ee3c499f9b886fbb8e93c5dd4e', id: this.name || this.fallbackInputId, class: "bq-input--control__input", "aria-disabled": this.disabled ? 'true' : 'false', autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, disabled: this.disabled, form: this.form, inputMode: this.inputmode, max: this.max, maxLength: this.maxlength, min: this.min, minLength: this.minlength, name: this.name, pattern: this.pattern, placeholder: this.placeholder, ref: (inputElem) => (this.inputElem = inputElem), readOnly: this.readonly, required: this.required, step: this.step, type: this.type, value: this.value, part: "input",
158
+ }, part: "control" }, h("span", { key: '59c8d5f28373cae3741f4420da1fbc4744869806', class: { 'bq-input--control__prefix': true, '!hidden': !this.hasPrefix }, ref: (spanElem) => (this.prefixElem = spanElem), part: "prefix" }, h("slot", { key: '4f6a705b9a4e7deb46e334c11c6b242b091afec6', name: "prefix", onSlotchange: this.handlePrefixSlotChange })), h("input", { key: '6c238b5c2329d3f77dd4cb8a0aac9ffbfc937aad', id: this.name || this.fallbackInputId, class: "bq-input--control__input", "aria-disabled": this.disabled ? 'true' : 'false', autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, disabled: this.disabled, form: this.form, inputMode: this.inputmode, max: this.max, maxLength: this.maxlength, min: this.min, minLength: this.minlength, name: this.name, pattern: this.pattern, placeholder: this.placeholder, ref: (inputElem) => (this.inputElem = inputElem), readOnly: this.readonly, required: this.required, step: this.step, type: this.type, value: this.value, part: "input",
140
159
  // Events
141
160
  onBlur: this.handleBlur, onChange: this.handleChange, onFocus: this.handleFocus, onInput: this.handleInput }), this.hasValue && !this.disabled && !this.disableClear && (
142
161
  // The clear button will be visible as long as the input has a value
143
162
  // and the parent group is hovered or has focus-within
144
- h("bq-button", { key: 'bf70483fba3d6702235ef13cc233264d54e2ee56', class: "bq-input--control__clear ms-[--bq-input--gap] hidden", appearance: "text", "aria-label": this.clearButtonLabel, size: "small", onBqClick: this.handleClearClick, part: "clear-btn", exportparts: "button" }, h("slot", { key: 'c373c061079d75103a196ad5e02abc5d1b6b6419', name: "clear-icon" }, h("bq-icon", { key: 'd95569e369733dd13595fbe1e48ae52dea01f86f', name: "x-circle", class: "flex" })))), h("span", { key: 'ef24c4e495c264be6568fcd69eb26bdb8759cd45', class: { 'bq-input--control__suffix': true, '!hidden': !this.hasSuffix }, ref: (spanElem) => (this.suffixElem = spanElem), part: "suffix" }, h("slot", { key: '387273312fe4b196a2ab360af65a625761396a74', name: "suffix", onSlotchange: this.handleSuffixSlotChange }))), h("div", { key: '1d053fcabb1ea861b787af8a6e859592d04a1ed7', class: {
163
+ h("bq-button", { key: 'bae89f316a8c7cfb04d1bcff8df6e418c93fa838', class: "bq-input--control__clear ms-[--bq-input--gap] hidden", appearance: "text", "aria-label": this.clearButtonLabel, size: "small", onBqClick: this.handleClearClick, part: "clear-btn", exportparts: "button" }, h("slot", { key: 'd00287e78d20d2fdcbac8aa89a3bb30c40c6b8f1', name: "clear-icon" }, h("bq-icon", { key: '9be1f57ece6cea670a5c7adc76fb70feb66663c5', name: "x-circle", class: "flex" })))), h("span", { key: '93421c6d1e061e2a19315d1d8aadbcc2a01f19c3', class: { 'bq-input--control__suffix': true, '!hidden': !this.hasSuffix }, ref: (spanElem) => (this.suffixElem = spanElem), part: "suffix" }, h("slot", { key: 'ccb589bdc3b227467885d728c82f3fcedacb1695', name: "suffix", onSlotchange: this.handleSuffixSlotChange }))), h("div", { key: 'b0374c936b4e3839ed936ade23ad59aa3c69cf9a', class: {
145
164
  [`bq-input--helper-text validation-${this.validationStatus}`]: true,
146
165
  '!hidden': !this.hasHelperText,
147
- }, ref: (divElem) => (this.helperTextElem = divElem), part: "helper-text" }, h("slot", { key: '71c49f2521db11b80a1c0dc8ae4466411a732ea6', name: "helper-text", onSlotchange: this.handleHelperTextSlotChange }))));
166
+ }, ref: (divElem) => (this.helperTextElem = divElem), part: "helper-text" }, h("slot", { key: 'a0a8c8d546efa959d6126e96ddf97a702263026f', name: "helper-text", onSlotchange: this.handleHelperTextSlotChange }))));
148
167
  }
149
168
  static get is() { return "bq-input"; }
150
169
  static get encapsulation() { return "shadow"; }
151
170
  static get delegatesFocus() { return true; }
171
+ static get formAssociated() { return true; }
152
172
  static get originalStyleUrls() {
153
173
  return {
154
174
  "$": ["./scss/bq-input.scss"]
@@ -703,5 +723,6 @@ export class BqInput {
703
723
  "methodName": "handleValueChange"
704
724
  }];
705
725
  }
726
+ static get attachInternalsMemberName() { return "internals"; }
706
727
  }
707
728
  //# sourceMappingURL=bq-input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bq-input.js","sourceRoot":"","sources":["../../../../../../src/components/input/bq-input.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Prop, State, Watch } from '@stencil/core';\n\nimport { TInputType, TInputValidation, TInputValue } from './bq-input.types';\nimport { debounce, hasSlotContent, isDefined, isHTMLElement, TDebounce } from '../../shared/utils';\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 helper-text - The helper text slot container.\n * @part label - The label slot container.\n * @part input - The native HTML input element used under the hood.\n * @part prefix - The prefix slot container.\n * @part suffix - The suffix slot container.\n */\n@Component({\n tag: 'bq-input',\n styleUrl: './scss/bq-input.scss',\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class BqInput {\n // Own Properties\n // ====================\n\n private helperTextElem?: HTMLElement;\n private inputElem?: HTMLInputElement;\n private labelElem?: HTMLElement;\n private prefixElem?: HTMLElement;\n private suffixElem?: HTMLElement;\n\n private debounceBqInput: TDebounce<void>;\n private fallbackInputId = 'input';\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqInputElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() hasHelperText = false;\n @State() hasLabel = false;\n @State() hasPrefix = false;\n @State() hasSuffix = false;\n @State() hasValue = false;\n\n // Public Property API\n // ========================\n\n /**\n * Controls whether or not the input field should be capitalized and how.\n * Possible values are 'off', 'none', 'on', 'sentences', 'words', and 'characters'.\n * See: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize\n */\n @Prop({ reflect: true }) autocapitalize: string = 'off';\n\n /**\n * Specifies whether or not the input field should have autocomplete enabled.\n * See: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values\n */\n @Prop({ reflect: true }) autocomplete: string = 'off';\n\n /**\n * Controls whether or not the input field should have autocorrect enabled.\n * Possible values are 'on' and 'off'.\n */\n @Prop({ reflect: true }) autocorrect: 'on' | 'off' = 'off';\n\n /** If true, the input will be focused on component render */\n @Prop({ reflect: true }) autofocus: boolean;\n\n /** The clear button aria label */\n @Prop({ reflect: true }) clearButtonLabel? = 'Clear value';\n\n /**\n * The amount of time, in milliseconds, to wait before emitting the `bqInput` event after the input value changes.\n * A value of 0 means no debouncing will occur.\n */\n @Prop({ reflect: true, mutable: true }) debounceTime? = 0;\n\n /**\n * Indicates whether the input is disabled or not.\n * If `true`, the input is disabled and cannot be interacted with.\n */\n @Prop({ mutable: true }) disabled?: boolean = false;\n\n /** If true, the clear button won't be displayed */\n @Prop({ reflect: true }) disableClear? = false;\n\n /** The ID of the form that the input field belongs to. */\n @Prop({ reflect: true }) form?: string;\n\n /**\n * The inputmode attribute specifies what kind of input mechanism would be most helpful for users entering content into the input field.\n * This allows a browser to display an appropriate virtual keyboard while editing.\n * Possible values are 'none', 'text', 'decimal', 'numeric', 'tel', 'search', 'email', 'url', and 'date'.\n */\n @Prop() inputmode?: string;\n\n /**\n * The maximum value that the input field can accept.\n * Only applies to date and number input types.\n */\n @Prop({ reflect: true }) max?: number | string;\n\n /** The maximum number of characters that the input field can accept. */\n @Prop({ reflect: true }) maxlength: number;\n\n /**\n * The minimum value that the input field can accept.\n * Only applies to date and number input types.\n */\n @Prop({ reflect: true }) min?: number | string;\n\n /** The minimum number of characters that the input field can accept. */\n @Prop({ reflect: true }) minlength: number;\n\n /** The input field name. */\n @Prop({ reflect: true }) name!: string;\n\n /**\n * Specifies a regular expression the form control's value should match.\n * See: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern\n */\n @Prop({ reflect: true }) pattern?: string;\n\n /** The input placeholder text value */\n @Prop({ reflect: true }) placeholder?: string;\n\n /** If true, the input field cannot be modified. */\n @Prop({ reflect: true }) readonly?: boolean;\n\n /** Indicates whether or not the input field is required to be filled out before submitting the form. */\n @Prop({ reflect: true }) required?: boolean;\n\n /**\n * A number that specifies the granularity that the value must adhere to.\n * Valid for date, month, week, time, datetime-local, number, and range.\n * See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#step\n */\n @Prop({ reflect: true }) step: number | 'any';\n\n /**\n * The type attribute specifies the type of input field to display.\n * Possible values are 'text', 'password', 'email', 'number', 'tel', 'search', 'url', and more.\n * See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#input_types\n */\n @Prop({ reflect: true }) type: TInputType = 'text';\n\n /**\n * The validation status of the input.\n *\n * @remarks\n * This property is used to indicate the validation status of the input. It can be set to one of the following values:\n * - `'none'`: No validation status is set.\n * - `'error'`: The input has a validation error.\n * - `'warning'`: The input has a validation warning.\n * - `'success'`: The input has passed validation.\n */\n @Prop({ reflect: true }) validationStatus: TInputValidation = 'none';\n\n /** The input value, it can be used to reset the input to a previous value */\n @Prop({ reflect: true, mutable: true }) value: TInputValue;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('value')\n handleValueChange() {\n if (Array.isArray(this.value)) {\n this.hasValue = this.value.some((val) => val.length > 0);\n return;\n }\n\n this.hasValue = isDefined(this.value);\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler emitted when the input loses focus */\n @Event() bqBlur!: EventEmitter<HTMLBqInputElement>;\n\n /**\n * Callback handler emitted when the input value has changed and the input loses focus.\n * This handler is called whenever the user finishes typing or pasting text into the input field and then clicks outside of the input field.\n */\n @Event() bqChange!: EventEmitter<{ value: string | number | string[]; el: HTMLBqInputElement }>;\n\n /** Callback handler emitted when the input value has been cleared */\n @Event() bqClear!: EventEmitter<HTMLBqInputElement>;\n\n /** Callback handler emitted when the input has received focus */\n @Event() bqFocus!: EventEmitter<HTMLBqInputElement>;\n\n /**\n * Callback handler emitted when the input value changes.\n * This handler is called whenever the user types or pastes text into the input field.\n */\n @Event() bqInput!: EventEmitter<{ value: string | number | string[]; el: HTMLBqInputElement }>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentDidLoad() {\n this.handleValueChange();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleBlur = () => {\n if (this.disabled) return;\n\n this.bqBlur.emit(this.el);\n };\n\n private handleFocus = () => {\n if (this.disabled) return;\n\n this.bqFocus.emit(this.el);\n };\n\n private handleInput = (ev: Event) => {\n if (this.disabled) return;\n\n this.debounceBqInput?.cancel();\n\n if (!isHTMLElement(ev.target, 'input')) return;\n this.value = this.type === 'number' ? Number(ev.target.value) : ev.target.value;\n\n this.debounceBqInput = debounce(() => {\n this.bqInput.emit({ value: this.value, el: this.el });\n }, this.debounceTime);\n this.debounceBqInput();\n };\n\n private handleChange = (ev: Event) => {\n if (this.disabled) return;\n\n if (!isHTMLElement(ev.target, 'input')) return;\n this.value = this.type === 'number' ? Number(ev.target.value) : ev.target.value;\n\n this.bqChange.emit({ value: this.value, el: this.el });\n };\n\n private handleClearClick = (ev: CustomEvent) => {\n if (this.disabled) return;\n\n this.inputElem.value = '';\n this.value = this.inputElem.value;\n\n this.bqClear.emit(this.el);\n this.bqInput.emit({ value: this.value, el: this.el });\n this.bqChange.emit({ value: this.value, el: this.el });\n this.inputElem.focus();\n\n ev.stopPropagation();\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 // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <div class=\"bq-input\" part=\"base\">\n {/* Label */}\n <label\n class={{ 'bq-input--label': true, '!hidden': !this.hasLabel }}\n htmlFor={this.name || this.fallbackInputId}\n ref={(labelElem) => (this.labelElem = labelElem)}\n part=\"label\"\n >\n <slot name=\"label\" onSlotchange={this.handleLabelSlotChange} />\n </label>\n {/* Input control group */}\n <div\n class={{\n 'bq-input--control': true,\n [`validation-${this.validationStatus}`]: true,\n disabled: this.disabled,\n }}\n part=\"control\"\n >\n {/* Prefix */}\n <span\n class={{ 'bq-input--control__prefix': true, '!hidden': !this.hasPrefix }}\n ref={(spanElem) => (this.prefixElem = spanElem)}\n part=\"prefix\"\n >\n <slot name=\"prefix\" onSlotchange={this.handlePrefixSlotChange} />\n </span>\n {/* HTML Input */}\n <input\n id={this.name || this.fallbackInputId}\n class=\"bq-input--control__input\"\n aria-disabled={this.disabled ? 'true' : 'false'}\n autoCapitalize={this.autocapitalize}\n autoComplete={this.autocomplete}\n autoCorrect={this.autocorrect}\n autoFocus={this.autofocus}\n disabled={this.disabled}\n form={this.form}\n inputMode={this.inputmode}\n max={this.max}\n maxLength={this.maxlength}\n min={this.min}\n minLength={this.minlength}\n name={this.name}\n pattern={this.pattern}\n placeholder={this.placeholder}\n ref={(inputElem) => (this.inputElem = inputElem)}\n readOnly={this.readonly}\n required={this.required}\n step={this.step}\n type={this.type}\n value={this.value}\n part=\"input\"\n // Events\n onBlur={this.handleBlur}\n onChange={this.handleChange}\n onFocus={this.handleFocus}\n onInput={this.handleInput}\n />\n {/* Clear Button */}\n {this.hasValue && !this.disabled && !this.disableClear && (\n // The clear button will be visible as long as the input has a value\n // and the parent group is hovered or has focus-within\n <bq-button\n class=\"bq-input--control__clear ms-[--bq-input--gap] hidden\"\n appearance=\"text\"\n aria-label={this.clearButtonLabel}\n size=\"small\"\n onBqClick={this.handleClearClick}\n part=\"clear-btn\"\n exportparts=\"button\"\n >\n <slot name=\"clear-icon\">\n <bq-icon name=\"x-circle\" class=\"flex\" />\n </slot>\n </bq-button>\n )}\n {/* Suffix */}\n <span\n class={{ 'bq-input--control__suffix': true, '!hidden': !this.hasSuffix }}\n ref={(spanElem) => (this.suffixElem = spanElem)}\n part=\"suffix\"\n >\n <slot name=\"suffix\" onSlotchange={this.handleSuffixSlotChange} />\n </span>\n </div>\n {/* Helper text */}\n <div\n class={{\n [`bq-input--helper-text validation-${this.validationStatus}`]: true,\n '!hidden': !this.hasHelperText,\n }}\n ref={(divElem) => (this.helperTextElem = divElem)}\n part=\"helper-text\"\n >\n <slot name=\"helper-text\" onSlotchange={this.handleHelperTextSlotChange} />\n </div>\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"bq-input.js","sourceRoot":"","sources":["../../../../../../src/components/input/bq-input.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AttachInternals, Component, Element, Event, EventEmitter, h, Prop, State, Watch } from '@stencil/core';\n\nimport { TInputType, TInputValidation, TInputValue } from './bq-input.types';\nimport { debounce, hasSlotContent, isDefined, isHTMLElement, isNil, TDebounce } from '../../shared/utils';\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 helper-text - The helper text slot container.\n * @part label - The label slot container.\n * @part input - The native HTML input element used under the hood.\n * @part prefix - The prefix slot container.\n * @part suffix - The suffix slot container.\n */\n@Component({\n tag: 'bq-input',\n styleUrl: './scss/bq-input.scss',\n formAssociated: true,\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class BqInput {\n // Own Properties\n // ====================\n\n private helperTextElem?: HTMLElement;\n private inputElem?: HTMLInputElement;\n private labelElem?: HTMLElement;\n private prefixElem?: HTMLElement;\n private suffixElem?: HTMLElement;\n\n private debounceBqInput: TDebounce<void>;\n private fallbackInputId = 'input';\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqInputElement;\n @AttachInternals() internals!: ElementInternals;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() hasHelperText = false;\n @State() hasLabel = false;\n @State() hasPrefix = false;\n @State() hasSuffix = false;\n @State() hasValue = false;\n\n // Public Property API\n // ========================\n\n /**\n * Controls whether or not the input field should be capitalized and how.\n * Possible values are 'off', 'none', 'on', 'sentences', 'words', and 'characters'.\n * See: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize\n */\n @Prop({ reflect: true }) autocapitalize: string = 'off';\n\n /**\n * Specifies whether or not the input field should have autocomplete enabled.\n * See: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values\n */\n @Prop({ reflect: true }) autocomplete: string = 'off';\n\n /**\n * Controls whether or not the input field should have autocorrect enabled.\n * Possible values are 'on' and 'off'.\n */\n @Prop({ reflect: true }) autocorrect: 'on' | 'off' = 'off';\n\n /** If true, the input will be focused on component render */\n @Prop({ reflect: true }) autofocus: boolean;\n\n /** The clear button aria label */\n @Prop({ reflect: true }) clearButtonLabel? = 'Clear value';\n\n /**\n * The amount of time, in milliseconds, to wait before emitting the `bqInput` event after the input value changes.\n * A value of 0 means no debouncing will occur.\n */\n @Prop({ reflect: true, mutable: true }) debounceTime? = 0;\n\n /**\n * Indicates whether the input is disabled or not.\n * If `true`, the input is disabled and cannot be interacted with.\n */\n @Prop({ mutable: true }) disabled?: boolean = false;\n\n /** If true, the clear button won't be displayed */\n @Prop({ reflect: true }) disableClear? = false;\n\n /** The ID of the form that the input field belongs to. */\n @Prop({ reflect: true }) form?: string;\n\n /**\n * The inputmode attribute specifies what kind of input mechanism would be most helpful for users entering content into the input field.\n * This allows a browser to display an appropriate virtual keyboard while editing.\n * Possible values are 'none', 'text', 'decimal', 'numeric', 'tel', 'search', 'email', 'url', and 'date'.\n */\n @Prop() inputmode?: string;\n\n /**\n * The maximum value that the input field can accept.\n * Only applies to date and number input types.\n */\n @Prop({ reflect: true }) max?: number | string;\n\n /** The maximum number of characters that the input field can accept. */\n @Prop({ reflect: true }) maxlength: number;\n\n /**\n * The minimum value that the input field can accept.\n * Only applies to date and number input types.\n */\n @Prop({ reflect: true }) min?: number | string;\n\n /** The minimum number of characters that the input field can accept. */\n @Prop({ reflect: true }) minlength: number;\n\n /** The input field name. */\n @Prop({ reflect: true }) name!: string;\n\n /**\n * Specifies a regular expression the form control's value should match.\n * See: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern\n */\n @Prop({ reflect: true }) pattern?: string;\n\n /** The input placeholder text value */\n @Prop({ reflect: true }) placeholder?: string;\n\n /** If true, the input field cannot be modified. */\n @Prop({ reflect: true }) readonly?: boolean;\n\n /** Indicates whether or not the input field is required to be filled out before submitting the form. */\n @Prop({ reflect: true }) required?: boolean;\n\n /**\n * A number that specifies the granularity that the value must adhere to.\n * Valid for date, month, week, time, datetime-local, number, and range.\n * See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#step\n */\n @Prop({ reflect: true }) step: number | 'any';\n\n /**\n * The type attribute specifies the type of input field to display.\n * Possible values are 'text', 'password', 'email', 'number', 'tel', 'search', 'url', and more.\n * See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#input_types\n */\n @Prop({ reflect: true }) type: TInputType = 'text';\n\n /**\n * The validation status of the input.\n *\n * @remarks\n * This property is used to indicate the validation status of the input. It can be set to one of the following values:\n * - `'none'`: No validation status is set.\n * - `'error'`: The input has a validation error.\n * - `'warning'`: The input has a validation warning.\n * - `'success'`: The input has passed validation.\n */\n @Prop({ reflect: true }) validationStatus: TInputValidation = 'none';\n\n /** The input value, it can be used to reset the input to a previous value */\n @Prop({ reflect: true, mutable: true }) value: TInputValue;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('value')\n handleValueChange() {\n if (Array.isArray(this.value)) {\n this.hasValue = this.value.some((val) => val.length > 0);\n this.internals.setFormValue(this.value.join(','));\n return;\n }\n\n this.hasValue = isDefined(this.value);\n this.internals.setFormValue(`${this.value}`);\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler emitted when the input loses focus */\n @Event() bqBlur!: EventEmitter<HTMLBqInputElement>;\n\n /**\n * Callback handler emitted when the input value has changed and the input loses focus.\n * This handler is called whenever the user finishes typing or pasting text into the input field and then clicks outside of the input field.\n */\n @Event() bqChange!: EventEmitter<{ value: string | number | string[]; el: HTMLBqInputElement }>;\n\n /** Callback handler emitted when the input value has been cleared */\n @Event() bqClear!: EventEmitter<HTMLBqInputElement>;\n\n /** Callback handler emitted when the input has received focus */\n @Event() bqFocus!: EventEmitter<HTMLBqInputElement>;\n\n /**\n * Callback handler emitted when the input value changes.\n * This handler is called whenever the user types or pastes text into the input field.\n */\n @Event() bqInput!: EventEmitter<{ value: string | number | string[]; el: HTMLBqInputElement }>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.handleValueChange();\n }\n\n formResetCallback() {\n if (isNil(this.value)) return;\n\n this.handleClear();\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleBlur = () => {\n if (this.disabled) return;\n\n this.bqBlur.emit(this.el);\n };\n\n private handleFocus = () => {\n if (this.disabled) return;\n\n this.bqFocus.emit(this.el);\n };\n\n private handleInput = (ev: Event) => {\n if (this.disabled) return;\n\n this.debounceBqInput?.cancel();\n\n if (!isHTMLElement(ev.target, 'input')) return;\n this.value = this.type === 'number' ? Number(ev.target.value) : ev.target.value;\n this.internals.setFormValue(`${this.value}`);\n\n this.debounceBqInput = debounce(() => {\n this.bqInput.emit({ value: this.value, el: this.el });\n }, this.debounceTime);\n this.debounceBqInput();\n };\n\n private handleChange = (ev: Event) => {\n if (this.disabled) return;\n\n if (!isHTMLElement(ev.target, 'input')) return;\n this.value = this.type === 'number' ? Number(ev.target.value) : ev.target.value;\n this.internals.setFormValue(`${this.value}`);\n\n this.bqChange.emit({ value: this.value, el: this.el });\n };\n\n private handleClear = () => {\n if (this.disabled) return;\n\n const { inputElem, internals } = this;\n\n // Clear input element value\n inputElem.value = '';\n this.value = inputElem.value;\n\n // Update associated form control value\n internals.setFormValue(undefined);\n };\n\n private handleClearClick = (ev: CustomEvent) => {\n ev.stopPropagation();\n this.handleClear();\n\n const { bqClear, bqChange, bqInput, el, inputElem } = this;\n // Emit events\n bqClear.emit(el);\n bqInput.emit({ value: this.value, el });\n bqChange.emit({ value: this.value, el });\n // Refocus input element\n inputElem.focus();\n };\n\n private 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 // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <div class=\"bq-input\" part=\"base\">\n {/* Label */}\n <label\n class={{ 'bq-input--label': true, '!hidden': !this.hasLabel }}\n htmlFor={this.name || this.fallbackInputId}\n ref={(labelElem) => (this.labelElem = labelElem)}\n part=\"label\"\n >\n <slot name=\"label\" onSlotchange={this.handleLabelSlotChange} />\n </label>\n {/* Input control group */}\n <div\n class={{\n 'bq-input--control': true,\n [`validation-${this.validationStatus}`]: true,\n disabled: this.disabled,\n }}\n part=\"control\"\n >\n {/* Prefix */}\n <span\n class={{ 'bq-input--control__prefix': true, '!hidden': !this.hasPrefix }}\n ref={(spanElem) => (this.prefixElem = spanElem)}\n part=\"prefix\"\n >\n <slot name=\"prefix\" onSlotchange={this.handlePrefixSlotChange} />\n </span>\n {/* HTML Input */}\n <input\n id={this.name || this.fallbackInputId}\n class=\"bq-input--control__input\"\n aria-disabled={this.disabled ? 'true' : 'false'}\n autoCapitalize={this.autocapitalize}\n autoComplete={this.autocomplete}\n autoCorrect={this.autocorrect}\n autoFocus={this.autofocus}\n disabled={this.disabled}\n form={this.form}\n inputMode={this.inputmode}\n max={this.max}\n maxLength={this.maxlength}\n min={this.min}\n minLength={this.minlength}\n name={this.name}\n pattern={this.pattern}\n placeholder={this.placeholder}\n ref={(inputElem) => (this.inputElem = inputElem)}\n readOnly={this.readonly}\n required={this.required}\n step={this.step}\n type={this.type}\n value={this.value}\n part=\"input\"\n // Events\n onBlur={this.handleBlur}\n onChange={this.handleChange}\n onFocus={this.handleFocus}\n onInput={this.handleInput}\n />\n {/* Clear Button */}\n {this.hasValue && !this.disabled && !this.disableClear && (\n // The clear button will be visible as long as the input has a value\n // and the parent group is hovered or has focus-within\n <bq-button\n class=\"bq-input--control__clear ms-[--bq-input--gap] hidden\"\n appearance=\"text\"\n aria-label={this.clearButtonLabel}\n size=\"small\"\n onBqClick={this.handleClearClick}\n part=\"clear-btn\"\n exportparts=\"button\"\n >\n <slot name=\"clear-icon\">\n <bq-icon name=\"x-circle\" class=\"flex\" />\n </slot>\n </bq-button>\n )}\n {/* Suffix */}\n <span\n class={{ 'bq-input--control__suffix': true, '!hidden': !this.hasSuffix }}\n ref={(spanElem) => (this.suffixElem = spanElem)}\n part=\"suffix\"\n >\n <slot name=\"suffix\" onSlotchange={this.handleSuffixSlotChange} />\n </span>\n </div>\n {/* Helper text */}\n <div\n class={{\n [`bq-input--helper-text validation-${this.validationStatus}`]: true,\n '!hidden': !this.hasHelperText,\n }}\n ref={(divElem) => (this.helperTextElem = divElem)}\n part=\"helper-text\"\n >\n <slot name=\"helper-text\" onSlotchange={this.handleHelperTextSlotChange} />\n </div>\n </div>\n );\n }\n}\n"]}
@@ -2,8 +2,8 @@
2
2
  * Built by Endavans
3
3
  * © https://beeq.design - Apache 2 License.
4
4
  */
5
- import { h } from "@stencil/core";
6
- import { debounce, getTextContent, hasSlotContent, isDefined, isHTMLElement, isString, } from "../../shared/utils";
5
+ import { h, } from "@stencil/core";
6
+ import { debounce, getTextContent, hasSlotContent, isDefined, isHTMLElement, isNil, isString, } from "../../shared/utils";
7
7
  /**
8
8
  * @part base - The component's base wrapper.
9
9
  * @part button - The native HTML button used under the hood in the clear button.
@@ -125,28 +125,52 @@ export class BqSelect {
125
125
  this.options.forEach((item) => (item.hidden = false));
126
126
  };
127
127
  this.syncItemsFromValue = () => {
128
- var _a;
129
- const items = this.options;
130
- if (!items.length)
128
+ const { internals, options, value } = this;
129
+ if (!options.length)
131
130
  return;
132
131
  // Sync selected state of the BqOption elements
133
- this.options.forEach((option) => {
134
- if (this.multiple && Array.isArray(this.value)) {
135
- option.selected = this.value.includes(option.value);
132
+ this.syncSelectedOptionsState();
133
+ if (this.multiple) {
134
+ // Sync selected options for multiple selection mode
135
+ this.selectedOptions = options.filter((option) => { var _a; return (_a = this.value) === null || _a === void 0 ? void 0 : _a.includes(option.value); });
136
+ }
137
+ else {
138
+ // Sync display label for single selection mode
139
+ this.updateDisplayLabel();
140
+ }
141
+ internals.setFormValue(!isNil(value) ? `${value}` : undefined);
142
+ };
143
+ /**
144
+ * Syncs the selected state of the BqOption elements which value is included in the `value` property.
145
+ * Notice that value can be a string or an array of strings.
146
+ *
147
+ * @private
148
+ * @memberof BqSelect
149
+ */
150
+ this.syncSelectedOptionsState = () => {
151
+ const { options, multiple, value } = this;
152
+ const lowerCaseValue = String(value).toLowerCase();
153
+ options.forEach((option) => {
154
+ if (multiple && Array.isArray(value)) {
155
+ option.selected = value.includes(option.value);
136
156
  }
137
157
  else {
138
- option.selected = option.value.toLowerCase() === String(this.value).toLowerCase();
158
+ option.selected = option.value.toLowerCase() === lowerCaseValue;
139
159
  }
140
160
  });
141
- if (!this.multiple) {
142
- // Sync display label
143
- const checkedItem = items.filter((item) => item.value === this.value)[0];
144
- this.displayValue = checkedItem ? this.getOptionLabel(checkedItem) : '';
145
- this.inputElem.value = (_a = this.displayValue) !== null && _a !== void 0 ? _a : '';
146
- }
147
- else {
148
- this.selectedOptions = this.options.filter((item) => { var _a; return (_a = this.value) === null || _a === void 0 ? void 0 : _a.includes(item.value); });
149
- }
161
+ };
162
+ /**
163
+ * Updates the display value of the input element based on the selected option.
164
+ *
165
+ * @private
166
+ * @memberof BqSelect
167
+ */
168
+ this.updateDisplayLabel = () => {
169
+ const { value, options, inputElem } = this;
170
+ const checkedItem = options.find((item) => item.value === value);
171
+ const displayValue = checkedItem ? this.getOptionLabel(checkedItem) : '';
172
+ inputElem.value = displayValue !== null && displayValue !== void 0 ? displayValue : '';
173
+ this.displayValue = displayValue;
150
174
  };
151
175
  this.getOptionLabel = (item) => {
152
176
  const slot = item.shadowRoot.querySelector('slot:not([name])');
@@ -190,6 +214,7 @@ export class BqSelect {
190
214
  if (this.multiple && isString(this.value)) {
191
215
  // NOTE: we ensure that value is an array, changing the value will trigger Watch to execute thus the return
192
216
  this.value = Array.from(JSON.parse(String(this.value)));
217
+ this.internals.setFormValue(this.value.join(','));
193
218
  return;
194
219
  }
195
220
  this.syncItemsFromValue();
@@ -208,6 +233,16 @@ export class BqSelect {
208
233
  }
209
234
  this.handleValueChange();
210
235
  }
236
+ formAssociatedCallback() {
237
+ this.internals.role = 'combobox';
238
+ this.internals.ariaExpanded = this.open ? 'true' : 'false';
239
+ }
240
+ async formResetCallback() {
241
+ if (isNil(this.value))
242
+ return;
243
+ this.internals.setValidity({});
244
+ this.clear();
245
+ }
211
246
  // Listeners
212
247
  // ==============
213
248
  handleOpenChange(ev) {
@@ -236,14 +271,19 @@ export class BqSelect {
236
271
  async clear() {
237
272
  if (this.disabled)
238
273
  return;
274
+ const { multiple, inputElem, bqClear, el } = this;
275
+ // Clear value and selected options
239
276
  this.value = undefined;
240
277
  this.selectedOptions = [];
241
- if (!this.multiple) {
278
+ // Clear display value and input element if not multiple
279
+ if (!multiple) {
242
280
  this.displayValue = undefined;
243
- this.inputElem.value = undefined;
281
+ inputElem.value = undefined;
244
282
  }
283
+ // Update form value and reset options visibility
245
284
  this.resetOptionsVisibility();
246
- this.bqClear.emit(this.el);
285
+ // Emit clear event
286
+ bqClear.emit(el);
247
287
  }
248
288
  get options() {
249
289
  return Array.from(this.el.querySelectorAll('bq-option'));
@@ -283,23 +323,24 @@ export class BqSelect {
283
323
  // ===================================
284
324
  render() {
285
325
  const labelId = `bq-select__label-${this.name || this.fallbackInputId}`;
286
- return (h("div", { key: '7fe45a350c812326e4c0d354a10428526acf3dab', class: "bq-select", part: "base" }, h("label", { key: '0fc5472d31a357442190386917746e57366576d3', id: labelId, class: { 'bq-select__label': true, '!hidden': !this.hasLabel }, htmlFor: this.name || this.fallbackInputId, ref: (labelElem) => (this.labelElem = labelElem), part: "label" }, h("slot", { key: 'e17c800558900192e3f5d2f278a70eeb94c31c42', name: "label", onSlotchange: this.handleLabelSlotChange })), h("bq-dropdown", { key: '29ac93789cbbed8fb381b576a247c78ce444b9bc', class: "bq-select__dropdown w-full", disabled: this.disabled, distance: this.distance, keepOpenOnSelect: this.keepOpenOnSelect, open: this.open, panelHeight: this.panelHeight, placement: this.placement, sameWidth: this.sameWidth, skidding: this.skidding, strategy: this.strategy, exportparts: "panel" }, h("div", { key: '5cebdda4786fbb0d47355f8a41b4b0a19d5974ad', class: {
326
+ return (h("div", { key: '3bf60089e54a444406835f651eb8781c18297e24', class: "bq-select", part: "base" }, h("label", { key: 'e1a6ce7adb95518bc85b326ce85ea7e23c644665', id: labelId, class: { 'bq-select__label': true, '!hidden': !this.hasLabel }, htmlFor: this.name || this.fallbackInputId, ref: (labelElem) => (this.labelElem = labelElem), part: "label" }, h("slot", { key: 'e1f897da716800aa56290282d1e0ff05f6bfc032', name: "label", onSlotchange: this.handleLabelSlotChange })), h("bq-dropdown", { key: '8c3ad42219d8de5fff3d0daf78464ecbf2d48f45', class: "bq-select__dropdown w-full", disabled: this.disabled, distance: this.distance, keepOpenOnSelect: this.keepOpenOnSelect, open: this.open, panelHeight: this.panelHeight, placement: this.placement, sameWidth: this.sameWidth, skidding: this.skidding, strategy: this.strategy, exportparts: "panel" }, h("div", { key: '96f723b8c5ee6af00e4c6520c64b7b905e4fcee1', class: {
287
327
  'bq-select__control': true,
288
328
  [`validation-${this.validationStatus}`]: true,
289
329
  disabled: this.disabled,
290
- }, part: "control", slot: "trigger" }, h("span", { key: '80b821225b8f498f34e918715e40633d3f442b18', class: { 'bq-select__control--prefix': true, '!hidden': !this.hasPrefix }, ref: (spanElem) => (this.prefixElem = spanElem), part: "prefix" }, h("slot", { key: '04f266b634aa2ae77892f3de9ceb648966795bbe', name: "prefix", onSlotchange: this.handlePrefixSlotChange })), h("div", { key: '62cad8517118b225d6c35b7620565262ea9f7355', class: "flex flex-1 overflow-x-auto", part: "input-outline" }, this.multiple && (h("span", { key: '22a2750d5fe67baa59a0ac007426ba84ae1b2454', class: "bq-select__tags", part: "tags" }, h("slot", { key: 'd05869bf1d4375acc7b70a26ebea3b13531dd3c9', name: "tags" }, this.displayTags))), h("input", { key: '04488420c90a56708717ae70628d484b99208ed6', id: this.name || this.fallbackInputId, class: "bq-select__control--input flex-grow is-full", autoComplete: "off", autoCapitalize: "off", autoFocus: this.autofocus, "aria-disabled": this.disabled ? 'true' : 'false', "aria-controls": `bq-options-${this.name}`, "aria-expanded": this.open ? 'true' : 'false', "aria-haspopup": "listbox", disabled: this.disabled, form: this.form, name: this.name, placeholder: this.displayPlaceholder, ref: (inputElem) => (this.inputElem = inputElem), readOnly: this.readonly, required: this.required, role: "combobox", spellcheck: false, type: "text", value: this.displayValue, part: "input",
330
+ }, part: "control", slot: "trigger" }, h("span", { key: '1126037e79c6f57ca5202e58925fd124b024558e', class: { 'bq-select__control--prefix': true, '!hidden': !this.hasPrefix }, ref: (spanElem) => (this.prefixElem = spanElem), part: "prefix" }, h("slot", { key: 'cf46d4e31fa99970eea7602eaa3fe46096fd59db', name: "prefix", onSlotchange: this.handlePrefixSlotChange })), h("div", { key: '122ac25b288008b179d427f55a4534d73c7e6759', class: "flex flex-1 overflow-x-auto", part: "input-outline" }, this.multiple && (h("span", { key: '61f119326780d34d94b6c2f4526441a39284782e', class: "bq-select__tags", part: "tags" }, h("slot", { key: '899688411bb28d471d8c3128540d5bd07b3070a7', name: "tags" }, this.displayTags))), h("input", { key: '2b87c4c3b5db18579405f0f93965f5348b7e9691', id: this.name || this.fallbackInputId, class: "bq-select__control--input flex-grow is-full", autoComplete: "off", autoCapitalize: "off", autoFocus: this.autofocus, "aria-disabled": this.disabled ? 'true' : 'false', "aria-controls": `bq-options-${this.name}`, "aria-expanded": this.open ? 'true' : 'false', "aria-haspopup": "listbox", disabled: this.disabled, form: this.form, name: this.name, placeholder: this.displayPlaceholder, ref: (inputElem) => (this.inputElem = inputElem), readOnly: this.readonly, required: this.required, role: "combobox", spellcheck: false, type: "text", value: this.displayValue, part: "input",
291
331
  // Events
292
332
  onBlur: this.handleBlur, onFocus: this.handleFocus, onInput: this.handleSearchFilter })), this.hasClearIcon && (
293
333
  // The clear button will be visible as long as the input has a value
294
334
  // and the parent group is hovered or has focus-within
295
- h("bq-button", { key: '64461843191cdf3935c464d28d93d3fff050c491', class: "bq-select__control--clear ms-[--bq-select--gap]", appearance: "text", "aria-label": this.clearButtonLabel, size: "small", onBqClick: this.handleClearClick, part: "clear-btn", exportparts: "button", tabIndex: -1 }, h("slot", { key: 'a0dfdde0bd4276bf42aae558fbd640ca652038ce', name: "clear-icon" }, h("bq-icon", { key: 'f147f74f440efe09bba58b20887f4b3a4b44d367', name: "x-circle", class: "flex" })))), h("span", { key: '6fcb1a3e3f3e91538acbe1b397d42403b0b3da79', class: { 'bq-select__control--suffix': true, 'rotate-180': this.open, 'rotate-0': !this.open }, ref: (spanElem) => (this.suffixElem = spanElem), part: "suffix" }, h("slot", { key: '2bfa95fd7b42673ae8926ff1cc32cb69a54aaf2e', name: "suffix", onSlotchange: this.handleSuffixSlotChange }, h("bq-icon", { key: '5cefb7d796850bdc69db617462eeebd1ef30ce0a', name: "caret-down", class: "flex" })))), h("bq-option-list", { key: 'dc4afacc19225ee195a92c5f79f6da798231cb7f', id: `bq-options-${this.name}`, onBqSelect: this.handleSelect, "aria-expanded": this.open ? 'true' : 'false', exportparts: "base:option-list", role: "listbox" }, h("slot", { key: '95a0fe75c20d2d6f43b795926a281c9c20b8eb29' }))), h("div", { key: '237548a08bdaef24d61c0e4b0d0d53b75cd8b71b', class: {
335
+ h("bq-button", { key: '67adc0777ab38eac9e07113c05ffae5fac62df0a', class: "bq-select__control--clear ms-[--bq-select--gap]", appearance: "text", "aria-label": this.clearButtonLabel, size: "small", onBqClick: this.handleClearClick, part: "clear-btn", exportparts: "button", tabIndex: -1 }, h("slot", { key: '84dfbc20d5cbec4a0b8b64c493c3f9b994470a91', name: "clear-icon" }, h("bq-icon", { key: '80e1f6053543c38e9771a3416318c4655a82bd6b', name: "x-circle", class: "flex" })))), h("span", { key: '1f3f17583fe1ffb9e93cf350edee48c0b8ea16cc', class: { 'bq-select__control--suffix': true, 'rotate-180': this.open, 'rotate-0': !this.open }, ref: (spanElem) => (this.suffixElem = spanElem), part: "suffix" }, h("slot", { key: 'a1b7952e849c06fe42cd87fa91241076b9e92210', name: "suffix", onSlotchange: this.handleSuffixSlotChange }, h("bq-icon", { key: '2d33bff112441e0e96e91a5a2402e92d2ba2723e', name: "caret-down", class: "flex" })))), h("bq-option-list", { key: '73b2b2ea7fda962ee231e75778e2ccdabcd7316d', id: `bq-options-${this.name}`, onBqSelect: this.handleSelect, "aria-expanded": this.open ? 'true' : 'false', exportparts: "base:option-list", role: "listbox" }, h("slot", { key: 'fa995c491dfbc5e5f502340e6ae1e72781aeaaee' }))), h("div", { key: '9c65e42475b8a87aa14f024ce30184a158800f36', class: {
296
336
  [`bq-select__helper-text validation-${this.validationStatus}`]: true,
297
337
  '!hidden': !this.hasHelperText,
298
- }, ref: (divElem) => (this.helperTextElem = divElem), part: "helper-text" }, h("slot", { key: 'a02b29c26ce956e1621a5fa6e411b01715ea7a9a', name: "helper-text", onSlotchange: this.handleHelperTextSlotChange }))));
338
+ }, ref: (divElem) => (this.helperTextElem = divElem), part: "helper-text" }, h("slot", { key: '079d5bd093666700b90571eb85ec9b243b8c7daf', name: "helper-text", onSlotchange: this.handleHelperTextSlotChange }))));
299
339
  }
300
340
  static get is() { return "bq-select"; }
301
341
  static get encapsulation() { return "shadow"; }
302
342
  static get delegatesFocus() { return true; }
343
+ static get formAssociated() { return true; }
303
344
  static get originalStyleUrls() {
304
345
  return {
305
346
  "$": ["./scss/bq-select.scss"]
@@ -707,7 +748,7 @@ export class BqSelect {
707
748
  "references": {
708
749
  "TSelectValue": {
709
750
  "location": "local",
710
- "path": "/home/runner/work/BEEQ/BEEQ/packages/beeq/src/components/select/bq-select.tsx",
751
+ "path": "/Users/dramos/PROJECTs/ENDAVA/BEEQ-Design-System/packages/beeq/src/components/select/bq-select.tsx",
711
752
  "id": "../../packages/beeq/src/components/select/bq-select.tsx::TSelectValue"
712
753
  }
713
754
  }
@@ -872,5 +913,6 @@ export class BqSelect {
872
913
  "passive": false
873
914
  }];
874
915
  }
916
+ static get attachInternalsMemberName() { return "internals"; }
875
917
  }
876
918
  //# sourceMappingURL=bq-select.js.map