@govbr-ds/webcomponents 2.0.0-next.62 → 2.0.0-next.64
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-checkbox.br-input.br-radio.entry.cjs.js.map +1 -1
- package/dist/cjs/br-checkbox_3.cjs.entry.js +17 -28
- package/dist/cjs/br-collapse.br-list.entry.cjs.js.map +1 -1
- package/dist/cjs/br-collapse_2.cjs.entry.js +10 -15
- package/dist/cjs/br-datetime-picker.cjs.entry.js +18 -31
- package/dist/cjs/br-datetime-picker.entry.cjs.js.map +1 -1
- package/dist/cjs/br-dropdown.br-select.entry.cjs.js.map +1 -1
- package/dist/cjs/br-dropdown_2.cjs.entry.js +73 -56
- package/dist/cjs/br-header-list.cjs.entry.js +6 -13
- package/dist/cjs/br-header-list.entry.cjs.js.map +1 -1
- package/dist/cjs/br-header.cjs.entry.js +2 -5
- package/dist/cjs/br-header.entry.cjs.js.map +1 -1
- package/dist/cjs/br-item.cjs.entry.js +3 -6
- package/dist/cjs/br-item.entry.cjs.js.map +1 -1
- package/dist/cjs/br-message.cjs.entry.js +13 -16
- package/dist/cjs/br-message.entry.cjs.js.map +1 -1
- package/dist/cjs/br-modal.cjs.entry.js +8 -13
- package/dist/cjs/br-modal.entry.cjs.js.map +1 -1
- package/dist/cjs/br-scrim.cjs.entry.js +40 -51
- package/dist/cjs/br-scrim.entry.cjs.js.map +1 -1
- package/dist/cjs/br-skip-link.cjs.entry.js +25 -30
- package/dist/cjs/br-skip-link.entry.cjs.js.map +1 -1
- package/dist/cjs/br-skiplink-item.cjs.entry.js +32 -37
- package/dist/cjs/br-skiplink-item.entry.cjs.js.map +1 -1
- package/dist/cjs/br-step.br-step-item.entry.cjs.js.map +1 -1
- package/dist/cjs/br-step_2.cjs.entry.js +33 -56
- package/dist/cjs/br-switch.cjs.entry.js +3 -6
- package/dist/cjs/br-switch.entry.cjs.js.map +1 -1
- package/dist/cjs/br-textarea.cjs.entry.js +5 -8
- package/dist/cjs/br-textarea.entry.cjs.js.map +1 -1
- package/dist/cjs/br-tooltip.cjs.entry.js +1 -2
- package/dist/cjs/br-tooltip.entry.cjs.js.map +1 -1
- package/dist/cjs/br-wizard-panel.cjs.entry.js +6 -13
- package/dist/cjs/br-wizard-panel.entry.cjs.js.map +1 -1
- package/dist/cjs/br-wizard.cjs.entry.js +147 -182
- package/dist/cjs/br-wizard.entry.cjs.js.map +1 -1
- package/dist/cjs/{floating-ui-D_WzFT9x.js → floating-ui-CkTJEp-y.js} +11 -15
- package/dist/{esm/floating-ui-DBIzWbO2.js.map → cjs/floating-ui-CkTJEp-y.js.map} +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/webcomponents.cjs.js +1 -1
- package/dist/collection/components/checkbox/checkbox.js +9 -16
- package/dist/collection/components/checkbox/checkbox.js.map +1 -1
- package/dist/collection/components/collapse/collapse.js +10 -15
- package/dist/collection/components/collapse/collapse.js.map +1 -1
- package/dist/collection/components/datetime-picker/datetime-picker.js +18 -31
- package/dist/collection/components/datetime-picker/datetime-picker.js.map +1 -1
- package/dist/collection/components/dropdown/dropdown.js +13 -20
- package/dist/collection/components/dropdown/dropdown.js.map +1 -1
- package/dist/collection/components/header/header-list/header-list.js +6 -13
- package/dist/collection/components/header/header-list/header-list.js.map +1 -1
- package/dist/collection/components/header/header.js +2 -5
- package/dist/collection/components/header/header.js.map +1 -1
- package/dist/collection/components/item/item.js +3 -6
- package/dist/collection/components/item/item.js.map +1 -1
- package/dist/collection/components/message/message.js +13 -16
- package/dist/collection/components/message/message.js.map +1 -1
- package/dist/collection/components/modal/modal.js +8 -13
- package/dist/collection/components/modal/modal.js.map +1 -1
- package/dist/collection/components/radio/radio.js +8 -13
- package/dist/collection/components/radio/radio.js.map +1 -1
- package/dist/collection/components/scrim/scrim.js +40 -51
- package/dist/collection/components/scrim/scrim.js.map +1 -1
- package/dist/collection/components/select/select.js +79 -36
- package/dist/collection/components/select/select.js.map +1 -1
- package/dist/collection/components/skip-link/skip-link-item/skip-link-item.js +32 -37
- package/dist/collection/components/skip-link/skip-link-item/skip-link-item.js.map +1 -1
- package/dist/collection/components/skip-link/skip-link.js +25 -30
- package/dist/collection/components/skip-link/skip-link.js.map +1 -1
- package/dist/collection/components/step/step-item/step-item.js +13 -26
- package/dist/collection/components/step/step-item/step-item.js.map +1 -1
- package/dist/collection/components/step/step.js +20 -31
- package/dist/collection/components/step/step.js.map +1 -1
- package/dist/collection/components/switch/switch.js +3 -6
- package/dist/collection/components/switch/switch.js.map +1 -1
- package/dist/collection/components/textarea/textarea.js +5 -8
- package/dist/collection/components/textarea/textarea.js.map +1 -1
- package/dist/collection/components/wizard/wizard-panel/wizard-panel.js +6 -13
- package/dist/collection/components/wizard/wizard-panel/wizard-panel.js.map +1 -1
- package/dist/collection/components/wizard/wizard.js +147 -182
- package/dist/collection/components/wizard/wizard.js.map +1 -1
- package/dist/collection/utils/floating-ui.js +9 -12
- package/dist/collection/utils/floating-ui.js.map +1 -1
- package/dist/components/br-breadcrumb.js +3 -3
- package/dist/components/br-checkbox.js +4 -4
- package/dist/components/br-checkgroup.js +1 -1
- package/dist/components/br-collapse.js +4 -4
- package/dist/components/br-datetime-picker.js +1981 -1995
- package/dist/components/br-datetime-picker.js.map +1 -1
- package/dist/components/br-dropdown.js +1 -1
- package/dist/components/br-footer-category.js +3 -3
- package/dist/components/br-footer-item.js +1 -1
- package/dist/components/br-header-function.js +1 -1
- package/dist/components/br-header-link.js +1 -1
- package/dist/components/br-header-list.js +31 -39
- package/dist/components/br-header-list.js.map +1 -1
- package/dist/components/br-header.js +63 -67
- package/dist/components/br-header.js.map +1 -1
- package/dist/components/br-item.js +1 -1
- package/dist/components/br-list.js +3 -3
- package/dist/components/br-message.js +28 -32
- package/dist/components/br-message.js.map +1 -1
- package/dist/components/br-modal.js +21 -27
- package/dist/components/br-modal.js.map +1 -1
- package/dist/components/br-pagination.js +7 -7
- package/dist/components/br-radio.js +1 -1
- package/dist/components/br-scrim.js +49 -61
- package/dist/components/br-scrim.js.map +1 -1
- package/dist/components/br-select.js +3 -3
- package/dist/components/br-skip-link.js +42 -49
- package/dist/components/br-skip-link.js.map +1 -1
- package/dist/components/br-skiplink-item.js +55 -61
- package/dist/components/br-skiplink-item.js.map +1 -1
- package/dist/components/br-step-item.js +4 -4
- package/dist/components/br-step.js +4 -4
- package/dist/components/br-switch.js +12 -16
- package/dist/components/br-switch.js.map +1 -1
- package/dist/components/br-textarea.js +14 -18
- package/dist/components/br-textarea.js.map +1 -1
- package/dist/components/br-tooltip.js +1 -1
- package/dist/components/br-wizard-panel.js +13 -21
- package/dist/components/br-wizard-panel.js.map +1 -1
- package/dist/components/br-wizard.js +190 -228
- package/dist/components/br-wizard.js.map +1 -1
- package/dist/components/{p-Cc75U9ZX.js → p-B_YesJM8.js} +26 -34
- package/dist/components/{p-Cc75U9ZX.js.map → p-B_YesJM8.js.map} +1 -1
- package/dist/components/{p-xFn46pdm.js → p-Bc03PTAW.js} +27 -39
- package/dist/components/{p-xFn46pdm.js.map → p-Bc03PTAW.js.map} +1 -1
- package/dist/components/{p-DzKEfDGA.js → p-Bri6ECVa.js} +27 -33
- package/dist/components/{p-DzKEfDGA.js.map → p-Bri6ECVa.js.map} +1 -1
- package/dist/components/{p-BZ8BetvD.js → p-CJSXIVVe.js} +17 -23
- package/dist/components/{p-BZ8BetvD.js.map → p-CJSXIVVe.js.map} +1 -1
- package/dist/components/{p-D9c7NikS.js → p-CWRBs6PD.js} +24 -38
- package/dist/components/{p-D9c7NikS.js.map → p-CWRBs6PD.js.map} +1 -1
- package/dist/components/{p-D0dPo1K5.js → p-CwtLw60M.js} +12 -16
- package/dist/components/{p-D0dPo1K5.js.map → p-CwtLw60M.js.map} +1 -1
- package/dist/components/{p-z1PVVVFI.js → p-DW63EY0U.js} +27 -35
- package/dist/components/{p-z1PVVVFI.js.map → p-DW63EY0U.js.map} +1 -1
- package/dist/components/{p-7kxAU6Gr.js → p-DdjKNpU3.js} +92 -72
- package/dist/components/p-DdjKNpU3.js.map +1 -0
- package/dist/{webcomponents/p-B4au_byv.js → components/p-k0WZfTfL.js} +121 -124
- package/dist/components/{p-B4au_byv.js.map → p-k0WZfTfL.js.map} +1 -1
- package/dist/components/{p-OKkBxn1z.js → p-lIb35q2K.js} +3 -3
- package/dist/custom-elements.json +19459 -0
- package/dist/esm/br-checkbox.br-input.br-radio.entry.js.map +1 -1
- package/dist/esm/br-checkbox_3.entry.js +17 -28
- package/dist/esm/br-collapse.br-list.entry.js.map +1 -1
- package/dist/esm/br-collapse_2.entry.js +10 -15
- package/dist/esm/br-datetime-picker.entry.js +18 -31
- package/dist/esm/br-datetime-picker.entry.js.map +1 -1
- package/dist/esm/br-dropdown.br-select.entry.js.map +1 -1
- package/dist/esm/br-dropdown_2.entry.js +73 -56
- package/dist/esm/br-header-list.entry.js +6 -13
- package/dist/esm/br-header-list.entry.js.map +1 -1
- package/dist/esm/br-header.entry.js +2 -5
- package/dist/esm/br-header.entry.js.map +1 -1
- package/dist/esm/br-item.entry.js +3 -6
- package/dist/esm/br-item.entry.js.map +1 -1
- package/dist/esm/br-message.entry.js +13 -16
- package/dist/esm/br-message.entry.js.map +1 -1
- package/dist/esm/br-modal.entry.js +8 -13
- package/dist/esm/br-modal.entry.js.map +1 -1
- package/dist/esm/br-scrim.entry.js +40 -51
- package/dist/esm/br-scrim.entry.js.map +1 -1
- package/dist/esm/br-skip-link.entry.js +25 -30
- package/dist/esm/br-skip-link.entry.js.map +1 -1
- package/dist/esm/br-skiplink-item.entry.js +32 -37
- package/dist/esm/br-skiplink-item.entry.js.map +1 -1
- package/dist/esm/br-step.br-step-item.entry.js.map +1 -1
- package/dist/esm/br-step_2.entry.js +33 -56
- package/dist/esm/br-switch.entry.js +3 -6
- package/dist/esm/br-switch.entry.js.map +1 -1
- package/dist/esm/br-textarea.entry.js +5 -8
- package/dist/esm/br-textarea.entry.js.map +1 -1
- package/dist/esm/br-tooltip.entry.js +1 -2
- package/dist/esm/br-tooltip.entry.js.map +1 -1
- package/dist/esm/br-wizard-panel.entry.js +6 -13
- package/dist/esm/br-wizard-panel.entry.js.map +1 -1
- package/dist/esm/br-wizard.entry.js +147 -182
- package/dist/esm/br-wizard.entry.js.map +1 -1
- package/dist/esm/{floating-ui-DBIzWbO2.js → floating-ui-k0WZfTfL.js} +11 -15
- package/dist/{cjs/floating-ui-D_WzFT9x.js.map → esm/floating-ui-k0WZfTfL.js.map} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/webcomponents.js +1 -1
- package/dist/hydrate/index.js +451 -592
- package/dist/hydrate/index.mjs +451 -592
- package/dist/types/components/select/select.d.ts +5 -0
- package/dist/types/components.d.ts +10 -0
- package/dist/webcomponents/br-checkbox.br-input.br-radio.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-collapse.br-list.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-datetime-picker.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-dropdown.br-select.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-header-list.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-header.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-item.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-message.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-modal.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-scrim.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-skip-link.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-skiplink-item.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-step.br-step-item.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-switch.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-textarea.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-tooltip.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-wizard-panel.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-wizard.entry.esm.js.map +1 -1
- package/dist/webcomponents/{p-2fe329d6.entry.js → p-10e25a32.entry.js} +28 -34
- package/dist/webcomponents/p-10e25a32.entry.js.map +1 -0
- package/dist/webcomponents/{p-61e5421b.entry.js → p-27eb10f9.entry.js} +57 -61
- package/dist/webcomponents/p-27eb10f9.entry.js.map +1 -0
- package/dist/webcomponents/{p-097912c2.entry.js → p-2be1c309.entry.js} +34 -41
- package/dist/webcomponents/p-2be1c309.entry.js.map +1 -0
- package/dist/webcomponents/{p-5070161f.entry.js → p-30af66b3.entry.js} +45 -51
- package/dist/webcomponents/p-30af66b3.entry.js.map +1 -0
- package/dist/webcomponents/{p-9464b692.entry.js → p-336071a5.entry.js} +2 -4
- package/dist/webcomponents/p-336071a5.entry.js.map +1 -0
- package/dist/webcomponents/{p-8a034433.entry.js → p-462c5647.entry.js} +20 -24
- package/dist/webcomponents/p-462c5647.entry.js.map +1 -0
- package/dist/webcomponents/{p-d674cee3.entry.js → p-46dfc3ee.entry.js} +12 -16
- package/dist/webcomponents/p-46dfc3ee.entry.js.map +1 -0
- package/dist/webcomponents/{p-821b896c.entry.js → p-56aabe89.entry.js} +36 -44
- package/dist/webcomponents/p-56aabe89.entry.js.map +1 -0
- package/dist/webcomponents/{p-a615baaa.entry.js → p-5710a3e9.entry.js} +41 -65
- package/dist/webcomponents/p-5710a3e9.entry.js.map +1 -0
- package/dist/webcomponents/{p-1799a082.entry.js → p-6a9d2a0b.entry.js} +1996 -2010
- package/dist/webcomponents/p-6a9d2a0b.entry.js.map +1 -0
- package/dist/webcomponents/{p-8ad1f003.entry.js → p-83001853.entry.js} +175 -213
- package/dist/webcomponents/p-83001853.entry.js.map +1 -0
- package/dist/webcomponents/{p-463b06a4.entry.js → p-90401ecd.entry.js} +32 -38
- package/dist/webcomponents/p-90401ecd.entry.js.map +1 -0
- package/dist/webcomponents/{p-216dc111.entry.js → p-a2eec4fb.entry.js} +49 -61
- package/dist/webcomponents/p-a2eec4fb.entry.js.map +1 -0
- package/dist/webcomponents/{p-d6475852.entry.js → p-c1b0a116.entry.js} +11 -19
- package/dist/webcomponents/p-c1b0a116.entry.js.map +1 -0
- package/dist/webcomponents/{p-c90a089a.entry.js → p-ca2d95f7.entry.js} +96 -83
- package/dist/webcomponents/p-ca2d95f7.entry.js.map +1 -0
- package/dist/webcomponents/{p-7ff6698f.entry.js → p-cfa86a23.entry.js} +10 -14
- package/dist/webcomponents/p-cfa86a23.entry.js.map +1 -0
- package/dist/webcomponents/{p-abc0ecbe.entry.js → p-e5875d3d.entry.js} +10 -14
- package/dist/webcomponents/p-e5875d3d.entry.js.map +1 -0
- package/dist/webcomponents/{p-0bfb0edf.entry.js → p-f2ea0d7e.entry.js} +133 -145
- package/dist/webcomponents/p-f2ea0d7e.entry.js.map +1 -0
- package/dist/{components/p-B4au_byv.js → webcomponents/p-k0WZfTfL.js} +121 -124
- package/dist/webcomponents/{p-B4au_byv.js.map → p-k0WZfTfL.js.map} +1 -1
- package/dist/webcomponents/webcomponents.esm.js +1 -1
- package/dist/webcomponents.html-custom-data.json +2573 -0
- package/package.json +1 -1
- package/dist/cjs/tslib.es6-CF44W9Bn.js +0 -42
- package/dist/cjs/tslib.es6-CF44W9Bn.js.map +0 -1
- package/dist/components/p-7kxAU6Gr.js.map +0 -1
- package/dist/components/p-DIPMDb5E.js +0 -55
- package/dist/components/p-DIPMDb5E.js.map +0 -1
- package/dist/esm/tslib.es6-DIPMDb5E.js +0 -40
- package/dist/esm/tslib.es6-DIPMDb5E.js.map +0 -1
- package/dist/webcomponents/p-097912c2.entry.js.map +0 -1
- package/dist/webcomponents/p-0bfb0edf.entry.js.map +0 -1
- package/dist/webcomponents/p-1799a082.entry.js.map +0 -1
- package/dist/webcomponents/p-216dc111.entry.js.map +0 -1
- package/dist/webcomponents/p-2fe329d6.entry.js.map +0 -1
- package/dist/webcomponents/p-463b06a4.entry.js.map +0 -1
- package/dist/webcomponents/p-5070161f.entry.js.map +0 -1
- package/dist/webcomponents/p-61e5421b.entry.js.map +0 -1
- package/dist/webcomponents/p-7ff6698f.entry.js.map +0 -1
- package/dist/webcomponents/p-821b896c.entry.js.map +0 -1
- package/dist/webcomponents/p-8a034433.entry.js.map +0 -1
- package/dist/webcomponents/p-8ad1f003.entry.js.map +0 -1
- package/dist/webcomponents/p-9464b692.entry.js.map +0 -1
- package/dist/webcomponents/p-DIPMDb5E.js +0 -55
- package/dist/webcomponents/p-DIPMDb5E.js.map +0 -1
- package/dist/webcomponents/p-a615baaa.entry.js.map +0 -1
- package/dist/webcomponents/p-abc0ecbe.entry.js.map +0 -1
- package/dist/webcomponents/p-c90a089a.entry.js.map +0 -1
- package/dist/webcomponents/p-d6475852.entry.js.map +0 -1
- package/dist/webcomponents/p-d674cee3.entry.js.map +0 -1
- /package/dist/components/{p-OKkBxn1z.js.map → p-lIb35q2K.js.map} +0 -0
|
@@ -4,11 +4,9 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { p as t, H as e, d as r, h as a, c as i } from "./p-DSkSDmzD.js";
|
|
6
6
|
|
|
7
|
-
import { _ as o } from "./p-DIPMDb5E.js";
|
|
7
|
+
const o = '*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{line-height:var(--font-line-height-medium);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}body{margin:0}main{display:block}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}a{background-color:rgba(0,0,0,0)}b,strong{font-weight:bolder}small{font-size:80%}img{border-style:none}button,input,select,textarea{font-family:inherit;font-size:100%;line-height:var(--font-line-height-medium);margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;-moz-appearance:button;appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.d-none{display:none !important}.d-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}@media (min-width: 576px){.d-sm-block{display:block !important}.d-sm-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}.justify-content-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.align-items-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.col,[class*=col-]{padding-left:calc(var(--grid-gutter)*.5);padding-right:calc(var(--grid-gutter)*.5);width:100%}.col{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;min-width:8.3333333333%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-2{-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.container,.container-lg{--grid-margin:var(--grid-portrait-margin);--grid-maxwidth:var(--grid-portrait-maxwidth);margin-left:auto;margin-right:auto;max-width:var(--grid-maxwidth);padding-left:var(--grid-margin);padding-right:var(--grid-margin);width:100%}.row{--grid-gutter:var(--grid-portrait-gutter);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:calc(var(--grid-gutter)*-0.5);margin-right:calc(var(--grid-gutter)*-0.5)}@media (min-width: 576px){.container,.container-lg{--grid-margin:var(--grid-tablet-margin)}.row{--grid-gutter:var(--grid-tablet-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-sm) - var(--grid-tablet-margin))}.col-sm-4{-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}}@media (min-width: 992px){.container,.container-lg{--grid-margin:var(--grid-tablet-margin)}.row{--grid-gutter:var(--grid-tablet-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-md) - var(--grid-tablet-margin))}}@media (min-width: 1280px){.container,.container-lg{--grid-margin:var(--grid-desktop-margin)}.row{--grid-gutter:var(--grid-desktop-gutter)}.container,.container-lg{--grid-maxwidth:calc(var(--grid-breakpoint-lg) - var(--grid-desktop-margin))}.col-lg-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}}@media (min-width: 1600px){.container,.container-lg{--grid-margin:var(--grid-tv-margin)}.row{--grid-gutter:var(--grid-tv-gutter)}.container,.container-lg{--grid-maxwidth:calc(var(--grid-breakpoint-xl) - var(--grid-tv-margin))}}.mr-1{margin-right:var(--spacing-scale-half) !important}.mb-1{margin-bottom:var(--spacing-scale-half) !important}.ml-1{margin-left:var(--spacing-scale-half) !important}.mr-n2{margin-right:calc(var(--spacing-scale-base)*-1) !important}.ml-2{margin-left:var(--spacing-scale-base) !important}.mx-3{margin-left:var(--spacing-scale-2x) !important;margin-right:var(--spacing-scale-2x) !important}.mr-auto{margin-right:auto !important}.ml-auto{margin-left:auto !important}.pt-half{padding-top:var(--spacing-scale-half) !important}.py-3{padding-bottom:var(--spacing-scale-2x) !important;padding-top:var(--spacing-scale-2x) !important}.py-4{padding-bottom:var(--spacing-scale-3x) !important;padding-top:var(--spacing-scale-3x) !important}@media (min-width: 576px){.ml-sm-0{margin-left:var(--spacing-scale-default) !important}}body{--bg-color:var(--background);--bg-color-rgb:var(--background-rgb);--bg-color-hsl:var(--background-hsl);--font-size:var(--font-size-scale-base);--font-weight:var(--font-weight-regular);--link-color:var(--interactive);--link-color-rgb:var(--interactive-rgb);--link-color-hsl:var(--interactive-hsl);--line-height:var(--font-line-height-medium);--text-color:var(--color);--text-color-rgb:var(--color-rgb);--text-color-hsl:var(--color-hsl);background:var(--bg-color);color:var(--text-color);font-family:var(--font-family-base);font-size:var(--font-size);font-weight:var(--font-weight);line-height:var(--line-height)}p{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-2x);margin-top:0}p a{text-decoration:underline}@media (min-width: 576px){p{font-size:var(--font-size-scale-up-01)}}a{--focus-offset:var(--spacing-scale-half)}a:focus{outline:none}a:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}a:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}a:not(:disabled):active{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--pressed))), to(rgba(var(--interactive-rgb), var(--pressed))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}a{color:var(--interactive);text-decoration:none}button{cursor:pointer}img{max-width:100%;vertical-align:middle}h2,.h2{color:var(--color);font-size:var(--font-size-scale-up-03);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2xh);margin-top:var(--spacing-scale-3xh);padding-bottom:var(--spacing-scale-2xh)}@media (min-width: 576px){.h2,h2{font-size:var(--font-size-scale-up-05);font-weight:var(--font-weight-regular)}}ul,ol{margin-bottom:var(--spacing-scale-2x);margin-top:0;padding:0 0 0 var(--spacing-scale-5x)}table{--table-background:var(--background);--table-color:var(--color);--table-border-color:var(--gray-20);--table-border-style:solid;--table-border-width:1px;--table-hover:var(--color-rgb);--table-padding:var(--spacing-scale-3x);--table-font-weight:var(--font-weight-medium);--table-th-background:var(--background-alternative);--table-th-font-weight:var(--font-weight-semi-bold);--table-row-size:var(--spacing-scale-2x);border-collapse:collapse;width:100%}label,.label{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half)}::-webkit-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::-moz-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::-ms-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::placeholder,.placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}input,textarea,.input{color:var(--color-light);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-half)}.text-pure-0{color:var(--pure-0) !important}.bg-interactive{--background:var(--interactive);background:var(--interactive) !important}.text-primary-default{color:var(--color-primary-default) !important}.text-center{text-align:center !important}.text-right{text-align:right !important}.text-nowrap{white-space:nowrap !important}.text-uppercase{text-transform:uppercase !important}.text-medium{font-weight:500 !important}.text-bold{font-weight:700 !important}.text-down-01{font-size:var(--font-size-scale-down-01) !important}@media (min-width: 576px){.text-sm-center{text-align:center !important}.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}}.ease{-webkit-animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1);animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1)}.ease-in-out{-webkit-animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1);animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1)}.fab{--icon-size:var(--icon-size-base);display:inline-block;font-size:var(--icon-size);text-align:center;width:calc(var(--icon-size) + 8px)}.highlight{background:var(--status-highlight-background) -webkit-gradient(linear, left top, left bottom, from(var(--status-highlight-overlay)), to(var(--status-highlight-overlay)));background:var(--status-highlight-background) linear-gradient(var(--status-highlight-overlay), var(--status-highlight-overlay));color:var(--status-highlight-text);padding:0 var(--spacing-scale-half)}[disabled],.disabled{cursor:not-allowed;opacity:var(--disabled)}[disabled] *,.disabled *{pointer-events:none}[data-toggle=dropdown]+*{position:absolute}.dropdown{position:relative}.dropdown [data-toggle=dropdown]+*{-webkit-box-shadow:var(--surface-shadow-sm);box-shadow:var(--surface-shadow-sm);left:0;position:absolute;top:100%}.dropdown .br-item{--color:var(--color-light);--color-rgb:var(--color-light-rgb);--text-color:var(--color-light);--interactive:var(--interactive-light);--interactive-rgb:var(--color-rgb);--visited:var(--visited-light);--hover:var(--hover-light);--pressed:var(--pressed-light);--focus-color:var(--focus-color-light);--focus:var(--focus-color-light);--item-padding-y:var(--spacing-scale-2x);background-color:var(--background-light);color:var(--color)}.dropdown .br-item:not(:last-child){border-bottom:1px solid var(--border-color)}.dropdown .br-item.selected{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark)}*[data-toggle=collapse]:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}*[data-toggle=collapse]:focus{outline:none}*[data-toggle=collapse]:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}.br-item{background:var(--background);--item-padding-x:var(--spacing-scale-2x);--item-padding-y:var(--spacing-scale-base);--item-padding:var(--item-padding-y) var(--item-padding-x);--focus-offset:calc(var(--focus-width) * -1);border:0;color:var(--color);display:block;font-weight:var(--font-weight);padding:var(--item-padding);text-align:left;width:100%}.br-item .row{margin-left:calc(-1*var(--spacing-scale-base));margin-right:calc(-1*var(--spacing-scale-base))}.br-item .row .col,.br-item .row [class*=col-]{padding-left:var(--spacing-scale-base);padding-right:var(--spacing-scale-base)}.br-item::after{clear:both;content:"";display:block}.br-item[data-toggle]{cursor:pointer}.br-item[data-toggle=selection]:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--color-rgb), var(--hover))), to(rgba(var(--color-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)))}.br-item>.br-checkbox:not(.hidden-label),.br-item>.br-radio:not(.hidden-label){margin-bottom:calc(var(--item-padding-y)*-1);margin-left:calc(var(--item-padding-x)*-1);margin-right:calc(var(--item-padding-x)*-1);margin-top:calc(var(--item-padding-y)*-1)}.br-item>.br-checkbox:not(.hidden-label) input+label,.br-item>.br-radio:not(.hidden-label) input+label{padding-bottom:var(--item-padding-y);padding-top:var(--item-padding-y);top:1px;width:100%}.br-item>.br-checkbox:not(.hidden-label) input+label::before,.br-item>.br-radio:not(.hidden-label) input+label::before{left:var(--item-padding-x);top:calc(var(--item-padding-y) - 1px)}.br-item>.br-checkbox:not(.hidden-label) input+label:empty,.br-item>.br-radio:not(.hidden-label) input+label:empty{left:0;top:1px}.br-item>.br-checkbox:not(.hidden-label) input:hover:not(:disabled)+label::before,.br-item>.br-radio:not(.hidden-label) input:hover:not(:disabled)+label::before{background-image:none}.br-item>.br-checkbox input:not(:indeterminate)+label{min-height:calc(var(--checkbox-size) + var(--item-padding-y)*2)}.br-item>.br-checkbox input:not(:indeterminate)+label:not(:empty){padding-left:calc(var(--checkbox-padding) + var(--checkbox-size) + var(--item-padding-x))}.br-item>.br-checkbox input:not(:indeterminate)+label::after{left:calc(var(--item-padding-x) + 8px);top:calc(var(--item-padding-y) + 4px)}.br-item>.br-checkbox input:not(:indeterminate)+label:empty{min-height:var(--checkbox-size)}.br-item>.br-checkbox input:not(:indeterminate)+label:empty::after{left:8px;top:4px}.br-item .br-radio input+label{min-height:calc(var(--radio-size) + var(--item-padding-y)*2);padding-left:calc(var(--spacing-scale-base) + var(--radio-size) + var(--item-padding-x))}.br-item .br-radio input+label::after{left:calc(var(--item-padding-x) + var(--radio-bullet-position));top:calc(var(--item-padding-y) + var(--radio-bullet-position) - 1px)}.br-item .br-radio input+label:empty{min-height:var(--radio-size)}.br-item .br-radio input+label:empty::after{left:var(--radio-bullet-position);top:var(--radio-bullet-position)}.br-item.highlight{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark)}.br-item.selected{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark);background-color:var(--selected)}.br-item.active{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark);background-color:var(--active);color:var(--color)}.br-item.inverted,.br-item.dark-mode{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark)}.br-item.inverted.active,.br-item.dark-mode.active{--color:var(--color-light);--color-rgb:var(--color-light-rgb);--text-color:var(--color-light);--interactive:var(--interactive-light);--interactive-rgb:var(--active-rgb);--visited:var(--visited-light);--hover:var(--hover-light);--pressed:var(--pressed-light);--focus-color:var(--focus-color-light);--focus:var(--focus-color-light);background-color:var(--background-light);color:var(--active)}.br-item[data-toggle]:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--color-rgb), var(--hover))), to(rgba(var(--color-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)))}.br-item[data-toggle] .content i{color:var(--interactive)}.br-item .content{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.br-item [class*=fa-]{height:16px;width:14px !important}a.br-item{color:var(--interactive)}a.br-item:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}a.br-item:not(:disabled):active{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--pressed))), to(rgba(var(--interactive-rgb), var(--pressed))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}button.br-item{background-color:rgba(0,0,0,0);color:var(--color)}button.br-item:focus{outline:none}button.br-item:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}button.br-item:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--color-rgb), var(--hover))), to(rgba(var(--color-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)))}button.br-item:not(:disabled):active{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--color-rgb), var(--pressed))), to(rgba(var(--color-rgb), var(--pressed))));background-image:linear-gradient(rgba(var(--color-rgb), var(--pressed)), rgba(var(--color-rgb), var(--pressed)))}:host{display:block}::slotted(br-checkbox){max-width:-webkit-fit-content;max-width:-moz-fit-content;max-width:fit-content;max-height:-webkit-fit-content;max-height:-moz-fit-content;max-height:fit-content}::slotted(br-radio){max-width:-webkit-fit-content;max-width:-moz-fit-content;max-width:fit-content;max-height:-webkit-fit-content;max-height:-moz-fit-content;max-height:fit-content}.br-item:focus{cursor:auto;outline:var(--focus) var(--focus-style) var(--focus-width);outline-offset:var(--focus-offset)}.no-text-selection{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}';
|
|
8
8
|
|
|
9
|
-
const n = '*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{line-height:var(--font-line-height-medium);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}body{margin:0}main{display:block}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}a{background-color:rgba(0,0,0,0)}b,strong{font-weight:bolder}small{font-size:80%}img{border-style:none}button,input,select,textarea{font-family:inherit;font-size:100%;line-height:var(--font-line-height-medium);margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;-moz-appearance:button;appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.d-none{display:none !important}.d-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}@media (min-width: 576px){.d-sm-block{display:block !important}.d-sm-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}.justify-content-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.align-items-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.col,[class*=col-]{padding-left:calc(var(--grid-gutter)*.5);padding-right:calc(var(--grid-gutter)*.5);width:100%}.col{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;min-width:8.3333333333%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-2{-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.container,.container-lg{--grid-margin:var(--grid-portrait-margin);--grid-maxwidth:var(--grid-portrait-maxwidth);margin-left:auto;margin-right:auto;max-width:var(--grid-maxwidth);padding-left:var(--grid-margin);padding-right:var(--grid-margin);width:100%}.row{--grid-gutter:var(--grid-portrait-gutter);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:calc(var(--grid-gutter)*-0.5);margin-right:calc(var(--grid-gutter)*-0.5)}@media (min-width: 576px){.container,.container-lg{--grid-margin:var(--grid-tablet-margin)}.row{--grid-gutter:var(--grid-tablet-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-sm) - var(--grid-tablet-margin))}.col-sm-4{-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}}@media (min-width: 992px){.container,.container-lg{--grid-margin:var(--grid-tablet-margin)}.row{--grid-gutter:var(--grid-tablet-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-md) - var(--grid-tablet-margin))}}@media (min-width: 1280px){.container,.container-lg{--grid-margin:var(--grid-desktop-margin)}.row{--grid-gutter:var(--grid-desktop-gutter)}.container,.container-lg{--grid-maxwidth:calc(var(--grid-breakpoint-lg) - var(--grid-desktop-margin))}.col-lg-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}}@media (min-width: 1600px){.container,.container-lg{--grid-margin:var(--grid-tv-margin)}.row{--grid-gutter:var(--grid-tv-gutter)}.container,.container-lg{--grid-maxwidth:calc(var(--grid-breakpoint-xl) - var(--grid-tv-margin))}}.mr-1{margin-right:var(--spacing-scale-half) !important}.mb-1{margin-bottom:var(--spacing-scale-half) !important}.ml-1{margin-left:var(--spacing-scale-half) !important}.mr-n2{margin-right:calc(var(--spacing-scale-base)*-1) !important}.ml-2{margin-left:var(--spacing-scale-base) !important}.mx-3{margin-left:var(--spacing-scale-2x) !important;margin-right:var(--spacing-scale-2x) !important}.mr-auto{margin-right:auto !important}.ml-auto{margin-left:auto !important}.pt-half{padding-top:var(--spacing-scale-half) !important}.py-3{padding-bottom:var(--spacing-scale-2x) !important;padding-top:var(--spacing-scale-2x) !important}.py-4{padding-bottom:var(--spacing-scale-3x) !important;padding-top:var(--spacing-scale-3x) !important}@media (min-width: 576px){.ml-sm-0{margin-left:var(--spacing-scale-default) !important}}body{--bg-color:var(--background);--bg-color-rgb:var(--background-rgb);--bg-color-hsl:var(--background-hsl);--font-size:var(--font-size-scale-base);--font-weight:var(--font-weight-regular);--link-color:var(--interactive);--link-color-rgb:var(--interactive-rgb);--link-color-hsl:var(--interactive-hsl);--line-height:var(--font-line-height-medium);--text-color:var(--color);--text-color-rgb:var(--color-rgb);--text-color-hsl:var(--color-hsl);background:var(--bg-color);color:var(--text-color);font-family:var(--font-family-base);font-size:var(--font-size);font-weight:var(--font-weight);line-height:var(--line-height)}p{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-2x);margin-top:0}p a{text-decoration:underline}@media (min-width: 576px){p{font-size:var(--font-size-scale-up-01)}}a{--focus-offset:var(--spacing-scale-half)}a:focus{outline:none}a:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}a:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}a:not(:disabled):active{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--pressed))), to(rgba(var(--interactive-rgb), var(--pressed))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}a{color:var(--interactive);text-decoration:none}button{cursor:pointer}img{max-width:100%;vertical-align:middle}h2,.h2{color:var(--color);font-size:var(--font-size-scale-up-03);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2xh);margin-top:var(--spacing-scale-3xh);padding-bottom:var(--spacing-scale-2xh)}@media (min-width: 576px){.h2,h2{font-size:var(--font-size-scale-up-05);font-weight:var(--font-weight-regular)}}ul,ol{margin-bottom:var(--spacing-scale-2x);margin-top:0;padding:0 0 0 var(--spacing-scale-5x)}table{--table-background:var(--background);--table-color:var(--color);--table-border-color:var(--gray-20);--table-border-style:solid;--table-border-width:1px;--table-hover:var(--color-rgb);--table-padding:var(--spacing-scale-3x);--table-font-weight:var(--font-weight-medium);--table-th-background:var(--background-alternative);--table-th-font-weight:var(--font-weight-semi-bold);--table-row-size:var(--spacing-scale-2x);border-collapse:collapse;width:100%}label,.label{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half)}::-webkit-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::-moz-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::-ms-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::placeholder,.placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}input,textarea,.input{color:var(--color-light);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-half)}.text-pure-0{color:var(--pure-0) !important}.bg-interactive{--background:var(--interactive);background:var(--interactive) !important}.text-primary-default{color:var(--color-primary-default) !important}.text-center{text-align:center !important}.text-right{text-align:right !important}.text-nowrap{white-space:nowrap !important}.text-uppercase{text-transform:uppercase !important}.text-medium{font-weight:500 !important}.text-bold{font-weight:700 !important}.text-down-01{font-size:var(--font-size-scale-down-01) !important}@media (min-width: 576px){.text-sm-center{text-align:center !important}.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}}.ease{-webkit-animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1);animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1)}.ease-in-out{-webkit-animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1);animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1)}.fab{--icon-size:var(--icon-size-base);display:inline-block;font-size:var(--icon-size);text-align:center;width:calc(var(--icon-size) + 8px)}.highlight{background:var(--status-highlight-background) -webkit-gradient(linear, left top, left bottom, from(var(--status-highlight-overlay)), to(var(--status-highlight-overlay)));background:var(--status-highlight-background) linear-gradient(var(--status-highlight-overlay), var(--status-highlight-overlay));color:var(--status-highlight-text);padding:0 var(--spacing-scale-half)}[disabled],.disabled{cursor:not-allowed;opacity:var(--disabled)}[disabled] *,.disabled *{pointer-events:none}[data-toggle=dropdown]+*{position:absolute}.dropdown{position:relative}.dropdown [data-toggle=dropdown]+*{-webkit-box-shadow:var(--surface-shadow-sm);box-shadow:var(--surface-shadow-sm);left:0;position:absolute;top:100%}.dropdown .br-item{--color:var(--color-light);--color-rgb:var(--color-light-rgb);--text-color:var(--color-light);--interactive:var(--interactive-light);--interactive-rgb:var(--color-rgb);--visited:var(--visited-light);--hover:var(--hover-light);--pressed:var(--pressed-light);--focus-color:var(--focus-color-light);--focus:var(--focus-color-light);--item-padding-y:var(--spacing-scale-2x);background-color:var(--background-light);color:var(--color)}.dropdown .br-item:not(:last-child){border-bottom:1px solid var(--border-color)}.dropdown .br-item.selected{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark)}*[data-toggle=collapse]:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}*[data-toggle=collapse]:focus{outline:none}*[data-toggle=collapse]:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}.br-item{background:var(--background);--item-padding-x:var(--spacing-scale-2x);--item-padding-y:var(--spacing-scale-base);--item-padding:var(--item-padding-y) var(--item-padding-x);--focus-offset:calc(var(--focus-width) * -1);border:0;color:var(--color);display:block;font-weight:var(--font-weight);padding:var(--item-padding);text-align:left;width:100%}.br-item .row{margin-left:calc(-1*var(--spacing-scale-base));margin-right:calc(-1*var(--spacing-scale-base))}.br-item .row .col,.br-item .row [class*=col-]{padding-left:var(--spacing-scale-base);padding-right:var(--spacing-scale-base)}.br-item::after{clear:both;content:"";display:block}.br-item[data-toggle]{cursor:pointer}.br-item[data-toggle=selection]:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--color-rgb), var(--hover))), to(rgba(var(--color-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)))}.br-item>.br-checkbox:not(.hidden-label),.br-item>.br-radio:not(.hidden-label){margin-bottom:calc(var(--item-padding-y)*-1);margin-left:calc(var(--item-padding-x)*-1);margin-right:calc(var(--item-padding-x)*-1);margin-top:calc(var(--item-padding-y)*-1)}.br-item>.br-checkbox:not(.hidden-label) input+label,.br-item>.br-radio:not(.hidden-label) input+label{padding-bottom:var(--item-padding-y);padding-top:var(--item-padding-y);top:1px;width:100%}.br-item>.br-checkbox:not(.hidden-label) input+label::before,.br-item>.br-radio:not(.hidden-label) input+label::before{left:var(--item-padding-x);top:calc(var(--item-padding-y) - 1px)}.br-item>.br-checkbox:not(.hidden-label) input+label:empty,.br-item>.br-radio:not(.hidden-label) input+label:empty{left:0;top:1px}.br-item>.br-checkbox:not(.hidden-label) input:hover:not(:disabled)+label::before,.br-item>.br-radio:not(.hidden-label) input:hover:not(:disabled)+label::before{background-image:none}.br-item>.br-checkbox input:not(:indeterminate)+label{min-height:calc(var(--checkbox-size) + var(--item-padding-y)*2)}.br-item>.br-checkbox input:not(:indeterminate)+label:not(:empty){padding-left:calc(var(--checkbox-padding) + var(--checkbox-size) + var(--item-padding-x))}.br-item>.br-checkbox input:not(:indeterminate)+label::after{left:calc(var(--item-padding-x) + 8px);top:calc(var(--item-padding-y) + 4px)}.br-item>.br-checkbox input:not(:indeterminate)+label:empty{min-height:var(--checkbox-size)}.br-item>.br-checkbox input:not(:indeterminate)+label:empty::after{left:8px;top:4px}.br-item .br-radio input+label{min-height:calc(var(--radio-size) + var(--item-padding-y)*2);padding-left:calc(var(--spacing-scale-base) + var(--radio-size) + var(--item-padding-x))}.br-item .br-radio input+label::after{left:calc(var(--item-padding-x) + var(--radio-bullet-position));top:calc(var(--item-padding-y) + var(--radio-bullet-position) - 1px)}.br-item .br-radio input+label:empty{min-height:var(--radio-size)}.br-item .br-radio input+label:empty::after{left:var(--radio-bullet-position);top:var(--radio-bullet-position)}.br-item.highlight{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark)}.br-item.selected{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark);background-color:var(--selected)}.br-item.active{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark);background-color:var(--active);color:var(--color)}.br-item.inverted,.br-item.dark-mode{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark)}.br-item.inverted.active,.br-item.dark-mode.active{--color:var(--color-light);--color-rgb:var(--color-light-rgb);--text-color:var(--color-light);--interactive:var(--interactive-light);--interactive-rgb:var(--active-rgb);--visited:var(--visited-light);--hover:var(--hover-light);--pressed:var(--pressed-light);--focus-color:var(--focus-color-light);--focus:var(--focus-color-light);background-color:var(--background-light);color:var(--active)}.br-item[data-toggle]:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--color-rgb), var(--hover))), to(rgba(var(--color-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)))}.br-item[data-toggle] .content i{color:var(--interactive)}.br-item .content{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.br-item [class*=fa-]{height:16px;width:14px !important}a.br-item{color:var(--interactive)}a.br-item:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}a.br-item:not(:disabled):active{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--pressed))), to(rgba(var(--interactive-rgb), var(--pressed))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}button.br-item{background-color:rgba(0,0,0,0);color:var(--color)}button.br-item:focus{outline:none}button.br-item:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}button.br-item:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--color-rgb), var(--hover))), to(rgba(var(--color-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)))}button.br-item:not(:disabled):active{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--color-rgb), var(--pressed))), to(rgba(var(--color-rgb), var(--pressed))));background-image:linear-gradient(rgba(var(--color-rgb), var(--pressed)), rgba(var(--color-rgb), var(--pressed)))}:host{display:block}::slotted(br-checkbox){max-width:-webkit-fit-content;max-width:-moz-fit-content;max-width:fit-content;max-height:-webkit-fit-content;max-height:-moz-fit-content;max-height:fit-content}::slotted(br-radio){max-width:-webkit-fit-content;max-width:-moz-fit-content;max-width:fit-content;max-height:-webkit-fit-content;max-height:-moz-fit-content;max-height:fit-content}.br-item:focus{cursor:auto;outline:var(--focus) var(--focus-style) var(--focus-width);outline-offset:var(--focus-offset)}.no-text-selection{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}';
|
|
10
|
-
|
|
11
|
-
const l = t(class t extends e {
|
|
9
|
+
const n = t(class t extends e {
|
|
12
10
|
constructor(t) {
|
|
13
11
|
super();
|
|
14
12
|
if (t !== false) {
|
|
@@ -24,7 +22,7 @@ const l = t(class t extends e {
|
|
|
24
22
|
/**
|
|
25
23
|
* Identificador único.
|
|
26
24
|
* Caso não seja fornecido, um ID gerado automaticamente será usado.
|
|
27
|
-
*/ this.customId = `br-item-${
|
|
25
|
+
*/ this.customId = `br-item-${l++}`
|
|
28
26
|
/**
|
|
29
27
|
* Indica se o item está no estado ativo.
|
|
30
28
|
* Se definido como verdadeiro, o item será exibido como ativo.
|
|
@@ -275,11 +273,9 @@ const l = t(class t extends e {
|
|
|
275
273
|
/**
|
|
276
274
|
* Define o foco no elemento interno do componente.
|
|
277
275
|
* Este método pode ser chamado externamente para garantir que o foco seja aplicado ao elemento correto.
|
|
278
|
-
*/ setFocus() {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
(t = this.focusableElement) === null || t === void 0 ? void 0 : t.focus();
|
|
282
|
-
}));
|
|
276
|
+
*/ async setFocus() {
|
|
277
|
+
var t;
|
|
278
|
+
(t = this.focusableElement) === null || t === void 0 ? void 0 : t.focus();
|
|
283
279
|
}
|
|
284
280
|
render() {
|
|
285
281
|
const t = this.getTagType();
|
|
@@ -317,7 +313,7 @@ const l = t(class t extends e {
|
|
|
317
313
|
return this;
|
|
318
314
|
}
|
|
319
315
|
static get style() {
|
|
320
|
-
return
|
|
316
|
+
return o;
|
|
321
317
|
}
|
|
322
318
|
}, [ 321, "br-item", {
|
|
323
319
|
disabled: [ 516 ],
|
|
@@ -338,7 +334,7 @@ const l = t(class t extends e {
|
|
|
338
334
|
setFocus: [ 64 ]
|
|
339
335
|
}, [ [ 4, "checkedChange", "handleRadioChange" ], [ 4, "checkedChange", "handleCheckboxChange" ] ] ]);
|
|
340
336
|
|
|
341
|
-
let
|
|
337
|
+
let l = 0;
|
|
342
338
|
|
|
343
339
|
function defineCustomElement() {
|
|
344
340
|
if (typeof customElements === "undefined") {
|
|
@@ -349,13 +345,13 @@ function defineCustomElement() {
|
|
|
349
345
|
switch (t) {
|
|
350
346
|
case "br-item":
|
|
351
347
|
if (!customElements.get(t)) {
|
|
352
|
-
customElements.define(t,
|
|
348
|
+
customElements.define(t, n);
|
|
353
349
|
}
|
|
354
350
|
break;
|
|
355
351
|
}
|
|
356
352
|
}));
|
|
357
353
|
}
|
|
358
354
|
|
|
359
|
-
export {
|
|
360
|
-
//# sourceMappingURL=p-
|
|
361
|
-
//# sourceMappingURL=p-
|
|
355
|
+
export { n as I, defineCustomElement as d };
|
|
356
|
+
//# sourceMappingURL=p-CwtLw60M.js.map
|
|
357
|
+
//# sourceMappingURL=p-CwtLw60M.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["itemCss","Item","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","disabled","customId","itemId","isActive","isSelected","isInteractive","isButton","density","hasSlotDefault","hasSlotStart","hasSlotEnd","selectedValue","hasRadios","handleMouseDown","event","shouldPreventDefault","href","undefined","length","preventDefault","handleClick","stopPropagation","clickedElement","target","brDidClick","emit","isClickInsideInteractiveElement","previousSelectedValue","brDidSelect","selected","updateCheckboxes","handleKeydownEvent","handleKeydown","handleRadioChange","requestAnimationFrame","updateRadioSelectionState","handleCheckboxChange","el","contains","updateCheckboxSelectionState","componentWillLoad","hasSlotContentDefault","hasSlotContent","type","radios","Array","from","querySelectorAll","checkboxes","forEach","checkbox","checked","innerHTML","slotName","querySelector","getCssClassMap","active","getTagType","_a","getAttributes","TagType","baseAttributes","value","Object","assign","some","radio","interactiveSelectors","interactiveElements","console","log","listContainer","closest","error","listItems","warn","currentIndex","indexOf","targetItem","key","MouseEvent","setFocus","scrollIntoView","behavior","block","inline","focusableElement","focus","render","attributes","classList","h","Host","class","onClick","id","ref","onKeyDown","onMouseDown","name"],"sources":["../../packages/webcomponents/src/components/item/item.scss?tag=br-item&encapsulation=shadow","../../packages/webcomponents/src/components/item/item.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/item/item\";\n\n:host {\n display: block;\n}\n\n::slotted(br-checkbox) {\n max-width: fit-content;\n max-height: fit-content;\n}\n\n::slotted(br-radio) {\n max-width: fit-content;\n max-height: fit-content;\n}\n\n.br-item:focus {\n cursor: auto;\n outline: var(--focus) var(--focus-style) var(--focus-width);\n outline-offset: var(--focus-offset);\n}\n\n.no-text-selection {\n user-select: none;\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n} from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/item?tab=designer).\n *\n * @slot default - Área de conteúdo, podendo conter qualquer componente, exceto botões primários e componentes relacionados à navegação (como carrosséis, paginações, abas, menus, etc.).\n *\n * @slot start - Área de recursos visuais, podendo conter elementos como ícones, avatares e mídias.\n *\n * @slot end - Área de recursos complementares, podendo conter componentes interativos, metadados e informações adicionais.\n */\n@Component({\n tag: 'br-item',\n styleUrl: 'item.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Item {\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: HTMLBrItemElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Desativa o item, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-item-${itemId++}`\n\n /**\n * Indica se o item está no estado ativo.\n * Se definido como verdadeiro, o item será exibido como ativo.\n */\n @Prop({ reflect: true }) readonly isActive: boolean = false\n\n /**\n * Indica se o item está no estado selecionado.\n * Se definido como verdadeiro, o item será exibido como selecionado.\n */\n @Prop({ reflect: true }) readonly isSelected: boolean = false\n\n /**\n * Marca o item como interativo, permitindo que toda a superfície do item seja clicável.\n */\n @Prop({ reflect: true }) readonly isInteractive: boolean = false\n\n /**\n * URL ou caminho para o qual o usuário será direcionado ao clicar no item. Quando definido, o item será renderizado como um link.\n */\n @Prop({ reflect: true }) readonly href?: string\n\n /**\n * Define o alvo do link quando `href` está presente. Pode ser:\n * - `_blank` para abrir em uma nova aba,\n * - `_self` para abrir na mesma aba,\n * - `_parent` para abrir na aba pai,\n * - `_top` para abrir na aba superior.\n */\n @Prop({ reflect: true }) readonly target?: '_blank' | '_self' | '_parent' | '_top'\n\n /**\n * Quando definido como `true`, o item será tratado como um botão.\n */\n @Prop({ reflect: true }) readonly isButton: boolean = false\n\n /**\n * Tipo do botão, aplicável apenas se `isButton` for `true`. Pode ser:\n * - `'submit'` para enviar um formulário,\n * - `'reset'` para redefinir um formulário,\n * - `'button'` para um botão padrão.\n */\n @Prop({ reflect: true, mutable: true }) type: 'submit' | 'reset' | 'button'\n\n /**\n * Define um valor associado ao br-item quando renderizado como um botão, utilizado em contextos de formulário.\n */\n @Prop({ reflect: true }) readonly value?: string\n\n /**\n * Ajusta a densidade, alterando o espaçamento interno para um visual mais compacto ou mais expandido.\n */\n @Prop({ reflect: true }) readonly density: 'large' | 'medium' | 'small' = 'medium'\n\n // Propriedade interna para verificar a presença de conteúdo no slot default\n @State() hasSlotDefault: boolean = false\n\n @State() hasSlotStart: boolean = false\n\n @State() hasSlotEnd: boolean = false\n\n // Propriedade interna para armazenar o valor selecionado\n @State() selectedValue: boolean = false\n\n // Propriedade para rastrear a presença de rádios dentro do item\n private hasRadios: boolean = false\n\n // Referência ao elemento interno que deve receber o foco\n private focusableElement?: HTMLElement\n\n @Listen('checkedChange', { target: 'document' })\n handleRadioChange() {\n requestAnimationFrame(() => {\n this.updateRadioSelectionState()\n })\n }\n\n @Listen('checkedChange', { target: 'document' })\n handleCheckboxChange(event: Event) {\n const target = event.target as HTMLElement\n\n if (this.el.contains(target)) {\n this.updateCheckboxSelectionState()\n }\n }\n\n /**\n * Evento customizado emitido quando o item é clicado, aplicável apenas se o item for um botão (`<button>`).\n * Pode ser utilizado para ações personalizadas, exceto quando o item está desativado.\n */\n @Event({ composed: true, cancelable: true, bubbles: true }) brDidClick: EventEmitter\n\n /**\n * Evento customizado aplicável para todos os tipos de elementos (`div`, `button`, `a`), emitido quando o item é selecionado e desde que a propriedade `isInteractive` esteja presente.\n */\n @Event({ bubbles: true, composed: true }) brDidSelect: EventEmitter<{ selected: boolean }>\n\n componentWillLoad() {\n this.hasSlotContentDefault()\n this.hasSlotStart = this.hasSlotContent('start')\n this.hasSlotEnd = this.hasSlotContent('end')\n this.selectedValue = this.isSelected\n if (this.isButton) {\n this.type = this.type || 'button'\n }\n const radios = Array.from(this.el.querySelectorAll('br-radio'))\n const checkboxes = Array.from(this.el.querySelectorAll('br-checkbox'))\n this.hasRadios = radios.length > 0\n\n if (this.isSelected) {\n if (checkboxes.length > 0) {\n checkboxes.forEach((checkbox) => (checkbox.checked = true))\n }\n if (radios.length > 0) {\n radios[0].checked = true\n }\n }\n\n this.updateRadioSelectionState()\n this.updateCheckboxSelectionState()\n }\n\n private hasSlotContentDefault(): void {\n this.hasSlotDefault = this.el.innerHTML !== ''\n }\n\n private hasSlotContent(slotName: string): boolean {\n return this.el.querySelector(`[slot=\"${slotName}\"]`) !== null\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-item': true,\n disabled: this.disabled,\n active: this.isActive,\n selected: this.selectedValue,\n 'py-3': this.density === 'medium',\n 'py-4': this.density === 'small',\n 'no-text-selection': this.isButton || (this.href !== undefined && this.href.length > 0) || this.disabled,\n }\n }\n\n private getTagType(): string {\n if (this.isButton) {\n return 'button'\n }\n if (this.href?.length > 0) {\n return 'a'\n }\n return 'div'\n }\n\n private getAttributes() {\n const TagType = this.getTagType()\n const baseAttributes =\n TagType === 'button' ? { type: this.type, value: this.value } : { href: this.href, target: this.target }\n\n return {\n ...baseAttributes,\n 'aria-disabled': this.disabled ? 'true' : null,\n 'aria-current': this.isActive ? 'true' : null,\n 'data-toggle': this.isInteractive ? 'selection' : null,\n 'is-selected': this.selectedValue ? true : null,\n }\n }\n\n private updateCheckboxSelectionState() {\n if (this.hasRadios) return\n\n const checkboxes = Array.from(this.el.querySelectorAll('br-checkbox'))\n\n this.selectedValue = checkboxes.some((checkbox) => checkbox.checked)\n this.brDidSelect.emit({ selected: this.selectedValue })\n }\n\n private updateRadioSelectionState() {\n if (!this.hasRadios) return\n\n const radios = Array.from(this.el.querySelectorAll('br-radio'))\n\n this.selectedValue = radios.some((radio) => radio.checked)\n this.brDidSelect.emit({ selected: this.selectedValue })\n }\n\n /**\n * Gerencia o evento mousedown aplicando preventDefault() apenas nos casos necessários:\n * - quando o item é um link (href definido)\n * - quando o item está desabilitado\n * Isso permite a seleção de texto normal em botões ou itens de leitura.\n */\n private handleMouseDown = (event: MouseEvent) => {\n const shouldPreventDefault = (this.href !== undefined && this.href.length > 0) || this.disabled\n if (shouldPreventDefault) {\n event.preventDefault()\n }\n }\n\n // Função para verificar se o clique foi dentro do slot do item.\n private isClickInsideInteractiveElement(target: HTMLElement): boolean {\n const interactiveSelectors = 'br-checkbox, br-radio, br-input, br-button, br-select, br-textarea'\n const interactiveElements = this.el.querySelectorAll(interactiveSelectors)\n return Array.from(interactiveElements).some((el) => el.contains(target) || target === el)\n }\n\n private updateCheckboxes() {\n const checkboxes = Array.from(this.el.querySelectorAll('br-checkbox'))\n\n checkboxes.forEach((checkbox) => {\n checkbox.checked = this.selectedValue\n })\n }\n\n private readonly handleClick = (event: MouseEvent) => {\n if (this.disabled) {\n event.preventDefault()\n event.stopPropagation()\n return\n }\n\n const clickedElement = event.target as HTMLElement\n\n if (this.hasRadios) {\n return\n }\n\n if (this.isButton) {\n this.brDidClick.emit()\n } else if (this.isInteractive && !this.isClickInsideInteractiveElement(clickedElement)) {\n // Armazena o estado anterior para emitir o evento apenas se houver mudança.\n const previousSelectedValue = this.selectedValue\n this.selectedValue = !this.selectedValue\n\n if (previousSelectedValue !== this.selectedValue) {\n this.brDidSelect.emit({ selected: this.selectedValue })\n }\n\n this.updateCheckboxes()\n }\n\n event.stopPropagation()\n }\n\n /**\n * Método usado para associar ao evento onKeyDown no JSX\n * Evita problemas de lint com arrow functions ou bind() no JSX\n */\n private readonly handleKeydownEvent = (event: KeyboardEvent) => {\n this.handleKeydown(event)\n }\n\n /**\n * Manipula o evento keydown internamente\n */\n private handleKeydown(event: KeyboardEvent) {\n if (this.disabled) {\n console.log(`[br-item ${this.customId}] Item desativado, ignorando tecla pressionada(keydown).`)\n return\n }\n\n const listContainer = this.el.closest('br-list')\n if (listContainer === null || listContainer === undefined) {\n console.error(`[br-item ${this.customId}] Não foi possível encontrar o container pai <br-list>.`)\n return\n }\n\n const listItems = Array.from(listContainer.querySelectorAll('br-item:not([disabled])')) as HTMLBrItemElement[]\n if (listItems.length === 0) {\n console.warn(`[br-item ${this.customId}] Nenhum item navegável encontrado no container da lista.`)\n return\n }\n\n const currentIndex = listItems.indexOf(this.el)\n\n if (currentIndex === -1) {\n console.error(`[br-item ${this.customId}] Item atual não encontrado nos itens navegáveis.`)\n return // O item atual não está na lista (talvez desabilitado ou erro)\n }\n\n let targetItem: HTMLBrItemElement | null = null\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n if (currentIndex < listItems.length - 1) {\n targetItem = listItems[currentIndex + 1]\n } else {\n console.log(`[br-item ${this.customId}] ArrowDown: Último item já selecionado.`)\n }\n break\n\n case 'ArrowUp':\n event.preventDefault()\n if (currentIndex > 0) {\n targetItem = listItems[currentIndex - 1]\n } else {\n console.log(`[br-item ${this.customId}] ArrowUp: Usuário já está no primeiro item da lista.`)\n }\n break\n\n case 'Enter':\n case ' ':\n event.preventDefault()\n this.handleClick(new MouseEvent('click'))\n break\n\n case 'Home':\n event.preventDefault()\n targetItem = listItems[0]\n break\n\n case 'End':\n event.preventDefault()\n targetItem = listItems[listItems.length - 1]\n break\n\n default:\n return\n }\n\n if (targetItem && targetItem !== this.el) {\n if ('setFocus' in targetItem) {\n // Se o item alvo tiver o método setFocus, chama-o\n ;(targetItem as { setFocus: () => void }).setFocus()\n }\n // Caso contrário, apenas defina o foco no elemento alvo\n targetItem.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' })\n }\n }\n\n /**\n * Define o foco no elemento interno do componente.\n * Este método pode ser chamado externamente para garantir que o foco seja aplicado ao elemento correto.\n */\n @Method()\n async setFocus() {\n this.focusableElement?.focus()\n }\n\n render() {\n const TagType = this.getTagType()\n const attributes = this.getAttributes()\n const classList = this.getCssClassMap()\n return (\n <Host>\n <TagType\n class={classList}\n {...attributes}\n onClick={this.handleClick}\n id={this.customId}\n ref={(el) => (this.focusableElement = el as HTMLElement)}\n onKeyDown={this.handleKeydownEvent}\n onMouseDown={this.handleMouseDown}\n >\n {this.hasSlotStart || this.hasSlotEnd ? (\n <div class=\"row align-items-center\">\n {this.hasSlotStart && (\n <div class=\"col-auto\">\n <slot name=\"start\"></slot>\n </div>\n )}\n\n <div class=\"col\">\n <slot></slot>\n </div>\n\n {this.hasSlotEnd && (\n <div class=\"col-auto\">\n <slot name=\"end\"></slot>\n </div>\n )}\n </div>\n ) : (\n <slot></slot>\n )}\n </TagType>\n </Host>\n )\n }\n}\n\nlet itemId = 0\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["itemCss","Item","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","disabled","customId","itemId","isActive","isSelected","isInteractive","isButton","density","hasSlotDefault","hasSlotStart","hasSlotEnd","selectedValue","hasRadios","handleMouseDown","event","shouldPreventDefault","href","undefined","length","preventDefault","handleClick","stopPropagation","clickedElement","target","brDidClick","emit","isClickInsideInteractiveElement","previousSelectedValue","brDidSelect","selected","updateCheckboxes","handleKeydownEvent","handleKeydown","handleRadioChange","requestAnimationFrame","updateRadioSelectionState","handleCheckboxChange","el","contains","updateCheckboxSelectionState","componentWillLoad","hasSlotContentDefault","hasSlotContent","type","radios","Array","from","querySelectorAll","checkboxes","forEach","checkbox","checked","innerHTML","slotName","querySelector","getCssClassMap","active","getTagType","_a","getAttributes","TagType","baseAttributes","value","Object","assign","some","radio","interactiveSelectors","interactiveElements","console","log","listContainer","closest","error","listItems","warn","currentIndex","indexOf","targetItem","key","MouseEvent","setFocus","scrollIntoView","behavior","block","inline","focusableElement","focus","render","attributes","classList","h","Host","class","onClick","id","ref","onKeyDown","onMouseDown","name"],"sources":["../../packages/webcomponents/src/components/item/item.scss?tag=br-item&encapsulation=shadow","../../packages/webcomponents/src/components/item/item.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/item/item\";\n\n:host {\n display: block;\n}\n\n::slotted(br-checkbox) {\n max-width: fit-content;\n max-height: fit-content;\n}\n\n::slotted(br-radio) {\n max-width: fit-content;\n max-height: fit-content;\n}\n\n.br-item:focus {\n cursor: auto;\n outline: var(--focus) var(--focus-style) var(--focus-width);\n outline-offset: var(--focus-offset);\n}\n\n.no-text-selection {\n user-select: none;\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n} from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/item?tab=designer).\n *\n * @slot default - Área de conteúdo, podendo conter qualquer componente, exceto botões primários e componentes relacionados à navegação (como carrosséis, paginações, abas, menus, etc.).\n *\n * @slot start - Área de recursos visuais, podendo conter elementos como ícones, avatares e mídias.\n *\n * @slot end - Área de recursos complementares, podendo conter componentes interativos, metadados e informações adicionais.\n */\n@Component({\n tag: 'br-item',\n styleUrl: 'item.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Item {\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: HTMLBrItemElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Desativa o item, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-item-${itemId++}`\n\n /**\n * Indica se o item está no estado ativo.\n * Se definido como verdadeiro, o item será exibido como ativo.\n */\n @Prop({ reflect: true }) readonly isActive: boolean = false\n\n /**\n * Indica se o item está no estado selecionado.\n * Se definido como verdadeiro, o item será exibido como selecionado.\n */\n @Prop({ reflect: true }) readonly isSelected: boolean = false\n\n /**\n * Marca o item como interativo, permitindo que toda a superfície do item seja clicável.\n */\n @Prop({ reflect: true }) readonly isInteractive: boolean = false\n\n /**\n * URL ou caminho para o qual o usuário será direcionado ao clicar no item. Quando definido, o item será renderizado como um link.\n */\n @Prop({ reflect: true }) readonly href?: string\n\n /**\n * Define o alvo do link quando `href` está presente. Pode ser:\n * - `_blank` para abrir em uma nova aba,\n * - `_self` para abrir na mesma aba,\n * - `_parent` para abrir na aba pai,\n * - `_top` para abrir na aba superior.\n */\n @Prop({ reflect: true }) readonly target?: '_blank' | '_self' | '_parent' | '_top'\n\n /**\n * Quando definido como `true`, o item será tratado como um botão.\n */\n @Prop({ reflect: true }) readonly isButton: boolean = false\n\n /**\n * Tipo do botão, aplicável apenas se `isButton` for `true`. Pode ser:\n * - `'submit'` para enviar um formulário,\n * - `'reset'` para redefinir um formulário,\n * - `'button'` para um botão padrão.\n */\n @Prop({ reflect: true, mutable: true }) type: 'submit' | 'reset' | 'button'\n\n /**\n * Define um valor associado ao br-item quando renderizado como um botão, utilizado em contextos de formulário.\n */\n @Prop({ reflect: true }) readonly value?: string\n\n /**\n * Ajusta a densidade, alterando o espaçamento interno para um visual mais compacto ou mais expandido.\n */\n @Prop({ reflect: true }) readonly density: 'large' | 'medium' | 'small' = 'medium'\n\n // Propriedade interna para verificar a presença de conteúdo no slot default\n @State() hasSlotDefault: boolean = false\n\n @State() hasSlotStart: boolean = false\n\n @State() hasSlotEnd: boolean = false\n\n // Propriedade interna para armazenar o valor selecionado\n @State() selectedValue: boolean = false\n\n // Propriedade para rastrear a presença de rádios dentro do item\n private hasRadios: boolean = false\n\n // Referência ao elemento interno que deve receber o foco\n private focusableElement?: HTMLElement\n\n @Listen('checkedChange', { target: 'document' })\n handleRadioChange() {\n requestAnimationFrame(() => {\n this.updateRadioSelectionState()\n })\n }\n\n @Listen('checkedChange', { target: 'document' })\n handleCheckboxChange(event: Event) {\n const target = event.target as HTMLElement\n\n if (this.el.contains(target)) {\n this.updateCheckboxSelectionState()\n }\n }\n\n /**\n * Evento customizado emitido quando o item é clicado, aplicável apenas se o item for um botão (`<button>`).\n * Pode ser utilizado para ações personalizadas, exceto quando o item está desativado.\n */\n @Event({ composed: true, cancelable: true, bubbles: true }) brDidClick: EventEmitter\n\n /**\n * Evento customizado aplicável para todos os tipos de elementos (`div`, `button`, `a`), emitido quando o item é selecionado e desde que a propriedade `isInteractive` esteja presente.\n */\n @Event({ bubbles: true, composed: true }) brDidSelect: EventEmitter<{ selected: boolean }>\n\n componentWillLoad() {\n this.hasSlotContentDefault()\n this.hasSlotStart = this.hasSlotContent('start')\n this.hasSlotEnd = this.hasSlotContent('end')\n this.selectedValue = this.isSelected\n if (this.isButton) {\n this.type = this.type || 'button'\n }\n const radios = Array.from(this.el.querySelectorAll('br-radio'))\n const checkboxes = Array.from(this.el.querySelectorAll('br-checkbox'))\n this.hasRadios = radios.length > 0\n\n if (this.isSelected) {\n if (checkboxes.length > 0) {\n checkboxes.forEach((checkbox) => (checkbox.checked = true))\n }\n if (radios.length > 0) {\n radios[0].checked = true\n }\n }\n\n this.updateRadioSelectionState()\n this.updateCheckboxSelectionState()\n }\n\n private hasSlotContentDefault(): void {\n this.hasSlotDefault = this.el.innerHTML !== ''\n }\n\n private hasSlotContent(slotName: string): boolean {\n return this.el.querySelector(`[slot=\"${slotName}\"]`) !== null\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-item': true,\n disabled: this.disabled,\n active: this.isActive,\n selected: this.selectedValue,\n 'py-3': this.density === 'medium',\n 'py-4': this.density === 'small',\n 'no-text-selection': this.isButton || (this.href !== undefined && this.href.length > 0) || this.disabled,\n }\n }\n\n private getTagType(): string {\n if (this.isButton) {\n return 'button'\n }\n if (this.href?.length > 0) {\n return 'a'\n }\n return 'div'\n }\n\n private getAttributes() {\n const TagType = this.getTagType()\n const baseAttributes =\n TagType === 'button' ? { type: this.type, value: this.value } : { href: this.href, target: this.target }\n\n return {\n ...baseAttributes,\n 'aria-disabled': this.disabled ? 'true' : null,\n 'aria-current': this.isActive ? 'true' : null,\n 'data-toggle': this.isInteractive ? 'selection' : null,\n 'is-selected': this.selectedValue ? true : null,\n }\n }\n\n private updateCheckboxSelectionState() {\n if (this.hasRadios) return\n\n const checkboxes = Array.from(this.el.querySelectorAll('br-checkbox'))\n\n this.selectedValue = checkboxes.some((checkbox) => checkbox.checked)\n this.brDidSelect.emit({ selected: this.selectedValue })\n }\n\n private updateRadioSelectionState() {\n if (!this.hasRadios) return\n\n const radios = Array.from(this.el.querySelectorAll('br-radio'))\n\n this.selectedValue = radios.some((radio) => radio.checked)\n this.brDidSelect.emit({ selected: this.selectedValue })\n }\n\n /**\n * Gerencia o evento mousedown aplicando preventDefault() apenas nos casos necessários:\n * - quando o item é um link (href definido)\n * - quando o item está desabilitado\n * Isso permite a seleção de texto normal em botões ou itens de leitura.\n */\n private handleMouseDown = (event: MouseEvent) => {\n const shouldPreventDefault = (this.href !== undefined && this.href.length > 0) || this.disabled\n if (shouldPreventDefault) {\n event.preventDefault()\n }\n }\n\n // Função para verificar se o clique foi dentro do slot do item.\n private isClickInsideInteractiveElement(target: HTMLElement): boolean {\n const interactiveSelectors = 'br-checkbox, br-radio, br-input, br-button, br-select, br-textarea'\n const interactiveElements = this.el.querySelectorAll(interactiveSelectors)\n return Array.from(interactiveElements).some((el) => el.contains(target) || target === el)\n }\n\n private updateCheckboxes() {\n const checkboxes = Array.from(this.el.querySelectorAll('br-checkbox'))\n\n checkboxes.forEach((checkbox) => {\n checkbox.checked = this.selectedValue\n })\n }\n\n private readonly handleClick = (event: MouseEvent) => {\n if (this.disabled) {\n event.preventDefault()\n event.stopPropagation()\n return\n }\n\n const clickedElement = event.target as HTMLElement\n\n if (this.hasRadios) {\n return\n }\n\n if (this.isButton) {\n this.brDidClick.emit()\n } else if (this.isInteractive && !this.isClickInsideInteractiveElement(clickedElement)) {\n // Armazena o estado anterior para emitir o evento apenas se houver mudança.\n const previousSelectedValue = this.selectedValue\n this.selectedValue = !this.selectedValue\n\n if (previousSelectedValue !== this.selectedValue) {\n this.brDidSelect.emit({ selected: this.selectedValue })\n }\n\n this.updateCheckboxes()\n }\n\n event.stopPropagation()\n }\n\n /**\n * Método usado para associar ao evento onKeyDown no JSX\n * Evita problemas de lint com arrow functions ou bind() no JSX\n */\n private readonly handleKeydownEvent = (event: KeyboardEvent) => {\n this.handleKeydown(event)\n }\n\n /**\n * Manipula o evento keydown internamente\n */\n private handleKeydown(event: KeyboardEvent) {\n if (this.disabled) {\n console.log(`[br-item ${this.customId}] Item desativado, ignorando tecla pressionada(keydown).`)\n return\n }\n\n const listContainer = this.el.closest('br-list')\n if (listContainer === null || listContainer === undefined) {\n console.error(`[br-item ${this.customId}] Não foi possível encontrar o container pai <br-list>.`)\n return\n }\n\n const listItems = Array.from(listContainer.querySelectorAll('br-item:not([disabled])')) as HTMLBrItemElement[]\n if (listItems.length === 0) {\n console.warn(`[br-item ${this.customId}] Nenhum item navegável encontrado no container da lista.`)\n return\n }\n\n const currentIndex = listItems.indexOf(this.el)\n\n if (currentIndex === -1) {\n console.error(`[br-item ${this.customId}] Item atual não encontrado nos itens navegáveis.`)\n return // O item atual não está na lista (talvez desabilitado ou erro)\n }\n\n let targetItem: HTMLBrItemElement | null = null\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n if (currentIndex < listItems.length - 1) {\n targetItem = listItems[currentIndex + 1]\n } else {\n console.log(`[br-item ${this.customId}] ArrowDown: Último item já selecionado.`)\n }\n break\n\n case 'ArrowUp':\n event.preventDefault()\n if (currentIndex > 0) {\n targetItem = listItems[currentIndex - 1]\n } else {\n console.log(`[br-item ${this.customId}] ArrowUp: Usuário já está no primeiro item da lista.`)\n }\n break\n\n case 'Enter':\n case ' ':\n event.preventDefault()\n this.handleClick(new MouseEvent('click'))\n break\n\n case 'Home':\n event.preventDefault()\n targetItem = listItems[0]\n break\n\n case 'End':\n event.preventDefault()\n targetItem = listItems[listItems.length - 1]\n break\n\n default:\n return\n }\n\n if (targetItem && targetItem !== this.el) {\n if ('setFocus' in targetItem) {\n // Se o item alvo tiver o método setFocus, chama-o\n ;(targetItem as { setFocus: () => void }).setFocus()\n }\n // Caso contrário, apenas defina o foco no elemento alvo\n targetItem.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' })\n }\n }\n\n /**\n * Define o foco no elemento interno do componente.\n * Este método pode ser chamado externamente para garantir que o foco seja aplicado ao elemento correto.\n */\n @Method()\n async setFocus() {\n this.focusableElement?.focus()\n }\n\n render() {\n const TagType = this.getTagType()\n const attributes = this.getAttributes()\n const classList = this.getCssClassMap()\n return (\n <Host>\n <TagType\n class={classList}\n {...attributes}\n onClick={this.handleClick}\n id={this.customId}\n ref={(el) => (this.focusableElement = el as HTMLElement)}\n onKeyDown={this.handleKeydownEvent}\n onMouseDown={this.handleMouseDown}\n >\n {this.hasSlotStart || this.hasSlotEnd ? (\n <div class=\"row align-items-center\">\n {this.hasSlotStart && (\n <div class=\"col-auto\">\n <slot name=\"start\"></slot>\n </div>\n )}\n\n <div class=\"col\">\n <slot></slot>\n </div>\n\n {this.hasSlotEnd && (\n <div class=\"col-auto\">\n <slot name=\"end\"></slot>\n </div>\n )}\n </div>\n ) : (\n <slot></slot>\n )}\n </TagType>\n </Host>\n )\n }\n}\n\nlet itemId = 0\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,15 +4,13 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { p as t, H as e, d as i, h as a, c as r } from "./p-DSkSDmzD.js";
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { F as o } from "./p-k0WZfTfL.js";
|
|
8
8
|
|
|
9
|
-
import {
|
|
9
|
+
import { H as n } from "./p-D4N4PPot.js";
|
|
10
10
|
|
|
11
|
-
import { H as s } from "./p-D4N4PPot.js";
|
|
11
|
+
const s = "*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{line-height:var(--font-line-height-medium);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}body{margin:0}main{display:block}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}a{background-color:rgba(0,0,0,0)}b,strong{font-weight:bolder}small{font-size:80%}img{border-style:none}button,input,select,textarea{font-family:inherit;font-size:100%;line-height:var(--font-line-height-medium);margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;-moz-appearance:button;appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.d-none{display:none !important}.d-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}@media (min-width: 576px){.d-sm-block{display:block !important}.d-sm-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}.justify-content-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.align-items-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.col,[class*=col-]{padding-left:calc(var(--grid-gutter)*.5);padding-right:calc(var(--grid-gutter)*.5);width:100%}.col{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;min-width:8.3333333333%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-2{-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.container,.container-lg{--grid-margin:var(--grid-portrait-margin);--grid-maxwidth:var(--grid-portrait-maxwidth);margin-left:auto;margin-right:auto;max-width:var(--grid-maxwidth);padding-left:var(--grid-margin);padding-right:var(--grid-margin);width:100%}.row{--grid-gutter:var(--grid-portrait-gutter);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:calc(var(--grid-gutter)*-0.5);margin-right:calc(var(--grid-gutter)*-0.5)}@media (min-width: 576px){.container,.container-lg{--grid-margin:var(--grid-tablet-margin)}.row{--grid-gutter:var(--grid-tablet-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-sm) - var(--grid-tablet-margin))}.col-sm-4{-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}}@media (min-width: 992px){.container,.container-lg{--grid-margin:var(--grid-tablet-margin)}.row{--grid-gutter:var(--grid-tablet-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-md) - var(--grid-tablet-margin))}}@media (min-width: 1280px){.container,.container-lg{--grid-margin:var(--grid-desktop-margin)}.row{--grid-gutter:var(--grid-desktop-gutter)}.container,.container-lg{--grid-maxwidth:calc(var(--grid-breakpoint-lg) - var(--grid-desktop-margin))}.col-lg-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}}@media (min-width: 1600px){.container,.container-lg{--grid-margin:var(--grid-tv-margin)}.row{--grid-gutter:var(--grid-tv-gutter)}.container,.container-lg{--grid-maxwidth:calc(var(--grid-breakpoint-xl) - var(--grid-tv-margin))}}.mr-1{margin-right:var(--spacing-scale-half) !important}.mb-1{margin-bottom:var(--spacing-scale-half) !important}.ml-1{margin-left:var(--spacing-scale-half) !important}.mr-n2{margin-right:calc(var(--spacing-scale-base)*-1) !important}.ml-2{margin-left:var(--spacing-scale-base) !important}.mx-3{margin-left:var(--spacing-scale-2x) !important;margin-right:var(--spacing-scale-2x) !important}.mr-auto{margin-right:auto !important}.ml-auto{margin-left:auto !important}.pt-half{padding-top:var(--spacing-scale-half) !important}.py-3{padding-bottom:var(--spacing-scale-2x) !important;padding-top:var(--spacing-scale-2x) !important}.py-4{padding-bottom:var(--spacing-scale-3x) !important;padding-top:var(--spacing-scale-3x) !important}@media (min-width: 576px){.ml-sm-0{margin-left:var(--spacing-scale-default) !important}}body{--bg-color:var(--background);--bg-color-rgb:var(--background-rgb);--bg-color-hsl:var(--background-hsl);--font-size:var(--font-size-scale-base);--font-weight:var(--font-weight-regular);--link-color:var(--interactive);--link-color-rgb:var(--interactive-rgb);--link-color-hsl:var(--interactive-hsl);--line-height:var(--font-line-height-medium);--text-color:var(--color);--text-color-rgb:var(--color-rgb);--text-color-hsl:var(--color-hsl);background:var(--bg-color);color:var(--text-color);font-family:var(--font-family-base);font-size:var(--font-size);font-weight:var(--font-weight);line-height:var(--line-height)}p{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-2x);margin-top:0}p a{text-decoration:underline}@media (min-width: 576px){p{font-size:var(--font-size-scale-up-01)}}a{--focus-offset:var(--spacing-scale-half)}a:focus{outline:none}a:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}a:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}a:not(:disabled):active{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--pressed))), to(rgba(var(--interactive-rgb), var(--pressed))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}a{color:var(--interactive);text-decoration:none}button{cursor:pointer}img{max-width:100%;vertical-align:middle}h2,.h2{color:var(--color);font-size:var(--font-size-scale-up-03);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2xh);margin-top:var(--spacing-scale-3xh);padding-bottom:var(--spacing-scale-2xh)}@media (min-width: 576px){.h2,h2{font-size:var(--font-size-scale-up-05);font-weight:var(--font-weight-regular)}}ul,ol{margin-bottom:var(--spacing-scale-2x);margin-top:0;padding:0 0 0 var(--spacing-scale-5x)}table{--table-background:var(--background);--table-color:var(--color);--table-border-color:var(--gray-20);--table-border-style:solid;--table-border-width:1px;--table-hover:var(--color-rgb);--table-padding:var(--spacing-scale-3x);--table-font-weight:var(--font-weight-medium);--table-th-background:var(--background-alternative);--table-th-font-weight:var(--font-weight-semi-bold);--table-row-size:var(--spacing-scale-2x);border-collapse:collapse;width:100%}label,.label{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half)}::-webkit-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::-moz-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::-ms-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::placeholder,.placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}input,textarea,.input{color:var(--color-light);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-half)}.text-pure-0{color:var(--pure-0) !important}.bg-interactive{--background:var(--interactive);background:var(--interactive) !important}.text-primary-default{color:var(--color-primary-default) !important}.text-center{text-align:center !important}.text-right{text-align:right !important}.text-nowrap{white-space:nowrap !important}.text-uppercase{text-transform:uppercase !important}.text-medium{font-weight:500 !important}.text-bold{font-weight:700 !important}.text-down-01{font-size:var(--font-size-scale-down-01) !important}@media (min-width: 576px){.text-sm-center{text-align:center !important}.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}}.ease{-webkit-animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1);animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1)}.ease-in-out{-webkit-animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1);animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1)}.fab{--icon-size:var(--icon-size-base);display:inline-block;font-size:var(--icon-size);text-align:center;width:calc(var(--icon-size) + 8px)}.highlight{background:var(--status-highlight-background) -webkit-gradient(linear, left top, left bottom, from(var(--status-highlight-overlay)), to(var(--status-highlight-overlay)));background:var(--status-highlight-background) linear-gradient(var(--status-highlight-overlay), var(--status-highlight-overlay));color:var(--status-highlight-text);padding:0 var(--spacing-scale-half)}[disabled],.disabled{cursor:not-allowed;opacity:var(--disabled)}[disabled] *,.disabled *{pointer-events:none}[data-toggle=dropdown]+*{position:absolute}.dropdown{position:relative}.dropdown [data-toggle=dropdown]+*{-webkit-box-shadow:var(--surface-shadow-sm);box-shadow:var(--surface-shadow-sm);left:0;position:absolute;top:100%}.dropdown .br-item{--color:var(--color-light);--color-rgb:var(--color-light-rgb);--text-color:var(--color-light);--interactive:var(--interactive-light);--interactive-rgb:var(--color-rgb);--visited:var(--visited-light);--hover:var(--hover-light);--pressed:var(--pressed-light);--focus-color:var(--focus-color-light);--focus:var(--focus-color-light);--item-padding-y:var(--spacing-scale-2x);background-color:var(--background-light);color:var(--color)}.dropdown .br-item:not(:last-child){border-bottom:1px solid var(--border-color)}.dropdown .br-item.selected{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark)}*[data-toggle=collapse]:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}*[data-toggle=collapse]:focus{outline:none}*[data-toggle=collapse]:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}:host{display:block;position:relative}:host #trigger{display:inline-block;cursor:pointer;outline:none}:host #trigger::slotted([slot=trigger]):focus:focus{outline:none}:host #trigger::slotted([slot=trigger]):focus:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}:host ::slotted([slot=target] *:focus):focus{outline:none}:host ::slotted([slot=target] *:focus):focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}:host #target{display:none;position:absolute;-webkit-box-shadow:var(--surface-shadow-sm);box-shadow:var(--surface-shadow-sm);z-index:var(--z-index-layer-1)}:host #target:focus:focus{outline:none}:host #target:focus:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}:host([is-open]) #target{display:block;width:-webkit-max-content;width:-moz-max-content;width:max-content}@media (max-width: 575px){:host([is-open]) #target{width:100vw !important;max-width:100vw !important}}";
|
|
12
12
|
|
|
13
|
-
const l = "*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{line-height:var(--font-line-height-medium);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}body{margin:0}main{display:block}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}a{background-color:rgba(0,0,0,0)}b,strong{font-weight:bolder}small{font-size:80%}img{border-style:none}button,input,select,textarea{font-family:inherit;font-size:100%;line-height:var(--font-line-height-medium);margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;-moz-appearance:button;appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.d-none{display:none !important}.d-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}@media (min-width: 576px){.d-sm-block{display:block !important}.d-sm-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}.justify-content-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.align-items-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.col,[class*=col-]{padding-left:calc(var(--grid-gutter)*.5);padding-right:calc(var(--grid-gutter)*.5);width:100%}.col{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;min-width:8.3333333333%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-2{-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.container,.container-lg{--grid-margin:var(--grid-portrait-margin);--grid-maxwidth:var(--grid-portrait-maxwidth);margin-left:auto;margin-right:auto;max-width:var(--grid-maxwidth);padding-left:var(--grid-margin);padding-right:var(--grid-margin);width:100%}.row{--grid-gutter:var(--grid-portrait-gutter);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:calc(var(--grid-gutter)*-0.5);margin-right:calc(var(--grid-gutter)*-0.5)}@media (min-width: 576px){.container,.container-lg{--grid-margin:var(--grid-tablet-margin)}.row{--grid-gutter:var(--grid-tablet-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-sm) - var(--grid-tablet-margin))}.col-sm-4{-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}}@media (min-width: 992px){.container,.container-lg{--grid-margin:var(--grid-tablet-margin)}.row{--grid-gutter:var(--grid-tablet-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-md) - var(--grid-tablet-margin))}}@media (min-width: 1280px){.container,.container-lg{--grid-margin:var(--grid-desktop-margin)}.row{--grid-gutter:var(--grid-desktop-gutter)}.container,.container-lg{--grid-maxwidth:calc(var(--grid-breakpoint-lg) - var(--grid-desktop-margin))}.col-lg-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}}@media (min-width: 1600px){.container,.container-lg{--grid-margin:var(--grid-tv-margin)}.row{--grid-gutter:var(--grid-tv-gutter)}.container,.container-lg{--grid-maxwidth:calc(var(--grid-breakpoint-xl) - var(--grid-tv-margin))}}.mr-1{margin-right:var(--spacing-scale-half) !important}.mb-1{margin-bottom:var(--spacing-scale-half) !important}.ml-1{margin-left:var(--spacing-scale-half) !important}.mr-n2{margin-right:calc(var(--spacing-scale-base)*-1) !important}.ml-2{margin-left:var(--spacing-scale-base) !important}.mx-3{margin-left:var(--spacing-scale-2x) !important;margin-right:var(--spacing-scale-2x) !important}.mr-auto{margin-right:auto !important}.ml-auto{margin-left:auto !important}.pt-half{padding-top:var(--spacing-scale-half) !important}.py-3{padding-bottom:var(--spacing-scale-2x) !important;padding-top:var(--spacing-scale-2x) !important}.py-4{padding-bottom:var(--spacing-scale-3x) !important;padding-top:var(--spacing-scale-3x) !important}@media (min-width: 576px){.ml-sm-0{margin-left:var(--spacing-scale-default) !important}}body{--bg-color:var(--background);--bg-color-rgb:var(--background-rgb);--bg-color-hsl:var(--background-hsl);--font-size:var(--font-size-scale-base);--font-weight:var(--font-weight-regular);--link-color:var(--interactive);--link-color-rgb:var(--interactive-rgb);--link-color-hsl:var(--interactive-hsl);--line-height:var(--font-line-height-medium);--text-color:var(--color);--text-color-rgb:var(--color-rgb);--text-color-hsl:var(--color-hsl);background:var(--bg-color);color:var(--text-color);font-family:var(--font-family-base);font-size:var(--font-size);font-weight:var(--font-weight);line-height:var(--line-height)}p{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-2x);margin-top:0}p a{text-decoration:underline}@media (min-width: 576px){p{font-size:var(--font-size-scale-up-01)}}a{--focus-offset:var(--spacing-scale-half)}a:focus{outline:none}a:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}a:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}a:not(:disabled):active{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--pressed))), to(rgba(var(--interactive-rgb), var(--pressed))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}a{color:var(--interactive);text-decoration:none}button{cursor:pointer}img{max-width:100%;vertical-align:middle}h2,.h2{color:var(--color);font-size:var(--font-size-scale-up-03);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2xh);margin-top:var(--spacing-scale-3xh);padding-bottom:var(--spacing-scale-2xh)}@media (min-width: 576px){.h2,h2{font-size:var(--font-size-scale-up-05);font-weight:var(--font-weight-regular)}}ul,ol{margin-bottom:var(--spacing-scale-2x);margin-top:0;padding:0 0 0 var(--spacing-scale-5x)}table{--table-background:var(--background);--table-color:var(--color);--table-border-color:var(--gray-20);--table-border-style:solid;--table-border-width:1px;--table-hover:var(--color-rgb);--table-padding:var(--spacing-scale-3x);--table-font-weight:var(--font-weight-medium);--table-th-background:var(--background-alternative);--table-th-font-weight:var(--font-weight-semi-bold);--table-row-size:var(--spacing-scale-2x);border-collapse:collapse;width:100%}label,.label{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half)}::-webkit-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::-moz-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::-ms-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::placeholder,.placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}input,textarea,.input{color:var(--color-light);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-half)}.text-pure-0{color:var(--pure-0) !important}.bg-interactive{--background:var(--interactive);background:var(--interactive) !important}.text-primary-default{color:var(--color-primary-default) !important}.text-center{text-align:center !important}.text-right{text-align:right !important}.text-nowrap{white-space:nowrap !important}.text-uppercase{text-transform:uppercase !important}.text-medium{font-weight:500 !important}.text-bold{font-weight:700 !important}.text-down-01{font-size:var(--font-size-scale-down-01) !important}@media (min-width: 576px){.text-sm-center{text-align:center !important}.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}}.ease{-webkit-animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1);animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1)}.ease-in-out{-webkit-animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1);animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1)}.fab{--icon-size:var(--icon-size-base);display:inline-block;font-size:var(--icon-size);text-align:center;width:calc(var(--icon-size) + 8px)}.highlight{background:var(--status-highlight-background) -webkit-gradient(linear, left top, left bottom, from(var(--status-highlight-overlay)), to(var(--status-highlight-overlay)));background:var(--status-highlight-background) linear-gradient(var(--status-highlight-overlay), var(--status-highlight-overlay));color:var(--status-highlight-text);padding:0 var(--spacing-scale-half)}[disabled],.disabled{cursor:not-allowed;opacity:var(--disabled)}[disabled] *,.disabled *{pointer-events:none}[data-toggle=dropdown]+*{position:absolute}.dropdown{position:relative}.dropdown [data-toggle=dropdown]+*{-webkit-box-shadow:var(--surface-shadow-sm);box-shadow:var(--surface-shadow-sm);left:0;position:absolute;top:100%}.dropdown .br-item{--color:var(--color-light);--color-rgb:var(--color-light-rgb);--text-color:var(--color-light);--interactive:var(--interactive-light);--interactive-rgb:var(--color-rgb);--visited:var(--visited-light);--hover:var(--hover-light);--pressed:var(--pressed-light);--focus-color:var(--focus-color-light);--focus:var(--focus-color-light);--item-padding-y:var(--spacing-scale-2x);background-color:var(--background-light);color:var(--color)}.dropdown .br-item:not(:last-child){border-bottom:1px solid var(--border-color)}.dropdown .br-item.selected{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark)}*[data-toggle=collapse]:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}*[data-toggle=collapse]:focus{outline:none}*[data-toggle=collapse]:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}:host{display:block;position:relative}:host #trigger{display:inline-block;cursor:pointer;outline:none}:host #trigger::slotted([slot=trigger]):focus:focus{outline:none}:host #trigger::slotted([slot=trigger]):focus:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}:host ::slotted([slot=target] *:focus):focus{outline:none}:host ::slotted([slot=target] *:focus):focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}:host #target{display:none;position:absolute;-webkit-box-shadow:var(--surface-shadow-sm);box-shadow:var(--surface-shadow-sm);z-index:var(--z-index-layer-1)}:host #target:focus:focus{outline:none}:host #target:focus:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}:host([is-open]) #target{display:block;width:-webkit-max-content;width:-moz-max-content;width:max-content}@media (max-width: 575px){:host([is-open]) #target{width:100vw !important;max-width:100vw !important}}";
|
|
14
|
-
|
|
15
|
-
const c = t(class t extends e {
|
|
13
|
+
const l = t(class t extends e {
|
|
16
14
|
constructor(t) {
|
|
17
15
|
super();
|
|
18
16
|
if (t !== false) {
|
|
@@ -30,7 +28,7 @@ const c = t(class t extends e {
|
|
|
30
28
|
/**
|
|
31
29
|
* Identificador único.
|
|
32
30
|
* Caso não seja fornecido, um ID gerado automaticamente será usado.
|
|
33
|
-
*/ this.customId =
|
|
31
|
+
*/ this.customId = n.generateUniqueId();
|
|
34
32
|
/**
|
|
35
33
|
* Define o posicionamento do target (alvo) em relação ao trigger (acionador).
|
|
36
34
|
*/ this.placement = "bottom-start";
|
|
@@ -237,7 +235,7 @@ const c = t(class t extends e {
|
|
|
237
235
|
* Posiciona o dropdown usando Floating UI
|
|
238
236
|
*/ positionDropdown() {
|
|
239
237
|
if (this.triggerElement == null || this.targetElement == null) return;
|
|
240
|
-
this.floatingManager = new
|
|
238
|
+
this.floatingManager = new o({
|
|
241
239
|
triggerElement: this.triggerElement,
|
|
242
240
|
contentElement: this.targetElement,
|
|
243
241
|
placement: this.placement
|
|
@@ -366,25 +364,21 @@ const c = t(class t extends e {
|
|
|
366
364
|
* Abre o dropdown.
|
|
367
365
|
* Define a propriedade `isOpen` como verdadeira e retorna o novo estado.
|
|
368
366
|
* Este método pode ser chamado externamente.
|
|
369
|
-
*/ open() {
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
};
|
|
375
|
-
}));
|
|
367
|
+
*/ async open() {
|
|
368
|
+
this.isOpen = true;
|
|
369
|
+
return {
|
|
370
|
+
isOpen: this.isOpen
|
|
371
|
+
};
|
|
376
372
|
}
|
|
377
373
|
/**
|
|
378
374
|
* Esconde o dropdown.
|
|
379
375
|
* Define a propriedade `isOpen` como falsa e retorna o novo estado.
|
|
380
376
|
* Este método pode ser chamado externamente.
|
|
381
|
-
*/ hide() {
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
};
|
|
387
|
-
}));
|
|
377
|
+
*/ async hide() {
|
|
378
|
+
this.isOpen = false;
|
|
379
|
+
return {
|
|
380
|
+
isOpen: this.isOpen
|
|
381
|
+
};
|
|
388
382
|
}
|
|
389
383
|
/**
|
|
390
384
|
* Foca em um elemento específico com suporte a componentes personalizados
|
|
@@ -444,14 +438,12 @@ const c = t(class t extends e {
|
|
|
444
438
|
/**
|
|
445
439
|
* Define o foco no elemento interno do componente.
|
|
446
440
|
* Este método pode ser chamado externamente para garantir que o foco seja aplicado ao elemento correto.
|
|
447
|
-
*/ setFocus() {
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
}
|
|
454
|
-
}));
|
|
441
|
+
*/ async setFocus() {
|
|
442
|
+
if (this.focusableElement !== null && this.focusableElement !== undefined) {
|
|
443
|
+
this.focusableElement.focus();
|
|
444
|
+
} else {
|
|
445
|
+
this.focusOnTriggerElement();
|
|
446
|
+
}
|
|
455
447
|
}
|
|
456
448
|
render() {
|
|
457
449
|
return a(r, {
|
|
@@ -495,7 +487,7 @@ const c = t(class t extends e {
|
|
|
495
487
|
};
|
|
496
488
|
}
|
|
497
489
|
static get style() {
|
|
498
|
-
return
|
|
490
|
+
return s;
|
|
499
491
|
}
|
|
500
492
|
}, [ 321, "br-dropdown", {
|
|
501
493
|
isOpen: [ 1540, "is-open" ],
|
|
@@ -520,13 +512,13 @@ function defineCustomElement() {
|
|
|
520
512
|
switch (t) {
|
|
521
513
|
case "br-dropdown":
|
|
522
514
|
if (!customElements.get(t)) {
|
|
523
|
-
customElements.define(t,
|
|
515
|
+
customElements.define(t, l);
|
|
524
516
|
}
|
|
525
517
|
break;
|
|
526
518
|
}
|
|
527
519
|
}));
|
|
528
520
|
}
|
|
529
521
|
|
|
530
|
-
export {
|
|
531
|
-
//# sourceMappingURL=p-
|
|
532
|
-
//# sourceMappingURL=p-
|
|
522
|
+
export { l as D, defineCustomElement as d };
|
|
523
|
+
//# sourceMappingURL=p-DW63EY0U.js.map
|
|
524
|
+
//# sourceMappingURL=p-DW63EY0U.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["dropdownCss","Dropdown","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","isOpen","customId","Helpers","generateUniqueId","placement","preventAutoDismiss","targetZIndex","targetElement","dropdownItems","dropdownLinks","focusableElement","handleLinkKeydown","event","link","currentTarget","key","linkIndex","indexOf","lastLinkIndex","length","preventDefault","stopPropagation","shiftKey","focusOnElement","tagName","toLowerCase","setTimeout","hide","focusOnTriggerElement","handleItemKeydown","item","currentIndex","lastIndex","click","toggle","isOpenChanged","newValue","brDidOpen","emit","id","initializeDropdownItems","positionDropdown","cleanupPositioning","triggerElement","undefined","brDropdownChange","targetZIndexChanged","updateTargetZIndex","connectedCallback","clickHandler","onClickOutside","bind","document","addEventListener","dropdownOpenHandler","onDropdownDidOpen","disconnectedCallback","removeEventListener","triggerKeydownHandler","targetKeydownHandler","clearDropdownItemListeners","customEvent","detail","forEach","componentDidLoad","el","shadowRoot","querySelector","setBehavior","floatingManager","FloatingUIManager","contentElement","start","_a","stop","style","zIndex","handleTriggerBehavior","setAttribute","focus","targetSlot","assignedElements","nonLinkSelector","linkSelector","element","matches","push","linkChildren","Array","from","querySelectorAll","concat","nonLinkChildren","getCssClassMap","path","composedPath","includes","open","setFocus","scrollIntoView","behavior","block","inline","triggerSlot","slotElements","firstElement","focusTrigger","render","h","Host","class","onClick","name"],"sources":["../../packages/webcomponents/src/components/dropdown/dropdown.scss?tag=br-dropdown&encapsulation=shadow","../../packages/webcomponents/src/components/dropdown/dropdown.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/partial/scss/base\";\n\n:host {\n display: block;\n position: relative;\n\n #trigger {\n display: inline-block;\n cursor: pointer;\n outline: none;\n }\n\n #trigger::slotted([slot=\"trigger\"]) {\n &:focus {\n @include focus;\n }\n }\n\n ::slotted([slot=\"target\"] *:focus) {\n @include focus;\n }\n\n #target {\n display: none;\n position: absolute;\n /* Garante que o conteúdo do dropdown fique acima do trigger/botões ao redor */\n box-shadow: var(--surface-shadow-sm);\n z-index: var(--z-index-layer-1);\n\n &:focus {\n @include focus;\n }\n }\n}\n\n:host([is-open]) {\n #target {\n display: block;\n width: max-content;\n }\n}\n\n@include media-breakpoint-down(xs) {\n :host([is-open]) {\n #target {\n width: 100vw !important;\n max-width: 100vw !important;\n }\n }\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Method, Prop, Watch } from '@stencil/core'\n\nimport { FloatingUIManager } from '../../utils/floating-ui'\nimport Helpers from '../../utils/helpers'\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/dropdown?tab=designer).\n *\n * @slot trigger - Slot para o elemento que aciona a abertura do dropdown.\n * @slot target - Slot para o conteúdo exibido pelo dropdown.\n */\n@Component({\n tag: 'br-dropdown',\n styleUrl: 'dropdown.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Dropdown {\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: HTMLBrDropdownElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Indica se o dropdown está aberto ou fechado.\n * Esta propriedade é refletida no DOM e pode ser alterada externamente.\n * O valor padrão é falso (fechado).\n */\n @Prop({ reflect: true, mutable: true }) isOpen: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = Helpers.generateUniqueId()\n\n /**\n * Define o posicionamento do target (alvo) em relação ao trigger (acionador).\n */\n @Prop({ reflect: true }) placement:\n | 'bottom-start'\n | 'bottom-end'\n | 'top-start'\n | 'top-end'\n | 'left'\n | 'right'\n | 'bottom'\n | 'top' = 'bottom-start'\n\n /**\n * Define se o dropdown deve permanecer aberto quando outro dropdown é aberto.\n * Quando definido como false (padrão), o dropdown será fechado automaticamente quando outro dropdown for aberto.\n * Quando definido como true, o dropdown permanecerá aberto mesmo quando outro dropdown for aberto.\n */\n @Prop({ reflect: true }) preventAutoDismiss: boolean = false\n\n /**\n * Define o z-index do elemento target (alvo) do dropdown.\n * Permite customizar a ordem de sobreposição do painel dropdown em relação aos demais elementos da página.\n * O valor padrão utiliza a variável CSS do design system: var(--z-index-layer-1).\n */\n @Prop() targetZIndex: string = 'var(--z-index-layer-1)'\n\n // Elementos DOM privados\n private triggerElement: HTMLElement\n private targetElement: HTMLElement | null = null\n private dropdownItems: HTMLElement[] = []\n private dropdownLinks: HTMLElement[] = []\n private focusableElement: HTMLElement | null | undefined = null\n\n // FloatingUI Manager\n private floatingManager: FloatingUIManager\n\n // Event handlers\n private clickHandler: (event: MouseEvent) => void\n private triggerKeydownHandler: (event: KeyboardEvent) => void\n private targetKeydownHandler: (event: KeyboardEvent) => void\n\n // Handler para o evento brDidOpen de outros dropdowns\n private dropdownOpenHandler: EventListener\n\n /**\n * Evento emitido quando o estado do dropdown muda.\n */\n @Event() brDropdownChange: EventEmitter<{ isOpen: boolean }>\n /**\n * Evento emitido quando o dropdown é aberto.\n * Este evento é usado para implementar o auto-dismiss de outros dropdowns.\n */\n @Event() brDidOpen: EventEmitter<{ id: string }>\n\n /**\n * Método chamado sempre que a propriedade `isOpen` muda.\n * Emite um evento com o novo estado do dropdown.\n */\n @Watch('isOpen')\n isOpenChanged(newValue: boolean) {\n if (newValue) {\n this.brDidOpen.emit({ id: this.customId })\n\n this.initializeDropdownItems()\n this.positionDropdown()\n } else {\n this.cleanupPositioning()\n\n if (this.triggerElement !== null && this.triggerElement !== undefined) {\n this.focusOnTriggerElement()\n }\n }\n\n this.brDropdownChange.emit({ isOpen: newValue })\n }\n\n /**\n * Aplica o novo valor de z-index ao elemento target.\n */\n @Watch('targetZIndex')\n targetZIndexChanged() {\n this.updateTargetZIndex()\n }\n\n connectedCallback() {\n this.clickHandler = this.onClickOutside.bind(this)\n document.addEventListener('click', this.clickHandler)\n\n this.dropdownOpenHandler = this.onDropdownDidOpen.bind(this)\n document.addEventListener('brDidOpen', this.dropdownOpenHandler)\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.clickHandler)\n document.removeEventListener('brDidOpen', this.dropdownOpenHandler)\n\n if (this.triggerElement !== null && this.triggerElement !== undefined) {\n this.triggerElement.removeEventListener('keydown', this.triggerKeydownHandler)\n }\n\n if (this.targetElement !== null && this.targetElement !== undefined) {\n this.targetElement.removeEventListener('keydown', this.targetKeydownHandler)\n }\n\n this.cleanupPositioning()\n this.clearDropdownItemListeners()\n }\n\n /**\n * Método que lida com o evento brDidOpen de outros dropdowns\n * Fecha este dropdown se não for o emissor do evento e preventAutoDismiss=false\n */\n private onDropdownDidOpen(event: Event) {\n if (this.preventAutoDismiss) {\n return\n }\n\n const customEvent = event as CustomEvent<{ id: string }>\n if (this.isOpen && customEvent.detail.id !== this.customId) {\n this.hide()\n }\n }\n\n private clearDropdownItemListeners() {\n this.dropdownItems.forEach((item) => {\n item.removeEventListener('keydown', this.handleItemKeydown)\n })\n\n this.dropdownLinks.forEach((link) => {\n link.removeEventListener('keydown', this.handleLinkKeydown)\n })\n\n this.dropdownItems = []\n this.dropdownLinks = []\n }\n\n componentDidLoad() {\n this.triggerElement = this.el.shadowRoot.querySelector('#trigger')\n this.targetElement = this.el.shadowRoot.querySelector('#target')\n\n this.setBehavior()\n this.updateTargetZIndex()\n\n if (this.isOpen) {\n this.initializeDropdownItems()\n this.positionDropdown()\n }\n }\n\n /**\n * Posiciona o dropdown usando Floating UI\n */\n private positionDropdown() {\n if (this.triggerElement == null || this.targetElement == null) return\n\n this.floatingManager = new FloatingUIManager({\n triggerElement: this.triggerElement,\n contentElement: this.targetElement,\n placement: this.placement,\n })\n\n this.floatingManager.start()\n }\n\n /**\n * Limpa o posicionamento do Floating UI\n */\n private cleanupPositioning() {\n this.floatingManager?.stop()\n }\n\n /**\n * Atualiza o z-index do target conforme a propriedade targetZIndex\n */\n private updateTargetZIndex() {\n if (this.targetElement === null) {\n return\n }\n\n if (this.targetZIndex !== null && this.targetZIndex !== undefined) {\n this.targetElement.style.zIndex = this.targetZIndex\n }\n }\n\n /**\n * Configura os comportamentos de interação do dropdown\n */\n private setBehavior() {\n if (this.triggerElement === null) return\n\n this.triggerKeydownHandler = (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.handleTriggerBehavior(event)\n } else if (event.key === 'Escape') {\n event.preventDefault()\n this.hide()\n this.focusOnTriggerElement()\n } else if (event.key === 'ArrowDown' && this.isOpen) {\n event.preventDefault()\n this.initializeDropdownItems()\n if (this.dropdownLinks.length > 0) {\n this.focusOnElement(this.dropdownLinks[0])\n } else if (this.dropdownItems.length > 0) {\n this.focusOnElement(this.dropdownItems[0])\n }\n }\n }\n\n this.targetKeydownHandler = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n event.preventDefault()\n this.hide()\n this.focusOnTriggerElement()\n }\n }\n\n this.triggerElement.addEventListener('keydown', this.triggerKeydownHandler)\n if (this.targetElement !== null) {\n this.targetElement.addEventListener('keydown', this.targetKeydownHandler)\n }\n }\n\n /**\n * Lida com o comportamento no trigger\n */\n private handleTriggerBehavior(event: Event) {\n event.preventDefault()\n this.toggle(event)\n\n if (this.isOpen) {\n setTimeout(() => {\n this.initializeDropdownItems()\n }, 0)\n }\n }\n\n /**\n * Inicializa os itens do dropdown com comportamentos de navegação com teclado,\n * separando claramente entre elementos navegáveis por Tab e elementos navegáveis por setas\n */\n private initializeDropdownItems() {\n if (this.targetElement === null) return\n\n this.clearDropdownItemListeners()\n\n this.targetElement.setAttribute('tabindex', '-1')\n this.targetElement.focus()\n\n const targetSlot = this.el.shadowRoot.querySelector('slot[name=\"target\"]') as HTMLSlotElement\n if (targetSlot === null || targetSlot === undefined) return\n\n const assignedElements = targetSlot.assignedElements()\n if (assignedElements.length === 0) return\n\n const nonLinkSelector =\n 'button, br-button, input, br-input, br-item:not([href]), textarea, br-textarea, select, br-select, details, [tabindex]:not([tabindex=\"-1\"]):not(a[href])'\n\n const linkSelector = 'a[href], br-item[href]'\n\n assignedElements.forEach((element) => {\n if (element instanceof HTMLElement) {\n if (element.matches(linkSelector)) {\n this.dropdownLinks.push(element)\n } else if (element.matches(nonLinkSelector)) {\n this.dropdownItems.push(element)\n }\n }\n\n const linkChildren = Array.from(element.querySelectorAll(linkSelector)) as HTMLElement[]\n this.dropdownLinks = this.dropdownLinks.concat(linkChildren)\n\n const nonLinkChildren = Array.from(element.querySelectorAll(nonLinkSelector)) as HTMLElement[]\n this.dropdownItems = this.dropdownItems.concat(nonLinkChildren)\n })\n\n this.dropdownItems.forEach((item) => {\n item.addEventListener('keydown', this.handleItemKeydown)\n })\n\n this.dropdownLinks.forEach((link) => {\n link.addEventListener('keydown', this.handleLinkKeydown)\n })\n\n if (this.dropdownLinks.length > 0) {\n this.focusOnElement(this.dropdownLinks[0])\n this.focusableElement = this.dropdownLinks[0]\n } else if (this.dropdownItems.length > 0) {\n this.focusOnElement(this.dropdownItems[0])\n this.focusableElement = this.dropdownItems[0]\n }\n }\n\n /**\n * Handler específico para links\n */\n private handleLinkKeydown = (event: KeyboardEvent) => {\n const link = event.currentTarget as HTMLElement\n const key = event.key\n const linkIndex = this.dropdownLinks.indexOf(link)\n const lastLinkIndex = this.dropdownLinks.length - 1\n\n switch (key) {\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Home':\n case 'End':\n event.preventDefault()\n event.stopPropagation()\n break\n case 'Tab':\n event.preventDefault()\n\n if (!event.shiftKey) {\n if (linkIndex >= lastLinkIndex) {\n this.focusOnElement(this.dropdownLinks[0])\n } else {\n this.focusOnElement(this.dropdownLinks[linkIndex + 1])\n }\n } else {\n if (linkIndex <= 0) {\n this.focusOnElement(this.dropdownLinks[lastLinkIndex])\n } else {\n this.focusOnElement(this.dropdownLinks[linkIndex - 1])\n }\n }\n break\n case 'Enter':\n case ' ':\n if (key === ' ' && link.tagName.toLowerCase() === 'a') {\n event.preventDefault()\n }\n setTimeout(() => this.hide(), 100)\n break\n case 'Escape':\n event.preventDefault()\n this.hide()\n this.focusOnTriggerElement()\n break\n default:\n break\n }\n }\n\n /**\n * Handler para eventos de keydown nos itens não-link\n * Implementa navegação completa por setas, Tab não navega entre estes itens\n */\n private handleItemKeydown = (event: KeyboardEvent) => {\n const item = event.currentTarget as HTMLElement\n const key = event.key\n const currentIndex = this.dropdownItems.indexOf(item)\n const lastIndex = this.dropdownItems.length - 1\n\n switch (key) {\n case 'ArrowUp':\n event.preventDefault()\n if (currentIndex <= 0) {\n this.focusOnElement(this.dropdownItems[lastIndex])\n } else {\n this.focusOnElement(this.dropdownItems[currentIndex - 1])\n }\n break\n\n case 'ArrowDown':\n event.preventDefault()\n if (currentIndex >= lastIndex) {\n this.focusOnElement(this.dropdownItems[0])\n } else {\n this.focusOnElement(this.dropdownItems[currentIndex + 1])\n }\n break\n\n case 'Home':\n event.preventDefault()\n this.focusOnElement(this.dropdownItems[0])\n break\n\n case 'End':\n event.preventDefault()\n this.focusOnElement(this.dropdownItems[lastIndex])\n break\n\n case 'Enter':\n case ' ':\n event.preventDefault()\n item.click()\n this.hide()\n this.focusOnTriggerElement()\n break\n\n case 'Tab':\n break\n\n case 'Escape':\n event.preventDefault()\n this.hide()\n this.focusOnTriggerElement()\n break\n\n default:\n break\n }\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-dropdown': true,\n }\n }\n\n /**\n * Alterna o estado do dropdown entre aberto e fechado.\n */\n private readonly toggle = (event: Event) => {\n event.stopPropagation()\n this.isOpen = !this.isOpen\n }\n\n /**\n * Método que lida com cliques fora do dropdown.\n *\n * @param {MouseEvent} event - O evento de clique que ocorreu.\n */\n private onClickOutside(event: MouseEvent) {\n if (!this.isOpen) return\n\n const path = event.composedPath()\n\n if (\n this.triggerElement &&\n this.targetElement &&\n !path.includes(this.triggerElement) &&\n !path.includes(this.targetElement)\n ) {\n this.hide()\n }\n }\n\n /**\n * Abre o dropdown.\n * Define a propriedade `isOpen` como verdadeira e retorna o novo estado.\n * Este método pode ser chamado externamente.\n */\n @Method()\n async open(): Promise<{ isOpen: boolean }> {\n this.isOpen = true\n return { isOpen: this.isOpen }\n }\n\n /**\n * Esconde o dropdown.\n * Define a propriedade `isOpen` como falsa e retorna o novo estado.\n * Este método pode ser chamado externamente.\n */\n @Method()\n async hide(): Promise<{ isOpen: boolean }> {\n this.isOpen = false\n return { isOpen: this.isOpen }\n }\n\n /**\n * Foca em um elemento específico com suporte a componentes personalizados\n * @param targetElement Elemento a receber o foco\n */\n private focusOnElement(targetElement: HTMLElement) {\n if (targetElement && targetElement !== this.el) {\n if ('setFocus' in targetElement) {\n ;(targetElement as { setFocus: () => void }).setFocus()\n } else {\n targetElement.focus()\n }\n targetElement.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' })\n }\n }\n\n /**\n * Foca no elemento interativo dentro do slot trigger\n * Esta função procura pelo elemento dentro do slot trigger e aplica o foco nele\n */\n private focusOnTriggerElement() {\n const triggerSlot = this.el.shadowRoot.querySelector('slot[name=\"trigger\"]') as HTMLSlotElement\n if (triggerSlot !== null) {\n const slotElements = triggerSlot.assignedElements()\n if (slotElements.length > 0) {\n const firstElement = slotElements[0] as HTMLElement\n if ('setFocus' in firstElement) {\n ;(firstElement as { setFocus: () => void }).setFocus()\n } else {\n firstElement.focus()\n }\n firstElement.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' })\n } else {\n this.focusTrigger()\n }\n } else {\n this.focusTrigger()\n }\n }\n\n /**\n * Auxiliar para focar no elemento trigger\n */\n private focusTrigger() {\n if (typeof this.triggerElement !== 'undefined') {\n this.triggerElement.focus()\n this.triggerElement.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' })\n }\n }\n\n /**\n * Define o foco no elemento interno do componente.\n * Este método pode ser chamado externamente para garantir que o foco seja aplicado ao elemento correto.\n */\n @Method()\n async setFocus() {\n if (this.focusableElement !== null && this.focusableElement !== undefined) {\n this.focusableElement.focus()\n } else {\n this.focusOnTriggerElement()\n }\n }\n\n render() {\n return (\n <Host is-open={this.isOpen} placement={this.placement} prevent-auto-dismiss={this.preventAutoDismiss}>\n <div class={this.getCssClassMap()} id={this.customId}>\n <div\n id=\"trigger\"\n onClick={this.toggle}\n aria-controls=\"target\"\n aria-haspopup=\"true\"\n aria-expanded={this.isOpen ? 'true' : 'false'}\n >\n <slot name=\"trigger\"></slot>\n </div>\n\n <div id=\"target\" aria-hidden={this.isOpen ? 'false' : 'true'}>\n <slot name=\"target\"></slot>\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["dropdownCss","Dropdown","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","isOpen","customId","Helpers","generateUniqueId","placement","preventAutoDismiss","targetZIndex","targetElement","dropdownItems","dropdownLinks","focusableElement","handleLinkKeydown","event","link","currentTarget","key","linkIndex","indexOf","lastLinkIndex","length","preventDefault","stopPropagation","shiftKey","focusOnElement","tagName","toLowerCase","setTimeout","hide","focusOnTriggerElement","handleItemKeydown","item","currentIndex","lastIndex","click","toggle","isOpenChanged","newValue","brDidOpen","emit","id","initializeDropdownItems","positionDropdown","cleanupPositioning","triggerElement","undefined","brDropdownChange","targetZIndexChanged","updateTargetZIndex","connectedCallback","clickHandler","onClickOutside","bind","document","addEventListener","dropdownOpenHandler","onDropdownDidOpen","disconnectedCallback","removeEventListener","triggerKeydownHandler","targetKeydownHandler","clearDropdownItemListeners","customEvent","detail","forEach","componentDidLoad","el","shadowRoot","querySelector","setBehavior","floatingManager","FloatingUIManager","contentElement","start","_a","stop","style","zIndex","handleTriggerBehavior","setAttribute","focus","targetSlot","assignedElements","nonLinkSelector","linkSelector","element","matches","push","linkChildren","Array","from","querySelectorAll","concat","nonLinkChildren","getCssClassMap","path","composedPath","includes","open","setFocus","scrollIntoView","behavior","block","inline","triggerSlot","slotElements","firstElement","focusTrigger","render","h","Host","class","onClick","name"],"sources":["../../packages/webcomponents/src/components/dropdown/dropdown.scss?tag=br-dropdown&encapsulation=shadow","../../packages/webcomponents/src/components/dropdown/dropdown.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/partial/scss/base\";\n\n:host {\n display: block;\n position: relative;\n\n #trigger {\n display: inline-block;\n cursor: pointer;\n outline: none;\n }\n\n #trigger::slotted([slot=\"trigger\"]) {\n &:focus {\n @include focus;\n }\n }\n\n ::slotted([slot=\"target\"] *:focus) {\n @include focus;\n }\n\n #target {\n display: none;\n position: absolute;\n /* Garante que o conteúdo do dropdown fique acima do trigger/botões ao redor */\n box-shadow: var(--surface-shadow-sm);\n z-index: var(--z-index-layer-1);\n\n &:focus {\n @include focus;\n }\n }\n}\n\n:host([is-open]) {\n #target {\n display: block;\n width: max-content;\n }\n}\n\n@include media-breakpoint-down(xs) {\n :host([is-open]) {\n #target {\n width: 100vw !important;\n max-width: 100vw !important;\n }\n }\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Method, Prop, Watch } from '@stencil/core'\n\nimport { FloatingUIManager } from '../../utils/floating-ui'\nimport Helpers from '../../utils/helpers'\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/dropdown?tab=designer).\n *\n * @slot trigger - Slot para o elemento que aciona a abertura do dropdown.\n * @slot target - Slot para o conteúdo exibido pelo dropdown.\n */\n@Component({\n tag: 'br-dropdown',\n styleUrl: 'dropdown.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Dropdown {\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: HTMLBrDropdownElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Indica se o dropdown está aberto ou fechado.\n * Esta propriedade é refletida no DOM e pode ser alterada externamente.\n * O valor padrão é falso (fechado).\n */\n @Prop({ reflect: true, mutable: true }) isOpen: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = Helpers.generateUniqueId()\n\n /**\n * Define o posicionamento do target (alvo) em relação ao trigger (acionador).\n */\n @Prop({ reflect: true }) placement:\n | 'bottom-start'\n | 'bottom-end'\n | 'top-start'\n | 'top-end'\n | 'left'\n | 'right'\n | 'bottom'\n | 'top' = 'bottom-start'\n\n /**\n * Define se o dropdown deve permanecer aberto quando outro dropdown é aberto.\n * Quando definido como false (padrão), o dropdown será fechado automaticamente quando outro dropdown for aberto.\n * Quando definido como true, o dropdown permanecerá aberto mesmo quando outro dropdown for aberto.\n */\n @Prop({ reflect: true }) preventAutoDismiss: boolean = false\n\n /**\n * Define o z-index do elemento target (alvo) do dropdown.\n * Permite customizar a ordem de sobreposição do painel dropdown em relação aos demais elementos da página.\n * O valor padrão utiliza a variável CSS do design system: var(--z-index-layer-1).\n */\n @Prop() targetZIndex: string = 'var(--z-index-layer-1)'\n\n // Elementos DOM privados\n private triggerElement: HTMLElement\n private targetElement: HTMLElement | null = null\n private dropdownItems: HTMLElement[] = []\n private dropdownLinks: HTMLElement[] = []\n private focusableElement: HTMLElement | null | undefined = null\n\n // FloatingUI Manager\n private floatingManager: FloatingUIManager\n\n // Event handlers\n private clickHandler: (event: MouseEvent) => void\n private triggerKeydownHandler: (event: KeyboardEvent) => void\n private targetKeydownHandler: (event: KeyboardEvent) => void\n\n // Handler para o evento brDidOpen de outros dropdowns\n private dropdownOpenHandler: EventListener\n\n /**\n * Evento emitido quando o estado do dropdown muda.\n */\n @Event() brDropdownChange: EventEmitter<{ isOpen: boolean }>\n /**\n * Evento emitido quando o dropdown é aberto.\n * Este evento é usado para implementar o auto-dismiss de outros dropdowns.\n */\n @Event() brDidOpen: EventEmitter<{ id: string }>\n\n /**\n * Método chamado sempre que a propriedade `isOpen` muda.\n * Emite um evento com o novo estado do dropdown.\n */\n @Watch('isOpen')\n isOpenChanged(newValue: boolean) {\n if (newValue) {\n this.brDidOpen.emit({ id: this.customId })\n\n this.initializeDropdownItems()\n this.positionDropdown()\n } else {\n this.cleanupPositioning()\n\n if (this.triggerElement !== null && this.triggerElement !== undefined) {\n this.focusOnTriggerElement()\n }\n }\n\n this.brDropdownChange.emit({ isOpen: newValue })\n }\n\n /**\n * Aplica o novo valor de z-index ao elemento target.\n */\n @Watch('targetZIndex')\n targetZIndexChanged() {\n this.updateTargetZIndex()\n }\n\n connectedCallback() {\n this.clickHandler = this.onClickOutside.bind(this)\n document.addEventListener('click', this.clickHandler)\n\n this.dropdownOpenHandler = this.onDropdownDidOpen.bind(this)\n document.addEventListener('brDidOpen', this.dropdownOpenHandler)\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.clickHandler)\n document.removeEventListener('brDidOpen', this.dropdownOpenHandler)\n\n if (this.triggerElement !== null && this.triggerElement !== undefined) {\n this.triggerElement.removeEventListener('keydown', this.triggerKeydownHandler)\n }\n\n if (this.targetElement !== null && this.targetElement !== undefined) {\n this.targetElement.removeEventListener('keydown', this.targetKeydownHandler)\n }\n\n this.cleanupPositioning()\n this.clearDropdownItemListeners()\n }\n\n /**\n * Método que lida com o evento brDidOpen de outros dropdowns\n * Fecha este dropdown se não for o emissor do evento e preventAutoDismiss=false\n */\n private onDropdownDidOpen(event: Event) {\n if (this.preventAutoDismiss) {\n return\n }\n\n const customEvent = event as CustomEvent<{ id: string }>\n if (this.isOpen && customEvent.detail.id !== this.customId) {\n this.hide()\n }\n }\n\n private clearDropdownItemListeners() {\n this.dropdownItems.forEach((item) => {\n item.removeEventListener('keydown', this.handleItemKeydown)\n })\n\n this.dropdownLinks.forEach((link) => {\n link.removeEventListener('keydown', this.handleLinkKeydown)\n })\n\n this.dropdownItems = []\n this.dropdownLinks = []\n }\n\n componentDidLoad() {\n this.triggerElement = this.el.shadowRoot.querySelector('#trigger')\n this.targetElement = this.el.shadowRoot.querySelector('#target')\n\n this.setBehavior()\n this.updateTargetZIndex()\n\n if (this.isOpen) {\n this.initializeDropdownItems()\n this.positionDropdown()\n }\n }\n\n /**\n * Posiciona o dropdown usando Floating UI\n */\n private positionDropdown() {\n if (this.triggerElement == null || this.targetElement == null) return\n\n this.floatingManager = new FloatingUIManager({\n triggerElement: this.triggerElement,\n contentElement: this.targetElement,\n placement: this.placement,\n })\n\n this.floatingManager.start()\n }\n\n /**\n * Limpa o posicionamento do Floating UI\n */\n private cleanupPositioning() {\n this.floatingManager?.stop()\n }\n\n /**\n * Atualiza o z-index do target conforme a propriedade targetZIndex\n */\n private updateTargetZIndex() {\n if (this.targetElement === null) {\n return\n }\n\n if (this.targetZIndex !== null && this.targetZIndex !== undefined) {\n this.targetElement.style.zIndex = this.targetZIndex\n }\n }\n\n /**\n * Configura os comportamentos de interação do dropdown\n */\n private setBehavior() {\n if (this.triggerElement === null) return\n\n this.triggerKeydownHandler = (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.handleTriggerBehavior(event)\n } else if (event.key === 'Escape') {\n event.preventDefault()\n this.hide()\n this.focusOnTriggerElement()\n } else if (event.key === 'ArrowDown' && this.isOpen) {\n event.preventDefault()\n this.initializeDropdownItems()\n if (this.dropdownLinks.length > 0) {\n this.focusOnElement(this.dropdownLinks[0])\n } else if (this.dropdownItems.length > 0) {\n this.focusOnElement(this.dropdownItems[0])\n }\n }\n }\n\n this.targetKeydownHandler = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n event.preventDefault()\n this.hide()\n this.focusOnTriggerElement()\n }\n }\n\n this.triggerElement.addEventListener('keydown', this.triggerKeydownHandler)\n if (this.targetElement !== null) {\n this.targetElement.addEventListener('keydown', this.targetKeydownHandler)\n }\n }\n\n /**\n * Lida com o comportamento no trigger\n */\n private handleTriggerBehavior(event: Event) {\n event.preventDefault()\n this.toggle(event)\n\n if (this.isOpen) {\n setTimeout(() => {\n this.initializeDropdownItems()\n }, 0)\n }\n }\n\n /**\n * Inicializa os itens do dropdown com comportamentos de navegação com teclado,\n * separando claramente entre elementos navegáveis por Tab e elementos navegáveis por setas\n */\n private initializeDropdownItems() {\n if (this.targetElement === null) return\n\n this.clearDropdownItemListeners()\n\n this.targetElement.setAttribute('tabindex', '-1')\n this.targetElement.focus()\n\n const targetSlot = this.el.shadowRoot.querySelector('slot[name=\"target\"]') as HTMLSlotElement\n if (targetSlot === null || targetSlot === undefined) return\n\n const assignedElements = targetSlot.assignedElements()\n if (assignedElements.length === 0) return\n\n const nonLinkSelector =\n 'button, br-button, input, br-input, br-item:not([href]), textarea, br-textarea, select, br-select, details, [tabindex]:not([tabindex=\"-1\"]):not(a[href])'\n\n const linkSelector = 'a[href], br-item[href]'\n\n assignedElements.forEach((element) => {\n if (element instanceof HTMLElement) {\n if (element.matches(linkSelector)) {\n this.dropdownLinks.push(element)\n } else if (element.matches(nonLinkSelector)) {\n this.dropdownItems.push(element)\n }\n }\n\n const linkChildren = Array.from(element.querySelectorAll(linkSelector)) as HTMLElement[]\n this.dropdownLinks = this.dropdownLinks.concat(linkChildren)\n\n const nonLinkChildren = Array.from(element.querySelectorAll(nonLinkSelector)) as HTMLElement[]\n this.dropdownItems = this.dropdownItems.concat(nonLinkChildren)\n })\n\n this.dropdownItems.forEach((item) => {\n item.addEventListener('keydown', this.handleItemKeydown)\n })\n\n this.dropdownLinks.forEach((link) => {\n link.addEventListener('keydown', this.handleLinkKeydown)\n })\n\n if (this.dropdownLinks.length > 0) {\n this.focusOnElement(this.dropdownLinks[0])\n this.focusableElement = this.dropdownLinks[0]\n } else if (this.dropdownItems.length > 0) {\n this.focusOnElement(this.dropdownItems[0])\n this.focusableElement = this.dropdownItems[0]\n }\n }\n\n /**\n * Handler específico para links\n */\n private handleLinkKeydown = (event: KeyboardEvent) => {\n const link = event.currentTarget as HTMLElement\n const key = event.key\n const linkIndex = this.dropdownLinks.indexOf(link)\n const lastLinkIndex = this.dropdownLinks.length - 1\n\n switch (key) {\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Home':\n case 'End':\n event.preventDefault()\n event.stopPropagation()\n break\n case 'Tab':\n event.preventDefault()\n\n if (!event.shiftKey) {\n if (linkIndex >= lastLinkIndex) {\n this.focusOnElement(this.dropdownLinks[0])\n } else {\n this.focusOnElement(this.dropdownLinks[linkIndex + 1])\n }\n } else {\n if (linkIndex <= 0) {\n this.focusOnElement(this.dropdownLinks[lastLinkIndex])\n } else {\n this.focusOnElement(this.dropdownLinks[linkIndex - 1])\n }\n }\n break\n case 'Enter':\n case ' ':\n if (key === ' ' && link.tagName.toLowerCase() === 'a') {\n event.preventDefault()\n }\n setTimeout(() => this.hide(), 100)\n break\n case 'Escape':\n event.preventDefault()\n this.hide()\n this.focusOnTriggerElement()\n break\n default:\n break\n }\n }\n\n /**\n * Handler para eventos de keydown nos itens não-link\n * Implementa navegação completa por setas, Tab não navega entre estes itens\n */\n private handleItemKeydown = (event: KeyboardEvent) => {\n const item = event.currentTarget as HTMLElement\n const key = event.key\n const currentIndex = this.dropdownItems.indexOf(item)\n const lastIndex = this.dropdownItems.length - 1\n\n switch (key) {\n case 'ArrowUp':\n event.preventDefault()\n if (currentIndex <= 0) {\n this.focusOnElement(this.dropdownItems[lastIndex])\n } else {\n this.focusOnElement(this.dropdownItems[currentIndex - 1])\n }\n break\n\n case 'ArrowDown':\n event.preventDefault()\n if (currentIndex >= lastIndex) {\n this.focusOnElement(this.dropdownItems[0])\n } else {\n this.focusOnElement(this.dropdownItems[currentIndex + 1])\n }\n break\n\n case 'Home':\n event.preventDefault()\n this.focusOnElement(this.dropdownItems[0])\n break\n\n case 'End':\n event.preventDefault()\n this.focusOnElement(this.dropdownItems[lastIndex])\n break\n\n case 'Enter':\n case ' ':\n event.preventDefault()\n item.click()\n this.hide()\n this.focusOnTriggerElement()\n break\n\n case 'Tab':\n break\n\n case 'Escape':\n event.preventDefault()\n this.hide()\n this.focusOnTriggerElement()\n break\n\n default:\n break\n }\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-dropdown': true,\n }\n }\n\n /**\n * Alterna o estado do dropdown entre aberto e fechado.\n */\n private readonly toggle = (event: Event) => {\n event.stopPropagation()\n this.isOpen = !this.isOpen\n }\n\n /**\n * Método que lida com cliques fora do dropdown.\n *\n * @param {MouseEvent} event - O evento de clique que ocorreu.\n */\n private onClickOutside(event: MouseEvent) {\n if (!this.isOpen) return\n\n const path = event.composedPath()\n\n if (\n this.triggerElement &&\n this.targetElement &&\n !path.includes(this.triggerElement) &&\n !path.includes(this.targetElement)\n ) {\n this.hide()\n }\n }\n\n /**\n * Abre o dropdown.\n * Define a propriedade `isOpen` como verdadeira e retorna o novo estado.\n * Este método pode ser chamado externamente.\n */\n @Method()\n async open(): Promise<{ isOpen: boolean }> {\n this.isOpen = true\n return { isOpen: this.isOpen }\n }\n\n /**\n * Esconde o dropdown.\n * Define a propriedade `isOpen` como falsa e retorna o novo estado.\n * Este método pode ser chamado externamente.\n */\n @Method()\n async hide(): Promise<{ isOpen: boolean }> {\n this.isOpen = false\n return { isOpen: this.isOpen }\n }\n\n /**\n * Foca em um elemento específico com suporte a componentes personalizados\n * @param targetElement Elemento a receber o foco\n */\n private focusOnElement(targetElement: HTMLElement) {\n if (targetElement && targetElement !== this.el) {\n if ('setFocus' in targetElement) {\n ;(targetElement as { setFocus: () => void }).setFocus()\n } else {\n targetElement.focus()\n }\n targetElement.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' })\n }\n }\n\n /**\n * Foca no elemento interativo dentro do slot trigger\n * Esta função procura pelo elemento dentro do slot trigger e aplica o foco nele\n */\n private focusOnTriggerElement() {\n const triggerSlot = this.el.shadowRoot.querySelector('slot[name=\"trigger\"]') as HTMLSlotElement\n if (triggerSlot !== null) {\n const slotElements = triggerSlot.assignedElements()\n if (slotElements.length > 0) {\n const firstElement = slotElements[0] as HTMLElement\n if ('setFocus' in firstElement) {\n ;(firstElement as { setFocus: () => void }).setFocus()\n } else {\n firstElement.focus()\n }\n firstElement.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' })\n } else {\n this.focusTrigger()\n }\n } else {\n this.focusTrigger()\n }\n }\n\n /**\n * Auxiliar para focar no elemento trigger\n */\n private focusTrigger() {\n if (typeof this.triggerElement !== 'undefined') {\n this.triggerElement.focus()\n this.triggerElement.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' })\n }\n }\n\n /**\n * Define o foco no elemento interno do componente.\n * Este método pode ser chamado externamente para garantir que o foco seja aplicado ao elemento correto.\n */\n @Method()\n async setFocus() {\n if (this.focusableElement !== null && this.focusableElement !== undefined) {\n this.focusableElement.focus()\n } else {\n this.focusOnTriggerElement()\n }\n }\n\n render() {\n return (\n <Host is-open={this.isOpen} placement={this.placement} prevent-auto-dismiss={this.preventAutoDismiss}>\n <div class={this.getCssClassMap()} id={this.customId}>\n <div\n id=\"trigger\"\n onClick={this.toggle}\n aria-controls=\"target\"\n aria-haspopup=\"true\"\n aria-expanded={this.isOpen ? 'true' : 'false'}\n >\n <slot name=\"trigger\"></slot>\n </div>\n\n <div id=\"target\" aria-hidden={this.isOpen ? 'false' : 'true'}>\n <slot name=\"target\"></slot>\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"mappings":"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","ignoreList":[]}
|