@govbr-ds/webcomponents 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (584) hide show
  1. package/README.md +2 -2
  2. package/cem/custom-elements.json +371 -199
  3. package/cem/webcomponents.html-custom-data.json +146 -121
  4. package/dist/cjs/br-avatar.cjs.entry.js +2 -2
  5. package/dist/cjs/br-breadcrumb-item.cjs.entry.js +1 -1
  6. package/dist/cjs/br-breadcrumb.cjs.entry.js +2 -2
  7. package/dist/cjs/br-button_2.cjs.entry.js +2 -2
  8. package/dist/cjs/br-card.cjs.entry.js +2 -2
  9. package/dist/cjs/br-carousel-page.cjs.entry.js +1 -1
  10. package/dist/cjs/br-carousel.cjs.entry.js +1 -1
  11. package/dist/cjs/br-checkbox-group.cjs.entry.js +2 -2
  12. package/dist/cjs/br-checkbox.cjs.entry.js +3 -3
  13. package/dist/cjs/br-checkgroup.cjs.entry.js +1 -1
  14. package/dist/cjs/br-collapse_2.cjs.entry.js +3 -3
  15. package/dist/cjs/br-cookiebar-cookie.cjs.entry.js +1 -1
  16. package/dist/cjs/br-cookiebar-group.cjs.entry.js +1 -1
  17. package/dist/cjs/br-cookiebar-header.cjs.entry.js +1 -1
  18. package/dist/cjs/br-cookiebar-link.cjs.entry.js +1 -1
  19. package/dist/cjs/br-cookiebar-note.cjs.entry.js +1 -1
  20. package/dist/cjs/br-cookiebar.cjs.entry.js +2 -2
  21. package/dist/cjs/br-crumb.cjs.entry.js +1 -1
  22. package/dist/cjs/br-date-picker_3.cjs.entry.js +154 -67
  23. package/dist/cjs/br-datetime-picker.cjs.entry.js +5 -5
  24. package/dist/cjs/br-divider.cjs.entry.js +2 -2
  25. package/dist/cjs/br-dropdown_2.cjs.entry.js +40 -16
  26. package/dist/cjs/br-footer-category.cjs.entry.js +2 -2
  27. package/dist/cjs/br-footer-item.cjs.entry.js +1 -1
  28. package/dist/cjs/br-footer-legal.cjs.entry.js +1 -1
  29. package/dist/cjs/br-footer-logo.cjs.entry.js +1 -1
  30. package/dist/cjs/br-footer-social.cjs.entry.js +1 -1
  31. package/dist/cjs/br-footer.cjs.entry.js +3 -3
  32. package/dist/cjs/br-header-function.cjs.entry.js +1 -1
  33. package/dist/cjs/br-header-link.cjs.entry.js +1 -1
  34. package/dist/cjs/br-header-list.cjs.entry.js +1 -1
  35. package/dist/cjs/br-header-logo.cjs.entry.js +1 -1
  36. package/dist/cjs/br-header.cjs.entry.js +1 -1
  37. package/dist/cjs/br-icon.cjs.entry.js +2 -2
  38. package/dist/cjs/br-input.cjs.entry.js +58 -10
  39. package/dist/cjs/br-item.cjs.entry.js +2 -2
  40. package/dist/cjs/br-link.cjs.entry.js +7 -7
  41. package/dist/cjs/br-loading.cjs.entry.js +1 -1
  42. package/dist/cjs/br-magic-button.cjs.entry.js +1 -1
  43. package/dist/cjs/br-menu-group.cjs.entry.js +1 -1
  44. package/dist/cjs/br-menu-header.cjs.entry.js +1 -1
  45. package/dist/cjs/br-menu-info.cjs.entry.js +1 -1
  46. package/dist/cjs/br-menu-item.cjs.entry.js +1 -1
  47. package/dist/cjs/br-menu-link.cjs.entry.js +1 -1
  48. package/dist/cjs/br-menu-logo.cjs.entry.js +1 -1
  49. package/dist/cjs/br-menu.cjs.entry.js +3 -3
  50. package/dist/cjs/br-notification-body.cjs.entry.js +1 -1
  51. package/dist/cjs/br-notification-header.cjs.entry.js +1 -1
  52. package/dist/cjs/br-notification-item.cjs.entry.js +1 -1
  53. package/dist/cjs/br-notification.cjs.entry.js +2 -2
  54. package/dist/cjs/br-pagination.cjs.entry.js +3 -3
  55. package/dist/cjs/br-radio-group.cjs.entry.js +3 -3
  56. package/dist/cjs/br-radio.cjs.entry.js +3 -3
  57. package/dist/cjs/br-scrim.cjs.entry.js +2 -2
  58. package/dist/cjs/br-select-input_3.cjs.entry.js +39 -16
  59. package/dist/cjs/br-sign-in.cjs.entry.js +2 -2
  60. package/dist/cjs/br-skip-link-item.cjs.entry.js +1 -1
  61. package/dist/cjs/br-skip-link.cjs.entry.js +1 -1
  62. package/dist/cjs/br-skiplink-item.cjs.entry.js +1 -1
  63. package/dist/cjs/br-slider.cjs.entry.js +2 -2
  64. package/dist/cjs/br-step_2.cjs.entry.js +4 -4
  65. package/dist/cjs/br-switch.cjs.entry.js +3 -3
  66. package/dist/cjs/br-tab-item.cjs.entry.js +1 -1
  67. package/dist/cjs/br-tab.cjs.entry.js +3 -3
  68. package/dist/cjs/br-table-body.cjs.entry.js +1 -1
  69. package/dist/cjs/br-table-cell.cjs.entry.js +1 -1
  70. package/dist/cjs/br-table-header-cell.cjs.entry.js +1 -1
  71. package/dist/cjs/br-table-header.cjs.entry.js +1 -1
  72. package/dist/cjs/br-table-row.cjs.entry.js +1 -1
  73. package/dist/cjs/br-table.cjs.entry.js +1 -1
  74. package/dist/cjs/br-tag.cjs.entry.js +3 -3
  75. package/dist/cjs/br-textarea.cjs.entry.js +2 -2
  76. package/dist/cjs/br-tooltip.cjs.entry.js +1 -1
  77. package/dist/cjs/br-upload.cjs.entry.js +4 -4
  78. package/dist/cjs/br-wizard-panel.cjs.entry.js +1 -1
  79. package/dist/cjs/br-wizard.cjs.entry.js +1 -1
  80. package/dist/cjs/{datetime-picker-constants-CCeI5iW7.js → datetime-picker-constants-CTf1kVJ1.js} +1 -0
  81. package/dist/cjs/{iconify-icon-DfODV9bf.js → iconify-icon-LjavbM-D.js} +103 -57
  82. package/dist/cjs/{index-C-IpVFDH.js → index-Caoez3xb.js} +64 -16
  83. package/dist/cjs/index.cjs.js +2 -2
  84. package/dist/cjs/{isValid-CduHZTFc.js → isValid-DgJ-noPS.js} +1 -1
  85. package/dist/cjs/loader.cjs.js +1 -1
  86. package/dist/cjs/{slot-DAllytTj.js → slot-CjaqqX7y.js} +1 -1
  87. package/dist/cjs/webcomponents.cjs.js +1 -1
  88. package/dist/collection/components/avatar/avatar.js +21 -21
  89. package/dist/collection/components/breadcrumb/breadcrumb-item/breadcrumb-item.js +4 -12
  90. package/dist/collection/components/breadcrumb/breadcrumb.js +32 -27
  91. package/dist/collection/components/breadcrumb/crumb/crumb.js +2 -13
  92. package/dist/collection/components/button/button.js +21 -21
  93. package/dist/collection/components/card/card.js +20 -22
  94. package/dist/collection/components/carousel/carousel-page/carousel-page.js +3 -13
  95. package/dist/collection/components/carousel/carousel.js +23 -30
  96. package/dist/collection/components/checkbox/checkbox.js +18 -24
  97. package/dist/collection/components/checkbox-group/checkbox-group.js +19 -20
  98. package/dist/collection/components/checkgroup/checkgroup.js +2 -14
  99. package/dist/collection/components/collapse/collapse.js +25 -21
  100. package/dist/collection/components/cookiebar/cookiebar-cookie/cookiebar-cookie.js +3 -16
  101. package/dist/collection/components/cookiebar/cookiebar-group/cookiebar-group.js +3 -16
  102. package/dist/collection/components/cookiebar/cookiebar-header/cookiebar-header.js +3 -16
  103. package/dist/collection/components/cookiebar/cookiebar-link/cookiebar-link.js +3 -15
  104. package/dist/collection/components/cookiebar/cookiebar-note/cookiebar-note.js +3 -14
  105. package/dist/collection/components/cookiebar/cookiebar-note-group/cookiebar-note-group.js +2 -13
  106. package/dist/collection/components/cookiebar/cookiebar.js +32 -27
  107. package/dist/collection/components/datetime-picker/date-picker/date-picker-locale.js +62 -15
  108. package/dist/collection/components/datetime-picker/date-picker/date-picker.js +120 -71
  109. package/dist/collection/components/datetime-picker/datetime-input/datetime-input.js +3 -13
  110. package/dist/collection/components/datetime-picker/datetime-picker.js +23 -27
  111. package/dist/collection/components/datetime-picker/time-picker/time-picker.js +5 -15
  112. package/dist/collection/components/divider/divider.js +15 -19
  113. package/dist/collection/components/dropdown/dropdown.js +22 -21
  114. package/dist/collection/components/footer/footer-category/footer-category.js +4 -17
  115. package/dist/collection/components/footer/footer-item/footer-item.js +3 -16
  116. package/dist/collection/components/footer/footer-legal/footer-legal.js +2 -16
  117. package/dist/collection/components/footer/footer-logo/footer-logo.js +3 -16
  118. package/dist/collection/components/footer/footer-social/footer-social.js +3 -15
  119. package/dist/collection/components/footer/footer.js +25 -29
  120. package/dist/collection/components/header/header-function/header-function.js +10 -14
  121. package/dist/collection/components/header/header-link/header-link.js +3 -16
  122. package/dist/collection/components/header/header-list/header-list.js +3 -16
  123. package/dist/collection/components/header/header-logo/header-logo.js +3 -16
  124. package/dist/collection/components/header/header.js +30 -27
  125. package/dist/collection/components/icon/icon.js +22 -17
  126. package/dist/collection/components/input/input.css +1 -1
  127. package/dist/collection/components/input/input.js +98 -30
  128. package/dist/collection/components/item/item.js +18 -22
  129. package/dist/collection/components/link/link.js +25 -29
  130. package/dist/collection/components/list/list.js +17 -21
  131. package/dist/collection/components/loading/loading.js +17 -24
  132. package/dist/collection/components/magic-button/magic-button.js +13 -20
  133. package/dist/collection/components/menu/menu-group/menu-group.js +3 -16
  134. package/dist/collection/components/menu/menu-header/menu-header.js +3 -16
  135. package/dist/collection/components/menu/menu-info/menu-info.js +2 -15
  136. package/dist/collection/components/menu/menu-item/menu-item.js +3 -16
  137. package/dist/collection/components/menu/menu-link/menu-link.js +5 -17
  138. package/dist/collection/components/menu/menu-list/menu-list.js +2 -15
  139. package/dist/collection/components/menu/menu-logo/menu-logo.js +2 -15
  140. package/dist/collection/components/menu/menu-social/menu-social.js +2 -15
  141. package/dist/collection/components/menu/menu.js +28 -35
  142. package/dist/collection/components/message/message.js +22 -25
  143. package/dist/collection/components/modal/modal.js +18 -21
  144. package/dist/collection/components/notification/notification-body/notification-body.js +3 -13
  145. package/dist/collection/components/notification/notification-header/notification-header.js +3 -14
  146. package/dist/collection/components/notification/notification-item/notification-item.js +3 -16
  147. package/dist/collection/components/notification/notification.js +20 -29
  148. package/dist/collection/components/pagination/pagination.css +1 -1
  149. package/dist/collection/components/pagination/pagination.js +15 -23
  150. package/dist/collection/components/radio/radio.js +17 -20
  151. package/dist/collection/components/radio-group/radio-group.js +20 -20
  152. package/dist/collection/components/scrim/scrim.js +14 -17
  153. package/dist/collection/components/select/select-input/select-input.css +1 -1
  154. package/dist/collection/components/select/select-input/select-input.js +43 -19
  155. package/dist/collection/components/select/select-list/select-list.css +1 -1
  156. package/dist/collection/components/select/select-list/select-list.js +52 -15
  157. package/dist/collection/components/select/select-option/select-option.js +8 -13
  158. package/dist/collection/components/select/select.css +1 -1
  159. package/dist/collection/components/select/select.js +83 -105
  160. package/dist/collection/components/sign-in/sign-in.js +12 -16
  161. package/dist/collection/components/skip-link/skip-link-item/skip-link-item-alias.js +8 -4
  162. package/dist/collection/components/skip-link/skip-link-item/skip-link-item.js +5 -15
  163. package/dist/collection/components/skip-link/skip-link.js +18 -24
  164. package/dist/collection/components/slider/slider.js +15 -25
  165. package/dist/collection/components/step/step-item/step-item.js +5 -15
  166. package/dist/collection/components/step/step.js +16 -25
  167. package/dist/collection/components/switch/switch.js +16 -20
  168. package/dist/collection/components/tab/tab-item/tab-item.js +5 -15
  169. package/dist/collection/components/tab/tab.js +22 -29
  170. package/dist/collection/components/table/table-body/table-body.js +3 -13
  171. package/dist/collection/components/table/table-cell/table-cell.js +3 -12
  172. package/dist/collection/components/table/table-header/table-header.js +3 -13
  173. package/dist/collection/components/table/table-header-cell/table-header-cell.js +3 -13
  174. package/dist/collection/components/table/table-row/table-row.js +3 -13
  175. package/dist/collection/components/table/table.js +25 -32
  176. package/dist/collection/components/tag/tag.js +17 -26
  177. package/dist/collection/components/textarea/textarea.js +14 -22
  178. package/dist/collection/components/tooltip/tooltip.js +13 -19
  179. package/dist/collection/components/upload/upload.css +1 -1
  180. package/dist/collection/components/upload/upload.js +36 -29
  181. package/dist/collection/components/wizard/wizard-panel/wizard-panel.js +3 -13
  182. package/dist/collection/components/wizard/wizard.js +22 -26
  183. package/dist/collection/pages/components/select/remote-options.js +87 -0
  184. package/dist/collection/shared/utils/slot.js +1 -1
  185. package/dist/components/br-avatar.js +1 -1
  186. package/dist/components/br-breadcrumb-item.js +1 -1
  187. package/dist/components/br-breadcrumb.js +1 -1
  188. package/dist/components/br-button.js +1 -1
  189. package/dist/components/br-card.js +1 -1
  190. package/dist/components/br-carousel-page.js +1 -1
  191. package/dist/components/br-carousel.js +1 -1
  192. package/dist/components/br-checkbox-group.js +1 -1
  193. package/dist/components/br-checkbox.js +1 -1
  194. package/dist/components/br-checkgroup.js +1 -1
  195. package/dist/components/br-collapse.js +1 -1
  196. package/dist/components/br-cookiebar-cookie.js +1 -1
  197. package/dist/components/br-cookiebar-group.js +1 -1
  198. package/dist/components/br-cookiebar-header.js +1 -1
  199. package/dist/components/br-cookiebar-link.js +1 -1
  200. package/dist/components/br-cookiebar-note-group.js +1 -1
  201. package/dist/components/br-cookiebar-note.js +1 -1
  202. package/dist/components/br-cookiebar.js +1 -1
  203. package/dist/components/br-crumb.js +1 -1
  204. package/dist/components/br-date-picker.js +1 -1
  205. package/dist/components/br-datetime-input.js +1 -1
  206. package/dist/components/br-datetime-picker.js +1 -1
  207. package/dist/components/br-divider.js +1 -1
  208. package/dist/components/br-dropdown.js +1 -1
  209. package/dist/components/br-footer-category.js +1 -1
  210. package/dist/components/br-footer-item.js +1 -1
  211. package/dist/components/br-footer-legal.js +1 -1
  212. package/dist/components/br-footer-logo.js +1 -1
  213. package/dist/components/br-footer-social.js +1 -1
  214. package/dist/components/br-footer.js +1 -1
  215. package/dist/components/br-header-function.js +1 -1
  216. package/dist/components/br-header-link.js +1 -1
  217. package/dist/components/br-header-list.js +1 -1
  218. package/dist/components/br-header-logo.js +1 -1
  219. package/dist/components/br-header.js +1 -1
  220. package/dist/components/br-icon.js +1 -1
  221. package/dist/components/br-input.js +1 -1
  222. package/dist/components/br-item.js +1 -1
  223. package/dist/components/br-link.js +1 -1
  224. package/dist/components/br-list.js +1 -1
  225. package/dist/components/br-loading.js +1 -1
  226. package/dist/components/br-magic-button.js +1 -1
  227. package/dist/components/br-menu-group.js +1 -1
  228. package/dist/components/br-menu-header.js +1 -1
  229. package/dist/components/br-menu-info.js +1 -1
  230. package/dist/components/br-menu-item.js +1 -1
  231. package/dist/components/br-menu-link.js +1 -1
  232. package/dist/components/br-menu-list.js +1 -1
  233. package/dist/components/br-menu-logo.js +1 -1
  234. package/dist/components/br-menu-social.js +1 -1
  235. package/dist/components/br-menu.js +1 -1
  236. package/dist/components/br-message.js +1 -1
  237. package/dist/components/br-modal.js +1 -1
  238. package/dist/components/br-notification-body.js +1 -1
  239. package/dist/components/br-notification-header.js +1 -1
  240. package/dist/components/br-notification-item.js +1 -1
  241. package/dist/components/br-notification.js +1 -1
  242. package/dist/components/br-pagination.js +1 -1
  243. package/dist/components/br-radio-group.js +1 -1
  244. package/dist/components/br-radio.js +1 -1
  245. package/dist/components/br-scrim.js +1 -1
  246. package/dist/components/br-select-input.js +1 -1
  247. package/dist/components/br-select-list.js +1 -1
  248. package/dist/components/br-select-option.js +1 -1
  249. package/dist/components/br-select.js +1 -1
  250. package/dist/components/br-sign-in.js +1 -1
  251. package/dist/components/br-skip-link-item.js +1 -1
  252. package/dist/components/br-skip-link.js +1 -1
  253. package/dist/components/br-skiplink-item.js +1 -1
  254. package/dist/components/br-slider.js +1 -1
  255. package/dist/components/br-step-item.js +1 -1
  256. package/dist/components/br-step.js +1 -1
  257. package/dist/components/br-switch.js +1 -1
  258. package/dist/components/br-tab-item.js +1 -1
  259. package/dist/components/br-tab.js +1 -1
  260. package/dist/components/br-table-body.js +1 -1
  261. package/dist/components/br-table-cell.js +1 -1
  262. package/dist/components/br-table-header-cell.js +1 -1
  263. package/dist/components/br-table-header.js +1 -1
  264. package/dist/components/br-table-row.js +1 -1
  265. package/dist/components/br-table.js +1 -1
  266. package/dist/components/br-tag.js +1 -1
  267. package/dist/components/br-textarea.js +1 -1
  268. package/dist/components/br-time-picker.js +1 -1
  269. package/dist/components/br-tooltip.js +1 -1
  270. package/dist/components/br-upload.js +1 -1
  271. package/dist/components/br-wizard-panel.js +1 -1
  272. package/dist/components/br-wizard.js +1 -1
  273. package/dist/components/index.js +1 -1
  274. package/dist/components/{p-jOb1hCPi.js → p-448Z5r2f.js} +1 -1
  275. package/dist/components/{p-DL6xuxGG.js → p-AhfgJCUp.js} +1 -1
  276. package/dist/components/{p-BzQFMh9j.js → p-AoNL6BaW.js} +1 -1
  277. package/dist/components/{p-Devw08cc.js → p-B468MCYC.js} +1 -1
  278. package/dist/components/{p-BH6QYnAr.js → p-B985Ov_x.js} +1 -1
  279. package/dist/components/{p-5h-W9_JR.js → p-BOWQIHQA.js} +1 -1
  280. package/dist/components/{p-Di96UxvH.js → p-BPQrgCRr.js} +1 -1
  281. package/dist/components/{p-CeNELttN.js → p-BwQT0fOJ.js} +1 -1
  282. package/dist/components/{p-CjtmJTLO.js → p-CAgbUwsx.js} +1 -1
  283. package/dist/components/{p-DDu3JV_r.js → p-CFXey8i8.js} +1 -1
  284. package/dist/components/{p-DsO4F0Cz.js → p-CVz_akHx.js} +1 -1
  285. package/dist/components/{p-DFWqyfUe.js → p-CW8xwk6J.js} +1 -1
  286. package/dist/components/p-CYZVdKeO.js +5 -0
  287. package/dist/components/p-C_DC6oQW.js +16 -0
  288. package/dist/components/{p-CCPHCJjw.js → p-CeWbZN7V.js} +1 -1
  289. package/dist/components/p-CyXVsiz9.js +5 -0
  290. package/dist/components/{p-BFHvuEnN.js → p-DDe0tQEO.js} +1 -1
  291. package/dist/components/{p-D-3G3Ioq.js → p-DJKZ8ktB.js} +1 -1
  292. package/dist/components/{p-BicHMcSS.js → p-DRsZ9GNg.js} +1 -1
  293. package/dist/components/p-DU54cqCf.js +5 -0
  294. package/dist/components/p-DVJlmlEX.js +5 -0
  295. package/dist/components/{p-ta-24T1Z.js → p-DcMjwTqu.js} +1 -1
  296. package/dist/components/p-Dd1qCWAK.js +5 -0
  297. package/dist/components/{p-rMnkh3Cy.js → p-Dn36Mj2E.js} +1 -1
  298. package/dist/components/{p-DOX9Uwk1.js → p-DoWy_P8b.js} +1 -1
  299. package/dist/components/{p-Dp3MsSXu.js → p-HbhTnepI.js} +1 -1
  300. package/dist/components/{p-CbgKdASU.js → p-JkJjzmGm.js} +1 -1
  301. package/dist/components/{p-Bvrw9yWR.js → p-Or3FLzbz.js} +1 -1
  302. package/dist/components/{p-PV731d8s.js → p-SWQlgYWR.js} +1 -1
  303. package/dist/components/{p-XW6Hp_Jk.js → p-Zb9nyfTY.js} +1 -1
  304. package/dist/components/{p-OQpiDEK9.js → p-jvKQA6x7.js} +1 -1
  305. package/dist/components/{p-CBHd0-fF.js → p-pQb-3jFY.js} +1 -1
  306. package/dist/components/{p-848QkYoM.js → p-qX6sHxOk.js} +1 -1
  307. package/dist/esm/br-avatar.entry.js +2 -2
  308. package/dist/esm/br-breadcrumb-item.entry.js +1 -1
  309. package/dist/esm/br-breadcrumb.entry.js +2 -2
  310. package/dist/esm/br-button_2.entry.js +2 -2
  311. package/dist/esm/br-card.entry.js +2 -2
  312. package/dist/esm/br-carousel-page.entry.js +1 -1
  313. package/dist/esm/br-carousel.entry.js +1 -1
  314. package/dist/esm/br-checkbox-group.entry.js +2 -2
  315. package/dist/esm/br-checkbox.entry.js +3 -3
  316. package/dist/esm/br-checkgroup.entry.js +1 -1
  317. package/dist/esm/br-collapse_2.entry.js +3 -3
  318. package/dist/esm/br-cookiebar-cookie.entry.js +1 -1
  319. package/dist/esm/br-cookiebar-group.entry.js +1 -1
  320. package/dist/esm/br-cookiebar-header.entry.js +1 -1
  321. package/dist/esm/br-cookiebar-link.entry.js +1 -1
  322. package/dist/esm/br-cookiebar-note.entry.js +1 -1
  323. package/dist/esm/br-cookiebar.entry.js +2 -2
  324. package/dist/esm/br-crumb.entry.js +1 -1
  325. package/dist/esm/br-date-picker_3.entry.js +155 -68
  326. package/dist/esm/br-datetime-picker.entry.js +5 -5
  327. package/dist/esm/br-divider.entry.js +2 -2
  328. package/dist/esm/br-dropdown_2.entry.js +40 -16
  329. package/dist/esm/br-footer-category.entry.js +2 -2
  330. package/dist/esm/br-footer-item.entry.js +1 -1
  331. package/dist/esm/br-footer-legal.entry.js +1 -1
  332. package/dist/esm/br-footer-logo.entry.js +1 -1
  333. package/dist/esm/br-footer-social.entry.js +1 -1
  334. package/dist/esm/br-footer.entry.js +3 -3
  335. package/dist/esm/br-header-function.entry.js +1 -1
  336. package/dist/esm/br-header-link.entry.js +1 -1
  337. package/dist/esm/br-header-list.entry.js +1 -1
  338. package/dist/esm/br-header-logo.entry.js +1 -1
  339. package/dist/esm/br-header.entry.js +1 -1
  340. package/dist/esm/br-icon.entry.js +2 -2
  341. package/dist/esm/br-input.entry.js +59 -11
  342. package/dist/esm/br-item.entry.js +2 -2
  343. package/dist/esm/br-link.entry.js +7 -7
  344. package/dist/esm/br-loading.entry.js +1 -1
  345. package/dist/esm/br-magic-button.entry.js +1 -1
  346. package/dist/esm/br-menu-group.entry.js +1 -1
  347. package/dist/esm/br-menu-header.entry.js +1 -1
  348. package/dist/esm/br-menu-info.entry.js +1 -1
  349. package/dist/esm/br-menu-item.entry.js +1 -1
  350. package/dist/esm/br-menu-link.entry.js +1 -1
  351. package/dist/esm/br-menu-logo.entry.js +1 -1
  352. package/dist/esm/br-menu.entry.js +3 -3
  353. package/dist/esm/br-notification-body.entry.js +1 -1
  354. package/dist/esm/br-notification-header.entry.js +1 -1
  355. package/dist/esm/br-notification-item.entry.js +1 -1
  356. package/dist/esm/br-notification.entry.js +2 -2
  357. package/dist/esm/br-pagination.entry.js +3 -3
  358. package/dist/esm/br-radio-group.entry.js +3 -3
  359. package/dist/esm/br-radio.entry.js +3 -3
  360. package/dist/esm/br-scrim.entry.js +2 -2
  361. package/dist/esm/br-select-input_3.entry.js +39 -16
  362. package/dist/esm/br-sign-in.entry.js +2 -2
  363. package/dist/esm/br-skip-link-item.entry.js +1 -1
  364. package/dist/esm/br-skip-link.entry.js +1 -1
  365. package/dist/esm/br-skiplink-item.entry.js +1 -1
  366. package/dist/esm/br-slider.entry.js +2 -2
  367. package/dist/esm/br-step_2.entry.js +4 -4
  368. package/dist/esm/br-switch.entry.js +3 -3
  369. package/dist/esm/br-tab-item.entry.js +1 -1
  370. package/dist/esm/br-tab.entry.js +3 -3
  371. package/dist/esm/br-table-body.entry.js +1 -1
  372. package/dist/esm/br-table-cell.entry.js +1 -1
  373. package/dist/esm/br-table-header-cell.entry.js +1 -1
  374. package/dist/esm/br-table-header.entry.js +1 -1
  375. package/dist/esm/br-table-row.entry.js +1 -1
  376. package/dist/esm/br-table.entry.js +1 -1
  377. package/dist/esm/br-tag.entry.js +3 -3
  378. package/dist/esm/br-textarea.entry.js +2 -2
  379. package/dist/esm/br-tooltip.entry.js +1 -1
  380. package/dist/esm/br-upload.entry.js +4 -4
  381. package/dist/esm/br-wizard-panel.entry.js +1 -1
  382. package/dist/esm/br-wizard.entry.js +1 -1
  383. package/dist/esm/{datetime-picker-constants-DDc4sADe.js → datetime-picker-constants-1l4_-FEJ.js} +1 -1
  384. package/dist/esm/{iconify-icon-D3usVJE2.js → iconify-icon-C_DC6oQW.js} +103 -57
  385. package/dist/esm/{index-CytVKoHT.js → index-BQRBKuY0.js} +64 -17
  386. package/dist/esm/index.js +2 -2
  387. package/dist/esm/{isValid-Bee0Uvqc.js → isValid-wU7S6MI2.js} +1 -1
  388. package/dist/esm/loader.js +1 -1
  389. package/dist/esm/{slot-BIG-yees.js → slot-Bt01zQ7-.js} +1 -1
  390. package/dist/esm/webcomponents.js +1 -1
  391. package/dist/hydrate/index.js +1452 -1876
  392. package/dist/hydrate/index.mjs +1452 -1876
  393. package/dist/types/components/avatar/avatar.d.ts +20 -20
  394. package/dist/types/components/breadcrumb/breadcrumb-item/breadcrumb-item.d.ts +3 -11
  395. package/dist/types/components/breadcrumb/breadcrumb.d.ts +30 -25
  396. package/dist/types/components/breadcrumb/crumb/crumb.d.ts +1 -12
  397. package/dist/types/components/button/button.d.ts +20 -20
  398. package/dist/types/components/card/card.d.ts +19 -21
  399. package/dist/types/components/carousel/carousel-page/carousel-page.d.ts +2 -12
  400. package/dist/types/components/carousel/carousel.d.ts +22 -29
  401. package/dist/types/components/checkbox/checkbox.d.ts +16 -22
  402. package/dist/types/components/checkbox-group/checkbox-group.d.ts +17 -18
  403. package/dist/types/components/checkgroup/checkgroup.d.ts +1 -13
  404. package/dist/types/components/collapse/collapse.d.ts +24 -20
  405. package/dist/types/components/cookiebar/cookiebar-cookie/cookiebar-cookie.d.ts +2 -15
  406. package/dist/types/components/cookiebar/cookiebar-group/cookiebar-group.d.ts +2 -15
  407. package/dist/types/components/cookiebar/cookiebar-header/cookiebar-header.d.ts +2 -15
  408. package/dist/types/components/cookiebar/cookiebar-link/cookiebar-link.d.ts +2 -14
  409. package/dist/types/components/cookiebar/cookiebar-note/cookiebar-note.d.ts +2 -13
  410. package/dist/types/components/cookiebar/cookiebar-note-group/cookiebar-note-group.d.ts +2 -13
  411. package/dist/types/components/cookiebar/cookiebar.d.ts +30 -25
  412. package/dist/types/components/datetime-picker/date-picker/date-picker-locale.d.ts +12 -4
  413. package/dist/types/components/datetime-picker/date-picker/date-picker.d.ts +57 -11
  414. package/dist/types/components/datetime-picker/datetime-input/datetime-input.d.ts +2 -12
  415. package/dist/types/components/datetime-picker/datetime-picker.d.ts +22 -26
  416. package/dist/types/components/datetime-picker/time-picker/time-picker.d.ts +3 -13
  417. package/dist/types/components/divider/divider.d.ts +14 -18
  418. package/dist/types/components/dropdown/dropdown.d.ts +21 -20
  419. package/dist/types/components/footer/footer-category/footer-category.d.ts +2 -15
  420. package/dist/types/components/footer/footer-item/footer-item.d.ts +2 -15
  421. package/dist/types/components/footer/footer-legal/footer-legal.d.ts +1 -15
  422. package/dist/types/components/footer/footer-logo/footer-logo.d.ts +2 -15
  423. package/dist/types/components/footer/footer-social/footer-social.d.ts +2 -14
  424. package/dist/types/components/footer/footer.d.ts +23 -27
  425. package/dist/types/components/header/header-function/header-function.d.ts +9 -13
  426. package/dist/types/components/header/header-link/header-link.d.ts +2 -15
  427. package/dist/types/components/header/header-list/header-list.d.ts +2 -15
  428. package/dist/types/components/header/header-logo/header-logo.d.ts +2 -15
  429. package/dist/types/components/header/header.d.ts +29 -26
  430. package/dist/types/components/icon/icon.d.ts +21 -16
  431. package/dist/types/components/input/input.d.ts +39 -22
  432. package/dist/types/components/item/item.d.ts +17 -21
  433. package/dist/types/components/link/link.d.ts +18 -22
  434. package/dist/types/components/list/list.d.ts +16 -20
  435. package/dist/types/components/loading/loading.d.ts +16 -23
  436. package/dist/types/components/magic-button/magic-button.d.ts +12 -19
  437. package/dist/types/components/menu/menu-group/menu-group.d.ts +2 -15
  438. package/dist/types/components/menu/menu-header/menu-header.d.ts +2 -15
  439. package/dist/types/components/menu/menu-info/menu-info.d.ts +1 -14
  440. package/dist/types/components/menu/menu-item/menu-item.d.ts +2 -15
  441. package/dist/types/components/menu/menu-link/menu-link.d.ts +4 -16
  442. package/dist/types/components/menu/menu-list/menu-list.d.ts +2 -15
  443. package/dist/types/components/menu/menu-logo/menu-logo.d.ts +1 -14
  444. package/dist/types/components/menu/menu-social/menu-social.d.ts +2 -15
  445. package/dist/types/components/menu/menu.d.ts +25 -32
  446. package/dist/types/components/message/message.d.ts +21 -24
  447. package/dist/types/components/modal/modal.d.ts +18 -21
  448. package/dist/types/components/notification/notification-body/notification-body.d.ts +2 -12
  449. package/dist/types/components/notification/notification-header/notification-header.d.ts +2 -13
  450. package/dist/types/components/notification/notification-item/notification-item.d.ts +2 -15
  451. package/dist/types/components/notification/notification.d.ts +18 -27
  452. package/dist/types/components/pagination/pagination.d.ts +13 -21
  453. package/dist/types/components/radio/radio.d.ts +15 -18
  454. package/dist/types/components/radio-group/radio-group.d.ts +18 -18
  455. package/dist/types/components/scrim/scrim.d.ts +12 -15
  456. package/dist/types/components/select/select-input/select-input.d.ts +11 -10
  457. package/dist/types/components/select/select-list/select-list.d.ts +13 -12
  458. package/dist/types/components/select/select-option/select-option.d.ts +5 -10
  459. package/dist/types/components/select/select.d.ts +42 -94
  460. package/dist/types/components/sign-in/sign-in.d.ts +11 -15
  461. package/dist/types/components/skip-link/skip-link-item/skip-link-item-alias.d.ts +7 -3
  462. package/dist/types/components/skip-link/skip-link-item/skip-link-item.d.ts +4 -14
  463. package/dist/types/components/skip-link/skip-link.d.ts +17 -23
  464. package/dist/types/components/slider/slider.d.ts +14 -24
  465. package/dist/types/components/step/step-item/step-item.d.ts +2 -12
  466. package/dist/types/components/step/step.d.ts +15 -24
  467. package/dist/types/components/switch/switch.d.ts +14 -18
  468. package/dist/types/components/tab/tab-item/tab-item.d.ts +4 -14
  469. package/dist/types/components/tab/tab.d.ts +19 -26
  470. package/dist/types/components/table/table-body/table-body.d.ts +2 -12
  471. package/dist/types/components/table/table-cell/table-cell.d.ts +2 -11
  472. package/dist/types/components/table/table-header/table-header.d.ts +2 -12
  473. package/dist/types/components/table/table-header-cell/table-header-cell.d.ts +2 -12
  474. package/dist/types/components/table/table-row/table-row.d.ts +2 -12
  475. package/dist/types/components/table/table.d.ts +24 -31
  476. package/dist/types/components/tag/tag.d.ts +15 -24
  477. package/dist/types/components/textarea/textarea.d.ts +13 -21
  478. package/dist/types/components/tooltip/tooltip.d.ts +12 -18
  479. package/dist/types/components/upload/upload.d.ts +20 -27
  480. package/dist/types/components/wizard/wizard-panel/wizard-panel.d.ts +2 -12
  481. package/dist/types/components/wizard/wizard.d.ts +21 -25
  482. package/dist/types/components.d.ts +3384 -4947
  483. package/dist/webcomponents/index.esm.js +1 -1
  484. package/dist/webcomponents/{p-08ac6f09.entry.js → p-031a2256.entry.js} +1 -1
  485. package/dist/webcomponents/{p-23a5cfd7.entry.js → p-0602e5b1.entry.js} +1 -1
  486. package/dist/webcomponents/p-079d5f69.entry.js +5 -0
  487. package/dist/webcomponents/{p-0fc112fc.entry.js → p-087ed5e7.entry.js} +1 -1
  488. package/dist/webcomponents/{p-7ee564a1.entry.js → p-0d5a9ebf.entry.js} +1 -1
  489. package/dist/webcomponents/{p-a038be16.entry.js → p-105b4d06.entry.js} +1 -1
  490. package/dist/webcomponents/{p-6a293be8.entry.js → p-11d4edc5.entry.js} +1 -1
  491. package/dist/webcomponents/{p-31a4694a.entry.js → p-12dd22af.entry.js} +1 -1
  492. package/dist/webcomponents/{p-b07bfdc5.entry.js → p-14aedf0d.entry.js} +1 -1
  493. package/dist/webcomponents/{p-1ba60d13.entry.js → p-152482f9.entry.js} +1 -1
  494. package/dist/webcomponents/{p-09c79c1d.entry.js → p-19b4b1b7.entry.js} +1 -1
  495. package/dist/webcomponents/{p-b0124459.entry.js → p-1cd1126e.entry.js} +1 -1
  496. package/dist/webcomponents/{p-DDc4sADe.js → p-1l4_-FEJ.js} +1 -1
  497. package/dist/webcomponents/{p-18cf093a.entry.js → p-21e10074.entry.js} +1 -1
  498. package/dist/webcomponents/{p-47c490ef.entry.js → p-2271ea84.entry.js} +1 -1
  499. package/dist/webcomponents/{p-c717c745.entry.js → p-271b1ede.entry.js} +1 -1
  500. package/dist/webcomponents/{p-b66ab52d.entry.js → p-28f732fc.entry.js} +1 -1
  501. package/dist/webcomponents/{p-b5d25332.entry.js → p-2971d38a.entry.js} +1 -1
  502. package/dist/webcomponents/{p-b063c12f.entry.js → p-2ac48875.entry.js} +1 -1
  503. package/dist/webcomponents/{p-609cf652.entry.js → p-2b1a919c.entry.js} +1 -1
  504. package/dist/webcomponents/{p-05b459f2.entry.js → p-2da57966.entry.js} +1 -1
  505. package/dist/webcomponents/{p-eb94199d.entry.js → p-2e81b0b3.entry.js} +1 -1
  506. package/dist/webcomponents/p-2eececed.entry.js +5 -0
  507. package/dist/webcomponents/{p-f99d8c9c.entry.js → p-2f904c4a.entry.js} +1 -1
  508. package/dist/webcomponents/p-32414f1c.entry.js +5 -0
  509. package/dist/webcomponents/{p-5a7c2031.entry.js → p-324afbce.entry.js} +1 -1
  510. package/dist/webcomponents/{p-a89b684d.entry.js → p-330ec8ab.entry.js} +1 -1
  511. package/dist/webcomponents/{p-37914e63.entry.js → p-374f83b1.entry.js} +1 -1
  512. package/dist/webcomponents/{p-d08b6266.entry.js → p-3926cc91.entry.js} +1 -1
  513. package/dist/webcomponents/{p-745213f7.entry.js → p-39a7826d.entry.js} +1 -1
  514. package/dist/webcomponents/{p-8aa6f07c.entry.js → p-3bcc2c58.entry.js} +1 -1
  515. package/dist/webcomponents/{p-67605757.entry.js → p-3c7ce0e4.entry.js} +1 -1
  516. package/dist/webcomponents/{p-473561f2.entry.js → p-467842ca.entry.js} +1 -1
  517. package/dist/webcomponents/p-53550e8c.entry.js +5 -0
  518. package/dist/webcomponents/p-53e71a8a.entry.js +5 -0
  519. package/dist/webcomponents/{p-198aa844.entry.js → p-5528b466.entry.js} +1 -1
  520. package/dist/webcomponents/{p-a32d17cb.entry.js → p-55e0822d.entry.js} +1 -1
  521. package/dist/webcomponents/{p-01801ac1.entry.js → p-58bacbe1.entry.js} +1 -1
  522. package/dist/webcomponents/{p-a46f068e.entry.js → p-621f0fa8.entry.js} +1 -1
  523. package/dist/webcomponents/{p-821341dc.entry.js → p-6514a75d.entry.js} +1 -1
  524. package/dist/webcomponents/{p-dc23cb2e.entry.js → p-678b43a6.entry.js} +1 -1
  525. package/dist/webcomponents/p-6b6be415.entry.js +5 -0
  526. package/dist/webcomponents/{p-ac68355e.entry.js → p-6d58ab4f.entry.js} +1 -1
  527. package/dist/webcomponents/{p-fdcb54a3.entry.js → p-6ff9b26e.entry.js} +1 -1
  528. package/dist/webcomponents/{p-e241caf3.entry.js → p-84dfbfdd.entry.js} +1 -1
  529. package/dist/webcomponents/{p-6f1a4fbe.entry.js → p-85c8d060.entry.js} +1 -1
  530. package/dist/webcomponents/{p-3b0dd0ff.entry.js → p-913d6f28.entry.js} +1 -1
  531. package/dist/webcomponents/{p-fed02286.entry.js → p-975ea5c7.entry.js} +1 -1
  532. package/dist/webcomponents/{p-15022ab7.entry.js → p-992167bc.entry.js} +1 -1
  533. package/dist/webcomponents/p-C_DC6oQW.js +16 -0
  534. package/dist/webcomponents/{p-fOJu6uZR.js → p-CpE_G6IZ.js} +1 -1
  535. package/dist/webcomponents/p-DnwERaeQ.js +5 -0
  536. package/dist/webcomponents/{p-1bb96641.entry.js → p-a21872bf.entry.js} +1 -1
  537. package/dist/webcomponents/{p-db309a11.entry.js → p-a9f16a65.entry.js} +1 -1
  538. package/dist/webcomponents/{p-7fda8b89.entry.js → p-bbcde1ea.entry.js} +1 -1
  539. package/dist/webcomponents/{p-42b60169.entry.js → p-bbf47e78.entry.js} +1 -1
  540. package/dist/webcomponents/{p-42c9c6c5.entry.js → p-bf35e506.entry.js} +1 -1
  541. package/dist/webcomponents/{p-9e0324a7.entry.js → p-c09af3cd.entry.js} +1 -1
  542. package/dist/webcomponents/{p-794b701b.entry.js → p-c29268b5.entry.js} +1 -1
  543. package/dist/webcomponents/{p-7352d459.entry.js → p-c3e61c39.entry.js} +1 -1
  544. package/dist/webcomponents/{p-fb76b1e0.entry.js → p-c6b2545a.entry.js} +1 -1
  545. package/dist/webcomponents/{p-b55425b7.entry.js → p-c6f2f17b.entry.js} +1 -1
  546. package/dist/webcomponents/{p-95f3c44a.entry.js → p-cae39e13.entry.js} +1 -1
  547. package/dist/webcomponents/{p-8116ee93.entry.js → p-cb1e08b1.entry.js} +1 -1
  548. package/dist/webcomponents/{p-dacb7e2c.entry.js → p-cb690a87.entry.js} +1 -1
  549. package/dist/webcomponents/{p-8ddf3ce3.entry.js → p-d0be7243.entry.js} +1 -1
  550. package/dist/webcomponents/{p-3658adcf.entry.js → p-d191c6e3.entry.js} +1 -1
  551. package/dist/webcomponents/{p-2c8595d3.entry.js → p-d205f3fd.entry.js} +1 -1
  552. package/dist/webcomponents/{p-4b01c60f.entry.js → p-d3bd2c40.entry.js} +1 -1
  553. package/dist/webcomponents/{p-af888d13.entry.js → p-dbeea64e.entry.js} +1 -1
  554. package/dist/webcomponents/{p-d6165aa0.entry.js → p-df475129.entry.js} +1 -1
  555. package/dist/webcomponents/{p-67774920.entry.js → p-e0ccf189.entry.js} +1 -1
  556. package/dist/webcomponents/p-e121429a.entry.js +5 -0
  557. package/dist/webcomponents/{p-96dbb585.entry.js → p-e4b968b5.entry.js} +1 -1
  558. package/dist/webcomponents/{p-67d62559.entry.js → p-e6c6f305.entry.js} +1 -1
  559. package/dist/webcomponents/{p-13babfc4.entry.js → p-e8291be2.entry.js} +1 -1
  560. package/dist/webcomponents/{p-614683d9.entry.js → p-eb5806c7.entry.js} +1 -1
  561. package/dist/webcomponents/{p-20477061.entry.js → p-ed3fa8ec.entry.js} +1 -1
  562. package/dist/webcomponents/{p-21feda62.entry.js → p-f9084f16.entry.js} +1 -1
  563. package/dist/webcomponents/{p-695dbeb0.entry.js → p-fad3aa61.entry.js} +1 -1
  564. package/dist/webcomponents/webcomponents.esm.js +1 -1
  565. package/package.json +1 -1
  566. package/dist/collection/pages/components/select/remote.js +0 -33
  567. package/dist/collection/pages/components/select/virtualized.js +0 -13
  568. package/dist/components/p-BcW8O6h2.js +0 -5
  569. package/dist/components/p-Bs7iRQTG.js +0 -5
  570. package/dist/components/p-D3usVJE2.js +0 -16
  571. package/dist/components/p-DUq7uT2-.js +0 -5
  572. package/dist/components/p-DuLHFTpa.js +0 -5
  573. package/dist/components/p-DusornQ0.js +0 -5
  574. package/dist/webcomponents/p-09817344.entry.js +0 -5
  575. package/dist/webcomponents/p-172d42c2.entry.js +0 -5
  576. package/dist/webcomponents/p-9815ab95.entry.js +0 -5
  577. package/dist/webcomponents/p-CJipT0in.js +0 -5
  578. package/dist/webcomponents/p-D3usVJE2.js +0 -16
  579. package/dist/webcomponents/p-b609b464.entry.js +0 -5
  580. package/dist/webcomponents/p-ce3d689c.entry.js +0 -5
  581. package/dist/webcomponents/p-e7107869.entry.js +0 -5
  582. package/dist/webcomponents/p-f8993ae4.entry.js +0 -5
  583. /package/dist/components/{p-5z6jgH1D.js → p-BNckUhK6.js} +0 -0
  584. /package/dist/webcomponents/{p-BIG-yees.js → p-Bt01zQ7-.js} +0 -0
