@govbr-ds/webcomponents 2.3.0 → 2.4.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 (596) hide show
  1. package/cem/custom-elements.json +1404 -1387
  2. package/cem/webcomponents.html-custom-data.json +62 -56
  3. package/dist/cjs/br-avatar.cjs.entry.js +1 -1
  4. package/dist/cjs/br-breadcrumb.cjs.entry.js +1 -1
  5. package/dist/cjs/br-button_2.cjs.entry.js +2 -2
  6. package/dist/cjs/br-card.cjs.entry.js +1 -1
  7. package/dist/cjs/br-carousel-page.cjs.entry.js +1 -1
  8. package/dist/cjs/br-carousel.cjs.entry.js +1 -1
  9. package/dist/cjs/br-checkbox-group.cjs.entry.js +1 -1
  10. package/dist/cjs/br-checkbox.cjs.entry.js +1 -1
  11. package/dist/cjs/br-collapse_2.cjs.entry.js +2 -2
  12. package/dist/cjs/br-cookiebar-cookie.cjs.entry.js +1 -1
  13. package/dist/cjs/br-cookiebar-group.cjs.entry.js +1 -1
  14. package/dist/cjs/br-cookiebar-header.cjs.entry.js +1 -1
  15. package/dist/cjs/br-cookiebar-link.cjs.entry.js +1 -1
  16. package/dist/cjs/br-cookiebar-note-group.cjs.entry.js +1 -1
  17. package/dist/cjs/br-cookiebar-note.cjs.entry.js +1 -1
  18. package/dist/cjs/br-cookiebar.cjs.entry.js +1 -1
  19. package/dist/cjs/br-date-picker_3.cjs.entry.js +868 -516
  20. package/dist/cjs/br-datetime-picker.cjs.entry.js +1345 -309
  21. package/dist/cjs/br-divider.cjs.entry.js +1 -1
  22. package/dist/cjs/br-dropdown_2.cjs.entry.js +248 -129
  23. package/dist/cjs/br-footer-category.cjs.entry.js +1 -1
  24. package/dist/cjs/br-footer-item.cjs.entry.js +1 -1
  25. package/dist/cjs/br-footer-legal.cjs.entry.js +1 -1
  26. package/dist/cjs/br-footer-logo.cjs.entry.js +1 -1
  27. package/dist/cjs/br-footer-social.cjs.entry.js +1 -1
  28. package/dist/cjs/br-footer.cjs.entry.js +1 -1
  29. package/dist/cjs/br-header-function.cjs.entry.js +1 -1
  30. package/dist/cjs/br-header-link.cjs.entry.js +1 -1
  31. package/dist/cjs/br-header-list.cjs.entry.js +1 -1
  32. package/dist/cjs/br-header-logo.cjs.entry.js +1 -1
  33. package/dist/cjs/br-header.cjs.entry.js +1 -1
  34. package/dist/cjs/br-icon.cjs.entry.js +1 -1
  35. package/dist/cjs/br-input.cjs.entry.js +9 -3
  36. package/dist/cjs/br-item.cjs.entry.js +1 -1
  37. package/dist/cjs/br-link.cjs.entry.js +1 -1
  38. package/dist/cjs/br-loading.cjs.entry.js +1 -1
  39. package/dist/cjs/br-magic-button.cjs.entry.js +1 -1
  40. package/dist/cjs/br-menu-group.cjs.entry.js +1 -1
  41. package/dist/cjs/br-menu-header.cjs.entry.js +1 -1
  42. package/dist/cjs/br-menu-info.cjs.entry.js +1 -1
  43. package/dist/cjs/br-menu-item.cjs.entry.js +1 -1
  44. package/dist/cjs/br-menu-link.cjs.entry.js +1 -1
  45. package/dist/cjs/br-menu-list.cjs.entry.js +1 -1
  46. package/dist/cjs/br-menu-logo.cjs.entry.js +1 -1
  47. package/dist/cjs/br-menu-social.cjs.entry.js +1 -1
  48. package/dist/cjs/br-menu.cjs.entry.js +1 -1
  49. package/dist/cjs/br-modal.cjs.entry.js +1 -1
  50. package/dist/cjs/br-notification-body.cjs.entry.js +1 -1
  51. package/dist/cjs/br-notification-header.cjs.entry.js +1 -1
  52. package/dist/cjs/br-notification-item.cjs.entry.js +1 -1
  53. package/dist/cjs/br-notification.cjs.entry.js +1 -1
  54. package/dist/cjs/br-pagination.cjs.entry.js +1 -1
  55. package/dist/cjs/br-radio-group.cjs.entry.js +1 -1
  56. package/dist/cjs/br-radio.cjs.entry.js +1 -1
  57. package/dist/cjs/br-scrim.cjs.entry.js +1 -1
  58. package/dist/cjs/br-select-input_3.cjs.entry.js +282 -98
  59. package/dist/cjs/br-sign-in.cjs.entry.js +1 -1
  60. package/dist/cjs/br-skip-link.cjs.entry.js +1 -1
  61. package/dist/cjs/br-skiplink-item.cjs.entry.js +1 -1
  62. package/dist/cjs/br-slider.cjs.entry.js +1 -1
  63. package/dist/cjs/br-step_2.cjs.entry.js +2 -2
  64. package/dist/cjs/br-switch.cjs.entry.js +1 -1
  65. package/dist/cjs/br-tab-item.cjs.entry.js +1 -1
  66. package/dist/cjs/br-tab.cjs.entry.js +1 -1
  67. package/dist/cjs/br-table-body.cjs.entry.js +1 -1
  68. package/dist/cjs/br-table-cell.cjs.entry.js +1 -1
  69. package/dist/cjs/br-table-header-cell.cjs.entry.js +1 -1
  70. package/dist/cjs/br-table-header.cjs.entry.js +1 -1
  71. package/dist/cjs/br-table-row.cjs.entry.js +1 -1
  72. package/dist/cjs/br-table.cjs.entry.js +1 -1
  73. package/dist/cjs/br-tag.cjs.entry.js +1 -1
  74. package/dist/cjs/br-textarea.cjs.entry.js +1 -1
  75. package/dist/cjs/br-tooltip.cjs.entry.js +1 -1
  76. package/dist/cjs/br-upload.cjs.entry.js +5 -21
  77. package/dist/cjs/br-wizard-panel.cjs.entry.js +1 -1
  78. package/dist/cjs/br-wizard.cjs.entry.js +1 -1
  79. package/dist/cjs/{datetime-picker-constants-B5pWeOn1.js → datetime-picker-constants-CCeI5iW7.js} +20 -5
  80. package/dist/cjs/format-bytes-Cs8SH2w0.js +24 -0
  81. package/dist/cjs/index-Bc30P_6z.js +14 -14
  82. package/dist/cjs/{index-C92n55ch.js → index-C-IpVFDH.js} +13 -13
  83. package/dist/cjs/index.cjs.js +2 -2
  84. package/dist/cjs/{datetime-picker-props-validation-DmNKSXsy.js → isValid-CduHZTFc.js} +1 -483
  85. package/dist/cjs/loader.cjs.js +1 -1
  86. package/dist/cjs/select.utils-C38f5Kea.js +62 -0
  87. package/dist/cjs/webcomponents.cjs.js +1 -1
  88. package/dist/collection/components/avatar/avatar.css +1 -1
  89. package/dist/collection/components/breadcrumb/breadcrumb.css +1 -1
  90. package/dist/collection/components/button/button.css +1 -1
  91. package/dist/collection/components/card/card.css +1 -1
  92. package/dist/collection/components/carousel/carousel-page/carousel-page.css +1 -1
  93. package/dist/collection/components/carousel/carousel.css +1 -1
  94. package/dist/collection/components/checkbox/checkbox.css +1 -1
  95. package/dist/collection/components/checkbox-group/checkbox-group.css +1 -1
  96. package/dist/collection/components/collapse/collapse.css +1 -1
  97. package/dist/collection/components/cookiebar/cookiebar-cookie/cookiebar-cookie.css +1 -1
  98. package/dist/collection/components/cookiebar/cookiebar-group/cookiebar-group.css +1 -1
  99. package/dist/collection/components/cookiebar/cookiebar-header/cookiebar-header.css +1 -1
  100. package/dist/collection/components/cookiebar/cookiebar-link/cookiebar-link.css +1 -1
  101. package/dist/collection/components/cookiebar/cookiebar-note/cookiebar-note.css +1 -1
  102. package/dist/collection/components/cookiebar/cookiebar-note-group/cookiebar-note-group.css +1 -1
  103. package/dist/collection/components/cookiebar/cookiebar.css +1 -1
  104. package/dist/collection/components/datetime-picker/date-picker/date-picker-locale.js +12 -12
  105. package/dist/collection/components/datetime-picker/date-picker/date-picker-props-validation.js +14 -13
  106. package/dist/collection/components/datetime-picker/date-picker/date-picker.css +1 -1
  107. package/dist/collection/components/datetime-picker/date-picker/date-picker.js +384 -280
  108. package/dist/collection/components/datetime-picker/datetime-input/datetime-input-constants.js +59 -0
  109. package/dist/collection/components/datetime-picker/datetime-input/datetime-input-props-validation.js +19 -15
  110. package/dist/collection/components/datetime-picker/datetime-input/datetime-input.css +1 -1
  111. package/dist/collection/components/datetime-picker/datetime-input/datetime-input.js +373 -211
  112. package/dist/collection/components/datetime-picker/datetime-input/datetime-input.types.js +1 -0
  113. package/dist/collection/components/datetime-picker/datetime-picker-constants.js +19 -5
  114. package/dist/collection/components/datetime-picker/datetime-picker-form-associated.js +92 -11
  115. package/dist/collection/components/datetime-picker/datetime-picker-props-validation.js +52 -33
  116. package/dist/collection/components/datetime-picker/datetime-picker.css +1 -1
  117. package/dist/collection/components/datetime-picker/datetime-picker.js +915 -362
  118. package/dist/collection/components/datetime-picker/datetime-picker.utils.js +62 -49
  119. package/dist/collection/components/datetime-picker/time-picker/time-picker-constants.js +3 -2
  120. package/dist/collection/components/datetime-picker/time-picker/time-picker.css +1 -1
  121. package/dist/collection/components/datetime-picker/time-picker/time-picker.js +148 -85
  122. package/dist/collection/components/divider/divider.css +1 -1
  123. package/dist/collection/components/dropdown/dropdown.css +1 -1
  124. package/dist/collection/components/footer/footer-category/footer-category.css +1 -1
  125. package/dist/collection/components/footer/footer-item/footer-item.css +1 -1
  126. package/dist/collection/components/footer/footer-legal/footer-legal.css +1 -1
  127. package/dist/collection/components/footer/footer-logo/footer-logo.css +1 -1
  128. package/dist/collection/components/footer/footer-social/footer-social.css +1 -1
  129. package/dist/collection/components/footer/footer.css +1 -1
  130. package/dist/collection/components/header/header-function/header-function.css +1 -1
  131. package/dist/collection/components/header/header-link/header-link.css +1 -1
  132. package/dist/collection/components/header/header-list/header-list.css +1 -1
  133. package/dist/collection/components/header/header-logo/header-logo.css +1 -1
  134. package/dist/collection/components/header/header.css +1 -1
  135. package/dist/collection/components/icon/icon.css +1 -1
  136. package/dist/collection/components/input/input.css +1 -1
  137. package/dist/collection/components/input/input.js +29 -2
  138. package/dist/collection/components/item/item.css +1 -1
  139. package/dist/collection/components/link/link.css +1 -1
  140. package/dist/collection/components/list/list.css +1 -1
  141. package/dist/collection/components/loading/loading.css +1 -1
  142. package/dist/collection/components/magic-button/magic-button.css +1 -1
  143. package/dist/collection/components/menu/menu-group/menu-group.css +1 -1
  144. package/dist/collection/components/menu/menu-header/menu-header.css +1 -1
  145. package/dist/collection/components/menu/menu-info/menu-info.css +1 -1
  146. package/dist/collection/components/menu/menu-item/menu-item.css +1 -1
  147. package/dist/collection/components/menu/menu-link/menu-link.css +1 -1
  148. package/dist/collection/components/menu/menu-list/menu-list.css +1 -1
  149. package/dist/collection/components/menu/menu-logo/menu-logo.css +1 -1
  150. package/dist/collection/components/menu/menu-social/menu-social.css +1 -1
  151. package/dist/collection/components/menu/menu.css +1 -1
  152. package/dist/collection/components/message/message.css +1 -1
  153. package/dist/collection/components/modal/modal.css +1 -1
  154. package/dist/collection/components/notification/notification-body/notification-body.css +1 -1
  155. package/dist/collection/components/notification/notification-header/notification-header.css +1 -1
  156. package/dist/collection/components/notification/notification-item/notification-item.css +1 -1
  157. package/dist/collection/components/notification/notification.css +1 -1
  158. package/dist/collection/components/pagination/pagination.css +1 -1
  159. package/dist/collection/components/radio/radio.css +1 -1
  160. package/dist/collection/components/radio-group/radio-group.css +1 -1
  161. package/dist/collection/components/scrim/scrim.css +1 -1
  162. package/dist/collection/components/select/select-input/select-input.css +1 -1
  163. package/dist/collection/components/select/select-input/select-input.js +123 -17
  164. package/dist/collection/components/select/select-list/select-list.css +1 -1
  165. package/dist/collection/components/select/select-list/select-list.js +218 -66
  166. package/dist/collection/components/select/select-option/select-option.css +1 -1
  167. package/dist/collection/components/select/select-option/select-option.js +14 -5
  168. package/dist/collection/components/select/select.css +1 -1
  169. package/dist/collection/components/select/select.js +303 -94
  170. package/dist/collection/components/select/select.utils.js +26 -7
  171. package/dist/collection/components/sign-in/sign-in.css +1 -1
  172. package/dist/collection/components/skip-link/skip-link-item/skip-link-item.css +1 -1
  173. package/dist/collection/components/skip-link/skip-link.css +1 -1
  174. package/dist/collection/components/slider/slider.css +1 -1
  175. package/dist/collection/components/step/step-item/step-item.css +1 -1
  176. package/dist/collection/components/step/step.css +1 -1
  177. package/dist/collection/components/switch/switch.css +1 -1
  178. package/dist/collection/components/tab/tab-item/tab-item.css +1 -1
  179. package/dist/collection/components/tab/tab.css +1 -1
  180. package/dist/collection/components/table/table-body/table-body.css +1 -1
  181. package/dist/collection/components/table/table-cell/table-cell.css +1 -1
  182. package/dist/collection/components/table/table-header/table-header.css +1 -1
  183. package/dist/collection/components/table/table-header-cell/table-header-cell.css +1 -1
  184. package/dist/collection/components/table/table-row/table-row.css +1 -1
  185. package/dist/collection/components/table/table.css +1 -1
  186. package/dist/collection/components/tag/tag.css +1 -1
  187. package/dist/collection/components/textarea/textarea.css +1 -1
  188. package/dist/collection/components/tooltip/tooltip.css +1 -1
  189. package/dist/collection/components/upload/upload.css +1 -1
  190. package/dist/collection/components/wizard/wizard-panel/wizard-panel.css +1 -1
  191. package/dist/collection/components/wizard/wizard.css +1 -1
  192. package/dist/components/br-avatar.js +1 -1
  193. package/dist/components/br-breadcrumb.js +1 -1
  194. package/dist/components/br-button.js +1 -1
  195. package/dist/components/br-card.js +1 -1
  196. package/dist/components/br-carousel-page.js +1 -1
  197. package/dist/components/br-carousel.js +1 -1
  198. package/dist/components/br-checkbox-group.js +1 -1
  199. package/dist/components/br-checkbox.js +1 -1
  200. package/dist/components/br-checkgroup.js +1 -1
  201. package/dist/components/br-collapse.js +1 -1
  202. package/dist/components/br-cookiebar-cookie.js +1 -1
  203. package/dist/components/br-cookiebar-group.js +1 -1
  204. package/dist/components/br-cookiebar-header.js +1 -1
  205. package/dist/components/br-cookiebar-link.js +1 -1
  206. package/dist/components/br-cookiebar-note-group.js +1 -1
  207. package/dist/components/br-cookiebar-note.js +1 -1
  208. package/dist/components/br-cookiebar.js +1 -1
  209. package/dist/components/br-date-picker.js +1 -1
  210. package/dist/components/br-datetime-input.js +1 -1
  211. package/dist/components/br-datetime-picker.js +1 -1
  212. package/dist/components/br-divider.js +1 -1
  213. package/dist/components/br-dropdown.js +1 -1
  214. package/dist/components/br-footer-category.js +1 -1
  215. package/dist/components/br-footer-item.js +1 -1
  216. package/dist/components/br-footer-legal.js +1 -1
  217. package/dist/components/br-footer-logo.js +1 -1
  218. package/dist/components/br-footer-social.js +1 -1
  219. package/dist/components/br-footer.js +1 -1
  220. package/dist/components/br-header-function.js +1 -1
  221. package/dist/components/br-header-link.js +1 -1
  222. package/dist/components/br-header-list.js +1 -1
  223. package/dist/components/br-header-logo.js +1 -1
  224. package/dist/components/br-header.js +1 -1
  225. package/dist/components/br-icon.js +1 -1
  226. package/dist/components/br-input.js +1 -1
  227. package/dist/components/br-item.js +1 -1
  228. package/dist/components/br-link.js +1 -1
  229. package/dist/components/br-list.js +1 -1
  230. package/dist/components/br-loading.js +1 -1
  231. package/dist/components/br-magic-button.js +1 -1
  232. package/dist/components/br-menu-group.js +1 -1
  233. package/dist/components/br-menu-header.js +1 -1
  234. package/dist/components/br-menu-info.js +1 -1
  235. package/dist/components/br-menu-item.js +1 -1
  236. package/dist/components/br-menu-link.js +1 -1
  237. package/dist/components/br-menu-list.js +1 -1
  238. package/dist/components/br-menu-logo.js +1 -1
  239. package/dist/components/br-menu-social.js +1 -1
  240. package/dist/components/br-menu.js +1 -1
  241. package/dist/components/br-message.js +1 -1
  242. package/dist/components/br-modal.js +1 -1
  243. package/dist/components/br-notification-body.js +1 -1
  244. package/dist/components/br-notification-header.js +1 -1
  245. package/dist/components/br-notification-item.js +1 -1
  246. package/dist/components/br-notification.js +1 -1
  247. package/dist/components/br-pagination.js +1 -1
  248. package/dist/components/br-radio-group.js +1 -1
  249. package/dist/components/br-radio.js +1 -1
  250. package/dist/components/br-scrim.js +1 -1
  251. package/dist/components/br-select-input.js +1 -1
  252. package/dist/components/br-select-list.js +1 -1
  253. package/dist/components/br-select-option.js +1 -1
  254. package/dist/components/br-select.js +1 -1
  255. package/dist/components/br-sign-in.js +1 -1
  256. package/dist/components/br-skip-link-item.js +1 -1
  257. package/dist/components/br-skip-link.js +1 -1
  258. package/dist/components/br-skiplink-item.js +1 -1
  259. package/dist/components/br-slider.js +1 -1
  260. package/dist/components/br-step-item.js +1 -1
  261. package/dist/components/br-step.js +1 -1
  262. package/dist/components/br-switch.js +1 -1
  263. package/dist/components/br-tab-item.js +1 -1
  264. package/dist/components/br-tab.js +1 -1
  265. package/dist/components/br-table-body.js +1 -1
  266. package/dist/components/br-table-cell.js +1 -1
  267. package/dist/components/br-table-header-cell.js +1 -1
  268. package/dist/components/br-table-header.js +1 -1
  269. package/dist/components/br-table-row.js +1 -1
  270. package/dist/components/br-table.js +1 -1
  271. package/dist/components/br-tag.js +1 -1
  272. package/dist/components/br-textarea.js +1 -1
  273. package/dist/components/br-time-picker.js +1 -1
  274. package/dist/components/br-tooltip.js +1 -1
  275. package/dist/components/br-upload.js +1 -1
  276. package/dist/components/br-wizard-panel.js +1 -1
  277. package/dist/components/br-wizard.js +1 -1
  278. package/dist/components/index.js +1 -1
  279. package/dist/components/p-5h-W9_JR.js +5 -0
  280. package/dist/components/p-848QkYoM.js +5 -0
  281. package/dist/components/p-B7bNfmgh.js +5 -0
  282. package/dist/components/p-BFHvuEnN.js +5 -0
  283. package/dist/components/p-BH6QYnAr.js +5 -0
  284. package/dist/{webcomponents/p-5f422a69.entry.js → components/p-BcW8O6h2.js} +1 -1
  285. package/dist/components/p-BicHMcSS.js +5 -0
  286. package/dist/components/p-Bs7iRQTG.js +5 -0
  287. package/dist/components/{p-Nze3Utvd.js → p-Bvrw9yWR.js} +1 -1
  288. package/dist/components/p-BzQFMh9j.js +5 -0
  289. package/dist/components/p-CBHd0-fF.js +5 -0
  290. package/dist/components/p-CCPHCJjw.js +5 -0
  291. package/dist/components/{p-BcqVlof7.js → p-CbgKdASU.js} +1 -1
  292. package/dist/components/p-CeNELttN.js +5 -0
  293. package/dist/components/p-CjtmJTLO.js +5 -0
  294. package/dist/components/{p-CZZVc2gK.js → p-D-3G3Ioq.js} +1 -1
  295. package/dist/components/p-DDu3JV_r.js +5 -0
  296. package/dist/components/p-DFWqyfUe.js +5 -0
  297. package/dist/components/p-DL6xuxGG.js +5 -0
  298. package/dist/components/p-DOX9Uwk1.js +5 -0
  299. package/dist/components/p-DUq7uT2-.js +5 -0
  300. package/dist/components/p-Devw08cc.js +5 -0
  301. package/dist/components/p-Di96UxvH.js +5 -0
  302. package/dist/components/p-Dp3MsSXu.js +5 -0
  303. package/dist/components/p-DsO4F0Cz.js +5 -0
  304. package/dist/components/p-DuLHFTpa.js +5 -0
  305. package/dist/components/p-DusornQ0.js +5 -0
  306. package/dist/components/p-OQpiDEK9.js +5 -0
  307. package/dist/components/p-PV731d8s.js +5 -0
  308. package/dist/components/p-XW6Hp_Jk.js +5 -0
  309. package/dist/components/p-jOb1hCPi.js +5 -0
  310. package/dist/components/p-rMnkh3Cy.js +5 -0
  311. package/dist/components/p-ta-24T1Z.js +5 -0
  312. package/dist/esm/br-avatar.entry.js +1 -1
  313. package/dist/esm/br-breadcrumb.entry.js +1 -1
  314. package/dist/esm/br-button_2.entry.js +2 -2
  315. package/dist/esm/br-card.entry.js +1 -1
  316. package/dist/esm/br-carousel-page.entry.js +1 -1
  317. package/dist/esm/br-carousel.entry.js +2 -2
  318. package/dist/esm/br-checkbox-group.entry.js +1 -1
  319. package/dist/esm/br-checkbox.entry.js +2 -2
  320. package/dist/esm/br-collapse_2.entry.js +3 -3
  321. package/dist/esm/br-cookiebar-cookie.entry.js +1 -1
  322. package/dist/esm/br-cookiebar-group.entry.js +1 -1
  323. package/dist/esm/br-cookiebar-header.entry.js +1 -1
  324. package/dist/esm/br-cookiebar-link.entry.js +1 -1
  325. package/dist/esm/br-cookiebar-note-group.entry.js +1 -1
  326. package/dist/esm/br-cookiebar-note.entry.js +1 -1
  327. package/dist/esm/br-cookiebar.entry.js +2 -2
  328. package/dist/esm/br-date-picker_3.entry.js +843 -491
  329. package/dist/esm/br-datetime-picker.entry.js +1314 -278
  330. package/dist/esm/br-divider.entry.js +1 -1
  331. package/dist/esm/br-dropdown_2.entry.js +247 -128
  332. package/dist/esm/br-footer-category.entry.js +1 -1
  333. package/dist/esm/br-footer-item.entry.js +1 -1
  334. package/dist/esm/br-footer-legal.entry.js +1 -1
  335. package/dist/esm/br-footer-logo.entry.js +1 -1
  336. package/dist/esm/br-footer-social.entry.js +1 -1
  337. package/dist/esm/br-footer.entry.js +1 -1
  338. package/dist/esm/br-header-function.entry.js +1 -1
  339. package/dist/esm/br-header-link.entry.js +1 -1
  340. package/dist/esm/br-header-list.entry.js +2 -2
  341. package/dist/esm/br-header-logo.entry.js +1 -1
  342. package/dist/esm/br-header.entry.js +1 -1
  343. package/dist/esm/br-icon.entry.js +1 -1
  344. package/dist/esm/br-input.entry.js +10 -4
  345. package/dist/esm/br-item.entry.js +1 -1
  346. package/dist/esm/br-link.entry.js +1 -1
  347. package/dist/esm/br-loading.entry.js +1 -1
  348. package/dist/esm/br-magic-button.entry.js +1 -1
  349. package/dist/esm/br-menu-group.entry.js +1 -1
  350. package/dist/esm/br-menu-header.entry.js +1 -1
  351. package/dist/esm/br-menu-info.entry.js +1 -1
  352. package/dist/esm/br-menu-item.entry.js +1 -1
  353. package/dist/esm/br-menu-link.entry.js +1 -1
  354. package/dist/esm/br-menu-list.entry.js +1 -1
  355. package/dist/esm/br-menu-logo.entry.js +1 -1
  356. package/dist/esm/br-menu-social.entry.js +1 -1
  357. package/dist/esm/br-menu.entry.js +2 -2
  358. package/dist/esm/br-modal.entry.js +1 -1
  359. package/dist/esm/br-notification-body.entry.js +1 -1
  360. package/dist/esm/br-notification-header.entry.js +1 -1
  361. package/dist/esm/br-notification-item.entry.js +1 -1
  362. package/dist/esm/br-notification.entry.js +2 -2
  363. package/dist/esm/br-pagination.entry.js +1 -1
  364. package/dist/esm/br-radio-group.entry.js +2 -2
  365. package/dist/esm/br-radio.entry.js +2 -2
  366. package/dist/esm/br-scrim.entry.js +1 -1
  367. package/dist/esm/br-select-input_3.entry.js +282 -98
  368. package/dist/esm/br-sign-in.entry.js +1 -1
  369. package/dist/esm/br-skip-link.entry.js +1 -1
  370. package/dist/esm/br-skiplink-item.entry.js +1 -1
  371. package/dist/esm/br-slider.entry.js +2 -2
  372. package/dist/esm/br-step_2.entry.js +2 -2
  373. package/dist/esm/br-switch.entry.js +2 -2
  374. package/dist/esm/br-tab-item.entry.js +1 -1
  375. package/dist/esm/br-tab.entry.js +1 -1
  376. package/dist/esm/br-table-body.entry.js +1 -1
  377. package/dist/esm/br-table-cell.entry.js +1 -1
  378. package/dist/esm/br-table-header-cell.entry.js +1 -1
  379. package/dist/esm/br-table-header.entry.js +1 -1
  380. package/dist/esm/br-table-row.entry.js +1 -1
  381. package/dist/esm/br-table.entry.js +1 -1
  382. package/dist/esm/br-tag.entry.js +2 -2
  383. package/dist/esm/br-textarea.entry.js +2 -2
  384. package/dist/esm/br-tooltip.entry.js +2 -2
  385. package/dist/esm/br-upload.entry.js +3 -19
  386. package/dist/esm/br-wizard-panel.entry.js +1 -1
  387. package/dist/esm/br-wizard.entry.js +1 -1
  388. package/dist/esm/{datetime-picker-constants-BtRPYRvA.js → datetime-picker-constants-DDc4sADe.js} +20 -6
  389. package/dist/esm/{event-CfuJQ1DY.js → event-6Da1SZ3J.js} +1 -1
  390. package/dist/esm/format-bytes-B7bNfmgh.js +22 -0
  391. package/dist/esm/index-ConyRdJe.js +14 -14
  392. package/dist/esm/{index-BQPOWxe5.js → index-CytVKoHT.js} +13 -13
  393. package/dist/esm/index.js +2 -2
  394. package/dist/esm/{datetime-picker-props-validation-BeTcUTnE.js → isValid-Bee0Uvqc.js} +2 -477
  395. package/dist/esm/loader.js +1 -1
  396. package/dist/esm/select.utils-BYsh2ZdE.js +57 -0
  397. package/dist/esm/webcomponents.js +1 -1
  398. package/dist/hydrate/index.js +2979 -1673
  399. package/dist/hydrate/index.mjs +2979 -1673
  400. package/dist/types/components/datetime-picker/date-picker/date-picker-locale.d.ts +9 -9
  401. package/dist/types/components/datetime-picker/date-picker/date-picker-props-validation.d.ts +14 -13
  402. package/dist/types/components/datetime-picker/date-picker/date-picker.d.ts +264 -161
  403. package/dist/types/components/datetime-picker/datetime-input/datetime-input-constants.d.ts +14 -0
  404. package/dist/types/components/datetime-picker/datetime-input/datetime-input-props-validation.d.ts +19 -15
  405. package/dist/types/components/datetime-picker/datetime-input/datetime-input.d.ts +229 -98
  406. package/dist/types/components/datetime-picker/datetime-input/datetime-input.types.d.ts +36 -0
  407. package/dist/types/components/datetime-picker/datetime-picker-constants.d.ts +19 -5
  408. package/dist/types/components/datetime-picker/datetime-picker-form-associated.d.ts +32 -5
  409. package/dist/types/components/datetime-picker/datetime-picker-props-validation.d.ts +22 -24
  410. package/dist/types/components/datetime-picker/datetime-picker.d.ts +508 -235
  411. package/dist/types/components/datetime-picker/datetime-picker.types.d.ts +75 -21
  412. package/dist/types/components/datetime-picker/datetime-picker.utils.d.ts +53 -47
  413. package/dist/types/components/datetime-picker/time-picker/time-picker-constants.d.ts +3 -2
  414. package/dist/types/components/datetime-picker/time-picker/time-picker.d.ts +126 -55
  415. package/dist/types/components/input/input.d.ts +9 -1
  416. package/dist/types/components/input/input.types.d.ts +4 -0
  417. package/dist/types/components/select/select-input/select-input.d.ts +9 -2
  418. package/dist/types/components/select/select-list/select-list.d.ts +14 -2
  419. package/dist/types/components/select/select-option/select-option.d.ts +1 -0
  420. package/dist/types/components/select/select.d.ts +47 -7
  421. package/dist/types/components/select/select.types.d.ts +12 -0
  422. package/dist/types/components/select/select.utils.d.ts +3 -0
  423. package/dist/types/components.d.ts +387 -300
  424. package/dist/webcomponents/index.esm.js +1 -1
  425. package/dist/webcomponents/p-01801ac1.entry.js +5 -0
  426. package/dist/webcomponents/p-05b459f2.entry.js +5 -0
  427. package/dist/webcomponents/p-08ac6f09.entry.js +5 -0
  428. package/dist/webcomponents/p-09c79c1d.entry.js +5 -0
  429. package/dist/webcomponents/p-0fc112fc.entry.js +5 -0
  430. package/dist/webcomponents/p-13babfc4.entry.js +5 -0
  431. package/dist/webcomponents/p-15022ab7.entry.js +5 -0
  432. package/dist/webcomponents/p-172d42c2.entry.js +5 -0
  433. package/dist/webcomponents/p-18cf093a.entry.js +5 -0
  434. package/dist/webcomponents/p-198aa844.entry.js +5 -0
  435. package/dist/webcomponents/p-1ba60d13.entry.js +5 -0
  436. package/dist/webcomponents/p-1bb96641.entry.js +5 -0
  437. package/dist/webcomponents/{p-82759002.entry.js → p-20477061.entry.js} +1 -1
  438. package/dist/webcomponents/p-21feda62.entry.js +5 -0
  439. package/dist/webcomponents/p-23a5cfd7.entry.js +5 -0
  440. package/dist/webcomponents/{p-0b0cf355.entry.js → p-2c8595d3.entry.js} +1 -1
  441. package/dist/webcomponents/{p-76d51654.entry.js → p-31a4694a.entry.js} +1 -1
  442. package/dist/webcomponents/p-32ea6342.entry.js +5 -0
  443. package/dist/webcomponents/p-3658adcf.entry.js +5 -0
  444. package/dist/webcomponents/p-37914e63.entry.js +5 -0
  445. package/dist/webcomponents/p-3b0dd0ff.entry.js +5 -0
  446. package/dist/webcomponents/p-42b60169.entry.js +5 -0
  447. package/dist/webcomponents/p-42c9c6c5.entry.js +5 -0
  448. package/dist/{components/p-DOJ1vYOl.js → webcomponents/p-473561f2.entry.js} +1 -1
  449. package/dist/webcomponents/p-47c490ef.entry.js +5 -0
  450. package/dist/webcomponents/p-4b01c60f.entry.js +5 -0
  451. package/dist/webcomponents/p-5a5ed7d8.entry.js +5 -0
  452. package/dist/webcomponents/p-609cf652.entry.js +5 -0
  453. package/dist/webcomponents/p-614683d9.entry.js +5 -0
  454. package/dist/webcomponents/p-67605757.entry.js +5 -0
  455. package/dist/webcomponents/p-67774920.entry.js +5 -0
  456. package/dist/webcomponents/p-67d62559.entry.js +5 -0
  457. package/dist/webcomponents/{p-4118b878.entry.js → p-695dbeb0.entry.js} +1 -1
  458. package/dist/webcomponents/{p-CfuJQ1DY.js → p-6Da1SZ3J.js} +1 -1
  459. package/dist/webcomponents/p-6a293be8.entry.js +5 -0
  460. package/dist/webcomponents/{p-d5d2205c.entry.js → p-6f1a4fbe.entry.js} +1 -1
  461. package/dist/webcomponents/p-7352d459.entry.js +5 -0
  462. package/dist/webcomponents/p-745213f7.entry.js +5 -0
  463. package/dist/webcomponents/p-794b701b.entry.js +5 -0
  464. package/dist/webcomponents/p-7ee564a1.entry.js +5 -0
  465. package/dist/webcomponents/{p-6850e98e.entry.js → p-7fda8b89.entry.js} +1 -1
  466. package/dist/webcomponents/p-8116ee93.entry.js +5 -0
  467. package/dist/webcomponents/p-821341dc.entry.js +5 -0
  468. package/dist/webcomponents/p-8aa6f07c.entry.js +5 -0
  469. package/dist/webcomponents/p-8ddf3ce3.entry.js +5 -0
  470. package/dist/webcomponents/p-95f3c44a.entry.js +5 -0
  471. package/dist/webcomponents/p-96dbb585.entry.js +5 -0
  472. package/dist/webcomponents/p-9815ab95.entry.js +5 -0
  473. package/dist/webcomponents/{p-b02a7218.entry.js → p-9e0324a7.entry.js} +1 -1
  474. package/dist/webcomponents/p-B7bNfmgh.js +5 -0
  475. package/dist/webcomponents/p-BYsh2ZdE.js +5 -0
  476. package/dist/webcomponents/p-CJipT0in.js +5 -0
  477. package/dist/webcomponents/{p-BtRPYRvA.js → p-DDc4sADe.js} +1 -1
  478. package/dist/webcomponents/p-a038be16.entry.js +5 -0
  479. package/dist/webcomponents/p-a32d17cb.entry.js +5 -0
  480. package/dist/webcomponents/p-a46f068e.entry.js +5 -0
  481. package/dist/webcomponents/p-a89b684d.entry.js +5 -0
  482. package/dist/webcomponents/{p-0d2ca2f7.entry.js → p-ac68355e.entry.js} +1 -1
  483. package/dist/webcomponents/{p-61977114.entry.js → p-af888d13.entry.js} +1 -1
  484. package/dist/webcomponents/p-b0124459.entry.js +5 -0
  485. package/dist/webcomponents/p-b063c12f.entry.js +5 -0
  486. package/dist/webcomponents/p-b07bfdc5.entry.js +5 -0
  487. package/dist/webcomponents/{p-c1dafd8d.entry.js → p-b5d25332.entry.js} +1 -1
  488. package/dist/webcomponents/p-b609b464.entry.js +5 -0
  489. package/dist/webcomponents/p-b66ab52d.entry.js +5 -0
  490. package/dist/webcomponents/p-b8d4ace3.entry.js +5 -0
  491. package/dist/webcomponents/p-c717c745.entry.js +5 -0
  492. package/dist/webcomponents/p-d08b6266.entry.js +5 -0
  493. package/dist/webcomponents/p-d6165aa0.entry.js +5 -0
  494. package/dist/webcomponents/{p-14ff5865.entry.js → p-dacb7e2c.entry.js} +1 -1
  495. package/dist/webcomponents/p-db309a11.entry.js +5 -0
  496. package/dist/webcomponents/{p-19a38e20.entry.js → p-dc23cb2e.entry.js} +1 -1
  497. package/dist/webcomponents/p-e241caf3.entry.js +5 -0
  498. package/dist/webcomponents/p-e661c024.entry.js +5 -0
  499. package/dist/webcomponents/p-e7107869.entry.js +5 -0
  500. package/dist/webcomponents/p-eb94199d.entry.js +5 -0
  501. package/dist/webcomponents/{p-e07e309d.entry.js → p-f8993ae4.entry.js} +1 -1
  502. package/dist/webcomponents/{p-513ee754.entry.js → p-f99d8c9c.entry.js} +1 -1
  503. package/dist/webcomponents/{p-DV-iW9Aj.js → p-fOJu6uZR.js} +1 -1
  504. package/dist/webcomponents/{p-b16590fc.entry.js → p-fb76b1e0.entry.js} +1 -1
  505. package/dist/webcomponents/p-fdcb54a3.entry.js +5 -0
  506. package/dist/webcomponents/{p-94848046.entry.js → p-fed02286.entry.js} +1 -1
  507. package/dist/webcomponents/webcomponents.esm.js +1 -1
  508. package/package.json +2 -2
  509. package/dist/components/p-0qmYp77w.js +0 -5
  510. package/dist/components/p-5c3rNBXh.js +0 -5
  511. package/dist/components/p-B8oIvH3q.js +0 -5
  512. package/dist/components/p-BECz8XWJ.js +0 -5
  513. package/dist/components/p-BM4Ys6hX.js +0 -5
  514. package/dist/components/p-BXWh9s7p.js +0 -5
  515. package/dist/components/p-BblZlUp2.js +0 -5
  516. package/dist/components/p-Bezou5CQ.js +0 -5
  517. package/dist/components/p-BjeUETWJ.js +0 -5
  518. package/dist/components/p-Cd6udSDt.js +0 -5
  519. package/dist/components/p-Ci0_RqAE.js +0 -5
  520. package/dist/components/p-CuBgClZm.js +0 -5
  521. package/dist/components/p-D0QYZSoP.js +0 -5
  522. package/dist/components/p-D4SWpW6-.js +0 -5
  523. package/dist/components/p-D579DS7x.js +0 -5
  524. package/dist/components/p-D8K7rhHd.js +0 -5
  525. package/dist/components/p-D9nXlCuS.js +0 -5
  526. package/dist/components/p-DKFO6Q_g.js +0 -5
  527. package/dist/components/p-DNJSSCNi.js +0 -5
  528. package/dist/components/p-DYI30IZL.js +0 -5
  529. package/dist/components/p-DcVldfL0.js +0 -5
  530. package/dist/components/p-DhvmHPp4.js +0 -5
  531. package/dist/components/p-DwgiHL0b.js +0 -5
  532. package/dist/components/p-WxDB6Dk4.js +0 -5
  533. package/dist/components/p-ZLoeVagg.js +0 -5
  534. package/dist/components/p-gbYJ9sfc.js +0 -5
  535. package/dist/components/p-uc8ABlC_.js +0 -5
  536. package/dist/components/p-v60ypfxD.js +0 -5
  537. package/dist/webcomponents/p-078bd760.entry.js +0 -5
  538. package/dist/webcomponents/p-07c2cdff.entry.js +0 -5
  539. package/dist/webcomponents/p-0d79ca44.entry.js +0 -5
  540. package/dist/webcomponents/p-0fe3c47b.entry.js +0 -5
  541. package/dist/webcomponents/p-116b53c9.entry.js +0 -5
  542. package/dist/webcomponents/p-1240dae7.entry.js +0 -5
  543. package/dist/webcomponents/p-15743a02.entry.js +0 -5
  544. package/dist/webcomponents/p-16cebf49.entry.js +0 -5
  545. package/dist/webcomponents/p-1884b9d3.entry.js +0 -5
  546. package/dist/webcomponents/p-1d36c8fa.entry.js +0 -5
  547. package/dist/webcomponents/p-1fa4b5b2.entry.js +0 -5
  548. package/dist/webcomponents/p-212c069b.entry.js +0 -5
  549. package/dist/webcomponents/p-23f37cd6.entry.js +0 -5
  550. package/dist/webcomponents/p-24502b63.entry.js +0 -5
  551. package/dist/webcomponents/p-27fb81f3.entry.js +0 -5
  552. package/dist/webcomponents/p-28844490.entry.js +0 -5
  553. package/dist/webcomponents/p-2b41bdcc.entry.js +0 -5
  554. package/dist/webcomponents/p-2cb1e09b.entry.js +0 -5
  555. package/dist/webcomponents/p-2fcda70b.entry.js +0 -5
  556. package/dist/webcomponents/p-3378300c.entry.js +0 -5
  557. package/dist/webcomponents/p-3ae9cf69.entry.js +0 -5
  558. package/dist/webcomponents/p-3b79cd49.entry.js +0 -5
  559. package/dist/webcomponents/p-3c1513ec.entry.js +0 -5
  560. package/dist/webcomponents/p-4534a3c3.entry.js +0 -5
  561. package/dist/webcomponents/p-48abf568.entry.js +0 -5
  562. package/dist/webcomponents/p-4e5ea05c.entry.js +0 -5
  563. package/dist/webcomponents/p-521a1076.entry.js +0 -5
  564. package/dist/webcomponents/p-59fc52c0.entry.js +0 -5
  565. package/dist/webcomponents/p-5a9f4ea2.entry.js +0 -5
  566. package/dist/webcomponents/p-71853dfc.entry.js +0 -5
  567. package/dist/webcomponents/p-77e242f3.entry.js +0 -5
  568. package/dist/webcomponents/p-7b849472.entry.js +0 -5
  569. package/dist/webcomponents/p-7dbfb875.entry.js +0 -5
  570. package/dist/webcomponents/p-7fa7f052.entry.js +0 -5
  571. package/dist/webcomponents/p-81c65747.entry.js +0 -5
  572. package/dist/webcomponents/p-91a5329f.entry.js +0 -5
  573. package/dist/webcomponents/p-966773a9.entry.js +0 -5
  574. package/dist/webcomponents/p-9abb5a53.entry.js +0 -5
  575. package/dist/webcomponents/p-9bf2e325.entry.js +0 -5
  576. package/dist/webcomponents/p-9c943b40.entry.js +0 -5
  577. package/dist/webcomponents/p-9ec3ca00.entry.js +0 -5
  578. package/dist/webcomponents/p-B0PbhaxL.js +0 -5
  579. package/dist/webcomponents/p-ad91f149.entry.js +0 -5
  580. package/dist/webcomponents/p-aeea1f17.entry.js +0 -5
  581. package/dist/webcomponents/p-c2ca0289.entry.js +0 -5
  582. package/dist/webcomponents/p-c8af334e.entry.js +0 -5
  583. package/dist/webcomponents/p-cac49c6a.entry.js +0 -5
  584. package/dist/webcomponents/p-cb9ebfbe.entry.js +0 -5
  585. package/dist/webcomponents/p-d11f95a0.entry.js +0 -5
  586. package/dist/webcomponents/p-dad03b49.entry.js +0 -5
  587. package/dist/webcomponents/p-db8e6322.entry.js +0 -5
  588. package/dist/webcomponents/p-dea8015f.entry.js +0 -5
  589. package/dist/webcomponents/p-e53d874b.entry.js +0 -5
  590. package/dist/webcomponents/p-e5540387.entry.js +0 -5
  591. package/dist/webcomponents/p-e94a52ac.entry.js +0 -5
  592. package/dist/webcomponents/p-e9be4d3f.entry.js +0 -5
  593. package/dist/webcomponents/p-e9db9381.entry.js +0 -5
  594. package/dist/webcomponents/p-edca5de1.entry.js +0 -5
  595. package/dist/webcomponents/p-ee5b9fc9.entry.js +0 -5
  596. package/dist/webcomponents/p-f4ef8c63.entry.js +0 -5
