@govbr-ds/webcomponents 2.1.0 → 2.1.2

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 (866) hide show
  1. package/README.md +0 -11
  2. package/cem/custom-elements.json +272 -71
  3. package/dist/cjs/app-globals-DcqHuMBv.js +9 -0
  4. package/dist/cjs/br-avatar.cjs.entry.js +248 -0
  5. package/dist/cjs/br-breadcrumb-item.cjs.entry.js +45 -0
  6. package/dist/cjs/br-breadcrumb.cjs.entry.js +443 -0
  7. package/dist/cjs/br-button_2.cjs.entry.js +280 -0
  8. package/dist/cjs/br-card.cjs.entry.js +111 -0
  9. package/dist/cjs/br-carousel-page.cjs.entry.js +80 -0
  10. package/dist/cjs/br-carousel.cjs.entry.js +565 -0
  11. package/dist/cjs/br-checkbox-group.cjs.entry.js +118 -0
  12. package/dist/cjs/br-checkbox.cjs.entry.js +288 -0
  13. package/dist/cjs/br-checkgroup.cjs.entry.js +20 -0
  14. package/dist/cjs/br-collapse_2.cjs.entry.js +683 -0
  15. package/dist/cjs/br-cookiebar-cookie.cjs.entry.js +83 -0
  16. package/dist/cjs/br-cookiebar-group.cjs.entry.js +309 -0
  17. package/dist/cjs/br-cookiebar-header.cjs.entry.js +39 -0
  18. package/dist/cjs/br-cookiebar-link.cjs.entry.js +55 -0
  19. package/dist/cjs/br-cookiebar-note-group.cjs.entry.js +70 -0
  20. package/dist/cjs/br-cookiebar-note.cjs.entry.js +25 -0
  21. package/dist/cjs/br-cookiebar.cjs.entry.js +758 -0
  22. package/dist/cjs/br-crumb.cjs.entry.js +51 -0
  23. package/dist/cjs/br-date-picker_3.cjs.entry.js +2447 -0
  24. package/dist/cjs/br-datetime-picker.cjs.entry.js +1886 -0
  25. package/dist/cjs/br-divider.cjs.entry.js +225 -0
  26. package/dist/cjs/br-dropdown_2.cjs.entry.js +2000 -0
  27. package/dist/cjs/br-footer-category.cjs.entry.js +102 -0
  28. package/dist/cjs/br-footer-item.cjs.entry.js +52 -0
  29. package/dist/cjs/br-footer-legal.cjs.entry.js +41 -0
  30. package/dist/cjs/br-footer-logo.cjs.entry.js +104 -0
  31. package/dist/cjs/br-footer-social.cjs.entry.js +71 -0
  32. package/dist/cjs/br-footer.cjs.entry.js +92 -0
  33. package/dist/cjs/br-header-function.cjs.entry.js +142 -0
  34. package/dist/cjs/br-header-link.cjs.entry.js +60 -0
  35. package/dist/cjs/br-header-list.cjs.entry.js +279 -0
  36. package/dist/cjs/br-header-logo.cjs.entry.js +178 -0
  37. package/dist/cjs/br-header.cjs.entry.js +642 -0
  38. package/dist/cjs/br-icon.cjs.entry.js +485 -0
  39. package/dist/cjs/br-input.cjs.entry.js +599 -0
  40. package/dist/cjs/br-item.cjs.entry.js +367 -0
  41. package/dist/cjs/br-link.cjs.entry.js +133 -0
  42. package/dist/cjs/br-loading.cjs.entry.js +505 -0
  43. package/dist/cjs/br-magic-button.cjs.entry.js +93 -0
  44. package/dist/cjs/br-menu-group.cjs.entry.js +23 -0
  45. package/dist/cjs/br-menu-header.cjs.entry.js +47 -0
  46. package/dist/cjs/br-menu-info.cjs.entry.js +38 -0
  47. package/dist/cjs/br-menu-item.cjs.entry.js +79 -0
  48. package/dist/cjs/br-menu-link.cjs.entry.js +56 -0
  49. package/dist/cjs/br-menu-list.cjs.entry.js +149 -0
  50. package/dist/cjs/br-menu-logo.cjs.entry.js +75 -0
  51. package/dist/cjs/br-menu-social.cjs.entry.js +65 -0
  52. package/dist/cjs/br-menu.cjs.entry.js +993 -0
  53. package/dist/cjs/br-modal.cjs.entry.js +496 -0
  54. package/dist/cjs/br-notification-body.cjs.entry.js +71 -0
  55. package/dist/cjs/br-notification-header.cjs.entry.js +48 -0
  56. package/dist/cjs/br-notification-item.cjs.entry.js +110 -0
  57. package/dist/cjs/br-notification.cjs.entry.js +334 -0
  58. package/dist/cjs/br-pagination.cjs.entry.js +884 -0
  59. package/dist/cjs/br-radio-group.cjs.entry.js +428 -0
  60. package/dist/cjs/br-radio.cjs.entry.js +357 -0
  61. package/dist/cjs/br-scrim.cjs.entry.js +1336 -0
  62. package/dist/cjs/br-select-input_3.cjs.entry.js +988 -0
  63. package/dist/cjs/br-sign-in.cjs.entry.js +126 -0
  64. package/dist/cjs/br-skip-link-item.cjs.entry.js +20 -0
  65. package/dist/cjs/br-skip-link.cjs.entry.js +362 -0
  66. package/dist/cjs/br-skiplink-item.cjs.entry.js +192 -0
  67. package/dist/cjs/br-slider.cjs.entry.js +687 -0
  68. package/dist/cjs/br-step_2.cjs.entry.js +628 -0
  69. package/dist/cjs/br-switch.cjs.entry.js +245 -0
  70. package/dist/cjs/br-tab-item.cjs.entry.js +185 -0
  71. package/dist/cjs/br-tab.cjs.entry.js +397 -0
  72. package/dist/cjs/br-table-body.cjs.entry.js +37 -0
  73. package/dist/cjs/br-table-cell.cjs.entry.js +184 -0
  74. package/dist/cjs/br-table-header-cell.cjs.entry.js +173 -0
  75. package/dist/cjs/br-table-header.cjs.entry.js +37 -0
  76. package/dist/cjs/br-table-row.cjs.entry.js +81 -0
  77. package/dist/cjs/br-table.cjs.entry.js +680 -0
  78. package/dist/cjs/br-tag.cjs.entry.js +493 -0
  79. package/dist/cjs/br-textarea.cjs.entry.js +306 -0
  80. package/dist/cjs/br-tooltip.cjs.entry.js +627 -0
  81. package/dist/cjs/br-upload.cjs.entry.js +581 -0
  82. package/dist/cjs/br-wizard-panel.cjs.entry.js +54 -0
  83. package/dist/cjs/br-wizard.cjs.entry.js +708 -0
  84. package/dist/cjs/breakpoint-observer-P8veqXg7.js +144 -0
  85. package/dist/cjs/clamp-Co_hWptd.js +25 -0
  86. package/dist/cjs/cookiebar.utils-CB1gQwZ4.js +18 -0
  87. package/dist/cjs/datetime-picker-constants-B5pWeOn1.js +3827 -0
  88. package/dist/cjs/event-CmVdNHxl.js +56 -0
  89. package/dist/cjs/floating-surface-dismiss-ccdiD0KF.js +63 -0
  90. package/dist/cjs/floating-ui-MBI1osio.js +136 -0
  91. package/dist/cjs/floating-ui.dom-BUSTaaxR.js +1715 -0
  92. package/dist/cjs/focus-DuywwJPR.js +30 -0
  93. package/dist/cjs/getNextElement-R9l3JtM9.js +31 -0
  94. package/dist/cjs/iconify-icon-DfODV9bf.js +2307 -0
  95. package/dist/cjs/id-CjRFMzf6.js +20 -0
  96. package/dist/cjs/index-C92n55ch.js +678 -0
  97. package/dist/cjs/index-CRdcutym.js +3287 -0
  98. package/dist/cjs/index.cjs.js +12 -0
  99. package/dist/cjs/isNil-DO5zWc3l.js +19 -0
  100. package/dist/cjs/isValid-Fu3kaWNn.js +3694 -0
  101. package/dist/cjs/loader.cjs.js +17 -0
  102. package/dist/cjs/native-dialog--Ewqm4w0.js +49 -0
  103. package/dist/cjs/navigation-AbzwcRCU.js +25 -0
  104. package/dist/cjs/parts-D5K3ae2C.js +19 -0
  105. package/dist/cjs/props-CScmBvKd.js +24 -0
  106. package/dist/cjs/raf-batcher-yc87a4dS.js +55 -0
  107. package/dist/cjs/slot-DAllytTj.js +48 -0
  108. package/dist/cjs/swipe-BU8_XE9f.js +345 -0
  109. package/dist/cjs/table-constants-BOPSay0B.js +183 -0
  110. package/dist/cjs/validator-CTCajtT9.js +123 -0
  111. package/dist/cjs/webcomponents.cjs.js +50 -0
  112. package/dist/collection/assets/icon-search.svg +6 -0
  113. package/dist/collection/assets/logo-negative.svg +1 -0
  114. package/dist/collection/assets/logo-positive.svg +1 -0
  115. package/dist/collection/assets/wc.svg +1 -0
  116. package/dist/collection/collection-manifest.json +113 -0
  117. package/dist/collection/components/avatar/avatar.css +1 -0
  118. package/dist/collection/components/avatar/avatar.js +589 -0
  119. package/dist/collection/components/avatar/avatar.types.js +1 -0
  120. package/dist/collection/components/breadcrumb/breadcrumb-item/breadcrumb-item.js +166 -0
  121. package/dist/collection/components/breadcrumb/breadcrumb.css +1 -0
  122. package/dist/collection/components/breadcrumb/breadcrumb.js +619 -0
  123. package/dist/collection/components/breadcrumb/breadcrumb.types.js +1 -0
  124. package/dist/collection/components/breadcrumb/crumb/crumb.js +175 -0
  125. package/dist/collection/components/button/button.css +1 -0
  126. package/dist/collection/components/button/button.js +546 -0
  127. package/dist/collection/components/button/button.types.js +1 -0
  128. package/dist/collection/components/card/card.css +1 -0
  129. package/dist/collection/components/card/card.js +225 -0
  130. package/dist/collection/components/carousel/carousel-page/carousel-page.css +1 -0
  131. package/dist/collection/components/carousel/carousel-page/carousel-page.js +195 -0
  132. package/dist/collection/components/carousel/carousel.css +1 -0
  133. package/dist/collection/components/carousel/carousel.js +1217 -0
  134. package/dist/collection/components/carousel/carousel.types.js +1 -0
  135. package/dist/collection/components/checkbox/checkbox.css +1 -0
  136. package/dist/collection/components/checkbox/checkbox.js +823 -0
  137. package/dist/collection/components/checkbox/checkbox.types.js +1 -0
  138. package/dist/collection/components/checkbox-group/checkbox-group.css +1 -0
  139. package/dist/collection/components/checkbox-group/checkbox-group.js +268 -0
  140. package/dist/collection/components/checkgroup/checkgroup.js +166 -0
  141. package/dist/collection/components/collapse/collapse.css +1 -0
  142. package/dist/collection/components/collapse/collapse.js +642 -0
  143. package/dist/collection/components/collapse/collapse.types.js +1 -0
  144. package/dist/collection/components/cookiebar/cookiebar-cookie/cookiebar-cookie.css +1 -0
  145. package/dist/collection/components/cookiebar/cookiebar-cookie/cookiebar-cookie.js +529 -0
  146. package/dist/collection/components/cookiebar/cookiebar-group/cookiebar-group.css +1 -0
  147. package/dist/collection/components/cookiebar/cookiebar-group/cookiebar-group.js +628 -0
  148. package/dist/collection/components/cookiebar/cookiebar-header/cookiebar-header.css +1 -0
  149. package/dist/collection/components/cookiebar/cookiebar-header/cookiebar-header.js +165 -0
  150. package/dist/collection/components/cookiebar/cookiebar-link/cookiebar-link.css +1 -0
  151. package/dist/collection/components/cookiebar/cookiebar-link/cookiebar-link.js +201 -0
  152. package/dist/collection/components/cookiebar/cookiebar-note/cookiebar-note.css +1 -0
  153. package/dist/collection/components/cookiebar/cookiebar-note/cookiebar-note.js +100 -0
  154. package/dist/collection/components/cookiebar/cookiebar-note-group/cookiebar-note-group.css +1 -0
  155. package/dist/collection/components/cookiebar/cookiebar-note-group/cookiebar-note-group.js +172 -0
  156. package/dist/collection/components/cookiebar/cookiebar.css +1 -0
  157. package/dist/collection/components/cookiebar/cookiebar.js +1419 -0
  158. package/dist/collection/components/cookiebar/cookiebar.types.js +1 -0
  159. package/dist/collection/components/cookiebar/cookiebar.utils.js +14 -0
  160. package/dist/collection/components/datetime-picker/date-picker/date-picker-locale.js +94 -0
  161. package/dist/collection/components/datetime-picker/date-picker/date-picker-props-validation.js +57 -0
  162. package/dist/collection/components/datetime-picker/date-picker/date-picker.css +1 -0
  163. package/dist/collection/components/datetime-picker/date-picker/date-picker.js +913 -0
  164. package/dist/collection/components/datetime-picker/datetime-input/datetime-input-props-validation.js +65 -0
  165. package/dist/collection/components/datetime-picker/datetime-input/datetime-input.css +1 -0
  166. package/dist/collection/components/datetime-picker/datetime-input/datetime-input.js +826 -0
  167. package/dist/collection/components/datetime-picker/datetime-picker-constants.js +36 -0
  168. package/dist/collection/components/datetime-picker/datetime-picker-form-associated.js +112 -0
  169. package/dist/collection/components/datetime-picker/datetime-picker-props-validation.js +202 -0
  170. package/dist/collection/components/datetime-picker/datetime-picker.css +1 -0
  171. package/dist/collection/components/datetime-picker/datetime-picker.js +1924 -0
  172. package/dist/collection/components/datetime-picker/datetime-picker.types.js +1 -0
  173. package/dist/collection/components/datetime-picker/datetime-picker.utils.js +250 -0
  174. package/dist/collection/components/datetime-picker/time-picker/time-picker-constants.js +13 -0
  175. package/dist/collection/components/datetime-picker/time-picker/time-picker.css +1 -0
  176. package/dist/collection/components/datetime-picker/time-picker/time-picker.js +456 -0
  177. package/dist/collection/components/divider/divider.css +1 -0
  178. package/dist/collection/components/divider/divider.js +537 -0
  179. package/dist/collection/components/divider/divider.types.js +1 -0
  180. package/dist/collection/components/dropdown/dropdown.css +1 -0
  181. package/dist/collection/components/dropdown/dropdown.js +939 -0
  182. package/dist/collection/components/dropdown/dropdown.types.js +1 -0
  183. package/dist/collection/components/footer/footer-category/footer-category.css +1 -0
  184. package/dist/collection/components/footer/footer-category/footer-category.js +160 -0
  185. package/dist/collection/components/footer/footer-item/footer-item.css +1 -0
  186. package/dist/collection/components/footer/footer-item/footer-item.js +154 -0
  187. package/dist/collection/components/footer/footer-legal/footer-legal.css +1 -0
  188. package/dist/collection/components/footer/footer-legal/footer-legal.js +75 -0
  189. package/dist/collection/components/footer/footer-logo/footer-logo.css +1 -0
  190. package/dist/collection/components/footer/footer-logo/footer-logo.js +342 -0
  191. package/dist/collection/components/footer/footer-logo/footer-logo.types.js +1 -0
  192. package/dist/collection/components/footer/footer-social/footer-social.css +1 -0
  193. package/dist/collection/components/footer/footer-social/footer-social.js +239 -0
  194. package/dist/collection/components/footer/footer.css +1 -0
  195. package/dist/collection/components/footer/footer.js +245 -0
  196. package/dist/collection/components/footer/footer.types.js +1 -0
  197. package/dist/collection/components/global.types.js +1 -0
  198. package/dist/collection/components/header/header-function/header-function.css +1 -0
  199. package/dist/collection/components/header/header-function/header-function.js +311 -0
  200. package/dist/collection/components/header/header-link/header-link.css +1 -0
  201. package/dist/collection/components/header/header-link/header-link.js +189 -0
  202. package/dist/collection/components/header/header-list/header-list.css +1 -0
  203. package/dist/collection/components/header/header-list/header-list.js +452 -0
  204. package/dist/collection/components/header/header-logo/header-logo.css +1 -0
  205. package/dist/collection/components/header/header-logo/header-logo.js +421 -0
  206. package/dist/collection/components/header/header.css +1 -0
  207. package/dist/collection/components/header/header.js +1131 -0
  208. package/dist/collection/components/header/header.types.js +1 -0
  209. package/dist/collection/components/icon/default-icons-cache.js +233 -0
  210. package/dist/collection/components/icon/icon.css +1 -0
  211. package/dist/collection/components/icon/icon.js +598 -0
  212. package/dist/collection/components/icon/icon.types.js +1 -0
  213. package/dist/collection/components/icon/icon.utils.js +33 -0
  214. package/dist/collection/components/input/input.css +1 -0
  215. package/dist/collection/components/input/input.js +1642 -0
  216. package/dist/collection/components/input/input.types.js +1 -0
  217. package/dist/collection/components/item/item.css +1 -0
  218. package/dist/collection/components/item/item.js +917 -0
  219. package/dist/collection/components/item/item.types.js +1 -0
  220. package/dist/collection/components/link/link.css +1 -0
  221. package/dist/collection/components/link/link.js +699 -0
  222. package/dist/collection/components/list/list.css +1 -0
  223. package/dist/collection/components/list/list.js +728 -0
  224. package/dist/collection/components/loading/loading.css +1 -0
  225. package/dist/collection/components/loading/loading.js +1169 -0
  226. package/dist/collection/components/loading/loading.types.js +1 -0
  227. package/dist/collection/components/magic-button/magic-button.css +1 -0
  228. package/dist/collection/components/magic-button/magic-button.js +238 -0
  229. package/dist/collection/components/menu/menu-group/menu-group.css +1 -0
  230. package/dist/collection/components/menu/menu-group/menu-group.js +77 -0
  231. package/dist/collection/components/menu/menu-header/menu-header.css +1 -0
  232. package/dist/collection/components/menu/menu-header/menu-header.js +161 -0
  233. package/dist/collection/components/menu/menu-info/menu-info.css +1 -0
  234. package/dist/collection/components/menu/menu-info/menu-info.js +94 -0
  235. package/dist/collection/components/menu/menu-item/menu-item.css +1 -0
  236. package/dist/collection/components/menu/menu-item/menu-item.js +306 -0
  237. package/dist/collection/components/menu/menu-item/menu-item.types.js +1 -0
  238. package/dist/collection/components/menu/menu-link/menu-link.css +1 -0
  239. package/dist/collection/components/menu/menu-link/menu-link.js +260 -0
  240. package/dist/collection/components/menu/menu-list/menu-list.css +1 -0
  241. package/dist/collection/components/menu/menu-list/menu-list.js +311 -0
  242. package/dist/collection/components/menu/menu-logo/menu-logo.css +1 -0
  243. package/dist/collection/components/menu/menu-logo/menu-logo.js +230 -0
  244. package/dist/collection/components/menu/menu-social/menu-social.css +1 -0
  245. package/dist/collection/components/menu/menu-social/menu-social.js +263 -0
  246. package/dist/collection/components/menu/menu.css +1 -0
  247. package/dist/collection/components/menu/menu.js +1372 -0
  248. package/dist/collection/components/menu/menu.types.js +1 -0
  249. package/dist/collection/components/menu/menu.utils.js +279 -0
  250. package/dist/collection/components/message/message.css +1 -0
  251. package/dist/collection/components/message/message.js +508 -0
  252. package/dist/collection/components/modal/modal.css +1 -0
  253. package/dist/collection/components/modal/modal.js +842 -0
  254. package/dist/collection/components/modal/modal.types.js +1 -0
  255. package/dist/collection/components/notification/notification-body/notification-body.css +1 -0
  256. package/dist/collection/components/notification/notification-body/notification-body.js +153 -0
  257. package/dist/collection/components/notification/notification-header/notification-header.css +1 -0
  258. package/dist/collection/components/notification/notification-header/notification-header.js +181 -0
  259. package/dist/collection/components/notification/notification-item/notification-item.css +1 -0
  260. package/dist/collection/components/notification/notification-item/notification-item.js +351 -0
  261. package/dist/collection/components/notification/notification-item/notification-item.types.js +1 -0
  262. package/dist/collection/components/notification/notification.css +1 -0
  263. package/dist/collection/components/notification/notification.js +838 -0
  264. package/dist/collection/components/notification/notification.types.js +1 -0
  265. package/dist/collection/components/pagination/pagination.css +1 -0
  266. package/dist/collection/components/pagination/pagination.js +1470 -0
  267. package/dist/collection/components/pagination/pagination.types.js +1 -0
  268. package/dist/collection/components/radio/radio.css +1 -0
  269. package/dist/collection/components/radio/radio.js +847 -0
  270. package/dist/collection/components/radio/radio.types.js +1 -0
  271. package/dist/collection/components/radio-group/radio-group.css +1 -0
  272. package/dist/collection/components/radio-group/radio-group.js +862 -0
  273. package/dist/collection/components/radio-group/radio-group.types.js +1 -0
  274. package/dist/collection/components/scrim/scrim.css +1 -0
  275. package/dist/collection/components/scrim/scrim.js +1825 -0
  276. package/dist/collection/components/scrim/scrim.types.js +1 -0
  277. package/dist/collection/components/scrim/scrim.utils.js +132 -0
  278. package/dist/collection/components/select/select-input/select-input.css +1 -0
  279. package/dist/collection/components/select/select-input/select-input.js +586 -0
  280. package/dist/collection/components/select/select-list/select-list.css +1 -0
  281. package/dist/collection/components/select/select-list/select-list.js +1159 -0
  282. package/dist/collection/components/select/select-option/select-option.css +1 -0
  283. package/dist/collection/components/select/select-option/select-option.js +564 -0
  284. package/dist/collection/components/select/select.constants.js +6 -0
  285. package/dist/collection/components/select/select.css +1 -0
  286. package/dist/collection/components/select/select.js +2692 -0
  287. package/dist/collection/components/select/select.types.js +1 -0
  288. package/dist/collection/components/select/select.utils.js +34 -0
  289. package/dist/collection/components/sign-in/sign-in.css +1 -0
  290. package/dist/collection/components/sign-in/sign-in.js +401 -0
  291. package/dist/collection/components/sign-in/sign-in.types.js +1 -0
  292. package/dist/collection/components/skip-link/skip-link-item/skip-link-item-alias.js +103 -0
  293. package/dist/collection/components/skip-link/skip-link-item/skip-link-item.css +1 -0
  294. package/dist/collection/components/skip-link/skip-link-item/skip-link-item.js +450 -0
  295. package/dist/collection/components/skip-link/skip-link.css +1 -0
  296. package/dist/collection/components/skip-link/skip-link.js +699 -0
  297. package/dist/collection/components/skip-link/skip-link.types.js +1 -0
  298. package/dist/collection/components/slider/slider.css +1 -0
  299. package/dist/collection/components/slider/slider.js +1324 -0
  300. package/dist/collection/components/slider/slider.types.js +1 -0
  301. package/dist/collection/components/step/step-item/step-item.css +1 -0
  302. package/dist/collection/components/step/step-item/step-item.js +604 -0
  303. package/dist/collection/components/step/step-item/step-item.types.js +1 -0
  304. package/dist/collection/components/step/step.css +1 -0
  305. package/dist/collection/components/step/step.js +896 -0
  306. package/dist/collection/components/step/step.types.js +1 -0
  307. package/dist/collection/components/switch/switch.css +1 -0
  308. package/dist/collection/components/switch/switch.js +715 -0
  309. package/dist/collection/components/switch/switch.types.js +1 -0
  310. package/dist/collection/components/tab/tab-item/tab-item.css +1 -0
  311. package/dist/collection/components/tab/tab-item/tab-item.js +425 -0
  312. package/dist/collection/components/tab/tab.css +1 -0
  313. package/dist/collection/components/tab/tab.js +724 -0
  314. package/dist/collection/components/tab/tab.types.js +1 -0
  315. package/dist/collection/components/table/table-body/table-body.css +1 -0
  316. package/dist/collection/components/table/table-body/table-body.js +51 -0
  317. package/dist/collection/components/table/table-cell/table-cell.css +1 -0
  318. package/dist/collection/components/table/table-cell/table-cell.js +373 -0
  319. package/dist/collection/components/table/table-constants.js +171 -0
  320. package/dist/collection/components/table/table-header/table-header.css +1 -0
  321. package/dist/collection/components/table/table-header/table-header.js +51 -0
  322. package/dist/collection/components/table/table-header-cell/table-header-cell.css +1 -0
  323. package/dist/collection/components/table/table-header-cell/table-header-cell.js +402 -0
  324. package/dist/collection/components/table/table-row/table-row.css +1 -0
  325. package/dist/collection/components/table/table-row/table-row.js +261 -0
  326. package/dist/collection/components/table/table-tokens.js +50 -0
  327. package/dist/collection/components/table/table-types.js +1 -0
  328. package/dist/collection/components/table/table-utils.js +44 -0
  329. package/dist/collection/components/table/table.css +1 -0
  330. package/dist/collection/components/table/table.js +1030 -0
  331. package/dist/collection/components/tag/tag.css +1 -0
  332. package/dist/collection/components/tag/tag.js +1152 -0
  333. package/dist/collection/components/tag/tag.types.js +1 -0
  334. package/dist/collection/components/textarea/textarea.css +1 -0
  335. package/dist/collection/components/textarea/textarea.js +985 -0
  336. package/dist/collection/components/textarea/textarea.types.js +1 -0
  337. package/dist/collection/components/tooltip/tooltip.css +1 -0
  338. package/dist/collection/components/tooltip/tooltip.js +1024 -0
  339. package/dist/collection/components/tooltip/tooltip.types.js +1 -0
  340. package/dist/collection/components/upload/upload.css +1 -0
  341. package/dist/collection/components/upload/upload.js +1314 -0
  342. package/dist/collection/components/upload/upload.types.js +1 -0
  343. package/dist/collection/components/wizard/wizard-panel/wizard-panel.css +1 -0
  344. package/dist/collection/components/wizard/wizard-panel/wizard-panel.js +167 -0
  345. package/dist/collection/components/wizard/wizard.css +1 -0
  346. package/dist/collection/components/wizard/wizard.js +1228 -0
  347. package/dist/collection/index.js +14 -0
  348. package/dist/collection/pages/components/cookiebar/index.js +26 -0
  349. package/dist/collection/pages/components/link/index.js +29 -0
  350. package/dist/collection/pages/components/pagination/index.js +12 -0
  351. package/dist/collection/pages/components/slider/index.js +18 -0
  352. package/dist/collection/pages/scripts/code-editor.js +101 -0
  353. package/dist/collection/pages/scripts/component-controls.js +600 -0
  354. package/dist/collection/pages/scripts/dev-event-console.js +47 -0
  355. package/dist/collection/pages/scripts/menu.js +192 -0
  356. package/dist/collection/pages/scripts/pageLoader.js +1422 -0
  357. package/dist/collection/shared/utils/assetsPath.js +75 -0
  358. package/dist/collection/shared/utils/breakpoint-observer.js +139 -0
  359. package/dist/collection/shared/utils/clamp.js +21 -0
  360. package/dist/collection/shared/utils/css-variables.js +12 -0
  361. package/dist/collection/shared/utils/cssVariables.js +37 -0
  362. package/dist/collection/shared/utils/date.js +405 -0
  363. package/dist/collection/shared/utils/debounce.js +39 -0
  364. package/dist/collection/shared/utils/event.js +55 -0
  365. package/dist/collection/shared/utils/floating-surface-dismiss.js +59 -0
  366. package/dist/collection/shared/utils/floating-ui.js +131 -0
  367. package/dist/collection/shared/utils/focus.js +24 -0
  368. package/dist/collection/shared/utils/form.js +82 -0
  369. package/dist/collection/shared/utils/format-bytes.js +20 -0
  370. package/dist/collection/shared/utils/getNextElement.js +30 -0
  371. package/dist/collection/shared/utils/getRandom.js +27 -0
  372. package/dist/collection/shared/utils/helpers.js +31 -0
  373. package/dist/collection/shared/utils/id.js +16 -0
  374. package/dist/collection/shared/utils/index.js +60 -0
  375. package/dist/collection/shared/utils/interfaces.js +1 -0
  376. package/dist/collection/shared/utils/isClient.js +14 -0
  377. package/dist/collection/shared/utils/isDefined.js +19 -0
  378. package/dist/collection/shared/utils/isEmpty.js +30 -0
  379. package/dist/collection/shared/utils/isHTMLElement.js +16 -0
  380. package/dist/collection/shared/utils/isNil.js +15 -0
  381. package/dist/collection/shared/utils/isString.js +20 -0
  382. package/dist/collection/shared/utils/native-dialog.js +44 -0
  383. package/dist/collection/shared/utils/navigation.js +21 -0
  384. package/dist/collection/shared/utils/parts.js +15 -0
  385. package/dist/collection/shared/utils/prop-warning.js +7 -0
  386. package/dist/collection/shared/utils/props.js +37 -0
  387. package/dist/collection/shared/utils/raf-batcher.js +51 -0
  388. package/dist/collection/shared/utils/scrollLock.js +141 -0
  389. package/dist/collection/shared/utils/setRafTimeout.js +38 -0
  390. package/dist/collection/shared/utils/slot.js +113 -0
  391. package/dist/collection/shared/utils/ssr-date.js +33 -0
  392. package/dist/collection/shared/utils/stringToArray.js +29 -0
  393. package/dist/collection/shared/utils/swipe.js +342 -0
  394. package/dist/collection/shared/utils/transition.js +127 -0
  395. package/dist/collection/shared/utils/types.js +1 -0
  396. package/dist/collection/shared/utils/validator.js +51 -0
  397. package/dist/collection/value-accessors/angular-value-accessor-config.js +41 -0
  398. package/dist/collection/value-accessors/index.js +6 -0
  399. package/dist/collection/value-accessors/vue-model-config.js +43 -0
  400. package/dist/components/br-avatar.d.ts +11 -0
  401. package/dist/components/br-avatar.js +5 -0
  402. package/dist/components/br-breadcrumb-item.d.ts +11 -0
  403. package/dist/components/br-breadcrumb-item.js +5 -0
  404. package/dist/components/br-breadcrumb.d.ts +11 -0
  405. package/dist/components/br-breadcrumb.js +5 -0
  406. package/dist/components/br-button.d.ts +11 -0
  407. package/dist/components/br-button.js +5 -0
  408. package/dist/components/br-card.d.ts +11 -0
  409. package/dist/components/br-card.js +5 -0
  410. package/dist/components/br-carousel-page.d.ts +11 -0
  411. package/dist/components/br-carousel-page.js +5 -0
  412. package/dist/components/br-carousel.d.ts +11 -0
  413. package/dist/components/br-carousel.js +5 -0
  414. package/dist/components/br-checkbox-group.d.ts +11 -0
  415. package/dist/components/br-checkbox-group.js +5 -0
  416. package/dist/components/br-checkbox.d.ts +11 -0
  417. package/dist/components/br-checkbox.js +5 -0
  418. package/dist/components/br-checkgroup.d.ts +11 -0
  419. package/dist/components/br-checkgroup.js +5 -0
  420. package/dist/components/br-collapse.d.ts +11 -0
  421. package/dist/components/br-collapse.js +5 -0
  422. package/dist/components/br-cookiebar-cookie.d.ts +11 -0
  423. package/dist/components/br-cookiebar-cookie.js +5 -0
  424. package/dist/components/br-cookiebar-group.d.ts +11 -0
  425. package/dist/components/br-cookiebar-group.js +5 -0
  426. package/dist/components/br-cookiebar-header.d.ts +11 -0
  427. package/dist/components/br-cookiebar-header.js +5 -0
  428. package/dist/components/br-cookiebar-link.d.ts +11 -0
  429. package/dist/components/br-cookiebar-link.js +5 -0
  430. package/dist/components/br-cookiebar-note-group.d.ts +11 -0
  431. package/dist/components/br-cookiebar-note-group.js +5 -0
  432. package/dist/components/br-cookiebar-note.d.ts +11 -0
  433. package/dist/components/br-cookiebar-note.js +5 -0
  434. package/dist/components/br-cookiebar.d.ts +11 -0
  435. package/dist/components/br-cookiebar.js +5 -0
  436. package/dist/components/br-crumb.d.ts +11 -0
  437. package/dist/components/br-crumb.js +5 -0
  438. package/dist/components/br-date-picker.d.ts +11 -0
  439. package/dist/components/br-date-picker.js +5 -0
  440. package/dist/components/br-datetime-input.d.ts +11 -0
  441. package/dist/components/br-datetime-input.js +5 -0
  442. package/dist/components/br-datetime-picker.d.ts +11 -0
  443. package/dist/components/br-datetime-picker.js +5 -0
  444. package/dist/components/br-divider.d.ts +11 -0
  445. package/dist/components/br-divider.js +5 -0
  446. package/dist/components/br-dropdown.d.ts +11 -0
  447. package/dist/components/br-dropdown.js +5 -0
  448. package/dist/components/br-footer-category.d.ts +11 -0
  449. package/dist/components/br-footer-category.js +5 -0
  450. package/dist/components/br-footer-item.d.ts +11 -0
  451. package/dist/components/br-footer-item.js +5 -0
  452. package/dist/components/br-footer-legal.d.ts +11 -0
  453. package/dist/components/br-footer-legal.js +5 -0
  454. package/dist/components/br-footer-logo.d.ts +11 -0
  455. package/dist/components/br-footer-logo.js +5 -0
  456. package/dist/components/br-footer-social.d.ts +11 -0
  457. package/dist/components/br-footer-social.js +5 -0
  458. package/dist/components/br-footer.d.ts +11 -0
  459. package/dist/components/br-footer.js +5 -0
  460. package/dist/components/br-header-function.d.ts +11 -0
  461. package/dist/components/br-header-function.js +5 -0
  462. package/dist/components/br-header-link.d.ts +11 -0
  463. package/dist/components/br-header-link.js +5 -0
  464. package/dist/components/br-header-list.d.ts +11 -0
  465. package/dist/components/br-header-list.js +5 -0
  466. package/dist/components/br-header-logo.d.ts +11 -0
  467. package/dist/components/br-header-logo.js +5 -0
  468. package/dist/components/br-header.d.ts +11 -0
  469. package/dist/components/br-header.js +5 -0
  470. package/dist/components/br-icon.d.ts +11 -0
  471. package/dist/components/br-icon.js +5 -0
  472. package/dist/components/br-input.d.ts +11 -0
  473. package/dist/components/br-input.js +5 -0
  474. package/dist/components/br-item.d.ts +11 -0
  475. package/dist/components/br-item.js +5 -0
  476. package/dist/components/br-link.d.ts +11 -0
  477. package/dist/components/br-link.js +5 -0
  478. package/dist/components/br-list.d.ts +11 -0
  479. package/dist/components/br-list.js +5 -0
  480. package/dist/components/br-loading.d.ts +11 -0
  481. package/dist/components/br-loading.js +5 -0
  482. package/dist/components/br-magic-button.d.ts +11 -0
  483. package/dist/components/br-magic-button.js +5 -0
  484. package/dist/components/br-menu-group.d.ts +11 -0
  485. package/dist/components/br-menu-group.js +5 -0
  486. package/dist/components/br-menu-header.d.ts +11 -0
  487. package/dist/components/br-menu-header.js +5 -0
  488. package/dist/components/br-menu-info.d.ts +11 -0
  489. package/dist/components/br-menu-info.js +5 -0
  490. package/dist/components/br-menu-item.d.ts +11 -0
  491. package/dist/components/br-menu-item.js +5 -0
  492. package/dist/components/br-menu-link.d.ts +11 -0
  493. package/dist/components/br-menu-link.js +5 -0
  494. package/dist/components/br-menu-list.d.ts +11 -0
  495. package/dist/components/br-menu-list.js +5 -0
  496. package/dist/components/br-menu-logo.d.ts +11 -0
  497. package/dist/components/br-menu-logo.js +5 -0
  498. package/dist/components/br-menu-social.d.ts +11 -0
  499. package/dist/components/br-menu-social.js +5 -0
  500. package/dist/components/br-menu.d.ts +11 -0
  501. package/dist/components/br-menu.js +5 -0
  502. package/dist/components/br-message.d.ts +11 -0
  503. package/dist/components/br-message.js +5 -0
  504. package/dist/components/br-modal.d.ts +11 -0
  505. package/dist/components/br-modal.js +5 -0
  506. package/dist/components/br-notification-body.d.ts +11 -0
  507. package/dist/components/br-notification-body.js +5 -0
  508. package/dist/components/br-notification-header.d.ts +11 -0
  509. package/dist/components/br-notification-header.js +5 -0
  510. package/dist/components/br-notification-item.d.ts +11 -0
  511. package/dist/components/br-notification-item.js +5 -0
  512. package/dist/components/br-notification.d.ts +11 -0
  513. package/dist/components/br-notification.js +5 -0
  514. package/dist/components/br-pagination.d.ts +11 -0
  515. package/dist/components/br-pagination.js +5 -0
  516. package/dist/components/br-radio-group.d.ts +11 -0
  517. package/dist/components/br-radio-group.js +5 -0
  518. package/dist/components/br-radio.d.ts +11 -0
  519. package/dist/components/br-radio.js +5 -0
  520. package/dist/components/br-scrim.d.ts +11 -0
  521. package/dist/components/br-scrim.js +5 -0
  522. package/dist/components/br-select-input.d.ts +11 -0
  523. package/dist/components/br-select-input.js +5 -0
  524. package/dist/components/br-select-list.d.ts +11 -0
  525. package/dist/components/br-select-list.js +5 -0
  526. package/dist/components/br-select-option.d.ts +11 -0
  527. package/dist/components/br-select-option.js +5 -0
  528. package/dist/components/br-select.d.ts +11 -0
  529. package/dist/components/br-select.js +5 -0
  530. package/dist/components/br-sign-in.d.ts +11 -0
  531. package/dist/components/br-sign-in.js +5 -0
  532. package/dist/components/br-skip-link-item.d.ts +11 -0
  533. package/dist/components/br-skip-link-item.js +5 -0
  534. package/dist/components/br-skip-link.d.ts +11 -0
  535. package/dist/components/br-skip-link.js +5 -0
  536. package/dist/components/br-skiplink-item.d.ts +11 -0
  537. package/dist/components/br-skiplink-item.js +5 -0
  538. package/dist/components/br-slider.d.ts +11 -0
  539. package/dist/components/br-slider.js +5 -0
  540. package/dist/components/br-step-item.d.ts +11 -0
  541. package/dist/components/br-step-item.js +5 -0
  542. package/dist/components/br-step.d.ts +11 -0
  543. package/dist/components/br-step.js +5 -0
  544. package/dist/components/br-switch.d.ts +11 -0
  545. package/dist/components/br-switch.js +5 -0
  546. package/dist/components/br-tab-item.d.ts +11 -0
  547. package/dist/components/br-tab-item.js +5 -0
  548. package/dist/components/br-tab.d.ts +11 -0
  549. package/dist/components/br-tab.js +5 -0
  550. package/dist/components/br-table-body.d.ts +11 -0
  551. package/dist/components/br-table-body.js +5 -0
  552. package/dist/components/br-table-cell.d.ts +11 -0
  553. package/dist/components/br-table-cell.js +5 -0
  554. package/dist/components/br-table-header-cell.d.ts +11 -0
  555. package/dist/components/br-table-header-cell.js +5 -0
  556. package/dist/components/br-table-header.d.ts +11 -0
  557. package/dist/components/br-table-header.js +5 -0
  558. package/dist/components/br-table-row.d.ts +11 -0
  559. package/dist/components/br-table-row.js +5 -0
  560. package/dist/components/br-table.d.ts +11 -0
  561. package/dist/components/br-table.js +5 -0
  562. package/dist/components/br-tag.d.ts +11 -0
  563. package/dist/components/br-tag.js +5 -0
  564. package/dist/components/br-textarea.d.ts +11 -0
  565. package/dist/components/br-textarea.js +5 -0
  566. package/dist/components/br-time-picker.d.ts +11 -0
  567. package/dist/components/br-time-picker.js +5 -0
  568. package/dist/components/br-tooltip.d.ts +11 -0
  569. package/dist/components/br-tooltip.js +5 -0
  570. package/dist/components/br-upload.d.ts +11 -0
  571. package/dist/components/br-upload.js +5 -0
  572. package/dist/components/br-wizard-panel.d.ts +11 -0
  573. package/dist/components/br-wizard-panel.js +5 -0
  574. package/dist/components/br-wizard.d.ts +11 -0
  575. package/dist/components/br-wizard.js +5 -0
  576. package/dist/components/index.d.ts +213 -0
  577. package/dist/components/index.js +5 -0
  578. package/dist/components/p-34Jfn-U-.js +5 -0
  579. package/dist/components/p-5z6jgH1D.js +5 -0
  580. package/dist/components/p-6OdfnwnK.js +5 -0
  581. package/dist/components/p-9S9bgUT0.js +5 -0
  582. package/dist/components/p-B-qLmYZC.js +5 -0
  583. package/dist/components/p-B55qsau4.js +5 -0
  584. package/dist/components/p-B7Amgxkp.js +5 -0
  585. package/dist/components/p-BC7f6MK8.js +5 -0
  586. package/dist/components/p-BKuMQJrQ.js +5 -0
  587. package/dist/components/p-BPJpHGOW.js +5 -0
  588. package/dist/components/p-BWXfdbQH.js +5 -0
  589. package/dist/components/p-Bb-nLtTG.js +5 -0
  590. package/dist/components/p-BeE7R9nu.js +5 -0
  591. package/dist/components/p-BkS6ujyf.js +5 -0
  592. package/dist/components/p-Bo0QYHJO.js +5 -0
  593. package/dist/components/p-C1yRmdso.js +5 -0
  594. package/dist/components/p-C2i2c_io.js +5 -0
  595. package/dist/components/p-C7v0lVlX.js +5 -0
  596. package/dist/components/p-CMBsvswx.js +5 -0
  597. package/dist/components/p-CRrimdz6.js +5 -0
  598. package/dist/components/p-CWORw84-.js +5 -0
  599. package/dist/components/p-CXMwM9m4.js +5 -0
  600. package/dist/components/p-CdDwqbBv.js +5 -0
  601. package/dist/components/p-CvUMXJCl.js +5 -0
  602. package/dist/components/p-D3usVJE2.js +16 -0
  603. package/dist/components/p-D6zroLx5.js +5 -0
  604. package/dist/components/p-DA5GS53D.js +5 -0
  605. package/dist/components/p-DBP6K_aq.js +5 -0
  606. package/dist/components/p-DBmwzG9E.js +5 -0
  607. package/dist/components/p-DCrVo-8T.js +5 -0
  608. package/dist/components/p-DFUKDNck.js +5 -0
  609. package/dist/components/p-DHicj0By.js +5 -0
  610. package/dist/components/p-DIK54tTj.js +5 -0
  611. package/dist/components/p-DQRSHR-D.js +5 -0
  612. package/dist/components/p-DRVMm1Py.js +5 -0
  613. package/dist/components/p-DWPmUV72.js +5 -0
  614. package/dist/components/p-DXjQyH6s.js +5 -0
  615. package/dist/components/p-DYA74R1r.js +5 -0
  616. package/dist/components/p-DmCxdB9P.js +5 -0
  617. package/dist/components/p-Dmfk7eEe.js +5 -0
  618. package/dist/components/p-Dp0xy_3n.js +5 -0
  619. package/dist/components/p-DxZJrIyL.js +5 -0
  620. package/dist/components/p-JAkkThgf.js +5 -0
  621. package/dist/components/p-Ud-WB0hx.js +5 -0
  622. package/dist/components/p-bhULC15U.js +5 -0
  623. package/dist/components/p-cF3ia5e9.js +5 -0
  624. package/dist/components/p-fpMNttbg.js +5 -0
  625. package/dist/components/p-gvnfuTjd.js +5 -0
  626. package/dist/components/p-qYONSNcf.js +5 -0
  627. package/dist/components/p-qhhHGJY1.js +5 -0
  628. package/dist/components/p-ttI0nvv_.js +5 -0
  629. package/dist/components/p-ukNmfGNP.js +5 -0
  630. package/dist/components/p-xa8e1kSW.js +5 -0
  631. package/dist/esm/app-globals-DVjNHTTs.js +7 -0
  632. package/dist/esm/br-avatar.entry.js +246 -0
  633. package/dist/esm/br-breadcrumb-item.entry.js +43 -0
  634. package/dist/esm/br-breadcrumb.entry.js +441 -0
  635. package/dist/esm/br-button_2.entry.js +277 -0
  636. package/dist/esm/br-card.entry.js +109 -0
  637. package/dist/esm/br-carousel-page.entry.js +78 -0
  638. package/dist/esm/br-carousel.entry.js +563 -0
  639. package/dist/esm/br-checkbox-group.entry.js +116 -0
  640. package/dist/esm/br-checkbox.entry.js +286 -0
  641. package/dist/esm/br-checkgroup.entry.js +18 -0
  642. package/dist/esm/br-collapse_2.entry.js +680 -0
  643. package/dist/esm/br-cookiebar-cookie.entry.js +81 -0
  644. package/dist/esm/br-cookiebar-group.entry.js +307 -0
  645. package/dist/esm/br-cookiebar-header.entry.js +37 -0
  646. package/dist/esm/br-cookiebar-link.entry.js +53 -0
  647. package/dist/esm/br-cookiebar-note-group.entry.js +68 -0
  648. package/dist/esm/br-cookiebar-note.entry.js +23 -0
  649. package/dist/esm/br-cookiebar.entry.js +756 -0
  650. package/dist/esm/br-crumb.entry.js +49 -0
  651. package/dist/esm/br-date-picker_3.entry.js +2443 -0
  652. package/dist/esm/br-datetime-picker.entry.js +1884 -0
  653. package/dist/esm/br-divider.entry.js +223 -0
  654. package/dist/esm/br-dropdown_2.entry.js +1997 -0
  655. package/dist/esm/br-footer-category.entry.js +100 -0
  656. package/dist/esm/br-footer-item.entry.js +50 -0
  657. package/dist/esm/br-footer-legal.entry.js +39 -0
  658. package/dist/esm/br-footer-logo.entry.js +102 -0
  659. package/dist/esm/br-footer-social.entry.js +69 -0
  660. package/dist/esm/br-footer.entry.js +90 -0
  661. package/dist/esm/br-header-function.entry.js +140 -0
  662. package/dist/esm/br-header-link.entry.js +58 -0
  663. package/dist/esm/br-header-list.entry.js +277 -0
  664. package/dist/esm/br-header-logo.entry.js +176 -0
  665. package/dist/esm/br-header.entry.js +640 -0
  666. package/dist/esm/br-icon.entry.js +483 -0
  667. package/dist/esm/br-input.entry.js +597 -0
  668. package/dist/esm/br-item.entry.js +365 -0
  669. package/dist/esm/br-link.entry.js +131 -0
  670. package/dist/esm/br-loading.entry.js +503 -0
  671. package/dist/esm/br-magic-button.entry.js +91 -0
  672. package/dist/esm/br-menu-group.entry.js +21 -0
  673. package/dist/esm/br-menu-header.entry.js +45 -0
  674. package/dist/esm/br-menu-info.entry.js +36 -0
  675. package/dist/esm/br-menu-item.entry.js +77 -0
  676. package/dist/esm/br-menu-link.entry.js +54 -0
  677. package/dist/esm/br-menu-list.entry.js +147 -0
  678. package/dist/esm/br-menu-logo.entry.js +73 -0
  679. package/dist/esm/br-menu-social.entry.js +63 -0
  680. package/dist/esm/br-menu.entry.js +991 -0
  681. package/dist/esm/br-modal.entry.js +494 -0
  682. package/dist/esm/br-notification-body.entry.js +69 -0
  683. package/dist/esm/br-notification-header.entry.js +46 -0
  684. package/dist/esm/br-notification-item.entry.js +108 -0
  685. package/dist/esm/br-notification.entry.js +332 -0
  686. package/dist/esm/br-pagination.entry.js +882 -0
  687. package/dist/esm/br-radio-group.entry.js +426 -0
  688. package/dist/esm/br-radio.entry.js +355 -0
  689. package/dist/esm/br-scrim.entry.js +1334 -0
  690. package/dist/esm/br-select-input_3.entry.js +984 -0
  691. package/dist/esm/br-sign-in.entry.js +124 -0
  692. package/dist/esm/br-skip-link-item.entry.js +18 -0
  693. package/dist/esm/br-skip-link.entry.js +360 -0
  694. package/dist/esm/br-skiplink-item.entry.js +190 -0
  695. package/dist/esm/br-slider.entry.js +685 -0
  696. package/dist/esm/br-step_2.entry.js +625 -0
  697. package/dist/esm/br-switch.entry.js +243 -0
  698. package/dist/esm/br-tab-item.entry.js +183 -0
  699. package/dist/esm/br-tab.entry.js +395 -0
  700. package/dist/esm/br-table-body.entry.js +35 -0
  701. package/dist/esm/br-table-cell.entry.js +182 -0
  702. package/dist/esm/br-table-header-cell.entry.js +171 -0
  703. package/dist/esm/br-table-header.entry.js +35 -0
  704. package/dist/esm/br-table-row.entry.js +79 -0
  705. package/dist/esm/br-table.entry.js +678 -0
  706. package/dist/esm/br-tag.entry.js +491 -0
  707. package/dist/esm/br-textarea.entry.js +304 -0
  708. package/dist/esm/br-tooltip.entry.js +625 -0
  709. package/dist/esm/br-upload.entry.js +579 -0
  710. package/dist/esm/br-wizard-panel.entry.js +52 -0
  711. package/dist/esm/br-wizard.entry.js +706 -0
  712. package/dist/esm/breakpoint-observer-DBmwzG9E.js +141 -0
  713. package/dist/esm/clamp-gvnfuTjd.js +23 -0
  714. package/dist/esm/cookiebar.utils-DYA74R1r.js +16 -0
  715. package/dist/esm/datetime-picker-constants-Bfm58jO6.js +3798 -0
  716. package/dist/esm/event-DFN_so7I.js +48 -0
  717. package/dist/esm/floating-surface-dismiss-BWXfdbQH.js +61 -0
  718. package/dist/esm/floating-ui-BavFwMnx.js +134 -0
  719. package/dist/esm/floating-ui.dom-DIK54tTj.js +1707 -0
  720. package/dist/esm/focus-DxZJrIyL.js +26 -0
  721. package/dist/esm/getNextElement-9S9bgUT0.js +28 -0
  722. package/dist/esm/iconify-icon-D3usVJE2.js +2303 -0
  723. package/dist/esm/id-BkS6ujyf.js +18 -0
  724. package/dist/esm/index-Bo-2igoO.js +671 -0
  725. package/dist/esm/index-C2RBydfd.js +3258 -0
  726. package/dist/esm/index.js +6 -0
  727. package/dist/esm/isNil-B-qLmYZC.js +17 -0
  728. package/dist/esm/isValid-DIUZX1qS.js +3684 -0
  729. package/dist/esm/loader.js +15 -0
  730. package/dist/esm/native-dialog-B55qsau4.js +46 -0
  731. package/dist/esm/navigation-bhULC15U.js +23 -0
  732. package/dist/esm/parts-Bb5vVlCC.js +17 -0
  733. package/dist/esm/props-DRVMm1Py.js +22 -0
  734. package/dist/esm/raf-batcher-cF3ia5e9.js +53 -0
  735. package/dist/esm/slot-BIG-yees.js +44 -0
  736. package/dist/esm/swipe-Dmfk7eEe.js +343 -0
  737. package/dist/esm/table-constants-CXMwM9m4.js +170 -0
  738. package/dist/esm/validator-D3tVP32U.js +113 -0
  739. package/dist/esm/webcomponents.js +46 -0
  740. package/dist/hydrate/index.d.ts +287 -0
  741. package/dist/hydrate/index.js +67516 -0
  742. package/dist/hydrate/index.mjs +67506 -0
  743. package/dist/hydrate/package.json +12 -0
  744. package/dist/index.cjs.js +1 -0
  745. package/dist/index.js +1 -0
  746. package/dist/loader/cdn.js +5 -0
  747. package/dist/loader/index.cjs.js +5 -0
  748. package/dist/loader/index.d.ts +24 -0
  749. package/dist/loader/index.es2017.js +5 -0
  750. package/dist/loader/index.js +6 -0
  751. package/dist/types/components/item/item.d.ts +1 -0
  752. package/dist/types/components/select/select-list/select-list.d.ts +1 -0
  753. package/dist/types/components/select/select-option/select-option.d.ts +1 -0
  754. package/dist/types/components/select/select.d.ts +14 -0
  755. package/dist/types/components/select/select.types.d.ts +2 -0
  756. package/dist/types/components/select/select.utils.d.ts +13 -0
  757. package/dist/webcomponents/index.esm.js +5 -0
  758. package/dist/webcomponents/p-0196804a.entry.js +5 -0
  759. package/dist/webcomponents/p-0410186a.entry.js +5 -0
  760. package/dist/webcomponents/p-0415ef22.entry.js +5 -0
  761. package/dist/webcomponents/p-0777c7b1.entry.js +5 -0
  762. package/dist/webcomponents/p-0caa4d12.entry.js +5 -0
  763. package/dist/webcomponents/p-0d4f718d.entry.js +5 -0
  764. package/dist/webcomponents/p-0e84c9e8.entry.js +5 -0
  765. package/dist/webcomponents/p-12286e73.entry.js +5 -0
  766. package/dist/webcomponents/p-147ac8d3.entry.js +5 -0
  767. package/dist/webcomponents/p-1580beee.entry.js +5 -0
  768. package/dist/webcomponents/p-18ee6175.entry.js +5 -0
  769. package/dist/webcomponents/p-1bca4499.entry.js +5 -0
  770. package/dist/webcomponents/p-1c303a4e.entry.js +5 -0
  771. package/dist/webcomponents/p-1d6b0b6f.entry.js +5 -0
  772. package/dist/webcomponents/p-1d8cb8fd.entry.js +5 -0
  773. package/dist/webcomponents/p-224daaac.entry.js +5 -0
  774. package/dist/webcomponents/p-28426d2a.entry.js +5 -0
  775. package/dist/webcomponents/p-2abd2da0.entry.js +5 -0
  776. package/dist/webcomponents/p-2fdc51ae.entry.js +5 -0
  777. package/dist/webcomponents/p-30c428b6.entry.js +5 -0
  778. package/dist/webcomponents/p-36bbea4e.entry.js +5 -0
  779. package/dist/webcomponents/p-3907ebfa.entry.js +5 -0
  780. package/dist/webcomponents/p-39a16f9d.entry.js +5 -0
  781. package/dist/webcomponents/p-3ebbd2f5.entry.js +5 -0
  782. package/dist/webcomponents/p-3ef7eac8.entry.js +5 -0
  783. package/dist/webcomponents/p-45356e9a.entry.js +5 -0
  784. package/dist/webcomponents/p-46513db4.entry.js +5 -0
  785. package/dist/webcomponents/p-4c13221a.entry.js +5 -0
  786. package/dist/webcomponents/p-51ce2c31.entry.js +5 -0
  787. package/dist/webcomponents/p-52df61cb.entry.js +5 -0
  788. package/dist/webcomponents/p-569134cf.entry.js +5 -0
  789. package/dist/webcomponents/p-5ce7db4a.entry.js +5 -0
  790. package/dist/webcomponents/p-5f373708.entry.js +5 -0
  791. package/dist/webcomponents/p-5f6afb79.entry.js +5 -0
  792. package/dist/webcomponents/p-5fc7ba4c.entry.js +5 -0
  793. package/dist/webcomponents/p-66006312.entry.js +5 -0
  794. package/dist/webcomponents/p-66b13fd9.entry.js +5 -0
  795. package/dist/webcomponents/p-6OdfnwnK.js +5 -0
  796. package/dist/webcomponents/p-750799b7.entry.js +5 -0
  797. package/dist/webcomponents/p-756ff2ad.entry.js +5 -0
  798. package/dist/webcomponents/p-765bfe27.entry.js +5 -0
  799. package/dist/webcomponents/p-7ab96c11.entry.js +5 -0
  800. package/dist/webcomponents/p-7c2ff8b4.entry.js +5 -0
  801. package/dist/webcomponents/p-7f7506f0.entry.js +5 -0
  802. package/dist/webcomponents/p-7fb03a49.entry.js +5 -0
  803. package/dist/webcomponents/p-82200563.entry.js +5 -0
  804. package/dist/webcomponents/p-83ff4579.entry.js +5 -0
  805. package/dist/webcomponents/p-85f8063b.entry.js +5 -0
  806. package/dist/webcomponents/p-8b558233.entry.js +5 -0
  807. package/dist/webcomponents/p-8e6c2767.entry.js +5 -0
  808. package/dist/webcomponents/p-8e819355.entry.js +5 -0
  809. package/dist/webcomponents/p-92a9b9c4.entry.js +5 -0
  810. package/dist/webcomponents/p-966ad32f.entry.js +5 -0
  811. package/dist/webcomponents/p-9679d230.entry.js +5 -0
  812. package/dist/webcomponents/p-96dd663b.entry.js +5 -0
  813. package/dist/webcomponents/p-98843fa3.entry.js +5 -0
  814. package/dist/webcomponents/p-9S9bgUT0.js +5 -0
  815. package/dist/webcomponents/p-9a375eff.entry.js +5 -0
  816. package/dist/webcomponents/p-9b358cff.entry.js +5 -0
  817. package/dist/webcomponents/p-9f7558c7.entry.js +5 -0
  818. package/dist/webcomponents/p-B-qLmYZC.js +5 -0
  819. package/dist/webcomponents/p-B55qsau4.js +5 -0
  820. package/dist/webcomponents/p-BIG-yees.js +5 -0
  821. package/dist/webcomponents/p-BWXfdbQH.js +5 -0
  822. package/dist/webcomponents/p-Bb5vVlCC.js +5 -0
  823. package/dist/webcomponents/p-Bfm58jO6.js +5 -0
  824. package/dist/webcomponents/p-BhMVJQ4-.js +5 -0
  825. package/dist/webcomponents/p-BkS6ujyf.js +5 -0
  826. package/dist/webcomponents/p-C2RBydfd.js +6 -0
  827. package/dist/webcomponents/p-CO5cOQQU.js +5 -0
  828. package/dist/webcomponents/p-CXMwM9m4.js +5 -0
  829. package/dist/webcomponents/p-D3tVP32U.js +5 -0
  830. package/dist/webcomponents/p-D3usVJE2.js +16 -0
  831. package/dist/webcomponents/p-DBmwzG9E.js +5 -0
  832. package/dist/webcomponents/p-DFN_so7I.js +5 -0
  833. package/dist/webcomponents/p-DIK54tTj.js +5 -0
  834. package/dist/webcomponents/p-DRVMm1Py.js +5 -0
  835. package/dist/webcomponents/p-DVjNHTTs.js +5 -0
  836. package/dist/webcomponents/p-DYA74R1r.js +5 -0
  837. package/dist/webcomponents/p-Dmfk7eEe.js +5 -0
  838. package/dist/webcomponents/p-DxZJrIyL.js +5 -0
  839. package/dist/webcomponents/p-a382e115.entry.js +5 -0
  840. package/dist/webcomponents/p-a4ae72e3.entry.js +5 -0
  841. package/dist/webcomponents/p-a994c190.entry.js +5 -0
  842. package/dist/webcomponents/p-a9ff7c25.entry.js +5 -0
  843. package/dist/webcomponents/p-bhULC15U.js +5 -0
  844. package/dist/webcomponents/p-c0b0f531.entry.js +5 -0
  845. package/dist/webcomponents/p-c211af17.entry.js +5 -0
  846. package/dist/webcomponents/p-c492d926.entry.js +5 -0
  847. package/dist/webcomponents/p-c4cfe599.entry.js +5 -0
  848. package/dist/webcomponents/p-c846e784.entry.js +5 -0
  849. package/dist/webcomponents/p-c949d993.entry.js +5 -0
  850. package/dist/webcomponents/p-cF3ia5e9.js +5 -0
  851. package/dist/webcomponents/p-d1e899cd.entry.js +5 -0
  852. package/dist/webcomponents/p-d38d82cc.entry.js +5 -0
  853. package/dist/webcomponents/p-e0ce536a.entry.js +5 -0
  854. package/dist/webcomponents/p-e1331288.entry.js +5 -0
  855. package/dist/webcomponents/p-e360a463.entry.js +5 -0
  856. package/dist/webcomponents/p-f078f972.entry.js +5 -0
  857. package/dist/webcomponents/p-f26038e2.entry.js +5 -0
  858. package/dist/webcomponents/p-f303f6b3.entry.js +5 -0
  859. package/dist/webcomponents/p-f6318e94.entry.js +5 -0
  860. package/dist/webcomponents/p-f85ee01c.entry.js +5 -0
  861. package/dist/webcomponents/p-fcd4ae48.entry.js +5 -0
  862. package/dist/webcomponents/p-ffe0241e.entry.js +5 -0
  863. package/dist/webcomponents/p-gvnfuTjd.js +5 -0
  864. package/dist/webcomponents/webcomponents.esm.js +5 -0
  865. package/package.json +3 -7
  866. package/cem/.gitkeep +0 -0