@@ -4,26 +4,18 @@
4
4
  */
5
5
  import { Host, h } from "@stencil/core";
6
6
  import { reportInvalidPropValue } from "../../../shared/utils/prop-warning";
7
- import { resolveDensity, resolveIntegerPropValue, resolveNumberPropValue } from "../../../shared/utils/props";
7
+ import { resolveAllowedPropValue, resolveDensity, resolveIntegerPropValue, resolveNumberPropValue, } from "../../../shared/utils/props";
8
8
  import { createRafBatcher } from "../../../shared/utils/raf-batcher";
9
9
  import { filterSelectOptions, SELECT_ALL_OPTION_VALUE } from "../select.utils";
10
10
  /**
11
- * Subcomponente de lista virtualizada de opções, projetado para renderizar o conjunto de escolhas do `br-select`.
11
+ * Painel suspenso com lista virtualizada do `br-select`.
12
12
  *
13
- * ### Papel na composição
14
- * - Atua como o painel suspenso (popup `listbox`) que exibe os itens `br-select-option`.
15
- * - Implementa virtualização de itens para oferecer alta performance mesmo em listas extensas com centenas ou milhares de opções.
16
- * - Mantém o posicionamento flutuante e controla a rolagem de visualização do item ativo em navegação por teclado.
17
- *
18
- * ### Regra de uso e relacionamento
19
- * Gerenciado exclusivamente pelo componente pai `br-select`, que injeta a coleção normalizada em `options`, controla o estado de exibição (aberto/fechado), a seleção múltipla e o índice ativo. A prop `options` desta lista é um contrato interno de composição e não substitui a API de opções do `br-select`. A lista cria internamente elementos `br-select-option` para a janela virtualizada, em vez de exibir diretamente os filhos declarados no slot do pai. Não utilize `br-select-list` como controle autônomo de formulário, pois ele não possui associação nativa com formulários (`formAssociated`) nem campo de acionamento próprio.
20
- *
21
- * Para a documentação completa de design, consulte o [Design System do GovBR](https://www.gov.br/ds/components/select?tab=designer).
13
+ * É gerenciado internamente pelo `br-select` para exibir as opções com alta performance, mesmo em listas grandes. Não é necessário utilizá-lo de forma avulsa.
22
14
  *
23
15
  * @category Formulários, Seleção
24
16
  * @status stable
25
17
  * @part list - Contêiner visual da lista virtualizada.
26
- * @slot loading - Indicador exibido enquanto resultados remotos são carregados.
18
+ * @slot loading - Indicador exibido enquanto resultados remotos são carregados. Padrão: spinner com o texto "Pesquisando…".
27
19
  * @part loading - Área do indicador de carregamento.
28
20
  * @part option-group - Cabeçalho visual de um grupo de opções.
29
21
  */
