@govbr-ds/webcomponents 2.1.3 → 2.2.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 (960) hide show
  1. package/README.md +87 -46
  2. package/cem/custom-elements.json +6359 -1133
  3. package/cem/webcomponents.html-custom-data.json +398 -285
  4. package/dist/cjs/br-avatar.cjs.entry.js +21 -14
  5. package/dist/cjs/br-breadcrumb-item.cjs.entry.js +2 -2
  6. package/dist/cjs/br-breadcrumb.cjs.entry.js +49 -22
  7. package/dist/cjs/br-button_2.cjs.entry.js +72 -35
  8. package/dist/cjs/br-card.cjs.entry.js +6 -5
  9. package/dist/cjs/br-carousel-page.cjs.entry.js +3 -3
  10. package/dist/cjs/br-carousel.cjs.entry.js +77 -21
  11. package/dist/cjs/br-checkbox-group.cjs.entry.js +157 -27
  12. package/dist/cjs/br-checkbox.cjs.entry.js +85 -15
  13. package/dist/cjs/br-checkgroup.cjs.entry.js +5 -2
  14. package/dist/cjs/br-collapse_2.cjs.entry.js +85 -26
  15. package/dist/cjs/br-cookiebar-cookie.cjs.entry.js +4 -4
  16. package/dist/cjs/br-cookiebar-group.cjs.entry.js +4 -4
  17. package/dist/cjs/br-cookiebar-header.cjs.entry.js +4 -4
  18. package/dist/cjs/br-cookiebar-link.cjs.entry.js +14 -6
  19. package/dist/cjs/br-cookiebar-note-group.cjs.entry.js +3 -5
  20. package/dist/cjs/br-cookiebar-note.cjs.entry.js +4 -4
  21. package/dist/cjs/br-cookiebar.cjs.entry.js +38 -25
  22. package/dist/cjs/br-crumb.cjs.entry.js +2 -2
  23. package/dist/cjs/br-date-picker_3.cjs.entry.js +246 -88
  24. package/dist/cjs/br-datetime-picker.cjs.entry.js +115 -527
  25. package/dist/cjs/br-divider.cjs.entry.js +70 -17
  26. package/dist/cjs/br-dropdown_2.cjs.entry.js +301 -128
  27. package/dist/cjs/br-footer-category.cjs.entry.js +10 -6
  28. package/dist/cjs/br-footer-item.cjs.entry.js +9 -4
  29. package/dist/cjs/br-footer-legal.cjs.entry.js +4 -4
  30. package/dist/cjs/br-footer-logo.cjs.entry.js +22 -10
  31. package/dist/cjs/br-footer-social.cjs.entry.js +14 -6
  32. package/dist/cjs/br-footer.cjs.entry.js +16 -7
  33. package/dist/cjs/br-header-function.cjs.entry.js +28 -7
  34. package/dist/cjs/br-header-link.cjs.entry.js +25 -4
  35. package/dist/cjs/br-header-list.cjs.entry.js +6 -17
  36. package/dist/cjs/br-header-logo.cjs.entry.js +18 -7
  37. package/dist/cjs/br-header.cjs.entry.js +72 -17
  38. package/dist/cjs/br-icon.cjs.entry.js +160 -23
  39. package/dist/cjs/br-input.cjs.entry.js +130 -39
  40. package/dist/cjs/br-item.cjs.entry.js +96 -48
  41. package/dist/cjs/br-link.cjs.entry.js +20 -7
  42. package/dist/cjs/br-loading.cjs.entry.js +100 -38
  43. package/dist/cjs/br-magic-button.cjs.entry.js +26 -9
  44. package/dist/cjs/br-menu-group.cjs.entry.js +14 -3
  45. package/dist/cjs/br-menu-header.cjs.entry.js +4 -4
  46. package/dist/cjs/br-menu-info.cjs.entry.js +4 -4
  47. package/dist/cjs/br-menu-item.cjs.entry.js +27 -5
  48. package/dist/cjs/br-menu-link.cjs.entry.js +14 -6
  49. package/dist/cjs/br-menu-list.cjs.entry.js +23 -27
  50. package/dist/cjs/br-menu-logo.cjs.entry.js +4 -4
  51. package/dist/cjs/br-menu-social.cjs.entry.js +16 -6
  52. package/dist/cjs/br-menu.cjs.entry.js +38 -57
  53. package/dist/cjs/br-modal.cjs.entry.js +26 -40
  54. package/dist/cjs/br-notification-body.cjs.entry.js +4 -4
  55. package/dist/cjs/br-notification-header.cjs.entry.js +4 -4
  56. package/dist/cjs/br-notification-item.cjs.entry.js +14 -8
  57. package/dist/cjs/br-notification.cjs.entry.js +23 -8
  58. package/dist/cjs/br-pagination.cjs.entry.js +119 -87
  59. package/dist/cjs/br-radio-group.cjs.entry.js +106 -57
  60. package/dist/cjs/br-radio.cjs.entry.js +61 -11
  61. package/dist/cjs/br-scrim.cjs.entry.js +161 -67
  62. package/dist/cjs/br-select-input_3.cjs.entry.js +283 -90
  63. package/dist/cjs/br-sign-in.cjs.entry.js +34 -15
  64. package/dist/cjs/br-skip-link-item.cjs.entry.js +39 -2
  65. package/dist/cjs/br-skip-link.cjs.entry.js +50 -33
  66. package/dist/cjs/br-skiplink-item.cjs.entry.js +22 -6
  67. package/dist/cjs/br-slider.cjs.entry.js +521 -99
  68. package/dist/cjs/br-step_2.cjs.entry.js +98 -44
  69. package/dist/cjs/br-switch.cjs.entry.js +20 -11
  70. package/dist/cjs/br-tab-item.cjs.entry.js +38 -14
  71. package/dist/cjs/br-tab.cjs.entry.js +57 -44
  72. package/dist/cjs/br-table-body.cjs.entry.js +3 -3
  73. package/dist/cjs/br-table-cell.cjs.entry.js +30 -13
  74. package/dist/cjs/br-table-header-cell.cjs.entry.js +23 -7
  75. package/dist/cjs/br-table-header.cjs.entry.js +3 -3
  76. package/dist/cjs/br-table-row.cjs.entry.js +17 -3
  77. package/dist/cjs/br-table.cjs.entry.js +67 -21
  78. package/dist/cjs/br-tag.cjs.entry.js +48 -30
  79. package/dist/cjs/br-textarea.cjs.entry.js +117 -12
  80. package/dist/cjs/br-tooltip.cjs.entry.js +87 -41
  81. package/dist/cjs/br-upload.cjs.entry.js +83 -24
  82. package/dist/cjs/br-wizard-panel.cjs.entry.js +16 -3
  83. package/dist/cjs/br-wizard.cjs.entry.js +52 -28
  84. package/dist/cjs/{isValid-Fu3kaWNn.js → datetime-picker-props-validation-DmNKSXsy.js} +481 -4
  85. package/dist/cjs/{floating-ui-MBI1osio.js → floating-ui-B6nsdYUU.js} +24 -1
  86. package/dist/cjs/{floating-ui.dom-BUSTaaxR.js → floating-ui.dom-wzdGZjyG.js} +201 -113
  87. package/dist/cjs/{focus-DuywwJPR.js → focus-BhfJnFgJ.js} +21 -0
  88. package/dist/cjs/header-context-CdawuLsH.js +17 -0
  89. package/dist/cjs/id-DE4jSi-L.js +36 -0
  90. package/dist/cjs/{index-CRdcutym.js → index-CGgZBuyy.js} +68 -752
  91. package/dist/cjs/loader.cjs.js +2 -2
  92. package/dist/cjs/motion-CgIooxWS.js +29 -0
  93. package/dist/cjs/ownership-UnpufyCx.js +116 -0
  94. package/dist/cjs/prop-warning-xvEHQz8H.js +60 -0
  95. package/dist/cjs/props-D8dybmr0.js +124 -0
  96. package/dist/cjs/{swipe-BU8_XE9f.js → swipe-BGF-h9WY.js} +11 -1
  97. package/dist/cjs/webcomponents.cjs.js +3 -3
  98. package/dist/collection/collection-manifest.json +1 -1
  99. package/dist/collection/components/avatar/avatar.css +1 -1
  100. package/dist/collection/components/avatar/avatar.js +48 -16
  101. package/dist/collection/components/breadcrumb/breadcrumb-item/breadcrumb-item.js +15 -3
  102. package/dist/collection/components/breadcrumb/breadcrumb.css +1 -1
  103. package/dist/collection/components/breadcrumb/breadcrumb.js +107 -22
  104. package/dist/collection/components/breadcrumb/crumb/crumb.js +14 -2
  105. package/dist/collection/components/button/button.css +1 -1
  106. package/dist/collection/components/button/button.js +88 -24
  107. package/dist/collection/components/card/card.css +1 -1
  108. package/dist/collection/components/card/card.js +33 -5
  109. package/dist/collection/components/carousel/carousel-page/carousel-page.css +1 -1
  110. package/dist/collection/components/carousel/carousel-page/carousel-page.js +11 -4
  111. package/dist/collection/components/carousel/carousel.css +1 -1
  112. package/dist/collection/components/carousel/carousel.js +107 -21
  113. package/dist/collection/components/checkbox/checkbox.css +1 -1
  114. package/dist/collection/components/checkbox/checkbox.js +134 -20
  115. package/dist/collection/components/checkbox-group/checkbox-group.css +1 -1
  116. package/dist/collection/components/checkbox-group/checkbox-group.js +210 -30
  117. package/dist/collection/components/checkgroup/checkgroup.js +42 -4
  118. package/dist/collection/components/collapse/collapse.css +1 -1
  119. package/dist/collection/components/collapse/collapse.js +48 -8
  120. package/dist/collection/components/cookiebar/cookiebar-cookie/cookiebar-cookie.css +1 -1
  121. package/dist/collection/components/cookiebar/cookiebar-cookie/cookiebar-cookie.js +17 -4
  122. package/dist/collection/components/cookiebar/cookiebar-group/cookiebar-group.css +1 -1
  123. package/dist/collection/components/cookiebar/cookiebar-group/cookiebar-group.js +16 -7
  124. package/dist/collection/components/cookiebar/cookiebar-header/cookiebar-header.css +1 -1
  125. package/dist/collection/components/cookiebar/cookiebar-header/cookiebar-header.js +15 -9
  126. package/dist/collection/components/cookiebar/cookiebar-link/cookiebar-link.css +1 -1
  127. package/dist/collection/components/cookiebar/cookiebar-link/cookiebar-link.js +24 -8
  128. package/dist/collection/components/cookiebar/cookiebar-note/cookiebar-note.css +1 -1
  129. package/dist/collection/components/cookiebar/cookiebar-note/cookiebar-note.js +14 -4
  130. package/dist/collection/components/cookiebar/cookiebar-note-group/cookiebar-note-group.css +1 -1
  131. package/dist/collection/components/cookiebar/cookiebar-note-group/cookiebar-note-group.js +13 -5
  132. package/dist/collection/components/cookiebar/cookiebar.css +1 -1
  133. package/dist/collection/components/cookiebar/cookiebar.js +67 -32
  134. package/dist/collection/components/datetime-picker/date-picker/date-picker.css +1 -1
  135. package/dist/collection/components/datetime-picker/date-picker/date-picker.js +134 -35
  136. package/dist/collection/components/datetime-picker/datetime-input/datetime-input.css +1 -1
  137. package/dist/collection/components/datetime-picker/datetime-input/datetime-input.js +112 -22
  138. package/dist/collection/components/datetime-picker/datetime-picker-props-validation.js +13 -5
  139. package/dist/collection/components/datetime-picker/datetime-picker.css +1 -1
  140. package/dist/collection/components/datetime-picker/datetime-picker.js +158 -42
  141. package/dist/collection/components/datetime-picker/time-picker/time-picker.css +1 -1
  142. package/dist/collection/components/datetime-picker/time-picker/time-picker.js +78 -9
  143. package/dist/collection/components/divider/divider.css +1 -1
  144. package/dist/collection/components/divider/divider.js +101 -26
  145. package/dist/collection/components/dropdown/dropdown.css +1 -1
  146. package/dist/collection/components/dropdown/dropdown.js +166 -18
  147. package/dist/collection/components/footer/footer-category/footer-category.css +1 -1
  148. package/dist/collection/components/footer/footer-category/footer-category.js +23 -4
  149. package/dist/collection/components/footer/footer-item/footer-item.css +1 -1
  150. package/dist/collection/components/footer/footer-item/footer-item.js +21 -2
  151. package/dist/collection/components/footer/footer-legal/footer-legal.css +1 -1
  152. package/dist/collection/components/footer/footer-legal/footer-legal.js +16 -2
  153. package/dist/collection/components/footer/footer-logo/footer-logo.css +1 -1
  154. package/dist/collection/components/footer/footer-logo/footer-logo.js +35 -9
  155. package/dist/collection/components/footer/footer-social/footer-social.css +1 -1
  156. package/dist/collection/components/footer/footer-social/footer-social.js +26 -6
  157. package/dist/collection/components/footer/footer.css +1 -1
  158. package/dist/collection/components/footer/footer.js +48 -7
  159. package/dist/collection/components/header/header-context.js +13 -0
  160. package/dist/collection/components/header/header-function/header-function.css +1 -1
  161. package/dist/collection/components/header/header-function/header-function.js +51 -8
  162. package/dist/collection/components/header/header-link/header-link.css +1 -1
  163. package/dist/collection/components/header/header-link/header-link.js +52 -2
  164. package/dist/collection/components/header/header-list/header-list.css +1 -1
  165. package/dist/collection/components/header/header-list/header-list.js +20 -23
  166. package/dist/collection/components/header/header-logo/header-logo.css +1 -1
  167. package/dist/collection/components/header/header-logo/header-logo.js +33 -8
  168. package/dist/collection/components/header/header.css +1 -1
  169. package/dist/collection/components/header/header.js +110 -24
  170. package/dist/collection/components/icon/default-icons-cache.js +111 -3
  171. package/dist/collection/components/icon/icon.css +1 -1
  172. package/dist/collection/components/icon/icon.js +80 -33
  173. package/dist/collection/components/input/input.css +1 -1
  174. package/dist/collection/components/input/input.js +169 -54
  175. package/dist/collection/components/item/item.css +1 -1
  176. package/dist/collection/components/item/item.js +134 -51
  177. package/dist/collection/components/link/link.css +1 -1
  178. package/dist/collection/components/link/link.js +48 -15
  179. package/dist/collection/components/list/list.css +1 -1
  180. package/dist/collection/components/list/list.js +106 -25
  181. package/dist/collection/components/loading/loading.css +1 -1
  182. package/dist/collection/components/loading/loading.js +131 -43
  183. package/dist/collection/components/magic-button/magic-button.css +1 -1
  184. package/dist/collection/components/magic-button/magic-button.js +51 -9
  185. package/dist/collection/components/menu/menu-group/menu-group.css +1 -1
  186. package/dist/collection/components/menu/menu-group/menu-group.js +60 -2
  187. package/dist/collection/components/menu/menu-header/menu-header.css +1 -1
  188. package/dist/collection/components/menu/menu-header/menu-header.js +17 -2
  189. package/dist/collection/components/menu/menu-info/menu-info.css +1 -1
  190. package/dist/collection/components/menu/menu-info/menu-info.js +15 -2
  191. package/dist/collection/components/menu/menu-item/menu-item.css +1 -1
  192. package/dist/collection/components/menu/menu-item/menu-item.js +72 -8
  193. package/dist/collection/components/menu/menu-link/menu-link.css +1 -1
  194. package/dist/collection/components/menu/menu-link/menu-link.js +25 -4
  195. package/dist/collection/components/menu/menu-list/menu-list.css +1 -1
  196. package/dist/collection/components/menu/menu-list/menu-list.js +64 -29
  197. package/dist/collection/components/menu/menu-logo/menu-logo.css +1 -1
  198. package/dist/collection/components/menu/menu-logo/menu-logo.js +15 -2
  199. package/dist/collection/components/menu/menu-social/menu-social.css +1 -1
  200. package/dist/collection/components/menu/menu-social/menu-social.js +29 -7
  201. package/dist/collection/components/menu/menu.css +1 -1
  202. package/dist/collection/components/menu/menu.js +71 -60
  203. package/dist/collection/components/menu/menu.utils.js +8 -18
  204. package/dist/collection/components/message/message.css +1 -1
  205. package/dist/collection/components/message/message.js +50 -24
  206. package/dist/collection/components/modal/modal.css +1 -1
  207. package/dist/collection/components/modal/modal.js +54 -41
  208. package/dist/collection/components/notification/notification-body/notification-body.css +1 -1
  209. package/dist/collection/components/notification/notification-body/notification-body.js +13 -4
  210. package/dist/collection/components/notification/notification-header/notification-header.css +1 -1
  211. package/dist/collection/components/notification/notification-header/notification-header.js +13 -4
  212. package/dist/collection/components/notification/notification-item/notification-item.css +1 -1
  213. package/dist/collection/components/notification/notification-item/notification-item.js +23 -9
  214. package/dist/collection/components/notification/notification.css +1 -1
  215. package/dist/collection/components/notification/notification.js +54 -10
  216. package/dist/collection/components/pagination/pagination.css +1 -1
  217. package/dist/collection/components/pagination/pagination.js +161 -74
  218. package/dist/collection/components/radio/radio.css +1 -1
  219. package/dist/collection/components/radio/radio.js +109 -14
  220. package/dist/collection/components/radio-group/radio-group.css +1 -1
  221. package/dist/collection/components/radio-group/radio-group.js +153 -63
  222. package/dist/collection/components/scrim/scrim.css +1 -1
  223. package/dist/collection/components/scrim/scrim.js +215 -74
  224. package/dist/collection/components/scrim/scrim.utils.js +5 -51
  225. package/dist/collection/components/select/select-input/select-input.css +1 -1
  226. package/dist/collection/components/select/select-input/select-input.js +58 -5
  227. package/dist/collection/components/select/select-list/select-list.css +1 -1
  228. package/dist/collection/components/select/select-list/select-list.js +247 -52
  229. package/dist/collection/components/select/select-option/select-option.css +1 -1
  230. package/dist/collection/components/select/select-option/select-option.js +108 -46
  231. package/dist/collection/components/select/select.css +1 -1
  232. package/dist/collection/components/select/select.js +320 -124
  233. package/dist/collection/components/sign-in/sign-in.css +1 -1
  234. package/dist/collection/components/sign-in/sign-in.js +55 -16
  235. package/dist/collection/components/skip-link/skip-link-item/skip-link-item-alias.js +112 -3
  236. package/dist/collection/components/skip-link/skip-link-item/skip-link-item.css +1 -1
  237. package/dist/collection/components/skip-link/skip-link-item/skip-link-item.js +58 -5
  238. package/dist/collection/components/skip-link/skip-link.css +1 -1
  239. package/dist/collection/components/skip-link/skip-link.js +78 -39
  240. package/dist/collection/components/slider/slider.css +1 -1
  241. package/dist/collection/components/slider/slider.js +530 -132
  242. package/dist/collection/components/slider/slider.utils.js +178 -0
  243. package/dist/collection/components/step/step-item/step-item.css +1 -1
  244. package/dist/collection/components/step/step-item/step-item.js +29 -12
  245. package/dist/collection/components/step/step.css +1 -1
  246. package/dist/collection/components/step/step.js +119 -44
  247. package/dist/collection/components/switch/switch.css +1 -1
  248. package/dist/collection/components/switch/switch.js +48 -15
  249. package/dist/collection/components/tab/tab-item/tab-item.css +1 -1
  250. package/dist/collection/components/tab/tab-item/tab-item.js +49 -14
  251. package/dist/collection/components/tab/tab.css +1 -1
  252. package/dist/collection/components/tab/tab.js +89 -46
  253. package/dist/collection/components/table/table-body/table-body.css +1 -1
  254. package/dist/collection/components/table/table-body/table-body.js +11 -7
  255. package/dist/collection/components/table/table-cell/table-cell.css +1 -1
  256. package/dist/collection/components/table/table-cell/table-cell.js +36 -17
  257. package/dist/collection/components/table/table-header/table-header.css +1 -1
  258. package/dist/collection/components/table/table-header/table-header.js +11 -7
  259. package/dist/collection/components/table/table-header-cell/table-header-cell.css +1 -1
  260. package/dist/collection/components/table/table-header-cell/table-header-cell.js +35 -13
  261. package/dist/collection/components/table/table-row/table-row.css +1 -1
  262. package/dist/collection/components/table/table-row/table-row.js +24 -7
  263. package/dist/collection/components/table/table.css +1 -1
  264. package/dist/collection/components/table/table.js +107 -31
  265. package/dist/collection/components/tag/tag.css +1 -1
  266. package/dist/collection/components/tag/tag.js +86 -36
  267. package/dist/collection/components/textarea/textarea.css +1 -1
  268. package/dist/collection/components/textarea/textarea.js +222 -19
  269. package/dist/collection/components/tooltip/tooltip.css +1 -1
  270. package/dist/collection/components/tooltip/tooltip.js +134 -45
  271. package/dist/collection/components/upload/upload.css +1 -1
  272. package/dist/collection/components/upload/upload.js +135 -33
  273. package/dist/collection/components/wizard/wizard-panel/wizard-panel.css +1 -1
  274. package/dist/collection/components/wizard/wizard-panel/wizard-panel.js +54 -3
  275. package/dist/collection/components/wizard/wizard.css +1 -1
  276. package/dist/collection/components/wizard/wizard.js +82 -28
  277. package/dist/collection/pages/scripts/component-controls-core.js +95 -0
  278. package/dist/collection/pages/scripts/component-controls.js +217 -153
  279. package/dist/collection/pages/scripts/dev-event-console.js +5 -1
  280. package/dist/collection/pages/scripts/menu.js +90 -5
  281. package/dist/collection/pages/scripts/pageLoader.js +1470 -584
  282. package/dist/collection/pages/scripts/pageloader-preview.js +787 -0
  283. package/dist/collection/pages/scripts/playground-core.js +173 -0
  284. package/dist/collection/shared/utils/cssVariables.js +2 -0
  285. package/dist/collection/shared/utils/date.js +8 -4
  286. package/dist/collection/shared/utils/floating-ui.js +24 -1
  287. package/dist/collection/shared/utils/focus.js +31 -0
  288. package/dist/collection/shared/utils/getRandom.js +16 -1
  289. package/dist/collection/shared/utils/helpers.js +4 -11
  290. package/dist/collection/shared/utils/id.js +23 -7
  291. package/dist/collection/shared/utils/index.js +6 -1
  292. package/dist/collection/shared/utils/isEmpty.js +5 -3
  293. package/dist/collection/shared/utils/motion.js +25 -0
  294. package/dist/collection/shared/utils/ownership.js +113 -0
  295. package/dist/collection/shared/utils/prop-warning.js +47 -0
  296. package/dist/collection/shared/utils/props.js +79 -0
  297. package/dist/collection/shared/utils/swipe.js +11 -1
  298. package/dist/collection/shared/utils/transition.js +3 -0
  299. package/dist/collection/shared/utils/virtual-scroll.js +24 -0
  300. package/dist/components/br-avatar.d.ts +1 -1
  301. package/dist/components/br-avatar.js +1 -1
  302. package/dist/components/br-breadcrumb-item.d.ts +1 -1
  303. package/dist/components/br-breadcrumb-item.js +1 -1
  304. package/dist/components/br-breadcrumb.d.ts +1 -1
  305. package/dist/components/br-breadcrumb.js +1 -1
  306. package/dist/components/br-button.d.ts +1 -1
  307. package/dist/components/br-button.js +1 -1
  308. package/dist/components/br-card.d.ts +1 -1
  309. package/dist/components/br-card.js +1 -1
  310. package/dist/components/br-carousel-page.d.ts +1 -1
  311. package/dist/components/br-carousel-page.js +1 -1
  312. package/dist/components/br-carousel.d.ts +1 -1
  313. package/dist/components/br-carousel.js +1 -1
  314. package/dist/components/br-checkbox-group.d.ts +1 -1
  315. package/dist/components/br-checkbox-group.js +1 -1
  316. package/dist/components/br-checkbox.d.ts +1 -1
  317. package/dist/components/br-checkbox.js +1 -1
  318. package/dist/components/br-checkgroup.d.ts +1 -1
  319. package/dist/components/br-checkgroup.js +1 -1
  320. package/dist/components/br-collapse.d.ts +1 -1
  321. package/dist/components/br-collapse.js +1 -1
  322. package/dist/components/br-cookiebar-cookie.d.ts +1 -1
  323. package/dist/components/br-cookiebar-cookie.js +1 -1
  324. package/dist/components/br-cookiebar-group.d.ts +1 -1
  325. package/dist/components/br-cookiebar-group.js +1 -1
  326. package/dist/components/br-cookiebar-header.d.ts +1 -1
  327. package/dist/components/br-cookiebar-header.js +1 -1
  328. package/dist/components/br-cookiebar-link.d.ts +1 -1
  329. package/dist/components/br-cookiebar-link.js +1 -1
  330. package/dist/components/br-cookiebar-note-group.d.ts +1 -1
  331. package/dist/components/br-cookiebar-note-group.js +1 -1
  332. package/dist/components/br-cookiebar-note.d.ts +1 -1
  333. package/dist/components/br-cookiebar-note.js +1 -1
  334. package/dist/components/br-cookiebar.d.ts +1 -1
  335. package/dist/components/br-cookiebar.js +1 -1
  336. package/dist/components/br-crumb.d.ts +1 -1
  337. package/dist/components/br-crumb.js +1 -1
  338. package/dist/components/br-date-picker.d.ts +1 -1
  339. package/dist/components/br-date-picker.js +1 -1
  340. package/dist/components/br-datetime-input.d.ts +1 -1
  341. package/dist/components/br-datetime-input.js +1 -1
  342. package/dist/components/br-datetime-picker.d.ts +1 -1
  343. package/dist/components/br-datetime-picker.js +1 -1
  344. package/dist/components/br-divider.d.ts +1 -1
  345. package/dist/components/br-divider.js +1 -1
  346. package/dist/components/br-dropdown.d.ts +1 -1
  347. package/dist/components/br-dropdown.js +1 -1
  348. package/dist/components/br-footer-category.d.ts +1 -1
  349. package/dist/components/br-footer-category.js +1 -1
  350. package/dist/components/br-footer-item.d.ts +1 -1
  351. package/dist/components/br-footer-item.js +1 -1
  352. package/dist/components/br-footer-legal.d.ts +1 -1
  353. package/dist/components/br-footer-legal.js +1 -1
  354. package/dist/components/br-footer-logo.d.ts +1 -1
  355. package/dist/components/br-footer-logo.js +1 -1
  356. package/dist/components/br-footer-social.d.ts +1 -1
  357. package/dist/components/br-footer-social.js +1 -1
  358. package/dist/components/br-footer.d.ts +1 -1
  359. package/dist/components/br-footer.js +1 -1
  360. package/dist/components/br-header-function.d.ts +1 -1
  361. package/dist/components/br-header-function.js +1 -1
  362. package/dist/components/br-header-link.d.ts +1 -1
  363. package/dist/components/br-header-link.js +1 -1
  364. package/dist/components/br-header-list.d.ts +1 -1
  365. package/dist/components/br-header-list.js +1 -1
  366. package/dist/components/br-header-logo.d.ts +1 -1
  367. package/dist/components/br-header-logo.js +1 -1
  368. package/dist/components/br-header.d.ts +1 -1
  369. package/dist/components/br-header.js +1 -1
  370. package/dist/components/br-icon.d.ts +1 -1
  371. package/dist/components/br-icon.js +1 -1
  372. package/dist/components/br-input.d.ts +1 -1
  373. package/dist/components/br-input.js +1 -1
  374. package/dist/components/br-item.d.ts +1 -1
  375. package/dist/components/br-item.js +1 -1
  376. package/dist/components/br-link.d.ts +1 -1
  377. package/dist/components/br-link.js +1 -1
  378. package/dist/components/br-list.d.ts +1 -1
  379. package/dist/components/br-list.js +1 -1
  380. package/dist/components/br-loading.d.ts +1 -1
  381. package/dist/components/br-loading.js +1 -1
  382. package/dist/components/br-magic-button.d.ts +1 -1
  383. package/dist/components/br-magic-button.js +1 -1
  384. package/dist/components/br-menu-group.d.ts +1 -1
  385. package/dist/components/br-menu-group.js +1 -1
  386. package/dist/components/br-menu-header.d.ts +1 -1
  387. package/dist/components/br-menu-header.js +1 -1
  388. package/dist/components/br-menu-info.d.ts +1 -1
  389. package/dist/components/br-menu-info.js +1 -1
  390. package/dist/components/br-menu-item.d.ts +1 -1
  391. package/dist/components/br-menu-item.js +1 -1
  392. package/dist/components/br-menu-link.d.ts +1 -1
  393. package/dist/components/br-menu-link.js +1 -1
  394. package/dist/components/br-menu-list.d.ts +1 -1
  395. package/dist/components/br-menu-list.js +1 -1
  396. package/dist/components/br-menu-logo.d.ts +1 -1
  397. package/dist/components/br-menu-logo.js +1 -1
  398. package/dist/components/br-menu-social.d.ts +1 -1
  399. package/dist/components/br-menu-social.js +1 -1
  400. package/dist/components/br-menu.d.ts +1 -1
  401. package/dist/components/br-menu.js +1 -1
  402. package/dist/components/br-message.d.ts +1 -1
  403. package/dist/components/br-message.js +1 -1
  404. package/dist/components/br-modal.d.ts +1 -1
  405. package/dist/components/br-modal.js +1 -1
  406. package/dist/components/br-notification-body.d.ts +1 -1
  407. package/dist/components/br-notification-body.js +1 -1
  408. package/dist/components/br-notification-header.d.ts +1 -1
  409. package/dist/components/br-notification-header.js +1 -1
  410. package/dist/components/br-notification-item.d.ts +1 -1
  411. package/dist/components/br-notification-item.js +1 -1
  412. package/dist/components/br-notification.d.ts +1 -1
  413. package/dist/components/br-notification.js +1 -1
  414. package/dist/components/br-pagination.d.ts +1 -1
  415. package/dist/components/br-pagination.js +1 -1
  416. package/dist/components/br-radio-group.d.ts +1 -1
  417. package/dist/components/br-radio-group.js +1 -1
  418. package/dist/components/br-radio.d.ts +1 -1
  419. package/dist/components/br-radio.js +1 -1
  420. package/dist/components/br-scrim.d.ts +1 -1
  421. package/dist/components/br-scrim.js +1 -1
  422. package/dist/components/br-select-input.d.ts +1 -1
  423. package/dist/components/br-select-input.js +1 -1
  424. package/dist/components/br-select-list.d.ts +1 -1
  425. package/dist/components/br-select-list.js +1 -1
  426. package/dist/components/br-select-option.d.ts +1 -1
  427. package/dist/components/br-select-option.js +1 -1
  428. package/dist/components/br-select.d.ts +1 -1
  429. package/dist/components/br-select.js +1 -1
  430. package/dist/components/br-sign-in.d.ts +1 -1
  431. package/dist/components/br-sign-in.js +1 -1
  432. package/dist/components/br-skip-link-item.d.ts +1 -1
  433. package/dist/components/br-skip-link-item.js +1 -1
  434. package/dist/components/br-skip-link.d.ts +1 -1
  435. package/dist/components/br-skip-link.js +1 -1
  436. package/dist/components/br-skiplink-item.d.ts +1 -1
  437. package/dist/components/br-skiplink-item.js +1 -1
  438. package/dist/components/br-slider.d.ts +1 -1
  439. package/dist/components/br-slider.js +1 -1
  440. package/dist/components/br-step-item.d.ts +1 -1
  441. package/dist/components/br-step-item.js +1 -1
  442. package/dist/components/br-step.d.ts +1 -1
  443. package/dist/components/br-step.js +1 -1
  444. package/dist/components/br-switch.d.ts +1 -1
  445. package/dist/components/br-switch.js +1 -1
  446. package/dist/components/br-tab-item.d.ts +1 -1
  447. package/dist/components/br-tab-item.js +1 -1
  448. package/dist/components/br-tab.d.ts +1 -1
  449. package/dist/components/br-tab.js +1 -1
  450. package/dist/components/br-table-body.d.ts +1 -1
  451. package/dist/components/br-table-body.js +1 -1
  452. package/dist/components/br-table-cell.d.ts +1 -1
  453. package/dist/components/br-table-cell.js +1 -1
  454. package/dist/components/br-table-header-cell.d.ts +1 -1
  455. package/dist/components/br-table-header-cell.js +1 -1
  456. package/dist/components/br-table-header.d.ts +1 -1
  457. package/dist/components/br-table-header.js +1 -1
  458. package/dist/components/br-table-row.d.ts +1 -1
  459. package/dist/components/br-table-row.js +1 -1
  460. package/dist/components/br-table.d.ts +1 -1
  461. package/dist/components/br-table.js +1 -1
  462. package/dist/components/br-tag.d.ts +1 -1
  463. package/dist/components/br-tag.js +1 -1
  464. package/dist/components/br-textarea.d.ts +1 -1
  465. package/dist/components/br-textarea.js +1 -1
  466. package/dist/components/br-time-picker.d.ts +1 -1
  467. package/dist/components/br-time-picker.js +1 -1
  468. package/dist/components/br-tooltip.d.ts +1 -1
  469. package/dist/components/br-tooltip.js +1 -1
  470. package/dist/components/br-upload.d.ts +1 -1
  471. package/dist/components/br-upload.js +1 -1
  472. package/dist/components/br-wizard-panel.d.ts +1 -1
  473. package/dist/components/br-wizard-panel.js +1 -1
  474. package/dist/components/br-wizard.d.ts +1 -1
  475. package/dist/components/br-wizard.js +1 -1
  476. package/dist/components/index.d.ts +89 -89
  477. package/dist/components/index.js +1 -1
  478. package/dist/components/p-B0o70fWP.js +5 -0
  479. package/dist/components/p-B96LROz9.js +5 -0
  480. package/dist/components/p-BDqef5-y.js +5 -0
  481. package/dist/components/p-BEJGB0Nd.js +5 -0
  482. package/dist/{webcomponents/p-Dmfk7eEe.js → components/p-BJZC_NuV.js} +1 -1
  483. package/dist/components/p-BJtdabsr.js +5 -0
  484. package/dist/components/p-BP5zMCxG.js +5 -0
  485. package/dist/components/p-BRaphxoP.js +5 -0
  486. package/dist/components/p-BUzBa9L1.js +5 -0
  487. package/dist/components/{p-DA5GS53D.js → p-BblZlUp2.js} +1 -1
  488. package/dist/components/p-Bc4nAk5i.js +5 -0
  489. package/dist/components/{p-C1yRmdso.js → p-BcqVlof7.js} +1 -1
  490. package/dist/components/p-BeJxz5TQ.js +5 -0
  491. package/dist/components/p-Bezou5CQ.js +5 -0
  492. package/dist/components/p-BrNh9KdF.js +5 -0
  493. package/dist/components/p-C5th2dxu.js +5 -0
  494. package/dist/components/p-CDtFCbKp.js +5 -0
  495. package/dist/components/p-CEdUp183.js +5 -0
  496. package/dist/components/p-CF7t0uxQ.js +5 -0
  497. package/dist/components/p-CFzHx6zV.js +5 -0
  498. package/dist/components/p-CG4em0S6.js +5 -0
  499. package/dist/components/p-CI4D3-pf.js +5 -0
  500. package/dist/components/p-CIrVPkVg.js +5 -0
  501. package/dist/components/p-CNwZRgyL.js +5 -0
  502. package/dist/components/p-CppRJiyC.js +5 -0
  503. package/dist/components/p-Cvk1Ggs5.js +5 -0
  504. package/dist/components/p-D12US39c.js +5 -0
  505. package/dist/components/p-D9Zo6FlV.js +5 -0
  506. package/dist/components/p-DGPJkJsj.js +5 -0
  507. package/dist/components/p-DSHbttu9.js +5 -0
  508. package/dist/components/p-DTGNra9m.js +5 -0
  509. package/dist/components/p-DWhzxlCx.js +5 -0
  510. package/dist/components/p-DX1wAFn4.js +5 -0
  511. package/dist/components/p-DiLI514I.js +5 -0
  512. package/dist/components/p-Dma14GVa.js +5 -0
  513. package/dist/components/p-DpRZ4B0d.js +5 -0
  514. package/dist/components/p-G35qEQZd.js +5 -0
  515. package/dist/components/p-Ho_IybzR.js +5 -0
  516. package/dist/components/p-SvVnvJdC.js +5 -0
  517. package/dist/components/p-emAWunES.js +5 -0
  518. package/dist/components/p-fB79wKCm.js +5 -0
  519. package/dist/components/p-k7p4QJ8a.js +5 -0
  520. package/dist/esm/br-avatar.entry.js +21 -14
  521. package/dist/esm/br-breadcrumb-item.entry.js +2 -2
  522. package/dist/esm/br-breadcrumb.entry.js +49 -22
  523. package/dist/esm/br-button_2.entry.js +72 -35
  524. package/dist/esm/br-card.entry.js +6 -5
  525. package/dist/esm/br-carousel-page.entry.js +3 -3
  526. package/dist/esm/br-carousel.entry.js +78 -22
  527. package/dist/esm/br-checkbox-group.entry.js +157 -27
  528. package/dist/esm/br-checkbox.entry.js +86 -16
  529. package/dist/esm/br-checkgroup.entry.js +5 -2
  530. package/dist/esm/br-collapse_2.entry.js +86 -27
  531. package/dist/esm/br-cookiebar-cookie.entry.js +4 -4
  532. package/dist/esm/br-cookiebar-group.entry.js +4 -4
  533. package/dist/esm/br-cookiebar-header.entry.js +4 -4
  534. package/dist/esm/br-cookiebar-link.entry.js +14 -6
  535. package/dist/esm/br-cookiebar-note-group.entry.js +3 -5
  536. package/dist/esm/br-cookiebar-note.entry.js +4 -4
  537. package/dist/esm/br-cookiebar.entry.js +39 -26
  538. package/dist/esm/br-crumb.entry.js +2 -2
  539. package/dist/esm/br-date-picker_3.entry.js +207 -49
  540. package/dist/esm/br-datetime-picker.entry.js +82 -494
  541. package/dist/esm/br-divider.entry.js +70 -17
  542. package/dist/esm/br-dropdown_2.entry.js +302 -129
  543. package/dist/esm/br-footer-category.entry.js +10 -6
  544. package/dist/esm/br-footer-item.entry.js +9 -4
  545. package/dist/esm/br-footer-legal.entry.js +4 -4
  546. package/dist/esm/br-footer-logo.entry.js +22 -10
  547. package/dist/esm/br-footer-social.entry.js +14 -6
  548. package/dist/esm/br-footer.entry.js +16 -7
  549. package/dist/esm/br-header-function.entry.js +28 -7
  550. package/dist/esm/br-header-link.entry.js +25 -4
  551. package/dist/esm/br-header-list.entry.js +7 -18
  552. package/dist/esm/br-header-logo.entry.js +18 -7
  553. package/dist/esm/br-header.entry.js +72 -17
  554. package/dist/esm/br-icon.entry.js +160 -23
  555. package/dist/esm/br-input.entry.js +132 -41
  556. package/dist/esm/br-item.entry.js +96 -48
  557. package/dist/esm/br-link.entry.js +20 -7
  558. package/dist/esm/br-loading.entry.js +100 -38
  559. package/dist/esm/br-magic-button.entry.js +26 -9
  560. package/dist/esm/br-menu-group.entry.js +14 -3
  561. package/dist/esm/br-menu-header.entry.js +4 -4
  562. package/dist/esm/br-menu-info.entry.js +4 -4
  563. package/dist/esm/br-menu-item.entry.js +27 -5
  564. package/dist/esm/br-menu-link.entry.js +14 -6
  565. package/dist/esm/br-menu-list.entry.js +23 -27
  566. package/dist/esm/br-menu-logo.entry.js +4 -4
  567. package/dist/esm/br-menu-social.entry.js +16 -6
  568. package/dist/esm/br-menu.entry.js +39 -58
  569. package/dist/esm/br-modal.entry.js +26 -40
  570. package/dist/esm/br-notification-body.entry.js +4 -4
  571. package/dist/esm/br-notification-header.entry.js +4 -4
  572. package/dist/esm/br-notification-item.entry.js +14 -8
  573. package/dist/esm/br-notification.entry.js +24 -9
  574. package/dist/esm/br-pagination.entry.js +119 -87
  575. package/dist/esm/br-radio-group.entry.js +107 -58
  576. package/dist/esm/br-radio.entry.js +62 -12
  577. package/dist/esm/br-scrim.entry.js +161 -67
  578. package/dist/esm/br-select-input_3.entry.js +283 -90
  579. package/dist/esm/br-sign-in.entry.js +34 -15
  580. package/dist/esm/br-skip-link-item.entry.js +39 -2
  581. package/dist/esm/br-skip-link.entry.js +50 -33
  582. package/dist/esm/br-skiplink-item.entry.js +22 -6
  583. package/dist/esm/br-slider.entry.js +519 -97
  584. package/dist/esm/br-step_2.entry.js +98 -44
  585. package/dist/esm/br-switch.entry.js +21 -12
  586. package/dist/esm/br-tab-item.entry.js +38 -14
  587. package/dist/esm/br-tab.entry.js +57 -44
  588. package/dist/esm/br-table-body.entry.js +3 -3
  589. package/dist/esm/br-table-cell.entry.js +30 -13
  590. package/dist/esm/br-table-header-cell.entry.js +23 -7
  591. package/dist/esm/br-table-header.entry.js +3 -3
  592. package/dist/esm/br-table-row.entry.js +17 -3
  593. package/dist/esm/br-table.entry.js +68 -22
  594. package/dist/esm/br-tag.entry.js +49 -31
  595. package/dist/esm/br-textarea.entry.js +118 -13
  596. package/dist/esm/br-tooltip.entry.js +88 -42
  597. package/dist/esm/br-upload.entry.js +84 -25
  598. package/dist/esm/br-wizard-panel.entry.js +16 -3
  599. package/dist/esm/br-wizard.entry.js +52 -28
  600. package/dist/esm/{datetime-picker-constants-Bfm58jO6.js → datetime-picker-constants-BtRPYRvA.js} +1 -1
  601. package/dist/esm/{isValid-DIUZX1qS.js → datetime-picker-props-validation-BeTcUTnE.js} +476 -5
  602. package/dist/esm/{event-DFN_so7I.js → event-CfuJQ1DY.js} +1 -1
  603. package/dist/esm/{floating-ui-BavFwMnx.js → floating-ui-CskvaxD5.js} +24 -1
  604. package/dist/esm/{floating-ui.dom-DIK54tTj.js → floating-ui.dom-D9Zo6FlV.js} +201 -114
  605. package/dist/esm/{focus-DxZJrIyL.js → focus-CNwZRgyL.js} +20 -1
  606. package/dist/esm/header-context-BEJGB0Nd.js +15 -0
  607. package/dist/esm/id-BeJxz5TQ.js +34 -0
  608. package/dist/esm/{index-Bo-2igoO.js → index-BQPOWxe5.js} +1 -1
  609. package/dist/esm/{index-C2RBydfd.js → index-Dcn7tRST.js} +68 -752
  610. package/dist/esm/index.js +2 -2
  611. package/dist/esm/loader.js +3 -3
  612. package/dist/esm/motion-DWhzxlCx.js +27 -0
  613. package/dist/esm/ownership-CDtFCbKp.js +111 -0
  614. package/dist/esm/prop-warning-BlGV-x0w.js +56 -0
  615. package/dist/esm/props-D07GjR4_.js +116 -0
  616. package/dist/esm/{swipe-Dmfk7eEe.js → swipe-BJZC_NuV.js} +11 -1
  617. package/dist/esm/webcomponents.js +4 -4
  618. package/dist/hydrate/index.js +7364 -2602
  619. package/dist/hydrate/index.mjs +7364 -2602
  620. package/dist/loader/index.d.ts +1 -1
  621. package/dist/types/components/avatar/avatar.d.ts +34 -4
  622. package/dist/types/components/breadcrumb/breadcrumb-item/breadcrumb-item.d.ts +14 -2
  623. package/dist/types/components/breadcrumb/breadcrumb.d.ts +66 -5
  624. package/dist/types/components/breadcrumb/crumb/crumb.d.ts +13 -1
  625. package/dist/types/components/button/button.d.ts +45 -9
  626. package/dist/types/components/card/card.d.ts +31 -3
  627. package/dist/types/components/carousel/carousel-page/carousel-page.d.ts +10 -3
  628. package/dist/types/components/carousel/carousel.d.ts +46 -3
  629. package/dist/types/components/checkbox/checkbox.d.ts +59 -6
  630. package/dist/types/components/checkbox-group/checkbox-group.d.ts +47 -5
  631. package/dist/types/components/checkgroup/checkgroup.d.ts +27 -5
  632. package/dist/types/components/collapse/collapse.d.ts +33 -4
  633. package/dist/types/components/cookiebar/cookiebar-cookie/cookiebar-cookie.d.ts +16 -3
  634. package/dist/types/components/cookiebar/cookiebar-group/cookiebar-group.d.ts +15 -6
  635. package/dist/types/components/cookiebar/cookiebar-header/cookiebar-header.d.ts +14 -8
  636. package/dist/types/components/cookiebar/cookiebar-link/cookiebar-link.d.ts +16 -5
  637. package/dist/types/components/cookiebar/cookiebar-note/cookiebar-note.d.ts +13 -3
  638. package/dist/types/components/cookiebar/cookiebar-note-group/cookiebar-note-group.d.ts +13 -3
  639. package/dist/types/components/cookiebar/cookiebar.d.ts +35 -10
  640. package/dist/types/components/datetime-picker/date-picker/date-picker.d.ts +63 -7
  641. package/dist/types/components/datetime-picker/datetime-input/datetime-input.d.ts +51 -9
  642. package/dist/types/components/datetime-picker/datetime-picker-props-validation.d.ts +4 -2
  643. package/dist/types/components/datetime-picker/datetime-picker.d.ts +118 -12
  644. package/dist/types/components/datetime-picker/time-picker/time-picker.d.ts +38 -4
  645. package/dist/types/components/divider/divider.d.ts +45 -8
  646. package/dist/types/components/dropdown/dropdown.d.ts +41 -3
  647. package/dist/types/components/footer/footer-category/footer-category.d.ts +16 -1
  648. package/dist/types/components/footer/footer-item/footer-item.d.ts +17 -1
  649. package/dist/types/components/footer/footer-legal/footer-legal.d.ts +15 -1
  650. package/dist/types/components/footer/footer-logo/footer-logo.d.ts +21 -2
  651. package/dist/types/components/footer/footer-social/footer-social.d.ts +20 -3
  652. package/dist/types/components/footer/footer.d.ts +39 -3
  653. package/dist/types/components/header/header-context.d.ts +1 -0
  654. package/dist/types/components/header/header-function/header-function.d.ts +24 -2
  655. package/dist/types/components/header/header-link/header-link.d.ts +22 -1
  656. package/dist/types/components/header/header-list/header-list.d.ts +16 -8
  657. package/dist/types/components/header/header-logo/header-logo.d.ts +20 -1
  658. package/dist/types/components/header/header.d.ts +45 -7
  659. package/dist/types/components/icon/icon.d.ts +44 -13
  660. package/dist/types/components/input/input.d.ts +65 -15
  661. package/dist/types/components/item/item.d.ts +38 -5
  662. package/dist/types/components/link/link.d.ts +41 -9
  663. package/dist/types/components/list/list.d.ts +58 -8
  664. package/dist/types/components/loading/loading.d.ts +48 -8
  665. package/dist/types/components/magic-button/magic-button.d.ts +37 -3
  666. package/dist/types/components/menu/menu-group/menu-group.d.ts +19 -1
  667. package/dist/types/components/menu/menu-header/menu-header.d.ts +16 -1
  668. package/dist/types/components/menu/menu-info/menu-info.d.ts +14 -1
  669. package/dist/types/components/menu/menu-item/menu-item.d.ts +27 -3
  670. package/dist/types/components/menu/menu-link/menu-link.d.ts +17 -1
  671. package/dist/types/components/menu/menu-list/menu-list.d.ts +22 -4
  672. package/dist/types/components/menu/menu-logo/menu-logo.d.ts +14 -1
  673. package/dist/types/components/menu/menu-social/menu-social.d.ts +21 -2
  674. package/dist/types/components/menu/menu.d.ts +39 -6
  675. package/dist/types/components/menu/menu.utils.d.ts +2 -6
  676. package/dist/types/components/message/message.d.ts +38 -9
  677. package/dist/types/components/modal/modal.d.ts +34 -4
  678. package/dist/types/components/notification/notification-body/notification-body.d.ts +12 -3
  679. package/dist/types/components/notification/notification-header/notification-header.d.ts +12 -3
  680. package/dist/types/components/notification/notification-item/notification-item.d.ts +15 -3
  681. package/dist/types/components/notification/notification.d.ts +36 -5
  682. package/dist/types/components/pagination/pagination.d.ts +56 -20
  683. package/dist/types/components/radio/radio.d.ts +49 -4
  684. package/dist/types/components/radio-group/radio-group.d.ts +52 -10
  685. package/dist/types/components/scrim/scrim.d.ts +72 -11
  686. package/dist/types/components/scrim/scrim.utils.d.ts +2 -17
  687. package/dist/types/components/select/select-input/select-input.d.ts +22 -4
  688. package/dist/types/components/select/select-list/select-list.d.ts +51 -5
  689. package/dist/types/components/select/select-option/select-option.d.ts +31 -8
  690. package/dist/types/components/select/select.d.ts +152 -13
  691. package/dist/types/components/select/select.types.d.ts +5 -0
  692. package/dist/types/components/sign-in/sign-in.d.ts +30 -3
  693. package/dist/types/components/skip-link/skip-link-item/skip-link-item-alias.d.ts +15 -2
  694. package/dist/types/components/skip-link/skip-link-item/skip-link-item.d.ts +22 -1
  695. package/dist/types/components/skip-link/skip-link.d.ts +37 -3
  696. package/dist/types/components/slider/slider.d.ts +147 -21
  697. package/dist/types/components/slider/slider.types.d.ts +7 -2
  698. package/dist/types/components/slider/slider.utils.d.ts +27 -0
  699. package/dist/types/components/step/step-item/step-item.d.ts +15 -3
  700. package/dist/types/components/step/step.d.ts +47 -12
  701. package/dist/types/components/switch/switch.d.ts +39 -6
  702. package/dist/types/components/tab/tab-item/tab-item.d.ts +20 -4
  703. package/dist/types/components/tab/tab.d.ts +41 -11
  704. package/dist/types/components/table/table-body/table-body.d.ts +10 -6
  705. package/dist/types/components/table/table-cell/table-cell.d.ts +10 -6
  706. package/dist/types/components/table/table-header/table-header.d.ts +10 -6
  707. package/dist/types/components/table/table-header-cell/table-header-cell.d.ts +18 -6
  708. package/dist/types/components/table/table-row/table-row.d.ts +11 -6
  709. package/dist/types/components/table/table.d.ts +49 -11
  710. package/dist/types/components/tag/tag.d.ts +55 -7
  711. package/dist/types/components/textarea/textarea.d.ts +75 -5
  712. package/dist/types/components/textarea/textarea.types.d.ts +4 -0
  713. package/dist/types/components/tooltip/tooltip.d.ts +46 -8
  714. package/dist/types/components/upload/upload.d.ts +78 -10
  715. package/dist/types/components/wizard/wizard-panel/wizard-panel.d.ts +20 -2
  716. package/dist/types/components/wizard/wizard.d.ts +44 -7
  717. package/dist/types/components.d.ts +5823 -1350
  718. package/dist/types/shared/utils/floating-ui.d.ts +4 -0
  719. package/dist/types/shared/utils/focus.d.ts +14 -0
  720. package/dist/types/shared/utils/getRandom.d.ts +1 -0
  721. package/dist/types/shared/utils/id.d.ts +1 -1
  722. package/dist/types/shared/utils/index.d.ts +6 -1
  723. package/dist/types/shared/utils/motion.d.ts +14 -0
  724. package/dist/types/shared/utils/ownership.d.ts +33 -0
  725. package/dist/types/shared/utils/prop-warning.d.ts +7 -0
  726. package/dist/types/shared/utils/props.d.ts +38 -0
  727. package/dist/types/shared/utils/swipe.d.ts +5 -0
  728. package/dist/types/shared/utils/virtual-scroll.d.ts +25 -0
  729. package/dist/types/stencil-public-runtime.d.ts +12 -0
  730. package/dist/webcomponents/index.esm.js +1 -1
  731. package/dist/webcomponents/p-01baafce.entry.js +5 -0
  732. package/dist/webcomponents/p-01fb0754.entry.js +5 -0
  733. package/dist/webcomponents/p-030c02f8.entry.js +5 -0
  734. package/dist/webcomponents/p-03359c92.entry.js +5 -0
  735. package/dist/webcomponents/p-09770c98.entry.js +5 -0
  736. package/dist/webcomponents/p-0b9714f1.entry.js +5 -0
  737. package/dist/webcomponents/p-12aa36a8.entry.js +5 -0
  738. package/dist/webcomponents/p-130b6e06.entry.js +5 -0
  739. package/dist/webcomponents/p-144f8c8d.entry.js +5 -0
  740. package/dist/webcomponents/p-14fe22e2.entry.js +5 -0
  741. package/dist/webcomponents/p-1ff9210a.entry.js +5 -0
  742. package/dist/webcomponents/p-2605cdc3.entry.js +5 -0
  743. package/dist/webcomponents/p-27afaec9.entry.js +5 -0
  744. package/dist/webcomponents/p-2a50e42d.entry.js +5 -0
  745. package/dist/webcomponents/p-327f034f.entry.js +5 -0
  746. package/dist/webcomponents/p-342650b8.entry.js +5 -0
  747. package/dist/webcomponents/p-38f6a78b.entry.js +5 -0
  748. package/dist/webcomponents/p-3920fe3a.entry.js +5 -0
  749. package/dist/webcomponents/p-3ae97345.entry.js +5 -0
  750. package/dist/webcomponents/p-3cce767c.entry.js +5 -0
  751. package/dist/webcomponents/p-3df6c5d2.entry.js +5 -0
  752. package/dist/webcomponents/p-3e287899.entry.js +5 -0
  753. package/dist/webcomponents/p-3e5580ba.entry.js +5 -0
  754. package/dist/webcomponents/p-403637dd.entry.js +5 -0
  755. package/dist/webcomponents/p-435c8ef2.entry.js +5 -0
  756. package/dist/webcomponents/p-59da5b55.entry.js +5 -0
  757. package/dist/webcomponents/p-5dd4314c.entry.js +5 -0
  758. package/dist/webcomponents/p-646af6a5.entry.js +5 -0
  759. package/dist/webcomponents/p-670e8fec.entry.js +5 -0
  760. package/dist/webcomponents/p-68046544.entry.js +5 -0
  761. package/dist/webcomponents/p-68ec76b8.entry.js +5 -0
  762. package/dist/webcomponents/p-6c0ea20c.entry.js +5 -0
  763. package/dist/webcomponents/p-6c2fe5e4.entry.js +5 -0
  764. package/dist/webcomponents/p-707df9b9.entry.js +5 -0
  765. package/dist/webcomponents/p-72b839fe.entry.js +5 -0
  766. package/dist/webcomponents/p-73dcc05b.entry.js +5 -0
  767. package/dist/webcomponents/p-7acf20d3.entry.js +5 -0
  768. package/dist/webcomponents/p-7b01bddb.entry.js +5 -0
  769. package/dist/webcomponents/p-7cd38850.entry.js +5 -0
  770. package/dist/webcomponents/p-82454383.entry.js +5 -0
  771. package/dist/webcomponents/p-91e959a8.entry.js +5 -0
  772. package/dist/webcomponents/p-964c01e6.entry.js +5 -0
  773. package/dist/webcomponents/p-9858e42a.entry.js +5 -0
  774. package/dist/webcomponents/p-9c4200b0.entry.js +5 -0
  775. package/dist/webcomponents/p-9d9c87b1.entry.js +5 -0
  776. package/dist/webcomponents/p-B0PbhaxL.js +5 -0
  777. package/dist/webcomponents/p-BEJGB0Nd.js +5 -0
  778. package/dist/{components/p-Dmfk7eEe.js → webcomponents/p-BJZC_NuV.js} +1 -1
  779. package/dist/webcomponents/p-BJtdabsr.js +5 -0
  780. package/dist/webcomponents/p-BeJxz5TQ.js +5 -0
  781. package/dist/webcomponents/p-BlGV-x0w.js +5 -0
  782. package/dist/webcomponents/{p-Bfm58jO6.js → p-BtRPYRvA.js} +1 -1
  783. package/dist/webcomponents/p-CDtFCbKp.js +5 -0
  784. package/dist/webcomponents/p-CNwZRgyL.js +5 -0
  785. package/dist/webcomponents/{p-DFN_so7I.js → p-CfuJQ1DY.js} +1 -1
  786. package/dist/webcomponents/p-D9Zo6FlV.js +5 -0
  787. package/dist/webcomponents/{p-BhMVJQ4-.js → p-DV-iW9Aj.js} +1 -1
  788. package/dist/webcomponents/p-DWhzxlCx.js +5 -0
  789. package/dist/webcomponents/p-Dcn7tRST.js +7 -0
  790. package/dist/webcomponents/p-EbtQZm5s.js +5 -0
  791. package/dist/webcomponents/p-a0931550.entry.js +5 -0
  792. package/dist/webcomponents/p-a212fd85.entry.js +5 -0
  793. package/dist/webcomponents/p-a2e75143.entry.js +5 -0
  794. package/dist/webcomponents/p-a3bb98c9.entry.js +5 -0
  795. package/dist/webcomponents/p-a8b5dba0.entry.js +5 -0
  796. package/dist/webcomponents/p-aa909443.entry.js +5 -0
  797. package/dist/webcomponents/p-abaf2365.entry.js +5 -0
  798. package/dist/webcomponents/p-aeb16645.entry.js +5 -0
  799. package/dist/webcomponents/p-b287c384.entry.js +5 -0
  800. package/dist/webcomponents/p-b506b0a1.entry.js +5 -0
  801. package/dist/webcomponents/p-b520c08c.entry.js +5 -0
  802. package/dist/webcomponents/p-b94c3f84.entry.js +5 -0
  803. package/dist/webcomponents/p-bda62f90.entry.js +5 -0
  804. package/dist/webcomponents/p-c201ae16.entry.js +5 -0
  805. package/dist/webcomponents/p-c7e899a1.entry.js +5 -0
  806. package/dist/webcomponents/p-c8b7bbab.entry.js +5 -0
  807. package/dist/webcomponents/p-cbf3e251.entry.js +5 -0
  808. package/dist/webcomponents/{p-7f7506f0.entry.js → p-cff24492.entry.js} +1 -1
  809. package/dist/webcomponents/p-d35cf5b4.entry.js +5 -0
  810. package/dist/webcomponents/p-d45ffe9c.entry.js +5 -0
  811. package/dist/webcomponents/p-d719a4af.entry.js +5 -0
  812. package/dist/webcomponents/p-d826c052.entry.js +5 -0
  813. package/dist/webcomponents/p-da21a60d.entry.js +5 -0
  814. package/dist/webcomponents/p-de0c7f26.entry.js +5 -0
  815. package/dist/webcomponents/p-e20188c0.entry.js +5 -0
  816. package/dist/webcomponents/p-e27882e1.entry.js +5 -0
  817. package/dist/webcomponents/p-e3de5bb3.entry.js +5 -0
  818. package/dist/webcomponents/p-e624ff04.entry.js +5 -0
  819. package/dist/webcomponents/p-ed5af0e4.entry.js +5 -0
  820. package/dist/webcomponents/p-edc6da0e.entry.js +5 -0
  821. package/dist/webcomponents/p-f24fcf3d.entry.js +5 -0
  822. package/dist/webcomponents/p-f52ef0dc.entry.js +5 -0
  823. package/dist/webcomponents/{p-12286e73.entry.js → p-f558d7b9.entry.js} +1 -1
  824. package/dist/webcomponents/p-fcab1428.entry.js +5 -0
  825. package/dist/webcomponents/p-fe1729a7.entry.js +5 -0
  826. package/dist/webcomponents/webcomponents.esm.js +1 -1
  827. package/package.json +18 -3
  828. package/dist/cjs/clamp-Co_hWptd.js +0 -25
  829. package/dist/cjs/id-CjRFMzf6.js +0 -20
  830. package/dist/cjs/props-CScmBvKd.js +0 -24
  831. package/dist/collection/pages/components/cookiebar/index.js +0 -26
  832. package/dist/collection/pages/components/link/index.js +0 -29
  833. package/dist/collection/pages/components/pagination/index.js +0 -12
  834. package/dist/collection/pages/components/slider/index.js +0 -18
  835. package/dist/components/p-6OdfnwnK.js +0 -5
  836. package/dist/components/p-AmOh1cks.js +0 -5
  837. package/dist/components/p-B4ylcipx.js +0 -5
  838. package/dist/components/p-BCv4PCOx.js +0 -5
  839. package/dist/components/p-BLOyd_iF.js +0 -5
  840. package/dist/components/p-BODem6tr.js +0 -5
  841. package/dist/components/p-Bb-nLtTG.js +0 -5
  842. package/dist/components/p-BeFK-82z.js +0 -5
  843. package/dist/components/p-BkS6ujyf.js +0 -5
  844. package/dist/components/p-BloE-KAN.js +0 -5
  845. package/dist/components/p-BoSc_kmY.js +0 -5
  846. package/dist/components/p-BrH3r7eL.js +0 -5
  847. package/dist/components/p-BsZ0Ny88.js +0 -5
  848. package/dist/components/p-ByHVf7zy.js +0 -5
  849. package/dist/components/p-CdF-gmk1.js +0 -5
  850. package/dist/components/p-CfyjGPGI.js +0 -5
  851. package/dist/components/p-CjF7pBVQ.js +0 -5
  852. package/dist/components/p-ClqtllDH.js +0 -5
  853. package/dist/components/p-CqW2Yh34.js +0 -5
  854. package/dist/components/p-DIK54tTj.js +0 -5
  855. package/dist/components/p-DLE5ioJN.js +0 -5
  856. package/dist/components/p-DQRSHR-D.js +0 -5
  857. package/dist/components/p-DRVMm1Py.js +0 -5
  858. package/dist/components/p-DRnCpVrL.js +0 -5
  859. package/dist/components/p-DVdlaP7z.js +0 -5
  860. package/dist/components/p-DeeF6ok0.js +0 -5
  861. package/dist/components/p-Dim2PnUm.js +0 -5
  862. package/dist/components/p-Dk8rfQjL.js +0 -5
  863. package/dist/components/p-DkmEpoef.js +0 -5
  864. package/dist/components/p-DwfAYaEv.js +0 -5
  865. package/dist/components/p-DxZJrIyL.js +0 -5
  866. package/dist/components/p-P2Z_MmH6.js +0 -5
  867. package/dist/components/p-Xa0Mj4pP.js +0 -5
  868. package/dist/components/p-_vsQvdxD.js +0 -5
  869. package/dist/components/p-aNjo4Alx.js +0 -5
  870. package/dist/components/p-gvnfuTjd.js +0 -5
  871. package/dist/components/p-rB-s1M3Q.js +0 -5
  872. package/dist/esm/clamp-gvnfuTjd.js +0 -23
  873. package/dist/esm/id-BkS6ujyf.js +0 -18
  874. package/dist/esm/props-DRVMm1Py.js +0 -22
  875. package/dist/webcomponents/p-00cc31f9.entry.js +0 -5
  876. package/dist/webcomponents/p-026475bd.entry.js +0 -5
  877. package/dist/webcomponents/p-0291ab28.entry.js +0 -5
  878. package/dist/webcomponents/p-03e5a7dc.entry.js +0 -5
  879. package/dist/webcomponents/p-060df8ee.entry.js +0 -5
  880. package/dist/webcomponents/p-09fce2a5.entry.js +0 -5
  881. package/dist/webcomponents/p-1002bbff.entry.js +0 -5
  882. package/dist/webcomponents/p-1124de33.entry.js +0 -5
  883. package/dist/webcomponents/p-12e97d80.entry.js +0 -5
  884. package/dist/webcomponents/p-1580beee.entry.js +0 -5
  885. package/dist/webcomponents/p-1b19b191.entry.js +0 -5
  886. package/dist/webcomponents/p-2baf353b.entry.js +0 -5
  887. package/dist/webcomponents/p-2eb9a42c.entry.js +0 -5
  888. package/dist/webcomponents/p-30c82805.entry.js +0 -5
  889. package/dist/webcomponents/p-31bd1c74.entry.js +0 -5
  890. package/dist/webcomponents/p-31db2313.entry.js +0 -5
  891. package/dist/webcomponents/p-33a3dc63.entry.js +0 -5
  892. package/dist/webcomponents/p-3889c51f.entry.js +0 -5
  893. package/dist/webcomponents/p-3f2c179a.entry.js +0 -5
  894. package/dist/webcomponents/p-470eb770.entry.js +0 -5
  895. package/dist/webcomponents/p-4ae387ae.entry.js +0 -5
  896. package/dist/webcomponents/p-4e65df84.entry.js +0 -5
  897. package/dist/webcomponents/p-51a62876.entry.js +0 -5
  898. package/dist/webcomponents/p-5860b96b.entry.js +0 -5
  899. package/dist/webcomponents/p-5b9c01e9.entry.js +0 -5
  900. package/dist/webcomponents/p-5df2f1dd.entry.js +0 -5
  901. package/dist/webcomponents/p-5f3f7b3f.entry.js +0 -5
  902. package/dist/webcomponents/p-5f6afb79.entry.js +0 -5
  903. package/dist/webcomponents/p-5f9c28a7.entry.js +0 -5
  904. package/dist/webcomponents/p-62511921.entry.js +0 -5
  905. package/dist/webcomponents/p-63b52947.entry.js +0 -5
  906. package/dist/webcomponents/p-67a8e0b7.entry.js +0 -5
  907. package/dist/webcomponents/p-6OdfnwnK.js +0 -5
  908. package/dist/webcomponents/p-7b2a5fec.entry.js +0 -5
  909. package/dist/webcomponents/p-7f95e2f5.entry.js +0 -5
  910. package/dist/webcomponents/p-8128833c.entry.js +0 -5
  911. package/dist/webcomponents/p-8200ccb1.entry.js +0 -5
  912. package/dist/webcomponents/p-82b100fd.entry.js +0 -5
  913. package/dist/webcomponents/p-8806df15.entry.js +0 -5
  914. package/dist/webcomponents/p-881eb81a.entry.js +0 -5
  915. package/dist/webcomponents/p-8bd3d541.entry.js +0 -5
  916. package/dist/webcomponents/p-90648343.entry.js +0 -5
  917. package/dist/webcomponents/p-9100a5f7.entry.js +0 -5
  918. package/dist/webcomponents/p-91313d77.entry.js +0 -5
  919. package/dist/webcomponents/p-946b2ac0.entry.js +0 -5
  920. package/dist/webcomponents/p-98e7ccb9.entry.js +0 -5
  921. package/dist/webcomponents/p-99f2bddb.entry.js +0 -5
  922. package/dist/webcomponents/p-9adbdb0a.entry.js +0 -5
  923. package/dist/webcomponents/p-9c260049.entry.js +0 -5
  924. package/dist/webcomponents/p-9ed51017.entry.js +0 -5
  925. package/dist/webcomponents/p-BkS6ujyf.js +0 -5
  926. package/dist/webcomponents/p-C2RBydfd.js +0 -6
  927. package/dist/webcomponents/p-CO5cOQQU.js +0 -5
  928. package/dist/webcomponents/p-DIK54tTj.js +0 -5
  929. package/dist/webcomponents/p-DRVMm1Py.js +0 -5
  930. package/dist/webcomponents/p-DxZJrIyL.js +0 -5
  931. package/dist/webcomponents/p-a0b299dd.entry.js +0 -5
  932. package/dist/webcomponents/p-a2c5fad0.entry.js +0 -5
  933. package/dist/webcomponents/p-a3e044d7.entry.js +0 -5
  934. package/dist/webcomponents/p-a9f23aa7.entry.js +0 -5
  935. package/dist/webcomponents/p-a9f2fcbc.entry.js +0 -5
  936. package/dist/webcomponents/p-b6c68136.entry.js +0 -5
  937. package/dist/webcomponents/p-b6e9b8d1.entry.js +0 -5
  938. package/dist/webcomponents/p-c333eac6.entry.js +0 -5
  939. package/dist/webcomponents/p-c3732fd6.entry.js +0 -5
  940. package/dist/webcomponents/p-c458ed0e.entry.js +0 -5
  941. package/dist/webcomponents/p-c91000ff.entry.js +0 -5
  942. package/dist/webcomponents/p-c9c6ab2d.entry.js +0 -5
  943. package/dist/webcomponents/p-cd2550d6.entry.js +0 -5
  944. package/dist/webcomponents/p-cf42613f.entry.js +0 -5
  945. package/dist/webcomponents/p-d0b0b420.entry.js +0 -5
  946. package/dist/webcomponents/p-d1b32ee8.entry.js +0 -5
  947. package/dist/webcomponents/p-db65b083.entry.js +0 -5
  948. package/dist/webcomponents/p-de7c101d.entry.js +0 -5
  949. package/dist/webcomponents/p-dfb77dd0.entry.js +0 -5
  950. package/dist/webcomponents/p-e258da78.entry.js +0 -5
  951. package/dist/webcomponents/p-e31ddd42.entry.js +0 -5
  952. package/dist/webcomponents/p-e8d82227.entry.js +0 -5
  953. package/dist/webcomponents/p-e988cf1d.entry.js +0 -5
  954. package/dist/webcomponents/p-ed9122a1.entry.js +0 -5
  955. package/dist/webcomponents/p-ee347d2e.entry.js +0 -5
  956. package/dist/webcomponents/p-f1c01d52.entry.js +0 -5
  957. package/dist/webcomponents/p-f5baf8be.entry.js +0 -5
  958. package/dist/webcomponents/p-fb593739.entry.js +0 -5
  959. package/dist/webcomponents/p-fff9acd4.entry.js +0 -5
  960. package/dist/webcomponents/p-gvnfuTjd.js +0 -5