@@ -6,7 +6,7 @@ import { Host, h } from "@stencil/core";
6
6
  import { reportInvalidPropValue } from "../../../shared/utils/prop-warning";
7
7
  import { resolveDensity, resolveIntegerPropValue, resolveNumberPropValue } from "../../../shared/utils/props";
8
8
  import { createRafBatcher } from "../../../shared/utils/raf-batcher";
9
- import { computeVirtualWindow } from "../../../shared/utils/virtual-scroll";
9
+ import { filterSelectOptions, SELECT_ALL_OPTION_VALUE } from "../select.utils";
10
10
  /**
11
11
  * Subcomponente de lista virtualizada de opções, projetado para renderizar o conjunto de escolhas do `br-select`.
12
12
  *
@@ -30,7 +30,8 @@ import { computeVirtualWindow } from "../../../shared/utils/virtual-scroll";
30
30
  export class SelectList {
31
31
  constructor() {
32
32
  /**
33
- * Define a densidade visual da lista, das opções e do indicador de carregamento.
33
+ * Define a densidade visual da lista, das opções regulares e do indicador de carregamento.
34
+ * A opção sintética de selecionar todos permanece com densidade `small`.
34
35
  * Aceita `small`, `medium` ou `large`. Valores inválidos usam `medium`.
35
36
  *
36
37
  * @default 'medium'
@@ -79,6 +80,11 @@ export class SelectList {
79
80
  * @default 0
80
81
  */
