@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datetime-picker.js","sourceRoot":"","sources":["../../../../../../packages/webcomponents/src/components/datetime-picker/datetime-picker.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\nimport {\n eachDayOfInterval,\n endOfMonth,\n endOfWeek,\n format,\n isSameDay,\n isSameMonth,\n isValid,\n parse,\n startOfMonth,\n startOfWeek,\n} from 'date-fns'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Tipos de entrada de tempo disponíveis no componente datetime-picker.\n */\nconst INPUT_TIME_TYPE = {\n HOUR: 'hour',\n MINUTE: 'minute',\n}\n\n/**\n * Ações de navegação disponíveis no componente datetime-picker.\n */\nconst NAVIGATION_ACTION = {\n PREVIOUS_HOUR: 'previous-hour',\n PREVIOUS_MINUTE: 'previous-minute',\n PREVIOUS_MONTH: 'previous-month',\n NEXT_HOUR: 'next-hour',\n NEXT_MINUTE: 'next-minute',\n NEXT_MONTH: 'next-month',\n} as const\n\n/**\n * Função que define o tipo de um getter para mapeamento de classes CSS.\n */\ntype CssClassMapGetter = (...args: unknown[]) => CssClassMap\n\n/**\n * Tipo que representa os modos disponíveis no componente datetime-picker.\n */\ntype DatetimePickerMode = 'date' | 'time' | 'datetime'\n\n/**\n * Tipo que representa os tipos de entrada de tempo disponíveis no componente datetime-picker.\n */\ntype InputTimeType = (typeof INPUT_TIME_TYPE)[keyof typeof INPUT_TIME_TYPE]\n\n/**\n * Tipo que representa as ações de navegação disponíveis no componente datetime-picker.\n */\ntype NavigationAction = (typeof NAVIGATION_ACTION)[keyof typeof NAVIGATION_ACTION]\n\n/**\n * Índice do dia da semana.\n * 0 representa domingo, 1 representa segunda-feira, e assim por diante até 6 que representa sábado.\n */\ntype WeekDayIndex = 0 | 1 | 2 | 3 | 4 | 5 | 6\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/datetime-picker?tab=designer).\n */\n@Component({\n tag: 'br-datetime-picker',\n styleUrl: 'datetime-picker.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class DatetimePicker {\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: HTMLBrDatetimePickerElement\n\n /**\n * Internals do elemento para manipulação de formulários.\n */\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Define se a data atual deve ser selecionada automaticamente ao abrir o datetime-picker.\n * O padrão é false\n */\n @Prop({ reflect: true }) autoSelectToday = false\n\n /**\n * Define se o datetime-picker está desabilitado.\n */\n @Prop({ reflect: true }) disabled: boolean = false\n\n /**\n * Define o modo do datetime-picker.\n * Os valores possíveis são:\n * - \"date\": Permite selecionar apenas a data.\n * - \"time\": Permite selecionar apenas o horário.\n * - \"datetime\": Permite selecionar tanto a data quanto o horário.\n */\n @Prop({ reflect: true }) mode: DatetimePickerMode = 'datetime'\n\n /**\n * Define o nome do campo do datetime-picker.\n * Este nome será utilizado ao submeter o formulário que contém o datetime-picker.\n */\n @Prop({ reflect: true }) name: string\n\n /**\n * Define o placeholder do campo de entrada do datetime-picker.\n */\n @Prop() placeholder: string\n\n /**\n * Define o valor inicial do datetime-picker.\n * Pode ser uma instância de Date ou null.\n * Se não for fornecido, o valor padrão será null.\n */\n @Prop() value?: Date | null\n\n /**\n * Define o dia da semana em que a semana começa.\n * Os valores possíveis são:\n * 0 - Domingo\n * 1 - Segunda-feira\n * 2 - Terça-feira\n * 3 - Quarta-feira\n * 4 - Quinta-feira\n * 5 - Sexta-feira\n * 6 - Sábado\n */\n @Prop({ reflect: true }) weekStartsOn: WeekDayIndex = 0\n\n /**\n * Data base atual para o calendário.\n */\n @State() currentBaseDate: Date = new Date()\n\n /**\n * Data selecionada no componente datetime-picker.\n */\n @State() currentSelectedDate: Date | null = null\n\n /**\n * Valor do campo de entrada.\n */\n @State() private inputValue = ''\n\n /**\n * Indica se o calendário está aberto ou fechado.\n */\n @State() private isOpen = false\n\n /**\n * Rascunho dos valores de tempo (hora e minuto) durante a edição.\n */\n @State() private timeDraft: Partial<Record<InputTimeType, string>> = {}\n\n /**\n * Evento disparado quando a data selecionada é alterada, tanto por interação do usuário quanto por métodos programáticos.\n * @returns Data selecionada ou null se nenhuma data estiver selecionada\n */\n @Event({\n eventName: 'brDateTimeChange',\n bubbles: true,\n composed: true,\n })\n brDateTimeChange: EventEmitter<Date | null>\n\n /**\n * Manipulador de mudanças na data selecionada.\n * @param newValue Nova data selecionada\n * @internal Used by Stencil's @Watch decorator\n */\n @Watch('currentSelectedDate')\n private handleSelectedDateChange(newValue: Date | null) {\n const formattedValue = this.formatDateForInput(newValue)\n\n this.inputValue = formattedValue\n\n this.elementInternals.setFormValue(newValue !== null ? formattedValue : null)\n\n this.brDateTimeChange.emit(newValue)\n }\n\n /**\n * Manipulador de mudanças na propriedade `disabled`.\n * @param disabled Indica se o componente está desabilitado\n * @internal Used by Stencil's @Watch decorator\n */\n @Watch('disabled')\n handleDisabledChange(disabled: boolean) {\n if (disabled) {\n this.elementInternals.setFormValue(null)\n } else {\n this.elementInternals.setFormValue(this.inputValue || null)\n }\n }\n\n /**\n * Manipulador de mudanças no estado de abertura do calendário.\n * @param open Indica se o calendário está aberto\n * @internal Used by Stencil's @Watch decorator\n */\n @Watch('isOpen')\n private handleOpenChange(open: boolean) {\n if (open) {\n document.addEventListener('click', this.handleOutsideClick)\n document.addEventListener('keydown', this.handkeKeydown)\n } else {\n document.removeEventListener('click', this.handleOutsideClick)\n document.removeEventListener('keydown', this.handkeKeydown)\n }\n }\n\n /**\n * Manipulador de mudanças na propriedade `mode`.\n * @internal Used by Stencil's @Watch decorator\n */\n @Watch('mode')\n handleModeChange() {\n this.resolvePlaceholderFromMode()\n }\n\n /**\n * Manipulador de mudanças no valor da propriedade `value`.\n */\n @Watch('value')\n protected handleValueChange(newValue: Date | null) {\n if (newValue === null) {\n if (!this.autoSelectToday) {\n this.currentSelectedDate = null\n }\n return\n }\n\n const date = new Date(newValue)\n this.currentBaseDate = date\n this.currentSelectedDate = new Date(date)\n }\n\n /**\n * Registro de mapeamentos de classes CSS para diferentes partes do componente.\n * Cada entrada no registro é uma função que retorna um objeto de mapeamento de classes CSS.\n */\n private cssMapRegistry: Record<string, CssClassMapGetter> = {\n calendar: () => {\n return {\n calendar: true,\n }\n },\n day: (date: Date) => {\n return {\n day: true,\n 'outside-month': !isSameMonth(date, this.baseDate),\n today: isSameDay(date, new Date()),\n selected: isSameDay(date, this.currentSelectedDate),\n }\n },\n header: () => {\n return {\n header: true,\n }\n },\n month: () => {\n return {\n monthdays: true,\n }\n },\n root: () => {\n return {\n 'br-datetime-picker': true,\n datetime: this.mode === 'datetime',\n date: this.mode === 'date',\n time: this.mode === 'time',\n }\n },\n timer: () => {\n return {\n 'time-section': true,\n }\n },\n 'time-field': () => {\n return {\n 'time-field': true,\n }\n },\n }\n\n /**\n * Array com os nomes dos meses do ano em português.\n */\n private readonly MONTHS = [\n 'Janeiro',\n 'Fevereiro',\n 'Março',\n 'Abril',\n 'Maio',\n 'Junho',\n 'Julho',\n 'Agosto',\n 'Setembro',\n 'Outubro',\n 'Novembro',\n 'Dezembro',\n ]\n\n /**\n * Array com os nomes dos dias da semana abreviados em português.\n */\n private readonly WEEKDAYS = ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb']\n\n /**\n * Getter: baseDate\n * Retorna a data base para o calendário, que é a data atual.\n * @returns Data atual\n */\n private get baseDate(): Date {\n return this.currentBaseDate\n }\n\n /**\n * Mapeamento de manipuladores de clique para cada dia.\n * Utiliza WeakMap para associar cada data a sua respectiva função de clique.\n */\n private dayClickHandlers = new WeakMap<Date, (event: MouseEvent) => void>()\n\n /**\n * Mapeamento de manipuladores de mudança para os campos de tempo (hora e minuto).\n * Utiliza Map para associar cada campo de tempo ao seu respectivo manipulador de mudança.\n */\n private timeInputChangeHandlers = new Map<InputTimeType, (event: Event) => void>()\n\n /**\n * Mapeamento de manipuladores de commit para os campos de tempo (hora e minuto).\n * Utiliza Map para associar cada campo de tempo ao seu respectivo manipulador de commit.\n */\n private timeInputCommitHandlers = new Map<InputTimeType, (event: Event) => void>()\n\n /**\n * Mapeamento de manipuladores de keydown para os campos de tempo (hora e minuto).\n * Utiliza Map para associar cada campo de tempo ao seu respectivo manipulador de keydown.\n */\n private timeInputKeydownHandlers = new Map<InputTimeType, (event: KeyboardEvent) => void>()\n\n /**\n * Ciclo de vida do componente: Executado antes do componente ser carregado.\n */\n componentWillLoad() {\n this.resolvePlaceholderFromMode()\n this.initializeFromValue()\n\n // referência proposital para o TS/ESLint\n void this.handleSelectedDateChange\n\n // referência proposital para o TS/ESLint\n void this.handleOpenChange\n\n // referência proposital para o TS/ESLint\n void this.handleValueChange\n }\n\n /**\n * Ciclo de vida do componente: Executado quando o componente é desconectado do DOM.\n */\n disconnectedCallback() {\n document.removeEventListener('click', this.handleOutsideClick)\n }\n\n /**\n * Fecha o dropdown do calendário.\n */\n @Method()\n async close() {\n this.isOpen = false\n }\n\n /**\n * Retorna a data atualmente selecionada no datetime-picker.\n */\n @Method()\n async getValue(): Promise<Date | null> {\n return this.currentSelectedDate\n }\n\n /**\n * Abre o dropdown do calendário.\n */\n @Method()\n async open() {\n this.isOpen = true\n }\n\n /**\n * Reseta o estado interno do componente para os valores iniciais.\n */\n @Method()\n async reset() {\n this.resetInternal()\n }\n\n /**\n * Define a data selecionada no datetime-picker.\n * @param value Data a ser definida ou null para resetar o valor\n */\n @Method()\n async setValue(value: Date | null) {\n if (value === null) {\n this.resetInternal()\n return\n }\n\n const date = new Date(value)\n this.currentBaseDate = date\n this.currentSelectedDate = date\n }\n\n /**\n * Alterna o estado do dropdown do calendário entre aberto e fechado.\n */\n @Method()\n async toggle() {\n this.isOpen = !this.isOpen\n }\n\n /**\n * Manipulador de reset do formulário.\n */\n formResetCallback() {\n this.resetInternal()\n }\n\n /**\n * Manipulador de clique para um dia específico.\n * @param event Evento de clique\n * @param date Data do dia clicado\n */\n private handleDayClick(date: Date) {\n if (this.disabled) return\n if (this.mode === 'time') return\n\n const selected = new Date(date)\n selected.setHours(this.currentBaseDate.getHours(), this.currentBaseDate.getMinutes(), 0, 0)\n\n this.currentBaseDate = selected\n this.currentSelectedDate = selected\n }\n\n /**\n * Manipulador de evento blur do campo de entrada.\n */\n private handleInputBlur = () => {\n this.commitInputValue()\n }\n\n /**\n * Manipulador de mudança do campo de entrada.\n * @param event Evento de mudança\n */\n private handleInputChange = (event: Event) => {\n const input = event.target as HTMLInputElement\n this.inputValue = input.value\n }\n\n /**\n * Manipulador de evento keydown do campo de entrada.\n * @param event Evento de keydown\n */\n private handleInputKeydown = (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n this.commitInputValue()\n }\n }\n\n /**\n * Manipulador de evento keydown global para fechar o calendário com a tecla Escape.\n */\n private handkeKeydown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n this.isOpen = false\n }\n }\n\n /**\n * Manipulador de mudança de mês.\n * @param event Evento de mudança\n */\n private handleMonthChange = (event: Event) => {\n const select = event.target as HTMLSelectElement\n const monthIndex = Number(select.value)\n\n if (Number.isNaN(monthIndex)) return\n\n const date = new Date(this.currentBaseDate)\n date.setMonth(monthIndex, 1)\n this.currentBaseDate = date\n }\n\n /**\n * Manipulador de clique para os botões de navegação do calendário.\n * @param event Evento de clique\n */\n private handleNavigationClick = (event: MouseEvent) => {\n if (this.disabled) return\n\n const action = (event.currentTarget as HTMLElement).dataset.action as NavigationAction | undefined\n\n if (action === undefined) return\n\n switch (action) {\n case NAVIGATION_ACTION.PREVIOUS_HOUR:\n this.decreaseHour()\n break\n case NAVIGATION_ACTION.PREVIOUS_MINUTE:\n this.decreaseMinute()\n break\n case NAVIGATION_ACTION.PREVIOUS_MONTH:\n this.decreaseMonth()\n break\n case NAVIGATION_ACTION.NEXT_HOUR:\n this.increaseHour()\n break\n case NAVIGATION_ACTION.NEXT_MINUTE:\n this.increaseMinute()\n break\n case NAVIGATION_ACTION.NEXT_MONTH:\n this.increaseMonth()\n break\n default:\n break\n }\n }\n\n /**\n * Manipulador de clique fora do componente para fechar o dropdown.\n * @param event Evento de clique\n */\n private handleOutsideClick = (event: MouseEvent) => {\n if (!this.el.contains(event.target as Node)) {\n this.isOpen = false\n }\n }\n\n /**\n * Manipulador de mudança do campo de tempo (hora ou minuto).\n * @param event Evento de mudança\n * @param type Tipo de campo de tempo (hora ou minuto)\n */\n private handleTimeInputChange = (event: Event, type: InputTimeType) => {\n if (this.disabled) return\n const input = event.target as HTMLInputElement\n const value = input.value.replace(/\\D/g, '')\n this.timeDraft[type] = value\n }\n\n /**\n * Manipulador de commit do campo de tempo (hora ou minuto).\n * @param event Evento de commit\n * @param type Tipo de campo de tempo (hora ou minuto)\n */\n private handleTimeInputCommit(type: InputTimeType) {\n if (this.disabled) return\n const draft = this.timeDraft[type]\n if (draft == null || draft === '') return\n\n const numeric = Number(draft)\n if (Number.isNaN(numeric)) return\n\n const date = new Date(this.currentBaseDate)\n\n if (type === INPUT_TIME_TYPE.HOUR) {\n if (numeric < 0 || numeric > 23) return\n date.setHours(numeric)\n }\n\n if (type === INPUT_TIME_TYPE.MINUTE) {\n if (numeric < 0 || numeric > 59) return\n date.setMinutes(numeric)\n }\n\n this.currentBaseDate = date\n this.currentSelectedDate = new Date(date)\n\n this.timeDraft[type] = undefined\n }\n\n /**\n * Manipulador de alternância do dropdown do calendário.\n * @param event Evento de clique\n */\n private handleToggleDropdown = (event: MouseEvent) => {\n if (this.disabled) return\n event.stopPropagation()\n this.isOpen = !this.isOpen\n }\n\n /**\n * Manipulador de mudança de ano.\n * @param event Evento de mudança\n */\n private handleYearChange = (event: Event) => {\n if (this.mode === 'time') return\n\n const input = event.target as HTMLInputElement\n const year = Number(input.value)\n\n if (Number.isNaN(year)) return\n\n const date = new Date(this.currentBaseDate)\n date.setFullYear(year, date.getMonth(), 1)\n\n this.currentBaseDate = date\n }\n\n /**\n * Atualiza o valor do input com base no valor atual selecionado.\n */\n private commitInputValue() {\n const value = this.inputValue.trim()\n if (value === '') return\n\n const parsed = this.parseInputValue(value)\n if (parsed === null) return\n\n this.currentSelectedDate = new Date(parsed)\n this.currentBaseDate = new Date(parsed)\n // this.inputValue = this.formatDateForInput(parsed)\n }\n\n /**\n * Navega para a hora anterior no timer.\n */\n private decreaseHour() {\n if (this.mode === 'date') return\n\n const date = new Date(this.currentBaseDate)\n date.setHours(date.getHours() - 1)\n\n this.currentBaseDate = date\n this.currentSelectedDate = new Date(date)\n }\n\n /**\n * Navega para o minuto anterior no timer.\n */\n private decreaseMinute() {\n if (this.mode === 'date') return\n\n const date = new Date(this.currentBaseDate)\n date.setMinutes(date.getMinutes() - 1)\n\n this.currentBaseDate = date\n this.currentSelectedDate = new Date(date)\n }\n\n /**\n * Navega para o mês anterior no calendário.\n */\n private decreaseMonth() {\n if (this.mode === 'time') return\n\n const date = new Date(this.currentBaseDate)\n date.setFullYear(date.getFullYear(), date.getMonth() - 1, 1)\n\n this.currentBaseDate = date\n }\n\n /**\n * Retorna o valor do campo de entrada formatado.\n * @returns Valor formatado do campo de entrada\n */\n private formatDateForInput(date?: Date | null): string {\n if (date == null || !isValid(date)) return ''\n\n switch (this.mode) {\n case 'time':\n return format(date, 'HH:mm')\n\n case 'date':\n return format(date, 'dd/MM/yyyy')\n\n case 'datetime':\n return format(date, 'dd/MM/yyyy HH:mm')\n\n default:\n return ''\n }\n }\n\n /**\n * Retorna o mapeamento de classes CSS para um determinado nome.\n * @param name Nome da parte do componente para a qual o mapeamento de classes será obtido\n * @param args Argumentos adicionais que podem ser necessários para a função de mapeamento de classes\n * @returns Objeto contendo o mapeamento de classes CSS\n */\n private getCss(name: keyof typeof this.cssMapRegistry, ...args: unknown[]): CssClassMap {\n const mapGetter = this.cssMapRegistry[name]\n return mapGetter !== undefined ? mapGetter(...args) : {}\n }\n\n /**\n * Retorna o manipulador de clique para um dia específico.\n * Se o manipulador ainda não existir, ele é criado e armazenado no WeakMap.\n * @param date Data do dia para o qual o manipulador será obtido\n * @returns Função manipuladora de clique para o dia especificado\n */\n private getDayClickHandler(date: Date) {\n let handler = this.dayClickHandlers.get(date)\n if (handler === undefined) {\n handler = () => this.handleDayClick(date)\n this.dayClickHandlers.set(date, handler)\n }\n return handler\n }\n\n /**\n * Retorna o dia do mês com zero à esquerda, se necessário.\n * @param date Data para a qual o dia do mês será obtido\n * @returns String representando o dia do mês com dois dígitos\n */\n private getDayWithLeadingZero(date: Date): string {\n return format(date, 'dd')\n }\n\n /**\n * Retorna o ícone correspondente a uma ação de navegação.\n * @param action Ação de navegação para a qual o ícone será obtido\n * @returns Nome do ícone correspondente à ação de navegação\n */\n private getIconForAction(action: NavigationAction): string {\n switch (action) {\n case NAVIGATION_ACTION.PREVIOUS_HOUR:\n case NAVIGATION_ACTION.PREVIOUS_MINUTE:\n return 'fa6-solid:chevron-down'\n\n case NAVIGATION_ACTION.PREVIOUS_MONTH:\n return 'fa6-solid:chevron-left'\n\n case NAVIGATION_ACTION.NEXT_HOUR:\n case NAVIGATION_ACTION.NEXT_MINUTE:\n return 'fa6-solid:chevron-up'\n\n case NAVIGATION_ACTION.NEXT_MONTH:\n return 'fa6-solid:chevron-right'\n default:\n return ''\n }\n }\n\n /**\n * Resolve o placeholder do campo de entrada com base no modo atual.\n */\n private getInputIcon() {\n switch (this.mode) {\n case 'time':\n return 'fa7-solid:clock'\n case 'date':\n case 'datetime':\n default:\n return 'fa6-solid:calendar-days'\n }\n }\n\n /**\n * Retorna as datas que serão exibidas na visualização do mês.\n * @returns\n */\n private getMonthViewDates(): Date[] {\n const start = startOfWeek(startOfMonth(this.baseDate), { weekStartsOn: this.weekStartsOn })\n const end = endOfWeek(endOfMonth(this.baseDate), { weekStartsOn: this.weekStartsOn })\n\n return eachDayOfInterval({ start, end })\n }\n\n /**\n * Retorna o rótulo do mês e ano para uma determinada data.\n * @param date Data para a qual o rótulo será obtido\n * @returns Rótulo do mês e ano no formato \"MMMM yyyy\"\n */\n private getMonthYearLabel(date: Date) {\n return format(date, 'MMMM yyyy')\n }\n\n /**\n * Retorna o rótulo aria para um botão de navegação específico.\n * @param action Ação de navegação para a qual o rótulo será obtido\n * @returns Rótulo aria correspondente à ação de navegação\n */\n private getNavigationAriaLabel(action: NavigationAction) {\n const base = this.currentBaseDate\n\n switch (action) {\n case NAVIGATION_ACTION.PREVIOUS_HOUR:\n return `Ir para a hora anterior, ${this.currentBaseDate.getHours() - 1}`\n\n case NAVIGATION_ACTION.PREVIOUS_MINUTE:\n return `Ir para o minuto anterior, ${this.currentBaseDate.getMinutes() - 1}`\n\n case NAVIGATION_ACTION.PREVIOUS_MONTH:\n return `Ir para o mês anterior, ${this.getMonthYearLabel(new Date(base.getFullYear(), base.getMonth() - 1, 1))}`\n\n case NAVIGATION_ACTION.NEXT_HOUR:\n return `Ir para a próxima hora, ${this.currentBaseDate.getHours() + 1}`\n\n case NAVIGATION_ACTION.NEXT_MINUTE:\n return `Ir para o próximo minuto, ${this.currentBaseDate.getMinutes() + 1}`\n\n case NAVIGATION_ACTION.NEXT_MONTH:\n return `Ir para o próximo mês, ${this.getMonthYearLabel(new Date(base.getFullYear(), base.getMonth() + 1, 1))}`\n default:\n return ''\n }\n }\n\n /**\n * Retorna o rótulo aria para um campo de tempo específico.\n * @param type Tipo de campo de tempo (hora ou minuto)\n * @returns Rótulo aria correspondente ao campo de tempo\n */\n private getTimeFieldAriaLabel(type: InputTimeType): string {\n switch (type) {\n case INPUT_TIME_TYPE.HOUR:\n return 'Hora'\n case INPUT_TIME_TYPE.MINUTE:\n return 'Minuto'\n default:\n return ''\n }\n }\n\n /**\n * Retorna a configuração do campo de tempo com base no tipo especificado.\n * @param type Tipo de campo de tempo (hora ou minuto)\n * @returns Objeto contendo o valor atual e as ações de navegação para o campo de tempo\n */\n private getTimeFieldConfig(type: InputTimeType) {\n switch (type) {\n case INPUT_TIME_TYPE.HOUR:\n return {\n value: this.currentBaseDate.getHours(),\n nextAction: NAVIGATION_ACTION.NEXT_HOUR,\n prevAction: NAVIGATION_ACTION.PREVIOUS_HOUR,\n }\n case INPUT_TIME_TYPE.MINUTE:\n return {\n value: this.currentBaseDate.getMinutes(),\n nextAction: NAVIGATION_ACTION.NEXT_MINUTE,\n prevAction: NAVIGATION_ACTION.PREVIOUS_MINUTE,\n }\n default:\n return {\n value: 0,\n nextAction: NAVIGATION_ACTION.NEXT_HOUR,\n prevAction: NAVIGATION_ACTION.PREVIOUS_HOUR,\n }\n }\n }\n\n /**\n * Retorna o valor do campo de tempo formatado com dois dígitos.\n * @param type Tipo de campo de tempo (hora ou minuto)\n * @returns Valor formatado do campo de tempo\n */\n private getTimeFieldValue(type: InputTimeType): string {\n switch (type) {\n case INPUT_TIME_TYPE.HOUR:\n return this.currentBaseDate.getHours().toString().padStart(2, '0')\n case INPUT_TIME_TYPE.MINUTE:\n return this.currentBaseDate.getMinutes().toString().padStart(2, '0')\n default:\n return '00'\n }\n }\n\n /**\n * Retorna o manipulador de commit para um campo de tempo específico.\n */\n private getTimeInputChangeHandler(type: InputTimeType) {\n let handler = this.timeInputChangeHandlers.get(type)\n\n if (handler === undefined) {\n handler = (event: Event) => this.handleTimeInputChange(event, type)\n this.timeInputChangeHandlers.set(type, handler)\n }\n\n return handler\n }\n\n /**\n * Retorna o manipulador de commit para um campo de tempo específico.\n */\n private getTimeInputCommitHandler(type: InputTimeType) {\n let handler = this.timeInputCommitHandlers.get(type)\n\n if (handler === undefined) {\n handler = () => this.handleTimeInputCommit(type)\n this.timeInputCommitHandlers.set(type, handler)\n }\n\n return handler\n }\n\n /**\n * Retorna o manipulador de keydown para um campo de tempo específico.\n */\n private getTimeInputKeydownHandler(type: InputTimeType) {\n let handler = this.timeInputKeydownHandlers.get(type)\n if (handler === undefined) {\n handler = (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n this.handleTimeInputCommit(type)\n }\n }\n this.timeInputKeydownHandlers.set(type, handler)\n }\n return handler\n }\n\n /**\n * Retorna os rótulos dos dias da semana, ajustados conforme o dia de início da semana.\n * @returns\n */\n private getWeekdayLabels(): string[] {\n const start = this.weekStartsOn\n return [...this.WEEKDAYS.slice(start), ...this.WEEKDAYS.slice(0, start)]\n }\n\n /**\n * Navega para a próxima hora no timer.\n */\n private increaseHour() {\n if (this.mode === 'date') return\n\n const date = new Date(this.currentBaseDate)\n date.setHours(date.getHours() + 1)\n\n this.currentBaseDate = date\n this.currentSelectedDate = new Date(date)\n }\n\n /**\n * Navega para o próximo minuto no timer.\n */\n private increaseMinute() {\n if (this.mode === 'date') return\n\n const date = new Date(this.currentBaseDate)\n date.setMinutes(date.getMinutes() + 1)\n\n this.currentBaseDate = date\n this.currentSelectedDate = new Date(date)\n }\n\n /**\n * Navega para o próximo mês no calendário.\n */\n private increaseMonth() {\n if (this.mode === 'time') return\n\n const date = new Date(this.currentBaseDate)\n date.setFullYear(date.getFullYear(), date.getMonth() + 1, 1)\n\n this.currentBaseDate = date\n }\n\n /**\n * Inicializa o estado interno do componente com base no valor da propriedade `value`.\n * Se `value` estiver definido, usa esse valor.\n * Caso contrário, se `autoSelectToday` for verdadeiro, seleciona a data/hora atual.\n * Caso contrário, inicializa com estado vazio.\n */\n private initializeFromValue() {\n if (this.value != null) {\n const date = new Date(this.value)\n this.currentBaseDate = date\n this.currentSelectedDate = new Date(date)\n return\n }\n\n if (this.autoSelectToday) {\n const now = new Date()\n this.currentBaseDate = now\n this.currentSelectedDate = new Date(now)\n return\n }\n\n this.currentBaseDate = new Date()\n this.currentSelectedDate = null\n }\n\n /**\n * Analisa o valor de entrada de data e retorna um objeto Date ou null se inválido.\n * @param value Valor de entrada a ser analisado\n * @param base Data base para análise\n * @returns Objeto Date válido ou null se inválido\n */\n private parseDateInput(value: string, base: Date): Date | null {\n const parsedDate = parse(value, 'dd/MM/yyyy', base)\n if (!isValid(parsedDate)) return null\n\n parsedDate.setHours(base.getHours(), base.getMinutes(), 0, 0)\n\n return parsedDate\n }\n\n /**\n * Analisa o valor de entrada de data e hora e retorna um objeto Date ou null se inválido.\n * @param value Valor de entrada a ser analisado\n * @param base Data base para análise\n * @returns Objeto Date válido ou null se inválido\n */\n private parseDateTimeInput(value: string, base: Date): Date | null {\n // data + hora\n const full = parse(value, 'dd/MM/yyyy HH:mm', base)\n if (isValid(full)) return full\n\n // só data → hora atual\n const date = this.parseDateInput(value, base)\n if (date !== null) {\n date.setHours(base.getHours(), base.getMinutes(), 0, 0)\n return date\n }\n\n // só hora → data atual\n return this.parseTimeInput(value, base)\n }\n\n /**\n * Analisa o valor de entrada e retorna um objeto Date ou null se inválido.\n * @param value Valor de entrada a ser analisado\n * @returns Objeto Date válido ou null se inválido\n */\n private parseInputValue(value: string): Date | null {\n const base = this.currentSelectedDate ?? new Date()\n\n switch (this.mode) {\n case 'date':\n return this.parseDateInput(value, base)\n\n case 'time':\n return this.parseTimeInput(value, base)\n\n case 'datetime':\n return this.parseDateTimeInput(value, base)\n\n default:\n return null\n }\n }\n\n /**\n * Analisa o valor de entrada de tempo e retorna um objeto Date ou null se inválido.\n * @param value Valor de entrada a ser analisado\n * @param base Data base para análise\n * @returns Objeto Date válido ou null se inválido\n */\n private parseTimeInput(value: string, base: Date): Date | null {\n const parsedTime = parse(value, 'HH:mm', base)\n if (!isValid(parsedTime)) return null\n\n const date = new Date(base)\n date.setHours(parsedTime.getHours(), parsedTime.getMinutes(), 0, 0)\n\n return date\n }\n\n /**\n * Reseta o estado interno do componente para os valores iniciais.\n */\n private resetInternal() {\n if (this.autoSelectToday) {\n const now = new Date()\n this.currentBaseDate = now\n this.currentSelectedDate = new Date(now)\n } else {\n this.currentBaseDate = new Date()\n this.currentSelectedDate = null\n }\n }\n\n /**\n * Resolve o placeholder padrão com base no modo atual, se nenhum placeholder personalizado for fornecido.\n */\n private resolvePlaceholderFromMode() {\n if (this.placeholder != null) return\n\n switch (this.mode) {\n case 'date':\n this.placeholder = 'Selecione uma data'\n break\n case 'time':\n this.placeholder = 'Horário'\n break\n case 'datetime':\n this.placeholder = 'Selecione data e hora'\n break\n }\n }\n\n /**\n * Renderiza um dia específico (uma célula no calendário).\n * @param date Data do dia a ser renderizado\n * @returns Elemento JSX representando o dia\n */\n private renderDayCell(date: Date) {\n return (\n <div class={this.getCss('day', date)} onClick={this.getDayClickHandler(date)}>\n {this.getDayWithLeadingZero(date)}\n </div>\n )\n }\n\n /**\n * Renderiza o calendário completo (dias da semana e grade de dias do mês).\n * @returns Elemento JSX representando o calendário\n */\n private renderCalendar() {\n return (\n <div class={this.getCss('calendar')}>\n {this.renderWeekdays()}\n {this.renderMonthGrid()}\n </div>\n )\n }\n\n /**\n * Renderiza o barra de navegação do cabeçalho.\n * @returns Elemento JSX representando a barra de navegação do cabeçalho.\n */\n private renderCalendarHeader() {\n return (\n <div class={this.getCss('header')}>\n {this.renderNavigationButton(NAVIGATION_ACTION.PREVIOUS_MONTH)}\n {this.renderMonthSelection()}\n {this.renderYearSelection()}\n {this.renderNavigationButton(NAVIGATION_ACTION.NEXT_MONTH)}\n </div>\n )\n }\n\n /**\n * Renderiza um divisor visual entre o calendário e o time picker.\n * @returns Elemento JSX representando o divisor\n */\n private renderDivider() {\n return <br-divider thickness=\"medium\" color=\"#e6e6e6\" margin-top=\"10px\" margin-bottom=\"10px\"></br-divider>\n }\n\n private renderInputField() {\n return (\n <br-input\n type=\"text\"\n value={this.inputValue}\n disabled={this.disabled}\n placeholder={this.placeholder}\n onInput={this.handleInputChange}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleInputKeydown}\n aria-label=\"Campo de data e hora\"\n >\n <br-icon\n slot=\"action\"\n icon-name={this.getInputIcon()}\n aria-hidden=\"true\"\n onClick={this.handleToggleDropdown}\n ></br-icon>\n </br-input>\n )\n }\n\n /**\n * Renderiza a grade de dias do mês.\n * @returns Elemento JSX representando os dias do mês\n */\n private renderMonthGrid() {\n const dates = this.getMonthViewDates()\n\n return <div class={this.getCss('month')}>{dates.map(this.renderDayCell, this)}</div>\n }\n\n /**\n * Renderiza uma opção de mês para seleção.\n * @param month Nome do mês\n * @param index Índice do mês (0-11)\n * @returns Elemento JSX representando a opção de mês\n */\n private renderMonthOption(month: string, index: number) {\n return (\n <option value={index} selected={index === this.currentBaseDate.getMonth()}>\n {month}\n </option>\n )\n }\n\n /**\n * Renderiza a seleção de mês no cabeçalho do calendário.\n * @returns Elemento JSX representando a seleção de mês\n */\n private renderMonthSelection() {\n return (\n <label class=\"month-select\">\n <span class=\"visually-hidden\">Selecionar mês</span>\n <select onChange={this.handleMonthChange} aria-label=\"Selecionar mês\" disabled={this.disabled}>\n {this.MONTHS.map(this.renderMonthOption, this)}\n </select>\n </label>\n )\n }\n\n /**\n * Renderiza um botão de navegação no cabeçalho.\n * @param action Ação de navegação associada ao botão\n * @returns Elemento JSX representando o botão de navegação\n */\n private renderNavigationButton(action: NavigationAction) {\n return (\n <br-button\n emphasis=\"tertiary\"\n density=\"small\"\n shape=\"circle\"\n disabled={this.disabled}\n data-action={action}\n aria-label={this.getNavigationAriaLabel(action)}\n onClick={this.handleNavigationClick}\n >\n <br-icon icon-name={this.getIconForAction(action)} aria-hidden=\"true\"></br-icon>\n </br-button>\n )\n }\n\n /**\n * Renderiza a seção de time picker (hora e minuto).\n * @returns Elemento JSX representando a seção de time picker\n */\n private renderTimePicker() {\n if (this.mode === 'date') return null\n\n return (\n <div class={this.getCss('timer')}>\n {this.renderTimeField(INPUT_TIME_TYPE.HOUR)}\n <span class=\"time-separator\">:</span>\n {this.renderTimeField(INPUT_TIME_TYPE.MINUTE)}\n </div>\n )\n }\n\n /**\n * Renderiza um campo de tempo (hora ou minuto).\n * @param type Tipo de campo de tempo (hora ou minuto)\n * @returns Elemento JSX representando o campo de tempo\n */\n private renderTimeField(type: InputTimeType) {\n const { nextAction, prevAction } = this.getTimeFieldConfig(type)\n\n return (\n <div class={this.getCss('time-field')}>\n {this.renderNavigationButton(nextAction)}\n <input\n type=\"text\"\n inputmode=\"numeric\"\n disabled={this.disabled}\n maxLength={2}\n value={this.timeDraft[type] ?? this.getTimeFieldValue(type)}\n aria-label={this.getTimeFieldAriaLabel(type)}\n onInput={this.getTimeInputChangeHandler(type)}\n onBlur={this.getTimeInputCommitHandler(type)}\n onKeyDown={this.getTimeInputKeydownHandler(type)}\n />\n {this.renderNavigationButton(prevAction)}\n </div>\n )\n }\n\n /**\n * Renderiza os rótulos dos dias da semana.\n * @returns Elemento JSX representando os rótulos dos dias da semana\n */\n private renderWeekdays() {\n const labels = this.getWeekdayLabels()\n\n return (\n <div class=\"weekdays\">\n {labels.map((label) => (\n <div class=\"weekday\">{label}</div>\n ))}\n </div>\n )\n }\n\n private renderYearSelection() {\n return (\n <label class=\"year-select\">\n <span class=\"visually-hidden\">Selecionar ano</span>\n <input\n type=\"number\"\n disabled={this.disabled}\n value={this.currentBaseDate.getFullYear()}\n onChange={this.handleYearChange}\n aria-label=\"Selecionar ano\"\n />\n </label>\n )\n }\n\n /**\n * Renderiza o componente datetime-picker\n * @returns Elemento JSX representando o componente\n */\n render() {\n return (\n <Host>\n <div class={this.getCss('root')}>\n {this.renderInputField()}\n {this.isOpen && (\n <br-card>\n {this.mode !== 'time' && this.renderCalendarHeader()}\n {this.mode !== 'time' && this.renderCalendar()}\n {this.mode === 'datetime' && this.renderDivider()}\n {this.mode !== 'date' && this.renderTimePicker()}\n </br-card>\n )}\n </div>\n </Host>\n )\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"datetime-picker.js","sourceRoot":"","sources":["../../../../../../packages/webcomponents/src/components/datetime-picker/datetime-picker.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,SAAS,EACT,OAAO,EACP,KAAK,EAEL,CAAC,EACD,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,KAAK,GACN,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,MAAM,EACN,SAAS,EACT,WAAW,EACX,OAAO,EACP,KAAK,EACL,YAAY,EACZ,WAAW,GACZ,MAAM,UAAU,CAAA;AAIjB;;GAEG;AACH,MAAM,eAAe,GAAG;IACtB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;CACjB,CAAA;AAED;;GAEG;AACH,MAAM,iBAAiB,GAAG;IACxB,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;CAChB,CAAA;AA4BV;;GAEG;AAOH,MAAM,OAAO,cAAc;IAN3B;QAkBE;;;WAGG;QACsB,oBAAe,GAAG,KAAK,CAAA;QAEhD;;WAEG;QACsB,aAAQ,GAAY,KAAK,CAAA;QAElD;;;;;;WAMG;QACsB,SAAI,GAAuB,UAAU,CAAA;QAoB9D;;;;;;;;;;WAUG;QACsB,iBAAY,GAAiB,CAAC,CAAA;QAEvD;;WAEG;QACM,oBAAe,GAAS,IAAI,IAAI,EAAE,CAAA;QAE3C;;WAEG;QACM,wBAAmB,GAAgB,IAAI,CAAA;QAEhD;;WAEG;QACc,eAAU,GAAG,EAAE,CAAA;QAEhC;;WAEG;QACc,WAAM,GAAG,KAAK,CAAA;QAE/B;;WAEG;QACc,cAAS,GAA2C,EAAE,CAAA;QAqFvE;;;WAGG;QACK,mBAAc,GAAsC;YAC1D,QAAQ,EAAE,GAAG,EAAE;gBACb,OAAO;oBACL,QAAQ,EAAE,IAAI;iBACf,CAAA;YACH,CAAC;YACD,GAAG,EAAE,CAAC,IAAU,EAAE,EAAE;gBAClB,OAAO;oBACL,GAAG,EAAE,IAAI;oBACT,eAAe,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;oBAClD,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;oBAClC,QAAQ,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC;iBACpD,CAAA;YACH,CAAC;YACD,MAAM,EAAE,GAAG,EAAE;gBACX,OAAO;oBACL,MAAM,EAAE,IAAI;iBACb,CAAA;YACH,CAAC;YACD,KAAK,EAAE,GAAG,EAAE;gBACV,OAAO;oBACL,SAAS,EAAE,IAAI;iBAChB,CAAA;YACH,CAAC;YACD,IAAI,EAAE,GAAG,EAAE;gBACT,OAAO;oBACL,oBAAoB,EAAE,IAAI;oBAC1B,QAAQ,EAAE,IAAI,CAAC,IAAI,KAAK,UAAU;oBAClC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM;oBAC1B,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM;iBAC3B,CAAA;YACH,CAAC;YACD,KAAK,EAAE,GAAG,EAAE;gBACV,OAAO;oBACL,cAAc,EAAE,IAAI;iBACrB,CAAA;YACH,CAAC;YACD,YAAY,EAAE,GAAG,EAAE;gBACjB,OAAO;oBACL,YAAY,EAAE,IAAI;iBACnB,CAAA;YACH,CAAC;SACF,CAAA;QAED;;WAEG;QACc,WAAM,GAAG;YACxB,SAAS;YACT,WAAW;YACX,OAAO;YACP,OAAO;YACP,MAAM;YACN,OAAO;YACP,OAAO;YACP,QAAQ;YACR,UAAU;YACV,SAAS;YACT,UAAU;YACV,UAAU;SACX,CAAA;QAED;;WAEG;QACc,aAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QAW7E;;;WAGG;QACK,qBAAgB,GAAG,IAAI,OAAO,EAAqC,CAAA;QAE3E;;;WAGG;QACK,4BAAuB,GAAG,IAAI,GAAG,EAAyC,CAAA;QAElF;;;WAGG;QACK,4BAAuB,GAAG,IAAI,GAAG,EAAyC,CAAA;QAElF;;;WAGG;QACK,6BAAwB,GAAG,IAAI,GAAG,EAAiD,CAAA;QAyG3F;;WAEG;QACK,oBAAe,GAAG,GAAG,EAAE;YAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACzB,CAAC,CAAA;QAED;;;WAGG;QACK,sBAAiB,GAAG,CAAC,KAAY,EAAE,EAAE;YAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B,CAAA;YAC9C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAA;QAC/B,CAAC,CAAA;QAED;;;WAGG;QACK,uBAAkB,GAAG,CAAC,KAAoB,EAAE,EAAE;YACpD,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACzB,CAAC;QACH,CAAC,CAAA;QAED;;WAEG;QACK,kBAAa,GAAG,CAAC,KAAoB,EAAE,EAAE;YAC/C,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;YACrB,CAAC;QACH,CAAC,CAAA;QAED;;;WAGG;QACK,sBAAiB,GAAG,CAAC,KAAY,EAAE,EAAE;YAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,MAA2B,CAAA;YAChD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAEvC,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;gBAAE,OAAM;YAEpC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YAC3C,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;YAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC7B,CAAC,CAAA;QAED;;;WAGG;QACK,0BAAqB,GAAG,CAAC,KAAiB,EAAE,EAAE;YACpD,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAM;YAEzB,MAAM,MAAM,GAAI,KAAK,CAAC,aAA6B,CAAC,OAAO,CAAC,MAAsC,CAAA;YAElG,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAM;YAEhC,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,iBAAiB,CAAC,aAAa;oBAClC,IAAI,CAAC,YAAY,EAAE,CAAA;oBACnB,MAAK;gBACP,KAAK,iBAAiB,CAAC,eAAe;oBACpC,IAAI,CAAC,cAAc,EAAE,CAAA;oBACrB,MAAK;gBACP,KAAK,iBAAiB,CAAC,cAAc;oBACnC,IAAI,CAAC,aAAa,EAAE,CAAA;oBACpB,MAAK;gBACP,KAAK,iBAAiB,CAAC,SAAS;oBAC9B,IAAI,CAAC,YAAY,EAAE,CAAA;oBACnB,MAAK;gBACP,KAAK,iBAAiB,CAAC,WAAW;oBAChC,IAAI,CAAC,cAAc,EAAE,CAAA;oBACrB,MAAK;gBACP,KAAK,iBAAiB,CAAC,UAAU;oBAC/B,IAAI,CAAC,aAAa,EAAE,CAAA;oBACpB,MAAK;gBACP;oBACE,MAAK;YACT,CAAC;QACH,CAAC,CAAA;QAED;;;WAGG;QACK,uBAAkB,GAAG,CAAC,KAAiB,EAAE,EAAE;YACjD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE,CAAC;gBAC5C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;YACrB,CAAC;QACH,CAAC,CAAA;QAED;;;;WAIG;QACK,0BAAqB,GAAG,CAAC,KAAY,EAAE,IAAmB,EAAE,EAAE;YACpE,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAM;YACzB,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B,CAAA;YAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;QAC9B,CAAC,CAAA;QAiCD;;;WAGG;QACK,yBAAoB,GAAG,CAAC,KAAiB,EAAE,EAAE;YACnD,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAM;YACzB,KAAK,CAAC,eAAe,EAAE,CAAA;YACvB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAA;QAC5B,CAAC,CAAA;QAED;;;WAGG;QACK,qBAAgB,GAAG,CAAC,KAAY,EAAE,EAAE;YAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAM;YAEhC,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B,CAAA;YAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAEhC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,OAAM;YAE9B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAA;YAE1C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC7B,CAAC,CAAA;KAysBF;IApoCC;;;;OAIG;IAEK,wBAAwB,CAAC,QAAqB;QACpD,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;QAExD,IAAI,CAAC,UAAU,GAAG,cAAc,CAAA;QAEhC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAE7E,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED;;;;OAIG;IAEH,oBAAoB,CAAC,QAAiB;QACpC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAC1C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;IAED;;;;OAIG;IAEK,gBAAgB,CAAC,IAAa;QACpC,IAAI,IAAI,EAAE,CAAC;YACT,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;YAC3D,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAC1D,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;YAC9D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;IAED;;;OAGG;IAEH,gBAAgB;QACd,IAAI,CAAC,0BAA0B,EAAE,CAAA;IACnC,CAAC;IAED;;OAEG;IAEO,iBAAiB,CAAC,QAAqB;QAC/C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAA;YACjC,CAAC;YACD,OAAM;QACR,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAyED;;;;OAIG;IACH,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,eAAe,CAAA;IAC7B,CAAC;IA0BD;;OAEG;IACH,iBAAiB;QACf,IAAI,CAAC,0BAA0B,EAAE,CAAA;QACjC,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAE1B,yCAAyC;QACzC,KAAK,IAAI,CAAC,wBAAwB,CAAA;QAElC,yCAAyC;QACzC,KAAK,IAAI,CAAC,gBAAgB,CAAA;QAE1B,yCAAyC;QACzC,KAAK,IAAI,CAAC,iBAAiB,CAAA;IAC7B,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAChE,CAAC;IAED;;OAEG;IAEH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;IACrB,CAAC;IAED;;OAEG;IAEH,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,mBAAmB,CAAA;IACjC,CAAC;IAED;;OAEG;IAEH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IACpB,CAAC;IAED;;OAEG;IAEH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC;IAED;;;OAGG;IAEH,KAAK,CAAC,QAAQ,CAAC,KAAkB;QAC/B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,EAAE,CAAA;YACpB,OAAM;QACR,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAA;IACjC,CAAC;IAED;;OAEG;IAEH,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAA;IAC5B,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC;IAED;;;;OAIG;IACK,cAAc,CAAC,IAAU;QAC/B,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAM;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAM;QAEhC,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAE3F,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAA;QAC/B,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAA;IACrC,CAAC;IA6GD;;;;OAIG;IACK,qBAAqB,CAAC,IAAmB;QAC/C,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAM;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAClC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;YAAE,OAAM;QAEzC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;YAAE,OAAM;QAEjC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAE3C,IAAI,IAAI,KAAK,eAAe,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,EAAE;gBAAE,OAAM;YACvC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACxB,CAAC;QAED,IAAI,IAAI,KAAK,eAAe,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,EAAE;gBAAE,OAAM;YACvC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAC1B,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;QAEzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;IAClC,CAAC;IA8BD;;OAEG;IACK,gBAAgB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;QACpC,IAAI,KAAK,KAAK,EAAE;YAAE,OAAM;QAExB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;QAC1C,IAAI,MAAM,KAAK,IAAI;YAAE,OAAM;QAE3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAA;QAC3C,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,oDAAoD;IACtD,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAM;QAEhC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;QAElC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAM;QAEhC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;QAEtC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAM;QAEhC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QAE5D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;IAC7B,CAAC;IAED;;;OAGG;IACK,kBAAkB,CAAC,IAAkB;QAC3C,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAA;QAE7C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAE9B,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;YAEnC,KAAK,UAAU;gBACb,OAAO,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAA;YAEzC;gBACE,OAAO,EAAE,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,IAAsC,EAAE,GAAG,IAAe;QACvE,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC3C,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1D,CAAC;IAED;;;;;OAKG;IACK,kBAAkB,CAAC,IAAU;QACnC,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC7C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;YACzC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC1C,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;;;OAIG;IACK,qBAAqB,CAAC,IAAU;QACtC,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC3B,CAAC;IAED;;;;OAIG;IACK,gBAAgB,CAAC,MAAwB;QAC/C,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,iBAAiB,CAAC,aAAa,CAAC;YACrC,KAAK,iBAAiB,CAAC,eAAe;gBACpC,OAAO,wBAAwB,CAAA;YAEjC,KAAK,iBAAiB,CAAC,cAAc;gBACnC,OAAO,wBAAwB,CAAA;YAEjC,KAAK,iBAAiB,CAAC,SAAS,CAAC;YACjC,KAAK,iBAAiB,CAAC,WAAW;gBAChC,OAAO,sBAAsB,CAAA;YAE/B,KAAK,iBAAiB,CAAC,UAAU;gBAC/B,OAAO,yBAAyB,CAAA;YAClC;gBACE,OAAO,EAAE,CAAA;QACb,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM;gBACT,OAAO,iBAAiB,CAAA;YAC1B,KAAK,MAAM,CAAC;YACZ,KAAK,UAAU,CAAC;YAChB;gBACE,OAAO,yBAAyB,CAAA;QACpC,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,iBAAiB;QACvB,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;QAC3F,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;QAErF,OAAO,iBAAiB,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,IAAU;QAClC,OAAO,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAClC,CAAC;IAED;;;;OAIG;IACK,sBAAsB,CAAC,MAAwB;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAA;QAEjC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,iBAAiB,CAAC,aAAa;gBAClC,OAAO,4BAA4B,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAA;YAE1E,KAAK,iBAAiB,CAAC,eAAe;gBACpC,OAAO,8BAA8B,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAA;YAE9E,KAAK,iBAAiB,CAAC,cAAc;gBACnC,OAAO,2BAA2B,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAElH,KAAK,iBAAiB,CAAC,SAAS;gBAC9B,OAAO,2BAA2B,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAA;YAEzE,KAAK,iBAAiB,CAAC,WAAW;gBAChC,OAAO,6BAA6B,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAA;YAE7E,KAAK,iBAAiB,CAAC,UAAU;gBAC/B,OAAO,0BAA0B,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YACjH;gBACE,OAAO,EAAE,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,qBAAqB,CAAC,IAAmB;QAC/C,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,eAAe,CAAC,IAAI;gBACvB,OAAO,MAAM,CAAA;YACf,KAAK,eAAe,CAAC,MAAM;gBACzB,OAAO,QAAQ,CAAA;YACjB;gBACE,OAAO,EAAE,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,IAAmB;QAC5C,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,eAAe,CAAC,IAAI;gBACvB,OAAO;oBACL,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;oBACtC,UAAU,EAAE,iBAAiB,CAAC,SAAS;oBACvC,UAAU,EAAE,iBAAiB,CAAC,aAAa;iBAC5C,CAAA;YACH,KAAK,eAAe,CAAC,MAAM;gBACzB,OAAO;oBACL,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;oBACxC,UAAU,EAAE,iBAAiB,CAAC,WAAW;oBACzC,UAAU,EAAE,iBAAiB,CAAC,eAAe;iBAC9C,CAAA;YACH;gBACE,OAAO;oBACL,KAAK,EAAE,CAAC;oBACR,UAAU,EAAE,iBAAiB,CAAC,SAAS;oBACvC,UAAU,EAAE,iBAAiB,CAAC,aAAa;iBAC5C,CAAA;QACL,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,IAAmB;QAC3C,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,eAAe,CAAC,IAAI;gBACvB,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACpE,KAAK,eAAe,CAAC,MAAM;gBACzB,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACtE;gBACE,OAAO,IAAI,CAAA;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACK,yBAAyB,CAAC,IAAmB;QACnD,IAAI,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEpD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YACnE,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACjD,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACK,yBAAyB,CAAC,IAAmB;QACnD,IAAI,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEpD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAA;YAChD,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACjD,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACK,0BAA0B,CAAC,IAAmB;QACpD,IAAI,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACrD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,GAAG,CAAC,KAAoB,EAAE,EAAE;gBACjC,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;oBAC1B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAA;gBAClC,CAAC;YACH,CAAC,CAAA;YACD,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAClD,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;;OAGG;IACK,gBAAgB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAA;QAC/B,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;IAC1E,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAM;QAEhC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;QAElC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAM;QAEhC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;QAEtC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAM;QAEhC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QAE5D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;IAC7B,CAAC;IAED;;;;;OAKG;IACK,mBAAmB;QACzB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACjC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;YAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;YACzC,OAAM;QACR,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;YACtB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAA;YAC1B,IAAI,CAAC,mBAAmB,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAA;YACxC,OAAM;QACR,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAA;QACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAA;IACjC,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,KAAa,EAAE,IAAU;QAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,CAAA;QACnD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAA;QAErC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAE7D,OAAO,UAAU,CAAA;IACnB,CAAC;IAED;;;;;OAKG;IACK,kBAAkB,CAAC,KAAa,EAAE,IAAU;QAClD,cAAc;QACd,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAA;QACnD,IAAI,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAE9B,uBAAuB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC7C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YACvD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,uBAAuB;QACvB,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACzC,CAAC;IAED;;;;OAIG;IACK,eAAe,CAAC,KAAa;;QACnC,MAAM,IAAI,GAAG,MAAA,IAAI,CAAC,mBAAmB,mCAAI,IAAI,IAAI,EAAE,CAAA;QAEnD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAEzC,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAEzC,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAE7C;gBACE,OAAO,IAAI,CAAA;QACf,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,KAAa,EAAE,IAAU;QAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QAC9C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAA;QAErC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAEnE,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;YACtB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAA;YAC1B,IAAI,CAAC,mBAAmB,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAA;QAC1C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAA;YACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAA;QACjC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,0BAA0B;QAChC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI;YAAE,OAAM;QAEpC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM;gBACT,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAA;gBACvC,MAAK;YACP,KAAK,MAAM;gBACT,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;gBAC5B,MAAK;YACP,KAAK,UAAU;gBACb,IAAI,CAAC,WAAW,GAAG,uBAAuB,CAAA;gBAC1C,MAAK;QACT,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,aAAa,CAAC,IAAU;QAC9B,OAAO,CACL,WAAK,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IACzE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAC7B,CACP,CAAA;IACH,CAAC;IAED;;;OAGG;IACK,cAAc;QACpB,OAAO,CACL,WAAK,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YAChC,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,eAAe,EAAE,CACnB,CACP,CAAA;IACH,CAAC;IAED;;;OAGG;IACK,oBAAoB;QAC1B,OAAO,CACL,WAAK,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC9B,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,cAAc,CAAC;YAC7D,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CACtD,CACP,CAAA;IACH,CAAC;IAED;;;OAGG;IACK,aAAa;QACnB,OAAO,kBAAY,SAAS,EAAC,QAAQ,EAAC,KAAK,EAAC,SAAS,gBAAY,MAAM,mBAAe,MAAM,GAAc,CAAA;IAC5G,CAAC;IAEO,gBAAgB;QACtB,OAAO,CACL,gBACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,IAAI,CAAC,UAAU,EACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAC/B,MAAM,EAAE,IAAI,CAAC,eAAe,EAC5B,SAAS,EAAE,IAAI,CAAC,kBAAkB,gBACvB,sBAAsB;YAEjC,eACE,IAAI,EAAC,QAAQ,eACF,IAAI,CAAC,YAAY,EAAE,iBAClB,MAAM,EAClB,OAAO,EAAE,IAAI,CAAC,oBAAoB,GACzB,CACF,CACZ,CAAA;IACH,CAAC;IAED;;;OAGG;IACK,eAAe;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAEtC,OAAO,WAAK,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAO,CAAA;IACtF,CAAC;IAED;;;;;OAKG;IACK,iBAAiB,CAAC,KAAa,EAAE,KAAa;QACpD,OAAO,CACL,cAAQ,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IACtE,KAAK,CACC,CACV,CAAA;IACH,CAAC;IAED;;;OAGG;IACK,oBAAoB;QAC1B,OAAO,CACL,aAAO,KAAK,EAAC,cAAc;YACzB,YAAM,KAAK,EAAC,iBAAiB,0BAAsB;YACnD,cAAQ,QAAQ,EAAE,IAAI,CAAC,iBAAiB,gBAAa,qBAAgB,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAC1F,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CACvC,CACH,CACT,CAAA;IACH,CAAC;IAED;;;;OAIG;IACK,sBAAsB,CAAC,MAAwB;QACrD,OAAO,CACL,iBACE,QAAQ,EAAC,UAAU,EACnB,OAAO,EAAC,OAAO,EACf,KAAK,EAAC,QAAQ,EACd,QAAQ,EAAE,IAAI,CAAC,QAAQ,iBACV,MAAM,gBACP,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAC/C,OAAO,EAAE,IAAI,CAAC,qBAAqB;YAEnC,4BAAoB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,iBAAc,MAAM,GAAW,CACtE,CACb,CAAA;IACH,CAAC;IAED;;;OAGG;IACK,gBAAgB;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,IAAI,CAAA;QAErC,OAAO,CACL,WAAK,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC;YAC3C,YAAM,KAAK,EAAC,gBAAgB,QAAS;YACpC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,MAAM,CAAC,CACzC,CACP,CAAA;IACH,CAAC;IAED;;;;OAIG;IACK,eAAe,CAAC,IAAmB;;QACzC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QAEhE,OAAO,CACL,WAAK,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAClC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC;YACxC,aACE,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,SAAS,EACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,SAAS,EAAE,CAAC,EACZ,KAAK,EAAE,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mCAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAC/C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAC5C,OAAO,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAC7C,MAAM,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAC5C,SAAS,EAAE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAChD;YACD,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CACpC,CACP,CAAA;IACH,CAAC;IAED;;;OAGG;IACK,cAAc;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAEtC,OAAO,CACL,WAAK,KAAK,EAAC,UAAU,IAClB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,WAAK,KAAK,EAAC,SAAS,IAAE,KAAK,CAAO,CACnC,CAAC,CACE,CACP,CAAA;IACH,CAAC;IAEO,mBAAmB;QACzB,OAAO,CACL,aAAO,KAAK,EAAC,aAAa;YACxB,YAAM,KAAK,EAAC,iBAAiB,qBAAsB;YACnD,aACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,EACzC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,gBACpB,gBAAgB,GAC3B,CACI,CACT,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,4DAAK,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC5B,IAAI,CAAC,gBAAgB,EAAE;gBACvB,IAAI,CAAC,MAAM,IAAI,CACd;oBACG,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,oBAAoB,EAAE;oBACnD,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;oBAC7C,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE;oBAChD,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,CACxC,CACX,CACG,CACD,CACR,CAAA;IACH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\nimport {\n eachDayOfInterval,\n endOfMonth,\n endOfWeek,\n format,\n isSameDay,\n isSameMonth,\n isValid,\n parse,\n startOfMonth,\n startOfWeek,\n} from 'date-fns'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Tipos de entrada de tempo disponíveis no componente datetime-picker.\n */\nconst INPUT_TIME_TYPE = {\n HOUR: 'hour',\n MINUTE: 'minute',\n}\n\n/**\n * Ações de navegação disponíveis no componente datetime-picker.\n */\nconst NAVIGATION_ACTION = {\n PREVIOUS_HOUR: 'previous-hour',\n PREVIOUS_MINUTE: 'previous-minute',\n PREVIOUS_MONTH: 'previous-month',\n NEXT_HOUR: 'next-hour',\n NEXT_MINUTE: 'next-minute',\n NEXT_MONTH: 'next-month',\n} as const\n\n/**\n * Função que define o tipo de um getter para mapeamento de classes CSS.\n */\ntype CssClassMapGetter = (...args: unknown[]) => CssClassMap\n\n/**\n * Tipo que representa os modos disponíveis no componente datetime-picker.\n */\ntype DatetimePickerMode = 'date' | 'time' | 'datetime'\n\n/**\n * Tipo que representa os tipos de entrada de tempo disponíveis no componente datetime-picker.\n */\ntype InputTimeType = (typeof INPUT_TIME_TYPE)[keyof typeof INPUT_TIME_TYPE]\n\n/**\n * Tipo que representa as ações de navegação disponíveis no componente datetime-picker.\n */\ntype NavigationAction = (typeof NAVIGATION_ACTION)[keyof typeof NAVIGATION_ACTION]\n\n/**\n * Índice do dia da semana.\n * 0 representa domingo, 1 representa segunda-feira, e assim por diante até 6 que representa sábado.\n */\ntype WeekDayIndex = 0 | 1 | 2 | 3 | 4 | 5 | 6\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/datetime-picker?tab=designer).\n */\n@Component({\n tag: 'br-datetime-picker',\n styleUrl: 'datetime-picker.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class DatetimePicker {\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: HTMLBrDatetimePickerElement\n\n /**\n * Internals do elemento para manipulação de formulários.\n */\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Define se a data atual deve ser selecionada automaticamente ao abrir o datetime-picker.\n * O padrão é false\n */\n @Prop({ reflect: true }) autoSelectToday = false\n\n /**\n * Define se o datetime-picker está desabilitado.\n */\n @Prop({ reflect: true }) disabled: boolean = false\n\n /**\n * Define o modo do datetime-picker.\n * Os valores possíveis são:\n * - \"date\": Permite selecionar apenas a data.\n * - \"time\": Permite selecionar apenas o horário.\n * - \"datetime\": Permite selecionar tanto a data quanto o horário.\n */\n @Prop({ reflect: true }) mode: DatetimePickerMode = 'datetime'\n\n /**\n * Define o nome do campo do datetime-picker.\n * Este nome será utilizado ao submeter o formulário que contém o datetime-picker.\n */\n @Prop({ reflect: true }) name: string\n\n /**\n * Define o placeholder do campo de entrada do datetime-picker.\n */\n @Prop() placeholder: string\n\n /**\n * Define o valor inicial do datetime-picker.\n * Pode ser uma instância de Date ou null.\n * Se não for fornecido, o valor padrão será null.\n */\n @Prop() value?: Date | null\n\n /**\n * Define o dia da semana em que a semana começa.\n * Os valores possíveis são:\n * 0 - Domingo\n * 1 - Segunda-feira\n * 2 - Terça-feira\n * 3 - Quarta-feira\n * 4 - Quinta-feira\n * 5 - Sexta-feira\n * 6 - Sábado\n */\n @Prop({ reflect: true }) weekStartsOn: WeekDayIndex = 0\n\n /**\n * Data base atual para o calendário.\n */\n @State() currentBaseDate: Date = new Date()\n\n /**\n * Data selecionada no componente datetime-picker.\n */\n @State() currentSelectedDate: Date | null = null\n\n /**\n * Valor do campo de entrada.\n */\n @State() private inputValue = ''\n\n /**\n * Indica se o calendário está aberto ou fechado.\n */\n @State() private isOpen = false\n\n /**\n * Rascunho dos valores de tempo (hora e minuto) durante a edição.\n */\n @State() private timeDraft: Partial<Record<InputTimeType, string>> = {}\n\n /**\n * Evento disparado quando a data selecionada é alterada, tanto por interação do usuário quanto por métodos programáticos.\n * @returns Data selecionada ou null se nenhuma data estiver selecionada\n */\n @Event({\n eventName: 'brDateTimeChange',\n bubbles: true,\n composed: true,\n })\n brDateTimeChange: EventEmitter<Date | null>\n\n /**\n * Manipulador de mudanças na data selecionada.\n * @param newValue Nova data selecionada\n * @internal Used by Stencil's @Watch decorator\n */\n @Watch('currentSelectedDate')\n private handleSelectedDateChange(newValue: Date | null) {\n const formattedValue = this.formatDateForInput(newValue)\n\n this.inputValue = formattedValue\n\n this.elementInternals.setFormValue(newValue !== null ? formattedValue : null)\n\n this.brDateTimeChange.emit(newValue)\n }\n\n /**\n * Manipulador de mudanças na propriedade `disabled`.\n * @param disabled Indica se o componente está desabilitado\n * @internal Used by Stencil's @Watch decorator\n */\n @Watch('disabled')\n handleDisabledChange(disabled: boolean) {\n if (disabled) {\n this.elementInternals.setFormValue(null)\n } else {\n this.elementInternals.setFormValue(this.inputValue || null)\n }\n }\n\n /**\n * Manipulador de mudanças no estado de abertura do calendário.\n * @param open Indica se o calendário está aberto\n * @internal Used by Stencil's @Watch decorator\n */\n @Watch('isOpen')\n private handleOpenChange(open: boolean) {\n if (open) {\n document.addEventListener('click', this.handleOutsideClick)\n document.addEventListener('keydown', this.handkeKeydown)\n } else {\n document.removeEventListener('click', this.handleOutsideClick)\n document.removeEventListener('keydown', this.handkeKeydown)\n }\n }\n\n /**\n * Manipulador de mudanças na propriedade `mode`.\n * @internal Used by Stencil's @Watch decorator\n */\n @Watch('mode')\n handleModeChange() {\n this.resolvePlaceholderFromMode()\n }\n\n /**\n * Manipulador de mudanças no valor da propriedade `value`.\n */\n @Watch('value')\n protected handleValueChange(newValue: Date | null) {\n if (newValue === null) {\n if (!this.autoSelectToday) {\n this.currentSelectedDate = null\n }\n return\n }\n\n const date = new Date(newValue)\n this.currentBaseDate = date\n this.currentSelectedDate = new Date(date)\n }\n\n /**\n * Registro de mapeamentos de classes CSS para diferentes partes do componente.\n * Cada entrada no registro é uma função que retorna um objeto de mapeamento de classes CSS.\n */\n private cssMapRegistry: Record<string, CssClassMapGetter> = {\n calendar: () => {\n return {\n calendar: true,\n }\n },\n day: (date: Date) => {\n return {\n day: true,\n 'outside-month': !isSameMonth(date, this.baseDate),\n today: isSameDay(date, new Date()),\n selected: isSameDay(date, this.currentSelectedDate),\n }\n },\n header: () => {\n return {\n header: true,\n }\n },\n month: () => {\n return {\n monthdays: true,\n }\n },\n root: () => {\n return {\n 'br-datetime-picker': true,\n datetime: this.mode === 'datetime',\n date: this.mode === 'date',\n time: this.mode === 'time',\n }\n },\n timer: () => {\n return {\n 'time-section': true,\n }\n },\n 'time-field': () => {\n return {\n 'time-field': true,\n }\n },\n }\n\n /**\n * Array com os nomes dos meses do ano em português.\n */\n private readonly MONTHS = [\n 'Janeiro',\n 'Fevereiro',\n 'Março',\n 'Abril',\n 'Maio',\n 'Junho',\n 'Julho',\n 'Agosto',\n 'Setembro',\n 'Outubro',\n 'Novembro',\n 'Dezembro',\n ]\n\n /**\n * Array com os nomes dos dias da semana abreviados em português.\n */\n private readonly WEEKDAYS = ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb']\n\n /**\n * Getter: baseDate\n * Retorna a data base para o calendário, que é a data atual.\n * @returns Data atual\n */\n private get baseDate(): Date {\n return this.currentBaseDate\n }\n\n /**\n * Mapeamento de manipuladores de clique para cada dia.\n * Utiliza WeakMap para associar cada data a sua respectiva função de clique.\n */\n private dayClickHandlers = new WeakMap<Date, (event: MouseEvent) => void>()\n\n /**\n * Mapeamento de manipuladores de mudança para os campos de tempo (hora e minuto).\n * Utiliza Map para associar cada campo de tempo ao seu respectivo manipulador de mudança.\n */\n private timeInputChangeHandlers = new Map<InputTimeType, (event: Event) => void>()\n\n /**\n * Mapeamento de manipuladores de commit para os campos de tempo (hora e minuto).\n * Utiliza Map para associar cada campo de tempo ao seu respectivo manipulador de commit.\n */\n private timeInputCommitHandlers = new Map<InputTimeType, (event: Event) => void>()\n\n /**\n * Mapeamento de manipuladores de keydown para os campos de tempo (hora e minuto).\n * Utiliza Map para associar cada campo de tempo ao seu respectivo manipulador de keydown.\n */\n private timeInputKeydownHandlers = new Map<InputTimeType, (event: KeyboardEvent) => void>()\n\n /**\n * Ciclo de vida do componente: Executado antes do componente ser carregado.\n */\n componentWillLoad() {\n this.resolvePlaceholderFromMode()\n this.initializeFromValue()\n\n // referência proposital para o TS/ESLint\n void this.handleSelectedDateChange\n\n // referência proposital para o TS/ESLint\n void this.handleOpenChange\n\n // referência proposital para o TS/ESLint\n void this.handleValueChange\n }\n\n /**\n * Ciclo de vida do componente: Executado quando o componente é desconectado do DOM.\n */\n disconnectedCallback() {\n document.removeEventListener('click', this.handleOutsideClick)\n }\n\n /**\n * Fecha o dropdown do calendário.\n */\n @Method()\n async close() {\n this.isOpen = false\n }\n\n /**\n * Retorna a data atualmente selecionada no datetime-picker.\n */\n @Method()\n async getValue(): Promise<Date | null> {\n return this.currentSelectedDate\n }\n\n /**\n * Abre o dropdown do calendário.\n */\n @Method()\n async open() {\n this.isOpen = true\n }\n\n /**\n * Reseta o estado interno do componente para os valores iniciais.\n */\n @Method()\n async reset() {\n this.resetInternal()\n }\n\n /**\n * Define a data selecionada no datetime-picker.\n * @param value Data a ser definida ou null para resetar o valor\n */\n @Method()\n async setValue(value: Date | null) {\n if (value === null) {\n this.resetInternal()\n return\n }\n\n const date = new Date(value)\n this.currentBaseDate = date\n this.currentSelectedDate = date\n }\n\n /**\n * Alterna o estado do dropdown do calendário entre aberto e fechado.\n */\n @Method()\n async toggle() {\n this.isOpen = !this.isOpen\n }\n\n /**\n * Manipulador de reset do formulário.\n */\n formResetCallback() {\n this.resetInternal()\n }\n\n /**\n * Manipulador de clique para um dia específico.\n * @param event Evento de clique\n * @param date Data do dia clicado\n */\n private handleDayClick(date: Date) {\n if (this.disabled) return\n if (this.mode === 'time') return\n\n const selected = new Date(date)\n selected.setHours(this.currentBaseDate.getHours(), this.currentBaseDate.getMinutes(), 0, 0)\n\n this.currentBaseDate = selected\n this.currentSelectedDate = selected\n }\n\n /**\n * Manipulador de evento blur do campo de entrada.\n */\n private handleInputBlur = () => {\n this.commitInputValue()\n }\n\n /**\n * Manipulador de mudança do campo de entrada.\n * @param event Evento de mudança\n */\n private handleInputChange = (event: Event) => {\n const input = event.target as HTMLInputElement\n this.inputValue = input.value\n }\n\n /**\n * Manipulador de evento keydown do campo de entrada.\n * @param event Evento de keydown\n */\n private handleInputKeydown = (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n this.commitInputValue()\n }\n }\n\n /**\n * Manipulador de evento keydown global para fechar o calendário com a tecla Escape.\n */\n private handkeKeydown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n this.isOpen = false\n }\n }\n\n /**\n * Manipulador de mudança de mês.\n * @param event Evento de mudança\n */\n private handleMonthChange = (event: Event) => {\n const select = event.target as HTMLSelectElement\n const monthIndex = Number(select.value)\n\n if (Number.isNaN(monthIndex)) return\n\n const date = new Date(this.currentBaseDate)\n date.setMonth(monthIndex, 1)\n this.currentBaseDate = date\n }\n\n /**\n * Manipulador de clique para os botões de navegação do calendário.\n * @param event Evento de clique\n */\n private handleNavigationClick = (event: MouseEvent) => {\n if (this.disabled) return\n\n const action = (event.currentTarget as HTMLElement).dataset.action as NavigationAction | undefined\n\n if (action === undefined) return\n\n switch (action) {\n case NAVIGATION_ACTION.PREVIOUS_HOUR:\n this.decreaseHour()\n break\n case NAVIGATION_ACTION.PREVIOUS_MINUTE:\n this.decreaseMinute()\n break\n case NAVIGATION_ACTION.PREVIOUS_MONTH:\n this.decreaseMonth()\n break\n case NAVIGATION_ACTION.NEXT_HOUR:\n this.increaseHour()\n break\n case NAVIGATION_ACTION.NEXT_MINUTE:\n this.increaseMinute()\n break\n case NAVIGATION_ACTION.NEXT_MONTH:\n this.increaseMonth()\n break\n default:\n break\n }\n }\n\n /**\n * Manipulador de clique fora do componente para fechar o dropdown.\n * @param event Evento de clique\n */\n private handleOutsideClick = (event: MouseEvent) => {\n if (!this.el.contains(event.target as Node)) {\n this.isOpen = false\n }\n }\n\n /**\n * Manipulador de mudança do campo de tempo (hora ou minuto).\n * @param event Evento de mudança\n * @param type Tipo de campo de tempo (hora ou minuto)\n */\n private handleTimeInputChange = (event: Event, type: InputTimeType) => {\n if (this.disabled) return\n const input = event.target as HTMLInputElement\n const value = input.value.replace(/\\D/g, '')\n this.timeDraft[type] = value\n }\n\n /**\n * Manipulador de commit do campo de tempo (hora ou minuto).\n * @param event Evento de commit\n * @param type Tipo de campo de tempo (hora ou minuto)\n */\n private handleTimeInputCommit(type: InputTimeType) {\n if (this.disabled) return\n const draft = this.timeDraft[type]\n if (draft == null || draft === '') return\n\n const numeric = Number(draft)\n if (Number.isNaN(numeric)) return\n\n const date = new Date(this.currentBaseDate)\n\n if (type === INPUT_TIME_TYPE.HOUR) {\n if (numeric < 0 || numeric > 23) return\n date.setHours(numeric)\n }\n\n if (type === INPUT_TIME_TYPE.MINUTE) {\n if (numeric < 0 || numeric > 59) return\n date.setMinutes(numeric)\n }\n\n this.currentBaseDate = date\n this.currentSelectedDate = new Date(date)\n\n this.timeDraft[type] = undefined\n }\n\n /**\n * Manipulador de alternância do dropdown do calendário.\n * @param event Evento de clique\n */\n private handleToggleDropdown = (event: MouseEvent) => {\n if (this.disabled) return\n event.stopPropagation()\n this.isOpen = !this.isOpen\n }\n\n /**\n * Manipulador de mudança de ano.\n * @param event Evento de mudança\n */\n private handleYearChange = (event: Event) => {\n if (this.mode === 'time') return\n\n const input = event.target as HTMLInputElement\n const year = Number(input.value)\n\n if (Number.isNaN(year)) return\n\n const date = new Date(this.currentBaseDate)\n date.setFullYear(year, date.getMonth(), 1)\n\n this.currentBaseDate = date\n }\n\n /**\n * Atualiza o valor do input com base no valor atual selecionado.\n */\n private commitInputValue() {\n const value = this.inputValue.trim()\n if (value === '') return\n\n const parsed = this.parseInputValue(value)\n if (parsed === null) return\n\n this.currentSelectedDate = new Date(parsed)\n this.currentBaseDate = new Date(parsed)\n // this.inputValue = this.formatDateForInput(parsed)\n }\n\n /**\n * Navega para a hora anterior no timer.\n */\n private decreaseHour() {\n if (this.mode === 'date') return\n\n const date = new Date(this.currentBaseDate)\n date.setHours(date.getHours() - 1)\n\n this.currentBaseDate = date\n this.currentSelectedDate = new Date(date)\n }\n\n /**\n * Navega para o minuto anterior no timer.\n */\n private decreaseMinute() {\n if (this.mode === 'date') return\n\n const date = new Date(this.currentBaseDate)\n date.setMinutes(date.getMinutes() - 1)\n\n this.currentBaseDate = date\n this.currentSelectedDate = new Date(date)\n }\n\n /**\n * Navega para o mês anterior no calendário.\n */\n private decreaseMonth() {\n if (this.mode === 'time') return\n\n const date = new Date(this.currentBaseDate)\n date.setFullYear(date.getFullYear(), date.getMonth() - 1, 1)\n\n this.currentBaseDate = date\n }\n\n /**\n * Retorna o valor do campo de entrada formatado.\n * @returns Valor formatado do campo de entrada\n */\n private formatDateForInput(date?: Date | null): string {\n if (date == null || !isValid(date)) return ''\n\n switch (this.mode) {\n case 'time':\n return format(date, 'HH:mm')\n\n case 'date':\n return format(date, 'dd/MM/yyyy')\n\n case 'datetime':\n return format(date, 'dd/MM/yyyy HH:mm')\n\n default:\n return ''\n }\n }\n\n /**\n * Retorna o mapeamento de classes CSS para um determinado nome.\n * @param name Nome da parte do componente para a qual o mapeamento de classes será obtido\n * @param args Argumentos adicionais que podem ser necessários para a função de mapeamento de classes\n * @returns Objeto contendo o mapeamento de classes CSS\n */\n private getCss(name: keyof typeof this.cssMapRegistry, ...args: unknown[]): CssClassMap {\n const mapGetter = this.cssMapRegistry[name]\n return mapGetter !== undefined ? mapGetter(...args) : {}\n }\n\n /**\n * Retorna o manipulador de clique para um dia específico.\n * Se o manipulador ainda não existir, ele é criado e armazenado no WeakMap.\n * @param date Data do dia para o qual o manipulador será obtido\n * @returns Função manipuladora de clique para o dia especificado\n */\n private getDayClickHandler(date: Date) {\n let handler = this.dayClickHandlers.get(date)\n if (handler === undefined) {\n handler = () => this.handleDayClick(date)\n this.dayClickHandlers.set(date, handler)\n }\n return handler\n }\n\n /**\n * Retorna o dia do mês com zero à esquerda, se necessário.\n * @param date Data para a qual o dia do mês será obtido\n * @returns String representando o dia do mês com dois dígitos\n */\n private getDayWithLeadingZero(date: Date): string {\n return format(date, 'dd')\n }\n\n /**\n * Retorna o ícone correspondente a uma ação de navegação.\n * @param action Ação de navegação para a qual o ícone será obtido\n * @returns Nome do ícone correspondente à ação de navegação\n */\n private getIconForAction(action: NavigationAction): string {\n switch (action) {\n case NAVIGATION_ACTION.PREVIOUS_HOUR:\n case NAVIGATION_ACTION.PREVIOUS_MINUTE:\n return 'fa6-solid:chevron-down'\n\n case NAVIGATION_ACTION.PREVIOUS_MONTH:\n return 'fa6-solid:chevron-left'\n\n case NAVIGATION_ACTION.NEXT_HOUR:\n case NAVIGATION_ACTION.NEXT_MINUTE:\n return 'fa6-solid:chevron-up'\n\n case NAVIGATION_ACTION.NEXT_MONTH:\n return 'fa6-solid:chevron-right'\n default:\n return ''\n }\n }\n\n /**\n * Resolve o placeholder do campo de entrada com base no modo atual.\n */\n private getInputIcon() {\n switch (this.mode) {\n case 'time':\n return 'fa7-solid:clock'\n case 'date':\n case 'datetime':\n default:\n return 'fa6-solid:calendar-days'\n }\n }\n\n /**\n * Retorna as datas que serão exibidas na visualização do mês.\n * @returns\n */\n private getMonthViewDates(): Date[] {\n const start = startOfWeek(startOfMonth(this.baseDate), { weekStartsOn: this.weekStartsOn })\n const end = endOfWeek(endOfMonth(this.baseDate), { weekStartsOn: this.weekStartsOn })\n\n return eachDayOfInterval({ start, end })\n }\n\n /**\n * Retorna o rótulo do mês e ano para uma determinada data.\n * @param date Data para a qual o rótulo será obtido\n * @returns Rótulo do mês e ano no formato \"MMMM yyyy\"\n */\n private getMonthYearLabel(date: Date) {\n return format(date, 'MMMM yyyy')\n }\n\n /**\n * Retorna o rótulo aria para um botão de navegação específico.\n * @param action Ação de navegação para a qual o rótulo será obtido\n * @returns Rótulo aria correspondente à ação de navegação\n */\n private getNavigationAriaLabel(action: NavigationAction) {\n const base = this.currentBaseDate\n\n switch (action) {\n case NAVIGATION_ACTION.PREVIOUS_HOUR:\n return `Ir para a hora anterior, ${this.currentBaseDate.getHours() - 1}`\n\n case NAVIGATION_ACTION.PREVIOUS_MINUTE:\n return `Ir para o minuto anterior, ${this.currentBaseDate.getMinutes() - 1}`\n\n case NAVIGATION_ACTION.PREVIOUS_MONTH:\n return `Ir para o mês anterior, ${this.getMonthYearLabel(new Date(base.getFullYear(), base.getMonth() - 1, 1))}`\n\n case NAVIGATION_ACTION.NEXT_HOUR:\n return `Ir para a próxima hora, ${this.currentBaseDate.getHours() + 1}`\n\n case NAVIGATION_ACTION.NEXT_MINUTE:\n return `Ir para o próximo minuto, ${this.currentBaseDate.getMinutes() + 1}`\n\n case NAVIGATION_ACTION.NEXT_MONTH:\n return `Ir para o próximo mês, ${this.getMonthYearLabel(new Date(base.getFullYear(), base.getMonth() + 1, 1))}`\n default:\n return ''\n }\n }\n\n /**\n * Retorna o rótulo aria para um campo de tempo específico.\n * @param type Tipo de campo de tempo (hora ou minuto)\n * @returns Rótulo aria correspondente ao campo de tempo\n */\n private getTimeFieldAriaLabel(type: InputTimeType): string {\n switch (type) {\n case INPUT_TIME_TYPE.HOUR:\n return 'Hora'\n case INPUT_TIME_TYPE.MINUTE:\n return 'Minuto'\n default:\n return ''\n }\n }\n\n /**\n * Retorna a configuração do campo de tempo com base no tipo especificado.\n * @param type Tipo de campo de tempo (hora ou minuto)\n * @returns Objeto contendo o valor atual e as ações de navegação para o campo de tempo\n */\n private getTimeFieldConfig(type: InputTimeType) {\n switch (type) {\n case INPUT_TIME_TYPE.HOUR:\n return {\n value: this.currentBaseDate.getHours(),\n nextAction: NAVIGATION_ACTION.NEXT_HOUR,\n prevAction: NAVIGATION_ACTION.PREVIOUS_HOUR,\n }\n case INPUT_TIME_TYPE.MINUTE:\n return {\n value: this.currentBaseDate.getMinutes(),\n nextAction: NAVIGATION_ACTION.NEXT_MINUTE,\n prevAction: NAVIGATION_ACTION.PREVIOUS_MINUTE,\n }\n default:\n return {\n value: 0,\n nextAction: NAVIGATION_ACTION.NEXT_HOUR,\n prevAction: NAVIGATION_ACTION.PREVIOUS_HOUR,\n }\n }\n }\n\n /**\n * Retorna o valor do campo de tempo formatado com dois dígitos.\n * @param type Tipo de campo de tempo (hora ou minuto)\n * @returns Valor formatado do campo de tempo\n */\n private getTimeFieldValue(type: InputTimeType): string {\n switch (type) {\n case INPUT_TIME_TYPE.HOUR:\n return this.currentBaseDate.getHours().toString().padStart(2, '0')\n case INPUT_TIME_TYPE.MINUTE:\n return this.currentBaseDate.getMinutes().toString().padStart(2, '0')\n default:\n return '00'\n }\n }\n\n /**\n * Retorna o manipulador de commit para um campo de tempo específico.\n */\n private getTimeInputChangeHandler(type: InputTimeType) {\n let handler = this.timeInputChangeHandlers.get(type)\n\n if (handler === undefined) {\n handler = (event: Event) => this.handleTimeInputChange(event, type)\n this.timeInputChangeHandlers.set(type, handler)\n }\n\n return handler\n }\n\n /**\n * Retorna o manipulador de commit para um campo de tempo específico.\n */\n private getTimeInputCommitHandler(type: InputTimeType) {\n let handler = this.timeInputCommitHandlers.get(type)\n\n if (handler === undefined) {\n handler = () => this.handleTimeInputCommit(type)\n this.timeInputCommitHandlers.set(type, handler)\n }\n\n return handler\n }\n\n /**\n * Retorna o manipulador de keydown para um campo de tempo específico.\n */\n private getTimeInputKeydownHandler(type: InputTimeType) {\n let handler = this.timeInputKeydownHandlers.get(type)\n if (handler === undefined) {\n handler = (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n this.handleTimeInputCommit(type)\n }\n }\n this.timeInputKeydownHandlers.set(type, handler)\n }\n return handler\n }\n\n /**\n * Retorna os rótulos dos dias da semana, ajustados conforme o dia de início da semana.\n * @returns\n */\n private getWeekdayLabels(): string[] {\n const start = this.weekStartsOn\n return [...this.WEEKDAYS.slice(start), ...this.WEEKDAYS.slice(0, start)]\n }\n\n /**\n * Navega para a próxima hora no timer.\n */\n private increaseHour() {\n if (this.mode === 'date') return\n\n const date = new Date(this.currentBaseDate)\n date.setHours(date.getHours() + 1)\n\n this.currentBaseDate = date\n this.currentSelectedDate = new Date(date)\n }\n\n /**\n * Navega para o próximo minuto no timer.\n */\n private increaseMinute() {\n if (this.mode === 'date') return\n\n const date = new Date(this.currentBaseDate)\n date.setMinutes(date.getMinutes() + 1)\n\n this.currentBaseDate = date\n this.currentSelectedDate = new Date(date)\n }\n\n /**\n * Navega para o próximo mês no calendário.\n */\n private increaseMonth() {\n if (this.mode === 'time') return\n\n const date = new Date(this.currentBaseDate)\n date.setFullYear(date.getFullYear(), date.getMonth() + 1, 1)\n\n this.currentBaseDate = date\n }\n\n /**\n * Inicializa o estado interno do componente com base no valor da propriedade `value`.\n * Se `value` estiver definido, usa esse valor.\n * Caso contrário, se `autoSelectToday` for verdadeiro, seleciona a data/hora atual.\n * Caso contrário, inicializa com estado vazio.\n */\n private initializeFromValue() {\n if (this.value != null) {\n const date = new Date(this.value)\n this.currentBaseDate = date\n this.currentSelectedDate = new Date(date)\n return\n }\n\n if (this.autoSelectToday) {\n const now = new Date()\n this.currentBaseDate = now\n this.currentSelectedDate = new Date(now)\n return\n }\n\n this.currentBaseDate = new Date()\n this.currentSelectedDate = null\n }\n\n /**\n * Analisa o valor de entrada de data e retorna um objeto Date ou null se inválido.\n * @param value Valor de entrada a ser analisado\n * @param base Data base para análise\n * @returns Objeto Date válido ou null se inválido\n */\n private parseDateInput(value: string, base: Date): Date | null {\n const parsedDate = parse(value, 'dd/MM/yyyy', base)\n if (!isValid(parsedDate)) return null\n\n parsedDate.setHours(base.getHours(), base.getMinutes(), 0, 0)\n\n return parsedDate\n }\n\n /**\n * Analisa o valor de entrada de data e hora e retorna um objeto Date ou null se inválido.\n * @param value Valor de entrada a ser analisado\n * @param base Data base para análise\n * @returns Objeto Date válido ou null se inválido\n */\n private parseDateTimeInput(value: string, base: Date): Date | null {\n // data + hora\n const full = parse(value, 'dd/MM/yyyy HH:mm', base)\n if (isValid(full)) return full\n\n // só data → hora atual\n const date = this.parseDateInput(value, base)\n if (date !== null) {\n date.setHours(base.getHours(), base.getMinutes(), 0, 0)\n return date\n }\n\n // só hora → data atual\n return this.parseTimeInput(value, base)\n }\n\n /**\n * Analisa o valor de entrada e retorna um objeto Date ou null se inválido.\n * @param value Valor de entrada a ser analisado\n * @returns Objeto Date válido ou null se inválido\n */\n private parseInputValue(value: string): Date | null {\n const base = this.currentSelectedDate ?? new Date()\n\n switch (this.mode) {\n case 'date':\n return this.parseDateInput(value, base)\n\n case 'time':\n return this.parseTimeInput(value, base)\n\n case 'datetime':\n return this.parseDateTimeInput(value, base)\n\n default:\n return null\n }\n }\n\n /**\n * Analisa o valor de entrada de tempo e retorna um objeto Date ou null se inválido.\n * @param value Valor de entrada a ser analisado\n * @param base Data base para análise\n * @returns Objeto Date válido ou null se inválido\n */\n private parseTimeInput(value: string, base: Date): Date | null {\n const parsedTime = parse(value, 'HH:mm', base)\n if (!isValid(parsedTime)) return null\n\n const date = new Date(base)\n date.setHours(parsedTime.getHours(), parsedTime.getMinutes(), 0, 0)\n\n return date\n }\n\n /**\n * Reseta o estado interno do componente para os valores iniciais.\n */\n private resetInternal() {\n if (this.autoSelectToday) {\n const now = new Date()\n this.currentBaseDate = now\n this.currentSelectedDate = new Date(now)\n } else {\n this.currentBaseDate = new Date()\n this.currentSelectedDate = null\n }\n }\n\n /**\n * Resolve o placeholder padrão com base no modo atual, se nenhum placeholder personalizado for fornecido.\n */\n private resolvePlaceholderFromMode() {\n if (this.placeholder != null) return\n\n switch (this.mode) {\n case 'date':\n this.placeholder = 'Selecione uma data'\n break\n case 'time':\n this.placeholder = 'Horário'\n break\n case 'datetime':\n this.placeholder = 'Selecione data e hora'\n break\n }\n }\n\n /**\n * Renderiza um dia específico (uma célula no calendário).\n * @param date Data do dia a ser renderizado\n * @returns Elemento JSX representando o dia\n */\n private renderDayCell(date: Date) {\n return (\n <div class={this.getCss('day', date)} onClick={this.getDayClickHandler(date)}>\n {this.getDayWithLeadingZero(date)}\n </div>\n )\n }\n\n /**\n * Renderiza o calendário completo (dias da semana e grade de dias do mês).\n * @returns Elemento JSX representando o calendário\n */\n private renderCalendar() {\n return (\n <div class={this.getCss('calendar')}>\n {this.renderWeekdays()}\n {this.renderMonthGrid()}\n </div>\n )\n }\n\n /**\n * Renderiza o barra de navegação do cabeçalho.\n * @returns Elemento JSX representando a barra de navegação do cabeçalho.\n */\n private renderCalendarHeader() {\n return (\n <div class={this.getCss('header')}>\n {this.renderNavigationButton(NAVIGATION_ACTION.PREVIOUS_MONTH)}\n {this.renderMonthSelection()}\n {this.renderYearSelection()}\n {this.renderNavigationButton(NAVIGATION_ACTION.NEXT_MONTH)}\n </div>\n )\n }\n\n /**\n * Renderiza um divisor visual entre o calendário e o time picker.\n * @returns Elemento JSX representando o divisor\n */\n private renderDivider() {\n return <br-divider thickness=\"medium\" color=\"#e6e6e6\" margin-top=\"10px\" margin-bottom=\"10px\"></br-divider>\n }\n\n private renderInputField() {\n return (\n <br-input\n type=\"text\"\n value={this.inputValue}\n disabled={this.disabled}\n placeholder={this.placeholder}\n onInput={this.handleInputChange}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleInputKeydown}\n aria-label=\"Campo de data e hora\"\n >\n <br-icon\n slot=\"action\"\n icon-name={this.getInputIcon()}\n aria-hidden=\"true\"\n onClick={this.handleToggleDropdown}\n ></br-icon>\n </br-input>\n )\n }\n\n /**\n * Renderiza a grade de dias do mês.\n * @returns Elemento JSX representando os dias do mês\n */\n private renderMonthGrid() {\n const dates = this.getMonthViewDates()\n\n return <div class={this.getCss('month')}>{dates.map(this.renderDayCell, this)}</div>\n }\n\n /**\n * Renderiza uma opção de mês para seleção.\n * @param month Nome do mês\n * @param index Índice do mês (0-11)\n * @returns Elemento JSX representando a opção de mês\n */\n private renderMonthOption(month: string, index: number) {\n return (\n <option value={index} selected={index === this.currentBaseDate.getMonth()}>\n {month}\n </option>\n )\n }\n\n /**\n * Renderiza a seleção de mês no cabeçalho do calendário.\n * @returns Elemento JSX representando a seleção de mês\n */\n private renderMonthSelection() {\n return (\n <label class=\"month-select\">\n <span class=\"visually-hidden\">Selecionar mês</span>\n <select onChange={this.handleMonthChange} aria-label=\"Selecionar mês\" disabled={this.disabled}>\n {this.MONTHS.map(this.renderMonthOption, this)}\n </select>\n </label>\n )\n }\n\n /**\n * Renderiza um botão de navegação no cabeçalho.\n * @param action Ação de navegação associada ao botão\n * @returns Elemento JSX representando o botão de navegação\n */\n private renderNavigationButton(action: NavigationAction) {\n return (\n <br-button\n emphasis=\"tertiary\"\n density=\"small\"\n shape=\"circle\"\n disabled={this.disabled}\n data-action={action}\n aria-label={this.getNavigationAriaLabel(action)}\n onClick={this.handleNavigationClick}\n >\n <br-icon icon-name={this.getIconForAction(action)} aria-hidden=\"true\"></br-icon>\n </br-button>\n )\n }\n\n /**\n * Renderiza a seção de time picker (hora e minuto).\n * @returns Elemento JSX representando a seção de time picker\n */\n private renderTimePicker() {\n if (this.mode === 'date') return null\n\n return (\n <div class={this.getCss('timer')}>\n {this.renderTimeField(INPUT_TIME_TYPE.HOUR)}\n <span class=\"time-separator\">:</span>\n {this.renderTimeField(INPUT_TIME_TYPE.MINUTE)}\n </div>\n )\n }\n\n /**\n * Renderiza um campo de tempo (hora ou minuto).\n * @param type Tipo de campo de tempo (hora ou minuto)\n * @returns Elemento JSX representando o campo de tempo\n */\n private renderTimeField(type: InputTimeType) {\n const { nextAction, prevAction } = this.getTimeFieldConfig(type)\n\n return (\n <div class={this.getCss('time-field')}>\n {this.renderNavigationButton(nextAction)}\n <input\n type=\"text\"\n inputmode=\"numeric\"\n disabled={this.disabled}\n maxLength={2}\n value={this.timeDraft[type] ?? this.getTimeFieldValue(type)}\n aria-label={this.getTimeFieldAriaLabel(type)}\n onInput={this.getTimeInputChangeHandler(type)}\n onBlur={this.getTimeInputCommitHandler(type)}\n onKeyDown={this.getTimeInputKeydownHandler(type)}\n />\n {this.renderNavigationButton(prevAction)}\n </div>\n )\n }\n\n /**\n * Renderiza os rótulos dos dias da semana.\n * @returns Elemento JSX representando os rótulos dos dias da semana\n */\n private renderWeekdays() {\n const labels = this.getWeekdayLabels()\n\n return (\n <div class=\"weekdays\">\n {labels.map((label) => (\n <div class=\"weekday\">{label}</div>\n ))}\n </div>\n )\n }\n\n private renderYearSelection() {\n return (\n <label class=\"year-select\">\n <span class=\"visually-hidden\">Selecionar ano</span>\n <input\n type=\"number\"\n disabled={this.disabled}\n value={this.currentBaseDate.getFullYear()}\n onChange={this.handleYearChange}\n aria-label=\"Selecionar ano\"\n />\n </label>\n )\n }\n\n /**\n * Renderiza o componente datetime-picker\n * @returns Elemento JSX representando o componente\n */\n render() {\n return (\n <Host>\n <div class={this.getCss('root')}>\n {this.renderInputField()}\n {this.isOpen && (\n <br-card>\n {this.mode !== 'time' && this.renderCalendarHeader()}\n {this.mode !== 'time' && this.renderCalendar()}\n {this.mode === 'datetime' && this.renderDivider()}\n {this.mode !== 'date' && this.renderTimePicker()}\n </br-card>\n )}\n </div>\n </Host>\n )\n }\n}\n"]}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Construído por SERPRO
|
|
3
3
|
* © https://serpro.gov.br/ - MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import { __awaiter } from "tslib";
|
|
6
5
|
import { h, Host } from "@stencil/core";
|
|
7
6
|
import { FloatingUIManager } from "../../utils/floating-ui";
|
|
8
7
|
import Helpers from "../../utils/helpers";
|
|
@@ -390,22 +389,18 @@ export class Dropdown {
|
|
|
390
389
|
* Define a propriedade `isOpen` como verdadeira e retorna o novo estado.
|
|
391
390
|
* Este método pode ser chamado externamente.
|
|
392
391
|
*/
|
|
393
|
-
open() {
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
return { isOpen: this.isOpen };
|
|
397
|
-
});
|
|
392
|
+
async open() {
|
|
393
|
+
this.isOpen = true;
|
|
394
|
+
return { isOpen: this.isOpen };
|
|
398
395
|
}
|
|
399
396
|
/**
|
|
400
397
|
* Esconde o dropdown.
|
|
401
398
|
* Define a propriedade `isOpen` como falsa e retorna o novo estado.
|
|
402
399
|
* Este método pode ser chamado externamente.
|
|
403
400
|
*/
|
|
404
|
-
hide() {
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
return { isOpen: this.isOpen };
|
|
408
|
-
});
|
|
401
|
+
async hide() {
|
|
402
|
+
this.isOpen = false;
|
|
403
|
+
return { isOpen: this.isOpen };
|
|
409
404
|
}
|
|
410
405
|
/**
|
|
411
406
|
* Foca em um elemento específico com suporte a componentes personalizados
|
|
@@ -463,15 +458,13 @@ export class Dropdown {
|
|
|
463
458
|
* Define o foco no elemento interno do componente.
|
|
464
459
|
* Este método pode ser chamado externamente para garantir que o foco seja aplicado ao elemento correto.
|
|
465
460
|
*/
|
|
466
|
-
setFocus() {
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
}
|
|
474
|
-
});
|
|
461
|
+
async setFocus() {
|
|
462
|
+
if (this.focusableElement !== null && this.focusableElement !== undefined) {
|
|
463
|
+
this.focusableElement.focus();
|
|
464
|
+
}
|
|
465
|
+
else {
|
|
466
|
+
this.focusOnTriggerElement();
|
|
467
|
+
}
|
|
475
468
|
}
|
|
476
469
|
render() {
|
|
477
470
|
return (h(Host, { key: 'ace8369063aaebea08e9dda7ceaee5df229a247e', "is-open": this.isOpen, placement: this.placement, "prevent-auto-dismiss": this.preventAutoDismiss }, h("div", { key: '21f85062c8490852b88ef55c948d332678088137', class: this.getCssClassMap(), id: this.customId }, h("div", { key: '58e55ee7fe8445682a08d117f412593640198c84', id: "trigger", onClick: this.toggle, "aria-controls": "target", "aria-haspopup": "true", "aria-expanded": this.isOpen ? 'true' : 'false' }, h("slot", { key: '0f95c368ec27b2eb71eea1ef4a5fdaa0b9587af5', name: "trigger" })), h("div", { key: '2eb72f2596b06376979e9b8ead83b1a07ad8ada8', id: "target", "aria-hidden": this.isOpen ? 'false' : 'true' }, h("slot", { key: 'b231bb498abfa1d98572ae22385eabdfc20d0620', name: "target" })))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../../../../packages/webcomponents/src/components/dropdown/dropdown.tsx"],"names":[],"mappings":"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","sourcesContent":["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"]}
|
|
1
|
+
{"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../../../../packages/webcomponents/src/components/dropdown/dropdown.tsx"],"names":[],"mappings":"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","sourcesContent":["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"]}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Construído por SERPRO
|
|
3
3
|
* © https://serpro.gov.br/ - MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import { __awaiter } from "tslib";
|
|
6
5
|
import { h, Host } from "@stencil/core";
|
|
7
6
|
import { BreakpointObserver, BREAKPOINTS } from "../../../utils/breakpoint-observer";
|
|
8
7
|
import Helpers from "../../../utils/helpers";
|
|
@@ -147,27 +146,21 @@ export class HeaderList {
|
|
|
147
146
|
/**
|
|
148
147
|
* Fecha a lista.
|
|
149
148
|
*/
|
|
150
|
-
closeList() {
|
|
151
|
-
|
|
152
|
-
this.showList = false;
|
|
153
|
-
});
|
|
149
|
+
async closeList() {
|
|
150
|
+
this.showList = false;
|
|
154
151
|
}
|
|
155
152
|
/**
|
|
156
153
|
* Verifica se a lista está aberta.
|
|
157
154
|
* @returns Um booleano indicando se a lista está aberta.
|
|
158
155
|
*/
|
|
159
|
-
isListOpen() {
|
|
160
|
-
return
|
|
161
|
-
return this.showList;
|
|
162
|
-
});
|
|
156
|
+
async isListOpen() {
|
|
157
|
+
return this.showList;
|
|
163
158
|
}
|
|
164
159
|
/**
|
|
165
160
|
* Abre a lista.
|
|
166
161
|
*/
|
|
167
|
-
openList() {
|
|
168
|
-
|
|
169
|
-
this.showList = true;
|
|
170
|
-
});
|
|
162
|
+
async openList() {
|
|
163
|
+
this.showList = true;
|
|
171
164
|
}
|
|
172
165
|
/**
|
|
173
166
|
* Adiciona os listeners ao botão de disparo.
|