@@ -6,16 +6,100 @@ import { Host, h, } from "@stencil/core";
6
6
  import { dispatchNativeFormEvent } from "../../shared/utils/event";
7
7
  import { listenForExternalBlockingSurface } from "../../shared/utils/floating-surface-dismiss";
8
8
  import { getFormValidationState, isFormControlDisabled, safeSetFormValue, syncNativeFormValidity, } from "../../shared/utils/form";
9
+ import { generateUniqueId } from "../../shared/utils/id";
10
+ import { createMicrotaskReconciler, findComposedOwner } from "../../shared/utils/ownership";
11
+ import { reportInvalidPropValue } from "../../shared/utils/prop-warning";
12
+ import { resolveAllowedPropValue, resolveDensity, resolveIntegerPropValue, resolveNumberPropValue, } from "../../shared/utils/props";
9
13
  import { hasAssignedSlotContent, hasNamedLightDomSlot } from "../../shared/utils/slot";
10
14
  import { resolveFormValidator } from "../../shared/utils/validator";
11
15
  import { transitionAllSelection, transitionSelection } from "./select.utils";
12
- let selectId = 0;
16
+ const SELECT_SEARCH_MODES = ['local', 'remote'];
17
+ const SELECT_AUTOCOMPLETE_VALUES = ['on', 'off'];
13
18
  /**
14
- * ## Design System
19
+ * O componente `br-select` é o controle oficial de seleção do GovBR-DS, desenvolvido para permitir que o usuário escolha uma ou múltiplas opções a partir de uma lista expansível. Compatível com o padrão WAI-ARIA Combobox, ele reúne em um único componente acessível o campo de acionamento/digitação, a lista suspensa e as opções selecionáveis, integrando-se nativamente a formulários HTML e frameworks modernos.
15
20
  *
16
- * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/select?tab=designer).
21
+ * ### Para que serve
17
22
  *
18
- * @category Formulários
23
+ * O `br-select` gerencia todo o fluxo de interação de seleção:
24
+ * - **Seleção simples e múltipla:** Permite selecionar uma única opção ou múltiplas opções (`multiple`), incluindo a opção de selecionar ou desmarcar todas em lote.
25
+ * - **Busca e filtragem:** Oferece filtro local integrado (conforme o usuário digita) e suporte a busca remota assíncrona (`search-mode="remote"`), disparando eventos para carregamento sob demanda via API.
26
+ * - **Agrupamento de opções:** Organiza opções contíguas por categoria, preservando virtualização, busca local e semântica nativa de formulário.
27
+ * - **Integração com formulários:** É associado a formulários nativos (`formAssociated`), comunicando seu valor, estado de validação (válido/inválido), mensagens de erro contextuais e eventos padrão (`change`, `input`).
28
+ * - **Navegação acessível:** Suporta controle total via teclado (setas para cima/baixo, Enter, Escape, Home, End), foco gerenciado e anúncios para leitores de tela.
29
+ *
30
+ * ### Quando utilizar
31
+ *
32
+ * - **Utilize quando:**
33
+ * - O número de opções for moderado a grande (mais de 5 a 7 itens), onde listar todas diretamente na tela consumiria muito espaço visual.
34
+ * - For necessário filtrar opções por texto (digitação em lista longa).
35
+ * - As opções forem carregadas dinamicamente de uma API externa (busca remota/paginada).
36
+ * - O espaço no leiaute for restrito e exigir um controle compacto e expansível.
37
+ * - **Evite e prefira outro componente quando:**
38
+ * - Houver poucas opções fixas (de 2 a 4 opções mutuamente exclusivas): prefira `br-radio` ou `br-radio-group` para manter as alternativas imediatamente visíveis.
39
+ * - Houver uma escolha binária (sim/não, ativo/inativo): prefira `br-switch` ou `br-checkbox`.
40
+ * - Houver seleção múltipla com até 4 alternativas: prefira `br-checkbox` ou um grupo de checkboxes visíveis.
41
+ *
42
+ * ### Composição e Subcomponentes
43
+ *
44
+ * O ecossistema do Select é composto pelo elemento principal orquestrador e três subcomponentes especializados:
45
+ *
46
+ * | Subcomponente | Papel | Regra de uso |
47
+ * | --- | --- | --- |
48
+ * | `br-select` | **Orquestrador principal.** Gerencia o valor, ciclo de vida, acessibilidade, busca, formulário e renderização dos elementos internos. | Deve ser o único componente diretamente instanciado no template da aplicação. |
49
+ * | `br-select-input` | **Campo de acionamento.** Exibe o valor selecionado, o rótulo (`label`), o campo de busca/digitação e o botão de expandir/recolher. | Coordenado automaticamente pelo `br-select`; utilize isoladamente apenas em composições arquiteturais avançadas. |
50
+ * | `br-select-list` | **Lista suspensa virtualizada.** Contêiner flutuante que renderiza as opções de forma otimizada com suporte a rolagem e virtualização. | Gerenciada exclusivamente pelo `br-select`; não deve ser usada como controle autônomo. |
51
+ * | `br-select-option` | **Item individual de opção.** Representa um valor selecionável, exibindo texto, estado de seleção e checkbox/radio associado. | Deve ser declarado dentro do slot padrão do `br-select` para cada opção desejada. |
52
+ *
53
+ * Além dos subcomponentes, o `br-select` oferece slots dedicados:
54
+ * - `default`: Slot principal onde são passados os elementos `br-select-option`.
55
+ * - `feedback`: Slot para exibição de mensagens de validação (ex.: `br-message`).
56
+ * - `loading`: Slot para indicador de carregamento durante busca remota.
57
+ * - `validation-loading`: Slot para indicador visual durante validação assíncrona.
58
+ *
59
+ * ### Como fornecer opções
60
+ *
61
+ * O `br-select` possui uma API declarativa canônica e uma API imperativa para atualizações dinâmicas:
62
+ *
63
+ * 1. **Slot com `br-select-option`:** é a forma declarativa canônica para código novo. O pai lê os atributos e o conteúdo de cada opção e os transforma em dados para a lista. Em frameworks, a coleção também pode ser renderizada como vários elementos `br-select-option`.
64
+ * 2. **Método `setOptions()`:** substitui a coleção de forma imperativa e deve ser reservado para dados dinâmicos, especialmente respostas de busca remota. A lista recebe os objetos e cria internamente somente a janela visível de opções.
65
+ *
66
+ * `br-select-input` e `br-select-list` não substituem essas fontes. Eles são peças internas da composição: o primeiro controla o campo de acionamento e busca; o segundo recebe a coleção normalizada e renderiza a lista virtualizada.
67
+ *
68
+ * Evite misturar slot e dados imperativos sem necessidade. Na inicialização, opções declaradas no slot têm precedência quando existem. Depois que `options` é alterada ou `setOptions()` é chamado, a coleção imperativa passa a ser a fonte de dados e alterações posteriores no slot não são sincronizadas.
69
+ *
70
+ * A prop `options` é uma API legada e está depreciada. Ela continua funcionando apenas para preservar compatibilidade: no HTML, recebe uma string JSON; em JavaScript e frameworks, recebe um array por property binding. Não a adote em código novo; use `br-select-option` ou, para respostas dinâmicas/remotas, `setOptions()`.
71
+ *
72
+ * Cada objeto deve conter `value` string e pode conter `label`, `selected`, `disabled`, `indeterminate` e `content`. `content` é renderizado como HTML na lista; não use esse campo com conteúdo não confiável.
73
+ *
74
+ * ### O Conceito "Lego" e a Diferença entre os Componentes {#conceito-lego}
75
+ *
76
+ * O ecossistema de seleção do GovBR-DS foi projetado seguindo o **conceito de peças de Lego**: modular, flexível e combinável:
77
+ *
78
+ * 1. **`br-select` (Componente Principal / Modelo Pronto):**
79
+ * É o **componente principal**. Já vem montado com todas as peças essenciais integradas: o acionador (`br-select-input`), a lista flutuante virtualizada (`br-select-list`), a navegação por teclado e a integração nativa com formulários (`formAssociated`). Na quase totalidade das aplicações (99% dos casos), você deve usar apenas `<br-select>`.
80
+ *
81
+ * 2. **`br-select-option` (Peça de Conteúdo):**
82
+ * É a peça de Lego que você encaixa diretamente no slot padrão do `<br-select>` para definir cada valor selecionável.
83
+ *
84
+ * 3. **`br-select-input` e `br-select-list` (Subcomponentes Internos):**
85
+ * São as peças internas que formam a estrutura do `br-select`. No uso comum, **não devem ser declarados manualmente**, pois o `br-select` já os instancia e os sincroniza automaticamente.
86
+ *
87
+ * #### Quando usar apenas `<br-select>`?
88
+ * Use apenas `<br-select>` em quase todos os fluxos. Para opções fixas, declare os itens `<br-select-option>` no slot padrão; para opções dinâmicas, alimente a coleção com `setOptions()`. A prop `options` permanece disponível somente para compatibilidade legada.
89
+ *
90
+ * #### Quando montar os componentes separadamente?
91
+ * A montagem separada das peças avulsas de Lego (`br-select-input` + `br-select-list` + `br-select-option`) destina-se exclusivamente a **composições arquiteturais avançadas**, onde o leiaute exige desacoplar fisicamente o campo de acionamento da lista suspensa (ex.: campo de busca fixo na barra superior e a lista exibida dentro de um drawer ou modal lateral). Nesse caso, a aplicação precisa implementar manualmente a sincronização de foco, abertura, navegação por teclado e repasse de valor ao formulário.
92
+ *
93
+ * ### Como os subcomponentes se relacionam
94
+ *
95
+ * A arquitetura do `br-select` segue o padrão de **orquestrador centralizado**:
96
+ * 1. **O componente pai coordena o estado:** A aplicação declara o `<br-select>` com múltiplos `<br-select-option>` filhos ou usa `setOptions()` para dados dinâmicos. O `br-select` projeta internamente o `<br-select-input>` e a `<br-select-list>`, garantindo sincronia total de foco, estados de abertura, termos pesquisados e eventos. A prop `options` não é uma alternativa para código novo; existe somente para compatibilidade legada.
97
+ * 2. **Evite montagem manual desarticulada:** Tentar declarar manualmente `br-select-input` e `br-select-list` fora do `br-select` quebra as relações de acessibilidade WAI-ARIA (combobox, controles expandidos, aria-activedescendant) e desvincula o controle da validação nativa de formulários (`ElementInternals`).
98
+ * 3. **Comunicação por eventos:** Para busca remota ou resposta a seleção, a aplicação escuta os eventos disparados diretamente pelo `br-select` (`brSearch`, `change`, `input`), sem precisar interceptar nós internos da lista ou do campo de texto.
99
+ *
100
+ * Para a documentação completa de design, incluindo diretrizes de acessibilidade e especificações visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/select?tab=designer).
101
+ *
102
+ * @category Formulários, Seleção
19
103
  * @status stable
20
104
  * @slot default - Opções declaradas com elementos br-select-option.
21
105
  * @slot feedback - Mensagem de validação, normalmente um br-message.
@@ -33,6 +117,7 @@ let selectId = 0;
33
117
  * @part input-action-button - Botão interno da ação.
34
118
  * @part list - Lista de opções.
35
119
  * @part option - Opção individual.
120
+ * @part option-group - Cabeçalho visual de um grupo de opções.
36
121
  * @part select-all - Alias legado para a opção de selecionar todos.
37
122
  * @part empty-option - Alias legado para a opção vazia da lista.
38
123
  * @part option-checkbox - Alias legado para o checkbox da opção.
@@ -55,6 +140,13 @@ export class Select {
55
140
  * @default false
56
141
  */