81
82
  this.overscan = 0;
83
+ /**
84
+ * Oculta os divisores entre opções consecutivas, sem alterar a altura das linhas.
85
+ * @default false
86
+ */
87
+ this.hideDividers = false;
82
88
  /**
83
89
  * Rótulo apresentado para a ação de selecionar todos no modo múltiplo.
84
90
  *
@@ -104,7 +110,10 @@ export class SelectList {
104
110
  this.isMultiple = false;
105
111
  this.scrollTop = 0;
106
112
  this.measuredItemHeight = null;
113
+ this.measuredSelectAllItemHeight = null;
107
114
  this.measurementFrame = null;
115
+ this.measurementInProgress = false;
116
+ this.measurementRequested = false;
108
117
  this.filteredOptionsCache = null;
109
118
  this.filteredOptionsCacheKey = '';
110
119
  this.virtualRowsCache = null;
@@ -139,6 +148,8 @@ export class SelectList {
139
148
  return;
140
149
  const selectedByValue = new Map(options.map((option) => [option.value, Boolean(option.selected)]));
141
150
  renderedOptions.forEach((option) => {
151
+ if (option.value === undefined)
152
+ return;
142
153
  const selected = selectedByValue.get(option.value);
143
154
  if (selected !== undefined && option.selected !== selected)
144
155
  option.selected = selected;
@@ -157,7 +168,7 @@ export class SelectList {
157
168
  return resolveIntegerPropValue(this.el, 'overscan', this.overscan, 0, Number.MAX_SAFE_INTEGER, 0);
158
169
  }
159
170
  get effectiveActiveOptionIndex() {
160
- return resolveIntegerPropValue(this.el, 'activeOptionIndex', this.activeOptionIndex, -1, Number.MAX_SAFE_INTEGER, -1);
171
+ return Number.isInteger(this.activeOptionIndex) && this.activeOptionIndex >= -1 ? this.activeOptionIndex : -1;
161
172
  }
162
173
  /**
163
174
  * O `br-select` fornece a opção sintética de selecionar todos antes de
@@ -170,12 +181,15 @@ export class SelectList {
170
181
  }
171
182
  disconnectedCallback() {
172
183
  this.scrollBatch.cancel();
184
+ this.measurementRequested = false;
173
185
  if (this.measurementFrame !== null) {
174
186
  cancelAnimationFrame(this.measurementFrame);
175
187
  this.measurementFrame = null;
176
188
  }
177
189
  }
178
190
  handleSearchTermChange() {
191
+ this.filteredOptionsCache = null;
192
+ this.virtualRowsCache = null;
179
193
  this.scrollTop = 0;
180
194
  if (this.listElement) {
181
195
  this.listElement.scrollTop = 0;
@@ -228,6 +242,7 @@ export class SelectList {
228
242
  this.options = [];
229
243
  this.scrollTop = 0;
230
244
  this.measuredItemHeight = null;
245
+ this.measuredSelectAllItemHeight = null;
231
246
  if (this.listElement) {
232
247
  this.listElement.scrollTop = 0;
233
248
  }
@@ -280,11 +295,6 @@ export class SelectList {
280
295
  if (nextTerm === this.searchTerm)
281
296
  return;
282
297
  this.searchTerm = nextTerm;
283
- this.scrollTop = 0;
284
- if (this.listElement) {
285
- this.listElement.scrollTop = 0;
286
- }
287
- this.scheduleMeasureItemHeight();
288
298
  }
289
299
  /**
290
300
  * Alterna a lista entre modo simples e múltiplo.
@@ -325,10 +335,9 @@ export class SelectList {
325
335
  const rowIndex = this.getRowIndexForOption(rows, index);
326
336
  if (rowIndex < 0)
327
337
  return false;
328
- const rowHeight = this.getRowHeight();
329
338
  const viewportHeight = this.getViewportHeight();
330
- const maxScrollTop = Math.max(0, rows.length * rowHeight - viewportHeight);
331
- const nextScrollTop = Math.min(rowIndex * rowHeight, maxScrollTop);
339
+ const maxScrollTop = Math.max(0, this.getRowsHeight(rows) - viewportHeight);
340
+ const nextScrollTop = Math.min(this.getRowTop(rows, rowIndex), maxScrollTop);
332
341
  /*
333
342
  * Atualiza primeiro o estado que define a janela virtual. Dessa forma,
334
343
  * os itens do novo intervalo são renderizados antes de o viewport nativo
@@ -372,6 +381,18 @@ export class SelectList {
372
381
  await optionElement?.setFocus?.();
373
382
  return Boolean(optionElement);
374
383
  }
384
+ /** Torna o item ativo visível sem retirar o foco do campo. */
385
+ async revealOption(index) {
386
+ for (let attempt = 0; attempt < 3 && !this.getFilteredOptions()[index]; attempt += 1) {
387
+ await this.waitForNextFrame();
388
+ }
389
+ if (!this.getFilteredOptions()[index])
390
+ return false;
391
+ await this.waitForNextFrame();
392
+ await this.waitForNextFrame();
393
+ await this.ensureOptionVisible(index);
394
+ return Boolean(this.listElement);
395
+ }
375
396
  /**
376
397
  * Aciona a seleção programática de uma opção específica.
377
398
  *
@@ -426,7 +447,7 @@ export class SelectList {
426
447
  this.options = this.options.map((o) => ({ ...o, selected: false }));
427
448
  }
428
449
  isSelectAllOption(option) {
429
- if (option.value === SelectList.SELECT_ALL_VALUE || option.value === '__select_all__')
450
+ if (option.value === SELECT_ALL_OPTION_VALUE)
430
451
  return true;
431
452
  const optionLabel = (option.label ?? option.value).trim();
432
453
  return optionLabel === this.selectAllLabel || optionLabel === this.unselectAllLabel;
@@ -442,7 +463,7 @@ export class SelectList {
442
463
  }
443
464
  createSelectAllOption() {
444
465
  return {
445
- value: SelectList.SELECT_ALL_VALUE,
466
+ value: SELECT_ALL_OPTION_VALUE,
446
467
  label: this.selectAllLabel,
447
468
  selected: false,
448
469
  indeterminate: false,
@@ -552,14 +573,7 @@ export class SelectList {
552
573
  return this.options;
553
574
  }
554
575
  this.filteredOptionsCacheKey = cacheKey;
555
- this.filteredOptionsCache = this.options.filter((option) => {
556
- if (this.isSelectAllOption(option))
557
- return this.effectiveMultiple;
558
- const label = this.normalizeSearchText(option.label ?? option.value);
559
- const group = this.normalizeSearchText(option.group);
560
- const value = this.normalizeSearchText(option.value);
561
- return label.includes(normalizedTerm) || group.includes(normalizedTerm) || value.includes(normalizedTerm);
562
- });
576
+ this.filteredOptionsCache = filterSelectOptions(this.options, this.searchTerm, this.selectAllLabel, this.unselectAllLabel);
563
577
  return this.filteredOptionsCache;
564
578
  }
565
579
  getVirtualRows() {
@@ -568,6 +582,9 @@ export class SelectList {
568
582
  return this.virtualRowsCache;
569
583
  }
570
584
  const rows = [];
585
+ if (filteredOptions.length === 0 && this.normalizeSearchText(this.searchTerm)) {
586
+ rows.push({ kind: 'empty', key: 'empty' });
587
+ }
571
588
  let previousGroup;
572
589
  filteredOptions.forEach((option, optionIndex) => {
573
590
  const group = option.group?.trim() || undefined;
@@ -594,27 +611,44 @@ export class SelectList {
594
611
  return rows.findIndex((row) => row.kind === 'option' && row.optionIndex === optionIndex);
595
612
  }
596
613
  getViewportHeight() {
597
- const visibleRowCount = Math.min(this.getVirtualRows().length, this.effectiveVisibleItems);
598
- return visibleRowCount * this.getRowHeight();
614
+ const rows = this.getVirtualRows();
615
+ return this.getRowsHeight(rows, Math.min(rows.length, this.effectiveVisibleItems));
599
616
  }
600
- getRowHeight() {
617
+ getRowHeight(row) {
618
+ if (row?.kind === 'option' && this.isSelectAllOption(row.option)) {
619
+ return this.measuredSelectAllItemHeight ?? this.effectiveItemHeight;
620
+ }
601
621
  return this.measuredItemHeight ?? this.effectiveItemHeight;
602
622
  }
623
+ getRowsHeight(rows, endIndex = rows.length) {
624
+ const rowCount = Math.min(rows.length, Math.max(0, endIndex));
625
+ if (rowCount === 0)
626
+ return 0;
627
+ const itemHeight = this.measuredItemHeight ?? this.effectiveItemHeight;
628
+ return this.getRowHeight(rows[0]) + (rowCount - 1) * itemHeight;
629
+ }
630
+ getRowTop(rows, rowIndex) {
631
+ return this.getRowsHeight(rows, rowIndex);
632
+ }
603
633
  getVisibleRange() {
604
634
  const rows = this.getVirtualRows();
605
- const { startIndex, endIndex } = computeVirtualWindow({
606
- totalItems: rows.length,
607
- itemHeight: this.getRowHeight(),
608
- scrollTop: this.scrollTop,
609
- viewportHeight: this.getViewportHeight(),
610
- overscan: this.effectiveOverscan,
611
- });
612
- return { startIndex, endIndex };
635
+ if (rows.length === 0)
636
+ return { startIndex: 0, endIndex: 0 };
637
+ const viewportHeight = this.getViewportHeight();
638
+ const viewportBottom = this.scrollTop + viewportHeight;
639
+ const firstRowHeight = this.getRowHeight(rows[0]);
640
+ const itemHeight = this.measuredItemHeight ?? this.effectiveItemHeight;
641
+ const firstVisibleIndex = Math.min(rows.length - 1, this.scrollTop < firstRowHeight ? 0 : 1 + Math.floor((this.scrollTop - firstRowHeight) / itemHeight));
642
+ const endIndex = Math.min(rows.length, Math.max(firstVisibleIndex, 1 + Math.ceil((viewportBottom - firstRowHeight) / itemHeight)));
643
+ return {
644
+ startIndex: Math.max(0, firstVisibleIndex - this.effectiveOverscan),
645
+ endIndex: Math.min(rows.length, endIndex + this.effectiveOverscan),
646
+ };
613
647
  }
614
648
  clampScrollPosition() {
615
649
  if (!this.listElement)
616
650
  return;
617
- const totalHeight = this.getVirtualRows().length * this.getRowHeight();
651
+ const totalHeight = this.getRowsHeight(this.getVirtualRows());
618
652
  const maxScrollTop = Math.max(0, totalHeight - this.getViewportHeight());
619
653
  const nextScrollTop = Math.min(Math.max(0, this.listElement.scrollTop), maxScrollTop);
620
654
  if (this.listElement.scrollTop !== nextScrollTop) {
@@ -629,19 +663,69 @@ export class SelectList {
629
663
  return;
630
664
  if (this.measurementFrame !== null)
631
665
  return;
666
+ if (this.measurementInProgress) {
667
+ this.measurementRequested = true;
668
+ return;
669
+ }
632
670
  this.measurementFrame = requestAnimationFrame(async () => {
633
671
  this.measurementFrame = null;
634
- await this.measureItemHeight();
672
+ this.measurementInProgress = true;
673
+ try {
674
+ await this.measureItemHeight();
675
+ }
676
+ finally {
677
+ this.measurementInProgress = false;
678
+ if (this.measurementRequested) {
679
+ this.measurementRequested = false;
680
+ this.scheduleMeasureItemHeight();
681
+ }
682
+ }
635
683
  });
636
684
  }
637
685
  async measureItemHeight() {
638
- const firstOption = this.listElement?.querySelector('br-select-option');
639
- if (!firstOption?.getItemHeight)
640
- return;
641
- const nextHeight = await firstOption.getItemHeight();
642
- if (!nextHeight || nextHeight <= 0 || nextHeight === this.measuredItemHeight)
686
+ const renderedOptions = Array.from(this.listElement?.querySelectorAll('br-select-option') ?? []);
687
+ const originalHeights = renderedOptions.map((element) => element.style.height);
688
+ renderedOptions.forEach((element) => {
689
+ element.style.height = 'auto';
690
+ });
691
+ let measurements;
692
+ try {
693
+ await this.waitForNextFrame();
694
+ measurements = await Promise.allSettled(renderedOptions.map((element) => element.getItemHeight?.()));
695
+ }
696
+ finally {
697
+ renderedOptions.forEach((element, index) => {
698
+ element.style.height = originalHeights[index];
699
+ });
700
+ }
701
+ const measuredOptions = measurements.map((measurement, index) => {
702
+ if (measurement.status === 'rejected')
703
+ throw measurement.reason;
704
+ return { element: renderedOptions[index], height: measurement.value };
705
+ });
706
+ const filteredOptions = this.getFilteredOptions();
707
+ const selectAllOption = measuredOptions.find(({ element }) => {
708
+ const optionIndex = Number(element.dataset.optionIndex);
709
+ const option = filteredOptions[optionIndex];
710
+ return Number.isInteger(optionIndex) && option !== undefined && this.isSelectAllOption(option);
711
+ });
712
+ const regularOption = measuredOptions.find(({ element }) => {
713
+ const optionIndex = Number(element.dataset.optionIndex);
714
+ const option = filteredOptions[optionIndex];
715
+ return Number.isInteger(optionIndex) && option !== undefined && !this.isSelectAllOption(option);
716
+ });
717
+ const nextSelectAllHeight = selectAllOption?.height;
718
+ const nextItemHeight = regularOption?.height;
719
+ const hasSelectAllHeight = Boolean(nextSelectAllHeight && nextSelectAllHeight > 0);
720
+ const hasItemHeight = Boolean(nextItemHeight && nextItemHeight > 0);
721
+ if ((!hasSelectAllHeight || nextSelectAllHeight === this.measuredSelectAllItemHeight) &&
722
+ (!hasItemHeight || nextItemHeight === this.measuredItemHeight)) {
643
723
  return;
644
- this.measuredItemHeight = nextHeight;
724
+ }
725
+ if (nextSelectAllHeight && nextSelectAllHeight > 0)
726
+ this.measuredSelectAllItemHeight = nextSelectAllHeight;
727
+ if (nextItemHeight && nextItemHeight > 0)
728
+ this.measuredItemHeight = nextItemHeight;
645
729
  this.clampScrollPosition();
646
730
  }
647
731
  /**
@@ -660,9 +744,9 @@ export class SelectList {
660
744
  const rowIndex = this.getRowIndexForOption(rows, index);
661
745
  if (rowIndex < 0)
662
746
  return;
663
- const rowHeight = this.getRowHeight();
747
+ const rowHeight = this.getRowHeight(rows[rowIndex]);
664
748
  const viewportHeight = this.getViewportHeight();
665
- const optionTop = rowIndex * rowHeight;
749
+ const optionTop = this.getRowTop(rows, rowIndex);
666
750
  const optionBottom = optionTop + rowHeight;
667
751
  const viewportTop = this.listElement.scrollTop;
668
752
  const viewportBottom = viewportTop + viewportHeight;
@@ -673,7 +757,7 @@ export class SelectList {
673
757
  else if (optionBottom > viewportBottom) {
674
758
  nextScrollTop = optionBottom - viewportHeight;
675
759
  }
676
- const maxScrollTop = Math.max(0, rows.length * rowHeight - viewportHeight);
760
+ const maxScrollTop = Math.max(0, this.getRowsHeight(rows) - viewportHeight);
677
761
  nextScrollTop = Math.min(Math.max(0, nextScrollTop), maxScrollTop);
678
762
  if (nextScrollTop === viewportTop)
679
763
  return;
@@ -688,31 +772,30 @@ export class SelectList {
688
772
  };
689
773
  }
690
774
  renderOption(option, optionIndex, rowIndex) {
691
- const rowHeight = this.getRowHeight();
692
- const optionPart = this.isSelectAllOption(option) ? 'option select-all' : 'option';
693
- return (h("br-select-option", { part: optionPart, active: optionIndex === this.effectiveActiveOptionIndex, "data-option-index": optionIndex, density: this.effectiveDensity, disabled: option.disabled, id: `${this.el.id || 'br-select-list'}-option-${optionIndex}`, indeterminate: option.indeterminate,
694
- // A seleção faz parte da identidade visual renderizada. Incluir o estado
695
- // na chave evita que uma opção virtual reutilizada retenha o snapshot
696
- // interno anterior do br-select-option/br-item.
697
- key: `${option.value}:${option.selected ? 'selected' : 'unselected'}:${option.group ?? ''}`, label: option.label, ref: (element) => {
775
+ const isSelectAllOption = this.isSelectAllOption(option);
776
+ const row = this.getVirtualRows()[rowIndex];
777
+ const rowHeight = this.getRowHeight(row);
778
+ const optionPart = isSelectAllOption ? 'option select-all' : 'option';
779
+ return (h("br-select-option", { part: optionPart, active: optionIndex === this.effectiveActiveOptionIndex, "data-option-index": optionIndex, density: isSelectAllOption ? 'small' : this.effectiveDensity, disabled: option.disabled, id: `${this.el.id || 'br-select-list'}-option-${optionIndex}`, indeterminate: option.indeterminate, key: `${option.value}:${option.selected ? 'selected' : 'unselected'}:${option.group ?? ''}`, label: option.label, ref: (element) => {
698
780
  if (element && option.group)
699
781
  element.setAttribute('group', option.group);
700
782
  }, selected: option.selected, "show-checkbox": this.effectiveMultiple, style: {
701
783
  boxSizing: 'border-box',
702
784
  height: `${rowHeight}px`,
703
785
  position: 'absolute',
704
- top: `${rowIndex * rowHeight}px`,
786
+ top: `${this.getRowTop(this.getVirtualRows(), rowIndex)}px`,
705
787
  left: '0',
706
788
  right: '0',
707
789
  }, value: option.value }, option.content ? h("span", { innerHTML: option.content }) : (option.label ?? option.value)));
708
790
  }
709
791
  renderGroup(row, rowIndex) {
710
- const rowHeight = this.getRowHeight();
792
+ const rows = this.getVirtualRows();
793
+ const rowHeight = this.getRowHeight(rows[rowIndex]);
711
794
  return (h("div", { "aria-hidden": "true", class: "option-group-label", key: row.key, part: "option-group", role: "presentation", style: {
712
795
  boxSizing: 'border-box',
713
796
  height: `${rowHeight}px`,
714
797
  position: 'absolute',
715
- top: `${rowIndex * rowHeight}px`,
798
+ top: `${this.getRowTop(rows, rowIndex)}px`,
716
799
  left: '0',
717
800
  right: '0',
718
801
  } }, row.group));
@@ -726,7 +809,7 @@ export class SelectList {
726
809
  }
727
810
  getVirtualSpacerStyle() {
728
811
  return {
729
- height: `${this.getVirtualRows().length * this.getRowHeight()}px`,
812
+ height: `${this.getRowsHeight(this.getVirtualRows())}px`,
730
813
  position: 'relative',
731
814
  };
732
815
  }
@@ -740,21 +823,46 @@ export class SelectList {
740
823
  }
741
824
  renderVirtualOptions() {
742
825
  const { startIndex, visibleRows } = this.getVirtualVisibleRows();
743
- if (visibleRows.length === 0) {
744
- return (h("div", { part: "empty-option", role: "option", "aria-selected": "false", tabIndex: 0 }, "Nenhum resultado encontrado"));
745
- }
746
- return (h("div", { style: this.getVirtualSpacerStyle() }, visibleRows.map((row, relativeIndex) => {
826
+ const renderedRows = visibleRows.flatMap((row, relativeIndex) => {
747
827
  const rowIndex = startIndex + relativeIndex;
748
828
  if (row.kind === 'group')
749
- return this.renderGroup(row, rowIndex);
750
- return this.renderOption(row.option, row.optionIndex, rowIndex);
751
- })));
829
+ return [this.renderGroup(row, rowIndex)];
830
+ if (row.kind === 'empty') {
831
+ return [
832
+ h("div", { key: row.key, part: "empty-option", role: "status", style: {
833
+ boxSizing: 'border-box',
834
+ height: `${this.getRowHeight(row)}px`,
835
+ position: 'absolute',
836
+ top: `${this.getRowTop(this.getVirtualRows(), rowIndex)}px`,
837
+ left: '0',
838
+ right: '0',
839
+ } }, "Nenhum resultado encontrado"),
840
+ ];
841
+ }
842
+ const option = this.renderOption(row.option, row.optionIndex, rowIndex);
843
+ const nextRow = this.getVirtualRows()[rowIndex + 1];
844
+ if (this.hideDividers || nextRow?.kind !== 'option')
845
+ return [option];
846
+ // O divisor ocupa a borda da linha, sem criar um índice ou altura extra.
847
+ return [
848
+ option,
849
+ h("br-divider", { key: `divider-${row.key}`, part: "option-divider", "aria-hidden": "true", orientation: "horizontal", thickness: "small", marginTop: 0, marginBottom: 0, marginLeft: 0, marginRight: 0, style: {
850
+ position: 'absolute',
851
+ top: `calc(${this.getRowTop(this.getVirtualRows(), rowIndex + 1)}px - var(--surface-width-sm, 1px))`,
852
+ left: '0',
853
+ right: '0',
854
+ pointerEvents: 'none',
855
+ zIndex: '1',
856
+ } }),
857
+ ];
858
+ });
859
+ return h("div", { style: this.getVirtualSpacerStyle() }, renderedRows);
752
860
  }
753
861
  renderLoading() {
754
862
  return (h("div", { part: "loading", role: "status", "aria-live": "polite" }, h("slot", { name: "loading" }, h("br-loading", { density: this.effectiveDensity, label: "Buscando op\u00E7\u00F5es" }))));
755
863
  }
756
864
  render() {
757
- return (h(Host, { key: '47c188f8f3e86d028476b8583d667e4eb412ec78' }, h("div", { key: '36386dc9532a3bd3561e319493ec7b86100be204', class: this.getCssClassMap(), part: "list", ref: (el) => (this.listElement = el), onScroll: this.handleScroll, style: this.getVirtualScrollStyle() }, this.loading ? this.renderLoading() : this.renderVirtualOptions())));
865
+ return (h(Host, { key: 'c4ea2157dc925805d0542eae1a70b67375fcb12c' }, h("div", { key: 'e55d780af8ef05765173998e781f2cf0a4125988', class: this.getCssClassMap(), part: "list", tabIndex: -1, ref: (el) => (this.listElement = el), onScroll: this.handleScroll, style: this.getVirtualScrollStyle() }, this.loading ? this.renderLoading() : this.renderVirtualOptions())));
758
866
  }
759
867
  static get is() { return "br-select-list"; }
760
868
  static get encapsulation() { return "shadow"; }
@@ -792,7 +900,7 @@ export class SelectList {
792
900
  "name": "default",
793
901
  "text": "'medium'"
794
902
  }],
795
- "text": "Define a densidade visual da lista, das op\u00E7\u00F5es e do indicador de carregamento.\nAceita `small`, `medium` ou `large`. Valores inv\u00E1lidos usam `medium`."
903
+ "text": "Define a densidade visual da lista, das op\u00E7\u00F5es regulares e do indicador de carregamento.\nA op\u00E7\u00E3o sint\u00E9tica de selecionar todos permanece com densidade `small`.\nAceita `small`, `medium` ou `large`. Valores inv\u00E1lidos usam `medium`."
796
904
  },
797
905
  "getter": false,
798
906
  "setter": false,
@@ -833,7 +941,7 @@ export class SelectList {
833
941
  },
834
942
  "searchTerm": {
835
943
  "type": "string",
836
- "mutable": false,
944
+ "mutable": true,
837
945
  "complexType": {
838
946
  "original": "string",
839
947
  "resolved": "string",
@@ -946,6 +1054,29 @@ export class SelectList {
946
1054
  "attribute": "overscan",
947
1055
  "defaultValue": "0"
948
1056
  },
1057
+ "hideDividers": {
1058
+ "type": "boolean",
1059
+ "mutable": false,
1060
+ "complexType": {
1061
+ "original": "boolean",
1062
+ "resolved": "boolean",
1063
+ "references": {}
1064
+ },
1065
+ "required": false,
1066
+ "optional": false,
1067
+ "docs": {
1068
+ "tags": [{
1069
+ "name": "default",
1070
+ "text": "false"
1071
+ }],
1072
+ "text": "Oculta os divisores entre op\u00E7\u00F5es consecutivas, sem alterar a altura das linhas."
1073
+ },
1074
+ "getter": false,
1075
+ "setter": false,
1076
+ "reflect": true,
1077
+ "attribute": "hide-dividers",
1078
+ "defaultValue": "false"
1079
+ },
949
1080
  "selectAllLabel": {
950
1081
  "type": "string",
951
1082
  "mutable": false,
@@ -1025,7 +1156,8 @@ export class SelectList {
1025
1156
  "isOpen": {},
1026
1157
  "isMultiple": {},
1027
1158
  "scrollTop": {},
1028
- "measuredItemHeight": {}
1159
+ "measuredItemHeight": {},
1160
+ "measuredSelectAllItemHeight": {}
1029
1161
  };
1030
1162
  }
1031
1163
  static get methods() {
@@ -1287,6 +1419,27 @@ export class SelectList {
1287
1419
  }]
1288
1420
  }
1289
1421
  },
1422
+ "revealOption": {
1423
+ "complexType": {
1424
+ "signature": "(index: number) => Promise<boolean>",
1425
+ "parameters": [{
1426
+ "name": "index",
1427
+ "type": "number",
1428
+ "docs": ""
1429
+ }],
1430
+ "references": {
1431
+ "Promise": {
1432
+ "location": "global",
1433
+ "id": "global::Promise"
1434
+ }
1435
+ },
1436
+ "return": "Promise<boolean>"
1437
+ },
1438
+ "docs": {
1439
+ "text": "Torna o item ativo vis\u00EDvel sem retirar o foco do campo.",
1440
+ "tags": []
1441
+ }
1442
+ },
1290
1443
  "setOptionSelected": {
1291
1444
  "complexType": {
1292
1445
  "signature": "(index: number, selected?: boolean) => Promise<boolean>",
@@ -1351,4 +1504,3 @@ export class SelectList {
1351
1504
  }
1352
1505
  SelectList.SELECT_ALL_LABEL = 'Selecionar todos';
1353
1506
  SelectList.DESELECT_ALL_LABEL = 'Desselecionar todos';
1354
- SelectList.SELECT_ALL_VALUE = 'Alternar todos';
@@ -1 +1 @@
1
- *,*::before,*::after{box-sizing:border-box}:host{line-height:var(--font-line-height-medium);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}main{display:block}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace;font-size:1em}a{background-color:rgba(0,0,0,0)}b,strong{font-weight:bolder}code{font-family:monospace;font-size:1em}small{font-size:80%}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:var(--font-line-height-medium);margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{appearance:none}::-webkit-file-upload-button{appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.d-none{display:none !important}@media(min-width: 576px){.d-sm-block{display:block !important}.d-sm-flex{display:flex !important}}[data-toggle=dropdown]+*{position:absolute}.dropdown{position:relative}.dropdown [data-toggle=dropdown]+*{box-shadow:var(--surface-shadow-sm);left:0;position:absolute;top:100%}.dropdown>.br-notification{left:auto;right:0}.dropdown .br-item{--color: var(--color-light);--color-rgb: var(--color-light-rgb);--text-color: var(--color-light);--interactive: var(--interactive-light);--interactive-rgb: var(--color-rgb);--visited: var(--visited-light);--hover: var(--hover-light);--pressed: var(--pressed-light);--focus-color: var(--focus-color-light);--focus: var(--focus-color-light);--item-padding-y: var(--spacing-scale-2x);background-color:var(--background-light);color:var(--color)}.dropdown .br-item:not(:last-child){border-bottom:1px solid var(--border-color)}.dropdown .br-item.selected{--color: var(--color-dark);--color-rgb: var(--color-dark-rgb);--text-color: var(--color-dark);--interactive: var(--interactive-dark);--interactive-rgb: var(--interactive-dark-rgb);--visited: var(--visited-dark);--hover: var(--hover-dark);--pressed: var(--pressed-dark);--focus-color: var(--focus-color-dark);--focus: var(--focus-color-dark)}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.align-items-center{align-items:center !important}.col,[class*=col-]{padding-left:calc(var(--grid-gutter)*.5);padding-right:calc(var(--grid-gutter)*.5);width:100%}.col{flex:1 0 0%;min-width:8.3333333333%}.col-auto{flex:0 0 auto;width:auto}.col-2{flex-basis:16.6666666667%;max-width:16.6666666667%}.container,.container-fluid,.container-lg{--grid-margin: var(--grid-portrait-margin);--grid-maxwidth: var(--grid-portrait-maxwidth);margin-left:auto;margin-right:auto;max-width:var(--grid-maxwidth);padding-left:var(--grid-margin);padding-right:var(--grid-margin);width:100%}.row{--grid-gutter: var(--grid-portrait-gutter);display:flex;flex-wrap:wrap;margin-left:calc(var(--grid-gutter)*-0.5);margin-right:calc(var(--grid-gutter)*-0.5)}@media(min-width: 576px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tablet-margin)}.row{--grid-gutter: var(--grid-tablet-gutter)}.container{--grid-maxwidth: calc(var(--grid-breakpoint-sm) - var(--grid-tablet-margin))}.col-sm-4{flex-basis:33.3333333333%;max-width:33.3333333333%}}@media(min-width: 992px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tablet-margin)}.row{--grid-gutter: var(--grid-tablet-gutter)}.container{--grid-maxwidth: calc(var(--grid-breakpoint-md) - var(--grid-tablet-margin))}}@media(min-width: 1280px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-desktop-margin)}.row{--grid-gutter: var(--grid-desktop-gutter)}.container,.container-lg{--grid-maxwidth: calc(var(--grid-breakpoint-lg) - var(--grid-desktop-margin))}.col-lg-3{flex-basis:25%;max-width:25%}}@media(min-width: 1600px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tv-margin)}.row{--grid-gutter: var(--grid-tv-gutter)}.container,.container-lg{--grid-maxwidth: calc(var(--grid-breakpoint-xl) - var(--grid-tv-margin))}}.ease{animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1)}.ease-out{animation-timing-function:cubic-bezier(0, 0, 0.58, 1)}.ease-in-out{animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1)}.fast{animation-duration:var(--duration-fast)}.slow{animation-duration:var(--duration-slow)}.mt-1{margin-top:var(--spacing-scale-half) !important}.mr-1{margin-right:var(--spacing-scale-half) !important}.mb-1{margin-bottom:var(--spacing-scale-half) !important}.ml-1{margin-left:var(--spacing-scale-half) !important}.mx-3{margin-left:var(--spacing-scale-2x) !important;margin-right:var(--spacing-scale-2x) !important}.mb-4{margin-bottom:var(--spacing-scale-3x) !important}.ml-auto{margin-left:auto !important}.pt-half{padding-top:var(--spacing-scale-half) !important}@media(min-width: 576px){.ml-sm-0{margin-left:var(--spacing-scale-default) !important}}.highlight{background:var(--status-highlight-background) linear-gradient(var(--status-highlight-overlay), var(--status-highlight-overlay));color:var(--status-highlight-text);padding:0 var(--spacing-scale-half)}[disabled],.disabled{cursor:not-allowed;opacity:var(--disabled)}[disabled] *,.disabled *{pointer-events:none}fieldset[disabled]{opacity:1}.text-center{text-align:center !important}.text-right{text-align:right !important}.text-nowrap{white-space:nowrap !important}.text-uppercase{text-transform:uppercase !important}.text-bold{font-weight:700 !important}.text-base{font-size:var(--font-size-scale-base) !important}.text-down-01{font-size:var(--font-size-scale-down-01) !important}@media(min-width: 576px){.text-sm-center{text-align:center !important}.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}}p{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-2x);margin-top:0}p a{text-decoration:underline}@media(min-width: 576px){p{font-size:var(--font-size-scale-up-01)}}a{--focus-offset: var(--spacing-scale-half)}a:focus{outline:none}a.focus-visible,a:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}a:not(:disabled):hover{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}a:not(:disabled):active{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}a{color:var(--interactive);text-decoration:none}.main-content a{text-decoration:underline}button{cursor:pointer}img{max-width:100%;vertical-align:middle}h2,.h2{color:var(--color);font-size:var(--font-size-scale-up-03);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2xh);margin-top:var(--spacing-scale-3xh);padding-bottom:var(--spacing-scale-2xh)}@media(min-width: 576px){.h2,h2{font-size:var(--font-size-scale-up-05);font-weight:var(--font-weight-regular)}}ul,ol{margin-bottom:var(--spacing-scale-2x);margin-top:0;padding:0 0 0 var(--spacing-scale-5x)}table{--table-background: var(--background);--table-color: var(--color);--table-border-color: var(--gray-20);--table-border-style: solid;--table-border-width: 1px;--table-hover: var(--color-rgb);--table-padding: var(--spacing-scale-3x);--table-font-weight: var(--font-weight-medium);--table-th-background: var(--background-alternative);--table-th-font-weight: var(--font-weight-semi-bold);--table-row-size: var(--spacing-scale-2x);border-collapse:collapse;width:100%}tr.selected,tr.is-selected{--color: var(--color-dark);--color-rgb: var(--color-dark-rgb);--text-color: var(--color-dark);--interactive: var(--interactive-dark);--interactive-rgb: var(--interactive-dark-rgb);--visited: var(--visited-dark);--hover: var(--hover-dark);--pressed: var(--pressed-dark);--focus-color: var(--focus-color-dark);--focus: var(--focus-color-dark)}label,.label{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half)}fieldset,.fieldset{border:var(--surface-width-none);margin-bottom:var(--spacing-scale-5x);margin-top:0;padding:0}legend,.legend{color:var(--color);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2x);margin-top:var(--spacing-scale-2x)}::placeholder,.placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}input,textarea,.input{color:var(--color-light);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-half)}code,.code{background:var(--gray-5);border-radius:4px;color:var(--gray-80);display:inline-block;font-family:monospace;font-size:var(--font-size-scale-base);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-low);padding:var(--spacing-scale-half)}pre,.pre{background:var(--gray-5);margin:var(--spacing-scale-2x) 0 var(--spacing-scale-4x);padding:var(--spacing-scale-2x)}pre code,.pre code{display:inline;padding:0}*[data-toggle=collapse]:not(:disabled):hover{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}*[data-toggle=collapse]:focus{outline:none}*[data-toggle=collapse].focus-visible,*[data-toggle=collapse]:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}@media(prefers-reduced-motion: reduce){:host,:host::before,:host::after,:host *,:host *::before,:host *::after{animation:none !important;scroll-behavior:auto !important;transition:none !important}}:host-context([data-wbc-reduced-motion=true])::before,:host-context([data-wbc-reduced-motion=true])::after,:host-context([data-wbc-reduced-motion=true]) *,:host-context([data-wbc-reduced-motion=true]) *::before,:host-context([data-wbc-reduced-motion=true]) *::after{animation:none !important;scroll-behavior:auto !important;transition:none !important}:host{--br-select-option-bg-color: var(--bg-color, var(--background, var(--background-color, #fff)));contain:paint;display:block;background-color:var(--br-select-option-bg-color);line-height:0;overflow:hidden;position:relative}:host(:focus-within){contain:none;overflow:visible}:host([active]){contain:none;overflow:visible;z-index:1}:host([active])::after{border:var(--focus-width) var(--focus-style) var(--focus);box-sizing:border-box;content:"";inset:0;pointer-events:none;position:absolute}.br-select-option{opacity:1 !important}br-item{--br-item-bg-color: var(--br-select-option-bg-color);background-color:var(--br-select-option-bg-color);display:block;line-height:normal;overflow:visible;width:100%}br-checkbox{--border-color: var(--gray-40, #888);--disabled: 1;pointer-events:none}:host(:not([disabled])) br-item::part(item){cursor:pointer}:host([disabled]){background:var(--br-select-option-bg-color) !important;cursor:not-allowed}br-item[disabled]{--br-item-bg-color: var(--br-select-option-bg-color);background:var(--br-select-option-bg-color) !important;cursor:not-allowed}:host([disabled]) ::slotted(*){opacity:var(--disabled) !important}.br-select-option-label{display:block;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host([disabled]) .br-select-option-label{opacity:var(--disabled) !important}.br-select-option-label ::slotted(*){display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
1
+ *,*::before,*::after{box-sizing:border-box}:host{line-height:var(--font-line-height-medium);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}main{display:block}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace;font-size:1em}a{background-color:rgba(0,0,0,0)}b,strong{font-weight:bolder}small{font-size:80%}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:var(--font-line-height-medium);margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{appearance:none}::-webkit-file-upload-button{appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.d-none{display:none !important}@media(min-width: 576px){.d-sm-block{display:block !important}.d-sm-flex{display:flex !important}}[data-toggle=dropdown]+*{position:absolute}.dropdown{position:relative}.dropdown [data-toggle=dropdown]+*{box-shadow:var(--surface-shadow-sm);left:0;position:absolute;top:100%}.dropdown>.br-notification{left:auto;right:0}.dropdown .br-item{--color: var(--color-light);--color-rgb: var(--color-light-rgb);--text-color: var(--color-light);--interactive: var(--interactive-light);--interactive-rgb: var(--color-rgb);--visited: var(--visited-light);--hover: var(--hover-light);--pressed: var(--pressed-light);--focus-color: var(--focus-color-light);--focus: var(--focus-color-light);--item-padding-y: var(--spacing-scale-2x);background-color:var(--background-light);color:var(--color)}.dropdown .br-item:not(:last-child){border-bottom:1px solid var(--border-color)}.dropdown .br-item.selected{--color: var(--color-dark);--color-rgb: var(--color-dark-rgb);--text-color: var(--color-dark);--interactive: var(--interactive-dark);--interactive-rgb: var(--interactive-dark-rgb);--visited: var(--visited-dark);--hover: var(--hover-dark);--pressed: var(--pressed-dark);--focus-color: var(--focus-color-dark);--focus: var(--focus-color-dark)}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.align-items-center{align-items:center !important}.col,[class*=col-]{padding-left:calc(var(--grid-gutter)*.5);padding-right:calc(var(--grid-gutter)*.5);width:100%}.col{flex:1 0 0%;min-width:8.3333333333%}.col-auto{flex:0 0 auto;width:auto}.col-2{flex-basis:16.6666666667%;max-width:16.6666666667%}.container,.container-fluid,.container-lg{--grid-margin: var(--grid-portrait-margin);--grid-maxwidth: var(--grid-portrait-maxwidth);margin-left:auto;margin-right:auto;max-width:var(--grid-maxwidth);padding-left:var(--grid-margin);padding-right:var(--grid-margin);width:100%}.row{--grid-gutter: var(--grid-portrait-gutter);display:flex;flex-wrap:wrap;margin-left:calc(var(--grid-gutter)*-0.5);margin-right:calc(var(--grid-gutter)*-0.5)}@media(min-width: 576px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tablet-margin)}.row{--grid-gutter: var(--grid-tablet-gutter)}.container{--grid-maxwidth: calc(var(--grid-breakpoint-sm) - var(--grid-tablet-margin))}.col-sm-4{flex-basis:33.3333333333%;max-width:33.3333333333%}}@media(min-width: 992px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tablet-margin)}.row{--grid-gutter: var(--grid-tablet-gutter)}.container{--grid-maxwidth: calc(var(--grid-breakpoint-md) - var(--grid-tablet-margin))}}@media(min-width: 1280px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-desktop-margin)}.row{--grid-gutter: var(--grid-desktop-gutter)}.container,.container-lg{--grid-maxwidth: calc(var(--grid-breakpoint-lg) - var(--grid-desktop-margin))}.col-lg-3{flex-basis:25%;max-width:25%}}@media(min-width: 1600px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tv-margin)}.row{--grid-gutter: var(--grid-tv-gutter)}.container,.container-lg{--grid-maxwidth: calc(var(--grid-breakpoint-xl) - var(--grid-tv-margin))}}.ease{animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1)}.ease-out{animation-timing-function:cubic-bezier(0, 0, 0.58, 1)}.ease-in-out{animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1)}.fast{animation-duration:var(--duration-fast)}.slow{animation-duration:var(--duration-slow)}.mt-1{margin-top:var(--spacing-scale-half) !important}.mr-1{margin-right:var(--spacing-scale-half) !important}.mb-1{margin-bottom:var(--spacing-scale-half) !important}.ml-1{margin-left:var(--spacing-scale-half) !important}.mx-3{margin-left:var(--spacing-scale-2x) !important;margin-right:var(--spacing-scale-2x) !important}.mb-4{margin-bottom:var(--spacing-scale-3x) !important}.ml-auto{margin-left:auto !important}.pt-half{padding-top:var(--spacing-scale-half) !important}@media(min-width: 576px){.ml-sm-0{margin-left:var(--spacing-scale-default) !important}}.highlight{background:var(--status-highlight-background) linear-gradient(var(--status-highlight-overlay), var(--status-highlight-overlay));color:var(--status-highlight-text);padding:0 var(--spacing-scale-half)}[disabled],.disabled{cursor:not-allowed;opacity:var(--disabled)}[disabled] *,.disabled *{pointer-events:none}fieldset[disabled]{opacity:1}.text-center{text-align:center !important}.text-right{text-align:right !important}.text-nowrap{white-space:nowrap !important}.text-uppercase{text-transform:uppercase !important}.text-bold{font-weight:700 !important}.text-base{font-size:var(--font-size-scale-base) !important}.text-down-01{font-size:var(--font-size-scale-down-01) !important}@media(min-width: 576px){.text-sm-center{text-align:center !important}.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}}p{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-2x);margin-top:0}p a{text-decoration:underline}@media(min-width: 576px){p{font-size:var(--font-size-scale-up-01)}}a{--focus-offset: var(--spacing-scale-half)}a:focus{outline:none}a.focus-visible,a:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}a:not(:disabled):hover{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}a:not(:disabled):active{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}a{color:var(--interactive);text-decoration:none}.main-content a{text-decoration:underline}button{cursor:pointer}img{max-width:100%;vertical-align:middle}h2,.h2{color:var(--color);font-size:var(--font-size-scale-up-03);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2xh);margin-top:var(--spacing-scale-3xh);padding-bottom:var(--spacing-scale-2xh)}@media(min-width: 576px){.h2,h2{font-size:var(--font-size-scale-up-05);font-weight:var(--font-weight-regular)}}ul,ol{margin-bottom:var(--spacing-scale-2x);margin-top:0;padding:0 0 0 var(--spacing-scale-5x)}table{--table-background: var(--background);--table-color: var(--color);--table-border-color: var(--gray-20);--table-border-style: solid;--table-border-width: 1px;--table-hover: var(--color-rgb);--table-padding: var(--spacing-scale-3x);--table-font-weight: var(--font-weight-medium);--table-th-background: var(--background-alternative);--table-th-font-weight: var(--font-weight-semi-bold);--table-row-size: var(--spacing-scale-2x);border-collapse:collapse;width:100%}tr.selected,tr.is-selected{--color: var(--color-dark);--color-rgb: var(--color-dark-rgb);--text-color: var(--color-dark);--interactive: var(--interactive-dark);--interactive-rgb: var(--interactive-dark-rgb);--visited: var(--visited-dark);--hover: var(--hover-dark);--pressed: var(--pressed-dark);--focus-color: var(--focus-color-dark);--focus: var(--focus-color-dark)}label,.label{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half)}fieldset,.fieldset{border:var(--surface-width-none);margin-bottom:var(--spacing-scale-5x);margin-top:0;padding:0}legend,.legend{color:var(--color);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2x);margin-top:var(--spacing-scale-2x)}::placeholder,.placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}input,textarea,.input{color:var(--color-light);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-half)}pre,.pre{background:var(--gray-5);margin:var(--spacing-scale-2x) 0 var(--spacing-scale-4x);padding:var(--spacing-scale-2x)}*[data-toggle=collapse]:not(:disabled):hover{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}*[data-toggle=collapse]:focus{outline:none}*[data-toggle=collapse].focus-visible,*[data-toggle=collapse]:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}@media(prefers-reduced-motion: reduce){:host,:host::before,:host::after,:host *,:host *::before,:host *::after{animation:none !important;scroll-behavior:auto !important;transition:none !important}}:host-context([data-wbc-reduced-motion=true])::before,:host-context([data-wbc-reduced-motion=true])::after,:host-context([data-wbc-reduced-motion=true]) *,:host-context([data-wbc-reduced-motion=true]) *::before,:host-context([data-wbc-reduced-motion=true]) *::after{animation:none !important;scroll-behavior:auto !important;transition:none !important}:host{--br-select-option-bg-color: var(--bg-color, var(--background, var(--background-color, #fff)));contain:paint;display:block;background-color:var(--br-select-option-bg-color);line-height:0;overflow:hidden;position:relative}:host(:focus-within){contain:none;overflow:visible}:host([active]){contain:none;overflow:visible;z-index:1}:host([active])::after{border:var(--focus-width) var(--focus-style) var(--focus);box-sizing:border-box;content:"";inset:0;pointer-events:none;position:absolute}:host([part~=select-all]){--br-select-option-bg-color: var(--gray-2)}:host([part~=select-all]) .br-select-option-label{font-weight:var(--font-weight-semi-bold)}.br-select-option{opacity:1 !important}br-item{--br-item-bg-color: var(--br-select-option-bg-color);background-color:var(--br-select-option-bg-color);display:block;line-height:normal;overflow:visible;width:100%}:host(:not([disabled])) br-item:hover{--br-item-bg-color: color-mix(in srgb, var(--color) calc(var(--surface-opacity-xs) * 100%), transparent)}:host(:not([disabled])) br-item:active{--br-item-bg-color: color-mix(in srgb, var(--color) calc(var(--surface-opacity-md) * 100%), transparent)}:host([selected]) br-item,:host([selected]) br-item:hover,:host([selected]) br-item:active{--br-item-bg-color: var(--blue-warm-vivid-50)}:host([selected]:not([disabled])) br-item:active{--br-item-bg-color: color-mix(in srgb, var(--color) calc(var(--surface-opacity-md) * 100%), transparent)}:host([selected]) br-item::part(item){background-color:var(--blue-warm-vivid-50)}:host([selected]:not([disabled])) br-item:active::part(item){background-color:color-mix(in srgb, var(--blue-warm-vivid-50) calc(var(--surface-opacity-md) * 100%), transparent);background-image:none}:host(:not([disabled]):active) br-item::part(item){background-color:color-mix(in srgb, var(--color) calc(var(--surface-opacity-md) * 100%), transparent);box-shadow:var(--surface-shadow-none);cursor:pointer}br-item::part(item){align-items:center}br-checkbox{--border-color: var(--gray-40, #888);--disabled: 1;align-self:center;display:inline-flex;align-items:center;margin-block:0;pointer-events:none}:host(:not([disabled])) br-item::part(item){cursor:pointer}:host(:not([disabled])) br-item:active::part(item){box-shadow:var(--surface-shadow-none);cursor:pointer}:host([disabled]){background:var(--br-select-option-bg-color) !important;cursor:not-allowed}br-item[disabled]{--br-item-bg-color: var(--br-select-option-bg-color);background:var(--br-select-option-bg-color) !important;cursor:not-allowed}:host([disabled]) ::slotted(*){opacity:var(--disabled) !important}.br-select-option-label{display:block;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host([disabled]) .br-select-option-label{opacity:var(--disabled) !important}.br-select-option-label ::slotted(*){display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
@@ -3,6 +3,7 @@
3
3
  * © https://serpro.gov.br/ - MIT License.
4
4
  */
