@govbr-ds/webcomponents 2.0.0-next.20 → 2.0.0-next.21

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 (294) hide show
  1. package/dist/cjs/br-avatar.cjs.entry.js +2 -2
  2. package/dist/cjs/br-avatar.cjs.entry.js.map +1 -1
  3. package/dist/cjs/br-button_2.cjs.entry.js +3 -3
  4. package/dist/cjs/br-button_2.cjs.entry.js.map +1 -1
  5. package/dist/cjs/br-checkbox_4.cjs.entry.js +346 -0
  6. package/dist/cjs/br-checkbox_4.cjs.entry.js.map +1 -0
  7. package/dist/cjs/br-dropdown.cjs.entry.js +2 -2
  8. package/dist/cjs/br-dropdown.cjs.entry.js.map +1 -1
  9. package/dist/cjs/br-item.cjs.entry.js +2 -2
  10. package/dist/cjs/br-item.cjs.entry.js.map +1 -1
  11. package/dist/cjs/br-loading.cjs.entry.js +2 -2
  12. package/dist/cjs/br-loading.cjs.entry.js.map +1 -1
  13. package/dist/cjs/br-message.cjs.entry.js +2 -2
  14. package/dist/cjs/br-message.cjs.entry.js.map +1 -1
  15. package/dist/cjs/br-select.cjs.entry.js +281 -0
  16. package/dist/cjs/br-select.cjs.entry.js.map +1 -0
  17. package/dist/cjs/br-switch.cjs.entry.js +3 -3
  18. package/dist/cjs/br-switch.cjs.entry.js.map +1 -1
  19. package/dist/cjs/br-tag.cjs.entry.js +3 -3
  20. package/dist/cjs/br-tag.cjs.entry.js.map +1 -1
  21. package/dist/cjs/br-textarea.cjs.entry.js +3 -3
  22. package/dist/cjs/br-textarea.cjs.entry.js.map +1 -1
  23. package/dist/cjs/br-upload.cjs.entry.js +3 -3
  24. package/dist/cjs/br-upload.cjs.entry.js.map +1 -1
  25. package/dist/cjs/{index-81c11ce2.js → index-86e7422e.js} +16 -24
  26. package/dist/cjs/index-86e7422e.js.map +1 -0
  27. package/dist/cjs/loader.cjs.js +2 -2
  28. package/dist/cjs/webcomponents.cjs.js +3 -3
  29. package/dist/cjs/webcomponents.cjs.js.map +1 -1
  30. package/dist/collection/collection-manifest.json +2 -1
  31. package/dist/collection/components/avatar/avatar.css +3 -1
  32. package/dist/collection/components/button/button.css +3 -1
  33. package/dist/collection/components/checkbox/checkbox.css +3 -1
  34. package/dist/collection/components/dropdown/dropdown.css +3 -1
  35. package/dist/collection/components/icon/icon.css +3 -1
  36. package/dist/collection/components/input/input.css +3 -1
  37. package/dist/collection/components/item/item.css +3 -1
  38. package/dist/collection/components/list/list.css +3 -1
  39. package/dist/collection/components/loading/loading.css +3 -1
  40. package/dist/collection/components/message/message.css +3 -1
  41. package/dist/collection/components/radio/radio.css +3 -1
  42. package/dist/collection/components/radio/radio.js +1 -1
  43. package/dist/collection/components/radio/radio.js.map +1 -1
  44. package/dist/collection/components/select/select.css +857 -0
  45. package/dist/collection/components/select/select.js +491 -0
  46. package/dist/collection/components/select/select.js.map +1 -0
  47. package/dist/collection/components/switch/switch.css +3 -1
  48. package/dist/collection/components/switch/switch.js +1 -1
  49. package/dist/collection/components/tag/tag.css +3 -1
  50. package/dist/collection/components/tag/tag.js +1 -1
  51. package/dist/collection/components/textarea/textarea.css +3 -1
  52. package/dist/collection/components/textarea/textarea.js +1 -1
  53. package/dist/collection/components/upload/upload.css +3 -1
  54. package/dist/collection/components/upload/upload.js +1 -1
  55. package/dist/collection/pages/components/select/index.js +18 -0
  56. package/dist/collection/pages/scripts/menu.js +5 -0
  57. package/dist/collection/scripts/menu.js +5 -0
  58. package/dist/components/br-avatar.js +1 -1
  59. package/dist/components/br-avatar.js.map +1 -1
  60. package/dist/components/br-button.js +1 -1
  61. package/dist/components/br-checkbox.js +1 -1
  62. package/dist/components/br-checkbox.js.map +1 -1
  63. package/dist/components/br-dropdown.js +1 -1
  64. package/dist/components/br-dropdown.js.map +1 -1
  65. package/dist/components/br-icon.js +1 -1
  66. package/dist/components/br-input.js +1 -1
  67. package/dist/components/br-input.js.map +1 -1
  68. package/dist/components/br-item.js +1 -1
  69. package/dist/components/br-item.js.map +1 -1
  70. package/dist/components/br-list.js +1 -1
  71. package/dist/components/br-list.js.map +1 -1
  72. package/dist/components/br-loading.js +1 -1
  73. package/dist/components/br-loading.js.map +1 -1
  74. package/dist/components/br-message.js +1 -1
  75. package/dist/components/br-message.js.map +1 -1
  76. package/dist/components/br-radio.js +1 -1
  77. package/dist/components/br-radio.js.map +1 -1
  78. package/dist/components/br-select.d.ts +11 -0
  79. package/dist/components/br-select.js +6 -0
  80. package/dist/components/br-select.js.map +1 -0
  81. package/dist/components/br-switch.js +1 -1
  82. package/dist/components/br-switch.js.map +1 -1
  83. package/dist/components/br-tag.js +1 -1
  84. package/dist/components/br-tag.js.map +1 -1
  85. package/dist/components/br-textarea.js +1 -1
  86. package/dist/components/br-textarea.js.map +1 -1
  87. package/dist/components/br-upload.js +1 -1
  88. package/dist/components/br-upload.js.map +1 -1
  89. package/dist/components/index.js +1 -1
  90. package/dist/components/p-22068d3c.js +6 -0
  91. package/dist/components/p-22068d3c.js.map +1 -0
  92. package/dist/components/p-62776355.js +6 -0
  93. package/dist/components/p-62776355.js.map +1 -0
  94. package/dist/components/p-67617725.js +6 -0
  95. package/dist/components/{p-e4af8eac.js.map → p-67617725.js.map} +1 -1
  96. package/dist/components/p-7882cb21.js +6 -0
  97. package/dist/components/p-7882cb21.js.map +1 -0
  98. package/dist/components/p-7aca304a.js +6 -0
  99. package/dist/components/p-7aca304a.js.map +1 -0
  100. package/dist/components/{p-64831033.js → p-b4b55ab7.js} +3 -3
  101. package/dist/components/{p-64831033.js.map → p-b4b55ab7.js.map} +1 -1
  102. package/dist/components/{p-2d8e59f6.js → p-fabd9bdd.js} +2 -2
  103. package/dist/components/p-fabd9bdd.js.map +1 -0
  104. package/dist/esm/br-avatar.entry.js +2 -2
  105. package/dist/esm/br-avatar.entry.js.map +1 -1
  106. package/dist/esm/br-button_2.entry.js +3 -3
  107. package/dist/esm/br-button_2.entry.js.map +1 -1
  108. package/dist/esm/br-checkbox_4.entry.js +339 -0
  109. package/dist/esm/br-checkbox_4.entry.js.map +1 -0
  110. package/dist/esm/br-dropdown.entry.js +2 -2
  111. package/dist/esm/br-dropdown.entry.js.map +1 -1
  112. package/dist/esm/br-item.entry.js +2 -2
  113. package/dist/esm/br-item.entry.js.map +1 -1
  114. package/dist/esm/br-loading.entry.js +2 -2
  115. package/dist/esm/br-loading.entry.js.map +1 -1
  116. package/dist/esm/br-message.entry.js +2 -2
  117. package/dist/esm/br-message.entry.js.map +1 -1
  118. package/dist/esm/br-select.entry.js +277 -0
  119. package/dist/esm/br-select.entry.js.map +1 -0
  120. package/dist/esm/br-switch.entry.js +3 -3
  121. package/dist/esm/br-switch.entry.js.map +1 -1
  122. package/dist/esm/br-tag.entry.js +3 -3
  123. package/dist/esm/br-tag.entry.js.map +1 -1
  124. package/dist/esm/br-textarea.entry.js +3 -3
  125. package/dist/esm/br-textarea.entry.js.map +1 -1
  126. package/dist/esm/br-upload.entry.js +3 -3
  127. package/dist/esm/br-upload.entry.js.map +1 -1
  128. package/dist/esm/{index-aab4a630.js → index-14721f44.js} +16 -24
  129. package/dist/esm/index-14721f44.js.map +1 -0
  130. package/dist/esm/loader.js +3 -3
  131. package/dist/esm/webcomponents.js +4 -4
  132. package/dist/esm/webcomponents.js.map +1 -1
  133. package/dist/esm-es5/br-avatar.entry.js +1 -1
  134. package/dist/esm-es5/br-avatar.entry.js.map +1 -1
  135. package/dist/esm-es5/br-button_2.entry.js +2 -2
  136. package/dist/esm-es5/br-button_2.entry.js.map +1 -1
  137. package/dist/esm-es5/br-checkbox_4.entry.js +6 -0
  138. package/dist/esm-es5/br-checkbox_4.entry.js.map +1 -0
  139. package/dist/esm-es5/br-dropdown.entry.js +2 -2
  140. package/dist/esm-es5/br-dropdown.entry.js.map +1 -1
  141. package/dist/esm-es5/br-item.entry.js +1 -1
  142. package/dist/esm-es5/br-item.entry.js.map +1 -1
  143. package/dist/esm-es5/br-loading.entry.js +1 -1
  144. package/dist/esm-es5/br-loading.entry.js.map +1 -1
  145. package/dist/esm-es5/br-message.entry.js +1 -1
  146. package/dist/esm-es5/br-message.entry.js.map +1 -1
  147. package/dist/esm-es5/br-select.entry.js +6 -0
  148. package/dist/esm-es5/br-select.entry.js.map +1 -0
  149. package/dist/esm-es5/br-switch.entry.js +2 -2
  150. package/dist/esm-es5/br-switch.entry.js.map +1 -1
  151. package/dist/esm-es5/br-tag.entry.js +1 -1
  152. package/dist/esm-es5/br-tag.entry.js.map +1 -1
  153. package/dist/esm-es5/br-textarea.entry.js +2 -2
  154. package/dist/esm-es5/br-textarea.entry.js.map +1 -1
  155. package/dist/esm-es5/br-upload.entry.js +1 -1
  156. package/dist/esm-es5/br-upload.entry.js.map +1 -1
  157. package/dist/esm-es5/index-14721f44.js +6 -0
  158. package/dist/esm-es5/index-14721f44.js.map +1 -0
  159. package/dist/esm-es5/loader.js +2 -2
  160. package/dist/esm-es5/loader.js.map +1 -1
  161. package/dist/esm-es5/webcomponents.js +2 -2
  162. package/dist/esm-es5/webcomponents.js.map +1 -1
  163. package/dist/types/components/select/select.d.ts +98 -0
  164. package/dist/types/components.d.ts +108 -0
  165. package/dist/webcomponents/p-11e8c72f.entry.js +6 -0
  166. package/dist/webcomponents/{p-842b2513.entry.js.map → p-11e8c72f.entry.js.map} +1 -1
  167. package/dist/webcomponents/p-1accc2ab.system.entry.js +6 -0
  168. package/dist/webcomponents/{p-55604b7f.system.entry.js.map → p-1accc2ab.system.entry.js.map} +1 -1
  169. package/dist/webcomponents/p-36e48582.system.entry.js +6 -0
  170. package/dist/webcomponents/p-36e48582.system.entry.js.map +1 -0
  171. package/dist/webcomponents/p-37440256.entry.js +6 -0
  172. package/dist/webcomponents/{p-dcf41d91.entry.js.map → p-37440256.entry.js.map} +1 -1
  173. package/dist/webcomponents/p-44554246.system.entry.js +6 -0
  174. package/dist/webcomponents/p-44554246.system.entry.js.map +1 -0
  175. package/dist/webcomponents/p-55f80a96.system.entry.js +6 -0
  176. package/dist/webcomponents/{p-baad00f8.system.entry.js.map → p-55f80a96.system.entry.js.map} +1 -1
  177. package/dist/webcomponents/p-563bea26.entry.js +6 -0
  178. package/dist/webcomponents/{p-3f00a196.entry.js.map → p-563bea26.entry.js.map} +1 -1
  179. package/dist/webcomponents/{p-71be2e3f.system.entry.js → p-58d37ac2.entry.js} +3 -3
  180. package/dist/webcomponents/{p-626fe2cb.entry.js.map → p-58d37ac2.entry.js.map} +1 -1
  181. package/dist/webcomponents/p-64f4ecea.system.entry.js +6 -0
  182. package/dist/webcomponents/{p-71be2e3f.system.entry.js.map → p-64f4ecea.system.entry.js.map} +1 -1
  183. package/dist/webcomponents/p-703a633a.system.js +6 -0
  184. package/dist/webcomponents/p-703a633a.system.js.map +1 -0
  185. package/dist/webcomponents/p-76326737.system.entry.js +6 -0
  186. package/dist/webcomponents/{p-6a8226b3.system.entry.js.map → p-76326737.system.entry.js.map} +1 -1
  187. package/dist/webcomponents/p-797376a2.system.entry.js +17 -0
  188. package/dist/webcomponents/{p-d83e2172.system.entry.js.map → p-797376a2.system.entry.js.map} +1 -1
  189. package/dist/webcomponents/p-7f8c5016.entry.js +6 -0
  190. package/dist/webcomponents/{p-d174c8cd.entry.js.map → p-7f8c5016.entry.js.map} +1 -1
  191. package/dist/webcomponents/p-a44ad074.entry.js +6 -0
  192. package/dist/webcomponents/p-a44ad074.entry.js.map +1 -0
  193. package/dist/webcomponents/p-aaa17439.entry.js +6 -0
  194. package/dist/webcomponents/p-aaa17439.entry.js.map +1 -0
  195. package/dist/webcomponents/{p-430afeb5.system.js → p-aaca726d.system.js} +2 -2
  196. package/dist/webcomponents/p-aaca726d.system.js.map +1 -0
  197. package/dist/webcomponents/p-aec894fa.system.entry.js +6 -0
  198. package/dist/webcomponents/{p-28476b17.system.entry.js.map → p-aec894fa.system.entry.js.map} +1 -1
  199. package/dist/webcomponents/p-b16b1de5.entry.js +6 -0
  200. package/dist/webcomponents/{p-447c8036.entry.js.map → p-b16b1de5.entry.js.map} +1 -1
  201. package/dist/webcomponents/p-b6af61ad.entry.js +6 -0
  202. package/dist/webcomponents/{p-5539ffa8.entry.js.map → p-b6af61ad.entry.js.map} +1 -1
  203. package/dist/webcomponents/p-c696c385.entry.js +17 -0
  204. package/dist/webcomponents/{p-e6d921ef.entry.js.map → p-c696c385.entry.js.map} +1 -1
  205. package/dist/webcomponents/p-d1e0a8ff.entry.js +6 -0
  206. package/dist/webcomponents/{p-24da392a.entry.js.map → p-d1e0a8ff.entry.js.map} +1 -1
  207. package/dist/webcomponents/p-d31732da.system.entry.js +6 -0
  208. package/dist/webcomponents/{p-05343155.system.entry.js.map → p-d31732da.system.entry.js.map} +1 -1
  209. package/dist/webcomponents/p-db4b272c.system.entry.js +6 -0
  210. package/dist/webcomponents/{p-ae629243.system.entry.js.map → p-db4b272c.system.entry.js.map} +1 -1
  211. package/dist/webcomponents/{p-2c2c8629.js → p-dbd35139.js} +2 -2
  212. package/dist/webcomponents/p-dbd35139.js.map +1 -0
  213. package/dist/webcomponents/p-e76f7113.system.entry.js +6 -0
  214. package/dist/webcomponents/{p-7a4e1265.system.entry.js.map → p-e76f7113.system.entry.js.map} +1 -1
  215. package/dist/webcomponents/p-f05d11f7.entry.js +6 -0
  216. package/dist/webcomponents/{p-61523bc9.entry.js.map → p-f05d11f7.entry.js.map} +1 -1
  217. package/dist/webcomponents/p-f5412db6.system.entry.js +6 -0
  218. package/dist/webcomponents/{p-8039a644.system.entry.js.map → p-f5412db6.system.entry.js.map} +1 -1
  219. package/dist/webcomponents/webcomponents.esm.js +1 -1
  220. package/dist/webcomponents/webcomponents.esm.js.map +1 -1
  221. package/dist/webcomponents/webcomponents.js +1 -1
  222. package/hydrate/index.js +324 -30
  223. package/hydrate/index.mjs +324 -30
  224. package/package.json +1 -1
  225. package/vscode-data.json +45 -0
  226. package/dist/cjs/br-checkbox.cjs.entry.js +0 -76
  227. package/dist/cjs/br-checkbox.cjs.entry.js.map +0 -1
  228. package/dist/cjs/br-input.cjs.entry.js +0 -150
  229. package/dist/cjs/br-input.cjs.entry.js.map +0 -1
  230. package/dist/cjs/br-list.cjs.entry.js +0 -82
  231. package/dist/cjs/br-list.cjs.entry.js.map +0 -1
  232. package/dist/cjs/br-radio.cjs.entry.js +0 -79
  233. package/dist/cjs/br-radio.cjs.entry.js.map +0 -1
  234. package/dist/cjs/index-81c11ce2.js.map +0 -1
  235. package/dist/components/p-2d8e59f6.js.map +0 -1
  236. package/dist/components/p-e4af8eac.js +0 -6
  237. package/dist/esm/br-checkbox.entry.js +0 -72
  238. package/dist/esm/br-checkbox.entry.js.map +0 -1
  239. package/dist/esm/br-input.entry.js +0 -146
  240. package/dist/esm/br-input.entry.js.map +0 -1
  241. package/dist/esm/br-list.entry.js +0 -78
  242. package/dist/esm/br-list.entry.js.map +0 -1
  243. package/dist/esm/br-radio.entry.js +0 -75
  244. package/dist/esm/br-radio.entry.js.map +0 -1
  245. package/dist/esm/index-aab4a630.js.map +0 -1
  246. package/dist/esm-es5/br-checkbox.entry.js +0 -6
  247. package/dist/esm-es5/br-checkbox.entry.js.map +0 -1
  248. package/dist/esm-es5/br-input.entry.js +0 -6
  249. package/dist/esm-es5/br-input.entry.js.map +0 -1
  250. package/dist/esm-es5/br-list.entry.js +0 -6
  251. package/dist/esm-es5/br-list.entry.js.map +0 -1
  252. package/dist/esm-es5/br-radio.entry.js +0 -6
  253. package/dist/esm-es5/br-radio.entry.js.map +0 -1
  254. package/dist/esm-es5/index-aab4a630.js +0 -6
  255. package/dist/esm-es5/index-aab4a630.js.map +0 -1
  256. package/dist/webcomponents/p-05343155.system.entry.js +0 -6
  257. package/dist/webcomponents/p-183614c8.system.entry.js +0 -6
  258. package/dist/webcomponents/p-183614c8.system.entry.js.map +0 -1
  259. package/dist/webcomponents/p-2083ff7b.entry.js +0 -6
  260. package/dist/webcomponents/p-2083ff7b.entry.js.map +0 -1
  261. package/dist/webcomponents/p-24da392a.entry.js +0 -6
  262. package/dist/webcomponents/p-28476b17.system.entry.js +0 -6
  263. package/dist/webcomponents/p-2c2c8629.js.map +0 -1
  264. package/dist/webcomponents/p-3f00a196.entry.js +0 -6
  265. package/dist/webcomponents/p-430afeb5.system.js.map +0 -1
  266. package/dist/webcomponents/p-447c8036.entry.js +0 -6
  267. package/dist/webcomponents/p-5539ffa8.entry.js +0 -6
  268. package/dist/webcomponents/p-55604b7f.system.entry.js +0 -6
  269. package/dist/webcomponents/p-61523bc9.entry.js +0 -6
  270. package/dist/webcomponents/p-626fe2cb.entry.js +0 -6
  271. package/dist/webcomponents/p-6a8226b3.system.entry.js +0 -6
  272. package/dist/webcomponents/p-7a4e1265.system.entry.js +0 -6
  273. package/dist/webcomponents/p-8039a644.system.entry.js +0 -6
  274. package/dist/webcomponents/p-842b2513.entry.js +0 -6
  275. package/dist/webcomponents/p-8f156fc4.system.entry.js +0 -6
  276. package/dist/webcomponents/p-8f156fc4.system.entry.js.map +0 -1
  277. package/dist/webcomponents/p-9f0d01d1.entry.js +0 -6
  278. package/dist/webcomponents/p-9f0d01d1.entry.js.map +0 -1
  279. package/dist/webcomponents/p-ae629243.system.entry.js +0 -6
  280. package/dist/webcomponents/p-b88a5d9a.system.js +0 -6
  281. package/dist/webcomponents/p-b88a5d9a.system.js.map +0 -1
  282. package/dist/webcomponents/p-b9fd2bc0.system.entry.js +0 -6
  283. package/dist/webcomponents/p-b9fd2bc0.system.entry.js.map +0 -1
  284. package/dist/webcomponents/p-baad00f8.system.entry.js +0 -6
  285. package/dist/webcomponents/p-d174c8cd.entry.js +0 -6
  286. package/dist/webcomponents/p-d83e2172.system.entry.js +0 -17
  287. package/dist/webcomponents/p-dcf41d91.entry.js +0 -6
  288. package/dist/webcomponents/p-e027fca2.entry.js +0 -6
  289. package/dist/webcomponents/p-e027fca2.entry.js.map +0 -1
  290. package/dist/webcomponents/p-e6d921ef.entry.js +0 -17
  291. package/dist/webcomponents/p-e8b5b14f.entry.js +0 -6
  292. package/dist/webcomponents/p-e8b5b14f.entry.js.map +0 -1
  293. package/dist/webcomponents/p-f5e674ba.system.entry.js +0 -6
  294. package/dist/webcomponents/p-f5e674ba.system.entry.js.map +0 -1