57
142
  this.disabled = false;
143
+ /**
144
+ * Define a densidade visual compartilhada pelo campo e pela lista de opções.
145
+ * Aceita `small`, `medium` ou `large`. Valores inválidos usam `medium`.
146
+ *
147
+ * @default 'medium'
148
+ */
149
+ this.density = 'medium';
58
150
  /**
59
151
  * Exibe label e campo na mesma linha.
60
152
  *
@@ -78,13 +170,16 @@ export class Select {
78
170
  */
79
171
  this.keepOpenOnSelect = false;
80
172
  /**
81
- * Define quantas opções ficam visíveis na janela da lista.
173
+ * Define quantas linhas visuais ficam visíveis na janela da lista.
174
+ * Cabeçalhos de grupo também ocupam uma linha quando existem.
175
+ * Deve ser um inteiro positivo; valores inválidos usam 6.
82
176
  *
83
177
  * @default 6
84
178
  */
85
179
  this.visibleItems = 6;
86
180
  /**
87
- * Informa a altura base de cada opção para o cálculo de virtual scroll.
181
+ * Informa a altura base de cada opção ou cabeçalho para o cálculo de virtual scroll.
182
+ * Deve ser um número finito positivo; valores inválidos usam 40.
88
183
  *
89
184
  * @default 40
90
185
  */