5
5
  import { Host, h } from "@stencil/core";
6
+ import { findComposedOwner } from "../../../shared/utils/ownership";
6
7
  import { resolveDensity } from "../../../shared/utils/props";
7
8
  import { EMPTY_VALUE_WARNING, MISSING_VALUE_WARNING } from "../select.constants";
8
9
  /**
@@ -78,13 +79,17 @@ export class SelectOption {
78
79
  this.handleActivation = () => {
79
80
  if (this.disabled)
80
81
  return;
81
- const nextSelected = !this.selected;
82
- if (this.isControlledBySelect)
82
+ const nextSelected = this.isControlledBySingleSelect && this.selected ? true : !this.selected;
83
+ if (this.isControlledBySelect) {
84
+ this.lastStateChangeKey = '';
83
85
  this.emitStateChange(nextSelected);
86
+ }
84
87
  else
85
88
  this.applySelection(nextSelected);
86
89
  };
87
90
  this.handleKeyDown = (event) => {
91
+ if (this.isControlledBySelect)
92
+ return;
88
93
  if (event.key !== 'Enter' && event.key !== ' ')
89
94
  return;
90
95
  event.preventDefault();
@@ -135,6 +140,10 @@ export class SelectOption {
135
140
  // consolida a seleção e atualiza as demais opções por meio do evento.
136
141
  this.applySelection(nextSelected);
137
142
  }
143
+ get isControlledBySingleSelect() {
144
+ const owner = findComposedOwner(this.el, 'br-select');
145
+ return owner !== null && !(owner.multiple ?? owner.isMultiple);
146
+ }
138
147
  emitStateChange(selected = this.selected) {
139
148
  const detail = {
140
149
  disabled: this.disabled,
@@ -171,7 +180,7 @@ export class SelectOption {
171
180
  */