@@ -54,6 +46,14 @@ export class SelectList {
54
46
  * @default ''
55
47
  */
56
48
  this.searchTerm = '';
49
+ /**
50
+ * Define se `searchTerm` filtra as opções (`local`) ou se as opções já chegam
51
+ * filtradas pelo servidor (`remote`). Nos dois modos, um termo sem resultados
52
+ * exibe a mensagem de lista vazia. Valores inválidos usam `local`.
53
+ *
54
+ * @default 'local'
55
+ */
56
+ this.searchMode = 'local';
57
57
  /** Indica que os resultados remotos estão sendo carregados.
58
58
  * @default false
59
59
  */
@@ -155,6 +155,9 @@ export class SelectList {
155
155
  option.selected = selected;
156
156
  });
157
157
  }
158
+ get effectiveSearchMode() {
159
+ return resolveAllowedPropValue(this.el, 'searchMode', this.searchMode, ['local', 'remote'], 'local');
160
+ }
158
161
  get effectiveVisibleItems() {
159
162
  return resolveIntegerPropValue(this.el, 'visibleItems', this.visibleItems, 1, Number.MAX_SAFE_INTEGER, 6);
160
163
  }
@@ -559,7 +562,8 @@ export class SelectList {
559
562
  .trim();
560
563
  }