@@ -98,6 +193,7 @@ export class Select {
98
193
  this.inputWidth = undefined;
99
194
  /**
100
195
  * Define quantas opções extras são renderizadas antes e depois da área visível no virtual scroll.
196
+ * Deve ser um inteiro não negativo; valores inválidos usam 1.
101
197
  *
102
198
  * @default 1
103
199
  */
@@ -114,6 +210,12 @@ export class Select {
114
210
  *
115
211
  * @type {string | string[] | undefined}
116
212
  * @remarks Em modo múltiplo, o valor público é um array de strings.
213
+ * @example
214
+ * ```js
215
+ * const select = document.querySelector('br-select');
216
+ * select.multiple = true;
217
+ * select.value = ['df', 'sp'];
218
+ * ```
117
219
  */
118
220
  this.value = '';
119
221
  /**
@@ -167,21 +269,33 @@ export class Select {
167
269
  */
168
270
  this.unselectAllLabel = Select.DESELECT_ALL_LABEL;
169
271
  /**
170
- * Opções fornecidas como array ou JSON, além das opções projetadas por slot.
272
+ * Fornece opções como array ou JSON, além das opções projetadas por slot.
273
+ * Use property binding para arrays em JavaScript e frameworks; no atributo
274
+ * HTML, informe uma string JSON válida. Na inicialização, opções no slot têm
275
+ * precedência quando existem. Depois de uma alteração nesta prop ou de uma
276
+ * chamada a `setOptions()`, a coleção imperativa passa a ser a fonte de dados.
277
+ * Não use em código novo. Declare `br-select-option` no slot padrão ou, para
278
+ * respostas dinâmicas/remotas, atualize a coleção com `setOptions()`.
171
279
  *
172
- * @deprecated O formato de opções tipado atual é preferível; o formato legado permanece aceito.
280
+ * @example
281
+ * ```html
282
+ * <!-- Compatibilidade legada; prefira elementos br-select-option. -->
283
+ * <br-select options='[{"label":"Distrito Federal","value":"df"}]'></br-select>
284
+ * ```
285
+ * @deprecated Use `br-select-option` no slot padrão ou `setOptions()` para respostas dinâmicas/remotas.
173
286
  */
174
287
  this.options = [];
175
288
  /** Identificador público do controle. */
176
- this.customId = `br-select-${selectId++}`;
177
- /** Quantidade mínima de opções selecionadas no modo múltiplo. */
289
+ this.customId = generateUniqueId('br-select');
290
+ /** Quantidade mínima de opções selecionadas no modo múltiplo. Deve ser um inteiro não negativo; valores inválidos usam 0. */
178
291
  this.minSelections = 0;
179
- /** Quantidade máxima de opções selecionadas no modo múltiplo. */
292
+ /** Quantidade máxima de opções selecionadas no modo múltiplo. Deve ser um inteiro não negativo; valores inválidos usam 0. */
180
293
  this.maxSelections = 0;
181
294
  this.shouldRestoreSelectedOptionOnOpen = false;
182
295
  this.pendingOptions = null;
183
296
  this.slotElement = null;
184
- this.handleSlotChange = () => this.syncOptionsFromSlot();
297
+ this.handleSlotChange = () => this.slotReconciler.schedule();
298
+ this.slotReconciler = createMicrotaskReconciler(() => this.syncOptionsFromSlot());
185
299
  this.lastEmittedStateKey = '';
186
300
  this.isStateChangeReady = false;
187
301
  this.isValueChangeReady = false;
@@ -242,6 +356,30 @@ export class Select {
242
356
  this.applySelectedValue(state);
243
357
  }
244
358
  }
359
+ get effectiveVisibleItems() {
360
+ return resolveIntegerPropValue(this.el, 'visibleItems', this.visibleItems, 1, Number.MAX_SAFE_INTEGER, 6);
361
+ }
362
+ get effectiveDensity() {
363
+ return resolveDensity(this.el, this.density);
364
+ }
365
+ get effectiveItemHeight() {
366
+ return resolveNumberPropValue(this.el, 'itemHeight', this.itemHeight, 1, Number.MAX_SAFE_INTEGER, 40);
367
+ }
368
+ get effectiveOverscan() {
369
+ return resolveIntegerPropValue(this.el, 'overscan', this.overscan, 0, Number.MAX_SAFE_INTEGER, 1);
370
+ }
371
+ get effectiveSearchMode() {
372
+ return resolveAllowedPropValue(this.el, 'searchMode', this.searchMode, SELECT_SEARCH_MODES, 'local');
373
+ }
374
+ get effectiveMinSelections() {
375
+ return resolveIntegerPropValue(this.el, 'minSelections', this.minSelections, 0, Number.MAX_SAFE_INTEGER, 0);
376
+ }
377
+ get effectiveAutocomplete() {
378
+ return resolveAllowedPropValue(this.el, 'autocomplete', this.autocomplete, SELECT_AUTOCOMPLETE_VALUES, undefined, { allowUndefined: true });
379
+ }
380
+ get effectiveMaxSelections() {
381
+ return resolveIntegerPropValue(this.el, 'maxSelections', this.maxSelections, 0, Number.MAX_SAFE_INTEGER, 0);
382
+ }
245
383
  componentWillLoad() {
246
384
  this.hasFeedbackSlot = hasNamedLightDomSlot(this.el, 'feedback');
247
385
  this.hasValidationLoadingSlot = hasNamedLightDomSlot(this.el, 'validation-loading');
@@ -287,6 +425,7 @@ export class Select {
287
425
  this.updateValidity();
288
426
  }
289
427
  disconnectedCallback() {
428
+ this.slotReconciler.cancel();
290
429
  if (this.slotElement) {
291
430
  this.slotElement.removeEventListener('slotchange', this.handleSlotChange);
292
431
  this.slotElement = null;
@@ -329,10 +468,10 @@ export class Select {
329
468
  return options.map((option) => ({ ...option, selected: selected.has(option.value) }));
330
469
  }
331
470
  getListOptions(options) {
332
- const normalized = this.applyCanonicalSelection(options).filter((option) => option.value !== '__select_all__');
471
+ const normalized = this.applyCanonicalSelection(options).filter((option) => !this.isSelectAllOption(option));
333
472
  if (!this.effectiveMultiple)
334
473
  return normalized;
335
- const selectable = normalized.filter((option) => !this.isSelectAllLabel(this.getOptionLabel(option)));
474
+ const selectable = normalized.filter((option) => !this.isSelectAllOption(option));
336
475
  const allSelected = selectable.length > 0 && selectable.every((option) => Boolean(option.selected));
337
476
  const anySelected = selectable.some((option) => Boolean(option.selected));
338
477
  return [
@@ -502,6 +641,23 @@ export class Select {
502
641
  dispatchNativeFormEvent(this.el, 'input');
503
642
  dispatchNativeFormEvent(this.el, 'change');
504
643
  }
644
+ /**
645
+ * Recalcula a coleção quando uma opção projetada muda por atribuição direta
646
+ * de `selected`, `disabled`, `label`, `group` ou `value`. A lista virtualizada em
647
+ * Shadow DOM não é uma fonte independente; ela recebe o snapshot pelo seu
648
+ * contrato público `options`.
649
+ */
650
+ handleSelectOptionPropsChange(event) {
651
+ const path = event.composedPath();
652
+ if (path.some((node) => node.tagName?.toLowerCase() === 'br-select-list'))
653
+ return;
654
+ const target = path.find((node) => node.tagName?.toLowerCase() === 'br-select-option');
655
+ if (!(target instanceof HTMLElement) || findComposedOwner(target, 'br-select') !== this.el)
656
+ return;
657
+ if (this.hasImperativeOptions)
658
+ return;
659
+ this.slotReconciler.schedule();
660
+ }
505
661
  handleSelectOptionHover(event) {
506
662
  this.optionHover.emit(event.detail);
507
663
  }
@@ -711,7 +867,7 @@ export class Select {
711
867
  */
712
868
  async setOptions(options) {
713
869
  this.hasImperativeOptions = true;
714
- const nextOptions = this.searchMode === 'remote' ? this.applyRemoteSelection(options) : options;
870
+ const nextOptions = this.effectiveSearchMode === 'remote' ? this.applyRemoteSelection(options) : options;
715
871
  this.suppressValueChange = true;
716
872
  try {
717
873
  if (this.selectListElement) {
@@ -776,41 +932,23 @@ export class Select {
776
932
  const rawLabel = el.getAttribute('label') ?? el.label ?? '';
777
933
  let value = String(rawValue || '').trim();
778
934
  let label = String(rawLabel || '').trim();
935
+ const group = this.getOptionElementGroup(el);
779
936
  const inner = this.extractInnerTextFromOption(el);
780
937
  const content = (el.innerHTML || '').trim();
781
938
  const selected = el.hasAttribute('selected') || Boolean(el.selected);
782
- if (!value) {
783
- if (inner)
784
- value = inner.trim();
785
- }
939
+ if (!value && inner)
940
+ value = inner.trim();
786
941
  if (!label)
787
942
  label = inner?.trim() || value;
788
- return { value: value || '', label: label || undefined, selected, content: content || undefined };
943
+ return { value: value || '', label: label || undefined, group, selected, content: content || undefined };
944
+ }
945
+ getOptionElementGroup(el) {
946
+ return String(el.getAttribute('group') ?? el.group ?? '').trim() || undefined;
789
947
  }
790
948
  extractInnerTextFromOption(el) {
791
- const fromSlot = this.getAssignedSlotText(el);
792
- if (fromSlot)
793
- return fromSlot;
794
949
  const fallback = (el.textContent || '').trim();
795
950
  return fallback || null;
796
951
  }
797
- getAssignedSlotText(el) {
798
- try {
799
- const innerSlot = el.shadowRoot?.querySelector('slot:not([name])');
800
- if (!innerSlot?.assignedNodes)
801
- return null;
802
- const text = innerSlot
803
- .assignedNodes({ flatten: true })
804
- .map((node) => (node.textContent || '').trim())
805
- .filter(Boolean)
806
- .join(' ')
807
- .trim();
808
- return text || null;
809
- }
810
- catch (_e) {
811
- return null;
812
- }
813
- }
814
952
  getOptionLabel(option) {
815
953
  return (option.label ?? option.value).trim();
816
954
  }
@@ -868,15 +1006,44 @@ export class Select {
868
1006
  return selectedValues[0];
869
1007
  }
870
1008
  getOptionsProp() {
871
- if (Array.isArray(this.options))
872
- return this.options;
873
- try {
874
- const parsed = JSON.parse(this.options || '[]');
875
- return Array.isArray(parsed) ? parsed : [];
1009
+ let parsed = this.options;
1010
+ if (!Array.isArray(this.options)) {
1011
+ try {
1012
+ parsed = JSON.parse(this.options || '[]');
1013
+ }
1014
+ catch {
1015
+ reportInvalidPropValue(this.el, 'options', this.options, 'Informe um array de opções ou uma string JSON válida.', 'Aplicando fallback [].');
1016
+ return [];
1017
+ }
876
1018
  }
877
- catch {
1019
+ if (!Array.isArray(parsed)) {
1020
+ reportInvalidPropValue(this.el, 'options', this.options, 'Informe um array de opções ou uma string JSON válida.', 'Aplicando fallback [].');
878
1021
  return [];
879
1022
  }
1023
+ const validOptions = parsed.filter((option) => {
1024
+ return typeof option === 'object' && option !== null && typeof option.value === 'string';
1025
+ });
1026
+ const hasInvalidLabels = parsed.some((option) => {
1027
+ if (typeof option !== 'object' || option === null)
1028
+ return false;
1029
+ const label = option.label;
1030
+ return label !== undefined && typeof label !== 'string';
1031
+ });
1032
+ const hasInvalidGroups = parsed.some((option) => {
1033
+ if (typeof option !== 'object' || option === null)
1034
+ return false;
1035
+ const group = option.group;
1036
+ return group !== undefined && typeof group !== 'string';
1037
+ });
1038
+ const normalizedOptions = validOptions.map((option) => ({
1039
+ ...option,
1040
+ group: typeof option.group === 'string' ? option.group.trim() || undefined : undefined,
1041
+ label: typeof option.label === 'string' ? option.label : undefined,
1042
+ }));
1043
+ if (validOptions.length !== parsed.length || hasInvalidLabels || hasInvalidGroups) {
1044
+ reportInvalidPropValue(this.el, 'options', this.options, 'Cada opção deve ter `value` string e pode ter `label` e `group` como strings.', 'Ignorando opções inválidas e removendo rótulos ou grupos com tipo incompatível.');
1045
+ }
1046
+ return normalizedOptions;
880
1047
  }
881
1048
  applySelectedValue(value) {
882
1049
  const currentOptions = this.getCurrentOptions();
@@ -896,7 +1063,7 @@ export class Select {
896
1063
  this.isApplyingExternalValue = false;
897
1064
  this.remoteSelectedOptions.clear();
898
1065
  this.rememberRemoteSelections(options);
899
- if (this.searchMode === 'remote') {
1066
+ if (this.effectiveSearchMode === 'remote') {
900
1067
  const selectedValues = new Set(Array.isArray(value) ? value : [value ?? '']);
901
1068
  selectedValues.forEach((selectedValue) => {
902
1069
  if (selectedValue && !currentOptions.some((option) => option.value === selectedValue)) {
@@ -923,7 +1090,7 @@ export class Select {
923
1090
  return nextOptions;
924
1091
  }
925
1092
  rememberRemoteSelections(options) {
926
- if (this.searchMode !== 'remote')
1093
+ if (this.effectiveSearchMode !== 'remote')
927
1094
  return;
928
1095
  const visibleValues = new Set(options.map((option) => option.value));
929
1096
  options.forEach((option) => {
@@ -934,7 +1101,7 @@ export class Select {
934
1101
  });
935
1102
  }
936
1103
  getFormOptions(options) {
937
- if (this.searchMode !== 'remote')
1104
+ if (this.effectiveSearchMode !== 'remote')
938
1105
  return options;
939
1106
  const result = options.map((option) => ({ ...option }));
940
1107
  const existingValues = new Set(result.map((option) => option.value));
@@ -968,10 +1135,10 @@ export class Select {
968
1135
  const nativeSelect = this.getNativeSelect();
969
1136
  if (!nativeSelect)
970
1137
  return;
971
- const selectionMessage = this.effectiveMultiple && this.minSelections > 0 && selectedCount < this.minSelections
972
- ? `Selecione pelo menos ${this.minSelections} opções.`
973
- : this.effectiveMultiple && this.maxSelections > 0 && selectedCount > this.maxSelections
974
- ? `Selecione no máximo ${this.maxSelections} opções.`
1138
+ const selectionMessage = this.effectiveMultiple && this.effectiveMinSelections > 0 && selectedCount < this.effectiveMinSelections
1139
+ ? `Selecione pelo menos ${this.effectiveMinSelections} opções.`
1140
+ : this.effectiveMultiple && this.effectiveMaxSelections > 0 && selectedCount > this.effectiveMaxSelections
1141
+ ? `Selecione no máximo ${this.effectiveMaxSelections} opções.`
975
1142
  : '';
976
1143
  nativeSelect.setCustomValidity(this.customValidationMessage || this.validatorMessage || selectionMessage);
977
1144
  syncNativeFormValidity(this.elementInternals, nativeSelect);
@@ -1156,28 +1323,21 @@ export class Select {
1156
1323
  });
1157
1324
  }
1158
1325
  reflectRenderedListSelection(values, sourceOptions) {
1159
- const renderedOptions = this.selectListElement?.shadowRoot?.querySelectorAll('br-select-option');
1160
- if (!renderedOptions)
1326
+ if (!this.selectListElement)
1161
1327
  return;
1162
- const selectedValues = new Set(values);
1163
- const selectableOptions = (sourceOptions?.length
1164
- ? sourceOptions
1165
- : Array.from(renderedOptions).map((option) => ({ label: option.label, value: option.value }))).filter((option) => !this.isSelectAllLabel(this.getOptionLabel(option)));
1166
- const allSelected = selectableOptions.length > 0 && selectableOptions.every((option) => selectedValues.has(option.value));
1167
- const anySelected = selectableOptions.some((option) => selectedValues.has(option.value));
1168
- renderedOptions.forEach((option) => {
1169
- if (this.isSelectAllLabel(option.label ?? option.value)) {
1170
- option.indeterminate = anySelected && !allSelected;
1171
- option.selected = allSelected;
1172
- option.label = this.getSelectAllLabel(allSelected, option.indeterminate);
1173
- return;
1174
- }
1175
- option.selected = selectedValues.has(option.value);
1176
- });
1328
+ const options = sourceOptions ?? this.getCurrentOptions();
1329
+ // `select-list` expõe uma coleção controlada; o pai não precisa conhecer
1330
+ // os nós internos (nem atravessar `shadowRoot`) para refletir a seleção.
1331
+ this.selectListElement.options = this.getListOptions(options.map((option) => ({ ...option, selected: values.includes(option.value) })));
1177
1332
  }
1178
1333
  isSelectAllLabel(label) {
1179
1334
  return label === this.selectAllLabel || label === this.unselectAllLabel;
1180
1335
  }
1336
+ isSelectAllOption(option) {
1337
+ return (option.value === '__select_all__' ||
1338
+ option.value === 'Alternar todos' ||
1339
+ this.isSelectAllLabel(this.getOptionLabel(option)));
1340
+ }
1181
1341
  getSelectAllLabel(selected, indeterminate) {
1182
1342
  return selected && !indeterminate ? this.unselectAllLabel : this.selectAllLabel;
1183
1343
  }
@@ -1255,7 +1415,6 @@ export class Select {
1255
1415
  * A precedência é: lista interna, opções pendentes, conteúdo do slot e, por último,
1256
1416
  * os filhos atuais do host.
1257
1417
  */
1258
- // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: prioriza a precedência entre slot, lista e opções remotas.
1259
1418
  getCurrentOptions() {
1260
1419
  // As opções projetadas são a fonte canônica quando não há coleção
1261
1420
  // imperativa: a lista virtualizada pode manter um snapshot enquanto o
@@ -1267,16 +1426,7 @@ export class Select {
1267
1426
  .filter((option) => Boolean(option));
1268
1427
  if (slotOptions.length > 0) {
1269
1428
  const normalizedSlotOptions = this.applyCanonicalSelection(slotOptions);
1270
- if (this.effectiveMultiple &&
1271
- !normalizedSlotOptions.some((option) => this.isSelectAllLabel(this.getOptionLabel(option)))) {
1272
- normalizedSlotOptions.unshift({
1273
- value: '__select_all__',
1274
- label: this.selectAllLabel,
1275
- selected: false,
1276
- indeterminate: false,
1277
- });
1278
- }
1279
- return normalizedSlotOptions;
1429
+ return this.getListOptions(normalizedSlotOptions);
1280
1430
  }
1281
1431
  }
1282
1432
  const listOptions = this.getSelectListController()?.options;
@@ -1284,34 +1434,14 @@ export class Select {
1284
1434
  const normalizedListOptions = listOptions.map((option) => ({ ...option }));
1285
1435
  const hasRealOptions = normalizedListOptions.some((option) => !this.isSelectAllLabel(this.getOptionLabel(option)));
1286
1436
  if (hasRealOptions) {
1287
- if (this.effectiveMultiple &&
1288
- !normalizedListOptions.some((option) => this.isSelectAllLabel(this.getOptionLabel(option)))) {
1289
- normalizedListOptions.unshift({
1290
- value: '__select_all__',
1291
- label: this.selectAllLabel,
1292
- selected: false,
1293
- indeterminate: false,
1294
- });
1295
- }
1296
- return this.applyCanonicalSelection(normalizedListOptions);
1437
+ return this.getListOptions(normalizedListOptions);
1297
1438
  }
1298
1439
  }
1299
1440
  if (this.pendingOptions) {
1300
- return this.applyCanonicalSelection(this.pendingOptions);
1441
+ return this.getListOptions(this.pendingOptions);
1301
1442
  }
1302
1443
  const hostOptions = this.applyCanonicalSelection(this.getHostOptions());
1303
- if (this.effectiveMultiple && hostOptions.length > 0) {
1304
- return [
1305
- {
1306
- value: '__select_all__',
1307
- label: this.selectAllLabel,
1308
- selected: false,
1309
- indeterminate: false,
1310
- },
1311
- ...hostOptions,
1312
- ];
1313
- }
1314
- return hostOptions;
1444
+ return this.getListOptions(hostOptions);
1315
1445
  }
1316
1446
  normalizeSearchText(value) {
1317
1447
  return value
@@ -1323,7 +1453,7 @@ export class Select {
1323
1453
  getNavigableOptions() {
1324
1454
  const options = this.getCurrentOptions();
1325
1455
  const normalizedTerm = this.normalizeSearchText(this.searchTerm);
1326
- if (!this.filterable || this.searchMode === 'remote' || !normalizedTerm)
1456
+ if (!this.filterable || this.effectiveSearchMode === 'remote' || !normalizedTerm)
1327
1457
  return options;
1328
1458
  return options.filter((option) => {
1329
1459
  if (this.isSelectAllLabel(this.getOptionLabel(option)))
@@ -1358,10 +1488,10 @@ export class Select {
1358
1488
  this.selectListElement?.setMultiple(isMultiple);
1359
1489
  }
1360
1490
  renderSelectInput() {
1361
- return (h("br-select-input", { part: "input", exportparts: "container:input-container, input:input-field, label:input-label, group:input-group, icon:input-icon, action:input-action, action-button:input-action-button", ref: (el) => (this.selectInputElement = el), "aria-activedescendant": this.getActiveDescendant(), "aria-controls": this.listboxId, "aria-disabled": String(this.isDisabled()), "aria-expanded": String(this.effectiveOpen), "aria-haspopup": "listbox", "aria-label": this.getAccessibleLabel(), "aria-required": String(this.required), borderless: this.borderless, "is-inline": this.effectiveInline, "is-open": this.effectiveOpen, label: this.label, name: this.name, placeholder: this.placeholder, required: this.required, disabled: this.isDisabled(), filterable: this.filterable, showSearchIcon: this.showSearchIcon, autocomplete: this.autocomplete, "input-width": this.inputWidth, role: "combobox", value: this.filterable && this.effectiveOpen ? this.searchTerm : this.getRenderedDisplayValue() }));
1491
+ return (h("br-select-input", { part: "input", exportparts: "container:input-container, input:input-field, label:input-label, group:input-group, icon:input-icon, action:input-action, action-button:input-action-button", ref: (el) => (this.selectInputElement = el), "aria-activedescendant": this.getActiveDescendant(), "aria-controls": this.listboxId, "aria-disabled": String(this.isDisabled()), "aria-expanded": String(this.effectiveOpen), "aria-haspopup": "listbox", "aria-label": this.getAccessibleLabel(), "aria-required": String(this.required), borderless: this.borderless, density: this.effectiveDensity, "is-inline": this.effectiveInline, "is-open": this.effectiveOpen, label: this.label, name: this.name, placeholder: this.placeholder, required: this.required, disabled: this.isDisabled(), filterable: this.filterable, showSearchIcon: this.showSearchIcon, autocomplete: this.effectiveAutocomplete, "input-width": this.inputWidth, role: "combobox", value: this.filterable && this.effectiveOpen ? this.searchTerm : this.getRenderedDisplayValue() }));
1362
1492
  }
1363
1493
  renderSelectList() {
1364
- return (h("br-select-list", { part: "list", options: this.getCurrentOptions(), exportparts: "list, option, checkbox, select-all, empty-option, option-checkbox, option-radio", "active-option-index": this.activeOptionIndex, "aria-label": this.getAccessibleLabel(), "aria-multiselectable": this.effectiveMultiple ? 'true' : 'false', id: this.listboxId, "visible-items": this.visibleItems, "item-height": this.itemHeight, overscan: this.overscan, "search-term": this.filterable && this.searchMode === 'local' ? this.searchTerm : '', role: "listbox", "select-all-label": this.selectAllLabel, "unselect-all-label": this.unselectAllLabel, ref: (el) => {
1494
+ return (h("br-select-list", { part: "list", options: this.getListOptions(this.getCurrentOptions()), exportparts: "list, option, checkbox, select-all, empty-option, option-checkbox, option-radio, option-group", "active-option-index": this.activeOptionIndex, "aria-label": this.getAccessibleLabel(), "aria-multiselectable": this.effectiveMultiple ? 'true' : 'false', density: this.effectiveDensity, id: this.listboxId, "visible-items": this.effectiveVisibleItems, "item-height": this.effectiveItemHeight, overscan: this.effectiveOverscan, "search-term": this.filterable && this.effectiveSearchMode === 'local' ? this.searchTerm : '', role: "listbox", "select-all-label": this.selectAllLabel, "unselect-all-label": this.unselectAllLabel, ref: (el) => {
1365
1495
  this.selectListElement = el;
1366
1496
  this.selectListElement.loading = this.loading;
1367
1497
  this.setSelectionMode(this.effectiveMultiple);
@@ -1371,7 +1501,7 @@ export class Select {
1371
1501
  renderHiddenSelect() {
1372
1502
  const options = this.getFormOptions(this.getCurrentOptions()).filter((option) => !this.isSelectAllLabel(this.getOptionLabel(option)));
1373
1503
  const hasSelection = options.some((option) => option.selected);
1374
- return (h("select", { ref: (el) => (this.nativeSelect = el), part: "hidden-select", name: this.name, autocomplete: this.autocomplete, multiple: this.effectiveMultiple, required: this.required, disabled: this.isDisabled(), tabIndex: -1, "aria-hidden": "true", style: {
1504
+ return (h("select", { ref: (el) => (this.nativeSelect = el), part: "hidden-select", name: this.name, autocomplete: this.effectiveAutocomplete, multiple: this.effectiveMultiple, required: this.required, disabled: this.isDisabled(), tabIndex: -1, "aria-hidden": "true", style: {
1375
1505
  position: 'absolute',
1376
1506
  width: '1px',
1377
1507
  height: '1px',
@@ -1381,10 +1511,31 @@ export class Select {
1381
1511
  clip: 'rect(0, 0, 0, 0)',
1382
1512
  whiteSpace: 'nowrap',
1383
1513
  border: '0',
1384
- }, onChange: (event) => event.preventDefault() }, h("option", { value: "", selected: !hasSelection }), options.map((option) => (h("option", { key: option.value, value: option.value, selected: option.selected, disabled: option.disabled })))));
1514
+ }, onChange: (event) => event.preventDefault() }, h("option", { value: "", selected: !hasSelection }), this.getNativeOptionGroups(options).map((optionGroup, groupIndex) => {
1515
+ const nativeOptions = optionGroup.options.map((option) => this.renderNativeOption(option));
1516
+ if (!optionGroup.group)
1517
+ return nativeOptions;
1518
+ return (h("optgroup", { key: `${optionGroup.group}:${groupIndex}`, label: optionGroup.group }, nativeOptions));
1519
+ })));
1520
+ }
1521
+ getNativeOptionGroups(options) {
1522
+ return options.reduce((groups, option) => {
1523
+ const group = option.group?.trim() || undefined;
1524
+ const currentGroup = groups.at(-1);
1525
+ if (!currentGroup || currentGroup.group !== group) {
1526
+ groups.push({ group, options: [option] });
1527
+ }
1528
+ else {
1529
+ currentGroup.options.push(option);
1530
+ }
1531
+ return groups;
1532
+ }, []);
1533
+ }
1534
+ renderNativeOption(option) {
1535
+ return (h("option", { key: option.value, value: option.value, selected: option.selected, disabled: option.disabled }));
1385
1536
  }
1386
1537
  render() {
1387
- return (h(Host, { key: '81db917bc8a39989db84e7e0c9f4aa1272d52af0', "aria-busy": this.isValidating || this.loading ? 'true' : null }, h("div", { key: '150cc02f7a66f90546741550586ba254b9b6728a', class: this.getCssClassMap(), part: "container" }, this.renderSelectInput(), this.renderSelectList(), h("div", { key: 'd3a981fd4da448b3e2355b78bab07fb7245624d8', part: "feedback", hidden: !this.hasFeedbackSlot && !this.validatorMessage }, h("slot", { key: '9f40bb218c36ab6b19579ceac0a849e40ec00ad4', name: "feedback", onSlotchange: (event) => (this.hasFeedbackSlot = hasAssignedSlotContent(event.currentTarget)) }, this.validatorMessage)), h("div", { key: 'd33a5d0ebd54ebeda226e06de1a60b0f75e5b94c', part: "validation-loading", hidden: !this.hasValidationLoadingSlot || !this.isValidating }, h("slot", { key: '8b098ffce8ca2ed341f5a06252bf662574343717', name: "validation-loading" })), this.renderHiddenSelect())));
1538
+ return (h(Host, { key: '9c74748b6b9b428fc6f0388a704196e579d45ae6', "aria-busy": this.isValidating || this.loading ? 'true' : null }, h("div", { key: '291a5947bd1f1de1b93944fca855fc7a2cacd24e', class: this.getCssClassMap(), part: "container" }, this.renderSelectInput(), this.renderSelectList(), h("div", { key: '86f0d585b01076b26926e80a10e60ae1077f4183', part: "feedback", hidden: !this.hasFeedbackSlot && !this.validatorMessage }, h("slot", { key: 'f5aad9aa79604fe8b7be56fb80ecf27ea116559b', name: "feedback", onSlotchange: (event) => (this.hasFeedbackSlot = hasAssignedSlotContent(event.currentTarget)) }, this.validatorMessage)), h("div", { key: '1bf287a49b52beb2655d80e7195ea1657ce1cf18', part: "validation-loading", hidden: !this.hasValidationLoadingSlot || !this.isValidating }, h("slot", { key: 'e0b02f9a40c8105c901600fed485352e664ff9d2', name: "validation-loading" })), this.renderHiddenSelect())));
1388
1539
  }
1389
1540
  static get is() { return "br-select"; }
1390
1541
  static get encapsulation() { return "shadow"; }
@@ -1447,6 +1598,36 @@ export class Select {
1447
1598
  "attribute": "disabled",
1448
1599
  "defaultValue": "false"
1449
1600
  },
1601
+ "density": {
1602
+ "type": "string",
1603
+ "mutable": false,
1604
+ "complexType": {
1605
+ "original": "BrDensity",
1606
+ "resolved": "\"large\" | \"medium\" | \"small\"",
1607
+ "references": {
1608
+ "BrDensity": {
1609
+ "location": "import",
1610
+ "path": "../global.types",
1611
+ "id": "src/components/global.types.ts::BrDensity",
1612
+ "referenceLocation": "BrDensity"
1613
+ }
1614
+ }
1615
+ },
1616
+ "required": false,
1617
+ "optional": false,
1618
+ "docs": {
1619
+ "tags": [{
1620
+ "name": "default",
1621
+ "text": "'medium'"
1622
+ }],
1623
+ "text": "Define a densidade visual compartilhada pelo campo e pela lista de op\u00E7\u00F5es.\nAceita `small`, `medium` ou `large`. Valores inv\u00E1lidos usam `medium`."
1624
+ },
1625
+ "getter": false,
1626
+ "setter": false,
1627
+ "reflect": true,
1628
+ "attribute": "density",
1629
+ "defaultValue": "'medium'"
1630
+ },
1450
1631
  "isInline": {
1451
1632
  "type": "boolean",
1452
1633
  "mutable": false,
@@ -1578,7 +1759,7 @@ export class Select {
1578
1759
  "name": "default",
1579
1760
  "text": "6"
1580
1761
  }],
1581
- "text": "Define quantas op\u00E7\u00F5es ficam vis\u00EDveis na janela da lista."
1762
+ "text": "Define quantas linhas visuais ficam vis\u00EDveis na janela da lista.\nCabe\u00E7alhos de grupo tamb\u00E9m ocupam uma linha quando existem.\nDeve ser um inteiro positivo; valores inv\u00E1lidos usam 6."
1582
1763
  },
1583
1764
  "getter": false,
1584
1765
  "setter": false,
@@ -1601,7 +1782,7 @@ export class Select {
1601
1782
  "name": "default",
1602
1783
  "text": "40"
1603
1784
  }],
1604
- "text": "Informa a altura base de cada op\u00E7\u00E3o para o c\u00E1lculo de virtual scroll."
1785
+ "text": "Informa a altura base de cada op\u00E7\u00E3o ou cabe\u00E7alho para o c\u00E1lculo de virtual scroll.\nDeve ser um n\u00FAmero finito positivo; valores inv\u00E1lidos usam 40."
1605
1786
  },
1606
1787
  "getter": false,
1607
1788
  "setter": false,
@@ -1650,7 +1831,7 @@ export class Select {
1650
1831
  "name": "default",
1651
1832
  "text": "1"
1652
1833
  }],
1653
- "text": "Define quantas op\u00E7\u00F5es extras s\u00E3o renderizadas antes e depois da \u00E1rea vis\u00EDvel no virtual scroll."
1834
+ "text": "Define quantas op\u00E7\u00F5es extras s\u00E3o renderizadas antes e depois da \u00E1rea vis\u00EDvel no virtual scroll.\nDeve ser um inteiro n\u00E3o negativo; valores inv\u00E1lidos usam 1."
1654
1835
  },
1655
1836
  "getter": false,
1656
1837
  "setter": false,
@@ -1764,6 +1945,9 @@ export class Select {
1764
1945
  }, {
1765
1946
  "name": "remarks",
1766
1947
  "text": "Em modo m\u00FAltiplo, o valor p\u00FAblico \u00E9 um array de strings."
1948
+ }, {
1949
+ "name": "example",
1950
+ "text": "```js\nconst select = document.querySelector('br-select');\nselect.multiple = true;\nselect.value = ['df', 'sp'];\n```"
1767
1951
  }],
1768
1952
  "text": "Valor p\u00FAblico do select baseado nas op\u00E7\u00F5es atualmente selecionadas."
1769
1953
  },
@@ -1968,8 +2152,8 @@ export class Select {
1968
2152
  "type": "string",
1969
2153
  "mutable": false,
1970
2154
  "complexType": {
1971
- "original": "string | { label: string; value: string; selected?: boolean }[] | SelectOptionData[]",
1972
- "resolved": "SelectOptionData[] | string | { label: string; value: string; selected?: boolean; }[]",
2155
+ "original": "| string\n | { group?: string; label: string; value: string; selected?: boolean }[]\n | SelectOptionData[]",
2156
+ "resolved": "SelectOptionData[] | string | { group?: string; label: string; value: string; selected?: boolean; }[]",
1973
2157
  "references": {
1974
2158
  "SelectOptionData": {
1975
2159
  "location": "import",
@@ -1983,10 +2167,13 @@ export class Select {
1983
2167
  "optional": false,
1984
2168
  "docs": {
1985
2169
  "tags": [{
2170
+ "name": "example",
2171
+ "text": "```html\n<!-- Compatibilidade legada; prefira elementos br-select-option. -->\n<br-select options='[{\"label\":\"Distrito Federal\",\"value\":\"df\"}]'></br-select>\n```"
2172
+ }, {
1986
2173
  "name": "deprecated",
1987
- "text": "O formato de op\u00E7\u00F5es tipado atual \u00E9 prefer\u00EDvel; o formato legado permanece aceito."
2174
+ "text": "Use `br-select-option` no slot padr\u00E3o ou `setOptions()` para respostas din\u00E2micas/remotas."
1988
2175
  }],
1989
- "text": "Op\u00E7\u00F5es fornecidas como array ou JSON, al\u00E9m das op\u00E7\u00F5es projetadas por slot."
2176
+ "text": "Fornece op\u00E7\u00F5es como array ou JSON, al\u00E9m das op\u00E7\u00F5es projetadas por slot.\nUse property binding para arrays em JavaScript e frameworks; no atributo\nHTML, informe uma string JSON v\u00E1lida. Na inicializa\u00E7\u00E3o, op\u00E7\u00F5es no slot t\u00EAm\npreced\u00EAncia quando existem. Depois de uma altera\u00E7\u00E3o nesta prop ou de uma\nchamada a `setOptions()`, a cole\u00E7\u00E3o imperativa passa a ser a fonte de dados.\nN\u00E3o use em c\u00F3digo novo. Declare `br-select-option` no slot padr\u00E3o ou, para\nrespostas din\u00E2micas/remotas, atualize a cole\u00E7\u00E3o com `setOptions()`."
1990
2177
  },
1991
2178
  "getter": false,
1992
2179
  "setter": false,
@@ -2013,7 +2200,7 @@ export class Select {
2013
2200
  "optional": true,
2014
2201
  "docs": {
2015
2202
  "tags": [],
2016
- "text": "Controla o autocomplete do campo de busca interno."
2203
+ "text": "Controla o autocomplete do campo de busca interno. Aceita `on` ou `off`; valores inv\u00E1lidos s\u00E3o ignorados."
2017
2204
  },
2018
2205
  "getter": false,
2019
2206
  "setter": false,
@@ -2038,7 +2225,7 @@ export class Select {
2038
2225
  "setter": false,
2039
2226
  "reflect": true,
2040
2227
  "attribute": "custom-id",
2041
- "defaultValue": "`br-select-${selectId++}`"
2228
+ "defaultValue": "generateUniqueId('br-select')"
2042
2229
  },
2043
2230
  "minSelections": {
2044
2231
  "type": "number",
@@ -2052,7 +2239,7 @@ export class Select {
2052
2239
  "optional": false,
2053
2240
  "docs": {
2054
2241
  "tags": [],
2055
- "text": "Quantidade m\u00EDnima de op\u00E7\u00F5es selecionadas no modo m\u00FAltiplo."
2242
+ "text": "Quantidade m\u00EDnima de op\u00E7\u00F5es selecionadas no modo m\u00FAltiplo. Deve ser um inteiro n\u00E3o negativo; valores inv\u00E1lidos usam 0."
2056
2243
  },
2057
2244
  "getter": false,
2058
2245
  "setter": false,
@@ -2072,7 +2259,7 @@ export class Select {
2072
2259
  "optional": false,
2073
2260
  "docs": {
2074
2261
  "tags": [],
2075
- "text": "Quantidade m\u00E1xima de op\u00E7\u00F5es selecionadas no modo m\u00FAltiplo."
2262
+ "text": "Quantidade m\u00E1xima de op\u00E7\u00F5es selecionadas no modo m\u00FAltiplo. Deve ser um inteiro n\u00E3o negativo; valores inv\u00E1lidos usam 0."
2076
2263
  },
2077
2264
  "getter": false,
2078
2265
  "setter": false,
@@ -2098,8 +2285,11 @@ export class Select {
2098
2285
  "required": false,
2099
2286
  "optional": true,
2100
2287
  "docs": {
2101
- "tags": [],
2102
- "text": "Valida\u00E7\u00E3o s\u00EDncrona ou ass\u00EDncrona executada no m\u00E9todo `validate()`."
2288
+ "tags": [{
2289
+ "name": "example",
2290
+ "text": "```js\nconst select = document.querySelector('br-select');\nselect.validator = (value) =>\n (Array.isArray(value) ? value.length > 0 : Boolean(value)) ? null : 'Selecione uma op\u00E7\u00E3o';\n```"
2291
+ }],
2292
+ "text": "Valida\u00E7\u00E3o s\u00EDncrona ou ass\u00EDncrona executada no m\u00E9todo `validate()`.\nRecebe uma string no modo simples e um array de strings no modo m\u00FAltiplo."
2103
2293
  },
2104
2294
  "getter": false,
2105
2295
  "setter": false,
@@ -2583,7 +2773,7 @@ export class Select {
2583
2773
  "signature": "(option: SelectOptionData) => Promise<void>",
2584
2774
  "parameters": [{
2585
2775
  "name": "option",
2586
- "type": "{ content?: string; disabled?: boolean; indeterminate?: boolean; label?: string; selected?: boolean; value: string; }",
2776
+ "type": "{ content?: string; disabled?: boolean; group?: string; indeterminate?: boolean; label?: string; selected?: boolean; value: string; }",
2587
2777
  "docs": "Op\u00E7\u00E3o que deve ser inserida ou atualizada."
2588
2778
  }],
2589
2779
  "references": {
@@ -2675,6 +2865,12 @@ export class Select {
2675
2865
  "target": undefined,
2676
2866
  "capture": false,
2677
2867
  "passive": false
2868
+ }, {
2869
+ "name": "brSelectOptionPropsChange",
2870
+ "method": "handleSelectOptionPropsChange",
2871
+ "target": undefined,
2872
+ "capture": false,
2873
+ "passive": false
2678
2874
  }, {
2679
2875
  "name": "brInternalSelectOptionHover",
2680
2876
  "method": "handleSelectOptionHover",