@@ -0,0 +1,491 @@
1
+ /*!
2
+ * Construído com @govbr-ds/webcomponents
3
+ * Padrão Digital de Governo.
4
+ */
5
+ import { h } from "@stencil/core";
6
+ import { v4 as uuidv4 } from "uuid";
7
+ import { inheritAriaAttributes } from "../../utils/inherited-attributes";
8
+ export class Select {
9
+ constructor() {
10
+ /**
11
+ * Contém o id gerado aleatoriamente
12
+ */
13
+ this.idDefault = `${uuidv4()}`;
14
+ this.handleClickOutside = (event) => {
15
+ const target = event.target;
16
+ if (this.isExpanded && !this.el.contains(target)) {
17
+ this.isExpanded = false;
18
+ }
19
+ };
20
+ this.inheritedAttributes = {};
21
+ this.label = undefined;
22
+ this.placeholder = '';
23
+ this.isMultiple = false;
24
+ this.options = '[]';
25
+ this.selectAllLabel = 'Selecionar todos';
26
+ this.unselectAllLabel = 'Desselecionar todos';
27
+ this.showSearchIcon = false;
28
+ this.isOpen = false;
29
+ this.customId = undefined;
30
+ this.parsedOptions = [];
31
+ this.inputValue = '';
32
+ this.isAllSelected = false;
33
+ this.isExpanded = false;
34
+ this.focusedIndex = -1;
35
+ }
36
+ synchronizeSelect() {
37
+ try {
38
+ const rawOptions = JSON.parse(this.options);
39
+ this.parsedOptions = this.sanitizeOptions(rawOptions);
40
+ this.updateSelectedOptions();
41
+ this.updateSelectedAllState();
42
+ this.emitSelectedOptions();
43
+ }
44
+ catch (error) {
45
+ console.error('Erro ao processar as opções do select:', error);
46
+ this.parsedOptions = [];
47
+ }
48
+ }
49
+ componentWillLoad() {
50
+ this.isExpanded = this.isOpen;
51
+ this.inheritedAttributes = inheritAriaAttributes(this.el);
52
+ this.synchronizeSelect();
53
+ }
54
+ componentDidLoad() {
55
+ document.addEventListener('click', this.handleClickOutside);
56
+ }
57
+ disconnectedCallback() {
58
+ document.addEventListener('click', this.handleClickOutside);
59
+ }
60
+ sanitizeOptions(rawOptions) {
61
+ const validOptions = [];
62
+ const invalidOptions = [];
63
+ rawOptions.forEach(option => {
64
+ if (typeof option.label === 'string' && option.label.trim() !== '') {
65
+ validOptions.push({
66
+ label: option.label.trim(),
67
+ value: typeof option.value === 'string' ? option.value : '',
68
+ selected: typeof option.selected === 'boolean' ? option.selected : false,
69
+ });
70
+ }
71
+ else {
72
+ invalidOptions.push(option);
73
+ }
74
+ });
75
+ if (invalidOptions.length > 0) {
76
+ console.warn('Opções inválidas descartadas:', invalidOptions);
77
+ }
78
+ return validOptions;
79
+ }
80
+ handleKeydownOnInput(event) {
81
+ switch (event.key) {
82
+ case 'Tab':
83
+ this.closeSelect();
84
+ break;
85
+ case 'ArrowDown':
86
+ event.preventDefault();
87
+ if (!this.isExpanded) {
88
+ this.openSelect();
89
+ }
90
+ this.focusItemInDirection('next');
91
+ break;
92
+ case 'ArrowUp':
93
+ event.preventDefault();
94
+ if (!this.isExpanded) {
95
+ this.openSelect();
96
+ }
97
+ this.focusItemInDirection('previous');
98
+ break;
99
+ case 'Escape':
100
+ this.closeSelect();
101
+ this.resetFocus();
102
+ break;
103
+ case 'Enter':
104
+ this.toggleOpen();
105
+ break;
106
+ default:
107
+ }
108
+ }
109
+ handleKeydownOnList(event) {
110
+ event.preventDefault();
111
+ switch (event.key) {
112
+ case 'Tab':
113
+ case 'Escape':
114
+ this.resetFocus();
115
+ break;
116
+ case 'ArrowUp':
117
+ this.focusItemInDirection('previous');
118
+ break;
119
+ case 'ArrowDown':
120
+ this.focusItemInDirection('next');
121
+ break;
122
+ default:
123
+ break;
124
+ }
125
+ }
126
+ handleKeydownOnItem(event, index) {
127
+ if (event.key === 'Enter' || event.key === ' ') {
128
+ event.preventDefault();
129
+ this.handleSelection(index); // Garante que o índice correto será usado
130
+ }
131
+ else if (event.key === 'Escape') {
132
+ this.closeSelect();
133
+ }
134
+ }
135
+ handleSelectAllKeyDown(event) {
136
+ if (event.key === 'Enter' || event.key === ' ') {
137
+ event.preventDefault();
138
+ this.toggleSelectAll();
139
+ }
140
+ else if (event.key === 'Escape') {
141
+ event.preventDefault();
142
+ this.closeSelect();
143
+ }
144
+ }
145
+ resetFocus() {
146
+ const input = this.el.shadowRoot.querySelector('br-input');
147
+ input.focus();
148
+ }
149
+ focusItemInDirection(direction) {
150
+ let itemCount = this.parsedOptions.length;
151
+ if (this.isMultiple)
152
+ itemCount += 1;
153
+ this.focusedIndex = direction === 'next'
154
+ ? (this.focusedIndex + 1) % itemCount
155
+ : (this.focusedIndex - 1 + itemCount) % itemCount;
156
+ this.focusItem(this.focusedIndex);
157
+ }
158
+ focusItem(index) {
159
+ const items = this.el.shadowRoot.querySelectorAll('.br-item');
160
+ const item = items[index];
161
+ item.focus();
162
+ }
163
+ openSelect() {
164
+ this.isExpanded = true;
165
+ }
166
+ closeSelect() {
167
+ this.isExpanded = false;
168
+ }
169
+ handleSelection(index) {
170
+ if (index < 0 || index >= this.parsedOptions.length) {
171
+ return;
172
+ }
173
+ if (this.isMultiple) {
174
+ this.parsedOptions[index].selected = !this.parsedOptions[index].selected;
175
+ }
176
+ else {
177
+ this.parsedOptions.forEach(option => option.selected = false);
178
+ this.parsedOptions[index].selected = true;
179
+ this.isExpanded = false;
180
+ }
181
+ this.updateSelectedOptions();
182
+ this.emitSelectedOptions();
183
+ this.updateSelectedAllState();
184
+ }
185
+ updateSelectedOptions() {
186
+ this.inputValue = this.getStringValue(this.parsedOptions.filter(option => option.selected));
187
+ }
188
+ getStringValue(options) {
189
+ if (options.length > 0) {
190
+ const firstSelected = options[0].label || options[0].value;
191
+ if (this.isMultiple) {
192
+ const howManySelected = options.length > 1 ? ` + (${options.length - 1})` : '';
193
+ return `${firstSelected}${howManySelected}`;
194
+ }
195
+ else {
196
+ return firstSelected;
197
+ }
198
+ }
199
+ return '';
200
+ }
201
+ emitSelectedOptions() {
202
+ const selectedOptions = this.parsedOptions
203
+ .filter((option) => option.selected === true)
204
+ .map((option) => { var _a; return (_a = option.label) !== null && _a !== void 0 ? _a : option.value; });
205
+ this.brDidSelectChange.emit(selectedOptions);
206
+ }
207
+ updateSelectedAllState() {
208
+ const allSelected = this.parsedOptions.every(option => option.selected);
209
+ this.isAllSelected = allSelected;
210
+ }
211
+ toggleSelectAll() {
212
+ if (this.isAllSelected) {
213
+ this.parsedOptions.forEach(option => option.selected = false);
214
+ this.isAllSelected = false;
215
+ }
216
+ else {
217
+ this.parsedOptions.forEach(option => option.selected = true);
218
+ this.isAllSelected = true;
219
+ }
220
+ this.updateSelectedOptions();
221
+ this.emitSelectedOptions();
222
+ }
223
+ renderInput() {
224
+ return (h("br-input", { value: this.inputValue, label: this.label, placeholder: this.placeholder, readonly: true, onClick: () => this.toggleOpen(), onKeyDown: (event) => this.handleKeydownOnInput(event) }, this.showSearchIcon && h("br-icon", { slot: "icon", "icon-name": "fa-solid:search", "aria-hidden": "true" }), h("br-icon", { slot: "action", "icon-name": this.isExpanded ? 'fa-solid:angle-up' : 'fa-solid:angle-down', height: "16", "aria-hidden": "true" })));
225
+ }
226
+ renderSelectAllCheckbox() {
227
+ return (h("div", { class: `br-item highlighted ${this.isAllSelected ? 'selected' : ''}`, "data-all": "data-all", tabindex: "-1", role: "option", "aria-selected": this.isAllSelected, onKeyDown: (event) => this.handleSelectAllKeyDown(event) }, h("br-checkbox", { name: `checkbox-${this.idDefault}`, label: this.isAllSelected ? this.unselectAllLabel : this.selectAllLabel, checked: this.isAllSelected, onBrDidCheckedChange: () => this.toggleSelectAll() })));
228
+ }
229
+ renderOptions() {
230
+ return (this.parsedOptions.map((option, index) => (h("div", { class: `br-item ${option.selected ? 'selected' : ''}`, key: `${option.label}-${this.idDefault}`, role: "option", tabindex: this.focusedIndex === index ? 0 : -1, "aria-selected": option.selected, onClick: () => this.handleSelection(index), onKeyDown: (event) => this.handleKeydownOnItem(event, index) }, this.isMultiple ?
231
+ (h("br-checkbox", { name: `checkbox-${index}-${this.idDefault}`, label: option.label || option.value, checked: option.selected === true, onBrDidCheckedChange: () => this.handleSelection(index) }))
232
+ :
233
+ (h("br-radio", { exportparts: "radio-input, radio-label", name: `radio-${index}-${this.idDefault}`, label: option.label || option.value, checked: option.selected === true, onBrDidChange: () => this.handleSelection(index) }))))));
234
+ }
235
+ /**
236
+ * Determina um id para o radio.
237
+ */
238
+ getComputedId() {
239
+ var _a;
240
+ return ((_a = this.customId) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.customId : `br-select-${this.idDefault}`;
241
+ }
242
+ /**
243
+ * Inverte o valor da prop `isOpen`
244
+ */
245
+ async toggleOpen() {
246
+ this.isExpanded = !this.isExpanded;
247
+ }
248
+ getCssClassMap() {
249
+ return {
250
+ 'br-select': true,
251
+ };
252
+ }
253
+ render() {
254
+ return (h("div", Object.assign({ key: 'a060e050a8b1ae04df17457118c5061efaf09853', class: this.getCssClassMap() }, this.inheritedAttributes, { id: this.getComputedId() }), this.renderInput(), this.isExpanded &&
255
+ h("br-list", { key: 'bca27704661b44ca08de6183f2406bda4d5254a9', tabindex: -1, onKeyDown: (event) => this.handleKeydownOnList(event) }, this.isMultiple && (this.renderSelectAllCheckbox()), this.renderOptions())));
256
+ }
257
+ static get is() { return "br-select"; }
258
+ static get encapsulation() { return "shadow"; }
259
+ static get formAssociated() { return true; }
260
+ static get originalStyleUrls() {
261
+ return {
262
+ "$": ["select.scss"]
263
+ };
264
+ }
265
+ static get styleUrls() {
266
+ return {
267
+ "$": ["select.css"]
268
+ };
269
+ }
270
+ static get properties() {
271
+ return {
272
+ "label": {
273
+ "type": "string",
274
+ "mutable": false,
275
+ "complexType": {
276
+ "original": "string",
277
+ "resolved": "string",
278
+ "references": {}
279
+ },
280
+ "required": false,
281
+ "optional": false,
282
+ "docs": {
283
+ "tags": [],
284
+ "text": "R\u00F3tulo que indica o tipo de informa\u00E7\u00E3o que deve ser selecionada."
285
+ },
286
+ "attribute": "label",
287
+ "reflect": true
288
+ },
289
+ "placeholder": {
290
+ "type": "string",
291
+ "mutable": false,
292
+ "complexType": {
293
+ "original": "string",
294
+ "resolved": "string",
295
+ "references": {}
296
+ },
297
+ "required": false,
298
+ "optional": false,
299
+ "docs": {
300
+ "tags": [],
301
+ "text": "Texto auxiliar exibido antes de uma sele\u00E7\u00E3o."
302
+ },
303
+ "attribute": "placeholder",
304
+ "reflect": true,
305
+ "defaultValue": "''"
306
+ },
307
+ "isMultiple": {
308
+ "type": "boolean",
309
+ "mutable": false,
310
+ "complexType": {
311
+ "original": "boolean",
312
+ "resolved": "boolean",
313
+ "references": {}
314
+ },
315
+ "required": false,
316
+ "optional": false,
317
+ "docs": {
318
+ "tags": [],
319
+ "text": "Habilita o modo m\u00FAltiplo para selecionar v\u00E1rias op\u00E7\u00F5es."
320
+ },
321
+ "attribute": "is-multiple",
322
+ "reflect": true,
323
+ "defaultValue": "false"
324
+ },
325
+ "options": {
326
+ "type": "string",
327
+ "mutable": false,
328
+ "complexType": {
329
+ "original": "string",
330
+ "resolved": "string",
331
+ "references": {}
332
+ },
333
+ "required": false,
334
+ "optional": false,
335
+ "docs": {
336
+ "tags": [],
337
+ "text": "JSON contendo as op\u00E7\u00F5es do select."
338
+ },
339
+ "attribute": "options",
340
+ "reflect": true,
341
+ "defaultValue": "'[]'"
342
+ },
343
+ "selectAllLabel": {
344
+ "type": "string",
345
+ "mutable": false,
346
+ "complexType": {
347
+ "original": "string",
348
+ "resolved": "string",
349
+ "references": {}
350
+ },
351
+ "required": false,
352
+ "optional": false,
353
+ "docs": {
354
+ "tags": [],
355
+ "text": "R\u00F3tulo para selecionar todas as op\u00E7\u00F5es."
356
+ },
357
+ "attribute": "select-all-label",
358
+ "reflect": true,
359
+ "defaultValue": "'Selecionar todos'"
360
+ },
361
+ "unselectAllLabel": {
362
+ "type": "string",
363
+ "mutable": false,
364
+ "complexType": {
365
+ "original": "string",
366
+ "resolved": "string",
367
+ "references": {}
368
+ },
369
+ "required": false,
370
+ "optional": false,
371
+ "docs": {
372
+ "tags": [],
373
+ "text": "R\u00F3tulo para desmarcar todas as op\u00E7\u00F5es."
374
+ },
375
+ "attribute": "unselect-all-label",
376
+ "reflect": true,
377
+ "defaultValue": "'Desselecionar todos'"
378
+ },
379
+ "showSearchIcon": {
380
+ "type": "boolean",
381
+ "mutable": false,
382
+ "complexType": {
383
+ "original": "boolean",
384
+ "resolved": "boolean",
385
+ "references": {}
386
+ },
387
+ "required": false,
388
+ "optional": false,
389
+ "docs": {
390
+ "tags": [],
391
+ "text": "Exibe o \u00EDcone de busca no campo de entrada."
392
+ },
393
+ "attribute": "show-search-icon",
394
+ "reflect": true,
395
+ "defaultValue": "false"
396
+ },
397
+ "isOpen": {
398
+ "type": "boolean",
399
+ "mutable": false,
400
+ "complexType": {
401
+ "original": "boolean",
402
+ "resolved": "boolean",
403
+ "references": {}
404
+ },
405
+ "required": false,
406
+ "optional": false,
407
+ "docs": {
408
+ "tags": [],
409
+ "text": "Indica se a listagem de itens do select est\u00E1 expandida"
410
+ },
411
+ "attribute": "is-open",
412
+ "reflect": true,
413
+ "defaultValue": "false"
414
+ },
415
+ "customId": {
416
+ "type": "string",
417
+ "mutable": false,
418
+ "complexType": {
419
+ "original": "string",
420
+ "resolved": "string",
421
+ "references": {}
422
+ },
423
+ "required": false,
424
+ "optional": false,
425
+ "docs": {
426
+ "tags": [],
427
+ "text": "Especifica o ID do componente.\nSe n\u00E3o for fornecido, o ID ser\u00E1 gerado automaticamente e de forma aleat\u00F3ria"
428
+ },
429
+ "attribute": "id",
430
+ "reflect": true
431
+ }
432
+ };
433
+ }
434
+ static get states() {
435
+ return {
436
+ "parsedOptions": {},
437
+ "inputValue": {},
438
+ "isAllSelected": {},
439
+ "isExpanded": {},
440
+ "focusedIndex": {}
441
+ };
442
+ }
443
+ static get events() {
444
+ return [{
445
+ "method": "brDidSelectChange",
446
+ "name": "brDidSelectChange",
447
+ "bubbles": true,
448
+ "cancelable": true,
449
+ "composed": true,
450
+ "docs": {
451
+ "tags": [],
452
+ "text": "Evento emitido sempre que houver atualiza\u00E7\u00E3o nos itens selecionados."
453
+ },
454
+ "complexType": {
455
+ "original": "any",
456
+ "resolved": "any",
457
+ "references": {}
458
+ }
459
+ }];
460
+ }
461
+ static get methods() {
462
+ return {
463
+ "toggleOpen": {
464
+ "complexType": {
465
+ "signature": "() => Promise<void>",
466
+ "parameters": [],
467
+ "references": {
468
+ "Promise": {
469
+ "location": "global",
470
+ "id": "global::Promise"
471
+ }
472
+ },
473
+ "return": "Promise<void>"
474
+ },
475
+ "docs": {
476
+ "text": "Inverte o valor da prop `isOpen`",
477
+ "tags": []
478
+ }
479
+ }
480
+ };
481
+ }
482
+ static get elementRef() { return "el"; }
483
+ static get watchers() {
484
+ return [{
485
+ "propName": "options",
486
+ "methodName": "synchronizeSelect"
487
+ }];
488
+ }
489
+ static get attachInternalsMemberName() { return "elementInternals"; }
490
+ }
491
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../../src/components/select/select.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AttachInternals, Component, Element, Event, EventEmitter, h, Method, Prop, State, Watch } from '@stencil/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Attributes, inheritAriaAttributes } from '../../utils/inherited-attributes'\nimport { CssClassMap } from '../../utils/interfaces';\n\n@Component({\n tag: 'br-select',\n styleUrl: 'select.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Select {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrSelectElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Rótulo que indica o tipo de informação que deve ser selecionada.\n */\n @Prop({ reflect: true }) label: string;\n\n /**\n * Texto auxiliar exibido antes de uma seleção.\n */\n @Prop({ reflect: true }) placeholder: string = '';\n\n /**\n * Habilita o modo múltiplo para selecionar várias opções.\n */\n @Prop({ reflect: true }) isMultiple: boolean = false;\n\n /**\n * JSON contendo as opções do select.\n */\n @Prop({ reflect: true }) options: string = '[]';\n\n /**\n * Rótulo para selecionar todas as opções.\n */\n @Prop({ reflect: true }) selectAllLabel: string = 'Selecionar todos';\n\n /**\n * Rótulo para desmarcar todas as opções.\n */\n @Prop({ reflect: true }) unselectAllLabel: string = 'Desselecionar todos';\n\n /**\n * Exibe o ícone de busca no campo de entrada.\n */\n @Prop({ reflect: true }) showSearchIcon: boolean = false;\n\n /**\n * Indica se a listagem de itens do select está expandida\n */\n @Prop({ reflect: true }) isOpen: boolean = false;\n\n /**\n * Especifica o ID do componente.\n * Se não for fornecido, o ID será gerado automaticamente e de forma aleatória\n */\n @Prop({ reflect: true, attribute: 'id' }) customId: string\n\n /**\n * Contém o id gerado aleatoriamente\n */\n private readonly idDefault = `${uuidv4()}`\n\n // Representa as opções do select disponíveis para renderização.\n // Cada opção contém `label`, `value` e o estado de seleção (`selected`).\n @State() parsedOptions: { label: string; value: string; selected: boolean }[] = [];\n\n // Valor exibido no input, refletindo as opções selecionadas.\n @State() inputValue: string = '';\n\n // Indica se todas as opções estão selecionadas. Comportamento do checkbox \"Selecionar Todos\".\n @State() isAllSelected: boolean = false;\n\n // Controla se a lista de opções do select está expandida (aberta) ou colapsada (fechada).\n @State() isExpanded: boolean = false;\n\n // Armazena o índice do item atualmente focado, usado para navegação por teclado.\n @State() focusedIndex: number = -1;\n\n /**\n * Evento emitido sempre que houver atualização nos itens selecionados.\n */\n @Event() brDidSelectChange: EventEmitter;\n\n @Watch('options')\n synchronizeSelect() {\n try {\n const rawOptions = JSON.parse(this.options);\n this.parsedOptions = this.sanitizeOptions(rawOptions);\n this.updateSelectedOptions();\n this.updateSelectedAllState();\n this.emitSelectedOptions();\n } catch (error) {\n console.error('Erro ao processar as opções do select:', error);\n this.parsedOptions = [];\n }\n }\n\n componentWillLoad() {\n this.isExpanded = this.isOpen;\n this.inheritedAttributes = inheritAriaAttributes(this.el)\n this.synchronizeSelect();\n }\n\n componentDidLoad() {\n document.addEventListener('click', this.handleClickOutside);\n }\n\n disconnectedCallback() {\n document.addEventListener('click', this.handleClickOutside);\n }\n\n private sanitizeOptions(rawOptions: any[]): { label: string; value: string; selected: boolean }[] {\n const validOptions = [];\n const invalidOptions = [];\n\n rawOptions.forEach(option => {\n if (typeof option.label === 'string' && option.label.trim() !== '') {\n validOptions.push({\n label: option.label.trim(),\n value: typeof option.value === 'string' ? option.value : '',\n selected: typeof option.selected === 'boolean' ? option.selected : false,\n });\n } else {\n invalidOptions.push(option);\n }\n });\n\n if (invalidOptions.length > 0) {\n console.warn('Opções inválidas descartadas:', invalidOptions);\n }\n\n return validOptions;\n }\n\n private readonly handleClickOutside = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n if (this.isExpanded && !this.el.contains(target)) {\n this.isExpanded = false;\n }\n }\n\n private handleKeydownOnInput(event: KeyboardEvent) {\n switch (event.key) {\n case 'Tab':\n this.closeSelect();\n break;\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isExpanded) {\n this.openSelect();\n }\n this.focusItemInDirection('next');\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.isExpanded) {\n this.openSelect();\n }\n this.focusItemInDirection('previous');\n break;\n case 'Escape':\n this.closeSelect();\n this.resetFocus();\n break;\n case 'Enter':\n this.toggleOpen();\n break;\n default:\n }\n }\n\n private handleKeydownOnList(event: KeyboardEvent) {\n event.preventDefault();\n switch (event.key) {\n case 'Tab':\n case 'Escape':\n this.resetFocus();\n break;\n case 'ArrowUp':\n this.focusItemInDirection('previous');\n break;\n case 'ArrowDown':\n this.focusItemInDirection('next');\n break;\n default:\n break;\n }\n }\n\n private handleKeydownOnItem(event: KeyboardEvent, index: number) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.handleSelection(index); // Garante que o índice correto será usado\n } else if (event.key === 'Escape') {\n this.closeSelect();\n }\n }\n\n private handleSelectAllKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.toggleSelectAll();\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.closeSelect();\n }\n }\n\n private resetFocus() {\n const input = this.el.shadowRoot.querySelector('br-input') as HTMLElement;\n input.focus();\n }\n\n private focusItemInDirection(direction: 'next' | 'previous') {\n let itemCount = this.parsedOptions.length;\n if (this.isMultiple) itemCount += 1;\n\n this.focusedIndex = direction === 'next'\n ? (this.focusedIndex + 1) % itemCount\n : (this.focusedIndex - 1 + itemCount) % itemCount;\n\n this.focusItem(this.focusedIndex);\n }\n\n private focusItem(index: number) {\n const items = this.el.shadowRoot.querySelectorAll('.br-item');\n const item = items[index] as HTMLElement;\n item.focus();\n }\n\n private openSelect() {\n this.isExpanded = true;\n }\n\n private closeSelect() {\n this.isExpanded = false;\n }\n\n\n private handleSelection(index: number) {\n if (index < 0 || index >= this.parsedOptions.length) {\n return;\n }\n\n if (this.isMultiple) {\n this.parsedOptions[index].selected = !this.parsedOptions[index].selected;\n } else {\n this.parsedOptions.forEach(option => option.selected = false);\n this.parsedOptions[index].selected = true;\n this.isExpanded = false;\n }\n this.updateSelectedOptions();\n this.emitSelectedOptions();\n this.updateSelectedAllState();\n }\n\n private updateSelectedOptions() {\n this.inputValue = this.getStringValue(this.parsedOptions.filter(option => option.selected));\n }\n\n private getStringValue(options) {\n if (options.length > 0) {\n const firstSelected = options[0].label || options[0].value;\n if (this.isMultiple) {\n const howManySelected = options.length > 1 ? ` + (${options.length - 1})` : '';\n return `${firstSelected}${howManySelected}`;\n } else {\n return firstSelected;\n }\n }\n return '';\n }\n\n private emitSelectedOptions() {\n const selectedOptions = this.parsedOptions\n .filter((option) => option.selected === true)\n .map((option) => option.label ?? option.value);\n\n this.brDidSelectChange.emit(selectedOptions);\n }\n\n private updateSelectedAllState() {\n const allSelected = this.parsedOptions.every(option => option.selected);\n this.isAllSelected = allSelected;\n }\n\n private toggleSelectAll() {\n if (this.isAllSelected) {\n this.parsedOptions.forEach(option => option.selected = false);\n this.isAllSelected = false;\n } else {\n this.parsedOptions.forEach(option => option.selected = true);\n this.isAllSelected = true;\n }\n\n this.updateSelectedOptions();\n this.emitSelectedOptions();\n }\n\n private renderInput() {\n return (\n <br-input\n value={this.inputValue}\n label={this.label}\n placeholder={this.placeholder}\n readonly\n onClick={() => this.toggleOpen()}\n onKeyDown={(event) => this.handleKeydownOnInput(event)}\n >\n {this.showSearchIcon && <br-icon slot=\"icon\" icon-name=\"fa-solid:search\" aria-hidden=\"true\"></br-icon>}\n <br-icon slot=\"action\"\n icon-name={this.isExpanded ? 'fa-solid:angle-up' : 'fa-solid:angle-down'}\n height=\"16\"\n aria-hidden=\"true\">\n </br-icon>\n </br-input>\n );\n }\n\n private renderSelectAllCheckbox() {\n return (\n <div class={`br-item highlighted ${this.isAllSelected ? 'selected' : ''}`}\n data-all=\"data-all\"\n tabindex=\"-1\"\n role=\"option\"\n aria-selected={this.isAllSelected}\n onKeyDown={(event) => this.handleSelectAllKeyDown(event)}\n >\n <br-checkbox\n name={`checkbox-${this.idDefault}`}\n label={this.isAllSelected ? this.unselectAllLabel : this.selectAllLabel}\n checked={this.isAllSelected}\n onBrDidCheckedChange={() => this.toggleSelectAll()}\n ></br-checkbox>\n </div>\n );\n }\n\n private renderOptions() {\n return (\n this.parsedOptions.map((option, index) => (\n <div\n class={`br-item ${option.selected ? 'selected' : ''}`}\n key={`${option.label}-${this.idDefault}`}\n role=\"option\"\n tabindex={this.focusedIndex === index ? 0 : -1}\n aria-selected={option.selected}\n onClick={() => this.handleSelection(index)}\n onKeyDown={(event) => this.handleKeydownOnItem(event, index)}\n >\n {this.isMultiple ?\n (\n <br-checkbox\n name={`checkbox-${index}-${this.idDefault}`}\n label={option.label || option.value}\n checked={option.selected === true}\n onBrDidCheckedChange={() => this.handleSelection(index)}\n />\n )\n :\n (<br-radio\n exportparts=\"radio-input, radio-label\"\n name={`radio-${index}-${this.idDefault}`}\n label={option.label || option.value}\n checked={option.selected === true}\n onBrDidChange={() => this.handleSelection(index)}\n />)\n }\n </div>\n ))\n );\n }\n\n /**\n * Determina um id para o radio.\n */\n private getComputedId() {\n return this.customId?.length > 0 ? this.customId : `br-select-${this.idDefault}`;\n }\n\n /**\n * Inverte o valor da prop `isOpen`\n */\n @Method()\n async toggleOpen() {\n this.isExpanded = !this.isExpanded\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-select': true,\n }\n }\n\n private inheritedAttributes: Attributes = {}\n\n render() {\n return (\n <div class={this.getCssClassMap()} {...this.inheritedAttributes} id={this.getComputedId()}>\n {this.renderInput()}\n\n {this.isExpanded &&\n <br-list tabindex={-1} onKeyDown={(event) => this.handleKeydownOnList(event)}>\n {this.isMultiple && (this.renderSelectAllCheckbox())}\n {this.renderOptions()}\n </br-list>\n }\n </div>\n );\n }\n}\n\n"]}
@@ -34,6 +34,7 @@ img {
34
34
 
35
35
  button,
36
36
  input,
37
+ select,
37
38
  textarea {
38
39
  font-family: inherit;
39
40
  font-size: 100%;
@@ -46,7 +47,8 @@ input {
46
47
  overflow: visible;
47
48
  }
48
49
 
49
- button {
50
+ button,
51
+ select {
50
52
  text-transform: none;
51
53
  }
52
54
 
@@ -57,7 +57,7 @@ export class Switch {
57
57
  };
58
58
  }
59
59
  render() {
60
- return (h(Host, { key: '52838e1fe630318fe34af78b47a42781646f291c' }, h("div", Object.assign({ key: 'bc2c656294f72bee0d9778791ab9a6b00cea7c9e', class: this.getCssClassMap() }, this.inheritedAttributes), h("input", { key: '8ac78e3880ce376faa5e224d0fdab9602104e9ef', id: this.customId, type: "checkbox", name: this.name, checked: this._checkedValue, disabled: this.disabled, role: "switch", "aria-checked": this._checkedValue.toString(), "aria-disabled": this.disabled ? 'true' : null, onChange: this.handleCheckedChange }), h("label", { key: '4e85a4b6d51059a4a899dc24bb7a3f181e99db25', htmlFor: this.customId }, this._slotDefault ? h("slot", null) : this.label), this.labelOn && this.labelOff && (h("div", { key: '30b401aed4ede6e5159240b8337d429d6a7f8aff', class: "switch-data", "data-enabled": this.labelOn, "data-disabled": this.labelOff })))));
60
+ return (h(Host, { key: 'a8058de5e4d32e21cf236d887dff19f419f5edcc' }, h("div", Object.assign({ key: '56c7286facb1882ac178aa903b53ff539304c8c8', class: this.getCssClassMap() }, this.inheritedAttributes), h("input", { key: '76d767f4e3129a8db85fb168fa41983a7c4d8006', id: this.customId, type: "checkbox", name: this.name, checked: this._checkedValue, disabled: this.disabled, role: "switch", "aria-checked": this._checkedValue.toString(), "aria-disabled": this.disabled ? 'true' : null, onChange: this.handleCheckedChange }), h("label", { key: '98e24813ebea9efab1bcf0c9b9288d4e98549bc1', htmlFor: this.customId }, this._slotDefault ? h("slot", null) : this.label), this.labelOn && this.labelOff && (h("div", { key: '2421315bbb2ba1a7019121e11a7c7699ff46d60a', class: "switch-data", "data-enabled": this.labelOn, "data-disabled": this.labelOff })))));
61
61
  }
62
62
  static get is() { return "br-switch"; }
63
63
  static get encapsulation() { return "shadow"; }
@@ -34,6 +34,7 @@ img {
34
34
 
35
35
  button,
36
36
  input,
37
+ select,
37
38
  textarea {
38
39
  font-family: inherit;
39
40
  font-size: 100%;
@@ -46,7 +47,8 @@ input {
46
47
  overflow: visible;
47
48
  }
48
49
 
49
- button {
50
+ button,
51
+ select {
50
52
  text-transform: none;
51
53
  }
52
54
 
@@ -64,7 +64,7 @@ export class Tag {
64
64
  return (h("span", { class: "tag-spacing-status", id: "interactivetag1", "aria-label": this.label }, this.label));
65
65
  }
66
66
  render() {
67
- return (h(Host, { key: '2ae1b9e249097b66fb02e0c903e294f73aad6bc0' }, h("div", { key: '65f39b80147b977231e8bb9566f2aa1797597646', class: "tag-position" }, h("span", Object.assign({ key: '452777774bfdba4a5eed2af6bb429f02f8dd9ed3', class: this.getCssClassMap() }, this.inheritedAttributes, { role: "alert", "aria-live": "assertive" }), this.renderIcon(), this.renderLabel(), this.renderCloseButton(), h("slot", { key: 'c3cad61c4e5d7b683c9b4a6b66fbf0b62a56ac8a' })), this.renderStatusLabel())));
67
+ return (h(Host, { key: '45fbabb9a2a4ac08101df0a9dbfb08de2440bdb6' }, h("div", { key: 'd7cd66126a75d9baa4ac983d1cf79c2e794c2a49', class: "tag-position" }, h("span", Object.assign({ key: 'f28d65ea9b14002350ebf4002de534d6ea567786', class: this.getCssClassMap() }, this.inheritedAttributes, { role: "alert", "aria-live": "assertive" }), this.renderIcon(), this.renderLabel(), this.renderCloseButton(), h("slot", { key: '751ed1841c55583a873b293b862b4b816dd972c8' })), this.renderStatusLabel())));
68
68
  }
69
69
  static get is() { return "br-tag"; }
70
70
  static get encapsulation() { return "shadow"; }
@@ -34,6 +34,7 @@ img {
34
34
 
35
35
  button,
36
36
  input,
37
+ select,
37
38
  textarea {
38
39
  font-family: inherit;
39
40
  font-size: 100%;
@@ -46,7 +47,8 @@ input {
46
47
  overflow: visible;
47
48
  }
48
49
 
49
- button {
50
+ button,
51
+ select {
50
52
  text-transform: none;
51
53
  }
52
54
 
@@ -76,7 +76,7 @@ export class Textarea {
76
76
  render() {
77
77
  const caracteresRestantes = this.maxlength - this.currentLength;
78
78
  const mostrarLimite = this.currentLength > 0;
79
- return (h(Host, { key: '8bb5ea9efb0e2ee82d1c4074d7f9a8332fcfb635' }, h("div", Object.assign({ key: 'cedcc004557860b4b2724c5180f2c012a109fcc1', class: this.getCssClassMap() }, this.inheritedAttributes), h("div", { key: '3998a88b69f3dddc63ea41d08db7de96af28d25d', class: this.isInline ? 'row' : '' }, this.isInline ? (h("div", { class: "col-auto pt-half" }, h("label", { htmlFor: this.customId }, this.label))) : (h("label", { htmlFor: this.customId }, this.label)), h("div", { key: '8f94f9c2aaf2758e5ee9be6938be50ce8c82db7c', class: this.isInline ? 'col' : '' }, h("textarea", Object.assign({ key: 'a642046a4dd9da93ac051eb6bf0ecfe711433680', id: this.customId, value: this.value, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleChange }, (this.maxlength > 0 ? { maxLength: this.maxlength } : {}))), h("div", { key: 'b859da1b3f48ed513e32374251a31ad3fc0f108f', class: "text-base mt-1" }, this.maxlength > 0 && (h("div", { key: '0aaebed51ac98b00c4fca6e7d857664d117b0d74' }, mostrarLimite ? (h("span", { class: "restantes", "aria-live": "polite", role: "status", id: "limitmax" }, "Restam ", h("strong", null, caracteresRestantes), " caracteres")) : (h("span", { class: "limit", "aria-live": "polite" }, "Limite m\u00E1ximo de ", h("strong", null, this.maxlength), " caracteres"))))), h("slot", { key: 'e24c4673cc638ce9e37acf05d2d80fea32b7f8fa' }))))));
79
+ return (h(Host, { key: '175b5dfe33b9624b32700683a6939aa36f56c556' }, h("div", Object.assign({ key: '554c285ab7f21c8bed90e4280f45709c7abb5ecc', class: this.getCssClassMap() }, this.inheritedAttributes), h("div", { key: 'ef72baa9ce047ec87fa40b9410ba96e7797f1dc6', class: this.isInline ? 'row' : '' }, this.isInline ? (h("div", { class: "col-auto pt-half" }, h("label", { htmlFor: this.customId }, this.label))) : (h("label", { htmlFor: this.customId }, this.label)), h("div", { key: '5a8c6c414089d046d05d1c4d60d833c81898b612', class: this.isInline ? 'col' : '' }, h("textarea", Object.assign({ key: '74e7ba7ea95c3fd184e9152a061e252eed9fc40a', id: this.customId, value: this.value, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleChange }, (this.maxlength > 0 ? { maxLength: this.maxlength } : {}))), h("div", { key: '3a13875598faa7a2eb05a9d67f3fdbd692a22291', class: "text-base mt-1" }, this.maxlength > 0 && (h("div", { key: 'b39abedd24e3727ce85b531eb7c8e9ea58268954' }, mostrarLimite ? (h("span", { class: "restantes", "aria-live": "polite", role: "status", id: "limitmax" }, "Restam ", h("strong", null, caracteresRestantes), " caracteres")) : (h("span", { class: "limit", "aria-live": "polite" }, "Limite m\u00E1ximo de ", h("strong", null, this.maxlength), " caracteres"))))), h("slot", { key: '9965aeddd085909184d974c5829ee21e0651e390' }))))));
80
80
  }
81
81
  static get is() { return "br-textarea"; }
82
82
  static get encapsulation() { return "shadow"; }
@@ -34,6 +34,7 @@ img {
34
34
 
35
35
  button,
36
36
  input,
37
+ select,
37
38
  textarea {
38
39
  font-family: inherit;
39
40
  font-size: 100%;
@@ -46,7 +47,8 @@ input {
46
47
  overflow: visible;
47
48
  }
48
49
 
49
- button {
50
+ button,
51
+ select {
50
52
  text-transform: none;
51
53
  }
52
54