561
564
  getFilteredOptions() {
562
- const normalizedTerm = this.normalizeSearchText(this.searchTerm);
565
+ // No modo remoto o servidor já filtrou: o termo serve só para o estado vazio.
566
+ const normalizedTerm = this.effectiveSearchMode === 'local' ? this.normalizeSearchText(this.searchTerm) : '';
563
567
  const cacheKey = `${normalizedTerm}|${this.effectiveMultiple}|${this.selectAllLabel}|${this.unselectAllLabel}|${this.options.length}`;
564
568
  if (this.options === this.filteredOptionsCacheSource &&
565
569
  cacheKey === this.filteredOptionsCacheKey &&
@@ -801,6 +805,9 @@ export class SelectList {
801
805
  } }, row.group));
802
806
  }
803
807
  getVirtualScrollStyle() {
808
+ // Durante o carregamento não há linhas virtuais: a altura acompanha o indicador.
809
+ if (this.loading)
810
+ return { overflowY: 'auto', overflowX: 'hidden' };
804
811
  return {
805
812
  height: `${this.getViewportHeight()}px`,
806
813
  overflowY: 'auto',
@@ -859,10 +866,10 @@ export class SelectList {
859
866
  return h("div", { style: this.getVirtualSpacerStyle() }, renderedRows);
860
867
  }
861
868
  renderLoading() {
862
- return (h("div", { part: "loading", role: "status", "aria-live": "polite" }, h("slot", { name: "loading" }, h("br-loading", { density: this.effectiveDensity, label: "Buscando op\u00E7\u00F5es" }))));
869
+ return (h("div", { part: "loading", role: "status", "aria-live": "polite" }, h("slot", { name: "loading" }, h("br-loading", { size: "small", label: "Pesquisando\u2026", labelPosition: "right" }))));
863
870
  }
864
871
  render() {
865
- return (h(Host, { key: 'c4ea2157dc925805d0542eae1a70b67375fcb12c' }, h("div", { key: 'e55d780af8ef05765173998e781f2cf0a4125988', class: this.getCssClassMap(), part: "list", tabIndex: -1, ref: (el) => (this.listElement = el), onScroll: this.handleScroll, style: this.getVirtualScrollStyle() }, this.loading ? this.renderLoading() : this.renderVirtualOptions())));
872
+ return (h(Host, { key: 'b374cf9ebd19771a1a1dfecc4a33f6447b59fba6' }, h("div", { key: '665a2c3efef778936ca27d376c48de3cbf38f685', class: this.getCssClassMap(), part: "list", tabIndex: -1, ref: (el) => (this.listElement = el), onScroll: this.handleScroll, style: this.getVirtualScrollStyle() }, this.loading ? this.renderLoading() : this.renderVirtualOptions())));
866
873
  }
867
874
  static get is() { return "br-select-list"; }
868
875
  static get encapsulation() { return "shadow"; }
@@ -962,6 +969,36 @@ export class SelectList {
962
969
  "attribute": "search-term",
963
970
  "defaultValue": "''"
964
971
  },
972
+ "searchMode": {
973
+ "type": "string",
974
+ "mutable": false,
975
+ "complexType": {
976
+ "original": "SelectSearchMode",
977
+ "resolved": "\"local\" | \"remote\"",
978
+ "references": {
979
+ "SelectSearchMode": {
980
+ "location": "import",
981
+ "path": "../select.types",
982
+ "id": "src/components/select/select.types.ts::SelectSearchMode",
983
+ "referenceLocation": "SelectSearchMode"
984
+ }
985
+ }
986
+ },
987
+ "required": false,
988
+ "optional": false,
989
+ "docs": {
990
+ "tags": [{
991
+ "name": "default",
992
+ "text": "'local'"
993
+ }],
994
+ "text": "Define se `searchTerm` filtra as op\u00E7\u00F5es (`local`) ou se as op\u00E7\u00F5es j\u00E1 chegam\nfiltradas pelo servidor (`remote`). Nos dois modos, um termo sem resultados\nexibe a mensagem de lista vazia. Valores inv\u00E1lidos usam `local`."
995
+ },
996
+ "getter": false,
997
+ "setter": false,
998
+ "reflect": false,
999
+ "attribute": "search-mode",
1000
+ "defaultValue": "'local'"
1001
+ },
965
1002
  "loading": {
966
1003
  "type": "boolean",
967
1004
  "mutable": false,
@@ -7,18 +7,13 @@ import { findComposedOwner } from "../../../shared/utils/ownership";
7
7
  import { resolveDensity } from "../../../shared/utils/props";
8
8
  import { EMPTY_VALUE_WARNING, MISSING_VALUE_WARNING } from "../select.constants";
9
9
  /**
10
- * Subcomponente que representa uma opção individual dentro de um `br-select`.
10
+ * Representa uma opção dentro do `br-select`. Use no slot padrão do componente.
11
11
  *
12
- * ### Papel na composição
13
- * - Define o valor de submissão (`value`) e o rótulo legível exibido para o usuário.
14
- * - Identifica opcionalmente o grupo visual e semântico ao qual a opção pertence.
15
- * - Exibe os estados de seleção (`selected`), desativação (`disabled`) e, no modo de seleção múltipla, o checkbox correspondente.
16
- * - Suporta marcação com destaque textual correspondente aos filtros de busca aplicados.
12
+ * Defina `value` para o valor de formulário e `label` para o texto exibido. Use `selected` para marcar a opção como selecionada inicialmente e `disabled` para desabilitá-la. Para agrupamento, utilize `group`.
17
13
  *
18
- * ### Regra de uso e relacionamento
19
- * Deve ser declarado no slot padrão do `br-select` (ou projetado pela lista). É a forma declarativa canônica de fornecer opções em código novo, inclusive quando um framework repete o elemento a partir de uma coleção. O `br-select` lê seus atributos e conteúdo, transforma-os em dados e entrega uma janela virtualizada à lista; portanto, o elemento declarado no slot é a fonte declarativa, não o item visual final da lista. Evite misturá-lo com a prop legada `options` ou com `setOptions()` sem necessidade, pois a coleção imperativa passa a ter precedência depois de ser utilizada. O item comunica suas mudanças de estado ao `br-select` pai, que por sua vez atualiza o valor geral do formulário e o resumo no campo de entrada. O `br-select-option` não deve ser utilizado fora do contexto de seleção.
20
- *
21
- * Para a documentação completa de design, consulte o [Design System do GovBR](https://www.gov.br/ds/components/select?tab=designer).
14
+ * ```html
15
+ * <br-select-option value="df" label="Distrito Federal"></br-select-option>
16
+ * ```
22
17
  *
23
18
  * @category Formulários, Seleção
24
19
  * @status stable
@@ -106,7 +101,7 @@ export class SelectOption {
106
101
  handleSelectedChange() {
107
102
  this.brSelectOptionPropsChange.emit();
108
103
  // Alterações programáticas de `selected` seguem o mesmo protocolo de
109
- // interação e permitem que o select pai atualize seu modelo canônico.
104
+ // interação e permitem que o select pai atualize seu modelo principal.
110
105
  this.emitStateChange();
111
106
  }
112
107
  /**
@@ -249,7 +244,7 @@ export class SelectOption {
249
244
  return this.normalizeText(this.el.textContent || '');
250
245
  }
251
246
  render() {
252
- return (h(Host, { key: '62d927d3fc103d76f2c030c931ac1e1802f5c468', part: this.el.getAttribute('part') || 'option', exportparts: "checkbox:checkbox, checkbox:option-checkbox", "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.getAccessibleLabel(), "aria-selected": this.selected ? 'true' : 'false', role: "option", tabindex: "-1", onClickCapture: this.handleActivation, onKeyDown: this.handleKeyDown, onMouseEnter: () => {
247
+ return (h(Host, { key: 'e892cbbfcfeb38db24a7d3dab9615bb5460a7eb2', part: this.el.getAttribute('part') || 'option', exportparts: "checkbox:checkbox, checkbox:option-checkbox", "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.getAccessibleLabel(), "aria-selected": this.selected ? 'true' : 'false', role: "option", tabindex: "-1", onClickCapture: this.handleActivation, onKeyDown: this.handleKeyDown, onMouseEnter: () => {
253
248
  this.el.dispatchEvent(new CustomEvent('brInternalSelectOptionHover', {
254
249
  bubbles: true,
255
250
  composed: true,
@@ -261,7 +256,7 @@ export class SelectOption {
261
256
  composed: true,
262
257
  detail: { label: this.getResolvedLabel(), value: this.getResolvedValue() },
263
258
  }));
264
- } }, h("br-item", { key: '1c46f284774a8db5e8b805a75cfde08709ae1da9', class: this.getCssClassMap(), density: this.effectiveDensity, disabled: this.disabled, selected: this.selected }, this.showCheckbox && (h("br-checkbox", { key: 'a7164ca2d9f75dff3dde0d882591dd6eb1436a3e', exportparts: "input:checkbox, input:option-checkbox", slot: "start", checked: this.selected, disabled: true, indeterminate: this.indeterminate, name: this.getResolvedValue(), "aria-hidden": "true" })), h("span", { key: '35e6dae591af64c5e077ba5e9c5817a287644093', class: "br-select-option-label" }, h("slot", { key: 'deabf1daf900d9aca934a2c00f5809e2e9862729' }, this.getResolvedLabel())))));
259
+ } }, h("br-item", { key: 'ce4ae4c45dbb4083c4544229f7fd08040d1cb0fc', class: this.getCssClassMap(), density: this.effectiveDensity, disabled: this.disabled, selected: this.selected }, this.showCheckbox && (h("br-checkbox", { key: '8d6e3da863b1ccd0a2f2f5dd41fda196fe6d83b6', exportparts: "input:checkbox, input:option-checkbox", slot: "start", checked: this.selected, disabled: true, indeterminate: this.indeterminate, name: this.getResolvedValue(), "aria-hidden": "true" })), h("span", { key: 'a0445a17529219be933e91d79b489560390f9e30', class: "br-select-option-label" }, h("slot", { key: '6885bf29055abc27c4c0a1cba5e8bd2e7d4abb2a' }, this.getResolvedLabel())))));
265
260
  }
266
261
  static get is() { return "br-select-option"; }
267
262
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- *,*::before,*::after{box-sizing:border-box}:host{line-height:var(--font-line-height-medium);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}main{display:block}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace;font-size:1em}a{background-color:rgba(0,0,0,0)}b,strong{font-weight:bolder}small{font-size:80%}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:var(--font-line-height-medium);margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{appearance:none}::-webkit-file-upload-button{appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.d-none{display:none !important}@media(min-width: 576px){.d-sm-block{display:block !important}.d-sm-flex{display:flex !important}}[data-toggle=dropdown]+*{position:absolute}.dropdown{position:relative}.dropdown [data-toggle=dropdown]+*{box-shadow:var(--surface-shadow-sm);left:0;position:absolute;top:100%}.dropdown>.br-notification{left:auto;right:0}.dropdown .br-item{--color: var(--color-light);--color-rgb: var(--color-light-rgb);--text-color: var(--color-light);--interactive: var(--interactive-light);--interactive-rgb: var(--color-rgb);--visited: var(--visited-light);--hover: var(--hover-light);--pressed: var(--pressed-light);--focus-color: var(--focus-color-light);--focus: var(--focus-color-light);--item-padding-y: var(--spacing-scale-2x);background-color:var(--background-light);color:var(--color)}.dropdown .br-item:not(:last-child){border-bottom:1px solid var(--border-color)}.dropdown .br-item.selected{--color: var(--color-dark);--color-rgb: var(--color-dark-rgb);--text-color: var(--color-dark);--interactive: var(--interactive-dark);--interactive-rgb: var(--interactive-dark-rgb);--visited: var(--visited-dark);--hover: var(--hover-dark);--pressed: var(--pressed-dark);--focus-color: var(--focus-color-dark);--focus: var(--focus-color-dark)}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.align-items-center{align-items:center !important}.col,[class*=col-]{padding-left:calc(var(--grid-gutter)*.5);padding-right:calc(var(--grid-gutter)*.5);width:100%}.col{flex:1 0 0%;min-width:8.3333333333%}.col-auto{flex:0 0 auto;width:auto}.col-2{flex-basis:16.6666666667%;max-width:16.6666666667%}.container,.container-fluid,.container-lg{--grid-margin: var(--grid-portrait-margin);--grid-maxwidth: var(--grid-portrait-maxwidth);margin-left:auto;margin-right:auto;max-width:var(--grid-maxwidth);padding-left:var(--grid-margin);padding-right:var(--grid-margin);width:100%}.row{--grid-gutter: var(--grid-portrait-gutter);display:flex;flex-wrap:wrap;margin-left:calc(var(--grid-gutter)*-0.5);margin-right:calc(var(--grid-gutter)*-0.5)}@media(min-width: 576px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tablet-margin)}.row{--grid-gutter: var(--grid-tablet-gutter)}.container{--grid-maxwidth: calc(var(--grid-breakpoint-sm) - var(--grid-tablet-margin))}.col-sm-4{flex-basis:33.3333333333%;max-width:33.3333333333%}}@media(min-width: 992px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tablet-margin)}.row{--grid-gutter: var(--grid-tablet-gutter)}.container{--grid-maxwidth: calc(var(--grid-breakpoint-md) - var(--grid-tablet-margin))}}@media(min-width: 1280px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-desktop-margin)}.row{--grid-gutter: var(--grid-desktop-gutter)}.container,.container-lg{--grid-maxwidth: calc(var(--grid-breakpoint-lg) - var(--grid-desktop-margin))}.col-lg-3{flex-basis:25%;max-width:25%}}@media(min-width: 1600px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tv-margin)}.row{--grid-gutter: var(--grid-tv-gutter)}.container,.container-lg{--grid-maxwidth: calc(var(--grid-breakpoint-xl) - var(--grid-tv-margin))}}.ease{animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1)}.ease-out{animation-timing-function:cubic-bezier(0, 0, 0.58, 1)}.ease-in-out{animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1)}.fast{animation-duration:var(--duration-fast)}.slow{animation-duration:var(--duration-slow)}.mt-1{margin-top:var(--spacing-scale-half) !important}.mr-1{margin-right:var(--spacing-scale-half) !important}.mb-1{margin-bottom:var(--spacing-scale-half) !important}.ml-1{margin-left:var(--spacing-scale-half) !important}.mx-3{margin-left:var(--spacing-scale-2x) !important;margin-right:var(--spacing-scale-2x) !important}.mb-4{margin-bottom:var(--spacing-scale-3x) !important}.ml-auto{margin-left:auto !important}.pt-half{padding-top:var(--spacing-scale-half) !important}@media(min-width: 576px){.ml-sm-0{margin-left:var(--spacing-scale-default) !important}}.highlight{background:var(--status-highlight-background) linear-gradient(var(--status-highlight-overlay), var(--status-highlight-overlay));color:var(--status-highlight-text);padding:0 var(--spacing-scale-half)}[disabled],.disabled{cursor:not-allowed;opacity:var(--disabled)}[disabled] *,.disabled *{pointer-events:none}fieldset[disabled]{opacity:1}.text-center{text-align:center !important}.text-right{text-align:right !important}.text-nowrap{white-space:nowrap !important}.text-uppercase{text-transform:uppercase !important}.text-bold{font-weight:700 !important}.text-base{font-size:var(--font-size-scale-base) !important}.text-down-01{font-size:var(--font-size-scale-down-01) !important}@media(min-width: 576px){.text-sm-center{text-align:center !important}.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}}p{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-2x);margin-top:0}p a{text-decoration:underline}@media(min-width: 576px){p{font-size:var(--font-size-scale-up-01)}}a{--focus-offset: var(--spacing-scale-half)}a:focus{outline:none}a.focus-visible,a:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}a:not(:disabled):hover{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}a:not(:disabled):active{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}a{color:var(--interactive);text-decoration:none}.main-content a{text-decoration:underline}button{cursor:pointer}img{max-width:100%;vertical-align:middle}h2,.h2{color:var(--color);font-size:var(--font-size-scale-up-03);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2xh);margin-top:var(--spacing-scale-3xh);padding-bottom:var(--spacing-scale-2xh)}@media(min-width: 576px){.h2,h2{font-size:var(--font-size-scale-up-05);font-weight:var(--font-weight-regular)}}ul,ol{margin-bottom:var(--spacing-scale-2x);margin-top:0;padding:0 0 0 var(--spacing-scale-5x)}table{--table-background: var(--background);--table-color: var(--color);--table-border-color: var(--gray-20);--table-border-style: solid;--table-border-width: 1px;--table-hover: var(--color-rgb);--table-padding: var(--spacing-scale-3x);--table-font-weight: var(--font-weight-medium);--table-th-background: var(--background-alternative);--table-th-font-weight: var(--font-weight-semi-bold);--table-row-size: var(--spacing-scale-2x);border-collapse:collapse;width:100%}tr.selected,tr.is-selected{--color: var(--color-dark);--color-rgb: var(--color-dark-rgb);--text-color: var(--color-dark);--interactive: var(--interactive-dark);--interactive-rgb: var(--interactive-dark-rgb);--visited: var(--visited-dark);--hover: var(--hover-dark);--pressed: var(--pressed-dark);--focus-color: var(--focus-color-dark);--focus: var(--focus-color-dark)}label,.label{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half)}fieldset,.fieldset{border:var(--surface-width-none);margin-bottom:var(--spacing-scale-5x);margin-top:0;padding:0}legend,.legend{color:var(--color);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2x);margin-top:var(--spacing-scale-2x)}::placeholder,.placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}input,textarea,.input{color:var(--color-light);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-half)}pre,.pre{background:var(--gray-5);margin:var(--spacing-scale-2x) 0 var(--spacing-scale-4x);padding:var(--spacing-scale-2x)}*[data-toggle=collapse]:not(:disabled):hover{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}*[data-toggle=collapse]:focus{outline:none}*[data-toggle=collapse].focus-visible,*[data-toggle=collapse]:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}@media(prefers-reduced-motion: reduce){:host,:host::before,:host::after,:host *,:host *::before,:host *::after{animation:none !important;scroll-behavior:auto !important;transition:none !important}}:host-context([data-wbc-reduced-motion=true])::before,:host-context([data-wbc-reduced-motion=true])::after,:host-context([data-wbc-reduced-motion=true]) *,:host-context([data-wbc-reduced-motion=true]) *::before,:host-context([data-wbc-reduced-motion=true]) *::after{animation:none !important;scroll-behavior:auto !important;transition:none !important}.br-select{--select-divider: 1px solid var(--color-secondary-04);--select-shadow: var(--surface-shadow-md)}.br-select .br-input input{padding-right:29px;text-overflow:ellipsis}.br-select .br-input input::after{bottom:0;padding:0 5px;position:absolute;right:0}.br-select{max-width:400px;min-width:100px;position:relative}.br-select .br-list{background:var(--bg-color);box-shadow:var(--select-shadow);display:none;margin-top:-2px;max-height:404px;overflow:auto;position:absolute;resize:none;width:100%;z-index:1}.br-select .br-list::-webkit-scrollbar{height:var(--spacing-scale-base);width:var(--spacing-scale-base)}.br-select .br-list::-webkit-scrollbar-track{background:var(--gray-10)}.br-select .br-list::-webkit-scrollbar-thumb{background:var(--gray-30)}.br-select .br-list:hover::-webkit-scrollbar-thumb{background:var(--gray-40)}.br-select .br-list:focus,.br-select .br-list:active{color:var(--color-secondary-09);outline:none}.br-select .br-list:hover::-webkit-scrollbar-thumb{background:var(--color-secondary-07)}.br-select .br-list[expanded]{display:block}.br-select .br-item{--color: var(--color-light);--color-rgb: var(--color-light-rgb);--text-color: var(--color-light);--interactive: var(--interactive-light);--interactive-rgb: var(--interactive-light-rgb);--visited: var(--visited-light);--hover: var(--hover-light);--pressed: var(--pressed-light);--focus-color: var(--focus-color-light);--focus: var(--focus-color-light);--item-padding-y: var(--spacing-scale-2x)}.br-select .br-item .content{padding:0}.br-select .br-item .br-checkbox,.br-select .br-item .br-radio{--item-padding-x: var(--spacing-scale-2x);--item-padding-y: var(--spacing-scale-2x)}.br-select .br-item .br-checkbox input:hover:not(:disabled)+label::before,.br-select .br-item .br-radio input:hover:not(:disabled)+label::before{background-image:none}.br-select .br-item .br-checkbox input+label,.br-select .br-item .br-radio input+label{padding-left:calc(var(--checkbox-padding) + var(--checkbox-size) + var(--item-padding-x))}.br-select .br-item .br-radio input+label{color:var(--text-color);display:block;height:auto;min-height:0;padding:var(--item-padding)}.br-select .br-item .br-radio input+label::before,.br-select .br-item .br-radio input+label::after{content:none}.br-select .br-item:not(:last-child){border-bottom:var(--select-divider)}.br-select .br-item:not([disabled]){--focus-offset: calc(var(--spacing-scale-half) * -1)}.br-select .br-item:not([disabled]):focus{outline:none}.br-select .br-item:not([disabled]).focus-visible,.br-select .br-item:not([disabled]):focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}.br-select .br-item:not([disabled]):not(:disabled):hover{background-image:linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)))}.br-select .br-item.selected,.br-select .br-item[selected]{--color: var(--color-dark);--color-rgb: var(--color-dark-rgb);--text-color: var(--color-dark);--interactive: var(--interactive-dark);--interactive-rgb: var(--interactive-dark-rgb);--visited: var(--visited-dark);--hover: var(--hover-dark);--pressed: var(--pressed-dark);--focus-color: var(--focus-color-dark);--focus: var(--focus-color-dark)}.br-select .br-item.selected:focus,.br-select .br-item[selected]:focus{outline:none}.br-select .br-item.selected.focus-visible,.br-select .br-item.selected:focus-visible,.br-select .br-item[selected].focus-visible,.br-select .br-item[selected]:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}.br-select .br-item.selected:not(:disabled):hover,.br-select .br-item[selected]:not(:disabled):hover{background-image:linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)))}.br-select .br-item.disabled{line-height:calc(var(--font-line-height-high)*2);padding-left:calc(var(--item-padding) + var(--spacing-scale-base))}.br-select.inverted .br-input,.br-select.inverted .br-input label,.br-select.dark-mode .br-input,.br-select.dark-mode .br-input label{--color: var(--color-dark);--focus-color: var(--focus-color-dark)}:host{box-sizing:border-box;display:block;max-width:100%;width:100%}.br-select{box-sizing:border-box;min-width:0;position:relative;width:100%;max-width:100%}:host([multiple]) .br-select{min-width:0}
1
+ *,*::before,*::after{box-sizing:border-box}:host{line-height:var(--font-line-height-medium);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}main{display:block}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace;font-size:1em}a{background-color:rgba(0,0,0,0)}b,strong{font-weight:bolder}small{font-size:80%}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:var(--font-line-height-medium);margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{appearance:none}::-webkit-file-upload-button{appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.d-none{display:none !important}@media(min-width: 576px){.d-sm-block{display:block !important}.d-sm-flex{display:flex !important}}[data-toggle=dropdown]+*{position:absolute}.dropdown{position:relative}.dropdown [data-toggle=dropdown]+*{box-shadow:var(--surface-shadow-sm);left:0;position:absolute;top:100%}.dropdown>.br-notification{left:auto;right:0}.dropdown .br-item{--color: var(--color-light);--color-rgb: var(--color-light-rgb);--text-color: var(--color-light);--interactive: var(--interactive-light);--interactive-rgb: var(--color-rgb);--visited: var(--visited-light);--hover: var(--hover-light);--pressed: var(--pressed-light);--focus-color: var(--focus-color-light);--focus: var(--focus-color-light);--item-padding-y: var(--spacing-scale-2x);background-color:var(--background-light);color:var(--color)}.dropdown .br-item:not(:last-child){border-bottom:1px solid var(--border-color)}.dropdown .br-item.selected{--color: var(--color-dark);--color-rgb: var(--color-dark-rgb);--text-color: var(--color-dark);--interactive: var(--interactive-dark);--interactive-rgb: var(--interactive-dark-rgb);--visited: var(--visited-dark);--hover: var(--hover-dark);--pressed: var(--pressed-dark);--focus-color: var(--focus-color-dark);--focus: var(--focus-color-dark)}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.align-items-center{align-items:center !important}.col,[class*=col-]{padding-left:calc(var(--grid-gutter)*.5);padding-right:calc(var(--grid-gutter)*.5);width:100%}.col{flex:1 0 0%;min-width:8.3333333333%}.col-auto{flex:0 0 auto;width:auto}.col-2{flex-basis:16.6666666667%;max-width:16.6666666667%}.container,.container-fluid,.container-lg{--grid-margin: var(--grid-portrait-margin);--grid-maxwidth: var(--grid-portrait-maxwidth);margin-left:auto;margin-right:auto;max-width:var(--grid-maxwidth);padding-left:var(--grid-margin);padding-right:var(--grid-margin);width:100%}.row{--grid-gutter: var(--grid-portrait-gutter);display:flex;flex-wrap:wrap;margin-left:calc(var(--grid-gutter)*-0.5);margin-right:calc(var(--grid-gutter)*-0.5)}@media(min-width: 576px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tablet-margin)}.row{--grid-gutter: var(--grid-tablet-gutter)}.container{--grid-maxwidth: calc(var(--grid-breakpoint-sm) - var(--grid-tablet-margin))}.col-sm-4{flex-basis:33.3333333333%;max-width:33.3333333333%}}@media(min-width: 992px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tablet-margin)}.row{--grid-gutter: var(--grid-tablet-gutter)}.container{--grid-maxwidth: calc(var(--grid-breakpoint-md) - var(--grid-tablet-margin))}}@media(min-width: 1280px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-desktop-margin)}.row{--grid-gutter: var(--grid-desktop-gutter)}.container,.container-lg{--grid-maxwidth: calc(var(--grid-breakpoint-lg) - var(--grid-desktop-margin))}.col-lg-3{flex-basis:25%;max-width:25%}}@media(min-width: 1600px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tv-margin)}.row{--grid-gutter: var(--grid-tv-gutter)}.container,.container-lg{--grid-maxwidth: calc(var(--grid-breakpoint-xl) - var(--grid-tv-margin))}}.ease{animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1)}.ease-out{animation-timing-function:cubic-bezier(0, 0, 0.58, 1)}.ease-in-out{animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1)}.fast{animation-duration:var(--duration-fast)}.slow{animation-duration:var(--duration-slow)}.mt-1{margin-top:var(--spacing-scale-half) !important}.mr-1{margin-right:var(--spacing-scale-half) !important}.mb-1{margin-bottom:var(--spacing-scale-half) !important}.ml-1{margin-left:var(--spacing-scale-half) !important}.mx-3{margin-left:var(--spacing-scale-2x) !important;margin-right:var(--spacing-scale-2x) !important}.mb-4{margin-bottom:var(--spacing-scale-3x) !important}.ml-auto{margin-left:auto !important}.pt-half{padding-top:var(--spacing-scale-half) !important}@media(min-width: 576px){.ml-sm-0{margin-left:var(--spacing-scale-default) !important}}.highlight{background:var(--status-highlight-background) linear-gradient(var(--status-highlight-overlay), var(--status-highlight-overlay));color:var(--status-highlight-text);padding:0 var(--spacing-scale-half)}[disabled],.disabled{cursor:not-allowed;opacity:var(--disabled)}[disabled] *,.disabled *{pointer-events:none}fieldset[disabled]{opacity:1}.text-center{text-align:center !important}.text-right{text-align:right !important}.text-nowrap{white-space:nowrap !important}.text-uppercase{text-transform:uppercase !important}.text-bold{font-weight:700 !important}.text-base{font-size:var(--font-size-scale-base) !important}.text-down-01{font-size:var(--font-size-scale-down-01) !important}@media(min-width: 576px){.text-sm-center{text-align:center !important}.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}}p{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-2x);margin-top:0}p a{text-decoration:underline}@media(min-width: 576px){p{font-size:var(--font-size-scale-up-01)}}a{--focus-offset: var(--spacing-scale-half)}a:focus{outline:none}a.focus-visible,a:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}a:not(:disabled):hover{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}a:not(:disabled):active{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}a{color:var(--interactive);text-decoration:none}.main-content a{text-decoration:underline}button{cursor:pointer}img{max-width:100%;vertical-align:middle}h2,.h2{color:var(--color);font-size:var(--font-size-scale-up-03);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2xh);margin-top:var(--spacing-scale-3xh);padding-bottom:var(--spacing-scale-2xh)}@media(min-width: 576px){.h2,h2{font-size:var(--font-size-scale-up-05);font-weight:var(--font-weight-regular)}}ul,ol{margin-bottom:var(--spacing-scale-2x);margin-top:0;padding:0 0 0 var(--spacing-scale-5x)}table{--table-background: var(--background);--table-color: var(--color);--table-border-color: var(--gray-20);--table-border-style: solid;--table-border-width: 1px;--table-hover: var(--color-rgb);--table-padding: var(--spacing-scale-3x);--table-font-weight: var(--font-weight-medium);--table-th-background: var(--background-alternative);--table-th-font-weight: var(--font-weight-semi-bold);--table-row-size: var(--spacing-scale-2x);border-collapse:collapse;width:100%}tr.selected,tr.is-selected{--color: var(--color-dark);--color-rgb: var(--color-dark-rgb);--text-color: var(--color-dark);--interactive: var(--interactive-dark);--interactive-rgb: var(--interactive-dark-rgb);--visited: var(--visited-dark);--hover: var(--hover-dark);--pressed: var(--pressed-dark);--focus-color: var(--focus-color-dark);--focus: var(--focus-color-dark)}label,.label{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half)}fieldset,.fieldset{border:var(--surface-width-none);margin-bottom:var(--spacing-scale-5x);margin-top:0;padding:0}legend,.legend{color:var(--color);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2x);margin-top:var(--spacing-scale-2x)}::placeholder,.placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}input,textarea,.input{color:var(--color-light);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-half)}pre,.pre{background:var(--gray-5);margin:var(--spacing-scale-2x) 0 var(--spacing-scale-4x);padding:var(--spacing-scale-2x)}*[data-toggle=collapse]:not(:disabled):hover{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}*[data-toggle=collapse]:focus{outline:none}*[data-toggle=collapse].focus-visible,*[data-toggle=collapse]:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}@media(prefers-reduced-motion: reduce){:host,:host::before,:host::after,:host *,:host *::before,:host *::after{animation:none !important;scroll-behavior:auto !important;transition:none !important}}:host-context([data-wbc-reduced-motion=true])::before,:host-context([data-wbc-reduced-motion=true])::after,:host-context([data-wbc-reduced-motion=true]) *,:host-context([data-wbc-reduced-motion=true]) *::before,:host-context([data-wbc-reduced-motion=true]) *::after{animation:none !important;scroll-behavior:auto !important;transition:none !important}.br-select{--select-divider: 1px solid var(--color-secondary-04);--select-shadow: var(--surface-shadow-md)}.br-select .br-input input{padding-right:29px;text-overflow:ellipsis}.br-select .br-input input::after{bottom:0;padding:0 5px;position:absolute;right:0}.br-select{max-width:400px;min-width:100px;position:relative}.br-select .br-list{background:var(--bg-color);box-shadow:var(--select-shadow);display:none;margin-top:-2px;max-height:404px;overflow:auto;position:absolute;resize:none;width:100%;z-index:1}.br-select .br-list::-webkit-scrollbar{height:var(--spacing-scale-base);width:var(--spacing-scale-base)}.br-select .br-list::-webkit-scrollbar-track{background:var(--gray-10)}.br-select .br-list::-webkit-scrollbar-thumb{background:var(--gray-30)}.br-select .br-list:hover::-webkit-scrollbar-thumb{background:var(--gray-40)}.br-select .br-list:focus,.br-select .br-list:active{color:var(--color-secondary-09);outline:none}.br-select .br-list:hover::-webkit-scrollbar-thumb{background:var(--color-secondary-07)}.br-select .br-list[expanded]{display:block}.br-select .br-item{--color: var(--color-light);--color-rgb: var(--color-light-rgb);--text-color: var(--color-light);--interactive: var(--interactive-light);--interactive-rgb: var(--interactive-light-rgb);--visited: var(--visited-light);--hover: var(--hover-light);--pressed: var(--pressed-light);--focus-color: var(--focus-color-light);--focus: var(--focus-color-light);--item-padding-y: var(--spacing-scale-2x)}.br-select .br-item .content{padding:0}.br-select .br-item .br-checkbox,.br-select .br-item .br-radio{--item-padding-x: var(--spacing-scale-2x);--item-padding-y: var(--spacing-scale-2x)}.br-select .br-item .br-checkbox input:hover:not(:disabled)+label::before,.br-select .br-item .br-radio input:hover:not(:disabled)+label::before{background-image:none}.br-select .br-item .br-checkbox input+label,.br-select .br-item .br-radio input+label{padding-left:calc(var(--checkbox-padding) + var(--checkbox-size) + var(--item-padding-x))}.br-select .br-item .br-radio input+label{color:var(--text-color);display:block;height:auto;min-height:0;padding:var(--item-padding)}.br-select .br-item .br-radio input+label::before,.br-select .br-item .br-radio input+label::after{content:none}.br-select .br-item:not(:last-child){border-bottom:var(--select-divider)}.br-select .br-item:not([disabled]){--focus-offset: calc(var(--spacing-scale-half) * -1)}.br-select .br-item:not([disabled]):focus{outline:none}.br-select .br-item:not([disabled]).focus-visible,.br-select .br-item:not([disabled]):focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}.br-select .br-item:not([disabled]):not(:disabled):hover{background-image:linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)))}.br-select .br-item.selected,.br-select .br-item[selected]{--color: var(--color-dark);--color-rgb: var(--color-dark-rgb);--text-color: var(--color-dark);--interactive: var(--interactive-dark);--interactive-rgb: var(--interactive-dark-rgb);--visited: var(--visited-dark);--hover: var(--hover-dark);--pressed: var(--pressed-dark);--focus-color: var(--focus-color-dark);--focus: var(--focus-color-dark)}.br-select .br-item.selected:focus,.br-select .br-item[selected]:focus{outline:none}.br-select .br-item.selected.focus-visible,.br-select .br-item.selected:focus-visible,.br-select .br-item[selected].focus-visible,.br-select .br-item[selected]:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}.br-select .br-item.selected:not(:disabled):hover,.br-select .br-item[selected]:not(:disabled):hover{background-image:linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)))}.br-select .br-item.disabled{line-height:calc(var(--font-line-height-high)*2);padding-left:calc(var(--item-padding) + var(--spacing-scale-base))}.br-select.inverted .br-input,.br-select.inverted .br-input label,.br-select.dark-mode .br-input,.br-select.dark-mode .br-input label{--color: var(--color-dark);--focus-color: var(--focus-color-dark)}:host{box-sizing:border-box;display:block;max-width:100%;width:100%}.br-select{box-sizing:border-box;min-width:0;position:relative;width:100%;max-width:100%}:host([hide-search-icon]) br-select-input::part(icon){display:none}:host([multiple]) .br-select{min-width:0}
@@ -16,109 +16,39 @@ import { filterSelectOptions, SELECT_ALL_OPTION_VALUE, transitionAllSelection, t
16
16
  const SELECT_SEARCH_MODES = ['local', 'remote'];
17
17
  const SELECT_AUTOCOMPLETE_VALUES = ['on', 'off'];
18
18
  /**
19
- * O componente `br-select` é o controle oficial de seleção do GovBR-DS, desenvolvido para permitir que o usuário escolha uma ou múltiplas opções a partir de uma lista expansível. Compatível com o padrão WAI-ARIA Combobox, ele reúne em um único componente acessível o campo de acionamento/digitação, a lista suspensa e as opções selecionáveis, integrando-se nativamente a formulários HTML e frameworks modernos.
19
+ * O `br-select` permite escolher uma ou mais opções em uma lista suspensa expansível com suporte a busca e virtualização.
20
20
  *
21
- * ### Para que serve
21
+ * Declare as opções com `<br-select-option>` no slot padrão, ou forneça os dados dinamicamente com o método `setOptions()`. Para seleção múltipla, use `multiple`. Para habilitar busca por digitação, use `filterable`.
22
22
  *
23
- * O `br-select` gerencia todo o fluxo de interação de seleção:
24
- * - **Seleção simples e múltipla:** Permite selecionar uma única opção ou múltiplas opções (`multiple`), incluindo a opção de selecionar ou desmarcar todas em lote.
25
- * - **Busca e filtragem:** Oferece filtro local integrado (conforme o usuário digita) e suporte a busca remota assíncrona (`search-mode="remote"`), disparando eventos para carregamento sob demanda via API.
26
- * - **Agrupamento de opções:** Organiza opções contíguas por categoria, preservando virtualização, busca local e semântica nativa de formulário.
27
- * - **Integração com formulários:** É associado a formulários nativos (`formAssociated`), comunicando seu valor, estado de validação (válido/inválido), mensagens de erro contextuais e eventos padrão (`change`, `input`).
28
- * - **Navegação acessível:** Suporta controle total via teclado (setas para cima/baixo, Enter, Escape, Home, End), foco gerenciado e anúncios para leitores de tela.
23
+ * ```html
24
+ * <br-select label="Estado" placeholder="Selecione um estado">
25
+ * <br-select-option value="df" label="Distrito Federal"></br-select-option>
26
+ * <br-select-option value="sp" label="São Paulo"></br-select-option>
27
+ * <br-select-option value="rj" label="Rio de Janeiro"></br-select-option>
28
+ * </br-select>
29
+ * ```
29
30
  *
30
- * ### Navegação por teclado
31
+ * Em formulários HTML, o componente integra-se nativamente via `ElementInternals`, enviando os valores selecionados no submit e validando campos obrigatórios com `required`.
31
32
  *
32
- * O foco permanece no campo `combobox` enquanto a lista está aberta; a opção em destaque é comunicada por `aria-activedescendant`.
33
- * Ao receber foco, o campo abre a lista sem alterar a seleção atual.
33
+ * ### Quando usar
34
34
  *
35
- * - **ArrowDown / ArrowUp:** abre a lista e destaca a próxima opção na direção pressionada; com a lista aberta, move o destaque sem mover o foco físico.
36
- * - **Home / End:** em modo não filtrável, destaca a primeira ou a última opção habilitada; em modo filtrável, preserva o movimento do cursor no texto.
37
- * - **Enter:** abre a lista quando fechada e confirma a opção destacada quando aberta.
38
- * - **Espaço:** confirma a opção destacada em modo não filtrável; em modo filtrável, insere um espaço no campo de busca.
39
- * - **Escape:** fecha a lista, remove o destaque e devolve o foco ao campo.
40
- * - **Tab:** fecha a lista e deixa o navegador mover o foco para o próximo controle, sem alterar a seleção implicitamente.
41
- * - **Busca incremental:** em modo não filtrável, caracteres consecutivos destacam a primeira opção habilitada correspondente; em modo filtrável, a digitação filtra a lista.
42
- * - **Alt+ArrowDown / Alt+ArrowUp:** abre ou fecha a lista sem alterar a seleção.
35
+ * - Listas com 5 ou mais opções que ocupariam muito espaço visível se exibidas abertas.
36
+ * - Seleção que exige filtro ou busca por digitação.
37
+ * - Carregamento dinâmico ou remoto de opções a partir de uma API (`search-mode="remote"`).
43
38
  *
44
- * ### Quando utilizar
39
+ * ### Quando evitar
45
40
  *
46
- * - **Utilize quando:**
47
- * - O número de opções for moderado a grande (mais de 5 a 7 itens), onde listar todas diretamente na tela consumiria muito espaço visual.
48
- * - For necessário filtrar opções por texto (digitação em lista longa).
49
- * - As opções forem carregadas dinamicamente de uma API externa (busca remota/paginada).
50
- * - O espaço no leiaute for restrito e exigir um controle compacto e expansível.
51
- * - **Evite e prefira outro componente quando:**
52
- * - Houver poucas opções fixas (de 2 a 4 opções mutuamente exclusivas): prefira `br-radio` ou `br-radio-group` para manter as alternativas imediatamente visíveis.
53
- * - Houver uma escolha binária (sim/não, ativo/inativo): prefira `br-switch` ou `br-checkbox`.
54
- * - Houver seleção múltipla com até 4 alternativas: prefira `br-checkbox` ou um grupo de checkboxes visíveis.
41
+ * - Poucas opções fixas (2 a 4 opções): use `br-radio` ou `br-radio-group`.
42
+ * - Escolha simples de sim/não: use `br-switch` ou `br-checkbox`.
55
43
  *
56
- * ### Composição e Subcomponentes
57
- *
58
- * O ecossistema do Select é composto pelo elemento principal orquestrador e três subcomponentes especializados:
59
- *
60
- * | Subcomponente | Papel | Regra de uso |
61
- * | --- | --- | --- |
62
- * | `br-select` | **Orquestrador principal.** Gerencia o valor, ciclo de vida, acessibilidade, busca, formulário e renderização dos elementos internos. | Deve ser o único componente diretamente instanciado no template da aplicação. |
63
- * | `br-select-input` | **Campo de acionamento.** Exibe o valor selecionado, o rótulo (`label`), o campo de busca/digitação e o botão de expandir/recolher. | Coordenado automaticamente pelo `br-select`; utilize isoladamente apenas em composições arquiteturais avançadas. |
64
- * | `br-select-list` | **Lista suspensa virtualizada.** Contêiner flutuante que renderiza as opções de forma otimizada com suporte a rolagem e virtualização. | Gerenciada exclusivamente pelo `br-select`; não deve ser usada como controle autônomo. |
65
- * | `br-select-option` | **Item individual de opção.** Representa um valor selecionável, exibindo texto, estado de seleção e checkbox/radio associado. | Deve ser declarado dentro do slot padrão do `br-select` para cada opção desejada. |
66
- *
67
- * Além dos subcomponentes, o `br-select` oferece slots dedicados:
68
- * - `default`: Slot principal onde são passados os elementos `br-select-option`.
69
- * - `feedback`: Slot para exibição de mensagens de validação (ex.: `br-message`).
70
- * - `loading`: Slot para indicador de carregamento durante busca remota.
71
- * - `validation-loading`: Slot para indicador visual durante validação assíncrona.
72
- *
73
- * ### Como fornecer opções
74
- *
75
- * O `br-select` possui uma API declarativa canônica e uma API imperativa para atualizações dinâmicas:
76
- *
77
- * 1. **Slot com `br-select-option`:** é a forma declarativa canônica para código novo. O pai lê os atributos e o conteúdo de cada opção e os transforma em dados para a lista. Em frameworks, a coleção também pode ser renderizada como vários elementos `br-select-option`.
78
- * 2. **Método `setOptions()`:** substitui a coleção de forma imperativa e deve ser reservado para dados dinâmicos, especialmente respostas de busca remota. A lista recebe os objetos e cria internamente somente a janela visível de opções.
79
- *
80
- * `br-select-input` e `br-select-list` não substituem essas fontes. Eles são peças internas da composição: o primeiro controla o campo de acionamento e busca; o segundo recebe a coleção normalizada e renderiza a lista virtualizada.
81
- *
82
- * Evite misturar slot e dados imperativos sem necessidade. Na inicialização, opções declaradas no slot têm precedência quando existem. Depois que `options` é alterada ou `setOptions()` é chamado, a coleção imperativa passa a ser a fonte de dados e alterações posteriores no slot não são sincronizadas.
83
- *
84
- * A prop `options` é uma API legada e está depreciada. Ela continua funcionando apenas para preservar compatibilidade: no HTML, recebe uma string JSON; em JavaScript e frameworks, recebe um array por property binding. Não a adote em código novo; use `br-select-option` ou, para respostas dinâmicas/remotas, `setOptions()`.
85
- *
86
- * Cada objeto deve conter `value` string e pode conter `label`, `selected`, `disabled`, `indeterminate` e `content`. `content` é renderizado como HTML na lista; não use esse campo com conteúdo não confiável.
87
- *
88
- * ### O Conceito "Lego" e a Diferença entre os Componentes {#conceito-lego}
89
- *
90
- * O ecossistema de seleção do GovBR-DS foi projetado seguindo o **conceito de peças de Lego**: modular, flexível e combinável:
91
- *
92
- * 1. **`br-select` (Componente Principal / Modelo Pronto):**
93
- * É o **componente principal**. Já vem montado com todas as peças essenciais integradas: o acionador (`br-select-input`), a lista flutuante virtualizada (`br-select-list`), a navegação por teclado e a integração nativa com formulários (`formAssociated`). Na quase totalidade das aplicações (99% dos casos), você deve usar apenas `<br-select>`.
94
- *
95
- * 2. **`br-select-option` (Peça de Conteúdo):**
96
- * É a peça de Lego que você encaixa diretamente no slot padrão do `<br-select>` para definir cada valor selecionável.
97
- *
98
- * 3. **`br-select-input` e `br-select-list` (Subcomponentes Internos):**
99
- * São as peças internas que formam a estrutura do `br-select`. No uso comum, **não devem ser declarados manualmente**, pois o `br-select` já os instancia e os sincroniza automaticamente.
100
- *
101
- * #### Quando usar apenas `<br-select>`?
102
- * Use apenas `<br-select>` em quase todos os fluxos. Para opções fixas, declare os itens `<br-select-option>` no slot padrão; para opções dinâmicas, alimente a coleção com `setOptions()`. A prop `options` permanece disponível somente para compatibilidade legada.
103
- *
104
- * #### Quando montar os componentes separadamente?
105
- * A montagem separada das peças avulsas de Lego (`br-select-input` + `br-select-list` + `br-select-option`) destina-se exclusivamente a **composições arquiteturais avançadas**, onde o leiaute exige desacoplar fisicamente o campo de acionamento da lista suspensa (ex.: campo de busca fixo na barra superior e a lista exibida dentro de um drawer ou modal lateral). Nesse caso, a aplicação precisa implementar manualmente a sincronização de foco, abertura, navegação por teclado e repasse de valor ao formulário.
106
- *
107
- * ### Como os subcomponentes se relacionam
108
- *
109
- * A arquitetura do `br-select` segue o padrão de **orquestrador centralizado**:
110
- * 1. **O componente pai coordena o estado:** A aplicação declara o `<br-select>` com múltiplos `<br-select-option>` filhos ou usa `setOptions()` para dados dinâmicos. O `br-select` projeta internamente o `<br-select-input>` e a `<br-select-list>`, garantindo sincronia total de foco, estados de abertura, termos pesquisados e eventos. A prop `options` não é uma alternativa para código novo; existe somente para compatibilidade legada.
111
- * 2. **Evite montagem manual desarticulada:** Tentar declarar manualmente `br-select-input` e `br-select-list` fora do `br-select` quebra as relações de acessibilidade WAI-ARIA (combobox, controles expandidos, aria-activedescendant) e desvincula o controle da validação nativa de formulários (`ElementInternals`).
112
- * 3. **Comunicação por eventos:** Para busca remota ou resposta a seleção, a aplicação escuta os eventos disparados diretamente pelo `br-select` (`brSearch`, `change`, `input`), sem precisar interceptar nós internos da lista ou do campo de texto.
113
- *
114
- * Para a documentação completa de design, incluindo diretrizes de acessibilidade e especificações visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/select?tab=designer).
44
+ * Consulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/select?tab=designer).
115
45
  *
116
46
  * @category Formulários, Seleção
117
47
  * @status stable
118
48
  * @slot default - Opções declaradas com elementos br-select-option.
119
49
  * @slot feedback - Mensagem de validação, normalmente um br-message.
120
50
  * @slot validation-loading - Indicador exibido durante validação assíncrona.
121
- * @slot loading - Indicador exibido durante a busca remota de opções.
51
+ * @slot loading - Indicador exibido na lista enquanto `loading` está ativo. Padrão: spinner com o texto "Pesquisando…"; aceita texto, imagem ou qualquer HTML.
122
52
  *
123
53
  * @part container - Contêiner visual principal do select.
124
54
  * @part input - Campo de seleção e busca.
@@ -129,6 +59,7 @@ const SELECT_AUTOCOMPLETE_VALUES = ['on', 'off'];
129
59
  * @part input-icon - Ícone do campo.
130
60
  * @part input-action - Botão de abertura e fechamento.
131
61
  * @part input-action-button - Botão interno da ação.
62
+ * @part input-clear - Botão de limpar o termo digitado durante a busca.
132
63
  * @part list - Lista de opções.
133
64
  * @part option - Opção individual.
134
65
  * @part option-group - Cabeçalho visual de um grupo de opções.
@@ -264,24 +195,36 @@ export class Select {
264
195
  this.filterable = true;
265
196
  /**
266
197
  * Define se as opções são filtradas localmente ou fornecidas por uma busca remota.
267
- * Em `remote`, o componente emite `brSelectSearch`; a aplicação deve buscar,
268
- * validar e aplicar as opções por `setOptions()`.
198
+ * Em `remote`, o componente emite `brSelectSearch` e exibe as opções recebidas
199
+ * sem filtrá-las de novo pelo termo digitado; a aplicação deve buscar, validar e
200
+ * aplicar a resposta com `setOptions()` ou re-renderizando os `br-select-option`.
201
+ * A seleção é preservada mesmo quando não aparece na resposta seguinte.
269
202
  * @default 'local'
270
203
  */
271
204
  this.searchMode = 'local';
272
205
  /**
273
206
  * Indica que uma busca remota de opções está pendente.
274
- * Enquanto ativo, novas opções não podem ser selecionadas; a aplicação
275
- * continua responsável por debounce, cancelamento, erros e autenticação.
207
+ * Enquanto ativo, a lista exibe o slot `loading` (padrão: "Pesquisando…") e novas
208
+ * opções não podem ser selecionadas; a aplicação continua responsável por
209
+ * debounce, cancelamento, erros e autenticação.
276
210
  * @default false
277
211
  */
278
212
  this.loading = false;
279
213
  /**
280
- * Exibe o ícone de busca no campo de entrada.
214
+ * Exibe a lupa mesmo quando o select não é filtrável; selects com `filterable`
215
+ * já a exibem. A lupa é omitida quando o campo é estreito demais (menos de
216
+ * 128px) para comportar lupa, valor e seta.
281
217
  *
282
218
  * @default false
283
219
  */
284
220
  this.showSearchIcon = false;
221
+ /**
222
+ * Oculta a lupa mesmo quando `filterable` está ativo, sem desabilitar a busca.
223
+ * Tem precedência visual sobre `showSearchIcon` e não altera o comportamento padrão.
224
+ *
225
+ * @default false
226
+ */
227
+ this.hideSearchIcon = false;
285
228
  /**
286
229
  * Rótulo apresentado quando todas as opções já estão selecionadas no modo múltiplo.
287
230
  *
@@ -401,6 +344,13 @@ export class Select {
401
344
  get effectiveOverscan() {
402
345
  return resolveIntegerPropValue(this.el, 'overscan', this.overscan, 0, Number.MAX_SAFE_INTEGER, 1);
403
346
  }
347
+ /**
348
+ * Termo repassado à lista. Ela só filtra no modo local; no remoto, usa o termo
349
+ * apenas para exibir a mensagem de lista vazia.
350
+ */
351
+ get listSearchTerm() {
352
+ return this.filterable ? this.searchTerm : '';
353
+ }
404
354
  get effectiveSearchMode() {
405
355
  return resolveAllowedPropValue(this.el, 'searchMode', this.searchMode, SELECT_SEARCH_MODES, 'local');
406
356
  }
@@ -627,7 +577,7 @@ export class Select {
627
577
  * alcance a lista interna. Isso evita depender apenas da remoção/atualização
628
578
  * do atributo `search-term` no custom element.
629
579
  */
630
- void this.getSelectListController()?.setSearchTerm?.(nextSearchTerm);
580
+ void this.getSelectListController()?.setSearchTerm?.(this.listSearchTerm);
631
581
  if (!this.effectiveOpen) {
632
582
  void this.show();
633
583
  }
@@ -1591,7 +1541,7 @@ export class Select {
1591
1541
  * os filhos atuais do host.
1592
1542
  */
1593
1543
  getCurrentOptions() {
1594
- // As opções projetadas são a fonte canônica quando não há coleção
1544
+ // As opções projetadas são a fonte principal quando não há coleção
1595
1545
  // imperativa: a lista virtualizada pode manter um snapshot enquanto o
1596
1546
  // consumidor altera `selected` diretamente no slot.
1597
1547
  if (!this.hasImperativeOptions && this.slotElement) {
@@ -1615,6 +1565,10 @@ export class Select {
1615
1565
  if (this.pendingOptions) {
1616
1566
  return this.getListOptions(this.pendingOptions);
1617
1567
  }
1568
+ // Depois de setOptions(), a coleção imperativa é a fonte: uma resposta vazia
1569
+ // não volta a exibir as opções declaradas no HTML.
1570
+ if (this.hasImperativeOptions)
1571
+ return this.getListOptions([]);
1618
1572
  const hostOptions = this.applyCanonicalSelection(this.getHostOptions());
1619
1573
  return this.getListOptions(hostOptions);
1620
1574
  }
@@ -1623,7 +1577,8 @@ export class Select {
1623
1577
  const hostOptions = this.hasImperativeOptions ? [] : this.getHostOptions();
1624
1578
  const hostDisabledState = new Map(hostOptions.map((option) => [option.value, Boolean(option.disabled)]));
1625
1579
  const options = currentOptions.map((option) => hostDisabledState.has(option.value) ? { ...option, disabled: hostDisabledState.get(option.value) } : option);
1626
- return filterSelectOptions(options, this.filterable && this.effectiveSearchMode === 'local' ? this.searchTerm : '', this.selectAllLabel, this.unselectAllLabel);
1580
+ const localSearchTerm = this.effectiveSearchMode === 'local' ? this.listSearchTerm : '';
1581
+ return filterSelectOptions(options, localSearchTerm, this.selectAllLabel, this.unselectAllLabel);
1627
1582
  }
1628
1583
  clearSearch() {
1629
1584
  if (!this.searchTerm)
@@ -1650,18 +1605,18 @@ export class Select {
1650
1605
  this.selectListElement?.setMultiple(isMultiple);
1651
1606
  }
1652
1607
  renderSelectInput() {
1653
- 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-disabled": String(this.isDisabled()), "aria-label": this.getAccessibleLabel(), borderless: this.borderless, density: this.effectiveDensity, "is-inline": this.effectiveInline, "is-open": this.effectiveOpen, label: this.label, name: this.name, placeholder: this.placeholder, required: this.required, disabled: this.isDisabled(), filterable: this.filterable, showSearchIcon: this.showSearchIcon, autocomplete: this.effectiveAutocomplete, "input-width": this.inputWidth, value: this.filterable && this.effectiveOpen ? this.searchTerm : this.getRenderedDisplayValue() }));
1608
+ 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, clear:input-clear", ref: (el) => (this.selectInputElement = el), "aria-disabled": String(this.isDisabled()), "aria-label": this.getAccessibleLabel(), borderless: this.borderless, density: this.effectiveDensity, "is-inline": this.effectiveInline, "is-open": this.effectiveOpen, label: this.label, name: this.name, placeholder: this.placeholder, required: this.required, disabled: this.isDisabled(), filterable: this.filterable, showSearchIcon: this.showSearchIcon, clearable: this.filterable && this.effectiveOpen, autocomplete: this.effectiveAutocomplete, "input-width": this.inputWidth, value: this.filterable && this.effectiveOpen ? this.searchTerm : this.getRenderedDisplayValue() }));
1654
1609
  }
1655
1610
  renderSelectList() {
1656
1611
  return (h("br-select-list", { part: "list", "aria-hidden": "true", onMouseDown: (event) => {
1657
1612
  event.preventDefault();
1658
1613
  void this.selectInputElement?.setFocus();
1659
- }, options: this.getListOptions(this.getCurrentOptions()), exportparts: "list, option, checkbox, select-all, empty-option, option-checkbox, option-radio, option-group", "active-option-index": this.isActiveIndicatorHidden ? -1 : this.activeOptionIndex, "aria-label": this.getAccessibleLabel(), "aria-multiselectable": this.effectiveMultiple ? 'true' : 'false', density: this.effectiveDensity, id: this.listboxId, "visible-items": this.effectiveVisibleItems, "item-height": this.effectiveItemHeight, overscan: this.effectiveOverscan, hideDividers: this.hideDividers, "search-term": this.filterable && this.effectiveSearchMode === 'local' ? this.searchTerm : '', role: "listbox", "select-all-label": this.selectAllLabel, "unselect-all-label": this.unselectAllLabel, ref: (el) => {
1614
+ }, options: this.getListOptions(this.getCurrentOptions()), exportparts: "list, option, checkbox, select-all, empty-option, option-checkbox, option-radio, option-group", "active-option-index": this.isActiveIndicatorHidden ? -1 : this.activeOptionIndex, "aria-label": this.getAccessibleLabel(), "aria-multiselectable": this.effectiveMultiple ? 'true' : 'false', density: this.effectiveDensity, id: this.listboxId, "visible-items": this.effectiveVisibleItems, "item-height": this.effectiveItemHeight, overscan: this.effectiveOverscan, hideDividers: this.hideDividers, "search-term": this.listSearchTerm, "search-mode": this.effectiveSearchMode, role: "listbox", "select-all-label": this.selectAllLabel, "unselect-all-label": this.unselectAllLabel, ref: (el) => {
1660
1615
  this.selectListElement = el;
1661
1616
  this.selectListElement.loading = this.loading;
1662
1617
  this.setSelectionMode(this.effectiveMultiple);
1663
- void this.getSelectListController()?.setSearchTerm?.(this.filterable && this.effectiveSearchMode === 'local' ? this.searchTerm : '');
1664
- } }, h("slot", null), h("slot", { name: "loading", slot: "loading" })));
1618
+ void this.getSelectListController()?.setSearchTerm?.(this.listSearchTerm);
1619
+ } }, h("slot", null), h("slot", { name: "loading", slot: "loading" }, h("br-loading", { size: "small", label: "Pesquisando\u2026", labelPosition: "right" }))));
1665
1620
  }
1666
1621
  renderHiddenSelect() {
1667
1622
  const options = this.getFormOptions(this.getCurrentOptions()).filter((option) => !this.isSelectAllLabel(this.getOptionLabel(option)));
@@ -1700,7 +1655,7 @@ export class Select {
1700
1655
  return (h("option", { key: option.value, value: option.value, selected: option.selected, disabled: option.disabled }));
1701
1656
  }
1702
1657
  render() {
1703
- return (h(Host, { key: '4ed2f91b85ca8a208a3a090d65391b91d8dcd27b', "aria-busy": this.isValidating || this.loading ? 'true' : null }, h("div", { key: 'cef813f9d0a45140eb99bc63343991b4012c7599', class: this.getCssClassMap(), part: "container" }, this.renderSelectInput(), this.renderSelectList(), h("div", { key: '9b80f32b29b8496d35d6f77c320d777cf855ac03', part: "feedback", hidden: !this.hasFeedbackSlot && !this.validationErrorMessage }, h("slot", { key: 'd998e50ccc9ac15515ec9c58c31c444212a6a555', name: "feedback", onSlotchange: (event) => (this.hasFeedbackSlot = hasAssignedSlotContent(event.currentTarget)) }, this.validationErrorMessage ? (h("br-message", { "is-feedback": true, state: "danger", message: this.validationErrorMessage })) : null)), h("div", { key: '2bf9e897eb977caa4349242960580fd3ec9dd1bc', part: "validation-loading", hidden: !this.hasValidationLoadingSlot || !this.isValidating }, h("slot", { key: 'e0579acbfb5a288ecce89b85f8f6899640dee957', name: "validation-loading" })), this.renderHiddenSelect())));
1658
+ return (h(Host, { key: '6a73a46788b952ed54fc3962563d572b7303222f', "aria-busy": this.isValidating || this.loading ? 'true' : null }, h("div", { key: 'a05db2f095fb30ae9379ec87d8474289d8560a5b', class: this.getCssClassMap(), part: "container" }, this.renderSelectInput(), this.renderSelectList(), h("div", { key: '9218c94b7c8fe9ef170c4b1c9e47559cdae50c16', part: "feedback", hidden: !this.hasFeedbackSlot && !this.validationErrorMessage }, h("slot", { key: '2d74cf5804367c3b8dab39e57a0d050018de84b5', name: "feedback", onSlotchange: (event) => (this.hasFeedbackSlot = hasAssignedSlotContent(event.currentTarget)) }, this.validationErrorMessage ? (h("br-message", { "is-feedback": true, state: "danger", message: this.validationErrorMessage })) : null)), h("div", { key: 'f2e6019a54128ddae642226986ecf13803fce30d', part: "validation-loading", hidden: !this.hasValidationLoadingSlot || !this.isValidating }, h("slot", { key: '3d83e4359c05d95294d1d9ab87fef1d7d068f1f3', name: "validation-loading" })), this.renderHiddenSelect())));
1704
1659
  }
1705
1660
  static get is() { return "br-select"; }
1706
1661
  static get encapsulation() { return "shadow"; }
@@ -2259,7 +2214,7 @@ export class Select {
2259
2214
  "name": "default",
2260
2215
  "text": "'local'"
2261
2216
  }],
2262
- "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()`."
2217
+ "text": "Define se as op\u00E7\u00F5es s\u00E3o filtradas localmente ou fornecidas por uma busca remota.\nEm `remote`, o componente emite `brSelectSearch` e exibe as op\u00E7\u00F5es recebidas\nsem filtr\u00E1-las de novo pelo termo digitado; a aplica\u00E7\u00E3o deve buscar, validar e\naplicar a resposta com `setOptions()` ou re-renderizando os `br-select-option`.\nA sele\u00E7\u00E3o \u00E9 preservada mesmo quando n\u00E3o aparece na resposta seguinte."
2263
2218
  },
2264
2219
  "getter": false,
2265
2220
  "setter": false,
@@ -2282,7 +2237,7 @@ export class Select {
2282
2237
  "name": "default",
2283
2238
  "text": "false"
2284
2239
  }],
2285
- "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."
2240
+ "text": "Indica que uma busca remota de op\u00E7\u00F5es est\u00E1 pendente.\nEnquanto ativo, a lista exibe o slot `loading` (padr\u00E3o: \"Pesquisando\u2026\") e novas\nop\u00E7\u00F5es n\u00E3o podem ser selecionadas; a aplica\u00E7\u00E3o continua respons\u00E1vel por\ndebounce, cancelamento, erros e autentica\u00E7\u00E3o."
2286
2241
  },
2287
2242
  "getter": false,
2288
2243
  "setter": false,
@@ -2305,7 +2260,7 @@ export class Select {
2305
2260
  "name": "default",
2306
2261
  "text": "false"
2307
2262
  }],
