{"version":3,"file":"po-ui-ng-components.mjs","sources":["../../../projects/ui/src/lib/components/po-divider/po-divider-size.enum.ts","../../../projects/ui/src/lib/components/po-divider/po-divider-base.component.ts","../../../projects/ui/src/lib/components/po-divider/po-divider.component.ts","../../../projects/ui/src/lib/components/po-divider/po-divider.component.html","../../../projects/ui/src/lib/components/po-divider/po-divider.module.ts","../../../projects/ui/src/lib/components/po-icon/po-icon-dictionary.ts","../../../projects/ui/src/lib/components/po-icon/po-icon.component.ts","../../../projects/ui/src/lib/components/po-icon/po-icon.component.html","../../../projects/ui/src/lib/components/po-icon/po-icon.module.ts","../../../projects/ui/src/lib/components/po-tag/enums/po-tag-orientation.enum.ts","../../../projects/ui/src/lib/components/po-tag/enums/po-tag-type.enum.ts","../../../projects/ui/src/lib/enums/po-density-mode.enum.ts","../../../projects/ui/src/lib/enums/po-field-size.enum.ts","../../../projects/ui/src/lib/services/po-language/po-language.constant.ts","../../../projects/ui/src/lib/services/po-theme/enum/po-theme-a11y.enum.ts","../../../projects/ui/src/lib/components/po-table/enums/po-table-spacing.enum.ts","../../../projects/ui/src/lib/utils/util.ts","../../../projects/ui/src/lib/services/po-language/po-language.service.ts","../../../projects/ui/src/lib/components/po-tag/enums/po-tag-icon.enum.ts","../../../projects/ui/src/lib/enums/po-caption-tag-color.enum.ts","../../../projects/ui/src/lib/enums/po-color-palette.enum.ts","../../../projects/ui/src/lib/components/po-tag/po-tag-base.component.ts","../../../projects/ui/src/lib/services/po-control-position/po-control-position.constants.ts","../../../projects/ui/src/lib/directives/po-tooltip/po-tooltip-base.directive.ts","../../../projects/ui/src/lib/services/po-control-position/po-control-position.service.ts","../../../projects/ui/src/lib/directives/po-tooltip/po-tooltip-control-position.service.ts","../../../projects/ui/src/lib/directives/po-tooltip/po-tooltip.directive.ts","../../../projects/ui/src/lib/components/po-tag/po-tag.component.ts","../../../projects/ui/src/lib/components/po-tag/po-tag.component.html","../../../projects/ui/src/lib/directives/po-tooltip/po-tooltip.module.ts","../../../projects/ui/src/lib/components/po-tag/po-tag.module.ts","../../../projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.ts","../../../projects/ui/src/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.html","../../../projects/ui/src/lib/services/po-language/po-language.module.ts","../../../projects/ui/src/lib/components/po-accordion/po-accordion-item-header/po-accordion-item-header.component.ts","../../../projects/ui/src/lib/components/po-accordion/po-accordion-item-header/po-accordion-item-header.component.html","../../../projects/ui/src/lib/components/po-accordion/services/po-accordion.service.ts","../../../projects/ui/src/lib/components/po-accordion/po-accordion-item/po-accordion-item.component.ts","../../../projects/ui/src/lib/components/po-accordion/po-accordion-item/po-accordion-item.component.html","../../../projects/ui/src/lib/components/po-accordion/po-accordion-manager/po-accordion-manager.component.ts","../../../projects/ui/src/lib/components/po-accordion/po-accordion-manager/po-accordion-manager.component.html","../../../projects/ui/src/lib/components/po-accordion/po-accordion-base.component.ts","../../../projects/ui/src/lib/components/po-accordion/po-accordion.component.ts","../../../projects/ui/src/lib/components/po-accordion/po-accordion.component.html","../../../projects/ui/src/lib/components/po-accordion/po-accordion.module.ts","../../../projects/ui/src/lib/components/po-avatar/po-avatar-base.component.ts","../../../projects/ui/src/lib/components/po-avatar/po-avatar.component.ts","../../../projects/ui/src/lib/components/po-avatar/po-avatar.component.html","../../../projects/ui/src/lib/components/po-avatar/po-avatar.module.ts","../../../projects/ui/src/lib/components/po-badge/po-badge-base.component.ts","../../../projects/ui/src/lib/components/po-badge/interfaces/po-badge-literals-default.ts","../../../projects/ui/src/lib/components/po-badge/po-badge.component.ts","../../../projects/ui/src/lib/components/po-badge/po-badge.component.html","../../../projects/ui/src/lib/components/po-badge/po-badge.module.ts","../../../projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb-base.component.ts","../../../projects/ui/src/lib/components/po-link/po-link-base.component.ts","../../../projects/ui/src/lib/components/po-link/po-link.component.ts","../../../projects/ui/src/lib/components/po-link/po-link.component.html","../../../projects/ui/src/lib/components/po-popup/po-popup-base.component.ts","../../../projects/ui/src/lib/components/po-listbox/enums/po-item-list-type.enum.ts","../../../projects/ui/src/lib/components/po-listbox/enums/po-item-list-filter-mode.enum.ts","../../../projects/ui/src/lib/components/po-listbox/po-listbox-base.component.ts","../../../projects/ui/src/lib/components/po-loading/po-loading-overlay/po-loading-overlay-base.component.ts","../../../projects/ui/src/lib/components/po-overlay/po-overlay-base.component.ts","../../../projects/ui/src/lib/components/po-overlay/po-overlay.component.ts","../../../projects/ui/src/lib/components/po-overlay/po-overlay.component.html","../../../projects/ui/src/lib/components/po-loading/enums/po-loading-icon-size-enum.ts","../../../projects/ui/src/lib/components/po-loading/po-loading-base.component.ts","../../../projects/ui/src/lib/components/po-loading/po-loading-icon/po-loading-icon-component-injection-token.ts","../../../projects/ui/src/lib/components/po-loading/po-loading-icon/po-loading-icon.component.ts","../../../projects/ui/src/lib/components/po-loading/po-loading-icon/po-loading-icon.component.html","../../../projects/ui/src/lib/components/po-loading/po-loading.component.ts","../../../projects/ui/src/lib/components/po-loading/po-loading.component.html","../../../projects/ui/src/lib/components/po-loading/po-loading-overlay/po-loading-overlay.component.ts","../../../projects/ui/src/lib/components/po-loading/po-loading-overlay/po-loading-overlay.component.html","../../../projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list-base.component.ts","../../../projects/ui/src/lib/enums/po-key-code.enum.ts","../../../projects/ui/src/lib/components/po-field/po-checkbox/enums/po-checkbox-size.enum.ts","../../../projects/ui/src/lib/components/po-field/po-checkbox/po-checkbox-base.component.ts","../../../projects/ui/src/lib/components/po-helper/po-helper-base.component.ts","../../../projects/ui/src/lib/components/po-button/enums/po-button-kind.enum.ts","../../../projects/ui/src/lib/components/po-button/enums/po-button-size.enum.ts","../../../projects/ui/src/lib/components/po-button/enums/po-button-type.enum.ts","../../../projects/ui/src/lib/components/po-button/po-button-base.component.ts","../../../projects/ui/src/lib/components/po-button/po-button.component.ts","../../../projects/ui/src/lib/components/po-button/po-button.component.html","../../../projects/ui/src/lib/components/po-overlay/po-overlay.module.ts","../../../projects/ui/src/lib/components/po-loading/po-loading.module.ts","../../../projects/ui/src/lib/components/po-button/po-button.module.ts","../../../projects/ui/src/lib/components/po-popover/po-popover-base.component.ts","../../../projects/ui/src/lib/components/po-popover/po-popover.component.ts","../../../projects/ui/src/lib/components/po-popover/po-popover.component.html","../../../projects/ui/src/lib/components/po-helper/po-helper.component.ts","../../../projects/ui/src/lib/components/po-helper/po-helper.component.html","../../../projects/ui/src/lib/components/po-link/po-link.module.ts","../../../projects/ui/src/lib/components/po-popover/po-popover.module.ts","../../../projects/ui/src/lib/components/po-helper/po-helper.module.ts","../../../projects/ui/src/lib/components/po-field/po-field-container/po-field-container-literals.ts","../../../projects/ui/src/lib/components/po-label/po-label.component.ts","../../../projects/ui/src/lib/components/po-label/po-label.component.html","../../../projects/ui/src/lib/directives/directives.module.ts","../../../projects/ui/src/lib/components/po-field/po-field-container/po-field-container-bottom/po-field-container-bottom.component.ts","../../../projects/ui/src/lib/components/po-field/po-field-container/po-field-container-bottom/po-field-container-bottom.component.html","../../../projects/ui/src/lib/components/po-field/po-field-container/po-field-container.component.ts","../../../projects/ui/src/lib/components/po-field/po-field-container/po-field-container.component.html","../../../projects/ui/src/lib/components/po-field/po-checkbox/po-checkbox.component.ts","../../../projects/ui/src/lib/components/po-field/po-checkbox/po-checkbox.component.html","../../../projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.ts","../../../projects/ui/src/lib/components/po-listbox/po-item-list/po-item-list.component.html","../../../projects/ui/src/lib/components/po-listbox/po-search-list/po-search-list.component.ts","../../../projects/ui/src/lib/components/po-listbox/po-search-list/po-search-list.component.html","../../../projects/ui/src/lib/components/po-listbox/po-listbox.component.ts","../../../projects/ui/src/lib/components/po-listbox/po-listbox.component.html","../../../projects/ui/src/lib/components/po-popup/po-popup.component.ts","../../../projects/ui/src/lib/components/po-popup/po-popup.component.html","../../../projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.service.ts","../../../projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.component.ts","../../../projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.component.html","../../../projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb.component.ts","../../../projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb.component.html","../../../projects/ui/src/lib/components/po-label/po-label.module.ts","../../../projects/ui/src/lib/components/po-field/po-field-container/po-field-container.module.ts","../../../projects/ui/src/lib/components/po-field/po-checkbox/po-checkbox.module.ts","../../../projects/ui/src/lib/components/po-listbox/po-listbox.module.ts","../../../projects/ui/src/lib/components/po-popup/po-popup.module.ts","../../../projects/ui/src/lib/components/po-breadcrumb/po-breadcrumb.module.ts","../../../projects/ui/src/lib/components/po-button-group/enums/po-button-group-toggle.enum.ts","../../../projects/ui/src/lib/components/po-button-group/po-button-group-base.component.ts","../../../projects/ui/src/lib/components/po-button-group/po-button-group.component.ts","../../../projects/ui/src/lib/components/po-button-group/po-button-group.component.html","../../../projects/ui/src/lib/components/po-button-group/po-button-group.module.ts","../../../projects/ui/src/lib/components/po-field/po-clean/po-clean-base.component.ts","../../../projects/ui/src/lib/components/po-field/po-clean/po-clean.component.ts","../../../projects/ui/src/lib/components/po-field/po-clean/po-clean.component.html","../../../projects/ui/src/lib/components/po-field/po-clean/po-clean.module.ts","../../../projects/ui/src/lib/components/po-field/validators.ts","../../../projects/ui/src/lib/components/po-field/po-combo/enums/po-combo-filter-mode.enum.ts","../../../projects/ui/src/lib/components/po-field/po-combo/interfaces/po-combo-literals-default.interface.ts","../../../projects/ui/src/lib/components/po-field/po-combo/po-combo-base.component.ts","../../../projects/ui/src/lib/components/po-field/po-combo/po-combo-filter.service.ts","../../../projects/ui/src/lib/components/po-field/po-combo/po-combo-option-template/po-combo-option-template.directive.ts","../../../projects/ui/src/lib/components/po-field/po-combo/po-combo.component.ts","../../../projects/ui/src/lib/components/po-field/po-combo/po-combo.component.html","../../../projects/ui/src/lib/components/po-field/po-combo/po-combo.module.ts","../../../projects/ui/src/lib/components/po-calendar/po-calendar-mode.enum.ts","../../../projects/ui/src/lib/services/po-date/po-date.service.ts","../../../projects/ui/src/lib/services/po-date/po-date.module.ts","../../../projects/ui/src/lib/components/po-calendar/po-calendar-base.component.ts","../../../projects/ui/src/lib/components/po-calendar/constants/po-calendar-range-presets.constant.ts","../../../projects/ui/src/lib/components/po-calendar/services/po-calendar.lang.service.ts","../../../projects/ui/src/lib/components/po-calendar/services/po-calendar.service.ts","../../../projects/ui/src/lib/components/po-calendar/po-calendar-footer/po-calendar-footer.component.ts","../../../projects/ui/src/lib/components/po-calendar/po-calendar-footer/po-calendar-footer.component.html","../../../projects/ui/src/lib/components/po-calendar/po-calendar-preset-list/po-calendar-preset-list.component.ts","../../../projects/ui/src/lib/components/po-calendar/po-calendar-preset-list/po-calendar-preset-list.component.html","../../../projects/ui/src/lib/components/po-calendar/po-calendar-header/po-calendar-header.component.ts","../../../projects/ui/src/lib/components/po-calendar/po-calendar-header/po-calendar-header.component.html","../../../projects/ui/src/lib/components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.ts","../../../projects/ui/src/lib/components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.html","../../../projects/ui/src/lib/components/po-calendar/po-calendar.component.ts","../../../projects/ui/src/lib/components/po-calendar/po-calendar.component.html","../../../projects/ui/src/lib/components/po-calendar/po-calendar.module.ts","../../../projects/ui/src/lib/services/po-color/po-colors.constant.ts","../../../projects/ui/src/lib/services/po-color/po-color.service.ts","../../../projects/ui/src/lib/services/po-color/po-color.module.ts","../../../projects/ui/src/lib/components/po-chart/enums/po-chart-label-format.enum.ts","../../../projects/ui/src/lib/components/po-chart/interfaces/po-chart-literals-default.interface.ts","../../../projects/ui/src/lib/components/po-chart/enums/po-chart-type.enum.ts","../../../projects/ui/src/lib/components/po-chart/po-chart-base.component.ts","../../../projects/ui/src/lib/components/po-chart/po-chart-grid-utils.ts","../../../projects/ui/src/lib/components/po-chart/po-chart-gauge-utils.ts","../../../projects/ui/src/lib/components/po-chart/po-chart.component.ts","../../../projects/ui/src/lib/components/po-chart/po-chart.component.html","../../../projects/ui/src/lib/components/po-chart/po-chart.module.ts","../../../projects/ui/src/lib/components/po-container/po-container-base.component.ts","../../../projects/ui/src/lib/components/po-container/po-container.component.ts","../../../projects/ui/src/lib/components/po-container/po-container.component.html","../../../projects/ui/src/lib/components/po-container/po-container.module.ts","../../../projects/ui/src/lib/components/po-context-menu/po-context-menu-base.component.ts","../../../projects/ui/src/lib/components/po-context-menu/po-context-menu.component.ts","../../../projects/ui/src/lib/components/po-context-menu/po-context-menu.component.html","../../../projects/ui/src/lib/components/po-context-menu/po-context-menu.module.ts","../../../projects/ui/src/lib/components/po-disclaimer/po-disclaimer.literals.ts","../../../projects/ui/src/lib/components/po-disclaimer/po-disclaimer-base.component.ts","../../../projects/ui/src/lib/components/po-disclaimer/po-disclaimer.component.ts","../../../projects/ui/src/lib/components/po-disclaimer/po-disclaimer.component.html","../../../projects/ui/src/lib/components/po-disclaimer/po-disclaimer.module.ts","../../../projects/ui/src/lib/components/po-disclaimer-group/po-disclaimer-group-base.component.ts","../../../projects/ui/src/lib/components/po-disclaimer-group/po-disclaimer-remove/po-disclaimer-remove.component.ts","../../../projects/ui/src/lib/components/po-disclaimer-group/po-disclaimer-remove/po-disclaimer-remove.component.html","../../../projects/ui/src/lib/components/po-disclaimer-group/po-disclaimer-group.component.ts","../../../projects/ui/src/lib/components/po-disclaimer-group/po-disclaimer-group.component.html","../../../projects/ui/src/lib/components/po-disclaimer-group/po-disclaimer-group.module.ts","../../../projects/ui/src/lib/components/po-dropdown/po-dropdown-base.component.ts","../../../projects/ui/src/lib/components/po-dropdown/po-dropdown.component.ts","../../../projects/ui/src/lib/components/po-dropdown/po-dropdown.component.html","../../../projects/ui/src/lib/components/po-dropdown/po-dropdown.module.ts","../../../projects/ui/src/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.ts","../../../projects/ui/src/lib/components/po-field/po-checkbox-group/po-checkbox-group.component.ts","../../../projects/ui/src/lib/components/po-field/po-checkbox-group/po-checkbox-group.component.html","../../../projects/ui/src/lib/components/po-field/po-checkbox-group/po-checkbox-group.module.ts","../../../projects/ui/src/lib/components/po-field/po-radio/enums/po-radio-size.enum.ts","../../../projects/ui/src/lib/components/po-field/po-radio-group/po-radio-group-base.component.ts","../../../projects/ui/src/lib/components/po-field/po-field.model.ts","../../../projects/ui/src/lib/components/po-field/po-radio/po-radio.component.ts","../../../projects/ui/src/lib/components/po-field/po-radio/po-radio.component.html","../../../projects/ui/src/lib/components/po-field/po-radio-group/po-radio-group.component.ts","../../../projects/ui/src/lib/components/po-field/po-radio-group/po-radio-group.component.html","../../../projects/ui/src/lib/components/po-field/po-radio/po-radio.module.ts","../../../projects/ui/src/lib/components/po-field/po-radio-group/po-radio-group.module.ts","../../../projects/ui/src/lib/components/po-field/po-input/po-mask.ts","../../../projects/ui/src/lib/components/po-field/po-datepicker/enums/po-datepicker-iso-format.enum.ts","../../../projects/ui/src/lib/components/po-field/po-datepicker/po-datepicker-base.component.ts","../../../projects/ui/src/lib/components/po-field/po-datepicker/po-datepicker.literals.ts","../../../projects/ui/src/lib/components/po-field/po-datepicker/po-datepicker.component.ts","../../../projects/ui/src/lib/components/po-field/po-datepicker/po-datepicker.component.html","../../../projects/ui/src/lib/components/po-field/po-datepicker/po-datepicker.module.ts","../../../projects/ui/src/lib/components/po-field/po-timepicker/enums/po-timepicker-iso-format.enum.ts","../../../projects/ui/src/lib/components/po-timer/enums/po-timer-format.enum.ts","../../../projects/ui/src/lib/components/po-field/po-timepicker/po-timepicker.literals.ts","../../../projects/ui/src/lib/components/po-field/po-timepicker/po-timepicker-base.component.ts","../../../projects/ui/src/lib/components/po-timer/po-timer.literals.ts","../../../projects/ui/src/lib/components/po-timer/po-timer-base.component.ts","../../../projects/ui/src/lib/components/po-timer/po-timer-scroll.helper.ts","../../../projects/ui/src/lib/components/po-timer/po-timer.component.ts","../../../projects/ui/src/lib/components/po-timer/po-timer.component.html","../../../projects/ui/src/lib/components/po-field/po-timepicker/po-timepicker.component.ts","../../../projects/ui/src/lib/components/po-field/po-timepicker/po-timepicker.component.html","../../../projects/ui/src/lib/components/po-timer/po-timer.module.ts","../../../projects/ui/src/lib/components/po-field/po-timepicker/po-timepicker.module.ts","../../../projects/ui/src/lib/components/po-modal/po-modal.literals.ts","../../../projects/ui/src/lib/components/po-modal/po-modal-base.component.ts","../../../projects/ui/src/lib/components/po-modal/po-modal-footer/po-modal-footer.component.ts","../../../projects/ui/src/lib/components/po-modal/po-modal-footer/po-modal-footer.component.html","../../../projects/ui/src/lib/services/po-active-overlay/po-active-overlay.service.ts","../../../projects/ui/src/lib/components/po-modal/po-modal.component.ts","../../../projects/ui/src/lib/components/po-modal/po-modal.component.html","../../../projects/ui/src/lib/components/po-modal/po-modal.module.ts","../../../projects/ui/src/lib/components/po-progress/po-progress-bar/po-progress-bar.component.ts","../../../projects/ui/src/lib/components/po-progress/po-progress-bar/po-progress-bar.component.html","../../../projects/ui/src/lib/components/po-progress/enums/po-progress-status.enum.ts","../../../projects/ui/src/lib/components/po-progress/literals/po-progress.literals.ts","../../../projects/ui/src/lib/components/po-progress/enums/po-progress-size.enum.ts","../../../projects/ui/src/lib/components/po-progress/po-progress-base.component.ts","../../../projects/ui/src/lib/components/po-progress/po-progress.component.ts","../../../projects/ui/src/lib/components/po-progress/po-progress.component.html","../../../projects/ui/src/lib/components/po-progress/po-progress.module.ts","../../../projects/ui/src/lib/services/po-color-palette/po-color-palette.service.ts","../../../projects/ui/src/lib/services/po-color-palette/po-color-palette.module.ts","../../../projects/ui/src/lib/services/po-component-injector/po-component-injector.service.ts","../../../projects/ui/src/lib/services/po-component-injector/po-component-injector.module.ts","../../../projects/ui/src/lib/services/po-control-position/po-control-position.module.ts","../../../projects/ui/src/lib/services/po-dialog/enums/po-dialog.enum.ts","../../../projects/ui/src/lib/services/po-dialog/po-dialog.component.ts","../../../projects/ui/src/lib/services/po-dialog/po-dialog.component.html","../../../projects/ui/src/lib/services/po-dialog/po-dialog-base.service.ts","../../../projects/ui/src/lib/services/po-dialog/po-dialog.service.ts","../../../projects/ui/src/lib/services/po-dialog/po-dialog.module.ts","../../../projects/ui/src/lib/services/po-i18n/po-i18n-base.pipe.ts","../../../projects/ui/src/lib/services/po-i18n/po-i18n.pipe.ts","../../../projects/ui/src/lib/services/po-media-query/po-media-query.service.ts","../../../projects/ui/src/lib/services/po-media-query/po-media-query.module.ts","../../../projects/ui/src/lib/components/po-toaster/enum/po-toaster-mode.enum.ts","../../../projects/ui/src/lib/components/po-toaster/enum/po-toaster-orientation.enum.ts","../../../projects/ui/src/lib/components/po-toaster/enum/po-toaster-type.enum.ts","../../../projects/ui/src/lib/components/po-toaster/literals/po-toaster.literals.ts","../../../projects/ui/src/lib/components/po-toaster/po-toaster-base.component.ts","../../../projects/ui/src/lib/components/po-toaster/po-toaster.component.ts","../../../projects/ui/src/lib/components/po-toaster/po-toaster.component.html","../../../projects/ui/src/lib/components/po-toaster/po-toaster.module.ts","../../../projects/ui/src/lib/services/po-notification/po-notification.module.ts","../../../projects/ui/src/lib/services/po-theme/enum/po-theme-type.enum.ts","../../../projects/ui/src/lib/services/po-theme/helpers/accessibilities/po-theme-default-aa.constant.ts","../../../projects/ui/src/lib/services/po-theme/helpers/accessibilities/po-theme-default-aaa.constant.ts","../../../projects/ui/src/lib/services/po-theme/helpers/accessibilities/po-theme-density.constant.ts","../../../projects/ui/src/lib/services/po-theme/helpers/types/po-theme-light-defaults.constant.ts","../../../projects/ui/src/lib/services/po-theme/helpers/types/po-theme-dark-defaults.constant.ts","../../../projects/ui/src/lib/services/po-theme/helpers/types/po-theme-dark-defaults-AA.constant.ts","../../../projects/ui/src/lib/services/po-theme/helpers/types/po-theme-light-defaults-AA.constant.ts","../../../projects/ui/src/lib/services/po-theme/helpers/po-theme-poui.constant.ts","../../../projects/ui/src/lib/services/po-theme/po-theme.service.ts","../../../projects/ui/src/lib/services/po-theme/po-theme.module.ts","../../../projects/ui/src/lib/services/services.module.ts","../../../projects/ui/src/lib/pipes/po-time/po-time.pipe.ts","../../../projects/ui/src/lib/pipes/po-time/po-time.module.ts","../../../projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide-base.component.ts","../../../projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide-footer/po-page-slide-footer.component.ts","../../../projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide-footer/po-page-slide-footer.component.html","../../../projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.ts","../../../projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.component.html","../../../projects/ui/src/lib/components/po-page/po-page-slide/po-page-slide.module.ts","../../../projects/ui/src/lib/components/po-table/po-table-icon/po-table-icon.component.ts","../../../projects/ui/src/lib/components/po-table/po-table-icon/po-table-icon.component.html","../../../projects/ui/src/lib/components/po-table/po-table-column-icon/po-table-column-icon.component.ts","../../../projects/ui/src/lib/components/po-table/po-table-column-icon/po-table-column-icon.component.html","../../../projects/ui/src/lib/components/po-table/po-table-column-label/po-table-column-label.component.ts","../../../projects/ui/src/lib/components/po-table/po-table-column-label/po-table-column-label.component.html","../../../projects/ui/src/lib/components/po-table/po-table-column-link/po-table-column-link.component.ts","../../../projects/ui/src/lib/components/po-table/po-table-column-link/po-table-column-link.component.html","../../../projects/ui/src/lib/components/po-field/po-switch/po-switch-label-position.enum.ts","../../../projects/ui/src/lib/components/po-field/po-switch/po-switch.component.ts","../../../projects/ui/src/lib/components/po-field/po-switch/po-switch.component.html","../../../projects/ui/src/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.ts","../../../projects/ui/src/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.html","../../../projects/ui/src/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.ts","../../../projects/ui/src/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.html","../../../projects/ui/src/lib/services/po-notification/po-notification-base.service.ts","../../../projects/ui/src/lib/services/po-notification/po-notification.service.ts","../../../projects/ui/src/lib/components/po-table/enums/po-table-row-template-arrow-direction.enum.ts","../../../projects/ui/src/lib/components/po-search/enums/po-search-filter-mode.enum.ts","../../../projects/ui/src/lib/components/po-table/enums/po-table-column-sort-type.enum.ts","../../../projects/ui/src/lib/components/po-table/services/po-table.service.ts","../../../projects/ui/src/lib/components/po-table/po-table-base.component.ts","../../../projects/ui/src/lib/components/po-table/po-table-cell-template/po-table-cell-template.directive.ts","../../../projects/ui/src/lib/components/po-table/po-table-column-template/po-table-column-template.directive.ts","../../../projects/ui/src/lib/components/po-table/po-table-row-template/po-table-row-template.directive.ts","../../../projects/ui/src/lib/components/po-search/literals/po-search-literals-default.ts","../../../projects/ui/src/lib/components/po-search/po-search-base.component.ts","../../../projects/ui/src/lib/components/po-search/po-search.component.ts","../../../projects/ui/src/lib/components/po-search/po-search.component.html","../../../projects/ui/src/lib/components/po-table/po-table-detail/po-table-detail.component.ts","../../../projects/ui/src/lib/components/po-table/po-table-detail/po-table-detail.component.html","../../../projects/ui/src/lib/components/po-table/po-table-subtitle-circle/po-table-subtitle-circle.component.ts","../../../projects/ui/src/lib/components/po-table/po-table-subtitle-circle/po-table-subtitle-circle.component.html","../../../projects/ui/src/lib/components/po-table/po-table-show-subtitle/po-table-show-subtitle.component.ts","../../../projects/ui/src/lib/components/po-table/po-table-show-subtitle/po-table-show-subtitle.component.html","../../../projects/ui/src/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-footer.component.ts","../../../projects/ui/src/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-footer.component.html","../../../projects/ui/src/lib/components/po-table/po-table-column-frozen/po-table-column-frozen.directive.ts","../../../projects/ui/src/lib/components/po-table/po-table.component.ts","../../../projects/ui/src/lib/components/po-table/po-table.component.html","../../../projects/ui/src/lib/components/po-field/po-switch/po-switch.module.ts","../../../projects/ui/src/lib/components/po-field/po-datepicker-range/po-datepicker-range.literals.ts","../../../projects/ui/src/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.ts","../../../projects/ui/src/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.ts","../../../projects/ui/src/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.html","../../../projects/ui/src/lib/components/po-field/po-input/po-input-base.component.ts","../../../projects/ui/src/lib/components/po-field/po-decimal/po-decimal.component.ts","../../../projects/ui/src/lib/components/po-field/po-decimal/po-decimal.component.html","../../../projects/ui/src/lib/components/po-field/po-input-generic/po-input-generic.ts","../../../projects/ui/src/lib/components/po-field/po-email/po-email.component.ts","../../../projects/ui/src/lib/components/po-field/po-input/po-input.component.html","../../../projects/ui/src/lib/components/po-field/po-input/po-input.component.ts","../../../projects/ui/src/lib/components/po-field/po-login/po-login.component.ts","../../../projects/ui/src/lib/components/po-field/po-login/po-login.component.html","../../../projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.ts","../../../projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.ts","../../../projects/ui/src/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.html","../../../projects/ui/src/lib/services/po-active-overlay/po-active-overlay.module.ts","../../../projects/ui/src/lib/services/po-i18n/po-i18n-config-injection-token.ts","../../../projects/ui/src/lib/services/po-i18n/po-i18n-base.service.ts","../../../projects/ui/src/lib/services/po-i18n/po-i18n.service.ts","../../../projects/ui/src/lib/services/po-i18n/po-i18n.module.ts","../../../projects/ui/src/lib/services/po-media-query/po-media-query.interface.ts","../../../projects/ui/src/lib/services/po-theme/interfaces/po-theme-color.interface.ts","../../../projects/ui/src/lib/components/po-field/po-lookup/services/po-lookup-filter.service.ts","../../../projects/ui/src/lib/components/po-field/po-lookup/services/po-lookup-modal.service.ts","../../../projects/ui/src/lib/components/po-field/po-lookup/po-lookup-base.component.ts","../../../projects/ui/src/lib/components/po-field/po-lookup/po-lookup.component.ts","../../../projects/ui/src/lib/components/po-field/po-lookup/po-lookup.component.html","../../../projects/ui/src/lib/components/po-field/po-multiselect/po-multiselect-option-template/po-multiselect-option-template.directive.ts","../../../projects/ui/src/lib/components/po-field/po-multiselect/enums/po-multiselect-filter-mode.enum.ts","../../../projects/ui/src/lib/components/po-field/po-multiselect/po-multiselect-base.component.ts","../../../projects/ui/src/lib/components/po-field/po-multiselect/po-multiselect-filter.service.ts","../../../projects/ui/src/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.ts","../../../projects/ui/src/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.html","../../../projects/ui/src/lib/components/po-field/po-multiselect/po-multiselect.component.ts","../../../projects/ui/src/lib/components/po-field/po-multiselect/po-multiselect.component.html","../../../projects/ui/src/lib/components/po-field/po-number/po-number-base.component.ts","../../../projects/ui/src/lib/components/po-field/po-number/po-number.component.ts","../../../projects/ui/src/lib/components/po-field/po-number/po-number.component.html","../../../projects/ui/src/lib/components/po-field/po-password/po-password.component.ts","../../../projects/ui/src/lib/components/po-field/po-password/po-password.component.html","../../../projects/ui/src/lib/components/po-field/po-rich-text/enum/po-rich-text-toolbar-actions.enum.ts","../../../projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text.service.ts","../../../projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-base.component.ts","../../../projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-body/po-rich-text-body.component.ts","../../../projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-body/po-rich-text-body.component.html","../../../projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-literals.ts","../../../projects/ui/src/lib/components/po-field/po-upload/po-upload-status.enum.ts","../../../projects/ui/src/lib/components/po-field/po-upload/po-upload-file.ts","../../../projects/ui/src/lib/components/po-field/po-upload/po-upload-base.service.ts","../../../projects/ui/src/lib/components/po-field/po-upload/po-upload.service.ts","../../../projects/ui/src/lib/components/po-field/po-upload/po-upload-base.component.ts","../../../projects/ui/src/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop-area/po-upload-drag-drop-area.component.ts","../../../projects/ui/src/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop-area/po-upload-drag-drop-area.component.html","../../../projects/ui/src/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.directive.ts","../../../projects/ui/src/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop-area-overlay/po-upload-drag-drop-area-overlay.component.ts","../../../projects/ui/src/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop-area-overlay/po-upload-drag-drop-area-overlay.component.html","../../../projects/ui/src/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.component.ts","../../../projects/ui/src/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.component.html","../../../projects/ui/src/lib/components/po-field/po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component.ts","../../../projects/ui/src/lib/components/po-field/po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component.html","../../../projects/ui/src/lib/components/po-field/po-upload/po-upload.component.ts","../../../projects/ui/src/lib/components/po-field/po-upload/po-upload.component.html","../../../projects/ui/src/lib/components/po-field/po-url/po-url.component.ts","../../../projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component.ts","../../../projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component.html","../../../projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-link-modal/po-rich-text-link-modal.component.ts","../../../projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-link-modal/po-rich-text-link-modal.component.html","../../../projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.ts","../../../projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.html","../../../projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text.component.ts","../../../projects/ui/src/lib/components/po-field/po-rich-text/po-rich-text.component.html","../../../projects/ui/src/lib/components/po-field/po-field-validate.model.ts","../../../projects/ui/src/lib/components/po-field/po-select/po-select.component.ts","../../../projects/ui/src/lib/components/po-field/po-select/po-select.component.html","../../../projects/ui/src/lib/components/po-field/po-textarea/po-textarea-base.component.ts","../../../projects/ui/src/lib/components/po-field/po-textarea/po-textarea.component.ts","../../../projects/ui/src/lib/components/po-field/po-textarea/po-textarea.component.html","../../../projects/ui/src/lib/components/po-search/po-search.module.ts","../../../projects/ui/src/lib/components/po-table/po-table.module.ts","../../../projects/ui/src/lib/components/po-field/po-field.module.ts","../../../projects/ui/src/lib/components/po-info/po-info-orietation.enum.ts","../../../projects/ui/src/lib/components/po-info/po-info-base.component.ts","../../../projects/ui/src/lib/components/po-info/po-info.component.ts","../../../projects/ui/src/lib/components/po-info/po-info.component.html","../../../projects/ui/src/lib/components/po-info/po-info.module.ts","../../../projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-base.component.ts","../../../projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-operation/po-dynamic-form-operation.ts","../../../projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.service.ts","../../../projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.service.ts","../../../projects/ui/src/lib/components/po-dynamic/enums/po-dynamic-field-type.enum.ts","../../../projects/ui/src/lib/components/po-dynamic/po-dynamic.util.ts","../../../projects/ui/src/lib/components/po-dynamic/shared/po-dynamic-shared-base.ts","../../../projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields-base.component.ts","../../../projects/ui/src/lib/components/po-dynamic/po-dynamic-container/po-dynamic-container.component.ts","../../../projects/ui/src/lib/components/po-dynamic/po-dynamic-container/po-dynamic-container.component.html","../../../projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.ts","../../../projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.html","../../../projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form.component.ts","../../../projects/ui/src/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form.component.html","../../../projects/ui/src/lib/components/po-dynamic/po-dynamic-view/services/po-dynamic-view.service.ts","../../../projects/ui/src/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.ts","../../../projects/ui/src/lib/components/po-image/po-image-base.component.ts","../../../projects/ui/src/lib/components/po-image/po-image.component.ts","../../../projects/ui/src/lib/components/po-image/po-image.component.html","../../../projects/ui/src/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.ts","../../../projects/ui/src/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.html","../../../projects/ui/src/lib/components/po-image/po-image.module.ts","../../../projects/ui/src/lib/components/po-dynamic/po-dynamic.module.ts","../../../projects/ui/src/lib/components/po-gauge/po-gauge-default-values.constant.ts","../../../projects/ui/src/lib/components/po-gauge/po-gauge-base.component.ts","../../../projects/ui/src/lib/components/po-gauge/po-gauge.component.ts","../../../projects/ui/src/lib/components/po-gauge/po-gauge.component.html","../../../projects/ui/src/lib/components/po-gauge/po-gauge.module.ts","../../../projects/ui/src/lib/components/po-grid/po-grid-cell-action/po-grid-cell-action.component.ts","../../../projects/ui/src/lib/components/po-grid/po-grid-cell-action/po-grid-cell-action.component.html","../../../projects/ui/src/lib/components/po-grid/po-grid-cell/po-grid-cell.component.ts","../../../projects/ui/src/lib/components/po-grid/po-grid-cell/po-grid-cell.component.html","../../../projects/ui/src/lib/components/po-grid/po-grid-head/po-grid-head.component.ts","../../../projects/ui/src/lib/components/po-grid/po-grid-head/po-grid-head.component.html","../../../projects/ui/src/lib/components/po-grid/po-grid.component.ts","../../../projects/ui/src/lib/components/po-grid/po-grid.component.html","../../../projects/ui/src/lib/components/po-grid/po-grid.module.ts","../../../projects/ui/src/lib/components/po-list-view/po-list-view-base.component.ts","../../../projects/ui/src/lib/components/po-list-view/po-list-view-content-template/po-list-view-content-template.directive.ts","../../../projects/ui/src/lib/components/po-list-view/po-list-view-detail-template/po-list-view-detail-template.directive.ts","../../../projects/ui/src/lib/components/po-list-view/po-list-view.component.ts","../../../projects/ui/src/lib/components/po-list-view/po-list-view.component.html","../../../projects/ui/src/lib/components/po-list-view/po-list-view.module.ts","../../../projects/ui/src/lib/components/po-logo/po-logo.component.ts","../../../projects/ui/src/lib/components/po-logo/po-logo.component.html","../../../projects/ui/src/lib/components/po-logo/po-logo.module.ts","../../../projects/ui/src/lib/components/po-menu-panel/services/po-menu-panel-items.service.ts","../../../projects/ui/src/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.component.ts","../../../projects/ui/src/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.component.html","../../../projects/ui/src/lib/components/po-menu-panel/po-menu-panel-base.component.ts","../../../projects/ui/src/lib/components/po-menu-panel/po-menu-panel.component.ts","../../../projects/ui/src/lib/components/po-menu-panel/po-menu-panel.component.html","../../../projects/ui/src/lib/components/po-menu-panel/po-menu-panel.module.ts","../../../projects/ui/src/lib/components/po-menu/po-menu-filter/po-menu-filter.component.ts","../../../projects/ui/src/lib/components/po-menu/po-menu-filter/po-menu-filter.component.html","../../../projects/ui/src/lib/components/po-menu/po-menu-header-template/po-menu-header-template.directive.ts","../../../projects/ui/src/lib/components/po-menu/services/po-menu-items.service.ts","../../../projects/ui/src/lib/components/po-menu/po-menu-item/po-menu-item.component.ts","../../../projects/ui/src/lib/components/po-menu/po-menu-item/po-menu-item.component.html","../../../projects/ui/src/lib/components/po-menu/services/po-menu-global.service.ts","../../../projects/ui/src/lib/components/po-menu/services/po-menu.service.ts","../../../projects/ui/src/lib/components/po-menu/po-menu-base.component.ts","../../../projects/ui/src/lib/components/po-menu/po-menu.component.ts","../../../projects/ui/src/lib/components/po-menu/po-menu.component.html","../../../projects/ui/src/lib/components/po-menu/po-menu.module.ts","../../../projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.ts","../../../projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.html","../../../projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action-popup/po-navbar-action-popup.component.ts","../../../projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-action-popup/po-navbar-action-popup.component.html","../../../projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.component.ts","../../../projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.component.html","../../../projects/ui/src/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.module.ts","../../../projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component.ts","../../../projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component.html","../../../projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.component.ts","../../../projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.component.html","../../../projects/ui/src/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.module.ts","../../../projects/ui/src/lib/components/po-navbar/po-navbar-items/po-navbar-item/po-navbar-item.component.ts","../../../projects/ui/src/lib/components/po-navbar/po-navbar-items/po-navbar-item/po-navbar-item.component.html","../../../projects/ui/src/lib/components/po-navbar/po-navbar-items/po-navbar-items.component.ts","../../../projects/ui/src/lib/components/po-navbar/po-navbar-items/po-navbar-items.component.html","../../../projects/ui/src/lib/components/po-navbar/po-navbar-items/po-navbar-items.module.ts","../../../projects/ui/src/lib/components/po-navbar/po-navbar-logo/po-navbar-logo.component.ts","../../../projects/ui/src/lib/components/po-navbar/po-navbar-logo/po-navbar-logo.component.html","../../../projects/ui/src/lib/components/po-navbar/po-navbar-base.component.ts","../../../projects/ui/src/lib/components/po-navbar/po-navbar.component.ts","../../../projects/ui/src/lib/components/po-navbar/po-navbar.component.html","../../../projects/ui/src/lib/components/po-navbar/po-navbar.module.ts","../../../projects/ui/src/lib/components/po-page/po-page-content/po-page-content-base.component.ts","../../../projects/ui/src/lib/components/po-page/po-page-content/po-page-content.component.ts","../../../projects/ui/src/lib/components/po-page/po-page-content/po-page-content.component.html","../../../projects/ui/src/lib/components/po-page/po-page-default/po-page-default-base.component.ts","../../../projects/ui/src/lib/components/po-page/po-page-base.component.ts","../../../projects/ui/src/lib/components/po-page/po-page.component.ts","../../../projects/ui/src/lib/components/po-page/po-page.component.html","../../../projects/ui/src/lib/components/po-page/po-page-header/po-page-header-base.component.ts","../../../projects/ui/src/lib/components/po-page/po-page-header/po-page-header.component.ts","../../../projects/ui/src/lib/components/po-page/po-page-header/po-page-header.component.html","../../../projects/ui/src/lib/components/po-page/po-page-default/po-page-default.component.ts","../../../projects/ui/src/lib/components/po-page/po-page-default/po-page-default.component.html","../../../projects/ui/src/lib/components/po-page/po-page-detail/po-page-detail-base.component.ts","../../../projects/ui/src/lib/components/po-page/po-page-detail/po-page-detail.component.ts","../../../projects/ui/src/lib/components/po-page/po-page-detail/po-page-detail.component.html","../../../projects/ui/src/lib/components/po-page/po-page-edit/po-page-edit-base.component.ts","../../../projects/ui/src/lib/components/po-page/po-page-edit/po-page-edit.component.ts","../../../projects/ui/src/lib/components/po-page/po-page-edit/po-page-edit.component.html","../../../projects/ui/src/lib/components/po-page/po-page-list/po-page-list-base.component.ts","../../../projects/ui/src/lib/components/po-page/po-page-list/po-page-list.component.ts","../../../projects/ui/src/lib/components/po-page/po-page-list/po-page-list.component.html","../../../projects/ui/src/lib/components/po-page/po-page.module.ts","../../../projects/ui/src/lib/components/po-skeleton/enums/po-skeleton-animation.enum.ts","../../../projects/ui/src/lib/components/po-skeleton/enums/po-skeleton-size.enum.ts","../../../projects/ui/src/lib/components/po-skeleton/enums/po-skeleton-type.enum.ts","../../../projects/ui/src/lib/components/po-skeleton/enums/po-skeleton-variant.enum.ts","../../../projects/ui/src/lib/components/po-skeleton/po-skeleton-base.component.ts","../../../projects/ui/src/lib/components/po-skeleton/po-skeleton.component.ts","../../../projects/ui/src/lib/components/po-skeleton/po-skeleton.component.html","../../../projects/ui/src/lib/components/po-skeleton/po-skeleton.module.ts","../../../projects/ui/src/lib/components/po-slide/po-slide-circles/po-slide-circles.component.ts","../../../projects/ui/src/lib/components/po-slide/po-slide-circles/po-slide-circles.component.html","../../../projects/ui/src/lib/components/po-slide/po-slide-base.component.ts","../../../projects/ui/src/lib/components/po-slide/directives/po-slide-content-template.directive.ts","../../../projects/ui/src/lib/components/po-slide/po-slide-item/po-slide-item.component.ts","../../../projects/ui/src/lib/components/po-slide/po-slide-item/po-slide-item.component.html","../../../projects/ui/src/lib/components/po-slide/po-slide-control/po-slide-control.component.ts","../../../projects/ui/src/lib/components/po-slide/po-slide-control/po-slide-control.component.html","../../../projects/ui/src/lib/components/po-slide/po-slide.component.ts","../../../projects/ui/src/lib/components/po-slide/po-slide.component.html","../../../projects/ui/src/lib/components/po-slide/po-slide.module.ts","../../../projects/ui/src/lib/components/po-stepper/enums/po-stepper-status.enum.ts","../../../projects/ui/src/lib/components/po-stepper/po-step/po-step.component.ts","../../../projects/ui/src/lib/components/po-stepper/po-step/po-step.component.html","../../../projects/ui/src/lib/components/po-stepper/po-stepper-circle/po-stepper-circle.component.ts","../../../projects/ui/src/lib/components/po-stepper/po-stepper-circle/po-stepper-circle.component.html","../../../projects/ui/src/lib/components/po-stepper/enums/po-stepper-orientation.enum.ts","../../../projects/ui/src/lib/components/po-stepper/po-stepper-base.component.ts","../../../projects/ui/src/lib/components/po-stepper/po-stepper-label/po-stepper-label.component.ts","../../../projects/ui/src/lib/components/po-stepper/po-stepper-label/po-stepper-label.component.html","../../../projects/ui/src/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.ts","../../../projects/ui/src/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.html","../../../projects/ui/src/lib/components/po-stepper/po-stepper.component.ts","../../../projects/ui/src/lib/components/po-stepper/po-stepper.component.html","../../../projects/ui/src/lib/components/po-stepper/po-stepper.module.ts","../../../projects/ui/src/lib/components/po-tabs/po-tab/po-tab-base.component.ts","../../../projects/ui/src/lib/components/po-tabs/po-tabs.service.ts","../../../projects/ui/src/lib/components/po-tabs/po-tab/po-tab.component.ts","../../../projects/ui/src/lib/components/po-tabs/po-tab/po-tab.component.html","../../../projects/ui/src/lib/components/po-tabs/po-tabs-base.component.ts","../../../projects/ui/src/lib/components/po-tabs/po-tab-button/po-tab-button.component.ts","../../../projects/ui/src/lib/components/po-tabs/po-tab-button/po-tab-button.component.html","../../../projects/ui/src/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.ts","../../../projects/ui/src/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.html","../../../projects/ui/src/lib/components/po-tabs/po-tabs.component.ts","../../../projects/ui/src/lib/components/po-tabs/po-tabs.component.html","../../../projects/ui/src/lib/components/po-tabs/po-tabs.module.ts","../../../projects/ui/src/lib/components/po-context-tabs/po-context-tab-button/po-context-tab-button.component.ts","../../../projects/ui/src/lib/components/po-context-tabs/po-context-tab-button/po-context-tab-button.component.html","../../../projects/ui/src/lib/components/po-context-tabs/po-context-tabs.component.ts","../../../projects/ui/src/lib/components/po-context-tabs/po-context-tabs.component.html","../../../projects/ui/src/lib/components/po-context-tabs/po-context-tabs.module.ts","../../../projects/ui/src/lib/components/po-toolbar/po-toolbar-actions/po-toolbar-actions.component.ts","../../../projects/ui/src/lib/components/po-toolbar/po-toolbar-actions/po-toolbar-actions.component.html","../../../projects/ui/src/lib/components/po-toolbar/po-toolbar-base.component.ts","../../../projects/ui/src/lib/components/po-toolbar/po-toolbar-notification/po-toolbar-notification.component.ts","../../../projects/ui/src/lib/components/po-toolbar/po-toolbar-notification/po-toolbar-notification.component.html","../../../projects/ui/src/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.component.ts","../../../projects/ui/src/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.component.html","../../../projects/ui/src/lib/components/po-toolbar/po-toolbar.component.ts","../../../projects/ui/src/lib/components/po-toolbar/po-toolbar.component.html","../../../projects/ui/src/lib/components/po-toolbar/po-toolbar.module.ts","../../../projects/ui/src/lib/components/po-tree-view/po-tree-view-base.component.ts","../../../projects/ui/src/lib/components/po-tree-view/services/po-tree-view.service.ts","../../../projects/ui/src/lib/components/po-tree-view/po-tree-view-item-header/po-tree-view-item-header.component.ts","../../../projects/ui/src/lib/components/po-tree-view/po-tree-view-item-header/po-tree-view-item-header.component.html","../../../projects/ui/src/lib/components/po-tree-view/po-tree-view-item/po-tree-view-item.component.ts","../../../projects/ui/src/lib/components/po-tree-view/po-tree-view-item/po-tree-view-item.component.html","../../../projects/ui/src/lib/components/po-tree-view/po-tree-view.component.ts","../../../projects/ui/src/lib/components/po-tree-view/po-tree-view.component.html","../../../projects/ui/src/lib/components/po-tree-view/po-tree-view.module.ts","../../../projects/ui/src/lib/components/po-widget/literals/po-widget-language.ts","../../../projects/ui/src/lib/components/po-widget/po-widget-base.component.ts","../../../projects/ui/src/lib/utils/design-tokens.ts","../../../projects/ui/src/lib/components/po-widget/po-widget.component.ts","../../../projects/ui/src/lib/components/po-widget/po-widget.component.html","../../../projects/ui/src/lib/components/po-widget/po-widget.module.ts","../../../projects/ui/src/lib/components/po-header/po-header-base.component.ts","../../../projects/ui/src/lib/components/po-header/po-header-brand/po-header-brand.component.ts","../../../projects/ui/src/lib/components/po-header/po-header-brand/po-header-brand.component.html","../../../projects/ui/src/lib/components/po-header/po-header-menu-item/po-header-menu-item.component.ts","../../../projects/ui/src/lib/components/po-header/po-header-menu-item/po-header-menu-item.component.html","../../../projects/ui/src/lib/components/po-header/po-header-tools/po-header-tools.component.ts","../../../projects/ui/src/lib/components/po-header/po-header-tools/po-header-tools.component.html","../../../projects/ui/src/lib/components/po-header/po-header-customer/po-header-customer.component.ts","../../../projects/ui/src/lib/components/po-header/po-header-customer/po-header-customer.component.html","../../../projects/ui/src/lib/components/po-header/po-header.component.ts","../../../projects/ui/src/lib/components/po-header/po-header.component.html","../../../projects/ui/src/lib/components/po-header/po-header.module.ts","../../../projects/ui/src/lib/components/components.module.ts","../../../projects/ui/src/lib/guards/guards.module.ts","../../../projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail-literals.interface.ts","../../../projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.component.ts","../../../projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.component.html","../../../projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor-literals.ts","../../../projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor-base.service.ts","../../../projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor.service.ts","../../../projects/ui/src/lib/interceptors/po-http-interceptor/po-http-interceptor.module.ts","../../../projects/ui/src/lib/interceptors/po-http-request/po-http-request-control-service.ts","../../../projects/ui/src/lib/interceptors/po-http-request/po-http-request-interceptor.service.ts","../../../projects/ui/src/lib/interceptors/po-http-request/po-http-request.module.ts","../../../projects/ui/src/lib/interceptors/interceptors.module.ts","../../../projects/ui/src/lib/pipes/pipes.module.ts","../../../projects/ui/src/lib/po.module.ts","../../../projects/ui/src/lib/components/po-dynamic/enums/po-dynamic-field-force-component.enum.ts","../../../projects/ui/src/lib/decorators/utils-decorators.ts","../../../projects/ui/src/lib/decorators/input-boolean/input-boolean.decorator.ts","../../../projects/ui/src/lib/decorators/input-required/input-required.decorator.ts","../../../projects/ui/src/po-ui-ng-components.ts"],"sourcesContent":["/**\n * @usedBy PoDividerComponent\n *\n * @description\n *\n * Enum para definição da espessura da linha.\n */\nexport enum PoDividerSize {\n  /** A espessura da linha fica com 1px. */\n  small = 'small',\n  /** A espessura da linha fica com 2px. */\n  medium = 'medium',\n  /** A espessura da linha fica com 4px. */\n  large = 'large'\n}\n","import { Input, Directive, OnInit } from '@angular/core';\nimport { PoDividerSize } from './po-divider-size.enum';\n\n/**\n * @description\n *\n * Este componente apresenta uma linha demarcadora de blocos e pode conter um *label*. Seu uso é indicado para definição\n * e organização de informações em uma tela e sua característica é semelhante à tag `<hr>`.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                    |\n * |----------------------------------------|-------------------------------------------------------|-------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                 |\n * | `--color`                              | Cor principla do divider&nbsp;                        | `var(--color-neutral-mid-40)`                   |\n * | `--stroke-linecap`                     | Extremidade da linha&nbsp;                            | `round`                                         |\n *\n */\n@Directive()\nexport class PoDividerBaseComponent implements OnInit {\n  coordinateX1: string;\n  coordinateX2: string;\n  private _borderWidth: string = PoDividerSize.small;\n\n  /** Valor do rótulo a ser exibido. */\n  @Input('p-label') label?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a espessura da linha.\n   *\n   * Valores válidos:\n   * - small\n   * - medium\n   * - large\n   *\n   * @default `small`\n   */\n  @Input('p-border-width') set borderWidth(value: string) {\n    this._borderWidth = PoDividerSize[value] ? PoDividerSize[value] : PoDividerSize.small;\n    this.getCoordinates();\n  }\n\n  get borderWidth() {\n    return this._borderWidth;\n  }\n\n  ngOnInit(): void {\n    this.getCoordinates();\n  }\n\n  getCoordinates() {\n    if (this.borderWidth === PoDividerSize.small) {\n      this.coordinateX1 = '0.1%';\n      this.coordinateX2 = '99.9%';\n    } else if (this.borderWidth === PoDividerSize.medium) {\n      this.coordinateX1 = '0.2%';\n      this.coordinateX2 = '99.8%';\n    } else {\n      this.coordinateX1 = '0.3%';\n      this.coordinateX2 = '99.7%';\n    }\n  }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport { PoDividerBaseComponent } from './po-divider-base.component';\n\n/**\n * @docsExtends PoDividerBaseComponent\n *\n * @example\n *\n * <example name=\"po-divider-basic\" title=\"PO Divider Basic\" >\n *  <file name=\"sample-po-divider-basic/sample-po-divider-basic.component.html\"> </file>\n *  <file name=\"sample-po-divider-basic/sample-po-divider-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-divider-labs\" title=\"PO Divider Labs\" >\n *  <file name=\"sample-po-divider-labs/sample-po-divider-labs.component.html\"> </file>\n *  <file name=\"sample-po-divider-labs/sample-po-divider-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-divider-user-detail\" title=\"PO Divider - User Detail\" >\n *  <file name=\"sample-po-divider-user-detail/sample-po-divider-user-detail.component.html\"> </file>\n *  <file name=\"sample-po-divider-user-detail/sample-po-divider-user-detail.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-divider',\n  templateUrl: './po-divider.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoDividerComponent extends PoDividerBaseComponent {}\n","<div class=\"po-divider\" [attr.p-size]=\"borderWidth\">\n  @if (label) {\n    <div class=\"po-divider-label\">{{ label }}</div>\n  }\n  <svg xmlns=\"http://www.w3.org/2000/svg\">\n    <line [attr.x1]=\"coordinateX1\" y1=\"50%\" [attr.x2]=\"coordinateX2\" y2=\"50%\" />\n  </svg>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoDividerComponent } from './po-divider.component';\n\n/**\n * @description\n *\n * Módulo do componente po-divider.\n */\n@NgModule({\n  imports: [CommonModule],\n  declarations: [PoDividerComponent],\n  exports: [PoDividerComponent]\n})\nexport class PoDividerModule {}\n","export const AnimaliaIconDictionary: { [key: string]: string } = {\n  NAME_LIB: 'AnimaliaIcon',\n  ICON_AGRO_BUSINESS: 'an an-tractor',\n  ICON_ALIGN_CENTER: 'an an-text-align-center',\n  ICON_ALIGN_JUSTIFY: 'an an-text-align-justify',\n  ICON_ALIGN_LEFT: 'an an-text-align-left',\n  ICON_ALIGN_RIGHT: 'an an-text-align-right',\n  ICON_ARROW_ARC_LEFT: 'an an-arrow-arc-left',\n  ICON_ARROW_DOWN: 'an an-caret-down',\n  ICON_OTHER_ARROW_DOWN: 'an an-arrow-down',\n  ICON_ARROW_LEFT: 'an an-caret-left',\n  ICON_ARROW_RIGHT: 'an an-caret-right',\n  ICON_ARROW_UP: 'an an-caret-up',\n  ICON_OTHER_ARROW_UP: 'an an-arrow-up',\n  ICON_CALENDAR: 'an an-calendar-blank',\n  ICON_CALENDAR_DOTS: 'an an-calendar-dots',\n  ICON_CART: 'an an-shopping-cart',\n  ICON_CLEAR_CONTENT: 'an an-x-circle',\n  ICON_FILL_CLEAR_CONTENT: 'an-fill an-x-circle',\n  ICON_CLOCK: 'an an-clock',\n  ICON_CLOSE: 'an an-x',\n  ICON_COPY: 'an an-copy',\n  ICON_DELETE: 'an an-trash',\n  ICON_DRAG: 'an an-dots-six-vertical',\n  ICON_EDIT: 'an an-pencil-simple',\n  ICON_EXCLAMATION: 'an an-warning-circle',\n  ICON_EXIT: 'an an-sign-out',\n  ICON_EXPAND: 'an an-corners-out',\n  ICON_EYE: 'an an-eye',\n  ICON_EYE_OFF: 'an an-eye-closed',\n  ICON_FILTER: 'an an-funnel',\n  ICON_FILL_FILTER: 'an-fill an-funnel',\n  ICON_FUNNEL: 'an an-funnel-simple',\n  ICON_FUNNEL_X: 'an an-funnel-x',\n  ICON_GAS_PUMP: 'an an-gas-pump',\n  ICON_HELP: 'an an-question',\n  ICON_INFO: 'an an-info',\n  ICON_LAST_PAGE: 'an an-caret-double-right',\n  ICON_LINK: 'an an-link',\n  ICON_LIST: 'an an-list-dashes',\n  ICON_LIST_BULLETS: 'an an-list-bullets',\n  ICON_LOCK: 'an an-lock',\n  ICON_MAIL: 'an an-envelope-simple',\n  ICON_MENU: 'an an-list',\n  ICON_MENU_CLOSE: 'an an-caret-circle-left',\n  ICON_MENU_OPEN: 'an an-caret-circle-right',\n  ICON_MINUS: 'an an-minus',\n  ICON_MORE: 'an an-dots-three',\n  ICON_MORE_VERT: 'an an-dots-three-vertical',\n  ICON_FILL_MORE_OUTLINE_VERT: 'an-fill an-dots-three-outline-vertical',\n  ICON_MORE_OUT_VERT_FILL: 'an-fill an-dots-three-outline-vertical',\n  ICON_NEWSPAPER: 'an an-newspaper',\n  ICON_NOTIFICATION: 'an an-bell',\n  ICON_OK: 'an an-check',\n  ICON_PARAMETERS: 'an an-sliders-horizontal',\n  ICON_PICTURE: 'an an-image',\n  ICON_PICTURE_BROKEN: 'an an-image-broken',\n  ICON_PLUS: 'an an-plus',\n  ICON_PROHIBIT: 'an an-prohibit',\n  ICON_PUSH_PIN: 'an an-push-pin',\n  ICON_PUSH_PIN_SLASH: 'an an-push-pin-slash',\n  ICON_REFRESH: 'an an-arrow-clockwise',\n  ICON_SEARCH: 'an an-magnifying-glass',\n  ICON_SETTINGS: 'an an-gear-six',\n  ICON_SIDEBAR: 'an an-sidebar',\n  ICON_SIDEBAR_SIMPLES: 'an an-sidebar-simple',\n  ICON_SORT: 'an an-arrows-down-up',\n  ICON_SORT_ASC: 'an an-arrow-up',\n  ICON_SORT_ASCENDING: 'an an-sort-ascending',\n  ICON_FILL_SORT_ASCENDING: 'an-fill an-sort-ascending',\n  ICON_SORT_DESC: 'an an-arrow-down',\n  ICON_SORT_DESCENDING: 'an an-sort-descending',\n  ICON_FILL_SORT_DESCENDING: 'an-fill an-sort-descending',\n  ICON_STAR: 'an an-star',\n  ICON_TELEPHONE: 'an an-phone',\n  ICON_TEXT_BOLD: 'an an-text-b',\n  ICON_TEXT_ITALIC: 'an an-text-italic',\n  ICON_TEXT_UNDERLINE: 'an an-text-underline',\n  ICON_UPLOAD_CLOUD: 'an an-cloud-arrow-up',\n  ICON_USER: 'an an-user',\n  ICON_WARNING: 'an an-exclamation-mark',\n  ICON_WORLD: 'an an-globe-simple'\n};\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  Input,\n  TemplateRef,\n  ViewChild\n} from '@angular/core';\nimport { AnimaliaIconDictionary } from './po-icon-dictionary';\n/**\n * @docsPrivate\n *\n * @usedBy PoButton\n *\n * @description\n *\n * Permite a exibição de ícones.\n */\n@Component({\n  selector: 'po-icon',\n  templateUrl: './po-icon.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoIconComponent {\n  @ViewChild('iconElement', { static: false }) iconElement: ElementRef;\n  class: string;\n  private _icon: string | TemplateRef<void>;\n  private readonly _iconToken: { [key: string]: string };\n\n  @HostBinding('attr.p-icon') hostPIcon: string | null = null;\n\n  constructor() {\n    this._iconToken = AnimaliaIconDictionary;\n  }\n\n  /**\n   * Define o ícone a ser exibido.\n   *\n   * É possível usar qualquer um dos ícones da [Biblioteca de ícones](https://po-ui.io/icons). conforme exemplo abaixo:\n   * ```\n   * <po-button p-icon=\"an an-user\" p-label=\"PO button\"></po-button>\n   * ```\n   * Também é possível utilizar outras fontes de ícones, por exemplo a biblioteca *Font Awesome*, da seguinte forma:\n   * ```\n   * <po-button p-icon=\"fa fa-podcast\" p-label=\"PO button\"></po-button>\n   * ```\n   * Outra opção seria a customização do ícone através do `TemplateRef`, conforme exemplo abaixo:\n   * ```\n   * <po-button [p-icon]=\"template\" p-label=\"button template ionic\"></po-button>\n   *\n   * <ng-template #template>\n   *  <ion-icon style=\"font-size: inherit\" name=\"heart\"></ion-icon>\n   * </ng-template>\n   * ```\n   * > Para o ícone enquadrar corretamente, deve-se utilizar `font-size: inherit` caso o ícone utilizado não aplique-o.\n   */\n  @Input('p-icon') set icon(value: string | TemplateRef<void>) {\n    if (typeof value === 'string') {\n      this.hostPIcon = value;\n      this.processIcon(value);\n    } else if (value instanceof TemplateRef) {\n      this._icon = value;\n      this.hostPIcon = null;\n    }\n  }\n\n  get icon() {\n    return this._icon;\n  }\n\n  private addClasses(value: string, iconToken: boolean = false) {\n    this.class = iconToken\n      ? value\n      : value.startsWith('po-icon-')\n        ? (this.class = `po-icon ${value}`)\n        : (this.class = `po-fonts-icon ${value}`);\n  }\n\n  private getIcon(iconName: string): string {\n    return this._iconToken.hasOwnProperty(iconName)\n      ? this._iconToken[iconName].startsWith('po-icon ')\n        ? this._iconToken[iconName]\n        : 'po-fonts-icon ' + this._iconToken[iconName]\n      : '';\n  }\n\n  private processIcon(icon: string) {\n    const iconToken = this.processIconTokens(icon);\n    if (iconToken !== '') {\n      this.addClasses(iconToken, true);\n    } else {\n      this.addClasses(icon);\n    }\n  }\n\n  private processIconTokens(value: string): string {\n    const iconTokens = this.splitIconNames(value);\n    let icon: string = '';\n\n    if (Array.isArray(iconTokens)) {\n      iconTokens.map(iconName => {\n        icon += this.getIcon(iconName) !== '' ? ' ' + this.getIcon(iconName) : icon !== '' ? ' ' + iconName : iconName;\n      });\n    } else {\n      icon = this.getIcon(iconTokens);\n    }\n    return icon.trim();\n  }\n\n  private splitIconNames(iconName: string): string | Array<string> {\n    return iconName.includes(' ') ? iconName.split(' ') : iconName;\n  }\n}\n","@if (class) {\n  <i #iconElement [class]=\"class\" aria-hidden=\"true\">\n    <ng-content></ng-content>\n  </i>\n} @else {\n  <ng-template [ngTemplateOutlet]=\"icon\"></ng-template>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoIconComponent } from './po-icon.component';\n\n/**\n * @description\n *\n * Módulo do componente Po-Icon.\n */\n@NgModule({\n  imports: [CommonModule],\n  declarations: [PoIconComponent],\n  exports: [PoIconComponent]\n})\nexport class PoIconModule {}\n","/**\n * @usedBy PoTagComponent\n *\n * @description\n *\n * Define os tipos de orientações disponíveis para o `po-tag`.\n */\nexport enum PoTagOrientation {\n  /** A tag será exibida na horizontal, ao lado direito em relação ao label. */\n  Horizontal = 'horizontal',\n\n  /** Exibe a tag na vertical, ou seja, abaixo do label. */\n  Vertical = 'vertical'\n}\n","/**\n * @usedBy PoTagComponent\n *\n * @description\n *\n * Define os tipos disponíveis para o `po-tag`.\n */\nexport enum PoTagType {\n  /** Erro, perigo, problema ou aviso crítico. */\n  Danger = 'danger',\n\n  /** Informativo ou explicativo. */\n  Info = 'info',\n\n  /** Confirmação, resultados positivos ou êxito. */\n  Success = 'success',\n\n  /** Aviso ou advertência. */\n  Warning = 'warning',\n\n  /** De uso geral, quando os tipos Info, Warning, Success e Danger não atendem a necessidade. */\n  Neutral = 'neutral'\n}\n","/**\n * @docsPrivate\n *\n * @description\n *\n * Define o nível de densidade (espaçamento) aplicado em componentes agrupadores. Pode ser ajustado conforme a\n * preferência do usuário ou requisitos de acessibilidade.\n */\nexport enum PoDensityMode {\n  /** Define espaçamentos mais compactos entre os elementos. */\n  Small = 'small',\n\n  /** Define espaçamentos mais amplos e confortáveis. */\n  Medium = 'medium'\n}\n","/**\n * @docsPrivate\n *\n * @description\n *\n * Define o tamanho padrão utilizado em componentes interativos. Este enum também é usado pelo serviço de tema para\n * definir a preferência global de tamanho dos componentes. Por padrão, os componentes utilizam o tamanho `medium` por\n * ser mais acessível (conforme diretrizes WCAG nível AAA).\n *\n * > O tamanho `small` está disponível apenas em contextos com acessibilidade AA.\n */\nexport enum PoFieldSize {\n  Small = 'small',\n  Medium = 'medium'\n}\n","import { PoLanguage, PoNumberSeparator, PoDateSeparator } from './po-language.interface';\n\n/**\n * @description\n *\n * <a id=\"poLanguageDefault\"></a>\n *\n *\n * A constante poLanguageDefault possui as linguagens de suporte padrão do Po-UI\n *\n * > Português, Inglês, Espanhol e Russo.\n *\n * @usedBy PoI18nModule\n */\nexport const poLanguageDefault: Array<PoLanguage> = [\n  { description: 'English', language: 'en' },\n  { description: 'Español', language: 'es' },\n  { description: 'Português', language: 'pt' },\n  { description: 'Pусский', language: 'ru' }\n];\n\n/**\n * @description\n *\n * <a id=\"poLocales\"></a>\n *\n *\n * A constante poLocales possui somente os códigos das linguagem padrão\n *\n * @usedBy PoI18nModule\n */\nexport const poLocales = poLanguageDefault.map(language => language.language);\n\n/**\n * @description\n *\n * <a id=\"poLocaleDefault\"></a>\n *\n *\n * A constante poLocaleDefault possui o código da linguagem padrão do Po-UI\n *\n * @usedBy PoI18nModule\n */\nexport const poLocaleDefault = 'pt';\n\n/**\n * @description\n *\n * <a id=\"poLocaleDecimalSeparatorList\"></a>\n *\n *\n * A constante poLocaleDecimalSeparatorList possui os separadores de decimal por linguagens de suporte padrão do Po-UI\n *\n * @usedBy PoI18nModule\n */\nexport const poLocaleDecimalSeparatorList: Array<PoNumberSeparator> = [\n  { separator: '.', language: 'en' },\n  { separator: ',', language: 'es' },\n  { separator: ',', language: 'pt' },\n  { separator: ',', language: 'ru' }\n];\n\n/**\n * @description\n *\n * <a id=\"poLocaleDecimalSeparatorList\"></a>\n *\n *\n * A constante poLocaleDecimalSeparatorList possui os separadores de decimal por linguagens de suporte padrão do Po-UI\n *\n * @usedBy PoI18nModule\n */\nexport const poLocaleThousandSeparatorList: Array<PoNumberSeparator> = [\n  { separator: ',', language: 'en' },\n  { separator: '.', language: 'es' },\n  { separator: '.', language: 'pt' },\n  { separator: ' ', language: 'ru' }\n];\n\n/**\n * @description\n *\n * <a id=\"poLocaleDateSeparatorList\"></a>\n *\n *\n * A constante poLocaleDateSeparatorList possui o separador de data por locale de suporte padrão do Po-UI\n *\n * @usedBy PoI18nModule\n */\nexport const poLocaleDateSeparatorList: Array<PoDateSeparator> = [\n  { separator: '/', locale: 'en' },\n  { separator: '/', locale: 'es' },\n  { separator: '/', locale: 'pt' },\n  { separator: '.', locale: 'ru' }\n];\n","/**\n * @usedBy PoThemeService\n *\n * @description\n * Enum para configurar o nível de acessibilidade dos componentes através do serviço de tema.\n *\n * ```\n * import { PoThemeA11yEnum } from '@po-ui/theme';\n *\n * // Definindo o nível de acessibilidade ao configurar as cores e o tipo do tema (light | dark)\n * themeService.setTheme(...theme, ...type, PoThemeA11yEnum.AA);\n *\n * // Definindo o nível de acessibilidade ao configurar apenas as cores do tema\n * themeService.setThemeA11y(...theme, PoThemeA11yEnum.AAA);\n *\n * // Alterando o nível de acessibilidade com as cores do tema já definidas\n * themeService.setCurrentThemeA11y(PoThemeA11yEnum.AAA);\n * ```\n */\nexport enum PoThemeA11yEnum {\n  /** Nível de acessibilidade AA.\n   * - Define a espessura do `outline` para **2px**.\n   * - Disponibiliza o tamanho `small` para componentes de formulário (buttons, inputs, checkboxes, radios e switches)\n   * conforme suas documentações.\n   */\n  AA = 'AA',\n\n  /** Nível de acessibilidade AAA.\n   * - Define a espessura do `outline` para **4px**.\n   * - Não disponibiliza o tamanho `small` para componentes de formulário.\n   */\n  AAA = 'AAA'\n}\n","/**\n * @usedBy PoTableComponent, PoLookupComponent, PoPageDynamicTableComponent\n *\n * @description\n * Tipos de espaçamento interno (padding) das células (**p-spacing**) do po-table.\n */\nexport enum PoTableColumnSpacing {\n  /** Espaçamento extra pequeno: 0.25rem (vertical) x 0.5rem (horizontal). */\n  ExtraSmall = 'extraSmall',\n\n  /** Espaçamento pequeno: 0.5rem (vertical) x 1rem (horizontal). */\n  Small = 'small',\n\n  /** Espaçamento médio: 0.75rem (vertical) x 1rem (horizontal). */\n  Medium = 'medium',\n\n  /** Espaçamento grande: 1rem (vertical) x 1rem (horizontal). */\n  Large = 'large'\n}\n","import { PoDensityMode } from '../enums/po-density-mode.enum';\nimport { PoFieldSize } from '../enums/po-field-size.enum';\nimport { poLocaleDefault, poLocales } from '../services/po-language/po-language.constant';\nimport { ElementRef } from '@angular/core';\nimport { PoThemeA11yEnum } from '../services/po-theme/enum/po-theme-a11y.enum';\nimport { PoThemeService } from '../services/po-theme/po-theme.service';\nimport { PoTableColumnSpacing } from '../components/po-table/enums/po-table-spacing.enum';\n\n/**\n * Converte e formata os bytes em formato mais legível para o usuário.\n *\n * Por exemplo:\n * - 31457280 em 30 MB.\n * - 21474836480 em 20 GB.\n * - 12.5666666 em 12.57 Bytes (duas casas decimais).\n *\n * @param bytes {number} Valor em bytes\n * @param decimals {number} Quantidade de casas decimais que terá após a conversão.\n */\nexport function formatBytes(bytes: number, decimals = 2): string {\n  if (!bytes) {\n    return undefined;\n  }\n\n  const multiplier = 1024;\n  const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n  const result = Math.floor(Math.log(bytes) / Math.log(multiplier));\n  decimals = decimals < 0 ? 0 : decimals;\n\n  return `${parseFloat((bytes / Math.pow(multiplier, result)).toFixed(decimals))} ${sizes[result]}`;\n}\n\n/**\n * Retorna o idioma atual do navegador\n */\nexport function getBrowserLanguage(): string {\n  // navigator.userLanguage is the value for IE10\n  const language = navigator.language || navigator['userLanguage'];\n  const shortLanguage = getShortLanguage(language);\n\n  return poLocales.includes(shortLanguage) ? language : poLocaleDefault;\n}\n\n/**\n * @deprecated use getDefaultSizeFn\n *\n * Retorna o tamanho padrão dos componentes conforme o nível de acessibilidade.\n */\nexport function getDefaultSize<T>(poThemeService: PoThemeService, sizeEnum: T): T[keyof T] {\n  return poThemeService.getA11yDefaultSize() === 'small' ? sizeEnum['Small'] : sizeEnum['Medium'];\n}\n\n/**\n * Retorna o tamanho padrão dos componentes conforme o nível de acessibilidade.\n */\nexport function getDefaultSizeFn<T>(sizeEnum: T): T[keyof T] {\n  return getA11yDefaultSize() === 'small' ? sizeEnum['Small'] : sizeEnum['Medium'];\n}\n\n/**\n * Retorna o idioma do navegador, com somente as duas primeiras letras. Por exemplo: \"pt\" ou \"es\".\n *\n * Caso o valor retornado pelo navegador não estiver dentro dos idiomas suportados pelo PO,\n * será retornado a linguagem padrão (poLocaleDefault).\n */\nexport function getShortBrowserLanguage(): string {\n  return getShortLanguage(getBrowserLanguage());\n}\n\n/**\n * Retorna o idioma com somente a abreviação do idioma (duas primeiras letras).\n * Por exemplo: \"pt\" ou \"es\".\n *\n * @param language {string} linguagem.\n *\n * @returns sigla do idioma padrão {string}.\n *\n * @default pt\n */\nexport function getShortLanguage(language: string): string {\n  return (language || poLocaleDefault).toLowerCase().substring(0, 2);\n}\n\nexport function isLanguage(value) {\n  const languageRegex = new RegExp('^[a-z]{2}(-[a-z]{2})?$', 'i');\n\n  return languageRegex.test(value);\n}\n\n/* istanbul ignore next */\nexport function reloadCurrentPage() {\n  const currentUrl = window.location.origin + window.location.pathname;\n\n  if (isValidUrl(currentUrl)) {\n    window.location.assign(currentUrl);\n  }\n}\n\nexport function isValidUrl(url: string, location: Location = window.location): boolean {\n  return url === location.origin + location.pathname;\n}\n\nexport function convertToBoolean(val: any): boolean {\n  if (typeof val === 'string') {\n    val = val.toLowerCase().trim();\n    return val === 'true' || val === 'on' || val === '';\n  }\n\n  if (typeof val === 'number') {\n    return val === 1;\n  }\n\n  return !!val;\n}\n\nexport function convertToInt(value: any, valueDefault?: any): number {\n  const validNumber = parseInt(value, 10);\n  const validDefaultValue = parseInt(valueDefault, 10);\n  const defaultValue = validDefaultValue || validDefaultValue === 0 ? validDefaultValue : undefined;\n\n  return validNumber || validNumber === 0 ? validNumber : defaultValue;\n}\n\nexport function isTypeof(object: any, type: any) {\n  return typeof object === type;\n}\n\n/**\n *\n * @param fn Função que será executada dentro do contexto. Podendo ser o nome da função\n * ou a referência da mesma.\n *\n * @param context Contexto do qual a função será executada.\n */\nexport function callFunction(fn: any, context: any, param?): void {\n  if (isTypeof(fn, 'function')) {\n    fn.call(context, param);\n  } else {\n    context[fn](param);\n  }\n}\n\nexport function convertIsoToDate(value: string, start: boolean, end: boolean) {\n  if (value) {\n    const day = parseInt(value.substring(8, 10), 10);\n    const month = parseInt(value.substring(5, 7), 10);\n    const year = parseInt(value.substring(0, 4), 10);\n\n    if (start) {\n      const date = new Date(year, month - 1, day, 0, 0, 0);\n\n      setYearFrom0To100(date, year);\n\n      return date;\n    } else if (end) {\n      const date = new Date(year, month - 1, day, 23, 59, 59);\n\n      setYearFrom0To100(date, year);\n\n      return date;\n    } else {\n      return new Date(year, month - 1, day);\n    }\n  }\n}\n\nexport function convertDateToISODate(date: Date) {\n  if (date) {\n    const getMonth = date.getMonth() + 1;\n    const day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();\n    const month = getMonth < 10 ? '0' + getMonth : getMonth;\n    const year = formatYear(date.getFullYear());\n\n    return year + '-' + month + '-' + day;\n  } else {\n    return null;\n  }\n}\n\nexport function convertDateToISOExtended(date: Date, time?: string) {\n  if (date) {\n    const getMonth = date.getMonth() + 1;\n    const day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();\n    const month = getMonth < 10 ? '0' + getMonth : getMonth;\n    const year = formatYear(date.getFullYear());\n\n    const dateString = date.toString();\n\n    if (time !== null) {\n      return year + '-' + month + '-' + day + time;\n    } else {\n      return (\n        year +\n        '-' +\n        month +\n        '-' +\n        day +\n        'T' +\n        dateString.substring(16, 24) +\n        dateString.substring(28, 31) +\n        ':' +\n        dateString.substring(31, 33)\n      );\n    }\n  } else {\n    return null;\n  }\n}\n\n/**\n * Transforma o ano em uma string no formato yyyy e caso o ano seja menor que 1000 preenche com zeros a esquerda.\n *\n * @param year Ano\n */\nexport function formatYear(year: number) {\n  if (year >= 1000) {\n    return year.toString();\n  }\n\n  if (year > 99 && year < 1000) {\n    return `0${year}`;\n  }\n\n  if (year > 9 && year < 100) {\n    return `00${year}`;\n  }\n\n  if (year >= 0 && year < 10) {\n    return `000${year}`;\n  }\n}\n\n// Verifica se o navegador em que está sendo usado é Internet Explorer ou Edge\nexport function isIEOrEdge() {\n  const userAgent = window.navigator.userAgent;\n\n  return /msie\\s|trident\\/|edge\\//i.test(userAgent);\n}\n\n// Verifica se o navegador em que está sendo usado é Internet Explorer\nexport function isIE() {\n  const userAgent = window.navigator.userAgent;\n\n  return /msie\\s|trident/i.test(userAgent);\n}\n\n// Verifica se o navegador em que está sendo usado é Firefox\nexport function isFirefox() {\n  const userAgent = window.navigator.userAgent;\n\n  return userAgent.toLowerCase().indexOf('firefox') > -1;\n}\n\n// Verifica se o navegador em que está sendo usado é Safari\nexport function isSafari() {\n  const userAgent = window.navigator.userAgent;\n\n  return /^(?!.*chrome).*safari.*$/.test(userAgent.toLocaleLowerCase());\n}\n\n// Verifica qual o dispositivo que está sendo usado\nexport function isMobile() {\n  const userAgent = window.navigator.userAgent;\n\n  return userAgent.match(/Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone/i);\n}\n\nexport function isEquals(value, comparedValue) {\n  return JSON.stringify(value) === JSON.stringify(comparedValue);\n}\n\nexport function isKeyCodeEnter(event: any): boolean {\n  return event.keyCode === 13 || event.which === 13;\n}\n\nexport function isKeyCodeSpace(event: any): boolean {\n  return event.keyCode === 32 || event.which === 32;\n}\n\n/**\n * Caso o ano original da data seja entre 0 e 100 atribui esse valor ao ano, pois o `new Date` do javascript transforma o ano para 190X.\n *\n * @param date Data\n * @param year Ano original\n */\nexport function setYearFrom0To100(date: Date, year: number) {\n  if (year >= 0 && year < 100) {\n    date.setFullYear(year);\n  }\n}\n\nexport function sortOptionsByProperty(options: Array<any>, property: string) {\n  options.sort((optionA, optionB) => {\n    optionA = optionA[property].toString().toLowerCase();\n    optionB = optionB[property].toString().toLowerCase();\n\n    if (optionA < optionB) {\n      return -1;\n    }\n    if (optionA > optionB) {\n      return 1;\n    }\n    return 0;\n  });\n}\n\n/**\n * Ordena o campos baseado no valor da propriedade `order`.\n *\n * Só serão aceitos valores com números inteiros maiores do que zero para a ordenação.\n *\n * Campos sem `order` ou com valores negativos, zerados ou inválidos\n * receberão o valor default e seguirão o posicionamento dentro do\n * array.\n *\n * @param fields campo que se deseja ordenar.\n * @param defaultOrdering valor que será utilizado para manter na posição do array.\n */\nexport function sortFields(fields = [], defaultOrdering = -1) {\n  const resultClassification = { fieldAComesFirst: -1, fieldAComesAfter: 1, keepPositions: 0 };\n\n  const isOrderValid = (order: number) => isTypeof(order, 'number') && order > 0;\n  const applyDefaultOrdering = (order: number) => (isOrderValid(order) ? order : defaultOrdering);\n\n  return fields.sort((fieldA, fieldB) => {\n    const orderA = applyDefaultOrdering(fieldA.order);\n    const orderB = applyDefaultOrdering(fieldB.order);\n\n    if (orderA === orderB) {\n      return resultClassification.keepPositions;\n    }\n\n    if (orderA === defaultOrdering) {\n      return resultClassification.fieldAComesAfter;\n    }\n\n    if (orderB === defaultOrdering) {\n      return resultClassification.fieldAComesFirst;\n    }\n\n    return orderA - orderB;\n  });\n}\n\nexport function removeDuplicatedOptions(list: Array<any>) {\n  for (let i = 0; i < list.length; i++) {\n    if (i === 0) {\n      continue;\n    }\n\n    if (list.findIndex(op => op.value === list[i].value) !== i) {\n      list.splice(i, 1);\n      i--;\n    }\n  }\n}\n\nexport function removeDuplicatedOptionsWithFieldValue(list: Array<any>, newValue) {\n  for (let i = 0; i < list.length; i++) {\n    if (i === 0) {\n      continue;\n    }\n\n    if (list.findIndex(op => op[newValue] === list[i][newValue]) !== i) {\n      list.splice(i, 1);\n      i--;\n    }\n  }\n}\n\nexport function removeUndefinedAndNullOptions(list: Array<any>) {\n  for (let i = 0; i < list.length; i++) {\n    if (list[i].value === undefined || list[i].value === null) {\n      list.splice(i, 1);\n      i--;\n    }\n  }\n}\n\nexport function removeUndefinedAndNullOptionsWithFieldValue(list: Array<any>, newValue) {\n  for (let i = 0; i < list.length; i++) {\n    if (list[i][newValue] === undefined || list[i][newValue] === null) {\n      list.splice(i, 1);\n      i--;\n    }\n  }\n}\n\nexport function validValue(value: any) {\n  return (value !== null && value !== undefined && value !== '') || value === false;\n}\n\nexport function isExternalLink(url): boolean {\n  return url ? url.startsWith('http') : false;\n}\n\nexport function openExternalLink(url): void {\n  window.open(url, '_blank');\n}\n\nexport function getFormattedLink(link: string): string {\n  let formattedLink = '';\n  // Retira todos os pontos no começo da URL.\n  if (link) {\n    formattedLink = link.replace(/^(\\.)+/g, '');\n  }\n  // Verifica se foi utilizado uma rota que não comece com barra.\n  if (!formattedLink.startsWith('/')) {\n    formattedLink = '/'.concat(formattedLink);\n  }\n  return formattedLink;\n}\n\n/**\n * Método responsável por ordenar dois valores.\n *\n * @param leftSide Primeiro valor a ser comparado.\n * @param rightSide Segundo valor a ser comparado.\n * @param ascending Determina se será em ordem ascendente ou descendente.\n */\nexport function sortValues(leftSide: string | Date, rightSide: string | Date, ascending: boolean = true): number {\n  const left = isTypeof(leftSide, 'string') ? (leftSide as string).toLowerCase() : leftSide;\n  const right = isTypeof(rightSide, 'string') ? (rightSide as string).toLowerCase() : rightSide;\n\n  const leftIsInvalid = left === null || left === undefined || Number.isNaN(left);\n  const rightIsInvalid = right === null || right === undefined || Number.isNaN(right);\n\n  if (ascending) {\n    if (left < right || leftIsInvalid) {\n      return -1;\n    } else if (left > right || rightIsInvalid) {\n      return 1;\n    }\n  } else if (ascending === false) {\n    if (left < right || leftIsInvalid) {\n      return 1;\n    } else if (left > right || rightIsInvalid) {\n      return -1;\n    }\n  }\n  return 0;\n}\n\nexport function validateDateRange(date: Date, dateStart: Date, dateEnd: Date) {\n  if (dateStart && dateEnd) {\n    return date >= dateStart && date <= dateEnd;\n  } else if (dateStart && !dateEnd) {\n    return date >= dateStart;\n  } else if (!dateStart && dateEnd) {\n    return date <= dateEnd;\n  } else {\n    return true;\n  }\n}\n\nexport function uuid() {\n  function hex4() {\n    return Math.floor((1 + Math.random()) * 0x10000)\n      .toString(16)\n      .substring(1);\n  }\n\n  return hex4() + hex4() + '-' + hex4() + '-' + hex4() + '-' + hex4() + '-' + hex4() + hex4() + hex4();\n}\n\nexport function capitalizeFirstLetter(text: string): string {\n  return `${text.charAt(0).toUpperCase()}${text.slice(1)}`;\n}\n\n/**\n * Mapeia um novo array apenas com as propriedades definidas pelo desenvolvedor baseado em um array de\n * origem.\n *\n * Exemplo:\n *\n * ```\n * const people = [\n *  { id: 1, name: 'Fulano', birthdate: '1980-11-01', genre: 'Male', city: 'São Paulo', dependents: 2 },\n *  { id: 2, name: 'Beltrano', birthdate: '1997-01-21', genre: 'Female', city: 'Joinville', dependents: 0 },\n *  { id: 3, name: 'Siclano', birthdate: '1995-07-15', genre: 'Male', city: 'Joinville', dependents: 0 }\n * ];\n *\n * const properties = ['id', 'name'];\n *\n * const idAndName = mapArrayByProperties(people, properties);\n *\n * console.log(idAndName); // [{ id: 1, name: 'Fulano' }, { id: 2, name: 'Beltrano' }, { id: 3, name: 'Siclano' }]\n * ```\n *\n * Um outro uso para o método é \"parear\" todos os objetos do array com as mesmas propriedades.\n *\n * ```\n * const customers = [\n *  { id: 1, name: 'Fulano', city: 'São Paulo', dependents: 2 }, // sem genre\n *  { id: 2, name: 'Beltrano', genre: 'Female', city: 'Joinville' }, // sem dependents\n *  { id: 3, name: 'Siclano', genre: 'Male', city: 'Joinville', dependents: 0 }\n * ];\n * const properties = ['id', 'name', 'city', 'genre', 'dependents'];\n *\n * const pattern = mapArrayByProperties(customers, properties);\n * console.log(pattern);\n *\n * // [\n * //   { id: 1, name: 'Fulano', city: 'São Paulo', genre: undefined, dependents: 2 },\n * //   { id: 2, name: 'Beltrano', city: 'Joinville', genre: 'Female', dependents: undefined },\n * //   { id: 3, name: 'Siclano', city: 'Joinville', genre: 'Male', dependents: 0 }\n * // ]\n * ```\n *\n * @param items {Array<any>} Array de items original.\n * @param properties {Array<string>} Array de string com a lista de propriedades que devem ser retornadas.\n *\n * @returns Array<any>\n */\nexport function mapArrayByProperties(items: Array<any> = [], properties: Array<string> = []): Array<any> {\n  return items.map(item => mapObjectByProperties(item, properties));\n}\n\n/**\n * Mapeia um novo objeto apenas com as propriedades definidas pelo desenvolvedor.\n *\n * Exemplo:\n *\n * ```\n * const person = { id: 1, name: 'Fulano', birthdate: '1980-11-01', genre: 'Male', city: 'São Paulo', dependents: 2 };\n *\n * const properties = ['id', 'name'];\n *\n * const idAndName = mapObjectByProperties(person, properties);\n *\n * console.log(idAndName); // { id: 1, name: 'Fulano' }\n * ```\n *\n * @param object {Array<any>} Array de items original.\n * @param properties {Array<string>} Array de string com a lista de propriedades que devem ser retornadas.\n *\n * @returns Array<any>\n */\nexport function mapObjectByProperties(object: any = {}, properties: Array<string> = []) {\n  const getSelectedProperties = (selectedProperties, property) => ({\n    ...selectedProperties,\n    [property]: object[property]\n  });\n\n  return properties.reduce(getSelectedProperties, {});\n}\n\n/**\n * Retorna os valores de um objeto dentro de um array.\n *\n * > Simula o Object.values(obj), o mesmo deve ser removido assim que a versão typescrit for atualizada.\n *\n * @param object Objeto de onde será pego os valores.\n */\nexport function valuesFromObject(object: any = {}): Array<any> {\n  return Object.keys(object).map(property => object[property]);\n}\n\n/**\n * Converte um arquivo em base64.\n *\n * @param file arquivo que será convertido.\n */\nexport function convertImageToBase64(file: File): Promise<any> {\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader();\n\n    reader.readAsDataURL(file);\n    reader.onload = () => resolve(reader.result);\n    /* istanbul ignore next */\n    reader.onerror = error => reject(error);\n  });\n}\n\n/**\n * Valida se a imagem é do tipo base64 valida\n *\n */\nexport function isValidImageBase64(value: string): boolean {\n  try {\n    return !!value.match(/^data:image\\/([a-zA-Z]*);base64,([^\\\"]*)$/);\n  } catch (err) {\n    return false;\n  }\n}\n\n/**\n * Converte um número em decimal baseado na quantidade de casas decimais.\n *\n * Caso o valor seja inválido, será retornado o valor `undefined`.\n * Valores inválidos são: `false`, `NaN`, `strings` que não numéricas, `undefined` e `null`.\n *\n * @param number valor que será convertido\n * @param decimalsPlace quantidade de casas decimais\n */\nexport function convertNumberToDecimal(number: any, decimalsPlace: number): number {\n  const isValidValue = (number || number === 0) && !isNaN(number);\n\n  const floatValue = isValidValue ? parseFloat(number) : undefined;\n\n  try {\n    return parseFloat(floatValue.toFixed(decimalsPlace));\n  } catch {\n    return floatValue;\n  }\n}\n\n/**\n * Retorna uma copia do objeto sujo, sem as propriedades nulas ou indefinidas.\n * Retorna o objeto sem as propriedades que contém valores nulos ou indefinidos.\n *\n * @param dirtyObject\n */\nexport function clearObject(dirtyObject: object): any {\n  const cleanObject = {};\n\n  Object.keys(dirtyObject).forEach(key => {\n    if (dirtyObject[key] !== null && dirtyObject[key] !== undefined) {\n      cleanObject[key] = dirtyObject[key];\n    }\n  });\n\n  return cleanObject;\n}\n\nexport function validateObjectType(value: any) {\n  return isTypeof(value, 'object') && !Array.isArray(value) ? value : undefined;\n}\n\n/**\n * Retorna os elementos DOM capazes de receber foco.\n *\n * > Atualmente são considerados \"focáveis\" os elementos DOM `input`, `select`,\n * `textarea`, `button` e `a`.\n *\n * @param parentElement Elemento DOM pai.\n * @returns Lista dos elementos DOM filhos \"focáveis\".\n */\nexport function getFocusableElements(parentElement: Element): NodeListOf<Element> {\n  const focusableElements = 'button:not([disabled]), [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"]';\n  return parentElement.querySelectorAll(focusableElements);\n}\n\n// Retorna o formato de acordo com o locale.\nexport function replaceFormatSeparator(format: string, separator: string) {\n  let newFormat = format;\n  if (separator !== '/') {\n    newFormat = newFormat.replace(/\\//g, separator);\n  }\n  return newFormat;\n}\n\n/**\n * Recebe um array de objetos para ordenação utilizando chave como comparativo e\n * se a order é crescente(true) ou descrescente(false)\n *\n * Exemplo:\n *\n * ```\n * items: [{country: 'japao'}, {country: 'brasil'} , {country: 'china'}]\n * key: 'country'\n * isAscendingOrder: true\n * Resultado do retorno:\n *    [{country: 'brasil'}, {country: 'china'} , {country: 'japao'}]\n * ```\n *\n *\n * @param items : lista de itens.\n * @param key : propriedade utilizada na comparação.\n * @param isAscendingOrder : ordenação crescente ou descrescente.\n */\nexport function sortArrayOfObjects(items, key, isAscendingOrder) {\n  if (items) {\n    return items.sort((a, b) => {\n      const valueA = a[key];\n      const valueB = b[key];\n\n      if (typeof valueA === 'number' && typeof valueB === 'number') {\n        return isAscendingOrder ? valueA - valueB : valueB - valueA;\n      } else {\n        const compareResult = valueA.toString().localeCompare(valueB.toString());\n        return isAscendingOrder ? compareResult : -compareResult;\n      }\n    });\n  }\n}\n\n/**\n * @deprecated use validateSizeFn\n *\n * Valida e retorna um tamanho permitido para os componentes, considerando a acessibilidade.\n */\nexport function validateSize<T>(value: string, poThemeService: PoThemeService, sizeEnum: T): T[keyof T] {\n  const validSizes = Object.values(sizeEnum) as Array<string>;\n\n  if (value && validSizes.includes(value)) {\n    if (value === sizeEnum['Small'] && poThemeService.getA11yLevel() === PoThemeA11yEnum.AAA) {\n      return sizeEnum['Medium'];\n    }\n    return value as T[keyof T];\n  }\n\n  return getDefaultSize(poThemeService, sizeEnum);\n}\n\n/**\n * Valida e retorna um tamanho permitido para os componentes, considerando a acessibilidade.\n */\nexport function validateSizeFn<T>(value: string, sizeEnum: T): T[keyof T] {\n  const validSizes = Object.values(sizeEnum) as Array<string>;\n\n  if (value && validSizes.includes(value)) {\n    if (value === sizeEnum['Small'] && getA11yLevel() === PoThemeA11yEnum.AAA) {\n      return sizeEnum['Medium'];\n    }\n    return value as T[keyof T];\n  }\n\n  return getDefaultSizeFn(sizeEnum);\n}\n\n/**\n * Retorna a preferência global de tamanho dos componentes.\n *\n * @returns `'small'` ou `'medium'`.\n */\nexport function getA11yDefaultSize(): string {\n  const defaultSize =\n    document.documentElement.getAttribute('data-default-size') || localStorage.getItem('po-default-size');\n  const a11yLevel = document.documentElement.getAttribute('data-a11y');\n  return defaultSize === PoFieldSize.Small && a11yLevel === PoThemeA11yEnum.AA ? PoFieldSize.Small : PoFieldSize.Medium;\n}\n\n/**\n * Retorna o nível de acessibilidade configurado no tema.\n * Se não estiver configurado, retorna `AAA` como padrão.\n * @returns {PoThemeA11yEnum} O nível de acessibilidade, que pode ser `AA` ou `AAA`.\n */\nexport function getA11yLevel(): PoThemeA11yEnum {\n  const a11yLevel = document.documentElement.getAttribute('data-a11y');\n\n  if (a11yLevel === PoThemeA11yEnum.AA) {\n    return PoThemeA11yEnum.AA;\n  }\n\n  localStorage.setItem('po-default-size', PoFieldSize.Medium);\n  return PoThemeA11yEnum.AAA;\n}\n\n/**\n * Retorna o modo de adensamento dos componentes agrupadores.\n * Se não estiver configurado, retorna `medium` como padrão.\n * @returns {PoDensityMode} O modo de adensamento, que pode ser `small` ou `medium`.\n */\nexport function getDensityMode(): PoDensityMode {\n  const densityMode = document.documentElement.getAttribute('po-density-mode');\n\n  if (densityMode === PoDensityMode.Small) {\n    return PoDensityMode.Small;\n  }\n\n  return PoDensityMode.Medium;\n}\n\n/**\n * Realiza a tradução das propriedades de ajuda dos componentes.\n * Type do Helper default é 'help' e size 'medium'.\n * @returns Objeto {helperSettings} com as propriedades do helper\n * @returns Propriedade {hideAdditionalHelp} para controle ao esconder o ícone de ajuda adicional depreciado.\n */\nexport function setHelperSettings(\n  label: string,\n  additionalHelpTooltip: string,\n  poHelperComponent?: any,\n  size?: string,\n  onClick?: any\n): { hideAdditionalHelp: boolean; helperSettings?: any } {\n  const baseSize = size ?? poHelperComponent?.size ?? 'medium';\n  const resolvedSize = baseSize === 'large' ? 'medium' : baseSize;\n  const defaulWithoutLabel = { hideAdditionalHelp: false, helperSettings: null };\n\n  if (onClick) {\n    return {\n      hideAdditionalHelp: true,\n      helperSettings: {\n        type: 'help',\n        eventOnClick: onClick,\n        size: resolvedSize\n      }\n    };\n  }\n  if (additionalHelpTooltip && !poHelperComponent) {\n    return {\n      hideAdditionalHelp: true,\n      helperSettings: {\n        content: additionalHelpTooltip,\n        type: 'help',\n        size: resolvedSize\n      }\n    };\n  }\n  if (poHelperComponent) {\n    if (poHelperComponent.eventOnClick) {\n      return {\n        hideAdditionalHelp: true,\n        helperSettings: {\n          type: poHelperComponent.type || 'help',\n          eventOnClick: poHelperComponent.eventOnClick,\n          size: resolvedSize\n        }\n      };\n    }\n    if (typeof poHelperComponent === 'string' && poHelperComponent.trim() !== '') {\n      return {\n        hideAdditionalHelp: true,\n        helperSettings: { content: poHelperComponent, size: resolvedSize }\n      };\n    }\n    return {\n      hideAdditionalHelp: true,\n      helperSettings: { ...poHelperComponent, size: resolvedSize }\n    };\n  }\n  return defaulWithoutLabel;\n}\n\n/** Atualiza o estado do tooltip baseado na propriedade scrollWidth e clientWidth do labelElement.\n * @param isTooltipActive Indica se o tooltip já está ativo\n * @param labelElement ElementRef do label que será verificado se está com ellipsis\n * @returns boolean indicando se o tooltip deve ser ativado ou desativado\n */\nexport function updateTooltip(isTooltipActive: boolean, labelElement: ElementRef<HTMLElement>): boolean {\n  const el = getMeasurableEl(labelElement);\n  if (!el) return false;\n\n  const isEllipsed = el.scrollWidth > el.clientWidth;\n  if (isTooltipActive !== isEllipsed) {\n    return isEllipsed;\n  } else {\n    return isTooltipActive;\n  }\n}\n\n/**\n * Retorna o elemento label que deve ser medido para verificar se está com ellipsis.\n * @param labelElement ElementRef do label que será verificado se está com ellipsis\n * @returns O elemento que deve ser medido para verificar se está com ellipsis.\n */\nexport function getMeasurableEl(labelElement: ElementRef<HTMLElement>): Element {\n  const host = labelElement?.nativeElement;\n  if (!host) return null;\n  const inner = host.querySelector('.po-label, label, .po-label-title, .po-field-title .po-checkbox-label');\n  return inner ?? host;\n}\n\n/**\n * Retorna a cor do texto baseada no tema atual.\n * @param type Tipo de cor do texto, pode ser 'lightest' ou 'darkest'.\n * @returns Valor da cor no formato definido pela propriedade customizada CSS (por exemplo, '#ffffff', 'rgb(255,255,255)').\n */\nexport function getTextColor(type: 'lightest' | 'darkest') {\n  const isLightTheme = !document.documentElement.className.includes('-dark-');\n  let token = '';\n\n  if (type === 'lightest') {\n    token = isLightTheme ? '--color-neutral-light-00' : '--color-neutral-dark-95';\n  } else {\n    token = isLightTheme ? '--color-neutral-dark-95' : '--color-neutral-light-00';\n  }\n\n  return getComputedStyle(document.documentElement).getPropertyValue(token);\n}\n\n/**\n * Retorna a cor do texto baseada na cor de fundo informada.\n * @param backgroundColor Cor de fundo em formato 'rgb(r,g,b)' ou 'rgba(r,g,b,a)'.\n * @returns Valor da cor do texto (por exemplo, '#ffffff', 'rgb(255,255,255)') baseado no brilho percebido da cor de fundo usando a fórmula do espaço de cor YIQ.\n */\nexport function getTextColorFromBackgroundColor(backgroundColor: string): string {\n  const rgbValues = backgroundColor\n    .replaceAll(/(?:^rgba?\\(|\\s+|\\)$)/g, '')\n    .split(',')\n    .map(value => Number.parseInt(value, 10));\n\n  const r = rgbValues[0];\n  const g = rgbValues[1];\n  const b = rgbValues[2];\n\n  const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n\n  return yiq >= 128 ? getTextColor('darkest') : getTextColor('lightest');\n}\n\n/**\n * Retorna o tamanho do ícone de loading baseado no tamanho do field.\n *\n * @param size Tamanho do campo (`small`, `medium` ou outros valores).\n * @returns Tamanho do ícone de loading correspondente:\n * - `small` → `xs`\n * - `medium` → `sm`\n * - qualquer outro valor → `sm`\n */\nexport function mapInputSizeToLoadingIcon(size?: string): string {\n  const sizeMap: Record<string, string> = {\n    small: 'xs',\n    medium: 'sm'\n  };\n\n  return sizeMap[size ?? ''] || 'sm';\n}\n\nexport const PoUtils = {\n  capitalizeFirstLetter,\n  convertDateToISODate,\n  convertDateToISOExtended,\n  convertImageToBase64,\n  convertToBoolean,\n  convertToInt,\n  formatYear,\n  getA11yLevel,\n  getBrowserLanguage,\n  getDensityMode,\n  getShortBrowserLanguage,\n  isExternalLink,\n  isFirefox,\n  isIE,\n  isIEOrEdge,\n  isKeyCodeEnter,\n  isLanguage,\n  isMobile,\n  isTypeof,\n  openExternalLink,\n  reloadCurrentPage,\n  removeDuplicatedOptions,\n  removeDuplicatedOptionsWithFieldValue,\n  removeUndefinedAndNullOptions,\n  removeUndefinedAndNullOptionsWithFieldValue,\n  replaceFormatSeparator,\n  setYearFrom0To100,\n  sortOptionsByProperty,\n  sortValues,\n  uuid,\n  validateDateRange\n};\n\nexport const PO_TABLE_ROW_HEIGHT_BY_SPACING = {\n  [PoTableColumnSpacing.ExtraSmall]: 32,\n  [PoTableColumnSpacing.Small]: 40,\n  [PoTableColumnSpacing.Medium]: 48,\n  [PoTableColumnSpacing.Large]: 56\n};\n","import { Injectable } from '@angular/core';\n\nimport { getShortLanguage, PoUtils } from '../../utils/util';\nimport {\n  poLocaleDecimalSeparatorList,\n  poLocaleDefault,\n  poLocales,\n  poLocaleThousandSeparatorList,\n  poLocaleDateSeparatorList\n} from './po-language.constant';\n\nconst poDefaultLanguage = 'PO_DEFAULT_LANGUAGE';\nconst poLocaleKey = 'PO_USER_LOCALE';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Serviço responsável por gerenciar as linguagens da aplicação.\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoLanguageService {\n  constructor() {}\n\n  set languageDefault(language: string) {\n    if (language && PoUtils.isLanguage(language)) {\n      localStorage.setItem(poDefaultLanguage, language);\n    }\n  }\n\n  get languageDefault(): string {\n    return localStorage.getItem(poDefaultLanguage);\n  }\n\n  /**\n   * @description\n   *\n   * Método responsável por retornar o idioma ativo.\n   *\n   * A busca do idioma será feita na seguinte ordem:\n   *\n   *   1 - o idioma que foi armazenado no *localStorage*, através do método `setLanguage()` utilizado pelo i18n.\n   *\n   *   2 - o valor inserido nas configurações do módulo do i18n através do parâmetro `config`, sendo o idioma inserido\n   * na propriedade `language` da interface `PoI18nConfigDefault`.\n   *\n   *   3 - o idioma do navegador utilizado.\n   *\n   * > Caso o idioma do navegador não seja suportado pelo PO (`pt`, `en`, `es` ou `ru`), será retornado valor `pt`.\n   *\n   * **Retorno:** `string` com a sigla do idioma ativo.\n   */\n  getLanguage(): string {\n    const language = localStorage.getItem(poLocaleKey) || this.languageDefault || PoUtils.getBrowserLanguage();\n    return language && language.toLowerCase();\n  }\n\n  /**\n   * @description\n   *\n   * Método responsável por retornar o idioma *default* da aplicação definido nas configurações do módulo do i18n através\n   * do parâmetro `config`.\n   *\n   * **Retorno:** `string` com a sigla do idioma *default*.\n   */\n  getLanguageDefault(): string {\n    return this.languageDefault;\n  }\n\n  /**\n   * @description\n   *\n   * Método responsável por retornar a abreviação do idioma ativo na aplicação.\n   *\n   * @default `pt`\n   *\n   * **Retorno:** `string` com a sigla abreviada do idioma ativo.\n   */\n  getShortLanguage(): string {\n    const language = this.getLanguage();\n    const shortLanguage = getShortLanguage(language);\n\n    return poLocales.includes(shortLanguage) ? shortLanguage : poLocaleDefault;\n  }\n\n  /**\n   * @description\n   *\n   * Método para salvar o idioma da aplicação no *storage*, utilizado pelo serviço do i18n.\n   *\n   * > Ao definir um idioma por este método, todos os módulos da aplicação utilizarão o idioma definido.\n   *\n   * @param language sigla do idioma.\n   *\n   * Esta sigla deve ser composta por duas letras representando o idioma,\n   * podendo ser adicionado outras duas letras representando o país, por exemplo: `pt`, `pt-BR`, `pt-br`, `en` ou `en-US`.\n   *\n   * > Caso seja informado um valor diferente deste padrão, o mesmo será ignorado.\n   */\n  setLanguage(language: string): void {\n    if (!PoUtils.isLanguage(language)) {\n      return;\n    }\n\n    localStorage.setItem(poLocaleKey, language.toLowerCase());\n  }\n\n  /**\n   * @description\n   *\n   * Método que define o idioma configurado a partir do parâmetro `config` utilizado pelo módulo do i18n.\n   *\n   * > Ao definir um idioma por este serviço, apenas o módulo do i18n referente a esta configuração utilizará o idioma definido.\n   *\n   * @param language sigla do idioma.\n   *\n   * Esta sigla deve ser composta por duas letras representando o idioma,\n   * podendo ser adicionado outras duas letras representando o país, por exemplo: `pt`, `pt-BR`, `pt-br`, `en` ou `en-US`.\n   *\n   * > Caso seja informado um valor diferente deste padrão, o mesmo será ignorado.\n   */\n  setLanguageDefault(language: string): void {\n    this.languageDefault = language;\n  }\n\n  /**\n   * @description\n   *\n   * Método que retorna o separador\n   *\n   * @param language sigla do idioma.\n   *\n   * Esta sigla deve ser composta por duas letras representando o idioma\n   *\n   * > Caso seja informado um valor diferente deste padrão, o mesmo será ignorado.\n   */\n  getNumberSeparators(language?: string) {\n    language = language || this.getShortLanguage();\n    const decimal = poLocaleDecimalSeparatorList.find(separator => separator.language === language) ?? {};\n    const thousand = poLocaleThousandSeparatorList.find(separator => separator.language === language) ?? {};\n    const decimalSeparator = decimal.separator ?? ',';\n    const thousandSeparator = thousand.separator ?? '.';\n\n    return { decimalSeparator, thousandSeparator };\n  }\n\n  /**\n   * @description\n   *\n   * Método que retorna o separador de datas\n   *\n   * @param language sigla do idioma.\n   *\n   * Esta sigla deve ser composta por duas letras representando o idioma\n   *\n   * > Caso seja informado um valor diferente deste padrão, o mesmo será ignorado.\n   */\n  getDateSeparator(language?: string) {\n    language = language || this.getShortLanguage();\n    const separatorChar = poLocaleDateSeparatorList.find(separator => separator.locale === language) ?? {};\n    return separatorChar.separator ?? '/';\n  }\n}\n","/**\n * @docsPrivate\n *\n * @description\n *\n * Define os ícones disponíveis para o `po-tag`.\n */\nexport enum PoTagIcon {\n  /** Ícone fechar. */\n  Danger = 'ICON_CLOSE',\n\n  /** Ícone de informação. */\n  Info = 'ICON_INFO',\n\n  /** Ícone que representa confirmação. */\n  Success = 'ICON_OK',\n\n  /** Ícone com ponto de exclamação. */\n  Warning = 'ICON_WARNING'\n}\n","/**\n * Enum que define as 35 Caption Tag Colors disponíveis para uso nos componentes.\n *\n * Estas cores são organizadas em 7 famílias (tag-01 a tag-07), cada uma com 5 variantes\n * (lighter, light, base, dark, darker), totalizando 35 cores.\n */\nexport enum PoCaptionTagColorEnum {\n  CaptionTag01 = 'caption-tag-01',\n  CaptionTag02 = 'caption-tag-02',\n  CaptionTag03 = 'caption-tag-03',\n  CaptionTag04 = 'caption-tag-04',\n  CaptionTag05 = 'caption-tag-05',\n  CaptionTag06 = 'caption-tag-06',\n  CaptionTag07 = 'caption-tag-07',\n  CaptionTag08 = 'caption-tag-08',\n  CaptionTag09 = 'caption-tag-09',\n  CaptionTag10 = 'caption-tag-10',\n  CaptionTag11 = 'caption-tag-11',\n  CaptionTag12 = 'caption-tag-12',\n  CaptionTag13 = 'caption-tag-13',\n  CaptionTag14 = 'caption-tag-14',\n  CaptionTag15 = 'caption-tag-15',\n  CaptionTag16 = 'caption-tag-16',\n  CaptionTag17 = 'caption-tag-17',\n  CaptionTag18 = 'caption-tag-18',\n  CaptionTag19 = 'caption-tag-19',\n  CaptionTag20 = 'caption-tag-20',\n  CaptionTag21 = 'caption-tag-21',\n  CaptionTag22 = 'caption-tag-22',\n  CaptionTag23 = 'caption-tag-23',\n  CaptionTag24 = 'caption-tag-24',\n  CaptionTag25 = 'caption-tag-25',\n  CaptionTag26 = 'caption-tag-26',\n  CaptionTag27 = 'caption-tag-27',\n  CaptionTag28 = 'caption-tag-28',\n  CaptionTag29 = 'caption-tag-29',\n  CaptionTag30 = 'caption-tag-30',\n  CaptionTag31 = 'caption-tag-31',\n  CaptionTag32 = 'caption-tag-32',\n  CaptionTag33 = 'caption-tag-33',\n  CaptionTag34 = 'caption-tag-34',\n  CaptionTag35 = 'caption-tag-35'\n}\n","/**\n * @docsPrivate\n *\n * @description\n *\n * Enum que contém paleta de 12 cores.\n */\nexport enum PoColorPaletteEnum {\n  /** #0c9abe */\n  Color01 = 'color-01',\n\n  /** #2c85c8 */\n  Color02 = 'color-02',\n\n  /** #2c43c8 */\n  Color03 = 'color-03',\n\n  /** #5843c8 */\n  Color04 = 'color-04',\n\n  /** #ab43c8 */\n  Color05 = 'color-05',\n\n  /** #ab4391 */\n  Color06 = 'color-06',\n\n  /** #c64840 */\n  Color07 = 'color-07',\n\n  /** #ea9b3e */\n  Color08 = 'color-08',\n\n  /** #abc249 */\n  Color09 = 'color-09',\n\n  /** #56b96b */\n  Color10 = 'color-10',\n\n  /** #00b28e */\n  Color11 = 'color-11',\n\n  /** #06a6a5 */\n  Color12 = 'color-12'\n}\n","import { Directive, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\n\nimport { PoCaptionTagColorEnum } from '../../enums/po-caption-tag-color.enum';\nimport { PoColorPaletteEnum } from '../../enums/po-color-palette.enum';\nimport { convertToBoolean } from '../../utils/util';\n\nimport { PoLanguageService } from './../../services/po-language/po-language.service';\nimport { poLocaleDefault } from '../../services/po-language/po-language.constant';\nimport { PoTagOrientation } from './enums/po-tag-orientation.enum';\nimport { PoTagType } from './enums/po-tag-type.enum';\nimport { PoTagItem } from './interfaces/po-tag-item.interface';\nimport { PoTagLiterals } from './interfaces/po-tag-literals.interface';\n\nconst poTagColors = [...(<any>Object).values(PoColorPaletteEnum), ...(<any>Object).values(PoCaptionTagColorEnum)];\nconst poTagTextColors = (<any>Object).values(PoColorPaletteEnum);\nconst poTagOrientationDefault = PoTagOrientation.Vertical;\n\nexport const PoTagLiteralsDefault = {\n  en: {\n    remove: 'Clear'\n  },\n  es: {\n    remove: 'Eliminar'\n  },\n  pt: {\n    remove: 'Remover'\n  },\n  ru: {\n    remove: 'удалять'\n  }\n};\n\n/**\n * @description\n *\n * Este componente permite exibir um valor em forma de um marcador colorido, sendo possível definir uma legenda e realizar customizações\n * na cor, iconografia e tipo.\n *\n * Além disso, é possível definir uma ação que será executada tanto ao *click* quanto através das teclas *enter/space* enquanto navega\n * utilizando a tecla *tab*.\n *\n * Seu uso é recomendado para informações que necessitem de destaque em forma de marcação.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                    |\n * |----------------------------------------|-------------------------------------------------------|-------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                 |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                      |\n * | `--font-size`                          | Tamanho da fonte                                      | `var(--font-size-sm)`                           |\n * | `--line-height`                        | Tamanho da label                                      | `var(---line-height-sm)`                        |\n * | `--border-radius`                      | Contém o valor do raio dos cantos do elemento&nbsp;   | `var(--border-radius-pill)`                     |\n * | `--gap`                                | Espaçamento entre o label e o value                   | `var(--spacing-xs)`                             |\n * | **Neutral**                            |                                                       |                                                 |\n * | `--color-neutral`                      | Cor principal no estado neutral                       | `var(--color-neutral-light-10)`                 |\n * | `--text-color-positive`                | Cor do texto no estado neutral                        | `var(--color-neutral-dark-80)`                  |\n * | **Positive**                           |                                                       |                                                 |\n * | `--color-positive`                     | Cor principal no estado positive                      | `var(--color-feedback-positive-lightest)`       |\n * | `--text-color-positive`                | Cor do texto no estado positive                       | `var(--color-feedback-positive-dark)`           |\n * | **Negative**                           |                                                       |                                                 |\n * | `--color-negative`                     | Cor principal no estado danger                        | `var(--color-feedback-negative-lightest)`       |\n * | `--text-color-negative`                | Cor do texto no estado danger                         | `var(--color-feedback-negative-darker)`         |\n * | **Warning**                            |                                                       |                                                 |\n * | `--color-tag-warning`                  | Cor principal no estado warning                       | `var(--color-feedback-warning-lightest)`        |\n * | `--text-color-warning`                 | Cor do texto no estado warning                        | `var(--color-feedback-warning-darkest)`         |\n * | **Info**                               |                                                       |                                                 |\n * | `--color-info`                         | Cor principal no estado info                          | `var(--color-feedback-info-lightest)`           |\n * | `--text-color-info`                    | Cor do texto no estado info                           | `var(--color-feedback-info-dark)`               |\n * | **Removable**                          |                                                       |                                                 |\n * | `--color`                              | Cor principal quando removable                        | `var(--color-brand-01-lightest)`                |\n * | `--border-color`                       | Cor de borda quando removable &nbsp;                  | `var(--color-brand-01-lighter)`                 |\n * | `--color-icon`                         | Cor do ícone quando removable &nbsp;                  | `var(--color-action-default)`                   |\n * | `--text-color`                         | Cor do texto quando removable &nbsp;                  | `var(--color-neutral-dark-80)`                  |\n * | `--color-hover`                        | Cor do hover no estado removable &nbsp;               | `var(--color-brand-01-lighter)`                 |\n * | **Focused**                            |                                                       |                                                 |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                     | `var(--color-action-focus)`                     |\n * | **Disabled**                           |                                                       |                                                 |\n * | `--color-disabled`                     | Cor principal no estado disabled                      | `var(--color-neutral-light-20)`                 |\n * | `--border-color-disabled`              | Cor da borda no estado disabled &nbsp;                | `var(--color-action-disabled)`                  |\n * | `--color-icon-disabled`                | Cor do icone no estado disabled &nbsp;                | `var(--color-action-disabled)`                  |\n * | `--text-color-disabled`                | Cor do texto no estado disabled &nbsp;                | `var(--color-neutral-mid-60)`                   |\n *\n */\n@Directive()\nexport class PoTagBaseComponent {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define uma legenda que será exibida acima ou ao lado da *tag*, de acordo com a `p-orientation`.\n   */\n  @Input('p-label') label?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a opção de remover a tag\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-removable', transform: convertToBoolean }) removable: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita o `po-tag` e não permite que o usuário interaja com o mesmo.\n   * > A propriedade `p-disabled` somente terá efeito caso a propriedade `p-removable` esteja definida como `true`.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-disabled', transform: convertToBoolean }) disabled: boolean = false;\n\n  /** Texto da tag. */\n  @Input('p-value') value: string;\n\n  //input interno para o multiselect\n  @Input('p-append-in-body') appendInBody: boolean;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Ação que será executada ao clicar sobre o `po-tag` e que receberá como parâmetro um objeto contendo o seu valor e tipo.\n   *\n   * O evento de click só funciona se a tag não for removível.\n   */\n  @Output('p-click') click: EventEmitter<any> = new EventEmitter<PoTagItem>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Ação que sera executada quando clicar sobre o ícone de remover no `po-tag`\n   */\n  @Output('p-close') remove: EventEmitter<any> = new EventEmitter<any>();\n\n  public readonly poTagOrientation = PoTagOrientation;\n  public customColor;\n  public customTextColor;\n  private _color?: string;\n  private _textColor?: string;\n  private _icon?: boolean | string | TemplateRef<void>;\n  private _orientation?: PoTagOrientation = poTagOrientationDefault;\n  private _type?: PoTagType;\n  private _literals: PoTagLiterals;\n  private readonly language: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Determina a cor da tag. As maneiras de customizar as cores são:\n   * - Hexadeximal, por exemplo `#c64840`;\n   * - RGB, como `rgb(0, 0, 165)`;\n   * - O nome da cor, por exemplo `blue`;\n   * - Usando uma das cores do tema do PO:\n   * Valores válidos:\n   *   - <span class=\"dot po-color-01\"></span> `color-01`\n   *   - <span class=\"dot po-color-02\"></span> `color-02`\n   *   - <span class=\"dot po-color-03\"></span> `color-03`\n   *   - <span class=\"dot po-color-04\"></span> `color-04`\n   *   - <span class=\"dot po-color-05\"></span> `color-05`\n   *   - <span class=\"dot po-color-06\"></span> `color-06`\n   *   - <span class=\"dot po-color-07\"></span> `color-07`\n   *   - <span class=\"dot po-color-08\"></span> `color-08`\n   *   - <span class=\"dot po-color-09\"></span> `color-09`\n   *   - <span class=\"dot po-color-10\"></span> `color-10`\n   *   - <span class=\"dot po-color-11\"></span> `color-11`\n   *   - <span class=\"dot po-color-12\"></span> `color-12`\n   *\n   * > Também é possível utilizar as 35 cores da paleta **Caption Tag Colors**:\n   *\n   *   - <span class=\"dot po-caption-tag-01\"></span> `caption-tag-01` <span class=\"dot po-caption-tag-02\"></span> `caption-tag-02` <span class=\"dot po-caption-tag-03\"></span> `caption-tag-03` <span class=\"dot po-caption-tag-04\"></span> `caption-tag-04` <span class=\"dot po-caption-tag-05\"></span> `caption-tag-05`\n   *   - <span class=\"dot po-caption-tag-06\"></span> `caption-tag-06` <span class=\"dot po-caption-tag-07\"></span> `caption-tag-07` <span class=\"dot po-caption-tag-08\"></span> `caption-tag-08` <span class=\"dot po-caption-tag-09\"></span> `caption-tag-09` <span class=\"dot po-caption-tag-10\"></span> `caption-tag-10`\n   *   - <span class=\"dot po-caption-tag-11\"></span> `caption-tag-11` <span class=\"dot po-caption-tag-12\"></span> `caption-tag-12` <span class=\"dot po-caption-tag-13\"></span> `caption-tag-13` <span class=\"dot po-caption-tag-14\"></span> `caption-tag-14` <span class=\"dot po-caption-tag-15\"></span> `caption-tag-15`\n   *   - <span class=\"dot po-caption-tag-16\"></span> `caption-tag-16` <span class=\"dot po-caption-tag-17\"></span> `caption-tag-17` <span class=\"dot po-caption-tag-18\"></span> `caption-tag-18` <span class=\"dot po-caption-tag-19\"></span> `caption-tag-19` <span class=\"dot po-caption-tag-20\"></span> `caption-tag-20`\n   *   - <span class=\"dot po-caption-tag-21\"></span> `caption-tag-21` <span class=\"dot po-caption-tag-22\"></span> `caption-tag-22` <span class=\"dot po-caption-tag-23\"></span> `caption-tag-23` <span class=\"dot po-caption-tag-24\"></span> `caption-tag-24` <span class=\"dot po-caption-tag-25\"></span> `caption-tag-25`\n   *   - <span class=\"dot po-caption-tag-26\"></span> `caption-tag-26` <span class=\"dot po-caption-tag-27\"></span> `caption-tag-27` <span class=\"dot po-caption-tag-28\"></span> `caption-tag-28` <span class=\"dot po-caption-tag-29\"></span> `caption-tag-29` <span class=\"dot po-caption-tag-30\"></span> `caption-tag-30`\n   *   - <span class=\"dot po-caption-tag-31\"></span> `caption-tag-31` <span class=\"dot po-caption-tag-32\"></span> `caption-tag-32` <span class=\"dot po-caption-tag-33\"></span> `caption-tag-33` <span class=\"dot po-caption-tag-34\"></span> `caption-tag-34` <span class=\"dot po-caption-tag-35\"></span> `caption-tag-35`\n   *\n   * Exemplo de uso:\n   * ```\n   * <po-tag p-color=\"caption-tag-15\" p-value=\"Status\"></po-tag>\n   * ```\n   *\n   * - Para uma melhor acessibilidade no uso do componente é recomendável utilizar cores com um melhor contraste em relação ao background;\n   * - Para as cores legacy (`color-01` a `color-12`) e cores customizadas, o componente ajusta automaticamente a cor do texto para garantir legibilidade.\n   * - Para as cores **Caption Tag Colors** (`caption-tag-01` a `caption-tag-35`), a cor do texto é fixa e definida via token CSS, não sendo possível alterá-la via `p-text-color`.\n   *\n   * > **Atenção:** A propriedade `p-type` sobrepõe esta definição.\n   */\n  @Input('p-color') set color(value: string) {\n    this._color = poTagColors.includes(value) ? value : undefined;\n    if (this._color === undefined) {\n      CSS.supports('color', value) ? (this.customColor = value) : (this.customColor = undefined);\n    }\n  }\n\n  get color(): string {\n    return this._color;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Determina a cor do texto da tag. As maneiras de customizar as cores são:\n   * - Hexadeximal, por exemplo `#c64840`;\n   * - RGB, como `rgb(0, 0, 165)`;\n   * - O nome da cor, por exemplo `blue`;\n   * - Usando uma das cores do tema do PO:\n   * Valores válidos:\n   *   - <span class=\"dot po-color-01\"></span> `color-01`\n   *   - <span class=\"dot po-color-02\"></span> `color-02`\n   *   - <span class=\"dot po-color-03\"></span> `color-03`\n   *   - <span class=\"dot po-color-04\"></span> `color-04`\n   *   - <span class=\"dot po-color-05\"></span> `color-05`\n   *   - <span class=\"dot po-color-06\"></span> `color-06`\n   *   - <span class=\"dot po-color-07\"></span> `color-07`\n   *   - <span class=\"dot po-color-08\"></span> `color-08`\n   *   - <span class=\"dot po-color-09\"></span> `color-09`\n   *   - <span class=\"dot po-color-10\"></span> `color-10`\n   *   - <span class=\"dot po-color-11\"></span> `color-11`\n   *   - <span class=\"dot po-color-12\"></span> `color-12`\n   *\n   * - Para uma melhor acessibilidade no uso do componente é recomendável utilizar cores com um melhor contraste em relação ao background.\n   *\n   * > **Atenção:** A propriedade `p-type` sobrepõe esta definição.\n   *\n   * > **Atenção:** As cores da paleta **Caption Tag Colors** (`caption-tag-01` a `caption-tag-35`) não são aceitas nesta propriedade,\n   * pois possuem cor de texto fixa definida via token CSS.\n   */\n  @Input('p-text-color') set textColor(value: string) {\n    this._textColor = poTagTextColors.includes(value) ? value : undefined;\n    if (this._textColor === undefined) {\n      CSS.supports('color', value) ? (this.customTextColor = value) : (this.customTextColor = undefined);\n    }\n  }\n\n  get textColor(): string {\n    return this._textColor;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define ou ativa um ícone que será exibido ao lado do valor da *tag*.\n   *\n   * Quando `p-type` estiver definida, basta informar um valor igual a `true` para que o ícone seja exibido conforme descrições abaixo:\n   * - <span class=\"an an-check\"></span> - `success`\n   * - <span class=\"an an-warning-circle\"></span> - `warning`\n   * - <span class=\"an an-x\"></span> - `danger`\n   * - <span class=\"an an-info\"></span> - `info`\n   *\n   * Também É possível usar qualquer um dos ícones da [Biblioteca de ícones](https://po-ui.io/icons). conforme exemplo abaixo:\n   * ```\n   * <po-tag p-icon=\"an an-user\" p-value=\"PO Tag\"></po-tag>\n   * ```\n   * como também utilizar outras fontes de ícones, por exemplo a biblioteca *Font Awesome*, da seguinte forma:\n   * ```\n   * <po-tag p-icon=\"fa fa-podcast\" p-value=\"PO Tag\"></po-button>\n   * ```\n   * Outra opção seria a customização do ícone através do `TemplateRef`, conforme exemplo abaixo:\n   * ```\n   * <po-tag [p-icon]=\"template\" p-value=\"Tag template ionic\"></po-button>\n   *\n   * <ng-template #template>\n   *  <ion-icon style=\"font-size: inherit\" name=\"heart\"></ion-icon>\n   * </ng-template>\n   * ```\n   * > Para o ícone enquadrar corretamente, deve-se utilizar `font-size: inherit` caso o ícone utilizado não aplique-o.\n   *\n   * @default `false`\n   */\n  @Input('p-icon') set icon(value: boolean | string | TemplateRef<void>) {\n    if (this.type && !this.forceIcon) {\n      this._icon = convertToBoolean(value);\n    } else {\n      this._icon = value;\n    }\n  }\n\n  get icon() {\n    return this._icon;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o *layout* de exibição.\n   *\n   * @default `vertical`\n   */\n  @Input('p-orientation') set orientation(value: PoTagOrientation) {\n    this._orientation = (<any>Object).values(PoTagOrientation).includes(value) ? value : poTagOrientationDefault;\n  }\n\n  get orientation(): PoTagOrientation {\n    return this._orientation;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tipo da *tag*.\n   *\n   * Valores válidos:\n   *  - `success`: cor verde utilizada para simbolizar sucesso ou êxito.\n   *  - `warning`: cor amarela que representa aviso ou advertência.\n   *  - `danger`: cor vermelha para erro ou aviso crítico.\n   *  - `info`: cor azul claro que caracteriza conteúdo informativo.\n   *  - `neutral`: cor cinza claro para uso geral.\n   *\n   * > Quando esta propriedade for definida, irá sobrepor a definição de `p-color` e `p-icon` somente será exibido caso seja `true`.\n   *\n   * @default `info`\n   */\n  @Input('p-type') set type(value: PoTagType) {\n    if (!this.removable) {\n      this._type = (<any>Object).values(PoTagType).includes(value) ? value : undefined;\n    }\n  }\n\n  get type(): PoTagType {\n    return this._type;\n  }\n\n  //propriedade interna para forçar icone mesmo com tipo definido\n  @Input({ alias: 'p-force-icon', transform: convertToBoolean }) forceIcon = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com as literais usadas no `po-tag`.\n   *\n   *\n   * Para utilizar, basta passar a literal customizada:\n   *\n   * ```\n   *  const customLiterals: PoTagLiterals = {\n   *    remove: 'Remover itens'\n   *  };\n   * ```\n   *\n   * E para carregar as literais customizadas, basta apenas passar o objeto para o componente:\n   *\n   * ```\n   * <po-tag\n   *   [p-literals]=\"customLiterals\">\n   * </po-tag>\n   * ```\n   *\n   * > O objeto padrão de literais será traduzido de acordo com o idioma do\n   * [`PoI18nService`](/documentation/po-i18n) ou do browser.\n   */\n  @Input('p-literals') set literals(value: PoTagLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...PoTagLiteralsDefault[poLocaleDefault],\n        ...PoTagLiteralsDefault[this.language],\n        ...value\n      };\n    } else {\n      this._literals = PoTagLiteralsDefault[this.language];\n    }\n  }\n\n  get literals() {\n    return this._literals || PoTagLiteralsDefault[this.language];\n  }\n\n  constructor(languageService: PoLanguageService) {\n    this.language = languageService.getShortLanguage();\n  }\n}\n","// Array de posições.\nexport const PO_CONTROL_POSITIONS = [\n  'right',\n  'right-top',\n  'right-bottom',\n  'top',\n  'top-left',\n  'top-right',\n  'left',\n  'left-top',\n  'left-bottom',\n  'bottom',\n  'bottom-left',\n  'bottom-right'\n];\n","import { Directive, Input } from '@angular/core';\n\nimport { convertToBoolean } from '../../utils/util';\nimport { PO_CONTROL_POSITIONS } from './../../services/po-control-position/po-control-position.constants';\n\nconst PO_TOOLTIP_POSITION_DEFAULT = 'bottom';\n\n/**\n * @description\n *\n * A diretiva po-tooltip deve ser utilizada para oferecer informações adicionais quando os usuários\n * passam o mouse ou realizam o foco sobre o elemento alvo ao qual ela está atribuída.\n *\n * O conteúdo é formado por um pequeno texto que deve contribuir para uma tomada de decisão ou\n * orientação do usuário. A ativação dele pode estar em qualquer componente ou tag HTML.\n *\n * Para textos maiores ou no caso de haver a necessidade de utilizar algum outro elemento como\n * conteúdo deve-se utilizar o [**po-popover**](https://po-ui.io/documentation/po-popover?view=doc).\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                                  | Descrição                                                        | Valor Padrão                                     |\n * |----------------------------------------------|------------------------------------------------------------------|--------------------------------------------------|\n * | **Default Values**                           |                                                                  |                                                  |\n * | `--border-radius` &nbsp;                     | Contém o valor do raio dos cantos do elemento&nbsp;              | `var(--border-radius-md)`                        |\n * | `--color`                                    | Cor principal da tooltip                                         | `var(--color-neutral-dark-80)`                   |\n * | `--font-family`                              | Família tipográfica usada                                        | `var(--font-family-theme)`                       |\n * | `--text-color`                               | Cor do texto                                                     | `var(--color-neutral-light-00)`                  |\n *\n */\n\n@Directive()\nexport abstract class PoTooltipBaseDirective {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o po-tooltip será incluido no body e não dentro do elemento ao qual o tooltip foi especificado.\n   * Opção necessária para o caso de uso de tooltip em um elemento SVG.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendInBody: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Controla a exibição da seta de indicação da tooltip.\n   *\n   * Quando `true`, a seta que aponta para o elemento alvo será ocultada.\n   * Quando `false`, a seta será exibida normalmente.\n   *\n   * Essa propriedade é útil em cenários onde a seta não é necessária ou pode interferir no layout da aplicação.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-hide-arrow', transform: convertToBoolean }) hideArrow: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite a renderização de conteúdo HTML dentro da tooltip.\n   *\n   * Quando `true`, o valor da propriedade `tooltip` será interpretado como HTML,\n   * possibilitando a utilização de tags e elementos HTML dentro da tooltip.\n   * Caso `false`, o conteúdo será tratado como texto puro.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-inner-html', transform: convertToBoolean }) innerHtml: boolean = false;\n\n  protected _tooltipPosition?: string = 'bottom';\n  protected tooltipContent;\n\n  private _displayTooltip: boolean = false;\n  private _tooltip: string = '';\n\n  /**\n   * @description\n   *\n   * Habilita e atribui um texto ao po-tooltip.\n   *\n   * **Como boa prática, indica-se utilizar um texto com até 140 caracteres.**\n   */\n  @Input('p-tooltip') set tooltip(tooltip: string) {\n    this._tooltip = tooltip;\n  }\n  get tooltip() {\n    return this._tooltip;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a posição que o po-tooltip abrirá em relação ao componente alvo. Sugere-se que seja\n   * usada a orientação \"bottom\" (abaixo), porém o mesmo é flexível e será rotacionado\n   * automaticamente para se adequar a tela, caso necessário.\n   *\n   * Posições válidas:\n   * - `right`: Posiciona o po-tooltip no lado direito do componente alvo.\n   * - `right-bottom`: Posiciona o po-tooltip no lado direito inferior do componente alvo.\n   * - `right-top`: Posiciona o po-tooltip no lado direito superior do componente alvo.\n   * - `bottom`: Posiciona o po-tooltip abaixo do componente alvo.\n   * - `bottom-left`: Posiciona o po-tooltip abaixo e à esquerda do componente alvo.\n   * - `bottom-right`: Posiciona o po-tooltip abaixo e à direita do componente alvo.\n   * - `left`: Posiciona o po-tooltip no lado esquerdo do componente alvo.\n   * - `left-top`: Posiciona o po-tooltip no lado esquerdo superior do componente alvo.\n   * - `left-bottom`: Posiciona o po-tooltip no lado esquerdo inferior do componente alvo.\n   * - `top`: Posiciona o po-tooltip acima do componente alvo.\n   * - `top-right`: Posiciona o po-tooltip acima e à direita do componente alvo.\n   * - `top-left`: Posiciona o po-tooltip acima e à esquerda do componente alvo.\n   *\n   * @default bottom\n   */\n  @Input('p-tooltip-position') set tooltipPosition(position: string) {\n    this._tooltipPosition = PO_CONTROL_POSITIONS.includes(position) ? position : PO_TOOLTIP_POSITION_DEFAULT;\n  }\n  get tooltipPosition(): string {\n    return this._tooltipPosition;\n  }\n\n  @Input({ alias: 'p-display-tooltip', transform: convertToBoolean }) set displayTooltip(value: boolean) {\n    this._displayTooltip = value;\n    this._displayTooltip ? this.addTooltipAction() : this.removeTooltipAction();\n  }\n\n  get displayTooltip(): boolean {\n    return this._displayTooltip;\n  }\n\n  protected abstract addTooltipAction();\n  protected abstract removeTooltipAction();\n}\n","import { ElementRef, Injectable } from '@angular/core';\n\n/**\n * @docsPrivate\n * @description\n *\n * Serviço responsável por gerenciar as posições de um elemento em relação a um elemento alvo. Ele pode receber as\n * seguintes posições:\n *\n * - `right`: Posiciona o elemento no lado direito do componente alvo.\n * - `right-bottom`: Posiciona o elemento no lado direito inferior do componente alvo.\n * - `right-top`: Posiciona o elemento no lado direito superior do componente alvo.\n * - `bottom`: Posiciona o elemento abaixo do componente alvo.\n * - `bottom-left`: Posiciona o elemento abaixo e à esquerda do componente alvo.\n * - `bottom-right`: Posiciona o elemento abaixo e à direita do componente alvo.\n * - `left`: Posiciona o elemento no lado esquerdo do componente alvo.\n * - `left-top`: Posiciona o elemento no lado esquerdo superior do componente alvo.\n * - `left-bottom`: Posiciona o elemento no lado esquerdo inferior do componente alvo.\n * - `top`: Posiciona o elemento acima do componente alvo.\n * - `top-right`: Posiciona o elemento acima e à direita do componente alvo.\n * - `top-left`: Posiciona o elemento acima e à esquerda do componente alvo.\n *\n * Caso o elemento não caiba na tela na posição indicada ele será rotacionado automaticamente para se adequar,\n * inicialmente no lado definido como padrão e em seguida seguindo o sentido horário.\n */\n\nconst poControlPositionSidesDefault: Array<string> = [\n  'bottom',\n  'bottom-left',\n  'bottom-right',\n  'left',\n  'left-top',\n  'left-bottom',\n  'top',\n  'top-right',\n  'top-left',\n  'right',\n  'right-bottom',\n  'right-top'\n];\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoControlPositionService {\n  private arrowDirection: string;\n  private customPositions: Array<string>;\n  private readonly differenceDiagonalToWidthArrow: number = 3;\n  private element: HTMLElement;\n  private elementOffset: number;\n  private isCornerAligned: boolean;\n  private isSetElementWidth: boolean = false;\n  // offset da seta em relação ao canto do componente\n  private readonly offsetArrow: number = 12;\n  private targetElement: HTMLElement;\n\n  /**\n   * @description Ajusta a posição do elemento, caso não couber em tela irá para próxima posição.\n   *\n   * @param value posição para exibição do elemento\n   */\n  adjustPosition(value: string) {\n    const position = value || 'bottom';\n    this.elementPosition(position);\n    this.customPositions && this.customPositions.length\n      ? this.adjustCustomPosition(position)\n      : this.adjustDefaultPosition(position);\n  }\n\n  /**\n   * @description Retorna a direção da seta, conforme a posição do elemento.\n   */\n  getArrowDirection() {\n    return this.arrowDirection;\n  }\n\n  /**\n   * @description Método responsável por definir as propriedades utilizadas para exibir o elemento na posição correta.\n   *\n   * @param element elemento que será exibido\n   * @param elementOffset offSet do elemento\n   * @param targetElement elemento de onde deve partir a exibição\n   * @param customPositions posições que sobrescreve as posições padrões\n   * @param isSetElementWidth indica se deve definir o tamanho do elemento a ser exibido, caso for verdadeiro será igual do targetElement\n   * @param isCornerAligned indica se o elemento filho será alinhado nos cantos do elemento pai.\n   */\n  setElements(\n    element: ElementRef | HTMLElement,\n    elementOffset: number,\n    targetElement: ElementRef | HTMLElement,\n    customPositions?: Array<string>,\n    isSetElementWidth: boolean = false,\n    isCornerAligned: boolean = false\n  ) {\n    this.element = element instanceof ElementRef ? element.nativeElement : element;\n    this.targetElement = targetElement instanceof ElementRef ? targetElement.nativeElement : targetElement;\n\n    this.elementOffset = elementOffset;\n\n    this.customPositions = customPositions;\n    this.isSetElementWidth = isSetElementWidth;\n    this.isCornerAligned = isCornerAligned;\n  }\n\n  private adjustCustomPosition(position: string) {\n    const positionLength = this.customPositions.length;\n\n    let sidesCount = 0;\n\n    while (sidesCount++ < positionLength) {\n      if (this.overflowAllSides(position)) {\n        position = this.nextPosition(position, this.customPositions);\n        this.elementPosition(position);\n      }\n    }\n  }\n\n  private adjustDefaultPosition(position: string) {\n    const mainPositions = this.getMainPositions();\n    const mainPositionLength = mainPositions.length;\n\n    let mainSidesCount = 0;\n\n    while (mainSidesCount++ < mainPositionLength) {\n      const mainPosition = this.getMainPosition(position);\n      this.elementPosition(position);\n\n      if (this.overflowMain(mainPosition)) {\n        position = this.nextPosition(mainPosition, mainPositions);\n        continue;\n      } else if (this.overflowAllSides(position)) {\n        this.verifySubPositions(position);\n        return;\n      }\n\n      return;\n    }\n  }\n\n  private elementPosition(position: string) {\n    this.isCornerAligned ? this.setAlignedElementPosition(position) : this.setElementPosition(position);\n  }\n\n  private getMainPosition(position: string) {\n    return position.indexOf('-') > -1 ? position.substring(0, position.indexOf('-')) : position;\n  }\n\n  private getMainPositions() {\n    const defaultMainPositions = ['top', 'right', 'bottom', 'left'];\n\n    return this.customPositions && this.customPositions.length\n      ? this.getMainPositionsByCustomPositions(this.customPositions)\n      : defaultMainPositions;\n  }\n\n  private getMainPositionsByCustomPositions(customPositions: Array<string>) {\n    const mainPositions = [];\n    const customPositionsLength = customPositions.length;\n\n    for (let i = 0; i < customPositionsLength; i++) {\n      const position = customPositions[i];\n\n      const mainPosition = this.getMainPosition(position);\n\n      if (!mainPositions.includes(mainPosition)) {\n        mainPositions.push(mainPosition);\n      }\n    }\n\n    return mainPositions;\n  }\n\n  private getOverflows() {\n    const sizesAndPositions = this.getSizesAndPositions();\n\n    return {\n      right: sizesAndPositions.element.right > sizesAndPositions.window.innerWidth,\n      top: sizesAndPositions.element.top <= 0,\n      left: sizesAndPositions.element.left <= 0,\n      bottom: sizesAndPositions.element.bottom > sizesAndPositions.window.innerHeight\n    };\n  }\n\n  private getSizesAndPositions() {\n    return {\n      window: {\n        scrollY: window.scrollY,\n        scrollX: window.scrollX,\n        innerWidth: window.innerWidth,\n        innerHeight: window.innerHeight\n      },\n      element: this.element?.getBoundingClientRect(),\n      target: this.targetElement ? this.targetElement.getBoundingClientRect() : { top: 0, bottom: 0, right: 0, left: 0 }\n    };\n  }\n\n  private nextPosition(position: string, positions: Array<string> = []): string {\n    const index = positions.indexOf(position);\n    const nextIndex = index + 1;\n\n    if (index > -1 && nextIndex < positions.length) {\n      return positions[nextIndex];\n    } else {\n      return positions[0];\n    }\n  }\n\n  private overflowAllSides(position: string) {\n    const overflows = this.getOverflows();\n\n    switch (position) {\n      case 'top':\n        return overflows.top || overflows.right || overflows.left;\n      case 'top-right':\n        return overflows.top || overflows.right || overflows.left;\n      case 'top-left':\n        return overflows.top || overflows.left || overflows.right;\n      case 'right':\n        return overflows.right || overflows.top || overflows.bottom;\n      case 'right-top':\n        return overflows.right || overflows.top;\n      case 'right-bottom':\n        return overflows.right || overflows.bottom;\n      case 'bottom':\n        return overflows.bottom || overflows.right || overflows.left;\n      case 'bottom-right':\n        return overflows.bottom || overflows.right || overflows.left;\n      case 'bottom-left':\n        return overflows.bottom || overflows.left || overflows.right;\n      case 'left':\n        return overflows.left || overflows.top || overflows.bottom;\n      case 'left-top':\n        return overflows.left || overflows.top;\n      case 'left-bottom':\n        return overflows.left || overflows.bottom;\n    }\n  }\n\n  private overflowMain(position: string) {\n    const overflows = this.getOverflows();\n\n    switch (position) {\n      case 'top':\n        return overflows.top;\n      case 'right':\n        return overflows.right;\n      case 'bottom':\n        return overflows.bottom;\n      case 'left':\n        return overflows.left;\n    }\n  }\n\n  private setAlignedArrowDirection(elementPosition: string) {\n    switch (elementPosition) {\n      case 'top-left':\n        return 'bottom-left';\n      case 'top-right':\n        return 'bottom-right';\n      case 'bottom-right':\n        return 'top-right';\n      case 'bottom-left':\n        return 'top-left';\n    }\n  }\n\n  private setAlignedBottomPositions(displacement: number, sizesAndPositions) {\n    this.element.style.top = sizesAndPositions.target.bottom + this.elementOffset + 'px';\n    this.element.style.left = sizesAndPositions.target.left - displacement + 'px';\n  }\n\n  private setAlignedElementPosition(position: string) {\n    this.setElementWidth();\n\n    const sizesAndPositions: any = this.getSizesAndPositions();\n\n    switch (position) {\n      case 'bottom-left':\n        this.setAlignedBottomPositions(0, sizesAndPositions);\n        break;\n      case 'bottom-right':\n        this.setAlignedBottomPositions(\n          sizesAndPositions.element.width - sizesAndPositions.target.width,\n          sizesAndPositions\n        );\n        break;\n      case 'top-left':\n        this.setAlignedTopPositions(0, sizesAndPositions);\n        break;\n      case 'top-right':\n        this.setAlignedTopPositions(\n          sizesAndPositions.element.width - sizesAndPositions.target.width,\n          sizesAndPositions\n        );\n        break;\n    }\n\n    this.arrowDirection = this.setAlignedArrowDirection(position);\n  }\n\n  private setAlignedTopPositions(displacement: number, sizesAndPositions) {\n    this.element.style.top =\n      sizesAndPositions.target.top - sizesAndPositions.element.height - this.elementOffset + 'px';\n    this.element.style.left = sizesAndPositions.target.left - displacement + 'px';\n  }\n\n  private setArrowDirection(elementPosition: string) {\n    switch (elementPosition) {\n      case 'top':\n        return 'bottom';\n      case 'top-left':\n        return 'bottom-right';\n      case 'top-right':\n        return 'bottom-left';\n      case 'right':\n        return 'left';\n      case 'right-top':\n        return 'left-bottom';\n      case 'right-bottom':\n        return 'left-top';\n      case 'bottom':\n        return 'top';\n      case 'bottom-right':\n        return 'top-left';\n      case 'bottom-left':\n        return 'top-right';\n      case 'left':\n        return 'right';\n      case 'left-bottom':\n        return 'right-top';\n      case 'left-top':\n        return 'right-bottom';\n    }\n  }\n\n  private setBottomPositions(displacement: number, sizesAndPositions) {\n    this.element.style.top = sizesAndPositions.target.bottom + this.elementOffset + 'px';\n    this.element.style.left = sizesAndPositions.target.left + sizesAndPositions.target.width / 2 - displacement + 'px';\n  }\n\n  private setElementPosition(position: string) {\n    this.setElementWidth();\n\n    const sizesAndPositions = this.getSizesAndPositions();\n\n    switch (position) {\n      case 'top':\n        this.setTopPositions(sizesAndPositions.element.width / 2, sizesAndPositions);\n        break;\n      case 'top-left':\n        this.setTopPositions(\n          sizesAndPositions.element.width - this.offsetArrow - this.differenceDiagonalToWidthArrow,\n          sizesAndPositions\n        );\n        break;\n      case 'top-right':\n        this.setTopPositions(this.offsetArrow + this.differenceDiagonalToWidthArrow, sizesAndPositions);\n        break;\n      case 'right':\n        this.setRightPositions(sizesAndPositions.element.height / 2, sizesAndPositions);\n        break;\n      case 'right-top':\n        this.setRightPositions(\n          sizesAndPositions.element.height - this.offsetArrow - this.differenceDiagonalToWidthArrow,\n          sizesAndPositions\n        );\n        break;\n      case 'right-bottom':\n        this.setRightPositions(this.offsetArrow, sizesAndPositions);\n        break;\n      case 'bottom':\n        this.setBottomPositions(sizesAndPositions.element.width / 2, sizesAndPositions);\n        break;\n      case 'bottom-right':\n        this.setBottomPositions(this.offsetArrow + this.differenceDiagonalToWidthArrow, sizesAndPositions);\n        break;\n      case 'bottom-left':\n        this.setBottomPositions(\n          sizesAndPositions.element.width - this.offsetArrow - this.differenceDiagonalToWidthArrow,\n          sizesAndPositions\n        );\n        break;\n      case 'left':\n        this.setLeftPositions(sizesAndPositions.element.height / 2, sizesAndPositions);\n        break;\n      case 'left-bottom':\n        this.setLeftPositions(this.offsetArrow, sizesAndPositions);\n        break;\n      case 'left-top':\n        this.setLeftPositions(sizesAndPositions.element.height - this.offsetArrow, sizesAndPositions);\n        break;\n    }\n\n    this.arrowDirection = this.setArrowDirection(position);\n  }\n\n  private setElementWidth() {\n    if (this.isSetElementWidth && this.targetElement) {\n      this.element.style.width = `${this.targetElement.clientWidth}px`;\n    }\n  }\n\n  private setLeftPositions(displacement: number, sizesAndPositions) {\n    this.element.style.top = sizesAndPositions.target.top - displacement + sizesAndPositions.target.height / 2 + 'px';\n    this.element.style.left =\n      sizesAndPositions.target.left - sizesAndPositions.element.width - this.elementOffset + 'px';\n  }\n\n  private setRightPositions(displacement: number, sizesAndPositions) {\n    this.element.style.top = sizesAndPositions.target.top - displacement + sizesAndPositions.target.height / 2 + 'px';\n    this.element.style.left = sizesAndPositions.target.right + this.elementOffset + 'px';\n  }\n\n  private setTopPositions(displacement: number, sizesAndPositions) {\n    this.element.style.top =\n      sizesAndPositions.target.top - sizesAndPositions.element.height - this.elementOffset + 'px';\n    this.element.style.left = sizesAndPositions.target.left + sizesAndPositions.target.width / 2 - displacement + 'px';\n  }\n\n  private verifySubPositions(position: string) {\n    if (position.indexOf('-') > -1) {\n      position = position.substring(0, position.indexOf('-'));\n      this.elementPosition(position);\n    }\n\n    let align = 0;\n    while (align++ < 3) {\n      if (this.overflowAllSides(position)) {\n        position = this.nextPosition(position, poControlPositionSidesDefault);\n        this.elementPosition(position);\n      } else {\n        return null;\n      }\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { PoControlPositionService } from '../../services/po-control-position/po-control-position.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoTooltipControlPositionService extends PoControlPositionService {}\n","import { Directive, ElementRef, HostListener, OnInit, Renderer2, OnDestroy, SecurityContext } from '@angular/core';\n\nimport { PoTooltipBaseDirective } from './po-tooltip-base.directive';\nimport { PoTooltipControlPositionService } from './po-tooltip-control-position.service';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nconst nativeElements = ['input', 'button'];\n\n/**\n * @docsExtends PoTooltipBaseDirective\n *\n * @example\n *\n * <example name=\"po-tooltip-basic\" title=\"PO Tooltip Basic\" >\n *  <file name=\"sample-po-tooltip-basic/sample-po-tooltip-basic.component.html\"> </file>\n *  <file name=\"sample-po-tooltip-basic/sample-po-tooltip-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-tooltip-labs\" title=\"PO Tooltip Labs\" >\n *  <file name=\"sample-po-tooltip-labs/sample-po-tooltip-labs.component.html\"> </file>\n *  <file name=\"sample-po-tooltip-labs/sample-po-tooltip-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-tooltip-new-user\" title=\"PO Tooltip - New User\" >\n *  <file name=\"sample-po-tooltip-new-user/sample-po-tooltip-new-user.component.html\"> </file>\n *  <file name=\"sample-po-tooltip-new-user/sample-po-tooltip-new-user.component.ts\"> </file>\n * </example>\n *\n */\n@Directive({\n  selector: '[p-tooltip]',\n  providers: [PoTooltipControlPositionService],\n  standalone: false\n})\nexport class PoTooltipDirective extends PoTooltipBaseDirective implements OnInit, OnDestroy {\n  private arrowDirection: string;\n  private divArrow;\n  private divContent;\n  private isHidden: boolean;\n  private lastTooltipText: string;\n  private textContent;\n  private readonly tooltipOffset: number = 8;\n\n  private eventListenerFunction: () => void;\n\n  constructor(\n    private readonly elementRef: ElementRef,\n    private readonly renderer: Renderer2,\n    private readonly poControlPosition: PoTooltipControlPositionService,\n    private readonly sanitizer: DomSanitizer\n  ) {\n    super();\n  }\n\n  ngOnDestroy(): void {\n    this.hideTooltip();\n  }\n\n  ngOnInit() {\n    this.initScrollEventListenerFunction();\n  }\n\n  @HostListener('mouseenter') onMouseEnter() {\n    if (!this.displayTooltip) {\n      this.addTooltipAction();\n    }\n  }\n\n  @HostListener('mouseleave') onMouseLeave() {\n    if (!this.displayTooltip) {\n      this.removeTooltipAction();\n    }\n  }\n\n  @HostListener('click') onMouseClick() {\n    if (!this.displayTooltip) {\n      this.removeTooltipAction();\n    }\n  }\n\n  @HostListener('focusout') onFocusOut() {\n    if (!this.displayTooltip) {\n      this.removeTooltipAction();\n    }\n  }\n\n  @HostListener('focusin') onFocusIn() {\n    if (!this.displayTooltip) {\n      this.addTooltipAction();\n    }\n  }\n\n  @HostListener('keydown', ['$event']) onKeyDown(event) {\n    if (!this.displayTooltip && (event.code === 'Escape' || event.keyCode === 27)) {\n      this.removeTooltipAction();\n    }\n  }\n\n  // Controla a visibilidade do tooltip, criado para auxiliar a propriedade `p-additional-help-tooltip`.\n  toggleTooltipVisibility(show: boolean) {\n    if (!this.displayTooltip) {\n      show ? this.addTooltipAction() : this.removeTooltipAction();\n    }\n  }\n\n  protected addTooltipAction() {\n    setTimeout(() => {\n      if (this.tooltip) {\n        this.tooltipContent ? this.showTooltip() : this.createTooltip();\n\n        this.removeArrow(this.arrowDirection);\n\n        this.poControlPosition.adjustPosition(this.tooltipPosition);\n        this.arrowDirection = this.poControlPosition.getArrowDirection();\n\n        this.addArrow(this.arrowDirection);\n\n        this.lastTooltipText = this.tooltip;\n      }\n    });\n  }\n\n  protected removeTooltipAction() {\n    // necessita do timeout para conseguir adicionar \".po-invisible\", pois quando tem alguns elementos\n    // próximos com tooltips e ficar passando o mouse em cima, os mesmos não estavam ficando invisiveis.\n    setTimeout(() => {\n      if (this.appendInBody && this.tooltipContent) {\n        this.renderer.removeChild(document.body, this.tooltipContent);\n        this.tooltipContent = undefined;\n      } else {\n        this.hideTooltip();\n      }\n    });\n  }\n\n  private addArrow(arrowDirection) {\n    this.renderer.addClass(this.divArrow, `po-arrow-${arrowDirection}`);\n  }\n\n  private addScrollEventListener() {\n    window.addEventListener('scroll', this.eventListenerFunction, true);\n  }\n\n  // Monta a estrutura do tooltip\n  private createTooltip() {\n    this.tooltipContent = this.renderer.createElement('div');\n    this.renderer.addClass(this.tooltipContent, 'po-tooltip');\n\n    this.renderer.setStyle(this.tooltipContent, 'transition', 'visibility .3s, opacity .3s linear');\n    this.renderer.setStyle(this.tooltipContent, 'opacity', 0.9);\n\n    this.insertAriaLabelTooltip();\n\n    this.divArrow = this.renderer.createElement('div');\n    this.renderer.addClass(this.divArrow, 'po-tooltip-arrow');\n    if (this.hideArrow) {\n      this.renderer.setStyle(this.divArrow, 'display', 'none');\n    }\n\n    this.divContent = this.renderer.createElement('div');\n    this.renderer.addClass(this.divContent, 'po-tooltip-content');\n\n    this.textContent = this.renderer.createText(this.tooltip);\n\n    if (this.innerHtml) {\n      this.textContent = this.renderer.createText('');\n      const securityContent = this.sanitizer.sanitize(SecurityContext.HTML, this.tooltip) || '';\n      this.renderer.setProperty(this.divContent, 'innerHTML', securityContent);\n    }\n    this.renderer.appendChild(this.divContent, this.textContent);\n    this.renderer.appendChild(this.tooltipContent, this.divArrow);\n    this.renderer.appendChild(this.tooltipContent, this.divContent);\n\n    const parentTarget = this.appendInBody ? document.body : this.elementRef.nativeElement;\n    this.renderer.appendChild(parentTarget, this.tooltipContent);\n\n    this.poControlPosition.setElements(this.tooltipContent, this.tooltipOffset, this.elementRef);\n\n    this.addScrollEventListener();\n  }\n\n  private initScrollEventListenerFunction() {\n    this.eventListenerFunction = () => {\n      if (!this.isHidden) {\n        setTimeout(() => {\n          this.poControlPosition.adjustPosition(this.tooltipPosition);\n        });\n      }\n    };\n  }\n\n  private hideTooltip() {\n    if (this.tooltipContent) {\n      try {\n        this.renderer.setStyle(this.tooltipContent, 'opacity', 0);\n        this.renderer.setStyle(this.tooltipContent, 'visibility', 'hidden');\n      } catch (e) {\n        // Tolerate errors when DOM element is partially destroyed during teardown\n      }\n\n      this.isHidden = true;\n\n      this.removeScrollEventListener();\n    }\n  }\n\n  private removeArrow(arrowDirection) {\n    if (this.elementRef.nativeElement.querySelector(`.po-arrow-${arrowDirection}`)) {\n      this.renderer.removeClass(this.divArrow, `po-arrow-${arrowDirection}`);\n    }\n  }\n\n  private removeScrollEventListener() {\n    window.removeEventListener('scroll', this.eventListenerFunction, true);\n  }\n\n  private showTooltip() {\n    this.renderer.setStyle(this.tooltipContent, 'opacity', 0.9);\n    this.renderer.setStyle(this.tooltipContent, 'visibility', 'visible');\n    this.updateTextContent();\n    this.isHidden = false;\n\n    this.addScrollEventListener();\n  }\n\n  private updateTextContent() {\n    const checkRepeatedText = this.tooltip.split('\\n');\n\n    if (this.lastTooltipText !== this.tooltip && checkRepeatedText[0] !== this.lastTooltipText) {\n      this.renderer.removeChild(this.divContent, this.textContent);\n      this.textContent = this.renderer.createText(this.tooltip);\n      this.renderer.appendChild(this.divContent, this.textContent);\n      if (this.innerHtml) {\n        this.textContent = this.renderer.createText('');\n        const securityContent = this.sanitizer.sanitize(SecurityContext.HTML, this.tooltip) || '';\n        this.renderer.setProperty(this.divContent, 'innerHTML', securityContent);\n      }\n    }\n  }\n\n  private insertAriaLabelTooltip() {\n    const nativeTextContent = this.elementRef.nativeElement.textContent;\n    let targetElement = '';\n\n    nativeElements.forEach(el => {\n      if (this.elementRef.nativeElement.getElementsByTagName(el)[0] !== undefined) {\n        targetElement = el;\n      }\n    });\n\n    if (this.elementRef.nativeElement.getElementsByTagName(targetElement)[0] && this.tooltip) {\n      this.renderer.setAttribute(\n        this.elementRef.nativeElement.getElementsByTagName(targetElement)[0],\n        'aria-label',\n        nativeTextContent + ' ' + this.tooltip\n      );\n    }\n  }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, OnInit, ViewChild, inject } from '@angular/core';\nimport { PoLanguageService } from './../../services/po-language/po-language.service';\n\nimport { PoTagIcon } from './enums/po-tag-icon.enum';\nimport { PoTagType } from './enums/po-tag-type.enum';\nimport { PoTagBaseComponent } from './po-tag-base.component';\nimport { getTextColorFromBackgroundColor } from '../../utils/util';\n\nconst poTagTypeDefault = 'po-tag-' + PoTagType.Info;\n\n/**\n * @docsExtends PoTagBaseComponent\n *\n * @example\n *\n * <example name=\"po-tag-basic\" title=\"PO Tag Basic\">\n *  <file name=\"sample-po-tag-basic/sample-po-tag-basic.component.html\"> </file>\n *  <file name=\"sample-po-tag-basic/sample-po-tag-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-tag-labs\" title=\"PO Tag Labs\">\n *  <file name=\"sample-po-tag-labs/sample-po-tag-labs.component.html\"> </file>\n *  <file name=\"sample-po-tag-labs/sample-po-tag-labs.component.ts\"> </file>\n *  <file name=\"sample-po-tag-labs/sample-po-tag-labs.component.css\"> </file>\n * </example>\n *\n * <example name=\"po-tag-bank-account\" title=\"PO Tag - Bank Account\">\n *  <file name=\"sample-po-tag-bank-account/sample-po-tag-bank-account.component.html\"> </file>\n *  <file name=\"sample-po-tag-bank-account/sample-po-tag-bank-account.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-tag-caption-tag-colors\" title=\"PO Tag - Caption Tag Colors\">\n *  <file name=\"sample-po-tag-caption-tag-colors/sample-po-tag-caption-tag-colors.component.html\"> </file>\n *  <file name=\"sample-po-tag-caption-tag-colors/sample-po-tag-caption-tag-colors.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-tag',\n  templateUrl: './po-tag.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoTagComponent extends PoTagBaseComponent implements OnInit {\n  private readonly el = inject(ElementRef);\n\n  @ViewChild('tagContainer', { static: true }) tagContainer: ElementRef;\n  @ViewChild('tagClose', { static: true }) tagClose: ElementRef;\n  @ViewChild('poTag', { static: true }) poTag: ElementRef;\n\n  isClickable: boolean;\n\n  constructor() {\n    const languageService = inject(PoLanguageService);\n\n    super(languageService);\n  }\n\n  ngOnInit() {\n    this.isClickable = this.click.observers.length > 0;\n  }\n\n  get iconFromType() {\n    switch (this.type) {\n      case PoTagType.Danger:\n        return PoTagIcon.Danger;\n\n      case PoTagType.Info:\n        return PoTagIcon.Info;\n\n      case PoTagType.Success:\n        return PoTagIcon.Success;\n\n      case PoTagType.Warning:\n        return PoTagIcon.Warning;\n    }\n  }\n\n  get isCaptionTag(): boolean {\n    return this.tagColor?.startsWith('po-caption-tag-');\n  }\n\n  get tagColor() {\n    if (this.type && !this.removable) {\n      return `po-tag-${this.type}`;\n    }\n\n    if (this.color && !this.removable) {\n      return `po-${this.color}`;\n    }\n\n    if (!this.customColor && !this.removable) {\n      return poTagTypeDefault;\n    }\n  }\n\n  get tagOrientation() {\n    return this.orientation === this.poTagOrientation.Horizontal;\n  }\n\n  onClick(event = 'click') {\n    if (!this.removable && !this.disabled) {\n      const submittedTagItem = { value: this.value, type: this.type, event: event };\n      this.click.emit(submittedTagItem);\n      if (this.poTag && this.poTag.nativeElement) {\n        this.poTag.nativeElement.focus();\n      }\n    }\n  }\n\n  onClose(event = 'click') {\n    if (!this.disabled) {\n      this.onRemove();\n      this.remove.emit(event);\n    }\n  }\n\n  onKeyPressed(event) {\n    event.preventDefault();\n    event.stopPropagation();\n    this.onClick('enter');\n  }\n\n  styleTag() {\n    // Ajusta a cor do texto com base na cor de fundo computada do elemento\n    requestAnimationFrame(this.applyTextColorByContrast);\n\n    if (!this.tagColor && !this.removable) {\n      return { 'background-color': this.customColor };\n    } else {\n      return {};\n    }\n  }\n\n  private readonly applyTextColorByContrast = () => {\n    const computedStyle = getComputedStyle(this.poTag.nativeElement);\n\n    if (this.tagColor?.startsWith('po-caption-tag-')) {\n      const captionIndex = this.tagColor.replace('po-caption-tag-', '');\n      this.poTag.nativeElement.style.color = `var(--color-caption-tag-text-${captionIndex})`;\n    } else if (\n      (!this.tagColor || this.tagColor?.startsWith('po-color-')) &&\n      !this.removable &&\n      !this.textColor &&\n      computedStyle?.backgroundColor\n    ) {\n      const textColor = getTextColorFromBackgroundColor(computedStyle.backgroundColor);\n      this.poTag.nativeElement.style.color = textColor;\n    } else {\n      this.poTag.nativeElement.style.color = '';\n    }\n  };\n\n  getWidthTag() {\n    return this.tagContainer.nativeElement.offsetWidth > 155;\n  }\n\n  setAriaLabel() {\n    return this.label ? this.label + ' ' + this.literals.remove : this.value + ' ' + this.literals.remove;\n  }\n\n  private onRemove() {\n    if (!this.disabled) {\n      this.el.nativeElement.remove();\n    }\n  }\n}\n","<div class=\"po-tag-container\" [class.po-tag-container-horizontal]=\"tagOrientation\">\n  @if (label) {\n    <div class=\"po-tag-title po-text-nowrap\">\n      <span class=\"po-tag-label\">{{ tagOrientation ? label + ':' : label }}</span>\n    </div>\n  }\n\n  <div class=\"po-tag-sub-container\">\n    <div\n      #poTagWrapper\n      class=\"po-tag-wrapper\"\n      [class.po-clickable]=\"isClickable && !disabled && !removable\"\n      [attr.role]=\"isClickable && !disabled && !removable ? 'button' : ''\"\n      (keydown.enter)=\"onKeyPressed($event)\"\n      (keydown.space)=\"$event.preventDefault()\"\n      (keyup.space)=\"onKeyPressed($event)\"\n      (click)=\"onClick()\"\n      [tabindex]=\"isClickable && !removable ? 0 : -1\"\n    >\n      <div\n        #poTag\n        class=\"po-tag\"\n        [class.po-clickable]=\"isClickable && !disabled && !removable\"\n        [class.po-tag-removable]=\"removable\"\n        [class.po-tag-disabled]=\"disabled && removable\"\n        [ngClass]=\"tagColor\"\n        [ngStyle]=\"styleTag()\"\n      >\n        @if (icon && !removable) {\n          <po-icon\n            class=\"po-tag-icon\"\n            [p-icon]=\"!type || forceIcon ? icon : iconFromType\"\n            [ngStyle]=\"!type && customTextColor && !isCaptionTag ? { 'color': customTextColor } : ''\"\n          >\n          </po-icon>\n        }\n\n        <div\n          #tagContainer\n          class=\"po-tag-value\"\n          [p-append-in-body]=\"appendInBody\"\n          [p-tooltip]=\"getWidthTag() ? value : ''\"\n          p-tooltip-position=\"top\"\n        >\n          <span\n            [ngStyle]=\"!type && customTextColor && !removable && !isCaptionTag ? { 'color': customTextColor } : ''\"\n            >{{ value }}</span\n          >\n        </div>\n\n        @if (removable) {\n          <po-icon\n            #tagClose\n            p-icon=\"ICON_CLOSE\"\n            p-tooltip-position=\"top\"\n            [p-tooltip]=\"literals.remove\"\n            [p-append-in-body]=\"appendInBody\"\n            [attr.aria-label]=\"setAriaLabel()\"\n            class=\"po-tag-remove\"\n            [class.po-clickable]=\"!disabled\"\n            [tabindex]=\"!disabled ? 0 : -1\"\n            [attr.role]=\"!disabled ? 'button' : ''\"\n            (click)=\"onClose()\"\n            (keydown.enter)=\"onClose('enter')\"\n          >\n          </po-icon>\n        }\n      </div>\n    </div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoTooltipDirective } from './po-tooltip.directive';\n\n/**\n * @description\n *\n * Módulo da diretiva Po-Tooltip.\n */\n@NgModule({\n  imports: [CommonModule],\n  declarations: [PoTooltipDirective],\n  exports: [PoTooltipDirective]\n})\nexport class PoTooltipModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoIconModule } from '../po-icon/po-icon.module';\nimport { PoTooltipModule } from '../../directives/po-tooltip/index';\n\nimport { PoTagComponent } from './po-tag.component';\n\n/**\n * @description\n *\n * Módulo do componente `po-tag`.\n */\n@NgModule({\n  imports: [CommonModule, PoIconModule, PoTooltipModule],\n  declarations: [PoTagComponent],\n  exports: [PoTagComponent],\n  providers: [],\n  schemas: []\n})\nexport class PoTagModule {}\n","import { Component, Input } from '@angular/core';\nimport { animate, style, transition, trigger } from '@angular/animations';\n\n@Component({\n  selector: 'po-accordion-item-body',\n  templateUrl: 'po-accordion-item-body.component.html',\n  animations: [\n    trigger('toggleBody', [\n      transition('* => void', [style({ height: '*' }), animate(200, style({ height: 0 }))]),\n      transition('void => *', [style({ height: '0' }), animate(200, style({ height: '*' }))])\n    ])\n  ],\n  standalone: false\n})\nexport class PoAccordionItemBodyComponent {\n  @Input('p-expanded') expanded: boolean = false;\n}\n","@if (expanded) {\n  <div class=\"po-accordion-item-body\" @toggleBody>\n    <div class=\"po-accordion-item-body-content\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n}\n","import { NgModule } from '@angular/core';\n\nimport { PoLanguageService } from './po-language.service';\n\n/**\n * @description\n *\n * Módulo do serviço `po-language`.\n */\n@NgModule({\n  providers: [PoLanguageService]\n})\nexport class PoLanguageModule {}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n  inject\n} from '@angular/core';\nimport { PoLanguageService } from '../../../services/po-language';\nimport { poLocaleDefault } from '../../../services/po-language/po-language.constant';\n\n@Component({\n  selector: 'po-accordion-item-header',\n  templateUrl: 'po-accordion-item-header.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoAccordionItemHeaderComponent {\n  private readonly language: string = poLocaleDefault;\n\n  @ViewChild('accordionElement', { read: ElementRef, static: true }) accordionElement: ElementRef;\n  @ViewChild('accordionHeaderElement', { read: ElementRef, static: true }) accordionHeaderElement: ElementRef;\n\n  @Input('p-expanded') expanded: boolean = false;\n\n  @Input('p-label') label: string;\n\n  @Input('p-label-tag') labelTag: string;\n\n  @Input('p-type-tag') typeTag: string;\n\n  @Input('p-disabled') disabledItem: boolean;\n\n  @Output('p-toggle') toggle = new EventEmitter<boolean>();\n\n  constructor() {\n    const languageService = inject(PoLanguageService);\n\n    this.language = languageService.getShortLanguage();\n  }\n\n  onClick() {\n    this.expanded = !this.expanded;\n\n    this.toggle.emit(this.expanded);\n  }\n\n  getTooltip() {\n    const widthContainer = this.accordionElement.nativeElement.offsetWidth - 56;\n    const widthHeaderElement = this.accordionHeaderElement.nativeElement.offsetWidth;\n\n    if (widthHeaderElement >= widthContainer) {\n      return this.label;\n    }\n    return null;\n  }\n}\n","<div class=\"po-accordion-item-header\">\n  <button\n    #accordionElement\n    [disabled]=\"disabledItem\"\n    [attr.aria-label]=\"label\"\n    [attr.aria-expanded]=\"expanded || false\"\n    class=\"po-accordion-item-header-button po-clickable\"\n    type=\"button\"\n    (click)=\"onClick()\"\n  >\n    <div class=\"po-accordion-item-header-button-content\" [p-tooltip]=\"getTooltip()\">\n      <div #accordionHeaderElement class=\"po-text-ellipsis po-accordion-item-header-title\">{{ label }}</div>\n      @if (labelTag) {\n        <po-tag class=\"po-accordion-item-header-tag\" [p-value]=\"labelTag\" [p-type]=\"typeTag\"> </po-tag>\n      }\n    </div>\n    <po-icon p-icon=\"ICON_ARROW_DOWN\" class=\"po-accordion-item-header-icon\"></po-icon>\n  </button>\n</div>\n","import { Injectable } from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport { PoAccordionItemComponent } from '../po-accordion-item/po-accordion-item.component';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Serviço para poder notificar o componente `po-accordion` quando um `po-accordion-item` for\n * expandido/colapsado.\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoAccordionService {\n  private readonly subjectChild = new Subject<PoAccordionItemComponent>();\n\n  // Recebe o accordionItem\n  receiveFromChildAccordionClicked() {\n    return this.subjectChild.asObservable();\n  }\n\n  // Envia accordionItem colapsado/expadido do accordion\n  sendToParentAccordionItemClicked(accordionItem: PoAccordionItemComponent) {\n    this.subjectChild.next(accordionItem);\n  }\n}\n","import { Component, EventEmitter, Input, OnDestroy, Output, TemplateRef, ViewChild, inject } from '@angular/core';\nimport { Subscription, filter } from 'rxjs';\n\nimport { convertToBoolean } from '../../../utils/util';\nimport { PoTagType } from '../../po-tag';\nimport { PoAccordionService } from '../services/po-accordion.service';\n\n/**\n * @description\n *\n * Componente utilizado para renderizar os itens do `po-accordion`.\n *\n * O componente `po-accordion` já faz o controle de abertura e fechamento dos itens automaticamente,\n * mas caso houver a necessidade de abrir algum dos `po-accordion-item` via Typescript, pode ser feita da seguinte forma:\n *\n * ```\n * <po-accordion>\n *   <po-accordion-item p-label=\"PO Accordion 1\" #item1>\n *      Accordion 1\n *   </po-accordion-item>\n *\n *   <po-accordion-item p-label=\"PO Accordion 2\">\n *      Accordion 2\n *   </po-accordion-item>\n * </po-accordion>\n * ```\n *\n * e no typescript pode-se utilizar o `@ViewChild`:\n *\n * ```\n *  @ViewChild(PoAccordionItemComponent, { static: true }) item1: PoAccordionItemComponent;\n *\n *  ngAfterContentInit() {\n *    // ou utilizar o método collapse()\n *    this.item1.expand();\n *  }\n * ```\n */\n@Component({\n  selector: 'po-accordion-item',\n  templateUrl: 'po-accordion-item.component.html',\n  standalone: false\n})\nexport class PoAccordionItemComponent implements OnDestroy {\n  private readonly accordionService = inject(PoAccordionService);\n\n  private _type?: PoTagType;\n\n  /** Título do item. */\n  @Input('p-label') label: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Label da Tag.\n   *\n   */\n  @Input('p-label-tag') labelTag: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita item.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-disabled', transform: convertToBoolean }) disabledItem: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tipo da *tag* caso ela esteja sendo exibida.\n   *\n   * Valores válidos:\n   *  - `success`: cor verde utilizada para simbolizar sucesso ou êxito.\n   *  - `warning`: cor amarela que representa aviso ou advertência.\n   *  - `danger`: cor vermelha para erro ou aviso crítico.\n   *  - `info`: cor cinza escuro que caracteriza conteúdo informativo.\n   *\n   *\n   * @default `info`\n   */\n  @Input('p-type-tag') set typeTag(value: PoTagType) {\n    this._type = (<any>Object).values(PoTagType).includes(value) ? value : undefined;\n  }\n\n  get typeTag(): PoTagType {\n    return this._type;\n  }\n\n  /** Evento disparado ao expandir o item, seja manualmente ou programaticamente. */\n  @Output('p-expand') expandEvent = new EventEmitter<void>();\n\n  /** Evento disparado ao retrair o item, seja manualmente ou programaticamente. */\n  @Output('p-collapse') collapseEvent = new EventEmitter<void>();\n\n  @ViewChild(TemplateRef, { static: true }) templateRef: TemplateRef<any>;\n\n  expanded: boolean;\n\n  private readonly expandSubscription: Subscription;\n  private readonly collapseSubscription: Subscription;\n\n  constructor() {\n    this.expandSubscription = this.accordionService\n      .receiveFromChildAccordionClicked()\n      .pipe(filter(poAccordionItem => poAccordionItem === this && poAccordionItem.expanded))\n      .subscribe(() => {\n        this.expandEvent.emit();\n      });\n\n    this.collapseSubscription = this.accordionService\n      .receiveFromChildAccordionClicked()\n      .pipe(filter(poAccordionItem => poAccordionItem === this && !poAccordionItem.expanded))\n      .subscribe(() => {\n        this.collapseEvent.emit();\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.expandSubscription.unsubscribe();\n    this.collapseSubscription.unsubscribe();\n  }\n\n  /**\n   * Método para colapsar o `po-accordion-item`.\n   */\n  collapse() {\n    if (!this.disabledItem) {\n      this.expanded = false;\n\n      this.accordionService.sendToParentAccordionItemClicked(this);\n    }\n  }\n\n  /**\n   * Método para expandir o `po-accordion-item`.\n   */\n  expand() {\n    if (!this.disabledItem) {\n      this.expanded = true;\n\n      this.accordionService.sendToParentAccordionItemClicked(this);\n    }\n  }\n}\n","<ng-template>\n  <ng-content></ng-content>\n</ng-template>\n","import {\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  inject,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\nimport { PoAccordionLiterals } from '../interfaces/po-accordion-literals.interface';\n\n@Component({\n  selector: 'po-accordion-manager',\n  templateUrl: 'po-accordion-manager.component.html',\n  standalone: false\n})\nexport class PoAccordionManagerComponent implements OnChanges {\n  labelValue: string = '';\n  changeDetector = inject(ChangeDetectorRef);\n\n  @ViewChild('accordionHeaderButtonManagerElement', { read: ElementRef, static: true }) accordionElement: ElementRef;\n  @ViewChild('accordionHeaderManagerElement', { read: ElementRef, static: true }) accordionHeaderElement: ElementRef;\n\n  @Input('p-expanded-all-items') expandedAllItems: boolean = false;\n\n  @Input('p-literals') literals: PoAccordionLiterals;\n\n  @Output('p-click') clickManager = new EventEmitter<boolean>();\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.labelValue = changes.expandedAllItems.currentValue\n      ? this.literals.closeAllItems\n      : this.literals.expandAllItems;\n    this.changeDetector.detectChanges();\n  }\n\n  onClick() {\n    this.clickManager.emit();\n  }\n\n  getTooltip() {\n    const widthContainer = this.accordionElement.nativeElement.offsetWidth - 69;\n    const widthHeaderElement = this.accordionHeaderElement.nativeElement.offsetWidth;\n\n    if (widthHeaderElement >= widthContainer) {\n      return this.labelValue;\n    }\n    return null;\n  }\n}\n","<div class=\"po-accordion-manager-header\">\n  <button\n    #accordionHeaderButtonManagerElement\n    class=\"po-accordion-manager-button po-clickable\"\n    type=\"button\"\n    (click)=\"onClick()\"\n    [attr.aria-expanded]=\"expandedAllItems\"\n    [p-tooltip]=\"getTooltip()\"\n  >\n    <div #accordionHeaderManagerElement class=\"po-text-ellipsis po-accordion-manager-button-content\">\n      {{ expandedAllItems ? literals.closeAllItems : literals.expandAllItems }}\n    </div>\n    <po-icon\n      p-icon=\"ICON_LAST_PAGE\"\n      [ngClass]=\"expandedAllItems ? 'icon-down' : 'icon-up'\"\n      class=\"po-accordion-manager-icon\"\n    >\n    </po-icon>\n  </button>\n</div>\n","import { Directive, EventEmitter, Input, HostBinding, Output, HostListener } from '@angular/core';\nimport { poLocaleDefault } from '../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from '../../utils/util';\nimport { PoAccordionLiterals } from './interfaces/po-accordion-literals.interface';\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\n\nexport const poAccordionLiteralsDefault = {\n  en: <PoAccordionLiterals>{\n    closeAllItems: 'Close all items',\n    expandAllItems: 'Open all items'\n  },\n  es: <PoAccordionLiterals>{\n    closeAllItems: 'Cerrar todos los elementos',\n    expandAllItems: 'Abrir todos los elementos'\n  },\n  pt: <PoAccordionLiterals>{\n    closeAllItems: 'Fechar todos os itens',\n    expandAllItems: 'Abrir todos os itens'\n  },\n  ru: <PoAccordionLiterals>{\n    closeAllItems: 'Закрыть все элементы',\n    expandAllItems: 'Открыть все элементы'\n  }\n};\n\n/**\n * @description\n *\n * Componente utilizado para agrupar visualmente uma lista de conteúdos, mostrando-os individualmente\n * ao clicar no título de cada item.\n *\n * Para utilizá-lo, é necessário envolver cada item no componente [`po-accordion-item`](/documentation/po-accordion-item),\n * como no exemplo abaixo:\n *\n * ```\n * <po-accordion #accordion [p-show-manager-accordion]=\"true\">\n *   <po-accordion-item p-label=\"PO Accordion 1\">\n *      Accordion 1\n *   </po-accordion-item>\n *\n *   <po-accordion-item p-label=\"PO Accordion 2\">\n *      Accordion 2\n *   </po-accordion-item>\n * </po-accordion>\n * ```\n *\n * e no typescript pode-se utilizar o `@ViewChild`:\n *\n * ```\n *  @ViewChild(PoAccordionComponent, { static: true }) accordion: PoAccordionComponent;\n *\n *  ngAfterContentInit() {\n *    // ou utilizar o método collapseAllItems();\n *    this.accordion.expandAllItems();\n *  }\n * ```\n *\n * O componente já faz o controle de abertura e fechamento dos itens automaticamente.\n *\n * Caso houver a necessidade de abrir algum dos `po-accordion-item` via Typescript\n * acesse a [documentação do PoAccordionItem](/documentation/po-accordion-item).\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                      |\n * |----------------------------------------|-------------------------------------------------------|---------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                   |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                        |\n * | `--font-size`                          | Tamanho da fonte                                      | `var(--font-size-default)`                        |\n * | `--color`                              | Cor principal do accordion                            | `var(--color-action-default)`                     |\n * | `--background-color`                   | Cor de background                                     | `var(--color-neutral-light-00)`                   |\n * | `--font-weight`                        | Peso da fonte                                         | `var(--font-weight-bold)`                         |\n * | **Hover**                              |                                                       |                                                   |\n * | `--color-hover`                        | Cor principal no estado hover                         | `var(--color-action-hover)`                       |\n * | `--background-hover`                   | Cor de background no estado hover                     | `var(--color-brand-01-lightest)`                  |\n * | **Focused**                            |                                                       |                                                   |\n * | `--color-focused`                      | Cor principal no estado de focus                      | `var(--color-action-focus)`                       |\n * | `--outline-color-focused` &nbsp;       | Cor do outline do estado de focus                     | `var(--color-action-focus)`                       |\n * | **Disabled**                           |                                                       |                                                   |\n * | `--color-disabled`                     | Cor principal no estado disabled                      | `var(--color-neutral-mid-60)`                     |\n * | `--background-disabled` &nbsp;         | Cor de background no estado disabled                  | `var(--color-neutral-light-10)`                   |\n * | **po-accordion-manager**               |                                                       |                                                   |\n * | `--background-color`                   | Cor de background                                     | `var(--color-neutral-mid-60)`                     |\n * | `--color`                              | Cor principal do accordion manager                    | `var(--color-neutral-light-10)`                   |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--color-neutral-light-10)`                   |\n * | `--font-size`                          | Tamanho da fonte                                      | `var(--color-neutral-light-10)`                   |\n * | `--font-weight`                        | Peso da fonte                                         | `var(--color-neutral-light-10)`                   |\n * | **Pressed**                            |                                                       |                                                   |\n * | `--background-pressed` &nbsp;          | Cor de background no estado de pressionado&nbsp;      | `var(--color-brand-01-lighter)`                   |\n * | `--color-pressed`                      | Cor principal no estado de pressionado                | `var(--color-action-pressed)`                     |\n *\n */\n@Directive()\nexport class PoAccordionBaseComponent {\n  private readonly language: string = poLocaleDefault;\n  private _literals;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com as literais usadas no `po-accordion`.\n   *\n   * Existem duas maneiras de customizar o componente, passando um objeto com todas as literais disponíveis:\n   *\n   * ```\n   *  const customLiterals: PoAccordionLiterals = {\n   *    closeAllItems: 'Fechar todos os itens',\n   *    expandAllItems: 'Expandir todos os itens'\n   *  };\n   * ```\n   *\n   * Ou passando apenas as literais que deseja customizar:\n   *\n   * ```\n   *  const customLiterals: PoAccordionLiterals = {\n   *    expandAllItems: 'Expandir todos os itens'\n   *  };\n   * ```\n   *\n   * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n   *\n   * ```\n   * <po-accordion\n   *   [p-literals]=\"customLiterals\">\n   * </po-accordion>\n   * ```\n   *\n   * > O objeto padrão de literais será traduzido de acordo com o idioma do\n   * [`PoI18nService`](/documentation/po-i18n) ou do browser.\n   */\n  @Input('p-literals') set literals(value: PoAccordionLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poAccordionLiteralsDefault[poLocaleDefault],\n        ...poAccordionLiteralsDefault[this.language],\n        ...value\n      };\n    } else {\n      this._literals = poAccordionLiteralsDefault[this.language];\n    }\n  }\n\n  get literals() {\n    return this._literals || poAccordionLiteralsDefault[this.language];\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe o Gerenciador de Accordion.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-show-manager-accordion', transform: convertToBoolean }) showManagerAccordion: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite expandir mais de um `<po-accordion-item></po-accordion-item>` ao mesmo tempo.\n   * Sempre habilitada caso a propriedade `p-show-manager-accordion` esteja como `true`.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-allow-expand-all-items', transform: convertToBoolean }) allowExpandItems: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura de 32px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura de 44px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao expandir o gerenciador de accordion, seja manualmente ou programaticamente.\n   *\n   */\n  @Output('p-expand-all') expandAllEvent = new EventEmitter<void>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao retrair o gerenciador de accordion, seja manualmente ou programaticamente.\n   *\n   */\n  @Output('p-collapse-all') collapseAllEvent = new EventEmitter<void>();\n\n  constructor(languageService: PoLanguageService) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n}\n","import { Component, ContentChildren, OnDestroy, QueryList, ViewChildren, inject } from '@angular/core';\n\nimport { Subscription } from 'rxjs';\n\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { PoAccordionBaseComponent } from './po-accordion-base.component';\nimport { PoAccordionItemHeaderComponent } from './po-accordion-item-header/po-accordion-item-header.component';\nimport { PoAccordionItemComponent } from './po-accordion-item/po-accordion-item.component';\nimport { PoAccordionService } from './services/po-accordion.service';\n\n/**\n * @docsExtends PoAccordionBaseComponent\n *\n * @example\n *\n * <example name=\"po-accordion-basic\" title=\"PO Accordion Basic\" >\n *  <file name=\"sample-po-accordion-basic/sample-po-accordion-basic.component.html\"> </file>\n *  <file name=\"sample-po-accordion-basic/sample-po-accordion-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-accordion-labs\" title=\"PO Accordion Labs\" >\n *  <file name=\"sample-po-accordion-labs/sample-po-accordion-labs.component.html\"> </file>\n *  <file name=\"sample-po-accordion-labs/sample-po-accordion-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-accordion-faq\" title=\"PO Accordion - FAQs\" >\n *  <file name=\"sample-po-accordion-faq/sample-po-accordion-faq.component.html\"> </file>\n *  <file name=\"sample-po-accordion-faq/sample-po-accordion-faq.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-accordion',\n  templateUrl: 'po-accordion.component.html',\n  providers: [PoAccordionService],\n  standalone: false\n})\nexport class PoAccordionComponent extends PoAccordionBaseComponent implements OnDestroy {\n  private readonly accordionService = inject(PoAccordionService);\n\n  @ViewChildren(PoAccordionItemHeaderComponent) accordionsHeader: QueryList<PoAccordionItemHeaderComponent>;\n  @ContentChildren(PoAccordionItemComponent) poAccordionItems: QueryList<PoAccordionItemComponent>;\n\n  expandedAllItems = false;\n\n  private accordionServiceSubscription: Subscription;\n  private expandedActiveAccordionItem: PoAccordionItemComponent;\n\n  constructor() {\n    const languageService = inject(PoLanguageService);\n\n    super(languageService);\n    this.receiveFromChildAccordionSubscription();\n  }\n\n  ngOnDestroy() {\n    this.accordionServiceSubscription.unsubscribe();\n  }\n\n  changeVisibleAllItems(event: boolean) {\n    this.expandedAllItems = !event;\n\n    this.poAccordionItems.forEach(item => {\n      if (!item.disabledItem) {\n        item.expanded = this.expandedAllItems;\n        this.toggle(item, false);\n      }\n    });\n\n    if (this.expandedAllItems) {\n      this.expandAllEvent.emit();\n    } else {\n      this.collapseAllEvent.emit();\n    }\n  }\n\n  /**\n   * Método para colapsar todos os itens.\n   * Só pode ser utilizado quando a propriedade `p-show-manager-accordion` estiver como `true`.\n   */\n  collapseAllItems() {\n    if (this.showManagerAccordion) {\n      this.changeVisibleAllItems(true);\n    }\n  }\n\n  /**\n   * Método para expandir todos os itens.\n   * Só pode ser utilizado quando a propriedade `p-show-manager-accordion` estiver como `true`.\n   */\n  expandAllItems() {\n    if (this.showManagerAccordion) {\n      this.changeVisibleAllItems(false);\n    }\n  }\n\n  headerToggle(event: boolean, poAccordionItem: PoAccordionItemComponent) {\n    poAccordionItem.expanded = event;\n\n    this.accordionService.sendToParentAccordionItemClicked(poAccordionItem);\n  }\n\n  private checkVisibleAllItems(event: boolean) {\n    if (this.showManagerAccordion) {\n      const accordionList = this.poAccordionItems.toArray();\n      const accordionsValids = accordionList.filter(item => !item.disabledItem);\n      const allItemsExpanded = accordionsValids.every(item => item.expanded === true);\n      if (allItemsExpanded) {\n        this.expandedAllItems = event;\n      } else {\n        this.expandedAllItems = false;\n      }\n    }\n  }\n\n  private receiveFromChildAccordionSubscription() {\n    this.accordionServiceSubscription = this.accordionService\n      .receiveFromChildAccordionClicked()\n      .subscribe(poAccordionItem => this.toggle(poAccordionItem));\n  }\n\n  private toggle(poAccordionItem: PoAccordionItemComponent, checkAllItems = true) {\n    const isCurrentAccordionCollapsed = !poAccordionItem.expanded;\n    if (checkAllItems) {\n      this.checkVisibleAllItems(poAccordionItem.expanded);\n    }\n\n    if (isCurrentAccordionCollapsed) {\n      this.expandedActiveAccordionItem = null;\n      return;\n    }\n\n    if (!this.showManagerAccordion && !this.allowExpandItems && this.expandedActiveAccordionItem) {\n      this.expandedActiveAccordionItem.collapse();\n    }\n\n    this.expandedActiveAccordionItem = poAccordionItem;\n  }\n}\n","<div class=\"po-accordion\">\n  @if (showManagerAccordion && poAccordionItems.length > 1) {\n    <div class=\"po-accordion-manager\">\n      <po-accordion-manager\n        [p-expanded-all-items]=\"expandedAllItems\"\n        [p-literals]=\"literals\"\n        (p-click)=\"changeVisibleAllItems(expandedAllItems)\"\n      ></po-accordion-manager>\n    </div>\n  }\n  <ul>\n    @for (poAccordionItem of poAccordionItems; track poAccordionItem) {\n      <li class=\"po-accordion-item\" [class.po-accordion-item-active]=\"poAccordionItem.expanded\">\n        <po-accordion-item-header\n          [p-disabled]=\"poAccordionItem.disabledItem\"\n          [p-expanded]=\"poAccordionItem.expanded\"\n          [p-label]=\"poAccordionItem.label\"\n          [p-label-tag]=\"poAccordionItem.labelTag\"\n          [p-type-tag]=\"poAccordionItem.typeTag\"\n          (p-toggle)=\"headerToggle($event, poAccordionItem)\"\n        >\n        </po-accordion-item-header>\n        <po-accordion-item-body [p-expanded]=\"poAccordionItem.expanded\">\n          <ng-container *ngTemplateOutlet=\"poAccordionItem.templateRef\"></ng-container>\n        </po-accordion-item-body>\n      </li>\n    }\n  </ul>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoDividerModule } from '../po-divider';\nimport { PoIconModule } from '../po-icon';\nimport { PoTagModule } from '../po-tag';\nimport { PoTooltipModule } from '../../directives/po-tooltip/po-tooltip.module';\n\nimport { PoAccordionItemBodyComponent } from './po-accordion-item-body/po-accordion-item-body.component';\nimport { PoAccordionItemHeaderComponent } from './po-accordion-item-header/po-accordion-item-header.component';\nimport { PoAccordionItemComponent } from './po-accordion-item/po-accordion-item.component';\nimport { PoAccordionManagerComponent } from './po-accordion-manager/po-accordion-manager.component';\nimport { PoAccordionComponent } from './po-accordion.component';\n\n/**\n * @description\n *\n * Módulo do componente `po-accordion`.\n *\n * > Para o correto funcionamento do componente `po-accordion`, deve ser importado o módulo `BrowserAnimationsModule` no\n * > módulo principal da sua aplicação.\n *\n * Módulo da aplicação:\n * ```\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n * import { PoModule } from '@po-ui/ng-components';\n * ...\n *\n * @NgModule({\n *   imports: [\n *     BrowserModule,\n *     BrowserAnimationsModule,\n *     ...\n *     PoModule\n *   ],\n *   declarations: [\n *     AppComponent,\n *     ...\n *   ],\n *   providers: [],\n *   bootstrap: [AppComponent]\n * })\n * export class AppModule { }\n * ```\n *\n * Em aplicações Standalone, utilize a seguinte configuração para o bootstrap:\n *\n * ```\n * import { bootstrapApplication } from '@angular/platform-browser';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n * import { AppComponent } from './app.component';\n *\n * bootstrapApplication(AppComponent, {\n *   providers: [importProvidersFrom(BrowserAnimationsModule)]\n * }).catch(err => console.error(err));\n * ```\n */\n@NgModule({\n  imports: [CommonModule, PoTagModule, PoIconModule, PoDividerModule, PoTooltipModule],\n  declarations: [\n    PoAccordionComponent,\n    PoAccordionItemBodyComponent,\n    PoAccordionItemComponent,\n    PoAccordionItemHeaderComponent,\n    PoAccordionManagerComponent\n  ],\n  exports: [PoAccordionComponent, PoAccordionItemComponent]\n})\nexport class PoAccordionModule {}\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\n\nconst PO_AVATAR_SIZES = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst PO_AVATAR_SIZE_DEFAULT = 'md';\n\nexport const validateAvatarSize = (value: string) => (PO_AVATAR_SIZES.includes(value) ? value : PO_AVATAR_SIZE_DEFAULT);\n\n/**\n * @description\n *\n * O componente `po-avatar` é um container para imagens em miniatura, possui um formato redondo e cinco opções de\n * tamanho, pode ser utilizado para mostrar a foto do perfil de um usuário, entre outras possibilidades.\n *\n * Além de poder ser utilizado separadamente, é possível usar o `po-avatar` juntamente com outros componentes e criar\n * layouts ricos e bem interessantes para os usuários, como por exemplo, uma lista de itens ou produtos.\n */\n@Directive()\nexport class PoAvatarBaseComponent {\n  /**\n   * Fonte da imagem que pode ser um caminho local (`./assets/images/logo-black-small.png`)\n   * ou um servidor externo (`https://po-ui.io/assets/images/logo-black-small.png`).\n   */\n  @Input('p-src') src: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica como o navegador deve carregar a imagem.\n   *\n   * Valores válidos:\n   *  - `eager` (a imagem é carregada imediatamente, independente de estar visível ou não)\n   *  - `lazy` (a imagem só é carregada quando estiver próxima de ser renderizada)\n   *\n   * @default `eager`\n   */\n  @Input('p-loading') loading: 'eager' | 'lazy' = 'eager';\n\n  /** Evento disparado ao clicar na imagem do *avatar*. */\n  @Output('p-click') click = new EventEmitter<any>();\n\n  private _size: string = 'md';\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Tamanho de exibição do componente.\n   *\n   * Valores válidos:\n   *  - `xs` (24x24)\n   *  - `sm` (32x32)\n   *  - `md` (64x64)\n   *  - `lg` (96x96)\n   *  - `xl` (144x144)\n   *\n   * @default `md`\n   */\n  @Input('p-size') set size(value: string) {\n    this._size = validateAvatarSize(value);\n  }\n  get size(): string {\n    return this._size;\n  }\n\n  get hasClickEvent() {\n    return !!this.click.observers.length;\n  }\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\nimport { PoAvatarBaseComponent } from './po-avatar-base.component';\n\n/**\n * @docsExtends PoAvatarBaseComponent\n *\n * @example\n *\n * <example name=\"po-avatar-basic\" title=\"PO Avatar Basic\" >\n *  <file name=\"sample-po-avatar-basic/sample-po-avatar-basic.component.html\"> </file>\n *  <file name=\"sample-po-avatar-basic/sample-po-avatar-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-avatar-labs\" title=\"PO Avatar Labs\" >\n *  <file name=\"sample-po-avatar-labs/sample-po-avatar-labs.component.html\"> </file>\n *  <file name=\"sample-po-avatar-labs/sample-po-avatar-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-avatar-business-card\" title=\"PO Avatar - Business Card\" >\n *  <file name=\"sample-po-avatar-business-card/sample-po-avatar-business-card.component.html\"> </file>\n *  <file name=\"sample-po-avatar-business-card/sample-po-avatar-business-card.component.ts\"> </file>\n *  <file name=\"sample-po-avatar-business-card/sample-po-avatar-business-card.component.css\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-avatar',\n  templateUrl: './po-avatar.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoAvatarComponent extends PoAvatarBaseComponent implements OnInit {\n  ngOnInit(): void {\n    if (!this.src) {\n      this.src = undefined;\n    }\n  }\n\n  onError(): void {\n    this.src = undefined;\n  }\n}\n","<div class=\"po-avatar po-avatar-{{ size }}\" [class.po-clickable]=\"hasClickEvent\" (click)=\"click.emit()\">\n  @if (src) {\n    <img class=\"po-avatar-image\" [src]=\"src\" alt=\"\" [attr.loading]=\"loading\" (error)=\"onError()\" />\n  } @else {\n    <po-icon p-icon=\"ICON_USER\" class=\"po-avatar-default-icon\"></po-icon>\n  }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoIconModule } from '../po-icon';\nimport { PoAvatarComponent } from './po-avatar.component';\n\n/**\n * @description\n *\n * Módulo do componente po-avatar.\n */\n@NgModule({\n  imports: [CommonModule, PoIconModule],\n  declarations: [PoAvatarComponent],\n  exports: [PoAvatarComponent]\n})\nexport class PoAvatarModule {}\n","import { Input, Directive, TemplateRef, HostBinding } from '@angular/core';\n\nimport { convertToBoolean, convertToInt } from '../../utils/util';\nimport { PoColorPaletteEnum } from '../../enums/po-color-palette.enum';\nimport { PoCaptionTagColorEnum } from '../../enums/po-caption-tag-color.enum';\n\nconst poBadgeColors = [...(<any>Object).values(PoColorPaletteEnum), ...(<any>Object).values(PoCaptionTagColorEnum)];\nconst PO_BADGE_COLOR_DEFAULT = 'color-07';\nexport type PoBadgeStatus = 'disabled' | 'negative' | 'positive' | 'warning';\nexport type PoBadgeSize = 'small' | 'medium' | 'large';\nexport type PoBadgeIcon = string | boolean | TemplateRef<void>;\n\n/**\n * @description\n *\n * Utilizado para exibir a quantidade de notificações.\n */\n@Directive()\nexport class PoBadgeBaseComponent {\n  badgeValue: string;\n  customColor: string;\n\n  private _color: string = PO_BADGE_COLOR_DEFAULT;\n  private _value: number;\n  private _status?: PoBadgeStatus;\n  private _ariaLabel: string;\n\n  /**\n   * @description\n   *\n   * Define um `aria-label` para o `po-badge`\n   */\n  @Input('p-aria-label') set ariaLabel(value: string) {\n    if (value === undefined) {\n      this._ariaLabel = '';\n    }\n    this._ariaLabel = value;\n  }\n\n  get ariaLabel(): string {\n    return this._ariaLabel;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Determina a cor do `po-badge`. As maneiras de customizar as cores são:\n   * - Hexadeximal, por exemplo `#c64840`;\n   * - RGB, como `rgb(0, 0, 165)`;\n   * - O nome da cor, por exemplo `blue`;\n   * - Usando uma das cores do tema do PO:\n   * Valores válidos:\n   *   - <span class=\"dot po-color-01\"></span> `color-01`\n   *   - <span class=\"dot po-color-02\"></span> `color-02`\n   *   - <span class=\"dot po-color-03\"></span> `color-03`\n   *   - <span class=\"dot po-color-04\"></span> `color-04`\n   *   - <span class=\"dot po-color-05\"></span> `color-05`\n   *   - <span class=\"dot po-color-06\"></span> `color-06`\n   *   - <span class=\"dot po-color-07\"></span> `color-07`\n   *   - <span class=\"dot po-color-08\"></span> `color-08`\n   *   - <span class=\"dot po-color-09\"></span> `color-09`\n   *   - <span class=\"dot po-color-10\"></span> `color-10`\n   *   - <span class=\"dot po-color-11\"></span> `color-11`\n   *   - <span class=\"dot po-color-12\"></span> `color-12`\n   *\n   * > Também é possível utilizar as 35 cores da paleta **Caption Tag Colors**:\n   *\n   *   - <span class=\"dot po-caption-tag-01\"></span> `caption-tag-01` <span class=\"dot po-caption-tag-02\"></span> `caption-tag-02` <span class=\"dot po-caption-tag-03\"></span> `caption-tag-03` <span class=\"dot po-caption-tag-04\"></span> `caption-tag-04` <span class=\"dot po-caption-tag-05\"></span> `caption-tag-05`\n   *   - <span class=\"dot po-caption-tag-06\"></span> `caption-tag-06` <span class=\"dot po-caption-tag-07\"></span> `caption-tag-07` <span class=\"dot po-caption-tag-08\"></span> `caption-tag-08` <span class=\"dot po-caption-tag-09\"></span> `caption-tag-09` <span class=\"dot po-caption-tag-10\"></span> `caption-tag-10`\n   *   - <span class=\"dot po-caption-tag-11\"></span> `caption-tag-11` <span class=\"dot po-caption-tag-12\"></span> `caption-tag-12` <span class=\"dot po-caption-tag-13\"></span> `caption-tag-13` <span class=\"dot po-caption-tag-14\"></span> `caption-tag-14` <span class=\"dot po-caption-tag-15\"></span> `caption-tag-15`\n   *   - <span class=\"dot po-caption-tag-16\"></span> `caption-tag-16` <span class=\"dot po-caption-tag-17\"></span> `caption-tag-17` <span class=\"dot po-caption-tag-18\"></span> `caption-tag-18` <span class=\"dot po-caption-tag-19\"></span> `caption-tag-19` <span class=\"dot po-caption-tag-20\"></span> `caption-tag-20`\n   *   - <span class=\"dot po-caption-tag-21\"></span> `caption-tag-21` <span class=\"dot po-caption-tag-22\"></span> `caption-tag-22` <span class=\"dot po-caption-tag-23\"></span> `caption-tag-23` <span class=\"dot po-caption-tag-24\"></span> `caption-tag-24` <span class=\"dot po-caption-tag-25\"></span> `caption-tag-25`\n   *   - <span class=\"dot po-caption-tag-26\"></span> `caption-tag-26` <span class=\"dot po-caption-tag-27\"></span> `caption-tag-27` <span class=\"dot po-caption-tag-28\"></span> `caption-tag-28` <span class=\"dot po-caption-tag-29\"></span> `caption-tag-29` <span class=\"dot po-caption-tag-30\"></span> `caption-tag-30`\n   *   - <span class=\"dot po-caption-tag-31\"></span> `caption-tag-31` <span class=\"dot po-caption-tag-32\"></span> `caption-tag-32` <span class=\"dot po-caption-tag-33\"></span> `caption-tag-33` <span class=\"dot po-caption-tag-34\"></span> `caption-tag-34` <span class=\"dot po-caption-tag-35\"></span> `caption-tag-35`\n   *\n   * Exemplo de uso:\n   * ```\n   * <po-badge p-color=\"caption-tag-13\" p-value=\"5\"></po-badge>\n   * ```\n   *\n   * @default `color-07`\n   */\n  @Input('p-color') set color(value: string) {\n    if (value !== undefined && (value.includes('color') || value.startsWith('caption-tag-'))) {\n      this._color = poBadgeColors.includes(value) ? value : PO_BADGE_COLOR_DEFAULT;\n    } else {\n      CSS.supports('background-color', value) ? (this.customColor = value) : (this.customColor = undefined);\n    }\n  }\n\n  get color(): string {\n    return this._color;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Ícone exibido no `po-badge`.\n   *\n   * Para exibir icone do status atual declare a propriedade `p-icon`. conforme exemplo abaixo:\n   * ```\n   * <po-badge [p-icon]=\"true\"></po-badge>\n   * ```\n   * É possível usar qualquer um dos ícones da [Biblioteca de ícones](https://po-ui.io/icons). conforme exemplo abaixo:\n   * ```\n   * <po-badge p-icon=\"an an-user\"></po-badge>\n   * ```\n   * Também é possível utilizar outras fontes de ícones, por exemplo a biblioteca *Font Awesome*, da seguinte forma:\n   * ```\n   * <po-badge p-icon=\"fa fa-podcast\"></po-badge>\n   * ```\n   * Outra opção seria a customização do ícone através do `TemplateRef`, conforme exemplo abaixo:\n   * ```\n   * <po-badge [p-icon]=\"template\"></po-badge>\n   *\n   * <ng-template #template>\n   *  <ion-icon style=\"font-size: inherit\" name=\"heart\"></ion-icon>\n   * </ng-template>\n   * ```\n   */\n  @Input('p-icon') icon: PoBadgeIcon;\n\n  /**\n   * @description\n   *\n   * Define o estado do `po-badge`\n   *\n   * Valores válidos:\n   * - `positive`: Define a cor do `po-badge` com a cor de feedback positivo.;\n   * - `negative`: Define a cor do `po-badge` com a cor de feedback negative.;\n   * - `warning`: Define a cor do `po-badge` com a cor de feedback warning.;\n   * - `disabled`: Define a cor do `po-badge` com a cor de feedback disabled;\n   *\n   */\n  @HostBinding('attr.p-status')\n  @Input('p-status')\n  set status(value: PoBadgeStatus) {\n    this._status = ['positive', 'negative', 'warning', 'disabled'].includes(value) ? value : undefined;\n  }\n\n  get status(): PoBadgeStatus {\n    return this._status;\n  }\n\n  /**\n   * @description\n   *\n   * Define o tamanho do `po-badge`\n   *\n   * Valores válidos:\n   * - `small`: o `po-badge` fica do tamanho padrão, com 8px de altura.;\n   * - `medium`: o `po-badge` fica do tamanho padrão, com 16px de altura.;\n   * - `large`: o `po-badge` fica do tamanho padrão, com 24px de altura.;\n   *\n   * @default `medium`\n   */\n  @Input('p-size') size: PoBadgeSize = 'medium';\n\n  /**\n   * @description\n   *\n   * Exibe uma borda para o `po-badge`\n   *\n   * > Pode personalizar cor da bordar com a propriedade `p-color-border`\n   */\n  @Input({ alias: 'p-show-border', transform: convertToBoolean }) showBorder: boolean = false;\n\n  /**\n   * @description\n   *\n   * Número exibido no componente, caso o mesmo seja maior que 9 o valor exibido será 9+.\n   */\n  @Input('p-value') set value(value: number) {\n    this._value = value <= 0 ? 0 : convertToInt(value);\n  }\n\n  get value(): number {\n    return this._value;\n  }\n}\n","export const PoBadgeLiteralsDefault = {\n  en: {\n    notification: 'new notification',\n    notifications: 'new notifications'\n  },\n  es: {\n    notification: 'nueva notificación',\n    notifications: 'nuevas notificaciones'\n  },\n  pt: {\n    notification: 'nova notificação',\n    notifications: 'nova notificaçoes'\n  },\n  ru: {\n    notification: 'новое уведомление',\n    notifications: 'новые уведомления'\n  }\n};\n","import { Component, OnChanges, OnInit, SimpleChanges, inject } from '@angular/core';\n\nimport { PoBadgeBaseComponent } from './po-badge-base.component';\nimport { PoBadgeLiterals } from './interfaces/po-badge-literals.interface';\nimport { PoBadgeLiteralsDefault } from './interfaces/po-badge-literals-default';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\n\nconst PO_BADGE_MAX_NOTIFICATIONS = 9;\n\n/**\n * @docsExtends PoBadgeBaseComponent\n *\n * @example\n *\n * <example name=\"po-badge-basic\" title=\"PO Badge Basic\">\n *  <file name=\"sample-po-badge-basic/sample-po-badge-basic.component.html\"> </file>\n *  <file name=\"sample-po-badge-basic/sample-po-badge-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-badge-labs\" title=\"PO Badge Labs\">\n *  <file name=\"sample-po-badge-labs/sample-po-badge-labs.component.html\"> </file>\n *  <file name=\"sample-po-badge-labs/sample-po-badge-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-badge-message\" title=\"PO Badge Message\">\n *  <file name=\"sample-po-badge-message/sample-po-badge-message.component.html\"> </file>\n *  <file name=\"sample-po-badge-message/sample-po-badge-message.component.css\"> </file>\n *  <file name=\"sample-po-badge-message/sample-po-badge-message.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-badge',\n  templateUrl: './po-badge.component.html',\n  styles: [],\n  standalone: false\n})\nexport class PoBadgeComponent extends PoBadgeBaseComponent implements OnInit, OnChanges {\n  isNotification: boolean = false;\n  notificationLabel: string = '';\n  literals: PoBadgeLiterals;\n  badgeIcon: string = '';\n  isValidValue: boolean = false;\n\n  private readonly poLanguageService = inject(PoLanguageService);\n\n  ngOnInit(): void {\n    this.literals = PoBadgeLiteralsDefault[this.poLanguageService.getShortLanguage()];\n\n    this.initialize();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['status'] || changes['icon']) {\n      this.setStatus();\n    }\n\n    if (changes['value']) {\n      this.setBadgeValue();\n      this.setBadgeNotification(changes['value'].currentValue);\n      this.setLiterals();\n    }\n  }\n\n  initialize() {\n    this.setStatus();\n    this.setLiterals();\n    this.setBadgeValue();\n    this.setBadgeNotification(this.value);\n  }\n\n  getChangeStyle() {\n    if ((this.color === 'color-07' && !this.customColor) || this.status) {\n      return 'po-badge-default';\n    } else if (this.color) {\n      return `po-${this.color}`;\n    }\n  }\n\n  setLiterals() {\n    if (this.value) {\n      this.notificationLabel =\n        this.value > 1\n          ? `${this.ariaLabel ?? ''} ${this.value} ${this.literals?.notifications}`\n          : `${this.ariaLabel ?? ''} ${this.value} ${this.literals?.notification}`;\n    } else {\n      this.notificationLabel = `${this.ariaLabel ?? ''} ${this.literals?.notification}`;\n    }\n  }\n\n  setStatus() {\n    this.isNotification = false;\n    this.badgeValue = null;\n    this.switchIconStatus();\n  }\n\n  switchIconStatus() {\n    if (typeof this.icon === 'boolean' && this.icon) {\n      this.badgeIcon = '';\n\n      if (['positive', 'negative', 'warning', 'disabled'].includes(this.status)) {\n        switch (this.status) {\n          case 'positive':\n            this.badgeIcon = 'ICON_OK';\n            break;\n\n          case 'negative':\n            this.badgeIcon = 'ICON_MINUS';\n            break;\n\n          case 'warning':\n            this.badgeIcon = 'ICON_WARNING';\n            break;\n        }\n      }\n    } else {\n      this.badgeIcon = this.icon as string;\n    }\n  }\n\n  private setBadgeNotification(value: number): boolean {\n    if (value > 1 && !this.status) {\n      this.isNotification = true;\n      return true;\n    } else {\n      this.isNotification = false;\n      this.badgeValue = null;\n      return false;\n    }\n  }\n\n  private setBadgeValue(): void {\n    if (this.value) {\n      this.checkBadgeValue(this.value);\n    }\n  }\n\n  private checkBadgeValue(value: number): void {\n    this.isValidValue = Number.isInteger(value) && value >= 1;\n    this.badgeValue = this.isValidValue ? this.formatBadgeValue(value) : '';\n  }\n\n  private formatBadgeValue(value: number): string {\n    return value > PO_BADGE_MAX_NOTIFICATIONS ? '9+' : value.toString();\n  }\n}\n","<div\n  class=\"{{ getChangeStyle() }} po-badge po-badge-{{ size ? size : 'medium' }}\"\n  [class.po-badge-notification]=\"isNotification && !status\"\n  [class.po-badge-border]=\"showBorder\"\n  [attr.data-status]=\"status\"\n  [ariaLabel]=\"notificationLabel\"\n  [ngStyle]=\"customColor && !status ? { 'background-color': customColor } : {}\"\n>\n  @if (!isNotification && size !== 'small' && badgeIcon && status !== 'disabled') {\n    <po-icon [p-icon]=\"badgeIcon\"></po-icon>\n  }\n  @if (value > 1) {\n    <span class=\"po-badge-value\" aria-hidden=\"true\">{{ badgeValue }}</span>\n  }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoBadgeComponent } from './po-badge.component';\nimport { PoIconModule } from '../po-icon';\n\n/**\n * @description\n *\n * Módulo do componente po-badge.\n */\n@NgModule({\n  imports: [CommonModule, PoIconModule],\n  declarations: [PoBadgeComponent],\n  exports: [PoBadgeComponent]\n})\nexport class PoBadgeModule {}\n","import { Directive, HostBinding, HostListener, Input } from '@angular/core';\n\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { getDefaultSizeFn, validateSizeFn } from '../../utils/util';\nimport { PoBreadcrumbItem } from './po-breadcrumb-item.interface';\n\n/**\n * @description\n *\n * Este componente gera uma estrutura de navegação que apresenta ao usuário a localização\n * da URL atual, exibindo as antecessoras conforme é realizado a navegação na aplicação.\n *\n * Quando não houver espaçamento suficiente para exibi-lás, o componente se encarrega também\n * de agrupar as URLs antecessoras, gerando assim um ícone que permite a visualização em cascata.\n *\n * Caso um endereço seja especificado na propriedade `p-favorite-service`, o componente permite ao usuário\n * favoritar a URL.\n *\n * Havendo necessidade de incluir parâmetros na requisição do serviço,\n * o componente dispõe da propriedade `p-params-service` que recebe um objeto contendo as informações.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                      |\n * |----------------------------------------|-------------------------------------------------------|---------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                   |\n * | `--font-family`                        | Família tipográfica usada &nbsp;                      | `var(--font-family-theme)`                        |\n * | `--color`                              | Cor principal do icone de lista                       | `var(--color-action-default)`                     |\n * | `--color-icon`                         | Cor do icone \">\"                                      | `var(--color-neutral-mid-60)`                     |\n * | `--color-current-page` &nbsp;          | Cor do pagina atual                                   | `var(--color-neutral-mid-60)`                     |\n *\n */\n@Directive()\nexport class PoBreadcrumbBaseComponent {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite definir uma URL no componente `po-breadcrumb` para favoritar ou desfavoritar.\n   * > Para utilizar esta propriedade, o último `PoBreadcrumbItem` da lista de items da propriedade `p-items` deve ter um link informado.\n   *\n   * > A API deve estar preparada para retornar um objeto no formato `{ isFavorite: boolean }`.\n   *\n   * Ao iniciar, o `po-breadcrumb` faz um GET na URL definida na propriedade `p-favorite-service` e deve retornar a propriedade\n   * `{ isFavorite: boolean }` do último `PoBreadcrumbItem` definido na lista de itens da propriedade `p-items`.\n   *\n   * Ao clicar em favoritar ou desfavoritar o `po-breadcrumb` faz um POST com o link e a propriedade `{ isFavorite: boolean }`\n   * definidos no último item da propriedade `p-items`.\n   *\n   * > Caso algum parâmetro seja definido na propriedade `p-params-service`, o mesmo será enviado para a API e retornará\n   * após fazer um GET ou POST.\n   *\n   * Exemplo de URL contendo o serviço de favoritar ou desfavoritar:\n   *\n   * ```\n   * https://po-ui.io/sample/api/favorite\n   * ```\n   *\n   * Ao fazer o GET o `po-breadcrumb` concatena o link com a URL de serviço. Exemplo:\n   *\n   * ```\n   * GET http://<domain>/api/favorite?url=/example\n   * ```\n   *\n   * ```\n   * GET http://po.com.br/sample/api/favorite?url=/example\n   * ```\n   *\n   * ```\n   * POST\n   * payload: { isFavorite: true, url: '/example' }\n   * ```\n   *\n   * Caso possua parâmetros definidos na propriedade `p-params-service`:\n   *\n   * ```\n   * POST\n   * payload: { isFavorite: true, url: \"/example\", params: \"{ id: 14, user: 'dev.po' }\" }\n   * ```\n   *\n   * Exemplos de retorno:\n   *\n   * ```\n   * { isFavorite: true, url: \"/example\" }\n   * ```\n   *\n   * ```\n   * { isFavorite: false, url: \"/example\" }\n   * ```\n   *\n   * ```\n   * { isFavorite: false, url: \"/example\", params: \"{ id: 14, user: 'dev.po' }\" }\n   * ```\n   */\n  @Input('p-favorite-service') favoriteService?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto que possibilita o envio de parâmetros adicionais à requisição.\n   */\n  @Input('p-params-service') paramsService?: object;\n\n  itemsView: Array<PoBreadcrumbItem> = [];\n  itemsViewPopup: Array<any> = [];\n\n  protected clickoutListener: () => void;\n  protected resizeListener: () => void;\n\n  private _items: Array<PoBreadcrumbItem> = [];\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n\n  /**\n   * @description\n   *\n   * Lista de itens do _breadcrumb_.\n   *\n   * **Exemplo:**\n   * ```\n   * { label: 'Po Portal', link: 'portal' }\n   * ```\n   */\n  @Input('p-items') set items(items: Array<PoBreadcrumbItem>) {\n    this._items = items;\n    this.itemsView = [].concat(items);\n    if (this.itemsView.length >= 4) {\n      this.transformToArrayPopup(items);\n    }\n  }\n\n  get items() {\n    return this._items;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente entre `small` ou `medium`.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n\n  private transformToArrayPopup(items: Array<PoBreadcrumbItem>) {\n    const itemsCopy = items.map(obj => ({ ...obj }));\n    itemsCopy.shift();\n    itemsCopy.splice(-2, 1);\n    itemsCopy.pop();\n    this.itemsViewPopup = this.transformArrayToActionPopUp(itemsCopy);\n  }\n\n  private transformArrayToActionPopUp(items: Array<PoBreadcrumbItem>) {\n    return items.map(obj => {\n      if (obj.hasOwnProperty('link')) {\n        obj['url'] = obj.link;\n        delete obj.link;\n        if (obj.hasOwnProperty('action')) {\n          delete obj.action;\n        }\n      }\n      return obj;\n    });\n  }\n}\n","import { Input, Directive, Output, EventEmitter } from '@angular/core';\n\nimport { InputBoolean } from '../../decorators';\nimport { convertToBoolean, isExternalLink } from '../../utils/util';\n\n/**\n * @description\n *\n * Os links são utilizados como rota. O destino dessa rota pode ser externo ou interno à aplicação. Eles podem ser usados dentro de texto ou isoladamente.\n *\n * #### Boas Práticas\n *\n * O componente link foi projetado para atender os requisitos das Diretrizes de Acessibilidade para Conteúdo Web (WCAG) 2.1. Também foram estruturadas padrões de usabilidade para auxiliar na utilização do componente e garantir uma boa experiência para os usuários. Por isso, é muito importante que, ao aplicar esse componente, o proprietário do conteúdo leve em consideração alguns critérios e práticas:\n * ##### Uso\n * - Evite usar muitos links em uma única tela, pois isso pode confundir o usuário quanto a identificação e rotas.\n * - Em caso de interações que alteram ou manipulam dados ou acionam alguma ação, priorize o uso de botões ao invés de link.\n * - Use labels (rótulos) que descrevam a finalidade do link. Evite texto como \"Clique aqui\", por exemplo. (WCAG [2.4.9: Link Purpose - Link Only](https://www.w3.org/WAI/WCAG21/Understanding/link-purpose-link-only))\n * - Não use cores para o link com baixo contraste entre o fundo e o texto, pois isso dificulta o entendimento do conteúdo. É possível conferir se o contraste está adequado e atingindo o valor de 7:1 em um [Contrast Checker](https://webaim.org/resources/contrastchecker/) (WCAG [1.4.6: Contrast](https://www.w3.org/WAI/WCAG21/Understanding/contrast-enhanced.html))\n *\n * ##### Interação\n * - A interação de foco deve compor o componente, sendo a navegação por mouse ou teclado, e em sequência lógica. Como por exemplo, ao pressionar Enter, executa o link e move o foco para o destino do link. (WCAG [2.4.3: Focus Order](https://www.w3.org/WAI/WCAG21/Understanding/focus-order))\n * - A distância entre o link e outras áreas interativas deve ter no mínimo 44px de altura e largura, para permitir distanciamento seguro e para que nenhum outro elemento seja acionado sem intenção. (WCAG [2.5.8: Pointer Target Spacing](https://w3c.github.io/wcag/understanding/pointer-target-spacing))\n * - Quando se tratar de um link para uma página externa, é recomendável que esta informação seja adicionada na label do componente link, para que a mudança de contexto seja informada ao usuário (WCAG [3.2.5: Change on Request](https://www.w3.org/WAI/WCAG21/Understanding/change-on-request)).\n *\n * #### Acessibilidade tratada no componente\n * Algumas diretrizes de acessibilidade já são tratadas no componente, internamente, e não podem ser alteradas pelo proprietário do conteúdo. São elas:\n * - O link foi desenvolvido utilizando controles padrões HTML para permitir a identificação do mesmo na interface por tecnologias assistivas. (WCAG [4.1.2: Name, Role, Value](https://www.w3.org/WAI/WCAG21/Understanding/name-role-value))\n * - A cor não deve ser o único meio para diferenciar o link de textos comuns ou outros elementos, por isso deve-se manter o underline no link, para proporcionar essa diferença. (WCAG [1.4.1: Use of Color](https://www.w3.org/WAI/WCAG21/Understanding/use-of-color)/ [3.2.4: Consistent Identification](https://www.w3.org/WAI/WCAG21/Understanding/consistent-identification))\n * - O foco precisa ter uma área mínima do dobro do perímetro do link, ter contraste de pelo menos 4.5:1 entre o estado focado e não focado do componente; e o foco não pode ficar escondido por outros elementos da tela. (WCAG [2.4.12: Focus Appearance - Enhanced](https://w3c.github.io/wcag/understanding/focus-appearance-enhanced))\n * - O estado de foco do componente deve ser sempre preservado. (WCAG [2.4.7: Focus Visible](https://www.w3.org/WAI/WCAG21/Understanding/focus-visible))\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                    |\n * |----------------------------------------|-------------------------------------------------------|-------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                 |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                      |\n * | `--text-color`                         | Cor do texto                                          | `var(--color-action-default)`                   |\n * | **Hover**                              |                                                       |                                                 |\n * | `--text-color-hover`                   | Cor do texto no estado de hover                       | `var(--color-action-hover)`                     |\n * | **Pressed**                            |                                                       |                                                 |\n * | `--text-color-pressed`                 | Cor do texto no estado pressionado                    | `var(--color-action-pressed)`                   |\n * | **Focused**                            |                                                       |                                                 |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                     | `var(--color-action-focus)`                     |\n * | **Visited**                            |                                                       |                                                 |\n * | `--text-color-visited`                 | Cor do texto do estado Visited                        | `var(--color-action-pressed)`                   |\n *\n */\n@Directive()\nexport class PoLinkBaseComponent {\n  /** Valor do rótulo a ser exibido. */\n  @Input('p-label') label: string;\n\n  /** Indica se o link deverá ser aberto em uma nova aba. Sempre que utilizar essa propriedade, é importante informar isso ao usuário através da label. */\n  @Input({ alias: 'p-open-new-tab', transform: convertToBoolean }) openNewTab: boolean = false;\n\n  /** Url que será aberta ao clicar no link. */\n  @Input('p-url') url: string;\n\n  get type(): string {\n    if (!this.url && this.action.observed) {\n      return 'action';\n    }\n    return isExternalLink(this.url) ? 'externalLink' : 'internalLink';\n  }\n\n  /** Ação que será executada quando o usuário clicar sobre o `po-link`.\n   * > Ao utilizar junto da propriedade `p-url` a ação será ignorada.\n   */\n  @Output('p-action') action = new EventEmitter<null>();\n}\n","import { Component, ElementRef, ViewChild } from '@angular/core';\n\nimport { PoLinkBaseComponent } from './po-link-base.component';\n\n/**\n * @docsExtends PoLinkBaseComponent\n *\n * @example\n *\n * <example name=\"po-link-basic\" title=\"PO Link Basic\" >\n *  <file name=\"sample-po-link-basic/sample-po-link-basic.component.html\"> </file>\n *  <file name=\"sample-po-link-basic/sample-po-link-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-link-labs\" title=\"PO Link Labs\" >\n *  <file name=\"sample-po-link-labs/sample-po-link-labs.component.html\"> </file>\n *  <file name=\"sample-po-link-labs/sample-po-link-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-link-heroes\" title=\"PO Link Heroes\" >\n *  <file name=\"sample-po-link-heroes/sample-po-link-heroes.component.html\"> </file>\n *  <file name=\"sample-po-link-heroes/sample-po-link-heroes.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-link',\n  templateUrl: './po-link.component.html',\n  standalone: false\n})\nexport class PoLinkComponent extends PoLinkBaseComponent {\n  onClick() {\n    if (this.url) {\n      return;\n    } else {\n      this.action.emit(null);\n    }\n  }\n}\n","@switch (type) {\n  @case ('action') {\n    <button class=\"po-link\" type=\"button\" (click)=\"onClick()\">{{ label }}</button>\n  }\n  @case ('externalLink') {\n    <a class=\"po-link\" [href]=\"url\" [target]=\"openNewTab ? '_blank' : '_self'\">{{ label }}</a>\n  }\n  @case ('internalLink') {\n    <a class=\"po-link\" [routerLink]=\"url\">{{ label }}</a>\n  }\n  @default {\n    <a class=\"po-link\" [href]=\"url\">{{ label }}</a>\n  }\n}\n","import { Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';\n\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from '../../utils/util';\nimport { PO_CONTROL_POSITIONS } from './../../services/po-control-position/po-control-position.constants';\n\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { PoPopupAction } from './po-popup-action.interface';\n\nconst poPopupDefaultPosition = 'bottom-left';\n\n/**\n * @description\n *\n * O componente `po-popup` é um container pequeno recomendado para ações de navegação:\n * Ele abre sobreposto aos outros componentes.\n *\n * É possível escolher as posições do `po-popup` em relação ao componente alvo, para isto veja a propriedade `p-position`.\n *\n * Também é possível informar um _template_ _header_ para o `po-popup`, que será exibido acima das ações.\n * Para funcionar corretamente é preciso adicionar a propriedade `p-popup-header-template` no elemento que servirá de template, por exemplo:\n *\n * ```\n * <po-popup [p-target]=\"target\">\n *   <div p-popup-header-template>\n *     <div>\n *       Dev PO\n *     </div>\n *     <div>\n *       dev.po@po-ui.com.br\n *     </div>\n *   </div>\n * </po-popup >\n * ```\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                    |\n * |----------------------------------------|-------------------------------------------------------|-------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                 |\n * | `--border-radius`                      | Contém o valor do raio dos cantos do elemento&nbsp;   | `var(--border-radius-md)`                       |\n * | `--border-width`                       | Contém o valor da largura dos cantos do elemento&nbsp;| `var(--border-width-sm)`                        |\n * | `--border-color`                       | Cor da borda                                          | `var(--color-neutral-light-20)`                 |\n * | `--background`                         | Cor do background                                     | `var(--color-neutral-light-00)`                 |\n * | `--shadow`                             | Contém o valor da sombra do elemento                  | `var(--shadow-md)`                              |\n * | **po-popup po-item-list**              |                                                       |                                                 |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                      |\n * | `--font-size`                          | Tamanho da fonte                                      | `var(--font-size-default)`                      |\n * | `--line-height`                        | Tamanho da label                                      | `var(--line-height-md)`                         |\n * | **Action**                             |                                                       |                                                 |\n * | `--font-weight`                        | Peso da fonte                                         | `var(--font-weight-bold)`                       |\n * | `--color`                              | Cor principal do popup                                | `var(--color-action-default)`                   |\n * | **Hover**                              |                                                       |                                                 |\n * | `--color-hover`                        | Cor principal no estado hover                         | `var(--color-brand-01-darkest)`                 |\n * | `--background-hover`                   | Cor de background no estado hover                     | `var(--color-brand-01-lighter)`                 |\n * | **Focused**                            |                                                       |                                                 |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                     | `var(--color-action-focus)`                     |\n * | **Pressed**                            |                                                       |                                                 |\n * | `--background-pressed`                 | Cor de background no estado de pressionado&nbsp;      | `var(--color-brand-01-light)`                   |\n * | **Disabled**                           |                                                       |                                                 |\n * | `--color-disabled`                     | Cor principal no estado disabled                      | `var(--color-action-disabled)`                  |\n * | **Selected**                           |                                                       |                                                 |\n * | `--font-weight-selected`               | Peso da fonte no estado selecionado                   | `var(--font-weight-bold)`                       |\n * | `--background-selected`                | Cor de background no estado selecionado               | `var(--color-brand-01-lightest)`                |\n * | **Option e check**                     |                                                       |                                                 |\n * | `--color-option`                       | Cor principa no estado Option/check                   | `var(--color-neutral-dark-90)`                  |\n *\n */\n@Directive()\nexport class PoPopupBaseComponent {\n  arrowDirection: string = 'top-right';\n  showPopup: boolean = false;\n\n  protected oldTarget;\n  protected param;\n  protected clickoutListener: () => void;\n  protected resizeListener: () => void;\n\n  private _actions: Array<PoPopupAction>;\n  private _customPositions?: Array<string>;\n  private _hideArrow: boolean = false;\n  private _isCornerAlign: boolean = false;\n  private _position?: string = poPopupDefaultPosition;\n  private _size?: string = undefined;\n  private _target: any;\n\n  // Indica se há um listbox com subitens\n  @Input('p-listbox-subitems') listboxSubitems = false;\n\n  // template-icon\n  @Input('p-template-icon') templateIcon = false;\n\n  /** Lista de ações que serão exibidas no componente. */\n  @Input('p-actions') set actions(value: Array<PoPopupAction>) {\n    this._actions = Array.isArray(value) ? value : [];\n  }\n\n  get actions() {\n    return this._actions;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Oculta a seta do componente *popup*.\n   *\n   * @default `false`\n   */\n  @Input('p-hide-arrow') set hideArrow(value: boolean) {\n    this._hideArrow = convertToBoolean(value);\n  }\n\n  get hideArrow(): boolean {\n    return this._hideArrow;\n  }\n\n  // Define se o `po-popup` será alinhado pelos cantos do elemento target.\n  @Input('p-is-corner-align') set isCornerAlign(value: boolean) {\n    this._isCornerAlign = convertToBoolean(value);\n  }\n\n  get isCornerAlign(): boolean {\n    return this._isCornerAlign;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a posição inicial que o `po-popup` abrirá em relação ao componente alvo. Sugere-se que seja\n   * usada a orientação `bottom-left` (abaixo e a esquerda), porém o mesmo é flexível e será rotacionado\n   * automaticamente para se adequar a tela, caso necessário.\n   *\n   * > Caso seja definido um `p-custom-positions` o componente irá abrir na posição definida na propriedade `p-position`\n   * e caso não caiba na posição inicial ele irá rotacionar seguindo a ordem de posições definidas no `p-custom-positions`.\n   *\n   * Posições válidas:\n   * - `right`: Posiciona o po-popup no lado direito do componente alvo.\n   * - `right-bottom`: Posiciona o po-popup no lado direito inferior do componente alvo.\n   * - `right-top`: Posiciona o po-popup no lado direito superior do componente alvo.\n   * - `bottom`: Posiciona o po-popup abaixo do componente alvo.\n   * - `bottom-left`: Posiciona o po-popup abaixo e à esquerda do componente alvo.\n   * - `bottom-right`: Posiciona o po-popup abaixo e à direita do componente alvo.\n   * - `left`: Posiciona o po-popup no lado esquerdo do componente alvo.\n   * - `left-top`: Posiciona o po-popup no lado esquerdo superior do componente alvo.\n   * - `left-bottom`: Posiciona o po-popup no lado esquerdo inferior do componente alvo.\n   * - `top`: Posiciona o po-popup acima do componente alvo.\n   * - `top-right`: Posiciona o po-popup acima e à direita do componente alvo.\n   * - `top-left`: Posiciona o po-popup acima e à esquerda do componente alvo.\n   *\n   * @default `bottom-left`\n   */\n  @Input('p-position') set position(value: string) {\n    this._position = PO_CONTROL_POSITIONS.includes(value) ? value : poPopupDefaultPosition;\n  }\n\n  get position(): string {\n    return this._position;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as posições e a sequência que o `po-popup` poderá rotacionar. A sequência será definida pela ordem passada\n   * no *array*. Caso não seja definido, o `po-popup` irá rotacionar em todas as posições válidas.\n   *\n   * > O componente sempre irá abrir na posição definida no `p-position` e caso não caiba na posição definida o mesmo\n   * irá rotacionar seguindo a ordem definida pelo `p-custom-position`.\n   *\n   * Posições válidas:\n   * - `right`: Posiciona o po-popup no lado direito do componente alvo.\n   * - `right-bottom`: Posiciona o po-popup no lado direito inferior do componente alvo.\n   * - `right-top`: Posiciona o po-popup no lado direito superior do componente alvo.\n   * - `bottom`: Posiciona o po-popup abaixo do componente alvo.\n   * - `bottom-left`: Posiciona o po-popup abaixo e à esquerda do componente alvo.\n   * - `bottom-right`: Posiciona o po-popup abaixo e à direita do componente alvo.\n   * - `left`: Posiciona o po-popup no lado esquerdo do componente alvo.\n   * - `left-top`: Posiciona o po-popup no lado esquerdo superior do componente alvo.\n   * - `left-bottom`: Posiciona o po-popup no lado esquerdo inferior do componente alvo.\n   * - `top`: Posiciona o po-popup acima do componente alvo.\n   * - `top-right`: Posiciona o po-popup acima e à direita do componente alvo.\n   * - `top-left`: Posiciona o po-popup acima e à esquerda do componente alvo.\n   */\n  @Input('p-custom-positions') set customPositions(value: Array<string>) {\n    this._customPositions = Array.isArray(value) ? value : [];\n  }\n\n  get customPositions() {\n    return this._customPositions;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos componentes de formulário no template:\n   * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n   * - `medium`: aplica a medida medium de cada componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  @Input('p-size') set size(value: string) {\n    this._size = validateSizeFn(value, PoFieldSize);\n  }\n\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @description\n   *\n   * Para utilizar o `po-popup` deve-se colocar uma variável local no componente que disparará o evento\n   * de abertura no mesmo e com isso, invocará a função `toggle`, por exemplo:\n   *\n   * ```\n   * <span #icon class=\"an an-credit-card\" (click)=\"popup.toggle()\">\n   *   Credit Actions\n   * </span>\n   *\n   * <po-popup #popup\n   *   [p-actions]=\"actions\"\n   *   [p-target]=\"icon\">\n   * </po-popup>\n   * ```\n   *\n   * Caso o elemento alvo for um componente, será preciso obter o `ElementRef` do mesmo e passá-lo à propriedade, por exemplo:\n   *\n   * ```\n   * // component.html\n   *\n   * <po-button #poButton\n   *   p-label=\"Open Popover\"\n   *   (p-click)=\"popup.toggle()\">\n   * </po-button>\n   *\n   * <po-popup #popup\n   *   [p-actions]=\"actions\"\n   *   [p-target]=\"poButtonRef\">\n   * </po-popup>\n   *\n   * // component.ts\n   *\n   * @ViewChild('poButton', { read: ElementRef }) poButtonRef: ElementRef;\n   * ```\n   */\n  @Input('p-target') set target(value: any) {\n    this._target = value instanceof ElementRef ? value.nativeElement : value;\n  }\n\n  get target() {\n    return this._target;\n  }\n\n  @Output('p-close') closeEvent: EventEmitter<any> = new EventEmitter();\n\n  @Output('p-click-item') clickItem: EventEmitter<any> = new EventEmitter();\n}\n","export enum PoItemListType {\n  action = 'action',\n  check = 'check',\n  option = 'option',\n  danger = 'danger'\n}\n","export enum PoItemListFilterMode {\n  /** Verifica se o texto *inicia* com o valor pesquisado. Caso não seja especificado um tipo, será esse o utilizado. */\n  startsWith,\n  /** Verifica se o texto *contém* o valor pesquisado. */\n  contains,\n  /** Verifica se o texto *finaliza* com o valor pesquisado. */\n  endsWith\n}\n","import { Directive, EventEmitter, HostBinding, HostListener, Input, Output, TemplateRef } from '@angular/core';\n\nimport { poLocaleDefault } from '../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { PoItemListType } from './enums/po-item-list-type.enum';\nimport { PoItemListAction } from './po-item-list/interfaces/po-item-list-action.interface';\n\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from '../../utils/util';\nimport { PoItemListFilterMode } from './enums/po-item-list-filter-mode.enum';\nimport { PoListBoxLiterals } from './interfaces/po-listbox-literals.interface';\nimport { PoItemListOptionGroup } from './po-item-list/interfaces/po-item-list-option-group.interface';\nimport { PoItemListOption } from './po-item-list/interfaces/po-item-list-option.interface';\n\nexport const poListBoxLiteralsDefault = {\n  en: <PoListBoxLiterals>{\n    backToPreviousGroup: 'Go back to the previous list',\n    noItems: 'No items found'\n  },\n  es: <PoListBoxLiterals>{\n    backToPreviousGroup: 'Volver a la lista anterior',\n    noItems: 'No se encontraron artículos'\n  },\n  pt: <PoListBoxLiterals>{\n    backToPreviousGroup: 'Voltar para a lista anterior',\n    noItems: 'Nenhum item encontrado'\n  },\n  ru: <PoListBoxLiterals>{\n    backToPreviousGroup: 'Вернуться к предыдущему списку',\n    noItems: 'ничего не найдено'\n  }\n};\n\n/**\n * @description\n * O componente `po-listbox` é uma caixa suspensa que aparece sobre a interface após ser acionado por um gatilho visível em tela, como o dropdown. Ele apoia trazendo agrupamentos de opções. O componente listbox é composto pelo componente [**PO Item List**](/documentation/po-item-list).\n */\n@Directive()\nexport class PoListBoxBaseComponent {\n  private _items: Array<PoItemListOption | PoItemListOptionGroup | any> = [];\n  private _type!: PoItemListType;\n  private _literals: PoListBoxLiterals;\n  private readonly language: string = poLocaleDefault;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n\n  @Input('p-listbox-subitems') listboxSubitems = false;\n\n  @Input({ alias: 'p-visible', transform: convertToBoolean }) visible: boolean = false;\n\n  @Input('p-type') set type(value: string) {\n    this._type = PoItemListType[value] ?? 'action';\n  }\n\n  get type(): PoItemListType {\n    return this._type;\n  }\n\n  @Input('p-items') set items(items: Array<PoItemListAction | PoItemListOption | PoItemListOptionGroup | any>) {\n    this._items = Array.isArray(items) ? items : [];\n  }\n\n  get items(): Array<PoItemListAction | PoItemListOption | PoItemListOptionGroup | any> {\n    return this._items;\n  }\n\n  @Input('p-literals') set literals(value: PoListBoxLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poListBoxLiteralsDefault[poLocaleDefault],\n        ...poListBoxLiteralsDefault[this.language],\n        ...value\n      };\n    } else {\n      this._literals = poListBoxLiteralsDefault[this.language];\n    }\n  }\n\n  get literals() {\n    return this._literals || poListBoxLiteralsDefault[this.language];\n  }\n\n  get isItemListGroup(): boolean {\n    return this.items.length && this.items[0].hasOwnProperty('options');\n  }\n\n  @Input({ alias: 'p-is-tabs', transform: convertToBoolean }) isTabs: boolean = false;\n\n  // parâmetro que pode ser passado para o popup ao clicar em um item\n  @Input('p-param') param?;\n\n  //valor do checkbox de selecionar todos\n  @Input('p-checkboxAllValue') checkboxAllValue: any;\n\n  // Propriedade que recebe a lista de opções selecionadas.\n  @Input('p-selected-options') selectedOptions: Array<any> = [];\n\n  // Propriedade que recebe um item selecionado.\n  @Input('p-selected-option') selectedOption?: any;\n\n  @Input('p-field-value') fieldValue: string = 'value';\n\n  @Input('p-field-label') fieldLabel: string = 'label';\n\n  // Propriedade que recebe as literais definidas no componente `po-multiselect`.\n  @Input('p-literal-search') literalSearch?: any;\n\n  // Propriedade que recebe o valor de comparação de pesquisa\n  @Input('p-field-value-search') fieldValueSearch: string = 'value';\n\n  // Propriedade que indica se o campo de pesquisa deverá ser escondido.\n  @Input('p-hide-search') hideSearch?: boolean = false;\n\n  // Propriedade que indica se o campo \"Selecionar todos\" deverá ser escondido.\n  @Input('p-hide-select-all') hideSelectAll?: boolean = false;\n\n  //Propriedades relacionados ao template customizado do multiselect\n  @Input('p-multiselect-template') multiselectTemplate: TemplateRef<any> | any;\n\n  @Input('p-template') template: TemplateRef<any> | any;\n\n  @Input('p-placeholder-search') placeholderSearch: string;\n\n  @Input('p-search-value') searchValue: string;\n\n  @Input({ alias: 'p-is-searching', transform: convertToBoolean }) isServerSearching: boolean = false;\n\n  @Input({ alias: 'p-infinite-loading', transform: convertToBoolean }) infiniteLoading: boolean = false;\n\n  @Input({ alias: 'p-infinite-scroll', transform: convertToBoolean }) infiniteScroll: boolean = false;\n\n  @Input({ alias: 'p-cache', transform: convertToBoolean }) cache: boolean = false;\n\n  @Input('p-infinite-scroll-distance') infiniteScrollDistance: number = 100;\n\n  @Input('p-filter-mode') filterMode: PoItemListFilterMode = PoItemListFilterMode.contains;\n\n  @Input('p-filtering') isFiltering: boolean = false;\n\n  @Input('p-should-mark-letter') shouldMarkLetters: boolean = true;\n\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  @Input('p-compare-cache') compareCache: boolean = false;\n\n  @Input('p-combo-service') comboService: any;\n\n  @Input('p-container-width') containerWidth: number;\n\n  // Define os nomes das propriedades do objeto que serão exibidos como rótulos (labels) no `listbox`\n  @Input('p-keys-label') keysLabel: Array<string> = [];\n\n  // Habilita a ação no rodapé do list box\n  @Input('p-footer-action-listbox') footerActionListbox: boolean = false;\n\n  // Cria um item no listbox que será utilizado como um \"placeholder\"\n  @Input('p-placeholder-listbox') placeholderListbox: string;\n\n  // Define se haverá ou não um separador entre todos os itens do listbox\n  @Input('p-separator') separator: boolean = false;\n\n  // Evento disparado a cada tecla digitada na pesquisa.\n  @Output('p-change-search') changeSearch = new EventEmitter();\n\n  @Output('p-select-item') selectItem = new EventEmitter<PoItemListOption | PoItemListOptionGroup | any>();\n\n  @Output('p-close') closeEvent = new EventEmitter<any>();\n  // MULTISELECT PROPERTIES\n\n  //output para evento do checkbox\n  @Output('p-change') change = new EventEmitter();\n\n  //output para evento do checkbox\n  @Output('p-selectcombo-item') selectCombo = new EventEmitter();\n\n  //output para evento do checkbox de selecionar todos\n  @Output('p-change-all') changeAll = new EventEmitter();\n\n  @Output('p-update-infinite-scroll') UpdateInfiniteScroll = new EventEmitter();\n\n  // Evento disparado quando uma tab é ativada\n  @Output('p-activated-tabs') activatedTab = new EventEmitter();\n\n  // Evento disparado no click de uma aba do tabs\n  @Output('p-click-tabs') clickTab = new EventEmitter();\n\n  @Output('p-change-state-tabs') changeStateTabs = new EventEmitter();\n\n  @Output('p-click-item') clickItem = new EventEmitter();\n\n  // Evento disparado ao clicar na ação do rodapé do listbox\n  @Output('p-footer-action-listbox-event') footerActionListboxEvent = new EventEmitter();\n\n  constructor(languageService: PoLanguageService) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n}\n","import { Input, Directive } from '@angular/core';\n\nimport { convertToBoolean } from './../../../utils/util';\n\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\n\nimport { PoLoadingOverlayLiterals } from './interfaces/po-loading-overlay-literals.interface';\n\nexport const poLoadingOverlayLiteralsDefault = {\n  en: <PoLoadingOverlayLiterals>{\n    loading: 'Loading'\n  },\n  es: <PoLoadingOverlayLiterals>{\n    loading: 'Cargando'\n  },\n  pt: <PoLoadingOverlayLiterals>{\n    loading: 'Carregando'\n  },\n  ru: <PoLoadingOverlayLiterals>{\n    loading: 'Загрузка'\n  }\n};\n\n/**\n *\n * @description\n *\n * Este componente mostra ao usuário uma imagem de _loading_ e bloqueia a página inteira ou o container escolhido,\n * enquanto aguarda a resposta de alguma requisição.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS): <br>\n * Obs: Só é possível realizar alterações ao adicionar a classe `.po-loading`\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                      |\n * |----------------------------------------|-------------------------------------------------------|---------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                   |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                        |\n * | `--font-weight`                        | Peso da fonte                                         | `var(--font-weight-normal)`                       |\n * | `--text-color`                         | Cor do texto                                          | `var(--color-neutral-dark-70)`                    |\n * | `--border-radius`                      | Contém o valor do raio dos cantos do elemento&nbsp;   | `var(--border-radius-md)`                         |\n * | `--border-width`                       | Contém o valor da largura dos cantos do elemento&nbsp;| `var(--border-width-sm)`                          |\n * | `--border-color`                       | Cor da borda                                          | `var(--color-neutral-light-20)`                   |\n * | `--background`                         | Cor de background                                     | `var(--color-neutral-light-00)`                   |\n * | `--shadow`                             | Contém o valor da sombra do elemento                  | `var(--shadow-md)`                                |\n * | **po-loading-icon**                    |                                                       |                                                   |\n * | `--color`                              | Cor principal do spinner                              | `var(--color-action-default)`                     |\n *\n */\n@Directive()\nexport class PoLoadingOverlayBaseComponent {\n  private _screenLock?: boolean = false;\n  private _text?: string;\n  private _size?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se o *overlay* será aplicado a um *container* ou à página inteira.\n   *\n   * Para utilizar o componente como um *container*, o elemento pai deverá receber uma posição relativa, por exemplo:\n   *\n   * ```\n   * <div style=\"position: relative\">\n   *\n   *  <po-chart [p-series]=\"[{ value: 10, category: 'Example' }]\">\n   *  </po-chart>\n   *\n   *  <po-loading-overlay>\n   *  </po-loading-overlay>\n   * </div>\n   * ```\n   *\n   * @default `false`\n   */\n  @Input('p-screen-lock') set screenLock(screenLock: boolean) {\n    this._screenLock = convertToBoolean(screenLock);\n  }\n\n  get screenLock() {\n    return this._screenLock;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Texto a ser exibido no componente.\n   *\n   * > O valor padrão será traduzido de acordo com o idioma configurado no [**PoI18n**](/documentation/po-i18n) ou navegador.\n   *\n   * @default `Carregando`\n   */\n  @Input('p-text') set text(value: string) {\n    this._text = value || this.getTextDefault();\n  }\n\n  get text(): string {\n    return this._text;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente com base no tamanho do ícone de *loading*.\n   *\n   * Tamanhos disponíveis para o *loading*:\n   * - `xs`: 1rem\n   * - `sm`: 1.5rem\n   * - `md`: 3rem\n   * - `lg`: 5rem (valor padrão)\n   *\n   * @default `lg`\n   */\n  @Input('p-size') set size(value: string | null) {\n    this._size = value === '' || !value ? 'lg' : value;\n  }\n\n  get size(): string {\n    return this._size;\n  }\n\n  constructor(private readonly languageService: PoLanguageService) {\n    this.text = this.getTextDefault();\n  }\n\n  private getTextDefault(): string {\n    const language = this.languageService.getShortLanguage();\n\n    return poLoadingOverlayLiteralsDefault[language].loading;\n  }\n}\n","import { Directive, Input } from '@angular/core';\nimport { convertToBoolean } from './../../utils/util';\n\n@Directive()\nexport class PoOverlayBaseComponent {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se o *overlay* será aplicado a um *container* ou a página inteira.\n   *\n   * Para utilizar o componente como um *container*, o elemento pai deverá receber uma posição relativa, por exemplo:\n   *\n   * ```\n   * <div style=\"position: relative\">\n   *\n   *  <po-chart [p-series]=\"[{ value: 10, category: 'Example' }]\">\n   *  </po-chart>\n   *\n   *  <po-overlay>\n   *  </po-overlay>\n   * </div>\n   * ```\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-screen-lock', transform: convertToBoolean }) screenLock: boolean = false;\n}\n","import { Component } from '@angular/core';\nimport { PoOverlayBaseComponent } from './po-overlay-base.component';\n\n@Component({\n  selector: 'po-overlay',\n  templateUrl: './po-overlay.component.html',\n  standalone: false\n})\nexport class PoOverlayComponent extends PoOverlayBaseComponent {}\n","<div class=\"po-overlay\" [class.po-overlay-fixed]=\"screenLock\" role=\"alert\" aria-busy=\"true\">\n  <div class=\"po-overlay-content\">\n    <ng-content></ng-content>\n  </div>\n</div>\n","export enum PoLoadingIconSize {\n  /** Extra small */\n  xs = 'xs',\n  /** Small */\n  sm = 'sm',\n  /** Medium*/\n  md = 'md',\n  /** Large*/\n  lg = 'lg'\n}\n","import { Directive, Input } from '@angular/core';\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { getDefaultSizeFn } from '../../utils/util';\nimport { PoLoadingIconSize } from './enums/po-loading-icon-size-enum';\nimport { PoLoadingLiterals } from './interfaces/po-loading-literals.interface';\n\nexport const poLoadingLiteralsDefault = {\n  en: <PoLoadingLiterals>{\n    loading: 'Loading'\n  },\n  es: <PoLoadingLiterals>{\n    loading: 'Cargando'\n  },\n  pt: <PoLoadingLiterals>{\n    loading: 'Carregando'\n  },\n  ru: <PoLoadingLiterals>{\n    loading: 'Загрузка'\n  }\n};\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Este componente tem o objetivo de mostrar visualmente aos usuários que a aplicação está processando\n * ou aguardando a resposta de alguma requisição.\n */\n@Directive()\nexport class PoLoadingBaseComponent {\n  private _text?: string;\n  private _size?: PoLoadingIconSize;\n\n  /**\n   * Texto a ser exibido no componente.\n   */\n  @Input('p-text') set text(value: string) {\n    this._text = value || (value === '' ? '' : this.getTextDefault());\n  }\n\n  get text(): string {\n    return this._text;\n  }\n\n  /**\n   * Define o tamanho do ícone.\n   * Valores válidos:\n   *  - `xs`: 16px\n   *  - `sm`: 24px\n   *  - `md`: 32px\n   *  - `lg`: 80px\n   *\n   * @default `lg`\n   */\n  @Input('p-size') set size(value: string) {\n    if (value && PoLoadingIconSize[value]) {\n      this._size = PoLoadingIconSize[value];\n    } else {\n      this._size = PoLoadingIconSize.lg;\n    }\n  }\n\n  get size(): string {\n    return this._size;\n  }\n\n  @Input('p-in-overlay') inOverlay: boolean = false;\n\n  constructor(protected languageService: PoLanguageService) {\n    this.text = this.getTextDefault();\n  }\n\n  private getTextDefault(): string {\n    const language = this.languageService.getShortLanguage();\n\n    return poLoadingLiteralsDefault[language].loading;\n  }\n}\n","import { InjectionToken, Type } from '@angular/core';\n\nexport const LOADING_ICON_COMPONENT = new InjectionToken<Type<any>>('LOADING_ICON_COMPONENT');\n","import {\n  AfterViewInit,\n  Component,\n  ComponentRef,\n  Inject,\n  Input,\n  OnDestroy,\n  Optional,\n  Type,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\n\nimport { convertToBoolean, uuid } from '../../../utils/util';\nimport { PoLoadingIconSize } from '../enums/po-loading-icon-size-enum';\nimport { LOADING_ICON_COMPONENT } from './po-loading-icon-component-injection-token';\nimport { LoadingIconComponent } from '../interfaces/po-loading-icon-component';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente que exibe um ícone de carregamento de conteúdo. A cor padrão para ele é a primária conforme o tema utilizado.\n * É possível alterá-la para um tom cinza conforme a necessidade.\n */\n@Component({\n  selector: 'po-loading-icon',\n  templateUrl: 'po-loading-icon.component.html',\n  standalone: false\n})\nexport class PoLoadingIconComponent implements AfterViewInit, OnDestroy {\n  private _neutralColor: boolean;\n  private _size: string = 'md';\n  private createdRef: ComponentRef<LoadingIconComponent>;\n  id = uuid();\n\n  @ViewChild('loadingContainer', { read: ViewContainerRef, static: false }) loadingContainer: ViewContainerRef;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Definição para cor neutra (cinza) para o ícone de carregamento.\n   *\n   * @default `false`\n   */\n  @Input('p-neutral-color') set neutralColor(value: boolean) {\n    this._neutralColor = convertToBoolean(value);\n  }\n\n  get neutralColor(): boolean {\n    return this._neutralColor;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Definição do tamanho do ícone.\n   *\n   * Valores válidos:\n   *  - `xs`: tamanho `extra small`\n   *  - `sm`: tamanho `small`\n   *  - `md`: tamanho `medium`\n   *  - `lg`: tamanho `large`\n   *\n   * @default `md`\n   */\n  @Input('p-size') set size(value: string) {\n    this._size = PoLoadingIconSize[value] ? PoLoadingIconSize[value] : PoLoadingIconSize.md;\n    if (this.createdRef) {\n      this.createdRef.instance.size = this.size;\n    }\n  }\n\n  get size(): string {\n    return this._size;\n  }\n\n  @Input('p-in-overlay') inOverlay: boolean = false;\n\n  constructor(@Optional() @Inject(LOADING_ICON_COMPONENT) public loadingIconComponent?: Type<LoadingIconComponent>) {}\n\n  ngOnDestroy() {\n    if (this.createdRef) {\n      this.createdRef.destroy();\n    }\n  }\n\n  ngAfterViewInit() {\n    if (this.loadingIconComponent && this.loadingContainer && this.inOverlay) {\n      this.loadingContainer.clear();\n      this.createdRef = this.loadingContainer.createComponent(this.loadingIconComponent);\n      this.createdRef.instance.size = this.size;\n    }\n  }\n}\n","@if (inOverlay && loadingIconComponent) {\n  <ng-template #loadingContainer></ng-template>\n} @else {\n  <div class=\"po-loading-icon-container po-loading-svg-{{ size }}\">\n    <svg\n      [ngClass]=\"neutralColor ? 'po-loading-icon-neutral' : 'po-loading-icon'\"\n      class=\"po-loading-icon-animated\"\n      viewBox=\"0 0 200 200\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <defs>\n        <linearGradient [id]=\"'first' + id\">\n          <stop offset=\"0\" stop-opacity=\"0\" stop-color=\"currentColor\" />\n          <stop offset=\"1\" stop-opacity=\"0.5\" stop-color=\"currentColor\" />\n        </linearGradient>\n        <linearGradient [id]=\"'second' + id\">\n          <stop offset=\"0\" stop-opacity=\"1\" stop-color=\"currentColor\" />\n          <stop offset=\"1\" stop-opacity=\"0.5\" stop-color=\"currentColor\" />\n        </linearGradient>\n      </defs>\n      <g stroke-width=\"24\" transform=\"matrix(0.876218, 0, 0, 0.87855, 12.377892, 12.144993)\">\n        <path [attr.stroke]=\"'url(#' + 'first' + id + ')'\" d=\"M 4 100 A 96 96 0 0 1 196 100\" />\n        <path [attr.stroke]=\"'url(#' + 'second' + id + ')'\" d=\"M 196 100 A 96 96 0 0 1 4 100\" />\n        <path stroke=\"currentColor\" d=\"M 4 100 A 96 96 0 0 1 4 98\" />\n      </g>\n    </svg>\n  </div>\n}\n","import { Component } from '@angular/core';\n\nimport { PoLoadingBaseComponent } from './po-loading-base.component';\n\n/**\n * @docsPrivate\n *\n * @docsExtends PoLoadingBaseComponent\n */\n@Component({\n  selector: 'po-loading',\n  templateUrl: 'po-loading.component.html',\n  standalone: false\n})\nexport class PoLoadingComponent extends PoLoadingBaseComponent {}\n","<div class=\"po-loading po-loading-{{ size }}\">\n  <po-loading-icon [p-size]=\"size\" [p-in-overlay]=\"inOverlay\"></po-loading-icon>\n\n  @if (text) {\n    <span class=\"po-loading-label po-text-ellipsis\"\n      >{{ text }}\n      <div class=\"po-loading-dot\" aria-hidden=\"true\">.</div>\n      <div class=\"po-loading-dot\" aria-hidden=\"true\">.</div>\n      <div class=\"po-loading-dot\" aria-hidden=\"true\">.</div>\n    </span>\n  }\n</div>\n","import { Component, ChangeDetectorRef, inject } from '@angular/core';\n\nimport { PoLanguageService } from './../../../services/po-language/po-language.service';\n\nimport { PoLoadingOverlayBaseComponent } from './po-loading-overlay-base.component';\n\n/**\n *\n * @docsExtends PoLoadingOverlayBaseComponent\n *\n * @example\n *\n * <example name=\"po-loading-overlay-basic\" title=\"PO Loading Overlay Basic\">\n *  <file name=\"sample-po-loading-overlay-basic/sample-po-loading-overlay-basic.component.html\"> </file>\n *  <file name=\"sample-po-loading-overlay-basic/sample-po-loading-overlay-basic.component.ts\"> </file>\n *  <file name=\"sample-po-loading-overlay-basic/sample-po-loading-overlay-basic.component.css\"> </file>\n * </example>\n *\n * <example name=\"po-loading-overlay-labs\" title=\"PO Loading Overlay Labs\">\n *  <file name=\"sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.html\"> </file>\n *  <file name=\"sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.ts\"> </file>\n *  <file name=\"sample-po-loading-overlay-labs/sample-po-loading-overlay-labs.component.css\"> </file>\n * </example>\n *\n * <example name=\"po-loading-overlay-connection-test\" title=\"PO Loading Overlay - Connection Test\">\n *  <file name=\"sample-po-loading-overlay-connection-test/sample-po-loading-overlay-connection-test.component.html\"> </file>\n *  <file name=\"sample-po-loading-overlay-connection-test/sample-po-loading-overlay-connection-test.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-loading-overlay',\n  templateUrl: 'po-loading-overlay.component.html',\n  standalone: false\n})\nexport class PoLoadingOverlayComponent extends PoLoadingOverlayBaseComponent {\n  changeDetector = inject(ChangeDetectorRef);\n\n  constructor() {\n    const languageService = inject(PoLanguageService);\n\n    super(languageService);\n  }\n}\n","<po-overlay [p-screen-lock]=\"screenLock\">\n  <po-loading [p-text]=\"text\" [p-size]=\"size\" [p-in-overlay]=\"true\"></po-loading>\n</po-overlay>\n","import { Directive, EventEmitter, HostBinding, Input, Output, TemplateRef } from '@angular/core';\nimport { convertToBoolean } from '../../../utils/util';\nimport { PoItemListFilterMode } from '../enums/po-item-list-filter-mode.enum';\nimport { PoItemListType } from '../enums/po-item-list-type.enum';\nimport { PoItemListAction } from './interfaces/po-item-list-action.interface';\nimport { PoItemListOptionGroup } from './interfaces/po-item-list-option-group.interface';\nimport { PoItemListOption } from './interfaces/po-item-list-option.interface';\n\n/**\n * @description\n *\n * O componente `po-item-list` é a menor parte da lista de ação que compõem o componente [**PO Listbox**](/documentation/po-listbox).\n */\n@Directive()\nexport class PoItemListBaseComponent {\n  private readonly _label: string;\n  private readonly _value: string;\n  private _type!: PoItemListType;\n  private _visible: boolean = true;\n  private _disabled: boolean = false;\n  _activeTabs: boolean = false;\n\n  @HostBinding('attr.p-type')\n  @Input('p-type')\n  set type(value: string) {\n    this._type = PoItemListType[value] ?? 'action';\n  }\n\n  get type(): PoItemListType {\n    return this._type;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o estado como visível.\n   *\n   * @default `true`\n   */\n  @Input('p-visible')\n  set visible(value: any) {\n    if (value === true || value === null || value === undefined) {\n      this._visible = true;\n    } else {\n      this._visible = false;\n    }\n  }\n\n  get visible(): boolean {\n    return this._visible;\n  }\n\n  @Input('p-item') item: PoItemListAction | PoItemListOption | PoItemListOptionGroup | any;\n\n  /** Texto de exibição do item. */\n  @Input('p-label') label: string;\n\n  /** Tamanho do texto exibido. */\n  @HostBinding('attr.p-size')\n  @Input('p-size')\n  size: string;\n\n  /** Valor do item. */\n  @Input('p-value') value: string;\n\n  @Input({ alias: 'p-danger', transform: convertToBoolean }) danger: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o estado como desabilitado.\n   *\n   * @default `false`\n   */\n  @Input('p-disabled')\n  set disabled(value: any) {\n    if (value === false || value === null || value === undefined) {\n      this._disabled = false;\n    } else {\n      this._disabled = true;\n    }\n  }\n\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se a ação está selecionada.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-selected', transform: convertToBoolean }) selected: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Atribui uma linha separadora acima do item.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-separator', transform: convertToBoolean }) separator: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define um ícone que será exibido ao lado esquerdo do rótulo.\n   */\n  @Input('p-icon') icon: string | TemplateRef<void>;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se deve ser exibido o ícone indicando subnível.\n   */\n  @Input('p-icon-arrow-right') iconArrowRight: string;\n\n  // Define a posição do ícone: 'left' (padrão) ou 'right'.\n  @Input('p-icon-position') iconPosition: 'left' | 'right' = 'left';\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Ação a ser realizada ao clicar no item do tipo `option`.\n   */\n  @Output('p-click-item') clickItem = new EventEmitter<PoItemListAction | any>();\n\n  // MULTISELECT PROPERTIES\n  //emissao de evento do checkbox\n  @Output('p-selectcheckbox-item') checkboxItem = new EventEmitter<any>();\n\n  @Output('p-selectcombo-item') comboItem = new EventEmitter<any>();\n\n  //valor do checkbox de selecionar todos\n  @Input('p-checkbox-value') checkboxValue: any;\n\n  @Input('p-field-value') fieldValue: string = 'value';\n\n  @Input('p-field-label') fieldLabel: string = 'label';\n\n  @Input('p-template') template: TemplateRef<any> | any;\n\n  @Input('p-template-context') templateContext: any;\n\n  @Input('p-search-value') searchValue: string = '';\n\n  @Input('p-filter-mode') filterMode: PoItemListFilterMode = PoItemListFilterMode.contains;\n\n  @Input('p-filtering') isFiltering: boolean = false;\n\n  @Input('p-should-mark-letter') shouldMarkLetters: boolean = true;\n\n  @Input('p-compare-cache') compareCache: boolean = false;\n\n  @Input('p-combo-service') comboService: any;\n\n  // TABS PROPERTIES\n\n  @Input('p-is-tabs') isTabs?: boolean = false;\n\n  @Input('p-tab-hide') tabHide?: boolean = false;\n\n  @Output('p-emit-item-tabs') tabsItem = new EventEmitter<any>();\n\n  @Output('p-activated-tabs') activatedTab = new EventEmitter();\n\n  // Ativa o botão\n  @Input('p-active-tabs') set activeTabs(value: boolean) {\n    this._activeTabs = value;\n\n    this.emitActiveTabs(this.item);\n  }\n\n  get activeTabs() {\n    return this._activeTabs;\n  }\n\n  // Define os nomes das propriedades do objeto que serão exibidos como rótulos (labels)\n  @Input('p-keys-label') keysLabel?: Array<string> = [];\n\n  protected emitActiveTabs(tab) {\n    if (tab?.active) {\n      this.activatedTab.emit(tab);\n    }\n  }\n}\n","/**\n * @docsPrivate\n *\n * @description\n *\n * Enum que contém os valores numéricos dos *keyCodes*.\n */\nexport enum PoKeyCodeEnum {\n  /** Seta para baixo */\n  arrowDown = 40,\n\n  /** Seta para cima */\n  arrowUp = 38,\n\n  /** Backspace */\n  backspace = 8,\n\n  /** Delete */\n  delete = 46,\n\n  /** Enter */\n  enter = 13,\n\n  /** Esc */\n  esc = 27,\n\n  /** Tecla K */\n  keyK = 75,\n\n  /** Tecla L */\n  keyL = 76,\n\n  /** Espaço */\n  space = 32,\n\n  /** Tab */\n  tab = 9,\n\n  /** Arrow Left */\n  left = 37,\n\n  /** Arrow Right */\n  right = 39\n}\n","/**\n * @description\n *\n * Tamanhos da propriedade `p-size`. A medida `small` está disponível apenas para acessibilidade AA.\n */\nexport enum PoCheckboxSize {\n  /** Define a caixa de seleção como 16px. */\n  Small = 'small',\n\n  /** Define a caixa de seleção comoc24px. */\n  Medium = 'medium',\n\n  /** Define a caixa de seleção comoc32px. */\n  Large = 'large'\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  input,\n  Input,\n  Output\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\nimport { convertToBoolean, getDefaultSizeFn, uuid, validateSizeFn } from './../../../utils/util';\nimport { PoCheckboxSize } from './enums/po-checkbox-size.enum';\nimport { PoHelperOptions } from '../../po-helper';\n\n/**\n * @description\n *\n * O componente `po-checkbox` exibe uma caixa de opção com um texto ao lado, na qual é possível marcar e desmarcar através tanto\n * no *click* do *mouse* quanto por meio da tecla *space* quando estiver com foco.\n *\n * Cada opção poderá receber um estado de marcado, desmarcado, indeterminado/mixed e desabilitado, como também uma ação que será disparada quando\n * ocorrer mudanças do valor.\n *\n * > O *model* deste componente aceitará valores igual à `true`, `false` ou `null` para quando for indeterminado/mixed.\n *\n * **Acessibilidade tratada no componente:**\n *\n * Algumas diretrizes de acessibilidade já são tratadas no componente, internamente, e não podem ser alteradas pelo proprietário do conteúdo. São elas:\n *\n * - O componente foi desenvolvido utilizando controles padrões HTML para permitir a identificação do mesmo na interface por tecnologias assistivas. [WCAG 4.1.2: Name, Role, Value](https://www.w3.org/WAI/WCAG21/Understanding/name-role-value)\n * - A área do foco precisar ter uma espessura de pelo menos 2 pixels CSS e o foco não pode ficar escondido por outros elementos da tela. [WCAG 2.4.12: Focus Appearance](https://www.w3.org/WAI/WCAG22/Understanding/focus-appearance-enhanced)\n * - A cor não deve ser o único meio para diferenciar o componente do seu estado marcado e desmarcado. [WGAG 1.4.1: Use of Color, 3.2.4: Consistent Identification](https://www.w3.org/WAI/WCAG21/Understanding/use-of-color)\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                                    | Valor Padrão                                    |\n * |----------------------------------------|--------------------------------------------------------------|-------------------------------------------------|\n * | **Default Values**                     |                                                              |                                                 |\n * | `--border-color`                       | Cor da borda                                                 | `var(--color-neutral-dark-70)`                  |\n * | `--color-unchecked`                    | Cor quando não selecionado                                   | `var(--color-neutral-light-00)`                 |\n * | `--color-checked`                      | Cor quando selecionado                                       | `var(--color-action-default)`                   |\n * | `--field-container-title-justify`      | Alinhamento horizontal do título (`justify-content`)         | `space-between`                                 |\n * | `--field-container-title-flex`         | Flex do título (`flex`)                                      | `1 auto`                                        |\n * | **Hover**                              |                                                              |                                                 |\n * | `--color-hover`                        | Cor principal no estado hover                                | `var(--color-action-hover)`                     |\n * | `--shadow-color-hover`                 | Cor da sombra no estado hover                                | `var(--color-brand-01-lighter)`                 |\n * | **Focused**                            |                                                              |                                                 |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                            | `var(--color-action-focus)`                     |\n * | **Disabled**                           |                                                              |                                                 |\n * | `--color-unchecked-disabled` &nbsp;    | Cor pricipal quando não selecionado no estado disabled&nbsp; | `var(--color-action-disabled)`                  |\n * | `--color-checked-disabled` &nbsp;      | Cor pricipal quando selecionado no estado disabled           | `var(--color-neutral-dark-70)`                  |\n *\n */\n@Component({\n  selector: 'po-checkbox-base',\n  template: '',\n  standalone: false\n})\nexport abstract class PoCheckboxBaseComponent implements ControlValueAccessor {\n  // Propriedade interna que define se o ícone de ajuda adicional terá cursor clicável (evento) ou padrão (tooltip).\n  @Input() additionalHelpEventTrigger: string | undefined;\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de ajuda adicional, com o texto desta propriedade sendo passado para o popover do componente `po-helper`.\n   * **Como boa prática, indica-se utilizar um texto com até 140 caracteres.**\n   * > Requer um recuo mínimo de 8px se o componente estiver próximo à lateral da tela.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Input('p-additional-help-tooltip') additionalHelpTooltip?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o popover (`p-helper`) será incluído no body da página e não dentro do componente. Essa\n   * opção pode ser necessária em cenários com containers que possuem scroll ou overflow escondido, garantindo o\n   * posicionamento correto do tooltip próximo ao elemento.\n   *\n   * > Quando utilizado com `p-helper`, leitores de tela como o NVDA podem não ler o conteúdo do popover.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendBox?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define se o título do campo será exibido de forma compacta.\n   *\n   * Quando habilitado (`true`), o modo compacto afeta o conjunto composto por:\n   * - `po-label`\n   * - `p-requirement (showRequired)`\n   * - `po-helper`\n   *\n   * Ou seja, todos os elementos relacionados ao título do campo\n   * (rótulo, indicador de obrigatoriedade e componente auxiliar) passam\n   * a seguir o comportamento de layout compacto.\n   *\n   * Também é possível definir esse comportamento de forma global,\n   * uma única vez, na folha de estilo geral da aplicação, por meio\n   * da customização dos tokens CSS:\n   *\n   * - `--field-container-title-justify`\n   * - `--field-container-title-flex`\n   *\n   * Exemplo:\n   *\n   * ```\n   * :root {\n   *   --field-container-title-justify: flex-start;\n   *   --field-container-title-flex: 0 1 auto;\n   * }\n   * ```\n   *\n   * Dessa forma, o layout compacto passa a ser o padrão da aplicação,\n   * sem a necessidade de definir a propriedade individualmente em cada campo.\n   *\n   * @default `false`\n   */\n  compactLabel = input<boolean, unknown>(false, { alias: 'p-compact-label', transform: convertToBoolean });\n\n  /**\n   * @optional\n   *\n   * @description\n   * Texto de apoio do campo */\n  @Input('p-help') help?: string;\n\n  /** Define o nome do *checkbox*. */\n  @Input('name') name: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Aplica foco no elemento ao ser iniciado.\n   *\n   * > Caso mais de um elemento seja configurado com essa propriedade, apenas o último elemento declarado com ela terá o foco.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-auto-focus', transform: convertToBoolean }) autoFocus: boolean = false;\n\n  /** Texto de exibição do *checkbox*. */\n  @Input('p-label') label?: string;\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar no ícone de ajuda adicional.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Output('p-additional-help') additionalHelp = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao sair do campo.\n   */\n  @Output('p-blur') blur: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado quando o valor do *checkbox* for alterado.\n   */\n  @Output('p-change') change: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado quando uma tecla é pressionada enquanto o foco está no componente.\n   * Retorna um objeto `KeyboardEvent` com informações sobre a tecla.\n   */\n  @Output('p-keydown') keydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n  //propriedade interna recebida do checkbox-group para verificar se o checkbox está ativo, inativo ou indeterminate\n  @Input('p-checkboxValue') checkboxValue: boolean | null | string;\n\n  //propriedade interna recebida do checkbox-group para verificar se o checkbox é required\n  @Input({ alias: 'p-required', transform: convertToBoolean }) checkBoxRequired: boolean;\n\n  //propriedade interna recebida para desabilitar o tabindex do checkbox na utilização dentro de um list-box\n  @Input({ alias: 'p-disabled-tabindex', transform: convertToBoolean }) disabladTabindex: boolean = false;\n\n  displayAdditionalHelp: boolean = false;\n  id = uuid();\n  propagateChange: any;\n  onTouched;\n\n  private _disabled?: boolean = false;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o estado do *checkbox* como desabilitado.\n   *\n   * @default `false`\n   */\n  @Input('p-disabled') set disabled(value: boolean) {\n    this._disabled = convertToBoolean(value);\n  }\n\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho da caixa de seleção do componente:\n   * - `small`: 16x16 (disponível apenas para acessibilidade AA).\n   * - `medium`: 24x24.\n   * - `large`: 32x32.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   *\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoCheckboxSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as opções do componente de ajuda (po-helper) que será exibido ao lado do label quando a propriedade `p-label` for definida, ou, ao lado do componente na ausência da propriedade `p-label`.\n   * > Para mais informações acesse: https://po-ui.io/documentation/po-helper.\n   *\n   * > Ao configurar esta propriedade, o antigo ícone de ajuda adicional (`p-additional-help-tooltip` e `p-additional-help`) será ignorado.\n   */\n  poHelperComponent = input<PoHelperOptions | string>(undefined, { alias: 'p-helper' });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a quebra automática do texto da propriedade `p-label`. Quando `p-label-text-wrap` for verdadeiro, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * @default `false`\n   */\n  labelTextWrap = input<boolean>(false, { alias: 'p-label-text-wrap' });\n\n  constructor(private readonly cd: ChangeDetectorRef) {}\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  changeValue() {\n    if (this.propagateChange) {\n      this.propagateChange(this.checkboxValue);\n    }\n\n    this.change.emit(this.checkboxValue);\n  }\n\n  checkOption(event: any, value: boolean | null | string) {\n    const target = event.target as HTMLElement;\n\n    if (target.closest('po-helper')) {\n      return;\n    }\n\n    if (!this.disabled) {\n      value === 'mixed' ? this.changeModelValue(true) : this.changeModelValue(!value);\n      this.changeValue();\n    }\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar os estados de habilitado via forms api\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n    this.cd.markForCheck();\n  }\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  writeValue(value: any) {\n    if (value !== this.checkboxValue) {\n      this.changeModelValue(value);\n    }\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoCheckboxSize);\n    this._size = size;\n  }\n\n  protected abstract changeModelValue(value: boolean | null);\n}\n","import { Component, HostBinding, input } from '@angular/core';\nimport { PoHelperOptions } from './interfaces/po-helper.interface';\nimport { validateSizeFn } from '../../utils/util';\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\n/**\n * @description\n *\n * O componente `po-helper` exibe um ícone de ajuda ou informação ao lado de campos, botões ou outros elementos, permitindo ao usuário acessar conteúdos explicativos em um popover.\n *\n * Principais funcionalidades:\n * - Exibe ícone de ajuda (`help`) ou informação (`info`) conforme configuração.\n * - Permite definir título, conteúdo e ações no popover via propriedade `p-helper`.\n * - Suporte a acessibilidade: navegação por teclado, atributos ARIA e leitura do conteúdo por leitores de tela.\n * - Controle do tamanho do componente via propriedade `p-size` (`small` ou `medium`).\n * - Permite customizar ações no rodapé do popover.\n *\n * Exemplo de uso:\n * ```html\n * <po-helper\n *   [p-helper]=\"{ title: 'Ajuda', content: 'Texto explicativo', type: 'help' }\"\n *   [p-size]=\"'medium'\"\n * ></po-helper>\n * ```\n *\n * Também é possível passar apenas uma string para o conteúdo:\n * ```html\n * <po-helper p-helper=\"Texto explicativo\"></po-helper>\n * ```\n *\n * A propriedade `p-helper` aceita um objeto do tipo `PoHelperOptions`:\n * ```typescript\n * interface PoHelperOptions {\n *   title?: string;\n *   content: string;\n *   type?: 'help' | 'info';\n *   eventOnClick?: Function;\n *   footerAction?: { label: string; action: Function };\n * }\n * ```\n *\n * > **Importante:** A propriedade `footerAction` não pode ser utilizada quando o tipo do helper for `info`, pois o ícone de informação é destinado apenas para exibir informações estáticas sem ações adicionais.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                                | Descrição                                                     | Valor Padrão                                      |\n * |--------------------------------------------|---------------------------------------------------------------|---------------------------------------------------|\n * | `--color`                                  | Cor principal do ícone                                        | `var(--color-action-default)`                     |\n * | `--border-color-hover`                     | Cor da borda no estado hover                                  | `var(--color-brand-01-darkest)`                   |\n * | `--background-pressed`                     | Cor de background no estado de pressionado&nbsp;              | `var(--color-brand-01-light)`                     |\n * | `--color-disabled`                         | Cor principal no estado disabled                              | `var(--color-action-disabled)`                    |\n *\n */\n@Component({\n  selector: 'po-helper-base',\n  template: '',\n  standalone: false\n})\nexport class PoHelperBaseComponent {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o conteúdo e as opções do popover de ajuda/informação.\n   *\n   * Aceita uma string simples (exibida como conteúdo) ou um objeto do tipo `PoHelperOptions` para configuração avançada:\n   * - `title`: Título do popover.\n   * - `content`: Conteúdo explicativo exibido no popover.\n   * - `type`: Tipo do ícone (`help` ou `info`).\n   * - `eventOnClick`: Função chamada ao clicar no ícone.\n   * - `footerAction`: Objeto com `label` e `action` para ação customizada no rodapé do popover.\n   *\n   * Exemplo de uso:\n   * ```html\n   * <po-helper p-helper=\"Texto explicativo\"></po-helper>\n   * <po-helper [p-helper]=\"{ title: 'Ajuda', content: 'Texto', type: 'help' }\"></po-helper>\n   * ```\n   *\n   */\n  helper = input<PoHelperOptions | string>(undefined, {\n    alias: 'p-helper',\n    transform: this.transformHelper.bind(this)\n  });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura do ícone com seu valor de 16px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura do ícone com seu valor de 24px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  size = input<string>(undefined, { alias: 'p-size' });\n\n  @HostBinding('attr.p-size')\n  get hostSize(): string {\n    return validateSizeFn(this.size(), PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica se o helper deve ser exibido no estado desativado, desabilitando interações do usuário.\n   *\n   * @default `false`\n   */\n  disabled = input<boolean>(false, { alias: 'p-disabled' });\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define que o popover será inserido no body da página em vez do elemento definido em `p-target`. Essa opção pode\n   * ser necessária em cenários com containers que possuem scroll ou overflow escondido, garantindo o posicionamento\n   * correto do conteúdo próximo ao elemento.\n   */\n  appendBox = input<boolean>(false, { alias: 'p-append-in-body' });\n\n  private transformHelper(value: PoHelperOptions | string): PoHelperOptions {\n    if (!value) return;\n    if (typeof value === 'string') {\n      return {\n        title: '',\n        content: value,\n        type: 'help'\n      };\n    }\n    if (!value.type) {\n      value.type = 'help';\n    }\n    if (value.type === 'info' && value.footerAction) {\n      delete value.footerAction;\n    }\n    return value;\n  }\n}\n","/**\n * @usedBy PoButtonComponent, PoWidgetComponent\n *\n * @description\n *\n * Estilos disponíveis do button.\n */\nexport enum PoButtonKind {\n  /** Estilo primário, usado para ações principais que requerem maior destaque. */\n  primary = 'primary',\n\n  /** Estilo secundário, usado como padrão, para ações comuns. */\n  secondary = 'secondary',\n\n  /** Estilo terciário, ideal para ações menos importantes, sem fundo preenchido. */\n  tertiary = 'tertiary'\n}\n","/**\n * @description\n *\n * Tamanhos da propriedade `p-size`. A medida `small` está disponível apenas para acessibilidade AA.\n */\nexport enum PoButtonSize {\n  /** Define a altura do button como 32px. */\n  Small = 'small',\n\n  /** Define a altura do button como 44px. */\n  Medium = 'medium',\n\n  /** Define a altura do button como 56px. */\n  Large = 'large'\n}\n","/**\n * @usedBy PoButtonComponent\n *\n * @description\n *\n * Enumeração que define os tipos possíveis para o `PoButtonComponent`. Estes tipos estão relacionados ao comportamento\n * do botão quando utilizado dentro de um formulário HTML.\n *\n * @example\n * No uso com o `PoButtonComponent`, a propriedade `p-type` pode ser utilizada para configurar o comportamento:\n *\n * ```\n * <po-button p-label=\"Enviar\" p-type=\"submit\"></po-button>\n * <po-button p-label=\"Cancelar\" p-type=\"button\"></po-button>\n * <po-button p-label=\"Redefinir\" p-type=\"reset\"></po-button>\n * ```\n */\nexport enum PoButtonType {\n  /**\n   * Define o botão como do tipo `submit`. Quando clicado, o formulário é enviado automaticamente,\n   * disparando o evento `submit`.\n   */\n  Submit = 'submit',\n\n  /**\n   * Define o botão como do tipo `button`. Este tipo de botão não possui comportamento padrão associado\n   * e é utilizado principalmente para ações programáticas como cliques e disparos de eventos customizados.\n   */\n  Button = 'button',\n\n  /**\n   * Define o botão como do tipo `reset`. Quando clicado, redefine os campos do formulário ao qual pertence\n   * para seus valores iniciais.\n   */\n  Reset = 'reset'\n}\n","import { Component, EventEmitter, HostBinding, HostListener, Input, Output, TemplateRef, input } from '@angular/core';\n\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from '../../utils/util';\n\nimport { PoButtonKind } from './enums/po-button-kind.enum';\nimport { PoButtonSize } from './enums/po-button-size.enum';\nimport { PoButtonType } from './enums/po-button-type.enum';\n/**\n * @description\n *\n * O `po-button` permite que o usuário execute ações predefinidas pelo desenvolvedor.\n *\n * Através dos tipos, é possível identificar a importância de cada ação.\n *\n * #### Boas práticas\n *\n * - Evite `labels` extensos que quebram o layout do `po-button`, use `labels` diretos, curtos e intuitivos.\n * - Utilize apenas um `po-button` configurado como `primary` por página.\n * - Para ações irreversíveis use sempre a propriedade `p-danger`.\n *\n * #### Acessibilidade tratada no componente\n *\n * Algumas diretrizes de acessibilidade já são tratadas no componente, internamente, e não podem ser alteradas pelo proprietário do conteúdo. São elas:\n *\n * - Quando em foco, o botão é ativado usando as teclas de Espaço e Enter do teclado. [W3C WAI-ARIA 3.5 Button - Keyboard Interaction](https://www.w3.org/WAI/ARIA/apg/#keyboard-interaction-3)\n * - A área do foco precisar ter uma espessura de pelo menos 2 pixels CSS e o foco não pode ficar escondido por outros elementos da tela. [WCAG 2.4.12: Focus Appearance](https://www.w3.org/WAI/WCAG22/Understanding/focus-appearance-enhanced)\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                              | Descrição                                             | Valor Padrão                                      |\n * |------------------------------------------|-------------------------------------------------------|---------------------------------------------------|\n * | `--font-family`                          | Família tipográfica usada                             | `var(--font-family-theme)`                        |\n * | `--font-size`                            | Tamanho da fonte                                      | `var(--font-size-default)`                        |\n * | `--font-weight`                          | Peso da fonte                                         | `var(--font-weight-bold)`                         |\n * | `--line-height`                          | Tamanho da label                                      | `var(--line-height-none)`                         |\n * | `--border-radius`                        | Contém o valor do raio dos cantos do elemento&nbsp;   | `var(--border-radius-md)`                         |\n * | `--border-width`                         | Contém o valor da largura dos cantos do elemento&nbsp;| `var(--border-width-md)`                          |\n * | `--padding`                              | Preenchimento                                         | `0 1em`                                           |                                                                        | ---                                             |\n * | **Danger**                               |                                                       |                                                   |\n * | `--text-color-danger`                    | Cor do texto no estado danger                         | `var(--color-neutral-light-00)`                   |\n * | `--color-button-danger`                  | Cor do botão no estado danger                         | `var(--color-feedback-negative-dark)`             |\n * | `--color-danger-hover`                   | Cor de hover no estado danger                         | `var(--color-feedback-negative-darker)`           |\n * | `--color-danger-pressed`                 | Cor pressionada no estado danger                      | `var(--color-feedback-negative-darkest)`          |\n * | `--background-danger-hover`              | Cor de background de hover no estado danger           | `var(--color-feedback-negative-lighter)`          |\n * | `--border-color-danger-hover`            | Cor da borda de hover no estado danger                | `var(--color-feedback-negative-darkest)`          |\n * | `--background-danger-pressed`            | Cor de background pressionado no estado danger        | `var(--color-feedback-negative-light)`            |\n * | `--background-color-button-danger`&nbsp; | Cor de background do botão no estado danger           | `var(--color-transparent)`                        |\n * | **Default Values**                       |                                                       |                                                   |\n * | `--text-color`                           | Cor do texto                                          | `var(--color-neutral-light-00)`                   |\n * | `--color`                                | Cor principal do botão                                | `var(--color-action-default)`                     |\n * | `--background-color`                     | Cor de background                                     | `var(--color-transparent)`                        |\n * | `--border-color`                         | Cor da borda                                          | `var(--color-transparent)`                        |\n * | `--shadow`                               | Contém o valor da sombra do elemento                  | `var(--shadow-none)`                              |\n * | **Hover**                                |                                                       |                                                   |\n * | `--color-hover`                          | Cor principal no estado hover                         | `var(--color-action-hover)`                       |\n * | `--background-hover`                     | Cor de background no estado hover                     | `var(--color-brand-01-lighter)`                   |\n * | `--border-color-hover`                   | Cor da borda no estado hover                          | `var(--color-brand-01-darkest)`                   |\n * | **Focused**                              |                                                       |                                                   |\n * | `--outline-color-focused`                | Cor do outline do estado de focus                     | `var(--color-action-focus)`                       |\n * | **Pressed**                              |                                                       |                                                   |\n * | `--color-pressed`                        | Cor principal no estado de pressionado                | `var(--color-action-pressed)`                     |\n * | `--background-pressed`                   | Cor de background no estado de pressionado&nbsp;      | `var(--color-brand-01-light)`                     |\n * | **Disabled**                             |                                                       |                                                   |\n * | `--text-color-disabled`                  | Cor do texto no estado disabled                       | `var(--color-neutral-dark-70)`                    |\n * | `--color-disabled`                       | Cor principal no estado disabled                      | `var(--color-action-disabled)`                    |\n * | `--background-color-disabled`            | Cor de background no estado disabled                  | `var(--color-transparent)`                        |\n *\n */\n@Component({\n  selector: 'po-button-base',\n  template: '',\n  standalone: false\n})\nexport class PoButtonBaseComponent {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Label do botão.\n   */\n  readonly label = input<string>(undefined, { alias: 'p-label' });\n\n  /**\n   * @optional\n   *\n   * @description\n   * Ícone exibido ao lado esquerdo do label do botão.\n   *\n   * É possível usar qualquer um dos ícones da [Biblioteca de ícones](https://po-ui.io/icons), conforme exemplo:\n   * ```\n   * <po-button p-icon=\"an an-user\" p-label=\"PO button\"></po-button>\n   * ```\n   * Também é possível utilizar outras fontes de ícones, por exemplo a biblioteca *Font Awesome*, desde que a biblioteca\n   * esteja carregada no projeto:\n   * ```\n   * <po-button p-icon=\"fa fa-podcast\" p-label=\"PO button\"></po-button>\n   * ```\n   * Outra opção seria a customização do ícone através do `TemplateRef`, conforme exemplo abaixo:\n   * ```\n   * <po-button [p-icon]=\"template\" p-label=\"button template ionic\"></po-button>\n   *\n   * <ng-template #template>\n   *  <ion-icon style=\"font-size: inherit\" name=\"heart\"></ion-icon>\n   * </ng-template>\n   * ```\n   * > Para o ícone enquadrar corretamente, deve-se utilizar `font-size: inherit` caso o ícone utilizado não aplique-o.\n   */\n  readonly icon = input<string | TemplateRef<void>>(undefined, { alias: 'p-icon' });\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define o tipo do botão.\n   *\n   * @default `PoButtonType.Button`\n   */\n  readonly type = input<PoButtonType>(PoButtonType.Button, { alias: 'p-type' });\n\n  // Evento disparado ao sair do campo.\n  @Output('p-blur') blur: EventEmitter<any> = new EventEmitter();\n\n  /** Ação que será executada quando o usuário clicar sobre o `po-button`. */\n  @Output('p-click') click = new EventEmitter<null>();\n\n  private _danger?: boolean = false;\n  private _disabled?: boolean = false;\n  private _loading?: boolean = false;\n  private _kind?: string = PoButtonKind.secondary;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n  protected hasSize?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe um ícone de carregamento à esquerda do _label_ do botão.\n   *\n   * > Quando esta propriedade estiver habilitada, desabilitará o botão.\n   *\n   * @default `false`\n   */\n  @Input('p-loading') set loading(value: boolean) {\n    this._loading = convertToBoolean(value);\n  }\n\n  get loading(): boolean {\n    return this._loading;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Deve ser usado em ações irreversíveis que o usuário precisa ter cuidado ao executá-la, como a exclusão de um registro.\n   *\n   * > A propriedade `p-kind=\"tertiary\"` será inativada ao utilizar esta propriedade.\n   */\n\n  @HostBinding('attr.p-danger')\n  @Input({ alias: 'p-danger', transform: convertToBoolean })\n  set danger(value: boolean) {\n    this._danger = this.kind !== PoButtonKind.tertiary ? value : false;\n  }\n\n  get danger(): boolean {\n    return this._danger;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o estilo visual do componente conforme valores especificados no enum `PoButtonKind`:\n   *  - `primary`: destaca o botão, sendo recomendado para ações principais.\n   *  - `secondary`: estilo padrão, ideal para ações secundárias.\n   *  - `tertiary`: exibe o botão sem preenchimento no fundo, indicado para ações opcionais.\n   *\n   * @default `secondary`\n   */\n  @HostBinding('attr.p-kind')\n  @Input('p-kind')\n  set kind(value: string) {\n    this._kind = PoButtonKind[value] ? PoButtonKind[value] : PoButtonKind.secondary;\n  }\n\n  get kind(): string {\n    return this._kind;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita o `po-button` e não permite que o usuário interaja com o mesmo.\n   *\n   * @default `false`\n   */\n  @Input('p-disabled') set disabled(value: boolean) {\n    this._disabled = <any>value === '' ? true : convertToBoolean(value);\n  }\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define um `aria-label` para o `po-button`.\n   *\n   * Caso esta propriedade não seja informada será considerada a label do botão.\n   *\n   * > Em caso de botões com apenas ícone a atribuição de valor à esta propriedade é muito importante para acessibilidade.\n   */\n  readonly ariaLabel = input<string>(undefined, { alias: 'p-aria-label' });\n\n  @Input('p-aria-expanded') ariaExpanded?: boolean = null;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o `tabindex` do elemento `<button>` nativo interno.\n   *\n   * Use `[tabindex]=\"-1\"` para remover o botão da ordem de foco do teclado.\n   */\n  @Input('p-tabindex') tabindex?: number | string = null;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura de 32px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura de 44px.\n   * - `large`: altura de 56px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoButtonSize);\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoButtonSize);\n    this._size = size;\n  }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, ViewChild } from '@angular/core';\n\nimport { PoButtonBaseComponent } from './po-button-base.component';\n\n/**\n * @docsExtends PoButtonBaseComponent\n *\n * @example\n *\n * <example name=\"po-button-basic\" title=\"PO Button Basic\">\n *  <file name=\"sample-po-button-basic/sample-po-button-basic.component.html\"> </file>\n *  <file name=\"sample-po-button-basic/sample-po-button-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-button-labs\" title=\"PO Button Labs\">\n *  <file name=\"sample-po-button-labs/sample-po-button-labs.component.html\"> </file>\n *  <file name=\"sample-po-button-labs/sample-po-button-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-button-social-network\" title=\"PO Button Social Network\">\n *  <file name=\"sample-po-button-social-network/sample-po-button-social-network.component.html\"> </file>\n *  <file name=\"sample-po-button-social-network/sample-po-button-social-network.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-button',\n  templateUrl: './po-button.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoButtonComponent extends PoButtonBaseComponent {\n  @ViewChild('button', { static: true }) buttonElement: ElementRef;\n\n  onBlur(): void {\n    this.blur.emit();\n  }\n\n  /**\n   * Função que atribui foco ao componente.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoButtonComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoButtonComponent, { static: true }) button: PoButtonComponent;\n   *\n   * focusButton() {\n   *   this.button.focus();\n   * }\n   * ```\n   */\n  focus(): void {\n    if (!this.disabled) {\n      this.buttonElement.nativeElement.focus();\n    }\n  }\n\n  mapSizeToIcon(size: string): string {\n    const sizeMap: { [key: string]: string } = {\n      small: 'xs',\n      medium: 'sm',\n      large: 'sm'\n    };\n    return sizeMap[size] || 'sm';\n  }\n\n  onClick() {\n    this.click.emit(null);\n  }\n}\n","<button\n  #button\n  class=\"po-button\"\n  [type]=\"type()\"\n  [attr.p-kind]=\"kind\"\n  [attr.p-danger]=\"danger\"\n  [disabled]=\"disabled || loading\"\n  [attr.aria-label]=\"ariaLabel()\"\n  [attr.aria-expanded]=\"ariaExpanded\"\n  [attr.tabindex]=\"tabindex\"\n  (blur)=\"onBlur()\"\n  (click)=\"onClick()\"\n>\n  @if (loading) {\n    <div class=\"po-button-loading-icon\">\n      <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n    </div>\n  }\n\n  <div class=\"po-button-container\">\n    @if (icon()) {\n      <po-icon class=\"po-button-icon\" [p-icon]=\"icon()\"></po-icon>\n    }\n    @if (label()) {\n      <span class=\"po-button-label\">{{ label() }}</span>\n    }\n  </div>\n</button>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PoOverlayComponent } from './po-overlay.component';\n\n@NgModule({\n  declarations: [PoOverlayComponent],\n  imports: [CommonModule],\n  exports: [PoOverlayComponent]\n})\nexport class PoOverlayModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PoLanguageModule } from './../../services/po-language/po-language.module';\n\nimport { PoLoadingComponent } from './po-loading.component';\nimport { PoLoadingIconComponent } from './po-loading-icon/po-loading-icon.component';\nimport { PoLoadingOverlayComponent } from './po-loading-overlay/po-loading-overlay.component';\nimport { PoOverlayModule } from '../po-overlay/po-overlay.module';\n\n/**\n *\n * @description\n *\n * Módulo do componente po-loading-overlay.\n */\n@NgModule({\n  declarations: [PoLoadingComponent, PoLoadingIconComponent, PoLoadingOverlayComponent],\n  exports: [PoLoadingComponent, PoLoadingIconComponent, PoLoadingOverlayComponent],\n  imports: [CommonModule, PoLanguageModule, PoOverlayModule]\n})\nexport class PoLoadingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PoIconModule } from './../po-icon/index';\nimport { PoLoadingModule } from './../po-loading/index';\n\nimport { PoButtonComponent } from './po-button.component';\n\n/**\n * @description\n *\n * Módulo do componente po-button.\n */\n@NgModule({\n  imports: [CommonModule, PoLoadingModule, PoIconModule],\n  declarations: [PoButtonComponent],\n  exports: [PoButtonComponent]\n})\nexport class PoButtonModule {}\n","import { ElementRef, EventEmitter, Input, Output, input, Component } from '@angular/core';\n\nimport { convertToBoolean } from '../../utils/util';\nimport { PO_CONTROL_POSITIONS } from './../../services/po-control-position/po-control-position.constants';\n\nconst PO_POPOVER_DEFAULT_POSITION = 'right';\nconst PO_POPOVER_DEFAULT_TRIGGER = 'click';\nconst PO_POPOVER_TRIGGERS = ['click', 'hover', 'function'];\n\n/**\n * @description\n *\n * O componente `po-popover` é um container pequeno recomendado para incluir vários tipos de conteúdo como:\n * gráficos, textos, imagens e inputs. Ele abre sobreposto aos outros componentes.\n *\n * Para mostrar apenas pequenos textos recomenda-se o uso da diretiva\n * [**po-tooltip**](https://po-ui.io/documentation/po-tooltip?view=doc).\n *\n * Para conteúdos maiores recomenda-se o uso do [**po-modal**](https://po-ui.io/documentation/po-modal?view=doc).\n *\n * Ele contém um título e também é possível escolher as posições do popover em relação ao componente pai,\n * as posições permitidas são: `right`, `right-top`, `right-bottom`, `top`, `top-left`, `top-right`,\n * `left`, `left-top`, `left-bottom`, `bottom`, `bottom-left` e `bottom-right`.\n *\n * Também é possível escolher entre os dois eventos que podem abrir o *popover*.\n * Os eventos permitidos são: `click` e `hover`.\n *\n */\n@Component({\n  selector: 'po-popover-base',\n  template: '',\n  standalone: false\n})\nexport class PoPopoverBaseComponent {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o popover será inserido no body da página em vez do elemento definido em `p-target`. Essa opção pode\n   * ser necessária em cenários com containers que possuem scroll ou overflow escondido, garantindo o posicionamento\n   * correto do conteúdo próximo ao elemento.\n   *\n   * @default `false`\n   */\n\n  @Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendBox: boolean = false;\n\n  // Indica se o elemento filho será alinhado nos cantos do elemento pai.\n  @Input('p-corner-aligned') cornerAligned = false;\n\n  /**\n   * @description\n   *\n   * ElementRef do componente de origem responsável por abrir o popover.\n   * Para utilizar o po-popover deve-se colocar uma variável no componente que vai disparar o evento\n   * de abertura, exemplo:\n   *\n   * ```\n   * <po-button\n   *   p-label=\"Open Popover\">\n   * </po-button>\n   *\n   * <po-popover\n   *   [p-target]=\"poButton\"\n   *   [p-title]=\"PO Popover\">\n   * </po-popover>\n   * ```\n   *\n   * Também deve-se criar um ViewChild para cada popover, passando como referência o elemento do\n   * HTML que irá disparar o evento. Exemplo:\n   *\n   * ```\n   * @ViewChild(PoButtonComponent, {read: ElementRef}) poButton: PoButtonComponent;\n   * ```\n   *\n   * Pode-se tambem informar diretamente o HTMLElement, para não ter que utilizar o ViewChild.\n   * Para utilizar o po-popover deve-se colocar uma variável no componente que vai disparar o evento\n   * de abertura, exemplo:\n   *\n   * ```\n   * <button #target>\n   *   Abrir popover\n   * </button>\n   *\n   * <po-popover\n   *     [p-target]=\"target\"\n   *     p-trigger=\"click\" >\n   * </po-popover>\n   * ```\n   *\n   *\n   *\n   */\n  @Input('p-target') target: ElementRef | HTMLElement;\n\n  /** Título do popover. */\n  @Input('p-title') title?: string;\n\n  // Define o width do popover.\n  @Input('p-width') width?: number;\n\n  /** Evento disparado ao fechar o popover. */\n  @Output('p-close') closePopover = new EventEmitter<any>();\n\n  /** Evento disparado ao abrir o popover. */\n  @Output('p-open') openPopover = new EventEmitter<any>();\n\n  // Controla se o popover fica oculto ou visível, por padrão é oculto.\n  isHidden: boolean = true;\n\n  protected clickoutListener: () => void;\n  protected mouseEnterListener: () => void;\n  protected mouseLeaveListener: () => void;\n  protected resizeListener: () => void;\n\n  private _hideArrow: boolean = false;\n  private _position?: string = PO_POPOVER_DEFAULT_POSITION;\n  private _trigger?: string = PO_POPOVER_DEFAULT_TRIGGER;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita a seta do componente *popover*.\n   *\n   * @default `false`\n   */\n  @Input('p-hide-arrow') set hideArrow(value: boolean) {\n    this._hideArrow = convertToBoolean(value);\n  }\n\n  get hideArrow(): boolean {\n    return this._hideArrow;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a posição que o po-popover abrirá em relação ao componente alvo. Sugere-se que seja\n   * usada a orientação \"right\" (direita), porém o mesmo é flexível e será rotacionado\n   * automaticamente para se adequar a tela, caso necessário.\n   *\n   * Posições válidas:\n   * - `right`: Posiciona o po-popover no lado direito do componente alvo.\n   * - `right-bottom`: Posiciona o po-popover no lado direito inferior do componente alvo.\n   * - `right-top`: Posiciona o po-popover no lado direito superior do componente alvo.\n   * - `bottom`: Posiciona o po-popover abaixo do componente alvo.\n   * - `bottom-left`: Posiciona o po-popover abaixo e à esquerda do componente alvo.\n   * - `bottom-right`: Posiciona o po-popover abaixo e à direita do componente alvo.\n   * - `left`: Posiciona o po-popover no lado esquerdo do componente alvo.\n   * - `left-top`: Posiciona o po-popover no lado esquerdo superior do componente alvo.\n   * - `left-bottom`: Posiciona o po-popover no lado esquerdo inferior do componente alvo.\n   * - `top`: Posiciona o po-popover acima do componente alvo.\n   * - `top-right`: Posiciona o po-popover acima e à direita do componente alvo.\n   * - `top-left`: Posiciona o po-popover acima e à esquerda do componente alvo.\n   *\n   *\n   * @default right\n   */\n  @Input('p-position') set position(value: string) {\n    this._position = PO_CONTROL_POSITIONS.includes(value) ? value : PO_POPOVER_DEFAULT_POSITION;\n  }\n\n  get position(): string {\n    return this._position;\n  }\n\n  /**\n   * @description\n   *\n   * Define o evento que abrirá o po-popover.\n   *\n   * Valores válidos:\n   *  - `click`: Abre ao clicar no componente alvo.\n   *  - `hover`: Abre ao passar o mouse sobre o componente alvo.\n   *  - `function`: Abre através de funções públicas do componente.\n   *\n   * @default click\n   * @optional\n   */\n  @Input('p-trigger') set trigger(value: string) {\n    this._trigger = PO_POPOVER_TRIGGERS.includes(value) ? value : PO_POPOVER_DEFAULT_TRIGGER;\n  }\n\n  get trigger(): string {\n    return this._trigger;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Permite a inclusão de classes CSS customizadas ao componente.\n   *\n   * Exemplo: `p-custom-classes=\"minha-classe-1 minha-classe-2\"`.\n   *\n   */\n  customClasses = input<string>(undefined, { alias: 'p-custom-classes' });\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostListener,\n  OnChanges,\n  OnDestroy,\n  Renderer2,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\n\nimport { PoControlPositionService } from './../../services/po-control-position/po-control-position.service';\nimport { PoPopoverBaseComponent } from './po-popover-base.component';\n\n/**\n *\n * @docsExtends PoPopoverBaseComponent\n *\n * @example\n *\n * <example name=\"po-popover-basic\" title=\"PO Popover Basic\">\n *   <file name=\"sample-po-popover-basic/sample-po-popover-basic.component.html\"> </file>\n *   <file name=\"sample-po-popover-basic/sample-po-popover-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-popover-labs\" title=\"PO Popover Labs\">\n *   <file name=\"sample-po-popover-labs/sample-po-popover-labs.component.html\"> </file>\n *   <file name=\"sample-po-popover-labs/sample-po-popover-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-popover-credit-card\" title=\"PO Popover - Credit Card\">\n *   <file name=\"sample-po-popover-credit-card/sample-po-popover-credit-card.component.html\"> </file>\n *   <file name=\"sample-po-popover-credit-card/sample-po-popover-credit-card.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-popover',\n  templateUrl: './po-popover.component.html',\n  providers: [PoControlPositionService],\n  standalone: false\n})\nexport class PoPopoverComponent extends PoPopoverBaseComponent implements AfterViewInit, OnDestroy, OnChanges {\n  @ViewChild('popoverElement', { read: ElementRef, static: false }) popoverElement: ElementRef;\n\n  arrowDirection = 'left';\n  timeoutResize;\n  targetElement;\n  afterViewInitWasCalled = false;\n  widthPopover: number = undefined;\n  private keydownTargetListener?: () => void;\n  private keydownPopoverListener?: () => void;\n  private resizeObserver: ResizeObserver;\n  eventListenerFunction: () => void;\n  private readonly tabbableSelector = [\n    'a[href]:not([tabindex=\"-1\"])',\n    'area[href]:not([tabindex=\"-1\"])',\n    'input:not([disabled]):not([type=\"hidden\"]):not([tabindex=\"-1\"])',\n    'select:not([disabled]):not([tabindex=\"-1\"])',\n    'textarea:not([disabled]):not([tabindex=\"-1\"])',\n    'button:not([disabled]):not([tabindex=\"-1\"])',\n    'iframe:not([tabindex=\"-1\"])',\n    '[contenteditable=\"true\"]:not([tabindex=\"-1\"])',\n    '[tabindex]:not([tabindex=\"-1\"])'\n  ].join(',');\n  constructor(\n    private readonly renderer: Renderer2,\n    private readonly poControlPosition: PoControlPositionService,\n    private readonly cd: ChangeDetectorRef\n  ) {\n    super();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    requestAnimationFrame(() => {\n      this.setPopoverPosition();\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['appendBox']) {\n      this.cd.detectChanges();\n      this.attachPopoverKeydown();\n    }\n    if (this.afterViewInitWasCalled && changes['target']) {\n      this.removeListeners();\n      this.initEvents();\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.initEvents();\n    this.afterViewInitWasCalled = true;\n  }\n\n  initEvents() {\n    this.targetElement = this.target instanceof ElementRef ? this.target.nativeElement : this.target;\n    this.initEventListenerFunction();\n\n    this.setElementsControlPosition();\n\n    this.setRendererListenInit();\n  }\n\n  ngOnDestroy() {\n    this.disconnectResizeObserver();\n    this.removeListeners();\n  }\n\n  close(): void {\n    this.isHidden = true;\n    this.disconnectResizeObserver();\n    this.closePopover.emit();\n\n    if (this.trigger === 'function' && this.clickoutListener) {\n      this.clickoutListener();\n    }\n\n    this.cd.detectChanges();\n  }\n\n  debounceResize() {\n    clearTimeout(this.timeoutResize);\n    this.timeoutResize = setTimeout(() => {\n      this.setPopoverPosition();\n    }, 200);\n  }\n\n  open(): void {\n    this.addScrollEventListener();\n    this.setOpacity(0);\n    this.isHidden = false;\n    setTimeout(() => {\n      this.setElementsControlPosition();\n      this.setPopoverPosition();\n      this.setOpacity(1);\n      this.openPopover.emit();\n      this.observeContentResize();\n      if (this.cornerAligned && !this.width) {\n        const el = this.popoverElement.nativeElement;\n\n        el.style.width = 'auto';\n        const width = el.scrollWidth;\n        this.widthPopover = width;\n\n        requestAnimationFrame(() => {\n          this.setPopoverPosition();\n        });\n      }\n      this.cd.detectChanges();\n    });\n\n    if (this.trigger === 'function') {\n      this.clickoutListener = this.renderer.listen('document', 'click', (event: MouseEvent) => {\n        this.togglePopup(event);\n      });\n    }\n\n    this.cd.detectChanges();\n  }\n\n  public ensurePopoverPosition(): void {\n    setTimeout(() => {\n      this.setElementsControlPosition();\n      this.setPopoverPosition();\n      this.cd.detectChanges();\n    });\n  }\n\n  setOpacity(value: number): void {\n    this.popoverElement.nativeElement.style.opacity = value;\n  }\n\n  setPopoverPosition() {\n    this.poControlPosition.adjustPosition(this.position);\n    this.arrowDirection = this.poControlPosition.getArrowDirection();\n  }\n\n  setRendererListenInit() {\n    this.resizeListener = this.renderer.listen('window', 'resize', (event: Event) => {\n      if (!this.isHidden) {\n        this.debounceResize();\n      }\n    });\n\n    if (this.trigger === 'hover') {\n      this.mouseEnterListener = this.renderer.listen(this.targetElement, 'mouseenter', (event: MouseEvent) => {\n        this.open();\n      });\n\n      this.mouseLeaveListener = this.renderer.listen(this.targetElement, 'mouseleave', (event: MouseEvent) => {\n        this.close();\n      });\n    } else if (this.trigger === 'click') {\n      this.clickoutListener = this.renderer.listen('document', 'click', (event: MouseEvent) => {\n        this.togglePopup(event);\n      });\n    }\n\n    if (this.targetElement) {\n      this.keydownTargetListener = this.renderer.listen(this.targetElement, 'keydown', (event: KeyboardEvent) => {\n        if (this.appendBox && !this.isHidden && event.key === 'Tab') {\n          event.preventDefault();\n\n          if (event.shiftKey) {\n            this.focusPrevBeforeTarget();\n          } else {\n            this.focusOnFirstFocusable();\n          }\n        }\n      });\n    }\n\n    this.attachPopoverKeydown();\n  }\n\n  togglePopup(event): void {\n    if (\n      !this.isHidden &&\n      !this.popoverElement.nativeElement.contains(event.target) &&\n      !this.targetElement?.contains(event.target)\n    ) {\n      if (!this.appendBox) {\n        this.close();\n      }\n    } else if (this.targetElement?.contains(event.target) && this.trigger !== 'function') {\n      this.popoverElement.nativeElement.hidden ? this.open() : this.close();\n    }\n  }\n\n  private addScrollEventListener() {\n    window.addEventListener('scroll', this.eventListenerFunction, true);\n  }\n\n  private initEventListenerFunction() {\n    this.eventListenerFunction = () => {\n      this.setPopoverPosition();\n    };\n  }\n\n  private removeListeners() {\n    if (this.clickoutListener) {\n      this.clickoutListener();\n    }\n    if (this.mouseEnterListener) {\n      this.mouseEnterListener();\n    }\n    if (this.mouseLeaveListener) {\n      this.mouseLeaveListener();\n    }\n\n    this.resizeListener();\n\n    window.removeEventListener('scroll', this.eventListenerFunction, true);\n    this.keydownTargetListener?.();\n    this.keydownPopoverListener?.();\n  }\n\n  private setElementsControlPosition() {\n    const popoverOffset = 8;\n    this.poControlPosition.setElements(\n      this.popoverElement.nativeElement,\n      popoverOffset,\n      this.target,\n      undefined,\n      false,\n      this.cornerAligned\n    );\n  }\n\n  private focusOnTarget(): void {\n    const el = this.targetElement as HTMLElement | undefined;\n    el?.focus?.();\n  }\n\n  private focusOnFirstFocusable(): void {\n    const host = this.popoverElement?.nativeElement as HTMLElement | undefined;\n    if (!host) {\n      this.focusOnTarget();\n      return;\n    }\n\n    const action = host.querySelector<HTMLElement>('.po-helper-footer-action-link button');\n    if (action) {\n      action.focus();\n      return;\n    }\n\n    const dialog = host.querySelector<HTMLElement>('[role=\"dialog\"]');\n    if (dialog) {\n      this.close();\n      this.focusNextAfterTarget();\n      return;\n    }\n\n    const hadTabindex = host.hasAttribute('tabindex');\n    if (!hadTabindex) host.setAttribute('tabindex', '-1');\n    host.focus();\n    if (!hadTabindex) {\n      host?.addEventListener('blur', () => host.removeAttribute('tabindex'), { once: true });\n    }\n  }\n\n  private attachPopoverKeydown(): void {\n    this.keydownPopoverListener?.();\n\n    const host = this.popoverElement?.nativeElement as HTMLElement | undefined;\n    if (!host) return;\n\n    this.keydownPopoverListener = this.renderer.listen(host, 'keydown', (event: KeyboardEvent) => {\n      if (this.appendBox) {\n        if (event.key !== 'Tab') return;\n        const innerTabbables = this.getTabbablesIn(host);\n        const first = innerTabbables[0];\n        const last = innerTabbables[innerTabbables.length - 1];\n\n        const isShift = event.shiftKey;\n        const active = document.activeElement as HTMLElement | null;\n        if (isShift && (!active || active === first)) {\n          event.preventDefault();\n          this.focusOnTarget();\n          return;\n        }\n\n        if ((!isShift && (!active || active === last)) || active.id.includes('popover-content')) {\n          event.preventDefault();\n          this.focusNextAfterTarget();\n          return;\n        }\n      }\n    });\n  }\n\n  private isVisible(element: HTMLElement): boolean {\n    const cs = window.getComputedStyle(element);\n    if (cs.visibility === 'hidden' || cs.display === 'none') return false;\n    let currentElement: HTMLElement | null = element;\n    while (currentElement) {\n      const style = window.getComputedStyle(currentElement);\n      if (style.display === 'none' || style.visibility === 'hidden') return false;\n      currentElement = currentElement.parentElement;\n    }\n    const rect = element.getBoundingClientRect();\n    return !!(rect.width || rect.height || element.getClientRects().length);\n  }\n\n  private getTabbablesIn(container: HTMLElement): Array<HTMLElement> {\n    return Array.from(container.querySelectorAll<HTMLElement>(this.tabbableSelector)).filter(\n      el => this.isVisible(el) && !el.hasAttribute('disabled')\n    );\n  }\n\n  private getDocumentTabbables(): Array<HTMLElement> {\n    const all = Array.from(document.querySelectorAll<HTMLElement>(this.tabbableSelector));\n    return all.filter(el => this.isVisible(el) && !el.hasAttribute('disabled'));\n  }\n\n  private focusNextAfterTarget(): void {\n    const docTabs = this.getDocumentTabbables();\n    if (!docTabs.length) return;\n\n    const target = this.targetElement as HTMLElement | null;\n    let startIndex = target ? docTabs.indexOf(target) : -1;\n\n    if (startIndex < 0 && this.popoverElement?.nativeElement) {\n      const inner = this.getTabbablesIn(this.popoverElement.nativeElement);\n      if (inner.length) {\n        const idxByInner = docTabs.indexOf(inner[inner.length - 1]);\n        if (idxByInner >= 0) startIndex = idxByInner;\n      }\n    }\n    const next = docTabs[startIndex + 1] || docTabs[0];\n    next?.focus?.();\n  }\n\n  private focusPrevBeforeTarget(): void {\n    const docTabs = this.getDocumentTabbables();\n    if (!docTabs.length) return;\n\n    const target = this.targetElement as HTMLElement | null;\n    const idx = target ? docTabs.indexOf(target) : -1;\n    const prev = docTabs[idx - 1] || docTabs[docTabs.length - 1];\n    prev?.focus?.();\n  }\n\n  private observeContentResize(): void {\n    this.disconnectResizeObserver();\n\n    if (!this.popoverElement?.nativeElement) return;\n\n    let initialCall = true;\n    this.resizeObserver = new ResizeObserver(() => {\n      if (initialCall) {\n        initialCall = false;\n        return;\n      }\n      this.setElementsControlPosition();\n      this.setPopoverPosition();\n      this.cd.detectChanges();\n    });\n\n    this.resizeObserver.observe(this.popoverElement.nativeElement);\n  }\n\n  private disconnectResizeObserver(): void {\n    this.resizeObserver?.disconnect();\n    this.resizeObserver = null;\n  }\n}\n","@if (appendBox) {\n  <ng-template\n    cdkConnectedOverlay\n    [cdkConnectedOverlayOrigin]=\"target\"\n    [cdkConnectedOverlayOpen]=\"true\"\n    [cdkConnectedOverlayDisableClose]=\"true\"\n  >\n    <ng-container *ngTemplateOutlet=\"sharedPopoverContent\"></ng-container>\n  </ng-template>\n} @else {\n  <ng-container *ngTemplateOutlet=\"sharedPopoverContent\"></ng-container>\n}\n\n<ng-template #sharedPopoverContent>\n  <div\n    #popoverElement\n    [hidden]=\"isHidden\"\n    class=\"po-popover\"\n    [style.width.px]=\"width ?? widthPopover\"\n    [ngClass]=\"customClasses()\"\n  >\n    @if (!hideArrow) {\n      <div class=\"po-popover-arrow po-arrow-{{ arrowDirection }}\"></div>\n    }\n\n    <div class=\"po-popover-content\">\n      @if (title) {\n        <span class=\"po-popover-title\">{{ title }}</span>\n      }\n      <ng-content></ng-content>\n    </div>\n  </div>\n</ng-template>\n","import {\n  Component,\n  ElementRef,\n  ViewChild,\n  AfterViewInit,\n  OnDestroy,\n  OnChanges,\n  SimpleChanges,\n  ChangeDetectorRef\n} from '@angular/core';\nimport { PoHelperBaseComponent } from './po-helper-base.component';\nimport { PoPopoverComponent } from '../po-popover/po-popover.component';\nimport { PoButtonComponent } from '../po-button';\n/**\n * @docsExtends PoHelperBaseComponent\n *\n * @example\n *\n * <example name=\"po-helper-basic\" title=\"PO Helper Basic\">\n *  <file name=\"sample-po-helper-basic/sample-po-helper-basic.component.html\"> </file>\n *  <file name=\"sample-po-helper-basic/sample-po-helper-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-helper-labs\" title=\"PO Helper Labs\">\n *  <file name=\"sample-po-helper-labs/sample-po-helper-labs.component.html\"> </file>\n *  <file name=\"sample-po-helper-labs/sample-po-helper-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-helper-sales-performance\" title=\"PO Helper Sales Performance\">\n *  <file name=\"sample-po-helper-sales-performance/sample-po-helper-sales-performance.component.html\"> </file>\n *  <file name=\"sample-po-helper-sales-performance/sample-po-helper-sales-performance.component.ts\"> </file>\n * </example>\n *\n */\n\n@Component({\n  selector: 'po-helper',\n  standalone: false,\n  templateUrl: './po-helper.component.html'\n})\nexport class PoHelperComponent extends PoHelperBaseComponent implements AfterViewInit, OnDestroy, OnChanges {\n  @ViewChild('target', { read: ElementRef, static: true }) target: ElementRef;\n  @ViewChild('popover', { static: false }) popover: PoPopoverComponent;\n  @ViewChild(PoButtonComponent, { read: ElementRef, static: true }) poButton: PoButtonComponent;\n\n  private static instances: Array<PoHelperComponent> = [];\n  private static idCounter = 0;\n  protected popoverPosition = 'right';\n  public id: string;\n  private boundFocusIn: (e: FocusEvent) => void;\n  private readonly poHelperLiterals = {\n    en: {\n      info: 'Show Information',\n      help: 'Show Help'\n    },\n    pt: {\n      info: 'Exibe informação',\n      help: 'Exibe ajuda'\n    },\n    es: {\n      info: 'Muestra información',\n      help: 'Muestra ayuda'\n    },\n    ru: {\n      info: 'Показать информацию',\n      help: 'Показать справку'\n    }\n  };\n\n  constructor(private readonly cdr: ChangeDetectorRef) {\n    super();\n    this.id = 'po-helper-' + PoHelperComponent.idCounter++;\n  }\n  ngAfterViewInit(): void {\n    PoHelperComponent.instances.push(this);\n    queueMicrotask(() => {\n      this.setPopoverPositionByScreen();\n    });\n  }\n\n  public setPopoverPositionByScreen(): void {\n    if (!this.target?.nativeElement) return;\n    const rect = this.target.nativeElement.getBoundingClientRect();\n    const screenWidth = window.innerWidth || document.documentElement.clientWidth;\n    if (rect.right + 400 > screenWidth) {\n      this.popoverPosition = 'left';\n    } else {\n      this.popoverPosition = 'right';\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.size) {\n      this.cdr.detectChanges();\n    }\n  }\n\n  ngOnDestroy(): void {\n    PoHelperComponent.instances = PoHelperComponent.instances.filter(i => i !== this);\n    this.handleClose();\n  }\n\n  openHelperPopover(): void {\n    requestAnimationFrame(() => {\n      if (\n        this.popover.isHidden &&\n        (this.helper()['content'] || typeof this.helper() === 'string' || this.helper()['title'])\n      ) {\n        this.popover.open();\n      } else {\n        this.popover.close();\n      }\n    });\n  }\n\n  public helperIsVisible(): boolean {\n    return this.popover && !this.popover.isHidden;\n  }\n\n  closeHelperPopover(): void {\n    requestAnimationFrame(() => {\n      if (!this.popover.isHidden) {\n        this.popover.close();\n      }\n    });\n  }\n\n  emitClick(event: MouseEvent): void {\n    if (this.disabled()) {\n      event.preventDefault();\n      return;\n    }\n    if (!this.helper() || typeof this.helper() === 'string') {\n      return;\n    }\n    this.handleEmitEvent(event);\n  }\n\n  onKeyDown(event: KeyboardEvent) {\n    if (this.disabled()) {\n      event?.preventDefault?.();\n      event?.stopPropagation?.();\n      return;\n    }\n    if (event?.code === 'Space' || event?.code === 'Enter') {\n      event.preventDefault();\n      if (!this.popover) {\n        return;\n      }\n\n      PoHelperComponent.instances.forEach(instance => {\n        if (instance !== this && instance.popover && !instance.popover.isHidden) {\n          instance.popover.close();\n        }\n      });\n      // corrige um problema onde o popover abre quando o helper tem ação customizada via eventOnClick\n      if (typeof this.helper() !== 'string') {\n        const helperObj = this.helper();\n        if (\n          helperObj &&\n          typeof helperObj === 'object' &&\n          'eventOnClick' in helperObj &&\n          typeof helperObj.eventOnClick !== 'undefined'\n        ) {\n          this.handleEmitEvent(event);\n          return;\n        }\n      }\n      if (this.popover.isHidden && (this.helper()['content'] || this.helper()['title'])) {\n        this.popover.open();\n      } else {\n        this.popover.close();\n      }\n      this.handleEmitEvent(event);\n    }\n  }\n\n  private handleEmitEvent(event: any): void {\n    const helper = this.helper();\n    const onClick = (helper as any).eventOnClick;\n\n    if (typeof onClick === 'function') {\n      onClick(helper);\n      event.preventDefault();\n      event.stopPropagation();\n      return;\n    }\n\n    if (onClick && typeof onClick.emit === 'function') {\n      onClick.emit(helper);\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n  closePopoverOnFocusOut(event: FocusEvent) {\n    if (!this.popover || this.popover.isHidden) {\n      return;\n    }\n    const targetEl = this.target?.nativeElement;\n    const popEl = (this.popover as any).popoverElement?.nativeElement;\n    const focusNode = event.target as Node;\n    if (focusNode && !targetEl.contains(focusNode) && !popEl?.contains(focusNode)) {\n      this.popover.close();\n    }\n  }\n\n  protected ariaLabel(): string {\n    const helper = this.helper();\n    const type = typeof helper !== 'string' && helper?.type === 'info' ? 'info' : 'help';\n    const lang = (navigator.language || 'en').substring(0, 2).toLowerCase();\n    const literals = this.poHelperLiterals[lang] || this.poHelperLiterals['en'];\n    return literals[type];\n  }\n\n  protected handleOpen(): void {\n    this.boundFocusIn = this.closePopoverOnFocusOut.bind(this);\n    window.addEventListener('focusin', this.boundFocusIn, true);\n  }\n\n  protected handleClose(): void {\n    if (this.boundFocusIn) {\n      window.removeEventListener('focusin', this.boundFocusIn, true);\n    }\n  }\n}\n","<div\n  class=\"po-helper-container po-helper-target\"\n  #target\n  [attr.tabindex]=\"disabled() ? null : 0\"\n  role=\"button\"\n  [attr.aria-label]=\"ariaLabel()\"\n  [attr.aria-haspopup]=\"'dialog'\"\n  [attr.aria-expanded]=\"!popover.isHidden\"\n  [attr.aria-controls]=\"'popover-content-' + id\"\n  [attr.aria-describedby]=\"!popover.isHidden ? 'popover-content-' + id : null\"\n  [class.po-helper-disabled]=\"disabled()\"\n  (keydown)=\"onKeyDown($event)\"\n  (click)=\"openHelperPopover(); emitClick($event); popover.ensurePopoverPosition()\"\n>\n  <po-icon [p-icon]=\"helper()?.type === 'info' ? 'ICON_INFO' : 'ICON_HELP'\"></po-icon>\n  <po-popover\n    #popover\n    [p-position]=\"popoverPosition\"\n    [p-target]=\"target\"\n    [p-title]=\"helper()?.title\"\n    [p-append-in-body]=\"appendBox()\"\n    p-custom-classes=\"po-helper-popover\"\n    p-trigger=\"function\"\n    (p-close)=\"handleClose()\"\n    (p-open)=\"handleOpen()\"\n  >\n    <div [id]=\"'popover-content-' + id\" role=\"dialog\" aria-modal=\"false\" tabindex=\"-1\">\n      {{ helper()?.content }}\n      @if (helper()?.type === 'help' && helper()?.footerAction) {\n        <po-divider></po-divider>\n        <po-link\n          class=\"po-helper-footer-action-link\"\n          (keydown.enter)=\"$event.stopPropagation()\"\n          (keydown.space)=\"$event.stopPropagation()\"\n          (p-action)=\"helper()?.footerAction?.action()\"\n          [p-label]=\"helper()?.footerAction?.label\"\n        >\n        </po-link>\n      }\n    </div>\n  </po-popover>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PoLinkComponent } from './po-link.component';\nimport { RouterModule } from '@angular/router';\n\n/**\n * @description\n *\n * Módulo do componente po-link.\n */\n@NgModule({\n  declarations: [PoLinkComponent],\n  imports: [CommonModule, RouterModule],\n  exports: [PoLinkComponent]\n})\nexport class PoLinkModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { PoPopoverComponent } from './po-popover.component';\n\n/**\n * @description\n * Módulo do componente po-popover.\n */\n@NgModule({\n  imports: [CommonModule, OverlayModule],\n  declarations: [PoPopoverComponent],\n  exports: [PoPopoverComponent]\n})\nexport class PoPopoverModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoHelperComponent } from './po-helper.component';\n\nimport { PoIconModule } from '../po-icon/index';\nimport { PoLinkModule } from '../po-link/index';\nimport { PoPopoverModule } from '../po-popover/index';\nimport { PoDividerModule } from '../po-divider/index';\n\n/**\n * @description\n * Módulo do componente po-helper\n */\n@NgModule({\n  imports: [CommonModule, PoIconModule, PoPopoverModule, PoLinkModule, PoDividerModule],\n  declarations: [PoHelperComponent],\n  exports: [PoHelperComponent]\n})\nexport class PoHelperModule {}\n","export const poFieldContainerLiterals = {\n  en: {\n    optional: 'Optional',\n    required: 'Required'\n  },\n  es: {\n    optional: 'Opcional',\n    required: 'Obligatorio'\n  },\n  pt: {\n    optional: 'Opcional',\n    required: 'Obrigatório'\n  },\n  ru: {\n    optional: 'Пожеланию',\n    required: 'Обязательный'\n  }\n};\n","import { Component, input, Input } from '@angular/core';\nimport { convertToBoolean } from '../../utils/util';\nimport { poFieldContainerLiterals } from '../po-field/po-field-container/po-field-container-literals';\n\n/**\n * @docsPrivate\n *\n * Componente de uso interno.\n */\n\n@Component({\n  selector: 'po-label',\n  templateUrl: './po-label.component.html',\n  standalone: false\n})\nexport class PoLabelComponent {\n  private _disabled?: boolean = false;\n  private _field?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica se o label está desativado.\n   *\n   * @default `false`\n   */\n  @Input('p-disabled') set disabled(value: boolean) {\n    this._disabled = <any>value === '' ? true : convertToBoolean(value);\n  }\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica se o label será de um field.\n   *\n   * @default `false`\n   */\n  @Input('p-field') set field(value: boolean) {\n    this._field = <any>value === '' ? true : convertToBoolean(value);\n  }\n\n  get field(): boolean {\n    return this._field;\n  }\n\n  /** Indica o campo vinculado ao label */\n  @Input('p-for') for: string;\n\n  /** Label do campo. */\n  @Input('p-label') label?: string;\n\n  /** Indica o tipo do campo vinculado ao label */\n  @Input('p-requirement') requirement?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a quebra automática do texto. Quando ativada, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * @default `false`\n   */\n  textWrap = input<boolean>(false, { alias: 'p-text-wrap' });\n\n  isRequiredLiteral(value: string): boolean {\n    return Object.values(poFieldContainerLiterals).some(\n      literals => literals.required.toLowerCase() === value.toLowerCase()\n    );\n  }\n}\n","@if (label) {\n  <label\n    class=\"po-label\"\n    [class.po-label-wrap]=\"textWrap()\"\n    [attr.for]=\"field && for ? for : undefined\"\n    [attr.p-field]=\"field\"\n    [class.po-label-disabled]=\"disabled\"\n    >{{ label }}</label\n  >\n}\n@if (field && requirement) {\n  <span class=\"po-label-requirement\" [class.po-label-required]=\"isRequiredLiteral(requirement)\">{{ requirement }}</span>\n}\n","import { NgModule } from '@angular/core';\n\nimport { PoTooltipModule } from './po-tooltip/po-tooltip.module';\n\n@NgModule({\n  declarations: [],\n  imports: [PoTooltipModule],\n  exports: [PoTooltipModule],\n  providers: [],\n  bootstrap: []\n})\nexport class PoDirectivesModule {}\n","import {\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  input,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\nimport { PoTooltipDirective } from '../../../../directives';\nimport { convertToBoolean } from '../../../../utils/util';\nimport { PoHelperComponent, PoHelperOptions } from '../../../po-helper';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente de uso interno, responsável por gerar uma margem inferior nos componentes que utilizam o po-field-container.\n * Essa margem inferior pode conter uma mensagem de erro.\n */\n@Component({\n  selector: 'po-field-container-bottom',\n  templateUrl: './po-field-container-bottom.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoFieldContainerBottomComponent implements OnChanges {\n  @ViewChild(PoTooltipDirective) poTooltip: PoTooltipDirective;\n  @ViewChild('helperEl', { read: PoHelperComponent, static: false }) helperEl?: PoHelperComponent;\n\n  /** Define se o tooltip será inserido no `body` em vez do componente. */\n  @Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendBox: boolean = false;\n\n  @Input('p-disabled') disabled: boolean = false;\n\n  /**\n   * Mensagem que será apresentada quando o pattern ou a máscara não for satisfeita.\n   * Obs: Esta mensagem não é apresentada quando o campo estiver vazio, mesmo que ele seja requerido.\n   */\n  @Input('p-error-pattern') errorPattern?: string = '';\n\n  /**\n   * Limita a exibição da mensagem de erro a duas linhas e exibe um tooltip com o texto completo.\n   */\n  @Input('p-error-limit') errorLimit: boolean = false;\n\n  /** Texto de apoio do campo. */\n  @Input('p-help') help?: string;\n\n  /** Define o tamanho do componente. */\n  @HostBinding('attr.p-size')\n  @Input('p-size')\n  size?: string;\n\n  /** Configurações do ícone de ajuda adicional vínculado ao label. */\n  poHelperComponent = input<PoHelperOptions>(undefined, { alias: 'p-helper' });\n\n  /** Define se o componente helper estará visível através das ações customizadas */\n  showHelperComponent = input<boolean>(false, { alias: 'p-show-helper' });\n\n  private readonly isInitialChange: boolean = true;\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.showHelperComponent && this.showHelperComponent()) {\n      if (typeof this.poHelperComponent()?.eventOnClick === 'function') {\n        this.poHelperComponent()?.eventOnClick();\n        return;\n      }\n      this.helperEl?.openHelperPopover();\n    } else if (changes.showHelperComponent && !this.showHelperComponent()) {\n      this.helperEl?.closeHelperPopover();\n    }\n  }\n}\n","<div\n  class=\"po-field-container-bottom po-footer-group\"\n  [class.po-field-container-bottom-disabled]=\"disabled\"\n  [attr.aria-label]=\"errorPattern && errorLimit ? errorPattern : null\"\n  role=\"alert\"\n  aria-live=\"assertive\"\n  tabindex=\"-1\"\n>\n  @if (errorPattern) {\n    <div class=\"po-field-container-bottom-text-error\">\n      <po-icon p-icon=\"ICON_EXCLAMATION\"></po-icon>\n      <span\n        class=\"po-field-error-message\"\n        [class.po-field-error-limit]=\"errorLimit\"\n        [p-tooltip]=\"errorLimit ? errorPattern : null\"\n        p-tooltip-position=\"top\"\n        [p-append-in-body]=\"appendBox\"\n      >\n        {{ errorPattern }}\n      </span>\n    </div>\n  }\n  @if (!errorPattern && help) {\n    <div class=\"po-field-container-bottom-help-text\">\n      @if (help) {\n        <span>\n          {{ help }}\n        </span>\n      }\n    </div>\n  }\n  @if (poHelperComponent()) {\n    <po-helper\n      #helperEl\n      [p-size]=\"size\"\n      [p-helper]=\"poHelperComponent()\"\n      [p-disabled]=\"disabled\"\n      [p-append-in-body]=\"appendBox\"\n    >\n    </po-helper>\n  }\n</div>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n  ViewChild,\n  inject,\n  input\n} from '@angular/core';\n\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport { convertToBoolean, updateTooltip } from '../../../utils/util';\nimport { PoHelperComponent, PoHelperOptions } from '../../po-helper';\nimport { poFieldContainerLiterals } from './po-field-container-literals';\n\n/**\n * @docsPrivate\n *\n * Componente de uso interno, responsável por atribuir uma label para o campo\n */\n@Component({\n  selector: 'po-field-container',\n  templateUrl: './po-field-container.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoFieldContainerComponent implements OnInit, OnChanges {\n  @ViewChild('labelEl', { read: ElementRef }) labelEl!: ElementRef<HTMLElement>;\n  @ViewChild('helperEl', { read: PoHelperComponent, static: false }) helperEl?: PoHelperComponent;\n\n  /** Indica se o campo será desabilitado. */\n  @Input('p-disabled') disabled: boolean;\n\n  /** Identificador do campo */\n  @Input('p-id') id: string;\n\n  /** Label do campo. */\n  @Input('p-label') label?: string;\n\n  /** Texto de apoio do campo. */\n  @Input('p-help') help: string;\n\n  /** Configurações do ícone de ajuda adicional vínculado ao label. */\n  poHelperComponent = input<PoHelperOptions>(undefined, { alias: 'p-helper' });\n\n  /** Define se o componente helper estará visível através das ações customizadas */\n  showHelperComponent = input<boolean>(false, { alias: 'p-show-helper' });\n\n  /**\n   * @optional\n   *\n   * Habilita a quebra automática do texto do componente po-label. Quando ativada, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * @default `false`\n   */\n  textWrap = input<boolean>(false, { alias: 'p-text-wrap' });\n\n  literals: object;\n  requirement: string;\n  showTip = false;\n\n  private _optional: boolean = false;\n  private _required: boolean = false;\n\n  /** Indica se o campo será opcional. */\n  @Input('p-optional') set optional(value: boolean) {\n    this._optional = convertToBoolean(value);\n  }\n\n  get optional() {\n    return this._optional;\n  }\n\n  /** Indica se o campo será obrigatório. */\n  @Input('p-required') set required(value: boolean) {\n    this._required = convertToBoolean(value);\n  }\n\n  get required() {\n    return this._required;\n  }\n\n  /** Define se a indicação de campo obrigatório será exibida. */\n  @Input('p-show-required') showRequired: boolean = false;\n\n  /** Define o tamanho do componente. */\n  @HostBinding('attr.p-size')\n  @Input('p-size')\n  size?: string;\n\n  /**\n   * Define se o título do campo será exibido de forma compacta.\n   *\n   * Quando habilitado (`true`), o modo compacto afeta o conjunto composto por:\n   * - `po-label`\n   * - `p-requirement (showRequired)`\n   * - `po-helper`\n   *\n   * Ou seja, todos os elementos relacionados ao título do campo\n   * (rótulo, indicador de obrigatoriedade e componente auxiliar) passam\n   * a seguir o comportamento de layout compacto.\n   */\n  compactLabel = input<boolean, unknown>(false, { alias: 'p-compact-label', transform: convertToBoolean });\n\n  constructor(private readonly cdr: ChangeDetectorRef) {\n    const languageService = inject(PoLanguageService);\n\n    const language = languageService.getShortLanguage();\n\n    this.literals = {\n      ...poFieldContainerLiterals[language]\n    };\n  }\n\n  ngOnInit(): void {\n    this.setRequirement();\n    this.handleLabelTooltip();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (\n      changes.help ||\n      changes.label ||\n      changes.optional ||\n      changes.required ||\n      changes.showRequired ||\n      changes.textWrap\n    ) {\n      this.setRequirement();\n      queueMicrotask(() => this.handleLabelTooltip());\n      this.cdr.detectChanges();\n    }\n\n    if (changes.showHelperComponent && this.showHelperComponent()) {\n      if (typeof this.poHelperComponent()?.eventOnClick === 'function') {\n        this.poHelperComponent()?.eventOnClick();\n        return;\n      }\n      this.helperEl?.openHelperPopover();\n    } else if (changes.showHelperComponent && !this.showHelperComponent()) {\n      this.helperEl?.closeHelperPopover();\n    }\n  }\n\n  private setRequirement(): void {\n    if (this.label || this.help) {\n      if (!this.required && this.optional) {\n        this.requirement = this.literals['optional'];\n      } else if (this.required && this.showRequired) {\n        this.requirement = this.literals['required'];\n      } else {\n        this.requirement = undefined;\n      }\n    }\n  }\n\n  public handleLabelTooltip(): void {\n    this.showTip = updateTooltip(this.showTip, this.labelEl);\n    this.cdr.markForCheck();\n  }\n}\n","<div class=\"po-field-container\" (mouseenter)=\"handleLabelTooltip()\">\n  <div class=\"po-field-container-title\" [class.po-field-container-compact-label]=\"compactLabel()\">\n    @if (label || help) {\n      <po-label\n        #labelEl\n        [p-disabled]=\"disabled\"\n        p-field=\"true\"\n        [p-for]=\"id\"\n        [p-label]=\"label\"\n        [p-requirement]=\"requirement\"\n        [p-text-wrap]=\"textWrap()\"\n        [p-tooltip]=\"showTip ? label : null\"\n      ></po-label>\n      @if (poHelperComponent()) {\n        <po-helper\n          #helperEl\n          [p-disabled]=\"disabled\"\n          [p-helper]=\"poHelperComponent()\"\n          [p-size]=\"poHelperComponent().size ? poHelperComponent().size : null\"\n        ></po-helper>\n      }\n    }\n  </div>\n\n  @if (help) {\n    <div class=\"po-field-help\">{{ help }}</div>\n  }\n\n  <ng-content></ng-content>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n  ViewChild,\n  forwardRef,\n  inject\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PoKeyCodeEnum } from './../../../enums/po-key-code.enum';\n\nimport { PoCheckboxBaseComponent } from './po-checkbox-base.component';\nimport { setHelperSettings, updateTooltip } from '../../../utils/util';\nimport { PoHelperComponent } from '../../po-helper';\n\n/**\n * @docsExtends PoCheckboxBaseComponent\n *\n * @example\n *\n * <example name=\"po-checkbox-basic\" title=\"PO Checkbox Basic\">\n *   <file name=\"sample-po-checkbox-basic/sample-po-checkbox-basic.component.html\"> </file>\n *   <file name=\"sample-po-checkbox-basic/sample-po-checkbox-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-checkbox-labs\" title=\"PO Checkbox Labs\">\n *   <file name=\"sample-po-checkbox-labs/sample-po-checkbox-labs.component.html\"> </file>\n *   <file name=\"sample-po-checkbox-labs/sample-po-checkbox-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-checkbox-acceptance-term\" title=\"PO Checkbox - Acceptance Term\">\n *   <file name=\"sample-po-checkbox-acceptance-term/sample-po-checkbox-acceptance-term.component.html\"> </file>\n *   <file name=\"sample-po-checkbox-acceptance-term/sample-po-checkbox-acceptance-term.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-checkbox',\n  templateUrl: './po-checkbox.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoCheckboxComponent),\n      multi: true\n    }\n  ],\n  standalone: false\n})\nexport class PoCheckboxComponent extends PoCheckboxBaseComponent implements AfterViewInit, OnChanges, OnInit {\n  private readonly changeDetector = inject(ChangeDetectorRef);\n\n  showTip = false;\n\n  @ViewChild('checkboxLabel', { static: false }) checkboxLabel: ElementRef;\n  @ViewChild('labelEl', { read: ElementRef }) labelEl!: ElementRef<HTMLElement>;\n  @ViewChild('helperEl', { read: PoHelperComponent, static: false }) helperEl?: PoHelperComponent;\n  constructor() {\n    const changeDetector = inject(ChangeDetectorRef);\n    super(changeDetector);\n    this.changeDetector = changeDetector;\n  }\n\n  /**\n   * Função que atribui foco ao *checkbox*.\n   *\n   * Para utilizá-la é necessário capturar a referência do componente no DOM através do `ViewChild`, como por exemplo:\n   *\n   * ```\n   * ...\n   * import { ViewChild } from '@angular/core';\n   * import { PoCheckboxComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoCheckboxComponent, { static: true }) checkbox: PoCheckboxComponent;\n   *\n   * focusCheckbox() {\n   *   this.checkbox.focus();\n   * }\n   * ```\n   */\n  focus(): void {\n    if (this.checkboxLabel && !this.disabled) {\n      this.checkboxLabel.nativeElement.focus();\n    }\n  }\n\n  onBlur() {\n    this.onTouched?.();\n    this.blur.emit();\n  }\n\n  ngAfterViewInit() {\n    this.handleLabelTooltip();\n    if (this.autoFocus) {\n      this.focus();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.label || changes.additionalHelpTooltip || changes.helper || changes.size) {\n      this.displayAdditionalHelp = false;\n      queueMicrotask(() => this.handleLabelTooltip());\n      this.changeDetector.detectChanges();\n    }\n  }\n\n  ngOnInit(): void {\n    this.handleLabelTooltip();\n  }\n\n  emitAdditionalHelp() {\n    if (this.label && this.isAdditionalHelpEventTriggered()) {\n      this.additionalHelp.emit();\n    }\n  }\n\n  getAdditionalHelpTooltip() {\n    return this.isAdditionalHelpEventTriggered() ? null : this.additionalHelpTooltip;\n  }\n\n  onKeyDown(event: KeyboardEvent, value: boolean | string) {\n    const isFieldFocused = document.activeElement === this.checkboxLabel.nativeElement;\n\n    if (event.which === PoKeyCodeEnum.space || event.keyCode === PoKeyCodeEnum.space) {\n      this.checkOption(event, value);\n\n      event.preventDefault();\n    }\n\n    if (isFieldFocused) {\n      this.keydown.emit(event);\n    }\n  }\n\n  /**\n   * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n   * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `p-keydown`.\n   *\n   * > Exibe ou oculta o conteúdo do componente `po-helper` quando o componente estiver com foco.\n   *\n   * ```\n   * //Exemplo com label e p-helper\n   * <po-checkbox\n   *  #checkbox\n   *  ...\n   *  p-label=\"Label do checkbox\"\n   *  [p-helper]=\"helperOptions\"\n   *  (p-keydown)=\"onKeyDown($event, checkbox)\"\n   * ></po-checkbox>\n   * ```\n   * ```\n   * ...\n   * onKeyDown(event: KeyboardEvent, inp: PoCheckboxComponent): void {\n   *  if (event.code === 'F9') {\n   *    inp.showAdditionalHelp();\n   *  }\n   * }\n   * ```\n   */\n  showAdditionalHelp(): boolean {\n    this.displayAdditionalHelp = !this.displayAdditionalHelp;\n    if (this.helperEl?.helperIsVisible()) {\n      this.helperEl?.closeHelperPopover();\n      return;\n    }\n    if (this.helperEl) {\n      const helper = this.poHelperComponent();\n      const isHelpEvt = this.isAdditionalHelpEventTriggered();\n      if (isHelpEvt) {\n        this.additionalHelp.emit();\n        return;\n      }\n      if (helper && typeof helper !== 'string' && helper.eventOnClick) {\n        helper.eventOnClick();\n        return;\n      }\n      this.helperEl?.openHelperPopover();\n    }\n    return this.displayAdditionalHelp;\n  }\n\n  setHelper(label?: string, additionalHelpTooltip?: string) {\n    return setHelperSettings(\n      label,\n      additionalHelpTooltip,\n      this.poHelperComponent(),\n      this.size,\n      this.isAdditionalHelpEventTriggered() ? this.additionalHelp : undefined\n    );\n  }\n\n  protected changeModelValue(value: boolean | null | string) {\n    if (value === null) {\n      this.checkboxValue = 'mixed';\n    } else {\n      this.checkboxValue = typeof value === 'boolean' || value === null ? value : false;\n    }\n    this.changeDetector.detectChanges();\n  }\n\n  private isAdditionalHelpEventTriggered(): boolean {\n    return (\n      this.additionalHelpEventTrigger === 'event' ||\n      (this.additionalHelpEventTrigger === undefined && this.additionalHelp.observed)\n    );\n  }\n\n  public handleLabelTooltip(): void {\n    this.showTip = updateTooltip(this.showTip, this.labelEl);\n    this.changeDetector.markForCheck();\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n@if (help) {\n  <po-field-container [p-disabled]=\"disabled\" [p-size]=\"size\" [p-compact-label]=\"compactLabel()\">\n    <div class=\"po-field-container-content\">\n      <ng-container *ngTemplateOutlet=\"checkboxContent\"></ng-container>\n    </div>\n    <po-field-container-bottom [p-help]=\"help\" [p-size]=\"size\"></po-field-container-bottom>\n  </po-field-container>\n} @else {\n  <ng-container *ngTemplateOutlet=\"checkboxContent\"></ng-container>\n}\n\n<ng-template #checkboxContent>\n  <div\n    class=\"container-po-checkbox\"\n    [attr.checked]=\"checkboxValue\"\n    (click)=\"checkOption($event, checkboxValue)\"\n    (keydown)=\"onKeyDown($event, checkboxValue)\"\n  >\n    <div\n      #checkboxLabel\n      role=\"checkbox\"\n      class=\"po-checkbox-outline\"\n      [tabindex]=\"disabled || disabladTabindex ? -1 : 0\"\n      [attr.aria-checked]=\"checkboxValue\"\n      [attr.data-focused-element]=\"!disabled\"\n      [attr.data-inactive-component]=\"disabled\"\n      (blur)=\"onBlur()\"\n    >\n      <span\n        [attr.aria-checked]=\"checkboxValue\"\n        aria-label=\" \"\n        [id]=\"id\"\n        class=\"po-checkbox po-checkbox-phosphor\"\n        [attr.aria-disabled]=\"disabled\"\n        [attr.required]=\"checkBoxRequired\"\n      >\n      </span>\n\n      @if (label) {\n        <po-label\n          #labelEl\n          class=\"po-checkbox-label\"\n          tabindex=\"-1\"\n          [p-disabled]=\"disabled\"\n          [p-for]=\"id\"\n          [p-label]=\"label\"\n          [p-text-wrap]=\"labelTextWrap()\"\n          [p-tooltip]=\"showTip ? label : null\"\n          (mouseenter)=\"handleLabelTooltip()\"\n          (focus)=\"handleLabelTooltip()\"\n        >\n        </po-label>\n      }\n      @if (poHelperComponent() || poHelper.hideAdditionalHelp) {\n        <po-helper\n          #helperEl\n          class=\"po-checkbox-helper\"\n          [p-helper]=\"poHelper.helperSettings\"\n          [p-disabled]=\"disabled\"\n          [p-append-in-body]=\"appendBox\"\n          [p-size]=\"size === 'large' ? 'medium' : size\"\n        >\n        </po-helper>\n      }\n    </div>\n  </div>\n</ng-template>\n","import { Component, ElementRef, OnChanges, SimpleChanges, ViewChild, inject } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { PoItemListFilterMode } from '../enums/po-item-list-filter-mode.enum';\nimport { PoItemListOption } from './interfaces/po-item-list-option.interface';\nimport { PoItemListBaseComponent } from './po-item-list-base.component';\n\n@Component({\n  selector: 'po-item-list',\n  templateUrl: './po-item-list.component.html',\n  standalone: false\n})\nexport class PoItemListComponent extends PoItemListBaseComponent implements OnChanges {\n  protected sanitized = inject(DomSanitizer);\n\n  @ViewChild('itemList', { static: true }) itemList: ElementRef;\n\n  selectedView: PoItemListOption;\n\n  protected param;\n  protected clickListener: () => void;\n\n  private shouldUpdateSelected(changes: SimpleChanges): boolean {\n    return !!(changes.searchValue && changes.label && changes.searchValue.currentValue === changes.label.currentValue);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (this.shouldUpdateSelected(changes)) {\n      this.selected = true;\n    }\n    if (this.isTabs) {\n      if (changes.tabHide?.currentValue || changes.disabled?.currentValue) {\n        this.tabsItem.emit(this.item);\n      } else if (changes.activeTabs?.currentValue) {\n        this.emitActiveTabs(this.item);\n      }\n    }\n  }\n\n  onCheckboxItem() {\n    const option = { [this.fieldValue]: this.value, [this.fieldLabel]: this.label };\n    const selected = !this.checkboxValue;\n    this.checkboxItem.emit({ option, selected });\n  }\n\n  onComboItem(options: any, event: any) {\n    const option = { [this.fieldValue]: this.value, [this.fieldLabel]: this.label };\n    this.selectedView = options;\n    this.comboItem.emit({ ...option, event });\n  }\n\n  compareObjects(obj1: any, obj2: any) {\n    return JSON.stringify(obj1) === JSON.stringify(obj2);\n  }\n\n  onCheckboxItemEmit(event: KeyboardEvent) {\n    if ((event && event.code === 'Enter') || event.code === 'Space') {\n      this.onCheckboxItem();\n    }\n  }\n\n  getLabelFormatted(label: string): SafeHtml {\n    const sanitizedLabel = this.sanitizeTagHTML(label);\n    let format: string = sanitizedLabel;\n\n    if (this.isFiltering || this.validateForOptionsLabel()) {\n      const labelInput = this.sanitizeTagHTML(this.searchValue.toString().toLowerCase());\n      const labelLowerCase = sanitizedLabel.toLowerCase();\n\n      const highlightClass = this.size === PoFieldSize.Small ? 'po-font-text-bold' : 'po-font-text-large-bold';\n      const openTagBold = `<span class=\"${highlightClass}\">`;\n      const closeTagBold = '</span>';\n\n      let startString;\n      let middleString;\n      let endString;\n\n      switch (this.filterMode) {\n        case PoItemListFilterMode.startsWith:\n        case PoItemListFilterMode.contains: {\n          const indexOfLabelInput = labelLowerCase.indexOf(labelInput);\n\n          if (indexOfLabelInput > -1) {\n            startString = sanitizedLabel.substring(0, indexOfLabelInput);\n\n            middleString = sanitizedLabel.substring(indexOfLabelInput, indexOfLabelInput + labelInput.length);\n            endString = sanitizedLabel.substring(indexOfLabelInput + labelInput.length);\n\n            format = startString + openTagBold + middleString + closeTagBold + endString;\n          }\n\n          break;\n        }\n        case PoItemListFilterMode.endsWith: {\n          const lastIndexOfLabelInput = labelLowerCase.lastIndexOf(labelInput);\n\n          if (lastIndexOfLabelInput > -1) {\n            startString = sanitizedLabel.substring(0, lastIndexOfLabelInput);\n            middleString = sanitizedLabel.substring(lastIndexOfLabelInput);\n\n            format = startString + openTagBold + middleString + closeTagBold;\n          }\n          break;\n        }\n      }\n    }\n\n    return this.safeHtml(format);\n  }\n\n  validateForOptionsLabel(): boolean {\n    return this.comboService && this.searchValue && !this.compareCache && this.shouldMarkLetters;\n  }\n\n  safeHtml(value): SafeHtml {\n    return this.sanitized.bypassSecurityTrustHtml(value);\n  }\n\n  private sanitizeTagHTML(value: string = '') {\n    return value.replace(/</g, '&lt;').replace(/>/g, '&gt;');\n  }\n}\n","<ng-container (keydown)=\"onCheckboxItemEmit($event)\">\n  @switch (type) {\n    @default {\n      <div\n        #itemList\n        [class.po-item-list__separator]=\"separator\"\n        [class.po-item-list__disabled]=\"disabled || !visible\"\n        [class.po-item-list__selected]=\"(selected || activeTabs) && !disabled\"\n        [class.po-item-list__hidden]=\"tabHide\"\n        [attr.aria-disabled]=\"disabled || !visible\"\n        [attr.aria-label]=\"label\"\n        [class.po-item-list__danger]=\"danger\"\n        class=\"po-item-list po-item-list__action\"\n      >\n        @if (icon) {\n          <po-icon\n            class=\"po-popup-icon-item po-field-icon\"\n            [class.po-field-icon-aa]=\"size === 'small'\"\n            [p-icon]=\"icon\"\n          ></po-icon>\n        }\n        <span class=\"po-item-list-label\">{{ label }}</span>\n\n        @if (iconArrowRight) {\n          <po-icon class=\"po-popup-icon-item-right po-field-icon\" [p-icon]=\"iconArrowRight\"></po-icon>\n        }\n      </div>\n    }\n    @case ('option') {\n      <div\n        #itemList\n        class=\"po-item-list po-item-list__option\"\n        [class.po-item-list__separator]=\"separator\"\n        [class.po-item-list__selected]=\"selected && !disabled\"\n        [attr.aria-disabled]=\"disabled\"\n        [attr.aria-label]=\"label\"\n        (click)=\"onComboItem(item, $event)\"\n      >\n        @if (!template) {\n          @switch (keysLabel.length) {\n            @case (0) {\n              <span class=\"po-item-list-label\" [innerHTML]=\"getLabelFormatted(label)\"></span>\n            }\n\n            @case (1) {\n              <span class=\"po-item-list-label\">{{ item[keysLabel[0]] }}</span>\n            }\n\n            @case (2) {\n              <div class=\"po-item-list-label po-item-list-label-group\">\n                <span class=\"po-item-list-label\">{{ item[keysLabel[0]] }}</span>\n                <span class=\"po-item-list-sublabel\">{{ item[keysLabel[1]] }}</span>\n              </div>\n            }\n\n            @default {\n              <div class=\"po-item-list-label po-item-list-label-group\">\n                <span class=\"po-item-list-label\">{{ item[keysLabel[0]] }}</span>\n                <span class=\"po-item-list-sublabel\">{{ item[keysLabel[1]] }} - {{ item[keysLabel[2]] }}</span>\n              </div>\n            }\n          }\n        }\n\n        <ng-template\n          [ngTemplateOutlet]=\"template?.templateRef\"\n          [ngTemplateOutletContext]=\"{ $implicit: templateContext }\"\n        >\n        </ng-template>\n      </div>\n    }\n    @case ('check') {\n      <div\n        class=\"po-item-list po-item-list__check\"\n        [class.po-item-list__separator]=\"separator\"\n        [class.po-item-list__selected]=\"selected && !disabled\"\n        [class.po-item-list__disabled]=\"disabled\"\n        [attr.aria-disabled]=\"disabled\"\n        [attr.aria-label]=\"label\"\n        (click)=\"onCheckboxItem()\"\n        (keydown)=\"onCheckboxItemEmit($event)\"\n        (keyup)=\"onCheckboxItemEmit($event)\"\n      >\n        <po-checkbox\n          [p-disabled-tabindex]=\"true\"\n          [p-checkboxValue]=\"checkboxValue === null ? 'mixed' : checkboxValue\"\n          [p-disabled]=\"disabled\"\n          [p-size]=\"size\"\n        ></po-checkbox>\n        @if (!template) {\n          <span class=\"po-item-list__label\">{{ label }}</span>\n        }\n        <ng-template\n          [ngTemplateOutlet]=\"template?.templateRef\"\n          [ngTemplateOutletContext]=\"{ $implicit: templateContext }\"\n        >\n        </ng-template>\n      </div>\n    }\n  }\n</ng-container>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  Output,\n  ViewChild,\n  inject\n} from '@angular/core';\nimport { PoListBoxLiterals } from '../interfaces/po-listbox-literals.interface';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente de pesquisa que será criado dentro do search do `po-listbox`.\n */\n@Component({\n  selector: 'po-search-list',\n  templateUrl: './po-search-list.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoSearchListComponent {\n  private readonly cd = inject(ChangeDetectorRef);\n\n  @ViewChild('inputElement', { read: ElementRef, static: true }) inputElement: ElementRef;\n\n  /** Propriedade que recebe as literais definidas no `po-listbox`. */\n  @Input('p-literals') literals?: PoListBoxLiterals;\n\n  @Input('p-field-value') fieldValue: string;\n\n  /** Tamanho do texto de exibido do item. */\n  @HostBinding('attr.p-size')\n  @Input('p-size')\n  size: string;\n\n  /** Evento que será disparado a cada tecla digitada no campo de busca. */\n  @Output('p-change') change = new EventEmitter();\n\n  private _placeholder?: string;\n  public initUp = false;\n  public initDown = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Placeholder do campo de pesquisa.\n   *\n   * > Caso o mesmo não seja informado, o valor padrão será traduzido com base no idioma do navegador (pt, es e en).\n   *\n   * @default `Buscar`\n   */\n  @Input('p-placeholder') set placeholder(placeholder: string) {\n    this._placeholder =\n      placeholder && this.isTypeof(placeholder, 'string') ? placeholder : this.literals.placeholderSearch;\n  }\n\n  get placeholder() {\n    return this._placeholder || this.literals.placeholderSearch;\n  }\n\n  get inputValue() {\n    return this.inputElement.nativeElement.value;\n  }\n\n  onChange(event) {\n    if (event.key === 'Tab') {\n      event.preventDefault();\n    }\n    this.initUp = true;\n    if (this.initDown === this.initUp) {\n      this.change.emit({ event: event, [this.fieldValue]: this.inputElement.nativeElement.value });\n    }\n  }\n\n  setFocus() {\n    this.inputElement.nativeElement.focus();\n  }\n\n  clean() {\n    this.inputElement.nativeElement.value = '';\n    this.cd.markForCheck();\n  }\n\n  resetKeys() {\n    this.initUp = false;\n    this.initDown = false;\n  }\n\n  isTypeof(object: any, type: any) {\n    return typeof object === type;\n  }\n\n  changeInitSearch(event) {\n    if (event.key === 'Tab') {\n      event.preventDefault();\n    }\n    this.initDown = true;\n  }\n}\n","<div class=\"po-field-container-input po-listbox-container-search\">\n  <div class=\"po-field-icon-container-left\">\n    <po-icon\n      p-icon=\"ICON_SEARCH\"\n      class=\"po-field-icon po-icon-input\"\n      [class.po-field-icon-aa]=\"size === 'small'\"\n    ></po-icon>\n  </div>\n\n  <input\n    #inputElement\n    class=\"po-input po-input-icon-left po-listbox-search-input\"\n    [class.po-input-icon-left-aa]=\"size === 'small'\"\n    [attr.p-size]=\"size\"\n    type=\"text\"\n    [placeholder]=\"placeholder\"\n    (keyup)=\"onChange($event)\"\n    (keydown)=\"changeInitSearch($event)\"\n  />\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  ViewChildren,\n  inject\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { PoListBoxBaseComponent } from './po-listbox-base.component';\nimport { PoItemListOptionGroup } from './po-item-list/interfaces/po-item-list-option-group.interface';\nimport { PoItemListOption } from './po-item-list/interfaces/po-item-list-option.interface';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { isTypeof, PoUtils } from '../../utils/util';\nimport { PoSearchListComponent } from './po-search-list/po-search-list.component';\nimport { PoDropdownAction } from '../po-dropdown/po-dropdown-action.interface';\nimport { Observable, Subscription, debounceTime, fromEvent } from 'rxjs';\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\n\n@Component({\n  selector: 'po-listbox',\n  templateUrl: './po-listbox.component.html',\n  standalone: false\n})\nexport class PoListBoxComponent extends PoListBoxBaseComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n  element = inject(ElementRef);\n  public currentItems: Array<PoDropdownAction> = [];\n  public currentGroup: PoDropdownAction | null = null;\n\n  private readonly navigationStack: Array<{ group: PoDropdownAction | null; items: Array<PoDropdownAction> }> = [];\n  private readonly renderer = inject(Renderer2);\n  private readonly router = inject(Router);\n  private readonly changeDetector = inject(ChangeDetectorRef);\n\n  @ViewChild('listbox', { static: true }) listbox: ElementRef;\n  @ViewChild('listboxItemList', { static: false }) listboxItemList: ElementRef;\n  @ViewChild('listboxGroupHeader') listboxGroupHeader: ElementRef;\n  @ViewChild('searchElement') searchElement: PoSearchListComponent;\n  @ViewChild('popupHeaderContainer') popupHeaderContainer: ElementRef;\n  @ViewChildren('listboxItem') listboxItems!: QueryList<ElementRef>;\n\n  private scrollEvent$: Observable<any>;\n  private subscriptionScrollEvent: Subscription;\n\n  constructor() {\n    const languageService = inject(PoLanguageService);\n\n    super(languageService);\n  }\n\n  ngOnInit(): void {\n    if (this.listboxSubitems) {\n      this.currentItems = this.items;\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.setListBoxMaxHeight();\n    this.setListBoxWidth();\n    this.listboxItemList?.nativeElement.focus();\n    if (this.listboxSubitems) {\n      requestAnimationFrame(() => {\n        const firstItem = this.listboxItems?.first.nativeElement;\n        if (firstItem) {\n          firstItem.focus();\n\n          setTimeout(() => {\n            firstItem.dispatchEvent(new FocusEvent('focus', { bubbles: true }));\n          }, 0);\n        }\n      });\n    }\n    this.changeDetector.detectChanges();\n  }\n\n  ngOnChanges(changes?: SimpleChanges): void {\n    if (changes?.items) {\n      this.setListBoxMaxHeight();\n      this.setListBoxWidth();\n    }\n\n    if (this.visible && this.infiniteScroll) {\n      this.checkInfiniteScroll();\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.subscriptionScrollEvent?.unsubscribe) {\n      this.subscriptionScrollEvent.unsubscribe();\n    }\n  }\n\n  public openGroup(group: PoDropdownAction, event?: MouseEvent | KeyboardEvent): void {\n    event?.stopPropagation();\n\n    this.navigationStack.push({\n      group: this.currentGroup,\n      items: this.currentItems\n    });\n\n    this.currentGroup = group;\n    this.currentItems = group.subItems || [];\n\n    requestAnimationFrame(() => {\n      const firstItem = this.listboxGroupHeader?.nativeElement;\n      if (firstItem) {\n        firstItem.focus();\n\n        setTimeout(() => {\n          firstItem.dispatchEvent(new FocusEvent('focus', { bubbles: true }));\n        }, 0);\n      }\n    });\n  }\n\n  public goBack(event: MouseEvent | KeyboardEvent): void {\n    event?.stopPropagation();\n\n    const previous = this.navigationStack.pop();\n\n    if (previous) {\n      this.currentGroup = previous.group;\n      this.currentItems = previous.items;\n    } else {\n      this.currentGroup = null;\n      this.currentItems = this.items;\n    }\n\n    this.clickItem.emit({ goBack: true });\n\n    requestAnimationFrame(() => {\n      const firstItem = this.listboxItems?.first?.nativeElement;\n      if (firstItem) {\n        firstItem.focus();\n\n        setTimeout(() => {\n          firstItem.dispatchEvent(new FocusEvent('focus', { bubbles: true }));\n        }, 0);\n      }\n    });\n  }\n\n  public onKeydownGoBack(event: KeyboardEvent, currentGroup?: PoDropdownAction): void {\n    if (event.key === 'Enter') {\n      this.goBack(event);\n    }\n\n    if (event?.code === 'Escape' || event.code === 'Tab') {\n      if (event.code === 'Tab' && !event.shiftKey && currentGroup?.$subItemTemplate) {\n        return;\n      }\n      this.closeEvent.emit();\n    }\n  }\n\n  protected onKeydownTemplate(event: KeyboardEvent): void {\n    if (event.code === 'Tab') {\n      if ((event.target as HTMLElement)?.closest('.po-listbox-dropdown')) {\n        event.stopPropagation();\n        return;\n      }\n      this.closeEvent.emit();\n    }\n  }\n\n  onSelectItem(itemListAction: PoItemListOption | PoItemListOptionGroup | any, event?: MouseEvent | KeyboardEvent) {\n    const isDisabled =\n      itemListAction.hasOwnProperty('disabled') &&\n      itemListAction.disabled !== null &&\n      itemListAction.disabled !== undefined\n        ? this.returnBooleanValue(itemListAction, 'disabled')\n        : false;\n    const isVisible =\n      itemListAction.hasOwnProperty('visible') &&\n      itemListAction.visible !== null &&\n      itemListAction.visible !== undefined\n        ? this.returnBooleanValue(itemListAction, 'visible')\n        : true;\n\n    if (this.isTabs && !itemListAction.disabled && !itemListAction.hide) {\n      this.onClickTabs(itemListAction);\n    }\n\n    if (itemListAction?.action && !isDisabled && isVisible) {\n      itemListAction.action(this.param || itemListAction);\n    }\n\n    if (itemListAction?.url && !isDisabled && isVisible) {\n      return this.openUrl(itemListAction.url);\n    }\n\n    if (itemListAction?.subItems?.length || itemListAction?.$subItemTemplate) {\n      this.openGroup(itemListAction, event);\n    } else if (this.listboxSubitems) {\n      this.closeEvent.emit();\n    }\n\n    if (!isDisabled) {\n      this.clickItem.emit(itemListAction);\n    }\n  }\n\n  onSelectAllCheckboxKeyDown(event: KeyboardEvent) {\n    if (event.code === 'Tab') {\n      this.closeEvent.emit();\n    }\n  }\n\n  onKeyDown(itemListAction: PoItemListOption | PoItemListOptionGroup | any, event?: KeyboardEvent) {\n    event?.preventDefault();\n\n    if ((event && event.code === 'Enter') || event.code === 'Space') {\n      if (itemListAction.type === 'footerAction') {\n        this.handleFooterActionListbox();\n        return;\n      }\n\n      // Cenário em que o `Po-Search` (com listbox) tem nos items ação ou url\n      if (this.type === 'option' && (itemListAction?.action || itemListAction?.url)) {\n        this.onSelectItem(itemListAction);\n        this.optionClicked(itemListAction);\n        return;\n      }\n\n      switch (this.type) {\n        case 'check':\n          this.onSelectCheckBoxItem(itemListAction);\n          break;\n        case 'option':\n          this.optionClicked(itemListAction);\n          break;\n        case 'action':\n          this.onSelectItem(itemListAction);\n          break;\n      }\n    }\n\n    if ((event && event.code === 'Escape') || event.code === 'Tab') {\n      this.closeEvent.emit();\n    }\n  }\n\n  checkboxClicked({ option, selected }) {\n    if (this.type === 'check') {\n      this.change.emit({ selected, option });\n    }\n  }\n\n  optionClicked(option: any) {\n    if (this.type === 'option') {\n      this.items.filter(item =>\n        item[this.fieldValue] === option[this.fieldValue] ? (item['selected'] = true) : (item['selected'] = false)\n      );\n      this.selectCombo.emit({ ...option });\n    }\n  }\n\n  onSelectCheckBoxItem(option) {\n    const selected = !this.isSelectedItem(option);\n    this.checkboxClicked({ option, selected });\n  }\n\n  isSelectedItem(option) {\n    return this.selectedOptions.some(selectedItem => selectedItem[this.fieldValue] === option[this.fieldValue]);\n  }\n\n  changeAllEmit(event: KeyboardEvent) {\n    if ((event && event.code === 'Enter') || event.code === 'Space') {\n      this.changeAll.emit();\n    }\n  }\n\n  onSelectTabs(tab) {\n    if (this.isTabs && tab) {\n      this.changeStateTabs.emit(tab);\n    }\n  }\n\n  onActivatedTabs(tab) {\n    this.activatedTab.emit(tab);\n  }\n\n  callChangeSearch(event) {\n    this.changeSearch.emit(event);\n  }\n\n  showMoreInfiniteScroll({ target }): void {\n    const scrollPosition = target.offsetHeight + target.scrollTop;\n    if (scrollPosition >= target.scrollHeight * (this.infiniteScrollDistance / 110)) {\n      this.UpdateInfiniteScroll.emit();\n    }\n  }\n\n  scrollListener(componentListner: HTMLElement): Observable<any> {\n    return fromEvent(componentListner, 'scroll').pipe(debounceTime(100));\n  }\n\n  setFocus() {\n    this.listboxItemList?.nativeElement?.focus();\n  }\n\n  protected checkInfiniteScroll(): void {\n    if (this.hasInfiniteScroll()) {\n      this.includeInfiniteScroll();\n    }\n  }\n\n  protected getSizeLoading() {\n    const width = this.listbox.nativeElement.offsetWidth || this.containerWidth;\n\n    if (width > 180 && this.size !== PoFieldSize.Small) {\n      return 'md';\n    } else if (width >= 140 || this.size === PoFieldSize.Small) {\n      return 'sm';\n    } else {\n      return 'xs';\n    }\n  }\n\n  protected getTextLoading() {\n    const width = this.listbox.nativeElement.offsetWidth || this.containerWidth;\n\n    return width < 140 ? ' ' : '';\n  }\n\n  private hasInfiniteScroll(): boolean {\n    this.changeDetector.detectChanges();\n    return this.infiniteScroll && this.listboxItemList?.nativeElement.scrollHeight;\n  }\n\n  checkTemplate() {\n    if (this.cache || this.infiniteScroll) {\n      return this.items.length;\n    } else if (!this.items.length && this.footerActionListbox) {\n      return true;\n    } else {\n      return !this.isServerSearching && this.items.length;\n    }\n  }\n\n  private includeInfiniteScroll(): void {\n    this.scrollEvent$ = this.scrollListener(this.listboxItemList?.nativeElement);\n\n    this.subscriptionScrollEvent = this.scrollEvent$.subscribe(event => {\n      this.showMoreInfiniteScroll(event);\n    });\n  }\n\n  protected returnBooleanValue(itemListAction: any, property: string) {\n    return isTypeof(itemListAction[property], 'function')\n      ? itemListAction[property](this.param || itemListAction)\n      : itemListAction[property];\n  }\n\n  private setListBoxMaxHeight(): void {\n    const dropdownMaxHeight = 400;\n    const itemsLength = this.items.length;\n    const hasPopupHeaderContainer = this.popupHeaderContainer?.nativeElement?.children?.length > 0;\n\n    if (!this.listboxSubitems && itemsLength > 6) {\n      if (this.type === 'check' && !this.hideSearch) {\n        this.renderer.setStyle(this.listbox.nativeElement, 'maxHeight', `${44 * 6 - 44 / 3 + 60}px`);\n      } else if (hasPopupHeaderContainer) {\n        this.renderer.setStyle(\n          this.listbox.nativeElement.querySelector('ul[role=listbox]'),\n          'maxHeight',\n          `${44 * 6 - 44 / 3}px`\n        );\n        this.renderer.removeStyle(this.listbox.nativeElement, 'maxHeight');\n      } else {\n        this.renderer.setStyle(this.listbox.nativeElement, 'maxHeight', `${44 * 6 - 44 / 3}px`);\n      }\n    }\n\n    if (this.listboxSubitems) {\n      this.renderer.setStyle(this.listbox.nativeElement, 'maxHeight', `${dropdownMaxHeight}px`);\n    }\n  }\n\n  private setListBoxWidth(): void {\n    const dropdownMinWidth = 240;\n    const dropdownMaxWidth = 340;\n\n    if (this.listboxSubitems && this.items) {\n      this.renderer.setStyle(this.listbox.nativeElement, 'minWidth', `${dropdownMinWidth}px`);\n      this.renderer.setStyle(this.listbox.nativeElement, 'maxWidth', `${dropdownMaxWidth}px`);\n    }\n  }\n\n  private openUrl(url: string) {\n    if (PoUtils.isExternalLink(url)) {\n      return PoUtils.openExternalLink(url);\n    }\n\n    if (url) {\n      return this.router.navigate([url]);\n    }\n  }\n\n  onClickTabs(tab) {\n    if (!tab.disabled) {\n      this.clickTab.emit(tab);\n    }\n  }\n\n  formatItemList(item: any): string {\n    if (this.isTabs) {\n      return item.id;\n    } else {\n      try {\n        return JSON.stringify(item);\n      } catch (error) {\n        return item;\n      }\n    }\n  }\n\n  handleFooterActionListbox() {\n    this.footerActionListboxEvent.emit();\n    this.closeEvent.emit();\n  }\n}\n","<div\n  #listbox\n  class=\"po-listbox\"\n  [class.po-listbox-check]=\"type === 'check' || type === 'option'\"\n  [attr.data-type]=\"type\"\n  [hidden]=\"visible\"\n>\n  <div #popupHeaderContainer>\n    <ng-content select=\"[p-popup-header-template]\"></ng-content>\n  </div>\n\n  @if (!hideSearch && type === 'check') {\n    <po-search-list\n      #searchElement\n      (p-change)=\"callChangeSearch($event)\"\n      [p-literals]=\"literalSearch\"\n      [p-field-value]=\"fieldValueSearch\"\n      [p-placeholder]=\"placeholderSearch\"\n      [p-size]=\"size\"\n    ></po-search-list>\n  }\n\n  @if (checkTemplate() && !listboxSubitems) {\n    <ul #listboxItemList cdkListbox [cdkListboxMultiple]=\"type === 'check'\" class=\"po-listbox-list\">\n      @if (type === 'check' && items.length && !searchElement?.inputValue && !hideSelectAll) {\n        <li\n          cdkOption=\"selectAll\"\n          [attr.aria-checked]=\"checkboxAllValue === null ? 'mixed' : checkboxAllValue\"\n          class=\"po-listbox-item-type-check\"\n          (click)=\"changeAll.emit()\"\n          (keydown)=\"changeAllEmit($event)\"\n          (keydown)=\"onSelectAllCheckboxKeyDown($event)\"\n        >\n          <po-item-list\n            [p-selected]=\"checkboxAllValue\"\n            p-type=\"check\"\n            [p-label]=\"literals.selectAll\"\n            p-value=\"selectAll\"\n            [p-checkbox-value]=\"checkboxAllValue\"\n            [p-size]=\"size\"\n          >\n          </po-item-list>\n        </li>\n      }\n      @for (item of items; track item) {\n        <li\n          [class.po-listbox-item]=\"visible\"\n          [class.po-listbox-item-type-check]=\"type === 'check'\"\n          [cdkOption]=\"item[fieldLabel]\"\n          [cdkOptionDisabled]=\"\n            returnBooleanValue(item, 'disabled') || returnBooleanValue(item, 'visible') === false || item.options\n          \"\n          [attr.aria-selected]=\"isSelectedItem(item) || item.selected\"\n          (click)=\"onSelectItem(item)\"\n          (keydown)=\"onKeyDown(item, $event)\"\n        >\n          @if (item.options) {\n            <label class=\"po-combo-item-title\">\n              {{ item.label }}\n            </label>\n          }\n          @if (returnBooleanValue(item, 'visible') !== false) {\n            <po-item-list\n              [p-disabled]=\"returnBooleanValue(item, 'disabled')\"\n              [p-visible]=\"returnBooleanValue(item, 'visible')\"\n              [p-checkbox-value]=\"isSelectedItem(item)\"\n              [attr.data-item-list]=\"formatItemList(item)\"\n              [p-label]=\"item[fieldLabel]\"\n              [p-value]=\"item[fieldValue]\"\n              [p-selected]=\"isSelectedItem(item) || item.selected\"\n              [p-active-tabs]=\"item.active\"\n              [p-separator]=\"item.separator || separator\"\n              [p-danger]=\"item.danger || item.type === 'danger'\"\n              [p-icon]=\"item.icon\"\n              [p-type]=\"type\"\n              [p-item]=\"item\"\n              [p-tab-hide]=\"item.hide\"\n              [p-is-tabs]=\"isTabs\"\n              [p-field-value]=\"fieldValue\"\n              [p-field-label]=\"fieldLabel\"\n              [p-template]=\"template\"\n              [p-template-context]=\"item\"\n              (p-selectcheckbox-item)=\"checkboxClicked($event)\"\n              (p-selectcombo-item)=\"optionClicked(item)\"\n              (p-emit-item-tabs)=\"onSelectTabs($event)\"\n              (p-activated-tabs)=\"onActivatedTabs($event)\"\n              [p-search-value]=\"searchValue\"\n              [p-filter-mode]=\"filterMode\"\n              [p-filtering]=\"isFiltering\"\n              [p-size]=\"size\"\n              [p-should-mark-letter]=\"shouldMarkLetters\"\n              [p-compare-cache]=\"compareCache\"\n              [p-combo-service]=\"comboService\"\n              [p-keys-label]=\"keysLabel\"\n            ></po-item-list>\n          }\n        </li>\n      }\n\n      @if (footerActionListbox) {\n        @if (placeholderListbox) {\n          <div class=\"po-item-list\" aria-hidden=\"true\">\n            <span>{{ placeholderListbox }}</span>\n          </div>\n        }\n\n        @if (!placeholderListbox && !items.length) {\n          <div class=\"po-item-list\" aria-hidden=\"true\">\n            <span>{{ literals.noItems }}</span>\n          </div>\n        }\n\n        <li\n          class=\"po-listbox-item\"\n          (click)=\"handleFooterActionListbox()\"\n          (keydown)=\"onKeyDown({ type: 'footerAction' }, $event)\"\n          cdkOption=\"footerActionListbox\"\n        >\n          <po-item-list [p-label]=\"literals.footerActionListbox\" p-separator [p-size]=\"size\" />\n        </li>\n      }\n    </ul>\n  } @else {\n    @if (!items.length && !isServerSearching && type !== 'action' && !footerActionListbox) {\n      <div class=\"po-listbox-container-no-data po-text-center\">\n        <span> {{ literals.noItems }}</span>\n      </div>\n    }\n  }\n\n  @if (listboxSubitems) {\n    <ul cdkListbox class=\"po-listbox-list po-listbox-dropdown\">\n      @if (!currentGroup) {\n        @for (item of currentItems; track item) {\n          <li\n            #listboxItem\n            [class.po-listbox-item]=\"visible\"\n            [cdkOption]=\"item[fieldLabel]\"\n            [cdkOptionDisabled]=\"returnBooleanValue(item, 'disabled') || returnBooleanValue(item, 'visible') === false\"\n            [attr.aria-selected]=\"isSelectedItem(item) || item.selected\"\n            (click)=\"onSelectItem(item, $event)\"\n            (keydown)=\"onKeyDown(item, $event)\"\n          >\n            @if (item.subItems?.length || item.$subItemTemplate) {\n              <po-item-list\n                [p-label]=\"item.label\"\n                [p-item]=\"item\"\n                [p-separator]=\"item.separator || separator\"\n                [p-icon]=\"item.icon\"\n                [p-icon-arrow-right]=\"'ICON_ARROW_RIGHT'\"\n                [p-selected]=\"isSelectedItem(item) || item.selected\"\n              >\n              </po-item-list>\n            } @else if (!item.subItems?.length && returnBooleanValue(item, 'visible') !== false) {\n              <po-item-list\n                class=\"po-listbox-item-sub\"\n                [p-disabled]=\"returnBooleanValue(item, 'disabled')\"\n                [p-visible]=\"returnBooleanValue(item, 'visible')\"\n                [p-label]=\"item[fieldLabel]\"\n                [p-item]=\"item\"\n                [p-icon]=\"item.icon\"\n                [p-separator]=\"item.separator || separator\"\n                [p-danger]=\"item.type === 'danger'\"\n                [p-selected]=\"isSelectedItem(item) || item.selected\"\n              >\n              </po-item-list>\n            }\n          </li>\n        }\n      }\n\n      @if (currentGroup) {\n        <li\n          #listboxGroupHeader\n          class=\"po-listbox-group-header\"\n          [cdkOption]=\"'back-option'\"\n          [attr.aria-label]=\"literals?.backToPreviousGroup\"\n          (click)=\"goBack($event)\"\n          (keydown)=\"onKeydownGoBack($event, currentGroup)\"\n        >\n          <po-icon class=\"po-field-icon\" [p-icon]=\"'ICON_ARROW_LEFT'\"></po-icon>\n          <po-tag [p-value]=\"currentGroup.label\"></po-tag>\n        </li>\n\n        @if (currentGroup.$subItemTemplate) {\n          <div\n            (click)=\"$event.stopPropagation()\"\n            (keydown)=\"onKeydownTemplate($event)\"\n            (keydown.space)=\"$event.stopPropagation()\"\n          >\n            <ng-container\n              *ngTemplateOutlet=\"currentGroup.$subItemTemplate; context: { $implicit: currentGroup }\"\n            ></ng-container>\n          </div>\n        } @else {\n          @for (subItem of currentItems; track subItem.label) {\n            @if (subItem.subItems?.length) {\n              <li\n                [cdkOption]=\"subItem[fieldLabel]\"\n                (click)=\"onSelectItem(subItem, $event)\"\n                (keydown)=\"onKeyDown(subItem, $event)\"\n              >\n                <po-item-list\n                  [p-label]=\"subItem.label\"\n                  [p-item]=\"subItem\"\n                  [p-separator]=\"subItem.separator || separator\"\n                  [p-icon]=\"'ICON_ARROW_RIGHT'\"\n                  [p-icon-position]=\"'right'\"\n                >\n                </po-item-list>\n              </li>\n            } @else if (!subItem.subItems?.length && returnBooleanValue(subItem, 'visible') !== false) {\n              <li\n                [cdkOption]=\"subItem[fieldLabel]\"\n                (click)=\"onSelectItem(subItem, $event)\"\n                (keydown)=\"onKeyDown(subItem, $event)\"\n              >\n                <po-item-list\n                  class=\"po-listbox-item-sub\"\n                  [p-disabled]=\"returnBooleanValue(subItem, 'disabled')\"\n                  [p-visible]=\"returnBooleanValue(subItem, 'visible')\"\n                  [p-label]=\"subItem[fieldLabel]\"\n                  [p-item]=\"subItem\"\n                  [p-icon]=\"subItem.icon\"\n                  [p-separator]=\"subItem.separator || separator\"\n                  [p-danger]=\"subItem.type === 'danger'\"\n                  [p-selected]=\"isSelectedItem(subItem) || subItem.selected\"\n                >\n                </po-item-list>\n              </li>\n            }\n          }\n        }\n      }\n    </ul>\n  }\n\n  @if (isServerSearching && type !== 'action') {\n    <div [class.po-listbox-container-loading-default]=\"!infiniteLoading\">\n      <po-loading-overlay [p-size]=\"getSizeLoading()\" [p-text]=\"getTextLoading()\"></po-loading-overlay>\n    </div>\n  }\n</div>\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Renderer2, ViewChild, inject } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { PoControlPositionService } from '../../services/po-control-position/po-control-position.service';\nimport { isExternalLink, uuid, PoUtils } from '../../utils/util';\n\nimport { PoListBoxComponent } from '../po-listbox';\nimport { PoPopupAction } from './po-popup-action.interface';\nimport { PoPopupBaseComponent } from './po-popup-base.component';\n\n/**\n *\n * @docsExtends PoPopupBaseComponent\n *\n * @example\n *\n * <example name=\"po-popup-basic\" title=\"PO Popup - Basic\">\n *   <file name=\"sample-po-popup-basic/sample-po-popup-basic.component.html\"> </file>\n *   <file name=\"sample-po-popup-basic/sample-po-popup-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-popup-labs\" title=\"PO Popup - Labs\">\n *   <file name=\"sample-po-popup-labs/sample-po-popup-labs.component.html\"> </file>\n *   <file name=\"sample-po-popup-labs/sample-po-popup-labs.component.ts\"> </file>\n *   <file name=\"sample-po-popup-labs/sample-po-popup-labs.component.css\"> </file>\n * </example>\n *\n * <example name=\"po-popup-email\" title=\"PO Popup Email\">\n *   <file name=\"sample-po-popup-email/sample-po-popup-email.component.html\"> </file>\n *   <file name=\"sample-po-popup-email/sample-po-popup-email.component.ts\"> </file>\n *   <file name=\"sample-po-popup-email/sample-po-popup-email.component.css\"> </file>\n * </example>\n *\n */\n@Component({\n  selector: 'po-popup',\n  templateUrl: './po-popup.component.html',\n  providers: [PoControlPositionService],\n  standalone: false\n})\nexport class PoPopupComponent extends PoPopupBaseComponent implements AfterViewInit {\n  id = `po-popup[${uuid()}]`;\n  private readonly renderer = inject(Renderer2);\n  private readonly router = inject(Router);\n  private readonly poControlPosition = inject(PoControlPositionService);\n  changeDetector = inject(ChangeDetectorRef);\n\n  @ViewChild('popupRef', { read: ElementRef }) popupRef: ElementRef;\n  @ViewChild('listbox', { read: ElementRef }) listbox: ElementRef;\n\n  //utilizado apenas no theme builder\n  @ViewChild('poListBoxRef') poListBoxRef: PoListBoxComponent;\n\n  ngAfterViewInit() {\n    if (this.templateIcon && this.target) {\n      this.target = this.target?.iconElement?.nativeElement;\n    }\n  }\n\n  /**\n   * Fecha o componente *popup*.\n   *\n   * > Por padrão, este comportamento é acionado somente ao clicar fora do componente ou em determinada ação / url.\n   */\n  close() {\n    this.removeListeners();\n\n    this.showPopup = false;\n    this.closeEvent.emit();\n  }\n\n  onActionClick(popupAction: PoPopupAction) {\n    const actionNoDisabled = popupAction && !this.returnBooleanValue(popupAction, 'disabled');\n\n    if (popupAction?.action && actionNoDisabled) {\n      this.close();\n      popupAction.action(this.param || popupAction);\n    }\n\n    if (popupAction?.url && actionNoDisabled) {\n      this.close();\n      return this.openUrl(popupAction.url);\n    }\n  }\n\n  /**\n   * Abre o componente *popup*.\n   *\n   * > É possível informar um parâmetro que será utilizado na execução da ação do item e na função de desabilitar.\n   */\n  open(param?) {\n    this.oldTarget = this.target;\n    this.param = param;\n    this.showPopup = true;\n    this.changeDetector.detectChanges();\n\n    this.validateInitialContent();\n  }\n\n  returnBooleanValue(popupAction: any, property: string) {\n    return PoUtils.isTypeof(popupAction[property], 'function')\n      ? popupAction[property](this.param || popupAction)\n      : popupAction[property];\n  }\n\n  /**\n   * Responsável por abrir e fechar o *popup*.\n   *\n   * Quando disparado abrirá o *popup* e caso o mesmo já estiver aberto e possuir o mesmo `target` irá fecha-lo.\n   *\n   * É possível informar um parâmetro que será utilizado na execução da ação do item e na função de desabilitar.\n   */\n  toggle(param?) {\n    this.showPopup && this.oldTarget === this.target ? this.close() : this.open(param);\n  }\n\n  onClickItem(item: any) {\n    if (!item.goBack) {\n      this.clickItem.emit(item);\n    }\n\n    if (item.subItems || item.$subItemTemplate || item.goBack) {\n      this.changeDetector.detectChanges();\n      this.validateInitialContent();\n    }\n  }\n\n  protected checkAllActionIsInvisible() {\n    if (this.actions.every(item => item.visible === false)) {\n      return true;\n    }\n    return false;\n  }\n\n  private clickedOutDisabledItem(event) {\n    const containsItemDisabled =\n      this.elementContains(event.target, 'po-popup-item-disabled') ||\n      this.elementContains(event.target.parentElement, 'po-popup-item-disabled');\n\n    return !containsItemDisabled;\n  }\n\n  private clickedOutHeaderTemplate(event) {\n    const popupHeaderTemplate = this.popupRef && this.popupRef.nativeElement.querySelector('[p-popup-header-template]');\n    return !(popupHeaderTemplate && popupHeaderTemplate.contains(event.target));\n  }\n\n  private clickedOutTarget(event) {\n    return this.target && !this.target.contains(event.target);\n  }\n\n  private closePopupOnClickout(event: MouseEvent) {\n    if (this.clickedOutTarget(event) && this.clickedOutDisabledItem(event) && this.clickedOutHeaderTemplate(event)) {\n      this.close();\n    }\n  }\n\n  private elementContains(element: HTMLElement, className: string) {\n    return element && element.classList.contains(className);\n  }\n\n  private hasContentToShow() {\n    return !!(this.popupRef?.nativeElement && this.listbox?.nativeElement);\n  }\n\n  private initializeListeners() {\n    this.resizeListener = this.renderer.listen('window', 'resize', () => {\n      this.close();\n    });\n\n    this.clickoutListener = this.renderer.listen('document', 'click', (event: MouseEvent) => {\n      this.closePopupOnClickout(event);\n    });\n\n    window.addEventListener('scroll', this.onScroll, true);\n  }\n\n  private readonly onScroll = ({ target }): void => {\n    const { showPopup, popupRef } = this;\n\n    if (showPopup && popupRef?.nativeElement && target instanceof Node && !popupRef.nativeElement.contains(target)) {\n      this.close();\n    }\n  };\n\n  private openUrl(url: string) {\n    if (isExternalLink(url)) {\n      return PoUtils.openExternalLink(url);\n    }\n\n    if (url) {\n      return this.router.navigate([url]);\n    }\n  }\n\n  private removeListeners() {\n    if (this.clickoutListener) {\n      this.clickoutListener();\n    }\n\n    if (this.resizeListener) {\n      this.resizeListener();\n    }\n\n    window.removeEventListener('scroll', this.onScroll, true);\n  }\n\n  private setPosition() {\n    if (this.listbox.nativeElement.querySelector('.po-listbox')) {\n      this.poControlPosition.setElements(\n        this.popupRef.nativeElement,\n        8,\n        this.target,\n        this.customPositions,\n        false,\n        this.isCornerAlign\n      );\n      this.poControlPosition.adjustPosition(this.position);\n      this.arrowDirection = this.poControlPosition.getArrowDirection();\n    }\n  }\n\n  private validateInitialContent() {\n    if (this.hasContentToShow()) {\n      this.setPosition();\n      this.initializeListeners();\n    } else {\n      this.close();\n    }\n  }\n}\n","@if (showPopup && actions.length && !checkAllActionIsInvisible()) {\n  <div #popupRef class=\"po-popup\">\n    @if (!hideArrow) {\n      <div class=\"po-popup-arrow po-arrow-{{ arrowDirection }}\"></div>\n    }\n    <div class=\"po-popup-container\">\n      <po-listbox\n        #listbox\n        #poListBoxRef\n        p-type=\"action\"\n        [p-items]=\"actions\"\n        [p-param]=\"param\"\n        [p-size]=\"size\"\n        [p-listbox-subitems]=\"listboxSubitems\"\n        (p-close)=\"close()\"\n        (p-click-item)=\"onClickItem($event)\"\n      >\n        <ng-content p-popup-header-template select=\"[p-popup-header-template]\"></ng-content>\n      </po-listbox>\n    </div>\n  </div>\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Serviço utilizado para favoritar/desfavoritar uma url no componente po-breadcrumb.\n * A API deve retornar um objeto no formato { isFavorite: booleano, url: string }. Em ambos os métodos, GET e POST este\n * objeto deve ser retornado.\n * Ao alterar o status de favorito, a API deve retornar o objeto acima, com o novo status atualizado.\n * No método POST, existe a possibilidade de ser enviado parâmetros junto com a requisição. Neste caso, o objeto enviado\n * para a API terá o formato: { isFavorite: booleano, url: string, params: {} }, onde params é o objeto que pode ser enviado\n * junto com a requisição.\n *\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoBreadcrumbFavoriteService {\n  private readonly http = inject(HttpClient);\n\n  private _url: string;\n  private _bodyParams: object;\n\n  get url(): string {\n    return this._url;\n  }\n\n  get bodyParams(): object {\n    return this._bodyParams;\n  }\n\n  configService(url, params, item) {\n    this._url = url;\n    this._bodyParams = {\n      isFavorite: false,\n      url: item.link,\n      params: params\n    };\n  }\n\n  sendStatusFavorite(status): Observable<any> {\n    this.bodyParams['isFavorite'] = status;\n    return this.http.post(this.url, this.bodyParams);\n  }\n\n  getFavorite(): Observable<any> {\n    return this.http.get(this.url, { responseType: 'json', params: { url: this.bodyParams['url'] } });\n  }\n}\n","import { Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\n\nimport { Subscription } from 'rxjs';\n\nimport { PoBreadcrumbItem } from './../po-breadcrumb-item.interface';\nimport { PoBreadcrumbFavoriteService } from './po-breadcrumb-favorite.service';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\n\nexport const PoBreadcrumbLiterals: object = {\n  en: <any>{\n    favorite: 'Favorite',\n    unfavorite: 'Unfavorite'\n  },\n  es: <any>{\n    favorite: 'Favor',\n    unfavorite: 'Desfavorecer'\n  },\n  pt: <any>{\n    favorite: 'Favoritar',\n    unfavorite: 'Desfavoritar'\n  },\n  ru: <any>{\n    favorite: 'Любимый',\n    unfavorite: 'Немилость'\n  }\n};\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente que renderiza o serviço de favoritar do po-breadcrumb.\n */\n\n@Component({\n  selector: 'po-breadcrumb-favorite',\n  templateUrl: './po-breadcrumb-favorite.component.html',\n  providers: [PoBreadcrumbFavoriteService],\n  standalone: false\n})\nexport class PoBreadcrumbFavoriteComponent implements OnInit, OnDestroy {\n  private readonly service = inject(PoBreadcrumbFavoriteService);\n  private readonly languageService = inject(PoLanguageService);\n\n  // URL do serviço.\n  @Input('p-favorite-service') favoriteService: string;\n\n  // Item do breadcrumb ativo.\n  @Input('p-item-active') itemActive: PoBreadcrumbItem;\n\n  // Parâmetro que será enviado junto com o serviço de favoritar.\n  @Input('p-params-service') paramsService: object;\n\n  // Esconde literal e mantém apenas icone\n  @Input('p-hidden-literal') hiddenLiteral: boolean = false;\n\n  favorite: boolean = false;\n  literals;\n\n  private getSubscription: Subscription;\n  private setSubscription: Subscription;\n\n  constructor() {\n    const languageService = this.languageService;\n\n    const language = languageService.getShortLanguage();\n\n    this.literals = {\n      ...PoBreadcrumbLiterals[language]\n    };\n  }\n\n  ngOnInit() {\n    this.service.configService(this.favoriteService, this.paramsService, this.itemActive);\n    this.getStatusFavorite();\n  }\n\n  ngOnDestroy(): void {\n    if (this.getSubscription) {\n      this.getSubscription.unsubscribe();\n    }\n\n    if (this.setSubscription) {\n      this.setSubscription.unsubscribe();\n    }\n  }\n\n  toggleFavoriteAction() {\n    this.favorite ? this.setStatusFavorite(false) : this.setStatusFavorite(true);\n  }\n\n  private getStatusFavorite() {\n    this.getSubscription = this.service.getFavorite().subscribe(result => (this.favorite = result.isFavorite));\n  }\n\n  private setStatusFavorite(status) {\n    this.setSubscription = this.service\n      .sendStatusFavorite(status)\n      .subscribe(result => (this.favorite = result.isFavorite));\n  }\n}\n","<div\n  tabindex=\"0\"\n  role=\"button\"\n  class=\"po-breadcrumb-favorite po-clickable\"\n  (click)=\"toggleFavoriteAction()\"\n  (keyup.enter)=\"toggleFavoriteAction()\"\n>\n  <po-icon\n    p-icon=\"ICON_STAR\"\n    class=\"po-breadcrumb-favorite-star po-clickable\"\n    [class.po-breadcrumb-favorite-star-active]=\"favorite\"\n  >\n  </po-icon>\n  @if (favorite && !hiddenLiteral) {\n    <span class=\"po-hidden-sm po-breadcrumb-favorite-label\">{{ literals?.unfavorite }}</span>\n  }\n  @if (!favorite && !hiddenLiteral) {\n    <span class=\"po-hidden-sm po-breadcrumb-favorite-label\">{{ literals?.favorite }}</span>\n  }\n</div>\n","import {\n  AfterViewInit,\n  Component,\n  DoCheck,\n  ElementRef,\n  IterableDiffers,\n  OnDestroy,\n  Renderer2,\n  ViewChild,\n  inject\n} from '@angular/core';\n\nimport { PoBreadcrumbBaseComponent } from './po-breadcrumb-base.component';\nimport { PoBreadcrumbItem } from './po-breadcrumb-item.interface';\nimport { PoPopupComponent } from '../po-popup/po-popup.component';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\n\nexport const poBreadcrumbLiterals: object = {\n  en: <any>{\n    literalButtonPopup: 'Menu pop up collapsed'\n  },\n  es: <any>{\n    literalButtonPopup: 'Menú pop up colapsado'\n  },\n  pt: <any>{\n    literalButtonPopup: 'Menu pop up colapsado'\n  },\n  ru: <any>{\n    literalButtonPopup: 'меню свернуто'\n  }\n};\n\n/**\n * @docsExtends PoBreadcrumbBaseComponent\n *\n * @example\n *\n * <example name=\"po-breadcrumb-basic\" title=\"PO Breadcrumb Basic\">\n *  <file name=\"sample-po-breadcrumb-basic/sample-po-breadcrumb-basic.component.html\"> </file>\n *  <file name=\"sample-po-breadcrumb-basic/sample-po-breadcrumb-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-breadcrumb-labs\" title=\"PO Breadcrumb Labs\">\n *  <file name=\"sample-po-breadcrumb-labs/sample-po-breadcrumb-labs.component.html\"> </file>\n *  <file name=\"sample-po-breadcrumb-labs/sample-po-breadcrumb-labs.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-breadcrumb',\n  templateUrl: './po-breadcrumb.component.html',\n  standalone: false\n})\nexport class PoBreadcrumbComponent extends PoBreadcrumbBaseComponent implements AfterViewInit, DoCheck, OnDestroy {\n  private readonly element = inject(ElementRef);\n  renderer = inject(Renderer2);\n  languageService = inject(PoLanguageService);\n\n  @ViewChild('breadcrumb', { read: ElementRef, static: true }) breadcrumbElement: ElementRef;\n  @ViewChild('dropdownIcon', { read: ElementRef }) dropdownIcon: ElementRef;\n  @ViewChild('target', { read: ElementRef }) svgTarget: ElementRef;\n  @ViewChild('popup') popupContainer: PoPopupComponent;\n\n  showDropdown: boolean = false;\n  showDropdownToggle: boolean = false;\n  dropdownItems: Array<PoBreadcrumbItem>;\n  literals;\n  hiddenLiteralFavorite = false;\n\n  private _breadcrumbItemsLenght: number = 0;\n  private calculatedElement = false;\n  private readonly differ;\n  private hiddenWithoutResize = false;\n  private initialized = false;\n  private timeoutResize;\n\n  constructor() {\n    const differs = inject(IterableDiffers);\n\n    super();\n    const languageService = this.languageService;\n\n    this.differ = differs.find([]).create(null);\n    const language = languageService.getShortLanguage();\n\n    this.literals = {\n      ...poBreadcrumbLiterals[language]\n    };\n  }\n\n  ngAfterViewInit() {\n    this.initialized = true;\n\n    this.initializeResizeListener();\n  }\n\n  ngDoCheck() {\n    const breadcrumbWidth = this.breadcrumbElement.nativeElement.offsetWidth;\n\n    // Permite que os disclaimers sejam calculados na primeira vez que o componente torna-se visível,\n    // evitando com isso, problemas com Tabs ou Divs que iniciem escondidas.\n    if (breadcrumbWidth && !this.calculatedElement && this.initialized) {\n      this.initBreadcrumbSize();\n    }\n\n    if (this.hiddenWithoutResize) {\n      this.debounceResize();\n      this.hiddenWithoutResize = false;\n    }\n\n    this.checkChangeOnItems();\n  }\n\n  ngOnDestroy() {\n    this.removeResizeListener();\n  }\n\n  emitAction(item: PoBreadcrumbItem) {\n    if (item.action) {\n      item.action();\n    }\n  }\n\n  openPopup(event) {\n    if (event.code === 'Enter' || event.code === 'Space') {\n      this.popupContainer.open();\n    }\n  }\n\n  closePopUp() {\n    this.svgTarget.nativeElement.focus();\n  }\n\n  private checkChangeOnItems() {\n    if (this.differ) {\n      const changes = this.differ.diff(this.items);\n      if (changes) {\n        this.calcBreadcrumbItemsWidth();\n        this.calculatedElement = false;\n      }\n    }\n  }\n\n  private calcBreadcrumb() {\n    const breadcrumbFavorite = this.getBreadcrumbFavoriteWidth();\n    const existLabel = this.existsFavoritelabel();\n    const breadcrumb = this.getBreadcrumbWidth(breadcrumbFavorite, existLabel);\n    const breadcrumbTooltip = this.getBreadcrumbTooltipWidth();\n    if (breadcrumb <= this._breadcrumbItemsLenght) {\n      this.enableBreadcrumbResponsive();\n    } else {\n      this.disableBreadcrumbResponsive();\n    }\n\n    if (breadcrumbTooltip && breadcrumb <= breadcrumbTooltip) {\n      this.hiddenLiteralFavorite = true;\n    } else {\n      this.hiddenLiteralFavorite = false;\n    }\n  }\n\n  private getBreadcrumbFavoriteWidth() {\n    return this.favoriteService\n      ? this.element.nativeElement.querySelector('.po-breadcrumb-favorite').offsetWidth + 20\n      : 0;\n  }\n\n  private getBreadcrumbTooltipWidth() {\n    return this.favoriteService ? this.element.nativeElement.querySelector('.po-breadcrumb-tooltip')?.offsetWidth : 0;\n  }\n\n  private existsFavoritelabel() {\n    return !!this.element.nativeElement.querySelector('.po-breadcrumb-favorite-label');\n  }\n\n  private getBreadcrumbWidth(breadcrumbFavorite, existLabel) {\n    const widthSpan = !existLabel ? 95 : 0;\n    return this.element.nativeElement.querySelector('.po-breadcrumb').offsetWidth - (breadcrumbFavorite + widthSpan);\n  }\n\n  private calcBreadcrumbItemsWidth() {\n    const breadcrumbItem = this.element.nativeElement.querySelectorAll('.po-breadcrumb-item');\n\n    this._breadcrumbItemsLenght = Array.from(breadcrumbItem)\n      .map(breadcrumb => breadcrumb['offsetWidth'])\n      .reduce((a, b) => a + b, 16);\n  }\n\n  private enableBreadcrumbResponsive() {\n    this.showDropdownToggle = true;\n  }\n\n  private disableBreadcrumbResponsive() {\n    this.showDropdownToggle = false;\n    this.itemsView = [].concat(this.items);\n    this.showDropdown = false;\n  }\n\n  private debounceResize() {\n    clearTimeout(this.timeoutResize);\n    this.timeoutResize = setTimeout(() => {\n      if (\n        this.calculatedElement &&\n        !this.hiddenWithoutResize &&\n        this.breadcrumbElement.nativeElement.offsetWidth === 0\n      ) {\n        this.hiddenWithoutResize = true;\n      } else {\n        this.calcBreadcrumb();\n      }\n    }, 50);\n  }\n\n  private initBreadcrumbSize() {\n    this.calcBreadcrumbItemsWidth();\n    this.calcBreadcrumb();\n    this.calculatedElement = true;\n  }\n\n  private initializeResizeListener() {\n    this.resizeListener = this.renderer.listen('window', 'resize', (event: MouseEvent) => {\n      this.debounceResize();\n    });\n  }\n\n  private removeResizeListener() {\n    this.resizeListener();\n  }\n}\n","<nav class=\"po-breadcrumb\" #breadcrumb>\n  <div class=\"po-breadcrumb-items\">\n    @if (showDropdownToggle && itemsView.length >= 4) {\n      <ul #dropdownIcon class=\"po-breadcrumb-item po-clickable po-breadcrumb-tooltip\">\n        <li>\n          <po-link\n            [p-label]=\"itemsView[0].label\"\n            [p-url]=\"itemsView[0].link\"\n            (p-action)=\"emitAction(itemsView[0])\"\n          ></po-link>\n        </li>\n        <po-icon p-icon=\"ICON_ARROW_RIGHT po-breadcrumb-icon-arrow\"></po-icon>\n        <li\n          #target\n          class=\"po-breadcrumb-icon-more\"\n          [attr.aria-label]=\"literals.literalButtonPopup\"\n          role=\"button\"\n          tabindex=\"0\"\n          (click)=\"popup.toggle()\"\n          (keyup)=\"openPopup($event)\"\n        >\n          <po-icon p-icon=\"ICON_MORE_VERT\"></po-icon>\n        </li>\n        <po-icon p-icon=\"ICON_ARROW_RIGHT po-breadcrumb-icon-arrow\"></po-icon>\n        <li>\n          <po-link\n            [p-label]=\"itemsView[itemsView.length - 2].label\"\n            [p-url]=\"itemsView[itemsView.length - 2].link\"\n            (p-action)=\"emitAction(itemsView[itemsView.length - 2])\"\n          ></po-link>\n        </li>\n        <po-icon p-icon=\"ICON_ARROW_RIGHT po-breadcrumb-icon-arrow\"></po-icon>\n        <li>\n          <span\n            class=\"po-breadcrumb-item-activate\"\n            role=\"link\"\n            tabindex=\"0\"\n            [attr.aria-current]=\"itemsView[itemsView.length - 1].label\"\n            >{{ itemsView[itemsView.length - 1].label }}</span\n          >\n        </li>\n        <po-popup\n          #popup\n          p-position=\"bottom-right\"\n          (p-close)=\"closePopUp()\"\n          [p-hide-arrow]=\"true\"\n          [p-actions]=\"itemsViewPopup\"\n          [p-size]=\"size\"\n          [p-target]=\"target\"\n        >\n        </po-popup>\n      </ul>\n    }\n\n    @if (!showDropdownToggle || itemsView.length < 4) {\n      <ul class=\"po-breadcrumb-item-container\">\n        @for (item of itemsView; track item; let itemIndex = $index) {\n          <li class=\"po-breadcrumb-item\">\n            @if (!(itemIndex === itemsView.length - 1)) {\n              <po-link [p-label]=\"item.label\" [p-url]=\"item.link\" (p-action)=\"emitAction(item)\"></po-link>\n            }\n            @if (itemIndex === itemsView.length - 1) {\n              <span class=\"po-breadcrumb-item-activate\" role=\"link\" tabindex=\"0\" [attr.aria-current]=\"item.label\">{{\n                item.label\n              }}</span>\n            }\n            @if (!(itemIndex === itemsView.length - 1)) {\n              <po-icon p-icon=\"ICON_ARROW_RIGHT po-breadcrumb-icon-arrow\"></po-icon>\n            }\n          </li>\n        }\n      </ul>\n    }\n  </div>\n\n  @if (favoriteService) {\n    <po-breadcrumb-favorite\n      [p-favorite-service]=\"favoriteService\"\n      [p-item-active]=\"items[items.length - 1]\"\n      [p-params-service]=\"paramsService\"\n      [p-hidden-literal]=\"hiddenLiteralFavorite\"\n    >\n    </po-breadcrumb-favorite>\n  }\n</nav>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PoLabelComponent } from './po-label.component';\nimport { PoHelperModule } from '../po-helper';\n\n@NgModule({\n  declarations: [PoLabelComponent],\n  exports: [PoLabelComponent],\n  imports: [CommonModule, PoHelperModule]\n})\nexport class PoLabelModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PoIconModule } from '../../po-icon';\nimport { PoLabelModule } from '../../po-label';\nimport { PoTooltipModule } from '../../../directives/po-tooltip/index';\n\nimport { PoFieldContainerBottomComponent } from './po-field-container-bottom/po-field-container-bottom.component';\nimport { PoFieldContainerComponent } from './po-field-container.component';\nimport { PoHelperModule } from '../../po-helper';\n\n/**\n * @description\n *\n * Módulo do componente `po-field-container`.\n */\n@NgModule({\n  imports: [CommonModule, PoLabelModule, PoIconModule, PoTooltipModule, PoHelperModule],\n  exports: [PoFieldContainerBottomComponent, PoFieldContainerComponent],\n  declarations: [PoFieldContainerBottomComponent, PoFieldContainerComponent]\n})\nexport class PoFieldContainerModule {}\n","import { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PoCheckboxComponent } from './po-checkbox.component';\nimport { PoLabelModule } from '../../po-label/po-label.module';\nimport { PoFieldContainerModule } from '../po-field-container/po-field-container.module';\nimport { PoHelperModule } from '../../po-helper';\nimport { PoTooltipModule } from '../../../directives';\n\n@NgModule({\n  declarations: [PoCheckboxComponent],\n  exports: [PoCheckboxComponent],\n  imports: [CommonModule, FormsModule, PoLabelModule, PoFieldContainerModule, PoHelperModule, PoTooltipModule]\n})\nexport class PoCheckboxModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CdkListboxModule } from '@angular/cdk/listbox';\nimport { PoTagModule } from '../po-tag';\nimport { PoIconModule } from '../po-icon/po-icon.module';\nimport { PoListBoxComponent } from './po-listbox.component';\nimport { PoLoadingModule } from '../po-loading/po-loading.module';\nimport { PoItemListComponent } from './po-item-list/po-item-list.component';\nimport { PoCheckboxModule } from '../po-field/po-checkbox/po-checkbox.module';\nimport { PoSearchListComponent } from './po-search-list/po-search-list.component';\n\n@NgModule({\n  declarations: [PoListBoxComponent, PoItemListComponent, PoSearchListComponent],\n  exports: [PoListBoxComponent],\n  imports: [CommonModule, PoCheckboxModule, PoIconModule, PoLoadingModule, PoTagModule, CdkListboxModule]\n})\nexport class PoListBoxModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PoListBoxModule } from '../po-listbox/po-listbox.module';\n\nimport { PoPopupComponent } from './po-popup.component';\n\n/**\n * @description\n *\n * Módulo do componente po-popup.\n */\n@NgModule({\n  imports: [CommonModule, PoListBoxModule],\n  declarations: [PoPopupComponent],\n  exports: [PoPopupComponent],\n  providers: [],\n  schemas: []\n})\nexport class PoPopupModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PoBreadcrumbComponent } from './po-breadcrumb.component';\nimport { PoBreadcrumbFavoriteComponent } from './po-breadcrumb-favorite/po-breadcrumb-favorite.component';\nimport { PoLinkModule } from '../po-link/po-link.module';\nimport { PoPopupModule } from '../po-popup/po-popup.module';\nimport { PoIconModule } from '../po-icon/po-icon.module';\n\n/**\n * @description\n *\n * Módulo do componente po-breadcrumb.\n *\n */\n@NgModule({\n  imports: [CommonModule, RouterModule, PoLinkModule, PoPopupModule, PoIconModule],\n  declarations: [PoBreadcrumbComponent, PoBreadcrumbFavoriteComponent],\n  exports: [PoBreadcrumbComponent]\n})\nexport class PoBreadcrumbModule {}\n","/**\n * @usedBy PoButtonGroupComponent\n *\n * @description\n *\n * Tipos de seleção (`p-toggle`) disponíveis para o componente.\n */\nexport enum PoButtonGroupToggle {\n  /** Seleção múltipla. */\n  Multiple = 'multiple',\n\n  /** Seleção desabilitada. */\n  None = 'none',\n\n  /** Seleção única. */\n  Single = 'single'\n}\n","import { Component, HostBinding, HostListener, Input, input } from '@angular/core';\n\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { getDefaultSizeFn, validateSizeFn } from '../../utils/util';\nimport { PoButtonGroupToggle } from './enums/po-button-group-toggle.enum';\nimport { PoButtonGroupItem } from './po-button-group-item.interface';\n\nconst PO_TOGGLE_TYPE_DEFAULT = 'none';\n\n/**\n * @description\n *\n * O componente `po-button-group` é formado por um conjunto de botões distribuídos horizontalmente.\n * Cada botão do grupo é tratado de forma individual, recebendo assim um rótulo, uma ação bem como se deverá estar habilitado ou não.\n *\n * Este componente além de servir como um agrupador de botões para ação, também permite que sejam utilizados\n * para seleções multiplas e únicas.\n *\n * O grupo de botões deve ser utilizado para organizar as ações de maneira uniforme e transmitir a ideia de que os botões fazem\n * parte de um mesmo contexto.\n *\n * #### Boas práticas\n *\n * - Evite usar o `po-button-group` com apenas 1 ação, para isso utilize o `po-button`.\n * - Procure utilizar no máximo 3 ações para cada `po-button-group`.\n *\n * > As recomendações do `po-button` também valem para o `po-button-group`.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                    |\n * |----------------------------------------|-------------------------------------------------------|-------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                 |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                      |\n * | `--font-size`                          | Tamanho da fonte                                      | `var(--font-size-default)`                      |\n * | `--font-weight`                        | Peso da fonte                                         | `var(--font-weight-bold)`                       |\n * | `--line-height`                        | Tamanho da label                                      | `var(--line-height-none)`                       |\n * | `--border-radius`                      | Contém o valor do raio dos cantos do elemento&nbsp;   | `var(--border-radius-md)`                       |\n * | `--border-width`                       | Contém o valor da largura dos cantos do elemento&nbsp;| `var(--border-width-md)`                        |\n * | `--padding`                            | Preenchimento                                         | `0 1em`                                         |\n * | `--text-color`                         | Cor do texto                                          | `var(--color-neutral-light-00)`                 |\n * | `--color`                              | Cor principal do botão                                | `var(--color-action-default)`                   |\n * | `--background-color`                   | Cor de background                                     | `var(--color-transparent)`                      |\n * | `--shadow`                             | Contém o valor da sombra do elemento                  | `var(--shadow-none)`                            |\n * | **Hover**                              |                                                       |                                                 |\n * | `--color-hover`                        | Cor principal no estado hover                         | `var(--color-action-hover)`                     |\n * | `--background-hover`                   | Cor de background no estado hover                     | `var(--color-brand-01-lighter)`                 |\n * | `--border-color-hover`                 | Cor da borda no estado hover                          | `var(--color-brand-01-darkest)`                 |\n * | **Focused**                            |                                                       |                                                 |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                     | `var(--color-action-focus)`                     |\n * | **Pressed**                            |                                                       |                                                 |\n * | `--color-pressed`                      | Cor principal no estado de pressionado                | `var(--color-action-pressed)`                   |\n * | `--background-pressed`                 | Cor de background no estado de pressionado&nbsp;      | `var(--color-brand-01-light)`                   |\n * | **Disabled**                           |                                                       |                                                 |\n * | `--color-disabled`                     | Cor principal no estado disabled                      | `var(--color-action-disabled)`                  |\n * | `--background-color-disabled` &nbsp;   | Cor de background no estado disabled                  | `var(--color-transparent)`                      |\n *\n */\n@Component({\n  selector: 'po-button-group-base',\n  template: '',\n  standalone: false\n})\nexport class PoButtonGroupBaseComponent {\n  /**\n   * @description\n   *\n   * Lista de botões.\n   */\n  readonly buttons = input<Array<PoButtonGroupItem>>([], { alias: 'p-buttons' });\n\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n\n  private _toggle?: string = PO_TOGGLE_TYPE_DEFAULT;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o modo de seleção dos botões no componente conforme valores especificados no enum `PoButtonGroupToggle`:\n   *  - `multiple`: permite múltiplas seleções.\n   *  - `none`: desativa a funcionalidade de seleção.\n   *  - `single`: restringe a seleção a um único botão.\n   *\n   * @default `none`\n   */\n  @Input('p-toggle') set toggle(value: string) {\n    this._toggle = (<any>Object).values(PoButtonGroupToggle).includes(value) ? value : PO_TOGGLE_TYPE_DEFAULT;\n\n    this.checkSelecteds(this._toggle);\n  }\n\n  get toggle(): string {\n    return this._toggle;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura de 32px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura de 44px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n\n  onButtonClick(buttonClicked: PoButtonGroupItem, buttonIndex: number) {\n    if (this.toggle === PoButtonGroupToggle.Single) {\n      this.buttons().forEach(\n        (button, index) => (button.selected = index === buttonIndex ? !buttonClicked.selected : false)\n      );\n    } else if (this.toggle === PoButtonGroupToggle.Multiple) {\n      buttonClicked.selected = !buttonClicked.selected;\n    }\n  }\n\n  private checkSelecteds(toggleMode: string) {\n    if (toggleMode === PoButtonGroupToggle.None) {\n      this.deselectAllButtons();\n    } else if (toggleMode === PoButtonGroupToggle.Single) {\n      const hasMoreOneSelected = this.buttons().filter(button => button.selected).length > 1;\n      if (hasMoreOneSelected) {\n        this.deselectAllButtons();\n      }\n    }\n  }\n\n  private deselectAllButtons() {\n    this.buttons().forEach(button => (button.selected = false));\n  }\n}\n","import { Component, ViewContainerRef, inject } from '@angular/core';\n\nimport { PoButtonGroupBaseComponent } from './po-button-group-base.component';\n\n/**\n * @docsExtends PoButtonGroupBaseComponent\n *\n * @example\n *\n * <example name=\"po-button-group-basic\" title=\"PO Button Group Basic\">\n *  <file name=\"sample-po-button-group-basic/sample-po-button-group-basic.component.html\"> </file>\n *  <file name=\"sample-po-button-group-basic/sample-po-button-group-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-button-group-labs\" title=\"PO Button Group Labs\">\n *  <file name=\"sample-po-button-group-labs/sample-po-button-group-labs.component.html\"> </file>\n *  <file name=\"sample-po-button-group-labs/sample-po-button-group-labs.component.ts\"> </file>\n * </example>\n *\n *\n * <example name=\"po-button-group-attendance\" title=\"PO Button Group - Attendance\">\n *  <file name=\"sample-po-button-group-attendance/sample-po-button-group-attendance.component.html\"> </file>\n *  <file name=\"sample-po-button-group-attendance/sample-po-button-group-attendance.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-button-group-post\" title=\"PO Button Group - Post\">\n *  <file name=\"sample-po-button-group-post/sample-po-button-group-post.component.html\"> </file>\n *  <file name=\"sample-po-button-group-post/sample-po-button-group-post.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-button-group',\n  templateUrl: './po-button-group.component.html',\n  standalone: false\n})\nexport class PoButtonGroupComponent extends PoButtonGroupBaseComponent {}\n","<div class=\"po-button-group-container\">\n  @for (button of buttons(); track button; let i = $index) {\n    <po-button\n      class=\"po-sm-12 po-button-group\"\n      [class.po-button-group-button-selected]=\"button.selected\"\n      [class.po-button-group-disabled]=\"button.disabled\"\n      p-tooltip-position=\"bottom\"\n      [p-disabled]=\"button.disabled\"\n      [p-icon]=\"button.icon\"\n      [p-label]=\"button.label\"\n      [p-size]=\"size\"\n      [p-tooltip]=\"!button.disabled ? button.tooltip : undefined\"\n      (p-click)=\"onButtonClick(button, i); button.action(button)\"\n    >\n    </po-button>\n  }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoButtonModule } from './../po-button/index';\nimport { PoTooltipModule } from '../../directives/po-tooltip/index';\n\nimport { PoButtonGroupComponent } from './po-button-group.component';\n\n/**\n * @description\n *\n * Módulo do componente po-button-group.\n */\n@NgModule({\n  imports: [CommonModule, PoButtonModule, PoTooltipModule],\n  declarations: [PoButtonGroupComponent],\n  exports: [PoButtonGroupComponent]\n})\nexport class PoButtonGroupModule {}\n","import { Directive, ElementRef, EventEmitter, HostBinding, Input, Output } from '@angular/core';\n\n/**\n * @docsPrivate\n *\n * Este componente é de uso interno utilizado por componentes de entrada de dados com o objetivo de resetar as informações do model.\n *\n * Por padrão limpa o valor do campo e executa o método onChangePropagate, caso tenha a necessidade de tratar a função de limpar o campo,\n * deve implementar a interface PoClean.\n */\n@Directive()\nexport abstract class PoCleanBaseComponent {\n  private _size?: string = undefined;\n\n  /** Nesta propriedade deve-se informar o elementRef do campo de entrada que utilizará o po-clean. */\n  @Input('p-element-ref') inputRef: ElementRef;\n\n  /** Valor que será atribuído ao campo quando for clicado no po-clean. */\n  @Input('p-default-value') defaultValue?: string = '';\n\n  // Ícone customizado para o componente.\n  @Input('p-icon') icon?: string;\n\n  // Tamanho do componente.\n  set size(value: string) {\n    this._size = value;\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado quando executada ação do po-clean.\n   * Este evento deve ser usado para avisar para o componente que está usando o po-clean, que o botão foi disparado,\n   * e provavelmente será preciso emitir o evento para atualizar o model.\n   */\n  @Output('p-change-event') changeEvent: EventEmitter<any> = new EventEmitter<any>();\n\n  clear() {\n    this.setInputValue(this.defaultValue);\n    this.changeEvent.emit(this.defaultValue);\n  }\n\n  showIcon() {\n    return this.defaultValue !== this.getInputValue();\n  }\n\n  abstract setInputValue(value: string): void;\n\n  abstract getInputValue(): string;\n}\n","import { Component } from '@angular/core';\n\nimport { PoCleanBaseComponent } from './po-clean-base.component';\n\n/**\n * @docsPrivate\n *\n * @docsExtends PoCleanBaseComponent\n *\n * @examplePrivate\n *\n * <example-private name=\"po-clean-labs\" title=\"PO Clean Labs\">\n *   <file name=\"sample-po-clean-labs.component.html\"> </file>\n *   <file name=\"sample-po-clean-labs.component.ts\"> </file>\n * </example-private>\n */\n@Component({\n  selector: 'po-clean',\n  templateUrl: './po-clean.component.html',\n  standalone: false\n})\nexport class PoCleanComponent extends PoCleanBaseComponent {\n  setInputValue(value?: string) {\n    if (this.inputRef && this.inputRef.nativeElement) {\n      this.inputRef.nativeElement.value = value;\n    }\n  }\n\n  getInputValue() {\n    if (this.inputRef && this.inputRef.nativeElement) {\n      return this.inputRef.nativeElement.value;\n    }\n  }\n}\n","@if (showIcon()) {\n  <po-icon\n    class=\"po-field-icon\"\n    [class.po-field-icon-aa]=\"size === 'small'\"\n    [class.po-field-icon-large]=\"size === 'large'\"\n    [p-icon]=\"icon || 'ICON_CLEAR_CONTENT'\"\n    (click)=\"clear()\"\n  >\n  </po-icon>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoCleanComponent } from './po-clean.component';\nimport { PoIconModule } from '../../po-icon';\n\n/**\n * @description\n *\n * Módulo do componente `po-clean`.\n */\n@NgModule({\n  imports: [CommonModule, PoIconModule],\n  exports: [PoCleanComponent],\n  declarations: [PoCleanComponent]\n})\nexport class PoCleanModule {}\n","export function requiredFailed(required: boolean, disabled: boolean, value: string | Array<any> | number | boolean) {\n  const valid =\n    (typeof value === 'string' && value) ||\n    (typeof value === 'object' && value && value.length) ||\n    (typeof value === 'number' && (value || value === 0)) ||\n    (typeof value === 'boolean' && value);\n  return required && !disabled && !valid;\n}\n\nexport function maxlengpoailed(\n  maxlength: number,\n  value: string | number,\n  maskNoLengthValidation: boolean = false\n): boolean {\n  return validateLength(maxlength, value, 'max', maskNoLengthValidation);\n}\n\nexport function minlengpoailed(\n  minlength: number,\n  value: string | number,\n  maskNoLengthValidation: boolean = false\n): boolean {\n  return validateLength(minlength, value, 'min', maskNoLengthValidation);\n}\n\nexport function validateLength(\n  limit: number,\n  value: string | number,\n  comparison: 'max' | 'min',\n  maskNoLengthValidation: boolean = false\n): boolean {\n  if (!limit && limit !== 0) {\n    return false;\n  }\n\n  const validValue = (value || value === 0) && value.toString();\n  if (!validValue) {\n    return false;\n  }\n\n  const processedValue = maskNoLengthValidation ? validValue.replace(/[^\\w]/g, '') : validValue;\n\n  if (comparison === 'max') {\n    return processedValue.length > Number(limit);\n  } else if (comparison === 'min') {\n    return processedValue.length < Number(limit);\n  }\n\n  return false;\n}\n\nexport function patternFailed(pattern: string, value: string) {\n  let reg;\n  try {\n    reg = new RegExp(pattern);\n  } catch (e) {\n    return true;\n  }\n  return pattern && value && !reg.test(value);\n}\n\nexport function minFailed(min: number, value: number) {\n  const validValue = value || value === 0;\n  const validMin = min || min === 0;\n  return validValue && validMin && value < min;\n}\n\nexport function maxFailed(max: number, value: number) {\n  const validValue = value || value === 0;\n  const validMax = max || max === 0;\n  return validValue && validMax && value > max;\n}\n\nexport function dateFailed(value: string) {\n  return value && isNaN(Date.parse(value));\n}\n\nexport const PoValidators = {\n  maxlengpoailed,\n  minlengpoailed,\n  requiredFailed\n};\n","/**\n * @usedBy PoComboComponent\n *\n * @description\n *\n * Define o tipo de busca usado no po-combo.\n */\nexport enum PoComboFilterMode {\n  /** Verifica se o texto *inicia* com o valor pesquisado. Caso não seja especificado um tipo, será esse o utilizado. */\n  startsWith,\n  /** Verifica se o texto *contém* o valor pesquisado. */\n  contains,\n  /** Verifica se o texto *finaliza* com o valor pesquisado. */\n  endsWith\n}\n","import { PoComboLiterals } from './po-combo-literals.interface';\n\nexport const poComboLiteralsDefault = {\n  en: <PoComboLiterals>{\n    noData: 'No data found',\n    chooseOption: 'Choose an option',\n    clear: 'Clear'\n  },\n  es: <PoComboLiterals>{\n    noData: 'Datos no encontrados',\n    chooseOption: 'Elija una opción',\n    clear: 'limpia'\n  },\n  pt: <PoComboLiterals>{\n    noData: 'Nenhum dado encontrado',\n    chooseOption: 'Escolha uma opção',\n    clear: 'Apagar'\n  },\n  ru: <PoComboLiterals>{\n    noData: 'Данные не найдены',\n    chooseOption: 'Выберите опцию',\n    clear: 'чистый'\n  }\n};\n","import {\n  ChangeDetectorRef,\n  Directive,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  input,\n  Input,\n  OnInit,\n  Output,\n  TemplateRef\n} from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, Validator, Validators } from '@angular/forms';\n\nimport { poLocaleDefault } from '../../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport {\n  convertToBoolean,\n  getDefaultSizeFn,\n  isTypeof,\n  mapInputSizeToLoadingIcon,\n  validateSizeFn,\n  validValue\n} from '../../../utils/util';\nimport { PoValidators } from './../validators';\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { PoComboFilterMode } from './enums/po-combo-filter-mode.enum';\nimport { PoComboFilter } from './interfaces/po-combo-filter.interface';\nimport { PoComboGroup } from './interfaces/po-combo-group.interface';\nimport { poComboLiteralsDefault } from './interfaces/po-combo-literals-default.interface';\nimport { PoComboLiterals } from './interfaces/po-combo-literals.interface';\nimport { PoComboOptionGroup } from './interfaces/po-combo-option-group.interface';\nimport { PoComboOption } from './interfaces/po-combo-option.interface';\nimport { PoComboFilterService } from './po-combo-filter.service';\nimport { PoHelperOptions } from '../../po-helper';\n\nconst PO_COMBO_DEBOUNCE_TIME_DEFAULT = 400;\nconst PO_COMBO_FIELD_LABEL_DEFAULT = 'label';\nconst PO_COMBO_FIELD_VALUE_DEFAULT = 'value';\nconst poMultiselectContainerPositionDefault = 'bottom';\n\n/**\n * @description\n *\n * O `po-combo` exibe uma lista de opções com fácil seleção e filtragem.\n *\n * Além da exibição padrão, nele é possível listar as opões em agrupamentos.\n *\n * É possível selecionar e navegar entre as opções da lista tanto através do *mouse* quanto do teclado. No teclado navegue com\n * as setas e pressione *Enter* na opção que desejar.\n *\n * Com ele também é possível definir uma lista à partir da requisição de um serviço definido em `p-filter-service`.\n *\n * Em `p-filter-mode`, o filtro poderá ser configurado para buscar opões que correspondam ao início, fim ou que contenha o valor digitado.\n *\n * O `po-combo` guarda o último valor caso o usuário desista de uma busca, deixando o campo ou pressionando *Esc*. Caso seja digitado no\n * campo de busca a descrição completa de um item, então a seleção será automaticamente efetuada ao deixar o campo ou pressionando *Enter*.\n *\n * Utilizando po-combo com serviço, é possivel digitar um valor no campo de entrada e pressionar a tecla 'tab' para que o componente\n * faça uma requisição à URL informada passando o valor digitado no campo. Se encontrado o valor, então o mesmo será selecionado, caso\n * não seja encontrado, então a lista de itens voltará para o estado inicial.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                      |\n * |----------------------------------------|-------------------------------------------------------|---------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                   |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                        |\n * | `--font-size`                          | Tamanho da fonte                                      | `var(--font-size-default)`                        |\n * | `--text-color`                         | Cor do texto                                          | `var(--color-neutral-dark-90)`                    |\n * | `--text-color-placeholder`             | Cor do texto no placeholder                           | `var(--color-neutral-light-30)`                   |\n * | `--color`                              | Cor principal do Combo                                | `var(--color-neutral-dark-70)`                    |\n * | `--background`                         | Cor de background                                     | `var(--color-neutral-light-05)`                   |\n * | `--border-radius`                      | Contém o valor do raio dos cantos do elemento&nbsp;   | `var(--border-width-lg)`                          |\n * | `--min-width`                          | Largura mínima do combo                               | `150px`                                           |\n * | `--field-container-title-justify`      | Alinhamento horizontal do título (`justify-content`)  | `space-between`                                   |\n * | `--field-container-title-flex`         | Flex do título (`flex`)                               | `1 auto`                                          |\n * | **Hover**                              |                                                       |                                                   |\n * | `--color-hover`                        | Cor principal no estado hover                         | `var(--color-action-hover)`                       |\n * | `--background-hover`                   | Cor de background no estado hover                     | `var(--color-brand-01-lightest)`                  |\n * | **Focused**                            |                                                       |                                                   |\n * | `--color-focused`                      | Cor principal no estado de focus                      | `var(--color-action-default)`                     |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                     | `var(--color-action-focus)`                       |\n * | **Error**                              |                                                       |                                                   |\n * | `--color-error`                        | Cor principal no estado de erro                       | `var(--color-feedback-negative-base)`             |\n * | **Disabled**                           |                                                       |                                                   |\n * | `--color-disabled`                     | Cor principal no estado disabled                      | `var(--color-neutral-light-30)`                   |\n * | `--background-disabled`                | Cor de background no estado disabled                  | `var(--color-neutral-light-20)`                   |\n * | **Suggestion**                         |                                                       |                                                   |\n * | `--text-color-suggestion`              | Cor do texto no estado suggestion                     | `var(--color-neutral-mid-60)`                     |\n * | `--background-suggestion`              | Cor do background no estado suggestion                | `var(--color-brand-01-lightest)`                  |\n *\n */\n@Directive()\nexport abstract class PoComboBaseComponent implements ControlValueAccessor, OnInit, Validator {\n  // Propriedade interna que define se o ícone de ajuda adicional terá cursor clicável (evento) ou padrão (tooltip).\n  @Input() additionalHelpEventTrigger: string | undefined;\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de ajuda adicional, com o texto desta propriedade sendo passado para o popover do componente `po-helper`.\n   * **Como boa prática, indica-se utilizar um texto com até 140 caracteres.**\n   * > Requer um recuo mínimo de 8px se o componente estiver próximo à lateral da tela.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Input('p-additional-help-tooltip') additionalHelpTooltip?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao sair do campo.\n   */\n  @Output('p-blur') blur: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Aplica foco no elemento ao ser iniciado.\n   *\n   * > Caso mais de um elemento seja configurado com essa propriedade, apenas o último elemento declarado com ela terá o foco.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-auto-focus', transform: convertToBoolean }) autoFocus: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define se o título do campo será exibido de forma compacta.\n   *\n   * Quando habilitado (`true`), o modo compacto afeta o conjunto composto por:\n   * - `po-label`\n   * - `p-requirement (showRequired)`\n   * - `po-helper`\n   *\n   * Ou seja, todos os elementos relacionados ao título do campo\n   * (rótulo, indicador de obrigatoriedade e componente auxiliar) passam\n   * a seguir o comportamento de layout compacto.\n   *\n   * Também é possível definir esse comportamento de forma global,\n   * uma única vez, na folha de estilo geral da aplicação, por meio\n   * da customização dos tokens CSS:\n   *\n   * - `--field-container-title-justify`\n   * - `--field-container-title-flex`\n   *\n   * Exemplo:\n   *\n   * ```\n   * :root {\n   *   --field-container-title-justify: flex-start;\n   *   --field-container-title-flex: 0 1 auto;\n   * }\n   * ```\n   *\n   * Dessa forma, o layout compacto passa a ser o padrão da aplicação,\n   * sem a necessidade de definir a propriedade individualmente em cada campo.\n   *\n   * @default `false`\n   */\n  compactLabel = input<boolean, unknown>(false, { alias: 'p-compact-label', transform: convertToBoolean });\n\n  /** Label no componente. */\n  @Input('p-label') label?: string;\n\n  /** Texto de apoio para o campo. */\n  @Input('p-help') help?: string;\n\n  /** Nome do componente. */\n  @Input('name') name: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Nesta propriedade deve ser informada a URL do serviço em que será realizado o filtro para carregamento da lista de\n   * itens no componente.\n   * Caso haja a necessidade de customização, então pode ser informado um serviço implementando a interface PoComboFilter.\n   *\n   * Caso utilizado uma URL, o serviço deve ser retornado no padrão API TOTVS e utiliza as propriedades\n   * `p-field-label` e `p-field-value` para a construção da lista de itens.\n   *\n   * Quando utilizada uma URL de serviço, então será concatenada nesta URL o valor que deseja-se filtrar da seguinte forma:\n   * ```\n   * url + ?filter=Peter\n   * ```\n   *\n   * Se for definida a propriedade `p-filter-params`, a mesma também será concatenada. Por exemplo, para o\n   * parâmetro `{ age: 23 }` a URL ficaria:\n   *\n   * ```\n   * url + ?page=1&pageSize=20&age=23&filter=Peter\n   * ```\n   */\n  @Input('p-filter-service') filterService: PoComboFilter | string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Se verdadeiro ativa a funcionalidade de scroll infinito para o combo, Ao chegar ao fim da tabela executará nova busca dos dados conforme paginação.\n   *\n   * @default `false`\n   */\n  @Input('p-infinite-scroll') set infiniteScroll(value: boolean) {\n    this._infiniteScroll = convertToBoolean(value);\n  }\n\n  get infiniteScroll() {\n    return this._infiniteScroll;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o percentual necessário para disparar o evento `show-more`, que é responsável por carregar mais dados no combo. Caso o valor seja maior que 100 ou menor que 0, o valor padrão será 100%.\n   *\n   * **Exemplos**\n   * - p-infinite-scroll-distance = 80: Quando atingir 80% do scroll do combo, o `show-more` será disparado.\n   */\n  @Input('p-infinite-scroll-distance') set infiniteScrollDistance(value: number) {\n    this._infiniteScrollDistance = value > 100 || value < 0 ? 100 : value;\n  }\n\n  get infiniteScrollDistance() {\n    return this._infiniteScrollDistance;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o ícone que será exibido no início do campo.\n   *\n   * É possível usar qualquer um dos ícones da [Biblioteca de ícones](https://po-ui.io/icons). conforme exemplo abaixo:\n   * ```\n   * <po-combo p-icon=\"an an-user\" p-label=\"PO combo\"></po-combo>\n   * ```\n   * Também é possível utilizar outras fontes de ícones, por exemplo a biblioteca *Font Awesome*, da seguinte forma:\n   * ```\n   * <po-combo p-icon=\"fa fa-podcast\" p-label=\"PO combo\"></po-combo>\n   * ```\n   * Outra opção seria a customização do ícone através do `TemplateRef`, conforme exemplo abaixo:\n   * ```\n   * <po-combo [p-icon]=\"template\" p-label=\"combo template ionic\"></po-combo>\n   *\n   * <ng-template #template>\n   *  <ion-icon style=\"font-size: inherit\" name=\"heart\"></ion-icon>\n   * </ng-template>\n   * ```\n   * > Para o ícone enquadrar corretamente, deve-se utilizar `font-size: inherit` caso o ícone utilizado não aplique-o.\n   */\n  @Input('p-icon') icon?: string | TemplateRef<void>;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se a indicação de campo opcional será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - O campo conter `p-required`;\n   * - Não possuir `p-help` e/ou `p-label`.\n   *\n   * @default `false`\n   */\n  @Input('p-optional') optional: boolean;\n\n  /** Se verdadeiro, o campo receberá um botão para ser limpo. */\n  @Input({ alias: 'p-clean', transform: convertToBoolean }) clean?: boolean;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Se verdadeiro, o evento `p-change` receberá como argumento o `PoComboOption` referente à opção selecionada.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-emit-object-value', transform: convertToBoolean }) emitObjectValue: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Se verdadeiro, desabilitará a busca de um item via TAB.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-disabled-tab-filter', transform: convertToBoolean }) disabledTabFilter: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se o filtro inicial será removido no primeiro clique do campo.\n   *\n   * Quando habilitado e o combo possui um valor padrão, o primeiro clique\n   * exibirá todos os itens da lista ao invés de apenas o item inicializado.\n   *\n   * @default `false`\n   */\n  @Input('p-remove-initial-filter')\n  set removeInitialFilter(value: boolean) {\n    this._removeInitialFilter = value;\n    if (value) {\n      this.isRemoveInitialFilterSetByInput = true;\n    }\n  }\n  get removeInitialFilter() {\n    return this._removeInitialFilter;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe a mensagem setada se o campo estiver vazio e for requerido.\n   *\n   * > Necessário que a propriedade `p-required` esteja habilitada.\n   *\n   */\n  @Input('p-field-error-message') fieldErrorMessage: string;\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar no ícone de ajuda adicional.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Output('p-additional-help') additionalHelp = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Limita a exibição da mensagem de erro a duas linhas e exibe um tooltip com o texto completo.\n   *\n   * > Caso essa propriedade seja definida como `true`, a mensagem de erro será limitada a duas linhas\n   * e um tooltip será exibido ao passar o mouse sobre a mensagem para mostrar o conteúdo completo.\n   *\n   * @default `false`\n   */\n  @Input('p-error-limit') errorLimit: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Deve ser informada uma função que será disparada quando houver alterações no ngModel. A função receberá como argumento o model modificado.\n   *\n   * > Pode-se optar pelo recebimento do objeto selecionado ao invés do model através da propriedade `p-emit-object-value`.\n   */\n  @Output('p-change') change: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado quando uma tecla é pressionada enquanto o foco está no componente.\n   * Retorna um objeto `KeyboardEvent` com informações sobre a tecla.\n   */\n  @Output('p-keydown') keydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Função para atualizar o ngModel do componente, necessário quando não for utilizado dentro da tag form.\n   *\n   * Na versão 12.2.0 do Angular a verificação `strictTemplates` vem true como default. Portanto, para utilizar\n   * two-way binding no componente deve se utilizar da seguinte forma:\n   *\n   * ```\n   * <po-combo ... [ngModel]=\"comboModel\" (ngModelChange)=\"comboModel = $event\"> </po-combo>\n   * ```\n   *\n   */\n  @Output('ngModelChange') ngModelChange: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Deve ser informada uma função que será disparada quando houver alterações no Search input. A função receberá como argumento o input modificado.\n   *\n   */\n  @Output('p-input-change') inputChange: EventEmitter<string> = new EventEmitter<string>();\n\n  /**\n   * @docsPrivate\n   *\n   * Determinar se o valor do compo deve retorna objeto do tipo {value: any, label: any}\n   */\n  @Input({ alias: 'p-control-value-with-label', transform: convertToBoolean }) controlValueWithLabel?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a direção preferida para exibição do `listbox` em relação ao campo (`top` ou `bottom`).\n   * Útil em casos onde o posicionamento automático não se comporta como esperado, como quando o componente está próximo\n   * ao final do formulário ou do container visível. Na maioria dos casos, essa direção será respeitada; no entanto,\n   * pode ser ajustada automaticamente conforme o espaço disponível na tela.\n   *\n   * @default `bottom`\n   */\n  @Input('p-listbox-control-position') listboxControlPosition: 'top' | 'bottom' = poMultiselectContainerPositionDefault;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as opções do componente de ajuda (po-helper) que será exibido ao lado do label quando a propriedade `p-label` for definida, ou, ao lado do componente na ausência da propriedade `p-label`.\n   * > Para mais informações acesse: https://po-ui.io/documentation/po-helper.\n   *\n   * > Ao configurar esta propriedade, o antigo ícone de ajuda adicional (`p-additional-help-tooltip` e `p-additional-help`) será ignorado.\n   */\n  poHelperComponent = input<PoHelperOptions | string>(undefined, { alias: 'p-helper' });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a quebra automática do texto da propriedade `p-label`. Quando `p-label-text-wrap` for verdadeiro, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * @default `false`\n   */\n  labelTextWrap = input<boolean>(false, { alias: 'p-label-text-wrap' });\n\n  cacheOptions: Array<any> = [];\n  defaultService: PoComboFilterService;\n  firstInWriteValue: boolean = true;\n  isFirstFilter: boolean = true;\n  isFiltering: boolean = false;\n  keyupSubscribe: any;\n  onModelChange: any;\n  previousSearchValue: string = '';\n  selectedOption: any;\n  selectedValue: any;\n  selectedView: any;\n  service: PoComboFilterService;\n  visibleOptions: Array<any> = [];\n  page: number = 1;\n  pageSize: number = 10;\n  displayAdditionalHelp: boolean = false;\n  dynamicLabel: string = 'label';\n  dynamicValue: string = 'value';\n  shouldApplyFocus: boolean = false;\n\n  protected hasValidatorRequired = false;\n  protected cacheStaticOptions: Array<any> = [];\n  protected comboOptionsList: Array<any> = [];\n  protected onModelTouched: any = null;\n\n  private _changeOnEnter?: boolean = false;\n  private _debounceTime?: number = 400;\n  private _disabled?: boolean = false;\n  private _disabledInitFilter?: boolean = false;\n  private _fieldLabel?: string = 'label';\n  private _fieldValue?: string = 'value';\n  private _filterMinlength?: number = 0;\n  private _filterMode?: PoComboFilterMode = PoComboFilterMode.startsWith;\n  private _filterParams?: any;\n  private _literals?: PoComboLiterals;\n  private _loading: boolean = false;\n  private _options: Array<PoComboOption | PoComboOptionGroup | any> = [];\n  private _placeholder: string = '';\n  private _required?: boolean = false;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n  private _sort?: boolean = false;\n  private readonly language: string;\n  private _infiniteScrollDistance?: number = 100;\n  private _infiniteScroll?: boolean = false;\n  private _removeInitialFilter: boolean = false;\n  private isRemoveInitialFilterSetByInput: boolean = false;\n\n  // utilizado para fazer o controle de atualizar o model.\n  // não deve forçar a atualização se o gatilho for o writeValue para não deixar o campo dirty.\n  private fromWriteValue: boolean = false;\n\n  private validatorChange: any;\n\n  /** Mensagem apresentada enquanto o campo estiver vazio. */\n  @Input('p-placeholder') set placeholder(value: string) {\n    this._placeholder = value || this.literals.chooseOption;\n  }\n\n  get placeholder() {\n    return this._placeholder;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Esta propriedade define em quanto tempo (em milissegundos), aguarda para acionar o evento de filtro após cada pressionamento de tecla.\n   * Será utilizada apenas quando houver serviço (`p-filter-service`).\n   *\n   * @default `400`\n   */\n  @Input('p-debounce-time') set debounceTime(value: number) {\n    const parsedValue = parseInt(<any>value, 10);\n\n    this._debounceTime = !isNaN(parsedValue) && parsedValue > 0 ? parsedValue : PO_COMBO_DEBOUNCE_TIME_DEFAULT;\n  }\n\n  get debounceTime(): number {\n    return this._debounceTime;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Desabilita o filtro inicial no serviço, que é executado no primeiro clique no campo.\n   *\n   * @default `false`\n   *\n   */\n  @Input('p-disabled-init-filter') set disabledInitFilter(value: boolean) {\n    this._disabledInitFilter = convertToBoolean(value);\n  }\n\n  get disabledInitFilter(): boolean {\n    return this._disabledInitFilter;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Deve ser informado o nome da propriedade do objeto que será utilizado para a conversão dos itens apresentados na lista do componente\n   * (`p-options`), esta propriedade será responsável pelo valor de cada item da lista.\n   *\n   * Necessário quando informar o serviço como URL e o mesmo não estiver retornando uma lista de objetos no padrão da interface\n   * PoComboOption.\n   *\n   * @default `value`\n   */\n  @Input('p-field-value') set fieldValue(value: string) {\n    if (!this.service && !this.filterService) {\n      this.dynamicValue = value;\n    }\n\n    this._fieldValue = value || PO_COMBO_FIELD_VALUE_DEFAULT;\n\n    if (isTypeof(this.filterService, 'string') && this.service) {\n      this.service.fieldValue = this._fieldValue;\n    }\n  }\n\n  get fieldValue() {\n    return this._fieldValue;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Deve ser informado o nome da propriedade do objeto que será utilizado para a conversão dos itens apresentados na lista do componente\n   * (`p-options`), esta propriedade será responsável pelo texto de apresentação de cada item da lista.\n   *\n   * Necessário quando informar o serviço como URL e o mesmo não estiver retornando uma lista de objetos no padrão da interface\n   * PoComboOption.\n   *\n   * @default `label`\n   */\n  @Input('p-field-label') set fieldLabel(value: string) {\n    if (!this.service && !this.filterService) {\n      this.dynamicLabel = value;\n    }\n\n    this._fieldLabel = value || PO_COMBO_FIELD_LABEL_DEFAULT;\n\n    if (isTypeof(this.filterService, 'string') && this.service) {\n      this.service.fieldLabel = this._fieldLabel;\n    }\n  }\n\n  get fieldLabel() {\n    return this._fieldLabel;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Valor mínimo de caracteres para realizar o filtro no serviço.\n   *\n   * @default `0`\n   */\n  @Input('p-filter-minlength') set filterMinlength(value: number) {\n    const parseValue = typeof value === 'string' ? parseInt(value, 10) : value;\n\n    this._filterMinlength = Number.isInteger(parseValue) ? parseValue : 0;\n  }\n\n  get filterMinlength() {\n    return this._filterMinlength;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define que o campo será obrigatório.\n   *\n   * @default `false`\n   */\n  @Input('p-required') set required(required: boolean) {\n    this._required = convertToBoolean(required);\n\n    this.validateModel(this.selectedValue);\n  }\n\n  get required() {\n    return this._required;\n  }\n\n  /**\n   * Define se a indicação de campo obrigatório será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - Não possuir `p-help` e/ou `p-label`.\n   */\n  @Input('p-show-required') showRequired: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura do input como 32px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura do input como 44px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Indica que o evento `p-change` só será disparado ao clicar ou pressionar a tecla \"Enter\" sobre uma opção selecionada.\n   *\n   * @default `false`\n   */\n  @Input('p-change-on-enter') set changeOnEnter(changeOnEnter: boolean) {\n    this._changeOnEnter = convertToBoolean(changeOnEnter);\n  }\n\n  get changeOnEnter() {\n    return this._changeOnEnter;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Indica que o campo será desabilitado.\n   *\n   * @default `false`\n   */\n  @Input('p-disabled') set disabled(disabled: boolean) {\n    this._disabled = convertToBoolean(disabled);\n\n    this.validateModel(this.selectedValue);\n  }\n\n  get disabled() {\n    return this._disabled;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de carregamento no lado direito do campo para sinalizar que uma operação está em andamento.\n   *\n   * @default `false`\n   */\n  @HostBinding('attr.p-loading')\n  @Input('p-loading')\n  set loading(value: boolean) {\n    this._loading = convertToBoolean(value);\n    this.changeDetector?.markForCheck();\n  }\n\n  get loading(): boolean {\n    return this._loading;\n  }\n\n  get isDisabled(): boolean {\n    return this._disabled || this._loading;\n  }\n\n  /** Indica que a lista definida na propriedade p-options será ordenada pela descrição. */\n  @Input('p-sort') set sort(sort: boolean) {\n    this._sort = convertToBoolean(sort);\n    this.comboListDefinitions();\n  }\n\n  get sort() {\n    return this._sort;\n  }\n\n  /**\n   * Nesta propriedade define a lista de opções do `po-combo`.\n   *\n   * > A lista pode ser definida utilizando um array com o valor representando o `value` e o `label` das seguintes formas:\n   *\n   * ```\n   * <po-combo name=\"combo\" p-label=\"PO Combo\" [p-options]=\"[{value: 1, label: 'One'}, {value: 2, label: 'two'}]\"> </po-combo>\n   * ```\n   *\n   * ```\n   * <po-combo name=\"combo\" p-label=\"PO Combo\" [p-options]=\"[{name: 'Roger', age: 28}, {name: 'Anne', age: 35}]\" p-field-label=\"name\" p-field-value=\"age\"> </po-combo>\n   * ```\n   *\n   * - Aconselha-se utilizar valores distintos no `label` e `value` dos itens.\n   */\n  @Input('p-options') set options(options: Array<PoComboOption | PoComboOptionGroup | any>) {\n    this._options = Array.isArray(options) ? options : [];\n\n    this.comboListDefinitions();\n  }\n\n  get options(): Array<PoComboOption | PoComboOptionGroup | any> {\n    return this._options;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o modo de pesquisa utilizado no filtro da lista de seleção: `startsWith`, `contains` ou `endsWith`.\n   *\n   * > Quando utilizar a propriedade `p-filter-service` esta propriedade será ignorada.\n   *\n   * @default `startsWith`\n   */\n  @Input('p-filter-mode') set filterMode(filterMode: PoComboFilterMode) {\n    this._filterMode = filterMode in PoComboFilterMode ? filterMode : PoComboFilterMode.startsWith;\n    switch (this._filterMode.toString()) {\n      case 'startsWith':\n        this._filterMode = PoComboFilterMode.startsWith;\n        break;\n      case 'contains':\n        this._filterMode = PoComboFilterMode.contains;\n        break;\n      case 'endsWith':\n        this._filterMode = PoComboFilterMode.endsWith;\n        break;\n    }\n  }\n\n  get filterMode(): PoComboFilterMode {\n    return this._filterMode;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Valor que será repassado como parâmetro para a URL ou aos métodos do serviço que implementam a interface *PoComboFilter*.\n   *\n   * > Caso a lista contenha agrupamentos, os mesmos só serão exibidos se houver no mínimo uma opção que corresponda à pesquisa.\n   */\n  @Input('p-filter-params') set filterParams(filterParams: any) {\n    this._filterParams = filterParams || filterParams === 0 || filterParams === false ? filterParams : undefined;\n  }\n\n  get filterParams() {\n    return this._filterParams;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com as literais usadas no `po-combo`.\n   *\n   * Para utilizar basta passar a literal que deseja customizar:\n   *\n   * ```\n   *  const customLiterals: PoComboLiterals = {\n   *    noData: 'Nenhum valor'\n   *  };\n   * ```\n   *\n   * E para carregar a literal customizada, basta apenas passar o objeto para o componente.\n   *\n   * ```\n   * <po-combo\n   *   [p-literals]=\"customLiterals\">\n   * </po-combo>\n   * ```\n   *\n   * > O objeto padrão de literais será traduzido de acordo com o idioma do\n   * [`PoI18nService`](/documentation/po-i18n) ou do browser.\n   */\n  @Input('p-literals') set literals(value: PoComboLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poComboLiteralsDefault[poLocaleDefault],\n        ...poComboLiteralsDefault[this.language],\n        ...value\n      };\n    } else {\n      this._literals = poComboLiteralsDefault[this.language];\n    }\n  }\n\n  get literals() {\n    return this._literals || poComboLiteralsDefault[this.language];\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se o componente irá guardar o valor do model para evitar requisições repetidas.\n   *\n   * > Caso o valor seja `false`, o componente fará uma nova requisição mesmo que o valor procurado seja o mesmo do model.\n   *\n   * @default `true`\n   */\n  @Input({ alias: 'p-cache', transform: convertToBoolean }) cache: boolean = true;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o `listbox` e/ou popover (`p-helper` e/ou `p-error-limit`) serão incluídos no body da\n   * página e não dentro do componente. Essa opção pode ser necessária em cenários com containers que possuem scroll ou\n   * overflow escondido,garantindo o posicionamento correto de ambos próximo ao elemento.\n   *\n   * > Quando utilizado com `p-helper`, leitores de tela como o NVDA podem não ler o conteúdo do popover.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendBox?: boolean = false;\n\n  constructor(\n    languageService: PoLanguageService,\n    protected changeDetector: ChangeDetectorRef\n  ) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  get isOptionGroupList(): boolean {\n    return this._options.length && this._options[0].hasOwnProperty('options');\n  }\n\n  ngOnInit() {\n    this.dynamicValue = this.checkIfService('value');\n    this.dynamicLabel = this.checkIfService('label');\n\n    this.updateComboList();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  onInitService() {\n    if (this.filterService) {\n      this.setService(this.filterService);\n      this.initInputObservable();\n    }\n  }\n\n  setService(service: PoComboFilter | string) {\n    if (service) {\n      if (isTypeof(service, 'object')) {\n        this.service = <PoComboFilterService>service;\n      } else {\n        this.service = this.defaultService;\n        this.service.configProperties(<string>service, this.fieldLabel, this.fieldValue);\n      }\n    }\n  }\n\n  compareMethod(search: string, option: PoComboOption | PoComboGroup, filterMode: PoComboFilterMode) {\n    switch (filterMode) {\n      case PoComboFilterMode.startsWith:\n        return this.startsWith(search, option);\n      case PoComboFilterMode.contains:\n        return this.contains(search, option);\n      case PoComboFilterMode.endsWith:\n        return this.endsWith(search, option);\n    }\n  }\n\n  startsWith(search: string, option: any) {\n    return option[this.dynamicLabel].toLowerCase().startsWith(search.toLowerCase());\n  }\n\n  contains(search: string, option: any) {\n    return option[this.dynamicLabel].toLowerCase().indexOf(search.toLowerCase()) > -1;\n  }\n\n  endsWith(search: string, option: any) {\n    return option[this.dynamicLabel].toLowerCase().endsWith(search.toLowerCase());\n  }\n\n  getOptionFromValue(value: any, options: any) {\n    return options ? options.find((option: any) => this.isEqual(option[this.dynamicValue], value)) : null;\n  }\n\n  getOptionFromLabel(label: any, options: any) {\n    if (options) {\n      return options.find(\n        (option: any) => option[this.dynamicLabel].toString().toLowerCase() === label.toString().toLowerCase()\n      );\n    } else {\n      return null;\n    }\n  }\n\n  updateSelectedValue(option: any, isUpdateModel: boolean = true) {\n    const optionLabel = (option && option[this.dynamicLabel]) || '';\n\n    this.updateInternalVariables(option);\n\n    // atualiza o valor do input quando for changeOnEnter apenas se for para atualizar o model.\n    if (this.changeOnEnter && isUpdateModel) {\n      this.setInputValue(optionLabel);\n    } else if (!this.changeOnEnter) {\n      this.setInputValue(optionLabel);\n    }\n\n    if (isUpdateModel) {\n      const optionValue = option?.[this.dynamicValue] !== undefined ? option[this.dynamicValue] : undefined;\n      this.updateModel(optionValue);\n    }\n  }\n\n  callModelChange(value: any) {\n    // Caso o componente estiver dentro de um form, terá acesso ao método onModelChange.\n    return this.onModelChange ? this.onModelChange(value) : this.ngModelChange.emit(value);\n  }\n\n  isEqual(value: any, inputValue: any): boolean {\n    if ((value || value === 0) && inputValue) {\n      return value.toString() === inputValue.toString();\n    }\n\n    if ((value === null && inputValue !== null) || (value === undefined && inputValue !== undefined)) {\n      value = `${value}`; // Transformando em string\n    }\n\n    return value === inputValue;\n  }\n\n  //Transforma o tamanho do input para o tamanho do ícone de loading correspondente\n  mapSizeToIcon(size: string): string {\n    return mapInputSizeToLoadingIcon(size);\n  }\n\n  searchForLabel(search: string, options: Array<any>, filterMode: PoComboFilterMode) {\n    if (search && options && options.length) {\n      const newOptions: Array<any> = [];\n      let addedOptionsGroupTitle: boolean = false;\n      let optionsGroupTitle: PoComboGroup;\n\n      options.forEach(option => {\n        if ('options' in option) {\n          addedOptionsGroupTitle = false;\n          return (optionsGroupTitle = option);\n        }\n\n        if (option[this.dynamicLabel] && (this.compareMethod(search, option, filterMode) || this.service)) {\n          if (this.isOptionGroupList && !addedOptionsGroupTitle) {\n            newOptions.push(optionsGroupTitle);\n            addedOptionsGroupTitle = true;\n          }\n\n          newOptions.push(option);\n        }\n      });\n\n      this.selectedView = newOptions[this.isOptionGroupList ? 1 : 0];\n      this.updateComboList(newOptions);\n    } else {\n      this.updateComboList();\n    }\n  }\n\n  updateComboList(options?: Array<any>) {\n    const copyOptions = options || [...this.comboOptionsList];\n\n    let newOptions;\n    if (this.removeInitialFilter) {\n      newOptions = copyOptions;\n    } else {\n      newOptions = !options && !this.infiniteScroll && this.selectedValue ? [{ ...this.selectedOption }] : copyOptions;\n    }\n\n    this.visibleOptions = newOptions;\n\n    if (!this.selectedView && this.visibleOptions.length) {\n      this.selectedView = copyOptions.find(option => option[this.dynamicValue] !== undefined);\n    }\n  }\n\n  getNextOption(value: any, options: Array<any>, reverse: boolean = false) {\n    const optionsList = reverse ? options.slice(0).reverse() : options.slice(0);\n    let optionFound = null;\n    let found = false;\n\n    for (const option of optionsList) {\n      if (option[this.dynamicValue] && !optionFound) {\n        optionFound = option;\n      }\n      if (option[this.dynamicValue] && found) {\n        return option;\n      }\n      if (this.isEqual(option[this.dynamicValue], value)) {\n        found = true;\n      }\n    }\n\n    return optionFound;\n  }\n\n  getIndexSelectedView() {\n    for (let i = 0; i < this.visibleOptions.length; i++) {\n      if (this.compareObjects(this.visibleOptions[i], this.selectedView)) {\n        return i;\n      }\n    }\n    return null;\n  }\n\n  compareObjects(obj1: any, obj2: any) {\n    return JSON.stringify(obj1) === JSON.stringify(obj2);\n  }\n\n  verifyValidOption() {\n    const inputValue = this.getInputValue();\n\n    const optionFound = this.getOptionFromLabel(inputValue, this.comboOptionsList);\n\n    if (!this.service) {\n      this.updateComboList([...this.cacheStaticOptions]);\n    }\n\n    if (optionFound && optionFound[this.dynamicValue] !== this.selectedValue) {\n      this.updateSelectedValue(optionFound);\n\n      this.previousSearchValue = optionFound[this.dynamicLabel];\n    } else if (this.selectedValue && this.selectedOption && this.selectedOption[this.dynamicLabel] !== inputValue) {\n      this.updateSelectedValueWithOldOption();\n\n      this.previousSearchValue = this.selectedOption[this.dynamicLabel];\n      return;\n    } else if (inputValue && !optionFound) {\n      const isInputValueDiffSelectedLabel = !!(\n        this.selectedOption && this.selectedOption[this.dynamicLabel] !== inputValue\n      );\n\n      this.updateSelectedValue(null, isInputValueDiffSelectedLabel || this.changeOnEnter);\n\n      this.previousSearchValue = '';\n      return;\n    }\n  }\n\n  // Recebe as alterações do model\n  writeValue(value: any) {\n    const originalValue = value;\n    value = this.getValueWrite(value);\n    this.fromWriteValue = true;\n\n    if (validValue(value) && !this.service && this.comboOptionsList && this.comboOptionsList.length) {\n      const option = this.getOptionFromValue(value, this.comboOptionsList);\n      this.updateSelectedValue(option);\n      this.normalizeModelIfNeeded(originalValue, option);\n      this.comboOptionsList = this.comboOptionsList.map((option: any) => {\n        if (this.isEqual(option[this.dynamicValue], value)) {\n          return { ...option, selected: true };\n        }\n        return option;\n      });\n      this.updateComboList();\n      if (!this.isRemoveInitialFilterSetByInput) {\n        this.removeInitialFilter = false;\n      }\n      return;\n    }\n\n    // Se houver serviço busca pelo model.\n    if (value && this.service) {\n      return this.getObjectByValue(value);\n    } else {\n      this.updateSelectedValue(null);\n      this.updateComboList();\n      this.updateHasNext();\n    }\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar os estados de habilitado via forms api\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n    this.changeDetector.markForCheck();\n  }\n\n  registerOnChange(fn: any): void {\n    this.onModelChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onModelTouched = fn;\n  }\n\n  registerOnValidatorChange(fn: () => void) {\n    this.validatorChange = fn;\n  }\n\n  validate(abstractControl: AbstractControl): { [key: string]: any } {\n    if (!this.hasValidatorRequired && this.fieldErrorMessage && abstractControl.hasValidator(Validators.required)) {\n      this.hasValidatorRequired = true;\n    }\n\n    let valueToValidate = abstractControl.value;\n\n    if (this.controlValueWithLabel && valueToValidate && typeof valueToValidate === 'object') {\n      valueToValidate = valueToValidate.value;\n    }\n\n    if (PoValidators.requiredFailed(this.required || this.hasValidatorRequired, this.disabled, valueToValidate)) {\n      this.changeDetector.markForCheck();\n      return { required: { valid: false } };\n    }\n\n    return {};\n  }\n\n  clear(value) {\n    this.callModelChange(value);\n    this.updateSelectedValue(null);\n    this.updateComboList();\n    this.initInputObservable();\n    this.updateHasNext();\n    if (this.service || this.filterService) {\n      this.keyupSubscribe.unsubscribe();\n    }\n  }\n\n  protected configAfterSetFilterService(service: PoComboFilter | string) {\n    if (service) {\n      this.comboOptionsList = [];\n      this.unsubscribeKeyupObservable();\n      this.onInitService();\n    } else {\n      this.service = undefined;\n      this.comboOptionsList = this.cacheStaticOptions;\n    }\n\n    this.visibleOptions = [];\n    this.isFirstFilter = true;\n  }\n\n  protected unsubscribeKeyupObservable() {\n    if (this.keyupSubscribe) {\n      this.keyupSubscribe.unsubscribe();\n    }\n  }\n\n  protected validateModel(model: any) {\n    if (this.validatorChange) {\n      this.validatorChange(model);\n    }\n  }\n\n  private comboListDefinitions() {\n    this.comboOptionsList = this.options.length > 0 ? this.listingComboOptions(this.options) : this.options;\n    this.cacheStaticOptions = this.comboOptionsList;\n\n    this.updateComboList();\n  }\n\n  private checkIfService(dynamicValue: string) {\n    if ((this.service || this.filterService) && dynamicValue === 'label') {\n      return PO_COMBO_FIELD_LABEL_DEFAULT;\n    }\n    if ((this.service || this.filterService) && dynamicValue === 'value') {\n      return PO_COMBO_FIELD_VALUE_DEFAULT;\n    }\n\n    if (!this.service && dynamicValue === 'label') {\n      return this.fieldLabel;\n    }\n\n    if (!this.service && dynamicValue === 'value') {\n      return this.fieldValue;\n    }\n  }\n\n  private compareOptions(dynamicLabel: string) {\n    return function (optionA: any, optionB: any) {\n      const labelA = optionA[dynamicLabel].toString().toLowerCase();\n      const labelB = optionB[dynamicLabel].toString().toLowerCase();\n\n      return labelA < labelB ? -1 : labelA > labelB ? 1 : 0;\n    };\n  }\n\n  private getValueUpdate(data: any, selectedOption: any) {\n    const { [this.dynamicValue]: value, [this.dynamicLabel]: label } = selectedOption || {};\n\n    if (this.controlValueWithLabel && value !== null && value !== undefined) {\n      return { value, label };\n    }\n    return data;\n  }\n\n  private getValueWrite(data: any) {\n    if (this.controlValueWithLabel && data?.value !== null && data?.value !== undefined) {\n      return data?.value;\n    }\n    return data;\n  }\n\n  private normalizeModelIfNeeded(originalValue: any, option: any): void {\n    if (!this.controlValueWithLabel) {\n      return;\n    }\n    const isPrimitive = typeof originalValue === 'number' || typeof originalValue === 'string';\n    if (!isPrimitive || !option) {\n      return;\n    }\n\n    const value = option[this.dynamicValue];\n    const label = option[this.dynamicLabel];\n\n    if (value === null) {\n      return;\n    }\n\n    this.callModelChange({ value, label });\n  }\n\n  private hasDuplicatedOption(options: Array<any>, currentOption: string, accumulatedGroupOptions?: Array<any>) {\n    if (accumulatedGroupOptions) {\n      return accumulatedGroupOptions.some(option => option[this.dynamicLabel] === currentOption);\n    } else {\n      return options.some(option => option[this.dynamicValue] === currentOption);\n    }\n  }\n\n  private listingComboOptions(comboOptions: Array<any>) {\n    const comboOptionsList = comboOptions.concat();\n    const verifiedComboOptionsList = this.verifyComboOptions(comboOptionsList);\n\n    this.sortOptions(verifiedComboOptionsList);\n\n    if (this.isOptionGroupList && verifiedComboOptionsList.length > 0) {\n      return this.verifyComboOptionsGroup(verifiedComboOptionsList);\n    }\n\n    return verifiedComboOptionsList;\n  }\n\n  private sortOptions(comboOptionsList: Array<any>) {\n    if (comboOptionsList.length > 0 && this.sort) {\n      return comboOptionsList.sort(this.compareOptions(this.dynamicLabel));\n    }\n  }\n\n  private validateValue(currentOption: any, verifyingOptionsGroup: boolean = false) {\n    const { options } = currentOption;\n\n    if (this.isOptionGroupList) {\n      return (\n        (validValue(currentOption[this.dynamicLabel]) && options && options.length > 0) ||\n        (verifyingOptionsGroup === true && validValue(currentOption[this.dynamicValue]))\n      );\n    }\n\n    return validValue(currentOption[this.dynamicValue]) && !options;\n  }\n\n  private verifyComboOptions(\n    comboOptions: Array<any>,\n    verifyingOptionsGroup: boolean = false,\n    accumulatedGroupOptions?: Array<any>\n  ) {\n    return comboOptions.reduce((accumulatedOptions, currentOption) => {\n      if (\n        !this.verifyIfHasLabel(currentOption) ||\n        this.hasDuplicatedOption(\n          accumulatedOptions,\n          currentOption[this.dynamicValue] || currentOption[this.dynamicLabel],\n          accumulatedGroupOptions\n        ) ||\n        !this.validateValue(currentOption, verifyingOptionsGroup)\n      ) {\n        return accumulatedOptions;\n      }\n\n      accumulatedOptions.push(currentOption);\n      return accumulatedOptions;\n    }, []);\n  }\n\n  private verifyComboOptionsGroup(comboOptionsList: Array<any>) {\n    return comboOptionsList.reduce((accumulatedGroupOptions, currentOption) => {\n      const { options } = currentOption;\n      const verifiedComboOptionsGroupList = this.verifyComboOptions(options, true, accumulatedGroupOptions);\n\n      if (verifiedComboOptionsGroupList.length > 0) {\n        this.sortOptions(verifiedComboOptionsGroupList);\n\n        accumulatedGroupOptions.push(\n          { label: currentOption[this.dynamicLabel], options: true },\n          ...verifiedComboOptionsGroupList\n        );\n      }\n\n      return accumulatedGroupOptions;\n    }, []);\n  }\n\n  private verifyIfHasLabel(currentOption: PoComboGroup = {}) {\n    const { options } = currentOption;\n\n    if (\n      (this.isOptionGroupList && options && !currentOption[this.dynamicLabel]) ||\n      (!currentOption[this.dynamicLabel] && !currentOption[this.dynamicValue]) ||\n      (!this.isOptionGroupList && options)\n    ) {\n      return false;\n    }\n\n    if (!currentOption[this.dynamicLabel]) {\n      currentOption[this.dynamicLabel] = currentOption[this.dynamicValue].toString();\n      return true;\n    }\n\n    return true;\n  }\n\n  private updateInternalVariables(option: any) {\n    if (option) {\n      this.selectedView = option;\n      this.selectedOption = option;\n    } else {\n      this.selectedView = undefined;\n      this.selectedOption = undefined;\n    }\n  }\n\n  private updateModel(value: any): void {\n    if (value !== this.selectedValue) {\n      if (!this.fromWriteValue) {\n        this.callModelChange(this.getValueUpdate(value, this.selectedOption));\n      }\n\n      this.change.emit(this.emitObjectValue ? this.selectedOption : value);\n    }\n\n    this.selectedValue = value;\n    this.fromWriteValue = false;\n  }\n\n  private updateSelectedValueWithOldOption() {\n    const oldOption = this.getOptionFromValue(this.selectedValue, this.comboOptionsList);\n\n    if (oldOption && oldOption[this.dynamicLabel]) {\n      return this.updateSelectedValue(oldOption);\n    }\n  }\n\n  private updateHasNext() {\n    if (this.service && this.infiniteScroll) {\n      this.defaultService.hasNext = true;\n    }\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n\n  abstract setInputValue(value: any): void;\n\n  abstract applyFilter(value: string): void;\n\n  abstract getObjectByValue(value: string): void;\n\n  abstract getInputValue(): string;\n\n  abstract initInputObservable(): void;\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { fromEvent, Observable } from 'rxjs';\nimport { debounceTime, map, tap } from 'rxjs/operators';\n\nimport { PoComboFilter } from './interfaces/po-combo-filter.interface';\nimport { PoComboOption } from './interfaces/po-combo-option.interface';\nimport { PoResponse } from './interfaces/po-response.interface';\nimport { validateObjectType } from '../../../utils/util';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Serviço padrão utilizado para filtrar os dados do componente po-combo.\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoComboFilterService implements PoComboFilter {\n  private readonly http = inject(HttpClient);\n\n  fieldLabel: string = 'label';\n  fieldValue: string = 'value';\n  hasNext: boolean = true;\n\n  readonly headers: HttpHeaders = new HttpHeaders({\n    'X-PO-No-Message': 'true'\n  });\n\n  private _url: string;\n  private messages = [];\n\n  get url(): string {\n    return this._url;\n  }\n\n  getFilteredData(param: any, filterParams?: any): Observable<Array<PoComboOption>> {\n    const params = this.prepareParams(param, filterParams);\n    return this.http.get(`${this.url}`, { responseType: 'json', params, headers: this.headers }).pipe(\n      tap(res => (this.hasNext = res['hasNext'])),\n      map((response: PoResponse) => this.parseToArrayComboOption(response.items))\n    );\n  }\n\n  getObjectByValue(value: string | number, filterParams?: any): Observable<PoComboOption> {\n    const filterParamsValidated = validateObjectType(filterParams);\n\n    return this.http\n      .get(`${this.url}/${value}`, { params: filterParamsValidated, headers: this.headers })\n      .pipe(map(item => this.parseToComboOption(item)));\n  }\n\n  configProperties(url: string, fieldLabel: string, fieldValue: string) {\n    this._url = url;\n    this.fieldLabel = fieldLabel;\n    this.fieldValue = fieldValue;\n  }\n\n  scrollListener(componentListner: HTMLElement): Observable<any> {\n    return fromEvent(componentListner, 'scroll').pipe(debounceTime(100));\n  }\n\n  private prepareParams(param: any, filterParams?: any) {\n    const { page, pageSize, value } = param;\n    const filterParamsValidated = validateObjectType(filterParams);\n\n    return page\n      ? { ...filterParamsValidated, page, pageSize, filter: value }\n      : { ...filterParamsValidated, filter: value };\n  }\n\n  private parseToArrayComboOption(items: Array<any>): Array<PoComboOption> {\n    if (items && items.length > 0) {\n      const parsedOptions = items.map(item => this.parseToComboOption(item));\n\n      this.displayMessages();\n\n      return parsedOptions;\n    }\n\n    return [];\n  }\n\n  private parseToComboOption(item: any): PoComboOption {\n    if (!item?.[this.fieldValue]) {\n      this.addMessage(item, this.fieldValue);\n\n      return { value: '' };\n    }\n\n    const label = item[this.fieldLabel];\n    const value = item[this.fieldValue];\n\n    return { label, value };\n  }\n\n  private addMessage(item, property: string) {\n    this.messages.push(`Cannot read property \"${property}\" of ${JSON.stringify(item)},\n      see [p-field-value] property at https://po-ui.io/documentation/po-combo`);\n  }\n\n  private displayMessages() {\n    if (this.messages.length) {\n      this.messages.forEach(message => console.error(message));\n\n      this.messages = [];\n    }\n  }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n/**\n * @usedBy PoComboComponent\n *\n * @description\n *\n * Esta diretiva permite personalizar o conteúdo dos itens exibidos na lista de opções do componente.\n *\n * > Quando utilizada em dispositivos *mobile* será exibido o componente nativo.\n *\n * Para personalizar o conteúdo de cada item da lista deve-se utilizar a diretiva `p-combo-option-template` com `ng-template`\n * dentro da *tag* `po-combo`.\n *\n * Para obter a referência do item atual utilize `let-option`, com isso você terá acesso aos valores e poderá personalizar sua exibição.\n *\n * Esta diretiva compõe-se de dois meios para uso, de forma explícita tal como em *syntax sugar*. Veja a seguir ambos, respectivamente:\n *\n * ```\n * ...\n * <po-combo\n *   name=\"combo\"\n *   [(ngModel)]=\"combo\"\n *   [p-options]=\"options\">\n *     <ng-template p-combo-option-template let-option>\n *       <option-template [option]=\"option\"></option-template>\n *     </ng-template>\n * </po-combo>\n * ...\n * ```\n *\n * ```\n * ...\n * <po-combo\n *   name=\"combo\"\n *   [(ngModel)]=\"combo\"\n *   [p-options]=\"options\">\n *     <div *p-combo-option-template=\"let option\">\n *       <option-template [option]=\"option\"></option-template>\n *     </div>\n * </po-combo>\n * ...\n *\n * ```\n * Para o caso de personalização de opções com agrupamentos, deve-se seguir a mesma orientação acima. Porém, cabe ao desenvolvedor\n * a responsabilidade de estilização dos elementos da lista, tais como título e links dos grupos. Abaixo há um exemplo de aplicação:\n *\n * ```\n * ...\n * <ng-template p-combo-option-template let-option>\n *   <ng-container *ngIf=\"option.options; then optionsGroupTitle; else optionsGroupList\"></ng-container>\n *   <ng-template #optionsGroupTitle>\n *     <p class=\"po-combo-item-title\" [innerHtml]=\"option.label\"></p>\n *   </ng-template>\n *   <ng-template #optionsGroupList>\n *     <div class=\"po-combo-item\">\n *       <div class=\"po-row\">\n *         <po-avatar class=\"po-md-1\" p-size=\"sm\"></po-avatar>\n *         <div class=\"po-md-11\" [innerHtml]=\"option.label\"></div>\n *       </div>\n *     </div>\n *   </ng-template>\n * </ng-template>\n * ...\n *\n * ```\n */\n@Directive({\n  selector: '[p-combo-option-template]',\n  standalone: false\n})\nexport class PoComboOptionTemplateDirective {\n  // Necessário manter templateRef para o funcionamento do row template.\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  forwardRef,\n  IterableDiffers,\n  OnChanges,\n  OnDestroy,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  inject\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { fromEvent, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, tap } from 'rxjs/operators';\n\nimport { PoControlPositionService } from '../../../services/po-control-position/po-control-position.service';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport { PoKeyCodeEnum } from './../../../enums/po-key-code.enum';\n\nimport { setHelperSettings, uuid } from '../../../utils/util';\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { PoListBoxComponent } from './../../po-listbox/po-listbox.component';\nimport { PoComboGroup } from './interfaces/po-combo-group.interface';\nimport { PoComboOption } from './interfaces/po-combo-option.interface';\nimport { PoComboBaseComponent } from './po-combo-base.component';\nimport { PoComboFilterService } from './po-combo-filter.service';\nimport { PoComboOptionTemplateDirective } from './po-combo-option-template/po-combo-option-template.directive';\nimport { PoHelperComponent } from '../../po-helper';\n\nconst poComboContainerOffset = 8;\n\n/**\n * @docsExtends PoComboBaseComponent\n *\n *\n * @example\n *\n * <example name=\"po-combo-basic\" title=\"PO Combo Basic\">\n *   <file name=\"sample-po-combo-basic/sample-po-combo-basic.component.html\"> </file>\n *   <file name=\"sample-po-combo-basic/sample-po-combo-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-combo-labs\" title=\"PO Combo Labs\">\n *   <file name=\"sample-po-combo-labs/sample-po-combo-labs.component.html\"> </file>\n *   <file name=\"sample-po-combo-labs/sample-po-combo-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-combo-scheduling\" title=\"PO Combo - Scheduling\">\n *   <file name=\"sample-po-combo-scheduling/sample-po-combo-scheduling.component.html\"> </file>\n *   <file name=\"sample-po-combo-scheduling/sample-po-combo-scheduling.component.ts\"> </file>\n *   <file name=\"sample-po-combo-scheduling/sample-po-combo-scheduling.component.css\"> </file>\n *   <file name=\"sample-po-combo-scheduling/sample-po-combo-scheduling.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-combo-transfer\" title=\"PO Combo - Banking Transfer\">\n *   <file name=\"sample-po-combo-transfer/sample-po-combo-transfer.component.html\"> </file>\n *   <file name=\"sample-po-combo-transfer/sample-po-combo-transfer.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-combo-heroes\" title=\"PO Combo - Heroes\">\n *   <file name=\"sample-po-combo-heroes/sample-po-combo-heroes.component.html\"> </file>\n *   <file name=\"sample-po-combo-heroes/sample-po-combo-heroes.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-combo-heroes-reactive-form\" title=\"PO Combo - Heroes Reactive Form\">\n *   <file name=\"sample-po-combo-heroes-reactive-form/sample-po-combo-heroes-reactive-form.component.html\"> </file>\n *   <file name=\"sample-po-combo-heroes-reactive-form/sample-po-combo-heroes-reactive-form.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-combo-infinity-scroll\" title=\"PO Combo - Inifity Scroll\">\n *   <file name=\"sample-po-combo-infinity-scroll/sample-po-combo-infinity-scroll.component.html\"> </file>\n *   <file name=\"sample-po-combo-infinity-scroll/sample-po-combo-infinity-scroll.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-combo-hotels\" title=\"PO Combo - Booking Hotel\">\n *   <file name=\"sample-po-combo-hotels/sample-po-combo-hotels.component.html\"> </file>\n *   <file name=\"sample-po-combo-hotels/sample-po-combo-hotels.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-combo',\n  templateUrl: './po-combo.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    PoComboFilterService,\n    PoControlPositionService,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoComboComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => PoComboComponent),\n      multi: true\n    }\n  ],\n  standalone: false\n})\nexport class PoComboComponent extends PoComboBaseComponent implements AfterViewInit, OnChanges, OnDestroy {\n  element = inject(ElementRef);\n  differs = inject(IterableDiffers);\n  defaultService = inject(PoComboFilterService);\n  renderer = inject(Renderer2);\n  private readonly controlPosition = inject(PoControlPositionService);\n\n  @ContentChild(PoComboOptionTemplateDirective, { static: true }) comboOptionTemplate: PoComboOptionTemplateDirective;\n  @ViewChild('outerContainer ', { read: ElementRef }) outerContainer: ElementRef;\n  @ViewChild('containerElement', { read: ElementRef }) containerElement: ElementRef;\n  @ViewChild('contentElement', { read: ElementRef }) contentElement: ElementRef;\n  @ViewChild('iconArrow', { read: ElementRef, static: true }) iconElement: ElementRef;\n  @ViewChild('inp', { read: ElementRef, static: true }) inputEl: ElementRef;\n  @ViewChild('poListbox') poListbox: PoListBoxComponent;\n  @ViewChild('helperEl', { read: PoHelperComponent, static: false }) helperEl?: PoHelperComponent;\n\n  comboIcon: string = 'ICON_ARROW_DOWN';\n  comboOpen: boolean = false;\n  differ: any;\n  id = `po-combo[${uuid()}]`;\n  isProcessingValueByTab: boolean = false;\n  scrollTop = 0;\n  shouldMarkLetters: boolean = true;\n  infiniteLoading: boolean = false;\n  containerWidth: number;\n\n  private _isServerSearching: boolean = false;\n  private lastKey;\n\n  private clickoutListener: () => void;\n  private eventResizeListener: () => void;\n\n  private filterSubscription: Subscription;\n  private getSubscription: Subscription;\n\n  private readonly subscriptionScrollEvent: Subscription;\n\n  constructor() {\n    const changeDetector = inject(ChangeDetectorRef);\n    const languageService = inject(PoLanguageService);\n\n    super(languageService, changeDetector);\n    const differs = this.differs;\n    this.changeDetector = changeDetector;\n\n    this.differ = differs.find([]).create(null);\n  }\n\n  set isServerSearching(value: boolean) {\n    if (value) {\n      this._isServerSearching = value;\n\n      this.changeDetector.detectChanges();\n\n      this.setContainerPosition();\n      this.initializeListeners();\n    } else {\n      this._isServerSearching = value;\n    }\n  }\n\n  get isServerSearching() {\n    return this._isServerSearching;\n  }\n\n  ngAfterViewInit() {\n    if (this.autoFocus) {\n      this.focus();\n    }\n\n    this.setContainerWidth();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.debounceTime) {\n      this.unsubscribeKeyupObservable();\n      this.initInputObservable();\n    }\n\n    if (changes.filterService) {\n      this.configAfterSetFilterService(this.filterService);\n    }\n\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n  }\n\n  ngOnDestroy() {\n    this.removeListeners();\n\n    if (this.filterSubscription) {\n      this.filterSubscription.unsubscribe();\n    }\n\n    if (this.getSubscription) {\n      this.getSubscription.unsubscribe();\n    }\n\n    if (this.infiniteScroll) {\n      this.subscriptionScrollEvent?.unsubscribe();\n    }\n  }\n\n  emitAdditionalHelp() {\n    if (this.label && this.isAdditionalHelpEventTriggered()) {\n      this.additionalHelp.emit();\n    }\n  }\n\n  /**\n   * Função que atribui foco ao componente.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoComboComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoComboComponent, { static: true }) combo: PoComboComponent;\n   *\n   * focusCombo() {\n   *   this.combo.focus();\n   * }\n   * ```\n   */\n  focus(): void {\n    if (!this.disabled) {\n      this.inputEl.nativeElement.focus();\n    }\n  }\n\n  getAdditionalHelpTooltip() {\n    return this.isAdditionalHelpEventTriggered() ? null : this.additionalHelpTooltip;\n  }\n\n  onBlur(event: any) {\n    this.onModelTouched?.();\n\n    if (event.type === 'blur') {\n      this.blur.emit();\n    }\n  }\n\n  onKeyDown(event?: any) {\n    const key = event?.keyCode;\n    const inputValue = event?.target?.value;\n    const isFieldFocused = document.activeElement === this.inputEl.nativeElement;\n\n    if (event.shiftKey && key === PoKeyCodeEnum.tab) {\n      this.controlComboVisibility(false);\n      return;\n    }\n\n    // busca um registro quando acionar o tab\n    if (this.service && key === PoKeyCodeEnum.tab && inputValue && !this.disabledTabFilter) {\n      this.controlComboVisibility(false);\n      return this.getObjectByValue(inputValue);\n    }\n\n    if (key === PoKeyCodeEnum.arrowDown) {\n      event.preventDefault();\n      if (this.visibleOptions.length) {\n        this.focusItem();\n      }\n\n      if (this.comboOpen) {\n        this.controlComboVisibility(true);\n      } else {\n        this.toggleComboVisibility();\n      }\n\n      this.isFiltering = this.changeOnEnter ? this.isFiltering : false;\n    }\n\n    if (key === PoKeyCodeEnum.enter && this.selectedView && this.comboOpen) {\n      const isUpdateModel = this.selectedView.value !== this.selectedValue || inputValue !== this.selectedView.label;\n\n      this.controlComboVisibility(false);\n\n      this.updateSelectedValue(this.selectedView, isUpdateModel);\n      this.isFiltering = false;\n\n      if (!this.service) {\n        this.updateComboList([...this.cacheStaticOptions]);\n      }\n      return;\n    }\n\n    if (key === PoKeyCodeEnum.enter) {\n      event.preventDefault();\n      this.toggleComboVisibility();\n    }\n\n    if (key === PoKeyCodeEnum.esc) {\n      if (key === this.lastKey) {\n        this.lastKey = '';\n        if (this.selectedValue) {\n          this.clearAndFocus();\n        }\n        return;\n      } else {\n        this.onCloseCombo();\n      }\n    }\n\n    if (key === PoKeyCodeEnum.tab && this.shouldHandleTab(event) && !this.isCleanVisible()) {\n      event.preventDefault();\n      this.focusItem();\n    }\n\n    this.lastKey = event.keyCode;\n\n    if (isFieldFocused) {\n      this.keydown.emit(event);\n    }\n  }\n\n  onKeyUp(event?: any) {\n    const key = event.keyCode || event.which;\n    const inputValue = event.target.value;\n\n    const isValidKey =\n      key !== PoKeyCodeEnum.arrowUp &&\n      key !== PoKeyCodeEnum.arrowDown &&\n      key !== PoKeyCodeEnum.enter &&\n      key !== PoKeyCodeEnum.esc &&\n      key !== PoKeyCodeEnum.tab;\n\n    if (isValidKey) {\n      if (inputValue) {\n        if (!this.service && this.previousSearchValue !== inputValue) {\n          this.shouldMarkLetters = true;\n          this.isFiltering = true;\n          this.searchForLabel(inputValue, this.comboOptionsList, this.filterMode);\n          this.inputChange.emit(inputValue);\n        }\n      } else {\n        // quando apagar rapido o campo e conter serviço, valor, não disparava o keyup observable\n        // necessario este tratamento para retornar a lista 'default'.\n        const useDefaultOptionsService =\n          this.service && this.selectedValue && this.selectedOption.label === this.previousSearchValue;\n\n        this.updateSelectedValue(null);\n\n        if (!this.service) {\n          this.updateComboList();\n        } else if (useDefaultOptionsService) {\n          this.updateComboList([...this.cacheOptions]);\n        }\n\n        this.isFiltering = false;\n      }\n\n      // caso o valor pesquisado for diferente do anterior deve abrir o combo\n      if (this.previousSearchValue !== inputValue) {\n        this.changeDetector.detectChanges();\n\n        this.controlComboVisibility(true);\n      }\n    }\n\n    this.previousSearchValue = inputValue;\n  }\n\n  initInputObservable() {\n    if (this.service) {\n      const keyupObservable = fromEvent(this.inputEl.nativeElement, 'keyup').pipe(\n        filter((e: any) => this.isValidCharacterToSearch(e.keyCode)),\n        map((e: any) => e.currentTarget.value),\n        distinctUntilChanged(),\n        tap(() => {\n          this.shouldMarkLetters = false;\n        }),\n        debounceTime(this.debounceTime)\n      );\n\n      this.keyupSubscribe = keyupObservable.subscribe(value => {\n        if (value.length >= this.filterMinlength || !value) {\n          this.controlApplyFilter(value);\n        }\n      });\n    }\n  }\n\n  controlApplyFilter(value, isArrowDown?: boolean) {\n    if (\n      (!this.isProcessingValueByTab && (!this.selectedOption || value !== this.selectedOption[this.dynamicLabel])) ||\n      !this.cache\n    ) {\n      this.defaultService.hasNext = true;\n      this.page = this.setPage();\n      this.options = [];\n      this.applyFilter(value, true, isArrowDown);\n    }\n    this.isProcessingValueByTab = false;\n  }\n\n  applyFilter(value: string, reset: boolean = false, isArrowDown?: boolean) {\n    if (this.removeInitialFilter) {\n      this.defaultService.hasNext = true;\n    }\n\n    if (this.defaultService.hasNext) {\n      this.controlComboVisibility(false, reset);\n      this.isServerSearching = true;\n\n      const param = this.infiniteScroll\n        ? { property: this.fieldLabel, value, page: this.page, pageSize: this.pageSize }\n        : { property: this.fieldLabel, value };\n\n      this.filterSubscription = this.service.getFilteredData(param, this.filterParams).subscribe(\n        items => {\n          this.setOptionsByApplyFilter(value, items, reset);\n          if (isArrowDown) {\n            this.focusItem();\n          }\n        },\n        error => this.onErrorFilteredData()\n      );\n    }\n  }\n\n  setOptionsByApplyFilter(value, items, reset: boolean = false) {\n    this.shouldMarkLetters = true;\n    this.isServerSearching = false;\n    this.infiniteLoading = false;\n    this.options = this.prepareOptions(items);\n\n    this.searchForLabel(value, items, this.filterMode);\n\n    this.changeDetector.detectChanges();\n\n    this.controlComboVisibility(true, reset);\n\n    if (this.isFirstFilter) {\n      this.isFirstFilter = !this.isFirstFilter;\n      this.updateCacheOptions();\n    }\n  }\n\n  getErrorPattern() {\n    return this.fieldErrorMessage && this.hasInvalidClass() ? this.fieldErrorMessage : '';\n  }\n\n  hasInvalidClass() {\n    return (\n      this.element.nativeElement.classList.contains('ng-invalid') &&\n      this.element.nativeElement.classList.contains('ng-dirty')\n    );\n  }\n\n  getObjectByValue(value) {\n    if (this.selectedValue !== value && this.selectedOption?.[this.dynamicLabel] !== value) {\n      this.isProcessingValueByTab = true;\n\n      this.getSubscription = this.service.getObjectByValue(value, this.filterParams).subscribe(\n        item => this.updateOptionByFilteredValue(item),\n        error => this.onErrorGetObjectByValue()\n      );\n    }\n  }\n\n  updateOptionByFilteredValue(item) {\n    if (item) {\n      this.options = [item];\n      this.onOptionClick(item);\n    } else {\n      this.updateSelectedValue(null);\n    }\n\n    setTimeout(() => {\n      this.isProcessingValueByTab = false;\n    }, this.debounceTime);\n  }\n\n  setShouldApplyFocus(value: boolean) {\n    this.shouldApplyFocus = value;\n  }\n\n  toggleComboVisibility(isButton?: boolean): void {\n    if (this.disabled) {\n      return;\n    }\n\n    this.setShouldApplyFocus(true);\n\n    if (this.service && !this.disabledInitFilter) {\n      this.applyFilterInFirstClick();\n    }\n\n    this.controlComboVisibility(!this.comboOpen, false, isButton);\n  }\n\n  applyFilterInFirstClick() {\n    const isEmptyFirstFilter = this.isFirstFilter && !this.selectedValue;\n\n    if (this.removeInitialFilter || isEmptyFirstFilter) {\n      this.options = [];\n      const scrollingControl = this.setScrollingControl();\n      this.applyFilter('', scrollingControl);\n    }\n  }\n\n  controlComboVisibility(toOpen: boolean, reset: boolean = false, isButton?: boolean) {\n    toOpen ? this.open(reset, isButton) : this.close(reset);\n  }\n\n  onCloseCombo() {\n    this.controlComboVisibility(false);\n    this.inputEl.nativeElement.focus();\n  }\n\n  onOptionClick(option: PoComboOption | PoComboGroup, event?: any) {\n    const inputValue = this.getInputValue();\n    const isUpdateModel =\n      option[this.dynamicValue] !== this.selectedValue ||\n      !!(this.selectedView && inputValue !== this.selectedView[this.dynamicLabel]);\n\n    if (event) {\n      event.stopPropagation();\n    }\n\n    this.updateSelectedValue(option, isUpdateModel);\n    this.controlComboVisibility(false);\n    if (!this.service) {\n      this.updateComboList([...this.cacheStaticOptions]);\n    }\n\n    this.previousSearchValue = this.selectedView[this.dynamicLabel];\n\n    if (this.shouldApplyFocus) {\n      this.inputEl.nativeElement.focus();\n    }\n  }\n\n  calculateScrollTop(selectedItem, index) {\n    if (!selectedItem.length || index <= 1) {\n      return 0;\n    } else {\n      return selectedItem[0].offsetTop;\n    }\n  }\n\n  cleanListbox() {\n    this.updateSelectedValue(null);\n    this.options.map(option => (option.selected = false));\n  }\n\n  getInputValue() {\n    return this.inputEl.nativeElement.value;\n  }\n\n  setInputValue(value: string): void {\n    this.inputEl.nativeElement.value = value;\n\n    if (value === null) {\n      this.cleanListbox();\n    }\n  }\n\n  /**\n   * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n   * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `p-keydown`.\n   *\n   * > Exibe ou oculta o conteúdo do componente `po-helper` quando o componente estiver com foco.\n   *\n   * ```\n   * // Exemplo com p-label e p-helper\n   * <po-combo\n   *  #combo\n   *  ...\n   *  p-label=\"Label do combo\"\n   *  [p-helper]=\"helperOptions\"\n   *  (p-keydown)=\"onKeyDown($event, combo)\"\n   * ></po-combo>\n   * ```\n   * ```\n   * ...\n   * onKeyDown(event: KeyboardEvent, inp: PoComboComponent): void {\n   *  if (event.code === 'F9') {\n   *    inp.showAdditionalHelp();\n   *  }\n   * }\n   * ```\n   */\n  showAdditionalHelp(): boolean {\n    this.displayAdditionalHelp = !this.displayAdditionalHelp;\n    const helper = this.poHelperComponent();\n    const isHelpEvt = this.isAdditionalHelpEventTriggered();\n    if (!this.label && (helper || this.additionalHelpTooltip || isHelpEvt)) {\n      if (isHelpEvt) {\n        this.additionalHelp.emit();\n      }\n      if (typeof helper !== 'string' && typeof helper?.eventOnClick === 'function') {\n        helper.eventOnClick();\n        return;\n      }\n      if (this.helperEl?.helperIsVisible()) {\n        this.helperEl?.closeHelperPopover();\n        return;\n      }\n      this.helperEl?.openHelperPopover();\n      return;\n    }\n    return this.displayAdditionalHelp;\n  }\n\n  wasClickedOnToggle(event: MouseEvent): void {\n    if (\n      this.comboOpen &&\n      !this.inputEl.nativeElement.contains(event.target) &&\n      !this.iconElement.nativeElement.contains(event.target) &&\n      (!this.contentElement || !this.contentElement.nativeElement.contains(event.target))\n    ) {\n      // Esconde Content do Combo quando for clicado fora\n      this.controlComboVisibility(false);\n\n      this.verifyValidOption();\n\n      this.selectedView = this.changeOnEnter && !this.selectedValue ? undefined : this.selectedView;\n    } else {\n      if (this.service && !this.getInputValue() && !this.isFirstFilter) {\n        const scrollingControl = this.setScrollingControl();\n        this.applyFilter('', scrollingControl);\n      }\n    }\n  }\n\n  isValidCharacterToSearch(keyCode) {\n    return (\n      keyCode !== 9 && // tab\n      keyCode !== 13 && // entet\n      keyCode !== 16 && // shift\n      keyCode !== 17 && // ctrl\n      keyCode !== 18 && // alt\n      keyCode !== 20 && // capslock\n      keyCode !== 27 && // esc\n      keyCode !== 37 && // seta\n      keyCode !== 38 && // seta\n      keyCode !== 39 && // seta\n      keyCode !== 40 && // seta\n      keyCode !== 93\n    ); // windows menu\n  }\n\n  searchOnEnterOrArrow(event, value: string) {\n    if (\n      (event.key === 'ArrowDown' || event.key === 'Enter') &&\n      this.service &&\n      !this.selectedView &&\n      value.length >= this.filterMinlength\n    ) {\n      this.controlApplyFilter(value, event.key === 'ArrowDown');\n    }\n  }\n\n  showMoreInfiniteScroll(): void {\n    if (this.defaultService.hasNext) {\n      this.infiniteLoading = true;\n    }\n    this.page++;\n    this.applyFilter('', true);\n  }\n\n  clearAndFocus() {\n    this.clear(null);\n    this.inputEl.nativeElement.focus();\n  }\n\n  updateCacheOptions(): void {\n    this.cacheOptions = this.comboOptionsList.map(item =>\n      item.value === this.selectedValue ? { ...item, selected: true } : item\n    );\n  }\n\n  isCleanVisible(): boolean {\n    return this.clean && !this.disabled && !!this.inputEl.nativeElement.value;\n  }\n\n  handleCleanKeyboardTab(event: KeyboardEvent) {\n    if (this.shouldHandleTab(event)) {\n      event.preventDefault();\n      this.focusItem();\n    }\n  }\n\n  onListboxKeyDown(event: any) {\n    const key = event?.keyCode;\n\n    if (key === PoKeyCodeEnum.tab && event.shiftKey) {\n      this.focusInput();\n      event.preventDefault();\n    }\n\n    if (key === PoKeyCodeEnum.esc) {\n      event.stopPropagation();\n    }\n  }\n\n  private adjustContainerPosition() {\n    this.controlPosition.adjustPosition(this.listboxControlPosition);\n  }\n\n  private close(reset: boolean) {\n    this.comboOpen = false;\n\n    if (!reset) {\n      if (!this.getInputValue()) {\n        this.page = this.setPage();\n        this.defaultService.hasNext = true;\n      }\n      if (this.infiniteScroll) {\n        this.options = this.setOptions();\n      }\n    }\n\n    this.changeDetector.detectChanges();\n\n    this.comboIcon = 'ICON_ARROW_DOWN';\n\n    this.removeListeners();\n\n    this.isFiltering = false;\n\n    this.renderer.removeClass(this.inputEl.nativeElement, 'po-combo-input-focus');\n  }\n\n  private initializeListeners() {\n    this.removeListeners();\n\n    this.clickoutListener = this.renderer.listen('document', 'click', (event: MouseEvent) => {\n      this.wasClickedOnToggle(event);\n    });\n\n    this.eventResizeListener = this.renderer.listen('window', 'resize', () => {\n      // timeout necessario pois a animação do po-menu impacta no ajuste da posição do container.\n      setTimeout(() => this.adjustContainerPosition(), 250);\n    });\n\n    window.addEventListener('scroll', this.onScroll, true);\n  }\n\n  private isAdditionalHelpEventTriggered(): boolean {\n    return (\n      this.additionalHelpEventTrigger === 'event' ||\n      (this.additionalHelpEventTrigger === undefined && this.additionalHelp.observed)\n    );\n  }\n\n  private onErrorGetObjectByValue() {\n    this.updateOptionByFilteredValue(null);\n  }\n\n  private readonly onScroll = (): void => {\n    this.adjustContainerPosition();\n  };\n\n  private onErrorFilteredData() {\n    this.isServerSearching = false;\n\n    this.updateComboList([]);\n\n    this.controlComboVisibility(true);\n  }\n\n  private open(reset: boolean, isButton?: boolean) {\n    this.comboOpen = true;\n    if (!reset && this.infiniteScroll) {\n      if (!this.getInputValue()) {\n        this.page = 1;\n      }\n      this.options = this.setOptions();\n    }\n\n    this.changeDetector.detectChanges();\n\n    this.comboIcon = 'ICON_ARROW_UP';\n\n    this.initializeListeners();\n\n    isButton\n      ? this.renderer.addClass(this.inputEl.nativeElement, 'po-combo-input-focus')\n      : this.inputEl.nativeElement.focus();\n\n    this.setContainerPosition();\n    if (this.comboOpen) {\n      this.setContainerWidth();\n    }\n  }\n\n  private removeListeners() {\n    if (this.clickoutListener) {\n      this.clickoutListener();\n    }\n\n    if (this.eventResizeListener) {\n      this.eventResizeListener();\n    }\n\n    window.removeEventListener('scroll', this.onScroll, true);\n  }\n\n  private setContainerPosition() {\n    this.controlPosition?.setElements(\n      this.containerElement?.nativeElement,\n      poComboContainerOffset,\n      this.inputEl,\n      ['top', 'bottom'],\n      true\n    );\n\n    this.adjustContainerPosition();\n  }\n\n  private setContainerWidth(): void {\n    if (this.outerContainer) {\n      this.containerWidth = this.outerContainer.nativeElement.offsetWidth;\n    }\n  }\n\n  private setOptions() {\n    return this.getInputValue() ? this.options : [];\n  }\n\n  private prepareOptions(items) {\n    return this.infiniteScroll ? [...this.options, ...items] : items;\n  }\n\n  private setPage() {\n    return this.infiniteScroll ? 1 : undefined;\n  }\n\n  private setScrollingControl() {\n    return this.infiniteScroll ? true : false;\n  }\n\n  private focusItem() {\n    this.poListbox?.listboxItemList?.nativeElement.focus();\n    setTimeout(() => {\n      let item: HTMLElement | null = null;\n      if (this.selectedValue) {\n        item = document.querySelector('.po-listbox-item[aria-selected=\"true\"]');\n      }\n      if (!item) {\n        const items = document.querySelectorAll('.po-listbox-item');\n        item = items.length > 0 ? (items[0] as HTMLElement) : null;\n      }\n      if (item) {\n        item.focus();\n      }\n    });\n  }\n\n  // Define o foco no elemento input do combobox.\n  private focusInput(event?: KeyboardEvent) {\n    event?.preventDefault();\n    this.inputEl.nativeElement.focus();\n  }\n\n  private shouldHandleTab(event: KeyboardEvent): boolean {\n    return this.comboOpen && this.appendBox && !event.shiftKey;\n  }\n\n  setHelper(label?: string, additionalHelpTooltip?: string) {\n    return setHelperSettings(\n      label,\n      additionalHelpTooltip,\n      this.poHelperComponent(),\n      this.size,\n      this.isAdditionalHelpEventTriggered() ? this.additionalHelp : undefined\n    );\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n@let needsHelper = !label && (poHelperComponent() || poHelper.hideAdditionalHelp);\n<div #outerContainer>\n  <po-field-container\n    [p-disabled]=\"isDisabled\"\n    [p-id]=\"id\"\n    [p-label]=\"label\"\n    [p-optional]=\"optional\"\n    [p-required]=\"required\"\n    [p-show-required]=\"showRequired\"\n    [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n    [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n    [p-size]=\"size\"\n    [p-text-wrap]=\"labelTextWrap()\"\n    [p-compact-label]=\"compactLabel()\"\n  >\n    <div\n      #searchContainer\n      cdkOverlayOrigin\n      #trigger=\"cdkOverlayOrigin\"\n      class=\"po-field-container-content po-combo-container-content\"\n    >\n      <div class=\"po-field-container-content-helper-wrapper\">\n        <div class=\"po-field-container-input\">\n          @if (icon) {\n            <div class=\"po-field-icon-container-left\">\n              <po-icon\n                class=\"po-field-icon po-icon-input\"\n                [class.po-field-icon-disabled]=\"isDisabled\"\n                [class.po-field-icon-aa]=\"size === 'small'\"\n                [p-icon]=\"icon\"\n              ></po-icon>\n            </div>\n          }\n\n          <input\n            #inp\n            class=\"po-combo-input\"\n            [ngClass]=\"\n              clean && inp.value\n                ? size === 'small'\n                  ? 'po-input-double-icon-right-aa'\n                  : 'po-input-double-icon-right'\n                : size === 'small'\n                  ? 'po-input-icon-right-aa'\n                  : 'po-input-icon-right'\n            \"\n            [class.po-input-icon-left]=\"icon\"\n            [class.po-input-icon-left-aa]=\"icon && size === 'small'\"\n            autocomplete=\"off\"\n            type=\"text\"\n            [attr.data-focused-element]=\"!isDisabled\"\n            [attr.data-inactive-component]=\"isDisabled\"\n            [attr.name]=\"name\"\n            [disabled]=\"isDisabled\"\n            [id]=\"id\"\n            [placeholder]=\"isDisabled ? '' : placeholder\"\n            [required]=\"required\"\n            [attr.data-append-in-body]=\"appendBox\"\n            [attr.p-size]=\"size\"\n            (click)=\"!isDisabled && toggleComboVisibility()\"\n            (keyup)=\"onKeyUp($event)\"\n            (blur)=\"onBlur($event)\"\n            (keyup)=\"searchOnEnterOrArrow($event, $event.target.value)\"\n            (keydown)=\"onKeyDown($event)\"\n          />\n\n          <div class=\"po-field-icon-container-right\">\n            @if (loading) {\n              <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n            } @else {\n              @if (!loading && isCleanVisible()) {\n                <po-clean\n                  tabindex=\"0\"\n                  role=\"button\"\n                  [attr.aria-label]=\"literals.clean\"\n                  class=\"po-combo-clean po-icon-input\"\n                  [class.po-combo-clean-aa]=\"size === 'small'\"\n                  [p-element-ref]=\"inputEl\"\n                  [p-size]=\"size\"\n                  (p-change-event)=\"clear($event)\"\n                  (click)=\"clear(null); $event.preventDefault()\"\n                  (keydown.enter)=\"clearAndFocus(); $event.preventDefault()\"\n                  (keydown.tab)=\"handleCleanKeyboardTab($event)\"\n                >\n                </po-clean>\n              }\n            }\n            <div\n              #iconArrow\n              class=\"po-combo-arrow po-field-icon\"\n              [class.po-field-icon-disabled]=\"isDisabled\"\n              [class.po-field-icon-disabled-aa]=\"isDisabled && size === 'small'\"\n              (click)=\"!isDisabled && toggleComboVisibility(true)\"\n            >\n              <po-icon\n                [p-icon]=\"comboOpen ? 'ICON_ARROW_UP po-icon-input' : 'ICON_ARROW_DOWN po-icon-input'\"\n                [class.po-field-icon]=\"!isDisabled\"\n                [class.po-field-icon-aa]=\"size === 'small'\"\n                [class.po-combo-default-border]=\"!isDisabled && inp.value\"\n                [class.po-combo-background-arrow-up]=\"!isDisabled && comboOpen\"\n              ></po-icon>\n            </div>\n          </div>\n        </div>\n        @if ((!this.label && poHelperComponent()) || (!this.label && poHelper.hideAdditionalHelp)) {\n          <po-helper\n            #helperEl\n            class=\"po-field-helper-button\"\n            [p-size]=\"size\"\n            [p-helper]=\"poHelper.helperSettings\"\n            [p-disabled]=\"isDisabled\"\n            [p-append-in-body]=\"appendBox\"\n          >\n          </po-helper>\n        }\n      </div>\n    </div>\n\n    @if (appendBox) {\n      <ng-template\n        cdkConnectedOverlay\n        [cdkConnectedOverlayOrigin]=\"trigger\"\n        [cdkConnectedOverlayOpen]=\"true\"\n        [cdkConnectedOverlayDisableClose]=\"true\"\n      >\n        <ng-container *ngTemplateOutlet=\"dropdownListbox\"></ng-container>\n      </ng-template>\n    } @else {\n      <ng-container *ngTemplateOutlet=\"dropdownListbox\"> </ng-container>\n    }\n\n    <po-field-container-bottom\n      [p-append-in-body]=\"appendBox\"\n      [p-help]=\"help\"\n      [p-disabled]=\"isDisabled\"\n      [p-error-pattern]=\"getErrorPattern()\"\n      [p-error-limit]=\"errorLimit\"\n      [p-size]=\"size\"\n    ></po-field-container-bottom>\n  </po-field-container>\n\n  <ng-template #dropdownListbox>\n    <div #containerElement class=\"po-combo-container\" [hidden]=\"!comboOpen && !isServerSearching\">\n      <po-listbox\n        #poListbox\n        #contentElement\n        p-type=\"option\"\n        [p-items]=\"visibleOptions\"\n        [p-field-value]=\"dynamicValue\"\n        [p-field-label]=\"dynamicLabel\"\n        [p-template]=\"comboOptionTemplate\"\n        [p-search-value]=\"getInputValue()\"\n        [p-infinite-loading]=\"infiniteLoading\"\n        [p-infinite-scroll]=\"infiniteScroll\"\n        [p-filtering]=\"isFiltering\"\n        [p-cache]=\"cache\"\n        [p-filter-mode]=\"filterMode\"\n        [p-visible]=\"comboOpen\"\n        [p-is-searching]=\"isServerSearching\"\n        [p-should-mark-letter]=\"shouldMarkLetters\"\n        [p-compare-cache]=\"compareObjects(cacheOptions, visibleOptions)\"\n        [p-combo-service]=\"service\"\n        [p-infinite-scroll-distance]=\"infiniteScrollDistance\"\n        [p-size]=\"size\"\n        [p-container-width]=\"containerWidth\"\n        (p-selectcombo-item)=\"onOptionClick($event, $event.event)\"\n        (p-update-infinite-scroll)=\"showMoreInfiniteScroll()\"\n        (p-close)=\"onCloseCombo()\"\n        (keydown)=\"onListboxKeyDown($event)\"\n      ></po-listbox>\n    </div>\n  </ng-template>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { PoFieldContainerModule } from '../po-field-container/po-field-container.module';\nimport { PoListBoxModule } from '../../po-listbox/po-listbox.module';\nimport { PoHelperModule } from '../../po-helper';\nimport { PoIconModule } from '../../po-icon/po-icon.module';\nimport { PoCleanModule } from '../po-clean/po-clean.module';\nimport { PoLoadingModule } from '../../po-loading/po-loading.module';\n\nimport { PoComboComponent } from './po-combo.component';\nimport { PoComboOptionTemplateDirective } from './po-combo-option-template/po-combo-option-template.directive';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    OverlayModule,\n    PoFieldContainerModule,\n    PoListBoxModule,\n    PoHelperModule,\n    PoIconModule,\n    PoCleanModule,\n    PoLoadingModule\n  ],\n  declarations: [PoComboComponent, PoComboOptionTemplateDirective],\n  exports: [PoComboComponent, PoComboOptionTemplateDirective]\n})\nexport class PoComboModule {}\n","/**\n * @usedBy PoCalendarComponent\n *\n * @description\n *\n * Define os modos de exibição do `po-calendar`.\n */\nexport enum PoCalendarMode {\n  /** Modo de seleção de intervalo (data inicial e final). */\n  Range = 'range'\n}\n","import { Injectable } from '@angular/core';\n\nimport { sortValues } from '../../utils/util';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Serviço responsável por gerenciar o tratamento dos formatos de data e hora.\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoDateService {\n  private readonly dateRegex = new RegExp(\n    '^(?:[0-9])\\\\d{1}(?:[0-9])\\\\d{1}-' + '(?:0[1-9]|1[0-2])-' + '(?:0[1-9]|[12]\\\\d|3[01])$'\n  );\n\n  private readonly isoRegex = new RegExp(\n    '^(?:[0-9])\\\\d{1}(?:[0-9])\\\\d{1}-' +\n      '(?:0[1-9]|1[0-2])-' +\n      '(?:0[1-9]|[12]\\\\d|3[01])' +\n      'T(?:[01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d(?:Z|-0[1-9]|-1\\\\d|-2[0-3]|' +\n      '-00:?(?:0[1-9]|[0-5]\\\\d)|\\\\+[01]\\\\d|\\\\+2[0-3])' +\n      '(?:|:?[0-5]\\\\d)$'\n  );\n\n  /**\n   * Método responsável por converter datas do formato `yyyy-mm-ddThh:mm:ss+|-hh:mm` para o formato `Date`.\n   *\n   * @param dateString Data no formato `yyyy-mm-ddThh:mm:ss+|-hh:mm`.\n   * @param minDate Definir `true` caso seja `minDate`.\n   * @param maxDate Definir `true` caso seja `maxDate`.\n   */\n  convertIsoToDate(dateString: string, minDate?: boolean, maxDate?: boolean): Date {\n    if (dateString) {\n      const { year, month, day } = this.getDateFromIso(dateString);\n\n      if (minDate) {\n        const date = new Date(year, month - 1, day, 0, 0, 0);\n        this.setYearFrom0To100(date, year);\n        return date;\n      } else if (maxDate) {\n        const date = new Date(year, month - 1, day, 23, 59, 59);\n        this.setYearFrom0To100(date, year);\n        return date;\n      } else {\n        const miliseconds = Date.parse(dateString);\n        const timezone = new Date().getTimezoneOffset() * 60000;\n        return new Date(miliseconds + timezone);\n      }\n    }\n  }\n\n  /**\n   * Método responsável por converter data do formato `Date` para o formato `yyyy-mm-dd`.\n   *\n   * @param date Data no formato `Date`.\n   */\n  convertDateToISO(date: Date) {\n    if (date) {\n      const fullYear = date.getFullYear();\n      const getMonth = date.getMonth() + 1;\n      const day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();\n      const month = getMonth < 10 ? '0' + getMonth : getMonth;\n      const year = this.formatYear(fullYear);\n      return year + '-' + month + '-' + day;\n    } else {\n      return null;\n    }\n  }\n\n  /**\n   * Método responsável por adicionar zeros a esquerda do anos em formato string.\n   *\n   * @param year Ano a ser validado.\n   */\n  formatYear(year: number) {\n    if (year > 999) {\n      return year.toString();\n    }\n\n    if (year > 99 && year < 1000) {\n      return `0${year}`;\n    }\n\n    if (year > 9 && year < 100) {\n      return `00${year}`;\n    }\n\n    if (year >= 0 && year < 10) {\n      return `000${year}`;\n    }\n  }\n\n  /**\n   * Método responsável por retornar o dia, mês e ano separados em formato de objeto.\n   *\n   * @param isoDate Ano em formato string.\n   */\n  getDateFromIso(isoDate: string): { year: number; month: number; day: number } {\n    const day = parseInt(isoDate.substring(8, 10), 10);\n    const month = parseInt(isoDate.substring(5, 7), 10);\n    const year = parseInt(isoDate.substring(0, 4), 10);\n\n    return { year, month, day };\n  }\n\n  /**\n   * Método responsável por retornar a data com a hora definida para `00:00:00` caso `isMinDate` for igual a `true` ou `23:59:59`\n   * caso `isMindate` seja igual a `false` .\n   *\n   * @param date Data no formato `Date` ou `yyyy-mm-ddThh:mm:ss+|-hh:mm`.\n   * @param isMinDate Caso `true` aplica `00:00:00`, caso `false` aplica `23:59:59` a hora da data informada.\n   */\n  getDateForDateRange(date: any, isMinDate: boolean) {\n    const lastHour = isMinDate ? [0, 0, 0] : [23, 59, 59];\n    if (date instanceof Date) {\n      const { year, month, day } = this.splitDate(date);\n      const validDate = new Date(year, month, day, ...lastHour);\n      this.setYearFrom0To100(validDate, year);\n      return validDate;\n    } else if (this.isValidIso(date)) {\n      return this.convertIsoToDate(date, isMinDate, !isMinDate);\n    }\n  }\n\n  /**\n   * Retorna `true` caso o período seja válido, para isso a primeira data deve ser maior que a segunda data.\n   *\n   * @param dateA primeira data\n   * @param dateB segunda data\n   */\n  isDateRangeValid(dateA: string = '', dateB: string = ''): boolean {\n    const dateASplitted = dateA.split('-').map(item => parseInt(item, 10));\n    const dateBSplitted = dateB.split('-').map(item => parseInt(item, 10));\n\n    for (let index = 0; index <= dateASplitted.length; index++) {\n      if (dateASplitted[index] > dateBSplitted[index]) {\n        return true;\n      } else if (dateASplitted[index] < dateBSplitted[index]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  /**\n   * Método responsável por validar se uma data está no formato `yyyy-mm-ddThh:mm:ss+|-hh:mm` ou `yyyy-mm-dd`.\n   *\n   * @param stringDate Data.\n   */\n  isValidIso(stringDate: string) {\n    return this.dateRegex.test(stringDate) || this.isoRegex.test(stringDate);\n  }\n\n  /**\n   * Método responsável por corrigir a data caso a mesma esteja entre os anos 0 e 99.\n   *\n   * @param date Data.\n   * @param year .\n   */\n  setYearFrom0To100(date: Date, year: number) {\n    if (year >= 0 && year < 100) {\n      date.setFullYear(year);\n    }\n  }\n\n  /**\n   * Método responsável por retornar o dia , mês e ano de uma data informada.\n   *\n   * @param date Valor da data.\n   */\n  splitDate(date: Date) {\n    const year = date.getFullYear();\n    const month = date.getMonth();\n    const day = date.getDate();\n    return { year, month, day };\n  }\n\n  /**\n   * Método responsável por validar se uma data está entre a `minDate` e `maxDate`.\n   *\n   * @param date Data a ser validada.\n   * @param minDate Data inicial.\n   * @param maxDate Data final.\n   */\n  validateDateRange(date: Date, minDate: Date, maxDate: Date) {\n    if (minDate && maxDate) {\n      return date >= minDate && date <= maxDate;\n    } else if (minDate && !maxDate) {\n      return date >= minDate;\n    } else if (!minDate && maxDate) {\n      return date <= maxDate;\n    } else {\n      return true;\n    }\n  }\n\n  /**\n   * Método responsável por validar se a data foi informada nos padrões 'yyyy-mm-dd', 'yyyy-mm-ddThh:mm:ss+|-hh:mm' ou\n   * 'Date' padrão do javascript.\n   *\n   * @param date Data que será validada.\n   */\n  private validateDate(date: string | Date) {\n    const validDate = date instanceof Date ? this.convertDateToISO(date) : date;\n\n    return this.isValidIso(validDate) ? validDate : undefined;\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { PoDateService } from './po-date.service';\n\n/**\n * @description\n *\n * Módulo do serviço `po-date`.\n */\n@NgModule({\n  providers: [PoDateService],\n  bootstrap: []\n})\nexport class PoDateTimeModule {}\n","import { EventEmitter, Input, Output, Directive, TemplateRef, HostBinding, HostListener } from '@angular/core';\n\nimport { PoDateService } from '../../services/po-date';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { poLocales } from '../../services/po-language/po-language.constant';\n\nimport { PoCalendarMode } from './po-calendar-mode.enum';\nimport { PoCalendarRangePreset } from './interfaces/po-calendar-range-preset.interface';\nimport { getDefaultSizeFn, validateSizeFn } from '../../utils/util';\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\n\n/**\n * @description\n *\n * O `po-calendar` é um componente para seleção de datas que permite a navegação entre meses por meio das setas direcionais\n * e dos seletores de mês e ano exibidos no cabeçalho.\n *\n * O componente é recomendado para casos de seleção de datas próximas ao tempo presente. Por padrão, apresenta os dados do\n * mês atual e apenas um mês por vez, podendo exibir uma data pré-estabelecida conforme o contexto.\n *\n * Este componente pode receber os seguintes formatos de data:\n *\n * | Formato                  | Exemplo                     |\n * |--------------------------|-----------------------------|\n * | `ISO 8601 (Data/Hora)`   | `2017-11-28T00:00:00-02:00` |\n * | `ISO 8601 (Data)`        | `2017-11-28`                |\n * | `JavaScript Date Object` | `new Date(2017, 10, 28)`    |\n * > O valor é tratado internamente como **yyyy-mm-dd**.\n *\n * **Importante:**\n * - Datas fora do intervalo (`p-min-date` / `p-max-date`) aparecem desabilitadas sem alterar o *model*.\n *\n * #### Boas práticas\n *\n * - Evite datas distantes: O uso do calendário não é recomendado para datas muito distantes (como data de nascimento), pois\n * exige excesso de cliques. Nesses casos, prefira um campo de texto para digitação.\n * - Impeça seleções ilógicas: Utilize as propriedades de limite para impedir que o usuário selecione períodos inválidos (ex:\n * data de retorno anterior à de partida).\n * - Sinalize a disponibilidade: Para datas que não podem ser selecionadas devido a um contexto específico, mantenha-as\n * inativas por meio de opacidade e desabilite a opção de clique.\n * - Contexto claro: Certifique-se de que o mês e o ano estejam sempre visíveis no cabeçalho para orientar a pessoa usuária\n * durante a navegação.\n *\n * #### Acessibilidade tratada no componente\n *\n * Algumas diretrizes de acessibilidade já são tratadas no componente, internamente, e não podem ser alteradas pelo\n * proprietário do conteúdo. São elas:\n *\n * - Navegação por teclado: O componente permite interação via tecla Tab entre os controles do cabeçalho e navegação no grid\n * de dias por meio das setas direcionais.\n * - Foco visual: A área de foco possui espessura de pelo menos 2 pixels CSS e não é sobreposta por outros elementos da tela,\n * garantindo visibilidade para usuários que utilizam teclado. [WCAG 2.4.12: Focus Appearance](https://www.w3.org/WAI/WCAG22/Understanding/focus-appearance-enhanced)\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                      | Descrição                                            | Valor Padrão                      |\n * |----------------------------------|------------------------------------------------------|-----------------------------------|\n * | **Default Values**               |                                                      |                                   |\n * | `--background`                   | Cor de fundo                                         | `var(--color-neutral-light-00)`   |\n * | `--border-color`                 | Cor da borda                                         | `var(--color-neutral-light-20)`   |\n * | `--border-radius`                | Raio da borda                                        | `var(--border-radius-md)`         |\n * | `--border-width`                 | Largura da borda                                     | `var(--border-width-sm)`          |\n * | `--shadow`                       | Contém o valor da sombra do elemento                 | `var(--shadow-md)`                |\n * | **Weekly cells**                 |                                                      |                                   |\n * | `--text-color-weekly`            | Cor da fonte utilizada nas células semanais          | `var(--color-neutral-dark-90)`    |\n * | `--font-family`                  | Fonte utilizada nas células semanais                 | `var(--font-family-text)`         |\n * | `--font-size`                    | Tamanho da fonte utilizada nas células semanais      | `var(--font-size-sm)`             |\n * | `--font-weight-weekly`           | Peso da fonte utilizada nas células semanais         | `var(--font-weight-bold)`         |\n * | **Days cells**                   |                                                      |                                   |\n * | `--font-weight-days`             | Peso da fonte utilizada nas células de dias          | `var(--font-weight-normal)`       |\n * | `--text-color`                   | Cor da fonte utilizada nas células de dias           | `var(--color-neutral-dark-90)`    |\n * | `--border-radius-days`           | Raio da borda                                        | `var(--border-radius-md)`         |\n * | `--border-width-days`            | Largura da borda                                     | `var(--border-width-sm)`          |\n * | `--day-cell-transition-duration` | Duração da transição                                 | `var(--duration-extra-fast)`      |\n * | `--day-cell-transition-property` | Atributo da transição                                | `all`                             |\n * | `--day-cell-transition-timing`   | Duração da transição com o tipo de transição         | `var(--timing-standart)`          |\n * | **Today**                        |                                                      |                                   |\n * | `--font-weight-today`            | Peso da fonte utilizada na célula de hoje            | `var(--font-weight-bold)`         |\n * | `--text-color-today`             | Cor da fonte utilizada na célula de hoje             | `var(--color-action-default)`     |\n * | **Focused**                      |                                                      |                                   |\n * | `--outline-color-focused`        | Cor do outline do estado de focus                    | `var(--color-action-focus)`       |\n * | **Hover**                        |                                                      |                                   |\n * | `--color-hover`                  | Cor de fundo das células ao passar o mouse           | `var(--color-neutral-light-00)`   |\n * | `--text-color-hover`             | Cor da fonte utilizada nas células ao passar o mouse | `var(--color-action-hover)`       |\n * | **Interval**                     |                                                      |                                   |\n * | `--color-interval`               | Cor de fundo das células de intervalo                | `var(--color-brand-01-lighter)`   |\n * | `--text-color-interval`          | Cor da fonte utilizada nas células de intervalo      | `var(--color-action-default)`     |\n * | **Next Month**                   |                                                      |                                   |\n * | `--text-color-next`              | Cor da fonte utilizada nas células do próximo mês    | `var(--color-action-default)`     |\n * | **Disabled**                     |                                                      |                                   |\n * | `--border-disabled`              | Cor da borda das células desabilitadas               | `var(--color-action-disabled)`    |\n * | `--text-color-disabled`          | Cor da fonte utilizada nas células desabilitadas     | `var(--color-action-disabled)`    |\n * | **Selected**                     |                                                      |                                   |\n * | `--color-selected`               | Cor de fundo das células selecionadas                | `var(--color-neutral-light-00)`   |\n * | `--text-color-selected`          | Cor da fonte utilizada nas células selecionadas      | `var(--color-action-default)`     |\n */\n\n@Directive()\nexport class PoCalendarBaseComponent {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao alterar o valor do model.\n   * Em modo padrão, retorna uma `string` no formato ISO 8601 (`yyyy-mm-dd`).\n   * Em modo *range*, retorna um objeto contendo as datas de início (`start`) e fim (`end`).\n   */\n  @Output('p-change') change = new EventEmitter<string | { start; end }>();\n\n  /**\n   * @description\n   *\n   * Evento disparado ao alterar o mês ou o ano no cabeçalho do calendário.\n   * Retorna um objeto contendo os valores numéricos:\n   * - `month`: Mês selecionado (variando de 1 a 12).\n   * - `year`: Ano selecionado.\n   */\n  @Output('p-change-month-year') changeMonthYear = new EventEmitter<any>();\n\n  // Evento disparado ao fechar o calendário, seja por seleção de data ou por clique fora do componente.\n  @Output('p-close') close = new EventEmitter<void>();\n\n  activateDate;\n  selectedPresetLabel: string | null = null;\n  value;\n\n  protected onTouched: any = null;\n  protected propagateChange: any = null;\n  protected today: Date = new Date();\n\n  private readonly shortLanguage: string;\n  private _locale: string;\n  private _maxDate: Date;\n  private _minDate: Date;\n  private _mode: PoCalendarMode;\n  private _size?: string;\n  private _initialSize?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Idioma do componente.\n   *\n   * > O locale padrão será recuperado com base no [`PoI18nService`](/documentation/po-i18n) ou *browser*.\n   */\n  @Input('p-locale') set locale(locale: string) {\n    this._locale = poLocales.includes(locale) ? locale : this.shortLanguage;\n  }\n  get locale() {\n    return this._locale;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a data máxima permitida para seleção. As datas posteriores ao limite definido permanecem visíveis, mas ficam\n   * desabilitadas para clique.\n   *\n   * Aceita os seguintes formatos:\n   *\n   * - **Data e hora combinados (E8601DZw): yyyy-mm-ddThh:mm:ss+|-hh:mm**\n   *   ```\n   *   this.date = '2017-11-28T00:00:00-02:00';\n   *   ```\n   *\n   * - **Data (E8601DAw.): yyyy-mm-dd**\n   *   ```\n   *   this.date = '2017-11-28';\n   *   ```\n   *\n   * - **JavaScript Date Object:**\n   *   ```\n   *   this.date = new Date(2017, 10, 28);\n   *   ```\n   */\n  @Input('p-max-date') set maxDate(maxDate: any) {\n    this._maxDate = this.poDate.getDateForDateRange(maxDate, false);\n  }\n  get maxDate() {\n    return this._maxDate;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a data mínima para seleção. As datas anteriores ao limite permanecem visíveis, mas desabilitadas para clique.\n   *\n   * Aceita os seguintes formatos:\n   *\n   * - **Data e hora combinados (E8601DZw): yyyy-mm-ddThh:mm:ss+|-hh:mm**\n   *   ```\n   *   this.date = '2017-11-28T00:00:00-02:00';\n   *   ```\n   *\n   * - **Data (E8601DAw.): yyyy-mm-dd**\n   *   ```\n   *   this.date = '2017-11-28';\n   *   ```\n   *\n   * - **JavaScript Date Object:**\n   *   ```\n   *   this.date = new Date(2017, 10, 28);\n   *   ```\n   */\n  @Input('p-min-date') set minDate(minDate: any) {\n    this._minDate = this.poDate.getDateForDateRange(minDate, true);\n  }\n  get minDate() {\n    return this._minDate;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o modo de exibição do calendário.\n   * Caso não seja informado, o componente operará no modo padrão de seleção única.\n   * Para permitir a seleção de um intervalo de datas, deve ser utilizado o valor `PoCalendarMode.Range`.\n   */\n  @Input('p-mode') set mode(value: PoCalendarMode) {\n    this._mode = value;\n\n    this.setActivateDate();\n  }\n\n  get mode() {\n    return this._mode;\n  }\n\n  get isRange() {\n    return this.mode === PoCalendarMode.Range;\n  }\n\n  // Propriedade que permite integrar o po-combo no componente de calendar. Implementa o template de header com `PoCombo`.\n  @Input('p-header-template') headerTemplate?: TemplateRef<any>;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a exibição dos presets padrão de intervalos de data no painel lateral do calendário em modo *range*.\n   *\n   * Aceita os seguintes valores:\n   * - `true`: exibe todos os presets padrão (Amanhã, Hoje, Ontem, Últimos 7 dias, Últimos 14 dias, Últimos 30 dias, Últimos 3 meses, Últimos 6 meses).\n   * - `false`: não exibe os presets padrão.\n   * - `Array<string>`: exibe apenas os presets padrão cujos labels estejam no array informado.\n   *   O preset \"today\" é obrigatório e será incluído automaticamente mesmo que não esteja no array.\n   *\n   * Caso `p-range-preset-options` também seja informado, os presets customizados serão exibidos junto aos presets padrão,\n   * ordenados automaticamente por temporalidade com base na data início (Futuro → Presente → Passado).\n   *\n   * @default `false`\n   */\n  @Input('p-range-presets')\n  set rangePresets(value: boolean | Array<string> | string) {\n    if (Array.isArray(value)) {\n      this._rangePresets = value;\n    } else if (value === '' || value === true || value === 'true') {\n      this._rangePresets = true;\n    } else {\n      this._rangePresets = false;\n    }\n  }\n\n  get rangePresets(): boolean | Array<string> {\n    return this._rangePresets;\n  }\n\n  private _rangePresets: boolean | Array<string> = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Lista de presets customizados de intervalos de data exibidos no painel lateral do calendário em modo *range*.\n   *\n   * Quando informado sem `p-range-presets`, exibe apenas os presets customizados.\n   * Quando informado junto com `p-range-presets` habilitado, os presets customizados serão exibidos junto aos presets padrão,\n   * ordenados automaticamente por temporalidade com base na data início (Futuro → Presente → Passado).\n   *\n   * Para utilizar presets customizados, informe um array de objetos que implementam a interface `PoCalendarRangePreset`.\n   */\n  @Input('p-range-preset-options') rangePresetOptions?: Array<PoCalendarRangePreset>;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a ordenação dos presets na lista.\n   *\n   * Valores aceitos:\n   * - `'asc'` (padrão): presets mais próximos de hoje aparecem primeiro.\n   * - `'desc'`: presets mais distantes de hoje aparecem primeiro.\n   *\n   * A ordenação é aplicada dentro de cada grupo de temporalidade com base na data início (Futuro → Presente → Passado).\n   *\n   * @default `asc`\n   */\n  @Input('p-range-presets-order') rangePresetsOrder: 'asc' | 'desc' = 'asc';\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  // Propriedade interna responsável por controlar a visibilidade do calendário\n  // no po-datepicker-range, especialmente quando presets estão configurados.\n  @Input('p-width-with-presets') widthWithPresets?: boolean;\n\n  constructor(\n    public poDate: PoDateService,\n    private readonly languageService: PoLanguageService\n  ) {\n    this.shortLanguage = languageService.getShortLanguage();\n    this._locale = this.languageService.getShortLanguage();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  protected setActivateDate(date?: Date | string) {\n    let newData;\n    if (typeof date !== 'string') {\n      const temporaryDate = new Date(date);\n      const year = temporaryDate.getFullYear();\n      const month = ('0' + (temporaryDate.getMonth() + 1)).slice(-2);\n      const day = ('0' + temporaryDate.getDate()).slice(-2);\n      const formattedDate = `${year}-${month}-${day}`;\n      newData = formattedDate + 'T00:00:00';\n    } else {\n      newData = date + 'T00:00:00';\n    }\n    const activateDate = date ? date : this.verifyActivateDate();\n\n    let checkedStart;\n    let checkedEnd;\n\n    if (this.isRange) {\n      if (new Date(newData).getDate() > 28) {\n        checkedStart = new Date(activateDate);\n        checkedEnd = new Date(checkedStart.getFullYear(), checkedStart.getMonth() + 1, 0, 23, 59, 59, 999);\n        checkedEnd.setMilliseconds(checkedEnd.getMilliseconds() + 1);\n      } else {\n        checkedStart =\n          typeof activateDate === 'string' ? this.poDate.convertIsoToDate(activateDate) : new Date(activateDate);\n        checkedEnd = new Date(new Date(checkedStart).setMonth(checkedStart.getMonth() + 1));\n      }\n\n      this.activateDate = { start: checkedStart, end: checkedEnd };\n    } else {\n      this.activateDate = new Date(activateDate);\n    }\n  }\n\n  private verifyActivateDate(): Date {\n    let today = this.today;\n    if (this.minDate && this.minDate > this.today) {\n      today = this.minDate;\n    } else if (this.maxDate && this.maxDate < this.today) {\n      today = this.maxDate;\n    }\n    return today;\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n}\n","import { PoCalendarRangePreset } from '../interfaces/po-calendar-range-preset.interface';\n\nfunction startOfDay(date: Date): Date {\n  const d = new Date(date);\n  d.setHours(0, 0, 0, 0);\n  return d;\n}\n\nfunction endOfDay(date: Date): Date {\n  const d = new Date(date);\n  d.setHours(23, 59, 59, 999);\n  return d;\n}\n\nexport const PO_CALENDAR_DEFAULT_RANGE_PRESETS: Array<PoCalendarRangePreset> = [\n  {\n    label: 'tomorrow',\n    dateRange: (today: Date) => {\n      const tomorrow = new Date(today);\n      tomorrow.setDate(tomorrow.getDate() + 1);\n      return {\n        start: startOfDay(tomorrow),\n        end: endOfDay(tomorrow)\n      };\n    }\n  },\n  {\n    label: 'today',\n    dateRange: (today: Date) => ({\n      start: startOfDay(today),\n      end: endOfDay(today)\n    })\n  },\n  {\n    label: 'yesterday',\n    dateRange: (today: Date) => {\n      const yesterday = new Date(today);\n      yesterday.setDate(yesterday.getDate() - 1);\n      return {\n        start: startOfDay(yesterday),\n        end: endOfDay(yesterday)\n      };\n    }\n  },\n  {\n    label: '7days',\n    dateRange: (today: Date) => {\n      const start = new Date(today);\n      start.setDate(start.getDate() - 6);\n      return {\n        start: startOfDay(start),\n        end: endOfDay(today)\n      };\n    }\n  },\n  {\n    label: '14days',\n    dateRange: (today: Date) => {\n      const start = new Date(today);\n      start.setDate(start.getDate() - 13);\n      return {\n        start: startOfDay(start),\n        end: endOfDay(today)\n      };\n    }\n  },\n  {\n    label: '30days',\n    dateRange: (today: Date) => {\n      const start = new Date(today);\n      start.setDate(start.getDate() - 29);\n      return {\n        start: startOfDay(start),\n        end: endOfDay(today)\n      };\n    }\n  },\n  {\n    label: '3months',\n    dateRange: (today: Date) => {\n      const start = new Date(today);\n      start.setMonth(start.getMonth() - 3);\n      return {\n        start: startOfDay(start),\n        end: endOfDay(today)\n      };\n    }\n  },\n  {\n    label: '6months',\n    dateRange: (today: Date) => {\n      const start = new Date(today);\n      start.setMonth(start.getMonth() - 6);\n      return {\n        start: startOfDay(start),\n        end: endOfDay(today)\n      };\n    }\n  }\n];\n","import { Injectable } from '@angular/core';\n\nimport { poLocales, poLocaleDefault } from '../../../services/po-language/po-language.constant';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoCalendarLangService {\n  private language = poLocaleDefault;\n\n  private readonly months = [\n    {\n      pt: 'Janeiro',\n      en: 'January',\n      es: 'Enero',\n      ru: 'Январь'\n    },\n    {\n      pt: 'Fevereiro',\n      en: 'February',\n      es: 'Febrero',\n      ru: 'Февраль'\n    },\n    {\n      pt: 'Março',\n      en: 'March',\n      es: 'Marzo',\n      ru: 'Март'\n    },\n    {\n      pt: 'Abril',\n      en: 'April',\n      es: 'Abril',\n      ru: 'Апрель'\n    },\n    {\n      pt: 'Maio',\n      en: 'May',\n      es: 'Mayo',\n      ru: 'Май'\n    },\n    {\n      pt: 'Junho',\n      en: 'June',\n      es: 'Junio',\n      ru: 'Июнь'\n    },\n    {\n      pt: 'Julho',\n      en: 'July',\n      es: 'Julio',\n      ru: 'Июль'\n    },\n    {\n      pt: 'Agosto',\n      en: 'August',\n      es: 'Agosto',\n      ru: 'Август'\n    },\n    {\n      pt: 'Setembro',\n      en: 'September',\n      es: 'Setiembre',\n      ru: 'Сентябрь'\n    },\n    {\n      pt: 'Outubro',\n      en: 'October',\n      es: 'Octubre',\n      ru: 'Октябрь'\n    },\n    {\n      pt: 'Novembro',\n      en: 'November',\n      es: 'Noviembre',\n      ru: 'Ноябрь'\n    },\n    {\n      pt: 'Dezembro',\n      en: 'December',\n      es: 'Diciembre',\n      ru: 'Декабрь'\n    }\n  ];\n\n  private readonly shortWeekDays = [\n    {\n      pt: 'Dom',\n      en: 'Sun',\n      es: 'Dom',\n      ru: 'Вс'\n    },\n    {\n      pt: 'Seg',\n      en: 'Mon',\n      es: 'Lun',\n      ru: 'Пн'\n    },\n    {\n      pt: 'Ter',\n      en: 'Tue',\n      es: 'Mar',\n      ru: 'Вт'\n    },\n    {\n      pt: 'Qua',\n      en: 'Wed',\n      es: 'Mié',\n      ru: 'Ср'\n    },\n    {\n      pt: 'Qui',\n      en: 'Thu',\n      es: 'Jue',\n      ru: 'Чт'\n    },\n    {\n      pt: 'Sex',\n      en: 'Fri',\n      es: 'Vie',\n      ru: 'Пт'\n    },\n    {\n      pt: 'Sáb',\n      en: 'Sat',\n      es: 'Sáb',\n      ru: 'Сб'\n    }\n  ];\n\n  private readonly monthLabel = {\n    pt: 'Mês',\n    en: 'Month',\n    es: 'Mes',\n    ru: 'Месяц'\n  };\n\n  private readonly yearLabel = {\n    pt: 'Ano',\n    en: 'Year',\n    es: 'Año',\n    ru: 'Год'\n  };\n\n  private readonly todayLabel = {\n    pt: 'Hoje',\n    en: 'Today',\n    es: 'Hoy',\n    ru: 'Сегодня'\n  };\n\n  private readonly previousMonthLabel = {\n    pt: 'Mês anterior',\n    en: 'Previous month',\n    es: 'Mes anterior',\n    ru: 'Предыдущий месяц'\n  };\n\n  private readonly nextMonthLabel = {\n    pt: 'Próximo mês',\n    en: 'Next month',\n    es: 'Próximo mes',\n    ru: 'Следующий месяц'\n  };\n\n  readonly toCleanLabel = {\n    pt: 'Limpar',\n    en: 'To clean',\n    es: 'Para limpiar',\n    ru: 'Чистить'\n  };\n\n  private readonly presetLabels: { [key: string]: { pt: string; en: string; es: string; ru: string } } = {\n    tomorrow: {\n      pt: 'Amanhã',\n      en: 'Tomorrow',\n      es: 'Mañana',\n      ru: 'Завтра'\n    },\n    today: {\n      pt: 'Hoje',\n      en: 'Today',\n      es: 'Hoy',\n      ru: 'Сегодня'\n    },\n    yesterday: {\n      pt: 'Ontem',\n      en: 'Yesterday',\n      es: 'Ayer',\n      ru: 'Вчера'\n    },\n    '7days': {\n      pt: 'Últimos 7 dias',\n      en: 'Last 7 days',\n      es: 'Últimos 7 días',\n      ru: 'Последние 7 дней'\n    },\n    '14days': {\n      pt: 'Últimos 14 dias',\n      en: 'Last 14 days',\n      es: 'Últimos 14 días',\n      ru: 'Последние 14 дней'\n    },\n    '30days': {\n      pt: 'Últimos 30 dias',\n      en: 'Last 30 days',\n      es: 'Últimos 30 días',\n      ru: 'Последние 30 дней'\n    },\n    '3months': {\n      pt: 'Últimos 3 meses',\n      en: 'Last 3 months',\n      es: 'Últimos 3 meses',\n      ru: 'Последние 3 месяцев'\n    },\n    '6months': {\n      pt: 'Últimos 6 meses',\n      en: 'Last 6 months',\n      es: 'Últimos 6 meses',\n      ru: 'Последние 6 месяцев'\n    }\n  };\n\n  getMonth(month: number) {\n    return this.months[month][this.language];\n  }\n\n  getMonthLabel() {\n    return this.monthLabel[this.language];\n  }\n\n  getMonthsArray() {\n    const arrMonths = Array();\n    for (let i = 0; i < this.months.length; i++) {\n      arrMonths.push(this.months[i][this.language]);\n    }\n    return arrMonths;\n  }\n\n  getWeekDays(day: number) {\n    return this.shortWeekDays[day][this.language];\n  }\n\n  getWeekDaysArray() {\n    const arrWeekDays = Array();\n    for (let i = 0; i < this.shortWeekDays.length; i++) {\n      const weekDay = this.shortWeekDays[i][this.language];\n      arrWeekDays.push(weekDay.toLowerCase());\n    }\n    return arrWeekDays;\n  }\n\n  getYearLabel() {\n    return this.yearLabel[this.language];\n  }\n\n  getTodayLabel() {\n    return this.todayLabel[this.language];\n  }\n\n  getPreviousMonthLabel() {\n    return this.previousMonthLabel[this.language];\n  }\n\n  getNextMonthLabel() {\n    return this.nextMonthLabel[this.language];\n  }\n\n  getToCleanLabel() {\n    return this.toCleanLabel[this.language];\n  }\n\n  getPresetLabel(key: string): string {\n    const labels = this.presetLabels[key];\n    return labels ? labels[this.language] : key;\n  }\n\n  setLanguage(language: string) {\n    if (language && language.length >= 2) {\n      language = language.toLowerCase().slice(0, 2);\n      this.language = poLocales.includes(language) ? language : poLocaleDefault;\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\n\nconst poCalendarServiceFirstWeekDayDefault: number = 0;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoCalendarService {\n  private parseDate(dateValue: any): Date | undefined {\n    if (!dateValue) return undefined;\n\n    if (typeof dateValue === 'string') {\n      const dateOnlyRegex = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\n      if (dateOnlyRegex.test(dateValue)) {\n        const [, year, month, day] = dateValue.match(dateOnlyRegex).map(Number);\n        return new Date(year, month - 1, day);\n      }\n\n      const parsed = new Date(dateValue);\n      if (!isNaN(parsed.getTime())) {\n        dateValue = parsed;\n      } else {\n        return undefined;\n      }\n    }\n\n    if (dateValue instanceof Date) {\n      if (dateValue.getHours() !== 0 && dateValue.getUTCHours() === 0 && dateValue.getUTCMinutes() === 0) {\n        return new Date(dateValue.getUTCFullYear(), dateValue.getUTCMonth(), dateValue.getUTCDate());\n      }\n      return new Date(dateValue.getFullYear(), dateValue.getMonth(), dateValue.getDate());\n    }\n\n    return undefined;\n  }\n\n  getYearOptions(minDate?: Date | string, maxDate?: Date | string): Array<{ label: string; value: number }> {\n    const currentYear = new Date().getFullYear();\n\n    let minYear = currentYear - 150;\n    let maxYear = currentYear + 150;\n\n    const parsedMinDate = this.parseDate(minDate);\n    if (parsedMinDate) {\n      minYear = parsedMinDate.getFullYear();\n    }\n\n    const parsedMaxDate = this.parseDate(maxDate);\n    if (parsedMaxDate) {\n      maxYear = parsedMaxDate.getFullYear();\n    }\n\n    const options = [];\n    for (let i = minYear; i <= maxYear; i++) {\n      options.push({ label: i.toString(), value: i });\n    }\n\n    return options;\n  }\n\n  monthDates(year: any, month: any, dayFormatter: any = null, weekFormatter: any = null) {\n    if (typeof month !== 'number' || month < 0 || month > 11) {\n      throw Error('month must be a number (Jan is 0)');\n    }\n\n    const weeks: Array<any> = [];\n    let week: Array<any> = [];\n    let i = 0;\n    let date = new Date(year, month, 1);\n\n    if (year >= 0 && year < 100) {\n      date.setFullYear(year);\n    }\n\n    date = this.weekStartDate(date);\n\n    do {\n      for (i = 0; i < 7; i++) {\n        week.push(dayFormatter ? dayFormatter(date) : date);\n        date = new Date(date.getTime());\n        date.setDate(date.getDate() + 1);\n      }\n      weeks.push(weekFormatter ? weekFormatter(week) : week);\n      week = [];\n    } while (date.getMonth() <= month && date.getFullYear() === year);\n    return weeks;\n  }\n\n  monthDays(year: any, month: any) {\n    const getDayObject = function (date: any) {\n      return date;\n    };\n    return this.monthDates(year, month, getDayObject);\n  }\n\n  weekStartDate(date: any) {\n    const startDate = new Date(date.getTime());\n    while (startDate.getDay() !== poCalendarServiceFirstWeekDayDefault) {\n      startDate.setDate(startDate.getDate() - 1);\n    }\n    return startDate;\n  }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n  selector: 'po-calendar-footer',\n  templateUrl: './po-calendar-footer.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoCalendarFooterComponent {\n  @Input('p-size') size: string;\n  @Input('p-label-clear') labelClear: string;\n  @Input('p-label-today') labelToday: string;\n  @Input('p-responsive') responsive: boolean = false;\n  @Input('p-today-disabled') todayDisabled: boolean = false;\n  @Input('p-hide-today-button') hideTodayButton: boolean = false;\n\n  @Output('p-clear') clear = new EventEmitter<void>();\n  @Output('p-select-today') selectToday = new EventEmitter<void>();\n  @Output('p-close-calendar') closeCalendar = new EventEmitter<void>();\n\n  onClear(): void {\n    this.clear.emit();\n  }\n\n  onSelectToday(): void {\n    this.selectToday.emit();\n  }\n\n  onClearKeydown(event: KeyboardEvent): void {\n    if (this.hideTodayButton && event.key === 'Tab' && !event.shiftKey) {\n      this.closeCalendar.emit();\n    }\n  }\n\n  onTodayKeydown(event: KeyboardEvent): void {\n    if (event.key === 'Tab' && !event.shiftKey) {\n      this.closeCalendar.emit();\n    }\n  }\n}\n","<div class=\"po-calendar-footer\">\n  <po-button\n    p-kind=\"tertiary\"\n    type=\"button\"\n    [p-label]=\"labelClear\"\n    [p-size]=\"size\"\n    (click)=\"onClear()\"\n    (keydown.enter)=\"onClear()\"\n    (keydown.space)=\"onClear()\"\n    (keydown)=\"onClearKeydown($event)\"\n  >\n  </po-button>\n\n  @if (!hideTodayButton) {\n    <po-button\n      p-kind=\"tertiary\"\n      type=\"button\"\n      [p-label]=\"labelToday\"\n      [p-disabled]=\"todayDisabled\"\n      [p-size]=\"size\"\n      (click)=\"onSelectToday()\"\n      (keydown)=\"onTodayKeydown($event)\"\n    >\n    </po-button>\n  }\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  inject,\n  Input,\n  Output,\n  QueryList,\n  ViewChildren\n} from '@angular/core';\n\nimport { PoCalendarRangePreset } from '../interfaces/po-calendar-range-preset.interface';\nimport { PoCalendarLangService } from '../services/po-calendar.lang.service';\n\n@Component({\n  selector: 'po-calendar-preset-list',\n  templateUrl: './po-calendar-preset-list.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoCalendarPresetListComponent {\n  private readonly poCalendarLangService = inject(PoCalendarLangService);\n  private _locale: string;\n\n  @Input('p-size') size: string;\n  @Input('p-presets') presets: Array<PoCalendarRangePreset> = [];\n  @Input('p-selected-preset') selectedPreset: string | null = null;\n  @Input('p-responsive') responsive: boolean = false;\n  @Input('p-locale')\n  set locale(value: string) {\n    this._locale = value;\n    this.poCalendarLangService.setLanguage(value);\n  }\n\n  get locale(): string {\n    return this._locale;\n  }\n\n  @Output('p-close-calendar') closeCalendar = new EventEmitter<void>();\n  @Output('p-select-preset') selectPreset = new EventEmitter<{ label: string; start: Date; end: Date }>();\n\n  @ViewChildren('presetButton') presetButtons: QueryList<HTMLButtonElement>;\n\n  focusedIndex: number = 0;\n\n  getDisplayLabel(preset: PoCalendarRangePreset): string {\n    return this.poCalendarLangService.getPresetLabel(preset.label);\n  }\n\n  isSelected(preset: PoCalendarRangePreset): boolean {\n    return this.selectedPreset === preset.label;\n  }\n\n  onKeydown(event: KeyboardEvent, index: number): void {\n    const buttons = this.getPresetButtons();\n\n    if (event.key === 'ArrowDown') {\n      event.preventDefault();\n      const nextIndex = index < this.presets.length - 1 ? index + 1 : index;\n      this.focusPreset(buttons, nextIndex);\n    } else if (event.key === 'ArrowUp') {\n      event.preventDefault();\n      const prevIndex = index > 0 ? index - 1 : index;\n      this.focusPreset(buttons, prevIndex);\n    } else if (event.key === 'Tab' && !event.shiftKey) {\n      this.resetFocusToFirst();\n    } else if (event.key === 'Tab' && event.shiftKey && !this.responsive) {\n      this.closeCalendar.emit();\n    }\n  }\n\n  resetFocusToFirst(): void {\n    this.focusedIndex = 0;\n  }\n\n  isPresetDisabled(preset: PoCalendarRangePreset): boolean {\n    return preset.isDisabled === true;\n  }\n\n  onPresetClick(preset: PoCalendarRangePreset): void {\n    if (this.isPresetDisabled(preset)) {\n      return;\n    }\n    const { start, end } = preset.dateRange(new Date());\n    this.selectPreset.emit({ label: preset.label, start, end });\n  }\n\n  private focusPreset(buttons: Array<HTMLButtonElement>, index: number): void {\n    if (buttons[index]) {\n      this.focusedIndex = index;\n      buttons[index].focus();\n    }\n  }\n\n  private getPresetButtons(): Array<HTMLButtonElement> {\n    return this.presetButtons.toArray();\n  }\n}\n","<div class=\"po-calendar-preset-list\" role=\"listbox\">\n  @for (preset of presets; track preset.label; let i = $index) {\n    <po-button\n      #presetButton\n      class=\"po-calendar-preset-item\"\n      [class.po-calendar-preset-item-selected]=\"isSelected(preset)\"\n      p-kind=\"tertiary\"\n      role=\"option\"\n      [p-size]=\"size\"\n      [p-label]=\"getDisplayLabel(preset)\"\n      [p-disabled]=\"isPresetDisabled(preset)\"\n      [attr.aria-selected]=\"isSelected(preset)\"\n      [p-tabindex]=\"i === focusedIndex ? 0 : -1\"\n      (click)=\"onPresetClick(preset)\"\n      (keydown)=\"onKeydown($event, i)\"\n    >\n    </po-button>\n  }\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef,\n  OnChanges,\n  SimpleChanges,\n  inject,\n  ChangeDetectorRef,\n  OnInit\n} from '@angular/core';\nimport { PoComboOption } from '../../po-field/po-combo/interfaces/po-combo-option.interface';\nimport { PoCalendarLangService } from '../services/po-calendar.lang.service';\n\n@Component({\n  selector: 'po-calendar-header',\n  templateUrl: './po-calendar-header.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoCalendarHeaderComponent implements OnInit, OnChanges {\n  readonly cdr = inject(ChangeDetectorRef);\n  readonly poCalendarLangService = inject(PoCalendarLangService);\n\n  @Input('p-hide-previous') hidePrevious = false;\n  @Input('p-hide-next') hideNext = false;\n  @Input('p-display-month') displayMonth!: number;\n  @Input('p-display-year') displayYear!: number;\n  @Input('p-display-month-label') displayMonthLabel: string;\n  @Input('p-month-options') monthOptions?: Array<PoComboOption>;\n  @Input('p-header-template') headerTemplate?: TemplateRef<any>;\n  @Input('p-template-context') templateContext: any;\n  @Input('p-size') size: string;\n\n  private _locale: string;\n  @Input('p-locale') set locale(value: string) {\n    if (this._locale !== value) {\n      this._locale = value;\n      this.setupLabels();\n    }\n  }\n  get locale() {\n    return this._locale;\n  }\n\n  @Output('p-previous') previous = new EventEmitter<void>();\n  @Output('p-next') next = new EventEmitter<void>();\n  @Output('p-select-month') selectMonth = new EventEmitter<number>();\n  @Output('p-select-year') selectYear = new EventEmitter<number>();\n\n  previousMonthLabel: string;\n  nextMonthLabel: string;\n  private labelsInitialized = false;\n\n  ngOnInit() {\n    if (!this.labelsInitialized) {\n      this.setupLabels();\n    }\n  }\n\n  private setupLabels() {\n    if (this._locale) {\n      this.poCalendarLangService.setLanguage(this._locale);\n    }\n    this.previousMonthLabel = this.poCalendarLangService.getPreviousMonthLabel();\n    this.nextMonthLabel = this.poCalendarLangService.getNextMonthLabel();\n    this.labelsInitialized = true;\n    this.cdr.markForCheck();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['templateContext'] || changes['monthOptions'] || changes['headerTemplate']) {\n      this.cdr.markForCheck();\n      try {\n        this.cdr.detectChanges();\n      } catch (e) {\n        // Sileciando erro ExpressionChangedAfterItHasBeenCheckedError\n      }\n    }\n  }\n}\n","<div class=\"po-calendar-header\">\n  @if (headerTemplate) {\n    <ng-container [ngTemplateOutlet]=\"headerTemplate\" [ngTemplateOutletContext]=\"{ $implicit: templateContext }\">\n    </ng-container>\n  }\n\n  @if (previous?.observers && !hidePrevious) {\n    <po-button\n      p-kind=\"tertiary\"\n      (click)=\"previous.emit()\"\n      (keydown.enter)=\"previous.emit(); $event.preventDefault()\"\n      [p-aria-label]=\"previousMonthLabel\"\n      p-icon=\"ICON_ARROW_LEFT\"\n      [p-size]=\"size\"\n    ></po-button>\n  }\n\n  @if (next?.observers.length && !hideNext) {\n    <po-button\n      p-kind=\"tertiary\"\n      (click)=\"next.emit()\"\n      (keydown.enter)=\"next.emit(); $event.preventDefault()\"\n      [p-aria-label]=\"nextMonthLabel\"\n      p-icon=\"ICON_ARROW_RIGHT\"\n      [p-size]=\"size\"\n    ></po-button>\n  }\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  EventEmitter,\n  inject,\n  TemplateRef,\n  ChangeDetectorRef,\n  SimpleChanges,\n  ElementRef,\n  HostListener,\n  ViewChild\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { PoCalendarLangService } from '../services/po-calendar.lang.service';\nimport { PoCalendarService } from '../services/po-calendar.service';\nimport { PoDateService } from '../../../services/po-date/po-date.service';\n\n@Component({\n  selector: 'po-calendar-wrapper',\n  templateUrl: './po-calendar-wrapper.component.html',\n  providers: [PoCalendarService],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoCalendarWrapperComponent implements OnInit, OnChanges {\n  private readonly poCalendarService = inject(PoCalendarService);\n  private readonly poCalendarLangService = inject(PoCalendarLangService);\n  private readonly poDate = inject(PoDateService);\n  readonly cdr = inject(ChangeDetectorRef);\n  readonly elementRef = inject(ElementRef<HTMLElement>);\n\n  @Input('p-value') value: any;\n  @Input('p-mode') mode: 'day' | 'month' | 'year' = 'day';\n  @Input('p-responsive') responsive: boolean = false;\n  @Input('p-part-type') partType: 'start' | 'end';\n  @Input('p-range') range: boolean = false;\n  @Input('p-activate-date') activateDate: Date = new Date();\n  @Input('p-selected-value') selectedValue: any;\n  @Input('p-min-date') minDate: any;\n  @Input('p-max-date') maxDate: any;\n  @Input('p-hover-value') hoverValue: Date;\n  @Input('p-size') size: string;\n  @Input('p-hide-today-button') hideTodayButton: boolean = false;\n  @Input('p-presets') hasPresets: boolean = false;\n  // Template customizado para o header do calendário. Para uso interno do datepicker/datepicker-range.\n  @Input('p-header-template') headerTemplate?: TemplateRef<any>;\n  private _locale: string;\n  @Input('p-locale') set locale(value: string) {\n    this._locale = value;\n    this.setupOptions();\n  }\n  get locale() {\n    return this._locale;\n  }\n\n  @Output('p-header-change') headerChange = new EventEmitter<any>();\n  @Output('p-select-date') selectDate = new EventEmitter<any>();\n  readonly hoverDateSource = new Subject<Date>();\n  @Output('p-hover-date') hoverDate = this.hoverDateSource.pipe(debounceTime(100));\n  // Evento para fechar o calendário. Para uso interno do datepicker/datepicker-range.\n  @Output('p-close-calendar') closeCalendar = new EventEmitter<void>();\n\n  currentYear: number;\n  displayYear: number;\n  displayMonthNumber: number;\n  displayMonth: string;\n\n  displayDays: Array<Date> = [];\n  displayWeekDays: Array<string> = [];\n  displayMonths: Array<string> = [];\n\n  displayDecade: Array<number> = [];\n  displayStartDecade: number;\n  displayFinalDecade: number;\n\n  displayToday: string;\n  displayToClean: string;\n  today: Date = new Date();\n\n  comboMonthsOptions: Array<{ label: string; value: number }> = [];\n  comboYearsOptions: Array<{ label: string; value: number }> = [];\n  comboKey: number = 0;\n  focusedDayIndex: number = 0;\n\n  templateContext: any = {\n    monthIndex: 0,\n    monthsOptions: [],\n    year: 0,\n    yearsOptions: [],\n    updateDate: (year: number, month: number, comboComponent?: any) => this.updateDate(year, month, comboComponent),\n    onComboBlur: () => this.onComboBlur()\n  };\n\n  protected currentMonthNumber: number;\n  protected lastDisplay: string;\n\n  get monthLabel() {\n    return this.poCalendarLangService.getMonthLabel();\n  }\n  get yearLabel() {\n    return this.poCalendarLangService.getYearLabel();\n  }\n  get isDayVisible() {\n    return this.mode === 'day';\n  }\n  get isMonthVisible() {\n    return this.mode === 'month';\n  }\n  get isYearVisible() {\n    return this.mode === 'year';\n  }\n  get isStartPart() {\n    return this.partType === 'start';\n  }\n  get isEndPart() {\n    return this.partType === 'end';\n  }\n\n  private get date() {\n    return this.value;\n  }\n\n  ngOnInit() {\n    this.initializeData();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const { activateDate, minDate, maxDate, locale } = changes;\n\n    if (minDate || maxDate) {\n      this.comboYearsOptions = [...this.poCalendarService.getYearOptions(this.minDate, this.maxDate)];\n      this.updateTemplateContext();\n      this.ensureValidFocusedDay();\n      this.cdr.markForCheck();\n    }\n\n    if (locale && !locale.firstChange && locale.previousValue !== locale.currentValue) {\n      this.comboKey++;\n      this.updateTemplateContext();\n      this.cdr.detectChanges();\n    }\n\n    if (activateDate && !activateDate.firstChange) {\n      const val = activateDate.currentValue;\n      const dateToUse = this.getDateToUse(val);\n\n      if (dateToUse.getFullYear() !== this.displayYear || dateToUse.getMonth() !== this.displayMonthNumber) {\n        this.updateDisplay(dateToUse.getFullYear(), dateToUse.getMonth());\n      }\n    }\n  }\n\n  private getDateToUse(value: any): Date {\n    if (!value) return new Date();\n\n    let dateValue = value.start ?? value;\n\n    if (typeof dateValue === 'string') {\n      const dateOnlyRegex = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\n      if (dateOnlyRegex.test(dateValue)) {\n        const [, year, month, day] = dateOnlyRegex.exec(dateValue).map(Number);\n        return new Date(year, month - 1, day);\n      }\n      dateValue = new Date(dateValue);\n    }\n\n    if (dateValue instanceof Date && !Number.isNaN(dateValue.getTime())) {\n      if (dateValue.getUTCHours() === 0 && dateValue.getUTCMinutes() === 0) {\n        return new Date(dateValue.getUTCFullYear(), dateValue.getUTCMonth(), dateValue.getUTCDate());\n      }\n\n      return new Date(dateValue.getFullYear(), dateValue.getMonth(), dateValue.getDate());\n    }\n\n    return new Date();\n  }\n\n  private initializeData() {\n    const date = this.getDateToUse(this.activateDate || this.value || new Date());\n\n    this.displayYear = date.getFullYear();\n    this.displayMonthNumber = date.getMonth();\n\n    this.setupOptions();\n\n    this.updateDisplay(this.displayYear, this.displayMonthNumber);\n  }\n\n  private setupOptions() {\n    this.poCalendarLangService.setLanguage(this.locale);\n\n    this.displayWeekDays = this.poCalendarLangService.getWeekDaysArray();\n    this.displayMonths = this.poCalendarLangService.getMonthsArray();\n    this.displayToday = this.poCalendarLangService.getTodayLabel();\n    this.displayToClean = this.poCalendarLangService.getToCleanLabel();\n\n    this.comboYearsOptions = [...this.poCalendarService.getYearOptions(this.minDate, this.maxDate)];\n\n    this.comboMonthsOptions = [\n      ...this.displayMonths.map((label, index) => ({\n        label: label,\n        value: index\n      }))\n    ];\n\n    if (this.displayMonthNumber !== undefined) {\n      this.displayMonth = this.displayMonths[this.displayMonthNumber];\n    }\n\n    this.cdr.markForCheck();\n\n    this.updateTemplateContext();\n  }\n\n  onHeaderDateChange(event: { year: number; month: number }) {\n    this.mode = 'day';\n    this.updateDisplay(event.year, event.month);\n  }\n\n  private updateTemplateContext() {\n    const yearsOptions = [...this.comboYearsOptions];\n\n    if (this.displayYear !== undefined && !yearsOptions.some(option => option.value === this.displayYear)) {\n      yearsOptions.push({ label: this.displayYear.toString(), value: this.displayYear });\n      yearsOptions.sort((a, b) => a.value - b.value);\n    }\n\n    this.templateContext = {\n      monthIndex: this.displayMonthNumber,\n      monthsOptions: [...this.comboMonthsOptions],\n      year: this.displayYear,\n      yearsOptions,\n      updateDate: (year: number, month: number, comboComponent?: any) => this.updateDate(year, month, comboComponent),\n      onComboBlur: (comboComponent?: any) => this.onComboBlur(comboComponent)\n    };\n    this.cdr.markForCheck();\n  }\n\n  updateDate(year: number, month: number, comboComponent?: any) {\n    const isInvalidYear = year === undefined || year === null;\n    const isInvalidMonth = month === undefined || month === null;\n\n    if (isInvalidYear || isInvalidMonth) {\n      this.templateContext = { ...this.templateContext, year, monthIndex: month };\n      return;\n    }\n\n    const hasChanged = this.displayYear !== year || this.displayMonthNumber !== month;\n    this.updateDisplay(year, month);\n\n    if (comboComponent && typeof comboComponent.focus === 'function') {\n      setTimeout(() => {\n        comboComponent.focus();\n      }, 0);\n    }\n\n    if (hasChanged) {\n      this.headerChange.emit({ month: month + 1, year });\n    }\n  }\n\n  onComboBlur(comboComponent?: any) {\n    if (comboComponent) {\n      setTimeout(() => this.handleComboBlur(comboComponent), 0);\n    } else {\n      this.ensureValidDisplay(this.templateContext.year, this.templateContext.monthIndex);\n    }\n  }\n\n  private handleComboBlur(comboComponent: any) {\n    let currentYear = this.templateContext.year;\n    let currentMonth = this.templateContext.monthIndex;\n\n    const isMonthInvalid = this.isMonthInvalid(currentMonth);\n    const isYearInvalid = this.isYearInvalid(currentYear);\n\n    if (comboComponent?.selectedOption?.value !== undefined) {\n      this.syncInputValue(comboComponent);\n\n      if (isMonthInvalid || isYearInvalid) {\n        ({ currentYear, currentMonth } = this.applySelectedValue(\n          comboComponent.selectedOption.value,\n          currentYear,\n          currentMonth\n        ));\n      }\n    }\n\n    this.ensureValidDisplay(currentYear, currentMonth);\n  }\n\n  private syncInputValue(comboComponent: any) {\n    if (comboComponent?.inputEl?.nativeElement) {\n      const currentInputValue = comboComponent.inputEl.nativeElement.value;\n      const expectedValue = comboComponent.selectedOption.label || '';\n\n      if (currentInputValue !== expectedValue) {\n        comboComponent.inputEl.nativeElement.value = expectedValue;\n      }\n    }\n  }\n\n  private applySelectedValue(value: any, currentYear: any, currentMonth: any) {\n    if (value >= 0 && value <= 11) {\n      currentMonth = value;\n    } else if (typeof value === 'number' && value > 11) {\n      currentYear = value;\n    }\n\n    return { currentYear, currentMonth };\n  }\n\n  private ensureValidDisplay(currentYear: any, currentMonth: any) {\n    const isInvalidYear = currentYear === undefined || currentYear === null;\n    const isInvalidMonth = currentMonth === undefined || currentMonth === null;\n\n    if (isInvalidYear || isInvalidMonth) {\n      const safeYear = isInvalidYear ? this.displayYear || this.today.getFullYear() : currentYear;\n\n      const safeMonth = isInvalidMonth ? (this.displayMonthNumber ?? this.today.getMonth()) : currentMonth;\n\n      this.updateDisplay(safeYear, safeMonth);\n    }\n  }\n\n  private isMonthInvalid(month: any): boolean {\n    return typeof month === 'string' || month < 0 || month > 11 || Number.isNaN(month);\n  }\n\n  private isYearInvalid(year: any): boolean {\n    return typeof year === 'string' || Number.isNaN(year) || (year && year < 1900) || (year && year > 2100);\n  }\n\n  private updateDisplay(year: number, month: number) {\n    if (year === undefined || month === undefined) return;\n\n    this.displayYear = year;\n    this.displayMonthNumber = month;\n    this.displayMonth = this.displayMonths[month];\n\n    const calendarArray = this.poCalendarService.monthDays(year, month);\n    this.displayDays = [].concat(...calendarArray);\n\n    this.getDecadeArray(year);\n\n    this.updateTemplateContext();\n\n    this.setInitialFocusedDay();\n\n    this.ensureValidFocusedDay();\n\n    this.cdr.detectChanges();\n  }\n\n  private setInitialFocusedDay(): void {\n    if (this.value) {\n      const selectedDate = this.value instanceof Date ? this.value : this.value?.start;\n      if (selectedDate instanceof Date) {\n        const selectedIndex = this.displayDays.findIndex(\n          day =>\n            day &&\n            this.equalsDate(day, selectedDate) &&\n            day.getMonth() === this.displayMonthNumber &&\n            !this.isDayDisabled(day)\n        );\n        if (selectedIndex !== -1) {\n          this.focusedDayIndex = selectedIndex;\n          return;\n        }\n      }\n    }\n\n    const firstAvailableIndex = this.displayDays.findIndex(\n      day => day instanceof Date && day.getMonth() === this.displayMonthNumber && !this.isDayDisabled(day)\n    );\n\n    if (firstAvailableIndex !== -1) {\n      this.focusedDayIndex = firstAvailableIndex;\n    }\n\n    this.cdr.markForCheck();\n  }\n\n  private ensureValidFocusedDay(): void {\n    const currentDay = this.displayDays[this.focusedDayIndex];\n\n    if (\n      currentDay instanceof Date &&\n      currentDay.getMonth() === this.displayMonthNumber &&\n      !this.isDayDisabled(currentDay)\n    ) {\n      return;\n    }\n\n    const firstAvailableIndex = this.displayDays.findIndex(\n      day => day instanceof Date && day.getMonth() === this.displayMonthNumber && !this.isDayDisabled(day)\n    );\n\n    if (firstAvailableIndex !== -1) {\n      this.focusedDayIndex = firstAvailableIndex;\n    }\n  }\n\n  getDayTabIndex(day: Date, index: number): number {\n    if (!day || !(day instanceof Date)) {\n      return -1;\n    }\n    if (day.getMonth() !== this.displayMonthNumber) {\n      return -1;\n    }\n    if (this.isDayDisabled(day)) {\n      return -1;\n    }\n    return index === this.focusedDayIndex ? 0 : -1;\n  }\n\n  // --- 4. Navegação (Setas) ---\n\n  onNextMonth() {\n    const newMonth = this.displayMonthNumber < 11 ? this.displayMonthNumber + 1 : 0;\n    const newYear = this.displayMonthNumber < 11 ? this.displayYear : this.displayYear + 1;\n    this.updateDisplay(newYear, newMonth);\n    this.headerChange.emit({ month: newMonth + 1, year: newYear });\n  }\n\n  onPreviousMonth() {\n    const newMonth = this.displayMonthNumber > 0 ? this.displayMonthNumber - 1 : 11;\n    const newYear = this.displayMonthNumber > 0 ? this.displayYear : this.displayYear - 1;\n    this.updateDisplay(newYear, newMonth);\n    this.headerChange.emit({ month: newMonth + 1, year: newYear });\n  }\n\n  updateYear(value: number) {\n    const newYear = this.displayYear + value;\n    this.updateDisplay(newYear, this.displayMonthNumber);\n  }\n\n  onSelectMonth(year: number, month: number) {\n    this.selectDisplayMode('day');\n    this.updateDisplay(year, month);\n  }\n\n  onSelectYear(year: number, month: number) {\n    this.selectDisplayMode(this.lastDisplay === 'month' ? 'month' : 'day');\n    this.currentYear = year;\n    this.updateDisplay(year, month);\n  }\n\n  selectDisplayMode(mode: 'month' | 'day' | 'year') {\n    this.lastDisplay = this.mode;\n    this.mode = mode;\n    this.cdr.detectChanges();\n  }\n\n  onSelectDate(date: Date) {\n    if (!this.poDate.validateDateRange(date, this.minDate, this.maxDate)) {\n      return;\n    }\n    this.selectDate.emit(date);\n  }\n\n  onMouseEnter(day: any) {\n    this.hoverDateSource.next(day);\n  }\n\n  onMouseLeave() {\n    this.hoverDateSource.next(null);\n  }\n\n  onSelectToday(): void {\n    this.onSelectDate(this.today);\n\n    if (this.displayMonthNumber !== this.today.getMonth() || this.displayYear !== this.today.getFullYear()) {\n      this.updateDisplay(this.today.getFullYear(), this.today.getMonth());\n    }\n\n    const todayIndex = this.displayDays.findIndex(day => day instanceof Date && this.equalsDate(day, this.today));\n\n    if (todayIndex !== -1) {\n      this.focusedDayIndex = todayIndex;\n      this.cdr.detectChanges();\n    }\n  }\n\n  onFooterCloseCalendar(): void {\n    this.restoreOriginalDisplay();\n    this.closeCalendar.emit();\n  }\n\n  @HostListener('keydown', ['$event'])\n  onHostKeydown(event: KeyboardEvent) {\n    if (event.key === 'Tab' && event.shiftKey) {\n      setTimeout(() => {\n        const activeElement = document.activeElement;\n\n        if (!this.elementRef.nativeElement.contains(activeElement)) {\n          setTimeout(() => {\n            this.restoreOriginalDisplay();\n          }, 200);\n        }\n      }, 0);\n    }\n  }\n\n  private restoreOriginalDisplay(): void {\n    if (!this.value) return;\n\n    const originalDate = this.getDateToUse(this.value);\n    const originalYear = originalDate.getFullYear();\n    const originalMonth = originalDate.getMonth();\n\n    if (this.displayYear !== originalYear || this.displayMonthNumber !== originalMonth) {\n      this.updateDisplay(originalYear, originalMonth);\n    }\n  }\n\n  onDayKeydown(event: KeyboardEvent, day: Date, index: number) {\n    const key = event.key;\n    const dayOfMonth = day.getDate();\n\n    if (this.isSelectionKey(key)) {\n      this.handleSelectKey(day, index);\n      event.preventDefault();\n    } else if (this.handleNavigationKey(key, index)) {\n      event.preventDefault();\n    } else if (this.handlePageNavigation(key, event.shiftKey, dayOfMonth, index)) {\n      event.preventDefault();\n    } else if (key === 'Escape') {\n      event.preventDefault();\n    } else if (key === 'Tab') {\n      this.setInitialFocusedDay();\n    }\n  }\n\n  private isSelectionKey(key: string): boolean {\n    return key === 'Enter' || key === ' ';\n  }\n\n  private handleSelectKey(day: Date, index: number): void {\n    // Bloqueia seleção de dias desabilitados\n    if (this.isDayDisabled(day)) {\n      return;\n    }\n    this.onSelectDate(day);\n    this.focusElement(index);\n  }\n\n  private handleNavigationKey(key: string, index: number): boolean {\n    let newIndex = this.getNextNavigationIndex(key, index);\n\n    if (newIndex !== -1 && newIndex < this.displayDays.length) {\n      let newDate = this.displayDays[newIndex];\n      if (!newDate) return false;\n      if (newDate.getMonth() !== this.displayMonthNumber || newDate.getFullYear() !== this.displayYear) {\n        return false;\n      }\n      if (this.isDayDisabled(newDate)) {\n        const direction = this.getNavigationDirection(key);\n        newIndex = this.findNextAvailableDay(newIndex, direction);\n        if (newIndex === -1) {\n          return false;\n        }\n        newDate = this.displayDays[newIndex];\n        if (!newDate || this.isDayDisabled(newDate)) {\n          return false;\n        }\n      }\n\n      this.focusedDayIndex = newIndex;\n      this.cdr.detectChanges();\n      this.focusElement(newIndex);\n      return true;\n    }\n\n    return false;\n  }\n\n  private getNextNavigationIndex(key: string, index: number): number {\n    switch (key) {\n      case 'ArrowUp':\n        return index - 7;\n      case 'ArrowDown':\n        return index + 7;\n      case 'ArrowRight':\n        return index + 1;\n      case 'ArrowLeft':\n        return index - 1;\n      case 'Home':\n        return this.getFirstAvailableDayInWeek(index);\n      case 'End':\n        return this.getLastAvailableDayInWeek(index);\n      default:\n        return -1;\n    }\n  }\n\n  private getFirstAvailableDayInWeek(index: number): number {\n    const weekStart = Math.floor(index / 7) * 7;\n    const weekEnd = Math.min(weekStart + 7, this.displayDays.length);\n\n    for (let i = weekStart; i < weekEnd; i++) {\n      const date = this.displayDays[i];\n      if (date instanceof Date && date.getMonth() === this.displayMonthNumber && !this.isDayDisabled(date)) {\n        return i;\n      }\n    }\n\n    return weekStart;\n  }\n\n  private getLastAvailableDayInWeek(index: number): number {\n    const weekStart = Math.floor(index / 7) * 7;\n    const weekEnd = Math.min(weekStart + 7, this.displayDays.length);\n\n    for (let i = weekEnd - 1; i >= weekStart; i--) {\n      const date = this.displayDays[i];\n      if (date instanceof Date && date.getMonth() === this.displayMonthNumber && !this.isDayDisabled(date)) {\n        return i;\n      }\n    }\n\n    return weekStart;\n  }\n\n  private getNavigationDirection(key: string): 'forward' | 'backward' {\n    return key === 'ArrowRight' || key === 'ArrowDown' || key === 'End' ? 'forward' : 'backward';\n  }\n\n  private findNextAvailableDay(startIndex: number, direction: 'forward' | 'backward'): number {\n    const step = direction === 'forward' ? 1 : -1;\n    let index = startIndex + step;\n\n    for (let i = 0; i < 100; i++) {\n      if (index < 0 || index >= this.displayDays.length) {\n        break;\n      }\n\n      const date = this.displayDays[index];\n      if (date instanceof Date && date.getMonth() === this.displayMonthNumber && !this.isDayDisabled(date)) {\n        return index;\n      }\n\n      index += step;\n    }\n\n    return -1;\n  }\n\n  private handlePageNavigation(key: string, isShiftKey: boolean, dayOfMonth: number, index: number): boolean {\n    const directionMap: Record<string, 'up' | 'down'> = {\n      PageUp: 'up',\n      PageDown: 'down'\n    };\n\n    const direction = directionMap[key];\n\n    if (!direction) {\n      return false;\n    }\n\n    const step = direction === 'up' ? -1 : 1;\n    let targetMonth = this.displayMonthNumber;\n    let targetYear = this.displayYear;\n\n    if (isShiftKey) {\n      targetYear += step;\n    } else {\n      targetMonth += step;\n      if (targetMonth < 0) {\n        targetMonth = 11;\n        targetYear -= 1;\n      } else if (targetMonth > 11) {\n        targetMonth = 0;\n        targetYear += 1;\n      }\n    }\n\n    if (!this.hasAvailableDaysInMonth(targetYear, targetMonth)) {\n      return false;\n    }\n\n    this.applyPageNavigation(direction, isShiftKey);\n    this.focusOnSameDayAndWeek(dayOfMonth, index);\n    return true;\n  }\n\n  private hasAvailableDaysInMonth(year: number, month: number): boolean {\n    const calendarArray = this.poCalendarService.monthDays(year, month);\n    const monthDays = calendarArray.flat();\n\n    return monthDays.some(day => day instanceof Date && day.getMonth() === month && !this.isDayDisabled(day));\n  }\n\n  private applyPageNavigation(direction: 'up' | 'down', isShiftKey: boolean): void {\n    const step = direction === 'up' ? -1 : 1;\n\n    if (isShiftKey) {\n      this.displayYear += step;\n    } else {\n      this.displayMonthNumber += step;\n      if (this.displayMonthNumber < 0) {\n        this.displayMonthNumber = 11;\n        this.displayYear -= 1;\n      } else if (this.displayMonthNumber > 11) {\n        this.displayMonthNumber = 0;\n        this.displayYear += 1;\n      }\n    }\n    this.updateDisplay(this.displayYear, this.displayMonthNumber);\n  }\n\n  private focusElement(index: number): void {\n    this.focusedDayIndex = index;\n    this.cdr.detectChanges();\n    setTimeout(() => {\n      const element = this.queryDayElement(index);\n      if (element instanceof HTMLElement) {\n        element.focus();\n      }\n    }, 0);\n  }\n\n  private focusOnSameDayAndWeek(dayOfMonth: number, currentIndex: number): void {\n    const currentWeekRow = Math.floor(currentIndex / 7);\n    const dayOfWeek = currentIndex % 7;\n\n    setTimeout(() => {\n      const focusIndex = this.findTargetDayIndex(dayOfMonth, dayOfWeek, currentWeekRow);\n\n      if (focusIndex !== -1) {\n        let targetIndex = focusIndex;\n        const targetDate = this.displayDays[targetIndex];\n\n        if (targetDate instanceof Date && this.isDayDisabled(targetDate)) {\n          targetIndex = this.getFirstAvailableDayInWeek(targetIndex);\n        }\n\n        this.focusedDayIndex = targetIndex;\n        this.cdr.detectChanges();\n\n        const element = this.queryDayElement(targetIndex);\n        if (element instanceof HTMLElement) {\n          element.focus();\n        }\n      }\n    }, 0);\n  }\n\n  private queryDayElement(index: number): Element | null {\n    return this.elementRef.nativeElement.querySelector(`[data-day-index=\"${index}\"]`);\n  }\n\n  private findTargetDayIndex(dayOfMonth: number, dayOfWeek: number, startWeekRow: number): number {\n    const totalRows = Math.ceil(this.displayDays.length / 7);\n\n    for (let row = 0; row < totalRows; row++) {\n      const checkIndex = row * 7 + dayOfWeek;\n      if (this.isValidCalendarDate(checkIndex, dayOfMonth)) return checkIndex;\n    }\n\n    for (let row = startWeekRow - 1; row >= 0; row--) {\n      const checkIndex = row * 7 + dayOfWeek;\n      if (this.isValidCalendarDate(checkIndex)) return checkIndex;\n    }\n\n    for (let row = startWeekRow + 1; row < totalRows; row++) {\n      const checkIndex = row * 7 + dayOfWeek;\n      if (this.isValidCalendarDate(checkIndex)) return checkIndex;\n    }\n\n    return -1;\n  }\n\n  private isValidCalendarDate(index: number, requiredDayOfMonth?: number): boolean {\n    if (index >= this.displayDays.length) return false;\n\n    const date = this.displayDays[index];\n\n    if (!(date instanceof Date) || date.getMonth() !== this.displayMonthNumber) {\n      return false;\n    }\n\n    return requiredDayOfMonth === undefined || date.getDate() === requiredDayOfMonth;\n  }\n\n  onClear() {\n    this.selectDate.emit(undefined);\n\n    const firstAvailableIndex = this.displayDays.findIndex(\n      day => day instanceof Date && day.getMonth() === this.displayMonthNumber && !this.isDayDisabled(day)\n    );\n\n    if (firstAvailableIndex !== -1) {\n      this.focusedDayIndex = firstAvailableIndex;\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  getDayBackgroundColor(date: Date) {\n    return this.getDayColor(date, 'background');\n  }\n  getDayForegroundColor(date: Date) {\n    return this.getDayColor(date, 'foreground');\n  }\n\n  getBackgroundColor(displayValue: number, propertyValue: number) {\n    return displayValue === propertyValue ? 'po-calendar-box-background-selected' : 'po-calendar-box-background';\n  }\n\n  getForegroundColor(displayValue: number, propertyValue: number) {\n    return displayValue === propertyValue ? 'po-calendar-box-foreground-selected' : 'po-calendar-box-foreground';\n  }\n\n  isTodayUnavailable() {\n    return this.minDate > this.today || this.maxDate < this.today;\n  }\n\n  isDayDisabled(date: Date): boolean {\n    return !this.poDate.validateDateRange(date, this.minDate, this.maxDate);\n  }\n\n  private getDayColor(date: Date, type: 'background' | 'foreground'): string {\n    if (!date) return '';\n    const prefix = `po-calendar-box-${type}`;\n\n    if (date.getMonth() !== this.displayMonthNumber) {\n      const isDisabled = !this.poDate.validateDateRange(date, this.minDate, this.maxDate);\n      return isDisabled ? `${prefix}-other-month-disabled` : `${prefix}-other-month`;\n    }\n\n    if (this.range && this.selectedValue) {\n      const rangeColor = this.getRangeColor(date, prefix, type);\n      if (rangeColor) return rangeColor;\n    }\n\n    if (!this.range && this.equalsDate(date, this.today) && this.equalsDate(date, this.date)) {\n      const prefix = `po-calendar-box-${type}`;\n      return `${prefix}-today-selected`;\n    }\n\n    if (!this.range && this.equalsDate(date, this.date)) {\n      return this.getColorForDate(date, type);\n    }\n\n    if (this.equalsDate(date, this.today)) {\n      return this.getColorForToday(date, type);\n    }\n    return this.getColorForDefaultDate(date, type);\n  }\n\n  private getRangeColor(date: Date, prefix: string, type: 'background' | 'foreground'): string | void {\n    const { start, end } = this.selectedValue;\n\n    if ((start && this.equalsDate(date, start)) || (end && this.equalsDate(date, end))) {\n      return this.getColorForDate(date, type);\n    }\n\n    if (!start) return;\n\n    if (end && date > start && date < end) {\n      return this.getColorForDateRange(date, type);\n    }\n\n    if (!end && date > start && date < this.hoverValue) {\n      return `${prefix}-hover`;\n    }\n  }\n\n  getColorForDate(date: Date, type: 'background' | 'foreground') {\n    const prefix = `po-calendar-box-${type}`;\n    return this.poDate.validateDateRange(date, this.minDate, this.maxDate)\n      ? `${prefix}-selected`\n      : `${prefix}-selected-disabled`;\n  }\n\n  getColorForDefaultDate(date: Date, type: 'background' | 'foreground') {\n    const prefix = `po-calendar-box-${type}`;\n    return this.poDate.validateDateRange(date, this.minDate, this.maxDate) ? prefix : `${prefix}-disabled`;\n  }\n\n  getColorForToday(date: Date, type: 'background' | 'foreground') {\n    const prefix = `po-calendar-box-${type}`;\n    return this.poDate.validateDateRange(date, this.minDate, this.maxDate)\n      ? `${prefix}-today`\n      : `${prefix}-today-disabled`;\n  }\n\n  getColorForDateRange(date: Date, type: 'background' | 'foreground') {\n    const prefix = `po-calendar-box-${type}`;\n    return this.poDate.validateDateRange(date, this.minDate, this.maxDate)\n      ? `${prefix}-in-range`\n      : `${prefix}-in-range-disabled`;\n  }\n\n  getColorState(date: Date, prefix: string, state: string) {\n    const isValid = this.poDate.validateDateRange(date, this.minDate, this.maxDate);\n    return isValid ? `${prefix}-${state}` : `${prefix}-${state}-disabled`;\n  }\n\n  private equalsDate(d1: Date, d2: Date): boolean {\n    try {\n      return (\n        !!d1 &&\n        !!d2 &&\n        d1.getFullYear() === d2.getFullYear() &&\n        d1.getMonth() === d2.getMonth() &&\n        d1.getDate() === d2.getDate()\n      );\n    } catch {\n      return false;\n    }\n  }\n\n  private getDecadeArray(year: number) {\n    this.displayDecade = [];\n    let startYear = year;\n    if (year % 10 !== 0) {\n      while (startYear % 10 !== 0) startYear--;\n    }\n\n    this.updateDecade(startYear);\n  }\n\n  private updateDecade(startYear: number) {\n    this.displayStartDecade = startYear;\n    this.displayFinalDecade = startYear + 9;\n    this.addAllYearsInDecade(startYear);\n  }\n\n  private addAllYearsInDecade(startYear: number) {\n    for (let i = startYear; i < startYear + 10; i++) {\n      this.displayDecade.push(i);\n    }\n  }\n\n  trackByYear(index: number, year: number): number {\n    return year;\n  }\n\n  trackByMonth(index: number, month: string): number {\n    return index;\n  }\n\n  trackByDay(index: number, day: Date): string {\n    if (!day || !(day instanceof Date)) {\n      return `invalid-${index}`;\n    }\n    return `${index}:${day.getFullYear()}-${day.getMonth()}-${day.getDate()}`;\n  }\n\n  trackByWeekDay(index: number, weekDay: string): string {\n    return `${index}:${weekDay}`;\n  }\n}\n","<div class=\"po-calendar-wrapper\">\n  @if (isDayVisible) {\n    <ng-container>\n      @if (templateContext) {\n        <po-calendar-header\n          (p-previous)=\"onPreviousMonth()\"\n          (p-next)=\"onNextMonth()\"\n          [p-display-month]=\"displayMonth\"\n          [p-display-year]=\"displayYear\"\n          [p-template-context]=\"templateContext\"\n          [p-header-template]=\"headerTemplate || internalComboTemplate\"\n          [p-size]=\"size\"\n          [p-locale]=\"locale\"\n        >\n        </po-calendar-header>\n      }\n\n      <div class=\"po-calendar-content\">\n        <div class=\"po-calendar-labels\">\n          @for (weekDay of displayWeekDays; track trackByWeekDay($index, weekDay)) {\n            <div class=\"po-calendar-label\">\n              {{ weekDay }}\n            </div>\n          }\n        </div>\n\n        <div class=\"po-calendar-content-list-day\">\n          @for (day of displayDays; track trackByDay($index, day); let i = $index) {\n            <div\n              class=\"po-calendar-day\"\n              [ngClass]=\"getDayBackgroundColor(day)\"\n              (click)=\"onSelectDate(day)\"\n              (mouseenter)=\"onMouseEnter(day)\"\n              (mouseleave)=\"onMouseLeave()\"\n              (keydown)=\"onDayKeydown($event, day, i)\"\n              [tabindex]=\"getDayTabIndex(day, i)\"\n              attr-calendar\n              [attr.data-other-month]=\"day.getMonth() !== displayMonthNumber\"\n              [attr.data-day-index]=\"i\"\n            >\n              <span [ngClass]=\"getDayForegroundColor(day)\">\n                {{ day.getDate() }}\n              </span>\n            </div>\n          }\n        </div>\n      </div>\n    </ng-container>\n  }\n\n  @if (isMonthVisible) {\n    <ng-container>\n      <po-calendar-header\n        (p-previous)=\"updateYear(-1)\"\n        (p-next)=\"updateYear(1)\"\n        [p-template-context]=\"templateContext\"\n        [p-header-template]=\"headerTemplate || internalComboTemplate\"\n        [p-size]=\"size\"\n        [p-locale]=\"locale\"\n      >\n      </po-calendar-header>\n\n      <div class=\"po-calendar-content\">\n        <div class=\"po-calendar-labels\">\n          <div class=\"po-calendar-label\">\n            {{ monthLabel }}\n          </div>\n        </div>\n        <div class=\"po-calendar-content-list-month\">\n          @for (month of displayMonths; track trackByMonth($index, month); let i = $index) {\n            <div\n              class=\"po-calendar-month\"\n              [ngClass]=\"getBackgroundColor(i, displayMonthNumber)\"\n              (click)=\"onSelectMonth(displayYear, i)\"\n              attr-calendar\n            >\n              <span [ngClass]=\"getForegroundColor(i, displayMonthNumber)\">\n                {{ month }}\n              </span>\n            </div>\n          }\n        </div>\n      </div>\n    </ng-container>\n  }\n\n  @if (isYearVisible) {\n    <ng-container>\n      <po-calendar-header\n        (p-previous)=\"updateYear(-10)\"\n        (p-next)=\"updateYear(10)\"\n        [p-template-context]=\"templateContext\"\n        [p-header-template]=\"headerTemplate || internalComboTemplate\"\n        [p-size]=\"size\"\n        [p-locale]=\"locale\"\n      >\n      </po-calendar-header>\n\n      <div class=\"po-calendar-content\">\n        <div class=\"po-calendar-labels\">\n          <div class=\"po-calendar-label\">\n            {{ yearLabel }}\n          </div>\n        </div>\n\n        <div class=\"po-calendar-content-list-year\">\n          @for (year of displayDecade; track trackByYear($index, year)) {\n            <div\n              class=\"po-calendar-year\"\n              [ngClass]=\"getBackgroundColor(year, currentYear)\"\n              (click)=\"onSelectYear(year, displayMonthNumber)\"\n              attr-calendar\n            >\n              <span [ngClass]=\"getForegroundColor(year, currentYear)\">\n                {{ year }}\n              </span>\n            </div>\n          }\n        </div>\n      </div>\n    </ng-container>\n  }\n  @if (!responsive || (responsive && !hasPresets)) {\n    <po-calendar-footer\n      [p-label-clear]=\"displayToClean\"\n      [p-label-today]=\"displayToday\"\n      [p-hide-today-button]=\"hideTodayButton\"\n      [p-size]=\"size\"\n      [p-responsive]=\"responsive\"\n      [p-today-disabled]=\"isTodayUnavailable()\"\n      (p-clear)=\"onClear()\"\n      (p-select-today)=\"onSelectToday()\"\n      (p-close-calendar)=\"onFooterCloseCalendar()\"\n    ></po-calendar-footer>\n  }\n</div>\n\n<ng-template #internalComboTemplate let-combo>\n  <po-combo\n    #monthCombo\n    class=\"po-combo-first\"\n    [name]=\"'month-' + comboKey\"\n    [p-clean]=\"false\"\n    [p-remove-initial-filter]=\"true\"\n    [ngModel]=\"combo.monthIndex\"\n    [p-options]=\"combo.monthsOptions\"\n    (p-change)=\"combo.updateDate(combo.year, $event)\"\n    (p-blur)=\"combo.onComboBlur(monthCombo)\"\n    [p-size]=\"size\"\n  >\n  </po-combo>\n\n  <po-combo\n    #yearCombo\n    class=\"po-combo-last\"\n    [name]=\"'year-' + comboKey\"\n    [p-clean]=\"false\"\n    [p-remove-initial-filter]=\"true\"\n    [ngModel]=\"combo.year\"\n    [p-options]=\"combo.yearsOptions\"\n    (p-change)=\"combo.updateDate($event, combo.monthIndex)\"\n    (p-blur)=\"combo.onComboBlur(yearCombo)\"\n    [p-size]=\"size\"\n  >\n  </po-combo>\n</ng-template>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  computed,\n  DoCheck,\n  forwardRef,\n  OnChanges,\n  OnInit,\n  signal,\n  SimpleChanges,\n  inject\n} from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PoCalendarBaseComponent } from './po-calendar-base.component';\nimport { PoCalendarRangePreset } from './interfaces/po-calendar-range-preset.interface';\nimport { PO_CALENDAR_DEFAULT_RANGE_PRESETS } from './constants/po-calendar-range-presets.constant';\nimport { PoDateService } from '../../services/po-date/po-date.service';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { PoCalendarLangService } from './services';\nimport { isMobile } from '../../utils/util';\n\n/* istanbul ignore next */\nconst providers = [\n  {\n    provide: NG_VALUE_ACCESSOR,\n    // eslint-disable-next-line\n    useExisting: forwardRef(() => PoCalendarComponent),\n    multi: true\n  },\n  {\n    provide: NG_VALIDATORS,\n    // eslint-disable-next-line\n    useExisting: forwardRef(() => PoCalendarComponent),\n    multi: true\n  }\n];\n\n/**\n * @docsExtends PoCalendarBaseComponent\n *\n * @example\n *\n * <example name=\"po-calendar-basic\" title=\"PO Calendar Basic\" >\n *  <file name=\"sample-po-calendar-basic/sample-po-calendar-basic.component.html\"> </file>\n *  <file name=\"sample-po-calendar-basic/sample-po-calendar-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-calendar-range-presets\" title=\"PO Calendar - Range and Presets\" >\n *  <file name=\"sample-po-calendar-range-presets/sample-po-calendar-range-presets.component.html\"> </file>\n *  <file name=\"sample-po-calendar-range-presets/sample-po-calendar-range-presets.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-calendar-labs\" title=\"PO Calendar Labs\" >\n *  <file name=\"sample-po-calendar-labs/sample-po-calendar-labs.component.html\"> </file>\n *  <file name=\"sample-po-calendar-labs/sample-po-calendar-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-calendar-ticket-sales\" title=\"PO Calendar - Ticket Sales\" >\n *  <file name=\"sample-po-calendar-ticket-sales/sample-po-calendar-ticket-sales.component.html\"> </file>\n *  <file name=\"sample-po-calendar-ticket-sales/sample-po-calendar-ticket-sales.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-calendar',\n  templateUrl: './po-calendar.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers,\n  standalone: false\n})\nexport class PoCalendarComponent extends PoCalendarBaseComponent implements OnInit, OnChanges, DoCheck {\n  private readonly changeDetector = inject(ChangeDetectorRef);\n  private readonly poCalendarLangService = inject(PoCalendarLangService);\n\n  hoverValue: Date;\n  displayToClean: string;\n\n  private readonly _isRange = signal(false);\n  private readonly _rangePresetsValue = signal<boolean | Array<string>>(false);\n  private readonly _rangePresetOptionsValue = signal<Array<PoCalendarRangePreset> | undefined>(undefined);\n  private readonly _rangePresetsOrderValue = signal<'asc' | 'desc'>('asc');\n  private readonly _minDateValue = signal<Date | undefined>(undefined);\n  private readonly _maxDateValue = signal<Date | undefined>(undefined);\n\n  readonly effectivePresets = computed<Array<PoCalendarRangePreset>>(() => {\n    const isRange = this._isRange();\n    const rangePresets = this._rangePresetsValue();\n    const rangePresetOptions = this._rangePresetOptionsValue();\n    const rangePresetsOrder = this._rangePresetsOrderValue();\n    const minDate = this._minDateValue();\n    const maxDate = this._maxDateValue();\n\n    if (!isRange) {\n      return [];\n    }\n\n    const hasCustomPresets = rangePresetOptions !== undefined && rangePresetOptions.length > 0;\n    let defaultPresets: Array<PoCalendarRangePreset> = [];\n\n    if (Array.isArray(rangePresets)) {\n      const allowedKeys = new Set(rangePresets.map(k => k.toLowerCase()));\n      allowedKeys.add('today');\n      defaultPresets = PO_CALENDAR_DEFAULT_RANGE_PRESETS.filter(p => allowedKeys.has(p.label.toLowerCase()));\n    } else if (rangePresets) {\n      defaultPresets = [...PO_CALENDAR_DEFAULT_RANGE_PRESETS];\n    }\n\n    const customPresets = hasCustomPresets ? rangePresetOptions : [];\n    const combined = [...defaultPresets, ...customPresets];\n\n    // Regra: o preset \"today\" é obrigatório e deve estar presente mesmo com apenas presets customizados\n    if (combined.length > 0 && !combined.some(p => p.label.toLowerCase() === 'today')) {\n      const todayPreset = PO_CALENDAR_DEFAULT_RANGE_PRESETS.find(p => p.label === 'today');\n      if (todayPreset) {\n        combined.unshift(todayPreset);\n      }\n    }\n\n    if (combined.length === 0) {\n      return [];\n    }\n\n    const sorted = this.sortPresetsByTemporality(combined, rangePresetsOrder);\n    return this.enrichPresetsWithDisabledState(sorted, minDate, maxDate);\n  });\n\n  constructor() {\n    const poDate = inject(PoDateService);\n    const languageService = inject(PoLanguageService);\n\n    super(poDate, languageService);\n  }\n\n  get isResponsive() {\n    return isMobile();\n  }\n\n  ngOnInit() {\n    this.setActivateDate();\n    this.displayToClean = this.poCalendarLangService.getToCleanLabel();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.minDate || changes.maxDate) {\n      this.setActivateDate();\n    }\n  }\n\n  ngDoCheck(): void {\n    this._isRange.set(this.isRange);\n    this._rangePresetsValue.set(this.rangePresets);\n    this._rangePresetOptionsValue.set(this.rangePresetOptions);\n    this._rangePresetsOrderValue.set(this.rangePresetsOrder);\n    this._minDateValue.set(this.minDate);\n    this._maxDateValue.set(this.maxDate);\n  }\n\n  getActivateDate(partType) {\n    if (this.isRange && this.activateDate) {\n      return this.activateDate.start;\n    } else {\n      return this.activateDate;\n    }\n  }\n\n  getValue(partType) {\n    if (this.isRange && this.value) {\n      return this.value.start;\n    } else {\n      return this.value;\n    }\n  }\n\n  onSelectDate(selectedDate, partType?) {\n    this.selectedPresetLabel = null;\n\n    if (selectedDate === '' || selectedDate === undefined) {\n      this.value = null;\n      this.updateModel('');\n      this.change.emit('');\n      this.changeDetector.markForCheck();\n      return;\n    }\n\n    let newValue;\n\n    if (this.isRange) {\n      newValue = this.getValueFromSelectedDate(selectedDate);\n      this.activateDate = { start: newValue.start, end: newValue.end || newValue.start };\n    } else {\n      newValue = selectedDate;\n      this.setActivateDate(selectedDate);\n    }\n\n    this.value = newValue;\n    const newModel = this.convertDateToISO(this.value);\n    this.updateModel(newModel);\n    this.change.emit(newModel);\n  }\n\n  onHoverDate(date) {\n    this.hoverValue = date;\n  }\n\n  onHeaderChange({ month, year }, partType) {\n    this.updateActivateDateFromHeaderChange(month, year, partType);\n\n    this.changeMonthYear.emit({ month, year });\n  }\n\n  onCloseCalendar() {\n    this.change.emit(this.value);\n    this.close.emit();\n  }\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  registerOnTouched(func: any): void {\n    this.onTouched = func;\n  }\n\n  validate(c: AbstractControl): { [key: string]: any } {\n    return null;\n  }\n\n  writeValue(value: any) {\n    if (value) {\n      this.writeDate(value);\n    } else {\n      this.value = null;\n    }\n\n    const activateDate = this.getValidateStartDate(value);\n    this.setActivateDate(activateDate);\n\n    this.changeDetector.markForCheck();\n  }\n\n  onPresetSelected(event: { label: string; start: Date; end: Date }): void {\n    const start = this.clampDate(event.start, this.minDate, this.maxDate);\n    const end = this.clampDate(event.end, this.minDate, this.maxDate);\n\n    if (start > end) {\n      return;\n    }\n\n    this.selectedPresetLabel = event.label;\n    this.value = { start, end };\n    this.activateDate = { start, end };\n\n    const newModel = this.convertDateToISO(this.value);\n    this.updateModel(newModel);\n    this.change.emit(newModel);\n    this.changeDetector.markForCheck();\n  }\n\n  private sortPresetsByTemporality(\n    presets: Array<PoCalendarRangePreset>,\n    order?: 'asc' | 'desc'\n  ): Array<PoCalendarRangePreset> {\n    const today = new Date();\n    const todayStart = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0, 0);\n    const todayTime = todayStart.getTime();\n    const getGroup = (startDate: Date): number => {\n      const startTime = new Date(\n        startDate.getFullYear(),\n        startDate.getMonth(),\n        startDate.getDate(),\n        0,\n        0,\n        0,\n        0\n      ).getTime();\n      if (startTime > todayTime) {\n        return 0; // Futuro\n      }\n      if (startTime < todayTime) {\n        return 2; // Passado\n      }\n      return 1; // Presente\n    };\n\n    // Ordena em ASC: Futuro → Presente → Passado, proximidade crescente dentro de cada grupo\n    const sorted = [...presets].sort((a, b) => {\n      const rangeA = a.dateRange(today);\n      const rangeB = b.dateRange(today);\n      const startA = new Date(rangeA.start);\n      const startB = new Date(rangeB.start);\n      const groupA = getGroup(startA);\n      const groupB = getGroup(startB);\n      if (groupA !== groupB) {\n        return groupA - groupB;\n      }\n      const distA = Math.abs(startA.getTime() - todayTime);\n      const distB = Math.abs(startB.getTime() - todayTime);\n      return distA - distB;\n    });\n\n    const resolvedOrder = order ?? this.rangePresetsOrder;\n    // DESC: inverte completamente a lista (Passado → Presente → Futuro, mais distante primeiro)\n    return resolvedOrder === 'desc' ? sorted.reverse() : sorted;\n  }\n\n  private normalizeDate(date: Date): Date {\n    return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n  }\n\n  private enrichPresetsWithDisabledState(\n    presets: Array<PoCalendarRangePreset>,\n    minDateInput?: Date,\n    maxDateInput?: Date\n  ): Array<PoCalendarRangePreset> {\n    const today = new Date();\n\n    const resolvedMinDate = minDateInput ?? this.minDate;\n    const resolvedMaxDate = maxDateInput ?? this.maxDate;\n\n    const minDate = resolvedMinDate ? this.normalizeDate(resolvedMinDate) : undefined;\n    const maxDate = resolvedMaxDate ? this.normalizeDate(resolvedMaxDate) : undefined;\n\n    return presets.map(preset => {\n      const range = preset.dateRange(today);\n\n      const start = this.normalizeDate(new Date(range.start));\n      const end = this.normalizeDate(new Date(range.end));\n\n      const isBeforeMin = minDate ? start < minDate : false;\n      const isAfterMax = maxDate ? end > maxDate : false;\n\n      const isDisabled = isBeforeMin || isAfterMax;\n\n      return { ...preset, isDisabled };\n    });\n  }\n\n  private clampDate(date: Date, min?: Date, max?: Date): Date {\n    let result = new Date(date);\n    if (min && result < min) {\n      result = new Date(min);\n    }\n    if (max && result > max) {\n      result = new Date(max);\n    }\n    return result;\n  }\n\n  private getValidateStartDate(value) {\n    if (this.isRange) {\n      return value?.start || null;\n    } else if (value instanceof Date || typeof value === 'string') {\n      return value;\n    }\n\n    return null;\n  }\n\n  private getValueFromSelectedDate(selectedDate: Date): { start: Date; end?: Date } {\n    if (!this.value?.start || this.value.start > selectedDate || (this.value.end && this.value.start)) {\n      return { start: new Date(selectedDate), end: null };\n    }\n\n    return { start: new Date(this.value.start), end: new Date(selectedDate) };\n  }\n\n  private updateActivateDateFromHeaderChange(month: number, year: number, partType: string): void {\n    if (!this.isRange || !this.activateDate) {\n      return;\n    }\n\n    if (partType === 'start') {\n      const currentStart = this.activateDate.start instanceof Date ? this.activateDate.start : new Date();\n      const newStart = this.buildDateWithMonthYear(currentStart, month - 1, year);\n\n      this.activateDate = { start: newStart, end: this.activateDate.end };\n      return;\n    }\n\n    if (partType === 'end') {\n      const currentEnd = this.activateDate.end instanceof Date ? this.activateDate.end : new Date();\n      const newEnd = this.buildDateWithMonthYear(currentEnd, month - 1, year);\n\n      this.activateDate = { start: this.activateDate.start, end: newEnd };\n    }\n  }\n\n  private buildDateWithMonthYear(baseDate: Date, month: number, year: number): Date {\n    const day = baseDate instanceof Date ? baseDate.getDate() : 1;\n    const daysInTargetMonth = new Date(year, month + 1, 0).getDate();\n    return new Date(year, month, Math.min(day, daysInTargetMonth));\n  }\n\n  private convertDateToISO(date) {\n    if (this.isRange) {\n      const start = date?.start instanceof Date ? this.poDate.convertDateToISO(date.start) : null;\n      const end = date?.end instanceof Date ? this.poDate.convertDateToISO(date.end) : null;\n\n      return { start, end };\n    } else {\n      return this.poDate.convertDateToISO(date);\n    }\n  }\n\n  private convertDateFromIso(stringDate: string) {\n    if (stringDate && typeof stringDate === 'string') {\n      const { year, month, day } = this.poDate.getDateFromIso(stringDate);\n      const date = new Date(year, month - 1, day);\n      this.poDate.setYearFrom0To100(date, year);\n\n      return date;\n    }\n\n    return null;\n  }\n\n  private updateModel(value) {\n    if (this.propagateChange) {\n      this.propagateChange(value);\n    }\n  }\n\n  private writeDate(value: any) {\n    if (this.isRange) {\n      const start = value?.start;\n      const end = value?.end;\n\n      const newStart = start instanceof Date ? new Date(start) : this.convertDateFromIso(start);\n      const newEnd = end instanceof Date ? new Date(end) : this.convertDateFromIso(end);\n\n      this.value = { start: newStart, end: newEnd };\n    } else {\n      this.value = value instanceof Date ? new Date(value) : this.convertDateFromIso(value);\n    }\n  }\n}\n","@if (isRange) {\n  <div\n    class=\"po-calendar\"\n    [class.po-calendar-with-presets]=\"effectivePresets().length > 0\"\n    [class.po-calendar-mobile]=\"isResponsive || widthWithPresets\"\n    [class.po-calendar-responsive]=\"!isResponsive && widthWithPresets\"\n  >\n    @if (effectivePresets().length > 0 && !isResponsive && !widthWithPresets) {\n      <po-calendar-preset-list\n        [p-presets]=\"effectivePresets()\"\n        [p-locale]=\"locale\"\n        [p-selected-preset]=\"selectedPresetLabel\"\n        [p-size]=\"size\"\n        (p-select-preset)=\"onPresetSelected($event)\"\n        (p-close-calendar)=\"onCloseCalendar()\"\n      ></po-calendar-preset-list>\n    }\n    <ng-container *ngTemplateOutlet=\"calendarWrapper; context: { partType: 'start' }\"></ng-container>\n    @if (effectivePresets().length > 0 && (isResponsive || widthWithPresets)) {\n      <po-calendar-preset-list\n        [p-presets]=\"effectivePresets()\"\n        [p-locale]=\"locale\"\n        [p-selected-preset]=\"selectedPresetLabel\"\n        [p-size]=\"size\"\n        [p-responsive]=\"true\"\n        (p-select-preset)=\"onPresetSelected($event)\"\n        (p-close-calendar)=\"onCloseCalendar()\"\n      ></po-calendar-preset-list>\n\n      <po-calendar-footer\n        [p-size]=\"size\"\n        [p-responsive]=\"isResponsive\"\n        [p-hide-today-button]=\"true\"\n        [p-label-clear]=\"displayToClean\"\n        (p-clear)=\"onSelectDate($event)\"\n        (p-close-calendar)=\"onCloseCalendar()\"\n      ></po-calendar-footer>\n    }\n  </div>\n} @else {\n  <div class=\"po-calendar\">\n    <ng-container *ngTemplateOutlet=\"calendarWrapper; context: { partType: 'single' }\"></ng-container>\n  </div>\n}\n\n<ng-template #calendarWrapper let-partType=\"partType\">\n  <po-calendar-wrapper\n    [p-value]=\"getValue(partType)\"\n    [p-activate-date]=\"getActivateDate(partType)\"\n    [p-locale]=\"locale\"\n    [p-min-date]=\"minDate\"\n    [p-presets]=\"effectivePresets().length > 0\"\n    [p-max-date]=\"maxDate\"\n    [p-part-type]=\"partType\"\n    [p-range]=\"isRange\"\n    [p-responsive]=\"isResponsive || widthWithPresets\"\n    [p-selected-value]=\"value\"\n    [p-hover-value]=\"hoverValue\"\n    [p-hide-today-button]=\"effectivePresets().length > 0\"\n    (p-header-change)=\"onHeaderChange($event, partType)\"\n    (p-select-date)=\"onSelectDate($event, partType)\"\n    (p-hover-date)=\"onHoverDate($event)\"\n    (p-close-calendar)=\"onCloseCalendar()\"\n    [p-header-template]=\"headerTemplate\"\n    [p-size]=\"size\"\n  >\n  </po-calendar-wrapper>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { PoIconModule } from '../po-icon';\nimport { PoComboModule } from '../po-field/po-combo/po-combo.module';\nimport { PoButtonModule } from './../po-button/po-button.module';\nimport { PoCalendarComponent } from './po-calendar.component';\nimport { PoCalendarFooterComponent } from './po-calendar-footer/po-calendar-footer.component';\nimport { PoCalendarHeaderComponent } from './po-calendar-header/po-calendar-header.component';\nimport { PoCalendarPresetListComponent } from './po-calendar-preset-list/po-calendar-preset-list.component';\nimport { PoCalendarWrapperComponent } from './po-calendar-wrapper/po-calendar-wrapper.component';\n\n/**\n * @description\n * Módulo do componente `po-calendar`.\n */\n@NgModule({\n  imports: [CommonModule, FormsModule, PoIconModule, PoComboModule, PoButtonModule],\n  declarations: [\n    PoCalendarComponent,\n    PoCalendarFooterComponent,\n    PoCalendarHeaderComponent,\n    PoCalendarPresetListComponent,\n    PoCalendarWrapperComponent\n  ],\n  exports: [PoCalendarComponent]\n})\nexport class PoCalendarModule {}\n","// Array de cores para gráficos definido pela equipe de UX PO.\nexport const PoDefaultColors = [\n  ['#29B6C5'],\n  ['#0C6C94', '#29B6C5'],\n  ['#0C6C94', '#29B6C5', '#C9ECF0'],\n  ['#0C6C94', '#0B92B4', '#29B6C5', '#94DAE2'],\n  ['#0C6C94', '#0B92B4', '#29B6C5', '#94DAE2', '#C9ECF0'],\n  ['#0C6C94', '#00A5C5', '#0082A8', '#31628D', '#364473', '#32285C'],\n  ['#0C6C94', '#00AACB', '#018DAE', '#277099', '#325783', '#35426E', '#32285D'],\n  ['#0C6C94', '#00AFCE', '#0194B6', '#117FA2', '#0088AC', '#23789F', '#2B6992', '#32285C'],\n  ['#0C6C94', '#00BAD5', '#00A7C7', '#0197B8', '#0088AC', '#23789F', '#2B6992', '#315C87', '#32285C'],\n  ['#0C6C94', '#00BAD5', '#00A7C7', '#0197B8', '#0088AC', '#23789F', '#2B6992', '#315C87', '#364E7C', '#32285C'],\n  [\n    '#0C6C94',\n    '#00BAD5',\n    '#00A7C7',\n    '#0197B8',\n    '#0088AC',\n    '#23789F',\n    '#2B6992',\n    '#315C87',\n    '#364E7C',\n    '#36436F',\n    '#32285C'\n  ],\n  [\n    '#0C6C94',\n    '#00BAD5',\n    '#00A7C7',\n    '#0197B8',\n    '#0088AC',\n    '#23789F',\n    '#2B6992',\n    '#315C87',\n    '#364E7C',\n    '#36436F',\n    '#333565',\n    '#32285C'\n  ]\n];\n\n// Cores que será utilizado texto preto\nexport const PoDefaultColorsTextBlack = ['#94DAE2', '#C9ECF0'];\n","import { Injectable } from '@angular/core';\n\nimport { PoColorPaletteEnum } from '../../enums/po-color-palette.enum';\nimport { PoDefaultColors } from './po-colors.constant';\n\nconst poColorPalette = (<any>Object).values(PoColorPaletteEnum);\n\ninterface PoColorArgs {\n  color?: string;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoColorService {\n  defaultColors: Array<string> = [];\n  overlayColors: Array<string> = [];\n  private readonly colorBlack = '#000000';\n\n  /**\n   * Avalia a propriedade `color` na lista de items passada. Caso sim, trata se é decimal ou string `po-color`. Caso não haja, retorna a cor default.\n   *\n   * @param data\n   */\n  getColors<T extends PoColorArgs>(data: Array<T>, categoricalColors = false, overlayColors = false): Array<T> {\n    this.verifyIfHasColorProperty<T>(data, categoricalColors, overlayColors);\n\n    return data.map((dataItem, index) => {\n      if (dataItem.color) {\n        dataItem.color = this.verifyIfIsPoColorPalette(dataItem.color);\n        if (overlayColors) {\n          const overlayColor = this.verifyIfIsPoColorPalette(dataItem.color);\n          return { ...dataItem, overlayColor, isNotTokenColor: true };\n        }\n\n        return dataItem;\n      }\n\n      const color = this.defaultColors[index] === undefined ? this.colorBlack : this.defaultColors[index];\n      if (overlayColors) {\n        const overlayColor = this.overlayColors[index];\n        return { ...dataItem, color, overlayColor };\n      }\n\n      return { ...dataItem, color };\n    });\n  }\n\n  private verifyIfHasColorProperty<T extends PoColorArgs>(\n    data: Array<T>,\n    categoricalColors = false,\n    overlayColors = false\n  ): void {\n    const hasColorProperty = data.every(dataItem => dataItem.hasOwnProperty('color') && dataItem.color?.length > 0);\n    if (!hasColorProperty) {\n      this.defaultColors = categoricalColors\n        ? this.getDefaultCategoricalColors(data.length)\n        : this.getDefaultColors(data.length);\n      if (overlayColors) {\n        this.overlayColors = this.getDefaultCategoricalColors(data.length, true);\n      }\n    }\n  }\n\n  private verifyIfIsPoColorPalette(color: string): string {\n    if (poColorPalette.includes(color)) {\n      return `po-${color}`;\n    }\n    return color;\n  }\n\n  private getDefaultColors(length: number): Array<string> {\n    if (length === 1) {\n      return PoDefaultColors[0];\n    }\n\n    const colorsLength = PoDefaultColors.length;\n\n    if (length > colorsLength) {\n      const quantityDuplicates = length / colorsLength;\n      let colors = PoDefaultColors[colorsLength - 1];\n\n      for (let i = 0; i <= quantityDuplicates; i++) {\n        colors = colors.concat(PoDefaultColors[colorsLength]);\n      }\n\n      return colors;\n    }\n\n    return PoDefaultColors[length - 1];\n  }\n\n  private getDefaultCategoricalColors(length: number, isOverlay = false): Array<string> {\n    const maxTokens = 8;\n    const colors: Array<string> = [];\n\n    for (let i = 1; i <= Math.min(length, maxTokens); i++) {\n      isOverlay\n        ? colors.push(this.getCSSVariable(`--categorical-overlay-0${i}`))\n        : colors.push(this.getCSSVariable(`--categorical-0${i}`));\n    }\n\n    while (colors.length < length) {\n      isOverlay ? colors.push(this.defaultColors[length - 1]) : colors.push(this.getRandomColor());\n    }\n\n    return colors;\n  }\n\n  private getRandomColor(): string {\n    const array = new Uint32Array(1);\n    crypto.getRandomValues(array);\n    return `#${(array[0] & 0x00ffffff).toString(16).padStart(6, '0')}`;\n  }\n\n  private getCSSVariable(variable: string): string {\n    return getComputedStyle(document.documentElement).getPropertyValue(variable).trim();\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { PoColorService } from './po-color.service';\n\n/**\n * @description\n *\n * Módulo do serviço `po-color`.\n */\n@NgModule({\n  providers: [PoColorService],\n  bootstrap: []\n})\nexport class PoColorModule {}\n","/**\n * @usedBy PoChartComponent\n *\n * @description\n *\n * *Enum* `PoChartLabelFormat` para especificação dos tipos de formatação do eixo de valor no gráfico.\n */\nexport enum PoChartLabelFormat {\n  /**\n   * Os valores serão exibidos no formato numérico com duas casas decimais. Equivalente ao formato `'1.2-2'` da [DecimalPipe](https://angular.io/api/common/DecimalPipe).\n   */\n  Number = 'number',\n\n  /**\n   * Os valores serão exibidos com o símbolo monetário de acordo com a formatação padrão da aplicação, isto é, o valor do token [DEFAULT_CURRENCY_CODE](https://angular.dev/api/core/DEFAULT_CURRENCY_CODE). Para adequar ao padrão numérico brasileiro, é necessário configurar o [LOCALE_ID](https://angular.dev/api/core/LOCALE_ID) da aplicação. A configuração pode ser feita da seguinte forma:\n   * ```\n   * import { LOCALE_ID } from '@angular/core';\n   * import { registerLocaleData } from '@angular/common';\n   * import localePt from '@angular/common/locales/pt';\n   *\n   * registerLocaleData(localePt);\n   *\n   * @NgModule({\n   *   providers: [\n   *     { provide: LOCALE_ID, useValue: 'pt-BR' },\n   *     { provide: DEFAULT_CURRENCY_CODE, useValue: 'BRL' }\n   *   ]\n   * })\n   * export class AppModule { }\n   * ```\n   */\n  Currency = 'currency'\n}\n","import { PoChartLiterals } from './po-chart-literals.interface';\n\nexport const poChartLiteralsDefault = {\n  en: <PoChartLiterals>{\n    downloadCSV: 'Download CSV',\n    exportCSV: 'Export CSV',\n    exportJPG: 'Export JPG',\n    exportPNG: 'Export PNG',\n    value: 'Value',\n    item: 'Item',\n    serie: 'Series',\n    category: 'Category'\n  },\n  es: <PoChartLiterals>{\n    downloadCSV: 'Descargar CSV',\n    exportCSV: 'Exportar CSV',\n    exportJPG: 'Exportar JPG',\n    exportPNG: 'Exportar PNG',\n    value: 'Valor',\n    item: 'Artículo',\n    serie: 'Serie',\n    category: 'Categoría'\n  },\n  pt: <PoChartLiterals>{\n    downloadCSV: 'Baixar CSV',\n    exportCSV: 'Exportar CSV',\n    exportJPG: 'Exportar JPG',\n    exportPNG: 'Exportar PNG',\n    value: 'Valor',\n    item: 'Item',\n    serie: 'Série',\n    category: 'Categoria'\n  },\n  ru: <PoChartLiterals>{\n    downloadCSV: 'Скачать CSV',\n    exportCSV: 'Экспортировать CSV',\n    exportJPG: 'Экспортировать JPG',\n    exportPNG: 'Экспортировать PNG',\n    value: 'Ценить',\n    item: 'Пункт',\n    serie: 'Ряд',\n    category: 'Категория'\n  }\n};\n","/**\n * @usedBy PoChartComponent\n *\n * @description\n *\n * *Enum* `PoChartType` para especificação dos tipos de gráficos.\n */\nexport enum PoChartType {\n  /**\n   * Tipo de gráfico que exibe os dados de modo quantitativo, utilizando linhas contínuas demarcadas por pontos para cada valor de série definido.\n   * Similar ao gráfico de linha, diferencia-se pela área localizada abaixo da linha das séries, que é preenchida com cores para um destaque explícita da evolução e mudança dos dados.\n   */\n  Area = 'area',\n\n  /**\n   * Exibe os dados em formato de rosca, dividindo em partes proporcionais.\n   */\n  Donut = 'donut',\n\n  /**\n   * Exibe os dados em formato circular, dividindo proporcionalmente em fatias.\n   */\n  Pie = 'pie',\n\n  /**\n   * Gráfico que mostra os dados de modo linear e contínuo. É útil, por exemplo, para fazer comparações de tendência durante determinado período.\n   * Pode ser utilizado em conjunto com gráficos dos tipos `column` e `area`, definindo-se o tipo através da propriedade `PoChartSerie.type`.\n   */\n  Line = 'line',\n\n  /**\n   * Gráfico que exibe os dados em forma de barras verticais e sua extensão varia de acordo com seus valores. É comumente usado como comparativo entre diversas séries.\n   * As séries são exibidas lado-a-lado, com um pequeno espaço entre elas.\n   */\n  Column = 'column',\n\n  /**\n   * Gráfico que exibe os dados em forma de barras horizontais e sua extensão varia de acordo com seus valores. É comumente usado como comparativo de séries e categorias.\n   */\n  Bar = 'bar',\n\n  /**\n   * Gráfico que provê a representação de um valor através de um arco. Possui dois tipos de tratamentos:\n   * - É possível demonstrar um dado percentual simples em conjunto com uma descrição resumida em seu interior;\n   * - Para um demonstrativo mais elaborado, consegue-se definir alcances em cores, um breve texto descritivo e um ponteiro indicando o valor desejado.\n   */\n  Gauge = 'gauge',\n\n  /**\n   * Tipo de gráfico utilizado para visualizar e comparar o desempenho de diferentes itens em múltiplas categorias.\n   */\n  Radar = 'radar'\n}\n","import { Directive, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { poChartLiteralsDefault } from '../po-chart/interfaces/po-chart-literals-default.interface';\nimport { PoChartDataLabel } from '../po-chart/interfaces/po-chart-serie-data-label.interface';\nimport { PoChartLiterals } from '../po-chart/interfaces/po-chart-literals.interface';\nimport { PoChartRadarOptions } from './interfaces/po-chart-radar-options.interface';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { PoChartOptions } from '../po-chart/interfaces/po-chart-options.interface';\nimport { poLocaleDefault } from '../../services/po-language/po-language.constant';\nimport { PoChartSerie } from '../po-chart/interfaces/po-chart-serie.interface';\nimport { PoChartType } from '../po-chart/enums/po-chart-type.enum';\nimport { PoPopupAction } from '../po-popup';\n\nconst poChartMinHeight = 200;\nconst poChartDefaultHeight = 400;\n\n/**\n * @description\n *\n * O `po-chart` é um componente para renderização de dados através de gráficos, com isso facilitando a compreensão e tornando a\n * visualização destes dados mais agradável.\n *\n * Através de suas principais propriedades é possível definir atributos, tais como tipo de gráfico, altura, título, cores customizadas, opções para os eixos, entre outros.\n *\n * O componente permite utilizar em conjunto séries do tipo linha e coluna.\n *\n * Além disso, também é possível definir uma ação que será executada ao clicar em determinado elemento do gráfico\n * e outra que será executada ao passar o *mouse* sobre o elemento.\n *\n * #### Guia de uso para Gráficos\n *\n * > Veja nosso [guia de uso para gráficos](/guides/guide-charts) para auxiliar na construção do seu gráfico,\n * informando em qual caso utilizar, o que devemos evitar e boas práticas relacionada a cores.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                              | Descrição                                                               | Valor Padrão                                      |\n * |------------------------------------------|-------------------------------------------------------------------------|---------------------------------------------------|\n * | **Chart (po-chart)**                     |                                                                         |                                                   |\n * | `--background-color-grid`                | Cor de background dos gráficos                                          | `var(--color-neutral-light-00)`                   |\n * | `--color-description-chart`              | Cor da descrição dos gráficos                                           | `var(--color-neutral-dark-70)`                    |\n * | `--font-family-description-chart`        | Fonte da descrição dos gráficos                                         | `var(--font-family-theme)`                        |\n * | `--font-size-description-chart`          | Tamanho da fonte da descrição dos gráficos                              | `var(--font-size-sm)`                             |\n * | `--font-weight-description-chart`        | Peso da fonte da descrição dos gráficos                                 | `var(--font-weight-normal)`                       |\n * | **Header (po-chart .po-chart-header )**  |                                                                         |                                                   |\n * | `--background-color`                     | Cor de background do cabeçalho                                          | `var(--color-neutral-light-00)`                   |\n * | `--color`                                | Cor da fonte do cabeçalho                                               | `var(--color-neutral-dark-70)`                    |\n * | `--font-family`                          | Família tipográfica usada                                               | `var(--font-family-theme)`                        |\n * | `--font-size-title`                      | Tamanho da fonte                                                        | `var(--font-size-default)`                        |\n * | `--font-size-icons`                      | Tamanho dos ícones                                                      | `var(--font-size-md)`                             |\n * | `--font-weight`                          | Peso da fonte                                                           | `var(--font-weight-bold)`                         |\n * | **Chart (po-chart .po-chart)**           |                                                                         |                                                   |\n * | `--color-grid`                           | Cor da linha dos gráficos que possuem eixo                              | `var(--color-neutral-light-20)`                   |\n * | `--font-family-grid`                     | Família tipográfica usada nos valores dos eixos                         | `var(--font-family-theme)`                        |\n * | `--font-size-grid`                       | Tamanho da fonte usada nos valores dos eixos                            | `var(--font-size-xs)`                             |\n * | `--font-weight-grid`                     | Peso da fonte usada nos valores dos eixos                               | `var(--font-weight-normal)`                       |\n * | `--color-legend`                         | Cor da fonte da legenda                                                 | `var(--color-neutral-dark-70)`                    |\n * | `--border-radius-bar`                    | Tamanho da borda nos graficos `Bar` e `Column`                          | `var(--border-radius-none)`                       |\n * | `--border-color`                         | Cor da borda do gráfico nos Gráficos `Donut` e `Pie`                    | `var(--color-neutral-light-00)`                   |\n * | `--color-hightlight-value`               | Cor do valor de destaque nos Gráficos `Donut` e `Gauge`                 | `var(--color-neutral-dark-70)`                    |\n * | `--font-family-hightlight-value`         | Família tipográfica do valor de destaque nos Gráficos `Donut` e `Gauge` | `var(--font-family-theme)`                        |\n * | `--font-weight-hightlight-value`         | Peso da fonte do valor de destaque nos Gráficos `Donut` e `Gauge`       | `var(--font-weight-bold)`                         |\n * | `--color-base-gauge`                     | Cor da base do gráfico `Gauge`                                          | `var(--color-neutral-light-20)`                   |\n * | `--color-gauge-pointer-color`            | Cor do ponteiro do gráfico `Gauge`                                      | `var(--color-neutral-dark-70)`                    |\n * | `--color-chart-line-point-fill`          | Cor de dentro do círculo dos gráficos `Line` e `Area`                   | `var(--color-neutral-light-00)`                   |\n * | `--border-color-radar`                   | Cor do eixo da grid do gráfico `Radar`                                  | `var(--color-neutral-light-30)`                   |\n * | `--color-background-zebra`               | Cor das áreas alternadas (efeito zebrado) da grid do gráfico `Radar`    | `var(--color-neutral-light-10)`                   |\n * | `--color-background-line`                | Cor das áreas entre as faixas zebradas da grade do `Radar`              | `none`                                            |\n * | **Wrapper (.po-chart-container-gauge)**  |                                                                         |                                                   |\n * | `--background-color-container-gauge`     | Cor de background do container do gauge                                 | `var(--color-neutral-light-00)`                   |\n */\n@Directive()\nexport abstract class PoChartBaseComponent implements OnInit {\n  private _literals?: PoChartLiterals;\n  private setHeightGauge = false;\n  private readonly language: string;\n\n  @Input('t-id') id: string = 'myChart';\n\n  /** Define o título do gráfico. */\n  @Input('p-title') title?: string;\n\n  /**\n   * @description\n   *\n   * Define os elementos do gráfico que serão criados dinamicamente.\n   */\n  @Input('p-series') series: Array<PoChartSerie>;\n\n  /**\n   * @description\n   *\n   * Define o valor do gráfico do tipo `Gauge` quando utliza as propriedades `From` `To`.\n   */\n  @Input('p-value-gauge-multiple') valueGaugeMultiple?: number;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define os valores utilizados na construção das categorias do gráfico.\n   *\n   * Para gráficos dos tipos *bar*, *area*, *column* e *line*, representa os nomes das categorias exibidas no eixo.\n   *\n   * Para gráficos do tipo *radar*, representa a configuração dos indicadores, formato (shape), áreas de divisão (splitArea)\n   * e demais opções específicas do gráfico `Radar`.\n   *\n   * > Caso nenhum valor seja informado, será utilizado um hífen como categoria\n   *   correspondente para cada série.\n   *\n   * > Gráficos do tipo bar dimensionam sua área considerando a largura do maior texto\n   *   da categoria, sendo recomendável utilizar rótulos curtos para facilitar a leitura.\n   */\n  @Input('p-categories') categories?: Array<string> | PoChartRadarOptions;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Essa propriedade permite que o desenvolvedor adicione ações customizadas no popup do header, oferecendo mais flexibilidade e controle sobre as interações do componente.\n   */\n  @Input('p-custom-actions') customActions?: Array<PoPopupAction>;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com as configurações usadas no `po-chart`.\n   *\n   * É possível, por exemplo, definir as configurações de exibição das legendas,\n   * configurar os eixos(*axis*) para os gráficos dos tipos `area`, `line`, `column`, `bar` e `radar` da seguinte forma:\n   *\n   * ```\n   *  chartOptions: PoChartOptions = {\n   *    legend: true,\n   *    axis: {\n   *      minRange: 0,\n   *      maxRange: 100,\n   *      gridLines: 5,\n   *    },\n   *  };\n   * ```\n   */\n  @Input('p-options') options?: PoChartOptions;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite configurar as propriedades de exibição dos rótulos das séries no gráfico.\n   *\n   * Essa configuração possibilita fixar os valores das séries diretamente no gráfico, alterando o comportamento visual:\n   * - Os valores das séries permanecem visíveis, sem a necessidade de hover.\n   * - O *tooltip* não será exibido.\n   * - Os marcadores (*bullets*) terão seu estilo ajustado.\n   * - As outras séries ficarão com opacidade reduzida ao passar o mouse sobre a série ativa.\n   *\n   * > Disponível para gráficos do tipo `line` e `radar`.\n   *\n   * #### Exemplo de utilização:\n   * ```typescript\n   * dataLabel: PoChartDataLabel = {\n   *   fixed: true,\n   * };\n   * ```\n   */\n  @Input('p-data-label') dataLabel?: PoChartDataLabel;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a altura do gráfico em px.\n   *\n   * > No caso do tipo `Gauge`, o valor padrão é `300` e esse é seu valor minimo aceito. Nos outros tipos, o valor mínimo aceito nesta propriedade é 200.\n   *\n   * @default `400`\n   */\n  @Input('p-height')\n  set height(value: number) {\n    let heightGauge = null;\n    this.setHeightGauge = true;\n    if (this.type === PoChartType.Gauge) {\n      heightGauge = 300;\n    }\n    this._height = Math.max(value ?? heightGauge ?? poChartDefaultHeight, heightGauge ?? poChartMinHeight);\n  }\n\n  get height(): number {\n    return this._height;\n  }\n\n  private _height: number = poChartDefaultHeight;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tipo de gráfico.\n   *\n   * É possível também combinar gráficos dos tipos linha e coluna. Para isso, opte pela declaração de `type` conforme a interface `PoChartSerie`.\n   *\n   * > Note que, se houver declaração de tipo de gráfico tanto em `p-type` quanto em `PochartSerie.type`, o valor `{ type }` da primeira série anulará o valor definido em `p-type`.\n   *\n   * Se não passado valor, o padrão será relativo à primeira série passada em `p-series`:\n   * - Se `p-series = [{ data: [1,2,3] }]`: será `PoChartType.Column`.\n   * - Se `p-series = [{ data: 1 }]`: será `PoChartType.Pie`.\n   *\n   * > Veja os valores válidos no *enum* `PoChartType`.\n   */\n  @Input('p-type') type: PoChartType;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com as literais usadas no `po-chart`.\n   *\n   * Para utilizar basta passar a literal que deseja customizar:\n   *\n   * ```\n   *  const customLiterals: PoChartLiterals = {\n   *    downloadCSV: 'Obter CSV',\n   *  };\n   * ```\n   *\n   * E para carregar a literal customizada, basta apenas passar o objeto para o componente.\n   *\n   * ```\n   * <po-chart\n   *   [p-literals]=\"customLiterals\">\n   * </po-chart>\n   * ```\n   *\n   * > O objeto padrão de literais será traduzido de acordo com o idioma do\n   * [`PoI18nService`](/documentation/po-i18n) ou do browser.\n   */\n  @Input('p-literals') set literals(value: PoChartLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poChartLiteralsDefault[poLocaleDefault],\n        ...poChartLiteralsDefault[this.language],\n        ...value\n      };\n    } else {\n      this._literals = poChartLiteralsDefault[this.language];\n    }\n  }\n\n  get literals() {\n    return this._literals || poChartLiteralsDefault[this.language];\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento executado quando o usuário clicar sobre um elemento do gráfico.\n   *\n   * O evento emitirá o seguinte parâmetro:\n   * - *donut* e *pie*: um objeto contendo a categoria e valor da série.\n   * - *radar*: um objeto contendo o nome da série e os valores.\n   * - *area*, *line*, *column* e *bar*: um objeto contendo o nome da série, valor e categoria do eixo do gráfico.\n   */\n  @Output('p-series-click')\n  seriesClick: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento executado quando o usuário passar o *mouse* sobre um elemento do gráfico.\n   *\n   * O evento emitirá o seguinte parâmetro de acordo com o tipo de gráfico:\n   * - *donut* e *pie*: um objeto contendo a categoria e valor da série.\n   * - *radar*: um objeto contendo o nome da série e os valores.\n   * - *area*, *line*, *column* e *bar*: um objeto contendo a categoria, valor da série e categoria do eixo do gráfico.\n   */\n  @Output('p-series-hover')\n  seriesHover: EventEmitter<any> = new EventEmitter<any>();\n\n  constructor(languageService: PoLanguageService) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  ngOnInit(): void {\n    if (this.type === PoChartType.Gauge && !this.setHeightGauge) {\n      this._height = 300;\n    }\n  }\n}\n","import { PoChartComponent } from './po-chart.component';\nimport { PoChartSerie } from '../po-chart/interfaces/po-chart-serie.interface';\nimport { PoChartType } from '../po-chart/enums/po-chart-type.enum';\nimport { PoChartRadarOptions } from './interfaces/po-chart-radar-options.interface';\n\nconst gridPaddingValues = {\n  paddingBottomWithTopLegend: 48,\n  paddingBottomWithBottomLegend: 72,\n  paddingBottomNoLegend: 0,\n\n  paddingTopWithDataLabelFixed: 64,\n  paddingTopDefaultWithTopLegend: 56,\n  paddingTopWithDataLabelFixedBottomLegend: 32,\n  paddingTopDefaultWithBottomLegend: 16,\n\n  bottomDataZoomValueTopLegend: 8,\n  bottomDataZoomValueBottomLegend: 32\n} as const;\n\nexport class PoChartGridUtils {\n  isTypeDonut = false;\n  textCenterDonut = {};\n  constructor(private readonly component: PoChartComponent) {}\n\n  setGridOption(options) {\n    const tokenBorderWidthSm = this.resolvePx('--border-width-sm');\n    const paddingBottom = this.getPaddingBottomGrid();\n    const paddingTop = this.getPaddingTopGrid();\n    options.grid = {\n      top: paddingTop,\n      left: this.component.options?.axis?.paddingLeft || 16,\n      right: this.component.options?.axis?.paddingRight || 32,\n      bottom: this.component.options?.axis?.paddingBottom || paddingBottom,\n      containLabel: true,\n      borderWidth: tokenBorderWidthSm\n    };\n  }\n\n  setOptionsAxis(options) {\n    const tokenFontSizeGrid = this.resolvePx('--font-size-grid', '.po-chart');\n    const tokenBorderWidthSm = this.resolvePx('--border-width-sm');\n\n    options.xAxis = {\n      type: this.component.isTypeBar ? 'value' : 'category',\n      axisLabel: {\n        fontFamily: this.component.getCSSVariable('--font-family-grid', '.po-chart'),\n        fontSize: tokenFontSizeGrid || 12,\n        fontWeight: Number(this.component.getCSSVariable('--font-weight-grid', '.po-chart')),\n        color: this.component.getCSSVariable('--text-color-grid', '.po-chart'),\n        rotate: this.component.options?.axis?.rotateLegend,\n        interval: 0,\n        width: 72,\n        overflow: 'break'\n      },\n      splitLine: {\n        show: this.component.isTypeBar\n          ? (this.component.options?.axis?.showXAxis ?? true)\n          : this.component.options?.axis?.showXAxis || false,\n        lineStyle: {\n          type: 'solid',\n          width: tokenBorderWidthSm,\n          color: this.component.getCSSVariable('--color-grid', '.po-chart')\n        }\n      }\n    };\n\n    options.yAxis = {\n      type: this.component.isTypeBar ? 'category' : 'value',\n      splitNumber: 5,\n      axisLabel: {\n        margin: 10,\n        fontFamily: this.component.getCSSVariable('--font-family-grid', '.po-chart'),\n        fontSize: tokenFontSizeGrid || 12,\n        color: this.component.getCSSVariable('--text-color-grid', '.po-chart'),\n        fontWeight: Number(this.component.getCSSVariable('--font-weight-grid', '.po-chart'))\n      },\n      splitLine: {\n        show: this.component.isTypeBar\n          ? this.component.options?.axis?.showYAxis || false\n          : (this.component.options?.axis?.showYAxis ?? true),\n        lineStyle: {\n          color: this.component.getCSSVariable('--color-grid', '.po-chart')\n        }\n      }\n    };\n\n    if (this.component.isTypeRadar) {\n      return;\n    }\n\n    if (this.component.isTypeBar) {\n      options.yAxis.data = this.component.categories;\n    } else {\n      options.xAxis.data = this.component.categories;\n      options.xAxis.boundaryGap = this.component.boundaryGap;\n    }\n  }\n\n  setOptionDataZoom(options) {\n    options.dataZoom = [\n      {\n        show: true,\n        realtime: true,\n        bottom: this.component.options?.bottomDataZoom || 'calc(100%)',\n        height: 25,\n        right: this.component.options?.axis?.paddingRight || 32,\n        xAxisIndex: [0]\n      },\n      {\n        type: 'inside',\n        realtime: true,\n        xAxisIndex: [0]\n      }\n    ];\n  }\n\n  setShowAxisDetails(options) {\n    if (this.component.options?.axis?.showAxisDetails) {\n      options.tooltip = {\n        trigger: 'none',\n        axisPointer: {\n          type: 'cross',\n          label: {\n            backgroundColor: this.component.getCSSVariable('--color-neutral-dark-70')\n          }\n        }\n      };\n    }\n  }\n\n  setSerieTypeLine(serie: any, tokenBorderWidthMd: number, color: string) {\n    if (serie.type === 'line') {\n      serie.symbolSize = 8;\n      serie.symbol = 'circle';\n      serie.itemStyle = {\n        color: !this.component.options?.fillPoints\n          ? this.component.getCSSVariable('--color-chart-line-point-fill', '.po-chart')\n          : color,\n        borderColor: color,\n        borderWidth: tokenBorderWidthMd\n      };\n      serie.lineStyle = { color: color, width: tokenBorderWidthMd };\n    }\n  }\n\n  setSerieTypeArea(serie: any, index: number) {\n    if (serie.isTypeArea) {\n      let colorVariable: string;\n\n      if (serie.color?.startsWith('var(--')) {\n        colorVariable = getComputedStyle(document.documentElement)\n          .getPropertyValue(serie.color.replace(/^var\\((--[^)]+)\\)$/, '$1'))\n          .trim();\n      } else if (serie.color?.includes('color')) {\n        colorVariable = this.component.getCSSVariable(`--${serie.color.replace('po-', '')}`);\n      } else {\n        colorVariable = serie.color ?? serie.overlayColor;\n      }\n\n      serie.areaStyle = {\n        color: colorVariable\n      };\n\n      if (index > 7 || serie.isNotTokenColor) {\n        serie.areaStyle.opacity = 0.5;\n      }\n    }\n  }\n\n  setSerieTypeBarColumn(serie: any, color: string) {\n    if (serie.type === 'bar') {\n      serie.itemStyle = {\n        borderRadius: this.resolvePx('--border-radius-bar', '.po-chart'),\n        color: color\n      };\n      serie.emphasis = { focus: 'series' };\n      serie.blur = {\n        itemStyle: { opacity: 0.4 }\n      };\n      this.component.boundaryGap = true;\n\n      if (this.component.options?.stacked || serie.stackGroupName) {\n        serie.stack = this.component.options?.stacked ? 'total' : serie.stackGroupName;\n        if (this.component.dataLabel?.fixed !== false) {\n          this.component.dataLabel = { fixed: true };\n          serie.label = { show: true };\n        }\n      }\n    }\n  }\n\n  setSerieTypeDonutPie(serie: any, color: string) {\n    if (this.component.listTypePieDonut?.length) {\n      const borderWidth = this.resolvePx('--border-width-sm');\n      const borderColor = this.component.getCSSVariable('--border-color', '.po-chart');\n      const seriePie = {\n        name: serie.name,\n        value: serie.data,\n        itemStyle: {\n          borderWidth: borderWidth,\n          borderColor: borderColor,\n          color: color,\n          borderRadius: this.component.options?.borderRadius\n        }\n      };\n      this.component.listTypePieDonut[0].data.push(seriePie);\n    }\n  }\n\n  setListTypeDonutPie(type: PoChartType) {\n    if (type === PoChartType.Donut) {\n      this.isTypeDonut = true;\n      this.component.itemsTypeDonut = this.normalizeToPercentage(this.component.series);\n    }\n    let radiusHorizontal = '80%';\n    let radiusVertical = '55%';\n    let positionHorizontal;\n    if (this.component.options?.legend === false) {\n      radiusHorizontal = '95%';\n      radiusVertical = '65%';\n      positionHorizontal = '50%';\n    } else {\n      positionHorizontal = this.component.options?.legendVerticalPosition === 'top' ? '54%' : '46%';\n    }\n\n    if (this.component.options?.innerRadius) {\n      radiusVertical = this.getAdjustedRadius(radiusVertical, this.component.options.innerRadius);\n    }\n    const radius = this.isTypeDonut ? [radiusVertical, radiusHorizontal] : radiusHorizontal;\n    this.component.listTypePieDonut = [\n      {\n        type: 'pie',\n        center: ['50%', positionHorizontal],\n        radius: radius,\n        roseType: this.component.options?.roseType ? 'area' : undefined,\n        label: { show: false },\n        emphasis: { focus: 'self' },\n        data: [],\n        blur: { itemStyle: { opacity: 0.4 } }\n      }\n    ];\n\n    this.setTextCenterDonut();\n  }\n\n  private setTextCenterDonut() {\n    if (this.isTypeDonut && this.component.options?.textCenterGraph) {\n      this.textCenterDonut = {\n        type: 'text',\n        left: 'center',\n        top: this.component.options?.legendVerticalPosition === 'top' ? '52%' : '44%',\n        style: {\n          text: this.component.options?.textCenterGraph,\n          fontSize: this.resolvePx('--font-size-md'),\n          fontWeight: Number(this.component.getCSSVariable('--font-weight-hightlight-value', '.po-chart')),\n          fontFamily: this.component.getCSSVariable('--font-family-hightlight-value', '.po-chart'),\n          fill: this.component.getCSSVariable('--color-hightlight-value', '.po-chart')\n        },\n        silent: true\n      };\n    }\n  }\n\n  private getAdjustedRadius(radius: string, innerRadius: number): string {\n    const radiusValue = parseFloat(radius);\n    if (innerRadius >= 100) {\n      return radius;\n    }\n    const adjusted = radiusValue * (innerRadius / 100);\n    return `${adjusted}%`;\n  }\n\n  private normalizeToPercentage(series: Array<PoChartSerie>) {\n    const total =\n      series\n        .map(item => item.data)\n        .filter((value): value is number => typeof value === 'number')\n        .reduce((sum, value) => sum + value, 0) || 1;\n\n    return series.map(item => ({\n      label: item.label,\n      data: item.data,\n      valuePercentage: +(((item.data as number) / total) * 100).toFixed(2)\n    }));\n  }\n\n  resolvePx(size: string, selector?: string): number {\n    const token = this.component.getCSSVariable(size, selector);\n    if (token.endsWith('px')) {\n      return parseFloat(token);\n    } else if (token.endsWith('rem')) {\n      return parseFloat(token) * 16;\n    } else if (token.endsWith('em')) {\n      const parentElement = selector ? document.querySelector(selector) : document.documentElement;\n      const parentFontSize = parentElement ? parseFloat(getComputedStyle(parentElement).fontSize) : 16;\n      return parseFloat(token) * parentFontSize;\n    }\n  }\n\n  private getPaddingBottomGrid() {\n    const options = this.component.options;\n    if (\n      options?.dataZoom &&\n      options.bottomDataZoom &&\n      (options.legend === false || options.legendVerticalPosition === 'top')\n    ) {\n      if (typeof options.bottomDataZoom === 'boolean' && options.bottomDataZoom === true) {\n        options.bottomDataZoom = gridPaddingValues.bottomDataZoomValueTopLegend;\n      }\n      return gridPaddingValues.paddingBottomWithTopLegend;\n    } else if (options?.dataZoom && options.bottomDataZoom && options.legendVerticalPosition !== 'top') {\n      if (typeof options.bottomDataZoom === 'boolean' && options.bottomDataZoom === true) {\n        options.bottomDataZoom = gridPaddingValues.bottomDataZoomValueBottomLegend;\n      }\n      return gridPaddingValues.paddingBottomWithBottomLegend;\n    } else if (\n      (options?.dataZoom && !options?.bottomDataZoom && options.legend === false) ||\n      (!options?.dataZoom && options?.legend === false) ||\n      (!options?.dataZoom && options?.legendVerticalPosition === 'top') ||\n      (this.component.isTypeRadar && options.legendVerticalPosition !== 'top')\n    ) {\n      return gridPaddingValues.paddingBottomNoLegend;\n    }\n    return gridPaddingValues.paddingBottomWithTopLegend;\n  }\n\n  private hasTopLegendOrNoZoom(options): boolean {\n    return (\n      (options?.dataZoom && !options.bottomDataZoom) ||\n      (options?.dataZoom && options.bottomDataZoom && options.legendVerticalPosition === 'top') ||\n      (!options?.dataZoom && options?.legendVerticalPosition === 'top')\n    );\n  }\n\n  private hasBottomLegendWithZoom(options): boolean {\n    return (\n      (options?.dataZoom && options.bottomDataZoom && options.legendVerticalPosition !== 'top') ||\n      (!options?.dataZoom && options?.legendVerticalPosition !== 'top')\n    );\n  }\n\n  private getPaddingTopGrid() {\n    const options = this.component.options;\n    if (this.hasTopLegendOrNoZoom(options)) {\n      if (typeof options.bottomDataZoom === 'boolean' && options.bottomDataZoom === true) {\n        options.bottomDataZoom = gridPaddingValues.bottomDataZoomValueTopLegend;\n      }\n      const fixed = this.component.dataLabel?.fixed && !options?.axis?.maxRange;\n      return fixed ? gridPaddingValues.paddingTopWithDataLabelFixed : gridPaddingValues.paddingTopDefaultWithTopLegend;\n    } else if (this.hasBottomLegendWithZoom(options)) {\n      const fixed = this.component.dataLabel?.fixed && !options?.axis?.maxRange;\n      return fixed\n        ? gridPaddingValues.paddingTopWithDataLabelFixedBottomLegend\n        : gridPaddingValues.paddingTopDefaultWithBottomLegend;\n    }\n  }\n\n  private isRadarOptions(value: any): value is PoChartRadarOptions {\n    return value && typeof value === 'object' && !Array.isArray(value) && 'indicator' in value;\n  }\n\n  convertRadarConfig(indicators: Array<string>) {\n    return {\n      shape: 'polygon',\n      splitArea: false,\n      indicator: indicators.map(item => ({ name: item }))\n    };\n  }\n\n  setListTypeRadar() {\n    const radar = this.isRadarOptions(this.component.categories)\n      ? this.component.categories\n      : this.convertRadarConfig(this.component.categories);\n\n    const radarConfig = {\n      shape: radar?.shape ?? 'polygon',\n      radius: '60%',\n      splitLine: {\n        show: true,\n        lineStyle: {\n          color: [this.component.getCSSVariable('--border-color-radar', 'po-chart .po-chart')],\n          width: this.resolvePx('--border-width-sm')\n        }\n      },\n      axisLine: {\n        show: true,\n        lineStyle: {\n          color: this.component.getCSSVariable('--border-color-radar', 'po-chart .po-chart'),\n          width: this.resolvePx('--border-width-sm')\n        }\n      },\n      splitArea: {\n        show: radar?.splitArea ?? false,\n        areaStyle: {\n          color: [\n            this.component.getCSSVariable('--color-background-line', 'po-chart .po-chart'),\n            this.component.getCSSVariable('--color-background-zebra', 'po-chart .po-chart')\n          ]\n        }\n      },\n      indicator: Array.isArray(radar?.indicator)\n        ? radar.indicator.map(ind => ({\n            name: ind.name,\n            max: ind.max ?? undefined,\n            min: ind.min ?? 0,\n            color: ind.color ?? this.component.getCSSVariable('--color-neutral-dark-90')\n          }))\n        : []\n    };\n\n    const currentOptions = this.component.options ?? {};\n    const hasGlobalAreaStyle = this.component.options?.areaStyle === true;\n    const hasSeriesAreaStyle =\n      Array.isArray(this.component.series) && this.component.series.some(serie => !!serie?.areaStyle);\n\n    this.component.options = {\n      ...this.component.options,\n      fillPoints: hasGlobalAreaStyle || hasSeriesAreaStyle ? true : (currentOptions.fillPoints ?? true),\n      radar: radarConfig\n    };\n\n    return radarConfig;\n  }\n\n  setSerieTypeRadar(serie: any, tokenBorderWidthMd: number, color: string) {\n    if (serie.type === 'radar') {\n      serie.type = 'radar';\n      serie.symbol = 'circle';\n      serie.symbolSize = 6;\n      if (this.component.dataLabel?.fixed) {\n        serie.label = {\n          show: true\n        };\n      }\n      serie.itemStyle = {\n        color:\n          this.component.options?.fillPoints === false\n            ? this.component.getCSSVariable('--color-chart-line-point-fill', 'po-chart .po-chart')\n            : color,\n        borderColor: color,\n        borderWidth: tokenBorderWidthMd\n      };\n\n      serie.lineStyle = { color, width: tokenBorderWidthMd };\n\n      return serie;\n    }\n  }\n\n  setTooltipRadar(params) {\n    const indicators = this.component.options.radar?.indicator ?? [];\n    const values = params.value ?? [];\n\n    values.map((val, i) => {\n      const indicatorName = indicators[i]?.name ?? `Indicador ${i + 1}`;\n      return `${indicatorName}: <b>${val}</b>`;\n    });\n  }\n\n  buildRadarTooltip(params: any): string {\n    const indicators = this.component.options.radar?.indicator ?? [];\n    const values = params.value ?? [];\n\n    let tooltip = `<b>${params.name}</b><br>`;\n\n    values.map((val, index) => {\n      const indicatorName = indicators[index]?.name ?? `Indicator ${index + 1}`;\n      tooltip += `${indicatorName}: <b>${val}</b><br>`;\n    });\n\n    return tooltip;\n  }\n\n  finalizeSerieTypeRadar(seriesUpdated) {\n    const hasGlobalAreaStyle = this.component.options?.areaStyle === true;\n\n    return [\n      {\n        type: 'radar',\n        data: seriesUpdated.map(item => {\n          const name = item?.name ?? '';\n          const value = Array.isArray(item?.data) ? item.data : [];\n\n          let areaStyle: any;\n\n          if (hasGlobalAreaStyle || item.areaStyle === true) {\n            areaStyle = {\n              opacity: 0.5\n            };\n          } else {\n            areaStyle = undefined;\n          }\n\n          return {\n            name,\n            value,\n            areaStyle,\n            symbol: item.symbol,\n            symbolSize: item.symbolSize,\n            itemStyle: item.itemStyle,\n            lineStyle: item.lineStyle,\n            label: { show: item?.label?.show }\n          };\n        })\n      }\n    ];\n  }\n}\n","import { PoChartSerie } from '../po-chart/interfaces/po-chart-serie.interface';\nimport { PoChartComponent } from './po-chart.component';\n\nexport class PoChartGaugeUtils {\n  constructor(private readonly component: PoChartComponent) {}\n\n  setGaugeOptions(options, fontSizeText) {\n    const series = this.component.series;\n    if (\n      this.component.isGaugeSingle ||\n      this.component.options?.legend === false ||\n      !series?.find(serie => serie.label)\n    ) {\n      return;\n    }\n\n    let currentX = 0;\n    let currentY = 0;\n    const lineHeight = 30;\n    const gap = 20;\n    const chartWidth = this.component.el.nativeElement.querySelector('#chart-id')?.clientWidth;\n    const children = this.component.itemsTypeGauge\n      .map((item, index) => {\n        const label = item.label ?? '';\n        const text = this.component.options?.showFromToLegend ? `${label} (${item.from}–${item.to})` : `${label}`;\n        const estimatedTextWidth = text.length * (fontSizeText * 0.5) + 16;\n        const itemWidth = estimatedTextWidth < 78 ? gap + estimatedTextWidth + 5 : gap + 90;\n\n        if (currentX + itemWidth > chartWidth) {\n          currentX = 0;\n          currentY += lineHeight;\n        }\n\n        const itemGraphic = [\n          {\n            type: 'rect',\n            shape: { width: 14, height: 14 },\n            style: {\n              fill: this.component.itemsColorTypeGauge[index]\n            },\n            left: currentX,\n            top: currentY\n          },\n          {\n            type: 'text',\n            left: currentX + gap,\n            top: currentY + 1,\n            style: {\n              text,\n              fill: this.component.getCSSVariable('--color-legend', '.po-chart'),\n              width: 85,\n              overflow: 'break',\n              fontSize: fontSizeText,\n              fontFamily: this.component.getCSSVariable('--font-family-grid', '.po-chart'),\n              fontWeight: this.component.getCSSVariable('--font-weight-grid', '.po-chart')\n            }\n          }\n        ];\n\n        currentX += itemWidth;\n\n        return itemGraphic;\n      })\n      .flat();\n\n    options.graphic = [\n      {\n        type: 'group',\n        left: 'center',\n        bottom: 0,\n        layout: 'horizontal',\n        children: children\n      }\n    ];\n  }\n\n  setListTypeGauge(serie: any, fontSizes: { fontSizeMd: number; fontSizeLg: number; fontSizeSubtitle: number }) {\n    const series = this.component.series;\n    this.component.isGaugeSingle = series?.length === 1 && !!series[0]?.data;\n    if (this.component.isGaugeSingle) {\n      const item = series[0];\n      this.component.itemsTypeGauge = [\n        {\n          label: item.label,\n          from: 0,\n          to: item.data,\n          valuePercentage: item.data\n        }\n      ];\n    } else {\n      this.component.itemsTypeGauge = this.normalizeToRelativePercentage(series);\n    }\n    const divWidth = this.component.el.nativeElement.querySelector('#chart-id')?.clientWidth ?? 0;\n    const height = this.component.height;\n\n    const properties = this.setPropertiesGauge(divWidth, height);\n\n    const data = series[0];\n    const fontSizeDetail = divWidth < 480 || height < 400 ? fontSizes.fontSizeMd : fontSizes.fontSizeLg;\n    serie.type = 'gauge';\n    serie.startAngle = 180;\n    serie.endAngle = 0;\n    serie.center = properties.center;\n    serie.radius = properties.radius;\n    serie.axisTick = { show: false };\n    serie.splitLine = { show: false };\n    serie.axisLabel = { show: false };\n    serie.pointer = {\n      show: !this.component.isGaugeSingle && this.component.options?.pointer !== false,\n      offsetCenter: ['0%', '-45%'],\n      length: properties.lengthPointer,\n      itemStyle: {\n        color: this.component.getCSSVariable('--color-gauge-pointer-color', '.po-chart')\n      }\n    };\n    serie.progress = {\n      show: false\n    };\n    serie.detail = {\n      show: true,\n      offsetCenter: [0, '-30%'],\n      formatter: row => {\n        if (this.component.isGaugeSingle) {\n          return `${data.data}%`;\n        } else if (this.component.valueGaugeMultiple) {\n          return `${this.component.valueGaugeMultiple}%`;\n        }\n        return '';\n      },\n      fontSize: fontSizeDetail,\n      fontWeight: Number(this.component.getCSSVariable('--font-weight-hightlight-value', '.po-chart')),\n      fontFamily: this.component.getCSSVariable('--font-family-hightlight-value', '.po-chart'),\n      color: this.component.getCSSVariable('--color-hightlight-value', '.po-chart')\n    };\n    serie.title = {\n      show: !!this.component.options?.subtitleGauge,\n      offsetCenter: [0, '-10%'],\n      fontSize: fontSizes.fontSizeSubtitle,\n      fontWeight: Number(this.component.getCSSVariable('--font-weight-description-chart', 'po-chart')),\n      fontFamily: this.component.getCSSVariable('--font-family-description-chart', 'po-chart'),\n      color: this.component.getCSSVariable('--color-description-chart', 'po-chart'),\n      width: properties.widthSubtitle,\n      overflow: 'break'\n    };\n    serie.data = [\n      {\n        value: this.component.isGaugeSingle ? data.data : this.component.valueGaugeMultiple,\n        name: this.component.isGaugeSingle\n          ? this.component.options?.subtitleGauge || data.label\n          : this.component.options?.subtitleGauge\n      }\n    ];\n    return serie;\n  }\n\n  private setPropertiesGauge(divWidth: number, height: number) {\n    let radius = '140%';\n    let lengthPointer = '40%';\n    let center: [string, string] = ['50%', '80%'];\n    let widthSubtitle = height < 450 ? 400 : 500;\n\n    const isSmallScreen = divWidth < 480;\n    const isMediumScreen = divWidth >= 480 && divWidth < 960;\n    const isLargeScreen = divWidth >= 960;\n\n    if (isSmallScreen) {\n      radius = height > 480 ? '100%' : '120%';\n      lengthPointer = '25%';\n      widthSubtitle = 300;\n      center = ['50%', '75%'];\n    } else if (isMediumScreen) {\n      radius = height > 550 ? '100%' : '120%';\n      widthSubtitle = height > 499 ? 450 : 320;\n      lengthPointer = '35%';\n    } else if (isLargeScreen && height > 750) {\n      radius = '100%';\n    }\n\n    if (height < 400) {\n      return this.setPropertiesDefaultHeight(center);\n    }\n    return { radius, lengthPointer, center, widthSubtitle };\n  }\n\n  setPropertiesDefaultHeight(center: [string, string]) {\n    const radius = '140%';\n    const lengthPointer = '30%';\n    const widthSubtitle = 210;\n    return { radius, lengthPointer, center, widthSubtitle };\n  }\n\n  setSerieTypeGauge(serie: any, color: string) {\n    if (serie.type === 'gauge') {\n      this.component.itemsColorTypeGauge = [...this.component.itemsColorTypeGauge, color];\n    }\n  }\n\n  private normalizeToRelativePercentage(series: Array<PoChartSerie>) {\n    const numericSeries = series.filter(item => typeof item.to === 'number') as Array<PoChartSerie & { to: number }>;\n\n    if (numericSeries.length === 0) return [];\n\n    const sortedSeries = [...numericSeries].sort((a, b) => a.to - b.to);\n\n    const max = sortedSeries[sortedSeries.length - 1].to;\n\n    if (max === 0) {\n      return sortedSeries.map(item => ({\n        label: item.label,\n        from: item.from,\n        to: item.to,\n        valuePercentage: 100\n      }));\n    }\n\n    return sortedSeries.map(item => ({\n      label: item.label,\n      from: item.from,\n      to: item.to,\n      valuePercentage: +((item.to / max) * 100).toFixed(2)\n    }));\n  }\n\n  finalizeSerieTypeGauge(serie) {\n    let colors;\n    if (this.component.isGaugeSingle) {\n      colors = [\n        [this.component.itemsTypeGauge[0].valuePercentage / 100, this.component.itemsColorTypeGauge[0]],\n        [1, this.component.getCSSVariable('--color-base-gauge', '.po-chart')]\n      ];\n    } else {\n      colors = this.buildGaugeAxisLineColorsWithGaps(\n        this.component.itemsTypeGauge,\n        this.component.itemsColorTypeGauge,\n        this.component.getCSSVariable('--color-base-gauge', '.po-chart')\n      );\n    }\n    return [\n      {\n        ...serie,\n        axisLine: {\n          lineStyle: {\n            width: 40,\n            color: colors\n          }\n        }\n      }\n    ];\n  }\n\n  private buildGaugeAxisLineColorsWithGaps(\n    series: Array<{ label: string; from: number; to: number }>,\n    colorPalette: Array<string>,\n    gapColor\n  ) {\n    const sortedSeries = [...series].sort((a, b) => a.from - b.from);\n    const maxTo = Math.max(...sortedSeries.map(s => s.to));\n    const colorSegments = [];\n\n    let lastTo = 0;\n\n    sortedSeries.forEach((segment, index) => {\n      const { from, to } = segment;\n      const color = colorPalette[index % colorPalette.length];\n\n      // gap entre o último \"to\" e o próximo \"from\"\n      if (from > lastTo) {\n        colorSegments.push([+(from / maxTo).toFixed(4), gapColor]);\n      }\n\n      colorSegments.push([+(to / maxTo).toFixed(4), color]);\n      lastTo = to;\n    });\n\n    // gap final, se o último \"to\" não cobriu até o maxTo\n    if (lastTo < maxTo) {\n      colorSegments.push([1, gapColor]);\n    }\n\n    return colorSegments;\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostListener,\n  inject,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  SimpleChanges,\n  ViewChild,\n  ViewChildren,\n  ViewContainerRef\n} from '@angular/core';\n\nimport { CurrencyPipe, DecimalPipe } from '@angular/common';\nimport { PoTooltipDirective } from '../../directives';\nimport { PoColorService } from '../../services/po-color';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { PoChartLabelFormat } from '../po-chart/enums/po-chart-label-format.enum';\nimport { PoChartSerie } from '../po-chart/interfaces/po-chart-serie.interface';\nimport { PoModalAction } from '../po-modal';\nimport { PoPopupAction } from '../po-popup';\nimport { PoTableColumn } from '../po-table';\nimport { PoChartBaseComponent } from './po-chart-base.component';\n\nimport { PoChartType } from '../po-chart/enums/po-chart-type.enum';\nimport { PoChartGridUtils } from './po-chart-grid-utils';\n\nimport { BarChart, CustomChart, GaugeChart, LineChart, PieChart, RadarChart } from 'echarts/charts';\nimport {\n  BrushComponent,\n  DataZoomComponent,\n  GraphicComponent,\n  GridComponent,\n  LegendComponent,\n  MarkLineComponent,\n  ToolboxComponent,\n  TooltipComponent\n} from 'echarts/components';\nimport * as echarts from 'echarts/core';\nimport { use } from 'echarts/core';\nimport { CanvasRenderer, SVGRenderer } from 'echarts/renderers';\nimport { PoChartGaugeUtils } from './po-chart-gauge-utils';\nuse([\n  BarChart,\n  CustomChart,\n  GaugeChart,\n  GraphicComponent,\n  LineChart,\n  PieChart,\n  RadarChart,\n  BrushComponent,\n  DataZoomComponent,\n  GridComponent,\n  LegendComponent,\n  MarkLineComponent,\n  ToolboxComponent,\n  TooltipComponent,\n  CanvasRenderer,\n  SVGRenderer\n]);\n\n/**\n * @docsExtends PoChartBaseComponent\n *\n * @example\n *\n * <example name=\"po-chart-basic\" title=\"PO Chart Basic\">\n *  <file name=\"sample-po-chart-basic/sample-po-chart-basic.component.html\"> </file>\n *  <file name=\"sample-po-chart-basic/sample-po-chart-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-chart-labs\" title=\"PO Chart Labs\">\n *  <file name=\"sample-po-chart-labs/sample-po-chart-labs.component.html\"> </file>\n *  <file name=\"sample-po-chart-labs/sample-po-chart-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-chart-coffee-ranking\" title=\"PO Chart - Coffee Ranking\">\n *  <file name=\"sample-po-chart-coffee-ranking/sample-po-chart-coffee-ranking.component.html\"> </file>\n *  <file name=\"sample-po-chart-coffee-ranking/sample-po-chart-coffee-ranking.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-chart-stacked\" title=\"PO Chart - Stacked\">\n *  <file name=\"sample-po-chart-stacked/sample-po-chart-stacked.component.html\"> </file>\n *  <file name=\"sample-po-chart-stacked/sample-po-chart-stacked.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-chart-summary\" title=\"PO Chart - Summary\">\n *  <file name=\"sample-po-chart-summary/sample-po-chart-summary.component.html\"> </file>\n *  <file name=\"sample-po-chart-summary/sample-po-chart-summary.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-chart-world-exports\" title=\"PO Chart - World Exports\">\n *  <file name=\"sample-po-chart-world-exports/sample-po-chart-world-exports.component.html\"> </file>\n *  <file name=\"sample-po-chart-world-exports/sample-po-chart-world-exports.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-chart-technology-skill\" title=\"PO Chart - Radar\">\n *  <file name=\"sample-po-chart-technology-skill/sample-po-chart-technology-skill.component.html\"> </file>\n *  <file name=\"sample-po-chart-technology-skill/sample-po-chart-technology-skill.component.ts\"> </file>\n * </example>\n */\n\n@Component({\n  selector: 'po-chart',\n  templateUrl: './po-chart.component.html',\n  standalone: false\n})\nexport class PoChartComponent extends PoChartBaseComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n  el = inject(ElementRef);\n  private readonly currencyPipe = inject(CurrencyPipe);\n  private readonly decimalPipe = inject(DecimalPipe);\n  private readonly colorService = inject(PoColorService);\n  private readonly cdr = inject(ChangeDetectorRef);\n\n  @ViewChildren(PoTooltipDirective) poTooltip: QueryList<PoTooltipDirective>;\n  @ViewChild('targetPopup', { read: ElementRef, static: false }) targetRef: ElementRef;\n  @ViewChild('chartContainer') chartContainer: ElementRef;\n\n  tooltipText = ``;\n  originalHeight: number;\n  originalRadiusGauge;\n  chartMarginTop = '0px';\n  isTypeBar = false;\n  isTypeRadar = false;\n  boundaryGap = false;\n  listTypePieDonut: Array<any>;\n  itemsTypeDonut: Array<any> = [];\n  isGaugeSingle: boolean;\n  itemsTypeGauge: Array<any> = [];\n  itemsColorTypeGauge = [];\n  protected actionModal: PoModalAction = {\n    action: this.downloadCsv.bind(this),\n    label: this.literals.downloadCSV\n  };\n  public showPopup = true;\n  protected itemsTable = [];\n  protected columnsTable: Array<PoTableColumn> = [];\n  protected isExpanded = false;\n  protected legendData: Array<{ name: string; color: string }> = [];\n  protected headerHeight: number;\n  protected paddingContainerGauge: number = 0;\n  protected descriptionHeight: number = 0;\n  protected positionTooltip = 'top';\n  protected tooltipTitle = undefined;\n  protected tooltipDescriptionGauge = undefined;\n  protected chartGridUtils: PoChartGridUtils;\n  protected chartGaugeUtils: PoChartGaugeUtils;\n  protected isTypeGauge = false;\n  protected popupActions: Array<PoPopupAction> = [];\n  private chartInstance!: echarts.ECharts;\n  private currentRenderer: 'svg' | 'canvas';\n  private resizeObserver: ResizeObserver;\n  private intersectionObserver: IntersectionObserver;\n  private hideDomEchartsDiv = false;\n  private readonly vcr = inject(ViewContainerRef);\n\n  get showHeader() {\n    return this.title || !this.options?.header?.hideTableDetails || !this.options?.header?.hideExpand || this.showPopup;\n  }\n\n  constructor() {\n    const languageService = inject(PoLanguageService);\n\n    super(languageService);\n  }\n\n  @HostListener('window:PoUiThemeChange', ['$event'])\n  changeTheme = (event: any) => {\n    this.chartInstance?.dispose();\n    this.chartInstance = undefined;\n    this.initECharts();\n    this.checkShowCEcharts();\n  };\n\n  ngOnInit(): void {\n    this.chartGridUtils = new PoChartGridUtils(this);\n    this.chartGaugeUtils = new PoChartGaugeUtils(this);\n    super.ngOnInit();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['customActions']?.currentValue) {\n      this.setPopupActions();\n    }\n\n    if (changes['series']?.firstChange) {\n      return;\n    }\n\n    const { options, series, dataLabel, categories, height, valueGaugeMultiple } = changes;\n    if (options || series || dataLabel || categories || valueGaugeMultiple) {\n      if (\n        !this.chartInstance ||\n        (options?.currentValue?.rendererOption && this.currentRenderer !== options.currentValue.rendererOption)\n      ) {\n        this.chartInstance?.dispose();\n        this.chartInstance = undefined;\n        this.setInitialPopupActions();\n        this.initECharts();\n      } else {\n        this.chartInstance?.clear();\n        this.setInitialPopupActions();\n        this.setChartsProperties();\n      }\n    }\n\n    if (height) {\n      setTimeout(() => {\n        this.chartInstance?.resize();\n      });\n    }\n  }\n\n  ngAfterViewInit() {\n    this.setInitialPopupActions();\n    this.initECharts();\n    this.checkShowCEcharts();\n  }\n\n  ngOnDestroy(): void {\n    /* istanbul ignore next */\n    if (this.resizeObserver?.disconnect) {\n      this.resizeObserver?.disconnect();\n    }\n    this.intersectionObserver?.disconnect();\n  }\n\n  showTooltipTitle(e: MouseEvent) {\n    const element = e.target as HTMLElement;\n\n    if (element.offsetWidth < element.scrollWidth) {\n      this.tooltipTitle = this.title;\n    } else {\n      this.tooltipTitle = undefined;\n    }\n  }\n\n  showTooltipDescription(e: MouseEvent) {\n    const element = e.target as HTMLElement;\n\n    if (element.offsetWidth < element.scrollWidth) {\n      this.tooltipDescriptionGauge = this.options.descriptionChart;\n    } else {\n      this.tooltipDescriptionGauge = undefined;\n    }\n  }\n\n  getCSSVariable(variable: string, selector?: string): string {\n    const element = selector ? document.querySelector(selector) : document.documentElement;\n    return element ? getComputedStyle(element).getPropertyValue(variable).trim() : '';\n  }\n\n  async openModal() {\n    if (!this.chartInstance) {\n      return;\n    }\n\n    this.setTableProperties();\n    this.vcr.clear();\n\n    const { PoChartModalTableComponent } = await import('./po-chart-modal-table/po-chart-modal-table.component');\n\n    const componentRef = this.vcr.createComponent(PoChartModalTableComponent);\n\n    componentRef.setInput('title', this.title);\n    componentRef.setInput('itemsTable', this.itemsTable);\n    componentRef.setInput('columnsTable', this.columnsTable);\n    componentRef.setInput('actionModal', this.actionModal);\n\n    (componentRef.instance as any).modalComponent.open();\n  }\n\n  toggleExpand() {\n    if (!this.isExpanded) {\n      this.originalHeight = this.height;\n      this.height = window.innerHeight;\n      this.originalRadiusGauge = this.chartInstance?.getOption()?.series?.[0]?.radius;\n    } else {\n      this.height = this.originalHeight;\n      this.chartMarginTop = '0px';\n    }\n\n    if (this.isTypeGauge && innerWidth < 1366) {\n      this.chartInstance?.setOption({\n        series: [{ radius: this.isExpanded ? this.originalRadiusGauge : '100%' }]\n      });\n    }\n    this.isExpanded = !this.isExpanded;\n\n    setTimeout(() => {\n      this.chartInstance?.resize();\n    });\n  }\n\n  private applyStringFormatter(template: string, context: { name: string; seriesName: string; value: any }): string {\n    return template\n      .replace('{name}', context.name)\n      .replace('{seriesName}', context.seriesName)\n      .replace('{value}', context.value);\n  }\n\n  private observeContainerResize(): void {\n    if (!this.series?.length) return;\n\n    if (this.resizeObserver?.disconnect) {\n      this.resizeObserver.disconnect();\n      this.resizeObserver = undefined;\n    }\n\n    /* istanbul ignore next */\n    this.resizeObserver = new ResizeObserver(() => {\n      if (this.chartInstance?.resize) {\n        this.chartInstance.resize();\n      }\n    });\n    this.resizeObserver.observe(this.chartContainer?.nativeElement);\n  }\n\n  private checkShowCEcharts() {\n    const chartElement = this.el.nativeElement.querySelector('#chart-id');\n    if (!chartElement || !this.hideDomEchartsDiv) return;\n\n    this.intersectionObserver = new IntersectionObserver(\n      entries => {\n        entries.forEach(entry => {\n          if (entry.isIntersecting) {\n            this.setHeightProperties();\n            this.initECharts();\n            this.intersectionObserver.disconnect();\n          }\n        });\n      },\n      { threshold: 0.1 }\n    );\n\n    this.intersectionObserver.observe(chartElement);\n  }\n\n  private setInitialPopupActions(): void {\n    const hideExportCsv = this.options?.header?.hideExportCsv;\n    const hideExportImage = this.options?.header?.hideExportImage;\n\n    this.showPopup = !(hideExportCsv && hideExportImage && !this.customActions?.length);\n    this.cdr.detectChanges();\n    this.paddingContainerGauge = this.options?.showContainerGauge ? 16 : 0;\n\n    this.setHeightProperties();\n\n    this.popupActions = [\n      {\n        label: this.literals.exportCSV,\n        visible: !hideExportCsv,\n        action: () => {\n          this.setTableProperties();\n          this.downloadCsv();\n        }\n      },\n      {\n        label: this.literals.exportPNG,\n        visible: !hideExportImage,\n        action: this.exportImage.bind(this, 'png')\n      },\n      {\n        label: this.literals.exportJPG,\n        visible: !hideExportImage,\n        action: this.exportImage.bind(this, 'jpeg')\n      }\n    ];\n\n    this.actionModal = {\n      ...this.actionModal,\n      disabled: hideExportCsv\n    };\n\n    this.setPopupActions();\n  }\n\n  private setHeightProperties() {\n    const headerElement = this.el.nativeElement.querySelector('.po-chart-header') as HTMLDivElement;\n    let descriptionHeight = 0;\n    if (this.options?.descriptionChart) {\n      const descriptionElement = this.el.nativeElement.querySelector('.description-chart') as HTMLDivElement;\n      descriptionHeight = descriptionElement?.clientHeight;\n    }\n    if (this.headerHeight !== headerElement?.clientHeight || this.descriptionHeight !== descriptionHeight) {\n      this.headerHeight = headerElement?.clientHeight ?? 0;\n      this.descriptionHeight = descriptionHeight ?? 0;\n      this.cdr.detectChanges();\n      this.chartInstance?.resize();\n    }\n  }\n\n  private initECharts() {\n    this.cdr.detectChanges();\n    const echartsDiv = this.el.nativeElement.querySelector('#chart-id');\n    if (!echartsDiv?.clientWidth) {\n      this.hideDomEchartsDiv = true;\n      return;\n    }\n    this.currentRenderer = this.options?.rendererOption || 'canvas';\n    this.chartInstance = echarts.init(echartsDiv, null, { renderer: this.currentRenderer });\n    this.observeContainerResize();\n    this.setChartsProperties();\n    this.initEChartsEvents();\n  }\n\n  private initEChartsEvents() {\n    this.chartInstance.on('click', params => {\n      if (!params.value || params?.seriesType === 'gauge') return;\n      if (params.seriesName && !params.seriesName.includes('\\u00000')) {\n        this.seriesClick.emit({ label: params.seriesName, data: params.value, category: params.name });\n      } else {\n        this.seriesClick.emit({ label: params.name, data: params.value });\n      }\n    });\n\n    this.chartInstance.on('mouseover', (params: any) => {\n      if (!params.value || params?.seriesType === 'gauge') return;\n      if (params.seriesType) {\n        const divTooltipElement = this.el.nativeElement.querySelector('#custom-tooltip');\n        if (divTooltipElement && this.dataLabel?.fixed !== true) {\n          this.setTooltipProperties(divTooltipElement, params);\n        }\n      }\n      if (params.seriesName && !params.seriesName.includes('\\u00000')) {\n        this.seriesHover.emit({ label: params.seriesName, data: params.value, category: params.name });\n      } else {\n        this.seriesHover.emit({ label: params.name, data: params.value });\n      }\n    });\n\n    this.chartInstance.on('mouseout', () => {\n      this.poTooltip.last.toggleTooltipVisibility(false);\n    });\n  }\n\n  private parseTooltipText(text: string): string {\n    if (!text) return text;\n\n    return text\n      .replace(/\\n/g, '<br>')\n      .replace(/\\*\\*(.*?)\\*\\*/g, '<b>$1</b>')\n      .replace(/__(.*?)__/g, '<i>$1</i>');\n  }\n\n  private resolveCustomTooltip(params: any, name: string, seriesName: string, valueLabel: string): string {\n    let text: string | undefined;\n\n    const serie =\n      params.seriesType === 'pie' || params.seriesType === 'radar'\n        ? this.series[params.dataIndex]\n        : this.series[params.seriesIndex];\n\n    if (serie?.tooltip) {\n      if (typeof serie.tooltip === 'function') {\n        text = serie.tooltip(params);\n      } else {\n        text = this.applyStringFormatter(serie.tooltip, { name, seriesName, value: valueLabel });\n      }\n    }\n\n    if (!text) {\n      text =\n        seriesName && !seriesName.includes('\\u00000')\n          ? `<b>${name}</b><br>${seriesName}: <b>${valueLabel}</b>`\n          : `${name}: <b>${valueLabel}</b>`;\n\n      if (params.seriesType === 'radar') {\n        text = this.chartGridUtils.buildRadarTooltip(params);\n      }\n    }\n\n    return this.parseTooltipText(text);\n  }\n\n  private setTooltipProperties(divTooltipElement, params) {\n    const chartElement = this.el.nativeElement.querySelector('#chart-id');\n    let valueLabel = params.value;\n    if (this.itemsTypeDonut?.length) {\n      const findCurrentValue = this.itemsTypeDonut.find(\n        item => item.data === params.value && params.name === item.label\n      );\n      valueLabel = `${findCurrentValue?.valuePercentage ?? 0}%`;\n    }\n    const name = params.name === ' ' ? this.literals.item : params.name;\n    const seriesName = params.seriesName === ' ' ? this.literals.item : params.seriesName;\n\n    this.tooltipText = this.resolveCustomTooltip(params, name, seriesName, valueLabel);\n\n    divTooltipElement.style.left = `${params.event.offsetX + chartElement.offsetLeft + 3}px`;\n    divTooltipElement.style.top = `${chartElement.offsetTop + params.event.offsetY - 2}px`;\n    this.poTooltip.last.toggleTooltipVisibility(true);\n  }\n\n  private setChartsProperties() {\n    this.isTypeBar = false;\n    this.isTypeGauge = false;\n    this.itemsColorTypeGauge = [];\n    this.listTypePieDonut = [];\n    this.itemsTypeDonut = [];\n    let option = {};\n    if (Array.isArray(this.categories) && !this.categories?.length && this.categories !== undefined) {\n      this.categories = undefined;\n    }\n    if (!this.series?.length) {\n      this.chartInstance?.dispose();\n      this.chartInstance = undefined;\n      return;\n    }\n    option = this.setOptions();\n    this.chartInstance.setOption(option);\n    this.cdr.detectChanges();\n  }\n\n  private setOptions() {\n    const newSeries = this.setSeries();\n\n    const options: any = {\n      backgroundColor: this.getCSSVariable('--background-color-grid', 'po-chart'),\n      series: newSeries as any\n    };\n\n    if (!this.listTypePieDonut?.length && !this.isTypeGauge) {\n      this.chartGridUtils.setGridOption(options);\n      this.chartGridUtils.setOptionsAxis(options);\n      this.formatLabelOption(options);\n      this.chartGridUtils.setShowAxisDetails(options);\n      if (this.options?.dataZoom) {\n        this.chartGridUtils.setOptionDataZoom(options);\n      }\n    } else if (this.chartGridUtils.isTypeDonut && this.options?.textCenterGraph) {\n      options.graphic = this.chartGridUtils.textCenterDonut;\n    }\n\n    if (this.options?.legend !== false) {\n      this.setOptionLegend(options);\n    }\n\n    if (this.isTypeGauge) {\n      this.chartGaugeUtils.setGaugeOptions(options, this.chartGridUtils.resolvePx('--font-size-grid', '.po-chart'));\n    }\n\n    if (this.isTypeRadar) {\n      options.radar = this.options?.radar;\n    }\n    return options;\n  }\n\n  private formatLabelOption(options) {\n    if (this.options?.axis && Object.keys(this.options.axis).length) {\n      const currentAxis = this.isTypeBar ? 'xAxis' : 'yAxis';\n      options[currentAxis]['splitNumber'] = this.options.axis.gridLines || 5;\n      options[currentAxis]['min'] = this.options.axis.minRange;\n      options[currentAxis]['max'] = this.options.axis.maxRange;\n      if (this.options.axis.labelType) {\n        options[currentAxis]['axisLabel'].formatter =\n          this.options.axis.labelType === PoChartLabelFormat.Number\n            ? (value: number) => this.decimalPipe.transform(value, '1.2-2')\n            : (value: number) => this.currencyPipe.transform(value, null, 'symbol', '1.2-2');\n      }\n    }\n  }\n\n  private setOptionLegend(options) {\n    options.legend = {\n      show: true,\n      selectedMode: !this.isTypeGauge,\n      orient: 'horizontal',\n      left: this.options?.legendPosition || 'center',\n      top: this.options?.legendVerticalPosition || 'bottom',\n      bottom: 0,\n      padding: [0, 16, 0, 16],\n      itemWidth: 16,\n      itemHeight: 16,\n      icon: 'roundRect',\n      textStyle: {\n        color: this.getCSSVariable('--color-legend', '.po-chart'),\n        fontSize: this.getCSSVariable('--font-size-grid', '.po-chart'),\n        fontFamily: this.getCSSVariable('--font-family-grid', '.po-chart'),\n        fontWeight: this.getCSSVariable('--font-weight-grid', '.po-chart')\n      }\n    };\n  }\n\n  private setSeries() {\n    const hasArea =\n      this.type === 'area' ||\n      this.series.some(serie => serie.type === 'area') ||\n      this.options?.areaStyle ||\n      this.series.some(serie => serie.areaStyle === true);\n    const newSeries: Array<any> = [...this.colorService.getColors<PoChartSerie>(this.series, true, hasArea)];\n    const tokenBorderWidthMd = this.chartGridUtils.resolvePx('--border-width-md');\n    const findType = this.series.find(serie => serie.type)?.type;\n    let serieGauge = {};\n    let typeDefault;\n    if (!this.type) {\n      typeDefault = Array.isArray(this.series[0].data) ? PoChartType.Column : PoChartType.Pie;\n    }\n\n    const verifyType = findType || this.type || typeDefault;\n    if (verifyType === 'donut' || verifyType === 'pie') {\n      this.chartGridUtils.setListTypeDonutPie(verifyType);\n    } else if (verifyType === 'gauge') {\n      const serie = {};\n      const fontSizes = {\n        fontSizeMd: this.chartGridUtils.resolvePx('--font-size-md'),\n        fontSizeLg: this.chartGridUtils.resolvePx('--font-size-lg'),\n        fontSizeSubtitle: this.chartGridUtils.resolvePx('--font-size-description-chart', 'po-chart')\n      };\n      serieGauge = this.chartGaugeUtils.setListTypeGauge(serie, fontSizes);\n    } else if (verifyType === 'radar') {\n      this.chartGridUtils.setListTypeRadar();\n    }\n\n    const seriesUpdated = newSeries.map((serie, index) => {\n      serie.name = serie.name || (serie.label && typeof serie.label === 'string') ? (serie.name ?? serie.label) : ' ';\n      !serie.type ? this.setTypeSerie(serie, this.type || typeDefault) : this.setTypeSerie(serie, serie.type);\n\n      let colorVariable: string;\n\n      if (serie.color?.startsWith('var(--')) {\n        colorVariable = getComputedStyle(document.documentElement)\n          .getPropertyValue(serie.color.replace(/^var\\((--[^)]+)\\)$/, '$1'))\n          .trim();\n      } else if (serie.color?.includes('color') || serie.color?.startsWith('caption-tag-')) {\n        colorVariable = this.getCSSVariable(`--color-${serie.color.replace('po-', '').replace('color-', '')}`);\n      } else {\n        colorVariable = serie.color;\n      }\n\n      this.chartGridUtils.setSerieTypeDonutPie(serie, colorVariable);\n      this.chartGaugeUtils.setSerieTypeGauge(serie, colorVariable);\n      this.setSerieEmphasis(serie, colorVariable, tokenBorderWidthMd);\n      this.chartGridUtils.setSerieTypeLine(serie, tokenBorderWidthMd, colorVariable);\n      this.chartGridUtils.setSerieTypeArea(serie, index);\n      this.chartGridUtils.setSerieTypeBarColumn(serie, colorVariable);\n      this.chartGridUtils.setSerieTypeRadar(serie, tokenBorderWidthMd, colorVariable);\n\n      return serie;\n    });\n\n    if (this.listTypePieDonut?.length) {\n      return this.listTypePieDonut;\n    } else if (verifyType === 'gauge') {\n      return this.chartGaugeUtils.finalizeSerieTypeGauge(serieGauge);\n    } else if (verifyType === 'radar') {\n      return this.chartGridUtils.finalizeSerieTypeRadar(seriesUpdated);\n    }\n\n    return seriesUpdated;\n  }\n\n  private setSerieEmphasis(serie, color: string, tokenBorder: number) {\n    serie.emphasis = {\n      itemStyle: {\n        color: color,\n        borderWidth: tokenBorder\n      },\n      scale: 1.5\n    };\n\n    if (this.dataLabel?.fixed) {\n      serie.label = {\n        show: true\n      };\n\n      serie.emphasis = {\n        focus: 'series',\n        itemStyle: {\n          color: color,\n          borderWidth: tokenBorder\n        },\n        scale: 1.5\n      };\n    }\n  }\n\n  private setTypeSerie(serie, type: PoChartType) {\n    switch (type) {\n      case PoChartType.Area:\n        serie.isTypeArea = true;\n        serie.type = 'line';\n        break;\n      case PoChartType.Bar:\n        this.isTypeBar = true;\n        serie.type = 'bar';\n        break;\n      case PoChartType.Column:\n        serie.isTypeColumn = true;\n        serie.type = 'bar';\n        break;\n      case PoChartType.Line:\n        serie.type = 'line';\n        break;\n      case PoChartType.Gauge:\n        this.isTypeGauge = true;\n        serie.type = 'gauge';\n        break;\n      case PoChartType.Radar:\n        this.isTypeRadar = true;\n        serie.type = 'radar';\n        break;\n    }\n  }\n\n  private setTableProperties() {\n    const option = this.chartInstance.getOption();\n    let categories: Array<any> = this.isTypeBar ? option.yAxis[0].data : option.xAxis?.[0].data;\n    if (!categories && !this.isTypeGauge) {\n      categories = [];\n      if (Array.isArray(this.series[0]?.data)) {\n        this.series[0].data.forEach((data, index) => categories.push(String(index)));\n      } else {\n        let items = { [this.options?.firstColumnName || this.literals.serie]: '-' };\n        option.series[0].data.forEach(data => (items = { ...items, [data.name]: data.value }));\n        this.itemsTable = [items];\n        return;\n      }\n    }\n    const series: any = option.series;\n\n    if (this.isTypeBar) {\n      this.setTablePropertiesTypeBar(categories, series);\n      return;\n    } else if (this.isTypeGauge) {\n      this.setTablePropertiesTypeGauge();\n      return;\n    } else if (this.isTypeRadar) {\n      this.setTablePropertiesTypeRadar();\n      return;\n    }\n\n    this.itemsTable = series.map((serie: any) => {\n      const rowData: any = { serie: serie.name };\n\n      categories.forEach((category: any, index) => {\n        rowData[category] = serie.data[index];\n      });\n\n      return rowData;\n    });\n    this.setTableColumns(option, categories);\n  }\n\n  private setTablePropertiesTypeBar(categories: Array<any>, series: Array<any>) {\n    this.itemsTable = categories.map((category: string, index: number) => {\n      const rowData: any = { categoria: category };\n\n      series.forEach((serie: any) => {\n        rowData[serie.name] = serie.data[index];\n      });\n\n      return rowData;\n    });\n\n    this.columnsTable = [\n      { property: 'categoria', label: this.options?.firstColumnName || this.literals.category },\n      ...series.map((serie: any) => ({\n        property: serie.name,\n        label: serie.name\n      }))\n    ];\n  }\n\n  private setTablePropertiesTypeGauge() {\n    this.itemsTable = [\n      { [this.literals.value]: this.isGaugeSingle ? this.series[0].data : this.valueGaugeMultiple || '-' }\n    ];\n    if (!this.isGaugeSingle) {\n      this.series.forEach((serie, index) => {\n        const item = {\n          ...this.itemsTable[0],\n          [serie.label || `${this.literals.item} ${index + 1}`]: `${serie.from} - ${serie.to}`\n        };\n        this.itemsTable = [{ ...item }];\n      });\n    }\n  }\n\n  private setTablePropertiesTypeRadar() {\n    let indicators;\n\n    if (!Array.isArray(this.categories) && this.categories?.indicator) {\n      indicators = this.categories.indicator;\n    } else if (Array.isArray(this.categories)) {\n      indicators = this.categories.map(item => ({ name: item }));\n    }\n\n    const series = this.series;\n\n    this.columnsTable = [\n      {\n        property: 'serie',\n        label: this.options?.firstColumnName || this.literals.serie\n      },\n      ...indicators.map((indicator: any) => ({\n        property: indicator.name,\n        label: indicator.name\n      }))\n    ];\n\n    this.itemsTable = series.map((serie: any) => {\n      const row: any = { serie: serie.label };\n\n      indicators.forEach((indicator: any, idx: number) => {\n        const value = serie.data[idx]?.value ?? serie.data[idx];\n        row[indicator.name] = value;\n      });\n\n      return row;\n    });\n  }\n\n  private setTableColumns(option, categories) {\n    this.columnsTable = [\n      { property: 'serie', label: this.options?.firstColumnName || this.literals.serie },\n      ...categories.map((category: string) => ({\n        property: category,\n        label: category\n      }))\n    ];\n  }\n\n  private downloadCsv() {\n    const headers = Object.keys(this.itemsTable[0]);\n    const columnNameDefault = this.isTypeBar ? 'Categoria' : this.literals.serie;\n    const firstColumnName = this.options?.firstColumnName || columnNameDefault;\n    const orderedHeaders = this.columnsTable?.length\n      ? [firstColumnName, ...headers.filter(header => header !== 'serie')]\n      : [...headers.filter(header => header !== 'serie')];\n\n    const csvContent = [\n      orderedHeaders.join(';'),\n      ...this.itemsTable.map(row =>\n        orderedHeaders.map(header => (header === firstColumnName ? row['serie'] : (row[header] ?? ''))).join(';')\n      )\n    ].join('\\n');\n\n    const utf8Bom = '\\uFEFF';\n    const blob = new Blob([utf8Bom + csvContent], { type: 'text/csv;charset=utf-8;' });\n    const url = URL.createObjectURL(blob);\n    const a = document.createElement('a');\n    a.href = url;\n    a.download = 'dados_grafico.csv';\n    document.body.appendChild(a);\n    a.click();\n    document.body.removeChild(a);\n    URL.revokeObjectURL(url);\n  }\n\n  private exportImage(type: 'png' | 'jpeg') {\n    if (!this.chartInstance) {\n      return;\n    }\n\n    if (this.currentRenderer === 'svg') {\n      this.exportSvgAsImage(type);\n    } else {\n      const chartImage = new Image();\n      chartImage.src = this.chartInstance.getDataURL({\n        type: type,\n        pixelRatio: 2,\n        backgroundColor: this.getCSSVariable('--color-neutral-light-00')\n      });\n      this.configureImageCanvas(type, chartImage);\n    }\n  }\n\n  private exportSvgAsImage(type: 'png' | 'jpeg') {\n    const svgEl = this.el.nativeElement.querySelector('#chart-id svg') as SVGSVGElement;\n\n    if (!svgEl) return;\n\n    const serializer = new XMLSerializer();\n    const svgString = serializer.serializeToString(svgEl);\n\n    const svgBlob = new Blob([svgString], { type: 'image/svg+xml;charset=utf-8' });\n    const url = URL.createObjectURL(svgBlob);\n\n    const image = new Image();\n    this.configureImageCanvas(type, image);\n\n    image.src = url;\n  }\n\n  private configureImageCanvas(type: 'png' | 'jpeg', chartImage: HTMLImageElement) {\n    chartImage.onload = () => {\n      const canvas = document.createElement('canvas');\n      const ctx = canvas.getContext('2d');\n\n      if (!ctx) return;\n\n      const chartElement = this.el.nativeElement.querySelector('#chart-id') as HTMLDivElement;\n      const headerElement = this.el.nativeElement.querySelector('.po-chart-header') as HTMLDivElement;\n\n      const chartWidth = chartElement.clientWidth;\n      const chartHeight = chartElement.clientHeight;\n\n      const headerHeight = headerElement?.clientHeight || 40;\n\n      canvas.width = chartWidth;\n      canvas.height = headerHeight + chartHeight + 40;\n      ctx.fillStyle = this.getCSSVariable('--color-neutral-light-00');\n      ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n      this.setHeaderProperties(ctx, headerElement, chartWidth, headerHeight);\n      ctx.drawImage(chartImage, 0, headerHeight, chartWidth, chartHeight);\n\n      const link = document.createElement('a');\n      link.href = canvas.toDataURL(`image/${type}`);\n      link.download = `grafico-exportado.${type}`;\n      document.body.appendChild(link);\n      link.click();\n      document.body.removeChild(link);\n    };\n  }\n\n  private setHeaderProperties(ctx, headerElement, chartWidth, headerHeight) {\n    ctx.fillStyle = this.getCSSVariable('--color-neutral-light-00');\n    ctx.fillRect(0, 0, chartWidth, headerHeight);\n\n    const titleElement = headerElement.querySelector('.po-chart-header-title');\n    const title = titleElement?.innerText ?? 'Gráfico';\n\n    ctx.fillStyle = this.getCSSVariable('--color-neutral-dark-70');\n    ctx.font = 'bold 16px Roboto-Bold';\n    ctx.textAlign = 'left';\n    ctx.fillText(title, 20, headerHeight / 2 + 5);\n  }\n\n  private setPopupActions(): void {\n    this.popupActions = [...this.popupActions, ...(this.customActions || [])];\n  }\n}\n","@if (series.length) {\n  <div\n    [class.expanded]=\"isExpanded\"\n    [class.po-chart-container-gauge]=\"isTypeGauge && !isExpanded && options?.showContainerGauge\"\n    id=\"chart-container\"\n  >\n    @if (showHeader) {\n      <div class=\"po-chart-header\">\n        <div\n          class=\"po-chart-header-title\"\n          [ngClass]=\"\n            !showPopup && options?.header?.hideTableDetails && options?.header?.hideExpand\n              ? 'po-md-12'\n              : 'po-lg-9 po-md-8 po-sm-6'\n          \"\n          [p-tooltip]=\"tooltipTitle\"\n          (mouseover)=\"showTooltipTitle($event)\"\n          (focus)=\"showTooltipTitle($event)\"\n        >\n          {{ title }}\n        </div>\n        @if (showPopup || !options?.header?.hideTableDetails || !options?.header?.hideExpand) {\n          <div class=\"po-chart-header-actions po-lg-3 po-md-4 po-sm-6\">\n            @if (!options?.header?.hideTableDetails) {\n              <po-button p-icon=\"ICON_LIST_BULLETS\" p-kind=\"tertiary\" (p-click)=\"openModal()\"></po-button>\n            }\n            @if (!options?.header?.hideExpand) {\n              <po-button p-icon=\"ICON_EXPAND\" p-kind=\"tertiary\" (p-click)=\"toggleExpand()\"></po-button>\n            }\n            @if (showPopup) {\n              <po-button #targetPopup p-icon=\"ICON_MORE_VERT\" p-kind=\"tertiary\" (p-click)=\"popup.toggle()\"></po-button>\n            }\n          </div>\n        }\n      </div>\n    }\n    @if (options?.descriptionChart) {\n      <div class=\"description-chart\">\n        <div\n          class=\"po-md-12 description-text\"\n          [p-tooltip]=\"tooltipDescriptionGauge\"\n          (mouseover)=\"showTooltipDescription($event)\"\n          (focus)=\"showTooltipDescription($event)\"\n        >\n          {{ options.descriptionChart }}\n        </div>\n      </div>\n    }\n    <div\n      #chartContainer\n      id=\"chart-id\"\n      class=\"po-chart\"\n      [ngStyle]=\"\n        showHeader\n          ? {\n              height: height - headerHeight - paddingContainerGauge - descriptionHeight + 'px',\n              'margin-top': chartMarginTop\n            }\n          : { height: height - paddingContainerGauge - descriptionHeight + 'px', 'margin-top': chartMarginTop }\n      \"\n    ></div>\n    <div\n      #tooltipElement\n      id=\"custom-tooltip\"\n      [p-tooltip]=\"tooltipText\"\n      [p-hide-arrow]=\"true\"\n      [p-inner-html]=\"true\"\n      [p-tooltip-position]=\"positionTooltip\"\n    ></div>\n    <po-popup #popup [p-actions]=\"popupActions\" p-position=\"bottom\" [p-target]=\"targetRef\"> </po-popup>\n  </div>\n}\n","import { CommonModule, CurrencyPipe, DecimalPipe } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoTooltipModule } from '../../directives/po-tooltip/po-tooltip.module';\nimport { PoButtonModule } from '../po-button';\nimport { PoPopupModule } from '../po-popup';\nimport { PoChartComponent } from './po-chart.component';\n\n/**\n * @description\n *\n * Módulo do componente `po-chart`.\n */\n@NgModule({\n  imports: [CommonModule, PoTooltipModule, PoButtonModule, PoPopupModule],\n  declarations: [PoChartComponent],\n  exports: [PoChartComponent],\n  providers: [DecimalPipe, CurrencyPipe]\n})\nexport class PoChartModule {}\n","import { Input, Directive } from '@angular/core';\n\nimport { convertToBoolean, convertToInt } from '../../utils/util';\n\n/**\n * @description\n *\n * O `po-container` é um componente que visa facilitar o agrupamento de conteúdos.\n * Por padrão o mesmo exibe uma borda, um efeito de sombra ao seu redor e um espaçamento em sua parte interna, os quais\n * podem ser desabilitados. Ao remover sua borda a sombra também será removida. Além disso, sua altura acompanha a\n * quantidade do conteúdo, porém pode ser fixada. Para controlar sua largura, utilize o [Grid System](/guides/grid-system),\n * assim possibilitando o tratamento para diferentes resoluções.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                                    | Descrição                                              | Valor Padrão                                     |\n * |------------------------------------------------|--------------------------------------------------------|--------------------------------------------------|\n * | **Default Values - CONTENT**                  |                                                        |                                                  |\n * | `--padding` &nbsp;                             | Preenchimento                                          | `var(--spacing-sm)`                              |\n * | `--border-radius` &nbsp;                       | Contém o valor do raio dos cantos do elemento&nbsp;    | `var(--border-radius-md)`                        |\n * | `--border-width` &nbsp;                        | Contém o valor da largura dos cantos do elemento&nbsp; | `var(--border-width-sm)`                         |\n * | `--border-color` &nbsp;                        | Cor da borda                                           | `var(--color-neutral-light-20)`                  |\n * | `--background` &nbsp;                          | Cor de background                                      | `var(--color-neutral-light-00)`                  |\n * | **Default Values - TITLE**                    |                                                        |                                                  |\n * | `--font-family` &nbsp;                         | Font aplicado ao titulo                                | `var(--font-family-theme)`                       |\n * | `--line-weight` &nbsp;                         | Espessura da Fonte a ser aplicada do titulo            | `var(--font-weight-semibold)`                    |\n * | `--line-height` &nbsp;                         | tamanho da linha do titulo                             | `var(--line-height-md)`                          |\n * | `--text-color` &nbsp;                          | Cor do Texto do titulo                                 | `var(--color-neutral-dark-90)`                   |\n * | `--font-size` &nbsp;                           | Tamanho da fonte do titulo                             | `1.125rem`                                       |\n * | `--letter-spacing` &nbsp;                      | distancia entre letras do titulo                       | `0.017rem`                                       |\n * | `--margin` &nbsp;                              | Margin entre o titulo e o conteudo                     | `0 0 var(--spacing-xs)`                          |\n *\n */\n@Directive()\nexport class PoContainerBaseComponent {\n  private _height?: number;\n  private _noBorder?: boolean = false;\n  private _noPadding?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a altura do `po-container`.\n   *\n   * > Caso não seja definido um valor, a altura se ajustará de acordo com o conteúdo.\n   */\n  @Input('p-height') set height(value: number) {\n    this._height = convertToInt(value);\n  }\n\n  get height(): number {\n    return this._height;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita a borda e a sombra em torno do `po-container`.\n   *\n   * @default `false`\n   */\n  @Input('p-no-border') set noBorder(value: boolean) {\n    this._noBorder = convertToBoolean(value);\n  }\n\n  get noBorder(): boolean {\n    return this._noBorder;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita o espaçamento interno do `po-container`.\n   *\n   * @default `false`\n   */\n  @Input('p-no-padding') set noPadding(value: boolean) {\n    this._noPadding = convertToBoolean(value);\n  }\n\n  get noPadding(): boolean {\n    return this._noPadding;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Título do Container.\n   */\n  @Input('p-title') title: string;\n}\n","import { Component } from '@angular/core';\n\nimport { PoContainerBaseComponent } from './po-container-base.component';\n\n/**\n * @docsExtends PoContainerBaseComponent\n *\n * @example\n *\n * <example name=\"po-container-basic\" title=\"PO Container Basic\">\n *  <file name=\"sample-po-container-basic/sample-po-container-basic.component.html\"> </file>\n *  <file name=\"sample-po-container-basic/sample-po-container-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-container-labs\" title=\"PO Container Labs\">\n *  <file name=\"sample-po-container-labs/sample-po-container-labs.component.html\"> </file>\n *  <file name=\"sample-po-container-labs/sample-po-container-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-container-dashboard\" title=\"PO Container - Dashboard\">\n *  <file name=\"sample-po-container-dashboard/sample-po-container-dashboard.component.html\"> </file>\n *  <file name=\"sample-po-container-dashboard/sample-po-container-dashboard.component.ts\"> </file>\n *  <file name=\"sample-po-container-dashboard/sample-po-container-dashboard.component.css\"> </file>\n *  <file name=\"sample-po-container-dashboard/sample-po-container-dashboard.service.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-container',\n  templateUrl: './po-container.component.html',\n  standalone: false\n})\nexport class PoContainerComponent extends PoContainerBaseComponent {}\n","<div class=\"po-container\">\n  @if (title) {\n    <div class=\"po-container-title\">\n      {{ title }}\n    </div>\n  }\n  <div\n    class=\"po-container-content\"\n    [class.po-container-no-border]=\"noBorder\"\n    [class.po-container-no-padding]=\"noPadding\"\n    [style.height]=\"height ? height + 'px' : 'auto'\"\n  >\n    <ng-content></ng-content>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoContainerComponent } from './po-container.component';\n\n/**\n * @description\n *\n * Módulo do componente `po-container`.\n */\n@NgModule({\n  imports: [CommonModule],\n  exports: [PoContainerComponent],\n  declarations: [PoContainerComponent]\n})\nexport class PoContainerModule {}\n","import { Directive, input, model, output } from '@angular/core';\n\nimport { PoContextMenuItem } from './po-context-menu-item.interface';\n\n/**\n * @description\n *\n * O componente `po-context-menu` é uma barra lateral de contexto (sidebar) para navegação interna entre contextos.\n * Inspirado visualmente no `po-menu`, porém independente e focado em navegação contextual.\n *\n * No caso de uso do componente `po-page-default` em conjunto, ambos devem estar no mesmo nível\n * e inseridos em uma div com a classe **po-context-menu-wrapper**.\n * Esta classe é responsável por fazer os cálculos necessários para o alinhamento dos componentes.\n *\n * O uso simultâneo dos componentes `po-menu` e `po-context-menu` não é recomendado.\n * Porém, se os mesmos forem necessários na mesma interface, certifique-se de que não permaneçam expandidos\n * simultaneamente para não comprometer a usabilidade.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                                    | Valor Padrão                                    |\n * |----------------------------------------|--------------------------------------------------------------|-------------------------------------------------|\n * | **Default Values**                     |                                                              |                                                 |\n * | `--font-family`                        | Família tipográfica usada                                    | `var(--font-family-theme)`                      |\n * | `--font-size`                          | Tamanho da fonte dos itens                                   | `var(--font-size-default)`                      |\n * | `--font-size-context-title`            | Tamanho da fonte do título de contexto                       | `var(--font-size-sm)`                           |\n * | `--font-size-title`                    | Tamanho da fonte do título principal                         | `var(--font-size-lg)`                           |\n * | `--line-height`                        | Altura da linha                                              | `var(--line-height-md)`                         |\n * | `--border-radius`                      | Raio dos cantos dos itens                                    | `var(--border-radius-md)`                       |\n * | `--border-color`                       | Cor da borda lateral direita do componente                   | `var(--color-neutral-light-20)`                 |\n * | `--background-color`                   | Cor de fundo do componente                                   | `var(--color-neutral-light-05)`                 |\n * | `--color`                              | Cor do texto dos itens                                       | `var(--color-action-default)`                   |\n * | `--color-context-title`                | Cor do texto do título de contexto                           | `var(--color-neutral-mid-40)`                   |\n * | `--color-title`                        | Cor do texto do título principal                             | `var(--color-neutral-dark-80)`                  |\n * | `--font-weight`                        | Peso da fonte dos itens                                      | `var(--font-weight-bold)`                       |\n * | `--font-weight-title`                  | Peso da fonte do título principal                            | `var(--font-weight-bold)`                       |\n * | `--outline-color-focused`              | Cor do outline no estado de focus                            | `var(--color-action-focus)`                     |\n * | **Hover**                              |                                                              |                                                 |\n * | `--color-hover`                        | Cor do texto no estado hover                                 | `var(--color-brand-01-darkest)`                 |\n * | `--background-color-hover`             | Cor de fundo no estado hover                                 | `var(--color-brand-01-lighter)`                 |\n * | **Pressed**                            |                                                              |                                                 |\n * | `--background-color-pressed`           | Cor de fundo no estado pressed                               | `var(--color-brand-01-light)`                   |\n * | **Active (Selected)**                  |                                                              |                                                 |\n * | `--background-color-actived`           | Cor de fundo do item selecionado                             | `var(--color-brand-01-lightest)`                |\n * | `--color-actived`                      | Cor do texto do item selecionado                             | `var(--color-action-pressed)`                   |\n *\n */\n@Directive()\nexport class PoContextMenuBaseComponent {\n  /**\n   * Título do contexto superior\n   */\n  contextTitle = input<string>('', { alias: 'p-context-title' });\n\n  /**\n   * Título principal do menu\n   */\n  title = input<string>('', { alias: 'p-title' });\n\n  /**\n   * Lista de itens para renderização.\n   *\n   * > Ao receber os itens, o componente valida que apenas um item pode ter `selected: true`.\n   * > Se mais de um item estiver com `selected: true`, apenas o primeiro será mantido como selecionado.\n   */\n  items = input<Array<PoContextMenuItem>>([], { alias: 'p-items' });\n\n  /**\n   * Define se o menu está aberto ou fechado.\n   *\n   * Suporta two-way binding:\n   *\n   * ```html\n   * <po-context-menu\n   *   [(p-expanded)]=\"expanded\"\n   * />\n   * ```\n   *\n   * ou\n   *\n   * ```html\n   * <po-context-menu\n   *   [(p-expanded)]=\"expanded\"\n   *   (p-expandedChange)=\"handlerExpanded($event)\"\n   * />\n   * ```\n   *\n   * @default `true`\n   */\n  expanded = model<boolean>(true, { alias: 'p-expanded' });\n\n  /**\n   * Evento emitido ao selecionar um item. Emite o item selecionado.\n   */\n  itemSelected = output<PoContextMenuItem>({ alias: 'p-item-selected' });\n}\n","import { ChangeDetectionStrategy, Component, effect, inject, signal, WritableSignal } from '@angular/core';\n\nimport { PoContextMenuBaseComponent } from './po-context-menu-base.component';\nimport { PoContextMenuItem } from './po-context-menu-item.interface';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\n\ninterface PoContextMenuLiterals {\n  close: string;\n  open: string;\n}\n\nconst poContextMenuLiteralsDefault = {\n  en: {\n    close: 'Close menu',\n    open: 'Open menu'\n  },\n  es: {\n    close: 'Cerrar menú',\n    open: 'Abrir menú'\n  },\n  pt: {\n    close: 'Fechar menu',\n    open: 'Abrir menu'\n  },\n  ru: {\n    close: 'Закрыть меню',\n    open: 'Открыть меню'\n  }\n};\n\ninterface PoInternalContextMenuItem extends PoContextMenuItem {\n  tooltip?: string;\n}\n\n/**\n * @docsExtends PoContextMenuBaseComponent\n *\n * @example\n *\n * <example name=\"po-context-menu-basic\" title=\"PO Context Menu Basic\">\n *  <file name=\"sample-po-context-menu-basic/sample-po-context-menu-basic.component.html\"> </file>\n *  <file name=\"sample-po-context-menu-basic/sample-po-context-menu-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-context-menu-labs\" title=\"PO Context Menu Labs\">\n *  <file name=\"sample-po-context-menu-labs/sample-po-context-menu-labs.component.html\"> </file>\n *  <file name=\"sample-po-context-menu-labs/sample-po-context-menu-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-context-menu-user\" title=\"PO Context - Cadastro de Usuário\">\n *  <file name=\"sample-po-context-menu-user/sample-po-context-menu-user.component.html\"> </file>\n *  <file name=\"sample-po-context-menu-user/sample-po-context-menu-user.component.ts\"> </file>\n *  <file name=\"sample-po-context-menu-user/sample-po-context-menu-user.component.css\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-context-menu',\n  templateUrl: './po-context-menu.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoContextMenuComponent extends PoContextMenuBaseComponent {\n  private readonly languageService = inject(PoLanguageService);\n  literals: PoContextMenuLiterals;\n\n  protected _items = signal<Array<PoInternalContextMenuItem>>([]);\n  protected _titleTooltipCalculated = false;\n  protected _contextTitleTooltipCalculated = false;\n\n  protected titleTooltip = signal<string | null>(null);\n  protected contextTitleTooltip = signal<string | null>(null);\n\n  constructor() {\n    super();\n\n    this.setLiterals();\n\n    effect(() => {\n      const currentItems = this.items();\n      if (this.hasMultipleSelected(currentItems)) {\n        this._items.set(this.sanitizeSelection(currentItems));\n      } else {\n        this._items.set(currentItems);\n      }\n\n      if (this.title() !== this.titleTooltip()) {\n        this.titleTooltip.set(null);\n        this._titleTooltipCalculated = false;\n      }\n\n      if (this.contextTitle() !== this.contextTitleTooltip()) {\n        this.contextTitleTooltip.set(null);\n        this._contextTitleTooltipCalculated = false;\n      }\n    });\n  }\n\n  toggleExpand(): void {\n    this.expanded.update(v => !v);\n  }\n\n  selectItem(item: PoContextMenuItem): void {\n    let selectedItem: PoInternalContextMenuItem;\n\n    const updatedItems = this._items().map(i => {\n      const updated = { ...i, selected: i === item };\n      if (updated.selected) {\n        selectedItem = updated;\n      }\n      return updated;\n    });\n\n    this._items.set(updatedItems);\n    this.itemSelected.emit(selectedItem);\n\n    if (item.action) {\n      item.action(selectedItem);\n    }\n  }\n\n  protected handlerItemTooltip(item: PoInternalContextMenuItem, value: HTMLLIElement): void {\n    if (item.tooltip) {\n      return;\n    }\n\n    const label = value.firstElementChild as HTMLSpanElement;\n    if (label.scrollHeight > label.offsetHeight) {\n      this._items.update(items => items.map(i => (i === item ? { ...i, tooltip: item.label } : i)));\n    }\n  }\n\n  protected handlerTitleTooltip(value: HTMLElement): void {\n    if (this._titleTooltipCalculated) {\n      return;\n    }\n\n    this.applyTooltipIfOverflows(value, this.title(), this.titleTooltip);\n    this._titleTooltipCalculated = true;\n  }\n\n  protected handlerContextTitleTooltip(value: HTMLElement): void {\n    if (this._contextTitleTooltipCalculated) {\n      return;\n    }\n\n    this.applyTooltipIfOverflows(value, this.contextTitle(), this.contextTitleTooltip);\n    this._contextTitleTooltipCalculated = true;\n  }\n\n  private setLiterals() {\n    this.literals = {\n      ...poContextMenuLiteralsDefault[this.languageService?.getLanguageDefault()],\n      ...poContextMenuLiteralsDefault[this.languageService?.getShortLanguage()]\n    };\n  }\n\n  private hasMultipleSelected(items: Array<PoContextMenuItem>): boolean {\n    let count = 0;\n    for (const item of items) {\n      if (item.selected && ++count > 1) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  private sanitizeSelection(items: Array<PoContextMenuItem>): Array<PoInternalContextMenuItem> {\n    const firstIndex = items.findIndex(i => i.selected);\n    return items.map((item, index) => (item.selected && index !== firstIndex ? { ...item, selected: false } : item));\n  }\n\n  private applyTooltipIfOverflows(\n    element: HTMLElement,\n    textValue: string,\n    storageSignal: WritableSignal<string>\n  ): void {\n    const hasOverflow = element.scrollHeight > element.offsetHeight;\n\n    if (hasOverflow) {\n      storageSignal.set(textValue);\n    }\n  }\n}\n","<div class=\"po-context-menu\" [class.po-context-menu-collapsed]=\"!expanded()\">\n  <div class=\"po-context-menu-header\">\n    <button\n      class=\"po-context-menu-toggle\"\n      type=\"button\"\n      [attr.aria-label]=\"expanded() ? literals.close : literals.open\"\n      (click)=\"toggleExpand()\"\n    >\n      <po-icon [p-icon]=\"expanded() ? 'ICON_SIDEBAR' : 'ICON_SIDEBAR_SIMPLES'\" />\n    </button>\n\n    @if (expanded()) {\n      <div class=\"po-context-menu-header-content\">\n        @if (contextTitle()) {\n          <span\n            #contextTitleRef\n            class=\"po-context-menu-context-title\"\n            (mouseenter)=\"handlerContextTitleTooltip(contextTitleRef)\"\n            p-tooltip-position=\"right\"\n            [p-tooltip]=\"contextTitleTooltip()\"\n          >\n            {{ contextTitle() }}\n          </span>\n        }\n        @if (title()) {\n          <span\n            #titleRef\n            class=\"po-context-menu-title\"\n            (mouseenter)=\"handlerTitleTooltip(titleRef)\"\n            p-tooltip-position=\"right\"\n            [p-tooltip]=\"titleTooltip()\"\n          >\n            {{ title() }}\n          </span>\n        }\n      </div>\n    }\n  </div>\n\n  @if (expanded()) {\n    <nav class=\"po-context-menu-body\">\n      <ul class=\"po-context-menu-list\" role=\"menu\">\n        @for (item of _items(); track $index) {\n          <li\n            #itemRef\n            class=\"po-context-menu-list-item\"\n            role=\"menuitem\"\n            tabindex=\"0\"\n            [attr.aria-label]=\"item.label\"\n            [class.po-context-menu-item-selected]=\"item.selected\"\n            (click)=\"selectItem(item)\"\n            (keydown.enter)=\"selectItem(item)\"\n            (keydown.space)=\"selectItem(item)\"\n            (mouseenter)=\"handlerItemTooltip(item, itemRef)\"\n            p-tooltip-position=\"right\"\n            [p-tooltip]=\"item.tooltip\"\n          >\n            <span class=\"po-context-menu-item-label\">{{ item.label }}</span>\n          </li>\n        }\n      </ul>\n    </nav>\n  }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoIconModule } from '../po-icon/po-icon.module';\nimport { PoTooltipModule } from '../../directives';\n\nimport { PoContextMenuComponent } from './po-context-menu.component';\n\n/**\n * @description\n *\n * Módulo do componente po-context-menu.\n */\n@NgModule({\n  imports: [CommonModule, PoIconModule, PoTooltipModule],\n  declarations: [PoContextMenuComponent],\n  exports: [PoContextMenuComponent]\n})\nexport class PoContextMenuModule {}\n","export const PoDisclaimerLiterals = {\n  en: {\n    remove: 'Remove'\n  },\n  es: {\n    remove: 'Eliminar'\n  },\n  pt: {\n    remove: 'Remover'\n  },\n  ru: {\n    remove: 'удалять'\n  }\n};\n","import { PoLanguageService } from './../../services/po-language/po-language.service';\nimport { EventEmitter, Input, Output, Directive } from '@angular/core';\n\nimport { convertToBoolean } from '../../utils/util';\nimport { PoDisclaimerLiterals } from './po-disclaimer.literals';\n\nconst PO_DISCLAIMER_TYPES = ['default', 'danger'];\nconst PO_DISCLAIMER_DEFAULT_TYPE = 'default';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * O componente po-disclaimer é responsável por representar tags.\n * Seu uso é recomendado em buscas e em campos onde é necessário representar objetos selecionados,\n * como por exemplo, no po-multi-select.\n *\n */\n@Directive()\nexport class PoDisclaimerBaseComponent {\n  /**\n   * Label que aparecerá dentro do po-disclaimer.\n   * Quando não for definido um label será apresentada a propriedade p-value.\n   */\n  @Input('p-label') label?: string;\n\n  /** Valor do po-disclaimer. */\n  @Input('p-value') value: string;\n\n  /** Nome da propriedade vinculada à este po-disclaimer. */\n  @Input('p-property') property?: string;\n\n  @Input('p-disclaimer-custom-width') disclaimerCustomWidth: number = 201;\n\n  @Input('p-last-disclaimer') lastDisclaimer: boolean = false;\n\n  @Input('p-append-in-body') appendInBody: boolean = false;\n\n  @Input('p-tooltip-position') tooltipPosition: string = 'bottom';\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao fechar o disclaimer.\n   * Para este evento será passado como parâmetro um objeto com value, label e property.\n   */\n  @Output('p-close-action') closeAction: EventEmitter<any> = new EventEmitter<any>();\n\n  @Output('p-click-number') clickNumber: EventEmitter<any> = new EventEmitter<any>();\n\n  literals: any;\n  showDisclaimer = true;\n\n  private _type: string = 'default';\n  private _hideClose?: boolean = false;\n\n  /**\n   * @description\n   *\n   * Esta propriedade esconde o botão para fechamento do po-disclaimer, ao utilizar esta propriedade\n   * sem passar valor a mesma é setada como false, onde o botão de fechamento está visível.\n   *\n   * @default false\n   */\n  @Input('p-hide-close') set hideClose(value: boolean) {\n    this._hideClose = <any>value === '' ? true : convertToBoolean(value);\n  }\n\n  get hideClose(): boolean {\n    return this._hideClose;\n  }\n\n  /**\n   * @description\n   *\n   * Tipo do po-disclaimer. Pode ser 'default' ou 'danger'.\n   *\n   * @default default\n   * @optional\n   */\n  @Input('p-type') set type(type: string) {\n    this._type = PO_DISCLAIMER_TYPES.includes(type) ? type : PO_DISCLAIMER_DEFAULT_TYPE;\n  }\n\n  get type(): string {\n    return this._type;\n  }\n\n  constructor(private readonly languageService: PoLanguageService) {\n    const language = this.languageService?.getShortLanguage();\n    this.literals = {\n      ...PoDisclaimerLiterals[language]\n    };\n  }\n\n  close(): void {\n    this.showDisclaimer = false;\n    this.closeAction.emit({ value: this.value, label: this.label, property: this.property });\n  }\n\n  getLabel() {\n    return this.label ? this.label : this.value;\n  }\n\n  setAriaLabel() {\n    return this.label ? this.label + ' ' + this.literals.remove : this.value + ' ' + this.literals.remove;\n  }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, ViewChild } from '@angular/core';\n\nimport { PoUtils } from '../../utils/util';\n\nimport { PoDisclaimerBaseComponent } from './po-disclaimer-base.component';\n\n/**\n * @docsPrivate\n *\n * @docsExtends PoDisclaimerBaseComponent\n *\n * @examplePrivate\n *\n * <example-private name=\"po-disclaimer\" title=\"PO Disclaimer\">\n *   <file name=\"sample-po-disclaimer.component.html\"> </file>\n *   <file name=\"sample-po-disclaimer.component.ts\"> </file>\n * </example-private>\n */\n@Component({\n  selector: 'po-disclaimer',\n  templateUrl: './po-disclaimer.component.html',\n  standalone: false\n})\nexport class PoDisclaimerComponent extends PoDisclaimerBaseComponent {\n  @ViewChild('disclaimerContainer', { static: true }) disclaimerContainer: ElementRef;\n\n  onKeyPress(event: any) {\n    if (PoUtils.isKeyCodeEnter(event)) {\n      this.close();\n    }\n  }\n\n  emitLastDisclaimer(isLast) {\n    if (isLast) {\n      this.clickNumber.emit();\n    }\n  }\n\n  getWidthDisclaimer() {\n    return this.disclaimerContainer.nativeElement.offsetWidth > this.disclaimerCustomWidth;\n  }\n}\n","<div #disclaimerContainer class=\"disclaimer-container\">\n  @if (showDisclaimer === true) {\n    <div\n      class=\"po-disclaimer\"\n      [class.po-disclaimer-remove-all]=\"hideClose\"\n      [class.po-disclaimer-danger]=\"type === 'danger'\"\n      [p-tooltip]=\"getWidthDisclaimer() ? getLabel() : ''\"\n      [p-append-in-body]=\"appendInBody\"\n      [p-tooltip-position]=\"tooltipPosition\"\n      [tabindex]=\"hideClose ? '0' : '-1'\"\n      (click)=\"emitLastDisclaimer(lastDisclaimer)\"\n      (keydown.enter)=\"emitLastDisclaimer(lastDisclaimer)\"\n    >\n      <div class=\"po-disclaimer-label\" [class.show-close]=\"!hideClose\">\n        <span class=\"label\">\n          {{ getLabel() }}\n        </span>\n      </div>\n      @if (hideClose === false) {\n        <po-icon\n          p-icon=\"ICON_CLOSE\"\n          [attr.aria-label]=\"setAriaLabel()\"\n          [attr.role]=\"!hideClose ? 'button' : ''\"\n          class=\"po-disclaimer-remove po-clickable\"\n          tabindex=\"0\"\n          [class.po-disclaimer-remove-danger]=\"type === 'danger'\"\n          (click)=\"close()\"\n          (keydown)=\"onKeyPress($event)\"\n        ></po-icon>\n      }\n    </div>\n  }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PoIconModule } from '../po-icon';\nimport { PoTooltipModule } from '../../directives/po-tooltip/index';\n\nimport { PoDisclaimerComponent } from './po-disclaimer.component';\n\n/**\n * @description\n * Módulo do componente po-disclaimer.\n */\n@NgModule({\n  imports: [CommonModule, PoIconModule, PoTooltipModule],\n  declarations: [PoDisclaimerComponent],\n  exports: [PoDisclaimerComponent]\n})\nexport class PoDisclaimerModule {}\n","import { ChangeDetectorRef, Directive, DoCheck, EventEmitter, Input, IterableDiffers, Output } from '@angular/core';\n\nimport { poLocaleDefault } from '../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { convertToBoolean, uuid, PoUtils } from '../../utils/util';\n\nimport { PoDisclaimer } from '../po-disclaimer/po-disclaimer.interface';\n\nexport const poDisclaimerGroupLiteralsDefault = {\n  en: { removeAll: 'Remove all' },\n  es: { removeAll: 'Eliminar todos' },\n  pt: { removeAll: 'Remover todos' },\n  ru: { removeAll: 'Удалить все' }\n};\n\n/**\n * @description\n *\n * O componente `po-disclaimer-group` é recomendado para manipular palavras-chave de filtros aplicados em uma pesquisa.\n *\n * À partir de dois *disclaimers* com o botão **fechar** habilitado, o componente renderiza de forma automática um novo e destacado\n * *disclaimer* que possibilita **remover todos**, mas que também pode ser desabilitado.\n *\n * Também é possível navegar entre os *disclaimers* através do teclado utilizando a tecla *tab* e, para remoção do *disclaimer* selecionado,\n * basta pressionar a tecla *enter*. Esta funcionalidade não se aplica caso a propriedade `hideClose` estiver habilitada.\n *\n * > Veja a integração destas funcionalidade no componente [po-page-list](/documentation/po-page-list).\n */\n@Directive()\nexport class PoDisclaimerGroupBaseComponent implements DoCheck {\n  /** Título do grupo de *disclaimers*. */\n  @Input('p-title') title?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Função que será disparada quando a lista de *disclaimers* for modificada.\n   */\n  @Output('p-change') change: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Função que será disparada quando um *disclaimer* for removido da lista de *disclaimers* pelo usuário.\n   *\n   * Recebe como parâmetro um objeto conforme a interface `PoDisclaimerGroupRemoveAction`.\n   */\n  @Output('p-remove') remove: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Função que será disparada quando todos os *disclaimers* forem removidos da lista de *disclaimers* pelo usuário,\n   * utilizando o botão \"remover todos\".\n   *\n   * Recebe como parâmetro uma lista contendo todos os `disclaimers` removidos.\n   */\n  @Output('p-remove-all') removeAll: EventEmitter<any> = new EventEmitter<any>();\n\n  literals;\n\n  private _disclaimers: Array<PoDisclaimer> = [];\n  private _hideRemoveAll: boolean = false;\n\n  private readonly differ;\n  private previousDisclaimers: Array<PoDisclaimer> = [];\n\n  /** Lista de *disclaimers*. */\n\n  /**\n   * @description\n   *\n   * Lista de *disclaimers*.\n   *\n   * Para que a lista de *disclaimers* seja atualizada dinamicamente deve-se passar uma nova referência do array de `PoDisclaimer`.\n   *\n   * Exemplo adicionando um *disclaimer* no array:\n   *\n   * ```\n   * this.disclaimers = [...this.disclaimers, disclaimer];\n   * ```\n   *\n   * ou\n   *\n   * ```\n   * this.disclaimers = this.disclaimers.concat(disclaimer);\n   * ```\n   */\n  @Input('p-disclaimers') set disclaimers(value: Array<PoDisclaimer>) {\n    this.previousDisclaimers = [...this.disclaimers];\n    this._disclaimers = this.checkDisclaimers(value);\n  }\n\n  get disclaimers() {\n    return this._disclaimers;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Oculta o botão para remover todos os *disclaimers* do grupo.\n   *\n   * > Por padrão, o mesmo é exibido à partir de dois ou mais *disclaimers* com a opção `hideClose` habilitada.\n   *\n   * @default `false`\n   */\n  @Input('p-hide-remove-all')\n  set hideRemoveAll(value: boolean) {\n    this._hideRemoveAll = <any>value === '' ? true : convertToBoolean(value);\n  }\n\n  get hideRemoveAll() {\n    return this._hideRemoveAll;\n  }\n\n  constructor(\n    differs: IterableDiffers,\n    languageService: PoLanguageService,\n    protected changeDetector: ChangeDetectorRef\n  ) {\n    const language = languageService.getShortLanguage();\n\n    this.differ = differs.find([]).create(null);\n\n    this.literals = {\n      ...poDisclaimerGroupLiteralsDefault[poLocaleDefault],\n      ...poDisclaimerGroupLiteralsDefault[language]\n    };\n  }\n\n  ngDoCheck() {\n    this.checkChanges();\n  }\n\n  isRemoveAll() {\n    return !this.hideRemoveAll && this.disclaimers.filter(c => !c.hideClose).length > 1;\n  }\n\n  onKeyPress(event: any) {\n    if (PoUtils.isKeyCodeEnter(event)) {\n      this.removeAllItems();\n    }\n  }\n\n  removeAllItems() {\n    const removeItems = [];\n\n    this.disclaimers.forEach(disclaimer => {\n      if (!disclaimer.hideClose) {\n        removeItems.push(disclaimer);\n      }\n    });\n\n    removeItems.forEach(disclaimer => this.removeDisclaimer(disclaimer));\n\n    this.emitChangeDisclaimers();\n    this.removeAll.emit([...removeItems]);\n  }\n\n  protected removeDisclaimer(disclaimer: any) {\n    const itemIndex = this.disclaimers.findIndex(d => d['$id'] === disclaimer['$id']);\n    this.disclaimers.splice(itemIndex, 1);\n  }\n\n  protected emitChangeDisclaimers() {\n    setTimeout(() => {\n      this.change.emit(this.disclaimers);\n    });\n    this.previousDisclaimers = [...this._disclaimers];\n    this.changeDetector?.detectChanges();\n  }\n\n  private checkChanges() {\n    if (this.differ) {\n      const changes = this.differ.diff(this.disclaimers);\n\n      if (changes && this.disclaimersAreChanged(this.disclaimers)) {\n        this.emitChangeDisclaimers();\n      }\n    } else {\n      this.changeDetector?.detectChanges();\n    }\n  }\n\n  private checkDisclaimers(disclaimers: Array<PoDisclaimer>) {\n    if (Array.isArray(disclaimers)) {\n      for (let i = 0; i < disclaimers.length; i++) {\n        const disclaimer = disclaimers[i];\n\n        if (disclaimer.value || disclaimer.value === 0 || disclaimer.value === false) {\n          disclaimer['$id'] = uuid();\n        } else {\n          disclaimers.splice(i, 1);\n          i--;\n        }\n      }\n\n      return disclaimers;\n    }\n\n    return [];\n  }\n\n  private disclaimersAreChanged(disclaimers: Array<PoDisclaimer>): boolean {\n    const currentValues: Array<PoDisclaimer> = disclaimers;\n\n    if (currentValues.length !== this.previousDisclaimers.length) {\n      return true;\n    }\n\n    return currentValues.some(\n      (disclaimer, index) =>\n        disclaimer.value !== this.previousDisclaimers[index].value ||\n        disclaimer.property !== this.previousDisclaimers[index].property\n    );\n  }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n/**\n * @docsPrivate\n *\n * @description\n *\n * Este é um componente interno utilizado pelo po-disclaimer-group, se comporta como um botão e recebe uma ação para remover todos os\n * po-disclaimers do grupo.\n */\n@Component({\n  selector: 'po-disclaimer-remove',\n  templateUrl: './po-disclaimer-remove.component.html',\n  standalone: false\n})\nexport class PoDisclaimerRemoveComponent {\n  /** Texto exibido.  */\n  @Input('p-label') label?: string;\n\n  /** Ação para remover todos.  */\n  @Output('p-remove-all-action') removeAllAction = new EventEmitter();\n\n  // Emite a ação de remover todos.\n  removeAction() {\n    this.removeAllAction.emit();\n  }\n}\n","<po-tag class=\"po-clickable\" p-type=\"danger\" [p-value]=\"label\" (p-click)=\"removeAction()\"> </po-tag>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  IterableDiffers,\n  OnChanges,\n  SimpleChanges,\n  inject\n} from '@angular/core';\n\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\n\nimport { Subscription, fromEvent } from 'rxjs';\nimport { PoDisclaimerGroupBaseComponent } from './po-disclaimer-group-base.component';\nimport { PoDisclaimer } from '../po-disclaimer/po-disclaimer.interface';\n\n/**\n * @docsExtends PoDisclaimerGroupBaseComponent\n *\n * @example\n *\n * <example name=\"po-disclaimer-group-basic\" title=\"PO Disclaimer Group Basic\">\n *   <file name=\"sample-po-disclaimer-group-basic/sample-po-disclaimer-group-basic.component.html\"> </file>\n *   <file name=\"sample-po-disclaimer-group-basic/sample-po-disclaimer-group-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-disclaimer-group-labs\" title=\"PO Disclaimer Group Labs\">\n *   <file name=\"sample-po-disclaimer-group-labs/sample-po-disclaimer-group-labs.component.html\"> </file>\n *   <file name=\"sample-po-disclaimer-group-labs/sample-po-disclaimer-group-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-disclaimer-group-sw-planets\" title=\"PO Disclaimer Group - Star Wars Planets\">\n *   <file name=\"sample-po-disclaimer-group-sw-planets/sample-po-disclaimer-group-sw-planets.component.html\"> </file>\n *   <file name=\"sample-po-disclaimer-group-sw-planets/sample-po-disclaimer-group-sw-planets.component.ts\"> </file>\n *   <file name=\"sample-po-disclaimer-group-sw-planets/sample-po-disclaimer-group-sw-planets.service.ts\"> </file>\n * </example>\n *\n */\n@Component({\n  selector: 'po-disclaimer-group',\n  templateUrl: './po-disclaimer-group.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoDisclaimerGroupComponent extends PoDisclaimerGroupBaseComponent implements AfterViewInit, OnChanges {\n  private subscription: Subscription = new Subscription();\n\n  private readonly el = inject(ElementRef);\n\n  constructor() {\n    const differs = inject(IterableDiffers);\n    const languageService = inject(PoLanguageService);\n    const changeDetector = inject(ChangeDetectorRef);\n\n    super(differs, languageService, changeDetector);\n\n    this.changeDetector = changeDetector;\n  }\n\n  ngAfterViewInit(): void {\n    this.handleKeyboardNavigationTag();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.disclaimers) {\n      setTimeout(() => {\n        this.handleKeyboardNavigationTag();\n      });\n    }\n  }\n\n  onCloseAction(disclaimer: PoDisclaimer, event?) {\n    const index = this.disclaimers.findIndex(option => option.value === disclaimer.value);\n\n    this.removeDisclaimer(disclaimer);\n\n    this.emitChangeDisclaimers();\n    this.remove.emit({\n      removedDisclaimer: { ...disclaimer },\n      currentDisclaimers: [...this.disclaimers]\n    });\n\n    setTimeout(() => {\n      this.focusOnNextTag(index, event);\n    }, 300);\n  }\n\n  focusOnNextTag(indexClosed: number, clickOrEnter: string) {\n    if (clickOrEnter === 'enter') {\n      const tagRemoveElements: NodeListOf<Element> = this.el.nativeElement.querySelectorAll('.po-tag-remove');\n      indexClosed = indexClosed || indexClosed === 0 ? indexClosed : tagRemoveElements.length;\n      this.focusOnRemoveTag(tagRemoveElements, indexClosed);\n    } else {\n      indexClosed = 0;\n    }\n    this.handleKeyboardNavigationTag(indexClosed);\n  }\n\n  handleKeyboardNavigationTag(initialIndex = 0) {\n    this.subscription.unsubscribe();\n    this.subscription = new Subscription();\n    const tagRemoveElements: NodeListOf<Element> = this.el.nativeElement.querySelectorAll('.po-tag-remove');\n    this.initializeTagRemoveElements(tagRemoveElements, initialIndex);\n  }\n\n  private handleArrowLeft(tagRemoveElements, index) {\n    if (index > 0) {\n      this.setTabIndex(tagRemoveElements[index], -1);\n      tagRemoveElements[index - 1].focus();\n      this.setTabIndex(tagRemoveElements[index - 1], 0);\n    }\n  }\n\n  private handleArrowRight(tagRemoveElements, index) {\n    if (index < tagRemoveElements.length - 1) {\n      this.setTabIndex(tagRemoveElements[index], -1);\n      tagRemoveElements[index + 1].focus();\n      this.setTabIndex(tagRemoveElements[index + 1], 0);\n    }\n  }\n\n  private setTabIndex(element, tabIndex) {\n    element.setAttribute('tabindex', tabIndex);\n  }\n\n  private initializeTagRemoveElements(tagRemoveElements, initialIndex) {\n    tagRemoveElements.forEach((tagRemoveElement, index) => {\n      if (index === initialIndex) {\n        this.setTabIndex(tagRemoveElements[initialIndex], 0);\n      } else if (tagRemoveElements.length === initialIndex) {\n        this.setTabIndex(tagRemoveElements[initialIndex - 1], 0);\n      } else {\n        this.setTabIndex(tagRemoveElement, -1);\n      }\n\n      this.subscription.add(\n        fromEvent(tagRemoveElement, 'keydown').subscribe((event: KeyboardEvent) => {\n          this.handleKeyDown(event, tagRemoveElements, index);\n        })\n      );\n\n      if (index !== 0) {\n        this.subscription.add(\n          fromEvent(tagRemoveElements, 'blur').subscribe(() => {\n            this.setTabIndex(tagRemoveElements[index], -1);\n            this.setTabIndex(tagRemoveElements[0], 0);\n          })\n        );\n      }\n    });\n  }\n\n  private handleKeyDown(event: KeyboardEvent, tagRemoveElements, index: number) {\n    const KEY_SPACE = 'Space';\n    const KEY_ARROW_LEFT = 'ArrowLeft';\n    const KEY_ARROW_RIGHT = 'ArrowRight';\n\n    if (event.code === KEY_SPACE) {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n\n    if (event.key === KEY_ARROW_LEFT) {\n      this.handleArrowLeft(tagRemoveElements, index);\n    } else if (event.key === KEY_ARROW_RIGHT) {\n      this.handleArrowRight(tagRemoveElements, index);\n    }\n  }\n\n  private focusOnRemoveTag(tag: any, indexClosed: number) {\n    if (tag.length === indexClosed) {\n      tag[indexClosed - 1]?.focus();\n    } else {\n      tag[indexClosed]?.focus();\n    }\n  }\n}\n","@if (disclaimers.length > 0) {\n  <div class=\"po-disclaimer-group\">\n    @if (title) {\n      <div class=\"po-disclaimer-group-title\">{{ title }}</div>\n    }\n    @if (isRemoveAll()) {\n      <po-disclaimer-remove\n        class=\"po-disclaimer-group-disclaimer-align\"\n        [p-label]=\"literals.removeAll\"\n        (keydown)=\"onKeyPress($event)\"\n        (p-remove-all-action)=\"removeAllItems()\"\n      >\n      </po-disclaimer-remove>\n    }\n    @for (disclaimer of disclaimers; track disclaimer) {\n      <po-tag\n        class=\"po-disclaimer-group-disclaimer-align\"\n        [p-value]=\"disclaimer.label || disclaimer.value\"\n        [p-removable]=\"!disclaimer.hideClose\"\n        (p-close)=\"onCloseAction(disclaimer, $event)\"\n      >\n      </po-tag>\n    }\n  </div>\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PoDisclaimerModule } from '../po-disclaimer/po-disclaimer.module';\nimport { PoTagModule } from '../po-tag/po-tag.module';\n\nimport { PoDisclaimerGroupComponent } from './po-disclaimer-group.component';\nimport { PoDisclaimerRemoveComponent } from './po-disclaimer-remove/po-disclaimer-remove.component';\n\n/**\n * @description\n *\n * Módulo do componente po-disclaimer-group.\n */\n@NgModule({\n  imports: [CommonModule, PoDisclaimerModule, PoTagModule],\n  declarations: [PoDisclaimerGroupComponent, PoDisclaimerRemoveComponent],\n  exports: [PoDisclaimerGroupComponent]\n})\nexport class PoDisclaimerGroupModule {}\n","import { Directive, HostBinding, HostListener, Input } from '@angular/core';\n\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from './../../utils/util';\n\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { PoDropdownAction } from './po-dropdown-action.interface';\n\n/**\n * @description\n *\n * O componente `po-dropdown` pode ser utilizado como um agrupador de ações e / ou opções.\n *\n * > Caso não haja configuração de rotas em sua aplicação, se faz necessário importar o `RouterModule`\n * no módulo principal para o correto funcionamento deste componente:\n *\n * ```\n * import { RouterModule } from '@angular/router';\n *\n * @NgModule({\n *   imports: [\n *     ...\n *     RouterModule.forRoot([]),\n *     PoModule\n *   ],\n *   declarations: [\n *     AppComponent\n *   ],\n *   exports: [],\n *   providers: [],\n *   bootstrap: [\n *     AppComponent\n *   ]\n * })\n * export class AppModule { }\n * ```\n * > Para maiores dúvidas referente à configuração de rotas, acesse em nosso portal /Guias /Começando\n * [/Configurando as rotas do po-menu](/guides/getting-started).\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                     |\n * |----------------------------------------|-------------------------------------------------------|--------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                  |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                       |\n * | `--font-size`                          | Tamanho da fonte                                      | `var(--font-size-default)`                       |\n * | `--font-weight`                        | Peso da fonte                                         | `var(--font-weight-bold)`                        |\n * | `--line-height`                        | Tamanho da label                                      | `var(--line-height-none)`                        |\n * | `--color`                              | Cor principal do dropdown                             | `var(--color-action-default)`                    |\n * | `--border-radius`                      | Contém o valor do raio dos cantos do elemento&nbsp;   | `var(--border-radius-md)`                        |\n * | `--border-width`                       | Contém o valor da largura dos cantos do elemento&nbsp;| `var(--border-width-md)`                         |\n * | `--padding`                            | Preenchimento                                         | `0 1em`                                          |\n * | **Hover**                              |                                                       |                                                  |\n * | `--color-hover`                        | Cor principal no estado hover                         | `var(--color-brand-01-darkest)`                  |\n * | `--background-hover`                   | Cor de background no estado hover                     | `var(--color-brand-01-lighter)`                  |\n * | **Focused**                            |                                                       |                                                  |\n * | `--outline-color-focused` &nbsp;       | Cor do outline do estado de focus                     | `var(--color-action-focus)`                      |\n * | **Pressed**                            |                                                       |                                                  |\n * | `--background-pressed` &nbsp;          | Cor de background no estado de pressionado&nbsp;      | `var(--color-brand-01-light)`                    |\n * | **Disabled**                           |                                                       |                                                  |\n * | `--color-disabled`                     | Cor principal no estado disabled                      | `var(--color-action-disabled)`                   |\n *\n */\n\n@Directive()\nexport class PoDropdownBaseComponent {\n  /** Adiciona um rótulo ao `dropdown`. */\n  @Input('p-label') label: string;\n\n  icon: string = 'ICON_ARROW_DOWN';\n  open: boolean = false;\n\n  private _actions: Array<PoDropdownAction>;\n  private _disabled: boolean = false;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n\n  /** Lista de ações que serão exibidas no componente. */\n  @Input('p-actions') set actions(value: Array<PoDropdownAction>) {\n    this._actions = Array.isArray(value) ? value : [];\n  }\n\n  get actions() {\n    return this._actions;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita o campo.\n   *\n   * @default `false`\n   */\n  @Input('p-disabled') set disabled(value: boolean) {\n    this._disabled = convertToBoolean(value);\n  }\n\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura do button como 32px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura do button como 44px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Renderer2,\n  ViewChild,\n  inject\n} from '@angular/core';\n\nimport { PoUtils } from './../../utils/util';\n\nimport { PoDropdownBaseComponent } from './po-dropdown-base.component';\n\n/**\n * @docsExtends PoDropdownBaseComponent\n *\n * @example\n *\n * <example name=\"po-dropdown-basic\" title=\"PO Dropdown Basic\" >\n *  <file name=\"sample-po-dropdown-basic/sample-po-dropdown-basic.component.html\"> </file>\n *  <file name=\"sample-po-dropdown-basic/sample-po-dropdown-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-dropdown-subitems\" title=\"PO Dropdown Subitems\" >\n *  <file name=\"sample-po-dropdown-subitems/sample-po-dropdown-subitems.component.html\"> </file>\n *  <file name=\"sample-po-dropdown-subitems/sample-po-dropdown-subitems.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-dropdown-labs\" title=\"PO Dropdown Labs\" >\n *  <file name=\"sample-po-dropdown-labs/sample-po-dropdown-labs.component.html\"> </file>\n *  <file name=\"sample-po-dropdown-labs/sample-po-dropdown-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-dropdown-social-network\" title=\"PO Dropdown - Social Network\" >\n *  <file name=\"sample-po-dropdown-social-network/sample-po-dropdown-social-network.component.html\"> </file>\n *  <file name=\"sample-po-dropdown-social-network/sample-po-dropdown-social-network.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-dropdown',\n  templateUrl: './po-dropdown.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoDropdownComponent extends PoDropdownBaseComponent {\n  private readonly renderer = inject(Renderer2);\n  private readonly changeDetector = inject(ChangeDetectorRef);\n\n  @ViewChild('dropdownRef', { read: ElementRef, static: true }) dropdownRef: ElementRef;\n  @ViewChild('popupRef') popupRef: any;\n\n  private clickoutListener: () => void;\n  private resizeListener: () => void;\n\n  onKeyDown(event: any) {\n    if (PoUtils.isKeyCodeEnter(event)) {\n      this.toggleDropdown();\n    }\n  }\n\n  toggleDropdown(): void {\n    this.dropdownRef && !this.open && !this.disabled ? this.showDropdown() : this.hideDropdown();\n  }\n\n  private checkClickArea(event: MouseEvent) {\n    return this.dropdownRef?.nativeElement.contains(event.target);\n  }\n\n  private hideDropdown() {\n    this.icon = 'ICON_ARROW_DOWN';\n    this.removeListeners();\n    this.popupRef.close();\n    this.open = false;\n    this.changeDetector.detectChanges();\n  }\n\n  private initializeListeners() {\n    this.clickoutListener = this.renderer.listen('document', 'click', (event: MouseEvent) => {\n      this.wasClickedOnDropdown(event);\n    });\n\n    this.resizeListener = this.renderer.listen('window', 'resize', () => {\n      this.hideDropdown();\n    });\n\n    window.addEventListener('scroll', this.onScroll, true);\n  }\n\n  private readonly onScroll = ({ target }): void => {\n    if (this.open && target.className !== 'po-popup-container' && !this.isDropdownClosed()) {\n      this.hideDropdown();\n    }\n  };\n\n  private isDropdownClosed(): boolean {\n    const dropdownRect = this.dropdownRef.nativeElement.getBoundingClientRect();\n\n    return dropdownRect.top >= 0 && dropdownRect.bottom <= window.innerHeight;\n  }\n\n  private removeListeners() {\n    if (this.clickoutListener) {\n      this.clickoutListener();\n    }\n\n    if (this.resizeListener) {\n      this.resizeListener();\n    }\n\n    window.removeEventListener('scroll', this.onScroll, true);\n  }\n\n  private showDropdown() {\n    this.icon = 'ICON_ARROW_UP';\n    this.initializeListeners();\n    this.popupRef.open();\n    this.open = true;\n    this.changeDetector.detectChanges();\n  }\n\n  private wasClickedOnDropdown(event: MouseEvent) {\n    const clickedOnDropdown = this.checkClickArea(event);\n\n    if (!clickedOnDropdown) {\n      this.hideDropdown();\n    }\n  }\n}\n","<div\n  #dropdownRef\n  class=\"po-dropdown\"\n  [attr.disabled]=\"disabled\"\n  tabindex=\"{{ disabled ? -1 : 0 }}\"\n  (click)=\"toggleDropdown()\"\n  (keydown)=\"onKeyDown($event)\"\n>\n  <div\n    class=\"po-dropdown-button\"\n    [ngClass]=\"{ 'po-dropdown-button-disabled': disabled, 'po-dropdown-button-open': open }\"\n  >\n    <span>{{ label }}</span>\n    <po-icon class=\"po-dropdown-icon\" [p-icon]=\"icon\"></po-icon>\n  </div>\n</div>\n\n<po-popup\n  #popupRef\n  p-hide-arrow\n  p-is-corner-align\n  p-position=\"bottom-left\"\n  [p-actions]=\"actions\"\n  [p-custom-positions]=\"['bottom-left', 'top-left']\"\n  [p-size]=\"size\"\n  [p-target]=\"dropdownRef\"\n  [p-listbox-subitems]=\"true\"\n>\n</po-popup>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoPopupModule } from '../po-popup/po-popup.module';\n\nimport { PoDropdownComponent } from './po-dropdown.component';\nimport { PoIconModule } from '../po-icon';\n/**\n * @description\n * Módulo do componente po-dropdown.\n */\n@NgModule({\n  imports: [CommonModule, PoPopupModule, PoIconModule],\n  declarations: [PoDropdownComponent],\n  exports: [PoDropdownComponent]\n})\nexport class PoDropdownModule {}\n","import { Directive, EventEmitter, HostBinding, HostListener, input, Input, Output } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, Validator } from '@angular/forms';\n\nimport { PoValidators } from '../validators';\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn, PoUtils } from './../../../utils/util';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { PoCheckboxGroupOptionView } from './interfaces/po-checkbox-group-option-view.interface';\nimport { PoCheckboxGroupOption } from './interfaces/po-checkbox-group-option.interface';\nimport { PoHelperOptions } from '../../po-helper';\n\nconst poCheckboxGroupColumnsDefaultLength: number = 6;\nconst poCheckboxGroupColumnsTotalLength: number = 12;\n\n/**\n * @description\n *\n * O componente `po-checkbox-group` exibe uma lista de múltipla escolha onde o usuário pode marcar e desmarcar,\n * utilizando a tecla de espaço ou o clique do mouse, várias opções.\n *\n * > Para seleção única, utilize o [**PO Radio Group**](/documentation/po-radio-group).\n *\n * Por padrão, o po-checkbox-group retorna um array com os valores dos itens selecionados para o model.\n *\n * ```\n * favorites = ['PO', 'Angular'];\n * ```\n *\n * Na maioria das situações, o array com os objetos setados já atende as necessidades mas, caso o desenvolvedor\n * tenha necessidade de usar um valor indeterminado (`null`), ou seja, nem marcado (`true`) e nem desmarcado (`false`),\n * deve setar a propriedade `p-indeterminate` como `true`.\n *\n * Nesse caso, o po-checkbox-group vai retornar um objeto com todas as opções disponíveis e seus valores.\n *\n * ```\n * favorites = {\n *  PO: true,\n *  Angular: true,\n *  VueJS: false,\n *  React: null // indeterminado\n * };\n * ```\n */\n@Directive()\nexport class PoCheckboxGroupBaseComponent implements ControlValueAccessor, Validator {\n  // Propriedade interna que define se o ícone de ajuda adicional terá cursor clicável (evento) ou padrão (tooltip).\n  @Input() additionalHelpEventTrigger: string | undefined;\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de ajuda adicional, com o texto desta propriedade sendo passado para o popover do componente `po-helper`.\n   * **Como boa prática, indica-se utilizar um texto com até 140 caracteres.**\n   * > Requer um recuo mínimo de 8px se o componente estiver próximo à lateral da tela.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Input('p-additional-help-tooltip') additionalHelpTooltip?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o popover (`p-helper` e/ou `p-error-limit`) será incluído no body da página e não\n   * dentro do componente. Essa opção pode ser necessária em cenários com containers que possuem scroll ou overflow\n   * escondido, garantindo o posicionamento correto do tooltip próximo ao elemento.\n   *\n   * > Quando utilizado com `p-helper`, leitores de tela como o NVDA podem não ler o conteúdo do popover.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendBox?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Aplica foco no elemento ao ser iniciado.\n   *\n   * > Caso mais de um elemento seja configurado com essa propriedade, apenas o último elemento declarado com ela terá o foco.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-auto-focus', transform: convertToBoolean }) autoFocus: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define se o título do campo será exibido de forma compacta.\n   *\n   * Quando habilitado (`true`), o modo compacto afeta o conjunto composto por:\n   * - `po-label`\n   * - `p-requirement (showRequired)`\n   * - `po-helper`\n   *\n   * Ou seja, todos os elementos relacionados ao título do campo\n   * (rótulo, indicador de obrigatoriedade e componente auxiliar) passam\n   * a seguir o comportamento de layout compacto.\n   *\n   * Também é possível definir esse comportamento de forma global,\n   * uma única vez, na folha de estilo geral da aplicação, por meio\n   * da customização dos tokens CSS:\n   *\n   * - `--field-container-title-justify`\n   * - `--field-container-title-flex`\n   *\n   * Exemplo:\n   *\n   * ```\n   * :root {\n   *   --field-container-title-justify: flex-start;\n   *   --field-container-title-flex: 0 1 auto;\n   * }\n   * ```\n   *\n   * Dessa forma, o layout compacto passa a ser o padrão da aplicação,\n   * sem a necessidade de definir a propriedade individualmente em cada campo.\n   *\n   * @default `false`\n   */\n  compactLabel = input<boolean, unknown>(false, { alias: 'p-compact-label', transform: convertToBoolean });\n\n  /** Nome dos checkboxes */\n  @Input('name') name: string;\n\n  /** Texto de apoio do campo */\n  @Input('p-help') help?: string;\n\n  /** Label do campo */\n  @Input('p-label') label?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se a indicação de campo opcional será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - O campo conter `p-required`;\n   * - Não possuir `p-help` e/ou `p-label`.\n   *\n   * @default `false`\n   */\n  @Input('p-optional') optional: boolean;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe a mensagem setada se o campo estiver vazio e for requerido.\n   *\n   * > Necessário que a propriedade `p-required` esteja habilitada.\n   *\n   */\n  @Input('p-field-error-message') fieldErrorMessage: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Limita a exibição da mensagem de erro a duas linhas e exibe um tooltip com o texto completo.\n   *\n   * > Caso essa propriedade seja definida como `true`, a mensagem de erro será limitada a duas linhas\n   * e um tooltip será exibido ao passar o mouse sobre a mensagem para mostrar o conteúdo completo.\n   *\n   * @default `false`\n   */\n  @Input('p-error-limit') errorLimit: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as opções do componente de ajuda (po-helper) que será exibido ao lado do label quando a propriedade `p-label` for definida, ou, ao lado do componente na ausência da propriedade `p-label`.\n   * > Para mais informações acesse: https://po-ui.io/documentation/po-helper.\n   *\n   * > Ao configurar esta propriedade, o antigo ícone de ajuda adicional (`p-additional-help-tooltip` e `p-additional-help`) será ignorado.\n   */\n  poHelperComponent = input<PoHelperOptions | string>(undefined, { alias: 'p-helper' });\n\n  /**\n   * @optional\n   *\n   * @description\n   * Habilita a quebra automática do texto da propriedade `p-label`. Quando `p-label-text-wrap` for verdadeiro, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * @default `false`\n   */\n  labelTextWrap = input<boolean>(false, { alias: 'p-label-text-wrap' });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Função para atualizar o `ngModel` do componente, necessário quando não for utilizado dentro da tag form.\n   *\n   * Na versão 12.2.0 do Angular a verificação `strictTemplates` vem true como default. Portanto, para utilizar\n   * two-way binding no componente deve se utilizar da seguinte forma:\n   *\n   * ```\n   * <po-checkbox-group ... [ngModel]=\"checkboxgroupModel\" (ngModelChange)=\"checkboxgroupModel = $event\"> </po-checkbox-group>\n   * ```\n   *\n   */\n  @Output('ngModelChange') ngModelChange: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar no ícone de ajuda adicional.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Output('p-additional-help') additionalHelp = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao alterar valor do campo\n   */\n  @Output('p-change') change: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado quando uma tecla é pressionada enquanto o foco está no componente.\n   * Retorna um objeto `KeyboardEvent` com informações sobre a tecla.\n   */\n  @Output('p-keydown') keydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n  checkboxGroupOptionsView: Array<PoCheckboxGroupOptionView>;\n  checkedOptions: any = {};\n  checkedOptionsList: any = [];\n  displayAdditionalHelp: boolean = false;\n  mdColumns: number = poCheckboxGroupColumnsDefaultLength;\n  propagateChange: any;\n  validatorChange: any;\n\n  private _columns: number = poCheckboxGroupColumnsDefaultLength;\n  private _disabled?: boolean = false;\n  private _indeterminate?: boolean = false;\n  private _options?: Array<PoCheckboxGroupOption>;\n  private _required?: boolean = false;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Possibilita definir a quantidade de colunas para exibição dos itens do *checkbox*.\n   * - É possível exibir as opções entre `1` e `4` colunas.\n   * - Para resolução `sm` a colunagem invariavelmente passa para `1` coluna.\n   * - Quando se trata de resolução `md` e o valor estabelecido para colunas for superior a `2`,\n   * o *grid system* será composto por `2` colunas.\n   * - Para evitar a quebra de linha, prefira a utilização de `1` coluna para opções com textos grandes.\n   *\n   * @default `2`\n   *\n   */\n  @Input('p-columns') set columns(value: number) {\n    const columns = PoUtils.convertToInt(value, poCheckboxGroupColumnsDefaultLength);\n\n    this._columns = this.getGridSystemColumns(columns, 4);\n    this.mdColumns = this.getGridSystemColumns(columns, 2);\n  }\n\n  get columns() {\n    return this._columns;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita todos os itens do checkbox.\n   *\n   * @default `false`\n   */\n  @Input('p-disabled') set disabled(value: boolean) {\n    this._disabled = convertToBoolean(value);\n\n    this.validateModel(this.checkIndeterminate());\n  }\n\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Caso exista a necessidade de usar o valor indeterminado (`null`) dentro da lista de opções, é necessário setar\n   * a propriedade `p-indeterminate` como `true`, por padrão essa propriedade vem desabilitada (`false`).\n   *\n   * Quando essa propriedade é setada como `true`, o *po-checkbox-group* passa a devolver um objeto completo para o\n   * `ngModel`, diferente do array que contém apenas os valores selecionados.\n   *\n   * @default `false`\n   */\n  @Input('p-indeterminate') set indeterminate(indeterminate: boolean) {\n    this._indeterminate = convertToBoolean(indeterminate);\n  }\n\n  get indeterminate() {\n    return this._indeterminate;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Lista de opções que serão exibidas\n   * Nesta propriedade deve ser definido um array de objetos que implementam a interface PoCheckboxGroupOption\n   */\n  @Input('p-options') set options(value: Array<PoCheckboxGroupOption>) {\n    this._options = Array.isArray(value) ? value : [];\n    this.removeDuplicatedOptions();\n    this.setCheckboxGroupOptionsView(this.options);\n  }\n\n  get options() {\n    return this._options;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o campo será obrigatório.\n   *\n   * @default `false`\n   */\n  @Input('p-required') set required(required: boolean) {\n    this._required = convertToBoolean(required);\n\n    this.validateModel(this.checkIndeterminate());\n  }\n\n  get required() {\n    return this._required;\n  }\n\n  /**\n   * Define se a indicação de campo obrigatório será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - Não possuir `p-help` e/ou `p-label`.\n   */\n  @Input('p-show-required') showRequired: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos checkboxes do componente:\n   * - `small`: 16x16 (disponível apenas para acessibilidade AA).\n   * - `medium`: 24x24.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   *\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  changeValue() {\n    const value = this.checkIndeterminate();\n\n    if (this.propagateChange) {\n      this.propagateChange(value);\n    } else {\n      this.ngModelChange.emit(value);\n    }\n\n    this.change.emit(value);\n  }\n\n  checkIndeterminate() {\n    return this.indeterminate ? this.checkedOptions : this.checkedOptionsList;\n  }\n\n  checkOption(value: PoCheckboxGroupOption) {\n    if (!this._disabled && !value.disabled && !value.fixed) {\n      this.checkOptionModel(value);\n      this.changeValue();\n    }\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar os estados de habilitado via forms api\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n  }\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {}\n\n  writeValue(optionsModel: any) {\n    if (optionsModel && this.checkedOptions !== optionsModel) {\n      this.generateCheckOptions(optionsModel);\n    } else {\n      this.checkedOptionsList = [];\n      this.checkedOptions = {};\n    }\n  }\n\n  registerOnValidatorChange(fn: () => void) {\n    this.validatorChange = fn;\n  }\n\n  validate(abstractControl: AbstractControl): { [key: string]: any } {\n    if (\n      (!this.indeterminate && PoValidators.requiredFailed(this.required, this.disabled, abstractControl.value)) ||\n      this.isInvalidIndeterminate()\n    ) {\n      return {\n        required: {\n          valid: false\n        }\n      };\n    }\n  }\n\n  protected validateModel(model: any) {\n    if (this.validatorChange) {\n      this.validatorChange(model);\n    }\n  }\n\n  private checkColumnsRange(columns, maxColumns): boolean {\n    const minColumns = 1;\n\n    return columns >= minColumns && columns <= maxColumns;\n  }\n\n  private checkOptionModel(optionChecked: PoCheckboxGroupOption) {\n    this.checkedOptions[optionChecked.value] = !this.checkedOptions[optionChecked.value];\n\n    if (!this.indeterminate && this.checkedOptionsList.includes(optionChecked.value)) {\n      this.checkedOptionsList.splice(this.checkedOptionsList.indexOf(optionChecked.value), 1);\n    } else if (!this.indeterminate) {\n      this.checkedOptionsList.push(optionChecked.value);\n    }\n  }\n\n  private generateCheckOptions(optionsModel: any) {\n    this.checkedOptions = {};\n\n    if (optionsModel instanceof Array) {\n      this.checkedOptionsList = optionsModel;\n\n      this.options.forEach((option: PoCheckboxGroupOption) => {\n        this.checkedOptions[option.value] = optionsModel.includes(option.value);\n      });\n    } else {\n      this.options.forEach((option: PoCheckboxGroupOption) => {\n        optionsModel[option.value] = optionsModel[option.value] === undefined ? false : optionsModel[option.value];\n        this.checkedOptions = optionsModel;\n      });\n    }\n  }\n\n  private getGridSystemColumns(columns: number, maxColumns: number): number {\n    const gridSystemColumns = poCheckboxGroupColumnsTotalLength / columns;\n\n    return this.checkColumnsRange(columns, maxColumns) ? gridSystemColumns : poCheckboxGroupColumnsDefaultLength;\n  }\n\n  private isInvalidIndeterminate() {\n    if (this.indeterminate && this.required && this.checkedOptions) {\n      return (<any>Object).values(this.checkedOptions).every(value => value === false);\n    }\n    return false;\n  }\n\n  private removeDuplicatedOptions() {\n    this.options.forEach((option, index) => {\n      const duplicatedIndex = this.options.findIndex((optionFind: any) => optionFind.value === option.value) === index;\n      if (!duplicatedIndex) {\n        this.options.splice(this.options.indexOf(option), 1);\n      }\n    });\n  }\n\n  private setCheckboxGroupOptionsView(optionsList: Array<PoCheckboxGroupOption>) {\n    this.checkboxGroupOptionsView = optionsList.map(option => ({ ...option, id: PoUtils.uuid() }));\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n}\n","import {\n  AfterViewChecked,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  forwardRef,\n  inject,\n  OnChanges,\n  QueryList,\n  SimpleChanges,\n  ViewChild,\n  ViewChildren\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PoCheckboxComponent } from '../po-checkbox/po-checkbox.component';\nimport { PoCheckboxGroupOption } from './interfaces/po-checkbox-group-option.interface';\nimport { PoCheckboxGroupBaseComponent } from './po-checkbox-group-base.component';\nimport { setHelperSettings } from '../../../utils/util';\nimport { PoHelperComponent } from '../../po-helper';\n\n/**\n * @docsExtends PoCheckboxGroupBaseComponent\n *\n * @example\n *\n * <example name=\"po-checkbox-group-basic\" title=\"PO Checkbox Group Basic\">\n *  <file name=\"sample-po-checkbox-group-basic/sample-po-checkbox-group-basic.component.html\"> </file>\n *  <file name=\"sample-po-checkbox-group-basic/sample-po-checkbox-group-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-checkbox-group-labs\" title=\"PO Checkbox Group Labs\">\n *  <file name=\"sample-po-checkbox-group-labs/sample-po-checkbox-group-labs.component.html\"> </file>\n *  <file name=\"sample-po-checkbox-group-labs/sample-po-checkbox-group-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-checkbox-group-password-policy\" title=\"PO Checkbox Group – Security policy\">\n *  <file name=\"sample-po-checkbox-group-password-policy/sample-po-checkbox-group-password-policy.component.html\"> </file>\n *  <file name=\"sample-po-checkbox-group-password-policy/sample-po-checkbox-group-password-policy.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-checkbox-group',\n  templateUrl: './po-checkbox-group.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoCheckboxGroupComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => PoCheckboxGroupComponent),\n      multi: true\n    }\n  ],\n  standalone: false\n})\nexport class PoCheckboxGroupComponent\n  extends PoCheckboxGroupBaseComponent\n  implements AfterViewChecked, AfterViewInit, OnChanges\n{\n  private readonly changeDetector = inject(ChangeDetectorRef);\n\n  @ViewChildren('checkboxLabel') checkboxLabels: QueryList<PoCheckboxComponent>;\n  @ViewChild('helperEl', { read: PoHelperComponent, static: false }) helperEl?: PoHelperComponent;\n  private readonly el: ElementRef = inject(ElementRef);\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n  }\n\n  ngAfterViewChecked(): void {\n    this.changeDetector.detectChanges();\n  }\n\n  ngAfterViewInit() {\n    if (this.autoFocus) {\n      this.focus();\n    }\n  }\n\n  onBlur(checkbox: PoCheckboxComponent) {\n    if (!this.isCheckboxOptionFocused(checkbox) && this.getAdditionalHelpTooltip() && this.displayAdditionalHelp) {\n      this.showAdditionalHelp();\n    }\n  }\n\n  emitAdditionalHelp() {\n    if (this.label && this.isAdditionalHelpEventTriggered()) {\n      this.additionalHelp.emit();\n    }\n  }\n\n  /**\n   * Função que atribui foco ao componente.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoCheckboxGroupComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoCheckboxGroupComponent, { static: true }) checkbox: PoCheckboxGroupComponent;\n   *\n   * focusCheckbox() {\n   *   this.checkbox.focus();\n   * }\n   * ```\n   */\n  focus(): void {\n    if (this.checkboxLabels && !this.disabled) {\n      const checkboxLabel = this.checkboxLabels.find((_, index) => !this.options[index].disabled);\n\n      if (checkboxLabel) {\n        checkboxLabel.checkboxLabel.nativeElement.focus();\n      }\n    }\n  }\n\n  getAdditionalHelpTooltip() {\n    return this.isAdditionalHelpEventTriggered() ? null : this.additionalHelpTooltip;\n  }\n\n  getErrorPattern() {\n    return this.fieldErrorMessage && this.hasInvalidClass() ? this.fieldErrorMessage : '';\n  }\n\n  hasInvalidClass() {\n    return (\n      this.el.nativeElement.classList.contains('ng-invalid') && this.el.nativeElement.classList.contains('ng-dirty')\n    );\n  }\n\n  onKeyDown(event: KeyboardEvent, option: PoCheckboxGroupOption, checkbox?: PoCheckboxComponent) {\n    const spaceBar = 32;\n\n    if (event.which === spaceBar || event.keyCode === spaceBar) {\n      this.checkOption(option);\n\n      event.preventDefault();\n    }\n\n    if (this.isCheckboxOptionFocused(checkbox)) {\n      this.keydown.emit(event);\n    }\n  }\n\n  /**\n   * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n   * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `p-keydown`.\n   *\n   * > Exibe ou oculta o conteúdo do componente `po-helper` quando o componente estiver com foco.\n   *\n   * ```\n   * //Exemplo com p-label e p-helper\n   * <po-checkbox-group\n   *  #checkboxGroup\n   *  ...\n   *  p-label=\"Label do checkbox\"\n   *  [p-helper]=\"helperOptions\"\n   *  (p-keydown)=\"onKeyDown($event, checkboxGroup)\"\n   * ></po-checkbox-group>\n   * ```\n   * ```\n   * ...\n   * onKeyDown(event: KeyboardEvent, inp: PoCheckboxGroupComponent): void {\n   *  if (event.code === 'F9') {\n   *    inp.showAdditionalHelp();\n   *  }\n   * }\n   * ```\n   */\n  showAdditionalHelp(): boolean {\n    this.displayAdditionalHelp = !this.displayAdditionalHelp;\n    const helper = this.poHelperComponent();\n    const isHelpEvt = this.isAdditionalHelpEventTriggered();\n    if (!this.label && (helper || this.additionalHelpTooltip || isHelpEvt)) {\n      if (isHelpEvt) {\n        this.additionalHelp.emit();\n      }\n      if (typeof helper !== 'string' && typeof helper?.eventOnClick === 'function') {\n        helper.eventOnClick();\n        return;\n      }\n      if (this.helperEl?.helperIsVisible()) {\n        this.helperEl?.closeHelperPopover();\n        return;\n      }\n      this.helperEl?.openHelperPopover();\n      return;\n    }\n    return this.displayAdditionalHelp;\n  }\n\n  trackByFn(index) {\n    return index;\n  }\n\n  setHelper(label?: string, additionalHelpTooltip?: string) {\n    return setHelperSettings(\n      label,\n      additionalHelpTooltip,\n      this.poHelperComponent(),\n      this.size,\n      this.isAdditionalHelpEventTriggered() ? this.additionalHelp : undefined\n    );\n  }\n\n  private isAdditionalHelpEventTriggered(): boolean {\n    return (\n      this.additionalHelpEventTrigger === 'event' ||\n      (this.additionalHelpEventTrigger === undefined && this.additionalHelp.observed)\n    );\n  }\n\n  private isCheckboxOptionFocused(checkbox: PoCheckboxComponent): boolean {\n    return document.activeElement === checkbox.checkboxLabel.nativeElement;\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n<po-field-container\n  [p-disabled]=\"disabled\"\n  [p-label]=\"label\"\n  [p-optional]=\"optional\"\n  [p-required]=\"required\"\n  [p-show-required]=\"showRequired\"\n  [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n  [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n  [p-size]=\"size\"\n  [p-text-wrap]=\"labelTextWrap()\"\n  [p-compact-label]=\"compactLabel()\"\n>\n  <div role=\"group\" class=\"po-checkbox-group-content\" [attr.aria-label]=\"label\">\n    <div class=\"po-field-container-content\" [attr.name]=\"name\">\n      <ul class=\"po-row\">\n        @for (option of checkboxGroupOptionsView; track trackByFn($index)) {\n          <li\n            class=\"po-checkbox-group-item po-md-{{ mdColumns }} po-lg-{{ columns }}\"\n            [class.po-checkbox-group-item-disabled]=\"option.disabled || disabled\"\n          >\n            <po-checkbox\n              #checkboxLabel\n              [p-label]=\"option.label\"\n              [p-disabled]=\"option.disabled || disabled\"\n              (p-blur)=\"onBlur(checkboxLabel)\"\n              (click)=\"checkOption(option)\"\n              (keydown)=\"onKeyDown($event, option, checkboxLabel)\"\n              [p-checkboxValue]=\"checkedOptions[option.value] === null ? 'mixed' : checkedOptions[option.value]\"\n              [p-required]=\"required\"\n              [p-label-text-wrap]=\"true\"\n              [p-size]=\"size\"\n            >\n            </po-checkbox>\n          </li>\n        }\n      </ul>\n    </div>\n  </div>\n  <po-field-container-bottom\n    [p-append-in-body]=\"appendBox\"\n    [p-help]=\"help\"\n    [p-disabled]=\"disabled\"\n    [p-error-limit]=\"errorLimit\"\n    [p-error-pattern]=\"getErrorPattern()\"\n    [p-size]=\"size\"\n    [p-helper]=\"!label ? poHelper.helperSettings : undefined\"\n    [p-show-helper]=\"!label ? displayAdditionalHelp : undefined\"\n  ></po-field-container-bottom>\n</po-field-container>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\n\nimport { PoFieldContainerModule } from '../po-field-container/po-field-container.module';\n\nimport { PoCheckboxGroupComponent } from './po-checkbox-group.component';\nimport { PoCheckboxModule } from '../po-checkbox/po-checkbox.module';\nimport { PoHelperModule } from '../../po-helper';\n\n/**\n * @description\n *\n * Módulo do componente `po-checkbox-group`.\n */\n@NgModule({\n  imports: [CommonModule, FormsModule, PoFieldContainerModule, PoCheckboxModule, PoHelperModule],\n  exports: [PoCheckboxGroupComponent],\n  declarations: [PoCheckboxGroupComponent]\n})\nexport class PoCheckboxGroupModule {}\n","/**\n * @description\n *\n * Tamanhos da propriedade `p-size`. A medida `small` está disponível apenas para acessibilidade AA.\n */\nexport enum PoRadioSize {\n  /** Define o radio como 16px. */\n  Small = 'small',\n\n  /** Define o radio como 24px. */\n  Medium = 'medium',\n\n  /** Define o radio como 32px. */\n  Large = 'large'\n}\n","import {\n  ChangeDetectorRef,\n  Directive,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  inject,\n  input,\n  Input,\n  Output\n} from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, Validator } from '@angular/forms';\n\nimport {\n  convertToBoolean,\n  getDefaultSizeFn,\n  removeDuplicatedOptions,\n  validateSizeFn,\n  PoUtils\n} from '../../../utils/util';\nimport { PoValidators } from '../validators';\n\nimport { PoRadioSize } from '../po-radio/enums/po-radio-size.enum';\nimport { PoRadioGroupOption } from './po-radio-group-option.interface';\nimport { PoHelperOptions } from '../../po-helper';\n\nconst poRadioGroupColumnsDefaultLength: number = 6;\nconst poRadioGroupColumnsTotalLength: number = 12;\n\n/**\n * @description\n *\n * O componente `po-radio-group` deve ser utilizado para disponibilizar múltiplas opções ao usuário, permitindo a ele que\n * selecione apenas uma delas. Seu uso é recomendado para um número pequeno de opções, caso contrário, recomenda-se o uso\n * do [**po-combo**](/documentation/po-combo) ou [**po-select**](/documentation/po-select).\n *\n * Este não é um componente de multiseleção, se for este o caso, deve-se utilizar o\n * [**po-checkbox-group**](/documentation/po-checkbox-group).\n *\n * > Ao passar um valor para o *model* que não esteja na lista de opções, o mesmo será definido como `undefined`.\n *\n * #### Acessibilidade tratada no componente interno `po-radio`:\n *\n * Algumas diretrizes de acessibilidade já são tratadas no componente, internamente, e não podem ser alteradas pelo proprietário do conteúdo. São elas:\n *\n * - O componente foi desenvolvido utilizando controles padrões HTML para permitir a identificação do mesmo na interface por tecnologias assistivas. [WCAG 4.1.2: Name, Role, Value](https://www.w3.org/WAI/WCAG21/Understanding/name-role-value)\n * - A cor não deve ser o único meio para diferenciar o radio button normal do selecionado, por isso deve-se manter uma diferença visual entre os estados. [WGAG 1.4.1: Use of Color, 3.2.4: Consistent Identification](https://www.w3.org/WAI/WCAG21/Understanding/use-of-color)\n * - Quando em foco, o componente é ativado usando as teclas de Espaço e Enter do teclado. [W3C WAI-ARIA 3.5 Button - Keyboard Interaction](https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-3)\n * - A área do foco precisar ter uma espessura de pelo menos 2 pixels CSS e o foco não pode ficar escondido por outros elementos da tela. [(WCAG 2.4.12: Focus Appearance](https://www.w3.org/WAI/WCAG22/Understanding/focus-appearance-enhanced)\n *\n * Conforme documentação em: https://doc.animaliads.io/docs/components/radio\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS): <br>\n * Obs: No componente Radio Group, a customização ocorre principalmente nos elementos `po-radio` que compõem o grupo de opções. <br>\n * Portanto, ao aplicar estilos customizados, é importante focar na customização dos elementos `po-radio` em vez do próprio `po-radio-group`.\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                                   | Valor Padrão                                    |\n * |----------------------------------------|-------------------------------------------------------------|-------------------------------------------------|\n * | **Default Values**                     |                                                             |                                                 |\n * | `--border-color`                       | Cor da borda                                                | `var(--color-neutral-dark-70)`                  |\n * | `--field-container-title-justify`      | Alinhamento horizontal do título (`justify-content`)        | `space-between`                                 |\n * | `--field-container-title-flex`         | Flex do título (`flex`)                                     | `1 auto`                                        |\n * | **Hover**                              |                                                             |                                                 |\n * | `--shadow-color-hover`                 | Cor da sombra no estado hover                               | `var(--color-brand-01-lighter)`                 |\n * | `--color-hover`                        | Cor principal no estado hover                               | `var(--color-brand-01-dark)`                    |\n * | **Focused**                            |                                                             |                                                 |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                           | `var(--color-brand-01-darkest)`                 |\n * | **checked**                            |                                                             |                                                 |\n * | `--color-unchecked`                    | Cor quando não selecionado                                  | `var(--color-neutral-light-00)`                 |\n * | `--color-checked`                      | Cor quando selecionado                                      | `var(--color-action-default)`                   |\n * | **Disabled**                           |                                                             |                                                 |\n * | `--color-unchecked-disabled`           | Cor pricipal quando não selecionado no estado disabled      | `var(--color-neutral-light-30)`                 |\n * | `--color-checked-disabled`             | Cor pricipal quando selecionado no estado disabled          | `var(--color-neutral-dark-70)`                  |\n *\n */\n\n@Directive()\nexport abstract class PoRadioGroupBaseComponent implements ControlValueAccessor, Validator {\n  // Propriedade interna que define se o ícone de ajuda adicional terá cursor clicável (evento) ou padrão (tooltip).\n  @Input() additionalHelpEventTrigger: string | undefined;\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de ajuda adicional, com o texto desta propriedade sendo passado para o popover do componente `po-helper`.\n   * **Como boa prática, indica-se utilizar um texto com até 140 caracteres.**\n   * > Requer um recuo mínimo de 8px se o componente estiver próximo à lateral da tela.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Input('p-additional-help-tooltip') additionalHelpTooltip?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o popover (`p-helper` e/ou `p-error-limit`) será incluído no body da página e não\n   * dentro do componente. Essa opção pode ser necessária em cenários com containers que possuem scroll ou overflow\n   * escondido, garantindo o posicionamento correto do tooltip próximo ao elemento.\n   *\n   * > Quando utilizado com `p-helper`, leitores de tela como o NVDA podem não ler o conteúdo do popover.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendBox?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Aplica foco no elemento ao ser iniciado.\n   *\n   * > Caso mais de um elemento seja configurado com essa propriedade, apenas o último elemento declarado com ela terá o foco.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-auto-focus', transform: convertToBoolean }) autoFocus: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define se o título do campo será exibido de forma compacta.\n   *\n   * Quando habilitado (`true`), o modo compacto afeta o conjunto composto por:\n   * - `po-label`\n   * - `p-requirement (showRequired)`\n   * - `po-helper`\n   *\n   * Ou seja, todos os elementos relacionados ao título do campo\n   * (rótulo, indicador de obrigatoriedade e componente auxiliar) passam\n   * a seguir o comportamento de layout compacto.\n   *\n   * Também é possível definir esse comportamento de forma global,\n   * uma única vez, na folha de estilo geral da aplicação, por meio\n   * da customização dos tokens CSS:\n   *\n   * - `--field-container-title-justify`\n   * - `--field-container-title-flex`\n   *\n   * Exemplo:\n   *\n   * ```\n   * :root {\n   *   --field-container-title-justify: flex-start;\n   *   --field-container-title-flex: 0 1 auto;\n   * }\n   * ```\n   *\n   * Dessa forma, o layout compacto passa a ser o padrão da aplicação,\n   * sem a necessidade de definir a propriedade individualmente em cada campo.\n   *\n   * @default `false`\n   */\n  compactLabel = input<boolean, unknown>(false, { alias: 'p-compact-label', transform: convertToBoolean });\n\n  /** Nome das opções. */\n  @Input('name') name: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se a indicação de campo opcional será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - O campo conter `p-required`;\n   * - Não possuir `p-help` e/ou `p-label`.\n   *\n   * @default `false`\n   */\n  @Input('p-optional') optional: boolean;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe a mensagem setada se o campo estiver vazio e for requerido.\n   *\n   * > Necessário que a propriedade `p-required` esteja habilitada.\n   *\n   */\n  @Input('p-field-error-message') fieldErrorMessage: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Limita a exibição da mensagem de erro a duas linhas e exibe um tooltip com o texto completo.\n   *\n   * > Caso essa propriedade seja definida como `true`, a mensagem de erro será limitada a duas linhas\n   * e um tooltip será exibido ao passar o mouse sobre a mensagem para mostrar o conteúdo completo.\n   *\n   * @default `false`\n   */\n  @Input('p-error-limit') errorLimit: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as opções do componente de ajuda (po-helper) que será exibido ao lado do label quando a propriedade `p-label` for definida, ou, ao lado do componente na ausência da propriedade `p-label`.\n   * > Para mais informações acesse: https://po-ui.io/documentation/po-helper.\n   *\n   * > Ao configurar esta propriedade, o antigo ícone de ajuda adicional (`p-additional-help-tooltip` e `p-additional-help`) será ignorado.\n   */\n  poHelperComponent = input<PoHelperOptions | string>(undefined, { alias: 'p-helper' });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a quebra automática do texto da propriedade `p-label`. Quando `p-label-text-wrap` for verdadeiro, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * @default `false`\n   */\n  labelTextWrap = input<boolean>(false, { alias: 'p-label-text-wrap' });\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar no ícone de ajuda adicional.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Output('p-additional-help') additionalHelp = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento ao alterar valor do campo.\n   */\n  @Output('p-change') change: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado quando uma tecla é pressionada enquanto o foco está no componente.\n   * Retorna um objeto `KeyboardEvent` com informações sobre a tecla.\n   */\n  @Output('p-keydown') keydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n  displayAdditionalHelp: boolean = false;\n  mdColumns: number = poRadioGroupColumnsDefaultLength;\n  value: any;\n\n  protected readonly cd = inject(ChangeDetectorRef);\n  protected onTouched: any = null;\n\n  private _columns: number = poRadioGroupColumnsDefaultLength;\n  private _disabled?: boolean = false;\n  private _options: Array<PoRadioGroupOption>;\n  private _required?: boolean = false;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n  private onChangePropagate: any = null;\n  private validatorChange;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a quantidade de colunas para exibição das opções.\n   *\n   * **Considerações:**\n   *  - É possível exibir as opções entre `1` e `4` colunas.\n   *  - O número máximo de colunas é invariável nas seguintes resoluções:\n   *    + `sm`: `1`\n   *    + `md`: `2`\n   *\n   * @default `2`\n   */\n  @Input('p-columns') set columns(value: number) {\n    const columns = PoUtils.convertToInt(value, poRadioGroupColumnsDefaultLength);\n\n    this._columns = this.getGridSystemColumns(columns, 4);\n    this.mdColumns = this.getGridSystemColumns(columns, 2);\n  }\n\n  get columns() {\n    return this._columns;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica que o campo será desabilitado.\n   *\n   * @default `false`\n   */\n  @Input('p-disabled') set disabled(disabled: boolean) {\n    this._disabled = convertToBoolean(disabled);\n\n    this.validateModel();\n  }\n\n  get disabled() {\n    return this._disabled;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o campo será obrigatório.\n   *\n   * @default `false`\n   */\n  @Input('p-required') set required(required: boolean) {\n    this._required = convertToBoolean(required);\n\n    this.validateModel();\n  }\n\n  get required() {\n    return this._required;\n  }\n\n  /**\n   * Define se a indicação de campo obrigatório será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - Não possuir `p-help` e/ou `p-label`.\n   */\n  @Input('p-show-required') showRequired: boolean = false;\n\n  /**\n   * Lista de opções que serão exibidas.\n   * Nesta propriedade deve ser definido um array de objetos que implementam a interface PoRadioGroupOption.\n   */\n  @Input('p-options') set options(value: Array<PoRadioGroupOption>) {\n    this._options = value;\n    removeDuplicatedOptions(this.options);\n  }\n  get options() {\n    return this._options;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos radios do componente:\n   * - `small`: 16x16 (disponível apenas para acessibilidade AA).\n   * - `medium`: 24x24.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   *\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoRadioSize);\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  // Função que controla quando deve ser emitido onChange e atualiza o Model\n  changeValue(changedValue: any) {\n    if (this.onChangePropagate) {\n      this.onChangePropagate(changedValue);\n    }\n\n    if (this.value !== changedValue) {\n      this.change.emit(changedValue);\n    }\n\n    this.value = changedValue;\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar os estados de habilitado via forms api\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n  }\n\n  registerOnChange(fn: any) {\n    this.onChangePropagate = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  registerOnValidatorChange(fn: any) {\n    this.validatorChange = fn;\n  }\n\n  validate(abstractControl: AbstractControl): { [key: string]: any } {\n    if (PoValidators.requiredFailed(this.required, this.disabled, abstractControl.value)) {\n      return {\n        required: {\n          valid: false\n        }\n      };\n    }\n  }\n\n  writeValue(modelValue: any) {\n    this.value = modelValue;\n\n    // Busca radio com o valor especificado\n    const element = this.getElementByValue(modelValue);\n    if (!element && this.onChangePropagate) {\n      this.value = undefined;\n      this.onChangePropagate(this.value);\n    }\n  }\n\n  private checkColumnsRange(columns, maxColumns): boolean {\n    const minColumns = 1;\n\n    return columns >= minColumns && columns <= maxColumns;\n  }\n\n  private getGridSystemColumns(columns: number, maxColumns: number): number {\n    const gridSystemColumns = poRadioGroupColumnsTotalLength / columns;\n\n    return this.checkColumnsRange(columns, maxColumns) ? gridSystemColumns : poRadioGroupColumnsDefaultLength;\n  }\n\n  private validateModel() {\n    if (this.validatorChange) {\n      this.validatorChange();\n    }\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoRadioSize);\n    this._size = size;\n  }\n\n  // Deve retornar o valor elemento que contém o valor passado por parâmetro\n  abstract getElementByValue(value: any): any;\n}\n","import { ChangeDetectorRef, Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\nimport { convertToBoolean } from '../../utils/util';\nimport { PoHelperComponent, PoHelperOptions } from '../po-helper';\n\n@Directive()\nexport abstract class PoFieldModel<T> implements ControlValueAccessor {\n  // Propriedade interna que define se o ícone de ajuda adicional terá cursor clicável (evento) ou padrão (tooltip).\n  @Input() additionalHelpEventTrigger: string | undefined;\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de ajuda adicional, com o texto desta propriedade sendo passado para o popover do componente `po-helper`.\n   * **Como boa prática, indica-se utilizar um texto com até 140 caracteres.**\n   * > Requer um recuo mínimo de 8px se o componente estiver próximo à lateral da tela.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Input('p-additional-help-tooltip') additionalHelpTooltip?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o popover (`p-helper` e/ou `p-error-limit`) será incluído no body da página e não\n   * dentro do componente. Essa opção pode ser necessária em cenários com containers que possuem scroll ou overflow\n   * escondido, garantindo o posicionamento correto do tooltip próximo ao elemento.\n   *\n   * > Quando utilizado com `p-helper`, leitores de tela como o NVDA podem não ler o conteúdo do popover.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendBox: boolean = false;\n\n  /** Rótulo exibido pelo componente. */\n  @Input('p-label') label: string;\n\n  /** Nome do componente. */\n  @Input('name') name: string;\n\n  /** Texto de apoio para o campo. */\n  @Input('p-help') help: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica se o campo será desabilitado.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-disabled', transform: convertToBoolean }) disabled: boolean = false;\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar no ícone de ajuda adicional.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Output('p-additional-help') additionalHelp = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao alterar valor do campo.\n   */\n  @Output('p-change') change: EventEmitter<T> = new EventEmitter<T>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado quando uma tecla é pressionada enquanto o foco está no componente.\n   * Retorna um objeto `KeyboardEvent` com informações sobre a tecla.\n   */\n  @Output('p-keydown') keydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n  displayAdditionalHelp: boolean = false;\n  value: T;\n\n  protected onTouched;\n\n  private propagateChange: any;\n\n  constructor(private readonly cd: ChangeDetectorRef) {}\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar os estados de habilitado via forms api\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n    this.cd?.markForCheck();\n  }\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  writeValue(value: T): void {\n    this.onWriteValue(value);\n  }\n\n  emitAdditionalHelp() {\n    if (this.label && this.isAdditionalHelpEventTriggered()) {\n      this.additionalHelp.emit();\n    }\n  }\n  emitChange(value) {\n    this.change.emit(value);\n  }\n\n  getAdditionalHelpTooltip() {\n    return this.isAdditionalHelpEventTriggered() ? null : this.additionalHelpTooltip;\n  }\n\n  /**\n   * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n   * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `p-keydown`.\n   *\n   * > Exibe ou oculta o conteúdo do componente `po-helper` quando o componente estiver com foco.\n   *\n   * ```\n   * // Exemplo com p-label e p-helper\n   * <po-nome-component\n   *  #component\n   *  ...\n   *  p-label=\"Label do component\"\n   *  [p-helper]=\"helperOptions\"\n   *  (p-keydown)=\"onKeyDown($event, component)\"\n   * ></po-nome-component>\n   * ```\n   * ```\n   * ...\n   * onKeyDown(event: KeyboardEvent, inp: PoNomeDoComponente): void {\n   *  if (event.code === 'F9') {\n   *    inp.showAdditionalHelp();\n   *  }\n   * }\n   * ```\n   */\n  showAdditionalHelp(helperHtmlElement?: PoHelperComponent, poHelperComponent?: string | PoHelperOptions): boolean {\n    this.displayAdditionalHelp = !this.displayAdditionalHelp;\n    const helper = poHelperComponent;\n    const isHelpEvt = this.isAdditionalHelpEventTriggered();\n    if (!this.label && (helper || this.additionalHelpTooltip || isHelpEvt || helperHtmlElement)) {\n      if (isHelpEvt) {\n        this.additionalHelp.emit();\n      }\n      if (typeof helper !== 'string' && typeof helper?.eventOnClick === 'function') {\n        helper.eventOnClick();\n        return;\n      }\n      if (helperHtmlElement?.helperIsVisible()) {\n        helperHtmlElement?.closeHelperPopover();\n        return;\n      }\n      helperHtmlElement?.openHelperPopover();\n      return;\n    }\n    return this.displayAdditionalHelp;\n  }\n\n  protected isAdditionalHelpEventTriggered(): boolean {\n    return (\n      this.additionalHelpEventTrigger === 'event' ||\n      (this.additionalHelpEventTrigger === undefined && this.additionalHelp.observed)\n    );\n  }\n\n  protected updateModel(value: T) {\n    if (this.propagateChange) {\n      this.propagateChange(value);\n    }\n  }\n\n  abstract onWriteValue(value: T): void;\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostListener,\n  Input,\n  Output,\n  Renderer2,\n  ViewChild,\n  inject,\n  HostBinding\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PoFieldModel } from '../po-field.model';\nimport { PoKeyCodeEnum } from './../../../enums/po-key-code.enum';\n\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from '../../../utils/util';\nimport { PoRadioSize } from './enums/po-radio-size.enum';\n\n@Component({\n  selector: 'po-radio',\n  templateUrl: './po-radio.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoRadioComponent),\n      multi: true\n    }\n  ],\n  standalone: false\n})\nexport class PoRadioComponent extends PoFieldModel<boolean> {\n  private readonly changeDetector = inject(ChangeDetectorRef);\n  private readonly renderer = inject(Renderer2);\n\n  @ViewChild('radio', { static: true }) radio: ElementRef;\n  @ViewChild('radioInput', { static: true }) radioInput: ElementRef;\n\n  value = false;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n\n  /** Define o valor do *radio* */\n  @Input('p-value') radioValue: string;\n\n  /** Define o tamanho do radio. */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoRadioSize);\n  }\n\n  @Input({ alias: 'p-required', transform: convertToBoolean }) required?: boolean;\n\n  /**\n   *\n   * Habilita a quebra automática do texto da propriedade `p-label`. Quando `p-label-text-wrap` for verdadeiro, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-label-text-wrap', transform: convertToBoolean }) labelTextWrap?: boolean = false;\n\n  /** Define o status do *radio* */\n  @Input('p-checked') checked: boolean = false;\n\n  // Evento disparado ao sair do campo.\n  @Output('p-blur') blur: EventEmitter<any> = new EventEmitter();\n\n  /** Emite evento para a tabela ao selecionar ou desselecionar */\n  @Output('p-change-selected') changeSelected: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Função que atribui foco ao *radio*.\n   *\n   * Para utilizá-la é necessário capturar a referência do componente no DOM através do `ViewChild`, como por exemplo:\n   *\n   * ```\n   * import { ViewChild } from '@angular/core';\n   * import { PoRadioComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoRadioComponent, { static: true }) radio: PoRadioComponent;\n   *\n   * focusRadio() {\n   * this.radio.focus();\n   * }\n   * ```\n   *\n   */\n  focus(): void {\n    if (!this.disabled) {\n      this.radioInput.nativeElement.focus();\n      this.onKeyup();\n    }\n  }\n\n  onBlur() {\n    this.onTouched?.();\n    this.blur.emit();\n  }\n\n  onKeyDown(event: KeyboardEvent) {\n    if (event.which === PoKeyCodeEnum.space || event.keyCode === PoKeyCodeEnum.space) {\n      this.eventClick();\n    }\n  }\n\n  changeValue(value: any) {\n    if (value) {\n      this.value = value;\n      this.updateModel(value);\n      this.emitChange(this.value);\n    }\n  }\n\n  eventClick() {\n    if (!this.disabled) {\n      this.changeValue(!this.value);\n      this.changeDetector.detectChanges();\n      this.changeSelected.emit(null);\n    }\n  }\n\n  onWriteValue(value: any): void {\n    if (value !== this.value) {\n      this.value = !!value;\n\n      this.changeDetector.markForCheck();\n    }\n  }\n\n  @HostListener('focusout')\n  focusOut(): void {\n    this.renderer.removeClass(this.radio.nativeElement, 'po-radio-focus');\n  }\n\n  @HostListener('keyup')\n  onKeyup(): void {\n    this.renderer.addClass(this.radio.nativeElement, 'po-radio-focus');\n  }\n\n  @HostListener('keydown')\n  onKeydown(): void {\n    this.renderer.addClass(this.radio.nativeElement, 'po-radio-focus');\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoRadioSize);\n    this._size = size;\n  }\n}\n","<div #radio class=\"po-radio\">\n  <label (click)=\"eventClick()\" (keydown)=\"onKeyDown($event)\">\n    <input\n      #radioInput\n      type=\"radio\"\n      [checked]=\"checked\"\n      [disabled]=\"disabled\"\n      [name]=\"name ?? 'po-input-radio'\"\n      [required]=\"required\"\n      [value]=\"radioValue ?? ''\"\n      (blur)=\"onBlur()\"\n    />\n    @if (label) {\n      <po-label [p-text-wrap]=\"labelTextWrap\" [p-disabled]=\"disabled\" [p-label]=\"label\"></po-label>\n    }\n  </label>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DoCheck,\n  ElementRef,\n  forwardRef,\n  Input,\n  IterableDiffers,\n  QueryList,\n  ViewChild,\n  ViewChildren,\n  inject,\n  OnChanges,\n  SimpleChanges\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { setHelperSettings, PoUtils } from '../../../utils/util';\n\nimport { PoRadioComponent } from '../po-radio/po-radio.component';\nimport { PoRadioGroupBaseComponent } from './po-radio-group-base.component';\nimport { PoHelperComponent } from '../../po-helper';\n\n/**\n * @docsExtends PoRadioGroupBaseComponent\n *\n * @example\n *\n * <example name=\"po-radio-group-basic\" title=\"PO Radio Group Basic\">\n *  <file name=\"sample-po-radio-group-basic/sample-po-radio-group-basic.component.html\"> </file>\n *  <file name=\"sample-po-radio-group-basic/sample-po-radio-group-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-radio-group-labs\" title=\"PO Radio Group Labs\">\n *  <file name=\"sample-po-radio-group-labs/sample-po-radio-group-labs.component.html\"> </file>\n *  <file name=\"sample-po-radio-group-labs/sample-po-radio-group-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-radio-group-translator\" title=\"PO Radio Group - Translator\">\n *  <file name=\"sample-po-radio-group-translator/sample-po-radio-group-translator.component.html\"> </file>\n *  <file name=\"sample-po-radio-group-translator/sample-po-radio-group-translator.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-radio-group-translator-reactive-form\" title=\"PO Radio Group - Translator Reactive Form\">\n *  <file name=\"sample-po-radio-group-translator-reactive-form/sample-po-radio-group-translator-reactive-form.component.html\"> </file>\n *  <file name=\"sample-po-radio-group-translator-reactive-form/sample-po-radio-group-translator-reactive-form.component.ts\"> </file>\n * </example>\n *\n */\n@Component({\n  selector: 'po-radio-group',\n  templateUrl: './po-radio-group.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoRadioGroupComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => PoRadioGroupComponent),\n      multi: true\n    }\n  ],\n  standalone: false\n})\nexport class PoRadioGroupComponent extends PoRadioGroupBaseComponent implements AfterViewInit, DoCheck, OnChanges {\n  private readonly el = inject(ElementRef);\n\n  /** Label do campo. */\n  @Input('p-label') label?: string;\n\n  /** Texto de apoio do campo. */\n  @Input('p-help') help?: string;\n\n  @ViewChild('inp', { read: ElementRef, static: true }) inputEl: ElementRef;\n  @ViewChildren('inputRadio') radioLabels: QueryList<PoRadioComponent>;\n  @ViewChild('helperEl', { read: PoHelperComponent, static: false }) helperEl?: PoHelperComponent;\n\n  differ: any;\n\n  constructor() {\n    const differs = inject(IterableDiffers);\n\n    super();\n    this.differ = differs.find([]).create(null);\n  }\n\n  ngAfterViewInit() {\n    if (this.autoFocus) {\n      this.focus();\n    }\n  }\n\n  ngDoCheck() {\n    const change = this.differ.diff(this.options);\n    if (change) {\n      PoUtils.removeDuplicatedOptions(this.options);\n    }\n    this.cd.markForCheck();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n  }\n\n  emitAdditionalHelp() {\n    if (this.label && this.isAdditionalHelpEventTriggered()) {\n      this.additionalHelp.emit();\n    }\n  }\n\n  eventClick(value: any, disabled: any) {\n    if (!disabled) {\n      this.onTouched?.();\n      this.changeValue(value);\n    }\n  }\n\n  /**\n   * Função que atribui foco ao componente.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoRadioGroupComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoRadioGroupComponent, { static: true }) radio: PoRadioGroupComponent;\n   *\n   * focusRadio() {\n   *   this.radio.focus();\n   * }\n   * ```\n   */\n  focus(): void {\n    if (this.radioLabels && !this.disabled) {\n      const radioLabel = this.radioLabels.find((_, index) => !this.options[index].disabled);\n\n      if (radioLabel) {\n        radioLabel.focus();\n      }\n    }\n  }\n\n  getAdditionalHelpTooltip() {\n    return this.isAdditionalHelpEventTriggered() ? null : this.additionalHelpTooltip;\n  }\n\n  getElementByValue(value) {\n    return this.inputEl.nativeElement.querySelector(`input[value='${value}']`);\n  }\n\n  getErrorPattern() {\n    return this.fieldErrorMessage && this.hasInvalidClass() ? this.fieldErrorMessage : '';\n  }\n\n  hasInvalidClass() {\n    return (\n      this.el.nativeElement.classList.contains('ng-invalid') && this.el.nativeElement.classList.contains('ng-dirty')\n    );\n  }\n\n  onBlur(radio: PoRadioComponent): void {\n    if (!this.isRadioOptionFocused(radio) && this.getAdditionalHelpTooltip() && this.displayAdditionalHelp) {\n      this.showAdditionalHelp();\n    }\n  }\n\n  onKeyDown(event: KeyboardEvent, radio?: PoRadioComponent): void {\n    if (this.isRadioOptionFocused(radio)) {\n      this.keydown.emit(event);\n    }\n  }\n\n  onKeyUp(event: KeyboardEvent, value) {\n    const key = event.keyCode || event.which;\n\n    if (this.isArrowKey(key)) {\n      this.changeValue(value);\n    }\n  }\n\n  /**\n   *\n   * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n   * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `p-keydown`.\n   *\n   * > Exibe ou oculta o conteúdo do componente `po-helper` quando o componente estiver com foco.\n   *\n   * ```\n   * // Exemplo com p-label e p-helper\n   * <po-radio-group\n   *  #radioGroup\n   *  ...\n   *  p-label=\"Label do radioGroup\"\n   *  [p-helper]=\"helperOptions\"\n   *  (p-keydown)=\"onKeyDown($event, radioGroup)\"\n   * ></po-radio-group>\n   * ```\n   * ```\n   * ...\n   * onKeyDown(event: KeyboardEvent, inp: PoRadioGroupComponent): void {\n   *  if (event.code === 'F9') {\n   *    inp.showAdditionalHelp();\n   *  }\n   * }\n   * ```\n   */\n  showAdditionalHelp(): boolean {\n    this.displayAdditionalHelp = !this.displayAdditionalHelp;\n    const helper = this.poHelperComponent();\n    const isHelpEvt = this.isAdditionalHelpEventTriggered();\n    if (!this.label && (helper || this.additionalHelpTooltip || isHelpEvt)) {\n      if (isHelpEvt) {\n        this.additionalHelp.emit();\n      }\n      if (typeof helper !== 'string' && typeof helper?.eventOnClick === 'function') {\n        helper.eventOnClick();\n        return;\n      }\n      if (this.helperEl?.helperIsVisible()) {\n        this.helperEl?.closeHelperPopover();\n        return;\n      }\n      this.helperEl?.openHelperPopover();\n      return;\n    }\n    return this.displayAdditionalHelp;\n  }\n\n  setHelper(label?: string, additionalHelpTooltip?: string) {\n    return setHelperSettings(\n      label,\n      additionalHelpTooltip,\n      this.poHelperComponent(),\n      this.size,\n      this.isAdditionalHelpEventTriggered() ? this.additionalHelp : undefined\n    );\n  }\n\n  private isAdditionalHelpEventTriggered(): boolean {\n    return (\n      this.additionalHelpEventTrigger === 'event' ||\n      (this.additionalHelpEventTrigger === undefined && this.additionalHelp.observed)\n    );\n  }\n\n  private isArrowKey(key: number) {\n    return key >= 37 && key <= 40;\n  }\n\n  private isRadioOptionFocused(radio: PoRadioComponent): boolean {\n    return document.activeElement === radio.radioInput.nativeElement;\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n<po-field-container\n  [p-disabled]=\"disabled\"\n  [p-label]=\"label\"\n  [p-optional]=\"optional\"\n  [p-required]=\"required\"\n  [p-show-required]=\"showRequired\"\n  [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n  [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n  [p-size]=\"size\"\n  [p-text-wrap]=\"labelTextWrap()\"\n  [p-compact-label]=\"compactLabel()\"\n>\n  <div #inp role=\"radiogroup\" [attr.aria-label]=\"label\" [attr.data-options]=\"options.length\">\n    <div class=\"po-field-container-content\">\n      <div class=\"po-radio-group\" [attr.name]=\"name\">\n        @for (option of options; track option) {\n          <div class=\"po-radio-group-item po-md-{{ mdColumns }} po-lg-{{ columns }}\">\n            <po-radio\n              #inputRadio\n              [name]=\"name\"\n              [p-checked]=\"value === option.value\"\n              [p-disabled]=\"option.disabled === true || disabled\"\n              [p-label]=\"option.label\"\n              [p-label-text-wrap]=\"true\"\n              [p-required]=\"required\"\n              [p-size]=\"size\"\n              [p-value]=\"option.value\"\n              (p-blur)=\"onBlur(inputRadio)\"\n              (keydown)=\"onKeyDown($event, inputRadio)\"\n              (keyup)=\"onKeyUp($event, option.value)\"\n              (click)=\"eventClick(option.value, option.disabled === true || disabled)\"\n            >\n            </po-radio>\n          </div>\n        }\n      </div>\n    </div>\n  </div>\n  <po-field-container-bottom\n    [p-append-in-body]=\"appendBox\"\n    [p-help]=\"help\"\n    [p-disabled]=\"disabled\"\n    [p-error-limit]=\"errorLimit\"\n    [p-error-pattern]=\"getErrorPattern()\"\n    [p-size]=\"size\"\n    [p-helper]=\"!label ? poHelper.helperSettings : undefined\"\n    [p-show-helper]=\"!label ? displayAdditionalHelp : undefined\"\n  ></po-field-container-bottom>\n</po-field-container>\n","import { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PoRadioComponent } from './po-radio.component';\nimport { PoLabelModule } from '../../po-label/po-label.module';\n\n@NgModule({\n  declarations: [PoRadioComponent],\n  exports: [PoRadioComponent],\n  imports: [CommonModule, FormsModule, PoLabelModule]\n})\nexport class PoRadioModule {}\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\n\nimport { PoFieldContainerModule } from '../po-field-container/po-field-container.module';\n\nimport { PoRadioGroupComponent } from './po-radio-group.component';\nimport { PoRadioModule } from '../po-radio/po-radio.module';\nimport { PoHelperModule } from '../../po-helper';\n\n/**\n * @description\n *\n * Módulo do componente `po-radio-group`.\n */\n@NgModule({\n  imports: [CommonModule, FormsModule, PoFieldContainerModule, PoRadioModule, PoHelperModule],\n  exports: [PoRadioGroupComponent],\n  declarations: [PoRadioGroupComponent]\n})\nexport class PoRadioGroupModule {}\n","/**\n * Para usar o po-mask é preciso instanciar esta classe passando a máscara como\n * primeiro parâmetro, e no segundo parâmetro, deve se informado true, caso queira\n * que o model seja formatado ou false para o que o model seja limpo.\n */\nexport class PoMask {\n  mask: string = '';\n  formatModel: boolean = false;\n  // controle de posição\n  initialPosition: number = 0;\n  finalPosition: number = 0;\n\n  pattern: string = '';\n  get getPattern(): string {\n    return this.pattern;\n  }\n\n  valueToInput: string;\n  get getValueToInput(): string {\n    return this.valueToInput;\n  }\n  set setValueToInput(value: string) {\n    this.valueToInput = value;\n  }\n\n  valueToModel: string;\n  get getValueToModel(): string {\n    return this.valueToModel;\n  }\n  set setValueToModel(value: string) {\n    this.valueToModel = value;\n  }\n\n  formattingEnds: boolean;\n\n  constructor(mask: string, formatModel: boolean) {\n    this.mask = mask;\n    this.formatModel = formatModel;\n    this.pattern = this.getRegexFromMask(mask);\n  }\n\n  keyup($event: any) {\n    if (this.mask) {\n      const value = $event.target.value;\n      // formata o valor quando for colado com control + v e reposiciona o cursor\n      if ($event.keyCode === 17 || $event.keyCode === 91) {\n        $event.target.value = this.controlFormatting(value);\n        this.resetPositions($event);\n      }\n\n      $event.preventDefault();\n\n      switch ($event.keyCode) {\n        case 37: // seta esquerda\n          if (this.initialPosition > 0) {\n            this.initialPosition--;\n          }\n          this.setPositionNotShiftKey($event);\n          this.setSelectionRange($event);\n          break;\n\n        case 39: // seta direita\n          if (this.initialPosition < value.toString().length) {\n            this.initialPosition++;\n          }\n          this.setPositionNotShiftKey($event);\n          this.setSelectionRange($event);\n          break;\n\n        case 35: // end\n          this.finalPosition = value.toString().length;\n          if ($event.shiftKey) {\n            this.setPositions($event);\n          } else {\n            this.initialPosition = this.finalPosition;\n            this.setPositions($event);\n          }\n          break;\n\n        case 36: // HOME\n          if ($event.shiftKey) {\n            this.finalPosition = this.initialPosition;\n            this.initialPosition = 0;\n            this.setPositions($event);\n          } else {\n            this.initialPosition = 0;\n            this.finalPosition = 0;\n            this.setPositions($event);\n          }\n          break;\n      }\n    }\n  }\n\n  setPositionNotShiftKey($event: any) {\n    if (!$event.shiftKey) {\n      this.finalPosition = this.initialPosition;\n    }\n  }\n\n  setSelectionRange($event: any) {\n    if (this.initialPosition > this.finalPosition) {\n      $event.target.setSelectionRange?.(this.finalPosition, this.initialPosition);\n    } else {\n      $event.target.setSelectionRange?.(this.initialPosition, this.finalPosition);\n    }\n  }\n\n  keydown($event: any) {\n    if (this.mask) {\n      let value: string = $event.target.value;\n      if ($event.keyCode === 9) {\n        return;\n      }\n\n      if (!$event.ctrlKey && !$event.metaKey) {\n        $event.preventDefault();\n      }\n\n      // Não faz nada quando for digitado CTRL ou COMMAND e V\n      // Já está sendo tratado no evento keyup\n      if (\n        $event.ctrlKey ||\n        ($event.metaKey && $event.keyCode !== 86) ||\n        ($event.keyCode >= 37 && $event.keyCode <= 40) ||\n        $event.keyCode === 16 ||\n        $event.keyCode === 9\n      ) {\n        return;\n      }\n\n      // Valida a tecla digitada\n      if (this.isKeyValid($event.keyCode)) {\n        if (this.finalPosition === null) {\n          this.finalPosition = this.initialPosition;\n        }\n        this.revertPositions(this.initialPosition, this.finalPosition);\n\n        switch ($event.keyCode) {\n          case 8: // backspace\n            this.getPosition($event);\n            if (this.initialPosition < 0) {\n              this.initialPosition = 0;\n              this.setPositions($event);\n            }\n            if (this.initialPosition === this.finalPosition) {\n              this.checkMaskBefore($event, -1);\n              if (this.initialPosition !== 0) {\n                value = value.slice(0, this.initialPosition - 1) + value.slice(this.finalPosition);\n                value = this.controlFormatting(value);\n                $event.target.value = value;\n                this.changePosition($event, -1);\n                this.checkMaskBefore($event, -1);\n                this.setPositions($event);\n                this.resetPositions($event);\n              }\n            } else {\n              this.clearRangeSelection(value, $event, true);\n            }\n            this.setPositions($event);\n            break;\n\n          case 46: // delete\n            this.getPosition($event);\n            if (this.initialPosition === this.finalPosition) {\n              this.checkMaskAfter($event, 1);\n              value = value.slice(0, this.initialPosition) + value.slice(this.finalPosition + 1);\n              value = this.controlFormatting(value);\n              $event.target.value = value;\n              this.setPositions($event);\n              this.resetPositions($event);\n            } else {\n              this.clearRangeSelection(value, $event, false);\n            }\n            this.setPositions($event);\n            break;\n\n          default:\n            // qualquer outra tecla válida\n            this.getPosition($event);\n            value = value.slice(0, this.initialPosition) + $event.key + value.slice(this.finalPosition);\n            value = this.controlFormatting(value);\n            $event.target.value = value;\n            this.changePosition($event, 1);\n            this.checkMaskBefore($event, 1);\n            this.setPositions($event);\n            this.resetPositions($event);\n            this.setPositions($event);\n        }\n      }\n    }\n  }\n\n  clearRangeSelection(value: string, $event: any, isBackspace: boolean) {\n    value = value.slice(0, this.initialPosition) + value.slice(this.finalPosition);\n    value = this.controlFormatting(value);\n    $event.target.value = value;\n\n    if (isBackspace) {\n      this.checkMaskBefore($event, -1);\n    }\n\n    this.setPositions($event);\n    this.resetPositions($event);\n  }\n\n  // passa a posição do click para o controle de posição\n  click($event: any) {\n    this.initialPosition = $event.target.selectionStart;\n    this.finalPosition = $event.target.selectionEnd;\n  }\n\n  blur($event: any) {\n    // Se houver algum valor definido na máscara\n    if (this.mask) {\n      // pega o valor do campo, formata e passa para o model\n      let value = $event.target.value;\n      value = this.controlFormatting(value);\n      $event.target.value = value;\n    }\n  }\n\n  revertPositions(initialPosition: number, finalPosition: number) {\n    if (initialPosition > finalPosition) {\n      // inverte o controle de posição caso o inicial esteja maior que o final\n      const tempPosition = initialPosition;\n      this.initialPosition = finalPosition;\n      this.finalPosition = tempPosition;\n    }\n  }\n\n  // reseta o controle de posição\n  resetPositions($event: any) {\n    this.initialPosition = $event.target.selectionStart;\n    this.finalPosition = this.initialPosition;\n  }\n\n  // posiciona o cursor de acordo com o controle de posição\n  setPositions($event: any) {\n    $event.target.setSelectionRange?.(this.initialPosition, this.finalPosition);\n  }\n\n  // muda a posição do cursor e atualiza o controle de posição\n  changePosition($event: any, value: number) {\n    this.initialPosition = this.initialPosition + value;\n    this.finalPosition = this.finalPosition + value;\n    this.setPositions($event);\n  }\n\n  getPosition($event: any) {\n    this.initialPosition = $event.target.selectionStart;\n    this.finalPosition = $event.target.selectionEnd;\n    this.setPositions($event);\n  }\n\n  // Método responsável por controlar a formatação e aplicar todas as máscara possíveis\n  // quando houver valores opcionais (?)\n  controlFormatting(value: string) {\n    // Se o valor for vazio, retorna vazio\n    if (!value) {\n      this.valueToInput = '';\n      this.valueToModel = '';\n      return '';\n    }\n    let valueProcessed;\n    let maskTmp = this.mask;\n\n    // Array que será usado para armazenar todas as máscaras possíveis para\n    // quando houver um valor opcional (?)\n    const arrMasks: Array<any> = [];\n    let contMasks = 0;\n\n    // Enquanto houver algum 9? na máscara\n    while (this.hasOptionalNumber(maskTmp)) {\n      arrMasks.push(maskTmp);\n      maskTmp = this.replaceOptionalNumber(maskTmp);\n    }\n    arrMasks.push(maskTmp);\n\n    // Inverte o array\n    arrMasks.reverse();\n\n    // Informa que a formatação ainda não chegou ao fim\n    this.formattingEnds = false;\n\n    while (!this.formattingEnds) {\n      // Seta a formatação como terminada\n      // Então o método formatValue irá setar como não terminado caso haja\n      this.formattingEnds = true;\n\n      // Se não existe mais nenhuma máscara possível, então encerra a formatação\n      if (!arrMasks[contMasks]) {\n        break;\n      }\n\n      // Chama a formatação passando a máscara e o valor\n      valueProcessed = this.formatValue(value, arrMasks[contMasks]);\n      contMasks++;\n    }\n\n    return valueProcessed;\n  }\n\n  // Função que formata a máscara com o valor passado\n  formatValue(value: string, mask: string) {\n    // Remove as marcas de valor opciona (?)\n    mask = mask.replace(/\\?/g, '');\n\n    // Substitui todos os caracteres que não são fixos da máscara por _\n    const guide = mask.replace(this.listValidKeys(), '_');\n\n    // Contador usado para percorrer o guide\n    let contGuide: number = 0;\n\n    // String final formatada\n    let valueProcessed: string = '';\n\n    // Remove do valor todos os caracteres fixos como ()/-+\n    value = this.removeFormattingValue(value);\n\n    // Percorre todo o valor e coloca a formatação de acordo com a máscara\n    for (let i = 0; i < value.length; i++) {\n      const charValue = value[i];\n\n      // Se o guide acabou, seta a formatação como não terminada para que o método controlFormatting\n      // tente formatar com outra possível máscara\n      if (!guide[contGuide]) {\n        this.formattingEnds = false;\n        break;\n      }\n\n      // Percorre o Guide enquanto tem caracteres fixos\n      while (this.isFixedCharacterGuide(guide[contGuide]) && guide[contGuide]) {\n        valueProcessed += guide[contGuide];\n        contGuide++;\n      }\n\n      // É um caracter válido de acordo com a máscara\n      if (this.isKeyValidMask(charValue, mask[contGuide])) {\n        valueProcessed += charValue;\n        contGuide++;\n      } else {\n        // Se não é um caracter válido, deve interromper.\n        break;\n      }\n    }\n\n    if (this.formatModel) {\n      this.valueToInput = valueProcessed;\n      this.valueToModel = valueProcessed;\n    } else {\n      this.valueToInput = valueProcessed;\n      this.valueToModel = this.removeFormattingValue(valueProcessed);\n    }\n\n    return valueProcessed;\n  }\n\n  // verifica se tem algum caracter de mascara antes do cursor\n  checkMaskBefore($event: any, position: number) {\n    if (this.isFixedCharacterGuide($event.target.value.toString().charAt(this.initialPosition - 1))) {\n      this.changePosition($event, position);\n      this.checkMaskBefore($event, position);\n    }\n  }\n\n  // verifica se tem algum caracter de mascara depois do cursor\n  checkMaskAfter($event: any, position: number) {\n    if (this.isFixedCharacterGuide($event.target.value.toString().charAt(this.initialPosition))) {\n      this.changePosition($event, position);\n      this.checkMaskAfter($event, position);\n    }\n  }\n\n  // Retorna a máscara sem um valor opcional\n  replaceOptionalNumber(mask: string) {\n    let i = 9;\n    while (i >= 0) {\n      if (mask.indexOf(i + '?') > -1) {\n        return mask.replace(i + '?', '');\n      }\n      i--;\n    }\n    return mask;\n  }\n\n  // Verifica se contém caracteres permitidos somente na máscara \\/() +-\n  isFixedCharacterGuide(key: any) {\n    return this.testRegex(key, this.getFixedCharacterGuide());\n  }\n\n  // Retorna caracteres permitidos somente na máscara \\/() +-\n  getFixedCharacterGuide() {\n    return /[\\\\\\/() +-.\\:]/g;\n  }\n\n  // Caracteres permitidos de serem digitados\n  listValidKeys() {\n    return /[a-zA-Z0-9]/g;\n  }\n\n  // Se é um dígito válido\n  isKeyValid(keyCode: any) {\n    return this.isKeyCodeValid(keyCode);\n  }\n\n  // Verifica se a tecla digitada é permitida\n  // Permite apenas números, letras, backspace e del\n  isKeyCodeValid(keyCode: number) {\n    return (\n      (keyCode >= 48 && keyCode <= 57) ||\n      (keyCode >= 65 && keyCode <= 90) ||\n      (keyCode >= 96 && keyCode <= 105) ||\n      keyCode === 8 ||\n      keyCode === 9 ||\n      keyCode === 46\n    );\n  }\n\n  // Se está de acordo com a máscara\n  isKeyValidMask(key: any, keyMask: any) {\n    return this.testRegex(key, this.replaceMask(keyMask));\n  }\n\n  // Retorna se a chave foi aprovada pela expressão regular\n  testRegex(key: any, regex: any) {\n    return regex.test(key);\n  }\n\n  // Remove a formatacão do valor\n  // É possível ser melhorado para remover pontualmente os caracteres fixos de acordo com a máscara\n  removeFormattingValue(value: string) {\n    return value.replace(this.getFixedCharacterGuide(), '');\n  }\n\n  // Verifica se contém valor opcional na máscara 0-9?\n  hasOptionalNumber(mask: string) {\n    return mask.match(/\\d\\?/g);\n  }\n\n  // Retorna a expressão regular correspondente ao comando passado\n  replaceMask(char: string) {\n    let regex = /./;\n    switch (char) {\n      case '0':\n        regex = /[0]/;\n        break;\n      case '1':\n        regex = /[0-1]/;\n        break;\n      case '2':\n        regex = /[0-2]/;\n        break;\n      case '3':\n        regex = /[0-3]/;\n        break;\n      case '4':\n        regex = /[0-4]/;\n        break;\n      case '5':\n        regex = /[0-5]/;\n        break;\n      case '6':\n        regex = /[0-6]/;\n        break;\n      case '7':\n        regex = /[0-7]/;\n        break;\n      case '8':\n        regex = /[0-8]/;\n        break;\n      case '9':\n        regex = /[0-9]/;\n        break;\n      case ' ':\n        regex = /\\s/;\n        break;\n      case '@':\n        regex = /[a-zA-Z]/;\n        break;\n      case 'w':\n        regex = /[a-zA-Z0-9]/;\n        break;\n    }\n    return regex;\n  }\n\n  getRegexFromMask(mask: string) {\n    if (mask) {\n      let pattern;\n      if (this.formatModel) {\n        pattern = mask.replace(/\\\\/g, '\\\\\\\\');\n        pattern = pattern.replace(/\\+/g, '\\\\+');\n        pattern = pattern.replace(/\\./g, '\\\\.');\n        pattern = pattern.replace(/-/g, '-');\n        pattern = pattern.replace(/\\(/g, '\\\\(');\n        pattern = pattern.replace(/\\)/g, '\\\\)');\n        pattern = pattern.replace(/\\//g, '\\\\/');\n        pattern = pattern.replace(/\\s/g, '\\\\s');\n        pattern = pattern.replace(/:/g, '\\\\:');\n        pattern = pattern.replace(/\\@(?!\\s)/g, '\\\\w');\n        pattern = pattern.replace(/\\d/g, '\\\\w');\n      } else {\n        pattern = mask.replace(/\\\\/g, '');\n        pattern = pattern.replace(/\\+/g, '');\n        pattern = pattern.replace(/\\./g, '');\n        pattern = pattern.replace(/-/g, '');\n        pattern = pattern.replace(/\\(/g, '');\n        pattern = pattern.replace(/\\)/g, '');\n        pattern = pattern.replace(/\\//g, '');\n        pattern = pattern.replace(/\\s/g, '');\n        pattern = pattern.replace(/:/g, '');\n        pattern = pattern.replace(/\\@/g, '\\\\w');\n        pattern = pattern.replace(/\\d/g, '\\\\w');\n      }\n      return pattern;\n    } else {\n      return null;\n    }\n  }\n}\n","/**\n * @usedBy PoDatepickerComponent\n *\n * @description\n *\n * *Enum* que define o padrão de formatação das datas.\n *\n * > Caso um formato padrão seja definido, o mesmo não será mais alterado de acordo com o formato de entrada.\n */\nexport enum PoDatepickerIsoFormat {\n  /** Padrão **E8601DAw** (*yyyy-mm-dd*). */\n  Basic = 'basic',\n\n  /** Padrão **E8601DZw** (*yyyy-mm-ddThh:mm:ss+|-hh:mm*). */\n  Extended = 'extended'\n}\n","import {\n  ChangeDetectorRef,\n  Directive,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  input,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output\n} from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, Validator, Validators } from '@angular/forms';\n\nimport {\n  convertIsoToDate,\n  convertToBoolean,\n  getDefaultSizeFn,\n  isTypeof,\n  replaceFormatSeparator,\n  validateSizeFn,\n  PoUtils,\n  mapInputSizeToLoadingIcon\n} from '../../../utils/util';\nimport { PoMask } from '../po-input/po-mask';\nimport { dateFailed, PoValidators } from './../validators';\n\nimport { Observable, Subscription, switchMap } from 'rxjs';\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { poLocaleDefault } from '../../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport { PoDatepickerIsoFormat } from './enums/po-datepicker-iso-format.enum';\nimport { PoHelperOptions } from '../../po-helper';\n\nconst poDatepickerFormatDefault: string = 'dd/mm/yyyy';\n\n/**\n * @description\n *\n * O `po-datepicker` é um componente específico para manipulação de datas permitindo a digitação e / ou seleção.\n *\n * O formato de exibição da data, ou seja, o formato que é apresentado ao usuário é o dd/mm/yyyy,\n * mas podem ser definidos outros padrões (veja mais na propriedade `p-format`).\n *\n * O idioma padrão do calendário será exibido de acordo com o navegador, caso tenha necessidade de alterar\n * use a propriedade `p-locale`.\n *\n * O datepicker aceita três formatos de data: o E8601DZw (yyyy-mm-ddThh:mm:ss+|-hh:mm), o E8601DAw (yyyy-mm-dd) e o\n * Date padrão do Javascript.\n *\n * > Por padrão, o formato de saída do *model* se ajustará conforme o formato de entrada. Se por acaso precisar controlar o valor de saída,\n * a propriedade `p-iso-format` provê esse controle independentemente do formato de entrada. Veja abaixo os formatos disponíveis:\n *\n * - Formato de entrada e saída (E8601DZw) - `'2017-11-28T00:00:00-02:00'`;\n *\n * - Formato de entrada e saída (E8601DAw) - `'2017-11-28'`;\n *\n * - Formato de entrada (Date) - `new Date(2017, 10, 28)` e saída (E8601DAw) - `'2017-11-28'`;\n *\n * **Importante:**\n *\n * - Para utilizar datas com ano inferior a 100, verificar o comportamento do [`new Date`](https://www.w3schools.com/js/js_dates.asp)\n * e utilizar o método [`setFullYear`](https://www.w3schools.com/jsref/jsref_setfullyear.asp).\n * - Caso a data esteja inválida, o `model` receberá **'Data inválida'**.\n * - Caso o `input` esteja passando um `[(ngModel)]`, mas não tenha um `name`, então irá ocorrer um erro\n * do próprio Angular (`[ngModelOptions]=\"{standalone: true}\"`).\n *\n * Exemplo:\n *\n * ```\n * <po-datepicker\n *   [(ngModel)]=\"pessoa.nome\"\n *   [ngModelOptions]=\"{standalone: true}\"\n * </po-datepicker>\n * ```\n *\n * > Não esqueça de importar o `FormsModule` em seu módulo, tal como para utilizar o `input default`.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS): <br>\n * Obs: Só é possível realizar alterações ao adicionar a classe `.po-input`\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                     |\n * |----------------------------------------|-------------------------------------------------------|--------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                  |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                       |\n * | `--font-size`                          | Tamanho da fonte                                      | `var(--font-size-default)`                       |\n * | `--text-color-placeholder` &nbsp;      | Cor principal do texto do placeholder                 | `var(--color-neutral-light-30)`                  |\n * | `--color`                              | Cor principal do datepicker                           | `var(--color-neutral-dark-70)`                   |\n * | `--background`                         | Cor de background                                     | `var(--color-neutral-light-05)`                  |\n * | `--padding`                            | Preenchimento                                         | `0 0.5rem`                                       |\n * | `--text-color`                         | Cor do texto                                          | `var(--color-neutral-dark-90)`                   |\n * | `--field-container-title-justify`      | Alinhamento horizontal do título (`justify-content`)  | `space-between`                                   |\n * | `--field-container-title-flex`         | Flex do título (`flex`)                               | `1 auto`                                          |\n * | **Hover**                              |                                                       |                                                  |\n * | `--color-hover`                        | Cor principal no estado hover                         | `var(--color-brand-01-dark)`                     |\n * | `--background-hover`                   | Cor de background no estado hover                     | `var(--color-brand-01-lightest)`                 |\n * | **Focused**                            |                                                       |                                                  |\n * | `--color-focused`                      | Cor principal no estado de focus                      | `var(--color-action-default)`                    |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                     | `var(--color-action-focus)`                      |\n * | **Disabled**                           |                                                       |                                                  |\n * | `--color-disabled`                     | Cor principal no estado disabled                      | `var(--color-neutral-light-30)`                  |\n * | `--background-disabled`                | Cor de background no estado disabled &nbsp;           | `var(--color-neutral-light-20)`                  |\n * | `--text-color-disabled`                | Cor do texto no estado disabled                       | `var(--color-neutral-dark-70)`                   |\n *\n */\n@Directive()\nexport abstract class PoDatepickerBaseComponent implements ControlValueAccessor, OnInit, OnDestroy, Validator {\n  // Propriedade interna que define se o ícone de ajuda adicional terá cursor clicável (evento) ou padrão (tooltip).\n  @Input() additionalHelpEventTrigger: string | undefined;\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de ajuda adicional, com o texto desta propriedade sendo passado para o popover do componente `po-helper`.\n   * **Como boa prática, indica-se utilizar um texto com até 140 caracteres.**\n   * > Requer um recuo mínimo de 8px se o componente estiver próximo à lateral da tela.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   *\n   */\n  @Input('p-additional-help-tooltip') additionalHelpTooltip?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Aplica foco no elemento ao ser iniciado.\n   *\n   * > Caso mais de um elemento seja configurado com essa propriedade, apenas o último elemento declarado com ela terá o foco.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-auto-focus', transform: convertToBoolean }) autoFocus: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define se o título do campo será exibido de forma compacta.\n   *\n   * Quando habilitado (`true`), o modo compacto afeta o conjunto composto por:\n   * - `po-label`\n   * - `p-requirement (showRequired)`\n   * - `po-helper`\n   *\n   * Ou seja, todos os elementos relacionados ao título do campo\n   * (rótulo, indicador de obrigatoriedade e componente auxiliar) passam\n   * a seguir o comportamento de layout compacto.\n   *\n   * Também é possível definir esse comportamento de forma global,\n   * uma única vez, na folha de estilo geral da aplicação, por meio\n   * da customização dos tokens CSS:\n   *\n   * - `--field-container-title-justify`\n   * - `--field-container-title-flex`\n   *\n   * Exemplo:\n   *\n   * ```\n   * :root {\n   *   --field-container-title-justify: flex-start;\n   *   --field-container-title-flex: 0 1 auto;\n   * }\n   * ```\n   *\n   * Dessa forma, o layout compacto passa a ser o padrão da aplicação,\n   * sem a necessidade de definir a propriedade individualmente em cada campo.\n   *\n   * @default `false`\n   */\n  compactLabel = input<boolean, unknown>(false, { alias: 'p-compact-label', transform: convertToBoolean });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Função executada para realizar a validação assíncrona personalizada.\n   * Executada ao disparar o output `change`.\n   *\n   * @param value Valor atual preenchido no campo.\n   *\n   * @returns Retorna Observable com o valor `true` para sinalizar o erro `false` para indicar que não há erro.\n   */\n  @Input('p-error-async') errorAsync: (value) => Observable<boolean>;\n\n  /* Nome do componente datepicker. */\n  @Input('name') name: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se a indicação de campo opcional será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - O campo conter `p-required`;\n   * - Não possuir `p-help` e/ou `p-label`.\n   *\n   * @default `false`\n   */\n  @Input('p-optional') optional: boolean;\n\n  /**\n   * Mensagem apresentada quando a data for inválida ou fora do período.\n   *\n   * > Por padrão, esta mensagem não é apresentada quando o campo estiver vazio, mesmo que ele seja requerido.\n   * Para exibir a mensagem com o campo vazio, utilize a propriedade `p-required-field-error-message` em conjunto.\n   */\n  @Input('p-error-pattern') errorPattern?: string = '';\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Limita a exibição da mensagem de erro a duas linhas e exibe um tooltip com o texto completo.\n   *\n   * > Caso essa propriedade seja definida como `true`, a mensagem de erro será limitada a duas linhas\n   * e um tooltip será exibido ao passar o mouse sobre a mensagem para mostrar o conteúdo completo.\n   *\n   * @default `false`\n   */\n  @Input('p-error-limit') errorLimit: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe a mensagem setada na propriedade `p-error-pattern` se o campo estiver vazio e for requerido.\n   *\n   * > Necessário que a propriedade `p-required` esteja habilitada.\n   *\n   * @default `false`\n   */\n  @Input('p-required-field-error-message') showErrorMessageRequired: boolean = false;\n\n  /**\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar no ícone de ajuda adicional.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Output('p-additional-help') additionalHelp: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao sair do campo.\n   */\n  @Output('p-blur') onblur: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao alterar valor do campo.\n   */\n  @Output('p-change') onchange: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado quando uma tecla é pressionada enquanto o foco está no componente.\n   * Retorna um objeto `KeyboardEvent` com informações sobre a tecla.\n   */\n  @Output('p-keydown') keydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as opções do componente de ajuda (po-helper) que será exibido ao lado do label quando a propriedade `p-label` for definida, ou, ao lado do componente na ausência da propriedade `p-label`.\n   * > Para mais informações acesse: https://po-ui.io/documentation/po-helper.\n   *\n   * > Ao configurar esta propriedade, o antigo ícone de ajuda adicional (`p-additional-help-tooltip` e `p-additional-help`) será ignorado.\n   */\n  poHelperComponent = input<PoHelperOptions | string>(undefined, { alias: 'p-helper' });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a quebra automática do texto da propriedade `p-label`. Quando `p-label-text-wrap` for verdadeiro, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * @default `false`\n   */\n  labelTextWrap = input<boolean>(false, { alias: 'p-label-text-wrap' });\n\n  offset: number;\n  protected firstStart = true;\n  protected hour: string = 'T00:00:00-00:00';\n  protected isExtendedISO: boolean = false;\n  protected objMask: any;\n  protected onChangeModel: any = null;\n  protected validatorChange: any;\n  protected onTouchedModel: any = null;\n  protected shortLanguage: string;\n  protected isInvalid: boolean;\n  protected hasValidatorRequired: boolean;\n\n  private _format?: string = poDatepickerFormatDefault;\n  private _isoFormat: PoDatepickerIsoFormat;\n  private _maxDate: Date;\n  private _minDate: Date;\n  private _noAutocomplete?: boolean = false;\n  private _placeholder?: string = '';\n  private _loading?: boolean = false;\n  private previousValue: any;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n  private subscription: Subscription = new Subscription();\n  private _date: Date;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a propriedade nativa `autocomplete` do campo como `off`.\n   *\n   * @default `false`\n   */\n  @Input('p-no-autocomplete') set noAutocomplete(value: boolean) {\n    this._noAutocomplete = convertToBoolean(value);\n  }\n\n  get noAutocomplete() {\n    return this._noAutocomplete;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Mensagem que aparecerá enquanto o campo não estiver preenchido.\n   */\n  @Input('p-placeholder') set placeholder(placeholder: string) {\n    this._placeholder = isTypeof(placeholder, 'string') ? placeholder : '';\n  }\n\n  get placeholder() {\n    return this._placeholder;\n  }\n\n  /** Desabilita o campo. */\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  disabled?: boolean = false;\n  @Input('p-disabled') set setDisabled(disabled: string) {\n    this.disabled = disabled === '' ? true : convertToBoolean(disabled);\n\n    this.validateModel(PoUtils.convertDateToISOExtended(this.date, this.hour));\n  }\n\n  /** Torna o elemento somente leitura. */\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  readonly?: boolean = false;\n  @Input('p-readonly') set setReadonly(readonly: string) {\n    this.readonly = readonly === '' ? true : convertToBoolean(readonly);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o campo será obrigatório.\n   *\n   * @default `false`\n   */\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  required?: boolean = false;\n  @Input('p-required') set setRequired(required: string) {\n    this.required = required === '' ? true : convertToBoolean(required);\n\n    this.validateModel(PoUtils.convertDateToISOExtended(this.date, this.hour));\n  }\n\n  /**\n   * Define se a indicação de campo obrigatório será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - Não possuir `p-help` e/ou `p-label`.\n   */\n  @Input('p-show-required') showRequired: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura do input como 32px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura do input como 44px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /** Habilita ação para limpar o campo. */\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  clean?: boolean = false;\n  @Input('p-clean') set setClean(clean: string) {\n    this.clean = clean === '' ? true : convertToBoolean(clean);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define uma data mínima para o `po-datepicker`.\n   */\n  @Input('p-min-date') set minDate(value: string | Date) {\n    if (value instanceof Date) {\n      const year = value.getFullYear();\n\n      const date = new Date(year, value.getMonth(), value.getDate(), 0, 0, 0);\n      PoUtils.setYearFrom0To100(date, year);\n\n      this._minDate = date;\n    } else {\n      this._minDate = convertIsoToDate(value, true, false);\n    }\n\n    this.validateModel(PoUtils.convertDateToISOExtended(this.date, this.hour));\n  }\n\n  get minDate() {\n    return this._minDate;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define uma data máxima para o `po-datepicker`.\n   */\n  @Input('p-max-date') set maxDate(value: string | Date) {\n    if (value instanceof Date) {\n      const year = value.getFullYear();\n\n      const date = new Date(year, value.getMonth(), value.getDate(), 23, 59, 59);\n      PoUtils.setYearFrom0To100(date, year);\n\n      this._maxDate = date;\n    } else {\n      this._maxDate = convertIsoToDate(value, false, true);\n    }\n\n    this.validateModel(PoUtils.convertDateToISOExtended(this.date, this.hour));\n  }\n\n  get maxDate() {\n    return this._maxDate;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Formato de exibição da data.\n   *\n   * Valores válidos:\n   *  - `dd/mm/yyyy`\n   *  - `mm/dd/yyyy`\n   *  - `yyyy/mm/dd`\n   *\n   * @default `dd/mm/yyyy`\n   */\n  @Input('p-format') set format(value: string) {\n    if (value) {\n      value = value.toLowerCase();\n      if (value.match(/dd/) && value.match(/mm/) && value.match(/yyyy/)) {\n        this._format = value;\n        this.objMask = this.buildMask(\n          replaceFormatSeparator(this.format, this.languageService.getDateSeparator(this.locale))\n        );\n        this.refreshValue(this.date);\n        return;\n      }\n    }\n    this._format = poDatepickerFormatDefault;\n    this.objMask = this.buildMask(\n      replaceFormatSeparator(this.format, this.languageService.getDateSeparator(this.locale))\n    );\n  }\n\n  get format() {\n    return this._format;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Padrão de formatação para saída do *model*, independentemente do formato de entrada.\n   *\n   * > Veja os valores válidos no *enum* `PoDatepickerIsoFormat`.\n   */\n  @Input('p-iso-format') set isoFormat(value: PoDatepickerIsoFormat) {\n    if (Object.values(PoDatepickerIsoFormat).includes(value)) {\n      this._isoFormat = value;\n      this.isExtendedISO = value === PoDatepickerIsoFormat.Extended;\n    }\n  }\n\n  get isoFormat() {\n    return this._isoFormat;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Idioma do Datepicker.\n   *\n   * > O locale padrão sera recuperado com base no [`PoI18nService`](/documentation/po-i18n) ou *browser*.\n   */\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  _locale?: string;\n  @Input('p-locale') set locale(value: string) {\n    if (value) {\n      this._locale = value.length >= 2 ? value : poLocaleDefault;\n      this.objMask = this.buildMask(\n        replaceFormatSeparator(this.format, this.languageService.getDateSeparator(this.locale))\n      );\n    } else {\n      this._locale = this.shortLanguage;\n      this.objMask = this.buildMask(\n        replaceFormatSeparator(this.format, this.languageService.getDateSeparator(this.locale))\n      );\n    }\n    this.refreshValue(this.date);\n  }\n  get locale() {\n    return this._locale || this.shortLanguage;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de carregamento no lado direito do campo para sinalizar que uma operação está em andamento.\n   *\n   * @default `false`\n   */\n  @Input('p-loading') set loading(value: boolean) {\n    this._loading = convertToBoolean(value);\n    this.cd?.markForCheck();\n  }\n\n  get loading(): boolean {\n    return this._loading;\n  }\n\n  get isDisabled(): boolean {\n    return this.disabled || this.loading;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o `calendar` e/ou tooltip (`p-additional-help-tooltip` e/ou `p-error-limit`) serão incluídos no body da\n   * página e não dentro do componente. Essa opção pode ser necessária em cenários com containers que possuem scroll ou\n   * overflow escondido, garantindo o posicionamento correto de ambos próximo ao elemento.\n   *\n   * > Quando utilizado com `p-helper`, leitores de tela como o NVDA podem não ler o conteúdo do popover.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendBox: boolean = false;\n\n  constructor(\n    protected languageService: PoLanguageService,\n    protected cd: ChangeDetectorRef\n  ) {}\n\n  set date(value: any) {\n    this._date = typeof value === 'string' ? convertIsoToDate(value, false, false) : value;\n  }\n\n  get date() {\n    return this._date;\n  }\n\n  ngOnInit() {\n    this.offset = new Date().getTimezoneOffset();\n    this.formatTimezoneAndHour(this.offset);\n    // Classe de máscara\n    this.objMask = this.buildMask(\n      replaceFormatSeparator(this.format, this.languageService.getDateSeparator(this.locale))\n    );\n  }\n\n  ngOnDestroy(): void {\n    this.subscription?.unsubscribe();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  // Converte um objeto string em Date\n  getDateFromString(dateString: string) {\n    const day = parseInt(dateString.substring(this.format.indexOf('d'), this.format.indexOf('d') + 2), 10);\n    const month = parseInt(dateString.substring(this.format.indexOf('m'), this.format.indexOf('m') + 2), 10) - 1;\n    const year = parseInt(dateString.substring(this.format.indexOf('y'), this.format.indexOf('y') + 4), 10);\n\n    const date = new Date(year, month, day);\n\n    PoUtils.setYearFrom0To100(date, year);\n\n    return date.getFullYear() === year && date.getMonth() === month && date.getDate() === day ? date : null;\n  }\n\n  // Formata a data.\n  formatToDate(value: Date) {\n    let dateFormatted = this.format;\n\n    dateFormatted = dateFormatted.replace('dd', ('0' + value.getDate()).slice(-2));\n    dateFormatted = dateFormatted.replace('mm', ('0' + (value.getMonth() + 1)).slice(-2));\n    dateFormatted = dateFormatted.replace('yyyy', PoUtils.formatYear(value.getFullYear()));\n\n    return dateFormatted;\n  }\n\n  // Método responsável por controlar o modelo.\n  controlModel(date: Date) {\n    this.date = date;\n    if (date && this.isExtendedISO) {\n      this.callOnChange(PoUtils.convertDateToISOExtended(this.date, this.hour));\n    } else if (date && !this.isExtendedISO) {\n      this.callOnChange(PoUtils.convertDateToISODate(this.date));\n    } else {\n      date === undefined ? this.callOnChange('') : this.callOnChange('Data inválida');\n    }\n  }\n\n  // Executa a função onChange\n  callOnChange(value: any, retry: boolean = true) {\n    if (this.onChangeModel && value !== this.previousValue) {\n      this.onChangeModel(value);\n      this.previousValue = value;\n    } else if (retry) {\n      setTimeout(() => this.callOnChange(value, false));\n    }\n  }\n\n  //Transforma o tamanho do input para o tamanho do ícone de loading correspondente\n  mapSizeToIcon(size: string): string {\n    return mapInputSizeToLoadingIcon(size);\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar os estados de habilitado via forms api\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n    this.cd.markForCheck();\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar as mudanças e não atualizar automaticamente o Model\n  registerOnChange(func: any): void {\n    this.onChangeModel = func;\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar as mudanças e não atualizar automaticamente o Model\n  registerOnTouched(func: any): void {\n    this.onTouchedModel = func;\n  }\n\n  registerOnValidatorChange(fn: () => void) {\n    this.validatorChange = fn;\n  }\n\n  validate(c: AbstractControl): { [key: string]: any } {\n    // Verifica se já possui algum error pattern padrão.\n    this.errorPattern =\n      this.errorPattern !== 'Data inválida' && this.errorPattern !== 'Data fora do período' ? this.errorPattern : '';\n\n    if (!this.hasValidatorRequired && this.showErrorMessageRequired && c.hasValidator(Validators.required)) {\n      this.hasValidatorRequired = true;\n    }\n\n    if (dateFailed(c.value)) {\n      this.errorPattern = this.errorPattern || 'Data inválida';\n\n      this.cd?.markForCheck();\n      return {\n        date: {\n          valid: false\n        }\n      };\n    }\n\n    if (PoValidators.requiredFailed(this.required, this.disabled, c.value)) {\n      this.cd?.markForCheck();\n      return {\n        required: {\n          valid: false\n        }\n      };\n    }\n\n    if (this.date && !PoUtils.validateDateRange(this.date, this._minDate, this._maxDate)) {\n      this.errorPattern = this.errorPattern || 'Data fora do período';\n\n      this.cd?.markForCheck();\n      return {\n        date: {\n          valid: false\n        }\n      };\n    }\n\n    if (this.errorPattern !== '') {\n      this.subscription?.unsubscribe();\n      this.subscription = c.statusChanges\n        .pipe(\n          switchMap(status => {\n            if (status === 'INVALID') {\n              this.cd?.markForCheck();\n            }\n            return [];\n          })\n        )\n        .subscribe();\n    }\n\n    return null;\n  }\n\n  protected validateModel(model: any) {\n    if (this.validatorChange) {\n      this.validatorChange(model);\n    }\n  }\n\n  // Retorna um objeto do tipo PoMask com a mascara configurada.\n  protected buildMask(format: string = this.format) {\n    let mask = format.toUpperCase();\n\n    mask = mask.replace(/DD/g, '99');\n    mask = mask.replace(/MM/g, '99');\n    mask = mask.replace(/YYYY/g, '9999');\n\n    return new PoMask(mask, true);\n  }\n\n  formatTimezoneAndHour(offset: number) {\n    const offsetAbsolute = Math.abs(offset);\n    const timezone =\n      (offset < 0 ? '+' : '-') +\n      ('00' + Math.floor(offsetAbsolute / 60)).slice(-2) +\n      ':' +\n      ('00' + (offsetAbsolute % 60)).slice(-2);\n    this.hour = 'T00:00:00' + timezone;\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n\n  abstract writeValue(value: any): void;\n\n  abstract refreshValue(value: Date): void;\n}\n","export const PoDatepickerLiterals = {\n  en: {\n    open: 'Open calendar',\n    clean: 'Clear field'\n  },\n  es: {\n    open: 'Calendario abierto',\n    clean: 'Limpiar campo'\n  },\n  pt: {\n    open: 'Abrir calendário',\n    clean: 'Limpar campo'\n  },\n  ru: {\n    open: 'открытый календарь',\n    clean: 'Очистить поле'\n  }\n};\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  forwardRef,\n  HostListener,\n  Input,\n  OnDestroy,\n  Renderer2,\n  ViewChild,\n  inject,\n  OnChanges,\n  SimpleChanges\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { isMobile, setHelperSettings, uuid, PoUtils } from '../../../utils/util';\nimport { PoControlPositionService } from './../../../services/po-control-position/po-control-position.service';\n\nimport { isObservable, of, Subscription, switchMap } from 'rxjs';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport { PoButtonComponent } from '../../po-button/po-button.component';\nimport { PoCalendarComponent } from '../../po-calendar/po-calendar.component';\nimport { PoDatepickerBaseComponent } from './po-datepicker-base.component';\nimport { PoDatepickerLiterals } from './po-datepicker.literals';\nimport { PoHelperComponent } from '../../po-helper';\n\nconst poCalendarContentOffset = 8;\nconst poCalendarPositionDefault = 'bottom-left';\n\n/**\n * @docsExtends PoDatepickerBaseComponent\n *\n * @example\n *\n * <example name=\"po-datepicker-basic\" title=\"PO Datepicker Basic\">\n *  <file name=\"sample-po-datepicker-basic/sample-po-datepicker-basic.component.html\"> </file>\n *  <file name=\"sample-po-datepicker-basic/sample-po-datepicker-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-datepicker-labs\" title=\"PO Datepicker Labs\">\n *  <file name=\"sample-po-datepicker-labs/sample-po-datepicker-labs.component.html\"> </file>\n *  <file name=\"sample-po-datepicker-labs/sample-po-datepicker-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-datepicker-airfare\" title=\"PO Datepicker - Airfare\">\n *  <file name=\"sample-po-datepicker-airfare/sample-po-datepicker-airfare.component.html\"> </file>\n *  <file name=\"sample-po-datepicker-airfare/sample-po-datepicker-airfare.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-datepicker-airfare-reactive-form\" title=\"PO Datepicker - Airfare Reactive Form\">\n *  <file name=\"sample-po-datepicker-airfare-reactive-form/sample-po-datepicker-airfare-reactive-form.component.html\"> </file>\n *  <file name=\"sample-po-datepicker-airfare-reactive-form/sample-po-datepicker-airfare-reactive-form.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-datepicker',\n  templateUrl: './po-datepicker.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoDatepickerComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => PoDatepickerComponent),\n      multi: true\n    },\n    PoControlPositionService\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoDatepickerComponent extends PoDatepickerBaseComponent implements AfterViewInit, OnDestroy, OnChanges {\n  private readonly controlPosition = inject(PoControlPositionService);\n  private readonly renderer = inject(Renderer2);\n\n  @ViewChild('calendar', { static: true }) calendar: PoCalendarComponent;\n  @ViewChild('dialogPicker', { read: ElementRef, static: false }) dialogPicker: ElementRef;\n  @ViewChild('iconDatepicker') iconDatepicker: PoButtonComponent;\n  @ViewChild('inp', { read: ElementRef, static: true }) inputEl: ElementRef;\n  @ViewChild('iconClean', { read: ElementRef })\n  iconClean!: ElementRef<HTMLElement>;\n  @ViewChild('helperEl', { read: PoHelperComponent, static: false }) helperEl?: PoHelperComponent;\n\n  /** Rótulo do campo. */\n  @Input('p-label') label?: string;\n\n  /** Texto de apoio do campo. */\n  @Input('p-help') help?: string;\n\n  displayAdditionalHelp: boolean = false;\n  el: ElementRef;\n  declare hour: string;\n  id = `po-datepicker[${uuid()}]`;\n  visible: boolean = false;\n  literals: any;\n\n  eventListenerFunction: () => void;\n  eventResizeListener: () => void;\n\n  private clickListener;\n  private readonly dateRegex = new RegExp(\n    '^(?:[0-9])\\\\d{1}(?:[0-9])\\\\d{1}-' + '(?:0[1-9]|1[0-2])-' + '(?:0[1-9]|[12]\\\\d|3[01])$'\n  );\n  private readonly isoRegex = new RegExp(\n    '^(?:[0-9])\\\\d{1}(?:[0-9])\\\\d{1}-' +\n      '(?:0[1-9]|1[0-2])-' +\n      '(?:0[1-9]|[12]\\\\d|3[01])' +\n      'T(?:[01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d(?:Z|-0[1-9]|-1\\\\d|-2[0-3]|' +\n      '-00:?(?:0[1-9]|[0-5]\\\\d)|\\\\+[01]\\\\d|\\\\+2[0-3])' +\n      '(?:|:?[0-5]\\\\d)$'\n  );\n  private timeoutChange: any;\n  private valueBeforeChange: string;\n  private subscriptionValidator: Subscription = new Subscription();\n\n  get autocomplete() {\n    return this.noAutocomplete ? 'off' : 'on';\n  }\n\n  get dateInputValue(): string {\n    return this.inputEl.nativeElement.value;\n  }\n\n  constructor() {\n    const languageService = inject(PoLanguageService);\n    const cd = inject(ChangeDetectorRef);\n    const el = inject(ElementRef);\n\n    super(languageService, cd);\n    this.languageService = languageService;\n    this.cd = cd;\n\n    this.shortLanguage = this.languageService.getShortLanguage();\n    this.el = el;\n    const language = languageService.getShortLanguage();\n    this.literals = {\n      ...PoDatepickerLiterals[language]\n    };\n  }\n\n  @HostListener('keyup', ['$event'])\n  onKeyup($event: any) {\n    if (this.readonly || $event?.target !== this.inputEl?.nativeElement) {\n      return;\n    }\n\n    this.objMask?.keyup($event);\n    // Controla a atualização do model, verificando se a data é valida\n    if (this.objMask?.valueToModel || this.objMask?.valueToModel === '') {\n      if (this.objMask?.valueToModel.length >= 10) {\n        this.controlModel(this.getDateFromString(this.inputEl.nativeElement.value));\n        this.date = this.getDateFromString(this.inputEl.nativeElement.value);\n      } else {\n        this.date = undefined;\n        this.controlModel(this.date);\n      }\n    } else {\n      this.date = undefined;\n    }\n  }\n\n  @HostListener('keydown', ['$event'])\n  onKeydown($event?: any) {\n    if (this.readonly) {\n      return;\n    }\n\n    if ($event.key === 'Escape' && this.visible) {\n      this.togglePicker(false);\n\n      $event.preventDefault();\n      $event.stopPropagation();\n    }\n\n    if ($event.key === 'Tab' && $event.shiftKey && $event.target instanceof HTMLInputElement && this.visible) {\n      this.togglePicker();\n    }\n\n    if ($event?.target === this.inputEl?.nativeElement) {\n      this.objMask?.keydown($event);\n    }\n  }\n\n  ngAfterViewInit() {\n    this.setDialogPickerStyleDisplay('none');\n    if (this.autoFocus) {\n      this.focus();\n    }\n    if (this.iconDatepicker?.buttonElement?.nativeElement) {\n      this.renderer.setAttribute(this.iconDatepicker.buttonElement.nativeElement, 'aria-label', this.literals.open);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscriptionValidator?.unsubscribe();\n    this.removeListeners();\n  }\n\n  emitAdditionalHelp() {\n    if (this.label && this.isAdditionalHelpEventTriggered()) {\n      this.additionalHelp.emit();\n    }\n  }\n\n  /**\n   * Função que atribui foco ao componente.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoDatepickerComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoDatepickerComponent, { static: true }) datepicker: PoDatepickerComponent;\n   *\n   * focusDatepicker() {\n   *   this.datepicker.focus();\n   * }\n   * ```\n   */\n  focus(): void {\n    if (!this.disabled && this.inputEl?.nativeElement) {\n      this.inputEl.nativeElement.focus();\n    }\n  }\n\n  getAdditionalHelpTooltip() {\n    return this.isAdditionalHelpEventTriggered() ? null : this.additionalHelpTooltip;\n  }\n\n  togglePicker(focusInput = true) {\n    if (this.disabled || this.readonly || !this.iconDatepicker?.buttonElement?.nativeElement) {\n      return;\n    }\n\n    if (!this.visible) {\n      this.visible = true;\n      this.setCalendarPosition();\n      this.initializeListeners();\n\n      this.renderer.setAttribute(this.inputEl.nativeElement, 'aria-expanded', 'true');\n      this.renderer.setAttribute(this.iconDatepicker.buttonElement.nativeElement, 'aria-expanded', 'true');\n    } else {\n      this.inputEl.nativeElement.disabled = false;\n      this.closeCalendar(focusInput);\n\n      this.renderer.removeAttribute(this.inputEl.nativeElement, 'aria-expanded');\n      this.renderer.removeAttribute(this.iconDatepicker.buttonElement.nativeElement, 'aria-expanded');\n    }\n  }\n\n  closeCalendar(focusInput = true) {\n    this.visible = false;\n    this.removeListeners();\n    this.setDialogPickerStyleDisplay('none');\n\n    if (!this.verifyMobile() && focusInput) {\n      this.focus();\n    }\n\n    if (!focusInput && this.clean && this.inputEl.nativeElement.value) {\n      setTimeout(() => {\n        this.iconDatepicker.focus();\n      });\n    }\n  }\n\n  dateSelected(event?: string) {\n    if (event === '') {\n      this.clear();\n      setTimeout(() => this.closeCalendar(), 200);\n      this.onchange.emit(undefined);\n      return;\n    }\n\n    this.onTouchedModel?.();\n    if (!this.verifyMobile()) {\n      this.focus();\n    }\n\n    this.inputEl.nativeElement.value = this.formatToDate(this.date) || '';\n    this.controlModel(this.date);\n    this.controlChangeEmitter();\n    this.togglePicker();\n  }\n\n  // Esconde Picker quando for clicado fora\n  wasClickedOnPicker(event: any): void {\n    if (!this.dialogPicker || !this.iconDatepicker) {\n      return;\n    }\n    if (\n      (!this.dialogPicker.nativeElement.contains(event.target) || this.hasOverlayClass(event.target)) &&\n      !this.iconDatepicker.buttonElement.nativeElement.contains(event.target) &&\n      !this.hasAttrCalendar(event.target)\n    ) {\n      this.closeCalendar();\n    }\n  }\n\n  hasInvalidClass() {\n    return (\n      this.el.nativeElement.classList.contains('ng-invalid') &&\n      this.el.nativeElement.classList.contains('ng-dirty') &&\n      (this.inputEl.nativeElement.value !== '' ||\n        (this.showErrorMessageRequired && (this.required || this.hasValidatorRequired)))\n    );\n  }\n\n  getErrorPattern() {\n    return this.errorPattern !== '' && this.hasInvalidClass() ? this.errorPattern : '';\n  }\n\n  clear() {\n    this.valueBeforeChange = this.formatToDate(this.date);\n    this.date = undefined;\n    this.inputEl.nativeElement.value = '';\n\n    this.controlModel(this.date);\n\n    this.controlChangeEmitter();\n  }\n\n  clearAndFocus() {\n    this.clear();\n\n    setTimeout(() => {\n      this.focus();\n    }, 200);\n  }\n\n  eventOnBlur($event: any) {\n    this.onTouchedModel?.();\n\n    const date = this.inputEl.nativeElement.value;\n    const newDate = date ? this.getDateFromString(date) : undefined;\n    this.objMask?.blur($event);\n    this.onblur.emit();\n\n    if (this.objMask?.valueToModel) {\n      if (this.objMask.valueToModel.length >= 10) {\n        this.controlModel(newDate);\n        this.date = newDate;\n      } else {\n        this.date = null;\n        this.controlModel(this.date);\n      }\n    } else {\n      this.date = undefined;\n      this.callOnChange(this.date);\n    }\n\n    this.controlChangeEmitter();\n  }\n\n  eventOnClick($event) {\n    if (this.verifyMobile()) {\n      $event.target.blur();\n\n      // abre o calendar quando clicar no input somente no mobile\n      setTimeout(() => this.togglePicker(), 0);\n    } else {\n      // Atualiza a posição do cursor ao clicar\n      this.objMask?.click($event);\n    }\n  }\n\n  onKeyDown(event: KeyboardEvent): void {\n    const isFieldFocused = document.activeElement === this.inputEl.nativeElement;\n\n    if (isFieldFocused) {\n      this.keydown.emit(event);\n    }\n  }\n\n  onKeyPress(event: any) {\n    if (event.key === 'Tab' && event.shiftKey && !this.visible && this.clean && this.inputEl.nativeElement.value) {\n      this.iconClean.nativeElement?.focus();\n      event.preventDefault();\n      return;\n    }\n\n    if (event.key === 'Tab' && event.shiftKey && !this.visible) {\n      this.focus();\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n  formatToDate(value: Date) {\n    if (!value) {\n      return undefined;\n    }\n\n    let dateFormatted = PoUtils.replaceFormatSeparator(this.format, this.languageService.getDateSeparator(this.locale));\n\n    dateFormatted = dateFormatted.replace('dd', ('0' + value.getDate()).slice(-2));\n    dateFormatted = dateFormatted.replace('mm', ('0' + (value.getMonth() + 1)).slice(-2));\n    dateFormatted = dateFormatted.replace('yyyy', PoUtils.formatYear(value.getFullYear()));\n\n    return dateFormatted;\n  }\n\n  refreshValue(value: Date) {\n    if (value) {\n      this.inputEl.nativeElement.value = this.formatToDate(value);\n    }\n  }\n\n  /**\n   * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n   * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `p-keydown`.\n   *\n   * > Exibe ou oculta o conteúdo do componente `po-helper` quando o componente estiver com foco.\n   *\n   * ```\n   * // Exemplo com p-label e p-helper\n   * <po-datepicker\n   *  #datepicker\n   *  ...\n   *  p-label=\"Label do datepicker\"\n   *  [p-helper]=\"helperOptions\"\n   *  (p-keydown)=\"onKeyDown($event, datepicker)\"\n   * ></po-datepicker>\n   * ```\n   * ```\n   * ...\n   * onKeyDown(event: KeyboardEvent, inp: PoDatepickerComponent): void {\n   *  if (event.code === 'F9') {\n   *    inp.showAdditionalHelp();\n   *  }\n   * }\n   * ```\n   */\n  showAdditionalHelp(): boolean {\n    this.displayAdditionalHelp = !this.displayAdditionalHelp;\n    const helper = this.poHelperComponent();\n    const isHelpEvt = this.isAdditionalHelpEventTriggered();\n    if (!this.label && (helper || this.additionalHelpTooltip || isHelpEvt)) {\n      if (isHelpEvt) {\n        this.additionalHelp.emit();\n      }\n      if (typeof helper !== 'string' && typeof helper?.eventOnClick === 'function') {\n        helper.eventOnClick();\n        return;\n      }\n      if (this.helperEl?.helperIsVisible()) {\n        this.helperEl?.closeHelperPopover();\n        return;\n      }\n      this.helperEl?.openHelperPopover();\n      return;\n    }\n    return this.displayAdditionalHelp;\n  }\n\n  // Função implementada do ControlValueAccessor\n  writeValue(value: any) {\n    if (this.inputEl && value) {\n      if (value instanceof Date) {\n        const dateString = value.toString();\n        this.hour =\n          'T' + dateString.substring(16, 24) + dateString.substring(28, 31) + ':' + dateString.substring(31, 33);\n        this.date = value;\n        this.inputEl.nativeElement.value = this.formatToDate(value);\n      } else if (this.isValidDateIso(value) || this.isValidExtendedIso(value)) {\n        if (this.isValidExtendedIso(value)) {\n          this.hour = value.substring(10, 25);\n        }\n\n        if (this.isoFormat === undefined) {\n          this.isExtendedISO = this.isValidExtendedIso(value);\n        }\n\n        const day = parseInt(value.substring(8, 10), 10);\n        const month = parseInt(value.substring(5, 7), 10) - 1;\n        const year = parseInt(value.substring(0, 4), 10);\n\n        const dateTemp = new Date(year, month, day);\n\n        PoUtils.setYearFrom0To100(dateTemp, year);\n\n        this.date = dateTemp;\n        this.inputEl.nativeElement.value = this.formatToDate(dateTemp);\n      } else {\n        this.inputEl.nativeElement.value = '';\n        this.date = undefined;\n      }\n\n      this.controlModel(this.date);\n      const dateModelFormatted = this.formatToDate(this.date);\n      this.verifyErrorAsync(dateModelFormatted);\n    } else if (this.inputEl) {\n      this.inputEl.nativeElement.value = '';\n      this.date = undefined;\n      this.callOnChange(this.date, false);\n    }\n\n    this.valueBeforeChange = this.formatToDate(this.date);\n  }\n\n  isValidDateIso(value: string) {\n    return this.dateRegex.test(value);\n  }\n\n  isValidExtendedIso(value) {\n    return this.isoRegex.test(value);\n  }\n\n  hasOverlayClass(element: any) {\n    return element.classList.contains('po-datepicker-calendar-overlay');\n  }\n\n  verifyErrorAsync(value) {\n    if (this.errorPattern !== '' && this.errorAsync) {\n      const errorAsync = this.errorAsync(value);\n      if (isObservable(errorAsync)) {\n        this.subscriptionValidator?.unsubscribe();\n        this.subscriptionValidator = errorAsync\n          .pipe(\n            switchMap(error => {\n              const element = this.el.nativeElement;\n              if (error) {\n                element.classList.add('ng-invalid');\n                element.classList.add('ng-dirty');\n                this.cd.detectChanges();\n              } else if (\n                element.classList.contains('ng-invalid') &&\n                element.classList.contains('ng-dirty') &&\n                !this.isInvalid\n              ) {\n                element.classList.remove('ng-invalid');\n                this.cd.detectChanges();\n              }\n              return of('');\n            })\n          )\n          .subscribe();\n      }\n    }\n  }\n\n  /* istanbul ignore next */\n  verifyMobile() {\n    return isMobile();\n  }\n\n  private controlChangeEmitter() {\n    const dateModelFormatted = this.formatToDate(this.date);\n\n    if (dateModelFormatted !== this.valueBeforeChange) {\n      this.valueBeforeChange = dateModelFormatted;\n\n      clearTimeout(this.timeoutChange);\n      this.timeoutChange = setTimeout(() => {\n        this.onchange.emit(dateModelFormatted);\n        this.verifyErrorAsync(dateModelFormatted);\n      }, 200);\n    }\n  }\n\n  private hasAttrCalendar(element: any) {\n    const attrCalendar = 'attr-calendar';\n\n    return (\n      (element && element.hasAttribute(attrCalendar)) ||\n      (element.parentElement && element.parentElement.hasAttribute(attrCalendar))\n    );\n  }\n\n  private initializeListeners() {\n    this.clickListener = this.renderer.listen('document', 'click', (event: MouseEvent) => {\n      this.wasClickedOnPicker(event);\n    });\n\n    this.eventResizeListener = this.renderer.listen('window', 'resize', () => {\n      this.closeCalendar();\n    });\n\n    window.addEventListener('scroll', this.onScroll, true);\n  }\n\n  private isAdditionalHelpEventTriggered(): boolean {\n    return (\n      this.additionalHelpEventTrigger === 'event' ||\n      (this.additionalHelpEventTrigger === undefined && this.additionalHelp.observed)\n    );\n  }\n\n  private isFocusOnFirstCombo(): boolean {\n    const first = this.dialogPicker.nativeElement.querySelector('.po-combo-first .po-combo-input');\n    return first === document.activeElement;\n  }\n\n  private isFocusOnLastCombo(): boolean {\n    const last = this.dialogPicker.nativeElement.querySelector('.po-combo-last .po-combo-input');\n    return last === document.activeElement;\n  }\n\n  private readonly onScroll = (): void => {\n    this.controlPosition.adjustPosition(poCalendarPositionDefault);\n  };\n\n  private removeListeners() {\n    if (this.clickListener) {\n      this.clickListener();\n    }\n\n    if (this.eventResizeListener) {\n      this.eventResizeListener();\n    }\n\n    window.removeEventListener('scroll', this.onScroll, true);\n  }\n\n  private setDialogPickerStyleDisplay(value: string): void {\n    if (this.dialogPicker && this.dialogPicker.nativeElement) {\n      this.dialogPicker.nativeElement.style.display = value;\n    }\n  }\n\n  private setCalendarPosition(): void {\n    this.setDialogPickerStyleDisplay('block');\n    this.adjustCalendarPosition();\n  }\n\n  protected adjustCalendarPosition(): void {\n    if (this?.dialogPicker.nativeElement && this.visible) {\n      requestAnimationFrame(() => {\n        const scrollHeight =\n          this.dialogPicker.nativeElement.querySelector('.po-calendar')?.scrollHeight ??\n          this.dialogPicker.nativeElement.scrollHeight;\n        const scrollWidth =\n          this.dialogPicker.nativeElement.querySelector('.po-calendar')?.scrollWidth ??\n          this.dialogPicker.nativeElement.scrollWidth;\n\n        this.dialogPicker.nativeElement.style.height = scrollHeight + 'px';\n        this.dialogPicker.nativeElement.style.width = scrollWidth + 'px';\n        this.dialogPicker.nativeElement.style.setProperty('--po-calendar-width', scrollWidth + 'px');\n\n        this.controlPosition.setElements(\n          this.dialogPicker.nativeElement,\n          poCalendarContentOffset,\n          this.inputEl,\n          ['top-left', 'top-right', 'bottom-left', 'bottom-right'],\n          false,\n          true\n        );\n        this.controlPosition.adjustPosition(poCalendarPositionDefault);\n      });\n    }\n  }\n\n  handleCleanKeyboardTab(event: KeyboardEvent) {\n    if (this.shouldHandleTab(event)) {\n      this.focusCalendar(event);\n    }\n  }\n\n  // Determina se o tab deve abrir o listbox.\n  private shouldHandleTab(event: KeyboardEvent): boolean {\n    return this.visible && !event.shiftKey;\n  }\n\n  private focusCalendar(event: KeyboardEvent): void {\n    if (!this.dialogPicker?.nativeElement) {\n      return;\n    }\n\n    const firstCombo = this.dialogPicker.nativeElement.querySelector('.po-combo-first .po-combo-input');\n    if (firstCombo) {\n      event.preventDefault();\n      firstCombo.focus();\n    } else {\n      this.togglePicker(false);\n    }\n  }\n\n  onCalendarKeyDown(event: KeyboardEvent): void {\n    if (!this.visible) return;\n\n    if (event.key === 'Escape' || (event.key === 'Tab' && event.shiftKey && this.isFocusOnFirstCombo())) {\n      event.preventDefault();\n      event.stopPropagation();\n\n      this.iconDatepicker.buttonElement?.nativeElement.focus();\n      this.closeCalendar(false);\n    }\n\n    if (event.key === 'Tab' && event.shiftKey && this.isFocusOnLastCombo()) {\n      const firstCombo = this.dialogPicker.nativeElement.querySelector('.po-combo-first .po-combo-input');\n      firstCombo.focus();\n\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n  setHelper(label?: string, additionalHelpTooltip?: string) {\n    return setHelperSettings(\n      label,\n      additionalHelpTooltip,\n      this.poHelperComponent(),\n      this.size,\n      this.isAdditionalHelpEventTriggered() ? this.additionalHelp : undefined\n    );\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n<po-field-container\n  [class.po-date-picker-container-disabled]=\"isDisabled\"\n  [p-disabled]=\"isDisabled\"\n  [p-id]=\"id\"\n  [p-label]=\"label\"\n  [p-optional]=\"optional\"\n  [p-required]=\"required\"\n  [p-show-required]=\"showRequired\"\n  [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n  [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n  [p-size]=\"size\"\n  [p-text-wrap]=\"labelTextWrap()\"\n  [p-compact-label]=\"compactLabel()\"\n>\n  <div #outerContainer>\n    <div\n      cdkOverlayOrigin\n      #trigger=\"cdkOverlayOrigin\"\n      class=\"po-field-container-content po-field-container-content-datepicker\"\n    >\n      <div class=\"po-field-container-input\">\n        <input\n          #inp\n          type=\"text\"\n          class=\"po-input po-datepicker\"\n          [class.po-input-icon-right]=\"clean && inp.value && !isDisabled\"\n          [class.po-datepicker-field-disabled]=\"isDisabled\"\n          [attr.data-focused-element]=\"!isDisabled\"\n          [attr.data-inactive-component]=\"isDisabled || readonly\"\n          [attr.name]=\"name\"\n          [attr.p-size]=\"size\"\n          [autocomplete]=\"autocomplete\"\n          [disabled]=\"isDisabled\"\n          [id]=\"id\"\n          [placeholder]=\"isDisabled ? '' : placeholder\"\n          [readonly]=\"readonly\"\n          [required]=\"required\"\n          [attr.data-append-in-body]=\"appendBox\"\n          (blur)=\"eventOnBlur($event)\"\n          (click)=\"eventOnClick($event)\"\n          (keydown)=\"onKeyDown($event)\"\n          (keydown.tab)=\"handleCleanKeyboardTab($event)\"\n        />\n        @if (loading) {\n          <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n        } @else {\n          <div class=\"po-field-icon-container-right\">\n            @if (clean && dateInputValue && !isDisabled && !readonly) {\n              <po-clean\n                #iconClean\n                tabindex=\"0\"\n                role=\"button\"\n                [attr.aria-label]=\"literals.clean\"\n                class=\"po-icon-input\"\n                p-icon=\"ICON_FILL_CLEAR_CONTENT\"\n                [p-element-ref]=\"inputEl\"\n                [p-size]=\"size\"\n                (p-change-event)=\"clear()\"\n                (keydown)=\"handleCleanKeyboardTab($event)\"\n                (keydown.enter)=\"clearAndFocus(); $event.preventDefault()\"\n                (keydown.space)=\"clearAndFocus(); $event.preventDefault()\"\n              >\n              </po-clean>\n              <div class=\"po-button-vertical-divider\"></div>\n            }\n            <po-button\n              #iconDatepicker\n              class=\"po-datepicker-button\"\n              [class.po-button-tertiary-danger]=\"getErrorPattern()\"\n              p-icon=\"ICON_CALENDAR_DOTS\"\n              p-kind=\"tertiary\"\n              [p-disabled]=\"isDisabled || readonly\"\n              [p-size]=\"size\"\n              (keydown)=\"onKeyPress($event)\"\n              (keydown.tab)=\"handleCleanKeyboardTab($event)\"\n              (p-click)=\"togglePicker(false)\"\n            >\n            </po-button>\n          </div>\n        }\n      </div>\n      @if ((!this.label && poHelperComponent()) || (!this.label && poHelper.hideAdditionalHelp)) {\n        <po-helper\n          #helperEl\n          class=\"po-field-helper-button\"\n          [p-size]=\"size\"\n          [p-helper]=\"poHelper.helperSettings\"\n          [p-disabled]=\"isDisabled\"\n          [p-append-in-body]=\"appendBox\"\n        >\n        </po-helper>\n      }\n    </div>\n\n    @if (appendBox) {\n      <ng-template\n        cdkConnectedOverlay\n        [cdkConnectedOverlayOrigin]=\"trigger\"\n        [cdkConnectedOverlayOpen]=\"true\"\n        [cdkConnectedOverlayDisableClose]=\"true\"\n      >\n        <ng-container *ngTemplateOutlet=\"sharedCalendarContent\"></ng-container>\n      </ng-template>\n    } @else {\n      <ng-container *ngTemplateOutlet=\"sharedCalendarContent\"></ng-container>\n    }\n\n    <ng-template #sharedCalendarContent>\n      <div #dialogPicker [class.po-datepicker-popup-calendar]=\"!verifyMobile()\" tabindex=\"-1\" [hidden]=\"!visible\">\n        @if (verifyMobile()) {\n          <div class=\"po-datepicker-calendar-overlay\"></div>\n        }\n        <po-calendar\n          #calendar\n          [class.po-datepicker-calendar-mobile]=\"verifyMobile()\"\n          [(ngModel)]=\"date\"\n          [p-max-date]=\"maxDate\"\n          [p-min-date]=\"minDate\"\n          [p-locale]=\"locale\"\n          [p-size]=\"size\"\n          (p-change)=\"dateSelected($event)\"\n          (p-change-month-year)=\"adjustCalendarPosition()\"\n          (keydown)=\"onCalendarKeyDown($event)\"\n          (p-close)=\"closeCalendar(false)\"\n        ></po-calendar>\n      </div>\n    </ng-template>\n  </div>\n\n  @if (!readonly) {\n    <po-field-container-bottom\n      [p-append-in-body]=\"appendBox\"\n      [p-help]=\"help\"\n      [p-disabled]=\"isDisabled\"\n      [p-error-pattern]=\"getErrorPattern()\"\n      [p-error-limit]=\"errorLimit\"\n      [p-size]=\"size\"\n    ></po-field-container-bottom>\n  }\n</po-field-container>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\n\nimport { PoCalendarModule } from '../../po-calendar/po-calendar.module';\nimport { PoFieldContainerModule } from '../po-field-container/po-field-container.module';\nimport { PoCleanModule } from '../po-clean/po-clean.module';\nimport { PoButtonModule } from '../../po-button';\n\nimport { PoDatepickerComponent } from './po-datepicker.component';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PoHelperModule } from '../../po-helper';\nimport { PoLoadingModule } from '../../po-loading';\n\n/**\n * @description\n *\n * Módulo do componente `po-datepicker`.\n */\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    PoFieldContainerModule,\n    OverlayModule,\n    PoCleanModule,\n    PoLoadingModule,\n    PoCalendarModule,\n    PoButtonModule,\n    PoHelperModule\n  ],\n  exports: [PoDatepickerComponent],\n  declarations: [PoDatepickerComponent]\n})\nexport class PoDatepickerModule {}\n","/**\n * @usedBy PoTimepickerComponent\n *\n * @description\n *\n * *Enum* que define o padrão de formatação do model de saída do timepicker.\n */\nexport enum PoTimepickerModelFormat {\n  /** Formato básico `HH:mm` (ex: `14:30`). */\n  HourMinute = 'HH:mm',\n\n  /** Formato com segundos `HH:mm:ss` (ex: `14:30:00`). */\n  HourMinuteSecond = 'HH:mm:ss'\n}\n","/**\n * @usedBy PoTimerComponent\n *\n * @description\n *\n * Enum para definição do formato de exibição do timer.\n */\nexport enum PoTimerFormat {\n  /** Formato de 24 horas (0-23). */\n  Format24 = '24',\n\n  /** Formato de 12 horas (1-12) com indicador AM/PM. */\n  Format12 = '12'\n}\n","export const poTimepickerLiterals = {\n  en: {\n    field: 'Time selection',\n    open: 'Open time picker',\n    clean: 'Clear field',\n    invalidTime: 'Invalid time',\n    outOfRangeTime: 'Time out of range',\n    hour: 'Hour',\n    minute: 'Minute',\n    second: 'Second',\n    selectedTime: 'Selected time'\n  },\n  es: {\n    field: 'Selección de hora',\n    open: 'Abrir selector de hora',\n    clean: 'Limpiar campo',\n    invalidTime: 'Hora no válida',\n    outOfRangeTime: 'Hora fuera del período',\n    hour: 'Hora',\n    minute: 'Minuto',\n    second: 'Segundo',\n    selectedTime: 'Hora seleccionada'\n  },\n  pt: {\n    field: 'Seleção de horário',\n    open: 'Abrir seletor de hora',\n    clean: 'Limpar campo',\n    invalidTime: 'Hora inválida',\n    outOfRangeTime: 'Hora fora do período',\n    hour: 'Hora',\n    minute: 'Minuto',\n    second: 'Segundo',\n    selectedTime: 'Horário selecionado'\n  },\n  ru: {\n    field: 'Выбор времени',\n    open: 'Открыть выбор времени',\n    clean: 'Очистить поле',\n    invalidTime: 'Недопустимое время',\n    outOfRangeTime: 'Время вне допустимого диапазона',\n    hour: 'Час',\n    minute: 'Минута',\n    second: 'Секунда',\n    selectedTime: 'Выбранное время'\n  }\n};\n","import {\n  ChangeDetectorRef,\n  Directive,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  input,\n  Input,\n  OnInit,\n  Output\n} from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, Validator, Validators } from '@angular/forms';\n\nimport {\n  convertToBoolean,\n  getDefaultSizeFn,\n  isTypeof,\n  validateSizeFn,\n  mapInputSizeToLoadingIcon\n} from '../../../utils/util';\nimport { PoMask } from '../po-input/po-mask';\nimport { PoValidators } from './../validators';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport { PoTimepickerModelFormat } from './enums/po-timepicker-iso-format.enum';\nimport { PoTimerFormat } from '../../po-timer/enums/po-timer-format.enum';\nimport { PoHelperOptions } from '../../po-helper';\nimport { poTimepickerLiterals } from './po-timepicker.literals';\nimport { poLocaleDefault } from '../../../services/po-language/po-language.constant';\n\n/**\n * @description\n *\n * O `po-timepicker` é um componente para seleção de horário que permite a digitação e/ou seleção via painel flutuante.\n *\n * O formato de exibição do horário pode ser de 24 horas (`HH:mm`) ou 12 horas (`hh:mm AM/PM`),\n * e opcionalmente incluir segundos (`HH:mm:ss`).\n *\n * O valor de saída segue o formato ISO 8601 para horários (`HH:mm` ou `HH:mm:ss`).\n *\n * **Importante:**\n *\n * - Caso o valor digitado seja inválido, o `model` receberá uma string vazia.\n * - Caso o `input` esteja passando um `[(ngModel)]`, mas não tenha um `name`, então irá ocorrer um erro\n * do próprio Angular (`[ngModelOptions]=\"{standalone: true}\"`).\n *\n * > Não esqueça de importar o `FormsModule` em seu módulo, tal como para utilizar o `input default`.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n * Obs: Só é possível realizar alterações ao adicionar a classe `.po-input`\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                     |\n * |----------------------------------------|-------------------------------------------------------|--------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                  |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                       |\n * | `--font-size`                          | Tamanho da fonte                                      | `var(--font-size-default)`                       |\n * | `--text-color-placeholder`             | Cor do texto placeholder                              | `var(--color-neutral-light-30)`                  |\n * | `--color`                              | Cor principal do timepicker                           | `var(--color-neutral-dark-70)`                   |\n * | `--background`                         | Cor de background                                     | `var(--color-neutral-light-05)`                  |\n * | `--padding`                            | Preenchimento                                         | `0 0.5rem`                                       |\n * | `--text-color`                         | Cor do texto                                          | `var(--color-neutral-dark-90)`                   |\n * | `--field-container-title-justify`      | Alinhamento horizontal do título (`justify-content`)  | `space-between`                                  |\n * | `--field-container-title-flex`         | Flex do título (`flex`)                               | `1 auto`                                         |\n * | **Hover**                              |                                                       |                                                  |\n * | `--color-hover`                        | Cor principal no estado hover                         | `var(--color-brand-01-dark)`                     |\n * | `--background-hover`                   | Cor de background no estado hover                     | `var(--color-brand-01-lightest)`                 |\n * | **Focused**                            |                                                       |                                                  |\n * | `--color-focused`                      | Cor principal no estado de focus                      | `var(--color-action-default)`                    |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                     | `var(--color-action-focus)`                      |\n * | **Disabled**                           |                                                       |                                                  |\n * | `--color-disabled`                     | Cor principal no estado disabled                      | `var(--color-neutral-light-30)`                  |\n * | `--background-disabled`                | Cor de background no estado disabled                  | `var(--color-neutral-light-20)`                  |\n * | `--text-color-disabled`                | Cor do texto no estado disabled                       | `var(--color-neutral-dark-70)`                   |\n */\n@Directive()\nexport abstract class PoTimepickerBaseComponent implements ControlValueAccessor, OnInit, Validator {\n  @Input() additionalHelpEventTrigger: string | undefined;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Aplica foco no elemento ao ser iniciado.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-auto-focus', transform: convertToBoolean }) autoFocus: boolean = false;\n\n  /**\n   * @Input\n   *\n   * @optional\n   *\n   * @description\n   * Define se o título do campo será exibido de forma compacta.\n   *\n   * @default `false`\n   */\n  compactLabel = input<boolean, unknown>(false, { alias: 'p-compact-label', transform: convertToBoolean });\n\n  /** Nome do componente. */\n  @Input('name') name: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se a indicação de campo opcional será exibida.\n   *\n   * @default `false`\n   */\n  @Input('p-optional') optional: boolean;\n\n  /**\n   * Mensagem apresentada quando o horário for inválido ou fora do período.\n   *\n   * > Por padrão, esta mensagem não é apresentada quando o campo estiver vazio, mesmo que ele seja requerido.\n   */\n  @Input('p-error-pattern') errorPattern?: string = '';\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Limita a exibição da mensagem de erro a duas linhas e exibe um tooltip com o texto completo.\n   *\n   * @default `false`\n   */\n  @Input('p-error-limit') errorLimit: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe a mensagem setada na propriedade `p-error-pattern` se o campo estiver vazio e for requerido.\n   *\n   * @default `false`\n   */\n  @Input('p-required-field-error-message') showErrorMessageRequired: boolean = false;\n\n  /** Evento disparado ao sair do campo. */\n  @Output('p-blur') onblur: EventEmitter<any> = new EventEmitter<any>();\n\n  /** Evento disparado ao alterar valor do campo. */\n  @Output('p-change') onchange: EventEmitter<any> = new EventEmitter<any>();\n\n  /** Evento disparado quando uma tecla é pressionada enquanto o foco está no componente. */\n  @Output('p-keydown') keydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n  /**\n   * @Input\n   *\n   * @optional\n   *\n   * @description\n   *\n   * Define as opções do componente de ajuda (po-helper).\n   */\n  poHelperComponent = input<PoHelperOptions | string>(undefined, { alias: 'p-helper' });\n\n  /**\n   * @Input\n   *\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a quebra automática do texto da propriedade `p-label`.\n   *\n   * @default `false`\n   */\n  labelTextWrap = input<boolean>(false, { alias: 'p-label-text-wrap' });\n\n  /** Desabilita o campo. */\n  disabled?: boolean = false;\n\n  /** Torna o elemento somente leitura. */\n  readonly?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o campo será obrigatório.\n   *\n   * @default `false`\n   */\n  required?: boolean = false;\n\n  /** Habilita ação para limpar o campo. */\n  clean?: boolean = false;\n\n  protected onChangeModel: any = null;\n  protected validatorChange: any;\n  protected onTouchedModel: any = null;\n  protected shortLanguage: string;\n  protected isInvalid: boolean;\n  protected hasValidatorRequired: boolean = false;\n  protected objMask: PoMask;\n\n  private _format: PoTimerFormat = PoTimerFormat.Format24;\n  private _modelFormat: PoTimepickerModelFormat;\n  private _maxTime: string;\n  private _minTime: string;\n  private _minuteInterval: number = 5;\n  private _secondInterval: number = 1;\n  private _showSeconds: boolean = false;\n  private _noAutocomplete?: boolean = false;\n  private _placeholder?: string;\n  private _loading?: boolean = false;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n  private _locale?: string;\n  private _timeValue: string = '';\n  private _validationValue?: string;\n  private _validationMinHour?: number;\n  private _validationMaxHour?: number;\n  private previousValue: any;\n  private pendingChangeValue: { value: any } | null = null;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a propriedade nativa `autocomplete` do campo como `off`.\n   *\n   * @default `false`\n   */\n  @Input('p-no-autocomplete') set noAutocomplete(value: boolean) {\n    this._noAutocomplete = convertToBoolean(value);\n  }\n\n  get noAutocomplete() {\n    return this._noAutocomplete;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Mensagem que aparecerá enquanto o campo não estiver preenchido.\n   *\n   * Para personalizar os segmentos, informe o valor no formato `HH:mm` ou `HH:mm:ss`.\n   */\n  @Input('p-placeholder') set placeholder(placeholder: string) {\n    this._placeholder = isTypeof(placeholder, 'string') ? placeholder : '';\n  }\n\n  get placeholder() {\n    return this._placeholder;\n  }\n\n  @Input('p-disabled') set setDisabled(disabled: string) {\n    this.disabled = disabled === '' ? true : convertToBoolean(disabled);\n    this.validateModel(this._timeValue);\n  }\n\n  @Input('p-readonly') set setReadonly(readonly: string) {\n    this.readonly = readonly === '' ? true : convertToBoolean(readonly);\n  }\n\n  @Input('p-required') set setRequired(required: string) {\n    this.required = required === '' ? true : convertToBoolean(required);\n    this.validateModel(this._timeValue);\n  }\n\n  /** Define se a indicação de campo obrigatório será exibida. */\n  @Input('p-show-required') showRequired: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura do input como 32px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura do input como 44px.\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  @Input('p-clean') set setClean(clean: string) {\n    this.clean = clean === '' ? true : convertToBoolean(clean);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o formato de exibição do timer.\n   *\n   * Valores válidos:\n   * - `24`: formato de 24 horas (padrão)\n   * - `12`: formato de 12 horas com indicador AM/PM\n   *\n   * @default `24`\n   */\n  @Input('p-format') set format(value: PoTimerFormat) {\n    this._format = Object.values(PoTimerFormat).includes(value) ? value : PoTimerFormat.Format24;\n    this.updateMask();\n    this.refreshValue(this._timeValue);\n  }\n\n  get format(): PoTimerFormat {\n    return this._format;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o horário mínimo permitido. Formato: `HH:mm` ou `HH:mm:ss`.\n   */\n  @Input('p-min-time') set minTime(value: string) {\n    this._minTime = this.isValidTimeString(value) ? value : undefined;\n    this.validateModel(this._timeValue);\n  }\n\n  get minTime(): string {\n    return this._minTime;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o horário máximo permitido. Formato: `HH:mm` ou `HH:mm:ss`.\n   */\n  @Input('p-max-time') set maxTime(value: string) {\n    this._maxTime = this.isValidTimeString(value) ? value : undefined;\n    this.validateModel(this._timeValue);\n  }\n\n  get maxTime(): string {\n    return this._maxTime;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o intervalo entre os minutos exibidos no painel.\n   *\n   * @default `5`\n   */\n  @Input('p-minute-interval') set minuteInterval(value: number) {\n    const parsed = parseInt(<any>value, 10);\n    this._minuteInterval = parsed > 0 && parsed < 60 ? parsed : 5;\n  }\n\n  get minuteInterval(): number {\n    return this._minuteInterval;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o intervalo entre os segundos exibidos no painel.\n   *\n   * @default `1`\n   */\n  @Input('p-second-interval') set secondInterval(value: number) {\n    const parsed = parseInt(<any>value, 10);\n    this._secondInterval = parsed > 0 && parsed < 60 ? parsed : 1;\n  }\n\n  get secondInterval(): number {\n    return this._secondInterval;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe a coluna de segundos no painel.\n   *\n   * @default `false`\n   */\n  @Input('p-show-seconds') set showSeconds(value: boolean) {\n    this._showSeconds = value === true || <any>value === 'true' || <any>value === '';\n    this.updateMask();\n    this.refreshValue(this._timeValue);\n  }\n\n  get showSeconds(): boolean {\n    return this._showSeconds;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Padrão de formatação para saída do *model*.\n   *\n   * > Veja os valores válidos no *enum* `PoTimepickerModelFormat`.\n   */\n  @Input('p-model-format')\n  set modelFormat(value: PoTimepickerModelFormat) {\n    if (Object.values(PoTimepickerModelFormat).includes(value)) {\n      this._modelFormat = value;\n    }\n  }\n\n  get modelFormat() {\n    return this._modelFormat;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Idioma do componente.\n   */\n  @Input('p-locale') set locale(value: string) {\n    this._locale = value && value.length >= 2 ? value : this.shortLanguage;\n    this.onLocaleChange();\n  }\n\n  get locale(): string {\n    return this._locale || this.shortLanguage;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de carregamento no lado direito do campo para sinalizar que uma operação está em andamento.\n   *\n   * @default `false`\n   */\n  @Input('p-loading') set loading(value: boolean) {\n    this._loading = convertToBoolean(value);\n    this.cd?.markForCheck();\n  }\n\n  get loading(): boolean {\n    return this._loading;\n  }\n\n  get isDisabled(): boolean {\n    return this.disabled || this.loading;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o painel do timer será incluído no body da página.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendBox: boolean = false;\n\n  get is12HourFormat(): boolean {\n    return this._format === PoTimerFormat.Format12;\n  }\n\n  constructor(\n    protected languageService: PoLanguageService,\n    protected cd: ChangeDetectorRef\n  ) {}\n\n  ngOnInit() {\n    this.shortLanguage = this.languageService.getShortLanguage();\n    if (!this._locale) {\n      this._locale = this.shortLanguage;\n    }\n    this.updateMask();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  get autocomplete() {\n    return this.noAutocomplete ? 'off' : 'on';\n  }\n\n  get timeValue(): string {\n    return this._timeValue;\n  }\n\n  set timeValue(value: string) {\n    this._timeValue = value;\n  }\n\n  // Constrói a máscara para o campo de input com base no formato.\n  protected updateMask(): void {\n    if (this._showSeconds) {\n      this.objMask = new PoMask('99:99:99', true);\n    } else {\n      this.objMask = new PoMask('99:99', true);\n    }\n  }\n\n  // Valida uma string de horário (HH:mm ou HH:mm:ss).\n  protected isValidTimeString(value: string, minHour = 0, maxHour = 23): boolean {\n    if (!value || typeof value !== 'string') {\n      return false;\n    }\n\n    const match = /^(\\d{2}):(\\d{2})(?::(\\d{2}))?$/.exec(value);\n    if (!match) {\n      return false;\n    }\n\n    const hours = parseInt(match[1], 10);\n    const minutes = parseInt(match[2], 10);\n    const seconds = match[3] !== undefined ? parseInt(match[3], 10) : 0;\n\n    if (Number.isNaN(hours) || Number.isNaN(minutes) || Number.isNaN(seconds)) {\n      return false;\n    }\n\n    return hours >= minHour && hours <= maxHour && minutes >= 0 && minutes <= 59 && seconds >= 0 && seconds <= 59;\n  }\n\n  // Verifica se o horário está dentro dos limites min/max.\n  protected isTimeInRange(time: string): boolean {\n    if (!time || !this.isValidTimeString(time)) {\n      return true;\n    }\n\n    const timeMinutes = this.timeToMinutes(time);\n\n    if (this._minTime) {\n      const minMinutes = this.timeToMinutes(this._minTime);\n      if (timeMinutes < minMinutes) {\n        return false;\n      }\n    }\n\n    if (this._maxTime) {\n      const maxMinutes = this.timeToMinutes(this._maxTime);\n      if (timeMinutes > maxMinutes) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  // Converte string de horário para minutos totais (ou segundos se tiver segundos).\n  protected timeToMinutes(time: string): number {\n    const parts = time.split(':');\n    const hours = parseInt(parts[0], 10) || 0;\n    const minutes = parseInt(parts[1], 10) || 0;\n    const seconds = parts.length >= 3 ? parseInt(parts[2], 10) || 0 : 0;\n    return hours * 3600 + minutes * 60 + seconds;\n  }\n\n  // Formata o valor de saída do model conforme o iso-format configurado.\n  protected formatOutput(time: string): string {\n    if (!time || !this.isValidTimeString(time)) {\n      return '';\n    }\n\n    if (this._modelFormat === PoTimepickerModelFormat.HourMinuteSecond) {\n      return time.length === 5 ? `${time}:00` : time;\n    }\n\n    if (this._modelFormat === PoTimepickerModelFormat.HourMinute) {\n      return time.substring(0, 5);\n    }\n\n    return time;\n  }\n\n  protected setValidationValue(value?: string, minHour?: number, maxHour?: number): void {\n    this._validationValue = value;\n    this._validationMinHour = minHour;\n    this._validationMaxHour = maxHour;\n  }\n\n  protected clearValidationValue(): void {\n    this._validationValue = undefined;\n    this._validationMinHour = undefined;\n    this._validationMaxHour = undefined;\n  }\n\n  protected hasValidationValue(): boolean {\n    return !!this._validationValue;\n  }\n\n  protected getValidationValue(controlValue: any): string {\n    if (typeof this._validationValue === 'string' && this._validationValue !== '') {\n      return this._validationValue;\n    }\n\n    return typeof controlValue === 'string' ? controlValue : '';\n  }\n\n  protected getValidationHourRange(): { minHour: number; maxHour: number } | undefined {\n    if (typeof this._validationMinHour === 'number' && typeof this._validationMaxHour === 'number') {\n      return {\n        minHour: this._validationMinHour,\n        maxHour: this._validationMaxHour\n      };\n    }\n\n    return undefined;\n  }\n\n  protected isGeneratedErrorPattern(errorPattern: string): boolean {\n    if (!errorPattern) {\n      return false;\n    }\n\n    return Object.values(poTimepickerLiterals).some(\n      literal => errorPattern === literal.invalidTime || errorPattern === literal.outOfRangeTime\n    );\n  }\n\n  protected getDefaultInvalidTimeMessage(): string {\n    const key = this.locale || poLocaleDefault;\n    return poTimepickerLiterals[key]?.invalidTime || poTimepickerLiterals.pt.invalidTime;\n  }\n\n  protected getDefaultOutOfRangeTimeMessage(): string {\n    const key = this.locale || poLocaleDefault;\n    return poTimepickerLiterals[key]?.outOfRangeTime || poTimepickerLiterals.pt.outOfRangeTime;\n  }\n\n  // Executa a função onChange, aplicando formatOutput automaticamente.\n  protected callOnChange(value: any) {\n    const formatted = typeof value === 'string' && value ? this.formatOutput(value) || value : value;\n\n    if (this.onChangeModel) {\n      if (formatted !== this.previousValue) {\n        this.onChangeModel(formatted);\n        this.previousValue = formatted;\n      }\n      this.pendingChangeValue = null;\n    } else {\n      this.pendingChangeValue = { value: formatted };\n    }\n  }\n\n  mapSizeToIcon(size: string): string {\n    return mapInputSizeToLoadingIcon(size);\n  }\n\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n    this.cd.markForCheck();\n  }\n\n  registerOnChange(func: any): void {\n    this.onChangeModel = func;\n\n    if (this.pendingChangeValue) {\n      const pending = this.pendingChangeValue;\n      this.pendingChangeValue = null;\n      this.callOnChange(pending.value);\n    }\n  }\n\n  registerOnTouched(func: any): void {\n    this.onTouchedModel = func;\n  }\n\n  registerOnValidatorChange(fn: () => void) {\n    this.validatorChange = fn;\n  }\n\n  validate(c: AbstractControl): { [key: string]: any } {\n    this.errorPattern = this.isGeneratedErrorPattern(this.errorPattern) ? '' : this.errorPattern;\n\n    if (!this.hasValidatorRequired && this.showErrorMessageRequired && c.hasValidator(Validators.required)) {\n      this.hasValidatorRequired = true;\n    }\n\n    const valueToValidate = this.getValidationValue(c.value);\n    const validationHourRange = this.getValidationHourRange();\n    const isValidTime =\n      !valueToValidate ||\n      (validationHourRange\n        ? this.isValidTimeString(valueToValidate, validationHourRange.minHour, validationHourRange.maxHour)\n        : this.isValidTimeString(valueToValidate));\n\n    if (valueToValidate && !isValidTime) {\n      this.errorPattern = this.errorPattern || this.getDefaultInvalidTimeMessage();\n      this.cd?.markForCheck();\n      return {\n        time: {\n          valid: false\n        }\n      };\n    }\n\n    if (valueToValidate && !this.isTimeInRange(valueToValidate)) {\n      this.errorPattern = this.errorPattern || this.getDefaultOutOfRangeTimeMessage();\n      this.cd?.markForCheck();\n      return {\n        time: {\n          valid: false\n        }\n      };\n    }\n\n    if (PoValidators.requiredFailed(this.required || this.hasValidatorRequired, this.disabled, c.value)) {\n      this.cd?.markForCheck();\n      return {\n        required: {\n          valid: false\n        }\n      };\n    }\n\n    return null;\n  }\n\n  protected validateModel(model: any) {\n    if (this.validatorChange) {\n      this.validatorChange(model);\n    }\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n\n  protected onLocaleChange(): void {\n    if (this.isGeneratedErrorPattern(this.errorPattern)) {\n      const isOutOfRange = Object.values(poTimepickerLiterals).some(\n        literal => this.errorPattern === literal.outOfRangeTime\n      );\n      this.errorPattern = isOutOfRange ? this.getDefaultOutOfRangeTimeMessage() : this.getDefaultInvalidTimeMessage();\n    }\n  }\n\n  abstract writeValue(value: any): void;\n\n  abstract refreshValue(value: string): void;\n}\n","export const poTimerLiterals = {\n  en: {\n    hours: 'Hours',\n    minutes: 'Minutes',\n    seconds: 'Seconds'\n  },\n  es: {\n    hours: 'Horas',\n    minutes: 'Minutos',\n    seconds: 'Segundos'\n  },\n  pt: {\n    hours: 'Horas',\n    minutes: 'Minutos',\n    seconds: 'Segundos'\n  },\n  ru: {\n    hours: 'Часы',\n    minutes: 'Минуты',\n    seconds: 'Секунды'\n  }\n};\n","import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { poLocales } from '../../services/po-language/po-language.constant';\nimport { getDefaultSizeFn, validateSizeFn } from '../../utils/util';\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\n\nimport { PoTimerFormat } from './enums/po-timer-format.enum';\nimport { poTimerLiterals } from './po-timer.literals';\n\nconst PO_TIMER_DEFAULT_MINUTE_INTERVAL = 5;\nconst PO_TIMER_DEFAULT_SECOND_INTERVAL = 1;\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * O `po-timer` é um componente de seleção de horário que apresenta colunas de horas, minutos e, opcionalmente, segundos\n * para que a pessoa usuária escolha um horário de forma intuitiva.\n *\n * O componente é recomendado para cenários onde é necessário selecionar um horário específico, podendo ser utilizado\n * de forma independente ou integrado ao `po-timepicker` como painel flutuante de seleção.\n *\n * O valor de saída segue o formato ISO 8601 para horários (`HH:mm` ou `HH:mm:ss`).\n *\n * **Importante:**\n * - Horários fora do intervalo (`p-min-time` / `p-max-time`) aparecem desabilitados sem alterar o *model*.\n *\n * #### Boas práticas\n *\n * - Utilize o formato de 24 horas quando o contexto for profissional ou técnico (ex: agendamentos, logs).\n * - Utilize o formato de 12 horas (AM/PM) quando o público-alvo estiver habituado a esse padrão.\n * - Defina intervalos de minutos adequados ao contexto: intervalos de 5 minutos para agendamentos gerais,\n *   intervalos de 15 minutos para reuniões, ou intervalos de 1 minuto para precisão.\n * - Configure limites mínimo e máximo para impedir seleção de horários inválidos no contexto da aplicação.\n *\n * #### Acessibilidade tratada no componente\n *\n * Algumas diretrizes de acessibilidade já são tratadas no componente, internamente, e não podem ser alteradas pelo\n * proprietário do conteúdo. São elas:\n *\n * - Navegação por teclado: O componente permite interação via tecla Tab entre as colunas e navegação nas células\n *   por meio das setas direcionais (Arrow Up/Down).\n * - Foco visual: A área de foco possui espessura de pelo menos 2 pixels CSS e não é sobreposta por outros elementos da tela,\n *   garantindo visibilidade para usuários que utilizam teclado.\n *   [WCAG 2.4.12: Focus Appearance](https://www.w3.org/WAI/WCAG22/Understanding/focus-appearance-enhanced)\n * - Leitores de tela: Cada coluna e célula possui atributos ARIA para correta leitura por leitores de tela\n *   como NVDA e VoiceOver.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                    | Descrição                                            | Valor Padrão                      |\n * |--------------------------------|------------------------------------------------------|-----------------------------------|\n * | **Base**                       |                                                      |                                   |\n * | `--background`                 | Cor de fundo                                         | `var(--color-neutral-light-00)`   |\n * | `--border-color`               | Cor da borda                                         | `var(--color-neutral-light-20)`   |\n * | `--border-radius`              | Raio da borda                                        | `var(--border-radius-md)`         |\n * | `--border-width`               | Largura da borda                                     | `var(--border-width-sm)`          |\n * | `--shadow`                     | Contém o valor da sombra do elemento                 | `var(--shadow-md)`                |\n * | **Display**                    |                                                      |                                   |\n * | `--color-display`              | Cor da fonte do display                              | `var(--color-brand-01-base)`      |\n * | `--font-weight-display`        | Peso da fonte do display                             | `var(--font-weight-bold)`         |\n * | `--border-radius-display`      | Raio da borda do display                             | `var(--border-radius-md)`         |\n * | **Hover**                      |                                                      |                                   |\n * | `--color-hover-display`        | Cor da fonte do display ao passar o mouse           | `var(--color-brand-01-darkest)`   |\n * | `--background-hover-display`   | Cor de fundo do display ao passar o mouse           | `var(--color-brand-01-lighter)`   |\n * | **Focus**                      |                                                      |                                   |\n * | `--outline-color-focused-display` | Cor do outline do estado de focus                 | `var(--color-brand-01-darkest)`   |\n * | **Pressed**                    |                                                      |                                   |\n * | `--background-pressed-display` | Cor de fundo do display ao pressionar               | `var(--color-brand-01-light)`     |\n * | **Disabled**                   |                                                      |                                   |\n * | `--color-disabled-display`     | Cor da fonte do display desabilitado                 | `var(--color-neutral-light-30)`   |\n * | **Transitions**                |                                                      |                                   |\n * | `--transition-duration`        | Duração da transição do display                      | `var(--duration-extra-fast)`      |\n * | `--transition-property`        | Atributo da transição do display                     | `all`                             |\n * | `--transition-timing`          | Tipo de transição do display                         | `var(--timing-standart)`          |\n */\n@Directive()\nexport class PoTimerBaseComponent implements ControlValueAccessor {\n  private _format: PoTimerFormat = PoTimerFormat.Format24;\n  private _locale: string;\n  private _maxTime: string;\n  private _minTime: string;\n  private _minuteInterval: number = PO_TIMER_DEFAULT_MINUTE_INTERVAL;\n  private _secondInterval: number = PO_TIMER_DEFAULT_SECOND_INTERVAL;\n  private _showSeconds: boolean = false;\n  private _size?: string;\n  private _initialSize: string;\n\n  private readonly shortLanguage: string;\n  protected onChangePropagate: (value: string) => void = null;\n  protected onTouched: () => void = null;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao selecionar um horário.\n   * Retorna uma `string` no formato ISO 8601 (`HH:mm` ou `HH:mm:ss`).\n   */\n  @Output('p-change') change = new EventEmitter<string>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define um valor inicial para o componente no formato ISO 8601 (`HH:mm` ou `HH:mm:ss`).\n   */\n  @Input('p-value') set value(value: string) {\n    this.writeValue(value);\n  }\n\n  get value(): string {\n    return this.buildTimeValue();\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o formato de exibição do timer.\n   *\n   * Valores válidos:\n   * - `24`: formato de 24 horas (padrão)\n   * - `12`: formato de 12 horas com indicador AM/PM\n   *\n   * @default `24`\n   */\n  @Input('p-format') set format(value: PoTimerFormat) {\n    this._format = Object.values(PoTimerFormat).includes(value) ? value : PoTimerFormat.Format24;\n    this.generateHours();\n  }\n\n  get format(): PoTimerFormat {\n    return this._format;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Idioma do componente.\n   *\n   * > O locale padrão será recuperado com base no [`PoI18nService`](/documentation/po-i18n) ou *browser*.\n   */\n  @Input('p-locale') set locale(locale: string) {\n    this._locale = poLocales.includes(locale) ? locale : this.shortLanguage;\n    this.setLiterals();\n  }\n\n  get locale(): string {\n    return this._locale;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o horário máximo permitido para seleção.\n   * Horários posteriores ao limite ficam desabilitados.\n   *\n   * Formato aceito: `HH:mm` ou `HH:mm:ss`.\n   */\n  @Input('p-max-time') set maxTime(value: string) {\n    this._maxTime = this.isValidTimeString(value) ? value : undefined;\n  }\n\n  get maxTime(): string {\n    return this._maxTime;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o horário mínimo permitido para seleção.\n   * Horários anteriores ao limite ficam desabilitados.\n   *\n   * Formato aceito: `HH:mm` ou `HH:mm:ss`.\n   */\n  @Input('p-min-time') set minTime(value: string) {\n    this._minTime = this.isValidTimeString(value) ? value : undefined;\n  }\n\n  get minTime(): string {\n    return this._minTime;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o intervalo entre os minutos exibidos no painel.\n   *\n   * @default `5`\n   */\n  @Input('p-minute-interval') set minuteInterval(value: number) {\n    const parsed = parseInt(<any>value, 10);\n    this._minuteInterval = parsed > 0 && parsed < 60 ? parsed : PO_TIMER_DEFAULT_MINUTE_INTERVAL;\n    this.generateMinutes();\n  }\n\n  get minuteInterval(): number {\n    return this._minuteInterval;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o intervalo entre os segundos exibidos no painel.\n   * Utilizado apenas quando `p-show-seconds` está ativo.\n   *\n   * @default `1`\n   */\n  @Input('p-second-interval') set secondInterval(value: number) {\n    const parsed = parseInt(<any>value, 10);\n    this._secondInterval = parsed > 0 && parsed < 60 ? parsed : PO_TIMER_DEFAULT_SECOND_INTERVAL;\n    this.generateSeconds();\n  }\n\n  get secondInterval(): number {\n    return this._secondInterval;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe a coluna de segundos no painel de seleção.\n   *\n   * @default `false`\n   */\n  @Input('p-show-seconds') set showSeconds(value: boolean) {\n    this._showSeconds = value === true || <any>value === 'true' || <any>value === '';\n    this.generateSeconds();\n  }\n\n  get showSeconds(): boolean {\n    return this._showSeconds;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @HostBinding('attr.p-size')\n  @Input('p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  literals: { hours: string; minutes: string; seconds: string };\n\n  hours: Array<number> = [];\n  minutes: Array<number> = [];\n  seconds: Array<number> = [];\n\n  selectedHour: number = null;\n  selectedMinute: number = null;\n  selectedSecond: number = null;\n  period: string = 'AM';\n\n  constructor(protected languageService: PoLanguageService) {\n    this.shortLanguage = languageService.getShortLanguage();\n    this._locale = this.shortLanguage;\n    this.setLiterals();\n  }\n\n  get is12HourFormat(): boolean {\n    return this._format === PoTimerFormat.Format12;\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  /** Gera a lista de horas disponíveis de acordo com o formato. */\n  protected generateHours(): void {\n    this.hours = [];\n\n    if (this.is12HourFormat) {\n      for (let i = 1; i <= 12; i++) {\n        this.hours.push(i);\n      }\n    } else {\n      for (let i = 0; i <= 23; i++) {\n        this.hours.push(i);\n      }\n    }\n  }\n\n  /** Gera a lista de minutos de acordo com o intervalo configurado. */\n  protected generateMinutes(): void {\n    this.minutes = [];\n\n    for (let i = 0; i < 60; i += this._minuteInterval) {\n      this.minutes.push(i);\n    }\n  }\n\n  /** Gera a lista de segundos de acordo com o intervalo configurado. */\n  protected generateSeconds(): void {\n    this.seconds = [];\n\n    if (this._showSeconds) {\n      for (let i = 0; i < 60; i += this._secondInterval) {\n        this.seconds.push(i);\n      }\n    }\n  }\n\n  /** Formata um número com dois dígitos. */\n  protected formatValue(value: number): string {\n    if (value == null) {\n      return '--';\n    }\n    return value < 10 ? `0${value}` : `${value}`;\n  }\n\n  /** Verifica se uma hora está desabilitada com base nos limites min/max. */\n  protected isHourDisabled(hour: number): boolean {\n    if (!this._minTime && !this._maxTime) {\n      return false;\n    }\n\n    const hour24 = this.convertTo24Hour(hour);\n\n    if (this._minTime) {\n      const minHour = this.parseTimeComponent(this._minTime, 'hour');\n      if (hour24 < minHour) {\n        return true;\n      }\n    }\n\n    if (this._maxTime) {\n      const maxHour = this.parseTimeComponent(this._maxTime, 'hour');\n      if (hour24 > maxHour) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  /** Verifica se um minuto está desabilitado com base nos limites min/max e hora selecionada. */\n  protected isMinuteDisabled(minute: number): boolean {\n    if (!this._minTime && !this._maxTime) {\n      return false;\n    }\n\n    if (this.selectedHour != null) {\n      return !this.isMinuteAllowedForHour(this.selectedHour, minute);\n    }\n\n    if (!this.hours?.length) {\n      return false;\n    }\n\n    return !this.hours.some(hour => !this.isHourDisabled(hour) && this.isMinuteAllowedForHour(hour, minute));\n  }\n\n  /** Verifica se um segundo está desabilitado com base nos limites min/max, hora e minuto selecionados. */\n  protected isSecondDisabled(second: number): boolean {\n    if (!this._minTime && !this._maxTime) {\n      return false;\n    }\n\n    if (this.selectedHour != null && this.selectedMinute != null) {\n      return !this.isSecondAllowed(this.selectedHour, this.selectedMinute, second);\n    }\n\n    if (this.selectedHour != null) {\n      if (!this.minutes?.length) {\n        return false;\n      }\n\n      return !this.minutes.some(\n        minute =>\n          this.isMinuteAllowedForHour(this.selectedHour, minute) &&\n          this.isSecondAllowed(this.selectedHour, minute, second)\n      );\n    }\n\n    if (!this.hours?.length) {\n      return false;\n    }\n\n    return !this.hours.some(\n      hour =>\n        !this.isHourDisabled(hour) &&\n        this.minutes.some(\n          minute => this.isMinuteAllowedForHour(hour, minute) && this.isSecondAllowed(hour, minute, second)\n        )\n    );\n  }\n\n  protected isMinuteAllowedForHour(hour: number, minute: number): boolean {\n    const hour24 = this.convertTo24Hour(hour);\n\n    if (this._minTime) {\n      const minHour = this.parseTimeComponent(this._minTime, 'hour');\n      const minMinute = this.parseTimeComponent(this._minTime, 'minute');\n\n      if (hour24 < minHour || (hour24 === minHour && minute < minMinute)) {\n        return false;\n      }\n    }\n\n    if (this._maxTime) {\n      const maxHour = this.parseTimeComponent(this._maxTime, 'hour');\n      const maxMinute = this.parseTimeComponent(this._maxTime, 'minute');\n\n      if (hour24 > maxHour || (hour24 === maxHour && minute > maxMinute)) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  protected isSecondAllowed(hour: number, minute: number, second: number): boolean {\n    const hour24 = this.convertTo24Hour(hour);\n\n    if (this._minTime) {\n      const minHour = this.parseTimeComponent(this._minTime, 'hour');\n      const minMinute = this.parseTimeComponent(this._minTime, 'minute');\n      const minSecond = this.parseTimeComponent(this._minTime, 'second');\n\n      if (\n        hour24 < minHour ||\n        (hour24 === minHour && minute < minMinute) ||\n        (hour24 === minHour && minute === minMinute && second < minSecond)\n      ) {\n        return false;\n      }\n    }\n\n    if (this._maxTime) {\n      const maxHour = this.parseTimeComponent(this._maxTime, 'hour');\n      const maxMinute = this.parseTimeComponent(this._maxTime, 'minute');\n      const maxSecond = this.parseTimeComponent(this._maxTime, 'second');\n\n      if (\n        hour24 > maxHour ||\n        (hour24 === maxHour && minute > maxMinute) ||\n        (hour24 === maxHour && minute === maxMinute && second > maxSecond)\n      ) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  /** Gera o valor ISO 8601 com base na seleção atual. */\n  protected buildTimeValue(): string {\n    if (this.selectedHour == null || this.selectedMinute == null) {\n      return '';\n    }\n\n    const hour24 = this.convertTo24Hour(this.selectedHour);\n    const hourStr = this.formatValue(hour24);\n    const minuteStr = this.formatValue(this.selectedMinute);\n\n    if (this._showSeconds && this.selectedSecond != null) {\n      const secondStr = this.formatValue(this.selectedSecond);\n      return `${hourStr}:${minuteStr}:${secondStr}`;\n    }\n\n    return `${hourStr}:${minuteStr}`;\n  }\n\n  /** Define o horário a partir de uma string ISO. */\n  setTimeFromString(time: string): void {\n    if (!time) {\n      this.selectedHour = null;\n      this.selectedMinute = null;\n      this.selectedSecond = null;\n      return;\n    }\n\n    const parts = time.split(':');\n\n    if (parts.length >= 2) {\n      let hour = parseInt(parts[0], 10);\n      const minute = parseInt(parts[1], 10);\n      const second = parts.length >= 3 ? parseInt(parts[2], 10) : null;\n\n      if (this.is12HourFormat) {\n        const converted = this.convertTo12HourDisplay(hour);\n        this.period = converted.period;\n        hour = converted.hour;\n      }\n\n      this.selectedHour = hour;\n      this.selectedMinute = minute;\n      this.selectedSecond = this._showSeconds ? (second ?? null) : null;\n    }\n  }\n\n  /** Converte hora 24h para formato de exibicao 12h com periodo. */\n  private convertTo12HourDisplay(hour: number): { hour: number; period: string } {\n    if (hour === 0) {\n      return { hour: 12, period: 'AM' };\n    }\n    if (hour === 12) {\n      return { hour: 12, period: 'PM' };\n    }\n    if (hour > 12) {\n      return { hour: hour - 12, period: 'PM' };\n    }\n    return { hour, period: 'AM' };\n  }\n\n  writeValue(value: any): void {\n    this.setTimeFromString(value);\n  }\n\n  registerOnChange(fn: (value: string) => void): void {\n    this.onChangePropagate = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(_isDisabled: boolean): void {\n    // Interface exige a assinatura; o estado disabled nao se aplica ao po-timer.\n  }\n\n  protected emitChange(): void {\n    const value = this.buildTimeValue();\n\n    if (value) {\n      this.updateModel(value);\n      this.change.emit(value);\n    }\n  }\n\n  protected callOnTouched(): void {\n    if (this.onTouched) {\n      this.onTouched();\n    }\n  }\n\n  private updateModel(value: string): void {\n    if (this.onChangePropagate) {\n      this.onChangePropagate(value);\n    }\n  }\n\n  /** Converte hora no formato atual para formato de 24 horas. */\n  protected convertTo24Hour(hour: number): number {\n    if (!this.is12HourFormat) {\n      return hour;\n    }\n\n    if (this.period === 'AM') {\n      return hour === 12 ? 0 : hour;\n    } else {\n      return hour === 12 ? 12 : hour + 12;\n    }\n  }\n\n  /** Extrai componente do tempo (hora, minuto ou segundo) de uma string. */\n  protected parseTimeComponent(time: string, component: 'hour' | 'minute' | 'second'): number {\n    if (!time) {\n      return 0;\n    }\n\n    const parts = time.split(':');\n\n    switch (component) {\n      case 'hour':\n        return parseInt(parts[0], 10) || 0;\n      case 'minute':\n        return parts.length >= 2 ? parseInt(parts[1], 10) || 0 : 0;\n      case 'second':\n        return parts.length >= 3 ? parseInt(parts[2], 10) || 0 : 0;\n      default:\n        return 0;\n    }\n  }\n\n  private applySizeBasedOnA11y(): void {\n    this._size = validateSizeFn(this._initialSize, PoFieldSize);\n  }\n\n  private isValidTimeString(value: string): boolean {\n    if (!value || typeof value !== 'string') {\n      return false;\n    }\n\n    return /^\\d{2}:\\d{2}(:\\d{2})?$/.test(value);\n  }\n\n  private setLiterals(): void {\n    this.literals = poTimerLiterals[this._locale] || poTimerLiterals[this.shortLanguage] || poTimerLiterals['en'];\n  }\n}\n","/** Numero minimo de repeticoes do array para o infinity scroll. */\nconst INFINITY_SCROLL_MIN_REPEAT = 3;\n\n/** Numero minimo de itens totais para o infinity scroll funcionar corretamente. */\nconst INFINITY_SCROLL_MIN_ITEMS = 30;\n\n/**\n * @docsPrivate\n *\n * Helper com funcoes puras de matematica e layout para o infinity scroll\n * do po-timer. Nenhuma dessas funcoes acessa estado do componente — recebem\n * e devolvem apenas valores, facilitando testes unitarios isolados.\n */\nexport class PoTimerScrollHelper {\n  /**\n   * Normaliza o offset para o intervalo [sectionHeight, 2 * sectionHeight).\n   *\n   * Matematica:\n   *   mod = ((offset - sH) % sH + sH) % sH  →  resultado em [0, sH)\n   *   retorno = mod + sH                     →  resultado em [sH, 2*sH)\n   *\n   * Funciona para qualquer valor de offset (positivo, negativo, multiplos).\n   */\n  static wrapOffset(offset: number, sectionHeight: number): number {\n    if (sectionHeight <= 0) {\n      return offset;\n    }\n    const mod = (((offset - sectionHeight) % sectionHeight) + sectionHeight) % sectionHeight;\n    return mod + sectionHeight;\n  }\n\n  /**\n   * Calcula o passo (em px) por item, incluindo o gap entre itens.\n   *\n   * Para N itens num flex-column com altura H, gap G e padding P:\n   *   scrollHeight = N*H + (N-1)*G + 2*P\n   *   passo = H + G = (scrollHeight - 2*P + G) / N\n   */\n  static getCellStep(itemsEl: HTMLElement, displayCount: number): number {\n    if (!itemsEl || displayCount === 0) {\n      return 40;\n    }\n    const style = getComputedStyle(itemsEl);\n    const gap = parseFloat(style.rowGap) || 0;\n    const paddingTop = parseFloat(style.paddingTop) || 0;\n    const paddingBottom = parseFloat(style.paddingBottom) || 0;\n    return (itemsEl.scrollHeight - paddingTop - paddingBottom + gap) / displayCount;\n  }\n\n  /**\n   * Calcula o indice no displayArray do item visivel no topo a partir do offset.\n   * Usa Math.round para snap ao item mais proximo.\n   */\n  static computeTopDisplayIndex(offset: number, step: number, displayLength: number): number {\n    if (step <= 0 || displayLength === 0) {\n      return 0;\n    }\n    const raw = Math.round(offset / step);\n    return ((raw % displayLength) + displayLength) % displayLength;\n  }\n\n  /**\n   * Repete o array fonte o numero necessario de vezes para manter\n   * o infinity scroll com pelo menos INFINITY_SCROLL_MIN_ITEMS itens.\n   *\n   * Quando o array fonte tem menos de 6 itens, retorna uma copia simples\n   * (sem repeticao), pois o infinity scroll nao e utilizado.\n   */\n  static repeatArray(source: Array<number>): Array<number> {\n    if (!source || source.length === 0) {\n      return [];\n    }\n\n    if (source.length < 6) {\n      return [...source];\n    }\n\n    const repeats = Math.max(INFINITY_SCROLL_MIN_REPEAT, Math.ceil(INFINITY_SCROLL_MIN_ITEMS / source.length));\n\n    const result: Array<number> = [];\n    for (let i = 0; i < repeats; i++) {\n      result.push(...source);\n    }\n    return result;\n  }\n}\n","import {\n  AfterViewInit,\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  inject,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChildren\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\n\nimport { PoTimerBaseComponent } from './po-timer-base.component';\nimport { PoTimerScrollHelper } from './po-timer-scroll.helper';\n\n/** Quantidade de itens visiveis por coluna. */\nconst VISIBLE_ITEMS_PER_COLUMN = 6;\n\n/** Tipo dos eixos das colunas. */\ntype PoTimerColumnType = 'hour' | 'minute' | 'second' | 'period';\n\n/**\n * @docsPrivate\n *\n * @docsExtends PoTimerBaseComponent\n *\n * @example\n *\n * <example name=\"po-timer-basic\" title=\"PO Timer Basic\">\n *  <file name=\"sample-po-timer-basic/sample-po-timer-basic.component.html\"> </file>\n *  <file name=\"sample-po-timer-basic/sample-po-timer-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-timer-labs\" title=\"PO Timer Labs\">\n *  <file name=\"sample-po-timer-labs/sample-po-timer-labs.component.html\"> </file>\n *  <file name=\"sample-po-timer-labs/sample-po-timer-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-timer-alarm\" title=\"PO Timer - Alarm\">\n *  <file name=\"sample-po-timer-alarm/sample-po-timer-alarm.component.html\"> </file>\n *  <file name=\"sample-po-timer-alarm/sample-po-timer-alarm.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-timer-shift\" title=\"PO Timer - Shift\">\n *  <file name=\"sample-po-timer-shift/sample-po-timer-shift.component.html\"> </file>\n *  <file name=\"sample-po-timer-shift/sample-po-timer-shift.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-timer',\n  templateUrl: './po-timer.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoTimerComponent),\n      multi: true\n    }\n  ],\n  standalone: false\n})\nexport class PoTimerComponent\n  extends PoTimerBaseComponent\n  implements OnInit, OnChanges, AfterViewInit, AfterViewChecked, OnDestroy\n{\n  // Refs dos botoes de cada coluna para gerenciamento de foco programatico.\n  @ViewChildren('hourCell', { read: ElementRef }) hourCells: QueryList<ElementRef>;\n  @ViewChildren('minuteCell', { read: ElementRef }) minuteCells: QueryList<ElementRef>;\n  @ViewChildren('secondCell', { read: ElementRef }) secondCells: QueryList<ElementRef>;\n  @ViewChildren('periodCell', { read: ElementRef }) periodCells: QueryList<ElementRef>;\n\n  // Containers de recorte (clipping) de cada coluna.\n  @ViewChildren('hourItems', { read: ElementRef }) hourItemsRefs: QueryList<ElementRef<HTMLElement>>;\n  @ViewChildren('minuteItems', { read: ElementRef }) minuteItemsRefs: QueryList<ElementRef<HTMLElement>>;\n  @ViewChildren('secondItems', { read: ElementRef }) secondItemsRefs: QueryList<ElementRef<HTMLElement>>;\n\n  // Arrays repetidos para o infinity scroll.\n  displayHours: Array<number> = [];\n  displayMinutes: Array<number> = [];\n  displaySeconds: Array<number> = [];\n\n  // Emite quando Tab/Shift+Tab atinge a borda do componente.\n  @Output('p-boundary-tab') boundaryTab = new EventEmitter<{\n    direction: 'forward' | 'backward';\n    event: KeyboardEvent;\n    column: PoTimerColumnType;\n  }>();\n\n  private readonly changeDetector = inject(ChangeDetectorRef);\n  private readonly ngZone = inject(NgZone);\n  private readonly domDocument = inject(DOCUMENT, { optional: true });\n  private hasViewInitialized = false;\n  private currentRenderedSize: string;\n\n  /** ID do requestAnimationFrame pendente para throttle do wheel. */\n  private wheelRafId: number | null = null;\n\n  /**\n   * Offset atual (em px) de cada coluna, mantido em JS.\n   * O container de itens e posicionado via translateY(-offset).\n   * O offset e mantido sempre no intervalo [sectionHeight, 2*sectionHeight)\n   * para que o salto de reposicionamento seja sempre invisivel (as secoes\n   * sao identicas por serem copias do mesmo array fonte).\n   */\n  private columnOffsets: Record<PoTimerColumnType, number> = { hour: 0, minute: 0, second: 0, period: 0 };\n\n  /**\n   * Indice no displayArray do item focado em cada coluna.\n   * Usado para redirecionar o foco ao botao correto ao entrar na coluna via Tab.\n   */\n  private focusedDisplayIndex: Record<PoTimerColumnType, number> = { hour: 0, minute: 0, second: 0, period: 0 };\n\n  // IDs dos itens ativos em cada coluna para aria-activedescendant.\n  // Aponta para o item focado no displayArray.\n  activeDescendantIds: Record<PoTimerColumnType, string> = { hour: '', minute: '', second: '', period: '' };\n\n  // Cache de minutos desabilitados para evitar recalculo a cada ciclo de change detection.\n  disabledMinuteCache: Set<number> = new Set();\n\n  // Cache de segundos desabilitados para evitar recalculo a cada ciclo de change detection.\n  disabledSecondCache: Set<number> = new Set();\n\n  constructor() {\n    const languageService = inject(PoLanguageService);\n    super(languageService);\n  }\n\n  ngOnInit(): void {\n    this.generateHours();\n    this.generateMinutes();\n    this.generateSeconds();\n    this.buildDisplayArrays();\n    this.rebuildDisabledCaches();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const rebuildKeys = ['format', 'showSeconds', 'minuteInterval', 'secondInterval'];\n    const needsRebuild = rebuildKeys.some(key => key in changes && !changes[key].firstChange);\n\n    if (needsRebuild) {\n      this.buildDisplayArrays();\n      this.rebuildDisabledCaches();\n      this.changeDetector.markForCheck();\n\n      if (this.hasViewInitialized) {\n        this.realignColumnsToSelection();\n      }\n    }\n\n    if ('minTime' in changes || 'maxTime' in changes) {\n      this.rebuildDisabledCaches();\n      this.changeDetector.markForCheck();\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.hasViewInitialized = true;\n    this.currentRenderedSize = this.size;\n\n    // requestAnimationFrame garante que o layout ja foi calculado\n    // e scrollHeight dos containers esta disponivel.\n    this.ngZone.runOutsideAngular(() => {\n      requestAnimationFrame(() => {\n        this.initAllColumnOffsets();\n        this.syncAriaToNativeButtons();\n      });\n    });\n  }\n\n  ngAfterViewChecked(): void {\n    if (!this.hasViewInitialized) {\n      return;\n    }\n\n    this.syncAriaToNativeButtons();\n\n    const nextSize = this.size;\n\n    if (nextSize !== this.currentRenderedSize) {\n      this.currentRenderedSize = nextSize;\n\n      this.ngZone.runOutsideAngular(() => {\n        setTimeout(() => {\n          this.initAllColumnOffsets();\n        });\n      });\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.wheelRafId != null) {\n      cancelAnimationFrame(this.wheelRafId);\n    }\n  }\n\n  // Seleciona uma hora.\n  onSelectHour(hour: number): void {\n    if (this.isHourDisabled(hour)) {\n      return;\n    }\n\n    this.selectedHour = hour;\n    this.rebuildDisabledCaches();\n\n    if (this.selectedMinute != null && this.disabledMinuteCache.has(this.selectedMinute)) {\n      this.selectedMinute = this.getFirstAvailableMinuteForCurrentHour();\n      this.rebuildDisabledCaches();\n    }\n\n    if (\n      this.showSeconds &&\n      this.selectedMinute != null &&\n      this.selectedSecond != null &&\n      this.disabledSecondCache.has(this.selectedSecond)\n    ) {\n      this.selectedSecond = this.getFirstAvailableSecondForCurrentHourAndMinute();\n    }\n\n    this.emitChange();\n    this.callOnTouched();\n    this.changeDetector.markForCheck();\n  }\n\n  // Seleciona um minuto.\n  onSelectMinute(minute: number): void {\n    if (this.isMinuteDisabled(minute)) {\n      return;\n    }\n\n    this.selectedMinute = minute;\n    this.rebuildDisabledCaches();\n\n    if (this.showSeconds && this.selectedSecond != null && this.disabledSecondCache.has(this.selectedSecond)) {\n      this.selectedSecond = this.getFirstAvailableSecondForCurrentHourAndMinute();\n    }\n\n    this.emitChange();\n    this.callOnTouched();\n    this.changeDetector.markForCheck();\n  }\n\n  // Seleciona um segundo.\n  onSelectSecond(second: number): void {\n    if (this.disabledSecondCache.has(second)) {\n      return;\n    }\n\n    this.selectedSecond = second;\n    this.emitChange();\n    this.callOnTouched();\n    this.changeDetector.markForCheck();\n  }\n\n  // Alterna o periodo AM/PM.\n  onSelectPeriod(newPeriod: string): void {\n    this.period = newPeriod;\n    this.rebuildDisabledCaches();\n    this.focusedDisplayIndex['period'] = newPeriod === 'AM' ? 0 : 1;\n    this.focusButtonAt('period', this.focusedDisplayIndex['period']);\n    this.emitChange();\n    this.callOnTouched();\n    this.changeDetector.markForCheck();\n  }\n\n  onCellFocus(type: PoTimerColumnType, displayIndex: number): void {\n    this.focusedDisplayIndex[type] = displayIndex;\n    this.normalizeFocusedIndex(type);\n    this.updateActiveDescendant(type, this.focusedDisplayIndex[type]);\n  }\n\n  getCellTabIndex(type: PoTimerColumnType, displayIndex: number): number {\n    const domFocusedIndex = this.getDomFocusedDisplayIndex(type);\n    const normalizedIndex = domFocusedIndex ?? this.getCurrentFocusedDisplayIndex(type);\n    return normalizedIndex === displayIndex ? 0 : -1;\n  }\n\n  // Trata navegacao via teclado na coluna focada.\n  // ArrowUp/Down movem o foco para o proximo/anterior item habilitado e so\n  // traduzem a lista quando o item focado sai da viewport.\n  // Enter/Space selecionam o item focado.\n  // Tab/Shift+Tab movem o foco para a proxima/anterior coluna visivel,\n  // ou deixam o browser mover o foco naturalmente ao sair do componente.\n  onCellKeydown(event: KeyboardEvent, type: PoTimerColumnType): void {\n    switch (event.key) {\n      case 'ArrowUp':\n        event.preventDefault();\n        this.moveFocusByStep(type, -1);\n        break;\n      case 'ArrowDown':\n        event.preventDefault();\n        this.moveFocusByStep(type, 1);\n        break;\n      case 'Enter':\n      case ' ':\n        event.preventDefault();\n        this.selectFocusedItem(type);\n        break;\n      case 'Tab':\n        if (event.shiftKey) {\n          this.focusPreviousColumn(event, type);\n        } else {\n          this.focusNextColumn(event, type);\n        }\n        break;\n      default:\n        break;\n    }\n  }\n\n  // Trata navegacao via teclado na coluna AM/PM.\n  onPeriodKeydown(event: KeyboardEvent): void {\n    switch (event.key) {\n      case 'ArrowUp':\n        event.preventDefault();\n        this.movePeriodFocusByStep(-1);\n        break;\n      case 'ArrowDown':\n        event.preventDefault();\n        this.movePeriodFocusByStep(1);\n        break;\n      case 'Enter':\n      case ' ':\n        event.preventDefault();\n        this.selectFocusedPeriod();\n        break;\n      case 'Tab':\n        if (event.shiftKey) {\n          this.focusPreviousColumn(event, 'period');\n        } else {\n          this.focusNextColumn(event, 'period');\n        }\n        break;\n      default:\n        break;\n    }\n  }\n\n  // Trata o scroll da roda do mouse nas colunas.\n  //\n  // A posicao e controlada por JS via translateY, sem qualquer interacao\n  // com o scrollTop do browser. Usa throttle via requestAnimationFrame\n  // para agrupar multiplos ticks do wheel em um unico step por frame,\n  // evitando acumulo em trackpads de alta resolucao.\n  onColumnWheel(event: WheelEvent, type: PoTimerColumnType): void {\n    event.preventDefault();\n\n    if (this.wheelRafId != null) {\n      return;\n    }\n\n    const direction: 1 | -1 = event.deltaY > 0 ? 1 : -1;\n\n    this.ngZone.runOutsideAngular(() => {\n      this.wheelRafId = requestAnimationFrame(() => {\n        this.wheelRafId = null;\n        this.scrollColumnByStep(type, direction);\n      });\n    });\n  }\n\n  // Define o horario a partir de um valor externo.\n  writeValue(time: string): void {\n    if (this.hasViewInitialized && time === this.buildTimeValue()) {\n      return;\n    }\n\n    super.writeValue(time);\n    this.rebuildDisabledCaches();\n    this.changeDetector.markForCheck();\n\n    // Reposicionar as colunas para o valor selecionado apos a proxima renderizacao.\n    if (this.hasViewInitialized) {\n      requestAnimationFrame(() => {\n        this.ngZone.runOutsideAngular(() => {\n          this.initAllColumnOffsets();\n        });\n      });\n    }\n  }\n\n  // Track function para o @for do infinity scroll.\n  trackByIndex(index: number, _item: number): number {\n    return index;\n  }\n\n  focusFirstVisibleCell(): void {\n    const firstType = this.getVisibleColumnTypes()[0];\n    if (firstType) {\n      this.focusActiveButton(firstType);\n    }\n  }\n\n  focusLastVisibleCell(): void {\n    const columns = this.getVisibleColumnTypes();\n    const lastType = columns[columns.length - 1];\n    if (lastType) {\n      this.focusActiveButton(lastType);\n    }\n  }\n\n  initAllColumnOffsets(): void {\n    this.initColumnOffset('hour');\n    this.initColumnOffset('minute');\n    this.initColumnOffset('second');\n    this.refreshRovingTabIndex();\n  }\n\n  /**\n   * Posiciona o container de itens na secao do meio do array repetido,\n   * alinhando o item selecionado ao topo da janela visivel.\n   *\n   * Estrutura do array repetido (exemplo sourceLength = 24, repeats = 3):\n   *   [secao 0: itens 0-23] [secao 1: itens 0-23] [secao 2: itens 0-23]\n   *                         ^--- usuario fica aqui (offset em [sH, 2*sH))\n   *\n   * Usar a secao do meio garante que qualquer deslize para cima ou para baixo\n   * tem espaco antes de precisar fazer o wrap.\n   */\n  private initColumnOffset(type: PoTimerColumnType): void {\n    const itemsEl = this.getItemsElement(type);\n    if (!itemsEl) {\n      return;\n    }\n\n    const sourceArray = this.getSourceArray(type);\n    const displayArray = this.getDisplayArray(type);\n\n    if (!sourceArray.length || !displayArray.length) {\n      return;\n    }\n\n    const step = this.getCellStep(itemsEl, displayArray.length);\n    const sectionHeight = sourceArray.length * step;\n    const useInfinityScroll = sourceArray.length >= 6;\n\n    // Determinar o indice do valor selecionado no array fonte para alinhar a visao.\n    const selectedValue = this.getSelectedValue(type);\n    const selectedIndex = sourceArray.indexOf(selectedValue);\n    const selectedValueIsValid =\n      selectedIndex >= 0 && selectedValue != null && !this.isValueDisabledByType(type, sourceArray[selectedIndex]);\n    const alignIndex = selectedValueIsValid ? selectedIndex : this.getFirstAvailableIndexByType(type, sourceArray);\n\n    // Quando nao usa infinity scroll (< 6 itens), nao aplicar translateY.\n    const offset = useInfinityScroll ? sectionHeight + alignIndex * step : 0;\n    this.columnOffsets[type] = offset;\n    itemsEl.style.transform = useInfinityScroll ? `translateY(${-offset}px)` : '';\n    this.focusedDisplayIndex[type] = useInfinityScroll\n      ? this.computeTopDisplayIndex(offset, step, displayArray.length)\n      : alignIndex;\n    this.normalizeFocusedIndex(type);\n    this.updateActiveDescendant(type, this.focusedDisplayIndex[type]);\n  }\n\n  private getFirstAvailableIndexByType(type: PoTimerColumnType, sourceArray: Array<number>): number {\n    if (!sourceArray?.length) {\n      return 0;\n    }\n\n    switch (type) {\n      case 'hour': {\n        const index = sourceArray.findIndex(hour => !this.isHourDisabled(hour));\n        return index >= 0 ? index : 0;\n      }\n\n      case 'minute': {\n        const referenceHour = this.getReferenceHourForConstraints();\n        if (referenceHour == null) {\n          return 0;\n        }\n\n        const index = sourceArray.findIndex(minute => this.isMinuteAllowedForHour(referenceHour, minute));\n        return index >= 0 ? index : 0;\n      }\n\n      case 'second': {\n        const referenceHour = this.getReferenceHourForConstraints();\n        if (referenceHour == null) {\n          return 0;\n        }\n\n        const referenceMinute = this.getReferenceMinuteForConstraints(referenceHour);\n        if (referenceMinute == null) {\n          return 0;\n        }\n\n        const index = sourceArray.findIndex(second => this.isSecondAllowed(referenceHour, referenceMinute, second));\n        return index >= 0 ? index : 0;\n      }\n\n      default:\n        return 0;\n    }\n  }\n\n  private getReferenceHourForConstraints(): number | null {\n    if (this.selectedHour != null && !this.isHourDisabled(this.selectedHour)) {\n      return this.selectedHour;\n    }\n\n    const index = this.hours.findIndex(hour => !this.isHourDisabled(hour));\n    return index >= 0 ? this.hours[index] : null;\n  }\n\n  private getReferenceMinuteForConstraints(referenceHour: number): number | null {\n    if (this.selectedMinute != null && this.isMinuteAllowedForHour(referenceHour, this.selectedMinute)) {\n      return this.selectedMinute;\n    }\n\n    const index = this.minutes.findIndex(minute => this.isMinuteAllowedForHour(referenceHour, minute));\n    return index >= 0 ? this.minutes[index] : null;\n  }\n\n  private isValueDisabledByType(type: PoTimerColumnType, value: number): boolean {\n    switch (type) {\n      case 'hour':\n        return this.isHourDisabled(value);\n      case 'minute': {\n        if (this.selectedHour == null) {\n          return false;\n        }\n        return this.isMinuteDisabled(value);\n      }\n      case 'second': {\n        if (this.selectedHour == null || this.selectedMinute == null) {\n          return false;\n        }\n        return this.isSecondDisabled(value);\n      }\n      default:\n        return false;\n    }\n  }\n\n  /**\n   * Desloca a coluna pelo numero de passos indicado e aplica o wrap modular.\n   *\n   * O wrap mantem o offset em [sectionHeight, 2*sectionHeight), aproveitando\n   * o fato de que as secoes sao identicas — o salto e impercetivel visualmente.\n   */\n  private scrollColumnByStep(type: PoTimerColumnType, steps: number, syncFocusToTop = true): void {\n    const itemsEl = this.getItemsElement(type);\n    if (!itemsEl) {\n      return;\n    }\n\n    const sourceArray = this.getSourceArray(type);\n    const displayArray = this.getDisplayArray(type);\n\n    if (!sourceArray.length || !displayArray.length) {\n      return;\n    }\n\n    const step = this.getCellStep(itemsEl, displayArray.length);\n    const sectionHeight = sourceArray.length * step;\n    const useInfinityScroll = sourceArray.length >= 6;\n\n    if (!useInfinityScroll) {\n      // Sem infinity scroll: apenas atualizar o indice focado sem translateY.\n      const newIndex =\n        (((this.focusedDisplayIndex[type] + steps) % sourceArray.length) + sourceArray.length) % sourceArray.length;\n\n      if (syncFocusToTop) {\n        this.focusedDisplayIndex[type] = newIndex;\n        this.normalizeFocusedIndex(type);\n        this.updateActiveDescendant(type, this.focusedDisplayIndex[type]);\n      }\n\n      return;\n    }\n\n    const rawOffset = this.columnOffsets[type] + steps * step;\n    const wrappedOffset = this.wrapOffset(rawOffset, sectionHeight);\n\n    this.columnOffsets[type] = wrappedOffset;\n    itemsEl.style.transform = `translateY(${-wrappedOffset}px)`;\n\n    if (syncFocusToTop) {\n      this.focusedDisplayIndex[type] = this.computeTopDisplayIndex(wrappedOffset, step, displayArray.length);\n      this.normalizeFocusedIndex(type);\n      this.updateActiveDescendant(type, this.focusedDisplayIndex[type]);\n    }\n  }\n\n  private wrapOffset(offset: number, sectionHeight: number): number {\n    return PoTimerScrollHelper.wrapOffset(offset, sectionHeight);\n  }\n\n  private getCellStep(itemsEl: HTMLElement, displayCount: number): number {\n    return PoTimerScrollHelper.getCellStep(itemsEl, displayCount);\n  }\n\n  /**\n   * Foca o botao nativo (<button> interno ao po-button) no indice indicado\n   * do displayArray da coluna. O po-button tem tabindex=-1 para nao aparecer\n   * no fluxo natural do Tab, mas pode receber foco programatico.\n   */\n  private focusButtonAt(type: PoTimerColumnType, displayIndex: number): void {\n    const cells = this.getCellsForType(type);\n    if (!cells) {\n      return;\n    }\n\n    const arr = cells.toArray();\n    if (!arr.length) {\n      return;\n    }\n\n    const startIndex = this.getFocusableDisplayIndex(type, displayIndex, arr.length);\n\n    for (let offset = 0; offset < arr.length; offset++) {\n      const index = (startIndex + offset) % arr.length;\n      const hostEl = arr[index]?.nativeElement;\n      const nativeButton = hostEl?.querySelector('button') as HTMLButtonElement | null;\n\n      if (!nativeButton || nativeButton.disabled || nativeButton.getAttribute('aria-disabled') === 'true') {\n        continue;\n      }\n\n      this.focusedDisplayIndex[type] = index;\n      this.syncAriaToNativeButtons();\n      nativeButton.focus({ preventScroll: true });\n      this.refreshRovingTabIndex();\n      return;\n    }\n  }\n\n  private focusActiveButton(type: PoTimerColumnType): void {\n    this.normalizeFocusedIndex(type);\n    this.focusButtonAt(type, this.focusedDisplayIndex[type]);\n    this.updateActiveDescendant(type, this.focusedDisplayIndex[type]);\n  }\n\n  private computeTopDisplayIndex(offset: number, step: number, displayLength: number): number {\n    return PoTimerScrollHelper.computeTopDisplayIndex(offset, step, displayLength);\n  }\n\n  /**\n   * Foca a proxima coluna visivel do componente.\n   * Se a coluna atual for a ultima, nao cancela o evento e deixa o browser\n   * mover o foco para o proximo elemento focavel apos o componente.\n   */\n  private focusNextColumn(event: KeyboardEvent, type: PoTimerColumnType): void {\n    const columns = this.getVisibleColumnTypes();\n    const currentIdx = columns.indexOf(type);\n\n    if (currentIdx < 0) {\n      return;\n    }\n\n    const nextType = columns[currentIdx + 1];\n\n    if (nextType) {\n      event.preventDefault();\n      this.focusActiveButton(nextType);\n      return;\n    }\n\n    this.boundaryTab.emit({ direction: 'forward', event, column: type });\n  }\n\n  /**\n   * Foca a coluna anterior visivel do componente.\n   * Se a coluna atual for a primeira, nao cancela o evento e deixa o browser\n   * mover o foco para o elemento focavel antes do componente.\n   */\n  private focusPreviousColumn(event: KeyboardEvent, type: PoTimerColumnType): void {\n    const columns = this.getVisibleColumnTypes();\n    const currentIdx = columns.indexOf(type);\n\n    if (currentIdx < 0) {\n      return;\n    }\n\n    const prevType = columns[currentIdx - 1];\n\n    if (prevType) {\n      event.preventDefault();\n      this.focusActiveButton(prevType);\n      return;\n    }\n\n    this.boundaryTab.emit({ direction: 'backward', event, column: type });\n  }\n\n  /**\n   * Retorna, em ordem DOM, os elementos focaveis de todas as colunas visiveis.\n   * Inclui o div da coluna AM/PM (se visivel), cujos botoes internos recebem\n   * o foco diretamente pois nao usam o padrao de roving focus.\n   */\n  private getVisibleColumnTypes(): Array<PoTimerColumnType> {\n    const columns: Array<PoTimerColumnType> = ['hour', 'minute'];\n\n    if (this.showSeconds) {\n      columns.push('second');\n    }\n\n    if (this.is12HourFormat) {\n      columns.push('period');\n    }\n\n    return columns;\n  }\n\n  private getCellsForType(type: PoTimerColumnType): QueryList<ElementRef> | null {\n    switch (type) {\n      case 'hour':\n        return this.hourCells;\n      case 'minute':\n        return this.minuteCells;\n      case 'second':\n        return this.secondCells;\n      case 'period':\n        return this.periodCells;\n      default:\n        return null;\n    }\n  }\n\n  /** Atualiza aria-activedescendant para o indice focado no displayArray. */\n  private updateActiveDescendant(type: PoTimerColumnType, displayIndex: number): void {\n    const normalizedIndex = this.getNormalizedDisplayIndex(type, displayIndex);\n\n    if (normalizedIndex < 0) {\n      return;\n    }\n\n    this.activeDescendantIds[type] = `po-timer-${type}-${normalizedIndex}`;\n  }\n\n  /**\n   * Move o foco para o proximo item habilitado na direcao indicada.\n   * So aplica translate quando o item focado fica parcial ou totalmente fora da viewport.\n   */\n  private moveFocusByStep(type: PoTimerColumnType, stepDirection: -1 | 1): void {\n    const displayArray = this.getDisplayArray(type);\n    if (!displayArray.length) {\n      return;\n    }\n\n    const nextIndex = this.getNextEnabledDisplayIndex(type, this.focusedDisplayIndex[type], stepDirection);\n    this.focusedDisplayIndex[type] = nextIndex;\n    this.normalizeFocusedIndex(type);\n\n    const normalizedFocusedIndex = this.focusedDisplayIndex[type];\n\n    if (this.shouldTranslateToRevealFocusedItem(type, normalizedFocusedIndex)) {\n      const stepsToReveal = this.getStepsToRevealFocusedItem(type, normalizedFocusedIndex, stepDirection);\n\n      if (stepsToReveal !== 0) {\n        this.scrollColumnByStep(type, stepsToReveal, false);\n        this.focusedDisplayIndex[type] = normalizedFocusedIndex;\n      }\n    }\n\n    this.focusButtonAt(type, this.focusedDisplayIndex[type]);\n    this.updateActiveDescendant(type, this.focusedDisplayIndex[type]);\n  }\n\n  private movePeriodFocusByStep(stepDirection: -1 | 1): void {\n    const nextIndex = (((this.getCurrentFocusedDisplayIndex('period') + stepDirection) % 2) + 2) % 2;\n    this.focusedDisplayIndex['period'] = nextIndex;\n    this.focusButtonAt('period', nextIndex);\n    this.updateActiveDescendant('period', nextIndex);\n  }\n\n  private selectFocusedPeriod(): void {\n    const focusedPeriodIndex = this.getCurrentFocusedDisplayIndex('period');\n    this.onSelectPeriod(focusedPeriodIndex === 0 ? 'AM' : 'PM');\n  }\n\n  private getFocusableDisplayIndex(type: PoTimerColumnType, displayIndex: number, displayLength: number): number {\n    const normalizedIndex = ((displayIndex % displayLength) + displayLength) % displayLength;\n    const sourceArray = this.getSourceArray(type);\n    const sourceLength = sourceArray.length;\n\n    if (sourceLength < VISIBLE_ITEMS_PER_COLUMN) {\n      return normalizedIndex;\n    }\n\n    const itemsEl = this.getItemsElement(type);\n    if (!itemsEl) {\n      return normalizedIndex;\n    }\n\n    const step = this.getCellStep(itemsEl, displayLength);\n    if (step <= 0) {\n      return normalizedIndex;\n    }\n\n    const viewportHeight = this.getColumnViewportHeight(itemsEl, step);\n    const sourceIndex = ((normalizedIndex % sourceLength) + sourceLength) % sourceLength;\n    const tolerance = 0.5;\n    let bestIndex = normalizedIndex;\n    let bestScore = Number.POSITIVE_INFINITY;\n\n    for (let candidate = sourceIndex; candidate < displayLength; candidate += sourceLength) {\n      const itemTop = candidate * step - this.columnOffsets[type];\n      const itemBottom = itemTop + step;\n      const isFullyVisible = itemTop >= -tolerance && itemBottom <= viewportHeight + tolerance;\n      let clippedPixels = 0;\n      if (itemTop < 0) {\n        clippedPixels = -itemTop;\n      } else if (itemBottom > viewportHeight) {\n        clippedPixels = itemBottom - viewportHeight;\n      }\n      const sectionDistance = Math.abs(candidate - normalizedIndex) / sourceLength;\n      const score = (isFullyVisible ? 0 : 1000) + clippedPixels + sectionDistance;\n\n      if (score < bestScore) {\n        bestScore = score;\n        bestIndex = candidate;\n      }\n    }\n\n    return bestIndex;\n  }\n\n  /** Seleciona o item atualmente focado na coluna. */\n  private selectFocusedItem(type: PoTimerColumnType): void {\n    const displayArray = this.getDisplayArray(type);\n\n    if (!displayArray.length) {\n      return;\n    }\n\n    const displayIndex = this.getNormalizedDisplayIndex(type, this.focusedDisplayIndex[type]);\n    if (displayIndex < 0 || this.isDisplayIndexDisabled(type, displayIndex, displayArray)) {\n      return;\n    }\n\n    const value = displayArray[displayIndex];\n\n    switch (type) {\n      case 'hour':\n        this.onSelectHour(value);\n        break;\n      case 'minute':\n        this.onSelectMinute(value);\n        break;\n      case 'second':\n        this.onSelectSecond(value);\n        break;\n      default:\n        break;\n    }\n  }\n\n  private shouldTranslateToRevealFocusedItem(type: PoTimerColumnType, focusedIndex: number): boolean {\n    const itemsEl = this.getItemsElement(type);\n    const sourceArray = this.getSourceArray(type);\n    const displayArray = this.getDisplayArray(type);\n\n    if (!itemsEl || !sourceArray.length || sourceArray.length < VISIBLE_ITEMS_PER_COLUMN || !displayArray.length) {\n      return false;\n    }\n\n    const step = this.getCellStep(itemsEl, displayArray.length);\n    if (step <= 0) {\n      return false;\n    }\n\n    const viewportHeight = this.getColumnViewportHeight(itemsEl, step);\n    const normalizedIndex = this.getNormalizedDisplayIndex(type, focusedIndex);\n    const itemTop = normalizedIndex * step - this.columnOffsets[type];\n    const itemBottom = itemTop + step;\n    const tolerance = 0.5;\n\n    return itemTop < -tolerance || itemBottom > viewportHeight + tolerance;\n  }\n\n  private getStepsToRevealFocusedItem(type: PoTimerColumnType, focusedIndex: number, _stepDirection: -1 | 1): number {\n    const itemsEl = this.getItemsElement(type);\n    const displayArray = this.getDisplayArray(type);\n\n    if (!itemsEl || !displayArray.length) {\n      return 0;\n    }\n\n    const step = this.getCellStep(itemsEl, displayArray.length);\n    if (step <= 0) {\n      return 0;\n    }\n\n    const viewportHeight = this.getColumnViewportHeight(itemsEl, step);\n    const normalizedIndex = this.getNormalizedDisplayIndex(type, focusedIndex);\n    const itemTop = normalizedIndex * step - this.columnOffsets[type];\n    const itemBottom = itemTop + step;\n    const tolerance = 0.5;\n\n    if (itemTop < -tolerance) {\n      return -Math.max(1, Math.ceil(-itemTop / step));\n    }\n\n    if (itemBottom > viewportHeight + tolerance) {\n      return Math.max(1, Math.ceil((itemBottom - viewportHeight) / step));\n    }\n\n    return 0;\n  }\n\n  private getColumnViewportHeight(itemsEl: HTMLElement, step: number): number {\n    const viewportEl = itemsEl.parentElement;\n    if (viewportEl?.clientHeight) {\n      return viewportEl.clientHeight;\n    }\n\n    return step * VISIBLE_ITEMS_PER_COLUMN;\n  }\n\n  private getNextEnabledDisplayIndex(type: PoTimerColumnType, currentIndex: number, stepDirection: -1 | 1): number {\n    const displayArray = this.getDisplayArray(type);\n    const sourceArray = this.getSourceArray(type);\n    const sourceLength = sourceArray.length;\n\n    if (!displayArray.length) {\n      return 0;\n    }\n\n    const startIndex = this.getNormalizedDisplayIndex(type, currentIndex);\n    const maxIterations = sourceLength >= VISIBLE_ITEMS_PER_COLUMN ? sourceLength : displayArray.length;\n\n    for (let offset = 1; offset <= maxIterations; offset++) {\n      const candidateIndex = this.getNormalizedDisplayIndex(type, startIndex + offset * stepDirection);\n\n      if (!this.isDisplayIndexDisabled(type, candidateIndex, displayArray)) {\n        const sourceIndex = sourceLength > 0 ? candidateIndex % sourceLength : candidateIndex;\n        return this.getDisplayIndexForSourceNearViewport(type, sourceIndex, stepDirection);\n      }\n    }\n\n    return startIndex;\n  }\n\n  private getForwardDistance(fromIndex: number, toIndex: number, length: number): number {\n    if (length <= 0) {\n      return 0;\n    }\n\n    return (((toIndex - fromIndex) % length) + length) % length;\n  }\n\n  private getNormalizedDisplayIndex(type: PoTimerColumnType, displayIndex: number): number {\n    const displayArray = this.getDisplayArray(type);\n\n    if (!displayArray.length) {\n      return -1;\n    }\n\n    return ((displayIndex % displayArray.length) + displayArray.length) % displayArray.length;\n  }\n\n  private getDisplayIndexForSourceNearViewport(\n    type: PoTimerColumnType,\n    sourceIndex: number,\n    stepDirection: -1 | 1\n  ): number {\n    const displayArray = this.getDisplayArray(type);\n    const sourceArray = this.getSourceArray(type);\n    const sourceLength = sourceArray.length;\n\n    if (!displayArray.length || sourceLength === 0) {\n      return this.getNormalizedDisplayIndex(type, sourceIndex);\n    }\n\n    if (sourceLength < VISIBLE_ITEMS_PER_COLUMN) {\n      return this.getNormalizedDisplayIndex(type, sourceIndex);\n    }\n\n    const normalizedSourceIndex = ((sourceIndex % sourceLength) + sourceLength) % sourceLength;\n    const itemsEl = this.getItemsElement(type);\n    const visibleCount = Math.min(VISIBLE_ITEMS_PER_COLUMN, displayArray.length);\n\n    if (!itemsEl) {\n      return this.getNormalizedDisplayIndex(type, sourceLength + normalizedSourceIndex);\n    }\n\n    const step = this.getCellStep(itemsEl, displayArray.length);\n    if (step <= 0) {\n      return this.getNormalizedDisplayIndex(type, sourceLength + normalizedSourceIndex);\n    }\n\n    const topIndex = this.computeTopDisplayIndex(this.columnOffsets[type], step, displayArray.length);\n    let bestIndex = this.getNormalizedDisplayIndex(type, sourceLength + normalizedSourceIndex);\n    let bestScore = Number.POSITIVE_INFINITY;\n\n    for (let candidate = normalizedSourceIndex; candidate < displayArray.length; candidate += sourceLength) {\n      const isVisible = this.getForwardDistance(topIndex, candidate, displayArray.length) < visibleCount;\n      const directionalDistance =\n        stepDirection > 0\n          ? this.getForwardDistance(topIndex, candidate, displayArray.length)\n          : this.getForwardDistance(candidate, topIndex, displayArray.length);\n\n      const score = (isVisible ? 0 : displayArray.length) + directionalDistance;\n\n      if (score < bestScore) {\n        bestScore = score;\n        bestIndex = candidate;\n      }\n    }\n\n    return bestIndex;\n  }\n\n  private getItemsElement(type: PoTimerColumnType): HTMLElement {\n    switch (type) {\n      case 'hour':\n        return this.hourItemsRefs?.first?.nativeElement;\n      case 'minute':\n        return this.minuteItemsRefs?.first?.nativeElement;\n      case 'second':\n        return this.secondItemsRefs?.first?.nativeElement;\n      default:\n        return null;\n    }\n  }\n\n  private normalizeFocusedIndex(type: PoTimerColumnType): void {\n    this.focusedDisplayIndex[type] = this.getNormalizedFocusedIndex(type);\n  }\n\n  private getNormalizedFocusedIndex(type: PoTimerColumnType): number {\n    const displayArray = this.getDisplayArray(type);\n\n    if (!displayArray.length) {\n      return 0;\n    }\n\n    if (type === 'period') {\n      return ((this.focusedDisplayIndex.period % 2) + 2) % 2;\n    }\n\n    const startIndex =\n      ((this.focusedDisplayIndex[type] % displayArray.length) + displayArray.length) % displayArray.length;\n\n    for (let offset = 0; offset < displayArray.length; offset++) {\n      const index = (startIndex + offset) % displayArray.length;\n      if (!this.isDisplayIndexDisabled(type, index, displayArray)) {\n        return index;\n      }\n    }\n\n    return startIndex;\n  }\n\n  private getCurrentFocusedDisplayIndex(type: PoTimerColumnType): number {\n    if (type === 'period') {\n      return ((this.focusedDisplayIndex.period % 2) + 2) % 2;\n    }\n\n    return this.getNormalizedDisplayIndex(type, this.focusedDisplayIndex[type]);\n  }\n\n  private getDomFocusedDisplayIndex(type: PoTimerColumnType): number | null {\n    if (!this.domDocument) {\n      return null;\n    }\n\n    const activeElement = this.domDocument.activeElement as HTMLElement | null;\n    const hostButton = activeElement?.closest('po-button.po-timer-display');\n    const hostId = hostButton?.id;\n\n    if (!hostId?.startsWith(`po-timer-${type}-`)) {\n      return null;\n    }\n\n    const rawIndex = Number.parseInt(hostId.replace(`po-timer-${type}-`, ''), 10);\n    return Number.isNaN(rawIndex) ? null : rawIndex;\n  }\n\n  private isDisplayIndexDisabled(type: PoTimerColumnType, displayIndex: number, displayArray: Array<number>): boolean {\n    const value = displayArray[displayIndex];\n\n    switch (type) {\n      case 'hour':\n        return this.isHourDisabled(value);\n      case 'minute':\n        return this.isMinuteDisabled(value);\n      case 'second':\n        return this.isSecondDisabled(value);\n      default:\n        return false;\n    }\n  }\n\n  private getSelectedValue(type: PoTimerColumnType): number {\n    switch (type) {\n      case 'hour':\n        return this.selectedHour;\n      case 'minute':\n        return this.selectedMinute;\n      case 'second':\n        return this.selectedSecond;\n      default:\n        return 0;\n    }\n  }\n\n  private buildDisplayArrays(): void {\n    this.displayHours = this.repeatArray(this.hours);\n    this.displayMinutes = this.repeatArray(this.minutes);\n    this.displaySeconds = this.repeatArray(this.seconds);\n  }\n\n  /** Reconstroi os caches de minutos e segundos desabilitados. */\n  private rebuildDisabledCaches(): void {\n    this.disabledMinuteCache = new Set(this.minutes.filter(m => this.isMinuteDisabled(m)));\n    this.disabledSecondCache = new Set(this.seconds.filter(s => this.isSecondDisabled(s)));\n  }\n\n  private getFirstAvailableMinuteForCurrentHour(): number | null {\n    const firstAvailableMinute = this.minutes.find(minute => !this.isMinuteDisabled(minute));\n    return firstAvailableMinute ?? null;\n  }\n\n  private getFirstAvailableSecondForCurrentHourAndMinute(): number | null {\n    const firstAvailableSecond = this.seconds.find(second => !this.isSecondDisabled(second));\n    return firstAvailableSecond ?? null;\n  }\n\n  private realignColumnsToSelection(): void {\n    this.ngZone.runOutsideAngular(() => {\n      requestAnimationFrame(() => {\n        requestAnimationFrame(() => {\n          this.initAllColumnOffsets();\n        });\n      });\n    });\n  }\n\n  private refreshRovingTabIndex(): void {\n    this.changeDetector.markForCheck();\n  }\n\n  private repeatArray(source: Array<number>): Array<number> {\n    return PoTimerScrollHelper.repeatArray(source);\n  }\n\n  private getSourceArray(type: PoTimerColumnType): Array<number> {\n    switch (type) {\n      case 'hour':\n        return this.hours;\n      case 'minute':\n        return this.minutes;\n      case 'second':\n        return this.seconds;\n      default:\n        return this.hours;\n    }\n  }\n\n  private getDisplayArray(type: PoTimerColumnType): Array<number> {\n    switch (type) {\n      case 'hour':\n        return this.displayHours;\n      case 'minute':\n        return this.displayMinutes;\n      case 'second':\n        return this.displaySeconds;\n      default:\n        return [];\n    }\n  }\n\n  /**\n   * Propaga atributos ARIA (role, aria-selected, aria-setsize, aria-posinset)\n   * dos elementos host <po-button> para os elementos nativos <button> internos,\n   * garantindo que leitores de tela como NVDA recebam a semantica correta.\n   *\n   * Usa a secao fixa do meio [sourceLength, 2*sourceLength) como canonica.\n   * Quando o item focado esta fora dessa secao (na fronteira do infinity scroll),\n   * ele substitui o item equivalente na secao fixa para manter exatamente\n   * sourceLength itens com role=\"option\".\n   *\n   * Duplicatas recebem aria-hidden=\"true\" e role=\"none\" no <button> nativo\n   * (nao apenas no host <po-button>), pois NVDA ignora aria-hidden em\n   * elementos customizados e conta <button> filhos de role=\"listbox\".\n   */\n  private syncAriaToNativeButtons(): void {\n    const columnTypes: Array<PoTimerColumnType> = ['hour', 'minute', 'second'];\n\n    for (const type of columnTypes) {\n      const cells = this.getCellsForType(type);\n      if (!cells) {\n        continue;\n      }\n\n      const sourceLength = this.getSourceArray(type).length;\n      const useInfinityScroll = sourceLength >= VISIBLE_ITEMS_PER_COLUMN;\n      const arr = cells.toArray();\n\n      const focusedIdx = this.focusedDisplayIndex[type];\n      const focusedSectionStart =\n        useInfinityScroll && sourceLength > 0 ? Math.floor(focusedIdx / sourceLength) * sourceLength : 0;\n\n      for (let i = 0; i < arr.length; i++) {\n        const hostEl = arr[i].nativeElement;\n        const nativeButton = hostEl?.querySelector('button') as HTMLButtonElement | null;\n\n        if (!nativeButton) {\n          continue;\n        }\n\n        const isCanonical = this.isCanonicalDisplayItem(\n          i,\n          useInfinityScroll,\n          sourceLength,\n          focusedIdx,\n          focusedSectionStart\n        );\n\n        if (isCanonical) {\n          hostEl.removeAttribute('inert');\n          hostEl.removeAttribute('aria-hidden');\n          nativeButton.removeAttribute('aria-hidden');\n          this.syncSingleButtonAria(hostEl, nativeButton, i, sourceLength);\n        } else {\n          hostEl.setAttribute('inert', '');\n          hostEl.setAttribute('aria-hidden', 'true');\n          nativeButton.setAttribute('role', 'none');\n          nativeButton.setAttribute('aria-hidden', 'true');\n          nativeButton.removeAttribute('aria-setsize');\n          nativeButton.removeAttribute('aria-posinset');\n          nativeButton.removeAttribute('aria-selected');\n        }\n      }\n    }\n  }\n\n  /**\n   * Determina se um item do displayArray e canonico para fins de ARIA.\n   *\n   * - Sem infinity scroll: todos sao canonicos.\n   * - Com infinity scroll: a secao que contem o item focado e canonica.\n   */\n  private isCanonicalDisplayItem(\n    index: number,\n    useInfinityScroll: boolean,\n    sourceLength: number,\n    focusedIdx: number,\n    focusedSectionStart: number\n  ): boolean {\n    if (!useInfinityScroll) {\n      return true;\n    }\n\n    if (sourceLength <= 0) {\n      return false;\n    }\n\n    const sectionStart = Math.floor(index / sourceLength) * sourceLength;\n    return sectionStart === focusedSectionStart || index === focusedIdx;\n  }\n\n  /**\n   * Sincroniza os atributos ARIA de um unico par host/nativeButton.\n   * Chamado tanto por syncAriaToNativeButtons (batch) quanto por\n   * focusButtonAt (antes do .focus()) para evitar leitura duplicada.\n   */\n  private syncSingleButtonAria(\n    hostEl: HTMLElement,\n    nativeButton: HTMLButtonElement,\n    displayIndex: number,\n    sourceLength: number\n  ): void {\n    const role = hostEl.getAttribute('data-aria-role');\n    const selected = hostEl.getAttribute('data-aria-selected');\n\n    if (role) {\n      nativeButton.setAttribute('role', role);\n    }\n\n    if (selected === 'true') {\n      nativeButton.setAttribute('aria-selected', 'true');\n    } else {\n      nativeButton.removeAttribute('aria-selected');\n    }\n\n    if (sourceLength > 0) {\n      const normalizedPosInSet = (((displayIndex % sourceLength) + sourceLength) % sourceLength) + 1;\n      nativeButton.setAttribute('aria-setsize', String(sourceLength));\n      nativeButton.setAttribute('aria-posinset', String(normalizedPosInSet));\n    } else {\n      nativeButton.removeAttribute('aria-setsize');\n      nativeButton.removeAttribute('aria-posinset');\n    }\n  }\n}\n","<div class=\"po-timer-wrapper\">\n  <div class=\"po-timer\">\n    <!-- Coluna de Horas -->\n    <div\n      #hourColumn\n      class=\"po-timer-column\"\n      role=\"listbox\"\n      tabindex=\"-1\"\n      [attr.aria-label]=\"literals.hours\"\n      [attr.aria-activedescendant]=\"activeDescendantIds.hour\"\n      (wheel)=\"onColumnWheel($event, 'hour')\"\n    >\n      <div class=\"po-timer-column-scroll\" #hourScroll>\n        <div class=\"po-timer-column-items\" #hourItems>\n          @for (hour of displayHours; track trackByIndex($index, hour); let i = $index) {\n            <po-button\n              #hourCell\n              class=\"po-timer-display\"\n              p-kind=\"tertiary\"\n              [attr.id]=\"'po-timer-hour-' + i\"\n              [p-tabindex]=\"getCellTabIndex('hour', i)\"\n              [p-label]=\"formatValue(hour)\"\n              [p-aria-label]=\"formatValue(hour) + ' ' + literals.hours\"\n              [p-disabled]=\"isHourDisabled(hour)\"\n              [p-size]=\"size\"\n              [class.po-timer-display-selected]=\"selectedHour === hour\"\n              [attr.data-aria-role]=\"'option'\"\n              [attr.data-aria-selected]=\"selectedHour === hour ? 'true' : null\"\n              [attr.data-aria-setsize]=\"hours.length\"\n              [attr.data-aria-posinset]=\"(i % hours.length) + 1\"\n              (focus)=\"onCellFocus('hour', i)\"\n              (keydown)=\"onCellKeydown($event, 'hour')\"\n              (p-click)=\"onSelectHour(hour); onCellFocus('hour', i)\"\n            >\n            </po-button>\n          }\n        </div>\n      </div>\n    </div>\n\n    <!-- Coluna de Minutos -->\n    <div\n      #minuteColumn\n      class=\"po-timer-column\"\n      role=\"listbox\"\n      tabindex=\"-1\"\n      [attr.aria-label]=\"literals.minutes\"\n      [attr.aria-activedescendant]=\"activeDescendantIds.minute\"\n      (wheel)=\"onColumnWheel($event, 'minute')\"\n    >\n      <div class=\"po-timer-column-scroll\" #minuteScroll>\n        <div class=\"po-timer-column-items\" #minuteItems>\n          @for (minute of displayMinutes; track trackByIndex($index, minute); let i = $index) {\n            <po-button\n              #minuteCell\n              class=\"po-timer-display\"\n              p-kind=\"tertiary\"\n              [attr.id]=\"'po-timer-minute-' + i\"\n              [p-tabindex]=\"getCellTabIndex('minute', i)\"\n              [p-label]=\"formatValue(minute)\"\n              [p-aria-label]=\"formatValue(minute) + ' ' + literals.minutes\"\n              [p-disabled]=\"disabledMinuteCache.has(minute)\"\n              [p-size]=\"size\"\n              [class.po-timer-display-selected]=\"selectedMinute === minute\"\n              [attr.data-aria-role]=\"'option'\"\n              [attr.data-aria-selected]=\"selectedMinute === minute ? 'true' : null\"\n              [attr.data-aria-setsize]=\"minutes.length\"\n              [attr.data-aria-posinset]=\"(i % minutes.length) + 1\"\n              (focus)=\"onCellFocus('minute', i)\"\n              (keydown)=\"onCellKeydown($event, 'minute')\"\n              (p-click)=\"onSelectMinute(minute); onCellFocus('minute', i)\"\n            >\n            </po-button>\n          }\n        </div>\n      </div>\n    </div>\n\n    <!-- Coluna de Segundos (condicional) -->\n    @if (showSeconds) {\n      <div\n        #secondColumn\n        class=\"po-timer-column\"\n        role=\"listbox\"\n        tabindex=\"-1\"\n        [attr.aria-label]=\"literals.seconds\"\n        [attr.aria-activedescendant]=\"activeDescendantIds.second\"\n        (wheel)=\"onColumnWheel($event, 'second')\"\n      >\n        <div class=\"po-timer-column-scroll\" #secondScroll>\n          <div class=\"po-timer-column-items\" #secondItems>\n            @for (second of displaySeconds; track trackByIndex($index, second); let i = $index) {\n              <po-button\n                #secondCell\n                class=\"po-timer-display\"\n                p-kind=\"tertiary\"\n                [attr.id]=\"'po-timer-second-' + i\"\n                [p-tabindex]=\"getCellTabIndex('second', i)\"\n                [p-label]=\"formatValue(second)\"\n                [p-aria-label]=\"formatValue(second) + ' ' + literals.seconds\"\n                [p-disabled]=\"disabledSecondCache.has(second)\"\n                [p-size]=\"size\"\n                [class.po-timer-display-selected]=\"selectedSecond === second\"\n                [attr.data-aria-role]=\"'option'\"\n                [attr.data-aria-selected]=\"selectedSecond === second ? 'true' : null\"\n                [attr.data-aria-setsize]=\"seconds.length\"\n                [attr.data-aria-posinset]=\"(i % seconds.length) + 1\"\n                (focus)=\"onCellFocus('second', i)\"\n                (keydown)=\"onCellKeydown($event, 'second')\"\n                (p-click)=\"onSelectSecond(second); onCellFocus('second', i)\"\n              >\n              </po-button>\n            }\n          </div>\n        </div>\n      </div>\n    }\n\n    <!-- Coluna AM/PM (formato 12h) -->\n    @if (is12HourFormat) {\n      <div #periodColumn class=\"po-timer-column po-timer-column-period\" role=\"radiogroup\" aria-label=\"AM/PM\">\n        <div class=\"po-timer-column-scroll po-timer-period-scroll po-timer-column-items\">\n          <po-button\n            #periodCell\n            class=\"po-timer-display\"\n            p-kind=\"tertiary\"\n            p-label=\"AM\"\n            [p-size]=\"size\"\n            [p-tabindex]=\"getCellTabIndex('period', 0)\"\n            [class.po-timer-display-selected]=\"period === 'AM'\"\n            [attr.role]=\"'radio'\"\n            [attr.aria-checked]=\"period === 'AM'\"\n            (focus)=\"onCellFocus('period', 0)\"\n            (p-click)=\"onSelectPeriod('AM'); onCellFocus('period', 0)\"\n            (keydown)=\"onPeriodKeydown($event)\"\n          >\n          </po-button>\n          <po-button\n            #periodCell\n            class=\"po-timer-display\"\n            p-kind=\"tertiary\"\n            p-label=\"PM\"\n            [p-size]=\"size\"\n            [p-tabindex]=\"getCellTabIndex('period', 1)\"\n            [class.po-timer-display-selected]=\"period === 'PM'\"\n            [attr.role]=\"'radio'\"\n            [attr.aria-checked]=\"period === 'PM'\"\n            (focus)=\"onCellFocus('period', 1)\"\n            (p-click)=\"onSelectPeriod('PM'); onCellFocus('period', 1)\"\n            (keydown)=\"onPeriodKeydown($event)\"\n          >\n          </po-button>\n        </div>\n      </div>\n    }\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  forwardRef,\n  HostListener,\n  inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Renderer2,\n  SimpleChanges,\n  ViewRef,\n  ViewChild\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { isMobile, setHelperSettings, uuid } from '../../../utils/util';\nimport { PoControlPositionService } from '../../../services/po-control-position/po-control-position.service';\n\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport { PoButtonComponent } from '../../po-button/po-button.component';\nimport { PoTimerComponent } from '../../po-timer/po-timer.component';\nimport { PoTimepickerBaseComponent } from './po-timepicker-base.component';\nimport { poTimepickerLiterals } from './po-timepicker.literals';\nimport { PoHelperComponent } from '../../po-helper';\n\nconst poTimerContentOffset = 8;\nconst poTimerPositionDefault = 'bottom-left';\n\ntype PoTimepickerSegment = 'hour' | 'minute' | 'second';\n\n/**\n * @docsExtends PoTimepickerBaseComponent\n *\n * @example\n *\n * <example name=\"po-timepicker-basic\" title=\"PO Timepicker Basic\">\n *  <file name=\"sample-po-timepicker-basic/sample-po-timepicker-basic.component.html\"> </file>\n *  <file name=\"sample-po-timepicker-basic/sample-po-timepicker-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-timepicker-labs\" title=\"PO Timepicker Labs\">\n *  <file name=\"sample-po-timepicker-labs/sample-po-timepicker-labs.component.html\"> </file>\n *  <file name=\"sample-po-timepicker-labs/sample-po-timepicker-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-timepicker-scheduling\" title=\"PO Timepicker - Scheduling\">\n *  <file name=\"sample-po-timepicker-scheduling/sample-po-timepicker-scheduling.component.html\"> </file>\n *  <file name=\"sample-po-timepicker-scheduling/sample-po-timepicker-scheduling.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-timepicker-business-hours\" title=\"PO Timepicker - Business Hours\">\n *  <file name=\"sample-po-timepicker-business-hours/sample-po-timepicker-business-hours.component.html\"> </file>\n *  <file name=\"sample-po-timepicker-business-hours/sample-po-timepicker-business-hours.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-timepicker',\n  templateUrl: './po-timepicker.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoTimepickerComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => PoTimepickerComponent),\n      multi: true\n    },\n    PoControlPositionService\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoTimepickerComponent extends PoTimepickerBaseComponent implements AfterViewInit, OnDestroy, OnChanges {\n  private readonly controlPosition = inject(PoControlPositionService);\n  private readonly renderer = inject(Renderer2);\n\n  @ViewChild('dialogPicker', { read: ElementRef, static: false }) dialogPicker: ElementRef;\n  @ViewChild('iconTimepicker') iconTimepicker: PoButtonComponent;\n  @ViewChild('inp', { read: ElementRef, static: true }) inputEl: ElementRef;\n  @ViewChild('minuteInput', { read: ElementRef }) minuteInputEl: ElementRef;\n  @ViewChild('secondInput', { read: ElementRef }) secondInputEl: ElementRef;\n  @ViewChild('timepickerField', { read: ElementRef }) timepickerFieldEl: ElementRef;\n  @ViewChild('iconClean', { read: ElementRef }) iconClean!: ElementRef<HTMLElement>;\n  @ViewChild('helperEl', { read: PoHelperComponent, static: false }) helperEl?: PoHelperComponent;\n  @ViewChild('timer', { static: false }) timerComponent?: PoTimerComponent;\n  @ViewChild('periodInput', { read: ElementRef }) periodInputEl: ElementRef;\n\n  /** Rótulo do campo. */\n  @Input('p-label') label?: string;\n\n  /** Texto de apoio do campo. */\n  @Input('p-help') help?: string;\n\n  displayAdditionalHelp: boolean = false;\n  el: ElementRef;\n  id = `po-timepicker[${uuid()}]`;\n  visible: boolean = false;\n  literals: any;\n\n  // Valores de exibicao para os inputs de segmento individuais.\n  hourDisplay: string = '';\n  minuteDisplay: string = '';\n  secondDisplay: string = '';\n  periodDisplay: string = '';\n  isSegmentFocused: boolean = false;\n  ariaLiveMessage: string = '';\n\n  eventListenerFunction: () => void;\n  eventResizeListener: () => void;\n\n  get cleanElementRef(): { nativeElement: { value: string } } {\n    const combined = [this.hourDisplay, this.minuteDisplay, this.secondDisplay].filter(s => s !== '').join(':');\n    return { nativeElement: { value: combined } };\n  }\n\n  private clickListener: () => void;\n  private timeoutChange: any;\n  private valueBeforeChange: string;\n\n  constructor() {\n    const languageService = inject(PoLanguageService);\n    const cd = inject(ChangeDetectorRef);\n    const el = inject(ElementRef);\n\n    super(languageService, cd);\n    this.languageService = languageService;\n    this.cd = cd;\n\n    this.shortLanguage = this.languageService.getShortLanguage();\n    this.el = el;\n    const language = languageService.getShortLanguage();\n    this.literals = {\n      ...poTimepickerLiterals[language]\n    };\n  }\n\n  get hourPlaceholder(): string {\n    return this.getCustomPlaceholderSegment(0) ?? '';\n  }\n\n  get minutePlaceholder(): string {\n    return this.getCustomPlaceholderSegment(1) ?? '';\n  }\n\n  get secondPlaceholder(): string {\n    return this.getCustomPlaceholderSegment(2) ?? '';\n  }\n\n  private get customPlaceholderSegments(): Array<string> {\n    if (!this.placeholder?.trim()) {\n      return [];\n    }\n\n    return this.placeholder.split(':').map(segment => segment.trim());\n  }\n\n  private getCustomPlaceholderSegment(index: number): string | undefined {\n    return this.customPlaceholderSegments[index];\n  }\n\n  @HostListener('focusout', ['$event'])\n  onHostFocusOut(event: FocusEvent): void {\n    const relatedTarget = event.relatedTarget as HTMLElement;\n    const isStillInsideComponent =\n      relatedTarget &&\n      (this.el.nativeElement.contains(relatedTarget) || this.dialogPicker?.nativeElement?.contains(relatedTarget));\n\n    if (!isStillInsideComponent) {\n      this.onblur.emit();\n    }\n  }\n\n  @HostListener('keydown', ['$event'])\n  onKeydown($event?: any) {\n    if (this.readonly) {\n      return;\n    }\n\n    if ($event.key === 'Escape' && this.visible) {\n      this.togglePicker(false);\n      $event.preventDefault();\n      $event.stopPropagation();\n    }\n\n    if (\n      $event.key === 'Tab' &&\n      $event.shiftKey &&\n      $event.target instanceof HTMLInputElement &&\n      this.visible &&\n      !$event.target.classList?.contains('po-timepicker-segment-input')\n    ) {\n      this.togglePicker();\n    }\n  }\n\n  ngAfterViewInit() {\n    this.setDialogPickerStyleDisplay('none');\n    if (this.autoFocus) {\n      this.focus();\n    }\n    if (this.iconTimepicker?.buttonElement?.nativeElement) {\n      this.renderer.setAttribute(this.iconTimepicker.buttonElement.nativeElement, 'aria-label', this.literals.open);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n  }\n\n  ngOnDestroy() {\n    this.removeListeners();\n  }\n\n  protected override onLocaleChange(): void {\n    super.onLocaleChange();\n    const lang = this.locale;\n    this.literals = {\n      ...(poTimepickerLiterals[lang] || poTimepickerLiterals[this.shortLanguage])\n    };\n    this.cd.markForCheck();\n  }\n\n  emitAdditionalHelp() {\n    // deprecated - kept for backward compatibility\n  }\n\n  /**\n   * Função que atribui foco ao componente.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoTimepickerComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoTimepickerComponent, { static: true }) timepicker: PoTimepickerComponent;\n   *\n   * focusTimepicker() {\n   *   this.timepicker.focus();\n   * }\n   * ```\n   */\n  focus(): void {\n    if (!this.isDisabled && this.inputEl?.nativeElement) {\n      this.inputEl.nativeElement.focus();\n    }\n  }\n\n  getAdditionalHelpTooltip() {\n    return null;\n  }\n\n  togglePicker(focusInput = true) {\n    if (this.isDisabled || this.readonly || !this.iconTimepicker?.buttonElement?.nativeElement) {\n      return;\n    }\n\n    if (!this.visible) {\n      this.visible = true;\n      this.setTimerPosition();\n      this.initializeListeners();\n\n      this.renderer.setAttribute(this.inputEl.nativeElement, 'aria-expanded', 'true');\n      this.renderer.setAttribute(this.iconTimepicker.buttonElement.nativeElement, 'aria-expanded', 'true');\n\n      requestAnimationFrame(() => {\n        this.timerComponent.initAllColumnOffsets();\n      });\n    } else {\n      this.inputEl.nativeElement.disabled = false;\n      this.closeTimer(focusInput);\n\n      this.renderer.removeAttribute(this.inputEl.nativeElement, 'aria-expanded');\n      this.renderer.removeAttribute(this.iconTimepicker.buttonElement.nativeElement, 'aria-expanded');\n    }\n  }\n\n  closeTimer(focusInput = true, skipRefocus = false) {\n    this.completeSecondsOnClose();\n\n    this.visible = false;\n    this.removeListeners();\n    this.setDialogPickerStyleDisplay('none');\n\n    if (!this.verifyMobile() && focusInput) {\n      this.focus();\n    }\n\n    if (!focusInput && !skipRefocus && this.clean && this.hasValue()) {\n      setTimeout(() => {\n        this.iconTimepicker.focus();\n      });\n    }\n  }\n\n  // Chamado quando o po-timer emite p-change com o horario selecionado.\n  timerSelected(time: string) {\n    if (!time) {\n      this.clear();\n      setTimeout(() => this.closeTimer(), 200);\n      this.onchange.emit();\n      return;\n    }\n\n    this.onTouchedModel?.();\n\n    this.timeValue = time;\n    this.updateInputDisplay(time);\n    this.updateAriaLiveMessage(time);\n\n    this.callOnChange(time);\n    this.controlChangeEmitter();\n  }\n\n  wasClickedOnPicker(event: any): void {\n    if (!this.dialogPicker || !this.iconTimepicker) {\n      return;\n    }\n    if (\n      !this.dialogPicker.nativeElement.contains(event.target) &&\n      !this.iconTimepicker.buttonElement.nativeElement.contains(event.target)\n    ) {\n      this.closeTimer();\n    }\n  }\n\n  hasInvalidClass() {\n    return (\n      (this.el.nativeElement.classList.contains('ng-invalid') &&\n        this.el.nativeElement.classList.contains('ng-dirty') &&\n        (this.hasValue() || (this.showErrorMessageRequired && (this.required || this.hasValidatorRequired)))) ||\n      this.hasValidationValue()\n    );\n  }\n\n  // Retorna true se algum segmento possui valor.\n  hasValue(): boolean {\n    return this.hourDisplay !== '' || this.minuteDisplay !== '' || this.secondDisplay !== '';\n  }\n\n  getErrorPattern() {\n    return this.errorPattern !== '' && this.hasInvalidClass() ? this.errorPattern : '';\n  }\n\n  clear() {\n    this.valueBeforeChange = this.timeValue;\n    this.timeValue = '';\n    this.clearValidationValue();\n    this.hourDisplay = '';\n    this.minuteDisplay = '';\n    this.secondDisplay = '';\n    this.periodDisplay = this.getDefaultPeriodDisplay();\n    this.ariaLiveMessage = '';\n    if (this.isGeneratedErrorPattern(this.errorPattern)) {\n      this.errorPattern = '';\n    }\n    if (this.inputEl?.nativeElement) {\n      this.inputEl.nativeElement.value = '';\n    }\n    if (this.minuteInputEl?.nativeElement) {\n      this.minuteInputEl.nativeElement.value = '';\n    }\n    if (this.secondInputEl?.nativeElement) {\n      this.secondInputEl.nativeElement.value = '';\n    }\n    this.callOnChange('');\n    this.validateModel('');\n    this.controlChangeEmitter();\n  }\n\n  clearAndFocus() {\n    this.clear();\n    setTimeout(() => {\n      this.focus();\n    }, 200);\n  }\n\n  eventOnBlur($event: any) {\n    // Mantido para compatibilidade. O blur de segmento e tratado por onSegmentBlur.\n    this.onTouchedModel?.();\n    this.onblur.emit();\n    this.validateAndUpdateModel();\n    this.controlChangeEmitter();\n  }\n\n  eventOnClick($event: any) {\n    if (this.verifyMobile()) {\n      $event.target.blur();\n      setTimeout(() => this.togglePicker(), 0);\n    }\n  }\n\n  onKeyDown(event: KeyboardEvent): void {\n    const isFieldFocused = this.el.nativeElement.contains(document.activeElement);\n    if (isFieldFocused) {\n      this.keydown.emit(event);\n    }\n  }\n\n  onKeyPress(event: any) {\n    if (event.key === 'Tab' && event.shiftKey && !this.visible && this.clean && this.hasValue()) {\n      this.iconClean.nativeElement?.focus();\n      event.preventDefault();\n      return;\n    }\n\n    if (event.key === 'Tab' && event.shiftKey && !this.visible) {\n      this.focusLastSegment();\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n  // Trata o input em um campo de segmento (hora, minuto, segundo).\n  onSegmentInput(event: Event, segment: PoTimepickerSegment): void {\n    const input = event.target as HTMLInputElement;\n    // Permitir apenas digitos\n    input.value = input.value.replace(/\\D/g, '');\n\n    switch (segment) {\n      case 'hour':\n        this.hourDisplay = input.value;\n        break;\n      case 'minute':\n        this.minuteDisplay = input.value;\n        break;\n      case 'second':\n        this.secondDisplay = input.value;\n        break;\n    }\n\n    // Avancar automaticamente ao digitar 2 digitos\n    if (input.value.length >= 2) {\n      this.advanceToNextSegment(segment);\n    }\n\n    this.updateCombinedValue();\n  }\n\n  // Trata keydown em um campo de segmento para navegacao.\n  onSegmentKeydown(event: KeyboardEvent, segment: PoTimepickerSegment): void {\n    if (this.handleSegmentNavigation(event, segment)) {\n      return;\n    }\n\n    if (this.handleSegmentArrowKeys(event, segment)) {\n      return;\n    }\n\n    if (this.handleSegmentNonNumericBlock(event)) {\n      return;\n    }\n\n    // Se Tab no ultimo segmento com picker aberto, focar o timer popup.\n    if (event.key === 'Tab' && !event.shiftKey && this.visible && this.isLastSegment(segment)) {\n      this.focusTimer(event);\n    }\n\n    this.keydown.emit(event);\n  }\n\n  private handleSegmentNavigation(event: KeyboardEvent, segment: PoTimepickerSegment): boolean {\n    const input = event.target as HTMLInputElement;\n\n    if (event.key === 'Tab' && event.shiftKey && this.visible && segment !== 'hour') {\n      this.advanceToPreviousSegment(segment);\n      event.preventDefault();\n      return true;\n    }\n\n    if (event.key === 'Backspace' && input.value === '' && input.selectionStart === 0) {\n      this.advanceToPreviousSegment(segment);\n      event.preventDefault();\n      return true;\n    }\n\n    if (event.key === 'ArrowLeft' && input.selectionStart === 0) {\n      this.advanceToPreviousSegment(segment);\n      event.preventDefault();\n      return true;\n    }\n\n    if (event.key === 'ArrowRight' && input.selectionStart === input.value.length) {\n      this.advanceToNextSegment(segment);\n      event.preventDefault();\n      return true;\n    }\n\n    return false;\n  }\n\n  private handleSegmentArrowKeys(event: KeyboardEvent, segment: PoTimepickerSegment): boolean {\n    if (event.key !== 'ArrowUp' && event.key !== 'ArrowDown') {\n      return false;\n    }\n\n    event.preventDefault();\n    if (!this.readonly) {\n      this.incrementSegment(segment, event.key === 'ArrowUp' ? 1 : -1);\n    }\n    return true;\n  }\n\n  private handleSegmentNonNumericBlock(event: KeyboardEvent): boolean {\n    if (event.key.length === 1 && !/\\d/.test(event.key) && !event.ctrlKey && !event.metaKey) {\n      event.preventDefault();\n      return true;\n    }\n    return false;\n  }\n\n  // Trata blur em um campo de segmento.\n  onSegmentBlur(event: FocusEvent): void {\n    this.isSegmentFocused = false;\n\n    const sourceInput = event.target as HTMLInputElement;\n    const normalizedSegmentOnBlur = this.normalizeSingleDigitSegment(sourceInput);\n\n    // Verificar se o foco moveu para outro elemento dentro do timepicker\n    const relatedTarget = event.relatedTarget as HTMLElement;\n    const isInternalFocus = relatedTarget && this.el.nativeElement.contains(relatedTarget);\n\n    if (normalizedSegmentOnBlur) {\n      this.updateCombinedValue();\n    }\n\n    if (isInternalFocus && this.shouldCommitForInternalFocusTarget(relatedTarget)) {\n      this.onTouchedModel?.();\n      this.validateAndUpdateModel();\n      this.controlChangeEmitter();\n      return;\n    }\n\n    if (!isInternalFocus) {\n      this.onTouchedModel?.();\n      this.validateAndUpdateModel();\n      this.controlChangeEmitter();\n\n      if (this.visible) {\n        this.closeTimer(false, true);\n      }\n    }\n  }\n\n  // Trata clique no wrapper do campo para focar o primeiro input de segmento.\n  onFieldClick(event: MouseEvent): void {\n    const target = event.target as HTMLElement;\n    // Focar apenas se clicou no wrapper do campo, nao em um input de segmento ou icone do botao do timer, e se nao estiver desabilitado ou readonly\n    if (\n      !target.classList.contains('po-timepicker-segment-input') &&\n      target !== this.iconTimepicker.buttonElement?.nativeElement &&\n      target !== this.iconTimepicker.buttonElement?.nativeElement.querySelector('i') &&\n      !this.isDisabled &&\n      !this.readonly\n    ) {\n      this.focus();\n    }\n  }\n\n  // Trata foco em um campo de segmento.\n  onSegmentFocus(): void {\n    this.isSegmentFocused = true;\n  }\n\n  // Trata keydown no toggle de periodo AM/PM.\n  onPeriodSegmentKeydown(event: KeyboardEvent): void {\n    if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n      event.preventDefault();\n      if (!this.readonly && !this.isDisabled) {\n        this.togglePeriod();\n      }\n      return;\n    }\n\n    if (event.key === 'Backspace' || event.key === 'Delete') {\n      event.preventDefault();\n      return;\n    }\n\n    if (event.key === 'Tab' && event.shiftKey) {\n      event.preventDefault();\n      if (this.showSeconds && this.secondInputEl?.nativeElement) {\n        this.secondInputEl.nativeElement.focus();\n      } else if (this.minuteInputEl?.nativeElement) {\n        this.minuteInputEl.nativeElement.focus();\n      }\n      return;\n    }\n\n    if (event.key === 'Tab' && !event.shiftKey && this.visible) {\n      this.focusTimer(event);\n    }\n\n    if (event.key.length === 1 && !event.ctrlKey && !event.metaKey) {\n      event.preventDefault();\n    }\n  }\n\n  // Trata clique no toggle de periodo AM/PM.\n  onPeriodSegmentClick(event: MouseEvent): void {\n    if (!this.readonly && !this.isDisabled) {\n      this.togglePeriod();\n    }\n  }\n\n  refreshValue(value: string) {\n    if (value && this.inputEl) {\n      this.updateInputDisplay(this.normalizeTimeValueForDisplay(value));\n    }\n  }\n\n  /**\n   * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n   */\n  showAdditionalHelp(): boolean {\n    this.displayAdditionalHelp = !this.displayAdditionalHelp;\n    const helper = this.poHelperComponent();\n    const isHelpEvt = this.isAdditionalHelpEventTriggered();\n    if (!this.label && (helper || isHelpEvt)) {\n      if (typeof helper !== 'string' && typeof helper?.eventOnClick === 'function') {\n        helper.eventOnClick();\n        return;\n      }\n      if (this.helperEl?.helperIsVisible()) {\n        this.helperEl?.closeHelperPopover();\n        return;\n      }\n      this.helperEl?.openHelperPopover();\n      return;\n    }\n    return this.displayAdditionalHelp;\n  }\n\n  writeValue(value: any) {\n    if (this.inputEl && value) {\n      if (typeof value === 'string' && this.isValidTimeString(value)) {\n        this.timeValue = this.normalizeTimeValueForDisplay(value);\n        this.clearValidationValue();\n        this.updateInputDisplay(this.timeValue);\n      } else {\n        this.clearSegmentDisplays();\n        this.clearValidationValue();\n        this.timeValue = '';\n      }\n    } else if (this.inputEl) {\n      if (this.hasValidationValue() && this.hasValue()) {\n        this.timeValue = '';\n        this.valueBeforeChange = this.timeValue;\n        return;\n      }\n\n      this.clearSegmentDisplays();\n      this.clearValidationValue();\n      this.timeValue = '';\n    }\n\n    this.valueBeforeChange = this.timeValue;\n  }\n\n  verifyMobile() {\n    return isMobile();\n  }\n\n  handleCleanKeyboardTab(event: KeyboardEvent) {\n    if (this.shouldHandleTab(event)) {\n      this.focusTimer(event);\n    }\n  }\n\n  onTimerKeyDown(event: KeyboardEvent): void {\n    if (!this.visible) {\n      return;\n    }\n\n    if (event.key === 'Escape') {\n      event.preventDefault();\n      event.stopPropagation();\n      this.iconTimepicker.buttonElement?.nativeElement.focus();\n      this.closeTimer(false);\n    }\n  }\n\n  onTimerBoundaryTab(payload: { direction: 'forward' | 'backward'; event: KeyboardEvent }): void {\n    if (!this.visible) {\n      return;\n    }\n\n    payload.event.preventDefault();\n    payload.event.stopPropagation();\n    this.iconTimepicker.buttonElement?.nativeElement.focus();\n    this.closeTimer(false);\n  }\n\n  // Trata focusout no popup do timer para fechar quando o foco sai completamente.\n  onTimerFocusOut(event: FocusEvent): void {\n    if (!this.visible) {\n      return;\n    }\n\n    const relatedTarget = event.relatedTarget as HTMLElement;\n    const dialogEl = this.dialogPicker?.nativeElement;\n\n    // Se o novo alvo de foco esta fora do popup do timer E fora do campo do timepicker, fechar o timer.\n    if (relatedTarget && dialogEl && !dialogEl.contains(relatedTarget)) {\n      // Permitir que o foco mova para elementos dentro do componente timepicker (botao, clean, segmentos)\n      if (!this.el.nativeElement.contains(relatedTarget)) {\n        this.closeTimer(false);\n      }\n    } else if (!relatedTarget && dialogEl) {\n      // relatedTarget is null when focus goes outside the document\n      setTimeout(() => {\n        if (\n          this.visible &&\n          !this.el.nativeElement.contains(document.activeElement) &&\n          !dialogEl.contains(document.activeElement)\n        ) {\n          this.closeTimer(false);\n        }\n      });\n    }\n  }\n\n  setHelper(label?: string) {\n    return setHelperSettings(label, null, this.poHelperComponent(), this.size);\n  }\n\n  /**\n   * Atualiza os valores exibidos nos inputs de segmento, convertendo para formato 12h com AM/PM quando necessário.\n   * O timeValue interno sempre armazena em formato 24h (ISO), mas a exibição pode ser 12h.\n   */\n  private updateInputDisplay(time: string): void {\n    if (!time) {\n      this.clearSegmentDisplays();\n      return;\n    }\n\n    const parts = time.split(':');\n\n    if (this.is12HourFormat && this.isValidTimeString(time)) {\n      let hours = parseInt(parts[0], 10);\n      const period = hours >= 12 ? 'PM' : 'AM';\n\n      if (hours === 0) {\n        hours = 12;\n      } else if (hours > 12) {\n        hours = hours - 12;\n      }\n\n      this.hourDisplay = hours.toString().padStart(2, '0');\n      this.minuteDisplay = parts[1] || '';\n      this.secondDisplay = parts[2] || '';\n      this.periodDisplay = period;\n    } else {\n      this.hourDisplay = parts[0] || '';\n      this.minuteDisplay = parts[1] || '';\n      this.secondDisplay = parts[2] || '';\n      this.periodDisplay = '';\n    }\n\n    this.syncSegmentInputElements();\n  }\n\n  /** Atualiza a mensagem aria-live com o valor do horario para anuncio por leitores de tela. */\n  private updateAriaLiveMessage(time: string): void {\n    if (!time) {\n      this.ariaLiveMessage = '';\n      return;\n    }\n\n    const displayTime = this.is12HourFormat ? this.buildDisplayTime() : time;\n    this.ariaLiveMessage = `${this.literals.selectedTime}: ${displayTime}`;\n  }\n\n  /** Constroi a string de horario no formato de exibicao atual (12h ou 24h). */\n  private buildDisplayTime(): string {\n    const hour = this.hourDisplay || '--';\n    const minute = this.minuteDisplay || '--';\n    let display = `${hour}:${minute}`;\n\n    if (this.showSeconds) {\n      const second = this.secondDisplay || '--';\n      display += `:${second}`;\n    }\n\n    if (this.is12HourFormat && this.periodDisplay) {\n      display += ` ${this.periodDisplay}`;\n    }\n\n    return display;\n  }\n\n  /** Normaliza valores `HH:mm` para `HH:mm:00` quando segundos estão habilitados. */\n  private normalizeTimeValueForDisplay(value: string): string {\n    if (this.showSeconds && typeof value === 'string' && value.length === 5) {\n      return `${value}:00`;\n    }\n\n    return value;\n  }\n\n  /** Limpa todos os valores de exibicao dos segmentos e seus respectivos elementos input. */\n  private clearSegmentDisplays(): void {\n    this.hourDisplay = '';\n    this.minuteDisplay = '';\n    this.secondDisplay = '';\n    this.periodDisplay = this.getDefaultPeriodDisplay();\n    this.syncSegmentInputElements();\n  }\n\n  private getDefaultPeriodDisplay(): string {\n    return this.is12HourFormat ? 'AM' : '';\n  }\n\n  /** Sincroniza os valores dos elementos input nativos com as propriedades de exibicao. */\n  private syncSegmentInputElements(): void {\n    requestAnimationFrame(() => {\n      if (this.inputEl?.nativeElement) {\n        this.inputEl.nativeElement.value = this.hourDisplay;\n      }\n      if (this.minuteInputEl?.nativeElement) {\n        this.minuteInputEl.nativeElement.value = this.minuteDisplay;\n      }\n      if (this.secondInputEl?.nativeElement) {\n        this.secondInputEl.nativeElement.value = this.secondDisplay;\n      }\n\n      const viewRef = this.cd as ViewRef;\n      if (!viewRef.destroyed) {\n        this.cd.markForCheck();\n      }\n    });\n  }\n\n  /** Avanca o foco para o proximo input de segmento. */\n  private advanceToNextSegment(current: PoTimepickerSegment): void {\n    if (current === 'hour' && this.minuteInputEl?.nativeElement) {\n      this.minuteInputEl.nativeElement.focus();\n      this.minuteInputEl.nativeElement.select();\n    } else if (current === 'minute' && this.showSeconds && this.secondInputEl?.nativeElement) {\n      this.secondInputEl.nativeElement.focus();\n      this.secondInputEl.nativeElement.select();\n    } else if (\n      this.is12HourFormat &&\n      this.periodInputEl?.nativeElement &&\n      ((current === 'minute' && !this.showSeconds) || current === 'second')\n    ) {\n      this.periodInputEl.nativeElement.focus();\n    }\n  }\n\n  /** Avanca o foco para o input de segmento anterior. */\n  private advanceToPreviousSegment(current: PoTimepickerSegment): void {\n    if (current === 'minute' && this.inputEl?.nativeElement) {\n      this.inputEl.nativeElement.focus();\n    } else if (current === 'second' && this.minuteInputEl?.nativeElement) {\n      this.minuteInputEl.nativeElement.focus();\n    }\n  }\n\n  /** Foca o ultimo input de segmento visivel. */\n  private focusLastSegment(): void {\n    if (this.is12HourFormat && this.periodInputEl?.nativeElement) {\n      this.periodInputEl.nativeElement.focus();\n    } else if (this.showSeconds && this.secondInputEl?.nativeElement) {\n      this.secondInputEl.nativeElement.focus();\n    } else if (this.minuteInputEl?.nativeElement) {\n      this.minuteInputEl.nativeElement.focus();\n    } else {\n      this.focus();\n    }\n  }\n\n  /** Verifica se o segmento informado e o ultimo visivel. */\n  private isLastSegment(segment: PoTimepickerSegment): boolean {\n    if (this.is12HourFormat) {\n      return false;\n    }\n    if (this.showSeconds) {\n      return segment === 'second';\n    }\n    return segment === 'minute';\n  }\n\n  /** Alterna entre AM e PM no display de periodo e atualiza o modelo. */\n  private togglePeriod(): void {\n    const currentPeriod = this.periodDisplay || this.getDefaultPeriodDisplay();\n    this.periodDisplay = currentPeriod === 'AM' ? 'PM' : 'AM';\n    this.updateCombinedValue();\n  }\n\n  /** Incrementa ou decrementa o valor de um segmento na direcao indicada (+1 ou -1), respeitando limites e intervalos. */\n  private incrementSegment(segment: PoTimepickerSegment, direction: number): void {\n    switch (segment) {\n      case 'hour':\n        this.incrementHourSegment(direction);\n        break;\n      case 'minute':\n        this.incrementIntervalSegment(direction, this.minuteInterval || 1, 'minuteDisplay', this.minuteInputEl);\n        break;\n      case 'second':\n        this.incrementIntervalSegment(direction, this.secondInterval || 1, 'secondDisplay', this.secondInputEl);\n        break;\n    }\n\n    this.updateCombinedValue();\n  }\n\n  private incrementHourSegment(direction: number): void {\n    const max = this.is12HourFormat ? 12 : 23;\n    const min = this.is12HourFormat ? 1 : 0;\n    let current = this.hourDisplay ? parseInt(this.hourDisplay, 10) : min - direction;\n\n    current += direction;\n\n    if (current > max || current < min) {\n      current = current > max ? min : max;\n      if (this.is12HourFormat) {\n        this.periodDisplay = (this.periodDisplay || this.getDefaultPeriodDisplay()) === 'AM' ? 'PM' : 'AM';\n      }\n    }\n\n    this.hourDisplay = current.toString().padStart(2, '0');\n    if (this.inputEl?.nativeElement) {\n      this.inputEl.nativeElement.value = this.hourDisplay;\n    }\n  }\n\n  private incrementIntervalSegment(\n    direction: number,\n    interval: number,\n    displayProp: 'minuteDisplay' | 'secondDisplay',\n    inputRef: ElementRef\n  ): void {\n    let current = this[displayProp] ? parseInt(this[displayProp], 10) : -interval * direction;\n\n    current += interval * direction;\n    if (current >= 60) {\n      current = 0;\n    } else if (current < 0) {\n      current = 60 - interval;\n    }\n\n    this[displayProp] = current.toString().padStart(2, '0');\n    if (inputRef?.nativeElement) {\n      inputRef.nativeElement.value = this[displayProp];\n    }\n  }\n\n  private normalizeSingleDigitSegment(input: HTMLInputElement | null): boolean {\n    if (!input || !input.classList.contains('po-timepicker-segment-input') || input.value.length !== 1) {\n      return false;\n    }\n\n    const normalizedValue = input.value.padStart(2, '0');\n    input.value = normalizedValue;\n\n    if (input === this.inputEl?.nativeElement) {\n      this.hourDisplay = normalizedValue;\n    } else if (input === this.minuteInputEl?.nativeElement) {\n      this.minuteDisplay = normalizedValue;\n    } else if (input === this.secondInputEl?.nativeElement) {\n      this.secondDisplay = normalizedValue;\n    }\n\n    return true;\n  }\n\n  private shouldCommitForInternalFocusTarget(target: HTMLElement | null): boolean {\n    if (!target) {\n      return false;\n    }\n\n    return (\n      this.iconTimepicker?.buttonElement?.nativeElement?.contains(target) ||\n      this.iconClean?.nativeElement?.contains(target) ||\n      !!target.closest('.po-field-helper-button')\n    );\n  }\n\n  /** Combina os valores dos segmentos em uma string de horario e atualiza o modelo. */\n  private updateCombinedValue(): void {\n    if (!this.areSegmentsComplete()) {\n      this.clearValidationValue();\n      if (this.isGeneratedErrorPattern(this.errorPattern)) {\n        this.errorPattern = '';\n      }\n      this.timeValue = '';\n      this.callOnChange('');\n      this.validateModel(this.timeValue);\n      return;\n    }\n\n    const displayCombined = this.buildDisplayCombined();\n\n    if (this.is12HourFormat && !this.isValidTimeString(displayCombined, 1, 12)) {\n      this.applyInputValidationError(displayCombined, false, { minHour: 1, maxHour: 12 });\n      return;\n    }\n\n    const combined = this.is12HourFormat ? this.convertDisplayTo24h(displayCombined) : displayCombined;\n    this.updateTimeFromInput(combined);\n  }\n\n  /** Monta a string parcial combinando os segmentos preenchidos e vazios. */\n  private buildPartialCombined(): string {\n    const hour = this.hourDisplay || '';\n    const minute = this.minuteDisplay || '';\n    let combined = `${hour}:${minute}`;\n\n    if (this.showSeconds) {\n      const second = this.secondDisplay || '';\n      combined += `:${second}`;\n    }\n\n    return combined;\n  }\n\n  private areSegmentsComplete(): boolean {\n    if (this.hourDisplay.length < 2 || this.minuteDisplay.length < 2) {\n      return false;\n    }\n    return !(this.showSeconds && this.secondDisplay.length < 2);\n  }\n\n  private buildDisplayCombined(): string {\n    const displayHour = this.hourDisplay.padStart(2, '0');\n    const minute = this.minuteDisplay.padStart(2, '0');\n    let combined = `${displayHour}:${minute}`;\n\n    if (this.showSeconds) {\n      const second = this.secondDisplay.padStart(2, '0');\n      combined += `:${second}`;\n    }\n\n    return combined;\n  }\n\n  private convertDisplayTo24h(displayCombined: string): string {\n    let hourValue = parseInt(this.hourDisplay, 10);\n    const currentPeriod = this.periodDisplay || this.getDefaultPeriodDisplay();\n    this.periodDisplay = currentPeriod;\n\n    if (currentPeriod === 'AM' && hourValue === 12) {\n      hourValue = 0;\n    } else if (currentPeriod === 'PM' && hourValue !== 12) {\n      hourValue = hourValue + 12;\n    }\n\n    const hour = hourValue.toString().padStart(2, '0');\n    const minuteAndSecond = displayCombined.substring(3);\n    return `${hour}:${minuteAndSecond}`;\n  }\n\n  /** Completa valores de segmento incompletos e atualiza o modelo no blur. */\n  private validateAndUpdateModel(): void {\n    if (this.hourDisplay && this.hourDisplay.length === 1) {\n      this.hourDisplay = this.hourDisplay.padStart(2, '0');\n      if (this.inputEl?.nativeElement) {\n        this.inputEl.nativeElement.value = this.hourDisplay;\n      }\n    }\n    if (this.minuteDisplay && this.minuteDisplay.length === 1) {\n      this.minuteDisplay = this.minuteDisplay.padStart(2, '0');\n      if (this.minuteInputEl?.nativeElement) {\n        this.minuteInputEl.nativeElement.value = this.minuteDisplay;\n      }\n    }\n    if (this.secondDisplay && this.secondDisplay.length === 1) {\n      this.secondDisplay = this.secondDisplay.padStart(2, '0');\n      if (this.secondInputEl?.nativeElement) {\n        this.secondInputEl.nativeElement.value = this.secondDisplay;\n      }\n    }\n\n    this.updateCombinedValue();\n\n    if (!this.areSegmentsComplete() && this.hasValue()) {\n      const partial = this.buildPartialCombined();\n      this.applyInputValidationError(partial, false);\n    }\n  }\n\n  private updateTimeFromInput(rawValue: string): void {\n    if (!this.isValidTimeString(rawValue)) {\n      this.applyInputValidationError(rawValue, false);\n      return;\n    }\n\n    if (!this.isTimeInRange(rawValue)) {\n      this.applyInputValidationError(rawValue, true);\n      return;\n    }\n\n    this.clearValidationValue();\n    if (this.isGeneratedErrorPattern(this.errorPattern)) {\n      this.errorPattern = '';\n    }\n\n    this.timeValue = rawValue;\n    this.updateAriaLiveMessage(rawValue);\n    this.callOnChange(rawValue);\n    this.validateModel(rawValue);\n  }\n\n  private applyInputValidationError(\n    rawValue: string,\n    isOutOfRange: boolean,\n    hourRange?: { minHour: number; maxHour: number }\n  ): void {\n    this.timeValue = '';\n    this.setValidationValue(rawValue, hourRange?.minHour, hourRange?.maxHour);\n    this.errorPattern = isOutOfRange ? this.getDefaultOutOfRangeTimeMessage() : this.getDefaultInvalidTimeMessage();\n    this.callOnChange('');\n    this.validateModel(rawValue);\n  }\n\n  private controlChangeEmitter() {\n    const currentValue = this.formatOutput(this.timeValue) || this.timeValue;\n\n    if (currentValue !== this.valueBeforeChange) {\n      this.valueBeforeChange = currentValue;\n\n      clearTimeout(this.timeoutChange);\n      this.timeoutChange = setTimeout(() => {\n        this.onchange.emit(currentValue);\n      }, 200);\n    }\n  }\n\n  /**\n   * Completa automaticamente os segundos com `:00` ao fechar o timer\n   * quando `showSeconds=true` e o usuario preencheu apenas hora e minuto (HH:mm).\n   *\n   * Esse comportamento emite `callOnChange` e `controlChangeEmitter`, o que\n   * significa que formularios reativos observando `valueChanges` receberao\n   * uma emissao adicional no momento do fechamento do timer.\n   */\n  private completeSecondsOnClose(): void {\n    if (\n      !this.showSeconds ||\n      !this.timeValue ||\n      this.timeValue.length !== 5 ||\n      !this.isValidTimeString(this.timeValue)\n    ) {\n      return;\n    }\n\n    const committedTime = `${this.timeValue}:00`;\n    this.timeValue = committedTime;\n    this.updateInputDisplay(committedTime);\n\n    this.callOnChange(committedTime);\n    this.controlChangeEmitter();\n  }\n\n  private initializeListeners() {\n    this.clickListener = this.renderer.listen('document', 'click', (event: MouseEvent) => {\n      this.wasClickedOnPicker(event);\n    });\n\n    this.eventResizeListener = this.renderer.listen('window', 'resize', () => {\n      this.closeTimer();\n    });\n\n    window.addEventListener('scroll', this.onScroll, true);\n  }\n\n  private isAdditionalHelpEventTriggered(): boolean {\n    return this.additionalHelpEventTrigger === 'event';\n  }\n\n  private readonly onScroll = (): void => {\n    this.controlPosition.adjustPosition(poTimerPositionDefault);\n  };\n\n  private removeListeners() {\n    if (this.clickListener) {\n      this.clickListener();\n    }\n\n    if (this.eventResizeListener) {\n      this.eventResizeListener();\n    }\n\n    window.removeEventListener('scroll', this.onScroll, true);\n  }\n\n  private setDialogPickerStyleDisplay(value: string): void {\n    if (this.dialogPicker?.nativeElement) {\n      this.dialogPicker.nativeElement.style.display = value;\n    }\n  }\n\n  private setTimerPosition(): void {\n    this.setDialogPickerStyleDisplay('block');\n    this.adjustTimerPosition();\n  }\n\n  protected adjustTimerPosition(): void {\n    if (this?.dialogPicker?.nativeElement && this.visible) {\n      requestAnimationFrame(() => {\n        const scrollHeight =\n          this.dialogPicker.nativeElement.querySelector('po-timer')?.scrollHeight ??\n          this.dialogPicker.nativeElement.scrollHeight;\n        const scrollWidth =\n          this.dialogPicker.nativeElement.querySelector('po-timer')?.scrollWidth ??\n          this.dialogPicker.nativeElement.scrollWidth;\n\n        this.dialogPicker.nativeElement.style.height = scrollHeight + 'px';\n        this.dialogPicker.nativeElement.style.width = scrollWidth + 'px';\n\n        this.controlPosition.setElements(\n          this.dialogPicker.nativeElement,\n          poTimerContentOffset,\n          this.timepickerFieldEl || this.inputEl,\n          ['top-left', 'top-right', 'bottom-left', 'bottom-right'],\n          false,\n          true\n        );\n        this.controlPosition.adjustPosition(poTimerPositionDefault);\n      });\n    }\n  }\n\n  private shouldHandleTab(event: KeyboardEvent): boolean {\n    return this.visible && !event.shiftKey;\n  }\n\n  private focusTimer(event: KeyboardEvent): void {\n    if (!this.timerComponent) {\n      return;\n    }\n\n    event.preventDefault();\n    this.timerComponent.focusFirstVisibleCell();\n  }\n}\n","@let poHelper = setHelper(label);\n<po-field-container\n  [class.po-timepicker-container-disabled]=\"isDisabled\"\n  [p-disabled]=\"isDisabled\"\n  [p-id]=\"id\"\n  [p-label]=\"label\"\n  [p-optional]=\"optional\"\n  [p-required]=\"required\"\n  [p-show-required]=\"showRequired\"\n  [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n  [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n  [p-size]=\"size\"\n  [p-text-wrap]=\"labelTextWrap()\"\n  [p-compact-label]=\"compactLabel()\"\n>\n  <div #outerContainer>\n    <div cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\" class=\"po-field-container-content\">\n      <div class=\"po-field-container-input\">\n        <div\n          #timepickerField\n          class=\"po-timepicker-field po-input\"\n          [class.po-input-icon-right]=\"clean && hasValue() && !isDisabled\"\n          [class.po-timepicker-field-disabled]=\"isDisabled\"\n          [class.po-timepicker-field-readonly]=\"readonly\"\n          [class.po-timepicker-field-focused]=\"isSegmentFocused\"\n          [attr.data-focused-element]=\"!isDisabled\"\n          [attr.data-inactive-component]=\"isDisabled || readonly\"\n          [attr.p-size]=\"size\"\n          [attr.data-append-in-body]=\"appendBox\"\n          [attr.aria-label]=\"label || literals.field\"\n          role=\"group\"\n          (click)=\"onFieldClick($event)\"\n          (keydown)=\"onKeyDown($event)\"\n        >\n          <div class=\"po-timepicker-field-segment\" [attr.data-value]=\"hourDisplay || hourPlaceholder || '  '\">\n            <input\n              #inp\n              class=\"po-timepicker-segment-input\"\n              maxlength=\"2\"\n              type=\"text\"\n              inputmode=\"numeric\"\n              role=\"spinbutton\"\n              [attr.aria-label]=\"literals.hour\"\n              [attr.aria-valuenow]=\"hourDisplay ? +hourDisplay : null\"\n              [attr.aria-valuemin]=\"is12HourFormat ? 1 : 0\"\n              [attr.aria-valuemax]=\"is12HourFormat ? 12 : 23\"\n              [attr.aria-valuetext]=\"hourDisplay || null\"\n              [attr.name]=\"name\"\n              [autocomplete]=\"autocomplete\"\n              [disabled]=\"isDisabled\"\n              [id]=\"id\"\n              [readonly]=\"readonly\"\n              [required]=\"required\"\n              [placeholder]=\"isDisabled ? '' : hourPlaceholder\"\n              (input)=\"onSegmentInput($event, 'hour')\"\n              (blur)=\"onSegmentBlur($event)\"\n              (focus)=\"onSegmentFocus()\"\n              (click)=\"eventOnClick($event)\"\n              (keydown)=\"onSegmentKeydown($event, 'hour')\"\n            />\n          </div>\n\n          <div class=\"po-timepicker-field-separator\">:</div>\n\n          <div class=\"po-timepicker-field-segment\" [attr.data-value]=\"minuteDisplay || minutePlaceholder || '  '\">\n            <input\n              #minuteInput\n              class=\"po-timepicker-segment-input\"\n              maxlength=\"2\"\n              type=\"text\"\n              inputmode=\"numeric\"\n              role=\"spinbutton\"\n              [attr.aria-label]=\"literals.minute\"\n              [attr.aria-valuenow]=\"minuteDisplay ? +minuteDisplay : null\"\n              aria-valuemin=\"0\"\n              aria-valuemax=\"59\"\n              [attr.aria-valuetext]=\"minuteDisplay || null\"\n              [disabled]=\"isDisabled\"\n              [readonly]=\"readonly\"\n              [placeholder]=\"isDisabled ? '' : minutePlaceholder\"\n              (input)=\"onSegmentInput($event, 'minute')\"\n              (blur)=\"onSegmentBlur($event)\"\n              (focus)=\"onSegmentFocus()\"\n              (click)=\"eventOnClick($event)\"\n              (keydown)=\"onSegmentKeydown($event, 'minute')\"\n            />\n          </div>\n\n          @if (showSeconds) {\n            <div class=\"po-timepicker-field-separator\">:</div>\n\n            <div class=\"po-timepicker-field-segment\" [attr.data-value]=\"secondDisplay || secondPlaceholder || '  '\">\n              <input\n                #secondInput\n                class=\"po-timepicker-segment-input\"\n                maxlength=\"2\"\n                type=\"text\"\n                inputmode=\"numeric\"\n                role=\"spinbutton\"\n                [attr.aria-label]=\"literals.second\"\n                [attr.aria-valuenow]=\"secondDisplay ? +secondDisplay : null\"\n                aria-valuemin=\"0\"\n                aria-valuemax=\"59\"\n                [attr.aria-valuetext]=\"secondDisplay || null\"\n                [disabled]=\"isDisabled\"\n                [readonly]=\"readonly\"\n                [placeholder]=\"isDisabled ? '' : secondPlaceholder\"\n                (input)=\"onSegmentInput($event, 'second')\"\n                (blur)=\"onSegmentBlur($event)\"\n                (focus)=\"onSegmentFocus()\"\n                (click)=\"eventOnClick($event)\"\n                (keydown)=\"onSegmentKeydown($event, 'second')\"\n              />\n            </div>\n          }\n\n          @if (is12HourFormat) {\n            <div\n              class=\"po-timepicker-field-segment po-timepicker-field-period\"\n              [attr.data-value]=\"periodDisplay || 'AM'\"\n            >\n              <input\n                #periodInput\n                class=\"po-timepicker-segment-input po-timepicker-period-input\"\n                maxlength=\"2\"\n                type=\"text\"\n                [value]=\"periodDisplay || 'AM'\"\n                [disabled]=\"isDisabled\"\n                [readonly]=\"true\"\n                [attr.tabindex]=\"isDisabled || readonly ? -1 : 0\"\n                role=\"button\"\n                [attr.aria-label]=\"periodDisplay || 'AM'\"\n                (keydown)=\"onPeriodSegmentKeydown($event)\"\n                (click)=\"onPeriodSegmentClick($event)\"\n                (blur)=\"onSegmentBlur($event)\"\n                (focus)=\"onSegmentFocus()\"\n              />\n            </div>\n          }\n\n          @if (loading) {\n            <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n          } @else {\n            <div class=\"po-field-icon-container-right\">\n              @if (clean && hasValue() && !isDisabled && !readonly) {\n                <po-clean\n                  #iconClean\n                  tabindex=\"0\"\n                  role=\"button\"\n                  [attr.aria-label]=\"literals.clean\"\n                  class=\"po-icon-input\"\n                  p-icon=\"ICON_FILL_CLEAR_CONTENT\"\n                  [p-element-ref]=\"cleanElementRef\"\n                  [p-size]=\"size\"\n                  (p-change-event)=\"clear()\"\n                  (keydown)=\"handleCleanKeyboardTab($event)\"\n                  (keydown.enter)=\"clearAndFocus(); $event.preventDefault()\"\n                  (keydown.space)=\"clearAndFocus(); $event.preventDefault()\"\n                >\n                </po-clean>\n                <div class=\"po-button-vertical-divider\"></div>\n              }\n              <po-button\n                #iconTimepicker\n                class=\"po-timepicker-button\"\n                [class.po-button-tertiary-danger]=\"getErrorPattern()\"\n                p-icon=\"ICON_CLOCK\"\n                p-kind=\"tertiary\"\n                [p-disabled]=\"isDisabled || readonly\"\n                [p-size]=\"size\"\n                (keydown)=\"onKeyPress($event)\"\n                (keydown.tab)=\"handleCleanKeyboardTab($event)\"\n                (p-click)=\"togglePicker(false)\"\n              >\n              </po-button>\n            </div>\n          }\n        </div>\n      </div>\n      @if ((!this.label && poHelperComponent()) || (!this.label && poHelper.hideAdditionalHelp)) {\n        <po-helper\n          #helperEl\n          class=\"po-field-helper-button\"\n          [p-size]=\"size\"\n          [p-helper]=\"poHelper.helperSettings\"\n          [p-disabled]=\"isDisabled\"\n          [p-append-in-body]=\"appendBox\"\n        >\n        </po-helper>\n      }\n    </div>\n\n    @if (appendBox) {\n      <ng-template\n        cdkConnectedOverlay\n        [cdkConnectedOverlayOrigin]=\"trigger\"\n        [cdkConnectedOverlayOpen]=\"true\"\n        [cdkConnectedOverlayDisableClose]=\"true\"\n      >\n        <ng-container *ngTemplateOutlet=\"sharedTimerContent\"></ng-container>\n      </ng-template>\n    } @else {\n      <ng-container *ngTemplateOutlet=\"sharedTimerContent\"></ng-container>\n    }\n\n    <ng-template #sharedTimerContent>\n      <div #dialogPicker [class.po-timepicker-popup-timer]=\"!verifyMobile()\" tabindex=\"-1\" [hidden]=\"!visible\">\n        @if (verifyMobile()) {\n          <div class=\"po-timepicker-timer-overlay\"></div>\n        }\n        <po-timer\n          #timer\n          [class.po-timepicker-timer-mobile]=\"verifyMobile()\"\n          [p-format]=\"format\"\n          [p-locale]=\"locale\"\n          [p-show-seconds]=\"showSeconds\"\n          [p-minute-interval]=\"minuteInterval\"\n          [p-second-interval]=\"secondInterval\"\n          [p-min-time]=\"minTime\"\n          [p-max-time]=\"maxTime\"\n          [p-size]=\"size\"\n          [p-value]=\"timeValue\"\n          (p-change)=\"timerSelected($event)\"\n          (p-boundary-tab)=\"onTimerBoundaryTab($event)\"\n          (keydown)=\"onTimerKeyDown($event)\"\n          (focusout)=\"onTimerFocusOut($event)\"\n        ></po-timer>\n      </div>\n    </ng-template>\n\n    <span class=\"po-sr-only\" aria-live=\"polite\" aria-atomic=\"true\">{{ ariaLiveMessage }}</span>\n  </div>\n\n  @if (!readonly) {\n    <po-field-container-bottom\n      [p-append-in-body]=\"appendBox\"\n      [p-help]=\"help\"\n      [p-disabled]=\"isDisabled\"\n      [p-error-pattern]=\"getErrorPattern()\"\n      [p-error-limit]=\"errorLimit\"\n      [p-size]=\"size\"\n    ></po-field-container-bottom>\n  }\n</po-field-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoButtonModule } from '../po-button/po-button.module';\n\nimport { PoTimerComponent } from './po-timer.component';\n\n/**\n * @description\n * Módulo do componente `po-timer`.\n */\n@NgModule({\n  imports: [CommonModule, PoButtonModule],\n  declarations: [PoTimerComponent],\n  exports: [PoTimerComponent]\n})\nexport class PoTimerModule {}\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\n\nimport { PoFieldContainerModule } from '../po-field-container/po-field-container.module';\nimport { PoCleanModule } from '../po-clean/po-clean.module';\nimport { PoButtonModule } from '../../po-button';\n\nimport { PoTimepickerComponent } from './po-timepicker.component';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PoHelperModule } from '../../po-helper';\nimport { PoLoadingModule } from '../../po-loading';\nimport { PoTimerModule } from '../../po-timer/po-timer.module';\n\n/**\n * @description\n *\n * Módulo do componente `po-timepicker`.\n */\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    PoFieldContainerModule,\n    OverlayModule,\n    PoCleanModule,\n    PoLoadingModule,\n    PoTimerModule,\n    PoButtonModule,\n    PoHelperModule\n  ],\n  exports: [PoTimepickerComponent],\n  declarations: [PoTimepickerComponent]\n})\nexport class PoTimepickerModule {}\n","export const poModalLiterals = {\n  en: {\n    close: 'Close'\n  },\n  es: {\n    close: 'Cerrar'\n  },\n  pt: {\n    close: 'Fechar'\n  },\n  ru: {\n    close: 'Закрыть'\n  }\n};\n","import { Directive, EventEmitter, HostBinding, HostListener, Input, Output, TemplateRef } from '@angular/core';\n\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from './../../utils/util';\nimport { PoModalAction } from './po-modal-action.interface';\n\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { poModalLiterals } from './po-modal.literals';\n\n/**\n * @description\n *\n * O componente `po-modal` é utilizado para incluir conteúdos rápidos e informativos.\n *\n * No cabeçalho do componente é possível definir um título e como também permite ocultar o ícone de fechamento da modal.\n *\n * Em seu corpo é possível definir um conteúdo informativo, podendo utilizar componentes como por exemplo `po-chart`,\n * `po-table` e os demais componentes do PO.\n *\n * No rodapé encontram-se os botões de ação primária e secundária, no qual permitem definir uma ação e um rótulo, bem como\n * definir um estado de carregando e / ou desabilitado e / ou definir o botão com o tipo *danger*. Também é possível utilizar\n * o componente [`PoModalFooter`](/documentation/po-modal-footer).\n *\n * > É possível fechar a modal através da tecla *ESC*, quando a propriedade `p-hide-close` não estiver habilitada.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                                  | Descrição                                             | Valor Padrão                                                                        |\n * |----------------------------------------------|-------------------------------------------------------|-------------------------------------------------------------------------------------|\n * | **Default Values**                           |                                                       |                                                                                     |\n * | `--border-radius` &nbsp;                     | Contém o valor do raio dos cantos do elemento&nbsp;   | `var(--border-radius-md)`                                                           |\n * | `--border-width` &nbsp;                      | Contém o valor da largura dos cantos do elemento&nbsp;| `var(--border-width-sm)`                                                            |\n * | `--border-color` &nbsp;                      | Cor da borda                                          | `var(--color-neutral-light-20)`                                                     |\n * | `--background` &nbsp;                        | Cor de background                                     | `var(--color-neutral-light-00)`                                                     |\n * | `--shadow` &nbsp;                            | Contém o valor da sombra do elemento                  | `var(--shadow-md)`                                                                  |\n * | `--color-overlay` &nbsp;                     | Cor da camada visual temporária                       | `var(--color-neutral-dark-80)`                                                      |\n * | `--opacity-overlay` &nbsp;                   | Opacidade da camada visual temporária &nbsp;          | `0.7`                                                                               |\n * | `--color-divider` &nbsp;                     | Cor das divisões do modal                             | `var(--color-neutral-light-20)`                                                     |\n * | `--padding-header` &nbsp;                    | Padding do header do modal                            | `var(--spacing-sm) var(--spacing-md)`                                               |\n * | `--padding-body` &nbsp;                      | Padding do corpo do modal                             | `var(--spacing-md) var(--spacing-2xl) var(--spacing-2xl) var(--spacing-md) `        |\n *\n */\n@Directive()\nexport class PoModalBaseComponent {\n  /** Título da modal. */\n  @Input('p-title') title: string;\n\n  /** Evento disparado ao fechar o modal. */\n  @Output('p-close') closeModal: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * Deve ser definido um objeto que implementa a interface `PoModalAction` contendo a label e a função da primeira ação.\n   * Caso esta propriedade não seja definida ou esteja incompleta, automaticamente será adicionado um botão de ação com\n   * a função de fechar a modal.\n   */\n  @Input('p-primary-action') primaryAction?: PoModalAction;\n\n  /** Deve ser definido um objeto que implementa a interface `PoModalAction` contendo a label e a função da segunda ação. */\n  @Input('p-secondary-action') secondaryAction?: PoModalAction;\n\n  language;\n  literals;\n\n  // Controla se a modal fica oculto ou visível, por padrão é oculto\n  isHidden = true;\n\n  // Event emmiter para quando a modal é fechada pelo 'X'.\n  public onXClosed = new EventEmitter<boolean>();\n  private _componentsSize?: string = undefined;\n  private _initialComponentsSize?: string = undefined;\n  private _hideClose?: boolean = false;\n  private _size?: string = 'md';\n\n  /**\n   * Define o tamanho da modal.\n   *\n   * Valores válidos:\n   *  - `sm` (pequeno)\n   *  - `md` (médio)\n   *  - `lg` (grande)\n   *  - `xl` (extra grande)\n   *  - `auto` (automático)\n   *\n   * > Quando informado `auto` a modal calculará automaticamente seu tamanho baseado em seu conteúdo.\n   * Caso não seja informado um valor, a modal terá o tamanho definido como `md`.\n   *\n   */\n  @Input('p-size') set size(value: string) {\n    const sizes = ['sm', 'md', 'lg', 'xl', 'auto'];\n    this._size = sizes.indexOf(value) > -1 ? value : 'md';\n  }\n\n  get size() {\n    return this._size;\n  }\n\n  /**\n   * Define o fechamento da modal ao clicar fora da mesma.\n   * Informe o valor `true` para ativar o fechamento ao clicar fora da modal.\n   */\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  clickOut?: boolean = false;\n  @Input('p-click-out') set setClickOut(value: boolean | string) {\n    this.clickOut = value === '' ? false : convertToBoolean(value);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos componentes de formulário no modal:\n   * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n   * - `medium`: aplica a medida medium de cada componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Oculta o ícone de fechar do cabeçalho da modal.\n   *\n   * > Caso a propriedade estiver habilitada, não será possível fechar a modal através da tecla *ESC*.\n   *\n   * @default `false`\n   */\n  @Input('p-hide-close') set hideClose(value: boolean) {\n    this._hideClose = convertToBoolean(value);\n  }\n\n  get hideClose() {\n    return this._hideClose;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Ícone exibido ao lado esquerdo do label do titúlo da modal.\n   *\n   * É possível usar qualquer um dos ícones da [Biblioteca de ícones](https://po-ui.io/icons). conforme exemplo abaixo:\n   * ```\n   * <po-modal p-icon=\"an an-user\" p-title=\"PO Modal\"></po-modal>\n   * ```\n   * Também é possível utilizar outras fontes de ícones, por exemplo a biblioteca *Font Awesome*, da seguinte forma:\n   * ```\n   * <po-modal p-icon=\"fa fa-podcast\" p-title=\"PO Modal\"></po-modal>\n   * ```\n   * Outra opção seria a customização do ícone através do `TemplateRef`, conforme exemplo abaixo:\n   * ```\n   * <po-modal [p-icon]=\"template\" p-title=\"PO Modal\"></po-modal>\n   *\n   * <ng-template #template>\n   *  <ion-icon style=\"font-size: inherit\" name=\"heart\"></ion-icon>\n   * </ng-template>\n   * ```\n   */\n  @Input('p-icon') icon?: string | TemplateRef<void>;\n\n  constructor(poLanguageService: PoLanguageService) {\n    this.language = poLanguageService.getShortLanguage();\n\n    this.literals = {\n      ...poModalLiterals[this.language]\n    };\n  }\n\n  /** Função para fechar a modal. */\n  close(xClosed = false): void {\n    this.closeModal.emit();\n\n    this.isHidden = true;\n    if (xClosed) {\n      this.onXClosed.emit(xClosed);\n    }\n  }\n\n  /** Função para abrir a modal. */\n  open(): void {\n    this.validPrimaryAction();\n\n    this.isHidden = false;\n  }\n\n  validPrimaryAction() {\n    if (!this.primaryAction) {\n      this.primaryAction = {\n        action: () => this.close(),\n        label: this.literals.close\n      };\n    }\n\n    if (!this.primaryAction['action']) {\n      this.primaryAction['action'] = () => this.close();\n    }\n    if (!this.primaryAction['label']) {\n      this.primaryAction['label'] = this.literals.close;\n    }\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialComponentsSize, PoFieldSize);\n    this._componentsSize = size;\n  }\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * @description\n *\n * O componente `po-modal-footer` pode ser utilizado para incluir os botões de ações no rodapé da [`PoModal`](/documentation/po-modal), bem como para dar liberdade ao desenvolvedor de incluir outros itens necessários.\n * > Como boa prática, deve-se observar a utilização de apenas um botão primário.\n *\n * ```\n * <po-modal p-title=\"Title Modal\" #modal>\n *  <po-modal-footer>\n *    <po-button p-label=\"Close\" (p-click)=\"modal.close()\"> </po-button>\n *    <po-button p-label=\"Clean\" (p-click)=\"clean()\"> </po-button>\n *    <po-button p-label=\"Confirm\" p-kind=\"primary\" (p-click)=\"confirm()\"> </po-button>\n *  </po-modal-footer>\n * </po-modal>\n * ```\n */\n@Component({\n  selector: 'po-modal-footer',\n  templateUrl: './po-modal-footer.component.html',\n  standalone: false\n})\nexport class PoModalFooterComponent {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita o alinhamento padrão, à direita, dos botões de ações que ficam no rodapé da [`PoModal`](/documentation/po-modal).\n   *\n   * > Caso a propriedade esteja habilitada, o alinhamento deverá ser a esquerda e pode ser personalizado.\n   *\n   * @default false\n   */\n  @Input('p-disabled-align') disabledAlign?: boolean = false;\n}\n","<div class=\"po-modal-footer\" [class.po-modal-footer-align-right]=\"!disabledAlign\">\n  <ng-content></ng-content>\n</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoActiveOverlayService {\n  activeOverlay: Array<string> = [];\n}\n","import { Component, ContentChild, ElementRef, ViewChild, inject } from '@angular/core';\n\nimport { uuid } from '../../utils/util';\nimport { PoModalBaseComponent } from './po-modal-base.component';\nimport { PoModalFooterComponent } from './po-modal-footer/po-modal-footer.component';\n\nimport { PoActiveOverlayService } from '../../services/po-active-overlay/po-active-overlay.service';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\n\n/**\n * @docsExtends PoModalBaseComponent\n *\n * @example\n *\n * <example name=\"po-modal-basic\" title=\"PO Modal Basic\">\n *  <file name=\"sample-po-modal-basic/sample-po-modal-basic.component.html\"> </file>\n *  <file name=\"sample-po-modal-basic/sample-po-modal-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-modal-labs\" title=\"PO Modal Labs\">\n *  <file name=\"sample-po-modal-labs/sample-po-modal-labs.component.html\"> </file>\n *  <file name=\"sample-po-modal-labs/sample-po-modal-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-modal-fruits-salad\" title=\"PO Modal - Fruits Salad\">\n *  <file name=\"sample-po-modal-fruits-salad/sample-po-modal-fruits-salad.component.html\"> </file>\n *  <file name=\"sample-po-modal-fruits-salad/sample-po-modal-fruits-salad.component.ts\"> </file>\n * </example>\n */\n\n@Component({\n  selector: 'po-modal',\n  templateUrl: './po-modal.component.html',\n  standalone: false\n})\nexport class PoModalComponent extends PoModalBaseComponent {\n  private readonly poActiveOverlayService = inject(PoActiveOverlayService);\n\n  @ViewChild('modalContent', { read: ElementRef }) modalContent: ElementRef;\n  @ViewChild('modalContainer', { read: ElementRef }) modalContainer: ElementRef;\n  @ContentChild(PoModalFooterComponent) modalFooter: PoModalFooterComponent;\n\n  private firstElement;\n  private focusFunction;\n  private readonly focusableElements = 'input, select, textarea, button:not([disabled]), a';\n  private readonly id: string = uuid();\n  private sourceElement;\n\n  constructor() {\n    const poLanguageService = inject(PoLanguageService);\n\n    super(poLanguageService);\n  }\n\n  close(xClosed = false) {\n    if (\n      this.poActiveOverlayService.activeOverlay.length > 0 &&\n      this.poActiveOverlayService.activeOverlay[this.poActiveOverlayService.activeOverlay.length - 1] === this.id\n    ) {\n      this.poActiveOverlayService.activeOverlay.pop();\n    }\n\n    super.close(xClosed);\n\n    this.removeEventListeners();\n\n    if (this.sourceElement) {\n      this.sourceElement.focus();\n    }\n  }\n\n  closeModalOnEscapeKey(event) {\n    if (!this.hideClose) {\n      event.preventDefault();\n      event.stopPropagation();\n      this.close();\n    }\n  }\n\n  getSecondaryActionButtonDanger() {\n    return this.secondaryAction && this.secondaryAction.danger && !this.primaryAction.danger ? 'true' : 'false';\n  }\n\n  onClickOut(event) {\n    if (this.clickOut && !this.modalContent.nativeElement.contains(event.target)) {\n      this.close();\n    }\n  }\n\n  open() {\n    this.sourceElement = document.activeElement;\n    super.open();\n    this.handleFocus();\n  }\n\n  private handleFocus(): any {\n    this.poActiveOverlayService.activeOverlay.push(this.id);\n\n    setTimeout(() => {\n      if (this.modalContent) {\n        this.initFocus();\n        document.addEventListener('focus', this.focusFunction, true);\n      }\n    });\n  }\n\n  private initFocus() {\n    this.focusFunction = (event: any) => {\n      const isCdkOverlayListbox = event.target.closest('.cdk-overlay-container') !== null;\n      const modalElement = this.modalContent.nativeElement;\n\n      if (\n        !modalElement.contains(event.target) &&\n        !isCdkOverlayListbox &&\n        this.poActiveOverlayService.activeOverlay[this.poActiveOverlayService.activeOverlay.length - 1] === this.id\n      ) {\n        event.stopPropagation();\n        this.firstElement.focus();\n      }\n    };\n\n    this.setFirstElement();\n\n    if (this.hideClose) {\n      this.firstElement.focus();\n    } else {\n      const firstFieldElement =\n        this.modalContent.nativeElement.querySelectorAll(this.focusableElements)[1] || this.modalContent.nativeElement;\n      firstFieldElement.focus();\n    }\n  }\n\n  private removeEventListeners() {\n    document.removeEventListener('focus', this.focusFunction, true);\n  }\n\n  private setFirstElement() {\n    this.firstElement =\n      this.modalContent.nativeElement.querySelector(this.focusableElements) || this.modalContent.nativeElement;\n  }\n}\n","@if (!isHidden) {\n  <div #modalContainer class=\"po-modal\" tabindex=\"0\" (keydown.esc)=\"closeModalOnEscapeKey($event)\">\n    <div class=\"po-modal-overlay\" (mousedown)=\"onClickOut($event)\"></div>\n    <div class=\"po-modal-container po-pb-2 po-pt-2\">\n      <div class=\"po-modal-vertical-align\">\n        <div #modalContent class=\"po-modal-content po-modal-{{ size }}\" tabindex=\"-1\">\n          <div class=\"po-modal-header\">\n            <div class=\"po-modal-title po-text-ellipsis\">\n              @if (icon) {\n                <po-icon [p-icon]=\"icon\"></po-icon>\n              }\n              <div class=\"po-text-ellipsis\">\n                {{ title }}\n              </div>\n            </div>\n            @if (!hideClose) {\n              <po-button\n                [p-aria-label]=\"literals.close\"\n                p-icon=\"ICON_CLOSE\"\n                (p-click)=\"close(true)\"\n                p-kind=\"tertiary\"\n                [p-size]=\"componentsSize\"\n              >\n              </po-button>\n            }\n          </div>\n          <div class=\"po-modal-body\">\n            <ng-content></ng-content>\n          </div>\n          @if (modalFooter) {\n            <ng-content select=\"po-modal-footer\"></ng-content>\n          } @else {\n            <po-modal-footer>\n              <div class=\"po-modal-footer-basic\">\n                @if (secondaryAction) {\n                  <po-button\n                    [p-danger]=\"getSecondaryActionButtonDanger()\"\n                    [p-disabled]=\"secondaryAction.disabled\"\n                    [p-icon]=\"secondaryAction.icon\"\n                    [p-label]=\"secondaryAction.label\"\n                    [p-loading]=\"secondaryAction.loading\"\n                    p-kind=\"secondary\"\n                    [p-size]=\"componentsSize\"\n                    (p-click)=\"secondaryAction.action()\"\n                  >\n                  </po-button>\n                }\n                <po-button\n                  class=\"po-button-modal-first-action\"\n                  [p-danger]=\"primaryAction.danger\"\n                  [p-disabled]=\"primaryAction.disabled\"\n                  [p-icon]=\"primaryAction.icon\"\n                  [p-label]=\"primaryAction.label\"\n                  [p-loading]=\"primaryAction.loading\"\n                  p-kind=\"primary\"\n                  [p-size]=\"componentsSize\"\n                  (p-click)=\"primaryAction.action()\"\n                >\n                </po-button>\n              </div>\n            </po-modal-footer>\n          }\n        </div>\n      </div>\n    </div>\n  </div>\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PoButtonModule } from './../po-button/po-button.module';\nimport { PoIconModule } from './../po-icon/po-icon.module';\nimport { PoModalComponent } from './po-modal.component';\nimport { PoModalFooterComponent } from './po-modal-footer/po-modal-footer.component';\n\n/**\n * @description\n * Módulo do componente po-modal\n */\n@NgModule({\n  imports: [CommonModule, PoButtonModule, PoIconModule],\n  declarations: [PoModalComponent, PoModalFooterComponent],\n  exports: [PoModalComponent, PoModalFooterComponent]\n})\nexport class PoModalModule {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'po-progress-bar',\n  templateUrl: './po-progress-bar.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoProgressBarComponent {\n  @Input('p-indeterminate') indeterminate: boolean;\n\n  @Input('p-value') value: number;\n\n  get valueScale() {\n    return `${this.value / 100}`;\n  }\n}\n","@if (!indeterminate) {\n  <div\n    role=\"progressbar\"\n    [attr.aria-valuenow]=\"value\"\n    aria-valuemin=\"0\"\n    aria-valuemax=\"100\"\n    aria-live=\"polite\"\n    class=\"po-progress-bar-default\"\n  >\n    <div class=\"po-progress-bar-element po-progress-bar-primary\"></div>\n    <div class=\"po-progress-bar-element po-progress-bar-secondary\" [style.left]=\"'-' + (100 - value) + '%'\"></div>\n  </div>\n}\n\n@if (indeterminate) {\n  <div class=\"po-progress-bar-indeterminate-track\">\n    <div class=\"po-progress-bar-indeterminate-track-bar\"></div>\n  </div>\n}\n","/**\n * @usedBy PoProgressComponent\n *\n * @description\n *\n * *Enum* `PoProgressStatus` para os status de barra de progresso.\n */\nexport enum PoProgressStatus {\n  /** Define o status `default` para a barra de progresso. */\n  Default = 'default',\n\n  /** Define o status de `error` para a barra de progresso. */\n  Error = 'error',\n\n  /** Define o status de `success` para a barra de progresso. */\n  Success = 'success'\n}\n","export const poProgressLiterals = {\n  en: {\n    cancel: 'Cancel',\n    retry: 'Retry'\n  },\n  es: {\n    cancel: 'Cancelar',\n    retry: 'Procesar de nuevo'\n  },\n  pt: {\n    cancel: 'Cancelar',\n    retry: 'Tentar Novamente'\n  },\n  ru: {\n    cancel: 'Отмена',\n    retry: 'Повторить попытку'\n  }\n};\n","/**\n * @usedBy PoProgressComponent\n *\n * @description\n *\n * Enum para configurar a expessura (`p-size`) da barra de progresso do componente.\n */\nexport enum PoProgressSize {\n  /** Tamanho médio com 4px. */\n  medium = 'medium',\n  /** Tamanho grande com 8px. */\n  large = 'large'\n}\n","import { Directive, EventEmitter, HostBinding, HostListener, Input, Output, TemplateRef } from '@angular/core';\n\nimport { convertToBoolean, convertToInt, getDefaultSizeFn, validateSizeFn } from '../../utils/util';\n\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { PoProgressSize } from './enums/po-progress-size.enum';\nimport { PoProgressStatus } from './enums/po-progress-status.enum';\nimport { PoProgressAction } from './interfaces';\n\nconst poProgressMaxValue = 100;\nconst poProgressMinValue = 0;\n\n/**\n * @description\n *\n * Componente de barra de progresso que possibilita exibir visualmente o progresso/carregamento de uma tarefa.\n *\n * Este componente pode ser utilizado no *upload* de arquivos, uma atualização no sistema ou o processamento de uma imagem.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                    |\n * |----------------------------------------|-------------------------------------------------------|-------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                 |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                      |\n * | `--text-color`                         | Cor do texto                                          | `var(--color-neutral-dark-90)`                  |\n * | **Error**                              |                                                       |                                                 |\n * | `--text-color-error`                   | Cor do texto no estado error                          | `var(--color-feedback-negative-dark)`           |\n * | `--color-icon-error`                   | Cor do ícone no estado error                          | `var(--color-feedback-negative-dark)`           |\n * | **po-progress-bar**                    |                                                       |                                                 |\n * | `--background-color-tray`              | Cor do background                                     | `var(--color-brand-01-lightest)`                |\n * | `--background-color-indicator`         | Cor do background do indicador                        | `var(--color-action-default)`                   |\n *\n */\n@Directive()\nexport class PoProgressBaseComponent {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita botão de cancelamento na parte inferior da barra de progresso.\n   *\n   * > Se nenhuma função for passada para o evento `(p-cancel)` ou a barra de progresso estiver com o status `PoProgressStatus.Success`,\n   * o ícone de cancelamento não será exibido.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-disabled-cancel', transform: convertToBoolean }) disabledCancel: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Informação adicional que aparecerá abaixo da barra de progresso ao lado direito.\n   */\n  @Input('p-info') info?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Ícone que aparecerá ao lado do texto da propriedade `p-info`.\n   *\n   * Exemplo: `an an-check`.\n   */\n  @Input('p-info-icon') infoIcon?: string | TemplateRef<void>;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Status da barra de progresso que indicará visualmente ao usuário\n   * o andamento, por exemplo, se a mesma foi concluída com sucesso.\n   *\n   * @default `PoProgressStatus.Default`\n   */\n  @Input('p-status') status: PoProgressStatus = PoProgressStatus.Default;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Texto principal que aparecerá abaixo da barra de progresso no lado esquerdo.\n   */\n  @Input('p-text') text?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite definir uma ação personalizada no componente `po-progress`, exibindo um botão no canto inferior direito\n   * da barra de progresso. A ação deve implementar a interface **PoProgressAction**, possibilitando configurar:\n   *\n   * - **`label`**: Texto exibido no botão (opcional).\n   * - **`icon`**: Ícone exibido no botão (opcional).\n   * - **`type`**: Tipo do botão (`default` ou `danger`) para indicar a intenção da ação (opcional).\n   * - **`disabled`**: Indica se o botão deve estar desabilitado (opcional).\n   * - **`visible`**: Determina se o botão será exibido. Pode ser um valor booleano ou uma função que retorna um booleano (opcional).\n   *\n   * @example\n   * **Exemplo de uso:**\n   * ```html\n   * <po-progress\n   *  [p-value]=\"50\"\n   *  [p-custom-action]=\"customAction\"\n   *  (p-custom-action-click)=\"onCustomActionClick()\"\n   * ></po-progress>\n   * ```\n   *\n   * ```typescript\n   * customAction: PoProgressAction = {\n   *   label: 'Baixar',\n   *   icon: 'an an-download',\n   *   type: 'default',\n   *   visible: () => true\n   * };\n   *\n   * onCustomActionClick() {\n   *   console.log('Custom action triggered!');\n   * }\n   * ```\n   *\n   * **Cenários comuns:**\n   * 1. **Download de Arquivos**: Exibir um botão para realizar o download de um arquivo associado à barra de progresso.\n   * 2. **Cancelamento Personalizado**: Adicionar uma ação para interromper ou reverter uma operação em andamento.\n   */\n  @Input('p-custom-action') customAction?: PoProgressAction;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento emitido quando o botão definido em `p-custom-action` é clicado. Este evento retorna informações\n   * relacionadas à barra de progresso ou ao arquivo/processo associado, permitindo executar ações específicas.\n   *\n   * @example\n   * **Exemplo de uso:**\n   *\n   * ```html\n   * <po-progress\n   *  [p-value]=\"50\"\n   *  [p-custom-action]=\"customAction\"\n   *  (p-custom-action-click)=\"onCustomActionClick()\"\n   * ></po-progress>\n   * ```\n   *\n   * ```typescript\n   * customAction: PoProgressAction = {\n   *   label: 'Cancelar',\n   *   icon: 'an an-x',\n   *   type: 'danger',\n   *   visible: true\n   * };\n   *\n   * onCustomActionClick() {\n   *   console.log('Custom action triggered!');\n   * }\n   * ```\n   *\n   * **Cenários comuns:**\n   * 1. **Botão de Download**: Disparar o download do arquivo associado à barra de progresso.\n   * 2. **Ação Condicional**: Realizar uma validação ou chamada de API antes de prosseguir com a ação.\n   */\n  @Output('p-custom-action-click') customActionClick: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento que será disparado ao clicar no ícone de cancelamento (\"x\") na parte inferior da barra de progresso.\n   *\n   * Ao ser disparado, a função receberá como parâmetro o status atual da barra de progresso.\n   *\n   * > Se nenhuma função for passada para o evento ou a barra de progresso estiver com o status `PoProgressStatus.Success`,\n   * o ícone de cancelamento não será exibido.\n   */\n  @Output('p-cancel') cancel: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento que será disparado ao clicar no ícone de tentar novamente na parte inferior da barra de progresso.\n   *\n   * > o ícone será exibido apenas se informar uma função neste evento e o status da barra de progresso for\n   * `PoProgressStatus.Error`.\n   */\n  @Output('p-retry') retry: EventEmitter<any> = new EventEmitter();\n\n  private _indeterminate?: boolean;\n  private _value?: number = 0;\n  private _size: string = 'large';\n  private _sizeActions: string = undefined;\n  private _initialSizeActions: string = undefined;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita o modo indeterminado na barra de progresso, que mostra uma animação fixa sem um valor estabelecido.\n   *\n   * Esta opção pode ser utilizada quando não souber quanto tempo levará para que um processo seja concluído.\n   *\n   * > Caso esta propriedade e a `p-value` seja habilitada, a propriedade `p-value` será ignorada.\n   *\n   * @default `false`\n   */\n  @Input('p-indeterminate') set indeterminate(indeterminate: boolean) {\n    this._indeterminate = convertToBoolean(indeterminate);\n  }\n\n  get indeterminate(): boolean {\n    return this._indeterminate;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Valor que representará o progresso.\n   *\n   * > Os valores aceitos são números inteiros de `0` à `100`.\n   *\n   * @default `0`\n   */\n  @Input('p-value') set value(value: number) {\n    const integerValue = convertToInt(value, poProgressMinValue);\n    const isProgressRangeValue = this.isProgressRangeValue(integerValue);\n\n    this._value = isProgressRangeValue ? integerValue : poProgressMinValue;\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a expessura da barra de progresso.\n   *\n   * Valores válidos:\n   *  - medium\n   *  - large\n   *\n   * @default `large`\n   */\n  @Input('p-size') set size(value: string) {\n    this._size = PoProgressSize[value] ? PoProgressSize[value] : PoProgressSize.large;\n  }\n\n  get size(): string {\n    return this._size;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho das ações no componente com excessão da barra de progresso que pode ser ajustada através da propriedade `p-size`:\n   * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n   * - `medium`: aplica a medida medium de cada componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set sizeActions(value: string) {\n    this._initialSizeActions = value;\n    this.applySizeActionsBasedOnA11y();\n  }\n\n  @Input('p-size-actions')\n  @HostBinding('attr.p-size-actions')\n  get sizeActions(): string {\n    return this._sizeActions ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Ativa a exibição da porcentagem atual da barra de progresso.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-show-percentage', transform: convertToBoolean }) showPercentage: boolean = false;\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeActionsBasedOnA11y();\n  }\n\n  private applySizeActionsBasedOnA11y(): void {\n    this._sizeActions = validateSizeFn(this._initialSizeActions, PoFieldSize);\n  }\n\n  private isProgressRangeValue(value: number): boolean {\n    return value >= poProgressMinValue && value <= poProgressMaxValue;\n  }\n}\n","import { ChangeDetectionStrategy, Component, OnInit, inject } from '@angular/core';\n\nimport { Router } from '@angular/router';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { isTypeof } from '../../utils/util';\nimport { PoProgressStatus } from './enums/po-progress-status.enum';\nimport { poProgressLiterals } from './literals/po-progress.literals';\nimport { PoProgressBaseComponent } from './po-progress-base.component';\n\n/**\n * @docsExtends PoProgressBaseComponent\n *\n * @example\n * <example name=\"po-progress-basic\" title=\"PO Progress Basic\">\n *   <file name=\"sample-po-progress-basic/sample-po-progress-basic.component.html\"> </file>\n *   <file name=\"sample-po-progress-basic/sample-po-progress-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-progress-labs\" title=\"PO Progress Labs\">\n *   <file name=\"sample-po-progress-labs/sample-po-progress-labs.component.html\"> </file>\n *   <file name=\"sample-po-progress-labs/sample-po-progress-labs.component.ts\"> </file>\n *   <file name=\"sample-po-progress-labs/sample-po-progress-labs.component.css\"> </file>\n * </example>\n *\n * <example name=\"po-progress-publication\" title=\"PO Progress - Publication\">\n *   <file name=\"sample-po-progress-publication/sample-po-progress-publication.component.html\"> </file>\n *   <file name=\"sample-po-progress-publication/sample-po-progress-publication.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-progress',\n  templateUrl: './po-progress.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoProgressComponent extends PoProgressBaseComponent implements OnInit {\n  language;\n  literals;\n\n  get isAllowCancel(): boolean {\n    return !!this.cancel.observers.length && this.status !== PoProgressStatus.Success;\n  }\n\n  get isAllowInfoError(): boolean {\n    return !!(!this.infoIcon && this.info && this.status === PoProgressStatus.Error);\n  }\n\n  get isAllowRetry(): boolean {\n    return !!this.retry.observers.length && this.status === PoProgressStatus.Error;\n  }\n\n  get statusClass(): string {\n    if (this.status === PoProgressStatus.Success) {\n      return 'po-progress-success';\n    }\n\n    if (this.status === PoProgressStatus.Error) {\n      return 'po-progress-error';\n    }\n\n    return 'po-progress-default';\n  }\n\n  private readonly poLanguageService = inject(PoLanguageService);\n  private readonly router = inject(Router);\n\n  ngOnInit(): void {\n    this.language = this.poLanguageService.getShortLanguage();\n\n    this.literals = {\n      ...poProgressLiterals[this.language]\n    };\n  }\n\n  emitCancellation() {\n    this.cancel.emit(this.status);\n  }\n\n  emitRetry() {\n    this.retry.emit();\n  }\n\n  actionIsDisabled(action: any) {\n    return isTypeof(action.disabled, 'function') ? action.disabled(action) : action.disabled;\n  }\n\n  callAction(): void {\n    this.customActionClick.emit();\n  }\n\n  isActionVisible(action: any) {\n    if (action && (action.label || action.icon)) {\n      return action.visible !== undefined\n        ? isTypeof(action.visible, 'function')\n          ? action.visible()\n          : !!action.visible\n        : true;\n    }\n  }\n}\n","<div class=\"po-progress\" [ngClass]=\"statusClass\">\n  @if (text) {\n    <div class=\"po-progress-description\">\n      <po-label [p-label]=\"text\"></po-label>\n    </div>\n  }\n\n  <po-progress-bar\n    class=\"po-progress-bar po-progress-bar-{{ size }}\"\n    [p-indeterminate]=\"indeterminate\"\n    [p-value]=\"value\"\n  >\n  </po-progress-bar>\n\n  <div class=\"po-progress-info\">\n    <div class=\"po-progress-info-left\">\n      @if (infoIcon) {\n        <po-icon [p-icon]=\"infoIcon\" [class.po-progress-info-icon-error]=\"status === 'error'\"></po-icon>\n      }\n      @if (isAllowInfoError) {\n        <po-icon p-icon=\"ICON_EXCLAMATION\" class=\"po-progress-info-icon-error\"></po-icon>\n      }\n      @if (info) {\n        <span class=\"po-progress-info-text\" [class.po-progress-info-text-error]=\"status === 'error'\">{{ info }}</span>\n      }\n    </div>\n    <div class=\"po-progress-info-right\">\n      @if (showPercentage && !indeterminate) {\n        <span>{{ value }}%</span>\n      }\n\n      @if (isAllowRetry) {\n        <po-button\n          p-icon=\"ICON_REFRESH\"\n          (p-click)=\"emitRetry()\"\n          [p-aria-label]=\"literals.retry\"\n          p-kind=\"tertiary\"\n          [p-size]=\"sizeActions\"\n        ></po-button>\n      }\n\n      @if (isActionVisible(customAction)) {\n        <po-button\n          class=\"po-progress-custom-button\"\n          [p-danger]=\"customAction.type === 'danger'\"\n          [p-disabled]=\"actionIsDisabled(customAction)\"\n          [p-label]=\"customAction.label || ''\"\n          [p-icon]=\"customAction.icon\"\n          [p-size]=\"sizeActions\"\n          (p-click)=\"callAction()\"\n        >\n        </po-button>\n      }\n\n      @if (isAllowCancel) {\n        <po-button\n          p-icon=\"ICON_CLOSE\"\n          (p-click)=\"emitCancellation()\"\n          p-kind=\"secondary\"\n          [p-disabled]=\"disabledCancel\"\n          [p-aria-label]=\"literals.cancel\"\n          [p-danger]=\"true\"\n          [p-size]=\"sizeActions\"\n        ></po-button>\n      }\n    </div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoProgressBarComponent } from './po-progress-bar/po-progress-bar.component';\nimport { PoProgressComponent } from './po-progress.component';\nimport { PoButtonModule } from '../po-button/po-button.module';\nimport { PoIconModule } from '../po-icon/po-icon.module';\nimport { PoLabelModule } from '../po-label/po-label.module';\n\n/**\n * @description\n *\n * Módulo do componente `po-progress`.\n */\n@NgModule({\n  imports: [CommonModule, PoButtonModule, PoIconModule, PoLabelModule],\n  exports: [PoProgressComponent],\n  declarations: [PoProgressBarComponent, PoProgressComponent]\n})\nexport class PoProgressModule {}\n","import { Injectable } from '@angular/core';\n\nimport { PoCaptionTagColorEnum } from '../../enums/po-caption-tag-color.enum';\nimport { PoColorPaletteEnum } from '../../enums/po-color-palette.enum';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoColorPaletteService {\n  getColor(value: { color?: string; type?: string }): string {\n    if (\n      (<any>Object).values(PoColorPaletteEnum).includes(value.color) ||\n      (<any>Object).values(PoCaptionTagColorEnum).includes(value.color)\n    ) {\n      return value.color;\n    }\n    return this.getColorFromType(value.type || value.color);\n  }\n\n  private getColorFromType(type: string): PoColorPaletteEnum {\n    switch (type) {\n      case 'danger':\n        return PoColorPaletteEnum.Color07;\n      case 'success':\n        return PoColorPaletteEnum.Color11;\n      case 'warning':\n        return PoColorPaletteEnum.Color08;\n      default:\n        return PoColorPaletteEnum.Color01;\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { PoColorPaletteService } from './po-color-palette.service';\n\n/**\n * @description\n *\n * Módulo do serviço `po-color-palette`.\n */\n@NgModule({\n  providers: [PoColorPaletteService],\n  bootstrap: []\n})\nexport class PoColorPaletteModule {}\n","import { Injectable, ComponentRef, ComponentFactoryResolver, ApplicationRef, Injector } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoComponentInjectorService {\n  constructor(\n    private readonly componentResolver: ComponentFactoryResolver,\n    private readonly applicationRef: ApplicationRef,\n    private readonly injector: Injector\n  ) {}\n\n  // Cria um dinamicamente no ApplicationRef\n  createComponentInApplication(component: any): ComponentRef<any> {\n    const componentRef = this.componentResolver.resolveComponentFactory(component).create(this.injector);\n    this.applicationRef.attachView(componentRef.hostView);\n    const domElem = (<any>componentRef.hostView).rootNodes[0];\n    document.body.appendChild(domElem);\n    return componentRef;\n  }\n\n  // Destrói o componente e remove do ApplicationRef\n  destroyComponentInApplication(componentRef: any) {\n    this.applicationRef.detachView(componentRef.hostView);\n    componentRef.destroy();\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { PoComponentInjectorService } from './po-component-injector.service';\n\n@NgModule({\n  declarations: [],\n  imports: [],\n  exports: [],\n  providers: [PoComponentInjectorService],\n  bootstrap: []\n})\nexport class PoComponentInjectorModule {}\n","import { NgModule } from '@angular/core';\n\nimport { PoControlPositionService } from './po-control-position.service';\n\n/**\n * @description\n *\n * Módulo do serviço po-control-position.\n */\n@NgModule({\n  providers: [PoControlPositionService]\n})\nexport class PoControlPositionModule {}\n","/**\n * @docsPrivate\n *\n * @usedBy PoDialogService\n *\n * @description\n * Enums para as ações do componente po-dialog-base.service.\n */\nexport enum PoDialogType {\n  // Enum para alert\n  Alert,\n  // Enum para confirm\n  Confirm\n}\n","import { Component, ComponentRef, HostBinding, HostListener, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\n\nimport { Subscription } from 'rxjs';\n\nimport { poLocaleDefault } from '../po-language/po-language.constant';\n\nimport { PoLanguageService } from '../po-language/po-language.service';\n\nimport { PoModalAction } from '../../components/po-modal/po-modal-action.interface';\nimport { PoModalComponent } from '../../components/po-modal/po-modal.component';\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { getDefaultSizeFn, validateSizeFn } from '../../utils/util';\nimport { PoDialogType } from './enums/po-dialog.enum';\nimport { PoDialogAlertLiterals } from './interfaces/po-dialog-alert-literals.interface';\nimport { PoDialogConfirmLiterals } from './interfaces/po-dialog-confirm-literals.interface';\nimport { PoDialogAlertOptions, PoDialogConfirmOptions } from './interfaces/po-dialog.interface';\n\nexport const poDialogAlertLiteralsDefault = {\n  en: <PoDialogAlertLiterals>{ ok: 'Ok' },\n  es: <PoDialogAlertLiterals>{ ok: 'Ok' },\n  pt: <PoDialogAlertLiterals>{ ok: 'Ok' },\n  ru: <PoDialogAlertLiterals>{ ok: 'Ок' }\n};\n\nexport const poDialogConfirmLiteralsDefault = {\n  en: <PoDialogConfirmLiterals>{ cancel: 'Cancel', confirm: 'Confirm' },\n  es: <PoDialogConfirmLiterals>{ cancel: 'Cancelar', confirm: 'Confirmar' },\n  pt: <PoDialogConfirmLiterals>{ cancel: 'Cancelar', confirm: 'Confirmar' },\n  ru: <PoDialogConfirmLiterals>{ cancel: 'отменить', confirm: 'подтвердить' }\n};\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente que serve como container do po-dialog.service\n */\n\n@Component({\n  templateUrl: './po-dialog.component.html',\n  standalone: false\n})\nexport class PoDialogComponent implements OnDestroy, OnInit {\n  // ViewChild para o uso do po-modal.component\n  @ViewChild(PoModalComponent, { static: true }) poModal: PoModalComponent;\n\n  // Title do poModal\n  title: string;\n\n  // Message do poModal\n  message: string;\n\n  // Objeto primary do poModal\n  primaryAction: PoModalAction = { label: 'ok', action: () => {} };\n\n  // Objeto secondary do poModal\n  secondaryAction: PoModalAction;\n\n  // Callback executado ao fechar o poModal\n  closeAction: Function;\n\n  // Literais usadas nos botão de alerta do poModal\n  literalsAlert: PoDialogAlertLiterals;\n\n  // Literais usadas nos botões de confirmação do poModal\n  literalsConfirm: PoDialogConfirmLiterals;\n\n  // Atributo para armazenar a referencia do componente criado via serviço.\n  private componentRef: ComponentRef<PoDialogComponent>;\n  private closeSubscription: Subscription;\n  private _componentsSize?: string = undefined;\n  private _initialComponentsSize?: string = undefined;\n\n  private readonly language: string;\n\n  // Define o tamanho dos componentes de formulário no dialog.\n  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  constructor(languageService: PoLanguageService) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  ngOnDestroy() {\n    this.closeSubscription.unsubscribe();\n  }\n\n  ngOnInit() {\n    this.closeSubscription = this.poModal.onXClosed.subscribe(close => this.close(true));\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  // Fecha o poModal\n  close(xClosed = false): void {\n    if (xClosed && this.closeAction) {\n      this.closeAction();\n    }\n\n    this.poModal.close();\n    this.destroy();\n  }\n\n  destroy() {\n    if (this.componentRef) {\n      this.componentRef.destroy();\n    }\n  }\n\n  // Insere os valores recebidos de this.open para o poModal\n  configDialog(primaryLabel?, primaryAction?, secondaryLabel?, secondaryAction?, closeAction?) {\n    this.primaryAction = {\n      label: primaryLabel,\n      action: () => {\n        if (primaryAction) {\n          primaryAction();\n        }\n        this.close();\n      }\n    };\n\n    if (secondaryLabel) {\n      this.secondaryAction = {\n        label: secondaryLabel,\n        action: () => {\n          if (secondaryAction) {\n            secondaryAction();\n          }\n          this.close();\n        }\n      };\n    }\n\n    this.closeAction = closeAction;\n  }\n\n  // Insere os valores recebidos de po-dialog.service de acordo com o tipo de diálago solicitado\n  open(\n    dialogOptions: PoDialogConfirmOptions | PoDialogAlertOptions,\n    dialogType: PoDialogType,\n    componentRef?: ComponentRef<PoDialogComponent>\n  ): void {\n    this.componentsSize = dialogOptions.componentsSize;\n    this.title = dialogOptions.title;\n    this.message = dialogOptions.message;\n\n    this.componentRef = componentRef;\n\n    this.setDialogLiterals(dialogOptions, dialogType);\n\n    switch (dialogType) {\n      case PoDialogType.Confirm: {\n        this.configDialog(\n          this.literalsConfirm.confirm,\n          (<PoDialogConfirmOptions>dialogOptions).confirm,\n          this.literalsConfirm.cancel,\n          (<PoDialogConfirmOptions>dialogOptions).cancel,\n          (<PoDialogConfirmOptions>dialogOptions).close\n        );\n        break;\n      }\n      case PoDialogType.Alert: {\n        this.configDialog(this.literalsAlert.ok, (<PoDialogAlertOptions>dialogOptions).ok);\n        break;\n      }\n    }\n\n    this.poModal.open();\n  }\n\n  private setDialogLiterals(dialogOptions: PoDialogConfirmOptions | PoDialogAlertOptions, dialogType: PoDialogType) {\n    const alertLiterals = poDialogAlertLiteralsDefault;\n    const confirmLiterals = poDialogConfirmLiteralsDefault;\n    const literals = dialogOptions.literals;\n\n    if (dialogType === PoDialogType.Alert) {\n      this.literalsAlert = { ...alertLiterals[poLocaleDefault], ...alertLiterals[this.language], ...literals };\n    } else {\n      this.literalsConfirm = {\n        ...confirmLiterals[poLocaleDefault],\n        ...confirmLiterals[this.language],\n        ...literals\n      };\n    }\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialComponentsSize, PoFieldSize);\n    this._componentsSize = size;\n  }\n}\n","<po-modal\n  [p-title]=\"title\"\n  [p-primary-action]=\"primaryAction\"\n  [p-secondary-action]=\"secondaryAction\"\n  [p-components-size]=\"componentsSize\"\n>\n  <div [innerHtml]=\"message\"></div>\n</po-modal>\n","import { PoDialogAlertOptions, PoDialogConfirmOptions } from './interfaces/po-dialog.interface';\nimport { PoDialogType } from './enums/po-dialog.enum';\n\n/**\n * @description\n *\n * O po-dialog é um serviço para exibição de caixas de diálogo, é possível customiza-los passando alguns parâmetros de acordo com a\n * necessidade do desenvolvedor.\n */\n\nexport abstract class PoDialogBaseService {\n  /** Exibe um diálogo de confirmação, é possível definir ações para as opções de confirmação e cancelamento. */\n  confirm(confirmOptions: PoDialogConfirmOptions): void {\n    this.openDialog(PoDialogType.Confirm, confirmOptions);\n  }\n\n  /** Exibe um diálogo de alerta. */\n  alert(alertOptions: PoDialogAlertOptions): void {\n    this.openDialog(PoDialogType.Alert, alertOptions);\n  }\n\n  // Usado para chamar um diálogo\n  abstract openDialog(dialogType: PoDialogType, dialogOptions: PoDialogAlertOptions | PoDialogConfirmOptions): void;\n}\n","import { Injectable, ComponentRef } from '@angular/core';\n\nimport { PoComponentInjectorService } from './../po-component-injector/po-component-injector.service';\nimport { PoDialogAlertOptions, PoDialogConfirmOptions } from './interfaces/po-dialog.interface';\nimport { PoDialogBaseService } from './po-dialog-base.service';\nimport { PoDialogComponent } from './po-dialog.component';\nimport { PoDialogType } from './enums/po-dialog.enum';\n\n/**\n * @docsExtends PoDialogBaseService\n *\n * @example\n *\n * <example name=\"po-dialog-basic\" title=\"PO Dialog Basic\">\n *  <file name=\"sample-po-dialog-basic/sample-po-dialog-basic.component.html\"> </file>\n *  <file name=\"sample-po-dialog-basic/sample-po-dialog-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-dialog-labs\" title=\"PO Dialog Labs\">\n *  <file name=\"sample-po-dialog-labs/sample-po-dialog-labs.component.html\"> </file>\n *  <file name=\"sample-po-dialog-labs/sample-po-dialog-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-dialog-cancel-credit-card\" title=\"PO Dialog - Cancel Credit Card\">\n *  <file name=\"sample-po-dialog-cancel-credit-card/sample-po-dialog-cancel-credit-card.component.html\"> </file>\n *  <file name=\"sample-po-dialog-cancel-credit-card/sample-po-dialog-cancel-credit-card.component.ts\"> </file>\n * </example>\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoDialogService extends PoDialogBaseService {\n  constructor(private readonly poComponentInjector: PoComponentInjectorService) {\n    super();\n  }\n\n  openDialog(dialogType: PoDialogType, dialogOptions: PoDialogAlertOptions | PoDialogConfirmOptions): void {\n    const componentRef: ComponentRef<any> = this.poComponentInjector.createComponentInApplication(PoDialogComponent);\n    componentRef.changeDetectorRef.detectChanges();\n    componentRef.instance.open(dialogOptions, dialogType, componentRef);\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { PoModalModule } from '../../components/po-modal/po-modal.module';\nimport { PoDialogComponent } from './po-dialog.component';\nimport { PoDialogService } from './po-dialog.service';\n\n@NgModule({\n  declarations: [PoDialogComponent],\n  imports: [PoModalModule],\n  exports: [PoDialogComponent],\n  providers: [PoDialogService]\n})\nexport class PoDialogModule {}\n","import { PipeTransform } from '@angular/core';\n\n/**\n * @description\n *\n * O pipe po-i18n é responsável por tratar literais parâmetrizadas, dando mais flexibilidade as literais de tradução.\n * O número de parâmetros inseridos nas literais deve coincidir com a quantia de parâmetros passados por parâmetro,\n * os parâmetros serão substituidos de acordo com a ordem informada.\n *\n * Para inserir um parâmetro em uma literal, o mesmo deverá ser inserido entre chaves dentro da literal e posicionado\n * de acordo como deve ser exibido após a sua transformação.\n *\n * ```\n * const i18nPT = {\n *   pagination: 'Página {1} de {2} páginas.',\n *   totalPages: 'Total de {totalPages} encontradas.'\n * };\n * ```\n *\n * É possível passar um valor ou um array de valores para o pipe, caso seja passado um array, os valores devem obedecer a ordem\n * informada na literal.\n *\n * ```\n * {{ i18nPT.pagination | poI18n:[1,10] }}\n * {{ i18nPT.totalPages | poI18n:10 }}\n * ```\n */\nexport class PoI18nBasePipe implements PipeTransform {\n  transform(value: string, args: any): string {\n    if (!value) {\n      return '';\n    }\n\n    if (!(args instanceof Array)) {\n      args = [args];\n    }\n\n    for (const arg of args) {\n      value = value.replace(/(\\{\\w*\\})+/, arg);\n    }\n\n    return value;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { PoI18nBasePipe } from './po-i18n-base.pipe';\n\n/**\n * @docsExtends PoI18nBasePipe\n *\n * @example\n * <example name='po-i18n-pipe-labs' title='PO i18n Pipe Labs' >\n *  <file name='sample-po-i18n-pipe-labs.component.html'> </file>\n *  <file name='sample-po-i18n-pipe-labs.component.ts'> </file>\n *  <file name='sample-po-i18n-pipe.component.html'> </file>\n *  <file name='sample-po-i18n-pipe.component.ts'> </file>\n * </example>\n */\n@Pipe({\n  name: 'poI18n',\n  standalone: false\n})\nexport class PoI18nPipe extends PoI18nBasePipe implements PipeTransform {}\n","import { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\nimport { PoMediaQueryTokens } from './po-media-query.interface';\n\n/**\n * @description\n *\n * O PoMediaQueryService é um serviço que atualiza dinamicamente regras de media query dentro de folhas de estilo do DOM.\n *\n * Ele utiliza as regras de media queries que contêm tokens CSS (definidos como var(--nome-da-variavel)) e as replica, aplicando os novos valores fornecidos, facilitando a adaptação dos estilos com base nas condições das media queries.\n *\n * Exemplo de uso:\n *\n * Neste exemplo, estamos alterando os valores dos breakpoints para o grid system, que determina como o layout deve se comportar em diferentes larguras de tela. Utilizando o PoMediaQueryService, definimos os limites para três tamanhos de tela: pequeno (sm), médio (md), e grande (lg), e aplicamos esses valores dinamicamente para garantir que o layout responda adequadamente às mudanças no tamanho da janela.\n * Isso permite que o grid system do PO UI seja personalizado para se ajustar às necessidades do seu projeto.\n *\n * ```\n * import { PoMediaQueryService } from './po-media-query.service';\n *\n * @Component({\n *  selector: 'app-root',\n *  templateUrl: './app.component.html',\n *  styleUrls: ['./app.component.css']\n * })\n *\n * export class AppComponent {\n *\n *  // Definindo tokens personalizados para os breakpoints do grid system\n *  constructor(private poMediaQueryService: PoMediaQueryService) {}\n *\n *  ngOnInit() {\n *    const tokens: PoMediaQueryTokens =  {\n *     sm: {\n *      gridSystemSmMaxWidth: '1024px' // Limite máximo para telas pequenas (até 1024px)\n *      },\n *     md: {\n *      gridSystemMdMinWidth: '1025px', // Limite mínimo para telas médias (a partir de 1025px)\n *      gridSystemMdMaxWidth: '1366px' // Limite máximo para telas médias (até 1366px)\n *     },\n *     lg: {\n *      gridSystemLgMinWidth: '1367px', // Limite mínimo para telas grandes (a partir de 1367px)\n *      gridSystemLgMaxWidth: '1465px' // Limite máximo para telas grandes (até 1465px)\n *     },\n *     xl: {\n *      gridSystemXlMinWidth: '1466px' // Limite mínimo para telas extra grandes (a partir de 1466px)\n *     }\n *    };\n *\n *    // Atualiza os tokens de media queries com os novos valores\n *    this.poMediaQueryService.updateTokens(tokens);\n *  }\n * }\n * ```\n *\n */\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoMediaQueryService {\n  private readonly renderer: Renderer2;\n\n  constructor(rendererFactory: RendererFactory2) {\n    this.renderer = rendererFactory.createRenderer(null, null);\n  }\n\n  /**\n   * Método que replica as regras baseando-se pelos tokens de media query dentro das folhas de estilo do documento, permitindo a modificação dinâmica\n   * dos valores CSS correspondentes aos tokens fornecidos.\n   *\n   * @param {PoMediaQueryTokens} tokens Objeto contendo os tokens que devem ser atualizados. Cada propriedade corresponde a uma variável CSS que será\n   * dinamicamente modificada dentro das regras de media query.\n   *\n   */\n  updateTokens(tokens: PoMediaQueryTokens): void {\n    const styleSheets = document.styleSheets;\n    const styleElement = this.createStyleElement();\n    const dynamicSheet = styleElement.sheet;\n\n    Array.from(styleSheets).forEach(sheet => {\n      if (sheet) {\n        this.processStyleSheet(sheet, tokens, dynamicSheet);\n      }\n    });\n  }\n\n  private createStyleElement(): HTMLStyleElement {\n    const styleElement = this.renderer.createElement('style');\n    this.renderer.appendChild(document.head, styleElement);\n    return styleElement;\n  }\n\n  private processStyleSheet(sheet: CSSStyleSheet, tokens: PoMediaQueryTokens, dynamicSheet: CSSStyleSheet): void {\n    const rules: CSSRuleList = sheet.cssRules;\n\n    if (!rules) {\n      console.warn('No rules found in stylesheet');\n      return;\n    }\n\n    Array.from(rules).forEach(rule => {\n      if ('media' in rule) {\n        this.updateTokensMediaRule(rule as CSSMediaRule, tokens, dynamicSheet);\n      }\n    });\n  }\n\n  private updateTokensMediaRule(\n    mediaRule: CSSMediaRule,\n    tokens: PoMediaQueryTokens,\n    dynamicSheet: CSSStyleSheet\n  ): void {\n    if (!dynamicSheet) {\n      console.error('dynamicSheet is null or undefined. Cannot insert rule.');\n      return;\n    }\n\n    const variablesInMediaRule = mediaRule.media.mediaText.match(/var\\(--[^)]+\\)/g) || [];\n    if (variablesInMediaRule.length === 0) return;\n\n    let updatedMediaQuery = '';\n\n    variablesInMediaRule.forEach(variable => {\n      Object.entries(tokens).forEach(([token, breakpoints]) => {\n        if (breakpoints) {\n          Object.entries(breakpoints).forEach(([breakpointVariable, value]) => {\n            if (typeof value === 'string') {\n              const tokenToCompare = `var(--${breakpointVariable})`;\n\n              if (tokenToCompare === variable) {\n                updatedMediaQuery = this.buildMediaQuery(token, value, updatedMediaQuery);\n              }\n            }\n          });\n        }\n      });\n    });\n\n    if (updatedMediaQuery) {\n      const cssRules = Array.from(mediaRule.cssRules)\n        .map(rule => rule.cssText)\n        .join(' ');\n\n      dynamicSheet.insertRule(`${updatedMediaQuery} { ${cssRules} }`, dynamicSheet.cssRules.length);\n    }\n  }\n\n  private buildMediaQuery(token: string, value: string, existingQuery: string): string {\n    switch (true) {\n      case token.includes('sm') || token.includes('pull') || token.includes('offset'):\n        return `@media (max-width: ${value})`;\n      case token.includes('xl'):\n        return `@media (min-width: ${value})`;\n      case token.includes('md') || token.includes('lg'):\n        return existingQuery ? `${existingQuery} and (max-width: ${value})` : `@media (min-width: ${value})`;\n      default:\n        return existingQuery;\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { PoMediaQueryService } from './po-media-query.service';\n\n/**\n * @description\n *\n * Módulo do serviço `po-media-query`.\n */\n@NgModule({\n  providers: [PoMediaQueryService],\n  bootstrap: []\n})\nexport class PoMediaQueryModule {}\n","// Define os modos usados no `PoToasterComponent`.\nexport enum PoToasterMode {\n  /** Modo Inline do componente, mostrado fixado no DOM */\n  Inline = 'inline',\n\n  /** Modo Padrão do componente, mostrado como Alerta */\n  Alert = 'alert'\n}\n","// Define as orientações possíveis para o `PoToasterComponent`.\nexport enum PoToasterOrientation {\n  /** Orientção do componente fica no rodapé */\n  Bottom,\n  /** Orientção do componente fica no topo */\n  Top\n}\n","/**\n * @usedBy PoToasterComponent\n *\n * @description\n *\n * Define os tipos possíveis para o `PoToasterComponent`.\n */\nexport enum PoToasterType {\n  /** Tipo de toaster para mensagens de erro. */\n  Error = 'error',\n\n  /** Tipo de toaster para mensagens informativas. */\n  Information = 'information',\n\n  /** Tipo de toaster para mensagens de sucesso. */\n  Success = 'success',\n\n  /** Tipo de toaster para mensagens de atenção. */\n  Warning = 'warning'\n}\n","export const poToasterLiterals = {\n  en: {\n    close: 'Close'\n  },\n  es: {\n    close: 'Cerrar'\n  },\n  pt: {\n    close: 'Fechar'\n  },\n  ru: {\n    close: 'близко'\n  }\n};\n","import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from '../../utils/util';\nimport { PoToasterMode } from './enum/po-toaster-mode.enum';\nimport { PoToasterOrientation } from './enum/po-toaster-orientation.enum';\nimport { PoToasterType } from './enum/po-toaster-type.enum';\nimport { PoToaster } from './interface/po-toaster.interface';\n\n/**\n *\n * @description\n *\n * O Toaster serve para exibir uma mensagem temporária em linha na  interface, podendo ou não ser removida pelos usuários a depender do uso especificado.\n *\n * #### Acessibilidade tratada no componente\n *\n * Algumas diretrizes de acessibilidade já são tratadas no componente, internamente, e não podem ser alteradas pelo proprietário do conteúdo. São elas:\n *\n * - Permitir a interação via teclado (2.1.1: Keyboard (A));\n * - Permitir que o usuário feche facilmente o toaster e não retirar o foco de onde está. (2.2.4: Interrupções (AAA));\n * - Preservar o foco visível na navegação via teclado. (2.4.7: Foco visível (A));\n * - Áreas de clique ou toque para elementos interativos devem ter pelo menos 44x44 pixels (2.5.5: Área de clique (AAA));\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                             | Descrição                                            | Valor Padrão                                      |\n * |----------------------------------------|-------------------------------------------------------|---------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                   |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                        |\n * | `--font-color`                         | Cor principal do texto                                | `var(--color-neutral-dark-90)`                    |\n * | `--font-color-support`                 | Cor principal do texto de supporte                    | `var(--color-neutral-dark-80)`                    |\n * | `--border-radius`                      | Contém o valor do raio dos cantos do elemento&nbsp;   | `var(--border-radius-md)`                         |\n * | **Type Success**                       |                                                       |                                                   |\n * | `--color-success`                      | Cor principal no tipo success                         | `var(--color-feedback-positive-base)`             |\n * | `--background-success`                 | Cor de fundo principal no tipo success                | `var(--color-feedback-positive-lightest)`         |\n * | `--border-color-success`               | Cor da borda principal tipo success                   | `var(--color-feedback-positive-lighter)`          |\n * | **Type Error**                         |                                                       |                                                   |\n * | `--color-error`                        | Cor principal no tipo error                           | `var(--color-feedback-negative-base)`             |\n * | `--background-error`                   | Cor de fundo principal no tipo error                  | `var(--color-feedback-negative-lightest)`         |\n * | `--border-color-error`                 | Cor da borda principal tipo error                     | `var(--color-feedback-negative-lighter)`          |\n * | **Type Warning**                       |                                                       |                                                   |\n * | `--color-icon-warning`                 | Cor principal do icone no tipo warning                | `var(--color-neutral-dark-90)`                    |\n * | `--color-warning`                      | Cor principal no tipo warning                         | `var(--color-feedback-warning-base)`              |\n * | `--background-warning`                 | Cor de fundo principal no tipo warning                | `var(--color-feedback-warning-lightest)`          |\n * | `--border-color-warning`               | Cor da borda principal tipo warning                   | `var(--color-feedback-warning-lighter)`           |\n * | **Type Info**                          |                                                       |                                                   |\n * | `--color-info`                         | Cor principal no tipo info                            | `var(--color-feedback-info-base)`                 |\n * | `--background-info`                    | Cor de fundo principal no tipo info                   | `var(--color-feedback-info-lightest)`             |\n * | `--border-color-info`                  | Cor da borda principal tipo info                      | `var(--color-feedback-info-lighter)`              |\n *\n */\n@Directive()\nexport abstract class PoToasterBaseComponent {\n  private readonly _isHide: boolean;\n  private _sizeActions: string = undefined;\n  private _initialSizeActions: string = undefined;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Ação para a notificação.\n   */\n  @Input('p-action') action: Function;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Label do botão quando houver uma ação definida.\n   */\n  @Input('p-action-label') actionLabel: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Mensagem a ser exibida na notificação.\n   */\n  @Input('p-message') message: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se o Toaster esta invisivel.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-hide', transform: convertToBoolean }) isHide: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento emitido quando o valor de `isHide` é alterado.\n   *\n   */\n  @Output('p-hide-change') isHideChange = new EventEmitter<boolean>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe botão de fechar no toaster modo inline.\n   *\n   * @default `true`\n   */\n  @Input({ alias: 'p-show-close', transform: convertToBoolean }) showClose: boolean = true;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho das ações no componente:\n   * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n   * - `medium`: aplica a medida medium de cada componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set sizeActions(value: string) {\n    this._initialSizeActions = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size-actions')\n  @HostBinding('attr.p-size-actions')\n  get sizeActions(): string {\n    return this._sizeActions ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Mensagem de suporte a ser exibida na notificação.\n   */\n  @Input('p-support-message') supportMessage?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Determina o tipo de notificação.\n   *\n   * Valores aceitos: `error`, `information`, `success` e `warning`.\n   * @see PoToasterType\n   *\n   * @default `PoToasterType.Information`\n   */\n  @Input('p-type') type: PoToasterType = PoToasterType.Information;\n\n  // Determina o modo do Toaster\n  @Input('p-mode') mode: PoToasterMode = PoToasterMode.Inline;\n\n  // Orientação da notificação, a mesma pode ser exibida na parte superior ou inferior da página.\n  orientation: PoToasterOrientation = PoToasterOrientation.Bottom;\n\n  // ComponentRef\n  componentRef: any;\n\n  // Posição para notificação aparecer na tela.\n  position: number;\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSizeActions, PoFieldSize);\n    this._sizeActions = size;\n  }\n\n  protected getInitialSizeActions(): string {\n    return this._initialSizeActions;\n  }\n\n  // Fecha a notificação.\n  abstract close(): void;\n\n  // Altera a posição da notificação.\n  abstract changePosition(value: number): void;\n\n  // Configura o componente po-toaster de acordo com as definições do usuário.\n  abstract configToaster(poToaster: PoToaster): void;\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  OnChanges,\n  OnDestroy,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  inject\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { PoLanguageService } from '../../services/po-language';\nimport { PoButtonComponent } from '../po-button';\nimport { PoToasterMode } from './enum/po-toaster-mode.enum';\nimport { PoToasterOrientation } from './enum/po-toaster-orientation.enum';\nimport { PoToasterType } from './enum/po-toaster-type.enum';\nimport { PoToaster } from './interface/po-toaster.interface';\nimport { poToasterLiterals } from './literals/po-toaster.literals';\nimport { PoToasterBaseComponent } from './po-toaster-base.component';\n\nconst SPACE_BETWEEN_TOASTERS = 8;\n\n/**\n * @docsExtends PoToasterBaseComponent\n *\n * @example\n *\n * <example name=\"po-toaster-basic\" title=\"PO Toaster Basic\">\n *  <file name=\"sample-po-toaster-basic/sample-po-toaster-basic.component.html\"> </file>\n *  <file name=\"sample-po-toaster-basic/sample-po-toaster-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-toaster-labs\" title=\"PO Toaster Labs\">\n *  <file name=\"sample-po-toaster-labs/sample-po-toaster-labs.component.html\"> </file>\n *  <file name=\"sample-po-toaster-labs/sample-po-toaster-labs.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-toaster',\n  templateUrl: './po-toaster.component.html',\n  standalone: false\n})\nexport class PoToasterComponent extends PoToasterBaseComponent implements AfterViewInit, OnDestroy, OnChanges {\n  changeDetector = inject(ChangeDetectorRef);\n  private readonly renderer = inject(Renderer2);\n\n  /* Componente toaster */\n  @ViewChild('toaster') toaster: ElementRef;\n  @ViewChild('buttonClose') buttonClose: PoButtonComponent;\n\n  alive: boolean = true;\n  language: string;\n  literals: any;\n\n  /* Ícone do Toaster */\n  icon: string;\n  /* Margem do Toaster referênte à sua orientação e posição*/\n  margin: number = 0;\n  /* Observable para monitorar o Close to Toaster */\n  observableOnClose = new Subject<any>();\n  /* Posição do Toaster*/\n  toasterPosition: string = 'po-toaster-bottom';\n  /* Tipo do Toaster */\n  toasterType: string;\n\n  constructor() {\n    const poLanguageService = inject(PoLanguageService);\n\n    super();\n    this.language = poLanguageService.getShortLanguage();\n    this.literals = {\n      ...poToasterLiterals[this.language]\n    };\n  }\n\n  ngOnDestroy(): void {\n    this.alive = false;\n  }\n\n  ngAfterViewInit() {\n    setTimeout(() => {\n      this.renderer.addClass(this.toaster.nativeElement, 'po-toaster-visible');\n      if (this.isInline()) {\n        this.configToaster(this);\n      }\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.isHide && changes.isHide.previousValue !== undefined) {\n      if (changes.isHide.currentValue === true) {\n        this.hide();\n      } else {\n        this.show();\n      }\n      this.changeDetector.detectChanges();\n    }\n  }\n\n  /* Muda a posição do Toaster na tela*/\n  changePosition(position: number): void {\n    setTimeout(() => {\n      this.margin = SPACE_BETWEEN_TOASTERS;\n\n      for (let i = 0; i < position; i++) {\n        this.margin += this.returnHeightToaster(i) + SPACE_BETWEEN_TOASTERS;\n      }\n\n      if (this.orientation === PoToasterOrientation.Top) {\n        this.toaster.nativeElement.style.top = this.margin + 'px';\n      } else {\n        this.toaster.nativeElement.style.bottom = this.margin + 'px';\n      }\n    });\n  }\n\n  /* Fecha o componente Toaster */\n  close(): void {\n    if (this.isAlert()) {\n      this.observableOnClose.next(true);\n    } else {\n      this.hide();\n    }\n  }\n\n  setFadeOut() {\n    this.renderer.removeClass(this.toaster.nativeElement, 'po-toaster-visible');\n    this.renderer.addClass(this.toaster.nativeElement, 'po-toaster-invisible');\n  }\n\n  setFadeIn() {\n    this.renderer.removeClass(this.toaster.nativeElement, 'po-toaster-invisible');\n    this.renderer.addClass(this.toaster.nativeElement, 'po-toaster-visible');\n  }\n\n  /* Configura o Toaster com os atributos passados para ele */\n  configToaster(poToaster: PoToaster) {\n    const sizeActions = poToaster === this ? this.getInitialSizeActions() : poToaster.sizeActions;\n\n    this.type = poToaster.type;\n    this.message = poToaster.message;\n    this.orientation = poToaster.orientation;\n    this.position = poToaster.position;\n    this.action = poToaster.action;\n    this.actionLabel = poToaster.actionLabel;\n    this.componentRef = poToaster.componentRef;\n    this.mode = poToaster.mode;\n    this.sizeActions = sizeActions;\n    this.showClose = poToaster.showClose;\n    this.supportMessage = poToaster.supportMessage;\n\n    /* Muda a orientação do Toaster */\n    if (this.orientation === PoToasterOrientation.Top) {\n      this.toasterPosition = 'po-toaster-top';\n    }\n    if (!this.mode) {\n      this.mode = PoToasterMode.Inline;\n    }\n    if (!this.type || !Object.values(PoToasterType).includes(this.type)) {\n      this.type = PoToasterType.Information;\n    }\n\n    /* Muda a posição do Toaster */\n    this.changePosition(this.position);\n\n    if (this.type === PoToasterType.Error) {\n      this.toaster.nativeElement.setAttribute('role', 'alert');\n    } else if (this.action && this.actionLabel) {\n      this.toaster.nativeElement.setAttribute('role', 'alertdialog');\n    } else {\n      this.toaster.nativeElement.setAttribute('role', 'status');\n    }\n\n    this.getToasterType();\n\n    this.changeDetector.detectChanges();\n    this.buttonClose?.buttonElement.nativeElement.setAttribute('aria-label', this.literals.close);\n  }\n\n  hasClose() {\n    return this.isAlert() || this.showClose;\n  }\n\n  isAlert() {\n    return this.mode === 'alert';\n  }\n\n  isInline() {\n    return this.mode === 'inline';\n  }\n\n  getIcon() {\n    return this.icon;\n  }\n\n  show() {\n    this.isHide = true;\n    this.setFadeIn();\n    this.renderer.removeAttribute(this.toaster.nativeElement, 'hidden');\n  }\n\n  hide() {\n    this.isHide = true;\n    this.setFadeOut();\n    this.renderer.setAttribute(this.toaster.nativeElement, 'hidden', 'true');\n  }\n\n  getToasterPosition() {\n    return this.toasterPosition;\n  }\n\n  getToasterType() {\n    switch (this.type) {\n      case PoToasterType.Error: {\n        this.toasterType = 'po-toaster-error';\n        this.icon = 'ICON_CLOSE';\n        break;\n      }\n      case PoToasterType.Information: {\n        this.toasterType = 'po-toaster-info';\n        this.icon = this.isAlert() ? 'ICON_INFO' : 'ICON_WARNING';\n        break;\n      }\n      case PoToasterType.Success: {\n        this.toasterType = 'po-toaster-success';\n        this.icon = 'ICON_OK';\n        break;\n      }\n      case PoToasterType.Warning: {\n        this.toasterType = 'po-toaster-warning';\n        this.icon = this.isAlert() ? 'ICON_EXCLAMATION' : 'ICON_WARNING';\n        break;\n      }\n    }\n\n    return this.toasterType;\n  }\n\n  onButtonClose(event) {\n    if (this.action && !this.actionLabel) {\n      this.poToasterAction(event);\n    } else {\n      this.close();\n    }\n    if (this.isInline()) {\n      this.isHideChange.emit(this.isHide);\n    }\n  }\n\n  /* Chama a função passada pelo atributo `action` */\n  poToasterAction(event): void {\n    this.action(this);\n  }\n\n  returnHeightToaster(position) {\n    if (this.orientation === PoToasterOrientation.Top) {\n      return (document.querySelectorAll('.po-toaster-top')[position] as HTMLElement).offsetHeight;\n    }\n    return (document.querySelectorAll('.po-toaster-bottom')[position] as HTMLElement).offsetHeight;\n  }\n}\n","<div\n  #toaster\n  class=\"\n    po-toaster \n    {{ getToasterType() }} \n    {{ getToasterPosition() }}\n  \"\n  [class.po-toaster-inline]=\"isInline()\"\n  [hidden]=\"isHide\"\n>\n  <div class=\"po-toaster-icon\" [ngClass]=\"isAlert() ? 'po-toaster-icon-default' : 'po-toaster-decoration'\">\n    @if (isAlert()) {\n      <po-icon [p-icon]=\"getIcon()\"></po-icon>\n    }\n  </div>\n\n  @if (isInline()) {\n    <po-icon class=\"po-toaster-inline-icon\" [p-icon]=\"getIcon()\"></po-icon>\n  }\n\n  <div class=\"po-toaster-actions\">\n    <div class=\"po-toaster-message\">\n      {{ message }}\n      @if (supportMessage) {\n        <div class=\"po-toaster-support-message\">{{ supportMessage }}</div>\n      }\n    </div>\n\n    <div class=\"po-toaster-action\">\n      @if (action && actionLabel) {\n        <po-button\n          (p-click)=\"poToasterAction($event)\"\n          [p-label]=\"actionLabel\"\n          p-kind=\"tertiary\"\n          [p-size]=\"sizeActions\"\n        ></po-button>\n      }\n    </div>\n  </div>\n\n  @if (hasClose()) {\n    <div class=\"po-toaster-close\">\n      <div class=\"po-toaster-divider\"></div>\n      <po-button\n        #buttonClose\n        class=\"po-toaster-button-close\"\n        (p-click)=\"onButtonClose($event)\"\n        p-icon=\"ICON_CLOSE\"\n        p-kind=\"tertiary\"\n        [p-size]=\"sizeActions\"\n      ></po-button>\n    </div>\n  }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PoToasterComponent } from './po-toaster.component';\nimport { PoIconModule } from '../po-icon';\nimport { PoButtonModule } from '../po-button';\n\n/**\n * @description\n *\n * Módulo do componente po-toaster.\n */\n@NgModule({\n  imports: [CommonModule, PoIconModule, PoButtonModule],\n  declarations: [PoToasterComponent],\n  exports: [PoToasterComponent]\n})\nexport class PoToasterModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PoButtonModule } from '../../components/po-button/po-button.module';\nimport { PoIconModule } from '../../components/po-icon/po-icon.module';\nimport { PoToasterModule } from '../../components/po-toaster/po-toaster.module';\n\n@NgModule({\n  declarations: [],\n  imports: [CommonModule, PoButtonModule, PoIconModule, PoToasterModule],\n  exports: [],\n  providers: [],\n  bootstrap: []\n})\nexport class PoNotificationModule {}\n","/**\n * @usedBy PoThemeService\n *\n * @description\n * Enum utilizado para configurar o tipo de tema suportado, é possível alternar entre os tipos definidos.\n *\n * ```\n * import { PoThemeTypeEnum } from '@po-ui/theme';\n *\n * // Definindo o tipo de tema como claro\n * themeService.setTheme(...theme, PoThemeTypeEnum.light);\n *\n * // Definindo o tipo de tema como escuro\n * themeService.setTheme(...theme, PoThemeTypeEnum.dark);\n *\n * // Alterando o tipo do tema para um tema já aplicado\n * themeService.setCurrentThemeType(PoThemeTypeEnum.dark);\n * ```\n */\nexport enum PoThemeTypeEnum {\n  /** Define o tema como claro. */\n  light,\n\n  /** Define o tema como escuro. */\n  dark\n}\n","/**\n * Define estilos específicos por componente e onRoot para temas de acessibilidade AA.\n */\nexport const poThemeDefaultAA = {\n  perComponent: {},\n  onRoot: {\n    // #region COMMON\n    '--outline-width': 'var(--border-width-md)',\n    '--outline-width-focus-visible': 'var(--border-width-md)'\n  }\n};\n","/**\n * Define estilos específicos por componente e onRoot para temas de acessibilidade AAA.\n */\nexport const poThemeDefaultAAA = {\n  perComponent: {},\n  onRoot: {\n    // #region FONT\n    '--font-family': 'Roboto',\n    '--font-family-theme': 'Roboto',\n    '--font-family-theme-bold': 'Roboto-Bold',\n    '--font-family-theme-extra-light': 'Roboto-Condensed-Light',\n    '--font-family-heading': 'Roboto',\n    '--font-family-code': 'Monospace'\n  }\n};\n","export const poThemeDensity = {\n  small: {\n    '--default-spacing-0': '0',\n    '--default-spacing-xs': 'var(--spacing-xs)',\n    '--default-spacing-sm': 'var(--spacing-sm)',\n    '--default-spacing-md': 'var(--spacing-md)',\n    '--default-spacing-lg': 'var(--spacing-lg)',\n    '--default-spacing-xl': 'var(--spacing-xl)',\n    '--default-line-height-xs': 'var(--line-height-xs)',\n    '--default-spacing-squish-xs': 'var(--spacing-squish-xs)'\n  }\n};\n","import {\n  PoThemeColorAction,\n  PoThemeColorCategorical,\n  PoThemeColorFeedback,\n  PoThemeColorNeutral,\n  poThemeColorBrand\n} from '../../interfaces/po-theme-color.interface';\n\n/**\n * Define as cores de ação padrão para temas claros.\n */\nconst poThemeDefaultActions: PoThemeColorAction = {\n  /** Cor padrão. */\n  default: 'var(--color-brand-01-base)',\n  /** Cor ao passar o mouse. */\n  hover: 'var(--color-brand-01-dark)',\n  /** Cor quando pressionado. */\n  pressed: 'var(--color-brand-01-darker)',\n  /** Cor quando desabilitado. */\n  disabled: 'var(--color-neutral-light-30)',\n  /** Cor ao focar. */\n  focus: 'var(--color-brand-01-darkest)'\n};\n\n/**\n * Define as cores neutras padrão para temas claros.\n */\nconst poThemeDefaultNeutrals: PoThemeColorNeutral = {\n  /** Tons de cinza claro. */\n  light: {\n    '00': '#ffffff',\n    '05': '#fbfbfb',\n    '10': '#eceeee',\n    '20': '#dadedf',\n    '30': '#b6bdbf'\n  },\n  /** Tons de cinza intermediários. */\n  mid: {\n    '40': '#9da7a9',\n    '60': '#6e7c7f'\n  },\n  /** Tons de cinza escuro. */\n  dark: {\n    '70': '#4a5c60',\n    '80': '#2c3739',\n    '90': '#1d2426',\n    '95': '#0b0e0e'\n  }\n};\n\n/**\n * Define as cores de feedback padrão para temas claros.\n */\nconst poThemeDefaultFeedback: PoThemeColorFeedback = {\n  /** Cores para feedback negativo. */\n  negative: {\n    lightest: '#f6e6e5',\n    lighter: '#e3aeab',\n    light: '#d58581',\n    base: '#be3e37',\n    dark: '#9b2d27',\n    darker: '#72211d',\n    darkest: '#4a1512'\n  },\n  /** Cores para feedback informativo. */\n  info: {\n    lightest: '#e3e9f7',\n    lighter: '#b0c1e8',\n    light: '#7996d7',\n    base: '#23489f',\n    dark: '#173782',\n    darker: '#0f2557',\n    darkest: '#081536'\n  },\n  /** Cores para feedback positivo. */\n  positive: {\n    lightest: '#def7ed',\n    lighter: '#7ecead',\n    light: '#41b483',\n    base: '#107048',\n    dark: '#0f5236',\n    darker: '#083a25',\n    darkest: '#002415'\n  },\n  /** Cores para feedback de aviso. */\n  warning: {\n    lightest: '#fcf6e3',\n    lighter: '#f7dd97',\n    light: '#f1cd6a',\n    base: '#efba2a',\n    dark: '#d8a20e',\n    darker: '#705200',\n    darkest: '#473400'\n  }\n};\n\n/**\n * Define as cores da Brand padrão para temas claros.\n */\nconst poThemeDefaultBrands: poThemeColorBrand = {\n  '01': {\n    lightest: '#f2eaf6',\n    lighter: '#d9c2e5',\n    light: '#bd94d1',\n    base: '#753399',\n    dark: '#5b1c7d',\n    darker: '#400e58',\n    darkest: '#260538'\n  },\n  '02': {\n    base: '#b92f72'\n  },\n  '03': {\n    base: '#ffd464'\n  }\n};\n\nconst poThemeDefaultCategoricals: PoThemeColorCategorical = {\n  '01': '#004CFF',\n  '02': '#C25534',\n  '03': '#792CC7',\n  '04': '#008768',\n  '05': '#D62793',\n  '06': '#D44317',\n  '07': '#4779A8',\n  '08': '#AD6207'\n};\n\nconst poThemeDefaultOverlayCategoricals: PoThemeColorCategorical = {\n  '01': '#739CFD',\n  '02': '#F6B5A1',\n  '03': '#C6A8E6',\n  '04': '#69CAB8',\n  '05': '#F3AFD9',\n  '06': '#FCA58B',\n  '07': '#99BFE3',\n  '08': '#E8B16E'\n};\n\n/**\n * Define estilos específicos por componente e onRoot para temas claros para AAA.\n */\nconst poThemeDefaultLightValues = {\n  perComponent: {},\n  onRoot: {\n    /* CATEGORICAL COLORS */\n    '--color-caption-categorical-01': '#004CFF',\n    '--color-caption-categorical-02': '#C25534',\n    '--color-caption-categorical-03': '#792CC7',\n    '--color-caption-categorical-04': '#008768',\n    '--color-caption-categorical-05': '#D62793',\n    '--color-caption-categorical-06': '#D44317',\n    '--color-caption-categorical-07': '#4779A8',\n    '--color-caption-categorical-08': '#AD6207',\n    /* CATEGORICAL OVERLAY COLORS */\n    '--color-caption-categorical-overlay-01': '#739CFD',\n    '--color-caption-categorical-overlay-02': '#F6B5A1',\n    '--color-caption-categorical-overlay-03': '#C6A8E6',\n    '--color-caption-categorical-overlay-04': '#69CAB8',\n    '--color-caption-categorical-overlay-05': '#F3AFD9',\n    '--color-caption-categorical-overlay-06': '#FCA58B',\n    '--color-caption-categorical-overlay-07': '#99BFE3',\n    '--color-caption-categorical-overlay-08': '#E8B16E'\n  }\n};\n\nexport {\n  poThemeDefaultBrands,\n  poThemeDefaultActions,\n  poThemeDefaultFeedback,\n  poThemeDefaultNeutrals,\n  poThemeDefaultLightValues,\n  poThemeDefaultCategoricals,\n  poThemeDefaultOverlayCategoricals\n};\n","import {\n  PoThemeColorAction,\n  poThemeColorBrand,\n  PoThemeColorCategorical,\n  PoThemeColorFeedback,\n  PoThemeColorNeutral\n} from '../../interfaces/po-theme-color.interface';\n\n/**\n * Define as cores de ação padrão para temas escuros.\n */\nconst poThemeDefaultActionsDark: PoThemeColorAction = {\n  /** Cor padrão. */\n  default: 'var(--color-brand-01-dark)',\n  /** Cor ao passar o mouse. */\n  hover: 'var(--color-brand-01-darker)',\n  /** Cor quando pressionado. */\n  pressed: 'var(--color-brand-01-darkest)',\n  /** Cor quando desabilitado. */\n  disabled: 'var(--color-neutral-mid-40)',\n  /** Cor ao focar. */\n  focus: 'var(--color-brand-01-darkest)'\n};\n\n/**\n * Define as cores neutras padrão para temas escuros.\n */\nconst poThemeDefaultNeutralsDark: PoThemeColorNeutral = {\n  /** Tons de cinza claro. */\n  light: {\n    '00': '#1c1c1c',\n    '05': '#202020',\n    '10': '#2b2b2b',\n    '20': '#3b3b3b',\n    '30': '#5a5a5a'\n  },\n  /** Tons de cinza intermediários. */\n  mid: {\n    '40': '#7c7c7c',\n    '60': '#a1a1a1'\n  },\n  /** Tons de cinza escuro. */\n  dark: {\n    '70': '#c1c1c1',\n    '80': '#d9d9d9',\n    '90': '#eeeeee',\n    '95': '#fbfbfb'\n  }\n};\n\n/**\n * Define as cores de feedback padrão para temas escuros.\n */\nconst poThemeDefaultFeedbackDark: PoThemeColorFeedback = {\n  /** Cores para feedback negativo. */\n  negative: {\n    lightest: '#4a1512',\n    lighter: '#72211d',\n    light: '#9b2d27',\n    base: '#be3e37',\n    dark: '#d58581',\n    darker: '#e3aeab',\n    darkest: '#f6e6e5'\n  },\n  /** Cores para feedback informativo. */\n  info: {\n    lightest: '#081536',\n    lighter: '#0f2557',\n    light: '#173782',\n    base: '#0079b8',\n    dark: '#7996d7',\n    darker: '#b0c1e8',\n    darkest: '#e3e9f7'\n  },\n  /** Cores para feedback positivo. */\n  positive: {\n    lightest: '#002415',\n    lighter: '#083a25',\n    light: '#0f5236',\n    base: '#107048',\n    dark: '#41b483',\n    darker: '#7ecead',\n    darkest: '#def7ed'\n  },\n  /** Cores para feedback de aviso. */\n  warning: {\n    lightest: '#473400',\n    lighter: '#705200',\n    light: '#d8a20e',\n    base: '#efba2a',\n    dark: '#f1cd6a',\n    darker: '#f7dd97',\n    darkest: '#fcf6e3'\n  }\n};\n\nconst poThemeDefaultBrandsDark: poThemeColorBrand = {\n  '01': {\n    lightest: '#260538',\n    lighter: '#400e58',\n    light: '#5b1c7d',\n    base: '#753399',\n    dark: '#bd94d1',\n    darker: '#d9c2e5',\n    darkest: '#f2eaf6'\n  },\n  '02': {\n    base: '#b92f72'\n  },\n  '03': {\n    base: '#ffd464'\n  }\n};\n\nconst poThemeDefaultCategoricalsDark: PoThemeColorCategorical = {\n  '01': '#2E67FF',\n  '02': '#F76D43',\n  '03': '#9654FF',\n  '04': '#00BF9C',\n  '05': '#F22CA6',\n  '06': '#FC501C',\n  '07': '#63A9EB',\n  '08': '#FA8E0A'\n};\n\nconst poThemeDefaultCategoricalsOverlayDark: PoThemeColorCategorical = {\n  '01': '#1F3FAD',\n  '02': '#B8523E',\n  '03': '#4D2C97',\n  '04': '#018E7F',\n  '05': '#95277B',\n  '06': '#BA3B15',\n  '07': '#4B80B3',\n  '08': '#B96907'\n};\n\n/**\n * Define estilos específicos por componente e onRoot para temas escuros.\n */\nconst poThemeDefaultDarkValues = {\n  perComponent: {\n    /** TAB */\n    '.po-tab-border-active': {\n      'background-color': 'var(--color)'\n    },\n    /** OVERLAY */\n    'po-overlay': {\n      '--color-overlay': 'var(--color-neutral-light-20)'\n    },\n    /** MODAL */\n    'po-modal': {\n      '--color-overlay': 'var(--color-neutral-light-20)'\n    },\n    /** TOASTER */\n    'po-toaster': {\n      '--color-icon': 'var(--color-neutral-dark-80)',\n      '--color-icon-warning': 'var(--color-neutral-light-00)'\n    },\n    /** BADGE */\n    'po-badge': {\n      '--color': 'var(--color-neutral-dark-95)'\n    },\n    'po-badge[p-status=warning]': {\n      '--color': 'var(--color-neutral-light-00)'\n    },\n    // LINK: item visitado\n    'po-link': {\n      '--text-color-visited': 'var(--color-action-default)'\n    },\n    // focus e outline: po-rich-text-body/ poinfo/ po-list-view/ po-stepper-circle (mudar no po-style)\n    'po-rich-text-body .po-rich-text-body:focus-visible, po-info .po-info-link:focus-visible, po-list-view a.po-list-view-title-link:focus-visible, po-stepper-circle .po-stepper-circle:focus-visible':\n      {\n        'border-color': 'var(--color-action-default);',\n        'outline-color': 'var(--color-action-focus);',\n        'outline-width': 'var(--outline-width-focus-visible);',\n        'outline-style': 'solid;',\n        'outline-offset': '2px;'\n      },\n    // background container\n    'po-container': {\n      '--background': 'var(--color-neutral-light-00);'\n    },\n    // Background input disabled\n    'div.po-lookup-filter-content input.po-input, input.po-input, po-datepicker, po-datepicker-range, po-decimal, po-email, po-input, po-login, po-lookup, po-number, po-password, po-url, po-combo, po-search, po-select, po-multiselect':\n      {\n        '--background-disabled': 'var(--color-neutral-light-20);'\n      },\n    // autocomplete dos inputs (setar no po-style)\n    'po-input input:-webkit-autofill, po-datepicker input:-webkit-autofill, po-datepicker-range input:-webkit-autofill, po-decimal input:-webkit-autofill, po-email input:-webkit-autofill, po-input input:-webkit-autofill, po-login input:-webkit-autofill, po-lookup input:-webkit-autofill, po-number input:-webkit-autofill, po-password input:-webkit-autofill, po-url input:-webkit-autofill, po-combo input:-webkit-autofill':\n      {\n        '-webkit-background-clip': 'text',\n        '-webkit-text-fill-color': '#ffffff',\n        'transition': 'background-color 5000s ease-in-out 0s',\n        'box-shadow': 'inset 0 0 20px 20px #23232329'\n      },\n    'po-overlay, po-page-slide': {\n      '--color-overlay': 'var(--color-neutral-light-05)'\n    },\n    /** SELECT */\n    'po-select': {\n      '--color-hover': 'var(--color-action-hover);'\n    },\n    /** DROPDOWN */\n    '.po-listbox-group-header .po-tag': {\n      'color': 'var(--color-neutral-light-00);',\n      'background-color': 'var(--color-action-default);'\n    }\n  },\n  onRoot: {\n    /* CORES LEGADAS */\n    '--color-neutral': 'var(--color-neutral-dark-70)',\n    '--color-secondary': 'var(--color-action-default)',\n    '--color-secondary-light-20': 'var(--color-brand-01-lighter)',\n    '--color-secondary-light-40': 'var(--color-brand-01-light)',\n    '--color-secondary-dark-20': 'var(--color-brand-01-dark)',\n    '--color-secondary-dark-40': 'var(--color-brand-01-darker)',\n    '--color-secondary-dark-80': 'var(--color-brand-01-darkest)',\n    '--color-black-alpha-10': 'rgba(255, 255, 255, 0.1)',\n    '--color-black-alpha-15': 'rgba(255, 255, 255, 0.15)',\n    '--color-black-alpha-30': 'rgba(255, 255, 255, 0.3)',\n    '--color-primary-light-80': 'color-mix(in srgb, var(--color-brand-02-base) 80%, black)',\n    '--color-primary-light-95': 'color-mix(in srgb, var(--color-brand-02-base) 95%, black)',\n    '--color-primary-alpha-50': 'color-mix(in srgb, var(--color-brand-02-base) 50%, white)',\n    '--color-primary-dark-20': 'color-mix(in srgb, var(--color-brand-02-base) 20%, white)',\n    '--color-primary-dark-40': 'color-mix(in srgb, var(--color-brand-02-base) 40%, white)',\n    '--color-secondary-dark-60-alpha-70': 'color-mix(in srgb, var(--color-neutral-mid-60) 70%, white)',\n    '--color-tertiary-light-90': 'color-mix(in srgb, var(--color-brand-03-base) 90%, black)',\n    '--color-tertiary-dark-5': 'color-mix(in srgb, var(--color-brand-03-base) 5%, white)',\n    /* PAGE  */\n    '--color-page-background-color-page': 'var(--color-neutral-light-05)',\n    /* TOOLBAR BADGE */\n    '--color-toolbar-color-badge-text': 'var(--color-neutral-dark-95)',\n    /* POPOVER */\n    '--shadow-popover-box-shadow': '0 0 4px 0 var(--color-neutral-light-20)',\n    '--shadow-popover-box-shadow-arrow': '-1px -1px 1px 0 var(--color-neutral-light-20)',\n    /* CALENDAR */\n    '--color-calendar-background-color-box-background-range':\n      'var(--color-interval)' /*Deprecated v23.x.x utilizar --color-interval */,\n    /* STEPPER */\n    '--color-stepper-circle-disabled': 'var(--color-neutral-mid-40)',\n    '--color-stepper-bar-disabled': 'var(--color-neutral-mid-40)',\n    /* CATEGORICAL COLORS */\n    '--color-caption-categorical-01': '#2E67FF',\n    '--color-caption-categorical-02': '#F76D43',\n    '--color-caption-categorical-03': '#9654FF',\n    '--color-caption-categorical-04': '#00BF9C',\n    '--color-caption-categorical-05': '#F22CA6',\n    '--color-caption-categorical-06': '#FC501C',\n    '--color-caption-categorical-07': '#63A9EB',\n    '--color-caption-categorical-08': '#FA8E0A',\n    /* CATEGORICAL OVERLAY COLORS */\n    '--color-caption-categorical-overlay-01': '#1F3FAD',\n    '--color-caption-categorical-overlay-02': '#B8523E',\n    '--color-caption-categorical-overlay-03': '#4D2C97',\n    '--color-caption-categorical-overlay-04': '#018E7F',\n    '--color-caption-categorical-overlay-05': '#95277B',\n    '--color-caption-categorical-overlay-06': '#BA3B15',\n    '--color-caption-categorical-overlay-07': '#4B80B3',\n    '--color-caption-categorical-overlay-08': '#B96907'\n  }\n};\n\nexport {\n  poThemeDefaultBrandsDark,\n  poThemeDefaultActionsDark,\n  poThemeDefaultFeedbackDark,\n  poThemeDefaultNeutralsDark,\n  poThemeDefaultDarkValues,\n  poThemeDefaultCategoricalsDark,\n  poThemeDefaultCategoricalsOverlayDark\n};\n","import { PoThemeColorCategorical } from '../../interfaces/po-theme-color.interface';\nimport { poThemeDefaultDarkValues } from './po-theme-dark-defaults.constant';\n\nconst poThemeDefaultCategoricalsDarkAA: PoThemeColorCategorical = {\n  '01': '#3773FF',\n  '02': '#F86544',\n  '03': '#B46AFF',\n  '04': '#06A883',\n  '05': '#FF45B8',\n  '06': '#FF6021',\n  '07': '#2393FB',\n  '08': '#C5863A'\n};\n\nconst poThemeDefaultCategoricalsOverlayDarkAA: PoThemeColorCategorical = {\n  '01': '#1C3A80',\n  '02': '#7C3322',\n  '03': '#5A3580',\n  '04': '#035442',\n  '05': '#80235C',\n  '06': '#803011',\n  '07': '#124A7E',\n  '08': '#63431D'\n};\n\n/**\n * Define estilos específicos por componente e onRoot para temas escuros.\n */\nconst poThemeDefaultDarkValuesAA = {\n  perComponent: poThemeDefaultDarkValues.perComponent,\n  onRoot: {\n    ...poThemeDefaultDarkValues.onRoot,\n    /* CATEGORICAL COLORS */\n    '--color-caption-categorical-01': '#3773FF',\n    '--color-caption-categorical-02': '#F86544',\n    '--color-caption-categorical-03': '#B46AFF',\n    '--color-caption-categorical-04': '#06A883',\n    '--color-caption-categorical-05': '#FF45B8',\n    '--color-caption-categorical-06': '#FF6021',\n    '--color-caption-categorical-07': '#2393FB',\n    '--color-caption-categorical-08': '#C5863A',\n    /* CATEGORICAL OVERLAY COLORS */\n    '--color-caption-categorical-overlay-01': '#1C3A80',\n    '--color-caption-categorical-overlay-02': '#7C3322',\n    '--color-caption-categorical-overlay-03': '#5A3580',\n    '--color-caption-categorical-overlay-04': '#035442',\n    '--color-caption-categorical-overlay-05': '#80235C',\n    '--color-caption-categorical-overlay-06': '#803011',\n    '--color-caption-categorical-overlay-07': '#124A7E',\n    '--color-caption-categorical-overlay-08': '#63431D'\n  }\n};\n\nexport { poThemeDefaultCategoricalsDarkAA, poThemeDefaultCategoricalsOverlayDarkAA, poThemeDefaultDarkValuesAA };\n","import { PoThemeColorCategorical } from '../../interfaces/po-theme-color.interface';\nimport { poThemeDefaultLightValues } from './po-theme-light-defaults.constant';\n\nconst poThemeDefaultCategoricalsAA: PoThemeColorCategorical = {\n  '01': '#3773FF',\n  '02': '#F86544',\n  '03': '#B46AFF',\n  '04': '#06A883',\n  '05': '#FF45B8',\n  '06': '#FF6021',\n  '07': '#2393FB',\n  '08': '#C5863A'\n};\n\nconst poThemeDefaultOverlayCategoricalsAA: PoThemeColorCategorical = {\n  '01': '#9BB9FF',\n  '02': '#FBB2A1',\n  '03': '#D9B5FF',\n  '04': '#83D3C1',\n  '05': '#FFA2DB',\n  '06': '#FFAF90',\n  '07': '#91C9FD',\n  '08': '#E2C39C'\n};\n\n/**\n * Define estilos específicos por componente e onRoot para temas claros para AA.\n */\nconst poThemeDefaultLightValuesAA = {\n  perComponent: poThemeDefaultLightValues.perComponent,\n  onRoot: {\n    ...poThemeDefaultLightValues.onRoot,\n    /* CATEGORICAL COLORS */\n    '--color-caption-categorical-01': '#3773FF',\n    '--color-caption-categorical-02': '#F86544',\n    '--color-caption-categorical-03': '#B46AFF',\n    '--color-caption-categorical-04': '#06A883',\n    '--color-caption-categorical-05': '#FF45B8',\n    '--color-caption-categorical-06': '#FF6021',\n    '--color-caption-categorical-07': '#2393FB',\n    '--color-caption-categorical-08': '#C5863A',\n    /* CATEGORICAL OVERLAY COLORS */\n    '--color-caption-categorical-overlay-01': '#9BB9FF',\n    '--color-caption-categorical-overlay-02': '#FBB2A1',\n    '--color-caption-categorical-overlay-03': '#D9B5FF',\n    '--color-caption-categorical-overlay-04': '#83D3C1',\n    '--color-caption-categorical-overlay-05': '#FFA2DB',\n    '--color-caption-categorical-overlay-06': '#FFAF90',\n    '--color-caption-categorical-overlay-07': '#91C9FD',\n    '--color-caption-categorical-overlay-08': '#E2C39C'\n  }\n};\n\nexport { poThemeDefaultCategoricalsAA, poThemeDefaultOverlayCategoricalsAA, poThemeDefaultLightValuesAA };\n","import { PoThemeA11yEnum } from '../enum/po-theme-a11y.enum';\nimport { PoThemeTypeEnum } from '../enum/po-theme-type.enum';\nimport { PoThemeTokens } from '../interfaces/po-theme-tokens.interface';\nimport { PoTheme } from '../interfaces/po-theme.interface';\nimport {\n  poThemeDefaultActions,\n  poThemeDefaultBrands,\n  poThemeDefaultFeedback,\n  poThemeDefaultNeutrals,\n  poThemeDefaultCategoricals,\n  poThemeDefaultOverlayCategoricals\n} from './types/po-theme-light-defaults.constant';\nimport {\n  poThemeDefaultActionsDark,\n  poThemeDefaultBrandsDark,\n  poThemeDefaultCategoricalsDark,\n  poThemeDefaultCategoricalsOverlayDark,\n  poThemeDefaultFeedbackDark,\n  poThemeDefaultNeutralsDark\n} from './types/po-theme-dark-defaults.constant';\nimport {\n  poThemeDefaultCategoricalsDarkAA,\n  poThemeDefaultCategoricalsOverlayDarkAA\n} from './types/po-theme-dark-defaults-AA.constant';\nimport {\n  poThemeDefaultCategoricalsAA,\n  poThemeDefaultOverlayCategoricalsAA\n} from './types/po-theme-light-defaults-AA.constant';\n\n/**\n * Tokens de tema padrão para temas claros.\n */\nconst poThemeDefaultLight: PoThemeTokens = {\n  color: {\n    brand: poThemeDefaultBrands,\n    action: poThemeDefaultActions,\n    neutral: poThemeDefaultNeutrals,\n    feedback: poThemeDefaultFeedback,\n    categorical: poThemeDefaultCategoricals,\n    'categorical-overlay': poThemeDefaultOverlayCategoricals\n  }\n};\n\n/**\n * Tokens de tema padrão para temas claros.\n */\nconst poThemeDefaultLightAA: PoThemeTokens = {\n  color: {\n    ...poThemeDefaultLight.color,\n    categorical: poThemeDefaultCategoricalsAA,\n    'categorical-overlay': poThemeDefaultOverlayCategoricalsAA\n  }\n};\n\n/**\n * Tokens de tema padrão para o tema escuro.\n */\nconst poThemeDefaultDark: PoThemeTokens = {\n  color: {\n    brand: poThemeDefaultBrandsDark,\n    action: poThemeDefaultActionsDark,\n    neutral: poThemeDefaultNeutralsDark,\n    feedback: poThemeDefaultFeedbackDark,\n    categorical: poThemeDefaultCategoricalsDark,\n    'categorical-overlay': poThemeDefaultCategoricalsOverlayDark\n  }\n};\n\n/**\n * Tokens de tema padrão para o tema escuro.\n */\nconst poThemeDefaultDarkAA: PoThemeTokens = {\n  color: {\n    ...poThemeDefaultDark.color,\n    categorical: poThemeDefaultCategoricalsDarkAA,\n    'categorical-overlay': poThemeDefaultCategoricalsOverlayDarkAA\n  }\n};\n\n/**\n * Tema padrão.\n */\nconst poThemeDefault: PoTheme = {\n  name: 'default',\n  type: [\n    {\n      light: poThemeDefaultLight,\n      dark: poThemeDefaultDark,\n      a11y: PoThemeA11yEnum.AAA\n    },\n    {\n      light: poThemeDefaultLightAA,\n      dark: poThemeDefaultDarkAA,\n      a11y: PoThemeA11yEnum.AA\n    }\n  ],\n  active: { type: PoThemeTypeEnum.light, a11y: PoThemeA11yEnum.AAA }\n};\n\nexport { poThemeDefault, poThemeDefaultDark, poThemeDefaultLight };\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, Renderer2, RendererFactory2 } from '@angular/core';\n\nimport { PoDensityMode } from '../../enums/po-density-mode.enum';\nimport { getA11yDefaultSize, getA11yLevel, PoUtils } from '../../utils/util';\nimport { PoThemeA11yEnum } from './enum/po-theme-a11y.enum';\nimport { PoThemeTypeEnum } from './enum/po-theme-type.enum';\nimport { poThemeDefaultAA } from './helpers/accessibilities/po-theme-default-aa.constant';\nimport { poThemeDefaultAAA } from './helpers/accessibilities/po-theme-default-aaa.constant';\nimport { poThemeDensity } from './helpers/accessibilities/po-theme-density.constant';\nimport { poThemeDefault } from './helpers/po-theme-poui.constant';\nimport { poThemeDefaultDarkValuesAA } from './helpers/types/po-theme-dark-defaults-AA.constant';\nimport { poThemeDefaultDarkValues } from './helpers/types/po-theme-dark-defaults.constant';\nimport { poThemeDefaultLightValuesAA } from './helpers/types/po-theme-light-defaults-AA.constant';\nimport { poThemeDefaultLightValues } from './helpers/types/po-theme-light-defaults.constant';\nimport { PoThemeColor } from './interfaces/po-theme-color.interface';\nimport { PoThemeTokens } from './interfaces/po-theme-tokens.interface';\nimport { PoTheme, PoThemeActive } from './interfaces/po-theme.interface';\n\n/**\n * @description\n *\n * O serviço `PoThemeService` permite customizar as cores do tema padrão do `PO-UI` e definir o nível de acessibilidade\n * mais adequado ao projeto.\n *\n * O nível **AAA** (padrão) garante maior contraste, áreas clicáveis amplas e espaçamentos maiores entre os elementos,\n * enquanto o nível **AA** mantém a conformidade com as diretrizes de acessibilidade, mas com proporções mais equilibradas\n * e contornos mais sutis.\n *\n * O serviço também possibilita configurar a **densidade de espaçamentos**, permitindo ajustar o espaço entre e dentro dos\n * componentes. Essa configuração pode ser utilizada com qualquer nível de acessibilidade.\n *\n * > Observação: a customização das cores de `feedback` não é recomendada por motivos de acessibilidade e usabilidade.\n *\n * > Para saber mais sobre como customizar o tema padrão, consulte o item\n * [Customização de Temas usando o serviço PO-UI](guides/theme-service) na aba `Guias`.\n */\n\n/**\n * @example\n *\n * <example name=\"po-theme-labs\" title=\"PO Theme Labs\">\n *  <file name=\"sample-po-theme-labs/sample-po-theme-labs.component.html\"> </file>\n *  <file name=\"sample-po-theme-labs/sample-po-theme-labs.component.ts\"> </file>\n * </example>\n *\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoThemeService {\n  private readonly renderer: Renderer2;\n  private theme: PoTheme;\n\n  constructor(\n    @Inject(DOCUMENT) private readonly document: Document,\n    rendererFactory: RendererFactory2\n  ) {\n    this.renderer = rendererFactory.createRenderer(null, null);\n\n    this.setDefaultBaseStyle();\n  }\n\n  /**\n   * Aplica um tema ao componente de acordo com o tipo de tema e o nível de acessibilidade especificados.\n   *\n   * Este método configura o tema do componente com base no objeto `themeConfig` fornecido, no `themeType` e no `a11yLevel`.\n   * Além disso, ele pode opcionalmente salvar a preferência de tema no localStorage, se solicitado.\n   *\n   * @param {PoTheme} themeConfig - Configuração de tema a ser aplicada ao componente.\n   * @param {PoThemeTypeEnum} [themeType=PoThemeTypeEnum.light] - (Opcional) Tipo de tema, podendo ser 'light' (claro) ou 'dark' (escuro). O tema claro é o padrão.\n   * @param {PoThemeA11yEnum} [a11yLevel=PoThemeA11yEnum.AAA] - (Opcional) Nível de acessibilidade dos componentes, podendo ser AA ou AAA. Padrão é AAA.\n   * @param {boolean} [persistPreference=true] - (Opcional) Define se a preferência de tema deve ser salva no\n   * localStorage para persistência. Por padrão é `true`, ou seja, a preferência será salva automaticamente.\n   */\n  setTheme(\n    themeConfig: PoTheme,\n    themeType: PoThemeTypeEnum = PoThemeTypeEnum.light,\n    a11yLevel: PoThemeA11yEnum = PoThemeA11yEnum.AAA,\n    persistPreference: boolean = true\n  ): Promise<void> {\n    if (themeConfig === poThemeDefault) {\n      this.resetBaseTheme();\n    }\n    // Change theme name, remove special characteres and number, replace space with dash\n    this.formatTheme(themeConfig, themeType, a11yLevel);\n\n    const _themeActive =\n      Array.isArray(themeConfig.type) && themeConfig.type.length >= 1\n        ? themeConfig.type.find(e => e.a11y === a11yLevel)\n        : themeConfig.type;\n\n    const _themeType = _themeActive[PoThemeTypeEnum[themeType]];\n    if (!_themeType) {\n      return;\n    }\n\n    const colorStyles = _themeType.color ? this.generateThemeStyles(_themeType.color) : '';\n    const perComponentStyles = _themeType.perComponent ? this.generatePerComponentStyles(_themeType.perComponent) : '';\n    const onRootStyles = _themeType.onRoot ? this.generateAdditionalStyles(_themeType.onRoot) : '';\n    const additionalStyles = this.generateAdditionalStyles(_themeType);\n\n    const combinedStyles = `\n      :root.${themeConfig.name}-${PoThemeTypeEnum[themeType]}-${a11yLevel} {\n        ${colorStyles}\n        ${perComponentStyles}\n        ${onRootStyles}\n        ${additionalStyles}\n      }`;\n\n    this.applyThemeStyles(combinedStyles);\n\n    const defaultSize = localStorage.getItem('po-default-size');\n    this.setDataDefaultSizeHTML(defaultSize, a11yLevel);\n\n    document.documentElement.setAttribute('data-a11y', a11yLevel === PoThemeA11yEnum.AAA ? 'AAA' : 'AA');\n    this.changeThemeType(themeConfig, persistPreference);\n    this.dispatchEvent(themeConfig);\n\n    const densityMode = localStorage.getItem('po-density-mode');\n    this.setDensityMode(densityMode);\n  }\n\n  private setDataDefaultSizeHTML(size: string, a11yLevel: string): void {\n    if (size === 'small' && a11yLevel === PoThemeA11yEnum.AA) {\n      document.documentElement.setAttribute('data-default-size', size);\n    }\n  }\n\n  /**\n   * Retorna o nível de acessibilidade configurado no tema.\n   * Se não estiver configurado, retorna `AAA` como padrão.\n   * @returns {PoThemeA11yEnum} O nível de acessibilidade, que pode ser `AA` ou `AAA`.\n   */\n  getA11yLevel(): PoThemeA11yEnum {\n    return getA11yLevel();\n  }\n\n  /**\n   * Define o tamanho `small` como padrão para componentes que não possuem um tamanho definido. Essa configuração é\n   * aplicada globalmente apenas quando o nível de acessibilidade for `AA`. O valor definido é salvo no\n   * `localStorage` sob a chave `po-default-size` e o atributo `data-default-size` é adicionado ao elemento HTML\n   * para que os componentes possam aplicar o tamanho\n   *\n   * Exemplo de uso:\n   *\n   * ```typescript\n   * import { poThemeDefault, PoThemeService, PoThemeTypeEnum, PoThemeA11yEnum } from '@po-ui/ng-components';\n   *\n   * private themeService = inject(PoThemeService);\n   *\n   * constructor() {\n   *  this.themeService.setA11yDefaultSizeSmall(true);\n   *  this.themeService.setTheme(poThemeDefault, PoThemeTypeEnum.light, PoThemeA11yEnum.AA);\n   * }\n   * ```\n   *\n   * > Para garantir que o tamanho `small` seja aplicado corretamente a todos os componentes, recomendamos\n   * definir esta configuração **junto com o nível de acessibilidade `AA` na inicialização da aplicação**.\n   * > Para ajustar a densidade visual dos componentes agrupadores (como pages, container, etc.), utilize também\n   * o método `setDensityMode` conforme necessário.\n   *\n   * @param {boolean} enable Habilita ou desabilita o tamanho `small` globalmente.\n   */\n  setA11yDefaultSizeSmall(enable: boolean): boolean {\n    const a11yLevel = this.getA11yLevel();\n\n    if (!this.isValidA11yLevel(a11yLevel)) return false;\n\n    const defaultSize = enable ? 'small' : 'medium';\n    document.documentElement.setAttribute('data-default-size', defaultSize);\n\n    if (a11yLevel === PoThemeA11yEnum.AA && enable) {\n      if (localStorage.getItem('po-default-size') !== defaultSize) {\n        localStorage.setItem('po-default-size', defaultSize);\n      }\n      return true;\n    }\n\n    localStorage.removeItem('po-default-size');\n\n    return false;\n  }\n\n  /**\n   * Retorna o modo de adensamento dos componentes agrupadores.\n   * Se não estiver configurado, retorna `medium` como padrão.\n   * @returns {PoDensityMode} O modo de adensamento, que pode ser `small` ou `medium`.\n   */\n  getDensityMode(): PoDensityMode {\n    return PoUtils.getDensityMode();\n  }\n\n  /**\n   * Aplica o modo de adensamento compacto (`small`) ou espaçoso (`medium`) para os componentes agrupadores,\n   * independentemente do nível de acessibilidade. O valor definido é salvo no `localStorage` sob a chave\n   * `po-density-mode`.\n   *\n   * @param {'small' | 'medium'} mode Define o modo de densidade: `small` para compacto, `medium` para espaçoso.\n   * O valor padrão é `medium`.\n   */\n  setDensityMode(mode: string): void {\n    if (!Object.values(PoDensityMode).includes(mode as PoDensityMode)) {\n      mode = PoDensityMode.Medium;\n    }\n\n    localStorage.setItem('po-density-mode', mode);\n\n    const styleElement = document.head.querySelector('#baseStyle');\n\n    if (mode === PoDensityMode.Small) {\n      const onRootTokens = {\n        ...poThemeDefaultAA.onRoot,\n        ...poThemeDensity.small\n      };\n      this.setPerComponentAndOnRoot(undefined, poThemeDefaultAA.perComponent, onRootTokens);\n    } else {\n      if (styleElement) {\n        let css = styleElement.textContent;\n        Object.keys(poThemeDensity.small).forEach(token => {\n          const regex = new RegExp(`${token}:\\\\s*[^;]+;`, 'g');\n          css = css.replace(regex, '');\n        });\n        styleElement.textContent = css;\n      }\n      this.setDefaultBaseStyle();\n    }\n  }\n\n  /**\n   * @docsPrivate\n   * Retorna a preferência global de tamanho dos componentes.\n   *\n   * @returns `'small'` ou `'medium'`.\n   */\n  getA11yDefaultSize(): string {\n    return getA11yDefaultSize();\n  }\n\n  /**\n   * @docsPrivate\n   *\n   * Aplica estilos customizados para o componente e para o root HTML, utilizando os tokens definidos.\n   *\n   * Esse método é chamado para inserir ou atualizar estilos no DOM, aplicando tanto tokens de `onRoot` (ex: `--font-family: 'Roboto'`)\n   * quanto estilos específicos de componentes (`perComponent`, como `po-listbox [hidden]: { display: 'flex !important' }`).\n   *\n   * O seletor CSS gerado leva em consideração o tema (`type`) e as configurações de acessibilidade (`a11y`) do tema ativo.\n   * A classe do tema é aplicada no HTML e pode ser formatada como `html[class*=\"-light-AA\"]` para personalizações\n   * em temas específicos.\n   *\n   * @param {PoThemeActive} active - Configuração do tema ativo:\n   * @param {any} perComponent - Objeto contendo os estilos específicos para componentes a serem aplicados.\n   * @param {any} onRoot - Objeto contendo tokens de estilo que serão aplicados diretamente no seletor `:root` do HTML.\n   * @param {string | Array<string>} [classPrefix] - Prefixo(s) de classe para direcionamento preciso.\n   *\n   * @example\n   * #### 1. Com prefixo único\n   * ```typescript\n   * setPerComponentAndOnRoot(\n   *   { type: 'dark', a11y: 'AA' },\n   *   { 'po-input': { background: '#222' } },\n   *   { '--text-color': '#fff' },\n   *   'myTheme'\n   * );\n   * ```\n   * **Saída:**\n   * ```css\n   * :root[class*=\"-dark-AA\"][class*=\"myTheme\"] {\n   *   --text-color: #fff;\n   *   po-input { background: #222; }\n   * }\n   * ```\n   *\n   * #### 2. Com múltiplos prefixos\n   * ```typescript\n   * setPerComponentAndOnRoot(\n   *   { type: 'light' },\n   *   null,\n   *   { '--primary': '#3e8ed0' },\n   *   ['myTheme', 'portal-v2']\n   * );\n   * ```\n   * **Saída:**\n   * ```css\n   * :root[class*=\"-light\"][class*=\"myTheme\"],\n   * :root[class*=\"-light\"][class*=\"portal-v2\"] {\n   *   --primary: #3e8ed0;\n   * }\n   * ```\n   *\n   * - Quando usado com array, gera um seletor CSS com múltiplos targets (separados por vírgula).\n   * - Mantém a especificidade original do tema (`[class*=\"-type-a11y\"]`) combinada com cada prefixo.\n   *\n   */\n  public setPerComponentAndOnRoot(\n    active: PoThemeActive,\n    perComponent: any,\n    onRoot: any,\n    classPrefix?: string | Array<string>\n  ) {\n    const perComponentStyles = perComponent ? this.generatePerComponentStyles(perComponent) : '';\n    const onRootStyles = onRoot ? this.generateAdditionalStyles(onRoot) : '';\n\n    let selector = ':root';\n    const typeSelector = active?.type !== undefined ? `-${PoThemeTypeEnum[active.type]}` : '';\n    const accessibilitySelector = active?.a11y !== undefined ? `-${PoThemeA11yEnum[active.a11y]}` : '';\n\n    if (typeSelector && accessibilitySelector) {\n      selector += `[class*=\"${typeSelector}${accessibilitySelector}\"]`;\n    } else if (!typeSelector && accessibilitySelector) {\n      selector += `[class$=\"${accessibilitySelector}\"]`;\n    } else if (typeSelector) {\n      selector += `[class*=\"${typeSelector}\"]`;\n    }\n\n    if (classPrefix) {\n      if (Array.isArray(classPrefix)) {\n        selector = classPrefix.map(prefix => selector + `[class*=\"${prefix}\"]`).join(', ');\n      } else {\n        selector += `[class*=\"${classPrefix}\"]`;\n      }\n    }\n\n    const styleCss = `\n      ${selector} {\n        ${perComponentStyles}\n        ${onRootStyles}\n      }\n    `;\n\n    let styleElement = this.document.head.querySelector('#baseStyle');\n    if (!styleElement) {\n      styleElement = this.renderer.createElement('style');\n      styleElement.id = 'baseStyle';\n      this.renderer.appendChild(styleElement, this.renderer.createText(styleCss));\n      this.renderer.insertBefore(this.document.head, styleElement, this.document.head.firstChild);\n    } else {\n      if (!styleElement.textContent.includes(styleCss.trim())) {\n        this.renderer.appendChild(styleElement, this.renderer.createText(styleCss));\n      }\n    }\n  }\n\n  /**\n   * @docsPrivate\n   *\n   * Gera estilos adicionais com base nos tokens de tema fornecidos, excluindo os tokens de cor.\n   * @param theme Os tokens de tema contendo os estilos adicionais a serem gerados.\n   * @returns Uma string contendo os estilos adicionais formatados.\n   */\n  private generateAdditionalStyles(theme: PoThemeTokens): string {\n    return Object.entries(theme)\n      .filter(([key]) => !['color', 'perComponent', 'onRoot'].includes(key))\n      .map(([key, value]) => `${key}: ${value};`)\n      .join(' ');\n  }\n\n  /**\n   * @docsPrivate\n   *\n   * Aplica os estilos de tema ao documento.\n   * @param styleCss Os estilos CSS a serem aplicados.\n   */\n  private applyThemeStyles(styleCss: string): void {\n    const styleElement = this.createStyleElement(styleCss, 'theme');\n    const existingStyleElement = document.head.querySelector('#theme');\n\n    if (existingStyleElement) {\n      this.renderer.removeChild(document.head, existingStyleElement);\n    }\n\n    const existingBaseStyle = document.head.querySelector('#baseStyle');\n    const referenceNode = existingBaseStyle ? existingBaseStyle.nextSibling : document.head.firstChild;\n\n    this.renderer.insertBefore(document.head, styleElement, referenceNode);\n  }\n\n  private changeThemeType(theme: PoTheme, persistPreference: boolean = true) {\n    this.cleanThemeActive(persistPreference);\n\n    if (persistPreference) {\n      this.setThemeLocal(theme);\n    }\n\n    document\n      .getElementsByTagName('html')[0]\n      .classList.add(\n        ...[\n          `${theme.name}-${PoThemeTypeEnum[this.getActiveTypeFromTheme(theme.active)]}-${PoThemeA11yEnum[this.getActiveA11yFromTheme(theme.active)]}`\n        ]\n      );\n  }\n\n  /**\n   * Restaura e aplica as preferências visuais do usuário para o tema da aplicação, garantindo que essas preferências\n   * sejam persistidas no `localStorage` para uso em recarregamentos futuros.\n   *\n   * @returns {PoTheme} O tema atualmente aplicado.\n   */\n  persistThemeActive() {\n    const _theme = this.getThemeActive();\n    const activeA11y = this.getActiveA11yFromTheme(_theme.active);\n    this.setTheme(_theme, this.getActiveTypeFromTheme(_theme.active), activeA11y);\n\n    const defaultSize = this.getA11yDefaultSize();\n    localStorage.setItem('po-default-size', defaultSize);\n    this.setDataDefaultSizeHTML(defaultSize, activeA11y);\n\n    const densityMode = localStorage.getItem('po-density-mode');\n    localStorage.setItem('po-density-mode', densityMode);\n\n    return _theme;\n  }\n\n  private formatTheme(themeConfig, themeType, a11yLevel) {\n    themeConfig.name = themeConfig.name\n      .toLowerCase()\n      .replace(/[^a-zA-Z ]/g, '')\n      .replace(/\\s+/g, '-');\n    themeConfig.active = { type: themeType, a11y: a11yLevel };\n    this.theme = themeConfig;\n  }\n\n  applyTheme(theme?: any): any {\n    const _localTheme = this.getThemeActive();\n\n    if (!theme) {\n      if (_localTheme) {\n        this.persistThemeActive();\n        return _localTheme;\n      }\n      return undefined;\n    }\n\n    const _type = this.getActiveTypeFromTheme(theme.active);\n    const _accessibility = this.getActiveA11yFromTheme(theme.active);\n\n    if (_localTheme && JSON.stringify(_localTheme) === JSON.stringify(theme)) {\n      this.persistThemeActive();\n      return _localTheme;\n    }\n\n    this.formatTheme(theme, _type, _accessibility);\n    this.setTheme(theme, _type, _accessibility);\n    return theme;\n  }\n\n  /**\n   * Altera o tipo do tema armazenado e aplica os novos estilos ao documento.\n   *\n   * Este método altera o tipo do tema armazenado ativo (light/dark)\n   *\n   * @param {PoThemeTypeEnum} themeType O tipo de tema a ser aplicado, light ou dark.\n   */\n  changeCurrentThemeType(type: PoThemeTypeEnum): void {\n    const _theme = this.getThemeActive();\n    typeof _theme.active === 'object' ? (_theme.active.type = type) : (_theme.active = type);\n    this.changeThemeType(_theme);\n    this.dispatchEvent(_theme);\n  }\n\n  /**\n   * Método remove o tema armazenado e limpa todos os estilos de tema\n   * aplicados ao documento.\n   *\n   * @param {boolean} [persistPreference=true] - (Opcional) Define se a preferência de tema não deve ser mantida no localStorage para persistência. `true` para remover, `false` para manter.\n   */\n  cleanThemeActive(persistPreference: boolean = true): void {\n    // Sufixo existentes hoje\n    const themeSuffixes = ['-light-', '-dark-'];\n    const htmlElement = document.getElementsByTagName('html')[0];\n\n    // Converte `classList` em um array e remove as classes que terminam com os sufixos especificados\n    Array.from(htmlElement.classList).forEach(className => {\n      if (themeSuffixes.some(suffix => className.includes(suffix))) {\n        htmlElement.classList.remove(className);\n      }\n    });\n\n    // Remove o tema ativo do localStorage\n    if (persistPreference) {\n      localStorage.removeItem('totvs-theme');\n    }\n  }\n\n  private getActiveTypeFromTheme(active): PoThemeTypeEnum {\n    return typeof active === 'object' ? active.type : active;\n  }\n\n  private getActiveA11yFromTheme(active): PoThemeA11yEnum {\n    return typeof active === 'object' ? active.a11y : PoThemeA11yEnum.AAA;\n  }\n\n  private isValidA11yLevel(level: string | null): boolean {\n    return level === PoThemeA11yEnum.AA || level === PoThemeA11yEnum.AAA;\n  }\n\n  /**\n   * @docsPrivate\n   *\n   * Este método define um dados do tema e o armazena.\n   * @param theme Os tokens de tema contendo os estilos adicionais a serem gerados.\n   */\n  private setThemeLocal(theme: PoTheme): void {\n    if (theme) {\n      localStorage.setItem('totvs-theme', JSON.stringify(theme));\n      this.theme = theme;\n    }\n  }\n\n  /**\n   * Retorna o tema ativo como um observable. Este método funcionará apenas se o tema estiver armazenado no `localStorage`.\n   *\n   * @returns {PoTheme} Tema ativo.\n   */\n  getThemeActive(): PoTheme {\n    try {\n      const themeData = JSON.parse(localStorage.getItem('totvs-theme'));\n      if (themeData && JSON.stringify(themeData) !== JSON.stringify(this.theme)) {\n        this.theme = themeData;\n      }\n    } catch (error) {\n      console.error('Erro ao obter o tema do armazenamento local:', error);\n    }\n    return this.theme;\n  }\n\n  /**\n   * @docsPrivate\n   *\n   * Gera estilos CSS com base nos tokens de cores fornecidos.\n   * @param css Os tokens de cor a serem usados para gerar os estilos.\n   * @param id id do style a ser aplicado.\n   * @returns Uma string contendo os estilos CSS gerados.\n   */\n  private createStyleElement(css: string, id: string): HTMLStyleElement {\n    const styleElement = this.renderer.createElement('style');\n    styleElement.id = id;\n    this.renderer.appendChild(styleElement, this.renderer.createText(css));\n    return styleElement;\n  }\n\n  /**\n   * @docsPrivate\n   *\n   * Gera estilos CSS com base nos tokens de cores fornecidos.\n   * @param themeColor Os tokens de cor a serem usados para gerar os estilos.\n   * @returns Uma string contendo os estilos CSS gerados.\n   */\n  private generateThemeStyles(themeColor: PoThemeColor): string {\n    const selectBgIconStyle = this.getSelectBgIconsStyle(themeColor);\n\n    return [\n      Object.entries(themeColor)\n        .flatMap(([type, values]) =>\n          Object.entries(values).flatMap(([tonality, tonalityValues]) => {\n            if (type === 'action') {\n              return [`--color-${type}-${tonality}: ${tonalityValues};`];\n            } else if (type === 'categorical' || type === 'categorical-overlay') {\n              return [`--color-caption-${type}-${tonality}: ${tonalityValues};`];\n            } else {\n              return Object.entries(tonalityValues).map(\n                ([level, colorValue]) => `--color-${type}-${tonality}-${level}: ${colorValue};`\n              );\n            }\n          })\n        )\n        .join(''),\n      selectBgIconStyle\n    ].join('');\n  }\n\n  /**\n   * @docsPrivate\n   *\n   * Gera estilos CSS com base nos tokens per Component fornecidos.\n   * @param themePerComponent Os tokens de cor a serem usados para gerar os estilos.\n   * @returns Uma string contendo os estilos CSS gerados.\n   */\n  private generatePerComponentStyles(themePerComponent: any): string {\n    return Object.entries(themePerComponent)\n      .flatMap(([type, values]) =>\n        Object.entries(values).flatMap(([level, colorValue]) => [`${type} {${level}: ${colorValue};};`])\n      )\n      .join('');\n  }\n\n  /**\n   * Define o tema atual como o tema \"PoUI Padrão\".\n   *\n   * @param {PoThemeTypeEnum} type O tipo de Tema a ser aplicado, light / dark.\n   */\n  setDefaultTheme(type: PoThemeTypeEnum): void {\n    this.setTheme(poThemeDefault, type);\n  }\n\n  /**\n   * @docsPrivate\n   *\n   * Retorna o estilo CSS para o fundo dos ícones do componente po-select, com base nas cores do tema.\n   *\n   * @param {PoThemeColor} themeColor - Objeto contendo as cores do tema.\n   * @returns {string} - Estilo CSS para o fundo dos ícones do po-select.\n   */\n  private getSelectBgIconsStyle(themeColor: PoThemeColor): string {\n    let selectBgIcon = '';\n\n    if (themeColor?.brand?.['01']?.dark) {\n      const selector = 'po-select .po-select-phosphor';\n      selectBgIcon += `${selector} { --background-image: url(${this.getSelectBgIcon(themeColor.neutral.dark[70])}); };`;\n    }\n\n    if (themeColor?.feedback?.negative?.base) {\n      selectBgIcon += `po-select.ng-dirty.ng-invalid select.po-select-phosphor { background-image: url(${this.getSelectBgIcon(themeColor.feedback.negative.base)}); };`;\n    }\n\n    if (themeColor?.neutral?.light?.['30']) {\n      selectBgIcon += `po-select select.po-select-phosphor:disabled { background-image: url(${this.getSelectBgIcon(themeColor.neutral.light['30'])}); };`;\n    }\n\n    return selectBgIcon;\n  }\n\n  /**\n   * @docsPrivate\n   *\n   * Retorna a imagem SVG utilizada como fundo do po-select.\n   *\n   * @param {string} color Cor da Imagem - Utilizada no atributo 'fill'.\n   * @returns {string} Imagem SVG utilizada no po-select.\n   */\n  private getSelectBgIcon(color: string): string {\n    let svg: string;\n\n    svg = `\"data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 256 256' fill='${color.replace('#', '%23')}' `;\n    svg = svg.concat(`xmlns='http://www.w3.org/2000/svg'%3E%3Cpath `);\n    svg = svg.concat(\n      `d='M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z'`\n    );\n    svg = svg.concat(`%3E%3C/path%3E%3C/svg%3E\");`);\n\n    return svg;\n  }\n\n  private dispatchEvent(theme: any) {\n    const evento = new CustomEvent('PoUiThemeChange', { detail: theme });\n    window.dispatchEvent(evento);\n  }\n\n  /**\n   * Define o tipo (light/dark) quando um tema está sendo aplicado.\n   *\n   * @param {PoTheme} theme - Objeto contendo as definições de tema a serem aplicadas no componente.\n   * @param {PoThemeTypeEnum} [themeType=PoThemeTypeEnum.light] - (Opcional) Tipo de tema a ser aplicado, podendo ser 'light' (claro) ou 'dark' (escuro). Por padrão, o tema claro é aplicado.\n   */\n  setThemeType(theme: PoTheme, themeType: PoThemeTypeEnum = PoThemeTypeEnum.light) {\n    const _accessibility = typeof theme.active === 'object' ? theme.active.a11y : PoThemeA11yEnum.AAA;\n    this.setTheme(theme, themeType, _accessibility);\n  }\n\n  /**\n   *  Define o tipo (light/dark) para um tema já ativo.\n   *\n   * @param {PoThemeTypeEnum} [themeType=PoThemeTypeEnum.light] - (Opcional) Tipo de tema a ser aplicado, podendo ser 'light' (claro) ou 'dark' (escuro). Por padrão, o tema claro é aplicado.\n   */\n  setCurrentThemeType(themeType: PoThemeTypeEnum = PoThemeTypeEnum.light) {\n    const _theme = this.getThemeActive();\n    this.setThemeType(_theme, themeType);\n  }\n\n  /**\n   * Define o nível de acessibilidade quando um tema está sendo aplicado.\n   *\n   * @param {PoTheme} theme - Objeto contendo as definições de tema a serem aplicadas no componente.\n   * @param {PoThemeA11yEnum} [a11y=PoThemeA11yEnum.AAA] - (Opcional) Nível de acessibilidade dos componentes podendo ser\n   * AA ou AAA. Por padrão a acessibilidade é AAA.\n   */\n  setThemeA11y(theme: PoTheme, a11y: PoThemeA11yEnum = PoThemeA11yEnum.AAA) {\n    const _type = (typeof theme.active === 'object' ? theme.active.type : theme.active) || 0;\n    this.setTheme(theme, _type, a11y);\n  }\n\n  /**\n   * Define o nível de acessibilidade para um tema já ativo.\n   *\n   * @param {PoThemeA11yEnum} [a11y=PoThemeA11yEnum.AAA] - (Opcional) Nível de acessibilidade dos componentes podendo ser\n   * AA ou AAA. Por padrão a acessibilidade é AAA.\n   */\n  setCurrentThemeA11y(a11y: PoThemeA11yEnum = PoThemeA11yEnum.AAA) {\n    const _theme = this.getThemeActive();\n    this.setThemeA11y(_theme, a11y);\n  }\n\n  public resetBaseTheme() {\n    const styleElement = this.document.head.querySelector('#baseStyle');\n    if (styleElement) {\n      styleElement.textContent = '';\n    }\n  }\n\n  private setDefaultBaseStyle() {\n    // set triple A for all themes (its the base theme)\n    // result: :root\n    this.setPerComponentAndOnRoot(undefined, poThemeDefaultAAA.perComponent, poThemeDefaultAAA.onRoot);\n\n    // set double A\n    // result: :root[class*=\"-AA\"]\n    this.setPerComponentAndOnRoot({ a11y: PoThemeA11yEnum.AA }, poThemeDefaultAA.perComponent, poThemeDefaultAA.onRoot);\n\n    // set Light mode values\n    // result: :root[class*=\"-light\"]\n    this.setPerComponentAndOnRoot(\n      { type: PoThemeTypeEnum.light },\n      poThemeDefaultLightValues.perComponent,\n      poThemeDefaultLightValues.onRoot\n    );\n\n    // set Light mode values AA\n    // result: :root[class*=\"-light-AA\"]\n    this.setPerComponentAndOnRoot(\n      { type: PoThemeTypeEnum.light, a11y: PoThemeA11yEnum.AA },\n      poThemeDefaultLightValuesAA.perComponent,\n      poThemeDefaultLightValuesAA.onRoot\n    );\n\n    // set Dark mode values\n    // result: :root[class*=\"-dark\"]\n    this.setPerComponentAndOnRoot(\n      { type: PoThemeTypeEnum.dark },\n      poThemeDefaultDarkValues.perComponent,\n      poThemeDefaultDarkValues.onRoot\n    );\n\n    // set Dark mode values\n    // result: :root[class*=\"-dark-AA\"]Add commentMore actions\n    this.setPerComponentAndOnRoot(\n      { type: PoThemeTypeEnum.dark, a11y: PoThemeA11yEnum.AA },\n      poThemeDefaultDarkValuesAA.perComponent,\n      poThemeDefaultDarkValuesAA.onRoot\n    );\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { PoThemeService } from './po-theme.service';\n\n/**\n * Módulo do serviço PoThemeService.\n */\n@NgModule({\n  providers: [PoThemeService],\n  bootstrap: []\n})\nexport class PoThemeModule {}\n","import { NgModule } from '@angular/core';\n\nimport { PoColorPaletteModule } from './po-color-palette/po-color-palette.module';\nimport { PoComponentInjectorModule } from './po-component-injector/po-component-injector.module';\nimport { PoControlPositionModule } from './po-control-position/po-control-position.module';\nimport { PoDateTimeModule } from './po-date/po-date.module';\nimport { PoDialogModule } from './po-dialog/po-dialog.module';\nimport { PoI18nPipe } from './po-i18n/po-i18n.pipe';\nimport { PoLanguageModule } from './po-language/po-language.module';\nimport { PoMediaQueryModule } from './po-media-query/po-media-query.module';\nimport { PoNotificationModule } from './po-notification/po-notification.module';\nimport { PoThemeModule } from './po-theme/po-theme.module';\n\n@NgModule({\n  declarations: [PoI18nPipe],\n  imports: [\n    PoColorPaletteModule,\n    PoComponentInjectorModule,\n    PoControlPositionModule,\n    PoDateTimeModule,\n    PoDialogModule,\n    PoLanguageModule,\n    PoMediaQueryModule,\n    PoNotificationModule,\n    PoThemeModule\n  ],\n  exports: [\n    PoColorPaletteModule,\n    PoComponentInjectorModule,\n    PoControlPositionModule,\n    PoDateTimeModule,\n    PoDialogModule,\n    PoI18nPipe,\n    PoMediaQueryModule,\n    PoNotificationModule,\n    PoThemeModule\n  ],\n  providers: [],\n  bootstrap: []\n})\nexport class PoServicesModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { isTypeof } from '../../utils/util';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Pipe responsável por apresentar um horário baseado no formato de entrada definido na API do PO UI.\n */\n@Pipe({\n  name: 'po_time',\n  standalone: false\n})\nexport class PoTimePipe implements PipeTransform {\n  transform(time: string, format?: string): string {\n    const hourRegex = /^(([0-1][0-9])|(2[0-3])):[0-5][0-9]:[0-5][0-9][\\.]?([0-9]{1,6})?$/g;\n\n    if (isTypeof(time, 'string') && hourRegex.test(time)) {\n      const amountOfF = format ? format.lastIndexOf('f') - format.indexOf('f') + 1 : 0;\n\n      const miliseconds = this.addDotMiliseconds(time.substring(9, 9 + amountOfF), amountOfF);\n      const formatMiliseconds: string = this.getFormatMiliseconds(amountOfF);\n\n      return this.formatValue(time, format, formatMiliseconds, miliseconds);\n    }\n    return null;\n  }\n\n  private addDotMiliseconds(miliseconds: string, amountOfF: number): string {\n    if (miliseconds && amountOfF) {\n      miliseconds = '.' + miliseconds;\n    }\n    return miliseconds;\n  }\n\n  private formatValue(time: string, format: string, formatMiliseconds: string, miliseconds: string): string {\n    if (time && format) {\n      const hour = time.substring(0, 2);\n      const minutes = time.substring(3, 5);\n      const seconds = time.substring(6, 8);\n\n      format = format.replace('HH', hour);\n      format = format.replace('mm', minutes);\n      format = format.replace('ss', seconds);\n      format = format.replace(`.${formatMiliseconds}`, miliseconds);\n\n      return format;\n    } else {\n      return time;\n    }\n  }\n\n  private getFormatMiliseconds(amountOfF: number): string {\n    let formatMiliseconds: string = '';\n\n    for (let i = 0; i < amountOfF; i++) {\n      formatMiliseconds += 'f';\n    }\n\n    return formatMiliseconds;\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { PoTimePipe } from './po-time.pipe';\n\n/**\n * @description\n *\n * Módulo do pipe `po-time`.\n */\n@NgModule({\n  declarations: [PoTimePipe],\n  imports: [],\n  exports: [PoTimePipe],\n  providers: [],\n  bootstrap: []\n})\nexport class PoTimeModule {}\n","import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from '../../../utils/util';\n\n/**\n * @description\n *\n * O componente `po-page-slide` é utilizado para incluir conteúdos secundários\n * adicionando controles e navegações adicionais, mas mantendo o usuário na\n * página principal.\n *\n * Este componente é ativado a partir do método `#open()` e pode ser  encerrado\n * através do botão que encontra-se no cabeçalho do mesmo ou através do método\n * `#close()`.\n *\n * > Para o correto funcionamento do componente `po-page-slide`, deve ser\n * > importado o módulo `BrowserAnimationsModule` no módulo principal da sua\n * > aplicação.\n *\n * Módulo da aplicação:\n * ```\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n * import { PoModule } from '@po-ui/ng-components';\n * ...\n *\n * @NgModule({\n *   imports: [\n *     BrowserModule,\n *     BrowserAnimationsModule,\n *     ...\n *     PoModule\n *   ],\n *   declarations: [\n *     AppComponent,\n *     ...\n *   ],\n *   providers: [],\n *   bootstrap: [AppComponent]\n * })\n * export class AppModule { }\n * ```\n *\n * Em aplicações Standalone, utilize a seguinte configuração para o bootstrap:\n *\n * ```\n * import { bootstrapApplication } from '@angular/platform-browser';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n * import { AppComponent } from './app.component';\n *\n * bootstrapApplication(AppComponent, {\n *   providers: [importProvidersFrom(BrowserAnimationsModule)]\n * }).catch(err => console.error(err));\n * ```\n *\n *  Caso utilize componentes de field dentro do page-slide, recomenda-se o uso do [Grid System](https://po-ui.io/guides/grid-system).\n *\n * No rodapé é possível utilizar o componente [`PoPageSlideFooter`](/documentation/po-page-slide-footer) para customização do template.\n *\n *  * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                              | Descrição                                                         | Valor Padrão                                                                  |\n * |------------------------------------------|-------------------------------------------------------------------|-------------------------------------------------------------------------------|\n * | `--font-family`                          | Família tipográfica usada                                         | `var(--font-family-theme)`                                                    |\n * | `--font-weight`                          | Peso da fonte                                                     | `var(--font-weight-bold)`                                                     |\n * | `--padding-header`                       | Espaçamento do header                                             | `var(--spacing-md)`                                                           |\n * | `--padding-body`                         | Espaçamento do conteúdo                                           | `var(--line-height-none)`                                                     |\n * | `--padding-footer`                       | Espaçamento do footer                                             | `var(--spacing-sm) var(--spacing-md) var(--spacing-xl) var(--spacing-md)`     |\n * | **Default Values**                       |                                                                   |                                                                               |\n * | `--color-overlay`                        | Cor do overlay                                                    | `var(--color-neutral-dark-80)`                                                |\n * | `--opacity-overlay`                      | Cor da opacidade do overlay                                       | `0.7`                                                                         |\n * | `--background-color`                     | Cor de background                                                 | `var(--color-neutral-light-00)`                                               |\n * | `--border-color`                         | Cor da borda                                                      | `var(--color-neutral-light-20)`                                               |\n * | `--color-title`                          | Cor do titulo do header                                           | `var(--color-neutral-dark-95)`                                                |\n * | `--border-radius`                        | Radius da borda                                                   | `var(--border-radius-md) 0 0 var(--border-radius-md)`                         |\n * | `--transition-duration`                  | Duração da transição                                              | `var(--duration-extra-fast)`                                                  |\n * | `--transition-timing`                    | Duração da transição com o tipo de transição                      | `var(--duration-extra-slow) var(--timing-standart)`                           |\n * | `--page-slide-width-sm`                  | Tamanho da largura do componente no tamanho `small`               | `40%`                                                                         |\n * | `--page-slide-width-md`                  | Tamanho da largura do componente no tamanho `medium`              | `50%`                                                                         |\n * | `--page-slide-width-lg`                  | Tamanho da largura do componente no tamanho `large`               | `60%`                                                                         |\n * | `--page-slide-width-xl`                  | Tamanho da largura do componente no tamanho `extra large`         | `70%`                                                                         |\n * | `--page-slide-min-width-auto`            | Tamanho da largura mínima do componente no tamanho `auto`         | `40%`                                                                         |\n * | `--page-slide-max-width-auto`            | Tamanho da largura máxima do componente no tamanho `auto`         | `90%`                                                                         |\n *\n */\n@Directive()\nexport class PoPageSlideBaseComponent {\n  /**\n   * @description\n   *\n   * Título da página.\n   */\n  @Input('p-title') title: string;\n\n  /**\n   * @description\n   *\n   * Subtítulo da página.\n   */\n  @Input('p-subtitle') subtitle?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Oculta o botão de encerramento da página.\n   *\n   * Esta opção só é possível se a propriedade `p-click-out` estiver habilitada.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-hide-close', transform: convertToBoolean }) hideClose: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se permite o encerramento da página ao clicar fora da mesma.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-click-out', transform: convertToBoolean }) clickOut: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite a expansão dinâmica da largura do `po-page-slide` quando `p-size` for `auto` (automático).\n   * Propriedade necessária para correto funcionamento da `po-table` dentro do `po-page-slide`\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-flexible-width', transform: convertToBoolean }) flexibleWidth: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento executado ao fechar o page slide.\n   */\n  @Output('p-close') closePageSlide: EventEmitter<any> = new EventEmitter<any>();\n\n  // Controla se a página está ou não oculta, por padrão é oculto.\n  public hidden = true;\n\n  private _componentsSize?: string = undefined;\n  private _initialComponentsSize?: string = undefined;\n  private _size = 'md';\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho da página.\n   *\n   * Valores válidos:\n   *  - `sm` (pequeno)\n   *  - `md` (médio)\n   *  - `lg` (grande)\n   *  - `xl` (extra-grande)\n   *  - `auto` (automático)\n   *\n   * > Todas as opções de tamanho, exceto `auto`, possuem uma largura máxima de **768px**.\n   *\n   * @default `md`\n   */\n  @Input('p-size') set size(value: string) {\n    const sizes = ['sm', 'md', 'lg', 'xl', 'auto'];\n    this._size = sizes.indexOf(value) > -1 ? value : 'md';\n  }\n\n  get size() {\n    return this._size;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos componentes de formulário no template:\n   * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n   * - `medium`: aplica a medida medium de cada componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialComponentsSize, PoFieldSize);\n    this._componentsSize = size;\n  }\n\n  /**\n   * Ativa a visualização da página.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo\n   * ser utilizado o `ViewChild` da seguinte forma:\n   *\n   * ```typescript\n   * import { PoPageSlideComponent } from '@po/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoPageSlideComponent, { static: true }) pageSlide: PoPageSlideComponent;\n   *\n   * public openPage() {\n   *   this.pageSlide.open();\n   * }\n   * ```\n   */\n  public open() {\n    // Evita com que a página seja aberta sem que seja possível fechá-la.\n    if (this.hideClose && !this.clickOut) {\n      this.hideClose = false;\n    }\n\n    this.hidden = false;\n  }\n\n  /**\n   * Encerra a visualização da página.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo\n   * ser utilizado o `ViewChild` da seguinte forma:\n   *\n   * ```typescript\n   * import { PoPageSlideComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoPageSlideComponent, { static: true }) pageSlide: PoPageSlideComponent;\n   *\n   * public closePage() {\n   *   this.pageSlide.close();\n   * }\n   * ```\n   */\n  public close(): void {\n    this.hidden = true;\n    this.closePageSlide.emit();\n  }\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * @description\n *\n * O componente `po-page-slide-footer` pode ser utilizado para incluir os botões de ações no rodapé da [`PoPageSlide`](/documentation/po-page-slide), bem como para dar liberdade ao desenvolvedor de incluir outros itens necessários.\n * > Como boa prática, deve-se observar a utilização de apenas um botão primário.\n *\n * ```\n * <po-page-slide p-title=\"Title page-slide\" #pageSlide>\n *  <po-page-slide-footer>\n *    <po-button p-label=\"Close\" (p-click)=\"pageSlide.close()\"> </po-button>\n *    <po-button p-label=\"Clean\" (p-click)=\"clean()\"> </po-button>\n *    <po-button p-label=\"Confirm\" p-kind=\"primary\" (p-click)=\"confirm()\"> </po-button>\n *  </po-page-slide-footer>\n * </po-page-slide>\n * ```\n */\n@Component({\n  selector: 'po-page-slide-footer',\n  templateUrl: './po-page-slide-footer.component.html',\n  standalone: false\n})\nexport class PoPageSlideFooterComponent {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita o alinhamento padrão, à direita, dos botões de ações que ficam no rodapé da [`PoPageSlide`](/documentation/po-page-slide).\n   *\n   * > Caso a propriedade esteja habilitada, o alinhamento deverá ser a esquerda e pode ser personalizado.\n   *\n   * @default false\n   */\n  @Input('p-disabled-align') disabledAlign?: boolean = false;\n}\n","<div class=\"po-page-slide-footer\" [class.po-page-slide-footer-align-right]=\"!disabledAlign\">\n  <ng-content></ng-content>\n</div>\n","import { animate, animateChild, group, query, style, transition, trigger } from '@angular/animations';\nimport { Component, ContentChild, ElementRef, ViewChild, inject } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { delay, take } from 'rxjs/operators';\n\nimport { getFocusableElements, uuid } from '../../../utils/util';\n\nimport { PoActiveOverlayService } from '../../../services/po-active-overlay/po-active-overlay.service';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport { PoPageSlideLiterals } from './interfaces/po-page-slide-literals.interface';\nimport { PoPageSlideBaseComponent } from './po-page-slide-base.component';\nimport { PoPageSlideFooterComponent } from './po-page-slide-footer/po-page-slide-footer.component';\n\nexport const poPageSlideLiteralsDefault = {\n  en: <PoPageSlideLiterals>{\n    close: 'Close'\n  },\n  es: <PoPageSlideLiterals>{\n    close: 'Cerrar'\n  },\n  pt: <PoPageSlideLiterals>{\n    close: 'Fechar'\n  },\n  ru: <PoPageSlideLiterals>{\n    close: 'Закрывать'\n  }\n};\n\n/**\n * @docsExtends PoPageSlideBaseComponent\n *\n * @example\n *\n * <example name=\"po-page-slide-basic\" title=\"PO Page Slide Basic\">\n *  <file name=\"sample-po-page-slide-basic/sample-po-page-slide-basic.component.html\"> </file>\n *  <file name=\"sample-po-page-slide-basic/sample-po-page-slide-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-slide-labs\" title=\"PO Page Slide Labs\">\n *  <file name=\"sample-po-page-slide-labs/sample-po-page-slide-labs.component.html\"> </file>\n *  <file name=\"sample-po-page-slide-labs/sample-po-page-slide-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-slide-configuration\" title=\"PO Page Slide - Configuration\">\n *  <file name=\"sample-po-page-slide-configuration/sample-po-page-slide-configuration.component.html\"> </file>\n *  <file name=\"sample-po-page-slide-configuration/sample-po-page-slide-configuration.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-page-slide',\n  templateUrl: './po-page-slide.component.html',\n  providers: [],\n  animations: [\n    trigger('fade', [\n      transition(':enter', [\n        style({ opacity: 0 }),\n        group([animate(`{{duration}}`, style({ opacity: 1 })), query('@slide', animateChild())])\n      ]),\n      transition(':leave', group([query('@slide', animateChild()), animate('150ms', style({ opacity: 0 }))]))\n    ]),\n    trigger('slide', [\n      transition(':enter', [\n        style({ transform: 'translateX(50px)' }),\n        animate(`{{timing }}`, style({ transform: 'none' }))\n      ]),\n      transition(':leave', [animate('150ms', style({ transform: 'translateX(50px)' }))])\n    ])\n  ],\n  standalone: false\n})\nexport class PoPageSlideComponent extends PoPageSlideBaseComponent {\n  private readonly poActiveOverlayService = inject(PoActiveOverlayService);\n  private readonly languageService = inject(PoLanguageService);\n\n  private _pageContent: ElementRef;\n\n  private firstElement: any;\n  private readonly id: string = uuid();\n  private readonly loadingCompleted = new ReplaySubject<void>();\n  private sourceElement: any;\n  buttonAriaLabel: string;\n  duration: string = '70ms';\n  timing: string = '700ms Cubic-Bezier(0.35, 0, 0.1, 1)';\n\n  private focusEvent: EventListener;\n\n  @ContentChild(PoPageSlideFooterComponent) pageSlideFooter: PoPageSlideFooterComponent;\n\n  @ViewChild('pageContent', { read: ElementRef }) set pageContent(pageContent: ElementRef) {\n    if (pageContent) {\n      this._pageContent = pageContent;\n      this.loadingCompleted.next();\n    }\n  }\n\n  get pageContent(): ElementRef {\n    return this._pageContent;\n  }\n\n  constructor() {\n    super();\n    this.setTimeFromCSS();\n    this.buttonAriaLabel = this.getTextDefault();\n  }\n\n  public open(): void {\n    this.sourceElement = document.activeElement;\n    super.open();\n    this.loadingCompleted.pipe(take(1)).pipe(delay(0)).subscribe(this.handleFocus.bind(this));\n  }\n\n  public close(): void {\n    if (\n      this.poActiveOverlayService.activeOverlay.length > 0 &&\n      this.poActiveOverlayService.activeOverlay[this.poActiveOverlayService.activeOverlay.length - 1] === this.id\n    ) {\n      this.poActiveOverlayService.activeOverlay.pop();\n    }\n\n    super.close();\n\n    this.removeEventListeners();\n    this.sourceElement.focus();\n  }\n\n  public onClickOut(event: MouseEvent): void {\n    if (this.clickOut && !this.pageContent.nativeElement.contains(event.target)) {\n      this.close();\n    }\n  }\n\n  private setTimeFromCSS(): void {\n    const rootStyles = getComputedStyle(document.documentElement);\n    this.duration = rootStyles.getPropertyValue('--transition-duration').trim();\n    this.timing = rootStyles.getPropertyValue('--transition-timing').trim();\n  }\n\n  private getTextDefault(): string {\n    const language = this.languageService.getShortLanguage();\n\n    return poPageSlideLiteralsDefault[language].close;\n  }\n\n  private handleFocus(): void {\n    this.poActiveOverlayService.activeOverlay.push(this.id);\n    this.loadFirstElement();\n    this.initFocus();\n\n    document.addEventListener('focus', this.focusEvent, true);\n  }\n\n  private initFocus() {\n    // O foco não pode sair da página.\n    this.focusEvent = (event: Event) => {\n      const isCdkOverlayListbox = event.target['closest']('.cdk-overlay-container') !== null;\n      if (\n        !this.pageContent.nativeElement.contains(event.target) &&\n        !isCdkOverlayListbox &&\n        this.poActiveOverlayService.activeOverlay[this.poActiveOverlayService.activeOverlay.length - 1] === this.id\n      ) {\n        event.stopPropagation();\n        this.firstElement.focus();\n      }\n    };\n\n    if (this.hideClose) {\n      this.firstElement.focus();\n    } else {\n      const elements = getFocusableElements(this.pageContent.nativeElement);\n      const element = elements[0] || this.pageContent.nativeElement;\n      element.focus();\n    }\n  }\n\n  private loadFirstElement(): void {\n    this.firstElement = getFocusableElements(this.pageContent.nativeElement)[0] || this.pageContent.nativeElement;\n  }\n\n  private removeEventListeners(): void {\n    document.removeEventListener('focus', this.focusEvent, true);\n    this.loadingCompleted.complete();\n  }\n\n  get fadeParams() {\n    return {\n      value: true,\n      params: { duration: this.duration || '70ms' }\n    };\n  }\n\n  get slideParams() {\n    return {\n      value: true,\n      params: { timing: this.timing || '700ms cubic-bezier(0.35, 0, 0.1, 1)' }\n    };\n  }\n}\n","@if (!hidden) {\n  <div class=\"po-page-slide\" tabindex=\"0\" (keydown.esc)=\"close()\" [@fade]=\"fadeParams\">\n    <div class=\"po-page-slide-overlay\" (mousedown)=\"onClickOut($event)\"></div>\n    <div\n      class=\"po-page-slide-container po-page-slide-right po-page-slide-{{ size }}\"\n      [@slide]=\"slideParams\"\n      [ngStyle]=\"{ 'width': flexibleWidth ? '' : size === 'auto' ? 'auto' : '' }\"\n    >\n      <div class=\"po-page-slide-content\" tabindex=\"-1\" #pageContent>\n        <div class=\"po-page-slide-header\">\n          <div class=\"po-page-slide-title\">\n            <span>{{ title }}</span>\n            @if (subtitle) {\n              <div class=\"po-page-slide-subtitle\">{{ subtitle }}</div>\n            }\n          </div>\n          @if (!hideClose) {\n            <po-button\n              p-icon=\"ICON_CLOSE\"\n              p-kind=\"tertiary\"\n              (p-click)=\"close()\"\n              [p-aria-label]=\"buttonAriaLabel\"\n              [p-size]=\"componentsSize\"\n            >\n            </po-button>\n          }\n        </div>\n        <div class=\"po-page-slide-body\">\n          <ng-content></ng-content>\n        </div>\n        @if (pageSlideFooter) {\n          <div class=\"po-page-slide-footer-content\">\n            <po-divider></po-divider>\n            <ng-content select=\"po-page-slide-footer\"></ng-content>\n          </div>\n        }\n      </div>\n    </div>\n  </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { PoPageSlideComponent } from './po-page-slide.component';\nimport { PoButtonModule } from './../../po-button/po-button.module';\nimport { PoDividerModule } from '../../po-divider/po-divider.module';\nimport { PoPageSlideFooterComponent } from './po-page-slide-footer/po-page-slide-footer.component';\n\n@NgModule({\n  declarations: [PoPageSlideComponent, PoPageSlideFooterComponent],\n  exports: [PoPageSlideComponent, PoPageSlideFooterComponent],\n  imports: [CommonModule, FormsModule, PoButtonModule, PoDividerModule]\n})\nexport class PoPageSlideModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente responsável por exibir um ícone na tabela.\n */\n@Component({\n  selector: 'po-table-icon',\n  templateUrl: './po-table-icon.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoTableIconComponent {\n  /** Define se o ícone é clicável. */\n  @Input('p-clickable') clickable: boolean;\n\n  /** Cor do ícone. */\n  @Input('p-color') color: string;\n\n  /** Desabilitado. */\n  @Input('p-disabled') disabled: boolean;\n\n  /** Classe css do ícone. */\n  @Input('p-icon') icon: string | TemplateRef<void>;\n\n  /** Texto do tooltip. */\n  @Input('p-icon-tooltip') iconTooltip: string;\n\n  /** Output click. */\n  @Output('p-click') click: EventEmitter<any> = new EventEmitter();\n\n  tooltip: string;\n\n  private get allowTooltip() {\n    return !this.disabled && this.iconTooltip;\n  }\n\n  onClick(event) {\n    if (this.clickable) {\n      this.click.emit(event);\n    }\n  }\n\n  tooltipMouseEnter() {\n    if (this.allowTooltip) {\n      this.tooltip = this.iconTooltip;\n    }\n  }\n\n  tooltipMouseLeave() {\n    this.tooltip = undefined;\n  }\n}\n","<po-icon\n  class=\"po-field-icon po-table-icon-content {{ disabled ? '' : color }}\"\n  [ngClass]=\"{ 'po-clickable': clickable, 'po-table-icon-disabled': disabled }\"\n  [p-icon]=\"icon\"\n  [p-tooltip]=\"tooltip\"\n  [p-append-in-body]=\"true\"\n  (click)=\"onClick($event)\"\n  (mouseenter)=\"tooltipMouseEnter()\"\n  (mouseleave)=\"tooltipMouseLeave()\"\n></po-icon>\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\n\nimport { PoTableColumn } from '../interfaces/po-table-column.interface';\nimport { PoTableColumnIcon } from './po-table-column-icon.interface';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente responsável por exibir ícones nas colunas.\n */\n@Component({\n  selector: 'po-table-column-icon',\n  templateUrl: './po-table-column-icon.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoTableColumnIconComponent {\n  /** Definição da coluna que utiliza os icones. */\n  @Input('p-column') column: PoTableColumn;\n\n  /** Dados da linha da tabela. */\n  @Input('p-row') row: any;\n\n  private _icons: Array<PoTableColumnIcon> = [];\n\n  /** Lista de colunas com ícones. */\n  @Input('p-icons') set icons(icons: Array<PoTableColumnIcon> | Array<string> | string) {\n    this._icons = this.convertToColumnIcon(icons);\n  }\n\n  get icons() {\n    return this._icons;\n  }\n\n  click(columnIcon: PoTableColumnIcon, event): void {\n    const isAbleAction = !this.isDisabled(columnIcon);\n\n    if (isAbleAction) {\n      if (columnIcon.action) {\n        columnIcon.action(this.row, columnIcon);\n      } else if (this.column.action) {\n        this.column.action(this.row, columnIcon);\n      }\n      event.stopPropagation();\n    }\n  }\n\n  getColor(column: PoTableColumnIcon): string {\n    const color = typeof column.color === 'function' ? column.color(this.row, column) : column.color;\n\n    if (color) {\n      return `po-text-${color}`;\n    }\n  }\n\n  getIcon(column: PoTableColumnIcon) {\n    return column.icon || column.value;\n  }\n\n  isClickable(columnIcon: PoTableColumnIcon): boolean {\n    return !!(!this.isDisabled(columnIcon) && (columnIcon.action || this.column.action));\n  }\n\n  isDisabled(column: PoTableColumnIcon): boolean {\n    return column.disabled ? column.disabled(this.row) : false;\n  }\n\n  trackByFunction(index) {\n    return index;\n  }\n\n  private convertToColumnIcon(rowIcons: Array<PoTableColumnIcon> | Array<string> | string): Array<PoTableColumnIcon> {\n    if (Array.isArray(rowIcons)) {\n      return (<any>rowIcons).map(rowIcon => (typeof rowIcon === 'string' ? { value: rowIcon } : rowIcon));\n    }\n\n    if (typeof rowIcons === 'string') {\n      return [{ value: rowIcons }];\n    }\n\n    return [];\n  }\n}\n","<po-table-icon\n  *ngFor=\"let column of icons; trackBy: trackByFunction\"\n  [p-clickable]=\"isClickable(column)\"\n  [p-color]=\"getColor(column)\"\n  [p-disabled]=\"isDisabled(column)\"\n  [p-icon]=\"getIcon(column)\"\n  [p-icon-tooltip]=\"column.tooltip\"\n  (p-click)=\"click(column, $event)\"\n>\n</po-table-icon>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\n\nimport { PoTableColumnLabel } from './po-table-column-label.interface';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente para a criação da representação da legenda, em formato de texto .\n */\n\n@Component({\n  selector: 'po-table-column-label',\n  templateUrl: './po-table-column-label.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoTableColumnLabelComponent implements OnInit {\n  @Input('p-value') value: PoTableColumnLabel;\n\n  ngOnInit(): void {\n    this.checkValueHasLabel();\n  }\n\n  checkValueHasLabel() {\n    return this.value?.label?.trim() ? true : false;\n  }\n}\n","@if (checkValueHasLabel()) {\n  <po-tag\n    [p-color]=\"value?.color\"\n    [p-value]=\"value?.label\"\n    [p-text-color]=\"value?.textColor\"\n    [p-icon]=\"value?.icon\"\n    [p-type]=\"value?.type\"\n  >\n  </po-tag>\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { isExternalLink } from '../../../utils/util';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente responsável por exibir link nas colunas.\n */\n@Component({\n  selector: 'po-table-column-link',\n  templateUrl: './po-table-column-link.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoTableColumnLinkComponent {\n  @Input('p-action') action: Function;\n\n  @Input('p-disabled') disabled: boolean;\n\n  @Input('p-link') link: string;\n\n  @Input('p-open-new-tab') openNewTab: boolean = false;\n\n  @Input('p-row') row;\n\n  @Input('p-value') value: string;\n\n  get type() {\n    if (this.action) {\n      return 'action';\n    }\n\n    return isExternalLink(this.link) ? 'externalLink' : 'internalLink';\n  }\n}\n","<div class=\"po-table-link\" [ngClass]=\"{ 'po-table-link-disabled': disabled }\">\n  @switch (type) {\n    @case ('action') {\n      <po-link [p-label]=\"value\" [p-open-new-tab]=\"openNewTab\" (p-action)=\"action?.(value, row)\"></po-link>\n    }\n    @case ('externalLink') {\n      <po-link [p-label]=\"value\" [p-open-new-tab]=\"openNewTab\" [p-url]=\"link\"></po-link>\n    }\n    @case ('internalLink') {\n      <po-link [p-label]=\"value\" [p-open-new-tab]=\"openNewTab\" [p-url]=\"link\"></po-link>\n    }\n  }\n</div>\n","/**\n * @usedBy PoSwitchComponent\n *\n * @description\n *\n * Enum para posicionar o label do valor do po-switch.\n */\nexport enum PoSwitchLabelPosition {\n  /** Posiciona o label do lado esquerdo do switch. */\n  Right,\n  /** Posiciona o label do lado direito do switch. */\n  Left\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  forwardRef,\n  inject,\n  InjectOptions,\n  Injector,\n  Input,\n  ViewChild,\n  OnDestroy,\n  HostListener,\n  input,\n  OnChanges,\n  SimpleChanges,\n  HostBinding\n} from '@angular/core';\nimport {\n  AbstractControl,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator,\n  NgControl,\n  UntypedFormControl,\n  NG_VALIDATORS\n} from '@angular/forms';\n\nimport {\n  convertToBoolean,\n  getDefaultSizeFn,\n  mapInputSizeToLoadingIcon,\n  setHelperSettings,\n  uuid,\n  validateSizeFn\n} from '../../../utils/util';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { PoFieldModel } from '../po-field.model';\nimport { PoKeyCodeEnum } from './../../../enums/po-key-code.enum';\nimport { PoSwitchLabelPosition } from './po-switch-label-position.enum';\nimport { Subscription } from 'rxjs';\nimport { PoHelperComponent, PoHelperOptions } from '../../po-helper';\n\n/**\n * @docsExtends PoFieldModel\n *\n * @description\n *\n * O componente `po-switch` é um [checkbox](/documentation/po-checkbox-group) mais intuitivo, pois faz analogia a um interruptor.\n * Deve ser usado quando deseja-se transmitir a ideia de ligar / desligar uma funcionalidade específica.\n *\n * Pode-se ligar ou desligar o switch utilizando a tecla de espaço ou o clique do mouse.\n *\n * O texto exibido pode ser alterado de acordo com o valor setado aumentando as possibilidades de uso do componente,\n * portanto, recomenda-se informar textos que contextualizem seu uso para que facilite a compreensão do usuário.\n *\n * > O componente não altera o valor incial informado no *model*, portanto indica-se inicializa-lo caso ter necessidade.\n *\n * #### Boas práticas\n *\n * - Evite `labels` extensos que quebram o layout do `po-switch`, use `labels` diretos, curtos e intuitivos.\n *\n * #### Acessibilidade tratada no componente\n *\n * Algumas diretrizes de acessibilidade já são tratadas no componente, internamente, e não podem ser alteradas pelo proprietário do conteúdo. São elas:\n *\n * - Quando em foco, o switch é ativado usando a tecla de Espaço. [W3C WAI-ARIA 3.5 Switch - Keyboard Interaction](https://www.w3.org/WAI/ARIA/apg/patterns/switch/#keyboard-interaction-19)\n * - A área do foco precisar ter uma espessura de pelo menos 2 pixels CSS e o foco não pode ficar escondido por outros elementos da tela. [WCAG 2.4.12: Focus Appearance](https://www.w3.org/WAI/WCAG22/Understanding/focus-appearance-enhanced)\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                    |\n * |----------------------------------------|-------------------------------------------------------|-------------------------------------------------|\n * | **Unchecked**                          |                                                       |                                                 |\n * | `--color-unchecked`                    | Cor principal no estado desmarcado                    | `var(--color-neutral-light-00)`                 |\n * | `--border-color`                       | Cor da borda                                          | `var(--color-neutral-dark-70)`                  |\n * | `--track-unchecked`                    | Cor principal da faixa no estado desmarcado           | `var(--color-neutral-light-20)`                 |\n * | **Checked**                            |                                                       |                                                 |\n * | `--color-checked`                      | Cor principal no estado selecionado                   | `var(--color-action-default)`                   |\n * | `--track-checked`                      | Cor da faixa no estado selecionado                    | `var(--color-brand-01-light)`                   |\n * | **Hover**                              |                                                       |                                                 |\n * | `--color-unchecked-hover`              | Cor principal no estado hover desmarcado              | `var(--color-action-pressed)`                   |\n * | `--color-checked-hover`                | Cor principal no estado hover marcado                 | `var(--color-action-pressed)`                   |\n * | **Focused**                            |                                                       |                                                 |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                     | `var(--color-action-focus)`                     |\n * | **Disabled**                           |                                                       |                                                 |\n * | `--color-unchecked-disabled`           | Cor principal do disabled no estado desmarcado        | `var(--color-neutral-light-20)`                 |\n * | `--color-checked-disabled`             | Cor principal do disabled no estado marcado           | `var(--color-action-disabled)`                  |\n *\n *\n * @example\n *\n * <example name=\"po-switch-basic\" title=\"PO Switch Basic\">\n *   <file name=\"sample-po-switch-basic/sample-po-switch-basic.component.html\"> </file>\n *   <file name=\"sample-po-switch-basic/sample-po-switch-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-switch-labs\" title=\"PO Switch Labs\">\n *   <file name=\"sample-po-switch-labs/sample-po-switch-labs.component.html\"> </file>\n *   <file name=\"sample-po-switch-labs/sample-po-switch-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-switch-order\" title=\"PO Switch - Order Summary\">\n *   <file name=\"sample-po-switch-order/sample-po-switch-order.component.html\"> </file>\n *   <file name=\"sample-po-switch-order/sample-po-switch-order.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-switch-order-reactive-form\" title=\"PO Switch - Order Summary Reactive Form\">\n *   <file name=\"sample-po-switch-order-reactive-form/sample-po-switch-order-reactive-form.component.html\"> </file>\n *   <file name=\"sample-po-switch-order-reactive-form/sample-po-switch-order-reactive-form.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-switch',\n  templateUrl: './po-switch.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoSwitchComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => PoSwitchComponent),\n      multi: true\n    },\n    {\n      provide: NgControl,\n      useExisting: forwardRef(() => PoSwitchComponent),\n      multi: false\n    }\n  ],\n  standalone: false\n})\nexport class PoSwitchComponent extends PoFieldModel<any> implements Validator, AfterViewInit, OnDestroy, OnChanges {\n  private readonly changeDetector = inject(ChangeDetectorRef);\n  private readonly injector = inject<Injector>(Injector);\n\n  @ViewChild('switchContainer', { static: true }) switchContainer: ElementRef;\n  @ViewChild('helperEl', { read: PoHelperComponent, static: false }) helperEl?: PoHelperComponent;\n\n  id = `po-switch[${uuid()}]`;\n\n  // Parâmetro interno, não documentar\n  @Input({ alias: 'p-value', transform: convertToBoolean }) value: boolean = false;\n\n  private _labelOff: string = 'false';\n  private _labelOn: string = 'true';\n  private _labelPosition: PoSwitchLabelPosition = PoSwitchLabelPosition.Right;\n  private _loading: boolean = false;\n  private _formatModel: boolean = false;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n  private statusChangesSubscription: Subscription;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define se o título do campo será exibido de forma compacta.\n   *\n   * Quando habilitado (`true`), o modo compacto afeta o conjunto composto por:\n   * - `po-label`\n   * - `p-requirement (showRequired)`\n   * - `po-helper`\n   *\n   * Ou seja, todos os elementos relacionados ao título do campo\n   * (rótulo, indicador de obrigatoriedade e componente auxiliar) passam\n   * a seguir o comportamento de layout compacto.\n   *\n   * Também é possível definir esse comportamento de forma global,\n   * uma única vez, na folha de estilo geral da aplicação, por meio\n   * da customização dos tokens CSS:\n   *\n   * - `--field-container-title-justify`\n   * - `--field-container-title-flex`\n   *\n   * Exemplo:\n   *\n   * ```\n   * :root {\n   *   --field-container-title-justify: flex-start;\n   *   --field-container-title-flex: 0 1 auto;\n   * }\n   * ```\n   *\n   * Dessa forma, o layout compacto passa a ser o padrão da aplicação,\n   * sem a necessidade de definir a propriedade individualmente em cada campo.\n   *\n   * @default `false`\n   */\n  compactLabel = input<boolean, unknown>(false, { alias: 'p-compact-label', transform: convertToBoolean });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica se o `model` receberá o valor formatado pelas propriedades `p-label-on` e `p-label-off` ou\n   * apenas o valor puro (sem formatação).\n   *\n   * > Por padrão será atribuído `false`.\n   * @default `false`\n   */\n  @Input({ alias: 'p-format-model', transform: convertToBoolean })\n  set formatModel(format: boolean) {\n    this._formatModel = format || false;\n  }\n\n  get formatModel() {\n    return this._formatModel;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica se o status do `model` será escondido visualmente ao lado do switch.\n   *\n   * > Por padrão será atribuído `false`.\n   * @default `false`\n   */\n  @Input({ alias: 'p-hide-label-status', transform: convertToBoolean }) hideLabelStatus: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Posição de exibição do rótulo que fica ao lado do switch.\n   *\n   * > Por padrão exibe à direita.\n   */\n  @Input('p-label-position') set labelPosition(position: PoSwitchLabelPosition) {\n    this._labelPosition = position in PoSwitchLabelPosition ? parseInt(<any>position, 10) : PoSwitchLabelPosition.Right;\n  }\n\n  get labelPosition() {\n    return this._labelPosition;\n  }\n\n  /**\n   * Texto exibido quando o valor do componente for `false`.\n   *\n   * @default `false`\n   */\n  @Input('p-label-off') set labelOff(label: string) {\n    this._labelOff = label || 'false';\n  }\n\n  get labelOff() {\n    return this._labelOff;\n  }\n\n  /**\n   * Texto exibido quando o valor do componente for `true`.\n   *\n   * @default `true`\n   */\n  @Input('p-label-on') set labelOn(label: string) {\n    this._labelOn = label || 'true';\n  }\n\n  get labelOn() {\n    return this._labelOn;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de carregamento substituindo o switch para sinalizar que uma operação está em andamento.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-loading', transform: convertToBoolean })\n  set loading(value: boolean) {\n    this._loading = value;\n    this.changeDetector.markForCheck();\n  }\n\n  get loading(): boolean {\n    return this._loading;\n  }\n\n  get isDisabled(): boolean {\n    return this.disabled || this.loading;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe a mensagem de erro configurada quando o campo estiver desligado(off/false).\n   *\n   *\n   */\n  @Input('p-field-error-message') fieldErrorMessage: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Limita a exibição da mensagem de erro a duas linhas e exibe um tooltip com o texto completo.\n   *\n   * > Caso essa propriedade seja definida como `true`, a mensagem de erro será limitada a duas linhas\n   * e um tooltip será exibido ao passar o mouse sobre a mensagem para mostrar o conteúdo completo.\n   *\n   * @default `false`\n   */\n  @Input('p-error-limit') errorLimit: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define qual valor será considerado como inválido para exibir a mensagem da propriedade `p-field-error-message`.\n   *\n   * > Caso essa propriedade seja definida como `true`, a mensagem de erro será exibida quando o campo estiver ligado(on/true).\n   *\n   * @default `false`\n   */\n  @Input('p-invalid-value') invalidValue: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura de 16px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura de 24px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   *\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as opções do componente de ajuda (po-helper) que será exibido ao lado do label quando a propriedade `p-label` for definida, ou, ao lado do componente na ausência da propriedade `p-label`.\n   * > Para mais informações acesse: https://po-ui.io/documentation/po-helper.\n   *\n   * > Ao configurar esta propriedade, o antigo ícone de ajuda adicional (`p-additional-help-tooltip` e `p-additional-help`) será ignorado.\n   */\n  poHelperComponent = input<PoHelperOptions | string>(undefined, { alias: 'p-helper' });\n\n  /**\n   * @optional\n   *\n   * @description\n   * Habilita a quebra automática do texto da propriedade `p-label`. Quando `p-label-text-wrap` for verdadeiro, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * @default `false`\n   */\n  labelTextWrap = input<boolean>(false, { alias: 'p-label-text-wrap' });\n\n  private readonly el: ElementRef = inject(ElementRef);\n  private readonly injectOptions: InjectOptions = {\n    self: true\n  };\n  private control!: AbstractControl;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n  }\n\n  ngOnDestroy() {\n    this.statusChangesSubscription?.unsubscribe();\n  }\n\n  /**\n   * Função que atribui foco ao componente.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoSwitchComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoSwitchComponent, { static: true }) switch: PoSwitchComponent;\n   *\n   * focusSwitch() {\n   *   this.switch.focus();\n   * }\n   * ```\n   */\n  focus() {\n    if (!this.disabled) {\n      this.switchContainer.nativeElement.focus();\n    }\n  }\n\n  onBlur() {\n    this.onTouched?.();\n\n    if (this.getAdditionalHelpTooltip() && this.displayAdditionalHelp) {\n      super.showAdditionalHelp(this.helperEl, this.poHelperComponent());\n    }\n  }\n\n  getLabelPosition() {\n    switch (this.labelPosition) {\n      case PoSwitchLabelPosition.Left:\n        return 'left';\n      case PoSwitchLabelPosition.Right:\n        return 'right';\n      default:\n        return 'right';\n    }\n  }\n\n  onKeyDown(event) {\n    const isFieldFocused = document.activeElement === this.switchContainer?.nativeElement;\n\n    if (event.which === PoKeyCodeEnum.space || event.keyCode === PoKeyCodeEnum.space) {\n      event.preventDefault();\n      this.eventClick();\n    }\n\n    if (isFieldFocused) {\n      this.keydown.emit(event);\n    }\n  }\n\n  changeValue(value: any) {\n    if (this.value !== value) {\n      this.value = value;\n      if (this.formatModel) {\n        if (this.value) {\n          this.updateModel(this.labelOn);\n        } else {\n          this.updateModel(this.labelOff);\n        }\n      } else {\n        this.updateModel(value);\n      }\n      this.emitChange(this.value);\n    }\n  }\n\n  eventClick() {\n    if (!this.disabled) {\n      this.changeValue(!this.value);\n    }\n  }\n\n  onWriteValue(value: any): void {\n    if (value !== this.value) {\n      if (this.formatModel && !!value) {\n        this.value = value.toLowerCase() === this.labelOn.toLowerCase();\n      } else {\n        this.value = !!value;\n      }\n      this.changeDetector.markForCheck();\n    }\n  }\n\n  validate(control: AbstractControl): ValidationErrors | null {\n    const value = this.value as unknown as boolean;\n    const isRequired = { required: true };\n    if (this.invalidValue && this.fieldErrorMessage) {\n      return value === this.invalidValue ? isRequired : null;\n    } else if (this.fieldErrorMessage) {\n      return value === true ? null : isRequired;\n    }\n    return null;\n  }\n\n  ngAfterViewInit(): void {\n    this.setControl();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private setControl(): void {\n    const ngControl: NgControl = this.injector.get(NgControl, null, this.injectOptions);\n\n    if (ngControl) {\n      this.control = ngControl.control as UntypedFormControl;\n\n      if (this.control) {\n        this.statusChangesSubscription = this.control.statusChanges.subscribe(() => {\n          this.changeDetector.markForCheck();\n        });\n      }\n    }\n  }\n\n  //Transforma o tamanho do input para o tamanho do ícone de loading correspondente\n  public mapSizeToIcon(size: string): string {\n    return mapInputSizeToLoadingIcon(size);\n  }\n\n  getErrorPattern(): string {\n    return this.fieldErrorMessage && this.hasInvalidClass() ? this.fieldErrorMessage : '';\n  }\n\n  hasInvalidClass(): boolean {\n    return (\n      this.el.nativeElement.classList.contains('ng-invalid') && this.el.nativeElement.classList.contains('ng-dirty')\n    );\n  }\n\n  setHelper(label?: string, additionalHelpTooltip?: string) {\n    return setHelperSettings(\n      label,\n      additionalHelpTooltip,\n      this.poHelperComponent(),\n      this.size,\n      this.isAdditionalHelpEventTriggered() ? this.additionalHelp : undefined\n    );\n  }\n\n  /**\n   * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n   * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `p-keydown`.\n   *\n   * > Exibe ou oculta o conteúdo do componente `po-helper` quando o componente estiver com foco.\n   *\n   * ```\n   * //Exemplo com p-label e p-helper\n   * <po-switch\n   *  #switch\n   *  ...\n   *  p-label=\"Label do switch\"\n   *  [p-helper]=\"helperOptions\"\n   *  (p-keydown)=\"onKeyDown($event, switch)\"\n   * ></po-switch>\n   * ```\n   * ```typescript\n   * onKeyDown(event: KeyboardEvent, inp: PoSwitchComponent): void {\n   *  if (event.code === 'F9') {\n   *    inp.showAdditionalHelp();\n   *  }\n   * }\n   * ```\n   */\n  override showAdditionalHelp(): boolean {\n    return super.showAdditionalHelp(this.helperEl, this.poHelperComponent());\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n<po-field-container\n  [p-disabled]=\"isDisabled\"\n  [p-id]=\"id\"\n  [p-label]=\"label\"\n  [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n  [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n  [p-size]=\"size\"\n  [p-text-wrap]=\"labelTextWrap()\"\n  [p-compact-label]=\"compactLabel()\"\n>\n  <div class=\"po-field-container-content\" [attr.name]=\"name\">\n    <div class=\"po-switch\" [attr.data-label-position]=\"getLabelPosition()\">\n      <div\n        #switchContainer\n        class=\"po-switch-container\"\n        role=\"switch\"\n        [attr.aria-checked]=\"value\"\n        [attr.aria-disabled]=\"isDisabled\"\n        [attr.data-focused-element]=\"!isDisabled\"\n        [attr.data-inactive-component]=\"isDisabled\"\n        [id]=\"id\"\n        [tabindex]=\"isDisabled ? -1 : 0\"\n        (blur)=\"onBlur()\"\n        (click)=\"eventClick()\"\n        (keydown)=\"onKeyDown($event)\"\n      >\n        @if (loading) {\n          <div class=\"po-switch-loading-container\">\n            <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n          </div>\n        } @else {\n          <div class=\"po-switch-track\">\n            <div class=\"po-switch-toggle\" [attr.aria-label]=\"value === true ? labelOn : labelOff\">\n              @if (value === true) {\n                <po-icon class=\"po-switch-icon\" p-icon=\"ICON_OK\"></po-icon>\n              }\n            </div>\n          </div>\n        }\n      </div>\n      @if (!hideLabelStatus && !loading) {\n        <po-label\n          class=\"po-switch-label\"\n          [p-disabled]=\"isDisabled\"\n          [p-label]=\"value === true ? labelOn : labelOff\"\n          (click)=\"eventClick()\"\n        >\n        </po-label>\n      }\n    </div>\n    @if ((!this.label && poHelperComponent()) || (!this.label && poHelper.hideAdditionalHelp)) {\n      <po-helper\n        #helperEl\n        [p-size]=\"size\"\n        [p-helper]=\"poHelper.helperSettings\"\n        [p-disabled]=\"isDisabled\"\n        [p-append-in-body]=\"appendBox\"\n      >\n      </po-helper>\n    }\n  </div>\n  <po-field-container-bottom\n    [p-append-in-body]=\"appendBox\"\n    [p-help]=\"help\"\n    [p-disabled]=\"isDisabled\"\n    [p-error-limit]=\"errorLimit\"\n    [p-error-pattern]=\"getErrorPattern()\"\n    [p-size]=\"size\"\n  ></po-field-container-bottom>\n</po-field-container>\n","import { ChangeDetectorRef, Component, EventEmitter, Inject, Input, Optional, Output, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { poLocaleDefault } from '../../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from '../../../utils/util';\nimport { PoCheckboxGroupComponent } from '../../po-field/po-checkbox-group/po-checkbox-group.component';\nimport { PoTableColumn } from '../interfaces/po-table-column.interface';\n\nexport const poTableListManagerLiterals = {\n  en: {\n    up: 'up',\n    down: 'down',\n    otherColumns: 'Other columns',\n    fixedColumns: 'Fixed'\n  },\n  es: {\n    up: 'arriba',\n    down: 'abajo',\n    otherColumns: 'Otras columnas',\n    fixedColumns: 'Fijado'\n  },\n  pt: {\n    up: 'acima',\n    down: 'abaixo',\n    otherColumns: 'Outras colunas',\n    fixedColumns: 'Fixo'\n  },\n  ru: {\n    up: 'вверх',\n    down: 'вниз',\n    otherColumns: 'Другие столбцы',\n    fixedColumns: 'зафиксированный'\n  }\n};\n\ntype Direction = 'up' | 'down';\n\n@Component({\n  selector: 'po-table-list-manager',\n  templateUrl: './po-table-list-manager.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoTableListManagerComponent),\n      multi: true\n    }\n  ],\n  standalone: false\n})\nexport class PoTableListManagerComponent extends PoCheckboxGroupComponent {\n  private _componentsSize?: string = undefined;\n\n  @Output('p-change-position')\n  private readonly changePosition = new EventEmitter<any>();\n\n  @Output('p-change-fixed')\n  private readonly changeColumnFixed = new EventEmitter<any>();\n\n  @Input('p-columns-manager') columnsManager: Array<PoTableColumn>;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos componentes de formulário no table:\n   * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n   * - `medium`: aplica a medida medium de cada componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  @Input('p-components-size') set componentsSize(value: string) {\n    this._componentsSize = validateSizeFn(value, PoFieldSize);\n  }\n\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  @Input({ alias: 'p-hide-action-fixed-columns', transform: convertToBoolean }) hideActionFixedColumns: boolean = false;\n\n  literals;\n\n  constructor(languageService: PoLanguageService, changeDetector: ChangeDetectorRef) {\n    super();\n\n    const language = languageService.getShortLanguage();\n\n    this.literals = {\n      ...poTableListManagerLiterals[poLocaleDefault],\n      ...poTableListManagerLiterals[language]\n    };\n  }\n\n  emitChangePosition(option, direction: Direction) {\n    if (!this.isFixed(option)) {\n      const infoPosition = { option, direction };\n      const hasDisabled: boolean = this.verifyArrowDisabled(option, direction);\n      if (!hasDisabled) {\n        this.changePosition.emit(infoPosition);\n      }\n    }\n  }\n\n  verifyArrowDisabled(option, direction: Direction) {\n    const index = this.columnsManager.findIndex(el => el.property === option.value);\n    const existsDetail = this.columnsManager.some(function (el) {\n      return el.property === 'detail';\n    });\n    const valueSubtraction = existsDetail ? 2 : 1;\n\n    if (index === 0 && direction === 'up') {\n      return true;\n    }\n\n    if (index !== 0 && direction === 'up' && this.columnsManager[index - 1].fixed) {\n      return true;\n    }\n\n    if (index === this.columnsManager.length - valueSubtraction && direction === 'down') {\n      return true;\n    }\n\n    return false;\n  }\n\n  emitFixed(option) {\n    if (option.visible) {\n      const index = this.columnsManager.findIndex(el => el.property === option.value);\n\n      if (\n        this.columnsManager[index].fixed === null ||\n        this.columnsManager[index].fixed === undefined ||\n        this.columnsManager[index].fixed === false\n      ) {\n        this.columnsManager[index].fixed = true;\n        option.fixed = true;\n      } else {\n        this.columnsManager[index].fixed = false;\n        option.fixed = false;\n      }\n      this.changeColumnFixed.emit(option);\n    }\n  }\n\n  isFixed(option) {\n    const index = this.columnsManager.findIndex(el => el.property === option.value);\n    if (this.columnsManager[index].fixed === true) {\n      return true;\n    }\n    return false;\n  }\n\n  existedFixedItem() {\n    return this.columnsManager.some(option => option['fixed'] === true);\n  }\n\n  checksIfHasFiveFixed(option) {\n    const isMoreThanFive = this.columnsManager.filter(item => item.fixed === true).length > 4;\n    const isNotFixed = !this.isFixed(option);\n\n    return isMoreThanFive && isNotFixed;\n  }\n\n  clickSwitch(option) {\n    this.checkOption(option);\n  }\n}\n","@if (existedFixedItem()) {\n  <section class=\"po-table-list-manager-section\">\n    <p class=\"po-table-list-manager-title-group-items\">{{ literals.fixedColumns }}</p>\n    @for (option of checkboxGroupOptionsView; track trackByFn($index)) {\n      @if (isFixed(option)) {\n        <li\n          class=\"po-table-list-manager-container\"\n          [class.po-checkbox-group-item-disabled]=\"option.disabled || disabled\"\n        >\n          <ng-container *ngTemplateOutlet=\"listItemsManagerDefault; context: { $implicit: option }\"></ng-container>\n        </li>\n      }\n    }\n  </section>\n}\n\n<section class=\"po-table-list-manager-section\">\n  <p class=\"po-table-list-manager-title-group-items\">{{ literals.otherColumns }}</p>\n  @for (option of checkboxGroupOptionsView; track trackByFn($index)) {\n    @if (!isFixed(option)) {\n      <li class=\"po-table-list-manager-container\" [class.po-checkbox-group-item-disabled]=\"option.disabled || disabled\">\n        @if (!isFixed(option)) {\n          <ng-container *ngTemplateOutlet=\"listItemsManagerDefault; context: { $implicit: option }\"></ng-container>\n        }\n      </li>\n    }\n  }\n</section>\n\n<ng-template #listItemsManagerDefault let-option>\n  <div class=\"po-table-list-manager-item\">\n    <div class=\"po-table-list-manager-item-switch\">\n      <po-switch\n        name=\"switch\"\n        (p-change)=\"clickSwitch(option)\"\n        (keydown)=\"onKeyDown($event, option)\"\n        [p-disabled]=\"option.disabled || disabled || isFixed(option)\"\n        [p-value]=\"checkedOptions[option.value]\"\n        [p-hide-label-status]=\"true\"\n        [p-size]=\"componentsSize\"\n      >\n      </po-switch>\n      <span\n        class=\"po-table-list-manager-item-text\"\n        [class.po-table-list-manager-item-text-aa]=\"componentsSize === 'small'\"\n      >\n        {{ option.label }}\n      </span>\n    </div>\n\n    <div class=\"po-table-list-manager-item-buttons\">\n      @if (!hideActionFixedColumns) {\n        <po-button\n          [p-icon]=\"isFixed(option) ? 'ICON_PUSH_PIN_SLASH' : 'ICON_PUSH_PIN'\"\n          (p-click)=\"emitFixed(option)\"\n          [p-disabled]=\"!option.visible || checksIfHasFiveFixed(option)\"\n          [p-size]=\"componentsSize\"\n        >\n        </po-button>\n      }\n\n      <po-button\n        [p-tooltip]=\"literals.up\"\n        p-tooltip-position=\"left\"\n        p-icon=\"ICON_ARROW_UP\"\n        [p-disabled]=\"verifyArrowDisabled(option, 'up') || isFixed(option)\"\n        [p-size]=\"componentsSize\"\n        (p-click)=\"emitChangePosition(option, 'up')\"\n      >\n      </po-button>\n\n      <po-button\n        [p-tooltip]=\"literals.down\"\n        p-tooltip-position=\"top\"\n        p-icon=\"ICON_ARROW_DOWN\"\n        [p-disabled]=\"verifyArrowDisabled(option, 'down') || isFixed(option)\"\n        [p-size]=\"componentsSize\"\n        (p-click)=\"emitChangePosition(option, 'down')\"\n      >\n      </po-button>\n    </div>\n  </div>\n</ng-template>\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  Renderer2,\n  SimpleChange,\n  SimpleChanges,\n  ViewChild,\n  output\n} from '@angular/core';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { poLocaleDefault } from '../../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport { convertToBoolean, convertToInt, getDefaultSizeFn, validateSizeFn, PoUtils } from '../../../utils/util';\nimport { PoCheckboxGroupOption } from '../../po-field/po-checkbox-group/interfaces/po-checkbox-group-option.interface';\nimport { PoPageSlideComponent } from '../../po-page/po-page-slide';\nimport { PoPopoverComponent } from '../../po-popover/po-popover.component';\nimport { PoTableColumn } from '../interfaces/po-table-column.interface';\n\nconst PoTableColumnManagerMaxColumnsDefault = 99999;\n\nexport const poTableColumnManagerLiteralsDefault = {\n  en: {\n    columnsManager: 'Columns manager',\n    restoreDefault: 'Restore default'\n  },\n  es: {\n    columnsManager: 'Gerente de columna',\n    restoreDefault: 'Restaurar por defecto'\n  },\n  pt: {\n    columnsManager: 'Gerenciador de colunas',\n    restoreDefault: 'Restaurar padrão'\n  },\n  ru: {\n    columnsManager: 'менеджер колонок',\n    restoreDefault: 'сброс настроек'\n  }\n};\n\ntype Direction = 'up' | 'down';\n\n@Component({\n  selector: 'po-table-column-manager',\n  templateUrl: './po-table-column-manager.component.html',\n  standalone: false\n})\nexport class PoTableColumnManagerComponent implements OnChanges, OnDestroy {\n  @ViewChild(PoPopoverComponent) popover: PoPopoverComponent;\n  @ViewChild('pageSlideColumnsManager') pageSlideColumnsManager: PoPageSlideComponent;\n\n  @Input('p-columns') columns: Array<PoTableColumn> = [];\n\n  @Input('p-target') target: ElementRef;\n\n  @Input('p-columns-default') colunsDefault: Array<PoTableColumn>;\n\n  @Input('p-last-visible-columns-selected') lastVisibleColumnsSelected: Array<PoTableColumn> = [];\n\n  @Output('p-visible-columns-change') visibleColumnsChange = new EventEmitter<Array<PoTableColumn>>();\n\n  // Evento disparado ao fechar o popover do gerenciador de colunas após alterar as colunas visíveis.\n  // O po-table envia como parâmetro um array de string com as colunas visíveis atualizadas. Por exemplo: [\"idCard\", \"name\", \"hireStatus\", \"age\"].\n  @Output('p-change-visible-columns') changeVisibleColumns = new EventEmitter<Array<string>>();\n\n  // Evento disparado ao alterar o estado de fixação de uma coluna no gerenciador de colunas.\n  // O po-table envia como parâmetro um array de string com as propriedades das colunas fixas. Por exemplo: [\"name\", \"age\"].\n  changeFixedColumns = output<Array<string>>({ alias: 'p-change-fixed-columns' });\n\n  @Output('p-initial-columns') initialColumns = new EventEmitter<Array<string>>();\n\n  @Input({ alias: 'p-hide-action-fixed-columns', transform: convertToBoolean }) hideActionFixedColumns: boolean = false;\n\n  literals;\n  columnsOptions: Array<PoCheckboxGroupOption> = [];\n  visibleColumns: Array<string> = [];\n  columnUpdate;\n\n  private _maxColumns: number = PoTableColumnManagerMaxColumnsDefault;\n  private defaultColumns: Array<PoTableColumn> = [];\n  private resizeListener: () => void;\n  private restoreDefaultEvent: boolean;\n  private lastEmittedValue: Array<string>;\n  private readonly minColumns: number = 1;\n  private _componentsSize?: string = undefined;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos componentes de formulário no table:\n   * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n   * - `medium`: aplica a medida medium de cada componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  @Input('p-components-size') set componentsSize(value: string) {\n    this._componentsSize = validateSizeFn(value, PoFieldSize);\n  }\n\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  @Input('p-max-columns') set maxColumns(value: number) {\n    this._maxColumns = convertToInt(value, PoTableColumnManagerMaxColumnsDefault);\n  }\n\n  get maxColumns() {\n    return this._maxColumns;\n  }\n\n  constructor(\n    private readonly renderer: Renderer2,\n    languageService: PoLanguageService\n  ) {\n    const language = languageService.getShortLanguage();\n\n    this.literals = {\n      ...poTableColumnManagerLiteralsDefault[poLocaleDefault],\n      ...poTableColumnManagerLiteralsDefault[language]\n    };\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const { columns, maxColumns, target, lastVisibleColumnsSelected } = changes;\n\n    if (target && target.firstChange) {\n      this.initializeListeners();\n    }\n\n    if (columns) {\n      this.onChangeColumns(columns);\n    }\n\n    if (maxColumns) {\n      this.updateValues(this.columns);\n    }\n\n    if (lastVisibleColumnsSelected?.currentValue) {\n      this.pageSlideColumnsManager.open();\n    }\n  }\n\n  ngOnDestroy() {\n    this.removeListeners();\n  }\n\n  // aqui chegam os eventos do checkbox e do close do popover que também é disparado no resize\n  checkChanges(event: Array<string> = [], emit: boolean = false) {\n    this.verifyToEmitChange(event);\n\n    if (emit) {\n      // controla emissões para o dev\n      this.verifyToEmitVisibleColumns();\n    }\n  }\n\n  restore() {\n    this.restoreDefaultEvent = true;\n    this.defaultColumns = this.removePropertyFixed(this.defaultColumns);\n    const defaultColumns = this.getVisibleColumns(this.defaultColumns);\n    this.initialColumns.emit(this.getVisibleColumns(this.colunsDefault));\n    this.checkChanges(defaultColumns, this.restoreDefaultEvent);\n    if (!this.hideActionFixedColumns) {\n      this.changeFixedColumns.emit([]);\n    }\n  }\n\n  changePosition({ option, direction }) {\n    const indexColumn = this.columns.findIndex(el => el.property === option.value);\n    const newColumn = [...this.columns];\n\n    this.changePositionColumn(newColumn, indexColumn, direction);\n    this.columns = newColumn;\n    this.visibleColumnsChange.emit(this.columns);\n  }\n\n  emitColumnFixed(option) {\n    const newColumn = [...this.columns];\n    if (option) {\n      newColumn.forEach(itemColumn => {\n        if (itemColumn.property === option.value) {\n          itemColumn.fixed = option.fixed;\n        }\n      });\n\n      const amountOfFixed = newColumn.filter(itemFixed => itemFixed.fixed === true).length;\n      const indexColumn = newColumn.findIndex(el => el.property === option.value);\n      const item = newColumn.splice(indexColumn, 1)[0];\n\n      if (option.fixed) {\n        newColumn.splice(amountOfFixed - 1, 0, item);\n      }\n\n      if (option.fixed === false) {\n        newColumn.splice(amountOfFixed, 0, item);\n      }\n\n      this.columns = [...newColumn];\n    }\n\n    this.visibleColumnsChange.emit(newColumn);\n    if (!this.hideActionFixedColumns) {\n      const fixedColumns = newColumn.filter(col => col.fixed === true).map(col => col.property);\n      this.changeFixedColumns.emit(fixedColumns);\n    }\n  }\n\n  private changePositionColumn(array: Array<PoTableColumn>, index: number, direction: Direction) {\n    if (direction === 'up') {\n      array.splice(index, 0, array.splice(index - 1, 1)[0]);\n    }\n\n    if (direction === 'down') {\n      array.splice(index, 0, array.splice(index + 1, 1)[0]);\n    }\n  }\n\n  private verifyToEmitChange(event: Array<string>) {\n    const newColumns = [...event];\n    if (newColumns.length >= 1 && this.allowsChangeVisibleColumns()) {\n      this.emitChangesToSelectedColumns(newColumns);\n    }\n    // Desabilita ultimo checkbox ativo\n    if (newColumns.length === 1) {\n      const columnsOptions = this.mapTableColumnsToCheckboxOptions(this.columnUpdate);\n      this.columnsOptions = this.disabledLastColumn(columnsOptions);\n    }\n  }\n\n  private emitChangesToSelectedColumns(newColumns: Array<string>) {\n    this.visibleColumns = [...newColumns];\n    const visibleTableColumns = this.getVisibleTableColumns(this.visibleColumns);\n\n    // emite alteração nas colunas selecionadas, porém não emite para o dev.\n    this.visibleColumnsChange.emit(visibleTableColumns);\n  }\n\n  private allowsChangeVisibleColumns(): boolean {\n    const visibleTableColumns = this.getVisibleTableColumns(this.visibleColumns);\n\n    return this.stringify(visibleTableColumns) !== this.stringify(this.columns);\n  }\n\n  private verifyToEmitVisibleColumns() {\n    if (this.restoreDefaultEvent) {\n      // veio do restore default\n      this.verifyRestoreValues();\n    } else {\n      // foi disparado no close popover;\n      this.verifyOnClose();\n    }\n  }\n\n  private verifyRestoreValues() {\n    const defaultColumns = [...this.defaultColumns];\n    const defaultVisibleColumns = this.getVisibleColumns(defaultColumns);\n\n    if (this.allowsChangeSelectedColumns(defaultVisibleColumns)) {\n      this.visibleColumnsChange.emit(this.defaultColumns);\n    }\n\n    this.restoreDefaultEvent = false;\n  }\n\n  private allowsChangeSelectedColumns(defaultVisibleColumns: Array<string>) {\n    const visibleColumns = this.getVisibleColumns(this.columns);\n\n    return !this.isEqualArrays(defaultVisibleColumns, visibleColumns);\n  }\n\n  private verifyOnClose() {\n    if (this.allowsEmission()) {\n      this.emitVisibleColumns();\n    }\n  }\n\n  private emitVisibleColumns() {\n    this.lastEmittedValue = [...this.visibleColumns];\n    this.changeVisibleColumns.emit(this.visibleColumns);\n  }\n\n  private allowsEmission(): boolean {\n    const updatedVisibleColumns = this.visibleColumns ? [...this.visibleColumns] : [];\n    const lastEmittedValue = this.lastEmittedValue ? [...this.lastEmittedValue] : [];\n    const lastVisibleColumnsSelected = this.lastVisibleColumnsSelected ? [...this.lastVisibleColumnsSelected] : [];\n    const lastVisibleColumns = this.getVisibleColumns(lastVisibleColumnsSelected);\n\n    return (\n      this.isUpdate(updatedVisibleColumns, lastEmittedValue) ||\n      this.isFirstTime(updatedVisibleColumns, lastVisibleColumns)\n    );\n  }\n\n  private isFirstTime(updatedVisibleColumns: Array<string>, lastVisibleColumns: Array<string>): boolean {\n    return !this.lastEmittedValue && !this.isEqualArrays(updatedVisibleColumns, lastVisibleColumns);\n  }\n\n  private isUpdate(updatedVisibleColumns: Array<string>, lastEmittedValue: Array<string>): boolean {\n    return this.lastEmittedValue && !this.isEqualArrays(updatedVisibleColumns, lastEmittedValue);\n  }\n\n  private isEqualArrays(first: Array<string>, second: Array<string>): boolean {\n    const one = first ? [...first] : [];\n    const two = second ? [...second] : [];\n    const firstSort = one.slice();\n    const secondSort = two.slice();\n    const firstString = JSON.stringify(firstSort);\n    const secondString = JSON.stringify(secondSort);\n\n    return firstString === secondString;\n  }\n\n  // desabilitará as colunas, que não estiverem selecionadas, após exeder o numero maximo de colunas.\n  private disableColumnsOptions(columns: Array<PoCheckboxGroupOption> = []) {\n    return columns.map(column => ({\n      ...column,\n      disabled: this.isDisableColumn(column.value)\n    }));\n  }\n\n  private getColumnTitleLabel(column: PoTableColumn) {\n    return column.label || PoUtils.capitalizeFirstLetter(column.property);\n  }\n\n  /** Retorna um Array de column.property das colunas que são visiveis. */\n  private getVisibleColumns(columns: Array<PoTableColumn>): Array<string> {\n    let visibleColumns = [];\n\n    columns.forEach(column => {\n      if (this.isVisibleColumn(column, visibleColumns)) {\n        visibleColumns = [...visibleColumns, column.property];\n      }\n    });\n\n    return visibleColumns;\n  }\n\n  private isVisibleColumn(column: PoTableColumn, visibleColumns: Array<string>): boolean {\n    return column.visible !== false && visibleColumns.length < this.maxColumns && column.type !== 'detail';\n  }\n\n  /** Retorna um Array PoTableColumn a partir das colunas visiveis no gerenciador de colunas. */\n  private getVisibleTableColumns(visibleColumns: Array<string>): Array<PoTableColumn> {\n    const columns = this.columns ? [...this.columns] : [];\n\n    return columns.map(column => ({\n      ...column,\n      visible: visibleColumns.includes(column.property) || column.type === 'detail'\n    }));\n  }\n\n  private initializeListeners() {\n    this.resizeListener = this.renderer.listen('window', 'resize', () => {\n      if (this.popover && !this.popover.isHidden) {\n        this.popover.close();\n      }\n    });\n  }\n\n  private isDisableColumn(property: string): boolean {\n    return this.visibleColumns.length >= this.maxColumns ? !this.visibleColumns.includes(property) : false;\n  }\n\n  private mapTableColumnsToCheckboxOptions(columns: Array<PoTableColumn> = []) {\n    const tableColumns = [...columns];\n    const columnsOptions = [];\n\n    tableColumns.forEach(column => {\n      if (column.type !== 'detail') {\n        columnsOptions.push({\n          value: column.property,\n          label: this.getColumnTitleLabel(column),\n          disabled: this.isDisableColumn(column.property),\n          visible: column.visible\n        });\n      }\n    });\n\n    return columnsOptions;\n  }\n\n  private disabledLastColumn(columns: Array<any>) {\n    return columns.map(column => ({\n      ...column,\n      disabled: column.type !== 'detail' && column.visible ? true : false\n    }));\n  }\n\n  private onChangeColumns(columns: SimpleChange) {\n    const { currentValue = [], previousValue = [] } = columns;\n    this.columnUpdate = columns.currentValue;\n\n    // atualizara o defaultColumns, quando for a primeira vez ou quando o defaultColumns for diferente do currentValue\n    if (!this.lastVisibleColumnsSelected && this.stringify(this.defaultColumns) !== this.stringify(currentValue)) {\n      this.defaultColumns = [...currentValue];\n    }\n\n    // verifica se o valor anterior é diferente do atual para atualizar as columnsOptions apenas quando for necessario\n    if (this.stringify(previousValue) !== this.stringify(currentValue)) {\n      this.updateValues(currentValue);\n    }\n  }\n\n  private updateValues(currentValue: Array<PoTableColumn>) {\n    const visibleColumns = this.getVisibleColumns(currentValue);\n    this.visibleColumns = [...visibleColumns];\n\n    const columnsOptions = this.mapTableColumnsToCheckboxOptions(currentValue);\n    this.columnsOptions = this.disableColumnsOptions(columnsOptions);\n\n    this.checkChanges(visibleColumns, false);\n  }\n\n  private removeListeners() {\n    if (this.resizeListener) {\n      this.resizeListener();\n    }\n  }\n\n  private stringify(columns: Array<PoTableColumn>) {\n    // não faz o stringify da propriedade icon e searchService, pois pode conter objeto complexo e disparar um erro.\n    return JSON.stringify(columns, (key, value) => {\n      if (key !== 'icon' && key !== 'searchService') {\n        return value;\n      }\n    });\n  }\n\n  private removePropertyFixed(arr: Array<any>) {\n    return arr.map(obj => {\n      if (obj.hasOwnProperty('fixed')) {\n        obj.fixed = false;\n      }\n      return obj;\n    });\n  }\n}\n","<po-page-slide\n  #pageSlideColumnsManager\n  p-size=\"auto\"\n  [p-title]=\"literals.columnsManager\"\n  [p-click-out]=\"true\"\n  [p-components-size]=\"componentsSize\"\n  (p-close)=\"checkChanges([], true)\"\n>\n  <div>\n    <div class=\"po-table-column-manager-body\">\n      <po-table-list-manager\n        name=\"visibleColumns\"\n        [(ngModel)]=\"visibleColumns\"\n        p-columns=\"1\"\n        [p-columns-manager]=\"columns\"\n        [p-components-size]=\"componentsSize\"\n        [p-options]=\"columnsOptions\"\n        [p-hide-action-fixed-columns]=\"hideActionFixedColumns\"\n        (p-change)=\"checkChanges($event, false)\"\n        (p-change-position)=\"changePosition($event)\"\n        (p-change-fixed)=\"emitColumnFixed($event)\"\n      >\n      </po-table-list-manager>\n    </div>\n\n    <div class=\"po-table-column-manager-footer\">\n      <po-button\n        class=\"po-table-column-manager-footer-restore\"\n        p-kind=\"tertiary\"\n        [p-label]=\"literals.restoreDefault\"\n        [p-size]=\"componentsSize\"\n        (p-click)=\"restore()\"\n      >\n      </po-button>\n    </div>\n  </div>\n</po-page-slide>\n","import { ComponentRef } from '@angular/core';\n\nimport { PoToaster, PoToasterMode, PoToasterOrientation, PoToasterType } from '../../components/po-toaster';\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { validateSizeFn } from '../../utils/util';\nimport { PoNotification } from './po-notification.interface';\n\n/**\n * @description\n *\n * Serviço responsável por emitir as notificações em uma página. São disponibilizados os métodos de:\n *\n * - success,\n * - warning,\n * - error,\n * - information.\n *\n * Cada um destes métodos recebe como parâmetro o objeto `PoNotification` que contém os dados da mensagem e o\n * objeto ViewContainerRef que é a representação do container do componente onde será criada a notificação.\n *\n * Estas notificações serão exibidas durante 9 segundos por padrão, podendo ser alterada conforme necessidade.\n * Após este tempo a mesma é removida automaticamente.\n *\n * Notificações com ação ou notificações de `erro` permanecerão em tela até o usuário fecha-lá ou clicar na ação.\n *\n * O serviço possui um limite de até 5 notificações por vez, a partir do sexto a primeira notificação será removida dando lugar a nova.\n *\n */\nexport abstract class PoNotificationBaseService {\n  // Array responsável por guardar a instância de po-toaster's superiores.\n  stackTop: Array<ComponentRef<any>> = [];\n\n  // Array responsável por guardar a instância de po-toaster's inferiores.\n  stackBottom: Array<ComponentRef<any>> = [];\n\n  // Duração da notificação ativa.\n  private defaultDuration = 9000;\n\n  /**\n   * Emite uma notificação de sucesso.\n   *\n   * @param {PoNotification | string} notification Objeto com os dados da notificação ou somente a string com a mensagem da notificação.\n   */\n  public success(notification: PoNotification | string) {\n    this.createToaster(this.buildToaster(notification, PoToasterType.Success));\n  }\n\n  /**\n   * Emite uma notificação de atenção.\n   *\n   * @param {PoNotification | string} notification Objeto com os dados da notificação ou somente a string com a mensagem da notificação\n   */\n  public warning(notification: PoNotification | string) {\n    this.createToaster(this.buildToaster(notification, PoToasterType.Warning));\n  }\n\n  /**\n   * Emite uma notificação de erro.\n   *\n   * @param {PoNotification | string} notification Objeto com os dados da notificação ou somente a string com a mensagem da notificação\n   */\n  public error(notification: PoNotification | string) {\n    this.createToaster(this.buildToaster(notification, PoToasterType.Error));\n  }\n\n  /**\n   * Emite uma notificação de informação.\n   *\n   * @param {PoNotification | string} notification Objeto com os dados da notificação ou somente a string com a mensagem da notificação\n   */\n  public information(notification: PoNotification | string) {\n    this.createToaster(this.buildToaster(notification, PoToasterType.Information));\n  }\n\n  /**\n   * Define em milissegundos a duração padrão para as notificações.\n   *\n   * > Padrão 9 segundos.\n   *\n   * @param {number} defaultDuration Duração em milisegundos\n   */\n  public setDefaultDuration(defaultDuration: number) {\n    this.defaultDuration = defaultDuration;\n  }\n\n  /**\n   * @docsPrivate\n   *\n   * Cria um objeto do tipo PoToaster de acordo o tipo.\n   *\n   * @param {PoNotification | string} notification Objeto PoNotification com os dados da notificação\n   */\n  private buildToaster(notification: PoNotification | string, type: PoToasterType): PoToaster {\n    let index = 0;\n    let orientation;\n\n    if (\n      (<PoNotification>notification).orientation === undefined ||\n      (<PoNotification>notification).orientation === PoToasterOrientation.Bottom\n    ) {\n      index = this.stackBottom.length;\n      orientation = PoToasterOrientation.Bottom;\n    } else {\n      index = this.stackTop.length;\n      orientation = PoToasterOrientation.Top;\n    }\n\n    const sizeActions = validateSizeFn((<PoNotification>notification).sizeActions, PoFieldSize);\n    const toaster: PoToaster = {\n      componentRef: undefined,\n      message: (<PoNotification>notification).message || <string>notification,\n      type: type,\n      orientation: orientation,\n      action: (<PoNotification>notification).action,\n      actionLabel: (<PoNotification>notification).actionLabel,\n      position: index,\n      mode: (<PoNotification>notification).mode || PoToasterMode.Alert,\n      showClose: (<PoNotification>notification).showClose || true,\n      sizeActions: sizeActions,\n      supportMessage: (<PoNotification>notification).supportMessage,\n      duration: (<PoNotification>notification).duration || this.defaultDuration\n    };\n\n    if ((<PoNotification>notification).action) {\n      toaster.action = (param: any) => {\n        (<PoNotification>notification).action();\n        this.destroyToaster(param.componentRef);\n      };\n    }\n\n    return toaster;\n  }\n\n  /**\n   * @docsPrivate\n   *\n   * Método responsável por criar o po-toaster.\n   *\n   * @param {PoToaster} toaster Objeto contendo as informações do toaster.\n   */\n  abstract createToaster(toaster: PoToaster): void;\n\n  /**\n   * @docsPrivate\n   *\n   * Método responsável por destruir o po-toaster.\n   *\n   * @param {ComponentRef} toaster Número da posição ou instancia do toaster a ser destruído.\n   * @param {PoToasterOrientation} orientation Orientação do PoToaster: Top ou Bottom\n   */\n  abstract destroyToaster(toaster: ComponentRef<any>): void;\n}\n","import { ComponentRef, Injectable } from '@angular/core';\n\nimport { timer } from 'rxjs';\nimport { takeWhile } from 'rxjs/operators';\nimport { PoToaster, PoToasterComponent, PoToasterOrientation, PoToasterType } from '../../components/po-toaster';\nimport { PoComponentInjectorService } from './../po-component-injector/po-component-injector.service';\nimport { PoNotificationBaseService } from './po-notification-base.service';\n\nconst PoNotificationMaxLength = 5;\nconst PoNotificationFadeTime = 200;\n\n/**\n * @docsExtends PoNotificationBaseService\n *\n * @example\n *\n * <example name=\"po-notification-basic\" title=\"PO Notification Basic\">\n *  <file name=\"sample-po-notification-basic/sample-po-notification-basic.component.html\"> </file>\n *  <file name=\"sample-po-notification-basic/sample-po-notification-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-notification-labs\" title=\"PO Notification Labs\">\n *  <file name=\"sample-po-notification-labs/sample-po-notification-labs.component.html\"> </file>\n *  <file name=\"sample-po-notification-labs/sample-po-notification-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-notification-sales\" title=\"PO Notification - Sales\">\n *  <file name=\"sample-po-notification-sales/sample-po-notification-sales.component.html\"> </file>\n *  <file name=\"sample-po-notification-sales/sample-po-notification-sales.component.ts\"> </file>\n * </example>\n */\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoNotificationService extends PoNotificationBaseService {\n  constructor(private readonly poComponentInjector: PoComponentInjectorService) {\n    super();\n  }\n\n  createToaster(toaster: PoToaster): void {\n    const componentRef: ComponentRef<any> = this.poComponentInjector.createComponentInApplication(PoToasterComponent);\n    toaster.componentRef = componentRef;\n\n    componentRef.changeDetectorRef.detectChanges();\n    componentRef.instance.configToaster(toaster);\n\n    const stack = toaster.orientation === PoToasterOrientation.Top ? this.stackTop : this.stackBottom;\n    stack.push(componentRef);\n\n    this.verifyLimitToaster(stack);\n\n    this.observableOnClose(componentRef);\n\n    if (!((toaster.action && toaster.actionLabel) || toaster.type === PoToasterType.Error)) {\n      timer(toaster.duration)\n        .pipe(takeWhile(() => componentRef.instance.alive))\n        .subscribe(() => {\n          this.destroyToaster(componentRef);\n        });\n    }\n  }\n\n  destroyToaster(toaster: any): void {\n    let stack;\n    if (toaster.instance.orientation === PoToasterOrientation.Top) {\n      stack = this.stackTop;\n    } else {\n      stack = this.stackBottom;\n    }\n\n    toaster.instance.setFadeOut();\n    const index = stack.indexOf(toaster);\n    stack.splice(index, 1);\n\n    setTimeout(() => {\n      this.poComponentInjector.destroyComponentInApplication(toaster);\n      for (let count = 0; count < stack.length; count++) {\n        stack[count].instance.changePosition(count);\n      }\n    }, PoNotificationFadeTime);\n  }\n\n  private observableOnClose(componentRef: any) {\n    componentRef.instance.observableOnClose.subscribe(() => {\n      this.destroyToaster(componentRef);\n    });\n  }\n\n  private verifyLimitToaster(stack: Array<any>) {\n    if (stack.length > PoNotificationMaxLength) {\n      this.destroyToaster(stack[0]);\n    }\n  }\n}\n","/**\n * @usedBy PoTableRowTemplateDirective\n *\n * @description\n * Define a posição da arrow que expande o * row template* na tabela, será exibida na esquerda ou direita.\n */\nexport enum PoTableRowTemplateArrowDirection {\n  /** Posiciona a *arrow* na esquerda. (Padrão) */\n  Left = 'LEFT',\n\n  /** Posiciona a *arrow* na direita */\n  Right = 'RIGHT'\n}\n","/**\n * @usedBy PoSearchComponent\n *\n * @description\n *\n * Define o tipo de busca usado no `po-search`.\n */\nexport enum PoSearchFilterMode {\n  /** Verifica se o texto *inicia* com o valor pesquisado. */\n  startsWith,\n  /** Verifica se o texto *contém* o valor pesquisado. */\n  contains,\n  /** Verifica se o texto *finaliza* com o valor pesquisado. */\n  endsWith\n}\n","/**\n * @usedBy PoTableComponent\n *\n * @description\n * Tipos de ordenação das colunas da tabela.\n */\nexport enum PoTableColumnSortType {\n  /** Ordenação ascendente */\n  Ascending = 'ascending',\n\n  /** Ordenação descendente */\n  Descending = 'descending'\n}\n","import { debounceTime } from 'rxjs/operators';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { fromEvent, Observable } from 'rxjs';\nimport { isTypeof } from '../../../utils/util';\nimport { PoTableFilter } from '../interfaces/po-table-filter.interface';\nimport { PoTableFilteredItemsParams } from '../interfaces/po-table-filtered-items-params.interface';\n\n@Injectable()\nexport class PoTableService implements PoTableFilter {\n  readonly headers: HttpHeaders = new HttpHeaders({\n    'X-PO-No-Message': 'true'\n  });\n\n  private url: string;\n  private urlDelete: string;\n\n  constructor(private readonly http: HttpClient) {}\n\n  getFilteredItems(filteredParams?: PoTableFilteredItemsParams): Observable<any> {\n    const params = this.validateParams(filteredParams);\n\n    return this.http.get(this.url, { headers: this.headers, params });\n  }\n\n  deleteItem(paramDelete: string, paramResponse: any): Observable<any> {\n    const params = {\n      [paramDelete]: paramResponse\n    };\n\n    return this.http.delete(this.urlDelete, { headers: this.headers, params });\n  }\n\n  setUrl(url: string, method: 'GET' | 'DELETE') {\n    if (method === 'GET') {\n      this.url = url;\n    } else {\n      this.urlDelete = url;\n    }\n  }\n\n  scrollListener(componentListner: HTMLElement): Observable<any> {\n    return fromEvent(componentListner, 'scroll').pipe(debounceTime(100));\n  }\n\n  private validateParams(params: any) {\n    return isTypeof(params, 'object') && !Array.isArray(params) ? params : undefined;\n  }\n}\n","import {\n  Directive,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges,\n  output\n} from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { PoDateService } from '../../services/po-date/po-date.service';\nimport { poLocaleDefault } from '../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport {\n  capitalizeFirstLetter,\n  convertToBoolean,\n  getDefaultSizeFn,\n  isTypeof,\n  validateSizeFn,\n  PoUtils\n} from '../../utils/util';\n\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { PoSearchFilterMode } from '../po-search/enums/po-search-filter-mode.enum';\nimport { PoTableColumnSortType } from './enums/po-table-column-sort-type.enum';\nimport { PoTableColumnSpacing } from './enums/po-table-spacing.enum';\nimport { PoTableAction } from './interfaces/po-table-action.interface';\nimport { PoTableColumnSort } from './interfaces/po-table-column-sort.interface';\nimport { PoTableColumn } from './interfaces/po-table-column.interface';\nimport { PoTableFilteredItemsParams } from './interfaces/po-table-filtered-items-params.interface';\nimport { PoTableLiterals } from './interfaces/po-table-literals.interface';\nimport { PoTableResponseApi } from './interfaces/po-table-response-api.interface';\nimport { PoTableService } from './services/po-table.service';\n\nexport type QueryParamsType = string | number | boolean;\n\nexport const poTableContainer = ['border', 'shadow'];\nexport const poTableContainerDefault = 'border';\nexport const poTableParamDeleteApi = 'id';\n\nexport const poTableLiteralsDefault = {\n  en: <PoTableLiterals>{\n    noColumns: 'Columns are not defined',\n    noData: 'No data found',\n    noItem: 'No selected item',\n    oneItem: '1 selected item',\n    multipleItems: 'selected items',\n    noVisibleColumn: 'No visible column',\n    loadingData: 'Loading',\n    loadMoreData: 'Load more data',\n    seeCompleteSubtitle: 'See complete subtitle',\n    completeSubtitle: 'Complete subtitle',\n    columnsManager: 'Columns manager',\n    bodyDelete: 'Do you really want to delete this item?',\n    cancel: 'Cancel',\n    delete: 'Delete',\n    deleteSuccessful: 'Items removed successfully',\n    deleteApiError: 'An unexpected error occurred, please try again later'\n  },\n  es: <PoTableLiterals>{\n    noColumns: 'Columnas no definidas',\n    noData: 'Datos no encontrados',\n    noItem: 'Ningún elemento seleccionado',\n    oneItem: '1 elemento seleccionado',\n    multipleItems: 'elementos seleccionados',\n    noVisibleColumn: 'Sin columnas visibles',\n    loadingData: 'Cargando datos',\n    loadMoreData: 'Cargar más resultados',\n    seeCompleteSubtitle: 'Ver subtitulo completo',\n    completeSubtitle: 'Subtitulo completo',\n    columnsManager: 'Gerente de columna',\n    bodyDelete: '¿Realmente desea eliminar este elemento?',\n    cancel: 'Cancelar',\n    delete: 'Borrar',\n    deleteSuccessful: 'Elementos eliminados con éxito',\n    deleteApiError: 'Ocurrió un error inesperado, inténtalo de nuevo más tarde'\n  },\n  pt: <PoTableLiterals>{\n    noColumns: 'Nenhuma definição de colunas',\n    noData: 'Nenhum dado encontrado',\n    noVisibleColumn: 'Nenhuma coluna visível',\n    noItem: 'Nenhum item selecionado',\n    oneItem: '1 item selecionado',\n    multipleItems: 'itens selecionados',\n    loadingData: 'Carregando',\n    loadMoreData: 'Carregar mais resultados',\n    seeCompleteSubtitle: 'Ver legenda completa',\n    completeSubtitle: 'Legenda completa',\n    columnsManager: 'Gerenciador de colunas',\n    bodyDelete: 'Deseja realmente excluir esse item?',\n    cancel: 'Cancelar',\n    delete: 'Excluir',\n    deleteSuccessful: 'Itens removidos com sucesso',\n    deleteApiError: 'Ocorreu um erro inesperado, tente novamente mais tarde!'\n  },\n  ru: <PoTableLiterals>{\n    noColumns: 'Нет определения столбца',\n    noData: 'Данные не найдены',\n    noItem: 'Нет выбранного элемента',\n    oneItem: '1 элемент выбран',\n    multipleItems: 'выбранные элементы',\n    noVisibleColumn: 'нет видимых столбцов',\n    loadingData: 'Загрузка',\n    loadMoreData: 'Загрузка',\n    seeCompleteSubtitle: 'Посмотреть полный субтитр',\n    completeSubtitle: 'Полный заголовок',\n    columnsManager: 'менеджер колонок',\n    bodyDelete: 'Вы действительно хотите удалить этот элемент?',\n    cancel: 'Отмена',\n    delete: 'Удалить',\n    deleteSuccessful: 'Элементы успешно удалены',\n    deleteApiError: 'Произошла непредвиденная ошибка, повторите попытку позже'\n  }\n};\n\n/**\n * @description\n *\n * Este componente de tabela é utilizado para exibição de dados com diferentes tipos como por exemplo textos, data, horas e números com\n * formato personalizado.\n *\n * Também é possivel criar tabelas com ordenação de dados, linhas com detalhes, coluna para seleção de linhas, coluna com ações e também\n * carregamento por demanda através do botão **Carregar mais resultados**.\n *\n * > As linhas de detalhes podem também ser customizadas através do [`p-table-row-template`](/documentation/po-table-row-template).\n *\n * > As colunas podem ser customizadas através dos templates [`p-table-column-template`](/documentation/po-table-column-template)\n * e [`p-table-cell-template`](/documentation/po-table-cell-template).\n *\n * O componente permite gerenciar a exibição das colunas dinamicamente. Esta funcionalidade pode ser acessada através do ícone de engrenagem\n * no canto superior direito do cabeçalho da tabela.\n *\n * Caso a largura de todas as colunas forem definidas e o total ultrapassar o tamanho tabela, será exibido um *scroll* na horizontal para a\n * completa visualização dos dados.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                      |\n * |----------------------------------------|-------------------------------------------------------|---------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                   |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                        |\n * | `--background-color`                   | Cor de background                                     | `var(--color-neutral-light-00)`                   |\n * | `--color`                              | Cor principal da table                                | `var(--color-neutral-dark-95)`                    |\n * | `--background-striped-color`           | Cor do background quando striped                      | `var(--color-neutral-light-05)`                   |\n * | `--color-line`                         | Cor das linhas                                        | `var(--color-neutral-mid-40)`                     |\n * | **Hover**                              |                                                       |                                                   |\n * | `--color-hover`                        | Cor principal no estado hover                         | `var(--color-action-hover)`                       |\n * | `--background-color-hover`             | Cor de background no estado hover                     | `var(--color-brand-01-lighter)`                   |\n * | **Focused**                            |                                                       |                                                   |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                     | `var(--color-action-focus)`                       |\n * | **Disabled**                           |                                                       |                                                   |\n * | `--color-disabled`                     | Cor principal no estado disabled                      | `var(--color-neutral-mid-40)`                     |\n * | **Headline**                           |                                                       |                                                   |\n * | `--background-color-headline` &nbsp;   | Cor do cabeçalho                                      | `var(--color-neutral-light-10)`                   |\n * | `--font-weight-headline`               | Peso da fonte do cabeçalho                            | `var(--font-weight-bold)`                         |\n * | **Selected**                           |                                                       |                                                   |\n * | `--background-color-selected`&nbsp;    | Cor de background no estado de selecionado            | `var(--color-brand-01-lightest)`                  |\n * | **Actived**                            |                                                       |                                                   |\n * | `--color-actived`                      | Cor do texto no estado de selecionado                 | `var(--color-neutral-dark-90)`                    |\n * | `--background-color-actived`           | Cor de background no estado de selecionado            | `var(--color-brand-01-light)`                     |\n *\n */\n@Directive()\nexport abstract class PoTableBaseComponent implements OnChanges, OnDestroy {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite que o gerenciador de colunas, responsável pela definição de quais colunas serão exibidas, seja escondido.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-hide-columns-manager', transform: convertToBoolean }) hideColumnsManager: boolean = false;\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite que as ações em lote, responsável por excluir e exibir a quantidade de itens, sejam escondidas.\n   *\n   * @default `true`\n   */\n  @Input({ alias: 'p-hide-batch-actions', transform: convertToBoolean }) hideBatchActions: boolean = true;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita ou desabilita a quebra automática de texto. Quando ativada, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * > Incompatível com `virtual-scroll`, que requer altura fixa nas linhas.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-text-wrap', transform: convertToBoolean }) textWrap?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite que as ações para fixar uma coluna da tabela sejam escondidas.\n   *\n   * @default `false`\n   */\n  @Input('p-hide-action-fixed-columns') set hideActionFixedColumns(hide: boolean) {\n    if (hide) {\n      this.columns = this.removePropertyFixed(this.columns);\n    }\n    this._hideActionFixedColumns = hide;\n  }\n\n  get hideActionFixedColumns() {\n    return this._hideActionFixedColumns;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite que o campo de pesquisa seja escondido.\n   *\n   * @default `true`\n   */\n  @Input({ alias: 'p-hide-table-search', transform: convertToBoolean }) hideTableSearch: boolean = true;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite fechar um detalhe ou row template automaticamente, ao abrir outro item.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-auto-collapse', transform: convertToBoolean }) autoCollapse: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite que seja adicionado o estado de carregamento no botão \"Carregar mais resultados\".\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-loading-show-more', transform: convertToBoolean }) loadingShowMore: boolean = false;\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita em todas as colunas a opção de ordenação de dados. Caso a coluna seja do tipo 'data' ou 'dateTime' a\n   * mesma deve respeitar os tipos de entrada definidos para que sejam ordenadas.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-sort', transform: convertToBoolean }) sort: boolean = false;\n\n  /**\n   * @description\n   *\n   * Se verdadeiro, torna habilitado o botão \"Carregar mais resultados\".\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-show-more-disabled', transform: convertToBoolean }) showMoreDisabled: boolean = false;\n\n  /**\n   * @description\n   *\n   * Habilita ou desabilita o estilo listrado da tabela (`striped`).\n   * > Recomendado para tabelas com maior número de dados, facilitando a sua visualização na tabela.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-striped', transform: convertToBoolean }) striped: boolean = false;\n\n  /**\n   * @description\n   *\n   * Esconde o *checkbox* para seleção de todas as linhas.\n   *\n   * > Sempre receberá *true* caso a seleção de apenas uma linha esteja ativa.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-hide-select-all', transform: convertToBoolean }) hideSelectAll: boolean = false;\n\n  /**\n   * @description\n   *\n   * Define que somente uma linha da tabela pode ser selecionada.\n   *\n   * > Esta definição não se aplica aos itens filhos, os mesmos possuem comportamento independente do item pai.\n   */\n  @Input({ alias: 'p-single-select', transform: convertToBoolean }) singleSelect: boolean = false;\n\n  /**\n   * @description\n   *\n   * Permite selecionar um item da tabela clicando na linha.\n   *\n   * > Caso haja necessidade de selecionar o item apenas via radio ou checkbox, deve-se definir esta propriedade como `false`.\n   *\n   * @default `true`\n   */\n  @Input({ alias: 'p-selectable-entire-line', transform: convertToBoolean }) selectableEntireLine: boolean = true;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que a coluna de ações ficará no lado direito da tabela.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-actions-right', transform: convertToBoolean }) actionRight: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define uma quantidade máxima de colunas que serão exibidas na tabela.\n   *\n   * Quando chegar no valor informado, as colunas que não estiverem selecionadas ficarão\n   * desabilitadas e caso houver mais colunas visíveis do que o permitido, as excedentes\n   * serão ignoradas por ordem de posição.\n   */\n  @Input('p-max-columns') maxColumns?: number;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o modo de pesquisa utilizado no campo de busca, quando habilitado.\n   * Valores definidos no enum: PoSearchFilterMode\n   * > Obs: A pesquisa é realizada exclusivamente nos dados locais, ou seja, aqueles que foram\n   * > renderizados na tabela.\n   *\n   * @default `startsWith`\n   */\n  @Input('p-filter-type') filterType: PoSearchFilterMode = PoSearchFilterMode.startsWith;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento executado quando todas as linhas são selecionadas por meio do *checkbox* que seleciona todas as linhas.\n   */\n  @Output('p-all-selected') allSelected: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento executado quando a seleção das linhas é desmarcada por meio do *checkbox* que seleciona todas as linhas.\n   */\n  @Output('p-all-unselected') allUnselected: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento executado ao colapsar uma linha do `po-table`.\n   *\n   * > Como parâmetro o componente envia o item colapsado.\n   */\n  @Output('p-collapsed') collapsed: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento executado ao expandir uma linha do `po-table`.\n   *\n   * > Como parâmetro o componente envia o item expandido.\n   */\n  @Output('p-expanded') expanded: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento executado após o método de exclusão ser finalizado.\n   *\n   * ```\n   *<po-table\n   *  (p-delete-items)=\"items = $event\"\n   * >\n   *</po-table>\n   * ```\n   *\n   *\n   * > Como parâmetro o componente envia a lista atualizada, sem os itens excluídos.\n   */\n  @Output('p-delete-items') eventDelete: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento executado ao selecionar uma linha do `po-table`.\n   */\n  @Output('p-selected') selected: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Recebe uma ação de clique para o botão \"Carregar mais resultados\", caso nenhuma ação for definida o mesmo\n   * não é visível.\n   *\n   * Recebe um objeto `{ column, type }` onde:\n   *\n   * - column (`PoTableColumn`): objeto da coluna que está ordenada.\n   * - type (`PoTableColumnSortType`): tipo da ordenação.\n   */\n  @Output('p-show-more') showMore: EventEmitter<PoTableColumnSort> = new EventEmitter<PoTableColumnSort>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento executado ao ordenar colunas da tabela.\n   *\n   * Recebe um objeto `{ column, type }` onde:\n   *\n   * - column (`PoTableColumn`): objeto da coluna que foi clicada/ordenada.\n   * - type (`PoTableColumnSortType`): tipo da ordenação.\n   */\n  @Output('p-sort-by') sortBy: EventEmitter<PoTableColumnSort> = new EventEmitter<PoTableColumnSort>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento executado ao desmarcar a seleção de uma linha do `po-table`.\n   */\n  @Output('p-unselected') unselected: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado ao fechar o page slide do gerenciador de colunas após alterar as colunas visíveis.\n   *\n   * O componente envia como parâmetro um array de string com as colunas visíveis atualizadas.\n   * Por exemplo: [\"idCard\", \"name\", \"hireStatus\", \"age\"].\n   */\n  @Output('p-change-visible-columns') changeVisibleColumns = new EventEmitter<Array<string>>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado ao alterar o estado de fixação de uma coluna no gerenciador de colunas.\n   *\n   * O componente envia como parâmetro um array de string com as propriedades das colunas fixas.\n   * Por exemplo: [\"name\", \"age\"].\n   *\n   * > Incompatível com `p-hide-action-fixed-columns`. Quando esta propriedade estiver ativa, o evento não será disparado.\n   *\n   * @example\n   *\n   * ```html\n   * <po-table\n   *   [p-columns]=\"columns\"\n   *   [p-items]=\"items\"\n   *   (p-change-fixed-columns)=\"onFixedColumnsChange($event)\">\n   * </po-table>\n   * ```\n   */\n  changeFixedColumns = output<Array<string>>({ alias: 'p-change-fixed-columns' });\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar no botão de restaurar padrão no gerenciador de colunas.\n   *\n   * O componente envia como parâmetro um array de string com as colunas configuradas inicialmente.\n   * Por exemplo: [\"idCard\", \"name\", \"hireStatus\", \"age\"].\n   */\n  @Output('p-restore-column-manager') columnRestoreManager = new EventEmitter<Array<string>>();\n\n  allColumnsWidthPixels: boolean;\n  columnMasterDetail: PoTableColumn;\n  hasMainColumns: boolean = false;\n  mainColumns: Array<PoTableColumn> = [];\n  selectAll = false;\n  sortedColumn = { property: <PoTableColumn>null, ascending: true };\n  subtitleColumns: Array<PoTableColumn> = [];\n  page = 1;\n  pageSize = 10;\n  hasService?: boolean = false;\n  initialColumns: Array<PoTableColumn>;\n  showBatchActions: boolean = false;\n  itemsSelected: Array<any> = [];\n  paramsFilter = {};\n  filteredItems: Array<any> = [];\n  initialized = false;\n  fixedLayout: boolean = false;\n  private initialVisibleColumns: boolean = false;\n  private _componentsSize?: string = undefined;\n  private _initialComponentsSize?: string = undefined;\n  private _spacing: PoTableColumnSpacing;\n  private _initialSpacing?: string = undefined;\n  private _filteredColumns: Array<string>;\n  private _actions?: Array<PoTableAction> = [];\n  private _columns: Array<PoTableColumn> = [];\n  private _container?: string;\n  private _paramDelete: string = poTableParamDeleteApi;\n  private _height?: number;\n  private _hideDetail?: boolean = false;\n  private _items: Array<PoTableColumn>;\n  private _literals: PoTableLiterals;\n  private _loading?: boolean = false;\n  private _selectable?: boolean;\n  private readonly language: string = poLocaleDefault;\n  private _serviceApi: string;\n  private _serviceDeleteApi: string;\n  private poTableServiceSubscription: Subscription;\n  private sortStore: PoTableColumnSort;\n  private _infiniteScrollDistance?: number = 100;\n  private _infiniteScroll?: boolean = false;\n  private _draggable?: boolean = false;\n  private _hideActionFixedColumns?: boolean = false;\n  private _virtualScroll?: boolean = true;\n\n  constructor(\n    private readonly poDate: PoDateService,\n    languageService: PoLanguageService,\n    private readonly poTableService: PoTableService\n  ) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos componentes de formulário no table:\n   * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n   * - `medium`: aplica a medida medium de cada componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @description\n   *\n   * Lista de itens da tabela.\n   * > Se falso, será inicializado como um *array* vazio.\n   */\n  @Input('p-items') set items(items: Array<any>) {\n    if (this.height) {\n      this._items = Array.isArray(items) ? [...items] : [];\n    } else {\n      this._items = Array.isArray(items) ? items : [];\n    }\n\n    // when haven't items, selectAll should be unchecked.\n    if (!this.hasItems) {\n      this.selectAll = false;\n    } else if (!this.hasColumns) {\n      this.columns = this.getDefaultColumns(items[0]);\n    }\n    this.filteredItems = this.height ? [...this.items] : this.items;\n\n    this.reapplySort();\n\n    // timeout necessário para os itens serem refletidos na tabela\n    setTimeout(() => this.checkInfiniteScroll());\n  }\n\n  get items() {\n    return this._items;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Lista das colunas da tabela, deve receber um *array* de objetos que implementam a interface `PoTableColumn`.\n   * Por padrão receberá como valor a primeira coluna da lista de itens da tabela.\n   * > Caso não encontre valor, a mensagem 'Nenhuma definição de colunas' será exibida.\n   *\n   */\n  @Input('p-columns') set columns(columns: Array<PoTableColumn>) {\n    const hasColumnsWithVisible = columns?.find(column => column.visible === true);\n    if (this.initialColumns === undefined) {\n      this.initialColumns = columns;\n    }\n\n    this._columns = columns || [];\n\n    if (hasColumnsWithVisible && !this.initialVisibleColumns) {\n      this.initialVisibleColumns = true;\n    }\n\n    if (this._columns.length) {\n      this.setColumnLink();\n    } else if (this.hasItems) {\n      this._columns = this.getDefaultColumns(this.items[0]);\n    }\n\n    this.onChangeColumns();\n  }\n\n  get columns() {\n    return this._columns;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Adiciona um contorno arredondado ao `po-table`, as opções são:\n   * - `border`: com bordas/linhas.\n   * - `shadow`: com sombras.\n   *\n   * @default `border`\n   */\n  @Input('p-container') set container(value: string) {\n    this._container = poTableContainer.includes(value) ? value : poTableContainerDefault;\n  }\n\n  get container(): string {\n    return this._container;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Adiciona o parâmetro a ser enviado para a requisição de DELETE.\n   *\n   * É necessário a utilização da propriedade `p-service-delete` em conjunto.\n   *\n   * @default `id`\n   */\n  @Input('p-param-delete-api') set paramDeleteApi(value: string) {\n    this._paramDelete = value && typeof value === 'string' ? value : poTableParamDeleteApi;\n  }\n\n  get paramDeleteApi(): string {\n    return this._paramDelete;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a altura da tabela em *pixels* e fixa o cabeçalho.\n   *\n   * Ao utilizar essa propriedade será inserido o `virtual-scroll` na tabela melhorando a performance.\n   */\n  @Input('p-height') set height(height: number) {\n    this._height = height;\n  }\n\n  get height() {\n    return this._height;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a visualização da lista de detalhes de cada linha da coluna.\n   *\n   * @default `false`\n   */\n  @Input('p-hide-detail') set hideDetail(hideDetail: boolean) {\n    this._hideDetail = hideDetail != null && hideDetail.toString() === '' ? true : convertToBoolean(hideDetail);\n  }\n\n  get hideDetail() {\n    return this._hideDetail;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com as literais usadas no `po-table`.\n   *\n   * Existem duas maneiras de customizar o componente, passando um objeto com todas as literais disponíveis:\n   *\n   * ```\n   *  const customLiterals: PoTableLiterals = {\n   *    noColumns: 'Nenhuma definição de colunas',\n   *    noData: 'Nenhum dado encontrado',\n   *    noVisibleColumn: 'Nenhuma coluna visível',\n   *    noItem: 'Nenhum item selecionado',\n   *    oneItem: '1 item selecionado',\n   *    multipleItems: 'itens selecionados',\n   *    loadingData: 'Carregando',\n   *    loadMoreData: 'Carregar mais resultados',\n   *    seeCompleteSubtitle: 'Ver legenda completa',\n   *    completeSubtitle: 'Legenda completa',\n   *    columnsManager: 'Gerenciador de colunas',\n   *    bodyDelete: 'Deseja realmente excluir esse item?',\n   *    cancel: 'Cancelar',\n   *    delete: 'Excluir',\n   *    deleteSuccessful: 'Itens removidos com sucesso',\n   *    deleteApiError: 'Ocorreu um erro inesperado, tente novamente mais tarde!',\n   *  };\n   * ```\n   *\n   * Ou passando apenas as literais que deseja customizar:\n   *\n   * ```\n   *  const customLiterals: PoTableLiterals = {\n   *    noData: 'Sem dados'\n   *  };\n   * ```\n   *\n   * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n   *\n   * ```\n   * <po-table\n   *   [p-literals]=\"customLiterals\">\n   * </po-table>\n   * ```\n   *\n   * > O objeto padrão de literais será traduzido de acordo com o idioma do\n   * [`PoI18nService`](/documentation/po-i18n) ou do browser.\n   */\n  @Input('p-literals') set literals(value: PoTableLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poTableLiteralsDefault[poLocaleDefault],\n        ...poTableLiteralsDefault[this.language],\n        ...value\n      };\n    } else {\n      this._literals = poTableLiteralsDefault[this.language];\n    }\n  }\n  get literals() {\n    return this._literals || poTableLiteralsDefault[this.language];\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Bloqueia a interação do usuário com os dados da _table_.\n   *\n   * @default `false`\n   */\n  @Input('p-loading') set loading(loading: boolean) {\n    this._loading = convertToBoolean(loading);\n  }\n\n  get loading() {\n    return this._loading;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define uma lista de ações.\n   *\n   * Quando houver apenas uma ação definida ela será exibida diretamente na coluna, caso contrário, o componente\n   * se encarrega de agrupá-las exibindo o ícone [**an an-dots-three**](https://po-ui.io/icons) que listará as ações ao ser clicado.\n   *\n   * **A coluna de ações não será exibida quando:**\n   *  - a lista conter valores inválidos ou indefinidos.\n   *  - tenha uma única ação e a mesma não for visível.\n   */\n  @Input('p-actions') set actions(actions: Array<PoTableAction>) {\n    this._actions = actions;\n  }\n\n  get actions() {\n    return this._actions;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite a seleção de linhas na tabela e, caso a propriedade `p-single-select` esteja definida será possível\n   * selecionar apenas uma única linha.\n   *\n   * **Importante:**\n   *  - As linhas de detalhe definidas em `PoTableDetail` possuem comportamento independente da linha mestre;\n   *  - Cada linha possui por padrão a propriedade dinâmica `$selected`, na qual é possível validar se a linha\n   * está selecionada, por exemplo: `item.$selected` ou `item['$selected']`.\n   *\n   * @default `false`\n   */\n  @Input('p-selectable') set selectable(value: boolean) {\n    this._selectable = <any>value === '' ? true : convertToBoolean(value);\n  }\n\n  get selectable() {\n    return this._selectable;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Se verdadeiro, ativa a funcionalidade de scroll infinito para a tabela e o botão \"Carregar Mais\" deixará de ser exibido. Ao chegar no fim da tabela\n   * executará a função `p-show-more`.\n   *\n   * **Regras de utilização:**\n   *  - O scroll infinito só funciona para tabelas que utilizam a propriedade `p-height` e que possuem o scroll já na carga inicial dos dados.\n   *\n   * @default `false`\n   */\n  @Input('p-infinite-scroll') set infiniteScroll(value: boolean) {\n    this._infiniteScroll = convertToBoolean(value && this.height > 0);\n  }\n\n  get infiniteScroll() {\n    return this._infiniteScroll;\n  }\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o percentual necessário para disparar o evento `p-show-more`, que é responsável por carregar mais dados na tabela. Caso o valor informado seja maior que 100 ou menor\n   * que 0, o valor padrão será 100%\n   *\n   * **Exemplos:**\n   *  - p-infinite-scroll-distance = 80: Quando atingir 80%  do scroll da tabela, o `p-show-more` será disparado.\n   */\n  @Input('p-infinite-scroll-distance') set infiniteScrollDistance(value: number) {\n    this._infiniteScrollDistance = value > 100 || value < 0 ? 100 : value;\n  }\n\n  get infiniteScrollDistance() {\n    return this._infiniteScrollDistance;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * URL da API responsável por retornar os registros.\n   *\n   * Ao realizar a busca de mais registros via paginação (Carregar mais resultados), será enviado os parâmetros `page` e `pageSize`, conforme abaixo:\n   *\n   * ```\n   * url + ?page=1&pageSize=10\n   * ```\n   *\n   * Caso utilizar ordenação, a coluna ordenada será enviada através do parâmetro `order`, por exemplo:\n   * - Coluna decrescente:\n   *   ```\n   *    url + ?page=1&pageSize=10&order=-name\n   *   ```\n   *\n   * - Coluna ascendente:\n   *   ```\n   *    url + ?page=1&pageSize=10&order=name\n   *   ```\n   *\n   * > Esta URL deve retornar e receber os dados no padrão de [API do PO UI](https://po-ui.io/guides/api).\n   */\n  @Input('p-service-api') set serviceApi(service: string) {\n    this._serviceApi = service;\n    this.setService(this.serviceApi, 'GET');\n    this.hasService = !!service;\n    this.showMoreDisabled = !this.hasService;\n    this.page = 1;\n    this.initializeData();\n  }\n\n  get serviceApi() {\n    return this._serviceApi;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * URL da API responsável por excluir os registros.\n   *\n   * Ao selecionar o botão de excluir itens, essa url será executada utilizando o parâmetro enviado na propriedade `p-param-delete-api`.\n   * Caso ela não seja utilizada, o parâmetro padrão a ser enviado será `id`.\n   *\n   * > Esta URL deve retornar e receber os dados no padrão de [API do PO UI](https://po-ui.io/guides/api).\n   */\n  @Input('p-service-delete') set serviceDeleteApi(service: string) {\n    this._serviceDeleteApi = service;\n    this.setService(this.serviceDeleteApi, 'DELETE');\n  }\n\n  get serviceDeleteApi() {\n    return this._serviceDeleteApi;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o espaçamento interno das células, impactando diretamente na altura das linhas do table. Os valores\n   * permitidos são definidos pelo enum **PoTableColumnSpacing**.\n   *\n   * > Em nível de acessibilidade **AA**, caso o valor de `p-spacing` não seja definido, o valor padrão será `extraSmall`\n   * > nos seguintes cenários:\n   * > - Quando o valor de `p-components-size` for `small`;\n   * > - Quando o valor padrão dos componentes for configurado como `small` no\n   * > [serviço de tema](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set spacing(value: string) {\n    this._initialSpacing = value;\n    this.applySpacingBasedOnA11y();\n  }\n\n  @Input('p-spacing')\n  @HostBinding('attr.p-spacing')\n  get spacing() {\n    return this._spacing ?? this.getDefaultSpacing();\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as colunas que serão filtradas no campo de pesquisa.\n   * Aceita um array de strings, representando as colunas específicas que serão consideradas na filtragem.\n   *\n   */\n  @Input('p-filtered-columns') set filteredColumns(values: Array<string>) {\n    this._filteredColumns = values;\n  }\n\n  get filteredColumns(): Array<string> {\n    return this._filteredColumns;\n  }\n\n  get hasColumns(): boolean {\n    return this.columns && this.columns.length > 0;\n  }\n\n  get hasItems(): boolean {\n    return !!(this.items && this.items.length);\n  }\n\n  get nameColumnDetail() {\n    return this.columnMasterDetail ? this.columnMasterDetail.property : null;\n  }\n\n  get validColumns() {\n    const typesValid = [\n      'string',\n      'number',\n      'boolean',\n      'date',\n      'time',\n      'dateTime',\n      'currency',\n      'subtitle',\n      'link',\n      'label',\n      'icon',\n      'cellTemplate',\n      'columnTemplate'\n    ];\n    return this.columns.filter(col => !col.type || typesValid.includes(col.type));\n  }\n\n  get visibleActions() {\n    return (\n      this.actions !== undefined && this.actions && this.actions.filter(action => action && action.visible !== false)\n    );\n  }\n\n  private getFilteredColumns(): void {\n    this.filteredColumns = this.columns\n      .filter(column => column.visible !== false)\n      .map(column => column.property || column.label);\n  }\n\n  private get sortType(): PoTableColumnSortType {\n    return this.sortedColumn.ascending ? PoTableColumnSortType.Ascending : PoTableColumnSortType.Descending;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita o modo drag and drop para as colunas da tabela.\n   *\n   * @default `false`\n   */\n  @Input('p-draggable') set draggable(draggable: boolean) {\n    this._draggable = draggable || false;\n  }\n\n  get draggable() {\n    return this._draggable;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita o `virtual-scroll` na tabela para melhorar a performance com grandes volumes de dados.\n   * Requer altura (`p-height`) para funcionar corretamente.\n   *\n   * > Incompatível com `p-text-wrap` e `master-detail`, pois o `virtual-scroll` exige altura fixa nas linhas.\n   *\n   * @default `true`\n   */\n  @Input('p-virtual-scroll') set virtualScroll(value: boolean) {\n    this._virtualScroll = convertToBoolean(value && this.height > 0);\n  }\n\n  get virtualScroll() {\n    return this._virtualScroll;\n  }\n\n  ngOnDestroy() {\n    this.poTableServiceSubscription?.unsubscribe();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (this.singleSelect || this.hideSelectAll) {\n      this.selectAll = false;\n      this.hideSelectAll = true;\n    }\n\n    if (changes.height) {\n      this.calculateHeightTableContainer(this.height);\n    }\n\n    if ((changes.height || changes.items) && this.initialized) {\n      this.changeHeaderWidth();\n    }\n    this.changeSizeLoading();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n    this.applySpacingBasedOnA11y();\n  }\n\n  selectAllRows() {\n    if (!this.hideSelectAll) {\n      this.selectAll = !this.selectAll;\n\n      this.items.forEach(item => {\n        item.$selected = this.selectAll;\n\n        if (item[this.nameColumnDetail]) {\n          const childItems = item[this.nameColumnDetail];\n          childItems.forEach(childItem => (childItem.$selected = this.selectAll));\n        }\n      });\n\n      this.emitSelectAllEvents(this.selectAll, [...this.items]);\n      this.setSelectedList();\n    }\n  }\n\n  selectRow(row: any) {\n    row.$selected = !row.$selected;\n\n    this.emitSelectEvents(row);\n    this.configAfterSelectRow(this.items, row);\n\n    if (row[this.nameColumnDetail] && (row.$selected === true || row.$selected === false)) {\n      const childItems = row[this.nameColumnDetail];\n      childItems.forEach(item => (item.$selected = row.$selected));\n    }\n\n    this.setSelectedList();\n  }\n\n  hasSelectableRow(): boolean {\n    return this.selectable && this.selectableEntireLine;\n  }\n\n  selectDetailRow(event: any) {\n    const { item, parentRow } = event;\n    this.emitSelectEvents(item);\n    this.updateParentRowSelection(parentRow);\n  }\n\n  updateParentRowSelection(parentRow: any) {\n    const old = parentRow.$selected || null;\n    const childItems = parentRow[this.nameColumnDetail];\n\n    if (childItems.every(item => item.$selected)) {\n      parentRow.$selected = true;\n    } else if (childItems.every(item => !item.$selected)) {\n      parentRow.$selected = false;\n    } else {\n      parentRow.$selected = null;\n    }\n    if (old != parentRow.$selected && !(old == null && parentRow.$selected === false)) {\n      this.emitSelectEvents(parentRow);\n    }\n\n    this.configAfterSelectRow(this.items, parentRow);\n    this.setSelectedList();\n  }\n\n  setSelectedList() {\n    this.itemsSelected = [];\n    this.items.forEach(item => {\n      if (item.$selected) {\n        this.itemsSelected.push(item);\n      }\n    });\n  }\n\n  getClassColor(row, column) {\n    return column.color ? `po-text-${this.getColumnColor(row, column)}` : '';\n  }\n\n  toggleDetail(row: any) {\n    const rowShowDetail = row.$showDetail;\n    if (this.autoCollapse) {\n      this.collapseAllItems(this.items);\n    }\n\n    this.setShowDetail(row, !rowShowDetail);\n    this.emitExpandEvents(row);\n  }\n\n  toggleRowAction(row: any) {\n    const toggleShowAction = row.$showAction;\n\n    this.items.forEach(item => {\n      if (item.$showAction) {\n        item.$showAction = false;\n      }\n    });\n    row.$showAction = !toggleShowAction;\n  }\n\n  sortColumn(column: PoTableColumn) {\n    if (!this.sort || column.type === 'detail' || column.sortable === false) {\n      return;\n    }\n\n    this.sortedColumn.ascending = this.sortedColumn.property === column ? !this.sortedColumn.ascending : true;\n\n    this.sortArray(column, this.sortedColumn.ascending);\n    this.sortBy.emit({ column, type: this.sortType });\n    if (this.hasService && this.sort) {\n      this.sortStore = { column, type: this.sortType };\n    }\n\n    this.sortedColumn.property = column;\n  }\n\n  onShowMore(): void {\n    const sort = this.sortedColumn.property ? { column: this.sortedColumn.property, type: this.sortType } : undefined;\n\n    if (this.hasService) {\n      this.page++;\n      this.loading = true;\n      this.loadingShowMore = true;\n\n      this.poTableServiceSubscription = this.getFilteredItems().subscribe(data => {\n        this.items = [...this.items, ...data.items];\n        this.showMoreDisabled = !data.hasNext;\n        this.loading = false;\n        this.loadingShowMore = false;\n      });\n    }\n\n    this.showMore.emit(sort);\n  }\n\n  getFilteredItems(queryParams?: { [key: string]: QueryParamsType }): Observable<PoTableResponseApi> {\n    const filteredParams: PoTableFilteredItemsParams = this.getFilteredParams(queryParams);\n\n    return this.poTableService.getFilteredItems(filteredParams);\n  }\n\n  setTableResponseProperties(data: PoTableResponseApi) {\n    this.items = data.items || [];\n    this.showMoreDisabled = !data.hasNext;\n    this.loading = false;\n  }\n\n  initializeData(params?: { [key: string]: QueryParamsType }): void {\n    if (this.hasService) {\n      this.loading = true;\n      this.paramsFilter = params;\n      this.getFilteredItems(params).subscribe(data => {\n        this.setTableResponseProperties(data);\n      });\n    }\n  }\n\n  sortArray(column: PoTableColumn, ascending: boolean, item?: Array<any>) {\n    let itemsList;\n    if (item) {\n      itemsList = this.height ? [...item] : item;\n    } else {\n      itemsList = this.height ? [...this.filteredItems] : this.filteredItems;\n    }\n    itemsList.sort((leftSide, rightSide): number =>\n      PoUtils.sortValues(leftSide[column.property], rightSide[column.property], ascending)\n    );\n    this.filteredItems = itemsList;\n  }\n\n  protected getDefaultColumns(item: any) {\n    const keys = Object.keys(item);\n\n    return keys\n      .filter(key => typeof item[key] !== 'object')\n      .map(key => ({ label: capitalizeFirstLetter(key), property: key }));\n  }\n\n  protected setShowDetail(rowIdentifier: any | number, isShowDetail: boolean) {\n    const isRowIndex = typeof rowIdentifier === 'number' && this.items[rowIdentifier];\n\n    const row = isRowIndex ? this.items[rowIdentifier] : rowIdentifier;\n\n    row.$showDetail = isShowDetail;\n  }\n\n  private collapseAllItems(items: Array<{ [key: string]: any }>) {\n    for (const item of items) {\n      if (item.$showDetail) {\n        this.setShowDetail(item, false);\n        this.emitExpandEvents(item);\n      }\n    }\n  }\n\n  private configAfterSelectRow(rows: Array<any>, row) {\n    if (this.singleSelect) {\n      this.unselectOtherRows(rows, row);\n    } else if (!this.hideSelectAll) {\n      this.selectAll = this.isEverySelected(rows);\n    }\n  }\n\n  private emitExpandEvents(row: any) {\n    row.$showDetail ? this.expanded.emit(row) : this.collapsed.emit(row);\n  }\n\n  private emitSelectAllEvents(selectAll: boolean, rows: any) {\n    selectAll ? this.allSelected.emit(rows) : this.allUnselected.emit(rows);\n  }\n\n  private emitSelectEvents(row: any) {\n    row.$selected ? this.selected.emit(row) : this.unselected.emit(row);\n  }\n\n  private getColumnColor(row, column) {\n    const columnColor = column.color;\n\n    return isTypeof(columnColor, 'function') ? columnColor(row, column.property) : columnColor;\n  }\n\n  // Retorna a coluna da lista de colunas que é do tipo detail\n  private getColumnMasterDetail() {\n    return this.columns.find(col => col.type === 'detail');\n  }\n\n  // Colunas que são inseridas no <head> da tabela\n  private getMainColumns() {\n    return this.validColumns.filter(col => col.visible !== false);\n  }\n\n  // Retorna as colunas com status\n  private getSubtitleColumns() {\n    return this.columns.filter(col => col.type === 'subtitle');\n  }\n\n  private isEverySelected(items: Array<any>): boolean {\n    const someCheckedOrIndeterminate = item => item.$selected || item.$selected === null;\n    const everyChecked = item => item.$selected;\n\n    if (items.every(everyChecked)) {\n      return true;\n    }\n\n    if (items.some(someCheckedOrIndeterminate)) {\n      return null;\n    }\n\n    return false;\n  }\n\n  private onChangeColumns() {\n    this.setMainColumns();\n    this.setColumnMasterDetail();\n    this.setSubtitleColumns();\n    this.getFilteredColumns();\n  }\n\n  private setColumnLink() {\n    this.columns.forEach(column => {\n      if (column['type'] === 'link' && !column['link']) {\n        column['link'] = 'link';\n      }\n    });\n  }\n\n  private setColumnMasterDetail() {\n    this.columnMasterDetail = this.getColumnMasterDetail();\n  }\n\n  private setMainColumns() {\n    this.mainColumns = this.getMainColumns();\n\n    this.hasMainColumns = !!this.mainColumns.length;\n\n    this.allColumnsWidthPixels = this.verifyWidthColumnsPixels();\n  }\n\n  private setSubtitleColumns() {\n    this.subtitleColumns = this.getSubtitleColumns();\n  }\n\n  private unselectOtherRows(rows: Array<any>, row) {\n    rows.forEach(item => {\n      if (item !== row) {\n        item.$selected = false;\n      }\n    });\n  }\n\n  private verifyWidthColumnsPixels() {\n    return this.hasMainColumns ? this.mainColumns.every(column => column.width && column.width.includes('px')) : false;\n  }\n\n  private setService(service: string, method: 'GET' | 'DELETE') {\n    if (service && isTypeof(service, 'string')) {\n      this.poTableService.setUrl(service, method);\n    }\n  }\n\n  private getFilteredParams(queryParams?: { [key: string]: QueryParamsType }) {\n    const { page, pageSize, sortStore } = this;\n\n    const filteredParams = {};\n    const order = this.getOrderParam(sortStore);\n    const params = { page, pageSize, order, ...queryParams };\n\n    for (const key in params) {\n      if (params.hasOwnProperty(key) && params[key] !== undefined) {\n        filteredParams[key] = params[key];\n      }\n    }\n    return filteredParams;\n  }\n\n  private getOrderParam(sort: PoTableColumnSort = { type: undefined }) {\n    const { column, type } = sort;\n\n    if (!column) {\n      return;\n    }\n\n    if (type === PoTableColumnSortType.Descending) {\n      return `-${column.property}`;\n    }\n\n    return `${column.property}`;\n  }\n\n  private removePropertyFixed(arr: Array<any>) {\n    return arr.map(obj => {\n      if (obj.hasOwnProperty('fixed')) {\n        obj.fixed = false;\n      }\n      return obj;\n    });\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialComponentsSize, PoFieldSize);\n    this._componentsSize = size;\n    this.calculateHeightTableContainer(this.height);\n  }\n\n  private applySpacingBasedOnA11y(): void {\n    if (Object.values(PoTableColumnSpacing).includes(this._initialSpacing as PoTableColumnSpacing)) {\n      this._spacing = this._initialSpacing as PoTableColumnSpacing;\n    } else {\n      this._spacing = this.getDefaultSpacing();\n    }\n  }\n\n  protected abstract calculateHeightTableContainer(height);\n\n  protected abstract checkInfiniteScroll();\n\n  protected abstract changeSizeLoading();\n\n  protected abstract changeHeaderWidth();\n\n  protected abstract getDefaultSpacing();\n\n  protected abstract reapplySort();\n}\n","import { Directive, TemplateRef } from '@angular/core';\n/**\n * @usedBy PoTableComponent\n *\n * @description\n *\n * Esta diretiva permite que seja possível alterar o conteúdo das células de uma coluna, para que os valores possam ser exibidos\n * de acordo com a necessidade do usuário.\n *\n * Em seu uso, deve-se apenas adicionar a diretiva **p-table-cell-template** à tag `ng-template`.\n *\n * Retorno:\n *  - `column`: conteúdo da coluna corrente.\n *  - `row`: conteúdo da linha corrente\n *\n * Modo de uso:\n *\n * ```\n * ...\n * <po-table\n *   [p-columns]=\"columns\"\n *   [p-items]=\"items\">\n *     <ng-template p-table-cell-template let-column=\"column\" let-row=\"row\">\n *      <div *ngIf=\"column.property === 'status' && row.status === 'CANCELED'\">\n *        <h1 [style.background]=\"'red'\">CANCELADA</h1>\n *        <span (click)=\"onClick()\"><small>clique aqui</small></span>\n *      </div>\n *      <h1 *ngIf=\"column.property === 'status' && row.status === 'FINISHED'\" [style.background]=\"'green'\">FINALIZADA</h1>\n *      <h1 *ngIf=\"column.property === 'status' && row.status === 'OPENED'\" [style.background]=\"'orange'\">ABERTA</h1>\n *      <h1 *ngIf=\"column.property === 'status2'\">Conteúdo do status 2</h1>\n *      <h1 *ngIf=\"column.property === 'status3'\">Conteúdo do status 3</h1>\n *    </ng-template>\n * ...\n * ```\n * > No exemplo acima, o usuário tem como retorno `row` e a `column` corrente, neste caso ele tem total liberdade para manipular os objetos.\n *\n * Abaixo, a declaração dos dados de entrada do PO-TABLE para o uso da directiva.\n * ```\n * ...\n * export class AppComponent {\n *\n *    items = [{\n *      code: 1200,\n *      product: 'Rice',\n *      status: 'CANCELED',\n *      status2: '',\n *      status3: ''\n *      },{\n *      code: 1355,\n *      product: 'Bean',\n *      status: 'FINISHED',\n *      status2: '',\n *      status3: ''\n *      }];\n *\n *    columns = [\n *       { property: 'code', label: 'ID' },\n *       { property: 'product', label: 'PRODUTO' },\n *       { property: 'status', label: 'STATUS', type: 'cellTemplate' },\n *       { property: 'status2', label: 'STATUS 2', type: 'cellTemplate' },\n *       { property: 'status3', label: 'STATUS 3', type: 'cellTemplate' }\n *    ];\n * }\n * ...\n * ```\n * > Observação: Sempre adicionar o **type** da coluna que deseja manipular com a directiva como `cellTemplate`\n */\n@Directive({\n  selector: '[p-table-cell-template]',\n  standalone: false\n})\nexport class PoTableCellTemplateDirective {\n  // Necessário manter templateRef para o funcionamento do cell template.\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n/**\n * @usedBy PoTableComponent\n *\n * @description\n *\n * Esta diretiva permite que seja possível alterar o conteúdo das células de uma coluna, para que os valores possam ser exibidos\n * de acordo com a necessidade do usuário.\n *\n * Em seu uso, deve-se utilizar como parâmetro de entrada o input [p-property], o qual é responsável por informar ao PO-TABLE qual a coluna que\n * será adicionado o conteúdo do template.\n *\n * Retorno:\n *  - value: valor referente ao conteúdo da linha corrente.\n *\n * Modo de uso:\n * ```html\n * ...\n * <po-table\n *   [p-columns]=\"columns\"\n *   [p-items]=\"items\">\n *   <ng-template p-table-column-template [p-property]=\"targetProperty\" let-value>\n *     <span [innerText]=\"value\"></span>\n *   </ng-template>\n * </po-table>\n * ...\n * ```\n * > No exemplo acima, todas as células correspondentes a coluna `status` terão o conteúdo alterado para `<h1>${value}</h1>`,\n * sendo que `value` refere-se ao conteúdo da linha.\n *\n * ```html\n * ...\n * <po-table\n *   [p-columns]=\"columns\"\n *   [p-items]=\"items\">\n *   <ng-template  p-table-column-template [p-property]=\"targetProperty\" let-value>\n *     <span *ngIf=\"value === 'FINISHED'\" [style.background]=\"'silver'\" [innerText]=\"value\"></span>\n *     <span *ngIf=\"value === 'OPENED'\" [style.background]=\"'gray'\" [innerText]=\"value\"></span>\n *   </ng-template>\n * </po-table>\n * ...\n * ```\n * > Agora, neste exemplo, com o valor da linha corrente retornado (value), é feito uma validação para\n * definir o template exato para adicionar a uma específica célula.\n *\n * Abaixo, a declaração dos dados de entrada do PO-TABLE para o uso da directiva.\n * ```typescript\n * ...\n * export class AppComponent {\n *\n *    targetProperty= 'status';\n *\n *    items = [{\n *      code: 1200,\n *      product: 'Rice',\n *      status: 'CANCELED'\n *      },{\n *      code: 1355,\n *      product: 'Bean',\n *      status: 'FINISHED'\n *    }];\n *\n *    columns = [\n *      { property: 'code', label: 'ID' },\n *      { property: 'product', label: 'PRODUTO' },\n *      { property: 'status', label: 'STATUS', type: 'columnTemplate' }\n *    ];\n * }\n * ...\n * ```\n * > Observação: Sempre adicionar o **type** da coluna que deseja manipular com a directiva como `columnTemplate`\n */\n\n@Directive({\n  selector: '[p-table-column-template]',\n  standalone: false\n})\nexport class PoTableColumnTemplateDirective {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Variável responsável por armazenar a property da coluna da tabela que será adicionado o template.\n   *\n   * Caso não seja informada esta propriedade, serão apresentados normalmente os dados da coluna.\n   */\n  @Input('p-property') targetProperty: string;\n\n  // Necessário manter templateRef para o funcionamento do column template.\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { PoTableRowTemplateArrowDirection } from '../enums/po-table-row-template-arrow-direction.enum';\n\n/**\n * @usedBy PoTableComponent\n *\n * @description\n *\n * Esta diretiva permite que seja apresentada informações adicionais a respeito de uma determinada linha de\n * dados, de forma que possam ser exibidas e ocultadas através do botão de acionamento.\n *\n * > Quando utilizada, sobrepõe as funcionalidade básicas do *master-detail*.\n *\n * Em seu uso, deve-se utilizar como parâmetro a referência da _linha_ e/ou _índice_, sendo por padrão linha. Caso não seja declarado,\n * o componente não exibirá conteúdo.\n *  - Linha: `row` determina o item da linha corrente.\n *  - Índice: `rowIndex` determina o índice da linha corrente.\n *\n * Esta diretiva compõe-se de dois meios para uso, de forma explícita tal como em *syntax sugar*. Veja a seguir ambos, respectivamente:\n *\n * ```\n * ...\n * <po-table\n *   [p-columns]=\"columns\"\n *   [p-items]=\"items\">\n *     <ng-template p-table-row-template let-rowItem let-i=\"rowIndex\" [p-table-row-template-show]=\"isShow\">\n *       <detail-row [row]=\"rowItem\"></detail-row>\n *     </ng-template>\n * ...\n * ```\n *\n * ```\n * ...\n * <po-table\n *   [p-columns]=\"columns\"\n *   [p-items]=\"items\">\n *     <div *p-table-row-template=\"let rowItem, let i=rowIndex\">\n *       <detail-row [row]=\"rowItem\"></detail-row>\n *     </div>\n * ...\n *\n * ```\n *\n * A diretiva **p-table-row-template**, possibilita também que determinada linha apresente ou não seu _template_. Para isto,\n * é necessário atribuir a referência da função que faz esta verificação, à propriedade `p-table-row-template-show`,\n * a mesma deve retornar um valor do tipo *boolean*. Veja o exemplo a seguir:\n *\n * ```\n * ...\n * @Component({\n *    selector: 'app-root',\n *    templateUrl: `\n *      ...\n *      <po-table\n *        [p-columns]=\"columns\"\n *        [p-items]=\"items\">\n *          <ng-template p-table-row-template let-rowItem let-i=\"rowIndex\" [p-table-row-template-show]=\"isUndelivered\">\n *            <detail-row [row]=\"rowItem\"> </detail-row>\n *          </div>\n *      ...\n *    `\n * })\n * export class AppComponent {\n *    public dataTable = [{\n *      code: 1200,\n *      product: 'Rice',\n *      costumer: 'Supermarket 1',\n *      quantity: 3,\n *      status: 'delivered',\n *      license_plate: 'MDJD9191',\n *      batch_product: 18041822,\n *      driver: 'José Oliveira'\n *    }, {\n *      code: 1355,\n *      product: 'Bean',\n *      costumer: 'Supermarket 2',\n *      quantity: 1,\n *      status: 'transport',\n *      license_plate: 'XXA5454',\n *      batch_product: 18041821,\n *      driver: 'Francisco Pereira'\n *    }];\n *\n *    isUndelivered(row, index: number) {\n *      return row.status !== 'delivered';\n *    }\n * }\n * ```\n * > No exemplo acima, somente será disponibilizado os detalhes de informações nas linhas cujo o valor de `status`\n * não correspondam à *delivered*.\n */\n@Directive({\n  selector: '[p-table-row-template]',\n  standalone: false\n})\nexport class PoTableRowTemplateDirective {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Função que deve retornar um valor booleano, informando se apresentará o template da linha.\n   * Serão passados o objeto da linha e o indice da mesma por parâmetro, para que seja possível\n   * tomar uma decisão a partir do objeto da linha corrente.\n   *\n   * Caso não ser utilizado esta propriedade, serão apresentados todos os detalhes das linhas.\n   *\n   * @default `true`\n   */\n  @Input('p-table-row-template-show') poTableRowTemplateShow: (row: any, index: number) => boolean;\n\n  private _tableRowTemplateArrowDirection: PoTableRowTemplateArrowDirection = PoTableRowTemplateArrowDirection.Left;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Propriedade responsável por informar a posição do colapse que abrirá os detalhes da linha.\n   *\n   * @default `'LEFT'`\n   */\n  @Input('p-table-row-template-arrow-direction') set tableRowTemplateArrowDirection(\n    value: PoTableRowTemplateArrowDirection\n  ) {\n    value = value?.toUpperCase() as PoTableRowTemplateArrowDirection;\n    this._tableRowTemplateArrowDirection = (<any>Object).values(PoTableRowTemplateArrowDirection).includes(value)\n      ? value\n      : PoTableRowTemplateArrowDirection.Left;\n  }\n\n  get tableRowTemplateArrowDirection() {\n    return this._tableRowTemplateArrowDirection;\n  }\n\n  // Necessário manter templateRef para o funcionamento do row template.\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n","import { PoSearchLiterals } from './po-search-literals.interface';\n\nexport const poSearchLiteralsDefault = {\n  en: <PoSearchLiterals>{\n    search: 'Search',\n    clean: 'Clear search',\n    all: 'All',\n    of: 'of',\n    next: 'Next result',\n    previous: 'Previous result',\n    result: 'Result',\n    footerActionListbox: 'See all results',\n    placeholderListbox: 'Search'\n  },\n  es: <PoSearchLiterals>{\n    search: 'Buscar',\n    clean: 'Borrar búsqueda',\n    all: 'Todo',\n    of: 'de',\n    next: 'Siguiente resultado',\n    previous: 'Resultado anterior',\n    result: 'Resultado',\n    footerActionListbox: 'Ver todos los resultados',\n    placeholderListbox: 'Buscar'\n  },\n  pt: <PoSearchLiterals>{\n    search: 'Pesquisar',\n    clean: 'Limpar busca',\n    all: 'Todos',\n    of: 'de',\n    next: 'Próximo resultado',\n    previous: 'Resultado anterior',\n    result: 'Resultado',\n    footerActionListbox: 'Ver todos os resultados',\n    placeholderListbox: 'Pesquisar'\n  },\n  ru: <PoSearchLiterals>{\n    search: 'Поиск',\n    clean: 'Очистить поиск',\n    all: 'Все',\n    of: 'из',\n    next: 'Следующий результат',\n    previous: 'Предыдущий результат',\n    result: 'Результат',\n    footerActionListbox: 'Посмотреть все результаты',\n    placeholderListbox: 'Поиск'\n  }\n};\n\nexport const poSearchLiteralsDefaultExecute = {\n  en: <PoSearchLiterals>{\n    search: 'Search and Execute',\n    placeholderListbox: 'Search and Execute'\n  },\n  es: <PoSearchLiterals>{\n    search: 'Buscar y ejecutar',\n    placeholderListbox: 'Buscar y ejecutar'\n  },\n  pt: <PoSearchLiterals>{\n    search: 'Pesquisar e Executar ',\n    placeholderListbox: 'Pesquisar e Executar '\n  },\n  ru: <PoSearchLiterals>{\n    search: 'Поиск и выполнение',\n    placeholderListbox: 'Поиск и выполнение'\n  }\n};\n","import { poLocaleDefault } from '../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\n\nimport { Directive, EventEmitter, HostBinding, HostListener, Input, Output, TemplateRef } from '@angular/core';\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { convertToBoolean, getDefaultSizeFn, mapInputSizeToLoadingIcon, validateSizeFn } from '../../utils/util';\nimport { PoSearchFilterMode } from './enums/po-search-filter-mode.enum';\nimport { PoSearchFilterSelect } from './interfaces/po-search-filter-select.interface';\nimport { PoSearchLiterals } from './literals/po-search-literals.interface';\nimport { poSearchLiteralsDefault, poSearchLiteralsDefaultExecute } from './literals/po-search-literals-default';\nimport { PoSearchLocateSummary } from './interfaces/po-search-locate-summary.interface';\n\nexport type searchMode = 'action' | 'trigger' | 'locate' | 'execute';\n/**\n * @description\n *\n * O componente search, também conhecido como barra de pesquisa, é utilizado para ajudar os usuários a localizar um determinado conteúdo.\n *\n * Normalmente localizado no canto superior direito, junto com o ícone de lupa, uma vez que este ícone é amplamente reconhecido.\n *\n * #### Boas práticas\n *\n * Foram estruturados os padrões de usabilidade para auxiliar na utilização do componente e garantir uma boa experiência\n * aos usuários. Portanto, é de extrema importância que, ao utilizar este componente, as pessoas responsáveis por seu\n * desenvolvimento considerem os seguintes critérios:\n * - Utilize labels para apresentar resultados que estão sendo exibidos e apresente os resultados mais relevantes\n * primeiro.\n * - Exiba uma mensagem clara quando não forem encontrados resultados para busca e sempre que possível ofereça outras\n * sugestões de busca.\n * - Mantenha o texto original no campo de input, que facilita a ação do usuário caso queira fazer uma nova busca com\n * alguma modificação na pesquisa.\n * - Caso seja possível detectar um erro de digitação, mostre os resultados para a palavra \"corrigida\", isso evita a\n * frustração de não obter resultados e não força o usuário a realizar uma nova busca.\n * - Quando apropriado, destaque os termos da busca nos resultados.\n * - A entrada do campo de pesquisa deve caber em uma linha. Não use entradas de pesquisa de várias linhas.\n * - Recomenda-se ter apenas uma pesquisa por página. Se você precisar de várias pesquisas, rotule-as claramente para\n * indicar sua finalidade.\n * - Se possível, forneça sugestões de pesquisa, seja em um helptext ou sugestão de pesquisa que é um autocomplete. Isso\n * ajuda os usuários a encontrar o que estão procurando, especialmente se os itens pesquisáveis forem complexos.\n *\n * #### Acessibilidade tratada no componente\n *\n *  Algumas diretrizes de acessibilidade já são tratadas no componente, internamente, e não podem ser alteradas pelo\n * proprietário do conteúdo. São elas:\n * - Permitir a interação via teclado (2.1.1: Keyboard (A));\n * - Alteração entre os estados precisa ser indicada por mais de um elemento além da cor (1.4.1: Use of Color);\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                      |\n * |----------------------------------------|-------------------------------------------------------|---------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                   |\n * | `--font-family`                        | Família tipográfica do campo                          | `var(--font-family-theme)`                        |\n * | `--font-size`                          | Tamanho da fonte do campo                             | `var(--font-size-default)`                        |\n * | `--text-color-placeholder`             | Cor do texto no placeholder                           | `var(--color-neutral-light-30)`                   |\n * | `--color`                              | Cor das bordas                                        | `var(--color-neutral-dark-70)`                    |\n * | `--border-radius`                      | Raio das bordas                                       | `var(--border-radius-md)`                         |\n * | `--background`                         | Cor de background                                     | `var(--color-neutral-light-05)`                   |\n * | `--text-color`                         | Cor do texto editável                                 | `var(--color-neutral-dark-90)`                    |\n * | `--color-clear`                        | Cor do ícone close                                    | `var(--color-action-default)`                     |\n * | `--color-controls`                     | Cor dos ícones de controle do mode location           | `var(--color-action-default)`                     |\n * | `--transition-property`                | Atributo da transição                                 | `all`                                             |\n * | `--transition-duration`                | Duração da transição                                  | `var(--duration-extra-fast)`                      |\n * | `--transition-timing`                  | Duração da transição com o tipo de transição          | `var(--timing-standart)`                          |\n * | **Icon**                               |                                                       |                                                   |\n * | `--color-icon-read`                    | Cor do ícone de busca no modo action                  | `var(--color-neutral-dark-70)`                    |\n * | `--color-icon`                         | Cor do ícone de busca no modo trigger                 | `var(--color-action-default)`                     |\n * | **Hover**                              |                                                       |                                                   |\n * | `--color-hover`                        | Cor das bordas no estado hover                        | `var(--color-action-hover)`                       |\n * | `--background-hover`                   | Cor de background no estado hover                     | `var(--color-brand-01-lightest)`                  |\n * | **Focused**                            |                                                       |                                                   |\n * | `--color-focused`                      | Cor das bordas no estado de focus                     | `var(--color-action-default)`                     |\n * | `--outline-color-focused`              | Cor do outline no estado de focus                     | `var(--color-action-focus)`                       |\n * | **Disabled**                           |                                                       |                                                   |\n * | `--color-disabled`                     | Cor principal no estado disabled                      | `var(--color-action-disabled)`                    |\n * | `--background-disabled`                | Cor de background no estado disabled                  | `var(--color-neutral-light-20)`                   |\n *\n */\n@Directive()\nexport class PoSearchBaseComponent {\n  protected language: string;\n  private _literals?: PoSearchLiterals;\n  private _ariaLabel?: string;\n  private _filterSelect?: Array<PoSearchFilterSelect>;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n  private _keysLabel? = [];\n  private _disabled?: boolean = false;\n  private _loading: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define um aria-label para o po-search.\n   *\n   * > Devido o componente não possuir uma label assim como outros campos de texto, o `aria-label` é utilizado para\n   * acessibilidade.\n   */\n  @Input('p-aria-label') set ariaLabel(value: string) {\n    this._ariaLabel = value;\n\n    if (value !== this.literals.search) {\n      this._ariaLabel = `${this._ariaLabel} ${this.literals.search}`;\n    }\n  }\n\n  get ariaLabel(): string {\n    return this._ariaLabel;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita o po-search e não permite que o usuário interaja com o mesmo.\n   *\n   * @default `false`\n   */\n  @Input('p-disabled') set disabled(disabled: boolean) {\n    this._disabled = convertToBoolean(disabled);\n  }\n\n  get disabled() {\n    return this._disabled;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de carregamento no lado direito do campo para sinalizar que uma operação está em andamento.\n   *\n   * > Incompatível com a propriedade `p-search-type` do tipo `locate`.\n   *\n   * @default `false`\n   */\n  @Input('p-loading') set loading(value: boolean) {\n    this._loading = convertToBoolean(value);\n  }\n\n  get loading(): boolean {\n    return this._loading;\n  }\n\n  get isDisabled(): boolean {\n    if (this.type === 'locate') {\n      return this.disabled;\n    }\n\n    return this.disabled || this.loading;\n  }\n\n  /**\n   * @description\n   *\n   * Define os nomes das propriedades do objeto que serão utilizados para busca em `p-items`. Cada valor definido no\n   * array será considerado durante a apresentação e filtragem dos itens.\n   * Exemplo de uso:\n   * ```typescript\n   * const filterKeys: Array<string> = ['name', 'gender', 'planet', 'father'];\n   * ```\n   *\n   * > Esta propriedade é ignorada quando utilizado com `p-filter-select` e incompatível com a propriedade\n   * `p-search-type` do tipo `locate`.\n   */\n  @Input('p-filter-keys') filterKeys: Array<any> = [];\n\n  /**\n   * @description\n   *\n   * Habilita um seletor de filtros à esquerda do campo, permitindo a aplicação de filtros agrupados na busca ou sobre\n   * os itens fornecidos em `p-items`. Automaticamente adiciona a opção **Todos**, com um mapeamento de todas as opções passadas.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * const filterSelect = [\n   *   { label: 'personal', value: ['name', 'email', 'nickname'] },\n   *   { label: 'address', value: ['country', 'state', 'city', 'street'] },\n   *   { label: 'family', value: ['father', 'mother', 'dependents'] }\n   * ];\n   * ```\n   *\n   * > Ao ser habilitada, a propriedade `p-filter-keys` será ignorada. Esta propriedade é incompatível com a propriedade\n   * `p-search-type` do tipo `locate`.\n   */\n  @Input('p-filter-select') set filterSelect(values: Array<PoSearchFilterSelect>) {\n    if (!Array.isArray(values) || values.length === 0 || values.every(value => Object.keys(value).length === 0)) {\n      this._filterSelect = undefined;\n      return;\n    }\n    const _values: Array<PoSearchFilterSelect> = this.ensureFilterSelectOption(values);\n\n    const allValues = _values.flatMap(e => e.value);\n    const uniqueValues = [...new Set(allValues)];\n\n    const filterOptionAll: PoSearchFilterSelect = {\n      label: this.literals.all,\n      value: uniqueValues\n    };\n\n    this._filterSelect = [filterOptionAll, ..._values];\n  }\n\n  get filterSelect() {\n    return this._filterSelect;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o modo de pesquisa utilizado no campo de busca. Os valores permitidos são definidos pelo enum\n   * **PoSearchFilterMode**.\n   *\n   * > Incompatível com a propriedade `p-search-type` do tipo `locate`.\n   *\n   * @default `startsWith`\n   */\n  @Input('p-filter-type') filterType: PoSearchFilterMode = PoSearchFilterMode.startsWith;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite customizar o ícone de busca que acompanha o campo.\n   *\n   * É possível usar qualquer um dos ícones da [Biblioteca de ícones PO UI](https://po-ui.io/icons), conforme exemplo:\n   * ```\n   * <po-search p-icon=\"an an-user\"></po-search>\n   * ```\n   * Também é possível utilizar outras fontes de ícones, por exemplo a biblioteca *Font Awesome*, desde que a biblioteca\n   * esteja carregada no projeto:\n   * ```\n   * <po-search p-icon=\"fa fa-podcast\"></po-search>\n   * ```\n   *\n   * Outra opção seria a customização do ícone através do `TemplateRef`, conforme exemplo abaixo:\n   * ```\n   * <po-search [p-icon]=\"template\"></po-search>\n   *\n   * <ng-template #template>\n   *   <i class=\"fa fa-podcast\" style=\"font-size: inherit;\"></i>\n   * </ng-template>\n   * ```\n   */\n  @Input('p-icon') icon: string | TemplateRef<void>;\n\n  // Propriedade de uso interno.\n  @Input('p-id') id: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Lista de itens que serão utilizados para pesquisa.\n   *\n   * > Incompatível com a propriedade `p-search-type` do tipo `locate`.\n   */\n  @Input('p-items') items: Array<any> = [];\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com as literais usadas no `po-search`, permitindo personalizar os textos exibidos no componente.\n   *\n   * Para utilizar basta passar a literal que deseja customizar:\n   *\n   * ```\n   *  const customLiterals: PoSearchLiterals = {\n   *    search: 'Pesquisar',\n   *    clean: 'Limpar',\n   *  };\n   * ```\n   *\n   * E para carregar a literal customizada, basta apenas passar o objeto para o componente.\n   *\n   * ```\n   * <po-search\n   *   [p-literals]=\"customLiterals\">\n   * </po-search>\n   * ```\n   *\n   * > O objeto padrão de literais será traduzido de acordo com o idioma do [`PoI18nService`](/documentation/po-i18n) ou\n   * do browser.\n   */\n  @Input('p-literals') set literals(value: PoSearchLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poSearchLiteralsDefault[poLocaleDefault],\n        ...poSearchLiteralsDefault[this.language],\n        ...(this.type === 'execute' ? poSearchLiteralsDefaultExecute[this.language] : {}),\n        ...value\n      };\n    } else {\n      this._literals = {\n        ...poSearchLiteralsDefault[this.language],\n        ...(this.type === 'execute' ? poSearchLiteralsDefaultExecute[this.language] : {})\n      };\n    }\n  }\n\n  get literals() {\n    return (\n      this._literals || {\n        ...poSearchLiteralsDefault[this.language],\n        ...(this.type === 'execute' ? poSearchLiteralsDefaultExecute[this.language] : {})\n      }\n    );\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define os valores do contador exibido ao usar a propriedade `p-search-type` do tipo `locate`, indicando a posição\n   * atual e o total de ocorrências encontradas.\n   * Exemplo de uso:\n   * ```ts\n   * locateSummary: PoSearchLocateSummary = { currentIndex: 0, total: 5 };\n   * ```\n   *\n   * > Compatível com a propriedade `p-search-type` do tipo `locate`.\n   */\n  @Input('p-locate-summary') locateSummary: PoSearchLocateSummary = { currentIndex: 0, total: 0 };\n\n  /**\n   * @optional\n   *\n   * @description\n   * Nome e identificador do campo.\n   *\n   */\n  @Input('name') name: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a propriedade nativa `autocomplete` do campo como `off`.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-no-autocomplete', transform: convertToBoolean }) noAutocomplete: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Determina a forma de realizar a pesquisa no componente. Valores aceitos:\n   * - `action`: Realiza a busca a cada caractere digitado.\n   * - `trigger`: Realiza a busca ao pressionar `enter` ou clicar no ícone de busca.\n   * - `locate`: Modo manual. Exibe botões e contador, mas não executa buscas — controle é do desenvolvedor.\n   * - `execute`: Executa uma ação ou realiza um redirecionamento ao selecionar um item no `listbox`.\n   *    Para este tipo, é necessário informar as propriedades `action` ou `url` nos itens definidos em `p-items`.\n   *\n   * @default `action`\n   */\n  @Input('p-search-type') type: searchMode = 'action';\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe uma lista (auto-complete) com as opções definidas em `p-filter-keys` ou `p-filter-select` enquanto realiza\n   * uma busca, respeitando o `p-filter-type` como modo de pesquisa.\n   *\n   * > Incompatível com a propriedade `p-search-type` do tipo `locate`.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-show-listbox', transform: convertToBoolean }) showListbox?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura do input como 32px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura do input como 44px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define os nomes das propriedades do objeto que serão exibidos como rótulos (labels) no `listbox` quando a propriedade\n   * `p-show-listbox` estiver habilitada.\n   *\n   * Deve ser informado um array de strings contendo até **3 propriedades**.\n   *\n   * Exemplo de uso:\n   * ```ts\n   * keysLabel: Array<string> = ['nome', 'email', 'country'];\n   * ```\n   */\n  @Input('p-keys-label') set keysLabel(value: Array<string>) {\n    if (value && value.length > 3) {\n      this._keysLabel = value.slice(0, 3);\n    } else {\n      this._keysLabel = value;\n    }\n  }\n\n  get keysLabel(): Array<string> {\n    return this._keysLabel;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao sair do campo.\n   */\n  @Output('p-blur') blur: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao alterar valor do model.\n   */\n  @Output('p-change-model') changeModel: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Pode ser informada uma função que será disparada quando houver alterações nos filtros.\n   *\n   * > Incompatível com a propriedade `p-search-type` do tipo `locate`.\n   */\n  @Output('p-filter') filter: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Pode ser informada uma função que será disparada quando houver alterações no input.\n   *\n   * > Incompatível com a propriedade `p-search-type` do tipo `locate`.\n   */\n  @Output('p-filtered-items-change') filteredItemsChange = new EventEmitter<Array<any>>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento emitido quando o campo de entrada (input) recebe foco.\n   */\n  @Output('p-focus') focusEvent: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado quando uma tecla é pressionada enquanto o foco está no componente.\n   * Retorna um objeto `KeyboardEvent` com informações sobre a tecla.\n   */\n  @Output('p-keydown') keydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Pode ser informada uma função que será disparada quando houver click no listbox.\n   *\n   * > Incompatível com a propriedade `p-search-type` do tipo `locate`.\n   */\n  @Output('p-listbox-onclick') listboxOnClick = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao clicar no controle \"Próximo resultado\".\n   *\n   * > Compatível com a propriedade `p-search-type` do tipo `locate`.\n   */\n  @Output('p-locate-next') locateNext = new EventEmitter<void>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao clicar no controle \"Resultado anterior\".\n   *\n   * > Compatível com a propriedade `p-search-type` do tipo `locate`.\n   */\n  @Output('p-locate-previous') locatePrevious = new EventEmitter<void>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao clicar no botão de ação exibido no rodapé do `listbox`.\n   * O texto exibido pode ser configurado por meio do literal `footerActionListbox`.\n   */\n  @Output('p-footer-action-listbox') footerAction = new EventEmitter<any>();\n\n  constructor(languageService: PoLanguageService) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  ensureFilterSelectOption(values: any) {\n    const _values = Array.isArray(values) ? values : Array.of(values);\n    return _values.map(value => (typeof value === 'object' ? value : { label: value, value }));\n  }\n\n  //Transforma o tamanho do input para o tamanho do ícone de loading correspondente\n  mapSizeToIcon(size: string): string {\n    return mapInputSizeToLoadingIcon(size);\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  inject\n} from '@angular/core';\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { PoControlPositionService } from '../../services/po-control-position/po-control-position.service';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { PoDropdownAction } from '../po-dropdown';\nimport { PoListBoxComponent } from '../po-listbox';\nimport { PoKeyCodeEnum } from './../../enums/po-key-code.enum';\nimport { PoSearchFilterMode } from './enums/po-search-filter-mode.enum';\nimport { PoSearchFilterSelect } from './interfaces/po-search-filter-select.interface';\nimport { PoSearchOption } from './interfaces/po-search-option.interface';\nimport { PoSearchBaseComponent } from './po-search-base.component';\n\nconst poSearchContainerOffset = 8;\nconst poSearchContainerPositionDefault = 'bottom';\nconst ID_SEARCH_BUTTON_CLEAN = 'search-button-clean';\n\n/**\n * @docsExtends PoSearchBaseComponent\n *\n * @example\n *\n * <example name=\"po-search-basic\" title=\"PO Search Basic\">\n *  <file name=\"sample-po-search-basic/sample-po-search-basic.component.html\"> </file>\n *  <file name=\"sample-po-search-basic/sample-po-search-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-search-labs\" title=\"PO Search Labs\">\n *  <file name=\"sample-po-search-labs/sample-po-search-labs.component.html\"> </file>\n *  <file name=\"sample-po-search-labs/sample-po-search-labs.component.ts\"> </file>\n *  <file name=\"sample-po-search-labs/sample-po-search-labs.component.css\"> </file>\n * </example>\n *\n * <example name=\"po-search-find-people\" title=\"PO Search Find People\">\n *  <file name=\"sample-po-search-find-people/sample-po-search-find-people.component.html\"> </file>\n *  <file name=\"sample-po-search-find-people/sample-po-search-find-people.component.ts\"> </file>\n *  <file name=\"sample-po-search-find-people/sample-po-search-find-people.component.css\"> </file>\n *  <file name=\"sample-po-search-find-people/sample-po-search-find-people.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-search-listbox\" title=\"PO Search With Listbox\">\n *  <file name=\"sample-po-search-listbox/sample-po-search-listbox.component.html\"> </file>\n *  <file name=\"sample-po-search-listbox/sample-po-search-listbox.component.ts\"> </file>\n *  <file name=\"sample-po-search-listbox/sample-po-search-listbox.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-search-filter-select\" title=\"PO Search With Filter Select + Listbox\">\n *  <file name=\"sample-po-search-filter-select/sample-po-search-filter-select.component.html\"> </file>\n *  <file name=\"sample-po-search-filter-select/sample-po-search-filter-select.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-search-execute\" title=\"PO Search Form Fields with Execute\">\n *  <file name=\"sample-po-search-execute/sample-po-search-execute.component.html\"> </file>\n *  <file name=\"sample-po-search-execute/sample-po-search-execute.component.ts\"> </file>\n *  <file name=\"sample-po-search-execute/sample-po-search-execute.component.css\"> </file>\n * </example>\n *\n * <example name=\"po-search-fields-locate\" title=\"PO Search Form Fields with Locate\">\n *  <file name=\"sample-po-search-fields-locate/sample-po-search-fields-locate.component.html\"> </file>\n *  <file name=\"sample-po-search-fields-locate/sample-po-search-fields-locate.component.ts\"> </file>\n * </example>\n *\n */\n@Component({\n  selector: 'po-search',\n  templateUrl: './po-search.component.html',\n  providers: [PoControlPositionService],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoSearchComponent extends PoSearchBaseComponent implements OnInit, OnDestroy, OnChanges {\n  languageService: PoLanguageService;\n  protected renderer = inject(Renderer2);\n  protected changeDetector = inject(ChangeDetectorRef);\n  protected controlPosition = inject(PoControlPositionService);\n\n  private clickoutListener: () => void;\n  private eventResizeListener: () => void;\n  private _locateCounter: ElementRef;\n\n  @ViewChild('locateCounter', { static: false }) set locateCounter(element: ElementRef) {\n    this._locateCounter = element;\n\n    this.locateCounterResize = new ResizeObserver(() => {\n      this.updatePaddingRightLocate(false);\n    });\n\n    if (this._locateCounter) {\n      this.locateCounterResize.observe(this._locateCounter.nativeElement);\n    }\n  }\n\n  get locateCounter() {\n    return this._locateCounter;\n  }\n\n  @ViewChild('poSearchInput', { read: ElementRef, static: true }) poSearchInput: ElementRef;\n  @ViewChild('poListboxContainerElement', { read: ElementRef }) poListboxContainerElement: ElementRef;\n  @ViewChild('poListboxElement', { read: ElementRef }) poListboxElement: ElementRef;\n  @ViewChild('poListbox') poListbox: PoListBoxComponent;\n\n  basePaddingRightSmall: number = 122;\n  basePaddingRightMedium: number = 158;\n  dynamicPaddingRight: number;\n  listboxFilteredItems: Array<any> = [];\n  filteredItems: Array<any> = [];\n  listboxOpen: boolean = false;\n  shouldMarkLetters: boolean = true;\n  isFiltering: boolean = false;\n  isInputFocused: boolean = false;\n  listboxItemclicked: boolean = false;\n  showSearchLocateControls: boolean = false;\n  showNoResults: boolean = false;\n  locateCounterResize: ResizeObserver;\n  searchFilter = {};\n\n  searchFilterSelectLabel: string;\n  searchFilterSelectActions: Array<PoDropdownAction>;\n\n  idSearchButtonClean = ID_SEARCH_BUTTON_CLEAN;\n  protected showFooterActionListbox: boolean = false;\n  protected showSeparator: boolean = false;\n  protected placeholderListbox!: string | null;\n  protected modelSelected: string;\n\n  constructor() {\n    const languageService = inject(PoLanguageService);\n    super(languageService);\n    this.languageService = languageService;\n  }\n\n  ngOnInit(): void {\n    this.filteredItems = this.items;\n    if (this.showListbox) {\n      this.listboxFilteredItems = this.keysLabel.length === 0 ? this.listboxItems : this.items;\n    }\n    if (this.filterSelect) {\n      this.createDropdownFilterSelect();\n    }\n\n    this.showFooterActionListbox = this.footerAction.observed;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.filterSelect?.currentValue) {\n      this.createDropdownFilterSelect();\n    }\n\n    if (changes.type || changes.disabled) {\n      this.updateShowSearchLocateControls();\n      this.updatePaddingRightLocate(true);\n    }\n\n    if (changes.keysLabel) {\n      this.showSeparator = this.keysLabel.length > 1;\n    }\n\n    this.configureSearchModeExecute(changes);\n  }\n\n  private configureSearchModeExecute(changes: SimpleChanges) {\n    if (changes.type?.currentValue === 'execute') {\n      this.showListbox = true;\n\n      if (!this.keysLabel.length && this.filterKeys?.length) {\n        this.keysLabel = [...this.filterKeys.slice(0, 3)];\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this.removeListeners();\n    if (this.locateCounterResize?.disconnect) {\n      this.locateCounterResize.disconnect();\n    }\n  }\n\n  clearSearch(): void {\n    this.poSearchInput.nativeElement.value = '';\n    this.onSearchChange('', true);\n    this.adjustContainerPosition();\n    this.changeDetector.detectChanges();\n    if (!this.showFooterActionListbox) {\n      this.onCloseListbox();\n    }\n  }\n\n  onCleanKeydown(event: KeyboardEvent) {\n    const isEsc = event.key === 'Escape';\n\n    if (isEsc && this.type === 'locate') {\n      this.clearSearch();\n      this.poSearchInput.nativeElement.focus();\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n  onEnterKey(event: any) {\n    if (this.type !== 'locate') {\n      if (this.listboxOpen) {\n        if (!this.showFooterActionListbox) {\n          this.closeListbox();\n        }\n      } else {\n        this.onSearchChange(event.target.value, this.type === 'trigger', true);\n        this.closeListbox();\n      }\n    }\n  }\n\n  onSearchChange(searchText: string, activated: boolean, buttonClick?: boolean): void {\n    const searchTextInitial = searchText;\n\n    if (this.type === 'locate' && this.changeModel.observed) {\n      this.changeModel.emit(searchTextInitial);\n      this.modelSelected = searchTextInitial;\n      return;\n    }\n\n    if (searchText !== undefined) {\n      searchText = searchText.toLowerCase();\n    }\n    this.isFiltering = true;\n\n    if (activated && !this.listboxItemclicked) {\n      this.updateFilteredItems(searchText);\n      this.filteredItemsChange.emit(this.filteredItems);\n\n      if (this.filterSelect) {\n        this.searchFilter = {\n          ...this.searchFilter,\n          value: searchTextInitial\n        };\n      } else {\n        this.searchFilter = {\n          filter: this.filterKeys,\n          value: searchTextInitial\n        };\n      }\n      this.filter.emit(this.searchFilter);\n\n      this.changeModel.emit(searchText);\n      this.modelSelected = searchTextInitial;\n    }\n\n    if (this.showListbox && !buttonClick && (searchText.length > 0 || this.showFooterActionListbox)) {\n      this.openListbox();\n      this.listboxFilteredItems = this.getListboxFilteredItems(searchText);\n      this.handlerPlaceholderListbox();\n    } else {\n      if (searchText.length === 0) {\n        this.listboxFilteredItems = this.keysLabel.length === 0 ? this.listboxItems : this.items;\n      }\n    }\n\n    if (this.listboxItemclicked) {\n      this.listboxItemclicked = false;\n    }\n\n    this.changeDetector.detectChanges();\n  }\n\n  private updateFilteredItems(searchText: string): void {\n    if (this.items && this.items.length > 0) {\n      this.filteredItems = this.getFilteredItems(searchText);\n    } else {\n      this.filteredItems = [];\n    }\n  }\n\n  private getFilteredItems(searchText) {\n    return this.items.filter(item => this.itemMatchesFilter(item, searchText));\n  }\n\n  private itemMatchesFilter(item: any, searchText: string): boolean {\n    const valuesToSearch: Array<string> = this.filterKeys\n      .map(key => (typeof item[key] !== 'string' ? String(item[key]) : item[key]))\n      .map(value => (value ? value.toLowerCase() : ''));\n\n    return valuesToSearch.some(value => this.filterValue(value, searchText));\n  }\n\n  getListboxFilteredItems(searchText: string) {\n    if (this.keysLabel.length > 0) {\n      return searchText.length ? this.filteredItems : [];\n    }\n\n    return this.listboxItems.filter(item => this.filterValue(item.value, searchText));\n  }\n\n  private filterValue(value: string, searchText: string) {\n    value = value?.toLowerCase();\n    switch (this.filterType) {\n      case PoSearchFilterMode.startsWith:\n        return value?.startsWith(searchText);\n      case PoSearchFilterMode.contains:\n        return value?.includes(searchText);\n      case PoSearchFilterMode.endsWith:\n        return value?.endsWith(searchText);\n      default:\n        return false;\n    }\n  }\n\n  get listboxItems() {\n    return this.items\n      .map(item => this.filterKeys.map(key => item[key]).map(item => (typeof item !== 'string' ? String(item) : item)))\n      .flat()\n      .map(value => ({ label: value, value }))\n      .filter((obj, index, self) => index === self.findIndex(o => o.label === obj.label && o.value === obj.value));\n  }\n\n  get autocomplete(): string {\n    return this.noAutocomplete ? 'off' : 'on';\n  }\n\n  onCloseListbox() {\n    this.poSearchInput.nativeElement.focus();\n    this.closeListbox();\n    this.isFiltering = false;\n  }\n\n  onListboxClick(option: PoSearchOption | any, event?: any) {\n    if (event) {\n      event.stopPropagation();\n    }\n\n    if (!event || event.code === 'Enter') {\n      this.listboxItemclicked = true;\n    }\n\n    let value = option.value;\n    if (this.keysLabel.length) {\n      value = option[this.keysLabel[0]];\n    }\n\n    this.poSearchInput.nativeElement.value = value;\n    this.listboxOnClick.emit(value);\n\n    if (this.keysLabel.length) {\n      this.items.forEach(item => delete item.selected);\n    }\n\n    this.onCloseListbox();\n    if (this.type === 'action') {\n      this.listboxItemclicked = false;\n      this.onSearchChange(value.toString(), true, true);\n    }\n  }\n\n  onBlur() {\n    this.isInputFocused = false;\n\n    if (this.type === 'locate') {\n      this.updateShowSearchLocateControls();\n      this.updatePaddingRightLocate(true);\n    }\n\n    if (this.blur.observed) {\n      this.blur.emit();\n    }\n\n    if (this.listboxOpen && !this.showFooterActionListbox) {\n      if (!this.poListbox.items.length) {\n        this.closeListbox();\n      } else {\n        this.focusItem();\n      }\n    }\n  }\n\n  onFocus() {\n    this.isInputFocused = true;\n\n    if (this.type === 'locate') {\n      this.updateShowSearchLocateControls();\n      this.updatePaddingRightLocate(false);\n    }\n\n    if (this.focusEvent.observed) {\n      this.focusEvent.emit();\n    }\n\n    this.openListboxFooterAction();\n  }\n\n  onInputHandler(value: string) {\n    if (this.type === 'locate') {\n      this.onSearchChange(value, false);\n      this.updateShowSearchLocateControls();\n      this.updatePaddingRightLocate(false);\n    } else {\n      this.onSearchChange(value, false);\n      this.onSearchChange(value, ['action', 'execute'].includes(this.type));\n      this.adjustContainerPosition();\n      this.changeDetector.detectChanges();\n    }\n  }\n\n  onKeyDown(event?: KeyboardEvent) {\n    const key = event.keyCode;\n\n    this.keydown.emit(event);\n\n    if (event.shiftKey && key === PoKeyCodeEnum.tab) {\n      this.closeListbox();\n      return;\n    }\n\n    if (key === PoKeyCodeEnum.tab) {\n      this.closeListbox();\n      return;\n    }\n\n    if (key === PoKeyCodeEnum.arrowDown) {\n      event.preventDefault();\n\n      if (!this.listboxOpen) {\n        return;\n      }\n\n      this.focusItem();\n      this.openListbox();\n      return;\n    }\n\n    if (key === PoKeyCodeEnum.esc) {\n      this.closeListbox();\n      this.poSearchInput.nativeElement.focus();\n      return;\n    }\n\n    if (key === PoKeyCodeEnum.enter && this.listboxOpen) {\n      this.closeListbox();\n      this.isFiltering = false;\n    }\n  }\n\n  private focusItem() {\n    const listboxItemList = this.poListboxElement?.nativeElement?.querySelectorAll('.po-listbox-item');\n    setTimeout(() => {\n      Array.from(listboxItemList).forEach((el: HTMLElement) => {\n        el.tabIndex = -1;\n        el.classList.remove('cdk-option-active');\n      });\n\n      const firstOption = listboxItemList[0] as HTMLElement;\n      firstOption.focus();\n      firstOption.classList.add('cdk-option-active');\n    });\n  }\n\n  private setContainerPosition() {\n    if (this.poListboxContainerElement && this.poSearchInput) {\n      this.controlPosition.setElements(\n        this.poListboxContainerElement.nativeElement,\n        poSearchContainerOffset,\n        this.poSearchInput,\n        ['top', 'bottom'],\n        true\n      );\n\n      this.adjustContainerPosition();\n    }\n  }\n\n  private adjustContainerPosition() {\n    if (this.poListboxContainerElement && this.poSearchInput && this.showListbox) {\n      this.controlPosition.adjustPosition(poSearchContainerPositionDefault);\n    }\n  }\n\n  private openListbox() {\n    if (!this.listboxOpen) {\n      this.listboxOpen = true;\n      this.changeDetector.detectChanges();\n      this.initializeListeners();\n      this.poSearchInput.nativeElement.focus();\n      this.setContainerPosition();\n    }\n  }\n\n  closeListbox() {\n    this.listboxOpen = false;\n    this.changeDetector.detectChanges();\n    this.removeListeners();\n  }\n\n  clickedOutsideInput(event: MouseEvent): void {\n    if (\n      this.listboxOpen &&\n      !this.poSearchInput?.nativeElement?.contains(event.target) &&\n      !this.poListboxElement?.nativeElement?.contains(event.target) &&\n      !(this.showFooterActionListbox && (event.target as HTMLElement).closest(`#${this.idSearchButtonClean}`))\n    ) {\n      this.closeListbox();\n    }\n  }\n\n  private initializeListeners() {\n    this.removeListeners();\n\n    this.clickoutListener = this.renderer.listen('document', 'click', (event: MouseEvent) => {\n      this.clickedOutsideInput(event);\n    });\n\n    this.eventResizeListener = this.renderer.listen('window', 'resize', () => {\n      setTimeout(() => this.adjustContainerPosition(), 250);\n    });\n\n    window.addEventListener('scroll', this.onScroll, true);\n  }\n\n  private removeListeners() {\n    if (this.clickoutListener) {\n      this.clickoutListener();\n    }\n\n    if (this.eventResizeListener) {\n      this.eventResizeListener();\n    }\n\n    window.removeEventListener('scroll', this.onScroll, true);\n  }\n\n  private updatePaddingRightLocate(noValue: boolean) {\n    const basePadding = this.size === PoFieldSize.Medium ? this.basePaddingRightMedium : this.basePaddingRightSmall;\n    const hasValue = !!this.poSearchInput.nativeElement.value;\n\n    if (this.type === 'locate') {\n      if (hasValue && this.locateCounter?.nativeElement) {\n        const counterWidth = this.locateCounter.nativeElement.offsetWidth;\n        const extraSpace = 8;\n        this.dynamicPaddingRight = basePadding + counterWidth + extraSpace;\n      } else {\n        this.dynamicPaddingRight = noValue || this.disabled ? null : basePadding;\n      }\n    } else {\n      this.dynamicPaddingRight = null;\n    }\n\n    this.changeDetector.detectChanges();\n  }\n\n  private updateShowSearchLocateControls() {\n    this.showSearchLocateControls = !!(\n      this.type === 'locate' &&\n      (this.isInputFocused || this.poSearchInput?.nativeElement?.value) &&\n      !this.disabled\n    );\n  }\n\n  private readonly onScroll = (): void => {\n    this.adjustContainerPosition();\n  };\n\n  getInputValue() {\n    return this.poSearchInput?.nativeElement?.value ?? '';\n  }\n\n  createDropdownFilterSelect(): void {\n    this.searchFilterSelectActions = [];\n    if (!this.filterSelect) {\n      return;\n    }\n    this.filterSelect.forEach(filterOption => {\n      const selectOption: PoDropdownAction = {\n        label: filterOption.label,\n        action: () => this.changeFilterSelect(filterOption),\n        selected: this.isSelected(filterOption)\n      };\n      this.searchFilterSelectActions.push(selectOption);\n    });\n\n    this.changeFilterSelect(this.filterSelect[0], false);\n  }\n\n  isSelected(filterOption: PoSearchFilterSelect): boolean {\n    return this.searchFilterSelectLabel === filterOption.label;\n  }\n\n  changeFilterSelect(filterOption: PoSearchFilterSelect, focus = true) {\n    this.searchFilterSelectLabel = filterOption.label;\n    this.filterKeys = Array.isArray(filterOption.value) ? [...filterOption.value] : [filterOption.value];\n\n    if (!this.searchFilterSelectActions) {\n      return;\n    }\n\n    this.searchFilterSelectActions.forEach(action => (action.selected = false));\n    const selectAction = this.searchFilterSelectActions.find(action => action.label === this.searchFilterSelectLabel);\n    selectAction.selected = true;\n\n    this.searchFilter = {\n      filter: filterOption.label === this.literals.all ? ['all'] : filterOption.value\n    };\n\n    if (this.poSearchInput?.nativeElement && focus) {\n      this.poSearchInput.nativeElement.focus();\n    }\n\n    if (this.type === 'action') {\n      this.onSearchChange(this.getInputValue(), true);\n    }\n  }\n\n  handlerFooterActionListbox() {\n    this.footerAction.emit();\n    this.closeListbox();\n  }\n\n  private openListboxFooterAction() {\n    if (this.showFooterActionListbox && this.showListbox && !this.modelSelected) {\n      this.listboxFilteredItems = [];\n      this.handlerPlaceholderListbox();\n      this.openListbox();\n    }\n  }\n\n  private handlerPlaceholderListbox() {\n    if (this.showFooterActionListbox && !this.listboxFilteredItems.length && this.getInputValue().length == 0) {\n      this.placeholderListbox = this.literals.placeholderListbox;\n      return;\n    }\n\n    this.placeholderListbox = null;\n  }\n}\n","<div\n  class=\"po-search\"\n  [class.po-search-disabled]=\"disabled\"\n  [class.po-search-loading]=\"loading && type !== 'locate'\"\n  [class.po-search-filter-locate]=\"type === 'locate'\"\n  [attr.p-search-type]=\"type === 'locate'\"\n  [attr.p-size]=\"size\"\n>\n  @if (filterSelect && type !== 'locate') {\n    <div class=\"po-search-select\">\n      <po-dropdown\n        [p-label]=\"searchFilterSelectLabel\"\n        [p-disabled]=\"isDisabled\"\n        [p-actions]=\"searchFilterSelectActions\"\n        [p-size]=\"size\"\n      >\n      </po-dropdown>\n    </div>\n  }\n\n  @if (type === 'action' || type === 'locate' || type === 'execute') {\n    <div class=\"po-search-icon\">\n      <po-icon [p-icon]=\"icon ? icon : 'ICON_SEARCH'\"></po-icon>\n    </div>\n  }\n\n  <input\n    #poSearchInput\n    class=\"po-search-input\"\n    type=\"text\"\n    [attr.id]=\"id || null\"\n    [autocomplete]=\"autocomplete\"\n    [attr.name]=\"name\"\n    [ariaLabel]=\"ariaLabel\"\n    [class.po-search-input-clean]=\"!!poSearchInput.value && !disabled && type !== 'locate'\"\n    [class.po-search-input-trigger]=\"type === 'trigger'\"\n    [style.padding-right.px]=\"dynamicPaddingRight\"\n    [disabled]=\"isDisabled\"\n    [placeholder]=\"literals.search\"\n    (input)=\"onInputHandler($event.target.value)\"\n    (keyup.enter)=\"onEnterKey($event)\"\n    (keydown)=\"onKeyDown($event)\"\n    (blur)=\"onBlur()\"\n    (focus)=\"onFocus()\"\n  />\n\n  <div class=\"po-search-buttons\">\n    @if (type === 'locate' && poSearchInput.value && !disabled) {\n      <span\n        #locateCounter\n        class=\"po-search-locate-counter\"\n        id=\"summary\"\n        [attr.aria-label]=\"\n          literals.result +\n          ' ' +\n          (locateSummary?.currentIndex ?? 0) +\n          ' ' +\n          literals.of +\n          ' ' +\n          (locateSummary?.total ?? 0)\n        \"\n      >\n        {{ locateSummary?.currentIndex ?? 0 }}/{{ locateSummary?.total ?? 0 }}\n      </span>\n    }\n\n    <div [id]=\"idSearchButtonClean\">\n      @if (loading && type !== 'locate') {\n        <div class=\"po-search-button po-search-button-loading\">\n          <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n        </div>\n      } @else if (!!poSearchInput.value) {\n        <button\n          class=\"po-search-button po-search-button-clean\"\n          type=\"button\"\n          [ariaLabel]=\"literals.clean\"\n          (click)=\"clearSearch()\"\n          (keydown.enter)=\"clearSearch()\"\n          (keydown)=\"onCleanKeydown($event)\"\n        >\n          <po-clean class=\"po-icon-input\" [p-size]=\"size\"></po-clean>\n        </button>\n      }\n    </div>\n\n    @if (type === 'trigger') {\n      <button\n        class=\"po-search-button po-search-button-trigger\"\n        type=\"button\"\n        [ariaLabel]=\"literals.search\"\n        [disabled]=\"isDisabled\"\n        (click)=\"onSearchChange(poSearchInput.value, true, true)\"\n        (keydown.enter)=\"onSearchChange(poSearchInput.value, true, true)\"\n      >\n        <po-icon [p-icon]=\"icon ? icon : 'ICON_SEARCH'\"> </po-icon>\n      </button>\n    }\n\n    @if (showSearchLocateControls) {\n      <div class=\"po-search-locate-controls\">\n        <div class=\"po-search-divider\"></div>\n        <button\n          name=\"btnArrowUp\"\n          class=\"po-search-button\"\n          [ariaLabel]=\"literals.next\"\n          [disabled]=\"disabled || !locateSummary?.total\"\n          (click)=\"locateNext.emit()\"\n        >\n          <po-icon p-icon=\"ICON_ARROW_DOWN\"> </po-icon>\n        </button>\n\n        <button\n          name=\"btnArrowDown\"\n          class=\"po-search-button\"\n          [ariaLabel]=\"literals.previous\"\n          [disabled]=\"disabled || !locateSummary?.total\"\n          (click)=\"locatePrevious.emit()\"\n        >\n          <po-icon p-icon=\"ICON_ARROW_UP\"> </po-icon>\n        </button>\n      </div>\n    }\n  </div>\n</div>\n\n@if (type !== 'locate') {\n  <div #poListboxContainerElement class=\"po-search-listbox-container\" [hidden]=\"!listboxOpen\">\n    <po-listbox\n      #poListbox\n      #poListboxElement\n      p-type=\"option\"\n      [p-items]=\"listboxFilteredItems\"\n      (p-selectcombo-item)=\"onListboxClick($event, $event.event)\"\n      [p-visible]=\"listboxOpen\"\n      [p-filter-mode]=\"filterType\"\n      [p-should-mark-letter]=\"shouldMarkLetters\"\n      [p-filtering]=\"isFiltering\"\n      [p-search-value]=\"getInputValue()\"\n      [p-size]=\"size\"\n      (p-close)=\"onCloseListbox()\"\n      [p-literals]=\"literals\"\n      [p-separator]=\"showSeparator\"\n      [p-keys-label]=\"keysLabel\"\n      [p-footer-action-listbox]=\"showFooterActionListbox\"\n      (p-footer-action-listbox-event)=\"handlerFooterActionListbox()\"\n      [p-placeholder-listbox]=\"placeholderListbox\"\n    ></po-listbox>\n  </div>\n}\n","import { DecimalPipe } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { getDefaultSizeFn, isTypeof, validateSizeFn, PoUtils } from '../../../utils/util';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { PoTableDetailColumn } from './po-table-detail-column.interface';\nimport { PoTableDetail } from './po-table-detail.interface';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente responsável por apresentar o detalhe de cada linha da tabela.\n */\n@Component({\n  selector: 'po-table-detail',\n  templateUrl: './po-table-detail.component.html',\n  standalone: false\n})\nexport class PoTableDetailComponent {\n  private _componentsSize?: string = undefined;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos componentes de formulário no table:\n   * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n   * - `medium`: aplica a medida medium de cada componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  @Input('p-components-size') set componentsSize(value: string) {\n    this._componentsSize = validateSizeFn(value, PoFieldSize);\n  }\n\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * Lista de itens do _detail_ da tabela.\n   */\n  @Input('p-items') items: Array<any>;\n\n  /**\n   * Linha do registro pai correspondente ao item de detalhe selecionado. Utilizado para gerenciar o estado de seleção do elemento pai,\n   * permitindo que o mesmo seja atualizado para refletir a seleção de todos os filhos ou estado indeterminado.\n   */\n  @Input('p-parent-row') parentRow: PoTableDetail;\n\n  /**\n   * Define se a tabela possui a opção de `selectable` habilitada.\n   */\n  @Input('p-selectable') isSelectable?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Ação executada ao selecionar ou desmarcar a seleção de uma linha de detalhe do `po-table`.\n   */\n  @Output('p-select-row') selectRow: EventEmitter<any> = new EventEmitter<any>();\n\n  private _detail: PoTableDetail;\n\n  /**\n   * Configuração da linha de detalhes.\n   */\n  @Input('p-detail') set detail(value: PoTableDetail) {\n    this._detail = this.returnPoTableDetailObject(value);\n  }\n\n  get detail() {\n    return this._detail;\n  }\n\n  constructor(private readonly decimalPipe: DecimalPipe) {}\n\n  get detailColumns(): Array<PoTableDetailColumn> {\n    return this.detail?.columns || [];\n  }\n\n  get typeHeaderInline(): boolean {\n    return (this.detail && !this.detail['typeHeader']) || this.detail['typeHeader'] === 'inline';\n  }\n\n  get typeHeaderTop(): boolean {\n    return this.detail && this.detail['typeHeader'] === 'top';\n  }\n\n  formatNumberDetail(value: any, format: string) {\n    if (!format) {\n      return value;\n    }\n\n    return this.decimalPipe.transform(value, format);\n  }\n\n  getColumnTitleLabel(detail: PoTableDetailColumn) {\n    return detail.label || PoUtils.capitalizeFirstLetter(detail.property);\n  }\n\n  getDetailData(item: any, detail: PoTableDetailColumn) {\n    const arrayProperty = detail.property.split('.');\n    if (arrayProperty.length > 1) {\n      const nestedProperties = arrayProperty;\n      let value: any = item;\n      for (const property of nestedProperties) {\n        value = value[property] || value[property] === 0 ? value[property] : '';\n      }\n      return value;\n    } else {\n      return item[detail.property];\n    }\n  }\n\n  onSelectRow(item) {\n    item.$selected = !item.$selected;\n    this.selectRow.emit({ item: item, parentRow: this.parentRow });\n  }\n\n  private returnPoTableDetailObject(value: any) {\n    if (value && isTypeof(value, 'object')) {\n      if (value.columns) {\n        value.columns.forEach(column => (column.property = column.property || column.column));\n      }\n\n      if (Array.isArray(value)) {\n        return { columns: value };\n      }\n\n      if (value.columns) {\n        return value;\n      }\n    }\n  }\n}\n","<table class=\"po-table-master-detail\">\n  @if (typeHeaderTop) {\n    <thead>\n      <tr>\n        @if (isSelectable) {\n          <th class=\"po-table-header po-table-column-selectable\"></th>\n        }\n        <th class=\"po-table-header po-table-header-column po-table-header-master-detail\"></th>\n        @for (detail of detail.columns; track detail) {\n          <th class=\"po-table-header po-table-header-ellipsis\">\n            <div\n              class=\"po-table-header-flex\"\n              [class.po-table-header-flex-right]=\"detail.type === 'currency' || detail.type === 'number'\"\n            >\n              {{ getColumnTitleLabel(detail) }}\n            </div>\n          </th>\n        }\n      </tr>\n    </thead>\n  }\n  <tbody>\n    @for (item of items; track item) {\n      <tr class=\"po-table-detail-row\" [class.po-table-row-active]=\"item.$selected && isSelectable\">\n        @if (isSelectable) {\n          <td class=\"po-table-column-master-detail-space-checkbox\"></td>\n          <td class=\"po-table-column po-table-column-selectable\">\n            <po-checkbox\n              name=\"checkbox\"\n              (p-change)=\"onSelectRow(item)\"\n              [p-checkboxValue]=\"item.$selected\"\n              [p-size]=\"componentsSize\"\n            ></po-checkbox>\n          </td>\n        } @else {\n          <td class=\"po-table-column-master-detail-space\"></td>\n        }\n        @for (detail of detailColumns; track detail) {\n          <td\n            class=\"po-table-column-master-detail po-table-master-detail-label\"\n            (click)=\"isSelectable ? onSelectRow(item) : 'javascript:;'\"\n            [class.po-table-column-right]=\"typeHeaderTop && (detail.type === 'currency' || detail.type === 'number')\"\n          >\n            @if (typeHeaderInline) {\n              <strong> {{ getColumnTitleLabel(detail) }}: </strong>\n            }\n            @switch (detail.type) {\n              @case ('currency') {\n                <span>{{ getDetailData(item, detail) | currency: detail.format : 'symbol' : '1.2-2' }}</span>\n              }\n              @case ('date') {\n                <span>{{ getDetailData(item, detail) | date: detail.format || 'dd/MM/yyyy' }}</span>\n              }\n              @case ('time') {\n                <span>{{ getDetailData(item, detail) | po_time: detail.format || 'HH:mm:ss.ffffff' }}</span>\n              }\n              @case ('dateTime') {\n                <span>\n                  {{ getDetailData(item, detail) | date: detail.format || 'dd/MM/yyyy HH:mm:ss' }}\n                </span>\n              }\n              @case ('number') {\n                <span>{{ formatNumberDetail(getDetailData(item, detail), detail.format) }}</span>\n              }\n              @default {\n                <span>{{ getDetailData(item, detail) }}</span>\n              }\n            }\n          </td>\n        }\n      </tr>\n    }\n  </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { PoColorPaletteService } from './../../../services/po-color-palette/po-color-palette.service';\nimport { PoTableSubtitleColumn } from './../po-table-subtitle-footer/po-table-subtitle-column.interface';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente para a criação da representação da legenda, em formato de círculo.\n */\n@Component({\n  selector: 'po-table-subtitle-circle',\n  templateUrl: './po-table-subtitle-circle.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoTableSubtitleCircleComponent {\n  /** Esconde a tooltip. */\n  @Input('p-hide-title')\n  hideTitle: boolean = false;\n\n  private _subtitle: PoTableSubtitleColumn;\n\n  /** Objeto com os dados da legenda. */\n  @Input('p-subtitle') set subtitle(subtitle: PoTableSubtitleColumn) {\n    if (subtitle) {\n      subtitle.color = this.poColorPaletteService.getColor(subtitle);\n    }\n    this._subtitle = subtitle;\n  }\n  get subtitle(): PoTableSubtitleColumn {\n    return this._subtitle;\n  }\n\n  constructor(private readonly poColorPaletteService: PoColorPaletteService) {}\n}\n","<span [title]=\"hideTitle ? '' : subtitle?.label\" class=\"po-table-subtitle-circle po-{{ subtitle?.color }}\">\n  {{ subtitle?.content }}\n</span>\n","import { Component, Input } from '@angular/core';\n\nimport { PoTableSubtitleColumn } from '../po-table-subtitle-footer/po-table-subtitle-column.interface';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente para a criação de um botão e modal para visualização de todas as legendas.\n */\n@Component({\n  selector: 'po-table-show-subtitle',\n  templateUrl: './po-table-show-subtitle.component.html',\n  standalone: false\n})\nexport class PoTableShowSubtitleComponent {\n  /** Objeto com os dados da legenda. */\n  @Input('p-subtitles') subtitles: Array<PoTableSubtitleColumn>;\n\n  /** Propriedade que recebe as literais definidas no `po-table`. */\n  @Input('p-literals') literals;\n\n  /** Define o tamanho dos elementos que possuem `p-size` dentro do componente. */\n  @Input('p-components-size') componentsSize: string;\n}\n","<div class=\"po-table-footer-show-subtitle\" (click)=\"modal.open()\">\n  <div class=\"po-table-footer-show-subtitle-container\">\n    <span class=\"po-table-show-subtitle\">{{ literals.seeCompleteSubtitle }}</span>\n  </div>\n</div>\n\n<po-modal #modal p-size=\"sm\" [p-title]=\"literals.completeSubtitle\" [p-components-size]=\"componentsSize\">\n  @for (subtitle of subtitles; track subtitle) {\n    <div class=\"po-table-subtitle-footer-modal po-row\">\n      <po-table-subtitle-circle p-hide-title=\"true\" [p-subtitle]=\"subtitle\"> </po-table-subtitle-circle>\n      <span class=\"po-table-subtitle-text\">{{ subtitle.label }}</span>\n    </div>\n  }\n</po-modal>\n","import { AfterViewInit, Component, DoCheck, ElementRef, Input, OnDestroy, Renderer2 } from '@angular/core';\n\nimport { PoTableSubtitleColumn } from './po-table-subtitle-column.interface';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente para a criação de um conjunto de legendas.\n */\n@Component({\n  selector: 'po-table-subtitle-footer',\n  templateUrl: './po-table-subtitle-footer.component.html',\n  standalone: false\n})\nexport class PoTableSubtitleFooterComponent implements AfterViewInit, DoCheck, OnDestroy {\n  /** Define o tamanho dos elementos que possuem `p-size` dentro do componente. */\n  @Input('p-components-size') componentsSize: string;\n\n  /** Propriedade que recebe as literais definidas no `po-table`. */\n  @Input('p-literals') literals;\n\n  /** Propriedade que recebe as legendas definidas no `PoTableSubtitleCircleComponent`. */\n  @Input('p-subtitles') subtitles: Array<PoTableSubtitleColumn>;\n\n  showSubtitle: boolean;\n\n  protected resizeListener: () => void;\n\n  private isVisible: boolean;\n  private timeoutResize;\n\n  constructor(\n    private readonly element: ElementRef,\n    public renderer: Renderer2\n  ) {}\n\n  ngAfterViewInit() {\n    this.initializeResizeListener();\n    this.debounceResize();\n  }\n\n  ngDoCheck() {\n    if (!this.isVisible && this.getContainerSize() > 0) {\n      this.toggleShowCompleteSubtitle();\n      this.isVisible = true;\n    }\n  }\n\n  ngOnDestroy() {\n    this.removeResizeListener();\n  }\n\n  private debounceResize() {\n    clearTimeout(this.timeoutResize);\n    this.timeoutResize = setTimeout(() => {\n      this.toggleShowCompleteSubtitle();\n    });\n  }\n\n  private getContainerSize() {\n    return this.element.nativeElement.querySelector('.po-table-subtitle-footer-container').offsetWidth;\n  }\n\n  private getItemsSize() {\n    const items = this.element.nativeElement.querySelectorAll('.po-table-subtitle-footer');\n\n    return Array.from(items)\n      .map(item => item['offsetWidth'])\n      .reduce((a, b) => a + b, 16);\n  }\n\n  private initializeResizeListener() {\n    this.resizeListener = this.renderer.listen('window', 'resize', (event: MouseEvent) => {\n      this.debounceResize();\n    });\n  }\n\n  private removeResizeListener() {\n    this.resizeListener();\n  }\n\n  private toggleShowCompleteSubtitle() {\n    const containerSize = this.getContainerSize();\n    const itemsSize = this.getItemsSize();\n\n    this.showSubtitle = itemsSize > containerSize;\n  }\n}\n","<div class=\"po-table-subtitle-footer-container\">\n  @for (subtitle of subtitles; track subtitle) {\n    <div class=\"po-table-subtitle-footer\">\n      <po-table-subtitle-circle p-hide-title=\"true\" [p-subtitle]=\"subtitle\"> </po-table-subtitle-circle>\n      <span class=\"po-table-subtitle-text\">{{ subtitle.label }}</span>\n    </div>\n  }\n  @if (showSubtitle) {\n    <po-table-show-subtitle [p-components-size]=\"componentsSize\" [p-literals]=\"literals\" [p-subtitles]=\"subtitles\">\n    </po-table-show-subtitle>\n  }\n</div>\n","import { AfterViewInit, Directive, ElementRef, Input, Renderer2, OnChanges, SimpleChanges } from '@angular/core';\n\n@Directive({\n  selector: '[pFrozenColumn]',\n  host: {\n    class: 'p-element',\n    '[class.po-frozen-column]': 'frozen'\n  },\n  standalone: false\n})\nexport class PoTableColumnFrozenDirective implements AfterViewInit, OnChanges {\n  _frozen: boolean = true;\n\n  get frozen(): boolean {\n    return this._frozen;\n  }\n\n  @Input('pFrozenColumn') set frozen(val: boolean) {\n    this._frozen = val;\n\n    if (!val) {\n      this.renderer.removeClass(this.el.nativeElement, 'po-table-column-fixed');\n    } else {\n      this.updateStickyPosition();\n    }\n  }\n\n  @Input() alignFrozen: string = 'left';\n\n  constructor(\n    private readonly el: ElementRef,\n    private readonly renderer: Renderer2\n  ) {}\n\n  ngAfterViewInit() {\n    setTimeout(() => {\n      this.updateStickyPosition();\n    }, 300);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.frozen.previousValue && !changes.frozen.currentValue) {\n      setTimeout(() => {\n        this.resizeColumns();\n      }, 100);\n    }\n  }\n\n  /* istanbul ignore next */\n  updateStickyPosition() {\n    if (this._frozen) {\n      if (this.alignFrozen === 'right') {\n        let right = 0;\n        const next = this.el.nativeElement.nextElementSibling;\n\n        if (next) {\n          right = this.getOuterWidth(next) + (parseFloat(next.style.right) || 0);\n        }\n        this.el.nativeElement.style.right = right + 'px';\n      } else {\n        let left = 0;\n        const prev = this.el.nativeElement.previousElementSibling;\n        if (\n          prev &&\n          !prev.classList.contains('po-table-column-selectable') &&\n          !prev.classList.contains('po-table-column-actions') &&\n          !prev.classList.contains('po-table-header-single-action') &&\n          !prev.classList.contains('po-table-column-single-action') &&\n          !prev.classList.contains('po-table-column-detail-toggle') &&\n          !prev.classList.contains('po-table-header-master-detail')\n        ) {\n          left = this.getOuterWidth(prev) + (parseFloat(prev.style.left) || 0);\n        }\n        this.el.nativeElement.style.left = left - 1 + 'px';\n        this.renderer.addClass(this.el.nativeElement, 'po-table-column-fixed');\n      }\n\n      const filterRow = this.el.nativeElement.parentElement.nextElementSibling;\n\n      if (filterRow) {\n        const index = this.index(this.el.nativeElement);\n        if (filterRow.children && filterRow.children[index]) {\n          filterRow.children[index].style.left = this.el.nativeElement.style.left;\n          filterRow.children[index].style.right = this.el.nativeElement.style.right;\n        }\n      }\n    }\n  }\n\n  /* istanbul ignore next */\n  resizeColumns() {\n    const currentElement = this.el.nativeElement;\n    const prevElements = [];\n    let prevElement = currentElement.previousElementSibling;\n\n    // Encontra todos os elementos anteriores com a classe 'po-table-column-fixed'\n    while (prevElement && prevElement.classList.contains('po-table-column-fixed')) {\n      prevElements.push(prevElement);\n      prevElement = prevElement.previousElementSibling;\n    }\n\n    // Verifica se há elementos suficientes para ajustar os widths\n    if (prevElements.length >= 2) {\n      let leftAccumulator = 0;\n\n      // Calcula o novo 'left' para cada elemento anterior e aplica\n      for (let i = prevElements.length - 1; i >= 0; i--) {\n        const prevWidth = this.getOuterWidth(prevElements[i], true);\n        prevElements[i].style.left = leftAccumulator - 1 + 'px';\n        leftAccumulator += prevWidth;\n      }\n    }\n  }\n\n  getOuterWidth(el, margin?) {\n    let width = el.offsetWidth;\n\n    if (margin) {\n      const style = getComputedStyle(el);\n      width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n    }\n\n    return width - 1;\n  }\n\n  index(element: any): number {\n    const children = element.parentNode.childNodes;\n    let num = 0;\n    for (let i = 0; i < children.length; i++) {\n      if (children[i] === element) {\n        return num;\n      }\n      if (children[i].nodeType === 1) {\n        num++;\n      }\n    }\n    return -1;\n  }\n}\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\n\nimport { DecimalPipe } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  DoCheck,\n  ElementRef,\n  IterableDiffers,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  Renderer2,\n  TemplateRef,\n  ViewChild,\n  ViewChildren,\n  inject\n} from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { PoDateService } from '../../services/po-date/po-date.service';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { PoNotificationService } from '../../services/po-notification/po-notification.service';\nimport { getDefaultSizeFn, PO_TABLE_ROW_HEIGHT_BY_SPACING, PoUtils, uuid } from '../../utils/util';\nimport { PoModalAction, PoModalComponent } from '../po-modal';\nimport { PoPopupComponent } from '../po-popup/po-popup.component';\nimport { PoTableColumnLabel } from './po-table-column-label/po-table-column-label.interface';\n\nimport { PoTableRowTemplateArrowDirection } from './enums/po-table-row-template-arrow-direction.enum';\nimport { PoTableAction } from './interfaces/po-table-action.interface';\nimport { PoTableColumn } from './interfaces/po-table-column.interface';\nimport { PoTableBaseComponent, QueryParamsType } from './po-table-base.component';\nimport { PoTableCellTemplateDirective } from './po-table-cell-template/po-table-cell-template.directive';\nimport { PoTableColumnTemplateDirective } from './po-table-column-template/po-table-column-template.directive';\nimport { PoTableRowTemplateDirective } from './po-table-row-template/po-table-row-template.directive';\nimport { PoTableSubtitleColumn } from './po-table-subtitle-footer/po-table-subtitle-column.interface';\nimport { PoTableService } from './services/po-table.service';\nimport { PoTableColumnSpacing } from './enums/po-table-spacing.enum';\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\n\n/**\n * @docsExtends PoTableBaseComponent\n *\n * @example\n *\n * <example name=\"po-table-basic\" title=\"PO Table Basic\">\n *  <file name=\"sample-po-table-basic/sample-po-table-basic.component.ts\"> </file>\n *  <file name=\"sample-po-table-basic/sample-po-table-basic.component.html\"> </file>\n * </example>\n *\n * <example name=\"po-table-labs\" title=\"PO Table Labs\">\n *  <file name=\"sample-po-table-labs/sample-po-table-labs.component.ts\"> </file>\n *  <file name=\"sample-po-table-labs/sample-po-table-labs.component.html\"> </file>\n *  <file name=\"sample-po-table-labs/sample-po-table-labs.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-table-with-api\" title=\"PO Table using API\">\n *  <file name=\"sample-po-table-with-api/sample-po-table-with-api.component.ts\"> </file>\n *  <file name=\"sample-po-table-with-api/sample-po-table-with-api.component.html\"> </file>\n * </example>\n *\n * <example name=\"po-table-transport\" title=\"PO Table - Transport\">\n *  <file name=\"sample-po-table-transport/sample-po-table-transport.component.ts\"> </file>\n *  <file name=\"sample-po-table-transport/sample-po-table-transport.component.html\"> </file>\n *  <file name=\"sample-po-table-transport/sample-po-table-transport.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-table-airfare\" title=\"PO Table - Airfare\">\n *  <file name=\"sample-po-table-airfare/sample-po-table-airfare.component.ts\"> </file>\n *  <file name=\"sample-po-table-airfare/sample-po-table-airfare.component.html\"> </file>\n *  <file name=\"sample-po-table-airfare/sample-po-table-airfare.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-table-components\" title=\"PO Table - Po Field Components\">\n *  <file name=\"sample-po-table-components/sample-po-table-components.component.ts\"> </file>\n *  <file name=\"sample-po-table-components/sample-po-table-components.enum.ts\"> </file>\n *  <file name=\"sample-po-table-components/sample-po-table-components.component.html\"> </file>\n *  <file name=\"sample-po-table-components/sample-po-table-components.service.ts\"> </file>\n *  <file name=\"sample-po-table-components/sample-po-table-components.component.css\"> </file>\n * </example>\n *\n * <example name=\"po-table-heroes\" title=\"PO Table - Heroes\">\n *  <file name=\"sample-po-table-heroes/sample-po-table-heroes.component.ts\"> </file>\n *  <file name=\"sample-po-table-heroes/sample-po-table-heroes.component.html\"> </file>\n *  <file name=\"sample-po-table-heroes/sample-po-table-heroes.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-table-draggable\" title=\"PO Table Drag and Drop\">\n *  <file name=\"sample-po-table-draggable/sample-po-table-draggable.component.html\"> </file>\n *  <file name=\"sample-po-table-draggable/sample-po-table-draggable.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-table',\n  templateUrl: './po-table.component.html',\n  providers: [PoDateService, PoTableService],\n  standalone: false\n})\nexport class PoTableComponent extends PoTableBaseComponent implements AfterViewInit, DoCheck, OnDestroy, OnInit {\n  @ContentChild(PoTableRowTemplateDirective, { static: true }) tableRowTemplate: PoTableRowTemplateDirective;\n  @ContentChild(PoTableCellTemplateDirective) tableCellTemplate: PoTableCellTemplateDirective;\n\n  @ContentChildren(PoTableColumnTemplateDirective) tableColumnTemplates: QueryList<PoTableColumnTemplateDirective>;\n\n  @ViewChild('noColumnsHeader', { read: ElementRef }) noColumnsHeader;\n  @ViewChild('popup') poPopupComponent: PoPopupComponent;\n  @ViewChild(PoModalComponent, { static: true }) modalDelete: PoModalComponent;\n  @ViewChild('tableFooter', { read: ElementRef, static: false }) tableFooterElement;\n  @ViewChild('tableWrapper', { read: ElementRef, static: false }) tableWrapperElement;\n\n  @ViewChild('tableTemplate', { read: ElementRef, static: false }) tableTemplate;\n  @ViewChild('tableVirtualScroll', { read: ElementRef, static: false }) tableVirtualScroll;\n  @ViewChild('tableScrollable', { read: ElementRef, static: false }) tableScrollable;\n\n  @ViewChild('columnManager', { read: ElementRef, static: false }) columnManager;\n  @ViewChild('columnBatchActions', { read: ElementRef, static: false }) columnBatchActions;\n  @ViewChild('columnActionLeft', { read: ElementRef, static: false }) columnActionLeft;\n\n  @ViewChildren('actionsIconElement', { read: ElementRef }) actionsIconElement: QueryList<any>;\n  @ViewChildren('actionsElement', { read: ElementRef }) actionsElement: QueryList<any>;\n  @ViewChild('filterInput') filterInput: ElementRef;\n  @ViewChild('poSearchInput', { read: ElementRef, static: true }) poSearchInput: ElementRef;\n  @ViewChild(CdkVirtualScrollViewport, { static: false }) public viewPort: CdkVirtualScrollViewport;\n\n  poNotification = inject(PoNotificationService);\n\n  heightTableContainer: number;\n  heightTableVirtual: number;\n  popupTarget;\n  tableOpacity: number = 0;\n  tooltipText: string;\n  itemSize: number;\n  lastVisibleColumnsSelected: Array<PoTableColumn>;\n  tagColor: string;\n  idRadio: string;\n  inputFieldValue = '';\n  JSON: JSON;\n  newOrderColumns: Array<PoTableColumn>;\n  sizeLoading: string = 'sm';\n  headerWidth: number;\n\n  close: PoModalAction = {\n    action: () => {\n      this.modalDelete.close();\n    },\n    label: this.literals.cancel,\n    danger: true\n  };\n\n  confirm: PoModalAction = {\n    action: () => {\n      this.deleteItems();\n    },\n    label: this.literals.delete\n  };\n\n  private _columnManagerTarget: ElementRef;\n  private _columnManagerTargetFixed: ElementRef;\n  private readonly differ;\n  private footerHeight;\n  private timeoutResize;\n  private visibleElement = false;\n  private scrollEvent$: Observable<any>;\n  private subscriptionScrollEvent: Subscription;\n  private readonly subscriptionService: Subscription = new Subscription();\n\n  private readonly clickListener: () => void;\n  private readonly resizeListener: () => void;\n\n  @ViewChild('columnManagerTarget') set columnManagerTarget(value: ElementRef) {\n    this._columnManagerTarget = value;\n    this.changeDetector.detectChanges();\n  }\n\n  get columnManagerTarget() {\n    return this._columnManagerTarget;\n  }\n\n  @ViewChild('columnManagerTargetFixed') set columnManagerTargetFixed(value: ElementRef) {\n    this._columnManagerTargetFixed = value;\n    this.changeDetector.detectChanges();\n  }\n\n  get columnManagerTargetFixed() {\n    return this._columnManagerTargetFixed;\n  }\n\n  /* eslint-disable max-params */\n\n  constructor(\n    poDate: PoDateService,\n    differs: IterableDiffers,\n    renderer: Renderer2,\n    poLanguageService: PoLanguageService,\n    private readonly changeDetector: ChangeDetectorRef,\n    private readonly decimalPipe: DecimalPipe,\n    private readonly defaultService: PoTableService\n  ) {\n    super(poDate, poLanguageService, defaultService);\n    this.JSON = JSON;\n    this.differ = differs.find([]).create(null);\n\n    // TODO: #5550 ao remover este listener, no portal, quando as colunas forem fixas não sofrem\n    // alteração de largura, pois o ngDoCheck não é executado.\n    this.clickListener = renderer.listen('document', 'click', () => {});\n\n    this.resizeListener = renderer.listen('window', 'resize', (event: any) => {\n      this.debounceResize();\n    });\n  }\n  /* eslint-enable max-params */\n\n  get hasRowTemplateWithArrowDirectionRight() {\n    return this.tableRowTemplate?.tableRowTemplateArrowDirection === PoTableRowTemplateArrowDirection.Right;\n  }\n\n  get columnCount() {\n    const columnCount =\n      this.mainColumns.length +\n      (this.hasItems && this.actions.length > 0 ? 1 : 0) +\n      (this.hasItems && this.selectable ? 1 : 0) +\n      (!this.hideDetail && this.columnMasterDetail !== undefined ? 1 : 0) +\n      this.countExtraColumns();\n\n    return columnCount || 1;\n  }\n\n  get columnCountForMasterDetail() {\n    // caso tiver ações será utilizado a sua coluna para exibir o columnManager\n    return this.mainColumns.length + 1 + (this.actions.length > 0 ? 1 : 0) + (this.selectable ? 1 : 0);\n  }\n\n  get detailHideSelect() {\n    const masterDetail = this.columnMasterDetail;\n    return masterDetail && masterDetail.detail ? masterDetail.detail.hideSelect : false;\n  }\n\n  get hasVisibleActions() {\n    return !!this.visibleActions.length;\n  }\n\n  get firstAction(): PoTableAction {\n    return this.visibleActions && this.visibleActions[0];\n  }\n\n  get hasFooter(): boolean {\n    return this.hasItems && this.hasVisibleSubtitleColumns;\n  }\n\n  get hasMasterDetailColumn(): boolean {\n    return (\n      this.hasMainColumns && this.hasItems && !this.hideDetail && !!(this.columnMasterDetail || this.hasRowTemplate)\n    );\n  }\n\n  get hasRowTemplate(): boolean {\n    return !!this.tableRowTemplate;\n  }\n\n  get hasSelectableColumn(): boolean {\n    return this.selectable && this.hasItems && this.hasMainColumns;\n  }\n\n  get hasValidColumns() {\n    return !!this.validColumns.length;\n  }\n\n  get hasVisibleSubtitleColumns() {\n    return this.subtitleColumns.some(column => column.visible !== false);\n  }\n\n  get isSingleAction() {\n    return this.visibleActions.length === 1;\n  }\n\n  get isDraggable(): boolean {\n    return this.draggable;\n  }\n\n  public get inverseOfTranslation(): string {\n    if (!this.viewPort || !this.viewPort['_renderedContentOffset']) {\n      return '-0px';\n    }\n\n    const offset = this.viewPort['_renderedContentOffset'];\n\n    return `-${offset}px`;\n  }\n\n  ngOnInit() {\n    this.idRadio = `po-radio-${uuid()}`;\n  }\n\n  changeHeaderWidth() {\n    if (this.noColumnsHeader) {\n      this.headerWidth = this.noColumnsHeader?.nativeElement.offsetWidth;\n    }\n    this.changeDetector.detectChanges();\n  }\n\n  ngAfterViewInit() {\n    this.initialized = true;\n    this.changeHeaderWidth();\n    this.changeSizeLoading();\n    this.applyFixedColumns();\n  }\n\n  showMoreInfiniteScroll({ target }): void {\n    const scrollPosition = target.offsetHeight + target.scrollTop;\n    if (!this.showMoreDisabled && scrollPosition >= target.scrollHeight * (this.infiniteScrollDistance / 110)) {\n      this.onShowMore();\n    }\n  }\n\n  ngDoCheck() {\n    this.applyFixedColumns();\n    this.checkChangesItems();\n    this.verifyCalculateHeightTableContainer();\n\n    // Permite que os cabeçalhos sejam calculados na primeira vez que o componente torna-se visível,\n    // evitando com isso, problemas com Tabs ou Divs que iniciem escondidas.\n    if (this.tableWrapperElement?.nativeElement.offsetWidth && !this.visibleElement && this.initialized) {\n      this.debounceResize();\n      this.checkInfiniteScroll();\n      this.visibleElement = true;\n    }\n  }\n\n  ngOnDestroy() {\n    this.removeListeners();\n    this.subscriptionService?.unsubscribe();\n  }\n\n  /**\n   * Método responsável por realizar busca no serviço de dados podendo informar filtros e com o retorno, atualiza a tabela.\n   *\n   * Caso não seja informado parâmetro, nada será adicionado ao GET, conforme abaixo:\n   * ```\n   * url + ?page=1&pageSize=10\n   * ```\n   * > Obs: os parâmetros `page` e `pageSize` sempre serão chamados independente de ser enviados outros parâmetros.\n   *\n   * Caso sejam informados os parâmetros `{ name: 'JOHN', age: '23' }`, todos serão adicionados ao GET, conforme abaixo:\n   * ```\n   * url + ?page=1&pageSize=10&name=JOHN&age=23\n   * ```\n   *\n   * @param { { key: value } } queryParams Formato do objeto a ser enviado.\n   * > Pode ser utilizada qualquer string como key, e qualquer string ou number como value.\n   */\n  applyFilters(queryParams?: { [key: string]: QueryParamsType }) {\n    this.page = 1;\n    this.initializeData(queryParams);\n  }\n\n  /**\n   * Verifica se columns possuem a propriedade width.\n   */\n  applyFixedColumns(): boolean {\n    return !this.columns.some(column => !column.width);\n  }\n\n  /**\n   * Método que colapsa uma linha com detalhe quando executada.\n   *\n   * @param { number } rowIndex Índice da linha que será colapsada.\n   * > Ao reordenar os dados da tabela, o valor contido neste índice será alterado conforme a ordenação.\n   */\n  collapse(rowIndex: number) {\n    this.setShowDetail(rowIndex, false);\n  }\n\n  /**\n   * Método que expande uma linha com detalhe quando executada.\n   *\n   * @param { number } rowIndex Índice da linha que será expandida.\n   * > Ao reordenar os dados da tabela, o valor contido neste índice será alterado conforme a ordenação.\n   */\n  expand(rowIndex: number) {\n    this.setShowDetail(rowIndex, true);\n  }\n\n  /**\n   * Retorna as linhas do `po-table` que estão selecionadas.\n   */\n  getSelectedRows() {\n    return this.items.filter(item => item.$selected);\n  }\n\n  /**\n   * Retorna as linhas do `po-table` que não estão selecionadas.\n   */\n  getUnselectedRows() {\n    return this.items.filter(item => !item.$selected);\n  }\n\n  /**\n   * Desmarca as linhas que estão selecionadas.\n   */\n  unselectRows() {\n    const columnDetail = this.nameColumnDetail;\n\n    this.items.forEach(item => {\n      const detailItems = columnDetail ? item[columnDetail] : null;\n\n      if (Array.isArray(detailItems)) {\n        detailItems.forEach(detailItem => {\n          detailItem.$selected = false;\n        });\n      }\n\n      item.$selected = false;\n    });\n\n    this.selectAll = false;\n  }\n\n  checkDisabled(row, column: PoTableColumn) {\n    return column.disabled ? column.disabled(row) : false;\n  }\n\n  containsMasterDetail(row) {\n    return row[this.nameColumnDetail] && row[this.nameColumnDetail].length;\n  }\n\n  executeTableAction(row: any, tableAction: any) {\n    if (!row.disabled && !this.validateTableAction(row, tableAction)) {\n      tableAction.action(row);\n      this.toggleRowAction(row);\n    }\n  }\n\n  /**\n   * Desmarca uma linha que está selecionada.\n   */\n  unselectRowItem(itemfn: { [key: string]: any } | ((item) => boolean)) {\n    this.toggleSelect(itemfn, false);\n\n    if (this.items.every(item => !item.$selected)) {\n      this.selectAll = false;\n    } else {\n      this.selectAll = null;\n    }\n  }\n\n  /**\n   * Seleciona uma linha do 'po-table'.\n   */\n  selectRowItem(itemfn: { [key: string]: any } | ((item) => boolean)) {\n    this.toggleSelect(itemfn, true);\n\n    if (this.items.every(item => item.$selected)) {\n      this.selectAll = true;\n    } else {\n      this.selectAll = null;\n    }\n  }\n\n  /**\n   * Método responsável pela exclusão de itens em lote.\n   * Caso a tabela esteja executando a propriedade `p-service-delete`, será necessário excluir 1 item por vez.\n   *\n   * Ao utilizar `p-service-delete` mas sem a propriedade `p-service-api`, será responsabilidade do usuário o tratamento\n   * após a requisição DELETE ser executada.\n   *\n   * Caso a tabela utilize `p-height` e esteja sem serviço, é necessário a reatribuição dos itens utilizando o evento `(p-delete-items)`, por exemplo:\n   *\n   * ```\n   *<po-table\n   *  (p-delete-items)=\"items = $event\"\n   * >\n   *</po-table>\n   * ```\n   */\n  deleteItems() {\n    const newItems = [...this.items];\n    const newItemsFiltered = [...newItems].filter(item => !item.$selected);\n\n    if (!this.serviceDeleteApi) {\n      this.deleteItemsLocal(newItems, newItemsFiltered);\n    } else {\n      this.deleteItemsService(newItemsFiltered);\n    }\n  }\n\n  formatNumber(value: any, format: string) {\n    if (!format) {\n      return value;\n    }\n\n    return this.decimalPipe.transform(value, format);\n  }\n\n  getCellData(row: any, column: PoTableColumn): any {\n    const arrayProperty = column.property.split('.');\n    if (arrayProperty.length > 1) {\n      const nestedProperties = arrayProperty;\n      let value: any = row;\n      for (const property of nestedProperties) {\n        value = value[property] || value[property] === 0 ? value[property] : '';\n      }\n      return value;\n    } else {\n      return row[column.property];\n    }\n  }\n\n  getBooleanLabel(rowValue: any, columnBoolean: PoTableColumn): string {\n    if (rowValue || rowValue === false || rowValue === 0) {\n      rowValue = PoUtils.convertToBoolean(rowValue);\n\n      if (columnBoolean.boolean) {\n        return rowValue ? columnBoolean.boolean.trueLabel || 'Sim' : columnBoolean.boolean.falseLabel || 'Não';\n      } else {\n        return rowValue ? 'Sim' : 'Não';\n      }\n    }\n\n    return rowValue;\n  }\n\n  getColumnIcons(row: any, column: PoTableColumn) {\n    const rowIcons = this.getCellData(row, column);\n\n    if (column.icons) {\n      if (Array.isArray(rowIcons)) {\n        return this.mergeCustomIcons(rowIcons, column.icons);\n      } else {\n        return this.findCustomIcon(rowIcons, column);\n      }\n    }\n\n    return rowIcons;\n  }\n\n  getColumnLabel(row: any, columnLabel: PoTableColumn): PoTableColumnLabel {\n    return columnLabel.labels.find(labelItem => this.getCellData(row, columnLabel) === labelItem.value);\n  }\n\n  getSubtitleColumn(row: any, subtitleColumn: PoTableColumn): PoTableSubtitleColumn {\n    return subtitleColumn.subtitles.find(subtitleItem => this.getCellData(row, subtitleColumn) === subtitleItem.value);\n  }\n\n  isShowMasterDetail(row) {\n    return (\n      !this.hideDetail &&\n      this.nameColumnDetail &&\n      row.$showDetail &&\n      this.containsMasterDetail(row) &&\n      !this.hasRowTemplate\n    );\n  }\n\n  isShowRowTemplate(row, index: number): boolean {\n    if (this.tableRowTemplate && this.tableRowTemplate.poTableRowTemplateShow) {\n      return this.tableRowTemplate.poTableRowTemplateShow(row, index);\n    }\n\n    return true;\n  }\n\n  onClickLink(event, row, column: PoTableColumn) {\n    if (!this.checkDisabled(row, column)) {\n      event.stopPropagation();\n    }\n  }\n\n  onChangeVisibleColumns(columns: Array<string>) {\n    this.changeVisibleColumns.emit(columns);\n  }\n\n  onChangeFixedColumns(columns: Array<string>) {\n    if (!this.hideActionFixedColumns) {\n      this.changeFixedColumns.emit(columns);\n    }\n  }\n\n  onColumnRestoreManager(value: Array<string>) {\n    this.columnRestoreManager.emit(value);\n  }\n\n  onVisibleColumnsChange(columns: Array<PoTableColumn>) {\n    this.columns = columns;\n    this.changeDetector.detectChanges();\n  }\n\n  tooltipMouseEnter(event: any, column?: PoTableColumn, row?: any) {\n    this.tooltipText = undefined;\n\n    if (event.target.offsetWidth < event.target.scrollWidth && event.target.innerText.trim()) {\n      return (this.tooltipText = event.target.innerText);\n    }\n\n    if (column) {\n      this.checkingIfColumnHasTooltip(column, row);\n    }\n  }\n\n  tooltipMouseLeave() {\n    this.tooltipText = undefined;\n  }\n\n  togglePopup(row, targetRef) {\n    this.popupTarget = targetRef;\n    this.changeDetector.detectChanges();\n\n    this.poPopupComponent.toggle(row);\n  }\n\n  trackBy(index: number) {\n    return index;\n  }\n\n  validateTableAction(row: any, tableAction: any) {\n    if (typeof tableAction.disabled === 'function') {\n      return tableAction.disabled(row);\n    } else {\n      return tableAction.disabled;\n    }\n  }\n\n  onOpenColumnManager() {\n    this.lastVisibleColumnsSelected = [...this.columns];\n  }\n\n  onFilteredItemsChange(items: Array<any>): void {\n    if (this.sortedColumn.property) {\n      this.sortArray(this.sortedColumn.property, this.sortedColumn.ascending, items);\n    } else {\n      this.filteredItems = items;\n    }\n  }\n\n  /**\n   * Método que remove um item da tabela.\n   *\n   * @param { number | { key: value } } item Índice da linha ou o item que será removido.\n   * > Ao remover o item, a linha que o representa será excluída da tabela.\n   */\n  removeItem(item: number | { [key: string]: any }) {\n    if (item instanceof Object) {\n      this.items = this.items.filter(filterItem => filterItem !== item);\n    } else if (typeof item === 'number') {\n      const index: number = item;\n      this.items.splice(index, 1);\n    }\n  }\n\n  /**\n   * Método que atualiza um item da tabela.\n   *\n   * @param { number | { key: value } } item Índice da linha ou o item que será atualizado.\n   * @param { { key: value } } updatedItem Item que foi atualizado.\n   * > Ao atualizar o item, a informação será alterada na tabela.\n   */\n  updateItem(item: number | { [key: string]: any }, updatedItem: { [key: string]: any }) {\n    if (typeof item === 'number') {\n      this.items.splice(item, 1, updatedItem);\n    } else {\n      const index = this.items.findIndex(indexItem => indexItem === item);\n      this.items.splice(index, 1, updatedItem);\n    }\n  }\n\n  drop(event: CdkDragDrop<Array<string>>) {\n    if (!this.mainColumns[event.currentIndex].fixed) {\n      moveItemInArray(this.mainColumns, event.previousIndex, event.currentIndex);\n\n      if (this.hideColumnsManager === false) {\n        this.newOrderColumns = this.mainColumns;\n        const detail = this.columns.filter(item => item.property === 'detail')[0];\n\n        if (detail !== undefined) {\n          this.newOrderColumns.push(detail);\n        }\n\n        this.columns.map((item, index) => {\n          if (!item.visible) {\n            this.newOrderColumns.splice(index, 0, item);\n          }\n        });\n        this.columns = this.newOrderColumns;\n\n        this.onVisibleColumnsChange(this.newOrderColumns);\n      }\n    }\n  }\n\n  public getTemplate(column: PoTableColumn): TemplateRef<any> {\n    const template: PoTableColumnTemplateDirective = this.tableColumnTemplates?.find(\n      tableColumnTemplate => tableColumnTemplate.targetProperty === column.property\n    );\n    if (!this.initialized) return null;\n\n    if (template) {\n      return template.templateRef;\n    } else {\n      console.warn(\n        `Não foi possível encontrar o template para a coluna: ${column.property}, por gentileza informe a propriedade [p-property]`\n      );\n      return null;\n    }\n  }\n\n  public getWidthColumnManager() {\n    return this.columnManager?.nativeElement.offsetWidth;\n  }\n\n  public getColumnWidthActionsLeft() {\n    return this.columnActionLeft?.nativeElement.offsetWidth;\n  }\n\n  public hasSomeFixed() {\n    return this.columns.some(item => item.fixed === true);\n  }\n\n  protected calculateHeightTableContainer(height: number) {\n    this.itemSize =\n      PO_TABLE_ROW_HEIGHT_BY_SPACING[this.spacing] ?? PO_TABLE_ROW_HEIGHT_BY_SPACING[PoTableColumnSpacing.Medium];\n    this.heightTableContainer = height ? height - this.getHeightTableFooter() : undefined;\n    this.heightTableVirtual = this.heightTableContainer ? this.heightTableContainer - this.itemSize : undefined;\n    this.setTableOpacity(1);\n    this.changeDetector.markForCheck();\n  }\n\n  protected verifyCalculateHeightTableContainer() {\n    if (this.height && this.verifyChangeHeightInFooter()) {\n      this.footerHeight = this.getHeightTableFooter();\n\n      this.calculateHeightTableContainer(this.height);\n    }\n  }\n\n  protected checkInfiniteScroll(): void {\n    if (this.hasInfiniteScroll()) {\n      let scrollHeight = 0;\n\n      if (this.virtualScroll) {\n        scrollHeight = this.tableVirtualScroll.nativeElement.scrollHeight;\n      } else {\n        scrollHeight = this.tableScrollable.nativeElement.scrollHeight;\n      }\n\n      if (scrollHeight >= this.height) {\n        this.includeInfiniteScroll();\n      } else {\n        this.infiniteScroll = false;\n      }\n    }\n    this.changeDetector.detectChanges();\n  }\n\n  private changesAfterDelete(newItemsFiltered: Array<any>) {\n    this.selectAll = false;\n    this.setSelectedList();\n    this.modalDelete.close();\n    this.poNotification.success(this.literals.deleteSuccessful);\n    this.eventDelete.emit(newItemsFiltered);\n  }\n\n  protected changeSizeLoading() {\n    const tableHeight = this.tableWrapperElement?.nativeElement?.offsetHeight;\n\n    if (tableHeight <= 150 || this.componentsSize === PoFieldSize.Small) {\n      this.sizeLoading = 'sm';\n    } else if (tableHeight > 150 && tableHeight < 260) {\n      this.sizeLoading = 'md';\n    } else {\n      this.sizeLoading = 'lg';\n    }\n\n    this.changeDetector.detectChanges();\n  }\n\n  protected getDefaultSpacing(): PoTableColumnSpacing {\n    return this.componentsSize === PoFieldSize.Small ||\n      getDefaultSizeFn(PoTableColumnSpacing) === PoTableColumnSpacing.Small\n      ? PoTableColumnSpacing.ExtraSmall\n      : PoTableColumnSpacing.Medium;\n  }\n\n  protected reapplySort(): void {\n    const hasData = this.filteredItems && this.filteredItems.length > 0;\n    const hasSortConfig = !!this.sortedColumn?.property;\n\n    if (hasData && hasSortConfig) {\n      this.sortArray(this.sortedColumn.property, this.sortedColumn.ascending);\n    }\n  }\n\n  private checkChangesItems() {\n    const changesItems = this.differ.diff(this.items);\n\n    if (changesItems && this.selectAll) {\n      this.selectAll = null;\n    }\n\n    if (changesItems && !this.hasColumns && this.hasItems) {\n      this.columns = this.getDefaultColumns(this.items[0]);\n    }\n  }\n\n  private checkingIfColumnHasTooltip(column, row) {\n    if (column.type === 'link' && column.tooltip && !this.checkDisabled(row, column)) {\n      return (this.tooltipText = column.tooltip);\n    }\n\n    if (column.type === 'label') {\n      const columnLabel = this.getColumnLabel(row, column);\n      return (this.tooltipText = columnLabel?.tooltip);\n    }\n  }\n\n  private countExtraColumns(): number {\n    let extraColumns = 0;\n\n    if (!this.columnMasterDetail && this.hasItems) {\n      if (\n        (this.hasMasterDetailColumn || this.hasRowTemplate) &&\n        this.hasMainColumns &&\n        !this.hasRowTemplateWithArrowDirectionRight\n      ) {\n        extraColumns++;\n      }\n      if (\n        this.hasRowTemplateWithArrowDirectionRight &&\n        this.hasMainColumns &&\n        (this.hasVisibleActions || this.hideColumnsManager)\n      ) {\n        extraColumns++;\n      }\n    }\n\n    return extraColumns;\n  }\n\n  private debounceResize() {\n    clearTimeout(this.timeoutResize);\n    this.timeoutResize = setTimeout(() => {\n      // show the table\n      this.setTableOpacity(1);\n    });\n  }\n\n  private deleteItemsLocal(newItems: Array<any>, newItemsFiltered: Array<any>) {\n    if (this.height) {\n      this.items = newItemsFiltered;\n    } else {\n      let index = this.items.length - 1;\n      newItems\n        .slice()\n        .reverse()\n        .forEach(item => {\n          if (item.$selected) {\n            this.removeItem(index);\n          }\n          index--;\n        });\n    }\n    this.changesAfterDelete(newItemsFiltered);\n    this.onFilteredItemsChange(newItemsFiltered);\n  }\n\n  private deleteItemsService(newItemsFiltered: Array<any>) {\n    this.subscriptionService.add(\n      this.defaultService.deleteItem(this.paramDeleteApi, this.itemsSelected[0][this.paramDeleteApi]).subscribe({\n        next: value => {\n          if (this.hasService) {\n            const filteredParams = {\n              ...this.paramsFilter,\n              pageSize: newItemsFiltered.length + 1,\n              page: 1\n            };\n            this.loading = true;\n            this.subscriptionService.add(\n              this.defaultService.getFilteredItems(filteredParams).subscribe(items => {\n                this.setTableResponseProperties(items);\n              })\n            );\n          }\n          this.items = newItemsFiltered;\n          this.changesAfterDelete(newItemsFiltered);\n        },\n        error: error => {\n          this.poNotification.error(this.literals.deleteApiError);\n          this.modalDelete.close();\n          this.eventDelete.emit(this.items);\n        }\n      })\n    );\n  }\n\n  private findCustomIcon(rowIcons, column: PoTableColumn) {\n    const customIcon = column.icons.find(icon => rowIcons === icon.value);\n    return customIcon ? [customIcon] : undefined;\n  }\n\n  private getHeightTableFooter() {\n    return this.tableFooterElement ? this.tableFooterElement.nativeElement.offsetHeight : 0;\n  }\n\n  private hasInfiniteScroll(): boolean {\n    let scrollHeight = 0;\n\n    if (this.virtualScroll && this.tableVirtualScroll) {\n      scrollHeight = this.tableVirtualScroll.nativeElement.scrollHeight;\n    }\n    if (!this.virtualScroll && this.tableScrollable) {\n      scrollHeight = this.tableScrollable.nativeElement.scrollHeight;\n    }\n\n    return this.infiniteScroll && this.hasItems && !this.subscriptionScrollEvent && this.height > 0 && scrollHeight > 0;\n  }\n\n  private includeInfiniteScroll(): void {\n    let element: HTMLElement | null = null;\n\n    if (this.virtualScroll) {\n      element = this.tableVirtualScroll?.nativeElement;\n    } else {\n      element = this.tableScrollable.nativeElement.closest('.po-table-container-overflow');\n    }\n\n    if (element) {\n      this.scrollEvent$ = this.defaultService.scrollListener(element);\n      this.subscriptionScrollEvent = this.scrollEvent$.subscribe(event => this.showMoreInfiniteScroll(event));\n    }\n\n    this.changeDetector.detectChanges();\n  }\n\n  private mergeCustomIcons(rowIcons: Array<string>, customIcons: Array<any>) {\n    const mergedIcons = [];\n\n    rowIcons.forEach(columnValue => {\n      const foundCustomIcon = customIcons.find(\n        customIcon => columnValue === customIcon.icon || columnValue === customIcon.value\n      );\n      foundCustomIcon ? mergedIcons.push(foundCustomIcon) : mergedIcons.push(columnValue);\n    });\n\n    return mergedIcons;\n  }\n\n  private removeListeners() {\n    if (this.resizeListener) {\n      this.resizeListener();\n    }\n\n    if (this.clickListener) {\n      this.clickListener();\n    }\n\n    if (this.subscriptionScrollEvent) {\n      this.subscriptionScrollEvent.unsubscribe();\n    }\n  }\n\n  private setTableOpacity(value: number) {\n    this.tableOpacity = value;\n  }\n\n  private verifyChangeHeightInFooter() {\n    return this.footerHeight !== this.getHeightTableFooter();\n  }\n\n  private toggleSelect(compare, selectValue: boolean) {\n    if (typeof compare !== 'function') {\n      this.items.forEach(item => {\n        if (item === compare) {\n          item.$selected = selectValue;\n        }\n      });\n    } else {\n      this.items.forEach(item => {\n        if (compare(item)) {\n          item.$selected = selectValue;\n        }\n      });\n    }\n  }\n}\n","<div class=\"po-table-actions\">\n  @if (hasValidColumns && itemsSelected.length > 0 && !hideBatchActions) {\n    <div #columnBatchActions class=\"po-table-actions-batch-actions\">\n      <div [ngPlural]=\"itemsSelected.length\" class=\"po-table-actions-batch-actions__label\">\n        <strong>\n          <ng-template ngPluralCase=\"=0\">{{ literals.noItem }}</ng-template>\n          <ng-template ngPluralCase=\"=1\">{{ literals.oneItem }}</ng-template>\n          <ng-template ngPluralCase=\"other\">{{ itemsSelected.length }} {{ literals.multipleItems }}</ng-template>\n        </strong>\n      </div>\n      <div class=\"po-table-actions-batch-actions__buttons\">\n        <po-button\n          p-icon=\"ICON_DELETE\"\n          [p-danger]=\"true\"\n          [p-disabled]=\"itemsSelected.length > 1 && serviceDeleteApi !== undefined\"\n          [p-label]=\"literals.delete\"\n          [p-size]=\"componentsSize\"\n          (p-click)=\"modalDelete.open()\"\n        ></po-button>\n      </div>\n    </div>\n  }\n\n  @if (hasValidColumns && !hideColumnsManager) {\n    <div #columnManager class=\"po-table-actions-column-manager\">\n      <po-button\n        #columnManagerTarget\n        p-icon=\"ICON_SETTINGS\"\n        p-kind=\"tertiary\"\n        p-tooltip-position=\"left\"\n        [p-aria-label]=\"literals.columnsManager\"\n        [p-tooltip]=\"literals.columnsManager\"\n        [p-size]=\"componentsSize\"\n        (p-click)=\"onOpenColumnManager()\"\n      ></po-button>\n    </div>\n  }\n\n  @if (!hideTableSearch && hasValidColumns) {\n    <div class=\"po-table-search\">\n      <po-search\n        [p-items]=\"items\"\n        [p-filter-keys]=\"filteredColumns\"\n        [p-filter-type]=\"filterType\"\n        [p-size]=\"componentsSize\"\n        (p-filtered-items-change)=\"onFilteredItemsChange($event)\"\n      >\n      </po-search>\n    </div>\n  }\n</div>\n@if (container) {\n  <po-container p-no-padding>\n    <ng-container *ngTemplateOutlet=\"tableContainerTemplate\"></ng-container>\n  </po-container>\n} @else {\n  <div [class.po-table-container-sticky]=\"loading\">\n    @if (loading) {\n      <po-loading-overlay [p-text]=\"literals.loadingData\" [p-size]=\"sizeLoading\"></po-loading-overlay>\n    }\n    <div class=\"po-table-main-container\">\n      <div\n        #tableWrapper\n        class=\"po-table-wrapper\"\n        [class.po-table-header-fixed-columns-pixels]=\"allColumnsWidthPixels\"\n        [style.opacity]=\"tableOpacity\"\n      >\n        @if (height) {\n          <div class=\"po-table-container\" [style.height.px]=\"heightTableContainer\">\n            <div #poTableTbody [class.po-table-container-fixed-inner]=\"virtualScroll\">\n              @if (virtualScroll) {\n                <div>\n                  <ng-container *ngTemplateOutlet=\"tableVirtualScrollTemplate\"></ng-container>\n                </div>\n              }\n              @if (!virtualScroll) {\n                <div class=\"po-table-container-overflow\" [style.height.px]=\"heightTableContainer\">\n                  <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n                </div>\n              }\n            </div>\n          </div>\n        }\n        @if (!height) {\n          <div>\n            <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n          </div>\n        }\n      </div>\n    </div>\n  </div>\n  @if (hasFooter) {\n    <div class=\"po-table-footer\">\n      @for (column of subtitleColumns; track trackBy($index)) {\n        <po-table-subtitle-footer\n          [p-components-size]=\"componentsSize\"\n          [p-literals]=\"literals\"\n          [p-subtitles]=\"column.subtitles\"\n        >\n        </po-table-subtitle-footer>\n      }\n    </div>\n  }\n}\n\n<ng-template #tableContainerTemplate>\n  <div [class.po-table-container-sticky]=\"loading\">\n    @if (loading) {\n      <po-loading-overlay [p-text]=\"literals.loadingData\" [p-size]=\"sizeLoading\"></po-loading-overlay>\n    }\n    <div class=\"po-table-main-container\">\n      <div\n        #tableWrapper\n        class=\"po-table-wrapper\"\n        [class.po-table-header-fixed-columns-pixels]=\"allColumnsWidthPixels\"\n        [style.opacity]=\"tableOpacity\"\n      >\n        @if (height) {\n          <div class=\"po-table-container\" [style.height.px]=\"heightTableContainer\">\n            <div #poTableTbody [class.po-table-container-fixed-inner]=\"virtualScroll\">\n              @if (virtualScroll) {\n                <div>\n                  <ng-container *ngTemplateOutlet=\"tableVirtualScrollTemplate\"></ng-container>\n                </div>\n              }\n              @if (!virtualScroll) {\n                <div class=\"po-table-container-overflow\" [style.height.px]=\"heightTableContainer\">\n                  <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n                </div>\n              }\n            </div>\n          </div>\n        }\n\n        @if (!height) {\n          <div>\n            <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n          </div>\n        }\n      </div>\n    </div>\n  </div>\n\n  @if (hasFooter) {\n    <div class=\"po-table-footer\">\n      @for (column of subtitleColumns; track trackBy($index)) {\n        <po-table-subtitle-footer\n          [p-components-size]=\"componentsSize\"\n          [p-literals]=\"literals\"\n          [p-subtitles]=\"column.subtitles\"\n        >\n        </po-table-subtitle-footer>\n      }\n    </div>\n  }\n</ng-template>\n\n<!-- Show More Button -->\n@if (!infiniteScroll) {\n  <div\n    class=\"po-row po-table-footer-show-more\"\n    [class.po-invisible]=\"showMore.observers.length === 0 && !hasService\"\n    #tableFooter\n  >\n    <po-button\n      class=\"po-offset-xl-4 po-offset-lg-4 po-offset-md-3 po-lg-4 po-md-6\"\n      [p-disabled]=\"showMoreDisabled\"\n      [p-label]=\"literals.loadMoreData\"\n      [p-loading]=\"loadingShowMore\"\n      [p-size]=\"componentsSize\"\n      (p-click)=\"onShowMore()\"\n    >\n    </po-button>\n  </div>\n}\n\n<!-- Table default-->\n<ng-template #tableTemplate>\n  <table\n    #tableScrollable\n    class=\"po-table\"\n    [ngClass]=\"{\n      'po-table-interactive': selectable || sort,\n      'po-table-selectable': selectable,\n      'po-table-striped': striped,\n      'po-table-data-fixed-columns': applyFixedColumns(),\n      'po-table-text-wrap-enabled': textWrap\n    }\"\n    [attr.p-spacing]=\"spacing\"\n  >\n    <thead\n      [class.po-table-header-sticky]=\"height > 0 && !virtualScroll\"\n      [attr.p-spacing]=\"spacing ?? (componentsSize === 'small' ? 'extraSmall' : 'medium')\"\n    >\n      <tr\n        [ngClass]=\"!height ? { 'no-hover': hideSelectAll, 'po-table-column-drag': this.isDraggable } : ''\"\n        [class.po-table-header]=\"!height\"\n        cdkDropList\n        cdkDropListOrientation=\"horizontal\"\n        (cdkDropListDropped)=\"drop($event)\"\n      >\n        @if (hasSelectableColumn) {\n          <th [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\" class=\"po-table-column-selectable\">\n            <div [class.po-table-header-fixed-inner]=\"height\">\n              @if (!hideSelectAll) {\n                <po-checkbox\n                  name=\"selectAll\"\n                  [p-size]=\"componentsSize\"\n                  (p-change)=\"selectAllRows()\"\n                  [p-checkboxValue]=\"selectAll === null ? 'mixed' : selectAll\"\n                ></po-checkbox>\n              }\n            </div>\n          </th>\n        }\n\n        @if ((hasMasterDetailColumn || hasRowTemplate) && hasMainColumns && !hasRowTemplateWithArrowDirectionRight) {\n          <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n        }\n\n        <!-- Coluna criada para caso as ações fiquem no lado esquerdo -->\n        @if (!actionRight && hasItems && hasMainColumns && (visibleActions.length > 1 || isSingleAction)) {\n          <th\n            #columnActionLeft\n            [class.po-table-header-master-detail]=\"!isSingleAction\"\n            [class.po-table-header-single-action]=\"isSingleAction\"\n          ></th>\n        }\n\n        @if (!hasMainColumns) {\n          <th #noColumnsHeader class=\"po-table-header-column po-text-center\" [attr.colspan]=\"columnCount\">\n            @if (height) {\n              <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"hasValidColumns ? headerWidth : null\">\n                {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n              </div>\n            } @else {\n              {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n            }\n          </th>\n        }\n\n        @if (this.isDraggable || hasSomeFixed()) {\n          @for (column of mainColumns; track trackBy(i); let i = $index) {\n            <th\n              class=\"po-table-header-ellipsis p-element po-frozen-column\"\n              [style.width]=\"column.width\"\n              [style.max-width]=\"column.width\"\n              [style.min-width]=\"column.width\"\n              [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n              [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n              [ngClass]=\"{\n                'po-table-header-sorted':\n                  sort &&\n                  JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n                  (sortedColumn.ascending || !sortedColumn.ascending)\n              }\"\n              [ngStyle]=\"{\n                'width':\n                  height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n              }\"\n              [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n              [class.po-table-column-drag-box]=\"this.isDraggable\"\n              (click)=\"sortColumn(column)\"\n              cdkDrag\n              cdkDragLockAxis=\"x\"\n              [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n              [pFrozenColumn]=\"column.fixed\"\n            >\n              <div\n                class=\"po-table-header-flex\"\n                [class.po-table-header-fixed-inner]=\"height\"\n                [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n                [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n              >\n                @if (this.isDraggable && !column.fixed) {\n                  <po-icon cdkDragHandle p-icon=\"ICON_DRAG\"></po-icon>\n                }\n                <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n              </div>\n            </th>\n          }\n        } @else {\n          @for (column of mainColumns; track trackBy(i); let i = $index) {\n            <th\n              class=\"po-table-header-ellipsis p-element po-frozen-column\"\n              [style.width]=\"column.width\"\n              [style.max-width]=\"column.width\"\n              [style.min-width]=\"column.width\"\n              [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n              [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n              [ngClass]=\"{\n                'po-table-header-sorted':\n                  sort &&\n                  JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n                  (sortedColumn.ascending || !sortedColumn.ascending)\n              }\"\n              [ngStyle]=\"{\n                'width':\n                  height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n              }\"\n              [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n              (click)=\"sortColumn(column)\"\n              [pFrozenColumn]=\"column.fixed\"\n            >\n              <div\n                class=\"po-table-header-flex\"\n                [class.po-table-header-fixed-inner]=\"height\"\n                [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n                [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n              >\n                <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n              </div>\n            </th>\n          }\n        }\n\n        @if (hasRowTemplateWithArrowDirectionRight && (hasVisibleActions || hideColumnsManager) && hasMainColumns) {\n          <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n        }\n\n        @if (\n          hasVisibleActions &&\n          actionRight &&\n          hasItems &&\n          hasMainColumns &&\n          (visibleActions.length > 1 || isSingleAction)\n        ) {\n          <th\n            [class.po-table-header-single-action]=\"isSingleAction\"\n            [class.po-table-header-actions]=\"!isSingleAction\"\n          ></th>\n        }\n      </tr>\n    </thead>\n\n    @if (!hasItems || !hasMainColumns) {\n      <tbody class=\"po-table-group-row\">\n        <tr class=\"po-table-row po-table-row-no-data\">\n          <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n            <span> {{ literals.noData }} </span>\n          </td>\n        </tr>\n      </tbody>\n    }\n\n    @if (hasMainColumns) {\n      @for (row of filteredItems; track trackBy(rowIndex); let rowIndex = $index) {\n        <tbody class=\"po-table-group-row\">\n          <tr\n            class=\"po-table-row\"\n            [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\"\n          >\n            @if (selectable) {\n              <td class=\"po-table-column-selectable\">\n                <ng-container\n                  *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\"\n                >\n                </ng-container>\n              </td>\n            }\n            <!-- Valida se a origem do detail é pelo input do po-table ou pela diretiva -->\n            @if (\n              (columnMasterDetail && !hideDetail && !hasRowTemplate) ||\n              (hasRowTemplate && !hasRowTemplateWithArrowDirectionRight)\n            ) {\n              <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n                <ng-template\n                  [ngTemplateOutlet]=\"poTableColumnDetail\"\n                  [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n                >\n                </ng-template>\n              </td>\n            }\n            <!-- Coluna com as ações na esquerda (padrão)-->\n            @if (!actionRight && (visibleActions.length > 1 || isSingleAction)) {\n              <ng-template\n                [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n                [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n              >\n              </ng-template>\n            }\n            @for (column of mainColumns; track trackBy(columnIndex); let columnIndex = $index) {\n              <td\n                [style.width]=\"column.width\"\n                [style.max-width]=\"column.width\"\n                [style.min-width]=\"column.width\"\n                [class.po-table-column]=\"column.type !== 'icon'\"\n                [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n                [class.po-table-column-center]=\"column.type === 'subtitle'\"\n                [class.po-table-column-icons]=\"column.type === 'icon'\"\n                [pFrozenColumn]=\"column.fixed\"\n                class=\"p-element po-frozen-column\"\n                [ngClass]=\"getClassColor(row, column)\"\n                (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n              >\n                <div\n                  class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n                  [p-tooltip]=\"tooltipText\"\n                  [p-append-in-body]=\"true\"\n                  (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n                  (mouseleave)=\"tooltipMouseLeave()\"\n                >\n                  @switch (column.type) {\n                    @case ('columnTemplate') {\n                      <span>\n                        <ng-container\n                          *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\"\n                        >\n                        </ng-container>\n                      </span>\n                    }\n                    @case ('cellTemplate') {\n                      <span>\n                        <ng-container\n                          *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\"\n                        >\n                        </ng-container>\n                      </span>\n                    }\n                    @case ('boolean') {\n                      <span>\n                        {{ getBooleanLabel(getCellData(row, column), column) }}\n                      </span>\n                    }\n                    @case ('currency') {\n                      <span>\n                        {{ getCellData(row, column) | currency: column.format : 'symbol' : '1.2-2' }}\n                      </span>\n                    }\n                    @case ('date') {\n                      <span>\n                        {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n                      </span>\n                    }\n                    @case ('time') {\n                      <span>\n                        {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n                      </span>\n                    }\n                    @case ('dateTime') {\n                      <span>\n                        {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n                      </span>\n                    }\n                    @case ('number') {\n                      <span>\n                        {{ formatNumber(getCellData(row, column), column.format) }}\n                      </span>\n                    }\n                    @case ('link') {\n                      <po-table-column-link\n                        [p-action]=\"column.action\"\n                        [p-disabled]=\"checkDisabled(row, column)\"\n                        [p-link]=\"row[column.link]\"\n                        [p-row]=\"row\"\n                        [p-value]=\"getCellData(row, column)\"\n                        (click)=\"onClickLink($event, row, column)\"\n                      >\n                      </po-table-column-link>\n                    }\n                    @case ('icon') {\n                      <po-table-column-icon [p-column]=\"column\" [p-icons]=\"getColumnIcons(row, column)\" [p-row]=\"row\">\n                      </po-table-column-icon>\n                    }\n                    @case ('subtitle') {\n                      <span>\n                        <po-table-subtitle-circle\n                          [p-subtitle]=\"getSubtitleColumn(row, column)\"\n                        ></po-table-subtitle-circle>\n                      </span>\n                    }\n                    @case ('label') {\n                      <span>\n                        <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n                      </span>\n                    }\n                    @default {\n                      <span>{{ getCellData(row, column) }}</span>\n                    }\n                  }\n                </div>\n              </td>\n            }\n            @if (hasRowTemplateWithArrowDirectionRight) {\n              <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n                <ng-template\n                  [ngTemplateOutlet]=\"poTableColumnDetail\"\n                  [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n                >\n                </ng-template>\n              </td>\n            }\n            <!-- Coluna de açoes na direita -->\n            @if (actionRight) {\n              <ng-template\n                [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n                [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n              >\n              </ng-template>\n            }\n          </tr>\n          @if (hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)) {\n            <tr>\n              <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n                <ng-template\n                  [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n                  [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n                >\n                </ng-template>\n              </td>\n            </tr>\n          }\n          @if (hasMainColumns && isShowMasterDetail(row)) {\n            <tr>\n              <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n                <po-table-detail\n                  [p-selectable]=\"selectable && !detailHideSelect\"\n                  [p-detail]=\"columnMasterDetail.detail\"\n                  [p-items]=\"row[nameColumnDetail]\"\n                  [p-parent-row]=\"row\"\n                  [p-components-size]=\"componentsSize\"\n                  (p-select-row)=\"selectDetailRow($event)\"\n                >\n                </po-table-detail>\n              </td>\n            </tr>\n          }\n        </tbody>\n      }\n    }\n  </table>\n</ng-template>\n\n<!-- Table with virtual scroll -->\n<ng-template #tableVirtualScrollTemplate>\n  <cdk-virtual-scroll-viewport\n    #tableVirtualScroll\n    [itemSize]=\"itemSize\"\n    [style.height.px]=\"heightTableContainer\"\n    [minBufferPx]=\"heightTableContainer < 100 ? 100 : heightTableContainer\"\n    [maxBufferPx]=\"heightTableContainer < 200 ? 200 : heightTableContainer\"\n  >\n    <table\n      class=\"po-table\"\n      [ngClass]=\"{\n        'po-table-interactive': selectable || sort,\n        'po-table-selectable': selectable,\n        'po-table-striped': striped,\n        'po-table-data-fixed-columns': applyFixedColumns(),\n        'po-table-text-wrap-enabled': textWrap\n      }\"\n      [attr.p-spacing]=\"spacing\"\n    >\n      <thead\n        class=\"po-table-header-sticky\"\n        [style.top]=\"inverseOfTranslation\"\n        [attr.p-spacing]=\"spacing ?? (componentsSize === 'small' ? 'extraSmall' : 'medium')\"\n      >\n        <tr\n          [class.po-table-header]=\"!height\"\n          cdkDropList\n          cdkDropListOrientation=\"horizontal\"\n          (cdkDropListDropped)=\"drop($event)\"\n        >\n          @if (hasSelectableColumn) {\n            <th [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\" class=\"po-table-column-selectable\">\n              <div [class.po-table-header-fixed-inner]=\"height\">\n                @if (!hideSelectAll) {\n                  <po-checkbox\n                    name=\"selectAll\"\n                    (p-change)=\"selectAllRows()\"\n                    [p-checkboxValue]=\"selectAll === null ? 'mixed' : selectAll\"\n                    [p-size]=\"componentsSize\"\n                  ></po-checkbox>\n                }\n              </div>\n            </th>\n          }\n\n          @if ((hasMasterDetailColumn || hasRowTemplate) && hasMainColumns && !hasRowTemplateWithArrowDirectionRight) {\n            <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n          }\n\n          <!-- Coluna criada para caso as ações fiquem no lado esquerdo -->\n          @if (!actionRight && hasItems && hasMainColumns && (visibleActions.length > 1 || isSingleAction)) {\n            <th\n              #columnActionLeft\n              [class.po-table-header-master-detail]=\"!isSingleAction\"\n              [class.po-table-header-single-action]=\"isSingleAction\"\n            ></th>\n          }\n\n          @if (!hasMainColumns) {\n            <th #noColumnsHeader class=\"po-table-header-column po-text-center\" [attr.colspan]=\"columnCount\">\n              @if (height) {\n                <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"hasValidColumns ? headerWidth : null\">\n                  {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n                </div>\n              } @else {\n                {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n              }\n            </th>\n          }\n\n          @if (this.isDraggable || hasSomeFixed()) {\n            @for (column of mainColumns; track trackBy(i); let i = $index) {\n              <th\n                class=\"po-table-header-ellipsis p-element po-frozen-column\"\n                [style.width]=\"column.width\"\n                [style.max-width]=\"column.width\"\n                [style.min-width]=\"column.width\"\n                [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n                [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n                [ngClass]=\"{\n                  'po-table-header-sorted':\n                    sort &&\n                    JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n                    (sortedColumn.ascending || !sortedColumn.ascending)\n                }\"\n                [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n                [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n                [class.po-table-column-drag-box]=\"this.isDraggable\"\n                (click)=\"sortColumn(column)\"\n                cdkDrag\n                cdkDragLockAxis=\"x\"\n                [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n                [pFrozenColumn]=\"column.fixed\"\n              >\n                <div\n                  class=\"po-table-header-flex\"\n                  [class.po-table-header-fixed-inner]=\"height\"\n                  [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n                  [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n                >\n                  @if (this.isDraggable && !column.fixed) {\n                    <po-icon cdkDragHandle p-icon=\"ICON_DRAG\"></po-icon>\n                  }\n                  <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\">\n                  </ng-container>\n                </div>\n              </th>\n            }\n          } @else {\n            @for (column of mainColumns; track trackBy(i); let i = $index) {\n              <th\n                class=\"po-table-header-ellipsis p-element po-frozen-column example-box\"\n                [style.width]=\"column.width\"\n                [style.max-width]=\"column.width\"\n                [style.min-width]=\"column.width\"\n                [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n                [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n                [ngClass]=\"{\n                  'po-table-header-sorted':\n                    sort &&\n                    JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n                    (sortedColumn.ascending || !sortedColumn.ascending)\n                }\"\n                [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n                [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n                (click)=\"sortColumn(column)\"\n                [pFrozenColumn]=\"column.fixed\"\n              >\n                <div\n                  class=\"po-table-header-flex\"\n                  [class.po-table-header-fixed-inner]=\"height\"\n                  [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n                  [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n                >\n                  <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\">\n                  </ng-container>\n                </div>\n              </th>\n            }\n          }\n\n          @if (hasRowTemplateWithArrowDirectionRight && hasMainColumns && (hasVisibleActions || hideColumnsManager)) {\n            <th class=\"po-table-header-column po-table-header-master-detail\"></th>\n          }\n\n          @if (\n            hasVisibleActions &&\n            actionRight &&\n            hasItems &&\n            hasMainColumns &&\n            (visibleActions.length > 1 || isSingleAction)\n          ) {\n            <th\n              [class.po-table-header-single-action]=\"isSingleAction\"\n              [class.po-table-header-actions]=\"!isSingleAction\"\n            ></th>\n          }\n        </tr>\n      </thead>\n\n      @if (!hasItems || !hasMainColumns) {\n        <tbody class=\"po-table-group-row\">\n          <tr class=\"po-table-row po-table-row-no-data\">\n            <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n              <span> {{ literals.noData }} </span>\n            </td>\n          </tr>\n        </tbody>\n      }\n\n      @if (hasMainColumns) {\n        <tbody\n          class=\"po-table-group-row\"\n          *cdkVirtualFor=\"let row of filteredItems; let rowIndex = index; trackBy: trackBy\"\n        >\n          <tr\n            class=\"po-table-row\"\n            [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\"\n          >\n            @if (selectable) {\n              <td class=\"po-table-column-selectable\">\n                <ng-container\n                  *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\"\n                >\n                </ng-container>\n              </td>\n            }\n            <!-- Valida se a origem do detail é pelo input do po-table pela diretiva -->\n            @if (\n              (columnMasterDetail && !hideDetail && !hasRowTemplate) ||\n              (hasRowTemplate && !hasRowTemplateWithArrowDirectionRight)\n            ) {\n              <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n                <ng-template\n                  [ngTemplateOutlet]=\"poTableColumnDetail\"\n                  [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n                >\n                </ng-template>\n              </td>\n            }\n            <!-- Coluna com as ações na esquerda (padrão)-->\n            @if (!actionRight && (visibleActions.length > 1 || isSingleAction)) {\n              <ng-template\n                [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n                [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n              >\n              </ng-template>\n            }\n            @for (column of mainColumns; track trackBy(columnIndex); let columnIndex = $index) {\n              <td\n                [style.width]=\"column.width\"\n                [style.max-width]=\"column.width\"\n                [style.min-width]=\"column.width\"\n                [class.po-table-column]=\"column.type !== 'icon'\"\n                [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n                [class.po-table-column-center]=\"column.type === 'subtitle'\"\n                [class.po-table-column-icons]=\"column.type === 'icon'\"\n                [ngClass]=\"getClassColor(row, column)\"\n                [pFrozenColumn]=\"column.fixed\"\n                class=\"p-element po-frozen-column\"\n                (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n              >\n                <div\n                  class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n                  [p-tooltip]=\"tooltipText\"\n                  [p-append-in-body]=\"true\"\n                  (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n                  (mouseleave)=\"tooltipMouseLeave()\"\n                >\n                  @switch (column.type) {\n                    @case ('columnTemplate') {\n                      <span>\n                        <ng-container\n                          *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\"\n                        >\n                        </ng-container>\n                      </span>\n                    }\n                    @case ('cellTemplate') {\n                      <span>\n                        <ng-container\n                          *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\"\n                        >\n                        </ng-container>\n                      </span>\n                    }\n                    @case ('boolean') {\n                      <span>\n                        {{ getBooleanLabel(getCellData(row, column), column) }}\n                      </span>\n                    }\n                    @case ('currency') {\n                      <span>\n                        {{ getCellData(row, column) | currency: column.format : 'symbol' : '1.2-2' }}\n                      </span>\n                    }\n                    @case ('date') {\n                      <span>\n                        {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n                      </span>\n                    }\n                    @case ('time') {\n                      <span>\n                        {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n                      </span>\n                    }\n                    @case ('dateTime') {\n                      <span>\n                        {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n                      </span>\n                    }\n                    @case ('number') {\n                      <span>\n                        {{ formatNumber(getCellData(row, column), column.format) }}\n                      </span>\n                    }\n                    @case ('link') {\n                      <po-table-column-link\n                        [p-action]=\"column.action\"\n                        [p-disabled]=\"checkDisabled(row, column)\"\n                        [p-link]=\"row[column.link]\"\n                        [p-row]=\"row\"\n                        [p-value]=\"getCellData(row, column)\"\n                        (click)=\"onClickLink($event, row, column)\"\n                      >\n                      </po-table-column-link>\n                    }\n                    @case ('icon') {\n                      <po-table-column-icon [p-column]=\"column\" [p-icons]=\"getColumnIcons(row, column)\" [p-row]=\"row\">\n                      </po-table-column-icon>\n                    }\n                    @case ('subtitle') {\n                      <span>\n                        <po-table-subtitle-circle\n                          [p-subtitle]=\"getSubtitleColumn(row, column)\"\n                        ></po-table-subtitle-circle>\n                      </span>\n                    }\n                    @case ('label') {\n                      <span>\n                        <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n                      </span>\n                    }\n                    @default {\n                      <span>{{ getCellData(row, column) }}</span>\n                    }\n                  }\n                </div>\n              </td>\n            }\n            @if (hasRowTemplateWithArrowDirectionRight) {\n              <td class=\"po-table-column-detail-toggle\" (click)=\"toggleDetail(row)\">\n                <ng-template\n                  [ngTemplateOutlet]=\"poTableColumnDetail\"\n                  [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n                >\n                </ng-template>\n              </td>\n            }\n            <!-- Coluna de açoes na direita -->\n            @if (actionRight) {\n              <ng-template\n                [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n                [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n              >\n              </ng-template>\n            }\n          </tr>\n          @if (hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)) {\n            <tr>\n              <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n                <ng-template\n                  [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n                  [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n                >\n                </ng-template>\n              </td>\n            </tr>\n          }\n          @if (hasMainColumns && isShowMasterDetail(row)) {\n            <tr>\n              <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n                <po-table-detail\n                  [p-selectable]=\"selectable && !detailHideSelect\"\n                  [p-detail]=\"columnMasterDetail.detail\"\n                  [p-items]=\"row[nameColumnDetail]\"\n                  [p-parent-row]=\"row\"\n                  [p-components-size]=\"componentsSize\"\n                  (p-select-row)=\"selectDetailRow($event)\"\n                >\n                </po-table-detail>\n              </td>\n            </tr>\n          }\n        </tbody>\n      }\n    </table>\n  </cdk-virtual-scroll-viewport>\n</ng-template>\n\n<po-popup #popup [p-actions]=\"actions\" [p-size]=\"componentsSize\" [p-target]=\"popupTarget\"> </po-popup>\n\n<ng-template #poTableColumnDetail let-row=\"row\" let-rowIndex=\"rowIndex\">\n  @if ((containsMasterDetail(row) && !hasRowTemplate) || (isShowRowTemplate(row, rowIndex) && hasRowTemplate)) {\n    <po-icon [p-icon]=\"row.$showDetail ? 'ICON_ARROW_UP' : 'ICON_ARROW_DOWN'\" class=\"po-clickable\"> </po-icon>\n  }\n</ng-template>\n\n<ng-template #inputRadio let-row>\n  <po-radio\n    [name]=\"idRadio\"\n    [p-checked]=\"row.$selected\"\n    [p-size]=\"componentsSize\"\n    (p-change-selected)=\"selectRow(row)\"\n  ></po-radio>\n</ng-template>\n\n<ng-template #inputCheckbox let-row>\n  <po-checkbox\n    name=\"checkbox\"\n    (p-change)=\"selectable ? selectRow(row) : 'javascript:;'\"\n    [p-checkboxValue]=\"row.$selected === null ? 'mixed' : row.$selected\"\n    [p-size]=\"componentsSize\"\n  ></po-checkbox>\n</ng-template>\n\n<ng-template #contentHeaderTemplate let-column>\n  <span\n    #columnHeader\n    class=\"po-table-header-ellipsis\"\n    [p-tooltip]=\"tooltipText\"\n    [p-append-in-body]=\"true\"\n    (mouseenter)=\"tooltipMouseEnter($event)\"\n    (mouseleave)=\"tooltipMouseLeave()\"\n  >\n    {{ column.label || (column.property | titlecase) }}\n  </span>\n\n  @if (sort && column.sortable !== false) {\n    <span\n      [class.po-table-header-icon-unselected]=\"JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)\"\n      [class.po-table-header-icon-descending]=\"\n        JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending\n      \"\n      [class.po-table-header-icon-ascending]=\"\n        JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending\n      \"\n    >\n      @if (JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)) {\n        <po-icon p-icon=\"ICON_SORT\"></po-icon>\n      }\n      @if (JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending) {\n        <po-icon p-icon=\"ICON_SORT_ASC\"></po-icon>\n      }\n      @if (JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending) {\n        <po-icon cdkDragHandle p-icon=\"ICON_SORT_DESC\"></po-icon>\n      }\n    </span>\n  }\n</ng-template>\n\n<!-- Template de ações -->\n<ng-template #ActionsColumnTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n  @if (isSingleAction) {\n    <td\n      class=\"po-table-column po-table-column-single-action\"\n      [style.width.px]=\"height && actionRight ? getWidthColumnManager() : ''\"\n      [style.max-width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n      [style.width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n    >\n      @if (firstAction.visible !== false) {\n        <div\n          class=\"po-table-single-action po-clickable\"\n          [class.po-table-action-disabled]=\"firstAction.disabled ? validateTableAction(row, firstAction) : false\"\n          (click)=\"executeTableAction(row, firstAction)\"\n        >\n          @if (firstAction.icon) {\n            <po-icon class=\"po-table-single-action-content\" [p-icon]=\"firstAction.icon\"></po-icon>\n          }\n          @if (firstAction.label) {\n            <span>{{ firstAction.label }}</span>\n          }\n        </div>\n      }\n    </td>\n  }\n\n  @if (visibleActions.length > 1) {\n    <td class=\"po-table-column-actions\">\n      <div #popupTarget class=\"po-clickable\" (click)=\"togglePopup(row, popupTarget)\">\n        <po-icon class=\"po-field-icon\" p-icon=\"ICON_MORE\"></po-icon>\n      </div>\n    </td>\n  }\n</ng-template>\n\n@if (!hideColumnsManager) {\n  <po-table-column-manager\n    [p-columns]=\"columns\"\n    [p-max-columns]=\"maxColumns\"\n    [p-target]=\"columnManagerTarget\"\n    [p-last-visible-columns-selected]=\"lastVisibleColumnsSelected\"\n    [p-hide-action-fixed-columns]=\"hideActionFixedColumns\"\n    (p-visible-columns-change)=\"onVisibleColumnsChange($event)\"\n    (p-change-visible-columns)=\"onChangeVisibleColumns($event)\"\n    (p-change-fixed-columns)=\"onChangeFixedColumns($event)\"\n    [p-columns-default]=\"initialColumns\"\n    [p-components-size]=\"componentsSize\"\n    (p-initial-columns)=\"onColumnRestoreManager($event)\"\n  >\n  </po-table-column-manager>\n}\n\n<po-modal\n  #modalDelete\n  [p-components-size]=\"componentsSize\"\n  [p-title]=\"literals.delete\"\n  [p-primary-action]=\"confirm\"\n  [p-secondary-action]=\"close\"\n  [p-click-out]=\"true\"\n>\n  <p class=\"po-font-text-large\">{{ literals.bodyDelete }}</p>\n</po-modal>\n","import { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PoSwitchComponent } from './po-switch.component';\nimport { PoIconModule } from '../../po-icon';\nimport { PoLabelModule } from '../../po-label';\n\nimport { PoFieldContainerModule } from './../po-field-container/po-field-container.module';\nimport { PoHelperModule } from '../../po-helper';\nimport { PoLoadingModule } from '../../po-loading';\n@NgModule({\n  declarations: [PoSwitchComponent],\n  exports: [PoSwitchComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    PoFieldContainerModule,\n    PoLabelModule,\n    PoIconModule,\n    PoHelperModule,\n    PoLoadingModule\n  ]\n})\nexport class PoSwitchModule {}\n","import { PoDatepickerRangeLiterals } from './interfaces/po-datepicker-range-literals.interface';\n\nexport const poDatepickerRangeLiteralsDefault = {\n  en: <PoDatepickerRangeLiterals>{\n    invalidFormat: 'Date in invalid format',\n    startDateGreaterThanEndDate: 'Start date greater than end date',\n    invalidDate: 'Invalid date',\n    dateOutOfPeriod: 'Date out of period',\n    open: 'Open calendar',\n    startDate: 'Start date',\n    endDate: 'End date',\n    clean: 'Clear field'\n  },\n  es: <PoDatepickerRangeLiterals>{\n    invalidFormat: 'Fecha en formato no válido',\n    startDateGreaterThanEndDate: 'Fecha de inicio mayor que fecha final',\n    invalidDate: 'Fecha invalida',\n    dateOutOfPeriod: 'Fecha fuera de período',\n    open: 'Calendario abierto',\n    startDate: 'Fecha de inicio',\n    endDate: 'Fecha final',\n    clean: 'Limpiar campo'\n  },\n  pt: <PoDatepickerRangeLiterals>{\n    invalidFormat: 'Data no formato inválido',\n    startDateGreaterThanEndDate: 'Data inicial maior que data final',\n    invalidDate: 'Data inválida',\n    dateOutOfPeriod: 'Data fora do período',\n    open: 'Abrir calendário',\n    startDate: 'Data inicial',\n    endDate: 'Data final',\n    clean: 'Limpar campo'\n  },\n  ru: <PoDatepickerRangeLiterals>{\n    invalidFormat: 'Дата в неверном формате',\n    startDateGreaterThanEndDate: 'Дата начала больше даты окончания',\n    invalidDate: 'Недействительная дата',\n    dateOutOfPeriod: 'дата вне периода',\n    open: 'открытый календарь',\n    startDate: 'Дата начала',\n    endDate: 'Дата окончания',\n    clean: 'Очистить поле'\n  }\n};\n","import {\n  ChangeDetectorRef,\n  Directive,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  input,\n  Input,\n  OnDestroy,\n  Output\n} from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, ValidationErrors, Validator, Validators } from '@angular/forms';\nimport { Subscription, switchMap } from 'rxjs';\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { poLocaleDefault } from '../../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport { PoMask } from '../po-input/po-mask';\nimport { PoValidators } from '../validators';\nimport { PoDateService } from './../../../services/po-date/po-date.service';\nimport {\n  convertIsoToDate,\n  convertToBoolean,\n  getDefaultSizeFn,\n  mapInputSizeToLoadingIcon,\n  replaceFormatSeparator,\n  setYearFrom0To100,\n  validateDateRange,\n  validateSizeFn\n} from './../../../utils/util';\nimport { PoDatepickerRangeLiterals } from './interfaces/po-datepicker-range-literals.interface';\nimport { PoDatepickerRange } from './interfaces/po-datepicker-range.interface';\nimport { poDatepickerRangeLiteralsDefault } from './po-datepicker-range.literals';\nimport { PoHelperOptions } from '../../po-helper';\nimport { PoCalendarRangePreset } from '../../po-calendar/interfaces/po-calendar-range-preset.interface';\n\n/**\n * @description\n *\n * O `po-datepicker-range` é um componente para seleção de um período entre duas datas, onde é possível informar apenas\n * a data inicial ou a data final.\n *\n * O componente `[(ngModel)]` do `po-datepicker-range` trabalha com um objeto que implementa a interface\n * `PoDatepickerRange`, contendo as seguintes propriedades:\n * ```\n * { \"start\": '2017-11-28', \"end\": '2017-11-30' }\n * ```\n *\n * <a id=\"accepted-formats\"></a>\n * Este componente pode receber os seguintes formatos de data:\n *\n * - **Data e hora combinados (E8601DZw): yyyy-mm-ddThh:mm:ss+|-hh:mm**\n *   ```\n *   '2017-11-28T00:00:00-02:00';\n *   ```\n *\n * - **Data (E8601DAw.): yyyy-mm-dd**\n *   ```\n *   '2017-11-28';\n *   ```\n *\n * - **JavaScript Date Object:**\n *   ```\n *   new Date(2017, 10, 28);\n *   ```\n *\n * > O componente respeitará o formato passado para o *model* via codificação. Porém, caso seja feita alteração em algum\n * dos valores de data em tela, o componente atribuirá o formato **Data (E8601DAw.): yyyy-mm-dd** ao model.\n *\n * Importante:\n *\n * - Quando preenchidas a data inicial e final, a data inicial deve ser sempre menor ou igual a data final;\n * - Ao passar uma data inválida via codificação, o valor será mantido no *model* e o `input` da tela aparecerá vazio;\n * - Permite trabalhar com as duas datas separadamente através das propriedades `p-start-date` e `p-end-date` no lugar do\n * `[(ngModel)]`, no entanto sem a validação do formulário;\n * - Para a validação do formulário, utilize o `[(ngModel)]`.\n */\n@Directive()\nexport abstract class PoDatepickerRangeBaseComponent implements ControlValueAccessor, Validator, OnDestroy {\n  // Propriedade interna que define se o ícone de ajuda adicional terá cursor clicável (evento) ou padrão (tooltip).\n  @Input() additionalHelpEventTrigger: string | undefined;\n\n  /* Nome do componente. */\n  @Input('name') name: string;\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de ajuda adicional, com o texto desta propriedade sendo passado para o popover do componente `po-helper`.\n   * **Como boa prática, indica-se utilizar um texto com até 140 caracteres.**\n   * > Requer um recuo mínimo de 8px se o componente estiver próximo à lateral da tela.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Input('p-additional-help-tooltip') additionalHelpTooltip?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o `calendar` e/ou tooltip (`p-additional-help-tooltip` e/ou `p-error-limit`) serão incluídos no body da\n   * página e não dentro do componente. Essa opção pode ser necessária em cenários com containers que possuem scroll ou\n   * overflow escondido, garantindo o posicionamento correto de ambos próximo ao elemento.\n   *\n   * > Quando utilizado com `p-helper`, leitores de tela como o NVDA podem não ler o conteúdo do popover.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendBox?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Aplica foco no elemento ao ser iniciado.\n   *\n   * > Caso mais de um elemento seja configurado com essa propriedade, apenas o último elemento declarado com ela terá o foco.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-auto-focus', transform: convertToBoolean }) autoFocus: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define se o título do campo será exibido de forma compacta.\n   *\n   * Quando habilitado (`true`), o modo compacto afeta o conjunto composto por:\n   * - `po-label`\n   * - `p-requirement (showRequired)`\n   * - `po-helper`\n   *\n   * Ou seja, todos os elementos relacionados ao título do campo\n   * (rótulo, indicador de obrigatoriedade e componente auxiliar) passam\n   * a seguir o comportamento de layout compacto.\n   *\n   * Também é possível definir esse comportamento de forma global,\n   * uma única vez, na folha de estilo geral da aplicação, por meio\n   * da customização dos tokens CSS:\n   *\n   * - `--field-container-title-justify`\n   * - `--field-container-title-flex`\n   *\n   * Exemplo:\n   *\n   * ```\n   * :root {\n   *   --field-container-title-justify: flex-start;\n   *   --field-container-title-flex: 0 1 auto;\n   * }\n   * ```\n   *\n   * Dessa forma, o layout compacto passa a ser o padrão da aplicação,\n   * sem a necessidade de definir a propriedade individualmente em cada campo.\n   *\n   * @default `false`\n   */\n  compactLabel = input<boolean, unknown>(false, { alias: 'p-compact-label', transform: convertToBoolean });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a exibição dos presets padrão de intervalos de data no painel lateral do calendário.\n   *\n   * Aceita os seguintes valores:\n   * - `true`: exibe todos os presets padrão (Amanhã, Hoje, Ontem, Últimos 7 dias, Últimos 14 dias, Últimos 30 dias, Últimos 3 meses, Últimos 6 meses).\n   * - `false`: não exibe os presets padrão.\n   * - `Array<string>`: exibe apenas os presets padrão cujos labels estejam no array informado.\n   * > Label dos presets: tomorrow, today, yesterday, 7days, 14days, 30days, 3months, 6months.\n   *\n   * O preset \"today\" é obrigatório e será incluído automaticamente mesmo que não esteja no array.\n   *\n   * Caso `p-range-preset-options` também seja informado, os presets customizados serão exibidos junto aos presets padrão,\n   * ordenados automaticamente por temporalidade com base na data início (Futuro → Presente → Passado).\n   *\n   * @default `false`\n   */\n  @Input('p-range-presets')\n  set rangePresets(value: boolean | Array<string> | string) {\n    if (Array.isArray(value)) {\n      this._rangePresets = value;\n    } else if (value === '' || value === true || value === 'true') {\n      this._rangePresets = true;\n    } else {\n      this._rangePresets = false;\n    }\n  }\n\n  get rangePresets(): boolean | Array<string> {\n    return this._rangePresets;\n  }\n\n  private _rangePresets: boolean | Array<string> = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Lista de presets customizados de intervalos de data exibidos no painel lateral do calendário.\n   *\n   * Quando informado sem `p-range-presets`, exibe apenas os presets customizados.\n   * Quando informado junto com `p-range-presets` habilitado, os presets customizados serão exibidos junto aos presets padrão,\n   * ordenados automaticamente por temporalidade com base na data início (Futuro → Presente → Passado).\n   *\n   * Para utilizar presets customizados, informe um array de objetos que implementam a interface `PoCalendarRangePreset`.\n   */\n  @Input('p-range-preset-options') rangePresetOptions?: Array<PoCalendarRangePreset>;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a ordenação dos presets na lista.\n   *\n   * Valores aceitos:\n   * - `'asc'` (padrão): presets mais próximos de hoje aparecem primeiro.\n   * - `'desc'`: presets mais distantes de hoje aparecem primeiro.\n   *\n   * A ordenação é aplicada dentro de cada grupo de temporalidade com base na data início (Futuro → Presente → Passado).\n   *\n   * @default `asc`\n   */\n  @Input('p-range-presets-order') rangePresetsOrder: 'asc' | 'desc' = 'asc';\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Texto de apoio do campo.\n   */\n  @Input('p-help') help?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Rótulo do campo.\n   */\n  @Input('p-label') label?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se a indicação de campo opcional será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - O campo conter `p-required`;\n   * - Não possuir `p-help` e/ou `p-label`.\n   *\n   * @default `false`\n   */\n  @Input('p-optional') optional: boolean;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Mensagem que aparecerá enquanto o campo não estiver preenchido.\n   */\n  @Input('p-placeholder')\n  set placeholder(value: string | PoDatepickerRange) {\n    if (typeof value === 'string') {\n      this._placeholder = { start: value, end: value };\n    } else if (value && typeof value === 'object') {\n      this._placeholder = {\n        start: value.start || '',\n        end: value.end || ''\n      };\n    } else {\n      this._placeholder = { start: '', end: '' };\n    }\n  }\n\n  get placeholder(): PoDatepickerRange {\n    return this._placeholder;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe a mensagem setada se o campo estiver vazio e for requerido.\n   *\n   * > Necessário que a propriedade `p-required` esteja habilitada.\n   *\n   */\n  @Input('p-field-error-message') fieldErrorMessage: string;\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar no ícone de ajuda adicional.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Output('p-additional-help') additionalHelp = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Limita a exibição da mensagem de erro a duas linhas e exibe um tooltip com o texto completo.\n   *\n   * > Caso essa propriedade seja definida como `true`, a mensagem de erro será limitada a duas linhas\n   * e um tooltip será exibido ao passar o mouse sobre a mensagem para mostrar o conteúdo completo.\n   *\n   * @default `false`\n   */\n  @Input('p-error-limit') errorLimit: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as opções do componente de ajuda (po-helper) que será exibido ao lado do label quando a propriedade `p-label` for definida, ou, ao lado do componente na ausência da propriedade `p-label`.\n   * > Para mais informações acesse: https://po-ui.io/documentation/po-helper.\n   *\n   * > Ao configurar esta propriedade, o antigo ícone de ajuda adicional (`p-additional-help-tooltip` e `p-additional-help`) será ignorado.\n   */\n  poHelperComponent = input<PoHelperOptions | string>(undefined, { alias: 'p-helper' });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a quebra automática do texto da propriedade `p-label`. Quando `p-label-text-wrap` for verdadeiro, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * @default `false`\n   */\n  labelTextWrap = input<boolean>(false, { alias: 'p-label-text-wrap' });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao alterar valor do campo.\n   */\n  @Output('p-change') onChange: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado quando uma tecla é pressionada enquanto o foco está no componente.\n   * Retorna um objeto `KeyboardEvent` com informações sobre a tecla.\n   */\n  @Output('p-keydown') keydown: EventEmitter<KeyboardEvent> = new EventEmitter<any>();\n\n  errorMessage: string = '';\n  dateRange: PoDatepickerRange = { start: '', end: '' };\n  displayAdditionalHelp: boolean = false;\n\n  protected format: any = 'dd/mm/yyyy';\n  protected isDateRangeInputFormatValid: boolean = true;\n  protected isStartDateRangeInputValid: boolean = true;\n  protected onTouchedModel: any;\n  protected poMaskObject: PoMask;\n  protected hasValidatorRequired = false;\n\n  private _clean?: boolean = false;\n  private _disabled?;\n  private _endDate?;\n  private _literals?: any;\n  private _maxDate: Date;\n  private _minDate: Date;\n  private _noAutocomplete?: boolean = false;\n  private _readonly: boolean = false;\n  private _required?: boolean = false;\n  private _loading?: boolean = false;\n  private _startDate?;\n  private _locale?: string;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n  private _placeholder: PoDatepickerRange = { start: '', end: '' };\n\n  private readonly language;\n  private onChangeModel: any;\n  private validatorChange: any;\n  private subscription = new Subscription();\n\n  get isDateRangeInputValid() {\n    return this.isDateRangeInputFormatValid && this.isStartDateRangeInputValid;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita ação para limpar o campo.\n   *\n   * @default `false`\n   */\n  @Input('p-clean') set clean(clean: boolean) {\n    this._clean = convertToBoolean(clean);\n  }\n\n  get clean() {\n    return this._clean;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita o campo.\n   *\n   * @default `false`\n   */\n  @Input('p-disabled') set disabled(value: boolean) {\n    this._disabled = convertToBoolean(value);\n\n    this.validateModel(this.dateRange);\n  }\n\n  get disabled() {\n    return this._disabled;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Data final.\n   */\n  @Input('p-end-date') set endDate(date: string | Date) {\n    this._endDate = this.convertPatternDateFormat(date);\n    this.dateRange.end = this.endDate;\n\n    this.updateScreenByModel(this.dateRange);\n    this.updateModel(this.dateRange);\n  }\n\n  get endDate() {\n    return this._endDate;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com as literais usadas no `po-datepicker-range`.\n   *\n   * Existem duas maneiras de customizar o componente, passando um objeto com todas as literais disponíveis:\n   *\n   * ```\n   *  const customLiterals: PoDatepickerRangeLiterals = {\n   *    invalidFormat: 'Date in inconsistent format',\n   *    startDateGreaterThanEndDate: 'End date less than start date'\n   *  };\n   * ```\n   *\n   * Ou passando apenas as literais que deseja customizar:\n   *\n   * ```\n   *  const customLiterals: PoDatepickerRangeLiterals = {\n   *    invalidFormat: 'Date in inconsistent format'\n   *  };\n   * ```\n   *\n   * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n   *\n   * ```\n   * <po-datepicker-range\n   *   [p-literals]=\"customLiterals\">\n   * </po-datepicker-range>\n   * ```\n   *\n   * > O objeto padrão de literais será traduzido de acordo com o idioma do\n   * [`PoI18nService`](/documentation/po-i18n) ou do browser.\n   */\n  @Input('p-literals') set literals(value: PoDatepickerRangeLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poDatepickerRangeLiteralsDefault[poLocaleDefault],\n        ...poDatepickerRangeLiteralsDefault[this.language],\n        ...value\n      };\n    } else {\n      this._literals = poDatepickerRangeLiteralsDefault[this.language];\n    }\n  }\n\n  get literals() {\n    return this._literals || poDatepickerRangeLiteralsDefault[this.language];\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de carregamento no lado direito do campo para sinalizar que uma operação está em andamento.\n   *\n   * @default `false`\n   */\n  @Input('p-loading') set loading(value: boolean) {\n    this._loading = convertToBoolean(value);\n    this.changeDetector?.markForCheck();\n  }\n\n  get loading(): boolean {\n    return this._loading;\n  }\n\n  get isDisabled(): boolean {\n    return this.disabled || this.loading;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define uma data mínima para o `po-datepicker-range`.\n   */\n  @Input('p-min-date') set minDate(value: string | Date) {\n    if (value instanceof Date) {\n      const year = value.getFullYear();\n\n      const date = new Date(year, value.getMonth(), value.getDate(), 0, 0, 0);\n      setYearFrom0To100(date, year);\n\n      this._minDate = date;\n    } else {\n      this._minDate = convertIsoToDate(value, true, false);\n    }\n  }\n\n  get minDate() {\n    return this._minDate;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define uma data máxima para o `po-datepicker-range`.\n   */\n  @Input('p-max-date') set maxDate(value: string | Date) {\n    if (value instanceof Date) {\n      const year = value.getFullYear();\n\n      const date = new Date(year, value.getMonth(), value.getDate(), 23, 59, 59);\n      setYearFrom0To100(date, year);\n\n      this._maxDate = date;\n    } else {\n      this._maxDate = convertIsoToDate(value, false, true);\n    }\n  }\n\n  get maxDate() {\n    return this._maxDate;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a propriedade nativa `autocomplete` do campo como `off`.\n   *\n   * @default `false`\n   */\n  @Input('p-no-autocomplete') set noAutocomplete(value: boolean) {\n    this._noAutocomplete = convertToBoolean(value);\n  }\n\n  get noAutocomplete() {\n    return this._noAutocomplete;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica que o campo será somente leitura.\n   *\n   * @default `false`\n   */\n  @Input('p-readonly') set readonly(value: boolean) {\n    this._readonly = convertToBoolean(value);\n\n    this.validateModel(this.dateRange);\n  }\n\n  get readonly() {\n    return this._readonly;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o campo será obrigatório.\n   *\n   * @default `false`\n   */\n  @Input('p-required') set required(required: boolean) {\n    this._required = convertToBoolean(required);\n\n    this.validateModel(this.dateRange);\n  }\n\n  get required() {\n    return this._required;\n  }\n\n  /**\n   * Define se a indicação de campo obrigatório será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - Não possuir `p-help` e/ou `p-label`.\n   */\n  @Input('p-show-required') showRequired: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura do input como 32px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura do input como 44px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Data inicial.\n   */\n  @Input('p-start-date') set startDate(date: string | Date) {\n    this._startDate = this.convertPatternDateFormat(date);\n    this.dateRange.start = this.startDate;\n\n    this.updateScreenByModel(this.dateRange);\n    this.updateModel(this.dateRange);\n  }\n\n  get startDate() {\n    return this._startDate;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Idioma que o calendário utilizará para exibir as datas.\n   *\n   * > O locale padrão será recuperado com base no [`PoI18nService`](/documentation/po-i18n) ou *browser*.\n   */\n  @Input('p-locale') set locale(value: string) {\n    if (value) {\n      this._locale = value.length >= 2 ? value : poLocaleDefault;\n      this.poMaskObject = this.buildMask(\n        replaceFormatSeparator(this.format, this.languageService.getDateSeparator(this.locale))\n      );\n    } else {\n      this._locale = this.language;\n      this.poMaskObject = this.buildMask(\n        replaceFormatSeparator(this.format, this.languageService.getDateSeparator(this.locale))\n      );\n    }\n  }\n\n  get locale(): string {\n    return this._locale || this.language;\n  }\n\n  constructor(\n    protected changeDetector: ChangeDetectorRef,\n    protected poDateService: PoDateService,\n    private readonly languageService: PoLanguageService\n  ) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  ngOnDestroy(): void {\n    this.subscription?.unsubscribe();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar os estados de habilitado via forms api\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n    this.changeDetector.markForCheck();\n  }\n\n  //Transforma o tamanho do input para o tamanho do ícone de loading correspondente\n  mapSizeToIcon(size: string): string {\n    return mapInputSizeToLoadingIcon(size);\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar as mudanças e não atualizar automaticamente o Model\n  registerOnChange(func: any): void {\n    this.onChangeModel = func;\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar as mudanças e não atualizar automaticamente o Model\n  registerOnTouched(func: any): void {\n    this.onTouchedModel = func;\n  }\n\n  registerOnValidatorChange?(fn: () => void): void {\n    this.validatorChange = fn;\n  }\n\n  validate(control: AbstractControl): ValidationErrors {\n    const value: PoDatepickerRange = control.value || {};\n    const startDate = value.start ? this.convertPatternDateFormat(value.start) : '';\n    const endDate = value.end ? this.convertPatternDateFormat(value.end) : '';\n\n    if (!this.hasValidatorRequired && this.fieldErrorMessage && control.hasValidator(Validators.required)) {\n      this.hasValidatorRequired = true;\n    }\n\n    if (this.requiredDateRangeFailed(startDate, endDate)) {\n      this.errorMessage = '';\n\n      return {\n        required: {\n          valid: false\n        }\n      };\n    }\n\n    if (!this.verifyValidDate(startDate, endDate)) {\n      this.errorMessage = this.literals.invalidDate;\n      return {\n        date: {\n          valid: false\n        }\n      };\n    }\n\n    if (this.dateRangeObjectFailed(control.value) || this.dateRangeFormatFailed(startDate, endDate)) {\n      this.errorMessage = this.literals.invalidFormat;\n\n      return {\n        date: {\n          valid: false\n        }\n      };\n    }\n\n    if (this.dateRangeFailed(startDate, endDate)) {\n      this.errorMessage = this.literals.startDateGreaterThanEndDate;\n\n      return {\n        date: {\n          valid: false\n        }\n      };\n    }\n\n    if ((startDate && !this.validateDateInRange(startDate)) || (endDate && !this.validateDateInRange(endDate))) {\n      this.errorMessage = this.literals.dateOutOfPeriod;\n\n      return {\n        date: {\n          valid: false\n        }\n      };\n    }\n\n    if (this.fieldErrorMessage) {\n      this.subscription?.unsubscribe();\n      this.subscription = control.statusChanges\n        .pipe(\n          switchMap(status => {\n            if (status === 'INVALID') {\n              this.changeDetector.markForCheck();\n            }\n            return [];\n          })\n        )\n        .subscribe();\n    }\n\n    return null;\n  }\n\n  validateDateInRange(startDate: any): boolean {\n    return validateDateRange(convertIsoToDate(startDate, false, false), this._minDate, this._maxDate);\n  }\n\n  writeValue(dateRange: PoDatepickerRange): void {\n    this.resetDateRangeInputValidation();\n\n    if (!dateRange || this.dateRangeObjectFailed(dateRange)) {\n      this.dateRange = { start: '', end: '' };\n    }\n\n    if (!dateRange) {\n      this.validateModel(this.dateRange);\n    }\n\n    if (this.dateRangeObjectFailed(dateRange)) {\n      this.updateModel(dateRange);\n    }\n\n    if (this.isDateRangeObject(dateRange)) {\n      this.dateRange = {\n        start: this.convertPatternDateFormat(dateRange.start),\n        end: this.convertPatternDateFormat(dateRange.end)\n      };\n\n      this.updateModel(this.dateRange);\n    }\n\n    this.updateScreenByModel(this.dateRange);\n  }\n\n  // Retorna um objeto do tipo PoMask com a mascara configurada.\n  protected buildMask(format: string = this.format): PoMask {\n    let mask = format.toUpperCase();\n\n    mask = mask.replace(/DD/g, '99');\n    mask = mask.replace(/MM/g, '99');\n    mask = mask.replace(/YYYY/g, '9999');\n\n    return new PoMask(mask, true);\n  }\n\n  protected dateFormatFailed(value: string): boolean {\n    return value && !this.poDateService.isValidIso(value);\n  }\n\n  // Executa a função onChange\n  protected updateModel(value: any) {\n    const model = typeof value === 'object' ? { ...value } : value;\n    // Quando o input não possui um formulário, então esta função não é registrada\n    if (this.onChangeModel) {\n      this.onChangeModel(model);\n    }\n  }\n\n  protected validateModel(value: any) {\n    const model = { ...value };\n    if (this.validatorChange) {\n      this.validatorChange(model);\n    }\n  }\n\n  protected verifyValidDate(startDate: string, endDate: string) {\n    if (startDate !== '' && endDate !== '') {\n      return this.dateIsValid(startDate) && this.dateIsValid(endDate);\n    } else if (startDate !== '') {\n      return this.dateIsValid(startDate);\n    } else {\n      return this.dateIsValid(endDate);\n    }\n  }\n\n  private convertPatternDateFormat(value: any) {\n    if (value instanceof Date) {\n      return this.poDateService.convertDateToISO(value);\n    }\n\n    return value;\n  }\n\n  private dateRangeFailed(startDate: string, endDate: string): boolean {\n    return !this.poDateService.isDateRangeValid(endDate, startDate) || !this.isStartDateRangeInputValid;\n  }\n\n  private dateRangeFormatFailed(startDate: string, endDate: string): boolean {\n    return this.dateFormatFailed(endDate) || this.dateFormatFailed(startDate) || !this.isDateRangeInputFormatValid;\n  }\n\n  private dateRangeObjectFailed(value): boolean {\n    return value && !this.isDateRangeObject(value);\n  }\n\n  private isDateRangeObject(value): boolean {\n    return value && value.hasOwnProperty('start') && value.hasOwnProperty('end');\n  }\n\n  private requiredDateRangeFailed(startDate: string, endDate: string): boolean {\n    return (\n      this.isDateRangeInputValid &&\n      PoValidators.requiredFailed(this.required || this.hasValidatorRequired, this.disabled, startDate) &&\n      PoValidators.requiredFailed(this.required || this.hasValidatorRequired, this.disabled, endDate)\n    );\n  }\n\n  private dateIsValid(date: string) {\n    const [strYear, strMonth, strDay] = date.split('-');\n    const year = Number(strYear);\n    const month = Number(strMonth);\n    const day = Number(strDay);\n\n    //verificação dos meses com 31 dias\n    if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) {\n      return day < 1 || day > 31 ? false : true;\n    } else if (month === 4 || month === 6 || month === 9 || month === 11) {\n      //verificação dos meses com 30 dias\n      return day < 1 || day > 30 ? false : true;\n    } else {\n      //verificacao de ano bissexto para verificar até qual dia irá o mês de fevereiro\n      if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {\n        return day < 1 || day > 29 ? false : true;\n      } else {\n        return day < 1 || day > 28 ? false : true;\n      }\n    }\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n\n  protected abstract resetDateRangeInputValidation(): void;\n\n  protected abstract updateScreenByModel(dateRange: PoDatepickerRange);\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  forwardRef,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  inject,\n  HostListener\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PoControlPositionService } from './../../../services/po-control-position/po-control-position.service';\n\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport { PoDateService } from './../../../services/po-date/po-date.service';\nimport { isMobile, replaceFormatSeparator, setHelperSettings, uuid } from './../../../utils/util';\nimport { PoDatepickerRange } from './interfaces/po-datepicker-range.interface';\nimport { PoDatepickerRangeBaseComponent } from './po-datepicker-range-base.component';\nimport { PoHelperComponent } from '../../po-helper';\nimport { PoButtonComponent } from '../../po-button';\n\nconst arrowLeftKey = 37;\nconst arrowRightKey = 39;\nconst backspaceKey = 8;\nconst poDatepickerRangeDateLengthDefault = 10;\n\nconst poCalendarContentOffset = 8;\nconst poCalendarPositionDefault = 'bottom-left';\n\n/* istanbul ignore next */\nconst providers = [\n  {\n    provide: NG_VALUE_ACCESSOR,\n    // eslint-disable-next-line\n    useExisting: forwardRef(() => PoDatepickerRangeComponent),\n    multi: true\n  },\n  {\n    provide: NG_VALIDATORS,\n    // eslint-disable-next-line\n    useExisting: forwardRef(() => PoDatepickerRangeComponent),\n    multi: true\n  },\n  PoControlPositionService\n];\n/**\n * @docsExtends PoDatepickerRangeBaseComponent\n *\n * @example\n *\n * <example name=\"po-datepicker-range-basic\" title=\"PO Datepicker Range Basic\">\n *  <file name=\"sample-po-datepicker-range-basic/sample-po-datepicker-range-basic.component.html\"> </file>\n *  <file name=\"sample-po-datepicker-range-basic/sample-po-datepicker-range-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-datepicker-range-presets\" title=\"PO Datepicker Range - Presets\">\n *  <file name=\"sample-po-datepicker-range-presets/sample-po-datepicker-range-presets.component.html\"> </file>\n *  <file name=\"sample-po-datepicker-range-presets/sample-po-datepicker-range-presets.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-datepicker-range-labs\" title=\"PO Datepicker Range Labs\">\n *  <file name=\"sample-po-datepicker-range-labs/sample-po-datepicker-range-labs.component.html\"> </file>\n *  <file name=\"sample-po-datepicker-range-labs/sample-po-datepicker-range-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-datepicker-range-vacations\" title=\"PO Datepicker Range - Vacations Suggestion\">\n *  <file name=\"sample-po-datepicker-range-vacations/sample-po-datepicker-range-vacations.component.html\"> </file>\n *  <file name=\"sample-po-datepicker-range-vacations/sample-po-datepicker-range-vacations.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-datepicker-range-vacations-reactive-form\" title=\"PO Datepicker Range - Vacations Reactive Form\">\n *  <file name=\"sample-po-datepicker-range-vacations-reactive-form/sample-po-datepicker-range-vacations-reactive-form.component.html\">\n *  </file>\n *  <file name=\"sample-po-datepicker-range-vacations-reactive-form/sample-po-datepicker-range-vacations-reactive-form.component.ts\">\n *  </file>\n * </example>\n */\n@Component({\n  selector: 'po-datepicker-range',\n  templateUrl: './po-datepicker-range.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers,\n  standalone: false\n})\nexport class PoDatepickerRangeComponent\n  extends PoDatepickerRangeBaseComponent\n  implements AfterViewInit, OnInit, OnDestroy, OnChanges\n{\n  private readonly controlPosition = inject(PoControlPositionService);\n  private readonly renderer = inject(Renderer2);\n  private readonly cd = inject(ChangeDetectorRef);\n  private readonly poLanguageService: PoLanguageService;\n\n  @ViewChild('dateRangeField', { read: ElementRef, static: true }) dateRangeField: ElementRef;\n  @ViewChild('endDateInput', { read: ElementRef, static: true }) endDateInput: ElementRef;\n  @ViewChild('startDateInput', { read: ElementRef, static: true }) startDateInput: ElementRef;\n  @ViewChild('iconCalendar') iconCalendar: PoButtonComponent;\n  @ViewChild('calendarPicker', { read: ElementRef }) calendarPicker: ElementRef;\n  @ViewChild('helperEl', { read: PoHelperComponent, static: false }) helperEl?: PoHelperComponent;\n  @ViewChild('iconClean', { read: ElementRef }) iconClean!: ElementRef<HTMLElement>;\n\n  id = `po-datepicker-range[${uuid()}]`;\n  isCalendarVisible = false;\n  widthWithPresets = false;\n\n  private clickListener;\n  private eventResizeListener;\n  private readonly poDatepickerRangeElement: ElementRef<any>;\n  private readonly MIN_CALENDAR_WIDTH_WITH_PRESETS = {\n    medium: 624,\n    small: 512\n  };\n\n  get autocomplete() {\n    return this.noAutocomplete ? 'off' : 'on';\n  }\n\n  get enableCleaner(): boolean {\n    return this.clean && (this.startDateInputValue || this.endDateInputValue) && !this.disabled && !this.readonly;\n  }\n\n  get endDateInputName(): string {\n    return 'end-date';\n  }\n\n  get endDateInputValue(): string {\n    return this.endDateInput.nativeElement.value;\n  }\n\n  get getErrorMessage(): string {\n    if (this.fieldErrorMessage && !this.errorMessage && this.hasInvalidClass()) {\n      return this.fieldErrorMessage;\n    }\n    return this.errorMessage !== '' && this.hasInvalidClass() ? this.errorMessage : '';\n  }\n\n  get isDateRangeInputUncompleted(): boolean {\n    return (\n      this.endDateInputValue.length < poDatepickerRangeDateLengthDefault &&\n      this.startDateInputValue.length < poDatepickerRangeDateLengthDefault\n    );\n  }\n\n  get isDirtyDateRangeInput(): boolean {\n    return this.endDateInputValue.length > 0 || this.startDateInputValue.length > 0;\n  }\n\n  get startDateInputName(): string {\n    return 'start-date';\n  }\n\n  get startDateInputValue(): string {\n    return this.startDateInput.nativeElement.value;\n  }\n\n  constructor() {\n    const changeDetector = inject(ChangeDetectorRef);\n    const poLanguageService = inject(PoLanguageService);\n    const poDateService = inject(PoDateService);\n    const poDatepickerRangeElement = inject(ElementRef);\n\n    super(changeDetector, poDateService, poLanguageService);\n    this.changeDetector = changeDetector;\n    this.poLanguageService = poLanguageService;\n\n    this.poDatepickerRangeElement = poDatepickerRangeElement;\n  }\n\n  static getKeyCode(event: KeyboardEvent) {\n    return event.keyCode || event.which;\n  }\n\n  static getTargetElement(event: any) {\n    return event.target || event.srcElement;\n  }\n\n  static isValidKey(keyCode: number): boolean {\n    const isNumericKey = keyCode >= 48 && keyCode <= 57;\n    const isNumericNumpadKey = keyCode >= 96 && keyCode <= 105;\n\n    return isNumericKey || isNumericNumpadKey;\n  }\n\n  ngAfterViewInit() {\n    if (this.autoFocus) {\n      this.focus();\n    }\n    if (this.iconCalendar?.buttonElement?.nativeElement) {\n      this.renderer.setAttribute(this.iconCalendar.buttonElement.nativeElement, 'aria-label', this.literals.open);\n    }\n  }\n\n  ngOnInit() {\n    // Classe de máscara\n    this.poMaskObject = this.buildMask(\n      replaceFormatSeparator(this.format, this.poLanguageService.getDateSeparator(this.locale))\n    );\n\n    this.widthWithPresets = window.innerWidth < this.MIN_CALENDAR_WIDTH_WITH_PRESETS[this.size];\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.minDate || changes.maxDate) {\n      this.validateModel(this.dateRange);\n    }\n    if (changes.locale) {\n      if (this.dateRange) {\n        this.updateScreenByModel(this.dateRange);\n      }\n      this.poMaskObject = this.buildMask(\n        replaceFormatSeparator(this.format, this.poLanguageService.getDateSeparator(this.locale))\n      );\n    }\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n  }\n\n  ngOnDestroy() {\n    this.removeListeners();\n  }\n\n  clear() {\n    this.resetDateRangeInputValidation();\n    this.dateRange = { start: '', end: '' };\n\n    this.updateScreenByModel(this.dateRange);\n    this.updateModel(this.dateRange);\n  }\n\n  clearAndFocus() {\n    this.clear();\n    this.startDateInput.nativeElement.focus();\n  }\n\n  emitAdditionalHelp() {\n    if (this.label && this.isAdditionalHelpEventTriggered()) {\n      this.additionalHelp.emit();\n    }\n  }\n\n  eventOnClick($event: any) {\n    this.poMaskObject.click($event);\n  }\n\n  /**\n   * Função que atribui foco ao componente.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoDatepickerRangeComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoDatepickerRangeComponent, { static: true }) datepickerRange: PoDatepickerRangeComponent;\n   *\n   * focusDatepickerRange() {\n   *   this.datepickerRange.focus();\n   * }\n   * ```\n   */\n  focus(): void {\n    if (!this.disabled) {\n      this.startDateInput.nativeElement.focus();\n    }\n  }\n\n  getAdditionalHelpTooltip() {\n    return this.isAdditionalHelpEventTriggered() ? null : this.additionalHelpTooltip;\n  }\n\n  onBlur(event: any) {\n    this.onTouchedModel?.();\n\n    const isStartDateTargetEvent = event.target.name === this.startDateInputName;\n\n    this.updateModelByScreen(isStartDateTargetEvent);\n\n    this.removeFocusFromDatePickerRangeField();\n  }\n\n  onCalendarChange({ start, end }) {\n    const isStartDateTargetEvent = start && !end;\n\n    this.updateScreenByModel({ start: start || '', end: end || '' });\n    this.updateModelByScreen(isStartDateTargetEvent, start || '', end || '');\n\n    if (start && end) {\n      setTimeout(() => {\n        this.isCalendarVisible = false;\n        this.cd.markForCheck();\n        if (this.startDateInput?.nativeElement) {\n          this.startDateInput.nativeElement.focus();\n        }\n      }, 300);\n    } else if (!start && !end) {\n      this.closeCalendar();\n    }\n  }\n\n  onFocus(event: any) {\n    this.applyFocusOnDatePickerRangeField();\n    this.poMaskObject.resetPositions(event);\n  }\n\n  onKeydown(event?: any) {\n    const isStartDateFocused = document.activeElement === this.startDateInput.nativeElement;\n    const isEndDateFocused = document.activeElement === this.endDateInput.nativeElement;\n    const isFieldFocused = isStartDateFocused || isEndDateFocused;\n    if (this.readonly) {\n      return;\n    }\n\n    if (this.isSetFocusOnBackspace(event)) {\n      event.preventDefault();\n      this.setFocusOnBackspace();\n    } else {\n      this.poMaskObject.keydown(event);\n    }\n\n    if (isFieldFocused) {\n      this.keydown.emit(event);\n    }\n  }\n\n  onKeyPress(event: any) {\n    if (this.handleShiftTabWithCleaner(event)) return;\n\n    if (this.handleShiftTabWithoutCleaner(event)) return;\n\n    if (this.handleTabWithCalendarVisible(event)) return;\n  }\n\n  private handleShiftTabWithCleaner(event: any): boolean {\n    if (event.key === 'Tab' && event.shiftKey && !this.isCalendarVisible && this.enableCleaner) {\n      this.iconClean.nativeElement?.focus();\n      event.preventDefault();\n      return true;\n    }\n    return false;\n  }\n\n  private handleShiftTabWithoutCleaner(event: any): boolean {\n    if (event.key === 'Tab' && event.shiftKey && !this.isCalendarVisible) {\n      this.focus();\n      event.preventDefault();\n      event.stopPropagation();\n      return true;\n    }\n    return false;\n  }\n\n  private handleTabWithCalendarVisible(event: any): boolean {\n    if (event.key === 'Tab' && !event.shiftKey && this.isCalendarVisible) {\n      if (this.handleMobileNavigation(event)) return true;\n\n      if (this.handlePresetNavigation(event)) return true;\n\n      return this.handleComboNavigation(event);\n    }\n\n    return false;\n  }\n\n  private handleMobileNavigation(event: any): boolean {\n    if (this.verifyMobile()) {\n      const firstCombo = this.calendarPicker.nativeElement.querySelector('.po-combo-first .po-combo-input');\n\n      if (firstCombo) {\n        event.preventDefault();\n        firstCombo.focus();\n      }\n\n      return true;\n    }\n\n    return false;\n  }\n\n  private handlePresetNavigation(event: any): boolean {\n    const firstPreset = this.calendarPicker.nativeElement.querySelector('.po-calendar-preset-item .po-button');\n\n    if (firstPreset && !this.calculateWidthWithPresets()) {\n      event.preventDefault();\n      firstPreset.focus();\n      return true;\n    }\n\n    return false;\n  }\n\n  private handleComboNavigation(event: any): boolean {\n    const firstCombo = this.calendarPicker.nativeElement.querySelector('.po-combo-first .po-combo-input');\n\n    if (firstCombo) {\n      event.preventDefault();\n      firstCombo.focus();\n      return true;\n    }\n\n    return false;\n  }\n\n  @HostListener('keydown', ['$event'])\n  onKeydownDatepickerRange($event?: any) {\n    if (this.readonly) {\n      return;\n    }\n\n    if ($event.key === 'Escape' && this.isCalendarVisible) {\n      this.isCalendarVisible = false;\n\n      $event.preventDefault();\n      $event.stopPropagation();\n    }\n\n    if (\n      $event.key === 'Tab' &&\n      $event.shiftKey &&\n      $event.target === this.startDateInput.nativeElement &&\n      this.isCalendarVisible\n    ) {\n      this.isCalendarVisible = false;\n    }\n\n    if ($event.key === 'Tab' && !$event.shiftKey && $event.target === this.iconClean?.nativeElement) {\n      $event.preventDefault();\n      $event.stopPropagation();\n\n      this.iconCalendar.buttonElement?.nativeElement.focus();\n    }\n  }\n\n  onKeyup(event: any) {\n    if (this.readonly) {\n      return;\n    }\n\n    const isStartDateTargetEvent = event.target.name === this.startDateInputName;\n\n    this.setFocus(event);\n    this.poMaskObject.keyup(event);\n    this.updateModelWhenComplete(isStartDateTargetEvent, this.startDateInputValue, this.endDateInputValue);\n  }\n\n  resetDateRangeInputValidation() {\n    this.isStartDateRangeInputValid = true;\n    this.isDateRangeInputFormatValid = true;\n  }\n\n  /**\n   * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n   * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `p-keydown`.\n   *\n   * > Exibe ou oculta o conteúdo do componente `po-helper` quando o componente estiver com foco.\n   *\n   * ```\n   * // Exemplo com p-label e p-helper\n   * <po-datepicker-range\n   *  #datepickerRange\n   *  ...\n   *  p-label=\"Label do datepickerRange\n   *  [p-helper]=\"helperOptions\"\n   *  (p-keydown)=\"onKeyDown($event, datepickerRange)\"\n   * ></po-datepicker-range>\n   * ```\n   * ```\n   * ...\n   * onKeyDown(event: KeyboardEvent, inp: PoDatepickerRangeComponent): void {\n   *  if (event.code === 'F9') {\n   *    inp.showAdditionalHelp();\n   *  }\n   * }\n   * ```\n   */\n  showAdditionalHelp(): boolean {\n    this.displayAdditionalHelp = !this.displayAdditionalHelp;\n    const helper = this.poHelperComponent();\n    const isHelpEvt = this.isAdditionalHelpEventTriggered();\n    if (!this.label && (helper || this.additionalHelpTooltip || isHelpEvt)) {\n      if (isHelpEvt) {\n        this.additionalHelp.emit();\n      }\n      if (typeof helper !== 'string' && typeof helper?.eventOnClick === 'function') {\n        helper.eventOnClick();\n        return;\n      }\n      if (this.helperEl?.helperIsVisible()) {\n        this.helperEl?.closeHelperPopover();\n        return;\n      }\n      this.helperEl?.openHelperPopover();\n      return;\n    }\n    return this.displayAdditionalHelp;\n  }\n\n  enableHorizontalMouseWheel() {\n    const el = this?.calendarPicker.nativeElement.querySelector('.po-calendar-preset-list');\n\n    el.addEventListener('wheel', (event: WheelEvent) => {\n      event.preventDefault();\n      el.scrollLeft += event.deltaY;\n    });\n  }\n\n  toggleCalendar() {\n    if (this.disabled || this.readonly) {\n      return;\n    }\n\n    this.isCalendarVisible = !this.isCalendarVisible;\n    this.changeDetector.markForCheck();\n\n    if (this.isCalendarVisible) {\n      if (this.calculateWidthWithPresets()) {\n        this.enableHorizontalMouseWheel();\n      }\n\n      this.setCalendarPosition();\n      this.initializeListeners();\n    } else {\n      this.removeListeners();\n    }\n  }\n\n  updateScreenByModel(model: PoDatepickerRange) {\n    const dateRange = { start: model.start as string, end: model.end as string };\n    const isStartDateValid = this.poDateService.isDateRangeValid(dateRange.end, dateRange.start);\n    const isDateValid = date => !this.dateFormatFailed(date) && isStartDateValid;\n\n    const endDateFormated = isDateValid(dateRange.end) ? this.formatModelToScreen(dateRange.end) : '';\n    const startDateFormated = isDateValid(dateRange.start) ? this.formatModelToScreen(dateRange.start) : '';\n\n    this.endDateInput.nativeElement.value = endDateFormated;\n    this.startDateInput.nativeElement.value = startDateFormated;\n    this.changeDetector.detectChanges();\n  }\n\n  onCalendarKeyDown(event: KeyboardEvent): void {\n    if (!this.isCalendarVisible) return;\n\n    if (event.key === 'Escape') {\n      event.preventDefault();\n      event.stopPropagation();\n\n      this.iconCalendar.buttonElement?.nativeElement.focus();\n      this.isCalendarVisible = false;\n      return;\n    }\n\n    if (event.key === 'Tab' && event.shiftKey && this.isFocusOnFirstCombo()) {\n      if (this.verifyMobile()) {\n        event.preventDefault();\n        event.stopPropagation();\n        this.iconCalendar.buttonElement?.nativeElement.focus();\n        this.isCalendarVisible = false;\n        return;\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n\n      const firstPreset = this.calendarPicker.nativeElement.querySelector('.po-calendar-preset-item .po-button');\n      if (firstPreset && !this.calculateWidthWithPresets()) {\n        firstPreset.focus();\n        return;\n      }\n\n      this.iconCalendar.buttonElement?.nativeElement.focus();\n      this.isCalendarVisible = false;\n    }\n  }\n\n  setHelper(label?: string, additionalHelpTooltip?: string) {\n    return setHelperSettings(\n      label,\n      additionalHelpTooltip,\n      this.poHelperComponent(),\n      this.size,\n      this.isAdditionalHelpEventTriggered() ? this.additionalHelp : undefined\n    );\n  }\n\n  @HostListener('window:resize')\n  onResize() {\n    this.updateWidthWithPresets();\n  }\n\n  private calculateWidthWithPresets(): boolean {\n    const hasPresets = this.rangePresets || this.rangePresetOptions?.length > 0;\n\n    if (!hasPresets) {\n      return false;\n    }\n\n    const minWidth = this.MIN_CALENDAR_WIDTH_WITH_PRESETS[this.size];\n\n    if (!minWidth) {\n      return false;\n    }\n\n    return window.innerWidth < minWidth;\n  }\n\n  private updateWidthWithPresets() {\n    this.widthWithPresets = this.calculateWidthWithPresets();\n  }\n\n  verifyMobile() {\n    return isMobile();\n  }\n\n  setCalendarPosition() {\n    if (this.verifyMobile()) {\n      return;\n    }\n\n    if (this?.calendarPicker.nativeElement && this.isCalendarVisible) {\n      requestAnimationFrame(() => {\n        const scrollHeight =\n          this.calendarPicker.nativeElement.querySelector('.po-calendar')?.scrollHeight ??\n          this.calendarPicker.nativeElement.scrollHeight;\n        const scrollWidth =\n          this.calendarPicker.nativeElement.querySelector('.po-calendar')?.scrollWidth ??\n          this.calendarPicker.nativeElement.scrollWidth;\n\n        this.calendarPicker.nativeElement.style.height = scrollHeight + 'px';\n        this.calendarPicker.nativeElement.style.width = scrollWidth + 'px';\n\n        this.controlPosition.setElements(\n          this.calendarPicker.nativeElement,\n          poCalendarContentOffset,\n          this.dateRangeField,\n          ['bottom-left', 'bottom-right', 'top-left', 'top-right'],\n          false,\n          true\n        );\n\n        this.controlPosition.adjustPosition(poCalendarPositionDefault);\n      });\n    }\n  }\n\n  private applyFocusOnDatePickerRangeField() {\n    this.dateRangeField.nativeElement.classList.add('po-datepicker-range-field-focused');\n  }\n\n  private formatDate(format: string, day: string = '', month: string = '', year: string = ''): string {\n    let dateFormatted = replaceFormatSeparator(\n      format || this.format,\n      this.poLanguageService.getDateSeparator(this.locale)\n    );\n\n    day = day && day.includes('T') ? day.slice(0, 2) : day;\n\n    dateFormatted = dateFormatted.replace('dd', ('0' + day).slice(-2));\n    dateFormatted = dateFormatted.replace('mm', ('0' + month).slice(-2));\n    dateFormatted = dateFormatted.replace('yyyy', String(year));\n\n    return dateFormatted;\n  }\n\n  private formatScreenToModel(value: string = ''): string {\n    const [day, month, year] = value.split(this.poLanguageService.getDateSeparator(this.locale));\n\n    return value ? this.formatDate('yyyy-mm-dd', day, month, year) : '';\n  }\n\n  private formatModelToScreen(value: string = ''): string {\n    const [year, month, day] = value.split('-');\n\n    return value ? this.formatDate(this.format, day, month, year) : '';\n  }\n\n  private getDateRangeFormatValidation(\n    startDate: string,\n    endDate: string,\n    isStartDateTargetEvent: boolean\n  ): { isValid: boolean; dateRangeModel: PoDatepickerRange } {\n    this.setDateRangeInputValidation(startDate, endDate);\n    return {\n      isValid:\n        this.isDateRangeInputFormatValid && this.isStartDateRangeInputValid && this.verifyValidDate(startDate, endDate),\n      dateRangeModel: this.getValidatedModel(startDate, endDate, isStartDateTargetEvent)\n    };\n  }\n\n  private getValidatedModel(startDate: string, endDate: string, isStartDateTargetEvent: boolean): PoDatepickerRange {\n    const dateRangeModel = { start: '', end: '' };\n\n    dateRangeModel.end =\n      (isStartDateTargetEvent || this.isStartDateRangeInputValid) && !this.dateFormatFailed(endDate) ? endDate : '';\n\n    dateRangeModel.start =\n      (!isStartDateTargetEvent || this.isStartDateRangeInputValid) && !this.dateFormatFailed(startDate)\n        ? startDate\n        : '';\n\n    return dateRangeModel;\n  }\n\n  private hasAttrCalendar(element) {\n    const attrCalendar = 'attr-calendar';\n\n    return element?.hasAttribute(attrCalendar) || element?.parentElement?.hasAttribute(attrCalendar);\n  }\n\n  private hasInvalidClass(): boolean {\n    return (\n      this.poDatepickerRangeElement.nativeElement.classList.contains('ng-invalid') &&\n      this.poDatepickerRangeElement.nativeElement.classList.contains('ng-dirty')\n    );\n  }\n\n  private initializeListeners() {\n    this.clickListener = this.renderer.listen('document', 'click', (event: MouseEvent) => {\n      this.wasClickedOnPicker(event);\n    });\n\n    this.eventResizeListener = this.renderer.listen('window', 'resize', () => {\n      this.isCalendarVisible = false;\n    });\n\n    window.addEventListener('scroll', this.onScroll, true);\n  }\n\n  private isAdditionalHelpEventTriggered(): boolean {\n    return (\n      this.additionalHelpEventTrigger === 'event' ||\n      (this.additionalHelpEventTrigger === undefined && this.additionalHelp.observed)\n    );\n  }\n\n  private isEqualBeforeValue(startDate: string, endDate: string): boolean {\n    return this.isDateRangeInputFormatValid && endDate === this.dateRange.end && startDate === this.dateRange.start;\n  }\n\n  private isFocusOnFirstCombo(): boolean {\n    const first = this.calendarPicker.nativeElement.querySelector('.po-combo-first .po-combo-input');\n    return first === document.activeElement;\n  }\n\n  private isSetFocusOnBackspace(event: any) {\n    return (\n      event.target.name === this.endDateInputName &&\n      this.endDateInput.nativeElement.selectionStart === 0 &&\n      this.endDateInput.nativeElement.selectionEnd === 0 &&\n      event.keyCode === backspaceKey\n    );\n  }\n\n  private readonly onScroll = (): void => {\n    if (this.isCalendarVisible && !this.verifyMobile()) {\n      this.controlPosition.adjustPosition(poCalendarPositionDefault);\n    }\n  };\n\n  private removeFocusFromDatePickerRangeField() {\n    this.dateRangeField.nativeElement.classList.remove('po-datepicker-range-field-focused');\n  }\n\n  private setDateRangeInputValidation(startDate: string, endDate: string) {\n    this.isStartDateRangeInputValid = this.poDateService.isDateRangeValid(endDate, startDate);\n\n    this.isDateRangeInputFormatValid = !this.dateFormatFailed(startDate) && !this.dateFormatFailed(endDate);\n  }\n\n  private setFocus(event: any) {\n    const inputElement = PoDatepickerRangeComponent.getTargetElement(event);\n    const keyCode = PoDatepickerRangeComponent.getKeyCode(event);\n    const inputName = inputElement['name'];\n\n    this.setFocusOnArrowLeft(keyCode, inputName);\n    this.setFocusOnArrowRight(keyCode, inputName, inputElement);\n    this.setFocusOnStartDateCompleted(keyCode, inputName);\n  }\n\n  private setFocusAndPosition(position: number, inputElement: ElementRef, selectionRange: number) {\n    this.focusOnElement(inputElement);\n\n    setTimeout(() => {\n      inputElement.nativeElement.setSelectionRange(selectionRange, selectionRange);\n      this.poMaskObject.initialPosition = position;\n      this.poMaskObject.finalPosition = position;\n    });\n  }\n\n  private focusOnElement(inputElement: ElementRef) {\n    inputElement.nativeElement.focus();\n  }\n\n  private removeListeners() {\n    if (this.clickListener) {\n      this.clickListener();\n    }\n\n    if (this.eventResizeListener) {\n      this.eventResizeListener();\n    }\n\n    window.removeEventListener('scroll', this.onScroll, true);\n  }\n\n  private setFocusOnArrowLeft(keyCode: number, inputName: string) {\n    const isCursorAtStartOfInput = this.endDateInput.nativeElement.selectionStart === 0;\n\n    if (inputName === this.endDateInputName && isCursorAtStartOfInput && keyCode === arrowLeftKey) {\n      const inputLength = this.startDateInput.nativeElement.value.length;\n      this.setFocusAndPosition(inputLength, this.startDateInput, inputLength);\n    }\n  }\n\n  private setFocusOnArrowRight(keyCode: number, inputName: string, inputElement: any) {\n    const isCursorAtEndOfInput = this.startDateInput.nativeElement.selectionStart === inputElement.value.length;\n\n    if (inputName === this.startDateInputName && isCursorAtEndOfInput && keyCode === arrowRightKey) {\n      this.setFocusAndPosition(0, this.endDateInput, 0);\n    }\n  }\n\n  private setFocusOnBackspace() {\n    const inputLength = this.startDateInput.nativeElement.value.length;\n\n    this.startDateInput.nativeElement.value = this.startDateInputValue.slice(0, -1);\n    this.setFocusAndPosition(inputLength, this.startDateInput, inputLength);\n  }\n\n  private setFocusOnStartDateCompleted(keyCode: number, inputName: string) {\n    const isLastKeyPressed = this.startDateInput.nativeElement.selectionStart === poDatepickerRangeDateLengthDefault;\n    const isNewDateCompleted =\n      this.startDateInputValue.length === poDatepickerRangeDateLengthDefault && isLastKeyPressed;\n    const isValidKey = PoDatepickerRangeComponent.isValidKey(keyCode);\n\n    if (inputName === this.startDateInputName && isNewDateCompleted && isValidKey) {\n      this.setFocusAndPosition(0, this.endDateInput, 0);\n    }\n  }\n\n  private updateModelWhenComplete(isStartDateTargetEvent: boolean, startDate, endDate) {\n    const endDateFormatted = this.formatScreenToModel(endDate);\n    const startDateFormatted = this.formatScreenToModel(startDate);\n    const dateFormatValidation = this.getDateRangeFormatValidation(\n      startDateFormatted,\n      endDateFormatted,\n      isStartDateTargetEvent\n    );\n\n    if (this.isEqualBeforeValue(startDateFormatted, endDateFormatted)) {\n      this.resetDateRangeInputValidation();\n      this.validateModel(this.dateRange);\n      return;\n    }\n\n    if (dateFormatValidation.isValid) {\n      this.dateRange = { start: startDateFormatted, end: endDateFormatted };\n      this.updateModel(this.dateRange);\n      this.onChange.emit({ ...this.dateRange });\n    }\n  }\n\n  private updateModelByScreen(isStartDateTargetEvent: boolean, startDate?, endDate?) {\n    const endDateFormatted = endDate || this.formatScreenToModel(this.endDateInputValue);\n    const startDateFormatted = startDate || this.formatScreenToModel(this.startDateInputValue);\n    if (this.isDateRangeInputUncompleted && this.isDirtyDateRangeInput) {\n      this.updateModel(this.dateRange);\n      return;\n    }\n\n    if (this.isEqualBeforeValue(startDateFormatted, endDateFormatted)) {\n      this.resetDateRangeInputValidation();\n      this.validateModel(this.dateRange);\n      return;\n    }\n\n    const dateFormatValidation = this.getDateRangeFormatValidation(\n      startDateFormatted,\n      endDateFormatted,\n      isStartDateTargetEvent\n    );\n\n    if (dateFormatValidation.isValid) {\n      this.dateRange = { start: startDateFormatted, end: endDateFormatted };\n      this.updateModel(this.dateRange);\n      this.onChange.emit({ ...this.dateRange });\n    }\n\n    if (!dateFormatValidation.isValid && this.verifyFormattedDates(startDateFormatted, endDateFormatted)) {\n      this.dateRange = { ...dateFormatValidation.dateRangeModel };\n      this.updateModel(dateFormatValidation.dateRangeModel);\n    }\n  }\n\n  private verifyFormattedDates(start: string, end: string): boolean {\n    return !!start || !!end;\n  }\n\n  private wasClickedOnPicker(event: Event): void {\n    if (!this.isCalendarVisible) {\n      return;\n    }\n\n    const calendarEl = this.calendarPicker?.nativeElement;\n    const iconEl = this.iconCalendar?.buttonElement?.nativeElement;\n    const target = event.target as Node;\n\n    if (\n      calendarEl &&\n      iconEl &&\n      !calendarEl.contains(target) &&\n      !iconEl.contains(target) &&\n      !this.hasAttrCalendar(target)\n    ) {\n      this.isCalendarVisible = false;\n    }\n\n    this.cd.markForCheck();\n  }\n\n  closeCalendar() {\n    this.isCalendarVisible = false;\n    setTimeout(() => {\n      if (this.iconCalendar) {\n        this.iconCalendar.focus();\n      }\n    });\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n<po-field-container\n  [class.po-date-picker-container-disabled]=\"isDisabled\"\n  [p-disabled]=\"isDisabled\"\n  [p-id]=\"id\"\n  [p-label]=\"label\"\n  [p-optional]=\"optional\"\n  [p-required]=\"required\"\n  [p-show-required]=\"showRequired\"\n  [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n  [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n  [p-size]=\"size\"\n  [p-text-wrap]=\"labelTextWrap()\"\n  [p-compact-label]=\"compactLabel()\"\n>\n  <div\n    cdkOverlayOrigin\n    #trigger=\"cdkOverlayOrigin\"\n    class=\"po-field-container-content po-field-container-content-datepicker-range\"\n  >\n    <div class=\"po-field-container-input\" [class.readonly]=\"readonly && !isDisabled && !loading\">\n      <div\n        #dateRangeField\n        role=\"group\"\n        class=\"po-datepicker-range-field po-input\"\n        [class.po-datepicker-range-field-disabled]=\"isDisabled\"\n        [class.po-input-icon-right]=\"enableCleaner && !isDisabled\"\n        [attr.disabled]=\"isDisabled\"\n        [attr.aria-label]=\"label\"\n        [attr.p-size]=\"size\"\n      >\n        <div class=\"po-datepicker-range-start-date\" [attr.data-value]=\"startDateInputValue || placeholder?.start\">\n          <input\n            #startDateInput\n            class=\"po-datepicker-range-input\"\n            maxlength=\"10\"\n            type=\"text\"\n            [attr.aria-label]=\"literals.startDate\"\n            [autocomplete]=\"autocomplete\"\n            [attr.data-focused-element]=\"!isDisabled\"\n            [attr.data-inactive-component]=\"isDisabled || readonly\"\n            [disabled]=\"isDisabled\"\n            [id]=\"id\"\n            [name]=\"startDateInputName\"\n            [readonly]=\"readonly\"\n            [required]=\"required\"\n            [placeholder]=\"isDisabled ? '' : placeholder?.start\"\n            (blur)=\"onBlur($event)\"\n            (focus)=\"onFocus($event)\"\n            (keydown)=\"onKeydown($event)\"\n            (keyup)=\"onKeyup($event)\"\n            (click)=\"eventOnClick($event)\"\n          />\n        </div>\n\n        <div class=\"po-datepicker-range-separator\">-</div>\n\n        <div class=\"po-datepicker-range-end-date\">\n          <input\n            #endDateInput\n            class=\"po-datepicker-range-input\"\n            maxlength=\"10\"\n            type=\"text\"\n            [attr.aria-label]=\"literals.endDate\"\n            [autocomplete]=\"autocomplete\"\n            [disabled]=\"isDisabled\"\n            [name]=\"endDateInputName\"\n            [readonly]=\"readonly\"\n            [placeholder]=\"isDisabled ? '' : placeholder?.end\"\n            (blur)=\"onBlur($event)\"\n            (focus)=\"onFocus($event)\"\n            (keydown)=\"onKeydown($event)\"\n            (keyup)=\"onKeyup($event)\"\n            (click)=\"eventOnClick($event)\"\n          />\n        </div>\n\n        @if (loading) {\n          <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n        } @else {\n          <div class=\"po-field-icon-container-right\">\n            @if (enableCleaner) {\n              <po-clean\n                #iconClean\n                tabindex=\"0\"\n                role=\"button\"\n                [attr.aria-label]=\"literals.clean\"\n                class=\"po-icon-input\"\n                p-icon=\"ICON_FILL_CLEAR_CONTENT\"\n                [p-size]=\"size\"\n                (p-change-event)=\"clear()\"\n                (keydown.enter)=\"clearAndFocus(); $event.preventDefault()\"\n                (keydown.space)=\"clearAndFocus(); $event.preventDefault()\"\n              ></po-clean>\n              <div class=\"po-button-vertical-divider\"></div>\n            }\n            <po-button\n              #iconCalendar\n              class=\"po-datepicker-range-button\"\n              [class.po-button-tertiary-danger]=\"getErrorMessage\"\n              p-icon=\"ICON_CALENDAR_DOTS\"\n              p-kind=\"tertiary\"\n              [p-disabled]=\"isDisabled || readonly\"\n              [p-size]=\"size\"\n              (keydown)=\"onKeyPress($event)\"\n              (p-click)=\"toggleCalendar()\"\n            >\n            </po-button>\n          </div>\n        }\n      </div>\n    </div>\n    @if ((!this.label && poHelperComponent()) || (!this.label && poHelper.hideAdditionalHelp)) {\n      <po-helper\n        #helperEl\n        class=\"po-field-helper-button\"\n        [p-size]=\"size\"\n        [p-helper]=\"poHelper.helperSettings\"\n        [p-disabled]=\"isDisabled\"\n        [p-append-in-body]=\"appendBox\"\n      >\n      </po-helper>\n    }\n  </div>\n\n  @if (!readonly) {\n    <po-field-container-bottom\n      [p-append-in-body]=\"appendBox\"\n      [p-help]=\"help\"\n      [p-disabled]=\"isDisabled\"\n      [p-error-pattern]=\"getErrorMessage\"\n      [p-error-limit]=\"errorLimit\"\n      [p-size]=\"size\"\n    ></po-field-container-bottom>\n  }\n</po-field-container>\n\n@if (appendBox) {\n  <ng-template\n    cdkConnectedOverlay\n    [cdkConnectedOverlayOrigin]=\"trigger\"\n    [cdkConnectedOverlayOpen]=\"true\"\n    [cdkConnectedOverlayDisableClose]=\"true\"\n  >\n    <ng-container *ngTemplateOutlet=\"sharedCalendarContent\"></ng-container>\n  </ng-template>\n} @else {\n  <ng-container *ngTemplateOutlet=\"sharedCalendarContent\"></ng-container>\n}\n\n<ng-template #sharedCalendarContent>\n  <div\n    #calendarPicker\n    [class.po-calendar-range-picker]=\"!verifyMobile()\"\n    [class.po-datepicker-range-calendar-mobile-container]=\"verifyMobile() && isCalendarVisible\"\n    [hidden]=\"!isCalendarVisible\"\n  >\n    @if (verifyMobile()) {\n      <div class=\"po-datepicker-calendar-overlay\" (click)=\"closeCalendar()\"></div>\n    }\n    <po-calendar\n      p-mode=\"range\"\n      [class.po-datepicker-range-calendar-mobile]=\"verifyMobile()\"\n      [ngModel]=\"dateRange\"\n      [p-max-date]=\"maxDate\"\n      [p-min-date]=\"minDate\"\n      [p-locale]=\"locale\"\n      [p-size]=\"size\"\n      [p-range-presets]=\"rangePresets\"\n      [p-range-preset-options]=\"rangePresetOptions\"\n      [p-range-presets-order]=\"rangePresetsOrder\"\n      [p-width-with-presets]=\"widthWithPresets\"\n      (ngModelChange)=\"onCalendarChange($event)\"\n      (p-change-month-year)=\"setCalendarPosition()\"\n      (keydown)=\"onCalendarKeyDown($event)\"\n      (p-close)=\"closeCalendar()\"\n    ></po-calendar>\n  </div>\n</ng-template>\n","import {\n  ChangeDetectorRef,\n  Directive,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  input,\n  Input,\n  OnDestroy,\n  Output,\n  TemplateRef,\n  ViewChild\n} from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, Validator, Validators } from '@angular/forms';\n\nimport { Subscription, switchMap } from 'rxjs';\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { convertToBoolean, getDefaultSizeFn, mapInputSizeToLoadingIcon, validateSizeFn } from '../../../utils/util';\nimport { ErrorAsyncProperties } from '../shared/interfaces/error-async-properties.interface';\nimport { maxlengpoailed, minlengpoailed, patternFailed, requiredFailed } from './../validators';\nimport { PoMask } from './po-mask';\nimport { PoHelperComponent, PoHelperOptions } from '../../po-helper';\nimport { PoFieldContainerComponent } from '../po-field-container';\n\n/**\n * @description\n *\n * Este é um componente baseado em input, com várias propriedades do input nativo e outras\n * propriedades extras como: máscara, pattern, mensagem de erro e etc.\n * Você deve informar a variável que contém o valor como [(ngModel)]=\"variavel\", para que o\n * input receba o valor da variável e para que ela receba as alterações do valor (two-way-databinding).\n * A propriedade name é obrigatória para que o formulário e o model funcionem corretamente.\n *\n * Importante:\n *\n * - Caso o input tenha um [(ngModel)] sem o atributo name, ocorrerá um erro de angular.\n * Então você precisa informar o atributo name ou o atributo [ngModelOptions]=\"{standalone: true}\".\n * Exemplo: [(ngModel)]=\"pessoa.nome\" [ngModelOptions]=\"{standalone: true}\".\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS): <br>\n * Obs: Só é possível realizar alterações ao adicionar a classe `.po-input`\n *\n * > Para correto alinhamento é recomendado o uso das classes de espaçamento do [Grid System](https://po-ui.io/guides/grid-system).\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                    |\n * |----------------------------------------|-------------------------------------------------------|-------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                 |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                      |\n * | `--font-size`                          | Tamanho da fonte                                      | `var(--font-size-default)`                      |\n * | `--text-color-placeholder`             | Cor do texto placeholder                              | `var(--color-neutral-light-30)`                 |\n * | `--color`                              | Cor pincipal do input                                 | `var(--color-neutral-dark-70)`                  |\n * | `--background`                         | Cor de background                                     | `var(--color-neutral-light-05)`                 |\n * | `--padding`                            | Preenchimento                                         |  `0 0.5rem`                                     |\n * | `--text-color`                         | Cor do texto                                          | `var(--color-neutral-dark-90)`                  |\n * | `--field-container-title-justify`      | Alinhamento horizontal do título (`justify-content`)  | `space-between`                                 |\n * | `--field-container-title-flex`         | Flex do título (`flex`)                               | `1 auto`                                        |\n * | **Hover**                              |                                                       |                                                 |\n * | `--color-hover`                        | Cor principal no estado hover                         | `var(--color-brand-01-dark)`                    |\n * | `--background-hover`                   | Cor de background no estado hover                     | `var(--color-brand-01-lightest)`                |\n * | **Focused**                            |                                                       |                                                 |\n * | `--color-focused`                      | Cor principal no estado de focus                      | `var(--color-action-default)`                   |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                     | `var(--color-action-focus)`                     |\n * | **Disabled**                           |                                                       |                                                 |\n * | `--color-disabled`                     | Cor principal no estado disabled                      | `var(--color-neutral-light-30)`                 |\n * | `--background-disabled`                | Cor de background no estado disabled                  | `var(--color-neutral-light-20)`                 |\n * | `--text-color-disabled`                | Cor do texto no estado disabled                       | `var(--color-neutral-dark-70)`                  |\n *\n * <br>\n */\n@Directive()\nexport abstract class PoInputBaseComponent implements ControlValueAccessor, Validator, OnDestroy {\n  @ViewChild('fieldContainer', { read: PoFieldContainerComponent, static: false })\n  fieldContainer?: PoFieldContainerComponent;\n  @ViewChild('helperEl', { read: PoHelperComponent, static: false }) helperEl?: PoHelperComponent;\n  // Propriedade interna que define se o ícone de ajuda adicional terá cursor clicável (evento) ou padrão (tooltip).\n  @Input() additionalHelpEventTrigger: string | undefined;\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de ajuda adicional, com o texto desta propriedade sendo passado para o popover do componente `po-helper`.\n   * **Como boa prática, indica-se utilizar um texto com até 140 caracteres.**\n   * > Requer um recuo mínimo de 8px se o componente estiver próximo à lateral da tela.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Input('p-additional-help-tooltip') additionalHelpTooltip?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o popover (`p-helper` e/ou `p-error-limit`) será incluído no body da página e não\n   * dentro do componente. Essa opção pode ser necessária em cenários com containers que possuem scroll ou overflow\n   * escondido, garantindo o posicionamento correto do tooltip próximo ao elemento.\n   *\n   * > Quando utilizado com `p-helper`, leitores de tela como o NVDA podem não ler o conteúdo do popover.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendBox: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Aplica foco no elemento ao ser iniciado.\n   *\n   * > Caso mais de um elemento seja configurado com essa propriedade, apenas o último elemento declarado com ela terá o foco.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-auto-focus', transform: convertToBoolean }) autoFocus: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define se o título do campo será exibido de forma compacta.\n   *\n   * Quando habilitado (`true`), o modo compacto afeta o conjunto composto por:\n   * - `po-label`\n   * - `p-requirement (showRequired)`\n   * - `po-helper`\n   *\n   * Ou seja, todos os elementos relacionados ao título do campo\n   * (rótulo, indicador de obrigatoriedade e componente auxiliar) passam\n   * a seguir o comportamento de layout compacto.\n   *\n   * Também é possível definir esse comportamento de forma global,\n   * uma única vez, na folha de estilo geral da aplicação, por meio\n   * da customização dos tokens CSS:\n   *\n   * - `--field-container-title-justify`\n   * - `--field-container-title-flex`\n   *\n   * Exemplo:\n   *\n   * ```\n   * :root {\n   *   --field-container-title-justify: flex-start;\n   *   --field-container-title-flex: 0 1 auto;\n   * }\n   * ```\n   *\n   * Dessa forma, o layout compacto passa a ser o padrão da aplicação,\n   * sem a necessidade de definir a propriedade individualmente em cada campo.\n   *\n   * @default `false`\n   */\n  compactLabel = input<boolean, unknown>(false, { alias: 'p-compact-label', transform: convertToBoolean });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o ícone que será exibido no início do campo.\n   *\n   * É possível usar qualquer um dos ícones da [Biblioteca de ícones](https://po-ui.io/icons). conforme exemplo abaixo:\n   * ```\n   * <po-input p-icon=\"an an-user\" p-label=\"PO input\"></po-input>\n   * ```\n   * Também é possível utilizar outras fontes de ícones, por exemplo a biblioteca *Font Awesome*, da seguinte forma:\n   * ```\n   * <po-input p-icon=\"fa fa-podcast\" p-label=\"PO input\"></po-input>\n   * ```\n   * Outra opção seria a customização do ícone através do `TemplateRef`, conforme exemplo abaixo:\n   * ```\n   * <po-input [p-icon]=\"template\" p-label=\"input template ionic\"></po-input>\n   *\n   * <ng-template #template>\n   *  <ion-icon style=\"font-size: inherit\" name=\"heart\"></ion-icon>\n   * </ng-template>\n   * ```\n   * > Para o ícone enquadrar corretamente, deve-se utilizar `font-size: inherit` caso o ícone utilizado não aplique-o.\n   */\n  @Input('p-icon') icon?: string | TemplateRef<void>;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Sempre emite as alterações do model mesmo quando o valor atual for igual ao valor anterior.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-emit-all-changes', transform: convertToBoolean }) emitAllChanges: boolean = false;\n\n  /** Rótulo do campo. */\n  @Input('p-label') label?: string;\n\n  /** Texto de apoio do campo. */\n  @Input('p-help') help?: string;\n\n  /** Nome e identificador do campo. */\n  @Input('name') name: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Realiza alguma validação customizada assíncrona no componente.\n   * Aconselhamos a utilização dessa propriedade somente em componentes que não estejam\n   * utilizando `Reactive Forms`. Em formulários reativos, pode-se utilizar o próprio `asyncValidators`.\n   */\n  @Input('p-error-async-properties') errorAsyncProperties: ErrorAsyncProperties;\n\n  /**\n   * @description\n   *\n   * Mensagem que será apresentada quando o `pattern` ou a máscara não for satisfeita.\n   *\n   * > Por padrão, esta mensagem não é apresentada quando o campo estiver vazio, mesmo que ele seja requerido.\n   * Para exibir a mensagem com o campo vazio, utilize a propriedade `p-required-field-error-message` em conjunto.\n   */\n  @Input('p-error-pattern') errorPattern?: string = '';\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Limita a exibição da mensagem de erro a duas linhas e exibe um tooltip com o texto completo.\n   *\n   * > Caso essa propriedade seja definida como `true`, a mensagem de erro será limitada a duas linhas\n   * e um tooltip será exibido ao passar o mouse sobre a mensagem para mostrar o conteúdo completo.\n   *\n   * @default `false`\n   */\n  @Input('p-error-limit') errorLimit: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se a indicação de campo opcional será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - O campo conter `p-required`;\n   * - Não possuir `p-help` e/ou `p-label`.\n   *\n   * @default `false`\n   */\n  @Input('p-optional') optional: boolean;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe a mensagem setada na propriedade `p-error-pattern` se o campo estiver vazio e for requerido.\n   *\n   * > Necessário que a propriedade `p-required` esteja habilitada.\n   *\n   * @default `false`\n   */\n  @Input('p-required-field-error-message') showErrorMessageRequired: boolean = false;\n\n  /**\n   * @description\n   *\n   * Converte o conteúdo do campo em maiúsulo automaticamente.\n   *\n   */\n  @Input({ alias: 'p-upper-case', transform: convertToBoolean }) upperCase: boolean = false;\n\n  _maskNoLengthValidation = false;\n  /**\n   * @description\n   *\n   * Controla como o componente aplica as validações de comprimento mínimo (`minLength`) e máximo (`maxLength`) quando há uma máscara (`p-mask`) definida.\n   *\n   * - Quando `true`, apenas os caracteres alfanuméricos serão contabilizados para a validação dos comprimentos.\n   * - Quando `false`, todos os caracteres, incluindo os especiais da máscara, serão considerados na validação.\n   *\n   * > Esta propriedade é ignorada quando utilizada em conjunto com `p-mask-format-model`.\n   *\n   * Exemplo:\n   * ```\n   * <po-input\n   *   p-mask=\"999-999\"\n   *   p-maxlength=\"6\"\n   *   p-minlength=\"4\"\n   *   p-mask-no-length-validation=\"true\"\n   * ></po-input>\n   * ```\n   * - Entrada: `123-456` → Validação será aplicada somente aos números, ignorando o caractere especial `-`.\n   *\n   * @default `false`\n   */\n  @Input('p-mask-no-length-validation') set maskNoLengthValidation(value: boolean) {\n    this._maskNoLengthValidation = convertToBoolean(value);\n\n    this.validateModel();\n  }\n\n  get maskNoLengthValidation() {\n    return this._maskNoLengthValidation;\n  }\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar no ícone de ajuda adicional.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Output('p-additional-help') additionalHelp = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao sair do campo.\n   */\n  @Output('p-blur') blur: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao entrar do campo.\n   */\n  @Output('p-enter') enter: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao alterar valor e deixar o campo.\n   */\n  @Output('p-change') change: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao alterar valor do model.\n   */\n  @Output('p-change-model') changeModel: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado quando uma tecla é pressionada enquanto o foco está no componente.\n   * Retorna um objeto `KeyboardEvent` com informações sobre a tecla.\n   */\n  @Output('p-keydown') keydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n  displayAdditionalHelp: boolean = false;\n  type: string;\n  onChangePropagate: any = null;\n  objMask: any;\n  modelLastUpdate: any;\n  isInvalid: boolean;\n  hasValidatorRequired = false;\n\n  private subscription: Subscription = new Subscription();\n  protected onTouched: any = null;\n\n  protected passedWriteValue: boolean = false;\n  protected validatorChange: any;\n\n  private _loading = false;\n  private _maxlength?: number;\n  private _minlength?: number;\n  private _noAutocomplete?: boolean = false;\n  private _placeholder?: string = '';\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a propriedade nativa `autocomplete` do campo como `off`.\n   *\n   * > No componente `po-password` será definido como `new-password`.\n   *\n   * Nos componentes `po-password` e `po-login` o valor padrão será `true`.\n   *\n   * @default `false`\n   */\n  @Input('p-no-autocomplete') set noAutocomplete(value: boolean) {\n    this._noAutocomplete = convertToBoolean(value);\n  }\n\n  get noAutocomplete() {\n    return this._noAutocomplete;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Mensagem que aparecerá enquanto o campo não estiver preenchido.\n   *\n   * @default ''\n   */\n  @Input('p-placeholder') set placeholder(value: string) {\n    this._placeholder = value || '';\n  }\n  get placeholder() {\n    return this._placeholder;\n  }\n\n  /**\n   * @description\n   *\n   * Se verdadeiro, desabilita o campo.\n   *\n   * @default `false`\n   */\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  disabled?: boolean = false;\n  @Input('p-disabled') set setDisabled(disabled: string) {\n    this.disabled = disabled === '' ? true : convertToBoolean(disabled);\n\n    this.validateModel();\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de carregamento no lado direito do campo para sinalizar que uma operação está em andamento.\n   *\n   * @default `false`\n   */\n  @HostBinding('attr.p-loading')\n  @Input('p-loading')\n  set loading(value: boolean) {\n    this._loading = convertToBoolean(value);\n    this.cd?.markForCheck();\n  }\n\n  get loading(): boolean {\n    return this._loading;\n  }\n\n  get isDisabled(): boolean {\n    return this.disabled || this.loading;\n  }\n\n  /** Indica que o campo será somente leitura. */\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  readonly?: boolean = false;\n  @Input('p-readonly') set setReadonly(readonly: string) {\n    this.readonly = readonly === '' ? true : convertToBoolean(readonly);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o campo será obrigatório.\n   * > Esta propriedade é desconsiderada quando o input está desabilitado `(p-disabled)`.\n   *\n   * @default `false`\n   */\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  required?: boolean = false;\n  @Input('p-required') set setRequired(required: string) {\n    this.required = required === '' ? true : convertToBoolean(required);\n\n    this.validateModel();\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura do input como 32px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura do input como 44px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * Define se a indicação de campo obrigatório será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - Não possuir `p-help` e/ou `p-label`.\n   */\n  @Input('p-show-required') showRequired: boolean = false;\n\n  /** Se verdadeiro, o campo receberá um botão para ser limpo. */\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  clean?: boolean = false;\n  @Input('p-clean') set setClean(clean: string) {\n    this.clean = clean === '' ? true : convertToBoolean(clean);\n  }\n\n  /**\n   * @description\n   *\n   * Expressão regular para validar o campo.\n   * Quando o campo possuir uma máscara `(p-mask)` será automaticamente validado por ela, porém\n   * é possível definir um p-pattern para substituir a validação da máscara.\n   */\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  pattern?: string;\n  @Input('p-pattern') set setPattern(pattern: string) {\n    this.pattern = pattern;\n\n    this.validateModel();\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica a quantidade máxima de caracteres que o campo aceita.\n   */\n  @Input('p-maxlength') set maxlength(value: number) {\n    if (!isNaN(parseInt(<any>value, 10))) {\n      this._maxlength = parseInt(<any>value, 10);\n\n      this.validateModel();\n    } else if (!value) {\n      this._maxlength = undefined;\n\n      this.validateModel();\n    }\n  }\n\n  get maxlength() {\n    return this._maxlength;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica a quantidade mínima de caracteres que o campo aceita.\n   */\n  @Input('p-minlength') set minlength(value: number) {\n    if (!isNaN(parseInt(<any>value, 10))) {\n      this._minlength = parseInt(<any>value, 10);\n\n      this.validateModel();\n    } else if (!value) {\n      this._minlength = undefined;\n\n      this.validateModel();\n    }\n  }\n\n  get minlength() {\n    return this._minlength;\n  }\n\n  /**\n   * @description\n   *\n   * Indica uma máscara para o campo. Exemplos: (+99) (99) 99999?-9999, 99999-999, 999.999.999-99.\n   * A máscara gera uma validação automática do campo, podendo esta ser substituída por um REGEX específico\n   * através da propriedade p-pattern.\n   * O campo será sinalizado e o formulário ficará inválido quando o valor informado estiver fora do padrão definido,\n   * mesmo quando desabilitado.\n   */\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  mask?: string = '';\n  @Input('p-mask') set setMask(mask: string) {\n    this.mask = mask;\n\n    // Atualiza Máscara do Campo\n    this.objMask = new PoMask(this.mask, this.maskFormatModel);\n  }\n\n  /**\n   * @description\n   *\n   * Indica se o `model` receberá o valor formatado pela máscara ou apenas o valor puro (sem formatação).\n   *\n   * @default `false`\n   */\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  maskFormatModel?: boolean = false;\n  @Input('p-mask-format-model') set setMaskFormatModel(maskFormatModel: string) {\n    this.maskFormatModel = maskFormatModel === '' ? true : convertToBoolean(maskFormatModel);\n\n    if (this.objMask instanceof PoMask) {\n      this.objMask.formatModel = this.maskFormatModel;\n\n      this.validateModel();\n    }\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as opções do componente de ajuda (po-helper) que será exibido ao lado do label quando a propriedade `p-label` for definida, ou, ao lado do componente na ausência da propriedade `p-label`.\n   * > Para mais informações acesse: https://po-ui.io/documentation/po-helper.\n   *\n   * > Ao configurar esta propriedade, o antigo ícone de ajuda adicional (`p-additional-help-tooltip` e `p-additional-help`) será ignorado.\n   */\n  poHelperComponent = input<PoHelperOptions | string>(undefined, { alias: 'p-helper' });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a quebra automática do texto da propriedade `p-label`. Quando `p-label-text-wrap` for verdadeiro, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * @default `false`\n   */\n  labelTextWrap = input<boolean>(false, { alias: 'p-label-text-wrap' });\n\n  constructor(protected cd?: ChangeDetectorRef) {\n    this.objMask = new PoMask(this.mask, this.maskFormatModel);\n  }\n\n  ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  callOnChange(value: any) {\n    this.updateModel(value);\n\n    this.controlChangeModelEmitter(value);\n  }\n\n  callUpdateModelWithTimeout(value) {\n    setTimeout(() => this.updateModel(value));\n  }\n\n  controlChangeModelEmitter(value: any) {\n    if (this.modelLastUpdate !== value || this.emitAllChanges) {\n      this.changeModel.emit(value);\n      this.modelLastUpdate = value;\n    }\n  }\n\n  emitAdditionalHelp() {\n    if (this.label && this.isAdditionalHelpEventTriggered()) {\n      this.additionalHelp.emit();\n    }\n  }\n\n  getAdditionalHelpTooltip() {\n    return this.isAdditionalHelpEventTriggered() ? null : this.additionalHelpTooltip;\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar os estados de habilitado via forms api\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n    this.cd?.markForCheck();\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar as mudanças e não atualizar automaticamente o Model\n  registerOnChange(func: any): void {\n    this.onChangePropagate = func;\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar as mudanças e não atualizar automaticamente o Model\n  registerOnTouched(func: any): void {\n    this.onTouched = func;\n  }\n\n  registerOnValidatorChange(fn: () => void) {\n    this.validatorChange = fn;\n  }\n\n  /**\n   * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n   * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `p-keydown`.\n   *\n   * > Exibe ou oculta o conteúdo do componente `po-helper` quando o componente estiver com foco.\n   *\n   * ```\n   * // Exemplo com p-label e p-helper\n   * <po-nome-component\n   *  #component\n   *  ...\n   *  p-label=\"Label do componente\"\n   *  [p-helper]=\"helperOptions\"\n   *  (p-keydown)=\"onKeyDown($event, component)\"\n   * ></po-nome-component>\n   * ```\n   *\n   * ```\n   * ...\n   * onKeyDown(event: KeyboardEvent, inp: PoNomeDoComponente): void {\n   *  if (event.code === 'F9') {\n   *    inp.showAdditionalHelp();\n   *  }\n   * }\n   * ```\n   */\n  showAdditionalHelp(): boolean {\n    this.displayAdditionalHelp = !this.displayAdditionalHelp;\n    const helper = this.poHelperComponent();\n    const isHelpEvt = this.isAdditionalHelpEventTriggered();\n    if (!this.label && (helper || this.additionalHelpTooltip || isHelpEvt)) {\n      if (isHelpEvt) {\n        this.additionalHelp.emit();\n      }\n      if (typeof helper !== 'string' && typeof helper?.eventOnClick === 'function') {\n        helper.eventOnClick();\n        return;\n      }\n      if (this.helperEl?.helperIsVisible()) {\n        this.helperEl?.closeHelperPopover();\n        return;\n      }\n      this.helperEl?.openHelperPopover();\n      return;\n    }\n    return this.displayAdditionalHelp;\n  }\n\n  updateModel(value: any) {\n    // Quando o input não possui um formulário, então esta função não é registrada\n    if (this.onChangePropagate) {\n      this.onChangePropagate(value);\n    }\n  }\n\n  validate(c: AbstractControl): { [key: string]: any } {\n    this.subscription?.unsubscribe();\n    if (!this.hasValidatorRequired && this.showErrorMessageRequired && c.hasValidator(Validators.required)) {\n      this.hasValidatorRequired = true;\n    }\n\n    if (requiredFailed(this.required, this.disabled, this.getScreenValue())) {\n      this.isInvalid = true;\n      this.cd?.markForCheck();\n      return {\n        required: {\n          valid: false\n        }\n      };\n    }\n\n    if (\n      maxlengpoailed(this.maxlength, this.getScreenValue(), this.maskFormatModel ? false : this.maskNoLengthValidation)\n    ) {\n      this.isInvalid = true;\n      this.cd?.markForCheck();\n      return {\n        maxlength: {\n          valid: false\n        }\n      };\n    }\n\n    if (\n      minlengpoailed(this.minlength, this.getScreenValue(), this.maskFormatModel ? false : this.maskNoLengthValidation)\n    ) {\n      this.isInvalid = true;\n      this.cd?.markForCheck();\n      return {\n        minlength: {\n          valid: false\n        }\n      };\n    }\n\n    if (patternFailed(this.pattern, c.value)) {\n      this.isInvalid = true;\n      this.cd?.markForCheck();\n      this.validatePatternOnWriteValue(c.value);\n      return {\n        pattern: {\n          valid: false\n        }\n      };\n    }\n\n    if (this.errorPattern !== '') {\n      this.subscription = c.statusChanges\n        .pipe(\n          switchMap(status => {\n            if (status === 'INVALID') {\n              this.isInvalid = true;\n              this.cd?.markForCheck();\n            }\n            return [];\n          })\n        )\n        .subscribe();\n    }\n\n    this.isInvalid = false;\n    return this.extraValidation(c);\n  }\n\n  // Função implementada do ControlValueAccessor\n  writeValue(value: any) {\n    this.writeValueModel(value);\n    this.cd?.markForCheck();\n  }\n\n  protected validateModel() {\n    if (this.validatorChange) {\n      this.validatorChange();\n    }\n  }\n\n  protected isAdditionalHelpEventTriggered(): boolean {\n    return (\n      this.additionalHelpEventTrigger === 'event' ||\n      (this.additionalHelpEventTrigger === undefined && this.additionalHelp.observed)\n    );\n  }\n\n  //Transforma o tamanho do input para o tamanho do ícone de loading correspondente\n  mapSizeToIcon(size: string): string {\n    return mapInputSizeToLoadingIcon(size);\n  }\n\n  // utilizado para validar o pattern na inicializacao, fazendo dessa forma o campo fica sujo (dirty).\n  private validatePatternOnWriteValue(value: string) {\n    if (value && this.passedWriteValue) {\n      setTimeout(() => {\n        this.updateModel(value);\n      });\n\n      this.passedWriteValue = false;\n    }\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n\n  /**\n   * Função que atribui foco ao componente.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoNomeDoComponenteComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoNomeDoComponenteComponent, { static: true }) nomeDoComponente: PoNomeDoComponenteComponent;\n   *\n   * focusComponent() {\n   *   this.nomeDoComponente.focus();\n   * }\n   * ```\n   */\n  abstract focus(): void;\n\n  // Método que receberá o valor do model\n  abstract writeValueModel(value: any): void;\n\n  // Validações do campo\n  abstract extraValidation(c: AbstractControl): { [key: string]: any };\n\n  // Deve retornar o valor do campo\n  abstract getScreenValue(): string;\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  forwardRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  inject,\n  input,\n  OnChanges,\n  SimpleChanges\n} from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\n\nimport { maxFailed, maxlengpoailed, minFailed } from '../validators';\n\nimport { isObservable, of, Subscription, switchMap } from 'rxjs';\nimport { convertToInt, setHelperSettings, uuid } from '../../../utils/util';\nimport { PoInputBaseComponent } from '../po-input/po-input-base.component';\n\nconst poDecimalDefaultDecimalsLength = 2;\nconst poDecimalDefaultThousandMaxlength = 13;\nconst poDecimalMaxDecimalsLength = 15;\nconst poDecimalTotalLengthLimit = 16;\n\n/**\n *\n * @docsExtends PoInputBaseComponent\n *\n * @description\n *\n * - O `po-decimal` é um *input* específico para receber apenas números decimais, por isso recebe as seguintes características:\n *  + Aceita apenas números;\n *  + Utiliza ',' como separador de decimal;\n *  + Utiliza '.' para separação de milhar;\n *  + É possível configurar a quantidade de casas decimais e a quantidade de digitos do campo.\n *\n * > **Importante:**\n * Atualmente o JavaScript limita-se a um conjunto de dados de `32 bits`, e para que os valores comportem-se devidamente,\n * o `po-decimal` contém um tratamento que limita em 16 o número total de casas antes e após a vírgula.\n * Veja abaixo as demais regras nas documentações de `p-decimals-length` e `p-thousand-maxlength`.\n *\n * @example\n *\n * <example name=\"po-decimal-basic\" title=\"PO Decimal Basic\">\n *  <file name=\"sample-po-decimal-basic/sample-po-decimal-basic.component.html\"> </file>\n *  <file name=\"sample-po-decimal-basic/sample-po-decimal-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-decimal-labs\" title=\"PO Decimal Labs\">\n *  <file name=\"sample-po-decimal-labs/sample-po-decimal-labs.component.html\"> </file>\n *  <file name=\"sample-po-decimal-labs/sample-po-decimal-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-decimal-hourly-wage\" title=\"PO Decimal - Hourly Wage\">\n *  <file name=\"sample-po-decimal-hourly-wage/sample-po-decimal-hourly-wage.component.html\"> </file>\n *  <file name=\"sample-po-decimal-hourly-wage/sample-po-decimal-hourly-wage.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-decimal-hourly-wage-reactive-form\" title=\"PO Decimal - Hourly Wage Reactive Form\">\n *  <file name=\"sample-po-decimal-hourly-wage-reactive-form/sample-po-decimal-hourly-wage-reactive-form.component.html\"> </file>\n *  <file name=\"sample-po-decimal-hourly-wage-reactive-form/sample-po-decimal-hourly-wage-reactive-form.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-decimal',\n  templateUrl: './po-decimal.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoDecimalComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => PoDecimalComponent),\n      multi: true\n    }\n  ],\n  standalone: false\n})\nexport class PoDecimalComponent extends PoInputBaseComponent implements AfterViewInit, OnInit, OnDestroy, OnChanges {\n  private readonly el = inject(ElementRef);\n  private readonly poLanguageService = inject(PoLanguageService);\n\n  @ViewChild('inp', { read: ElementRef, static: true }) inputEl: ElementRef;\n\n  id = `po-decimal[${uuid()}]`;\n  private _decimalsLength?: number = poDecimalDefaultDecimalsLength;\n  private _thousandMaxlength?: number = poDecimalDefaultThousandMaxlength;\n  private _locale?: string;\n  private _min?: number;\n  private _max?: number;\n\n  private decimalSeparator: string;\n  private fireChange: boolean = false;\n  private readonly isKeyboardAndroid: boolean = false;\n  private readonly minusSign: string = '-';\n  private oldDotsLength = null;\n  private thousandSeparator: string;\n  private valueBeforeChange: any;\n  private subscriptionValidator: Subscription = new Subscription();\n\n  private regex = {\n    thousand: new RegExp('\\\\' + ',', 'g'),\n    decimal: new RegExp('\\\\' + '.', 'g')\n  };\n\n  get autocomplete() {\n    return this.noAutocomplete ? 'off' : 'on';\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Quantidade máxima de casas decimais.\n   *\n   * > **Importante:**\n   * - O valor máximo permitido é 15;\n   * - A soma total de `p-decimals-length` com `p-thousand-maxlength` limita-se à 16;\n   * - Esta propriedade sobrepõe apenas o valor **padrão** de `p-thousand-maxlength`;\n   * - Caso `p-thousand-maxlength` tenha um valor definido, esta propriedade poderá receber apenas o valor restante do limite total (16).\n   *\n   * @default `2`\n   */\n  @Input('p-decimals-length') set decimalsLength(value: number) {\n    let decimalsLength = convertToInt(value);\n\n    decimalsLength = this.isValueBetweenAllowed(decimalsLength, poDecimalMaxDecimalsLength)\n      ? decimalsLength\n      : poDecimalDefaultDecimalsLength;\n\n    if (this.isGreaterThanTotalLengthLimit(decimalsLength, this.thousandMaxlength)) {\n      this.thousandMaxlength = poDecimalTotalLengthLimit - decimalsLength;\n    }\n\n    this._decimalsLength = decimalsLength;\n  }\n\n  get decimalsLength() {\n    return this._decimalsLength;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Quantidade máxima de dígitos antes do separador decimal.\n   *\n   * > **Importante:**\n   * - O valor máximo permitido é 13;\n   * - A soma total de `p-decimals-length` com `p-thousand-maxlength` limita-se à 16;\n   * - Esta propriedade sobrepõe o valor definido em `p-decimals-length`.\n   *\n   * @default `13`\n   */\n  @Input('p-thousand-maxlength') set thousandMaxlength(value: number) {\n    let thousandMaxlength = convertToInt(value);\n\n    if (this.decimalsLength > poDecimalDefaultDecimalsLength && !thousandMaxlength) {\n      thousandMaxlength = poDecimalTotalLengthLimit - this.decimalsLength;\n    }\n\n    thousandMaxlength = this.isValueBetweenAllowed(thousandMaxlength, poDecimalDefaultThousandMaxlength)\n      ? thousandMaxlength\n      : poDecimalDefaultThousandMaxlength;\n\n    if (this.isGreaterThanTotalLengthLimit(this.decimalsLength, thousandMaxlength)) {\n      this.decimalsLength = poDecimalTotalLengthLimit - thousandMaxlength;\n    }\n\n    this._thousandMaxlength = thousandMaxlength;\n  }\n\n  get thousandMaxlength() {\n    return this._thousandMaxlength;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Informa o locale(país) para a formatação do valor.\n   * Por padrão o valor será configurado segundo a o módulo [`I18n`](documentation/po-i18n)\n   *\n   * > Para ver quais linguagens suportadas acesse [`I18n`](documentation/po-i18n)\n   *\n   */\n  @Input('p-locale') set locale(locale: string) {\n    this._locale = locale;\n    this.setNumbersSeparators();\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Valor mínimo.\n   */\n  @Input('p-min') set min(value: number) {\n    if (!isNaN(value)) {\n      this._min = value;\n\n      this.validateModel();\n    } else if (!value) {\n      this._min = undefined;\n\n      this.validateModel();\n    }\n  }\n\n  get min(): number {\n    return this._min;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Valor máximo.\n   */\n  @Input('p-max') set max(value: number) {\n    if (!isNaN(value)) {\n      this._max = value;\n\n      this.validateModel();\n    } else if (!value) {\n      this._max = undefined;\n\n      this.validateModel();\n    }\n  }\n\n  get max(): number {\n    return this._max;\n  }\n\n  constructor() {\n    const cd = inject(ChangeDetectorRef);\n\n    super(cd);\n    this.isKeyboardAndroid = !!navigator.userAgent.match(/Android/i);\n  }\n\n  ngOnInit() {\n    this.setNumbersSeparators();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n  }\n\n  setNumbersSeparators() {\n    const { decimalSeparator, thousandSeparator } = this.poLanguageService.getNumberSeparators(this._locale);\n    this.decimalSeparator = decimalSeparator;\n    this.thousandSeparator = thousandSeparator;\n    this.regex = {\n      thousand: new RegExp('\\\\' + thousandSeparator, 'g'),\n      decimal: new RegExp('\\\\' + decimalSeparator, 'g')\n    };\n  }\n\n  ngAfterViewInit() {\n    this.verifyAutoFocus();\n  }\n\n  ngOnDestroy(): void {\n    this.subscriptionValidator?.unsubscribe();\n  }\n\n  clear(value) {\n    this.callOnChange(value);\n    this.controlChangeEmitter();\n\n    if (this.errorAsyncProperties?.triggerMode === 'changeModel') {\n      this.verifyErrorAsync(value);\n    }\n  }\n\n  extraValidation(abstractControl: AbstractControl): { [key: string]: any } {\n    const value = abstractControl.value;\n    const thousandValue = Math.trunc(value);\n\n    // Verifica se já possui algum error pattern padrão.\n    this.errorPattern = this.errorPattern !== 'Valor Inválido' ? this.errorPattern : '';\n\n    if (minFailed(this.min, value)) {\n      return {\n        min: {\n          valid: false\n        }\n      };\n    }\n\n    if (maxFailed(this.max, value)) {\n      return {\n        max: {\n          valid: false\n        }\n      };\n    }\n\n    if (\n      (maxlengpoailed(this.thousandMaxlength, thousandValue) &&\n        this.thousandMaxlength < poDecimalDefaultThousandMaxlength) ||\n      maxlengpoailed(poDecimalTotalLengthLimit, value)\n    ) {\n      return {\n        max: {\n          valid: false\n        }\n      };\n    }\n\n    return null;\n  }\n\n  focus(): void {\n    if (!this.disabled) {\n      this.inputEl.nativeElement.focus();\n    }\n  }\n\n  getScreenValue() {\n    return this.inputEl ? this.inputEl.nativeElement.value : '';\n  }\n\n  hasInvalidClass() {\n    return (\n      this.el.nativeElement.classList.contains('ng-invalid') &&\n      this.el.nativeElement.classList.contains('ng-dirty') &&\n      (this.getScreenValue() !== '' || (this.showErrorMessageRequired && (this.required || this.hasValidatorRequired)))\n    );\n  }\n\n  hasLetters(value: string = '') {\n    return value.match(/[a-zA-Z:;+=_´`^~\"'?!@#$%¨&*()><{}çÇ\\[\\]/\\\\|]+/);\n  }\n\n  hasNotSpace(value: string = '') {\n    return value.match(/^\\S*$/);\n  }\n\n  isValidNumber(event: any): boolean {\n    // - event.key não existia em alguns browsers, como Samsung browser e Firefox.\n    const keyValue = <any>String.fromCharCode(event.which);\n    const validKey = event.which !== 8 && event.which !== 0;\n\n    return !this.hasLetters(keyValue) && this.hasNotSpace(keyValue) && validKey;\n  }\n\n  // função responsável por adicionar os zeros com as casa decimais ao sair do campo.\n  onBlur(event: any) {\n    this.onTouched?.();\n\n    const value = event.target.value;\n\n    if (value) {\n      if (this.hasLetters(value) || this.containsMoreThanOneDecimalSeparator(value)) {\n        this.setViewValue('');\n        this.callOnChange(undefined);\n        return;\n      }\n\n      const valueWithoutThousandSeparator = this.formatValueWithoutThousandSeparator(value);\n      const formatedViewValue = this.formatToViewValue(valueWithoutThousandSeparator);\n      this.setViewValue(formatedViewValue);\n      if (!formatedViewValue) {\n        this.callOnChange(undefined);\n        return;\n      }\n    }\n\n    this.blur.emit();\n    this.controlChangeEmitter();\n  }\n\n  onFocus(event: FocusEvent) {\n    // Atualiza valor da variável que será usada para verificar se o campo teve alteração\n    this.valueBeforeChange = this.getScreenValue();\n\n    // Dispara evento quando o usuário entrar no campo\n    // Este evento também é disparado quando o campo inicia com foco.\n    this.enter.emit();\n  }\n\n  onInput(event: any) {\n    const selectionStart = event.target.selectionStart;\n    const selectionEnd = event.target.selectionEnd;\n\n    let modelValue;\n\n    // - Browsers nativos do Android ex: Samsung Browser.\n    if (this.isKeyboardAndroid) {\n      this.onInputKeyboardAndroid(event);\n    }\n\n    modelValue = this.formatValueWithoutThousandSeparator(event.target.value);\n    modelValue = this.addZeroBefore(modelValue);\n    const viewValue = this.formatMask(modelValue);\n\n    // validação para não quebrar IE com placeholder definido e Input vazio\n    if (viewValue) {\n      this.setViewValue(viewValue);\n      this.setCursorInput(event, selectionStart, selectionEnd);\n    }\n\n    this.callOnChange(this.formatToModelValue(modelValue));\n\n    if (this.errorAsyncProperties?.triggerMode === 'changeModel') {\n      this.verifyErrorAsync(this.formatToModelValue(modelValue));\n    }\n  }\n\n  onInputKeyboardAndroid(event: any) {\n    const inputValue = event.target.value;\n    const selectionStart = event.target.selectionStart;\n    const hasLetters = this.hasLetters(inputValue);\n\n    if (hasLetters) {\n      this.setViewValue(inputValue.replace(hasLetters[0], ''));\n\n      return event.preventDefault();\n    } else {\n      const position = selectionStart - 1;\n      const key = inputValue.charAt(position);\n\n      this.setPositionValue(event);\n\n      if (this.isValidKey(event, key)) {\n        this.setViewValue(inputValue);\n      }\n    }\n  }\n\n  onKeyDown(event: KeyboardEvent): void {\n    const isFieldFocused = document.activeElement === this.inputEl.nativeElement;\n\n    if (isFieldFocused) {\n      this.keydown.emit(event);\n    }\n  }\n\n  onKeyPress(event: KeyboardEvent) {\n    this.isValidKey(event);\n  }\n\n  writeValueModel(value) {\n    let formatedViewValue;\n    if (this.inputEl) {\n      if (value || value === 0) {\n        formatedViewValue = this.formatToViewValue(value);\n        this.setViewValue(formatedViewValue);\n      } else {\n        this.setViewValue('');\n      }\n    }\n\n    if (formatedViewValue) {\n      this.change.emit(value);\n      this.verifyErrorAsync(value);\n    }\n  }\n\n  getErrorPatternMessage() {\n    return this.errorPattern !== '' && this.hasInvalidClass() ? this.errorPattern : '';\n  }\n\n  // responsável por adicionar 0 antes da virgula (decimalSeparator).\n  private addZeroBefore(value) {\n    const isDecimalSeparator = value === this.decimalSeparator;\n\n    return isDecimalSeparator ? `0${value}` : value;\n  }\n\n  setHelper(label?: string, additionalHelpTooltip?: string) {\n    return setHelperSettings(\n      label,\n      additionalHelpTooltip,\n      this.poHelperComponent(),\n      this.size,\n      this.isAdditionalHelpEventTriggered() ? this.additionalHelp : undefined\n    );\n  }\n\n  private containsComma(value) {\n    return value.includes(this.decimalSeparator);\n  }\n\n  private containsMoreThanOneDecimalSeparator(value: string = '') {\n    const foundComma = value.match(this.regex.decimal);\n\n    return !!(foundComma && foundComma.length > 1);\n  }\n\n  private controlChangeEmitter() {\n    const elementValue = this.getScreenValue();\n\n    // Emite o evento change manualmente quando o campo é alterado\n    // Este evento é controlado manualmente devido ao preventDefault existente na máscara\n    // e devido ao controle do p-clean, que também precisa emitir change\n    if (elementValue !== this.valueBeforeChange) {\n      this.fireChange = true;\n      setTimeout(() => {\n        this.change.emit(elementValue);\n        const errorAsync = this.errorAsyncProperties;\n        if (errorAsync?.triggerMode === 'change' || !errorAsync?.triggerMode) {\n          this.verifyErrorAsync(elementValue);\n        }\n      }, 200);\n    }\n  }\n\n  private formatMask(value: string) {\n    // necessário para não adicionar . nas casa decimais.\n    // por exemplo: 12.345,123.45 (errado)\n    // 12.345,12345 (correto)\n\n    if (value.match(this.regex.decimal)) {\n      const regex = new RegExp(`(\\\\d)(?=(\\\\d{3})+(?!\\\\d)${this.decimalSeparator})`, 'g');\n      return value.toString().replace(regex, `$1${this.thousandSeparator}`);\n    }\n\n    return value.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, `$1${this.thousandSeparator}`);\n  }\n\n  private formatToModelValue(value: string) {\n    const formattedValue = this.replaceCommaToDot(value);\n    const parsedValue = formattedValue ? parseFloat(Number(formattedValue).toFixed(this.decimalsLength)) : undefined;\n\n    return parsedValue === 0 || parsedValue ? parsedValue : undefined;\n  }\n\n  private formatToViewValue(value: string) {\n    // - Necessário para tratar valores que contenham decimalSeparator\n    value = this.replaceCommaToDot(value);\n\n    const numberValue = Number(value).toFixed(this.decimalsLength);\n\n    const valueBeforeDot = this.getValueBeforeSeparator(numberValue, '.');\n    const valueAfterDot = this.getValueAfterSeparator(numberValue, '.');\n\n    const formatedNumber = this.formatMask(valueBeforeDot);\n\n    if (formatedNumber === 'NaN') {\n      return '';\n    }\n\n    if (this.decimalsLength === 0) {\n      return formatedNumber;\n    } else {\n      return `${formatedNumber}${this.decimalSeparator}${valueAfterDot}`;\n    }\n  }\n\n  private formatValueWithoutThousandSeparator(value: string = '') {\n    return value.toString().replace(this.regex.thousand, '');\n  }\n\n  private getValueAfterSeparator(value = '', separator) {\n    return value.split(separator)[1] || '';\n  }\n\n  private getValueBeforeSeparator(value = '', separator) {\n    return value.split(separator)[0] || '';\n  }\n\n  private hasLessDot(value) {\n    if (value) {\n      const dots = value.match(this.regex.thousand);\n      const dotsLength = dots && dots.length;\n\n      if (dotsLength < this.oldDotsLength) {\n        this.oldDotsLength = dotsLength;\n        return true;\n      }\n    }\n\n    if (!value) {\n      this.oldDotsLength = null;\n    }\n\n    return false;\n  }\n\n  private hasMoreDot(value) {\n    if (value) {\n      const dots = value.match(this.regex.thousand);\n      const dotsLength = dots && dots.length;\n\n      if (dotsLength > this.oldDotsLength) {\n        this.oldDotsLength = dotsLength;\n        return true;\n      }\n    }\n\n    if (!value) {\n      this.oldDotsLength = null;\n    }\n\n    return false;\n  }\n\n  private hasMinusSignInvalidPosition(event: any): boolean {\n    const keyIsMinusSign = event.key === this.minusSign;\n    const selectionStart = event.target.selectionStart;\n\n    return keyIsMinusSign && selectionStart !== 0;\n  }\n\n  private isInvalidKey(event: any, charCode: any) {\n    const isInvalidNumber = !this.isValidNumber(event);\n\n    return (\n      this.verifyInsertComma(event) ||\n      this.verifyThousandLength(event) ||\n      this.verifyValueAfterComma(event) ||\n      this.verifyInsertMinusSign(event) ||\n      this.hasMinusSignInvalidPosition(event) ||\n      isInvalidNumber ||\n      this.validateCursorPositionBeforeSeparator(event) ||\n      this.verifyDecimalLengthIsZeroAndKeyPressedIsComma(charCode)\n    );\n  }\n\n  private isGreaterThanTotalLengthLimit(decimalsMaxLength: number, thousandMaxlength: number) {\n    return decimalsMaxLength + thousandMaxlength > poDecimalTotalLengthLimit;\n  }\n\n  private isKeyDecimalSeparator(event) {\n    return event.key === this.decimalSeparator || event.char === this.decimalSeparator;\n  }\n\n  private isPositionAfterDecimalSeparator(positionCursor, value) {\n    const indexComma = value && value.indexOf(this.decimalSeparator);\n\n    if (indexComma && this.decimalsLength > 0) {\n      return positionCursor > indexComma;\n    }\n  }\n\n  private isSelectionStartDifferentSelectionEnd(target: any) {\n    return target.selectionStart !== target.selectionEnd;\n  }\n\n  private isValidKey(event: any, key?: string) {\n    const charCode = event.which || event.keyCode;\n    const validKey = event.which === 8 || event.which === 0;\n\n    if (validKey && !this.isKeyboardAndroid) {\n      return;\n    }\n\n    if (key) {\n      event.key = key;\n    }\n\n    if (this.isInvalidKey(event, charCode)) {\n      event.preventDefault();\n      return false;\n    }\n    return true;\n  }\n\n  private isValueBetweenAllowed(value: number, maxAllowed: number) {\n    return value >= 0 && value <= maxAllowed;\n  }\n\n  // Quando decimalsLength for 0 não deve permitir informar vírgula (decimalSeparator)\n  private verifyDecimalLengthIsZeroAndKeyPressedIsComma(charCode: number) {\n    return charCode === 44 && this.decimalsLength === 0;\n  }\n\n  private verifyAutoFocus() {\n    if (this.autoFocus) {\n      this.focus();\n    }\n  }\n\n  private setInitialSelectionRange(target: any, selectionStart, selectionEnd) {\n    if (selectionStart === 1 && selectionEnd === 1) {\n      return target.setSelectionRange(selectionStart + 1, selectionEnd + 1);\n    }\n    return target.setSelectionRange(selectionStart - 1, selectionEnd - 1);\n  }\n\n  private replaceAt(value, index, replace) {\n    return value.substring(0, index) + replace + value.substring(index + 1);\n  }\n\n  private replaceCommaToDot(value: string = '') {\n    if (this.decimalSeparator === ',') {\n      value = value.toString().replace(this.regex.decimal, '.');\n    }\n\n    return value;\n  }\n\n  private setCursorInput(event, selectionStart, selectionEnd) {\n    const target = event.target;\n    const viewValue = target.value;\n\n    // Caso houver mais . do que anteriormente soma o valor com 1.\n    if (this.hasMoreDot(viewValue) || viewValue === '0' + this.decimalSeparator) {\n      return target.setSelectionRange(selectionStart + 1, selectionEnd + 1);\n    }\n\n    // Caso houver menos . do que anteriormente subtrai o valor por 1.\n    if (this.hasLessDot(viewValue)) {\n      this.setInitialSelectionRange(target, selectionStart, selectionEnd);\n    }\n    return target.setSelectionRange(selectionStart, selectionEnd);\n  }\n\n  private setPositionValue(event: any) {\n    const value = event.target.value;\n    const position = event.target.selectionStart - 1;\n\n    if (position > 0 && event.key === this.minusSign) {\n      event.target.value = value.substring(0, position) + value.substr(position + 1);\n    }\n  }\n\n  private setViewValue(value: string) {\n    this.inputEl.nativeElement.value = value;\n  }\n\n  private validateCursorPositionBeforeSeparator(event: any): boolean {\n    const target = event.target;\n    const originalValue = this.formatValueWithoutThousandSeparator(target.value);\n    const valueBeforeSeparator = this.getValueBeforeSeparator(target.value, this.decimalSeparator);\n    const valueBeforeSeparatorOriginal = this.getValueBeforeSeparator(originalValue, this.decimalSeparator);\n\n    if (this.isSelectionStartDifferentSelectionEnd(target)) {\n      return false;\n    }\n    return (\n      target.selectionStart <= valueBeforeSeparator.length &&\n      valueBeforeSeparatorOriginal.length === this.thousandMaxlength &&\n      !this.isKeyDecimalSeparator(event)\n    );\n  }\n\n  private verifyErrorAsync(value) {\n    if (this.errorPattern !== '' && this.errorAsyncProperties?.errorAsync) {\n      const errorAsync = this.errorAsyncProperties.errorAsync(value);\n      if (isObservable(errorAsync)) {\n        this.subscriptionValidator?.unsubscribe();\n        this.subscriptionValidator = errorAsync\n          .pipe(\n            switchMap(error => {\n              const element = this.el.nativeElement;\n              if (error) {\n                element.classList.add('ng-invalid');\n                element.classList.add('ng-dirty');\n                this.cd.detectChanges();\n              } else if (\n                element.classList.contains('ng-invalid') &&\n                element.classList.contains('ng-dirty') &&\n                !this.isInvalid\n              ) {\n                element.classList.remove('ng-invalid');\n                this.cd.detectChanges();\n              }\n              return of('');\n            })\n          )\n          .subscribe();\n      }\n    }\n  }\n\n  private verifyThousandLength(event: any): boolean {\n    const target = event.target;\n    const originalValue = this.formatValueWithoutThousandSeparator(target.value);\n    const valueBeforeSeparatorOriginal = this.getValueBeforeSeparator(originalValue, this.decimalSeparator);\n\n    if (this.isSelectionStartDifferentSelectionEnd(target)) {\n      return false;\n    }\n    return (\n      valueBeforeSeparatorOriginal.length >= this.thousandMaxlength &&\n      !this.isKeyDecimalSeparator(event) &&\n      this.isPositionAfterDecimalSeparator(target.selectionStart - this.decimalsLength, target.value)\n    );\n  }\n\n  private verifyInsertComma(e: any): boolean {\n    const hasComma = this.containsComma(e.target.value);\n\n    return hasComma && e.key === this.decimalSeparator;\n  }\n\n  private verifyInsertMinusSign(event: any): boolean {\n    const value = event.target.value;\n    const indexMinusSign = value.lastIndexOf(this.minusSign) !== -1;\n    const positionMinusSign = value.lastIndexOf('-');\n    const occurancesMinusSign = value.match(new RegExp('-', 'g'));\n\n    if (this.isKeyboardAndroid && indexMinusSign && occurancesMinusSign.length > 1) {\n      event.target.value = this.replaceAt(value, positionMinusSign, '');\n    }\n    return indexMinusSign && event.key === this.minusSign;\n  }\n\n  private verifyValueAfterComma(event: any): boolean {\n    const value = event.target.value;\n    const selectionStart = event.target.selectionStart;\n    const valueAfterSeparator = this.getValueAfterSeparator(value, this.decimalSeparator);\n\n    return (\n      this.isPositionAfterDecimalSeparator(selectionStart, value) && valueAfterSeparator.length >= this.decimalsLength\n    );\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n<po-field-container\n  [p-disabled]=\"isDisabled\"\n  [p-id]=\"id\"\n  [p-label]=\"label\"\n  [p-optional]=\"optional\"\n  [p-required]=\"required\"\n  [p-show-required]=\"showRequired\"\n  [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n  [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n  [p-size]=\"size\"\n  [p-text-wrap]=\"labelTextWrap()\"\n  [p-compact-label]=\"compactLabel()\"\n>\n  <div class=\"po-field-container-content\">\n    <div class=\"po-field-container-content-helper-wrapper\">\n      <div class=\"po-field-container-input\">\n        @if (icon) {\n          <div class=\"po-field-icon-container-left\">\n            <po-icon\n              class=\"po-field-icon po-icon-input\"\n              [class.po-field-icon-disabled]=\"isDisabled\"\n              [class.po-field-icon-aa]=\"size === 'small'\"\n              [p-icon]=\"icon\"\n            ></po-icon>\n          </div>\n        }\n\n        <input\n          #inp\n          class=\"po-input\"\n          [attr.data-focused-element]=\"!isDisabled\"\n          [attr.data-inactive-component]=\"isDisabled || readonly\"\n          [attr.max]=\"max\"\n          [attr.min]=\"min\"\n          [attr.name]=\"name\"\n          [attr.p-size]=\"size\"\n          [autocomplete]=\"autocomplete\"\n          [ngClass]=\"{\n            'po-input-icon-left': icon && size !== 'small',\n            'po-input-icon-left-aa': icon && size === 'small',\n            'po-input-icon-right': (clean || loading) && size !== 'small',\n            'po-input-icon-right-aa': (clean || loading) && size === 'small'\n          }\"\n          [disabled]=\"isDisabled\"\n          [id]=\"id\"\n          [placeholder]=\"isDisabled ? '' : placeholder\"\n          [readonly]=\"readonly\"\n          [required]=\"required\"\n          inputmode=\"decimal\"\n          type=\"text\"\n          (blur)=\"onBlur($event)\"\n          (focus)=\"onFocus($event)\"\n          (input)=\"onInput($event)\"\n          (keypress)=\"onKeyPress($event)\"\n          (keydown)=\"onKeyDown($event)\"\n        />\n\n        <div class=\"po-field-icon-container-right\">\n          @if (loading) {\n            <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n          }\n\n          @if (!loading && clean && !isDisabled && !readonly) {\n            <po-clean class=\"po-icon-input\" [p-element-ref]=\"inputEl\" [p-size]=\"size\" (p-change-event)=\"clear($event)\">\n            </po-clean>\n          }\n        </div>\n      </div>\n      @if ((!this.label && poHelperComponent()) || (!this.label && poHelper.hideAdditionalHelp)) {\n        <po-helper\n          #helperEl\n          class=\"po-field-helper-button\"\n          [p-size]=\"size\"\n          [p-helper]=\"poHelper.helperSettings\"\n          [p-disabled]=\"isDisabled\"\n          [p-append-in-body]=\"appendBox\"\n        >\n        </po-helper>\n      }\n    </div>\n  </div>\n\n  @if (!readonly) {\n    <po-field-container-bottom\n      [p-append-in-body]=\"appendBox\"\n      [p-help]=\"help\"\n      [p-disabled]=\"isDisabled\"\n      [p-error-limit]=\"errorLimit\"\n      [p-error-pattern]=\"getErrorPatternMessage()\"\n      [p-size]=\"size\"\n    ></po-field-container-bottom>\n  }\n</po-field-container>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  HostListener,\n  OnDestroy,\n  ViewChild\n} from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\n\nimport { isObservable, of, Subscription, switchMap } from 'rxjs';\nimport { PoInputBaseComponent } from '../po-input/po-input-base.component';\nimport { setHelperSettings } from '../../../utils/util';\n\n/* eslint-disable @angular-eslint/directive-class-suffix */\n@Directive()\nexport abstract class PoInputGeneric extends PoInputBaseComponent implements AfterViewInit, OnDestroy {\n  @ViewChild('inp', { read: ElementRef, static: true }) inputEl: ElementRef;\n\n  type = 'text';\n\n  el: ElementRef;\n  valueBeforeChange: any;\n  timeoutChange: any;\n\n  private subscriptionValidator: Subscription = new Subscription();\n\n  get autocomplete(): string {\n    return this.noAutocomplete ? 'off' : 'on';\n  }\n\n  constructor(el: ElementRef, cd?: ChangeDetectorRef) {\n    super(cd);\n\n    this.el = el;\n  }\n\n  @HostListener('keydown', ['$event']) onKeydown(e: any) {\n    if (this.mask && !this.readonly && e.target.keyCode !== 229) {\n      this.objMask.keydown(e);\n      if (this.passedWriteValue) {\n        this.validateClassesForMask(true);\n      }\n    }\n  }\n\n  @HostListener('keyup', ['$event']) onKeyup(e: any) {\n    if (this.mask && !this.readonly) {\n      if (e.target.keyCode !== 229) {\n        this.objMask.keyup(e);\n      }\n      this.callOnChange(this.objMask.valueToModel);\n      if (this.errorAsyncProperties?.triggerMode === 'changeModel') {\n        this.verifyErrorAsync();\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    this.afterViewInit();\n  }\n\n  afterViewInit() {\n    this.verifyAutoFocus();\n  }\n\n  ngOnDestroy(): void {\n    this.subscriptionValidator?.unsubscribe();\n  }\n\n  focus() {\n    if (!this.disabled) {\n      this.inputEl.nativeElement.focus();\n    }\n  }\n\n  onKeyDown(event: KeyboardEvent): void {\n    const isFieldFocused = document.activeElement === this.inputEl.nativeElement;\n\n    if (isFieldFocused) {\n      this.keydown.emit(event);\n    }\n  }\n\n  verifyAutoFocus() {\n    if (this.autoFocus) {\n      this.focus();\n    }\n  }\n\n  eventOnInput(e: any) {\n    let value = '';\n    if (!this.mask) {\n      value = this.validMaxLength(this.maxlength, e.target.value);\n      this.inputEl.nativeElement.value = value;\n    } else {\n      this.objMask.blur(e);\n      this.inputEl.nativeElement.value = this.objMask.valueToInput;\n      value = this.objMask.valueToModel;\n    }\n    this.inputEl.nativeElement.value = this.upperCase\n      ? String(this.inputEl.nativeElement.value).toUpperCase()\n      : this.inputEl.nativeElement.value;\n    value = this.upperCase ? value.toUpperCase() : value;\n    this.callOnChange(value);\n    if (this.errorAsyncProperties?.triggerMode === 'changeModel') {\n      this.verifyErrorAsync();\n    }\n  }\n\n  validMaxLength(maxlength: number, value: string) {\n    return (maxlength || maxlength === 0) && value.length > maxlength\n      ? value.toString().substring(0, maxlength)\n      : value;\n  }\n\n  eventOnFocus(e: any) {\n    // Atualiza valor da variável que será usada para verificar se o campo teve alteração\n    this.valueBeforeChange = this.inputEl.nativeElement.value;\n\n    // Dispara evento quando o usuário entrar no campo\n    // Este evento também é disparado quando o campo inicia com foco.\n    this.enter.emit();\n  }\n\n  eventOnBlur(e: any) {\n    this.onTouched?.();\n\n    if (this.mask) {\n      this.objMask.blur(e);\n    }\n\n    if (e.type === 'blur') {\n      this.blur.emit();\n      this.controlChangeEmitter();\n    }\n  }\n\n  controlChangeEmitter() {\n    const elementValue = this.inputEl.nativeElement.value;\n\n    // Emite o evento change manualmente quando o campo é alterado\n    // Este evento é controlado manualmente devido ao preventDefault existente na máscara\n    // e devido ao controle do p-clean, que também precisa emitir change\n    if (elementValue !== this.valueBeforeChange) {\n      clearTimeout(this.timeoutChange);\n      this.timeoutChange = setTimeout(() => {\n        this.change.emit(elementValue);\n        const errorAsync = this.errorAsyncProperties;\n        if (errorAsync?.triggerMode === 'change' || !errorAsync?.triggerMode) {\n          this.verifyErrorAsync();\n        }\n      }, 200);\n    }\n  }\n\n  eventOnClick(e: any) {\n    // Atualiza a posição do cursor ao clicar\n    if (this.mask) {\n      this.objMask.click(e);\n    }\n  }\n\n  hasInvalidClass() {\n    return (\n      this.el.nativeElement.classList.contains('ng-invalid') &&\n      this.el.nativeElement.classList.contains('ng-dirty') &&\n      (this.inputEl.nativeElement.value !== '' ||\n        (this.showErrorMessageRequired && (this.required || this.hasValidatorRequired)))\n    );\n  }\n\n  verifyErrorAsync() {\n    if (this.errorPattern !== '' && this.errorAsyncProperties?.errorAsync) {\n      const errorAsync = this.errorAsyncProperties.errorAsync(this.inputEl.nativeElement.value);\n      if (isObservable(errorAsync)) {\n        this.subscriptionValidator.unsubscribe();\n        this.subscriptionValidator = errorAsync\n          .pipe(\n            switchMap(error => {\n              const element = this.el.nativeElement;\n              if (error) {\n                element.classList.add('ng-invalid');\n                element.classList.add('ng-dirty');\n                this.cd.detectChanges();\n              } else if (\n                element.classList.contains('ng-invalid') &&\n                element.classList.contains('ng-dirty') &&\n                !this.isInvalid\n              ) {\n                element.classList.remove('ng-invalid');\n                this.cd.detectChanges();\n              }\n              return of('');\n            })\n          )\n          .subscribe();\n      }\n    }\n  }\n\n  getErrorPattern() {\n    return this.errorPattern !== '' && this.hasInvalidClass() ? this.errorPattern : '';\n  }\n\n  validateClassesForPattern() {\n    const value = this.getScreenValue();\n    const element = this.el.nativeElement;\n\n    if (value && !this.verifyPattern(this.pattern, value)) {\n      element.classList.add('ng-invalid');\n      element.classList.add('ng-dirty');\n    } else {\n      element.classList.remove('ng-invalid');\n    }\n  }\n\n  validateClassesForMask(keyDown: boolean = false) {\n    const element = this.el.nativeElement;\n    const elementValue = this.inputEl.nativeElement.value;\n\n    if (!keyDown && !elementValue) {\n      element.classList.add('ng-invalid-mask');\n    } else {\n      element.classList.remove('ng-invalid-mask');\n    }\n  }\n\n  verifyPattern(pattern: string, value: any) {\n    return new RegExp(pattern).test(value);\n  }\n\n  clear(value) {\n    this.callOnChange(value);\n    this.controlChangeEmitter();\n    if (this.errorAsyncProperties?.triggerMode === 'changeModel') {\n      this.verifyErrorAsync();\n    }\n  }\n\n  writeValueModel(value) {\n    this.passedWriteValue = true;\n    if (this.inputEl) {\n      if (value) {\n        if (this.mask) {\n          this.inputEl.nativeElement.value = this.objMask.controlFormatting(String(value));\n\n          // Se o model for definido como formatado, então precisa atualizá-lo no primeiro acesso\n          if (this.objMask.formatModel) {\n            this.callUpdateModelWithTimeout(this.objMask.valueToModel);\n          }\n        } else {\n          this.inputEl.nativeElement.value = value;\n        }\n      } else {\n        // Se o valor for indefinido, deve limpar o campo.\n        this.inputEl.nativeElement.value = '';\n        this.modelLastUpdate = '';\n      }\n    }\n\n    // Emite evento quando o model é atualizado, inclusive a primeira vez\n    if (value) {\n      this.validateInitMask();\n      this.changeModel.emit(value);\n      this.verifyErrorAsync();\n    }\n  }\n\n  getScreenValue() {\n    const screenValue = (this.inputEl && this.inputEl.nativeElement.value) || undefined;\n\n    if (this.type === 'number') {\n      const parsedValue = parseFloat(screenValue);\n      return parsedValue || parsedValue === 0 ? parsedValue : null;\n    } else {\n      return screenValue;\n    }\n  }\n\n  validateInitMask() {\n    if (this.mask) {\n      this.validateClassesForMask();\n    }\n  }\n\n  abstract extraValidation(c: AbstractControl): { [key: string]: any };\n\n  setHelper(label?: string, additionalHelpTooltip?: string) {\n    return setHelperSettings(\n      label,\n      additionalHelpTooltip,\n      this.poHelperComponent(),\n      this.size,\n      this.isAdditionalHelpEventTriggered() ? this.additionalHelp : undefined\n    );\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  forwardRef,\n  OnDestroy,\n  inject,\n  OnChanges,\n  SimpleChanges\n} from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { uuid } from '../../../utils/util';\n\nimport { PoInputGeneric } from '../po-input-generic/po-input-generic';\n\n/* istanbul ignore next */\nconst providers = [\n  {\n    provide: NG_VALUE_ACCESSOR,\n    // eslint-disable-next-line\n    useExisting: forwardRef(() => PoEmailComponent),\n    multi: true\n  },\n  {\n    provide: NG_VALIDATORS,\n    // eslint-disable-next-line\n    useExisting: forwardRef(() => PoEmailComponent),\n    multi: true\n  }\n];\n\n/**\n * @docsExtends PoInputBaseComponent\n *\n * @description\n *\n * O `po-email` é um input específico para receber E-mail, com o pattern já configurado.\n *\n * @example\n *\n * <example name=\"po-email-basic\" title=\"PO Email Basic\">\n *  <file name=\"sample-po-email-basic/sample-po-email-basic.component.html\"> </file>\n *  <file name=\"sample-po-email-basic/sample-po-email-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-email-labs\" title=\"PO Email Labs\">\n *  <file name=\"sample-po-email-labs/sample-po-email-labs.component.html\"> </file>\n *  <file name=\"sample-po-email-labs/sample-po-email-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-email-newsletter\" title=\"PO Email - Newsletter\">\n *  <file name=\"sample-po-email-newsletter/sample-po-email-newsletter.component.html\"> </file>\n *  <file name=\"sample-po-email-newsletter/sample-po-email-newsletter.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-email',\n  templateUrl: '../po-input/po-input.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers,\n  standalone: false\n})\nexport class PoEmailComponent extends PoInputGeneric implements AfterViewInit, OnDestroy, OnChanges {\n  id = `po-email[${uuid()}]`;\n  icon = 'ICON_MAIL';\n\n  type = 'email';\n\n  // Consideramos o uso do nosso pattern com a seguinte expressão.\n  // Antes do símbolo @:\n  // - não há limite de caracteres.\n  // - não pode haver espaços em branco, caracteres acentuados, caracteres especiais ou símbolos.\n  // - pode começar com letras, números, hífen ou undescore (underline).\n  //\n  // Depois do símbolo @:\n  // - o domínio tem um limite de até 66 caracteres após um separador.\n  // - separador deve ser um 'ponto' (.).\n  // - o primeiro bloco pode conter letras, números, hífen ou underscore (underline).\n  // - após o primeiro separador é permitido apenas letras.\n  // - não pode haver espaços em branco, caracteres acentuados, caracteres especiais ou símbolos.\n  //\n  // Limite total de 254 caracteres para o e-mail.\n  //\n  // As recomendações foram consultadas nas RFC 1034, RFC 5321 e RFC 5322.\n  //\n  // RFC 1034 - https://datatracker.ietf.org/doc/html/rfc1034#section-3\n  // RFC 5321 - https://datatracker.ietf.org/doc/html/rfc5321#section-4.5.3.1\n  // RFC 5322 - https://datatracker.ietf.org/doc/html/rfc5322#section-3.4\n  pattern = '^([\\\\w-]+(?:\\\\.[\\\\w-]+)*)@((?:[\\\\w-]+\\\\.)*\\\\w[\\\\w-]{0,66})\\\\.([A-Za-z]{2,66}(?:\\\\.[A-Za-z]{2})?)$';\n\n  mask = '';\n\n  private readonly listener = this.validateClassesForPattern.bind(this);\n\n  /* istanbul ignore next */\n  constructor() {\n    const el = inject(ElementRef);\n    const cd = inject(ChangeDetectorRef);\n\n    super(el, cd);\n    this.maxlength = 254;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n  }\n\n  ngAfterViewInit() {\n    setTimeout(() => {\n      // Se não tem ngModel ou reactive form adiciona validação com classes css\n      if (!this.onChangePropagate) {\n        this.inputEl.nativeElement.addEventListener('keyup', this.listener);\n      }\n    });\n    super.ngAfterViewInit();\n  }\n\n  ngOnDestroy() {\n    if (!this.onChangePropagate) {\n      this.inputEl.nativeElement.removeEventListener('keyup', this.listener);\n    }\n  }\n\n  extraValidation(c: AbstractControl): { [key: string]: any } {\n    return null;\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n<po-field-container\n  #fieldContainer\n  [p-disabled]=\"isDisabled\"\n  [p-id]=\"id\"\n  [p-label]=\"label\"\n  [p-optional]=\"optional\"\n  [p-required]=\"required\"\n  [p-show-required]=\"showRequired\"\n  [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n  [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n  [p-size]=\"size\"\n  [p-text-wrap]=\"labelTextWrap()\"\n  [p-compact-label]=\"compactLabel()\"\n>\n  <div class=\"po-field-container-content\">\n    <div class=\"po-field-container-content-helper-wrapper\">\n      <div class=\"po-field-container-input\">\n        @if (icon) {\n          <div class=\"po-field-icon-container-left\">\n            <po-icon\n              class=\"po-field-icon {{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n              [class.po-field-icon-disabled]=\"isDisabled\"\n              [class.po-field-icon-aa]=\"size === 'small'\"\n              [p-icon]=\"icon\"\n            ></po-icon>\n          </div>\n        }\n\n        <input\n          #inp\n          class=\"po-input\"\n          [attr.name]=\"name\"\n          [attr.data-focused-element]=\"!isDisabled\"\n          [attr.data-inactive-component]=\"isDisabled || readonly\"\n          [attr.p-size]=\"size\"\n          [autocomplete]=\"autocomplete\"\n          [class.po-input-icon-left]=\"icon\"\n          [class.po-input-icon-left-aa]=\"icon && size === 'small'\"\n          [class.po-input-icon-right]=\"clean || loading\"\n          [class.po-input-icon-right-aa]=\"(clean || loading) && size === 'small'\"\n          [disabled]=\"isDisabled\"\n          [id]=\"id\"\n          [placeholder]=\"isDisabled ? '' : placeholder\"\n          [readonly]=\"readonly\"\n          [required]=\"required\"\n          [type]=\"type\"\n          (blur)=\"eventOnBlur($event)\"\n          (click)=\"eventOnClick($event)\"\n          (focus)=\"eventOnFocus($event)\"\n          (input)=\"eventOnInput($event)\"\n          (keydown)=\"onKeyDown($event)\"\n        />\n        <div class=\"po-field-icon-container-right\">\n          @if (loading) {\n            <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n          }\n\n          @if (!loading && clean && !isDisabled && !readonly) {\n            <po-clean\n              class=\"{{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n              [p-element-ref]=\"inputEl\"\n              [p-size]=\"size\"\n              (p-change-event)=\"clear($event)\"\n            >\n            </po-clean>\n          }\n        </div>\n      </div>\n      @if ((!this.label && poHelperComponent()) || (!this.label && poHelper.hideAdditionalHelp)) {\n        <po-helper\n          #helperEl\n          class=\"po-field-helper-button\"\n          [p-size]=\"size\"\n          [p-helper]=\"poHelper.helperSettings\"\n          [p-disabled]=\"isDisabled\"\n          [p-append-in-body]=\"appendBox\"\n        >\n        </po-helper>\n      }\n    </div>\n  </div>\n\n  @if (!readonly) {\n    <po-field-container-bottom\n      [p-append-in-body]=\"appendBox\"\n      [p-help]=\"help\"\n      [p-disabled]=\"isDisabled\"\n      [p-error-pattern]=\"getErrorPattern()\"\n      [p-error-limit]=\"errorLimit\"\n      [p-size]=\"size\"\n    ></po-field-container-bottom>\n  }\n</po-field-container>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  forwardRef,\n  ViewChild,\n  inject,\n  OnChanges,\n  SimpleChanges\n} from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { uuid } from '../../../utils/util';\n\nimport { PoInputGeneric } from '../po-input-generic/po-input-generic';\n\n/**\n * @docsExtends PoInputBaseComponent\n *\n * @example\n *\n * <example name=\"po-input-basic\" title=\"PO Input Basic\">\n *  <file name=\"sample-po-input-basic/sample-po-input-basic.component.html\"> </file>\n *  <file name=\"sample-po-input-basic/sample-po-input-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-input-labs\" title=\"PO Input Labs\">\n *  <file name=\"sample-po-input-labs/sample-po-input-labs.component.html\"> </file>\n *  <file name=\"sample-po-input-labs/sample-po-input-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-input-reactive-form\" title=\"PO Input - Reactive Form\">\n *  <file name=\"sample-po-input-reactive-form/sample-po-input-reactive-form.component.html\"> </file>\n *  <file name=\"sample-po-input-reactive-form/sample-po-input-reactive-form.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-input',\n  templateUrl: './po-input.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoInputComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => PoInputComponent),\n      multi: true\n    }\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoInputComponent extends PoInputGeneric implements OnChanges {\n  @ViewChild('inp', { static: true }) inp: ElementRef;\n\n  id = `po-input[${uuid()}]`;\n\n  /* istanbul ignore next */\n  constructor() {\n    const el = inject(ElementRef);\n    const cd = inject(ChangeDetectorRef);\n\n    super(el, cd);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n  }\n\n  extraValidation(c: AbstractControl): { [key: string]: any } {\n    return null;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  forwardRef,\n  Input,\n  inject,\n  OnChanges,\n  SimpleChanges\n} from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { convertToBoolean, uuid } from '../../../utils/util';\n\nimport { PoInputGeneric } from '../po-input-generic/po-input-generic';\n\n/* istanbul ignore next */\nconst providers = [\n  {\n    provide: NG_VALUE_ACCESSOR,\n    // eslint-disable-next-line\n    useExisting: forwardRef(() => PoLoginComponent),\n    multi: true\n  },\n  {\n    provide: NG_VALIDATORS,\n    // eslint-disable-next-line\n    useExisting: forwardRef(() => PoLoginComponent),\n    multi: true\n  }\n];\n\n/**\n * @docsExtends PoInputBaseComponent\n *\n * @description\n * O `po-login` é um input específico para login. Já possui tipo, estilo e ícone predefinidos.\n *\n * @example\n *\n * <example name=\"po-login-basic\" title=\"PO Login Basic\">\n *  <file name=\"sample-po-login-basic/sample-po-login-basic.component.html\"> </file>\n *  <file name=\"sample-po-login-basic/sample-po-login-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-login-labs\" title=\"PO Login Labs\">\n *  <file name=\"sample-po-login-labs/sample-po-login-labs.component.html\"> </file>\n *  <file name=\"sample-po-login-labs/sample-po-login-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-login-confirm\" title=\"PO Login - Confirm Identity\">\n *  <file name=\"sample-po-login-confirm/sample-po-login-confirm.component.html\"> </file>\n *  <file name=\"sample-po-login-confirm/sample-po-login-confirm.component.ts\"> </file>\n * </example>\n *\n */\n@Component({\n  selector: 'po-login',\n  templateUrl: './po-login.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers,\n  standalone: false\n})\nexport class PoLoginComponent extends PoInputGeneric implements OnChanges {\n  id = `po-login[${uuid()}]`;\n  type = 'text';\n  private _noAutocompleteLogin?: boolean = true;\n\n  @Input('p-no-autocomplete') override set noAutocomplete(value: boolean) {\n    this._noAutocompleteLogin = convertToBoolean(value);\n  }\n\n  override get noAutocomplete() {\n    return this._noAutocompleteLogin;\n  }\n\n  override get autocomplete(): string {\n    return this.noAutocomplete ? 'off' : 'on';\n  }\n\n  /* istanbul ignore next */\n  constructor() {\n    const el = inject(ElementRef);\n    const cd = inject(ChangeDetectorRef);\n\n    super(el, cd);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n  }\n\n  extraValidation(c: AbstractControl): { [key: string]: any } {\n    return null;\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n<po-field-container\n  [p-disabled]=\"isDisabled\"\n  [p-id]=\"id\"\n  [p-label]=\"label\"\n  [p-optional]=\"optional\"\n  [p-required]=\"required\"\n  [p-show-required]=\"showRequired\"\n  [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n  [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n  [p-size]=\"size\"\n  [p-text-wrap]=\"labelTextWrap()\"\n  [p-compact-label]=\"compactLabel()\"\n>\n  <div class=\"po-field-container-content\">\n    <div class=\"po-field-container-content-helper-wrapper\">\n      <div class=\"po-field-container-input\">\n        <div class=\"po-field-icon-container-left\">\n          <po-icon\n            p-icon=\"ICON_USER\"\n            class=\"po-field-icon {{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n            [class.po-field-icon-disabled]=\"isDisabled\"\n            [class.po-field-icon-aa]=\"size === 'small'\"\n          ></po-icon>\n        </div>\n\n        <input\n          #inp\n          class=\"po-input po-input-icon-left\"\n          [class.po-input-icon-left-aa]=\"size === 'small'\"\n          [attr.name]=\"name\"\n          [attr.p-size]=\"size\"\n          [autocomplete]=\"autocomplete\"\n          [class.po-input-icon-right]=\"clean || loading\"\n          [class.po-input-icon-right-aa]=\"(clean || loading) && size === 'small'\"\n          [disabled]=\"isDisabled\"\n          [id]=\"id\"\n          [placeholder]=\"isDisabled ? '' : placeholder\"\n          [readonly]=\"readonly\"\n          [required]=\"required\"\n          [type]=\"type\"\n          (blur)=\"eventOnBlur($event)\"\n          (click)=\"eventOnClick($event)\"\n          (focus)=\"eventOnFocus($event)\"\n          (input)=\"eventOnInput($event)\"\n          (keydown)=\"onKeyDown($event)\"\n        />\n\n        <div class=\"po-field-icon-container-right\">\n          @if (loading) {\n            <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n          }\n\n          @if (!loading && clean && !isDisabled && !readonly) {\n            <po-clean class=\"po-icon-input\" [p-element-ref]=\"inputEl\" [p-size]=\"size\" (p-change-event)=\"clear($event)\">\n            </po-clean>\n          }\n        </div>\n      </div>\n\n      @if ((!this.label && poHelperComponent()) || (!this.label && poHelper.hideAdditionalHelp)) {\n        <po-helper\n          #helperEl\n          class=\"po-field-helper-button\"\n          [p-size]=\"size\"\n          [p-helper]=\"poHelper.helperSettings\"\n          [p-disabled]=\"isDisabled\"\n          [p-append-in-body]=\"appendBox\"\n        >\n        </po-helper>\n      }\n    </div>\n  </div>\n\n  @if (!readonly) {\n    <po-field-container-bottom\n      [p-help]=\"help\"\n      [p-disabled]=\"isDisabled\"\n      [p-error-pattern]=\"getErrorPattern()\"\n      [p-error-limit]=\"errorLimit\"\n      [p-size]=\"size\"\n    >\n    </po-field-container-bottom>\n  }\n</po-field-container>\n","import {\n  ChangeDetectorRef,\n  Directive,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild\n} from '@angular/core';\n\nimport { Observable, Subscription, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport { PoModalAction } from '../../../../components/po-modal';\nimport { PoModalComponent } from '../../../../components/po-modal/po-modal.component';\nimport { poLocaleDefault } from '../../../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../../../services/po-language/po-language.service';\nimport { capitalizeFirstLetter, convertToBoolean, isTypeof } from '../../../../utils/util';\nimport { PoTableColumnSortType, PoTableColumnSpacing } from '../../../po-table';\nimport { PoTableColumnSort } from '../../../po-table/interfaces/po-table-column-sort.interface';\nimport { poTableLiteralsDefault } from '../../../po-table/po-table-base.component';\n\nimport { PoLookupAdvancedFilter } from '../interfaces/po-lookup-advanced-filter.interface';\nimport { PoLookupColumn } from '../interfaces/po-lookup-column.interface';\nimport { PoLookupFilter } from '../interfaces/po-lookup-filter.interface';\nimport { PoLookupFilteredItemsParams } from '../interfaces/po-lookup-filtered-items-params.interface';\nimport { PoLookupLiterals } from '../interfaces/po-lookup-literals.interface';\nimport { PoLookupResponseApi } from '../interfaces/po-lookup-response-api.interface';\nimport { PoDisclaimerGroup } from './../../../po-disclaimer-group/po-disclaimer-group.interface';\nimport { PoDisclaimer } from './../../../po-disclaimer/po-disclaimer.interface';\nimport { PoTableComponent } from './../../../po-table/po-table.component';\n\nexport const poLookupLiteralsDefault = {\n  en: <PoLookupLiterals>{\n    modalPrimaryActionLabel: 'Select',\n    modalSecondaryActionLabel: 'Cancel',\n    modalPlaceholder: 'Search',\n    modalTitle: 'Select a record',\n    modalTableNoColumns: poTableLiteralsDefault.en.noColumns,\n    modalTableNoData: poTableLiteralsDefault.en.noData,\n    modalTableLoadingData: poTableLiteralsDefault.en.loadingData,\n    modalTableLoadMoreData: poTableLiteralsDefault.en.loadMoreData,\n    modalAdvancedSearch: 'Advanced search',\n    modalAdvancedSearchTitle: 'Advanced search',\n    modalAdvancedSearchPrimaryActionLabel: 'Filter',\n    modalAdvancedSearchSecondaryActionLabel: 'Return',\n    modalDisclaimerGroupTitle: 'Presenting results filtered by:'\n  },\n  es: <PoLookupLiterals>{\n    modalPrimaryActionLabel: 'Seleccionar',\n    modalSecondaryActionLabel: 'Cancelar',\n    modalPlaceholder: 'Buscar',\n    modalTitle: 'Seleccione un registro',\n    modalTableNoColumns: poTableLiteralsDefault.es.noColumns,\n    modalTableNoData: poTableLiteralsDefault.es.noData,\n    modalTableLoadingData: poTableLiteralsDefault.es.loadingData,\n    modalTableLoadMoreData: poTableLiteralsDefault.es.loadMoreData,\n    modalAdvancedSearch: 'Búsqueda Avanzada',\n    modalAdvancedSearchTitle: 'Búsqueda Avanzada',\n    modalAdvancedSearchPrimaryActionLabel: 'Filtrar',\n    modalAdvancedSearchSecondaryActionLabel: 'Vuelve',\n    modalDisclaimerGroupTitle: 'Presentar resultados filtrados por:'\n  },\n  pt: <PoLookupLiterals>{\n    modalPrimaryActionLabel: 'Selecionar',\n    modalSecondaryActionLabel: 'Cancelar',\n    modalPlaceholder: 'Pesquisar',\n    modalTitle: 'Selecione um registro',\n    modalTableNoColumns: poTableLiteralsDefault.pt.noColumns,\n    modalTableNoData: poTableLiteralsDefault.pt.noData,\n    modalTableLoadingData: poTableLiteralsDefault.pt.loadingData,\n    modalTableLoadMoreData: poTableLiteralsDefault.pt.loadMoreData,\n    modalAdvancedSearch: 'Busca avançada',\n    modalAdvancedSearchTitle: 'Busca Avançada',\n    modalAdvancedSearchPrimaryActionLabel: 'Filtrar',\n    modalAdvancedSearchSecondaryActionLabel: 'Voltar',\n    modalDisclaimerGroupTitle: 'Apresentando resultados filtrados por:'\n  },\n  ru: <PoLookupLiterals>{\n    modalPrimaryActionLabel: 'Выбрать',\n    modalSecondaryActionLabel: 'Отменить',\n    modalPlaceholder: 'Поиск',\n    modalTitle: 'Выберите запись',\n    modalTableNoColumns: poTableLiteralsDefault.ru.noColumns,\n    modalTableNoData: poTableLiteralsDefault.ru.noData,\n    modalTableLoadingData: poTableLiteralsDefault.ru.loadingData,\n    modalTableLoadMoreData: poTableLiteralsDefault.ru.loadMoreData,\n    modalAdvancedSearch: 'Расширенный поиск',\n    modalAdvancedSearchTitle: 'Расширенный поиск',\n    modalAdvancedSearchPrimaryActionLabel: 'Фильтр',\n    modalAdvancedSearchSecondaryActionLabel: 'Назад',\n    modalDisclaimerGroupTitle: 'Представленные результаты отфильтрованы по:'\n  }\n};\n\n/**\n * @docsPrivate\n *\n * Classe base do componente Po Lookup Modal.\n */\n@Directive()\nexport abstract class PoLookupModalBaseComponent implements OnDestroy, OnInit {\n  @ViewChild(PoModalComponent, { static: true }) poModal: PoModalComponent;\n  @ViewChild(PoTableComponent, { static: true }) poTable: PoTableComponent;\n\n  /**\n   * Objeto com os campos que serão criados no busca avançada.\n   *\n   * > Caso não seja passado um objeto ou então ele esteja em branco o link de busca avançada ficará escondido.\n   *\n   * Exemplo de URL com busca avançada: http://localhost:3000/v1/heroes?filter=&page=1&pageSize=10`&name=Tony%20Stark&nickname=Homem%20de%20Ferro&email=irnman@marvel.com`\n   *\n   * Caso algum parâmetro seja uma lista, a concatenação é feita utilizando virgula.\n   * Exemplo: http://localhost:3000/v1/heroes?filter=&page=1&pageSize=10`&name=Tony%20Stark,Peter%20Parker,Gohan`\n   *\n   */\n  @Input('p-advanced-filters') advancedFilters: Array<PoLookupAdvancedFilter>;\n\n  /**\n   * Lista das colunas da tabela.\n   * Essa propriedade deve receber um array de objetos que implementam a interface PoLookupColumn.\n   */\n  @Input('p-columns') columns: Array<PoLookupColumn>;\n\n  /** Lista de itens da tabela. */\n  @Input('p-items') items: Array<any>;\n\n  /** Classe de serviço com a implementação do cliente. */\n  @Input('p-filter-service') filterService: PoLookupFilter;\n\n  /** Classe de serviço com a implementação do cliente. */\n  @Input('p-filter-params') filterParams: any;\n\n  /** Se verdadeiro, esconde o gerenciador de tarefas, responsável pela definição de quais colunas serão exibidas. */\n  @Input({ alias: 'p-hide-columns-manager', transform: convertToBoolean })\n  hideColumnsManager: boolean = false;\n\n  /** Se verdadeiro, ativa a funcionalidade de scroll infinito para a tabela exibida no retorno da consulta. */\n  @Input({ alias: 'p-infinite-scroll', transform: convertToBoolean }) infiniteScroll: boolean = false;\n\n  /** Se verdadeiro, ativa a funcionalidade de multipla seleção. */\n  @Input({ alias: 'p-multiple', transform: convertToBoolean }) multiple: boolean = false;\n\n  /** Evento utilizado ao selecionar um registro da tabela. */\n  @Output('p-change-model') model: EventEmitter<any> = new EventEmitter<any>();\n\n  /** Classe de serviço com items selecionados */\n  @Input('p-selected-items') selectedItems: any;\n\n  /** Indica a coluna que será utilizada como descrição do campo e como filtro dentro da janela. */\n  @Input('p-field-label') fieldLabel: string;\n\n  /**\n   * @description\n   *\n   * Indica a coluna que será utilizada como valor do campo.\n   *\n   * > Atenção: Caso não seja passada ou tenha o conteúdo incorreto, não irá atualizar o model do formulário.\n   */\n  @Input('p-field-value') fieldValue: string;\n\n  /**\n   * Define o espaçamento interno das células, impactando diretamente na altura das linhas do table dentro do modal. Os\n   * valores permitidos são definidos pelo enum **PoTableColumnSpacing**.\n   */\n  @Input('p-spacing') spacing: PoTableColumnSpacing;\n\n  /** Define o tamanho do componente. */\n  @HostBinding('attr.p-size')\n  @Input('p-size')\n  size: string;\n\n  /**\n   * Habilita ou desabilita a quebra automática de texto. Quando ativada, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * > Incompatível com `virtual-scroll`, que requer altura fixa nas linhas.\n   *\n   */\n  @Input({ alias: 'p-text-wrap', transform: convertToBoolean }) textWrap?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita o `virtual-scroll` na tabela para melhorar a performance com grandes volumes de dados.\n   * A altura da tabela já é pré-definida, portanto o `virtual-scroll` será ativado automaticamente.\n   *\n   * > Incompatível com `p-text-wrap` e `master-detail`, pois o `virtual-scroll` exige altura fixa nas linhas.\n   *\n   * @default `true`\n   */\n  @Input({ alias: 'p-virtual-scroll', transform: convertToBoolean }) virtualScroll?: boolean = true;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado ao fechar o popover do gerenciador de colunas após alterar as colunas visíveis.\n   *\n   * O componente envia como parâmetro um array de string com as colunas visíveis atualizadas.\n   * Por exemplo: [\"idCard\", \"name\", \"hireStatus\", \"age\"].\n   */\n  @Output('p-change-visible-columns') changeVisibleColumns = new EventEmitter<Array<string>>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar no botão de restaurar padrão no gerenciador de colunas.\n   *\n   * O componente envia como parâmetro um array de string com as colunas configuradas inicialmente.\n   * Por exemplo: [\"idCard\", \"name\", \"hireStatus\", \"age\"].\n   */\n  @Output('p-restore-column-manager') columnRestoreManager = new EventEmitter<Array<string>>();\n\n  hasNext = true;\n  isLoading = false;\n  page = 1;\n  pageSize = 10;\n  searchValue: string = '';\n  appliedSearchValue: string = '';\n  tableLiterals: any;\n\n  // Propriedade da modal de busca avançada:\n  advancedFilterModalTitle = '';\n  dynamicFormValue = {};\n  disclaimer!: PoDisclaimer;\n  disclaimerGroup!: PoDisclaimerGroup;\n  isAdvancedFilter = false;\n  primaryActionAdvancedFilter!: PoModalAction;\n  secondaryActionAdvancedFilter!: PoModalAction;\n  selecteds: Array<any> = [];\n\n  protected sort: PoTableColumnSort;\n\n  private filterSubscription: Subscription;\n  private searchSubscription: Subscription;\n  private showMoreSubscription: Subscription;\n  private disclaimerLabel: string;\n\n  private _literals: PoLookupLiterals;\n  private _title: string;\n  private readonly language: string = poLocaleDefault;\n\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  primaryAction: PoModalAction = {\n    action: () => {\n      let selectedsItems: Array<any> = [];\n      if (!this.multiple) {\n        this.items.forEach(element => {\n          if (element['$selected']) {\n            selectedsItems.push(element);\n          }\n        });\n      } else {\n        selectedsItems = this.selecteds;\n      }\n      this.model.emit(selectedsItems);\n      this.poModal.close();\n    },\n    label: this.literals.modalPrimaryActionLabel\n  };\n\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  secondaryAction: PoModalAction = {\n    action: () => {\n      this.model.emit(null);\n      this.poModal.close();\n    },\n    label: this.literals.modalSecondaryActionLabel\n  };\n\n  /** Objeto com as literais usadas no `po-lookup-modal`. */\n  @Input('p-literals') set literals(value: PoLookupLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poLookupLiteralsDefault[poLocaleDefault],\n        ...poLookupLiteralsDefault[this.language],\n        ...value\n      };\n      if (value.modalTitle) {\n        this.title = this.literals.modalTitle;\n      }\n    } else {\n      this._literals = poLookupLiteralsDefault[this.language];\n    }\n    this.primaryAction.label = this.literals.modalPrimaryActionLabel;\n    this.secondaryAction.label = this.literals.modalSecondaryActionLabel;\n    this.setTableLiterals();\n  }\n\n  get literals() {\n    return this._literals || poLookupLiteralsDefault[this.language];\n  }\n\n  /** Título da modal. */\n  @Input('p-title') set title(value: string) {\n    this._title = isTypeof(value, 'string') ? value : this.literals.modalTitle;\n  }\n\n  get title() {\n    return this._title;\n  }\n\n  constructor(\n    languageService: PoLanguageService,\n    protected changeDetector: ChangeDetectorRef\n  ) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  ngOnDestroy() {\n    if (this.filterSubscription) {\n      this.filterSubscription.unsubscribe();\n    }\n\n    if (this.searchSubscription) {\n      this.searchSubscription.unsubscribe();\n    }\n\n    if (this.showMoreSubscription) {\n      this.showMoreSubscription.unsubscribe();\n    }\n  }\n\n  ngOnInit() {\n    this.setAdvancedFilterModalProperties();\n    this.initializeData();\n    this.setTableLiterals();\n  }\n\n  createDisclaimer() {\n    this.disclaimerGroup.disclaimers = [];\n    this.searchValue = '';\n    this.appliedSearchValue = '';\n\n    for (const [key, value] of Object.entries(this.dynamicFormValue)) {\n      this.addDisclaimer(value, key);\n    }\n\n    if (!Object.values(this.dynamicFormValue).some(v => v !== null && typeof v !== 'undefined')) {\n      this.initializeData();\n    }\n  }\n\n  addDisclaimer(value: any, property: string) {\n    this.disclaimerLabel = '';\n    const fieldFilter = this.advancedFilters.find(filter => filter.property === property);\n    this.disclaimer = <any>{ property: property };\n    this.disclaimer.value = value;\n    const labelProperty = fieldFilter.label || capitalizeFirstLetter(fieldFilter.property);\n\n    if (fieldFilter.type === 'currency' && value) {\n      this.formatValueToCurrency(fieldFilter, value);\n    }\n\n    if (fieldFilter.type === 'boolean' && (value === true || value === false)) {\n      this.formatValueToBoolean(fieldFilter, value);\n    }\n\n    if (fieldFilter.options && value) {\n      this.applyDisclaimerLabelValue(fieldFilter, value);\n    }\n\n    if (!this.disclaimerLabel) {\n      this.disclaimerLabel = this.disclaimer.value;\n    }\n\n    this.disclaimer.label = `${labelProperty}: ${this.disclaimerLabel}`;\n    this.disclaimerGroup.disclaimers = [...this.disclaimerGroup.disclaimers, this.disclaimer];\n  }\n\n  onChangeDisclaimerGroup() {\n    if (!this.appliedSearchValue) {\n      this.isLoading = true;\n      this.searchValue = '';\n      this.appliedSearchValue = '';\n\n      this.searchFilteredItems();\n    }\n  }\n\n  search(): void {\n    this.page = 1;\n\n    this.appliedSearchValue = this.searchValue;\n\n    if (this.appliedSearchValue) {\n      this.isLoading = true;\n      this.disclaimerGroup.disclaimers = [];\n\n      this.searchFilteredItems();\n    } else {\n      this.initializeData();\n    }\n  }\n\n  searchFilteredItems(): void {\n    this.searchSubscription = this.getFilteredItems(this.appliedSearchValue)\n      .pipe(\n        catchError(error => {\n          this.setLookupResponseProperties();\n          return throwError(error);\n        })\n      )\n      .subscribe(\n        (data: PoLookupResponseApi) => this.setLookupResponseProperties(data),\n        () => {}\n      );\n  }\n\n  showMoreEvent() {\n    this.page++;\n    this.isLoading = true;\n\n    if (this.searchValue !== this.appliedSearchValue) {\n      this.searchValue = this.appliedSearchValue;\n    }\n\n    this.showMoreSubscription = this.getFilteredItems(this.appliedSearchValue)\n      .pipe(\n        catchError(error => {\n          this.hasNext = false;\n          this.isLoading = false;\n          return throwError(error);\n        })\n      )\n      .subscribe(\n        (data: PoLookupResponseApi) => {\n          this.items = [...this.items, ...data.items];\n          this.hasNext = data.hasNext;\n          this.isLoading = false;\n          this.changeDetector.detectChanges();\n          this.setSelectedItems();\n        },\n        () => {}\n      );\n  }\n\n  //Método responsável por selecionar as linhas quando abre o modal.\n  setSelectedItems() {\n    this.selecteds.forEach(selectedItem => {\n      if (this.multiple) {\n        this.poTable.selectRowItem(item => item[this.fieldValue] === selectedItem.value);\n      } else {\n        this.poTable.selectRowItem(item => item[this.fieldValue] === selectedItem[this.fieldValue]);\n      }\n    });\n  }\n\n  //Método responsável por criar os disclaimers quando abre o modal.\n  setDisclaimersItems() {\n    if (this.selectedItems && Array.isArray(this.selectedItems) && this.selectedItems.length > 0) {\n      this.selecteds = [...this.selectedItems];\n    } else if (this.selectedItems && !Array.isArray(this.selectedItems)) {\n      this.selecteds = [this.selectedItems];\n    } else {\n      this.selecteds = [];\n    }\n  }\n\n  private applyDisclaimerLabelValue(field: PoLookupAdvancedFilter, filterValue: any) {\n    const values = Array.isArray(filterValue) ? filterValue : [filterValue];\n    const labels = values.map(optionValue => {\n      const findOption = field.options.find(option => option.value === optionValue);\n      return findOption.label;\n    });\n\n    if (labels.join()) {\n      this.disclaimerLabel = labels.join(', ');\n    }\n  }\n\n  private formatValueToCurrency(field: PoLookupAdvancedFilter, filterValue: any) {\n    const currencyLabel = new Intl.NumberFormat(field.locale ? field.locale : this.language, {\n      minimumFractionDigits: 2\n    }).format(filterValue);\n    this.disclaimerLabel = currencyLabel;\n  }\n\n  private formatValueToBoolean(field: PoLookupAdvancedFilter, filterValue: any) {\n    let labelBoolean: string;\n\n    if (filterValue) {\n      labelBoolean = field.booleanTrue ? field.booleanTrue : filterValue;\n    } else {\n      labelBoolean = field.booleanFalse ? field.booleanFalse : filterValue;\n    }\n    this.disclaimerLabel = `${labelBoolean}`;\n  }\n\n  private setAdvancedFilterModalProperties() {\n    this.advancedFilterModalTitle = this.literals.modalAdvancedSearchTitle;\n\n    this.disclaimerGroup = {\n      title: this.literals.modalDisclaimerGroupTitle,\n      disclaimers: []\n    };\n\n    this.primaryActionAdvancedFilter = {\n      action: () => {\n        this.destroyDynamicForm();\n        this.isAdvancedFilter = false;\n        this.page = 1;\n        this.createDisclaimer();\n      },\n      label: this.literals.modalAdvancedSearchPrimaryActionLabel\n    };\n\n    this.secondaryActionAdvancedFilter = {\n      action: () => {\n        this.destroyDynamicForm();\n        this.isAdvancedFilter = false;\n      },\n      label: this.literals.modalAdvancedSearchSecondaryActionLabel\n    };\n  }\n\n  private getAdvancedFilters(advancedParams: any) {\n    if (advancedParams && advancedParams.length > 0) {\n      const filters: object = {};\n      let validatedAdvacendFilters: any;\n\n      advancedParams.forEach((filter: any) => {\n        filters[filter.property] = filter.value instanceof Array ? filter.value.join() : filter.value;\n\n        validatedAdvacendFilters = { ...validatedAdvacendFilters, ...filters };\n      });\n\n      return validatedAdvacendFilters;\n    }\n\n    return undefined;\n  }\n\n  private getFilteredItems(filter: string): Observable<PoLookupResponseApi> {\n    const filteredParams: PoLookupFilteredItemsParams = this.getFilteredParams(filter);\n\n    return this.filterService.getFilteredItems(filteredParams);\n  }\n\n  private getFilteredParams(filter: string) {\n    const { page, pageSize, filterParams, sort } = this;\n\n    const filteredParams = {};\n    const order = this.getOrderParam(sort);\n    const advancedFilters = this.getAdvancedFilters(this.disclaimerGroup.disclaimers);\n    const params = { filter, page, pageSize, order, filterParams, advancedFilters };\n\n    for (const key in params) {\n      if (params.hasOwnProperty(key) && params[key] !== undefined) {\n        filteredParams[key] = params[key];\n      }\n    }\n\n    return filteredParams;\n  }\n\n  private getOrderParam(sort: PoTableColumnSort = { type: undefined }) {\n    const { column, type } = sort;\n\n    if (!column) {\n      return;\n    }\n\n    if (type === PoTableColumnSortType.Descending) {\n      return `-${column.property}`;\n    }\n\n    return `${column.property}`;\n  }\n\n  private initializeData(): void {\n    this.isLoading = true;\n\n    this.filterSubscription = this.getFilteredItems('').subscribe(data => {\n      this.setLookupResponseProperties(data);\n    });\n  }\n\n  private setLookupResponseProperties(data?: PoLookupResponseApi) {\n    this.items = data?.items ?? [];\n    this.hasNext = data?.hasNext ?? false;\n    this.isLoading = false;\n    this.changeDetector.detectChanges();\n    this.setDisclaimersItems();\n    this.setSelectedItems();\n  }\n\n  private setTableLiterals() {\n    this.tableLiterals = {\n      'noColumns': this.literals.modalTableNoColumns,\n      'noData': this.literals.modalTableNoData,\n      'loadingData': this.literals.modalTableLoadingData,\n      'loadMoreData': this.literals.modalTableLoadMoreData\n    };\n  }\n\n  // Método responsável por abrir a modal de busca das informações.\n  abstract openModal(): void;\n\n  // Método responsável por destruir o dynamicForm\n  abstract destroyDynamicForm(): void;\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ElementRef,\n  OnInit,\n  ViewChild,\n  ViewContainerRef,\n  inject\n} from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { switchMap, tap } from 'rxjs/operators';\nimport { PO_TABLE_ROW_HEIGHT_BY_SPACING, sortArrayOfObjects } from '../../../../utils/util';\nimport { PoTableColumnSpacing } from '../../../po-table';\nimport { PoTableColumnSort } from '../../../po-table/interfaces/po-table-column-sort.interface';\nimport { PoLookupModalBaseComponent } from '../po-lookup-modal/po-lookup-modal-base.component';\nimport { PoLanguageService } from './../../../../services/po-language/po-language.service';\nimport { PoFieldSize } from './../../../../../lib/enums/po-field-size.enum';\n\n/**\n * @docsPrivate\n *\n * @docsExtends PoLookupModalBaseComponent\n */\n@Component({\n  selector: 'po-lookup-modal',\n  templateUrl: './po-lookup-modal.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoLookupModalComponent extends PoLookupModalBaseComponent implements OnInit {\n  @ViewChild('inpsearch') inputSearchEl: ElementRef;\n  @ViewChild('container', { read: ViewContainerRef }) container: ViewContainerRef;\n\n  keyUpObservable: Observable<any> = null;\n\n  tableHeight: number;\n\n  componentRef: ComponentRef<any>;\n  dynamicForm: NgForm;\n\n  constructor() {\n    const poLanguage = inject(PoLanguageService);\n    const changeDetector = inject(ChangeDetectorRef);\n\n    super(poLanguage, changeDetector);\n  }\n\n  ngOnInit() {\n    super.ngOnInit();\n    this.setTableHeight();\n  }\n\n  // Seleciona um item na tabela\n  onSelect(item) {\n    const formattedItem = {\n      value: item[this.fieldValue],\n      label: item[this.fieldLabel],\n      ...item\n    };\n    if (this.multiple) {\n      this.selectedItems = this.selectedItems ? [...this.selectedItems, formattedItem] : [formattedItem];\n    } else {\n      this.selectedItems = [formattedItem];\n    }\n    this.selecteds = [...this.selectedItems];\n  }\n\n  // Remove a seleção de um item na tabela\n  onUnselect(unselectedItem) {\n    if (this.multiple) {\n      this.selectedItems = this.selectedItems.filter(item => item.value !== unselectedItem[this.fieldValue]);\n    } else {\n      this.selectedItems = [];\n    }\n    this.selecteds = [...this.selectedItems];\n  }\n\n  onUnselectFromDisclaimer(removedDisclaimer) {\n    this.selectedItems = this.selectedItems.filter(item => item.value !== removedDisclaimer.value);\n    if (this.selectedItems.length === 0) {\n      this.selecteds = [];\n    } else {\n      this.selecteds = [...this.selectedItems];\n    }\n    this.poTable.unselectRowItem(item => item[this.fieldValue] === removedDisclaimer.value);\n  }\n\n  // Seleciona todos os itens visíveis na tabela\n  onAllSelected(items) {\n    const newItems = items\n      .filter(item => !this.selectedItems?.some(selected => selected[this.fieldValue] === item[this.fieldValue]))\n      .map(item => ({\n        value: item[this.fieldValue],\n        label: item[this.fieldLabel],\n        ...item\n      }));\n\n    this.selectedItems = [...this.selectedItems, ...newItems];\n    this.selecteds = [...this.selectedItems];\n  }\n\n  // Remove a seleção de todos os itens visíveis na tabela\n  onAllUnselected(items) {\n    const newItems = this.selectedItems?.filter(\n      item => !items.some(selected => selected[this.fieldValue] === item[this.fieldValue])\n    );\n\n    if (newItems?.length) {\n      this.selectedItems = [...newItems];\n      this.selecteds = [...this.selectedItems];\n    } else {\n      this.selectedItems = [];\n      this.selecteds = [];\n    }\n  }\n\n  onAllUnselectedTag(items) {\n    this.poTable.unselectRows();\n    this.selectedItems = [];\n    this.selecteds = [];\n  }\n\n  openModal() {\n    this.poModal.open();\n  }\n\n  sortBy(sort: PoTableColumnSort) {\n    const order = sort.type === 'ascending';\n    sortArrayOfObjects(this.items, sort.column.property, order);\n\n    this.sort = sort;\n  }\n\n  destroyDynamicForm() {\n    if (this.componentRef) {\n      this.componentRef.destroy();\n    }\n  }\n\n  onAdvancedFilter() {\n    this.setupModalAdvancedFilter();\n    this.createDynamicForm();\n  }\n\n  private setTableHeight(): void {\n    const visibleRows = 10;\n    const headerHeight = this.spacing === PoTableColumnSpacing.ExtraSmall ? 32 : 48;\n    const footerHeight = this.size === PoFieldSize.Small ? 48 : 60;\n    const currentRowHeight = PO_TABLE_ROW_HEIGHT_BY_SPACING[this.spacing];\n    const extraHeight = this.infiniteScroll ? headerHeight : headerHeight + footerHeight;\n\n    this.tableHeight = currentRowHeight * visibleRows + extraHeight;\n  }\n\n  private setupModalAdvancedFilter() {\n    this.dynamicFormValue = {};\n    this.isAdvancedFilter = true;\n  }\n\n  private createDynamicForm() {\n    // Utilizado o `import` para quebrar a dependência circular\n    // PoDynamicFormComponent -> PoDynamicFormFieldsComponent-> PoLookupComponent ->\n    //  PoLookupModalService -> PoLookupModalComponent -> PoDynamicFormComponent\n\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    import('./../../../po-dynamic/po-dynamic-form/po-dynamic-form.component').then(({ PoDynamicFormComponent }) => {\n      this.componentRef = this.container.createComponent(PoDynamicFormComponent);\n      this.componentRef.instance.fields = this.advancedFilters;\n      this.componentRef.instance.value = this.dynamicFormValue;\n      this.componentRef.instance.componentsSize = this.size;\n\n      this.componentRef.instance.formOutput\n        .pipe(\n          tap((form: NgForm) => {\n            this.dynamicForm = form;\n            this.primaryActionAdvancedFilter.disabled = this.dynamicForm.invalid;\n          }),\n          switchMap((form: NgForm) => form.valueChanges)\n        )\n        .subscribe(() => {\n          this.primaryActionAdvancedFilter.disabled = this.dynamicForm.invalid;\n        });\n      this.changeDetector.markForCheck();\n    });\n  }\n}\n","<po-modal\n  p-click-out=\"false\"\n  p-hide-close=\"false\"\n  p-size=\"lg\"\n  [p-components-size]=\"size\"\n  [p-primary-action]=\"isAdvancedFilter ? primaryActionAdvancedFilter : primaryAction\"\n  [p-secondary-action]=\"isAdvancedFilter ? secondaryActionAdvancedFilter : secondaryAction\"\n  [p-title]=\"isAdvancedFilter ? advancedFilterModalTitle : title\"\n>\n  <div [hidden]=\"isAdvancedFilter && advancedFilters.length > 0\">\n    <po-field-container class=\"po-lookup-header po-pull-right\" [p-optional]=\"false\">\n      <div class=\"po-lookup-filter-content\">\n        <div class=\"po-field-icon-container-right\">\n          <po-icon\n            #iconLookup\n            p-icon=\"ICON_SEARCH\"\n            class=\"po-field-icon po-icon-input\"\n            [class.po-field-icon-aa]=\"size === 'small'\"\n            (click)=\"search()\"\n          >\n          </po-icon>\n        </div>\n\n        <input\n          #inpsearch\n          class=\"po-input po-input-icon-right\"\n          [attr.p-size]=\"size\"\n          name=\"contentSearch\"\n          [(ngModel)]=\"searchValue\"\n          [placeholder]=\"literals.modalPlaceholder\"\n          (keydown.enter)=\"search()\"\n          type=\"text\"\n        />\n      </div>\n\n      @if (advancedFilters && advancedFilters.length > 0) {\n        <div class=\"po-lookup-advanced-search\">\n          <span\n            class=\"po-lookup-advanced-search-link\"\n            tabindex=\"0\"\n            (click)=\"onAdvancedFilter()\"\n            (keydown.enter)=\"onAdvancedFilter()\"\n          >\n            {{ literals.modalAdvancedSearch }}\n          </span>\n        </div>\n      }\n    </po-field-container>\n\n    <!-- DISCLAIMER -->\n    @if (!!disclaimerGroup) {\n      <po-disclaimer-group\n        class=\"po-md-12\"\n        [p-disclaimers]=\"disclaimerGroup?.disclaimers\"\n        [p-title]=\"disclaimerGroup?.title\"\n        (p-change)=\"onChangeDisclaimerGroup()\"\n      >\n      </po-disclaimer-group>\n    }\n\n    <div class=\"po-row po-lookup-container-table\" [attr.data-multiple]=\"multiple\">\n      <po-table\n        #poTable\n        class=\"po-md-12\"\n        [p-components-size]=\"size\"\n        [p-selectable]=\"true\"\n        [p-hide-detail]=\"true\"\n        [p-single-select]=\"!multiple\"\n        [p-hide-action-fixed-columns]=\"true\"\n        [p-sort]=\"true\"\n        [p-columns]=\"columns\"\n        [p-height]=\"tableHeight\"\n        [p-hide-columns-manager]=\"hideColumnsManager\"\n        [p-items]=\"items\"\n        [p-literals]=\"tableLiterals\"\n        [p-loading]=\"isLoading\"\n        [p-show-more-disabled]=\"!hasNext\"\n        [p-infinite-scroll]=\"infiniteScroll\"\n        [p-spacing]=\"spacing\"\n        [p-text-wrap]=\"textWrap\"\n        [p-virtual-scroll]=\"virtualScroll\"\n        (p-selected)=\"onSelect($event)\"\n        (p-unselected)=\"onUnselect($event)\"\n        (p-all-selected)=\"onAllSelected($event)\"\n        (p-all-unselected)=\"onAllUnselected($event)\"\n        (p-show-more)=\"showMoreEvent()\"\n        (p-sort-by)=\"sortBy($event)\"\n        (p-change-visible-columns)=\"changeVisibleColumns.emit($event)\"\n        (p-restore-column-manager)=\"columnRestoreManager.emit($event)\"\n      >\n      </po-table>\n    </div>\n\n    <!-- DISCLAIMER -->\n    @if (multiple) {\n      <po-disclaimer-group\n        class=\"po-md-12\"\n        [p-disclaimers]=\"selecteds\"\n        (p-remove)=\"onUnselectFromDisclaimer($event.removedDisclaimer)\"\n        (p-remove-all)=\"onAllUnselectedTag($event)\"\n      >\n      </po-disclaimer-group>\n    }\n  </div>\n  <div [hidden]=\"!isAdvancedFilter\">\n    <ng-container #container> </ng-container>\n  </div>\n</po-modal>\n","import { NgModule } from '@angular/core';\n\nimport { PoActiveOverlayService } from './po-active-overlay.service';\n\n/**\n * @description\n *\n * Módulo do serviço `po-active-overlay`.\n */\n@NgModule({\n  providers: [PoActiveOverlayService],\n  bootstrap: []\n})\nexport class PoActiveOverlayModule {}\n","import { InjectionToken } from '@angular/core';\n\nimport { PoI18nConfig } from './interfaces/po-i18n-config.interface';\n\nexport const I18N_CONFIG = new InjectionToken<Array<PoI18nConfig>>('I18N_CONFIG');\n","import { HttpClient } from '@angular/common/http';\nimport { Directive, Inject } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { PoUtils } from '../../utils/util';\nimport { PoLanguageService } from '../po-language/po-language.service';\n\nimport { PoI18nConfig } from './interfaces/po-i18n-config.interface';\nimport { PoI18nLiterals } from './interfaces/po-i18n-literals.interface';\nimport { I18N_CONFIG } from './po-i18n-config-injection-token';\n\n/**\n * @description\n *\n * O serviço `PoI18nService` possibilita utilizar múltiplos idiomas e contextos na aplicação.\n *\n * > Antes da utilização do serviço, é necessário realizar a\n * [importação e configuração do módulo `PoI18nModule`](/documentation/po-i18n#i18n-config).\n *\n * **Utilização do serviço `PoI18nService`:**\n *\n * Para utilizar o serviço basta importá-lo nos componentes que necessitarem de literais e fazer a injeção de\n * dependência no construtor:\n * ```\n *  import { PoI18nService } from '@po-ui/ng-components';\n *  ...\n *  constructor(private poI18nService: PoI18nService) { }\n *  ...\n * ```\n *\n * Por fim realizar a busca pelas literais, inscrevendo-se no [Observable](https://angular.io/guide/observables) pelo\n * método `getLiterals()`.\n *\n * > O método `getLiterals()` pode receber um objeto do tipo da interface `PoI18nLiterals` como parâmetro,\n * porém, nenhuma das propriedades são obrigatórias. Caso nenhum parâmetro seja passado, serão buscadas\n * todas as literais do contexto definido com padrão, no idioma definido como padrão.\n *\n * * ## Alterações a partir da versão 19\n * A partir da versão 19, para evitar conflitos com bibliotecas de terceiros que também utilizam i18n,\n * é necessário passar explicitamente o contexto ao chamar `getLiterals`, garantindo a correta exibição das literais.\n * Caso `getLiterals` seja chamado sem parâmetros, o retorno pode vir das configurações da biblioteca de terceiros.\n *\n * **Exemplo de chamada com contexto explícito:**\n * ```typescript\n * poI18nService.getLiterals({ context: 'general' }).subscribe(literals => console.log(literals));\n * ```\n *\n * **Cenário de Contextos Iguais:**\n * Caso tanto a aplicação quanto uma biblioteca de terceiros utilizem o mesmo nome de contexto,\n * o PO UI fará um merge das literais, priorizando os valores definidos na aplicação cliente.\n *\n * **Recomendações:**\n * - Sempre informar o contexto ao chamar `getLiterals` para evitar conflitos de literais.\n * - Caso a aplicação utilize `lazy loading`, utilizar `setLanguage()` para garantir a correta configuração de idioma.\n *\n * Exemplos de requisição:\n * ```\n * literals = {};\n * literalsEn = {};\n * literalsCrm = {};\n *\n * constructor(private poI18nService: PoI18nService) {\n *   poI18nService.getLiterals()\n *     .subscribe((literals) => {\n *       this.literals = literals;\n *     });\n *\n *   poI18nService.getLiterals({context: 'crm', literals: ['add', 'remove']})\n *     .subscribe((literals) => {\n *       this.literalsCrm = literals;\n *     });\n *\n *   poI18nService.getLiterals({language: 'en-us'})\n *     .subscribe((literals) => {\n *       this.literalsEn = literals;\n *     });\n * }\n * ```\n *\n * Para apresentar as literais capturadas acima no HTML do componente, deve-se utilizar o\n * seguinte código:\n *\n * <pre ngNonBindable>\n * {{ literals?.add }}\n * {{ literals?.remove }}\n * </pre>\n *\n * Caso as literais contenham variáveis que precisem ser substituídas, pode-se utilizar o *pipe* `poI18n`.\n * É possível informar propriedades do componente como `name` e `nickname` ou\n * informar o valor diretamente com \"\" ou número, conforme o exemplo abaixo:\n *\n * <pre ngNonBindable>\n * {{ literals?.people | poI18n:[120] }}\n * {{ literals?.greeting | poI18n:[name, nickname] }}\n * {{ literals?.greeting | poI18n:[\"Brad\", \"Green\"] }}\n * </pre>\n *\n * > É importante o uso do operador `?` (Elvis) para evitar erros enquanto as literais não forem carregadas.\n *\n * ### Teste unitário\n *\n * Abaixo segue um exemplo de *setup* inicial de teste unitário do *AppComponent* que utiliza o `PoI18nService`:\n *\n * > Atenção: não declarar o `PoI18nService` no providers do TestBed pois a biblioteca realiza a injeção de dependência de forma dinâmica.\n * > Se o serviço for declarado o teste não fará a injeção e o teste apresentará erros.\n *\n * ```\n * import { async, TestBed } from '@angular/core/testing';\n * import { HttpClientTestingModule } from '@angular/common/http/testing';\n *\n * import { PoI18nModule } from '@po-ui/ng-components';\n *\n * import { AppComponent } from './app.component';\n *\n * describe('AppComponent', () => {\n *   const anotherPT = {\n *     text: 'texto',\n *     add: 'adicionar',\n *     remove: 'remover'\n *   };\n *\n *   const generalPT = {\n *     text: 'texto',\n *     add: 'adicionar',\n *     remove: 'remover'\n *   };\n *\n *   const config = {\n *     default: {\n *       language: 'pt-BR',\n *       context: 'general',\n *       cache: false\n *     },\n *     contexts: {\n *       general: {\n *         'pt-br': generalPT\n *       },\n *       another: {\n *         'pt-br': anotherPT\n *       }\n *     }\n *   };\n *\n *   beforeEach(async(() => {\n *     TestBed.configureTestingModule({\n *       declarations: [\n *         AppComponent\n *       ],\n *       imports: [\n *         HttpClientTestingModule,\n *         PoI18nModule.config(config)\n *       ]\n *     }).compileComponents();\n *   }));\n *\n *   it('should create the app', async(() => {\n *     const fixture = TestBed.createComponent(AppComponent);\n *     const app = fixture.debugElement.componentInstance;\n *\n *     expect(app).toBeTruthy();\n *   }));\n *\n * });\n *\n * ```\n */\n\n@Directive()\nexport class PoI18nBaseService {\n  private varI18n: any = {};\n\n  private contextDefault: string;\n\n  private useCache: boolean = false;\n\n  private servicesContext: any = {};\n\n  constructor(\n    @Inject(I18N_CONFIG) private readonly config?: PoI18nConfig,\n    @Inject(HttpClient) private readonly http?: HttpClient,\n    private readonly languageService?: PoLanguageService\n  ) {\n    this.setConfig(config);\n  }\n\n  /**\n   * <a id=\"get-language\"></a>\n   * Método que retorna o idioma padrão ativo.\n   *\n   * A busca deste idioma pelo método será feita na seguinte ordem:\n   *\n   *   1 - o idioma que foi armazenado no *localStorage*, através do método [`setLanguage()`](documentation/po-i18n#setLanguage).\n   *\n   *   2 - o valor inserido no módulo do i18n através do parâmetro `config`, sendo o idioma inserido na propriedade\n   * `language` da interface [`PoI18nConfigDefault`](documentation/po-i18n#poI18nConfigDefault).\n   *\n   *   3 - o idioma do navegador utilizado.\n   *\n   * > Caso o idioma do navegador não seja suportado pelo PO (`pt`, `en`, `es` ou `ru`), será retornado valor `pt`.\n   *\n   * @returns {string} sigla do idioma padrão.\n   */\n  getLanguage(): string {\n    return this.languageService.getLanguage();\n  }\n\n  getLiterals(options: PoI18nLiterals = {}): Observable<object> {\n    const language = options['language'] ? options['language'].toLowerCase() : this.getLanguage();\n    const context = options['context'] ? options['context'] : this.contextDefault;\n    const literals: Array<string> = options['literals'] ? options['literals'] : [];\n\n    return new Observable(observer => {\n      if (this.servicesContext[context]) {\n        // Faz o processo de busca de um contexto que contém serviço\n        this.getLiteralsFromContextService(language, context, literals, observer);\n      } else {\n        // Faz o processo de busca de um contexto que utiliza constante\n        this.getLiteralsFromContextConstant(language, context, literals, observer);\n      }\n    });\n  }\n\n  /**\n   * Método que retorna o idioma padrão ativo, com somente a abreviação do idioma (duas primeiras letras).\n   * Por exemplo: \"pt\" ou \"es\".\n   *\n   * A busca deste idioma é baseada no método [**getLanguage()**](/documentation/po-i18n#get-language).\n   *\n   * @returns {string} sigla do idioma padrão.\n   */\n  getShortLanguage(): string {\n    return this.languageService.getShortLanguage();\n  }\n\n  /**\n   * <a id=\"setLanguage\"></a>\n   * Método para alterar o idioma padrão do módulo do i18n.\n   *\n   * Ao utilizar este método, o idioma ficará gravado no armazenamento local do navegador, que será utilizado pelo\n   * serviço do `i18n` para buscar as literais no idioma padrão.\n   *\n   * @param {string} language Sigla do idioma.\n   *\n   * Esta sigla deve ser composta por duas letras representando o idioma,\n   * podendo ser adicionado outras duas letras representando o país, por exemplo: `pt`, `pt-BR`, `pt-br`, `en` ou `en-US`.\n   *\n   * > Caso seja informado um valor diferente deste padrão, o mesmo será ignorado.\n   *\n   * @param {boolean} reload Indica se a página atual poderá ser recarregada após a alteração do idioma.\n   *\n   * Este recurso pode ser útil para os usuários que utilizam o método `getLiterals()` do serviço do i18n para poder\n   * buscar novamente as literais no novo idioma configurado.\n   */\n  setLanguage(language: string, reload: boolean = false): void {\n    if (!PoUtils.isLanguage(language)) {\n      return;\n    }\n\n    this.languageService.setLanguage(language);\n\n    if (reload) {\n      PoUtils.reloadCurrentPage();\n    }\n  }\n\n  private setConfig(config: PoI18nConfig) {\n    // Seta as configurações padrões definidas no importação do módulo\n    if (config['default']) {\n      this.languageService.setLanguageDefault(config['default']['language']);\n\n      this.contextDefault = config['default']['context'] ? config['default']['context'] : '';\n      this.useCache = config['default']['cache'] ? config['default']['cache'] : false;\n    }\n\n    // Carrega a lista dos contextos e as contantes informadas\n    if (config['contexts']) {\n      this.setVarI18n(config['contexts']);\n\n      // Se nenhum contexto foi definido como padrão,\n      // então define o primeiro contexto\n      if (!this.contextDefault) {\n        for (const context in config['contexts']) {\n          if (this.config['contexts'].hasOwnProperty(context)) {\n            this.contextDefault = context;\n            break;\n          }\n        }\n      }\n    }\n  }\n\n  // Processo de busca de um contexto que contém serviço.\n  //    1 - Procura na variável I18n deste serviço\n  //    2 - Procura no local storage (Se o cache estiver definido como true na configuração do módulo)\n  //    3 - Dispara o serviço, mesmo que já tenha encontrado no local storage, para garantir a atualização\n  //    4 - Se nenhuma literal for encontrada, então busca em pt-br\n  private getLiteralsFromContextService(\n    language: string,\n    context: string,\n    literals: Array<string>,\n    observer: any,\n    translations: any = {},\n    languageAlternative: string = null\n  ) {\n    // Idioma usado para tentar buscar as literais faltantes\n    const languageSearch = languageAlternative ? languageAlternative : language;\n\n    translations = this.mergeObject(translations, this.searchInVarI18n(languageSearch, context, literals));\n\n    if (this.countObject(translations) > 0) {\n      observer.next(translations);\n    }\n\n    // realiza a busca no localStorage e em seguida no serviço\n    this.getLiteralsLocalStorageAndCache(\n      languageSearch,\n      context,\n      literals,\n      observer,\n      translations,\n      languageAlternative\n    );\n  }\n\n  // Procura no local storage e em seguida no serviço\n  // Caso não encontre nem no serviço, recomeça a busca em pt-br\n  private getLiteralsLocalStorageAndCache(\n    language: string,\n    context: string,\n    literals: Array<string>,\n    observer: any,\n    translations: any,\n    languageAlternative: string = null\n  ) {\n    const languageSearch = languageAlternative ? languageAlternative : language;\n    let translationTemp;\n    // Verifica se usa cache\n    if (this.useCache) {\n      translationTemp = this.searchInLocalStorage(languageSearch, context, literals);\n      if (this.countObject(translationTemp) > 0) {\n        this.updateVarI18n(language, context, translationTemp);\n        translations = this.mergeObject(translationTemp, translations);\n        observer.next(translations);\n      }\n    }\n\n    // Busca do Serviço\n    this.getHttpService(this.servicesContext[context], languageSearch, literals).subscribe(response => {\n      if (response) {\n        this.updateLocalStorage(language, context, response);\n        this.updateVarI18n(language, context, response);\n        translationTemp = this.searchInVarI18n(language, context, literals);\n        translations = this.mergeObject(translationTemp, translations);\n        observer.next(translations);\n      }\n\n      // Se não encontrou todas as literais pesquisadas no idioma\n      // Então refaz o processo procurando em português\n      if (literals.length > this.countObject(translations)) {\n        if (languageAlternative === 'pt-br') {\n          // Se não encontrou nem em português, então retorna o nome das literais\n          translations = this.completeFaultLiterals(language, context, literals, translations);\n          this.updateLocalStorage(language, context, translations);\n          this.updateVarI18n(language, context, translations);\n          observer.next(translations);\n        } else {\n          this.getLiteralsFromContextService(language, context, literals, observer, translations, 'pt-br');\n        }\n      }\n    });\n  }\n\n  // Procura pela lista de literais\n  // Se não encontrar todas, procura em pt-br\n  private getLiteralsFromContextConstant(\n    language: string,\n    context: string,\n    literals: Array<string>,\n    observer: any,\n    translations: any = {}\n  ) {\n    translations = this.mergeObject(translations, this.searchInVarI18n(language, context, literals));\n    if (this.countObject(translations) > 0) {\n      observer.next(translations);\n    }\n\n    // Se foi pesquisado por literais\n    if (literals.length > 0) {\n      // Se não encontrou todas as literais pesquisadas no idioma, procura em português\n      if (literals.length > this.countObject(translations)) {\n        if (language === 'pt-br') {\n          // Se não encontrou nem em português, então retorna o nome das literais\n          translations = this.completeFaultLiterals(language, context, literals, translations);\n          observer.next(translations);\n        } else {\n          this.getLiteralsFromContextConstant('pt-br', context, literals, observer, translations);\n        }\n      }\n    } else {\n      // Se não encontrar nenhuma literal, procura em português\n      if (this.countObject(translations) === 0 && language !== 'pt-br') {\n        this.getLiteralsFromContextConstant('pt-br', context, literals, observer, translations);\n      }\n\n      // caso não informar literais e não houver tradução\n      observer.next(translations);\n      observer.complete();\n    }\n  }\n\n  // Busca pelas literais no local storage\n  private searchInLocalStorage(language: string, context: string, literals: Array<string>): any {\n    const translations: any = {};\n\n    if (literals.length > 0) {\n      for (let i = 0; i < literals.length; i++) {\n        const literal = literals[i];\n        const translation = localStorage.getItem(language + '-' + context + '-' + literal);\n        if (translation) {\n          translations[literal] = translation;\n        }\n      }\n    }\n    return translations;\n  }\n\n  // Busca pelas literais na variável do serviço\n  private searchInVarI18n(language: string, context: string, literals: Array<string>): any {\n    let translations: any = {};\n\n    if (this.varI18n[language] && this.varI18n[language][context]) {\n      const content = this.varI18n[language][context];\n\n      if (literals.length > 0) {\n        // Busca as literais desejadas\n        for (let i = 0; i < literals.length; i++) {\n          const literal = literals[i];\n          if (content.hasOwnProperty(literal)) {\n            translations[literal] = content[literal];\n          }\n        }\n      } else {\n        // Atribui todas as literais\n        translations = { ...content };\n      }\n    }\n    return translations;\n  }\n\n  // Atualiza o local storage\n  private updateLocalStorage(language: string, context: string, data: any) {\n    if (this.useCache) {\n      for (const literal of Object.keys(data)) {\n        localStorage.setItem(language + '-' + context + '-' + literal, data[literal]);\n      }\n    }\n  }\n\n  // Atualiza a variável local com as literais com os objetos passados na configuração\n  private setVarI18n(contexts: object) {\n    // Percorre os contextos\n    for (const context of Object.keys(contexts)) {\n      const contextContent = contexts[context];\n      // Percorre os idiomas dentro do contexto\n      for (const language of Object.keys(contextContent)) {\n        const languageContent = contextContent[language];\n        if (language === 'url') {\n          this.servicesContext[context] = languageContent;\n        } else {\n          this.updateVarI18n(language, context, languageContent);\n        }\n      }\n    }\n  }\n\n  // Atualiza a variável local com as literais idioma e contexto\n  private updateVarI18n(language: string, context: string, data: any) {\n    language = language.toLowerCase();\n\n    if (!this.varI18n[language]) {\n      this.varI18n[language] = { [context]: {} };\n    }\n    if (!this.varI18n[language][context]) {\n      this.varI18n[language][context] = {};\n    }\n\n    // Cria ou atualiza o contexto dentro do storage\n    this.varI18n[language][context] = this.mergeObject(data, this.varI18n[language][context]);\n  }\n\n  private getHttpService(url: string, language: string, literals: Array<string>) {\n    let param = '?language=' + language;\n    if (literals.length > 0) {\n      param += '&literals=' + literals.join();\n    }\n\n    // Remove a barra final do endereço\n    url = url.replace(/\\/$/, '');\n\n    return this.http.get(`${url}${param}`);\n  }\n\n  // Completa com o nome da literais, as que não foram encontradas\n  private completeFaultLiterals(language: string, context: string, literals: Array<string>, translations: any) {\n    for (let i = 0; i < literals.length; i++) {\n      const literal = literals[i];\n      if (!translations[literal]) {\n        translations[literal] = literal;\n      }\n    }\n    return translations;\n  }\n\n  // Conta os atributos do objeto\n  private countObject(obj: object) {\n    return Object.keys(obj).length;\n  }\n\n  // Faz o merge dos objetos, sempre dando preferência para o primeiro objeto de parâmetro\n  private mergeObject(objPermanent: any, obj: any) {\n    return { ...obj, ...objPermanent };\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { PoLanguageService } from './../po-language/po-language.service';\n\nimport { PoI18nBaseService } from './po-i18n-base.service';\nimport { PoI18nConfig } from './interfaces/po-i18n-config.interface';\nimport { I18N_CONFIG } from './po-i18n-config-injection-token';\n\n/**\n * @docsExtends PoI18nBaseService\n */\n\n@Injectable()\nexport class PoI18nService extends PoI18nBaseService {\n  constructor(\n    @Inject(I18N_CONFIG) configs: PoI18nConfig | Array<PoI18nConfig>,\n    http: HttpClient,\n    languageService: PoLanguageService\n  ) {\n    const merged = Array.isArray(configs) ? mergePoI18nConfigs(configs) : configs;\n\n    super(merged, http, languageService);\n  }\n}\n\n// Função usada para retornar instância para o módulo po-i18n.module\nexport function returnPoI18nService(\n  configs: Array<PoI18nConfig>,\n  http: HttpClient,\n  languageService: PoLanguageService\n) {\n  const mergedObject = mergePoI18nConfigs(configs);\n\n  return new PoI18nService(mergedObject, http, languageService);\n}\n\nexport function mergePoI18nConfigs(configList: Array<PoI18nConfig>): PoI18nConfig {\n  const mergedContexts: Record<string, any> = {};\n  const selectedDefault: PoI18nConfig['default'] = { language: '', context: '' };\n\n  for (const currentConfig of configList) {\n    if (!selectedDefault.language && currentConfig.default?.language) {\n      selectedDefault.language = currentConfig.default.language;\n    }\n\n    if (!selectedDefault.context && currentConfig.default?.context) {\n      selectedDefault.context = currentConfig.default.context;\n    }\n\n    if (selectedDefault.cache === undefined && currentConfig.default?.cache !== undefined) {\n      selectedDefault.cache = currentConfig.default.cache;\n    }\n\n    if (currentConfig.contexts) {\n      Object.entries(currentConfig.contexts).forEach(([contextKey, langMap]) => {\n        mergedContexts[contextKey] ??= {};\n        Object.entries(langMap).forEach(([lang, translations]) => {\n          if (lang === 'url') {\n            mergedContexts[contextKey][lang] = translations;\n          } else {\n            mergedContexts[contextKey][lang] = {\n              ...mergedContexts[contextKey][lang],\n              ...translations\n            };\n          }\n        });\n      });\n    }\n  }\n\n  return {\n    default: selectedDefault,\n    contexts: mergedContexts\n  };\n}\n","import { ModuleWithProviders, NgModule, inject, provideAppInitializer } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { PoLanguageService } from './../po-language/po-language.service';\n\nimport { I18N_CONFIG } from './po-i18n-config-injection-token';\nimport { returnPoI18nService, PoI18nService } from './po-i18n.service';\nimport { PoI18nConfig } from './interfaces/po-i18n-config.interface';\nimport { PoLanguageModule } from '../po-language/po-language.module';\n\n/**\n * @description\n *\n * Módulo do serviço `PoI18nService` para controle de idiomas com PO.\n *\n * Para utilização do serviço de idiomas `PoI18nService`, deve-se importar este módulo mesmo já havendo importado\n * o módulo `PoModule`. Na importação deve ser invocado o método `config`, informando um objeto que deve implementar\n * a interface [`PoI18nConfig`](documentation/po-i18n#poI18nConfig) para configuração.\n *\n * <a id=\"i18n-config\"></a>\n * **Exemplo de configuração do módulo do i18n:**\n * ```\n * import { PoI18nConfig } from '@po-ui/ng-components';\n *\n * import { generalEn } from './i18n/general-en';\n * import { generalPt } from './i18n/general-pt';\n *\n * const i18nConfig: PoI18nConfig = {\n *   default: {\n *     language: 'pt-BR',\n *     context: 'general',\n *     cache: true\n *   },\n *   contexts: {\n *     general: {\n *       'pt-BR': generalPt,\n *       'en-US': generalEn\n *     },\n *     hcm: {\n *       url: 'http://10.1.1.1/api/translations/hcm/'\n *     }\n *   }\n * };\n *\n * @NgModule({\n *   declarations: [],\n *   imports: [\n *     PoModule,\n *     PoI18nModule.config(i18nConfig)\n *   ],\n *   bootstrap: [AppComponent]\n * })\n * ```\n *\n * Para cada contexto é possível definir a origem das literais, que podem ser de um serviço REST ou\n * de um objeto. Exemplo:\n *\n * Arquivo general-pt.ts\n * ```\n * export const generalPt = {\n *  add: 'Adicionar',\n *  greeting: 'Prazer, {0} {1}',\n *  people: '{0} Pessoas,\n *  remove: 'Remover'\n * }\n * ```\n *\n * Arquivo general-en.ts\n * ```\n * export const generalEn = {\n *  add: 'Add',\n *  greeting: 'Nice to meet you, {0} {1}',\n *  people: '{0} People,\n *  remove: 'Remove'\n * }\n * ```\n *\n * **Exemplo de configuração de contextos usando constantes externas:**\n * ```\n * import { PoI18nConfig } from '@po-ui/ng-components';\n *\n * import { generalEn } from './i18n/general-en';\n * import { generalPt } from './i18n/general-pt';\n *\n * const i18nConfig: PoI18nConfig = {\n *   contexts: {\n *     general: {\n *       'pt-BR': generalPt, // constantes em arquivos separados\n *       'en-US': generalEn // constantes em arquivos separados\n *     },\n *     crm: {\n *       url: 'http://10.0.0.1:3000/api/translations/crm'\n *     }\n *   },\n *   default: {}\n * }\n * ```\n *\n * **Exemplo de configuração de um contexto utilizando serviço:**\n *\n * Ao optar por utilizar um serviço para configuração de contexto, deverá ser definida a URL\n * específica do contexto, como nos exemplos abaixo:\n *\n *  - http://10.0.0.1:3000/api/translations/crm\n *  - http://10.0.0.1:3000/api/translations/general\n *\n * Os idiomas e literais serão automaticamente buscados com parâmetros na própria URL:\n * - **language**: o idioma será sempre passado por parâmetro e é recomendado utilizar uma das linguagens\n * suportadas pelo PO (`pt-br`, `en-us`, `es-es` ou `ru`).\n * - **literals**: as literais serão separadas por vírgula. Caso esse parâmetro não seja informado, o\n * serviço deve retornar todas as literais do idioma.\n *\n * Exemplos de requisição:\n *\n *  - http://10.0.0.1:3000/api/translations/crm?language=pt-br\n *  - http://10.0.0.1:3000/api/translations/crm?language=pt-br&literals=add,remove,text\n *\n * > Sempre que o idioma solicitado não for encontrado, será buscado por `pt-br`.\n *\n * Além dos contextos, é possível definir as configurações *default* do sistema na configuração do\n * módulo utilizando a interface [`PoI18nConfig`](documentation/po-i18n#poI18nConfig):\n *\n * **Exemplo de padrões definidos:**\n * ```\n * const i18nConfig: PoI18nConfig = {\n *   contexts: {\n *     general: { }\n *   },\n *   default: {\n *    language: 'pt-BR',\n *    context: 'general',\n *    cache: true\n *   }\n * }\n * ```\n *\n * **Importante:**\n *\n * Recomenda-se que as definições *default* sejam realizadas apenas uma vez na aplicação,\n * preferencialmente no módulo `AppModule`.\n *\n * **i18n com *Lazy loading***\n *\n * Para aplicações que utilizem a abordagem de módulos com carregamento *lazy loading*, caso seja\n * definida outra configuração do `PoI18nModule`, deve-se atentar os seguintes detalhes:\n *\n * - Não defina outra *default language* para este módulo. Caso for definida, será sobreposta para\n * toda a aplicação;\n * - Caso precise de módulos carregados via *lazy loading* com linguagens diferentes, utilize o\n * método [`setLanguage()`](documentation/po-i18n#setLanguage) disponibilizado pelo `PoI18nService`\n * para definir a linguagem da aplicação e dos módulos com as linguagens diferentes.\n */\n\n@NgModule({\n  imports: [PoLanguageModule]\n})\nexport class PoI18nModule {\n  static config(config: PoI18nConfig): ModuleWithProviders<PoI18nModule> {\n    return {\n      ngModule: PoI18nModule,\n      providers: [\n        {\n          provide: I18N_CONFIG,\n          useValue: config,\n          multi: true\n        },\n        provideAppInitializer(() => {\n          const initializerFn = initializeLanguageDefault(inject(I18N_CONFIG), inject(PoLanguageService));\n          return initializerFn();\n        }),\n        {\n          provide: PoI18nService,\n          useFactory: returnPoI18nService,\n          deps: [I18N_CONFIG, HttpClient, PoLanguageService]\n        }\n      ]\n    };\n  }\n}\n\nexport function initializeLanguageDefault(configs: Array<PoI18nConfig>, languageService: PoLanguageService) {\n  const config = configs.find(c => c.default); // Busca a configuração com `default`\n\n  return () => {\n    if (config?.default.language) {\n      languageService.setLanguageDefault(config.default.language);\n    }\n  };\n}\n","/**\n * @usedBy PoMediaQueryService\n *\n * @description\n * Interface que define os tokens CSS utilizados em regras de media queries.\n * Cada chave representa uma variável CSS que pode ser dinamicamente modificada.\n *\n * > Os tipos de valores aceitos para cada token são: `pixels` , `em` e `rem`.\n *\n */\n\nexport interface PoMediaQueryTokens {\n  /**\n   * @description\n   *\n   * Define a regra para sm.\n   *\n   * `gridSystemSmMaxWidth` define a largura máxima para o grid no tamanho pequeno (`sm`).\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * const tokens: PoMediaQueryTokens =  {\n   *  sm: {\n   *    gridSystemSmMaxWidth: '480px'\n   *  }\n   * };\n   * ```\n   */\n  sm?: {\n    'gridSystemSmMaxWidth': string;\n  };\n\n  /**\n   * @description\n   *\n   * Define a regra para md.\n   *\n   * `gridSystemMdMinWidth` define a largura mínima para o grid no tamanho pequeno (`md`).\n   *\n   * `gridSystemMdMaxWidth` define a largura máxima para o grid no tamanho pequeno (`md`).\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * const tokens: PoMediaQueryTokens =  {\n   *  md: {\n   *    gridSystemMdMinWidth: '481px',\n   *    gridSystemMdMaxWidth: '960px'\n   *  }\n   * };\n   * ```\n   */\n  md?: {\n    'gridSystemMdMinWidth': string;\n    'gridSystemMdMaxWidth': string;\n  };\n\n  /**\n   * @description\n   *\n   * Define a regra para lg.\n   *\n   * `gridSystemLgMinWidth` define a largura mínima para o grid no tamanho pequeno (`lg`).\n   *\n   * `gridSystemLgMaxWidth` define a largura máxima para o grid no tamanho pequeno (`lg`).\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * const tokens: PoMediaQueryTokens =  {\n   *  lg: {\n   *    gridSystemLgMinWidth: '961px',\n   *    gridSystemLgMaxnWidth: '1366px'\n   *  }\n   * };\n   * ```\n   */\n  lg?: {\n    'gridSystemLgMinWidth': string;\n    'gridSystemLgMaxWidth': string;\n  };\n\n  /**\n   * @description\n   *\n   * Define a regra offset.\n   *\n   * `gridSystemOffsetMinWidth` define a largura mínima para o grid no tamanho pequeno (`offset`).\n   *\n   * `gridSystemOffsetMaxWidth` define a largura máxima para o grid no tamanho pequeno (`offset`).\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * const tokens: PoMediaQueryTokens =  {\n   *  offset: {\n   *    gridSystemOffsetMinWidth: '361px',\n   *    gridSystemOffsetMaxWidth: '480px'\n   *  }\n   * };\n   * ```\n   */\n  offset?: {\n    'gridSystemOffsetMinWidth': string;\n    'gridSystemOffsetMaxWidth': string;\n  };\n\n  /**\n   * @description\n   *\n   * Define a regra pull.\n   *\n   * `gridSystemPullMaxWidth` define a largura máxima para o grid no tamanho pequeno (`pull`).\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * const tokens: PoMediaQueryTokens =  {\n   *  offset: {\n   *    gridSystemPullMaxWidth: '480px'\n   *  }\n   * };\n   * ```\n   */\n  pull?: {\n    'gridSystemPullMaxWidth': string;\n  };\n\n  /**\n   * @description\n   *\n   * Define a regra xl.\n   *\n   * `gridSystemXlMinWidth` define a largura mínima para o grid no tamanho pequeno (`pull`).\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * const tokens: PoMediaQueryTokens =  {\n   *  offset: {\n   *    gridSystemXlMinWidth: '1367px'\n   *  }\n   * };\n   * ```\n   */\n  xl?: {\n    'gridSystemXlMinWidth': string;\n  };\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\n\n/**\n * Interface para representar as cores do tema.\n *\n * @usedBy PoThemeService\n */\nexport interface PoThemeColor {\n  /**\n   * Cores da Brand a serem aplicadas.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.brand = {\n   *  01: PoThemeColorTone,\n   *  02: PoThemeColorTone,\n   *  03: PoThemeColorTone\n   * }\n   * ```\n   */\n  'brand'?: poThemeColorBrand;\n\n  /**\n   *  Cores da Action a serem aplicadas.\n   *\n   * Exemplo de uso:\n   * ```javascript\n   * PoThemeColor.action = {\n   *  default: 'var(--color-brand-01-base)',\n   *  hover: 'var(--color-brand-01-dark)',\n   *  pressed: 'var(--color-brand-01-darker)',\n   *  disabled: 'var(--color-neutral-light-30)',\n   *  focus: 'var(--color-brand-01-darkest)'\n   * }\n   * ```\n   */\n  'action'?: PoThemeColorAction;\n\n  /**\n   *  Cores Neutrals a serem aplicadas.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.neutral = {\n   *  light: { '00': string, '05': string, '10': string, '20': string, '30': string },\n   *  mid: { '40': string, '60': string },\n   *  dark: { '70': string, '80': string, '90': string, '95': string },\n   * }\n   * ```\n   */\n  'neutral'?: PoThemeColorNeutral;\n\n  // /**\n  //  *  Cores de Feedback a serem aplicadas.\n  //  *\n  //  * Exemplo de uso:\n  //  * ```typescript\n  //  * PoThemeColor.feedback = {\n  //  *  'negative'?: PoThemeColorTone;\n  //  *  'info'?: PoThemeColorTone;\n  //  *  'positive'?: PoThemeColorTone;\n  //  *  'warning'?: PoThemeColorTone;\n  //  * }\n  //  * ```\n  //  */\n  'feedback'?: PoThemeColorFeedback;\n\n  /**\n   * Cores da Categorical a serem aplicadas.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.categorical = {\n   *  01: string,\n   *  02: string,\n   *  03: string\n   * }\n   * ```\n   */\n  'categorical'?: PoThemeColorCategorical;\n\n  /**\n   * Cores da Categorical a serem aplicadas.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.categorical = {\n   *  01: string,\n   *  02: string,\n   *  03: string\n   * }\n   * ```\n   */\n  'categorical-overlay'?: PoThemeColorCategorical;\n}\n\n/**\n * Interface para as variantes de cor da marca.\n *\n * @docsPrivate\n */\nexport interface poThemeColorBrand {\n  /**\n   *  Cores da Brand Primaria`\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.brand['01'] = {\n   *  lightest: '#f2eaf6',\n   *  lighter: '#d9c2e5',\n   *  light: '#bd94d1',\n   *  base: '#753399',\n   *  dark: '#5b1c7d',\n   *  darker: '#400e58',\n   *  darkest: '#260538'\n   * }\n   * ```\n   */\n  '01'?: PoThemeColorTone;\n\n  /**\n   *  Cores da Brand Secundária`\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.brand['02'] = {\n   *  base: '#b92f72',\n   * }\n   * ```\n   */\n  '02'?: PoThemeColorTone;\n\n  /**\n   *  Cores da Brand Terciária`\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.brand['03'] = {\n   *  base: '#ffd464',\n   * }\n   * ```\n   */\n  '03'?: PoThemeColorTone;\n}\n\n/**\n * Interface para as cores de ação do tema.\n *\n * @usedBy PoThemeService\n */\nexport interface PoThemeColorAction {\n  /**\n   *  Cores da Action 'Default'.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.action = {\n   *  default: 'var(--color-brand-01-base)',\n   * }\n   * ```\n   */\n  'default'?: string;\n\n  /**\n   *  Cores da Action para 'hover'.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.action = {\n   *  hover: 'var(--color-brand-01-dark)',\n   * }\n   * ```\n   */\n  'hover'?: string;\n\n  /**\n   *  Cores da Action para 'pressed'.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.action = {\n   *  pressed: 'var(--color-brand-01-darker)',\n   * }\n   * ```\n   */\n  'pressed'?: string;\n\n  /**\n   *  Cores da Action de 'disabled'.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.action = {\n   *  disabled: 'var(--color-neutral-light-30)',\n   * }\n   * ```\n   */\n  'disabled'?: string;\n\n  /**\n   *  Cores da Action para 'focus'.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.action = {\n   *  focus: 'var(--color-brand-01-darkest)'\n   * }\n   * ```\n   */\n  'focus'?: string;\n}\n\n// /**\n//  * Interface para as cores de feedback do tema.\n//  *\n//  * @usedBy PoThemeService\n//  */\nexport interface PoThemeColorFeedback {\n  /**\n   *  Cores da Feedback para 'negative'\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.feedback.negative = {\n   *  lightest: '#f6e6e5',\n   *  lighter: '#e3aeab',\n   *  light: '#d58581',\n   *  base: '#be3e37',\n   *  dark: '#9b2d27',\n   *  darker: '#72211d',\n   *  darkest: '#4a1512',\n   * }\n   * ```\n   */\n  'negative'?: PoThemeColorTone;\n\n  /**\n   *  Cores da Feedback para 'info'\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.feedback.info = {\n   *  lightest: '#e3e9f7',\n   *  lighter: '#b0c1e8',\n   *  light: '#7996d7',\n   *  base: '#23489f',\n   *  dark: '#173782',\n   *  darker: '#0f2557',\n   *  darkest: '#081536',\n   * }\n   * ```\n   */\n  'info'?: PoThemeColorTone;\n\n  /**\n   *  Cores da Feedback para 'positive'\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.feedback.positive = {\n   *  lightest: '#def7ed',\n   *  lighter: '#7ecead',\n   *  light: '#41b483',\n   *  base: '#107048',\n   *  dark: '#0f5236',\n   *  darker: '#083a25',\n   *  darkest: '#002415',\n   * }\n   * ```\n   */\n  'positive'?: PoThemeColorTone;\n\n  /**\n   *  Cores da Feedback para 'warning'\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.feedback.warning = {\n   *  lightest: '#fcf6e3',\n   *  lighter: '#f7dd97',\n   *  light: '#f1cd6a',\n   *  base: '#efba2a',\n   *  dark: '#d8a20e',\n   *  darker: '#705200',\n   *  darkest: '#473400',\n   * }\n   * ```\n   */\n  'warning'?: PoThemeColorTone;\n}\n\n/**\n * Interface para representar as variantes de tons de cor.\n *\n * @docsPrivate\n */\ninterface PoThemeColorTone {\n  /**\n   *  Cores de Tom do tipo 'lightest'.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.brand['01'] = {\n   *  lightest: '#f2eaf6',\n   * }\n   * ```\n   */\n  'lightest'?: string;\n\n  /**\n   *  Cores de Tom do tipo 'lighter'.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.brand['01'] = {\n   *  lighter: '#d9c2e5',\n   * }\n   * ```\n   */\n  'lighter'?: string;\n\n  /**\n   *  Cores de Tom do tipo 'light'.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.brand['01'] = {\n   *  light: '#bd94d1',\n   * }\n   * ```\n   */\n  'light'?: string;\n\n  /**\n   *  Cores de Tom do tipo 'base'.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.brand['01'] = {\n   *  base: '#753399',\n   * }\n   * ```\n   */\n  'base'?: string;\n\n  /**\n   *  Cores de Tom do tipo 'dark'.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.brand['01'] = {\n   *  dark: '#5b1c7d',\n   * }\n   * ```\n   */\n  'dark'?: string;\n\n  /**\n   *  Cores de Tom do tipo 'darker'.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.brand['01'] = {\n   *  darker: '#400e58',\n   * }\n   * ```\n   */\n  'darker'?: string;\n\n  /**\n   *  Cores de Tom do tipo 'darkest'.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.brand['01'] = {\n   *  darkest: '#260538'\n   * }\n   * ```\n   */\n  'darkest'?: string;\n}\n\n/**\n * Interface para as cores neutras do tema.\n *\n * @usedBy PoThemeService\n */\nexport interface PoThemeColorNeutral {\n  /**\n   *  Cores Neutrals do tipo 'light'.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.neutral.light = {\n   *  '00': '#ffffff',\n   *  '05': '#fbfbfb',\n   *  '10': '#eceeee',\n   *  '20': '#dadedf',\n   *  '30': '#b6bdbf'\n   * }\n   * ```\n   */\n  'light'?: {\n    '00'?: string;\n    '05'?: string;\n    '10'?: string;\n    '20'?: string;\n    '30'?: string;\n  };\n\n  /**\n   *  Cores Neutrals do tipo 'mid'.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.neutral.mid = {\n   *  '40': '#9da7a9',\n   *  '60': '#6e7c7f',\n   * }\n   * ```\n   */\n  'mid'?: {\n    '40'?: string;\n    '60'?: string;\n  };\n\n  /**\n   *  Cores Neutrals do tipo 'dark'.\n   *\n   * Exemplo de uso:\n   * ```typescript\n   * PoThemeColor.neutral.dark = {\n   *  '70': '#4a5c60',\n   *  '80': '#2c3739',\n   *  '90': '#1d2426',\n   *  '95': '#0b0e0e',\n   * }\n   * ```\n   */\n  'dark'?: {\n    '70'?: string;\n    '80'?: string;\n    '90'?: string;\n    '95'?: string;\n  };\n}\n\nexport interface PoThemeColorCategorical {\n  '01'?: string;\n  '02'?: string;\n  '03'?: string;\n  '04'?: string;\n  '05'?: string;\n  '06'?: string;\n  '07'?: string;\n  '08'?: string;\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { isTypeof } from '../../../../utils/util';\n\nimport { PoLookupFilter } from '../interfaces/po-lookup-filter.interface';\nimport { PoLookupFilteredItemsParams } from '../interfaces/po-lookup-filtered-items-params.interface';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Serviço padrão utilizado para filtrar os dados do componente po-lookup.\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoLookupFilterService implements PoLookupFilter {\n  readonly headers: HttpHeaders = new HttpHeaders({\n    'X-PO-No-Message': 'true'\n  });\n\n  private url: string;\n  private fieldValue;\n  private multiple = false;\n\n  constructor(private readonly httpClient: HttpClient) {}\n\n  getFilteredItems(filteredItemsParams: PoLookupFilteredItemsParams): Observable<any> {\n    const { filterParams, advancedFilters, ...restFilteredItemsParams } = filteredItemsParams;\n\n    const validatedFilterParams = this.validateParams(filterParams);\n    const validatedAdvancedFilters = this.validateParams(advancedFilters);\n\n    const params = { ...restFilteredItemsParams, ...validatedFilterParams, ...validatedAdvancedFilters };\n\n    return this.httpClient.get(this.url, { headers: this.headers, params });\n  }\n\n  getObjectByValue(value: any, filterParams?: any): Observable<Array<any> | { [key: string]: any }> {\n    const validatedFilterParams = this.validateParams(filterParams);\n\n    let newURL;\n    let encodedValue;\n\n    if (this.multiple) {\n      encodedValue = encodeURIComponent(Array.isArray(value) ? value.join(',') : value);\n      newURL = `${this.url}?${this.fieldValue}=${encodedValue}`;\n    } else {\n      encodedValue = encodeURIComponent(value);\n      newURL = `${this.url}/${encodedValue}`;\n    }\n\n    return this.httpClient\n      .get(newURL, { headers: this.headers, params: validatedFilterParams })\n      .pipe(map((response: any) => ('items' in response ? response.items : response)));\n  }\n\n  setConfig(url: string, fieldValue: string, multiple: boolean) {\n    this.url = url;\n    this.fieldValue = fieldValue;\n    this.multiple = multiple;\n  }\n\n  private validateParams(params: any) {\n    return isTypeof(params, 'object') && !Array.isArray(params) ? params : undefined;\n  }\n}\n","import { ComponentRef, EventEmitter, Injectable, inject } from '@angular/core';\n\nimport { PoLookupColumn } from '../../../../components/po-field/po-lookup/interfaces/po-lookup-column.interface';\nimport { PoLookupFilter } from '../../../../components/po-field/po-lookup/interfaces/po-lookup-filter.interface';\nimport { PoComponentInjectorService } from '../../../../services/po-component-injector/po-component-injector.service';\nimport { PoDynamicFormField } from '../../../po-dynamic/po-dynamic-form/interfaces/po-dynamic-form-field.interface';\nimport { PoLookupLiterals } from '../interfaces/po-lookup-literals.interface';\nimport { PoLookupModalComponent } from '../po-lookup-modal/po-lookup-modal.component';\n\n/**\n * @docsPrivate\n *\n * Serviço responsável por controlar a abertura do componente Po Lookup Modal.\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoLookupModalService {\n  private readonly poComponentInjector = inject(PoComponentInjectorService);\n\n  selectValueEvent: EventEmitter<any> = new EventEmitter<any>();\n\n  private componentRef: ComponentRef<any> = null;\n\n  /**\n   * Método responsável por abrir a modal de busca das informações.\n   *\n   * @param advancedFilters {Array<PoDynamicFormField>} Objeto utilizado para criar o busca avançada.\n   * @param service {PoLookupFilter} Serviço responsável por realizar a busca no serviço dos dados.\n   * @param columns {Array<PoLookupColumn>} Definição das colunas na modal de busca.\n   * @param filterParams {any} Valor que será repassado aos métodos do serviço para auxiliar no filtro dos dados.\n   * @param title {string} Definição do título da modal.\n   * @param literals {PoLookupLiterals} Literais utilizadas no componente.\n   * @param selectedItems {any} Valor que está selecionado que será repassado para o modal para apresentar na tabela.\n   * @param fieldLabel {string} Valor que será utilizado como descrição do campo.\n   * @param fieldValue {string} Valor que será utilizado como valor do campo.\n   * @param changeVisibleColumns {function} Função que será executada quando for alterada a visibilidade das colunas.\n   * @param columnRestoreManager {function} Função que será executada quando for restaurar as colunas padrão.\n   */\n  openModal(params: {\n    advancedFilters: Array<PoDynamicFormField>;\n    service: PoLookupFilter;\n    columns: Array<PoLookupColumn>;\n    filterParams: any;\n    hideColumnsManager: boolean;\n    title: string;\n    literals: PoLookupLiterals;\n    infiniteScroll: boolean;\n    multiple: boolean;\n    selectedItems: Array<any>;\n    fieldLabel: string;\n    fieldValue: string;\n    size: string;\n    spacing: string;\n    textWrap: boolean;\n    virtualScroll: boolean;\n    changeVisibleColumns: Function;\n    columnRestoreManager: Function;\n  }): void {\n    const {\n      advancedFilters,\n      service,\n      columns,\n      filterParams,\n      hideColumnsManager,\n      title,\n      literals,\n      infiniteScroll,\n      multiple,\n      selectedItems,\n      fieldLabel,\n      fieldValue,\n      size,\n      spacing,\n      textWrap,\n      virtualScroll,\n      changeVisibleColumns,\n      columnRestoreManager\n    } = params;\n\n    this.componentRef = this.poComponentInjector.createComponentInApplication(PoLookupModalComponent);\n    this.componentRef.instance.advancedFilters = advancedFilters;\n    this.componentRef.instance.title = title;\n    this.componentRef.instance.columns = columns;\n    this.componentRef.instance.filterService = service;\n    this.componentRef.instance.filterParams = filterParams;\n    this.componentRef.instance.literals = literals;\n    this.componentRef.instance.model.subscribe($event => {\n      this.selectValue($event);\n    });\n    this.componentRef.instance.infiniteScroll = infiniteScroll;\n    this.componentRef.instance.multiple = multiple;\n    this.componentRef.instance.selectedItems = selectedItems;\n    this.componentRef.instance.fieldLabel = fieldLabel;\n    this.componentRef.instance.fieldValue = fieldValue;\n    this.componentRef.instance.changeVisibleColumns = changeVisibleColumns;\n    this.componentRef.instance.columnRestoreManager = columnRestoreManager;\n    this.componentRef.instance.hideColumnsManager = hideColumnsManager;\n    this.componentRef.instance.size = size;\n    this.componentRef.instance.spacing = spacing;\n    this.componentRef.instance.textWrap = textWrap;\n    this.componentRef.instance.virtualScroll = virtualScroll;\n    this.componentRef.changeDetectorRef.detectChanges();\n    this.componentRef.instance.openModal();\n  }\n\n  setChangeColumns(columns) {\n    if (this.componentRef !== null) {\n      this.componentRef.instance.columns = columns;\n      this.componentRef.changeDetectorRef.detectChanges();\n    }\n  }\n\n  // Este metodo é chamado quando é selecionado um item na lookup modal.\n  selectValue(value) {\n    if (value) {\n      this.selectValueEvent.emit(value);\n    }\n    this.componentRef.destroy();\n  }\n}\n","import {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Inject,\n  InjectOptions,\n  Injector,\n  input,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NgControl, UntypedFormControl, Validator } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\nimport { poLocaleDefault } from '../../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport {\n  convertToBoolean,\n  getDefaultSizeFn,\n  isTypeof,\n  mapInputSizeToLoadingIcon,\n  validateSizeFn,\n  PoUtils\n} from '../../../utils/util';\nimport { PoTableColumnSpacing } from '../../po-table/enums/po-table-spacing.enum';\nimport { PoValidators } from '../validators';\nimport { PoLookupAdvancedFilter } from './interfaces/po-lookup-advanced-filter.interface';\nimport { PoLookupColumn } from './interfaces/po-lookup-column.interface';\nimport { PoLookupFilter } from './interfaces/po-lookup-filter.interface';\nimport { PoLookupLiterals } from './interfaces/po-lookup-literals.interface';\nimport { PoLookupFilterService } from './services/po-lookup-filter.service';\nimport { PoLookupModalService } from './services/po-lookup-modal.service';\nimport { PoHelperOptions } from '../../po-helper';\nimport { PoThemeA11yEnum } from '../../../services';\n\nexport const poLookupLiteralsDefault = {\n  en: <PoLookupLiterals>{\n    search: 'Search',\n    clean: 'Clean'\n  },\n  es: <PoLookupLiterals>{\n    search: 'Buscar',\n    clean: 'Limpiar'\n  },\n  pt: <PoLookupLiterals>{\n    search: 'Pesquisar',\n    clean: 'Apagar'\n  },\n  ru: <PoLookupLiterals>{\n    search: 'Поиск',\n    clean: 'чистый'\n  }\n};\n\n/**\n * @description\n *\n * Componente utilizado para abrir uma janela de busca com uma tabela que lista dados de um serviço. Nesta janela é possível buscar e\n * selecionar um ou mais registros que serão enviados para o campo. O `po-lookup` permite que o usuário digite um valor e pressione a tecla *TAB* para\n * buscar um registro.\n *\n * > Caso o campo seja iniciado ou preenchido com um valor inexistente na busca, o mesmo será limpado.\n * No segundo caso ocorrerá após este perder o foco; ambos os casos o campo ficará inválido quando requerido.\n *\n * > Enquanto o componente realiza a requisição ao servidor, o componente ficará desabilitado e com o status interno do\n * [modelo](https://angular.io/guide/form-validation#creating-asynchronous-validators) como `pending`.\n *\n * Este componente não é recomendado quando a busca dos dados possuir poucas informações, para isso utilize outros componentes como o\n * `po-select` ou o `po-combo`.\n */\n@Directive()\nexport abstract class PoLookupBaseComponent\n  implements ControlValueAccessor, OnDestroy, OnInit, Validator, AfterViewInit, OnChanges\n{\n  private _literals?: PoLookupLiterals;\n  private readonly language: string;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n  private _spacing: PoTableColumnSpacing;\n\n  @ViewChild('inp', { read: ElementRef, static: false }) inputEl: ElementRef;\n  // Propriedade interna que define se o ícone de ajuda adicional terá cursor clicável (evento) ou padrão (tooltip).\n  @Input() additionalHelpEventTrigger: string | undefined;\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de ajuda adicional, com o texto desta propriedade sendo passado para o popover do componente `po-helper`.\n   * **Como boa prática, indica-se utilizar um texto com até 140 caracteres.**\n   * > Requer um recuo mínimo de 8px se o componente estiver próximo à lateral da tela.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Input('p-additional-help-tooltip') additionalHelpTooltip?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o popover (`p-helper` e/ou `p-error-limit`) será incluído no body da página e não\n   * dentro do componente. Essa opção pode ser necessária em cenários com containers que possuem scroll ou overflow\n   * escondido, garantindo o posicionamento correto do tooltip próximo ao elemento.\n   *\n   * > Quando utilizado com `p-helper`, leitores de tela como o NVDA podem não ler o conteúdo do popover.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendBox?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Aplica foco no elemento ao ser iniciado.\n   *\n   * > Caso mais de um elemento seja configurado com essa propriedade, apenas o último elemento declarado com ela terá o foco.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-auto-focus', transform: convertToBoolean }) autoFocus: boolean = false;\n\n  /**\n   * Label do campo.\n   *\n   * > Quando utilizar esta propriedade o seu valor será utilizado como título da modal do componente caso não tenha\n   * sido definido um `modalTitle` na propriedade `p-literals`.\n   */\n  @Input('p-label') label?: string;\n\n  /**\n   * @description\n   *\n   * Objeto com as literais usadas no `po-lookup`.\n   *\n   * Existem duas maneiras de customizar o componente, passando um objeto com todas as literais disponíveis:\n   *\n   * ```\n   *  const customLiterals: PoLookupLiterals = {\n   *    modalPrimaryActionLabel: 'Select',\n   *    modalSecondaryActionLabel: 'Cancel',\n   *    modalPlaceholder: 'Search Value',\n   *    modalTableNoColumns: 'No columns',\n   *    modalTableNoData: 'No data',\n   *    modalTableLoadingData: 'Loading data',\n   *    modalTableLoadMoreData: 'Load more',\n   *    modalTitle: 'Select a user',\n   *    modalAdvancedSearch: 'Advanced search',\n   *    modalAdvancedSearchTitle: 'Advanced search',\n   *    modalAdvancedSearchPrimaryActionLabel: 'Filter',\n   *    modalAdvancedSearchSecondaryActionLabel: 'Return',\n   *    modalDisclaimerGroupTitle: 'Presenting results filtered by:'\n   *  };\n   * ```\n   *\n   * Ou passando apenas as literais que deseja customizar:\n   *\n   * ```\n   *  const customLiterals: PoLookupLiterals = {\n   *    modalPrimaryActionLabel: 'Select'\n   *  };\n   * ```\n   *\n   * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n   *\n   * ```\n   * <po-lookup\n   *   [p-literals]=\"customLiterals\">\n   * </po-lookup>\n   * ```\n   *\n   * > O objeto padrão de literais será traduzido de acordo com o idioma do\n   * [`PoI18nService`](/documentation/po-i18n) ou do browser.\n   */\n  @Input('p-literals') set literals(value: PoLookupLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poLookupLiteralsDefault[poLocaleDefault],\n        ...poLookupLiteralsDefault[this.language],\n        ...value\n      };\n    } else {\n      this._literals = poLookupLiteralsDefault[this.language];\n    }\n  }\n\n  get literals() {\n    return this._literals || poLookupLiteralsDefault[this.language];\n  }\n\n  /** Texto de apoio do campo. */\n  @Input('p-help') help?: string;\n\n  /** Mensagem que aparecerá enquanto o campo não estiver preenchido. */\n  @Input('p-placeholder') set placeholder(value: string) {\n    this._placeholder = value || '';\n  }\n\n  get placeholder() {\n    return this._placeholder;\n  }\n\n  /** Nome e Id do componente. */\n  @Input('name') name: string;\n\n  /**\n   * @description\n   *\n   * Indica a coluna que será utilizada como valor do campo.\n   *\n   * > Atenção: Caso não seja passada ou tenha o conteúdo incorreto, não irá atualizar o model do formulário.\n   */\n  @Input('p-field-value') fieldValue: string;\n\n  /** Indica a coluna que será utilizada como descrição do campo e como filtro dentro da janela. */\n  @Input('p-field-label') set fieldLabel(value: string) {\n    this._fieldLabel = value;\n    this.keysDescription = [this.fieldLabel];\n  }\n\n  get fieldLabel() {\n    return this._fieldLabel;\n  }\n\n  /** Valor que será repassado como parâmetro para a URL ou aos métodos do serviço que implementam a interface `PoLookupFilter`. */\n  @Input('p-filter-params') filterParams?: any;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Formato de exibição do campo.\n   *\n   * Recebe uma função que deve retornar uma *string* com o/os valores do objeto formatados para exibição, por exemplo:\n   *\n   * ```\n   * fieldFormat(obj) {\n   *   return `${obj.id} - ${obj.name}`;\n   * }\n   * ```\n   * > Esta propriedade sobrepõe o valor da propriedade `p-field-label` na descrição do campo.\n   *\n   * Pode-se informar uma lista de propriedades que deseja exibir como descrição do campo, Por exemplo:\n   * ```\n   * <po-lookup\n   *  ...\n   *  [p-field-format]=\"['id','nickname']\"\n   *  ...\n   * >\n   *\n   * Objeto retornado:\n   *   {\n   *      id:123,\n   *      name: 'Kakaroto',\n   *      nickname: 'Goku',\n   *   }\n   * Apresentação no campo: 123 - Goku\n   * ```\n   *\n   * > Será utilizado ` - ` como separador.\n   */\n  @Input('p-field-format') fieldFormat?: ((value) => string) | Array<string>;\n\n  /**\n   * Lista das colunas da tabela.\n   * Essa propriedade deve receber um array de objetos que implementam a interface PoLookupColumn.\n   */\n  @Input('p-columns') columns?: Array<PoLookupColumn>;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se a indicação de campo opcional será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - O campo conter `p-required`;\n   * - Não possuir `p-help` e/ou `p-label`.\n   *\n   * @default `false`\n   */\n  @Input('p-optional') optional: boolean;\n\n  /**\n   *\n   * @optional\n   *\n   * @description\n   *\n   * Lista de objetos dos campos que serão criados na busca avançada.\n   *\n   * > Caso não seja passado um objeto ou então ele esteja em branco o link de busca avançada ficará escondido.\n   *\n   * Exemplo de URL com busca avançada:\n   *\n   * ```\n   * url + ?page=1&pageSize=20&name=Tony%20Stark&nickname=Homem%20de%20Ferro\n   * ```\n   *\n   * Caso algum parâmetro seja uma lista, a concatenação é feita utilizando vírgula.\n   * Exemplo:\n   *\n   * ```\n   * url + ?page=1&pageSize=20&name=Tony%20Stark,Peter%20Parker,Gohan\n   * ```\n   *\n   */\n  @Input('p-advanced-filters') advancedFilters: Array<PoLookupAdvancedFilter>;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite que o gerenciador de colunas, responsável pela definição de quais colunas serão exibidas, seja escondido.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-hide-columns-manager', transform: convertToBoolean })\n  hideColumnsManager: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Ativa a funcionalidade de scroll infinito para a tabela exibida no retorno da consulta.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-infinite-scroll', transform: convertToBoolean }) infiniteScroll: boolean = false;\n\n  /** Exibe um ícone que permite limpar o campo. */\n  @Input({ alias: 'p-clean', transform: convertToBoolean }) clean: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite a seleção de múltiplos itens.\n   *\n   * > Quando habilitado o valor do campo passará a ser uma lista de valores, por exemplo: `[ 12345, 67890 ]`\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-multiple', transform: convertToBoolean }) multiple: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que a altura do componente será auto ajustável, possuindo uma altura minima porém a altura máxima será de acordo\n   * com o número de itens selecionados e a extensão dos mesmos, mantendo-os sempre visíveis.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-auto-height', transform: convertToBoolean }) autoHeight: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe a mensagem setada se o campo estiver vazio e for requerido.\n   *\n   * > Necessário que a propriedade `p-required` esteja habilitada.\n   *\n   */\n  @Input('p-field-error-message') fieldErrorMessage: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Limita a exibição da mensagem de erro a duas linhas e exibe um tooltip com o texto completo.\n   *\n   * > Caso essa propriedade seja definida como `true`, a mensagem de erro será limitada a duas linhas\n   * e um tooltip será exibido ao passar o mouse sobre a mensagem para mostrar o conteúdo completo.\n   *\n   * @default `false`\n   */\n  @Input('p-error-limit') errorLimit: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura do input como 32px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura do input como 44px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o espaçamento interno das células, impactando diretamente na altura das linhas do table dentro do modal. Os\n   * valores permitidos são definidos pelo enum **PoTableColumnSpacing**.\n   *\n   * > Em nível de acessibilidade **AA**, caso o valor de `p-spacing` não seja definido, o valor padrão será `extraSmall`\n   * > nos seguintes cenários:\n   * > - Quando o valor de `p-size` for `small`;\n   * > - Quando o valor padrão dos componentes for configurado como `small` no\n   * > [serviço de tema](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  @Input('p-spacing') set spacing(value: string) {\n    const isExtraSmall = value === PoTableColumnSpacing.ExtraSmall;\n    const isA11yAAA = PoUtils.getA11yLevel() === PoThemeA11yEnum.AAA;\n\n    if (Object.values(PoTableColumnSpacing).includes(value as PoTableColumnSpacing)) {\n      if (isA11yAAA && isExtraSmall) {\n        this._spacing = PoTableColumnSpacing.Medium;\n      } else {\n        this._spacing = value as PoTableColumnSpacing;\n      }\n    } else {\n      this._spacing = this.getDefaultSpacing();\n    }\n  }\n\n  get spacing() {\n    return this._spacing ?? this.getDefaultSpacing();\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita ou desabilita a quebra automática de texto. Quando ativada, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * Esta propriedade aplica-se ao texto contido nas células da tabela.\n   *\n   * > Incompatível com `virtual-scroll`, que requer altura fixa nas linhas.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-text-wrap', transform: convertToBoolean }) textWrap?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita o `virtual-scroll` na tabela para melhorar a performance com grandes volumes de dados.\n   * A altura da tabela já é pré-definida, portanto o `virtual-scroll` será ativado automaticamente.\n   *\n   * > Incompatível com `p-text-wrap` e `master-detail`, pois o `virtual-scroll` exige altura fixa nas linhas.\n   *\n   * @default `true`\n   */\n  @Input({ alias: 'p-virtual-scroll', transform: convertToBoolean }) virtualScroll?: boolean = true;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as opções do componente de ajuda (po-helper) que será exibido ao lado do label quando a propriedade `p-label` for definida, ou, ao lado do componente na ausência da propriedade `p-label`.\n   * > Para mais informações acesse: https://po-ui.io/documentation/po-helper.\n   *\n   * > Ao configurar esta propriedade, o antigo ícone de ajuda adicional (`p-additional-help-tooltip` e `p-additional-help`) será ignorado.\n   */\n  poHelperComponent = input<PoHelperOptions | string>(undefined, { alias: 'p-helper' });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a quebra automática do texto da propriedade `p-label`. Quando `p-label-text-wrap` for verdadeiro, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * @default `false`\n   */\n  labelTextWrap = input<boolean>(false, { alias: 'p-label-text-wrap' });\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define se o título do campo será exibido de forma compacta.\n   *\n   * Quando habilitado (`true`), o modo compacto afeta o conjunto composto por:\n   * - `po-label`\n   * - `p-requirement (showRequired)`\n   * - `po-helper`\n   *\n   * Ou seja, todos os elementos relacionados ao título do campo\n   * (rótulo, indicador de obrigatoriedade e componente auxiliar) passam\n   * a seguir o comportamento de layout compacto.\n   *\n   * Também é possível definir esse comportamento de forma global,\n   * uma única vez, na folha de estilo geral da aplicação, por meio\n   * da customização dos tokens CSS:\n   *\n   * - `--field-container-title-justify`\n   * - `--field-container-title-flex`\n   *\n   * Exemplo:\n   *\n   * ```\n   * :root {\n   *   --field-container-title-justify: flex-start;\n   *   --field-container-title-flex: 0 1 auto;\n   * }\n   * ```\n   *\n   * Dessa forma, o layout compacto passa a ser o padrão da aplicação,\n   * sem a necessidade de definir a propriedade individualmente em cada campo.\n   *\n   * @default `false`\n   */\n  compactLabel = input<boolean, unknown>(false, { alias: 'p-compact-label', transform: convertToBoolean });\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar no ícone de ajuda adicional.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Output('p-additional-help') additionalHelp = new EventEmitter<any>();\n\n  /**\n   * Evento será disparado quando ocorrer algum erro na requisição de busca do item.\n   * Será passado por parâmetro o objeto de erro retornado.\n   */\n  @Output('p-error') onError: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado quando uma tecla é pressionada enquanto o foco está no componente.\n   * Retorna um objeto `KeyboardEvent` com informações sobre a tecla.\n   */\n  @Output('p-keydown') keydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento será disparado quando ocorrer alguma seleção.\n   * Será passado por parâmetro o objeto com o valor selecionado.\n   */\n  @Output('p-selected') selected: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   *  Evento que será disparado ao alterar o model.\n   *  Por parâmetro será passado o novo valor.\n   */\n  @Output('p-change') change: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado ao fechar o popover do gerenciador de colunas após alterar as colunas visíveis.\n   *\n   * O componente envia como parâmetro um array de string com as colunas visíveis atualizadas.\n   * Por exemplo: [\"idCard\", \"name\", \"hireStatus\", \"age\"].\n   */\n  @Output('p-change-visible-columns') changeVisibleColumns = new EventEmitter<Array<string>>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar no botão de restaurar padrão no gerenciador de colunas.\n   *\n   * O componente envia como parâmetro um array de string com as colunas configuradas inicialmente.\n   * Por exemplo: [\"idCard\", \"name\", \"hireStatus\", \"age\"].\n   */\n  @Output('p-restore-column-manager') columnRestoreManager = new EventEmitter<Array<string>>();\n\n  displayAdditionalHelp: boolean = false;\n  service: any;\n\n  protected selectedOptions = [];\n  protected getSubscription: Subscription;\n  protected keysDescription: Array<any>;\n  protected oldValue: string = '';\n  protected valueToModel;\n  protected oldValueToModel = null;\n  // eslint-disable-next-line\n  protected onTouched: any = null;\n  protected resizeListener: () => void;\n  protected isExpandedHeight: boolean = false;\n\n  private _disabled?: boolean = false;\n  private _fieldLabel: string;\n  private _filterService: PoLookupFilter | string;\n  private _loading: boolean = false;\n  private _noAutocomplete: boolean;\n  private _placeholder: string = '';\n  private _required?: boolean = false;\n  private readonly _autoHeight: boolean = false;\n\n  private readonly autoHeightInitialValue: boolean;\n  private onChangePropagate: any = null;\n  private validatorChange: any;\n\n  private control!: AbstractControl;\n\n  private readonly injectOptions: InjectOptions = {\n    self: true\n  };\n\n  /**\n   * Serviço responsável por buscar os dados da tabela na janela. Pode ser informado um serviço que implemente a interface\n   * `PoLookupFilter` ou uma URL.\n   *\n   * Quando utilizada uma URL de um serviço, será concatenada nesta URL o valor que deseja-se filtrar, por exemplo:\n   *\n   * ```\n   * url + ?page=1&pageSize=20&filter=Peter\n   * ```\n   *\n   * Caso utilizar ordenação, a coluna ordenada será enviada através do parâmetro `order`, por exemplo:\n   * - Coluna decrescente:\n   *   ```\n   *    url + ?page=1&pageSize=20&filter=Peter&order=-name\n   *   ```\n   *\n   * - Coluna ascendente:\n   *   ```\n   *    url + ?page=1&pageSize=20&filter=Peter&order=name\n   *   ```\n   *\n   * Se for definido a propriedade `p-filter-params`, o mesmo também será concatenado. Por exemplo, para o\n   * parâmetro `{ age: 23 }` a URL ficaria:\n   *\n   * ```\n   * url + ?page=1&pageSize=20&age=23&filter=Peter\n   * ```\n   *\n   * Ao iniciar o campo com valor, os registros serão buscados da seguinte forma:\n   * ```\n   * model = 1234;\n   *\n   * GET url/1234\n   * ```\n   *\n   * Caso estiver com múltipla seleção habilitada:\n   * ```\n   * model = [1234, 5678]\n   *\n   * GET url?${fieldValue}=1234,5678\n   * ```\n   *\n   * > Esta URL deve retornar e receber os dados no padrão de [API do PO UI](https://po-ui.io/guides/api) e utiliza os valores\n   * definidos nas propriedades `p-field-label` e `p-field-value` para a construção do `po-lookup`.\n   *\n   * Caso o usuário digite um valor e pressione a tecla *TAB* para realizar a busca de um registro específico, o valor que se\n   * deseja filtrar será codificado utilizando a função [encodeURIComponent](https://tc39.es/ecma262/#sec-encodeuricomponent-uricomponent)\n   * e concatenado na URL da seguinte forma:\n   *\n   * ```\n   * url/valor%20que%20se%20deseja%20filtrar\n   * ```\n   *\n   * > Quando informado um serviço que implemente a interface `PoLookupFilter` o tratamento de encoding do valor a ser filtrado ficará a cargo do desenvolvedor.\n   *\n   */\n  @Input('p-filter-service') set filterService(filterService: PoLookupFilter | string) {\n    this._filterService = filterService;\n    this.setService(this.filterService);\n  }\n\n  get filterService() {\n    return this._filterService;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a propriedade nativa `autocomplete` do campo como `off`.\n   *\n   * @default `false`\n   */\n  @Input('p-no-autocomplete') set noAutocomplete(value: boolean) {\n    this._noAutocomplete = convertToBoolean(value);\n  }\n\n  get noAutocomplete() {\n    return this._noAutocomplete;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o campo será obrigatório.\n   * > Esta propriedade é desconsiderada quando o input está desabilitado `(p-disabled)`.\n   *\n   * @default `false`\n   */\n  @Input('p-required') set required(required: boolean) {\n    this._required = convertToBoolean(required);\n\n    this.validateModel(this.valueToModel);\n  }\n\n  get required(): boolean {\n    return this._required;\n  }\n\n  /**\n   * Define se a indicação de campo obrigatório seré exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - Não possuir `p-help` e/ou `p-label`.\n   */\n  @Input('p-show-required') showRequired: boolean = false;\n\n  /**\n   * @description\n   *\n   * Indica que o campo será desabilitado.\n   *\n   * @default false\n   * @optional\n   */\n  @HostBinding('attr.p-disabled')\n  @Input('p-disabled')\n  set disabled(disabled: boolean) {\n    this._disabled = <any>disabled === '' ? true : convertToBoolean(disabled);\n  }\n\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de carregamento no lado direito do campo para sinalizar que uma operação está em andamento.\n   *\n   * @default `false`\n   */\n  @HostBinding('attr.p-loading')\n  @Input('p-loading')\n  set loading(value: boolean) {\n    this._loading = convertToBoolean(value);\n  }\n\n  get loading(): boolean {\n    return this._loading;\n  }\n\n  get isDisabled(): boolean {\n    return this.disabled || this.loading;\n  }\n\n  constructor(\n    private readonly defaultService: PoLookupFilterService,\n    @Inject(Injector) private readonly injector: Injector,\n    public poLookupModalService: PoLookupModalService,\n    languageService: PoLanguageService\n  ) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  ngOnDestroy() {\n    if (this.getSubscription) {\n      this.getSubscription.unsubscribe();\n    }\n  }\n\n  ngOnInit(): void {\n    this.initializeColumn();\n  }\n\n  ngAfterViewInit(): void {\n    this.setControl();\n  }\n\n  cleanModel() {\n    this.cleanViewValue();\n    this.callOnChange(undefined);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.columns?.currentValue) {\n      this.columns = changes.columns.currentValue;\n      this.poLookupModalService?.setChangeColumns(this.columns);\n    }\n\n    if (changes.multiple && isTypeof(this.filterService, 'string')) {\n      this.service.setConfig(this.filterService, this.fieldValue, this.multiple);\n    }\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar os estados de habilitado via forms api\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n  }\n\n  registerOnValidatorChange(fn: () => void) {\n    this.validatorChange = fn;\n  }\n\n  // Função implementada do ControlValueAccessor.\n  // Usada para interceptar as mudanças e não atualizar automaticamente o Model.\n  registerOnChange(func: any): void {\n    this.onChangePropagate = func;\n  }\n\n  // Função implementada do ControlValueAccessor.\n  // Usada para interceptar as mudanças e não atualizar automaticamente o Model.\n  registerOnTouched(func: any): void {\n    this.onTouched = func;\n  }\n\n  // Seleciona o valor do model.\n  selectValue(valueSelected: any) {\n    this.valueToModel = valueSelected;\n    if (this.multiple) {\n      this.callOnChange(this.valueToModel);\n    } else if (this.valueToModel) {\n      this.callOnChange(this.valueToModel[this.fieldValue]);\n    } else {\n      this.callOnChange(undefined);\n    }\n    this.selected.emit(valueSelected);\n  }\n\n  callOnChange(value: any) {\n    // Quando o input não possui um formulário, então esta função não é registrada.\n    if (this.onChangePropagate) {\n      this.onChangePropagate(value);\n    }\n\n    if (this.oldValueToModel !== this.valueToModel) {\n      this.change.emit(value);\n    }\n\n    // Armazenar o valor antigo do model\n    this.oldValueToModel = this.valueToModel;\n\n    setTimeout(() => {\n      if (this.autoHeight) {\n        this.updateLookupInputHeight();\n      }\n    });\n  }\n\n  //Transforma o tamanho do input para o tamanho do ícone de loading correspondente\n  mapSizeToIcon(size: string): string {\n    return mapInputSizeToLoadingIcon(size);\n  }\n\n  searchById(value) {\n    let checkedValue = value;\n\n    if (typeof checkedValue === 'string') {\n      checkedValue = checkedValue.trim();\n    }\n\n    if (checkedValue !== '' && checkedValue !== '.') {\n      const oldDisable = this.disabled;\n      this.disabled = true;\n\n      if (this.control) {\n        // :TODO: Retirar no futuro pois esse setTimeout foi feito\n        // pois quando o campo é acionado pelos métodos setValue ou patchValue\n        // a mudança não é detectada\n        setTimeout(() => this.control.markAsPending());\n      }\n\n      this.getSubscription = this.service\n        .getObjectByValue(value, this.filterParams)\n        .pipe(\n          finalize(() => {\n            this.disabled = oldDisable;\n\n            if (this.control) {\n              this.control.updateValueAndValidity();\n            }\n          })\n        )\n        .subscribe(\n          element => {\n            if (element?.length || (!Array.isArray(element) && element)) {\n              if (Array.isArray(element) && element.length > 1) {\n                this.setDisclaimers(element);\n                this.updateVisibleItems();\n              }\n\n              this.selectModel(Array.isArray(element) ? element : [element]);\n            } else {\n              this.cleanModel();\n            }\n          },\n          error => {\n            this.cleanModel();\n            this.onError.emit(error);\n          }\n        );\n    } else {\n      this.cleanModel();\n    }\n  }\n\n  validate(abstractControl: AbstractControl): { [key: string]: any } {\n    if (PoValidators.requiredFailed(this.required, this.disabled, abstractControl.value)) {\n      return {\n        required: {\n          valid: false\n        }\n      };\n    }\n  }\n\n  writeValue(value: any): void {\n    if (value?.length || (!Array.isArray(value) && value)) {\n      // Esta condição é executada somente quando é passado o ID para realizar a busca pelo ID.\n      this.searchById(value);\n    } else {\n      this.cleanViewValue();\n    }\n  }\n\n  // Retorna o Subscriber da propriedade getSubscription que ocorre\n  // no evento de blur que executa o método searchEvent().\n  getSubscriptionFunction(): Subscription {\n    return this.getSubscription;\n  }\n\n  protected cleanViewValue() {\n    this.setDisclaimers([]);\n    this.setViewValue('', {});\n    this.oldValue = '';\n    this.valueToModel = null;\n  }\n\n  // Formata a label do campo.\n  protected getFormattedLabel(value: any): string {\n    return value ? this.keysDescription.map(column => value[column]).join(' - ') : '';\n  }\n\n  // Chama o método writeValue e preenche o model.\n  protected selectModel(options: Array<any>) {\n    if (options.length) {\n      this.selectedOptions = [...options];\n\n      const newModel = this.multiple ? options.map(option => option[this.fieldValue]) : options[0];\n      this.selectValue(newModel);\n\n      if (options.length === 1) {\n        this.oldValue = options[0][this.fieldLabel];\n        this.setViewValue(this.getFormattedLabel(options[0]), options[0]);\n      }\n    } else {\n      this.selectValue(undefined);\n      this.cleanViewValue();\n    }\n  }\n\n  protected validateModel(model: any) {\n    if (this.validatorChange) {\n      this.validatorChange(model);\n    }\n  }\n\n  private setService(service: PoLookupFilter | string) {\n    if (isTypeof(service, 'object')) {\n      this.service = <PoLookupFilterService>service;\n    }\n\n    if (service && isTypeof(service, 'string')) {\n      this.service = this.defaultService;\n      this.service.setConfig(service, this.fieldValue, this.multiple);\n    }\n  }\n\n  private setControl() {\n    const ngControl: NgControl = this.injector.get(NgControl, null, this.injectOptions);\n\n    if (ngControl) {\n      this.control = ngControl.control as UntypedFormControl;\n    }\n  }\n\n  private initializeColumn(): void {\n    if (this.fieldLabel) {\n      this.keysDescription = [this.fieldLabel];\n    } else {\n      this.keysDescription = [];\n\n      this.keysDescription = this.columns.filter(element => element.fieldLabel).map(element => element.property);\n    }\n  }\n\n  private updateLookupInputHeight(): void {\n    if (!this.inputEl) return;\n\n    const height = this.inputEl.nativeElement.offsetHeight;\n    if (this.size === PoFieldSize.Small) {\n      this.isExpandedHeight = height > 32;\n    } else {\n      this.isExpandedHeight = height > 44;\n    }\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n\n  // Atribui um ou mais valores ao campo.\n  abstract setViewValue(value: any, object: any): void;\n\n  // Método com a implementação para abrir o lookup.\n  abstract openLookup(): void;\n\n  abstract setDisclaimers(a);\n\n  abstract updateVisibleItems();\n\n  protected abstract getDefaultSpacing();\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DoCheck,\n  ElementRef,\n  forwardRef,\n  Injector,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  ViewChild,\n  inject,\n  SimpleChanges,\n  OnChanges\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { getDefaultSizeFn, setHelperSettings, uuid } from '../../../utils/util';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport { PoTableColumnSpacing } from '../../po-table';\nimport { PoLookupBaseComponent } from './po-lookup-base.component';\nimport { PoLookupFilterService } from './services/po-lookup-filter.service';\nimport { PoLookupModalService } from './services/po-lookup-modal.service';\nimport { PoHelperComponent } from '../../po-helper';\n\n/* istanbul ignore next */\nconst providers = [\n  PoLookupFilterService,\n  PoLookupModalService,\n  {\n    provide: NG_VALUE_ACCESSOR,\n    // eslint-disable-next-line\n    useExisting: forwardRef(() => PoLookupComponent),\n    multi: true\n  },\n  {\n    provide: NG_VALIDATORS,\n    // eslint-disable-next-line\n    useExisting: forwardRef(() => PoLookupComponent),\n    multi: true\n  },\n  {\n    provide: NgControl,\n    useExisting: forwardRef(() => PoLookupComponent),\n    multi: false\n  }\n];\n\n/**\n * @docsExtends PoLookupBaseComponent\n *\n * @description\n *\n * Quando existe muitos dados o po-lookup por padrão traz apenas 10 itens na tabela e os demais são carregados por demanda através do\n * botão 'Carregar mais resultados'. Para que funcione corretamente, é importante que o serviço siga o\n * [Guia de implementação das APIs TOTVS](https://po-ui.io/guides/api).\n *\n * Importante:\n *\n * - Caso o po-lookup contenha o [(ngModel)] sem o atributo name, ocorrerá um erro de angular.\n * Então será necessário informar o atributo name ou o atributo [ngModelOptions]=\"{standalone: true}\".\n *   ```\n *   <po-lookup\n *     [(ngModel)]=\"pessoa.nome\"\n *     [ngModelOptions]=\"{standalone: true}\">\n *   </po-lookup>\n *   ```\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            |  Descrição                                            | Valor Padrão                                     |\n * |----------------------------------------|-------------------------------------------------------|--------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                  |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                       |\n * | `--font-size`                          | Tamanho da fonte                                      | `var(--font-size-default)`                       |\n * | `--text-color-placeholder`             | Cor do texto no placeholder                           | `var(--color-neutral-light-30)`                  |\n * | `--color`                              | Cor principal do lookup                               | `var(--color-neutral-dark-70)`                   |\n * | `--border-radius`                      | Contém o valor do raio dos cantos do elemento&nbsp;   | `var(--border-radius-md)`                        |\n * | `--background`                         | Cor de background                                     | `var(--color-neutral-light-05)`                  |\n * | `--text-color`                         | Cor do texto                                          | `var(--color-neutral-dark-90)`                   |\n * | `--color-clear`                        | Cor principal do icone clear                          | `var(--color-action-default)`                    |\n * | **Icon**                               |                                                       |                                                  |\n * | `--color-icon`                         | Cor principal do icone pesquisar                      | `var(--color-action-default)`                    |\n * | **Hover**                              |                                                       |                                                  |\n * | `--color-hover`                        | Cor principal no estado hover                         | `var(--color-brand-01-dark)`                             |\n * | `--background-hover`                   | Cor de background no estado hover                     | `var(--color-brand-01-lightest)`                 |\n * | **Focused**                            |                                                       |                                                  |\n * | `--color-focused`                      | Cor principal no estado de focus                      | `var(--color-action-default)`                    |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                     | `var(--color-action-focus)`                      |\n * | **Disabled**                           |                                                       |                                                  |\n * | `--color-disabled`                     | Cor principal no estado disabled                      | `var(--color-action-disabled)`                   |\n * | `--background-disabled`                | Cor de background no estado disabled                  | `var(--color-neutral-light-20)`                  |\n * | `--text-color-disabled`                | Cor do texto quando campo está desabilitado           | `var(--color-action-disabled)`                   |\n * | **Error**                              |                                                       |                                                  |\n * | `--color-error`                        | Cor de background no estado de requerido              | `var(--color-feedback-negative-base)`            |\n *\n * @example\n *\n * <example name=\"po-lookup-basic\" title=\"PO Lookup Basic\">\n *  <file name=\"sample-po-lookup-basic/sample-po-lookup-basic.component.html\"> </file>\n *  <file name=\"sample-po-lookup-basic/sample-po-lookup-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-lookup-labs\" title=\"PO Lookup Labs\">\n *  <file name=\"sample-po-lookup-labs/sample-po-lookup-labs.component.html\"> </file>\n *  <file name=\"sample-po-lookup-labs/sample-po-lookup-labs.component.ts\"> </file>\n *  <file name=\"sample-po-lookup.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-lookup-hero\" title=\"PO Lookup - Hero\">\n *  <file name=\"sample-po-lookup-hero/sample-po-lookup-hero.component.html\"> </file>\n *  <file name=\"sample-po-lookup-hero/sample-po-lookup-hero.component.ts\"> </file>\n *  <file name=\"sample-po-lookup.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-lookup-hero-reactive-form\" title=\"PO Lookup - Hero Reactive Form\">\n *  <file name=\"sample-po-lookup-hero-reactive-form/sample-po-lookup-hero-reactive-form.component.html\"> </file>\n *  <file name=\"sample-po-lookup-hero-reactive-form/sample-po-lookup-hero-reactive-form.component.ts\"> </file>\n *  <file name=\"sample-po-lookup.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-lookup-sw-films\" title=\"PO Lookup - Star Wars films\">\n *  <file name=\"sample-po-lookup-sw-films/sample-po-lookup-sw-films.component.html\"> </file>\n *  <file name=\"sample-po-lookup-sw-films/sample-po-lookup-sw-films.component.ts\"> </file>\n *  <file name=\"sample-po-lookup-sw-films/sample-po-lookup-sw-films.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-lookup-multiple\" title=\"PO Lookup - Multiple\">\n *  <file name=\"sample-po-lookup-multiple/sample-po-lookup-multiple.component.html\"> </file>\n *  <file name=\"sample-po-lookup-multiple/sample-po-lookup-multiple.component.ts\"> </file>\n *  <file name=\"sample-po-lookup-multiple/sample-po-lookup-multiple.service.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-lookup',\n  templateUrl: './po-lookup.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers,\n  standalone: false\n})\nexport class PoLookupComponent\n  extends PoLookupBaseComponent\n  implements AfterViewInit, OnDestroy, OnInit, DoCheck, OnChanges\n{\n  private readonly renderer = inject(Renderer2);\n  private readonly cd = inject(ChangeDetectorRef);\n  private readonly el = inject(ElementRef);\n\n  @ViewChild('helperEl', { read: PoHelperComponent, static: false }) helperEl?: PoHelperComponent;\n  initialized = false;\n  timeoutResize;\n  visibleElement = false;\n  heightGroupButtons = 44;\n\n  disclaimers = [];\n  visibleDisclaimers = [];\n\n  id = `po-lookup[${uuid()}]`;\n\n  private modalSubscription: Subscription;\n  private isCalculateVisibleItems: boolean = true;\n\n  get autocomplete() {\n    return this.noAutocomplete ? 'off' : 'on';\n  }\n\n  constructor() {\n    const languageService = inject(PoLanguageService);\n    const poLookupFilterService = inject(PoLookupFilterService);\n    const poLookupModalService = inject(PoLookupModalService);\n    const injector = inject(Injector);\n\n    super(poLookupFilterService, injector, poLookupModalService, languageService);\n  }\n\n  ngAfterViewInit() {\n    super.ngAfterViewInit();\n\n    if (this.autoFocus) {\n      this.focus();\n    }\n    this.initialized = true;\n  }\n\n  ngDoCheck() {\n    const inputWidth = this.inputEl?.nativeElement.offsetWidth;\n    // Permite que os disclaimers sejam calculados na primeira vez que o componente torna-se visível,\n    // evitando com isso, problemas com Tabs ou Divs que iniciem escondidas.\n    if ((inputWidth && !this.visibleElement && this.initialized) || (inputWidth && this.isCalculateVisibleItems)) {\n      this.debounceResize();\n      this.visibleElement = true;\n    }\n    this.cd.markForCheck();\n  }\n\n  ngOnDestroy() {\n    if (this.modalSubscription) {\n      this.modalSubscription.unsubscribe();\n    }\n  }\n\n  ngOnInit() {\n    super.ngOnInit();\n    this.initializeListeners();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n  }\n  /**\n   * Função que atribui foco ao componente.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoLookupComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoLookupComponent, { static: true }) lookup: PoLookupComponent;\n   *\n   * focusLookup() {\n   *   this.lookup.focus();\n   * }\n   * ```\n   */\n  focus(): void {\n    if (!this.disabled) {\n      this.inputEl.nativeElement.focus();\n    }\n  }\n\n  emitAdditionalHelp() {\n    if (this.label && this.isAdditionalHelpEventTriggered()) {\n      this.additionalHelp.emit();\n    }\n  }\n\n  getAdditionalHelpTooltip() {\n    return this.isAdditionalHelpEventTriggered() ? null : this.additionalHelpTooltip;\n  }\n\n  openLookup(): void {\n    if (this.isAllowedOpenModal()) {\n      const {\n        advancedFilters,\n        service,\n        columns,\n        filterParams,\n        hideColumnsManager,\n        literals,\n        infiniteScroll,\n        multiple,\n        fieldLabel,\n        fieldValue,\n        size,\n        spacing,\n        textWrap,\n        virtualScroll,\n        changeVisibleColumns,\n        columnRestoreManager\n      } = this;\n\n      const selectedItems = this.checkSelectedItems();\n\n      this.poLookupModalService.openModal({\n        advancedFilters,\n        service,\n        columns,\n        filterParams,\n        hideColumnsManager,\n        title: this.label,\n        literals,\n        infiniteScroll,\n        multiple,\n        selectedItems,\n        fieldLabel,\n        fieldValue,\n        size,\n        spacing,\n        textWrap,\n        virtualScroll,\n        changeVisibleColumns,\n        columnRestoreManager\n      });\n\n      if (!this.modalSubscription) {\n        this.modalSubscription = this.poLookupModalService.selectValueEvent.subscribe(selectedOptions => {\n          if (selectedOptions.length > 1 || this.disclaimers.length) {\n            this.setDisclaimers(selectedOptions);\n            this.updateVisibleItems();\n          }\n\n          this.selectModel(selectedOptions);\n        });\n      }\n    }\n  }\n\n  checkSelectedItems() {\n    if (this.multiple) {\n      if (!this.disclaimers.length && this.valueToModel?.length) {\n        return [{ value: this.valueToModel[0], label: this.oldValue, ...this.selectedOptions[0] }];\n      }\n\n      return this.disclaimers;\n    } else {\n      return this.valueToModel;\n    }\n  }\n\n  setDisclaimers(selectedOptions: Array<any>) {\n    this.disclaimers = selectedOptions.map(selectedOption => ({\n      value: selectedOption[this.fieldValue],\n      label: selectedOption[this.fieldLabel],\n      ...selectedOption\n    }));\n\n    this.visibleDisclaimers = [...this.disclaimers];\n    this.cd.markForCheck();\n  }\n\n  setViewValue(value: any, object: any): void {\n    if (this.inputEl && this.fieldFormat) {\n      this.setInputValueWipoieldFormat(object);\n    } else if (this.inputEl) {\n      this.inputEl.nativeElement.value = this.valueToModel || this.valueToModel === 0 ? value : '';\n    }\n    this.cd.markForCheck();\n  }\n\n  getViewValue(): string {\n    return this.inputEl.nativeElement.value;\n  }\n\n  getErrorPattern() {\n    return this.fieldErrorMessage && this.hasInvalidClass() ? this.fieldErrorMessage : '';\n  }\n\n  hasInvalidClass() {\n    return (\n      this.el.nativeElement.classList.contains('ng-invalid') && this.el.nativeElement.classList.contains('ng-dirty')\n    );\n  }\n\n  onBlur(): void {\n    this.onTouched?.();\n  }\n\n  searchEvent() {\n    this.onBlur();\n\n    const value = this.getViewValue();\n\n    if (this.oldValue?.toString() !== value) {\n      this.searchById(value);\n    }\n  }\n\n  closeDisclaimer(value) {\n    this.disclaimers = this.disclaimers.filter(disclaimer => disclaimer.value !== value);\n    this.valueToModel = this.valueToModel.filter(model => model !== value);\n\n    this.updateVisibleItems();\n    this.callOnChange(this.valueToModel.length ? this.valueToModel : undefined);\n  }\n\n  updateVisibleItems() {\n    if (this.disclaimers && this.disclaimers.length > 0) {\n      this.visibleDisclaimers = [].concat(this.disclaimers);\n    }\n\n    this.debounceResize();\n\n    if (!this.inputEl.nativeElement.offsetWidth) {\n      this.isCalculateVisibleItems = true;\n    }\n  }\n\n  debounceResize() {\n    if (!this.autoHeight) {\n      clearTimeout(this.timeoutResize);\n      this.debounce(this.calculateVisibleItems.bind(this), 200);\n    }\n  }\n\n  debounce(func: () => void, delay: number) {\n    this.timeoutResize = setTimeout(func, delay);\n  }\n\n  getInputWidth() {\n    return this.inputEl.nativeElement.offsetWidth - (this.clean ? 80 : 40);\n  }\n\n  getDisclaimersWidth() {\n    const disclaimers = this.inputEl.nativeElement.querySelectorAll('po-disclaimer');\n    return Array.from(disclaimers).map(disclaimer => disclaimer['offsetWidth']);\n  }\n\n  calculateVisibleItems() {\n    const disclaimersWidth = this.getDisclaimersWidth();\n    const inputWidth = this.getInputWidth();\n    const extraDisclaimerSize = 38;\n    const disclaimersVisible = disclaimersWidth[0];\n\n    const newDisclaimers = [];\n    const disclaimers = this.disclaimers;\n\n    if (inputWidth > 0) {\n      let sum = 0;\n      let i = 0;\n      for (i = 0; i < disclaimers.length; i++) {\n        sum += disclaimersWidth[i];\n        newDisclaimers.push(disclaimers[i]);\n\n        if (sum > inputWidth) {\n          sum -= disclaimersWidth[i];\n          this.isCalculateVisibleItems = false;\n          break;\n        }\n      }\n\n      if (disclaimersVisible || !disclaimers.length) {\n        if (i === disclaimers.length) {\n          this.isCalculateVisibleItems = false;\n          return;\n        }\n\n        if (sum + extraDisclaimerSize > inputWidth) {\n          newDisclaimers.splice(-2, 2);\n          const label = '+' + (disclaimers.length + 1 - i).toString();\n          newDisclaimers.push({ value: '', label: label });\n        } else {\n          newDisclaimers.splice(-1, 1);\n          const label = '+' + (disclaimers.length - i).toString();\n          newDisclaimers.push({ value: '', label: label });\n        }\n      }\n    }\n\n    this.visibleDisclaimers = [...newDisclaimers];\n  }\n\n  onKeyDown(event: KeyboardEvent): void {\n    const isFieldFocused = document.activeElement === this.inputEl.nativeElement;\n\n    if (isFieldFocused) {\n      this.keydown.emit(event);\n    }\n  }\n\n  /**\n   *\n   * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n   * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `p-keydown`.\n   *\n   * > Exibe ou oculta o conteúdo do componente `po-helper` quando o componente estiver com foco.\n   *\n   * ```\n   * // Exemplo com p-label e p-helper\n   * <po-lookup\n   *  #lookup\n   *  ...\n   *  p-label=\"Label do lookup\"\n   *  [p-helper]=\"helperOptions\"\n   *  (p-keydown)=\"onKeyDown($event, lookup)\"\n   * ></po-lookup>\n   * ```\n   * ```\n   * ...\n   * onKeyDown(event: KeyboardEvent, inp: PoLookupComponent): void {\n   *  if (event.code === 'F9') {\n   *    inp.showAdditionalHelp();\n   *  }\n   * }\n   * ```\n   */\n  showAdditionalHelp(): boolean {\n    this.displayAdditionalHelp = !this.displayAdditionalHelp;\n    const helper = this.poHelperComponent();\n    const isHelpEvt = this.isAdditionalHelpEventTriggered();\n    if (!this.label && (helper || this.additionalHelpTooltip || isHelpEvt)) {\n      if (isHelpEvt) {\n        this.additionalHelp.emit();\n      }\n      if (typeof helper !== 'string' && typeof helper?.eventOnClick === 'function') {\n        console.trace('Chamando eventOnClick do helper');\n        helper.eventOnClick();\n        return;\n      }\n      if (this.helperEl?.helperIsVisible()) {\n        this.helperEl?.closeHelperPopover();\n        return;\n      }\n      this.helperEl?.openHelperPopover();\n      return;\n    }\n    return this.displayAdditionalHelp;\n  }\n\n  setHelper(label?: string, additionalHelpTooltip?: string) {\n    return setHelperSettings(\n      label,\n      additionalHelpTooltip,\n      this.poHelperComponent(),\n      this.size,\n      this.isAdditionalHelpEventTriggered() ? this.additionalHelp : undefined\n    );\n  }\n\n  protected getDefaultSpacing(): PoTableColumnSpacing {\n    return this.size === PoFieldSize.Small || getDefaultSizeFn(PoTableColumnSpacing) === PoTableColumnSpacing.Small\n      ? PoTableColumnSpacing.ExtraSmall\n      : PoTableColumnSpacing.Medium;\n  }\n\n  private isAdditionalHelpEventTriggered(): boolean {\n    return (\n      this.additionalHelpEventTrigger === 'event' ||\n      (this.additionalHelpEventTrigger === undefined && this.additionalHelp.observed)\n    );\n  }\n\n  private isAllowedOpenModal(): boolean {\n    if (!this.service) {\n      console.warn('No service informed');\n    }\n\n    return !!(this.service && !this.disabled);\n  }\n\n  private formatFields(objectSelected, properties) {\n    let formatedField;\n    if (Array.isArray(properties)) {\n      for (const property of properties) {\n        if (objectSelected && objectSelected[property]) {\n          if (!formatedField) {\n            formatedField = objectSelected[property];\n          } else {\n            formatedField = formatedField + ' - ' + objectSelected[property];\n          }\n        }\n      }\n    }\n\n    if (!formatedField) {\n      formatedField = objectSelected[this.fieldValue];\n    }\n    return formatedField;\n  }\n\n  private setInputValueWipoieldFormat(objectSelected: any) {\n    const isEmpty = Object.keys(objectSelected).length === 0;\n    let fieldFormated;\n\n    if (Array.isArray(this.fieldFormat)) {\n      fieldFormated = this.formatFields(objectSelected, this.fieldFormat);\n    } else {\n      fieldFormated = this.fieldFormat(objectSelected);\n    }\n\n    this.oldValue = isEmpty ? '' : fieldFormated;\n    this.inputEl.nativeElement.value = isEmpty ? '' : fieldFormated;\n  }\n\n  private initializeListeners(): void {\n    this.resizeListener = this.renderer.listen('window', 'resize', () => {\n      this.updateVisibleItems();\n    });\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n@let needsHelper = !label && (poHelperComponent() || poHelper.hideAdditionalHelp);\n\n<ng-template #poHelperTemplate>\n  <po-helper\n    #helperEl\n    class=\"po-field-helper-button\"\n    [p-size]=\"size\"\n    [p-helper]=\"poHelper.helperSettings\"\n    [p-disabled]=\"isDisabled\"\n    [p-append-in-body]=\"appendBox\"\n  ></po-helper>\n</ng-template>\n\n<po-field-container\n  [p-disabled]=\"isDisabled\"\n  [p-id]=\"id\"\n  [p-label]=\"label\"\n  [p-optional]=\"optional\"\n  [p-required]=\"required\"\n  [p-show-required]=\"showRequired\"\n  [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n  [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n  [p-size]=\"size\"\n  [p-text-wrap]=\"labelTextWrap()\"\n  [p-compact-label]=\"compactLabel()\"\n>\n  @if (!disclaimers.length) {\n    <div\n      class=\"po-field-container-content po-lookup\"\n      [class.po-lookup-disabled]=\"disabled\"\n      [class.po-lookup-loading]=\"loading\"\n    >\n      <div class=\"po-field-container-content-helper-wrapper\">\n        <div class=\"po-field-container-input\">\n          <input\n            #inp\n            class=\"po-lookup-input po-lookup-input-trigger\"\n            [ngClass]=\"clean && inp.value ? 'po-input-double-icon-right' : 'po-input-icon-right'\"\n            [id]=\"id\"\n            type=\"text\"\n            [autocomplete]=\"autocomplete\"\n            [disabled]=\"isDisabled\"\n            [placeholder]=\"placeholder\"\n            [required]=\"required\"\n            (blur)=\"searchEvent()\"\n            (keydown)=\"onKeyDown($event)\"\n          />\n          <div class=\"po-field-icon-container-right po-lookup-buttons\">\n            @if (loading) {\n              <div class=\"po-lookup-button po-lookup-button-loading\">\n                <po-loading-icon class=\"po-lookup-loading-icon\" [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n              </div>\n            } @else {\n              @if (clean && !isDisabled && !!inp.value) {\n                <po-clean\n                  tabindex=\"0\"\n                  role=\"button\"\n                  [attr.aria-label]=\"literals.clean\"\n                  class=\"po-lookup-button po-lookup-button-clean\"\n                  [class.po-lookup-button-aa]=\"size === 'small'\"\n                  [p-element-ref]=\"inp\"\n                  [p-size]=\"size\"\n                  (p-change-event)=\"cleanModel()\"\n                  (click)=\"cleanModel(); $event.preventDefault()\"\n                  (keydown.enter)=\"cleanModel(); $event.preventDefault()\"\n                ></po-clean>\n              }\n            }\n            <div\n              #iconLookup\n              tabindex=\"0\"\n              role=\"button\"\n              class=\"po-lookup-button po-lookup-button-trigger po-field-icon\"\n              [class.po-field-icon-disabled]=\"isDisabled\"\n              [ariaLabel]=\"literals.search\"\n              (p-change-event)=\"openLookup()\"\n              (click)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n              (keydown.enter)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n            >\n              <po-icon\n                p-icon=\"ICON_SEARCH\"\n                [class.po-field-icon]=\"!isDisabled\"\n                [class.po-field-icon-aa]=\"!isDisabled && size === 'small'\"\n              ></po-icon>\n            </div>\n          </div>\n        </div>\n\n        @if (needsHelper) {\n          <ng-container *ngTemplateOutlet=\"poHelperTemplate\"></ng-container>\n        }\n      </div>\n    </div>\n  } @else {\n    <div\n      class=\"po-field-container-content po-lookup\"\n      [class.po-lookup-disabled]=\"disabled\"\n      [class.po-lookup-loading]=\"loading\"\n    >\n      <div class=\"po-field-container-content-helper-wrapper\">\n        <div class=\"po-field-container-input\">\n          <div\n            #inp\n            [tabindex]=\"isDisabled ? -1 : 0\"\n            class=\"po-lookup-input po-input-icon-right po-icon-input\"\n            [ngClass]=\"clean && inp.value ? 'po-input-double-icon-right' : 'po-input-icon-right'\"\n            [class.po-lookup-input-auto]=\"autoHeight\"\n            [class.po-lookup-input-static]=\"!autoHeight\"\n            [class.po-lookup-input-padding-button-clean]=\"clean || loading\"\n            [class.po-lookup-input-disabled]=\"isDisabled\"\n            [class.po-lookup-input-auto-dynamic-height]=\"isExpandedHeight\"\n            (blur)=\"onBlur()\"\n            (keydown)=\"onKeyDown($event)\"\n          >\n            @if (placeholder && !disclaimers?.length) {\n              <span class=\"po-lookup-input-placeholder\">{{ placeholder }}</span>\n            }\n            @for (disclaimer of visibleDisclaimers; track disclaimer) {\n              <po-disclaimer\n                class=\"po-lookup-input-disclaimer\"\n                [p-label]=\"disclaimer.label\"\n                [p-value]=\"disclaimer.value\"\n                [p-hide-close]=\"disclaimer.value === '' || isDisabled\"\n                [class.po-clickable]=\"disclaimer.value === '' && !isDisabled\"\n                (p-close-action)=\"closeDisclaimer(disclaimer.value)\"\n              ></po-disclaimer>\n            }\n          </div>\n          <div class=\"po-field-icon-container-right po-lookup-buttons\">\n            @if (loading) {\n              <div class=\"po-lookup-button po-lookup-button-loading\">\n                <po-loading-icon class=\"po-lookup-loading-icon\" [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n              </div>\n            } @else {\n              @if (clean && !isDisabled && !!inp.value) {\n                <po-clean\n                  tabindex=\"0\"\n                  role=\"button\"\n                  [attr.aria-label]=\"literals.clean\"\n                  class=\"po-lookup-button po-lookup-button-clean\"\n                  [p-element-ref]=\"inp\"\n                  [p-size]=\"size\"\n                  (p-change-event)=\"cleanModel()\"\n                  (click)=\"cleanModel(); $event.preventDefault()\"\n                  (keydown.enter)=\"cleanModel(); $event.preventDefault()\"\n                ></po-clean>\n              }\n            }\n            <div\n              #iconLookup\n              tabindex=\"0\"\n              role=\"button\"\n              class=\"po-lookup-button po-lookup-button-trigger po-field-icon\"\n              [class.po-field-icon-disabled]=\"isDisabled\"\n              [ariaLabel]=\"literals.search\"\n              (p-change-event)=\"openLookup()\"\n              (click)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n              (keydown.enter)=\"!isDisabled && openLookup(); $event.preventDefault()\"\n            >\n              <po-icon\n                p-icon=\"ICON_SEARCH\"\n                [class.po-field-icon]=\"!isDisabled\"\n                [class.po-field-icon-aa]=\"!isDisabled && size === 'small'\"\n              ></po-icon>\n            </div>\n          </div>\n        </div>\n\n        @if (needsHelper) {\n          <ng-container *ngTemplateOutlet=\"poHelperTemplate\"></ng-container>\n        }\n      </div>\n    </div>\n  }\n\n  <po-field-container-bottom\n    [p-append-in-body]=\"appendBox\"\n    [p-help]=\"help\"\n    [p-disabled]=\"isDisabled\"\n    [p-error-pattern]=\"getErrorPattern()\"\n    [p-error-limit]=\"errorLimit\"\n    [p-size]=\"size\"\n  ></po-field-container-bottom>\n</po-field-container>\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n/**\n * @usedBy PoMultiselectComponent\n *\n * @description\n *\n * Esta diretiva permite personalizar o conteúdo dos itens exibidos na lista de opções do componente.\n *\n * Para personalizar o conteúdo de cada item da lista deve-se utilizar a diretiva `p-multiselect-option-template` com `ng-template`\n * dentro da *tag* `po-multiselect`, o seu array de `p-options` repassado para com componente deve conter a propriedade `value` e `label`.\n *\n * Para obter a referência do item atual utilize `let-option`, com isso você terá acesso aos valores e poderá personalizar sua exibição.\n *\n * Exemplo de uso:\n *\n * ```\n * ...\n * <po-multiselect\n *   name=\"multiselect\"\n *   [(ngModel)]=\"multiselect\"\n *   [p-options]=\"options\"\n *   [p-hide-select-all]=\"true\">\n *     <ng-template p-multiselect-option-template let-option>\n *        <!-- template customizado -->\n *       <div class=\"po-font-text-large-bold\" [innerHtml]=\"option.label\"></div>\n *       <!-- template customizado -->\n *     </ng-template>\n * </po-multiselect>\n * ...\n * ```\n *\n */\n@Directive({\n  selector: '[p-multiselect-option-template]',\n  standalone: false\n})\nexport class PoMultiselectOptionTemplateDirective {\n  // Necessário manter templateRef para o funcionamento do row template.\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n","/**\n * @usedBy PoMultiselectComponent\n *\n * @description\n *\n * Define o tipo de busca usado no po-multiselect.\n */\nexport enum PoMultiselectFilterMode {\n  /** Verifica se o texto *inicia* com o valor pesquisado. */\n  startsWith,\n  /** Verifica se o texto *contém* o valor pesquisado. */\n  contains,\n  /** Verifica se o texto *finaliza* com o valor pesquisado. */\n  endsWith\n}\n","import {\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  input,\n  Input,\n  OnInit,\n  Output,\n  ViewChild\n} from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, Validator } from '@angular/forms';\n\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, switchMap, tap } from 'rxjs/operators';\n\nimport { poLocaleDefault } from '../../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport {\n  convertToBoolean,\n  getDefaultSizeFn,\n  isTypeof,\n  mapInputSizeToLoadingIcon,\n  validateSizeFn,\n  PoUtils\n} from '../../../utils/util';\nimport { requiredFailed } from './../validators';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { PoMultiselectFilterMode } from './enums/po-multiselect-filter-mode.enum';\nimport { PoMultiselectFilter } from './interfaces/po-multiselect-filter.interface';\nimport { PoMultiselectLiterals } from './interfaces/po-multiselect-literals.interface';\nimport { PoMultiselectOption } from './interfaces/po-multiselect-option.interface';\nimport { PoMultiselectFilterService } from './po-multiselect-filter.service';\nimport { PoHelperOptions } from '../../po-helper';\n\nconst PO_MULTISELECT_DEBOUNCE_TIME_DEFAULT = 400;\nconst PO_MULTISELECT_FIELD_LABEL_DEFAULT = 'label';\nconst PO_MULTISELECT_FIELD_VALUE_DEFAULT = 'value';\nconst poMultiselectContainerPositionDefault = 'bottom';\n\nexport const poMultiselectLiteralsDefault = {\n  en: <PoMultiselectLiterals>{\n    noData: 'No data found',\n    placeholderSearch: 'Search',\n    selectAll: 'Select all',\n    selectItem: 'Select items'\n  },\n  es: <PoMultiselectLiterals>{\n    noData: 'Datos no encontrados',\n    placeholderSearch: 'Busca',\n    selectAll: 'Seleccionar todo',\n    selectItem: 'Seleccionar items'\n  },\n  pt: <PoMultiselectLiterals>{\n    noData: 'Nenhum dado encontrado',\n    placeholderSearch: 'Buscar',\n    selectAll: 'Selecionar todos',\n    selectItem: 'Selecionar itens'\n  },\n  ru: <PoMultiselectLiterals>{\n    noData: 'Данные не найдены',\n    placeholderSearch: 'искать',\n    selectAll: 'Выбрать все',\n    selectItem: 'Выбрать элементы'\n  }\n};\n\n/**\n * @description\n *\n * O po-multiselect é um componente de múltipla seleção.\n * Este componente é recomendado para dar ao usuário a opção de selecionar vários itens em uma lista.\n *\n * Quando a lista possuir poucos itens, deve-se dar preferência para o uso do po-checkbox-group, por ser mais simples\n * e mais rápido para a seleção do usuário.\n *\n * Este componente também não deve ser utilizado em casos onde a seleção seja única. Nesses casos, deve-se utilizar o\n * po-select, po-combo ou po-radio-group.\n *\n * Com ele também é possível definir uma lista à partir da requisição de um serviço definido em `p-filter-service`.\n *\n * #### Boas práticas\n *\n * - Caso a lista apresente menos de 5 itens, considere utilizar outro componente;\n * - Não utilize o multiselect caso o usuário possa selecionar apenas uma opção. Para esse caso, opte por utilizar po-radio ou po-select;\n *\n * #### Acessibilidade tratada no componente\n *\n * Algumas diretrizes de acessibilidade já são tratadas no componente internamente, e não podem ser alteradas pelo proprietário do conteúdo. São elas:\n *\n * - Quando em foco, o multiselect abre o listbox usando as teclas de Espaço ou Enter do teclado.\n * - Utilize as teclas Arrow Up [seta para cima] ou Arrow Down [seta para baixo] do teclado para navegar entre os itens do listbox.\n * - Utilize a tecla Esc do teclado para fechar o listbox.\n * - Quando um item estiver em foco, utilize as teclas Arrow Right [seta para direita] ou Arrow Left [seta para esquerda] do teclado para navegar entre eles.\n * - Quando em foco e havendo um item ou mais já selecionado, utilize a tecla Arrow Down [seta para baixo] do teclado para abrir o listbox.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                      |\n * |----------------------------------------|-------------------------------------------------------|---------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                   |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                        |\n * | `--font-size`                          | Tamanho da fonte                                      | `var(--font-size-default)`                        |\n * | `--text-color-placeholder` &nbsp;      | Cor do texto do placeholder                           | `var(--color-action-disabled)`                    |\n * | `--color`                              | Cor principal do multiselect                          | `var(--color-neutral-dark-70)`                    |\n * | `--background`                         | Cor de background                                     | `var(--color-neutral-light-05)`                   |\n * | `--field-container-title-justify`      | Alinhamento horizontal do título (`justify-content`)  | `space-between`                                   |\n * | `--field-container-title-flex`         | Flex do título (`flex`)                               | `1 auto`                                          |\n * | **Hover**                              |                                                       |                                                   |\n * | `--color-hover`                        | Cor principal no estado hover                         | `var(--color-action-hover)`                       |\n * | `--background-hover`                   | Cor de background no estado hover                     | `var(--color-brand-01-lighter)`                   |\n * | **Focused**                            |                                                       |                                                   |\n * | `--color-focused`                      | Cor principal no estado de focus                      | `var(--color-action-default)`                     |\n * | `--outline-color-focused` &nbsp;       | Cor do outline do estado de focus                     | `var(--color-action-focus)`                       |\n * | **Disabled**                           |                                                       |                                                   |\n * | `--color-disabled`                     | Cor principal no estado disabled                      | `var(--color-action-disabled)`                    |\n * | `--background-disabled` &nbsp;         | Cor de background no estado disabled &nbsp;           | `var(--color-neutral-light-20)`                   |\n * | **Error**                              |                                                       |                                                   |\n * | `--color-error`                        | Cor principal no estado error                         | `var(--color-feedback-negative-base)`             |\n *\n */\n@Directive()\nexport abstract class PoMultiselectBaseComponent implements ControlValueAccessor, OnInit, Validator {\n  @ViewChild('inputElement', { read: ElementRef, static: true }) inputElement: ElementRef;\n  // Propriedade interna que define se o ícone de ajuda adicional terá cursor clicável (evento) ou padrão (tooltip).\n  @Input() additionalHelpEventTrigger: string | undefined;\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de ajuda adicional, com o texto desta propriedade sendo passado para o popover do componente `po-helper`.\n   * **Como boa prática, indica-se utilizar um texto com até 140 caracteres.**\n   * > Requer um recuo mínimo de 8px se o componente estiver próximo à lateral da tela.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Input('p-additional-help-tooltip') additionalHelpTooltip?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Aplica foco no elemento ao ser iniciado.\n   *\n   * > Caso mais de um elemento seja configurado com essa propriedade, apenas o último elemento declarado com ela terá o foco.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-auto-focus', transform: convertToBoolean }) autoFocus: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define se o título do campo será exibido de forma compacta.\n   *\n   * Quando habilitado (`true`), o modo compacto afeta o conjunto composto por:\n   * - `po-label`\n   * - `p-requirement (showRequired)`\n   * - `po-helper`\n   *\n   * Ou seja, todos os elementos relacionados ao título do campo\n   * (rótulo, indicador de obrigatoriedade e componente auxiliar) passam\n   * a seguir o comportamento de layout compacto.\n   *\n   * Também é possível definir esse comportamento de forma global,\n   * uma única vez, na folha de estilo geral da aplicação, por meio\n   * da customização dos tokens CSS:\n   *\n   * - `--field-container-title-justify`\n   * - `--field-container-title-flex`\n   *\n   * Exemplo:\n   *\n   * ```\n   * :root {\n   *   --field-container-title-justify: flex-start;\n   *   --field-container-title-flex: 0 1 auto;\n   * }\n   * ```\n   *\n   * Dessa forma, o layout compacto passa a ser o padrão da aplicação,\n   * sem a necessidade de definir a propriedade individualmente em cada campo.\n   *\n   * @default `false`\n   */\n  compactLabel = input<boolean, unknown>(false, { alias: 'p-compact-label', transform: convertToBoolean });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao sair do campo.\n   */\n  @Output('p-blur') blur: EventEmitter<any> = new EventEmitter();\n\n  /** Label no componente. */\n  @Input('p-label') label?: string;\n\n  /** Texto de apoio para o campo. */\n  @Input('p-help') help?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se a indicação de campo opcional será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - O campo conter `p-required`;\n   * - Não possuir `p-help` e/ou `p-label`.\n   *\n   * @default `false`\n   */\n  @Input('p-optional') optional: boolean;\n\n  /** Mensagem apresentada enquanto o campo estiver vazio. */\n  @Input('p-placeholder') placeholder?: string = '';\n\n  /**\n   * @description\n   *\n   * Placeholder do campo de pesquisa.\n   *\n   * > Caso o mesmo não seja informado, o valor padrão será traduzido com base no idioma do navegador (pt, es e en).\n   *\n   * @default `Buscar`\n   */\n  @Input('p-placeholder-search') placeholderSearch?: string = '';\n\n  /** Nome do componente. */\n  @Input('name') name: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica se o campo \"Selecionar todos\" será escondido.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-hide-select-all', transform: convertToBoolean }) hideSelectAll?: boolean;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe a mensagem setada se o campo estiver vazio e for requerido.\n   *\n   * > Necessário que a propriedade `p-required` esteja habilitada.\n   *\n   */\n  @Input('p-field-error-message') fieldErrorMessage: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Limita a exibição da mensagem de erro a duas linhas e exibe um tooltip com o texto completo.\n   *\n   * > Caso essa propriedade seja definida como `true`, a mensagem de erro será limitada a duas linhas\n   * e um tooltip será exibido ao passar o mouse sobre a mensagem para mostrar o conteúdo completo.\n   *\n   * @default `false`\n   */\n  @Input('p-error-limit') errorLimit: boolean = false;\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar no ícone de ajuda adicional.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Output('p-additional-help') additionalHelp = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Pode ser informada uma função que será disparada quando houver alterações no ngModel.\n   */\n  @Output('p-change') change: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado quando uma tecla é pressionada enquanto o foco está no componente.\n   * Retorna um objeto `KeyboardEvent` com informações sobre a tecla.\n   */\n  @Output('p-keydown') keydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o `listbox` e/ou popover (`p-helper` e/ou `p-error-limit`) serão incluídos no body da\n   * página e não dentro do componente. Essa opção pode ser necessária em cenários com containers que possuem scroll ou\n   * overflow escondido, garantindo o posicionamento correto de ambos próximo ao elemento.\n   *\n   * > Quando utilizado com `p-helper`, leitores de tela como o NVDA podem não ler o conteúdo do popover.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendBox?: boolean = false;\n\n  /**\n   * @docsPrivate\n   *\n   * Determinar se o valor do compo deve retorna objeto do tipo {value: any, label: any}\n   */\n  @Input({ alias: 'p-control-value-with-label', transform: convertToBoolean }) controlValueWithLabel?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a direção preferida para exibição do `listbox` em relação ao campo (`top` ou `bottom`).\n   * Útil em casos onde o posicionamento automático não se comporta como esperado, como quando o componente está próximo\n   * ao final do formulário ou do container visível. Na maioria dos casos, essa direção será respeitada; no entanto,\n   * pode ser ajustada automaticamente conforme o espaço disponível na tela.\n   *\n   * @default `bottom`\n   */\n  @Input('p-listbox-control-position') listboxControlPosition: 'top' | 'bottom' = poMultiselectContainerPositionDefault;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as opções do componente de ajuda (po-helper) que será exibido ao lado do label quando a propriedade `p-label` for definida, ou, ao lado do componente na ausência da propriedade `p-label`.\n   * > Para mais informações acesse: https://po-ui.io/documentation/po-helper.\n   *\n   * > Ao configurar esta propriedade, o antigo ícone de ajuda adicional (`p-additional-help-tooltip` e `p-additional-help`) será ignorado.\n   */\n  poHelperComponent = input<PoHelperOptions | string>(undefined, { alias: 'p-helper' });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a quebra automática do texto da propriedade `p-label`. Quando `p-label-text-wrap` for verdadeiro, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * @default `false`\n   */\n  labelTextWrap = input<boolean>(false, { alias: 'p-label-text-wrap' });\n\n  selectedOptions: Array<PoMultiselectOption | any> = [];\n  visibleOptionsDropdown: Array<PoMultiselectOption | any> = [];\n  visibleTags = [];\n  isServerSearching = false;\n  isFirstFilter: boolean = true;\n  filterSubject = new Subject();\n  service: PoMultiselectFilterService;\n  defaultService: PoMultiselectFilterService;\n  displayAdditionalHelp: boolean = false;\n\n  // eslint-disable-next-line\n  protected onModelTouched: any = null;\n\n  protected clickOutListener: () => void;\n  protected resizeListener: () => void;\n  protected getObjectsByValuesSubscription: Subscription;\n  protected isExpandedHeight: boolean = false;\n\n  private _filterService?: PoMultiselectFilter | string;\n  private _debounceTime?: number = 400;\n  private _disabled?: boolean = false;\n  private _filterMode?: PoMultiselectFilterMode = PoMultiselectFilterMode.startsWith;\n  private _hideSearch?: boolean = false;\n  private _literals: PoMultiselectLiterals;\n  private _loading: boolean = false;\n  private _options: Array<PoMultiselectOption | any>;\n  private _required?: boolean = false;\n  private _sort?: boolean = false;\n  private _autoHeight: boolean = false;\n  private _fieldLabel?: string = PO_MULTISELECT_FIELD_LABEL_DEFAULT;\n  private _fieldValue?: string = PO_MULTISELECT_FIELD_VALUE_DEFAULT;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n  private readonly language: string;\n\n  private lastLengthModel;\n  private onModelChange: any;\n  private validatorChange: any;\n  private autoHeightInitialValue: boolean;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Nesta propriedade pode ser informada a URL do serviço em que será realizado o filtro para carregamento da lista de itens no componente.\n   *\n   *Também existe a possibilidade de informar um serviço implementando a interface `PoMultiselectFilter`.\n   *\n   *Caso utilizado uma URL, o serviço deve ser retornado no padrão [API PO UI](https://po-ui.io/guides/api) e utilizar as propriedades `p-field-label` e `p-field-value` para a construção da lista de itens.\n   *\n   *Quando utilizada uma URL de serviço, então será concatenada nesta URL o valor que deseja-se filtrar da seguinte forma:\n   *\n   *```\n   * // caso filtrar por \"Peter\"\n   *  https://localhost:8080/api/heroes?filter=Peter\n   *```\n   *\n   *E caso iniciar o campo com valor, os itens serão buscados da seguinte forma:\n   *\n   *```\n   * // caso o valor do campo for [1234, 5678];\n   *  https://localhost:8080/api/heroes?value=1234,5678\n   *\n   * //O *value* é referente ao `fieldValue`.\n   *```\n   *\n   */\n  @Input('p-filter-service') set filterService(value: PoMultiselectFilter | string) {\n    if (value) {\n      this._filterService = value;\n      this.autoHeight = this.autoHeightInitialValue !== undefined ? this.autoHeightInitialValue : true;\n      this.options = [];\n    }\n  }\n\n  get filterService() {\n    return this._filterService;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que a altura do componente será auto ajustável, possuindo uma altura minima porém a altura máxima será de acordo\n   * com o número de itens selecionados e a extensão dos mesmos, mantendo-os sempre visíveis.\n   *\n   * > O valor padrão será `true` quando houver serviço (`p-filter-service`).\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-auto-height', transform: convertToBoolean }) set autoHeight(value: boolean) {\n    this._autoHeight = value;\n    this.autoHeightInitialValue = value;\n  }\n\n  get autoHeight(): boolean {\n    return this._autoHeight;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Esta propriedade define em quanto tempo (em milissegundos), aguarda para acionar o evento de filtro após cada pressionamento de tecla.\n   *\n   * > Será utilizada apenas quando houver serviço (`p-filter-service`) e somente será aceito valor maior do que *zero*.\n   *\n   * @default `400`\n   */\n  @Input('p-debounce-time') set debounceTime(value: number) {\n    const parsedValue = parseInt(<any>value, 10);\n\n    this._debounceTime = !isNaN(parsedValue) && parsedValue > 0 ? parsedValue : PO_MULTISELECT_DEBOUNCE_TIME_DEFAULT;\n  }\n\n  get debounceTime(): number {\n    return this._debounceTime;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com as literais usadas no `po-multiselect`.\n   *\n   * Existem duas maneiras de customizar o componente, passando um objeto com todas as literais disponíveis:\n   *\n   * ```\n   *  const customLiterals: PoMultiselectLiterals = {\n   *    noData: 'Nenhum dado encontrado',\n   *    placeholderSearch: 'Buscar',\n   *    selectAll: 'Select all',\n   *    selectItem: 'Select items'\n   *  };\n   * ```\n   *\n   * Ou passando apenas as literais que deseja customizar:\n   *\n   * ```\n   *  const customLiterals: PoMultiselectLiterals = {\n   *    noData: 'Sem dados'\n   *  };\n   * ```\n   *\n   * E para carregar as literais customizadas, basta apenas passar o objeto para o componente:\n   *\n   * ```\n   * <po-multiselect\n   *   [p-literals]=\"customLiterals\">\n   * </po-po-multiselect>\n   * ```\n   *\n   * > O objeto padrão de literais será traduzido de acordo com o idioma do\n   * [`PoI18nService`](/documentation/po-i18n) ou do browser.\n   */\n  @Input('p-literals') set literals(value: PoMultiselectLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poMultiselectLiteralsDefault[poLocaleDefault],\n        ...poMultiselectLiteralsDefault[this.language],\n        ...value\n      };\n    } else {\n      this._literals = poMultiselectLiteralsDefault[this.language];\n    }\n  }\n\n  get literals() {\n    return this._literals || poMultiselectLiteralsDefault[this.language];\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o campo será obrigatório.\n   *\n   * > Esta propriedade é desconsiderada quando o input está desabilitado `(p-disabled)`.\n   *\n   * @default `false`\n   */\n  @Input('p-required') set required(required: boolean) {\n    this._required = <any>required === '' ? true : convertToBoolean(required);\n    this.validateModel();\n  }\n\n  get required() {\n    return this._required;\n  }\n\n  /**\n   * Define se a indicação de campo obrigatório será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - Não possuir `p-help` e/ou `p-label`.\n   */\n  @Input('p-show-required') showRequired: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura do input como 32px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura do input como 44px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica que o campo será desabilitado.\n   *\n   * @default `false`\n   */\n  @Input('p-disabled') set disabled(disabled: boolean) {\n    this._disabled = <any>disabled === '' ? true : convertToBoolean(disabled);\n    this.validateModel();\n\n    this.updateVisibleItems();\n  }\n\n  get disabled() {\n    return this._disabled;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de carregamento no lado direito do campo para sinalizar que uma operação está em andamento.\n   *\n   * @default `false`\n   */\n  @HostBinding('attr.p-loading')\n  @Input('p-loading')\n  set loading(value: boolean) {\n    this._loading = convertToBoolean(value);\n    this.cd?.markForCheck();\n  }\n\n  get loading(): boolean {\n    return this._loading;\n  }\n\n  get isDisabled(): boolean {\n    return this.disabled || this.loading;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Esconde o campo de pesquisa existente dentro do dropdown do po-multiselect.\n   *\n   * @default `false`\n   */\n  @Input('p-hide-search') set hideSearch(hideSearch: boolean) {\n    this._hideSearch = <any>hideSearch === '' ? true : convertToBoolean(hideSearch);\n  }\n\n  get hideSearch() {\n    return this._hideSearch;\n  }\n\n  /**\n   * @description\n   *\n   * Nesta propriedade deve ser definida uma lista de objetos que será exibida no multiselect.\n   * Esta lista deve conter os valores e os labels que serão apresentados na tela.\n   *\n   * > Essa propriedade é imutável, ou seja, sempre que quiser atualizar a lista de opções disponíveis\n   * atualize a referência do objeto:\n   *\n   * ```\n   * // atualiza a referência do objeto garantindo a atualização do template\n   * this.options = [...this.options, { value: 'x', label: 'Nova opção' }];\n   *\n   * // evite, pois não atualiza a referência do objeto podendo gerar atrasos na atualização do template\n   * this.options.push({ value: 'x', label: 'Nova opção' });\n   * ```\n   * > A lista pode ser definida utilizando um array com o valor representando `value` e `label` das seguintes formas:\n   *\n   * ```\n   * <po-multiselect name=\"multiselect\" p-label=\"PO Multiselect\" [p-options]=\"[{value: 1, label: 'One'}, {value: 2, label: 'two'}]\"> </po-multiselect>\n   * ```\n   *\n   * ```\n   * <po-multiselect name=\"multiselect\" p-label=\"PO Multiselect\" [p-options]=\"[{name: 'Roger', age: 28}, {name: 'Anne', age: 35}]\" p-field-label=\"name\" p-field-value=\"age\"> </po-multiselect>\n   * ```\n   *\n   * - Aconselha-se utilizar valores distintos no `label` e `value` dos itens.\n   */\n  @Input('p-options') set options(options: Array<PoMultiselectOption | any>) {\n    this._options = options;\n  }\n\n  get options(): Array<PoMultiselectOption | any> {\n    return this._options;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica que a lista definida na propriedade p-options será ordenada pelo label antes de ser apresentada no\n   * dropdown.\n   *\n   * @default `false`\n   */\n  @Input('p-sort') set sort(sort: boolean) {\n    this._sort = <any>sort === '' ? true : convertToBoolean(sort);\n\n    this.validAndSortOptions();\n  }\n\n  get sort() {\n    return this._sort;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o modo de pesquisa utilizado no campo de busca, quando habilitado.\n   * Valores definidos no enum: PoMultiselectFilterMode\n   *\n   * @default `startsWith`\n   */\n  @Input('p-filter-mode') set filterMode(filterMode: PoMultiselectFilterMode) {\n    this._filterMode = filterMode in PoMultiselectFilterMode ? filterMode : PoMultiselectFilterMode.startsWith;\n    switch (this._filterMode.toString()) {\n      case 'startsWith':\n        this._filterMode = PoMultiselectFilterMode.startsWith;\n        break;\n      case 'contains':\n        this._filterMode = PoMultiselectFilterMode.contains;\n        break;\n      case 'endsWith':\n        this._filterMode = PoMultiselectFilterMode.endsWith;\n        break;\n    }\n  }\n\n  get filterMode() {\n    return this._filterMode;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Deve ser informado o nome da propriedade do objeto que será utilizado para a conversão dos itens apresentados na lista do componente\n   * (`p-options`), esta propriedade será responsável pelo texto de apresentação de cada item da lista.\n   *\n   * Necessário quando informar o serviço como URL e o mesmo não estiver retornando uma lista de objetos no padrão da interface\n   * `PoMultiSelectOption`.\n   *\n   * @default `label`\n   */\n  @Input('p-field-label') set fieldLabel(value: string) {\n    this._fieldLabel = value ? value : PO_MULTISELECT_FIELD_LABEL_DEFAULT;\n\n    if (isTypeof(this.filterService, 'string') && this.service) {\n      this.service.fieldLabel = this._fieldLabel;\n    }\n  }\n\n  get fieldLabel() {\n    return this._fieldLabel;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Deve ser informado o nome da propriedade do objeto que será utilizado para a conversão dos itens apresentados na lista do componente\n   * (`p-options`), esta propriedade será responsável pelo valor de cada item da lista.\n   *\n   * Necessário quando informar o serviço como URL e o mesmo não estiver retornando uma lista de objetos no padrão da interface\n   * `PoMultiSelectOption`.\n   *\n   * @default `value`\n   */\n  @Input('p-field-value') set fieldValue(value: string) {\n    this._fieldValue = value ? value : PO_MULTISELECT_FIELD_VALUE_DEFAULT;\n\n    if (isTypeof(this.filterService, 'string') && this.service) {\n      this.service.fieldValue = this._fieldValue;\n    }\n  }\n\n  get fieldValue() {\n    return this._fieldValue;\n  }\n\n  constructor(\n    languageService: PoLanguageService,\n    protected cd?: ChangeDetectorRef\n  ) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  ngOnInit() {\n    if (this.filterService) {\n      this.setService(this.filterService);\n    }\n\n    this.filterSubject\n      .pipe(\n        debounceTime(this.debounceTime),\n        distinctUntilChanged(),\n        tap(() => (this.isServerSearching = true)),\n        switchMap((search: string) => this.applyFilter(search)),\n        tap(() => (this.isServerSearching = false))\n      )\n      .subscribe();\n\n    this.setLabelsAndValuesOptions();\n    this.validAndSortOptions();\n    this.updateList(this.options);\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  setService(service: PoMultiselectFilter | string) {\n    if (isTypeof(service, 'object')) {\n      this.service = <PoMultiselectFilterService>service;\n    } else {\n      this.service = this.defaultService;\n      this.service.configProperties(<string>service, this.fieldLabel, this.fieldValue);\n    }\n\n    this.isFirstFilter = true;\n  }\n\n  validAndSortOptions() {\n    if (this.options && this.options.length) {\n      PoUtils.removeUndefinedAndNullOptionsWithFieldValue(this.options, this.fieldValue);\n      PoUtils.removeDuplicatedOptionsWithFieldValue(this.options, this.fieldValue);\n      this.setUndefinedLabels(this.options);\n\n      if (this.sort) {\n        PoUtils.sortOptionsByProperty(this.options, this.fieldLabel);\n      }\n    }\n  }\n\n  setUndefinedLabels(options) {\n    options.forEach(option => {\n      if (!option[this.fieldLabel]) {\n        option[this.fieldLabel] = option[this.fieldValue];\n      }\n    });\n  }\n\n  updateList(options: Array<PoMultiselectOption | any>) {\n    if (options) {\n      this.visibleOptionsDropdown = options;\n    }\n  }\n\n  callOnChange(selectedOptions: Array<PoMultiselectOption | any>) {\n    if (this.onModelChange) {\n      this.onModelChange(this.getValueUpdate(selectedOptions));\n      this.eventChange(selectedOptions);\n    }\n    setTimeout(() => {\n      if (this.autoHeight) {\n        this.updateInputHeight();\n      }\n    });\n  }\n\n  eventChange(selectedOptions) {\n    if (selectedOptions && this.lastLengthModel !== selectedOptions.length) {\n      this.change.emit(selectedOptions);\n    }\n    this.lastLengthModel = selectedOptions ? selectedOptions.length : null;\n  }\n\n  getValuesFromOptions(selectedOptions: Array<PoMultiselectOption | any>) {\n    return selectedOptions && selectedOptions.length ? selectedOptions.map(option => option[this.fieldValue]) : [];\n  }\n\n  getLabelByValue(value) {\n    const index = this.options.findIndex(option => option[this.fieldValue] === value);\n    return this.options[index].label;\n  }\n\n  //Transforma o tamanho do input para o tamanho do ícone de loading correspondente\n  mapSizeToIcon(size: string): string {\n    return mapInputSizeToLoadingIcon(size);\n  }\n\n  searchByLabel(search: string, options: Array<PoMultiselectOption | any>, filterMode: PoMultiselectFilterMode) {\n    if (search && options && options.length) {\n      const newOptions: Array<PoMultiselectOption | any> = [];\n      options.forEach(option => {\n        if (option[this.fieldLabel] && this.compareMethod(search, option, filterMode)) {\n          newOptions.push(option);\n        }\n      });\n      this.visibleOptionsDropdown = newOptions;\n    } else {\n      this.visibleOptionsDropdown = [...options];\n    }\n  }\n\n  compareMethod(search: string, option: PoMultiselectOption, filterMode: PoMultiselectFilterMode) {\n    switch (filterMode) {\n      case PoMultiselectFilterMode.startsWith:\n        return this.startsWith(search, option);\n      case PoMultiselectFilterMode.contains:\n        return this.contains(search, option);\n      case PoMultiselectFilterMode.endsWith:\n        return this.endsWith(search, option);\n    }\n  }\n\n  startsWith(search: string, option: PoMultiselectOption) {\n    return option[this.fieldLabel].toLowerCase().startsWith(search.toLowerCase());\n  }\n\n  contains(search: string, option: PoMultiselectOption) {\n    return option[this.fieldLabel].toLowerCase().indexOf(search.toLowerCase()) > -1;\n  }\n\n  endsWith(search: string, option: PoMultiselectOption) {\n    return option[this.fieldLabel].toLowerCase().endsWith(search.toLowerCase());\n  }\n\n  validate(c: AbstractControl): { [key: string]: any } {\n    if (requiredFailed(this.required, this.disabled, c.value)) {\n      this.cd?.markForCheck();\n      return {\n        required: {\n          valid: false\n        }\n      };\n    }\n\n    return null;\n  }\n\n  updateSelectedOptions(newOptions: Array<any>, options = this.options) {\n    this.selectedOptions = [];\n\n    if (newOptions.length === 0) {\n      this.lastLengthModel = undefined;\n    }\n\n    if (this.filterService) {\n      this.selectedOptions = newOptions;\n    } else {\n      newOptions.forEach(newOption => {\n        options.forEach(option => {\n          if (option[this.fieldValue] === newOption[this.fieldValue]) {\n            this.selectedOptions.push(option);\n          }\n        });\n      });\n    }\n\n    this.updateVisibleItems();\n  }\n\n  writeValue(values: any): void {\n    values = this.getValueWrite(values);\n\n    if (values !== null && values !== undefined && !Array.isArray(values)) {\n      values = [values];\n    }\n\n    values = values ?? [];\n\n    if (this.service && values.length) {\n      this.getObjectsByValuesSubscription = this.service.getObjectsByValues(values).subscribe(options => {\n        this.updateSelectedOptions(options);\n        this.callOnChange(this.selectedOptions);\n      });\n    } else {\n      // Validar se todos os items existem entre os options, senão atualizar o model\n      this.updateSelectedOptions(values.map(value => ({ [this.fieldValue]: value })));\n\n      if (this.selectedOptions && this.selectedOptions.length < values.length) {\n        this.callOnChange(this.selectedOptions);\n      }\n    }\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar os estados de habilitado via forms api\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n  }\n\n  registerOnChange(fn: any): void {\n    this.onModelChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onModelTouched = fn;\n  }\n\n  registerOnValidatorChange(fn: () => void) {\n    this.validatorChange = fn;\n  }\n\n  private getValueUpdate(selectedOptions: Array<PoMultiselectOption | any>) {\n    if (this.controlValueWithLabel && selectedOptions?.length) {\n      return selectedOptions.map(option => ({ value: option[this.fieldValue], label: option[this.fieldLabel] }));\n    }\n\n    return this.getValuesFromOptions(selectedOptions);\n  }\n\n  private getValueWrite(data: any) {\n    if (!this.controlValueWithLabel || data == null) {\n      return data;\n    }\n\n    if (Array.isArray(data) && data.every(item => item?.value !== undefined)) {\n      return data.map(option => option.value);\n    }\n\n    if (data?.value !== undefined) {\n      return data.value;\n    }\n\n    return data;\n  }\n\n  private setLabelsAndValuesOptions() {\n    if (this.fieldLabel && this.fieldValue && this.options) {\n      this.options.map(option => {\n        option.label = option[this.fieldLabel];\n        option.value = option[this.fieldValue];\n      });\n    }\n  }\n\n  private validateModel() {\n    if (this.validatorChange) {\n      this.validatorChange();\n    }\n  }\n\n  private updateInputHeight(): void {\n    if (!this.inputElement) return;\n\n    const height = this.inputElement.nativeElement.offsetHeight;\n    if (this.size === PoFieldSize.Small) {\n      this.isExpandedHeight = height > 32;\n    } else {\n      this.isExpandedHeight = height > 44;\n    }\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n\n  abstract applyFilter(value?: string): Observable<Array<PoMultiselectOption | any>>;\n  abstract updateVisibleItems(): void;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PoMultiselectFilter } from './interfaces/po-multiselect-filter.interface';\nimport { PoMultiselectOption } from './interfaces/po-multiselect-option.interface';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoMultiselectFilterService implements PoMultiselectFilter {\n  private readonly http = inject(HttpClient);\n\n  fieldLabel: string = 'label';\n  fieldValue: string = 'value';\n\n  private _url: string;\n  private readonly messages = [];\n\n  get url(): string {\n    return this._url;\n  }\n\n  getFilteredData({ value }: any): Observable<Array<PoMultiselectOption | any>> {\n    const params = value ? { filter: value } : {};\n    return this.http\n      .get(this.url, {\n        params\n      })\n      .pipe(map(response => this.parseToArrayMultiselectOptions(response['items'])));\n  }\n\n  getObjectsByValues(value: Array<string | number>): Observable<Array<PoMultiselectOption | any>> {\n    return this.http\n      .get(`${this.url}?${this.fieldValue}=${value.toString()}`)\n      .pipe(map(response => this.parseToArrayMultiselectOptions(response['items'])));\n  }\n\n  configProperties(url: string, fieldLabel: string, fieldValue: string) {\n    this._url = url;\n    this.fieldLabel = fieldLabel;\n    this.fieldValue = fieldValue;\n  }\n\n  private parseToArrayMultiselectOptions(items: Array<any>): Array<PoMultiselectOption | any> {\n    if (items && items.length > 0) {\n      return items.map(item => this.parseToMultiselectOption(item));\n    }\n\n    return [];\n  }\n\n  private parseToMultiselectOption(item: any): PoMultiselectOption | any {\n    const label = item[this.fieldLabel];\n    const value = item[this.fieldValue];\n\n    return { [this.fieldLabel]: label, [this.fieldValue]: value };\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef,\n  ViewChild,\n  inject\n} from '@angular/core';\n\nimport { PoMultiselectLiterals } from '../interfaces/po-multiselect-literals.interface';\nimport { PoMultiselectOption } from '../interfaces/po-multiselect-option.interface';\nimport { PoListBoxComponent } from './../../../po-listbox/po-listbox.component';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente que construíra o dropdown, contendo o campo de pesquisa e os itens para seleção.\n */\n@Component({\n  selector: 'po-multiselect-dropdown',\n  templateUrl: './po-multiselect-dropdown.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoMultiselectDropdownComponent {\n  private readonly cd = inject(ChangeDetectorRef);\n\n  /** Propriedade que indica se deve exibir o loading. */\n  @Input('p-searching') isServerSearching?: boolean = false;\n\n  /** Propriedade que indica se o campo de pesquisa deverá ser escondido. */\n  @Input('p-hide-search') hideSearch?: boolean = false;\n\n  /** Propriedade que que recebe as literais definidas no componente `po-multiselect`. */\n  @Input('p-literals') literals?: PoMultiselectLiterals;\n\n  /** Placeholder do campo de pesquisa. */\n  @Input('p-placeholder-search') placeholderSearch: string;\n\n  /** Propriedade que recebe a lista de opções selecionadas. */\n  @Input('p-selected-options') selectedOptions: Array<any> = [];\n\n  /** Propriedade que recebe a lista com todas as opções. */\n  @Input('p-options') options: Array<PoMultiselectOption | any> = [];\n\n  /** Propriedade que recebe a lista de opções que deverão ser criadas no dropdown. */\n  @Input('p-visible-options') visibleOptions: Array<PoMultiselectOption | any> = [];\n\n  /** Propriedade que indica se o campo \"Selecionar todos\" deverá ser escondido. */\n  @Input('p-hide-select-all') hideSelectAll?: boolean = false;\n\n  @Input('p-field-value') fieldValue: string;\n\n  @Input('p-field-label') fieldLabel: string;\n\n  @Input('p-multiselect-template') multiselectTemplate: TemplateRef<any> | any;\n\n  @Input('p-container-width') containerWidth: number;\n\n  /** Tamanho do componente. */\n  @Input('p-size') size: string;\n\n  /** Evento disparado a cada tecla digitada na pesquisa. */\n  @Output('p-change-search') changeSearch = new EventEmitter();\n\n  /** Evento disparado a cada alteração na lista das opções selecionadas. */\n  @Output('p-change') change = new EventEmitter();\n\n  /**\n   * Evento disparado quando for detectada uma ação que necessite fechar o dropdown.\n   * Por exemplo, no caso de ser teclado TAB dentro do dropdown, então é disparado este evento\n   * para notificar o componente principal que deve fechar o dropdown.\n   */\n  @Output('p-close-dropdown') closeDropdown = new EventEmitter();\n\n  @ViewChild('container', { read: ElementRef, static: true }) container: ElementRef;\n  @ViewChild('divElement', { read: ElementRef, static: true }) divElement: ElementRef;\n  @ViewChild('listbox') listbox: PoListBoxComponent;\n\n  scrollTop = 0;\n  show: boolean = false;\n\n  get hasOptions() {\n    return !!this.options?.length;\n  }\n\n  scrollTo(index) {\n    this.scrollTop = index <= 2 ? 0 : index * 44 - 88;\n    this.cd.markForCheck();\n  }\n\n  isSelectedItem(option: PoMultiselectOption) {\n    return this.selectedOptions.some(selectedItem => selectedItem[this.fieldValue] === option[this.fieldValue]);\n  }\n\n  clickItem(check, options?) {\n    if (options) {\n      this.updateSelectedValues(check, options);\n    } else {\n      const { selected, option } = check;\n      this.updateSelectedValues(selected, option);\n    }\n  }\n\n  onClickSelectAll() {\n    const selectedValues = this.selectedOptions.map(({ [this.fieldValue]: value }) => value);\n\n    if (this.everyVisibleOptionsSelected(selectedValues)) {\n      this.selectedOptions = [];\n    } else {\n      this.selectedOptions = this.uniqueSelectedOptions(selectedValues);\n    }\n    this.change.emit(this.selectedOptions);\n  }\n\n  updateSelectedValues(checked, option) {\n    if (checked) {\n      this.selectedOptions.push(option);\n    } else {\n      this.selectedOptions = this.selectedOptions.filter(\n        selectedOption => selectedOption[this.fieldValue] !== option[this.fieldValue]\n      );\n    }\n    this.change.emit(this.selectedOptions);\n  }\n\n  everyVisibleOptionsSelected(selectedValues) {\n    return this.visibleOptions?.every(visibleOption => selectedValues.includes(visibleOption[this.fieldValue]));\n  }\n\n  someVisibleOptionsSelected(selectedValues) {\n    return this.visibleOptions?.some(visibleOption => selectedValues.includes(visibleOption[this.fieldValue]));\n  }\n\n  getStateSelectAll() {\n    const selectedValues = this.selectedOptions.map(({ [this.fieldValue]: value }) => value);\n\n    if (this.everyVisibleOptionsSelected(selectedValues)) {\n      return true;\n    } else if (this.someVisibleOptionsSelected(selectedValues)) {\n      return null;\n    } else {\n      return false;\n    }\n  }\n\n  callChangeSearch(event) {\n    this.changeSearch.emit(event);\n  }\n\n  controlVisibility(toOpen) {\n    this.show = toOpen;\n\n    setTimeout(() => {\n      if (toOpen && this.listbox?.searchElement && !this.hideSearch) {\n        this.listbox.searchElement.setFocus();\n        this.listbox.searchElement.clean();\n      }\n    });\n    this.cd.markForCheck();\n  }\n\n  private uniqueSelectedOptions(selectedValues) {\n    const newSelectedOptions = [...this.selectedOptions];\n\n    for (const visibleOption of this.visibleOptions) {\n      if (!selectedValues.includes(visibleOption[this.fieldValue])) {\n        newSelectedOptions.push(visibleOption);\n      }\n    }\n\n    return newSelectedOptions;\n  }\n}\n","<div #container class=\"po-multiselect-container\" [hidden]=\"!show\">\n  <div [scrollTop]=\"scrollTop\" #divElement>\n    <ng-container>\n      <po-listbox\n        #listbox\n        p-type=\"check\"\n        [p-items]=\"visibleOptions\"\n        [p-selected-options]=\"selectedOptions\"\n        [p-checkboxAllValue]=\"getStateSelectAll()\"\n        [p-field-value]=\"fieldValue\"\n        [p-field-value-search]=\"fieldValue\"\n        [p-field-label]=\"fieldLabel\"\n        [p-literal-search]=\"literals\"\n        [p-literals]=\"literals\"\n        [p-is-searching]=\"isServerSearching\"\n        [p-hide-search]=\"hideSearch\"\n        [p-hide-select-all]=\"hideSelectAll\"\n        [p-template]=\"multiselectTemplate\"\n        [p-placeholder-search]=\"placeholderSearch\"\n        [p-size]=\"size\"\n        (p-change)=\"clickItem($event)\"\n        (p-change-all)=\"onClickSelectAll()\"\n        (p-change-search)=\"callChangeSearch($event)\"\n        (p-close)=\"closeDropdown.emit()\"\n        [p-container-width]=\"containerWidth\"\n      >\n      </po-listbox>\n    </ng-container>\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  DoCheck,\n  ElementRef,\n  OnChanges,\n  OnDestroy,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  forwardRef,\n  inject\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { Observable, Subscription, fromEvent, of } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\n\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport { PoKeyCodeEnum } from './../../../enums/po-key-code.enum';\nimport { PoControlPositionService } from './../../../services/po-control-position/po-control-position.service';\nimport { setHelperSettings, PoUtils } from './../../../utils/util';\n\nimport { poLocaleDefault } from '../../../services/po-language/po-language.constant';\nimport { PoMultiselectOption } from './interfaces/po-multiselect-option.interface';\nimport { PoMultiselectBaseComponent } from './po-multiselect-base.component';\nimport { PoMultiselectFilterService } from './po-multiselect-filter.service';\nimport { PoMultiselectOptionTemplateDirective } from './po-multiselect-option-template/po-multiselect-option-template.directive';\nimport { PoHelperComponent } from '../../po-helper';\n\nconst poMultiselectContainerOffset = 8;\nconst poMultiselectInputPaddingRight = 52;\nconst poMultiselectSpaceBetweenTags = 8;\n\nconst literalsTagRemoveOthers = {\n  pt: {\n    remove: 'Remover todos os itens selecionados'\n  },\n  ru: {\n    remove: 'Удалить все выбранные элементы'\n  },\n  es: {\n    remove: 'Eliminar todos los elementos seleccionados'\n  },\n  en: {\n    remove: 'Clear all selected items'\n  }\n};\n\n/* istanbul ignore next */\nconst providers = [\n  PoMultiselectFilterService,\n  PoControlPositionService,\n  {\n    provide: NG_VALUE_ACCESSOR,\n    // eslint-disable-next-line\n    useExisting: forwardRef(() => PoMultiselectComponent),\n    multi: true\n  },\n  {\n    provide: NG_VALIDATORS,\n    // eslint-disable-next-line\n    useExisting: forwardRef(() => PoMultiselectComponent),\n    multi: true\n  }\n];\n\n/**\n * @docsExtends PoMultiselectBaseComponent\n *\n * @example\n *\n * <example name=\"po-multiselect-basic\" title=\"PO Multiselect Basic\">\n *   <file name=\"sample-po-multiselect-basic/sample-po-multiselect-basic.component.html\"> </file>\n *   <file name=\"sample-po-multiselect-basic/sample-po-multiselect-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-multiselect-labs\" title=\"PO Multiselect Labs\">\n *   <file name=\"sample-po-multiselect-labs/sample-po-multiselect-labs.component.html\"> </file>\n *   <file name=\"sample-po-multiselect-labs/sample-po-multiselect-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-multiselect-vacation\" title=\"PO Multiselect - Vacation\">\n *   <file name=\"sample-po-multiselect-vacation/sample-po-multiselect-vacation.component.html\"> </file>\n *   <file name=\"sample-po-multiselect-vacation/sample-po-multiselect-vacation.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-multiselect-vacation-reactive-form\" title=\"PO Multiselect - Vacation Reactive Form\">\n *   <file name=\"sample-po-multiselect-vacation-reactive-form/sample-po-multiselect-vacation-reactive-form.component.html\"> </file>\n *   <file name=\"sample-po-multiselect-vacation-reactive-form/sample-po-multiselect-vacation-reactive-form.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-multiselect-template\" title=\"PO Multiselect - Template\">\n *   <file name=\"sample-po-multiselect-template/sample-po-multiselect-template.component.html\"> </file>\n *   <file name=\"sample-po-multiselect-template/sample-po-multiselect-template.component.ts\"> </file>\n *   <file name=\"sample-po-multiselect-template/sample-po-multiselect-template.component.css\"> </file>\n * </example>\n *\n * <example name=\"po-multiselect-heroes\" title=\"PO Multiselect - Heroes - using API\">\n *   <file name=\"sample-po-multiselect-heroes/sample-po-multiselect-heroes.component.html\"> </file>\n *   <file name=\"sample-po-multiselect-heroes/sample-po-multiselect-heroes.component.ts\"> </file>\n *   <file name=\"sample-po-multiselect-heroes/sample-po-multiselect-heroes.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-multiselect-any-array\" title=\"PO Multiselect - Array Any\">\n *   <file name=\"sample-po-multiselect-any-array/sample-po-multiselect-any-array.component.html\"> </file>\n *   <file name=\"sample-po-multiselect-any-array/sample-po-multiselect-any-array.component.ts\"> </file>\n * </example>\n *\n */\n@Component({\n  selector: 'po-multiselect',\n  templateUrl: './po-multiselect.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers,\n  standalone: false\n})\nexport class PoMultiselectComponent\n  extends PoMultiselectBaseComponent\n  implements AfterViewInit, DoCheck, OnDestroy, OnChanges\n{\n  private readonly renderer = inject(Renderer2);\n  private readonly changeDetector: ChangeDetectorRef;\n  private readonly el = inject(ElementRef);\n  private readonly controlPosition = inject(PoControlPositionService);\n  defaultService = inject(PoMultiselectFilterService);\n\n  @ContentChild(PoMultiselectOptionTemplateDirective, { static: true })\n  multiselectOptionTemplate: PoMultiselectOptionTemplateDirective;\n\n  @ViewChild('dropdownElement', { read: ElementRef }) dropdownElement: ElementRef;\n  @ViewChild('dropdownElement') dropdown;\n  @ViewChild('iconElement', { read: ElementRef, static: true }) iconElement: ElementRef;\n  @ViewChild('outerContainer ', { read: ElementRef }) outerContainer: ElementRef;\n  @ViewChild('helperEl', { read: PoHelperComponent, static: false }) helperEl?: PoHelperComponent;\n\n  literalsTag;\n  dropdownIcon: string = 'ICON_ARROW_DOWN';\n  dropdownOpen: boolean = false;\n  initialized = false;\n  hasMoreTag: boolean;\n  timeoutResize;\n  visibleElement = false;\n  containerWidth: number;\n\n  private subscription: Subscription = new Subscription();\n  private enterCloseTag = false;\n  private initCalculateItems = true;\n  private isCalculateVisibleItems: boolean = true;\n  private cacheOptions: Array<PoMultiselectOption | any>;\n  private focusOnTag = false;\n\n  constructor() {\n    const changeDetector = inject(ChangeDetectorRef);\n    const languageService = inject(PoLanguageService);\n\n    super(languageService, changeDetector);\n    this.changeDetector = changeDetector;\n\n    const language = languageService.getShortLanguage();\n    this.literalsTag = {\n      ...literalsTagRemoveOthers[poLocaleDefault],\n      ...literalsTagRemoveOthers[language]\n    };\n  }\n\n  ngAfterViewInit() {\n    if (this.autoFocus) {\n      this.focus();\n    }\n    this.initialized = true;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n    if (this.filterService && (changes.filterService || changes.fieldValue || changes.fieldLabel)) {\n      this.setService(this.filterService);\n    }\n  }\n\n  ngDoCheck() {\n    const inputWidth = this.inputElement.nativeElement.offsetWidth;\n    // Permite que as tags sejam calculadas na primeira vez que o componente torna-se visível,\n    // evitando com isso, problemas com Tabs ou Divs que iniciem escondidas.\n    if ((inputWidth && !this.visibleElement && this.initialized) || (inputWidth && this.isCalculateVisibleItems)) {\n      this.debounceResize();\n      this.visibleElement = true;\n    }\n  }\n\n  ngOnDestroy() {\n    this.removeListeners();\n    this.getObjectsByValuesSubscription?.unsubscribe();\n    this.filterSubject?.unsubscribe();\n    this.subscription.unsubscribe();\n  }\n\n  emitAdditionalHelp() {\n    if (this.label && this.isAdditionalHelpEventTriggered()) {\n      this.additionalHelp.emit();\n    }\n  }\n\n  /**\n   * Função que atribui foco ao componente.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoMultiselectComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoMultiselectComponent, { static: true }) multiselect: PoMultiselectComponent;\n   *\n   * focusMultiselect() {\n   *   this.multiselect.focus();\n   * }\n   * ```\n   */\n  focus(): void {\n    if (!this.disabled) {\n      this.inputElement.nativeElement.focus();\n    }\n  }\n\n  getAdditionalHelpTooltip() {\n    return this.isAdditionalHelpEventTriggered() ? null : this.additionalHelpTooltip;\n  }\n\n  getInputWidth() {\n    return this.el.nativeElement.querySelector('.po-multiselect-input').offsetWidth - poMultiselectInputPaddingRight;\n  }\n\n  getTagsWidth() {\n    const tags = this.el.nativeElement.querySelectorAll('po-tag');\n    return Array.from(tags).map(tag => tag['offsetWidth']);\n  }\n\n  getErrorPattern() {\n    return this.fieldErrorMessage && this.hasInvalidClass() ? this.fieldErrorMessage : '';\n  }\n\n  hasInvalidClass() {\n    return (\n      this.el.nativeElement.classList.contains('ng-invalid') && this.el.nativeElement.classList.contains('ng-dirty')\n    );\n  }\n\n  calculateVisibleItems() {\n    this.hasMoreTag = false;\n    const tagsWidth = this.getTagsWidth();\n    const inputWidth = this.getInputWidth();\n    const extraTagSize = 63;\n    const tagsVisible = tagsWidth[0];\n\n    this.visibleTags = [];\n\n    if (inputWidth > 0) {\n      let sum = 0;\n      let i = 0;\n      for (i = 0; i < this.selectedOptions.length; i++) {\n        sum += tagsWidth[i] + poMultiselectSpaceBetweenTags;\n        this.visibleTags.push(this.selectedOptions[i]);\n\n        if (sum > inputWidth) {\n          sum -= tagsWidth[i];\n          this.isCalculateVisibleItems = false;\n          break;\n        }\n      }\n\n      if (tagsVisible || !this.selectedOptions.length) {\n        if (i === this.selectedOptions.length) {\n          this.isCalculateVisibleItems = false;\n          return;\n        }\n\n        this.hasMoreTag = true;\n        if (sum + extraTagSize > inputWidth) {\n          this.visibleTags.splice(-2, 2);\n          const label = '+' + (this.selectedOptions.length + 1 - i).toString();\n          this.visibleTags.push({ [this.fieldValue]: '', [this.fieldLabel]: label });\n        } else {\n          this.visibleTags.splice(-1, 1);\n          const label = '+' + (this.selectedOptions.length - i).toString();\n          this.visibleTags.push({ [this.fieldValue]: '', [this.fieldLabel]: label });\n        }\n      }\n      if (this.initCalculateItems) {\n        setTimeout(() => {\n          this.handleKeyboardNavigationTag();\n        }, 300);\n      }\n      this.initCalculateItems = false;\n    }\n    this.changeDetector.markForCheck();\n  }\n\n  changeItems(changedItems) {\n    this.updateSelectedOptions(changedItems);\n    this.callOnChange(this.selectedOptions);\n\n    if (this.autoHeight && this.dropdownOpen) {\n      this.changeDetector.detectChanges();\n      this.adjustContainerPosition();\n    }\n    setTimeout(() => {\n      this.handleKeyboardNavigationTag();\n    }, 300);\n  }\n\n  updateVisibleItems() {\n    if (this.selectedOptions) {\n      this.visibleTags = [].concat(this.selectedOptions);\n    }\n\n    this.debounceResize();\n\n    // quando estiver dentro de modal\n    if (!this.inputElement.nativeElement.offsetWidth) {\n      this.isCalculateVisibleItems = true;\n    }\n  }\n\n  debounceResize() {\n    if (!this.autoHeight) {\n      clearTimeout(this.timeoutResize);\n      this.timeoutResize = setTimeout(() => {\n        this.calculateVisibleItems();\n      }, 200);\n    }\n    this.changeDetector.markForCheck();\n  }\n\n  onBlur(event: any) {\n    if (\n      typeof this.inputElement.nativeElement.getAttribute('aria-label') === 'string' &&\n      this.inputElement.nativeElement.getAttribute('aria-label').includes('Unselected')\n    ) {\n      this.inputElement.nativeElement.setAttribute('aria-label', this.label ? this.label : '');\n    }\n    this.onModelTouched?.();\n\n    if (event.type === 'blur') {\n      this.blur.emit();\n    }\n  }\n\n  onKeyDown(event?: any) {\n    const isFieldFocused = document.activeElement === this.inputElement.nativeElement;\n\n    if (event.shiftKey && event.keyCode === PoKeyCodeEnum.tab && !this.focusOnTag) {\n      this.controlDropdownVisibility(false);\n    }\n    this.focusOnTag = false;\n\n    if (event.keyCode === PoKeyCodeEnum.tab && this.appendBox && this.dropdownOpen) {\n      event.preventDefault();\n      this.focusOnFirstItem();\n      return;\n    }\n\n    if (event.keyCode === PoKeyCodeEnum.esc) {\n      event.preventDefault();\n      this.controlDropdownVisibility(false);\n      return;\n    }\n\n    if (event.keyCode === PoKeyCodeEnum.arrowDown) {\n      event.preventDefault();\n      this.controlDropdownVisibility(true);\n      this.dropdown?.listbox?.setFocus();\n      return;\n    }\n\n    if (event.keyCode === PoKeyCodeEnum.enter && !this.enterCloseTag) {\n      if (this.visibleTags.length === 0) {\n        this.toggleDropdownVisibility();\n        this.focus();\n        return;\n      } else {\n        event.preventDefault();\n        this.toggleDropdownVisibility();\n        return;\n      }\n    }\n\n    if (event.keyCode === PoKeyCodeEnum.space) {\n      event.preventDefault();\n      this.toggleDropdownVisibility();\n    }\n    this.enterCloseTag = false;\n\n    if (isFieldFocused) {\n      this.keydown.emit(event);\n    }\n  }\n\n  toggleDropdownVisibility() {\n    if (this.disabled) {\n      return;\n    }\n\n    if (this.filterService) {\n      this.applyFilterInFirstClick();\n    }\n\n    this.controlDropdownVisibility(!this.dropdownOpen);\n  }\n\n  onKeyDownDropdown(event: KeyboardEvent, index: number) {\n    if (event.key === 'Tab' && event.target['className'].includes('po-listbox-item-type-check')) {\n      event.preventDefault();\n      this.inputElement.nativeElement.focus();\n    }\n\n    if (event.key === 'Escape') {\n      event.preventDefault();\n      this.controlDropdownVisibility(false);\n      setTimeout(() => {\n        this.inputElement.nativeElement.focus();\n      }, 50);\n    }\n  }\n\n  openDropdown(toOpen) {\n    if (toOpen && !this.disabled) {\n      this.controlDropdownVisibility(true);\n    }\n  }\n\n  controlDropdownVisibility(toOpen: boolean) {\n    toOpen ? this.open() : this.close();\n  }\n\n  scrollToSelectedOptions() {\n    if (this.selectedOptions && this.selectedOptions.length) {\n      const index = this.options.findIndex(\n        option => option[this.fieldValue] === this.selectedOptions[0][this.fieldValue]\n      );\n      this.dropdown.scrollTo(index);\n    }\n  }\n\n  setVisibleOptionsDropdown(options) {\n    this.visibleOptionsDropdown = options;\n    this.changeDetector.markForCheck();\n  }\n\n  changeSearch(event) {\n    if (event.event.keyCode === PoKeyCodeEnum.arrowDown || event.event.keyCode === PoKeyCodeEnum.tab) {\n      this.focusOnFirstItem();\n    }\n\n    if (event && event[this.fieldValue] !== undefined) {\n      if (this.filterService) {\n        this.filterSubject.next(event[this.fieldValue]);\n      } else {\n        this.searchByLabel(event[this.fieldValue], this.options, this.filterMode);\n      }\n    } else {\n      this.setVisibleOptionsDropdown(this.options);\n    }\n\n    // timeout necessário para reposicionar corretamente quando dropdown estiver pra cima do input e realizar busca no input\n    setTimeout(() => this.adjustContainerPosition());\n  }\n\n  focusOnFirstItem() {\n    const items = this.dropdown.listbox.element.nativeElement.querySelectorAll('.po-listbox-item-type-check');\n    const item = items.length > 0 ? (items[0] as HTMLElement) : null;\n    if (item) {\n      item.focus();\n    } else {\n      this.close();\n      this.inputElement.nativeElement.focus();\n    }\n  }\n\n  closeTag(value, event) {\n    let index;\n    this.enterCloseTag = true;\n    if (value === null || value === undefined || (typeof value === 'string' && value.includes('+'))) {\n      index = null;\n      const itemsNotInVisibleTags = this.selectedOptions.filter(option => !this.visibleTags.includes(option));\n      for (const option of this.visibleTags) {\n        if (!this.selectedOptions.includes(option)) {\n          this.selectedOptions.splice(this.visibleTags.length - 1, itemsNotInVisibleTags.length);\n          this.updateVisibleItems();\n          this.callOnChange(this.selectedOptions);\n        }\n      }\n    } else {\n      index = this.selectedOptions.findIndex(option => option[this.fieldValue] === value);\n      this.selectedOptions.splice(index, 1);\n      this.updateVisibleItems();\n      this.callOnChange(this.selectedOptions);\n    }\n\n    setTimeout(() => {\n      this.focusOnNextTag(index, event);\n    }, 300);\n  }\n\n  /**\n   * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n   * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `p-keydown`.\n   *\n   * > Exibe ou oculta o conteúdo do componente `po-helper` quando o componente estiver com foco.\n   *\n   * ```\n   * // Exemplo com p-label e p-helper\n   * <po-multiselect\n   *  #multiselect\n   *  ...\n   *  p-label=\"Label do multiselect\"\n   *  [p-helper]=\"helperOptions\"\n   *  (p-keydown)=\"onKeyDown($event, multiselect)\"\n   * ></po-multiselect>\n   * ```\n   * ```\n   * ...\n   * onKeyDown(event: KeyboardEvent, inp: PoMultiselectComponent): void {\n   *  if (event.code === 'F9') {\n   *    inp.showAdditionalHelp();\n   *  }\n   * }\n   * ```\n   */\n  showAdditionalHelp(): boolean {\n    this.displayAdditionalHelp = !this.displayAdditionalHelp;\n    const helper = this.poHelperComponent();\n    const isHelpEvt = this.isAdditionalHelpEventTriggered();\n    if (!this.label && (helper || this.additionalHelpTooltip || isHelpEvt)) {\n      if (isHelpEvt) {\n        this.additionalHelp.emit();\n      }\n      if (typeof helper !== 'string' && typeof helper?.eventOnClick === 'function') {\n        helper.eventOnClick();\n        return;\n      }\n      if (this.helperEl?.helperIsVisible()) {\n        this.helperEl?.closeHelperPopover();\n        return;\n      }\n      this.helperEl?.openHelperPopover();\n      return;\n    }\n    return this.displayAdditionalHelp;\n  }\n\n  wasClickedOnToggle(event: MouseEvent): void {\n    if (\n      this.dropdownOpen &&\n      !this.inputElement.nativeElement.contains(event.target) &&\n      !this.iconElement?.nativeElement?.contains(event.target) &&\n      !this.dropdownElement?.nativeElement?.contains(event.target)\n    ) {\n      this.controlDropdownVisibility(false);\n    }\n  }\n\n  applyFilter(value: string = ''): Observable<Array<PoMultiselectOption | any>> {\n    const param = { property: this.fieldLabel, value: value };\n    return this.service.getFilteredData(param).pipe(\n      catchError(err => {\n        this.isServerSearching = false;\n        return of([]);\n      }),\n      tap((options: Array<PoMultiselectOption | any>) => {\n        this.setOptionsByApplyFilter(options);\n      })\n    );\n  }\n\n  setHelper(label?: string, additionalHelpTooltip?: string) {\n    return setHelperSettings(\n      label,\n      additionalHelpTooltip,\n      this.poHelperComponent(),\n      this.size,\n      this.isAdditionalHelpEventTriggered() ? this.additionalHelp : undefined\n    );\n  }\n\n  private applyFilterInFirstClick() {\n    if (this.isFirstFilter) {\n      this.isServerSearching = true;\n\n      // necessario enviar um objeto string vazia para refazer a busca, quando alterar filterService, fieldValue e fieldLabel\n      // pois temos o distinctUntilChange no pipe do filterSubject\n      /* eslint-disable no-new-wrappers */\n      this.filterSubject.next(new String());\n    } else {\n      this.options = [...this.cacheOptions];\n    }\n  }\n\n  private setOptionsByApplyFilter(items: Array<PoMultiselectOption | any>) {\n    if (this.isFirstFilter) {\n      this.cacheOptions = [...items];\n      this.isFirstFilter = false;\n    }\n\n    this.options = [...items];\n    this.setVisibleOptionsDropdown(this.options);\n  }\n\n  private adjustContainerPosition(): void {\n    this.controlPosition.adjustPosition(this.listboxControlPosition);\n  }\n\n  private close(): void {\n    this.dropdownIcon = 'ICON_ARROW_DOWN';\n    this.dropdown?.listbox?.searchElement?.resetKeys();\n    this.dropdownOpen = false;\n\n    this.dropdown?.controlVisibility(false);\n    this.setVisibleOptionsDropdown(this.options);\n\n    this.removeListeners();\n  }\n\n  private focusOnNextTag(indexClosed: number, clickOrEnter: string) {\n    if (clickOrEnter === 'enter') {\n      const tagRemoveElements: Array<any> = this.el.nativeElement.querySelectorAll('.po-tag-remove');\n      indexClosed = indexClosed || indexClosed === 0 ? indexClosed : tagRemoveElements.length;\n      if (tagRemoveElements.length === 0) {\n        this.inputElement.nativeElement.focus();\n        this.inputElement.nativeElement.setAttribute('aria-label', `Unselected items ${this.label}`);\n        this.controlDropdownVisibility(true);\n      }\n      this.focusOnRemoveTag(tagRemoveElements, indexClosed);\n    } else {\n      indexClosed = 0;\n    }\n    this.handleKeyboardNavigationTag(indexClosed);\n  }\n\n  private focusOnRemoveTag(tag: any, indexClosed: number) {\n    if (tag.length === indexClosed) {\n      tag[indexClosed - 1]?.focus();\n    } else {\n      tag[indexClosed]?.focus();\n    }\n  }\n\n  public handleKeyboardNavigationTag(initialIndex = 0) {\n    this.subscription.unsubscribe();\n    this.subscription = new Subscription();\n    const tagRemoveElements = this.el.nativeElement.querySelectorAll('.po-tag-remove');\n    this.initializeTagRemoveElements(tagRemoveElements, initialIndex);\n  }\n\n  private setTabIndex(element, tabIndex) {\n    element.setAttribute('tabindex', tabIndex);\n  }\n\n  private handleArrowLeft(tagRemoveElements, index) {\n    if (index > 0) {\n      this.setTabIndex(tagRemoveElements[index], -1);\n      tagRemoveElements[index - 1].focus();\n      this.setTabIndex(tagRemoveElements[index - 1], 0);\n    }\n  }\n\n  private handleArrowRight(tagRemoveElements, index) {\n    if (index < tagRemoveElements.length - 1) {\n      this.setTabIndex(tagRemoveElements[index], -1);\n      tagRemoveElements[index + 1].focus();\n      this.setTabIndex(tagRemoveElements[index + 1], 0);\n    }\n  }\n\n  private handleKeyDown(event: KeyboardEvent, tagRemoveElements, index) {\n    const KEY_SPACE = 'Space';\n    const KEY_ARROW_LEFT = 'ArrowLeft';\n    const KEY_ARROW_RIGHT = 'ArrowRight';\n    this.focusOnTag = true;\n\n    if (event.code === KEY_SPACE) {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n\n    if (event.key === KEY_ARROW_LEFT) {\n      this.handleArrowLeft(tagRemoveElements, index);\n    } else if (event.key === KEY_ARROW_RIGHT) {\n      this.handleArrowRight(tagRemoveElements, index);\n    }\n  }\n\n  private initializeTagRemoveElements(tagRemoveElements, initialIndex) {\n    tagRemoveElements.forEach((tagRemoveElement, index) => {\n      if (index === initialIndex) {\n        this.setTabIndex(tagRemoveElements[initialIndex], 0);\n      } else if (tagRemoveElements.length === initialIndex) {\n        this.setTabIndex(tagRemoveElements[initialIndex - 1], 0);\n      } else {\n        this.setTabIndex(tagRemoveElement, -1);\n      }\n\n      this.subscription.add(\n        fromEvent(tagRemoveElement, 'keydown').subscribe((event: KeyboardEvent) => {\n          this.handleKeyDown(event, tagRemoveElements, index);\n        })\n      );\n    });\n  }\n\n  private initializeListeners(): void {\n    this.clickOutListener = this.renderer.listen('document', 'click', (event: MouseEvent) => {\n      this.wasClickedOnToggle(event);\n    });\n\n    this.resizeListener = this.renderer.listen('window', 'resize', () => {\n      this.updateVisibleItems();\n\n      PoUtils.isMobile() ? this.adjustContainerPosition() : this.close();\n    });\n\n    window.addEventListener('scroll', this.onScroll, true);\n  }\n\n  private isAdditionalHelpEventTriggered(): boolean {\n    return (\n      this.additionalHelpEventTrigger === 'event' ||\n      (this.additionalHelpEventTrigger === undefined && this.additionalHelp.observed)\n    );\n  }\n\n  private readonly onScroll = (): void => {\n    this.adjustContainerPosition();\n  };\n\n  private open(): void {\n    this.dropdownIcon = 'ICON_ARROW_UP';\n    this.dropdownOpen = true;\n\n    this.dropdown.controlVisibility(true);\n    this.setVisibleOptionsDropdown(this.options);\n    this.initializeListeners();\n    this.scrollToSelectedOptions();\n\n    this.changeDetector.detectChanges();\n    this.setPositionDropdown();\n\n    if (this.dropdownOpen) {\n      this.setContainerWidth();\n    }\n  }\n\n  private removeListeners(): void {\n    if (this.clickOutListener) {\n      this.clickOutListener();\n    }\n\n    if (this.resizeListener) {\n      this.resizeListener();\n    }\n\n    window.removeEventListener('scroll', this.onScroll, true);\n    this.changeDetector.markForCheck();\n  }\n\n  private setContainerWidth(): void {\n    if (this.outerContainer) {\n      this.containerWidth = this.outerContainer.nativeElement.offsetWidth;\n    }\n  }\n\n  private setPositionDropdown(): void {\n    this.controlPosition.setElements(\n      this.dropdown.container.nativeElement,\n      poMultiselectContainerOffset,\n      this.inputElement,\n      ['top', 'bottom'],\n      true\n    );\n\n    this.adjustContainerPosition();\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n@let needsHelper = !label && (poHelperComponent() || poHelper.hideAdditionalHelp);\n\n<div #outerContainer>\n  <po-field-container\n    [p-disabled]=\"isDisabled\"\n    [p-label]=\"label\"\n    [p-optional]=\"optional\"\n    [p-required]=\"required\"\n    [p-show-required]=\"showRequired\"\n    [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n    [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n    [p-size]=\"size\"\n    [p-text-wrap]=\"labelTextWrap()\"\n    [p-compact-label]=\"compactLabel()\"\n  >\n    <div\n      cdkOverlayOrigin\n      #trigger=\"cdkOverlayOrigin\"\n      class=\"po-field-container-content\"\n      [class.po-multiselect-show]=\"dropdownOpen\"\n    >\n      <div class=\"po-field-container-content-helper-wrapper\">\n        <div class=\"po-field-container-input\">\n          <div\n            #inputElement\n            [tabindex]=\"isDisabled ? -1 : 0\"\n            [attr.disabled]=\"isDisabled\"\n            [attr.aria-label]=\"label\"\n            [attr.data-focused-element]=\"!isDisabled\"\n            [attr.data-inactive-component]=\"isDisabled\"\n            [attr.p-size]=\"size\"\n            class=\"po-input-icon-right po-multiselect-input\"\n            [class.po-multiselect-input-auto]=\"autoHeight\"\n            [class.po-multiselect-input-static]=\"!autoHeight\"\n            [class.po-multiselect-input-disabled]=\"isDisabled\"\n            [class.po-multiselect-input-font]=\"!disabled && !visibleTags?.length\"\n            [class.po-multiselect-input-auto-dynamic-height]=\"isExpandedHeight\"\n            (keydown)=\"onKeyDown($event)\"\n            (click)=\"!isDisabled && toggleDropdownVisibility()\"\n            (blur)=\"onBlur($event)\"\n          >\n            @if (!disabled && !loading && !visibleTags?.length) {\n              <div class=\"po-multiselect-input-placeholder\" ria-hidden=\"true\">\n                <span>{{ placeholder ? placeholder : literals.selectItem }}</span>\n              </div>\n            }\n\n            @for (tag of visibleTags; track tag; let i = $index) {\n              <po-tag\n                [p-value]=\"tag[fieldLabel]\"\n                [p-literals]=\"i + 1 === visibleTags.length && hasMoreTag ? literalsTag : undefined\"\n                [p-removable]=\"true\"\n                [class.po-clickable]=\"tag[fieldValue] === '' && !disabled\"\n                [p-disabled]=\"isDisabled\"\n                (p-close)=\"closeTag(tag[fieldValue], $event)\"\n                [p-append-in-body]=\"appendBox\"\n              ></po-tag>\n            }\n\n            <div class=\"po-field-icon-container-right\">\n              @if (loading) {\n                <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n              } @else {\n                <po-icon\n                  p-icon=\"{{ dropdownIcon }}\"\n                  #iconElement\n                  class=\"po-field-icon {{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n                  [class.po-field-icon-aa]=\"size === 'small'\"\n                  [ngClass]=\"disabled ? 'po-field-icon-disabled' : ''\"\n                >\n                </po-icon>\n              }\n            </div>\n          </div>\n        </div>\n\n        @if (needsHelper) {\n          <po-helper\n            #helperEl\n            class=\"po-field-helper-button\"\n            [p-size]=\"size\"\n            [p-helper]=\"poHelper.helperSettings\"\n            [p-disabled]=\"isDisabled\"\n            [p-append-in-body]=\"appendBox\"\n          >\n          </po-helper>\n        }\n      </div>\n    </div>\n\n    @if (appendBox) {\n      <ng-template\n        cdkConnectedOverlay\n        [cdkConnectedOverlayOrigin]=\"trigger\"\n        [cdkConnectedOverlayOpen]=\"true\"\n        [cdkConnectedOverlayDisableClose]=\"true\"\n      >\n        <ng-container *ngTemplateOutlet=\"dropdownListbox\"></ng-container>\n      </ng-template>\n    } @else {\n      <ng-container *ngTemplateOutlet=\"dropdownListbox\"> </ng-container>\n    }\n\n    <po-field-container-bottom\n      [p-append-in-body]=\"appendBox\"\n      [p-help]=\"help\"\n      [p-disabled]=\"isDisabled\"\n      [p-error-pattern]=\"getErrorPattern()\"\n      [p-error-limit]=\"errorLimit\"\n      [p-size]=\"size\"\n    ></po-field-container-bottom>\n  </po-field-container>\n\n  <ng-template #dropdownListbox>\n    <po-multiselect-dropdown\n      #dropdownElement\n      [p-searching]=\"isServerSearching\"\n      [p-hide-search]=\"hideSearch\"\n      [p-hide-select-all]=\"hideSelectAll\"\n      [p-literals]=\"literals\"\n      [p-options]=\"options\"\n      [p-visible-options]=\"visibleOptionsDropdown\"\n      [p-selected-options]=\"selectedOptions\"\n      [p-placeholder-search]=\"placeholderSearch\"\n      [p-field-value]=\"fieldValue\"\n      [p-field-label]=\"fieldLabel\"\n      [p-multiselect-template]=\"multiselectOptionTemplate\"\n      [p-size]=\"size\"\n      [p-container-width]=\"containerWidth\"\n      (p-change)=\"changeItems($event)\"\n      (p-change-search)=\"changeSearch($event)\"\n      (p-close-dropdown)=\"controlDropdownVisibility(false)\"\n      (keydown)=\"onKeyDownDropdown($event, 0)\"\n    >\n    </po-multiselect-dropdown>\n  </ng-template>\n</div>\n","import { ChangeDetectorRef, Directive, ElementRef } from '@angular/core';\n\nimport { PoInputGeneric } from '../po-input-generic/po-input-generic';\n\n@Directive()\nexport abstract class PoNumberBaseComponent extends PoInputGeneric {\n  type = 'number';\n\n  protected invalidInputValueOnBlur = false;\n\n  /* istanbul ignore next */\n  constructor(elementRef: ElementRef, cd: ChangeDetectorRef) {\n    super(elementRef, cd);\n  }\n\n  eventOnInput(e: any) {\n    if (!this.mask) {\n      let value = e.target.value;\n      const valueMaxlength = this.validMaxLength(this.maxlength, value);\n      this.invalidInputValueOnBlur = false;\n\n      if (value !== valueMaxlength) {\n        value = valueMaxlength;\n\n        this.inputEl.nativeElement.value = value;\n      }\n\n      this.callOnChange(this.formatNumber(value));\n      if (this.errorAsyncProperties?.triggerMode === 'changeModel') {\n        this.verifyErrorAsync();\n      }\n    }\n  }\n\n  onBlur(event: any) {\n    const target = event.target;\n    this.invalidInputValueOnBlur = target.value === '' && !target.validity.valid;\n\n    if (this.invalidInputValueOnBlur) {\n      this.callOnChange('Valor Inválido');\n    }\n\n    this.eventOnBlur(event);\n  }\n\n  onKeyDown(event) {\n    const isFieldFocused = document.activeElement === this.inputEl.nativeElement;\n\n    if (!this.isKeyAllowed(event)) {\n      event.stopPropagation();\n      event.preventDefault();\n    }\n\n    if (isFieldFocused) {\n      this.keydown.emit(event);\n    }\n  }\n\n  validMaxLength(maxlength: number, value: string) {\n    if (maxlength && value.length > maxlength) {\n      const substringValue = value.toString().substring(0, maxlength);\n\n      if (substringValue && this.isEndWithDot(substringValue)) {\n        return substringValue.toString().substring(0, maxlength - 1);\n      }\n\n      return substringValue;\n    }\n\n    return value;\n  }\n\n  writeValueModel(value) {\n    if (this.inputEl) {\n      if (value || value === 0) {\n        if (this.mask) {\n          this.inputEl.nativeElement.value = this.objMask.controlFormatting(String(value));\n\n          // Se o model for definido como formatado, então precisa atualizá-lo no primeiro acesso\n          if (this.objMask.formatModel) {\n            this.onChangePropagate(this.objMask.valueToModel);\n          }\n        } else {\n          this.inputEl.nativeElement.value = value;\n        }\n      } else {\n        // Se for o valor for undefined, deve limpar o campo\n        this.inputEl.nativeElement.value = '';\n      }\n    }\n\n    // Emite evento quando o model é atualizado, inclusive a primeira vez\n\n    this.changeModel.emit(value);\n    this.verifyErrorAsync();\n  }\n\n  private isEndWithDot(value: string) {\n    return value && value.lastIndexOf('.') === value.length - 1;\n  }\n\n  private formatNumber(value) {\n    return value ? Number(value) : null;\n  }\n\n  private isKeyAllowed(event): boolean {\n    return this.isShortcut(event) || this.isControlKeys(event) || !this.isInvalidKey(event.key);\n  }\n\n  private isInvalidKey(key) {\n    const validatesKey = new RegExp(/[a-zA-Z:;=_´`^~\"'?!@#$%¨&*()><{}çÇ\\[\\]/\\\\|]+/);\n    return validatesKey.test(key);\n  }\n\n  private isShortcut(event): boolean {\n    const key = event.keyCode;\n    const ctrl = event.ctrlKey || event.metaKey;\n    const keyA = key === 65;\n    const keyC = key === 67;\n    const keyX = key === 88;\n    const keyV = key === 86;\n\n    return (ctrl && keyC) || (ctrl && keyV) || (ctrl && keyA) || (ctrl && keyX);\n  }\n\n  private isControlKeys(event) {\n    const controlKeys = [\n      'Backspace',\n      'ArrowLeft',\n      'ArrowRight',\n      'ArrowUp',\n      'ArrowDown',\n      'Left',\n      'Right',\n      'Up',\n      'Down',\n      'Tab',\n      'Delete',\n      'Home',\n      'End',\n      'Enter'\n    ];\n\n    return controlKeys.indexOf(event.key) !== -1;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  forwardRef,\n  HostListener,\n  Input,\n  inject,\n  OnChanges,\n  SimpleChanges\n} from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { maxFailed, minFailed } from '../validators';\n\nimport { PoNumberBaseComponent } from './po-number-base.component';\n\nimport { uuid } from '../../../utils/util';\n\n/**\n * @docsExtends PoInputBaseComponent\n *\n * @description\n *\n * O `po-number` é um input específico para receber apenas números.\n * É possível configurar um valor mínimo, máximo e um step com p-min, p-max e p-step,\n * respectivamente.\n *\n * @example\n *\n * <example name=\"po-number-basic\" title=\"PO Number Basic\">\n *  <file name=\"sample-po-number-basic/sample-po-number-basic.component.html\"> </file>\n *  <file name=\"sample-po-number-basic/sample-po-number-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-number-labs\" title=\"PO Number Labs\">\n *  <file name=\"sample-po-number-labs/sample-po-number-labs.component.html\"> </file>\n *  <file name=\"sample-po-number-labs/sample-po-number-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-number-calculate\" title=\"PO Number - Calculate\">\n *  <file name=\"sample-po-number-calculate/sample-po-number-calculate.component.html\"> </file>\n *  <file name=\"sample-po-number-calculate/sample-po-number-calculate.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-number',\n  templateUrl: './po-number.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoNumberComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => PoNumberComponent),\n      multi: true\n    }\n  ],\n  standalone: false\n})\nexport class PoNumberComponent extends PoNumberBaseComponent implements OnChanges {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica uma máscara para o campo, porém é incompatível com o `po-number`.\n   * > **Componentes compatíveis:** `po-input`,`po-decimal`.\n   *\n   * @override\n   */\n  override mask?: string = '';\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Intervalo.\n   *\n   * @default 1\n   */\n  @Input('p-step') step?: string = '1';\n\n  /** Valor mínimo.\n   *\n   * > Quando o valor mínimo for um número com decimais aconselha-se utilizar junto da propriedade `p-step` também passando a ela um valor decimal.\n   */\n  min?: number;\n  @Input('p-min') set setMin(min: number) {\n    this.min = !isNaN(min) ? min : undefined;\n    this.validateModel();\n  }\n\n  /** Valor máximo.\n   *\n   * > Quando o valor máximo for um número com decimais aconselha-se utilizar junto da propriedade `p-step` também passando a ela um valor decimal.\n   */\n  max?: number;\n  @Input('p-max') set setMax(max: number) {\n    this.max = !isNaN(max) ? max : undefined;\n    this.validateModel();\n  }\n\n  id = `po-number[${uuid()}]`;\n\n  /* istanbul ignore next */\n  constructor() {\n    const el = inject(ElementRef);\n    const cd = inject(ChangeDetectorRef);\n\n    super(el, cd);\n  }\n\n  @HostListener('wheel', ['$event'])\n  onWheel(event: Event) {\n    event.preventDefault();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n  }\n\n  extraValidation(abstractControl: AbstractControl): { [key: string]: any } {\n    // Verifica se já possui algum error pattern padrão.\n    this.errorPattern = this.errorPattern !== 'Valor Inválido' ? this.errorPattern : '';\n\n    if (minFailed(this.min, abstractControl.value)) {\n      return {\n        min: {\n          valid: false\n        }\n      };\n    }\n\n    if (maxFailed(this.max, abstractControl.value)) {\n      return {\n        max: {\n          valid: false\n        }\n      };\n    }\n\n    if (this.invalidInputValueOnBlur) {\n      this.errorPattern = this.errorPattern || 'Valor Inválido';\n\n      return {\n        number: {\n          valid: false\n        }\n      };\n    }\n\n    return null;\n  }\n\n  getErrorPatternMessage() {\n    return this.errorPattern !== '' && this.containsInvalidClass() ? this.errorPattern : '';\n  }\n\n  private containsInvalidClass(): boolean {\n    return (\n      (this.el.nativeElement.classList.contains('ng-invalid') &&\n        this.el.nativeElement.classList.contains('ng-dirty') &&\n        (this.inputEl.nativeElement.value !== '' ||\n          (this.showErrorMessageRequired && (this.required || this.hasValidatorRequired)))) ||\n      this.invalidInputValueOnBlur\n    );\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n<po-field-container\n  [p-disabled]=\"isDisabled\"\n  [p-id]=\"id\"\n  [p-label]=\"label\"\n  [p-optional]=\"optional\"\n  [p-required]=\"required\"\n  [p-show-required]=\"showRequired\"\n  [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n  [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n  [p-size]=\"size\"\n  [p-text-wrap]=\"labelTextWrap()\"\n  [p-compact-label]=\"compactLabel()\"\n>\n  <div class=\"po-field-container-content\">\n    <div class=\"po-field-container-content-helper-wrapper\">\n      <div class=\"po-field-container-input\">\n        @if (icon) {\n          <div class=\"po-field-icon-container-left\">\n            <po-icon\n              class=\"po-field-icon po-icon-input\"\n              [class.po-field-icon-disabled]=\"isDisabled\"\n              [class.po-field-icon-aa]=\"size === 'small'\"\n              [p-icon]=\"icon\"\n            ></po-icon>\n          </div>\n        }\n        <input\n          #inp\n          class=\"po-input\"\n          type=\"number\"\n          [attr.data-focused-element]=\"!isDisabled\"\n          [attr.data-inactive-component]=\"isDisabled || readonly\"\n          [attr.max]=\"max\"\n          [attr.min]=\"min\"\n          [attr.name]=\"name\"\n          [attr.p-size]=\"size\"\n          [attr.step]=\"step\"\n          [autocomplete]=\"autocomplete\"\n          [class.po-input-icon-left]=\"icon\"\n          [class.po-input-icon-left-aa]=\"icon && size === 'small'\"\n          [class.po-input-icon-right]=\"clean || loading\"\n          [class.po-input-icon-right-aa]=\"(clean || loading) && size === 'small'\"\n          [disabled]=\"isDisabled\"\n          [id]=\"id\"\n          [placeholder]=\"isDisabled ? '' : placeholder\"\n          [readonly]=\"readonly\"\n          [required]=\"required\"\n          [tabindex]=\"isDisabled ? -1 : 0\"\n          (blur)=\"onBlur($event)\"\n          (focus)=\"eventOnFocus($event)\"\n          (input)=\"eventOnInput($event)\"\n          (keydown)=\"onKeyDown($event)\"\n        />\n\n        <div class=\"po-field-icon-container-right\">\n          @if (loading) {\n            <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n          }\n\n          @if (!loading && clean && !isDisabled && !readonly) {\n            <po-clean\n              class=\"po-icon-input\"\n              [p-default-value]=\"null\"\n              [p-element-ref]=\"inputEl\"\n              [p-size]=\"size\"\n              (p-change-event)=\"clear($event)\"\n            >\n            </po-clean>\n          }\n        </div>\n      </div>\n\n      @if ((!this.label && poHelperComponent()) || (!this.label && poHelper.hideAdditionalHelp)) {\n        <po-helper\n          #helperEl\n          class=\"po-field-helper-button\"\n          [p-size]=\"size\"\n          [p-helper]=\"poHelper.helperSettings\"\n          [p-disabled]=\"isDisabled\"\n          [p-append-in-body]=\"appendBox\"\n        >\n        </po-helper>\n      }\n    </div>\n  </div>\n\n  @if (!readonly) {\n    <po-field-container-bottom\n      [p-append-in-body]=\"appendBox\"\n      [p-help]=\"help\"\n      [p-disabled]=\"isDisabled\"\n      [p-error-limit]=\"errorLimit\"\n      [p-error-pattern]=\"getErrorPatternMessage()\"\n      [p-size]=\"size\"\n    >\n    </po-field-container-bottom>\n  }\n</po-field-container>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  forwardRef,\n  Input,\n  inject,\n  OnChanges,\n  SimpleChanges\n} from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { convertToBoolean, uuid } from '../../../utils/util';\nimport { PoInputGeneric } from '../po-input-generic/po-input-generic';\n\n/**\n * @docsExtends PoInputBaseComponent\n *\n * @description\n * O `po-password` é um input específico para senhas. Já possui tipo, estilo e ícone predefinidos.\n *\n * @example\n *\n * <example name=\"po-password-basic\" title=\"PO Password Basic\">\n *   <file name=\"sample-po-password-basic/sample-po-password-basic.component.html\"> </file>\n *   <file name=\"sample-po-password-basic/sample-po-password-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-password-labs\" title=\"PO Password Labs\">\n *   <file name=\"sample-po-password-labs/sample-po-password-labs.component.html\"> </file>\n *   <file name=\"sample-po-password-labs/sample-po-password-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-password-reset\" title=\"PO Password - Reset\">\n *   <file name=\"sample-po-password-reset/sample-po-password-reset.component.html\"> </file>\n *   <file name=\"sample-po-password-reset/sample-po-password-reset.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-password',\n  templateUrl: './po-password.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoPasswordComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => PoPasswordComponent),\n      multi: true\n    }\n  ],\n  standalone: false\n})\nexport class PoPasswordComponent extends PoInputGeneric implements OnChanges {\n  id = `po-password[${uuid()}]`;\n  type = 'password';\n  visiblePassword = false;\n\n  private _hidePasswordPeek?: boolean = false;\n  private _noAutocompletePassword?: boolean = true;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite esconder a função de espiar a senha digitada.\n   *\n   * @default `false`\n   */\n  @Input('p-hide-password-peek') set hidePasswordPeek(value: boolean) {\n    this._hidePasswordPeek = convertToBoolean(value);\n    if (value) {\n      this.visiblePassword = false;\n      this.type = 'password';\n    }\n  }\n\n  @Input('p-no-autocomplete') override set noAutocomplete(value: boolean) {\n    this._noAutocompletePassword = convertToBoolean(value);\n  }\n\n  override get noAutocomplete() {\n    return this._noAutocompletePassword;\n  }\n\n  get hidePasswordPeek(): boolean {\n    return this._hidePasswordPeek;\n  }\n\n  get autocomplete(): string {\n    return this.noAutocomplete ? 'new-password' : 'on';\n  }\n\n  /* istanbul ignore next */\n  constructor() {\n    const el = inject(ElementRef);\n    const cd = inject(ChangeDetectorRef);\n\n    super(el, cd);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n  }\n\n  extraValidation(c: AbstractControl): { [key: string]: any } {\n    return null;\n  }\n\n  showPassword() {\n    this.visiblePassword = !this.visiblePassword;\n    this.type = this.type === 'password' ? 'text' : 'password';\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n<po-field-container\n  [p-disabled]=\"isDisabled\"\n  [p-id]=\"id\"\n  [p-label]=\"label\"\n  [p-optional]=\"optional\"\n  [p-required]=\"required\"\n  [p-show-required]=\"showRequired\"\n  [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n  [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n  [p-size]=\"size\"\n  [p-text-wrap]=\"labelTextWrap()\"\n  [p-compact-label]=\"compactLabel()\"\n>\n  <div class=\"po-field-container-content\">\n    <div class=\"po-field-container-content-helper-wrapper\">\n      <div class=\"po-field-container-input\">\n        <div class=\"po-field-icon-container-left\">\n          <po-icon\n            p-icon=\"ICON_LOCK\"\n            class=\"po-field-icon {{ disabled ? 'po-icon-input-disabled' : 'po-icon-input' }}\"\n            [class.po-field-icon-disabled]=\"isDisabled\"\n            [class.po-field-icon-aa]=\"size === 'small'\"\n          >\n          </po-icon>\n        </div>\n\n        <input\n          #inp\n          class=\"po-input po-input-icon-left\"\n          [attr.name]=\"name\"\n          [attr.p-size]=\"size\"\n          [autocomplete]=\"autocomplete\"\n          [class.po-input-double-icon-right]=\"!loading && clean && inp.value && !hidePasswordPeek\"\n          [class.po-input-double-icon-right-aa]=\"\n            !loading && clean && inp.value && !hidePasswordPeek && size === 'small'\n          \"\n          [class.po-input-icon-right]=\"clean || loading || !hidePasswordPeek\"\n          [class.po-input-icon-right-aa]=\"(clean || loading || !hidePasswordPeek) && size === 'small'\"\n          [class.po-input-icon-left-aa]=\"size === 'small'\"\n          [disabled]=\"isDisabled\"\n          [id]=\"id\"\n          [placeholder]=\"isDisabled ? '' : placeholder\"\n          [readonly]=\"readonly\"\n          [required]=\"required\"\n          [type]=\"disabled ? 'password' : type\"\n          (blur)=\"eventOnBlur($event)\"\n          (click)=\"eventOnClick($event)\"\n          (focus)=\"eventOnFocus($event)\"\n          (input)=\"eventOnInput($event)\"\n          (keydown)=\"onKeyDown($event)\"\n        />\n\n        <div class=\"po-field-icon-container-right\">\n          @if (loading) {\n            <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"> </po-loading-icon>\n          }\n\n          @if (!loading && clean && !isDisabled && !readonly) {\n            <po-clean class=\"po-icon-input\" [p-element-ref]=\"inputEl\" [p-size]=\"size\" (p-change-event)=\"clear($event)\">\n            </po-clean>\n          }\n\n          @if (!loading && !hidePasswordPeek && !isDisabled) {\n            <po-icon\n              [p-icon]=\"visiblePassword ? 'ICON_EYE' : 'ICON_EYE_OFF'\"\n              class=\"po-field-icon po-icon-input\"\n              [class.po-field-icon-aa]=\"size === 'small'\"\n              [ngClass]=\"!visiblePassword ? 'po-field-icon-disabled' : ''\"\n              [class.po-field-icon-disabled-aa]=\"size === 'small'\"\n              (click)=\"showPassword()\"\n            >\n            </po-icon>\n          }\n        </div>\n      </div>\n\n      @if ((!this.label && poHelperComponent()) || (!this.label && poHelper.hideAdditionalHelp)) {\n        <po-helper\n          #helperEl\n          class=\"po-field-helper-button\"\n          [p-size]=\"size\"\n          [p-helper]=\"poHelper.helperSettings\"\n          [p-disabled]=\"isDisabled\"\n          [p-append-in-body]=\"appendBox\"\n        >\n        </po-helper>\n      }\n    </div>\n  </div>\n  @if (!readonly) {\n    <po-field-container-bottom\n      [p-help]=\"help\"\n      [p-disabled]=\"isDisabled\"\n      [p-error-limit]=\"errorLimit\"\n      [p-error-pattern]=\"getErrorPattern()\"\n      [p-size]=\"size\"\n    >\n    </po-field-container-bottom>\n  }\n</po-field-container>\n","/**\n * @usedBy PoRichTextComponent\n *\n * @description\n * Enumeração que define as ações disponíveis na barra de ferramentas do `PoRichTextComponent`.\n * Cada ação corresponde a um conjunto de botões ou funcionalidades que podem ser habilitados ou desabilitados\n * na barra de ferramentas do editor do rich-text.\n */\nexport enum PoRichTextToolbarActions {\n  /**\n   * Seletor de cores, Ação que permite que o usuário altere a cor do texto selecionado.\n   */\n  Color = 'color',\n\n  /**\n   * Alinhamento de texto, incluindo alinhamento à esquerda, centralizado, à direita e justificado.\n   */\n  Align = 'align',\n\n  /**\n   * Formatação de texto, como aplicar negrito, itálico ou sublinhado ao texto selecionado.\n   */\n  Format = 'format',\n\n  /**\n   * Listas com marcadores (bullet points) ou listas numeradas.\n   */\n  List = 'list',\n\n  /**\n   * Links no conteúdo, aplica partes do texto para serem clicáveis e direcionem para URLs especificadas.\n   */\n  Link = 'link',\n\n  /**\n   * Mídias, como imagens, no conteúdo do editor.\n   */\n  Media = 'media'\n}\n","import { Injectable } from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoRichTextService {\n  private readonly model = new Subject<string>();\n\n  emitModel(value: string) {\n    this.model.next(value);\n  }\n\n  getModel() {\n    return this.model.asObservable();\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Directive,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  input,\n  Input,\n  Output\n} from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, Validator } from '@angular/forms';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from '../../../utils/util';\nimport { PoValidators } from '../validators';\nimport { PoRichTextToolbarActions } from './enum/po-rich-text-toolbar-actions.enum';\nimport { PoRichTextService } from './po-rich-text.service';\nimport { PoHelperOptions } from '../../po-helper';\n\n/**\n * @description\n *\n * O componente `po-rich-text` é um editor de textos enriquecidos.\n *\n * Para edição de texto simples sem formatação recomenda-se o uso do componente [**po-textarea**](/documentation/po-textarea).\n *\n * > No navegador Internet Explorer não é possível alterar a cor do texto.\n */\n@Directive()\nexport abstract class PoRichTextBaseComponent implements ControlValueAccessor, Validator {\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de ajuda adicional, com o texto desta propriedade sendo passado para o popover do componente `po-helper`.\n   * **Como boa prática, indica-se utilizar um texto com até 140 caracteres.**\n   * > Requer um recuo mínimo de 8px se o componente estiver próximo à lateral da tela.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Input('p-additional-help-tooltip') additionalHelpTooltip?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o popover (`p-helper` e/ou `p-error-limit`) será incluído no body da página e não\n   * dentro do componente. Essa opção pode ser necessária em cenários com containers que possuem scroll ou overflow\n   * escondido, garantindo o posicionamento correto do tooltip próximo ao elemento.\n   *\n   * > Quando utilizado com `p-helper`, leitores de tela como o NVDA podem não ler o conteúdo do popover.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendBox?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Aplica foco no elemento ao ser iniciado.\n   *\n   * > Caso mais de um elemento seja configurado com essa propriedade, apenas o último elemento declarado com ela terá o foco.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-auto-focus', transform: convertToBoolean }) autoFocus: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se o alinhamento de texto será desabilitado.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-disabled-text-align', transform: convertToBoolean }) disabledTextAlign: boolean;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica que o campo será desabilitado.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-disabled', transform: convertToBoolean }) disabled: boolean;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de carregamento no lado direito do campo para sinalizar que uma operação está em andamento.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-loading', transform: convertToBoolean })\n  set loading(value: boolean) {\n    this._loading = value;\n    this.cd?.markForCheck();\n  }\n\n  get loading(): boolean {\n    return this._loading;\n  }\n\n  get isDisabled(): boolean {\n    return this.disabled || this.loading;\n  }\n\n  /**\n   * @description\n   *\n   * Mensagem que será apresentada quando a propriedade required estiver habilitada e o campo for limpo após algo ser digitado.\n   */\n  @Input('p-error-message') errorMessage?: string = '';\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Limita a exibição da mensagem de erro a duas linhas e exibe um tooltip com o texto completo.\n   *\n   * > Caso essa propriedade seja definida como `true`, a mensagem de erro será limitada a duas linhas\n   * e um tooltip será exibido ao passar o mouse sobre a mensagem para mostrar o conteúdo completo.\n   *\n   * @default `false`\n   */\n  @Input('p-error-limit') errorLimit: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Texto de apoio do campo.\n   */\n  @Input('p-help') help?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Rótulo do campo.\n   */\n  @Input('p-label') label?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define se o título do campo será exibido de forma compacta.\n   *\n   * Quando habilitado (`true`), o modo compacto afeta o conjunto composto por:\n   * - `po-label`\n   * - `p-requirement (showRequired)`\n   * - `po-helper`\n   *\n   * Ou seja, todos os elementos relacionados ao título do campo\n   * (rótulo, indicador de obrigatoriedade e componente auxiliar) passam\n   * a seguir o comportamento de layout compacto.\n   *\n   * Também é possível definir esse comportamento de forma global,\n   * uma única vez, na folha de estilo geral da aplicação, por meio\n   * da customização dos tokens CSS:\n   *\n   * - `--field-container-title-justify`\n   * - `--field-container-title-flex`\n   *\n   * Exemplo:\n   *\n   * ```\n   * :root {\n   *   --field-container-title-justify: flex-start;\n   *   --field-container-title-flex: 0 1 auto;\n   * }\n   * ```\n   *\n   * Dessa forma, o layout compacto passa a ser o padrão da aplicação,\n   * sem a necessidade de definir a propriedade individualmente em cada campo.\n   *\n   * @default `false`\n   */\n  compactLabel = input<boolean, unknown>(false, { alias: 'p-compact-label', transform: convertToBoolean });\n\n  /** Nome e identificador do campo. */\n  @Input('name') name: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se a indicação de campo opcional será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - O campo conter `p-required`;\n   * - Não possuir `p-help` e/ou `p-label`.\n   *\n   * @default `false`\n   */\n  @Input('p-optional') optional: boolean;\n\n  private _hideToolbarActions: Array<PoRichTextToolbarActions> = [];\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as ações da barra de ferramentas do `PoRichTextComponent` que serão ocultadas.\n   * Aceita um único valor do tipo `PoRichTextToolbarActions` ou uma lista de valores.\n   *\n   * > Esta propriedade sobrepõe a configuração da propriedade `p-disabled-text-align` quando for passada como `false`, caso sejam definidas simultaneamente.\n   *\n   * @default `[]`\n   *\n   * @example\n   * ```\n   * // Oculta apenas o seletor de cores\n   * component.hideToolbarActions = PoRichTextToolbarActions.Color;\n   *\n   * // Oculta as opções de alinhamento e link\n   * component.hideToolbarActions = [PoRichTextToolbarActions.Align, PoRichTextToolbarActions.Link];\n   * ```\n   */\n  @Input('p-hide-toolbar-actions') set hideToolbarActions(\n    actions: Array<PoRichTextToolbarActions> | PoRichTextToolbarActions\n  ) {\n    this._hideToolbarActions = Array.isArray(actions) ? [...actions] : [actions];\n  }\n\n  get hideToolbarActions(): Array<PoRichTextToolbarActions> {\n    return this._hideToolbarActions;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as opções do componente de ajuda (po-helper) que será exibido ao lado do label quando a propriedade `p-label` for definida, ou, ao lado do componente na ausência da propriedade `p-label`.\n   * > Para mais informações acesse: https://po-ui.io/documentation/po-helper.\n   *\n   * > Ao configurar esta propriedade, o antigo ícone de ajuda adicional (`p-additional-help-tooltip` e `p-additional-help`) será ignorado.\n   */\n  poHelperComponent = input<PoHelperOptions | string>(undefined, { alias: 'p-helper' });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a quebra automática do texto da propriedade `p-label`. Quando `p-label-text-wrap` for verdadeiro, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * @default `false`\n   */\n  labelTextWrap = input<boolean>(false, { alias: 'p-label-text-wrap' });\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar no ícone de ajuda adicional.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Output('p-additional-help') additionalHelp = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao deixar o campo e que recebe como parâmetro o valor alterado.\n   */\n  @Output('p-change') change: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao modificar valor do model e que recebe como parâmetro o valor alterado.\n   */\n  @Output('p-change-model') changeModel: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado quando uma tecla é pressionada enquanto o foco está no componente.\n   * Retorna um objeto `KeyboardEvent` com informações sobre a tecla.\n   */\n  @Output('p-keydown') keydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n  displayAdditionalHelp: boolean = false;\n  invalid: boolean = false;\n  onChangeModel: any = null;\n  value: string;\n\n  private _loading: boolean = false;\n  private _height?: number;\n  private _placeholder: string;\n  private _readonly: boolean;\n  private _required: boolean;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n  private validatorChange: any;\n  // eslint-disable-next-line\n  protected onTouched: any = null;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a altura da área de edição de texto.\n   *\n   * > Altura mínima do componente é `94` e a altura máxima é `262`.\n   */\n  @Input('p-height') set height(height: number) {\n    this._height = height;\n  }\n\n  get height() {\n    return this._height;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Mensagem que aparecerá enquanto o campo não estiver preenchido.\n   *\n   * @default ''\n   */\n  @Input('p-placeholder') set placeholder(value: string) {\n    this._placeholder = value || '';\n  }\n\n  get placeholder() {\n    return this._placeholder;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica que o campo será somente leitura.\n   *\n   * @default `false`\n   */\n  @Input('p-readonly') set readonly(value: boolean) {\n    this._readonly = convertToBoolean(value);\n  }\n\n  get readonly() {\n    return this._readonly;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o campo será obrigatório.\n   *\n   * @default `false`\n   */\n  @Input('p-required') set required(value: boolean) {\n    this._required = convertToBoolean(value);\n\n    this.validateModel(this.value);\n  }\n\n  get required() {\n    return this._required;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura dos buttons como 32px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura dos buttons como 44px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * Define se a indicação de campo obrigatório será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - Não possuir `p-help` e/ou `p-label`.\n   */\n  @Input('p-show-required') showRequired: boolean = false;\n\n  constructor(\n    private readonly richTextService: PoRichTextService,\n    public cd: ChangeDetectorRef\n  ) {}\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar os estados de habilitado via forms api\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n    this.cd.markForCheck();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar as mudanças e não atualizar automaticamente o Model\n  registerOnChange(func: any): void {\n    this.onChangeModel = func;\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar as mudanças e não atualizar automaticamente o Model\n  registerOnTouched(func: any): void {\n    this.onTouched = func;\n  }\n\n  registerOnValidatorChange(fn: () => void) {\n    this.validatorChange = fn;\n  }\n\n  validate(abstractControl: AbstractControl): { [key: string]: any } {\n    if (PoValidators.requiredFailed(this.required, this.disabled, abstractControl.value)) {\n      return {\n        required: {\n          valid: false\n        }\n      };\n    }\n  }\n\n  writeValue(value: string): void {\n    this.value = value;\n\n    this.richTextService.emitModel(value);\n  }\n\n  // Executa a função onChange\n  protected updateModel(value: any) {\n    // Quando o rich-text não possui um formulário, então esta função não é registrada\n    if (this.onChangeModel) {\n      this.onChangeModel(value);\n    }\n  }\n\n  protected validateModel(value: any) {\n    if (this.validatorChange) {\n      this.validatorChange(value);\n    }\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  OnDestroy,\n  OnInit,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  inject,\n  ChangeDetectorRef\n} from '@angular/core';\n\nimport { Subscription } from 'rxjs';\n\nimport { PoRichTextService } from '../po-rich-text.service';\nimport { PoKeyCodeEnum } from './../../../../enums/po-key-code.enum';\nimport { mapInputSizeToLoadingIcon, PoUtils } from './../../../../utils/util';\n\nconst poRichTextBodyCommands = [\n  'bold',\n  'italic',\n  'underline',\n  'justifyleft',\n  'justifycenter',\n  'justifyright',\n  'justifyfull',\n  'insertUnorderedList',\n  'Createlink'\n];\n\n@Component({\n  selector: 'po-rich-text-body',\n  templateUrl: './po-rich-text-body.component.html',\n  standalone: false\n})\nexport class PoRichTextBodyComponent implements OnInit, OnDestroy, OnChanges {\n  private readonly richTextService = inject(PoRichTextService);\n  private readonly cd = inject(ChangeDetectorRef);\n\n  @ViewChild('bodyElement', { static: true }) bodyElement: ElementRef;\n\n  @Input('p-height') height?: string;\n\n  @Input('p-label') label: string;\n\n  @Input('p-model-value') modelValue?: string;\n\n  @Input('p-placeholder') placeholder?: string;\n\n  @Input('p-readonly') readonly?: string;\n\n  @Input('p-disabled') disabled: boolean = false;\n\n  @Input('p-loading') loading: boolean = false;\n\n  @Output('p-change') change = new EventEmitter<any>();\n\n  @Output('p-commands') commands = new EventEmitter<any>();\n\n  @Output('p-keydown') keydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n  @Output('p-selected-link') selectedLink = new EventEmitter<any>();\n\n  @HostBinding('attr.p-size')\n  @Input('p-size')\n  size: string;\n\n  @Output('p-shortcut-command') shortcutCommand = new EventEmitter<any>();\n\n  @Output('p-value') value = new EventEmitter<any>();\n\n  @Output('p-blur') blur = new EventEmitter<any>();\n\n  private isLinkEditing: boolean;\n  private linkElement: any;\n  private timeoutChange: any;\n  private valueBeforeChange: any;\n  private modelSubscription: Subscription;\n  private resizeObserver: ResizeObserver;\n  hasScroll: boolean = false;\n  hasValue: boolean = false;\n\n  @HostListener('window:resize')\n  onWindowResize() {\n    this.checkScrollState();\n  }\n\n  ngOnInit() {\n    this.bodyElement.nativeElement.designMode = 'on';\n\n    this.modelSubscription = this.richTextService.getModel().subscribe(modelValue => {\n      this.modelValue = modelValue;\n      this.bodyElement.nativeElement.innerHTML = '';\n      this.updateValueWithModelValue();\n      this.addClickListenerOnAnchorElements();\n\n      this.updateHasValue();\n      this.checkScrollState();\n    });\n\n    this.initResizeObserver();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['loading']) {\n      setTimeout(() => this.checkScrollState());\n    }\n  }\n\n  ngOnDestroy() {\n    this.modelSubscription?.unsubscribe();\n    this.resizeObserver?.disconnect();\n  }\n\n  executeCommand(command: string | { command: any; value: string | any }) {\n    this.bodyElement.nativeElement.focus();\n\n    if (typeof command === 'object') {\n      if (command.command === 'InsertHTML') {\n        const {\n          command: linkCommand,\n          value: { urlLink },\n          value: { urlLinkText }\n        } = command;\n\n        this.handleCommandLink(linkCommand, urlLink, urlLinkText);\n      } else {\n        document.execCommand(command.command, false, command.value);\n      }\n    } else {\n      document.execCommand(command, false, null);\n    }\n\n    this.updateModel();\n    this.value.emit(this.modelValue);\n  }\n\n  linkEditing(event) {\n    this.isLinkEditing = !!event;\n  }\n\n  onBlur() {\n    this.blur.emit();\n    if (this.modelValue !== this.valueBeforeChange) {\n      clearTimeout(this.timeoutChange);\n      this.timeoutChange = setTimeout(() => {\n        this.change.emit(this.modelValue);\n      }, 200);\n    }\n  }\n\n  focus(): void {\n    this.bodyElement.nativeElement.focus();\n  }\n\n  onClick() {\n    this.emitSelectionCommands();\n  }\n\n  onFocus() {\n    this.valueBeforeChange = this.modelValue;\n  }\n\n  onKeyDown(event) {\n    const keyK = event.keyCode === PoKeyCodeEnum.keyK;\n    const isLinkShortcut = (keyK && event.ctrlKey) || (keyK && event.metaKey);\n    const isFieldFocused = document.activeElement === this.bodyElement.nativeElement;\n\n    if (isLinkShortcut) {\n      event.preventDefault();\n      this.shortcutCommand.emit();\n    }\n\n    this.toggleCursorOnLink(event, 'add');\n\n    if (isFieldFocused) {\n      this.keydown.emit(event);\n    }\n  }\n\n  onKeyUp(event: any) {\n    this.toggleCursorOnLink(event, 'remove');\n\n    this.removeBrElement();\n    this.updateModel();\n    this.emitSelectionCommands();\n\n    this.updateHasValue();\n    this.checkScrollState();\n  }\n\n  onPaste() {\n    this.update();\n    setTimeout(() => {\n      this.addClickListenerOnAnchorElements();\n\n      this.updateHasValue();\n      this.checkScrollState();\n    });\n  }\n\n  update() {\n    setTimeout(() => this.updateModel());\n\n    setTimeout(() => {\n      this.removeBrElement();\n      this.updateModel();\n      this.emitSelectionCommands();\n\n      this.updateHasValue();\n      this.checkScrollState();\n    });\n  }\n\n  //Transforma o tamanho do input para o tamanho do ícone de loading correspondente\n  protected mapSizeToIcon(size: string): string {\n    return mapInputSizeToLoadingIcon(size);\n  }\n\n  private addClickListenerOnAnchorElements() {\n    this.bodyElement.nativeElement.querySelectorAll('a').forEach(element => {\n      element.addEventListener('click', this.onAnchorClick);\n    });\n  }\n\n  private emitSelectionCommands() {\n    const commands = poRichTextBodyCommands.filter(command => document.queryCommandState(command));\n    const rgbColor = document.queryCommandValue('ForeColor');\n\n    let hexColor;\n    if (!PoUtils.isIE()) {\n      hexColor = this.rgbToHex(rgbColor);\n    }\n\n    if (this.isCursorPositionedInALink()) {\n      commands.push('Createlink');\n    }\n\n    this.selectedLink.emit(this.linkElement); // importante ficar fora do if para emitir mesmo undefined.\n    this.commands.emit({ commands, hexColor });\n  }\n\n  private getTextSelection() {\n    const textSelection = document.getSelection();\n    if (!textSelection) {\n      return;\n    }\n    const focusNode = textSelection.focusNode ? textSelection.focusNode.parentElement : undefined;\n    const anchorNode = textSelection.anchorNode ? textSelection.anchorNode.parentNode : undefined;\n    const node = focusNode || anchorNode;\n    let tagName;\n\n    if (node) {\n      tagName = node['tagName'] || node['nodeName'];\n      return {\n        node,\n        tagName\n      };\n    }\n  }\n\n  private handleCommandLink(linkCommand: string, urlLink: string, urlLinkText: string) {\n    if (PoUtils.isIE()) {\n      this.insertHtmlLinkElement(urlLink, urlLinkText);\n    } else {\n      // '&nbsp;' necessário para o cursor não ficar preso dentro do link no Firefox.\n      const linkValue =\n        PoUtils.isFirefox() && !this.isLinkEditing\n          ? `&nbsp;${this.makeLinkTag(urlLink, urlLinkText)}&nbsp;`\n          : this.makeLinkTag(urlLink, urlLinkText);\n\n      document.execCommand(linkCommand, false, linkValue);\n    }\n\n    this.addClickListenerOnAnchorElements();\n  }\n\n  // tratamento específico para IE pois não suporta o comando 'insertHTML'.\n  private insertHtmlLinkElement(urlLink: string, urlLinkText: string) {\n    const selection = document.getSelection();\n    const selectionRange = selection.getRangeAt(0);\n    const elementLink = document.createElement('a');\n    const elementlinkText = document.createTextNode(urlLinkText);\n\n    elementLink.appendChild(elementlinkText);\n    elementLink.href = urlLink;\n    elementLink.setAttribute('target', '_blank');\n    elementLink.classList.add('po-rich-text-link');\n\n    selectionRange.deleteContents();\n    selectionRange.insertNode(elementLink);\n  }\n\n  private isCursorPositionedInALink(): boolean {\n    const textSelection = this.getTextSelection();\n    this.linkElement = undefined;\n\n    let isLink = false;\n\n    if (textSelection && textSelection.node && textSelection.tagName === 'A') {\n      this.linkElement = textSelection.node;\n      isLink = true;\n    } else if ((PoUtils.isFirefox() || PoUtils.isIEOrEdge()) && this.verifyCursorPositionInFirefoxIEEdge()) {\n      isLink = true;\n    } else {\n      isLink = textSelection ? this.isParentNodeAnchor(textSelection) : false;\n    }\n    return isLink;\n  }\n\n  private isParentNodeAnchor(textSelection): boolean {\n    let element = textSelection.node;\n    let isLink = false;\n\n    while (element && (element.tagName !== null || element.nodeName !== null)) {\n      if (element.tagName === 'A' || element.nodeName === 'A') {\n        this.linkElement = element;\n        isLink = true;\n        return isLink;\n      }\n      element = element.parentElement || element.parentNode;\n    }\n\n    this.linkElement = undefined;\n    return isLink;\n  }\n\n  private makeLinkTag(urlLink: string, urlLinkText: string) {\n    return `<a class=\"po-rich-text-link\" href=\"${urlLink}\" target=\"_blank\">${urlLinkText || urlLink}</a>`;\n  }\n\n  private readonly onAnchorClick = event => {\n    const { target, ctrlKey, metaKey } = event;\n    let url;\n    let elementLink;\n\n    if (ctrlKey || metaKey) {\n      if (event.path) {\n        event.path.forEach(element => {\n          if (element.nodeName === 'A') {\n            url = element.href;\n            elementLink = element;\n          }\n        });\n      } else {\n        url = target.attributes.href.value;\n        elementLink = target;\n      }\n      PoUtils.openExternalLink(url);\n      elementLink.classList.remove('po-clickable');\n    }\n  };\n\n  // Tratamento necessário para eliminar a tag <br> criada no firefox quando o body for limpo.\n  private removeBrElement() {\n    const bodyElement = this.bodyElement.nativeElement;\n\n    if (!bodyElement.innerText.trim() && bodyElement.childNodes.length === 1 && bodyElement.querySelector('br')) {\n      bodyElement.querySelector('br').remove();\n    }\n  }\n\n  private rgbToHex(rgb) {\n    // Tratamento necessário para converter o código rgb para hexadecimal.\n    const sep = rgb.indexOf(',') > -1 ? ',' : ' ';\n    rgb = rgb.substr(4).split(')')[0].split(sep);\n\n    let r = (+rgb[0]).toString(16);\n    let g = (+rgb[1]).toString(16);\n    let b = (+rgb[2]).toString(16);\n\n    if (r.length === 1) {\n      r = '0' + r;\n    }\n    if (g.length === 1) {\n      g = '0' + g;\n    }\n    if (b.length === 1) {\n      b = '0' + b;\n    }\n\n    return '#' + r + g + b;\n  }\n\n  private toggleCursorOnLink(event: any, action: 'add' | 'remove') {\n    const selection = document.getSelection();\n    const element = selection.focusNode ? selection.focusNode.parentNode : undefined;\n    const isCtrl = event.key === 'Control';\n    const isCommand = event.key === 'Meta';\n    const isOnCtrlLink = this.isCursorPositionedInALink() && (isCtrl || isCommand);\n\n    if (element) {\n      if (isOnCtrlLink) {\n        element['classList'][action]('po-clickable');\n      } else {\n        const isClickable = element['classList'] && element['classList'].contains('po-clickable');\n\n        if (isClickable) {\n          element['classList'].remove('po-clickable');\n        }\n      }\n      this.updateModel();\n    }\n  }\n\n  private updateModel() {\n    this.modelValue = this.bodyElement.nativeElement.innerHTML;\n\n    this.value.emit(this.modelValue);\n  }\n\n  private updateValueWithModelValue() {\n    if (this.modelValue) {\n      this.bodyElement.nativeElement.insertAdjacentHTML('afterbegin', this.modelValue);\n    }\n  }\n\n  private verifyCursorPositionInFirefoxIEEdge(): boolean {\n    const textSelection = document.getSelection();\n    const nodeLink = textSelection.focusNode;\n    let isLink = false;\n\n    if (nodeLink && nodeLink.nodeName === 'A') {\n      this.linkElement = nodeLink;\n      isLink = true;\n    } else {\n      const range = textSelection.getRangeAt(0);\n      const fragmentDocument = range.cloneContents();\n      const element = fragmentDocument.childNodes[0] || fragmentDocument.firstElementChild;\n\n      this.linkElement = element && element.nodeName === 'A' ? element : undefined;\n      isLink = !!this.linkElement;\n    }\n\n    return isLink;\n  }\n\n  private get bodyEl(): HTMLElement {\n    return this.bodyElement?.nativeElement;\n  }\n\n  private updateHasValue(): void {\n    const text = this.bodyEl?.innerText?.trim();\n    this.hasValue = !!text;\n  }\n\n  private checkScrollState(): void {\n    const el = this.bodyEl;\n    if (!el) return;\n\n    this.hasScroll = el.scrollHeight > el.clientHeight;\n    this.cd.markForCheck();\n  }\n\n  private initResizeObserver(): void {\n    const el = this.bodyEl;\n    if (!el || typeof ResizeObserver === 'undefined') {\n      return;\n    }\n\n    this.resizeObserver = new ResizeObserver(() => {\n      this.checkScrollState();\n    });\n\n    this.resizeObserver.observe(el);\n  }\n}\n","<div class=\"po-field-container-rich-text-body\">\n  <div\n    #bodyElement\n    class=\"po-rich-text-body\"\n    [class.has-value]=\"hasValue\"\n    [class.has-scroll]=\"hasScroll\"\n    [class.has-loading]=\"loading\"\n    [class.po-rich-text-disabled]=\"disabled\"\n    [tabindex]=\"disabled ? -1 : 0\"\n    [attr.aria-label]=\"label\"\n    [attr.contenteditable]=\"!readonly && !disabled\"\n    [attr.data-placeholder]=\"placeholder\"\n    [style.height.px]=\"height\"\n    (blur)=\"onBlur()\"\n    (click)=\"onClick()\"\n    (cut)=\"update()\"\n    (focus)=\"onFocus()\"\n    (keydown)=\"onKeyDown($event)\"\n    (keyup)=\"onKeyUp($event)\"\n    (paste)=\"onPaste()\"\n  ></div>\n  @if (loading) {\n    <div class=\"po-field-icon-container-right po-rich-text-loading-container\">\n      <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n    </div>\n  }\n</div>\n","export const poRichTextLiteralsDefault = {\n  en: {\n    bold: 'Bold',\n    italic: 'Italic',\n    underline: 'Underline',\n    left: 'Left',\n    center: 'Center',\n    right: 'Right',\n    justify: 'Justify',\n    textColor: 'Text color',\n    unorderedList: 'Bulleted list',\n    insertLink: 'Insert link',\n    linkTextLabel: 'Text with link',\n    linkUrlTextHelper: 'Paste the copied link from the browser into the text box above',\n    linkUrlTextPlaceholder: 'Enter the link address that will be attached to the text.',\n    cancel: 'Cancel',\n    editLink: 'Edit link',\n    insert: 'Insert',\n    insertImage: 'Insert image',\n    urlImage: 'URL image'\n  },\n  es: {\n    bold: 'Negrita',\n    italic: 'Cursiva',\n    underline: 'Subrayado',\n    left: 'Izquierda',\n    center: 'Centro',\n    right: 'Derecha',\n    justify: 'Justificado',\n    textColor: 'Color del texto',\n    unorderedList: 'Lista con viñetas',\n    insertLink: 'Insertar el link',\n    linkTextLabel: 'Texto con enlace',\n    linkUrlTextHelper: 'Pega el enlace copiado del navegador en el cuadro de texto de arriba',\n    linkUrlTextPlaceholder: 'Ingrese la dirección del enlace que se adjuntará al texto.',\n    cancel: 'Cancelar',\n    editLink: 'Editar enlace',\n    insert: 'Insertar',\n    insertImage: 'Insertar imagen',\n    urlImage: 'Imagen URL'\n  },\n  pt: {\n    bold: 'Negrito',\n    italic: 'Itálico',\n    underline: 'Sublinhado',\n    left: 'Esquerda',\n    center: 'Centro',\n    right: 'Direita',\n    justify: 'Justificado',\n    textColor: 'Cor do texto',\n    unorderedList: 'Lista com marcadores',\n    insertLink: 'Inserir link',\n    linkTextLabel: 'Texto com link',\n    linkUrlTextHelper: 'Cole o link copiado do navegador na caixa de texto acima',\n    linkUrlTextPlaceholder: 'Insira o endereço do link que será anexado ao texto',\n    cancel: 'Cancelar',\n    editLink: 'Editar link',\n    insert: 'Inserir',\n    insertImage: 'Inserir imagem',\n    urlImage: 'Imagem em URL'\n  },\n  ru: {\n    bold: 'Жирный',\n    italic: 'Италик',\n    underline: 'Подчеркивание',\n    left: 'Влево',\n    center: 'Центр',\n    right: 'Вправо',\n    justify: 'Растянуть',\n    textColor: 'Цвет текста',\n    unorderedList: 'Список',\n    insertLink: 'Вставьте ссылку',\n    linkTextLabel: 'Текст со ссылкой',\n    linkUrlTextHelper: 'Вставьте скопированную ссылку из браузера в текстовое поле выше',\n    linkUrlTextPlaceholder: 'Вставьте ссылку для привязки к тексту',\n    cancel: 'Отмена',\n    editLink: 'Редактировать ссылку',\n    insert: 'Вставить',\n    insertImage: 'Вставить изображение',\n    urlImage: 'Ссылка на изображение'\n  }\n};\n","// Enum de status de envio dos arquivos.\nexport enum PoUploadStatus {\n  // Enviou com sucesso.\n  Uploaded,\n  // Está enviando.\n  Uploading,\n  // Ocorreu algum erro no envio.\n  Error,\n  // Não enviou ou aconteceu algum erro.\n  None\n}\n","import { PoUploadStatus } from './po-upload-status.enum';\n\n// Classe responsável pelo arquivo do PO Upload\nexport class PoUploadFile {\n  // Nome do arquivo.\n  public name: string;\n  // Arquivo bruto.\n  public rawFile: File;\n  // Status de envio do arquivo.\n  public status?: PoUploadStatus;\n  // Identificador do arquivo.\n  public uid: string;\n  // Extensão do arquivo.\n  public extension: string;\n  // Tamanho do arquivo em bytes;\n  public size: number;\n\n  // propriedade para auxiliar a exibição do texto no componente progress\n  displayName?: string;\n\n  // porcentagem utilizada para repassar ao componente progress\n  percent?: number;\n\n  // indica que o tamanho do arquivo não é permitido\n  sizeNotAllowed?: boolean;\n\n  // indica que a extensão do arquivo não é permitida\n  extensionNotAllowed?: boolean;\n\n  // Propriedade interna que indica que o status de sucesso deve estar oculto\n  hideDoneContent?: boolean;\n\n  // Propriedade interna para mensagem de erro\n  errorMessage?: string;\n\n  // Propriedade interna para url da thumbnail\n  thumbnailUrl?: string;\n\n  // Propriedade interna para controlar se houve erro ao carregar a imagem da thumbnail.\n  imageError?: boolean;\n\n  constructor(file: any) {\n    if (file) {\n      this.name = file.name;\n      this.displayName = `${file.name} - ${this.getFileSize(file.size)}`;\n      this.extension = this.getExtension(file.name);\n      this.size = file.size;\n      this.rawFile = file;\n      this.uid = this.generateUUID();\n      this.status = PoUploadStatus.None;\n    }\n  }\n\n  private getExtension(value: string) {\n    if (value) {\n      const extension = value.substr(value.lastIndexOf('.'));\n      return extension.toLowerCase();\n    }\n\n    return '';\n  }\n\n  private generateUUID() {\n    function s4() {\n      return Math.floor((1 + Math.random()) * 0x10000)\n        .toString(16)\n        .substring(1);\n    }\n\n    return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n  }\n\n  // Retorna o tamanho do arquivo em KBytes.\n  private getFileSize(size: number): string {\n    let kbSize = 0;\n\n    if (size) {\n      kbSize = Math.ceil(size / 1024);\n    }\n\n    return `${kbSize} KB`;\n  }\n}\n","import { Injectable, EventEmitter, inject } from '@angular/core';\nimport {\n  HttpClient,\n  HttpEventType,\n  HttpErrorResponse,\n  HttpRequest,\n  HttpResponse,\n  HttpHeaders\n} from '@angular/common/http';\n\nimport { PoUploadFile } from './po-upload-file';\n\nimport { Observable, Subscription } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoUploadBaseService {\n  private readonly http = inject(HttpClient);\n\n  formField: string = 'files';\n  requests: Array<any> = [];\n\n  /**\n   * Método responsável por enviar os arquivos ao servidor, conforme o parâmetro URL.\n   *\n   * @param url URL da requisição a ser efetuada.\n   * @param files Arquivos a serem enviados.\n   * @param tOnUpload Função a ser executada quando o arquivo for enviado ao servidor.\n   * @param uploadCallback Função que será executada enquanto os arquivos estiverem sendo enviados.\n   * @param successCallback Função a ser executada quando a requisição for efetuada com sucesso.\n   * @param errorCallback Função a ser executada quando a requisição foi efetuada com sucesso.\n   */\n  public upload(\n    url: string,\n    files: Array<PoUploadFile>,\n    headers: { [name: string]: string | Array<string> },\n    tOnUpload: EventEmitter<any>,\n    uploadCallback: (file: PoUploadFile, percent: number) => void,\n    successCallback: (file: PoUploadFile, event: any) => void,\n    errorCallback: (file: PoUploadFile, event: any) => void\n  ) {\n    const filesLength = files.length;\n    const uploadEvent: any = {\n      data: {},\n      extraFormData: {},\n      file: null,\n      url: url,\n      headers: headers\n    };\n\n    for (let i = 0; i < filesLength; i++) {\n      const formData: FormData = new FormData();\n      const file = files[i];\n      const fileName = file.rawFile.name;\n\n      formData.append(this.formField, file.rawFile, fileName);\n\n      // Função upload, onde o desenvolvedor pode enviar dados para a requisição.\n      if (tOnUpload) {\n        uploadEvent['file'] = file;\n        tOnUpload.emit(uploadEvent);\n\n        Object.keys(uploadEvent.extraFormData).forEach(key => {\n          formData.append(key, uploadEvent.extraFormData[key]);\n        });\n\n        formData.append('data', JSON.stringify(uploadEvent.data));\n        url = uploadEvent.url;\n        headers = uploadEvent.headers;\n      }\n\n      this.sendFile(url, file, headers, formData, uploadCallback, successCallback, errorCallback);\n    }\n  }\n\n  public sendFile(\n    url: string,\n    file: PoUploadFile,\n    headers: { [name: string]: string | Array<string> },\n    formData: FormData,\n    uploadCallback: (file: PoUploadFile, percent: number) => void,\n    successCallback: (file: PoUploadFile, event: any) => void,\n    errorCallback: (file: PoUploadFile, event: any) => void\n  ) {\n    let request: Subscription = new Subscription();\n    request = this.getRequest(url, headers, formData).subscribe(\n      event => {\n        if (event.type === HttpEventType.UploadProgress) {\n          this.addRequest(file, request);\n\n          const percentDone = Math.round((100 * event.loaded) / event.total);\n          uploadCallback(file, percentDone);\n        } else if (event instanceof HttpResponse) {\n          // Sucesso, arquivos enviados.\n          successCallback(file, event);\n        }\n      },\n      (err: HttpErrorResponse) => {\n        errorCallback(file, err);\n      }\n    );\n  }\n\n  public getRequest(\n    url: string,\n    headers: { [name: string]: string | Array<string> },\n    formData: FormData\n  ): Observable<any> {\n    const httpHeaders = new HttpHeaders(headers);\n\n    const req = new HttpRequest('POST', url, formData, {\n      reportProgress: true,\n      headers: httpHeaders\n    });\n    return this.http.request(req);\n  }\n\n  public stopRequestByFile(file: any, callback: () => void) {\n    const requestObj = this.requests.find(req => req.file.uid === file.uid);\n\n    if (requestObj) {\n      const request = requestObj.request;\n      request.unsubscribe();\n      this.removeRequest(requestObj);\n      callback();\n    }\n  }\n\n  public removeRequest(requestObj: any) {\n    const index = this.requests.indexOf(requestObj);\n    this.requests.splice(index, 1);\n  }\n\n  public addRequest(file: PoUploadFile, request: Subscription) {\n    const hasRequest = this.requests.some(req => req.file.uid === file.uid);\n\n    if (!hasRequest) {\n      this.requests.push({ file, request });\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { PoUploadBaseService } from './po-upload-base.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoUploadService extends PoUploadBaseService {}\n","import {\n  ChangeDetectorRef,\n  Directive,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  input,\n  Input,\n  Output\n} from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, Validator } from '@angular/forms';\n\nimport { convertToBoolean, getDefaultSizeFn, isEquals, validateSizeFn, PoUtils } from '../../../utils/util';\nimport { PoValidators } from '../validators';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { poLocaleDefault } from '../../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport { PoModalAction } from '../../po-modal';\nimport { PoProgressAction } from '../../po-progress';\nimport { PoUploadFileRestrictions } from './interfaces/po-upload-file-restriction.interface';\nimport { PoUploadLiterals } from './interfaces/po-upload-literals.interface';\nimport { PoUploadFile } from './po-upload-file';\nimport { PoUploadStatus } from './po-upload-status.enum';\nimport { PoUploadService } from './po-upload.service';\nimport { PoHelperOptions } from '../../po-helper';\n\nexport const poUploadLiteralsDefault = {\n  en: <PoUploadLiterals>{\n    files: 'files',\n    folders: 'folders',\n    selectFile: 'Select file',\n    selectFiles: 'Select files',\n    selectFolder: 'Select folder',\n    startSending: 'Start sending',\n    dragFilesHere: 'Drag files here',\n    dragFoldersHere: 'Drag folders here',\n    selectFilesOnComputer: 'or select files on your computer',\n    selectFolderOnComputer: 'or select folder on your computer',\n    dropFilesHere: 'Drop files here',\n    dropFoldersHere: 'Drop folders here',\n    invalidDropArea: '{0} were not dropped in the correct area',\n    invalidFileType: 'Failed to load {0} file(s) as it is not the allowed file type.',\n    invalidAmount: 'Failed to load {0} file(s), as it exceeds the limit amount of files.',\n    invalidFormat: 'Failed to load {0} file(s), as it does not match the format(s): {1}.',\n    invalidSize: 'Failed to load {0} files(s), as it is not the allowed size: from {1} to {2}.',\n    numberOfFilesAllowed: '{0} file(s) allowed',\n    allowedFormats: 'Accepted file formats: {0}.',\n    allowedFileSizeRange: 'Size limit per file: from {0} to {1}',\n    maxFileSizeAllowed: 'Size limit per file: {0} maximum',\n    minFileSizeAllowed: 'Size limit per file: {0} minimum',\n    errorOccurred: 'An error has occurred',\n    sentWithSuccess: 'Sent with success',\n    doneText: 'Done',\n    uploadingText: 'Uploading',\n    tryAgain: 'Try again',\n    close: 'Close file',\n    preview: 'Preview',\n    thumbnail: 'thumbnail',\n    continue: 'Continue'\n  },\n  es: <PoUploadLiterals>{\n    files: 'archivos',\n    folders: 'carpetas',\n    selectFile: 'Seleccionar archivo',\n    selectFiles: 'Seleccionar archivos',\n    selectFolder: 'Seleccionar carpeta',\n    startSending: 'Iniciar carga',\n    dragFilesHere: 'Arrastra los archivos aquí',\n    dragFoldersHere: 'Arrastra las carpetas aquí',\n    selectFilesOnComputer: 'o selecciona los archivos en tu computadora',\n    selectFolderOnComputer: 'o selecciona la carpeta en tu computadora',\n    dropFilesHere: 'Deja los archivos aquí',\n    dropFoldersHere: 'Deja las carpetas aquí',\n    invalidDropArea: 'Los {0} no se insertaron en la ubicación correcta',\n    invalidFileType: 'Error al cargar {0} archivo (s) ya que no es el tipo de archivo permitido',\n    invalidAmount: 'Error al cargar {0} archivo (s) ya que excede la cantidad limite de archivos.',\n    invalidFormat: 'Error al cargar {0} archivo (s) ya que no coincide con el formato (s): {1}.',\n    invalidSize: 'Error al cargar {0} archivo (s) ya que no cumple con el tamaño permitido: desde {1} hasta {2}.',\n    numberOfFilesAllowed: '{0} archivo(s) permitido(s)',\n    allowedFormats: 'Formatos aceptados: {0}.',\n    allowedFileSizeRange: 'Limite de tamaño de archivo: desde {0} hasta {1}',\n    maxFileSizeAllowed: 'Limite de tamaño de archivo: hasta {0}',\n    minFileSizeAllowed: 'Limite de tamaño de archivo: minimo {0}',\n    errorOccurred: 'Ocurrio un error',\n    sentWithSuccess: 'Enviado con éxito',\n    doneText: 'Hecho',\n    uploadingText: 'Subiendo',\n    tryAgain: 'Inténtalo de nuevo',\n    close: 'Cerrar archivo',\n    preview: 'Vista previa',\n    thumbnail: 'miniatura',\n    continue: 'Continuar'\n  },\n  pt: <PoUploadLiterals>{\n    files: 'arquivos',\n    folders: 'diretórios',\n    selectFile: 'Selecionar arquivo',\n    selectFiles: 'Selecionar arquivos',\n    selectFolder: 'Selecionar pasta',\n    startSending: 'Iniciar envio',\n    dragFilesHere: 'Arraste os arquivos aqui',\n    dragFoldersHere: 'Arraste as pastas aqui',\n    selectFilesOnComputer: 'ou selecione os arquivos no computador',\n    selectFolderOnComputer: 'ou selecione a pasta no computador',\n    dropFilesHere: 'Solte os arquivos aqui',\n    dropFoldersHere: 'Solte as pastas aqui',\n    invalidDropArea: 'Os {0} não foram inseridos no local correto',\n    invalidFileType: 'Falha ao carregar {0} arquivo (s), pois não é o tipo de arquivo permitido',\n    invalidAmount: 'Falha ao carregar {0} arquivo(s), pois excede(m) a quantidade limite de arquivos.',\n    invalidFormat: 'Falha ao carregar {0} arquivo(s), pois não corresponde(m) ao(s) formato(s): {1}.',\n    invalidSize: 'Falha ao carregar {0} arquivo(s), pois não atende ao tamanho permitido: {1} até {2}.',\n    numberOfFilesAllowed: 'Quantidade máxima: {0} arquivo(s)',\n    allowedFormats: 'Formatos adotados: {0}.',\n    allowedFileSizeRange: 'Limite de tamanho por arquivo: de {0} até {1}',\n    maxFileSizeAllowed: 'Limite de tamanho por arquivo: até {0}',\n    minFileSizeAllowed: 'Limite de tamanho por arquivo: no mínimo {0}',\n    errorOccurred: 'Ocorreu um erro',\n    sentWithSuccess: 'Enviado com sucesso',\n    doneText: 'Concluido',\n    uploadingText: 'Enviando',\n    tryAgain: 'Tente novamente',\n    close: 'Fechar arquivo',\n    preview: 'Pré-visualizar',\n    thumbnail: 'miniatura',\n    continue: 'Continuar'\n  },\n  ru: <PoUploadLiterals>{\n    files: 'файлы',\n    folders: 'папки с файлами',\n    selectFile: 'Выберите файл',\n    selectFiles: 'Выберите файлы',\n    selectFolder: 'Выберите папку с файлами',\n    startSending: 'Начать загрузку',\n    dragFilesHere: 'Перетащите файлы сюда',\n    dragFoldersHere: 'Перетащите сюда папки',\n    selectFilesOnComputer: 'или выберите файлы на компьютере',\n    selectFolderOnComputer: 'или выберите папку на вашем компьютере',\n    dropFilesHere: 'Оставьте файлы здесь',\n    dropFoldersHere: 'Перетащите сюда папки',\n    invalidDropArea: '{0} не были вставлены в правильном месте.',\n    invalidFileType: 'Не удалось загрузить файлы {0}, так как это неверный тип файла',\n    invalidAmount: 'Não foi possível carregar os arquivos {0} porque eles excederam o limite de arquivos.',\n    invalidFormat: 'Не удалось загрузить файлы {0}, так как они не соответствуют формату (ам): {1}.',\n    invalidSize: 'Не удалось загрузить файлы {0}, поскольку они не соответствуют разрешенному размеру: от {1} до {2}.',\n    numberOfFilesAllowed: 'Максимальное количество: {0} файлов',\n    allowedFormats: 'Форматы приняты: {0}.',\n    allowedFileSizeRange: 'Ограничение размера файла: от {0} до {1}',\n    maxFileSizeAllowed: 'Ограничение размера файла: до {0}',\n    minFileSizeAllowed: 'Ограничение размера файла: не менее {0}',\n    errorOccurred: 'Произошла ошибка.',\n    sentWithSuccess: 'Успешно отправлено',\n    doneText: 'Сделанный',\n    uploadingText: 'Загрузка',\n    tryAgain: 'Попробуйте еще раз',\n    close: 'Закрыть файл',\n    preview: 'Просмотр',\n    thumbnail: 'миниатюра',\n    continue: 'Продолжить'\n  }\n};\n\nconst poUploadFormFieldDefault = 'files';\n\nconst poUploadMaxFileSize = 31457280; // 30MB\nconst poUploadMinFileSize = 0;\n\n/**\n * @description\n *\n * O componente `po-upload` permite que o usuário envie arquivo(s) ao servidor e acompanhe o progresso.\n * Este componente também possibilita algumas configurações como:\n *  – Envio de diretórios, onde ele acessa o diretório selecionado assim como seus sub-diretórios;\n *  - Múltipla seleção, onde o usuário pode enviar mais de um arquivo ao servidor.\n *  - Auto envio, onde o arquivo é enviado imediatamente após a seleção do usuário, não necessitando que o usuário\n * clique em enviar.\n *  - Restrições de formatos de arquivo e tamanho.\n *  - Função de sucesso que será disparada quando os arquivos forem enviados com sucesso.\n *  - Função de erro que será disparada quando houver erro no envio dos arquivos.\n *  - Permite habilitar uma área onde os arquivos podem ser arrastados.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                      |\n * |----------------------------------------|-------------------------------------------------------|---------------------------------------------------|\n * | **FIELD CONTAINER**                    |                                                       |                                                   |\n * | `--field-container-title-justify`      | Alinhamento horizontal do título (`justify-content`)  | `space-between`                                   |\n * | `--field-container-title-flex`         | Flex do título (`flex`)                               | `1 auto`                                          |\n * | **TEXT SUPPORT**                       |                                                       |                                                   |\n * | `--font-family-text-support`           | Família tipográfica usada no texto de suporte         | `var(--font-family-theme)`                        |\n * | `--text-color-text-support`            | Cor da fonte no texto de suporte                      | `var(--color-neutral-dark-90)`                    |\n * | **UPLOAD CONTENT**                     |                                                       |                                                   |\n * | `--background-color-content` &nbsp;    | Cor de fundo                                          | `var(--color-neutral-light-10)`                   |\n * | `--border-color-content`               | Cor da borda                                          | `var(--color-neutral-light-20)`                   |\n * | `--border-radius-content`              | Contém o valor do raio dos cantos do elemento         | `var(--border-radius-md)`                         |\n * | `--text-color-file-name`               | Cor do texto do nome do arquivo                       | `var(--color-neutral-dark-90)`                    |\n * | `--font-family-file-name`              | Família tipográfica usada no texto do arquivo         | `var(--font-family-theme)`                        |\n * | `--text-color-info-bar`                | Cor do texto de informação                            | `var(--color-neutral-mid-60)`                     |\n * | `--font-family-info-bar`               | Família tipográfica usada no texto de informação      | `var(--font-family-theme)`                        |\n * | **ERROR STATE**                        |                                                       |                                                   |\n * | `--background-color-content-error`     | Cor de fundo do container de erro                     | `var(--color-neutral-light-00)`                   |\n * | `--border-color-content-error`         | Cor da borda do container de erro                     | `var(--color-feedback-negative-base)`             |\n * | `--text-color-error`                   | Cor do texto do container de erro                     | `var(--color-feedback-negative-dark)`             |\n * | `--color-icon-error`                   | Cor do ícone no estado de erro                        | `var(--color-feedback-negative-base)`             |\n * | `--font-family-error`                  | Família tipográfica usada no texto de erro            | `var(--font-family-theme)`                        |\n * | **UPLOADED STATE**                     |                                                       |                                                   |\n * | `--background-color-content-uploaded`  | Cor de fundo do container com status de enviado       | `var(--color-neutral-light-00)`                   |\n * | `--border-color-content-uploaded`      | Cor da borda do container com status de enviado       | `var(--color-neutral-light-20)`                   |\n * | **INTERACTIVE STATE**                  |                                                       |                                                   |\n * | `--text-color-file-name-interactive`   | Cor do texto do nome do arquivo quando interativo     | `var(--color-action-default)`                     |\n * | **THUMBNAIL**                          |                                                       |                                                   |\n * | `--color-icon-thumbnail`               | Cor do ícone na thumbnail                             | `var(--color-action-default)`                     |\n * | `--border-width-thumbnail`             | Tamanho da fonte na thumbnail                         | `var(--border-width-sm)`                          |\n * | `--border-radius-thumbnail`            | Contém o valor do raio dos cantos na thumbnail        | `var(--border-radius-md)`                         |\n * | `--background-color-thumbnail`         | Cor de fundo na thumbnail                             | `var(--color-neutral-light-05)`                   |\n * | **Focused**                            |                                                       |                                                   |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                     | `var(--color-action-focus)`                       |\n */\n@Directive()\nexport abstract class PoUploadBaseComponent implements ControlValueAccessor, Validator {\n  // Propriedade interna que define se o ícone de ajuda adicional terá cursor clicável (evento) ou padrão (tooltip).\n  @Input() additionalHelpEventTrigger: string | undefined;\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de ajuda adicional, com o texto desta propriedade sendo passado para o popover do componente `po-helper`.\n   * **Como boa prática, indica-se utilizar um texto com até 140 caracteres.**\n   * > Requer um recuo mínimo de 8px se o componente estiver próximo à lateral da tela.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Input('p-additional-help-tooltip') additionalHelpTooltip?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o popover (`p-helper`) será incluído no body da página e não dentro do componente. Essa\n   * opção pode ser necessária em cenários com containers que possuem scroll ou overflow escondido, garantindo o\n   * posicionamento correto do tooltip próximo ao elemento.\n   *\n   * > Quando utilizado com `p-helper`, leitores de tela como o NVDA podem não ler o conteúdo do popover.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendBox?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Aplica foco no elemento ao ser iniciado.\n   *\n   * > Caso mais de um elemento seja configurado com essa propriedade, apenas o último elemento declarado com ela terá o foco.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-auto-focus', transform: convertToBoolean }) autoFocus: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define em *pixels* a altura da área onde podem ser arrastados os arquivos. A altura mínima aceita é `160px`.\n   *\n   * > Esta propriedade funciona somente se a propriedade `p-drag-drop` estiver habilitada.\n   *\n   * @default `320`\n   */\n  @Input('p-drag-drop-height') dragDropHeight: number;\n\n  /** Rótulo do campo. */\n  @Input('p-label') label?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define se o título do campo será exibido de forma compacta.\n   *\n   * Quando habilitado (`true`), o modo compacto afeta o conjunto composto por:\n   * - `po-label`\n   * - `p-requirement (showRequired)`\n   * - `po-helper`\n   *\n   * Ou seja, todos os elementos relacionados ao título do campo\n   * (rótulo, indicador de obrigatoriedade e componente auxiliar) passam\n   * a seguir o comportamento de layout compacto.\n   *\n   * Também é possível definir esse comportamento de forma global,\n   * uma única vez, na folha de estilo geral da aplicação, por meio\n   * da customização dos tokens CSS:\n   *\n   * - `--field-container-title-justify`\n   * - `--field-container-title-flex`\n   *\n   * Exemplo:\n   *\n   * ```\n   * :root {\n   *   --field-container-title-justify: flex-start;\n   *   --field-container-title-flex: 0 1 auto;\n   * }\n   * ```\n   *\n   * Dessa forma, o layout compacto passa a ser o padrão da aplicação,\n   * sem a necessidade de definir a propriedade individualmente em cada campo.\n   *\n   * @default `false`\n   */\n  compactLabel = input<boolean, unknown>(false, { alias: 'p-compact-label', transform: convertToBoolean });\n\n  /** Texto de apoio para o campo. */\n  @Input('p-help') help?: string;\n\n  /** URL que deve ser feita a requisição com os arquivos selecionados. */\n  @Input('p-url') url: string;\n\n  /** Define o valor do atributo `name` do componente. */\n  @Input('name') name: string = 'file';\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se o envio do arquivo será automático ao selecionar o mesmo.\n   *\n   * > Esta propriedade funciona somente se a propriedade `p-url` tiver um valor atribuído.\n   *\n   * @default `false`\n   */\n  @Input('p-auto-upload') autoUpload?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita botão de remover o(s) arquivo(s) selecionado(s).\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-disabled-remove-file', transform: convertToBoolean }) disabledRemoveFile: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se a indicação de campo opcional será exibida.\n   *\n   * > Não será exibida a indicação se:\n   *  - O campo conter `p-required`;\n   *  - Não possuir `p-help` e/ou `p-label`.\n   *\n   * @default `false`\n   */\n  @Input('p-optional') optional: boolean;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe a pré-visualização de imagens ao anexá-las.\n   *\n   * > Propriedade funciona apenas em arquivos de formato de imagem (`.png`, `.jpg`, `.jpeg` e `.gif`).\n   * Será ignorada em outros tipos de arquivo.\n   *\n   * @default `true`\n   */\n  @Input('p-show-thumbnail') showThumbnail: boolean = true;\n\n  /** Objeto que contém os cabeçalhos que será enviado na requisição dos arquivos. */\n  @Input('p-headers') headers: { [name: string]: string | Array<string> };\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se a propriedade `p-url` é obrigatória.\n   *\n   * Caso a propriedade seja definida como `false`:\n   * - o botão de \"Selecionar arquivo\" ficará habilitado mesmo sem a propriedade `p-url` definida.\n   * - o botão \"Iniciar envio\" ficará oculto até que a propriedade `p-url` seja definida.\n   *\n   * > Se utilizada com a propriedade `p-auto-upload` definida como `true` será necessário definir a propriedade `p-url`.\n   *\n   * @default `true`\n   */\n  @HostBinding('attr.p-required-url')\n  @Input({ alias: 'p-required-url', transform: convertToBoolean })\n  requiredUrl: boolean = true;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as opções do componente de ajuda (po-helper) que será exibido ao lado do label quando a propriedade `p-label` for definida, ou, ao lado do componente na ausência da propriedade `p-label`.\n   * > Para mais informações acesse: https://po-ui.io/documentation/po-helper.\n   *\n   * > Ao configurar esta propriedade, o antigo ícone de ajuda adicional (`p-additional-help-tooltip` e `p-additional-help`) será ignorado.\n   */\n  poHelperComponent = input<PoHelperOptions | string>(undefined, { alias: 'p-helper' });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a quebra automática do texto da propriedade `p-label`. Quando `p-label-text-wrap` for verdadeiro, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * @default `false`\n   */\n  labelTextWrap = input<boolean>(false, { alias: 'p-label-text-wrap' });\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar no ícone de ajuda adicional.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Output('p-additional-help') additionalHelp = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define uma ação personalizada no componente `po-upload`, adicionando um botão no canto inferior direito\n   * de cada barra de progresso associada aos arquivos enviados ou em envio.\n   *\n   * A ação deve implementar a interface **PoProgressAction**, permitindo configurar propriedades como:\n   * - `label`: Texto do botão.\n   * - `icon`: Ícone a ser exibido no botão.\n   * - `type`: Tipo de botão (ex.: `danger` ou `default`).\n   * - `disabled`: Indica se o botão deve estar desabilitado.\n   * - `visible`: Indica se o botão deve estar visível.\n   *\n   * **Exemplo de uso:**\n   *\n   * ```html\n   * <po-upload\n   *  [p-custom-action]=\"customAction\"\n   *  (p-custom-action-click)=\"onCustomActionClick($event)\">\n   * </po-upload>\n   * ```\n   *\n   * ```typescript\n   * customAction: PoProgressAction = {\n   *   label: 'Baixar',\n   *   icon: 'an an-download',\n   *   type: 'default',\n   *   visible: true\n   * };\n   *\n   * onCustomActionClick(file: PoUploadFile) {\n   *   console.log(`Ação personalizada clicada para o arquivo: ${file.name}`);\n   * }\n   * ```\n   */\n  @Input('p-custom-action') customAction?: PoProgressAction;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define uma ou duas ações personalizadas do modal de pré-visualização, adicionando um botão ou dois botões no canto inferior direito\n   * do modal.\n   *\n   * A ação deve implementar a interface **PoModalAction**, permitindo configurar propriedades como:\n   * - `label`: Texto do botão.\n   * - `action`: Ícone a ser exibido no botão.\n   * - `danger`: Define a propriedade `p-danger` do botão.\n   * - `disabled`: Indica se o botão deve estar desabilitado.\n   * - `visible`: Indica se o botão deve estar visível.\n   *\n   * **Exemplo de uso:**\n   *\n   * ```html\n   * <po-upload\n   *  [p-custom-modal-actions]=\"customActions\"\n   * </po-upload>\n   * ```\n   *\n   * ```typescript\n   * customActions:  Array<PoModalAction> = [\n   *  { label: 'Confirmar', action: this.confirmModal.bind(this) },\n   *  { label: 'Cancelar', action: this.closeModal.bind(this) }\n   *];\n   *\n   * ```\n   */\n  @Input('p-custom-modal-actions') customModalActions?: Array<PoModalAction>;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento emitido ao clicar na ação personalizada configurada no `p-custom-action`.\n   *\n   * O evento retorna o arquivo associado à barra de progresso onde a ação foi clicada,\n   * permitindo executar operações específicas para aquele arquivo.\n   *\n   * **Exemplo de uso:**\n   *\n   * ```html\n   * <po-upload\n   *  [p-custom-action]=\"customAction\"\n   *  (p-custom-action-click)=\"onCustomActionClick($event)\">\n   * </po-upload>\n   * ```\n   *\n   * ```typescript\n   * customAction: PoProgressAction = {\n   *   label: 'Baixar',\n   *   icon: 'an an-download',\n   *   type: 'default',\n   *   visible: true\n   * };\n   *\n   * onCustomActionClick(file: PoUploadFile) {\n   *   console.log(`Ação personalizada clicada para o arquivo: ${file.name}`);\n   *   // Lógica para download do arquivo\n   *   this.downloadFile(file);\n   * }\n   *\n   * downloadFile(file: PoUploadFile) {\n   *   // Exemplo de download\n   *   console.log(`Iniciando o download do arquivo: ${file.name}`);\n   * }\n   * ```\n   */\n  @Output('p-custom-action-click') customActionClick: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado quando uma tecla é pressionada enquanto o foco está no componente.\n   * Retorna um objeto `KeyboardEvent` com informações sobre a tecla.\n   */\n  @Output('p-keydown') keydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Função que será executada no momento de realizar o envio do arquivo,\n   * onde será possível adicionar informações ao parâmetro que será enviado na requisição.\n   * É passado por parâmetro um objeto com o arquivo e as propriedades data e extraFormData,\n   * que serão enviadas em conjunto com o arquivo na requisição, por exemplo:\n   *\n   * > data, nesta propriedade pode ser informado algum dado\n   * ```\n   *   event.data = {id: 'id do usuário'};\n   * ```\n   * > extraFormData, nesta propriedade pode ser informado algum dado solicitado pela API\n   * > que não possa estar no objeto `data`, assim o conteúdo sará extraído do objeto e\n   * > enviado como parâmetro\n   * ```\n   *   event.extraFormData = {id: 'id do usuário'};\n   * ```\n   */\n  @Output('p-upload') onUpload: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento será disparado ao clicar no ícone de fechar.\n   * > Por parâmetro será passado o objeto do arquivo.\n   */\n  @Output('p-cancel') onCancel: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento será disparado ao abrir o modal de pré-visualização.\n   * > Por parâmetro será passado o objeto do arquivo.\n   */\n  @Output('p-open-modal-preview') onOpenModalPreview: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento será disparado ao clicar no ícone de remover.\n   * > Por parâmetro será passado o objeto do arquivo.\n   */\n  @Output('p-remove') onRemove: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento será disparado quando ocorrer algum erro no envio do arquivo.\n   * > Por parâmetro será passado o objeto do retorno que é do tipo `HttpErrorResponse`.\n   */\n  @Output('p-error') onError: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento será disparado quando o envio do arquivo for realizado com sucesso.\n   * > Por parâmetro será passado o objeto do retorno que é do tipo `HttpResponse`.\n   */\n  @Output('p-success') onSuccess: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Função para atualizar o ngModel do componente, necessário quando não for utilizado dentro da *tag* `form`.\n   *\n   * Na versão 12.2.0 do Angular a verificação `strictTemplates` vem true como default. Portanto, para utilizar\n   * two-way binding no componente deve se utilizar da seguinte forma:\n   *\n   * ```\n   * <po-upload ... [ngModel]=\"UploadModel\" (ngModelChange)=\"uploadModel = $event\"> </po-upload>\n   * ```\n   *\n   */\n  @Output('ngModelChange') ngModelChange: EventEmitter<any> = new EventEmitter<any>();\n\n  allowedExtensions: string;\n  currentFiles: Array<PoUploadFile>;\n\n  canHandleDirectory: boolean;\n  displayAdditionalHelp: boolean = false;\n  onModelChange: any;\n\n  protected extensionNotAllowed = 0;\n  protected quantityNotAllowed = 0;\n  protected sizeNotAllowed = 0;\n  protected onModelTouched: any = null;\n\n  private _directory?: boolean;\n  private _disabled?: boolean;\n  private _dragDrop?: boolean = false;\n  private _fileRestrictions?: PoUploadFileRestrictions;\n  private _formField?: string;\n  private _hideRestrictionsInfo?: boolean;\n  private _hideSelectButton?: boolean;\n  private _hideSendButton?: boolean;\n  private _isMultiple?: boolean;\n  private _literals?: any;\n  private _loading: boolean = false;\n  private _required?: boolean;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n  private readonly language: string;\n  private validatorChange: any;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite a seleção de diretórios contendo um ou mais arquivos para envio.\n   *\n   * > A habilitação desta propriedade se restringe apenas à seleção de diretórios.\n   *\n   * > Definição não suportada pelo browser **Internet Explorer**, todavia será possível a seleção de arquivos padrão.\n   *\n   * @default `false`\n   */\n  @Input('p-directory') set directory(value: boolean) {\n    this._directory = convertToBoolean(value);\n\n    this.canHandleDirectory = this._directory && !PoUtils.isIE() && !PoUtils.isMobile();\n    this.setDirectoryAttribute(this.canHandleDirectory);\n  }\n\n  get directory() {\n    return this._directory;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe a área onde é possível arrastar e selecionar os arquivos. Quando estiver definida, omite o botão para seleção de arquivos\n   * automaticamente.\n   *\n   * > Recomendamos utilizar apenas um `po-upload` com esta funcionalidade por tela.\n   *\n   * @default `false`\n   */\n  @Input('p-drag-drop') set dragDrop(value: boolean) {\n    this._dragDrop = convertToBoolean(value);\n  }\n\n  get dragDrop() {\n    return this._dragDrop;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Oculta visualmente as informações de restrições para o upload.\n   *\n   * @default `false`\n   */\n  @Input('p-hide-restrictions-info') set hideRestrictionsInfo(value: boolean) {\n    this._hideRestrictionsInfo = convertToBoolean(value);\n  }\n\n  get hideRestrictionsInfo() {\n    return this._hideRestrictionsInfo;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Omite o botão de seleção de arquivos.\n   *\n   * > Caso o valor definido seja `true`, caberá ao desenvolvedor a responsabilidade\n   * pela chamada do método `selectFiles()` para seleção de arquivos.\n   *\n   * @default `false`\n   */\n  @Input('p-hide-select-button') set hideSelectButton(value: boolean) {\n    this._hideSelectButton = convertToBoolean(value);\n  }\n  get hideSelectButton(): boolean {\n    return this._hideSelectButton;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Omite o botão de envio de arquivos.\n   *\n   * > Caso o valor definido seja `true`, caberá ao desenvolvedor a responsabilidade\n   * pela chamada do método `sendFiles()` para envio do(s) arquivo(s) selecionado(s).\n   *\n   * @default `false`\n   */\n  @Input('p-hide-send-button') set hideSendButton(value: boolean) {\n    this._hideSendButton = convertToBoolean(value);\n  }\n  get hideSendButton(): boolean {\n    return this._hideSendButton;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com as literais usadas no `po-upload`.\n   *\n   * Existem duas maneiras de customizar o componente:\n   *\n   * - passando um objeto implementando a interface `PoUploadLiterals` com todas as literais disponíveis;\n   * - passando apenas as literais que deseja customizar:\n   *   ```\n   *    const customLiterals: PoUploadLiterals = {\n   *      folders: 'Pastas',\n   *      selectFile: 'Buscar arquivo',\n   *      startSending: 'Enviar'\n   *    };\n   *   ```\n   *\n   * E para carregar as literais customizadas, basta apenas passar o objeto para o componente:\n   *\n   * ```\n   * <po-upload\n   *   [p-literals]=\"customLiterals\">\n   * </po-upload>\n   * ```\n   *\n   * > O objeto padrão de literais será traduzido de acordo com o idioma do *browser* (pt, en, es, ru).\n   */\n  @Input('p-literals') set literals(value: PoUploadLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poUploadLiteralsDefault[poLocaleDefault],\n        ...poUploadLiteralsDefault[this.language],\n        ...value\n      };\n    } else {\n      this._literals = poUploadLiteralsDefault[this.language];\n    }\n  }\n  get literals() {\n    return this._literals || poUploadLiteralsDefault[this.language];\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto que segue a definição da interface `PoUploadFileRestrictions`,\n   * que possibilita definir tamanho máximo/mínimo e extensão dos arquivos permitidos.\n   */\n  @Input('p-restrictions') set fileRestrictions(restrictions: PoUploadFileRestrictions) {\n    this._fileRestrictions = this.initRestrictions(restrictions);\n\n    this.setAllowedExtensions(restrictions);\n  }\n\n  get fileRestrictions(): PoUploadFileRestrictions {\n    return this._fileRestrictions;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Nome do campo de formulário que será enviado para o serviço informado na propriedade `p-url`.\n   *\n   * @default `files`\n   */\n  @Input('p-form-field') set formField(value: string) {\n    this._formField = value && typeof value === 'string' ? value : poUploadFormFieldDefault;\n\n    this.getUploadService().formField = this.formField;\n  }\n\n  get formField(): string {\n    return this._formField;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica que o campo será desabilitado.\n   */\n  @Input('p-disabled') set disabled(value: boolean) {\n    this._disabled = convertToBoolean(value);\n\n    this.validateModel(this.currentFiles);\n  }\n\n  get disabled() {\n    return this._disabled;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de carregamento no botão `Selecionar arquivo`, à esquerda do texto, sinalizando que uma operação está em andamento.\n   *\n   * > Incompatível com `p-drag-drop` e `p-hide-select-button`, pois o estado de loading depende da exibição do botão `Selecionar arquivo`.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-loading', transform: convertToBoolean })\n  set loading(value: boolean) {\n    this._loading = value;\n    this.cd?.markForCheck();\n  }\n\n  get loading(): boolean {\n    return this._loading;\n  }\n\n  get isDisabled(): boolean {\n    return this.disabled || this.loading;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se pode selecionar mais de um arquivo.\n   *\n   * > Se utilizada a `p-directory`, habilita-se automaticamente esta propriedade.\n   */\n  @Input('p-multiple') set isMultiple(value: boolean) {\n    this._isMultiple = convertToBoolean(value);\n  }\n\n  get isMultiple() {\n    return this.canHandleDirectory ? true : this._isMultiple;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o campo será obrigatório.\n   *\n   * @default `false`\n   */\n  @Input('p-required') set required(required: boolean) {\n    this._required = convertToBoolean(required);\n\n    this.validateModel(this.currentFiles);\n  }\n\n  get required() {\n    return this._required;\n  }\n\n  /**\n   * Define se a indicação de campo obrigatório será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - Não possuir `p-help` e/ou `p-label`.\n   */\n  @Input('p-show-required') showRequired: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho e as ações do componente:\n   * - `small`: altura do button como 32px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura do button como 44px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  constructor(\n    protected uploadService: PoUploadService,\n    languageService: PoLanguageService,\n    protected cd: ChangeDetectorRef\n  ) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar os estados de habilitado via forms api\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n    this.cd.markForCheck();\n  }\n\n  registerOnChange(fn: any): void {\n    this.onModelChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onModelTouched = fn;\n  }\n\n  registerOnValidatorChange(fn: () => void) {\n    this.validatorChange = fn;\n  }\n\n  validate(abstractControl: AbstractControl): { [key: string]: any } {\n    if (PoValidators.requiredFailed(this.required, this.disabled, abstractControl.value)) {\n      return {\n        required: {\n          valid: false\n        }\n      };\n    }\n  }\n\n  writeValue(model: any): void {\n    if (model) {\n      if (!isEquals(this.currentFiles, model)) {\n        this.currentFiles = this.parseFiles(model);\n      }\n    } else {\n      this.currentFiles = undefined;\n    }\n  }\n\n  protected isExceededFileLimit(currentFilesLength: number): boolean {\n    return (\n      this.isMultiple &&\n      this.fileRestrictions &&\n      this.fileRestrictions.maxFiles > 0 &&\n      this.fileRestrictions.maxFiles <= currentFilesLength\n    );\n  }\n\n  // Faz o parse dos arquivos selecionados para arquivos do formato PoUploadFile e atualiza os arquivos correntes.\n  protected parseFiles(files: Array<File>): Array<PoUploadFile> {\n    let poUploadFiles: Array<PoUploadFile> = this.currentFiles || [];\n    const filesLength = files.length;\n\n    for (let i = 0; i < filesLength; i++) {\n      if (this.isExceededFileLimit(poUploadFiles.length)) {\n        this.quantityNotAllowed = filesLength - this.fileRestrictions.maxFiles;\n        break;\n      }\n      const file = new PoUploadFile(files[i]);\n      let currentFile: any = file;\n\n      if (!this.checkRestrictions(file)) {\n        currentFile = {\n          uid: file.uid,\n          displayName: file.displayName,\n          name: file.name,\n          extension: file.extension,\n          size: file.size,\n          status: 2,\n          sizeNotAllowed: file.sizeNotAllowed,\n          extensionNotAllowed: file.extensionNotAllowed,\n          errorMessage: ''\n        };\n      }\n\n      if (this.showThumbnail && currentFile.rawFile?.type?.startsWith('image/')) {\n        PoUtils.convertImageToBase64(currentFile.rawFile).then(base64 => {\n          currentFile.thumbnailUrl = base64;\n          this.cd.detectChanges();\n        });\n      }\n\n      poUploadFiles = this.insertFileInFiles(currentFile, poUploadFiles);\n      this.sendFeedback(currentFile);\n    }\n    this.sendFeedback();\n    return poUploadFiles;\n  }\n\n  protected validateModel(model: any) {\n    if (this.validatorChange) {\n      this.validatorChange(model);\n    }\n  }\n\n  // Verifica se o arquivo está de acordo com as restrições.\n  private checkRestrictions(file: PoUploadFile): boolean {\n    const restrictions = this.fileRestrictions;\n\n    if (restrictions) {\n      const allowedExtensions = restrictions.allowedExtensions;\n      const minFileSize = restrictions.minFileSize;\n      const maxFileSize = restrictions.maxFileSize;\n\n      const isAccept = allowedExtensions ? this.isAllowedExtension(file.extension, allowedExtensions) : true;\n      const isAcceptSize = file.size >= minFileSize && file.size <= maxFileSize;\n\n      if (!isAcceptSize) {\n        file.sizeNotAllowed = true;\n        this.sizeNotAllowed = this.sizeNotAllowed + 1;\n      }\n\n      if (!isAccept) {\n        file.extensionNotAllowed = true;\n      }\n\n      return isAccept && isAcceptSize;\n    }\n\n    return true;\n  }\n\n  private existsFileSameName(file: PoUploadFile, files: Array<PoUploadFile>): boolean {\n    return files.some(currentFile => file.name === currentFile.name);\n  }\n\n  private getUploadService(): PoUploadService {\n    return this.uploadService;\n  }\n\n  private insertFileInFiles(newFile: PoUploadFile, files: Array<PoUploadFile>) {\n    if (this.existsFileSameName(newFile, files)) {\n      return this.updateExistsFileInFiles(newFile, files);\n    }\n\n    if (this.isMultiple) {\n      files.push(newFile);\n    } else {\n      files.splice(0, files.length, newFile);\n    }\n\n    return files;\n  }\n\n  private isAllowedExtension(extension: string, allowedExtensions: Array<string> = []): boolean {\n    const isAllowed = allowedExtensions.some(ext => ext.toLowerCase() === extension);\n    if (!isAllowed) {\n      this.extensionNotAllowed = this.extensionNotAllowed + 1;\n    }\n    return isAllowed;\n  }\n\n  private setAllowedExtensions(restrictions: PoUploadFileRestrictions = {}) {\n    const _allowedExtensions = restrictions.allowedExtensions || [];\n\n    this.allowedExtensions = _allowedExtensions.join(',');\n  }\n\n  private initRestrictions(restrictions: PoUploadFileRestrictions): PoUploadFileRestrictions {\n    if (!restrictions) {\n      return;\n    }\n\n    const minFileSize = restrictions.minFileSize || poUploadMinFileSize;\n    const maxFileSize = restrictions.maxFileSize || poUploadMaxFileSize;\n\n    return {\n      ...restrictions,\n      maxFileSize: maxFileSize,\n      minFileSize: minFileSize\n    };\n  }\n\n  private updateExistsFileInFiles(newFile: PoUploadFile, files: Array<PoUploadFile>) {\n    const fileIndex = files.findIndex(\n      currentFile => newFile.name === currentFile.name && currentFile.status !== PoUploadStatus.Uploaded\n    );\n\n    if (fileIndex !== -1) {\n      files.splice(fileIndex, 1, newFile);\n    }\n\n    return files;\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n\n  abstract sendFeedback(file?): void;\n\n  abstract setDirectoryAttribute(value: boolean);\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n  inject\n} from '@angular/core';\n\nimport { PoUploadLiterals } from '../../interfaces/po-upload-literals.interface';\n\n@Component({\n  selector: 'po-upload-drag-drop-area',\n  templateUrl: './po-upload-drag-drop-area.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoUploadDragDropAreaComponent {\n  elementRef = inject(ElementRef);\n\n  @Input('p-directory-compatible') directoryCompatible: boolean;\n\n  @Input('p-disabled') disabled: boolean;\n\n  @Input('p-height') height: number;\n\n  @Input('p-literals') literals: PoUploadLiterals;\n\n  @Input('p-overlay') overlay: boolean;\n\n  @Output('p-select-files') selectFiles: EventEmitter<any> = new EventEmitter<any>();\n\n  @ViewChild('selectFilesLink') selectFilesLinkElement: ElementRef;\n\n  focus() {\n    this.selectFilesLinkElement.nativeElement.focus();\n  }\n}\n","<div\n  class=\"po-upload-drag-drop-area\"\n  [ngClass]=\"{ 'po-upload-drag-drop-area-disabled': disabled }\"\n  [style.height.px]=\"height\"\n>\n  <div class=\"po-upload-drag-drop-area-container\">\n    @if (overlay && !disabled) {\n      <po-icon p-icon=\"ICON_UPLOAD_CLOUD\" class=\"po-upload-drag-drop-area-overlay-icon\"></po-icon>\n      <div class=\"po-upload-drag-drop-area-overlay-label\">\n        {{ directoryCompatible ? literals?.dropFoldersHere : literals?.dropFilesHere }}\n      </div>\n    } @else {\n      <po-icon p-icon=\"ICON_UPLOAD_CLOUD\" class=\"po-upload-drag-drop-area-icon\"></po-icon>\n      <div class=\"po-upload-drag-drop-area-label\">\n        {{ directoryCompatible ? literals?.dragFoldersHere : literals?.dragFilesHere }}\n      </div>\n      <button\n        #selectFilesLink\n        class=\"po-upload-drag-drop-area-select-files\"\n        [disabled]=\"disabled\"\n        [ngClass]=\"{ 'po-clickable': !disabled }\"\n        (click)=\"selectFiles.emit()\"\n      >\n        {{ directoryCompatible ? literals?.selectFolderOnComputer : literals?.selectFilesOnComputer }}\n      </button>\n    }\n  </div>\n</div>\n","import { Directive, EventEmitter, HostListener, Input, Output, inject } from '@angular/core';\n\nimport { PoI18nPipe } from '../../../../services/po-i18n/po-i18n.pipe';\nimport { PoNotificationService } from '../../../../services/po-notification/po-notification.service';\nimport { PoUploadLiterals } from '../interfaces/po-upload-literals.interface';\n\n@Directive({\n  selector: '[p-upload-drag-drop]',\n  providers: [PoI18nPipe],\n  standalone: false\n})\nexport class PoUploadDragDropDirective {\n  private readonly i18nPipe = inject(PoI18nPipe);\n  private readonly notification = inject(PoNotificationService);\n\n  @Input('p-area-element') areaElement: HTMLElement;\n\n  @Input('p-directory-compatible') directoryCompatible: boolean;\n\n  @Input('p-disabled') disabled: boolean;\n\n  @Input('p-literals') literals: PoUploadLiterals;\n\n  @Output('p-drag-leave') dragLeave: EventEmitter<any> = new EventEmitter<any>();\n\n  @Output('p-drag-over') dragOver: EventEmitter<any> = new EventEmitter<any>();\n\n  @Output('p-file-change') fileChange: EventEmitter<any> = new EventEmitter<any>();\n\n  timeout: any;\n\n  private files: Array<File>;\n  private invalidFileType: number;\n\n  @HostListener('document:dragleave', ['$event']) onDragLeave(event) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    this.timeout = setTimeout(() => this.dragLeave.emit(), 30);\n  }\n\n  @HostListener('document:dragover', ['$event']) onDragOver(event) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    clearTimeout(this.timeout);\n\n    if (!this.disabled) {\n      this.dragOver.emit();\n    }\n  }\n\n  @HostListener('document:drop', ['$event']) onDrop(event) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    this.getFilesFromDataTransferItems(event);\n    this.dragLeave.emit();\n  }\n\n  private getFilesFromDataTransferItems(event: DragEvent) {\n    if (!this.disabled) {\n      this.invalidFileType = 0;\n      if (this.directoryCompatible) {\n        this.getOnlyDirectories(event.dataTransfer.items).then(() => {\n          this.sendFiles(event, this.files);\n        });\n      } else {\n        const files = this.getOnlyFiles(event.dataTransfer);\n        this.sendFiles(event, files);\n      }\n    }\n  }\n\n  // analisa as entradas recursivamente\n  private async getFilesFromEntry(entry) {\n    if (entry.isFile) {\n      const file = await this.readFile(entry);\n      return [file];\n    } else if (entry.isDirectory) {\n      return await this.readDirectory(entry);\n    }\n  }\n\n  private async getOnlyDirectories(dataTransferItems) {\n    const entries = [];\n\n    // lista todas as entradas antes de analisá-las\n    for (const item of dataTransferItems) {\n      entries.push(item.webkitGetAsEntry());\n    }\n\n    this.files = [];\n    for (const entry of entries) {\n      if (entry.isFile) {\n        this.invalidFileType++;\n      } else {\n        const newFiles = await this.getFilesFromEntry(entry);\n        this.files = this.files.concat(newFiles);\n      }\n    }\n  }\n\n  // return only files. If it is a directory, invalidFileType counts.\n  private getOnlyFiles(dataTransfer: DataTransfer): Array<File> {\n    const fileList: Array<File> = Array.from(dataTransfer.files);\n    const entriesFiles: Array<any> = Array.from(dataTransfer.items).map(item => item.webkitGetAsEntry());\n\n    return fileList.reduce((newFiles, file) => {\n      const entryFile = entriesFiles.find(entry => entry.name === file.name);\n\n      if (entryFile.isFile) {\n        return newFiles.concat(file);\n      } else {\n        this.invalidFileType++;\n      }\n      return newFiles;\n    }, []);\n  }\n\n  private readFile(entry) {\n    return new Promise(resolve => {\n      entry.file(file => {\n        resolve(file);\n      });\n    });\n  }\n\n  private async readDirectory(entry) {\n    const dirReader = entry.createReader();\n    let files = [];\n\n    const newFiles = await this.readDirectoryEntries(dirReader);\n    files = files.concat(newFiles);\n    return files;\n  }\n\n  private readDirectoryEntries(dirReader) {\n    return new Promise(resolve => {\n      dirReader.readEntries(async entries => {\n        let files = [];\n        for (const entry of entries) {\n          const itemFiles = await this.getFilesFromEntry(entry);\n          files = files.concat(itemFiles);\n        }\n        resolve(files);\n      });\n    });\n  }\n\n  private sendFeedback(invalidFiles: number) {\n    if (invalidFiles) {\n      this.setPipeArguments('invalidFileType', invalidFiles);\n    }\n  }\n\n  private sendFiles(event, files) {\n    if (this.areaElement.contains(event.target)) {\n      if (files.length > 0) {\n        this.fileChange.emit(files);\n      }\n\n      this.sendFeedback(this.invalidFileType);\n    } else {\n      const invalidDropAreaArg = this.directoryCompatible ? this.literals.folders : this.literals.files;\n      this.setPipeArguments('invalidDropArea', invalidDropAreaArg);\n    }\n  }\n\n  // método responsável por setar os argumentos do i18nPipe.\n  private setPipeArguments(literalAttributes: string, args?) {\n    const pipeArguments = this.i18nPipe.transform(this.literals[literalAttributes], args);\n    this.notification.information(pipeArguments);\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  Renderer2,\n  ViewChild,\n  inject\n} from '@angular/core';\n\nimport { PoUploadLiterals } from '../../interfaces/po-upload-literals.interface';\n\n@Component({\n  selector: 'po-upload-drag-drop-area-overlay',\n  templateUrl: 'po-upload-drag-drop-area-overlay.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoUploadDragDropAreaOverlayComponent implements AfterViewInit {\n  private readonly renderer = inject(Renderer2);\n\n  @ViewChild('DragDropAreaFixed', { read: ElementRef, static: true }) DragDropAreaFixed: ElementRef;\n\n  @Input('p-directory-compatible') directoryCompatible: boolean;\n\n  @Input('p-disabled') disabled: boolean;\n\n  @Input('p-literals') literals: PoUploadLiterals;\n\n  @Input('p-target') target: ElementRef;\n\n  @Output('p-area-element') areaElement: EventEmitter<any> = new EventEmitter<any>();\n\n  ngAfterViewInit() {\n    if (this.target) {\n      this.setPosition(this.target);\n    }\n    this.areaElement.emit(this.DragDropAreaFixed.nativeElement);\n  }\n\n  private setPosition(targetElement: ElementRef) {\n    const boundingClientRect = targetElement.nativeElement.getBoundingClientRect();\n    const clientRectKeys = ['bottom', 'left', 'height', 'right', 'top', 'width'];\n\n    clientRectKeys.forEach(clientRectKey => {\n      const clientRectValue = boundingClientRect[clientRectKey];\n\n      this.renderer.setStyle(this.DragDropAreaFixed.nativeElement, clientRectKey, `${clientRectValue}px`);\n    });\n  }\n}\n","<div class=\"po-overlay-fixed\">\n  <po-upload-drag-drop-area\n    #DragDropAreaFixed\n    class=\"po-upload-drag-drop-area-overlay\"\n    [p-directory-compatible]=\"directoryCompatible\"\n    [p-disabled]=\"disabled\"\n    [p-literals]=\"literals\"\n    [p-overlay]=\"true\"\n  >\n  </po-upload-drag-drop-area>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n  inject\n} from '@angular/core';\n\nimport { convertToInt } from '../../../../utils/util';\n\nimport { PoUploadDragDropAreaComponent } from './po-upload-drag-drop-area/po-upload-drag-drop-area.component';\nimport { PoUploadLiterals } from '../interfaces/po-upload-literals.interface';\n\nconst PoUploadDragDropHeightDefault = 320;\nconst PoUploadDragDropHeightMin = 160;\n\n@Component({\n  selector: 'po-upload-drag-drop',\n  templateUrl: './po-upload-drag-drop.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoUploadDragDropComponent {\n  private readonly changeDetector = inject(ChangeDetectorRef);\n\n  @ViewChild('dragDropOverlay', { read: ElementRef }) dragDropOverlayElement: ElementRef;\n  @ViewChild(PoUploadDragDropAreaComponent, { static: true }) dragDropAreaComponent: PoUploadDragDropAreaComponent;\n\n  @Input('p-directory-compatible') directoryCompatible: boolean;\n\n  @Input('p-disabled') disabled: boolean;\n\n  @Input('p-literals') literals: PoUploadLiterals;\n\n  @Output('p-file-change') fileChange: EventEmitter<any> = new EventEmitter<any>();\n\n  @Output('p-select-files') selectFiles: EventEmitter<any> = new EventEmitter<any>();\n\n  areaElement: HTMLElement;\n  isDragOver: boolean = false;\n\n  private _dragDropHeight?: number = PoUploadDragDropHeightDefault;\n\n  @Input('p-drag-drop-height') set dragDropHeight(value: number) {\n    const dragDropHeight = convertToInt(value, PoUploadDragDropHeightDefault);\n\n    this._dragDropHeight = dragDropHeight < PoUploadDragDropHeightMin ? PoUploadDragDropHeightMin : dragDropHeight;\n  }\n\n  get dragDropHeight() {\n    return this._dragDropHeight;\n  }\n\n  focus() {\n    this.dragDropAreaComponent.focus();\n  }\n\n  onAreaElement(element: HTMLElement) {\n    this.areaElement = element;\n\n    // necessário para não ocorrer o erro HasBeenChecked\n    this.changeDetector.detectChanges();\n  }\n\n  onDragLeave() {\n    this.isDragOver = false;\n  }\n\n  onDragOver() {\n    this.isDragOver = true;\n  }\n\n  onFileChange(files) {\n    this.isDragOver = false;\n\n    this.fileChange.emit(files);\n  }\n}\n","@if (isDragOver) {\n  <po-upload-drag-drop-area-overlay\n    #dragDropOverlay\n    [p-directory-compatible]=\"directoryCompatible\"\n    [p-disabled]=\"disabled\"\n    [p-literals]=\"literals\"\n    [p-target]=\"dragDropAreaComponent.elementRef\"\n    (p-area-element)=\"onAreaElement($event)\"\n  >\n  </po-upload-drag-drop-area-overlay>\n}\n\n<po-upload-drag-drop-area\n  p-upload-drag-drop\n  [p-area-element]=\"areaElement\"\n  [p-directory-compatible]=\"directoryCompatible\"\n  [p-disabled]=\"disabled\"\n  [p-height]=\"dragDropHeight\"\n  [p-literals]=\"literals\"\n  [p-overlay]=\"false\"\n  (p-drag-leave)=\"onDragLeave()\"\n  (p-drag-over)=\"onDragOver()\"\n  (p-file-change)=\"onFileChange($event)\"\n  (p-select-files)=\"selectFiles.emit()\"\n>\n</po-upload-drag-drop-area>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, inject } from '@angular/core';\n\nimport { formatBytes } from '../../../../utils/util';\nimport { PoLanguageService } from '../../../../services/po-language/po-language.service';\nimport { poLocaleDefault } from '../../../../services/po-language/po-language.constant';\n\nimport { poUploadLiteralsDefault } from '../po-upload-base.component';\n\n@Component({\n  selector: 'po-upload-file-restrictions',\n  templateUrl: './po-upload-file-restrictions.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoUploadFileRestrictionsComponent implements OnInit {\n  private readonly changeDetector = inject(ChangeDetectorRef);\n\n  @Input('p-max-files') maxFiles: number;\n\n  literals: any;\n\n  private _allowedExtensions: string;\n  private _maxFileSize: string;\n  private _minFileSize: string;\n  private readonly language: string;\n\n  @Input('p-allowed-extensions') set allowedExtensions(value) {\n    this._allowedExtensions = this.formatAllowedExtensions(<any>value);\n  }\n\n  get allowedExtensions(): string {\n    return this._allowedExtensions;\n  }\n\n  @Input('p-max-file-size') set maxFileSize(value) {\n    this._maxFileSize = formatBytes(<any>value);\n  }\n\n  get maxFileSize(): string {\n    return this._maxFileSize;\n  }\n\n  @Input('p-min-file-size') set minFileSize(value) {\n    this._minFileSize = formatBytes(<any>value);\n  }\n\n  get minFileSize(): string {\n    return this._minFileSize;\n  }\n\n  constructor() {\n    const languageService = inject(PoLanguageService);\n\n    this.language = languageService.getShortLanguage();\n  }\n\n  ngOnInit() {\n    this.setLiterals();\n  }\n\n  private formatAllowedExtensions(allowedExtensions: Array<string>): string {\n    const conjunction = { 'pt': 'e', 'en': 'and', 'es': 'y', 'ru': 'и' };\n\n    return allowedExtensions\n      ? allowedExtensions\n          .join(', ')\n          .toUpperCase()\n          .replace(/,(?=[^,]*$)/, ` ${conjunction[this.language]}`)\n      : undefined;\n  }\n\n  private setLiterals() {\n    this.literals = {\n      ...poUploadLiteralsDefault[poLocaleDefault],\n      ...poUploadLiteralsDefault[this.language]\n    };\n\n    this.changeDetector.detectChanges();\n  }\n}\n","@if (maxFiles > 1) {\n  <p>\n    {{ literals?.numberOfFilesAllowed | poI18n: maxFiles }}\n  </p>\n}\n\n@if (allowedExtensions) {\n  <p>\n    {{ literals?.allowedFormats | poI18n: allowedExtensions }}\n  </p>\n}\n\n@if (minFileSize || maxFileSize) {\n  <p>\n    <span>{{ literals?.allowedSizes }}</span>\n    @if (minFileSize && maxFileSize) {\n      <span>\n        {{ literals?.allowedFileSizeRange | poI18n: [minFileSize, maxFileSize] }}\n      </span>\n    }\n    @if (minFileSize && !maxFileSize) {\n      <span>\n        {{ literals?.minFileSizeAllowed | poI18n: minFileSize }}\n      </span>\n    }\n    @if (maxFileSize && !minFileSize) {\n      <span>\n        {{ literals?.maxFileSizeAllowed | poI18n: maxFileSize }}\n      </span>\n    }\n  </p>\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  OnChanges,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  forwardRef,\n  inject\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PoI18nPipe } from '../../../services/po-i18n/po-i18n.pipe';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport { PoNotificationService } from '../../../services/po-notification/po-notification.service';\nimport { formatBytes, isTypeof, setHelperSettings, uuid, PoUtils } from '../../../utils/util';\nimport { PoProgressStatus } from '../../po-progress/enums/po-progress-status.enum';\nimport { PoButtonComponent } from './../../po-button/po-button.component';\n\nimport { PoModalAction, PoModalComponent } from '../../po-modal';\nimport { PoUploadBaseComponent } from './po-upload-base.component';\nimport { PoUploadDragDropComponent } from './po-upload-drag-drop/po-upload-drag-drop.component';\nimport { PoUploadFile } from './po-upload-file';\nimport { PoUploadStatus } from './po-upload-status.enum';\nimport { PoUploadService } from './po-upload.service';\nimport { PoHelperComponent } from '../../po-helper';\n\n/**\n * @docsExtends PoUploadBaseComponent\n *\n * @example\n *\n * <example name=\"po-upload-basic\" title=\"PO Upload Basic\">\n *   <file name=\"sample-po-upload-basic/sample-po-upload-basic.component.html\"> </file>\n *   <file name=\"sample-po-upload-basic/sample-po-upload-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-upload-labs\" title=\"PO Upload Labs\">\n *   <file name=\"sample-po-upload-labs/sample-po-upload-labs.component.html\"> </file>\n *   <file name=\"sample-po-upload-labs/sample-po-upload-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-upload-resume\" title=\"PO Upload - Resume\">\n *   <file name=\"sample-po-upload-resume/sample-po-upload-resume.component.html\"> </file>\n *   <file name=\"sample-po-upload-resume/sample-po-upload-resume.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-upload-rs\" title=\"PO Upload - Realize & Show\">\n *   <file name=\"sample-po-upload-rs/sample-po-upload-rs.component.html\"> </file>\n *   <file name=\"sample-po-upload-rs/sample-po-upload-rs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-upload-download\" title=\"PO Upload - with Download Button\">\n *   <file name=\"sample-po-upload-download/sample-po-upload-download.component.html\"> </file>\n *   <file name=\"sample-po-upload-download/sample-po-upload-download.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-upload-preview\" title=\"PO Upload - with Preview\">\n *   <file name=\"sample-po-upload-preview/sample-po-upload-preview.component.html\"> </file>\n *   <file name=\"sample-po-upload-preview/sample-po-upload-preview.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-upload',\n  templateUrl: './po-upload.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    PoI18nPipe,\n    PoUploadService,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoUploadComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => PoUploadComponent),\n      multi: true\n    }\n  ],\n  standalone: false\n})\nexport class PoUploadComponent extends PoUploadBaseComponent implements AfterViewInit, OnChanges {\n  renderer = inject(Renderer2);\n  private readonly i18nPipe = inject(PoI18nPipe);\n  private readonly notification = inject(PoNotificationService);\n\n  @ViewChild('inputFile', { read: ElementRef, static: true }) private readonly inputFile: ElementRef;\n  @ViewChild(PoUploadDragDropComponent) private readonly poUploadDragDropComponent: PoUploadDragDropComponent;\n  @ViewChild('uploadButton') uploadButton: PoButtonComponent;\n  @ViewChild('modal') modalComponent: PoModalComponent;\n  @ViewChild('helperEl', { read: PoHelperComponent, static: false }) helperEl?: PoHelperComponent;\n\n  id = `po-upload[${uuid()}]`;\n\n  infoByUploadStatus: { [key: string]: { text: (percent?: number) => string; icon?: string } } = {\n    [PoUploadStatus.Uploaded]: {\n      text: () => this.literals.sentWithSuccess,\n      icon: 'ICON_OK'\n    },\n    [PoUploadStatus.Error]: {\n      text: () => this.literals.errorOccurred\n    },\n    [PoUploadStatus.Uploading]: {\n      text: percent => percent + '%'\n    }\n  };\n\n  progressStatusByFileStatus = {\n    [PoUploadStatus.Uploaded]: PoProgressStatus.Success,\n    [PoUploadStatus.Error]: PoProgressStatus.Error\n  };\n\n  private calledByCleanInputValue: boolean = false;\n\n  protected modalPrimaryAction: PoModalAction;\n  protected modalSecondaryAction: PoModalAction;\n  protected errorMessage: string;\n  protected tooltipTitle = '';\n  protected modalImageUrl = '';\n  protected errorModalImage: boolean = false;\n\n  constructor() {\n    const uploadService = inject(PoUploadService);\n    const languageService = inject(PoLanguageService);\n    const cd = inject(ChangeDetectorRef);\n\n    super(uploadService, languageService, cd);\n  }\n\n  get displayDragDrop(): boolean {\n    return this.dragDrop && !PoUtils.isMobile();\n  }\n\n  get displaySendButton(): boolean {\n    const currentFiles = this.currentFiles || [];\n    return (\n      !this.hideSendButton && !this.autoUpload && currentFiles.length > 0 && this.hasFileNotUploaded && this.requiredUrl\n    );\n  }\n\n  get selectFileButtonLabel() {\n    if (this.canHandleDirectory) {\n      return this.literals.selectFolder;\n    } else if (this.isMultiple) {\n      return this.literals.selectFiles;\n    } else {\n      return this.literals.selectFile;\n    }\n  }\n\n  get hasMoreThanFourItems(): boolean {\n    return this.currentFiles && this.currentFiles.length > 4;\n  }\n\n  get hasMultipleFiles(): boolean {\n    return this.currentFiles && this.currentFiles.length > 1;\n  }\n\n  get hasFileNotUploaded(): boolean {\n    if (Array.isArray(this.currentFiles)) {\n      return this.currentFiles.some(\n        file => file.status !== PoUploadStatus.Uploaded && file.status !== PoUploadStatus.Error\n      );\n    }\n\n    return false;\n  }\n\n  get isDisabled(): boolean {\n    const currentFiles = this.currentFiles || [];\n\n    return this.requiredUrl\n      ? !!(\n          this.hasAnyFileUploading(currentFiles) ||\n          !this.url ||\n          this.disabled ||\n          this.isExceededFileLimit(currentFiles.length)\n        )\n      : !!(\n          this.hasAnyFileUploading(currentFiles) ||\n          this.autoUpload ||\n          this.disabled ||\n          this.isExceededFileLimit(currentFiles.length)\n        );\n  }\n\n  get isSelectButtonDisabled(): boolean {\n    return this.loading || this.isDisabled;\n  }\n\n  get isFieldDisabled(): boolean {\n    const isSelectButtonVisible = !this.hideSelectButton && !this.displayDragDrop;\n    return (isSelectButtonVisible && this.loading) || this.disabled;\n  }\n\n  get maxFiles(): number {\n    return this.isMultiple && this.fileRestrictions && this.fileRestrictions.maxFiles;\n  }\n\n  cancel(file: PoUploadFile, keydown?: KeyboardEvent) {\n    if (this.disabledRemoveFile || (keydown && keydown.code !== 'Enter' && keydown.code !== 'Space')) return;\n\n    if (file.status === PoUploadStatus.Uploading) {\n      return this.stopUpload(file);\n    }\n\n    this.removeFile(file);\n    if (file.status !== PoUploadStatus.Uploaded) {\n      this.onCancel.emit(file);\n    } else {\n      this.onRemove.emit(file);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['label']) {\n      this.displayAdditionalHelp = false;\n    }\n    if (changes['customModalActions']) {\n      if (this.customModalActions?.length > 0) {\n        this.modalPrimaryAction = this.customModalActions[0];\n        this.modalSecondaryAction = this.customModalActions[1] || undefined;\n      } else {\n        this.setPrimaryActionModal();\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    if (!this.customModalActions?.length) {\n      this.setPrimaryActionModal();\n    }\n\n    if (this.autoFocus) {\n      this.focus();\n    }\n  }\n\n  /** Método responsável por **limpar** o(s) arquivo(s) selecionado(s). */\n  clear() {\n    this.currentFiles = undefined;\n    this.updateModel([]);\n    this.cleanInputValue();\n  }\n\n  emitAdditionalHelp() {\n    if (this.label && this.isAdditionalHelpEventTriggered()) {\n      this.additionalHelp.emit();\n    }\n  }\n\n  /**\n   * Função que atribui foco ao componente.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoUploadComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoUploadComponent, { static: true }) upload: PoUploadComponent;\n   *\n   * focusUpload() {\n   *   this.upload.focus();\n   * }\n   * ```\n   */\n  focus() {\n    if (!this.disabled) {\n      if (this.uploadButton) {\n        this.uploadButton.focus();\n        return;\n      }\n\n      if (this.displayDragDrop) {\n        this.poUploadDragDropComponent.focus();\n      }\n    }\n  }\n\n  getAdditionalHelpTooltip() {\n    return this.isAdditionalHelpEventTriggered() ? null : this.additionalHelpTooltip;\n  }\n\n  // Verifica se existe algum arquivo sendo enviado ao serviço.\n  hasAnyFileUploading(files: Array<PoUploadFile>) {\n    if (files && files.length) {\n      return files.some(file => file.status === PoUploadStatus.Uploading);\n    }\n\n    return false;\n  }\n\n  isAllowCancelEvent(status: PoUploadStatus) {\n    return status !== PoUploadStatus.Uploaded;\n  }\n\n  onFileChange(event): void {\n    // necessário este tratamento quando para IE, pois nele o change é disparado quando o campo é limpado também\n    if (this.calledByCleanInputValue) {\n      this.calledByCleanInputValue = false;\n      return event.preventDefault();\n    }\n\n    const files = event.target.files;\n    this.updateFiles(files);\n\n    this.cleanInputValue();\n  }\n\n  onFileChangeDragDrop(files) {\n    this.updateFiles(files);\n  }\n\n  onKeyDown(event: KeyboardEvent): void {\n    if (this.isUploadButtonFocused()) {\n      this.keydown.emit(event);\n    }\n  }\n\n  /**\n   * Método responsável por fechar o modal.\n   */\n  closeModal() {\n    this.errorModalImage = false;\n    this.modalComponent.close();\n    this.modalImageUrl = '';\n  }\n\n  openModal(file: PoUploadFile, keydown?: KeyboardEvent) {\n    if (keydown && keydown.code !== 'Enter' && keydown.code !== 'Space') return;\n\n    if (file?.thumbnailUrl && !file.errorMessage) {\n      this.errorModalImage = false;\n      this.modalComponent.open();\n      this.modalImageUrl = file.thumbnailUrl;\n      this.onOpenModalPreview.emit(file);\n    }\n  }\n\n  // Remove o arquivo passado por parâmetro da lista dos arquivos correntes.\n  removeFile(file): void {\n    const index = this.currentFiles.findIndex(f => f.uid === file.uid);\n    if (index !== -1) {\n      this.currentFiles.splice(index, 1);\n    }\n\n    this.updateModel([...this.currentFiles]);\n  }\n\n  /** Método responsável por **abrir** a janela para seleção de arquivo(s). */\n  selectFiles() {\n    this.onModelTouched?.();\n    this.calledByCleanInputValue = false;\n    this.inputFile.nativeElement.click();\n  }\n\n  sendFeedback(file?): void {\n    let sizeNotAllowed = this.sizeNotAllowed;\n    let extensionNotAllowed = this.extensionNotAllowed;\n    let quantityNotAllowed = this.quantityNotAllowed;\n    if (file) {\n      sizeNotAllowed = file.sizeNotAllowed ? 1 : undefined;\n      extensionNotAllowed = file.extensionNotAllowed ? 1 : undefined;\n      quantityNotAllowed = undefined;\n    }\n\n    if (sizeNotAllowed > 0) {\n      const minFileSize = formatBytes(this.fileRestrictions.minFileSize);\n      const maxFileSize = formatBytes(this.fileRestrictions.maxFileSize);\n      const args = [this.sizeNotAllowed, minFileSize || '0', maxFileSize];\n      this.setPipeArguments('invalidSize', args, file);\n      this.sizeNotAllowed = 0;\n    }\n\n    if (extensionNotAllowed > 0) {\n      const allowedExtensionsFormatted = this.fileRestrictions.allowedExtensions.join(', ').toUpperCase();\n      const args = [this.extensionNotAllowed, allowedExtensionsFormatted];\n      this.setPipeArguments('invalidFormat', args, file);\n      this.extensionNotAllowed = 0;\n    }\n\n    if (quantityNotAllowed > 0) {\n      const args = [this.quantityNotAllowed];\n      this.setPipeArguments('invalidAmount', args);\n      this.quantityNotAllowed = 0;\n    }\n  }\n\n  /** Método responsável por **enviar** o(s) arquivo(s) selecionado(s). */\n  sendFiles(): void {\n    if (this.currentFiles && this.currentFiles.length) {\n      this.uploadFiles(this.currentFiles);\n    }\n  }\n\n  setDirectoryAttribute(canHandleDirectory: boolean) {\n    if (canHandleDirectory) {\n      this.renderer.setAttribute(this.inputFile.nativeElement, 'webkitdirectory', 'true');\n    } else {\n      this.renderer.removeAttribute(this.inputFile.nativeElement, 'webkitdirectory');\n    }\n  }\n\n  /**\n   * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n   * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `p-keydown`.\n   *\n   * > Exibe ou oculta o conteúdo do componente `po-helper` quando o componente estiver com foco.\n   *\n   * ```\n   * //Exemplo com p-label e p-helper\n   * <po-upload\n   *  #upload\n   *  ...\n   *  p-label=\"Label do upload\"\n   *  [p-helper]=\"helperOptions\"\n   *  (p-keydown)=\"onKeyDown($event, upload)\"\n   * ></po-upload>\n   * ```\n   * ```\n   * ...\n   * onKeyDown(event: KeyboardEvent, inp: PoUploadComponent): void {\n   *  if (event.code === 'F9') {\n   *    inp.showAdditionalHelp();\n   *  }\n   * }\n   * ```\n   */\n  showAdditionalHelp(): boolean {\n    this.displayAdditionalHelp = !this.displayAdditionalHelp;\n    const helper = this.poHelperComponent();\n    const isHelpEvt = this.isAdditionalHelpEventTriggered();\n    if (!this.label && (helper || this.additionalHelpTooltip || isHelpEvt)) {\n      if (isHelpEvt) {\n        this.additionalHelp.emit();\n      }\n      if (typeof helper !== 'string' && typeof helper?.eventOnClick === 'function') {\n        helper.eventOnClick();\n        return;\n      }\n      if (this.helperEl?.helperIsVisible()) {\n        this.helperEl?.closeHelperPopover();\n        return;\n      }\n      this.helperEl?.openHelperPopover();\n      return;\n    }\n    return this.displayAdditionalHelp;\n  }\n\n  stopUpload(file: PoUploadFile) {\n    this.uploadService.stopRequestByFile(file, () => {\n      if (this.autoUpload) {\n        this.removeFile(file);\n      } else {\n        this.stopUploadHandler(file);\n      }\n      this.cd.markForCheck();\n    });\n  }\n\n  trackByFn(index, file: PoUploadFile) {\n    return file.uid;\n  }\n\n  uploadFiles(files: Array<PoUploadFile>) {\n    const filesFiltered = files.filter(\n      file => file.status !== PoUploadStatus.Uploaded && !file.sizeNotAllowed && !file.extensionNotAllowed\n    );\n    if (files.length === 0) return;\n    this.uploadService.upload(\n      this.url,\n      filesFiltered,\n      this.headers,\n      this.onUpload,\n      (file, percent): any => {\n        // UPLOADING\n        this.uploadingHandler(file, percent);\n      },\n      (file, eventResponse): any => {\n        // SUCCESS\n        this.responseHandler(file, PoUploadStatus.Uploaded);\n        this.onSuccess.emit(eventResponse);\n\n        // esconde o status de sucesso após 500ms\n        setTimeout(() => {\n          const currentFile = this.currentFiles.find(f => f.uid === file.uid);\n          if (currentFile) {\n            currentFile.hideDoneContent = true;\n            this.cd.detectChanges();\n          }\n        }, 500);\n      },\n      (file, eventError): any => {\n        // Error\n        this.responseHandler(file, PoUploadStatus.Error);\n        this.onError.emit(eventError);\n      }\n    );\n  }\n\n  customClick(file: PoUploadFile) {\n    if (this.customAction) {\n      this.customActionClick.emit(file);\n    }\n  }\n\n  setHelper(label?: string, additionalHelpTooltip?: string) {\n    return setHelperSettings(\n      label,\n      additionalHelpTooltip,\n      this.poHelperComponent(),\n      this.size,\n      this.isAdditionalHelpEventTriggered() ? this.additionalHelp : undefined\n    );\n  }\n\n  protected actionIsDisabled(action: any) {\n    return isTypeof(action.disabled, 'function') ? action.disabled(action) : action.disabled;\n  }\n\n  protected isActionVisible(action: any): boolean {\n    if (!action || (!action.label && !action.icon)) {\n      return false;\n    }\n\n    if (action.visible === undefined) {\n      return true;\n    }\n\n    if (isTypeof(action.visible, 'function')) {\n      return action.visible();\n    }\n\n    return !!action.visible;\n  }\n\n  protected onImageError(file: any): void {\n    file.imageError = true;\n  }\n\n  protected showTooltipText(e: MouseEvent, text: string) {\n    const element = e.target as HTMLElement;\n\n    if (element.offsetWidth < element.scrollWidth) {\n      this.tooltipTitle = text;\n    } else {\n      this.tooltipTitle = undefined;\n    }\n  }\n\n  private cleanInputValue() {\n    this.calledByCleanInputValue = true;\n    this.inputFile.nativeElement.value = '';\n    this.cd.detectChanges();\n  }\n\n  private isAdditionalHelpEventTriggered(): boolean {\n    return (\n      this.additionalHelpEventTrigger === 'event' ||\n      (this.additionalHelpEventTrigger === undefined && this.additionalHelp.observed)\n    );\n  }\n\n  private isUploadButtonFocused(): boolean {\n    return document.activeElement === this.uploadButton.buttonElement.nativeElement;\n  }\n\n  private responseHandler(file: PoUploadFile, status: PoUploadStatus) {\n    file.status = status;\n    file.percent = 100;\n    this.cd.markForCheck();\n  }\n\n  // método responsável por setar os argumentos do i18nPipe de acordo com a restrição.\n  private setPipeArguments(literalAttributes: string, literalArguments?, file?) {\n    const pipeArguments = this.i18nPipe.transform(this.literals[literalAttributes], literalArguments);\n    this.errorMessage = pipeArguments;\n    if (literalAttributes === 'invalidAmount') {\n      this.notification.information(pipeArguments);\n    }\n\n    if (file) {\n      file.errorMessage = pipeArguments;\n    }\n  }\n\n  private setPrimaryActionModal() {\n    this.modalPrimaryAction = {\n      label: this.literals.continue,\n      action: this.closeModal.bind(this)\n    };\n    this.modalSecondaryAction = undefined;\n  }\n\n  // Função disparada ao parar um envio de arquivo.\n  private stopUploadHandler(file: PoUploadFile) {\n    file.status = PoUploadStatus.None;\n    file.percent = 0;\n    this.cd.markForCheck();\n  }\n\n  private updateFiles(files) {\n    this.currentFiles = this.parseFiles(files);\n\n    this.updateModel([...this.currentFiles]);\n\n    if (this.autoUpload) {\n      this.uploadFiles(this.currentFiles);\n    }\n  }\n\n  private updateModel(files: Array<PoUploadFile>) {\n    const modelFiles: Array<PoUploadFile> = this.mapCleanUploadFiles(files);\n    this.onModelChange ? this.onModelChange(modelFiles) : this.ngModelChange.emit(modelFiles);\n  }\n\n  private uploadingHandler(file: any, percent: number) {\n    file.status = PoUploadStatus.Uploading;\n    file.percent = percent;\n    this.cd.markForCheck();\n  }\n\n  private mapCleanUploadFiles(files: Array<PoUploadFile>): Array<PoUploadFile> {\n    const mapedByUploadFile = progressFile => {\n      const { percent, displayName, ...uploadFile } = progressFile;\n      delete uploadFile.thumbnailUrl;\n\n      return uploadFile;\n    };\n\n    return files.map(mapedByUploadFile);\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n<po-field-container\n  [p-disabled]=\"isDisabled || isFieldDisabled\"\n  [p-id]=\"id\"\n  [p-label]=\"label\"\n  [p-optional]=\"optional\"\n  [p-required]=\"required\"\n  [p-show-required]=\"showRequired\"\n  [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n  [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n  [p-size]=\"size\"\n  [p-text-wrap]=\"labelTextWrap()\"\n  [p-compact-label]=\"compactLabel()\"\n>\n  <div class=\"po-field-container-content\">\n    <div class=\"po-upload\">\n      <input\n        #inputFile\n        class=\"po-upload-input\"\n        type=\"file\"\n        [accept]=\"allowedExtensions\"\n        [attr.name]=\"name\"\n        [id]=\"id\"\n        [disabled]=\"isDisabled || loading\"\n        [multiple]=\"isMultiple\"\n        [required]=\"required\"\n        (change)=\"onFileChange($event)\"\n      />\n\n      @if (displayDragDrop) {\n        <po-upload-drag-drop\n          [p-directory-compatible]=\"canHandleDirectory\"\n          [p-disabled]=\"isDisabled\"\n          [p-drag-drop-height]=\"dragDropHeight\"\n          [p-literals]=\"literals\"\n          (p-file-change)=\"onFileChangeDragDrop($event)\"\n          (p-select-files)=\"selectFiles()\"\n        >\n        </po-upload-drag-drop>\n      }\n\n      @if (fileRestrictions && !hideRestrictionsInfo) {\n        <po-upload-file-restrictions\n          class=\"po-upload-file-restrictions\"\n          [ngClass]=\"{ 'po-upload-file-restrictions-drag-drop': displayDragDrop }\"\n          [class.po-pb-1]=\"!displayDragDrop\"\n          [p-allowed-extensions]=\"fileRestrictions?.allowedExtensions\"\n          [p-max-files]=\"maxFiles\"\n          [p-max-file-size]=\"fileRestrictions?.maxFileSize\"\n          [p-min-file-size]=\"fileRestrictions?.minFileSize\"\n        >\n        </po-upload-file-restrictions>\n      }\n\n      @if (!hideSelectButton && !displayDragDrop) {\n        <po-button\n          #uploadButton\n          class=\"po-upload-button\"\n          for=\"file\"\n          [p-disabled]=\"isSelectButtonDisabled\"\n          [p-loading]=\"loading\"\n          [p-label]=\"selectFileButtonLabel\"\n          [p-size]=\"size\"\n          (p-click)=\"selectFiles()\"\n          (keydown)=\"onKeyDown($event)\"\n        >\n        </po-button>\n      }\n\n      @if (currentFiles && currentFiles.length) {\n        <div class=\"po-upload-files-content\">\n          @for (file of currentFiles; track trackByFn($index, file)) {\n            <div\n              class=\"po-upload-progress-container\"\n              [class.po-upload-container-error]=\"file.status === 2\"\n              [class.po-upload-status-uploaded]=\"file.hideDoneContent\"\n            >\n              <po-container>\n                <div\n                  [ngClass]=\"showThumbnail && file.thumbnailUrl ? 'po-upload-content-thumbnail' : 'po-upload-content'\"\n                  class=\"po-upload-content\"\n                >\n                  <div class=\"po-upload-file-name\">\n                    <div class=\"po-upload-file-name-display\">\n                      @if (showThumbnail && file.thumbnailUrl) {\n                        <div class=\"po-upload-thumbnail\" (click)=\"openModal(file)\" (keydown)=\"openModal(file, $event)\">\n                          @if (!file.imageError) {\n                            <div class=\"po-upload-thumbnail-icon\">\n                              <po-icon p-icon=\"ICON_PICTURE\"></po-icon>\n                            </div>\n                            <img\n                              class=\"po-upload-thumbnail-img\"\n                              [src]=\"file.thumbnailUrl\"\n                              [alt]=\"literals.thumbnail\"\n                              (error)=\"onImageError(file)\"\n                            />\n                          } @else {\n                            <div class=\"po-upload-thumbnail-broken\">\n                              <po-icon p-icon=\"ICON_PICTURE_BROKEN\"></po-icon>\n                            </div>\n                          }\n                        </div>\n                      }\n                      <span\n                        class=\"po-upload-display-name\"\n                        [class.po-upload-name-interactive]=\"showThumbnail && file.thumbnailUrl\"\n                        [p-tooltip]=\"tooltipTitle\"\n                        (keydown)=\"openModal(file, $event)\"\n                        (click)=\"openModal(file)\"\n                        (mouseover)=\"showTooltipText($event, file?.displayName)\"\n                        (focus)=\"showTooltipText($event, file?.displayName)\"\n                        >{{ file.displayName }}</span\n                      >\n                    </div>\n                    <div class=\"po-upload-buttons-content\">\n                      @if (isActionVisible(customAction)) {\n                        <po-button\n                          class=\"po-upload-custom-action-button\"\n                          [p-danger]=\"customAction.type === 'danger'\"\n                          [p-disabled]=\"actionIsDisabled(customAction)\"\n                          [p-label]=\"customAction.label || ''\"\n                          [p-icon]=\"customAction.icon\"\n                          [p-size]=\"size\"\n                          (p-click)=\"customClick(file)\"\n                        >\n                        </po-button>\n                      }\n                      @if (file.status !== 0 || onRemove?.observers?.length > 0) {\n                        <div\n                          class=\"po-upload-icon-focus\"\n                          [class.po-upload-cancel-disabled]=\"disabledRemoveFile\"\n                          [attr.aria-label]=\"literals.close\"\n                          [tabindex]=\"disabledRemoveFile ? -1 : 0\"\n                          (keydown)=\"cancel(file, $event)\"\n                          (click)=\"cancel(file)\"\n                        >\n                          <po-icon\n                            class=\"po-upload-icon-close\"\n                            [class.po-upload-icon-remove]=\"file.status === 0\"\n                            [p-icon]=\"file.status === 0 ? 'ICON_DELETE' : 'ICON_CLOSE'\"\n                          >\n                          </po-icon>\n                        </div>\n                      }\n                    </div>\n                  </div>\n                  @if (!file.hideDoneContent) {\n                    <div class=\"po-upload-info-bar\" [class.fade-out]=\"file.status === 0\">\n                      @if (file.status === 0) {\n                        <span> {{ literals.doneText }} </span>\n                      } @else if (file.status === 2) {\n                        <div class=\"po-upload-content-error\">\n                          <po-icon class=\"po-upload-icon-error\" p-icon=\"ICON_EXCLAMATION\"></po-icon\n                          ><span class=\"po-upload-content-error-text\">\n                            {{ file?.errorMessage || literals?.errorOccurred }}\n                          </span>\n                          @if (!file.errorMessage) {\n                            <po-link\n                              class=\"po-upload-retry-link\"\n                              [p-label]=\"literals.tryAgain\"\n                              (p-action)=\"uploadFiles([file])\"\n                            ></po-link>\n                          }\n                        </div>\n                      } @else if (file.status === 1) {\n                        <span>{{ literals.uploadingText }}</span>\n                      } @else if (file.status === 3) {\n                        <span>{{ literals.startSending }}</span>\n                      }\n                      @if (file.status !== 2) {\n                        <span class=\"po-upload-value-percent\">{{ file.percent || 0 }}%</span>\n                      }\n                    </div>\n                  }\n                </div>\n                @if (file.status !== 2 && !file.hideDoneContent) {\n                  <po-progress\n                    [class.fade-out]=\"file.status === 0\"\n                    class=\"po-upload-progress\"\n                    p-size=\"medium\"\n                    [p-disabled-cancel]=\"disabledRemoveFile\"\n                    [p-value]=\"file.percent\"\n                    [p-status]=\"progressStatusByFileStatus[file.status]\"\n                    [p-size-actions]=\"size\"\n                  >\n                  </po-progress>\n                }\n              </po-container>\n            </div>\n          }\n        </div>\n      }\n\n      @if (displaySendButton) {\n        <po-button\n          class=\"po-upload-send-button\"\n          [class.po-mt-3]=\"hasMoreThanFourItems\"\n          p-kind=\"primary\"\n          [p-disabled]=\"isFieldDisabled || hasAnyFileUploading(currentFiles)\"\n          [p-label]=\"literals.startSending\"\n          [p-size]=\"size\"\n          (p-click)=\"uploadFiles(currentFiles)\"\n        ></po-button>\n      }\n    </div>\n  </div>\n  <po-field-container-bottom\n    [p-append-in-body]=\"appendBox\"\n    [p-help]=\"help\"\n    [p-disabled]=\"isFieldDisabled\"\n    [p-size]=\"size\"\n    [p-helper]=\"!label ? poHelper.helperSettings : undefined\"\n    [p-show-helper]=\"!label ? displayAdditionalHelp : undefined\"\n  ></po-field-container-bottom>\n</po-field-container>\n\n<po-modal\n  #modal\n  [p-components-size]=\"size\"\n  [p-primary-action]=\"modalPrimaryAction\"\n  [p-secondary-action]=\"modalSecondaryAction\"\n  [p-title]=\"literals.preview\"\n  [p-click-out]=\"true\"\n  (p-close)=\"closeModal.bind(this)\"\n>\n  @if (!errorModalImage) {\n    <img [src]=\"modalImageUrl\" [alt]=\"literals.thumbnail\" (error)=\"errorModalImage = true\" />\n  } @else {\n    <div class=\"po-upload-thumbnail-broken\">\n      <po-icon p-icon=\"ICON_PICTURE_BROKEN\"></po-icon>\n    </div>\n  }\n</po-modal>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  forwardRef,\n  OnDestroy,\n  inject,\n  OnChanges,\n  SimpleChanges\n} from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { uuid } from '../../../utils/util';\n\nimport { PoInputGeneric } from '../po-input-generic/po-input-generic';\n\n/**\n * @docsExtends PoInputBaseComponent\n *\n * @description\n *\n * O `po-url` é um input específico para receber URL, com o pattern já configurado.\n *\n * @example\n *\n * <example name=\"po-url-basic\" title=\"PO Url Basic\">\n *   <file name=\"sample-po-url-basic/sample-po-url-basic.component.html\"> </file>\n *   <file name=\"sample-po-url-basic/sample-po-url-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-url-labs\" title=\"PO Url Labs\">\n *   <file name=\"sample-po-url-labs/sample-po-url-labs.component.html\"> </file>\n *   <file name=\"sample-po-url-labs/sample-po-url-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-url-shortener\" title=\"PO Url - Shortener\">\n *   <file name=\"sample-po-url-shortener/sample-po-url-shortener.component.html\"> </file>\n *   <file name=\"sample-po-url-shortener/sample-po-url-shortener.component.ts\"> </file>\n * </example>\n *\n */\n@Component({\n  selector: 'po-url',\n  templateUrl: '../po-input/po-input.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoUrlComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => PoUrlComponent),\n      multi: true\n    }\n  ],\n  standalone: false\n})\nexport class PoUrlComponent extends PoInputGeneric implements AfterViewInit, OnDestroy, OnChanges {\n  id = `po-url[${uuid()}]`;\n  icon = 'ICON_WORLD';\n\n  type = 'url';\n\n  pattern =\n    '^((https|http):\\\\/\\\\/)?' + // protocol\n    '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|' + // domain name\n    '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // OR ip (v4) address\n    '(\\\\:\\\\d+)?(\\\\/[-A-Za-z\\\\d%_.~+]*)*' + // port and path\n    '(\\\\?[;&A-Za-z\\\\d%_.~+=-]*)?' + // query string\n    '(\\\\#[-A-Za-z\\\\d_]*)?$';\n\n  mask = '';\n\n  private readonly listener = this.validateClassesForPattern.bind(this);\n\n  /* istanbul ignore next */\n  constructor() {\n    const el = inject(ElementRef);\n    const cd = inject(ChangeDetectorRef);\n\n    super(el, cd);\n    this.maxlength = 254;\n  }\n\n  ngAfterViewInit() {\n    // Se não tem ngModel ou reactive form adiciona validação com classes css\n    setTimeout(() => {\n      if (!this.onChangePropagate) {\n        this.inputEl.nativeElement.addEventListener('keyup', this.listener);\n      }\n    });\n    super.ngAfterViewInit();\n  }\n\n  ngOnDestroy() {\n    if (!this.onChangePropagate) {\n      this.inputEl.nativeElement.removeEventListener('keyup', this.listener);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n  }\n\n  extraValidation(c: AbstractControl): { [key: string]: any } {\n    return null;\n  }\n}\n","import { Component, EventEmitter, HostBinding, Input, Output, ViewChild, inject } from '@angular/core';\nimport { NgForm } from '@angular/forms';\n\nimport { PoUtils } from '../../../../utils/util';\nimport { PoLanguageService } from './../../../../services/po-language/po-language.service';\n\nimport { PoModalAction, PoModalComponent } from '../../../po-modal';\nimport { PoUploadFileRestrictions } from '../../po-upload/interfaces/po-upload-file-restriction.interface';\nimport { PoUploadComponent } from '../../po-upload/po-upload.component';\nimport { poRichTextLiteralsDefault } from '../po-rich-text-literals';\n\nconst uploadRestrictions = ['.apng', '.bmp', '.gif', '.ico', '.jpeg', '.jpg', '.png', '.svg'];\n\n@Component({\n  selector: 'po-rich-text-image-modal',\n  templateUrl: './po-rich-text-image-modal.component.html',\n  standalone: false\n})\nexport class PoRichTextImageModalComponent {\n  private readonly languageService = inject(PoLanguageService);\n\n  @ViewChild('modal', { static: true }) modal: PoModalComponent;\n\n  @ViewChild('modalImageForm') modalImageForm: NgForm;\n\n  @ViewChild('upload', { static: true }) upload: PoUploadComponent;\n\n  @HostBinding('attr.p-size')\n  @Input('p-size')\n  size: string;\n\n  @Output('p-command') command = new EventEmitter<string | { command: string; value: string | any }>();\n\n  savedCursorPosition;\n  selection = document.getSelection();\n  uploadModel: Array<any>;\n  uploadRestrictions: PoUploadFileRestrictions = {\n    allowedExtensions: uploadRestrictions\n  };\n  urlImage: string;\n\n  readonly literals: any;\n\n  modalCancelAction: PoModalAction;\n\n  modalConfirmAction: PoModalAction;\n\n  get isUploadValid(): boolean {\n    return !!(this.uploadModel && this.uploadModel.length);\n  }\n\n  get isUrlValid(): boolean {\n    return !!this.urlImage && this.modalImageForm && this.modalImageForm.valid;\n  }\n\n  constructor() {\n    this.literals = {\n      ...poRichTextLiteralsDefault[this.languageService.getShortLanguage()]\n    };\n\n    this.modalCancelAction = {\n      label: this.literals.cancel,\n      action: () => {\n        this.modal.close();\n        this.command.emit();\n        this.retrieveCursorPosition();\n        this.cleanUpFields();\n      }\n    };\n\n    this.modalConfirmAction = {\n      label: this.literals.insert,\n      disabled: false,\n      action: () => this.insertElementRef()\n    };\n  }\n\n  openModal() {\n    this.saveCursorPosition();\n    this.modal.open();\n  }\n\n  private cleanUpFields() {\n    this.urlImage = undefined;\n    this.uploadModel = undefined;\n  }\n\n  private async convertToBase64() {\n    if (this.isUploadValid) {\n      const uploadImage = this.uploadModel[0].rawFile;\n      return await PoUtils.convertImageToBase64(uploadImage);\n    }\n  }\n\n  private emitCommand(value) {\n    let command: string;\n    if (value) {\n      command = 'insertImage';\n      this.command.emit({ command, value });\n    }\n  }\n\n  private async insertElementRef() {\n    let uploadImage: string;\n\n    if (!this.urlImage) {\n      uploadImage = await this.convertToBase64();\n    }\n\n    this.retrieveCursorPosition();\n    this.modal.close();\n\n    if (this.isUrlValid || this.isUploadValid) {\n      this.emitCommand(this.urlImage || uploadImage);\n    }\n    this.cleanUpFields();\n  }\n\n  private retrieveCursorPosition() {\n    this.selection.collapse(this.savedCursorPosition[0], this.savedCursorPosition[1]);\n  }\n\n  private saveCursorPosition() {\n    this.savedCursorPosition = [this.selection.focusNode, this.selection.focusOffset];\n  }\n}\n","<po-modal\n  #modal\n  p-hide-close\n  [p-components-size]=\"size\"\n  [p-primary-action]=\"modalConfirmAction\"\n  [p-secondary-action]=\"modalCancelAction\"\n  [p-title]=\"literals.insertImage\"\n>\n  <form #modalImageForm=\"ngForm\">\n    <div class=\"po-row\">\n      <!-- po-upload desabilita o drag drop caso não tenha valor atribuido para a propriedade p-url -->\n      <po-upload\n        #upload\n        class=\"po-md-12\"\n        name=\"upload\"\n        [(ngModel)]=\"uploadModel\"\n        p-drag-drop-height=\"160\"\n        p-hide-restrictions-info\n        p-hide-send-button\n        p-url=\"x\"\n        [p-drag-drop]=\"!modal.isHidden\"\n        [p-disabled]=\"isUrlValid\"\n        [p-restrictions]=\"uploadRestrictions\"\n        [p-show-thumbnail]=\"false\"\n        [p-size]=\"size\"\n      >\n      </po-upload>\n    </div>\n\n    <div class=\"po-row\">\n      <po-url\n        class=\"po-md-12 po-mt-3\"\n        name=\"url\"\n        [(ngModel)]=\"urlImage\"\n        [p-label]=\"literals.urlImage\"\n        [p-disabled]=\"isUploadValid\"\n        [p-size]=\"size\"\n      >\n      </po-url>\n    </div>\n  </form>\n</po-modal>\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnInit,\n  Output,\n  ViewChild,\n  inject\n} from '@angular/core';\nimport { AbstractControl, NgForm } from '@angular/forms';\n\nimport { isExternalLink, PoUtils } from '../../../../utils/util';\nimport { PoLanguageService } from './../../../../services/po-language/po-language.service';\n\nimport { PoModalAction, PoModalComponent } from '../../../po-modal';\nimport { poRichTextLiteralsDefault } from '../po-rich-text-literals';\n\n@Component({\n  selector: 'po-rich-text-link-modal',\n  templateUrl: './po-rich-text-link-modal.component.html',\n  standalone: false\n})\nexport class PoRichTextLinkModalComponent implements OnInit {\n  private readonly languageService = inject(PoLanguageService);\n\n  @ViewChild('modal', { static: true }) modal: PoModalComponent;\n\n  @ViewChild('modalLinkForm') modalLinkForm: NgForm;\n\n  @HostBinding('attr.p-size')\n  @Input('p-size')\n  size: string;\n\n  @Output('p-command') command = new EventEmitter<string | { command: string; value: string | any }>();\n\n  @Output('p-link-editing') linkEditing = new EventEmitter<any>();\n\n  savedCursorPosition;\n  selection = document.getSelection();\n  urlLink: string;\n  urlLinkText: string;\n\n  readonly literals: any;\n\n  modalCancelAction: PoModalAction;\n  modalConfirmAction: PoModalAction;\n\n  private isLinkEditing: boolean;\n  private isSelectedLink: boolean;\n  private linkElement: any;\n  private savedSelection: Range | null;\n\n  constructor() {\n    this.literals = {\n      ...poRichTextLiteralsDefault[this.languageService?.getShortLanguage()]\n    };\n  }\n\n  ngOnInit(): void {\n    this.setModalCancelAction();\n    this.setModalConfirmAction();\n  }\n\n  linkConfirmAction(): string {\n    return this.isLinkEditing ? this.literals.editLink : this.literals.insertLink;\n  }\n\n  formModelValidate() {\n    return (this.modalConfirmAction.disabled = this.modalLinkForm?.invalid);\n  }\n\n  openModal(selectedLinkElement: ElementRef) {\n    this.saveCursorPosition();\n    this.prepareModalForLink(selectedLinkElement);\n\n    this.modalConfirmAction.label = this.linkConfirmAction();\n    this.modal.open();\n  }\n\n  private selectedLink(linkElement: ElementRef) {\n    this.isSelectedLink = !!linkElement;\n    this.linkElement = linkElement;\n  }\n\n  private checkIfIsEmpty(urlLink: string, urlLinkText: string) {\n    return urlLinkText === undefined || urlLinkText.trim() === '' ? urlLink : urlLinkText;\n  }\n\n  private cleanUpFields() {\n    this.urlLink = undefined;\n    this.urlLinkText = undefined;\n    this.isLinkEditing = false;\n    this.isSelectedLink = false;\n    this.linkElement = undefined;\n  }\n\n  private formReset(control: AbstractControl) {\n    control.markAsPristine();\n    control.markAsUntouched();\n    control.updateValueAndValidity();\n  }\n\n  private prepareModalForLink(selectedLinkElement: ElementRef) {\n    this.saveSelectionText();\n    if (this.modalLinkForm) {\n      this.formReset(this.modalLinkForm.control);\n    }\n\n    setTimeout(() => {\n      this.formModelValidate();\n    });\n\n    this.selectedLink(selectedLinkElement);\n\n    if (this.isSelectedLink) {\n      this.isLinkEditing = true;\n      this.setLinkEditableForModal();\n    }\n\n    this.linkEditing.emit(this.isLinkEditing);\n  }\n\n  private restoreSelection() {\n    if (this.savedSelection) {\n      if (this.selection) {\n        this.selection.removeAllRanges();\n        this.selection.addRange(this.savedSelection);\n      }\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  private retrieveCursorPosition() {\n    this.selection.collapse(this.savedCursorPosition[0], this.savedCursorPosition[1]);\n  }\n\n  private saveCursorPosition() {\n    this.savedCursorPosition = [this.selection.focusNode, this.selection.focusOffset];\n  }\n\n  private saveSelectionText() {\n    if (this.selection.anchorNode !== null) {\n      this.savedSelection = this.selection.getRangeAt(0);\n      this.urlLinkText = this.selection.toString();\n    } else {\n      return null;\n    }\n  }\n\n  private setLinkEditableForModal() {\n    this.urlLinkText = this.linkElement.innerText;\n    this.urlLink = this.linkElement.getAttribute('href');\n  }\n\n  private setModalCancelAction() {\n    this.modalCancelAction = {\n      label: this.literals.cancel,\n      action: () => {\n        this.modal.close();\n        this.command.emit();\n        this.retrieveCursorPosition();\n        this.cleanUpFields();\n      }\n    };\n  }\n\n  private setModalConfirmAction() {\n    this.modalConfirmAction = {\n      label: this.linkConfirmAction(),\n      disabled: true,\n      action: () => (this.isLinkEditing ? this.toEditLink() : this.toInsertLink(this.urlLink, this.urlLinkText))\n    };\n  }\n\n  private toEditLink() {\n    if (PoUtils.isIE()) {\n      this.linkElement.parentNode.removeChild(this.linkElement);\n    } else {\n      this.linkElement.remove();\n    }\n\n    this.toInsertLink(this.urlLink, this.urlLinkText);\n  }\n\n  private toInsertLink(urlLink, urlLinkText) {\n    this.modal.close();\n    this.restoreSelection();\n\n    const urlLinkTextValue = this.checkIfIsEmpty(urlLink, urlLinkText);\n    const urlAsExternalLink = isExternalLink(urlLink) ? urlLink : `http://${urlLink}`;\n\n    const command: string = 'InsertHTML';\n\n    const value = { urlLink: urlAsExternalLink, urlLinkText: urlLinkTextValue };\n\n    this.command.emit({ command, value });\n\n    this.cleanUpFields();\n  }\n}\n","<po-modal\n  #modal\n  p-hide-close\n  [p-components-size]=\"size\"\n  [p-primary-action]=\"modalConfirmAction\"\n  [p-secondary-action]=\"modalCancelAction\"\n  [p-title]=\"linkConfirmAction()\"\n>\n  <form #modalLinkForm=\"ngForm\">\n    <div class=\"po-row\">\n      <po-input\n        class=\"po-md-12 po-mb-2\"\n        name=\"urlLinkText\"\n        [(ngModel)]=\"urlLinkText\"\n        p-optional\n        [p-label]=\"literals.linkTextLabel\"\n        [p-placeholder]=\"literals.linkTextLabel\"\n        [p-size]=\"size\"\n      >\n      </po-input>\n\n      <po-url\n        class=\"po-md-12\"\n        name=\"urlLink\"\n        [(ngModel)]=\"urlLink\"\n        p-label=\"Link\"\n        p-required\n        [p-help]=\"literals.linkUrlTextHelper\"\n        [p-placeholder]=\"literals.linkUrlTextPlaceholder\"\n        [p-size]=\"size\"\n        (p-change-model)=\"formModelValidate()\"\n      >\n      </po-url>\n    </div>\n  </form>\n</po-modal>\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  Output,\n  ViewChild,\n  inject\n} from '@angular/core';\n\nimport { PoLanguageService } from '../../../../services/po-language/po-language.service';\nimport { PoUtils } from '../../../../utils/util';\n\nimport { PoButtonGroupItem } from '../../../po-button-group';\nimport { PoRichTextToolbarActions } from '../enum/po-rich-text-toolbar-actions.enum';\nimport { PoRichTextToolbarButtonGroupItem } from '../interfaces/po-rich-text-toolbar-button-group-item.interface';\nimport { PoRichTextImageModalComponent } from '../po-rich-text-image-modal/po-rich-text-image-modal.component';\nimport { PoRichTextLinkModalComponent } from '../po-rich-text-link-modal/po-rich-text-link-modal.component';\nimport { poRichTextLiteralsDefault } from '../po-rich-text-literals';\n\nconst poRichTextDefaultColor = '#000000';\n\n@Component({\n  selector: 'po-rich-text-toolbar',\n  templateUrl: './po-rich-text-toolbar.component.html',\n  standalone: false\n})\nexport class PoRichTextToolbarComponent implements AfterViewInit {\n  private readonly languageService = inject(PoLanguageService);\n\n  @ViewChild('colorPickerInput', { read: ElementRef }) colorPickerInput: ElementRef;\n\n  @ViewChild('toolbarElement', { static: true }) toolbarElement: ElementRef;\n\n  @ViewChild(PoRichTextImageModalComponent, { static: true }) richTextImageModal: PoRichTextImageModalComponent;\n\n  @ViewChild(PoRichTextLinkModalComponent, { static: true }) richTextLinkModal: PoRichTextLinkModalComponent;\n\n  @Output('p-command') command = new EventEmitter<string | { command: string; value: string }>();\n\n  @Output('p-modal') modal = new EventEmitter<any>();\n\n  @Output('p-link-editing') linkEditing = new EventEmitter<any>();\n\n  readonly literals?: any;\n\n  alignButtons: Array<PoRichTextToolbarButtonGroupItem>;\n\n  formatButtons: Array<PoRichTextToolbarButtonGroupItem>;\n\n  listButtons: Array<PoRichTextToolbarButtonGroupItem>;\n\n  linkButtons: Array<PoRichTextToolbarButtonGroupItem>;\n\n  mediaButtons: Array<PoButtonGroupItem>;\n\n  private _readonly: boolean;\n  private selectedLinkElement;\n\n  private _hideToolbarActions: Array<PoRichTextToolbarActions> = [];\n\n  formatToolbarAction = PoRichTextToolbarActions.Format;\n  colorToolbarAction = PoRichTextToolbarActions.Color;\n  alignToolbarAction = PoRichTextToolbarActions.Align;\n  listToolbarAction = PoRichTextToolbarActions.List;\n  linkToolbarAction = PoRichTextToolbarActions.Link;\n  mediaToolbarAction = PoRichTextToolbarActions.Media;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as ações da barra de ferramentas do `PoRichTextComponent` que serão ocultadas.\n   * Aceita um único valor do tipo `PoRichTextToolbarActions` ou uma lista de valores.\n   *\n   * > Esta propriedade sobrepõe a configuração da propriedade `p-disabled-text-align` quando for passada como `false`, caso sejam definidas simultaneamente.\n   *\n   * @default `[]`\n   *\n   * @example\n   * ```\n   * // Oculta apenas o seletor de cores\n   * component.hideToolbarActions = PoRichTextToolbarActions.Color;\n   *\n   * // Oculta as opções de alinhamento e link\n   * component.hideToolbarActions = [PoRichTextToolbarActions.Align, PoRichTextToolbarActions.Link];\n   * ```\n   */\n  @Input('p-hide-toolbar-actions') set hideToolbarActions(\n    actions: Array<PoRichTextToolbarActions> | PoRichTextToolbarActions\n  ) {\n    this._hideToolbarActions = Array.isArray(actions) ? [...actions] : [actions];\n  }\n\n  get hideToolbarActions(): Array<PoRichTextToolbarActions> {\n    return this._hideToolbarActions;\n  }\n\n  @Input('p-readonly') set readonly(value: boolean) {\n    this._readonly = value;\n    this.toggleDisableButtons(this._readonly);\n  }\n\n  get readonly() {\n    return this._readonly;\n  }\n\n  get isInternetExplorer() {\n    return PoUtils.isIE();\n  }\n\n  @Input('p-disabled') disabled?: boolean;\n\n  @HostBinding('attr.p-size')\n  @Input('p-size')\n  size: string;\n\n  constructor() {\n    this.literals = {\n      ...poRichTextLiteralsDefault[this.languageService?.getShortLanguage()]\n    };\n    this.alignButtons = [\n      {\n        command: 'justifyleft',\n        icon: 'ICON_ALIGN_LEFT',\n        tooltip: this.literals.left,\n        action: this.emitAlignCommand.bind(this, 'justifyleft'),\n        selected: true\n      },\n      {\n        command: 'justifycenter',\n        icon: 'ICON_ALIGN_CENTER',\n        tooltip: this.literals.center,\n        action: this.emitAlignCommand.bind(this, 'justifycenter')\n      },\n      {\n        command: 'justifyright',\n        icon: 'ICON_ALIGN_RIGHT',\n        tooltip: this.literals.right,\n        action: this.emitAlignCommand.bind(this, 'justifyright')\n      },\n      {\n        command: 'justifyfull',\n        icon: 'ICON_ALIGN_JUSTIFY',\n        tooltip: this.literals.justify,\n        action: this.emitAlignCommand.bind(this, 'justifyfull')\n      }\n    ];\n\n    this.formatButtons = [\n      {\n        command: 'bold',\n        icon: 'ICON_TEXT_BOLD',\n        tooltip: this.literals.bold,\n        action: this.emitCommand.bind(this, 'bold')\n      },\n      {\n        command: 'italic',\n        icon: 'ICON_TEXT_ITALIC',\n        tooltip: this.literals.italic,\n        action: this.emitCommand.bind(this, 'italic')\n      },\n      {\n        command: 'underline',\n        icon: 'ICON_TEXT_UNDERLINE',\n        tooltip: this.literals.underline,\n        action: this.emitCommand.bind(this, 'underline')\n      }\n    ];\n\n    this.listButtons = [\n      {\n        command: 'insertUnorderedList',\n        icon: 'ICON_LIST',\n        tooltip: this.literals.unorderedList,\n        action: this.emitCommand.bind(this, 'insertUnorderedList')\n      }\n    ];\n\n    this.mediaButtons = [\n      {\n        tooltip: this.literals.insertImage,\n        icon: 'ICON_PICTURE',\n        action: () => this.richTextImageModal.openModal()\n      }\n    ];\n\n    this.linkButtons = [\n      {\n        command: 'Createlink',\n        icon: 'ICON_LINK',\n        tooltip: `${this.literals.insertLink} (Ctrl + K)`,\n        action: () => this.richTextLinkModal.openModal(this.selectedLinkElement)\n      }\n    ];\n  }\n\n  ngAfterViewInit() {\n    this.removeButtonFocus();\n    if (this.showColor()) {\n      this.setColorInColorPicker(poRichTextDefaultColor);\n    }\n  }\n\n  changeTextColor(value) {\n    const command = 'foreColor';\n\n    this.command.emit({ command, value });\n  }\n\n  emitLinkEditing(isLinkEdit: boolean) {\n    this.linkEditing.emit(isLinkEdit);\n  }\n\n  selectedLink(selectedLinkElement) {\n    this.selectedLinkElement = selectedLinkElement;\n  }\n\n  setButtonsStates(obj: { commands: Array<string>; hexColor: string }) {\n    if (!this.readonly) {\n      this.alignButtons.forEach(button => (button.selected = obj.commands.includes(button.command)));\n      this.formatButtons.forEach(button => (button.selected = obj.commands.includes(button.command)));\n      this.listButtons[0].selected = obj.commands.includes(this.listButtons[0].command);\n      this.linkButtons[0].selected = obj.commands.includes(this.linkButtons[0].command);\n      this.setColorInColorPicker(obj.hexColor);\n    }\n  }\n\n  // Verifica se uma ação específica do toolbar está oculta\n  isActionHidden(action: PoRichTextToolbarActions): boolean {\n    return this.hideToolbarActions.includes(action);\n  }\n\n  showColor(): boolean {\n    return !this.isInternetExplorer && !this.isActionHidden(PoRichTextToolbarActions.Color);\n  }\n\n  shortcutTrigger() {\n    this.richTextLinkModal.openModal(this.selectedLinkElement);\n  }\n\n  emitCommand(command: string) {\n    this.command.emit(command);\n  }\n\n  private emitAlignCommand(command: string) {\n    const index = this.alignButtons.findIndex(btn => btn.command === command);\n\n    if (!this.alignButtons[index].selected) {\n      this.alignButtons[index].selected = false;\n    }\n\n    this.command.emit(command);\n  }\n\n  private removeButtonFocus() {\n    const buttons = this.toolbarElement.nativeElement.querySelectorAll('button');\n\n    buttons.forEach(button => button.setAttribute('tabindex', '-1'));\n  }\n\n  private setColorInColorPicker(color: string): void {\n    this.colorPickerInput.nativeElement.value = color;\n  }\n\n  private toggleDisableButtons(state: boolean) {\n    this.alignButtons.forEach(button => (button.disabled = state));\n    this.formatButtons.forEach(button => (button.disabled = state));\n    this.listButtons[0].disabled = state;\n    this.linkButtons[0].disabled = state;\n    this.mediaButtons[0].disabled = state;\n  }\n}\n","<div class=\"po-rich-text-toolbar\" #toolbarElement [class.po-rich-text-disabled]=\"disabled\">\n  @if (!isActionHidden(formatToolbarAction)) {\n    <div class=\"po-rich-text-toolbar-button-align\" data-rich-text-toolbar=\"format\">\n      <po-button-group p-toggle=\"multiple\" [p-buttons]=\"formatButtons\" [p-size]=\"size\"> </po-button-group>\n    </div>\n  }\n\n  @if (showColor()) {\n    <div class=\"po-rich-text-toolbar-button-align\" data-rich-text-toolbar=\"color\">\n      <div class=\"po-rich-text-toolbar-color-picker-container\">\n        <button\n          type=\"button\"\n          class=\"po-button po-button-default po-rich-text-toolbar-color-picker-button\"\n          [disabled]=\"readonly\"\n          [p-tooltip]=\"literals.textColor\"\n          [attr.aria-label]=\"literals.textColor\"\n        >\n          <input\n            #colorPickerInput\n            class=\"po-rich-text-toolbar-color-picker-input\"\n            type=\"color\"\n            [disabled]=\"readonly\"\n            (input)=\"changeTextColor($event.target.value)\"\n            [attr.aria-label]=\"literals.textColor\"\n          />\n        </button>\n      </div>\n    </div>\n  }\n\n  @if (!isActionHidden(alignToolbarAction)) {\n    <div class=\"po-rich-text-toolbar-button-align\" data-rich-text-toolbar=\"align\">\n      <po-button-group p-toggle=\"single\" [p-buttons]=\"alignButtons\" [p-size]=\"size\"> </po-button-group>\n    </div>\n  }\n\n  @if (!isActionHidden(listToolbarAction)) {\n    <div class=\"po-rich-text-toolbar-button-align\" data-rich-text-toolbar=\"list\">\n      <po-button-group p-toggle=\"single\" [p-buttons]=\"listButtons\" [p-size]=\"size\"> </po-button-group>\n    </div>\n  }\n\n  @if (!isActionHidden(linkToolbarAction)) {\n    <div class=\"po-rich-text-toolbar-button-align\" data-rich-text-toolbar=\"link\">\n      <po-button-group [p-buttons]=\"linkButtons\" [p-size]=\"size\"> </po-button-group>\n    </div>\n  }\n\n  @if (!isActionHidden(mediaToolbarAction)) {\n    <div class=\"po-rich-text-toolbar-button-align\" data-rich-text-toolbar=\"media\">\n      <po-button-group [p-buttons]=\"mediaButtons\" [p-size]=\"size\"> </po-button-group>\n    </div>\n  }\n</div>\n\n<po-rich-text-image-modal #richTextImageModal [p-size]=\"size\" (p-command)=\"emitCommand($event)\">\n</po-rich-text-image-modal>\n\n<po-rich-text-link-modal\n  #richTextLinkModal\n  [p-size]=\"size\"\n  (p-command)=\"emitCommand($event)\"\n  (p-link-editing)=\"emitLinkEditing($event)\"\n>\n</po-rich-text-link-modal>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  forwardRef,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n  ViewChild,\n  inject,\n  ChangeDetectorRef\n} from '@angular/core';\n\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PoRichTextToolbarActions } from './enum/po-rich-text-toolbar-actions.enum';\nimport { PoRichTextBaseComponent } from './po-rich-text-base.component';\nimport { PoRichTextBodyComponent } from './po-rich-text-body/po-rich-text-body.component';\nimport { PoRichTextToolbarComponent } from './po-rich-text-toolbar/po-rich-text-toolbar.component';\nimport { PoRichTextService } from './po-rich-text.service';\nimport { setHelperSettings } from '../../../utils/util';\nimport { PoHelperComponent } from '../../po-helper';\n\n/* istanbul ignore next */\nconst providers = [\n  {\n    provide: NG_VALUE_ACCESSOR,\n    // eslint-disable-next-line\n    useExisting: forwardRef(() => PoRichTextComponent),\n    multi: true\n  },\n  {\n    provide: NG_VALIDATORS,\n    // eslint-disable-next-line\n    useExisting: forwardRef(() => PoRichTextComponent),\n    multi: true\n  },\n  {\n    provide: PoRichTextService\n  }\n];\n\n/**\n * @docsExtends PoRichTextBaseComponent\n *\n * @example\n *\n * <example name=\"po-rich-text-basic\" title=\"PO Rich Text Basic\">\n *   <file name=\"sample-po-rich-text-basic/sample-po-rich-text-basic.component.html\"> </file>\n *   <file name=\"sample-po-rich-text-basic/sample-po-rich-text-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-rich-text-labs\" title=\"PO Rich Text Labs\">\n *   <file name=\"sample-po-rich-text-labs/sample-po-rich-text-labs.component.html\"> </file>\n *   <file name=\"sample-po-rich-text-labs/sample-po-rich-text-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-rich-text-recipe\" title=\"PO Rich Text Recipe\">\n *   <file name=\"sample-po-rich-text-recipe/sample-po-rich-text-recipe-image-base-64.ts\"> </file>\n *   <file name=\"sample-po-rich-text-recipe/sample-po-rich-text-recipe.component.html\"> </file>\n *   <file name=\"sample-po-rich-text-recipe/sample-po-rich-text-recipe.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-rich-text',\n  templateUrl: './po-rich-text.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers,\n  standalone: false\n})\nexport class PoRichTextComponent\n  extends PoRichTextBaseComponent\n  implements AfterViewInit, OnDestroy, OnInit, OnChanges\n{\n  private readonly element = inject(ElementRef);\n\n  @ViewChild(PoRichTextBodyComponent, { static: true }) bodyElement: PoRichTextBodyComponent;\n  @ViewChild(PoRichTextToolbarComponent, { static: false }) richTextToolbar: PoRichTextToolbarComponent;\n  @ViewChild('helperEl', { read: PoHelperComponent, static: false }) helperEl?: PoHelperComponent;\n\n  private readonly listener = this.validateClassesForRequired.bind(this);\n  private modelLastUpdate: any;\n  toolbarActions: Array<PoRichTextToolbarActions> = [];\n\n  get errorMsg() {\n    return this.errorMessage !== '' && !this.value && this.required && this.invalid ? this.errorMessage : '';\n  }\n\n  constructor() {\n    const richTextService = inject(PoRichTextService);\n    const cd = inject(ChangeDetectorRef);\n\n    super(richTextService, cd);\n  }\n\n  ngOnInit(): void {\n    this.toolbarActions = [...this.hideToolbarActions];\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.hideToolbarActions || changes.disabledTextAlign) {\n      this.toolbarActions = [...this.hideToolbarActions];\n      this.updateAlignOnHideToolbarActionsList();\n    }\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n  }\n\n  ngAfterViewInit() {\n    // Se não tem ngModel ou reactive form adiciona validação com classes css\n    this.addKeyListeners();\n    this.verifyAutoFocus();\n\n    this.updateAlignOnHideToolbarActionsList();\n  }\n\n  ngOnDestroy() {\n    if (!this.onChangeModel) {\n      this.element.nativeElement.removeEventListener('keyup', this.listener);\n      this.element.nativeElement.removeEventListener('keydown', this.listener);\n      this.element.nativeElement.removeEventListener('cut', this.listener);\n      this.element.nativeElement.removeEventListener('paste', this.listener);\n    }\n  }\n\n  /**\n   * Função que atribui foco ao componente.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoRichTextComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoRichTextComponent, { static: true }) richText: PoRichTextComponent;\n   *\n   * focusRichText() {\n   *   this.richText.focus();\n   * }\n   * ```\n   */\n  focus(): void {\n    this.bodyElement.focus();\n  }\n\n  onBlur() {\n    this.onTouched?.();\n  }\n\n  onChangeValue(value: any) {\n    this.change.emit(value);\n  }\n\n  onKeyDown(event: KeyboardEvent): void {\n    this.keydown.emit(event);\n  }\n\n  /**\n   * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n   * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `p-keydown`.\n   *\n   * > Exibe ou oculta o conteúdo do componente `po-helper` quando o componente estiver com foco.\n   *\n   * ```\n   * // Exemplo com p-label e p-helper\n   * <po-rich-text\n   *  #richtext\n   *  ...\n   *  p-label=\"Label do richtext\"\n   *  [p-helper]=\"helperOptions\"\n   *  (p-keydown)=\"onKeyDown($event, richtext)\"\n   * ></po-rich-text>\n   * ```\n   * ```\n   * ...\n   * onKeyDown(event: KeyboardEvent, inp: PoRichTextComponent): void {\n   *  if (event.code === 'F9') {\n   *    inp.showAdditionalHelp();\n   *  }\n   * }\n   * ```\n   */\n  showAdditionalHelp(): boolean {\n    this.displayAdditionalHelp = !this.displayAdditionalHelp;\n    const helper = this.poHelperComponent();\n    const isHelpEvt = this.additionalHelp.observed;\n    if (!this.label && (helper || this.additionalHelpTooltip || isHelpEvt)) {\n      if (isHelpEvt) {\n        this.additionalHelp.emit();\n      }\n      if (typeof helper !== 'string' && typeof helper?.eventOnClick === 'function') {\n        helper.eventOnClick();\n        return;\n      }\n      if (this.helperEl?.helperIsVisible()) {\n        this.helperEl?.closeHelperPopover();\n        return;\n      }\n      this.helperEl?.openHelperPopover();\n      return;\n    }\n    return this.displayAdditionalHelp;\n  }\n\n  updateValue(value: string) {\n    this.value = value;\n    this.invalid = !value;\n    this.controlChangeModelEmitter(this.value);\n    this.updateModel(this.value);\n  }\n\n  private addKeyListeners() {\n    if (!this.onChangeModel) {\n      this.element.nativeElement.addEventListener('keyup', this.listener);\n      this.element.nativeElement.addEventListener('keydown', this.listener);\n      this.element.nativeElement.addEventListener('cut', this.listener);\n      this.element.nativeElement.addEventListener('paste', this.listener);\n    }\n  }\n\n  private controlChangeModelEmitter(value: any) {\n    if (this.modelLastUpdate !== value) {\n      this.changeModel.emit(value);\n      this.modelLastUpdate = value;\n    }\n  }\n\n  private verifyAutoFocus() {\n    if (this.autoFocus) {\n      this.focus();\n    }\n  }\n\n  private validateClassesForRequired() {\n    setTimeout(() => {\n      const value = this.value;\n      const element = this.element.nativeElement;\n\n      if (!value && this.required) {\n        element.classList.add('ng-invalid');\n        element.classList.add('ng-dirty');\n      } else {\n        element.classList.remove('ng-invalid');\n      }\n    });\n  }\n\n  isAllActionsHidden(): boolean {\n    return Object.values(PoRichTextToolbarActions).every(action => this.toolbarActions.includes(action));\n  }\n\n  updateAlignOnHideToolbarActionsList() {\n    if (this.disabledTextAlign && !this.toolbarActions.includes(PoRichTextToolbarActions.Align)) {\n      this.toolbarActions.push(PoRichTextToolbarActions.Align);\n    }\n  }\n\n  setHelper(label?: string, additionalHelpTooltip?: string) {\n    return setHelperSettings(\n      label,\n      additionalHelpTooltip,\n      this.poHelperComponent(),\n      this.size,\n      this.additionalHelp.observed ? this.additionalHelp : undefined\n    );\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n<po-field-container\n  [p-disabled]=\"isDisabled\"\n  [p-label]=\"label\"\n  [p-optional]=\"optional\"\n  [p-required]=\"required\"\n  [p-show-required]=\"showRequired\"\n  [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n  [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n  [p-size]=\"size\"\n  [p-text-wrap]=\"labelTextWrap()\"\n  [p-compact-label]=\"compactLabel()\"\n>\n  <div class=\"po-field-container-content\">\n    <po-rich-text-body\n      #richTextBody\n      [p-height]=\"height\"\n      [p-label]=\"label\"\n      [p-model-value]=\"value\"\n      [p-placeholder]=\"placeholder\"\n      [p-readonly]=\"readonly\"\n      [p-disabled]=\"isDisabled\"\n      [p-loading]=\"loading\"\n      [p-size]=\"size\"\n      (p-change)=\"onChangeValue($event)\"\n      (p-commands)=\"richTextToolbar?.setButtonsStates($event)\"\n      (p-selected-link)=\"richTextToolbar?.selectedLink($event)\"\n      (p-shortcut-command)=\"richTextToolbar?.shortcutTrigger()\"\n      (p-value)=\"updateValue($event)\"\n      (p-blur)=\"onBlur()\"\n      (p-keydown)=\"onKeyDown($event)\"\n    >\n    </po-rich-text-body>\n    @if (!isAllActionsHidden()) {\n      <po-rich-text-toolbar\n        #richTextToolbar\n        [p-readonly]=\"readonly || isDisabled\"\n        [p-disabled]=\"isDisabled\"\n        [p-hide-toolbar-actions]=\"toolbarActions\"\n        [p-size]=\"size\"\n        (p-link-editing)=\"richTextBody.linkEditing($event)\"\n        (p-command)=\"richTextBody.executeCommand($event)\"\n      >\n      </po-rich-text-toolbar>\n    }\n  </div>\n  @if (!readonly) {\n    <po-field-container-bottom\n      [p-append-in-body]=\"appendBox\"\n      [p-help]=\"help\"\n      [p-disabled]=\"isDisabled\"\n      [p-error-limit]=\"errorLimit\"\n      [p-error-pattern]=\"errorMsg\"\n      [p-size]=\"size\"\n      [p-helper]=\"!label ? poHelper.helperSettings : undefined\"\n      [p-show-helper]=\"!label ? displayAdditionalHelp : undefined\"\n    ></po-field-container-bottom>\n  }\n</po-field-container>\n","import { ChangeDetectorRef, Directive, Input } from '@angular/core';\nimport { AbstractControl, ValidationErrors, Validator, Validators } from '@angular/forms';\n\nimport { Subscription } from 'rxjs';\nimport { convertToBoolean } from '../..//utils/util';\nimport { PoFieldModel } from './po-field.model';\nimport { PoValidators } from './validators';\n\n/**\n * @docsExtends PoFieldModel\n */\n@Directive()\nexport abstract class PoFieldValidateModel<T> extends PoFieldModel<T> implements Validator {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se a indicação de campo opcional será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - O campo conter `p-required`;\n   * - Não possuir `p-help` e/ou `p-label`.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-optional', transform: convertToBoolean }) optional: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o campo será obrigatório.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-required', transform: convertToBoolean }) required: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe a mensagem setada se o campo estiver vazio e for requerido.\n   *\n   * > Necessário que a propriedade `p-required` esteja habilitada.\n   *\n   */\n  @Input('p-field-error-message') fieldErrorMessage: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Limita a exibição da mensagem de erro a duas linhas e exibe um tooltip com o texto completo.\n   *\n   * > Caso essa propriedade seja definida como `true`, a mensagem de erro será limitada a duas linhas\n   * e um tooltip será exibido ao passar o mouse sobre a mensagem para mostrar o conteúdo completo.\n   *\n   * @default `false`\n   */\n  @Input('p-error-limit') errorLimit: boolean = false;\n\n  /**\n   *  Define se a indicação de campo obrigatório será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - Não possuir `p-help` e/ou `p-label`.\n   */\n  @Input('p-show-required') showRequired: boolean = false;\n\n  protected hasValidatorRequired = false;\n  private onValidatorChange;\n\n  constructor(public changeDetector: ChangeDetectorRef) {\n    super(changeDetector);\n  }\n\n  validate(abstractControl: AbstractControl): ValidationErrors {\n    if (!this.hasValidatorRequired && this.fieldErrorMessage && abstractControl.hasValidator(Validators.required)) {\n      this.hasValidatorRequired = true;\n    }\n\n    if (PoValidators.requiredFailed(this.required || this.hasValidatorRequired, this.disabled, abstractControl.value)) {\n      this.changeDetector.markForCheck();\n      return {\n        required: {\n          valid: false\n        }\n      };\n    }\n\n    return this.extraValidation(abstractControl);\n  }\n\n  registerOnValidatorChange(fn: any) {\n    this.onValidatorChange = fn;\n  }\n\n  validateModel() {\n    if (this.onValidatorChange) {\n      this.onValidatorChange();\n    }\n  }\n\n  abstract extraValidation(c: AbstractControl): { [key: string]: any };\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnChanges,\n  Output,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  inject,\n  input,\n  HostListener,\n  HostBinding\n} from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport {\n  convertToBoolean,\n  getDefaultSizeFn,\n  isSafari,\n  mapInputSizeToLoadingIcon,\n  setHelperSettings,\n  uuid,\n  validateSizeFn,\n  validValue,\n  PoUtils\n} from '../../../utils/util';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { PoFieldValidateModel } from '../po-field-validate.model';\nimport { PoSelectOptionGroup } from './po-select-option-group.interface';\nimport { PoSelectOption } from './po-select-option.interface';\nimport { PoHelperComponent, PoHelperOptions } from '../../po-helper';\n\nconst PO_SELECT_FIELD_LABEL_DEFAULT = 'label';\nconst PO_SELECT_FIELD_VALUE_DEFAULT = 'value';\n\n/**\n * @docsExtends PoFieldValidateModel\n *\n * @example\n *\n * <example name=\"po-select-basic\" title=\"PO Select Basic\">\n *   <file name=\"sample-po-select-basic/sample-po-select-basic.component.html\"> </file>\n *   <file name=\"sample-po-select-basic/sample-po-select-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-select-labs\" title=\"PO Select Labs\">\n *   <file name=\"sample-po-select-labs/sample-po-select-labs.component.html\"> </file>\n *   <file name=\"sample-po-select-labs/sample-po-select-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-select-customer-registration\" title=\"PO Select - Customer registration\">\n *   <file name=\"sample-po-select-customer-registration/sample-po-select-customer-registration.component.html\"> </file>\n *   <file name=\"sample-po-select-customer-registration/sample-po-select-customer-registration.component.ts\"> </file>\n *   <file name=\"sample-po-select-customer-registration/sample-po-select-customer-registration.component.css\"> </file>\n *   <file name=\"sample-po-select-customer-registration/sample-po-select-customer-registration.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-select-companies\" title=\"PO Select Companies\">\n *   <file name=\"sample-po-select-companies/sample-po-select-companies.component.html\"> </file>\n *   <file name=\"sample-po-select-companies/sample-po-select-companies.component.ts\"> </file>\n * </example>\n *\n * @description\n *\n * O componente po-select exibe uma lista de valores e permite que o usuário selecione um desses valores.\n * Os valores listados podem ser fixos ou dinâmicos de acordo com a necessidade do desenvolvedor, dando mais flexibilidade ao componente.\n * O po-select não permite que o usuário informe um valor diferente dos valores listados, isso garante a consistência da informação.\n * O po-select não permite que sejam passados valores duplicados, undefined e null para as opções, excluindo-os da lista.\n *\n * > Ao passar um valor para o _model_ que não está na lista de opções, o mesmo será definido como `undefined`.\n *\n * Também existe a possibilidade de utilizar um _template_ para a exibição dos itens da lista,\n * veja mais em **[p-combo-option-template](/documentation/po-combo-option-template)**.\n *\n * > Obs: o template **[p-select-option-template](/documentation/po-select-option-template)** será depreciado na versão 14.x.x.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                    |\n * |----------------------------------------|-------------------------------------------------------|-------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                 |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                      |\n * | `--font-size`                          | Tamanho da fonte                                      | `var(--font-size-default)`                      |\n * | `--text-color-empty`                   | Cor do placeholder                                    | `var(--color-neutral-light-30)`                 |\n * | `--color`                              | Cor da borda                                          | `var(--color-neutral-dark-70)`                  |\n * | `--background`                         | Cor de background                                     | `var(--color-neutral-light-05)`                 |\n * | `--text-color`                         | Cor do texto                                          | `var(--color-neutral-dark-90)`                  |\n * | `--padding-horizontal`                 | Preenchimento horizontal                              | `0.5em`                                         |\n * | `--padding-vertical`                   | Preenchimento vertical                                | `0.7em`                                         |\n * | `--field-container-title-justify`      | Alinhamento horizontal do título (`justify-content`)  | `space-between`                                 |\n * | `--field-container-title-flex`         | Flex do título (`flex`)                               | `1 auto`                                        |\n * | **Hover**                              |                                                       |                                                 |\n * | `--color-hover`                        | Cor principal no estado hover                         | `var(--color-brand-01-dark)`                    |\n * | `--background-hover`                   | Cor de background no estado hover                     | `var(--color-brand-01-lighter)`                 |\n * | **Focused**                            |                                                       |                                                 |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                     | `var(--color-action-focus)`                     |\n * | `--color-focused`                      | Cor da borda no estado de focus                       | `var(--color-action-default)`                   |\n * | **Disabled**                           |                                                       |                                                 |\n * | `--color-disabled`                     | Cor principal no estado disabled                      | `var(--color-neutral-light-30)`                 |\n * | `--background-color-disabled`&nbsp;    | Cor de background no estado disabled                  | `var(--color-neutral-light-20)`                 |\n *\n */\n@Component({\n  selector: 'po-select',\n  templateUrl: './po-select.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoSelectComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => PoSelectComponent),\n      multi: true\n    }\n  ],\n  standalone: false\n})\nexport class PoSelectComponent extends PoFieldValidateModel<any> implements OnChanges {\n  private readonly el = inject(ElementRef);\n  renderer = inject(Renderer2);\n\n  @ViewChild('select', { read: ElementRef, static: true }) selectElement: ElementRef;\n  @ViewChild('helperEl', { read: PoHelperComponent, static: false }) helperEl?: PoHelperComponent;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao sair do campo.\n   */\n  @Output('p-blur') blur: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Função para atualizar o ngModel do componente, necessário quando não for utilizado dentro da tag form.\n   *\n   * Na versão 12.2.0 do Angular a verificação `strictTemplates` vem true como default. Portanto, para utilizar\n   * two-way binding no componente deve se utilizar da seguinte forma:\n   *\n   * ```\n   * <po-select ... [ngModel]=\"selectModel\" (ngModelChange)=\"selectModel = $event\"> </po-select>\n   * ```\n   */\n  @Output('ngModelChange') ngModelChange: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica que o campo será somente para leitura.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-readonly', transform: convertToBoolean }) readonly: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define se o título do campo será exibido de forma compacta.\n   *\n   * Quando habilitado (`true`), o modo compacto afeta o conjunto composto por:\n   * - `po-label`\n   * - `p-requirement (showRequired)`\n   * - `po-helper`\n   *\n   * Ou seja, todos os elementos relacionados ao título do campo\n   * (rótulo, indicador de obrigatoriedade e componente auxiliar) passam\n   * a seguir o comportamento de layout compacto.\n   *\n   * Também é possível definir esse comportamento de forma global,\n   * uma única vez, na folha de estilo geral da aplicação, por meio\n   * da customização dos tokens CSS:\n   *\n   * - `--field-container-title-justify`\n   * - `--field-container-title-flex`\n   *\n   * Exemplo:\n   *\n   * ```\n   * :root {\n   *   --field-container-title-justify: flex-start;\n   *   --field-container-title-flex: 0 1 auto;\n   * }\n   * ```\n   *\n   * Dessa forma, o layout compacto passa a ser o padrão da aplicação,\n   * sem a necessidade de definir a propriedade individualmente em cada campo.\n   *\n   * @default `false`\n   */\n  compactLabel = input<boolean, unknown>(false, { alias: 'p-compact-label', transform: convertToBoolean });\n\n  /** Mensagem que aparecerá enquanto nenhuma opção estiver selecionada. */\n  @Input('p-placeholder') placeholder?: string;\n\n  displayValue;\n  id = `po-select[${uuid()}]`;\n  modelValue: any;\n  selectedValue: any;\n  optionsDefault = [];\n  listGroupOptions = [];\n  optionWithoutGroup = [];\n  isSafari: boolean = isSafari();\n\n  protected onModelTouched: any;\n\n  private _fieldLabel?: string = PO_SELECT_FIELD_LABEL_DEFAULT;\n  private _fieldValue?: string = PO_SELECT_FIELD_VALUE_DEFAULT;\n  private _loading: boolean = false;\n  private _options: Array<PoSelectOption> | Array<PoSelectOptionGroup> | Array<any>;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n\n  /**\n   * Nesta propriedade deve ser definido uma coleção de objetos que implementam a interface `PoSelectOption`,\n   * ou uma coleção de objetos dentro de grupos diferentes, que seriam da interface `PoSelectOptionGroup`.\n   *\n   * Caso esta lista estiver vazia, o model será `undefined`.\n   *\n   * > Essa propriedade é imutável, ou seja, sempre que quiser atualizar a lista de opções disponíveis\n   * atualize a referência do objeto:\n   *\n   * ```\n   * // atualiza a referência do objeto garantindo a atualização do template\n   * this.options = [...this.options, { value: 'x', label: 'Nova opção' }];\n   *\n   * // evite, pois não atualiza a referência do objeto podendo gerar atrasos na atualização do template\n   * this.options.push({ value: 'x', label: 'Nova opção' });\n   * ```\n   *\n   * > Para coleção de objetos dentro de grupos distintos será exibido a label e opções somente se a propriedade `options` possua valores.\n   *  Sendo assim, a estrutura seguiria dessa forma:\n   *\n   * ```\n   * this.options = [{\n   *  label: 'Opções',\n   *  options: [\n   *    { value: 1, label: 'opção 1' },\n   *    { value: 2, label: 'opção 2' }\n   *  ],\n   * }];\n   * ```\n   *\n   * É possível a utilização de opções agrupadas e desagrupadas em conjunto, porém será feita a ordenação de exibir as opções\n   * desagrupadas acima.\n   *\n   */\n  @Input('p-options') set options(options: Array<PoSelectOption | PoSelectOptionGroup | any>) {\n    this.listGroupOptions = [];\n    this.optionWithoutGroup = [];\n\n    if (this.fieldLabel && this.fieldValue && options) {\n      options.map(option => {\n        if (this.isItemGroup(option)) {\n          option.options.map(opt => {\n            opt.label = opt[this.fieldLabel];\n            opt.value = opt[this.fieldValue];\n          });\n        } else {\n          option.label = option[this.fieldLabel];\n          option.value = option[this.fieldValue];\n        }\n      });\n    }\n\n    if (options) {\n      this.optionsDefault = [...options];\n      this.separateOptions();\n\n      this.optionsDefault = [];\n      this.optionsDefault = [...this.optionWithoutGroup, ...this.transformInArray(this.listGroupOptions)];\n      this.onUpdateOptions();\n      this._options = [...this.optionsDefault];\n    }\n  }\n\n  get options() {\n    return this._options;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Deve ser informado o nome da propriedade do objeto que será utilizado para a conversão dos itens apresentados na lista do componente\n   * (`p-options`), esta propriedade será responsável pelo texto de apresentação de cada item da lista.\n   *\n   * @default `label`\n   */\n  @Input('p-field-label') set fieldLabel(value: string) {\n    this._fieldLabel = value || PO_SELECT_FIELD_LABEL_DEFAULT;\n    if (this.options && this.options.length > 0) {\n      this.options = [...this.options];\n    }\n  }\n\n  get fieldLabel() {\n    return this._fieldLabel;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Deve ser informado o nome da propriedade do objeto que será utilizado para a conversão dos itens apresentados na lista do componente\n   * (`p-options`), esta propriedade será responsável pelo valor de cada item da lista.\n   *\n   * @default `value`\n   */\n  @Input('p-field-value') set fieldValue(value: string) {\n    this._fieldValue = value || PO_SELECT_FIELD_VALUE_DEFAULT;\n    if (this.options && this.options.length > 0) {\n      this.options = [...this.options];\n    }\n  }\n\n  /**\n   * @docsPrivate\n   *\n   * Determinar se o valor do compo deve retorna objeto do tipo {value: any, label: any}\n   */\n  @Input({ alias: 'p-control-value-with-label', transform: convertToBoolean }) controlValueWithLabel?: boolean = false;\n\n  get fieldValue() {\n    return this._fieldValue;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de carregamento no lado direito do campo para sinalizar que uma operação está em andamento.\n   *\n   * @default `false`\n   */\n  @HostBinding('attr.p-loading')\n  @Input('p-loading')\n  set loading(value: boolean) {\n    this._loading = convertToBoolean(value);\n    this.changeDetector?.markForCheck();\n  }\n\n  get loading(): boolean {\n    return this._loading;\n  }\n\n  get isDisabled(): boolean {\n    return this.disabled || this.loading;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura do input como 32px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura do input como 44px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as opções do componente de ajuda (po-helper) que será exibido ao lado do label quando a propriedade `p-label` for definida, ou, ao lado do componente na ausência da propriedade `p-label`.\n   * > Para mais informações acesse: https://po-ui.io/documentation/po-helper.\n   *\n   * > Ao configurar esta propriedade, o antigo ícone de ajuda adicional (`p-additional-help-tooltip` e `p-additional-help`) será ignorado.\n   */\n  poHelperComponent = input<PoHelperOptions | string>(undefined, { alias: 'p-helper' });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a quebra automática do texto da propriedade `p-label`. Quando `p-label-text-wrap` for verdadeiro, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * @default `false`\n   */\n  labelTextWrap = input<boolean>(false, { alias: 'p-label-text-wrap' });\n\n  /* istanbul ignore next */\n  constructor() {\n    const changeDetector = inject(ChangeDetectorRef);\n\n    super(changeDetector);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n\n    if (changes.options?.currentValue) {\n      this.options = changes.options.currentValue;\n    }\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  /**\n   * Função que atribui foco ao componente.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoSelectComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoSelectComponent, { static: true }) select: PoSelectComponent;\n   *\n   * focusSelect() {\n   *   this.select.focus();\n   * }\n   * ```\n   */\n  focus(): void {\n    if (!this.disabled) {\n      this.selectElement.nativeElement.focus();\n    }\n  }\n\n  getErrorPattern() {\n    return this.fieldErrorMessage && this.hasInvalidClass() ? this.fieldErrorMessage : '';\n  }\n\n  hasInvalidClass() {\n    return (\n      this.el.nativeElement.classList.contains('ng-invalid') && this.el.nativeElement.classList.contains('ng-dirty')\n    );\n  }\n\n  //Transforma o tamanho do input para o tamanho do ícone de loading correspondente\n  mapSizeToIcon(size: string): string {\n    return mapInputSizeToLoadingIcon(size);\n  }\n\n  onBlur(event: any) {\n    this.onModelTouched?.();\n\n    if (event.type === 'blur') {\n      this.blur.emit();\n    }\n  }\n\n  // Altera o valor ao selecionar um item.\n  onSelectChange(value: any) {\n    this.onModelTouched?.();\n    if (value && this.options && this.options.length) {\n      const optionFound: any = this.findOptionValue(value);\n\n      if (optionFound) {\n        this.updateValues(optionFound);\n      }\n    }\n  }\n\n  onUpdateOptions() {\n    if (this.modelValue) {\n      this.onSelectChange(this.modelValue);\n    }\n  }\n\n  // Atualiza valores\n  updateValues(option: any): void {\n    if (this.selectedValue !== option[this.fieldValue]) {\n      this.selectedValue = option[this.fieldValue];\n      this.selectElement.nativeElement.value = option[this.fieldValue];\n      this.updateModel(this.getValueUpdate(option));\n      this.displayValue = option[this.fieldLabel];\n      this.emitChange(option[this.fieldValue]);\n    }\n  }\n\n  // Recebe as alterações do model\n  onWriteValue(value: any) {\n    value = this.getValueWrite(value);\n    const optionFound: any = this.findOptionValue(value);\n\n    if (optionFound) {\n      this.selectElement.nativeElement.value = optionFound.value;\n      this.selectedValue = optionFound[this.fieldValue];\n      this.displayValue = optionFound[this.fieldLabel];\n    } else if (validValue(this.selectedValue)) {\n      this.selectElement.nativeElement.value = undefined;\n      this.updateModel(undefined);\n      this.selectedValue = undefined;\n      this.displayValue = undefined;\n    }\n\n    this.modelValue = value;\n    this.changeDetector.detectChanges();\n  }\n\n  extraValidation(c: AbstractControl): { [key: string]: any } {\n    return null;\n  }\n\n  isItemGroup(item: PoSelectOption | PoSelectOptionGroup | any): boolean {\n    if (item.options) {\n      return Array.isArray(item.options) ? true : false;\n    }\n    return false;\n  }\n\n  onKeyDown(event: KeyboardEvent): void {\n    const isFieldFocused = document.activeElement === this.selectElement.nativeElement;\n\n    if (isFieldFocused) {\n      this.keydown.emit(event);\n    }\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onModelTouched = fn;\n  }\n\n  /**\n   * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n   * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `p-keydown`.\n   *\n   * > Exibe ou oculta o conteúdo do componente `po-helper` quando o componente estiver com foco.\n   *\n   * ```\n   * //Exemplo com p-label e p-helper\n   * <po-select\n   *  #select\n   *  ...\n   *  p-label=\"Label do select\"\n   *  [p-helper]=\"helperOptions\"\n   *  (p-keydown)=\"onKeyDown($event, select)\"\n   * ></po-select>\n   * ```\n   * ```typescript\n   * onKeyDown(event: KeyboardEvent, inp: PoSelectComponent): void {\n   *  if (event.code === 'F9') {\n   *    inp.showAdditionalHelp();\n   *  }\n   * }\n   * ```\n   */\n  override showAdditionalHelp(): boolean {\n    return super.showAdditionalHelp(this.helperEl, this.poHelperComponent());\n  }\n\n  setHelper(label?: string, additionalHelpTooltip?: string) {\n    return setHelperSettings(\n      label,\n      additionalHelpTooltip,\n      this.poHelperComponent(),\n      this.size,\n      this.isAdditionalHelpEventTriggered() ? this.additionalHelp : undefined\n    );\n  }\n\n  private isEqual(value: any, inputValue: any): boolean {\n    if ((value || value === 0) && inputValue) {\n      return value.toString() === inputValue.toString();\n    }\n\n    if ((value === null && inputValue !== null) || (value === undefined && inputValue !== undefined)) {\n      value = `${value}`; // Transformando em string\n    }\n\n    return value === inputValue;\n  }\n\n  private findOptionValue(value: any) {\n    if (this.options) {\n      return this.options.find(option => this.isEqual(option.value, value));\n    }\n  }\n\n  private getValueUpdate(option: any) {\n    if (this.controlValueWithLabel) {\n      return {\n        value: option[this.fieldValue],\n        label: option[this.fieldLabel]\n      };\n    }\n\n    return option[this.fieldValue];\n  }\n\n  private getValueWrite(data: any) {\n    if (!this.controlValueWithLabel || data == null) {\n      return data;\n    }\n\n    if (data?.value !== undefined) {\n      return data.value;\n    }\n\n    return data;\n  }\n\n  private transformInArray(objectWithArray: Array<any>): Array<PoSelectOptionGroup | any> {\n    return objectWithArray.reduce((options, items) => {\n      if (items.options) {\n        return options.concat(items.options);\n      }\n      return [];\n    }, []);\n  }\n\n  private separateOptions() {\n    this.optionsDefault.forEach(option => {\n      if (this.isItemGroup(option)) {\n        this.validateOptions(option.options);\n        this.listGroupOptions.push(option);\n      } else {\n        this.optionWithoutGroup.push(option);\n      }\n    });\n\n    if (this.optionWithoutGroup.length > 0) {\n      this.validateOptions(this.optionWithoutGroup);\n    }\n  }\n\n  private validateOptions(options: Array<any>) {\n    PoUtils.removeDuplicatedOptions(options);\n    PoUtils.removeUndefinedAndNullOptions(options);\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n<po-field-container\n  [p-disabled]=\"isDisabled\"\n  [p-id]=\"id\"\n  [p-label]=\"label\"\n  [p-optional]=\"optional\"\n  [p-required]=\"required\"\n  [p-show-required]=\"showRequired\"\n  [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n  [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n  [p-size]=\"size\"\n  [p-text-wrap]=\"labelTextWrap()\"\n  [p-compact-label]=\"compactLabel()\"\n>\n  <div class=\"po-field-container-content\">\n    <div class=\"po-field-container-content-helper-wrapper\">\n      <div class=\"po-field-container-input\">\n        <select\n          #select\n          class=\"po-select po-select-phosphor\"\n          [class.po-select-loading]=\"loading\"\n          [class.po-select-placeholder]=\"!selectedValue?.toString() && !!placeholder\"\n          [attr.data-focused-element]=\"!isDisabled\"\n          [attr.data-inactive-component]=\"disabled || readonly || loading\"\n          [attr.name]=\"name\"\n          [disabled]=\"isDisabled\"\n          [id]=\"id\"\n          [required]=\"required\"\n          (blur)=\"onBlur($event)\"\n          (change)=\"onSelectChange($event.target.value)\"\n          (keydown)=\"onKeyDown($event)\"\n        >\n          @if (!isSafari) {\n            @if (!selectedValue?.toString() || !!placeholder) {\n              <option\n                [disabled]=\"!!placeholder\"\n                [hidden]=\"!selectedValue?.toString() && !placeholder\"\n                [selected]=\"!selectedValue?.toString()\"\n                [value]=\"placeholder ?? ''\"\n              >\n                {{ placeholder }}\n              </option>\n            }\n            <option [hidden]=\"true\">{{ displayValue }}</option>\n          }\n\n          @if (isSafari) {\n            <option>{{ displayValue || placeholder }}</option>\n          }\n\n          @if (optionWithoutGroup.length > 0) {\n            @for (item of optionWithoutGroup; track item) {\n              <option [disabled]=\"readonly\" [value]=\"item?.[this.fieldValue]\">\n                {{ item?.[this.fieldLabel] }}\n              </option>\n            }\n          }\n          @if (listGroupOptions.length > 0) {\n            @for (item of listGroupOptions; track item) {\n              @if (item?.options.length > 0) {\n                <optgroup label=\"{{ item?.label }}\" [disabled]=\"readonly\">\n                  @for (subItem of item.options; track subItem) {\n                    <option [value]=\"subItem?.[this.fieldValue]\" [disabled]=\"readonly\">\n                      {{ subItem?.[this.fieldLabel] }}\n                    </option>\n                  }\n                </optgroup>\n              }\n            }\n          }\n        </select>\n\n        @if (loading) {\n          <div class=\"po-field-icon-container-right\">\n            <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n          </div>\n        }\n      </div>\n\n      @if ((!this.label && poHelperComponent()) || (!this.label && poHelper.hideAdditionalHelp)) {\n        <po-helper\n          #helperEl\n          class=\"po-field-helper-button\"\n          [p-size]=\"size\"\n          [p-helper]=\"poHelper.helperSettings\"\n          [p-disabled]=\"isDisabled\"\n          [p-append-in-body]=\"appendBox\"\n        >\n        </po-helper>\n      }\n    </div>\n  </div>\n\n  @if (!readonly) {\n    <po-field-container-bottom\n      [p-append-in-body]=\"appendBox\"\n      [p-help]=\"help\"\n      [p-disabled]=\"isDisabled\"\n      [p-error-pattern]=\"getErrorPattern()\"\n      [p-error-limit]=\"errorLimit\"\n      [p-size]=\"size\"\n    ></po-field-container-bottom>\n  }\n</po-field-container>\n","import {\n  ChangeDetectorRef,\n  Directive,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  input,\n  Input,\n  Output\n} from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, Validator, Validators } from '@angular/forms';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport {\n  convertToBoolean,\n  convertToInt,\n  getDefaultSizeFn,\n  mapInputSizeToLoadingIcon,\n  validateSizeFn\n} from '../../../utils/util';\nimport { PoValidators } from '../validators';\nimport { PoHelperOptions } from '../../po-helper';\n\n/**\n * @description\n *\n * Este é um componente de entrada de dados que possibilita o preechimento com múltiplas linhas.\n * É recomendado para observações, detalhamentos e outras situações onde o usuário deva preencher com um texto.\n *\n * Importante:\n *\n * - A propriedade `name` é obrigatória para que o formulário e o `model` funcionem corretamente. Do contrário, ocorrerá um erro de\n * _Angular_, onde será necessário informar o atributo `name` ou o atributo `[ngModelOptions]=\"{standalone: true}\"`, por exemplo:\n *\n * ```\n * <po-textarea\n *   [(ngModel)]=\"pessoa.nome\"\n *   [ngModelOptions]=\"{standalone: true}\">\n * </po-textarea>\n * ```\n *\n * #### Acessibilidade tratada no componente\n * Algumas diretrizes de acessibilidade já são tratadas no componente, internamente, e não podem ser alteradas. São elas:\n *\n * - O Text area foi desenvolvido com uso de controles padrões HTML, o que permite a identificação do mesmo na interface por tecnologias\n * assistivas. [WCAG 4.1.2: Name, Role, Value](https://www.w3.org/WAI/WCAG21/Understanding/name-role-value)\n * - O foco é visível e possui uma espessura superior a 2 pixels CSS, não ficando escondido por outros\n * elementos da tela. [WCAG 2.4.12: Focus Appearance)](https://www.w3.org/WAI/WCAG22/Understanding/focus-appearance-enhanced)\n * - A identificação do erro acontece também através da mudança de cor do campo, mas também de um ícone\n * junto da mensagem. [WGAG 1.4.1: Use of Color, 3.2.4: Consistent Identification](https://www.w3.org/WAI/WCAG21/Understanding/use-of-color)\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                    |\n * |----------------------------------------|-------------------------------------------------------|-------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                 |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                      |\n * | `--font-size`                          | Tamanho da fonte                                      | `var(--font-size-default)`                      |\n * | `--text-color-placeholder`             | Cor do texto placeholder                              | `var(--color-neutral-light-30)`                 |\n * | `--color`                              | Cor pincipal do campo                                 | `var(--color-neutral-dark-70)`                  |\n * | `--background`                         | Cor de background                                     | `var(--color-neutral-light-05)`                 |\n * | `--field-container-title-justify`      | Alinhamento horizontal do título (`justify-content`)  | `space-between`                                 |\n * | `--field-container-title-flex`         | Flex do título (`flex`)                               | `1 auto`                                        |\n *\n */\n@Directive()\nexport abstract class PoTextareaBaseComponent implements ControlValueAccessor, Validator {\n  // Propriedade interna que define se o ícone de ajuda adicional terá cursor clicável (evento) ou padrão (tooltip).\n  @Input() additionalHelpEventTrigger: string | undefined;\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de ajuda adicional, com o texto desta propriedade sendo passado para o popover do componente `po-helper`.\n   * **Como boa prática, indica-se utilizar um texto com até 140 caracteres.**\n   * > Requer um recuo mínimo de 8px se o componente estiver próximo à lateral da tela.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Input('p-additional-help-tooltip') additionalHelpTooltip?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o popover (`p-helper` e/ou `p-error-limit`) será incluído no body da página e não\n   * dentro do componente. Essa opção pode ser necessária em cenários com containers que possuem scroll ou overflow\n   * escondido, garantindo o posicionamento correto do tooltip próximo ao elemento.\n   *\n   * > Quando utilizado com `p-helper`, leitores de tela como o NVDA podem não ler o conteúdo do popover.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendBox?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Aplica foco no elemento ao ser iniciado.\n   *\n   * > Caso mais de um elemento seja configurado com essa propriedade, apenas o último elemento declarado com ela terá o foco.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-auto-focus', transform: convertToBoolean }) autoFocus: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define se o título do campo será exibido de forma compacta.\n   *\n   * Quando habilitado (`true`), o modo compacto afeta o conjunto composto por:\n   * - `po-label`\n   * - `p-requirement (showRequired)`\n   * - `po-helper`\n   *\n   * Ou seja, todos os elementos relacionados ao título do campo\n   * (rótulo, indicador de obrigatoriedade e componente auxiliar) passam\n   * a seguir o comportamento de layout compacto.\n   *\n   * Também é possível definir esse comportamento de forma global,\n   * uma única vez, na folha de estilo geral da aplicação, por meio\n   * da customização dos tokens CSS:\n   *\n   * - `--field-container-title-justify`\n   * - `--field-container-title-flex`\n   *\n   * Exemplo:\n   *\n   * ```\n   * :root {\n   *   --field-container-title-justify: flex-start;\n   *   --field-container-title-flex: 0 1 auto;\n   * }\n   * ```\n   *\n   * Dessa forma, o layout compacto passa a ser o padrão da aplicação,\n   * sem a necessidade de definir a propriedade individualmente em cada campo.\n   *\n   * @default `false`\n   */\n  compactLabel = input<boolean, unknown>(false, { alias: 'p-compact-label', transform: convertToBoolean });\n\n  /** Label do campo. */\n  @Input('p-label') label?: string;\n\n  /** Texto de apoio do campo. */\n  @Input('p-help') help?: string;\n\n  /** Nome e Id do componente. */\n  @Input('name') name: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se a indicação de campo opcional será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - O campo conter `p-required`;\n   * - Não possuir `p-help` e/ou `p-label`.\n   *\n   * @default `false`\n   */\n  @Input('p-optional') optional: boolean;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Exibe a mensagem setada se o campo estiver vazio e for requerido.\n   *\n   * > Necessário que a propriedade `p-required` esteja habilitada.\n   *\n   */\n  @Input('p-field-error-message') fieldErrorMessage: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Limita a exibição da mensagem de erro a duas linhas e exibe um tooltip com o texto completo.\n   *\n   * > Caso essa propriedade seja definida como `true`, a mensagem de erro será limitada a duas linhas\n   * e um tooltip será exibido ao passar o mouse sobre a mensagem para mostrar o conteúdo completo.\n   *\n   * @default `false`\n   */\n  @Input('p-error-limit') errorLimit: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define as opções do componente de ajuda (po-helper) que será exibido ao lado do label quando a propriedade `p-label` for definida, ou, ao lado do componente na ausência da propriedade `p-label`.\n   * > Para mais informações acesse: https://po-ui.io/documentation/po-helper.\n   *\n   * > Ao configurar esta propriedade, o antigo ícone de ajuda adicional (`p-additional-help-tooltip` e `p-additional-help`) será ignorado.\n   */\n  poHelperComponent = input<PoHelperOptions | string>(undefined, { alias: 'p-helper' });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a quebra automática do texto da propriedade `p-label`. Quando `p-label-text-wrap` for verdadeiro, o texto que excede\n   * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n   * leitura clara.\n   *\n   * @default `false`\n   */\n  labelTextWrap = input<boolean>(false, { alias: 'p-label-text-wrap' });\n\n  /**\n   *\n   * @deprecated v23.x.x use `p-helper`\n   *\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar no ícone de ajuda adicional.\n   *\n   * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade.\n   */\n  @Output('p-additional-help') additionalHelp = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao sair do campo.\n   */\n  @Output('p-blur') blur: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao entrar do campo.\n   */\n  @Output('p-enter') enter: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao alterar valor e deixar o campo.\n   */\n  @Output('p-change') change: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao alterar valor do model.\n   */\n  @Output('p-change-model') changeModel: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado quando uma tecla é pressionada enquanto o foco está no componente.\n   * Retorna um objeto `KeyboardEvent` com informações sobre a tecla.\n   */\n  @Output('p-keydown') keydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n  displayAdditionalHelp: boolean = false;\n\n  private _disabled: boolean = false;\n  private _loading: boolean = false;\n  private _maxlength: number;\n  private _minlength: number;\n  private _placeholder: string = '';\n  private _readonly: boolean = false;\n  private _required: boolean = false;\n  private _rows: number = 3;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n\n  private modelLastUpdate: any;\n  private onChangePropagate: any = null;\n  private validatorChange: any;\n  // eslint-disable-next-line\n  protected onTouched: any = null;\n  protected hasValidatorRequired = false;\n\n  /** Placeholder, mensagem que aparecerá enquanto o campo não estiver preenchido. */\n  @Input('p-placeholder') set placeholder(value: string) {\n    this._placeholder = value || '';\n  }\n\n  get placeholder() {\n    return this._placeholder;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica que o campo será desabilitado.\n   *\n   * @default `false`\n   */\n  @Input('p-disabled') set disabled(disabled: boolean) {\n    this._disabled = convertToBoolean(disabled);\n  }\n\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Exibe um ícone de carregamento no lado direito do campo para sinalizar que uma operação está em andamento.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-loading', transform: convertToBoolean })\n  set loading(value: boolean) {\n    this._loading = value;\n    this.cd?.markForCheck();\n  }\n\n  get loading(): boolean {\n    return this._loading;\n  }\n\n  get isDisabled(): boolean {\n    return this.disabled || this.loading;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica que o campo será somente leitura.\n   *\n   * @default `false`\n   */\n  @Input('p-readonly') set readonly(readonly: boolean) {\n    this._readonly = convertToBoolean(readonly);\n  }\n\n  get readonly(): boolean {\n    return this._readonly;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define que o campo será obrigatório.\n   * > Esta propriedade é desconsiderada quando o input está desabilitado `(p-disabled)`.\n   *\n   * @default `false`\n   */\n  @Input('p-required') set required(required: boolean) {\n    this._required = convertToBoolean(required);\n\n    this.validateModel();\n  }\n\n  get required(): boolean {\n    return this._required;\n  }\n\n  /**\n   * Define se a indicação de campo obrigatório será exibida.\n   *\n   * > Não será exibida a indicação se:\n   * - Não possuir `p-help` e/ou `p-label`.\n   */\n  @Input('p-show-required') showRequired: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica a quantidade mínima de caracteres que o campo aceita.\n   */\n  @Input('p-minlength') set minlength(minlength: number) {\n    this._minlength = convertToInt(minlength);\n    this.validateModel();\n  }\n\n  get minlength(): number {\n    return this._minlength;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica a quantidade máxima de caracteres que o campo aceita.\n   */\n  @Input('p-maxlength') set maxlength(maxlength: number) {\n    this._maxlength = convertToInt(maxlength);\n    this.validateModel();\n  }\n\n  get maxlength(): number {\n    return this._maxlength;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica a quantidade de linhas que serão exibidas.\n   *\n   * @default `3`\n   */\n  @Input('p-rows') set rows(value: number) {\n    this._rows = isNaN(parseInt(<any>value, 10)) || value < 3 ? 3 : parseInt(<any>value, 10);\n  }\n  get rows(): number {\n    return this._rows;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small` (disponível apenas para acessibilidade AA)\n   * - `medium`\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  constructor(public cd: ChangeDetectorRef) {}\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n    this.onAfterThemeChange();\n  }\n\n  protected onAfterThemeChange(): void {}\n\n  callOnChange(value: any) {\n    // Quando o input não possui um formulário, então esta função não é registrada\n    if (this.onChangePropagate) {\n      this.onChangePropagate(value);\n    }\n\n    this.controlChangeModelEmitter(value);\n  }\n\n  controlChangeModelEmitter(value: any) {\n    if (this.modelLastUpdate !== value) {\n      this.changeModel.emit(value);\n      this.modelLastUpdate = value;\n    }\n  }\n\n  // Função implementada do ControlValueAccessor\n  // Usada para interceptar os estados de habilitado via forms api\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n    this.cd.markForCheck();\n  }\n\n  // Funções `registerOnChange`, `registerOnTouched` e `registerOnValidatorChange` implementadas referentes ao ControlValueAccessor\n  // usadas para interceptar as mudanças e não atualizar automaticamente o Model\n  registerOnChange(func: any): void {\n    this.onChangePropagate = func;\n  }\n\n  registerOnTouched(func: any): void {\n    this.onTouched = func;\n  }\n\n  registerOnValidatorChange(func: any): void {\n    this.validatorChange = func;\n  }\n\n  validate(abstractControl: AbstractControl): { [key: string]: any } {\n    if (!this.hasValidatorRequired && this.fieldErrorMessage && abstractControl.hasValidator(Validators.required)) {\n      this.hasValidatorRequired = true;\n    }\n\n    if (PoValidators.requiredFailed(this.required, this.disabled, abstractControl.value)) {\n      return {\n        required: {\n          valid: false\n        }\n      };\n    }\n\n    if (PoValidators.minlengpoailed(this.minlength, abstractControl.value)) {\n      return {\n        minlength: {\n          valid: false\n        }\n      };\n    }\n\n    if (PoValidators.maxlengpoailed(this.maxlength, abstractControl.value)) {\n      return {\n        maxlength: {\n          valid: false\n        }\n      };\n    }\n  }\n\n  // Função implementada do ControlValueAccessor\n  writeValue(value: any) {\n    this.writeValueModel(value);\n    this.cd.markForCheck();\n  }\n\n  //Transforma o tamanho do input para o tamanho do ícone de loading correspondente\n  protected mapSizeToIcon(size: string): string {\n    return mapInputSizeToLoadingIcon(size);\n  }\n\n  protected validateModel() {\n    if (this.validatorChange) {\n      this.validatorChange();\n    }\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n\n  abstract writeValueModel(value: any): void;\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  forwardRef,\n  ViewChild,\n  inject,\n  OnChanges,\n  OnDestroy,\n  SimpleChanges\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { setHelperSettings, uuid } from '../../../utils/util';\n\nimport { PoTextareaBaseComponent } from './po-textarea-base.component';\nimport { PoHelperComponent } from '../../po-helper';\n\n/**\n * @docsExtends PoTextareaBaseComponent\n *\n * @example\n *\n * <example name=\"po-textarea-basic\" title=\"PO Textarea Basic\" >\n *  <file name=\"sample-po-textarea-basic/sample-po-textarea-basic.component.html\"> </file>\n *  <file name=\"sample-po-textarea-basic/sample-po-textarea-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-textarea-labs\" title=\"PO Textarea Labs\" >\n *  <file name=\"sample-po-textarea-labs/sample-po-textarea-labs.component.html\"> </file>\n *  <file name=\"sample-po-textarea-labs/sample-po-textarea-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-textarea-email\" title=\"PO Textarea - Email\" >\n *  <file name=\"sample-po-textarea-email/sample-po-textarea-email.component.html\"> </file>\n *  <file name=\"sample-po-textarea-email/sample-po-textarea-email.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-textarea-email-reactive-form\" title=\"PO Textarea - Email Reactive Form\" >\n *  <file name=\"sample-po-textarea-email-reactive-form/sample-po-textarea-email-reactive-form.component.html\"> </file>\n *  <file name=\"sample-po-textarea-email-reactive-form/sample-po-textarea-email-reactive-form.component.ts\"> </file>\n * </example>\n *\n */\n@Component({\n  selector: 'po-textarea',\n  templateUrl: './po-textarea.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PoTextareaComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => PoTextareaComponent),\n      multi: true\n    }\n  ],\n  standalone: false\n})\nexport class PoTextareaComponent extends PoTextareaBaseComponent implements AfterViewInit, OnChanges, OnDestroy {\n  private readonly el = inject(ElementRef);\n\n  @ViewChild('inp', { read: ElementRef, static: true }) inputEl: ElementRef;\n  @ViewChild('textareaBody', { read: ElementRef, static: true }) textareaBodyEl: ElementRef;\n  @ViewChild('helperEl', { read: PoHelperComponent, static: false }) helperEl?: PoHelperComponent;\n\n  id = `po-textarea[${uuid()}]`;\n  valueBeforeChange: any;\n  fireChange: boolean = false;\n  hasScroll: boolean = false;\n  hasValue: boolean = false;\n  private resizeObserver: ResizeObserver;\n\n  constructor() {\n    const cd = inject(ChangeDetectorRef);\n\n    super(cd);\n  }\n\n  emitAdditionalHelp() {\n    if (this.label && this.isAdditionalHelpEventTriggered()) {\n      this.additionalHelp.emit();\n    }\n  }\n\n  /**\n   * Função que atribui foco ao componente.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoTextareaComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild(PoTextareaComponent, { static: true }) textarea: PoTextareaComponent;\n   *\n   * focusTextarea() {\n   *   this.textarea.focus();\n   * }\n   * ```\n   */\n  focus(): void {\n    if (!this.disabled) {\n      this.inputEl.nativeElement.focus();\n    }\n  }\n\n  ngAfterViewInit() {\n    if (this.autoFocus) {\n      this.focus();\n    }\n\n    this.initResizeObserver();\n    window.addEventListener('resize', this.onWindowResize);\n  }\n\n  protected override onAfterThemeChange(): void {\n    requestAnimationFrame(() => {\n      this.syncContainerWidth();\n      this.checkScrollState();\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.label) {\n      this.displayAdditionalHelp = false;\n    }\n\n    if (changes.loading) {\n      requestAnimationFrame(() => {\n        this.syncContainerWidth();\n        this.checkScrollState();\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    this.resizeObserver?.disconnect();\n    window.removeEventListener('resize', this.onWindowResize);\n  }\n\n  getAdditionalHelpTooltip() {\n    return this.isAdditionalHelpEventTriggered() ? null : this.additionalHelpTooltip;\n  }\n\n  getErrorPattern() {\n    return this.fieldErrorMessage && this.hasInvalidClass() ? this.fieldErrorMessage : '';\n  }\n\n  hasInvalidClass() {\n    return (\n      this.el.nativeElement.classList.contains('ng-invalid') &&\n      this.el.nativeElement.classList.contains('ng-dirty') &&\n      !this.inputEl.nativeElement.value &&\n      (this.required || this.hasValidatorRequired)\n    );\n  }\n\n  writeValueModel(value: any): void {\n    if (this.inputEl) {\n      if (!value) {\n        // Se for o valor for undefined, deve limpar o campo\n        this.inputEl.nativeElement.value = '';\n      } else {\n        this.inputEl.nativeElement.value = value;\n      }\n\n      this.hasValue = !!value;\n      this.checkScrollState();\n    }\n\n    // Emite evento quando o model é atualizado, inclusive a primeira vez\n    if (value) {\n      this.change.emit(value);\n    }\n  }\n\n  validMaxLength(maxlength: number, value: string) {\n    return maxlength && value.length > maxlength ? value.toString().substring(0, maxlength) : value;\n  }\n\n  eventOnInput(event: any) {\n    const value = this.validMaxLength(this.maxlength, event.target.value);\n    this.callOnChange(value);\n    this.inputEl.nativeElement.value = value;\n\n    this.hasValue = !!value;\n    this.checkScrollState();\n  }\n\n  eventOnFocus() {\n    // Atualiza valor da variável que será usada para verificar se o campo teve alteração\n    this.valueBeforeChange = this.inputEl.nativeElement.value;\n\n    // Dispara evento quando o usuário entrar no campo\n    // Este evento também é disparado quando o campo inicia com foco.\n    this.enter.emit();\n  }\n\n  eventOnBlur() {\n    this.onTouched?.();\n    this.blur.emit();\n    this.controlChangeEmitter();\n  }\n\n  controlChangeEmitter() {\n    const elementValue = this.inputEl.nativeElement.value;\n\n    if (elementValue !== this.valueBeforeChange) {\n      this.change.emit(elementValue);\n    }\n  }\n\n  onKeyDown(event: KeyboardEvent): void {\n    const isFieldFocused = document.activeElement === this.inputEl.nativeElement;\n\n    if (isFieldFocused) {\n      this.keydown.emit(event);\n    }\n  }\n\n  /**\n   * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n   * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `p-keydown`.\n   *\n   * > Exibe ou oculta o conteúdo do componente `po-helper` quando o componente estiver com foco.\n   *\n   * ```\n   * //Exemplo com p-label e p-helper\n   * <po-textarea\n   *  #textarea\n   *  ...\n   *  p-label=\"Label do textarea\"\n   *  [p-helper]=\"helperOptions\"\n   *  (p-keydown)=\"onKeyDown($event, textarea)\"\n   * ></po-textarea>\n   * ```\n   * ```\n   * ...\n   * onKeyDown(event: KeyboardEvent, inp: PoTextareaComponent): void {\n   *  if (event.code === 'F9') {\n   *    inp.showAdditionalHelp();\n   *  }\n   * }\n   * ```\n   */\n  showAdditionalHelp(): boolean {\n    this.displayAdditionalHelp = !this.displayAdditionalHelp;\n    const helper = this.poHelperComponent();\n    const isHelpEvt = this.isAdditionalHelpEventTriggered();\n    if (!this.label && (helper || this.additionalHelpTooltip || isHelpEvt)) {\n      if (isHelpEvt) {\n        this.additionalHelp.emit();\n      }\n      if (typeof helper !== 'string' && typeof helper?.eventOnClick === 'function') {\n        helper.eventOnClick();\n        return;\n      }\n      if (this.helperEl?.helperIsVisible()) {\n        this.helperEl?.closeHelperPopover();\n        return;\n      }\n      this.helperEl?.openHelperPopover();\n      return;\n    }\n    return this.displayAdditionalHelp;\n  }\n\n  private isAdditionalHelpEventTriggered(): boolean {\n    return (\n      this.additionalHelpEventTrigger === 'event' ||\n      (this.additionalHelpEventTrigger === undefined && this.additionalHelp.observed)\n    );\n  }\n\n  setHelper(label?: string, additionalHelpTooltip?: string) {\n    return setHelperSettings(\n      label,\n      additionalHelpTooltip,\n      this.poHelperComponent(),\n      this.size,\n      this.isAdditionalHelpEventTriggered() ? this.additionalHelp : undefined\n    );\n  }\n\n  private readonly onWindowResize = () => {\n    this.syncContainerWidth();\n    this.checkScrollState();\n  };\n\n  private checkScrollState(): void {\n    const el = this.inputEl?.nativeElement;\n    if (!el) return;\n\n    this.hasScroll = el.scrollHeight > el.clientHeight;\n    this.cd.markForCheck();\n  }\n\n  private syncContainerWidth(): void {\n    const el = this.inputEl?.nativeElement;\n    const body = this.textareaBodyEl?.nativeElement;\n    if (!el || !body) return;\n\n    body.style.width = this.loading && el.style.width ? 'fit-content' : '';\n  }\n\n  private initResizeObserver(): void {\n    const el = this.inputEl?.nativeElement;\n    const body = this.textareaBodyEl?.nativeElement;\n\n    if (!el || !body || typeof ResizeObserver === 'undefined') return;\n\n    this.resizeObserver = new ResizeObserver(() => {\n      requestAnimationFrame(() => {\n        if (this.loading) {\n          body.style.width = el.style.width ? 'fit-content' : '';\n        }\n\n        this.checkScrollState();\n      });\n    });\n\n    this.resizeObserver.observe(el);\n  }\n}\n","@let poHelper = setHelper(label, additionalHelpTooltip);\n\n<po-field-container\n  [p-disabled]=\"isDisabled\"\n  [p-id]=\"id\"\n  [p-label]=\"label\"\n  [p-optional]=\"optional\"\n  [p-required]=\"required\"\n  [p-show-required]=\"showRequired\"\n  [p-helper]=\"label ? poHelper.helperSettings : undefined\"\n  [p-show-helper]=\"label ? displayAdditionalHelp : undefined\"\n  [p-size]=\"size\"\n  [p-text-wrap]=\"labelTextWrap()\"\n  [p-compact-label]=\"compactLabel()\"\n>\n  <div class=\"po-field-container-content\">\n    <div #textareaBody class=\"po-field-container-textarea-body\">\n      <textarea\n        #inp\n        class=\"po-textarea\"\n        [class.has-scroll]=\"hasScroll\"\n        [class.has-value]=\"hasValue\"\n        [class.has-loading]=\"loading\"\n        (blur)=\"eventOnBlur()\"\n        (focus)=\"eventOnFocus()\"\n        (input)=\"eventOnInput($event)\"\n        (keydown)=\"onKeyDown($event)\"\n        [attr.name]=\"name\"\n        [disabled]=\"isDisabled\"\n        [id]=\"id\"\n        [placeholder]=\"isDisabled ? '' : placeholder\"\n        [readonly]=\"readonly\"\n        [required]=\"required\"\n        [rows]=\"rows\"\n      ></textarea>\n      @if (loading) {\n        <div class=\"po-field-icon-container-right po-textarea-loading-container\">\n          <po-loading-icon [p-size]=\"mapSizeToIcon(size)\"></po-loading-icon>\n        </div>\n      }\n    </div>\n  </div>\n  @if (!readonly) {\n    <po-field-container-bottom\n      [p-append-in-body]=\"appendBox\"\n      [p-help]=\"help\"\n      [p-disabled]=\"isDisabled\"\n      [p-error-pattern]=\"getErrorPattern()\"\n      [p-error-limit]=\"errorLimit\"\n      [p-size]=\"size\"\n      [p-helper]=\"!label ? poHelper.helperSettings : undefined\"\n      [p-show-helper]=\"!label ? displayAdditionalHelp : undefined\"\n    ></po-field-container-bottom>\n  }\n</po-field-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PoCleanModule } from '../po-field';\nimport { PoIconModule } from '../po-icon';\nimport { PoLoadingModule } from '../po-loading';\nimport { PoSearchComponent } from './po-search.component';\nimport { FormsModule } from '@angular/forms';\nimport { PoAccordionModule } from '../po-accordion/po-accordion.module';\nimport { PoListBoxModule } from '../po-listbox';\nimport { PoDropdownModule } from '../po-dropdown';\n\n/**\n * @description\n *\n * Módulo do componente po-search.\n */\n@NgModule({\n  imports: [\n    CommonModule,\n    PoCleanModule,\n    PoIconModule,\n    PoLoadingModule,\n    PoAccordionModule,\n    FormsModule,\n    PoListBoxModule,\n    PoDropdownModule\n  ],\n  declarations: [PoSearchComponent],\n  exports: [PoSearchComponent]\n})\nexport class PoSearchModule {}\n","import { CommonModule, DecimalPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nimport { PoButtonModule } from './../po-button/po-button.module';\nimport { PoCheckboxGroupModule } from '../po-field/po-checkbox-group/po-checkbox-group.module';\nimport { PoContainerModule } from '../po-container/po-container.module';\nimport { PoLoadingModule } from '../po-loading/po-loading.module';\nimport { PoModalModule } from '../po-modal/po-modal.module';\nimport { PoPopoverModule } from '../po-popover/po-popover.module';\nimport { PoPopupModule } from './../po-popup/po-popup.module';\nimport { PoTagModule } from '../po-tag/po-tag.module';\nimport { PoTimeModule } from '../../pipes/po-time/index';\nimport { PoTooltipModule } from '../../directives/po-tooltip/index';\nimport { PoIconModule } from './../po-icon/po-icon.module';\nimport { PoCheckboxModule } from './../po-field/po-checkbox/po-checkbox.module';\nimport { PoRadioModule } from './../po-field/po-radio/po-radio.module';\nimport { PoLinkModule } from '../po-link/po-link.module';\nimport { PoPageSlideModule } from './../po-page/po-page-slide/po-page-slide.module';\n\nimport { PoTableColumnIconComponent } from './po-table-column-icon/po-table-column-icon.component';\nimport { PoTableColumnLabelComponent } from './po-table-column-label/po-table-column-label.component';\nimport { PoTableColumnLinkComponent } from './po-table-column-link/po-table-column-link.component';\nimport { PoTableColumnManagerComponent } from './po-table-column-manager/po-table-column-manager.component';\nimport { PoTableComponent } from './po-table.component';\nimport { PoTableDetailComponent } from './po-table-detail/po-table-detail.component';\nimport { PoTableIconComponent } from './po-table-icon/po-table-icon.component';\nimport { PoTableRowTemplateDirective } from './po-table-row-template/po-table-row-template.directive';\nimport { PoTableShowSubtitleComponent } from './po-table-show-subtitle/po-table-show-subtitle.component';\nimport { PoTableSubtitleCircleComponent } from './po-table-subtitle-circle/po-table-subtitle-circle.component';\nimport { PoTableSubtitleFooterComponent } from './po-table-subtitle-footer/po-table-subtitle-footer.component';\nimport { PoTableCellTemplateDirective } from './po-table-cell-template/po-table-cell-template.directive';\nimport { PoTableColumnTemplateDirective } from './po-table-column-template/po-table-column-template.directive';\nimport { PoTableListManagerComponent } from './po-table-list-manager/po-table-list-manager.component';\nimport { PoSwitchModule } from './../po-field/po-switch/po-switch.module';\nimport { PoTableColumnFrozenDirective } from './po-table-column-frozen/po-table-column-frozen.directive';\nimport { PoSearchModule } from '../po-search/po-search.module';\n\n/**\n * @description\n * Módulo do componente po-table\n */\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    ScrollingModule,\n    DragDropModule,\n    RouterModule,\n    PoButtonModule,\n    PoCheckboxGroupModule,\n    PoContainerModule,\n    PoLoadingModule,\n    PoModalModule,\n    PoPopoverModule,\n    PoPopupModule,\n    PoTagModule,\n    PoTimeModule,\n    PoTooltipModule,\n    PoIconModule,\n    PoCheckboxModule,\n    PoRadioModule,\n    PoLinkModule,\n    PoPageSlideModule,\n    PoSwitchModule,\n    PoSearchModule\n  ],\n  declarations: [\n    PoTableComponent,\n    PoTableColumnIconComponent,\n    PoTableColumnLabelComponent,\n    PoTableColumnLinkComponent,\n    PoTableColumnManagerComponent,\n    PoTableListManagerComponent,\n    PoTableDetailComponent,\n    PoTableIconComponent,\n    PoTableRowTemplateDirective,\n    PoTableShowSubtitleComponent,\n    PoTableSubtitleCircleComponent,\n    PoTableSubtitleFooterComponent,\n    PoTableCellTemplateDirective,\n    PoTableColumnTemplateDirective,\n    PoTableColumnFrozenDirective\n  ],\n  exports: [\n    PoTableComponent,\n    PoTableRowTemplateDirective,\n    PoTableCellTemplateDirective,\n    PoTableColumnTemplateDirective\n  ],\n  providers: [DecimalPipe]\n})\nexport class PoTableModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { PoButtonGroupModule } from '../po-button-group/index';\nimport { PoButtonModule } from '../po-button/index';\nimport { PoCheckboxGroupModule } from './po-checkbox-group/po-checkbox-group.module';\nimport { PoRadioGroupModule } from './po-radio-group/po-radio-group.module';\nimport { PoRadioModule } from './po-radio/po-radio.module';\nimport { PoContainerModule } from '../po-container/index';\nimport { PoCalendarModule } from '../po-calendar/po-calendar.module';\nimport { PoCleanModule } from './po-clean/po-clean.module';\nimport { PoDatepickerModule } from './po-datepicker/po-datepicker.module';\nimport { PoTimepickerModule } from './po-timepicker/po-timepicker.module';\nimport { PoDisclaimerGroupModule } from './../po-disclaimer-group/po-disclaimer-group.module';\nimport { PoDisclaimerModule } from './../po-disclaimer/po-disclaimer.module';\nimport { PoFieldContainerModule } from './po-field-container/po-field-container.module';\nimport { PoLoadingModule } from '../po-loading/index';\nimport { PoModalModule } from '../po-modal/po-modal.module';\nimport { PoProgressModule } from './../po-progress/po-progress.module';\nimport { PoServicesModule } from '../../services/services.module';\nimport { PoTableModule } from '../po-table/po-table.module';\nimport { PoTooltipModule } from './../../directives/po-tooltip/po-tooltip.module';\nimport { PoIconModule } from '../po-icon/po-icon.module';\nimport { PoListBoxModule } from '../po-listbox/po-listbox.module';\n\nimport { PoComboModule } from './po-combo/po-combo.module';\nimport { PoMultiselectOptionTemplateDirective } from './po-multiselect/po-multiselect-option-template/po-multiselect-option-template.directive';\nimport { PoDatepickerRangeComponent } from './po-datepicker-range/po-datepicker-range.component';\nimport { PoDecimalComponent } from './po-decimal/po-decimal.component';\nimport { PoEmailComponent } from './po-email/po-email.component';\nimport { PoLoginComponent } from './po-login/po-login.component';\nimport { PoLookupComponent } from './po-lookup/po-lookup.component';\nimport { PoLookupModalComponent } from './po-lookup/po-lookup-modal/po-lookup-modal.component';\nimport { PoMultiselectDropdownComponent } from './po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component';\nimport { PoMultiselectComponent } from './po-multiselect/po-multiselect.component';\nimport { PoRichTextBodyComponent } from './po-rich-text/po-rich-text-body/po-rich-text-body.component';\nimport { PoRichTextComponent } from './po-rich-text/po-rich-text.component';\nimport { PoRichTextImageModalComponent } from './po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component';\nimport { PoRichTextLinkModalComponent } from './po-rich-text/po-rich-text-link-modal/po-rich-text-link-modal.component';\nimport { PoRichTextToolbarComponent } from './po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component';\nimport { PoInputComponent } from './po-input/po-input.component';\nimport { PoNumberComponent } from './po-number/po-number.component';\nimport { PoPasswordComponent } from './po-password/po-password.component';\nimport { PoSelectComponent } from './po-select/po-select.component';\nimport { PoTextareaComponent } from './po-textarea/po-textarea.component';\nimport { PoUploadComponent } from './po-upload/po-upload.component';\nimport { PoUploadDragDropComponent } from './po-upload/po-upload-drag-drop/po-upload-drag-drop.component';\nimport { PoUploadDragDropDirective } from './po-upload/po-upload-drag-drop/po-upload-drag-drop.directive';\nimport { PoUploadDragDropAreaOverlayComponent } from './po-upload/po-upload-drag-drop/po-upload-drag-drop-area-overlay/po-upload-drag-drop-area-overlay.component';\nimport { PoUploadDragDropAreaComponent } from './po-upload/po-upload-drag-drop/po-upload-drag-drop-area/po-upload-drag-drop-area.component';\nimport { PoUploadFileRestrictionsComponent } from './po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component';\nimport { PoUrlComponent } from './po-url/po-url.component';\nimport { PoCheckboxModule } from './po-checkbox/po-checkbox.module';\nimport { PoSwitchModule } from './po-switch/po-switch.module';\nimport { PoLabelModule } from '../po-label';\nimport { PoTagModule } from '../po-tag';\nimport { PoHelperModule } from '../po-helper';\nimport { PoLinkModule } from '../po-link';\n\n/**\n * @description\n *\n * Módulo dos componentes: po-checkbox, po-checkbox-group, po-combo, po-datepicker, po-datepicker-range, po-email, po-input,\n * po-lookup, po-number, po-multiselect, po-password, po-radio-group, po-select, po-switch, po-textarea, po-upload\n * e po-url.\n *\n * > Não esqueça de importar o módulo `FormsModule` para usar os componentes de formulários e caso esteja trabalhando com\n * > formulários reativos, importe o módulo `ReactiveFormsModule`, ambos nativos do Angular.\n */\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    FormsModule.withConfig({\n      callSetDisabledState: 'whenDisabledForLegacyCode'\n    }),\n    OverlayModule,\n    PoButtonGroupModule,\n    PoButtonModule,\n    PoCleanModule,\n    PoCalendarModule,\n    PoComboModule,\n    PoCheckboxGroupModule,\n    PoRadioGroupModule,\n    PoContainerModule,\n    PoDatepickerModule,\n    PoTimepickerModule,\n    PoDisclaimerGroupModule,\n    PoDisclaimerModule,\n    PoFieldContainerModule,\n    PoLoadingModule,\n    PoModalModule,\n    PoProgressModule,\n    PoServicesModule,\n    PoTableModule,\n    PoTooltipModule,\n    PoIconModule,\n    PoCheckboxModule,\n    PoRadioModule,\n    PoLabelModule,\n    PoLinkModule,\n    PoListBoxModule,\n    PoSwitchModule,\n    PoTagModule,\n    PoHelperModule\n  ],\n  exports: [\n    PoCheckboxGroupModule,\n    PoRadioGroupModule,\n    PoCleanModule,\n    PoDatepickerModule,\n    PoTimepickerModule,\n    PoComboModule,\n    PoMultiselectOptionTemplateDirective,\n    PoDecimalComponent,\n    PoDatepickerRangeComponent,\n    PoEmailComponent,\n    PoFieldContainerModule,\n    PoInputComponent,\n    PoLoginComponent,\n    PoLookupComponent,\n    PoLookupModalComponent,\n    PoMultiselectComponent,\n    PoNumberComponent,\n    PoPasswordComponent,\n    PoRichTextComponent,\n    PoSelectComponent,\n    PoTextareaComponent,\n    PoUploadComponent,\n    PoUrlComponent,\n    PoCheckboxModule,\n    PoRadioModule,\n    PoLabelModule,\n    PoSwitchModule,\n    PoTagModule\n  ],\n  declarations: [\n    PoMultiselectOptionTemplateDirective,\n    PoDecimalComponent,\n    PoDatepickerRangeComponent,\n    PoEmailComponent,\n    PoInputComponent,\n    PoLoginComponent,\n    PoLookupComponent,\n    PoLookupModalComponent,\n    PoMultiselectComponent,\n    PoMultiselectDropdownComponent,\n    PoNumberComponent,\n    PoPasswordComponent,\n    PoRichTextBodyComponent,\n    PoRichTextComponent,\n    PoRichTextImageModalComponent,\n    PoRichTextLinkModalComponent,\n    PoRichTextToolbarComponent,\n    PoSelectComponent,\n    PoTextareaComponent,\n    PoUploadComponent,\n    PoUploadDragDropComponent,\n    PoUploadDragDropDirective,\n    PoUploadDragDropAreaOverlayComponent,\n    PoUploadDragDropAreaComponent,\n    PoUploadFileRestrictionsComponent,\n    PoUrlComponent\n  ],\n  providers: []\n})\nexport class PoFieldModule {}\n","/**\n * @usedBy PoInfoComponent\n *\n * @description\n *\n * Define os tipos de orientações disponíveis para o `po-info`.\n */\nexport enum PoInfoOrientation {\n  /** O valor será exibido na horizontal, ao lado direito em relação ao label. */\n  Horizontal = 'horizontal',\n\n  /** Exibe o valor na vertical, ou seja, abaixo do label. */\n  Vertical = 'vertical'\n}\n","import { Input, Directive, HostBinding, HostListener } from '@angular/core';\n\nimport { PoInfoOrientation } from './po-info-orietation.enum';\nimport { getDefaultSizeFn, validateSizeFn } from '../../utils/util';\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\n\nconst poInfoOrientationDefault = PoInfoOrientation.Vertical;\n\n@Directive()\nexport class PoInfoBaseComponent {\n  /** Valor do rótulo a ser exibido. */\n  @Input('p-label') label: string;\n\n  /**\n   * Ao informar uma URL, o conteúdo será exibido na forma de um *link* e ao ser clicado será redirecionado para a URL informada.\n   *\n   * > Caso informar `http://` será aberto uma nova aba.\n   * Caso informar um caminho relativo, exemplo: `/customers`, será aberto na aba atual.\n   *\n   */\n  @Input('p-url') url?: string;\n\n  /** Valor do conteúdo a ser exibido. */\n  @Input('p-value') value?: string;\n\n  public readonly poInfoOrientation = PoInfoOrientation;\n\n  private _labelSize: number;\n  private _orientation: PoInfoOrientation = poInfoOrientationDefault;\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Quantidade de [colunas](/guides/grid-system) usadas para a exibição da `p-label` quando o componente for\n   * utilizado na orientação horizontal.\n   *\n   * Valores válidos:\n   *  - `[1 .. 11]`\n   *\n   * > A propriedade `p-value` recebe o número de colunas restantes, por exemplo, se definido 3 colunas a mesma assume 9 colunas.\n   */\n  @Input('p-label-size') set labelSize(value: number) {\n    if (isNaN(parseInt(<any>value, 10))) {\n      this._labelSize = undefined;\n    } else {\n      value = parseInt(<any>value, 10);\n\n      this._labelSize = value < 1 || value > 11 ? undefined : value;\n    }\n  }\n\n  get labelSize(): number {\n    return this._labelSize;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o layout de exibição.\n   *\n   * > Quando definido na horizontal, pode-se utilizar a propriedade `p-label-size` para um maior controle das informações exibidas.\n   *\n   * @default `vertical`\n   */\n  @Input('p-orientation') set orientation(value: PoInfoOrientation) {\n    this._orientation = (<any>Object).values(PoInfoOrientation).includes(value) ? value : poInfoOrientationDefault;\n  }\n\n  get orientation(): PoInfoOrientation {\n    return this._orientation;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente entre `small` ou `medium`.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport { PoUtils } from '../../utils/util';\n\nimport { PoInfoBaseComponent } from './po-info-base.component';\n\n/**\n * @docsExtends PoInfoBaseComponent\n *\n * @description\n *\n * Este componente tem como objetivo renderizar valores na tela no estilo label na parte superior e\n * valor na parte inferior. Facilita a exibição de dados pois vem com layout padrão PO.\n *\n * @example\n *\n * <example name=\"po-info-basic\" title=\"PO Info Basic\">\n *  <file name=\"sample-po-info-basic/sample-po-info-basic.component.html\"> </file>\n *  <file name=\"sample-po-info-basic/sample-po-info-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-info-labs\" title=\"PO Info Labs\">\n *  <file name=\"sample-po-info-labs/sample-po-info-labs.component.html\"> </file>\n *  <file name=\"sample-po-info-labs/sample-po-info-labs.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-info',\n  templateUrl: './po-info.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoInfoComponent extends PoInfoBaseComponent {\n  get isExternalLink() {\n    return PoUtils.isExternalLink(this.url);\n  }\n}\n","<div class=\"po-info\" [class.po-row]=\"orientation === poInfoOrientation.Horizontal && labelSize\">\n  <div\n    class=\"po-info-container-title\"\n    [ngClass]=\"labelSize && orientation === poInfoOrientation.Horizontal ? 'po-sm-' + labelSize : ''\"\n    [class.po-info-label-horizontal]=\"orientation === poInfoOrientation.Horizontal\"\n    [class.po-text-nowrap]=\"orientation === poInfoOrientation.Horizontal && !labelSize\"\n  >\n    <span class=\"po-info-label\">\n      {{ orientation === poInfoOrientation.Horizontal ? label + ':' : label }}\n    </span>\n  </div>\n\n  <div\n    [ngClass]=\"labelSize && orientation === poInfoOrientation.Horizontal ? 'po-sm-' + (12 - labelSize) : ''\"\n    [class.po-info-container-content]=\"orientation !== poInfoOrientation.Horizontal\"\n    [class.po-info-value-horizontal]=\"orientation === poInfoOrientation.Horizontal\"\n  >\n    @if (url) {\n      @if (isExternalLink) {\n        <po-link [p-label]=\"value\" [p-url]=\"url\" [p-open-new-tab]=\"true\"></po-link>\n      } @else {\n        <po-link [p-label]=\"value\" [p-url]=\"url\" [p-open-new-tab]=\"false\"></po-link>\n      }\n    } @else {\n      <span class=\"po-info-value\">{{ value }}</span>\n    }\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { RouterModule } from '@angular/router';\nimport { PoLinkModule } from '../po-link';\nimport { PoInfoComponent } from './po-info.component';\n/**\n * @description\n *\n * Módulo do componente po-info.\n */\n@NgModule({\n  imports: [CommonModule, RouterModule, PoLinkModule],\n  declarations: [PoInfoComponent],\n  exports: [PoInfoComponent],\n  providers: [],\n  schemas: []\n})\nexport class PoInfoModule {}\n","import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from '../../../utils/util';\nimport { PoDynamicFormField } from './interfaces/po-dynamic-form-field.interface';\n\n/**\n *\n * @description\n *\n * Componente para criação de formulários dinâmicos a partir de uma lista de objetos.\n *\n * Também é possível verificar se o formulário está válido e informar valores para a exibição de informações.\n */\n@Directive()\nexport class PoDynamicFormBaseComponent {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Nome da propriedade, atribuída ao `PoDynamicFormField.property`, que iniciará o campo com foco.\n   */\n  @Input('p-auto-focus') autoFocus?: string;\n\n  /**\n   * @description\n   *\n   * Coleção de objetos que implementam a interface `PoDynamicFormField`, para definição dos campos que serão criados\n   * dinamicamente.\n   *\n   * > Ex: `[ { property: 'name' } ]`\n   *\n   * Regras de tipagem e criação dos componentes:\n   *\n   * - Caso o *type* informado seja *boolean* o componente criado será o `po-switch`.\n   * - Caso o *type* informado seja *currency* e não seja informado um *mask* ou *pattern* o componente criado será o `po-decimal`,\n   * caso seja informado um *mask* ou *pattern* o componente criado será o `po-input`.\n   * - Caso o *type* informado seja *number* e não seja informado um *mask* ou *pattern* o componente criado será o `po-number`, caso seja\n   * informado um *mask* ou *pattern* o componente criado será o `po-input`.\n   * - Caso a lista possua a propriedade `options` e a mesma possua até 3 itens o componente criado será o `po-radio-group`\n   * ou `po-checkbox-group` se informar a propriedade `optionsMulti`.\n   * - Caso a mesma possua 3 ou mais itens, será criado o componente `po-select` ou, `po-multiselect` se a propriedade `optionsMulti`\n   * for verdadeira.\n   * - Caso o *type* informado seja *date* ou *datetime* o componente criado será o `po-datepicker`.\n   * - Caso seja informado a propriedade `optionsService` o componente criado será o `po-combo`.\n   * - Caso o *type* informado seja *time* o componente criado será um `po-input` podendo receber um *mask* para formatar\n   * o valor exibido, caso não seja informado um *mask* o componente será criado com a máscara '99:99' por padrão.\n   * - Caso a lista possua a propriedade `rows` e esta seja definida com valor maior ou igual a 3 o componente criado será\n   * o `po-textarea`, caso o valor da propriedade `rows` seja menor que 3 o componente criado será o `po-input`.\n   * - Caso seja informada a propriedade `secret` o componente criado será o `po-password`.\n   * - Caso o *type* informado seja *string* o componente criado será o `po-input`.\n   * > Ao alterar o valor das `properties`, visibilidade e/ou agrupamentos via container, os `fields` que utilizam serviço podem refazer as chamadas para as API's.\n   * @default `[]`\n   */\n  @Input('p-fields') fields: Array<PoDynamicFormField>;\n\n  /**\n   * Objeto que será utilizado como valor para exibir as informações, será recuperado e preenchido através do atributo *property*\n   * dos objetos contidos na propridade `p-fields`.\n   *\n   * Pode iniciar com valor ou apenas com um objeto vazio que será preenchido conforme descrito acima.\n   *\n   * > Ex: `{ name: 'po' }`\n   */\n  @Input('p-value') value: any;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Na inicialização do componente será repassado o objeto de formulário utilizado no componente,\n   * podendo ser utilizado para validações e/ou detecção de mudança dos valores.\n   *\n   * Portanto existem duas maneiras de recuperar o formulário,\n   * através de *template reference* e através do *output*, veja os exemplos abaixo:\n   *\n   * > *template reference*\n   *\n   * ```html\n   *  <po-dynamic-form #dynamicForm>\n   *  </po-dynamic-form>\n   *\n   *  <po-button p-label=\"Adicionar\" [p-disabled]=\"dynamicForm?.form.invalid\">\n   *  </po-button>\n   *\n   * ```\n   *\n   * > *Output*\n   *\n   * ```html\n   *  ...\n   *  <po-dynamic-form (p-form)=\"getForm($event)\">\n   *  </po-dynamic-form>\n   *\n   *  <po-button p-label=\"Adicionar\" [p-disabled]=\"dynamicForm?.invalid\">\n   *  </po-button>\n   *  ...\n   *\n   * ```\n   *\n   * ```ts\n   *  ...\n   *\n   *  export class AppComponent {\n   *\n   *    dynamicForm: NgForm;\n   *\n   *    getForm(form: NgForm) {\n   *      this.dynamicForm = form;\n   *    }\n   *\n   *  }\n   * ```\n   *\n   * > Caso a propriedade `p-group-form` for verdadeira não será repassado o formulário, pois o mesmo utilizará\n   * o formulário pai.\n   */\n  @Output('p-form') formOutput: EventEmitter<NgForm> = new EventEmitter<NgForm>();\n\n  /**\n   * Função ou serviço que será executado na inicialização do componente.\n   *\n   * A propriedade aceita os seguintes tipos:\n   * - `string`: *Endpoint* usado pelo componente para requisição via `POST`.\n   * - `function`: Método que será executado.\n   *\n   * Ao ser executado, irá receber como parâmetro o objeto informado no `p-value`.\n   *\n   * O retorno desta função deve ser do tipo [PoDynamicFormLoad](documentation/po-dynamic-form#po-dynamic-form-load),\n   * onde o usuário poderá determinar as novas atualizações dos campos, valores e determinar o campo a ser focado.\n   *\n   * Por exemplo:\n   *\n   * ```\n   * onLoadFields(): PoDynamicFormLoad {\n   *\n   *   return {\n   *     value: { cpf: undefined },\n   *     fields: [\n   *       { property: 'cpf' }\n   *     ],\n   *     focus: 'cpf'\n   *   };\n   * }\n   *\n   * ```\n   * Para referenciar a sua função utilize a propriedade `bind`, por exemplo:\n   * ```\n   *  [p-load]=\"onLoadFields.bind(this)\"\n   * ```\n   */\n  @Input('p-load') load?: string | Function;\n\n  /**\n   * Função ou serviço para validar as **mudanças do formulário**.\n   *\n   * A propriedade aceita os seguintes tipos:\n   * - `string`: *Endpoint* usado pelo componente para requisição via `POST`.\n   * - `function`: Método que será executado.\n   *\n   * Ao ser executado, irá receber como parâmetro um objeto com o nome da propriedade\n   * alterada e os valores atualizados do formulario, conforme a interface `PoDynamicFormFieldChanged`\n   *\n   *\n   * O retorno desta função deve ser do tipo [PoDynamicFormValidation](documentation/po-dynamic-form#po-dynamic-form-validation),\n   * onde o usuário poderá determinar as novas atualizações dos campos.\n   * Por exemplo:\n   *\n   * ```\n   * onChangeFields(changeValue): PoDynamicFormValidation {\n   *\n   * if (changeValue.property === 'state') {\n   *\n   *   return {\n   *     value: { city: undefined },\n   *     fields: [\n   *       { property: 'city', options: this.getCity(changeValue.value.state) }\n   *     ],\n   *     focus: 'city'\n   *   };\n   * }\n   *\n   * ```\n   * Para referenciar a sua função utilize a propriedade `bind`, por exemplo:\n   * ```\n   *  [p-validate]=\"this.myFunction.bind(this)\"\n   * ```\n   *\n   * > Se houver uma lista de campos para validação definida em `p-validate-fields`, a propriedade `validate` só receberá o disparo para os campos equivalentes.\n   */\n  @Input('p-validate') validate?: string | Function;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Lista que define os campos que irão disparar o validate do form.\n   */\n  @Input('p-validate-fields') validateFields?: Array<string>;\n\n  private _componentsSize?: string = undefined;\n  private _initialComponentsSize?: string = undefined;\n  private _groupForm?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos componentes de formulário no template:\n   * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n   * - `medium`: aplica a medida medium de cada componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Ao informar esta propriedade, o componente passará a utilizar o formulário pai para criar os `FormControl`\n   * e com isso é possível recuperar o valor do formulário e suas validações a partir do formulário pai.\n   *\n   * ```html\n   * <form #parentForm=\"ngForm\">\n   *\n   *   <po-dynamic-form p-group-form [p-fields]=\"fields\"></po-dynamic-form>\n   *\n   *  <po-button p-label=\"Adicionar\" [p-disabled]=\"parentForm.invalid\"></po-button>\n   * </form>\n   * ```\n   */\n  @Input('p-group-form') set groupForm(value: boolean) {\n    this._groupForm = <any>value === '' ? true : convertToBoolean(value);\n  }\n\n  get groupForm(): boolean {\n    return this._groupForm;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Ao informar esta propriedade, o componente passará a emitir o valor a cada caractere digitado.\n   *\n   * Pode ser aplicado nos seguintes componentes:\n   * - po-input\n   * - po-number\n   * - po-decimal\n   * - po-textarea\n   * - po-password\n   *\n   * Deve informar os campos que deseja receber as emissões na propriedade `p-validate-fields`.\n   *\n   *\n   */\n  @Input({ alias: 'p-validate-on-input', transform: convertToBoolean }) validateOnInput: boolean = false;\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialComponentsSize, PoFieldSize);\n    this._componentsSize = size;\n  }\n}\n","import { HttpClient } from '@angular/common/http';\n\nimport { of } from 'rxjs';\n\nimport { PoDynamicFormLoad } from '../po-dynamic-form-load/po-dynamic-form-load.interface';\nimport { PoDynamicFormValidation } from '../po-dynamic-form-validation/po-dynamic-form-validation.interface';\n\nexport class PoDynamicFormOperation {\n  constructor(private readonly http: HttpClient) {}\n\n  protected execute(action: Function | string, param: any) {\n    return typeof action === 'string' ? this.post(action, param) : of(action(param));\n  }\n\n  protected post(url: string, body: PoDynamicFormValidation | any) {\n    return this.http.post(url, body);\n  }\n\n  protected setFormDefaultIfEmpty(validateFields: any): PoDynamicFormValidation | PoDynamicFormLoad {\n    return (\n      validateFields || {\n        value: {},\n        fields: [],\n        focus: undefined\n      }\n    );\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { map } from 'rxjs/operators';\n\nimport { PoDynamicFormField } from '../interfaces/po-dynamic-form-field.interface';\nimport { PoDynamicFormOperation } from '../po-dynamic-form-operation/po-dynamic-form-operation';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoDynamicFormLoadService extends PoDynamicFormOperation {\n  constructor() {\n    const http = inject(HttpClient);\n\n    super(http);\n  }\n\n  createAndUpdateFieldsForm(loadedFields: Array<PoDynamicFormField> = [], fields: Array<PoDynamicFormField> = []) {\n    return [...loadedFields].reduce(\n      (updatedFields, field) => {\n        const index = updatedFields.findIndex(updatedField => updatedField.property === field.property);\n        const hasProperty = index >= 0;\n\n        if (hasProperty) {\n          updatedFields[index] = { ...fields[index], ...field };\n        } else {\n          updatedFields.push(field);\n        }\n\n        return updatedFields;\n      },\n      [...fields]\n    );\n  }\n\n  executeLoad(load: Function | string, value: any) {\n    return this.execute(load, value).pipe(map(loadedFormdData => this.setFormDefaultIfEmpty(loadedFormdData)));\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\n\nimport { PoDynamicFormField } from '../interfaces/po-dynamic-form-field.interface';\nimport { PoDynamicFormFieldChanged } from './po-dynamic-form-field-changed.interface';\nimport { PoDynamicFormOperation } from '../po-dynamic-form-operation/po-dynamic-form-operation';\nimport { PoDynamicFormValidation } from './po-dynamic-form-validation.interface';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoDynamicFormValidationService extends PoDynamicFormOperation {\n  constructor() {\n    const http = inject(HttpClient);\n\n    super(http);\n  }\n\n  sendFieldChange(field: PoDynamicFormField, value: any) {\n    const changedValue: PoDynamicFormFieldChanged = { property: field.property, value };\n\n    return this.execute(field.validate, changedValue).pipe(\n      map(validateFields => this.setFieldDefaultIfEmpty(validateFields))\n    );\n  }\n\n  sendFormChange(\n    validate: Function | string,\n    field: PoDynamicFormField,\n    value: any\n  ): Observable<PoDynamicFormValidation> {\n    const changedValue: PoDynamicFormFieldChanged = { property: field.property, value };\n\n    return this.execute(validate, changedValue).pipe(map(validateFields => this.setFormDefaultIfEmpty(validateFields)));\n  }\n\n  updateFieldsForm(validatedFields: Array<PoDynamicFormField> = [], fields: Array<PoDynamicFormField> = []) {\n    return [...validatedFields].reduce(\n      (updatedFields, validatedField) => {\n        const index = updatedFields.findIndex(field => field.property === validatedField.property);\n        const hasProperty = index >= 0;\n\n        if (hasProperty) {\n          updatedFields[index] = { ...fields[index], ...validatedField };\n        }\n\n        return updatedFields;\n      },\n      [...fields]\n    );\n  }\n\n  private setFieldDefaultIfEmpty(validateFields: any): any {\n    return (\n      validateFields || {\n        field: {}\n      }\n    );\n  }\n}\n","/**\n * @usedBy PoDynamicFormComponent\n *\n * @description\n *\n * Enum para definição do tipo de campo que será criado dinamicamente.\n */\nexport enum PoDynamicFieldType {\n  /** Valor booleano. */\n  Boolean = 'boolean',\n\n  /** Valor numérico que contém casas decimais e milhar. */\n  Currency = 'currency',\n\n  /** Valor numérico que contém casas decimais e milhar. */\n  Decimal = 'decimal',\n\n  /** Valor para data. */\n  Date = 'date',\n\n  /** Valor para data e hora. */\n  DateTime = 'datetime',\n\n  /** Utilizado para informar/exibir hora. */\n  Time = 'time',\n\n  /** Valor numérico. */\n  Number = 'number',\n\n  /** Texto. */\n  String = 'string',\n\n  /** Utilizado para fazer uploads de arquivos. */\n  Upload = 'upload'\n}\n","export function getGridColumnsClasses(gridColumns, offsetColumns, grid, offset, pull) {\n  const systemGrid = {\n    gridSm: grid?.smGrid || gridColumns || 12,\n    gridMd: grid?.mdGrid || gridColumns || 6,\n    gridLg: grid?.lgGrid || gridColumns || 4,\n    gridXl: grid?.xlGrid || gridColumns || 3,\n    offsetSm: offset?.smOffset || offsetColumns || 0,\n    offsetMd: offset?.mdOffset || offsetColumns || 0,\n    offsetLg: offset?.lgOffset || offsetColumns || 0,\n    offsetXl: offset?.xlOffset || offsetColumns || 0,\n    pullSm: pull?.smPull || 0,\n    pullMd: pull?.mdPull || 0,\n    pullLg: pull?.lgPull || 0,\n    pullXl: pull?.xlPull || 0\n  };\n\n  return (\n    `po-sm-${systemGrid.gridSm} po-offset-sm-${systemGrid.offsetSm} po-pull-sm-${systemGrid.pullSm} ` +\n    `po-md-${systemGrid.gridMd} po-offset-md-${systemGrid.offsetMd} po-pull-md-${systemGrid.pullMd} ` +\n    `po-lg-${systemGrid.gridLg} po-offset-lg-${systemGrid.offsetLg} po-pull-lg-${systemGrid.pullLg} ` +\n    `po-xl-${systemGrid.gridXl} po-offset-xl-${systemGrid.offsetXl} po-pull-xl-${systemGrid.pullXl}`\n  );\n}\n\nexport function isVisibleField(field: { visible?: boolean }): boolean {\n  const containsVisible = 'visible' in field;\n\n  return containsVisible ? field.visible : true;\n}\n\nexport const PoDynamicUtil = {\n  isVisibleField,\n  getGridColumnsClasses\n};\n","import { Directive } from '@angular/core';\nimport { PoDynamicFormField } from '../po-dynamic-form/interfaces/po-dynamic-form-field.interface';\nimport { PoDynamicViewField } from '../po-dynamic-view/po-dynamic-view-field.interface';\n\n/**\n * @usedBy PoDynamicViewComponent, PoDynamicFormComponent\n * @description\n * Componente para listar dados compartilhados entre o dynamic-view e o dynamic-form\n */\n@Directive()\nexport class PoDynamicSharedBase {\n  visibleFields: Array<any> = [];\n  containerFields = [];\n  hasContainers: boolean = false;\n\n  ensureFieldHasContainer(fields: Array<PoDynamicViewField> | Array<PoDynamicFormField>) {\n    if (fields && fields.some(field => field?.container)) {\n      const firstFieldIndex = fields.findIndex(field => field.order === 1);\n\n      if (firstFieldIndex !== -1 && !fields[firstFieldIndex].container) {\n        fields[firstFieldIndex].container = '';\n      }\n    }\n  }\n\n  setContainerFields() {\n    this.hasContainers = this.visibleFields && this.visibleFields.some(field => field.container);\n\n    if (this.hasContainers) {\n      this.containerFields = this.groupFieldsIntoContainers(this.visibleFields);\n    }\n  }\n\n  private groupFieldsIntoContainers(fields: Array<PoDynamicViewField>): Array<Array<PoDynamicViewField>> {\n    const groups: Array<Array<PoDynamicViewField>> = [[]];\n    return fields.reduce((acc, field) => {\n      if (field.container && acc[acc.length - 1].length > 0) acc.push([]);\n      acc[acc.length - 1].push(field);\n      return acc;\n    }, groups);\n  }\n}\n","import { TitleCasePipe } from '@angular/common';\nimport { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\n\nimport { getDefaultSizeFn, isTypeof, sortFields, validateSizeFn } from '../../../../utils/util';\n\nimport { PoFieldSize } from '../../../../enums/po-field-size.enum';\nimport { PoComboFilter } from '../../../po-field/po-combo/interfaces/po-combo-filter.interface';\nimport { PoLookupFilter } from '../../../po-field/po-lookup/interfaces/po-lookup-filter.interface';\nimport { PoDynamicFieldType } from '../../enums/po-dynamic-field-type.enum';\nimport { PoDynamicUtil } from '../../po-dynamic.util';\nimport { PoDynamicSharedBase } from '../../shared/po-dynamic-shared-base';\nimport { PoDynamicFormField } from '../interfaces/po-dynamic-form-field.interface';\nimport { PoDynamicFormFieldInternal } from './po-dynamic-form-field-internal.interface';\n\n@Directive()\nexport class PoDynamicFormFieldsBaseComponent extends PoDynamicSharedBase {\n  @Input('p-auto-focus') autoFocus?: string;\n\n  @Input('p-disabled-form') disabledForm: boolean;\n\n  @Input('p-validate') validate?: string | Function;\n\n  @Output('p-form-validate') formValidate = new EventEmitter<any>();\n\n  @Output('p-fieldsChange') fieldsChange = new EventEmitter<any>();\n\n  // Evento disparado se existir optionsService em visibleField. Necessário resgatar referência do objeto selecionado para quando se tratar de recebimento de opções via serviço.\n  @Output('p-object-value') objectValue = new EventEmitter<any>();\n\n  @Input('p-validate-on-input') validateOnInput: boolean;\n\n  private _componentsSize?: string = undefined;\n  private _initialComponentsSize?: string = undefined;\n  private _fields: Array<PoDynamicFormField>;\n  private _validateFields: Array<string>;\n  private _value?: any = {};\n\n  // Define o tamanho dos componentes de formulário.\n  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  // array de objetos que implementam a interface PoDynamicFormField, que serão exibidos no componente.\n  @Input('p-fields') set fields(value: Array<PoDynamicFormField>) {\n    this._fields = Array.isArray(value) ? [...value] : [];\n  }\n\n  get fields() {\n    return this._fields;\n  }\n\n  // valor que será utilizado para iniciar valor no componente.\n  @Input('p-value') set value(value: any) {\n    this._value = value && isTypeof(value, 'object') ? value : {};\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  @Input('p-validate-fields') set validateFields(value: Array<string>) {\n    this._validateFields = Array.isArray(value) ? [...value] : [];\n  }\n\n  get validateFields() {\n    return this._validateFields;\n  }\n\n  constructor(private readonly titleCasePipe: TitleCasePipe) {\n    super();\n  }\n\n  compareTo(value, compareTo) {\n    return value === compareTo;\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  // retorna um array com os objetos configurados e visíveis.\n  protected getVisibleFields() {\n    const visibleFields = [];\n\n    this.fields.forEach(field => {\n      if (this.existsProperty(visibleFields, field.property)) {\n        this.printError(\n          `\"po-dynamic-form\" property \"${field.property}\" está duplicado. Interface: PoDynamicFormField.`\n        );\n        return;\n      }\n\n      if (!field['property']) {\n        this.printError('\"po-dynamic-form\" É obrigatório ser especificado um property.');\n        return;\n      }\n\n      if (PoDynamicUtil.isVisibleField(field)) {\n        visibleFields.push(this.createField(field));\n      }\n    });\n\n    const _visibleFields = sortFields(visibleFields);\n    this.ensureFieldHasContainer(_visibleFields);\n\n    return _visibleFields;\n  }\n\n  // converte um array em string para um array de objetos que contem label e value.\n  private convertOptions(options: Array<any>): Array<{ label: string; value: string }> {\n    const everyOptionString = options.every(option => typeof option === 'string');\n\n    if (everyOptionString) {\n      return options.map(value => ({ label: value, value }));\n    }\n\n    return options;\n  }\n\n  // cria um novo objeto com as classes de grid system, com control (tipo do componente) e label default.\n  private createField(field: PoDynamicFormField): PoDynamicFormFieldInternal {\n    const control = this.getComponentControl(field);\n    const options = !!field.options ? this.convertOptions(field.options) : undefined;\n    const focus = this.hasFocus(field);\n    const type = field && field.type ? field.type.toLocaleLowerCase() : 'string';\n\n    const componentClass = PoDynamicUtil.getGridColumnsClasses(\n      field.gridColumns,\n      field.offsetColumns,\n      {\n        smGrid: field.gridSmColumns,\n        mdGrid: field.gridMdColumns,\n        lgGrid: field.gridLgColumns,\n        xlGrid: field.gridXlColumns\n      },\n      {\n        smOffset: field.offsetSmColumns,\n        mdOffset: field.offsetMdColumns,\n        lgOffset: field.offsetLgColumns,\n        xlOffset: field.offsetXlColumns\n      },\n      {\n        smPull: field.gridSmPull,\n        mdPull: field.gridMdPull,\n        lgPull: field.gridLgPull,\n        xlPull: field.gridXlPull\n      }\n    );\n\n    return {\n      label: this.titleCasePipe.transform(field.property),\n      maskFormatModel: this.compareTo(type, PoDynamicFieldType.Time),\n      ...field,\n      componentClass,\n      control,\n      focus,\n      options\n    };\n  }\n\n  private existsProperty(fields: Array<PoDynamicFormField>, property: string) {\n    return fields.some(field => field.property === property);\n  }\n\n  // recupera o componente de acordo com algumas regras do field.\n  private getComponentControl(field: PoDynamicFormField = <any>{}) {\n    const type = field && field.type ? field.type.toLocaleLowerCase() : 'string';\n\n    const { forceBooleanComponentType } = field;\n    const forceOptionComponent = this.verifyForceOptionComponent(field);\n\n    if (forceBooleanComponentType) {\n      return forceBooleanComponentType;\n    }\n\n    if (forceOptionComponent) {\n      const { forceOptionsComponentType } = field;\n      return forceOptionsComponentType;\n    }\n\n    if (this.isNumberType(field, type)) {\n      return 'number';\n    } else if (this.isCurrencyType(field, type) || type === PoDynamicFieldType.Decimal) {\n      return 'decimal';\n    } else if (this.isSelect(field)) {\n      return 'select';\n    } else if (this.isRadioGroup(field)) {\n      return 'radioGroup';\n    } else if (this.isCheckboxGroup(field)) {\n      return 'checkboxGroup';\n    } else if (this.isMultiselect(field)) {\n      return 'multiselect';\n    } else if (this.compareTo(type, PoDynamicFieldType.Boolean)) {\n      return 'switch';\n    } else if (this.compareTo(type, PoDynamicFieldType.Date) || this.compareTo(type, PoDynamicFieldType.DateTime)) {\n      return field.range ? 'datepickerrange' : 'datepicker';\n    } else if (this.compareTo(type, PoDynamicFieldType.Time)) {\n      return 'timepicker';\n    } else if (this.isCombo(field)) {\n      return 'combo';\n    } else if (this.isLookup(field)) {\n      return 'lookup';\n    } else if (this.isTextarea(field)) {\n      return 'textarea';\n    } else if (this.isPassword(field)) {\n      return 'password';\n    } else if (this.isUpload(field)) {\n      return 'upload';\n    }\n\n    return 'input';\n  }\n\n  private hasFocus(field: PoDynamicFormField) {\n    return !!this.autoFocus && this.autoFocus === field.property;\n  }\n\n  private isCheckboxGroup(field: PoDynamicFormField) {\n    const { optionsService, optionsMulti, options } = field;\n\n    return !optionsService && optionsMulti && !!options && options.length <= 3;\n  }\n\n  private isCombo(field: PoDynamicFormField) {\n    const { optionsService } = field;\n\n    return !!optionsService && (isTypeof(optionsService, 'string') || this.isComboFilter(optionsService));\n  }\n\n  private isCurrencyType(field: PoDynamicFormField, type: string) {\n    const { mask, pattern } = field;\n\n    return this.compareTo(type, PoDynamicFieldType.Currency) && !mask && !pattern;\n  }\n\n  private isLookupFilter(object: any): object is PoLookupFilter {\n    return object && (<PoLookupFilter>object).getObjectByValue !== undefined;\n  }\n\n  private isComboFilter(object: any): object is PoComboFilter {\n    return object && (<PoComboFilter>object).getFilteredData !== undefined;\n  }\n\n  private isLookup(field: PoDynamicFormField) {\n    const { searchService } = field;\n\n    return !!searchService && (isTypeof(searchService, 'string') || this.isLookupFilter(searchService));\n  }\n\n  private isMultiselect(field: PoDynamicFormField) {\n    const { optionsService, optionsMulti, options } = field;\n\n    return optionsMulti && (!!optionsService || (!!options && options.length > 3));\n  }\n\n  private isNumberType(field: PoDynamicFormField, type: string) {\n    const { mask, pattern } = field;\n\n    return this.compareTo(type, PoDynamicFieldType.Number) && !mask && !pattern;\n  }\n\n  private isPassword(field: PoDynamicFormField) {\n    const { secret } = field;\n\n    return secret;\n  }\n\n  private isRadioGroup(field: PoDynamicFormField) {\n    const { optionsMulti, options } = field;\n\n    return !optionsMulti && !!options && options.length <= 3;\n  }\n\n  private isUpload(field: PoDynamicFormField) {\n    const { url, type } = field;\n\n    return url && type === 'upload';\n  }\n\n  private verifyForceOptionComponent(field: PoDynamicFormField) {\n    const { optionsMulti, optionsService, forceOptionsComponentType } = field;\n\n    if (forceOptionsComponentType && !optionsMulti && !optionsService) {\n      return true;\n    }\n    return false;\n  }\n\n  private isSelect(field: PoDynamicFormField) {\n    const { optionsMulti, options } = field;\n\n    return !optionsMulti && !!options && options.length > 3;\n  }\n\n  private isTextarea(field: PoDynamicFormField) {\n    const { rows } = field;\n\n    return rows && rows >= 3;\n  }\n\n  private printError(error: string) {\n    console.error(error);\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialComponentsSize, PoFieldSize);\n    this._componentsSize = size;\n  }\n}\n","import { Component, Input, TemplateRef } from '@angular/core';\n\n@Component({\n  selector: 'po-dynamic-container',\n  templateUrl: './po-dynamic-container.component.html',\n  standalone: false\n})\nexport class PoDynamicContainerComponent {\n  @Input('p-content') content: TemplateRef<any> | any;\n  @Input('p-fields') fields: Array<any>;\n}\n","<div class=\"po-dynamic-container\">\n  @for (fieldsInContainer of fields; track fieldsInContainer) {\n    <div>\n      <po-container [p-title]=\"fieldsInContainer[0].container\">\n        <div class=\"po-row\">\n          <ng-container *ngTemplateOutlet=\"content; context: { $implicit: fieldsInContainer }\"> </ng-container>\n        </div>\n      </po-container>\n    </div>\n  }\n</div>\n","import { TitleCasePipe } from '@angular/common';\nimport { ChangeDetectorRef, Component, OnChanges, QueryList, SimpleChanges, ViewChildren, inject } from '@angular/core';\nimport { ControlContainer, NgForm } from '@angular/forms';\n\nimport { PoDynamicFormField } from '../interfaces/po-dynamic-form-field.interface';\nimport { PoDynamicFormFieldValidation } from '../po-dynamic-form-validation/po-dynamic-form-field-validation.interface';\nimport { PoDynamicFormValidationService } from '../po-dynamic-form-validation/po-dynamic-form-validation.service';\nimport { PoDynamicFormFieldsBaseComponent } from './po-dynamic-form-fields-base.component';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente de criação dos campos dinâmicos.\n */\n@Component({\n  selector: 'po-dynamic-form-fields',\n  templateUrl: 'po-dynamic-form-fields.component.html',\n  viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\n  providers: [PoDynamicFormValidationService],\n  standalone: false\n})\nexport class PoDynamicFormFieldsComponent extends PoDynamicFormFieldsBaseComponent implements OnChanges {\n  private readonly validationService = inject(PoDynamicFormValidationService);\n  private readonly changes = inject(ChangeDetectorRef);\n  private readonly form = inject(NgForm);\n\n  @ViewChildren('component') components: QueryList<{\n    name: string;\n    focus: () => void;\n    showAdditionalHelp: () => void;\n  }>;\n\n  private previousValue = {};\n\n  constructor() {\n    const titleCasePipe = inject(TitleCasePipe);\n\n    super(titleCasePipe);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.fields) {\n      this.visibleFields = this.getVisibleFields();\n\n      if (changes.fields.previousValue && this.hasContainer()) {\n        this.hasChangeContainer(changes.fields.previousValue, changes.fields.currentValue);\n      }\n\n      if (!changes.fields.previousValue || !changes.fields.currentValue) {\n        this.setContainerFields();\n      }\n    }\n\n    if (changes.value) {\n      this.updatePreviousValue();\n    }\n  }\n\n  focus(property: string) {\n    const foundComponent = this.components.find(component => component.name === property);\n    if (foundComponent) {\n      foundComponent.focus();\n    }\n  }\n\n  isDisabled(field: PoDynamicFormField): boolean {\n    return field.disabled || this.disabledForm;\n  }\n\n  async onChangeField(visibleField: PoDynamicFormField, objectValue?: any) {\n    const { property } = visibleField;\n    const isBooleanType = visibleField.type === 'boolean';\n    const isChangedValueField = this.previousValue[property] !== this.value[property];\n\n    if (visibleField.optionsService) {\n      this.objectValue.emit(objectValue);\n    }\n\n    // verifica se o formulario esta dirty para não disparar o validate ao carregar a tela.\n    if ((this.form.dirty || isBooleanType) && isChangedValueField) {\n      const { changedField, changedFieldIndex } = this.getField(property);\n\n      if (changedField.validate) {\n        await this.validateField(changedField, changedFieldIndex, visibleField);\n      }\n\n      this.triggerValidationOnForm(changedFieldIndex);\n    }\n\n    this.updatePreviousValue();\n  }\n\n  //emite o valor a cada caractere digitado no input\n  onChangeFieldModel(visibleField: PoDynamicFormField) {\n    if (this.validateOnInput) {\n      const { property } = visibleField;\n      const { changedFieldIndex } = this.getField(property);\n      this.triggerValidationOnForm(changedFieldIndex);\n    }\n  }\n\n  showAdditionalHelp(property: string) {\n    const foundComponent = this.components.find(component => component.name === property);\n    if (foundComponent) {\n      foundComponent.showAdditionalHelp();\n    }\n  }\n\n  updatePreviousValue() {\n    this.previousValue = JSON.parse(JSON.stringify(this.value));\n  }\n\n  trackBy(index: number, field: PoDynamicFormField) {\n    return field.property;\n  }\n\n  private applyFieldValidation(index: number, validatedField: PoDynamicFormFieldValidation) {\n    const field = this.fields[index];\n\n    this.fields[index] = { ...field, ...validatedField.field };\n    this.updateFields();\n\n    if (validatedField.hasOwnProperty('value')) {\n      this.value[field.property] = validatedField.value;\n    }\n\n    this.changes.detectChanges();\n\n    if (validatedField.focus) {\n      this.focus(field.property);\n    }\n  }\n\n  private getField(property: string) {\n    const changedFieldIndex = this.fields.findIndex(field => field.property === property);\n    const changedField = this.fields[changedFieldIndex];\n\n    return { changedField, changedFieldIndex };\n  }\n\n  private triggerValidationOnForm(changedFieldIndex: number) {\n    const isValidatableField = this.validateFields?.length\n      ? this.validateFieldsChecker(this.validateFields, this.fields[changedFieldIndex].property)\n      : true;\n    const hasValidationForm = this.validate && isValidatableField && this.formValidate.observers.length;\n\n    if (hasValidationForm) {\n      const updatedField = this.fields[changedFieldIndex];\n      this.formValidate.emit(updatedField);\n    }\n  }\n\n  private updateFields() {\n    this.fieldsChange.emit(this.fields);\n    this.visibleFields = this.getVisibleFields();\n    this.setContainerFields();\n  }\n\n  private validateFieldsChecker(validateFields: Array<string>, propertyField: PoDynamicFormField['property']): boolean {\n    return validateFields.some(validateFieldItem => validateFieldItem === propertyField);\n  }\n\n  private async validateField(field: PoDynamicFormField, fieldIndex: number, visibleField: PoDynamicFormField) {\n    const value = this.value[field.property];\n\n    const previousDisabled = visibleField.disabled;\n    visibleField.disabled = true;\n    this.changes.detectChanges();\n\n    try {\n      const validatedField = await this.validationService.sendFieldChange(field, value).toPromise();\n      this.applyFieldValidation(fieldIndex, validatedField);\n    } catch {\n      visibleField.disabled = previousDisabled;\n    }\n  }\n\n  private hasChangeContainer(previous: Array<PoDynamicFormField>, current: Array<PoDynamicFormField>): void {\n    const prevArray = previous.map((item, index) => ({\n      container: item.container || null,\n      property: item.property,\n      index,\n      order: item.order,\n      visible: item.visible ?? true\n    }));\n\n    const currArray = current.map((item, index) => ({\n      container: item.container || null,\n      property: item.property,\n      index,\n      order: item.order,\n      visible: item.visible ?? true\n    }));\n\n    const prevContainers = prevArray.filter(item => item.container);\n    const currContainers = currArray.filter(item => item.container);\n\n    const prevOrder = prevArray.filter(item => item.order);\n    const currOrder = currArray.filter(item => item.order);\n\n    const prevVisibleTrue = prevArray.filter(item => item.visible === true);\n    const currVisibleTrue = currArray.filter(item => item.visible === true);\n\n    const prevVisibleFalse = prevArray.filter(item => !item.visible);\n    const currVisibleFalse = currArray.filter(item => !item.visible);\n\n    // Verifica mudança na quantidade de containers\n    if (prevContainers.length !== currContainers.length) {\n      this.setContainerFields();\n      return;\n    }\n\n    // Verifica mudança na quantidade de order\n    if (prevOrder.length !== currOrder.length) {\n      this.setContainerFields();\n      return;\n    }\n\n    // Verifica mudança na quantidade de visible\n    if (prevVisibleTrue.length !== currVisibleTrue.length) {\n      this.setContainerFields();\n      return;\n    }\n\n    // Verifica mudança na quantidade de visible\n    if (prevVisibleFalse.length !== currVisibleFalse.length) {\n      this.setContainerFields();\n      return;\n    }\n\n    if (currContainers.length) {\n      this.handleChangesContainer(prevContainers, currContainers, 'container');\n    }\n\n    if (currOrder.length) {\n      this.handleChangesContainer(prevOrder, currOrder, 'order');\n    }\n\n    if (currVisibleTrue.length) {\n      this.handleChangesContainer(prevVisibleTrue, currVisibleTrue, 'visible');\n    }\n\n    if (currVisibleFalse.length) {\n      this.handleChangesContainer(prevVisibleFalse, currVisibleFalse, 'visible');\n    }\n\n    //atualiza container sem mudança na estrutura da interface\n    const result = this.diffObjectsArray(previous, this.getVisibleFields());\n    this.containerFields = this.updateFieldContainer(result, this.containerFields);\n  }\n\n  private updateFieldContainer(changes, containerFields) {\n    const mapchanges = new Map(changes.map(obj => [obj.property, obj]));\n\n    containerFields.forEach(subArray => {\n      subArray.forEach((subItem, index) => {\n        const item: any = mapchanges.get(subItem.property);\n        if (item) {\n          subArray[index] = { ...subItem, ...item };\n        }\n      });\n    });\n\n    return containerFields;\n  }\n\n  private diffObjectsArray(oldArray, newArray) {\n    const differences = [];\n\n    newArray.forEach(newObj => {\n      const oldObj = oldArray.find(o => o.property === newObj.property);\n\n      if (!oldObj) {\n        // Se o objeto é novo, adiciona todo o objeto com a propriedade \"property\"\n        differences.push({ ...newObj });\n      } else {\n        // Verificar se há diferenças nas propriedades\n        const diff = { property: newObj.property };\n        let hasDifferences = false;\n\n        for (const key in newObj) {\n          if (newObj[key] !== oldObj[key]) {\n            diff[key] = newObj[key];\n            hasDifferences = true;\n          }\n        }\n\n        if (hasDifferences) {\n          differences.push(diff);\n        }\n      }\n    });\n\n    //retorna mudanças nos fields para atualização do containerFields\n    return differences;\n  }\n\n  private hasContainer() {\n    return this.visibleFields?.some(field => field.container) ?? false;\n  }\n\n  private handleChangesContainer(prevContainers, currContainers, key) {\n    for (let i = 0; i < prevContainers.length; i++) {\n      const prev = prevContainers[i];\n      const curr = currContainers[i];\n\n      //Verifica se container mudou de posição\n      if (prev[key] === curr[key] && prev.index !== curr.index) {\n        this.setContainerFields();\n        return;\n      }\n      //Verifica se foi apenas mudança da string em caso do container ou valor no order\n      if (prev[key] !== curr[key] && prev.index === curr.index) {\n        if (key === 'order') {\n          this.setContainerFields();\n          return;\n        }\n        this.containerFields.forEach(subItem =>\n          subItem.forEach(item => {\n            if (item.property === curr.property) {\n              item[key] = curr[key];\n            }\n          })\n        );\n      }\n      //verifica se manteve o mesmo número de container, mas alterou property do container\n      if (prev[key] !== curr[key] && prev.property !== curr.property) {\n        this.setContainerFields();\n        return;\n      }\n    }\n  }\n}\n","@if (visibleFields && visibleFields.length > 0) {\n  <div class=\"po-row\" [class.po-dynamic]=\"hasContainers\">\n    <ng-container\n      *ngTemplateOutlet=\"\n        hasContainers ? poContentContainer : poContent;\n        context: { $implicit: hasContainers ? containerFields : visibleFields }\n      \"\n    ></ng-container>\n  </div>\n}\n\n<ng-template #poContent let-fields>\n  @for (field of fields; track trackBy($index, field)) {\n    @if (field?.divider?.trim()) {\n      <po-divider class=\"po-sm-12\" [p-label]=\"field.divider\"> </po-divider>\n    }\n    @if (compareTo(field.control, 'datepicker')) {\n      <po-datepicker\n        #component\n        [name]=\"field.property\"\n        [(ngModel)]=\"value[field.property]\"\n        [ngClass]=\"field.componentClass\"\n        [additionalHelpEventTrigger]=\"field.additionalHelp ? 'event' : 'noEvent'\"\n        [p-additional-help-tooltip]=\"field.additionalHelpTooltip\"\n        [p-compact-label]=\"field.compactLabel\"\n        [p-clean]=\"field.clean\"\n        [p-disabled]=\"isDisabled(field)\"\n        [p-error-pattern]=\"field.errorMessage\"\n        [p-error-limit]=\"field.errorLimit\"\n        [p-error-async]=\"field.errorAsyncFunction\"\n        [p-auto-focus]=\"field.focus\"\n        [p-format]=\"field.format\"\n        [p-help]=\"field.help\"\n        [p-helper]=\"field.helper\"\n        [p-iso-format]=\"field.isoFormat\"\n        [p-label]=\"field.label\"\n        [p-loading]=\"field.loading\"\n        [p-locale]=\"field.locale\"\n        [p-max-date]=\"field.maxValue\"\n        [p-min-date]=\"field.minValue\"\n        [p-no-autocomplete]=\"field.noAutocomplete\"\n        [p-optional]=\"field.optional\"\n        [p-readonly]=\"field.readonly\"\n        [p-required]=\"field.required\"\n        [p-required-field-error-message]=\"field.requiredFieldErrorMessage\"\n        [p-size]=\"field.size || componentsSize\"\n        [p-show-required]=\"field.showRequired\"\n        (p-change)=\"onChangeField(field)\"\n        [p-placeholder]=\"field.placeholder\"\n        (p-additional-help)=\"field.additionalHelp?.($event)\"\n        (p-keydown)=\"field.keydown?.($event)\"\n      >\n      </po-datepicker>\n    }\n    @if (compareTo(field.control, 'datepickerrange')) {\n      <po-datepicker-range\n        #component\n        [name]=\"field.property\"\n        [(ngModel)]=\"value[field.property]\"\n        [ngClass]=\"field.componentClass\"\n        [additionalHelpEventTrigger]=\"field.additionalHelp ? 'event' : 'noEvent'\"\n        [p-additional-help-tooltip]=\"field.additionalHelpTooltip\"\n        [p-clean]=\"field.clean\"\n        [p-compact-label]=\"field.compactLabel\"\n        [p-disabled]=\"isDisabled(field)\"\n        [p-auto-focus]=\"field.focus\"\n        [p-help]=\"field.help\"\n        [p-helper]=\"field.helper\"\n        [p-label]=\"field.label\"\n        [p-literals]=\"field.literals\"\n        [p-loading]=\"field.loading\"\n        [p-max-date]=\"field.maxValue\"\n        [p-min-date]=\"field.minValue\"\n        [p-no-autocomplete]=\"field.noAutocomplete\"\n        [p-optional]=\"field.optional\"\n        [p-placeholder]=\"field.placeholder\"\n        [p-readonly]=\"field.readonly\"\n        [p-required]=\"field.required\"\n        [p-field-error-message]=\"field.errorMessage\"\n        [p-error-limit]=\"field.errorLimit\"\n        [p-show-required]=\"field.showRequired\"\n        [p-size]=\"field.size || componentsSize\"\n        (p-additional-help)=\"field.additionalHelp?.($event)\"\n        (p-change)=\"onChangeField(field)\"\n        (p-keydown)=\"field.keydown?.($event)\"\n      >\n      </po-datepicker-range>\n    }\n    @if (compareTo(field.control, 'timepicker')) {\n      <po-timepicker\n        #component\n        [name]=\"field.property\"\n        [(ngModel)]=\"value[field.property]\"\n        [ngClass]=\"field.componentClass\"\n        [p-append-in-body]=\"field.appendBox\"\n        [p-compact-label]=\"field.compactLabel\"\n        [p-clean]=\"field.clean\"\n        [p-disabled]=\"isDisabled(field)\"\n        [p-error-pattern]=\"field.errorMessage\"\n        [p-error-limit]=\"field.errorLimit\"\n        [p-auto-focus]=\"field.focus\"\n        [p-format]=\"field.format\"\n        [p-help]=\"field.help\"\n        [p-helper]=\"field.helper\"\n        [p-model-format]=\"field.modelFormat\"\n        [p-label]=\"field.label\"\n        [p-locale]=\"field.locale\"\n        [p-max-time]=\"field.maxValue\"\n        [p-min-time]=\"field.minValue\"\n        [p-minute-interval]=\"field.minuteInterval\"\n        [p-no-autocomplete]=\"field.noAutocomplete\"\n        [p-optional]=\"field.optional\"\n        [p-placeholder]=\"field.placeholder\"\n        [p-readonly]=\"field.readonly\"\n        [p-required]=\"field.required\"\n        [p-required-field-error-message]=\"field.requiredFieldErrorMessage\"\n        [p-second-interval]=\"field.secondInterval\"\n        [p-show-required]=\"field.showRequired\"\n        [p-show-seconds]=\"field.showSeconds\"\n        [p-size]=\"field.size || componentsSize\"\n        (p-change)=\"onChangeField(field)\"\n        (p-keydown)=\"field.keydown?.($event)\"\n      >\n      </po-timepicker>\n    }\n    @if (compareTo(field.control, 'input')) {\n      <po-input\n        #component\n        [name]=\"field.property\"\n        [(ngModel)]=\"value[field.property]\"\n        [ngClass]=\"field.componentClass\"\n        [additionalHelpEventTrigger]=\"field.additionalHelp ? 'event' : 'noEvent'\"\n        [p-additional-help-tooltip]=\"field.additionalHelpTooltip\"\n        [p-clean]=\"field.clean\"\n        [p-compact-label]=\"field.compactLabel\"\n        [p-disabled]=\"isDisabled(field)\"\n        [p-error-pattern]=\"field.errorMessage\"\n        [p-error-limit]=\"field.errorLimit\"\n        [p-error-async-properties]=\"field.errorAsyncProperties\"\n        [p-auto-focus]=\"field.focus\"\n        [p-help]=\"field.help\"\n        [p-helper]=\"field.helper\"\n        [p-label]=\"field.label\"\n        [p-loading]=\"field.loading\"\n        [p-mask-format-model]=\"field.maskFormatModel\"\n        [p-mask-no-length-validation]=\"field.maskNoLengthValidation\"\n        [p-mask]=\"field.mask\"\n        [p-maxlength]=\"field.maxLength\"\n        [p-minlength]=\"field.minLength\"\n        [p-no-autocomplete]=\"field.noAutocomplete\"\n        [p-optional]=\"field.optional\"\n        [p-pattern]=\"field.pattern\"\n        [p-required]=\"field.required\"\n        [p-required-field-error-message]=\"field.requiredFieldErrorMessage\"\n        [p-show-required]=\"field.showRequired\"\n        [p-size]=\"field.size || componentsSize\"\n        (p-additional-help)=\"field.additionalHelp?.($event)\"\n        (p-change)=\"onChangeField(field)\"\n        (p-change-model)=\"onChangeFieldModel(field)\"\n        (p-keydown)=\"field.keydown?.($event)\"\n        [p-icon]=\"field.icon\"\n        [p-placeholder]=\"field.placeholder\"\n        [p-readonly]=\"field.readonly\"\n      >\n      </po-input>\n    }\n    @if (compareTo(field.control, 'number')) {\n      <po-number\n        #component\n        [name]=\"field.property\"\n        [(ngModel)]=\"value[field.property]\"\n        [ngClass]=\"field.componentClass\"\n        [additionalHelpEventTrigger]=\"field.additionalHelp ? 'event' : 'noEvent'\"\n        [p-additional-help-tooltip]=\"field.additionalHelpTooltip\"\n        [p-clean]=\"field.clean\"\n        [p-compact-label]=\"field.compactLabel\"\n        [p-disabled]=\"isDisabled(field)\"\n        [p-error-pattern]=\"field.errorMessage\"\n        [p-error-limit]=\"field.errorLimit\"\n        [p-error-async-properties]=\"field.errorAsyncProperties\"\n        [p-auto-focus]=\"field.focus\"\n        [p-help]=\"field.help\"\n        [p-helper]=\"field.helper\"\n        [p-label]=\"field.label\"\n        [p-loading]=\"field.loading\"\n        [p-min]=\"field.minValue\"\n        [p-max]=\"field.maxValue\"\n        [p-maxlength]=\"field.maxLength\"\n        [p-minlength]=\"field.minLength\"\n        [p-no-autocomplete]=\"field.noAutocomplete\"\n        [p-optional]=\"field.optional\"\n        [p-step]=\"field.step\"\n        [p-readonly]=\"field.readonly\"\n        [p-required]=\"field.required\"\n        [p-required-field-error-message]=\"field.requiredFieldErrorMessage\"\n        [p-show-required]=\"field.showRequired\"\n        [p-size]=\"field.size || componentsSize\"\n        (p-additional-help)=\"field.additionalHelp?.($event)\"\n        (p-change)=\"onChangeField(field)\"\n        (p-change-model)=\"onChangeFieldModel(field)\"\n        (p-keydown)=\"field.keydown?.($event)\"\n        [p-icon]=\"field.icon\"\n        [p-placeholder]=\"field.placeholder\"\n      >\n      </po-number>\n    }\n    @if (compareTo(field.control, 'decimal')) {\n      <po-decimal\n        #component\n        [name]=\"field.property\"\n        [(ngModel)]=\"value[field.property]\"\n        [ngClass]=\"field.componentClass\"\n        [additionalHelpEventTrigger]=\"field.additionalHelp ? 'event' : 'noEvent'\"\n        [p-additional-help-tooltip]=\"field.additionalHelpTooltip\"\n        [p-clean]=\"field.clean\"\n        [p-compact-label]=\"field.compactLabel\"\n        [p-error-pattern]=\"field.errorMessage\"\n        [p-error-limit]=\"field.errorLimit\"\n        [p-error-async-properties]=\"field.errorAsyncProperties\"\n        [p-disabled]=\"isDisabled(field)\"\n        [p-decimals-length]=\"field.decimalsLength\"\n        [p-thousand-maxlength]=\"field.thousandMaxlength\"\n        [p-icon]=\"field.icon\"\n        [p-auto-focus]=\"field.focus\"\n        [p-help]=\"field.help\"\n        [p-helper]=\"field.helper\"\n        [p-label]=\"field.label\"\n        [p-loading]=\"field.loading\"\n        [p-locale]=\"field.locale\"\n        [p-mask-no-length-validation]=\"field.maskNoLengthValidation\"\n        [p-min]=\"field.minValue\"\n        [p-max]=\"field.maxValue\"\n        [p-maxlength]=\"field.maxLength\"\n        [p-minlength]=\"field.minLength\"\n        [p-no-autocomplete]=\"field.noAutocomplete\"\n        [p-optional]=\"field.optional\"\n        [p-readonly]=\"field.readonly\"\n        [p-required]=\"field.required\"\n        [p-required-field-error-message]=\"field.requiredFieldErrorMessage\"\n        [p-show-required]=\"field.showRequired\"\n        [p-size]=\"field.size || componentsSize\"\n        (p-additional-help)=\"field.additionalHelp?.($event)\"\n        (p-change)=\"onChangeField(field)\"\n        (p-change-model)=\"onChangeFieldModel(field)\"\n        (p-keydown)=\"field.keydown?.($event)\"\n        [p-placeholder]=\"field.placeholder\"\n      >\n      </po-decimal>\n    }\n    @if (compareTo(field.control, 'select')) {\n      <po-select\n        #component\n        [name]=\"field.property\"\n        [(ngModel)]=\"value[field.property]\"\n        [ngClass]=\"field.componentClass\"\n        [additionalHelpEventTrigger]=\"field.additionalHelp ? 'event' : 'noEvent'\"\n        [p-additional-help-tooltip]=\"field.additionalHelpTooltip\"\n        [p-field-label]=\"field.fieldLabel\"\n        [p-field-value]=\"field.fieldValue\"\n        [p-compact-label]=\"field.compactLabel\"\n        [p-disabled]=\"isDisabled(field)\"\n        [p-help]=\"field.help\"\n        [p-helper]=\"field.helper\"\n        [p-label]=\"field.label\"\n        [p-loading]=\"field.loading\"\n        [p-optional]=\"field.optional\"\n        [p-options]=\"field.options\"\n        [p-required]=\"field.required\"\n        [p-field-error-message]=\"field.errorMessage\"\n        [p-error-limit]=\"field.errorLimit\"\n        [p-show-required]=\"field.showRequired\"\n        [p-size]=\"field.size || componentsSize\"\n        (p-additional-help)=\"field.additionalHelp?.($event)\"\n        (p-change)=\"onChangeField(field)\"\n        (p-keydown)=\"field.keydown?.($event)\"\n        [p-placeholder]=\"field.placeholder\"\n        [p-readonly]=\"field.readonly\"\n      >\n      </po-select>\n    }\n    @if (compareTo(field.control, 'radioGroup')) {\n      <po-radio-group\n        #component\n        [name]=\"field.property\"\n        [(ngModel)]=\"value[field.property]\"\n        [ngClass]=\"field.componentClass\"\n        [additionalHelpEventTrigger]=\"field.additionalHelp ? 'event' : 'noEvent'\"\n        [p-additional-help-tooltip]=\"field.additionalHelpTooltip\"\n        [p-columns]=\"field.columns || 3\"\n        [p-compact-label]=\"field.compactLabel\"\n        [p-auto-focus]=\"field.focus\"\n        [p-disabled]=\"isDisabled(field)\"\n        [p-help]=\"field.help\"\n        [p-helper]=\"field.helper\"\n        [p-label]=\"field.label\"\n        [p-optional]=\"field.optional\"\n        [p-options]=\"field.options\"\n        [p-required]=\"field.required\"\n        [p-field-error-message]=\"field.errorMessage\"\n        [p-error-limit]=\"field.errorLimit\"\n        [p-show-required]=\"field.showRequired\"\n        [p-size]=\"field.size || componentsSize\"\n        (p-additional-help)=\"field.additionalHelp?.($event)\"\n        (p-change)=\"onChangeField(field)\"\n        (p-keydown)=\"field.keydown?.($event)\"\n      >\n      </po-radio-group>\n    }\n    @if (compareTo(field.control, 'switch')) {\n      <po-switch\n        #component\n        [name]=\"field.property\"\n        [(ngModel)]=\"value[field.property]\"\n        [ngClass]=\"field.componentClass\"\n        [additionalHelpEventTrigger]=\"field.additionalHelp ? 'event' : 'noEvent'\"\n        [p-additional-help-tooltip]=\"field.additionalHelpTooltip\"\n        [p-compact-label]=\"field.compactLabel\"\n        [p-disabled]=\"isDisabled(field)\"\n        [p-error-limit]=\"field.errorLimit\"\n        [p-field-error-message]=\"field.errorMessage\"\n        [p-format-model]=\"field.formatModel\"\n        [p-help]=\"field.help\"\n        [p-helper]=\"field.helper\"\n        [p-label]=\"field.label\"\n        [p-label-off]=\"field.booleanFalse\"\n        [p-label-on]=\"field.booleanTrue\"\n        [p-label-position]=\"field.labelPosition\"\n        [p-loading]=\"field.loading\"\n        [p-hide-label-status]=\"field.hideLabelStatus\"\n        [p-invalid-value]=\"field.invalidValue\"\n        [p-size]=\"field.size || componentsSize\"\n        (p-additional-help)=\"field.additionalHelp?.($event)\"\n        (p-change)=\"onChangeField(field)\"\n        (p-keydown)=\"field.keydown?.($event)\"\n      >\n      </po-switch>\n    }\n    @if (compareTo(field.control, 'checkbox')) {\n      <po-checkbox\n        #component\n        [name]=\"field.property\"\n        [(ngModel)]=\"value[field.property]\"\n        [ngClass]=\"field.componentClass\"\n        [additionalHelpEventTrigger]=\"field.additionalHelp ? 'event' : 'noEvent'\"\n        [p-additional-help-tooltip]=\"field.additionalHelpTooltip\"\n        [p-auto-focus]=\"field.focus\"\n        [p-compact-label]=\"field.compactLabel\"\n        [p-disabled]=\"isDisabled(field)\"\n        [p-help]=\"field.help\"\n        [p-helper]=\"field.helper\"\n        [p-label]=\"field.label\"\n        [p-size]=\"field.size || componentsSize\"\n        (p-additional-help)=\"field.additionalHelp?.($event)\"\n        (p-change)=\"onChangeField(field)\"\n        (p-keydown)=\"field.keydown?.($event)\"\n      >\n      </po-checkbox>\n    }\n    @if (compareTo(field.control, 'combo')) {\n      <po-combo\n        #component\n        [name]=\"field.property\"\n        [(ngModel)]=\"value[field.property]\"\n        [ngClass]=\"field.componentClass\"\n        p-emit-object-value\n        [additionalHelpEventTrigger]=\"field.additionalHelp ? 'event' : 'noEvent'\"\n        [p-additional-help-tooltip]=\"field.additionalHelpTooltip\"\n        [p-auto-focus]=\"field.focus\"\n        [p-compact-label]=\"field.compactLabel\"\n        [p-clean]=\"field.clean\"\n        [p-disabled]=\"isDisabled(field)\"\n        [p-field-label]=\"field.fieldLabel\"\n        [p-field-value]=\"field.fieldValue\"\n        [p-filter-params]=\"field.params\"\n        [p-filter-service]=\"field.optionsService\"\n        [p-help]=\"field.help\"\n        [p-helper]=\"field.helper\"\n        [p-infinite-scroll]=\"field.infiniteScroll\"\n        [p-infinite-scroll-distance]=\"field.infiniteScrollDistance || 100\"\n        [p-label]=\"field.label\"\n        [p-literals]=\"field.literals\"\n        [p-loading]=\"field.loading\"\n        [p-options]=\"field.options\"\n        [p-optional]=\"field.optional\"\n        [p-sort]=\"field.sort\"\n        [p-required]=\"field.required\"\n        [p-field-error-message]=\"field.errorMessage\"\n        [p-error-limit]=\"field.errorLimit\"\n        [p-show-required]=\"field.showRequired\"\n        (p-change)=\"onChangeField(field, $event)\"\n        [p-icon]=\"field.icon\"\n        [p-placeholder]=\"field.placeholder\"\n        [p-filter-minlength]=\"field.filterMinlength\"\n        [p-filter-mode]=\"field.filterMode\"\n        [p-disabled-init-filter]=\"field.disabledInitFilter\"\n        [p-disabled-tab-filter]=\"field.disabledTabFilter\"\n        [p-debounce-time]=\"field.debounceTime\"\n        [p-change-on-enter]=\"field.changeOnEnter\"\n        [p-remove-initial-filter]=\"field.removeInitialFilter\"\n        [p-size]=\"field.size || componentsSize\"\n        (p-keydown)=\"field.keydown?.($event)\"\n        (p-additional-help)=\"field.additionalHelp?.($event)\"\n        [p-listbox-control-position]=\"field.listboxControlPosition\"\n      >\n      </po-combo>\n    }\n    @if (compareTo(field.control, 'lookup')) {\n      <po-lookup\n        #component\n        [name]=\"field.property\"\n        [(ngModel)]=\"value[field.property]\"\n        p-field-label=\"label\"\n        p-field-value=\"value\"\n        [ngClass]=\"field.componentClass\"\n        [additionalHelpEventTrigger]=\"field.additionalHelp ? 'event' : 'noEvent'\"\n        [p-additional-help-tooltip]=\"field.additionalHelpTooltip\"\n        [p-compact-label]=\"field.compactLabel\"\n        [p-clean]=\"field.clean\"\n        [p-columns]=\"field.columns\"\n        [p-disabled]=\"isDisabled(field)\"\n        [p-field-label]=\"field.fieldLabel || 'label'\"\n        [p-field-value]=\"field.fieldValue || 'value'\"\n        [p-filter-params]=\"field.params\"\n        [p-filter-service]=\"field.searchService\"\n        [p-auto-focus]=\"field.focus\"\n        [p-auto-height]=\"field.autoHeight\"\n        [p-help]=\"field.help\"\n        [p-helper]=\"field.helper\"\n        [p-field-format]=\"field.format\"\n        [p-infinite-scroll]=\"field.infiniteScroll\"\n        [p-label]=\"field.label\"\n        [p-literals]=\"field.literals\"\n        [p-loading]=\"field.loading\"\n        [p-multiple]=\"field.multiple\"\n        [p-no-autocomplete]=\"field.noAutocomplete\"\n        [p-optional]=\"field.optional\"\n        [p-required]=\"field.required\"\n        [p-field-error-message]=\"field.errorMessage\"\n        [p-error-limit]=\"field.errorLimit\"\n        [p-show-required]=\"field.showRequired\"\n        [p-size]=\"field.size || componentsSize\"\n        (p-change)=\"onChangeField(field)\"\n        [p-placeholder]=\"field.placeholder\"\n        [p-advanced-filters]=\"field.advancedFilters\"\n        (p-additional-help)=\"field.additionalHelp?.($event)\"\n        (p-change-visible-columns)=\"field.changeVisibleColumns?.($event)\"\n        (p-keydown)=\"field.keydown?.($event)\"\n        (p-restore-column-manager)=\"field.columnRestoreManager?.($event)\"\n      >\n      </po-lookup>\n    }\n    @if (compareTo(field.control, 'checkboxGroup')) {\n      <po-checkbox-group\n        #component\n        [name]=\"field.property\"\n        [(ngModel)]=\"value[field.property]\"\n        [ngClass]=\"field.componentClass\"\n        [additionalHelpEventTrigger]=\"field.additionalHelp ? 'event' : 'noEvent'\"\n        [p-additional-help-tooltip]=\"field.additionalHelpTooltip\"\n        [p-columns]=\"field.columns || 3\"\n        [p-compact-label]=\"field.compactLabel\"\n        [p-auto-focus]=\"field.focus\"\n        [p-disabled]=\"isDisabled(field)\"\n        [p-help]=\"field.help\"\n        [p-helper]=\"field.helper\"\n        [p-label]=\"field.label\"\n        [p-optional]=\"field.optional\"\n        [p-options]=\"field.options\"\n        [p-required]=\"field.required\"\n        [p-show-required]=\"field.showRequired\"\n        [p-field-error-message]=\"field.errorMessage\"\n        [p-error-limit]=\"field.errorLimit\"\n        [p-size]=\"field.size || componentsSize\"\n        (p-additional-help)=\"field.additionalHelp?.($event)\"\n        (p-change)=\"onChangeField(field)\"\n        (p-keydown)=\"field.keydown?.($event)\"\n      >\n      </po-checkbox-group>\n    }\n    @if (compareTo(field.control, 'multiselect')) {\n      <po-multiselect\n        #component\n        [name]=\"field.property\"\n        [(ngModel)]=\"value[field.property]\"\n        [ngClass]=\"field.componentClass\"\n        [additionalHelpEventTrigger]=\"field.additionalHelp ? 'event' : 'noEvent'\"\n        [p-additional-help-tooltip]=\"field.additionalHelpTooltip\"\n        [p-compact-label]=\"field.compactLabel\"\n        [p-disabled]=\"isDisabled(field)\"\n        [p-auto-focus]=\"field.focus\"\n        [p-auto-height]=\"field.autoHeight\"\n        [p-help]=\"field.help\"\n        [p-helper]=\"field.helper\"\n        [p-label]=\"field.label\"\n        [p-literals]=\"field.literals\"\n        [p-loading]=\"field.loading\"\n        [p-optional]=\"field.optional\"\n        [p-options]=\"field.options\"\n        [p-required]=\"field.required\"\n        [p-field-error-message]=\"field.errorMessage\"\n        [p-error-limit]=\"field.errorLimit\"\n        [p-show-required]=\"field.showRequired\"\n        (p-change)=\"onChangeField(field)\"\n        [p-placeholder]=\"field.placeholder\"\n        [p-field-label]=\"field.fieldLabel\"\n        [p-field-value]=\"field.fieldValue\"\n        [p-filter-service]=\"field.optionsService\"\n        [p-filter-mode]=\"field.filterMode\"\n        [p-debounce-time]=\"field.debounceTime\"\n        [p-sort]=\"field.sort\"\n        [p-placeholder-search]=\"field.placeholderSearch\"\n        [p-hide-search]=\"field.hideSearch\"\n        [p-hide-select-all]=\"field.hideSelectAll\"\n        [p-size]=\"field.size || componentsSize\"\n        (p-additional-help)=\"field.additionalHelp?.($event)\"\n        (p-keydown)=\"field.keydown?.($event)\"\n        [p-listbox-control-position]=\"field.listboxControlPosition\"\n      >\n      </po-multiselect>\n    }\n    @if (compareTo(field.control, 'textarea')) {\n      <po-textarea\n        #component\n        [name]=\"field.property\"\n        [(ngModel)]=\"value[field.property]\"\n        [ngClass]=\"field.componentClass\"\n        [additionalHelpEventTrigger]=\"field.additionalHelp ? 'event' : 'noEvent'\"\n        [p-additional-help-tooltip]=\"field.additionalHelpTooltip\"\n        [p-compact-label]=\"field.compactLabel\"\n        [p-disabled]=\"isDisabled(field)\"\n        [p-auto-focus]=\"field.focus\"\n        [p-help]=\"field.help\"\n        [p-helper]=\"field.helper\"\n        [p-label]=\"field.label\"\n        [p-loading]=\"field.loading\"\n        [p-maxlength]=\"field.maxLength\"\n        [p-minlength]=\"field.minLength\"\n        [p-optional]=\"field.optional\"\n        [p-readonly]=\"field.readonly\"\n        [p-required]=\"field.required\"\n        [p-field-error-message]=\"field.errorMessage\"\n        [p-error-limit]=\"field.errorLimit\"\n        [p-show-required]=\"field.showRequired\"\n        [p-rows]=\"field.rows\"\n        [p-size]=\"field.size || componentsSize\"\n        (p-additional-help)=\"field.additionalHelp?.($event)\"\n        (p-change)=\"onChangeField(field)\"\n        (p-change-model)=\"onChangeFieldModel(field)\"\n        (p-keydown)=\"field.keydown?.($event)\"\n        [p-placeholder]=\"field.placeholder\"\n      >\n      </po-textarea>\n    }\n    @if (compareTo(field.control, 'password')) {\n      <po-password\n        #component\n        [name]=\"field.property\"\n        [(ngModel)]=\"value[field.property]\"\n        [ngClass]=\"field.componentClass\"\n        [additionalHelpEventTrigger]=\"field.additionalHelp ? 'event' : 'noEvent'\"\n        [p-additional-help-tooltip]=\"field.additionalHelpTooltip\"\n        [p-compact-label]=\"field.compactLabel\"\n        [p-clean]=\"field.clean\"\n        [p-disabled]=\"isDisabled(field)\"\n        [p-error-pattern]=\"field.errorMessage\"\n        [p-error-limit]=\"field.errorLimit\"\n        [p-error-async-properties]=\"field.errorAsyncProperties\"\n        [p-auto-focus]=\"field.focus\"\n        [p-help]=\"field.help\"\n        [p-helper]=\"field.helper\"\n        [p-hide-password-peek]=\"field.hidePasswordPeek\"\n        [p-icon]=\"field.icon\"\n        [p-label]=\"field.label\"\n        [p-loading]=\"field.loading\"\n        [p-maxlength]=\"field.maxLength\"\n        [p-minlength]=\"field.minLength\"\n        [p-no-autocomplete]=\"field.noAutocomplete\"\n        [p-optional]=\"field.optional\"\n        [p-pattern]=\"field.pattern\"\n        [p-readonly]=\"field.readonly\"\n        [p-required]=\"field.required\"\n        [p-required-field-error-message]=\"field.requiredFieldErrorMessage\"\n        [p-show-required]=\"field.showRequired\"\n        [p-size]=\"field.size || componentsSize\"\n        (p-additional-help)=\"field.additionalHelp?.($event)\"\n        (p-change)=\"onChangeField(field)\"\n        (p-change-model)=\"onChangeFieldModel(field)\"\n        (p-keydown)=\"field.keydown?.($event)\"\n        [p-placeholder]=\"field.placeholder\"\n      >\n      </po-password>\n    }\n    @if (compareTo(field.control, 'upload')) {\n      <po-upload\n        #component\n        [(ngModel)]=\"value[field.property]\"\n        [ngClass]=\"field.componentClass\"\n        [additionalHelpEventTrigger]=\"field.additionalHelp ? 'event' : 'noEvent'\"\n        [p-additional-help-tooltip]=\"field.additionalHelpTooltip\"\n        [p-auto-upload]=\"field.autoUpload\"\n        [p-compact-label]=\"field.compactLabel\"\n        [p-directory]=\"field.directory\"\n        [p-disabled]=\"isDisabled(field)\"\n        [p-drag-drop]=\"field.dragDrop\"\n        [p-drag-drop-height]=\"field.dragDropHeight\"\n        [p-restrictions]=\"field.restrictions\"\n        [p-form-field]=\"field.formField\"\n        [p-headers]=\"field.headers\"\n        [p-help]=\"field.help\"\n        [p-helper]=\"field.helper\"\n        [p-hide-restrictions-info]=\"field.hideRestrictionsInfo\"\n        [p-hide-select-button]=\"field.hideSelectButton\"\n        [p-hide-send-button]=\"field.hideSendButton\"\n        [p-multiple]=\"field.multiple\"\n        [p-label]=\"field.label\"\n        [p-literals]=\"field.literals\"\n        [p-loading]=\"field.loading\"\n        [name]=\"field.property\"\n        [p-custom-action]=\"field.customAction\"\n        (p-custom-action-click)=\"field.customActionClick($event)\"\n        (p-error)=\"field.onError($event)\"\n        (p-success)=\"field.onSuccess($event)\"\n        (p-upload)=\"field.onUpload($event)\"\n        [p-optional]=\"field.optional\"\n        [p-required]=\"field.required\"\n        [p-show-required]=\"field.showRequired\"\n        [p-show-thumbnail]=\"field.showThumbnail ?? true\"\n        [p-size]=\"field.size || componentsSize\"\n        (p-additional-help)=\"field.additionalHelp?.($event)\"\n        (p-change)=\"onChangeField(field)\"\n        (p-change-model)=\"onChangeFieldModel(field)\"\n        (p-keydown)=\"field.keydown?.($event)\"\n        [p-url]=\"field.url\"\n      >\n      </po-upload>\n    }\n  }\n</ng-template>\n\n<ng-template #poContentContainer let-fields>\n  <po-dynamic-container [p-fields]=\"fields\" [p-content]=\"poContent\"></po-dynamic-container>\n</ng-template>\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { NgForm } from '@angular/forms';\n\nimport { Observable, Subject, Subscription } from 'rxjs';\n\nimport { PoDynamicFormField } from './interfaces/po-dynamic-form-field.interface';\nimport { PoDynamicFormBaseComponent } from './po-dynamic-form-base.component';\nimport { PoDynamicFormLoad } from './po-dynamic-form-load/po-dynamic-form-load.interface';\nimport { PoDynamicFormLoadService } from './po-dynamic-form-load/po-dynamic-form-load.service';\nimport { PoDynamicFormValidation } from './po-dynamic-form-validation/po-dynamic-form-validation.interface';\nimport { PoDynamicFormValidationService } from './po-dynamic-form-validation/po-dynamic-form-validation.service';\n\n/**\n * @docsExtends PoDynamicFormBaseComponent\n *\n * @example\n *\n * <example name=\"po-dynamic-form-basic\" title=\"PO Dynamic Form Basic\">\n *  <file name=\"sample-po-dynamic-form-basic/sample-po-dynamic-form-basic.component.html\"> </file>\n *  <file name=\"sample-po-dynamic-form-basic/sample-po-dynamic-form-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-dynamic-form-register\" title=\"PO Dynamic Form - Register\">\n *  <file name=\"sample-po-dynamic-form-register/sample-po-dynamic-form-register.component.html\"> </file>\n *  <file name=\"sample-po-dynamic-form-register/sample-po-dynamic-form-register.component.ts\"> </file>\n *  <file name=\"sample-po-dynamic-form-register/sample-po-dynamic-form-register.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-dynamic-form-container\" title=\"PO Dynamic Form - Container\">\n *  <file name=\"sample-po-dynamic-form-container/sample-po-dynamic-form-container.component.html\"> </file>\n *  <file name=\"sample-po-dynamic-form-container/sample-po-dynamic-form-container.component.ts\"> </file>\n *  <file name=\"sample-po-dynamic-form-container/sample-po-dynamic-form-container.service.ts\"> </file>\n * </example>\n *\n */\n\n@Component({\n  selector: 'po-dynamic-form',\n  templateUrl: './po-dynamic-form.component.html',\n  standalone: false\n})\nexport class PoDynamicFormComponent extends PoDynamicFormBaseComponent implements OnInit, OnDestroy {\n  @ViewChild('fieldsComponent') fieldsComponent: {\n    focus: (property: string) => void;\n    updatePreviousValue: () => void;\n    showAdditionalHelp: (property: string) => void;\n  };\n\n  disabledForm: boolean;\n  displayAdditionalHelp: boolean = false;\n\n  private _form: NgForm;\n\n  private onLoadSubscription: Subscription;\n  private sendFormSubscription: Subscription;\n  private readonly comboOptionSubject = new Subject<any>();\n\n  @ViewChild('dynamicForm') set form(value: NgForm) {\n    // necessario para nao ocorrer o ExpressionChangedAfterItHasBeenCheckedError\n    setTimeout(() => {\n      this._form = value;\n\n      this.emitForm();\n    });\n  }\n\n  get form() {\n    return this._form || <any>{};\n  }\n\n  constructor(\n    private readonly changes: ChangeDetectorRef,\n    private readonly loadService: PoDynamicFormLoadService,\n    private readonly validationService: PoDynamicFormValidationService\n  ) {\n    super();\n  }\n\n  ngOnDestroy() {\n    this.removeListeners();\n  }\n\n  ngOnInit() {\n    if (this.load) {\n      this.loadDataOnInitialize();\n    }\n  }\n\n  /**\n   * Função que atribui foco ao campo desejado.\n   *\n   * Para utilizá-la é necessário capturar a instância do `dynamic form`, como por exemplo:\n   *\n   * ``` html\n   * <po-dynamic-form #dynamicForm [p-fields]=\"fields\"></po-dynamic-form>\n   * ```\n   *\n   * ``` javascript\n   * import { PoDynamicFormComponent, PoDynamicFormField } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild('dynamicForm', { static: true }) dynamicForm: PoDynamicFormComponent;\n   *\n   * fields: Array<PoDynamicFormField> = [\n   *   { property: 'fieldOne' },\n   *   { property: 'fieldTwo' }\n   * ];\n   *\n   * fieldFocus() {\n   *   this.dynamicForm.focus('fieldTwo');\n   * }\n   * ```\n   *\n   * @param {string} property Nome da propriedade atribuída ao `PoDynamicFormField.property`.\n   */\n  focus(property: string) {\n    this.fieldsComponent.focus(property);\n  }\n\n  getObjectValue(): Observable<any> {\n    return this.comboOptionSubject.asObservable();\n  }\n\n  sendObjectValue(objectValue: any) {\n    this.comboOptionSubject.next(objectValue);\n  }\n\n  /**\n   * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n   * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `keydown`.\n   *\n   * ```\n   * import { PoDynamicModule } from '@po-ui/ng-components';\n   * ...\n   * @ViewChild('dynamicForm', { static: true }) dynamicForm: PoDynamicFormComponent;\n   *\n   * fields: Array<PoDynamicFormField> = [\n   *  {\n   *    property: 'name',\n   *    ...\n   *    help: 'Mensagem de ajuda.',\n   *    helper: 'Mensagem de ajuda complementar com o componente po-helper implementado.',\n   *    keydown: this.onKeyDown.bind(this, 'name')\n   *  },\n   * ]\n   *\n   * onKeyDown(property: string, event: KeyboardEvent): void {\n   *  if (event.code === 'F9') {\n   *    this.dynamicForm.showAdditionalHelp(property);\n   *  }\n   * }\n   * ```\n   *\n   * @param { string } property Identificador da coluna.\n   */\n  showAdditionalHelp(property: string) {\n    this.fieldsComponent.showAdditionalHelp(property);\n  }\n\n  validateForm(field: PoDynamicFormField) {\n    const previousFocusElement = document.activeElement;\n\n    this.disableForm(true);\n    const errorOnValidation = () => this.disableForm(false);\n\n    this.sendFormSubscription = this.validationService\n      .sendFormChange(this.validate, field, this.value)\n      .subscribe(this.applyFormValidation(previousFocusElement), errorOnValidation);\n  }\n\n  private applyFormUpdatesOnLoad(previousFocusElement: Element): (dynamicFormData: PoDynamicFormLoad) => void {\n    return dynamicFormData => {\n      this.updateModelOnLoad(dynamicFormData);\n      this.disableForm(false);\n      this.setFocusOnFieldByProperty(dynamicFormData.focus, previousFocusElement);\n    };\n  }\n\n  private applyFormValidation(previousFocusElement: Element): (dynamicFormData: PoDynamicFormValidation) => void {\n    return dynamicFormData => {\n      this.updateModelWithValidation(dynamicFormData);\n      this.disableForm(false);\n      this.setFocusOnFieldByProperty(dynamicFormData.focus, previousFocusElement);\n    };\n  }\n\n  private disableForm(value: boolean) {\n    this.disabledForm = value;\n    this.changes.detectChanges();\n  }\n\n  private emitForm() {\n    if (!this.groupForm && this.formOutput.observers.length) {\n      this.formOutput.emit(this.form);\n    }\n  }\n\n  private loadDataOnInitialize() {\n    const previousFocusElement = document.activeElement;\n\n    this.disabledForm = true;\n    const errorOnLoad = () => (this.disabledForm = false);\n\n    this.onLoadSubscription = this.loadService\n      .executeLoad(this.load, this.value)\n      .subscribe(this.applyFormUpdatesOnLoad(previousFocusElement), errorOnLoad);\n  }\n\n  private removeListeners() {\n    if (this.onLoadSubscription) {\n      this.onLoadSubscription.unsubscribe();\n    }\n\n    if (this.sendFormSubscription) {\n      this.sendFormSubscription.unsubscribe();\n    }\n  }\n\n  private setFocusOnFieldByProperty(property: string, previousFocusElement: Element) {\n    if (property) {\n      // precisa do timeout para que o valor seja atribuido no campo antes de setar o focus,\n      // para nao disparar a mudança posteriormente. Situação ocorre quando retornar campo com valor e focus atribuido a ele.\n      setTimeout(() => this.focus(property));\n    } else {\n      previousFocusElement['focus']();\n    }\n  }\n\n  private updateModelOnLoad(loadedFormData: PoDynamicFormLoad) {\n    Object.assign(this.value, loadedFormData.value);\n    this.fields = this.loadService.createAndUpdateFieldsForm(loadedFormData.fields, this.fields);\n  }\n\n  private updateModelWithValidation(formData: PoDynamicFormValidation) {\n    Object.assign(this.value, formData.value);\n    this.fieldsComponent.updatePreviousValue();\n    this.fields = this.validationService.updateFieldsForm(formData.fields, this.fields);\n  }\n}\n","@if (groupForm) {\n  <po-dynamic-form-fields\n    #fieldsComponent\n    [p-auto-focus]=\"autoFocus\"\n    [p-components-size]=\"componentsSize\"\n    [p-fields]=\"fields\"\n    [p-value]=\"value\"\n  >\n  </po-dynamic-form-fields>\n} @else {\n  <form #dynamicForm=\"ngForm\">\n    <po-dynamic-form-fields\n      #fieldsComponent\n      [(p-fields)]=\"fields\"\n      [p-auto-focus]=\"autoFocus\"\n      [p-disabled-form]=\"disabledForm\"\n      [p-components-size]=\"componentsSize\"\n      [p-validate]=\"validate\"\n      [p-validate-fields]=\"validateFields\"\n      [p-validate-on-input]=\"validateOnInput\"\n      [p-value]=\"value\"\n      (p-object-value)=\"sendObjectValue($event)\"\n      (p-form-validate)=\"validateForm($event)\"\n    >\n    </po-dynamic-form-fields>\n  </form>\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\nimport { isTypeof } from '../../../../utils/util';\nimport { PoDynamicViewField } from '../po-dynamic-view-field.interface';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Serviço padrão utilizado para filtrar os dados dos campos que utilizam a propriedade `searchService`.\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoDynamicViewService {\n  private readonly httpClient = inject(HttpClient);\n\n  readonly headers: HttpHeaders = new HttpHeaders({\n    'X-PO-No-Message': 'true'\n  });\n  url: string;\n\n  getObjectByValue(value: any, filterParams?: any): Observable<Array<any> | { [key: string]: any }> {\n    const validatedFilterParams = this.validateParams(filterParams);\n\n    const encodedValue = encodeURIComponent(value);\n    const newURL = `${this.url}/${encodedValue}`;\n\n    return this.httpClient\n      .get(newURL, { headers: this.headers, params: validatedFilterParams })\n      .pipe(map((response: any) => ('items' in response ? response.items : response)));\n  }\n\n  onLoad(url: string, value): Promise<{ value?: any; fields?: Array<PoDynamicViewField> }> {\n    return this.httpClient.post(url, value).toPromise();\n  }\n\n  setConfig(url: string) {\n    this.url = url;\n  }\n\n  private validateParams(params: any) {\n    return isTypeof(params, 'object') && !Array.isArray(params) ? params : undefined;\n  }\n}\n","import { CurrencyPipe, DatePipe, DecimalPipe, TitleCasePipe } from '@angular/common';\nimport { Directive, HostBinding, HostListener, Input } from '@angular/core';\n\nimport { PoTimePipe } from '../../../pipes/po-time/po-time.pipe';\nimport { convertToBoolean, getDefaultSizeFn, isTypeof, sortFields, validateSizeFn } from '../../../utils/util';\n\nimport { Observable, catchError, map, of } from 'rxjs';\nimport { getGridColumnsClasses, PoDynamicUtil } from '../po-dynamic.util';\nimport { PoDynamicViewField } from './po-dynamic-view-field.interface';\nimport { PoDynamicViewService } from './services/po-dynamic-view.service';\nimport { PoComboFilterService } from '../../po-field/po-combo/po-combo-filter.service';\nimport { PoMultiselectFilterService } from '../../po-field/po-multiselect/po-multiselect-filter.service';\nimport { PoDynamicSharedBase } from '../shared/po-dynamic-shared-base';\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\n\n/**\n *\n * @description\n *\n * Componente para listar dados dinamicamente a partir de uma lista de objetos.\n *\n * > Por padrão esse componente cria `po-info` para exibição, é possível criar `po-tag` passando a propriedade { tag: true }.\n *\n */\n@Directive()\nexport class PoDynamicViewBaseComponent extends PoDynamicSharedBase {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Possibilita executar uma função quando o componente é inicializado.\n   *\n   * A propriedade aceita os seguintes tipos:\n   * - **String**: Endpoint usado pelo componente para requisição via `POST`.\n   * - **Function**: Método que será executado na inicialização do componente.\n   *\n   * Para os dois tipos de utilização da propriedade espera-se o seguinte retorno:\n   *\n   * ```\n   * {\n   *   value: {\n   *     cnpj: '**************', // altera valor do campo\n   *     updated: (new Date()).toString() // atribui valor ao campo novo\n   *   },\n   *   fields: [\n   *     { property: 'updated', tag: true } // inclui campo novo\n   *   ]\n   * }\n   * ```\n   * > **value**: any = atribui novo valor do model.\n   *\n   * > **fields**: `Array<PoDynamicViewField>` = Lista de campos que deseja alterar as propriedades,\n   * caso enviar um campo a mais será criado um novo campo.\n   *\n   * - Para esconder/remover campos precisa informar no field a propriedade `visible = false`.\n   *\n   */\n  @Input('p-load') load: string | Function;\n\n  service: any;\n  private _componentsSize?: string = undefined;\n  private _initialComponentsSize?: string = undefined;\n  private _fields: Array<PoDynamicViewField> = [];\n  private _showAllValue: boolean = false;\n  private _value = {};\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos componentes no template entre `small` ou `medium`.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Lista de objetos que implementam a interface `PoDynamicView`.\n   *\n   * > Ex: `[ { property: 'age' } ]`\n   *\n   * Regras de tipagem e formatação dos valores exibidos:\n   *\n   * - Caso o *type* informado seja *currency* e não seja informado o *format* o mesmo recebe \"'BRL', 'symbol', '1.2-2'\"\n   * como formato padrão.\n   * - Caso o *type* informado seja *date* e não seja informado o *format* o mesmo recebe 'dd/MM/yyyy' como formato padrão.\n   * - Caso o *type* informado seja *dateTime* e não seja informado o *format* o mesmo recebe 'dd/MM/yyyy HH:mm:ss' como formato padrão.\n   * - Caso o *type* informado seja *number* e não seja informado o *format* o mesmo não será formatado.\n   * - Caso o *type* informado seja *time* e não seja informado o *format* o mesmo recebe 'HH:mm:ss.ffffff' como formato padrão.\n   *\n   * > As propriedades informadas serão exibidas mesmo não contendo valor de referência no objeto da propriedade `p-value`.\n   *\n   * @default `[]`\n   */\n  @Input('p-fields') set fields(fields: Array<PoDynamicViewField>) {\n    this._fields = Array.isArray(fields) ? [...fields] : [];\n  }\n\n  get fields() {\n    return this._fields;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica se exibirá todas as informações contidas dentro do objeto informado na propriedade `p-value`.\n   *\n   * @default `false`\n   */\n  @Input('p-show-all-value') set showAllValue(value: boolean) {\n    this._showAllValue = convertToBoolean(value);\n  }\n\n  get showAllValue() {\n    return this._showAllValue;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Permite a quebra de linha no texto do `p-value`, aplicando-a onde há `\\n`.\n   *\n   * ```\n   * <po-dynamic-view\n   *   [p-value]=\"{ description: 'Primeira linha\\nSegunda linha' }\"\n   *   [p-text-wrap]=\"true\"\n   * ></po-dynamic-view>\n   * ```\n   *\n   * Saída:\n   * ```\n   * Primeira linha\n   * Segunda linha\n   * ```\n   * @default `false`\n   */\n  @Input('p-text-wrap') textWrap: boolean = false;\n\n  /**\n   * @description\n   *\n   * Objeto que será utilizado para exibir as informações dinâmicas, o valor será recuperado através do atributo *property*\n   * dos objetos contidos na propridade `p-fields`.\n   *\n   * > Ex: `{ age: '35' }`\n   */\n  @Input('p-value') set value(value: object) {\n    this._value = value && isTypeof(value, 'object') ? value : {};\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  constructor(\n    private readonly currencyPipe: CurrencyPipe,\n    private readonly datePipe: DatePipe,\n    private readonly decimalPipe: DecimalPipe,\n    private readonly timePipe: PoTimePipe,\n    private readonly titleCasePipe: TitleCasePipe,\n    protected dynamicViewService: PoDynamicViewService,\n    protected comboFilterService: PoComboFilterService,\n    protected multiselectFilterService: PoMultiselectFilterService\n  ) {\n    super();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  protected getFieldOrderRetroactive(position: number, index: number = 1): number {\n    if (position === index) {\n      return position;\n    }\n    return this.fields.findIndex(field => field.order === index) > -1\n      ? this.getFieldOrderRetroactive(position, index + 1)\n      : index;\n  }\n\n  protected getFieldOrder(field: PoDynamicViewField, index: number): number {\n    const position = this.getFieldOrderRetroactive(index + 1);\n    return this.fields.findIndex(e => e.order === position) > -1 ? this.getFieldOrder(field, position) : position;\n  }\n\n  protected getConfiguredFields(useSearchService = true) {\n    const newFields = [];\n\n    this.fields.forEach((field, index) => {\n      field.order = field.order || this.getFieldOrder(field, index);\n\n      if (!PoDynamicUtil.isVisibleField(field)) {\n        return;\n      }\n\n      if (!field.searchService && !field.optionsService) {\n        newFields.push(this.createField(field));\n        return;\n      }\n\n      const hasValue =\n        this.value[field.property]?.length ||\n        (!Array.isArray(this.value[field.property]) && this.value[field.property] && useSearchService) ||\n        field.container;\n\n      if (hasValue) {\n        const _field = this.returnValues({ ...field }, '');\n        newFields.push(_field);\n\n        if (field.searchService) {\n          if (typeof field.searchService === 'object') {\n            this.service = field.searchService as PoDynamicViewService;\n          } else if (typeof field.searchService === 'string') {\n            this.service = this.dynamicViewService;\n            this.service.setConfig(field.searchService);\n          }\n        } else if (field.optionsService) {\n          if (field.optionsMulti) {\n            if (typeof field.optionsService === 'object') {\n              this.service = field.optionsService as PoMultiselectFilterService;\n            } else {\n              this.service = this.multiselectFilterService;\n              this.service.configProperties(\n                field.optionsService,\n                field.fieldLabel || 'label',\n                field.fieldValue || 'value'\n              );\n            }\n          } else {\n            if (typeof field.optionsService === 'object') {\n              this.service = field.optionsService as PoComboFilterService;\n            } else {\n              this.service = this.comboFilterService;\n              this.service.configProperties(\n                field.optionsService,\n                field.fieldLabel || 'label',\n                field.fieldValue || 'value'\n              );\n            }\n          }\n        }\n\n        this.createFieldWithService(field, newFields, _field);\n      }\n    });\n\n    const _sortedField = sortFields(newFields);\n    this.ensureFieldHasContainer(_sortedField);\n\n    return _sortedField;\n  }\n\n  // retorna fields ligado ao value mais os atributos do value que não possuiam fields.\n  protected getMergedFields() {\n    const mergedFields = [...this.getConfiguredFields()];\n\n    this.getValueFields().forEach(valueField => {\n      const fieldIndex = mergedFields.findIndex(field => field.property === valueField.property);\n      const property = valueField.property;\n\n      if (fieldIndex === -1) {\n        mergedFields.push(this.createField({ property }));\n      }\n    });\n\n    return mergedFields;\n  }\n\n  // retorna o objeto value como fields.\n  protected getValueFields() {\n    return Object.keys(this.value).map(property => this.createField({ property }));\n  }\n\n  private createField(field: PoDynamicViewField) {\n    const property = field.property;\n    let value;\n    if (field.isArrayOrObject && this.value[property]) {\n      value = this.transformArrayValue(this.value[property], field);\n    } else if (field.fieldLabel) {\n      value = this.transformFieldLabel(property, field);\n    }\n\n    if (!value) {\n      value = this.transformValue(field.type, this.value[property], field.format);\n    }\n\n    return this.returnValues(field, value);\n  }\n\n  private createFieldWithService(field: PoDynamicViewField, newFields?, oldField?) {\n    const property = field.property;\n\n    this.searchById(this.value[property], field).subscribe(response => {\n      const value = response;\n      const allValues = this.returnValues(field, value);\n      const oldFieldIndex = newFields.indexOf(newFields.find(field => field === oldField));\n      newFields.splice(oldFieldIndex, 1, allValues);\n      sortFields(newFields);\n      this.setContainerFields();\n    });\n  }\n\n  private returnValues(field: PoDynamicViewField, value: any) {\n    const property = field.property;\n    const classesGridColumns = getGridColumnsClasses(\n      field.gridColumns,\n      field.offsetColumns,\n      {\n        smGrid: field.gridSmColumns,\n        mdGrid: field.gridMdColumns,\n        lgGrid: field.gridLgColumns,\n        xlGrid: field.gridXlColumns\n      },\n      {\n        smOffset: field.offsetSmColumns,\n        mdOffset: field.offsetMdColumns,\n        lgOffset: field.offsetLgColumns,\n        xlOffset: field.offsetXlColumns\n      },\n      {\n        smPull: field.gridSmPull,\n        mdPull: field.gridMdPull,\n        lgPull: field.gridLgPull,\n        xlPull: field.gridXlPull\n      }\n    );\n\n    return {\n      property,\n      value,\n      label: this.titleCasePipe.transform(property),\n      cssClass: classesGridColumns,\n      ...field\n    };\n  }\n\n  private searchById(value: any, field: PoDynamicViewField): Observable<any> {\n    if (typeof value === 'string') {\n      value = value.trim();\n    }\n\n    if (value !== '') {\n      if (field.optionsMulti) {\n        return this.service\n          .getObjectsByValues(value, field.params)\n          .pipe(map(res => this.transformArrayValue(res, field)))\n          .pipe(catchError(() => of(null)));\n      } else {\n        return this.service\n          .getObjectByValue(value, field.params)\n          .pipe(map(res => this.transformArrayValue(res, field)))\n          .pipe(catchError(() => of(null)));\n      }\n    } else {\n      return of(null);\n    }\n  }\n\n  private transformArrayValue(valueProperty: any, field: PoDynamicViewField) {\n    const valueArray = Array.isArray(valueProperty) ? valueProperty : [valueProperty];\n    let labels: Array<string>;\n\n    if (Array.isArray(field.format)) {\n      labels = valueArray.map(objectData => this.formatField(objectData, field.format));\n    } else {\n      const arrayWithLabel = valueArray.map(item => ({\n        value: item[field.fieldValue] || item.value,\n        label: item[field.fieldLabel] || item.label\n      }));\n\n      labels = arrayWithLabel.map(optionValue => {\n        if (optionValue.label) {\n          const labelTranformed = this.transformValue(field.type, optionValue.label, field.format);\n          if (field.concatLabelValue && optionValue.value) {\n            return `${labelTranformed} - ${optionValue.value}`;\n          } else {\n            return labelTranformed;\n          }\n        }\n      });\n    }\n\n    if (labels[0] !== undefined && labels.join()) {\n      return labels.join(', ');\n    } else {\n      valueProperty = '';\n      return undefined;\n    }\n  }\n\n  private transformFieldLabel(property: string, field: PoDynamicViewField) {\n    if (field.concatLabelValue && field.fieldLabel && field.fieldValue && !field.isArrayOrObject) {\n      const transformedValue = this.transformValue(field.type, this.value[field.fieldLabel], field.format);\n      return `${transformedValue} - ${this.value[field.fieldValue]}`;\n    }\n\n    if (field.fieldLabel && !field.concatLabelValue && !field.isArrayOrObject) {\n      this.value[property] = this.value[field.fieldLabel];\n    }\n    return undefined;\n  }\n\n  private transformValue(type: string, value, format) {\n    let transformedValue = value;\n\n    switch (type) {\n      case 'currency':\n        transformedValue = this.currencyPipe.transform(value, format || 'BRL', 'symbol', '1.2-2');\n        break;\n      case 'date':\n        transformedValue = this.datePipe.transform(value, format || 'dd/MM/yyyy');\n        break;\n      case 'dateTime':\n        transformedValue = this.datePipe.transform(value, format || 'dd/MM/yyyy HH:mm:ss');\n        break;\n      case 'number':\n        transformedValue = this.decimalPipe.transform(value, format);\n        break;\n      case 'time':\n        transformedValue = this.timePipe.transform(value, format || 'HH:mm:ss.ffffff');\n        break;\n    }\n\n    return transformedValue;\n  }\n\n  private formatField(objectSelected, properties) {\n    let formattedField;\n    if (Array.isArray(properties)) {\n      for (const property of properties) {\n        if (objectSelected && objectSelected[property]) {\n          if (!formattedField) {\n            formattedField = objectSelected[property];\n          } else {\n            formattedField += ' - ' + objectSelected[property];\n          }\n        }\n      }\n    }\n    return formattedField;\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialComponentsSize, PoFieldSize);\n    this._componentsSize = size;\n  }\n}\n","import { Directive, Input } from '@angular/core';\nimport { isValidImageBase64 } from '../../utils/util';\n\ntype PoImageLoading = 'lazy' | 'eager' | 'auto';\n\n/**\n * @description\n *\n * As imagens têm a função de traduzir visualmente ideias específicas ou mensagens complexas, mostrar um produto ou contar uma história, estabelecendo empatia e se conectando com os usuários.\n *\n * #### Boas Práticas\n *\n * O componente image foi projetado para atender os requisitos das Diretrizes de Acessibilidade para Conteúdo Web (WCAG) 2.1. Também foram estruturadas padrões de usabilidade para auxiliar na utilização do componente e garantir uma boa experiência para os usuários. Por isso, é muito importante que, ao aplicar esse componente, o proprietário do conteúdo leve em consideração alguns critérios e práticas:\n * ##### Uso\n * - Ao utilizar imagens, mantenha uma coerência entre elas no produto, de modo que compartilhem um mesmo estilo e intenção entre si.\n * - Utilize imagens que expressem a mensagem e estilo do produto, respeitando as diretrizes e guia da marca.\n * - Ao utilizar fotografias, é recomendável o uso de proporções de aspecto padrão, como 1:1, 3:1, 3:2, 16:9.\n * - Mantenha um ponto focal na imagem, pois isso influencia em como ela se comportará em diferentes formatos. Isso também ajuda a transmitir a mensagem de forma objetiva e consistente.\n *\n * ##### Imagem como plano de fundo\n * - Avalie se é realmente necessário o uso de imagem como plano de fundo e evite sempre que possível, pois pode ocasionar em um baixo contraste entre texto e imagem.\n * - Caso utilize, redobre a atenção na escolha da imagem e certifique-se de que ela está adequada para a leitura do texto e não está sendo apenas um ruído.\n * - Tenha especial atenção em telas menores. Embora seja possível posicionar o texto em uma área mais vazia ou escurecida, o texto e imagem se ajustam aos diferentes espaços, de acordo com o dispositivo. Muitas vezes acaba resultando no comprometimento tanto da leitura do texto e quando na visualização da imagem.\n * - Verifique a taxa de contraste do texto em relação ao fundo. Deve ser suficiente para atender aos padrões de acessibilidade, sendo 4,5:1 para textos acima de 18pt ou bold e 7,1: 1 para textos menores que 18pt.\n * - Se não tiver controle sobre qual imagem será colocada por trás do texto, o recomendado é não utilizar nesse formato.\n *\n * #### Acessibilidade tratada no componente\n * As boas práticas de acessibilidade variam de acordo com tipo da imagem, que podem ser divididas em:\n * - Imagem informativa simples, como por exemplo uma fotografia de um produto.\n * - Imagem complexa, como um gráfico, infográfico ou diagrama.\n * - Imagem decorativa, como um plano de fundo ou uma fotografia que ilustra um assunto, mas não é essencial para compreender a informação.\n */\n@Directive()\nexport class PoImageBaseComponent {\n  isBase64: boolean = false;\n  private _source: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a altura da imagem em *pixels*. Caso não seja definida,\n   * atribui o tamanho da imagem\n   */\n  @Input('p-height') height: number;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Defini o texto alternativo descrevendo a imagem.\n   */\n  @Input('p-alt') alternate: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Fonte da imagem que pode ser um caminho local (`./assets/images/logo-black-small.png`)\n   * ou um servidor externo (`https://po-ui.io/assets/images/logo-black-small.png`).\n   */\n  @Input('p-src') set source(value: string) {\n    if (isValidImageBase64(value)) {\n      this.isBase64 = true;\n    }\n    this._source = value;\n  }\n\n  get source(): string {\n    return this._source;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Defini a prioridade de carregamento da imagem.\n   * > Para as imagens com carregamento prioritátio ativo é necessário incluir\n   * > uma tag link no head do arquivo index.html da sua aplicação.\n   *\n   * ```\n   * <link rel=\"preconnect\" href=\"<url_base_da_imagem>\">\n   * ```\n   *\n   * @default `false`\n   */\n  @Input('p-priority') priority: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Defini o carregamento que pode ser dos tipo:\n   *\n   * — lazy\n   * — eager\n   * — auto\n   *\n   * > Não é permitido definir esta propriedade em conjunto com a propriedade `p-priority`.\n   */\n  @Input('p-loading') loading?: PoImageLoading;\n}\n","import { Component } from '@angular/core';\nimport { PoImageBaseComponent } from './po-image-base.component';\n\n/**\n * @docsExtends PoImageBaseComponent\n *\n * @example\n *\n * <example name=\"po-image-basic\" title=\"PO Image Basic\" >\n *  <file name=\"sample-po-image-basic/sample-po-image-basic.component.html\"> </file>\n *  <file name=\"sample-po-image-basic/sample-po-image-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-image-labs\" title=\"PO Image Labs\" >\n *  <file name=\"sample-po-image-labs/sample-po-image-labs.component.html\"> </file>\n *  <file name=\"sample-po-image-labs/sample-po-image-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-image-travel\" title=\"PO Image Travel\" >\n *  <file name=\"sample-po-image-travel/sample-po-image-travel.component.html\"> </file>\n *  <file name=\"sample-po-image-travel/sample-po-image-travel.component.ts\"> </file>\n * </example>\n *\n */\n\n@Component({\n  selector: 'po-image',\n  templateUrl: './po-image.component.html',\n  standalone: false\n})\nexport class PoImageComponent extends PoImageBaseComponent {}\n","@if (source) {\n  <po-container class=\"po-container-image\" [p-height]=\"height\">\n    @if (!isBase64) {\n      <img\n        class=\"po-image\"\n        [attr.alt]=\"alternate\"\n        [priority]=\"priority\"\n        [loading]=\"loading\"\n        [fill]=\"true\"\n        [ngSrc]=\"source\"\n      />\n    } @else {\n      <img class=\"po-image\" [attr.alt]=\"alternate\" [loading]=\"loading\" [src]=\"source\" />\n    }\n  </po-container>\n}\n","import { CurrencyPipe, DatePipe, DecimalPipe, TitleCasePipe } from '@angular/common';\nimport { Component, OnChanges, OnInit, SimpleChanges, inject } from '@angular/core';\n\nimport { PoTimePipe } from '../../../pipes/po-time/po-time.pipe';\n\nimport { PoDynamicViewField } from './../po-dynamic-view/po-dynamic-view-field.interface';\nimport { PoDynamicViewBaseComponent } from './po-dynamic-view-base.component';\nimport { PoDynamicViewService } from './services/po-dynamic-view.service';\nimport { PoComboFilterService } from '../../po-field/po-combo/po-combo-filter.service';\nimport { PoMultiselectFilterService } from '../../po-field/po-multiselect/po-multiselect-filter.service';\n\n/**\n * @docsExtends PoDynamicViewBaseComponent\n *\n * @example\n *\n * <example name=\"po-dynamic-view-basic\" title=\"PO Dynamic View Basic\">\n *  <file name=\"sample-po-dynamic-view-basic/sample-po-dynamic-view-basic.component.html\"> </file>\n *  <file name=\"sample-po-dynamic-view-basic/sample-po-dynamic-view-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-dynamic-view-employee\" title=\"PO Dynamic View - Employee\">\n *  <file name=\"sample-po-dynamic-view-employee/sample-po-dynamic-view-employee.component.html\"> </file>\n *  <file name=\"sample-po-dynamic-view-employee/sample-po-dynamic-view-employee.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-dynamic-view-employee-on-load\" title=\"PO Dynamic View - Employee on load\">\n *  <file name=\"sample-po-dynamic-view-employee-on-load/sample-po-dynamic-view-employee-on-load.component.html\"> </file>\n *  <file name=\"sample-po-dynamic-view-employee-on-load/sample-po-dynamic-view-employee-on-load.component.ts\"> </file>\n *  <file name=\"sample-po-dynamic-view-employee-on-load/sample-po-dynamic-view-employee-on-load.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-dynamic-view-container\" title=\"PO Dynamic View - Employee on load\">\n *  <file name=\"sample-po-dynamic-view-container/sample-po-dynamic-view-container.component.html\"> </file>\n *  <file name=\"sample-po-dynamic-view-container/sample-po-dynamic-view-container.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-dynamic-view',\n  templateUrl: './po-dynamic-view.component.html',\n  standalone: false\n})\nexport class PoDynamicViewComponent extends PoDynamicViewBaseComponent implements OnChanges, OnInit {\n  initChanges;\n  constructor() {\n    const currencyPipe = inject(CurrencyPipe);\n    const datePipe = inject(DatePipe);\n    const decimalPipe = inject(DecimalPipe);\n    const timePipe = inject(PoTimePipe);\n    const titleCasePipe = inject(TitleCasePipe);\n    const dynamicViewService = inject(PoDynamicViewService);\n    const comboFilterService = inject(PoComboFilterService);\n    const multiselectFilterService = inject(PoMultiselectFilterService);\n\n    super(\n      currencyPipe,\n      datePipe,\n      decimalPipe,\n      timePipe,\n      titleCasePipe,\n      dynamicViewService,\n      comboFilterService,\n      multiselectFilterService\n    );\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (this.load && !this.initChanges) {\n      this.initChanges = false;\n    } else {\n      this.initChanges = true;\n    }\n    if ((changes.fields || changes.value || changes.showAllValue) && this.initChanges) {\n      this.visibleFields = this.getVisibleFields();\n      this.setContainerFields();\n    }\n  }\n\n  ngOnInit() {\n    if (this.load) {\n      this.updateValuesAndFieldsOnLoad().finally(() => {\n        this.setContainerFields();\n      });\n    }\n  }\n\n  setFieldValue(field) {\n    if (field.options) {\n      if (field.optionsMulti) {\n        const selectedOptions = field.options.filter(\n          option => Array.isArray(field.value) && field.value.some(value => value === option.value)\n        );\n        return selectedOptions.length ? selectedOptions.map(option => option.label) : field.value;\n      } else {\n        const selectedOption = field.options.find(option => option.value === field.value);\n        return selectedOption ? selectedOption.label : field.value;\n      }\n    } else if (field.type === 'boolean' && 'booleanTrue' in field && 'booleanFalse' in field) {\n      return field.value ? field.booleanTrue : field.booleanFalse;\n    } else {\n      return field.value;\n    }\n  }\n\n  protected containsLineBreak(value: string): boolean {\n    return value && value.includes('\\n');\n  }\n\n  private async getValuesAndFieldsFromLoad(): Promise<{ value?: any; fields?: Array<PoDynamicViewField> }> {\n    let valueAndFieldsFromLoad;\n\n    if (typeof this.load === 'string') {\n      valueAndFieldsFromLoad = await this.dynamicViewService.onLoad(this.load, this.value);\n    } else if (typeof this.load === 'function') {\n      valueAndFieldsFromLoad = this.load();\n    }\n\n    return valueAndFieldsFromLoad || {};\n  }\n\n  private getVisibleFields() {\n    if (this.showAllValue) {\n      return this.getMergedFields();\n    }\n\n    return this.value && this.fields.length ? this.getConfiguredFields() : this.getValueFields();\n  }\n\n  private setFieldOnLoad(fieldOnLoad: PoDynamicViewField) {\n    const index = this.fields.findIndex(field => field.property === fieldOnLoad.property);\n\n    if (index >= 0) {\n      this.fields[index] = { ...this.fields[index], ...fieldOnLoad };\n    } else {\n      this.fields.push({ ...fieldOnLoad });\n    }\n  }\n\n  private setFieldsOnLoad(fields: Array<PoDynamicViewField>) {\n    if (fields) {\n      fields.forEach(fieldOnLoad => {\n        this.setFieldOnLoad(fieldOnLoad);\n      });\n    }\n  }\n\n  private setValueOnLoad(newValue: any) {\n    Object.assign(this.value, newValue);\n  }\n\n  private async updateValuesAndFieldsOnLoad() {\n    const { value, fields } = await this.getValuesAndFieldsFromLoad();\n\n    this.setValueOnLoad(value);\n    this.setFieldsOnLoad(fields);\n\n    this.visibleFields = this.getVisibleFields();\n    this.initChanges = true;\n  }\n}\n","@if (visibleFields.length) {\n  <div class=\"po-row po-dynamic-view\" [class.po-dynamic]=\"hasContainers\">\n    <ng-container\n      *ngTemplateOutlet=\"\n        hasContainers ? poContentContainer : poContent;\n        context: { $implicit: hasContainers ? containerFields : visibleFields }\n      \"\n    ></ng-container>\n  </div>\n}\n\n<ng-template #poContent let-fields>\n  @for (field of fields; track field) {\n    @if (field?.divider?.trim()) {\n      <po-divider class=\"po-sm-12\" [p-label]=\"field.divider\"> </po-divider>\n    }\n    <ng-container\n      *ngTemplateOutlet=\"\n        !field.tag && !field.image ? poInfo : !field.image ? poTag : poImage;\n        context: { $implicit: field }\n      \"\n    >\n    </ng-container>\n  }\n</ng-template>\n\n<ng-template #poContentContainer let-fields>\n  <po-dynamic-container [p-fields]=\"fields\" [p-content]=\"poContent\"></po-dynamic-container>\n</ng-template>\n\n<ng-template #poInfo let-field>\n  <po-info\n    [ngClass]=\"field.cssClass\"\n    [class.po-info-value-pre]=\"textWrap && containsLineBreak(setFieldValue(field))\"\n    [p-label]=\"field.label\"\n    [p-size]=\"componentsSize\"\n    [p-value]=\"setFieldValue(field)\"\n  >\n  </po-info\n></ng-template>\n\n<ng-template #poTag let-field>\n  <po-tag\n    [ngClass]=\"field.cssClass\"\n    [p-color]=\"field.color\"\n    [p-icon]=\"field.icon\"\n    [p-label]=\"field.label\"\n    [p-text-color]=\"field.textColor\"\n    [p-value]=\"setFieldValue(field)\"\n  >\n  </po-tag>\n</ng-template>\n\n<ng-template #poImage let-field>\n  <po-image [p-alt]=\"field.alt\" [p-height]=\"field.height\" [p-src]=\"field.value\"> </po-image>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { PoImageComponent } from './po-image.component';\nimport { PoContainerModule } from '../po-container';\n\n/**\n * @description\n *\n * Módulo do componente po-image\n */\n@NgModule({\n  declarations: [PoImageComponent],\n  imports: [CommonModule, PoContainerModule, NgOptimizedImage],\n  exports: [PoImageComponent]\n})\nexport class PoImageModule {}\n","import { CommonModule, CurrencyPipe, DatePipe, DecimalPipe, TitleCasePipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\n\nimport { PoDividerModule } from '../po-divider/po-divider.module';\nimport { PoFieldModule } from '../po-field/po-field.module';\nimport { PoInfoModule } from '../po-info/po-info.module';\nimport { PoTagModule } from '../po-tag/po-tag.module';\nimport { PoTimeModule } from '../../pipes/po-time/po-time.module';\nimport { PoTimePipe } from '../../pipes/po-time/po-time.pipe';\n\nimport { PoDynamicFormComponent } from './po-dynamic-form/po-dynamic-form.component';\nimport { PoDynamicFormFieldsComponent } from './po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component';\nimport { PoDynamicFormLoadService } from './po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.service';\nimport { PoDynamicFormValidationService } from './po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.service';\nimport { PoDynamicViewComponent } from './po-dynamic-view/po-dynamic-view.component';\nimport { PoImageModule } from '../po-image';\nimport { PoDynamicViewService } from './po-dynamic-view/services/po-dynamic-view.service';\nimport { PoComboFilterService } from '../po-field/po-combo/po-combo-filter.service';\nimport { PoMultiselectFilterService } from '../po-field/po-multiselect/po-multiselect-filter.service';\nimport { PoContainerModule } from '../po-container';\nimport { PoDynamicContainerComponent } from './po-dynamic-container/po-dynamic-container.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    PoDividerModule,\n    PoInfoModule,\n    PoFieldModule,\n    PoTagModule,\n    PoTimeModule,\n    PoImageModule,\n    PoContainerModule\n  ],\n  declarations: [\n    PoDynamicFormComponent,\n    PoDynamicFormFieldsComponent,\n    PoDynamicViewComponent,\n    PoDynamicContainerComponent\n  ],\n  exports: [PoDynamicFormComponent, PoDynamicViewComponent, PoDynamicContainerComponent],\n  providers: [\n    CurrencyPipe,\n    DatePipe,\n    DecimalPipe,\n    PoTimePipe,\n    TitleCasePipe,\n    PoDynamicFormLoadService,\n    PoDynamicFormValidationService,\n    PoDynamicViewService,\n    PoComboFilterService,\n    PoMultiselectFilterService\n  ]\n})\nexport class PoDynamicModule {}\n","// Padding existente nas bordas do componente\nexport const PoGaugePadding = 24;\n\n// Altura mínima aceita pelo po-gauge.\nexport const poGaugeMinHeight = 300;\n\n// Chamado de coroa circular, refere-se à área entre os círculos externos e internos e que define a espessura do gauge.\nexport const PoGaugeThickness = 16;\n\n// A medida referente ao quanto o ponteiro se sobressai em relação ao gráfico. É necessário esse desconto no viewBox para não haver overflow.\nexport const PoGaugePointerEnd = 4;\n\n// Base default para cálculo da angulação final. Para gauge simples, seria como se fosse 100%.\nexport const poGaugeTotalValueDefault = 100;\n","import { Directive, Input } from '@angular/core';\n\nimport { convertToInt } from '../../utils/util';\nimport { poGaugeMinHeight } from './po-gauge-default-values.constant';\n\nimport { PoGaugeRanges } from './interfaces/po-gauge-ranges.interface';\nimport { PoGaugeOptions } from './interfaces/po-gauge-options.interface';\n\n/**\n * @description\n *\n * > ESSE COMPONENTE ESTÁ DEPRECIADO E SERÁ REMOVIDO NA v22.x.x. Indicamos a utilização do `po-chart` com `type` Gauge.\n *\n * O componente `po-gauge` provê a representação de um valor através de um arco. É muito comum, por exemplo, para demonstrar o desempenho ou progresso de algo.\n * O `po-gauge` possui dois tipos de tratamentos:\n * - É possível demonstrar um dado percentual simples em conjunto com uma descrição resumida em seu interior;\n * - Para um demonstrativo mais elaborado, consegue-se definir alcances em cores, um breve texto descritivo e um ponteiro indicando o valor desejado.\n *\n * #### Guia de uso para Gráficos\n *\n * > Veja nosso [guia de uso para gráficos](/guides/guide-charts) para auxiliar na construção do seu gráfico,\n * informando em qual caso utilizar, o que devemos evitar e boas práticas relacionada a cores.\n */\n@Directive()\nexport abstract class PoGaugeBaseComponent {\n  private _description: string;\n  private _height: number = poGaugeMinHeight;\n  private _ranges: Array<PoGaugeRanges> = [];\n  private _title: string;\n  private _value: number;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a exibição dos valores de `from` - `to` entre parênteses caso haja definição de `p-ranges`.\n   *\n   * @default `false`\n   */\n  @Input('p-show-from-to-legend') showFromToLegend: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a exibição do ponteiro caso haja definição de `p-ranges`.\n   *\n   * @default `true`\n   */\n  @Input('p-show-pointer') showPointer: boolean = true;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com as configurações usadas no `po-gauge`.\n   *\n   * É possível, por exemplo, esconder as funcionalidades do header,\n   * ou habilitar uma legenda com `From` `To` da seguinte forma:\n   *\n   * ```\n   *  chartOptions: PoGaugeOptions = {\n   *    showFromToLegend: true,\n   *    header: {\n   *      hideExpand: true,\n   *    },\n   *  };\n   * ```\n   */\n  @Input('p-options') options: PoGaugeOptions;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o texto que será exibido no gauge.\n   * Há dois posicionamentos para ele:\n   * - Se houver definição para `p-ranges`, o descritivo será exibido no topo do container, ficando acima do gauge;\n   * - Na ausência de `p-ranges`, será incorporado dentro do arco do gauge, e abaixo de `p-value`.\n   *\n   * > Para uma melhor experiência do usuário, é recomendado um descritivo breve e com poucas palavras.\n   * > Indicamos a utilização da nova propriedade `descriptionChart` em `p-options`.\n   */\n  @Input('p-description') set description(value: string) {\n    this._description = value;\n  }\n\n  get description() {\n    return this._description;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a altura do gauge.\n   *\n   * O valor mínimo aceito é 300px.\n   *\n   * @default `300px`\n   */\n  @Input('p-height') set height(value: number) {\n    this._height = this.setGaugeHeight(value);\n  }\n\n  get height(): number {\n    return this._height;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Definição para o alcance de cores. Ao adicionar pelo menos um item na lista,\n   * incorpora-se o ponteiro que assinala o valor passado em `p-value`.\n   * Se o valor de `p-value` for inferior ao mínimo valor definido em `PoGaugeRanges.from`, o domínio mínimo do gauge será `p-value`.\n   * A mesma regra prevalece para valores máximos.\n   */\n  @Input('p-ranges') set ranges(value: Array<PoGaugeRanges>) {\n    this._ranges = Array.isArray(value) ? value : [];\n  }\n\n  get ranges(): Array<PoGaugeRanges> {\n    return this._ranges;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o título do gauge.\n   */\n  @Input('p-title') set title(value: string) {\n    this._title = value;\n  }\n\n  get title() {\n    return this._title;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Valor referente ao valor da série. Seu comportamento segue a seguintes regras:\n   *\n   * - Sem `p-ranges`: Os valores passados para `p-value` e `p-description` serão centralizados no interior do arco.\n   * A base do valor será percentual tendo como base os alcances entre zero e 100%. Se passado um valor superior a 100,\n   * A colorização do gauge será completa e o valor passado será exibido no interior do arco.\n   * - Com `p-ranges`: A descrição será exibida acima do gauge e haverá um ponteiro marcando o valor passado em `p-value`.\n   * Considerando que o alcance em `ranges` é aberto, então a escala de `p-value` será em relação ao menor/maior alcance\n   * absoluto definido em `p-ranges`.\n   * Se passado um `p-value` inferior em relação ao mínimo valor definido em `p-ranges`, o domínio mínimo do gauge partirá de `p-value`.\n   * A mesma regra prevalece para valores máximos.\n   *\n   */\n  @Input('p-value') set value(gaugeValue: number) {\n    if (typeof gaugeValue === 'number' || (typeof gaugeValue === 'string' && (<string>gaugeValue).trim())) {\n      const value = !isNaN(gaugeValue) ? Number(gaugeValue) : undefined;\n\n      this._value = value;\n    } else {\n      this._value = undefined;\n    }\n  }\n\n  get value(): number {\n    return this._value;\n  }\n\n  private setGaugeHeight(height: number): number {\n    const gaugeHeight = convertToInt(height);\n\n    return gaugeHeight && gaugeHeight > poGaugeMinHeight ? gaugeHeight : poGaugeMinHeight;\n  }\n}\n","import { Component, OnChanges, OnInit, SimpleChanges } from '@angular/core';\n\nimport { PoChartSerie } from '../po-chart';\nimport { PoGaugeBaseComponent } from './po-gauge-base.component';\n\n/**\n * @docsExtends PoGaugeBaseComponent\n *\n * @example\n *\n * <example name=\"po-gauge-basic\" title=\"PO Gauge Basic\">\n *  <file name=\"sample-po-gauge-basic/sample-po-gauge-basic.component.html\"> </file>\n *  <file name=\"sample-po-gauge-basic/sample-po-gauge-basic.component.ts\"> </file>\n * </example>\n * <example name=\"po-gauge-labs\" title=\"PO Gauge Labs\">\n *  <file name=\"sample-po-gauge-labs/sample-po-gauge-labs.component.html\"> </file>\n *  <file name=\"sample-po-gauge-labs/sample-po-gauge-labs.component.ts\"> </file>\n * </example>\n * <example name=\"po-gauge-summary\" title=\"PO Gauge Summary\">\n *  <file name=\"sample-po-gauge-summary/sample-po-gauge-summary.component.html\"> </file>\n *  <file name=\"sample-po-gauge-summary/sample-po-gauge-summary.component.ts\"> </file>\n * </example>\n *\n * @deprecated v22.x.x\n * Utilize o `po-chart` com `type=\"gauge\"` como alternativa recomendada.\n */\n@Component({\n  selector: 'po-gauge',\n  templateUrl: './po-gauge.component.html',\n  standalone: false\n})\nexport class PoGaugeComponent extends PoGaugeBaseComponent implements OnChanges, OnInit {\n  series: Array<PoChartSerie> = [];\n  valuesMultiple: number;\n\n  ngOnInit(): void {\n    if (this.options?.showContainerGauge !== false) {\n      this.options = { ...this.options, showContainerGauge: true };\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { description, ranges, value, options } = changes;\n    if (description || options) {\n      this.options = {\n        ...this.options,\n        showContainerGauge: this.options?.showContainerGauge !== false,\n        descriptionChart: this.description || options?.currentValue?.descriptionChart\n      };\n    }\n    if (ranges || value) {\n      if (this.ranges?.length) {\n        this.series = [...this.ranges];\n        this.valuesMultiple = this.value;\n      } else if (value?.currentValue) {\n        this.series = [{ data: this.value }];\n      } else {\n        this.series = [];\n      }\n    }\n  }\n}\n","<po-chart\n  [p-height]=\"height\"\n  [p-options]=\"options\"\n  [p-series]=\"series\"\n  [p-title]=\"title\"\n  [p-type]=\"'gauge'\"\n  [p-value-gauge-multiple]=\"valuesMultiple\"\n></po-chart>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoGaugeComponent } from './po-gauge.component';\n\nimport { PoChartModule } from '../po-chart/po-chart.module';\n\n/**\n * @description\n * Módulo do componente po-gauge.\n */\n@NgModule({\n  imports: [CommonModule, PoChartModule],\n  declarations: [PoGaugeComponent],\n  exports: [PoGaugeComponent]\n})\nexport class PoGaugeModule {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'po-grid-cell-action',\n  templateUrl: './po-grid-cell-action.component.html',\n  standalone: false\n})\nexport class PoGridCellActionComponent {\n  @Input('p-position') position?: string = '';\n\n  @Input('p-value') value?: string;\n\n  constructor() {}\n\n  onKeyDownContent(event) {\n    // ENTER\n    if (event.keyCode === 13) {\n      event.preventDefault();\n    }\n  }\n}\n","<div>\n  <div\n    #contentElement\n    [id]=\"position\"\n    class=\"po-grid-cell-action-content\"\n    tabindex=\"0\"\n    (keydown)=\"onKeyDownContent($event)\"\n  >\n    <span>{{ value || '&nbsp;' }}</span>\n  </div>\n</div>\n","import {\n  Component,\n  Input,\n  ViewChild,\n  ElementRef,\n  ChangeDetectorRef,\n  Output,\n  EventEmitter,\n  inject\n} from '@angular/core';\n\n@Component({\n  selector: 'po-grid-cell',\n  templateUrl: './po-grid-cell.component.html',\n  standalone: false\n})\nexport class PoGridCellComponent {\n  private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n  @Input('p-align') align?: string = 'left';\n\n  @Input('p-freeze') freeze?: boolean = false;\n\n  @Input('p-tab-index') tabIndex?: number = -1;\n\n  @Input('p-position') position?: string = '';\n\n  @Input('p-readonly') readonly?: boolean = false;\n\n  @Input('p-required') required?: boolean = false;\n\n  @Output('p-valueChange') valueChange = new EventEmitter<any>();\n\n  @ViewChild('inputElement') inputElement: ElementRef;\n  @ViewChild('contentElement') contentElement: ElementRef;\n\n  _value: any = '';\n  edit: boolean = false;\n  editValue: string = '';\n\n  private _width: string | number;\n\n  @Input('p-width') set width(value: string | number) {\n    this._width = value;\n\n    if (this.freeze && !this._width) {\n      this._width = 100;\n    }\n  }\n  get width(): string | number {\n    return this._width ? `${this._width}px` : '100%';\n  }\n\n  @Input('p-value') set value(value: any) {\n    this._value = value;\n    this.valueChange.emit(this._value);\n  }\n  get value(): any {\n    return this._value;\n  }\n\n  onKeyDownContent(event: any) {\n    // BACKSPACE / DELETE\n    if (!event.ctrlKey && (event.keyCode === 8 || event.keyCode === 46)) {\n      if (this.readonly) {\n        return;\n      }\n\n      event.preventDefault();\n      this.value = '';\n      return;\n    }\n\n    // ENTER\n    if (event.keyCode === 13) {\n      event.preventDefault();\n      this.onEditCell(this.value);\n      return;\n    }\n\n    // A..Z - 0..9\n    if ((event.keyCode >= 65 && event.keyCode <= 90) || (event.keyCode >= 48 && event.keyCode <= 57)) {\n      event.preventDefault();\n      this.onEditCell(event.key);\n    }\n  }\n\n  dblclick(event: any) {\n    event.preventDefault();\n\n    this.onEditCell(this.value);\n  }\n\n  onBlurInput() {\n    this.value = this.editValue;\n    this.editValue = undefined;\n    this.edit = false;\n  }\n\n  onKeyDownInput(event: any) {\n    // ENTER\n    if (event.keyCode === 13) {\n      event.target.blur();\n      this.changeDetectorRef.detectChanges();\n      this.contentElement.nativeElement.focus();\n    }\n\n    // ESCAPE\n    if (event.keyCode === 27) {\n      this.editValue = undefined;\n      this.edit = false;\n      this.changeDetectorRef.detectChanges();\n      this.contentElement.nativeElement.focus();\n      event.stopPropagation();\n    }\n  }\n\n  private onEditCell(value: any) {\n    if (this.readonly) {\n      return;\n    }\n\n    this.editValue = value;\n    this.edit = true;\n    this.changeDetectorRef.detectChanges();\n    this.inputElement.nativeElement.focus();\n  }\n}\n","<div>\n  @if (edit) {\n    <input\n      [id]=\"position\"\n      #inputElement\n      class=\"po-grid-cell-input\"\n      [(ngModel)]=\"editValue\"\n      (keydown.arrowup)=\"$event.stopPropagation()\"\n      (keydown.arrowdown)=\"$event.stopPropagation()\"\n      (keydown.arrowleft)=\"$event.stopPropagation()\"\n      (keydown.arrowright)=\"$event.stopPropagation()\"\n      (keydown)=\"onKeyDownInput($event)\"\n      (blur)=\"onBlurInput()\"\n    />\n  } @else {\n    <div\n      #contentElement\n      [id]=\"position\"\n      class=\"po-grid-cell-content po-grid-cell-{{ align }} {{ !value && required ? 'po-grid-cell-required' : '' }}\"\n      (keydown)=\"onKeyDownContent($event)\"\n      tabindex=\"{{ readonly ? -1 : 0 }}\"\n      (dblclick)=\"dblclick($event)\"\n    >\n      <span>{{ value || '&nbsp;' }}</span>\n    </div>\n  }\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'po-grid-head',\n  templateUrl: './po-grid-head.component.html',\n  standalone: false\n})\nexport class PoGridHeadComponent {\n  @Input('p-align') align?: string = 'left';\n\n  @Input('p-freeze') boolean?: boolean = false;\n\n  @Input('p-position') position?: string = '';\n\n  @Input('p-tab-index') tabIndex?: number = -1;\n\n  @Input('p-title') title?: string;\n\n  private _width: string | number;\n\n  @Input('p-width') set width(value: string | number) {\n    this._width = value;\n  }\n  get width(): string | number {\n    return this._width ? `${this._width}px` : '100%';\n  }\n}\n","<div>\n  <div [id]=\"position\" class=\"po-grid-head-content po-grid-head-{{ align }}\" tabindex=\"{{ title ? 0 : -1 }}\">\n    <span>{{ title || '&nbsp;' }}</span>\n  </div>\n</div>\n","import {\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Input,\n  OnDestroy,\n  Renderer2,\n  ViewChild,\n  inject\n} from '@angular/core';\n\nimport { PoGridRowActions } from './po-grid-row-actions.interface';\n\n/**\n * @description\n *\n * > Componente em desenvolvimento, podendo haver BREAKING CHANGES nas próximas versões.\n *\n * Componente grid.\n *\n * Ações / atalhos:\n *\n * - ARROW-UP: Navega para celula superior / Na ultima linha adiciona uma linha em branco no grid;\n * - ARROW-DOWN: Navega para celula inferior;\n * - ARROW-RIGHT: Navega para celula direita;\n * - ARROW-LEFT: Navega para celula esquerda;\n * - TAB: Navega para próxima celula;\n * - SHIFT+TAB: Navega para celula anterior;\n * - CTRL+DEL: Remove linha;\n * - DEL/BACKSPACE: Limpa celula;\n * - ENTER: Edita linha com valor atual/Confirma edição da celula;\n * - DOUBLE-CLICK: Edita linha com valor atual;\n * - ESC: Cancela edição da celula / Cancela inserção de linhas em branco;\n * - A..Z/0..9: Inicia edição com valor em branco.\n *\n * @example\n *\n * <example name=\"po-grid-basic\" title=\"PO Grid Basic\">\n *  <file name=\"sample-po-grid-basic/sample-po-grid-basic.component.html\"> </file>\n *  <file name=\"sample-po-grid-basic/sample-po-grid-basic.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-grid',\n  templateUrl: './po-grid.component.html',\n  standalone: false\n})\nexport class PoGridComponent implements OnDestroy {\n  private readonly changeDetectorRef = inject(ChangeDetectorRef);\n  private readonly elRef = inject(ElementRef);\n\n  @ViewChild('table', { static: true }) tableElement: ElementRef;\n  @ViewChild('wrapper', { static: true }) tableWrapper: ElementRef;\n\n  /**\n   * @description\n   *\n   * Ações disparadas quando uma linha do grid é manipulada.\n   */\n  @Input('p-row-actions') rowActions: PoGridRowActions = {};\n\n  /**\n   * Lista com os dados que serão exibidos no grid.\n   */\n  @Input('p-data') data: Array<any> = [];\n\n  lastCell: string = '0-0';\n  lastRow: number = 0;\n  lastColumn: number = 0;\n  currencyCell: string = '0-0';\n  currencyRow: number = 0;\n  currencyColumn: number = 0;\n  currencyObj: any;\n\n  logger = false;\n\n  width = '100%';\n  widporeeze = 0;\n  widthActions = 0;\n\n  private readonly resizeListener: () => void;\n  private timeoutResize;\n\n  private _columns = [];\n\n  /**\n   * Colunas exibidas no grid.\n   */\n  @Input('p-columns') set columns(value: Array<any>) {\n    this._columns = [...value];\n\n    this._columns.forEach(column => {\n      column.label = column.label || column.property;\n\n      if (column.freeze === true) {\n        column.cssWidth = `${column.width || 100}px`;\n      } else {\n        column.cssWidth = column.width ? `${column.width}px` : '100%';\n      }\n    });\n  }\n  get columns(): Array<any> {\n    return this._columns.filter(column => column.freeze !== true && column.action !== true);\n  }\n\n  constructor() {\n    const renderer = inject(Renderer2);\n\n    this.debounceResize();\n\n    this.resizeListener = renderer.listen('window', 'resize', (event: any) => {\n      this.debounceResize();\n    });\n  }\n\n  ngOnDestroy() {\n    if (this.resizeListener) {\n      this.resizeListener();\n    }\n  }\n\n  get freezeColumns() {\n    const freezeColumns = this._columns.filter(column => column.freeze === true);\n\n    this.widporeeze = freezeColumns.reduce((prev, current) => prev + (current.width || 100), 0);\n\n    return freezeColumns;\n  }\n\n  get actionColumns() {\n    const actionsColumns = this._columns.filter(column => column.action === true);\n\n    this.widthActions = actionsColumns.length > 0 ? 56 : 0;\n\n    return actionsColumns;\n  }\n\n  cancelRow(event: any, row: any) {\n    const el = this.getEventPath(event).find(element => element.id);\n\n    if (!el) {\n      return;\n    }\n\n    const [x] = el.id.split('-');\n\n    if (this.isEmptyRow(x)) {\n      if (!this.removeRow(event, row)) {\n        return;\n      }\n\n      this.currencyObj = Object.assign({}, this.data[this.currencyRow - 1]);\n    } else {\n      this.data[+x - 1] = Object.assign({}, this.currencyObj);\n      setTimeout(() => this.selectCell(this.currencyRow, this.currencyColumn));\n    }\n  }\n\n  removeRow(event: any, row: any): boolean {\n    if (this.rowActions.beforeRemove && !this.rowActions.beforeRemove(Object.assign({}, row))) {\n      return false;\n    }\n\n    const index = this.data.indexOf(row);\n\n    this.data.splice(index, 1);\n\n    this.changeDetectorRef.detectChanges();\n\n    if (this.data.length === 0 || index === this.data.length) {\n      this.selectCell(this.currencyRow - 1, this.currencyColumn);\n    } else {\n      this.selectCell(this.currencyRow, this.currencyColumn);\n    }\n\n    return true;\n  }\n\n  tableKeydown(event: any, direction: string) {\n    let [row, col] = event.target.id.split('-');\n    row = +row;\n    col = +col;\n    let prow = +row;\n    let pcol = +col;\n\n    if (direction === 'down') {\n      if (row <= this.data.length) {\n        prow++;\n      }\n\n      if (row === this.data.length) {\n        if (row === 0 || !this.isEmptyRow(row)) {\n          if (this.saveRow(row)) {\n            if (!this.insertRow()) {\n              return;\n            }\n          } else {\n            return;\n          }\n        } else {\n          prow--;\n        }\n      }\n    } else if (direction === 'up' && row > 0) {\n      prow--;\n    } else if (direction === 'left' && col > 0) {\n      pcol--;\n    } else if (direction === 'right' && col < this._columns.length - 1) {\n      pcol++;\n    } else if (direction === 'next') {\n      if (col < this._columns.length - 1) {\n        pcol++;\n        event.preventDefault();\n      } else if (row < this.data.length) {\n        pcol = 0;\n        prow++;\n        event.preventDefault();\n      }\n    } else if (direction === 'prior') {\n      if (col > 0) {\n        pcol--;\n        event.preventDefault();\n      } else if (row > 0) {\n        pcol = this._columns.length - 1;\n        prow--;\n        event.preventDefault();\n      }\n    }\n\n    if (this.currencyCell === `${prow}-${pcol}`) {\n      return;\n    }\n\n    if (prow !== this.currencyRow && row > 0 && this.data.length >= row) {\n      if (!this.isEmptyRow(row)) {\n        if (!this.saveRow(row)) {\n          return;\n        }\n      } else {\n        if (!this.removeRow(event, row)) {\n          return;\n        }\n      }\n    }\n\n    if (this.currencyRow !== prow) {\n      this.currencyObj = Object.assign({}, this.data[prow - 1]);\n    }\n\n    this.lastCell = event.target.id;\n    this.lastRow = row;\n    this.lastColumn = col;\n\n    this.selectCell(prow, pcol);\n  }\n\n  tableClick(event: any) {\n    const el = this.getEventPath(event).find(element => element.id);\n\n    if (!el) {\n      this.selectCell(this.currencyRow, this.currencyColumn);\n      return;\n    }\n\n    if (this.currencyCell === el.id) {\n      return;\n    }\n\n    const [row, col] = el.id.split('-');\n    const prow = +row;\n    const pcol = +col;\n\n    if (prow !== this.currencyRow) {\n      if (this.currencyRow > 0) {\n        if (!this.isEmptyRow(this.currencyRow)) {\n          if (!this.saveRow(this.currencyRow)) {\n            this.selectCell(this.currencyRow, this.currencyColumn);\n            return;\n          }\n        } else {\n          if (!this.removeRow(event, row)) {\n            return;\n          }\n        }\n      }\n\n      this.currencyObj = Object.assign({}, this.data[prow - 1]);\n    }\n\n    this.lastCell = this.currencyCell;\n    this.lastRow = this.currencyRow;\n    this.lastColumn = this.currencyColumn;\n\n    this.currencyCell = el.id;\n    this.currencyRow = prow;\n    this.currencyColumn = pcol;\n  }\n\n  saveRow(row: number): boolean {\n    const obj = this.data[row - 1];\n\n    if (!Object.keys(obj).some(prop => obj[prop] !== this.currencyObj[prop])) {\n      return true;\n    }\n\n    if (this.rowActions.beforeSave && !this.rowActions.beforeSave(obj, this.currencyObj)) {\n      return false;\n    }\n\n    const requireds = [];\n\n    this.columns.forEach(column => {\n      if (column.required === true && !obj[column.property]) {\n        requireds.push(column.property);\n      }\n    });\n\n    return requireds.length === 0;\n  }\n\n  insertRow() {\n    const obj = {};\n\n    if (this.rowActions.beforeInsert && !this.rowActions.beforeInsert(obj)) {\n      return false;\n    }\n\n    this.data.push(obj);\n    this.changeDetectorRef.detectChanges();\n\n    return true;\n  }\n\n  isEmptyRow(row: number) {\n    const obj = this.data[row - 1];\n\n    if (!obj) {\n      // title\n      return false;\n    }\n\n    const filled = Object.keys(obj).some(property => obj[property]);\n\n    return !filled;\n  }\n\n  selectCell(row: number, col: number) {\n    const nextCell = this.elRef.nativeElement.querySelector(`[id='${row}-${col}']`);\n\n    if (nextCell) {\n      this.currencyCell = `${row}-${col}`;\n      this.currencyRow = row;\n      this.currencyColumn = col;\n      nextCell.focus();\n    }\n  }\n\n  private debounceResize() {\n    clearTimeout(this.timeoutResize);\n\n    this.timeoutResize = setTimeout(() => {\n      const widthTableWrapper = this.tableWrapper.nativeElement.offsetWidth;\n      this.width = `${widthTableWrapper - (this.widporeeze + 8) - this.widthActions}px`;\n    }, 100);\n  }\n\n  private getEventPath(event) {\n    // firefox do not have support to event.path\n    return event.path || event.composedPath();\n  }\n}\n","<div class=\"po-grid-wrapper po-grid-row-wrapper\" #wrapper>\n  @if (logger) {\n    <div>\n      lastCell: {{ lastCell }} | currencyCell: {{ currencyCell }} <br />\n      lastRow: {{ lastRow }} | currencyRow: {{ currencyRow }} <br />\n      lastColumn: {{ lastColumn }} | currencyColumn: {{ currencyColumn }} <br />\n      <hr />\n      currencyObj: {{ currencyObj | json }}\n      <hr />\n    </div>\n  }\n\n  <div class=\"po-grid\">\n    <div class=\"po-grid-body\">\n      <div\n        class=\"po-grid-row\"\n        #table\n        (keydown.arrowup)=\"tableKeydown($event, 'up')\"\n        (keydown.arrowdown)=\"tableKeydown($event, 'down')\"\n        (keydown.arrowleft)=\"tableKeydown($event, 'left')\"\n        (keydown.arrowright)=\"tableKeydown($event, 'right')\"\n        (keydown.tab)=\"tableKeydown($event, 'next')\"\n        (keydown.shift.tab)=\"tableKeydown($event, 'prior')\"\n        (click)=\"tableClick($event)\"\n        (contextmenu)=\"tableClick($event)\"\n        (dblclick)=\"tableClick($event)\"\n      >\n        @if (freezeColumns.length > 0) {\n          <div class=\"po-grid-cell po-grid-cell-freeze\">\n            <ng-container *ngTemplateOutlet=\"divFreezeColumns\"></ng-container>\n          </div>\n        }\n\n        <div\n          class=\"po-grid-cell po-grid-cell-normal\"\n          [style.width]=\"width\"\n          [style.max-width]=\"width\"\n          [style.min-width]=\"width\"\n        >\n          <ng-container *ngTemplateOutlet=\"divColumns\"></ng-container>\n        </div>\n\n        @if (actionColumns.length > 0) {\n          <div class=\"po-grid-cell po-grid-cell-action\">\n            <ng-container *ngTemplateOutlet=\"divActionColumns\"></ng-container>\n          </div>\n        }\n      </div>\n    </div>\n  </div>\n</div>\n\n<!-- Coluna com as colunas congeladas -->\n<ng-template #divFreezeColumns>\n  <div class=\"po-grid po-grid-freeze\">\n    <div class=\"po-grid-header-group\">\n      <div class=\"po-grid-row\">\n        @for (column of freezeColumns; track column; let i = $index) {\n          <po-grid-head\n            class=\"po-grid-title\"\n            [style.width]=\"column.cssWidth\"\n            [style.max-width]=\"column.cssWidth\"\n            [style.min-width]=\"column.cssWidth\"\n            p-freeze=\"true\"\n            p-position=\"{{ '0-' + i }}\"\n            [p-width]=\"column.width\"\n            [p-align]=\"column.align\"\n            [p-title]=\"column.label\"\n          >\n          </po-grid-head>\n        }\n      </div>\n    </div>\n\n    <div class=\"po-grid-body\">\n      @for (row of data; track row; let j = $index) {\n        <div\n          class=\"po-grid-row\"\n          (keydown.control.delete)=\"removeRow($event, row)\"\n          (keydown.esc)=\"cancelRow($event, row)\"\n        >\n          @for (column of freezeColumns; track column; let i = $index) {\n            <po-grid-cell\n              class=\"po-grid-cell\"\n              [style.width]=\"column.cssWidth\"\n              [style.max-width]=\"column.cssWidth\"\n              [style.min-width]=\"column.cssWidth\"\n              p-freeze=\"true\"\n              [p-align]=\"column.align\"\n              [p-readonly]=\"column.readonly\"\n              [p-required]=\"column.required\"\n              p-position=\"{{ j + 1 + '-' + i }}\"\n              [p-width]=\"column.width\"\n              [(p-value)]=\"row[column.property]\"\n            >\n            </po-grid-cell>\n          }\n        </div>\n      }\n    </div>\n  </div>\n</ng-template>\n<!-- FIM: Coluna com as colunas congeladas -->\n\n<!-- Coluna com as colunas nornais -->\n<ng-template #divColumns>\n  <div class=\"po-grid po-grid-normal\">\n    <div class=\"po-grid-header-group\">\n      <div class=\"po-grid-row\">\n        @for (column of columns; track column; let i = $index) {\n          <po-grid-head\n            class=\"po-grid-title\"\n            [style.width]=\"column.cssWidth\"\n            [style.max-width]=\"column.cssWidth\"\n            [style.min-width]=\"column.cssWidth\"\n            [p-align]=\"column.align\"\n            p-position=\"{{ '0-' + (i + freezeColumns.length) }}\"\n            [p-title]=\"column.label\"\n            [p-width]=\"column.width\"\n          >\n          </po-grid-head>\n        }\n      </div>\n    </div>\n\n    <div class=\"po-grid-body\">\n      @for (row of data; track row; let j = $index) {\n        <div\n          class=\"po-grid-row\"\n          (keydown.control.delete)=\"removeRow($event, row)\"\n          (keydown.esc)=\"cancelRow($event, row)\"\n        >\n          @for (column of columns; track column; let i = $index) {\n            <po-grid-cell\n              class=\"po-grid-cell\"\n              [style.width]=\"column.cssWidth\"\n              [style.max-width]=\"column.cssWidth\"\n              [style.min-width]=\"column.cssWidth\"\n              [p-align]=\"column.align\"\n              [p-readonly]=\"column.readonly\"\n              [p-required]=\"column.required\"\n              p-position=\"{{ j + 1 + '-' + (i + freezeColumns.length) }}\"\n              [(p-value)]=\"row[column.property]\"\n              [p-width]=\"column.width\"\n            >\n            </po-grid-cell>\n          }\n        </div>\n      }\n    </div>\n  </div>\n</ng-template>\n<!-- FIM: Coluna com as colunas nornais -->\n\n<!-- Coluna com as colunas de ação -->\n<ng-template #divActionColumns>\n  <div class=\"po-grid po-grid-actions\">\n    <div class=\"po-grid-header-group\">\n      <div class=\"po-grid-row\">\n        @for (column of actionColumns; track column; let i = $index) {\n          <po-grid-head\n            class=\"po-grid-title\"\n            p-position=\"{{ '0-' + (i + freezeColumns.length + columns.length) }}\"\n            [p-title]=\"column.label\"\n            [p-align]=\"column.align\"\n          >\n          </po-grid-head>\n        }\n      </div>\n    </div>\n\n    <div class=\"po-grid-body\">\n      @for (row of data; track row; let j = $index) {\n        <div\n          class=\"po-grid-row\"\n          (keydown.control.delete)=\"removeRow($event, row)\"\n          (keydown.esc)=\"cancelRow($event, row)\"\n        >\n          @for (column of actionColumns; track column; let i = $index) {\n            <po-grid-cell-action\n              class=\"po-grid-cell\"\n              p-position=\"{{ j + 1 + '-' + (i + freezeColumns.length + columns.length) }}\"\n              [p-value]=\"row[column.property]\"\n            >\n            </po-grid-cell-action>\n          }\n        </div>\n      }\n    </div>\n  </div>\n</ng-template>\n<!-- FIM: Coluna com as colunas de ação -->\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\n\nimport { PoFieldModule } from './../../components/po-field/po-field.module';\n\nimport { PoGridCellActionComponent } from './po-grid-cell-action/po-grid-cell-action.component';\nimport { PoGridCellComponent } from './po-grid-cell/po-grid-cell.component';\nimport { PoGridComponent } from './po-grid.component';\nimport { PoGridHeadComponent } from './po-grid-head/po-grid-head.component';\n\n/**\n * @description\n *\n * Módulo do componente po-grid.\n */\n@NgModule({\n  imports: [CommonModule, FormsModule, PoFieldModule],\n  declarations: [PoGridCellActionComponent, PoGridCellComponent, PoGridComponent, PoGridHeadComponent],\n  exports: [PoGridComponent]\n})\nexport class PoGridModule {}\n","import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\n\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { poLocaleDefault } from '../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from '../../utils/util';\nimport { PoListViewAction } from './interfaces/po-list-view-action.interface';\nimport { PoListViewLiterals } from './interfaces/po-list-view-literals.interface';\n\nexport const poListViewLiteralsDefault = {\n  en: <PoListViewLiterals>{\n    hideDetails: 'Hide details',\n    loadMoreData: 'Load more data',\n    noData: 'No data found',\n    selectAll: 'Select all',\n    showDetails: 'Show details'\n  },\n  es: <PoListViewLiterals>{\n    hideDetails: 'Ocultar detalles',\n    loadMoreData: 'Cargar más resultados',\n    noData: 'Datos no encontrados',\n    selectAll: 'Seleccionar todos',\n    showDetails: 'Mostrar detalles'\n  },\n  pt: <PoListViewLiterals>{\n    hideDetails: 'Ocultar detalhes',\n    loadMoreData: 'Carregar mais resultados',\n    noData: 'Nenhum dado encontrado',\n    selectAll: 'Selecionar todos',\n    showDetails: 'Exibir detalhes'\n  },\n  ru: <PoListViewLiterals>{\n    hideDetails: 'Скрыть детали',\n    loadMoreData: 'Загрузить больше результатов',\n    noData: 'Данные не найдены',\n    selectAll: 'Выбрать все',\n    showDetails: 'Посмотреть детали'\n  }\n};\n\n/**\n * @description\n *\n * Componente de lista que recebe um array de objetos e renderiza de forma dinâmica os dados de\n * acordo com a necessidade de cada tela e deve ser utilizado em conjunto com as diretivas de *templates*\n *  **[p-list-view-content-template](/documentation/po-list-view-content-template)** e\n * **[p-list-view-detail-template](/documentation/po-list-view-detail-template)**.\n *\n * O componente disponibiliza uma área específica para exibição informações adicionais,\n * através da diretiva **[p-list-view-detail-template](/documentation/po-list-view-detail-template)**.\n */\n@Directive()\nexport class PoListViewBaseComponent {\n  /** Recebe uma propriedade que será utilizada para recuperar o valor do objeto que será usado como link para o título. */\n  @Input('p-property-link') propertyLink?: string;\n\n  /** Recebe uma propriedade que será utilizada para recuperar o valor do objeto que será exibido como o título de cada item. */\n  @Input('p-property-title') propertyTitle?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Recebe uma ação, que será executada quando clicar no botão \"Carregar mais resultados\".\n   *\n   * > Caso nenhuma ação for definida o mesmo não ficará visível.\n   */\n  @Output('p-show-more') showMore: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Ação que será executada ao clicar no título.\n   *\n   * Ao ser disparado, o método inserido na ação irá receber como parâmetro o item da lista clicado.\n   */\n  @Output('p-title-action') titleAction: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Ação que será executada ao clicar no botão exibir detalhes.\n   *\n   * Ao ser disparado, o método passa como parâmetros os detalhes que serão exibidos.\n   */\n  @Output('p-show-detail') showDetail: EventEmitter<any> = new EventEmitter<any>();\n\n  popupTarget: any;\n  selectAll: boolean = false;\n  showHeader: boolean = false;\n\n  private _actions: Array<PoListViewAction>;\n  private _componentsSize: string = undefined;\n  private _initialComponentsSize: string = undefined;\n  private _height: number;\n  private _hideSelectAll: boolean;\n  private _items: Array<any>;\n  private _literals: PoListViewLiterals;\n  private _select: boolean;\n  private _showMoreDisabled: boolean;\n  private readonly language: string = poLocaleDefault;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Lista de ações que serão exibidas no componente.\n   */\n  @Input('p-actions') set actions(value: Array<PoListViewAction>) {\n    this._actions = Array.isArray(value) ? value : [];\n  }\n\n  get actions() {\n    return this._actions;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos componentes de formulário no template:\n   * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n   * - `medium`: aplica a medida medium de cada componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a altura do `po-list-view` em *pixels*.\n   */\n  @Input('p-height') set height(height: number) {\n    this._height = height;\n  }\n\n  get height() {\n    return this._height;\n  }\n\n  /**\n   * @description\n   *\n   * Esconde o *checkbox* para seleção de todos os itens.\n   *\n   * @default `false`\n   */\n  @Input('p-hide-select-all') set hideSelectAll(hideSelectAll: boolean) {\n    this._hideSelectAll = convertToBoolean(hideSelectAll);\n    this.showMainHeader();\n  }\n\n  get hideSelectAll() {\n    return this._hideSelectAll;\n  }\n\n  /** Lista de itens que serão exibidos no componente. */\n  @Input('p-items') set items(value: Array<any>) {\n    this._items = Array.isArray(value) ? value : [];\n  }\n\n  get items() {\n    return this._items;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com as literais usadas no `po-list-view`.\n   *\n   * Existem duas maneiras de customizar o componente, passando um objeto com todas as literais disponíveis:\n   *\n   * ```\n   *  const customLiterals: PoListViewLiterals = {\n   *    hideDetail: 'Ocultar detalhes completamente',\n   *    loadMoreData: 'Mais dados',\n   *    showDetail: 'Mostrar mais detalhes',\n   *    selectAll: 'Selecionar todos os itens'\n   *  };\n   * ```\n   *\n   * Ou passando apenas as literais que deseja customizar:\n   *\n   * ```\n   *  const customLiterals: PoListViewLiterals = {\n   *    showDetail: 'Mostrar mais detalhes'\n   *  };\n   * ```\n   *\n   * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n   *\n   * ```\n   * <po-list-view\n   *   [p-literals]=\"customLiterals\">\n   * </po-list-view>\n   * ```\n   *\n   * > O objeto padrão de literais será traduzido de acordo com o idioma do\n   * [`PoI18nService`](/documentation/po-i18n) ou do browser.\n   */\n  @Input('p-literals') set literals(value: PoListViewLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poListViewLiteralsDefault[poLocaleDefault],\n        ...poListViewLiteralsDefault[this.language],\n        ...value\n      };\n    } else {\n      this._literals = poListViewLiteralsDefault[this.language];\n    }\n  }\n\n  get literals() {\n    return this._literals || poListViewLiteralsDefault[this.language];\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita um *checkbox* para cada item da lista. Todos os items possuem a propriedade dinâmica `$selected` para identificar se o\n   * item está selecionado, por exemplo:\n   *\n   * ```\n   *  item.$selected\n   *\n   *  // ou\n   *\n   *  item['$selected']\n   * ```\n   *\n   * @default `false`\n   */\n  @Input('p-select') set select(select: boolean) {\n    this._select = convertToBoolean(select);\n    this.showMainHeader();\n  }\n\n  get select() {\n    return this._select;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Indica que o botão `Carregar Mais Resultados` será desabilitado.\n   */\n  @Input('p-show-more-disabled') set showMoreDisabled(value: boolean) {\n    this._showMoreDisabled = convertToBoolean(value);\n  }\n\n  get showMoreDisabled(): boolean {\n    return this._showMoreDisabled;\n  }\n\n  constructor(languageService: PoLanguageService) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  onClickAction(listViewAction: PoListViewAction, item) {\n    const cleanItem = this.deleteInternalAttrs(item);\n    if (listViewAction.action) {\n      listViewAction.action(cleanItem);\n    }\n  }\n\n  onShowMore(): void {\n    this.showMore.emit();\n  }\n\n  runTitleAction(listItem: any) {\n    const itemWithPublicProperties = this.deleteInternalAttrs(listItem);\n    this.titleAction.emit(itemWithPublicProperties);\n  }\n\n  selectAllListItems() {\n    if (!this.hideSelectAll) {\n      this.selectAll = !this.selectAll;\n\n      this.items.forEach(item => {\n        item.$selected = this.selectAll;\n      });\n    }\n  }\n\n  selectListItem(row: any) {\n    row.$selected = !row.$selected;\n\n    this.selectAll = this.checkIfItemsAreSelected(this.items);\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialComponentsSize, PoFieldSize);\n    this._componentsSize = size;\n  }\n\n  private deleteInternalAttrs(item) {\n    const itemCopy = item ? { ...item } : undefined;\n\n    for (const key in itemCopy) {\n      if (itemCopy.hasOwnProperty(key) && key.startsWith('$')) {\n        delete itemCopy[key];\n      }\n    }\n\n    return itemCopy;\n  }\n\n  private checkIfItemsAreSelected(items: Array<any>): boolean {\n    const someCheckedOrIndeterminate = item => item.$selected || item.$selected === null;\n    const everyChecked = item => item.$selected;\n\n    if (items.every(everyChecked)) {\n      return true;\n    }\n\n    if (items.some(someCheckedOrIndeterminate)) {\n      return null;\n    }\n\n    return false;\n  }\n\n  private showMainHeader() {\n    this.showHeader = !!(this.select && !this.hideSelectAll && this.items && this.items.length);\n  }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n/**\n * @usedBy PoListViewComponent\n *\n * @description\n *\n * Esta diretiva permite que sejam apresentadas informações essenciais de cada item.\n *\n * Deve-se utilizar como parâmetro a referência do item e/ou índice, sendo por padrão o item.\n *  - Item: `item` determina o item da linha corrente.\n *  - Índice: `index` determina o índice da linha corrente.\n *\n * Esta diretiva pode ser usada de duas formas: explícita ou *syntax sugar*. Veja a seguir ambos, respectivamente:\n *\n * ```\n * ...\n * <po-list-view\n *   p-property-title=\"name\"\n *   [p-items]=\"[{id: 1, name: \"Register\", email: register@po-ui.com}]\">\n *\n *   <ng-template p-list-view-content-template let-item let-code=\"index\">\n *     <div class=\"po-row\">\n *       <po-info class=\"po-md-6\" p-label=\"Code\" [p-value]=\"code\"></po-info>\n *       <po-info class=\"po-md-6\" p-label=\"Email\" [p-value]=\"item.email\"></po-info>\n *     </div>\n *   </ng-template>\n *\n * </po-list-view>\n *\n * ...\n * ```\n *\n * ```\n * ...\n * <po-list-view\n *    p-property-title=\"name\"\n *    [p-items]=\"[{id: 1, name: \"Register\", email: register@po-ui.com}]\">\n *\n *    <div *p-list-view-content-template=\"let item, let i=index\" class=\"po-row\">\n *      <po-info class=\"po-md-12\" p-label=\"Email\" [p-value]=\"item.email\"></po-info>\n *    </div>\n * </po-list-view>\n * ...\n *\n * ```\n *\n * A diretiva **p-list-view-content-template**, possibilita também alterar o título dos itens. Para isto,\n * é necessário atribuir a referência da função que faz a alteração, à propriedade `p-title`,\n * a mesma deve retornar um valor do tipo *string*. Veja o exemplo a seguir:\n *\n * ```\n * ...\n * @Component({\n *    selector: 'app-root',\n *    template: `\n *      ...\n *      <po-list-view\n *        [p-items]=\"items\">\n *        <ng-template p-list-view-content-template let-item [p-title]=\"customTitle\">\n *          <div class=\"po-row\">\n *            <po-info class=\"po-md-12\" p-label=\"Customer\" [p-value]=\"item.customer\"></po-info>\n *          </div>\n *        </ng-template>\n *      ...\n *    `\n * })\n * export class AppComponent {\n *    public items = [{\n *      code: 1200,\n *      product: 'Rice',\n *      customer: 'Supermarket 1',\n *    }, {\n *      code: 1355,\n *      product: 'Bean',\n *      customer: 'Supermarket 2'\n *    }];\n *\n *    customTitle(item) {\n *      return `${item.code} - ${item.product}`;\n *    }\n * }\n * ```\n */\n@Directive({\n  selector: '[p-list-view-content-template]',\n  standalone: false\n})\nexport class PoListViewContentTemplateDirective {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Função que deve retornar um valor do tipo `string`, que será utilizado como o título de cada item da lista.\n   *\n   * > Por parâmetro será enviado o item corrente, onde poderá utilizá-lo para recuperar dados sobre o mesmo.\n   */\n  @Input('p-title') title: (item) => string;\n\n  // Necessário manter templateRef para o funcionamento do row template.\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef, Input } from '@angular/core';\n\n/**\n * @usedBy PoListViewComponent\n *\n * @description\n *\n * Esta diretiva permite que sejam apresentadas informações adicionais de cada item, construindo um\n * botão `Exibir detalhes` abaixo do conteúdo principal do item.\n *\n * Deve-se utilizar como parâmetro a referência do item e/ou índice, sendo por padrão o item.\n *  - Item: `item` determina o item da linha corrente.\n *  - Índice: `index` determina o índice da linha corrente.\n *\n * Esta diretiva pode ser usada de duas formas: explícita ou *syntax sugar*. Veja a seguir ambos, respectivamente:\n *\n * ```\n * ...\n * <po-list-view\n *   p-property-title=\"name\"\n *   [p-items]=\"items\">\n *\n *   <ng-template p-list-view-detail-template let-item let-code=\"index\">\n *     <div class=\"po-row\">\n *       <po-info class=\"po-md-6\" p-label=\"Code\" [p-value]=\"code\"></po-info>\n *       <po-info class=\"po-md-12\" p-label=\"Email\" [p-value]=\"item.email\"></po-info>\n *     </div>\n *   </ng-template>\n *\n * </po-list-view>\n *\n * ...\n * ```\n *\n * ```\n * ...\n * <po-list-view\n *    p-property-title=\"name\"\n *    [p-items]=\"items\">\n *    <div *p-list-view-detail-template=\"let item, let i=index\" class=\"po-row\">\n *      <po-info class=\"po-md-12\" p-label=\"Email\" [p-value]=\"item.email\"></po-info>\n *    </div>\n * </po-list-view>\n * ...\n *\n * ```\n */\n@Directive({\n  selector: '[p-list-view-detail-template]',\n  standalone: false\n})\nexport class PoListViewDetailTemplateDirective {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Função que deve retornar um valor do tipo `boolean`, que será utilizado como a validação para que o detalhe de item\n   * da lista inicie aberto ou fechado.\n   *\n   */\n  @Input('p-show-detail') showDetail: (item) => boolean;\n\n  // Necessário manter templateRef para o funcionamento do row template.\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n  AfterContentInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  DoCheck,\n  IterableDiffers,\n  ViewChild,\n  inject\n} from '@angular/core';\n\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { PoUtils } from '../../utils/util';\nimport { PoPopupComponent } from '../po-popup/po-popup.component';\n\nimport { PoListViewAction } from './interfaces/po-list-view-action.interface';\nimport { PoListViewBaseComponent } from './po-list-view-base.component';\nimport { PoListViewContentTemplateDirective } from './po-list-view-content-template/po-list-view-content-template.directive';\nimport { PoListViewDetailTemplateDirective } from './po-list-view-detail-template/po-list-view-detail-template.directive';\n\n/**\n * @docsExtends PoListViewBaseComponent\n *\n * @example\n *\n * <example name=\"po-list-view-basic\" title=\"PO List View Basic\">\n *  <file name=\"sample-po-list-view-basic/sample-po-list-view-basic.component.html\"> </file>\n *  <file name=\"sample-po-list-view-basic/sample-po-list-view-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-list-view-labs\" title=\"PO List View Labs\">\n *  <file name=\"sample-po-list-view-labs/sample-po-list-view-labs.component.html\"> </file>\n *  <file name=\"sample-po-list-view-labs/sample-po-list-view-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-list-view-hiring-processes\" title=\"PO List View - Hiring Processes\">\n *  <file name=\"sample-po-list-view-hiring-processes/sample-po-list-view-hiring-processes.component.html\"> </file>\n *  <file name=\"sample-po-list-view-hiring-processes/sample-po-list-view-hiring-processes.component.ts\"> </file>\n *  <file name=\"sample-po-list-view-hiring-processes/sample-po-list-view-hiring-processes.service.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-list-view',\n  templateUrl: './po-list-view.component.html',\n  animations: [\n    trigger('showHideDetail', [\n      state('*', style({ 'overflow-y': 'visible' })),\n      state('void', style({ 'overflow-y': 'hidden' })),\n      transition('* => void', [style({ height: '*', 'overflow-y': 'hidden' }), animate(100, style({ height: 0 }))]),\n      transition('void => *', [style({ height: '0' }), animate(100, style({ height: '*' }))])\n    ])\n  ],\n  standalone: false\n})\nexport class PoListViewComponent extends PoListViewBaseComponent implements AfterContentInit, DoCheck {\n  private readonly changeDetector = inject(ChangeDetectorRef);\n\n  @ContentChild(PoListViewContentTemplateDirective, { static: true })\n  listViewContentTemplate: PoListViewContentTemplateDirective;\n  @ContentChild(PoListViewDetailTemplateDirective, { static: true })\n  listViewDetailTemplate: PoListViewDetailTemplateDirective;\n\n  @ViewChild('popup', { static: true }) poPopupComponent: PoPopupComponent;\n\n  private readonly differ;\n\n  constructor() {\n    const differs = inject(IterableDiffers);\n    const languageService = inject(PoLanguageService);\n\n    super(languageService);\n    this.differ = differs.find([]).create(null);\n  }\n\n  get hasContentTemplate(): boolean {\n    return !!this.listViewContentTemplate;\n  }\n\n  get hasDetailTemplate(): boolean {\n    return !!this.listViewDetailTemplate;\n  }\n\n  get displayShowMoreButton(): boolean {\n    return this.items && this.items.length > 0 && this.showMore.observers.length > 0;\n  }\n\n  get showButtonsActions(): boolean {\n    return this.visibleActions && this.visibleActions.length > 0 && this.visibleActions.length <= 2;\n  }\n\n  get showPopupActions(): boolean {\n    return this.visibleActions && this.visibleActions.length > 2;\n  }\n\n  get titleHasAction() {\n    return this.titleAction.observers.length > 0;\n  }\n\n  get visibleActions() {\n    return (\n      this.actions &&\n      this.actions.filter(action => this.returnBooleanValue(action, action.visible, 'visible') !== false)\n    );\n  }\n\n  ngAfterContentInit(): void {\n    this.initShowDetail();\n  }\n\n  ngDoCheck() {\n    this.checkItemsChange();\n  }\n\n  checkTitleType(item: any) {\n    if (this.propertyLink && item[this.propertyLink]) {\n      return item[this.propertyLink].startsWith('http') ? 'externalLink' : 'internalLink';\n    }\n\n    return 'noLink';\n  }\n\n  getItemTitle(item) {\n    return this.hasContentTemplate && this.listViewContentTemplate.title\n      ? this.listViewContentTemplate.title(item)\n      : item[this.propertyTitle];\n  }\n\n  hasItems(): boolean {\n    return this.items && this.items.length > 0;\n  }\n\n  returnBooleanValue(listViewAction: PoListViewAction, item: any, property: string) {\n    return PoUtils.isTypeof(listViewAction[property], 'function')\n      ? (<any>listViewAction)[property](item)\n      : listViewAction[property];\n  }\n\n  trackBy(index) {\n    return index;\n  }\n\n  togglePopup(item, targetRef: HTMLElement) {\n    this.popupTarget = targetRef;\n    this.changeDetector.detectChanges();\n\n    this.poPopupComponent.toggle(item);\n  }\n\n  onAnimationEvent(event: AnimationEvent, detail) {\n    this.showDetail.emit(detail);\n  }\n\n  private checkItemsChange() {\n    const changesItems = this.differ.diff(this.items);\n\n    if (changesItems && this.selectAll) {\n      this.selectAll = null;\n    }\n\n    if (changesItems && this.items && this.items.length && this.select && !this.hideSelectAll) {\n      this.showHeader = true;\n    }\n  }\n\n  private initShowDetail() {\n    if (this.items && this.items.length > 0 && this.hasDetailTemplate && this.listViewDetailTemplate.showDetail) {\n      this.items.forEach(item => (item.$showDetail = this.listViewDetailTemplate.showDetail(item)));\n    }\n  }\n}\n","<div\n  [class.po-list-view-main-container-header]=\"showHeader\"\n  [class.po-list-view-main-container]=\"!showHeader\"\n  [style.height.px]=\"height\"\n>\n  @if (showHeader) {\n    <div class=\"po-list-view-main-header\">\n      <div class=\"po-checkbox-group-item\">\n        <div class=\"po-list-view-main-select\">\n          <po-checkbox\n            name=\"selectAll\"\n            [(ngModel)]=\"selectAll\"\n            [p-label]=\"literals.selectAll\"\n            [p-size]=\"componentsSize\"\n            (p-change)=\"selectAllListItems()\"\n            (click)=\"selectAllListItems()\"\n          ></po-checkbox>\n        </div>\n      </div>\n    </div>\n  }\n\n  <div class=\"po-list-view-main-content\">\n    @if (!hasItems()) {\n      <po-container [p-no-padding]=\"true\">\n        <div class=\"po-list-view-container-no-data po-text-center\">\n          <span> {{ literals.noData }} </span>\n        </div>\n      </po-container>\n    }\n\n    @for (item of items; track trackBy($index); let index = $index) {\n      <po-container [p-no-padding]=\"true\">\n        <div class=\"po-list-view-container\">\n          <div class=\"po-list-view-header\">\n            <div class=\"po-list-view-title\" [ngSwitch]=\"checkTitleType(item)\">\n              @if (select) {\n                <div class=\"po-list-view-select\">\n                  <po-checkbox\n                    [(ngModel)]=\"item.$selected\"\n                    name=\"checkbox\"\n                    [p-size]=\"componentsSize\"\n                    (p-change)=\"selectListItem(item)\"\n                    (click)=\"selectListItem(item)\"\n                  ></po-checkbox>\n                </div>\n              }\n\n              <a\n                *ngSwitchCase=\"'externalLink'\"\n                class=\"po-list-view-title-link\"\n                target=\"_blank\"\n                [href]=\"item[propertyLink]\"\n                (click)=\"runTitleAction(item)\"\n              >\n                {{ getItemTitle(item) }}\n              </a>\n              <a\n                *ngSwitchCase=\"'internalLink'\"\n                class=\"po-list-view-title-link\"\n                [routerLink]=\"item[propertyLink]\"\n                (click)=\"runTitleAction(item)\"\n              >\n                {{ getItemTitle(item) }}\n              </a>\n              <span\n                *ngSwitchCase=\"'noLink'\"\n                class=\"po-list-view-title-no-link\"\n                [class.po-list-view-title-link]=\"titleHasAction\"\n                (click)=\"titleHasAction && runTitleAction(item)\"\n              >\n                {{ getItemTitle(item) }}\n              </span>\n            </div>\n\n            @if (showButtonsActions) {\n              <div class=\"po-list-view-actions\">\n                @for (action of visibleActions; track action) {\n                  <po-button\n                    [p-disabled]=\"returnBooleanValue(action, item, 'disabled')\"\n                    [p-icon]=\"action.icon\"\n                    [p-label]=\"action.label\"\n                    [p-danger]=\"action.type === 'danger'\"\n                    [p-size]=\"componentsSize\"\n                    (p-click)=\"onClickAction(action, item)\"\n                  >\n                  </po-button>\n                }\n              </div>\n            }\n\n            @if (showPopupActions) {\n              <div class=\"po-list-view-more-actions\">\n                <div #popupTarget class=\"po-list-view-more-icon po-clickable\" (click)=\"togglePopup(item, popupTarget)\">\n                  <po-icon p-icon=\"ICON_MORE\"></po-icon>\n                </div>\n              </div>\n            }\n          </div>\n\n          @if (hasContentTemplate) {\n            <div class=\"po-list-view-content\">\n              <ng-template\n                [ngTemplateOutlet]=\"listViewContentTemplate.templateRef\"\n                [ngTemplateOutletContext]=\"{ $implicit: item, index: index }\"\n              >\n              </ng-template>\n            </div>\n          }\n\n          @if (hasDetailTemplate && item.$showDetail) {\n            <div\n              @showHideDetail\n              (@showHideDetail.start)=\"item.$showDetail ? onAnimationEvent($event, item) : 'undefined'\"\n              class=\"po-list-view-detail\"\n            >\n              <ng-template\n                [ngTemplateOutlet]=\"listViewDetailTemplate.templateRef\"\n                [ngTemplateOutletContext]=\"{ $implicit: item, index: index }\"\n              >\n              </ng-template>\n            </div>\n          }\n        </div>\n\n        @if (hasDetailTemplate) {\n          <div class=\"po-list-view-detail-button\">\n            <po-button\n              p-kind=\"tertiary\"\n              [p-label]=\"item.$showDetail ? literals.hideDetails : literals.showDetails\"\n              [p-size]=\"componentsSize\"\n              (p-click)=\"item.$showDetail = !item.$showDetail\"\n            >\n            </po-button>\n          </div>\n        }\n      </po-container>\n    }\n  </div>\n</div>\n\n@if (displayShowMoreButton) {\n  <div class=\"po-mb-2 po-text-center\">\n    <po-button\n      [p-disabled]=\"showMoreDisabled\"\n      [p-label]=\"literals.loadMoreData\"\n      [p-size]=\"componentsSize\"\n      (p-click)=\"onShowMore()\"\n    >\n    </po-button>\n  </div>\n}\n\n<po-popup #popup [p-actions]=\"actions\" [p-size]=\"componentsSize\" [p-target]=\"popupTarget\"> </po-popup>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PoButtonModule } from '../po-button/po-button.module';\nimport { PoIconModule } from '../po-icon/po-icon.module';\nimport { PoPopupModule } from '../po-popup/po-popup.module';\nimport { PoCheckboxModule } from './../po-field/po-checkbox/po-checkbox.module';\n\nimport { PoListViewComponent } from './po-list-view.component';\nimport { PoListViewContentTemplateDirective } from './po-list-view-content-template/po-list-view-content-template.directive';\nimport { PoListViewDetailTemplateDirective } from './po-list-view-detail-template/po-list-view-detail-template.directive';\nimport { PoContainerModule } from '../po-container/po-container.module';\n\n/**\n * @description\n *\n * Módulo do componente `po-list-view`.\n *\n * > Para o correto funcionamento do componente `po-list-view`, deve ser importado o módulo `BrowserAnimationsModule` no\n * > módulo principal da sua aplicação.\n *\n * Módulo da aplicação:\n * ```\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n * import { PoModule } from '@po-ui/ng-components';\n * ...\n *\n * @NgModule({\n *   imports: [\n *     BrowserModule,\n *     BrowserAnimationsModule,\n *     ...\n *     PoModule\n *   ],\n *   declarations: [\n *     AppComponent,\n *     ...\n *   ],\n *   providers: [],\n *   bootstrap: [AppComponent]\n * })\n * export class AppModule { }\n * ```\n *\n * Em aplicações Standalone, utilize a seguinte configuração para o bootstrap:\n *\n * ```\n * import { bootstrapApplication } from '@angular/platform-browser';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n * import { AppComponent } from './app.component';\n *\n * bootstrapApplication(AppComponent, {\n *   providers: [importProvidersFrom(BrowserAnimationsModule)]\n * }).catch(err => console.error(err));\n * ```\n */\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    RouterModule,\n    PoButtonModule,\n    PoIconModule,\n    PoPopupModule,\n    PoCheckboxModule,\n    PoContainerModule\n  ],\n  declarations: [PoListViewComponent, PoListViewContentTemplateDirective, PoListViewDetailTemplateDirective],\n  exports: [PoListViewComponent, PoListViewContentTemplateDirective, PoListViewDetailTemplateDirective],\n  providers: [],\n  schemas: []\n})\nexport class PoListViewModule {}\n","import { Component, Input } from '@angular/core';\n\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { isTypeof } from '../../utils/util';\n\nconst poLogoLiteralsDefault = {\n  en: {\n    logomarcaHome: 'Home logo'\n  },\n  es: {\n    logomarcaHome: 'Logomarca inicio'\n  },\n  pt: {\n    logomarcaHome: 'Logomarca início'\n  },\n  ru: {\n    logomarcaHome: 'Дом Логомарка'\n  }\n};\n\nconst MAX_LENGHT: number = 125;\n\n@Component({\n  selector: 'po-logo',\n  templateUrl: './po-logo.component.html',\n  standalone: false\n})\nexport class PoLogoComponent {\n  readonly literals: any;\n\n  private _logo?: string;\n  private _logoAlt: string;\n  private _link: boolean | string = './';\n\n  /**\n   * Define uma classe para o elemento `img` do componente.\n   *\n   * > **Importante**\n   * > A classe deve ser definida apenas quando houver necessidade de ajustar o componente dentro de outro componente.\n   *\n   */\n  @Input('p-class') className: string = 'po-logo';\n\n  /**\n   * Define se o componente terá o elemento âncora para uma rota específica.\n   *\n   * > Caso seja definido como false, o componente apenas renderizará o elemento `img`.\n   * > Caso seja definido como true, a rota será `./`.\n   * > Caso seja definido como string, a rota será a string passada.\n   *\n   * @default `true`\n   */\n  @Input('p-link') set link(value: boolean | string) {\n    this._link = value !== false ? value : false;\n  }\n\n  get link() {\n    return this._link;\n  }\n\n  /**\n   * Definie o caminho para a imagem, que será exibida como logomarca.\n   *\n   */\n  @Input('p-logo') set logo(value: string) {\n    this._logo = isTypeof(value, 'string') && value.trim() ? value : undefined;\n  }\n\n  get logo() {\n    return this._logo;\n  }\n\n  /**\n   * Define o texto alternativo para a logomarca.\n   *\n   * > **Importante**\n   * > Caso esta propriedade não seja definida o texto padrão será \"Logomarca início\".\n   */\n  @Input('p-logo-alt') set logoAlt(value: string) {\n    this._logoAlt = isTypeof(value, 'string') && value.trim() ? this.maxLength(value) : this.literals.logomarcaHome;\n  }\n\n  get logoAlt() {\n    return this._logoAlt;\n  }\n\n  constructor(public poLanguageService: PoLanguageService) {\n    this.literals = {\n      ...poLogoLiteralsDefault[this.poLanguageService?.getLanguageDefault()],\n      ...poLogoLiteralsDefault[this.poLanguageService?.getShortLanguage()]\n    };\n    this._logoAlt = this.literals.logomarcaHome;\n  }\n\n  private maxLength(value: string) {\n    return value.length > MAX_LENGHT ? value.toString().substring(0, MAX_LENGHT) : value;\n  }\n}\n","@if (link !== false) {\n  <a [href]=\"link === true ? './' : link\">\n    <img [alt]=\"logoAlt\" [class]=\"className\" [src]=\"logo\" [title]=\"logoAlt\" />\n  </a>\n} @else {\n  <img [alt]=\"logoAlt\" [class]=\"className\" [src]=\"logo\" [title]=\"logoAlt\" />\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PoLogoComponent } from './po-logo.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [PoLogoComponent],\n  exports: [PoLogoComponent]\n})\nexport class PoLogoModule {}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Serviço que implementa a comunicação entre os items do po-menu-panel.\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoMenuPanelItemsService {\n  private readonly subjectChild = new Subject<any>();\n  private readonly subjectParent = new Subject<any>();\n\n  // Recebe do po-menu-panel-item sua informação de click.\n  receiveFromChildMenuClicked() {\n    return this.subjectChild.asObservable();\n  }\n\n  // Recebe do po-menu-panel as informações processadas do click de um po-menu-panel-item.\n  receiveFromParentMenuClicked(): Observable<any> {\n    return this.subjectParent.asObservable();\n  }\n\n  // Envia informações do click do po-menu-panel-item para o po-menu\n  sendToParentMenuClicked(menu: object) {\n    this.subjectChild.next(menu);\n  }\n\n  // Envia para os po-menu-panel-item a resposta do processamento de click de um po-menu-panel-item.\n  sendToChildMenuClicked(menu: object) {\n    this.subjectParent.next(menu);\n  }\n}\n","import { Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\n\nimport { Subscription } from 'rxjs';\n\nimport { PoMenuPanelItemInternal } from './po-menu-panel-item-internal.interface';\nimport { PoMenuPanelItemsService } from '../services/po-menu-panel-items.service';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente que implementa cada item do po-menu-panel.\n */\n@Component({\n  selector: 'po-menu-panel-item',\n  templateUrl: './po-menu-panel-item.component.html',\n  standalone: false\n})\nexport class PoMenuPanelItemComponent implements OnDestroy, OnInit {\n  private readonly menuItemsService = inject(PoMenuPanelItemsService);\n\n  @Input('p-menu-item-internal') menuItemInternal: PoMenuPanelItemInternal;\n\n  itemsSubscription: Subscription;\n\n  ngOnDestroy() {\n    this.itemsSubscription.unsubscribe();\n  }\n\n  ngOnInit() {\n    // subscribe to menu component messages\n    this.subscribeMenuClickedFromParent();\n  }\n\n  clickMenuItem(event) {\n    if (!(event.ctrlKey || event.metaKey)) {\n      event.preventDefault();\n\n      // Emmit to parent\n      this.menuItemsService.sendToParentMenuClicked(this.menuItemInternal);\n    }\n  }\n\n  private activateMenu(menu: PoMenuPanelItemInternal) {\n    this.menuItemInternal.isSelected = this.menuItemInternal.id === menu.id;\n  }\n\n  private processMenuItem(menu) {\n    if (this.menuItemInternal.type === 'internalLink') {\n      this.activateMenu(menu.active);\n    }\n  }\n\n  private subscribeMenuClickedFromParent() {\n    this.itemsSubscription = this.menuItemsService.receiveFromParentMenuClicked().subscribe(menu => {\n      this.processMenuItem(menu);\n    });\n  }\n}\n","<!-- menu com link interno -->\n@if (menuItemInternal.type === 'internalLink') {\n  <a [routerLink]=\"menuItemInternal.link\">\n    <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n  </a>\n}\n\n<!-- menu com link externo -->\n@if (menuItemInternal.type === 'externalLink') {\n  <a [href]=\"menuItemInternal.link\">\n    <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n  </a>\n}\n\n<!-- menu sem link -->\n@if (menuItemInternal.type === 'noLink') {\n  <a href=\"javascript:;\">\n    <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n  </a>\n}\n\n<ng-template #menuItemTemplate>\n  <div\n    class=\"po-menu-panel-item\"\n    p-tooltip-position=\"right\"\n    [class.po-menu-panel-item-selected]=\"menuItemInternal.isSelected\"\n    [p-tooltip]=\"menuItemInternal.label\"\n    (click)=\"clickMenuItem($event)\"\n  >\n    <span class=\"{{ menuItemInternal.icon }}\"></span>\n  </div>\n</ng-template>\n","import { Directive, Input } from '@angular/core';\n\nimport { isExternalLink, uuid } from '../../utils/util';\n\nimport { PoMenuPanelItemInternal } from './po-menu-panel-item/po-menu-panel-item-internal.interface';\nimport { PoMenuPanelItem } from './po-menu-panel-item/po-menu-panel-item.interface';\n\nconst poDefaultLogo = 'https://po-ui.io/assets/po-logos/po_black.svg';\n\n/**\n * @description\n *\n * Este é um componente de menu lateral composto apenas por ícones e com um nível, utilizado para navegação\n * em páginas internas, externas da aplicação ou aciona uma ação.\n *\n * O componente `po-menu-panel` recebe uma lista de objetos do tipo `MenuPanelItem` com as informações dos\n * itens de menu como textos, links para redirecionamento, ações e ícones.\n */\n@Directive()\nexport class PoMenuPanelBaseComponent {\n  private _menus;\n  private _logo: string = poDefaultLogo;\n\n  /** Lista dos itens do `po-menu-panel`. Se o valor estiver indefinido ou inválido, será inicializado como um array vazio. */\n  @Input('p-menus') set menus(menus: Array<PoMenuPanelItem>) {\n    this._menus = Array.isArray(menus) ? menus : [];\n\n    this.setMenuExtraProperties(this._menus);\n    this.validateMenus(this._menus);\n  }\n\n  get menus() {\n    return this._menus;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Caminho para a logomarca localizada na parte superior do menu.\n   *\n   * > **Importante**\n   * > Caso seja indefinida será aplicada a imagem default do PO UI.\n   */\n  @Input('p-logo') set logo(src: string) {\n    this._logo = src ?? poDefaultLogo;\n  }\n\n  get logo() {\n    return this._logo;\n  }\n\n  /**\n   * Define o texto alternativo para a logomarca.\n   *\n   * > **Importante**\n   * > Caso esta propriedade não seja definida o texto padrão será \"Logomarca início\".\n   *\n   * @default `Logomarca início`\n   */\n  @Input('p-logo-alt') logoAlt?: string;\n\n  private setMenuExtraProperties(menus: Array<PoMenuPanelItem>) {\n    menus.forEach(menuItem => this.setMenuItemProperties(<PoMenuPanelItemInternal>menuItem));\n  }\n\n  private setMenuItemProperties(menuItem: PoMenuPanelItemInternal) {\n    menuItem.id = menuItem.id || uuid();\n    menuItem.type = this.setMenuType(menuItem);\n  }\n\n  private setMenuType(menuItem: PoMenuPanelItem): string {\n    if (!menuItem.link) {\n      return 'noLink';\n    }\n\n    if (isExternalLink(menuItem.link)) {\n      return 'externalLink';\n    }\n\n    return 'internalLink';\n  }\n\n  private validateMenu(menuItem: PoMenuPanelItem) {\n    if (!menuItem.label) {\n      throw new Error('O atributo PoMenuPanelItem.label não pode ser vazio.');\n    }\n\n    if (!menuItem.icon) {\n      throw new Error('O atributo PoMenuPanelItem.icon não pode ser vazio.');\n    }\n  }\n\n  private validateMenus(menus): void {\n    menus.forEach(menu => this.validateMenu(menu));\n  }\n}\n","import { Location } from '@angular/common';\nimport { Component, OnDestroy, OnInit, ViewContainerRef, inject } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\n\nimport { Subscription } from 'rxjs';\n\nimport { getFormattedLink, openExternalLink } from '../../utils/util';\n\nimport { PoMenuPanelBaseComponent } from './po-menu-panel-base.component';\nimport { PoMenuPanelItemInternal } from './po-menu-panel-item/po-menu-panel-item-internal.interface';\nimport { PoMenuPanelItem } from './po-menu-panel-item/po-menu-panel-item.interface';\nimport { PoMenuPanelItemsService } from './services/po-menu-panel-items.service';\n\n/**\n * @docsExtends PoMenuPanelBaseComponent\n *\n * @description\n *\n * Para o menu funcionar corretamente é necessário importar o `RouterModule` e `Routes` do módulo principal de\n *  sua aplicação:\n *\n * ```\n * import { RouterModule, Routes } from '@angular/router';\n *\n * ...\n *\n * @NgModule({\n *   imports: [\n *     RouterModule,\n *     Routes,\n *     ...\n *     PoModule,\n *     ...\n *   ],\n *   declarations: [\n *     AppComponent\n *   ],\n *   providers: [],\n *   bootstrap: [AppComponent]\n * })\n * export class AppModule { }\n * ```\n *\n * Além disso é necessário criar um módulo configurando as rotas da aplicação.\n *\n * ```\n * import { NgModule } from '@angular/core';\n *\n * import { RouterModule, Routes } from '@angular/router';\n *\n * import { HelloWorldComponent } from './hello-world/hello-world.component';\n *\n * const routes: Routes = [\n *   {path: 'hello-world', component: HelloWorldComponent}\n * ];\n *\n * @NgModule({\n *   imports: [RouterModule.forRoot(routes, {useHash: true})],\n *   exports: [RouterModule]\n * })\n * export class AppRoutingModule {}\n * ```\n *\n * @example\n *\n * <example name=\"po-menu-panel-basic\" title=\"PO Menu Panel Basic\">\n *   <file name=\"sample-po-menu-panel-basic/sample-po-menu-panel-basic.component.html\"> </file>\n *   <file name=\"sample-po-menu-panel-basic/sample-po-menu-panel-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-menu-panel-labs\" title=\"PO Menu Panel Labs\">\n *   <file name=\"sample-po-menu-panel-labs/sample-po-menu-panel-labs.component.html\"> </file>\n *   <file name=\"sample-po-menu-panel-labs/sample-po-menu-panel-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-menu-panel-customer\" title=\"PO Menu Panel - Customers\">\n *   <file name=\"sample-po-menu-panel-customer/sample-po-menu-panel-customer.component.html\"> </file>\n *   <file name=\"sample-po-menu-panel-customer/sample-po-menu-panel-customer.component.ts\"> </file>\n * </example>\n */\n\n@Component({\n  selector: 'po-menu-panel',\n  templateUrl: './po-menu-panel.component.html',\n  standalone: false\n})\nexport class PoMenuPanelComponent extends PoMenuPanelBaseComponent implements OnDestroy, OnInit {\n  private readonly location = inject(Location);\n  private readonly menuItemsService = inject(PoMenuPanelItemsService);\n  private readonly router = inject(Router);\n\n  activeMenuItem: PoMenuPanelItem;\n  linkActive: string;\n\n  private routeSubscription: Subscription;\n  private itemSubscription: Subscription;\n\n  ngOnDestroy() {\n    this.itemSubscription.unsubscribe();\n    this.routeSubscription.unsubscribe();\n  }\n\n  ngOnInit() {\n    this.subscribeToMenuItem();\n    this.subscribeToRoute();\n  }\n\n  private activateMenuByUrl(urlPath: string, menus: Array<PoMenuPanelItem>) {\n    if (menus) {\n      return menus.some(menu => {\n        if (getFormattedLink(menu.link) === urlPath) {\n          this.activateMenuItem(menu);\n          return true;\n        }\n      });\n    }\n  }\n\n  private activateMenuItem(menu: PoMenuPanelItem): void {\n    this.activeMenuItem = menu;\n    this.linkActive = getFormattedLink(menu.link);\n    this.menuItemsService.sendToChildMenuClicked({ active: this.activeMenuItem, activatedByRoute: true });\n  }\n\n  private checkActiveMenuByUrl(urlPath: string): void {\n    if (!this.linkActive || this.linkActive !== urlPath) {\n      this.activateMenuByUrl(urlPath, this.menus);\n    }\n  }\n\n  private clickMenuItem(menu: PoMenuPanelItemInternal) {\n    if (menu.action) {\n      menu.action(menu);\n    }\n\n    if (menu.type === 'externalLink') {\n      openExternalLink(menu.link);\n    } else if (menu.type === 'internalLink') {\n      this.activateMenuItem(menu);\n    }\n  }\n\n  private subscribeToRoute() {\n    this.routeSubscription = this.router.events.subscribe(rounterEvent => {\n      if (rounterEvent instanceof NavigationEnd) {\n        this.checkActiveMenuByUrl(this.location.path());\n      }\n    });\n  }\n\n  private subscribeToMenuItem() {\n    this.itemSubscription = this.menuItemsService\n      .receiveFromChildMenuClicked()\n      .subscribe((menu: PoMenuPanelItemInternal) => this.clickMenuItem(menu));\n  }\n}\n","<div class=\"po-menu-panel\">\n  <div class=\"po-menu-panel-logo-container\">\n    @if (logo) {\n      <po-logo p-class=\"po-menu-panel-logo\" [p-logo]=\"logo\" [p-logo-alt]=\"logoAlt\"></po-logo>\n    }\n  </div>\n\n  <nav class=\"po-menu-panel-container\">\n    <div class=\"po-menu-panel-inner\">\n      @for (menu of menus; track menu; let menuIndex = $index) {\n        <div class=\"po-menu-panel-item-wrapper\">\n          <po-menu-panel-item\n            [class.po-menu-panel-item-first]=\"menuIndex === 0\"\n            [p-menu-item-internal]=\"menu\"\n          ></po-menu-panel-item>\n        </div>\n      }\n    </div>\n  </nav>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PoTooltipModule } from '../../directives/po-tooltip/index';\nimport { PoFieldModule } from '../po-field/po-field.module';\nimport { PoLogoModule } from '../po-logo/po-logo.module';\nimport { PoMenuPanelItemComponent } from './po-menu-panel-item/po-menu-panel-item.component';\nimport { PoMenuPanelComponent } from './po-menu-panel.component';\nimport { PoMenuPanelItemsService } from './services/po-menu-panel-items.service';\nimport { PoIconModule } from '../po-icon/po-icon.module';\n\n/**\n * @description\n *\n * Módulo do componente po-menu-panel.\n */\n@NgModule({\n  imports: [CommonModule, RouterModule, PoFieldModule, PoLogoModule, PoTooltipModule, PoIconModule],\n  declarations: [PoMenuPanelComponent, PoMenuPanelItemComponent],\n  exports: [PoMenuPanelComponent],\n  providers: [PoMenuPanelItemsService]\n})\nexport class PoMenuPanelModule {}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild, inject } from '@angular/core';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\nimport { PoMenuFilterLiterals } from './po-menu-filter-literals.interface';\n\nexport const poMenuFilterLiteralsDefault = {\n  en: <PoMenuFilterLiterals>{ search: 'Search' },\n  es: <PoMenuFilterLiterals>{ search: 'Buscar' },\n  pt: <PoMenuFilterLiterals>{ search: 'Pesquisar' },\n  ru: <PoMenuFilterLiterals>{ search: 'Поиск' }\n};\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente que apresenta o campo de pesquisa no po-menu.\n */\n@Component({\n  selector: 'po-menu-filter',\n  templateUrl: './po-menu-filter.component.html',\n  standalone: false\n})\nexport class PoMenuFilterComponent {\n  languageService = inject(PoLanguageService);\n\n  @Input('p-components-size') componentsSize: string;\n\n  @Input('p-loading') loading: boolean;\n\n  @Input('p-enable-collapse') enableCollapse: boolean = false;\n\n  // utilizado para repassar ao po-clean\n  @ViewChild('inputFilter', { read: ElementRef, static: true }) inputFilterElement: ElementRef;\n\n  @Output('p-filter') filter = new EventEmitter();\n\n  public literals: any;\n\n  constructor() {\n    this.literals = {\n      ...poMenuFilterLiteralsDefault[this.languageService?.getLanguageDefault()],\n      ...poMenuFilterLiteralsDefault[this.languageService?.getShortLanguage()]\n    };\n  }\n  filterItems(search: string) {\n    this.filter.emit(search);\n  }\n}\n","<div class=\"po-menu-filter-container\" [class.po-menu-filter-container-hidden]=\"enableCollapse\">\n  <input\n    #inputFilter\n    type=\"text\"\n    class=\"po-menu-filter\"\n    [class.po-menu-filter-aa]=\"componentsSize === 'small'\"\n    [placeholder]=\"literals.search\"\n    (keyup)=\"filterItems(inputFilter.value)\"\n  />\n\n  <div\n    class=\"po-menu-filter-search-icon-container\"\n    [class.po-menu-filter-search-icon-container-aa]=\"componentsSize === 'small'\"\n  >\n    @if (!loading) {\n      <po-icon\n        p-icon=\"ICON_SEARCH\"\n        class=\"po-menu-filter-icon po-field-icon\"\n        [class.po-field-icon-aa]=\"componentsSize === 'small'\"\n      ></po-icon>\n    }\n    @if (loading) {\n      <po-loading-icon [p-size]=\"componentsSize === 'small' ? 'xs' : 'sm'\"></po-loading-icon>\n    }\n  </div>\n  <div class=\"po-field-icon-container-right\">\n    <po-clean\n      [p-element-ref]=\"inputFilterElement\"\n      [p-size]=\"componentsSize\"\n      (p-change-event)=\"filterItems(inputFilter.value)\"\n    ></po-clean>\n  </div>\n</div>\n","import { Directive, TemplateRef } from '@angular/core';\n\n/**\n * @usedBy PoMenuComponent\n *\n * @description\n *\n * Esta diretiva permite adicionar um conteúdo personalizado entre a logo e o campo de filtro do cabeçalho do\n * [`po-menu`](/documentation/po-menu).\n *\n * Para personalizar o conteúdo do cabeçalho deve-se utilizar a diretiva `p-menu-header-template` dentro da *tag* do\n * [`po-menu`](/documentation/po-menu). Podendo ser utilizada de duas formas:\n *\n * Com `ng-template`\n * ```\n * ...\n * <po-menu [p-menus]=\"menus\">\n *   <ng-template p-menu-header-template>\n *     ...\n *   </ng-template>\n * </po-menu>\n * ...\n * ```\n *\n * ou com *syntax sugar*\n * ```\n * ...\n * <po-menu [p-menus]=\"menus\">\n *   <div *p-menu-header-template>\n *     ...\n *   </div>\n * </po-menu>\n * ...\n * ```\n *\n * > Quando o menu estiver colapsado ou tela for _mobile_ o conteúdo personalizado não será exibido.\n */\n@Directive({\n  selector: '[p-menu-header-template]',\n  standalone: false\n})\nexport class PoMenuHeaderTemplateDirective {\n  // Necessário manter templateRef para o funcionamento do row template.\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Serviço que implementa a comunicação entre os items do po-menu.\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoMenuItemsService {\n  private readonly subjectParent = new Subject<any>();\n  private readonly subjectChild = new Subject<any>();\n\n  // Envia informações do click do po-menu-item para o po-menu\n  sendToParentMenuClicked(menu: object) {\n    this.subjectChild.next(menu);\n  }\n\n  // Recebe do po-menu-item sua informação de click.\n  receiveFromChildMenuClicked() {\n    return this.subjectChild.asObservable();\n  }\n\n  // Envia para os po-menu-item a resposta do processamento de click de um po-menu-item.\n  sendToChildMenuClicked(menu: object) {\n    this.subjectParent.next(menu);\n  }\n\n  // Recebe do po-menu as informações processadas do click de um po-menu-item.\n  receiveFromParentMenuClicked(): Observable<any> {\n    return this.subjectParent.asObservable();\n  }\n}\n","import { Component, ElementRef, Input, OnDestroy, OnInit, TemplateRef, ViewChild, inject } from '@angular/core';\n\nimport { Subscription } from 'rxjs';\n\nimport { convertToInt, convertToBoolean } from '../../../utils/util';\n\nimport { PoMenuItem } from '../po-menu-item.interface';\nimport { PoMenuItemsService } from '../services/po-menu-items.service';\n\n// valor para que caibam 3 linhas de `label`\nconst poMenuItemSubItemSize = 98;\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente que implementa cada item do po-menu.\n */\n@Component({\n  selector: 'po-menu-item',\n  templateUrl: './po-menu-item.component.html',\n  standalone: false\n})\nexport class PoMenuItemComponent implements OnDestroy, OnInit {\n  private readonly menuItemsService = inject(PoMenuItemsService);\n\n  // Ação que será chamada ao clicar no item.\n  @Input('p-action') action: Function;\n\n  // Indica se contém algum item filho com o badge.\n  @Input('p-badge-alert') badgeAlert: boolean;\n\n  // Cor do badge.\n  @Input('p-badge-color') badgeColor: string;\n\n  // Indica se o menu está colapsado\n  @Input('p-collapsed-menu') collapsedMenu: boolean;\n\n  // Ícone de menu\n  @Input('p-icon') icon: string | TemplateRef<void>;\n\n  // Identificador do item.\n  @Input('p-id') id: string;\n\n  // Indica se o item está aberto (menu agrupado)\n  @Input('p-is-opened') isOpened: boolean;\n\n  // Texto que aparecerá representando o item.\n  @Input('p-label') label: string;\n\n  // Indica qual em nível do po-menu encontra-se.\n  @Input('p-level') level: number;\n\n  // Link do item.\n  @Input('p-link') link?: string;\n\n  // Texto que aparecerá representando o item.\n  @Input('p-short-label') shortLabel: string;\n\n  // Indica o tipo de item, como 'internalLink' ou 'subItems'.\n  @Input('p-type') type: string;\n\n  @ViewChild('menuSubItems') menuSubItems: ElementRef;\n\n  isSelectedSubItem;\n  maxHeight: number = 0;\n\n  private itemSubscription: Subscription;\n  private _badgeValue: number;\n  private _isSelected: boolean = false;\n  private _isSubItem: boolean = false;\n  private _subItems: Array<PoMenuItem>;\n\n  // Valor do badge.\n  @Input('p-badge-value') set badgeValue(badgeValue: number) {\n    this._badgeValue = convertToInt(badgeValue);\n  }\n\n  get badgeValue() {\n    return this._badgeValue;\n  }\n\n  // Indica se o item está selecionado.\n  @Input('p-is-selected') set isSelected(value: boolean) {\n    this._isSelected = convertToBoolean(value);\n\n    this.isSelectedSubItem = this.isSelected && this.isSubItem;\n  }\n  get isSelected() {\n    return this._isSelected;\n  }\n\n  // Indica se o item é um sub item\n  @Input('p-is-sub-item') set isSubItem(value: boolean) {\n    this._isSubItem = convertToBoolean(value);\n  }\n\n  get isSubItem() {\n    return this._isSubItem;\n  }\n\n  // Lista de sub-items.\n  @Input('p-sub-items') set subItems(subitems: Array<PoMenuItem>) {\n    this._subItems = subitems;\n    if (this.isOpened) {\n      this.calcMenuSubItemsMaxHeight();\n    }\n  }\n\n  get subItems() {\n    return this._subItems;\n  }\n\n  get canShowBadge() {\n    return this.type !== 'subItems' && (this.badgeValue || this.badgeValue === 0) && this.badgeValue >= 0;\n  }\n\n  ngOnDestroy(): void {\n    this.itemSubscription.unsubscribe();\n  }\n\n  ngOnInit(): void {\n    // subscribe to menu component messages\n    this.itemSubscription = this.menuItemsService.receiveFromParentMenuClicked().subscribe(menu => {\n      this.processMenuItem(menu);\n    });\n  }\n\n  clickMenuItem(event): void {\n    if (!(event.ctrlKey || event.metaKey)) {\n      event.preventDefault();\n\n      // Emmit to parent\n      this.menuItemsService.sendToParentMenuClicked({\n        link: this.link,\n        action: this.action,\n        id: this.id,\n        icon: this.icon,\n        label: this.label,\n        level: this.level,\n        subItems: this.subItems,\n        isSelected: this.isSelected,\n        isOpened: this.isOpened,\n        shortLabel: this.shortLabel,\n        type: this.type\n      });\n    }\n  }\n\n  private accordionAnimation(\n    menuActive: PoMenuItem,\n    menuOpened: PoMenuItem,\n    hasSubItemOpened: boolean,\n    activatedByRoute: boolean\n  ) {\n    if (this.id === menuOpened['id']) {\n      this.maxHeight = this.subItems.length * poMenuItemSubItemSize;\n    }\n\n    if (hasSubItemOpened) {\n      this.maxHeight = menuOpened['isOpened']\n        ? this.maxHeight + menuOpened.subItems.length * poMenuItemSubItemSize\n        : this.maxHeight - menuOpened.subItems.length * poMenuItemSubItemSize;\n\n      if (activatedByRoute) {\n        this.maxHeight = this.getMinimumHeight(0, this, menuActive);\n      }\n    }\n  }\n\n  private activateMenu(menu: any): void {\n    this.isSelected = menu && this.id === menu.id;\n  }\n\n  private calcMenuSubItemsMaxHeight() {\n    setTimeout(() => {\n      const subItems = Array.from(this.menuSubItems.nativeElement.querySelectorAll('.po-menu-item'));\n      subItems.forEach((menuItem: any) => (this.maxHeight += menuItem.offsetHeight));\n    });\n  }\n\n  private getMinimumHeight(minimumHeight: number, menuItem: PoMenuItem, menuActive: PoMenuItem) {\n    minimumHeight += poMenuItemSubItemSize;\n\n    if (menuItem.subItems && this.hasSubItem(menuItem.subItems, menuActive['id'])) {\n      for (let index = 0; index < menuItem.subItems.length; index++) {\n        minimumHeight = this.getMinimumHeight(minimumHeight, menuItem.subItems[index], menuActive);\n      }\n    }\n\n    return minimumHeight;\n  }\n\n  private groupedMenu(menuActive: PoMenuItem, menuOpened: PoMenuItem, activatedByRoute: boolean = false): void {\n    const hasSubItemOpened =\n      menuOpened && this.id !== menuOpened['id'] ? this.hasSubItem(this.subItems, menuOpened['id']) : false;\n\n    this.isOpened = this.isMenuOpened(menuOpened, hasSubItemOpened);\n\n    this.isSelected = menuActive && !this.isOpened ? this.hasSubItem(this.subItems, menuActive['id']) : false;\n\n    if (!this.isOpened) {\n      this.maxHeight = 0;\n      return;\n    }\n\n    this.accordionAnimation(menuActive, menuOpened, hasSubItemOpened, activatedByRoute);\n  }\n\n  private hasSubItem(subItems: Array<PoMenuItem>, id: string): boolean {\n    if (subItems) {\n      return subItems.some(item => (item['id'] === id ? true : this.hasSubItem(item.subItems, id)));\n    }\n  }\n\n  private isMenuOpened(menuOpened: PoMenuItem, hasSubItemOpened: boolean): boolean {\n    if (menuOpened) {\n      return this.id === menuOpened['id'] ? menuOpened['isOpened'] : hasSubItemOpened;\n    }\n\n    return false;\n  }\n\n  private processMenuItem(menu) {\n    if (this.type === 'internalLink') {\n      this.activateMenu(menu.active);\n      return;\n    }\n\n    if (this.type === 'subItems') {\n      this.groupedMenu(menu.active, menu.grouped, menu.activatedByRoute);\n    }\n  }\n}\n","<!-- menu com link interno -->\n@if (type === 'internalLink') {\n  <a\n    class=\"po-menu-item-link\"\n    role=\"menuitem\"\n    [attr.aria-label]=\"label\"\n    [routerLink]=\"link\"\n    (keydown.enter)=\"clickMenuItem($event)\"\n    (keydown.space)=\"clickMenuItem($event)\"\n    p-tooltip-position=\"right\"\n    [p-tooltip]=\"collapsedMenu && shortLabel ? shortLabel : undefined\"\n    [p-append-in-body]=\"true\"\n  >\n    <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n  </a>\n}\n<!-- menu com link externo -->\n@if (type === 'externalLink') {\n  <a\n    class=\"po-menu-item-link\"\n    role=\"menuitem\"\n    [attr.aria-label]=\"label\"\n    [href]=\"link\"\n    (keydown.enter)=\"clickMenuItem($event)\"\n    (keydown.space)=\"clickMenuItem($event)\"\n    p-tooltip-position=\"right\"\n    [p-tooltip]=\"collapsedMenu && shortLabel ? shortLabel : undefined\"\n    [p-append-in-body]=\"true\"\n  >\n    <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n  </a>\n}\n<!-- menu sem link -->\n@if (type === 'noLink') {\n  <a\n    class=\"po-menu-item-link\"\n    href=\"javascript:;\"\n    role=\"menuitem\"\n    [attr.aria-label]=\"label\"\n    (keydown.enter)=\"clickMenuItem($event)\"\n    (keydown.space)=\"clickMenuItem($event)\"\n    p-tooltip-position=\"right\"\n    [p-tooltip]=\"collapsedMenu && shortLabel ? shortLabel : undefined\"\n    [p-append-in-body]=\"true\"\n  >\n    <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n  </a>\n}\n<!-- menu sem dados -->\n@if (type === 'noData') {\n  <div class=\"po-menu-item-link\" role=\"none\">\n    <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n  </div>\n}\n<!-- menu com sub itens -->\n@if (type === 'subItems') {\n  <div class=\"po-menu-item-link po-clickable\" role=\"menuitem\" [attr.aria-expanded]=\"isOpened ? true : false\">\n    <ng-container *ngTemplateOutlet=\"menuItemTemplate\"></ng-container>\n    <div\n      #menuSubItems\n      class=\"po-menu-sub-items\"\n      [hidden]=\"collapsedMenu || !isOpened\"\n      [attr.aria-expanded]=\"isOpened ? true : false\"\n      [attr.aria-hidden]=\"!isOpened ? true : false\"\n      role=\"group\"\n      [style.maxHeight.px]=\"maxHeight\"\n    >\n      <ul class=\"po-menu-sub-items-list\">\n        @for (subItem of subItems; track subItem) {\n          <li class=\"po-menu-sub-items-list-item\" [attr.aria-level]=\"subItem.level\">\n            <po-menu-item\n              p-is-sub-item\n              [p-action]=\"subItem.action\"\n              [p-badge-alert]=\"subItem.badgeAlert\"\n              [p-badge-color]=\"subItem.badge ? subItem.badge.color : undefined\"\n              [p-badge-value]=\"subItem.badge ? subItem.badge.value : undefined\"\n              [p-id]=\"subItem.id\"\n              [p-label]=\"subItem.label\"\n              [p-level]=\"subItem.level\"\n              [p-link]=\"subItem.link\"\n              [p-sub-items]=\"subItem.subItems\"\n              [p-type]=\"subItem.type\"\n            ></po-menu-item>\n          </li>\n        }\n      </ul>\n    </div>\n  </div>\n}\n\n<ng-template #menuItemTemplate>\n  <div\n    p-tooltip-position=\"right\"\n    [p-tooltip]=\"type === 'subItems' && collapsedMenu && shortLabel ? shortLabel : undefined\"\n    [p-append-in-body]=\"true\"\n    class=\"po-menu-item\"\n    [tabindex]=\"type === 'subItems' ? 0 : -1\"\n    [attr.aria-label]=\"label\"\n    [attr.role]=\"type === 'subItems' ? 'menuitem' : undefined\"\n    [class.po-menu-icon-container]=\"level === 1 && icon\"\n    [class.po-menu-item-selected]=\"isSelected\"\n    [class.po-menu-item-level-two]=\"level === 2\"\n    [class.po-menu-item-level-three]=\"level === 3\"\n    [class.po-menu-item-level-four]=\"level === 4\"\n    [class.po-menu-item-grouper-up]=\"type === 'subItems' && isOpened\"\n    [class.po-menu-item-grouper-down]=\"type === 'subItems' && !isOpened\"\n    [class.po-menu-item-no-data]=\"type === 'noData'\"\n    [class.po-menu-sub-item-selected]=\"isSelectedSubItem\"\n    (click)=\"clickMenuItem($event)\"\n    (keydown.enter)=\"clickMenuItem($event)\"\n    (keydown.space)=\"clickMenuItem($event)\"\n  >\n    @if (level === 1 && icon) {\n      <po-icon aria-hidden=\"true\" class=\"po-menu-icon-item\" [p-icon]=\"icon\"></po-icon>\n    }\n\n    @if (type === 'subItems' && !collapsedMenu) {\n      <po-icon\n        class=\"po-menu-group-icon\"\n        [p-icon]=\"isOpened ? 'ICON_ARROW_UP po-field-icon' : 'ICON_ARROW_DOWN po-field-icon'\"\n      ></po-icon>\n    }\n\n    <span [class.po-menu-icon-label]=\"level === 1 && icon\">\n      {{ label }}\n    </span>\n\n    @if (canShowBadge) {\n      <po-badge\n        aria-hidden=\"true\"\n        [ngClass]=\"!collapsedMenu ? 'po-menu-badge-align' : 'po-menu-badge-align-collapsed'\"\n        [p-color]=\"badgeColor\"\n        [p-value]=\"badgeValue\"\n      ></po-badge>\n    }\n\n    @if (badgeAlert) {\n      <span\n        aria-hidden=\"true\"\n        class=\"po-color-07\"\n        [ngClass]=\"!collapsedMenu ? 'po-menu-badge-alert' : 'po-menu-badge-alert-collapsed'\"\n      ></span>\n    }\n  </div>\n</ng-template>\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { PoMenuComponent } from '../po-menu.component';\nimport { PoMenuItem } from '../po-menu-item.interface';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoMenuGlobalService {\n  private readonly applicationMenu = new Subject<PoMenuComponent>();\n  private readonly menus = new Subject<Array<PoMenuItem>>();\n  private readonly removedApplicationMenu = new Subject<string>();\n  private readonly menuId = new Subject<string>();\n  private readonly menuChanges = new Subject<Array<PoMenuItem>>();\n\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  receiveApplicationMenu$ = this.applicationMenu.asObservable();\n\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  receiveMenus$ = this.menus.asObservable();\n\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  receiveId$ = this.menuId.asObservable();\n\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  receiveOnChange$ = this.menuChanges.asObservable();\n\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  receiveRemovedApplicationMenu$ = this.removedApplicationMenu.asObservable();\n\n  sendApplicationMenu(menu: PoMenuComponent) {\n    this.applicationMenu.next(menu);\n  }\n\n  sendMenus(menus: Array<PoMenuItem>) {\n    this.menus.next(menus);\n  }\n\n  sendId(id: string) {\n    this.menuId.next(id);\n  }\n\n  sendChanges(menus: Array<PoMenuItem>) {\n    this.menuChanges.next(menus);\n  }\n\n  sendRemovedApplicationMenu(id: string) {\n    this.removedApplicationMenu.next(id);\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\n\nimport { PoMenuItemFiltered } from '../po-menu-item/po-menu-item-filtered.interface';\nimport { PoMenuFilter } from '../po-menu-filter/po-menu-filter.interface';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Serviço que implementa a interface `PoMenuFilter`, utilizado para fazer requisições ao serviço informado pelo usuário,\n * caso for uma URL, no componente `po-menu`.\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoMenuService implements PoMenuFilter {\n  private readonly http = inject(HttpClient);\n\n  private _url: string;\n\n  get url(): string {\n    return this._url;\n  }\n\n  configProperties(url: string) {\n    this._url = url;\n  }\n\n  getFilteredData(search: string, params?: any): Observable<Array<PoMenuItemFiltered>> {\n    const filterParams = {\n      search,\n      ...params\n    };\n\n    return this.http\n      .get(this.url, { params: filterParams })\n      .pipe(map((response: { items: Array<PoMenuItemFiltered> }) => response && response.items));\n  }\n}\n","import { Directive, HostBinding, HostListener, Input, output } from '@angular/core';\n\nimport {\n  convertToBoolean,\n  convertToInt,\n  getDefaultSizeFn,\n  isExternalLink,\n  isTypeof,\n  uuid,\n  validateSizeFn,\n  validValue\n} from '../../utils/util';\n\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { PoMenuFilter } from './po-menu-filter/po-menu-filter.interface';\nimport { PoMenuItem } from './po-menu-item.interface';\nimport { PoMenuGlobalService } from './services/po-menu-global.service';\nimport { PoMenuService } from './services/po-menu.service';\n\nexport const poMenuLiteralsDefault = {\n  en: {\n    itemNotFound: 'Item not found',\n    emptyLabelError: 'Attribute PoMenuItem.label can not be empty',\n    close: 'Close menu',\n    open: 'Open menu'\n  },\n  es: {\n    itemNotFound: 'Elemento no encontrado',\n    emptyLabelError: 'El atributo PoMenuItem.label no puede ser vacío',\n    close: 'Cerrar menú',\n    open: 'Abrir menú'\n  },\n  pt: {\n    itemNotFound: 'Item não encontrado',\n    emptyLabelError: 'O atributo PoMenuItem.label não pode ser vazio',\n    close: 'Fechar menu',\n    open: 'Abrir menu'\n  },\n  ru: {\n    itemNotFound: 'Предмет не найден',\n    emptyLabelError: 'Атрибут PoMenuItem.label не может быть пустым',\n    close: 'Закрыть меню',\n    open: 'Открыть меню'\n  }\n};\n\n/**\n * @description\n *\n * Este é um componente de menu lateral que é utilizado para navegação nas páginas de uma aplicação.\n *\n * O componente po-menu recebe uma lista de objetos do tipo `MenuItem` com as informações dos itens de menu como\n * textos, links para redirecionamento, ações, até 4 níveis de menu e ícones para o primeiro nível de menu.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                             | Valor Padrão                                    |\n * |----------------------------------------|-------------------------------------------------------|-------------------------------------------------|\n * | **Default Values**                     |                                                       |                                                 |\n * | `--border-radius`                      | Contém o valor do raio dos cantos do elemento&nbsp;   | `var(--border-radius-md)`                       |\n * | `--border-color`                       | Cor da borda                                          | `var(--color-neutral-light-20)`                 |\n * | `--background-color`                   | Cor de background                                     | `Var(----color-neutral-light-05)`               |\n * | **Menu Footer**                        |                                                       |                                                 |\n * | `--color`                              | Cor principla do menu footer                          | `var(--color-action-default)`                   |\n * | `--font-size`                          | Tamanho da fonte                                      | `var(--font-size-default)`                      |\n * | `--line-height`                        | Tamanho da label                                      | `var(--line-height-md)`                         |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                     | `var(--color-action-focus)`                     |\n * | `--font-weight-lvl0`                   | Peso da fonte                                         | `var(--font-weight-bold)`                       |\n * | **po-menu-item**                       |                                                       |                                                 |\n * | `--font-family`                        | Família tipográfica usada                             | `var(--font-family-theme)`                      |\n * | `--font-size`                          | Tamanho da fonte                                      | `var(--font-size-default)`                      |\n * | `--line-height`                        | Tamanho da label                                      | `var(--line-height-md)`                         |\n * | `--border-radius`                      | Contém o valor do raio dos cantos do elemento&nbsp;   | `var(--border-radius-md)`                       |\n * | `--color`                              | Cor principal do item                                 | `var(--color-action-default)`                   |\n * | `--background-color`                   | Cor do background                                     | `transparent`                                   |\n * | **Hover**                              |                                                       |                                                 |\n * | `--color-hover`                        | Cor principal no estado hover                         | `var(--color-brand-01-darkest)`                 |\n * | `--background-color-hover`             | Cor de background no estado hover                     | `var(--color-brand-01-lighter)`                 |\n * | **Focused**                            |                                                       |                                                 |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                     | `var(--color-action-focus)`                     |\n * | **Pressed**                            |                                                       |                                                 |\n * | `--background-color-pressed` &nbsp;    | Cor de background no estado de pressionado&nbsp;      | `var(--color-brand-01-light)`                   |\n * | **Actived**                            |                                                       |                                                 |\n * | `--background-color-actived`           | Cor de background no estado actived                   | `var(--color-brand-01-darkest)`                 |\n * | `--color-actived`                      | Cor principal no estado actived                       | `var(--color-brand-01-lighter)`                 |\n * | **Font**                               |                                                       |                                                 |\n * | `--font-weight-lvl0`                   | Peso da fonte bold                                    | `var(--font-weight-bold)`                       |\n * | `--font-weight-lvl1`                   | Peso da fonte                                         | `var(--font-weight-normal)`                     |\n *\n * <br>\n */\n@Directive()\nexport abstract class PoMenuBaseComponent {\n  allowIcons: boolean;\n  allowCollapseMenu: boolean;\n  allowCollapseHover: boolean;\n\n  filteredItems;\n  filterService: PoMenuFilter;\n\n  readonly literals: any;\n\n  private _collapsed = false;\n  private _componentsSize: string = undefined;\n  private _initialComponentsSize: string = undefined;\n  private _filter = false;\n  private _searchTreeItems = false;\n  private _level;\n  private readonly _maxLevel = 4;\n  private _menus = [];\n  private _params: any;\n  private _service: string | PoMenuFilter;\n  private _logoLink: boolean | string = true;\n  private _menuId: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Expande e Colapsa (retrai) o menu automaticamente.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-automatic-toggle', transform: convertToBoolean }) automaticToggle: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento emitido toda vez que o estado do menu muda, enviando `true` quando expandido e `false` quando colapsado.\n   *\n   * ```html\n   * <po-menu (p-toggle)=\"onMenuToggle($event)\"></po-menu>\n   * ```\n   */\n  toggleChange = output<boolean>({ alias: 'p-toggle' });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Colapsa (retrai) o menu e caso receba o valor `false` expande o menu.\n   *\n   * > Utilize esta propriedade para iniciar o menu colapsado.\n   *\n   * > Ao utilizar os métodos [`colapse`](documentation/po-menu#colapseMethod), [`expand`](documentation/po-menu#expandMethod) e\n   * [`toggle`](documentation/po-menu#toggleMethod) o valor desta propriedade não é alterado.\n   *\n   * **Importante:**\n   *\n   * > O menu será colapsado/expandido apenas se todos os itens de menu tiverem valor nas propriedades `icon` e `shortLabel`.\n   *\n   * @default `false`\n   */\n  @Input('p-collapsed') set collapsed(collapsed: boolean) {\n    this._collapsed = convertToBoolean(collapsed);\n\n    this.allowCollapseHover = this._collapsed;\n    this.validateCollapseClass();\n  }\n\n  get collapsed() {\n    return this._collapsed;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos componentes de formulário no menu:\n   * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n   * - `medium`: aplica a medida medium de cada componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /** Lista dos itens do menu. Se o valor estiver indefinido ou inválido, será inicializado como um array vazio. */\n  @Input('p-menus') set menus(menus: Array<PoMenuItem>) {\n    this._menus = Array.isArray(menus) ? menus : [];\n\n    this.menuGlobalService.sendMenus(menus);\n\n    setTimeout(() => {\n      const urlRouter = this.checkingRouterChildrenFragments();\n      this.checkActiveMenuByUrl(urlRouter);\n    });\n  }\n\n  get menus() {\n    return this._menus;\n  }\n\n  get maxLevel() {\n    return this._maxLevel;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita um campo para pesquisa no menu.\n   * A pesquisa é realizada em todos os níveis do menu e busca apenas pelos itens que contém uma ação e/ou link definidos,\n   * ou também, pode ser realizada através de um serviço definido na propriedade `p-service`.\n   *\n   * > O campo de pesquisa é desabilitado se o menu estiver colapsado.\n   *\n   * @default `false`\n   */\n  @Input('p-filter') set filter(filter: boolean) {\n    this._filter = <any>filter === '' ? true : convertToBoolean(filter);\n    this.filteredItems = [...this._menus];\n  }\n\n  get filter() {\n    return this._filter;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Quando ativado, a pesquisa também retornará itens agrupadores além dos itens que contêm uma ação e/ou link definidos.\n   * Isso pode ser útil quando se deseja encontrar rapidamente categorias ou seções do menu.\n   *\n   * > É necessário que a propriedade `p-filter` esteja habilitada.\n   *\n   * @default `false`\n   */\n  @Input('p-search-tree-items') set searchTreeItems(searchTreeItems: boolean) {\n    this._searchTreeItems = <any>searchTreeItems === '' ? true : convertToBoolean(searchTreeItems);\n    this.filteredItems = [...this._menus];\n  }\n\n  get searchTreeItems() {\n    return this._searchTreeItems;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Nesta propriedade deve ser informada a URL do serviço em que será utilizado para realizar o filtro de itens do\n   * menu quando realizar uma busca. Caso haja a necessidade de customização, pode ser informado um\n   * serviço implementando a interface `PoMenuFilter`.\n   *\n   * Caso utilizada uma URL, o serviço deve retornar os dados conforme o\n   * [Guia de implementação de APIs](https://po-ui.io/guides/api) do PO UI.\n   *\n   * Quando utilizada uma URL de serviço, será realizado um *GET* na URL informada, passando o valor digitado\n   * no parâmetro `search`, veja exemplo:\n   *\n   * > O filtro no serviço será realizado caso contenha no mínimo três caracteres no campo de busca, por exemplo `tot`.\n   *\n   * ```\n   * <po-menu p-service=\"/api/v1/fnd/menu\">\n   * </po-menu>\n   *\n   * Requisição: GET /api/v1/fnd/menu?search=contas\n   * ```\n   *\n   * > É necessário que propriedade `p-filter` esteja habilitada.\n   */\n  @Input('p-service') set service(value: string | PoMenuFilter) {\n    this._service = value || undefined;\n\n    this.configService(this.service);\n  }\n\n  get service() {\n    return this._service;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Deve ser informado um objeto que deseja-se utilizar na requisição de filtro dos itens de menu.\n   *\n   * Caso utilizado um serviço customizado, implementando a interface `PoMenuFilter`, o valor desta propriedade\n   * será passado como parâmetro, na função `getFilteredData`.\n   *\n   * Quando utilizada uma URL de serviço, será realizado um *GET* na URL informada, passando os valores informados\n   * nesta propriedade em conjunto com o parâmetro `search`, veja exemplo:\n   *\n   * ```\n   * <po-menu p-service=\"/api/v1/fnd/menu\" [p-params]=\"{ company: 1, user: 297767512 }\">\n   * </po-menu>\n   *\n   * Requisição: GET /api/v1/fnd/menu?search=contas&company=1&user=297767512\n   * ```\n   */\n  @Input('p-params') set params(value: any) {\n    this._params = value && isTypeof(value, 'object') ? value : undefined;\n  }\n\n  get params() {\n    return this._params;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Caminho para a logomarca, que será exibida quando o componente estiver expandido, localizada na parte superior.\n   *\n   * > **Importante:**\n   * - Caso esta propriedade estiver indefinida ou inválida o espaço para logomarca será removido.\n   * - Como boa prática, indica-se utilizar imagens com até `24px` de altura e `224px` de largura,\n   * caso ultrapassar esses valores a imagem será readequada no espaço disponível.\n   */\n  @Input('p-logo') logo?: string;\n\n  @Input('p-menu-id') set menuid(id: string) {\n    this.menuGlobalService.sendId(id);\n    this._menuId = id;\n  }\n\n  get menuid() {\n    return this._menuId;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o texto alternativo para a logomarca.\n   *\n   * > **Importante**\n   * > Caso esta propriedade não seja definida o texto padrão será \"Logomarca início\".\n   *\n   * @default `Logomarca início`\n   */\n  @Input('p-logo-alt') logoAlt?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Caminho para a logomarca, que será exibida quando o componente estiver colapsado, localizada na parte superior.\n   *\n   * > **Importante:**\n   * - Caso esta propriedade estiver indefinida ou inválida passa a assumir o valor informado na propriedade `p-logo` e na ausência desta o\n   * espaço para logomarca será removido.\n   * - Como boa prática, indica-se utilizar imagens com até `48px` de altura e `48px` de largura,\n   * caso ultrapassar esses valores a imagem será readequada no espaço disponível.\n   * - Caso não informar um valor, esta propriedade passa a assumir o valor informado na propriedade `p-logo`.\n   */\n  @Input('p-short-logo') shortLogo: string;\n\n  // propriedade interna\n  @Input('p-only-menu-item') onlyMenuItem: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define o link para a rota ao clicar no logo do menu.\n   *\n   * - Se o valor for uma string, define a rota para o link informado.\n   * - Se for `false`, o logo não terá link associado.\n   * - Se for `true`, o logo terá a rota padrão `./`.\n   *\n   * @default `true`\n   */\n  @Input('p-logo-link') set logoLink(value: boolean | string) {\n    this._logoLink = value === false ? false : value || true;\n  }\n\n  get logoLink(): boolean | string {\n    return this._logoLink;\n  }\n\n  constructor(\n    public menuGlobalService: PoMenuGlobalService,\n    public menuService: PoMenuService,\n    public languageService: PoLanguageService\n  ) {\n    this.literals = {\n      ...poMenuLiteralsDefault[this.languageService?.getLanguageDefault()],\n      ...poMenuLiteralsDefault[this.languageService?.getShortLanguage()]\n    };\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  protected setMenuExtraProperties() {\n    this.allowIcons = !!this.menus.length;\n    this.allowCollapseMenu = !!this.menus.length;\n\n    this.menus.forEach(menuItem => {\n      this._level = 1;\n      this.allowIcons = this.allowIcons ? validValue(menuItem.icon) : false;\n      this.allowCollapseMenu = this.allowCollapseMenu && this.allowIcons ? validValue(menuItem.shortLabel) : false;\n      this.removeBadgeAlert(menuItem);\n      this.setMenuItemProperties(menuItem);\n\n      if (menuItem.subItems) {\n        this._level++;\n        this.processSubItems(menuItem);\n      }\n    });\n  }\n\n  protected setMenuItemProperties(menuItem: PoMenuItem): void {\n    menuItem['id'] = menuItem['id'] || uuid();\n    menuItem['level'] = this._level;\n    menuItem['type'] = this.setMenuType(menuItem);\n  }\n\n  protected validateMenus(menus): void {\n    menus.forEach(menu => this.validateMenu(menu));\n  }\n\n  protected setMenuType(menuItem: PoMenuItem): string {\n    if (menuItem.subItems && menuItem.subItems.length > 0 && this._level < this.maxLevel) {\n      return 'subItems';\n    }\n    if (!menuItem.link) {\n      return 'noLink';\n    }\n    if (isExternalLink(menuItem.link)) {\n      return 'externalLink';\n    }\n    return 'internalLink';\n  }\n\n  private configService(service: string | PoMenuFilter) {\n    if (typeof service === 'string' && service.trim()) {\n      // service url\n      this.menuService.configProperties(service);\n      this.filterService = this.menuService;\n    } else if (typeof service === 'object' && service.getFilteredData) {\n      // custom service\n      this.filterService = service;\n    } else {\n      this.filterService = undefined;\n    }\n  }\n\n  private processSubItems(menu) {\n    menu.subItems.forEach((menuItem, index, menuItems) => {\n      const previousItem = menuItems[index - 1];\n      if (previousItem && previousItem.subItems) {\n        this._level = previousItem['level'];\n      }\n\n      if (this._level <= this.maxLevel) {\n        this.setMenuItemProperties(menuItem);\n\n        if (menuItem.subItems) {\n          this._level++;\n          this.processSubItems(menuItem);\n        }\n      }\n\n      if (!menu['badgeAlert']) {\n        menu = this.setMenuBadgeAlert(menu, menuItem);\n      }\n    });\n\n    menu.subItems = Object.assign([], menu.subItems);\n  }\n\n  private removeBadgeAlert(menuItem: PoMenuItem): void {\n    if (menuItem['badgeAlert']) {\n      delete menuItem['badgeAlert'];\n    }\n\n    if (menuItem.subItems) {\n      menuItem.subItems.forEach(subItem => this.removeBadgeAlert(subItem));\n    }\n  }\n\n  private setMenuBadgeAlert(parent: PoMenuItem, child: PoMenuItem): PoMenuItem {\n    const childHasSubItems = child.subItems && child.subItems.length;\n    const childHasBadgeAlert = child['badgeAlert'];\n    const childHasBadge = child.badge && convertToInt(child.badge.value) >= 0;\n\n    parent['badgeAlert'] = childHasBadgeAlert || (childHasBadge && !childHasSubItems);\n\n    return parent;\n  }\n\n  private validateMenu(menuItem: PoMenuItem): void {\n    if (!menuItem.label || menuItem.label.trim() === '') {\n      throw new Error(this.literals.emptyLabelError);\n    } else if (menuItem.subItems) {\n      menuItem.subItems.forEach(subItem => {\n        this.validateMenu(subItem);\n      });\n    }\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialComponentsSize, PoFieldSize);\n    this._componentsSize = size;\n  }\n\n  protected abstract checkActiveMenuByUrl(urlRouter);\n  protected abstract checkingRouterChildrenFragments();\n  protected abstract validateCollapseClass();\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  DoCheck,\n  ElementRef,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  SimpleChanges,\n  inject\n} from '@angular/core';\n\nimport { NavigationCancel, NavigationEnd, Router } from '@angular/router';\n\nimport { Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { getFormattedLink, uuid, PoUtils } from '../../utils/util';\n\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { PoMenuBaseComponent } from './po-menu-base.component';\nimport { PoMenuHeaderTemplateDirective } from './po-menu-header-template/po-menu-header-template.directive';\nimport { PoMenuItem } from './po-menu-item.interface';\nimport { PoMenuItemFiltered } from './po-menu-item/po-menu-item-filtered.interface';\nimport { PoMenuGlobalService } from './services/po-menu-global.service';\nimport { PoMenuItemsService } from './services/po-menu-items.service';\nimport { PoMenuService } from './services/po-menu.service';\n\nconst poMenuDebounceTime = 400;\nconst poMenuMinLength = 3;\nconst poMenuRootLevel = 1;\n\n/**\n * @docsExtends PoMenuBaseComponent\n *\n * @description\n *\n * Aparece completo em telas com largura maior que 1200px, caso contrário o menu é escondido e chamado por meio de um botão.\n *\n * O menu também pode ser colapsado. Essa opção é habilitada quando todos os itens de primeiro nível possuírem ícones e textos curtos.\n * Se colapsado, somente os itens de primeiro nível serão exibidos e, caso o item selecionado possua sub-níveis,\n * então o menu alternará novamente para o estado aberto.\n *\n * Existe a possibilidade de customizar a logomarca, que é exibida na parte superior do componente.\n *\n * E para adicionar um conteúdo personalizado entre a logomarca e o campo de filtro,\n * basta adicionar este conteúdo com a diretiva [**p-menu-header-template**](/documentation/po-menu-header-template).\n *\n * Caso utilizar o filtro de menus, é possível realizar buscas em serviço, apenas informando a URL do serviço ou a instância de\n * um serviço customizado implementando a interface `PoMenuFilter`.\n *\n * Para o menu funcionar corretamente é necessário importar o `RouterModule` e `Routes` do módulo principal de\n *  sua aplicação:\n *\n * ```\n * import { RouterModule, Routes } from '@angular/router';\n *\n * ...\n *\n * @NgModule({\n *   imports: [\n *     RouterModule,\n *     Routes,\n *     ...\n *     PoModule,\n *     ...\n *   ],\n *   declarations: [\n *     AppComponent\n *   ],\n *   providers: [],\n *   bootstrap: [AppComponent]\n * })\n * export class AppModule { }\n * ```\n *\n * Além disso é necessário criar um módulo configurando as rotas da aplicação.\n *\n * ```\n * import { NgModule } from '@angular/core';\n *\n * import { RouterModule, Routes } from '@angular/router';\n *\n * import { HelloWorldComponent } from './hello-world/hello-world.component';\n *\n * const routes: Routes = [\n *   {path: 'hello-world', component: HelloWorldComponent}\n * ];\n *\n * @NgModule({\n *   imports: [RouterModule.forRoot(routes, {useHash: true})],\n *   exports: [RouterModule]\n * })\n * export class AppRoutingModule {}\n * ```\n *\n * @example\n *\n * <example name=\"po-menu-basic\" title=\"PO Menu Basic\">\n *   <file name=\"sample-po-menu-basic/sample-po-menu-basic.component.html\"> </file>\n *   <file name=\"sample-po-menu-basic/sample-po-menu-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-menu-labs\" title=\"PO Menu Labs\">\n *   <file name=\"sample-po-menu-labs/sample-po-menu-labs.component.html\"> </file>\n *   <file name=\"sample-po-menu-labs/sample-po-menu-labs.component.ts\"> </file>\n *   <file name=\"sample-po-menu-labs/sample-po-menu-labs.component.css\"> </file>\n * </example>\n *\n * <example name=\"po-menu-human-resources\" title=\"PO Menu - Human Resources\">\n *   <file name=\"sample-po-menu-human-resources/sample-po-menu-human-resources.component.html\"> </file>\n *   <file name=\"sample-po-menu-human-resources/sample-po-menu-human-resources.component.ts\"> </file>\n *   <file name=\"sample-po-menu-human-resources/sample-po-menu-human-resources.component.css\"> </file>\n *   <file name=\"sample-po-menu-human-resources/sample-po-menu-human-resources.service.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-menu',\n  templateUrl: './po-menu.component.html',\n  providers: [PoMenuItemsService, PoMenuService],\n  standalone: false\n})\nexport class PoMenuComponent\n  extends PoMenuBaseComponent\n  implements AfterViewInit, OnDestroy, OnInit, DoCheck, OnChanges\n{\n  changeDetector = inject(ChangeDetectorRef);\n  private readonly element = inject(ElementRef);\n  private readonly renderer = inject(Renderer2);\n  private readonly router = inject(Router);\n  private readonly menuItemsService = inject(PoMenuItemsService);\n\n  @ContentChild(PoMenuHeaderTemplateDirective, { static: true }) menuHeaderTemplate: PoMenuHeaderTemplateDirective;\n\n  activeMenuItem: PoMenuItem;\n  collapsedMobile: boolean;\n  filterLoading = false;\n  groupedMenuItem: PoMenuItem;\n  id = uuid();\n  linkActive: string;\n  mobileOpened: boolean = false;\n  noData: boolean = false;\n  timeoutFilter: any;\n  afterViewInitWasCalled = false;\n\n  private filteringItems: boolean = false;\n  private menuInitialized: boolean = false;\n  private menuPrevious = null;\n  private resizeListener: () => void;\n\n  private itemSubscription: Subscription;\n  private routeSubscription: Subscription;\n\n  /* eslint-disable max-params */\n  constructor() {\n    const menuGlobalService = inject(PoMenuGlobalService);\n    const menuService = inject(PoMenuService);\n    const languageService = inject(PoLanguageService);\n\n    super(menuGlobalService, menuService, languageService);\n  }\n  /* eslint-enable max-params */\n\n  private get isActiveItemMenuSubMenu() {\n    return this.activeMenuItem['level'] > this.groupedMenuItem['level'];\n  }\n\n  get enableCollapse() {\n    return this.isCollapsed && !this.collapsedMobile;\n  }\n\n  get enableCollapseButton() {\n    return this.allowCollapseMenu && !this.collapsed && !this.mobileOpened;\n  }\n\n  get hasFooter() {\n    return this.enableCollapseButton || this.enableCollapse;\n  }\n\n  get isCollapsed() {\n    return this.allowCollapseMenu && this.collapsed;\n  }\n\n  ngDoCheck() {\n    if (this.filteringItems && this.filter) {\n      return;\n    }\n\n    const menuCurrent = this.stringify(this.menus);\n\n    if (this.menuPrevious !== menuCurrent || !this.menuInitialized) {\n      this.updateMenu();\n      this.validateCollapseClass();\n    }\n  }\n\n  ngOnDestroy() {\n    this.itemSubscription.unsubscribe();\n    this.routeSubscription.unsubscribe();\n\n    if (this.resizeListener) {\n      this.resizeListener();\n    }\n\n    this.menuGlobalService.sendRemovedApplicationMenu(this.id);\n  }\n\n  ngOnInit() {\n    this.subscribeToMenuItem();\n    this.subscribeToRoute();\n    this.menuGlobalService.sendId(this.menuid);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['menus'] && this.afterViewInitWasCalled) {\n      this.menuGlobalService.sendChanges(changes['menus'].currentValue);\n      this.changeDetector.detectChanges();\n    }\n  }\n\n  ngAfterViewInit() {\n    this.menuGlobalService.sendApplicationMenu(this);\n    this.afterViewInitWasCalled = true;\n  }\n\n  activateMenuByUrl(urlPath: string, menus: Array<PoMenuItem>) {\n    if (menus) {\n      const urlPathWithoutLastFragment = urlPath.substr(0, urlPath.lastIndexOf('/'));\n      return menus.some(menu => {\n        const formattedMenuLink = getFormattedLink(menu.link);\n        const menuLinkPath = `${urlPathWithoutLastFragment}${formattedMenuLink.substr(\n          formattedMenuLink.lastIndexOf('/')\n        )}`;\n\n        if (menuLinkPath === urlPath && menuLinkPath === formattedMenuLink) {\n          this.linkActive = formattedMenuLink;\n          this.activateMenuItem(menu);\n          return true;\n        } else {\n          return this.activateMenuByUrl(urlPath, menu.subItems);\n        }\n      });\n    }\n  }\n\n  checkActiveMenuByUrl(urlPath: string): void {\n    if (!this.linkActive || this.linkActive !== urlPath) {\n      this.activateMenuByUrl(urlPath, this.menus);\n    }\n  }\n\n  /**\n   * <a id=\"colapseMethod\"></a>\n   *\n   * Método para colapsar (retrair) o menu.\n   */\n  collapse() {\n    this.validateToggleMenu(true);\n  }\n\n  debounceFilter(filter: string) {\n    clearTimeout(this.timeoutFilter);\n\n    this.timeoutFilter = setTimeout(() => {\n      this.filterProcess(filter);\n    }, poMenuDebounceTime);\n  }\n\n  /**\n   * <a id=\"expandMethod\"></a>\n   *\n   * Método para expandir (aumentar) o menu.\n   */\n  expand() {\n    this.validateToggleMenu(false);\n  }\n\n  subscribeToMenuItem() {\n    this.itemSubscription = this.menuItemsService.receiveFromChildMenuClicked().subscribe((menu: PoMenuItem) => {\n      this.clickMenuItem(menu);\n    });\n  }\n\n  subscribeToRoute() {\n    this.routeSubscription = this.router.events.subscribe(val => {\n      if (val instanceof NavigationEnd || val instanceof NavigationCancel) {\n        const urlRouter = this.checkingRouterChildrenFragments();\n        this.checkActiveMenuByUrl(urlRouter);\n      }\n    });\n  }\n\n  /**\n   * <a id=\"toggleMethod\"></a>\n   * Método que colapsa e expande o menu alternadamente.\n   *\n   * > Os métodos apenas vão colapsar/expandir o menu se:\n   *  - Todos os itens de menu tiverem valor nas propriedades `icon` e `shortLabel`.\n   */\n  toggle() {\n    this.validateToggleMenu(!this.collapsed);\n  }\n\n  toggleMenuMobile(): void {\n    this.mobileOpened = !this.mobileOpened;\n    this.collapsedMobile = this.collapsed && this.mobileOpened;\n\n    this.validateCollapseClass(this.collapsedMobile);\n\n    if (PoUtils.isMobile()) {\n      return;\n    }\n\n    if (this.mobileOpened) {\n      this.createResizeListener();\n    }\n  }\n\n  onMouseEnter(): void {\n    if (this.collapsed && this.automaticToggle) {\n      this.setCollapsed(false);\n      this.allowCollapseHover = true;\n    }\n  }\n\n  onMouseLeave(): void {\n    if (!this.collapsed && this.allowCollapseHover && this.automaticToggle) {\n      this.setCollapsed(true);\n    }\n  }\n\n  protected checkingRouterChildrenFragments() {\n    const childrenPrimary = this.router.parseUrl(this.router.url).root.children['primary'];\n\n    return childrenPrimary ? `/${childrenPrimary.segments.map(it => it.path).join('/')}` : '';\n  }\n\n  protected validateCollapseClass(collapsedMobile: boolean = false) {\n    const wrapper = this.element.nativeElement.parentNode;\n    this.renderer[this.isCollapsed && !collapsedMobile ? 'addClass' : 'removeClass'](wrapper, 'po-collapsed-menu');\n  }\n\n  private activateCollapseSubMenuItem() {\n    this.clearGroupMenuIfFirstLevel(this.activeMenuItem);\n\n    if (!this.collapsed && this.activeMenuItem['level'] > poMenuRootLevel && this.isActiveItemMenuSubMenu) {\n      this.openParentMenu(this.activeMenuItem);\n    }\n  }\n\n  private activateMenuItem(menu: PoMenuItem): void {\n    this.activeMenuItem = menu;\n    this.linkActive = menu.link;\n\n    if (this.activeMenuItem['level'] > poMenuRootLevel) {\n      this.openParentMenu(this.activeMenuItem);\n    } else {\n      this.groupedMenuItem = null;\n    }\n\n    this.menuItemsService.sendToChildMenuClicked({\n      active: this.activeMenuItem,\n      grouped: this.groupedMenuItem,\n      activatedByRoute: true\n    });\n  }\n\n  private areSubMenus(menus: Array<PoMenuItem>) {\n    return menus.every(menu => menu['level'] > poMenuRootLevel);\n  }\n\n  private clearGroupMenuIfFirstLevel(activeMenuItem: PoMenuItem) {\n    if (activeMenuItem['level'] === poMenuRootLevel) {\n      this.groupedMenuItem = undefined;\n    }\n  }\n\n  private clickMenuItem(menu: PoMenuItem) {\n    if (menu.action) {\n      this.executeMenuAction(menu);\n    }\n\n    if (menu['type'] === 'externalLink') {\n      PoUtils.openExternalLink(menu.link);\n    } else if (menu['type'] === 'internalLink') {\n      this.activateMenuItem(menu);\n    } else if (menu['type'] === 'subItems') {\n      if (this.filteringItems) {\n        this.filteringItems = false;\n      }\n\n      this.groupMenuItem(menu);\n    }\n\n    if (menu['type'] !== 'subItems') {\n      this.mobileOpened = false;\n    }\n  }\n\n  private convertToMenuItemFiltered(menuItem: any = { label: '', link: '', action: () => {} }): PoMenuItemFiltered {\n    const { label, link, action } = menuItem;\n\n    const menuItemFiltered: PoMenuItemFiltered = { label, link, action };\n\n    this.setMenuItemProperties(menuItemFiltered);\n\n    return menuItemFiltered;\n  }\n\n  private createResizeListener() {\n    this.resizeListener = this.renderer.listen('window', 'resize', () => {\n      this.toggleResize();\n      this.resizeListener();\n    });\n  }\n\n  private executeMenuAction(menu: PoMenuItem): void {\n    menu.action(menu);\n  }\n\n  private async filterItems(filter: string) {\n    const trimFilter = filter && filter.trim();\n\n    if (trimFilter) {\n      this.filteredItems = [];\n      this.filteredItems = this.filterService\n        ? await this.filterOnService(trimFilter)\n        : this.filterLocalItems(trimFilter);\n      this.filteringItems = true;\n    } else {\n      this.filteredItems = [...this.menus];\n      this.filteringItems = false;\n    }\n  }\n\n  private filterLocalItems(filter: string) {\n    const filteredItems = [];\n\n    this.findItems(this.menus, filter.toLowerCase(), filteredItems);\n\n    return filteredItems;\n  }\n\n  private filterProcess(filter: string) {\n    this.filterLoading = true;\n\n    this.filterItems(filter)\n      .then(() => {\n        this.filterLoading = false;\n\n        this.showNoData();\n        this.changeDetector.detectChanges();\n        this.menuItemsService.sendToChildMenuClicked({ active: this.activeMenuItem, grouped: this.groupedMenuItem });\n      })\n      .catch(error => {\n        this.filterLoading = false;\n        Promise.reject(error);\n      });\n  }\n\n  private async filterOnService(search: string = '') {\n    if (search.length >= poMenuMinLength) {\n      return await this.filterService\n        .getFilteredData(search, this.params)\n        .pipe(map(menuItemsFiltered => menuItemsFiltered.map(menuItem => this.convertToMenuItemFiltered(menuItem))))\n        .toPromise();\n    } else {\n      return this.filteredItems;\n    }\n  }\n\n  private findItems(menus: Array<PoMenuItem>, filter: string, filteredItems: Array<any>) {\n    menus.forEach(menu => {\n      const hasAction = this.searchTreeItems ? this.searchTreeItems : menu.action || menu.link;\n      const labelHasFilter = menu.label.toLowerCase().includes(filter);\n\n      if (labelHasFilter && hasAction) {\n        const newMenu = { ...menu };\n\n        if (newMenu.subItems?.length) {\n          if (!this.searchTreeItems) {\n            delete newMenu.subItems;\n          }\n          newMenu['type'] = this.setMenuType(newMenu);\n        }\n\n        filteredItems.push(newMenu);\n      }\n\n      if (menu.subItems) {\n        this.findItems(menu.subItems, filter, filteredItems);\n      }\n    });\n  }\n\n  private findParent(menus: Array<PoMenuItem>, menuItem: PoMenuItem): PoMenuItem {\n    const getParent = function (menuItems: Array<PoMenuItem>, id) {\n      if (menuItems) {\n        for (let index = 0; index < menuItems.length; index++) {\n          const menu = menuItems[index];\n          if (menu.subItems && menu.subItems.find(subItem => subItem['id'] === id)) {\n            return menu;\n          }\n          const found = getParent(menu.subItems, id);\n          if (found) {\n            return found;\n          }\n        }\n      }\n    };\n    return getParent(menus, menuItem['id']);\n  }\n\n  private findRootParent(menus: Array<PoMenuItem>, menu: PoMenuItem): PoMenuItem {\n    const findParent = this.findParent;\n\n    const getRootParent = function (menuItems: Array<PoMenuItem>, menuItem): PoMenuItem {\n      let parent = findParent(menuItems, menuItem);\n\n      if (parent['level'] !== poMenuRootLevel) {\n        parent = getRootParent(menuItems, parent);\n      }\n      return parent;\n    };\n    return getRootParent(menus, menu);\n  }\n\n  private getActiveMenuParent(menus: Array<PoMenuItem>, activeMenuItem: PoMenuItem, groupedMenuItem: PoMenuItem) {\n    if (this.areSubMenus([groupedMenuItem, activeMenuItem])) {\n      return this.findRootParent(menus, activeMenuItem);\n    }\n  }\n\n  private groupMenuItem(menu: PoMenuItem): void {\n    if (this.collapsed) {\n      this.toggleMenuCollapse();\n    }\n\n    menu['isOpened'] = !menu['isOpened'];\n    this.groupedMenuItem = menu;\n\n    if (\n      this.activeMenuItem &&\n      menu['isOpened'] &&\n      this.isActiveItemMenuSubMenu &&\n      this.isRootMenuEqualGroupedMenu(this.menus, this.activeMenuItem, menu)\n    ) {\n      this.activateMenuItem(this.activeMenuItem);\n    }\n\n    this.menuItemsService.sendToChildMenuClicked({ active: this.activeMenuItem, grouped: this.groupedMenuItem });\n  }\n\n  private isRootMenuEqualGroupedMenu(\n    menus: Array<PoMenuItem>,\n    activeMenuItem: PoMenuItem,\n    groupedMenuItem: PoMenuItem\n  ) {\n    const activeMenuRootParent = this.findRootParent(menus, activeMenuItem);\n    return activeMenuRootParent['id'] === groupedMenuItem['id'];\n  }\n\n  private openParentMenu(childMenu: PoMenuItem): void {\n    const parent = this.findParent(this.menus, childMenu);\n    parent['isOpened'] = true;\n    this.groupedMenuItem = parent;\n  }\n\n  private showNoData() {\n    this.noData = this.filteredItems.length === 0;\n  }\n\n  private stringify(menus: Array<PoMenuItem>): string {\n    // não faz o stringify da propriedade icon, pois pode conter objeto complexo e disparar um erro.\n    return JSON.stringify(this.menus, (key, value) => {\n      if (key !== 'icon') {\n        return value;\n      }\n    });\n  }\n\n  private toggleGroupedMenuItem() {\n    this.groupedMenuItem['isOpened'] = !this.collapsed && this.allowCollapseMenu;\n  }\n\n  private toggleMenuCollapse(collapsed: boolean = false) {\n    this.setCollapsed(collapsed);\n\n    if (this.groupedMenuItem && this.activeMenuItem) {\n      this.groupedMenuItem =\n        this.getActiveMenuParent(this.menus, this.activeMenuItem, this.groupedMenuItem) || this.groupedMenuItem;\n      this.toggleGroupedMenuItem();\n    }\n\n    if (this.activeMenuItem) {\n      this.activateCollapseSubMenuItem();\n      this.menuItemsService.sendToChildMenuClicked({\n        active: this.activeMenuItem,\n        grouped: this.groupedMenuItem,\n        activatedByRoute: true\n      });\n    }\n\n    this.updateMenu();\n  }\n\n  private toggleResize() {\n    if (this.mobileOpened) {\n      this.mobileOpened = false;\n      this.collapsedMobile = false;\n      this.validateCollapseClass(this.collapsedMobile);\n    }\n  }\n\n  private validateToggleMenu(collapsed: boolean) {\n    if (!this.allowCollapseMenu) {\n      return;\n    }\n\n    this.toggleMenuCollapse(collapsed);\n  }\n\n  private updateMenu() {\n    this.menuInitialized = true;\n    this.setMenuExtraProperties();\n    this.filteredItems = [...this.menus];\n    this.menuPrevious = this.stringify(this.menus);\n    this.validateMenus(this.menus);\n  }\n\n  private setCollapsed(value: boolean) {\n    this.collapsed = value;\n    this.toggleChange.emit(!value);\n  }\n}\n","@if (onlyMenuItem) {\n  <ng-container *ngTemplateOutlet=\"menuItemsTemplate; context: { showFilter: true, showTemplate: true }\"></ng-container>\n} @else {\n  @if (mobileOpened) {\n    <div class=\"po-menu-overlay\" (click)=\"toggleMenuMobile()\"></div>\n  }\n  <div>\n    <div class=\"po-menu-mobile po-clickable\" (click)=\"toggleMenuMobile()\">\n      <po-icon p-icon=\"ICON_MENU\"></po-icon>\n    </div>\n    <div class=\"po-menu\" [attr.aria-expanded]=\"!collapsed\" [ngClass]=\"{ 'po-menu-animation': mobileOpened }\">\n      <div class=\"po-menu-container\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n        <div class=\"po-menu-header\">\n          @if (logo || (shortLogo && enableCollapse)) {\n            <div class=\"po-menu-header-container-logo\">\n              <po-logo\n                [p-class]=\"enableCollapse ? 'po-menu-short-logo' : 'po-menu-logo'\"\n                [p-logo]=\"enableCollapse ? shortLogo || logo : logo\"\n                [p-logo-alt]=\"logoAlt\"\n                [p-link]=\"logoLink\"\n              ></po-logo>\n            </div>\n          }\n          @if (!enableCollapse && menuHeaderTemplate) {\n            <div class=\"po-menu-header-template\">\n              <ng-container *ngTemplateOutlet=\"menuCustomTemplate\"></ng-container>\n            </div>\n          }\n          @if (filter) {\n            <ng-container *ngTemplateOutlet=\"menuFilterTemplate\"></ng-container>\n          }\n        </div>\n        <div class=\"po-menu-body\">\n          <div class=\"po-menu-outer\">\n            <div class=\"po-menu-inner\">\n              <nav class=\"po-menu-nav\">\n                <ng-container\n                  *ngTemplateOutlet=\"menuItemsTemplate; context: { showFilter: false, showTemplate: false }\"\n                ></ng-container>\n              </nav>\n            </div>\n          </div>\n        </div>\n      </div>\n      @if (hasFooter) {\n        <div class=\"po-menu-footer\">\n          <button\n            class=\"po-menu-collapse-button-icon\"\n            type=\"button\"\n            [attr.aria-label]=\"enableCollapseButton ? literals.close : literals.open\"\n            (click)=\"toggle()\"\n          >\n            @if (enableCollapseButton) {\n              <span aria-hidden=\"true\">{{ literals.close }}</span>\n            }\n            <po-icon [p-icon]=\"enableCollapse ? 'ICON_MENU_OPEN' : 'ICON_MENU_CLOSE'\"></po-icon>\n          </button>\n        </div>\n      }\n    </div>\n  </div>\n}\n\n<ng-template #menuCustomTemplate>\n  <ng-container *ngTemplateOutlet=\"menuHeaderTemplate.templateRef\"></ng-container>\n</ng-template>\n\n<ng-template #menuFilterTemplate>\n  <po-menu-filter\n    [p-enable-collapse]=\"enableCollapse\"\n    [p-loading]=\"filterLoading\"\n    [p-components-size]=\"componentsSize\"\n    (p-filter)=\"debounceFilter($event)\"\n  ></po-menu-filter>\n</ng-template>\n\n<ng-template #menuItemsTemplate let-showFilter=\"showFilter\" let-showTemplate=\"showTemplate\">\n  @if (menuHeaderTemplate && showTemplate) {\n    <ng-container *ngTemplateOutlet=\"menuCustomTemplate\"></ng-container>\n  }\n\n  @if (filter && showFilter) {\n    <ng-container *ngTemplateOutlet=\"menuFilterTemplate\"></ng-container>\n  }\n\n  <ul class=\"po-menu-list\" role=\"menu\">\n    @if (noData) {\n      <li class=\"po-menu-list-item\" role=\"presentation\">\n        <po-menu-item\n          p-icon=\"ICON_INFO\"\n          p-type=\"noData\"\n          [p-level]=\"1\"\n          [p-label]=\"literals.itemNotFound\"\n          [p-short-label]=\"literals.itemNotFound\"\n        ></po-menu-item>\n      </li>\n    }\n    @for (menu of filteredItems; track menu; let menuIndex = $index) {\n      <li\n        class=\"po-menu-list-item\"\n        role=\"presentation\"\n        [attr.aria-level]=\"menu.level\"\n        [class.po-menu-item-first]=\"menuIndex === 0\"\n      >\n        <po-menu-item\n          [p-action]=\"menu.action\"\n          [p-badge-alert]=\"menu.badgeAlert\"\n          [p-badge-color]=\"menu.badge?.color\"\n          [p-badge-value]=\"menu.badge?.value\"\n          [p-collapsed-menu]=\"enableCollapse\"\n          [p-icon]=\"allowIcons ? menu.icon : null\"\n          [p-id]=\"menu.id\"\n          [p-label]=\"menu.label\"\n          [p-level]=\"menu.level\"\n          [p-link]=\"menu.link\"\n          [p-short-label]=\"menu.shortLabel\"\n          [p-sub-items]=\"menu.subItems\"\n          [p-type]=\"menu.type\"\n        ></po-menu-item>\n      </li>\n    }\n  </ul>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PoBadgeModule } from '../po-badge/po-badge.module';\nimport { PoFieldModule } from '../po-field/po-field.module';\nimport { PoLoadingModule } from '../po-loading/po-loading.module';\nimport { PoLogoModule } from '../po-logo/po-logo.module';\n\nimport { PoIconModule } from '../po-icon/po-icon.module';\nimport { PoMenuFilterComponent } from './po-menu-filter/po-menu-filter.component';\nimport { PoMenuHeaderTemplateDirective } from './po-menu-header-template/po-menu-header-template.directive';\nimport { PoMenuItemComponent } from './po-menu-item/po-menu-item.component';\nimport { PoMenuComponent } from './po-menu.component';\nimport { PoTooltipModule } from '../../directives/po-tooltip/po-tooltip.module';\n\n/**\n * @description\n *\n * Módulo do componente po-menu.\n */\n@NgModule({\n  imports: [\n    CommonModule,\n    RouterModule,\n    PoBadgeModule,\n    PoFieldModule,\n    PoLoadingModule,\n    PoLogoModule,\n    PoIconModule,\n    PoTooltipModule\n  ],\n  declarations: [PoMenuComponent, PoMenuFilterComponent, PoMenuHeaderTemplateDirective, PoMenuItemComponent],\n  exports: [PoMenuComponent, PoMenuHeaderTemplateDirective]\n})\nexport class PoMenuModule {}\n","import { Component, Input, TemplateRef, ViewContainerRef, inject } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { isExternalLink, PoUtils } from '../../../../utils/util';\n\n@Component({\n  selector: 'po-navbar-action',\n  templateUrl: './po-navbar-action.component.html',\n  standalone: false\n})\nexport class PoNavbarActionComponent {\n  private readonly router = inject(Router);\n\n  @Input('p-action') action?: Function;\n\n  @Input('p-icon') icon: string | TemplateRef<void>;\n\n  @Input('p-label') label: string;\n\n  @Input('p-link') link?: string;\n\n  @Input('p-tooltip-text') tooltip?: string;\n\n  click() {\n    if (this?.action) {\n      this.action();\n      return;\n    }\n\n    if (this?.link) {\n      return this.openUrl(this.link);\n    }\n  }\n\n  private openUrl(url: string) {\n    if (isExternalLink(url)) {\n      return PoUtils.openExternalLink(url);\n    }\n\n    if (url) {\n      return this.router.navigate([url]);\n    }\n  }\n}\n","<po-icon\n  tabindex=\"0\"\n  class=\"po-navbar-action-content po-clickable\"\n  [p-icon]=\"icon\"\n  [p-tooltip]=\"tooltip\"\n  (click)=\"click()\"\n></po-icon>\n","import { Component, Input } from '@angular/core';\n\nimport { PoNavbarIconAction } from '../../interfaces/po-navbar-icon-action.interface';\n\n@Component({\n  selector: 'po-navbar-action-popup',\n  templateUrl: './po-navbar-action-popup.component.html',\n  standalone: false\n})\nexport class PoNavbarActionPopupComponent {\n  @Input('p-icon-actions') iconActions: Array<PoNavbarIconAction>;\n\n  getLastIconAction() {\n    if (this.iconActions && this.iconActions.length) {\n      return this.iconActions[this.iconActions.length - 1].icon;\n    }\n  }\n}\n","<div tabindex=\"0\" #target class=\"po-navbar-action-popup-content po-clickable\" (click)=\"popup.toggle()\">\n  <po-icon [p-icon]=\"getLastIconAction()\"></po-icon>\n</div>\n\n<po-popup #popup p-size=\"medium\" [p-actions]=\"iconActions\" [p-target]=\"target\"> </po-popup>\n","import { Component, Input } from '@angular/core';\n\nimport { PoNavbarIconAction } from '../interfaces/po-navbar-icon-action.interface';\n\n@Component({\n  selector: 'po-navbar-actions',\n  templateUrl: './po-navbar-actions.component.html',\n  standalone: false\n})\nexport class PoNavbarActionsComponent {\n  private _iconActions: Array<PoNavbarIconAction>;\n\n  @Input('p-icon-actions') set iconActions(actions: Array<PoNavbarIconAction>) {\n    this._iconActions = actions.map(action => ({ ...action, separator: true, url: action.link }));\n  }\n\n  get iconActions() {\n    return this._iconActions;\n  }\n}\n","@for (iconAction of iconActions; track iconAction) {\n  <po-navbar-action\n    class=\"po-navbar-action\"\n    [p-action]=\"iconAction.action\"\n    [p-icon]=\"iconAction.icon\"\n    [p-label]=\"iconAction.label\"\n    [p-link]=\"iconAction.link\"\n    [p-tooltip-text]=\"iconAction.tooltip\"\n  >\n  </po-navbar-action>\n}\n\n<po-navbar-action-popup class=\"po-navbar-action-popup\" [p-icon-actions]=\"iconActions\"> </po-navbar-action-popup>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoNavbarActionComponent } from './po-navbar-action/po-navbar-action.component';\nimport { PoNavbarActionPopupComponent } from './po-navbar-action-popup/po-navbar-action-popup.component';\nimport { PoNavbarActionsComponent } from './po-navbar-actions.component';\nimport { PoPopupModule } from '../../po-popup/po-popup.module';\nimport { PoTooltipModule } from '../../../directives/po-tooltip/po-tooltip.module';\nimport { PoIconModule } from './../../po-icon/po-icon.module';\n\n@NgModule({\n  imports: [CommonModule, PoPopupModule, PoTooltipModule, PoIconModule],\n  declarations: [PoNavbarActionComponent, PoNavbarActionPopupComponent, PoNavbarActionsComponent],\n  exports: [PoNavbarActionsComponent]\n})\nexport class PoNavbarActionsModule {}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n  selector: 'po-navbar-item-navigation-icon',\n  templateUrl: './po-navbar-item-navigation-icon.component.html',\n  standalone: false\n})\nexport class PoNavbarItemNavigationIconComponent {\n  @Input('p-disabled') disabled: boolean;\n\n  @Input('p-icon') icon: boolean;\n\n  @Output('p-click') click: EventEmitter<any> = new EventEmitter<any>();\n}\n","<div\n  [ngClass]=\"{ 'po-navbar-item-navigation-icon-disabled': disabled, 'po-clickable': !disabled }\"\n  tabindex=\"0\"\n  (click)=\"disabled ? undefined : click.emit(icon)\"\n>\n  <po-icon [p-icon]=\"icon\"></po-icon>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n  selector: 'po-navbar-item-navigation',\n  templateUrl: './po-navbar-item-navigation.component.html',\n  standalone: false\n})\nexport class PoNavbarItemNavigationComponent {\n  @Input('p-disable-left') disableLeft: boolean;\n\n  @Input('p-disable-right') disableRight: boolean;\n\n  @Output('p-click') click: EventEmitter<any> = new EventEmitter<any>();\n}\n","<po-navbar-item-navigation-icon\n  class=\"po-navbar-item-navigation-icon\"\n  p-icon=\"ICON_ARROW_LEFT\"\n  [p-disabled]=\"disableLeft\"\n  (p-click)=\"click.emit($event)\"\n>\n</po-navbar-item-navigation-icon>\n\n<po-navbar-item-navigation-icon\n  class=\"po-navbar-item-navigation-icon\"\n  p-icon=\"ICON_ARROW_RIGHT\"\n  [p-disabled]=\"disableRight\"\n  (p-click)=\"click.emit($event)\"\n>\n</po-navbar-item-navigation-icon>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PoNavbarItemNavigationComponent } from './po-navbar-item-navigation.component';\nimport { PoNavbarItemNavigationIconComponent } from './po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component';\nimport { PoIconModule } from '../../po-icon';\n\n@NgModule({\n  imports: [CommonModule, RouterModule, PoIconModule],\n  declarations: [PoNavbarItemNavigationComponent, PoNavbarItemNavigationIconComponent],\n  exports: [PoNavbarItemNavigationComponent]\n})\nexport class PoNavbarItemNavigationModule {}\n","import { Component, Input, EventEmitter, Output } from '@angular/core';\n\nimport { PoNavbarItem } from '../../interfaces/po-navbar-item.interface';\n\nimport { isExternalLink } from '../../../../utils/util';\n\n@Component({\n  selector: 'po-navbar-item',\n  templateUrl: './po-navbar-item.component.html',\n  standalone: false\n})\nexport class PoNavbarItemComponent {\n  @Input('p-action') action: Function;\n\n  @Input('p-clickable') clickable?: boolean;\n\n  @Input('p-label') label: string;\n\n  @Input('p-link') link?: string;\n\n  @Output('p-click') click: EventEmitter<PoNavbarItem> = new EventEmitter<PoNavbarItem>();\n\n  get type() {\n    return isExternalLink(this.link) ? 'externalLink' : 'internalLink';\n  }\n\n  itemClick(label?: string, link?: string) {\n    if (this.action) {\n      this.action({ label, link });\n    }\n\n    this.click.emit();\n  }\n}\n","@switch (type) {\n  @case ('externalLink') {\n    <a class=\"po-navbar-item-link\" [class.po-clickable]=\"clickable\" [href]=\"link\" target=\"_blank\" (click)=\"itemClick()\">\n      {{ label }}\n    </a>\n  }\n  @case ('internalLink') {\n    <a\n      class=\"po-navbar-item-link\"\n      [class.po-clickable]=\"clickable\"\n      [routerLink]=\"link\"\n      (click)=\"itemClick(label, link)\"\n    >\n      {{ label }}\n    </a>\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  ViewChild,\n  ViewChildren,\n  inject\n} from '@angular/core';\nimport { NavigationCancel, NavigationEnd, Router } from '@angular/router';\n\nimport { Subscription } from 'rxjs';\n\nimport { PoNavbarItem } from '../interfaces/po-navbar-item.interface';\nimport { PoNavbarItemComponent } from './po-navbar-item/po-navbar-item.component';\n\n@Component({\n  selector: 'po-navbar-items',\n  templateUrl: './po-navbar-items.component.html',\n  standalone: false\n})\nexport class PoNavbarItemsComponent implements OnInit, OnDestroy {\n  private readonly router = inject(Router);\n\n  @ViewChild('navbarItemsContainer', { read: ElementRef, static: true }) navbarItemsContainer: ElementRef;\n\n  @ViewChildren(PoNavbarItemComponent, { read: ElementRef }) allNavbarItems: QueryList<any>;\n\n  @Input('p-items') items: Array<PoNavbarItem>;\n\n  selectedItem: PoNavbarItem;\n\n  private routeSubscription: Subscription;\n\n  ngOnDestroy() {\n    this.routeSubscription.unsubscribe();\n  }\n\n  ngOnInit() {\n    this.subscribeToRoute();\n  }\n\n  private checkActiveItemByUrl(urlRouter: string) {\n    const urlArray = urlRouter.split('/');\n    let counter = urlArray.length;\n\n    while (counter >= 0) {\n      const url = urlArray.slice(0, counter).join('/');\n      this.selectedItem = this.items.find(item => item.link === url);\n\n      if (this.selectedItem) {\n        break;\n      }\n      counter--;\n    }\n  }\n\n  private checkRouterChildrenFragments() {\n    const childrenPrimary = this.router.parseUrl(this.router.url).root.children['primary'];\n\n    return childrenPrimary ? `/${childrenPrimary.segments.map(it => it.path).join('/')}` : '/';\n  }\n\n  private subscribeToRoute() {\n    this.routeSubscription = this.router.events.subscribe(val => {\n      if (val instanceof NavigationEnd || val instanceof NavigationCancel) {\n        const urlRouter = this.checkRouterChildrenFragments();\n        this.checkActiveItemByUrl(urlRouter);\n      }\n    });\n  }\n}\n","<nav>\n  <ul class=\"po-navbar-items-container\" #navbarItemsContainer>\n    @for (item of items; track item) {\n      <li class=\"po-navbar-item\" [class.po-navbar-item-selected]=\"selectedItem === item\">\n        <po-navbar-item\n          [p-action]=\"item.action\"\n          [p-clickable]=\"selectedItem !== item\"\n          [p-label]=\"item.label\"\n          [p-link]=\"item.link\"\n        >\n        </po-navbar-item>\n      </li>\n    }\n  </ul>\n</nav>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PoNavbarItemComponent } from './po-navbar-item/po-navbar-item.component';\nimport { PoNavbarItemsComponent } from './po-navbar-items.component';\n\n@NgModule({\n  imports: [CommonModule, RouterModule],\n  declarations: [PoNavbarItemComponent, PoNavbarItemsComponent],\n  exports: [PoNavbarItemsComponent]\n})\nexport class PoNavbarItemsModule {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'po-navbar-logo',\n  templateUrl: './po-navbar-logo.component.html',\n  standalone: false\n})\nexport class PoNavbarLogoComponent {\n  @Input('p-logo') logo?: string;\n\n  @Input('p-logo-alt') logoAlt?: string;\n}\n","@if (logo) {\n  <po-logo p-class=\"po-navbar-logo-image\" [p-logo]=\"logo\" [p-logo-alt]=\"logoAlt\"></po-logo>\n}\n","import { Directive, Input } from '@angular/core';\n\nimport { poLocaleDefault } from '../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { convertToBoolean } from '../../utils/util';\nimport { PoMenuComponent } from '../po-menu';\n\nimport { PoNavbarIconAction } from './interfaces/po-navbar-icon-action.interface';\nimport { PoNavbarItem } from './interfaces/po-navbar-item.interface';\nimport { PoNavbarLiterals } from './interfaces/po-navbar-literals.interface';\n\nexport const poNavbarLiteralsDefault = {\n  en: <PoNavbarLiterals>{\n    navbarLinks: 'Navbar links'\n  },\n  es: <PoNavbarLiterals>{\n    navbarLinks: 'Navbar links'\n  },\n  pt: <PoNavbarLiterals>{\n    navbarLinks: 'Navbar links'\n  },\n  ru: <PoNavbarLiterals>{\n    navbarLinks: 'Navbar связи'\n  }\n};\n\n/**\n * @description\n *\n * O componente `po-navbar` é um cabeçalho fixo que permite apresentar uma lista de links para facilitar a navegação pelas\n * páginas da aplicação. Também possui ícones com ações.\n *\n * Quando utilizado em uma resolução menor que `768px`, o componente utilizará o menu corrente da aplicação para\n * incluir seus itens.\n *\n * Ao utilizar Navbar com Menu e ambos tiverem logo, será mantido o logo do Navbar.\n */\n@Directive()\nexport abstract class PoNavbarBaseComponent {\n  // Menu que esta sendo exibido na pagina corrente.\n  applicationMenu: PoMenuComponent;\n\n  private _iconActions: Array<PoNavbarIconAction> = [];\n  private _items: Array<PoNavbarItem> = [];\n  private _literals: PoNavbarLiterals;\n  private _logo: string;\n  private _shadow: boolean = false;\n  private readonly language: string = poLocaleDefault;\n\n  /**\n   * @deprecated v23.x.x\n   *\n   * @optional\n   *\n   * @description\n   *\n   * Define uma lista de ações apresentadas em ícones no lado direito do `po-navbar`.\n   */\n  @Input('p-icon-actions') set iconActions(value: Array<PoNavbarIconAction>) {\n    this._iconActions = Array.isArray(value) ? value : [];\n  }\n\n  get iconActions(): Array<PoNavbarIconAction> {\n    return this._iconActions;\n  }\n\n  /**\n   * @deprecated v23.x.x\n   *\n   * @optional\n   *\n   * @description\n   *\n   * Define uma lista de items do `po-navbar`.\n   */\n  @Input('p-items') set items(value: Array<PoNavbarItem>) {\n    this._items = Array.isArray(value) ? value : [];\n  }\n\n  get items(): Array<PoNavbarItem> {\n    return this._items;\n  }\n\n  /**\n   * @deprecated v23.x.x\n   *\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com a literal usada na propriedade `p-literals`.\n   *\n   * Para customizar a literal, basta declarar um objeto do tipo `PoNavbarLiterals` conforme exemplo abaixo:\n   *\n   * ```\n   *  const customLiterals: PoNavbarLiterals = {\n   *    navbarLinks: 'Itens de navegação'\n   *  };\n   * ```\n   *\n   * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n   *\n   * ```\n   * <po-navbar\n   *   [p-literals]=\"customLiterals\">\n   * </po-navbar>\n   * ```\n   *\n   * > O objeto padrão de literais será traduzido de acordo com o idioma do\n   * [`PoI18nService`](/documentation/po-i18n) ou do browser.\n   */\n  @Input('p-literals') set literals(value: PoNavbarLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poNavbarLiteralsDefault[poLocaleDefault],\n        ...poNavbarLiteralsDefault[this.language],\n        ...value\n      };\n    } else {\n      this._literals = poNavbarLiteralsDefault[this.language];\n    }\n  }\n  get literals() {\n    return this._literals || poNavbarLiteralsDefault[this.language];\n  }\n\n  /**\n   * @deprecated v23.x.x\n   *\n   * @optional\n   *\n   * @description\n   *\n   * Define a logo apresentada `po-navbar`.\n   */\n  @Input('p-logo') set logo(value: string) {\n    this._logo = value;\n\n    if (this.applicationMenu) {\n      this.validateMenuLogo();\n    }\n  }\n  get logo() {\n    return this._logo;\n  }\n\n  /**\n   * @deprecated v23.x.x\n   *\n   * @optional\n   *\n   * @description\n   *\n   * Define o texto alternativo para a logomarca.\n   *\n   * > **Importante**\n   * > Caso esta propriedade não seja definida o texto padrão será \"Logomarca início\".\n   *\n   * @default `Logomarca início`\n   */\n  @Input('p-logo-alt') logoAlt?: string;\n\n  /**\n   * @deprecated v23.x.x\n   *\n   * @optional\n   *\n   * @description\n   *\n   * Aplica uma sombra na parte inferior do `po-navbar`.\n   *\n   * @default `false`\n   */\n  @Input('p-shadow') set shadow(value: boolean) {\n    this._shadow = convertToBoolean(value);\n  }\n\n  get shadow(): boolean {\n    return this._shadow;\n  }\n\n  constructor(languageService: PoLanguageService) {\n    this.language = languageService.getShortLanguage();\n  }\n  protected abstract validateMenuLogo(): void;\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  ViewChild,\n  inject\n} from '@angular/core';\nimport { animate, AnimationBuilder, AnimationFactory, AnimationPlayer, keyframes, style } from '@angular/animations';\n\nimport { delay, filter, finalize } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nimport { uuid } from '../../utils/util';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\nimport { PoMenuGlobalService } from '../po-menu/services/po-menu-global.service';\nimport { PoMenuItem } from '../po-menu/po-menu-item.interface';\nimport { PoMenuComponent } from '../po-menu/po-menu.component';\n\nimport { PoNavbarBaseComponent } from './po-navbar-base.component';\nimport { PoNavbarItem } from './interfaces/po-navbar-item.interface';\nimport { PoNavbarItemsComponent } from './po-navbar-items/po-navbar-items.component';\n\nconst poNavbarNavigationWidth = 88;\nconst poNavbarMenuMedia = 768;\nconst poNavbarMatchMedia = `(max-width: ${poNavbarMenuMedia}px)`;\nconst poNavbarTiming = '250ms ease';\n\n/**\n * @deprecated v23.x.x use `po-header`\n *\n * @docsExtends PoNavbarBaseComponent\n */\n@Component({\n  selector: 'po-navbar',\n  templateUrl: './po-navbar.component.html',\n  standalone: false\n})\nexport class PoNavbarComponent extends PoNavbarBaseComponent implements AfterViewInit, OnDestroy, OnInit {\n  private readonly renderer = inject(Renderer2);\n  private readonly builder = inject(AnimationBuilder);\n  private readonly changeDetector = inject(ChangeDetectorRef);\n  private readonly menuGlobalService = inject(PoMenuGlobalService);\n\n  @ViewChild(PoNavbarItemsComponent, { read: ElementRef, static: true }) navbarItemsElement: ElementRef;\n\n  @ViewChild(PoNavbarItemsComponent, { static: true }) navbarItems: PoNavbarItemsComponent;\n\n  disableRight: boolean;\n  showItemsNavigation: boolean = false;\n\n  protected windowResizeListener: () => void;\n\n  private _menuComponent;\n\n  private isNavbarUpdateMenu: boolean = false;\n  private readonly id = uuid();\n  private mediaQuery: any;\n  private offset: number = 0;\n  private player: AnimationPlayer;\n  private readonly menuItems: Array<PoMenuItem>;\n  private previousMenuComponentId;\n  private previousMenusItems = [];\n\n  private applicationMenuSubscription: Subscription;\n  private menusSubscription: Subscription;\n  private removedMenuSubscription: Subscription;\n\n  get navbarItemNavigationDisableLeft() {\n    return this.offset === 0;\n  }\n\n  get navbarItemNavigationDisableRight() {\n    return this.disableRight && this.offset !== 0;\n  }\n\n  @ViewChild(PoMenuComponent) set menuComponent(menu: PoMenuComponent) {\n    this._menuComponent = menu;\n\n    this.previousMenuComponentId = menu?.id || this.previousMenuComponentId;\n  }\n\n  private get isCollapsedMedia() {\n    return window.innerWidth < poNavbarMenuMedia;\n  }\n\n  constructor() {\n    const poLanguageService = inject(PoLanguageService);\n\n    super(poLanguageService);\n    this.windowResizeListener = this.renderer.listen(window, 'resize', this.displayItemsNavigation.bind(this));\n  }\n\n  ngOnInit() {\n    // necessário para quando o menu da aplicação carregar os itens lazy e navbar estiver colapsado,\n    // quando isso acontece, o navbar inclui 1 item de menu \"Navbar links\", portanto é removido quando\n    // os novos itens de menu é carregado, a partir disso este tratamento é necessario para incluir\n    // o navbar links apos a adição dos itens de menu da aplicação.\n    this.menusSubscription = this.menuGlobalService.receiveMenus$.subscribe(newMenus => {\n      const previousMenusiIsNavbarLinks =\n        this.previousMenusItems?.length === 1 && this.previousMenusItems[0].id === this.id;\n\n      if (this.applicationMenu && this.isCollapsedMedia && this.isNavbarUpdateMenu && previousMenusiIsNavbarLinks) {\n        this.isNavbarUpdateMenu = false;\n\n        this.applicationMenu.menus = [\n          { label: this.literals.navbarLinks, subItems: this.items, id: this.id },\n          ...newMenus\n        ];\n      }\n\n      this.isNavbarUpdateMenu = false;\n      this.previousMenusItems = newMenus;\n    });\n\n    this.removedMenuSubscription = this.menuGlobalService.receiveRemovedApplicationMenu$.subscribe(removedMenuId => {\n      // verifica se o menu removido foi o presente no navbar, caso sim, ele mantem o applictionMenu.\n      // é preciso para tratar a sequencia do ngDestroy, quando o menu do navbar era removido do DOM\n      // disparava esse evento, sendo necessario tratar, para não tornar indefinido o applicationMenu\n      this.applicationMenu =\n        this.applicationMenu && this.previousMenuComponentId === removedMenuId ? this.applicationMenu : undefined;\n\n      this.changeDetector.detectChanges();\n\n      if (!this.applicationMenu && this.mediaQuery) {\n        this.mediaQuery.removeListener(this.onMediaQueryChange);\n      }\n    });\n\n    this.applicationMenuSubscription = this.menuGlobalService.receiveApplicationMenu$\n      .pipe(delay(100))\n      .subscribe(newMenu => {\n        this.applicationMenu = this.previousMenuComponentId === newMenu.id ? undefined : newMenu;\n\n        this.changeDetector.detectChanges();\n\n        if (this.applicationMenu) {\n          this.initNavbarMenu();\n        }\n      });\n  }\n\n  ngAfterViewInit() {\n    this.displayItemsNavigation();\n  }\n\n  ngOnDestroy() {\n    if (this.mediaQuery) {\n      this.mediaQuery.removeListener(this.onMediaQueryChange);\n    }\n\n    this.removedMenuSubscription?.unsubscribe();\n    this.applicationMenuSubscription?.unsubscribe();\n    this.menusSubscription?.unsubscribe();\n  }\n\n  navigateItems(orientation: string) {\n    orientation === 'left' ? this.navigateLeft() : this.navigateRight();\n\n    this.animate(this.offset);\n  }\n\n  protected validateMenuLogo() {\n    if (this.applicationMenu.logo && this.logo) {\n      this.applicationMenu.logo = undefined;\n      this.changeDetector.detectChanges();\n    }\n  }\n\n  private allNavbarItemsWidth() {\n    return this.navbarItems.allNavbarItems.reduce(\n      (previous: any, current: any) => previous + current.nativeElement.offsetWidth,\n      0\n    );\n  }\n\n  private animate(offset: number) {\n    const animation: AnimationFactory = this.buildTransitionAnimation(offset);\n\n    this.player = animation.create(this.navbarItems.navbarItemsContainer.nativeElement);\n    this.player.play();\n  }\n\n  private buildTransitionAnimation(offset: number) {\n    return this.builder.build([animate(poNavbarTiming, keyframes([style({ transform: `translateX(${-offset}px)` })]))]);\n  }\n\n  private changeNavbarMenuItems(isCollapsedMedia: any, navbarItems: Array<PoNavbarItem>, label: string) {\n    if (isCollapsedMedia) {\n      this.applicationMenu.menus = [{ label, subItems: navbarItems, id: this.id }, ...this.applicationMenu.menus];\n    } else {\n      this.applicationMenu.menus = this.applicationMenu.menus.filter(m => m.id !== this.id);\n    }\n\n    this.isNavbarUpdateMenu = true;\n\n    this.changeDetector.detectChanges();\n  }\n\n  private calculateLeftNavigation() {\n    let calculatedOffset: number;\n\n    this.navbarItems.allNavbarItems.some(navbarItem => {\n      const navbarItemOffset = navbarItem.nativeElement.offsetLeft;\n      const navbarItemWidth = navbarItem.nativeElement.offsetWidth;\n\n      if (navbarItemOffset >= this.offset) {\n        calculatedOffset = navbarItemOffset - (this.navbarItemsWidth() - navbarItemWidth);\n        return true;\n      }\n    });\n    return calculatedOffset;\n  }\n\n  private calculateRightNavigation(itemBreakPoint: number) {\n    let calculatedOffset: number;\n\n    this.navbarItems.allNavbarItems.some(navbarItem => {\n      const offsetLeft = navbarItem.nativeElement.offsetLeft;\n      const finalPosition = navbarItem.nativeElement.offsetWidth + offsetLeft;\n\n      if (itemBreakPoint < finalPosition) {\n        calculatedOffset = offsetLeft;\n        return true;\n      }\n    });\n    return calculatedOffset;\n  }\n\n  private displayItemsNavigation() {\n    this.showItemsNavigation = this.navbarItemsWidth() < this.allNavbarItemsWidth() + poNavbarNavigationWidth;\n\n    this.changeDetector.detectChanges();\n\n    if (this.offset !== 0) {\n      this.setOffsetToZero();\n      this.animate(this.offset);\n    }\n  }\n\n  private initNavbarMenu() {\n    this.mediaQuery = window.matchMedia(poNavbarMatchMedia);\n\n    if (this.isCollapsedMedia) {\n      this.changeNavbarMenuItems(true, this.items, this.literals.navbarLinks);\n    }\n\n    this.validateMenuLogo();\n\n    this.mediaQuery.addListener(this.onMediaQueryChange);\n  }\n\n  private navbarItemsWidth() {\n    return this.navbarItemsElement.nativeElement.offsetWidth;\n  }\n\n  private navigateLeft() {\n    this.disableRight = false;\n\n    this.offset = this.calculateLeftNavigation();\n\n    if (this.offset < 0) {\n      this.setOffsetToZero();\n    }\n  }\n\n  private navigateRight() {\n    const maxAllowedOffset = this.allNavbarItemsWidth() - this.navbarItemsWidth();\n    const itemBreakPoint = this.offset + this.navbarItemsWidth();\n\n    this.offset = this.calculateRightNavigation(itemBreakPoint);\n\n    this.validateMaxOffset(maxAllowedOffset);\n  }\n\n  private readonly onMediaQueryChange = changed => {\n    this.changeNavbarMenuItems(changed.matches, this.items, this.literals.navbarLinks);\n  };\n\n  private setOffsetToZero() {\n    this.offset = 0;\n  }\n\n  private validateMaxOffset(maxAllowedOffset: number) {\n    if (this.offset >= maxAllowedOffset) {\n      this.offset = maxAllowedOffset;\n      this.disableRight = true;\n    }\n  }\n}\n","<header class=\"po-navbar\" [ngClass]=\"{ 'po-navbar-shadow': shadow }\">\n  <po-navbar-logo\n    class=\"po-navbar-logo\"\n    [ngClass]=\"{ 'po-navbar-logo-menu': !!applicationMenu, 'po-navbar-no-logo': !logo }\"\n    [p-logo]=\"logo\"\n  >\n  </po-navbar-logo>\n\n  <po-navbar-items class=\"po-navbar-items\" [p-items]=\"items\"> </po-navbar-items>\n\n  @if (showItemsNavigation) {\n    <po-navbar-item-navigation\n      class=\"po-navbar-item-navigation\"\n      [p-disable-left]=\"navbarItemNavigationDisableLeft\"\n      [p-disable-right]=\"navbarItemNavigationDisableRight\"\n      (p-click)=\"navigateItems($event)\"\n    >\n    </po-navbar-item-navigation>\n  }\n\n  <po-navbar-actions class=\"po-navbar-actions\" [p-icon-actions]=\"iconActions\"> </po-navbar-actions>\n</header>\n\n@if (!applicationMenu) {\n  <po-menu [p-menus]=\"items\"> </po-menu>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoMenuModule } from '../po-menu/po-menu.module';\nimport { PoIconModule } from './../po-icon/po-icon.module';\nimport { PoLogoModule } from './../po-logo/po-logo.module';\nimport { PoNavbarActionsModule } from './po-navbar-actions/po-navbar-actions.module';\nimport { PoNavbarItemNavigationModule } from './po-navbar-item-navigation/po-navbar-item-navigation.module';\nimport { PoNavbarItemsModule } from './po-navbar-items/po-navbar-items.module';\nimport { PoNavbarLogoComponent } from './po-navbar-logo/po-navbar-logo.component';\nimport { PoNavbarComponent } from './po-navbar.component';\n\n/**\n * @deprecated v23.x.x use `po-header`\n *\n * @description\n *\n * Módulo do componente `po-navbar`.\n * > Esse componente está **depreciado** e será removido na `v23.x.x`. Recomendamos utilizar o componente\n * [po-header](https://po-ui.io/documentation/po-header), que oferece compatibilidade com todas as funcionalidades do\n * `po-navbar`, além de maior flexibilidade, usabilidade e acessibilidade.\n * >\n * > Para o correto funcionamento do componente `po-navbar`, deve ser importado o módulo `BrowserAnimationsModule` no\n * módulo principal da sua aplicação.\n *\n * Módulo da aplicação:\n * ```\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n * import { PoModule } from '@po-ui/ng-components';\n * ...\n *\n * @NgModule({\n *   imports: [\n *     BrowserModule,\n *     BrowserAnimationsModule,\n *     ...\n *     PoModule\n *   ],\n *   declarations: [\n *     AppComponent,\n *     ...\n *   ],\n *   providers: [],\n *   bootstrap: [AppComponent]\n * })\n * export class AppModule { }\n * ```\n *\n * Em aplicações Standalone, utilize a seguinte configuração para o bootstrap:\n *\n * ```\n * import { bootstrapApplication } from '@angular/platform-browser';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n * import { AppComponent } from './app.component';\n *\n * bootstrapApplication(AppComponent, {\n *   providers: [importProvidersFrom(BrowserAnimationsModule)]\n * }).catch(err => console.error(err));\n * ```\n */\n@NgModule({\n  imports: [\n    CommonModule,\n    PoIconModule,\n    PoLogoModule,\n    PoMenuModule,\n    PoNavbarActionsModule,\n    PoNavbarItemNavigationModule,\n    PoNavbarItemsModule\n  ],\n  declarations: [PoNavbarComponent, PoNavbarLogoComponent],\n  exports: [PoNavbarComponent]\n})\nexport class PoNavbarModule {}\n","/**\n * @docsPrivate\n *\n * @description\n *\n * O componente **po-page-content** é utilizado como o container para o conteúdo da página.\n */\nexport class PoPageContentBaseComponent {\n  protected resizeListener: () => void;\n}\n","import { AfterViewInit, Component, OnDestroy, Renderer2, inject } from '@angular/core';\n\nimport { PoPageContentBaseComponent } from './po-page-content-base.component';\n\n/**\n * @docsPrivate\n *\n * @docsExtends PoPageContentBaseComponent\n */\n@Component({\n  selector: 'po-page-content',\n  templateUrl: './po-page-content.component.html',\n  standalone: false\n})\nexport class PoPageContentComponent extends PoPageContentBaseComponent implements AfterViewInit, OnDestroy {\n  renderer = inject(Renderer2);\n\n  contentOpacity: number = 0;\n  height: string = '90%';\n  overflowY: string = 'none';\n\n  constructor() {\n    super();\n    this.initializeListeners();\n  }\n\n  ngAfterViewInit() {\n    this.recalculateHeaderSize();\n  }\n\n  ngOnDestroy() {\n    this.removeListeners();\n  }\n\n  recalculateHeaderSize() {\n    setTimeout(() => {\n      const pageHeaderElement: HTMLElement = document.querySelector('div.po-page-header');\n\n      this.setHeightContent(pageHeaderElement);\n      this.contentOpacity = 1;\n    });\n  }\n\n  setHeightContent(poPageHeader: HTMLElement) {\n    const bodyHeight = document.body.clientHeight;\n    const pageHeaderHeight = poPageHeader ? poPageHeader.offsetTop + poPageHeader.offsetHeight : 0;\n    const newHeight = bodyHeight - pageHeaderHeight;\n\n    this.height = `${newHeight}px`;\n  }\n\n  private initializeListeners() {\n    this.resizeListener = this.renderer.listen('window', 'resize', () => {\n      this.recalculateHeaderSize();\n    });\n  }\n\n  private removeListeners() {\n    this.resizeListener();\n  }\n}\n","<div class=\"po-page-content\" [style.height]=\"height\" [style.opacity]=\"contentOpacity\" [style.overflow-y]=\"overflowY\">\n  <ng-content></ng-content>\n</div>\n","import { Directive, HostBinding, HostListener, Input, ViewChild } from '@angular/core';\n\nimport { poLocaleDefault } from './../../../services/po-language/po-language.constant';\nimport { PoLanguageService } from './../../../services/po-language/po-language.service';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { getDefaultSizeFn, validateSizeFn } from '../../../utils/util';\nimport { PoBreadcrumb } from '../../po-breadcrumb/po-breadcrumb.interface';\nimport { PoPageAction } from '../interfaces/po-page-action.interface';\nimport { PoPageContentComponent } from '../po-page-content/po-page-content.component';\nimport { PoPageDefaultLiterals } from './po-page-default-literals.interface';\n\nexport const poPageDefaultLiteralsDefault = {\n  en: <PoPageDefaultLiterals>{\n    otherActions: 'Other actions'\n  },\n  es: <PoPageDefaultLiterals>{\n    otherActions: 'Otras acciones'\n  },\n  pt: <PoPageDefaultLiterals>{\n    otherActions: 'Outras ações'\n  },\n  ru: <PoPageDefaultLiterals>{\n    otherActions: 'Другие действия'\n  }\n};\n\n/**\n * @description\n *\n * O componente `po-page-default` é utilizado como o container principal para as telas sem um template definido.\n *\n * #### Tokens customizáveis\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade         | Descrição                                   | Valor Padrão                          |\n * |---------------------|---------------------------------------------|---------------------------------------|\n * | **Header**          |                                             |                                       |\n * | `--padding`         | Espaçamento do header                       | `var(--spacing-xs) var(--spacing-md)` |\n * | `--gap`             | Espaçamento entre os breadcrumbs e o título | `var(--spacing-md)`                   |\n * | `--gap-actions`     | Espaçamento entre as ações                  | `var(--spacing-xs)`                   |\n * | `--font-family`     | Família tipográfica do título               | `var(--font-family-theme)`            |\n * | **Content**         |                                             |                                       |\n * | `--padding-content` | Espaçamento do conteúdo                     | `var(--spacing-xs) var(--spacing-sm)` |\n */\n@Directive()\nexport abstract class PoPageDefaultBaseComponent {\n  @ViewChild(PoPageContentComponent, { static: true }) poPageContent: PoPageContentComponent;\n\n  /** Objeto com propriedades do breadcrumb. */\n  @Input('p-breadcrumb') breadcrumb?: PoBreadcrumb;\n\n  visibleActions: Array<PoPageAction> = [];\n\n  protected language: string;\n\n  private _actions?: Array<PoPageAction> = [];\n  private _componentsSize?: string = undefined;\n  private _initialComponentsSize?: string = undefined;\n  private _literals: PoPageDefaultLiterals;\n  private _title: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Nesta propriedade deve ser definido um array de objetos que implementam a interface `PoPageAction`.\n   */\n  @Input('p-actions') set actions(actions: Array<PoPageAction>) {\n    this._actions = Array.isArray(actions) ? actions : [];\n\n    this.visibleActions = this.getVisibleActions();\n    this.setDropdownActions();\n  }\n\n  get actions(): Array<PoPageAction> {\n    return this._actions;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos componentes de formulário no template:\n   * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n   * - `medium`: aplica a medida medium de cada componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com as literais usadas no `po-page-default`.\n   *\n   * Existem duas maneiras de customizar o componente, passando um objeto com todas as literais disponíveis:\n   *\n   * ```\n   *  const customLiterals: PoPageDefaultLiterals = {\n   *    otherActions: 'Mais ações'\n   *  };\n   * ```\n   *\n   * Ou passando apenas as literais que deseja customizar:\n   *\n   * ```\n   *  const customLiterals: PoPageDefaultLiterals = {\n   *    otherActions: 'Ações da página'\n   *  };\n   * ```\n   *\n   * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n   *\n   * ```\n   * <po-page-default\n   *   [p-literals]=\"customLiterals\">\n   * </po-page-default>\n   * ```\n   *\n   * > O valor padrão será traduzido de acordo com o idioma configurado no [`PoI18nService`](/documentation/po-i18n) ou *browser*.\n   */\n  @Input('p-literals') set literals(value: PoPageDefaultLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poPageDefaultLiteralsDefault[poLocaleDefault],\n        ...poPageDefaultLiteralsDefault[this.language],\n        ...value\n      };\n    } else {\n      this._literals = poPageDefaultLiteralsDefault[this.language];\n    }\n  }\n\n  get literals() {\n    return this._literals || poPageDefaultLiteralsDefault[this.language];\n  }\n\n  /** Título da página. */\n  @Input('p-title') set title(title: string) {\n    this._title = title;\n    setTimeout(() => this.poPageContent.recalculateHeaderSize());\n  }\n\n  get title() {\n    return this._title;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Subtitulo do Header da página\n   */\n  @Input('p-subtitle') subtitle: string;\n\n  constructor(languageService: PoLanguageService) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialComponentsSize, PoFieldSize);\n    this._componentsSize = size;\n  }\n\n  // Seta a lista de ações no dropdown.\n  abstract setDropdownActions();\n\n  abstract getVisibleActions();\n}\n","/**\n * @docsPrivate\n *\n * @description\n *\n * O componente **po-page** é utilizado como container principal para os componentes po-page-header, po-page-content\n * e para as ações dos componentes po-page-edit e po-page-detail.\n *\n * Quando estiver sendo utilizado o componente po-menu junto ao po-page, ambos devem estar no mesmo nível\n * e inseridos em uma div com a classe **po-wrapper**. Esta classe será responsável por fazer os cálculos\n * necessários de alinhamento dos componentes.\n *\n * O componente **po-page** também pode ser utilizado sem o po-menu e neste caso o corpo da página deve ser\n * definido com a altura de 100% para que o po-page maximize seu tamanho.\n * ```\n * html, body {\n *   height:100%;\n * }\n * ```\n */\nexport class PoPageBaseComponent {}\n","import { Component } from '@angular/core';\n\nimport { PoPageBaseComponent } from './po-page-base.component';\n\n/**\n * @docsPrivate\n *\n * @docsExtends PoPageBaseComponent\n */\n@Component({\n  selector: 'po-page',\n  templateUrl: './po-page.component.html',\n  standalone: false\n})\nexport class PoPageComponent extends PoPageBaseComponent {}\n","<div class=\"po-page\">\n  <ng-content> </ng-content>\n</div>\n","import { Directive, Input } from '@angular/core';\n\nimport { PoBreadcrumb } from '../../po-breadcrumb/po-breadcrumb.interface';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * O componente **po-page-header** é responsável pelo título da página e container dos botões de ações dos componentes\n * po-page-list e po-page-base.\n */\n@Directive()\nexport class PoPageHeaderBaseComponent {\n  /** Título da página. */\n  @Input('p-title') title: string;\n\n  /** Define o tamanho dos componentes no header. */\n  @Input('p-size') size: string;\n\n  /** Subtítulo da página. */\n  @Input('p-subtitle') subtitle: string;\n\n  private _breadcrumb: PoBreadcrumb;\n\n  /** Objeto com propriedades do breadcrumb. */\n\n  @Input('p-breadcrumb') set breadcrumb(value: PoBreadcrumb) {\n    this._breadcrumb = value;\n  }\n  get breadcrumb(): PoBreadcrumb {\n    return this._breadcrumb;\n  }\n}\n","import { Component } from '@angular/core';\n\nimport { PoPageHeaderBaseComponent } from './po-page-header-base.component';\n\n/**\n * @docsPrivate\n * @docsExtends PoPageHeaderBaseComponent\n */\n@Component({\n  selector: 'po-page-header',\n  templateUrl: './po-page-header.component.html',\n  standalone: false\n})\nexport class PoPageHeaderComponent extends PoPageHeaderBaseComponent {}\n","<div class=\"po-page-header\">\n  <!-- Breadcrumb -->\n  @if (breadcrumb && breadcrumb.items.length) {\n    <div class=\"po-page-header-breadcrumb\">\n      <po-breadcrumb\n        [p-favorite-service]=\"breadcrumb.favorite\"\n        [p-items]=\"breadcrumb.items\"\n        [p-params-service]=\"breadcrumb.params\"\n        [p-size]=\"size\"\n      >\n      </po-breadcrumb>\n    </div>\n  }\n\n  <div class=\"po-page-header-container\">\n    <!-- Titulo e SubTitulo-->\n    @if (title || subtitle) {\n      <div class=\"po-page-header-title-container\">\n        @if (title) {\n          <h1 class=\"po-page-header-title\">\n            {{ title }}\n          </h1>\n        }\n        @if (subtitle) {\n          <div class=\"po-page-header-subtitle\">\n            {{ subtitle }}\n          </div>\n        }\n      </div>\n    }\n\n    <!-- Operações -->\n    <ng-content></ng-content>\n  </div>\n</div>\n","import {\n  AfterContentInit,\n  Component,\n  OnChanges,\n  Renderer2,\n  SimpleChange,\n  ViewContainerRef,\n  inject\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { PoLanguageService } from './../../../services/po-language/po-language.service';\n\nimport { isExternalLink, isTypeof, PoUtils } from '../../../utils/util';\nimport { PoPageAction } from '../interfaces/po-page-action.interface';\n\nimport { PoPageDefaultBaseComponent } from './po-page-default-base.component';\n\n/**\n * @docsExtends PoPageDefaultBaseComponent\n *\n * @example\n *\n * <example name=\"po-page-default-basic\" title=\"PO Page Default Basic\">\n *  <file name=\"sample-po-page-default-basic/sample-po-page-default-basic.component.html\"> </file>\n *  <file name=\"sample-po-page-default-basic/sample-po-page-default-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-default-labs\" title=\"PO Page Default Labs\">\n *  <file name=\"sample-po-page-default-labs/sample-po-page-default-labs.component.html\"> </file>\n *  <file name=\"sample-po-page-default-labs/sample-po-page-default-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-default-dashboard\" title=\"PO Page Default - Dashboard\">\n *  <file name=\"sample-po-page-default-dashboard/sample-po-page-default-dashboard.component.html\"> </file>\n *  <file name=\"sample-po-page-default-dashboard/sample-po-page-default-dashboard.component.ts\"> </file>\n *  <file name=\"sample-po-page-default-dashboard/sample-po-page-default-dashboard.component.css\"> </file>\n *  <file name=\"sample-po-page-default-dashboard/sample-po-page-default-dashboard.service.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-page-default',\n  templateUrl: './po-page-default.component.html',\n  standalone: false\n})\nexport class PoPageDefaultComponent extends PoPageDefaultBaseComponent implements AfterContentInit, OnChanges {\n  private readonly renderer = inject(Renderer2);\n  private readonly router = inject(Router);\n\n  limitPrimaryActions: number = 3;\n  dropdownActions: Array<PoPageAction>;\n  isMobile: boolean;\n\n  private readonly maxWidthMobile: number = 480;\n\n  constructor() {\n    const languageService = inject(PoLanguageService);\n\n    super(languageService);\n  }\n\n  public ngAfterContentInit(): void {\n    this.setIsMobile();\n    this.setDropdownActions();\n\n    this.renderer.listen('window', 'resize', (event: Event) => {\n      this.onResize(event);\n    });\n  }\n\n  ngOnChanges(changes: { [propName: string]: SimpleChange }) {\n    this.setDropdownActions();\n  }\n\n  actionIsDisabled(action: any) {\n    return isTypeof(action.disabled, 'function') ? action.disabled(action) : action.disabled;\n  }\n\n  actionIsVisible(action: any) {\n    return isTypeof(action.visible, 'function') ? action.visible(action) : action.visible;\n  }\n\n  callAction(item: PoPageAction): void {\n    if (item.url) {\n      isExternalLink(item.url) ? PoUtils.openExternalLink(item.url) : this.router.navigate([item.url]);\n    } else if (item.action) {\n      item.action();\n    }\n  }\n\n  hasPageHeader() {\n    this.visibleActions = this.getVisibleActions();\n    this.setDropdownActions();\n\n    return !!(\n      this.title ||\n      (this.visibleActions && this.visibleActions.length) ||\n      (this.breadcrumb && this.breadcrumb.items.length)\n    );\n  }\n\n  setDropdownActions(): void {\n    if (this.visibleActions.length > this.limitPrimaryActions) {\n      this.dropdownActions = this.visibleActions.slice(this.limitPrimaryActions - 1);\n    }\n  }\n\n  getVisibleActions() {\n    return this.actions.filter(action => this.actionIsVisible(action) !== false);\n  }\n\n  private onResize(event: Event): void {\n    const width = (event.target as Window).innerWidth;\n\n    if (width < this.maxWidthMobile) {\n      this.isMobile = true;\n      this.limitPrimaryActions = 2;\n      this.setDropdownActions();\n    } else {\n      this.isMobile = false;\n      this.limitPrimaryActions = 3;\n      this.setDropdownActions();\n    }\n  }\n\n  private setIsMobile(): void {\n    if (window.innerWidth < this.maxWidthMobile) {\n      this.isMobile = true;\n      this.limitPrimaryActions = 2;\n    }\n  }\n}\n","<po-page>\n  <!-- HEADER -->\n  @if (hasPageHeader()) {\n    <po-page-header [p-breadcrumb]=\"breadcrumb\" [p-size]=\"componentsSize\" [p-subtitle]=\"subtitle\" [p-title]=\"title\">\n      <!-- OPERATIONS -->\n      <div class=\"po-page-header-actions\">\n        @if (visibleActions.length > limitPrimaryActions) {\n          <po-dropdown [p-label]=\"literals.otherActions\" [p-actions]=\"dropdownActions\" [p-size]=\"componentsSize\">\n          </po-dropdown>\n        }\n        @if (visibleActions.length === 3 && visibleActions[2] && !isMobile) {\n          <po-button\n            [p-danger]=\"visibleActions[2].type === 'danger'\"\n            [p-disabled]=\"actionIsDisabled(visibleActions[2])\"\n            [p-label]=\"visibleActions[2].label\"\n            [p-size]=\"componentsSize\"\n            (p-click)=\"callAction(visibleActions[2])\"\n          >\n          </po-button>\n        }\n        @if (visibleActions[1] && (visibleActions.length === 2 || !isMobile)) {\n          <po-button\n            [p-disabled]=\"actionIsDisabled(visibleActions[1])\"\n            [p-label]=\"visibleActions[1].label\"\n            [p-danger]=\"visibleActions[1].type === 'danger'\"\n            [p-size]=\"componentsSize\"\n            (p-click)=\"callAction(visibleActions[1])\"\n          >\n          </po-button>\n        }\n        @if (visibleActions[0]) {\n          <po-button\n            p-kind=\"primary\"\n            [p-danger]=\"visibleActions[0].type === 'danger'\"\n            [p-disabled]=\"actionIsDisabled(visibleActions[0])\"\n            [p-icon]=\"visibleActions[0].icon\"\n            [p-label]=\"visibleActions[0].label\"\n            [p-size]=\"componentsSize\"\n            (p-click)=\"callAction(visibleActions[0])\"\n          >\n          </po-button>\n        }\n      </div>\n    </po-page-header>\n  }\n\n  <!-- CONTENT -->\n  <po-page-content>\n    <ng-content></ng-content>\n  </po-page-content>\n</po-page>\n","import { Directive, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild } from '@angular/core';\n\nimport { poLocaleDefault } from '../../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { getDefaultSizeFn, validateSizeFn } from '../../../utils/util';\nimport { PoBreadcrumb } from '../../po-breadcrumb/po-breadcrumb.interface';\nimport { PoPageContentComponent } from '../po-page-content/po-page-content.component';\nimport { PoPageDetailLiterals } from './po-page-detail-literals.interface';\n\nexport const poPageDetailLiteralsDefault = {\n  en: <PoPageDetailLiterals>{\n    back: 'Back',\n    edit: 'Edit',\n    remove: 'Remove'\n  },\n  es: <PoPageDetailLiterals>{\n    back: 'Volver',\n    edit: 'Editar',\n    remove: 'Eliminar'\n  },\n  pt: <PoPageDetailLiterals>{\n    back: 'Voltar',\n    edit: 'Editar',\n    remove: 'Remover'\n  },\n  ru: <PoPageDetailLiterals>{\n    back: 'возвращение',\n    edit: 'редактировать',\n    remove: 'удаление'\n  }\n};\n\n/**\n * @description\n *\n * O componente **po-page-detail** é utilizado como container principal para a tela de\n * detalhamento de um registro, tendo a possibilidade de usar as ações de \"Voltar\", \"Editar\" e \"Remover\".\n *\n * #### Tokens customizáveis\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade         | Descrição                                   | Valor Padrão                          |\n * |---------------------|---------------------------------------------|---------------------------------------|\n * | **Header**          |                                             |                                       |\n * | `--padding`         | Espaçamento do header                       | `var(--spacing-xs) var(--spacing-md)` |\n * | `--gap`             | Espaçamento entre os breadcrumbs e o título | `var(--spacing-md)`                   |\n * | `--gap-actions`     | Espaçamento entre as ações                  | `var(--spacing-xs)`                   |\n * | `--font-family`     | Família tipográfica do título               | `var(--font-family-theme)`            |\n * | **Content**         |                                             |                                       |\n * | `--padding-content` | Espaçamento do conteúdo                     | `var(--spacing-xs) var(--spacing-sm)` |\n */\n@Directive()\nexport class PoPageDetailBaseComponent {\n  @ViewChild(PoPageContentComponent, { static: true }) poPageContent: PoPageContentComponent;\n\n  /** Objeto com propriedades do breadcrumb. */\n  @Input('p-breadcrumb') breadcrumb: PoBreadcrumb;\n\n  /**\n   * Evento que será disparado ao clicar no botão de \"Voltar\".\n   *\n   * ```\n   * <po-page-detail (p-back)=\"myBackFunction()\">\n   * </po-page-detail>\n   * ```\n   *\n   * > Caso não utilizar esta propriedade, o botão de \"Voltar\" não será exibido.\n   */\n  @Output('p-back') back = new EventEmitter();\n\n  /**\n   * Evento que será disparado ao clicar no botão de \"Editar\".\n   *\n   * ```\n   * <po-page-detail (p-edit)=\"myEditFunction()\">\n   * </po-page-detail>\n   * ```\n   *\n   * > Caso não utilizar esta propriedade, o botão de \"Editar\" não será exibido.\n   */\n  @Output('p-edit') edit = new EventEmitter();\n\n  /**\n   * Evento que será disparado ao clicar no botão de \"Remover\".\n   *\n   * ```\n   * <po-page-detail (p-remove)=\"myRemoveFunction()\">\n   * </po-page-detail>\n   * ```\n   *\n   * > Caso não utilizar esta propriedade, o botão de \"Remover\" não será exibido.\n   */\n  @Output('p-remove') remove = new EventEmitter();\n\n  private _componentsSize?: string = undefined;\n  private _initialComponentsSize?: string = undefined;\n  private _literals: PoPageDetailLiterals;\n  private _title: string;\n  private readonly language: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos componentes de formulário no template:\n   * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n   * - `medium`: aplica a medida medium de cada componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com as literais usadas no `po-page-detail`.\n   *\n   * Existem duas maneiras de customizar o componente, passando um objeto com todas as literais disponíveis:\n   *\n   * ```\n   *  const customLiterals: PoPageDetailLiterals = {\n   *    edit: 'Edição',\n   *    remove: 'Exclusão',\n   *    back: 'Menu'\n   *  };\n   * ```\n   *\n   * Ou passando apenas as literais que deseja customizar:\n   *\n   * ```\n   *  const customLiterals: PoPageDetailLiterals = {\n   *    remove: 'Excluir registro permanentemente'\n   *  };\n   * ```\n   *\n   * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n   *\n   * ```\n   * <po-page-detail\n   *   [p-literals]=\"customLiterals\">\n   * </po-page-detail>\n   * ```\n   *\n   * > O objeto padrão de literais será traduzido de acordo com o idioma do\n   * [`PoI18nService`](/documentation/po-i18n) ou do browser.\n   */\n  @Input('p-literals') set literals(value: PoPageDetailLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poPageDetailLiteralsDefault[poLocaleDefault],\n        ...poPageDetailLiteralsDefault[this.language],\n        ...value\n      };\n    } else {\n      this._literals = poPageDetailLiteralsDefault[this.language];\n    }\n  }\n  get literals() {\n    return this._literals || poPageDetailLiteralsDefault[this.language];\n  }\n\n  /** Título da página. */\n  @Input('p-title') set title(title: string) {\n    this._title = title;\n    setTimeout(() => this.poPageContent.recalculateHeaderSize());\n  }\n\n  get title() {\n    return this._title;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Subtitulo do Header da página\n   */\n  @Input('p-subtitle') subtitle: string;\n\n  constructor(languageService: PoLanguageService) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialComponentsSize, PoFieldSize);\n    this._componentsSize = size;\n  }\n}\n","import { Component } from '@angular/core';\n\nimport { PoPageDetailBaseComponent } from './po-page-detail-base.component';\n\n/**\n * @docsExtends PoPageDetailBaseComponent\n *\n * @example\n *\n * <example name=\"po-page-detail-basic\" title=\"PO Page Detail Basic\">\n *  <file name=\"sample-po-page-detail-basic/sample-po-page-detail-basic.component.html\"> </file>\n *  <file name=\"sample-po-page-detail-basic/sample-po-page-detail-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-detail-labs\" title=\"PO Page Detail Labs\">\n *  <file name=\"sample-po-page-detail-labs/sample-po-page-detail-labs.component.html\"> </file>\n *  <file name=\"sample-po-page-detail-labs/sample-po-page-detail-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-detail-user\" title=\"PO Page Detail - User\">\n *  <file name=\"sample-po-page-detail-user/sample-po-page-detail-user.component.html\"> </file>\n *  <file name=\"sample-po-page-detail-user/sample-po-page-detail-user.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-page-detail',\n  templateUrl: './po-page-detail.component.html',\n  standalone: false\n})\nexport class PoPageDetailComponent extends PoPageDetailBaseComponent {\n  hasAnyAction(): boolean {\n    return this.hasEvent('back') || this.hasEvent('edit') || this.hasEvent('remove');\n  }\n\n  hasEditFn(property: string): string {\n    if (property === 'icon') {\n      return this.hasEvent('edit') ? '' : 'ICON_DELETE';\n    } else if (property === 'type') {\n      return this.hasEvent('edit') ? 'secondary' : 'primary';\n    } else {\n      return '';\n    }\n  }\n\n  hasEditOrRemoveFn(property: string): string {\n    if (property === 'icon') {\n      return this.hasEvent('edit') || this.hasEvent('remove') ? '' : 'ICON_ARROW_LEFT';\n    } else if (property === 'type') {\n      return this.hasEvent('edit') || this.hasEvent('remove') ? 'secondary' : 'primary';\n    } else {\n      return '';\n    }\n  }\n\n  hasEvent(event: string) {\n    return !!this[event].observers.length;\n  }\n\n  hasPageHeader(): boolean {\n    return !!(this.title || this.hasAnyAction() || (this.breadcrumb && this.breadcrumb.items.length));\n  }\n}\n","<po-page>\n  <!-- HEADER -->\n  @if (hasPageHeader()) {\n    <po-page-header [p-breadcrumb]=\"breadcrumb\" [p-size]=\"componentsSize\" [p-subtitle]=\"subtitle\" [p-title]=\"title\">\n      <!-- OPERATIONS -->\n      @if (hasAnyAction()) {\n        <div class=\"po-page-header-actions\">\n          @if (hasEvent('back')) {\n            <po-button\n              [p-icon]=\"hasEditOrRemoveFn('icon')\"\n              [p-label]=\"literals.back\"\n              [p-kind]=\"hasEditOrRemoveFn('type')\"\n              [p-size]=\"componentsSize\"\n              (p-click)=\"back.emit()\"\n            >\n            </po-button>\n          }\n          @if (hasEvent('remove')) {\n            <po-button\n              p-danger\n              [p-icon]=\"hasEditFn('icon')\"\n              [p-label]=\"literals.remove\"\n              [p-kind]=\"hasEditFn('type')\"\n              [p-size]=\"componentsSize\"\n              (p-click)=\"remove.emit()\"\n            >\n            </po-button>\n          }\n          @if (hasEvent('edit')) {\n            <po-button\n              p-icon=\"ICON_EDIT\"\n              p-kind=\"primary\"\n              [p-label]=\"literals.edit\"\n              [p-size]=\"componentsSize\"\n              (p-click)=\"edit.emit()\"\n            >\n            </po-button>\n          }\n        </div>\n      }\n    </po-page-header>\n  }\n\n  <!-- CONTENT -->\n  <po-page-content>\n    <ng-content> </ng-content>\n  </po-page-content>\n</po-page>\n","import { Directive, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild } from '@angular/core';\n\nimport { poLocaleDefault } from '../../../services/po-language/po-language.constant';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { getDefaultSizeFn, validateSizeFn } from '../../../utils/util';\nimport { PoBreadcrumb } from '../../po-breadcrumb/po-breadcrumb.interface';\nimport { PoPageContentComponent } from '../po-page-content/po-page-content.component';\nimport { PoPageEditLiterals } from './po-page-edit-literals.interface';\n\nexport const poPageEditLiteralsDefault = {\n  en: <PoPageEditLiterals>{\n    cancel: 'Cancel',\n    save: 'Save',\n    saveNew: 'Save and New'\n  },\n  es: <PoPageEditLiterals>{\n    cancel: 'Cancelar',\n    save: 'Guardar',\n    saveNew: 'Guardar y Nuevo'\n  },\n  pt: <PoPageEditLiterals>{\n    cancel: 'Cancelar',\n    save: 'Salvar',\n    saveNew: 'Salvar e Novo'\n  },\n  ru: <PoPageEditLiterals>{\n    cancel: 'отменить',\n    save: 'экономить',\n    saveNew: 'Сохранить и новый'\n  }\n};\n\n/**\n * @description\n *\n * O componente **po-page-edit** é utilizado como container principal para tela de edição ou adição de um\n * registro, tendo a possibilidade de usar as ações de \"Salvar\", \"Salvar e Novo\" e \"Cancelar\".\n *\n * Os botões \"Salvar\" e \"Salvar e Novo\" podem ser habilitados/desabilitados utilizando a propriedade `p-disable-submit`.\n * Esta propriedade pode ser utilizada para desabilitar os botões caso exista um formulário inválido na página ou alguma\n * regra de negócio não tenha sido atendida.\n *\n * #### Tokens customizáveis\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade         | Descrição                                   | Valor Padrão                          |\n * |---------------------|---------------------------------------------|---------------------------------------|\n * | **Header**          |                                             |                                       |\n * | `--padding`         | Espaçamento do header                       | `var(--spacing-xs) var(--spacing-md)` |\n * | `--gap`             | Espaçamento entre os breadcrumbs e o título | `var(--spacing-md)`                   |\n * | `--gap-actions`     | Espaçamento entre as ações                  | `var(--spacing-xs)`                   |\n * | `--font-family`     | Família tipográfica do título               | `var(--font-family-theme)`            |\n * | **Content**         |                                             |                                       |\n * | `--padding-content` | Espaçamento do conteúdo                     | `var(--spacing-xs) var(--spacing-sm)` |\n */\n@Directive()\nexport class PoPageEditBaseComponent {\n  @ViewChild(PoPageContentComponent, { static: true }) poPageContent: PoPageContentComponent;\n\n  /** Objeto com propriedades do breadcrumb. */\n  @Input('p-breadcrumb') breadcrumb?: PoBreadcrumb;\n\n  /** Desabilita botões de submissão (save e saveNew) */\n  @Input('p-disable-submit') disableSubmit?: boolean;\n\n  /**\n   * Evento que será disparado ao clicar no botão de \"Cancelar\".\n   *\n   * ```\n   * <po-page-edit (p-cancel)=\"myCancelFunction()\">\n   * </po-page-edit>\n   * ```\n   *\n   * > Caso não utilizar esta propriedade, o botão de \"Cancelar\" não será exibido.\n   */\n  @Output('p-cancel') cancel = new EventEmitter();\n\n  /**\n   * Evento que será disparado ao clicar no botão de \"Salvar\".\n   *\n   * ```\n   * <po-page-edit (p-save)=\"mySaveFunction()\">\n   * </po-page-edit>\n   * ```\n   *\n   * > Caso não utilizar esta propriedade, o botão de \"Salvar\" não será exibido.\n   */\n  @Output('p-save') save = new EventEmitter();\n\n  /**\n   * Evento que será disparado ao clicar no botão de \"Salvar e Novo\".\n   *\n   * ```\n   * <po-page-edit (p-save-new)=\"mySaveNewFunction()\">\n   * </po-page-edit>\n   * ```\n   *\n   * > Caso não utilizar esta propriedade, o botão de \"Salvar e Novo\" não será exibido.\n   */\n  @Output('p-save-new') saveNew = new EventEmitter();\n\n  private _componentsSize?: string = undefined;\n  private _initialComponentsSize?: string = undefined;\n  private _literals: PoPageEditLiterals;\n  private _title: string;\n  private readonly language: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos componentes de formulário no template:\n   * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n   * - `medium`: aplica a medida medium de cada componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com as literais usadas no `po-page-edit`.\n   *\n   * Existem duas maneiras de customizar o componente, passando um objeto com todas as literais disponíveis:\n   *\n   * ```\n   *  const customLiterals: PoPageEditLiterals = {\n   *    cancel: 'Voltar',\n   *    save: 'Confirmar',\n   *    saveNew: 'Confirmar e criar um novo'\n   *  };\n   * ```\n   *\n   * Ou passando apenas as literais que deseja customizar:\n   *\n   * ```\n   *  const customLiterals: PoPageEditLiterals = {\n   *    cancel: 'Cancelar processo'\n   *  };\n   * ```\n   *\n   * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n   *\n   * ```\n   * <po-page-edit\n   *   [p-literals]=\"customLiterals\">\n   * </po-page-edit>\n   * ```\n   *\n   * > O objeto padrão de literais será traduzido de acordo com o idioma do\n   * [`PoI18nService`](/documentation/po-i18n) ou do browser.\n   */\n  @Input('p-literals') set literals(value: PoPageEditLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poPageEditLiteralsDefault[poLocaleDefault],\n        ...poPageEditLiteralsDefault[this.language],\n        ...value\n      };\n    } else {\n      this._literals = poPageEditLiteralsDefault[this.language];\n    }\n  }\n  get literals() {\n    return this._literals || poPageEditLiteralsDefault[this.language];\n  }\n\n  /** Título da página. */\n  @Input('p-title') set title(title: string) {\n    this._title = title;\n    setTimeout(() => this.poPageContent.recalculateHeaderSize());\n  }\n\n  get title() {\n    return this._title;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Subtitulo do Header da página\n   */\n  @Input('p-subtitle') subtitle: string;\n\n  constructor(languageService: PoLanguageService) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialComponentsSize, PoFieldSize);\n    this._componentsSize = size;\n  }\n}\n","import { Component } from '@angular/core';\n\nimport { PoPageEditBaseComponent } from './po-page-edit-base.component';\n\n/**\n * @docsExtends PoPageEditBaseComponent\n *\n * @example\n *\n * <example name=\"po-page-edit-basic\" title=\"PO Page Edit Basic\">\n *  <file name=\"sample-po-page-edit-basic/sample-po-page-edit-basic.component.html\"> </file>\n *  <file name=\"sample-po-page-edit-basic/sample-po-page-edit-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-edit-labs\" title=\"PO Page Edit Labs\">\n *  <file name=\"sample-po-page-edit-labs/sample-po-page-edit-labs.component.html\"> </file>\n *  <file name=\"sample-po-page-edit-labs/sample-po-page-edit-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-edit-user\" title=\"PO Page Edit - User\">\n *  <file name=\"sample-po-page-edit-user/sample-po-page-edit-user.component.html\"> </file>\n *  <file name=\"sample-po-page-edit-user/sample-po-page-edit-user.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-page-edit',\n  templateUrl: './po-page-edit.component.html',\n  standalone: false\n})\nexport class PoPageEditComponent extends PoPageEditBaseComponent {\n  getIcon(icon: string): string {\n    if (icon === 'cancel') {\n      return this.isPrimaryAction('cancel') ? 'ICON_CLOSE' : '';\n    }\n\n    if (icon === 'saveNew') {\n      return this.isPrimaryAction('saveNew') ? 'ICON_OK' : '';\n    }\n\n    return '';\n  }\n\n  getType(type: string): string {\n    const isCancelPrimaryAction = type === 'cancel' && this.isPrimaryAction('cancel');\n    const isSaveNewPrimaryAction = type === 'saveNew' && this.isPrimaryAction('saveNew');\n\n    return isCancelPrimaryAction || isSaveNewPrimaryAction ? 'primary' : 'secondary';\n  }\n\n  hasAnyAction(): boolean {\n    return this.hasEvent('cancel') || this.hasEvent('saveNew') || this.hasEvent('save');\n  }\n\n  hasPageHeader(): boolean {\n    return !!(this.title || this.hasAnyAction() || (this.breadcrumb && this.breadcrumb.items.length));\n  }\n\n  hasEvent(event: string) {\n    return !!this[event].observers.length;\n  }\n\n  private isPrimaryAction(action: string): boolean {\n    const hasSaveAction = this.hasEvent('save');\n\n    if (action === 'saveNew') {\n      return !hasSaveAction;\n    }\n\n    if (action === 'cancel') {\n      const hasSaveNewAction = this.hasEvent('saveNew');\n\n      return !hasSaveNewAction && !hasSaveAction;\n    }\n\n    return false;\n  }\n}\n","<po-page>\n  <!-- HEADER -->\n  @if (hasPageHeader()) {\n    <po-page-header [p-breadcrumb]=\"breadcrumb\" [p-size]=\"componentsSize\" [p-subtitle]=\"subtitle\" [p-title]=\"title\">\n      <!-- OPERATIONS -->\n      @if (hasAnyAction()) {\n        <div class=\"po-page-header-actions\">\n          @if (hasEvent('cancel')) {\n            <po-button\n              [p-icon]=\"getIcon('cancel')\"\n              [p-label]=\"literals.cancel\"\n              [p-kind]=\"getType('cancel')\"\n              [p-size]=\"componentsSize\"\n              (p-click)=\"cancel.emit()\"\n            >\n            </po-button>\n          }\n          @if (hasEvent('saveNew')) {\n            <po-button\n              [p-disabled]=\"disableSubmit\"\n              [p-icon]=\"getIcon('saveNew')\"\n              [p-label]=\"literals.saveNew\"\n              [p-kind]=\"getType('saveNew')\"\n              [p-size]=\"componentsSize\"\n              (p-click)=\"saveNew.emit()\"\n            >\n            </po-button>\n          }\n          @if (hasEvent('save')) {\n            <po-button\n              p-icon=\"ICON_OK\"\n              p-kind=\"primary\"\n              [p-disabled]=\"disableSubmit\"\n              [p-label]=\"literals.save\"\n              [p-size]=\"componentsSize\"\n              (p-click)=\"save.emit()\"\n            >\n            </po-button>\n          }\n        </div>\n      }\n    </po-page-header>\n  }\n\n  <!-- CONTENT -->\n  <po-page-content>\n    <ng-content> </ng-content>\n  </po-page-content>\n</po-page>\n","import { Directive, HostBinding, HostListener, Input, ViewChild } from '@angular/core';\n\nimport { poLocaleDefault } from './../../../services/po-language/po-language.constant';\nimport { PoLanguageService } from './../../../services/po-language/po-language.service';\n\nimport { PoFieldSize } from '../../../enums/po-field-size.enum';\nimport { getDefaultSizeFn, validateSizeFn } from '../../../utils/util';\nimport { PoBreadcrumb } from '../../po-breadcrumb/po-breadcrumb.interface';\nimport { PoDisclaimerGroup } from '../../po-disclaimer-group/po-disclaimer-group.interface';\nimport { PoPageAction } from '../interfaces/po-page-action.interface';\nimport { PoPageFilter } from '../interfaces/po-page-filter.interface';\nimport { PoPageContentComponent } from '../po-page-content/po-page-content.component';\nimport { PoPageListLiterals } from './po-page-list-literals.interface';\n\nexport const poPageListLiteralsDefault = {\n  en: <PoPageListLiterals>{\n    otherActions: 'Other actions'\n  },\n  es: <PoPageListLiterals>{\n    otherActions: 'Otras acciones'\n  },\n  pt: <PoPageListLiterals>{\n    otherActions: 'Outras ações'\n  },\n  ru: <PoPageListLiterals>{\n    otherActions: 'Другие действия'\n  }\n};\n\n/**\n * @description\n *\n * O componente `po-page-list` é utilizado como o container principal para as telas de listagem de dados,\n * podendo ser apresentado como lista ou tabela.\n *\n * Este componente possibilita realizar filtro dos dados, no qual permite que seja atribuido uma função que será executada no momento\n * da filtragem. Este comportamento pode ser acionado tanto ao *click* do ícone [an-magnifying-glass](https://po-ui.io/icons)\n * quanto ao pressionar da tecla *ENTER* quando o foco estiver no campo de pesquisa.\n *\n * Para facilitar a manipulação e visualização dos filtros aplicados, é possível também utilizar o componente\n * [`po-disclaimer-group`](/documentation/po-disclaimer-group).\n *\n * #### Tokens customizáveis\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade         | Descrição                                   | Valor Padrão                          |\n * |---------------------|---------------------------------------------|---------------------------------------|\n * | **Header**          |                                             |                                       |\n * | `--padding`         | Espaçamento do header                       | `var(--spacing-xs) var(--spacing-md)` |\n * | `--gap`             | Espaçamento entre os breadcrumbs e o título | `var(--spacing-md)`                   |\n * | `--gap-actions`     | Espaçamento entre as ações                  | `var(--spacing-xs)`                   |\n * | `--font-family`     | Família tipográfica do título               | `var(--font-family-theme)`            |\n * | **Content**         |                                             |                                       |\n * | `--padding-content` | Espaçamento do conteúdo                     | `var(--spacing-xs) var(--spacing-sm)` |\n */\n@Directive()\nexport abstract class PoPageListBaseComponent {\n  @ViewChild(PoPageContentComponent, { static: true }) poPageContent: PoPageContentComponent;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto que implementa as propriedades da interface `PoBreadcrumb`.\n   */\n  @Input('p-breadcrumb') breadcrumb?: PoBreadcrumb;\n\n  /**\n   * @description\n   *\n   * Objeto que implementa as propriedades da interface `PoPageFilter`.\n   */\n  @Input('p-filter') filter: PoPageFilter;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Valor padrão na busca rápida ao inicializar o componente\n   *\n   */\n  @Input('p-quick-search-value') quickSearchValue: string;\n\n  visibleActions: Array<PoPageAction> = [];\n\n  protected language: string;\n  protected resizeListener: () => void;\n\n  private _actions?: Array<PoPageAction> = [];\n  private _disclaimerGroup?: PoDisclaimerGroup;\n  private _componentsSize?: string = undefined;\n  private _initialComponentsSize?: string = undefined;\n  private _literals: PoPageListLiterals;\n  private _title: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Nesta propriedade deve ser definido um array de objetos que implementam a interface `PoPageAction`.\n   */\n  @Input('p-actions') set actions(actions: Array<PoPageAction>) {\n    this._actions = Array.isArray(actions) ? actions : [];\n    this.visibleActions = this.actions.filter(action => action.visible !== false);\n    this.setDropdownActions();\n  }\n\n  get actions(): Array<PoPageAction> {\n    return this._actions;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos componentes de formulário no template:\n   * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n   * - `medium`: aplica a medida medium de cada componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto que implementa as propriedades da interface `PoDisclaimerGroup`.\n   */\n  @Input('p-disclaimer-group') set disclaimerGroup(value: PoDisclaimerGroup) {\n    if (!value) {\n      value = <any>{};\n    }\n\n    this._disclaimerGroup = value;\n  }\n\n  get disclaimerGroup(): PoDisclaimerGroup {\n    return this._disclaimerGroup;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com as literais usadas no `po-page-list`.\n   *\n   * Existem duas maneiras de customizar o componente, passando um objeto com todas as literais disponíveis:\n   *\n   * ```\n   *  const customLiterals: PoPageListLiterals = {\n   *    otherActions: 'Mais ações'\n   *  };\n   * ```\n   *\n   * Ou passando apenas as literais que deseja customizar:\n   *\n   * ```\n   *  const customLiterals: PoPageListLiterals = {\n   *    otherActions: 'Ações da página'\n   *  };\n   * ```\n   *\n   * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n   *\n   * ```\n   * <po-page-list\n   *   [p-literals]=\"customLiterals\">\n   * </po-page-list>\n   * ```\n   *\n   * > O valor padrão será traduzido de acordo com o idioma configurado no [`PoI18nService`](/documentation/po-i18n) ou *browser*.\n   */\n  @Input('p-literals') set literals(value: PoPageListLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poPageListLiteralsDefault[poLocaleDefault],\n        ...poPageListLiteralsDefault[this.language],\n        ...value\n      };\n    } else {\n      this._literals = poPageListLiteralsDefault[this.language];\n    }\n  }\n\n  get literals() {\n    return this._literals || poPageListLiteralsDefault[this.language];\n  }\n\n  /** Título da página. */\n  @Input('p-title') set title(title: string) {\n    this._title = title;\n    setTimeout(() => this.poPageContent.recalculateHeaderSize());\n  }\n\n  get title() {\n    return this._title;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Subtitulo do Header da página\n   */\n  @Input('p-subtitle') subtitle: string;\n\n  constructor(languageService: PoLanguageService) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialComponentsSize, PoFieldSize);\n    this._componentsSize = size;\n  }\n\n  // Seta a lista de ações no dropdown.\n  abstract setDropdownActions();\n}\n","import {\n  AfterContentInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  SimpleChange,\n  ViewChild,\n  ViewContainerRef,\n  inject\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { callFunction, isExternalLink, isTypeof, PoUtils } from '../../../utils/util';\nimport { PoLanguageService } from './../../../services/po-language/po-language.service';\n\nimport { PoDisclaimerGroupRemoveAction } from '../../po-disclaimer-group/po-disclaimer-group-remove-action.interface';\nimport { PoDisclaimer } from '../../po-disclaimer/po-disclaimer.interface';\nimport { PoPageAction } from '../interfaces/po-page-action.interface';\n\nimport { PoPageListBaseComponent } from './po-page-list-base.component';\n\n/**\n * @docsExtends PoPageListBaseComponent\n *\n * @example\n *\n * <example name=\"po-page-list-basic\" title=\"PO Page List Basic\">\n *  <file name=\"sample-po-page-list-basic/sample-po-page-list-basic.component.html\"> </file>\n *  <file name=\"sample-po-page-list-basic/sample-po-page-list-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-list-labs\" title=\"PO Page List Labs\">\n *  <file name=\"sample-po-page-list-labs/sample-po-page-list-labs.component.html\"> </file>\n *  <file name=\"sample-po-page-list-labs/sample-po-page-list-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-list-hiring-processes\" title=\"PO Page List - Hiring Processes\">\n *  <file name=\"sample-po-page-list-hiring-processes/sample-po-page-list-hiring-processes.component.html\"> </file>\n *  <file name=\"sample-po-page-list-hiring-processes/sample-po-page-list-hiring-processes.component.ts\"> </file>\n *  <file name=\"sample-po-page-list-hiring-processes/sample-po-page-list-hiring-processes.service.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-page-list',\n  templateUrl: './po-page-list.component.html',\n  standalone: false\n})\nexport class PoPageListComponent\n  extends PoPageListBaseComponent\n  implements AfterContentInit, OnChanges, OnDestroy, OnInit\n{\n  renderer = inject(Renderer2);\n  private readonly router = inject(Router);\n  private readonly changeDetector = inject(ChangeDetectorRef);\n\n  @ViewChild('filterInput') filterInput: ElementRef;\n\n  advancedSearch: string;\n  dropdownActions: Array<PoPageAction>;\n  isMobile: boolean;\n  limitPrimaryActions: number = 3;\n\n  callFunction = callFunction;\n\n  private isRecalculate = true;\n  private readonly maxWidthMobile: number = 480;\n\n  /* istanbul ignore next */\n  constructor() {\n    const languageService = inject(PoLanguageService);\n\n    super(languageService);\n    this.initializeListeners();\n  }\n\n  ngOnInit(): void {\n    this.advancedSearch = this.initializeFixedLiterals();\n  }\n\n  ngAfterContentInit(): void {\n    this.setIsMobile();\n    this.setDropdownActions();\n  }\n\n  ngOnChanges(changes: { [propName: string]: SimpleChange }) {\n    this.setDropdownActions();\n  }\n\n  ngOnDestroy() {\n    this.removeListeners();\n  }\n\n  actionIsDisabled(action: any) {\n    return isTypeof(action.disabled, 'function') ? action.disabled(action) : action.disabled;\n  }\n\n  callAction(item: PoPageAction): void {\n    if (item.url) {\n      isExternalLink(item.url) ? PoUtils.openExternalLink(item.url) : this.router.navigate([item.url]);\n    } else if (item.action) {\n      item.action();\n    }\n  }\n\n  hasPageHeader(): boolean {\n    return !!(\n      this.title ||\n      (this.visibleActions && this.visibleActions.length) ||\n      (this.breadcrumb && this.breadcrumb.items.length)\n    );\n  }\n\n  hasCustomFilterSize(): boolean {\n    if (!this.filter) {\n      return false;\n    }\n    return this.filter.width >= 1 && this.filter.width <= 6;\n  }\n\n  filterSizeClass(width: number): string {\n    const smWidth = Math.max(this.filter?.advancedAction ? 6 : 2, width);\n    const mdWidth = Math.max(this.filter?.advancedAction ? 4 : 1, width);\n    if (this.filter?.advancedAction) {\n      width = Math.max(width, 2);\n    }\n    return `po-sm-${smWidth} po-md-${mdWidth} po-lg-${width} po-xl-${width}`;\n  }\n\n  setDropdownActions(): void {\n    if (this.visibleActions.length > this.limitPrimaryActions) {\n      this.dropdownActions = this.visibleActions.slice(this.limitPrimaryActions - 1);\n    }\n  }\n\n  callActionFilter(field: string) {\n    this.filter[field](this.filterInput.nativeElement.value);\n    this.changeDetector.detectChanges();\n  }\n  /**\n   * Limpa o campo de pesquisa.\n   */\n  clearInputSearch() {\n    this.filterInput.nativeElement.value = null;\n  }\n\n  onkeypress(key) {\n    if (key === 13) {\n      this.callActionFilter('action');\n    }\n  }\n\n  // Recebe evento change do disclaimer e recalcula tela\n  onChangeDisclaimerGroup(disclaimers) {\n    if (\n      (disclaimers && disclaimers.length && this.isRecalculate) ||\n      (disclaimers.length === 0 && !this.isRecalculate)\n    ) {\n      this.poPageContent.recalculateHeaderSize();\n      this.isRecalculate = !this.isRecalculate;\n    }\n\n    if (this.disclaimerGroup && this.disclaimerGroup.change) {\n      this.disclaimerGroup.change(disclaimers);\n    }\n  }\n\n  onRemoveDisclaimer(removeData: PoDisclaimerGroupRemoveAction) {\n    if (this.disclaimerGroup.remove) {\n      this.disclaimerGroup.remove(removeData);\n    }\n  }\n\n  onRemoveAllDisclaimers(removedDisclaimers: Array<PoDisclaimer>) {\n    if (this.disclaimerGroup.removeAll) {\n      this.disclaimerGroup.removeAll(removedDisclaimers);\n    }\n  }\n\n  private initializeFixedLiterals() {\n    const literal = {\n      pt: {\n        advancedSearch: 'Busca avançada'\n      },\n      en: {\n        advancedSearch: 'Advanced search'\n      },\n      es: {\n        advancedSearch: 'Búsqueda avanzada'\n      },\n      ru: {\n        advancedSearch: 'полный поиск'\n      }\n    };\n\n    return literal[this.language].advancedSearch;\n  }\n\n  private initializeListeners() {\n    this.resizeListener = this.renderer.listen('window', 'resize', (event: MouseEvent) => {\n      this.onResize(event);\n    });\n  }\n\n  private removeListeners() {\n    this.resizeListener();\n  }\n\n  private onResize(event: Event): void {\n    const width = (event.target as Window).innerWidth;\n\n    if (width < this.maxWidthMobile) {\n      this.isMobile = true;\n      this.limitPrimaryActions = 2;\n      this.setDropdownActions();\n    } else {\n      this.isMobile = false;\n      this.limitPrimaryActions = 3;\n      this.setDropdownActions();\n    }\n  }\n\n  private setIsMobile(): void {\n    if (window.innerWidth < this.maxWidthMobile) {\n      this.isMobile = true;\n      this.limitPrimaryActions = 2;\n    }\n  }\n}\n","<po-page>\n  <!-- HEADER -->\n  @if (hasPageHeader()) {\n    <po-page-header\n      [class.po-page-list-header-padding]=\"filter && !visibleActions.length\"\n      [p-breadcrumb]=\"breadcrumb\"\n      [p-title]=\"title\"\n      [p-size]=\"componentsSize\"\n      [p-subtitle]=\"subtitle\"\n    >\n      <div class=\"po-page-list-container\">\n        <!-- OPERATIONS -->\n        <div class=\"po-page-list-operations\">\n          <div class=\"po-page-list-actions\" [class.po-page-list-actions-padding]=\"filter\">\n            @if (visibleActions[0]) {\n              <po-button\n                p-kind=\"primary\"\n                [p-danger]=\"visibleActions[0].type === 'danger'\"\n                [p-disabled]=\"actionIsDisabled(actions[0])\"\n                [p-icon]=\"visibleActions[0].icon\"\n                [p-label]=\"visibleActions[0].label\"\n                [p-size]=\"componentsSize\"\n                (p-click)=\"callAction(visibleActions[0])\"\n              >\n              </po-button>\n            }\n            @if (visibleActions[1] && (visibleActions.length === 2 || !isMobile)) {\n              <po-button\n                [p-danger]=\"visibleActions[1].type === 'danger'\"\n                [p-disabled]=\"actionIsDisabled(actions[1])\"\n                [p-label]=\"visibleActions[1].label\"\n                [p-size]=\"componentsSize\"\n                (p-click)=\"callAction(visibleActions[1])\"\n              >\n              </po-button>\n            }\n            @if (visibleActions.length === 3 && visibleActions[2] && !isMobile) {\n              <po-button\n                [p-danger]=\"visibleActions[2].type === 'danger'\"\n                [p-disabled]=\"actionIsDisabled(visibleActions[2])\"\n                [p-label]=\"visibleActions[2].label\"\n                [p-size]=\"componentsSize\"\n                (p-click)=\"callAction(visibleActions[2])\"\n              >\n              </po-button>\n            }\n            @if (visibleActions.length > limitPrimaryActions) {\n              <po-dropdown [p-actions]=\"dropdownActions\" [p-label]=\"literals.otherActions\" [p-size]=\"componentsSize\">\n              </po-dropdown>\n            }\n          </div>\n          <!-- FILTER -->\n          @if (filter) {\n            <div\n              class=\"po-page-list-filter-wrapper\"\n              [ngClass]=\"[\n                hasCustomFilterSize() ? filterSizeClass(filter.width) : '',\n                (visibleActions?.length > 0 || subtitle) && title ? 'po-page-list-filter-extra-margin-top' : ''\n              ]\"\n            >\n              <div\n                class=\"po-field-container-content po-field-container-input po-page-filter-content\"\n                [ngClass]=\"[\n                  hasCustomFilterSize()\n                    ? filter.advancedAction\n                      ? 'po-page-filter-input-variable-size'\n                      : 'po-page-filter-input-variable-size-wo-adv-search'\n                    : ''\n                ]\"\n              >\n                <div class=\"po-field-icon-container-right\">\n                  <po-icon\n                    p-icon=\"ICON_SEARCH\"\n                    class=\"po-field-icon po-icon-input\"\n                    [class.po-field-icon-aa]=\"componentsSize === 'small'\"\n                    (click)=\"callActionFilter('action')\"\n                  >\n                  </po-icon>\n                </div>\n                <input\n                  #filterInput\n                  class=\"po-input po-input-icon-right\"\n                  [class.po-input-icon-right-aa]=\"componentsSize === 'small'\"\n                  [attr.p-size]=\"componentsSize\"\n                  name=\"model\"\n                  type=\"text\"\n                  [placeholder]=\"filter.placeholder || ''\"\n                  (keypress)=\"onkeypress($event.keyCode)\"\n                  [value]=\"quickSearchValue || ''\"\n                />\n              </div>\n              @if (filter.advancedAction) {\n                <div class=\"po-page-list-filter-search\">\n                  <span\n                    class=\"po-page-list-filter-search-link\"\n                    tabindex=\"0\"\n                    (click)=\"callActionFilter('advancedAction')\"\n                    (keydown.enter)=\"callActionFilter('advancedAction')\"\n                  >\n                    {{ advancedSearch }}\n                  </span>\n                </div>\n              }\n            </div>\n          }\n        </div>\n        <!-- DISCLAIMER -->\n        @if (!!disclaimerGroup) {\n          <po-disclaimer-group\n            [class.po-page-list-disclaimer-group]=\"!!disclaimerGroup?.disclaimers?.length\"\n            [p-disclaimers]=\"disclaimerGroup?.disclaimers\"\n            [p-hide-remove-all]=\"disclaimerGroup?.hideRemoveAll\"\n            [p-title]=\"disclaimerGroup?.title\"\n            (p-change)=\"onChangeDisclaimerGroup($event)\"\n            (p-remove)=\"onRemoveDisclaimer($event)\"\n            (p-remove-all)=\"onRemoveAllDisclaimers($event)\"\n          >\n          </po-disclaimer-group>\n        }\n      </div>\n    </po-page-header>\n  }\n\n  <!-- CONTENT -->\n  <po-page-content>\n    <ng-content></ng-content>\n  </po-page-content>\n</po-page>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { PoBreadcrumbModule } from '../po-breadcrumb/po-breadcrumb.module';\nimport { PoButtonModule } from '../po-button/po-button.module';\nimport { PoDisclaimerGroupModule } from '../po-disclaimer-group/po-disclaimer-group.module';\nimport { PoDropdownModule } from '../po-dropdown/po-dropdown.module';\nimport { PoFieldModule } from '../po-field/po-field.module';\nimport { PoIconModule } from '../po-icon';\nimport { PoLanguageModule } from './../../services/po-language/po-language.module';\nimport { PoModalModule } from './../po-modal/po-modal.module';\nimport { PoPageContentComponent } from './po-page-content/po-page-content.component';\nimport { PoPageDefaultComponent } from './po-page-default/po-page-default.component';\nimport { PoPageDetailComponent } from './po-page-detail/po-page-detail.component';\nimport { PoPageEditComponent } from './po-page-edit/po-page-edit.component';\nimport { PoPageHeaderComponent } from './po-page-header/po-page-header.component';\nimport { PoPageListComponent } from './po-page-list/po-page-list.component';\nimport { PoPageSlideComponent } from './po-page-slide/po-page-slide.component';\nimport { PoPageComponent } from './po-page.component';\nimport { PoPageSlideModule } from './po-page-slide/po-page-slide.module';\n\n/**\n * @description\n * Módulo dos componentes po-page-default, po-page-detail, po-page-edit,\n * po-page-list e po-page-slide.\n */\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    RouterModule,\n    PoBreadcrumbModule,\n    PoButtonModule,\n    PoDisclaimerGroupModule,\n    PoDropdownModule,\n    PoFieldModule,\n    PoIconModule,\n    PoLanguageModule,\n    PoModalModule,\n    PoPageSlideModule\n  ],\n  declarations: [\n    PoPageComponent,\n    PoPageContentComponent,\n    PoPageDefaultComponent,\n    PoPageDetailComponent,\n    PoPageEditComponent,\n    PoPageHeaderComponent,\n    PoPageListComponent\n  ],\n  exports: [\n    PoPageDefaultComponent,\n    PoPageDetailComponent,\n    PoPageEditComponent,\n    PoPageListComponent,\n    PoPageSlideComponent\n  ]\n})\nexport class PoPageModule {}\n","/**\n * @usedBy PoSkeletonComponent\n *\n * @description\n *\n * Define os tipos de animação do componente `po-skeleton`.\n */\nexport enum PoSkeletonAnimation {\n  /** Sem animação */\n  none = 'none',\n\n  /** Animação de pulsação */\n  pulse = 'pulse',\n\n  /** Animação de brilho deslizante */\n  shimmer = 'shimmer'\n}\n","/**\n * @usedBy PoSkeletonComponent\n *\n * @description\n *\n * Define os tamanhos disponíveis para o componente `po-skeleton`.\n */\nexport enum PoSkeletonSize {\n  /** Tamanho extra pequeno */\n  xs = 'xs',\n\n  /** Tamanho pequeno */\n  sm = 'sm',\n\n  /** Tamanho médio */\n  md = 'md',\n\n  /** Tamanho grande */\n  lg = 'lg',\n\n  /** Tamanho extra grande */\n  xl = 'xl',\n\n  /** Tamanho extra extra grande */\n  xxl = '2xl'\n}\n","/**\n * @usedBy PoSkeletonComponent\n *\n * @description\n *\n * Define os tipos visuais disponíveis para o componente `po-skeleton`.\n */\nexport enum PoSkeletonType {\n  /** Tipo padrão com cor neutra clara */\n  normal = 'normal',\n\n  /** Tipo primário com cor neutra média */\n  primary = 'primary',\n\n  /** Tipo de conteúdo com fundo branco */\n  content = 'content'\n}\n","/**\n * @usedBy PoSkeletonComponent\n *\n * @description\n *\n * Define as variantes visuais do componente `po-skeleton`.\n */\nexport enum PoSkeletonVariant {\n  /** Variante para simular texto */\n  text = 'text',\n\n  /** Variante retangular (largura maior que altura) */\n  rectangle = 'rectangle',\n\n  /** Variante quadrada (largura igual à altura) */\n  square = 'square',\n\n  /** Variante circular */\n  circle = 'circle'\n}\n","import { Directive, input } from '@angular/core';\n\nimport { PoSkeletonAnimation } from './enums/po-skeleton-animation.enum';\nimport { PoSkeletonSize } from './enums/po-skeleton-size.enum';\nimport { PoSkeletonType } from './enums/po-skeleton-type.enum';\nimport { PoSkeletonVariant } from './enums/po-skeleton-variant.enum';\n\n/**\n * @description\n *\n * O componente `po-skeleton` é utilizado para exibir placeholders durante o carregamento de conteúdo,\n * melhorando a experiência do usuário ao indicar que a informação está sendo processada.\n *\n * Ele oferece diferentes variantes visuais (texto, retângulo, círculo) e animações (pulse, shimmer)\n * para simular diversos tipos de conteúdo em estado de carregamento.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                            | Valor Padrão                    |\n * |----------------------------------------|------------------------------------------------------|---------------------------------|\n * | **Cores**                              |                                                      |                                 |\n * | `--color`                              | Cor de fundo do skeleton (tipo normal)               | `var(--color-neutral-light-20)` |\n * | `--color-primary`                      | Cor de fundo do skeleton (tipo primary)              | `var(--color-neutral-mid-40)`   |\n * | `--color-content`                      | Cor de fundo do skeleton (tipo content)              | `var(--color-neutral-light-00)` |\n * | `--shimmer-highlight`                  | Cor de destaque do shimmer (tipo normal)             | `var(--color-neutral-light-30)` |\n * | `--shimmer-highlight-primary`          | Cor de destaque do shimmer (tipo primary)            | `var(--color-neutral-light-20)` |\n * | `--shimmer-highlight-content`          | Cor de destaque do shimmer (tipo content)            | `var(--color-neutral-light-05)` |\n * | **Espaçamento**                        |                                                      |                                 |\n * | `--margin-bottom`                      | Margem inferior do skeleton                          | `var(--spacing-xs)`             |\n * | **Bordas**                             |                                                      |                                 |\n * | `--border-radius`                      | Raio da borda do skeleton                            | `var(--border-radius-md)`       |\n * | `--border-radius-text`                 | Raio da borda para a variante text                   | `var(--border-radius-md)`       |\n * | `--border-radius-primary`              | Raio da borda do skeleton (tipo primary)             | `var(--border-radius-md)`       |\n * | `--border-radius-content`              | Raio da borda do skeleton (tipo content)             | `var(--border-radius-lg)`       |\n * | **Transições**                         |                                                      |                                 |\n * | `--transition-property`                | Propriedade CSS da transição                         | `all`                           |\n * | `--transition-duration`                | Duração da transição de cor                          | `var(--duration-moderate)`      |\n * | `--transition-timing`                  | Função de temporização da transição/animação         | `var(--timing-continuous)`      |\n * | **Animações**                          |                                                      |                                 |\n * | `--animation-duration-pulse`           | Duração da animação de pulsação                      | `var(--duration-very-slow)`     |\n * | `--animation-duration-shimmer`         | Duração da animação de brilho deslizante             | `var(--duration-ultra-slow)`    |\n *\n */\n@Directive()\nexport class PoSkeletonBaseComponent {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a variante visual do skeleton.\n   *\n   * Valores válidos:\n   * - `text`: Simula uma linha de texto (altura padrão: 1em)\n   * - `rectangle`: Forma retangular (proporção 3:1 por padrão)\n   * - `square`: Forma quadrada (largura e altura iguais)\n   * - `circle`: Forma circular (largura e altura iguais)\n   *\n   * @default `text`\n   */\n  variant = input<PoSkeletonVariant>(PoSkeletonVariant.text, {\n    alias: 'p-variant'\n  });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tipo visual do skeleton, alterando sua cor de fundo.\n   *\n   * Valores válidos:\n   * - `normal`: Cor neutra clara (padrão)\n   * - `primary`: Cor neutra média\n   * - `content`: Fundo branco\n   *\n   * @default `normal`\n   */\n  type = input<PoSkeletonType>(PoSkeletonType.normal, {\n    alias: 'p-type'\n  });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tipo de animação do skeleton.\n   *\n   * Valores válidos:\n   * - `none`: Sem animação\n   * - `pulse`: Animação de pulsação\n   * - `shimmer`: Animação de brilho deslizante\n   *\n   * @default `shimmer`\n   */\n  animation = input<PoSkeletonAnimation>(PoSkeletonAnimation.shimmer, {\n    alias: 'p-animation'\n  });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do skeleton para as variantes pré-definidas (`rectangle`, `square`, `circle`).\n   *\n   * Valores válidos:\n   * - `xs`: Extra pequeno (24px para square/circle, 72px x 24px para rectangle)\n   * - `sm`: Pequeno (32px para square/circle, 96px x 32px para rectangle)\n   * - `md`: Médio (48px para square/circle, 144px x 48px para rectangle)\n   * - `lg`: Grande (64px para square/circle, 192px x 64px para rectangle)\n   * - `xl`: Extra grande (96px para square/circle, 288px x 96px para rectangle)\n   * - `2xl`: Extra extra grande (144px para square/circle, 432px x 144px para rectangle)\n   *\n   * Esta propriedade é ignorada quando `p-width` ou `p-height` são definidos explicitamente.\n   *\n   * @default `md`\n   */\n  size = input<PoSkeletonSize>(PoSkeletonSize.md, {\n    alias: 'p-size'\n  });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a largura do skeleton.\n   * Aceita valores CSS válidos (px, %, em, rem).\n   *\n   * Quando definido, sobrescreve a largura padrão da variante.\n   *\n   * @default `100%` para variante `text`, tamanho baseado em `p-size` para outras variantes\n   */\n  width = input<string>('', {\n    alias: 'p-width'\n  });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a altura do skeleton.\n   * Aceita valores CSS válidos (px, %, em, rem).\n   *\n   * Quando definido, sobrescreve a altura padrão da variante.\n   */\n  height = input<string>('', {\n    alias: 'p-height'\n  });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o raio da borda do skeleton.\n   * Aceita valores CSS válidos (px, %, em, rem).\n   *\n   * Esta propriedade sobrescreve o border-radius padrão de cada variante.\n   */\n  borderRadius = input<string>('', {\n    alias: 'p-border-radius'\n  });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a descrição acessível do conteúdo que está sendo carregado.\n   *\n   * Este texto será anunciado por leitores de tela, garantindo que usuários de tecnologias assistivas\n   * sejam informados sobre o estado de carregamento.\n   *\n   * **Quando usar:**\n   * - Use em **skeletons únicos** ou no **primeiro skeleton de um grupo** com descrição contextual\n   * - Evite usar em múltiplos skeletons dentro da mesma área sem contexto, para não causar repetição excessiva\n   *\n   * **Exemplos de uso:**\n   *\n   * ```html\n   * <!-- ✅ BOM: Skeleton único com contexto -->\n   * <po-skeleton p-aria-label=\"Carregando perfil do usuário\"></po-skeleton>\n   *\n   * <!-- ✅ BOM: Grupo de skeletons - apenas o primeiro anuncia -->\n   * <po-skeleton p-aria-label=\"Carregando lista de produtos\"></po-skeleton>\n   * <po-skeleton p-type=\"primary\"></po-skeleton>\n   * <po-skeleton p-variant=\"circle\"></po-skeleton>\n   *\n   * <!-- ❌ EVITE: Múltiplos skeletons com a mesma label -->\n   * <po-skeleton p-aria-label=\"Carregando\"></po-skeleton>  <!-- \"Carregando\" -->\n   * <po-skeleton p-aria-label=\"Carregando\"></po-skeleton>  <!-- \"Carregando\" -->\n   * <po-skeleton p-aria-label=\"Carregando\"></po-skeleton>  <!-- \"Carregando\" (repetitivo!) -->\n   * ```\n   *\n   * > **Boas práticas de acessibilidade:**\n   * > - Forneça contexto específico na label para que os usuários entendam o que está carregando\n   *\n   * > - Em casos complexos, considere usar um único `<div role=\"status\">` para todo o grupo\n   * >   de skeletons, ao invés de múltiplas labels idênticas, para evitar repetição excessiva de anúncios\n   */\n  ariaLabel = input<string>('', {\n    alias: 'p-aria-label'\n  });\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\nimport { PoSkeletonBaseComponent } from './po-skeleton-base.component';\nimport { PoSkeletonSize } from './enums/po-skeleton-size.enum';\nimport { PoSkeletonVariant } from './enums/po-skeleton-variant.enum';\n\n/**\n * @docsExtends PoSkeletonBaseComponent\n *\n * @example\n *\n * <example name=\"po-skeleton-basic\" title=\"PO Skeleton Basic\">\n *  <file name=\"sample-po-skeleton-basic/sample-po-skeleton-basic.component.html\"> </file>\n *  <file name=\"sample-po-skeleton-basic/sample-po-skeleton-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-skeleton-labs\" title=\"PO Skeleton Labs\">\n *  <file name=\"sample-po-skeleton-labs/sample-po-skeleton-labs.component.html\"> </file>\n *  <file name=\"sample-po-skeleton-labs/sample-po-skeleton-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-skeleton-credit-card\" title=\"PO Skeleton - Credit Card\">\n *  <file name=\"sample-po-skeleton-credit-card/sample-po-skeleton-credit-card.component.html\"> </file>\n *  <file name=\"sample-po-skeleton-credit-card/sample-po-skeleton-credit-card.component.ts\"> </file>\n *  <file name=\"sample-po-skeleton-credit-card/sample-po-skeleton-credit-card.component.css\"> </file>\n * </example>\n *\n * <example name=\"po-skeleton-widget-card\" title=\"PO Skeleton - Widget Card\">\n *  <file name=\"sample-po-skeleton-widget-card/sample-po-skeleton-widget-card.component.html\"> </file>\n *  <file name=\"sample-po-skeleton-widget-card/sample-po-skeleton-widget-card.component.ts\"> </file>\n *  <file name=\"sample-po-skeleton-widget-card/sample-po-skeleton-widget-card.component.css\"> </file>\n * </example>\n *\n * <example name=\"po-skeleton-user-profile\" title=\"PO Skeleton - User Profile\">\n *  <file name=\"sample-po-skeleton-user-profile/sample-po-skeleton-user-profile.component.html\"> </file>\n *  <file name=\"sample-po-skeleton-user-profile/sample-po-skeleton-user-profile.component.ts\"> </file>\n *  <file name=\"sample-po-skeleton-user-profile/sample-po-skeleton-user-profile.component.css\"> </file>\n * </example>\n *\n * <example name=\"po-skeleton-social-post\" title=\"PO Skeleton - Social Post\">\n *  <file name=\"sample-po-skeleton-social-post/sample-po-skeleton-social-post.component.html\"> </file>\n *  <file name=\"sample-po-skeleton-social-post/sample-po-skeleton-social-post.component.ts\"> </file>\n *  <file name=\"sample-po-skeleton-social-post/sample-po-skeleton-social-post.component.css\"> </file>\n * </example>\n *\n * <example name=\"po-skeleton-article\" title=\"PO Skeleton - Article\">\n *  <file name=\"sample-po-skeleton-article/sample-po-skeleton-article.component.html\"> </file>\n *  <file name=\"sample-po-skeleton-article/sample-po-skeleton-article.component.ts\"> </file>\n *  <file name=\"sample-po-skeleton-article/sample-po-skeleton-article.component.css\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-skeleton',\n  templateUrl: './po-skeleton.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoSkeletonComponent extends PoSkeletonBaseComponent {\n  private readonly sizeMap: Record<\n    PoSkeletonSize,\n    { square: number; circle: number; rectangleWidth: number; rectangleHeight: number }\n  > = {\n    [PoSkeletonSize.xs]: { square: 24, circle: 24, rectangleWidth: 72, rectangleHeight: 24 },\n    [PoSkeletonSize.sm]: { square: 32, circle: 32, rectangleWidth: 96, rectangleHeight: 32 },\n    [PoSkeletonSize.md]: { square: 48, circle: 48, rectangleWidth: 144, rectangleHeight: 48 },\n    [PoSkeletonSize.lg]: { square: 64, circle: 64, rectangleWidth: 192, rectangleHeight: 64 },\n    [PoSkeletonSize.xl]: { square: 96, circle: 96, rectangleWidth: 288, rectangleHeight: 96 },\n    [PoSkeletonSize.xxl]: { square: 144, circle: 144, rectangleWidth: 432, rectangleHeight: 144 }\n  };\n\n  private readonly defaultTextDimensions = { width: '100%', height: '1em' };\n\n  private readonly defaultBorderRadius: Record<PoSkeletonVariant, string | undefined> = {\n    [PoSkeletonVariant.text]: undefined,\n    [PoSkeletonVariant.square]: undefined,\n    [PoSkeletonVariant.rectangle]: undefined,\n    [PoSkeletonVariant.circle]: '50%'\n  };\n\n  computedStyles = computed(() => {\n    const styles: { [key: string]: string } = {};\n    const variant = this.variant();\n    const size = this.size();\n    const sizeConfig = this.sizeMap[size];\n\n    const defaultDimensions = this.getDimensions(variant, sizeConfig);\n\n    styles['width'] = this.width() || defaultDimensions.width || '';\n    styles['height'] = this.height() || defaultDimensions.height || '';\n\n    const borderRadiusValue = this.borderRadius();\n    const defaultRadius = this.defaultBorderRadius[variant];\n    if (borderRadiusValue || defaultRadius) {\n      styles['border-radius'] = borderRadiusValue || defaultRadius;\n    }\n\n    return styles;\n  });\n\n  computedClasses = computed(() => ({\n    'po-skeleton': true,\n    [`po-skeleton-${this.variant()}`]: true,\n    [`po-skeleton-type-${this.type()}`]: true,\n    [`po-skeleton-animation-${this.animation()}`]: true\n  }));\n\n  private getDimensions(\n    variant: PoSkeletonVariant,\n    sizeConfig: { square: number; circle: number; rectangleWidth: number; rectangleHeight: number }\n  ): { width: string; height: string } {\n    switch (variant) {\n      case PoSkeletonVariant.text:\n        return this.defaultTextDimensions;\n      case PoSkeletonVariant.square:\n        return { width: `${sizeConfig.square}px`, height: `${sizeConfig.square}px` };\n      case PoSkeletonVariant.circle:\n        return { width: `${sizeConfig.circle}px`, height: `${sizeConfig.circle}px` };\n      case PoSkeletonVariant.rectangle:\n        return { width: `${sizeConfig.rectangleWidth}px`, height: `${sizeConfig.rectangleHeight}px` };\n      default:\n        return { width: '', height: '' };\n    }\n  }\n}\n","<div class=\"po-skeleton-wrapper\" [ngClass]=\"computedClasses()\" [ngStyle]=\"computedStyles()\" aria-hidden=\"true\"></div>\n@if (ariaLabel()) {\n  <span class=\"po-skeleton-aria-label\" role=\"status\" aria-live=\"polite\">{{ ariaLabel() }}</span>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoSkeletonComponent } from './po-skeleton.component';\n\n/**\n * @description\n *\n * Módulo do componente po-skeleton.\n */\n@NgModule({\n  imports: [CommonModule],\n  declarations: [PoSkeletonComponent],\n  exports: [PoSkeletonComponent]\n})\nexport class PoSkeletonModule {}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente para o conjunto de círculos que faz a passagem de itens do `po-slide`.\n */\n@Component({\n  selector: 'po-slide-circles',\n  templateUrl: './po-slide-circles.component.html',\n  standalone: false\n})\nexport class PoSlideCirclesComponent {\n  /** Index do slide atual. */\n  @Input('p-current-slide-index') currentSlideIndex: number;\n\n  /** Itens do slide. */\n  @Input('p-items') items: Array<any>;\n\n  /** Evento emitido ao clicar em um controle. */\n  @Output('p-click') click = new EventEmitter<any>();\n}\n","<div class=\"po-slide-circles\">\n  @for (item of items; track item; let index = $index) {\n    <div\n      class=\"po-slide-circle\"\n      [class.po-slide-active-circle]=\"index === currentSlideIndex\"\n      (click)=\"click.emit(index)\"\n    ></div>\n  }\n</div>\n","import { Directive, Input } from '@angular/core';\n\nimport { convertToBoolean, convertToInt } from './../../utils/util';\n\nimport { PoSlideItem } from './interfaces/po-slide-item.interface';\n\nconst poSlideIntervalDefault = 4000;\n\n/**\n * @description\n *\n * Componente de slide para visualização e controle de elementos de forma cíclica. Exibe um conjunto de imagens ou dados que permitem\n * customizar sua visualização utilizando a diretiva **[p-slide-content-template](/documentation/po-slide-content-template)**.\n *\n * #### Boas práticas:\n * - Utilizar imagens no slide, mesmo quando possui conteúdo personalizado.\n * - Evitar utilizar apenas um slide isolado, utilize pelo menos dois.\n * - Evitar utilizar mais de 5 slides, pois a ideia do componente é destacar apenas informações importantes.\n */\n@Directive()\nexport abstract class PoSlideBaseComponent {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a exibição das setas de navegação.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-hide-arrows', transform: convertToBoolean }) hideArrows: boolean = false;\n\n  private _interval: number = poSlideIntervalDefault;\n  private _height?: number;\n  private _slides: Array<PoSlideItem | string | any>;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Altura do po-slide, caso seja slide com template customizado, não assume o valor `default`.\n   *\n   * @default `336`\n   */\n  @Input('p-height') set height(value: number) {\n    this._height = convertToInt(value);\n  }\n\n  get height(): number {\n    return this._height;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Valor em milissegundos que define o tempo de troca dos slides, caso o valor seja menor que `1000` os slides não trocam automaticamente.\n   *\n   * @default `4000`\n   */\n  @Input('p-interval') set interval(value: number) {\n    this._interval = convertToInt(value, poSlideIntervalDefault);\n    this._interval >= 1000 ? this.startInterval() : this.cancelInterval();\n  }\n\n  get interval(): number {\n    return this._interval;\n  }\n\n  /**\n   * @description\n   *\n   * Array de imagens ou dados para o slide, pode ser de três formas:\n   *\n   * - Array implementando objetos da interface `PoSlideItem`:\n   *   ```\n   *   [{ image: '/assets/image-1', action: 'imageClick.bind(this)'}, { image: '/assets/image-2' }]\n   *   ```\n   * - Array de `strings` com os caminhos das imagens:\n   *   ```\n   *   ['/assets/image-1', '/assets/image-2' ]\n   *   ```\n   * - Array com lista de itens (para utilizar template):\n   *   ```\n   *   [{ label: '1', img: '/assets/image-1' }, { label: '2', img: '/assets/image-1' }]\n   *   ```\n   *\n   * > As setas de navegação e o controle com círculos apenas serão renderizados caso possua mais de um slide.\n   */\n  @Input('p-slides') set slides(value: Array<PoSlideItem | string | any>) {\n    this._slides = value;\n    this.setSlideItems(value);\n\n    if (value && value.length) {\n      this.startSlide();\n    }\n  }\n\n  get slides(): Array<PoSlideItem | string | any> {\n    return this._slides;\n  }\n\n  abstract setSlideHeight(height: number): void;\n\n  protected abstract cancelInterval(): void;\n  protected abstract setSlideItems(value: Array<PoSlideItem | string | any>): void;\n  protected abstract startSlide(): void;\n  protected abstract startInterval(): void;\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n/**\n * @usedBy PoSlideComponent\n *\n * @description\n *\n * Esta diretiva permite a customização de um slide.\n *\n * Deve-se utilizar como parâmetro a referência do item e/ou índice, sendo por padrão o item.\n *  - Item: `item` determina o item do slide corrente.\n *  - Índice: `index` determina o índice do slide corrente.\n *\n * Esta diretiva pode ser usada de duas formas: explícita ou *syntax sugar*. Veja a seguir ambos, respectivamente:\n *\n * ```\n * ...\n * <po-slide\n *   [p-slides]=\"[{ id: 1, name: 'Register', email: 'register@po-ui.com' }]\">\n *\n *   <ng-template p-slide-content-template let-item let-code=\"index\">\n *     <div class=\"po-row\">\n *       <po-info class=\"po-md-6\" p-label=\"Code\" [p-value]=\"item.id\"></po-info>\n *       <po-info class=\"po-md-6\" p-label=\"Email\" [p-value]=\"item.email\"></po-info>\n *     </div>\n *   </ng-template>\n *\n * </po-slide>\n *\n * ...\n * ```\n *\n * ```\n * ...\n * <po-slide\n *    [p-slides]=\"[{ id: 1, name: 'Register', email: 'register@po-ui.com' }]\">\n *\n *    <div *p-slide-content-template=\"let item, let i=index\" class=\"po-row\">\n *      <po-info class=\"po-md-12\" p-label=\"Email\" [p-value]=\"item.email\"></po-info>\n *    </div>\n * </po-slide>\n * ...\n *\n * ```\n */\n@Directive({\n  selector: '[p-slide-content-template]',\n  standalone: false\n})\nexport class PoSlideContentTemplateDirective {\n  // Necessário manter templateRef para o funcionamento do row template.\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\n\nimport { isIEOrEdge } from '../../../utils/util';\n\nimport { PoSlideContentTemplateDirective } from '../directives/po-slide-content-template.directive';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente para cada item do po-slide.\n */\n@Component({\n  selector: 'po-slide-item',\n  templateUrl: './po-slide-item.component.html',\n  standalone: false\n})\nexport class PoSlideItemComponent {\n  @ViewChild('slideItem', { static: true }) itemElement: ElementRef;\n\n  /** Ação executada ao clicar em uma imagem */\n  @Input('p-action') action: Function;\n\n  /** Texto alternativo quando a imagem não é encontrada */\n  @Input('p-alt') alt: string;\n\n  /** Dados para o template customizado */\n  @Input('p-data') data: Array<any>;\n\n  /** Caminho da imagem */\n  @Input('p-image') image: string;\n\n  /** Altura da imagem */\n  @Input('p-image-height') imageHeight: number;\n\n  /** Template customizado */\n  @Input('p-template') template: PoSlideContentTemplateDirective;\n\n  /** Link executado ao clicar em uma imagem */\n  @Input('p-link') link: string;\n\n  isIEOrEdge: any = isIEOrEdge();\n\n  setLinkType() {\n    if (!this.template && this.link) {\n      return this.link.startsWith('http') ? 'externalLink' : 'internalLink';\n    }\n\n    return 'noLink';\n  }\n}\n","<div\n  #slideItem\n  class=\"po-slide-item\"\n  [class.po-slide-item-background-image]=\"!template && isIEOrEdge\"\n  [style.background-image]=\"!template && isIEOrEdge ? 'url(' + image + ')' : ''\"\n>\n  @switch (setLinkType()) {\n    <!-- slide com link interno -->\n    @case ('internalLink') {\n      <a class=\"po-slide-item-link\" [routerLink]=\"link\">\n        <ng-container\n          [ngTemplateOutlet]=\"slideItemImage\"\n          [ngTemplateOutletContext]=\"{ item: { alt: alt, image: image } }\"\n        >\n        </ng-container>\n      </a>\n    }\n    <!-- slide com link externo -->\n    @case ('externalLink') {\n      <a class=\"po-slide-item-link\" [href]=\"link\">\n        <ng-container\n          [ngTemplateOutlet]=\"slideItemImage\"\n          [ngTemplateOutletContext]=\"{ item: { alt: alt, image: image } }\"\n        >\n        </ng-container>\n      </a>\n    }\n    <!-- slide sem link -->\n    @case ('noLink') {\n      <a\n        [ngClass]=\"action ? 'po-slide-item-link' : 'po-slide-item-no-link'\"\n        (click)=\"action ? action(data) : undefined\"\n      >\n        <ng-container\n          [ngTemplateOutlet]=\"template ? slideItemTemplate : slideItemImage\"\n          [ngTemplateOutletContext]=\"{ item: { alt: alt, image: image, data: data } }\"\n        >\n        </ng-container>\n      </a>\n    }\n  }\n</div>\n\n<ng-template #slideItemTemplate let-item=\"item\" ; let-index=\"index\">\n  @if (template) {\n    <div class=\"po-slide-item-content\">\n      <ng-template\n        [ngTemplateOutlet]=\"template.templateRef\"\n        [ngTemplateOutletContext]=\"{ $implicit: item.data, index: index }\"\n      >\n      </ng-template>\n    </div>\n  }\n</ng-template>\n\n<ng-template #slideItemImage let-item=\"item\">\n  @if (item.image && !isIEOrEdge) {\n    <img class=\"po-slide-image\" [alt]=\"item.alt\" [src]=\"item.image\" [style.height.px]=\"imageHeight\" />\n  }\n</ng-template>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente para a seta que controla a passagem de itens do `po-slide`.\n */\n@Component({\n  selector: 'po-slide-control',\n  templateUrl: './po-slide-control.component.html',\n  standalone: false\n})\nexport class PoSlideControlComponent {\n  /** Tipo de controle que aceita os valores: 'previous' e 'next'. */\n  @Input('p-control') control: string;\n\n  /** Evento emitido ao clicar em um controle. */\n  @Output('p-click') click = new EventEmitter<any>();\n}\n","<div class=\"po-slide-control-{{ control }}\">\n  <div class=\"po-slide-arrow-circle\" (click)=\"click.emit()\">\n    <po-icon [p-icon]=\"control === 'next' ? 'ICON_ARROW_RIGHT' : 'ICON_ARROW_LEFT'\"></po-icon>\n  </div>\n</div>\n","import {\n  Component,\n  ContentChild,\n  DoCheck,\n  ElementRef,\n  HostListener,\n  QueryList,\n  ViewChild,\n  ViewChildren,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n  inject\n} from '@angular/core';\n\nimport { animate, AnimationBuilder, AnimationFactory, AnimationPlayer, keyframes, style } from '@angular/animations';\n\nimport { Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { PoSlideBaseComponent } from './po-slide-base.component';\nimport { PoSlideContentTemplateDirective } from './directives/po-slide-content-template.directive';\nimport { PoSlideItem } from './interfaces/po-slide-item.interface';\nimport { PoSlideItemComponent } from './po-slide-item/po-slide-item.component';\n\nconst poSlideDefaultHeight = 336;\nconst poSlideIntervalMin = 1000;\nconst poSlideMinHeight = 192;\nconst poSlideTiming = '250ms ease';\n\n/**\n * @docsExtends PoSlideBaseComponent\n *\n * @example\n * <example name=\"po-slide-basic\" title=\"PO Slide Basic\">\n *   <file name=\"sample-po-slide-basic/sample-po-slide-basic.component.html\"> </file>\n *   <file name=\"sample-po-slide-basic/sample-po-slide-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-slide-labs\" title=\"PO Slide Labs\">\n *   <file name=\"sample-po-slide-labs/sample-po-slide-labs.component.html\"> </file>\n *   <file name=\"sample-po-slide-labs/sample-po-slide-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-slide-useful-articles\" title=\"PO Slide - Useful articles\">\n *   <file name=\"sample-po-slide-useful-articles/sample-po-slide-useful-articles.component.html\"> </file>\n *   <file name=\"sample-po-slide-useful-articles/sample-po-slide-useful-articles.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-slide-landscapes\" title=\"PO Slide - Landscapes\">\n *   <file name=\"sample-po-slide-landscapes/sample-po-slide-landscapes.component.html\"> </file>\n *   <file name=\"sample-po-slide-landscapes/sample-po-slide-landscapes.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-slide-external-controls\" title=\"PO Slide - External Controls\">\n *  <file name=\"sample-po-slide-external-controls/sample-po-slide-external-controls.component.html\"> </file>\n *  <file name=\"sample-po-slide-external-controls/sample-po-slide-external-controls.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-slide',\n  templateUrl: './po-slide.component.html',\n  standalone: false\n})\nexport class PoSlideComponent extends PoSlideBaseComponent implements OnInit, DoCheck, OnChanges, OnDestroy {\n  private readonly builder = inject(AnimationBuilder);\n\n  @ContentChild(PoSlideContentTemplateDirective, { static: true })\n  slideContentTemplate: PoSlideContentTemplateDirective;\n\n  @ViewChild('slide', { static: true }) private readonly slide: ElementRef;\n\n  @ViewChildren(PoSlideItemComponent) private readonly itemsElements: QueryList<PoSlideItemComponent>;\n\n  currentSlideIndex = 0;\n  imageHeight: number;\n  slideItems: Array<PoSlideItem | any> = [];\n  slideItemWidth: number;\n\n  private isLoaded: boolean = false;\n  private player: AnimationPlayer;\n  private setInterval: any;\n  private readonly resize$ = new Subject<any>();\n  private resizeSubscription: Subscription;\n\n  private get hasElements() {\n    return !!this.slide.nativeElement.offsetWidth && !!this.itemsElements && !!this.itemsElements.length;\n  }\n\n  private get isImageSlide() {\n    return !this.slideContentTemplate;\n  }\n\n  private get offset() {\n    return this.currentSlideIndex * this.slideItemWidth;\n  }\n\n  get hasSlides() {\n    return !!this.slides && !!this.slides.length;\n  }\n\n  @HostListener('window:resize') onResize() {\n    this.resize$.next({});\n  }\n\n  ngOnInit() {\n    this.resizeSubscription = this.resize$.pipe(debounceTime(150)).subscribe(() => {\n      this.setSlideItemWidth();\n      this.goToItem(this.currentSlideIndex);\n    });\n  }\n\n  ngDoCheck() {\n    if (!this.isLoaded && this.hasElements) {\n      this.setSlideItemWidth();\n      this.isLoaded = true;\n\n      if (this.hasSlides) {\n        this.startSlide();\n      }\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.height) {\n      this.setSlideHeight(this.height);\n    }\n  }\n\n  ngOnDestroy() {\n    this.resizeSubscription?.unsubscribe();\n  }\n\n  /**\n   * Método que retorna o index do slide atual\n   *\n   * ```\n   * @ViewChild('slideComponent', { static: true }) slideComponent: PoSlideComponent;\n   *  myFunction() {\n   *    let currentIndex = this.slideComponent.getCurrentSlideIndex();\n   * }\n   *\n   * ```\n   */\n  getCurrentSlideIndex(): number {\n    return this.currentSlideIndex;\n  }\n\n  goToItem(index: number) {\n    if (this.interval > poSlideIntervalMin) {\n      this.startInterval();\n    }\n\n    this.currentSlideIndex = index;\n    this.animate(this.offset);\n  }\n\n  nextControl() {\n    if (this.interval > poSlideIntervalMin) {\n      this.startInterval();\n    }\n\n    this.next();\n  }\n\n  /**\n   * Método para chamar o próximo slide.\n   *\n   * ```\n   * @ViewChild('slideComponent', { static: true }) slideComponent: PoSlideComponent;\n   *\n   * myFunction() {\n   *  this.slideComponent.next();\n   * }\n   * ```\n   */\n  next() {\n    if (this.currentSlideIndex + 1 === this.slideItems.length) {\n      this.currentSlideIndex = 0;\n      this.animate(0);\n      return;\n    }\n    this.currentSlideIndex = (this.currentSlideIndex + 1) % this.slideItems.length;\n    this.animate(this.offset);\n  }\n  /**\n   * Método para chamar o slide anterior.\n   *\n   * ```\n   * @ViewChild('slideComponent', { static: true }) slideComponent: PoSlideComponent;\n   *\n   * myFunction() {\n   *  this.slideComponent.previous();\n   * }\n   * ```\n   */\n  previous() {\n    if (this.currentSlideIndex === 0) {\n      this.currentSlideIndex = this.slideItems.length - 1;\n      this.animate(this.offset);\n      return;\n    }\n    this.currentSlideIndex = (this.currentSlideIndex - 1 + this.slideItems.length) % this.slideItems.length;\n    this.animate(this.offset);\n  }\n\n  previousControl() {\n    if (this.interval > poSlideIntervalMin) {\n      this.startInterval();\n    }\n\n    this.previous();\n  }\n\n  setSlideHeight(height: number) {\n    this.setHeight(height);\n  }\n\n  protected cancelInterval() {\n    clearInterval(this.setInterval);\n  }\n\n  protected setSlideItems(slides: Array<PoSlideItem | string | any>) {\n    if (this.hasSlides) {\n      this.slideContentTemplate ? this.createArrayForTemplate(slides) : this.createArrayFromSlides(slides);\n    } else {\n      this.slideItems = [];\n      this.cancelInterval();\n    }\n  }\n\n  protected startSlide() {\n    this.setSlideHeight(this.height);\n\n    if (this.interval > poSlideIntervalMin) {\n      this.startInterval();\n    }\n\n    this.currentSlideIndex = 0;\n  }\n\n  protected startInterval() {\n    if (this.setInterval) {\n      this.cancelInterval();\n    }\n\n    this.setInterval =\n      this.hasSlides && this.hasElements\n        ? setInterval(() => {\n            this.next();\n          }, this.interval)\n        : undefined;\n  }\n\n  private animate(offset: number) {\n    if (this.hasElements) {\n      const animation: AnimationFactory = this.buildTransitionAnimation(offset);\n\n      this.player = animation.create(this.slide.nativeElement);\n      this.player.play();\n    }\n  }\n\n  private buildTransitionAnimation(offset: number) {\n    return this.builder.build([animate(poSlideTiming, keyframes([style({ transform: `translateX(-${offset}px)` })]))]);\n  }\n\n  private createArrayForTemplate(slides: Array<any>) {\n    this.slideItems = [...slides];\n  }\n\n  private createArrayFromSlides(slides: Array<PoSlideItem | string | any>) {\n    const isStringArray = slides.every(item => typeof item === 'string');\n\n    if (isStringArray) {\n      slides.forEach(element => this.slideItems.push({ image: `${element}` }));\n    } else {\n      this.slideItems = [...(<Array<PoSlideItem>>slides)];\n    }\n  }\n\n  private setDefaultHeight(height: number) {\n    if ((height && height <= poSlideMinHeight) || (!height && this.isImageSlide)) {\n      this.slide.nativeElement.style.height = `${poSlideDefaultHeight}px`;\n      this.imageHeight = poSlideDefaultHeight;\n    } else {\n      this.imageHeight = undefined;\n    }\n  }\n\n  private setHeight(height: number) {\n    if (height && height > poSlideMinHeight) {\n      this.slide.nativeElement.style.height = `${height}px`;\n      this.imageHeight = height;\n    } else {\n      this.setDefaultHeight(height);\n    }\n  }\n\n  private setSlideItemWidth() {\n    if (this.hasElements) {\n      this.slideItemWidth = this.itemsElements.first.itemElement.nativeElement.getBoundingClientRect().width;\n    }\n  }\n}\n","<div class=\"po-slide-wrapper\">\n  <div class=\"po-slide-outer\">\n    <div class=\"po-slide-inner\" #slide>\n      @for (item of slideItems; track item; let index = $index) {\n        <po-slide-item\n          [p-action]=\"item.action\"\n          [p-data]=\"item\"\n          [p-image]=\"item.image\"\n          [p-image-height]=\"imageHeight\"\n          [p-template]=\"slideContentTemplate\"\n          [p-alt]=\"item.alt\"\n          [p-link]=\"item.link\"\n        >\n        </po-slide-item>\n      }\n    </div>\n\n    @if (!hideArrows && hasSlides && slides.length > 1) {\n      <po-slide-control p-control=\"previous\" (p-click)=\"previousControl()\"> </po-slide-control>\n    }\n\n    @if (!hideArrows && hasSlides && slides.length > 1) {\n      <po-slide-control p-control=\"next\" (p-click)=\"nextControl()\"> </po-slide-control>\n    }\n  </div>\n\n  @if (hasSlides && slides.length > 1) {\n    <po-slide-circles [p-current-slide-index]=\"currentSlideIndex\" [p-items]=\"slideItems\" (p-click)=\"goToItem($event)\">\n    </po-slide-circles>\n  }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PoContainerModule } from '../po-container/po-container.module';\nimport { PoIconModule } from '../po-icon';\n\nimport { PoSlideCirclesComponent } from './po-slide-circles/po-slide-circles.component';\nimport { PoSlideComponent } from './po-slide.component';\nimport { PoSlideContentTemplateDirective } from './directives/po-slide-content-template.directive';\nimport { PoSlideControlComponent } from './po-slide-control/po-slide-control.component';\nimport { PoSlideItemComponent } from './po-slide-item/po-slide-item.component';\n\n/**\n * @description\n *\n * Módulo do componente `po-slide`.\n *\n * > Para o correto funcionamento do componente `po-slide`, deve ser importado o módulo `BrowserAnimationsModule` no\n * > módulo principal da sua aplicação.\n *\n * Módulo da aplicação:\n * ```\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n * import { PoModule } from '@po-ui/ng-components';\n * ...\n *\n * @NgModule({\n *   imports: [\n *     BrowserModule,\n *     BrowserAnimationsModule,\n *     ...\n *     PoModule\n *   ],\n *   declarations: [\n *     AppComponent,\n *     ...\n *   ],\n *   providers: [],\n *   bootstrap: [AppComponent]\n * })\n * export class AppModule { }\n * ```\n *\n * Em aplicações Standalone, utilize a seguinte configuração para o bootstrap:\n *\n * ```\n * import { bootstrapApplication } from '@angular/platform-browser';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n * import { AppComponent } from './app.component';\n *\n * bootstrapApplication(AppComponent, {\n *   providers: [importProvidersFrom(BrowserAnimationsModule)]\n * }).catch(err => console.error(err));\n * ```\n */\n@NgModule({\n  imports: [CommonModule, RouterModule, PoContainerModule, PoIconModule],\n  declarations: [\n    PoSlideCirclesComponent,\n    PoSlideComponent,\n    PoSlideControlComponent,\n    PoSlideContentTemplateDirective,\n    PoSlideItemComponent\n  ],\n  exports: [PoSlideComponent, PoSlideContentTemplateDirective],\n  providers: [],\n  schemas: []\n})\nexport class PoSlideModule {}\n","/**\n * @usedBy PoStepperComponent\n *\n * @description\n *\n * <a id=\"stepperStatus\"></a>\n *\n * *Enums* para os status do `po-stepper` quando utilizada a propriedade `p-steps`.\n */\nexport enum PoStepperStatus {\n  /** Define o estado do *step* como ativo. */\n  Active = 'active',\n\n  /** Define o estado do *step* como padrão. */\n  Default = 'default',\n\n  /** Define o estado do *step* como desabilitado. */\n  Disabled = 'disabled',\n\n  /** Define o estado do *step* como concluído. */\n  Done = 'done',\n\n  /** Define o estado do *step* com erro. */\n  Error = 'error'\n}\n","import { AfterContentInit, Component, ElementRef, Input, TemplateRef, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { uuid } from '../../../utils/util';\n\nimport { PoStepperStatus } from '../enums/po-stepper-status.enum';\n\n/**\n * @description\n *\n * O componente `po-step` é utilizado para envolver e renderizar o conteúdo de um passo (*step*) do `po-stepper`, por exemplo:\n *\n * ```\n * <po-stepper>\n *\n *    <po-step p-label=\"Endereço\">\n *\n *        <!-- Conteúdo referente ao endereço -->\n *\n *    </po-step>\n *\n *    <po-step p-label=\"Pagamento\">\n *\n *        <!-- Conteúdo referente ao pagamento -->\n *\n *    </po-step>\n *\n *  </po-stepper>\n * ```\n *\n * A renderização do conteúdo envolvido na tela e o controle dos status são feitos automaticamente. No qual, o primeiro\n * `po-step` encontrado será colocado como ativo, o próximo fica com o status *default* e os demais ficam\n * desabilitados (*disabled*).\n *\n * Ao clicar no `po-step` que está com o status *default*, o que está ativo ficará com o\n * status de concluído (*done*) e o próximo que estava desabilitado ficará com o status *default* e o restante permanecerá\n * com o status desabilitado.\n *\n * > Ao utilizar o `po-step`, o componente `po-stepper` funcionará de forma sequencial, ou seja, não será possível\n * pular para outro `po-step` que esteja com o status igual a desabilitado (*disabled*).\n *\n * Acesse a [documentação do `po-stepper`](/documentation/po-stepper) para ter mais informações sobre o seu funcionamento\n * e exemplos de uso.\n */\n@Component({\n  selector: 'po-step',\n  templateUrl: 'po-step.component.html',\n  standalone: false\n})\nexport class PoStepComponent implements AfterContentInit {\n  private readonly elementRef = inject(ElementRef);\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Função chamada quando o próximo *step* for clicado ou quando o método `PoStepperComponent.next()` for chamado.\n   * Ao retornar `true` define que esse *step* ficará ativo e o atual como concluído (*done*).\n   * Também aceita funções que retornem `Observable<boolean>`. Ao retornar um `Observable<boolean>`,\n   * garanta que esse `Observable` será completado, caso houver algum erro durante o processo não será possível prosseguir\n   * ao próximo *step*.\n   *\n   * Ao ser disparada, a mesma receberá por parâmetro o `PoStepComponent` atual.\n   *\n   * O contexto da função que será chamada, será o mesmo que o do `PoStepComponent`, então para poder alterar\n   * para o contexto do componente que o está utilizando, pode ser utilizado a propriedade `bind` do Javascript.\n   * Por exemplo, para a função `validate`:\n   *\n   * ```\n   * <po-step p-label=\"Step 1\" [p-can-active-next-step]=\"validate.bind(this)\">\n   * ...\n   * </po-step>\n   * ```\n   */\n  @Input('p-can-active-next-step') canActiveNextStep:\n    | ((currentStep) => boolean)\n    | ((currentStep) => Observable<boolean>);\n\n  /** Título que será exibido descrevendo o passo (*step*). */\n  @Input('p-label') label: string = '';\n\n  // ID do step\n  id?: string = uuid();\n\n  private _status?: PoStepperStatus = PoStepperStatus.Disabled;\n\n  // Estado de exibição do `po-step`.\n  @Input('p-status') set status(status: PoStepperStatus) {\n    this._status = status;\n\n    this.setDisplayOnActiveOrError();\n  }\n\n  get status() {\n    return this._status;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define o ícone padrão do step em seu status *default*.\n   * Esta propriedade permite usar ícones da [Biblioteca de ícones](https://po-ui.io/icons).\n   * ```\n   * <po-stepper>\n   *    ...\n   *    <po-step p-icon-default=\"an an-map-pin\"></po-step>\n   * </po-stepper>\n   * ```\n   * Outra opção seria a customização do ícone através do `TemplateRef`, conforme exemplo abaixo:\n   * ```\n   * <po-stepper>\n   *    ...\n   *    <po-step [p-icon-default]=\"template\"></po-step>\n   * </po-stepper>\n   *\n   * <ng-template #template>\n   *    <i class=\"an an-shopping-cart\"></i>\n   * </ng-template\n   * ```\n   * > Deve-se usar `font-size: inherit` para ajustar ícones que não se ajustam automaticamente.\n   */\n  @Input('p-icon-default') iconDefault?: string | TemplateRef<void>;\n\n  ngAfterContentInit() {\n    this.setDisplayOnActiveOrError();\n  }\n\n  protected setDisplayOnActiveOrError() {\n    this.elementRef.nativeElement.style.display =\n      this.status === PoStepperStatus.Active || this.status === PoStepperStatus.Error ? '' : 'none';\n  }\n}\n","<ng-content></ng-content>\n","import { Component, Input, TemplateRef } from '@angular/core';\n\nimport { PoStepperStatus } from '../enums/po-stepper-status.enum';\n\nconst poMediumStepSize = 32;\nconst poLargeStepSize = 48;\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente responsável por exibir os círculos dos *steps*.\n */\n@Component({\n  selector: 'po-stepper-circle',\n  templateUrl: './po-stepper-circle.component.html',\n  standalone: false\n})\nexport class PoStepperCircleComponent {\n  // Alinhamento do *step*.\n  @Input('p-align-center') alignCenter: boolean;\n\n  // Conteúdo que irá aparecer no círculo do *step*.\n  @Input('p-content') content: any;\n\n  // Ícone para o status Active do *step*.\n  @Input('p-step-icon-active') iconActive?: string | TemplateRef<void>;\n\n  // Ícone para o status Done do *step*.\n  @Input('p-step-icon-done') iconDone?: string | TemplateRef<void>;\n\n  // Ícone para o status default do *step*.\n  @Input('p-icon-default') iconDefault?: string | TemplateRef<void>;\n\n  // Define se serão exibidos ícones no lugar de números nos steps.\n  @Input('p-icons') icons: boolean;\n\n  // Tamanho do *step-circle*.\n  @Input('p-size') size: number;\n\n  // Status do *step*.\n  @Input('p-status') status: string;\n\n  get isActive(): boolean {\n    return this.status === PoStepperStatus.Active;\n  }\n\n  get isDefault(): boolean {\n    return this.status === PoStepperStatus.Default;\n  }\n\n  get isDisabled(): boolean {\n    return this.status === PoStepperStatus.Disabled;\n  }\n\n  get isDone(): boolean {\n    return this.status === PoStepperStatus.Done;\n  }\n\n  get isError(): boolean {\n    return this.status === PoStepperStatus.Error;\n  }\n\n  get isLargeStep(): boolean {\n    return this.size >= poLargeStepSize;\n  }\n\n  get isMediumStep(): boolean {\n    return this.size >= poMediumStepSize && !this.isLargeStep;\n  }\n}\n","<div\n  class=\"po-stepper-circle\"\n  [class.po-stepper-circle-center]=\"alignCenter\"\n  [ngClass]=\"{ 'po-stepper-circle-border': !isActive && !isError, 'po-stepper-circle-done': isDone }\"\n  [style.height.px]=\"size\"\n  [style.width.px]=\"size\"\n>\n  @if (isActive || isError) {\n    <div class=\"po-stepper-circle-active\">\n      <po-icon\n        class=\"po-stepper-circle-content\"\n        [p-icon]=\"iconActive ? iconActive : 'ICON_EDIT'\"\n        [class.po-stepper-circle-content-lg]=\"isLargeStep\"\n        [class.po-stepper-circle-content-md]=\"isMediumStep\"\n      ></po-icon>\n    </div>\n  } @else {\n    @if (!isActive) {\n      <po-icon\n        class=\"po-stepper-circle-content\"\n        [p-icon]=\"isDone ? iconDone || 'ICON_OK' : iconDefault ? iconDefault : icons ? 'ICON_INFO' : ''\"\n        [class.po-stepper-circle-content-lg]=\"isLargeStep\"\n        [class.po-stepper-circle-content-md]=\"isMediumStep\"\n      >\n        {{ !icons && !isDone && !iconDefault ? content : '' }}\n      </po-icon>\n    }\n  }\n</div>\n","/**\n *\n * @usedBy PoStepperComponent\n *\n * @description\n *\n * <a id=\"stepperOrientation\"></a>\n *\n * *Enums* para definição da orientação do `po-stepper`.\n */\nexport enum PoStepperOrientation {\n  /** Define a exibição do componente na horizontal. */\n  Horizontal = 'horizontal',\n\n  /** Define a exibição do componente na vertical. */\n  Vertical = 'vertical'\n}\n","import { EventEmitter, Input, Output, Directive, TemplateRef } from '@angular/core';\n\nimport { convertToBoolean, uuid } from '../../utils/util';\n\nimport { PoStepComponent } from './po-step/po-step.component';\nimport { PoStepperItem } from './po-stepper-item.interface';\nimport { PoStepperOrientation } from './enums/po-stepper-orientation.enum';\nimport { PoStepperStatus } from './enums/po-stepper-status.enum';\n\nconst poStepperOrientationDefault = PoStepperOrientation.Horizontal;\n\n/**\n * @description\n *\n * O `po-stepper` permite que um processo seja dividido em passos para que o usuário o realize\n * mais facilmente.\n *\n * Existem duas formas de utilização:\n *\n * 1 - Usando o componente [**po-step**](/documentation/po-step) para renderizar e descrever os passos.\n *\n * 2 - Através da propriedade `p-steps` para descrever os passos do processo, sendo responsabilidade do desenvolvedor o controle\n * de renderização do que será exibido a cada *step* ativo.\n *\n * Através de suas propriedades, é possível definir se sua orientação será horizontal ou vertical,\n * além da possibilidade de aumentar o tamanho dos *steps*.\n *\n * Também é possível navegar entre os *steps* através do teclado utilizando a tecla *tab* e, para ativar o *step* em foco basta\n * pressionar a tecla *enter*. Além disso, é possível ativar a exibição de ícones no lugar de números nos *steps* através da\n * propriedade [`p-step-icons`](/documentation/po-stepper#stepIconsProperty).\n *\n * #### Utilizando os métodos do componente:\n *\n * Para acessar os métodos do componente é necessário ter a referência do mesmo.\n *\n * Por exemplo, utilizando um [**ViewChild**](https://angular.io/api/core/ViewChild):\n *\n * ```\n * @ViewChild(PoStepperComponent) poStepperComponent: PoStepperComponent;\n * ```\n *\n * E para acessar o método:\n *\n * ```\n * poStepperComponent.next();\n * ```\n *\n * #### Boas práticas\n *\n * - Evite `labels` extensos que quebram o layout do `po-stepper`, use `labels` diretos, curtos e intuitivos.\n * - Utilize apenas um `po-stepper` por página.\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                              | Descrição                                             | Valor Padrão                                      |\n * |------------------------------------------|-------------------------------------------------------|---------------------------------------------------|\n * | **Label**                                |                                                       |                                                   |\n * | `--font-family`                          | Família tipográfica usada                             | `var(--font-family-theme)`                        |\n * | `--font-size`                            | Tamanho da fonte                                      | `var(--font-size-default)`                        |\n * | `--font-weight`                          | Peso da fonte                                         | `var(--font-weight-normal)`                       |\n * | **Step - Done**                          |                                                       |                                                   |\n * | `--text-color`                           | Cor do texto no step concluído                        | `var(--color-neutral-dark-70)`                    |\n * | `--color-icon-done`                      | Cor do ícone no step concluído                        | `var(--color-neutral-dark-70)`                    |\n * | `--background-done`                      | Cor de fundo no step concluído                        | `var(--color-neutral-light-00)`                   |\n * | **Line - Done**                          |                                                       |                                                   |\n * | `--color-line-done`                      | Cor da linha no step concluído                        | `var(--color-neutral-mid-40)`                     |\n * | **Step - Current**                       |                                                       |                                                   |\n * | `--color-icon-current`                   | Cor do ícone no step atual                            | `var(--color-neutral-light-00)`                   |\n * | `--background-current`                   | Cor de fundo no step atual                            | `var(--color-action-default)`                     |\n * | `--font-weight-current`                  | Peso da fonte no step atual                           | `var(--font-weight-bold)`                         |\n * | **Step - Next**                          |                                                       |                                                   |\n * | `--font-size-circle`                     | Tamanho da fonte no círculo do próximo step           | `var(--font-size-sm)`                             |\n * | `--color-next`                           | Cor do ícone no próximo step                          | `var(--color-action-disabled)`                    |\n * | `--text-color-next`                      | Cor do texto no próximo step                          | `var(--color-neutral-light-30)`                   |\n * | **Focused**                              |                                                       |                                                   |\n * | `--outline-color-focused`                | Cor do outline do estado de focus                     | `var(--color-action-focus)`                       |\n */\n@Directive()\nexport class PoStepperBaseComponent {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * <a id=\"stepIconsProperty\"></a>\n   *\n   * Habilita a exibição de ícone ao invés de número no centro do círculo dos *steps*.\n   *\n   * @default `false`\n   */\n  @Input('p-step-icons') stepIcons: boolean;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos *steps* em *pixels*, possibilitando um maior destaque.\n   *\n   * O valor informado deve ser entre `24` e `64`.\n   *\n   * > Valores que não se enquadrarem a esta regra serão ignorados, mantendo-se o valor *default*.\n   *\n   * @default `24`\n   */\n  @Input('p-step-size') stepSize: number;\n\n  /** Ação que será executada quando o usuário mudar o passo do `po-stepper`. */\n  @Output('p-change-step') onChangeStep = new EventEmitter<number | PoStepComponent>();\n\n  private _alignCenter?: boolean = true;\n  private _orientation?: PoStepperOrientation = poStepperOrientationDefault;\n  private _sequential?: boolean = true;\n  private _step: number = 1;\n  private _steps: Array<PoStepperItem> = [];\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o alinhamento dos *steps* e *labels* no *stepper*, dependendo da orientação.\n   *\n   * - Quando `true`, ficam centralizados em ambas as orientações (horizontal e vertical).\n   * - Quando `false`, ficam alinhados à esquerda na orientação horizontal e ao topo na orientação vertical.\n   *\n   * @default `true`\n   */\n\n  @Input('p-align-center') set alignCenter(alignCenter: boolean) {\n    this._alignCenter = convertToBoolean(alignCenter);\n  }\n\n  get alignCenter(): boolean {\n    return this._alignCenter;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a orientação de exibição do `po-stepper`.\n   *\n   * > Veja os valores válidos no *enum* [PoStepperOrientation](documentation/po-stepper#stepperOrientation).\n   *\n   * @default `PoStepperOrientation.Horizontal`\n   */\n  @Input('p-orientation') set orientation(value: PoStepperOrientation) {\n    this._orientation = (<any>Object).values(PoStepperOrientation).includes(value)\n      ? value\n      : poStepperOrientationDefault;\n  }\n\n  get orientation(): PoStepperOrientation {\n    return this._orientation;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Controla o passo atual do `po-stepper`.\n   *\n   * > Ao utilizar esta propriedade e também utilizar o componente [**po-step**](/documentation/po-step),\n   * o valor desta propriedade será ignorada permanecendo a definição do [**po-step**](/documentation/po-step).\n   *\n   * @default `1`\n   */\n  @Input('p-step') set step(step: number) {\n    if (step >= 1 && step <= this.steps.length) {\n      this._step = step;\n      this._steps[this._step - 1].status = PoStepperStatus.Active;\n    }\n  }\n\n  get step(): number {\n    return this._step;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Lista dos itens do stepper. Se o valor estiver indefinido ou inválido, será inicializado como um array vazio.\n   *\n   * > Ao utilizar esta propriedade e também utilizar o componente [**po-step**](/documentation/po-step),\n   * o valor desta propriedade será ignorada permanecendo a definição do [**po-step**](/documentation/po-step).\n   */\n  @Input('p-steps') set steps(steps: Array<PoStepperItem>) {\n    this._steps = Array.isArray(steps) ? steps : [];\n    this._steps.forEach(step => {\n      step.status = step.status ?? PoStepperStatus.Default;\n      step.id = step.id ?? uuid();\n    });\n    this.initializeSteps();\n  }\n\n  get steps(): Array<PoStepperItem> {\n    return this._steps;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define se o `po-stepper` será sequencial ou aleatório.\n   *\n   * > Ao utilizar o componente [**po-step**](/documentation/po-step), o valor desta propriedade sempre será verdadeiro.\n   *\n   * @default `true`\n   */\n  @Input('p-sequential') set sequential(sequential: boolean) {\n    this._sequential = convertToBoolean(sequential);\n  }\n\n  get sequential(): boolean {\n    return this._sequential;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   * Permite definir o ícone do step no status concluído.\n   * Esta propriedade permite usar ícones da [Biblioteca de ícones](https://po-ui.io/icons)\n   * ```\n   * <po-stepper p-step-icon-done=\"an an-check-circle\">\n   *    ...\n   * </po-stepper>\n   * ```\n   * Outra opção seria a customização do ícone através do `TemplateRef`, conforme exemplo abaixo:\n   * ```\n   * <po-stepper [p-step-icon-done]=\"doneIcon\">\n   *    ...\n   * </po-stepper>\n   *\n   * <ng-template #doneIcon>\n   *    <i class=\"an an-check-fat\"></i>\n   * </ng-template>\n   * ```\n   * > Deve-se usar `font-size: inherit` para ajustar ícones que não se ajustam automaticamente.\n   *\n   * @default `po-icon-ok`\n   */\n  @Input('p-step-icon-done') iconDone?: string | TemplateRef<void>;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Permite definir o ícone do step no status ativo.\n   * Esta propriedade permite usar ícones da [Biblioteca de ícones](https://po-ui.io/icons).\n   * ```\n   * <po-stepper p-step-icon-active=\"an an-pencil-simple-line\">\n   *    ...\n   * </po-stepper>\n   * ```\n   * Para customizar o ícone através do `TemplateRef`, veja a documentação da propriedade `p-step-icon-done`.\n   *\n   * > Deve-se usar `font-size: inherit` para ajustar ícones que não se ajustam automaticamente.\n   *\n   * @default `po-icon-edit`\n   */\n  @Input('p-step-icon-active') iconActive?: string | TemplateRef<void>;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita o clique nos steps.\n   *\n   * @default `false`\n   */\n  @Input('p-disable-click') disabledClick: boolean = false;\n\n  private initializeSteps(): void {\n    const hasStatus = this._steps.some(step => step.status !== PoStepperStatus.Default);\n\n    if (!hasStatus && this.step === 1) {\n      this.step = 1;\n    }\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostListener,\n  Input,\n  OnChanges,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  inject\n} from '@angular/core';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente responsável por exibir as legendas dos *steps*.\n */\n@Component({\n  selector: 'po-stepper-label',\n  templateUrl: './po-stepper-label.component.html',\n  standalone: false\n})\nexport class PoStepperLabelComponent implements AfterViewInit, OnChanges {\n  private readonly renderer = inject(Renderer2);\n  private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n  // Alinhamento da label.\n  @Input('p-align-center') alignCenter: boolean;\n\n  // Conteúdo da label.\n  @Input('p-content') content: string;\n\n  // Informa o status da etapa.\n  @Input('p-status') status: string;\n\n  // Informa se a orientação do stepper é vertical.\n  @Input('p-vertical-orientation') isVerticalOrientation: boolean;\n\n  @ViewChild('labelElement') labelElement: ElementRef;\n\n  @Input('p-disable-click') disabledClick: boolean = false;\n\n  displayedContent: string;\n  tooltipContent: string;\n\n  private readonly maxLabelLength: number = 100;\n\n  ngAfterViewInit() {\n    this.updateLabel();\n    this.changeDetectorRef.detectChanges();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['content'] || changes['isVerticalOrientation']) {\n      this.updateLabel();\n      this.changeDetectorRef.detectChanges();\n    }\n  }\n\n  @HostListener('mouseover')\n  onMouseOver() {\n    this.updateTooltip();\n    this.renderer.addClass(this.labelElement.nativeElement, 'hovered');\n  }\n\n  @HostListener('mouseout')\n  onMouseOut() {\n    this.renderer.removeClass(this.labelElement.nativeElement, 'hovered');\n  }\n\n  private updateLabel(): void {\n    if (!this.labelElement) return;\n\n    const originalContent = this.content;\n    let displayedContent = originalContent;\n\n    if (this.isVerticalOrientation && originalContent.length > this.maxLabelLength) {\n      displayedContent = originalContent.substring(0, this.maxLabelLength) + '...';\n    }\n\n    this.displayedContent = displayedContent;\n\n    this.updateTooltip();\n  }\n\n  private updateTooltip(): void {\n    if (this.labelElement) {\n      const element = this.labelElement.nativeElement;\n      const isTextOverflowing = element.scrollWidth > element.clientWidth;\n      const isTextTooLong = this.isVerticalOrientation && this.content.length > this.maxLabelLength;\n\n      this.tooltipContent = isTextOverflowing || isTextTooLong ? this.content : null;\n    }\n  }\n}\n","<div\n  #labelElement\n  class=\"po-stepper-label\"\n  [class.po-link]=\"status !== 'disabled' && !this.disabledClick\"\n  [class.po-stepper-disabled-click]=\"this.disabledClick\"\n  [class.po-stepper-label-active]=\"status === 'active' || status === 'error'\"\n  [class.po-stepper-label-done]=\"status === 'done'\"\n  [class.po-stepper-label-vertical]=\"isVerticalOrientation\"\n  [class.po-stepper-label-center]=\"alignCenter\"\n  [p-tooltip]=\"tooltipContent\"\n  aria-hidden=\"true\"\n  (mouseover)=\"onMouseOver()\"\n  (mouseout)=\"onMouseOut()\"\n>\n  {{ displayedContent }}\n</div>\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, TemplateRef } from '@angular/core';\n\nimport { getShortBrowserLanguage, convertToBoolean, isTypeof } from './../../../utils/util';\nimport { poLocaleDefault } from './../../../services/po-language/po-language.constant';\nimport { PoStepperOrientation } from '../enums/po-stepper-orientation.enum';\nimport { PoStepperStatus } from '../enums/po-stepper-status.enum';\n\nconst poStepperStepSizeDefault = 24;\nconst poStepperStepSizeMax = 64;\nconst poStepLiteralsDefault = {\n  en: { label: 'Step' },\n  es: { label: 'Paso' },\n  pt: { label: 'Passo' }\n};\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente que representa um *step* contendo as ligações das laterais (`po-stepper-step-bar`) e a label.\n */\n@Component({\n  selector: 'po-stepper-step',\n  templateUrl: 'po-stepper-step.component.html',\n  standalone: false\n})\nexport class PoStepperStepComponent implements OnChanges {\n  // Alinhamento do *step* e da label.\n  @Input('p-align-center') alignCenter: boolean;\n\n  // Conteúdo que será repassado para o componente `p-circle-content` através da propriedade `p-content`.\n  @Input('p-circle-content') circleContent: any;\n\n  // Informa o status da próxima etapa.\n  @Input('p-next-status') nextStatus;\n\n  // Define a orientação de exibição.\n  @Input('p-orientation') orientation: PoStepperOrientation;\n\n  // Label do *step*.\n  @Input('p-label') set label(value: string) {\n    this._label = isTypeof(value, 'string') ? value : `${this.literals.label} ${this.circleContent}`;\n  }\n\n  get label(): string {\n    return this._label;\n  }\n\n  // Define o estado de exibição.\n  @Input('p-status') set status(value: PoStepperStatus) {\n    this._status = (value as string) ? value : undefined;\n\n    if (this.status === PoStepperStatus.Active) {\n      this.activated.emit();\n    }\n  }\n\n  get status(): PoStepperStatus {\n    return this._status;\n  }\n\n  @Input('p-step-icons') set stepIcons(stepIcons: boolean) {\n    this._stepIcons = convertToBoolean(stepIcons);\n  }\n\n  get stepIcons(): boolean {\n    return this._stepIcons;\n  }\n\n  // Tamanho do `step` em *pixels*, possibilitando um maior destaque.\n  // O valor informado deve ser entre `24` e `64`.\n  @Input('p-step-size') set stepSize(value: number) {\n    this._stepSize =\n      value >= poStepperStepSizeDefault && value <= poStepperStepSizeMax ? value : poStepperStepSizeDefault;\n  }\n\n  get stepSize(): number {\n    return this._stepSize;\n  }\n\n  @Input('p-icon-default') set iconDefault(value: string | TemplateRef<void>) {\n    this._iconDefault = value;\n  }\n\n  get iconDefault(): string | TemplateRef<void> {\n    return this._iconDefault;\n  }\n\n  @Input('p-step-icon-done') set iconDone(value: string | TemplateRef<void>) {\n    this._iconDone = value;\n  }\n\n  get iconDone(): string | TemplateRef<void> {\n    return this._iconDone;\n  }\n\n  @Input('p-step-icon-active') set iconActive(value: string | TemplateRef<void>) {\n    this._iconActive = value;\n  }\n\n  get iconActive(): string | TemplateRef<void> {\n    return this._iconActive;\n  }\n\n  // Informa se a orientação do stepper é vertical.\n  @Input('p-vertical-orientation') isVerticalOrientation: boolean;\n\n  // Evento que será emitido quando o status do *step* estiver ativo (`PoStepperStatus.Active`).\n  @Output('p-activated') activated = new EventEmitter<any>();\n\n  // Evento que será emitido ao clicar no *step*.\n  @Output('p-click') click = new EventEmitter<any>();\n\n  // Evento que será emitido ao focar no *step* e pressionar a tecla *enter*.\n  @Output('p-enter') enter = new EventEmitter<any>();\n\n  @Input('p-disable-click') disabledClick: boolean = false;\n\n  readonly literals = {\n    ...poStepLiteralsDefault[poLocaleDefault],\n    ...poStepLiteralsDefault[getShortBrowserLanguage()]\n  };\n\n  stepSizeOriginal: number;\n  private _label: string;\n  private _status: PoStepperStatus;\n  private _stepIcons?: boolean = false;\n  private _stepSize: number = poStepperStepSizeDefault;\n  private _iconDefault?: string | TemplateRef<void>;\n  private _iconDone?: string | TemplateRef<void>;\n  private _iconActive?: string | TemplateRef<void>;\n\n  get minHeightCircle(): number | null {\n    if (this.stepSize === 24) {\n      return 32;\n    }\n\n    return this.isVerticalOrientation ? Math.max(this.stepSize, 24) + 8 : null;\n  }\n\n  get minWidthCircle(): number | null {\n    if (this.isVerticalOrientation && this.stepSize === 24) {\n      return 32;\n    }\n    return null;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (this.stepSizeOriginal === undefined || changes['stepSize']) {\n      this.stepSizeOriginal = this._stepSize;\n    }\n\n    if (changes['status'] || changes['stepSize']) {\n      this.setDefaultStepSize();\n    }\n  }\n\n  getStatusClass(status: string): string {\n    switch (status) {\n      case PoStepperStatus.Active:\n        return 'po-stepper-step-default';\n      case PoStepperStatus.Disabled:\n        return 'po-stepper-step-disabled';\n      case PoStepperStatus.Done:\n        return 'po-stepper-step-default';\n      case PoStepperStatus.Error:\n        return 'po-stepper-step-error';\n      default:\n        return 'po-stepper-step-default';\n    }\n  }\n\n  onClick(): void {\n    if (this.status !== PoStepperStatus.Disabled && !this.disabledClick) {\n      this.click.emit();\n    }\n  }\n\n  onEnter(): void {\n    if (this.status !== PoStepperStatus.Disabled && !this.disabledClick) {\n      this.enter.emit();\n    }\n  }\n\n  setDefaultStepSize(): void {\n    if (this._stepSize === poStepperStepSizeDefault && this._status === PoStepperStatus.Active) {\n      this._stepSize = poStepperStepSizeDefault + 8;\n    } else if (\n      this.stepSizeOriginal === poStepperStepSizeDefault &&\n      (this._status === PoStepperStatus.Error || this._status === PoStepperStatus.Active)\n    ) {\n      this._stepSize = poStepperStepSizeDefault + 8;\n    } else {\n      this._stepSize = this.stepSizeOriginal;\n    }\n  }\n}\n","<div\n  class=\"po-stepper-step\"\n  [ngClass]=\"getStatusClass(status)\"\n  role=\"tab\"\n  [tabindex]=\"status === 'disabled' || disabledClick ? -1 : 0\"\n  [attr.aria-selected]=\"status === 'active'\"\n  [attr.aria-disabled]=\"status === 'disabled'\"\n  [attr.aria-required]=\"status === 'error'\"\n  [class.po-stepper-disabled-click]=\"disabledClick\"\n  (click)=\"onClick()\"\n  (keydown.enter)=\"onEnter()\"\n>\n  <div class=\"po-stepper-step-container\">\n    <po-stepper-circle\n      [p-align-center]=\"alignCenter\"\n      [p-content]=\"circleContent\"\n      [p-icons]=\"stepIcons\"\n      [p-size]=\"stepSize\"\n      [p-status]=\"status\"\n      [p-icon-default]=\"iconDefault\"\n      [p-step-icon-done]=\"iconDone\"\n      [p-step-icon-active]=\"iconActive\"\n      [class.po-stepper-circle-vertical]=\"isVerticalOrientation\"\n      [class.po-stepper-circle-vertical-center]=\"alignCenter\"\n      [class.po-stepper-circle-horizontal]=\"!isVerticalOrientation\"\n      [style.minWidth.px]=\"minWidthCircle\"\n      [style.minHeight.px]=\"minHeightCircle\"\n    >\n    </po-stepper-circle>\n\n    @if (label) {\n      <po-stepper-label\n        class=\"po-stepper-step-label-position\"\n        [p-align-center]=\"alignCenter\"\n        [p-content]=\"label\"\n        [p-status]=\"status\"\n        [p-vertical-orientation]=\"isVerticalOrientation\"\n        [attr.aria-label]=\"label\"\n        [p-disable-click]=\"disabledClick\"\n      >\n      </po-stepper-label>\n    }\n  </div>\n</div>\n","import { AfterContentInit, ChangeDetectorRef, Component, ContentChildren, QueryList, inject } from '@angular/core';\n\nimport { Observable, of, throwError } from 'rxjs';\nimport { take, tap, catchError, map, mergeMap } from 'rxjs/operators';\n\nimport { PoStepperStatus } from './enums/po-stepper-status.enum';\nimport { PoStepComponent } from './po-step/po-step.component';\nimport { PoStepperBaseComponent } from './po-stepper-base.component';\nimport { PoStepperItem } from './po-stepper-item.interface';\n\n/**\n * @docsExtends PoStepperBaseComponent\n *\n * @example\n *\n * <example name=\"po-stepper-basic\" title=\"PO Stepper Basic\">\n *  <file name=\"sample-po-stepper-basic/sample-po-stepper-basic.component.html\"> </file>\n *  <file name=\"sample-po-stepper-basic/sample-po-stepper-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-stepper-labs\" title=\"PO Stepper Labs\">\n *  <file name=\"sample-po-stepper-labs/sample-po-stepper-labs.component.html\"> </file>\n *  <file name=\"sample-po-stepper-labs/sample-po-stepper-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-stepper-sales\" title=\"PO Stepper - Sales\">\n *  <file name=\"sample-po-stepper-sales/sample-po-stepper-sales.component.html\"> </file>\n *  <file name=\"sample-po-stepper-sales/sample-po-stepper-sales.component.ts\"> </file>\n *  <file name=\"sample-po-stepper-sales/sample-po-stepper-sales.component.css\"> </file>\n * </example>\n *\n * <example name=\"po-stepper-active\" title=\"PO Stepper - Active\">\n *  <file name=\"sample-po-stepper-active/sample-po-stepper-active.component.html\"> </file>\n *  <file name=\"sample-po-stepper-active/sample-po-stepper-active.component.ts\"> </file>\n *  <file name=\"sample-po-stepper-active/sample-po-stepper-active.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-stepper-steps\" title=\"PO Stepper - Steps\">\n *  <file name=\"sample-po-stepper-steps/sample-po-stepper-steps.component.html\"> </file>\n *  <file name=\"sample-po-stepper-steps/sample-po-stepper-steps.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-stepper',\n  templateUrl: './po-stepper.component.html',\n  standalone: false\n})\nexport class PoStepperComponent extends PoStepperBaseComponent implements AfterContentInit {\n  private readonly changeDetector = inject(ChangeDetectorRef);\n\n  @ContentChildren(PoStepComponent) poSteps: QueryList<PoStepComponent>;\n\n  private currentActiveStep: PoStepComponent;\n  private previousActiveStepIndex: number | null = null;\n\n  get currentStepIndex(): number {\n    return this.step - 1;\n  }\n\n  get isVerticalOrientation(): boolean {\n    return this.orientation === 'vertical';\n  }\n\n  get stepList(): QueryList<PoStepComponent> | Array<PoStepperItem> {\n    return (this.usePoSteps && this.poSteps) || this.steps;\n  }\n\n  get stepSizeCircle(): number {\n    return this.calculateDividerPosition();\n  }\n\n  get usePoSteps(): boolean {\n    return !!this.poSteps.length;\n  }\n\n  ngAfterContentInit() {\n    this.activeFirstStep();\n\n    this.poSteps.changes.subscribe(() => {\n      this.controlStepsStatus(this.poSteps.first);\n    });\n  }\n\n  /**\n   * Altera o status do *step* para ativo.\n   *\n   * > Este método é valido apenas para as implementações que utilizam o componente [**po-step**](/documentation/po-step).\n   *\n   * @param {number} index Índice do `po-step` que se deseja ativar.\n   */\n  active(index: number): void {\n    if (!this.usePoSteps) {\n      return;\n    }\n\n    const stepsArray = this.getPoSteps();\n\n    if (index < 0 || index >= stepsArray.length) {\n      return;\n    }\n\n    const step = stepsArray[index];\n    this.changeStep(index, step);\n  }\n\n  /**\n   * Ativa o primeiro *step*.\n   *\n   * > Este método é valido apenas para as implementações que utilizam o componente [**po-step**](/documentation/po-step).\n   */\n  first(): void {\n    if (!this.usePoSteps) {\n      return;\n    }\n\n    const firstStep = this.poSteps.first;\n    const firstStepIndex = 0;\n\n    this.changeStep(firstStepIndex, firstStep);\n  }\n\n  /**\n   * Ativa o próximo *step*.\n   *\n   * > Este método é valido apenas para as implementações que utilizam o componente [**po-step**](/documentation/po-step).\n   */\n  next(): void {\n    if (!this.usePoSteps) {\n      return;\n    }\n\n    const { steps, stepIndex } = this.getStepsAndIndex(this.currentActiveStep);\n    const nextIndex = stepIndex + 1;\n\n    if (nextIndex >= steps.length) {\n      return;\n    }\n\n    const nextStep = steps[nextIndex];\n\n    this.changeStep(nextIndex, nextStep);\n  }\n\n  /**\n   * Ativa o *step* anterior.\n   *\n   * > Este método é valido apenas para as implementações que utilizam o componente [**po-step**](/documentation/po-step).\n   */\n  previous(): void {\n    if (!this.usePoSteps) {\n      return;\n    }\n\n    const { steps, stepIndex } = this.getStepsAndIndex(this.currentActiveStep);\n    const previousIndex = stepIndex - 1;\n\n    if (previousIndex < 0) {\n      return;\n    }\n\n    const previousStep = steps[previousIndex];\n\n    this.changeStep(previousIndex, previousStep);\n  }\n\n  changeStep(stepIndex: number, step?: PoStepComponent): void {\n    if (!step || (this.currentActiveStep && this.currentActiveStep.id === step.id)) {\n      return;\n    }\n\n    this.allowNextStep(stepIndex, step)\n      .pipe(take(1))\n      .subscribe(nextStepAllowed => {\n        if (nextStepAllowed) {\n          const isDifferentStep = !this.currentActiveStep || step.id !== this.currentActiveStep.id;\n\n          if (this.usePoSteps && isDifferentStep) {\n            this.controlStepsStatus(step);\n            this.onChangeStep.emit(step);\n          } else if (!this.usePoSteps && stepIndex !== this.currentStepIndex) {\n            this.onChangeStep.emit(stepIndex + 1);\n          }\n        }\n      });\n  }\n\n  getNextPoSteps(stepIndex: number): PoStepComponent {\n    const poSteps = this.getPoSteps();\n    return poSteps[stepIndex + 1];\n  }\n\n  getNextSteps(stepIndex: number): PoStepperItem {\n    return this.steps[stepIndex + 1];\n  }\n\n  getPreviousPoSteps(stepIndex: number): PoStepComponent {\n    const poSteps = this.getPoSteps();\n    return poSteps[stepIndex - 1];\n  }\n\n  getPreviousSteps(stepIndex: number): PoStepperItem {\n    return this.steps[stepIndex - 1];\n  }\n\n  isDashedBorder(step: PoStepComponent, index: number): boolean {\n    const nextStepPoSteps = this.getNextPoSteps(index);\n    const nextStepSteps = this.getNextSteps(index);\n    return (\n      !(step.status === 'active' && (nextStepPoSteps?.status === 'done' || nextStepSteps?.status === 'done')) &&\n      step.status !== 'done' &&\n      (this.usePoSteps || this.sequential)\n    );\n  }\n\n  isDashedBorderTop(step: PoStepComponent, index: number): boolean {\n    const previousStepPoSteps = this.getPreviousPoSteps(index);\n    const getPreviousSteps = this.getPreviousSteps(index);\n\n    return (\n      ((step.status === 'done' && previousStepPoSteps?.status !== 'done' && previousStepPoSteps?.status !== 'active') ||\n        step.status !== 'done') &&\n      ((step.status === 'done' && getPreviousSteps?.status !== 'done' && getPreviousSteps?.status !== 'active') ||\n        step.status !== 'done') &&\n      (step.status !== 'active' || (step.status === 'active' && getPreviousSteps?.status === 'error')) &&\n      ((step.status === 'default' && getPreviousSteps?.status !== 'done') ||\n        step.status === 'disabled' ||\n        getPreviousSteps?.status !== 'done') &&\n      previousStepPoSteps?.status !== 'done' &&\n      (this.usePoSteps || this.sequential)\n    );\n  }\n\n  onStepActive(step: PoStepComponent) {\n    this.currentActiveStep = step;\n\n    const { stepIndex } = this.getStepsAndIndex(this.currentActiveStep);\n\n    this.poSteps.forEach((stepChild, i) => {\n      if (i < stepIndex) {\n        stepChild.status = PoStepperStatus.Done;\n      }\n    });\n  }\n\n  trackByFn(step: PoStepComponent) {\n    return step.id;\n  }\n\n  private activeFirstStep() {\n    const hasStepActive = this.poSteps.some(poStep => poStep.status === PoStepperStatus.Active);\n\n    if (this.usePoSteps && !hasStepActive) {\n      this.changeStep(0, this.poSteps.first);\n    }\n  }\n\n  private allowNextStep(nextStepIndex: number, step?: PoStepComponent): Observable<boolean> {\n    if (!this.sequential) {\n      return of(true);\n    }\n\n    if (this.hasStepWithCanActiveNextStep() && this.hasDefaultBeforeDone(nextStepIndex)) {\n      return of(false);\n    }\n\n    const isAllowNextStep$ = this.checkAllowNextStep(nextStepIndex);\n\n    return typeof isAllowNextStep$ === 'boolean' ? of(isAllowNextStep$) : isAllowNextStep$;\n  }\n\n  private canActiveNextStep(currentActiveStep = <PoStepComponent>{}, nextStepIndex?: number): Observable<boolean> {\n    const isCurrentStep = this.isCurrentStep(nextStepIndex);\n\n    if (!currentActiveStep.canActiveNextStep) {\n      if (!isCurrentStep) {\n        currentActiveStep.status = PoStepperStatus.Done;\n      }\n      return of(true);\n    }\n\n    const canActiveNextStep$ = this.getCanActiveNextStepObservable(currentActiveStep);\n\n    return of(this.isBeforeStep(nextStepIndex)).pipe(\n      mergeMap(isBefore => {\n        if (isBefore && !isCurrentStep) {\n          return canActiveNextStep$.pipe(\n            tap(isCanActiveNextStep => {\n              currentActiveStep.status = isCanActiveNextStep ? PoStepperStatus.Done : PoStepperStatus.Default;\n            }),\n            map(() => true)\n          );\n        } else {\n          return canActiveNextStep$;\n        }\n      }),\n      tap(isCanActiveNextStep => {\n        if (!this.isBeforeStep(nextStepIndex) && !isCurrentStep) {\n          this.updateStepStatus(currentActiveStep, isCanActiveNextStep);\n        }\n      }),\n      catchError(err => {\n        currentActiveStep.status = PoStepperStatus.Error;\n        return throwError(err);\n      })\n    );\n  }\n\n  private checkAllowNextStep(nextStepIndex: number): Observable<boolean> {\n    return this.usePoSteps\n      ? this.canActiveNextStep(this.currentActiveStep, nextStepIndex)\n      : of(this.steps.slice(this.step, nextStepIndex).every(step => step.status === PoStepperStatus.Done));\n  }\n\n  private getCanActiveNextStepObservable(currentActiveStep: PoStepComponent): Observable<boolean> {\n    const canActiveNextStep = currentActiveStep.canActiveNextStep(currentActiveStep);\n    return canActiveNextStep instanceof Observable ? canActiveNextStep : of(canActiveNextStep);\n  }\n\n  private hasDefaultBeforeDone(nextStepIndex: number): boolean {\n    return this.getPoSteps()\n      .slice(this.step, nextStepIndex)\n      .some(step => step.status === PoStepperStatus.Default);\n  }\n\n  private isCurrentStep(stepIndex: number): boolean {\n    return (\n      this.currentActiveStep && this.getPoSteps().findIndex(step => step.id === this.currentActiveStep.id) === stepIndex\n    );\n  }\n\n  private controlStepsStatus(step: PoStepComponent): void {\n    if (this.usePoSteps) {\n      const { steps, stepIndex: currentStepIndex } = this.getStepsAndIndex(step);\n\n      if (!this.hasStepWithCanActiveNextStep()) {\n        this.updatePreviousStepStatus(steps, currentStepIndex);\n      }\n      this.setStepAsActive(step);\n\n      this.handleNextStep(steps, currentStepIndex);\n\n      this.previousActiveStepIndex = currentStepIndex;\n      this.changeDetector.detectChanges();\n    }\n  }\n\n  private calculateDividerPosition(): number {\n    return this.stepSize >= 24 && this.stepSize <= 64 ? this.stepSize : 24;\n  }\n\n  private getStepperStatusByCanActive(canActiveNextStep: boolean): PoStepperStatus {\n    return canActiveNextStep ? PoStepperStatus.Done : PoStepperStatus.Error;\n  }\n\n  private getStepsAndIndex(step: PoStepComponent = <any>{}): { steps: Array<PoStepComponent>; stepIndex: number } {\n    const steps = this.getPoSteps();\n    const stepIndex = steps.findIndex(poStep => poStep.id === step.id);\n\n    return { steps, stepIndex };\n  }\n\n  private getPoSteps(): Array<PoStepComponent> {\n    return this.poSteps.toArray();\n  }\n\n  private handleNextStep(steps: Array<PoStepComponent>, currentStepIndex: number): void {\n    const nextStep = steps[currentStepIndex + 1];\n    const currentStep = steps[currentStepIndex];\n    const isNextStepDisabled = nextStep && nextStep.status === PoStepperStatus.Disabled;\n\n    if (!this.hasStepWithCanActiveNextStep() && isNextStepDisabled) {\n      this.setNextStepAsDefault(steps[currentStepIndex]);\n      if (this.isBeforeStep(currentStepIndex)) {\n        this.setFinalSteppersAsDisabled(currentStepIndex);\n      }\n    }\n    if (this.hasStepWithCanActiveNextStep() && isNextStepDisabled) {\n      this.setNextStepAsDefault(currentStep);\n      this.setFinalSteppersAsDisabled(currentStepIndex);\n    }\n  }\n\n  private hasStepWithCanActiveNextStep(): boolean {\n    return this.getPoSteps().some(step => step.canActiveNextStep);\n  }\n\n  private isBeforeStep(stepIndex: number): boolean {\n    const currentActiveStepIndex = () => this.getPoSteps().findIndex(step => step.id === this.currentActiveStep.id);\n\n    return !!this.currentActiveStep && currentActiveStepIndex() >= stepIndex;\n  }\n\n  private setFinalSteppersAsDisabled(stepIndex: number): void {\n    this.getPoSteps()\n      .filter((step, index) => step && index >= stepIndex + 2)\n      .forEach(step => (step.status = PoStepperStatus.Disabled));\n  }\n\n  private setStepAsActive(step: PoStepComponent): void {\n    step.status = PoStepperStatus.Active;\n  }\n\n  private setNextStepAsDefault(currentStep: PoStepComponent): void {\n    const { steps, stepIndex } = this.getStepsAndIndex(currentStep);\n    const nextIndex = stepIndex + 1;\n\n    if (nextIndex < this.poSteps.length) {\n      steps[nextIndex].status = PoStepperStatus.Default;\n    }\n  }\n\n  private updatePreviousStepStatus(steps: Array<PoStepComponent>, currentStepIndex: number): void {\n    if (this.previousActiveStepIndex !== null && this.previousActiveStepIndex !== currentStepIndex) {\n      steps[this.previousActiveStepIndex].status = PoStepperStatus.Done;\n    }\n  }\n\n  private updateStepStatus(currentActiveStep: PoStepComponent, isCanActiveNextStep: boolean): void {\n    currentActiveStep.status = this.getStepperStatusByCanActive(isCanActiveNextStep);\n  }\n}\n","<div class=\"po-stepper-{{ orientation }}\">\n  <div role=\"tablist\" class=\"po-stepper-container-{{ orientation }}\">\n    <ng-container *ngFor=\"let step of stepList; let index = index; trackBy: trackByFn\">\n      <div class=\"po-stepper-step-wrapper\">\n        <div\n          *ngIf=\"index > 0\"\n          [class.po-stepper-step-bar-top]=\"alignCenter && isVerticalOrientation\"\n          [class.po-stepper-step-dashed-border-vertical]=\"\n            alignCenter && isVerticalOrientation && isDashedBorderTop(step, index)\n          \"\n          [style.left.px]=\"\n            isVerticalOrientation ? (!stepSizeCircle || stepSizeCircle === 24 ? 16 : stepSizeCircle / 2) : null\n          \"\n        ></div>\n\n        <po-stepper-step\n          [class.po-stepper-step-position-center]=\"alignCenter\"\n          [p-align-center]=\"alignCenter\"\n          [p-circle-content]=\"index + 1\"\n          [p-label]=\"step.label\"\n          [p-orientation]=\"orientation\"\n          [p-status]=\"step.status\"\n          [p-step-icons]=\"stepIcons\"\n          [p-step-size]=\"stepSize\"\n          [p-next-status]=\"poSteps.get(index + 1)?.status\"\n          [p-icon-default]=\"step.iconDefault\"\n          [p-step-icon-active]=\"iconActive\"\n          [p-step-icon-done]=\"iconDone\"\n          [p-vertical-orientation]=\"isVerticalOrientation\"\n          [p-disable-click]=\"disabledClick\"\n          (p-activated)=\"onStepActive(step)\"\n          (p-click)=\"changeStep(index, step)\"\n          (p-enter)=\"changeStep(index, step)\"\n        >\n        </po-stepper-step>\n\n        <div\n          *ngIf=\"index < stepList.length - 1\"\n          [class.po-stepper-step-bar-bottom]=\"isVerticalOrientation\"\n          [class.po-stepper-step-bar-bottom-center]=\"alignCenter && isVerticalOrientation\"\n          [class.po-stepper-step-bar-right]=\"!isVerticalOrientation\"\n          [class.po-stepper-step-bar-center]=\"alignCenter && !isVerticalOrientation\"\n          [class.po-stepper-step-dashed-border]=\"!isVerticalOrientation && isDashedBorder(step, index)\"\n          [class.po-stepper-step-dashed-border-vertical]=\"isVerticalOrientation && isDashedBorder(step, index)\"\n          [style.top.px]=\"!isVerticalOrientation ? (stepSizeCircle === 24 ? 16 : stepSizeCircle / 2) : null\"\n          [style.left.px]=\"\n            isVerticalOrientation ? (!stepSizeCircle || stepSizeCircle === 24 ? 16 : stepSizeCircle / 2) : null\n          \"\n        ></div>\n      </div>\n    </ng-container>\n  </div>\n\n  <div *ngIf=\"usePoSteps\" class=\"po-stepper-content\">\n    <ng-content></ng-content>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoStepComponent } from './po-step/po-step.component';\nimport { PoStepperCircleComponent } from './po-stepper-circle/po-stepper-circle.component';\nimport { PoStepperComponent } from './po-stepper.component';\nimport { PoStepperLabelComponent } from './po-stepper-label/po-stepper-label.component';\nimport { PoStepperStepComponent } from './po-stepper-step/po-stepper-step.component';\nimport { PoIconModule } from '../po-icon/po-icon.module';\nimport { PoTooltipModule } from '../../directives/po-tooltip/index';\n\n/**\n * @description\n * Módulo do componente po-stepper\n */\n@NgModule({\n  imports: [CommonModule, PoIconModule, PoTooltipModule],\n  declarations: [\n    PoStepComponent,\n    PoStepperCircleComponent,\n    PoStepperComponent,\n    PoStepperLabelComponent,\n    PoStepperStepComponent\n  ],\n  exports: [PoStepComponent, PoStepperComponent]\n})\nexport class PoStepperModule {}\n","import { EventEmitter, Input, Output, Directive, output } from '@angular/core';\n\nimport { convertToBoolean, uuid } from '../../../utils/util';\n\n/**\n * @description\n *\n * O componente `po-tab` renderiza uma aba na qual envolve um conteúdo HTML.\n *\n * Com este componente é possível atribuir um rótulo para auxiliar na identificação do conteúdo, ativar para que o mesmo seja exibido,\n * desabilitar para impossibilitar o acesso, bem como ocultar para indisponibilizar a aba.\n *\n * > Para controlar a navegação entre diversas abas, utilizar o componente [`po-tabs`](/documentation/po-tabs) ou [`po-context-tabs`](/documentation/po-context-tabs).\n */\n@Directive()\nexport abstract class PoTabBaseComponent {\n  /** Rótulo da aba. */\n  @Input('p-label') label: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Esconde o botão de fechar a aba.\n   *\n   * > Atenção: Propriedade disponível somente no `po-context-tabs`.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-hide-close', transform: convertToBoolean }) hideClose: boolean = false;\n\n  /** ID da Tab */\n  @Input('id') id: string = uuid();\n\n  /** Método disparado ao clicar na aba. */\n  @Output('p-click') click = new EventEmitter();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao clicar no botão de fechar a aba.\n   *\n   * > Atenção: Propriedade disponível somente no `po-context-tabs`.\n   *\n   */\n  @Output('p-close-tab') closeTab = new EventEmitter();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento emitido quando a aba é ativada.\n   * Emite a instância do componente da aba que foi ativada.\n   */\n  activatedTab = output<PoTabBaseComponent>({ alias: 'p-activated-tab' });\n\n  private _active?: boolean = false;\n  private _disabled?: boolean = false;\n  private _hide?: boolean = false;\n  widthButton;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Ativa a aba exibindo seu conteúdo.\n   *\n   * > Sugere-se utilizar na aba de conteúdo inicial.\n   *\n   * @default `false`\n   */\n  @Input('p-active') set active(active: boolean) {\n    this._active = convertToBoolean(active);\n    this.setDisplayOnActive();\n  }\n\n  get active(): boolean {\n    return this._active;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita a aba.\n   *\n   * @default `false`\n   */\n  @Input('p-disabled') set disabled(disabled: boolean) {\n    this._disabled = convertToBoolean(disabled);\n  }\n\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Oculta a aba.\n   *\n   * > Atenção: Para correto funcionamento do componente, indicamos essa propriedade para esconder e exibir e não *ngIf.\n   *\n   * @default `false`\n   */\n  @Input('p-hide') set hide(hide: boolean) {\n    this._hide = convertToBoolean(hide);\n  }\n\n  get hide(): boolean {\n    return this._hide;\n  }\n\n  protected abstract setDisplayOnActive();\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { PoTabComponent } from './po-tab/po-tab.component';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoTabsService {\n  private readonly onChangesTriggeredSource = new Subject<any>();\n  private readonly onChangesTriggeredActiveSource = new Subject<any>();\n\n  onChangesTriggered$ = this.onChangesTriggeredSource.asObservable();\n  triggerActiveOnChanges$ = this.onChangesTriggeredActiveSource.asObservable();\n\n  triggerOnChanges(tab?: PoTabComponent) {\n    this.onChangesTriggeredSource.next(tab);\n  }\n\n  triggerActiveOnChanges(tab: PoTabComponent) {\n    this.onChangesTriggeredActiveSource.next(tab);\n  }\n}\n","import { AfterContentInit, Component, ElementRef, OnChanges, SimpleChanges, inject } from '@angular/core';\n\nimport { PoTabBaseComponent } from './po-tab-base.component';\nimport { PoTabsService } from '../po-tabs.service';\n\n/**\n * @docsExtends PoTabBaseComponent\n */\n@Component({\n  selector: 'po-tab',\n  templateUrl: './po-tab.component.html',\n  standalone: false\n})\nexport class PoTabComponent extends PoTabBaseComponent implements AfterContentInit, OnChanges {\n  elementRef = inject(ElementRef);\n  private readonly tabsService = inject(PoTabsService);\n\n  // Propriedade interna utilizada no po-context-tabs\n  removed = false;\n  // Propriedade interna utilizada no po-context-tabs\n  showTooltip = false;\n\n  ngAfterContentInit() {\n    this.setDisplayOnActive();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    setTimeout(() => {\n      this.tabsService.triggerOnChanges(this);\n      if (changes?.active?.currentValue) {\n        this.tabsService.triggerActiveOnChanges(this);\n      }\n    }, 100);\n  }\n\n  protected setDisplayOnActive() {\n    this.elementRef.nativeElement.style.display = this.active ? '' : 'none';\n  }\n}\n","<ng-content></ng-content>\n","import { Directive, HostBinding, HostListener, Input } from '@angular/core';\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { getDefaultSizeFn, validateSizeFn } from '../../utils/util';\n\n/**\n * @description\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                            | Descrição                                                                       | Valor Padrão                                      |\n * |----------------------------------------|---------------------------------------------------------------------------------|---------------------------------------------------|\n * | **Default Values**                     |                                                                                 |                                                   |\n * | `--background`                         | Cor de background                                                               | `var(--color-transparent)`                        |\n * | `--background-item-default`            | Cor de background do item padrão                                                | `var(--color-transparent)`                        |\n * | `--border-radius`                      | Contém o valor do raio dos cantos do elemento&nbsp;                             | `var(--border-radius-md)`                         |\n * | `--color`                              | Cor da fonte padrão                                                             | `var(--color-action-default)`                     |\n * | `--color-baseline`                     | Cor para box-shadow                                                             | `var(--color-neutral-light-20)`                   |\n * | `--font-family`                        | Família tipográfica usada                                                       | `var(--font-family-theme)`                        |\n * | `--font-size`                          | Tamanho da fonte                                                                | `var(--font-size-default)`                        |\n * | `--font-weight`                        | Peso da fonte                                                                   | `var(--font-weight-bold)`                         |\n * | `--margin-tabs-container-left`         | Margem lateral esquerda do componente quando usado dentro de um `page-default`  | `var(--spacing-md)`                               |\n * | `--margin-tabs-container-right`        | Margem lateral direita do componente quando usado dentro de um `page-default`   | `-16px`                                           |\n * | `--padding-tabs-header`                | Padding do valor lateral das abas                                               | `var(--spacing-sm)`                               |\n * | `--margin-tabs-first-child`            | Margem lateral da primeira aba                                                  | `var(--spacing-md)`                               |\n * | `--margin-tabs-last-child`             | Margem lateral da ultima aba                                                    | `var(--spacing-md)`                               |\n * | **Disabled**                           |                                                                                 |                                                   |\n * | `--color-disabled`                     | Cor da fonte no estado disabilitado                                             | `var(--color-action-disabled)`                    |\n * | `--background-item-disabled`&nbsp;     | Cor de background do item desabilitado                                          | `var(--color-neutral-light-10)`                   |\n * | **Focused**                            |                                                                                 |                                                   |\n * | `--outline-color-focused`              | Cor do outline do estado de focus                                               | `var(--color-action-focus)`                       |\n * | **Hover**                              |                                                                                 |                                                   |\n * | `--color-hover`                        | Cor principal no estado hover                                                   | `var(--color-brand-01-darkest)`                   |\n * | `--background-item-hover`              | Cor de background no estado de hover                                            | `var(--color-brand-01-lightest)`                  |\n * | **Selected**                           |                                                                                 |                                                   |\n * | `--background-item-selected`           | Cor de background do item selecionado                                           | `var(--color-brand-01-lightest)`                  |\n *\n * <br>\n */\n@Directive()\nexport class PoTabsBaseComponent {\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura dos tabs como 32px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura dos tabs como 44px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  inject\n} from '@angular/core';\n\nimport { convertToBoolean } from '../../../utils/util';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente responsável por manipular os botões de aba.\n */\n@Component({\n  selector: 'po-tab-button',\n  templateUrl: './po-tab-button.component.html',\n  standalone: false\n})\nexport class PoTabButtonComponent implements OnChanges, AfterViewInit {\n  changeDetector = inject(ChangeDetectorRef);\n  private readonly elementRef = inject(ElementRef);\n\n  @ViewChild('tabButtom', { static: true }) tabButtom: ElementRef;\n\n  // Desabilita o botão\n  @Input('p-disabled') disabled: boolean;\n\n  // Identificador do componente\n  @Input('p-id') id: string;\n\n  // Rótulo do botão\n  @Input('p-label') label: string;\n\n  // Função sera emitida quando a tab ficar ativada\n  @Output('p-activated') activated = new EventEmitter();\n\n  // Função sera emitida quando a tab ficar desabilitada ou escondida\n  @Output('p-change-state') changeState = new EventEmitter();\n\n  // Método recebido do usuário para ser disparado quando clicar na aba\n  @Output('p-click') click = new EventEmitter();\n\n  private _active: boolean;\n  private _hide: boolean;\n  widthButton;\n\n  // Ativa o botão\n  @Input('p-active') set active(value: boolean) {\n    this._active = value;\n\n    this.emitActivated();\n  }\n\n  get active() {\n    return this._active;\n  }\n\n  // Oculta o botão\n  @Input('p-hide') set hide(value: boolean) {\n    this._hide = convertToBoolean(value);\n\n    this.setDisplayOnHide();\n  }\n\n  get hide(): boolean {\n    return this._hide;\n  }\n\n  ngAfterViewInit(): void {\n    this.widthButton = this.tabButtom.nativeElement.offsetWidth;\n    this.changeDetector.detectChanges();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ((changes.hide && changes.hide.currentValue) || (changes.disabled && changes.disabled.currentValue)) {\n      this.changeState.emit(this);\n    }\n  }\n\n  onClick() {\n    if (!this.disabled) {\n      this.click.emit(this.id);\n    }\n  }\n\n  private emitActivated() {\n    if (this.active) {\n      this.activated.emit(this);\n    }\n  }\n\n  private setDisplayOnHide() {\n    this.elementRef.nativeElement.style.display = this.hide ? 'none' : '';\n  }\n}\n","<div\n  #tabButtom\n  role=\"tab\"\n  [p-tooltip]=\"widthButton > 239 ? label : ''\"\n  p-tooltip-position=\"top\"\n  class=\"po-tab-button-default\"\n  [id]=\"id\"\n  [ngClass]=\"{ 'po-tab-focusable': !disabled && !hide }\"\n  [attr.tabindex]=\"disabled ? null : 0\"\n  [attr.aria-selected]=\"active\"\n  [class.po-tab-button-active]=\"active\"\n  [class.po-tab-button-disabled]=\"disabled\"\n  (click)=\"onClick()\"\n  (keyup.enter)=\"onClick()\"\n>\n  <span class=\"po-tab-button-label po-text-ellipsis\">\n    {{ label }}\n  </span>\n</div>\n<div [ngClass]=\"{ 'po-tab-border-active': active, 'po-tab-border-disabled': !active }\"></div>\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  Output,\n  ViewChild,\n  inject\n} from '@angular/core';\n\nimport { PoButtonComponent } from '../../po-button/po-button.component';\nimport { PoPopoverComponent } from '../../po-popover/po-popover.component';\nimport { PoTabComponent } from '../po-tab/po-tab.component';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente para agrupamento de componentes `po-tab-button` que os rendereiza em uma um caixa de diálogo\n * no formato de lista.\n */\n@Component({\n  selector: 'po-tab-dropdown',\n  templateUrl: './po-tab-dropdown.component.html',\n  standalone: false\n})\nexport class PoTabDropdownComponent implements AfterViewInit {\n  private readonly elementRef = inject(ElementRef);\n\n  @ViewChild('popover', { static: true }) popover: PoPopoverComponent;\n\n  @ViewChild(PoButtonComponent, { static: true }) button: PoButtonComponent;\n\n  // Rótulo do `po-tab-button`\n  @Input('p-label') label: string;\n\n  // Lista de abas\n  @Input('p-tabs') tabs: Array<PoTabComponent> = [];\n\n  @Input('p-size') size: string;\n\n  // Evento que será emitido ao ativar uma aba\n  @Output('p-activated') activated = new EventEmitter<any>();\n\n  // Evento que será emitido a aba for desabilitada ou ocultada\n  @Output('p-change-state') changeState = new EventEmitter<any>();\n\n  // Evento de click\n  @Output('p-click') click = new EventEmitter<any>();\n\n  isDropdownOpen: boolean = false;\n  dropdownStyles: any = {};\n\n  ngAfterViewInit(): void {\n    this.setDropdownPosition();\n  }\n\n  toggleDropdown() {\n    this.isDropdownOpen = !this.isDropdownOpen;\n    if (this.isDropdownOpen) {\n      this.setDropdownPosition();\n    }\n  }\n\n  closeAndReturnToButtom() {\n    this.closeDropdown();\n    this.button.focus();\n  }\n\n  closeDropdown() {\n    this.isDropdownOpen = false;\n  }\n\n  get buttonElement() {\n    return this.button.buttonElement;\n  }\n\n  setDropdownPosition() {\n    const buttonRect = this.buttonElement.nativeElement.getBoundingClientRect();\n    const tabsContainerRect = this.buttonElement.nativeElement.closest('.po-tabs-container').getBoundingClientRect();\n    const dropdownWidth = 300;\n\n    const isInsidePage = this.elementRef.nativeElement.closest('.po-page-content');\n    this.dropdownStyles = this.calculateDropdownStyles(buttonRect, tabsContainerRect, dropdownWidth, isInsidePage);\n  }\n\n  private calculateDropdownStyles(\n    buttonRect: DOMRect,\n    tabsContainerRect: DOMRect,\n    dropdownWidth: number,\n    isInsidePage: boolean\n  ) {\n    if (isInsidePage) {\n      return {\n        top: `${tabsContainerRect.height + 4 + window.scrollY}px`,\n        maxWidth: `${dropdownWidth}px`,\n        right: `${tabsContainerRect.right - buttonRect.right}px`\n      };\n    }\n\n    let rightPosition = tabsContainerRect.width - buttonRect.right;\n    rightPosition = Math.max(0, rightPosition);\n\n    return {\n      top: `${tabsContainerRect.bottom + 4 + window.scrollY}px`,\n      maxWidth: `${dropdownWidth}px`,\n      right: `${rightPosition}px`\n    };\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n    if (this.isDropdownOpen && !this.elementRef.nativeElement.contains(event.target)) {\n      this.closeDropdown();\n    }\n  }\n}\n","<div class=\"po-tab-dropdown-content po-tab-button-default\">\n  <po-button\n    #button\n    p-kind=\"tertiary\"\n    [p-aria-label]=\"label\"\n    p-icon=\"ICON_ARROW_DOWN\"\n    [p-size]=\"size\"\n    (p-click)=\"toggleDropdown()\"\n  >\n  </po-button>\n</div>\n\n@if (isDropdownOpen) {\n  <div class=\"po-tab-dropdown-container\" [ngStyle]=\"dropdownStyles\">\n    <po-listbox\n      #listbox\n      #poListBoxRef\n      p-type=\"action\"\n      [p-items]=\"tabs\"\n      [p-is-tabs]=\"true\"\n      [p-size]=\"size\"\n      (p-activated-tabs)=\"activated.emit($event)\"\n      (p-change-state-tabs)=\"changeState.emit($event)\"\n      (p-click-tabs)=\"closeDropdown(); click.emit($event)\"\n      (p-close)=\"closeAndReturnToButtom()\"\n    >\n    </po-listbox>\n  </div>\n}\n","import {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  ViewChild,\n  ViewChildren,\n  inject\n} from '@angular/core';\n\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\n\nimport { Subscription, fromEvent } from 'rxjs';\nimport { PoTabDropdownComponent } from './po-tab-dropdown/po-tab-dropdown.component';\nimport { PoTabComponent } from './po-tab/po-tab.component';\nimport { PoTabsBaseComponent } from './po-tabs-base.component';\nimport { PoTabsService } from './po-tabs.service';\n\nexport const poTabsLiterals: object = {\n  en: <any>{\n    moreTabs: 'More',\n    close: 'Close Tab'\n  },\n  es: <any>{\n    moreTabs: 'Más',\n    close: 'Cerrar pestaña'\n  },\n  pt: <any>{\n    moreTabs: 'Mais',\n    close: 'Fechar Aba'\n  },\n  ru: <any>{\n    moreTabs: 'Ещё',\n    close: 'Закрыть вкладку'\n  }\n};\n\nconst poTabsMaxNumberOfTabs = 5;\n\n/**\n * @docsExtends PoTabsBaseComponent\n *\n * @description\n *\n * O componente `po-tabs` é responsável por agrupar [abas](/documentation/po-tab) dispostas numa linha horizontal,\n * ideal para facilitar a organização de conteúdos.\n *\n * O componente exibirá as abas enquanto houver espaço na tela, caso a aba ultrapasse o limite da tela a mesma será agrupada em um dropdown.\n *\n * > As abas que estiverem agrupadas serão dispostas numa cascata suspensa que será exibida ao clicar no botão.\n *\n * É possível realizar a navegação entre as abas através da tecla SETAS(direita e esquerda) do teclado.\n * Caso uma aba estiver desabilitada, não receberá foco de navegação.\n *\n * #### Boas práticas\n *\n * - Evite utilizar um `po-tabs` dentro de outro `po-tabs`;\n * - Evite utilizar uma quantidade excessiva de abas, pois irá gerar um *scroll* muito longo no `dropdown`;\n * - Evite `labels` extensos para as `tabs` pois podem quebrar seu *layout*, use `labels` diretas, curtas e intuitivas.\n *\n *\n * @example\n *\n * <example name=\"po-tabs-basic\" title=\"PO Tabs Basic\">\n *  <file name=\"sample-po-tabs-basic/sample-po-tabs-basic.component.html\"> </file>\n *  <file name=\"sample-po-tabs-basic/sample-po-tabs-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-tabs-labs\" title=\"PO Tabs Labs\">\n *  <file name=\"sample-po-tabs-labs/sample-po-tabs-labs.component.html\"> </file>\n *  <file name=\"sample-po-tabs-labs/sample-po-tabs-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-tabs-travel\" title=\"PO Tabs - Travel\">\n *  <file name=\"sample-po-tabs-travel/sample-po-tabs-travel.component.html\"> </file>\n *  <file name=\"sample-po-tabs-travel/sample-po-tabs-travel.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-tabs-business-conf\" title=\"PO Tabs - Business Conference\">\n *  <file name=\"sample-po-tabs-business-conf/sample-po-tabs-business-conf.component.html\"> </file>\n *  <file name=\"sample-po-tabs-business-conf/sample-po-tabs-business-conf.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-tabs',\n  templateUrl: './po-tabs.component.html',\n  standalone: false\n})\nexport class PoTabsComponent extends PoTabsBaseComponent implements OnInit, AfterViewInit, OnDestroy, AfterContentInit {\n  changeDetector = inject(ChangeDetectorRef);\n  private readonly languageService = inject(PoLanguageService);\n  private readonly tabsService = inject(PoTabsService);\n\n  // Tabs utilizados no ng-content\n  @ContentChildren(PoTabComponent) tabsChildren: QueryList<PoTabComponent>;\n  @ViewChildren('tabButton', { read: ElementRef }) tabButton: QueryList<any>;\n\n  @ViewChild('tabDropdown', { static: true }) tabDropdown: PoTabDropdownComponent;\n  @ViewChild('containerTabs', { read: ElementRef, static: true }) containerTabs: ElementRef;\n\n  maxNumberOfTabs = poTabsMaxNumberOfTabs;\n  literals;\n  tabsDefault = [];\n  tabsDropdown = [];\n  initializeCalculation = true;\n  initializeComponent = false;\n  initCheckChangesTab = false;\n\n  quantityTabsButton;\n  defaultLastTabWidth!: number;\n\n  private previousActiveTab: PoTabComponent;\n  private subscription: Subscription = new Subscription();\n  private subscriptionTabsService: Subscription = new Subscription();\n  private subscriptionTabActive: Subscription = new Subscription();\n\n  constructor() {\n    super();\n\n    const languageService = this.languageService;\n    const language = languageService.getShortLanguage();\n    this.literals = {\n      ...poTabsLiterals[language]\n    };\n  }\n\n  ngOnInit(): void {\n    this.subscriptionTabsService = this.tabsService.onChangesTriggered$.subscribe((tab?) => {\n      this.updateTabsState(false, tab);\n      if (this.initializeComponent) {\n        this.handleKeyboardNavigationTab();\n      }\n    });\n\n    this.subscriptionTabActive = this.tabsService.triggerActiveOnChanges$.subscribe(tab => {\n      const isTabInDropdown = this.tabsDropdown.some(t => t.id === tab.id);\n      if (isTabInDropdown) {\n        this.onTabActiveByDropdown(tab, false);\n      }\n    });\n  }\n\n  ngAfterViewInit(): void {\n    this.calculateTabs(this.initializeCalculation);\n    this.initializeCalculation = false;\n\n    this.updateTabsState();\n    this.changeDetector.detectChanges();\n    this.handleKeyboardNavigationTab();\n    this.initializeComponent = true;\n\n    setTimeout(() => {\n      this.initCheckChangesTab = true;\n    }, 500);\n  }\n\n  ngAfterContentInit() {\n    this.updateTabsState(true);\n  }\n\n  ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n    this.subscriptionTabsService.unsubscribe();\n    this.subscriptionTabActive.unsubscribe();\n  }\n\n  get isShowTabDropdown() {\n    return this.tabsChildren['_results'].slice(this.quantityTabsButton).filter(item => !item.hide).length;\n  }\n\n  // tabs que serão apresentadas na aba \"Mais\"\n  get overflowedTabs() {\n    return this.tabsChildren['_results'].slice(this.quantityTabsButton);\n  }\n\n  get tabs() {\n    return this.tabsChildren['_results'].slice(0, this.quantityTabsButton);\n  }\n\n  get tabsChildrenArray(): Array<PoTabComponent> {\n    return this.tabsChildren.toArray();\n  }\n\n  closeListbox(): void {\n    if (this.tabDropdown && this.tabDropdown.isDropdownOpen) {\n      this.tabDropdown.closeDropdown();\n    }\n  }\n\n  isVisibleTab(tab) {\n    return !tab.hide;\n  }\n\n  onTabActiveByDropdown(tab: PoTabComponent, eventEmitter = true): void {\n    this.changeTabPositionByDropdown(tab);\n    const lastTabWidth =\n      this.defaultLastTabWidth > 0\n        ? this.defaultLastTabWidth\n        : this.tabsChildren.find(e => e === this.tabsChildrenArray[this.quantityTabsButton - 1])?.widthButton;\n\n    this.reorderTabs(tab);\n    tab.widthButton = lastTabWidth;\n    this.tabButton.last.nativeElement.style.width = `${lastTabWidth}px`;\n    this.handleKeyboardNavigationTab();\n\n    if (eventEmitter) {\n      tab.click.emit(tab);\n    }\n  }\n\n  // Função disparada quando alguma tab ficar ativa\n  onTabActive(tab: PoTabComponent) {\n    this.previousActiveTab = this.tabsChildren.find(tabChild => tabChild.active && tabChild.id !== tab.id);\n    tab.activatedTab.emit(tab);\n    this.deactivateTab();\n  }\n\n  // funcao será disparada quando mudar o estado do poTab para desabilitado ou escondido.\n  onTabChangeState(tab: PoTabComponent | any) {\n    if (tab.active) {\n      tab.active = false;\n\n      this.activeDistinctTab();\n\n      this.changeDetector.detectChanges();\n    }\n  }\n\n  reorderTabs(tabToReorder: PoTabComponent, lastTab?): void {\n    const tabsArray = this.tabsChildrenArray;\n    const tabIndex = tabsArray.findIndex(item => item.id === tabToReorder.id);\n    if (tabIndex !== -1) {\n      if (lastTab) {\n        const lastTabShowed = tabsArray.findIndex(item => item.id === lastTab.id);\n        const [tab] = tabsArray.splice(tabIndex, 1);\n        tabsArray.splice(lastTabShowed, 0, tab);\n      } else {\n        const [tab] = tabsArray.splice(tabIndex, 1);\n        tabsArray.splice(this.quantityTabsButton - 1, 0, tab);\n      }\n    }\n    this.tabsChildren.reset(tabsArray);\n    this.changeDetector.detectChanges();\n  }\n\n  // selectiona a aba informada por parametro, caso houver click faz a emição do evento.\n  selectedTab(tab: PoTabComponent | any) {\n    tab.active = true;\n\n    if (tab.click) {\n      tab.click.emit(tab);\n    }\n\n    const isTabInDropdown = this.overflowedTabs.some(t => t.id === tab.id);\n    if (isTabInDropdown) {\n      this.onTabActiveByDropdown(tab);\n    }\n\n    this.changeDetector.detectChanges();\n  }\n\n  trackByFn(_i, tab: PoTabComponent) {\n    return tab.id;\n  }\n\n  // ativa a previousActiveTab ou primeira tab encontrada.\n  private activeDistinctTab() {\n    if (this.previousActiveTab) {\n      this.previousActiveTab.active = true;\n    } else {\n      this.activeFirstTab();\n    }\n  }\n\n  // Ativa a primeira Tab que não estiver desabilitada ou escondida.\n  private activeFirstTab() {\n    this.tabs.some(tabChild => {\n      if (!tabChild.disabled && !tabChild.hide) {\n        tabChild.active = true;\n        return true;\n      }\n    });\n  }\n\n  // Movimenta a tab da visão de tabs para o dropdown, e vice-versa.\n  public changeTabPositionByDropdown(tabToActivate: PoTabComponent, byContextsTabs = false): void {\n    let lastTab;\n    if (byContextsTabs) {\n      const tabsDefault = this.tabButton.filter(tab => !tab.nativeElement.hidden);\n      lastTab = tabsDefault[tabsDefault.length - 1];\n      this.tabsDefault = this.tabsDefault.filter(tab => tab.id !== lastTab.nativeElement.id);\n      lastTab = { id: lastTab.nativeElement.id };\n    } else {\n      lastTab = this.tabsDefault[this.tabsDefault.length - 1];\n      this.tabsDefault = this.tabsDefault.filter(tab => tab.id !== lastTab.id);\n    }\n    this.tabsDefault.push(tabToActivate);\n\n    const _tabsDropdown = this.tabsDropdown.filter(tab => tab.id !== tabToActivate.id);\n    _tabsDropdown.unshift(lastTab);\n    this.tabsDropdown = _tabsDropdown;\n\n    tabToActivate.active = true;\n    this.onTabActive(tabToActivate);\n  }\n\n  // desativa previousActiveTab e dispara a detecção de mudança.\n  private deactivateTab() {\n    if (this.previousActiveTab) {\n      this.previousActiveTab.active = false;\n\n      this.changeDetector.detectChanges();\n    }\n  }\n\n  public updateTabsState(initialState: boolean = false, tab?: PoTabComponent): void {\n    this.defaultLastTabWidth = this.tabButton?.last?.nativeElement?.getBoundingClientRect().width;\n    if (this.defaultLastTabWidth <= 0) {\n      return;\n    }\n\n    this.executeTabsState(initialState);\n  }\n\n  executeTabsState(initialState, idByContextTabs?: string) {\n    let lastTabChildren: PoTabComponent;\n    if (idByContextTabs) {\n      lastTabChildren = this.tabsChildrenArray?.find(tab => tab.id === idByContextTabs);\n    } else {\n      lastTabChildren = this.tabsChildrenArray[this.quantityTabsButton - 1];\n    }\n\n    if (lastTabChildren) {\n      lastTabChildren.widthButton = this.defaultLastTabWidth;\n    }\n\n    if (this.tabsChildren) {\n      const _tabsChildren = [...this.tabsChildrenArray];\n      if (initialState) {\n        this.tabsDefault = _tabsChildren;\n      } else {\n        this.tabsDefault = _tabsChildren.slice(0, this.quantityTabsButton);\n        this.tabsDropdown = _tabsChildren.slice(this.quantityTabsButton);\n      }\n    }\n  }\n\n  calculateTabs(initializeCalculation?: boolean) {\n    if (initializeCalculation) {\n      let sumOfWidth = 150;\n      const screenSize = this.containerTabs.nativeElement.offsetWidth;\n      const listTabButton = [];\n      if (this.tabButton?.length) {\n        this.tabButton.forEach(element => {\n          const width = element.nativeElement.offsetWidth;\n          if (sumOfWidth + width <= screenSize || screenSize < 1) {\n            listTabButton.push(element);\n          }\n\n          sumOfWidth += width;\n        });\n      }\n      this.quantityTabsButton = listTabButton.length;\n    }\n  }\n\n  handleKeyboardNavigationTab(initialIndex = 0) {\n    this.subscription.unsubscribe();\n    this.subscription = new Subscription();\n    if (this.tabButton?.length) {\n      const tabFocusable = this.tabButton\n        .filter((element, index) => element.nativeElement.children[0]?.id === this.tabsChildren['_results'][index]?.id)\n        .map(el => {\n          if (el.nativeElement.children[0].classList.contains('po-tab-focusable')) {\n            return el.nativeElement.children[0];\n          }\n        })\n        .filter(Boolean);\n      if (tabFocusable) {\n        this.initializeTabAccessibilityElements(tabFocusable, initialIndex);\n      }\n    }\n  }\n\n  /**\n   * Função que atribui o número de tabs fora do dropdown.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoTabsComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild('poTab', { static: true }) poTab: PoTabsComponent;\n   *\n   * changeQuantityTabs() {\n   *   this.poTab.setQuantityTabsButton(1); //Número de tabs\n   * }\n   * ```\n   */\n  setQuantityTabsButton(number: number) {\n    this.quantityTabsButton = number;\n  }\n\n  private initializeTabAccessibilityElements(tabRemoveElements, initialIndex) {\n    tabRemoveElements.forEach((tabRemoveElement, index) => {\n      if (index === initialIndex) {\n        this.setTabIndex(tabRemoveElements[initialIndex], 0);\n      } else if (tabRemoveElements.length === initialIndex) {\n        this.setTabIndex(tabRemoveElements[initialIndex - 1], 0);\n      } else {\n        this.setTabIndex(tabRemoveElement, -1);\n      }\n\n      this.subscription.add(\n        fromEvent(tabRemoveElement, 'keydown').subscribe((event: KeyboardEvent) => {\n          this.handleKeyDown(event, tabRemoveElements, index);\n        })\n      );\n\n      if (index !== 0) {\n        this.subscription.add(\n          fromEvent(tabRemoveElements, 'blur').subscribe(() => {\n            this.setTabIndex(tabRemoveElements[index], -1);\n            this.setTabIndex(tabRemoveElements[0], 0);\n          })\n        );\n      }\n    });\n  }\n\n  private setTabIndex(element, tabIndex) {\n    element.setAttribute('tabindex', tabIndex);\n  }\n\n  private handleKeyDown(event: KeyboardEvent, tabRemoveElements, index: number) {\n    const KEY_SPACE = 'Space';\n    const KEY_ARROW_LEFT = 'ArrowLeft';\n    const KEY_ARROW_RIGHT = 'ArrowRight';\n    const KEY_HOME = 'Home';\n    const KEY_END = 'End';\n\n    if (event.code === KEY_SPACE || event.code === KEY_HOME || event.code === KEY_END) {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n\n    if (event.key === KEY_ARROW_LEFT) {\n      this.handleArrowLeft(tabRemoveElements, index);\n    } else if (event.key === KEY_ARROW_RIGHT) {\n      this.handleArrowRight(tabRemoveElements, index);\n    } else if (event.key === KEY_HOME) {\n      this.handleHomeKey(tabRemoveElements, index);\n    } else if (event.key === KEY_END) {\n      this.handleEndKey(tabRemoveElements, index);\n    }\n  }\n\n  private handleArrowLeft(tabRemoveElements, index) {\n    if (index > 0) {\n      this.setTabIndex(tabRemoveElements[index], -1);\n      tabRemoveElements[index - 1].focus();\n      this.setTabIndex(tabRemoveElements[index - 1], 0);\n    } else {\n      this.setTabIndex(tabRemoveElements[index], -1);\n      tabRemoveElements[tabRemoveElements.length - 1].focus();\n      this.setTabIndex(tabRemoveElements[tabRemoveElements.length - 1], 0);\n    }\n  }\n\n  private handleHomeKey(tabRemoveElements, index) {\n    if (index > 0) {\n      this.setTabIndex(tabRemoveElements[index], -1);\n      tabRemoveElements[0].focus();\n      this.setTabIndex(tabRemoveElements[0], 0);\n    }\n  }\n\n  private handleEndKey(tabRemoveElements, index) {\n    if (index < tabRemoveElements.length - 1) {\n      this.setTabIndex(tabRemoveElements[index], -1);\n      tabRemoveElements[tabRemoveElements.length - 1].focus();\n      this.setTabIndex(tabRemoveElements[tabRemoveElements.length - 1], 0);\n    }\n  }\n\n  private handleArrowRight(tabRemoveElements, index) {\n    if (index < tabRemoveElements.length - 1) {\n      this.setTabIndex(tabRemoveElements[index], -1);\n      tabRemoveElements[index + 1].focus();\n      this.setTabIndex(tabRemoveElements[index + 1], 0);\n    } else {\n      this.setTabIndex(tabRemoveElements[index], -1);\n      tabRemoveElements[0].focus();\n      this.setTabIndex(tabRemoveElements[0], 0);\n    }\n  }\n\n  /**\n   * Ativa a aba correspondente ao `id` informado.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoTabsComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild('poTab', { static: true }) poTab: PoTabsComponent;\n   *\n   * focusOnTab() {\n   *   this.poTab.activateTab('meu-id-da-aba');\n   * }\n   * ```\n   *\n   * @param id Identificador único da aba a ser ativada.\n   */\n  public activateTab(id: string) {\n    const tab = this.tabsChildrenArray.find(x => x.id === id);\n\n    if (tab) {\n      this.selectedTab(tab);\n    }\n  }\n}\n","<div class=\"po-tabs-container\">\n  <div #containerTabs class=\"po-tabs-header\">\n    <div class=\"po-tabs-button-wrapper\" role=\"tablist\">\n      @for (tab of tabs; track trackByFn($index, tab)) {\n        <po-tab-button\n          #tabButton\n          class=\"po-tab-button\"\n          [p-active]=\"tab.active\"\n          [p-disabled]=\"tab.disabled\"\n          [p-hide]=\"tab.hide\"\n          [p-id]=\"tab.id\"\n          [hidden]=\"tab.hide\"\n          [attr.disabled]=\"tab.disabled\"\n          [p-label]=\"tab.label\"\n          [id]=\"tab.id\"\n          (keyup.enter)=\"closeListbox()\"\n          (p-activated)=\"onTabActive(tab)\"\n          (p-change-state)=\"onTabChangeState(tab)\"\n          (p-click)=\"selectedTab(tab)\"\n        >\n        </po-tab-button>\n      }\n\n      @if (isShowTabDropdown) {\n        <po-tab-dropdown\n          #tabDropdown\n          class=\"po-tab-dropdown\"\n          [class.po-tab-dropdown-device]=\"!tabsDefault?.length\"\n          [p-label]=\"literals.moreTabs\"\n          [p-size]=\"size\"\n          [p-tabs]=\"overflowedTabs\"\n          (p-change-state)=\"onTabChangeState($event)\"\n          (p-click)=\"onTabActiveByDropdown($event)\"\n        >\n        </po-tab-dropdown>\n      }\n    </div>\n  </div>\n</div>\n<div class=\"po-tabs-content\">\n  <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoPopoverModule } from '../po-popover/po-popover.module';\n\nimport { PoTabButtonComponent } from './po-tab-button/po-tab-button.component';\nimport { PoTabComponent } from './po-tab/po-tab.component';\nimport { PoTabDropdownComponent } from './po-tab-dropdown/po-tab-dropdown.component';\nimport { PoTabsComponent } from './po-tabs.component';\nimport { PoDropdownModule } from '../po-dropdown/po-dropdown.module';\nimport { PoButtonModule } from '../po-button/po-button.module';\nimport { PoListBoxModule } from '../po-listbox/po-listbox.module';\nimport { PoTooltipModule } from '../../directives/po-tooltip/po-tooltip.module';\nimport { PoTabsService } from './po-tabs.service';\n\n/**\n * @description\n * Módulo do componente po-tabs\n */\n@NgModule({\n  imports: [CommonModule, PoPopoverModule, PoDropdownModule, PoTooltipModule, PoButtonModule, PoListBoxModule],\n  declarations: [PoTabButtonComponent, PoTabComponent, PoTabDropdownComponent, PoTabsComponent],\n  exports: [PoTabComponent, PoTabsComponent, PoTabButtonComponent, PoTabDropdownComponent],\n  providers: [PoTabsService]\n})\nexport class PoTabsModule {}\n","import { AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\n\nimport { PoTabButtonComponent } from '../../po-tabs/po-tab-button/po-tab-button.component';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente responsável por manipular os botões de aba.\n */\n@Component({\n  selector: 'po-context-tab-button',\n  templateUrl: './po-context-tab-button.component.html',\n  standalone: false\n})\nexport class PoContextTabButtonComponent extends PoTabButtonComponent implements OnChanges, AfterViewInit {\n  @Input('p-hide-close') hideClose: boolean = false;\n  @Input('p-show-tooltip') showTooltip: boolean = false;\n  @Input('p-literals') literals;\n  @Output('p-close') close: EventEmitter<any> = new EventEmitter<any>();\n\n  // Função sera emitida quando ocorre mudança da visibilidade da tab\n  @Output('p-change-visible') changeVisible = new EventEmitter();\n\n  activeCloseIcon = false;\n  afterViewChecked = false;\n\n  ngAfterViewInit(): void {\n    this.afterViewChecked = true;\n    this.widthButton = this.tabButtom.nativeElement.offsetWidth;\n    this.changeDetector.detectChanges();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.hide?.currentValue || changes.disabled?.currentValue) {\n      this.changeState.emit(this);\n    }\n\n    if (!changes.hide?.firstChange && changes.hide && this.afterViewChecked) {\n      this.changeVisible.emit(this);\n    }\n  }\n\n  closeTab(event) {\n    if (event.code === 'ArrowLeft' || event.code === 'ArrowRight') {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n\n    if ((!event.key || event?.key === 'Enter') && !this.disabled) {\n      event.preventDefault();\n      event.stopPropagation();\n      this.close.emit(this.tabButtom);\n    }\n  }\n\n  onFocusIn() {\n    if (!this.disabled) {\n      this.activeCloseIcon = true;\n    }\n  }\n\n  onFocusOut() {\n    this.activeCloseIcon = false;\n  }\n}\n","<div\n  #tabButtom\n  role=\"tab\"\n  [p-tooltip]=\"widthButton > 239 || showTooltip ? label : ''\"\n  p-tooltip-position=\"top\"\n  class=\"po-tab-button-default\"\n  [id]=\"id\"\n  [ngClass]=\"{ 'po-tab-focusable': !disabled && !hide }\"\n  [attr.tabindex]=\"disabled ? null : 0\"\n  [attr.aria-selected]=\"active\"\n  [class.po-tab-button-active]=\"active\"\n  [class.po-tab-button-disabled]=\"disabled\"\n  (click)=\"onClick()\"\n  (focusin)=\"onFocusIn()\"\n  (focusout)=\"onFocusOut()\"\n  (keyup.enter)=\"onClick()\"\n>\n  <div class=\"po-tab-button-content\">\n    <span [ngClass]=\"!hideClose ? 'po-context-tab-button-label' : 'po-tab-button-label'\" class=\"po-text-ellipsis\">\n      {{ label }}\n    </span>\n    <div\n      class=\"po-tab-button-content-close-icon\"\n      *ngIf=\"!hideClose\"\n      (click)=\"closeTab($event)\"\n      (keydown)=\"closeTab($event)\"\n    >\n      <po-icon\n        [tabIndex]=\"activeCloseIcon ? 0 : -1\"\n        [attr.aria-label]=\"literals.close\"\n        p-icon=\"ICON_CLOSE\"\n        class=\"po-tab-button-icon-close\"\n      ></po-icon>\n    </div>\n  </div>\n</div>\n<div [ngClass]=\"{ 'po-tab-border-active': active, 'po-tab-border-disabled': !active }\"></div>\n","import { Component } from '@angular/core';\nimport { PoTabComponent, PoTabsComponent } from '../po-tabs';\n\n/**\n * @docsExtends PoTabsBaseComponent\n *\n * @description\n *\n * O componente `po-context-tabs` é responsável por agrupar [abas](/documentation/po-tab) dispostas numa linha horizontal,\n * ideal para facilitar a organização de conteúdos.\n *\n * O componente exibirá as abas enquanto houver espaço na tela, caso a aba ultrapasse o limite da tela a mesma será agrupada em um dropdown.\n *\n * > As abas que estiverem agrupadas serão dispostas numa cascata suspensa que será exibida ao clicar no botão.\n *\n * É possível realizar a navegação entre as abas através da tecla SETAS(direita e esquerda) do teclado.\n * Caso uma aba estiver desabilitada, não receberá foco de navegação.\n *\n * #### Boas práticas\n *\n * - Evite utilizar um `po-context-tabs` dentro de outro `po-context-tabs`;\n * - Evite utilizar uma quantidade excessiva de abas, pois irá gerar um *scroll* muito longo no `dropdown`;\n * - Evite `labels` extensos para as `tabs` pois podem quebrar seu *layout*, use `labels` diretas, curtas e intuitivas.\n *\n *\n * @example\n *\n * <example name=\"po-context-tabs-basic\" title=\"PO Context Tabs Basic\">\n *  <file name=\"sample-po-context-tabs-basic/sample-po-context-tabs-basic.component.html\"> </file>\n *  <file name=\"sample-po-context-tabs-basic/sample-po-context-tabs-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-context-tabs-labs\" title=\"PO Context Tabs Labs\">\n *  <file name=\"sample-po-context-tabs-labs/sample-po-context-tabs-labs.component.html\"> </file>\n *  <file name=\"sample-po-context-tabs-labs/sample-po-context-tabs-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-context-tabs-travel\" title=\"PO Context Tabs - Travel\">\n *  <file name=\"sample-po-context-tabs-travel/sample-po-context-tabs-travel.component.html\"> </file>\n *  <file name=\"sample-po-context-tabs-travel/sample-po-context-tabs-travel.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-context-tabs-business-conf\" title=\"PO Context Tabs - Business Conference\">\n *  <file name=\"sample-po-context-tabs-business-conf/sample-po-context-tabs-business-conf.component.html\"> </file>\n *  <file name=\"sample-po-context-tabs-business-conf/sample-po-context-tabs-business-conf.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-context-tabs',\n  templateUrl: './po-context-tabs.component.html',\n  standalone: false\n})\nexport class PoContextTabsComponent extends PoTabsComponent {\n  byQuantityFunction: number;\n  initialTabsWidth = [];\n  private sumOfWidth = 0;\n\n  get isShowTabDropdown() {\n    const tabsShowed = this.tabsChildren['_results'].filter(item => !item.hide);\n    if (tabsShowed.length > this.quantityTabsButton) {\n      return true;\n    }\n    return false;\n  }\n\n  // tabs que serão apresentadas na aba \"Mais\"\n  get overflowedTabs() {\n    return this.tabsChildren['_results'].filter(item => !item.hide)?.slice(this.quantityTabsButton);\n  }\n\n  get tabs() {\n    return this.tabsChildren['_results'];\n  }\n\n  closeTab(tab: PoTabComponent) {\n    tab.closeTab.emit(tab);\n    const tabWidth = tab.widthButton || this.initialTabsWidth.find(initialTab => initialTab.id === tab.id)?.width;\n\n    this.tabsChildren['_results'] = this.tabsChildren['_results'].filter(item => item.id !== tab.id);\n    tab.removed = true;\n    tab.hide = true;\n\n    this.onTabChangeState(tab);\n    tab.elementRef.nativeElement.remove();\n    this.afterRemoveTab(tabWidth);\n  }\n\n  onChangeVisibilityTab(tab: PoTabComponent) {\n    if (this.initialTabsWidth?.length) {\n      const currentInitialTab = this.initialTabsWidth.find(t => t.id === tab.id);\n      let tabWidth = tab.widthButton || currentInitialTab.width;\n      if (!tab.hide) {\n        const currentTabElement = this.tabButton.find(t => t.nativeElement.id === tab.id);\n        tabWidth = currentTabElement.nativeElement.offsetWidth;\n        currentInitialTab.width = tabWidth;\n        tab.widthButton = tabWidth;\n        this.changeDetector.detectChanges();\n        this.calculateTabs(true);\n        this.changeDetector.detectChanges();\n      } else {\n        this.afterRemoveTab(tabWidth);\n      }\n    }\n  }\n\n  private afterRemoveTab(widthTab: number) {\n    this.quantityTabsButton = this.quantityTabsButton - 1;\n    this.changeDetector.detectChanges();\n    const screenSize = this.containerTabs.nativeElement.offsetWidth;\n    this.sumOfWidth = this.sumOfWidth - widthTab;\n\n    for (const t of this.overflowedTabs) {\n      if (!t.hide) {\n        const firstItemDropdown = this.tabButton.find(tb => tb.nativeElement.id === t.id);\n        const width = this.initialTabsWidth.find(i => i.id === firstItemDropdown.nativeElement.id)?.width;\n        if (\n          this.sumOfWidth + width <= screenSize ||\n          screenSize < 1 ||\n          this.quantityTabsButton < this.byQuantityFunction\n        ) {\n          t.showTooltip = false;\n          t.widthButton = undefined;\n          firstItemDropdown.nativeElement.hidden = false;\n          this.sumOfWidth += width;\n          firstItemDropdown.nativeElement.style.width = '';\n          firstItemDropdown.nativeElement.style.display = 'inline-block';\n          this.quantityTabsButton = this.quantityTabsButton + 1;\n\n          if (this.byQuantityFunction > 0 && this.byQuantityFunction === this.quantityTabsButton) {\n            break;\n          }\n        } else {\n          break;\n        }\n      }\n    }\n\n    this.changeDetector.detectChanges();\n    this.handleKeyboardNavigationTab();\n  }\n\n  override calculateTabs(initializeCalculation?: boolean) {\n    if (initializeCalculation) {\n      this.sumOfWidth = 150;\n      const screenSize = this.containerTabs.nativeElement.offsetWidth;\n      const listTabButton = [];\n      const isFirstCalculation = this.initialTabsWidth.length === 0;\n\n      if (this.tabButton?.length) {\n        let initDropdown = false;\n        let index = 0;\n        this.tabButton.forEach(element => {\n          const width = element.nativeElement.offsetWidth;\n          if (isFirstCalculation) {\n            this.initialTabsWidth.push({ id: element.nativeElement.id, width });\n          }\n\n          if (this.byQuantityFunction && index > this.byQuantityFunction - 1) {\n            initDropdown = true;\n          }\n\n          if (\n            !initDropdown &&\n            (this.sumOfWidth + width <= screenSize || screenSize < 1 || index < this.byQuantityFunction)\n          ) {\n            if (!element.nativeElement.hidden) {\n              listTabButton.push(element);\n              this.sumOfWidth += width;\n            }\n          } else {\n            initDropdown = true;\n            element.nativeElement.style.display = 'none';\n            element.nativeElement.hidden = true;\n          }\n\n          if (element.nativeElement.hidden && index <= this.byQuantityFunction - 1) return;\n          index++;\n        });\n      }\n      this.quantityTabsButton = this.byQuantityFunction || listTabButton.length;\n    }\n  }\n\n  override updateTabsState(initialState: boolean = false, tabs?: PoTabComponent): void {\n    if (tabs && this.initCheckChangesTab) {\n      this.checkChangesTabs();\n    }\n\n    const allVisibleItems = this.tabButton?.filter(tab => !tab.nativeElement.hidden);\n    this.defaultLastTabWidth = allVisibleItems?.[allVisibleItems.length - 1]?.nativeElement.offsetWidth;\n    if (!this.defaultLastTabWidth) {\n      return;\n    }\n\n    this.executeTabsState(initialState, allVisibleItems?.[allVisibleItems.length - 1]?.nativeElement.id);\n  }\n\n  private checkChangesTabs() {\n    let index = 0;\n    this.tabButton.forEach((tab, indexTab) => {\n      const currentTab = this.initialTabsWidth.find(t => t.id === tab.nativeElement.id);\n      const quantityTabs = this.byQuantityFunction || this.quantityTabsButton;\n      if (tab.nativeElement.hidden && !this.tabsChildren['_results'][indexTab]?.hide) {\n        tab.nativeElement.style.display = 'inline-block';\n        tab.nativeElement.hidden = false;\n      }\n\n      if (!currentTab) {\n        this.initialTabsWidth.push({ id: tab.nativeElement.id, width: tab.nativeElement.offsetWidth });\n        if (index > quantityTabs) {\n          tab.nativeElement.style.display = 'none';\n          tab.nativeElement.hidden = true;\n        }\n        this.tabsChildren['_results'] = this.tabsChildren['_results'].filter(item => !item.removed);\n      }\n      if (tab.nativeElement.hidden && index <= quantityTabs) return;\n      index++;\n    });\n    this.calculateTabs(true);\n  }\n\n  override onTabActiveByDropdown(tab: PoTabComponent, eventEmitter = true): void {\n    if (tab.disabled) {\n      this.onTabChangeState(tab);\n      return;\n    }\n    const initialWidth = this.initialTabsWidth.find(t => t.id === tab.id);\n    this.changeTabPositionByDropdown(tab, true);\n    const showedTabs = this.tabButton.toArray().filter(tab => !tab.nativeElement.hidden);\n    const lastTab = showedTabs[showedTabs.length - 1];\n    const lastTabWidth = lastTab.nativeElement.offsetWidth;\n\n    lastTab.nativeElement.style.display = 'none';\n    lastTab.nativeElement.hidden = true;\n\n    const currentTabIndex = this.tabButton.toArray().findIndex(t => t.nativeElement.id === tab.id);\n    const currentTab = this.tabButton.toArray()[currentTabIndex].nativeElement;\n    currentTab.hidden = false;\n    currentTab.style.display = 'inline-block';\n\n    this.reorderTabs(tab, lastTab.nativeElement);\n    tab.widthButton = lastTabWidth;\n    if (initialWidth.width > lastTabWidth) {\n      tab.showTooltip = true;\n    }\n    currentTab.style.width = `${lastTabWidth}px`;\n    this.handleKeyboardNavigationTab();\n\n    if (eventEmitter) {\n      tab.click.emit(tab);\n    }\n  }\n\n  /**\n   * Função que atribui o número de tabs fora do dropdown.\n   *\n   * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:\n   *\n   * ```\n   * import { PoContextTabsComponent } from '@po-ui/ng-components';\n   *\n   * ...\n   *\n   * @ViewChild('poContextTabs', { static: true }) poContextTabs: PoContextTabsComponent;\n   *\n   * changeQuantityTabs() {\n   *   this.poContextTabs.setQuantityTabsButton(1); //Número de context-tabs\n   * }\n   * ```\n   */\n  override setQuantityTabsButton(number: number) {\n    let callAfterFunction = false;\n    const currentQuantity = this.byQuantityFunction || this.quantityTabsButton;\n    if (number > currentQuantity) {\n      callAfterFunction = true;\n    }\n\n    this.byQuantityFunction = number;\n    if (!callAfterFunction) {\n      this.quantityTabsButton = number;\n      this.calculateTabs(true);\n    } else {\n      this.afterRemoveTab(0);\n      this.quantityTabsButton = number;\n    }\n  }\n}\n","<div class=\"po-tabs-container\">\n  <div #containerTabs class=\"po-tabs-header\">\n    <div class=\"po-tabs-button-wrapper\" role=\"tablist\">\n      <ng-container *ngFor=\"let tab of tabs; trackBy: trackByFn\">\n        <po-context-tab-button\n          *ngIf=\"!tab.removed\"\n          #tabButton\n          class=\"po-tab-button\"\n          [p-active]=\"tab.active\"\n          [p-disabled]=\"tab.disabled\"\n          [p-show-tooltip]=\"tab.showTooltip\"\n          [p-hide]=\"tab.hide\"\n          [p-id]=\"tab.id\"\n          [hidden]=\"tab.hide\"\n          [p-hide-close]=\"tab.hideClose\"\n          [attr.disabled]=\"tab.disabled\"\n          [p-label]=\"tab.label\"\n          [p-literals]=\"literals\"\n          [id]=\"tab.id\"\n          (keyup.enter)=\"closeListbox()\"\n          (p-activated)=\"onTabActive(tab)\"\n          (p-change-state)=\"onTabChangeState(tab)\"\n          (p-change-visible)=\"onChangeVisibilityTab(tab)\"\n          (p-click)=\"selectedTab(tab)\"\n          (p-close)=\"closeTab(tab)\"\n        >\n        </po-context-tab-button>\n      </ng-container>\n\n      <po-tab-dropdown\n        #tabDropdown\n        *ngIf=\"isShowTabDropdown\"\n        class=\"po-tab-dropdown\"\n        [class.po-tab-dropdown-device]=\"!tabsDefault?.length\"\n        [p-label]=\"literals.moreTabs\"\n        [p-size]=\"size\"\n        [p-tabs]=\"overflowedTabs\"\n        (p-change-state)=\"onTabChangeState($event)\"\n        (p-click)=\"onTabActiveByDropdown($event)\"\n      >\n      </po-tab-dropdown>\n    </div>\n  </div>\n</div>\n<div class=\"po-tabs-content\">\n  <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoPopoverModule } from '../po-popover/po-popover.module';\n\nimport { PoTooltipModule } from '../../directives/po-tooltip/po-tooltip.module';\nimport { PoButtonModule } from '../po-button/po-button.module';\nimport { PoDropdownModule } from '../po-dropdown/po-dropdown.module';\nimport { PoIconModule } from '../po-icon';\nimport { PoListBoxModule } from '../po-listbox/po-listbox.module';\nimport { PoTabsModule } from '../po-tabs';\nimport { PoContextTabButtonComponent } from './po-context-tab-button/po-context-tab-button.component';\nimport { PoContextTabsComponent } from './po-context-tabs.component';\n\n/**\n * @description\n * Módulo do componente po-context-tabs\n */\n@NgModule({\n  imports: [CommonModule, PoIconModule, PoTooltipModule, PoTabsModule],\n  declarations: [PoContextTabsComponent, PoContextTabButtonComponent],\n  exports: [PoContextTabsComponent]\n})\nexport class PoContextTabsModule {}\n","import { Component, Input, TemplateRef } from '@angular/core';\n\nimport { isTypeof } from '../../../utils/util';\n\nimport { PoToolbarAction } from '../po-toolbar-action.interface';\n\nconst poToolbarActionsIconDefault = 'ICON_MORE';\n\n/**\n * @docsPrivate\n *\n * @usedBy PoToolbarComponent\n *\n * @description\n *\n * O componente `po-toolbar-actions` tem como objetivo receber uma lista de ações e um ícone que podem ser personalizados.\n */\n@Component({\n  selector: 'po-toolbar-actions',\n  templateUrl: './po-toolbar-actions.component.html',\n  standalone: false\n})\nexport class PoToolbarActionsComponent {\n  /** Define uma lista de ações. */\n  @Input('p-actions') actions?: Array<PoToolbarAction>;\n\n  private _actionsIcon?: string | TemplateRef<void> = poToolbarActionsIconDefault;\n\n  /** Define o ícone das ações. */\n  @Input('p-actions-icon') set actionsIcon(icon: string | TemplateRef<void>) {\n    this._actionsIcon = isTypeof(icon, 'string') || icon instanceof TemplateRef ? icon : poToolbarActionsIconDefault;\n  }\n\n  get actionsIcon() {\n    return this._actionsIcon;\n  }\n}\n","<div class=\"po-toolbar-actions\" (click)=\"popup.toggle()\">\n  <span #toolbarActions>\n    <po-icon class=\"po-toolbar-icon po-clickable\" [p-icon]=\"actionsIcon\"></po-icon>\n  </span>\n</div>\n\n<po-popup #popup p-size=\"medium\" [p-actions]=\"actions\" [p-target]=\"toolbarActions\"> </po-popup>\n","import { Input, Directive, TemplateRef } from '@angular/core';\n\nimport { convertToInt } from '../../utils/util';\n\nimport { PoToolbarAction } from './po-toolbar-action.interface';\nimport { PoToolbarProfile } from './po-toolbar-profile/po-toolbar-profile.interface';\n\n/**\n * @description\n *\n * O componente `po-toolbar` é um cabeçalho para o título da aplicação e informações de usuário e notificações quando houver necessidade.\n */\n@Directive()\nexport class PoToolbarBaseComponent {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define uma lista de ações que serão exibidas ao clicar no ícone declarado em `p-actions-icon`.\n   */\n  @Input('p-actions') actions?: Array<PoToolbarAction>;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define um [ícone](https://po-ui.io/icons) para a propriedade `p-actions`.\n   *\n   * É possível usar qualquer um dos ícones da [Biblioteca de ícones](https://po-ui.io/icons). conforme exemplo abaixo:\n   * ```\n   * <po-toolbar p-actions-icon=\"an an-user\" [p-actions]=\"actions\"></po-toolbar>\n   * ```\n   * Também é possível utilizar outras fontes de ícones, por exemplo a biblioteca *Font Awesome*, da seguinte forma:\n   * ```\n   * <po-toolbar p-actions-icon=\"far fa-comment-alt\" [p-actions]=\"actions\"></po-toolbar>\n   * ```\n   * Outra opção seria a customização do ícone através do `TemplateRef`, conforme exemplo abaixo:\n   * ```\n   * <po-toolbar [p-actions-icon]=\"template\" [p-actions]=\"actions\"></po-toolbar>\n   *\n   * <ng-template #template>\n   *  <ion-icon style=\"font-size: inherit\" name=\"heart\"></ion-icon>\n   * </ng-template>\n   * ```\n   * > Para o ícone enquadrar corretamente, deve-se utilizar `font-size: inherit` caso o ícone utilizado não aplique-o.\n   *\n   * > Caso não haja ações definidas em `p-actions`, o ícone não será exibido.\n   *\n   * @default `an-dots-three`\n   */\n  @Input('p-actions-icon') actionsIcon?: string | TemplateRef<void>;\n\n  /** Define o objeto que será o cabeçalho da lista de ações com as informações do perfil. */\n  @Input('p-profile') profile?: PoToolbarProfile;\n\n  /** Define uma lista de ações que serão exibidas ao clicar no ícone do perfil. */\n  @Input('p-profile-actions') profileActions?: Array<PoToolbarAction>;\n\n  /** Se falso, oculta o ícone de notificações. */\n  @Input('p-show-notification') showNotification?: boolean = true;\n\n  /** Título do *toolbar* e aplicação. */\n  @Input('p-title') title: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Lista de ações da notificação.\n   */\n  @Input('p-notification-actions') notificationActions?: Array<PoToolbarAction>;\n\n  private _notificationNumber?: number;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Número de notificações.\n   */\n  @Input('p-notification-number') set notificationNumber(value: number) {\n    this._notificationNumber = convertToInt(value, 0);\n  }\n\n  get notificationNumber(): number {\n    return this._notificationNumber;\n  }\n\n  get isShowProfile(): boolean {\n    return !!(this.profile || this.profileActions);\n  }\n}\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, ViewChild, inject } from '@angular/core';\n\nimport { PoControlPositionService } from '../../../services/po-control-position/po-control-position.service';\n\nimport { PoToolbarAction } from '../po-toolbar-action.interface';\n\n/**\n * @docsPrivate\n *\n * @usedBy PoToolbarComponent\n *\n * @description\n *\n * O componente `po-toolbar-notification` tem como objetivo notificar o usuário de novas ações da aplicação que necessitam de atenção,\n * como por exemplo um alerta de nova mensagem.\n *\n * O mesmo também permite que a cada nova notificação seja incrementado e exibido, ou não, este número em uma *tag* ao lado do\n * ícone de notificações.\n */\n@Component({\n  selector: 'po-toolbar-notification',\n  templateUrl: './po-toolbar-notification.component.html',\n  providers: [PoControlPositionService],\n  standalone: false\n})\nexport class PoToolbarNotificationComponent implements AfterViewInit {\n  private readonly cdr = inject(ChangeDetectorRef);\n\n  @ViewChild('notification', { read: ElementRef }) notificationRef: ElementRef;\n\n  @Input('p-notification-actions') notificationActions?: Array<PoToolbarAction>;\n\n  private _notificationNumber?: number = 0;\n\n  @Input('p-notification-number') set notificationNumber(value: number) {\n    this._notificationNumber = Number.isInteger(value) ? value : 0;\n  }\n\n  get notificationNumber() {\n    return this._notificationNumber;\n  }\n\n  ngAfterViewInit() {\n    this.cdr.detectChanges();\n  }\n}\n","<div class=\"po-toolbar-notification po-clickable\" (click)=\"popup.toggle()\">\n  <po-icon #notification p-icon=\"ICON_NOTIFICATION\" class=\"po-toolbar-icon\"></po-icon>\n  @if (notificationNumber) {\n    <div class=\"po-toolbar-notification-badge\">\n      {{ notificationNumber }}\n    </div>\n  }\n</div>\n\n<po-popup #popup p-size=\"medium\" [p-actions]=\"notificationActions\" [p-target]=\"notificationRef\"> </po-popup>\n","import { Component, Input } from '@angular/core';\n\nimport { PoControlPositionService } from '../../../services/po-control-position/po-control-position.service';\n\nimport { PoToolbarProfile } from './po-toolbar-profile.interface';\nimport { PoToolbarAction } from '../po-toolbar-action.interface';\n\n/**\n * @docsPrivate\n *\n * @docsExtends PoToolbarProfileComponent\n *\n * @description\n *\n * Componente `po-toolbar-profile`.\n */\n@Component({\n  selector: 'po-toolbar-profile',\n  templateUrl: './po-toolbar-profile.component.html',\n  providers: [PoControlPositionService],\n  standalone: false\n})\nexport class PoToolbarProfileComponent {\n  /** Objeto que implementa a interface `PoToolbarProfile`. */\n  @Input('p-profile') profile: PoToolbarProfile;\n\n  /** Define uma lista de ações. */\n  @Input('p-profile-actions') profileActions?: Array<PoToolbarAction>;\n\n  get profileAvatar() {\n    return this.profile ? this.profile.avatar : undefined;\n  }\n}\n","<div #profileElement class=\"po-toolbar-profile po-clickable\" (click)=\"popup.toggle()\">\n  <po-avatar p-size=\"xs\" [p-src]=\"profileAvatar\"></po-avatar>\n</div>\n\n<po-popup #popup p-size=\"medium\" [p-actions]=\"profileActions\" [p-target]=\"profileElement\">\n  @if (profile?.title) {\n    <div p-popup-header-template class=\"po-toolbar-profile-item-header\">\n      <po-avatar class=\"po-toolbar-profile-item-avatar\" p-size=\"sm\" [p-src]=\"profileAvatar\"> </po-avatar>\n      <div>\n        <div class=\"po-toolbar-profile-item-header-title\">\n          {{ profile.title }}\n        </div>\n        @if (profile.subtitle) {\n          <div class=\"po-toolbar-profile-item-header-subtitle\">\n            {{ profile.subtitle }}\n          </div>\n        }\n      </div>\n    </div>\n  }\n</po-popup>\n","import { Component, OnInit, ViewContainerRef, inject } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\n\nimport { PoToolbarBaseComponent } from './po-toolbar-base.component';\n\n/**\n * @docsExtends PoToolbarBaseComponent\n *\n * @example\n *\n * <example name=\"po-toolbar-basic\" title=\"PO Toolbar Basic\">\n *  <file name=\"sample-po-toolbar-basic/sample-po-toolbar-basic.component.html\"> </file>\n *  <file name=\"sample-po-toolbar-basic/sample-po-toolbar-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-toolbar-labs\" title=\"PO Toolbar Labs\">\n *  <file name=\"sample-po-toolbar-labs/sample-po-toolbar-labs.component.html\"> </file>\n *  <file name=\"sample-po-toolbar-labs/sample-po-toolbar-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-toolbar-logged\" title=\"PO Toolbar - Logged\">\n *  <file name=\"sample-po-toolbar-logged/sample-po-toolbar-logged.component.html\"> </file>\n *  <file name=\"sample-po-toolbar-logged/sample-po-toolbar-logged.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-toolbar',\n  templateUrl: './po-toolbar.component.html',\n  standalone: false\n})\nexport class PoToolbarComponent extends PoToolbarBaseComponent implements OnInit {\n  private readonly titleService = inject(Title);\n\n  ngOnInit(): void {\n    this.setTitle(this.title);\n  }\n\n  private setTitle(newTitle: string) {\n    this.titleService.setTitle(newTitle);\n  }\n}\n","<div class=\"po-toolbar\">\n  <div class=\"po-toolbar-title\">{{ title }}</div>\n\n  <div class=\"po-toolbar-group-icon\">\n    @if (actions && actions.length) {\n      <po-toolbar-actions [p-actions]=\"actions\" [p-actions-icon]=\"actionsIcon\"> </po-toolbar-actions>\n    }\n\n    @if (showNotification && notificationActions) {\n      <po-toolbar-notification\n        [p-notification-actions]=\"notificationActions\"\n        [p-notification-number]=\"notificationNumber\"\n      >\n      </po-toolbar-notification>\n    }\n\n    @if (isShowProfile) {\n      <po-toolbar-profile [p-profile]=\"profile\" [p-profile-actions]=\"profileActions\"> </po-toolbar-profile>\n    }\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PoAvatarModule } from './../po-avatar/po-avatar.module';\nimport { PoIconModule } from './../po-icon/po-icon.module';\nimport { PoPopupModule } from '../po-popup/po-popup.module';\nimport { PoToolbarActionsComponent } from './po-toolbar-actions/po-toolbar-actions.component';\nimport { PoToolbarComponent } from './po-toolbar.component';\nimport { PoToolbarNotificationComponent } from './po-toolbar-notification/po-toolbar-notification.component';\nimport { PoToolbarProfileComponent } from './po-toolbar-profile/po-toolbar-profile.component';\n\n/**\n * @description\n *\n * Módulo do componente po-toolbar\n *\n */\n@NgModule({\n  imports: [CommonModule, PoAvatarModule, PoPopupModule, PoIconModule],\n  declarations: [\n    PoToolbarActionsComponent,\n    PoToolbarComponent,\n    PoToolbarNotificationComponent,\n    PoToolbarProfileComponent\n  ],\n  exports: [PoToolbarComponent],\n  providers: [],\n  schemas: []\n})\nexport class PoToolbarModule {}\n","import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\n\nimport { convertToBoolean, convertToInt, getDefaultSizeFn, validateSizeFn } from '../../utils/util';\n\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { PoTreeViewItem } from './po-tree-view-item/po-tree-view-item.interface';\n\nconst poTreeViewMaxLevel = 4;\n\n/**\n * @description\n *\n * O componente fornece um modelo de visualização em árvore, possibilitando a visualização das informações de maneira\n * hierárquica, desta forma sendo possível utilizar até 4 níveis.\n *\n * Nele é possível navegar entre os itens através da tecla *tab*, permitindo expandir ou colapsar o item em foco\n * por meio das teclas *enter* e *space*.\n *\n * Além da navegação, o componente possibilita também a seleção dos itens do primeiro ao último nível, tanto de forma parcial como completa.\n *\n * O componente também possui eventos disparados ao marcar/desmarcar e expandir/colapsar os itens.\n */\n@Directive()\nexport class PoTreeViewBaseComponent {\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Ação que será disparada ao colapsar um item.\n   *\n   * > Como parâmetro o componente envia o item colapsado.\n   */\n  @Output('p-collapsed') collapsed = new EventEmitter<PoTreeViewItem>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Ação que será disparada ao expandir um item.\n   *\n   * > Como parâmetro o componente envia o item expandido.\n   */\n  @Output('p-expanded') expanded = new EventEmitter<PoTreeViewItem>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Ação que será disparada ao selecionar um item.\n   *\n   * > Como parâmetro o componente envia o item selecionado.\n   */\n  @Output('p-selected') selected = new EventEmitter<PoTreeViewItem>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Ação que será disparada ao desfazer a seleção de um item.\n   *\n   * > Como parâmetro o componente envia o item que foi desmarcado.\n   */\n  @Output('p-unselected') unselected = new EventEmitter<PoTreeViewItem>();\n\n  private _componentsSize: string = undefined;\n  private _initialComponentsSize: string = undefined;\n  private _items: Array<PoTreeViewItem> = [];\n  private _selectable: boolean = false;\n  private _maxLevel = poTreeViewMaxLevel;\n  private _singleSelect: boolean = false;\n\n  // armazena o value do item selecionado\n  selectedValue: string | number;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos componentes de formulário:\n   * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n   * - `medium`: aplica a medida medium de cada componente.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * Lista de itens do tipo `PoTreeViewItem` que será renderizada pelo componente.\n   */\n  @Input('p-items') inputedItems: Array<PoTreeViewItem>;\n\n  set items(value: Array<PoTreeViewItem>) {\n    this._items = Array.isArray(value) ? this.getItemsByMaxLevel(value) : [];\n  }\n\n  get items() {\n    return this._items;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita uma caixa de seleção para selecionar e/ou desmarcar um item da lista.\n   *\n   * @default false\n   */\n  @Input('p-selectable') set selectable(value: boolean) {\n    this._selectable = convertToBoolean(value);\n  }\n\n  get selectable() {\n    return this._selectable;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita a seleção para item único atráves de po-radio.\n   *\n   * @default false\n   */\n  @Input('p-single-select') set singleSelect(value: boolean) {\n    this._singleSelect = convertToBoolean(value);\n  }\n\n  get singleSelect() {\n    return this._singleSelect;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o máximo de níveis para o tree-view.\n   *\n   * > O valor padrão é 4\n   *\n   * @default 4\n   */\n  @Input('p-max-level') set maxLevel(value: number) {\n    this._maxLevel = convertToInt(value, poTreeViewMaxLevel);\n  }\n\n  get maxLevel() {\n    return this._maxLevel;\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  protected emitExpanded(treeViewItem: PoTreeViewItem) {\n    const event = treeViewItem.expanded ? 'expanded' : 'collapsed';\n\n    this[event].emit({ ...treeViewItem });\n  }\n\n  protected emitSelected(treeViewItem: PoTreeViewItem) {\n    const event = treeViewItem.selected ? 'selected' : 'unselected';\n\n    this.selectedValue = treeViewItem.value;\n\n    // Não emitir subItems quando for singleSelect\n    const { subItems, ...rest } = treeViewItem;\n    const treeViewToEmit = this.singleSelect ? { ...rest } : treeViewItem;\n\n    this.updateItemsOnSelect(treeViewToEmit);\n\n    this[event].emit({ ...treeViewToEmit });\n  }\n\n  private addChildItemInParent(childItem: PoTreeViewItem, parentItem: PoTreeViewItem) {\n    if (!parentItem.subItems) {\n      parentItem.subItems = [];\n    }\n\n    parentItem.subItems.push(childItem);\n  }\n\n  // caso houver parentItem:\n  //  - expande o parentItem caso o filho estiver expandido;\n  //  - adiciona o childItem no parentItem;\n  //  - marca o parentItem caso conter subItems marcodos ou nulos;\n  // Se não conter parentItem, adiciona o childItem no items.\n  private addItem(items: Array<PoTreeViewItem>, childItem: PoTreeViewItem, parentItem?: PoTreeViewItem, isNewItem?) {\n    if (parentItem) {\n      if (isNewItem) {\n        this.expandParentItem(childItem, parentItem);\n      }\n\n      this.addChildItemInParent(childItem, parentItem);\n\n      if (!this.singleSelect) {\n        this.selectItemBySubItems(parentItem);\n      }\n\n      items.push(parentItem);\n    } else {\n      items.push(childItem);\n    }\n  }\n\n  private selectAllItems(items: Array<PoTreeViewItem>, isSelected: boolean) {\n    items.forEach(item => {\n      if (item.subItems) {\n        this.selectAllItems(item.subItems, isSelected);\n      }\n\n      item.selected = item.isSelectable !== false ? isSelected : false;\n    });\n  }\n\n  private selectItemBySubItems(item: PoTreeViewItem) {\n    item.selected = this.everyItemSelected(item.subItems);\n  }\n\n  // retornará:\n  //  - true: se todos os items estiverem marcados;\n  //  - null: se no minimo um item esteja marcado ou nullo (indeterminate)\n  //  - false: caso não corresponda em nenhuma das opções acima, no caso, nenhum marcado ou nulo;\n  private everyItemSelected(items: Array<PoTreeViewItem> = []): boolean | null {\n    const itemsLength = items.length;\n\n    const lengthCheckedItems = items.filter(item => item.selected).length;\n\n    if (itemsLength && itemsLength === lengthCheckedItems) {\n      return true;\n    }\n\n    const hasIndeterminateItems = items.filter(item => item.selected || item.selected === null).length;\n\n    if (hasIndeterminateItems) {\n      return null;\n    }\n\n    return false;\n  }\n\n  // expande o item pai caso o filho estiver expandido.\n  private expandParentItem(childItem: PoTreeViewItem, parentItem: PoTreeViewItem) {\n    if (childItem.expanded) {\n      parentItem.expanded = true;\n    }\n  }\n\n  private getItemsByMaxLevel(\n    items: Array<PoTreeViewItem> = [],\n    level: number = 0,\n    parentItem?: PoTreeViewItem,\n    newItems = []\n  ) {\n    items.forEach(item => {\n      const { subItems, ...currentItem } = item;\n\n      if (level === this.maxLevel) {\n        return;\n      }\n\n      if (Array.isArray(subItems)) {\n        // caso um item pai iniciar selecionado, deve selecionar os filhos.\n        if (currentItem.selected) {\n          this.selectAllItems(subItems, currentItem.selected);\n        }\n\n        this.getItemsByMaxLevel(subItems, ++level, currentItem);\n        --level;\n      }\n\n      if (item.selected) {\n        this.selectedValue = currentItem.value;\n      }\n\n      this.addItem(newItems, currentItem, parentItem, true);\n    });\n\n    return newItems;\n  }\n\n  private getItemsWithParentSelected(items: Array<PoTreeViewItem> = [], parentItem?: PoTreeViewItem, newItems = []) {\n    items.forEach(item => {\n      const { subItems, ...currentItem } = item;\n\n      if (Array.isArray(subItems)) {\n        this.getItemsWithParentSelected(subItems, currentItem);\n      }\n\n      this.addItem(newItems, currentItem, parentItem);\n    });\n\n    return newItems;\n  }\n\n  private updateItemsOnSelect(selectedItem: PoTreeViewItem) {\n    if (selectedItem.subItems && !this.singleSelect) {\n      this.selectAllItems(selectedItem.subItems, selectedItem.selected);\n    }\n\n    this._items = this.getItemsWithParentSelected(this.items);\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialComponentsSize, PoFieldSize);\n    this._componentsSize = size;\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport { PoTreeViewItem } from '../po-tree-view-item/po-tree-view-item.interface';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoTreeViewService {\n  private readonly expandedEvent = new Subject<PoTreeViewItem>();\n  private readonly selectedEvent = new Subject<PoTreeViewItem>();\n\n  emitExpandedEvent(treeViewItem: PoTreeViewItem) {\n    return this.expandedEvent.next(treeViewItem);\n  }\n\n  emitSelectedEvent(treeViewItem: PoTreeViewItem) {\n    return this.selectedEvent.next(treeViewItem);\n  }\n\n  onExpand() {\n    return this.expandedEvent.asObservable();\n  }\n\n  onSelect() {\n    return this.selectedEvent.asObservable();\n  }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { uuid } from '../../../utils/util';\n\nimport { PoTreeViewItem } from '../po-tree-view-item/po-tree-view-item.interface';\n\n@Component({\n  selector: 'po-tree-view-item-header',\n  templateUrl: './po-tree-view-item-header.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PoTreeViewItemHeaderComponent {\n  @ViewChild('inputCheckbox') inputCheckbox;\n\n  @Input('p-components-size') componentsSize: string;\n\n  @Input('p-item') item: PoTreeViewItem;\n\n  @Input('p-selectable') selectable: boolean = false;\n\n  @Input('p-single-select') singleSelect: boolean;\n\n  @Output('p-expanded') expanded = new EventEmitter<MouseEvent>();\n\n  @Output('p-selected') selected = new EventEmitter<any>();\n\n  @Input('p-selected-value') selectedValue: string | number;\n\n  idRadio = `po-radio[${uuid()}]`;\n\n  get hasSubItems() {\n    return !!(this.item.subItems && this.item.subItems.length);\n  }\n}\n","<div class=\"po-tree-view-item-header\">\n  @if (hasSubItems) {\n    <button class=\"po-tree-view-item-header-button\" (click)=\"expanded.emit($event)\">\n      <po-icon\n        p-icon=\"ICON_ARROW_DOWN\"\n        class=\"po-tree-view-item-header-button-icon\"\n        [class.po-tree-view-item-header-button-icon-transform]=\"item.expanded\"\n      >\n      </po-icon>\n    </button>\n  }\n\n  @if (selectable) {\n    @if (singleSelect) {\n      <po-radio\n        class=\"po-tree-view-item-header-checkbox\"\n        [class.po-tree-view-item-header-padding]=\"!hasSubItems\"\n        #inputRadio\n        [name]=\"idRadio\"\n        [(ngModel)]=\"item.selected\"\n        [p-label]=\"item.label\"\n        [p-value]=\"item.value\"\n        [p-checked]=\"item.value === selectedValue\"\n        (p-change-selected)=\"selected.emit(item)\"\n        [p-disabled]=\"item.isSelectable === false\"\n        [p-size]=\"componentsSize\"\n      >\n      </po-radio>\n    } @else {\n      <po-checkbox\n        class=\"po-tree-view-item-header-checkbox\"\n        [class.po-tree-view-item-header-padding]=\"!hasSubItems\"\n        [p-label]=\"item.label\"\n        [(ngModel)]=\"item.selected\"\n        (p-change)=\"selected.emit(item)\"\n        [p-disabled]=\"item.isSelectable === false\"\n        [p-size]=\"componentsSize\"\n      >\n      </po-checkbox>\n    }\n  } @else {\n    <span class=\"po-tree-view-item-header-label\" [class.po-tree-view-item-header-padding]=\"!hasSubItems\">\n      {{ item.label }}\n    </span>\n  }\n</div>\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, Input, inject } from '@angular/core';\n\nimport { PoTreeViewService } from '../services/po-tree-view.service';\nimport { PoTreeViewItem } from './po-tree-view-item.interface';\n\n@Component({\n  selector: 'po-tree-view-item',\n  templateUrl: './po-tree-view-item.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('toggleBody', [\n      transition(':enter', [\n        style({\n          'overflow-y': 'hidden',\n          visibility: 'hidden',\n          opacity: 0,\n          height: '0'\n        }),\n        animate(200, style({ height: '*' })),\n        animate(100, style({ opacity: 1 }))\n      ]),\n      transition(':leave', [\n        style({\n          'overflow-y': 'hidden',\n          visibility: 'visible',\n          opacity: 1,\n          height: '*'\n        }),\n        animate(200, style({ height: 0 })),\n        animate(100, style({ opacity: 0 }))\n      ])\n    ])\n  ],\n  standalone: false\n})\nexport class PoTreeViewItemComponent {\n  private readonly treeViewService = inject(PoTreeViewService);\n\n  @Input('p-components-size') componentsSize: string;\n\n  @Input('p-item') item: PoTreeViewItem;\n\n  @Input('p-selectable') selectable: boolean;\n\n  @Input('p-single-select') singleSelect: boolean;\n\n  @Input('p-selected-value') selectedValue: string | number;\n\n  get hasSubItems() {\n    return !!(this.item.subItems && this.item.subItems.length);\n  }\n\n  onClick(event: MouseEvent) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    this.item.expanded = !this.item.expanded;\n\n    this.treeViewService.emitExpandedEvent({ ...this.item });\n  }\n\n  onSelect(selectedItem: PoTreeViewItem) {\n    this.treeViewService.emitSelectedEvent({ ...selectedItem });\n  }\n\n  trackByFunction(index: number) {\n    return index;\n  }\n}\n","<li class=\"po-tree-view-item\">\n  <po-tree-view-item-header\n    [p-components-size]=\"componentsSize\"\n    [p-item]=\"item\"\n    [p-selectable]=\"selectable\"\n    [p-single-select]=\"singleSelect\"\n    [p-selected-value]=\"selectedValue\"\n    (p-expanded)=\"onClick($event)\"\n    (p-selected)=\"onSelect(item)\"\n  >\n  </po-tree-view-item-header>\n\n  @if (hasSubItems) {\n    <ul class=\"po-tree-view-item-group\">\n      @if (item.expanded) {\n        <div @toggleBody>\n          @for (subItem of item.subItems; track trackByFunction($index)) {\n            <po-tree-view-item\n              [p-components-size]=\"componentsSize\"\n              [p-item]=\"subItem\"\n              [p-selectable]=\"selectable\"\n              [p-single-select]=\"singleSelect\"\n              [p-selected-value]=\"selectedValue\"\n            >\n            </po-tree-view-item>\n          }\n        </div>\n      }\n    </ul>\n  }\n</li>\n","import { ChangeDetectionStrategy, Component, OnChanges, OnInit, SimpleChanges, inject } from '@angular/core';\n\nimport { PoTreeViewBaseComponent } from './po-tree-view-base.component';\nimport { PoTreeViewItem } from './po-tree-view-item/po-tree-view-item.interface';\nimport { PoTreeViewService } from './services/po-tree-view.service';\n\n/**\n * @docsExtends PoTreeViewBaseComponent\n *\n * @example\n *\n * <example name=\"po-tree-view-basic\" title=\"PO Tree View Basic\">\n *  <file name=\"sample-po-tree-view-basic/sample-po-tree-view-basic.component.html\"> </file>\n *  <file name=\"sample-po-tree-view-basic/sample-po-tree-view-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-tree-view-labs\" title=\"PO Tree View Labs\">\n *  <file name=\"sample-po-tree-view-labs/sample-po-tree-view-labs.component.html\"> </file>\n *  <file name=\"sample-po-tree-view-labs/sample-po-tree-view-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-tree-view-folder-structure\" title=\"PO Tree View - Folder Structure\">\n *  <file name=\"sample-po-tree-view-folder-structure/sample-po-tree-view-folder-structure.component.html\"> </file>\n *  <file name=\"sample-po-tree-view-folder-structure/sample-po-tree-view-folder-structure.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-tree-view-supermarket\" title=\"PO Tree View - Supermarket\">\n *  <file name=\"sample-po-tree-view-supermarket/sample-po-tree-view-supermarket.component.html\"> </file>\n *  <file name=\"sample-po-tree-view-supermarket/sample-po-tree-view-supermarket.component.ts\"> </file>\n * </example>\n */\n@Component({\n  selector: 'po-tree-view',\n  templateUrl: './po-tree-view.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [PoTreeViewService],\n  standalone: false\n})\nexport class PoTreeViewComponent extends PoTreeViewBaseComponent implements OnInit, OnChanges {\n  private readonly treeViewService = inject(PoTreeViewService);\n\n  get hasItems() {\n    return !!(this.items && this.items.length);\n  }\n\n  ngOnInit() {\n    this.treeViewService.onExpand().subscribe((treeViewItem: PoTreeViewItem) => {\n      this.emitExpanded(treeViewItem);\n    });\n\n    this.treeViewService.onSelect().subscribe((treeViewItem: PoTreeViewItem) => {\n      this.emitSelected(treeViewItem);\n    });\n  }\n\n  ngOnChanges(changes?: SimpleChanges) {\n    if (changes?.['inputedItems']) {\n      this.items = this.inputedItems;\n    }\n  }\n\n  trackByFunction(index: number) {\n    return index;\n  }\n}\n","@if (hasItems) {\n  <po-container p-no-padding>\n    <ul class=\"po-tree-view\">\n      @for (item of items; track trackByFunction($index)) {\n        <po-tree-view-item\n          [p-components-size]=\"componentsSize\"\n          [p-item]=\"item\"\n          [p-selectable]=\"selectable\"\n          [p-single-select]=\"singleSelect\"\n          [p-selected-value]=\"selectedValue\"\n        >\n        </po-tree-view-item>\n      }\n    </ul>\n  </po-container>\n}\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\n\nimport { PoContainerModule } from '../po-container/po-container.module';\nimport { PoFieldModule } from '../po-field/po-field.module';\nimport { PoIconModule } from '../po-icon/po-icon.module';\n\nimport { PoTreeViewComponent } from './po-tree-view.component';\nimport { PoTreeViewItemComponent } from './po-tree-view-item/po-tree-view-item.component';\nimport { PoTreeViewItemHeaderComponent } from './po-tree-view-item-header/po-tree-view-item-header.component';\n\n/**\n * @description\n *\n * Módulo do componente `po-tree-view`.\n *\n * > Para o correto funcionamento do componente `po-tree-view`, deve ser importado o módulo `BrowserAnimationsModule` no\n * > módulo principal da sua aplicação.\n *\n * Módulo da aplicação:\n * ```\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n * import { PoModule } from '@po-ui/ng-components';\n * ...\n *\n * @NgModule({\n *   imports: [\n *     BrowserModule,\n *     BrowserAnimationsModule,\n *     ...\n *     PoModule\n *   ],\n *   declarations: [\n *     AppComponent,\n *     ...\n *   ],\n *   providers: [],\n *   bootstrap: [AppComponent]\n * })\n * export class AppModule { }\n * ```\n *\n * Em aplicações Standalone, utilize a seguinte configuração para o bootstrap:\n *\n * ```\n * import { bootstrapApplication } from '@angular/platform-browser';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n * import { AppComponent } from './app.component';\n *\n * bootstrapApplication(AppComponent, {\n *   providers: [importProvidersFrom(BrowserAnimationsModule)]\n * }).catch(err => console.error(err));\n * ```\n */\n@NgModule({\n  declarations: [PoTreeViewComponent, PoTreeViewItemComponent, PoTreeViewItemHeaderComponent],\n  exports: [PoTreeViewComponent],\n  imports: [CommonModule, FormsModule, PoContainerModule, PoFieldModule, PoIconModule]\n})\nexport class PoTreeViewModule {}\n","import { PoWidgetLiterals } from './po-widget-literals';\n\nexport const poWidgetLiteralsDefault = {\n  en: <PoWidgetLiterals>{\n    help: 'Help',\n    configuration: 'Settings'\n  },\n  es: <PoWidgetLiterals>{\n    help: 'Ayuda',\n    configuration: 'Ajustes'\n  },\n  pt: <PoWidgetLiterals>{\n    help: 'Ajuda',\n    configuration: 'Configurações'\n  },\n  ru: <PoWidgetLiterals>{\n    help: 'Помощь',\n    configuration: 'Настройки'\n  }\n};\n","import { Directive, EventEmitter, HostBinding, HostListener, input, Input, Output, TemplateRef } from '@angular/core';\n\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\nimport { PoPopupAction } from '../po-popup';\nimport { PoTagType } from '../po-tag';\nimport { PoWidgetAvatar } from './interfaces/po-widget-avatar.interface';\nimport { convertToBoolean, getDefaultSizeFn, isTypeof, uuid, validateSizeFn } from '../../utils/util';\nimport { validateAvatarSize } from '../po-avatar/po-avatar-base.component';\n\nconst PO_WIDGET_TAG_POSITION = ['right', 'top', 'bottom'];\nconst PO_WIDGET_TAG_POSITION_DEFAULT = 'right';\n\n/**\n *\n * @description\n *\n * O componente `po-widget` é recomendado para exibição de *dashboards*, podendo ser utilizado\n * para incluir vários tipos de conteúdo como: gráficos, tabelas, grids e imagens.\n *\n * Além da exibição de conteúdos, este componente possibilita adicionar ações e um link\n * para ajuda, como também possibilita ser utilizado com ou sem sombra.\n *\n * Para controlar sua largura, é possível utilizar o [Grid System](/guides/grid-system) para um maior\n * controle de seu redimensionamento, assim possibilitando o tratamento para diferentes resoluções.\n *\n * #### Boas práticas\n *\n * Utilize um tamanho mínimo de largura de aproximadamente `18.75rem` no componente.\n *\n * #### Acessibilidade tratada no componente\n *\n * Algumas diretrizes de acessibilidade já são tratadas no componente, internamente, e não podem ser alteradas. São elas:\n * - Utiliza medidas relativas, para se adequar às preferências e necessidades de quem for utilizar o sistema.\n * - Desenvolvido com uso de controles padrões HTML, o que permite a identificação na interface por tecnologias assistivas. (WCAG [4.1.2: Name, Role, Value](https://www.w3.org/WAI/WCAG21/Understanding/name-role-value))\n * - O foco é visível e possui uma espessura superior a 2 pixels CSS, não ficando escondido por outros elementos da tela. (WCAG [2.4.12: Focus Appearance](https://www.w3.org/WAI/WCAG22/Understanding/focus-appearance-enhanced))\n * - Quando selecionável, prevê interação por teclado, podendo ser selecionado através da tecla space (WCAG [2.4.1 - Keyboard](https://www.w3.org/WAI/WCAG21/Understanding/keyboard))\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                                  | Descrição                                                        | Valor Padrão                                                                |\n * |----------------------------------------------|------------------------------------------------------------------|-----------------------------------------------------------------------------|\n * | **Default Values**                           |                                                                  |                                                                             |\n * | `--font-family`                              | Família tipográfica usada                                        | `var(--font-family-theme) `                                                 |\n * | `--font-size`                                | Tamanho da fonte                                                 | `var(--font-size-sm)`                                                       |\n * | `--font-weight`                              | Peso da fonte                                                    | `var(--font-weight-bold)`                                                   |\n * | `--font-color`                               | Cor da fonte                                                     | `var(--color-neutral-dark-95)`                                              |\n * | `--padding` - `@deprecated 21.x.x`           | Preenchimento do componente                                      | `1rem`                                                                      |\n * | `--padding-header`                           | Preenchimento do header                                          | `var(--spacing-sm) var(--spacing-sm) var(--spacing-xs) var(--spacing-sm)`   |\n * | `--padding-body`                             | Preenchimento do body                                            | `var(--spacing-xs) var(--spacing-sm) var(--spacing-xs) var(--spacing-sm)`   |\n * | `--padding-avatar`                           | Preenchimento do avatar                                          | `var(--spacing-sm) 0 var(--spacing-xs) var(--spacing-sm)`                   |\n * | `--padding-footer`                           | Preenchimento do footer                                          | `var(--spacing-xs) var(--spacing-sm) var(--spacing-sm) var(--spacing-sm)`   |\n * | `--border-radius`                            | Contém o valor do raio dos cantos do elemento&nbsp;              | `var(--border-radius-md)`                                                   |\n * | `--border-width`                             | Contém o valor da largura dos cantos do elemento&nbsp;           | `var(--border-width-sm)`                                                    |\n * | `--border-color`                             | Cor da borda                                                     | `var(--color-neutral-light-20)`                                             |\n * | `--background`                               | Cor de background                                                | `var(--color-neutral-light-00)`                                             |\n * | `--shadow`                                   | Contém o valor da sombra do elemento                             | `var(--shadow-md)`                                                          |\n * | **Hover**                                    |                                                                  |                                                                             |\n * | `--border-color-hover`                       | Cor da borda no estado hover                                     | `var(--color-action-hover)`                                                 |\n * | **Focused**                                  |                                                                  |                                                                             |\n * | `--color-focused`                            | Cor principal no estado de focus                                 | `var(--color-action-default)`                                               |\n * | `--outline-color-focused` &nbsp;             | Cor do outline do estado de focus                                | `var(--color-action-focus)`                                                 |\n *\n */\n@Directive()\nexport class PoWidgetBaseComponent {\n  private _size?: string = undefined;\n  private _initialSize?: string = undefined;\n\n  /** Descrição da segunda ação. */\n  /**\n   * @optional\n   *\n   * @description\n   * Define o label e exibe a ação secundária no footer do componente.\n   *\n   * > Exibida apenas quando `p-primary-label` estiver definida.\n   */\n  @Input('p-secondary-label') secondaryLabel?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Caso verdadeiro o botão da ação `p-primary-label` ativará o modo `danger`.\n   *\n   * > Incompatível com o tipo **tertiary** da propriedade `p-kind-primary-action`.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-danger-primary-action', transform: convertToBoolean }) dangerPrimaryAction = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Caso verdadeiro o botão da ação `p-secondary-label` ativará o modo `danger`.\n   *\n   * > Incompatível com o tipo **tertiary** da propriedade `p-kind-primary-action`.\n   *\n   * @default `false`\n   */\n  @Input({ alias: 'p-danger-secondary-action', transform: convertToBoolean }) dangerSecondaryAction = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o estilo do botão da ação `p-primary-label`, conforme o enum `PoButtonKind`.\n   *\n   * @default `tertiary`\n   */\n  @Input('p-kind-primary-action') kindPrimaryAction?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o estilo do botão da ação `p-secondary-label`, conforme o enum `PoButtonKind`.\n   *\n   * @default `tertiary`\n   */\n  @Input('p-kind-secondary-action') kindSecondaryAction?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Label da tag exibida no header.\n   *\n   * > Quando a tag atingir uma largura máxima de 15rem (240px), será truncado com reticências.\n   * O conteúdo completo poderá ser visualizado ao passar o mouse sobre a tag, por meio do tooltip.\n   */\n  @Input('p-tag') tagLabel?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tipo da `p-tag`, conforme o enum **PoTagType**.\n   *\n   * Valores válidos:\n   *  - `success`: cor verde utilizada para simbolizar sucesso ou êxito.\n   *  - `warning`: cor amarela que representa aviso ou advertência.\n   *  - `danger`: cor vermelha para erro ou aviso crítico.\n   *  - `info`: cor azul claro que caracteriza conteúdo informativo.\n   *  - `neutral`: cor cinza claro para uso geral.\n   *\n   * @default `success`\n   */\n  @Input('p-tag-type') tagType: PoTagType | string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o ícone exibido ao lado do label da `p-tag`.\n   *\n   * É possível usar qualquer um dos ícones da [Biblioteca de ícones PO UI](https://po-ui.io/icons), conforme exemplo:\n   * ```\n   * <po-widget p-tag-icon=\"an an-user\"></po-widget>\n   * ```\n   * Também é possível utilizar outras fontes de ícones, por exemplo a biblioteca *Font Awesome*, desde que a biblioteca\n   * esteja carregada no projeto:\n   * ```\n   * <po-widget p-tag-icon=\"fa fa-podcast\"></po-widget>\n   * ```\n   *\n   * Outra opção seria a customização do ícone através do `TemplateRef`, conforme exemplo abaixo:\n   * ```\n   * <po-widget [p-tag-icon]=\"template\"></po-widget>\n   *\n   * <ng-template #template>\n   *   <i class=\"fa fa-podcast\" style=\"font-size: inherit;\"></i>\n   * </ng-template>\n   * ```\n   * > Para o ícone enquadrar corretamente, deve-se utilizar `font-size: inherit` caso o ícone utilizado não aplique-o.\n   */\n  @Input('p-tag-icon') tagIcon: string | TemplateRef<void>;\n\n  /**\n   * @optional\n   *\n   * @description\n   * Define o posicionamento da `po-tag` no cabeçalho do Widget:\n   * - `right`: posicionada no canto superior direito do cabeçalho.\n   * - `top`: posicionada à esquerda, acima do título (quando houver).\n   * - `bottom`: posicionada à esquerda, abaixo do título (quando houver).\n   *\n   * @default `right`\n   */\n  tagPosition = input('right', { alias: 'p-tag-position', transform: this.transformTagPosition });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Lista de ações exibidas no header do componente.\n   * As propriedades das ações seguem a interface `PoPopupAction`.\n   */\n  @Input('p-actions') actions: Array<PoPopupAction> = [];\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o tamanho dos botões do componente:\n   * - `small`: altura de 32px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura de 44px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  set size(value: string) {\n    this._initialSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-size')\n  @HostBinding('attr.p-size')\n  get size(): string {\n    return this._size ?? getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o avatar a ser exibido à esquerda no Widget.\n   */\n  avatar = input<PoWidgetAvatar, PoWidgetAvatar>(undefined, {\n    alias: 'p-avatar',\n    transform: this.transformAvatar\n  });\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado quando o usuário clicar no componente.\n   * > Quando este evento está em uso, uma sombra (shadow) é aplicada automaticamente ao componente.\n   */\n  @Output('p-click') click: EventEmitter<MouseEvent | KeyboardEvent> = new EventEmitter<MouseEvent | KeyboardEvent>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado quando a propriedade `p-disabled` for alterada.\n   */\n  @Output('p-on-disabled') onDisabled: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao clicar na ação `p-primary-label`.\n   */\n  @Output('p-primary-action') primaryAction: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento disparado ao clicar na ação `p-secondary-label`.\n   */\n  @Output('p-secondary-action') secondaryAction: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar em **Configurações** incluído no menu de ações do header.\n   */\n  @Output('p-setting') setting: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * @optional\n   *\n   * @description\n   * Evento disparado ao clicar no título definido em `p-title`.\n   */\n  @Output('p-title-action') titleAction: EventEmitter<any> = new EventEmitter<any>();\n\n  containerHeight?: string = 'auto';\n  id = uuid();\n\n  private _background?: string;\n  private _disabled?: boolean = false;\n  private _height?: number;\n  private _help?: string;\n  private _noShadow?: boolean = false;\n  private _primary?: boolean = false;\n  private _primaryLabel?: string;\n  private _title?: string;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define uma imagem de fundo.\n   * > Se a imagem escolhida intervir na legibilidade do texto contido no `p-widget`,\n   * pode-se utilizar a propriedade `p-primary` em conjunto para que os textos fiquem na cor branca.\n   *\n   */\n  @Input('p-background') set background(value: string) {\n    this._background = value && typeof value === 'string' ? value : undefined;\n  }\n\n  get background() {\n    return this._background;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita o componente.\n   *\n   * @default `false`\n   */\n  @Input('p-disabled') set disabled(value: boolean) {\n    this._disabled = convertToBoolean(value);\n\n    this.onDisabled.emit(this.disabled);\n  }\n\n  get disabled() {\n    return this._disabled;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define a altura do componente.\n   * > Caso não seja informado valor, a propriedade irá assumir o tamanho do conteúdo.\n   */\n  @Input('p-height') set height(value: number) {\n    this._height = parseInt(<any>value, 10);\n  }\n\n  get height(): number {\n    return this._height;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Link de ajuda incluído no menu de ações do header.\n   */\n  @Input('p-help') set help(value: string) {\n    this._help = isTypeof(value, 'string') ? value : '';\n  }\n\n  get help(): string {\n    return this._help;\n  }\n\n  /**\n   *\n   * @optional\n   *\n   * @description\n   *\n   * Desabilita a sombra do componente quando o mesmo for clicável.\n   * > A sombra é exibida por padrão apenas quando o evento `p-click` está definido.\n   *\n   * @default `true`\n   */\n  @Input('p-no-shadow') set noShadow(value: boolean) {\n    this._noShadow = <any>value === '' ? true : convertToBoolean(value);\n  }\n\n  get noShadow(): boolean {\n    return this._noShadow;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Opção para que o `po-widget` fique em destaque.\n   *\n   * @default `false`\n   */\n  @Input('p-primary') set primary(value: boolean) {\n    this._primary = <any>value === '' ? true : convertToBoolean(value);\n  }\n\n  get primary(): boolean {\n    return this._primary;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Define o label e exibe a ação primária no footer do componente.\n   *\n   */\n  @Input('p-primary-label') set primaryLabel(value: string) {\n    this._primaryLabel = isTypeof(value, 'string') ? value : '';\n  }\n\n  get primaryLabel(): string {\n    return this._primaryLabel;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Título do componente.\n   *\n   * > Quando o conteúdo exceder o espaço disponível, o texto será truncado com reticências.  O conteúdo completo poderá\n   * ser visualizado ao passar o mouse sobre a tag, por meio do tooltip.\n   */\n  @Input('p-title') set title(value: string) {\n    this._title = isTypeof(value, 'string') ? value : '';\n  }\n\n  get title(): string {\n    return this._title;\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    const size = validateSizeFn(this._initialSize, PoFieldSize);\n    this._size = size;\n  }\n\n  private transformAvatar(value: PoWidgetAvatar | undefined) {\n    if (!value) {\n      return value;\n    }\n\n    const result = { ...value };\n\n    if (result?.size) {\n      result.size = validateAvatarSize(result.size);\n    }\n\n    if (result?.widthCustomTemplate) {\n      const numericValue = Number(result.widthCustomTemplate.replace(/\\D/g, ''));\n      result.widthCustomTemplate = numericValue ? `${Math.min(numericValue, 50)}%` : undefined;\n    }\n\n    return result;\n  }\n\n  private transformTagPosition(value: string): string {\n    return PO_WIDGET_TAG_POSITION.includes(value) ? value : PO_WIDGET_TAG_POSITION_DEFAULT;\n  }\n}\n","export const BORDER_WIDTH_NONE = 0;\nexport const BORDER_WIDTH_SM = 1;\nexport const BORDER_WIDTH_MD = 2;\nexport const BORDER_WIDTH_LG = 4;\nexport const BORDER_WIDTH_XL = 8;\n\nexport const SPACING_NONE = 0;\nexport const SPACING_XXS = 4;\nexport const SPACING_XS = 8;\nexport const SPACING_SM = 16;\nexport const SPACING_MD = 24;\nexport const SPACING_LG = 32;\nexport const SPACING_XL = 40;\nexport const SPACING_2XL = 48;\nexport const SPACING_3XL = 56;\nexport const SPACING_4XL = 64;\n\nexport const TARGET_SIZE_AAA = 44;\nexport const TARGET_SIZE_AA = 32;\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n  ViewChild,\n  computed,\n  inject\n} from '@angular/core';\n\nimport { PoLanguageService, poLocaleDefault, PoThemeA11yEnum, PoThemeService } from '../../services';\nimport { PoButtonComponent } from '../po-button';\nimport { PoPopupComponent } from '../po-popup';\nimport { PoKeyCodeEnum } from './../../enums/po-key-code.enum';\nimport { poWidgetLiteralsDefault } from './literals/po-widget-language';\nimport { PoWidgetBaseComponent } from './po-widget-base.component';\nimport {\n  BORDER_WIDTH_SM,\n  SPACING_MD,\n  SPACING_SM,\n  SPACING_XS,\n  TARGET_SIZE_AA,\n  TARGET_SIZE_AAA\n} from '../../utils/design-tokens';\n\n/**\n * @docsExtends PoWidgetBaseComponent\n *\n * @example\n *\n * <example name=\"po-widget-basic\" title=\"PO Widget Basic\">\n *  <file name=\"sample-po-widget-basic/sample-po-widget-basic.component.html\"> </file>\n *  <file name=\"sample-po-widget-basic/sample-po-widget-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-widget-labs\" title=\"PO Widget Labs\">\n *  <file name=\"sample-po-widget-labs/sample-po-widget-labs.component.html\"> </file>\n *  <file name=\"sample-po-widget-labs/sample-po-widget-labs.component.ts\"> </file>\n *  <file name=\"sample-po-widget-labs/sample-po-widget-labs.component.css\"> </file>\n * </example>\n *\n * <example name=\"po-widget-finance-dashboard\" title=\"PO Widget - Finance dashboard\">\n *  <file name=\"sample-po-widget-finance-dashboard/sample-po-widget-finance-dashboard.component.html\"> </file>\n *  <file name=\"sample-po-widget-finance-dashboard/sample-po-widget-finance-dashboard.component.ts\"> </file>\n *  <file name=\"sample-po-widget-finance-dashboard/sample-po-widget-finance-dashboard.component.css\"> </file>\n * </example>\n *\n * <example name=\"po-widget-card\" title=\"PO Widget - Card\">\n *  <file name=\"sample-po-widget-card/sample-po-widget-card.component.html\"> </file>\n *  <file name=\"sample-po-widget-card/sample-po-widget-card.component.ts\"> </file>\n * </example>\n *\n */\n@Component({\n  selector: 'po-widget',\n  templateUrl: './po-widget.component.html',\n  standalone: false\n})\nexport class PoWidgetComponent extends PoWidgetBaseComponent implements OnInit, OnChanges, AfterViewInit {\n  protected cd = inject(ChangeDetectorRef);\n  protected poTheme = inject(PoThemeService);\n\n  popupTarget: any;\n  literals;\n  hasContent = false;\n  @ViewChild('popup', { static: true }) poPopupComponent: PoPopupComponent;\n  @ViewChild('buttonPopUp') buttonPopUp: PoButtonComponent;\n\n  @ViewChild('wrapperInfo') wrapperInfo!: ElementRef;\n  @ViewChild('wrapperTitle') wrapperTitle!: ElementRef;\n  @ViewChild('tagElement', { read: ElementRef }) tagElement!: ElementRef;\n\n  @ViewChild('contentContainer', { read: ElementRef }) contentContainer!: ElementRef<HTMLElement>;\n\n  get showTitleAction(): boolean {\n    return !!this.titleAction.observers[0];\n  }\n\n  //#region Avatar\n\n  avatarSrc = computed(() => this.avatar()?.src);\n  avatarSize = computed(() => this.avatar()?.size);\n  avatarCustomTemplate = computed(() => this.avatar()?.customTemplate);\n  avatarWidthCustomTemplate = computed(() =>\n    this.avatar()?.widthCustomTemplate && this.avatar()?.customTemplate\n      ? `${this.avatar().widthCustomTemplate}`\n      : undefined\n  );\n\n  //#endregion\n\n  constructor() {\n    const languageService = inject(PoLanguageService);\n\n    super();\n    const language = languageService.getShortLanguage();\n    this.literals = {\n      ...poWidgetLiteralsDefault[poLocaleDefault],\n      ...poWidgetLiteralsDefault[language]\n    };\n  }\n\n  ngAfterViewInit(): void {\n    this.updateContent();\n  }\n\n  get a11Level() {\n    return this.poTheme.getA11yLevel();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['help'] || changes['actions']) {\n      this.checkDefaultActions();\n    }\n    if (changes['title'] || changes['tagLabel']) {\n      this.cd.detectChanges();\n    }\n    this.updateContent();\n    this.setHeight(this.height);\n  }\n\n  ngOnInit() {\n    this.setHeight(this.height);\n    this.checkDefaultActions();\n    this.showTooltip();\n    this.cd.detectChanges();\n  }\n\n  hasTitleHelpOrSetting(): boolean {\n    return !!this.title || !!this.help || !!this.setting.observers[0] || !!this.tagLabel || !!this?.actions.length;\n  }\n\n  onClick(event: MouseEvent) {\n    if (this.click.observed && !this.disabled) {\n      this.click.emit(event);\n    }\n  }\n\n  onKeyDown(event: KeyboardEvent) {\n    if (\n      this.click.observed &&\n      !this.disabled &&\n      (event.which === PoKeyCodeEnum.space || event.keyCode === PoKeyCodeEnum.space)\n    ) {\n      this.click.emit(event);\n\n      event.preventDefault();\n    }\n  }\n\n  openHelp() {\n    if (!this.disabled) {\n      window.open(this.help, '_blank');\n    }\n  }\n\n  runPrimaryAction() {\n    if (!this.disabled) {\n      this.primaryAction.emit();\n    }\n  }\n\n  runSecondaryAction() {\n    if (!this.disabled) {\n      this.secondaryAction.emit();\n    }\n  }\n\n  runTitleAction(event: MouseEvent) {\n    if (!this.disabled) {\n      event.stopPropagation();\n      this.titleAction.emit();\n    }\n  }\n\n  setHeight(height: number) {\n    this.checkDefaultActions();\n\n    if (!height) {\n      this.containerHeight = `auto`;\n      return;\n    }\n\n    const buttonSmall = TARGET_SIZE_AA + SPACING_SM + SPACING_XS; // 56\n    const buttonMedium = TARGET_SIZE_AAA + SPACING_SM + SPACING_XS; // 68\n    const tagPosition = this.tagPosition();\n\n    const actionsHeight = this.a11Level === PoThemeA11yEnum.AA && this.size === 'small' ? buttonSmall : buttonMedium;\n    const actionsButton = this.a11Level === PoThemeA11yEnum.AA && this.size === 'small' ? buttonSmall : buttonMedium;\n\n    const tagInRight = this.tagLabel && tagPosition === 'right';\n    let bodyHeight = height - BORDER_WIDTH_SM * 2;\n\n    if ((this.title || tagInRight) && !this.actions.length) {\n      bodyHeight -= SPACING_MD + SPACING_SM + SPACING_XS; // 48\n    }\n\n    if (this.actions.length) {\n      bodyHeight -= actionsHeight;\n    }\n\n    if (this.primaryLabel || this.secondaryLabel) {\n      bodyHeight -= actionsButton;\n    }\n\n    if (this.tagLabel && (tagPosition === 'top' || tagPosition === 'bottom')) {\n      bodyHeight -= SPACING_MD + SPACING_XS; // 32\n    }\n\n    this.containerHeight = `${bodyHeight}px`;\n  }\n\n  settingOutput() {\n    if (!this.disabled) {\n      this.setting.emit();\n    }\n  }\n\n  togglePopup(targetRef, event) {\n    event.stopPropagation();\n    this.popupTarget = targetRef;\n    this.cd.detectChanges();\n    this.poPopupComponent.toggle();\n  }\n\n  showTooltip() {\n    const sumGap = this.tagLabel ? 12 : 6;\n    return (\n      this.title &&\n      this.wrapperTitle?.nativeElement.offsetWidth + sumGap + (this.tagElement?.nativeElement.offsetWidth || 0) >=\n        this.wrapperInfo?.nativeElement.offsetWidth\n    );\n  }\n\n  closePopUp() {\n    this.buttonPopUp?.focus();\n  }\n\n  private checkDefaultActions() {\n    if (this.setting.observed && !this.actions.some(action => action.$id === 'widget_configuration')) {\n      this.actions = [\n        ...this.actions,\n        {\n          icon: 'ICON_SETTINGS',\n          label: this.literals.configuration,\n          type: 'default',\n          action: this.settingOutput.bind(this),\n          $id: 'widget_configuration'\n        }\n      ];\n    }\n\n    if (this.help && !this.actions.some(action => action.$id === 'widget_help')) {\n      this.actions = [\n        ...this.actions,\n        {\n          icon: 'ICON_HELP',\n          label: this.literals.help,\n          type: 'default',\n          action: this.openHelp.bind(this),\n          $id: 'widget_help'\n        }\n      ];\n    }\n\n    if (!this.help) {\n      this.actions = this.actions.filter(action => action.$id !== 'widget_help');\n    }\n  }\n\n  private updateContent() {\n    const el = this.contentContainer?.nativeElement;\n\n    if (!el) {\n      return;\n    }\n\n    const existContent = Array.from(el.childNodes).some(node => {\n      if (node.nodeType === Node.TEXT_NODE) {\n        return (node.textContent || '').trim().length > 0;\n      }\n\n      if (node.nodeType === Node.ELEMENT_NODE) {\n        return true;\n      }\n\n      return false;\n    });\n\n    this.hasContent = existContent;\n    this.cd.detectChanges();\n  }\n}\n","<div\n  class=\"po-widget-container\"\n  [class.po-clickable]=\"click.observers.length\"\n  [class.po-widget]=\"!primary\"\n  [class.po-widget-disabled]=\"disabled\"\n  [class.po-widget-primary]=\"primary\"\n  [class.po-widget-no-shadow]=\"click.observers.length && noShadow\"\n  [style.background-image]=\"background ? 'url(' + background + ')' : undefined\"\n  (click)=\"onClick($event)\"\n  (keydown)=\"onKeyDown($event)\"\n  [tabindex]=\"disabled || !click.observers.length ? -1 : 0\"\n>\n  @if (avatarCustomTemplate() || avatarSrc()) {\n    <div\n      class=\"po-widget-container__avatar\"\n      [style.width]=\"avatarWidthCustomTemplate()\"\n      [style.height]=\"`${height - 2}px`\"\n      [class.po-widget-container__avatar_pb]=\"primaryLabel\"\n    >\n      @if (!avatarCustomTemplate() && avatarSrc()) {\n        <div class=\"po-widget-container__avatar__po-avatar\">\n          <po-avatar [p-size]=\"avatarSize()\" [p-src]=\"avatarSrc()\" />\n        </div>\n      }\n\n      @if (avatarCustomTemplate()) {\n        <div class=\"po-widget-container__avatar__template\">\n          <ng-template [ngTemplateOutlet]=\"avatarCustomTemplate()\"></ng-template>\n        </div>\n      }\n    </div>\n  }\n\n  <div class=\"po-widget-container__content\">\n    @if (hasTitleHelpOrSetting()) {\n      <div class=\"po-widget-header\">\n        @if (tagLabel && tagPosition() === 'top') {\n          <div class=\"po-widget-header__tag-top\">\n            <ng-template [ngTemplateOutlet]=\"tag\"></ng-template>\n          </div>\n        }\n\n        <div class=\"po-widget-wrapper-info\">\n          <div #wrapperInfo class=\"po-widget-wrapper-tag\">\n            @if (showTitleAction) {\n              <span\n                #wrapperTitle\n                class=\"po-widget-title-action po-widget-text\"\n                (click)=\"runTitleAction($event)\"\n                [p-tooltip]=\"title && showTooltip() ? title : ''\"\n              >\n                {{ title }}\n              </span>\n            } @else {\n              <p #wrapperTitle class=\"po-widget-text\" [p-tooltip]=\"title && showTooltip() ? title : ''\">\n                {{ title }}\n              </p>\n            }\n\n            @if (tagLabel && tagPosition() === 'right') {\n              <ng-template [ngTemplateOutlet]=\"tag\"></ng-template>\n            }\n          </div>\n\n          @if (actions?.length) {\n            <div\n              class=\"po-widget-button-wrapper\"\n              #popupTarget\n              (click)=\"togglePopup(popupTarget, $event)\"\n              (keydown)=\"$event.stopPropagation()\"\n            >\n              <po-button\n                #buttonPopUp\n                [p-size]=\"size\"\n                p-icon=\"ICON_MORE_OUT_VERT_FILL\"\n                [p-disabled]=\"disabled\"\n                p-kind=\"tertiary\"\n              >\n              </po-button>\n            </div>\n          }\n        </div>\n\n        @if (tagLabel && tagPosition() === 'bottom') {\n          <div class=\"po-widget-header__tag-bottom\">\n            <ng-template [ngTemplateOutlet]=\"tag\"></ng-template>\n          </div>\n        }\n      </div>\n    }\n\n    <po-container p-no-border [p-height]=\"containerHeight\">\n      <div #contentContainer class=\"po-widget-body\">\n        <ng-content #refContent></ng-content>\n      </div>\n      @if (!hasContent && height) {\n        <span class=\"po-header-content-fallback\">.</span>\n      }\n    </po-container>\n\n    @if (primaryLabel) {\n      <div class=\"po-widget-footer\">\n        <div class=\"po-widget-actions\" (click)=\"$event.stopPropagation()\" (keydown)=\"$event.stopPropagation()\">\n          <po-button\n            class=\"po-widget-actions\"\n            id=\"primaryAct-{{ id }}\"\n            [p-label]=\"primaryLabel\"\n            (p-click)=\"runPrimaryAction()\"\n            [p-danger]=\"dangerPrimaryAction\"\n            [p-kind]=\"kindPrimaryAction || 'tertiary'\"\n            [p-disabled]=\"disabled\"\n            [p-size]=\"size\"\n          ></po-button>\n        </div>\n\n        @if (secondaryLabel) {\n          <div class=\"po-widget-actions\" (click)=\"$event.stopPropagation()\" (keydown)=\"$event.stopPropagation()\">\n            <po-button\n              class=\"po-widget-actions\"\n              id=\"secondaryAct-{{ id }}\"\n              [p-label]=\"secondaryLabel\"\n              (p-click)=\"runSecondaryAction()\"\n              [p-danger]=\"dangerSecondaryAction\"\n              [p-kind]=\"kindSecondaryAction || 'tertiary'\"\n              [p-disabled]=\"disabled\"\n              [p-size]=\"size\"\n            ></po-button>\n          </div>\n        }\n      </div>\n    }\n  </div>\n</div>\n\n<po-popup #popup [p-actions]=\"actions\" [p-size]=\"size\" [p-target]=\"popupTarget\" (p-close)=\"closePopUp()\"> </po-popup>\n\n<ng-template #tag>\n  <po-tag\n    #tagElement\n    [p-value]=\"tagLabel\"\n    [p-icon]=\"tagIcon\"\n    [p-type]=\"disabled ? null : tagType ? tagType : 'success'\"\n    [p-color]=\"disabled ? '#ECECEE' : null\"\n    [p-text-color]=\"disabled ? '#36364A' : null\"\n    p-force-icon\n  />\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PoAvatarModule } from '../po-avatar';\nimport { PoIconModule } from '../po-icon';\nimport { PoButtonModule } from '../po-button';\nimport { PoContainerModule } from '../po-container/index';\nimport { PoPopupModule } from '../po-popup';\nimport { PoTagModule } from '../po-tag';\nimport { PoTooltipModule } from '../../directives';\n\nimport { PoWidgetComponent } from './po-widget.component';\n\n/**\n * @description\n *\n * Módulo do componente po-widget\n */\n@NgModule({\n  imports: [\n    CommonModule,\n    PoAvatarModule,\n    PoButtonModule,\n    PoContainerModule,\n    PoIconModule,\n    PoPopupModule,\n    PoTagModule,\n    PoTooltipModule\n  ],\n  exports: [PoWidgetComponent],\n  declarations: [PoWidgetComponent]\n})\nexport class PoWidgetModule {}\n","import {\n  computed,\n  Directive,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  input,\n  Input,\n  Output,\n  signal,\n  TemplateRef\n} from '@angular/core';\nimport { PoLanguageService } from '../../services';\nimport { poLocaleDefault } from '../../services/po-language/po-language.constant';\nimport { convertToBoolean, getDefaultSizeFn, isExternalLink, validateSizeFn } from '../../utils/util';\nimport { PoMenuItem } from '../po-menu';\nimport { PoHeaderActionTool } from './interfaces/po-header-action-tool.interface';\nimport { PoHeaderActions } from './interfaces/po-header-actions.interface';\nimport { PoHeaderBrand } from './interfaces/po-header-brand.interface';\nimport { PoHeaderLiterals } from './interfaces/po-header-literals.interface';\nimport { PoHeaderUser } from './interfaces/po-header-user.interface';\nimport { PoFieldSize } from '../../enums/po-field-size.enum';\n\nexport const poNavbarLiteralsDefault = {\n  en: <PoHeaderLiterals>{\n    headerLinks: 'Header links',\n    notifications: 'Notifications'\n  },\n  es: <PoHeaderLiterals>{\n    headerLinks: 'Header links',\n    notifications: 'Notificaciones'\n  },\n  pt: <PoHeaderLiterals>{\n    headerLinks: 'Header links',\n    notifications: 'Notificações'\n  },\n  ru: <PoHeaderLiterals>{\n    headerLinks: 'Header связи',\n    notifications: 'Уведомления'\n  }\n};\n\n/**\n * @description\n *\n * O componente `po-header` é um cabeçalho fixo que permite apresentar itens com ações, divididos em `p-brand`, `p-menu-items`, `p-actions-tools` e `p-header-user`.\n *\n * - `p-brand`: Possibilita a inclusão de uma imagem e o titulo do header.\n * - `p-menu-items`: Possibilita a inclusão de uma lista de itens com ações ou links.\n * - `p-actions-tools`: Possibilita a inclusão de até 3 botões com ações.\n * - `p-header-user`: Possibilita a inclusão de uma imagem representando a marca e avatar.\n *\n * O componente `po-header` pode ser usado de duas formas:\n *\n * Com `po-menu` definido pelo usuário:\n * ```\n * ...\n * <po-header\n *   [p-brand]=\"brand\"\n *   [p-menu-items]=\"items\"\n *   [p-actions-tools]=\"actions\"\n *   [p-header-user]=\"user\"\n * ></po-header>\n *\n * <div class=\"po-wrapper\">\n *   <po-menu [p-menus]=\"itemsMenu\">\n *   </po-menu>\n *\n *   <po-page-default>\n *       <router-outlet></router-outlet>\n *   </po-page-default>\n * </div>\n * ...\n * ```\n *\n * Passando os itens diretamente para o `po-header` pela propriedade `p-menus`:\n * ```\n * ...\n * <po-header\n *   [p-brand]=\"brand\"\n *   [p-menu-items]=\"items\"\n *   [p-actions-tools]=\"actions\"\n *   [p-header-user]=\"user\"\n *   [p-menus]=\"itensMenu\"\n * ></po-header>\n *\n * <div class=\"po-wrapper\">\n *   <po-page-default>\n *       <router-outlet></router-outlet>\n *   </po-page-default>\n * </div>\n * ...\n * ```\n *\n * #### Tokens customizáveis\n *\n * É possível alterar o estilo do componente usando os seguintes tokens (CSS):\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade                              | Descrição                                                  | Valor Padrão                                      |\n * |------------------------------------------|------------------------------------------------------------|---------------------------------------------------|\n * | `--font-family`                          | Família tipográfica usada                                  | `var(--font-family-theme)`                        |\n * | `--font-weight`                          | Peso da fonte                                              | `var(--font-weight-bold)`                         |\n * | `--text-color`                           | Cor do texto                                               | `var(--color-neutral-dark-70)`                    |                                                                        | ---                                             |\n * | `--outline-color-focused`                | Cor do outline dos itens de sub-menu e customer            | `var(--color-neutral-dark-95)`                    |                                                                        | ---                                             |\n * | `--object-fit-brand`                     | Valor do object-fit da imagem do logo                      | `contain`                                         |                                                                        | ---                                             |\n * | `--object-fit-customer`                  | Valor do object-fit da imagem do logo na seção customer    | `contain`                                         |                                                                        | ---                                             |\n * | `--object-fit-customer-user`             | Valor do object-fit da imagem do avatar                    | `cover`                                           |                                                                        | ---                                             |\n * | **Header**                               |                                                            |                                                   |\n * | `--background-color`                     | Cor de background do header                                | `var(--color-neutral-light-05)`                   |\n * | `--border-radius-bottom-left`            | Valor do radius do lado esquerdo do header                 | `var(--border-radius-md)`                         |\n * | `--border-radius-bottom-right`           | Valor do radius do lado direito do header                  | `var(--border-radius-md)`                         |\n * | `--base shadow`                          | Cor da sombra do header                                    | `0 1px 8px rgba(0, 0, 0, 0.1)`                  |\n * | `--stroke-color`                         | Cor da borda inferior do header                            | `var(--color-brand-01-base)`                      |\n * | **Sub-menu**                             |                                                            |                                                   |\n * | `--border-radius`                        | Valor do radius dos itens do sub-menu                      | `var(--border-radius-md);`                        |\n * | `--text-color-submenu`                   | Cor do texto dos itens do sub-menu                         | `var(--color-brand-01-base)`                      |\n * | `--icon-color`                           | Cor do ícone do sub-menu com itens                         | `var(--color-brand-01-base)`                      |\n * | `--border-color`                         | Cor da borda                                               | `var(--color-transparent)`                        |\n * | `--shadow`                               | Contém o valor da sombra do elemento                       | `var(--shadow-none)`                              |\n * | `--font-family-submenu`                  | Fonte do texto dos itens de sub-menu                       | `var(--font-family-theme)`                        |\n * | `--font-weight-submenu`                  | Peso da fonte do texto dos itens de sub-menu               | `var(--font-weight-bold)`                         |\n * | **Sub-menu - Hover**                     |                                                            |                                                   |\n * | `--background-hover`                     | Cor de background dos itens do sub-menu no estado hover    | `var(--color-brand-01-lighter)`                   |\n * | `--icon-color-hover`                     | Cor do ícone dos itens de sub-menu no estado hover         | `var(--color-brand-01-darkest)`                   |\n * | `--text-color-hover`                     | Cor do texto dos itens de sub-menu no estado hover         | `var(--color-brand-01-darkest)`                   |\n * | **Sub-menu - pressed**                   |                                                            |                                                   |\n * | `--background-pressed`                   | Cor de background dos itens do sub-menu no estado pressed  | `var(--color-brand-01-light)`                     |\n * | `--icon-color-pressed`                   | Cor do ícone dos itens de sub-menu no estado pressed       | `var(--color-brand-01-darkest)`                   |\n * | `--text-color-pressed`                   | Cor do texto dos itens de sub-menu no estado pressed       | `var(--color-brand-01-darkest)`                   |\n * | **Sub-menu - selected**                  |                                                            |                                                   |\n * | `--background-selected`                  | Cor de background dos itens do sub-menu no estado selected | `var(--color-brand-01-light)`                     |\n * | `--icon-color-selected`                  | Cor do ícone dos itens de sub-menu no estado selected      | `var(--color-neutral-dark-95)`                    |\n * | `--text-color-selected`                  | Cor do texto dos itens de sub-menu no estado selected      | `var(--color-brand-01-darkest)`                   |\n * | **Customer**                             |                                                            |                                                   |\n * | `--background-color-customer`            | Cor do background da seção customer                        | `var(--color-neutral-light-00)`                   |\n * | `--border-color`                         | Cor da borda da seção customer                             | `var(--color-neutral-light-10)`                   |\n * | `--border-style`                         | Estilo da borda da seção customer                          | `solid`                                           |\n * | `--border-width`                         | Largura da borda da seção customer                         | `var(--border-width-sm)`                          |\n * | **Customer - hover**                     |                                                            |                                                   |\n * | `--background-color-customer-hover`      | Cor do background da seção customer no estado hover        | `var(--color-brand-01-lighter)`                   |\n * | **Customer - pressed**                   |                                                            |                                                   |\n * | `--background-color-customer-pressed`    | Cor do background da seção customer no estado pressed      | `var(--color-brand-01-light)`                     |\n * | `--border-width-pressed`                 | Largura da borda da seção customer no estado pressed       | `var(--border-width-md)`                          |\n *\n */\n@Directive()\nexport abstract class PoHeaderBaseComponent {\n  private _menuItems: Array<PoHeaderActions> = [];\n  public menuCollapseJoin = [];\n  public menuCollapseJoinExternal = [];\n  private _brand: PoHeaderBrand | string;\n  private _literals: PoHeaderLiterals;\n  private readonly language: string = poLocaleDefault;\n  private readonly themeChangeSignal = signal(0);\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Número de itens dentro do botão de overflow. Caso a largura do header não suportar a quantidade de itens passadas, um botão com itens será criado.\n   * Essa propriedade possibilita a escolha de quantos itens estarão dentro do botão de overflow.\n   *\n   * > Ao utilizar essa propriedade o `po-header` não irá realizar o calculo automatíco de itens.\n   *\n   */\n  @Input('p-amount-more') amountMore?: number;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Esconde o botão de menu colapsado.\n   *\n   */\n  @Input('p-hide-button-menu') hideButtonMenu?: boolean;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Habilita campo para filtrar itens no menu\n   *\n   */\n  @Input({ alias: 'p-filter-menu', transform: convertToBoolean }) filterMenu?: boolean;\n\n  //Habilita apenas o evento ao clicar no menu hamburguer desabilitando o side-menu lateral\n  @Input('p-side-menu-only-action') sideMenuOnlyAction?: boolean = false;\n\n  //Habilita mais de 3 itens na seção de tools.\n  //Propriedade para uso interno, não indicamos uso dessa propriedade\n  @Input('p-force-actions-tools') forceActionTools?: boolean = false;\n\n  //propriedade interna\n  @Input('p-not-change-context') notChangeContext?: boolean = false;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Propriedade para configurar a seção de brand do `po-header`\n   *\n   * Caso seja enviada uma string, apenas o logo sera mostrado com o valor da string passada.\n   *\n   */\n  @Input('p-brand')\n  set brand(value: PoHeaderBrand | string) {\n    if (typeof value === 'string') {\n      this._brand = { logo: value, link: '/' };\n    } else {\n      this._brand = {\n        ...value,\n        link: value?.link || '/'\n      };\n    }\n  }\n\n  get brand(): PoHeaderBrand | string {\n    return this._brand;\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Propriedade para configurar a seção de tools do `po-header`\n   *\n   * > Máximo de 3 itens, o componente irá ignorar os itens caso seja mandado mais itens que o suportado.\n   *\n   */\n  @Input('p-actions-tools') actionsTools: Array<PoHeaderActionTool> = [];\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Propriedade para configurar a seção de headerUser do `po-header`\n   *\n   */\n  @Input('p-header-user') headerUser: PoHeaderUser;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Propriedade para configurar a seção de menu do `po-header`.\n   * Cada item pode receber uma label e uma ação\n   *\n   * > Os itens irão ficar visíveis em uma tela de até 960px\n   *\n   */\n  @Input('p-menu-items') set menuItems(items: Array<PoHeaderActions>) {\n    this._menuItems = items.map(item => ({\n      ...item,\n      id: item.id || this.generateRandomId(),\n      $internalRoute: item.link && !isExternalLink(item.link) ? true : false\n    }));\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Lista dos itens do menu. Se o valor estiver indefinido ou inválido, será inicializado como um array vazio.\n   *\n   * > O menu poderá ser aberto via botão hamburguer quando a tela tiver menos que 960px\n   *\n   */\n  @Input('p-menus') menuCollapse: Array<PoMenuItem> = [];\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Template customiado que será renderizado após os itens definidos na propriedade `p-menu-items`\n   *\n   */\n  @Input('p-header-template') headerTemplate: TemplateRef<any>;\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Objeto com a literal usada na propriedade `p-literals`.\n   *\n   * Para customizar a literal, basta declarar um objeto do tipo `PoHeaderLiterals` conforme exemplo abaixo:\n   *\n   * ```\n   *  const customLiterals: PoHeaderLiterals = {\n   *    headerLinks: 'Itens de navegação',\n   *    notifications: 'Mensagens'\n   *  };\n   * ```\n   *\n   * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n   *\n   * ```\n   * <po-header\n   *   [p-literals]=\"customLiterals\">\n   * </po-header>\n   * ```\n   *\n   * > O objeto padrão de literais será traduzido de acordo com o idioma do\n   * [`PoI18nService`](/documentation/po-i18n) ou do browser.\n   */\n  @Input('p-literals') set literals(value: PoHeaderLiterals) {\n    if (value instanceof Object && !(value instanceof Array)) {\n      this._literals = {\n        ...poNavbarLiteralsDefault[poLocaleDefault],\n        ...poNavbarLiteralsDefault[this.language],\n        ...value\n      };\n    } else {\n      this._literals = poNavbarLiteralsDefault[this.language];\n    }\n  }\n  get literals() {\n    return this._literals || poNavbarLiteralsDefault[this.language];\n  }\n\n  /**\n   * @optional\n   *\n   * @Input\n   *\n   * @description\n   *\n   * Define o tamanho do componente:\n   * - `small`: altura de 44px (disponível apenas para acessibilidade AA).\n   * - `medium`: altura de 56px.\n   *\n   * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n   * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n   *\n   * @default `medium`\n   */\n  sizeInput = input<string>('', { alias: 'p-size' });\n  size = computed(() => {\n    this.themeChangeSignal();\n    const value = this.sizeInput();\n    return value ? (validateSizeFn(value, PoFieldSize) as string) : (getDefaultSizeFn(PoFieldSize) as string);\n  });\n\n  @HostBinding('attr.p-size')\n  get hostSize() {\n    return this.sizeInput() ? validateSizeFn(this.sizeInput(), PoFieldSize) : getDefaultSizeFn(PoFieldSize);\n  }\n\n  /**\n   * @optional\n   *\n   * @description\n   *\n   * Evento emitido ao clicar no botão para colapsar ou expandir menu.\n   *\n   */\n  @Output('p-colapsed-menu') colapsedMenuEvent = new EventEmitter();\n\n  constructor(languageService: PoLanguageService) {\n    this.language = languageService.getShortLanguage();\n  }\n\n  get menuItems(): Array<PoHeaderActions> {\n    return this._menuItems;\n  }\n\n  private generateRandomId(): string {\n    return String(Math.floor(Math.random() * 9999 + 1));\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.themeChangeSignal.update(v => v + 1);\n    requestAnimationFrame(() => {\n      try {\n        this.updateMenu();\n      } catch {\n        console.error('updateMenu with errors. probably tried to execute before the component was rendered.');\n      }\n    });\n  }\n\n  abstract updateMenu(): void;\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  input,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { debounceTime, fromEvent, map, startWith, Subscription } from 'rxjs';\nimport { PoUtils } from '../../../utils/util';\nimport { PoMenuItem } from '../../po-menu';\nimport { PoHeaderBrand } from '../interfaces/po-header-brand.interface';\n\n@Component({\n  selector: 'po-header-brand',\n  templateUrl: './po-header-brand.component.html',\n  standalone: false\n})\nexport class PoHeaderbrandComponent implements AfterViewInit, OnChanges, OnDestroy {\n  private resizeSub!: Subscription;\n  showTitleTooltip = false;\n  smallLogo = false;\n\n  @ViewChild('target', { read: ElementRef, static: true }) targetRef: ElementRef;\n  @ViewChild('titleBrand') titleBrand: ElementRef;\n\n  @Input('p-brand') brand: PoHeaderBrand;\n\n  @Output('p-click-menu') clickMenu = new EventEmitter<any>();\n\n  @Input('p-hide-button-menu') hideButtonMenu?: boolean;\n\n  // itens do menu caso não seja enviado um menu externo pelo usuário\n  @Input('p-menus') menuCollapse: Array<PoMenuItem> = [];\n\n  @Input('p-external') externalMenu: boolean;\n\n  size = input<string>(undefined, { alias: 'p-size' });\n\n  constructor(\n    private readonly cd: ChangeDetectorRef,\n    private readonly router: Router\n  ) {}\n\n  ngAfterViewInit(): void {\n    this.showTitleTooltip = this.showTooltip;\n    this.resizeSub = fromEvent(window, 'resize')\n      .pipe(\n        debounceTime(200),\n        map(() => window.innerWidth),\n        startWith(window.innerWidth)\n      )\n      .subscribe(width => {\n        this.smallLogo = width <= 960;\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.resizeSub?.unsubscribe();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['brand']) {\n      this.showTitleTooltip = this.showTooltip;\n      this.cd.detectChanges();\n    }\n  }\n\n  onClickLogo() {\n    this.brand?.action?.();\n    if (this.brand.link) {\n      if (PoUtils.isExternalLink(this.brand.link)) {\n        window.open(this.brand.link, '_blank');\n      } else {\n        this.router.navigateByUrl(this.brand.link);\n      }\n    }\n  }\n\n  get showTooltip() {\n    return this.titleBrand?.nativeElement.offsetWidth >= 151;\n  }\n}\n","<div class=\"po-header-nav-brand\">\n  @if (externalMenu) {\n    <po-button\n      #target\n      class=\"po-nav-header-medium\"\n      [p-size]=\"size()\"\n      p-icon=\"ICON_MENU\"\n      p-kind=\"tertiary\"\n      (p-click)=\"clickMenu.emit()\"\n    >\n    </po-button>\n  } @else if (menuCollapse.length && !hideButtonMenu) {\n    <po-button [p-size]=\"size()\" #target p-icon=\"ICON_MENU\" p-kind=\"tertiary\" (p-click)=\"clickMenu.emit()\"> </po-button>\n  }\n\n  @if (brand?.logo && !smallLogo) {\n    <div class=\"po-header-nav-brand-logo\" (click)=\"onClickLogo()\">\n      <img [src]=\"brand.logo\" alt=\"Logo\" />\n    </div>\n  }\n\n  @if ((brand?.logo || brand?.smallLogo) && smallLogo) {\n    <div class=\"po-header-nav-brand-logo-small\" (click)=\"onClickLogo()\">\n      <img [src]=\"brand?.smallLogo || brand?.logo\" alt=\"Logo\" />\n    </div>\n  }\n  <span #titleBrand [p-tooltip]=\"showTooltip ? brand?.title : ''\" class=\"po-header-nav-brand-text\">{{\n    brand?.title\n  }}</span>\n</div>\n","import {\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  input,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\nimport { NavigationCancel, NavigationEnd, Router } from '@angular/router';\nimport { debounceTime, fromEvent, Subscription } from 'rxjs';\nimport { PoLanguageService, poLocaleDefault } from '../../../services';\nimport { PoUtils } from '../../../utils/util';\nimport { PoPopupComponent } from '../../po-popup';\nimport { PoHeaderActions } from '../interfaces/po-header-actions.interface';\n\nexport const poHeaderMoreLiteralsDefault = {\n  en: {\n    more: 'More'\n  },\n  es: {\n    more: 'Más'\n  },\n  pt: {\n    more: 'Mais'\n  },\n  ru: {\n    more: 'Более'\n  }\n};\n\n@Component({\n  selector: 'po-header-menu-item',\n  templateUrl: './po-header-menu-item.component.html',\n  standalone: false\n})\nexport class PoHeaderMenuItemComponent implements OnChanges, OnInit, OnDestroy {\n  buttonMoreRef;\n  lastItemSelected: PoHeaderActions;\n  selectedItem = false;\n  literals;\n  private routeSubscription: Subscription;\n  private resizeSubscription: Subscription;\n\n  @ViewChild('buttonMoreElement', { read: ElementRef }) buttonMoreElement: ElementRef;\n  @ViewChild(PoPopupComponent) poPopupElement: PoPopupComponent;\n\n  @Input('p-item') item: PoHeaderActions;\n\n  @Input('p-item-overflow') itemOverFlow: Array<PoHeaderActions>;\n\n  @Input('p-button-overflow') overflowButton: boolean = false;\n\n  size = input<string>(undefined, { alias: 'p-size' });\n\n  @Output('p-item-click') itemClick = new EventEmitter<any>();\n\n  constructor(\n    private readonly cd: ChangeDetectorRef,\n    private readonly router: Router,\n    languageService: PoLanguageService\n  ) {\n    const language = languageService.getShortLanguage();\n    this.literals = {\n      ...poHeaderMoreLiteralsDefault[poLocaleDefault],\n      ...poHeaderMoreLiteralsDefault[language]\n    };\n  }\n\n  ngOnInit() {\n    this.subscribeToRoute();\n    this.resizeSubscription = fromEvent(window, 'resize')\n      .pipe(debounceTime(300))\n      .subscribe(() => {\n        this.checkActiveItemByUrl(this.checkRouterChildrenFragments());\n      });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['itemOverFlow']) {\n      this.cd.detectChanges();\n    }\n    if (changes['item']) {\n      this.checkActiveItemByUrl(this.checkRouterChildrenFragments());\n      this.cd.detectChanges();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.routeSubscription?.unsubscribe();\n    this.resizeSubscription?.unsubscribe();\n  }\n\n  openListButtonMore() {\n    this.cd.detectChanges();\n    this.poPopupElement.toggle();\n  }\n\n  onKeyDownButtonMore(event) {\n    if (event.code === 'Space' || event.code === 'Enter') {\n      event.preventDefault();\n      this.openListButtonMore();\n    }\n  }\n\n  onKeyDownButtonList(event, item: PoHeaderActions) {\n    if (event.code === 'Space' || event.code === 'Enter') {\n      event.preventDefault();\n      this.onAction(item);\n    }\n  }\n\n  onAction(item: PoHeaderActions, itemDefault: boolean = true) {\n    if (itemDefault) {\n      item.action?.();\n    }\n    if (!itemDefault) {\n      this.lastItemSelected = item;\n    } else {\n      this.itemClick.emit({ item });\n    }\n    if (item.link) {\n      if (PoUtils.isExternalLink(item.link)) {\n        window.open(item.link, '_blank');\n      } else {\n        this.router.navigateByUrl(item.link);\n      }\n    }\n  }\n\n  onClosePopup() {\n    this.buttonMoreElement?.nativeElement.focus();\n    if (this.lastItemSelected) {\n      this.itemClick.emit({ item: this.lastItemSelected, focus: true });\n    }\n    this.lastItemSelected = null;\n  }\n\n  private checkActiveItemByUrl(urlRouter: string) {\n    const urlArray = urlRouter.split('/');\n    let counter = urlArray.length;\n\n    while (counter >= 0) {\n      const url = urlArray.slice(0, counter).join('/');\n      this.selectedItem = this.item?.link === url;\n\n      if (this.selectedItem) {\n        break;\n      }\n      counter--;\n    }\n  }\n\n  private checkRouterChildrenFragments() {\n    const childrenPrimary = this.router.parseUrl(this.router.url).root.children['primary'];\n\n    return childrenPrimary ? `/${childrenPrimary.segments.map(it => it.path).join('/')}` : '/';\n  }\n\n  private subscribeToRoute() {\n    this.routeSubscription = this.router.events.subscribe(val => {\n      if (val instanceof NavigationEnd || val instanceof NavigationCancel) {\n        const urlRouter = this.checkRouterChildrenFragments();\n        this.checkActiveItemByUrl(urlRouter);\n        this.cd.detectChanges();\n      }\n    });\n  }\n}\n","@if (overflowButton) {\n  <li\n    #buttonMoreElement\n    #overflowButton\n    class=\"po-header-nav-submenu-more\"\n    tabindex=\"0\"\n    (click)=\"openListButtonMore()\"\n    (keydown)=\"onKeyDownButtonMore($event)\"\n  >\n    <div\n      role=\"button\"\n      [attr.aria-expanded]=\"poPopupElement?.showPopup\"\n      class=\"po-header-nav-submenu-button-more\"\n      [class.open]=\"poPopupElement?.showPopup\"\n    >\n      <span>{{ literals.more }}</span>\n      <po-icon\n        class=\"po-header-icon po-header-nav-submenu-more-icon\"\n        [p-icon]=\"poPopupElement?.showPopup ? 'ICON_ARROW_UP' : 'ICON_ARROW_DOWN'\"\n      ></po-icon>\n    </div>\n  </li>\n} @else {\n  <li\n    #menusubmenuitem\n    tabindex=\"0\"\n    [p-tooltip]=\"item?.label\"\n    class=\"po-header-nav-submenu\"\n    (click)=\"onAction(item)\"\n    (keydown)=\"onKeyDownButtonList($event, item)\"\n    [attr.aria-current]=\"selectedItem\"\n  >\n    <div\n      class=\"po-header-nav-submenu-button\"\n      [attr.aria-selected]=\"item?.$selected\"\n      [class.submenu-item-selected]=\"selectedItem\"\n    >\n      <span>{{ item?.label }}</span>\n    </div>\n  </li>\n}\n\n@if (overflowButton) {\n  <po-popup\n    #popup\n    [p-size]=\"size()\"\n    [p-actions]=\"itemOverFlow\"\n    [p-target]=\"buttonMoreElement\"\n    [p-hide-arrow]=\"true\"\n    (p-click-item)=\"onAction($event, false)\"\n    (p-close)=\"onClosePopup()\"\n  >\n  </po-popup>\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  input,\n  Input,\n  QueryList,\n  TemplateRef,\n  ViewChildren\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { PoUtils } from '../../../utils/util';\nimport { PoButtonComponent } from '../../po-button';\nimport { PoPopoverComponent } from '../../po-popover';\nimport { PoPopupComponent } from '../../po-popup';\nimport { PoHeaderActionTool } from '../interfaces/po-header-action-tool.interface';\nimport { PoHeaderLiterals } from '../interfaces/po-header-literals.interface';\n\n@Component({\n  selector: 'po-header-tools',\n  templateUrl: './po-header-tools.component.html',\n  standalone: false\n})\nexport class PoHeaderToolsComponent {\n  _actionTools: Array<PoHeaderActionTool> = [];\n\n  @ViewChildren('buttonActionElement', { read: ElementRef }) buttonActionElements: QueryList<ElementRef>;\n  @ViewChildren('buttonActionElement') buttonActionComponents: QueryList<PoButtonComponent>;\n  @ViewChildren('poPopupAction') poPopupActions: QueryList<PoPopupComponent>;\n  @ViewChildren('poPopoverAction') poPopoverActions: QueryList<PoPopoverComponent>;\n\n  @Input('p-force-actions-tools') forceActionTools?: boolean = false;\n\n  @Input('p-actions-tools') set actionTools(value: Array<PoHeaderActionTool>) {\n    if (this.forceActionTools) {\n      this._actionTools = value;\n    } else {\n      this._actionTools = value.slice(0, 3);\n    }\n    this.cd.detectChanges();\n  }\n\n  @Input('p-literals') literals: PoHeaderLiterals;\n\n  size = input<string>(undefined, { alias: 'p-size' });\n\n  get actionTools(): Array<PoHeaderActionTool> {\n    return this._actionTools;\n  }\n\n  get popoverIndexes(): Array<number> {\n    return this.actionTools.map((action, index) => (action.popover ? index : -1)).filter(index => index !== -1);\n  }\n\n  @Input('p-header-template') headerTemplate: TemplateRef<any>;\n\n  constructor(\n    private readonly router: Router,\n    private readonly cd: ChangeDetectorRef\n  ) {}\n\n  onClickAction(index: number) {\n    const action = this.actionTools[index];\n    action.action?.();\n\n    if (this.actionTools[index].items && !this.actionTools[index].popover) {\n      const popup = this.poPopupActions.get(index);\n      popup?.toggle();\n    }\n\n    this.checkLink(action);\n  }\n\n  checkSelected(index: number) {\n    if (this.actionTools[index].items && !this.actionTools[index].popover) {\n      const popup = this.poPopupActions?.get(index);\n      if (popup?.showPopup) {\n        return true;\n      }\n      return false;\n    } else {\n      const realPopoverIndex = this.popoverIndexes.indexOf(index);\n      const popover = this.poPopoverActions?.get(realPopoverIndex);\n\n      if (popover && !popover?.isHidden) {\n        return true;\n      }\n      return false;\n    }\n  }\n\n  onClosePopup(index: number) {\n    this.buttonActionComponents.get(index).focus();\n  }\n\n  getAriaLabel(action: PoHeaderActionTool): string {\n    let label = action?.tooltip || '';\n    if (action?.badge) {\n      label += `, ${action.badge} ${this.literals?.notifications}`;\n    }\n    return label;\n  }\n\n  private checkLink(item: PoHeaderActionTool) {\n    if (item.link) {\n      if (PoUtils.isExternalLink(item.link)) {\n        window.open(item.link, '_blank');\n      } else {\n        this.router.navigateByUrl(item.link);\n      }\n    }\n  }\n}\n","<div class=\"po-header-nav-tools\">\n  @if (headerTemplate) {\n    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n  }\n  @for (action of actionTools; track action?.label; let i = $index) {\n    <li [class.po-header-nav-item-small]=\"i !== actionTools.length - 1\">\n      <po-button\n        #buttonActionElement\n        [p-tooltip]=\"action?.tooltip\"\n        [p-icon]=\"action?.badge ? badge : action?.icon || 'an an-dots-nine'\"\n        p-kind=\"tertiary\"\n        (p-click)=\"onClickAction(i)\"\n        [class.po-header-selected-tool]=\"checkSelected(i)\"\n        [p-aria-expanded]=\"checkSelected(i)\"\n        [p-aria-label]=\"getAriaLabel(action)\"\n        [p-size]=\"size()\"\n      >\n      </po-button>\n\n      <ng-template #badge>\n        <i class=\"po-header-badge\" [class]=\"action?.icon || 'an an-bell'\">\n          <po-badge class=\"po-header-status\" [p-value]=\"action?.badge\"></po-badge>\n        </i>\n      </ng-template>\n\n      <po-popup\n        #poPopupAction\n        [p-actions]=\"action?.items\"\n        [p-target]=\"buttonActionElements?.get(i)\"\n        [p-hide-arrow]=\"true\"\n        (p-close)=\"onClosePopup(i)\"\n        [p-size]=\"size()\"\n      >\n      </po-popup>\n\n      @if (action?.popover) {\n        <po-popover\n          #poPopoverAction\n          p-position=\"bottom-right\"\n          [p-width]=\"action.popover.width\"\n          [p-target]=\"buttonActionElements?.get(i)\"\n          [p-hide-arrow]=\"true\"\n          [p-corner-aligned]=\"true\"\n        >\n          <ng-container *ngTemplateOutlet=\"action.popover?.content\"></ng-container>\n        </po-popover>\n      }\n    </li>\n  }\n</div>\n","import { Component, input, Input, ViewChild } from '@angular/core';\nimport { PoPopoverComponent } from '../../po-popover';\nimport { PoPopupComponent } from '../../po-popup';\nimport { PoHeaderUser } from '../interfaces/po-header-user.interface';\nimport { PoLanguageService, poLocaleDefault } from '../../../services';\n\nexport const poHeaderCustomerLiteralsDefault = {\n  en: {\n    labelUser: 'Open user Navigation'\n  },\n  es: {\n    labelUser: 'Abrir navegación de usuario'\n  },\n  pt: {\n    labelUser: 'Abrir navegação do usuário'\n  },\n  ru: {\n    labelUser: 'Открыть навигацию пользователя'\n  }\n};\n@Component({\n  selector: 'po-header-customer',\n  templateUrl: './po-header-customer.component.html',\n  standalone: false\n})\nexport class PoHeaderCustomerComponent {\n  literals;\n  @ViewChild('poPopupAction') poPopupAction: PoPopupComponent;\n  @ViewChild('poPopoverAction') poPopoverAction: PoPopoverComponent;\n\n  @Input('p-header-user') headerUser: PoHeaderUser;\n\n  size = input<string>(undefined, { alias: 'p-size' });\n\n  constructor(languageService: PoLanguageService) {\n    const language = languageService.getShortLanguage();\n    this.literals = {\n      ...poHeaderCustomerLiteralsDefault[poLocaleDefault],\n      ...poHeaderCustomerLiteralsDefault[language]\n    };\n  }\n\n  onClickPopup() {\n    if (this.headerUser.items && !this.headerUser.popover) {\n      this.poPopupAction.toggle();\n    }\n  }\n\n  onClickUserSection() {\n    this.headerUser.action?.();\n  }\n\n  onClickClosePopover() {\n    this.poPopoverAction.close();\n  }\n\n  onKeyDownCustomer(event) {\n    if (event.code === 'Space' || event.code === 'Enter') {\n      this.headerUser.action?.();\n      if (!this.headerUser.popover) {\n        this.poPopupAction.toggle();\n      } else if (this.poPopoverAction.isHidden) {\n        this.poPopoverAction.open();\n      } else {\n        this.poPopoverAction.close();\n      }\n    }\n  }\n}\n","<div class=\"po-header-nav-tools\" (click)=\"onClickUserSection()\" (keydown)=\"onKeyDownCustomer($event)\">\n  <li\n    #targetRef\n    tabindex=\"0\"\n    class=\"po-header-nav-customer-container\"\n    (click)=\"onClickPopup()\"\n    role=\"menu\"\n    [attr.aria-label]=\"literals.labelUser\"\n  >\n    <div class=\"po-header-nav-customer-brand\">\n      <img [src]=\"headerUser?.customerBrand\" alt=\"User\" />\n    </div>\n\n    <div class=\"po-header-nav-customer-divider\"></div>\n\n    <div class=\"po-header-nav-customer-avatar-wrapper\">\n      <div class=\"po-header-nav-customer-avatar\">\n        <img [src]=\"headerUser?.avatar\" alt=\"Avatar\" />\n      </div>\n      @if (headerUser?.status) {\n        <po-badge class=\"po-header-nav-avatar-status\" p-size=\"small\" [p-status]=\"headerUser.status\"></po-badge>\n      }\n    </div>\n  </li>\n\n  <li class=\"po-header-nav-customer-avatar-wrapper po-header-icon-small\">\n    <div class=\"po-header-nav-customer-avatar\">\n      <img [src]=\"headerUser?.avatar\" alt=\"Avatar\" />\n    </div>\n    @if (headerUser?.status) {\n      <po-badge class=\"po-header-nav-avatar-status\" p-size=\"small\" [p-status]=\"headerUser.status\"></po-badge>\n    }\n  </li>\n</div>\n\n@if (headerUser?.items?.length) {\n  <po-popup\n    #poPopupAction\n    [p-actions]=\"headerUser.items\"\n    [p-target]=\"targetRef\"\n    [p-hide-arrow]=\"true\"\n    p-position=\"bottom-left\"\n    [p-size]=\"size()\"\n  >\n  </po-popup>\n}\n\n@if (headerUser?.popover) {\n  <po-popover\n    #poPopoverAction\n    p-position=\"bottom-right\"\n    [p-width]=\"headerUser.popover.width\"\n    [p-target]=\"targetRef\"\n    [p-hide-arrow]=\"true\"\n    [p-corner-aligned]=\"true\"\n  >\n    <ng-container *ngTemplateOutlet=\"headerUser.popover.content\"></ng-container>\n  </po-popover>\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  SimpleChanges,\n  ViewChild,\n  ViewChildren\n} from '@angular/core';\nimport { debounceTime, delay, fromEvent, map, startWith, Subscription } from 'rxjs';\nimport { PoLanguageService } from '../../services';\nimport { uuid } from '../../utils/util';\nimport { PoMenuComponent, PoMenuGlobalService, PoMenuHeaderTemplateDirective } from '../po-menu';\nimport { PoHeaderActions } from './interfaces/po-header-actions.interface';\nimport { PoHeaderBaseComponent } from './po-header-base.component';\nimport { PoHeaderMenuItemComponent } from './po-header-menu-item/po-header-menu-item.component';\n\n/**\n * @docsExtends PoHeaderBaseComponent\n *\n * @example\n *\n * <example name=\"po-header-basic\" title=\"PO Header Basic\">\n *  <file name=\"sample-po-header-basic/sample-po-header-basic.component.html\"> </file>\n *  <file name=\"sample-po-header-basic/sample-po-header-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-header-labs\" title=\"PO Header Labs\">\n *  <file name=\"sample-po-header-labs/sample-po-header-labs.component.html\"> </file>\n *  <file name=\"sample-po-header-labs/sample-po-header-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-header-apps\" title=\"PO Header Apps\">\n *  <file name=\"sample-po-header-apps/sample-po-header-apps.component.html\"> </file>\n *  <file name=\"sample-po-header-apps/sample-po-header-apps.component.ts\"> </file>\n * </example>\n *\n */\n\n@Component({\n  selector: 'po-header',\n  templateUrl: './po-header.component.html',\n  standalone: false\n})\nexport class PoHeaderComponent extends PoHeaderBaseComponent implements AfterViewInit, OnChanges, OnInit, OnDestroy {\n  afterViewInitWascalled = false;\n  showMenu = false;\n  visibleMenuItems: Array<any> = [...this.menuItems];\n\n  overflowItems: Array<any> = [];\n  showOverflow = false;\n  resizeSubscription!: Subscription;\n  private menusSubscription: Subscription;\n  private applicationMenuSubscription: Subscription;\n  private menuIdSubscription: Subscription;\n  private menuonChangesSubscription: Subscription;\n  private removedMenuSubscription: Subscription;\n  previousMenuComponentId;\n  private resizeSub!: Subscription;\n\n  menuExternal = [];\n  existMenuExternal = false;\n  applicationMenu: PoMenuComponent;\n  private readonly id = uuid();\n  private currentWidth = 0;\n\n  private previousMenusItems = [];\n\n  @ViewChild('buttonFirstAction', { read: ElementRef }) buttonFirstAction: ElementRef;\n  buttonFirstActionRef: ElementRef;\n\n  @ViewChild('navElement', { read: ElementRef }) navElement: ElementRef;\n  @ViewChild('menuWrapperBrand') menuWrapperBrand!: ElementRef<HTMLElement>;\n  @ViewChild('menuWrapperTools') menuWrapperTools!: ElementRef<HTMLElement>;\n  @ViewChild('overflowButton', { static: true }) overflowButton!: ElementRef<HTMLElement>;\n  @ViewChild('overflowButton') overflowButtonComponentEl!: PoHeaderMenuItemComponent;\n  @ViewChildren('menusubmenuitem', { read: ElementRef }) menuSubItems!: QueryList<ElementRef<HTMLElement>>;\n  @ContentChild(PoMenuHeaderTemplateDirective, { static: true }) menuHeaderTemplate: PoMenuHeaderTemplateDirective;\n\n  @ViewChild(PoMenuComponent) set menuComponent(menu: PoMenuComponent) {\n    this.previousMenuComponentId = menu?.id || this.previousMenuComponentId;\n  }\n\n  constructor(\n    private readonly cd: ChangeDetectorRef,\n    private readonly elRef: ElementRef,\n    private readonly menuGlobalService: PoMenuGlobalService,\n    poLanguageService: PoLanguageService\n  ) {\n    super(poLanguageService);\n  }\n\n  ngOnInit(): void {\n    this.menuonChangesSubscription = this.menuGlobalService.receiveOnChange$.subscribe(_newMenus => {\n      if (!this.applicationMenu) return;\n      if (this.currentWidth <= 960) {\n        this.handleSmallSreen();\n      } else {\n        this.handleLargeSreen();\n      }\n      this.cd.detectChanges();\n    });\n\n    this.menusSubscription = this.menuGlobalService.receiveMenus$.subscribe(newMenus => {\n      this.previousMenusItems = [...newMenus].filter(item => item.id !== this.id);\n    });\n\n    this.removedMenuSubscription = this.menuGlobalService.receiveRemovedApplicationMenu$.subscribe(removedMenuId => {\n      this.applicationMenu =\n        this.applicationMenu && (this.previousMenuComponentId === removedMenuId || this.notChangeContext)\n          ? this.applicationMenu\n          : undefined;\n\n      if (this.currentWidth <= 960) {\n        this.handleSmallSreen();\n      } else {\n        this.handleLargeSreen();\n      }\n      this.cd.detectChanges();\n    });\n\n    this.menuIdSubscription = this.menuGlobalService.receiveId$.subscribe(id => {\n      if (id !== 'po-header-nav-bar') {\n        this.existMenuExternal = true;\n      }\n    });\n\n    this.applicationMenuSubscription = this.menuGlobalService.receiveApplicationMenu$\n      .pipe(delay(100))\n      .subscribe(newMenu => {\n        if (this.applicationMenu && this.notChangeContext && this.previousMenuComponentId !== newMenu.id) {\n          return;\n        }\n        this.applicationMenu = this.previousMenuComponentId === newMenu.id ? undefined : newMenu;\n\n        if (this.applicationMenu) {\n          this.updateMenu();\n          this.combineItemsExternal();\n          if (this.currentWidth <= 960) {\n            this.handleSmallSreen();\n          }\n        }\n        this.cd.detectChanges();\n      });\n\n    this.resizeSub = fromEvent(window, 'resize')\n      .pipe(\n        debounceTime(200),\n        map(() => window.innerWidth),\n        startWith(window.innerWidth)\n      )\n      .subscribe(width => {\n        this.currentWidth = width;\n        if (width <= 960) {\n          this.handleSmallSreen();\n        } else {\n          this.handleLargeSreen();\n        }\n      });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['amountMore']) {\n      this.updateButtonMore();\n    }\n\n    if (changes['menuCollapse'] && this.afterViewInitWascalled) {\n      if (this.currentWidth <= 960) {\n        this.handleSmallSreen();\n      } else {\n        this.handleLargeSreen();\n      }\n    }\n\n    if (changes['menuItems'] && this.afterViewInitWascalled) {\n      this.updateMenu();\n      this.combineItemsExternal();\n      if (this.currentWidth <= 960) {\n        this.handleSmallSreen();\n      }\n      setTimeout(() => {\n        this.updateMenu();\n        this.cd.detectChanges();\n      });\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.updateMenu();\n    this.cd.detectChanges();\n\n    this.resizeSubscription = fromEvent(window, 'resize')\n      .pipe(debounceTime(300))\n      .subscribe(() => {\n        this.updateMenu();\n      });\n\n    this.combineItems();\n    this.combineItemsExternal();\n    this.afterViewInitWascalled = true;\n  }\n\n  ngOnDestroy(): void {\n    this.resizeSub?.unsubscribe();\n\n    this.removedMenuSubscription?.unsubscribe();\n    this.applicationMenuSubscription?.unsubscribe();\n    this.menusSubscription?.unsubscribe();\n    this.menuIdSubscription?.unsubscribe();\n    this.menuonChangesSubscription?.unsubscribe();\n  }\n\n  toggleOverflowDropdown() {\n    this.showOverflow = !this.showOverflow;\n  }\n\n  updateMenu() {\n    if (this.amountMore) {\n      this.updateButtonMore();\n      return;\n    }\n\n    const hostElement = this.elRef.nativeElement;\n    const parent = hostElement.parentElement;\n    let screenWidth;\n    if (parent?.getBoundingClientRect().width) {\n      screenWidth = parent.getBoundingClientRect().width;\n    } else {\n      screenWidth = document.documentElement.clientWidth;\n    }\n\n    const brandWidth = this.menuWrapperBrand.nativeElement.offsetWidth;\n    const toolWidth = this.menuWrapperTools.nativeElement.offsetWidth;\n    const spacingAndMoreButton = 170;\n\n    const remaining = screenWidth - brandWidth - toolWidth - spacingAndMoreButton;\n    const temp = [...this.visibleMenuItems];\n    this.visibleMenuItems = [...this.menuItems];\n    this.overflowItems = [];\n    this.cd.detectChanges();\n    const itemWidths = this.menuSubItems.toArray().map(el => el.nativeElement.offsetWidth + 16);\n    this.visibleMenuItems = temp;\n    let usedWidth = 0;\n    for (let i = 0; i < this.menuItems.length; i++) {\n      const itemWidth = itemWidths[i];\n\n      if (usedWidth + itemWidth >= remaining) {\n        this.overflowItems = [...this.overflowItems, this.menuItems[i]];\n      }\n      usedWidth += itemWidths[i];\n    }\n    this.visibleMenuItems = [...this.menuItems].filter(\n      item => !this.overflowItems.some(overflow => overflow.id === item.id)\n    );\n    this.cd.detectChanges();\n\n    if (this.overflowItems.length) {\n      this.showOverflow = true;\n    } else {\n      this.showOverflow = false;\n    }\n  }\n\n  updateButtonMore() {\n    let itemVisible;\n    let itemsInFlow;\n    if (this.amountMore <= 0) {\n      itemVisible = [...this.menuItems];\n      itemsInFlow = [];\n    } else if (this.amountMore >= this.menuItems.length) {\n      itemVisible = [];\n      itemsInFlow = [...this.menuItems];\n    } else {\n      itemVisible = this.menuItems.slice(0, this.menuItems.length - this.amountMore);\n\n      itemsInFlow = this.menuItems.slice(-this.amountMore);\n    }\n\n    this.visibleMenuItems = [...itemVisible];\n    this.overflowItems = [...itemsInFlow];\n\n    if (this.overflowItems.length) {\n      this.showOverflow = true;\n    } else {\n      this.showOverflow = false;\n    }\n  }\n\n  onClickMenu() {\n    if (this.menuCollapseJoin.length) {\n      this.showMenu = !this.showMenu;\n    }\n    if (!this.sideMenuOnlyAction) {\n      this.applicationMenu?.toggleMenuMobile();\n    }\n    this.cd.detectChanges();\n    this.colapsedMenuEvent.emit();\n  }\n\n  onCloseMenu() {\n    this.showMenu = false;\n  }\n\n  handleSmallSreen() {\n    if (this.applicationMenu && !this.notChangeContext) {\n      this.applicationMenu.menus = [\n        { label: this.literals.headerLinks, subItems: [...this.menuCollapseJoinExternal], id: this.id },\n        ...this.previousMenusItems\n      ];\n    } else {\n      this.menuCollapseJoin = this.combineItems();\n    }\n    this.cd.detectChanges();\n  }\n\n  handleLargeSreen() {\n    if (this.applicationMenu && !this.notChangeContext) {\n      this.applicationMenu.menus = [...this.previousMenusItems];\n    } else {\n      this.menuCollapseJoin = [...this.menuCollapse];\n    }\n    this.cd.detectChanges();\n  }\n\n  private combineItems() {\n    const toolActions = this.actionsTools.map(item => ({ label: item.label, action: item.action, link: item.link }));\n    const menuActions = this.menuItems.map(item => ({ label: item.label, action: item.action, link: item.link }));\n\n    const joinMenu = {\n      label: this.literals.headerLinks,\n      subItems: [...menuActions, ...toolActions],\n      id: this.id\n    };\n\n    return [...this.menuCollapse, joinMenu];\n  }\n\n  private combineItemsExternal() {\n    const toolActions = this.actionsTools.map(item => ({ label: item.label, action: item.action, link: item.link }));\n    const menuActions = this.menuItems.map(item => ({ label: item.label, action: item.action, link: item.link }));\n\n    this.menuCollapseJoinExternal = [...menuActions, ...toolActions];\n  }\n\n  onSelected({ item, focus }: { item: PoHeaderActions; focus: boolean }) {\n    if (item.$internalRoute) {\n      this.menuItems = this.menuItems.map(menuItem => ({\n        ...menuItem,\n        $selected: menuItem.id === item.id\n      }));\n    }\n    this.updateMenu();\n    this.combineItems();\n    this.combineItemsExternal();\n    if (focus) {\n      this.overflowButtonComponentEl.onClosePopup();\n    }\n  }\n}\n","<nav #navElement class=\"po-header-nav\">\n  <div #menuWrapperBrand>\n    <po-header-brand\n      [p-brand]=\"brand\"\n      (p-click-menu)=\"onClickMenu()\"\n      [p-menus]=\"menuCollapseJoin\"\n      [p-external]=\"applicationMenu\"\n      [p-hide-button-menu]=\"hideButtonMenu\"\n      [p-size]=\"size()\"\n    ></po-header-brand>\n  </div>\n\n  <ul #menuWrapperItens class=\"po-header-nav-submenus-wrapper\">\n    @for (item of visibleMenuItems; track item.id) {\n      <po-header-menu-item\n        #menusubmenuitem\n        [p-item]=\"item\"\n        (p-item-click)=\"onSelected($event)\"\n        [p-size]=\"size()\"\n      ></po-header-menu-item>\n    }\n  </ul>\n\n  @if (showOverflow && overflowItems.length) {\n    <po-header-menu-item\n      #overflowButton\n      #menusubmenuitem\n      [p-button-overflow]=\"true\"\n      [p-item-overflow]=\"overflowItems\"\n      (p-item-click)=\"onSelected($event)\"\n      [p-size]=\"size()\"\n    ></po-header-menu-item>\n  }\n\n  <ul #menuWrapperTools class=\"po-header-tools-wrapper\">\n    <po-header-tools\n      [p-force-actions-tools]=\"forceActionTools\"\n      [p-actions-tools]=\"actionsTools\"\n      [p-header-template]=\"headerTemplate\"\n      [p-literals]=\"literals\"\n      [p-size]=\"size()\"\n    ></po-header-tools>\n\n    @if (headerUser?.customerBrand && headerUser?.avatar) {\n      <po-header-customer [p-header-user]=\"headerUser\" [p-size]=\"size()\"></po-header-customer>\n    }\n  </ul>\n</nav>\n\n@if (!sideMenuOnlyAction && !applicationMenu && menuCollapseJoin.length) {\n  <div class=\"po-header-overlay\" [class.show]=\"showMenu\" (click)=\"onCloseMenu()\"></div>\n\n  <aside class=\"po-header-side-menu\" [class.open]=\"showMenu\">\n    <div class=\"po-header-sidemenu-outer\">\n      <po-menu\n        [p-only-menu-item]=\"true\"\n        [p-menus]=\"menuCollapseJoin\"\n        [p-filter]=\"filterMenu\"\n        p-menu-id=\"po-header-nav-bar\"\n      >\n        <div *p-menu-header-template>\n          <ng-template *ngTemplateOutlet=\"menuHeaderTemplate?.templateRef\"></ng-template>\n        </div>\n      </po-menu>\n    </div>\n  </aside>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { PoTooltipModule } from '../../directives';\nimport { PoAvatarModule } from '../po-avatar';\nimport { PoBadgeModule } from '../po-badge';\nimport { PoButtonModule } from '../po-button';\nimport { PoDropdownModule } from '../po-dropdown';\nimport { PoIconModule } from '../po-icon';\nimport { PoMenuModule } from '../po-menu';\nimport { PoPopoverModule } from '../po-popover';\nimport { PoPopupModule } from '../po-popup';\nimport { PoHeaderbrandComponent } from './po-header-brand/po-header-brand.component';\nimport { PoHeaderCustomerComponent } from './po-header-customer/po-header-customer.component';\nimport { PoHeaderMenuItemComponent } from './po-header-menu-item/po-header-menu-item.component';\nimport { PoHeaderToolsComponent } from './po-header-tools/po-header-tools.component';\nimport { PoHeaderComponent } from './po-header.component';\n\n/**\n * @description\n *\n * Módulo do componente `po-header`.\n */\n\n@NgModule({\n  imports: [\n    CommonModule,\n    PoDropdownModule,\n    PoIconModule,\n    PoButtonModule,\n    PoBadgeModule,\n    PoAvatarModule,\n    PoPopoverModule,\n    PoTooltipModule,\n    PoPopupModule,\n    PoMenuModule,\n    RouterModule\n  ],\n  declarations: [\n    PoHeaderComponent,\n    PoHeaderbrandComponent,\n    PoHeaderMenuItemComponent,\n    PoHeaderToolsComponent,\n    PoHeaderCustomerComponent\n  ],\n  exports: [PoHeaderComponent]\n})\nexport class PoHeaderModule {}\n","import { NgModule } from '@angular/core';\n\nimport { PoAccordionModule } from './po-accordion/po-accordion.module';\nimport { PoAvatarModule } from './po-avatar/po-avatar.module';\nimport { PoBadgeModule } from './po-badge/po-badge.module';\nimport { PoBreadcrumbModule } from './po-breadcrumb/po-breadcrumb.module';\nimport { PoButtonGroupModule } from './po-button-group/po-button-group.module';\nimport { PoButtonModule } from './po-button/po-button.module';\nimport { PoCalendarModule } from './po-calendar/po-calendar.module';\nimport { PoChartModule } from './po-chart/po-chart.module';\nimport { PoContainerModule } from './po-container/po-container.module';\nimport { PoContextMenuModule } from './po-context-menu/po-context-menu.module';\nimport { PoDisclaimerGroupModule } from './po-disclaimer-group/po-disclaimer-group.module';\nimport { PoDisclaimerModule } from './po-disclaimer/po-disclaimer.module';\nimport { PoDividerModule } from './po-divider/po-divider.module';\nimport { PoDropdownModule } from './po-dropdown/po-dropdown.module';\nimport { PoDynamicModule } from './po-dynamic/po-dynamic.module';\nimport { PoFieldModule } from './po-field/po-field.module';\nimport { PoSwitchModule } from './po-field/po-switch/po-switch.module';\nimport { PoGaugeModule } from './po-gauge/po-gauge.module';\nimport { PoGridModule } from './po-grid/po-grid.module';\nimport { PoIconModule } from './po-icon/po-icon.module';\nimport { PoImageModule } from './po-image/po-image.module';\nimport { PoInfoModule } from './po-info/po-info.module';\nimport { PoLabelModule } from './po-label/po-label.module';\nimport { PoLinkModule } from './po-link/po-link.module';\nimport { PoListViewModule } from './po-list-view/po-list-view.module';\nimport { PoListBoxModule } from './po-listbox/po-listbox.module';\nimport { PoLoadingModule } from './po-loading/po-loading.module';\nimport { PoLogoModule } from './po-logo/po-logo.module';\nimport { PoMenuPanelModule } from './po-menu-panel/po-menu-panel.module';\nimport { PoMenuModule } from './po-menu/po-menu.module';\nimport { PoModalModule } from './po-modal/po-modal.module';\nimport { PoNavbarModule } from './po-navbar/po-navbar.module';\nimport { PoOverlayModule } from './po-overlay/po-overlay.module';\nimport { PoPageSlideModule } from './po-page/po-page-slide/po-page-slide.module';\nimport { PoPageModule } from './po-page/po-page.module';\nimport { PoPopoverModule } from './po-popover/po-popover.module';\nimport { PoPopupModule } from './po-popup/po-popup.module';\nimport { PoProgressModule } from './po-progress/po-progress.module';\nimport { PoSearchModule } from './po-search';\nimport { PoSkeletonModule } from './po-skeleton/po-skeleton.module';\nimport { PoSlideModule } from './po-slide/po-slide.module';\nimport { PoStepperModule } from './po-stepper/po-stepper.module';\nimport { PoTableModule } from './po-table/po-table.module';\nimport { PoContextTabsModule } from './po-context-tabs/po-context-tabs.module';\nimport { PoTabsModule } from './po-tabs/po-tabs.module';\nimport { PoTagModule } from './po-tag/po-tag.module';\nimport { PoToolbarModule } from './po-toolbar/po-toolbar.module';\nimport { PoTreeViewModule } from './po-tree-view/po-tree-view.module';\nimport { PoWidgetModule } from './po-widget/po-widget.module';\nimport { PoToasterModule } from './po-toaster';\nimport { PoHelperModule } from './po-helper/po-helper.module';\nimport { PoHeaderModule } from './po-header';\nimport { PoTimerModule } from './po-timer/po-timer.module';\n\nconst PO_MODULES = [\n  PoAccordionModule,\n  PoAvatarModule,\n  PoBreadcrumbModule,\n  PoButtonModule,\n  PoButtonGroupModule,\n  PoCalendarModule,\n  PoChartModule,\n  PoContainerModule,\n  PoContextMenuModule,\n  PoDisclaimerGroupModule,\n  PoDisclaimerModule,\n  PoDividerModule,\n  PoDropdownModule,\n  PoDynamicModule,\n  PoFieldModule,\n  PoGaugeModule,\n  PoGridModule,\n  PoIconModule,\n  PoInfoModule,\n  PoListViewModule,\n  PoListBoxModule,\n  PoLoadingModule,\n  PoLogoModule,\n  PoMenuModule,\n  PoMenuPanelModule,\n  PoModalModule,\n  PoNavbarModule,\n  PoOverlayModule,\n  PoPageModule,\n  PoPopoverModule,\n  PoPopupModule,\n  PoProgressModule,\n  PoSlideModule,\n  PoStepperModule,\n  PoTableModule,\n  PoTabsModule,\n  PoContextTabsModule,\n  PoTagModule,\n  PoToolbarModule,\n  PoTreeViewModule,\n  PoWidgetModule,\n  PoLinkModule,\n  PoLabelModule,\n  PoImageModule,\n  PoPageSlideModule,\n  PoSwitchModule,\n  PoSearchModule,\n  PoBadgeModule,\n  PoSkeletonModule,\n  PoToasterModule,\n  PoHelperModule,\n  PoHeaderModule,\n  PoTimerModule\n];\n@NgModule({\n  imports: PO_MODULES,\n  exports: PO_MODULES,\n  providers: [],\n  bootstrap: [],\n  declarations: []\n})\nexport class PoComponentsModule {}\n","import { NgModule } from '@angular/core';\n\n@NgModule({\n  declarations: [],\n  imports: [],\n  exports: [],\n  providers: [],\n  bootstrap: []\n})\nexport class PoGuardsModule {}\n","export const poHttpInterceptorDetailLiteralsDefault = {\n  en: <any>{\n    closeButton: 'Close',\n    details: 'Details',\n    detail: 'Detail',\n    error: 'Error',\n    warning: 'Warning',\n    information: 'Information',\n    success: 'Success'\n  },\n  es: <any>{\n    closeButton: 'Cerrar',\n    details: 'Detalles',\n    detail: 'Detalle',\n    error: 'Error',\n    warning: 'Advertencia',\n    information: 'Informacion',\n    success: 'Éxito'\n  },\n  pt: <any>{\n    closeButton: 'Fechar',\n    details: 'Detalhes',\n    detail: 'Detalhe',\n    error: 'Erro',\n    warning: 'Aviso',\n    information: 'Informação',\n    success: 'Sucesso'\n  },\n  ru: <any>{\n    closeButton: 'Закрывать',\n    details: 'Детали',\n    detail: 'Деталь',\n    error: 'Ошибка',\n    warning: 'Предупреждение',\n    information: 'Информация',\n    success: 'Yспех'\n  }\n};\n","import { Component, EventEmitter, OnInit, ViewChild } from '@angular/core';\n\nimport { PoModalAction } from '../../../components/po-modal/po-modal-action.interface';\nimport { PoModalComponent } from '../../../components/po-modal/po-modal.component';\n\nimport { PoHttpInterceptorDetail } from './po-http-interceptor-detail.interface';\nimport { poHttpInterceptorDetailLiteralsDefault } from './po-http-interceptor-detail-literals.interface';\nimport { PoLanguageService } from '../../../services/po-language/po-language.service';\n\nexport const colors = { success: 'color-11', error: 'color-07', warning: 'color-08', info: '' };\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente para a modal de detalhes exibida pelo interceptor\n */\n@Component({\n  selector: 'po-http-interceptor-detail',\n  templateUrl: './po-http-interceptor-detail.component.html',\n  standalone: false\n})\nexport class PoHttpInterceptorDetailComponent implements OnInit {\n  @ViewChild(PoModalComponent, { static: true }) modal: PoModalComponent;\n\n  closed = new EventEmitter<any>();\n  details: Array<PoHttpInterceptorDetail> = [];\n  title: string;\n\n  private readonly language: any;\n  private readonly literals: any;\n\n  // eslint-disable-next-line @typescript-eslint/member-ordering\n  primaryAction: PoModalAction;\n\n  constructor(private readonly languageService: PoLanguageService) {\n    this.language = this.languageService?.getShortLanguage();\n    this.literals = poHttpInterceptorDetailLiteralsDefault[this.language];\n  }\n\n  ngOnInit(): void {\n    this.primaryAction = {\n      action: () => this.close(),\n      label: this.literals.closeButton\n    };\n  }\n\n  set detail(details: Array<PoHttpInterceptorDetail>) {\n    if (details && details.length) {\n      this.details = this.filterByValidDetails(details);\n    }\n\n    this.title = this.formatTitle(this.details);\n  }\n\n  close() {\n    this.modal.close();\n    this.closed.emit();\n  }\n\n  formatDetailItemTitle(detail) {\n    return detail.detailTitle\n      ? detail.detailTitle\n      : detail.code\n        ? `${detail.code} - ${detail.message}`\n        : detail.message;\n  }\n\n  open() {\n    this.modal.open();\n  }\n\n  typeColor(type: string): string {\n    return colors[type];\n  }\n\n  typeValue(type: string): string {\n    return poHttpInterceptorDetailLiteralsDefault[this.language][type] || type;\n  }\n\n  private addValidDetail(newDetails: Array<PoHttpInterceptorDetail>, detail: PoHttpInterceptorDetail) {\n    return detail.message ? newDetails.concat(this.getValidDetailProperties(detail)) : newDetails;\n  }\n\n  private getValidDetailProperties({ code, message, detailedMessage, type, detailTitle }: PoHttpInterceptorDetail) {\n    return detailTitle\n      ? { code, message, detailedMessage, type, detailTitle }\n      : { code, message, detailedMessage, type };\n  }\n\n  private filterByValidDetails(details: Array<PoHttpInterceptorDetail>) {\n    return details.reduce((newDetails, detail) => this.addValidDetail(newDetails, detail), []);\n  }\n\n  private formatTitle(details: Array<PoHttpInterceptorDetail>) {\n    return details.length > 1\n      ? `${this.literals.details} (${details.length})`\n      : details.length === 1\n        ? this.formatDetailItemTitle(details[0])\n        : this.literals.detail;\n  }\n}\n","<po-modal p-hide-close p-size=\"lg\" [p-primary-action]=\"primaryAction\" [p-title]=\"title\">\n  <div class=\"po-row\">\n    @if (details.length > 1) {\n      <po-accordion class=\"po-md-12 po-mt-1 po-mb-1\">\n        @for (detail of details; track detail) {\n          <po-accordion-item [p-label]=\"formatDetailItemTitle(detail)\">\n            <ng-template [ngTemplateOutlet]=\"body\" [ngTemplateOutletContext]=\"{ detail }\"></ng-template>\n          </po-accordion-item>\n        }\n      </po-accordion>\n    } @else {\n      <ng-container [ngTemplateOutlet]=\"body\" [ngTemplateOutletContext]=\"{ detail: details[0] || {} }\"></ng-container>\n    }\n  </div>\n</po-modal>\n\n<ng-template #body let-detail=\"detail\">\n  @if (detail.type) {\n    <div class=\"po-row po-mb-1\">\n      <po-tag [p-color]=\"typeColor(detail.type)\" [p-value]=\"typeValue(detail.type)\"></po-tag>\n    </div>\n  }\n\n  @if (detail.detailTitle) {\n    <p>\n      <strong>{{ detail.code }}</strong>\n    </p>\n  }\n\n  <div class=\"po-row\">\n    <p>{{ detail.detailedMessage }}</p>\n  </div>\n</ng-template>\n","export const poHttpInterceptorLiterals = {\n  pt: <any>{\n    help: 'Ajuda',\n    details: 'Detalhes',\n    serverNotResponse: 'Servidor não está respondendo'\n  },\n  en: <any>{\n    help: 'Help',\n    details: 'Details',\n    serverNotResponse: 'Server is not responding'\n  },\n  es: <any>{\n    help: 'Ayuda',\n    details: 'Detalles',\n    serverNotResponse: 'El servidor no está respondiendo'\n  },\n  ru: <any>{\n    help: 'Помогите',\n    details: 'Детали',\n    serverNotResponse: 'Сервер не отвечает'\n  }\n};\n","import { ComponentRef } from '@angular/core';\nimport {\n  HttpInterceptor,\n  HttpHandler,\n  HttpRequest,\n  HttpResponse,\n  HttpEvent,\n  HttpErrorResponse\n} from '@angular/common/http';\n\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { PoComponentInjectorService } from '../../services/po-component-injector/po-component-injector.service';\nimport { PoHttpInterceptorDetail } from './po-http-interceptor-detail/po-http-interceptor-detail.interface';\nimport { PoHttpInterceptorDetailComponent } from './po-http-interceptor-detail/po-http-interceptor-detail.component';\nimport { poHttpInterceptorLiterals } from './po-http-interceptor-literals';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\n\nconst NO_ERROR_HEADER_PARAM = 'X-PO-No-Error';\nconst NO_MESSAGE_HEADER_PARAM = 'X-PO-No-Message';\n\n/**\n * @description\n *\n * O *interceptor* tem a finalidade de exibir notificações com mensagens na tela, baseado nas respostas das requisições HTTP.\n *\n * Pode ser utilizado para dar feedback das ações do usuário como, por exemplo: erro de autorização, mensagens de regras de negócio,\n * atualizações de registros, erro quando o servidor estiver indisponível e entre outros.\n *\n * ## Configuração\n *\n * Para o correto funcionamento do interceptor `po-http-interceptor`, deve ser importado o `BrowserAnimationsModule` na\n * aplicação. Além disso, é necessário configurar o `HttpClient` para utilizar os interceptors registrados via Dependency\n * Injection (DI) por meio da função `provideHttpClient(withInterceptorsFromDi())`.\n *\n * ### 1) NgModule\n *\n * No módulo principal da aplicação (geralmente `AppModule`), importe o `BrowserAnimationsModule` e configure o `HttpClient`,\n * como no exemplo abaixo:\n *\n * ```\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n * import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\n * import { PoModule } from '@po-ui/ng-components';\n * ...\n *\n * @NgModule({\n *   imports: [\n *     BrowserModule,\n *     BrowserAnimationsModule,\n *     ...\n *     PoModule\n *   ],\n *   declarations: [\n *     AppComponent,\n *     ...\n *   ],\n *   providers: [\n *     provideHttpClient(withInterceptorsFromDi()),\n *     ...\n *   ],\n *   bootstrap: [AppComponent]\n * })\n * export class AppModule { }\n * ```\n *\n * Ao importar o módulo `PoModule` na aplicação, o `po-http-interceptor` é automaticamente configurado sem a necessidade\n * de qualquer configuração extra.\n *\n * ### 2) Standalone\n *\n * No arquivo contendo a configuração da aplicação (geralmente `src/app/app.config.ts`), adicione os providers e configure o `HttpClient`,\n * como no exemplo abaixo:\n *\n * ```\n * import { ApplicationConfig, importProvidersFrom } from '@angular/core';\n * import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\n * import { provideAnimations } from '@angular/platform-browser/animations';\n * import { PoHttpInterceptorModule } from '@po-ui/ng-components';\n *\n * export const appConfig: ApplicationConfig = {\n *   providers: [\n *     ...\n *     provideAnimations(),\n *     provideHttpClient(withInterceptorsFromDi()),\n *     importProvidersFrom([\n *       PoHttpInterceptorModule\n *     ]),\n *     ...\n *   ]\n * };\n * ```\n *\n * ## Como usar\n *\n * Ao realizar requisições utilize o `HttpClient`, conforme exemplo abaixo:\n *\n * ```\n * import { HttpClient } from '@angular/common/http';\n *\n * ...\n *\n * @Injectable({\n *   providedIn: 'root'\n * })\n * export class UserService {\n *\n *   constructor(private http: HttpClient) { }\n *\n *   getUsers() {\n *     return this.http.get('/api/users');\n *   }\n *\n *   ...\n *\n * }\n * ```\n *\n * Para exibir as noticações é necessário informar a mensagem no retorno da requisição. A estrutura da mensagem\n * é feita com base no status da resposta, conforme será apresentado nos próximos tópicos.\n *\n * ### Estrutura das mensagens\n *\n * #### Mensagens de sucesso `2xx`\n *\n * Para exibir mensagens ao retornar uma lista ou um item, deve-se incluir a propriedade `_messages` no objeto de retorno.\n * Por exemplo:\n * ```\n * {\n *   \"_messages\": [\n *     {\n *       \"type\": \"success\" || \"warning\" || \"error\" || \"information\" (será exibido a `tag` apenas se esta propriedade possuir valor),\n *       \"code\": \"título ou código da mensagem\",\n *       \"message\": \"texto da mensagem\",\n *       \"detailedMessage\": \"detalhamento da mensagem\"\n *     }\n *   ]\n * }\n * ```\n *\n * #### Mensagens de erro `4xx` ou `5xx`\n *\n * Ao retornar erro, o objeto não necessita ter `_messages`, deve-se retornar o objeto diretamente:\n *\n * ```\n * {\n *    \"code\": \"título ou código da mensagem\",\n *    \"message\": \"texto da mensagem\",\n *    \"detailedMessage\": \"detalhamento da mensagem\"\n * }\n * ```\n *\n * Também é possível informar as seguintes propriedades:\n *\n * - `helpUrl`: link para a documentação do erro;\n *    - Caso for informado, será exibido uma ação de \"Ajuda\" na notificação, para isso não deverá ter a propriedade `detailedMessage`.\n * - `type`: É possível informar `error`, `warning` e `information`, sendo `error` o valor padrão.\n * - `details`: Uma lista de objetos de mensagem (recursiva) com mais detalhes sobre a mensagem principal.\n * - `detailTitle`: caso for informado, será apresentado como título dos detalhes substituindo o padrão `code - message`\n *\n * > Veja o [Guia de implementação de APIs](guides/api) para mais detalhes sobre a estrutura das mensagens.\n *\n * ### Cabeçalho\n *\n * É possível dispensar a notificação para o usuário utilizando no cabeçalho da requisição os parâmetros listados abaixo com o valor\n * igual a `true`:\n *\n * - `X-PO-No-Message`: Não exibe notificações de erro e/ou sucesso.\n *\n * - `X-PO-No-Error`: Não mostra notificações de erro com códigos `4xx` e `5xx`.\n *\n * ```\n * ...\n *  const headers = { 'X-PO-No-Message': 'true' };\n *\n *  this.http.get(`/customers/1`, { headers: headers });\n * ...\n *\n * ```\n *\n * > Após a validação no *interceptor*, os parâmetros serão removidos do cabeçalho da requisição.\n *\n */\nexport abstract class PoHttpInterceptorBaseService implements HttpInterceptor {\n  notificationTypes = ['success', 'warning', 'error', 'information'];\n\n  literals: any;\n\n  private httpInterceptorDetailComponent: ComponentRef<PoHttpInterceptorDetailComponent> = undefined;\n\n  constructor(\n    private readonly componentInjector: PoComponentInjectorService,\n    private readonly notification: any,\n    private readonly languageService: PoLanguageService\n  ) {\n    this.literals = poHttpInterceptorLiterals[this.languageService?.getShortLanguage()];\n  }\n\n  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n    const cloneRequest = request.clone();\n\n    request = request && this.hasParameters(request) ? this.cloneRequestWithoutParameters(request) : request;\n\n    return next.handle(request).pipe(\n      tap(\n        (response: HttpEvent<any>) => {\n          if (response instanceof HttpResponse) {\n            this.processResponse(response, cloneRequest);\n          }\n        },\n        (error: HttpErrorResponse) => {\n          this.processErrorResponse(error, cloneRequest);\n        }\n      )\n    );\n  }\n\n  processResponse(response: HttpResponse<any>, request: HttpRequest<any>) {\n    const hasNoMessageParam = this.hasNoMessageParam(request);\n\n    if (!hasNoMessageParam && response.body && response.body._messages) {\n      const messages = response.body._messages;\n\n      if (messages instanceof Array) {\n        messages.forEach((message: PoHttpInterceptorDetail) => {\n          this.showNotification(message);\n        });\n      } else {\n        this.showNotification(messages);\n      }\n    }\n  }\n\n  processErrorResponse(response: HttpErrorResponse, request: HttpRequest<any>) {\n    const errorResponse =\n      response.status !== 0\n        ? response.error\n        : { code: 0, message: this.literals.serverNotResponse, detailedMessage: response.message };\n\n    const hasNoErrorParam = this.hasNoErrorParam(request);\n    const hasNoMessageParam = this.hasNoMessageParam(request);\n    const errorResponseValidTypes = this.notificationTypes.slice(1);\n\n    if (errorResponse && errorResponse.message && !hasNoErrorParam && !hasNoMessageParam) {\n      this.showNotification({\n        ...errorResponse,\n        type: errorResponseValidTypes.includes(errorResponse.type) ? errorResponse.type : 'error'\n      });\n    }\n  }\n\n  private cloneRequestWithoutParameters(request: HttpRequest<any>): HttpRequest<any> {\n    const headers = request.headers.delete(NO_ERROR_HEADER_PARAM).delete(NO_MESSAGE_HEADER_PARAM);\n\n    return request.clone({ headers });\n  }\n\n  private createModal(responseMessage: PoHttpInterceptorDetail) {\n    const details = responseMessage.details ? [responseMessage, ...responseMessage.details] : [responseMessage];\n\n    this.httpInterceptorDetailComponent = this.componentInjector.createComponentInApplication(\n      PoHttpInterceptorDetailComponent\n    );\n    this.httpInterceptorDetailComponent.instance.detail = details;\n    this.httpInterceptorDetailComponent.instance.closed.subscribe(() => this.destroyModal());\n    this.httpInterceptorDetailComponent.instance.open();\n  }\n\n  private destroyModal() {\n    if (this.httpInterceptorDetailComponent) {\n      this.componentInjector.destroyComponentInApplication(this.httpInterceptorDetailComponent);\n      this.httpInterceptorDetailComponent = undefined;\n    }\n  }\n\n  private hasMessage(responseMessage: PoHttpInterceptorDetail) {\n    const hasMessageProperties = responseMessage.message;\n\n    return responseMessage && hasMessageProperties;\n  }\n\n  private hasNoErrorParam(request: HttpRequest<any>): boolean {\n    const noErrorParam = request && request.headers.get(NO_ERROR_HEADER_PARAM);\n\n    return noErrorParam && noErrorParam.toString().toLocaleLowerCase() === 'true';\n  }\n\n  private hasNoMessageParam(request: HttpRequest<any>): boolean {\n    const noMessageParam = request && request.headers.get(NO_MESSAGE_HEADER_PARAM);\n\n    return noMessageParam && noMessageParam.toString().toLocaleLowerCase() === 'true';\n  }\n\n  private hasParameters(request: HttpRequest<any>) {\n    return request.headers.has(NO_ERROR_HEADER_PARAM) || request.headers.has(NO_MESSAGE_HEADER_PARAM);\n  }\n\n  private showNotification(response: any) {\n    if (!this.hasMessage(response)) {\n      return;\n    }\n\n    const typeNotification = this.notificationTypes.includes(response.type) ? response.type : 'information';\n\n    const notificationAction = this.generateNotificationAction(response);\n\n    this.notification[typeNotification]({\n      message: response.message,\n      actionLabel: notificationAction.label,\n      action: notificationAction.action\n    });\n  }\n\n  private generateDetailModal(responseMessage: any) {\n    return () => {\n      if (!this.httpInterceptorDetailComponent) {\n        this.createModal(responseMessage);\n      }\n    };\n  }\n\n  private generateNotificationAction(responseMessage: any) {\n    let notificationAction;\n    let notificationLabel;\n\n    if (responseMessage.helpUrl && !(responseMessage.detailedMessage || responseMessage.details)) {\n      notificationLabel = this.literals.help;\n      notificationAction = this.generateUrlHelpFunction(responseMessage.helpUrl);\n    } else if (responseMessage.detailedMessage || responseMessage.details) {\n      notificationLabel = this.literals.details;\n      notificationAction = this.generateDetailModal(responseMessage);\n    }\n    return { label: notificationLabel, action: notificationAction };\n  }\n\n  private generateUrlHelpFunction(helpUrl: string) {\n    return () => {\n      window.open(helpUrl, '_blank');\n    };\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { PoLanguageService } from '../../services/po-language/po-language.service';\n\nimport { PoComponentInjectorService } from '../../services/po-component-injector/po-component-injector.service';\nimport { PoNotificationService } from './../../services/po-notification/po-notification.service';\n\nimport { PoHttpInterceptorBaseService } from './po-http-interceptor-base.service';\n\n/**\n * @docsExtends PoHttpInterceptorBaseService\n *\n * @example\n * <example name='po-http-interceptor-labs' title='PO Http Interceptor Labs'>\n *  <file name='sample-po-http-interceptor-labs.component.ts'> </file>\n *  <file name='sample-po-http-interceptor-labs.component.html'> </file>\n * </example>\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoHttpInterceptorService extends PoHttpInterceptorBaseService {\n  constructor(\n    notification: PoNotificationService,\n    componentInjector: PoComponentInjectorService,\n    languageService: PoLanguageService\n  ) {\n    super(componentInjector, notification, languageService);\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\n\nimport { PoAccordionModule } from '../../components/po-accordion/po-accordion.module';\nimport { PoModalModule } from '../../components/po-modal/po-modal.module';\nimport { PoNotificationModule } from '../../services/po-notification/po-notification.module';\nimport { PoNotificationService } from './../../services/po-notification/po-notification.service';\nimport { PoTagModule } from '../../components/po-tag/po-tag.module';\n\nimport { PoHttpInterceptorDetailComponent } from './po-http-interceptor-detail/po-http-interceptor-detail.component';\nimport { PoHttpInterceptorService } from './po-http-interceptor.service';\n\n@NgModule({\n  imports: [CommonModule, PoAccordionModule, PoModalModule, PoNotificationModule, PoTagModule],\n  declarations: [PoHttpInterceptorDetailComponent],\n  providers: [\n    PoHttpInterceptorService,\n    PoNotificationService,\n    {\n      provide: HTTP_INTERCEPTORS,\n      useClass: PoHttpInterceptorService,\n      multi: true\n    }\n  ]\n})\nexport class PoHttpInterceptorModule {}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * @docsPrivate\n *\n * Serviço responsável por efetuar o controle de interação com o serviço de interceptor `PoHttpRequestInterceptorService`\n * gerenciando o seu estado.\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoHttpRequesControltService {\n  controlHttpRequest: Subject<number> = new Subject<number>();\n\n  getControlHttpRequest(): Observable<any> {\n    return this.controlHttpRequest.asObservable();\n  }\n\n  send(value: number = 0) {\n    this.controlHttpRequest.next(value);\n  }\n}\n","import { HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { ComponentRef, Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\n\nimport { PoComponentInjectorService } from '../../services/po-component-injector/po-component-injector.service';\nimport { PoLoadingOverlayComponent } from '../../components/po-loading/po-loading-overlay/po-loading-overlay.component';\nimport { PoHttpRequesControltService } from './po-http-request-control-service';\n\nconst noCountPendingRequests = 'X-PO-No-Count-Pending-Requests';\nconst screenLock = 'X-PO-Screen-Lock';\n\n/**\n * @description\n *\n * O serviço PO Http Request Interceptor realiza a contabilização de requisições pendentes na aplicação.\n *\n * Existe a possibilidade de não efetuar a contabilização das requisições pendentes, utilizando o parâmetro\n * `X-PO-No-Count-Pending-Requests`. Para isso deve ser informado no cabeçalho da requisição com o valor `'true'`,\n * por exemplo:\n *\n * ```\n * ...\n *  const headers = { 'X-PO-No-Count-Pending-Requests': 'true' };\n *\n *  this.http.get(`/customers/1`, { headers: headers });\n * ...\n *\n * ```\n * Para obter a quantidade de requisições pendentes, deve inscrever-se no método `getCountPendingRequests` do\n * serviço `PoHttpRequestInterceptorService`, com isso, ao realizar requisições utilizando `HttpClient`,\n * será retornado a quantidade de requisições pendentes.\n *\n * Também existe a possibildade de travar a tela e mostrar uma imagem de _loading_ durante o processamento de uma requisição\n * deve-se passar o parâmetro `X-PO-Screen-Lock` no cabeçalho da requisição com valor `'true'`.\n *\n * por exemplo:\n *\n * ```\n * ...\n *  const headers = { 'X-PO-Screen-Lock': 'true' };\n *\n *  this.http.get(`/customers/1`, { headers: headers });\n * ...\n *\n * ```\n * > Após a validação no interceptor, o parâmetro será removido do cabeçalho da requisição.\n *\n * ## Configuração\n *\n * É necessário configurar o `HttpClient` para utilizar os interceptors registrados via Dependency Injection (DI)\n * por meio da função `provideHttpClient(withInterceptorsFromDi())`.\n *\n * ### 1) NgModule\n *\n * ```\n * import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\n * import { PoModule } from '@po-ui/ng-components';\n * ...\n *\n * @NgModule({\n *   imports: [\n *     ...\n *     PoModule\n *   ],\n *   declarations: [\n *     AppComponent,\n *     ...\n *   ],\n *   providers: [\n *     provideHttpClient(withInterceptorsFromDi()),\n *     ...\n *   ],\n *   bootstrap: [AppComponent]\n * })\n * export class AppModule { }\n * ```\n *\n * Ao importar o módulo `PoModule` na aplicação, o `po-http-request-interceptor` é automaticamente configurado sem a necessidade\n * de qualquer configuração extra.\n *\n * ### 2) Standalone\n *\n * No arquivo contendo a configuração da aplicação (geralmente `src/app/app.config.ts`), adicione os providers e configure o `HttpClient`,\n * como no exemplo abaixo:\n *\n * ```\n * import { ApplicationConfig, importProvidersFrom } from '@angular/core';\n * import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\n * import { provideAnimations } from '@angular/platform-browser/animations';\n * import { PoHttpRequestModule } from '@po-ui/ng-components';\n *\n * export const appConfig: ApplicationConfig = {\n *   providers: [\n *     ...\n *     provideHttpClient(withInterceptorsFromDi()),\n *     importProvidersFrom([\n *       PoHttpRequestModule\n *     ]),\n *     ...\n *   ]\n * };\n * ```\n *\n * ## Como usar\n *\n * Segue abaixo um exemplo de uso:\n *\n * ```\n * import { HttpClient } from '@angular/common/http';\n *\n * ...\n *\n * @Injectable({\n *  providedIn: 'root'\n * })\n * export class CustomersService {\n *\n *  headers = { 'X-PO-No-Count-Pending-Requests': true, 'X-PO-Screen-Lock': 'true' }\n *  pendingRequests: number = 0;\n *  subscription: Subscription;\n *\n *  constructor(\n *    private http: HttpClient,\n *    private httpRequestInterceptor: PoHttpRequestInterceptorService) { }\n *\n *  ngOnDestroy(): void {\n *    this.subscription.unsubscribe();\n *  }\n *\n *  ngOnInit(): void {\n *    this.subscription = this.httpRequestInterceptor.getCountPendingRequests().subscribe(data => {\n *      this.pendingRequests = data;\n *    });\n *  }\n *\n *  getCustomers() {\n *    return this.http.get(`/customers/1`, { headers: headers });\n *  }\n *\n *  ...\n *\n * }\n * ```\n *\n * @example\n * <example name='po-http-request-interceptor-labs' title='PO Http Request Interceptor Labs'>\n *  <file name='sample-po-http-request-interceptor-labs.component.ts'> </file>\n *  <file name='sample-po-http-request-interceptor-labs.component.html'> </file>\n * </example>\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PoHttpRequestInterceptorService implements HttpInterceptor {\n  private loadingOverlayComponent: ComponentRef<PoLoadingOverlayComponent> = undefined;\n\n  private pendingRequests: number = 0;\n  private overlayRequests: number = 0;\n\n  constructor(\n    private readonly controlHttpRequest: PoHttpRequesControltService,\n    private readonly poComponentInjector: PoComponentInjectorService\n  ) {}\n\n  intercept(request: HttpRequest<any>, next: HttpHandler) {\n    const requestClone = request.clone();\n\n    request = this.requestCloneWithoutHeaderParam([noCountPendingRequests, screenLock], request);\n\n    this.setCountPendingRequests(true, requestClone);\n    this.setCountOverlayRequests(true, requestClone);\n\n    return next.handle(request).pipe(\n      finalize(() => {\n        this.setCountPendingRequests(false, requestClone);\n        this.setCountOverlayRequests(false, requestClone);\n      })\n    );\n  }\n\n  getCountPendingRequests(): Observable<any> {\n    return this.controlHttpRequest.getControlHttpRequest();\n  }\n\n  private buildLoading() {\n    if (!this.loadingOverlayComponent) {\n      this.loadingOverlayComponent = this.poComponentInjector.createComponentInApplication(PoLoadingOverlayComponent);\n      this.loadingOverlayComponent.instance.screenLock = true;\n      this.loadingOverlayComponent.instance.changeDetector.detectChanges();\n    }\n  }\n\n  private destroyLoading() {\n    if (this.loadingOverlayComponent) {\n      this.poComponentInjector.destroyComponentInApplication(this.loadingOverlayComponent);\n      this.loadingOverlayComponent = undefined;\n    }\n  }\n\n  private requestCloneWithoutHeaderParam(headersParams: Array<string>, request: HttpRequest<any>): HttpRequest<any> {\n    let isRequestClone = false;\n\n    headersParams.forEach(headerParam => {\n      if (request.headers.has(headerParam)) {\n        request = request.clone({ headers: request.headers.delete(headerParam) });\n        isRequestClone = true;\n      }\n    });\n\n    return isRequestClone ? request.clone({ headers: request.headers }) : request;\n  }\n\n  private setCountPendingRequests(isIncrement: boolean, request: HttpRequest<any>) {\n    const hasCountPendingRequestHeaderParam = request.headers.has(noCountPendingRequests);\n    const headerParam = request.headers.get(noCountPendingRequests);\n\n    if (hasCountPendingRequestHeaderParam && headerParam.toString().toLowerCase() === 'true') {\n      return;\n    }\n\n    this.pendingRequests += isIncrement ? 1 : -1;\n    this.controlHttpRequest.send(this.pendingRequests);\n  }\n\n  private setCountOverlayRequests(isIncrement: boolean, request: HttpRequest<any>) {\n    const hasOverlayRequestHeaderParam = request.headers.has(screenLock);\n\n    if (hasOverlayRequestHeaderParam) {\n      const headerParam = request.headers.get(screenLock);\n\n      if (headerParam.toString().toLowerCase() === 'false') {\n        return;\n      }\n\n      this.overlayRequests += isIncrement ? 1 : -1;\n      this.overlayRequests > 0 ? this.buildLoading() : this.destroyLoading();\n    }\n  }\n}\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\n\nimport { PoLoadingModule } from '../../components/po-loading/po-loading.module';\n\nimport { PoComponentInjectorService } from '../../services/po-component-injector/po-component-injector.service';\nimport { PoHttpRequesControltService } from './po-http-request-control-service';\nimport { PoHttpRequestInterceptorService } from './po-http-request-interceptor.service';\n\n@NgModule({\n  imports: [PoLoadingModule],\n  providers: [\n    PoHttpRequesControltService,\n    PoHttpRequestInterceptorService,\n    PoComponentInjectorService,\n    {\n      provide: HTTP_INTERCEPTORS,\n      useClass: PoHttpRequestInterceptorService,\n      multi: true\n    }\n  ]\n})\nexport class PoHttpRequestModule {}\n","import { NgModule } from '@angular/core';\n\nimport { PoHttpInterceptorModule } from './po-http-interceptor/po-http-interceptor.module';\nimport { PoHttpRequestModule } from './po-http-request/po-http-request.module';\n\n@NgModule({\n  declarations: [],\n  imports: [PoHttpInterceptorModule, PoHttpRequestModule],\n  exports: [PoHttpInterceptorModule, PoHttpRequestModule],\n  providers: [],\n  bootstrap: []\n})\nexport class PoInterceptorsModule {}\n","import { NgModule } from '@angular/core';\n\nimport { PoTimeModule } from '../pipes/po-time/po-time.module';\n\n@NgModule({\n  declarations: [],\n  imports: [PoTimeModule],\n  exports: [PoTimeModule],\n  providers: [],\n  bootstrap: []\n})\nexport class PoPipesModule {}\n","import { NgModule } from '@angular/core';\n\nimport { PoComponentsModule } from './components/components.module';\nimport { PoDirectivesModule } from './directives/directives.module';\nimport { PoGuardsModule } from './guards/guards.module';\nimport { PoInterceptorsModule } from './interceptors/interceptors.module';\nimport { PoPipesModule } from './pipes/pipes.module';\nimport { PoNotificationService } from './services/po-notification/po-notification.service';\nimport { PoServicesModule } from './services/services.module';\n\n@NgModule({\n  declarations: [],\n  imports: [\n    PoComponentsModule,\n    PoDirectivesModule,\n    PoGuardsModule,\n    PoInterceptorsModule,\n    PoPipesModule,\n    PoServicesModule\n  ],\n  exports: [\n    PoComponentsModule,\n    PoDirectivesModule,\n    PoInterceptorsModule,\n    PoGuardsModule,\n    PoPipesModule,\n    PoServicesModule\n  ],\n  providers: [PoNotificationService],\n  bootstrap: []\n})\nexport class PoModule {}\n","/**\n * @usedBy PoDynamicFormComponent\n *\n * @description\n *\n * Enum para definição do tipo de componente a ser renderizado.\n */\nexport enum ForceBooleanComponentEnum {\n  /** Força a renderização de um po-switch */\n  switch = 'switch',\n\n  /** Força a renderização de um po-checkbox */\n  checkbox = 'checkbox'\n}\n\n/**\n * @usedBy PoDynamicFormComponent\n *\n * @description\n *\n * Enum para definição do tipo de componente a ser renderizado.\n */\nexport enum ForceOptionComponentEnum {\n  /** Força a renderização de um po-radio-group independente da quantidade do opções */\n  radioGroup = 'radioGroup',\n\n  /** Força a renderização de um po-select independente da quantidade do opções */\n  select = 'select'\n}\n","import { PropertyDecoratorInterface } from './property-decorator.interface';\n\n/**\n * Função utilizada pela fábrica de decoradores para validar uma propriedade de uma classe durante\n * o ciclo de vida do Angular.\n *\n * @param decoratorProperties propriedades da interface PoPropertyDecoratorInterface.\n * @param lifecycleName clico de vida que se deseja executar com a validação.\n * @param callback função que será executada para validadar a propriedade.\n */\nexport function validatePropertyOnLifeCycle(\n  decoratorProperties: PropertyDecoratorInterface,\n  lifecycleName: string,\n  callback: Function\n) {\n  const { target, property } = decoratorProperties;\n  const emptyFunction = () => {};\n  const lifecycleFunctionClone: Function | null = target[lifecycleName] || emptyFunction;\n\n  Object.defineProperty(target, lifecycleName, {\n    value: function () {\n      callback.call(this, property, target);\n      lifecycleFunctionClone.call(this);\n    }\n  });\n}\n\n/**\n * Função utilizada pela fábrica de decoradores para alterar/manipular o valor de uma propriedade.\n *\n * > Este decorator irá criar os métodos get e set internamente. Portanto,\n * é importante **não** criar nomes privados para as propriedades utilizando\n * `$$__nomeDaPropriedade` ao utilizar este decorator, pois ela será sobrescrita pela propriedade privada\n * criada pelo decorator.\n *\n * @param decoratorProperties propriedades da interface PoPropertyDecoratorInterface.\n * @param decoratorName nome do decorator\n * @param callback função que será executada para alterar o valor da propriedade\n */\nexport function changeValueByCallback(\n  decoratorProperties: PropertyDecoratorInterface,\n  decoratorName: string,\n  callback: Function\n) {\n  const { target, property, originalDescriptor } = decoratorProperties;\n  const privatePropertyName = createPrivateProperty(target, property, decoratorName);\n\n  return {\n    get: getter(originalDescriptor, privatePropertyName),\n    set: setter(originalDescriptor, callback, privatePropertyName)\n  };\n}\nfunction setter(originalDescriptor, callback: Function, privatePropertyName: string) {\n  return function (value): void {\n    if (originalDescriptor && originalDescriptor.set) {\n      originalDescriptor.set.bind(this)(callback(value));\n    }\n\n    this[privatePropertyName] = callback(value);\n  };\n}\n\nfunction getter(originalDescriptor: TypedPropertyDescriptor<any>, privatePropName: string) {\n  return function () {\n    return originalDescriptor && originalDescriptor.get ? originalDescriptor.get.bind(this)() : this[privatePropName];\n  };\n}\n\nexport function createPrivateProperty(target: any, propertyName: string, decoratorName: string) {\n  const privatePropName = `$$__${propertyName}`;\n\n  if (Object.prototype.hasOwnProperty.call(target, privatePropName)) {\n    console.warn(`The prop \"${privatePropName}\" is already exist, it will be overrided by ${decoratorName} decorator.`);\n  }\n\n  Object.defineProperty(target, privatePropName, {\n    configurable: true,\n    writable: true\n  });\n\n  return privatePropName;\n}\n","import { convertToBoolean } from '../../utils/util';\nimport { changeValueByCallback } from '../utils-decorators';\nimport { PropertyDecoratorInterface } from '../property-decorator.interface';\n\n/**\n * Converte o valor de um campo de entrada para booleano.\n *\n * Forma de utilização:\n *\n * ```\n * @Input('p-loading') @InputBoolean() loading: boolean;\n * ```\n */\n\nexport function InputBoolean(): any {\n  return function (target: any, property: string, originalDescriptor?) {\n    const decoratorProperties: PropertyDecoratorInterface = { target, property, originalDescriptor };\n\n    return changeValueByCallback(decoratorProperties, 'InputBoolean', convertToBoolean);\n  };\n}\n","import { PropertyDecoratorInterface } from '../property-decorator.interface';\nimport { validatePropertyOnLifeCycle } from '../utils-decorators';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Verifica se uma entrada de um componente foi preenchida.\n *\n * Na ausência da propriedade o decorator irá disparar um warn no console\n * do navegador do usuário.\n *\n * > Esta verificação é feita apenas no ngOnInit do componente.\n *\n * Forma de utilização:\n * ```\n * @Input('p-label') @InputRequired() label: string;\n * ```\n *\n * Referência:\n * https://netbasal.com/how-to-add-angular-component-input-validation-b078a30af97f\n * https://medium.com/@abdelelmedny/angular-input-decorators-5d38089070aa\n */\n\nexport function InputRequired() {\n  return function (target: any, property: string) {\n    const decoratorProperties: PropertyDecoratorInterface = { target, property };\n    validatePropertyOnLifeCycle(decoratorProperties, 'ngOnInit', validateProperty);\n  };\n}\n\nfunction validateProperty(property: string, target: any) {\n  if (this[property] == null) {\n    console.warn(`${target.constructor.name}: ${property} is required, but was not provided`);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PoLanguageService","i1.PoTooltipControlPositionService","i2.PoIconComponent","i3.PoTooltipDirective","i1.PoTagComponent","i2.PoAccordionItemBodyComponent","i3.PoAccordionItemHeaderComponent","i4.PoAccordionManagerComponent","i1.PoIconComponent","i1","i1.PoLoadingIconComponent","i1.PoOverlayComponent","i2.PoLoadingComponent","i1.PoControlPositionService","i2","i3","i2.PoPopoverComponent","i3.PoLinkComponent","i4.PoDividerComponent","i2.PoTooltipDirective","i3.PoHelperComponent","i1.PoLabelComponent","i2.PoLabelComponent","i3.PoFieldContainerBottomComponent","i4.PoFieldContainerComponent","i5.PoHelperComponent","i6.PoTooltipDirective","i2.PoCheckboxComponent","i3.PoIconComponent","i3.PoLoadingOverlayComponent","i4.PoTagComponent","i5","i6.PoItemListComponent","i7.PoSearchListComponent","i1.PoListBoxComponent","i1.PoLinkComponent","i2.PoPopupComponent","i4.PoBreadcrumbFavoriteComponent","i1.PoButtonComponent","poMultiselectContainerPositionDefault","debounceTime","filter","i5.PoListBoxComponent","i6.PoHelperComponent","i7.PoIconComponent","i8.PoCleanComponent","i9.PoLoadingIconComponent","i1.PoDateService","i2.PoLanguageService","i2.PoButtonComponent","i3.PoComboComponent","i4.PoCalendarFooterComponent","i5.PoCalendarHeaderComponent","providers","i2.PoCalendarFooterComponent","i3.PoCalendarPresetListComponent","i4.PoCalendarWrapperComponent","i3.PoButtonComponent","i4.PoPopupComponent","i2.PoDisclaimerRemoveComponent","i1.PoFieldContainerBottomComponent","i2.PoFieldContainerComponent","i3.PoCheckboxComponent","i3.PoRadioComponent","poCalendarContentOffset","poCalendarPositionDefault","i6.PoCleanComponent","i7.PoLoadingIconComponent","i8.PoCalendarComponent","i9.PoButtonComponent","i10.PoHelperComponent","i2.PoFieldContainerBottomComponent","i3.PoFieldContainerComponent","i4","i5.PoCleanComponent","i6.PoLoadingIconComponent","i7.PoTimerComponent","i8.PoButtonComponent","i9.PoHelperComponent","i3.PoModalFooterComponent","i4.PoLabelComponent","i5.PoProgressBarComponent","i2.PoModalComponent","i1.PoComponentInjectorService","i3.PoDividerComponent","i2.PoTableIconComponent","i2.PoLinkComponent","i3.PoLabelComponent","i4.PoIconComponent","i4.PoTooltipDirective","i5.PoSwitchComponent","i4.PoPageSlideComponent","i5.PoTableListManagerComponent","i3.PoTableService","i1.PoCleanComponent","i3.PoLoadingIconComponent","i4.PoListBoxComponent","i5.PoDropdownComponent","i3.PoTimePipe","i1.PoColorPaletteService","i1.PoModalComponent","i2.PoTableSubtitleCircleComponent","i1.PoTableShowSubtitleComponent","i4.PoTableService","i7.PoButtonComponent","i8.PoContainerComponent","i9.PoLoadingOverlayComponent","i10.PoModalComponent","i11.PoPopupComponent","i12.PoTooltipDirective","i13.PoIconComponent","i14.PoCheckboxComponent","i15.PoRadioComponent","i16.PoSearchComponent","i17.PoTableColumnIconComponent","i18.PoTableColumnLabelComponent","i19.PoTableColumnLinkComponent","i20.PoTableColumnManagerComponent","i21.PoTableDetailComponent","i22.PoTableSubtitleCircleComponent","i23.PoTableSubtitleFooterComponent","i24.PoTableColumnFrozenDirective","i25.PoTimePipe","i4.PoButtonComponent","i6.PoCalendarComponent","i7.PoFieldContainerBottomComponent","i8.PoFieldContainerComponent","i2.PoCleanComponent","i5.PoLoadingIconComponent","i6.PoIconComponent","i7.PoHelperComponent","i4.PoLoadingIconComponent","i5.PoIconComponent","poLookupLiteralsDefault","switchMap","i2.PoDisclaimerGroupComponent","i4.PoModalComponent","i5.PoTableComponent","i2.PoLookupModalService","i3.PoLanguageService","i3.PoDisclaimerComponent","i4.PoFieldContainerBottomComponent","i5.PoFieldContainerComponent","i8.PoHelperComponent","i7.PoTagComponent","i9.PoMultiselectDropdownComponent","i1.PoRichTextService","i1.PoUploadService","i1.PoUploadDragDropAreaComponent","i1.PoUploadDragDropDirective","i2.PoUploadDragDropAreaOverlayComponent","i3.PoUploadDragDropAreaComponent","i1.PoI18nPipe","i3.PoContainerComponent","i6.PoModalComponent","i7.PoProgressComponent","i8.PoTooltipDirective","i9.PoIconComponent","i10.PoLinkComponent","i11.PoUploadDragDropComponent","i12.PoUploadFileRestrictionsComponent","i3.PoUploadComponent","i4.PoUrlComponent","i3.PoInputComponent","i1.PoButtonGroupComponent","i3.PoRichTextImageModalComponent","i4.PoRichTextLinkModalComponent","i3.PoRichTextBodyComponent","i4.PoRichTextToolbarComponent","i2.PoContainerComponent","i4.PoCheckboxGroupComponent","i5.PoRadioGroupComponent","i6.PoDatepickerComponent","i7.PoTimepickerComponent","i8.PoComboComponent","i9.PoDecimalComponent","i10.PoDatepickerRangeComponent","i11.PoInputComponent","i12.PoLookupComponent","i13.PoMultiselectComponent","i14.PoNumberComponent","i15.PoPasswordComponent","i16.PoSelectComponent","i17.PoTextareaComponent","i18.PoUploadComponent","i19.PoCheckboxComponent","i20.PoSwitchComponent","i21.PoDynamicContainerComponent","i1.PoDynamicFormLoadService","i2.PoDynamicFormValidationService","i4.PoDynamicFormFieldsComponent","map","catchError","i2.PoTimePipe","i3.PoDynamicViewService","i4.PoComboFilterService","i5.PoMultiselectFilterService","i1.PoContainerComponent","i2.PoDividerComponent","i3.PoInfoComponent","i5.PoImageComponent","i6.PoDynamicContainerComponent","i1.PoChartComponent","i2.PoGridCellActionComponent","i3.PoGridCellComponent","i4.PoGridHeadComponent","i6.PoPopupComponent","i7.PoCheckboxComponent","i1.PoLogoComponent","i2.PoMenuPanelItemComponent","i2.PoLoadingIconComponent","i3.PoBadgeComponent","i5.PoTooltipDirective","i1.PoMenuGlobalService","i2.PoMenuService","i2.PoLogoComponent","i4.PoMenuFilterComponent","i5.PoMenuItemComponent","i1.PoTooltipDirective","i1.PoPopupComponent","i1.PoNavbarActionComponent","i2.PoNavbarActionPopupComponent","i1.PoNavbarItemNavigationIconComponent","i1.PoNavbarItemComponent","poNavbarLiteralsDefault","i2.PoMenuComponent","i3.PoNavbarActionsComponent","i4.PoNavbarItemNavigationComponent","i5.PoNavbarItemsComponent","i6.PoNavbarLogoComponent","i1.PoBreadcrumbComponent","i2.PoDropdownComponent","i3.PoPageComponent","i4.PoPageContentComponent","i5.PoPageHeaderComponent","i2.PoPageComponent","i3.PoPageContentComponent","i4.PoPageHeaderComponent","i3.PoDisclaimerGroupComponent","i4.PoDropdownComponent","i6.PoPageComponent","i7.PoPageContentComponent","i8.PoPageHeaderComponent","i1.PoSlideCirclesComponent","i2.PoSlideControlComponent","i3.PoSlideItemComponent","i2.PoStepperCircleComponent","i3.PoStepperLabelComponent","i2.PoStepperStepComponent","i3.PoListBoxComponent","i1.PoTabButtonComponent","i2.PoTabDropdownComponent","i3.PoContextTabButtonComponent","i1.PoAvatarComponent","i1.PoToolbarActionsComponent","i2.PoToolbarNotificationComponent","i3.PoToolbarProfileComponent","i1.PoTreeViewItemHeaderComponent","i2.PoTreeViewItemComponent","i2.PoAvatarComponent","i4.PoContainerComponent","i5.PoPopupComponent","i6.PoTagComponent","i7.PoTooltipDirective","i4.PoBadgeComponent","i5.PoPopoverComponent","i7.PoPopupComponent","i4.PoPopoverComponent","delay","i4.PoMenuComponent","i5.PoMenuHeaderTemplateDirective","i6.PoHeaderbrandComponent","i7.PoHeaderMenuItemComponent","i8.PoHeaderToolsComponent","i9.PoHeaderCustomerComponent","i3.PoAccordionComponent","i4.PoAccordionItemComponent","i5.PoModalComponent","i1.PoNotificationService","i2.PoComponentInjectorService","i1.PoHttpRequesControltService"],"mappings":"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"}