@govbr-ds/webcomponents 2.0.0-next.21 → 2.0.0-next.22
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.
- package/dist/cjs/br-avatar.cjs.entry.js +2 -2
- package/dist/cjs/br-avatar.cjs.entry.js.map +1 -1
- package/dist/cjs/br-button_2.cjs.entry.js +175 -56
- package/dist/cjs/br-button_2.cjs.entry.js.map +1 -1
- package/dist/cjs/br-checkbox.cjs.entry.js +76 -0
- package/dist/cjs/br-checkbox.cjs.entry.js.map +1 -0
- package/dist/cjs/br-checkgroup.cjs.entry.js +101 -0
- package/dist/cjs/br-checkgroup.cjs.entry.js.map +1 -0
- package/dist/cjs/br-dropdown.cjs.entry.js +3 -3
- package/dist/cjs/br-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/br-input_3.cjs.entry.js +284 -0
- package/dist/cjs/br-input_3.cjs.entry.js.map +1 -0
- package/dist/cjs/br-item.cjs.entry.js +40 -20
- package/dist/cjs/br-item.cjs.entry.js.map +1 -1
- package/dist/cjs/br-loading.cjs.entry.js +3 -3
- package/dist/cjs/br-loading.cjs.entry.js.map +1 -1
- package/dist/cjs/br-message.cjs.entry.js +3 -3
- package/dist/cjs/br-message.cjs.entry.js.map +1 -1
- package/dist/cjs/br-select.cjs.entry.js +4 -4
- package/dist/cjs/br-select.cjs.entry.js.map +1 -1
- package/dist/cjs/br-switch.cjs.entry.js +9 -6
- package/dist/cjs/br-switch.cjs.entry.js.map +1 -1
- package/dist/cjs/br-tag.cjs.entry.js +3 -3
- package/dist/cjs/br-tag.cjs.entry.js.map +1 -1
- package/dist/cjs/br-textarea.cjs.entry.js +3 -3
- package/dist/cjs/br-textarea.cjs.entry.js.map +1 -1
- package/dist/cjs/br-upload.cjs.entry.js +3 -3
- package/dist/cjs/br-upload.cjs.entry.js.map +1 -1
- package/dist/cjs/{index-86e7422e.js → index-4fc1aab1.js} +856 -621
- package/dist/cjs/index-4fc1aab1.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/webcomponents.cjs.js +3 -3
- package/dist/cjs/webcomponents.cjs.js.map +1 -1
- package/dist/collection/collection-manifest.json +2 -1
- package/dist/collection/components/avatar/avatar.css +8 -0
- package/dist/collection/components/avatar/avatar.js +16 -0
- package/dist/collection/components/avatar/avatar.js.map +1 -1
- package/dist/collection/components/button/button.css +8 -0
- package/dist/collection/components/button/button.js +18 -0
- package/dist/collection/components/button/button.js.map +1 -1
- package/dist/collection/components/checkbox/checkbox.css +8 -0
- package/dist/collection/components/checkbox/checkbox.js +18 -0
- package/dist/collection/components/checkbox/checkbox.js.map +1 -1
- package/dist/collection/components/checkgroup/checkgroup.css +605 -0
- package/dist/collection/components/checkgroup/checkgroup.js +197 -0
- package/dist/collection/components/checkgroup/checkgroup.js.map +1 -0
- package/dist/collection/components/dropdown/dropdown.css +8 -0
- package/dist/collection/components/dropdown/dropdown.js +3 -1
- package/dist/collection/components/dropdown/dropdown.js.map +1 -1
- package/dist/collection/components/icon/icon.css +8 -0
- package/dist/collection/components/icon/icon.js +15 -1
- package/dist/collection/components/icon/icon.js.map +1 -1
- package/dist/collection/components/input/input.css +8 -0
- package/dist/collection/components/input/input.js +47 -1
- package/dist/collection/components/input/input.js.map +1 -1
- package/dist/collection/components/item/item.css +8 -0
- package/dist/collection/components/item/item.js +65 -19
- package/dist/collection/components/item/item.js.map +1 -1
- package/dist/collection/components/list/list.css +8 -0
- package/dist/collection/components/list/list.js +7 -1
- package/dist/collection/components/list/list.js.map +1 -1
- package/dist/collection/components/loading/loading.css +8 -0
- package/dist/collection/components/loading/loading.js +9 -1
- package/dist/collection/components/loading/loading.js.map +1 -1
- package/dist/collection/components/message/message.css +8 -0
- package/dist/collection/components/message/message.js +15 -1
- package/dist/collection/components/message/message.js.map +1 -1
- package/dist/collection/components/radio/radio.css +8 -0
- package/dist/collection/components/radio/radio.js +17 -1
- package/dist/collection/components/radio/radio.js.map +1 -1
- package/dist/collection/components/select/select.css +8 -0
- package/dist/collection/components/select/select.js +20 -2
- package/dist/collection/components/select/select.js.map +1 -1
- package/dist/collection/components/switch/switch.css +8 -0
- package/dist/collection/components/switch/switch.js +30 -5
- package/dist/collection/components/switch/switch.js.map +1 -1
- package/dist/collection/components/tag/tag.css +8 -0
- package/dist/collection/components/tag/tag.js +17 -1
- package/dist/collection/components/tag/tag.js.map +1 -1
- package/dist/collection/components/textarea/textarea.css +8 -0
- package/dist/collection/components/textarea/textarea.js +19 -1
- package/dist/collection/components/textarea/textarea.js.map +1 -1
- package/dist/collection/components/upload/upload.css +8 -0
- package/dist/collection/components/upload/upload.js +13 -3
- package/dist/collection/components/upload/upload.js.map +1 -1
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/pages/components/checkgroup/index.js +20 -0
- package/dist/collection/pages/components/item/index.js +1 -1
- package/dist/collection/pages/components/switch/index.js +1 -1
- package/dist/collection/pages/scripts/menu.js +17 -2
- package/dist/collection/utils/inherited-attributes.js.map +1 -1
- package/dist/collection/utils/interfaces.js.map +1 -1
- package/dist/collection/utils/unique-id-generator.js.map +1 -1
- package/dist/components/br-avatar.js +1 -1
- package/dist/components/br-avatar.js.map +1 -1
- package/dist/components/br-button.js +1 -1
- package/dist/components/br-checkbox.js +1 -1
- package/dist/components/br-checkgroup.d.ts +11 -0
- package/dist/components/br-checkgroup.js +6 -0
- package/dist/components/br-checkgroup.js.map +1 -0
- package/dist/components/br-dropdown.js +1 -1
- package/dist/components/br-dropdown.js.map +1 -1
- package/dist/components/br-icon.js +1 -1
- package/dist/components/br-input.js +1 -1
- package/dist/components/br-item.js +1 -1
- package/dist/components/br-item.js.map +1 -1
- package/dist/components/br-list.js +1 -1
- package/dist/components/br-loading.js +1 -1
- package/dist/components/br-loading.js.map +1 -1
- package/dist/components/br-message.js +1 -1
- package/dist/components/br-message.js.map +1 -1
- package/dist/components/br-radio.js +1 -1
- package/dist/components/br-select.js +1 -1
- package/dist/components/br-select.js.map +1 -1
- package/dist/components/br-switch.js +1 -1
- package/dist/components/br-switch.js.map +1 -1
- package/dist/components/br-tag.js +1 -1
- package/dist/components/br-tag.js.map +1 -1
- package/dist/components/br-textarea.js +1 -1
- package/dist/components/br-textarea.js.map +1 -1
- package/dist/components/br-upload.js +1 -1
- package/dist/components/br-upload.js.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/p-126ad66d.js +17 -0
- package/dist/components/p-126ad66d.js.map +1 -0
- package/dist/components/p-184a3074.js +6 -0
- package/dist/components/p-184a3074.js.map +1 -0
- package/dist/components/p-5cb170a7.js +6 -0
- package/dist/components/p-5cb170a7.js.map +1 -0
- package/dist/components/p-65616dbd.js +7 -0
- package/dist/components/p-65616dbd.js.map +1 -0
- package/dist/components/p-65c54cc8.js +6 -0
- package/dist/components/p-65c54cc8.js.map +1 -0
- package/dist/components/p-a6dcabb0.js +6 -0
- package/dist/components/{p-62776355.js.map → p-a6dcabb0.js.map} +1 -1
- package/dist/components/p-ace62688.js +6 -0
- package/dist/components/p-ace62688.js.map +1 -0
- package/dist/esm/br-avatar.entry.js +2 -2
- package/dist/esm/br-avatar.entry.js.map +1 -1
- package/dist/esm/br-button_2.entry.js +175 -56
- package/dist/esm/br-button_2.entry.js.map +1 -1
- package/dist/esm/br-checkbox.entry.js +72 -0
- package/dist/esm/br-checkbox.entry.js.map +1 -0
- package/dist/esm/br-checkgroup.entry.js +97 -0
- package/dist/esm/br-checkgroup.entry.js.map +1 -0
- package/dist/esm/br-dropdown.entry.js +3 -3
- package/dist/esm/br-dropdown.entry.js.map +1 -1
- package/dist/esm/br-input_3.entry.js +278 -0
- package/dist/esm/br-input_3.entry.js.map +1 -0
- package/dist/esm/br-item.entry.js +40 -20
- package/dist/esm/br-item.entry.js.map +1 -1
- package/dist/esm/br-loading.entry.js +3 -3
- package/dist/esm/br-loading.entry.js.map +1 -1
- package/dist/esm/br-message.entry.js +3 -3
- package/dist/esm/br-message.entry.js.map +1 -1
- package/dist/esm/br-select.entry.js +4 -4
- package/dist/esm/br-select.entry.js.map +1 -1
- package/dist/esm/br-switch.entry.js +9 -6
- package/dist/esm/br-switch.entry.js.map +1 -1
- package/dist/esm/br-tag.entry.js +3 -3
- package/dist/esm/br-tag.entry.js.map +1 -1
- package/dist/esm/br-textarea.entry.js +3 -3
- package/dist/esm/br-textarea.entry.js.map +1 -1
- package/dist/esm/br-upload.entry.js +3 -3
- package/dist/esm/br-upload.entry.js.map +1 -1
- package/dist/esm/{index-14721f44.js → index-45af9b53.js} +856 -621
- package/dist/esm/index-45af9b53.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/webcomponents.js +4 -4
- package/dist/esm/webcomponents.js.map +1 -1
- package/dist/esm-es5/br-avatar.entry.js +1 -1
- package/dist/esm-es5/br-avatar.entry.js.map +1 -1
- package/dist/esm-es5/br-button_2.entry.js +4 -4
- package/dist/esm-es5/br-button_2.entry.js.map +1 -1
- package/dist/esm-es5/br-checkbox.entry.js +6 -0
- package/dist/esm-es5/br-checkbox.entry.js.map +1 -0
- package/dist/esm-es5/br-checkgroup.entry.js +6 -0
- package/dist/esm-es5/br-checkgroup.entry.js.map +1 -0
- package/dist/esm-es5/br-dropdown.entry.js +2 -2
- package/dist/esm-es5/br-dropdown.entry.js.map +1 -1
- package/dist/esm-es5/br-input_3.entry.js +6 -0
- package/dist/esm-es5/br-input_3.entry.js.map +1 -0
- package/dist/esm-es5/br-item.entry.js +1 -1
- package/dist/esm-es5/br-item.entry.js.map +1 -1
- package/dist/esm-es5/br-loading.entry.js +1 -1
- package/dist/esm-es5/br-loading.entry.js.map +1 -1
- package/dist/esm-es5/br-message.entry.js +1 -1
- package/dist/esm-es5/br-message.entry.js.map +1 -1
- package/dist/esm-es5/br-select.entry.js +1 -1
- package/dist/esm-es5/br-select.entry.js.map +1 -1
- package/dist/esm-es5/br-switch.entry.js +1 -1
- package/dist/esm-es5/br-switch.entry.js.map +1 -1
- package/dist/esm-es5/br-tag.entry.js +1 -1
- package/dist/esm-es5/br-tag.entry.js.map +1 -1
- package/dist/esm-es5/br-textarea.entry.js +2 -2
- package/dist/esm-es5/br-textarea.entry.js.map +1 -1
- package/dist/esm-es5/br-upload.entry.js +1 -1
- package/dist/esm-es5/br-upload.entry.js.map +1 -1
- package/dist/esm-es5/index-45af9b53.js +6 -0
- package/dist/esm-es5/index-45af9b53.js.map +1 -0
- package/dist/esm-es5/loader.js +2 -2
- package/dist/esm-es5/loader.js.map +1 -1
- package/dist/esm-es5/webcomponents.js +2 -2
- package/dist/esm-es5/webcomponents.js.map +1 -1
- package/dist/types/components/checkgroup/checkgroup.d.ts +52 -0
- package/dist/types/components/item/item.d.ts +5 -3
- package/dist/types/components/switch/switch.d.ts +2 -1
- package/dist/types/components/upload/upload.d.ts +2 -2
- package/dist/types/components.d.ts +63 -6
- package/dist/webcomponents/p-04a3d24e.system.entry.js +6 -0
- package/dist/webcomponents/{p-64f4ecea.system.entry.js.map → p-04a3d24e.system.entry.js.map} +1 -1
- package/dist/webcomponents/p-057dcb7c.system.entry.js +6 -0
- package/dist/webcomponents/p-057dcb7c.system.entry.js.map +1 -0
- package/dist/webcomponents/p-19b77f11.entry.js +6 -0
- package/dist/webcomponents/{p-b6af61ad.entry.js.map → p-19b77f11.entry.js.map} +1 -1
- package/dist/webcomponents/p-1acbc680.entry.js +6 -0
- package/dist/webcomponents/p-1acbc680.entry.js.map +1 -0
- package/dist/webcomponents/p-25d82c85.system.entry.js +6 -0
- package/dist/webcomponents/p-25d82c85.system.entry.js.map +1 -0
- package/dist/webcomponents/p-27b820ac.system.entry.js +6 -0
- package/dist/webcomponents/p-27b820ac.system.entry.js.map +1 -0
- package/dist/webcomponents/p-2b0430f4.entry.js +6 -0
- package/dist/webcomponents/p-2b0430f4.entry.js.map +1 -0
- package/dist/webcomponents/p-2ff5f694.system.entry.js +6 -0
- package/dist/webcomponents/p-2ff5f694.system.entry.js.map +1 -0
- package/dist/webcomponents/p-357e1105.system.entry.js +6 -0
- package/dist/webcomponents/p-357e1105.system.entry.js.map +1 -0
- package/dist/webcomponents/p-35f07e4b.entry.js +6 -0
- package/dist/webcomponents/p-35f07e4b.entry.js.map +1 -0
- package/dist/webcomponents/p-3e449bd5.system.entry.js +6 -0
- package/dist/webcomponents/p-3e449bd5.system.entry.js.map +1 -0
- package/dist/webcomponents/p-46a75920.system.js +6 -0
- package/dist/webcomponents/p-46a75920.system.js.map +1 -0
- package/dist/webcomponents/p-491cdd00.entry.js +6 -0
- package/dist/webcomponents/p-491cdd00.entry.js.map +1 -0
- package/dist/webcomponents/p-52e5bcdd.entry.js +6 -0
- package/dist/webcomponents/p-52e5bcdd.entry.js.map +1 -0
- package/dist/webcomponents/p-60879543.system.entry.js +6 -0
- package/dist/webcomponents/{p-36e48582.system.entry.js.map → p-60879543.system.entry.js.map} +1 -1
- package/dist/webcomponents/p-6bfb8eb6.entry.js +6 -0
- package/dist/webcomponents/{p-aaa17439.entry.js.map → p-6bfb8eb6.entry.js.map} +1 -1
- package/dist/webcomponents/p-6d0d2846.system.js +7 -0
- package/dist/webcomponents/p-6d0d2846.system.js.map +1 -0
- package/dist/webcomponents/p-7c3554a7.system.entry.js +17 -0
- package/dist/webcomponents/p-7c3554a7.system.entry.js.map +1 -0
- package/dist/webcomponents/p-8fd11f97.system.entry.js +6 -0
- package/dist/webcomponents/p-8fd11f97.system.entry.js.map +1 -0
- package/dist/webcomponents/p-907fab5d.entry.js +6 -0
- package/dist/webcomponents/p-907fab5d.entry.js.map +1 -0
- package/dist/webcomponents/p-929db2b8.entry.js +17 -0
- package/dist/webcomponents/p-929db2b8.entry.js.map +1 -0
- package/dist/webcomponents/p-98e6f0c1.system.entry.js +6 -0
- package/dist/webcomponents/p-98e6f0c1.system.entry.js.map +1 -0
- package/dist/webcomponents/p-9b0f20d7.entry.js +6 -0
- package/dist/webcomponents/p-9b0f20d7.entry.js.map +1 -0
- package/dist/webcomponents/p-ad5a7b8b.system.entry.js +6 -0
- package/dist/webcomponents/p-ad5a7b8b.system.entry.js.map +1 -0
- package/dist/webcomponents/p-c3811f09.js +7 -0
- package/dist/webcomponents/p-c3811f09.js.map +1 -0
- package/dist/webcomponents/p-c6a9c8ac.entry.js +6 -0
- package/dist/webcomponents/p-c6a9c8ac.entry.js.map +1 -0
- package/dist/webcomponents/p-d46495d5.system.entry.js +6 -0
- package/dist/webcomponents/p-d46495d5.system.entry.js.map +1 -0
- package/dist/webcomponents/p-dc3d284a.entry.js +6 -0
- package/dist/webcomponents/p-dc3d284a.entry.js.map +1 -0
- package/dist/webcomponents/p-e98418a4.entry.js +6 -0
- package/dist/webcomponents/p-e98418a4.entry.js.map +1 -0
- package/dist/webcomponents/p-ef89bcc9.system.entry.js +6 -0
- package/dist/webcomponents/p-ef89bcc9.system.entry.js.map +1 -0
- package/dist/webcomponents/p-fc11eac9.entry.js +6 -0
- package/dist/webcomponents/p-fc11eac9.entry.js.map +1 -0
- package/dist/webcomponents/webcomponents.esm.js +1 -1
- package/dist/webcomponents/webcomponents.esm.js.map +1 -1
- package/dist/webcomponents/webcomponents.js +1 -1
- package/hydrate/index.js +1081 -586
- package/hydrate/index.mjs +1081 -586
- package/package.json +2 -2
- package/vscode-data.json +27 -2
- package/dist/cjs/br-checkbox_4.cjs.entry.js +0 -346
- package/dist/cjs/br-checkbox_4.cjs.entry.js.map +0 -1
- package/dist/cjs/index-86e7422e.js.map +0 -1
- package/dist/collection/scripts/menu.js +0 -151
- package/dist/components/p-22068d3c.js +0 -6
- package/dist/components/p-22068d3c.js.map +0 -1
- package/dist/components/p-62776355.js +0 -6
- package/dist/components/p-67617725.js +0 -6
- package/dist/components/p-67617725.js.map +0 -1
- package/dist/components/p-7882cb21.js +0 -6
- package/dist/components/p-7882cb21.js.map +0 -1
- package/dist/components/p-7aca304a.js +0 -6
- package/dist/components/p-7aca304a.js.map +0 -1
- package/dist/components/p-b4b55ab7.js +0 -17
- package/dist/components/p-b4b55ab7.js.map +0 -1
- package/dist/components/p-fabd9bdd.js +0 -7
- package/dist/components/p-fabd9bdd.js.map +0 -1
- package/dist/esm/br-checkbox_4.entry.js +0 -339
- package/dist/esm/br-checkbox_4.entry.js.map +0 -1
- package/dist/esm/index-14721f44.js.map +0 -1
- package/dist/esm-es5/br-checkbox_4.entry.js +0 -6
- package/dist/esm-es5/br-checkbox_4.entry.js.map +0 -1
- package/dist/esm-es5/index-14721f44.js +0 -6
- package/dist/esm-es5/index-14721f44.js.map +0 -1
- package/dist/playwright.config.js +0 -39
- package/dist/playwright.config.js.map +0 -1
- package/dist/types/builds/govbr-ds/bibliotecas/wbc/govbr-ds-wbc/packages/webcomponents/.stencil/playwright.config.d.ts +0 -5
- package/dist/webcomponents/p-11e8c72f.entry.js +0 -6
- package/dist/webcomponents/p-11e8c72f.entry.js.map +0 -1
- package/dist/webcomponents/p-1accc2ab.system.entry.js +0 -6
- package/dist/webcomponents/p-1accc2ab.system.entry.js.map +0 -1
- package/dist/webcomponents/p-36e48582.system.entry.js +0 -6
- package/dist/webcomponents/p-37440256.entry.js +0 -6
- package/dist/webcomponents/p-37440256.entry.js.map +0 -1
- package/dist/webcomponents/p-44554246.system.entry.js +0 -6
- package/dist/webcomponents/p-44554246.system.entry.js.map +0 -1
- package/dist/webcomponents/p-55f80a96.system.entry.js +0 -6
- package/dist/webcomponents/p-55f80a96.system.entry.js.map +0 -1
- package/dist/webcomponents/p-563bea26.entry.js +0 -6
- package/dist/webcomponents/p-563bea26.entry.js.map +0 -1
- package/dist/webcomponents/p-58d37ac2.entry.js +0 -6
- package/dist/webcomponents/p-58d37ac2.entry.js.map +0 -1
- package/dist/webcomponents/p-64f4ecea.system.entry.js +0 -6
- package/dist/webcomponents/p-703a633a.system.js +0 -6
- package/dist/webcomponents/p-703a633a.system.js.map +0 -1
- package/dist/webcomponents/p-76326737.system.entry.js +0 -6
- package/dist/webcomponents/p-76326737.system.entry.js.map +0 -1
- package/dist/webcomponents/p-797376a2.system.entry.js +0 -17
- package/dist/webcomponents/p-797376a2.system.entry.js.map +0 -1
- package/dist/webcomponents/p-7f8c5016.entry.js +0 -6
- package/dist/webcomponents/p-7f8c5016.entry.js.map +0 -1
- package/dist/webcomponents/p-a44ad074.entry.js +0 -6
- package/dist/webcomponents/p-a44ad074.entry.js.map +0 -1
- package/dist/webcomponents/p-aaa17439.entry.js +0 -6
- package/dist/webcomponents/p-aaca726d.system.js +0 -7
- package/dist/webcomponents/p-aaca726d.system.js.map +0 -1
- package/dist/webcomponents/p-aec894fa.system.entry.js +0 -6
- package/dist/webcomponents/p-aec894fa.system.entry.js.map +0 -1
- package/dist/webcomponents/p-b16b1de5.entry.js +0 -6
- package/dist/webcomponents/p-b16b1de5.entry.js.map +0 -1
- package/dist/webcomponents/p-b6af61ad.entry.js +0 -6
- package/dist/webcomponents/p-c696c385.entry.js +0 -17
- package/dist/webcomponents/p-c696c385.entry.js.map +0 -1
- package/dist/webcomponents/p-d1e0a8ff.entry.js +0 -6
- package/dist/webcomponents/p-d1e0a8ff.entry.js.map +0 -1
- package/dist/webcomponents/p-d31732da.system.entry.js +0 -6
- package/dist/webcomponents/p-d31732da.system.entry.js.map +0 -1
- package/dist/webcomponents/p-db4b272c.system.entry.js +0 -6
- package/dist/webcomponents/p-db4b272c.system.entry.js.map +0 -1
- package/dist/webcomponents/p-dbd35139.js +0 -7
- package/dist/webcomponents/p-dbd35139.js.map +0 -1
- package/dist/webcomponents/p-e76f7113.system.entry.js +0 -6
- package/dist/webcomponents/p-e76f7113.system.entry.js.map +0 -1
- package/dist/webcomponents/p-f05d11f7.entry.js +0 -6
- package/dist/webcomponents/p-f05d11f7.entry.js.map +0 -1
- package/dist/webcomponents/p-f5412db6.system.entry.js +0 -6
- package/dist/webcomponents/p-f5412db6.system.entry.js.map +0 -1
|
@@ -44,7 +44,7 @@ export class Message {
|
|
|
44
44
|
}
|
|
45
45
|
render() {
|
|
46
46
|
var _a, _b;
|
|
47
|
-
return (h(Host, { key: '
|
|
47
|
+
return (h(Host, { key: 'dc426f384cdacb6c7318ab33f57cf7f20577cc79' }, this.isFeedback ? (h("div", { class: "mb-3" }, h("span", Object.assign({ class: `feedback ${this.state}`, role: "alert" }, this.inheritedAttributes), this.showIcon ? h("br-icon", { class: "icon-space", "icon-name": this.checkIconState() }) : null, ((_a = this.message) === null || _a === void 0 ? void 0 : _a.length) === 0 ? h("slot", null) : this.message))) : (h("div", Object.assign({ class: this.getCssClassMap(), role: "alert" }, this.inheritedAttributes), this.showIcon && (h("div", { class: "icon" }, h("br-icon", { "icon-name": this.checkIconState(), height: "20", "aria-hidden": "true" }))), h("div", { class: "content", role: "alert" }, ((_b = this.message) === null || _b === void 0 ? void 0 : _b.length) === 0 ? (h("div", null, this.messageTitle && h("strong", null, this.messageTitle), this.messageTitle && !this.isInline && h("br", null), h("slot", null))) : (h("div", null, h("span", { class: "message-title mr-1" }, this.messageTitle), h("span", { class: "message-body" }, this.message)))), this.isClosable && !this.isFeedback && (h("div", { class: "close" }, h("br-button", { shape: "circle", type: "button", "aria-label": "Fechar a mensagem", onClick: this.dismissHandler }, h("br-icon", { "icon-name": "fa-solid:times", "aria-hidden": "true" }))))))));
|
|
48
48
|
}
|
|
49
49
|
static get is() { return "br-message"; }
|
|
50
50
|
static get encapsulation() { return "shadow"; }
|
|
@@ -75,6 +75,8 @@ export class Message {
|
|
|
75
75
|
"tags": [],
|
|
76
76
|
"text": "Define o t\u00EDtulo da mensagem, que \u00E9 exibido no in\u00EDcio, acima da mensagem principal.\nEste t\u00EDtulo serve para destacar a mensagem textual. N\u00E3o \u00E9 aplic\u00E1vel para mensagens do tipo feedback."
|
|
77
77
|
},
|
|
78
|
+
"getter": false,
|
|
79
|
+
"setter": false,
|
|
78
80
|
"attribute": "message-title",
|
|
79
81
|
"reflect": true
|
|
80
82
|
},
|
|
@@ -92,6 +94,8 @@ export class Message {
|
|
|
92
94
|
"tags": [],
|
|
93
95
|
"text": "Define o texto da mensagem que ser\u00E1 exibido.\nEste \u00E9 o conte\u00FAdo principal da mensagem. A propriedade `message` \u00E9 obrigat\u00F3ria e deve ser fornecida para que a mensagem apare\u00E7a."
|
|
94
96
|
},
|
|
97
|
+
"getter": false,
|
|
98
|
+
"setter": false,
|
|
95
99
|
"attribute": "message",
|
|
96
100
|
"reflect": true
|
|
97
101
|
},
|
|
@@ -109,6 +113,8 @@ export class Message {
|
|
|
109
113
|
"tags": [],
|
|
110
114
|
"text": "Se definido como verdadeiro, o t\u00EDtulo da mensagem ser\u00E1 exibido na mesma linha que a mensagem principal.\nIsso pode ser \u00FAtil para criar um layout onde o t\u00EDtulo e a mensagem est\u00E3o alinhados horizontalmente."
|
|
111
115
|
},
|
|
116
|
+
"getter": false,
|
|
117
|
+
"setter": false,
|
|
112
118
|
"attribute": "is-inline",
|
|
113
119
|
"reflect": true,
|
|
114
120
|
"defaultValue": "false"
|
|
@@ -127,6 +133,8 @@ export class Message {
|
|
|
127
133
|
"tags": [],
|
|
128
134
|
"text": "Se definido como verdadeiro, um bot\u00E3o de fechar ser\u00E1 exibido para permitir que o usu\u00E1rio feche a mensagem.\nEste recurso n\u00E3o est\u00E1 dispon\u00EDvel para mensagens do tipo feedback."
|
|
129
135
|
},
|
|
136
|
+
"getter": false,
|
|
137
|
+
"setter": false,
|
|
130
138
|
"attribute": "is-closable",
|
|
131
139
|
"reflect": true,
|
|
132
140
|
"defaultValue": "false"
|
|
@@ -145,6 +153,8 @@ export class Message {
|
|
|
145
153
|
"tags": [],
|
|
146
154
|
"text": "Se definido como verdadeiro, um \u00EDcone associado \u00E0 mensagem ser\u00E1 exibido.\nUse esta propriedade para mostrar ou ocultar o \u00EDcone da mensagem conforme necess\u00E1rio."
|
|
147
155
|
},
|
|
156
|
+
"getter": false,
|
|
157
|
+
"setter": false,
|
|
148
158
|
"attribute": "show-icon",
|
|
149
159
|
"reflect": true,
|
|
150
160
|
"defaultValue": "false"
|
|
@@ -163,6 +173,8 @@ export class Message {
|
|
|
163
173
|
"tags": [],
|
|
164
174
|
"text": "Define se a mensagem \u00E9 do tipo feedback, geralmente usada para fornecer contexto adicional sobre a\u00E7\u00F5es do usu\u00E1rio.\nExemplos incluem mensagens de valida\u00E7\u00E3o em campos de formul\u00E1rio. N\u00E3o dispon\u00EDvel para mensagens que n\u00E3o sejam de feedback."
|
|
165
175
|
},
|
|
176
|
+
"getter": false,
|
|
177
|
+
"setter": false,
|
|
166
178
|
"attribute": "is-feedback",
|
|
167
179
|
"reflect": true,
|
|
168
180
|
"defaultValue": "false"
|
|
@@ -181,6 +193,8 @@ export class Message {
|
|
|
181
193
|
"tags": [],
|
|
182
194
|
"text": "Define o estado do message.\nOs poss\u00EDveis valores s\u00E3o:\n- 'info': Mensagem informativa.\n- 'warning': Mensagem de aviso.\n- 'danger': Mensagem de erro ou alerta.\n- 'success': Mensagem de sucesso.\nO valor padr\u00E3o \u00E9 'info'."
|
|
183
195
|
},
|
|
196
|
+
"getter": false,
|
|
197
|
+
"setter": false,
|
|
184
198
|
"attribute": "state",
|
|
185
199
|
"reflect": true,
|
|
186
200
|
"defaultValue": "'info'"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/components/message/message.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AttachInternals, Component, Element, Event, EventEmitter, Host, Prop, h } from '@stencil/core'\nimport { Attributes, inheritAriaAttributes } from '../../utils/inherited-attributes'\nimport { CssClassMap } from '../../utils/interfaces'\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/message?tab=designer).\n *\n * @slot default - Utilizado para inserir qualquer conteúdo que será exibido no corpo da mensagem.\n */\n@Component({\n tag: 'br-message',\n styleUrl: 'message.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Message {\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: HTMLBrMessageElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Define o título da mensagem, que é exibido no início, acima da mensagem principal.\n * Este título serve para destacar a mensagem textual. Não é aplicável para mensagens do tipo feedback.\n */\n @Prop({ reflect: true }) messageTitle: string\n\n /**\n * Define o texto da mensagem que será exibido.\n * Este é o conteúdo principal da mensagem. A propriedade `message` é obrigatória e deve ser fornecida para que a mensagem apareça.\n */\n @Prop({ reflect: true }) message!: string\n\n /**\n * Se definido como verdadeiro, o título da mensagem será exibido na mesma linha que a mensagem principal.\n * Isso pode ser útil para criar um layout onde o título e a mensagem estão alinhados horizontalmente.\n */\n @Prop({ reflect: true }) isInline: boolean = false\n\n /**\n * Se definido como verdadeiro, um botão de fechar será exibido para permitir que o usuário feche a mensagem.\n * Este recurso não está disponível para mensagens do tipo feedback.\n */\n @Prop({ reflect: true }) isClosable: boolean = false\n\n /**\n * Se definido como verdadeiro, um ícone associado à mensagem será exibido.\n * Use esta propriedade para mostrar ou ocultar o ícone da mensagem conforme necessário.\n */\n @Prop({ reflect: true }) showIcon: boolean = false\n\n /**\n * Define se a mensagem é do tipo feedback, geralmente usada para fornecer contexto adicional sobre ações do usuário.\n * Exemplos incluem mensagens de validação em campos de formulário. Não disponível para mensagens que não sejam de feedback.\n */\n @Prop({ reflect: true }) isFeedback: boolean = false\n\n /**\n * Define o estado do message.\n * Os possíveis valores são:\n * - 'info': Mensagem informativa.\n * - 'warning': Mensagem de aviso.\n * - 'danger': Mensagem de erro ou alerta.\n * - 'success': Mensagem de sucesso.\n * O valor padrão é 'info'.\n */\n @Prop({ reflect: true }) state: 'info' | 'warning' | 'danger' | 'success' = 'info'\n\n componentWillLoad() {\n this.inheritedAttributes = inheritAriaAttributes(this.el)\n }\n\n /** Evento emitido quando o usuário fecha a mensagem, se closable for true. */\n @Event() brDidClose: EventEmitter\n private readonly dismissHandler = () => {\n this.brDidClose.emit()\n this.el.remove()\n }\n\n private checkIconState() {\n const iconMap = {\n success: 'fa-solid:check-circle',\n warning: 'fa-solid:exclamation-triangle',\n danger: 'fa-solid:times-circle',\n info: 'fa-solid:info-circle',\n }\n return iconMap[this.state] || 'check-circle' // Valor padrão se não encontrado\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-message': true,\n [this.state]: true,\n }\n }\n\n private inheritedAttributes: Attributes = {}\n\n render() {\n return (\n <Host>\n {this.isFeedback ? (\n <div class=\"mb-3\">\n <span class={`feedback ${this.state}`} role=\"alert\" {...this.inheritedAttributes}>\n {this.showIcon ? <br-icon class=\"icon-space\" icon-name={this.checkIconState()}></br-icon> : null}\n {this.message?.length === 0 ? <slot></slot> : this.message}\n </span>\n </div>\n ) : (\n <div class={this.getCssClassMap()} role=\"alert\" {...this.inheritedAttributes}>\n {this.showIcon && (\n <div class=\"icon\">\n <br-icon icon-name={this.checkIconState()} height=\"20\" aria-hidden=\"true\"></br-icon>\n </div>\n )}\n <div class=\"content\" role=\"alert\">\n {this.message?.length === 0 ? (\n <div>\n {this.messageTitle && <strong>{this.messageTitle}</strong>}\n {this.messageTitle && !this.isInline && <br />}\n <slot></slot>\n </div>\n ) : (\n <div>\n <span class=\"message-title mr-1\">{this.messageTitle}</span>\n <span class=\"message-body\">{this.message}</span>\n </div>\n )}\n </div>\n {this.isClosable && !this.isFeedback && (\n <div class=\"close\">\n <br-button shape=\"circle\" type=\"button\" aria-label=\"Fechar a mensagem\" onClick={this.dismissHandler}>\n <br-icon icon-name=\"fa-solid:times\" aria-hidden=\"true\"></br-icon>\n </br-button>\n </div>\n )}\n </div>\n )}\n </Host>\n )\n }\n}\n"]}
|
|
@@ -213,6 +213,10 @@ textarea {
|
|
|
213
213
|
margin-right: var(--spacing-scale-half) !important;
|
|
214
214
|
}
|
|
215
215
|
|
|
216
|
+
.mb-1 {
|
|
217
|
+
margin-bottom: var(--spacing-scale-half) !important;
|
|
218
|
+
}
|
|
219
|
+
|
|
216
220
|
.mr-2 {
|
|
217
221
|
margin-right: var(--spacing-scale-base) !important;
|
|
218
222
|
}
|
|
@@ -221,6 +225,10 @@ textarea {
|
|
|
221
225
|
margin-right: calc(var(--spacing-scale-base) * -1) !important;
|
|
222
226
|
}
|
|
223
227
|
|
|
228
|
+
.ml-2 {
|
|
229
|
+
margin-left: var(--spacing-scale-base) !important;
|
|
230
|
+
}
|
|
231
|
+
|
|
224
232
|
.mb-3 {
|
|
225
233
|
margin-bottom: var(--spacing-scale-2x) !important;
|
|
226
234
|
}
|
|
@@ -55,7 +55,7 @@ export class Radio {
|
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
render() {
|
|
58
|
-
return (h(Host, { key: '
|
|
58
|
+
return (h(Host, { key: '9c2fce1fe4484a7fcf4baceb63b5ffc5d15224c0', "aria-disabled": this.disabled ? 'true' : null }, h("div", { key: '65a3512a41856672ed1f3045a70c47d2bd86ff5b', class: this.getCssClassMap() }, h("input", Object.assign({ key: '79b76010c2cb36dcf32232f83f72e5e96f37df14', part: "radio-input", "aria-label": this.label, type: "radio", id: this.customId, name: this.name, checked: this.checked, disabled: this.disabled, value: this.value, onClick: this.onClick, onChange: this.onChange }, this.inheritedAttributes)), h("label", { key: '9c1f344b1b2b1f567cb6ebccfca1b0ded104f4c3', part: "radio-label", htmlFor: this.customId }, h("slot", { key: '69576164d7361abe4b0478c3a1fa97267ecb7aa6' }, this.label)))));
|
|
59
59
|
}
|
|
60
60
|
static get is() { return "br-radio"; }
|
|
61
61
|
static get encapsulation() { return "shadow"; }
|
|
@@ -86,6 +86,8 @@ export class Radio {
|
|
|
86
86
|
"tags": [],
|
|
87
87
|
"text": "Define o estado de sele\u00E7\u00E3o do radio.\nSe definido como verdadeiro, o radio estar\u00E1 marcado. Caso contr\u00E1rio, estar\u00E1 desmarcado."
|
|
88
88
|
},
|
|
89
|
+
"getter": false,
|
|
90
|
+
"setter": false,
|
|
89
91
|
"attribute": "checked",
|
|
90
92
|
"reflect": true,
|
|
91
93
|
"defaultValue": "false"
|
|
@@ -104,6 +106,8 @@ export class Radio {
|
|
|
104
106
|
"tags": [],
|
|
105
107
|
"text": "Desativa o radio, tornando-o n\u00E3o interativo."
|
|
106
108
|
},
|
|
109
|
+
"getter": false,
|
|
110
|
+
"setter": false,
|
|
107
111
|
"attribute": "disabled",
|
|
108
112
|
"reflect": true,
|
|
109
113
|
"defaultValue": "false"
|
|
@@ -122,6 +126,8 @@ export class Radio {
|
|
|
122
126
|
"tags": [],
|
|
123
127
|
"text": "Indica a validade do radio.\nValores poss\u00EDveis:\n- 'valid': O radio \u00E9 considerado v\u00E1lido.\n- 'invalid': O radio \u00E9 considerado inv\u00E1lido.\nSe n\u00E3o for especificado, o valor padr\u00E3o \u00E9 `null`, indicando que a validade n\u00E3o foi definida."
|
|
124
128
|
},
|
|
129
|
+
"getter": false,
|
|
130
|
+
"setter": false,
|
|
125
131
|
"attribute": "state",
|
|
126
132
|
"reflect": true
|
|
127
133
|
},
|
|
@@ -139,6 +145,8 @@ export class Radio {
|
|
|
139
145
|
"tags": [],
|
|
140
146
|
"text": "Define se o label associado ao radio deve ser oculto.\nSe definido como verdadeiro, o texto do label ser\u00E1 oculto, mas o radio ainda estar\u00E1 vis\u00EDvel e funcional."
|
|
141
147
|
},
|
|
148
|
+
"getter": false,
|
|
149
|
+
"setter": false,
|
|
142
150
|
"attribute": "has-hidden-label",
|
|
143
151
|
"reflect": true,
|
|
144
152
|
"defaultValue": "false"
|
|
@@ -157,6 +165,8 @@ export class Radio {
|
|
|
157
165
|
"tags": [],
|
|
158
166
|
"text": "Define o nome do radio, que \u00E9 utilizado para agrupar radios em formul\u00E1rios e identificar o campo.\nO valor \u00E9 obrigat\u00F3rio e deve ser fornecido para garantir o correto funcionamento em formul\u00E1rios."
|
|
159
167
|
},
|
|
168
|
+
"getter": false,
|
|
169
|
+
"setter": false,
|
|
160
170
|
"attribute": "name",
|
|
161
171
|
"reflect": true
|
|
162
172
|
},
|
|
@@ -174,6 +184,8 @@ export class Radio {
|
|
|
174
184
|
"tags": [],
|
|
175
185
|
"text": "Texto descritivo exibido \u00E0 direita do radio.\nCaso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade ser\u00E1 ignorado."
|
|
176
186
|
},
|
|
187
|
+
"getter": false,
|
|
188
|
+
"setter": false,
|
|
177
189
|
"attribute": "label",
|
|
178
190
|
"reflect": true
|
|
179
191
|
},
|
|
@@ -191,6 +203,8 @@ export class Radio {
|
|
|
191
203
|
"tags": [],
|
|
192
204
|
"text": "Define o valor associado ao radio quando ele faz parte de um formul\u00E1rio nativo (`<form>`).\nEsse valor \u00E9 enviado com o formul\u00E1rio quando o radio est\u00E1 selecionado.\n**Nota:** Esta propriedade n\u00E3o deve ser utilizada para determinar se o radio est\u00E1 selecionado; para verificar o estado de sele\u00E7\u00E3o, use a propriedade `checked`."
|
|
193
205
|
},
|
|
206
|
+
"getter": false,
|
|
207
|
+
"setter": false,
|
|
194
208
|
"attribute": "value",
|
|
195
209
|
"reflect": true
|
|
196
210
|
},
|
|
@@ -208,6 +222,8 @@ export class Radio {
|
|
|
208
222
|
"tags": [],
|
|
209
223
|
"text": "Identificador \u00FAnico do input.\nCaso n\u00E3o seja fornecido, um ID gerado automaticamente ser\u00E1 usado."
|
|
210
224
|
},
|
|
225
|
+
"getter": false,
|
|
226
|
+
"setter": false,
|
|
211
227
|
"attribute": "id",
|
|
212
228
|
"reflect": true,
|
|
213
229
|
"defaultValue": "`br-input-${uuidv4()}`"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"radio.js","sourceRoot":"","sources":["../../../src/components/radio/radio.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAC/G,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,EAAc,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAGpF;;;;GAIG;AAQH,MAAM,OAAO,KAAK;;QAwFR,wBAAmB,GAAe,EAAE,CAAA;QAE5C;;;WAGG;QACc,YAAO,GAAG,CAAC,KAAiB,EAAE,EAAE;YAC/C,KAAK,CAAC,eAAe,EAAE,CAAA;YACvB,IAAI,CAAC,OAAO,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO,CAAA;QAC3D,CAAC,CAAA;QAED;;WAEG;QACc,aAAQ,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;QACzG,CAAC,CAAA;uBA3F0D,KAAK;wBAKnB,KAAK;;8BAegC,KAAK;;;;wBA0B1B,YAAY,MAAM,EAAE,EAAE;;IAEnF,iBAAiB;QACf,IAAI,CAAC,mBAAmB,GAAG,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC3D,CAAC;IAOD,sCAAsC;IAEtC,aAAa,CAAC,KAAkB;QAC9B,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACzE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACtB,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,OAAO;YAC7B,OAAO,EAAE,IAAI,CAAC,KAAK,KAAK,SAAS;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAA;IACH,CAAC;IAoBD,MAAM;QACJ,OAAO,CACL,EAAC,IAAI,sEAAgB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;YAChD,4DAAK,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE;gBAC/B,4EACE,IAAI,EAAC,aAAa,gBACN,IAAI,CAAC,KAAK,EACtB,IAAI,EAAC,OAAO,EACZ,EAAE,EAAE,IAAI,CAAC,QAAQ,EACjB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IACnB,IAAI,CAAC,mBAAmB,EAC5B;gBACF,8DAAO,IAAI,EAAC,aAAa,EAAC,OAAO,EAAE,IAAI,CAAC,QAAQ;oBAC9C,+DAAO,IAAI,CAAC,KAAK,CAAQ,CACnB,CACJ,CACD,CACR,CAAA;IACH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Listen, Prop } from '@stencil/core'\nimport { v4 as uuidv4 } from 'uuid'\nimport { Attributes, inheritAriaAttributes } from '../../utils/inherited-attributes'\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/radio?tab=designer).\n *\n * @slot default - O texto descritivo pode ser passado por propriedade (label) ou por slot.\n */\n\n@Component({\n tag: 'br-radio',\n styleUrl: 'radio.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Radio {\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: HTMLBrRadioElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Define o estado de seleção do radio.\n * Se definido como verdadeiro, o radio estará marcado. Caso contrário, estará desmarcado.\n */\n @Prop({ reflect: true, mutable: true }) checked: boolean = false\n\n /**\n * Desativa o radio, tornando-o não interativo.\n */\n @Prop({ reflect: true }) disabled: boolean = false\n\n /**\n * Indica a validade do radio.\n * Valores possíveis:\n * - 'valid': O radio é considerado válido.\n * - 'invalid': O radio é considerado inválido.\n * Se não for especificado, o valor padrão é `null`, indicando que a validade não foi definida.\n */\n @Prop({ reflect: true }) state: 'valid' | 'invalid'\n\n /**\n * Define se o label associado ao radio deve ser oculto.\n * Se definido como verdadeiro, o texto do label será oculto, mas o radio ainda estará visível e funcional.\n */\n @Prop({ reflect: true, attribute: 'has-hidden-label' }) hasHiddenLabel: boolean = false\n\n /**\n * Define o nome do radio, que é utilizado para agrupar radios em formulários e identificar o campo.\n * O valor é obrigatório e deve ser fornecido para garantir o correto funcionamento em formulários.\n */\n\n @Prop({ reflect: true }) name!: string\n\n /**\n * Texto descritivo exibido à direita do radio.\n * Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.\n */\n @Prop({ reflect: true }) label: string\n\n /**\n * Define o valor associado ao radio quando ele faz parte de um formulário nativo (`<form>`).\n * Esse valor é enviado com o formulário quando o radio está selecionado.\n * **Nota:** Esta propriedade não deve ser utilizada para determinar se o radio está selecionado; para verificar o estado de seleção, use a propriedade `checked`.\n */\n @Prop({ reflect: true }) value: any\n\n /**\n * Identificador único do input.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true, attribute: 'id' }) customId: string = `br-input-${uuidv4()}`\n\n componentWillLoad() {\n this.inheritedAttributes = inheritAriaAttributes(this.el)\n }\n\n /**\n * Componente teve seu estado \"checked\" alterado\n */\n @Event({ bubbles: true, composed: true }) brDidChange: EventEmitter\n\n // Ouvinte para o evento \"brDidChange\"\n @Listen('brDidChange', { target: 'window' })\n onBrDidChange(event: CustomEvent) {\n if (event.detail.id !== this.customId && event.detail.name === this.name) {\n this.checked = false\n }\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-radio': true,\n valid: this.state === 'valid',\n invalid: this.state === 'invalid',\n disabled: this.disabled,\n 'hidden-label': this.hasHiddenLabel,\n }\n }\n\n private inheritedAttributes: Attributes = {}\n\n /**\n * Handler para o event \"click\"\n * @param event Objeto Event\n */\n private readonly onClick = (event: MouseEvent) => {\n event.stopPropagation()\n this.checked = (event.target as HTMLInputElement).checked\n }\n\n /**\n * Handler para o evento \"change\"\n */\n private readonly onChange = () => {\n this.brDidChange.emit({ id: this.customId, name: this.name, value: this.value, checked: this.checked })\n }\n\n render() {\n return (\n <Host aria-disabled={this.disabled ? 'true' : null}>\n <div class={this.getCssClassMap()}>\n <input\n part=\"radio-input\"\n aria-label={this.label}\n type=\"radio\"\n id={this.customId}\n name={this.name}\n checked={this.checked}\n disabled={this.disabled}\n value={this.value}\n onClick={this.onClick}\n onChange={this.onChange}\n {...this.inheritedAttributes}\n />\n <label part=\"radio-label\" htmlFor={this.customId}>\n <slot>{this.label}</slot>\n </label>\n </div>\n </Host>\n )\n }\n}\n"]}
|
|
@@ -213,6 +213,10 @@ textarea {
|
|
|
213
213
|
margin-right: var(--spacing-scale-half) !important;
|
|
214
214
|
}
|
|
215
215
|
|
|
216
|
+
.mb-1 {
|
|
217
|
+
margin-bottom: var(--spacing-scale-half) !important;
|
|
218
|
+
}
|
|
219
|
+
|
|
216
220
|
.mr-2 {
|
|
217
221
|
margin-right: var(--spacing-scale-base) !important;
|
|
218
222
|
}
|
|
@@ -221,6 +225,10 @@ textarea {
|
|
|
221
225
|
margin-right: calc(var(--spacing-scale-base) * -1) !important;
|
|
222
226
|
}
|
|
223
227
|
|
|
228
|
+
.ml-2 {
|
|
229
|
+
margin-left: var(--spacing-scale-base) !important;
|
|
230
|
+
}
|
|
231
|
+
|
|
224
232
|
.mb-3 {
|
|
225
233
|
margin-bottom: var(--spacing-scale-2x) !important;
|
|
226
234
|
}
|
|
@@ -251,8 +251,8 @@ export class Select {
|
|
|
251
251
|
};
|
|
252
252
|
}
|
|
253
253
|
render() {
|
|
254
|
-
return (h("div", Object.assign({ key: '
|
|
255
|
-
h("br-list", { key: '
|
|
254
|
+
return (h("div", Object.assign({ key: 'aa32a5bf8e476ba29de8cf6fb6d6f440902ffade', class: this.getCssClassMap() }, this.inheritedAttributes, { id: this.getComputedId() }), this.renderInput(), this.isExpanded &&
|
|
255
|
+
h("br-list", { key: 'b430614ce4b013b2f10416bd987cda6569b5458a', tabindex: -1, onKeyDown: (event) => this.handleKeydownOnList(event) }, this.isMultiple && (this.renderSelectAllCheckbox()), this.renderOptions())));
|
|
256
256
|
}
|
|
257
257
|
static get is() { return "br-select"; }
|
|
258
258
|
static get encapsulation() { return "shadow"; }
|
|
@@ -283,6 +283,8 @@ export class Select {
|
|
|
283
283
|
"tags": [],
|
|
284
284
|
"text": "R\u00F3tulo que indica o tipo de informa\u00E7\u00E3o que deve ser selecionada."
|
|
285
285
|
},
|
|
286
|
+
"getter": false,
|
|
287
|
+
"setter": false,
|
|
286
288
|
"attribute": "label",
|
|
287
289
|
"reflect": true
|
|
288
290
|
},
|
|
@@ -300,6 +302,8 @@ export class Select {
|
|
|
300
302
|
"tags": [],
|
|
301
303
|
"text": "Texto auxiliar exibido antes de uma sele\u00E7\u00E3o."
|
|
302
304
|
},
|
|
305
|
+
"getter": false,
|
|
306
|
+
"setter": false,
|
|
303
307
|
"attribute": "placeholder",
|
|
304
308
|
"reflect": true,
|
|
305
309
|
"defaultValue": "''"
|
|
@@ -318,6 +322,8 @@ export class Select {
|
|
|
318
322
|
"tags": [],
|
|
319
323
|
"text": "Habilita o modo m\u00FAltiplo para selecionar v\u00E1rias op\u00E7\u00F5es."
|
|
320
324
|
},
|
|
325
|
+
"getter": false,
|
|
326
|
+
"setter": false,
|
|
321
327
|
"attribute": "is-multiple",
|
|
322
328
|
"reflect": true,
|
|
323
329
|
"defaultValue": "false"
|
|
@@ -336,6 +342,8 @@ export class Select {
|
|
|
336
342
|
"tags": [],
|
|
337
343
|
"text": "JSON contendo as op\u00E7\u00F5es do select."
|
|
338
344
|
},
|
|
345
|
+
"getter": false,
|
|
346
|
+
"setter": false,
|
|
339
347
|
"attribute": "options",
|
|
340
348
|
"reflect": true,
|
|
341
349
|
"defaultValue": "'[]'"
|
|
@@ -354,6 +362,8 @@ export class Select {
|
|
|
354
362
|
"tags": [],
|
|
355
363
|
"text": "R\u00F3tulo para selecionar todas as op\u00E7\u00F5es."
|
|
356
364
|
},
|
|
365
|
+
"getter": false,
|
|
366
|
+
"setter": false,
|
|
357
367
|
"attribute": "select-all-label",
|
|
358
368
|
"reflect": true,
|
|
359
369
|
"defaultValue": "'Selecionar todos'"
|
|
@@ -372,6 +382,8 @@ export class Select {
|
|
|
372
382
|
"tags": [],
|
|
373
383
|
"text": "R\u00F3tulo para desmarcar todas as op\u00E7\u00F5es."
|
|
374
384
|
},
|
|
385
|
+
"getter": false,
|
|
386
|
+
"setter": false,
|
|
375
387
|
"attribute": "unselect-all-label",
|
|
376
388
|
"reflect": true,
|
|
377
389
|
"defaultValue": "'Desselecionar todos'"
|
|
@@ -390,6 +402,8 @@ export class Select {
|
|
|
390
402
|
"tags": [],
|
|
391
403
|
"text": "Exibe o \u00EDcone de busca no campo de entrada."
|
|
392
404
|
},
|
|
405
|
+
"getter": false,
|
|
406
|
+
"setter": false,
|
|
393
407
|
"attribute": "show-search-icon",
|
|
394
408
|
"reflect": true,
|
|
395
409
|
"defaultValue": "false"
|
|
@@ -408,6 +422,8 @@ export class Select {
|
|
|
408
422
|
"tags": [],
|
|
409
423
|
"text": "Indica se a listagem de itens do select est\u00E1 expandida"
|
|
410
424
|
},
|
|
425
|
+
"getter": false,
|
|
426
|
+
"setter": false,
|
|
411
427
|
"attribute": "is-open",
|
|
412
428
|
"reflect": true,
|
|
413
429
|
"defaultValue": "false"
|
|
@@ -426,6 +442,8 @@ export class Select {
|
|
|
426
442
|
"tags": [],
|
|
427
443
|
"text": "Especifica o ID do componente.\nSe n\u00E3o for fornecido, o ID ser\u00E1 gerado automaticamente e de forma aleat\u00F3ria"
|
|
428
444
|
},
|
|
445
|
+
"getter": false,
|
|
446
|
+
"setter": false,
|
|
429
447
|
"attribute": "id",
|
|
430
448
|
"reflect": true
|
|
431
449
|
}
|
|
@@ -1 +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"]}
|
|
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"]}
|
|
@@ -213,6 +213,10 @@ textarea {
|
|
|
213
213
|
margin-right: var(--spacing-scale-half) !important;
|
|
214
214
|
}
|
|
215
215
|
|
|
216
|
+
.mb-1 {
|
|
217
|
+
margin-bottom: var(--spacing-scale-half) !important;
|
|
218
|
+
}
|
|
219
|
+
|
|
216
220
|
.mr-2 {
|
|
217
221
|
margin-right: var(--spacing-scale-base) !important;
|
|
218
222
|
}
|
|
@@ -221,6 +225,10 @@ textarea {
|
|
|
221
225
|
margin-right: calc(var(--spacing-scale-base) * -1) !important;
|
|
222
226
|
}
|
|
223
227
|
|
|
228
|
+
.ml-2 {
|
|
229
|
+
margin-left: var(--spacing-scale-base) !important;
|
|
230
|
+
}
|
|
231
|
+
|
|
224
232
|
.mb-3 {
|
|
225
233
|
margin-bottom: var(--spacing-scale-2x) !important;
|
|
226
234
|
}
|