2308
- "text": "Exibe o \u00EDcone de busca no campo de entrada."
2263
+ "text": "Exibe a lupa mesmo quando o select n\u00E3o \u00E9 filtr\u00E1vel; selects com `filterable`\nj\u00E1 a exibem. A lupa \u00E9 omitida quando o campo \u00E9 estreito demais (menos de\n128px) para comportar lupa, valor e seta."
2309
2264
  },
2310
2265
  "getter": false,
2311
2266
  "setter": false,
@@ -2313,6 +2268,29 @@ export class Select {
2313
2268
  "attribute": "show-search-icon",
2314
2269
  "defaultValue": "false"
2315
2270
  },
2271
+ "hideSearchIcon": {
2272
+ "type": "boolean",
2273
+ "mutable": false,
2274
+ "complexType": {
2275
+ "original": "boolean",
2276
+ "resolved": "boolean",
2277
+ "references": {}
2278
+ },
2279
+ "required": false,
2280
+ "optional": false,
2281
+ "docs": {
2282
+ "tags": [{
2283
+ "name": "default",
2284
+ "text": "false"
2285
+ }],
2286
+ "text": "Oculta a lupa mesmo quando `filterable` est\u00E1 ativo, sem desabilitar a busca.\nTem preced\u00EAncia visual sobre `showSearchIcon` e n\u00E3o altera o comportamento padr\u00E3o."
2287
+ },
2288
+ "getter": false,
2289
+ "setter": false,
2290
+ "reflect": true,
2291
+ "attribute": "hide-search-icon",
2292
+ "defaultValue": "false"
2293
+ },
2316
2294
  "unselectAllLabel": {
2317
2295
  "type": "string",
2318
2296
  "mutable": false,