172
181
  applySelection(selected) {
173
182
  this.indeterminate = false;
174
- this.selected = selected;
183
+ this.selected = selected ?? false;
175
184
  this.emitStateChange();
176
185
  }
177
186
  getCssClassMap() {
@@ -240,7 +249,7 @@ export class SelectOption {
240
249
  return this.normalizeText(this.el.textContent || '');
241
250
  }
242
251
  render() {
243
- return (h(Host, { key: '5897310b67f7bbf295e052538b92e405ed3ff24d', part: "option", exportparts: "checkbox:checkbox, checkbox:option-checkbox", "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.getAccessibleLabel(), "aria-selected": this.selected ? 'true' : 'false', role: "option", tabindex: "-1", onClickCapture: this.handleActivation, onKeyDown: this.handleKeyDown, onMouseEnter: () => {
252
+ return (h(Host, { key: '62d927d3fc103d76f2c030c931ac1e1802f5c468', part: this.el.getAttribute('part') || 'option', exportparts: "checkbox:checkbox, checkbox:option-checkbox", "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.getAccessibleLabel(), "aria-selected": this.selected ? 'true' : 'false', role: "option", tabindex: "-1", onClickCapture: this.handleActivation, onKeyDown: this.handleKeyDown, onMouseEnter: () => {
244
253
  this.el.dispatchEvent(new CustomEvent('brInternalSelectOptionHover', {
245
254
  bubbles: true,
246
255
  composed: true,
@@ -252,7 +261,7 @@ export class SelectOption {
252
261
  composed: true,
253
262
  detail: { label: this.getResolvedLabel(), value: this.getResolvedValue() },
254
263
  }));
255
- } }, h("br-item", { key: 'afff7ce7c07f79fad60f5b09a618a08b23a91afb', class: this.getCssClassMap(), density: this.effectiveDensity, disabled: this.disabled, active: this.active, selected: this.selected }, this.showCheckbox && (h("br-checkbox", { key: 'b6c6b32e98221cf28a822a304ee330af21206b96', exportparts: "input:checkbox, input:option-checkbox", slot: "start", checked: this.selected, disabled: true, indeterminate: this.indeterminate, name: this.getResolvedValue(), "aria-hidden": "true" })), h("span", { key: '394f225cae7fbae52889b39c4b876c477a32c7ea', class: "br-select-option-label" }, h("slot", { key: '4e26a8461a59111a8998276f554f1ebd38a5761e' }, this.getResolvedLabel())))));
264
+ } }, h("br-item", { key: '1c46f284774a8db5e8b805a75cfde08709ae1da9', class: this.getCssClassMap(), density: this.effectiveDensity, disabled: this.disabled, selected: this.selected }, this.showCheckbox && (h("br-checkbox", { key: 'a7164ca2d9f75dff3dde0d882591dd6eb1436a3e', exportparts: "input:checkbox, input:option-checkbox", slot: "start", checked: this.selected, disabled: true, indeterminate: this.indeterminate, name: this.getResolvedValue(), "aria-hidden": "true" })), h("span", { key: '35e6dae591af64c5e077ba5e9c5817a287644093', class: "br-select-option-label" }, h("slot", { key: 'deabf1daf900d9aca934a2c00f5809e2e9862729' }, this.getResolvedLabel())))));
256
265
  }
257
266
  static get is() { return "br-select-option"; }
258
267
  static get encapsulation() { return "shadow"; }