@@ -0,0 +1,2692 @@
1
+ /*!
2
+ * Construído por SERPRO
3
+ * © https://serpro.gov.br/ - MIT License.
4
+ */
5
+ import { Host, h, } from "@stencil/core";
6
+ import { dispatchNativeFormEvent } from "../../shared/utils/event";
7
+ import { listenForExternalBlockingSurface } from "../../shared/utils/floating-surface-dismiss";
8
+ import { getFormValidationState, isFormControlDisabled, safeSetFormValue, syncNativeFormValidity, } from "../../shared/utils/form";
9
+ import { hasAssignedSlotContent, hasNamedLightDomSlot } from "../../shared/utils/slot";
10
+ import { resolveFormValidator } from "../../shared/utils/validator";
11
+ import { transitionAllSelection, transitionSelection } from "./select.utils";
12
+ let selectId = 0;
13
+ /**
14
+ * ## Design System
15
+ *
16
+ * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/select?tab=designer).
17
+ *
18
+ * @category Formulários
19
+ * @status stable
20
+ * @slot default - Opções declaradas com elementos br-select-option.
21
+ * @slot feedback - Mensagem de validação, normalmente um br-message.
22
+ * @slot validation-loading - Indicador exibido durante validação assíncrona.
23
+ * @slot loading - Indicador exibido durante a busca remota de opções.
24
+ *
25
+ * @part container - Contêiner visual principal do select.
26
+ * @part input - Campo de seleção e busca.
27
+ * @part input-container - Contêiner visual do campo.
28
+ * @part input-label - Rótulo do campo.
29
+ * @part input-field - Campo input nativo.
30
+ * @part input-group - Grupo visual do campo.
31
+ * @part input-icon - Ícone do campo.
32
+ * @part input-action - Botão de abertura e fechamento.
33
+ * @part input-action-button - Botão interno da ação.
34
+ * @part list - Lista de opções.
35
+ * @part option - Opção individual.
36
+ * @part select-all - Alias legado para a opção de selecionar todos.
37
+ * @part empty-option - Alias legado para a opção vazia da lista.
38
+ * @part option-checkbox - Alias legado para o checkbox da opção.
39
+ * @part option-radio - Alias legado para o radio da opção.
40
+ * @part hidden-select - Select nativo invisível usado na integração com formulários.
41
+ * @part feedback - Área de mensagem de validação.
42
+ * @part validation-loading - Área do indicador de validação assíncrona.
43
+ */
44
+ export class Select {
45
+ constructor() {
46
+ /**
47
+ * Remove a borda do input quando o componente não está em foco.
48
+ *
49
+ * @default false
50
+ */
51
+ this.borderless = false;
52
+ /**
53
+ * Desativa toda a interação do select.
54
+ *
55
+ * @default false
56
+ */
57
+ this.disabled = false;
58
+ /**
59
+ * Exibe label e campo na mesma linha.
60
+ *
61
+ * @default false
62
+ * @deprecated Use `inline`.
63
+ */
64
+ this.isInline = false;
65
+ /**
66
+ * Habilita o modo de seleção múltipla.
67
+ *
68
+ * @default false
69
+ * @deprecated Use `multiple`.
70
+ */
71
+ this.isMultiple = false;
72
+ /**
73
+ * Mantém a lista aberta depois de uma seleção.
74
+ *
75
+ * @default false
76
+ * @deprecated O comportamento atual usa o fechamento padrão do select; mantenha esta prop
77
+ * apenas para compatibilidade com integrações legadas.
78
+ */
79
+ this.keepOpenOnSelect = false;
80
+ /**
81
+ * Define quantas opções ficam visíveis na janela da lista.
82
+ *
83
+ * @default 6
84
+ */
85
+ this.visibleItems = 6;
86
+ /**
87
+ * Informa a altura base de cada opção para o cálculo de virtual scroll.
88
+ *
89
+ * @default 40
90
+ */
91
+ this.itemHeight = 40;
92
+ /**
93
+ * Controla a largura do campo de entrada.
94
+ *
95
+ * @type {string}
96
+ * @example '20rem'
97
+ */
98
+ this.inputWidth = undefined;
99
+ /**
100
+ * Define quantas opções extras são renderizadas antes e depois da área visível no virtual scroll.
101
+ *
102
+ * @default 1
103
+ */
104
+ this.overscan = 1;
105
+ /**
106
+ * Controla o estado aberto/fechado da lista.
107
+ *
108
+ * @default false
109
+ * @deprecated Use `open`.
110
+ */
111
+ this.isOpen = false;
112
+ /**
113
+ * Valor público do select baseado nas opções atualmente selecionadas.
114
+ *
115
+ * @type {string | string[] | undefined}
116
+ * @remarks Em modo múltiplo, o valor público é um array de strings.
117
+ */
118
+ this.value = '';
119
+ /**
120
+ * Texto exibido quando não há seleção.
121
+ *
122
+ * @type {string | undefined}
123
+ */
124
+ this.placeholder = '';
125
+ /**
126
+ * Indica que o preenchimento do select é obrigatório.
127
+ *
128
+ * @default false
129
+ */
130
+ this.required = false;
131
+ /**
132
+ * Rótulo apresentado para a opção de selecionar todos no modo múltiplo.
133
+ *
134
+ * @default 'Selecionar todos'
135
+ */
136
+ this.selectAllLabel = Select.SELECT_ALL_LABEL;
137
+ /**
138
+ * Habilita a filtragem textual das opções por rótulo ou valor.
139
+ *
140
+ * @default true
141
+ */
142
+ this.filterable = true;
143
+ /**
144
+ * Define se as opções são filtradas localmente ou fornecidas por uma busca remota.
145
+ * Em `remote`, o componente emite `brSelectSearch`; a aplicação deve buscar,
146
+ * validar e aplicar as opções por `setOptions()`.
147
+ * @default 'local'
148
+ */
149
+ this.searchMode = 'local';
150
+ /**
151
+ * Indica que uma busca remota de opções está pendente.
152
+ * Enquanto ativo, novas opções não podem ser selecionadas; a aplicação
153
+ * continua responsável por debounce, cancelamento, erros e autenticação.
154
+ * @default false
155
+ */
156
+ this.loading = false;
157
+ /**
158
+ * Exibe o ícone de busca no campo de entrada.
159
+ *
160
+ * @default false
161
+ */
162
+ this.showSearchIcon = false;
163
+ /**
164
+ * Rótulo apresentado quando todas as opções já estão selecionadas no modo múltiplo.
165
+ *
166
+ * @default 'Desselecionar todos'
167
+ */
168
+ this.unselectAllLabel = Select.DESELECT_ALL_LABEL;
169
+ /**
170
+ * Opções fornecidas como array ou JSON, além das opções projetadas por slot.
171
+ *
172
+ * @deprecated O formato de opções tipado atual é preferível; o formato legado permanece aceito.
173
+ */
174
+ this.options = [];
175
+ /** Identificador público do controle. */
176
+ this.customId = `br-select-${selectId++}`;
177
+ /** Quantidade mínima de opções selecionadas no modo múltiplo. */
178
+ this.minSelections = 0;
179
+ /** Quantidade máxima de opções selecionadas no modo múltiplo. */
180
+ this.maxSelections = 0;
181
+ this.shouldRestoreSelectedOptionOnOpen = false;
182
+ this.pendingOptions = null;
183
+ this.slotElement = null;
184
+ this.handleSlotChange = () => this.syncOptionsFromSlot();
185
+ this.lastEmittedStateKey = '';
186
+ this.isStateChangeReady = false;
187
+ this.isValueChangeReady = false;
188
+ this.listboxId = `${this.customId}-listbox`;
189
+ this.activeOptionIndex = -1;
190
+ this.searchTerm = '';
191
+ this.formDisabled = false;
192
+ this.isValidating = false;
193
+ this.validatorMessage = null;
194
+ this.hasFeedbackSlot = false;
195
+ this.hasValidationLoadingSlot = false;
196
+ this.selectedValuesState = [];
197
+ this.customValidationMessage = '';
198
+ this.validationRunId = 0;
199
+ this.lastAnnouncedOpen = false;
200
+ this.isApplyingExternalValue = false;
201
+ this.suppressValueChange = false;
202
+ this.hasImperativeOptions = false;
203
+ this.remoteSelectedOptions = new Map();
204
+ this.selectionInitialized = false;
205
+ this.selectedValues = [];
206
+ this.suppressFocusOpen = false;
207
+ /**
208
+ * Sincroniza as opções declaradas no slot com a lista interna renderizada.
209
+ *
210
+ * @remarks
211
+ * Esse passo mantém alinhados o estado visual da lista e o texto exibido no input
212
+ * quando as opções são adicionadas, removidas ou alteradas dinamicamente.
213
+ */
214
+ this.syncOptionsFromSlot = (updateDisplayValue = true) => {
215
+ if (this.hasImperativeOptions)
216
+ return;
217
+ const nodes = this.slotElement?.assignedNodes({ flatten: true }) ?? Array.from(this.el.childNodes);
218
+ const options = nodes.map((n) => this.nodeToOption(n)).filter((o) => Boolean(o));
219
+ // Envia opções para o br-select-list
220
+ if (this.selectListElement)
221
+ this.selectListElement.options = this.getListOptions(options);
222
+ if (updateDisplayValue)
223
+ this.syncDisplayValue(options);
224
+ };
225
+ }
226
+ formDisabledCallback(disabled) {
227
+ this.formDisabled = disabled;
228
+ }
229
+ formResetCallback() {
230
+ this.validationRunId++;
231
+ this.validatorMessage = null;
232
+ this.customValidationMessage = '';
233
+ this.applySelectedValue(this.initialValue);
234
+ }
235
+ formStateRestoreCallback(state) {
236
+ if (typeof state !== 'string' || state === '')
237
+ return;
238
+ try {
239
+ this.applySelectedValue(JSON.parse(state));
240
+ }
241
+ catch {
242
+ this.applySelectedValue(state);
243
+ }
244
+ }
245
+ componentWillLoad() {
246
+ this.hasFeedbackSlot = hasNamedLightDomSlot(this.el, 'feedback');
247
+ this.hasValidationLoadingSlot = hasNamedLightDomSlot(this.el, 'validation-loading');
248
+ this.setSelectionMode(this.effectiveMultiple);
249
+ const initialOptions = this.getHostOptions();
250
+ const propOptions = this.getOptionsProp();
251
+ const sourceOptions = initialOptions.length === 0 && propOptions.length > 0 ? propOptions : initialOptions;
252
+ this.setSelectedValues(this.valueFromPublicValue(this.value) ??
253
+ sourceOptions.filter((option) => option.selected).map((option) => option.value));
254
+ this.selectionInitialized = true;
255
+ if (initialOptions.length === 0 && propOptions.length > 0) {
256
+ this.pendingOptions = propOptions;
257
+ this.syncDisplayValue(propOptions);
258
+ }
259
+ else {
260
+ this.syncDisplayValue(initialOptions);
261
+ }
262
+ this.initialValue = Array.isArray(this.value) ? [...this.value] : this.value;
263
+ this.syncFormState();
264
+ }
265
+ componentDidLoad() {
266
+ this.lastEmittedStateKey = this.getStateChangeKey();
267
+ this.isStateChangeReady = true;
268
+ this.setSelectionMode(this.effectiveMultiple);
269
+ // Inicializa sincronização de opções a partir do slot
270
+ this.slotElement = this.el.shadowRoot?.querySelector('slot:not([name])');
271
+ if (this.slotElement) {
272
+ this.syncOptionsFromSlot(false);
273
+ this.slotElement.addEventListener('slotchange', this.handleSlotChange);
274
+ }
275
+ if (this.pendingOptions && this.selectListElement) {
276
+ this.selectListElement.options = this.getListOptions(this.pendingOptions);
277
+ this.pendingOptions = null;
278
+ }
279
+ this.isValueChangeReady = true;
280
+ this.lastAnnouncedOpen = this.effectiveOpen;
281
+ if (this.effectiveOpen)
282
+ this.attachBlockingSurfaceListener();
283
+ this.updateValidity();
284
+ }
285
+ componentDidRender() {
286
+ this.syncNativeSelectSelection();
287
+ this.updateValidity();
288
+ }
289
+ disconnectedCallback() {
290
+ if (this.slotElement) {
291
+ this.slotElement.removeEventListener('slotchange', this.handleSlotChange);
292
+ this.slotElement = null;
293
+ }
294
+ this.detachBlockingSurfaceListener();
295
+ }
296
+ get effectiveMultiple() {
297
+ return this.multiple ?? this.isMultiple;
298
+ }
299
+ get effectiveInline() {
300
+ return this.inline ?? this.isInline;
301
+ }
302
+ get effectiveOpen() {
303
+ return this.open ?? this.isOpen;
304
+ }
305
+ valueFromPublicValue(value) {
306
+ if (this.effectiveMultiple)
307
+ return Array.isArray(value) ? [...new Set(value.filter(Boolean))] : null;
308
+ return typeof value === 'string' && value ? [value] : null;
309
+ }
310
+ setSelectedValues(values) {
311
+ const next = [...new Set(values.filter(Boolean))];
312
+ if (!this.effectiveMultiple && next.length > 1)
313
+ next.splice(1);
314
+ if (this.selectedValues.length === next.length &&
315
+ this.selectedValues.every((value, index) => value === next[index]))
316
+ return;
317
+ this.selectedValues = next;
318
+ this.selectedValuesState = next;
319
+ }
320
+ get canonicalSelectedValues() {
321
+ // A leitura do @State registra a dependência reativa; o campo síncrono evita snapshots atrasados na mesma interação.
322
+ void this.selectedValuesState;
323
+ return this.selectedValues;
324
+ }
325
+ applyCanonicalSelection(options, values = this.canonicalSelectedValues) {
326
+ if (!this.selectionInitialized)
327
+ return options.map((option) => ({ ...option }));
328
+ const selected = new Set(values);
329
+ return options.map((option) => ({ ...option, selected: selected.has(option.value) }));
330
+ }
331
+ getListOptions(options) {
332
+ const normalized = this.applyCanonicalSelection(options).filter((option) => option.value !== '__select_all__');
333
+ if (!this.effectiveMultiple)
334
+ return normalized;
335
+ const selectable = normalized.filter((option) => !this.isSelectAllLabel(this.getOptionLabel(option)));
336
+ const allSelected = selectable.length > 0 && selectable.every((option) => Boolean(option.selected));
337
+ const anySelected = selectable.some((option) => Boolean(option.selected));
338
+ return [
339
+ {
340
+ value: '__select_all__',
341
+ label: allSelected ? this.unselectAllLabel : this.selectAllLabel,
342
+ selected: allSelected,
343
+ indeterminate: anySelected && !allSelected,
344
+ },
345
+ ...selectable,
346
+ ];
347
+ }
348
+ isDisabled() {
349
+ return isFormControlDisabled(this.disabled, this.formDisabled);
350
+ }
351
+ handleDisabledChange(isDisabled) {
352
+ if (isDisabled && this.effectiveOpen) {
353
+ this.close();
354
+ return;
355
+ }
356
+ this.emitStateChange();
357
+ }
358
+ handleIsOpenChange(isOpen) {
359
+ if (this.open === undefined)
360
+ this.syncOpenState(isOpen);
361
+ }
362
+ handleFilterableChange(filterable) {
363
+ if (!filterable) {
364
+ this.clearSearch();
365
+ }
366
+ }
367
+ handleLoadingChange(loading) {
368
+ if (this.selectListElement)
369
+ this.selectListElement.loading = loading;
370
+ }
371
+ handleIsMultipleChange(isMultiple) {
372
+ if (this.multiple === undefined)
373
+ this.setSelectionMode(isMultiple);
374
+ this.syncDisplayValue();
375
+ }
376
+ handleMultipleChange(multiple) {
377
+ if (multiple !== undefined)
378
+ this.setSelectionMode(multiple);
379
+ this.syncDisplayValue();
380
+ }
381
+ handleOpenChange(open) {
382
+ if (open !== undefined)
383
+ this.syncOpenState(open);
384
+ }
385
+ handleExternalValueChange(value) {
386
+ if (this.isApplyingExternalValue)
387
+ return;
388
+ this.applySelectedValue(value);
389
+ }
390
+ handleOptionsChange() {
391
+ const options = this.getOptionsProp();
392
+ void this.setOptions(options);
393
+ }
394
+ syncOpenState(isOpen) {
395
+ if (this.lastAnnouncedOpen !== isOpen) {
396
+ (isOpen ? this.opened : this.closed).emit();
397
+ this.lastAnnouncedOpen = isOpen;
398
+ }
399
+ if (isOpen) {
400
+ this.attachBlockingSurfaceListener();
401
+ this.selectInputElement?.flipUp();
402
+ void this.openListAndRestorePointerFocus();
403
+ }
404
+ else {
405
+ this.detachBlockingSurfaceListener();
406
+ this.selectInputElement?.flipDown();
407
+ void this.selectListElement?.close();
408
+ }
409
+ this.emitStateChange();
410
+ }
411
+ attachBlockingSurfaceListener() {
412
+ this.cleanupBlockingSurfaceDismissal ?? (this.cleanupBlockingSurfaceDismissal = listenForExternalBlockingSurface(this.el, () => void this.close()));
413
+ }
414
+ detachBlockingSurfaceListener() {
415
+ this.cleanupBlockingSurfaceDismissal?.();
416
+ this.cleanupBlockingSurfaceDismissal = undefined;
417
+ }
418
+ handleSelectInputFocus() {
419
+ this.activeOptionIndex = -1;
420
+ if (this.suppressFocusOpen)
421
+ return;
422
+ if (this.filterable && !this.effectiveOpen) {
423
+ this.clearSearch();
424
+ void this.show();
425
+ }
426
+ }
427
+ handleSelectInputValueChange(event) {
428
+ if (!this.filterable || this.isDisabled())
429
+ return;
430
+ const nextSearchTerm = event.detail ?? '';
431
+ this.searchTerm = nextSearchTerm;
432
+ this.activeOptionIndex = -1;
433
+ this.brSelectSearch.emit({ query: nextSearchTerm });
434
+ /*
435
+ * A chamada imperativa garante que a transição para string vazia também
436
+ * alcance a lista interna. Isso evita depender apenas da remoção/atualização
437
+ * do atributo `search-term` no custom element.
438
+ */
439
+ void this.getSelectListController()?.setSearchTerm?.(nextSearchTerm);
440
+ if (!this.effectiveOpen) {
441
+ void this.show();
442
+ }
443
+ }
444
+ handleSelectInputActionClick() {
445
+ this.toggleOpenFromPointer();
446
+ }
447
+ handleSelectInputClick() {
448
+ if (this.filterable) {
449
+ if (!this.effectiveOpen) {
450
+ this.shouldRestoreSelectedOptionOnOpen = true;
451
+ void this.show();
452
+ }
453
+ return;
454
+ }
455
+ this.toggleOpenFromPointer();
456
+ }
457
+ handleSelectOptionStateChange(event) {
458
+ event.stopPropagation();
459
+ const detail = event.detail;
460
+ // Use a lista interna para preservar rótulos e opções remotas enquanto as
461
+ // props projetadas aguardam a próxima renderização.
462
+ const listOptions = this.getSelectListController()?.options;
463
+ const sourceOptions = Array.isArray(listOptions) && listOptions.length > 0
464
+ ? listOptions.map((option) => ({ ...option }))
465
+ : this.getCurrentOptions();
466
+ // No modo simples, o evento é a decisão final da interação. A lista
467
+ // virtualizada e as opções projetadas podem ainda conter o snapshot da
468
+ // interação anterior durante cliques consecutivos; derivar a coleção a
469
+ // partir do valor do evento evita que esse snapshot reapareça no valor
470
+ // público ou no formulário.
471
+ const selectableValues = sourceOptions
472
+ .filter((option) => !this.isSelectAllLabel(this.getOptionLabel(option)))
473
+ .map((option) => option.value);
474
+ const transition = this.isSelectAllLabel(detail.label ?? detail.value)
475
+ ? transitionAllSelection(this.selectedValues, Boolean(detail.selected), selectableValues)
476
+ : transitionSelection({
477
+ currentValues: this.selectedValues,
478
+ multiple: this.effectiveMultiple,
479
+ value: detail.value,
480
+ selected: Boolean(detail.selected),
481
+ });
482
+ this.setSelectedValues(transition.values);
483
+ const options = this.applyCanonicalSelection(sourceOptions, transition.values);
484
+ if (this.selectListElement)
485
+ this.selectListElement.options = this.getListOptions(options);
486
+ this.reflectRenderedListSelection(transition.values);
487
+ this.syncSlottedOptionSelection(transition.values);
488
+ this.rememberRemoteSelections(options);
489
+ this.syncDisplayValue(options);
490
+ this.syncActiveOptionIndex(event.detail);
491
+ this.emitStateChange(detail);
492
+ this.updateValidity();
493
+ if (!transition.changed)
494
+ return;
495
+ if (!this.effectiveMultiple) {
496
+ this.suppressFocusOpen = true;
497
+ void this.selectInputElement?.setFocus?.();
498
+ void this.close().finally(() => {
499
+ this.suppressFocusOpen = false;
500
+ });
501
+ }
502
+ dispatchNativeFormEvent(this.el, 'input');
503
+ dispatchNativeFormEvent(this.el, 'change');
504
+ }
505
+ handleSelectOptionHover(event) {
506
+ this.optionHover.emit(event.detail);
507
+ }
508
+ // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: centraliza a navegação por teclado do componente.
509
+ async handleKeyDown(event) {
510
+ if (this.isDisabled())
511
+ return;
512
+ const path = this.getEventPath(event);
513
+ const isFromInput = path.includes(this.selectInputElement);
514
+ const isFromList = path.includes(this.selectListElement);
515
+ if (!isFromInput && !isFromList)
516
+ return;
517
+ switch (event.key) {
518
+ case 'ArrowDown':
519
+ event.preventDefault();
520
+ await this.openAndFocusBoundary(isFromInput, 1);
521
+ return;
522
+ case 'ArrowUp':
523
+ event.preventDefault();
524
+ await this.openAndFocusBoundary(isFromInput, -1);
525
+ return;
526
+ case 'Home':
527
+ if (!this.effectiveOpen)
528
+ return;
529
+ event.preventDefault();
530
+ await this.focusOptionByIndex(0);
531
+ return;
532
+ case 'End':
533
+ if (!this.effectiveOpen)
534
+ return;
535
+ event.preventDefault();
536
+ await this.focusOptionByIndex(this.getNavigableOptions().length - 1);
537
+ return;
538
+ case 'Enter':
539
+ case ' ':
540
+ if (isFromInput && this.filterable && event.key === ' ') {
541
+ return;
542
+ }
543
+ if (isFromList) {
544
+ return;
545
+ }
546
+ event.preventDefault();
547
+ if (!this.effectiveOpen) {
548
+ await this.show();
549
+ await this.focusInitialOption(1);
550
+ return;
551
+ }
552
+ await this.selectFocusedOption();
553
+ return;
554
+ case 'Escape':
555
+ if (!this.effectiveOpen)
556
+ return;
557
+ event.preventDefault();
558
+ await this.close();
559
+ this.activeOptionIndex = -1;
560
+ await this.selectInputElement?.setFocus?.();
561
+ return;
562
+ case 'Tab':
563
+ if (!this.effectiveOpen)
564
+ return;
565
+ await this.close();
566
+ this.activeOptionIndex = -1;
567
+ return;
568
+ default:
569
+ return;
570
+ }
571
+ }
572
+ handleWindowClick(ev) {
573
+ this.handleOutsideClick(ev);
574
+ }
575
+ /**
576
+ * Habilita o select para interação do usuário.
577
+ *
578
+ * @returns Uma promise concluída após a atualização do estado.
579
+ */
580
+ async enable() {
581
+ this.disabled = false;
582
+ }
583
+ /**
584
+ * Desabilita o select e impede novas interações.
585
+ *
586
+ * @returns Uma promise concluída após a atualização do estado.
587
+ */
588
+ async disable() {
589
+ this.disabled = true;
590
+ }
591
+ /**
592
+ * Abre a lista de opções quando o componente está habilitado.
593
+ *
594
+ * @returns Uma promise concluída após a atualização do estado.
595
+ */
596
+ async show() {
597
+ if (this.isDisabled())
598
+ return;
599
+ if (this.open !== undefined)
600
+ this.open = true;
601
+ else
602
+ this.isOpen = true;
603
+ }
604
+ /**
605
+ * Fecha a lista de opções quando o componente está habilitado.
606
+ *
607
+ * @returns Uma promise concluída após a atualização do estado.
608
+ */
609
+ async close() {
610
+ if (this.isDisabled())
611
+ return;
612
+ if (this.open !== undefined)
613
+ this.open = false;
614
+ else
615
+ this.isOpen = false;
616
+ this.clearSearch();
617
+ }
618
+ /**
619
+ * Alterna entre os estados aberto e fechado do select.
620
+ *
621
+ * @returns {Promise<void>} Uma promise concluída após a atualização do estado.
622
+ */
623
+ async toggleOpen() {
624
+ if (this.isDisabled())
625
+ return;
626
+ if (this.open !== undefined)
627
+ this.open = !this.open;
628
+ else
629
+ this.isOpen = !this.isOpen;
630
+ }
631
+ /**
632
+ * Limpa a seleção atual.
633
+ *
634
+ * @deprecated Use `setValue('')` ou a API de formulário.
635
+ */
636
+ async clear() {
637
+ await this.setValue(this.effectiveMultiple ? [] : '');
638
+ }
639
+ /**
640
+ * Retorna o valor público atual.
641
+ *
642
+ * @deprecated Leia a propriedade `value` diretamente.
643
+ */
644
+ async getValue() {
645
+ return this.value ?? (this.effectiveMultiple ? [] : '');
646
+ }
647
+ /**
648
+ * Define o valor público do select.
649
+ *
650
+ * @deprecated Atribua a propriedade `value` diretamente.
651
+ */
652
+ async setValue(value) {
653
+ this.applySelectedValue(value);
654
+ }
655
+ /**
656
+ * Move o foco para o campo interno.
657
+ *
658
+ * @deprecated Use o foco nativo do componente quando possível.
659
+ */
660
+ async setFocus() {
661
+ await this.selectInputElement?.setFocus?.();
662
+ }
663
+ async checkValidity() {
664
+ return this.elementInternals?.checkValidity?.() ?? true;
665
+ }
666
+ async reportValidity() {
667
+ return this.elementInternals?.reportValidity?.() ?? true;
668
+ }
669
+ async setCustomValidity(message) {
670
+ this.customValidationMessage = message;
671
+ this.updateValidity();
672
+ }
673
+ async getValidationState() {
674
+ return getFormValidationState(this.elementInternals);
675
+ }
676
+ async validate() {
677
+ const validator = this.resolveValidator();
678
+ if (!validator || this.isDisabled())
679
+ return this.checkValidity();
680
+ const runId = ++this.validationRunId;
681
+ this.isValidating = true;
682
+ this.validatorMessage = null;
683
+ this.updateValidity();
684
+ this.brSelectValidationChange.emit({ validating: true, valid: null, message: null });
685
+ let message = null;
686
+ try {
687
+ const currentValue = this.effectiveMultiple
688
+ ? [...(Array.isArray(this.value) ? this.value : [])]
689
+ : String(this.value ?? '');
690
+ message = (await validator(currentValue)) || null;
691
+ }
692
+ catch {
693
+ message = 'Não foi possível validar a seleção.';
694
+ }
695
+ if (runId !== this.validationRunId)
696
+ return false;
697
+ this.validatorMessage = message;
698
+ this.isValidating = false;
699
+ this.updateValidity();
700
+ const valid = message === null && (await this.checkValidity());
701
+ this.brSelectValidationChange.emit({ validating: false, valid, message });
702
+ return valid;
703
+ }
704
+ /**
705
+ * Substitui a coleção atual de opções por uma nova lista.
706
+ *
707
+ * @param options Opções que devem ser exibidas pela lista interna.
708
+ * Em `search-mode="remote"`, a seleção atual é preservada mesmo quando não
709
+ * aparece na resposta recebida.
710
+ * @returns Uma promise concluída após a sincronização das opções.
711
+ */
712
+ async setOptions(options) {
713
+ this.hasImperativeOptions = true;
714
+ const nextOptions = this.searchMode === 'remote' ? this.applyRemoteSelection(options) : options;
715
+ this.suppressValueChange = true;
716
+ try {
717
+ if (this.selectListElement) {
718
+ this.selectListElement.options = this.getListOptions(nextOptions);
719
+ }
720
+ else {
721
+ this.pendingOptions = nextOptions;
722
+ }
723
+ this.syncDisplayValue(nextOptions);
724
+ }
725
+ finally {
726
+ this.suppressValueChange = false;
727
+ }
728
+ }
729
+ /**
730
+ * Adiciona ou atualiza uma única opção na coleção interna.
731
+ *
732
+ * @param option Opção que deve ser inserida ou atualizada.
733
+ * @returns Uma promise concluída após a sincronização da opção.
734
+ */
735
+ async setOption(option) {
736
+ this.hasImperativeOptions = true;
737
+ const currentOptions = this.getCurrentOptions();
738
+ const index = currentOptions.findIndex((currentOption) => currentOption.value === option.value);
739
+ const nextOptions = [...currentOptions];
740
+ if (index === -1)
741
+ nextOptions.push(option);
742
+ else
743
+ nextOptions[index] = option;
744
+ if (this.selectListElement) {
745
+ this.selectListElement.options = this.getListOptions(nextOptions);
746
+ }
747
+ else {
748
+ this.pendingOptions = nextOptions;
749
+ }
750
+ this.syncDisplayValue(nextOptions);
751
+ }
752
+ getHostOptions() {
753
+ return Array.from(this.el.childNodes)
754
+ .map((node) => this.nodeToOption(node))
755
+ .filter((option) => Boolean(option));
756
+ }
757
+ nodeToOption(node) {
758
+ if (node.nodeType === Node.ELEMENT_NODE)
759
+ return this.elementToOption(node);
760
+ if (node.nodeType === Node.TEXT_NODE)
761
+ return this.textNodeToOption(node);
762
+ return null;
763
+ }
764
+ elementToOption(el) {
765
+ if (el.tagName.toLowerCase() === 'br-select-option')
766
+ return this.optionElementToData(el);
767
+ const text = (el.textContent || '').trim();
768
+ return text ? { value: text, label: text } : null;
769
+ }
770
+ textNodeToOption(textNode) {
771
+ const text = (textNode.textContent || '').trim();
772
+ return text ? { value: text, label: text } : null;
773
+ }
774
+ optionElementToData(el) {
775
+ const rawValue = el.getAttribute('value') ?? el.value ?? '';
776
+ const rawLabel = el.getAttribute('label') ?? el.label ?? '';
777
+ let value = String(rawValue || '').trim();
778
+ let label = String(rawLabel || '').trim();
779
+ const inner = this.extractInnerTextFromOption(el);
780
+ const content = (el.innerHTML || '').trim();
781
+ const selected = el.hasAttribute('selected') || Boolean(el.selected);
782
+ if (!value) {
783
+ if (inner)
784
+ value = inner.trim();
785
+ }
786
+ if (!label)
787
+ label = inner?.trim() || value;
788
+ return { value: value || '', label: label || undefined, selected, content: content || undefined };
789
+ }
790
+ extractInnerTextFromOption(el) {
791
+ const fromSlot = this.getAssignedSlotText(el);
792
+ if (fromSlot)
793
+ return fromSlot;
794
+ const fallback = (el.textContent || '').trim();
795
+ return fallback || null;
796
+ }
797
+ getAssignedSlotText(el) {
798
+ try {
799
+ const innerSlot = el.shadowRoot?.querySelector('slot:not([name])');
800
+ if (!innerSlot?.assignedNodes)
801
+ return null;
802
+ const text = innerSlot
803
+ .assignedNodes({ flatten: true })
804
+ .map((node) => (node.textContent || '').trim())
805
+ .filter(Boolean)
806
+ .join(' ')
807
+ .trim();
808
+ return text || null;
809
+ }
810
+ catch (_e) {
811
+ return null;
812
+ }
813
+ }
814
+ getOptionLabel(option) {
815
+ return (option.label ?? option.value).trim();
816
+ }
817
+ getDisplayValue(options = this.getCurrentOptions()) {
818
+ const selectedOptions = options.filter((option) => {
819
+ if (!option.selected)
820
+ return false;
821
+ const optionLabel = this.getOptionLabel(option);
822
+ return !this.isSelectAllLabel(optionLabel);
823
+ });
824
+ if (selectedOptions.length === 0)
825
+ return '';
826
+ if (!this.effectiveMultiple) {
827
+ return this.getOptionLabel(selectedOptions[0]);
828
+ }
829
+ const [firstSelected, ...otherSelected] = selectedOptions;
830
+ const firstLabel = this.getOptionLabel(firstSelected);
831
+ if (otherSelected.length === 0)
832
+ return firstLabel;
833
+ return `${firstLabel} + (${otherSelected.length})`;
834
+ }
835
+ syncDisplayValue(options) {
836
+ const resolvedOptions = this.getFormOptions(options ?? this.getCurrentOptions());
837
+ this.displayValue = this.getDisplayValue(resolvedOptions);
838
+ this.syncValue(resolvedOptions);
839
+ }
840
+ syncValue(options) {
841
+ this.setSelectedValues(options
842
+ .filter((option) => option.selected && !this.isSelectAllLabel(this.getOptionLabel(option)))
843
+ .map((option) => option.value));
844
+ const nextValue = this.getSerializedValue(options);
845
+ this.syncFormState(options);
846
+ if (this.value === nextValue)
847
+ return;
848
+ this.isApplyingExternalValue = true;
849
+ this.value = nextValue;
850
+ this.isApplyingExternalValue = false;
851
+ if (!this.isValueChangeReady || this.suppressValueChange)
852
+ return;
853
+ this.valueChange.emit(Array.isArray(nextValue) ? nextValue.join(',') : nextValue);
854
+ }
855
+ getSerializedValue(options) {
856
+ const selectedValues = options
857
+ .filter((option) => {
858
+ if (!option.selected)
859
+ return false;
860
+ const optionLabel = this.getOptionLabel(option);
861
+ return !this.isSelectAllLabel(optionLabel);
862
+ })
863
+ .map((option) => option.value);
864
+ if (this.effectiveMultiple)
865
+ return selectedValues;
866
+ if (selectedValues.length === 0)
867
+ return '';
868
+ return selectedValues[0];
869
+ }
870
+ getOptionsProp() {
871
+ if (Array.isArray(this.options))
872
+ return this.options;
873
+ try {
874
+ const parsed = JSON.parse(this.options || '[]');
875
+ return Array.isArray(parsed) ? parsed : [];
876
+ }
877
+ catch {
878
+ return [];
879
+ }
880
+ }
881
+ applySelectedValue(value) {
882
+ const currentOptions = this.getCurrentOptions();
883
+ const requestedValues = this.valueFromPublicValue(value) ?? [];
884
+ this.setSelectedValues(requestedValues);
885
+ const options = currentOptions.map((option) => ({
886
+ ...option,
887
+ selected: requestedValues.includes(option.value),
888
+ }));
889
+ this.isApplyingExternalValue = true;
890
+ if (this.selectListElement)
891
+ this.selectListElement.options = this.getListOptions(options);
892
+ else
893
+ this.pendingOptions = options;
894
+ this.reflectRenderedListSelection(requestedValues);
895
+ this.value = value;
896
+ this.isApplyingExternalValue = false;
897
+ this.remoteSelectedOptions.clear();
898
+ this.rememberRemoteSelections(options);
899
+ if (this.searchMode === 'remote') {
900
+ const selectedValues = new Set(Array.isArray(value) ? value : [value ?? '']);
901
+ selectedValues.forEach((selectedValue) => {
902
+ if (selectedValue && !currentOptions.some((option) => option.value === selectedValue)) {
903
+ this.remoteSelectedOptions.set(selectedValue, {
904
+ value: selectedValue,
905
+ label: selectedValue,
906
+ selected: true,
907
+ });
908
+ }
909
+ });
910
+ this.syncDisplayValue(this.getCurrentOptions());
911
+ return;
912
+ }
913
+ this.syncDisplayValue(options);
914
+ }
915
+ applyRemoteSelection(options) {
916
+ this.rememberRemoteSelections(this.getCurrentOptions());
917
+ const selectedValues = new Set(this.selectedValues);
918
+ const nextOptions = options.map((option) => ({
919
+ ...option,
920
+ selected: selectedValues.has(option.value) || Boolean(option.selected),
921
+ }));
922
+ this.rememberRemoteSelections(nextOptions);
923
+ return nextOptions;
924
+ }
925
+ rememberRemoteSelections(options) {
926
+ if (this.searchMode !== 'remote')
927
+ return;
928
+ const visibleValues = new Set(options.map((option) => option.value));
929
+ options.forEach((option) => {
930
+ if (option.selected)
931
+ this.remoteSelectedOptions.set(option.value, { ...option, selected: true });
932
+ else if (visibleValues.has(option.value))
933
+ this.remoteSelectedOptions.delete(option.value);
934
+ });
935
+ }
936
+ getFormOptions(options) {
937
+ if (this.searchMode !== 'remote')
938
+ return options;
939
+ const result = options.map((option) => ({ ...option }));
940
+ const existingValues = new Set(result.map((option) => option.value));
941
+ this.remoteSelectedOptions.forEach((option, value) => {
942
+ if (!existingValues.has(value))
943
+ result.push({ ...option, selected: true });
944
+ });
945
+ return result;
946
+ }
947
+ syncFormState(options = this.getCurrentOptions()) {
948
+ const selected = this.getFormOptions(options).filter((option) => option.selected && !this.isSelectAllLabel(this.getOptionLabel(option)));
949
+ const selectedValues = selected.map((option) => option.value);
950
+ const formValue = this.effectiveMultiple ? JSON.stringify(selectedValues) : (selectedValues[0] ?? null);
951
+ safeSetFormValue(this.elementInternals, formValue);
952
+ this.syncNativeSelectSelection(selectedValues);
953
+ this.updateValidity(selectedValues.length);
954
+ }
955
+ syncNativeSelectSelection(values = this.getSelectedValues()) {
956
+ const nativeSelect = this.getNativeSelect();
957
+ if (!nativeSelect)
958
+ return;
959
+ const selectedValues = new Set(values);
960
+ Array.from(nativeSelect.options).forEach((option) => {
961
+ option.selected = option.value === '' ? selectedValues.size === 0 : selectedValues.has(option.value);
962
+ });
963
+ }
964
+ getSelectedValues() {
965
+ return [...this.selectedValues];
966
+ }
967
+ updateValidity(selectedCount = this.getSelectedValues().length) {
968
+ const nativeSelect = this.getNativeSelect();
969
+ if (!nativeSelect)
970
+ return;
971
+ const selectionMessage = this.effectiveMultiple && this.minSelections > 0 && selectedCount < this.minSelections
972
+ ? `Selecione pelo menos ${this.minSelections} opções.`
973
+ : this.effectiveMultiple && this.maxSelections > 0 && selectedCount > this.maxSelections
974
+ ? `Selecione no máximo ${this.maxSelections} opções.`
975
+ : '';
976
+ nativeSelect.setCustomValidity(this.customValidationMessage || this.validatorMessage || selectionMessage);
977
+ syncNativeFormValidity(this.elementInternals, nativeSelect);
978
+ }
979
+ getNativeSelect() {
980
+ return (this.el.shadowRoot?.querySelector('select[part="hidden-select"]') ??
981
+ this.nativeSelect);
982
+ }
983
+ resolveValidator() {
984
+ return resolveFormValidator(this.validator);
985
+ }
986
+ getRenderedDisplayValue() {
987
+ return this.displayValue ?? this.getDisplayValue();
988
+ }
989
+ /**
990
+ * Retorna o id da opção atualmente ativa para consumo do `aria-activedescendant`.
991
+ *
992
+ * @returns O id da opção ativa ou `undefined` quando a lista está fechada.
993
+ */
994
+ getActiveDescendant() {
995
+ if (!this.effectiveOpen || this.activeOptionIndex < 0)
996
+ return undefined;
997
+ return `${this.listboxId}-option-${this.activeOptionIndex}`;
998
+ }
999
+ toggleOpenFromPointer() {
1000
+ if (!this.effectiveOpen) {
1001
+ this.shouldRestoreSelectedOptionOnOpen = true;
1002
+ }
1003
+ void this.toggleOpen();
1004
+ }
1005
+ async openListAndRestorePointerFocus() {
1006
+ await this.selectListElement?.open();
1007
+ if (!this.shouldRestoreSelectedOptionOnOpen)
1008
+ return;
1009
+ this.shouldRestoreSelectedOptionOnOpen = false;
1010
+ await this.scrollFirstSelectedOptionToTop();
1011
+ }
1012
+ async scrollFirstSelectedOptionToTop() {
1013
+ const options = this.getNavigableOptions();
1014
+ const firstSelectedIndex = options.findIndex((option) => !this.isSelectAllLabel(this.getOptionLabel(option)) && Boolean(option.selected));
1015
+ if (firstSelectedIndex < 0)
1016
+ return;
1017
+ const didScroll = await this.getSelectListController()?.scrollFirstSelectedOptionToTop?.();
1018
+ if (didScroll) {
1019
+ this.activeOptionIndex = firstSelectedIndex;
1020
+ }
1021
+ }
1022
+ async openAndFocusBoundary(fromInput, direction) {
1023
+ if (!this.effectiveOpen) {
1024
+ await this.show();
1025
+ await this.focusInitialOption(direction);
1026
+ return;
1027
+ }
1028
+ if (fromInput && this.activeOptionIndex < 0) {
1029
+ await this.focusInitialOption(direction);
1030
+ return;
1031
+ }
1032
+ await this.moveActiveOption(direction);
1033
+ }
1034
+ /**
1035
+ * Define qual opção deve receber foco ao abrir o select pelo teclado.
1036
+ *
1037
+ * @param direction Direção inicial da navegação. `1` abre do topo para baixo e `-1` do fim para cima.
1038
+ */
1039
+ async focusInitialOption(direction) {
1040
+ const options = this.getNavigableOptions();
1041
+ if (options.length === 0)
1042
+ return;
1043
+ const selectedIndex = options.findIndex((option) => Boolean(option.selected));
1044
+ const fallbackIndex = direction > 0 ? 0 : options.length - 1;
1045
+ const initialIndex = selectedIndex >= 0 ? selectedIndex : fallbackIndex;
1046
+ await this.focusOptionByIndex(initialIndex);
1047
+ }
1048
+ async moveActiveOption(step) {
1049
+ const options = this.getNavigableOptions();
1050
+ if (options.length === 0)
1051
+ return;
1052
+ const baseIndex = this.getCurrentActiveIndex();
1053
+ const nextIndex = Math.min(options.length - 1, Math.max(0, baseIndex + step));
1054
+ await this.focusOptionByIndex(nextIndex);
1055
+ }
1056
+ /**
1057
+ * Resolve o índice ativo atual a partir do estado local ou da opção já selecionada.
1058
+ *
1059
+ * @returns O índice que deve servir como base para a próxima navegação por teclado.
1060
+ */
1061
+ getCurrentActiveIndex() {
1062
+ if (this.activeOptionIndex >= 0)
1063
+ return this.activeOptionIndex;
1064
+ const options = this.getNavigableOptions();
1065
+ const selectedIndex = options.findIndex((option) => Boolean(option.selected));
1066
+ return selectedIndex >= 0 ? selectedIndex : 0;
1067
+ }
1068
+ /**
1069
+ * Encaminha o foco lógico para uma opção específica da lista interna.
1070
+ *
1071
+ * @param index Índice da opção que deve receber foco.
1072
+ */
1073
+ async focusOptionByIndex(index) {
1074
+ const didFocus = await this.getSelectListController()?.focusOption?.(index);
1075
+ if (didFocus) {
1076
+ this.activeOptionIndex = index;
1077
+ }
1078
+ }
1079
+ /**
1080
+ * Seleciona a opção atualmente ativa sem duplicar a lógica de seleção da lista.
1081
+ *
1082
+ * @remarks
1083
+ * Em modo simples, a opção ativa é sempre marcada. Em modo múltiplo, a seleção é alternada.
1084
+ */
1085
+ async selectFocusedOption() {
1086
+ const options = this.getNavigableOptions();
1087
+ if (options.length === 0)
1088
+ return;
1089
+ const index = this.getCurrentActiveIndex();
1090
+ const option = options[index];
1091
+ const nextSelected = this.effectiveMultiple ? !option?.selected : true;
1092
+ if (this.effectiveMultiple && index === 0 && option && !this.isSelectAllLabel(this.getOptionLabel(option))) {
1093
+ this.handleSelectOptionStateChange(new CustomEvent('brSelectOptionStateChange', {
1094
+ detail: {
1095
+ value: '__select_all__',
1096
+ label: this.selectAllLabel,
1097
+ selected: true,
1098
+ disabled: false,
1099
+ },
1100
+ }));
1101
+ return;
1102
+ }
1103
+ const didSelect = await this.getSelectListController()?.setOptionSelected?.(index, nextSelected);
1104
+ if (didSelect) {
1105
+ this.activeOptionIndex = index;
1106
+ }
1107
+ }
1108
+ syncActiveOptionIndex(detail) {
1109
+ const options = this.getNavigableOptions();
1110
+ const optionIndex = options.findIndex((option) => option.value === detail.value);
1111
+ if (optionIndex >= 0) {
1112
+ this.activeOptionIndex = optionIndex;
1113
+ }
1114
+ }
1115
+ /**
1116
+ * Reflete no slot a seleção que foi consolidada pela lista interna.
1117
+ *
1118
+ * @param detail Estado emitido pela opção que disparou a mudança.
1119
+ * @remarks
1120
+ * Essa sincronização mantém as props/atributos das opções declaradas pelo consumidor em
1121
+ * conformidade com o estado calculado internamente, inclusive no caso do "selecionar todos".
1122
+ */
1123
+ syncSlottedOptionSelection(values = this.selectedValues) {
1124
+ const slottedOptions = Array.from(this.el.children).filter((el) => el.tagName.toLowerCase() === 'br-select-option');
1125
+ if (slottedOptions.length === 0)
1126
+ return;
1127
+ const selectedValues = new Set(values);
1128
+ slottedOptions.forEach((option) => {
1129
+ const resolved = this.optionElementToData(option).value;
1130
+ option.selected = selectedValues.has(resolved);
1131
+ option.indeterminate = false;
1132
+ if (option.selected)
1133
+ option.setAttribute('selected', '');
1134
+ else
1135
+ option.removeAttribute('selected');
1136
+ });
1137
+ if (!this.effectiveMultiple)
1138
+ return;
1139
+ const selectableOptions = slottedOptions.filter((option) => {
1140
+ const optionLabel = (option.label ?? option.value).trim();
1141
+ return !this.isSelectAllLabel(optionLabel);
1142
+ });
1143
+ const allSelected = selectableOptions.length > 0 && selectableOptions.every((option) => Boolean(option.selected));
1144
+ const anySelected = selectableOptions.some((option) => Boolean(option.selected));
1145
+ slottedOptions.forEach((option) => {
1146
+ const optionLabel = (option.label ?? option.value).trim();
1147
+ if (!this.isSelectAllLabel(optionLabel))
1148
+ return;
1149
+ option.indeterminate = anySelected && !allSelected;
1150
+ option.selected = allSelected;
1151
+ this.normalizeSelectAllState(option);
1152
+ if (option.selected)
1153
+ option.setAttribute('selected', '');
1154
+ else
1155
+ option.removeAttribute('selected');
1156
+ });
1157
+ }
1158
+ reflectRenderedListSelection(values) {
1159
+ const renderedOptions = this.selectListElement?.shadowRoot?.querySelectorAll('br-select-option');
1160
+ if (!renderedOptions)
1161
+ return;
1162
+ const selectedValues = new Set(values);
1163
+ renderedOptions.forEach((option) => {
1164
+ if (this.isSelectAllLabel(option.label))
1165
+ return;
1166
+ option.selected = selectedValues.has(option.value);
1167
+ });
1168
+ }
1169
+ isSelectAllLabel(label) {
1170
+ return label === this.selectAllLabel || label === this.unselectAllLabel;
1171
+ }
1172
+ getSelectAllLabel(selected, indeterminate) {
1173
+ return selected && !indeterminate ? this.unselectAllLabel : this.selectAllLabel;
1174
+ }
1175
+ normalizeSelectAllState(option) {
1176
+ const selected = Boolean(option.selected) && !option.indeterminate;
1177
+ const indeterminate = Boolean(option.indeterminate);
1178
+ option.selected = selected;
1179
+ option.indeterminate = indeterminate;
1180
+ option.label = this.getSelectAllLabel(selected, indeterminate);
1181
+ }
1182
+ handleOutsideClick(ev) {
1183
+ if (!this.effectiveOpen)
1184
+ return;
1185
+ const clickPath = this.getEventPath(ev);
1186
+ const isClickInsideSelect = clickPath.includes(this.el);
1187
+ if (isClickInsideSelect)
1188
+ return;
1189
+ this.close();
1190
+ }
1191
+ emitStateChange(option) {
1192
+ const payload = this.getStateChangeDetail(option);
1193
+ const nextStateKey = JSON.stringify(payload);
1194
+ if (!this.isStateChangeReady) {
1195
+ this.lastEmittedStateKey = nextStateKey;
1196
+ return;
1197
+ }
1198
+ if (this.lastEmittedStateKey === nextStateKey)
1199
+ return;
1200
+ this.lastEmittedStateKey = nextStateKey;
1201
+ this.brSelectStateChange.emit(payload);
1202
+ }
1203
+ getStateChangeDetail(optionChange) {
1204
+ const payload = {
1205
+ isOpen: this.effectiveOpen,
1206
+ };
1207
+ const currentOptions = this.getFormOptions(this.getCurrentOptions());
1208
+ if (this.effectiveMultiple) {
1209
+ payload.options = currentOptions
1210
+ .filter((option) => !this.isSelectAllLabel((option.label ?? option.value).trim()))
1211
+ .map((option) => this.normalizeOptionForOutput(option));
1212
+ return payload;
1213
+ }
1214
+ const selectedOption = currentOptions.find((option) => Boolean(option.selected));
1215
+ if (selectedOption) {
1216
+ payload.option = this.normalizeOptionForOutput(selectedOption);
1217
+ return payload;
1218
+ }
1219
+ if (optionChange?.value) {
1220
+ const { disabled: _disabled, ...normalizedOption } = optionChange;
1221
+ payload.option = {
1222
+ ...normalizedOption,
1223
+ label: optionChange.label ?? optionChange.value,
1224
+ };
1225
+ }
1226
+ return payload;
1227
+ }
1228
+ normalizeOptionForOutput(option) {
1229
+ const optionLabel = (option.label ?? option.value).trim();
1230
+ const isSelectAll = this.isSelectAllLabel(optionLabel);
1231
+ const { disabled: _disabled, ...optionWithoutDisabled } = option;
1232
+ if (isSelectAll) {
1233
+ return optionWithoutDisabled;
1234
+ }
1235
+ const { indeterminate, ...normalized } = optionWithoutDisabled;
1236
+ return normalized;
1237
+ }
1238
+ getStateChangeKey() {
1239
+ return JSON.stringify(this.getStateChangeDetail());
1240
+ }
1241
+ /**
1242
+ * Obtém o snapshot atual das opções respeitando a fonte mais atual disponível.
1243
+ *
1244
+ * @returns A coleção de opções normalizadas para leitura do estado público.
1245
+ * @remarks
1246
+ * A precedência é: lista interna, opções pendentes, conteúdo do slot e, por último,
1247
+ * os filhos atuais do host.
1248
+ */
1249
+ // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: prioriza a precedência entre slot, lista e opções remotas.
1250
+ getCurrentOptions() {
1251
+ // As opções projetadas são a fonte canônica quando não há coleção
1252
+ // imperativa: a lista virtualizada pode manter um snapshot enquanto o
1253
+ // consumidor altera `selected` diretamente no slot.
1254
+ if (!this.hasImperativeOptions && this.slotElement) {
1255
+ const nodes = this.slotElement.assignedNodes({ flatten: true }) ?? [];
1256
+ const slotOptions = nodes
1257
+ .map((node) => this.nodeToOption(node))
1258
+ .filter((option) => Boolean(option));
1259
+ if (slotOptions.length > 0) {
1260
+ const normalizedSlotOptions = this.applyCanonicalSelection(slotOptions);
1261
+ if (this.effectiveMultiple &&
1262
+ !normalizedSlotOptions.some((option) => this.isSelectAllLabel(this.getOptionLabel(option)))) {
1263
+ normalizedSlotOptions.unshift({
1264
+ value: '__select_all__',
1265
+ label: this.selectAllLabel,
1266
+ selected: false,
1267
+ indeterminate: false,
1268
+ });
1269
+ }
1270
+ return normalizedSlotOptions;
1271
+ }
1272
+ }
1273
+ const listOptions = this.getSelectListController()?.options;
1274
+ if (Array.isArray(listOptions) && listOptions.length > 0) {
1275
+ const normalizedListOptions = listOptions.map((option) => ({ ...option }));
1276
+ const hasRealOptions = normalizedListOptions.some((option) => !this.isSelectAllLabel(this.getOptionLabel(option)));
1277
+ if (hasRealOptions) {
1278
+ if (this.effectiveMultiple &&
1279
+ !normalizedListOptions.some((option) => this.isSelectAllLabel(this.getOptionLabel(option)))) {
1280
+ normalizedListOptions.unshift({
1281
+ value: '__select_all__',
1282
+ label: this.selectAllLabel,
1283
+ selected: false,
1284
+ indeterminate: false,
1285
+ });
1286
+ }
1287
+ return this.applyCanonicalSelection(normalizedListOptions);
1288
+ }
1289
+ }
1290
+ if (this.pendingOptions) {
1291
+ return this.applyCanonicalSelection(this.pendingOptions);
1292
+ }
1293
+ const hostOptions = this.applyCanonicalSelection(this.getHostOptions());
1294
+ if (this.effectiveMultiple && hostOptions.length > 0) {
1295
+ return [
1296
+ {
1297
+ value: '__select_all__',
1298
+ label: this.selectAllLabel,
1299
+ selected: false,
1300
+ indeterminate: false,
1301
+ },
1302
+ ...hostOptions,
1303
+ ];
1304
+ }
1305
+ return hostOptions;
1306
+ }
1307
+ normalizeSearchText(value) {
1308
+ return value
1309
+ .normalize('NFD')
1310
+ .replace(/[\u0300-\u036f]/g, '')
1311
+ .toLocaleLowerCase('pt-BR')
1312
+ .trim();
1313
+ }
1314
+ getNavigableOptions() {
1315
+ const options = this.getCurrentOptions();
1316
+ const normalizedTerm = this.normalizeSearchText(this.searchTerm);
1317
+ if (!this.filterable || this.searchMode === 'remote' || !normalizedTerm)
1318
+ return options;
1319
+ return options.filter((option) => {
1320
+ if (this.isSelectAllLabel(this.getOptionLabel(option)))
1321
+ return this.effectiveMultiple;
1322
+ const label = this.normalizeSearchText(this.getOptionLabel(option));
1323
+ const value = this.normalizeSearchText(option.value);
1324
+ return label.includes(normalizedTerm) || value.includes(normalizedTerm);
1325
+ });
1326
+ }
1327
+ clearSearch() {
1328
+ if (!this.searchTerm)
1329
+ return;
1330
+ this.searchTerm = '';
1331
+ this.activeOptionIndex = -1;
1332
+ void this.getSelectListController()?.setSearchTerm?.('');
1333
+ }
1334
+ getEventPath(ev) {
1335
+ return ev.composedPath ? ev.composedPath() : (ev.path ?? []);
1336
+ }
1337
+ getSelectListController() {
1338
+ return this.selectListElement;
1339
+ }
1340
+ getCssClassMap() {
1341
+ return {
1342
+ 'br-select': true,
1343
+ };
1344
+ }
1345
+ getAccessibleLabel() {
1346
+ return this.label?.trim() || this.placeholder?.trim() || 'Selecao';
1347
+ }
1348
+ setSelectionMode(isMultiple) {
1349
+ this.selectListElement?.setMultiple(isMultiple);
1350
+ }
1351
+ renderSelectInput() {
1352
+ return (h("br-select-input", { part: "input", exportparts: "container:input-container, input:input-field, label:input-label, group:input-group, icon:input-icon, action:input-action, action-button:input-action-button", ref: (el) => (this.selectInputElement = el), "aria-activedescendant": this.getActiveDescendant(), "aria-controls": this.listboxId, "aria-disabled": String(this.isDisabled()), "aria-expanded": String(this.effectiveOpen), "aria-haspopup": "listbox", "aria-label": this.getAccessibleLabel(), "aria-required": String(this.required), borderless: this.borderless, "is-inline": this.effectiveInline, "is-open": this.effectiveOpen, label: this.label, name: this.name, placeholder: this.placeholder, required: this.required, disabled: this.isDisabled(), filterable: this.filterable, showSearchIcon: this.showSearchIcon, autocomplete: this.autocomplete, "input-width": this.inputWidth, role: "combobox", value: this.filterable && this.effectiveOpen ? this.searchTerm : this.getRenderedDisplayValue() }));
1353
+ }
1354
+ renderSelectList() {
1355
+ return (h("br-select-list", { part: "list", options: this.getCurrentOptions(), exportparts: "list, option, checkbox, select-all, empty-option, option-checkbox, option-radio", "active-option-index": this.activeOptionIndex, "aria-label": this.getAccessibleLabel(), "aria-multiselectable": this.effectiveMultiple ? 'true' : 'false', id: this.listboxId, "visible-items": this.visibleItems, "item-height": this.itemHeight, overscan: this.overscan, "search-term": this.filterable && this.searchMode === 'local' ? this.searchTerm : '', role: "listbox", "select-all-label": this.selectAllLabel, "unselect-all-label": this.unselectAllLabel, ref: (el) => {
1356
+ this.selectListElement = el;
1357
+ this.selectListElement.loading = this.loading;
1358
+ this.setSelectionMode(this.effectiveMultiple);
1359
+ void this.getSelectListController()?.setSearchTerm?.(this.filterable ? this.searchTerm : '');
1360
+ } }, h("slot", null), h("slot", { name: "loading", slot: "loading" })));
1361
+ }
1362
+ renderHiddenSelect() {
1363
+ const options = this.getFormOptions(this.getCurrentOptions()).filter((option) => !this.isSelectAllLabel(this.getOptionLabel(option)));
1364
+ const hasSelection = options.some((option) => option.selected);
1365
+ return (h("select", { ref: (el) => (this.nativeSelect = el), part: "hidden-select", name: this.name, autocomplete: this.autocomplete, multiple: this.effectiveMultiple, required: this.required, disabled: this.isDisabled(), tabIndex: -1, "aria-hidden": "true", style: {
1366
+ position: 'absolute',
1367
+ width: '1px',
1368
+ height: '1px',
1369
+ padding: '0',
1370
+ margin: '-1px',
1371
+ overflow: 'hidden',
1372
+ clip: 'rect(0, 0, 0, 0)',
1373
+ whiteSpace: 'nowrap',
1374
+ border: '0',
1375
+ }, onChange: (event) => event.preventDefault() }, h("option", { value: "", selected: !hasSelection }), options.map((option) => (h("option", { key: option.value, value: option.value, selected: option.selected, disabled: option.disabled })))));
1376
+ }
1377
+ render() {
1378
+ return (h(Host, { key: '9eab35d12b8b0fff68f16bb1e1ccc1209ea09687', "aria-busy": this.isValidating || this.loading ? 'true' : null }, h("div", { key: '68747830dd29319dc044caa056ffc13fea834bea', class: this.getCssClassMap(), part: "container" }, this.renderSelectInput(), this.renderSelectList(), h("div", { key: '825c7934402930816fba48f02d161d936c8a4e3e', part: "feedback", hidden: !this.hasFeedbackSlot && !this.validatorMessage }, h("slot", { key: '10b2ee676c54b913b39b6523d3ebce462ed031e3', name: "feedback", onSlotchange: (event) => (this.hasFeedbackSlot = hasAssignedSlotContent(event.currentTarget)) }, this.validatorMessage)), h("div", { key: '571a5a5e89ae14a91f8c88c0b1fb5e7341adb094', part: "validation-loading", hidden: !this.hasValidationLoadingSlot || !this.isValidating }, h("slot", { key: 'e9647f09ce303d15a564707e1d3a060280de10a1', name: "validation-loading" })), this.renderHiddenSelect())));
1379
+ }
1380
+ static get is() { return "br-select"; }
1381
+ static get encapsulation() { return "shadow"; }
1382
+ static get formAssociated() { return true; }
1383
+ static get originalStyleUrls() {
1384
+ return {
1385
+ "$": ["select.scss"]
1386
+ };
1387
+ }
1388
+ static get styleUrls() {
1389
+ return {
1390
+ "$": ["select.css"]
1391
+ };
1392
+ }
1393
+ static get properties() {
1394
+ return {
1395
+ "borderless": {
1396
+ "type": "boolean",
1397
+ "mutable": false,
1398
+ "complexType": {
1399
+ "original": "boolean",
1400
+ "resolved": "boolean",
1401
+ "references": {}
1402
+ },
1403
+ "required": false,
1404
+ "optional": false,
1405
+ "docs": {
1406
+ "tags": [{
1407
+ "name": "default",
1408
+ "text": "false"
1409
+ }],
1410
+ "text": "Remove a borda do input quando o componente n\u00E3o est\u00E1 em foco."
1411
+ },
1412
+ "getter": false,
1413
+ "setter": false,
1414
+ "reflect": true,
1415
+ "attribute": "borderless",
1416
+ "defaultValue": "false"
1417
+ },
1418
+ "disabled": {
1419
+ "type": "boolean",
1420
+ "mutable": false,
1421
+ "complexType": {
1422
+ "original": "boolean",
1423
+ "resolved": "boolean",
1424
+ "references": {}
1425
+ },
1426
+ "required": false,
1427
+ "optional": false,
1428
+ "docs": {
1429
+ "tags": [{
1430
+ "name": "default",
1431
+ "text": "false"
1432
+ }],
1433
+ "text": "Desativa toda a intera\u00E7\u00E3o do select."
1434
+ },
1435
+ "getter": false,
1436
+ "setter": false,
1437
+ "reflect": true,
1438
+ "attribute": "disabled",
1439
+ "defaultValue": "false"
1440
+ },
1441
+ "isInline": {
1442
+ "type": "boolean",
1443
+ "mutable": false,
1444
+ "complexType": {
1445
+ "original": "boolean",
1446
+ "resolved": "boolean",
1447
+ "references": {}
1448
+ },
1449
+ "required": false,
1450
+ "optional": false,
1451
+ "docs": {
1452
+ "tags": [{
1453
+ "name": "default",
1454
+ "text": "false"
1455
+ }, {
1456
+ "name": "deprecated",
1457
+ "text": "Use `inline`."
1458
+ }],
1459
+ "text": "Exibe label e campo na mesma linha."
1460
+ },
1461
+ "getter": false,
1462
+ "setter": false,
1463
+ "reflect": true,
1464
+ "attribute": "is-inline",
1465
+ "defaultValue": "false"
1466
+ },
1467
+ "inline": {
1468
+ "type": "boolean",
1469
+ "mutable": false,
1470
+ "complexType": {
1471
+ "original": "boolean",
1472
+ "resolved": "boolean",
1473
+ "references": {}
1474
+ },
1475
+ "required": false,
1476
+ "optional": true,
1477
+ "docs": {
1478
+ "tags": [],
1479
+ "text": "Exibe r\u00F3tulo e controle em linha. Quando informada, tem preced\u00EAncia sobre `isInline`."
1480
+ },
1481
+ "getter": false,
1482
+ "setter": false,
1483
+ "reflect": true,
1484
+ "attribute": "inline"
1485
+ },
1486
+ "isMultiple": {
1487
+ "type": "boolean",
1488
+ "mutable": false,
1489
+ "complexType": {
1490
+ "original": "boolean",
1491
+ "resolved": "boolean",
1492
+ "references": {}
1493
+ },
1494
+ "required": false,
1495
+ "optional": false,
1496
+ "docs": {
1497
+ "tags": [{
1498
+ "name": "default",
1499
+ "text": "false"
1500
+ }, {
1501
+ "name": "deprecated",
1502
+ "text": "Use `multiple`."
1503
+ }],
1504
+ "text": "Habilita o modo de sele\u00E7\u00E3o m\u00FAltipla."
1505
+ },
1506
+ "getter": false,
1507
+ "setter": false,
1508
+ "reflect": true,
1509
+ "attribute": "is-multiple",
1510
+ "defaultValue": "false"
1511
+ },
1512
+ "multiple": {
1513
+ "type": "boolean",
1514
+ "mutable": false,
1515
+ "complexType": {
1516
+ "original": "boolean",
1517
+ "resolved": "boolean",
1518
+ "references": {}
1519
+ },
1520
+ "required": false,
1521
+ "optional": true,
1522
+ "docs": {
1523
+ "tags": [],
1524
+ "text": "Habilita sele\u00E7\u00E3o m\u00FAltipla. Quando informada, tem preced\u00EAncia sobre `isMultiple`."
1525
+ },
1526
+ "getter": false,
1527
+ "setter": false,
1528
+ "reflect": true,
1529
+ "attribute": "multiple"
1530
+ },
1531
+ "keepOpenOnSelect": {
1532
+ "type": "boolean",
1533
+ "mutable": false,
1534
+ "complexType": {
1535
+ "original": "boolean",
1536
+ "resolved": "boolean",
1537
+ "references": {}
1538
+ },
1539
+ "required": false,
1540
+ "optional": false,
1541
+ "docs": {
1542
+ "tags": [{
1543
+ "name": "default",
1544
+ "text": "false"
1545
+ }, {
1546
+ "name": "deprecated",
1547
+ "text": "O comportamento atual usa o fechamento padr\u00E3o do select; mantenha esta prop\napenas para compatibilidade com integra\u00E7\u00F5es legadas."
1548
+ }],
1549
+ "text": "Mant\u00E9m a lista aberta depois de uma sele\u00E7\u00E3o."
1550
+ },
1551
+ "getter": false,
1552
+ "setter": false,
1553
+ "reflect": true,
1554
+ "attribute": "keep-open-on-select",
1555
+ "defaultValue": "false"
1556
+ },
1557
+ "visibleItems": {
1558
+ "type": "number",
1559
+ "mutable": false,
1560
+ "complexType": {
1561
+ "original": "number",
1562
+ "resolved": "number",
1563
+ "references": {}
1564
+ },
1565
+ "required": false,
1566
+ "optional": false,
1567
+ "docs": {
1568
+ "tags": [{
1569
+ "name": "default",
1570
+ "text": "6"
1571
+ }],
1572
+ "text": "Define quantas op\u00E7\u00F5es ficam vis\u00EDveis na janela da lista."
1573
+ },
1574
+ "getter": false,
1575
+ "setter": false,
1576
+ "reflect": true,
1577
+ "attribute": "visible-items",
1578
+ "defaultValue": "6"
1579
+ },
1580
+ "itemHeight": {
1581
+ "type": "number",
1582
+ "mutable": false,
1583
+ "complexType": {
1584
+ "original": "number",
1585
+ "resolved": "number",
1586
+ "references": {}
1587
+ },
1588
+ "required": false,
1589
+ "optional": false,
1590
+ "docs": {
1591
+ "tags": [{
1592
+ "name": "default",
1593
+ "text": "40"
1594
+ }],
1595
+ "text": "Informa a altura base de cada op\u00E7\u00E3o para o c\u00E1lculo de virtual scroll."
1596
+ },
1597
+ "getter": false,
1598
+ "setter": false,
1599
+ "reflect": true,
1600
+ "attribute": "item-height",
1601
+ "defaultValue": "40"
1602
+ },
1603
+ "inputWidth": {
1604
+ "type": "string",
1605
+ "mutable": false,
1606
+ "complexType": {
1607
+ "original": "string | undefined",
1608
+ "resolved": "string",
1609
+ "references": {}
1610
+ },
1611
+ "required": false,
1612
+ "optional": false,
1613
+ "docs": {
1614
+ "tags": [{
1615
+ "name": "type",
1616
+ "text": "{string}"
1617
+ }, {
1618
+ "name": "example",
1619
+ "text": "'20rem'"
1620
+ }],
1621
+ "text": "Controla a largura do campo de entrada."
1622
+ },
1623
+ "getter": false,
1624
+ "setter": false,
1625
+ "reflect": true,
1626
+ "attribute": "input-width",
1627
+ "defaultValue": "undefined"
1628
+ },
1629
+ "overscan": {
1630
+ "type": "number",
1631
+ "mutable": false,
1632
+ "complexType": {
1633
+ "original": "number",
1634
+ "resolved": "number",
1635
+ "references": {}
1636
+ },
1637
+ "required": false,
1638
+ "optional": false,
1639
+ "docs": {
1640
+ "tags": [{
1641
+ "name": "default",
1642
+ "text": "1"
1643
+ }],
1644
+ "text": "Define quantas op\u00E7\u00F5es extras s\u00E3o renderizadas antes e depois da \u00E1rea vis\u00EDvel no virtual scroll."
1645
+ },
1646
+ "getter": false,
1647
+ "setter": false,
1648
+ "reflect": true,
1649
+ "attribute": "overscan",
1650
+ "defaultValue": "1"
1651
+ },
1652
+ "isOpen": {
1653
+ "type": "boolean",
1654
+ "mutable": true,
1655
+ "complexType": {
1656
+ "original": "boolean",
1657
+ "resolved": "boolean",
1658
+ "references": {}
1659
+ },
1660
+ "required": false,
1661
+ "optional": false,
1662
+ "docs": {
1663
+ "tags": [{
1664
+ "name": "default",
1665
+ "text": "false"
1666
+ }, {
1667
+ "name": "deprecated",
1668
+ "text": "Use `open`."
1669
+ }],
1670
+ "text": "Controla o estado aberto/fechado da lista."
1671
+ },
1672
+ "getter": false,
1673
+ "setter": false,
1674
+ "reflect": true,
1675
+ "attribute": "is-open",
1676
+ "defaultValue": "false"
1677
+ },
1678
+ "open": {
1679
+ "type": "boolean",
1680
+ "mutable": false,
1681
+ "complexType": {
1682
+ "original": "boolean",
1683
+ "resolved": "boolean",
1684
+ "references": {}
1685
+ },
1686
+ "required": false,
1687
+ "optional": true,
1688
+ "docs": {
1689
+ "tags": [],
1690
+ "text": "Controla o estado aberto. Quando informada, tem preced\u00EAncia sobre `isOpen`."
1691
+ },
1692
+ "getter": false,
1693
+ "setter": false,
1694
+ "reflect": true,
1695
+ "attribute": "open"
1696
+ },
1697
+ "label": {
1698
+ "type": "string",
1699
+ "mutable": false,
1700
+ "complexType": {
1701
+ "original": "string",
1702
+ "resolved": "string",
1703
+ "references": {}
1704
+ },
1705
+ "required": false,
1706
+ "optional": true,
1707
+ "docs": {
1708
+ "tags": [{
1709
+ "name": "type",
1710
+ "text": "{string | undefined}"
1711
+ }],
1712
+ "text": "Texto exibido como r\u00F3tulo do campo."
1713
+ },
1714
+ "getter": false,
1715
+ "setter": false,
1716
+ "reflect": true,
1717
+ "attribute": "label"
1718
+ },
1719
+ "name": {
1720
+ "type": "string",
1721
+ "mutable": false,
1722
+ "complexType": {
1723
+ "original": "string",
1724
+ "resolved": "string",
1725
+ "references": {}
1726
+ },
1727
+ "required": false,
1728
+ "optional": true,
1729
+ "docs": {
1730
+ "tags": [{
1731
+ "name": "type",
1732
+ "text": "{string | undefined}"
1733
+ }],
1734
+ "text": "Nome do campo para integra\u00E7\u00E3o com formul\u00E1rios."
1735
+ },
1736
+ "getter": false,
1737
+ "setter": false,
1738
+ "reflect": true,
1739
+ "attribute": "name"
1740
+ },
1741
+ "value": {
1742
+ "type": "string",
1743
+ "mutable": true,
1744
+ "complexType": {
1745
+ "original": "string | string[]",
1746
+ "resolved": "string | string[]",
1747
+ "references": {}
1748
+ },
1749
+ "required": false,
1750
+ "optional": true,
1751
+ "docs": {
1752
+ "tags": [{
1753
+ "name": "type",
1754
+ "text": "{string | string[] | undefined}"
1755
+ }, {
1756
+ "name": "remarks",
1757
+ "text": "Em modo m\u00FAltiplo, o valor p\u00FAblico \u00E9 um array de strings."
1758
+ }],
1759
+ "text": "Valor p\u00FAblico do select baseado nas op\u00E7\u00F5es atualmente selecionadas."
1760
+ },
1761
+ "getter": false,
1762
+ "setter": false,
1763
+ "reflect": false,
1764
+ "attribute": "value",
1765
+ "defaultValue": "''"
1766
+ },
1767
+ "placeholder": {
1768
+ "type": "string",
1769
+ "mutable": false,
1770
+ "complexType": {
1771
+ "original": "string",
1772
+ "resolved": "string",
1773
+ "references": {}
1774
+ },
1775
+ "required": false,
1776
+ "optional": false,
1777
+ "docs": {
1778
+ "tags": [{
1779
+ "name": "type",
1780
+ "text": "{string | undefined}"
1781
+ }],
1782
+ "text": "Texto exibido quando n\u00E3o h\u00E1 sele\u00E7\u00E3o."
1783
+ },
1784
+ "getter": false,
1785
+ "setter": false,
1786
+ "reflect": true,
1787
+ "attribute": "placeholder",
1788
+ "defaultValue": "''"
1789
+ },
1790
+ "required": {
1791
+ "type": "boolean",
1792
+ "mutable": false,
1793
+ "complexType": {
1794
+ "original": "boolean",
1795
+ "resolved": "boolean",
1796
+ "references": {}
1797
+ },
1798
+ "required": false,
1799
+ "optional": false,
1800
+ "docs": {
1801
+ "tags": [{
1802
+ "name": "default",
1803
+ "text": "false"
1804
+ }],
1805
+ "text": "Indica que o preenchimento do select \u00E9 obrigat\u00F3rio."
1806
+ },
1807
+ "getter": false,
1808
+ "setter": false,
1809
+ "reflect": true,
1810
+ "attribute": "required",
1811
+ "defaultValue": "false"
1812
+ },
1813
+ "selectAllLabel": {
1814
+ "type": "string",
1815
+ "mutable": false,
1816
+ "complexType": {
1817
+ "original": "string",
1818
+ "resolved": "string",
1819
+ "references": {}
1820
+ },
1821
+ "required": false,
1822
+ "optional": false,
1823
+ "docs": {
1824
+ "tags": [{
1825
+ "name": "default",
1826
+ "text": "'Selecionar todos'"
1827
+ }],
1828
+ "text": "R\u00F3tulo apresentado para a op\u00E7\u00E3o de selecionar todos no modo m\u00FAltiplo."
1829
+ },
1830
+ "getter": false,
1831
+ "setter": false,
1832
+ "reflect": true,
1833
+ "attribute": "select-all-label",
1834
+ "defaultValue": "Select.SELECT_ALL_LABEL"
1835
+ },
1836
+ "filterable": {
1837
+ "type": "boolean",
1838
+ "mutable": false,
1839
+ "complexType": {
1840
+ "original": "boolean",
1841
+ "resolved": "boolean",
1842
+ "references": {}
1843
+ },
1844
+ "required": false,
1845
+ "optional": false,
1846
+ "docs": {
1847
+ "tags": [{
1848
+ "name": "default",
1849
+ "text": "true"
1850
+ }],
1851
+ "text": "Habilita a filtragem textual das op\u00E7\u00F5es por r\u00F3tulo ou valor."
1852
+ },
1853
+ "getter": false,
1854
+ "setter": false,
1855
+ "reflect": true,
1856
+ "attribute": "filterable",
1857
+ "defaultValue": "true"
1858
+ },
1859
+ "searchMode": {
1860
+ "type": "string",
1861
+ "mutable": false,
1862
+ "complexType": {
1863
+ "original": "SelectSearchMode",
1864
+ "resolved": "\"local\" | \"remote\"",
1865
+ "references": {
1866
+ "SelectSearchMode": {
1867
+ "location": "import",
1868
+ "path": "./select.types",
1869
+ "id": "src/components/select/select.types.ts::SelectSearchMode",
1870
+ "referenceLocation": "SelectSearchMode"
1871
+ }
1872
+ }
1873
+ },
1874
+ "required": false,
1875
+ "optional": false,
1876
+ "docs": {
1877
+ "tags": [{
1878
+ "name": "default",
1879
+ "text": "'local'"
1880
+ }],
1881
+ "text": "Define se as op\u00E7\u00F5es s\u00E3o filtradas localmente ou fornecidas por uma busca remota.\nEm `remote`, o componente emite `brSelectSearch`; a aplica\u00E7\u00E3o deve buscar,\nvalidar e aplicar as op\u00E7\u00F5es por `setOptions()`."
1882
+ },
1883
+ "getter": false,
1884
+ "setter": false,
1885
+ "reflect": true,
1886
+ "attribute": "search-mode",
1887
+ "defaultValue": "'local'"
1888
+ },
1889
+ "loading": {
1890
+ "type": "boolean",
1891
+ "mutable": false,
1892
+ "complexType": {
1893
+ "original": "boolean",
1894
+ "resolved": "boolean",
1895
+ "references": {}
1896
+ },
1897
+ "required": false,
1898
+ "optional": false,
1899
+ "docs": {
1900
+ "tags": [{
1901
+ "name": "default",
1902
+ "text": "false"
1903
+ }],
1904
+ "text": "Indica que uma busca remota de op\u00E7\u00F5es est\u00E1 pendente.\nEnquanto ativo, novas op\u00E7\u00F5es n\u00E3o podem ser selecionadas; a aplica\u00E7\u00E3o\ncontinua respons\u00E1vel por debounce, cancelamento, erros e autentica\u00E7\u00E3o."
1905
+ },
1906
+ "getter": false,
1907
+ "setter": false,
1908
+ "reflect": true,
1909
+ "attribute": "loading",
1910
+ "defaultValue": "false"
1911
+ },
1912
+ "showSearchIcon": {
1913
+ "type": "boolean",
1914
+ "mutable": false,
1915
+ "complexType": {
1916
+ "original": "boolean",
1917
+ "resolved": "boolean",
1918
+ "references": {}
1919
+ },
1920
+ "required": false,
1921
+ "optional": false,
1922
+ "docs": {
1923
+ "tags": [{
1924
+ "name": "default",
1925
+ "text": "false"
1926
+ }],
1927
+ "text": "Exibe o \u00EDcone de busca no campo de entrada."
1928
+ },
1929
+ "getter": false,
1930
+ "setter": false,
1931
+ "reflect": true,
1932
+ "attribute": "show-search-icon",
1933
+ "defaultValue": "false"
1934
+ },
1935
+ "unselectAllLabel": {
1936
+ "type": "string",
1937
+ "mutable": false,
1938
+ "complexType": {
1939
+ "original": "string",
1940
+ "resolved": "string",
1941
+ "references": {}
1942
+ },
1943
+ "required": false,
1944
+ "optional": false,
1945
+ "docs": {
1946
+ "tags": [{
1947
+ "name": "default",
1948
+ "text": "'Desselecionar todos'"
1949
+ }],
1950
+ "text": "R\u00F3tulo apresentado quando todas as op\u00E7\u00F5es j\u00E1 est\u00E3o selecionadas no modo m\u00FAltiplo."
1951
+ },
1952
+ "getter": false,
1953
+ "setter": false,
1954
+ "reflect": true,
1955
+ "attribute": "unselect-all-label",
1956
+ "defaultValue": "Select.DESELECT_ALL_LABEL"
1957
+ },
1958
+ "options": {
1959
+ "type": "string",
1960
+ "mutable": false,
1961
+ "complexType": {
1962
+ "original": "string | { label: string; value: string; selected?: boolean }[] | SelectOptionData[]",
1963
+ "resolved": "SelectOptionData[] | string | { label: string; value: string; selected?: boolean; }[]",
1964
+ "references": {
1965
+ "SelectOptionData": {
1966
+ "location": "import",
1967
+ "path": "./select.types",
1968
+ "id": "src/components/select/select.types.ts::SelectOptionData",
1969
+ "referenceLocation": "SelectOptionData"
1970
+ }
1971
+ }
1972
+ },
1973
+ "required": false,
1974
+ "optional": false,
1975
+ "docs": {
1976
+ "tags": [{
1977
+ "name": "deprecated",
1978
+ "text": "O formato de op\u00E7\u00F5es tipado atual \u00E9 prefer\u00EDvel; o formato legado permanece aceito."
1979
+ }],
1980
+ "text": "Op\u00E7\u00F5es fornecidas como array ou JSON, al\u00E9m das op\u00E7\u00F5es projetadas por slot."
1981
+ },
1982
+ "getter": false,
1983
+ "setter": false,
1984
+ "reflect": false,
1985
+ "attribute": "options",
1986
+ "defaultValue": "[]"
1987
+ },
1988
+ "autocomplete": {
1989
+ "type": "string",
1990
+ "mutable": false,
1991
+ "complexType": {
1992
+ "original": "InputToggle",
1993
+ "resolved": "\"off\" | \"on\"",
1994
+ "references": {
1995
+ "InputToggle": {
1996
+ "location": "import",
1997
+ "path": "../input/input.types",
1998
+ "id": "src/components/input/input.types.ts::InputToggle",
1999
+ "referenceLocation": "InputToggle"
2000
+ }
2001
+ }
2002
+ },
2003
+ "required": false,
2004
+ "optional": true,
2005
+ "docs": {
2006
+ "tags": [],
2007
+ "text": "Controla o autocomplete do campo de busca interno."
2008
+ },
2009
+ "getter": false,
2010
+ "setter": false,
2011
+ "reflect": true,
2012
+ "attribute": "autocomplete"
2013
+ },
2014
+ "customId": {
2015
+ "type": "string",
2016
+ "mutable": false,
2017
+ "complexType": {
2018
+ "original": "string",
2019
+ "resolved": "string",
2020
+ "references": {}
2021
+ },
2022
+ "required": false,
2023
+ "optional": false,
2024
+ "docs": {
2025
+ "tags": [],
2026
+ "text": "Identificador p\u00FAblico do controle."
2027
+ },
2028
+ "getter": false,
2029
+ "setter": false,
2030
+ "reflect": true,
2031
+ "attribute": "custom-id",
2032
+ "defaultValue": "`br-select-${selectId++}`"
2033
+ },
2034
+ "minSelections": {
2035
+ "type": "number",
2036
+ "mutable": false,
2037
+ "complexType": {
2038
+ "original": "number",
2039
+ "resolved": "number",
2040
+ "references": {}
2041
+ },
2042
+ "required": false,
2043
+ "optional": false,
2044
+ "docs": {
2045
+ "tags": [],
2046
+ "text": "Quantidade m\u00EDnima de op\u00E7\u00F5es selecionadas no modo m\u00FAltiplo."
2047
+ },
2048
+ "getter": false,
2049
+ "setter": false,
2050
+ "reflect": true,
2051
+ "attribute": "min-selections",
2052
+ "defaultValue": "0"
2053
+ },
2054
+ "maxSelections": {
2055
+ "type": "number",
2056
+ "mutable": false,
2057
+ "complexType": {
2058
+ "original": "number",
2059
+ "resolved": "number",
2060
+ "references": {}
2061
+ },
2062
+ "required": false,
2063
+ "optional": false,
2064
+ "docs": {
2065
+ "tags": [],
2066
+ "text": "Quantidade m\u00E1xima de op\u00E7\u00F5es selecionadas no modo m\u00FAltiplo."
2067
+ },
2068
+ "getter": false,
2069
+ "setter": false,
2070
+ "reflect": true,
2071
+ "attribute": "max-selections",
2072
+ "defaultValue": "0"
2073
+ },
2074
+ "validator": {
2075
+ "type": "string",
2076
+ "mutable": false,
2077
+ "complexType": {
2078
+ "original": "SelectValidator | string",
2079
+ "resolved": "((value: string | string[]) => string | Promise<string>) | string",
2080
+ "references": {
2081
+ "SelectValidator": {
2082
+ "location": "import",
2083
+ "path": "./select.types",
2084
+ "id": "src/components/select/select.types.ts::SelectValidator",
2085
+ "referenceLocation": "SelectValidator"
2086
+ }
2087
+ }
2088
+ },
2089
+ "required": false,
2090
+ "optional": true,
2091
+ "docs": {
2092
+ "tags": [],
2093
+ "text": "Valida\u00E7\u00E3o s\u00EDncrona ou ass\u00EDncrona executada no m\u00E9todo `validate()`."
2094
+ },
2095
+ "getter": false,
2096
+ "setter": false,
2097
+ "reflect": false,
2098
+ "attribute": "validator"
2099
+ }
2100
+ };
2101
+ }
2102
+ static get states() {
2103
+ return {
2104
+ "activeOptionIndex": {},
2105
+ "displayValue": {},
2106
+ "searchTerm": {},
2107
+ "formDisabled": {},
2108
+ "isValidating": {},
2109
+ "validatorMessage": {},
2110
+ "hasFeedbackSlot": {},
2111
+ "hasValidationLoadingSlot": {},
2112
+ "selectedValuesState": {}
2113
+ };
2114
+ }
2115
+ static get events() {
2116
+ return [{
2117
+ "method": "brSelectStateChange",
2118
+ "name": "brSelectStateChange",
2119
+ "bubbles": true,
2120
+ "cancelable": true,
2121
+ "composed": true,
2122
+ "docs": {
2123
+ "tags": [{
2124
+ "name": "event",
2125
+ "text": "brSelectStateChange"
2126
+ }, {
2127
+ "name": "type",
2128
+ "text": "{EventEmitter<SelectStateChangeDetail>}"
2129
+ }, {
2130
+ "name": "remarks",
2131
+ "text": "O payload consolidado informa abertura, desabilita\u00E7\u00E3o e sele\u00E7\u00E3o atual."
2132
+ }],
2133
+ "text": "Evento emitido quando o estado p\u00FAblico do select muda."
2134
+ },
2135
+ "complexType": {
2136
+ "original": "SelectStateChangeDetail",
2137
+ "resolved": "{ isOpen: boolean; option?: SelectOptionData; options?: SelectOptionData[]; }",
2138
+ "references": {
2139
+ "SelectStateChangeDetail": {
2140
+ "location": "import",
2141
+ "path": "./select.types",
2142
+ "id": "src/components/select/select.types.ts::SelectStateChangeDetail",
2143
+ "referenceLocation": "SelectStateChangeDetail"
2144
+ }
2145
+ }
2146
+ }
2147
+ }, {
2148
+ "method": "valueChange",
2149
+ "name": "valueChange",
2150
+ "bubbles": true,
2151
+ "cancelable": true,
2152
+ "composed": true,
2153
+ "docs": {
2154
+ "tags": [{
2155
+ "name": "deprecated",
2156
+ "text": "Use os eventos nativos `input` e `change`."
2157
+ }],
2158
+ "text": "Evento emitido quando o valor p\u00FAblico do select \u00E9 alterado."
2159
+ },
2160
+ "complexType": {
2161
+ "original": "string",
2162
+ "resolved": "string",
2163
+ "references": {}
2164
+ }
2165
+ }, {
2166
+ "method": "optionHover",
2167
+ "name": "optionHover",
2168
+ "bubbles": true,
2169
+ "cancelable": true,
2170
+ "composed": true,
2171
+ "docs": {
2172
+ "tags": [{
2173
+ "name": "deprecated",
2174
+ "text": "Use a navega\u00E7\u00E3o e os eventos de estado atuais."
2175
+ }],
2176
+ "text": "Emite a op\u00E7\u00E3o que recebeu foco ou hover."
2177
+ },
2178
+ "complexType": {
2179
+ "original": "{ label: string; value: string }",
2180
+ "resolved": "{ label: string; value: string; }",
2181
+ "references": {}
2182
+ }
2183
+ }, {
2184
+ "method": "brSelectSearch",
2185
+ "name": "brSelectSearch",
2186
+ "bubbles": true,
2187
+ "cancelable": false,
2188
+ "composed": true,
2189
+ "docs": {
2190
+ "tags": [],
2191
+ "text": "Emitido uma vez por edi\u00E7\u00E3o do campo de busca, inclusive ao limpar a consulta.\nO `detail` cont\u00E9m `{ query }`; o evento \u00E9 informativo e n\u00E3o cancel\u00E1vel.\nA aplica\u00E7\u00E3o deve controlar debounce, transporte e ciclo de vida da busca."
2192
+ },
2193
+ "complexType": {
2194
+ "original": "SelectSearchDetail",
2195
+ "resolved": "{ query: string; }",
2196
+ "references": {
2197
+ "SelectSearchDetail": {
2198
+ "location": "import",
2199
+ "path": "./select.types",
2200
+ "id": "src/components/select/select.types.ts::SelectSearchDetail",
2201
+ "referenceLocation": "SelectSearchDetail"
2202
+ }
2203
+ }
2204
+ }
2205
+ }, {
2206
+ "method": "opened",
2207
+ "name": "opened",
2208
+ "bubbles": true,
2209
+ "cancelable": true,
2210
+ "composed": true,
2211
+ "docs": {
2212
+ "tags": [{
2213
+ "name": "deprecated",
2214
+ "text": "Use `brSelectStateChange`."
2215
+ }],
2216
+ "text": "Emitido quando a lista \u00E9 aberta."
2217
+ },
2218
+ "complexType": {
2219
+ "original": "void",
2220
+ "resolved": "void",
2221
+ "references": {}
2222
+ }
2223
+ }, {
2224
+ "method": "closed",
2225
+ "name": "closed",
2226
+ "bubbles": true,
2227
+ "cancelable": true,
2228
+ "composed": true,
2229
+ "docs": {
2230
+ "tags": [{
2231
+ "name": "deprecated",
2232
+ "text": "Use `brSelectStateChange`."
2233
+ }],
2234
+ "text": "Emitido quando a lista \u00E9 fechada."
2235
+ },
2236
+ "complexType": {
2237
+ "original": "void",
2238
+ "resolved": "void",
2239
+ "references": {}
2240
+ }
2241
+ }, {
2242
+ "method": "brSelectValidationChange",
2243
+ "name": "brSelectValidationChange",
2244
+ "bubbles": true,
2245
+ "cancelable": true,
2246
+ "composed": true,
2247
+ "docs": {
2248
+ "tags": [],
2249
+ "text": "Informa o in\u00EDcio e o resultado de uma valida\u00E7\u00E3o s\u00EDncrona ou ass\u00EDncrona.\nO `detail` cont\u00E9m `validating`, `valid` e `message`."
2250
+ },
2251
+ "complexType": {
2252
+ "original": "{\n validating: boolean;\n valid: boolean | null;\n message: string | null;\n }",
2253
+ "resolved": "{ validating: boolean; valid: boolean; message: string; }",
2254
+ "references": {}
2255
+ }
2256
+ }];
2257
+ }
2258
+ static get methods() {
2259
+ return {
2260
+ "enable": {
2261
+ "complexType": {
2262
+ "signature": "() => Promise<void>",
2263
+ "parameters": [],
2264
+ "references": {
2265
+ "Promise": {
2266
+ "location": "global",
2267
+ "id": "global::Promise"
2268
+ }
2269
+ },
2270
+ "return": "Promise<void>"
2271
+ },
2272
+ "docs": {
2273
+ "text": "Habilita o select para intera\u00E7\u00E3o do usu\u00E1rio.",
2274
+ "tags": [{
2275
+ "name": "returns",
2276
+ "text": "Uma promise conclu\u00EDda ap\u00F3s a atualiza\u00E7\u00E3o do estado."
2277
+ }]
2278
+ }
2279
+ },
2280
+ "disable": {
2281
+ "complexType": {
2282
+ "signature": "() => Promise<void>",
2283
+ "parameters": [],
2284
+ "references": {
2285
+ "Promise": {
2286
+ "location": "global",
2287
+ "id": "global::Promise"
2288
+ }
2289
+ },
2290
+ "return": "Promise<void>"
2291
+ },
2292
+ "docs": {
2293
+ "text": "Desabilita o select e impede novas intera\u00E7\u00F5es.",
2294
+ "tags": [{
2295
+ "name": "returns",
2296
+ "text": "Uma promise conclu\u00EDda ap\u00F3s a atualiza\u00E7\u00E3o do estado."
2297
+ }]
2298
+ }
2299
+ },
2300
+ "show": {
2301
+ "complexType": {
2302
+ "signature": "() => Promise<void>",
2303
+ "parameters": [],
2304
+ "references": {
2305
+ "Promise": {
2306
+ "location": "global",
2307
+ "id": "global::Promise"
2308
+ }
2309
+ },
2310
+ "return": "Promise<void>"
2311
+ },
2312
+ "docs": {
2313
+ "text": "Abre a lista de op\u00E7\u00F5es quando o componente est\u00E1 habilitado.",
2314
+ "tags": [{
2315
+ "name": "returns",
2316
+ "text": "Uma promise conclu\u00EDda ap\u00F3s a atualiza\u00E7\u00E3o do estado."
2317
+ }]
2318
+ }
2319
+ },
2320
+ "close": {
2321
+ "complexType": {
2322
+ "signature": "() => Promise<void>",
2323
+ "parameters": [],
2324
+ "references": {
2325
+ "Promise": {
2326
+ "location": "global",
2327
+ "id": "global::Promise"
2328
+ }
2329
+ },
2330
+ "return": "Promise<void>"
2331
+ },
2332
+ "docs": {
2333
+ "text": "Fecha a lista de op\u00E7\u00F5es quando o componente est\u00E1 habilitado.",
2334
+ "tags": [{
2335
+ "name": "returns",
2336
+ "text": "Uma promise conclu\u00EDda ap\u00F3s a atualiza\u00E7\u00E3o do estado."
2337
+ }]
2338
+ }
2339
+ },
2340
+ "toggleOpen": {
2341
+ "complexType": {
2342
+ "signature": "() => Promise<void>",
2343
+ "parameters": [],
2344
+ "references": {
2345
+ "Promise": {
2346
+ "location": "global",
2347
+ "id": "global::Promise"
2348
+ }
2349
+ },
2350
+ "return": "Promise<void>"
2351
+ },
2352
+ "docs": {
2353
+ "text": "Alterna entre os estados aberto e fechado do select.",
2354
+ "tags": [{
2355
+ "name": "returns",
2356
+ "text": "Uma promise conclu\u00EDda ap\u00F3s a atualiza\u00E7\u00E3o do estado."
2357
+ }]
2358
+ }
2359
+ },
2360
+ "clear": {
2361
+ "complexType": {
2362
+ "signature": "() => Promise<void>",
2363
+ "parameters": [],
2364
+ "references": {
2365
+ "Promise": {
2366
+ "location": "global",
2367
+ "id": "global::Promise"
2368
+ }
2369
+ },
2370
+ "return": "Promise<void>"
2371
+ },
2372
+ "docs": {
2373
+ "text": "Limpa a sele\u00E7\u00E3o atual.",
2374
+ "tags": [{
2375
+ "name": "deprecated",
2376
+ "text": "Use `setValue('')` ou a API de formul\u00E1rio."
2377
+ }]
2378
+ }
2379
+ },
2380
+ "getValue": {
2381
+ "complexType": {
2382
+ "signature": "() => Promise<string | string[]>",
2383
+ "parameters": [],
2384
+ "references": {
2385
+ "Promise": {
2386
+ "location": "global",
2387
+ "id": "global::Promise"
2388
+ }
2389
+ },
2390
+ "return": "Promise<string | string[]>"
2391
+ },
2392
+ "docs": {
2393
+ "text": "Retorna o valor p\u00FAblico atual.",
2394
+ "tags": [{
2395
+ "name": "deprecated",
2396
+ "text": "Leia a propriedade `value` diretamente."
2397
+ }]
2398
+ }
2399
+ },
2400
+ "setValue": {
2401
+ "complexType": {
2402
+ "signature": "(value: string | string[]) => Promise<void>",
2403
+ "parameters": [{
2404
+ "name": "value",
2405
+ "type": "string | string[]",
2406
+ "docs": ""
2407
+ }],
2408
+ "references": {
2409
+ "Promise": {
2410
+ "location": "global",
2411
+ "id": "global::Promise"
2412
+ }
2413
+ },
2414
+ "return": "Promise<void>"
2415
+ },
2416
+ "docs": {
2417
+ "text": "Define o valor p\u00FAblico do select.",
2418
+ "tags": [{
2419
+ "name": "deprecated",
2420
+ "text": "Atribua a propriedade `value` diretamente."
2421
+ }]
2422
+ }
2423
+ },
2424
+ "setFocus": {
2425
+ "complexType": {
2426
+ "signature": "() => Promise<void>",
2427
+ "parameters": [],
2428
+ "references": {
2429
+ "Promise": {
2430
+ "location": "global",
2431
+ "id": "global::Promise"
2432
+ }
2433
+ },
2434
+ "return": "Promise<void>"
2435
+ },
2436
+ "docs": {
2437
+ "text": "Move o foco para o campo interno.",
2438
+ "tags": [{
2439
+ "name": "deprecated",
2440
+ "text": "Use o foco nativo do componente quando poss\u00EDvel."
2441
+ }]
2442
+ }
2443
+ },
2444
+ "checkValidity": {
2445
+ "complexType": {
2446
+ "signature": "() => Promise<boolean>",
2447
+ "parameters": [],
2448
+ "references": {
2449
+ "Promise": {
2450
+ "location": "global",
2451
+ "id": "global::Promise"
2452
+ }
2453
+ },
2454
+ "return": "Promise<boolean>"
2455
+ },
2456
+ "docs": {
2457
+ "text": "",
2458
+ "tags": []
2459
+ }
2460
+ },
2461
+ "reportValidity": {
2462
+ "complexType": {
2463
+ "signature": "() => Promise<boolean>",
2464
+ "parameters": [],
2465
+ "references": {
2466
+ "Promise": {
2467
+ "location": "global",
2468
+ "id": "global::Promise"
2469
+ }
2470
+ },
2471
+ "return": "Promise<boolean>"
2472
+ },
2473
+ "docs": {
2474
+ "text": "",
2475
+ "tags": []
2476
+ }
2477
+ },
2478
+ "setCustomValidity": {
2479
+ "complexType": {
2480
+ "signature": "(message: string) => Promise<void>",
2481
+ "parameters": [{
2482
+ "name": "message",
2483
+ "type": "string",
2484
+ "docs": ""
2485
+ }],
2486
+ "references": {
2487
+ "Promise": {
2488
+ "location": "global",
2489
+ "id": "global::Promise"
2490
+ }
2491
+ },
2492
+ "return": "Promise<void>"
2493
+ },
2494
+ "docs": {
2495
+ "text": "",
2496
+ "tags": []
2497
+ }
2498
+ },
2499
+ "getValidationState": {
2500
+ "complexType": {
2501
+ "signature": "() => Promise<FormValidationState>",
2502
+ "parameters": [],
2503
+ "references": {
2504
+ "Promise": {
2505
+ "location": "global",
2506
+ "id": "global::Promise"
2507
+ },
2508
+ "FormValidationState": {
2509
+ "location": "import",
2510
+ "path": "../../shared/utils/form",
2511
+ "id": "src/shared/utils/form.ts::FormValidationState",
2512
+ "referenceLocation": "FormValidationState"
2513
+ }
2514
+ },
2515
+ "return": "Promise<FormValidationState>"
2516
+ },
2517
+ "docs": {
2518
+ "text": "",
2519
+ "tags": []
2520
+ }
2521
+ },
2522
+ "validate": {
2523
+ "complexType": {
2524
+ "signature": "() => Promise<boolean>",
2525
+ "parameters": [],
2526
+ "references": {
2527
+ "Promise": {
2528
+ "location": "global",
2529
+ "id": "global::Promise"
2530
+ }
2531
+ },
2532
+ "return": "Promise<boolean>"
2533
+ },
2534
+ "docs": {
2535
+ "text": "",
2536
+ "tags": []
2537
+ }
2538
+ },
2539
+ "setOptions": {
2540
+ "complexType": {
2541
+ "signature": "(options: SelectOptionData[]) => Promise<void>",
2542
+ "parameters": [{
2543
+ "name": "options",
2544
+ "type": "SelectOptionData[]",
2545
+ "docs": "Op\u00E7\u00F5es que devem ser exibidas pela lista interna.\nEm `search-mode=\"remote\"`, a sele\u00E7\u00E3o atual \u00E9 preservada mesmo quando n\u00E3o\naparece na resposta recebida."
2546
+ }],
2547
+ "references": {
2548
+ "Promise": {
2549
+ "location": "global",
2550
+ "id": "global::Promise"
2551
+ },
2552
+ "SelectOptionData": {
2553
+ "location": "import",
2554
+ "path": "./select.types",
2555
+ "id": "src/components/select/select.types.ts::SelectOptionData",
2556
+ "referenceLocation": "SelectOptionData"
2557
+ }
2558
+ },
2559
+ "return": "Promise<void>"
2560
+ },
2561
+ "docs": {
2562
+ "text": "Substitui a cole\u00E7\u00E3o atual de op\u00E7\u00F5es por uma nova lista.",
2563
+ "tags": [{
2564
+ "name": "param",
2565
+ "text": "options Op\u00E7\u00F5es que devem ser exibidas pela lista interna.\nEm `search-mode=\"remote\"`, a sele\u00E7\u00E3o atual \u00E9 preservada mesmo quando n\u00E3o\naparece na resposta recebida."
2566
+ }, {
2567
+ "name": "returns",
2568
+ "text": "Uma promise conclu\u00EDda ap\u00F3s a sincroniza\u00E7\u00E3o das op\u00E7\u00F5es."
2569
+ }]
2570
+ }
2571
+ },
2572
+ "setOption": {
2573
+ "complexType": {
2574
+ "signature": "(option: SelectOptionData) => Promise<void>",
2575
+ "parameters": [{
2576
+ "name": "option",
2577
+ "type": "{ content?: string; disabled?: boolean; indeterminate?: boolean; label?: string; selected?: boolean; value: string; }",
2578
+ "docs": "Op\u00E7\u00E3o que deve ser inserida ou atualizada."
2579
+ }],
2580
+ "references": {
2581
+ "Promise": {
2582
+ "location": "global",
2583
+ "id": "global::Promise"
2584
+ },
2585
+ "SelectOptionData": {
2586
+ "location": "import",
2587
+ "path": "./select.types",
2588
+ "id": "src/components/select/select.types.ts::SelectOptionData",
2589
+ "referenceLocation": "SelectOptionData"
2590
+ }
2591
+ },
2592
+ "return": "Promise<void>"
2593
+ },
2594
+ "docs": {
2595
+ "text": "Adiciona ou atualiza uma \u00FAnica op\u00E7\u00E3o na cole\u00E7\u00E3o interna.",
2596
+ "tags": [{
2597
+ "name": "param",
2598
+ "text": "option Op\u00E7\u00E3o que deve ser inserida ou atualizada."
2599
+ }, {
2600
+ "name": "returns",
2601
+ "text": "Uma promise conclu\u00EDda ap\u00F3s a sincroniza\u00E7\u00E3o da op\u00E7\u00E3o."
2602
+ }]
2603
+ }
2604
+ }
2605
+ };
2606
+ }
2607
+ static get elementRef() { return "el"; }
2608
+ static get watchers() {
2609
+ return [{
2610
+ "propName": "disabled",
2611
+ "methodName": "handleDisabledChange"
2612
+ }, {
2613
+ "propName": "isOpen",
2614
+ "methodName": "handleIsOpenChange"
2615
+ }, {
2616
+ "propName": "filterable",
2617
+ "methodName": "handleFilterableChange"
2618
+ }, {
2619
+ "propName": "loading",
2620
+ "methodName": "handleLoadingChange"
2621
+ }, {
2622
+ "propName": "isMultiple",
2623
+ "methodName": "handleIsMultipleChange"
2624
+ }, {
2625
+ "propName": "multiple",
2626
+ "methodName": "handleMultipleChange"
2627
+ }, {
2628
+ "propName": "open",
2629
+ "methodName": "handleOpenChange"
2630
+ }, {
2631
+ "propName": "value",
2632
+ "methodName": "handleExternalValueChange"
2633
+ }, {
2634
+ "propName": "options",
2635
+ "methodName": "handleOptionsChange"
2636
+ }];
2637
+ }
2638
+ static get listeners() {
2639
+ return [{
2640
+ "name": "brSelectInputFocus",
2641
+ "method": "handleSelectInputFocus",
2642
+ "target": undefined,
2643
+ "capture": false,
2644
+ "passive": false
2645
+ }, {
2646
+ "name": "brSelectInputValueChange",
2647
+ "method": "handleSelectInputValueChange",
2648
+ "target": undefined,
2649
+ "capture": false,
2650
+ "passive": false
2651
+ }, {
2652
+ "name": "brSelectInputActionClick",
2653
+ "method": "handleSelectInputActionClick",
2654
+ "target": undefined,
2655
+ "capture": false,
2656
+ "passive": false
2657
+ }, {
2658
+ "name": "brSelectInputClick",
2659
+ "method": "handleSelectInputClick",
2660
+ "target": undefined,
2661
+ "capture": false,
2662
+ "passive": false
2663
+ }, {
2664
+ "name": "brSelectOptionStateChange",
2665
+ "method": "handleSelectOptionStateChange",
2666
+ "target": undefined,
2667
+ "capture": false,
2668
+ "passive": false
2669
+ }, {
2670
+ "name": "brInternalSelectOptionHover",
2671
+ "method": "handleSelectOptionHover",
2672
+ "target": undefined,
2673
+ "capture": false,
2674
+ "passive": false
2675
+ }, {
2676
+ "name": "keydown",
2677
+ "method": "handleKeyDown",
2678
+ "target": undefined,
2679
+ "capture": false,
2680
+ "passive": false
2681
+ }, {
2682
+ "name": "click",
2683
+ "method": "handleWindowClick",
2684
+ "target": "window",
2685
+ "capture": false,
2686
+ "passive": false
2687
+ }];
2688
+ }
2689
+ static get attachInternalsMemberName() { return "elementInternals"; }
2690
+ }
2691
+ Select.SELECT_ALL_LABEL = 'Selecionar todos';
2692
+ Select.DESELECT_ALL_LABEL = 'Desselecionar todos';