@gipisistemas/ngx-core 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +169 -0
- package/animations/fly-in-out.animation.d.ts +24 -0
- package/animations/index.d.ts +2 -0
- package/animations/rotate.animation.d.ts +35 -0
- package/base/components/base-form-dialog.component.d.ts +47 -0
- package/base/components/base-form.component.d.ts +54 -0
- package/base/components/base-list-dialog.component.d.ts +69 -0
- package/base/components/base-list.component.d.ts +77 -0
- package/base/components/base.component.d.ts +62 -0
- package/base/index.d.ts +20 -0
- package/base/models/base-applied-filter.model.d.ts +8 -0
- package/base/models/base-authority.model.d.ts +6 -0
- package/base/models/base-filter.model.d.ts +16 -0
- package/base/models/base-form-dialog-data.model.d.ts +11 -0
- package/base/models/base-list-dialog-data.model.d.ts +10 -0
- package/base/models/base-menu.model.d.ts +25 -0
- package/base/models/base-page.model.d.ts +11 -0
- package/base/models/base-query-params.model.d.ts +12 -0
- package/base/models/base-sort.model.d.ts +8 -0
- package/base/models/base-token.model.d.ts +11 -0
- package/base/models/base-user.model.d.ts +18 -0
- package/base/models/base.model.d.ts +20 -0
- package/base/services/base-auth.service.d.ts +31 -0
- package/base/services/base-crud.service.d.ts +178 -0
- package/base/services/base.service.d.ts +97 -0
- package/components/action-row/action-row.component.d.ts +8 -0
- package/components/action-row/action-row.component.scss +26 -0
- package/components/action-row/index.d.ts +1 -0
- package/components/auto-focus/auto-focus.directive.d.ts +17 -0
- package/components/auto-focus/index.d.ts +1 -0
- package/components/avatar/avatar.component.d.ts +23 -0
- package/components/avatar/avatar.component.scss +155 -0
- package/components/avatar/index.d.ts +1 -0
- package/components/button/button.component.d.ts +74 -0
- package/components/button/button.component.scss +196 -0
- package/components/button/index.d.ts +1 -0
- package/components/button-group/button-group.component.d.ts +39 -0
- package/components/button-group/button-group.component.scss +89 -0
- package/components/button-group/index.d.ts +2 -0
- package/components/button-group/shared/button-group-option.model.d.ts +6 -0
- package/components/checkbox/checkbox.component.d.ts +74 -0
- package/components/checkbox/checkbox.component.scss +147 -0
- package/components/checkbox/index.d.ts +1 -0
- package/components/chips/chips.component.d.ts +46 -0
- package/components/chips/chips.component.scss +127 -0
- package/components/chips/index.d.ts +1 -0
- package/components/confirm-dialog/confirm-dialog.component.d.ts +17 -0
- package/components/confirm-dialog/confirm-dialog.component.scss +121 -0
- package/components/confirm-dialog/index.d.ts +4 -0
- package/components/confirm-dialog/shared/confirm-dialog-types.enum.d.ts +7 -0
- package/components/confirm-dialog/shared/confirm-dialog.model.d.ts +25 -0
- package/components/confirm-dialog/shared/confirm-dialog.service.d.ts +17 -0
- package/components/date-picker/date-picker.component.d.ts +55 -0
- package/components/date-picker/date-picker.component.scss +27 -0
- package/components/date-picker/index.d.ts +1 -0
- package/components/date-range-picker/date-range-picker.component.d.ts +66 -0
- package/components/date-range-picker/date-range-picker.component.scss +89 -0
- package/components/date-range-picker/index.d.ts +6 -0
- package/components/date-range-picker/shared/calendar/calendar.component.d.ts +27 -0
- package/components/date-range-picker/shared/calendar/calendar.component.scss +13 -0
- package/components/date-range-picker/shared/default-preset-date-options.d.ts +2 -0
- package/components/date-range-picker/shared/preset-key.enum.d.ts +11 -0
- package/components/date-range-picker/shared/range-selection-strategy.service.d.ts +11 -0
- package/components/date-range-picker/shared/select-date-option.interface.d.ts +32 -0
- package/components/date-range-picker/shared/selected-date-event.interface.d.ts +6 -0
- package/components/datetime-picker/datetime-picker.component.d.ts +68 -0
- package/components/datetime-picker/datetime-picker.component.scss +28 -0
- package/components/datetime-picker/index.d.ts +3 -0
- package/components/datetime-picker/shared/datetime-picker-intl.d.ts +29 -0
- package/components/datetime-picker/shared/moment-datetime-formats.d.ts +2 -0
- package/components/disable-auto-fill/disable-auto-fill.directive.d.ts +11 -0
- package/components/disable-auto-fill/index.d.ts +1 -0
- package/components/echarts/echarts.directive.d.ts +100 -0
- package/components/echarts/index.d.ts +4 -0
- package/components/echarts/shared/echarts-change-filter.d.ts +11 -0
- package/components/echarts/shared/echarts-config.interface.d.ts +5 -0
- package/components/echarts/shared/echarts-theme.type.d.ts +1 -0
- package/components/empty/empty.component.d.ts +13 -0
- package/components/empty/empty.component.scss +36 -0
- package/components/empty/index.d.ts +1 -0
- package/components/expansion-panel/expansion-panel.component.d.ts +36 -0
- package/components/expansion-panel/expansion-panel.component.scss +99 -0
- package/components/expansion-panel/index.d.ts +1 -0
- package/components/field-error/field-error.component.d.ts +95 -0
- package/components/field-error/field-error.component.scss +7 -0
- package/components/field-error/index.d.ts +2 -0
- package/components/field-error/shared/field-error-custom-validators.type.d.ts +2 -0
- package/components/flex-layout/flex-layout.directive.d.ts +44 -0
- package/components/flex-layout/index.d.ts +1 -0
- package/components/form-wrapper/form-wrapper.component.d.ts +15 -0
- package/components/form-wrapper/form-wrapper.component.scss +121 -0
- package/components/form-wrapper/index.d.ts +1 -0
- package/components/helpful-tip/helpful-tip.component.d.ts +11 -0
- package/components/helpful-tip/helpful-tip.component.scss +14 -0
- package/components/helpful-tip/index.d.ts +1 -0
- package/components/icon/icon.component.d.ts +61 -0
- package/components/icon/icon.component.scss +29 -0
- package/components/icon/index.d.ts +1 -0
- package/components/index.d.ts +46 -0
- package/components/input/index.d.ts +4 -0
- package/components/input/input.component.d.ts +81 -0
- package/components/input/input.component.scss +27 -0
- package/components/input/shared/input-prefix.directive.d.ts +5 -0
- package/components/input/shared/input-suffix.directive.d.ts +5 -0
- package/components/input/shared/input.directive.d.ts +26 -0
- package/components/input-currency/index.d.ts +1 -0
- package/components/input-currency/input-currency.component.d.ts +64 -0
- package/components/input-currency/input-currency.component.scss +27 -0
- package/components/input-group/index.d.ts +2 -0
- package/components/input-group/input-group-addon.component.d.ts +8 -0
- package/components/input-group/input-group.component.d.ts +14 -0
- package/components/input-group/input-group.component.scss +118 -0
- package/components/input-phone/index.d.ts +1 -0
- package/components/input-phone/input-phone.component.d.ts +62 -0
- package/components/input-phone/input-phone.component.scss +27 -0
- package/components/loading/index.d.ts +1 -0
- package/components/loading/loading.component.d.ts +13 -0
- package/components/loading/loading.component.scss +145 -0
- package/components/lozenge/index.d.ts +3 -0
- package/components/lozenge/lozenge.component.d.ts +20 -0
- package/components/lozenge/lozenge.component.scss +99 -0
- package/components/lozenge/shared/lozenge-fill.type.d.ts +4 -0
- package/components/lozenge/shared/lozenge-variant.type.d.ts +1 -0
- package/components/password-requeriments/index.d.ts +3 -0
- package/components/password-requeriments/password-requeriments.component.d.ts +27 -0
- package/components/password-requeriments/password-requeriments.component.scss +53 -0
- package/components/password-requeriments/shared/password-requeriments.interface.d.ts +5 -0
- package/components/password-requeriments/shared/password-validation.util.d.ts +71 -0
- package/components/popover/index.d.ts +4 -0
- package/components/popover/popover-target.directive.d.ts +8 -0
- package/components/popover/popover-trigger.directive.d.ts +135 -0
- package/components/popover/popover.component.d.ts +121 -0
- package/components/popover/popover.component.scss +26 -0
- package/components/popover/popover.module.d.ts +9 -0
- package/components/popover/shared/popover-animations.d.ts +14 -0
- package/components/popover/shared/popover-errors.d.ts +14 -0
- package/components/popover/shared/popover-types.type.d.ts +4 -0
- package/components/popover/shared/popover.interface.d.ts +24 -0
- package/components/radio-button/radio-button.component.scss +0 -0
- package/components/radio-group/index.d.ts +2 -0
- package/components/radio-group/radio-group.component.d.ts +57 -0
- package/components/radio-group/radio-group.component.scss +69 -0
- package/components/radio-group/shared/option-radio-group.type.d.ts +1 -0
- package/components/scroll-fade/index.d.ts +1 -0
- package/components/scroll-fade/scroll-fade.directive.d.ts +24 -0
- package/components/select/index.d.ts +4 -0
- package/components/select/select.component.d.ts +85 -0
- package/components/select/select.component.scss +52 -0
- package/components/select/shared/mat-select-media-tracker.d.ts +15 -0
- package/components/select/shared/mat-select-options-helper.d.ts +6 -0
- package/components/select/shared/mat-select-styles.scss +429 -0
- package/components/select/shared/mat-select.directive.d.ts +127 -0
- package/components/select-enum/index.d.ts +3 -0
- package/components/select-enum/select-enum.component.d.ts +65 -0
- package/components/select-enum/select-enum.component.scss +41 -0
- package/components/select-enum/shared/option-select-enum.type.d.ts +6 -0
- package/components/select-enum/shared/select-check-all.component.d.ts +15 -0
- package/components/sidenav/index.d.ts +1 -0
- package/components/sidenav/shared/sidenav-arrow-animations.d.ts +1 -0
- package/components/sidenav/sidenav.component.d.ts +47 -0
- package/components/sidenav/sidenav.component.scss +187 -0
- package/components/skeleton/index.d.ts +1 -0
- package/components/skeleton/skeleton.component.d.ts +37 -0
- package/components/skeleton/skeleton.component.scss +76 -0
- package/components/stepper/index.d.ts +2 -0
- package/components/stepper/step.component.d.ts +24 -0
- package/components/stepper/stepper.component.d.ts +20 -0
- package/components/stepper/stepper.component.scss +120 -0
- package/components/table/index.d.ts +9 -0
- package/components/table/shared/table-column-action-type.enum.d.ts +1 -0
- package/components/table/shared/table-column-align-type.enum.d.ts +6 -0
- package/components/table/shared/table-column-builder.model.d.ts +109 -0
- package/components/table/shared/table-column-condition.enum.d.ts +2 -0
- package/components/table/shared/table-column-partial.model.d.ts +6 -0
- package/components/table/shared/table-column.model.d.ts +80 -0
- package/components/table/shared/table-menu-item-context-builder.model.d.ts +61 -0
- package/components/table/shared/table-menu-item-context.model.d.ts +45 -0
- package/components/table/table.component.d.ts +184 -0
- package/components/table/table.component.scss +255 -0
- package/components/tabs/index.d.ts +2 -0
- package/components/tabs/tab-group.component.d.ts +24 -0
- package/components/tabs/tab.component.d.ts +30 -0
- package/components/tabs/tabs.component.scss +170 -0
- package/components/tag/index.d.ts +1 -0
- package/components/tag/tag.component.d.ts +26 -0
- package/components/tag/tag.component.scss +78 -0
- package/components/text-ellipsis/index.d.ts +1 -0
- package/components/text-ellipsis/text-ellipsis.directive.d.ts +15 -0
- package/components/textarea/index.d.ts +1 -0
- package/components/textarea/textarea.component.d.ts +72 -0
- package/components/textarea/textarea.component.scss +31 -0
- package/components/toast/index.d.ts +4 -0
- package/components/toast/shared/toast-types.enum.d.ts +7 -0
- package/components/toast/shared/toast.model.d.ts +7 -0
- package/components/toast/shared/toast.service.d.ts +12 -0
- package/components/toast/toast.component.d.ts +18 -0
- package/components/toast/toast.component.scss +135 -0
- package/components/toggle-switch/index.d.ts +1 -0
- package/components/toggle-switch/toggle-switch.component.d.ts +49 -0
- package/components/toggle-switch/toggle-switch.component.scss +105 -0
- package/components/toolbar/index.d.ts +1 -0
- package/components/toolbar/toolbar.component.d.ts +9 -0
- package/components/toolbar/toolbar.component.scss +22 -0
- package/components/top-nav/index.d.ts +1 -0
- package/components/top-nav/top-nav.component.d.ts +9 -0
- package/components/top-nav/top-nav.component.scss +18 -0
- package/components/tree-table/index.d.ts +8 -0
- package/components/tree-table/shared/tree-table-arrow-animations.d.ts +1 -0
- package/components/tree-table/shared/tree-table-column-builder.model.d.ts +55 -0
- package/components/tree-table/shared/tree-table-column-condition.enum.d.ts +2 -0
- package/components/tree-table/shared/tree-table-column-partial.model.d.ts +6 -0
- package/components/tree-table/shared/tree-table-column.model.d.ts +40 -0
- package/components/tree-table/shared/tree-table-menu-item-context-builder.model.d.ts +61 -0
- package/components/tree-table/shared/tree-table-menu-item-context.model.d.ts +45 -0
- package/components/tree-table/tree-table.component.d.ts +91 -0
- package/components/tree-table/tree-table.component.scss +216 -0
- package/components/user-profile/index.d.ts +1 -0
- package/components/user-profile/shared/user-profile-arrow-animations.d.ts +1 -0
- package/components/user-profile/user-profile.component.d.ts +28 -0
- package/components/user-profile/user-profile.component.scss +76 -0
- package/decorators/debounce.decorator.d.ts +33 -0
- package/decorators/index.d.ts +1 -0
- package/enums/index.d.ts +3 -0
- package/enums/menu-type.enum.d.ts +6 -0
- package/enums/sort-direction.enum.d.ts +5 -0
- package/enums/type-operation-dialog.enum.d.ts +12 -0
- package/fesm2022/gipisistemas-ngx-core.mjs +19132 -0
- package/fesm2022/gipisistemas-ngx-core.mjs.map +1 -0
- package/guards/auth.guard.d.ts +3 -0
- package/guards/index.d.ts +2 -0
- package/guards/public.guard.d.ts +3 -0
- package/index.d.ts +5 -0
- package/interceptors/auth.interceptor.d.ts +2 -0
- package/interceptors/error.interceptor.d.ts +13 -0
- package/interceptors/index.d.ts +2 -0
- package/interfaces/index.d.ts +1 -0
- package/interfaces/permissions.interface.d.ts +10 -0
- package/package.json +59 -0
- package/pipes/index.d.ts +1 -0
- package/pipes/money.pipe.d.ts +20 -0
- package/public-api.d.ts +13 -0
- package/services/cacheable.service.d.ts +41 -0
- package/services/dialog.service.d.ts +65 -0
- package/services/file-saver.service.d.ts +11 -0
- package/services/filter-indexed-db.service.d.ts +100 -0
- package/services/filter-url.service.d.ts +81 -0
- package/services/index.d.ts +8 -0
- package/services/moment-date-adapter.service.d.ts +8 -0
- package/services/native-date-adapter.service.d.ts +8 -0
- package/services/svg-register.service.d.ts +33 -0
- package/theming/_breakpoints.scss +20 -0
- package/theming/_index.scss +19 -0
- package/theming/_palettes.scss +112 -0
- package/theming/_theme.scss +189 -0
- package/theming/_utils.scss +1424 -0
- package/tokens/allowed-public-routes.token.d.ts +26 -0
- package/tokens/app-messages.token.d.ts +13 -0
- package/tokens/base-auth-service.token.d.ts +5 -0
- package/tokens/echarts-core.token.d.ts +4 -0
- package/tokens/index.d.ts +6 -0
- package/tokens/ngx-currency-options.token.d.ts +5 -0
- package/tokens/paginator-intl.token.d.ts +5 -0
- package/types/booleanish.type.d.ts +1 -0
- package/types/implicit-template.type.d.ts +4 -0
- package/types/index.d.ts +8 -0
- package/types/mixable-object.type.d.ts +1 -0
- package/types/nullable.type.d.ts +1 -0
- package/types/numberish.type.d.ts +1 -0
- package/types/page-event.type.d.ts +6 -0
- package/types/uuid.type.d.ts +1 -0
- package/types/void-listener.type.d.ts +1 -0
- package/utils/array.util.d.ts +13 -0
- package/utils/css.util.d.ts +12 -0
- package/utils/currency.util.d.ts +83 -0
- package/utils/date.util.d.ts +166 -0
- package/utils/document.util.d.ts +126 -0
- package/utils/email.util.d.ts +19 -0
- package/utils/index.d.ts +14 -0
- package/utils/number-to-words.util.d.ts +17 -0
- package/utils/number.util.d.ts +40 -0
- package/utils/object.util.d.ts +83 -0
- package/utils/phone.util.d.ts +103 -0
- package/utils/states.util.d.ts +182 -0
- package/utils/storage.util.d.ts +78 -0
- package/utils/string.util.d.ts +89 -0
- package/utils/uuid.util.d.ts +33 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gipisistemas-ngx-core.mjs","sources":["../../../projects/ngx-core/src/animations/fly-in-out.animation.ts","../../../projects/ngx-core/src/animations/rotate.animation.ts","../../../projects/ngx-core/src/utils/date.util.ts","../../../projects/ngx-core/src/utils/string.util.ts","../../../projects/ngx-core/src/utils/uuid.util.ts","../../../projects/ngx-core/src/utils/object.util.ts","../../../projects/ngx-core/src/components/confirm-dialog/confirm-dialog.component.ts","../../../projects/ngx-core/src/components/confirm-dialog/shared/confirm-dialog-types.enum.ts","../../../projects/ngx-core/src/components/confirm-dialog/shared/confirm-dialog.model.ts","../../../projects/ngx-core/src/components/confirm-dialog/shared/confirm-dialog.service.ts","../../../projects/ngx-core/src/components/toast/shared/toast-types.enum.ts","../../../projects/ngx-core/src/components/toast/shared/toast.model.ts","../../../projects/ngx-core/src/components/toast/toast.component.ts","../../../projects/ngx-core/src/components/toast/shared/toast.service.ts","../../../projects/ngx-core/src/tokens/app-messages.token.ts","../../../projects/ngx-core/src/tokens/base-auth-service.token.ts","../../../projects/ngx-core/src/utils/storage.util.ts","../../../projects/ngx-core/src/base/components/base.component.ts","../../../projects/ngx-core/src/utils/array.util.ts","../../../projects/ngx-core/src/services/cacheable.service.ts","../../../projects/ngx-core/src/base/services/base.service.ts","../../../projects/ngx-core/src/base/services/base-crud.service.ts","../../../projects/ngx-core/src/base/components/base-form-dialog.component.ts","../../../projects/ngx-core/src/base/components/base-form.component.ts","../../../projects/ngx-core/src/base/models/base-sort.model.ts","../../../projects/ngx-core/src/base/components/base-list-dialog.component.ts","../../../projects/ngx-core/src/base/components/base-list.component.ts","../../../projects/ngx-core/src/base/models/base-applied-filter.model.ts","../../../projects/ngx-core/src/base/models/base.model.ts","../../../projects/ngx-core/src/base/models/base-authority.model.ts","../../../projects/ngx-core/src/base/models/base-filter.model.ts","../../../projects/ngx-core/src/base/models/base-form-dialog-data.model.ts","../../../projects/ngx-core/src/base/models/base-list-dialog-data.model.ts","../../../projects/ngx-core/src/base/models/base-menu.model.ts","../../../projects/ngx-core/src/base/models/base-page.model.ts","../../../projects/ngx-core/src/base/models/base-query-params.model.ts","../../../projects/ngx-core/src/base/models/base-token.model.ts","../../../projects/ngx-core/src/base/models/base-user.model.ts","../../../projects/ngx-core/src/base/services/base-auth.service.ts","../../../projects/ngx-core/src/components/action-row/action-row.component.ts","../../../projects/ngx-core/src/components/auto-focus/auto-focus.directive.ts","../../../projects/ngx-core/src/components/avatar/avatar.component.ts","../../../projects/ngx-core/src/components/icon/icon.component.ts","../../../projects/ngx-core/src/components/loading/loading.component.ts","../../../projects/ngx-core/src/components/popover/shared/popover-errors.ts","../../../projects/ngx-core/src/components/popover/popover-trigger.directive.ts","../../../projects/ngx-core/src/components/popover/popover-target.directive.ts","../../../projects/ngx-core/src/components/popover/shared/popover-animations.ts","../../../projects/ngx-core/src/components/popover/popover.component.ts","../../../projects/ngx-core/src/components/popover/popover.module.ts","../../../projects/ngx-core/src/components/button/button.component.ts","../../../projects/ngx-core/src/components/helpful-tip/helpful-tip.component.ts","../../../projects/ngx-core/src/components/button-group/button-group.component.ts","../../../projects/ngx-core/src/components/button-group/shared/button-group-option.model.ts","../../../projects/ngx-core/src/components/checkbox/checkbox.component.ts","../../../projects/ngx-core/src/components/chips/chips.component.ts","../../../projects/ngx-core/src/services/moment-date-adapter.service.ts","../../../projects/ngx-core/src/components/field-error/field-error.component.ts","../../../projects/ngx-core/src/components/date-picker/date-picker.component.ts","../../../projects/ngx-core/src/services/native-date-adapter.service.ts","../../../projects/ngx-core/src/components/date-range-picker/shared/range-selection-strategy.service.ts","../../../projects/ngx-core/src/components/date-range-picker/shared/calendar/calendar.component.ts","../../../projects/ngx-core/src/components/date-range-picker/shared/preset-key.enum.ts","../../../projects/ngx-core/src/components/date-range-picker/shared/default-preset-date-options.ts","../../../projects/ngx-core/src/components/date-range-picker/date-range-picker.component.ts","../../../projects/ngx-core/src/components/date-range-picker/shared/select-date-option.interface.ts","../../../projects/ngx-core/src/components/datetime-picker/shared/datetime-picker-intl.ts","../../../projects/ngx-core/src/components/datetime-picker/shared/moment-datetime-formats.ts","../../../projects/ngx-core/src/components/datetime-picker/datetime-picker.component.ts","../../../projects/ngx-core/src/components/disable-auto-fill/disable-auto-fill.directive.ts","../../../projects/ngx-core/src/tokens/echarts-core.token.ts","../../../projects/ngx-core/src/components/echarts/shared/echarts-change-filter.ts","../../../projects/ngx-core/src/components/echarts/echarts.directive.ts","../../../projects/ngx-core/src/components/empty/empty.component.ts","../../../projects/ngx-core/src/components/expansion-panel/expansion-panel.component.ts","../../../projects/ngx-core/src/components/flex-layout/flex-layout.directive.ts","../../../projects/ngx-core/src/components/form-wrapper/form-wrapper.component.ts","../../../projects/ngx-core/src/components/input/input.component.ts","../../../projects/ngx-core/src/components/input/shared/input-prefix.directive.ts","../../../projects/ngx-core/src/components/input/shared/input-suffix.directive.ts","../../../projects/ngx-core/src/components/input/shared/input.directive.ts","../../../projects/ngx-core/src/tokens/ngx-currency-options.token.ts","../../../projects/ngx-core/src/components/input-currency/input-currency.component.ts","../../../projects/ngx-core/src/components/input-group/input-group-addon.component.ts","../../../projects/ngx-core/src/components/input-group/input-group.component.ts","../../../projects/ngx-core/src/utils/number.util.ts","../../../projects/ngx-core/src/utils/phone.util.ts","../../../projects/ngx-core/src/components/input-phone/input-phone.component.ts","../../../projects/ngx-core/src/components/lozenge/lozenge.component.ts","../../../projects/ngx-core/src/components/password-requeriments/shared/password-validation.util.ts","../../../projects/ngx-core/src/components/password-requeriments/password-requeriments.component.ts","../../../projects/ngx-core/src/components/password-requeriments/shared/password-requeriments.interface.ts","../../../projects/ngx-core/src/components/radio-group/radio-group.component.ts","../../../projects/ngx-core/src/components/scroll-fade/scroll-fade.directive.ts","../../../projects/ngx-core/src/components/select/shared/mat-select-options-helper.ts","../../../projects/ngx-core/src/utils/css.util.ts","../../../projects/ngx-core/src/utils/number-to-words.util.ts","../../../projects/ngx-core/src/utils/currency.util.ts","../../../projects/ngx-core/src/utils/states.util.ts","../../../projects/ngx-core/src/utils/document.util.ts","../../../projects/ngx-core/src/utils/email.util.ts","../../../projects/ngx-core/src/components/select/shared/mat-select-media-tracker.ts","../../../projects/ngx-core/src/components/select/shared/mat-select.directive.ts","../../../projects/ngx-core/src/components/select/select.component.ts","../../../projects/ngx-core/src/components/select-enum/select-enum.component.ts","../../../projects/ngx-core/src/components/select-enum/shared/select-check-all.component.ts","../../../projects/ngx-core/src/components/sidenav/shared/sidenav-arrow-animations.ts","../../../projects/ngx-core/src/components/sidenav/sidenav.component.ts","../../../projects/ngx-core/src/components/skeleton/skeleton.component.ts","../../../projects/ngx-core/src/components/stepper/step.component.ts","../../../projects/ngx-core/src/components/stepper/stepper.component.ts","../../../projects/ngx-core/src/components/table/shared/table-column.model.ts","../../../projects/ngx-core/src/components/table/shared/table-column-builder.model.ts","../../../projects/ngx-core/src/components/table/shared/table-menu-item-context.model.ts","../../../projects/ngx-core/src/components/table/shared/table-menu-item-context-builder.model.ts","../../../projects/ngx-core/src/tokens/paginator-intl.token.ts","../../../projects/ngx-core/src/components/text-ellipsis/text-ellipsis.directive.ts","../../../projects/ngx-core/src/components/table/table.component.ts","../../../projects/ngx-core/src/components/table/table.component.html","../../../projects/ngx-core/src/components/tabs/tab.component.ts","../../../projects/ngx-core/src/components/tabs/tab-group.component.ts","../../../projects/ngx-core/src/components/tag/tag.component.ts","../../../projects/ngx-core/src/components/textarea/textarea.component.ts","../../../projects/ngx-core/src/components/toggle-switch/toggle-switch.component.ts","../../../projects/ngx-core/src/components/toolbar/toolbar.component.ts","../../../projects/ngx-core/src/components/top-nav/top-nav.component.ts","../../../projects/ngx-core/src/components/tree-table/shared/tree-table-arrow-animations.ts","../../../projects/ngx-core/src/components/tree-table/shared/tree-table-column.model.ts","../../../projects/ngx-core/src/components/tree-table/shared/tree-table-column-builder.model.ts","../../../projects/ngx-core/src/components/tree-table/shared/tree-table-menu-item-context.model.ts","../../../projects/ngx-core/src/components/tree-table/shared/tree-table-menu-item-context-builder.model.ts","../../../projects/ngx-core/src/components/tree-table/tree-table.component.ts","../../../projects/ngx-core/src/components/tree-table/tree-table.component.html","../../../projects/ngx-core/src/components/user-profile/shared/user-profile-arrow-animations.ts","../../../projects/ngx-core/src/components/user-profile/user-profile.component.ts","../../../projects/ngx-core/src/decorators/debounce.decorator.ts","../../../projects/ngx-core/src/enums/menu-type.enum.ts","../../../projects/ngx-core/src/enums/sort-direction.enum.ts","../../../projects/ngx-core/src/enums/type-operation-dialog.enum.ts","../../../projects/ngx-core/src/guards/auth.guard.ts","../../../projects/ngx-core/src/tokens/allowed-public-routes.token.ts","../../../projects/ngx-core/src/guards/public.guard.ts","../../../projects/ngx-core/src/interceptors/auth.interceptor.ts","../../../projects/ngx-core/src/interceptors/error.interceptor.ts","../../../projects/ngx-core/src/pipes/money.pipe.ts","../../../projects/ngx-core/src/services/dialog.service.ts","../../../projects/ngx-core/src/services/file-saver.service.ts","../../../projects/ngx-core/src/services/filter-indexed-db.service.ts","../../../projects/ngx-core/src/services/filter-url.service.ts","../../../projects/ngx-core/src/services/svg-register.service.ts","../../../projects/ngx-core/src/gipisistemas-ngx-core.ts"],"sourcesContent":["import {\n animate,\n AnimationTriggerMetadata,\n group,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\n\n/**\n * Animação de entrada e saída com deslizamento horizontal e fade.\n *\n * @param triggerName - Nome do trigger da animação (padrão: 'flyInOut')\n * @returns AnimationTriggerMetadata\n *\n * @example\n *\n * - test.component.ts\n * ```typescript\n * animations: [\n * animationFlyInOut('myFly')\n * ]\n * ```\n *\n * - test.component.html\n * ```html\n * <div [@myFly]>\n * <!-- conteúdo -->\n * </div>\n * ```\n */\nexport function animationFlyInOut(triggerName: string = 'flyInOut'): AnimationTriggerMetadata {\n return trigger(triggerName ?? 'flyInOut', [\n state('in', style({ width: '*', transform: 'translateX(0)', opacity: 1 })),\n transition(':enter', [\n style({ width: 10, transform: 'translateX(50px)', opacity: 0 }),\n group([\n animate('0.3s 0.1s ease', style({ transform: 'translateX(0)', width: '*' })),\n animate('0.3s ease', style({ opacity: 1 })),\n ]),\n ]),\n transition(':leave', [\n group([\n animate('0.3s ease', style({ transform: 'translateX(50px)', width: 10 })),\n animate('0.3s 0.2s ease', style({ opacity: 0 })),\n ]),\n ]),\n ]);\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\n\ninterface iRotateAnimation {\n triggerName: string;\n startDeg: number;\n endDeg: number;\n timing: string;\n}\n\nexport type tRotateState = 'rotateStart' | 'rotateEnd';\n\n/**\n * Cria uma animação de rotação personalizada com estados 'rotateStart' e 'rotateEnd'.\n *\n * @param options - (Opcional) Objeto com as opções para customizar a animação:\n * - `triggerName`: nome do trigger (default: 'rotate')\n * - `startDeg`: ângulo inicial da rotação (default: 0)\n * - `endDeg`: ângulo final da rotação (default: -180)\n * - `timing`: string de tempo/animação CSS (default: '200ms cubic-bezier(0.25, 0.8, 0.25, 1)')\n *\n * @returns Um `AnimationTriggerMetadata` que pode ser usado no componente.\n *\n * @example\n * - test.component.ts\n * ```typescript\n * animations: [\n * animationRotate({ triggerName: 'rotateIcon', startDeg: 0, endDeg: 180 })\n * ]\n * ```\n *\n * - test.component.html\n * ```html\n * <div [@rotateIcon]=\"estado ? 'rotateEnd' : 'rotateStart'\">\n * <g-icon icon=\"keyboard_arrow_up\" />\n * </div>\n * ```\n */\nexport const rotateAnimation = (options?: Partial<iRotateAnimation>) => {\n const triggerName = options?.triggerName ?? 'rotate';\n const startDeg = options?.startDeg ?? 0;\n const endDeg = options?.endDeg ?? -180;\n const timing = options?.timing ?? '200ms cubic-bezier(0.25, 0.8, 0.25, 1)';\n\n return trigger(triggerName, [\n state('rotateStart', style({ transform: `rotate(${startDeg}deg)` })),\n state('rotateEnd', style({ transform: `rotate(${endDeg}deg)` })),\n transition('rotateStart <=> rotateEnd', [animate(timing)]),\n ]);\n};\n","import { MatDateFormats } from '@angular/material/core';\nimport * as moment from 'moment-timezone';\nimport { Nullable } from '../types/nullable.type';\n\nexport type tMonthsEnglish =\n | 'JANUARY'\n | 'FEBRUARY'\n | 'MARCH'\n | 'APRIL'\n | 'MAY'\n | 'JUNE'\n | 'JULY'\n | 'AUGUST'\n | 'SEPTEMBER'\n | 'OCTOBER'\n | 'NOVEMBER'\n | 'DECEMBER';\nexport type tWeekdaysEnglish =\n | 'SUNDAY'\n | 'MONDAY'\n | 'TUESDAY'\n | 'WEDNESDAY'\n | 'THURSDAY'\n | 'FRIDAY'\n | 'SATURDAY';\n\nexport class DateUtil {\n public static DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: 'DD/MM/YYYY',\n timeInput: 'LT',\n },\n display: {\n dateInput: 'DD/MM/YYYY',\n timeInput: 'LT',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n timeOptionLabel: 'LT',\n },\n };\n\n /** Mapeamento de traduções para meses e dias da semana */\n private static readonly _TRANSLATIONS: Record<string, string> = {\n // Meses completos\n JANUARY: 'Janeiro',\n FEBRUARY: 'Fevereiro',\n MARCH: 'Março',\n APRIL: 'Abril',\n MAY: 'Maio',\n JUNE: 'Junho',\n JULY: 'Julho',\n AUGUST: 'Agosto',\n SEPTEMBER: 'Setembro',\n OCTOBER: 'Outubro',\n NOVEMBER: 'Novembro',\n DECEMBER: 'Dezembro',\n\n // Dias da semana completos\n SUNDAY: 'Domingo',\n MONDAY: 'Segunda-feira',\n TUESDAY: 'Terça-feira',\n WEDNESDAY: 'Quarta-feira',\n THURSDAY: 'Quinta-feira',\n FRIDAY: 'Sexta-feira',\n SATURDAY: 'Sábado',\n };\n\n public static FORMAT_DATE: string = 'DD/MM/YYYY';\n public static FORMAT_DATE_TIME: string = 'DD/MM/YYYY HH:mm:ss';\n public static FORMAT_LONG_DATE: string = 'DD [de] MMMM [de] YYYY';\n public static FORMAT_LONG_DATE_TIME: string = 'DD [de] MMMM [de] YYYY [às] HH:mm:ss';\n public static MONTHS: string[] = [\n 'Jan',\n 'Fev',\n 'Mar',\n 'Abr',\n 'Mai',\n 'Jun',\n 'Jul',\n 'Ago',\n 'Set',\n 'Out',\n 'Nov',\n 'Dez',\n ];\n public static MONTHS_LONG: string[] = [\n 'Janeiro',\n 'Fevereiro',\n 'Março',\n 'Abril',\n 'Maio',\n 'Junho',\n 'Julho',\n 'Agosto',\n 'Setembro',\n 'Outubro',\n 'Novembro',\n 'Dezembro',\n ];\n public static MONTHS_ENGLISH: tMonthsEnglish[] = [\n 'JANUARY',\n 'FEBRUARY',\n 'MARCH',\n 'APRIL',\n 'MAY',\n 'JUNE',\n 'JULY',\n 'AUGUST',\n 'SEPTEMBER',\n 'OCTOBER',\n 'NOVEMBER',\n 'DECEMBER',\n ];\n public static WEEKDAYS: string[] = ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'];\n public static WEEKDAYS_LONG: string[] = [\n 'Domingo',\n 'Segunda-feira',\n 'Terça-feira',\n 'Quarta-feira',\n 'Quinta-feira',\n 'Sexta-feira',\n 'Sábado',\n ];\n public static WEEKDAYS_ENGLISH: tWeekdaysEnglish[] = [\n 'SUNDAY',\n 'MONDAY',\n 'TUESDAY',\n 'WEDNESDAY',\n 'THURSDAY',\n 'FRIDAY',\n 'SATURDAY',\n ];\n public static TIMEZONE: string = ''; //'America/Sao_Paulo';\n\n /**\n * Verifica se um valor é uma data válida.\n *\n * Um valor é considerado uma data válida se:\n * - O tipo interno do objeto for `[object Date]`\n * - O Moment.js reconhecer o valor como uma data válida\n *\n * @param inp O valor a ser verificado.\n * @returns `true` se o valor for uma data válida, caso contrário, `false`.\n */\n public static isDate(inp: Nullable<unknown>): boolean {\n return Object.prototype.toString.call(inp) === '[object Date]' && moment.isDate(inp);\n }\n\n /**\n * Verifica se um valor é considerado vazio.\n *\n * Um valor é considerado vazio se for:\n * - `null` ou `undefined`\n * - Uma string vazia `\"\"`\n * - Um número `NaN`\n * - Um array vazio `[]`\n * - Um objeto sem propriedades `{}`\n * - Um valor de data inválido\n *\n * @param inp O valor a ser verificado.\n * @returns `true` se o valor for vazio, caso contrário, `false`.\n */\n public static isEmpty(inp: unknown): inp is null | undefined {\n return (\n inp === null ||\n inp === undefined ||\n inp === '' ||\n (typeof inp === 'string' && inp.length === 0) ||\n (typeof inp === 'number' && Number.isNaN(inp)) ||\n (Array.isArray(inp) && inp.length === 0) ||\n (!this.isDate(inp) && typeof inp === 'object' && Object.keys(inp).length === 0)\n );\n }\n\n /**\n * Traduz o nome de um mês do inglês para o português.\n * @param month Nome do mês em inglês (ex: \"JANUARY\").\n * @returns Nome do mês traduzido ou o próprio valor se não encontrado.\n */\n public static translateMonth(month: tMonthsEnglish): string {\n return this._TRANSLATIONS[month.toUpperCase()] || month;\n }\n\n /**\n * Traduz o nome de um dia da semana do inglês para o português.\n * @param weekday Nome do dia da semana em inglês (ex: \"SUNDAY\").\n * @returns Nome do dia traduzido ou o próprio valor se não encontrado.\n */\n public static translateWeekday(weekday: string): string {\n return this._TRANSLATIONS[weekday.toUpperCase()] || weekday;\n }\n\n /**\n * Retorna a data e hora atual.\n * @returns A data e hora atual no fuso horário de `this.TIMEZONE`.\n */\n public static now(): Date {\n return moment.tz(this.TIMEZONE).toDate();\n }\n\n /**\n * Formata uma data, de acordo com o formato especificado.\n *\n * @param inp A data a ser formatada.\n * @param format O formato da data (padrão é `'DD/MM/YYYY'`).\n * @returns A data formatada como string.\n */\n public static format(inp: Date, format: string = this.FORMAT_DATE): string {\n return moment.tz(inp, this.TIMEZONE).format(format);\n }\n\n /**\n * Verifica se a primeira data é posterior à segunda data.\n *\n * @param inp1 A primeira data a ser comparada.\n * @param inp2 A segunda data a ser comparada.\n * @param granularity A unidade de tempo para a comparação ('date', 'minute', 'hour', etc.).\n * @returns `true` se a primeira data for posterior à segunda, caso contrário, `false`.\n */\n public static isAfter(\n inp1: Date,\n inp2: Date,\n granularity: moment.unitOfTime.StartOf = 'date',\n ): boolean {\n const moment1 = moment.tz(inp1, this.TIMEZONE);\n const moment2 = moment.tz(inp2, this.TIMEZONE);\n return moment1.isAfter(moment2, granularity);\n }\n\n /**\n * Verifica se a primeira data é anterior à segunda data.\n *\n * @param inp1 A primeira data a ser comparada.\n * @param inp2 A segunda data a ser comparada.\n * @param granularity A unidade de tempo para a comparação ('date', 'minute', 'hour', etc.).\n * @returns `true` se a primeira data for anterior à segunda, caso contrário, `false`.\n */\n public static isBefore(\n inp1: Date,\n inp2: Date,\n granularity: moment.unitOfTime.StartOf = 'date',\n ): boolean {\n const moment1 = moment.tz(inp1, this.TIMEZONE);\n const moment2 = moment.tz(inp2, this.TIMEZONE);\n return moment1.isBefore(moment2, granularity);\n }\n\n /**\n * Verifica se duas datas são iguais.\n *\n * @param inp1 A primeira data a ser comparada.\n * @param inp2 A segunda data a ser comparada.\n * @param granularity A unidade de tempo para a comparação ('date', 'minute', 'hour', etc.).\n * @returns `true` se as duas datas forem iguais, caso contrário, `false`.\n */\n public static isEqual(\n inp1: Date,\n inp2: Date,\n granularity: moment.unitOfTime.StartOf = 'date',\n ): boolean {\n const moment1 = moment.tz(inp1, this.TIMEZONE);\n const moment2 = moment.tz(inp2, this.TIMEZONE);\n return moment1.isSame(moment2, granularity);\n }\n\n /**\n * Verifica se a primeira data é igual ou posterior à segunda data.\n *\n * @param inp1 A primeira data a ser comparada.\n * @param inp2 A segunda data a ser comparada.\n * @param granularity A unidade de tempo para a comparação ('date', 'minute', 'hour', etc.).\n * @returns `true` se a primeira data for igual ou posterior à segunda, caso contrário, `false`.\n */\n public static isEqualOrAfter(\n inp1: Date,\n inp2: Date,\n granularity: moment.unitOfTime.StartOf = 'date',\n ): boolean {\n const moment1 = moment.tz(inp1, this.TIMEZONE);\n const moment2 = moment.tz(inp2, this.TIMEZONE);\n return moment1.isSameOrAfter(moment2, granularity);\n }\n\n /**\n * Verifica se a primeira data é igual ou anterior à segunda data.\n *\n * @param inp1 A primeira data a ser comparada.\n * @param inp2 A segunda data a ser comparada.\n * @param granularity A unidade de tempo para a comparação ('date', 'minute', 'hour', etc.).\n * @returns `true` se a primeira data for igual ou anterior à segunda, caso contrário, `false`.\n */\n public static isEqualOrBefore(\n inp1: Date,\n inp2: Date,\n granularity: moment.unitOfTime.StartOf = 'date',\n ): boolean {\n const moment1 = moment.tz(inp1, this.TIMEZONE);\n const moment2 = moment.tz(inp2, this.TIMEZONE);\n return moment1.isSameOrBefore(moment2, granularity);\n }\n\n /**\n * Verifica se uma data está entre duas outras datas.\n *\n * @param inp A data a ser verificada.\n * @param startDate A data de início do intervalo.\n * @param endDate A data de fim do intervalo.\n * @param granularity A unidade de tempo para a comparação ('date', 'minute', 'hour', etc.).\n * @returns `true` se a data estiver entre as duas outras, caso contrário, `false`.\n */\n public static isBetween(\n inp: Date,\n startDate: Date,\n endDate: Date,\n granularity: moment.unitOfTime.StartOf = 'date',\n ): boolean {\n const moment1 = moment.tz(inp, this.TIMEZONE);\n const momentStart = moment.tz(startDate, this.TIMEZONE);\n const momentEnd = moment.tz(endDate, this.TIMEZONE);\n return moment1.isBetween(momentStart, momentEnd, granularity);\n }\n\n /**\n * Verifica se uma data é válida.\n *\n * @param inp A data a ser verificada.\n * @returns `true` se a data for válida, caso contrário, `false`.\n */\n public static isValid(inp: Date): boolean {\n return moment.tz(inp, this.TIMEZONE).isValid();\n }\n\n /**\n * Adiciona uma quantidade de tempo a uma data.\n *\n * @param inp A data original.\n * @param amount A quantidade de tempo a ser adicionada (pode ser um número).\n * @param unit A unidade de tempo (ex: 'day', 'month', 'year').\n * @returns A nova data após a adição.\n */\n public static add(\n inp: Date,\n amount: moment.DurationInputArg1,\n unit: moment.DurationInputArg2 = 'day',\n ): Date {\n const newDate = moment.tz(inp, this.TIMEZONE).add(amount, unit);\n return moment.tz(newDate, this.TIMEZONE).toDate();\n }\n\n /**\n * Subtrai uma quantidade de tempo de uma data.\n *\n * @param inp A data original.\n * @param amount A quantidade de tempo a ser subtraída.\n * @param unit A unidade de tempo (ex: 'day', 'month', 'year').\n * @returns A nova data após a subtração.\n */\n public static subtract(\n inp: Date,\n amount: moment.DurationInputArg1,\n unit: moment.DurationInputArg2 = 'day',\n ): Date {\n const newDate = moment.tz(inp, this.TIMEZONE).subtract(amount, unit);\n return moment.tz(newDate, this.TIMEZONE).toDate();\n }\n\n /**\n * Clona uma data.\n *\n * @param inp A data a ser clonada.\n * @returns Uma nova instância de data, clonada da original.\n */\n public static clone(inp: Date): Date {\n const newDate = moment.tz(inp, this.TIMEZONE).clone();\n return moment.tz(newDate, this.TIMEZONE).toDate();\n }\n\n /**\n * Remove a parte de tempo de uma data, deixando apenas a parte da data (dia, mês, ano).\n *\n * @param inp A data a ser modificada.\n * @returns A data com a parte do tempo zerado (ex: `'01/01/2000T00:00:00-03:00'`).\n */\n public static removeTime(inp: Date): Date {\n const newDate = moment.tz(inp, this.TIMEZONE).startOf('day');\n return moment.tz(newDate, this.TIMEZONE).toDate();\n }\n}\n","import { DateUtil } from './date.util';\n\nconst CAPITALIZE_PREPOSITIONS = [\n 'a',\n 'com',\n 'da',\n 'das',\n 'de',\n 'do',\n 'dos',\n 'e',\n 'em',\n 'na',\n 'nas',\n 'no',\n 'nos',\n 'o',\n 'por',\n 'sem',\n];\nconst CAPITALIZE_ACRONYMS = ['cia', 'cnpj', 'cpf', 'ltda', 'me', 'rg'];\n\nexport class StringUtil {\n /**\n * Verifica se um valor é considerado vazio.\n *\n * Um valor é considerado vazio se for:\n * - `null` ou `undefined`\n * - Uma string vazia `\"\"`\n * - Um número `NaN`\n * - Um array vazio `[]`\n * - Um objeto sem propriedades `{}`\n * - Um valor de data inválido\n *\n * @param inp O valor a ser verificado.\n * @returns `true` se o valor for vazio, caso contrário, `false`.\n */\n public static isEmpty(inp: unknown): inp is null | undefined {\n return (\n inp === null ||\n inp === undefined ||\n inp === '' ||\n (typeof inp === 'string' && inp.length === 0) ||\n (typeof inp === 'number' && Number.isNaN(inp)) ||\n (Array.isArray(inp) && inp.length === 0) ||\n (!DateUtil.isDate(inp) && typeof inp === 'object' && Object.keys(inp).length === 0)\n );\n }\n\n /**\n * Remove os acentos (diacríticos) de uma string.\n * A função tenta usar a normalização Unicode Property Escapes para uma remoção mais eficiente de acentos.\n * Caso o ambiente não suporte, utiliza a normalização NFD e remove os acentos de forma tradicional.\n *\n * @param inp A string da qual os acentos serão removidos.\n * @returns A string sem os acentos.\n *\n * @example\n * removeAccents('café'); // Retorna 'cafe'.\n * removeAccents('ação'); // Retorna 'acao'.\n */\n public static removeAccents(inp: string): string {\n if (this.isEmpty(inp)) {\n return inp;\n }\n\n // Verifica se o ambiente suporta Unicode Property Escapes\n try {\n return inp.normalize('NFKD').replace(/\\p{Diacritic}/gu, '');\n } catch (_) {\n return inp.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n }\n }\n\n /**\n * Trunca uma string para um tamanho máximo especificado e adiciona um sufixo (por padrão, '...') caso o limite seja ultrapassado.\n *\n * @param inp A string que será truncada.\n * @param maxLength O tamanho máximo da string antes do truncamento. (padrão é 50)\n * @param suffix O sufixo que será adicionado após o truncamento. (padrão é '...').\n * @returns A string truncada com o sufixo, se necessário.\n *\n * @example\n * truncateWithSuffix('Lorem ipsum dolor sit amet', 5); // Retorna 'Lorem...'.\n * truncateWithSuffix('Short text', 20); // Retorna 'Short text' (não há truncamento).\n */\n public static truncateWithSuffix(\n inp: string,\n maxLength: number = 50,\n suffix: string = '...',\n ): string {\n if (this.isEmpty(inp) || inp.length <= maxLength) {\n return inp;\n }\n return inp.slice(0, maxLength) + suffix;\n }\n\n /**\n * Divide uma string em substrings de um tamanho máximo especificado.\n * A função cria um array com as substrings resultantes da divisão da string original.\n *\n * @param inp A string a ser dividida.\n * @param split O tamanho máximo de cada substring.\n * @returns Um array com as substrings divididas.\n *\n * @example\n * split('abcdefg', 3); // Retorna ['abc', 'def', 'g'].\n * split('hello', 2); // Retorna ['he', 'll', 'o'].\n */\n public static split(inp: string, split: number): string[] {\n if (this.isEmpty(inp)) {\n return [];\n }\n return inp.match(new RegExp(`.{1,${split}}`, 'g')) || [];\n }\n\n /**\n * A função capitaliza todas as palavras da string, exceto preposições e acrônimos.\n * @param inp A string a ser capitalizada.\n * @param lowerCaseWords Uma lista de preposições que devem ser mantidas em minúsculas.\n * @param upperCaseWords Uma lista de acrônimos que devem ser mantidos em maiúsculas.\n * @returns A string com as palavras capitalizadas.\n * @example\n * capitalize('lorem ipsum dolor sit amet'); // Retorna 'Lorem Ipsum Dolor Sit Amet'.\n * capitalize('lorem ipsum cia dolor sit amet'); // Retorna 'Lorem Ipsum cia Dolor Sit Amet'.\n * capitalize('lorem ipsum cia dolor sit amet', ['cia'], ['cia']); // Retorna 'Lorem Ipsum cia Dolor Sit Amet'.\n */\n public static capitalize(\n inp: string,\n lowerCaseWords: string[] = CAPITALIZE_PREPOSITIONS,\n upperCaseWords: string[] = CAPITALIZE_ACRONYMS,\n ): string {\n return inp\n .split(' ')\n .filter((word) => !!word)\n .map((word, index) => {\n const lowerCaseWord = word.toLocaleLowerCase();\n if (index > 0 && lowerCaseWords.indexOf(lowerCaseWord) !== -1) return lowerCaseWord;\n const upperCaseWord = word.toLocaleUpperCase();\n if (upperCaseWords.indexOf(upperCaseWord) !== -1) return upperCaseWord;\n return upperCaseWord.charAt(0) + lowerCaseWord.substr(1);\n })\n .join(' ');\n }\n\n /**\n * Gera uma string composta por espaços Unicode repetidos, conforme a quantidade e tipo especificado.\n *\n * #### Tipos de espaço Unicode:\n * - \\u00A0 → Non-breaking space (como espaço normal, mas não quebra linha)\n * - \\u2002 → En space (meio espaço)\n * - \\u2003 → Em space (espaço largo) [padrão]\n * - \\u2009 → Thin space (espaço fino)\n *\n * @param quantity Quantidade de vezes que o caractere de espaço será repetido. Padrão: 1\n * @param space Unicode do tipo de espaço. Padrão: '\\u2003' (Em space)\n * @returns Uma string com os espaços desejados.\n *\n * @example\n * ```ts\n * unicodeSpacer(); // '\\u2003'\n * unicodeSpacer(3); // '\\\\u2003\\\\u2003\\\\u2003'\n * unicodeSpacer(2, '\\u2009'); // '\\\\u2009\\\\u2009'\n * ```\n */\n public static spacer(\n quantity: number = 1,\n space: '\\u00A0' | '\\u2002' | '\\u2003' | '\\u2009' = '\\u2003',\n ): string {\n return space.repeat(quantity);\n }\n}\n","import { GIPIUuid } from '../types/uuid.type';\nimport { DateUtil } from './date.util';\nimport { ObjectUtil } from './object.util';\nimport { StringUtil } from './string.util';\n\nexport class UUIDUtil {\n\n /**\n * Valida se o identificador (UUID) fornecido é válido.\n *\n * @param id O identificador (UUID) a ser validado.\n * @returns Um valor booleano indicando se o identificador é válido:\n * - Retorna `false` se o identificador for vazio, nulo ou inválido.\n * - Retorna `true` se o identificador for um número positivo ou uma string não vazia.\n *\n * @example\n * isValid('123e4567-e89b-12d3-a456-426614174000'); // true\n * isValid(12345); // true\n * isValid(''); // false\n * isValid(null); // false\n */\n public static isValid(id: GIPIUuid): boolean {\n if (ObjectUtil.isEmpty(id)) {\n return false;\n }\n if (typeof id === 'number') {\n return (id > 0);\n } else if (typeof id === 'string') {\n return !StringUtil.isEmpty(id) && id.length > 0;\n }\n return false;\n }\n\n /**\n * Verifica se um valor é considerado vazio.\n *\n * Um valor é considerado vazio se for:\n * - `null` ou `undefined`\n * - Uma string vazia `\"\"`\n * - Um número `NaN`\n * - Um array vazio `[]`\n * - Um objeto sem propriedades `{}`\n * - Um valor de data inválido\n *\n * @param inp O valor a ser verificado.\n * @returns `true` se o valor for vazio, caso contrário, `false`.\n */\n public static isEmpty(inp: unknown): inp is null | undefined {\n return (\n inp === null ||\n inp === undefined ||\n inp === '' ||\n (typeof inp === 'string' && inp.length === 0) ||\n (typeof inp === 'number' && Number.isNaN(inp)) ||\n (Array.isArray(inp) && inp.length === 0) ||\n (!DateUtil.isDate(inp) && typeof inp === 'object' && Object.keys(inp).length === 0)\n );\n }\n\n}\n","import type { GIPIUuid } from '../types';\nimport { Nullable } from '../types/nullable.type';\nimport { DateUtil } from './date.util';\nimport { StringUtil } from './string.util';\nimport { UUIDUtil } from './uuid.util';\n\nexport class ObjectUtil {\n /**\n * Verifica se o valor fornecido é um objeto.\n *\n * @param inp O valor a ser verificado.\n * @param empty Define se o objeto vazio será considerado válido. Se `true`, um objeto vazio será considerado um objeto válido.\n * @returns `true` se o valor for um objeto (não nulo e não um array), caso contrário, `false`.\n */\n public static isObject<T = unknown>(inp: T, empty: boolean = true): boolean {\n return (\n typeof inp === 'object' &&\n !Array.isArray(inp) &&\n inp != null &&\n (empty || Object.keys(inp).length !== 0)\n );\n }\n\n /**\n * Verifica se um valor é considerado vazio.\n *\n * Um valor é considerado vazio se for:\n * - `null` ou `undefined`\n * - Uma string vazia `\"\"`\n * - Um número `NaN`\n * - Um array vazio `[]`\n * - Um objeto sem propriedades `{}`\n * - Um valor de data inválido\n *\n * @param inp O valor a ser verificado.\n * @returns `true` se o valor for vazio, caso contrário, `false`.\n */\n public static isEmpty(inp: unknown): inp is null | undefined {\n return (\n inp === null ||\n inp === undefined ||\n inp === '' ||\n (typeof inp === 'string' && inp.length === 0) ||\n (typeof inp === 'number' && Number.isNaN(inp)) ||\n (Array.isArray(inp) && inp.length === 0) ||\n (!DateUtil.isDate(inp) && typeof inp === 'object' && Object.keys(inp).length === 0)\n );\n }\n\n public static isNewModel(inp: unknown): inp is null | undefined {\n if (ObjectUtil.isEmpty(inp)) {\n return false;\n }\n\n let id: GIPIUuid = null;\n if (typeof inp === 'object' && 'id' in inp!) {\n id = inp['id'] as GIPIUuid;\n }\n return !UUIDUtil.isValid(id);\n }\n\n /**\n * Mescla dois objetos ou dois valores (strings ou objetos). Caso ambos sejam objetos,\n * eles serão combinados. Se forem strings, elas serão concatenadas. Se algum dos valores\n * for `undefined`, o outro valor será retornado.\n *\n * @param obj1 O primeiro objeto ou valor.\n * @param obj2 O segundo objeto ou valor.\n * @returns O resultado da mesclagem ou o valor que não estiver (`undefined`, `null`...).\n *\n * @example\n * merge({ name: 'John' }, { age: 30 }); // Retorna { name: 'John', age: 30 }.\n * merge('Hello', 'World'); // Retorna 'Hello World'.\n * merge(undefined, 'Fallback'); // Retorna 'Fallback'.\n */\n public static merge<T1 = unknown, T2 = unknown>(\n obj1?: Nullable<T1>,\n obj2?: Nullable<T2>,\n ): Nullable<unknown> {\n if (obj1 == undefined && obj2 == undefined) {\n return undefined;\n } else if (\n (obj1 == undefined || typeof obj1 === 'object') &&\n (obj2 == undefined || typeof obj2 === 'object')\n ) {\n return { ...(obj1 || {}), ...(obj2 || {}) };\n } else if (\n (obj1 == undefined || typeof obj1 === 'string') &&\n (obj2 == undefined || typeof obj2 === 'string')\n ) {\n return [obj1 || '', obj2 || ''].join(' ');\n }\n\n return obj2 || obj1;\n }\n\n /**\n * Verifica se um objeto possui uma propriedade específica.\n *\n * @param obj Objeto a ser verificado.\n * @param property Nome da propriedade a ser verificada.\n * @returns `true` se a propriedade existir no objeto, caso contrário, `false`.\n *\n * @example\n * const user = { name: 'Alice', age: 25 };\n * console.log(StorageUtil.hasPropertyInObj(user, 'name')); // true\n * console.log(StorageUtil.hasPropertyInObj(user, 'email')); // false\n */\n public static hasPropertyInObj<T = unknown>(obj: T, property: string): boolean {\n if (ObjectUtil.isEmpty(obj) || StringUtil.isEmpty(property)) {\n return false;\n }\n return Object.prototype.hasOwnProperty.call(obj, property);\n }\n\n /**\n * Realiza uma clonagem profunda do objeto fornecido.\n *\n * @param obj - Objeto a ser clonado.\n * @returns Uma cópia profunda do objeto ou `null` se o objeto for vazio.\n *\n * Utiliza `structuredClone`, garantindo uma clonagem eficiente e preservando\n * estruturas complexas como Arrays, Maps e Sets.\n */\n public static clone<T = unknown>(obj: T): T {\n if (ObjectUtil.isEmpty(obj)) {\n return obj;\n }\n return structuredClone(obj);\n }\n\n /**\n * Compara dois valores verificando se são iguais em valor (deep equality).\n *\n * Faz uma comparação profunda entre os objetos, arrays, datas e expressões regulares,\n * verificando se os conteúdos são equivalentes, não apenas a referência.\n * Também trata o caso especial de NaN.\n *\n * @param obj1 - Primeiro objeto/valor a ser comparado.\n * @param obj2 - Segundo objeto/valor a ser comparado.\n * @returns `true` se os valores forem iguais em conteúdo; `false` caso contrário.\n *\n * @example\n * equals({ a: 1, b: [2, 3] }, { a: 1, b: [2, 3] }); // true\n * equals(new Date('2020-01-01'), new Date('2020-01-01')); // true\n * equals(NaN, NaN); // true\n * equals({ a: 1 }, { a: 2 }); // false\n */\n public static equals(obj1: unknown, obj2: unknown): boolean {\n if (obj1 === obj2) return true;\n\n if (obj1 && obj2 && typeof obj1 === 'object' && typeof obj2 === 'object') {\n const arrA = Array.isArray(obj1);\n const arrB = Array.isArray(obj2);\n\n if (arrA !== arrB) return false;\n\n if (arrA && arrB) {\n if ((obj1 as unknown[]).length !== (obj2 as unknown[]).length) return false;\n for (let i = 0; i < (obj1 as unknown[]).length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.equals((obj1 as any)[i], (obj2 as any)[i])) return false;\n }\n return true;\n }\n\n if (obj1 instanceof Date && obj2 instanceof Date) {\n return obj1.getTime() === obj2.getTime();\n }\n\n if (obj1 instanceof RegExp && obj2 instanceof RegExp) {\n return obj1.toString() === obj2.toString();\n }\n\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n\n if (keys1.length !== keys2.length) return false;\n\n for (const key of keys1) {\n if (!Object.prototype.hasOwnProperty.call(obj2, key)) return false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.equals((obj1 as any)[key], (obj2 as any)[key])) return false;\n }\n\n return true;\n }\n\n // NaN case\n return obj1 !== obj1 && obj2 !== obj2;\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport type { tConfirmDialogTypes } from './shared/confirm-dialog-types.enum';\nimport { ConfirmDialogModel } from './shared/confirm-dialog.model';\n\n@Component({\n selector: 'gipi-confirm-dialog-icon',\n exportAs: 'gConfirmDialogIcon',\n template: `\n @switch (type) {\n @case ('DEFAULT') {\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 -960 960 960\"\n width=\"24px\"\n fill=\"#e0313e\">\n <path d=\"M478-240q21 0 35.5-14.5T528-290q0-21-14.5-35.5T478-340q-21 0-35.5 14.5T428-290q0 21 14.5 35.5T478-240Zm-36-154h74q0-33 7.5-52t42.5-52q26-26 41-49.5t15-56.5q0-56-41-86t-97-30q-57 0-92.5 30T342-618l66 26q5-18 22.5-39t53.5-21q32 0 48 17.5t16 38.5q0 20-12 37.5T506-526q-44 39-54 59t-10 73Zm38 314q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\" />\n </svg>\n }\n @case ('DANGER') {\n <svg width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12.7662 3.98276C13.0092 4.08343 13.2299 4.23099 13.4159 4.41701L19.5839 10.584C19.77 10.7699 19.9177 10.9907 20.0185 11.2338C20.1192 11.4769 20.1711 11.7374 20.1711 12.0005C20.1711 12.2636 20.1192 12.5242 20.0185 12.7672C19.9177 13.0103 19.77 13.2311 19.5839 13.417L13.4159 19.584C13.2299 19.77 13.0092 19.9176 12.7662 20.0183C12.5233 20.1189 12.2629 20.1707 11.9999 20.1707C11.7369 20.1707 11.4764 20.1189 11.2335 20.0183C10.9905 19.9176 10.7698 19.77 10.5839 19.584L4.41586 13.417C4.22969 13.2311 4.08201 13.0103 3.98124 12.7672C3.88048 12.5242 3.82861 12.2636 3.82861 12.0005C3.82861 11.7374 3.88048 11.4769 3.98124 11.2338C4.08201 10.9907 4.22969 10.7699 4.41586 10.584L10.5839 4.41701C10.7698 4.23099 10.9905 4.08343 11.2335 3.98276C11.4764 3.88208 11.7369 3.83026 11.9999 3.83026C12.2629 3.83026 12.5233 3.88208 12.7662 3.98276ZM11.2927 13.7071C11.4803 13.8946 11.7346 14 11.9999 14C12.2651 14 12.5194 13.8946 12.707 13.7071C12.8945 13.5196 12.9999 13.2652 12.9999 13V8C12.9999 7.73478 12.8945 7.48043 12.707 7.29289C12.5194 7.10536 12.2651 7 11.9999 7C11.7346 7 11.4803 7.10536 11.2927 7.29289C11.1052 7.48043 10.9999 7.73478 10.9999 8V13C10.9999 13.2652 11.1052 13.5196 11.2927 13.7071ZM11.2927 16.7071C11.4803 16.8946 11.7346 17 11.9999 17C12.2651 17 12.5194 16.8946 12.707 16.7071C12.8945 16.5196 12.9999 16.2652 12.9999 16C12.9999 15.7348 12.8945 15.4804 12.707 15.2929C12.5194 15.1054 12.2651 15 11.9999 15C11.7346 15 11.4803 15.1054 11.2927 15.2929C11.1052 15.4804 10.9999 15.7348 10.9999 16C10.9999 16.2652 11.1052 16.5196 11.2927 16.7071Z\"\n fill=\"#D14014\" />\n </svg>\n }\n @case ('INFORMATION') {\n <svg width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.9995 2.00244C17.5175 2.00244 21.9975 6.48244 21.9975 11.9994C21.9975 17.5174 17.5175 21.9974 11.9995 21.9974C6.4825 21.9974 2.0025 17.5174 2.0025 11.9994C2.0025 6.48244 6.4825 2.00244 11.9995 2.00244ZM11.9995 10.0024C11.5855 10.0024 11.2495 10.3384 11.2495 10.7524V16.2524C11.2495 16.6664 11.5855 17.0024 11.9995 17.0024C12.4135 17.0024 12.7495 16.6664 12.7495 16.2524V10.7524C12.7495 10.3384 12.4135 10.0024 11.9995 10.0024ZM11.9975 7.00244C11.4455 7.00244 10.9975 7.45044 10.9975 8.00244C10.9975 8.55444 11.4455 9.00244 11.9975 9.00244C12.5495 9.00244 12.9975 8.55444 12.9975 8.00244C12.9975 7.45044 12.5495 7.00244 11.9975 7.00244Z\"\n fill=\"#0080CA\" />\n </svg>\n }\n @case ('WARNING') {\n <svg width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11.0621 4.96699C11.5781 3.99299 12.4201 3.98899 12.9381 4.96699L20.0621 18.425C20.5781 19.399 20.1071 20.196 19.0051 20.196H4.99507C3.89307 20.196 3.42007 19.403 3.93807 18.425L11.0621 4.96699ZM11.293 14.7071C11.4805 14.8946 11.7349 15 12.0001 15C12.2653 15 12.5196 14.8946 12.7072 14.7071C12.8947 14.5196 13.0001 14.2652 13.0001 14V8.99998C13.0001 8.73477 12.8947 8.48041 12.7072 8.29288C12.5196 8.10534 12.2653 7.99998 12.0001 7.99998C11.7349 7.99998 11.4805 8.10534 11.293 8.29288C11.1054 8.48041 11.0001 8.73477 11.0001 8.99998V14C11.0001 14.2652 11.1054 14.5196 11.293 14.7071ZM11.293 17.7071C11.4805 17.8946 11.7349 18 12.0001 18C12.2653 18 12.5196 17.8946 12.7072 17.7071C12.8947 17.5196 13.0001 17.2652 13.0001 17C13.0001 16.7348 12.8947 16.4804 12.7072 16.2929C12.5196 16.1053 12.2653 16 12.0001 16C11.7349 16 11.4805 16.1053 11.293 16.2929C11.1054 16.4804 11.0001 16.7348 11.0001 17C11.0001 17.2652 11.1054 17.5196 11.293 17.7071Z\"\n fill=\"#D6A000\" />\n </svg>\n }\n }\n `,\n styleUrl: './confirm-dialog.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': '_uniqueId',\n '[name]': '_uniqueId',\n 'class': 'g-confirm-dialog-icon',\n },\n imports: [\n CommonModule,\n ],\n})\nexport class ConfirmDialogIconComponent {\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-confirm-dialog-icon-');\n @Input({ required: true }) type: tConfirmDialogTypes = 'INFORMATION';\n}\n\n@Component({\n selector: 'gipi-confirm-dialog',\n exportAs: 'gConfirmDialog',\n template: `\n <div mat-dialog-title\n class=\"g-confirm-dialog-title\">\n <gipi-confirm-dialog-icon class=\"g-confirm-dialog-icon\"\n [type]=\"dialogData.type!\" />\n <span> {{ dialogData.title || 'Confirmação' }} </span>\n </div>\n <div mat-dialog-content\n class=\"g-confirm-dialog-content\">\n @if (dialogData.message && !dialogData.listMessage) {\n <p class=\"g-confirm-dialog-message\">\n {{ dialogData.message }}\n </p>\n }\n @if (!dialogData.message && dialogData.listMessage) {\n <ul class=\"g-confirm-dialog-list-message\">\n @for (message of dialogData.listMessage; track $index) {\n <li> {{ message }} </li>\n }\n </ul>\n }\n </div>\n <div mat-dialog-actions\n class=\"g-confirm-dialog-actions\">\n @if (dialogData.showConfirm) {\n <button id=\"btnConfirm\"\n class=\"g-confirm-dialog-btn-action g-confirm\"\n [class.g-warning]=\"dialogData.type === 'WARNING'\"\n [class.g-danger]=\"dialogData.type === 'DANGER'\"\n [class.g-information]=\"dialogData.type === 'INFORMATION'\"\n [disabled]=\"dialogData.disableConfirm\"\n [mat-dialog-close]=\"true\">\n {{ dialogData.labelConfirm || 'Confirmar' }}\n </button>\n }\n @if (dialogData.showCancel) {\n <button id=\"btnCancel\"\n class=\"g-confirm-dialog-btn-action g-cancel\"\n [disabled]=\"dialogData.disabledCancel\"\n [mat-dialog-close]=\"false\">\n {{ dialogData.labelCancel || 'Cancelar' }}\n </button>\n }\n </div>\n `,\n styleUrl: './confirm-dialog.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': '_uniqueId',\n '[name]': '_uniqueId',\n 'class': 'g-confirm-dialog',\n },\n imports: [\n CommonModule,\n MatDialogModule,\n ConfirmDialogIconComponent,\n ],\n})\nexport class ConfirmDialogComponent {\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-confirm-dialog-');\n protected readonly dialogRef = inject(MatDialogRef<ConfirmDialogComponent>);\n protected readonly dialogData = inject<ConfirmDialogModel>(MAT_DIALOG_DATA);\n}\n","export enum eConfirmDialogTypes {\n DEFAULT,\n WARNING,\n DANGER,\n INFORMATION,\n}\n\nexport type tConfirmDialogTypes = keyof typeof eConfirmDialogTypes;\n","import { tConfirmDialogTypes } from './confirm-dialog-types.enum';\n\nexport class ConfirmDialogModel {\n title: string = '';\n message?: string;\n listMessage?: string[];\n type?: tConfirmDialogTypes = 'DEFAULT';\n width?: string = '';\n showConfirm?: boolean = true;\n disableConfirm?: boolean = false;\n labelConfirm?: string = 'Confirmar';\n showCancel?: boolean = true;\n disabledCancel?: boolean = false;\n labelCancel?: string = 'Cancelar';\n accept?: Function;\n cancel?: Function;\n\n constructor(init?: Partial<ConfirmDialogModel>) {\n Object.assign(this, init);\n }\n\n /**\n * Combina os valores fornecidos com os valores padrão do modelo.\n * Se um valor não for fornecido, o padrão da classe será usado.\n *\n * @param data Objeto parcial contendo os valores personalizados do dialog.\n * @returns Um novo objeto `ConfirmDialogModel` com os valores mesclados.\n */\n public static merge(data?: Partial<ConfirmDialogModel>): ConfirmDialogModel {\n return new ConfirmDialogModel(data);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { lastValueFrom } from 'rxjs';\nimport { ConfirmDialogComponent } from '../confirm-dialog.component';\nimport { ConfirmDialogModel } from './confirm-dialog.model';\n\n@Injectable({ providedIn: 'root' })\nexport class ConfirmDialogService {\n\n protected matDialog: MatDialog = inject(MatDialog);\n\n constructor() { }\n\n /**\n * Exibe um dialog de confirmação com opções personalizadas.\n * Caso algumas propriedades não sejam fornecidas, valores padrão serão aplicados.\n *\n * @param confirmDialog Objeto contendo as configurações do dialog.\n * @returns Uma `Promise<boolean>` indicando se o usuário confirmou (true) ou cancelou (false) a ação.\n */\n public async show(confirmDialog: Partial<ConfirmDialogModel>): Promise<boolean> {\n const mergeConfig: ConfirmDialogModel = ConfirmDialogModel.merge(confirmDialog);\n\n const matDialogConfig: MatDialogConfig = new MatDialogConfig();\n matDialogConfig.disableClose = true;\n matDialogConfig.autoFocus = true;\n matDialogConfig.data = mergeConfig;\n matDialogConfig.minWidth = '20%';\n matDialogConfig.maxWidth = mergeConfig.width || '30%';\n matDialogConfig.width = mergeConfig.width;\n\n const dialogRef = this.matDialog.open<unknown, unknown, boolean>(ConfirmDialogComponent, matDialogConfig);\n const isAccept: boolean = await lastValueFrom(dialogRef.afterClosed()) ?? false;\n if (isAccept) {\n mergeConfig.accept?.();\n } else {\n mergeConfig.cancel?.();\n }\n\n return isAccept;\n }\n\n}\n","export enum eToastTypes {\n SUCCESS,\n ERROR,\n WARNING,\n INFO,\n}\n\nexport type tToastTypes = keyof typeof eToastTypes;\n","import { tToastTypes } from './toast-types.enum';\n\nexport class ToastModel {\n type: tToastTypes;\n title: string;\n description: string;\n\n constructor(\n type: tToastTypes,\n title: string,\n description: string,\n ) {\n this.type = type;\n this.title = title;\n this.description = description;\n }\n\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\nimport { tToastTypes } from './shared/toast-types.enum';\nimport { ToastModel } from './shared/toast.model';\n\n@Component({\n selector: 'gipi-toast-icon',\n template: `\n @switch (type) {\n @case ('SUCCESS') {\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n height=\"20\"\n width=\"20\">\n <path fill-rule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\n clip-rule=\"evenodd\" />\n </svg>\n }\n @case ('ERROR') {\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n height=\"20\"\n width=\"20\">\n <path fill-rule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z\"\n clip-rule=\"evenodd\" />\n </svg>\n }\n @case ('INFO') {\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n height=\"20\"\n width=\"20\">\n <path fill-rule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\"\n clip-rule=\"evenodd\" />\n </svg>\n }\n @case ('WARNING') {\n <svg viewBox=\"0 0 64 64\"\n fill=\"currentColor\"\n height=\"20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M32.427,7.987c2.183,0.124 4,1.165 5.096,3.281l17.936,36.208c1.739,3.66 -0.954,8.585 -5.373,8.656l-36.119,0c-4.022,-0.064 -7.322,-4.631 -5.352,-8.696l18.271,-36.207c0.342,-0.65 0.498,-0.838 0.793,-1.179c1.186,-1.375 2.483,-2.111 4.748,-2.063Zm-0.295,3.997c-0.687,0.034 -1.316,0.419 -1.659,1.017c-6.312,11.979 -12.397,24.081 -18.301,36.267c-0.546,1.225 0.391,2.797 1.762,2.863c12.06,0.195 24.125,0.195 36.185,0c1.325,-0.064 2.321,-1.584 1.769,-2.85c-5.793,-12.184 -11.765,-24.286 -17.966,-36.267c-0.366,-0.651 -0.903,-1.042 -1.79,-1.03Z\" />\n <path d=\"M33.631,40.581l-3.348,0l-0.368,-16.449l4.1,0l-0.384,16.449Zm-3.828,5.03c0,-0.609 0.197,-1.113 0.592,-1.514c0.396,-0.4 0.935,-0.601 1.618,-0.601c0.684,0 1.223,0.201 1.618,0.601c0.395,0.401 0.593,0.905 0.593,1.514c0,0.587 -0.193,1.078 -0.577,1.473c-0.385,0.395 -0.929,0.593 -1.634,0.593c-0.705,0 -1.249,-0.198 -1.634,-0.593c-0.384,-0.395 -0.576,-0.886 -0.576,-1.473Z\" />\n </svg>\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'id',\n '[name]': 'name',\n 'class': 'g-toast-icon',\n }\n})\nexport class ToastIconComponent {\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-toast-icon-');\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n @Input({ required: true }) type: tToastTypes = 'ERROR';\n}\n\n@Component({\n selector: 'gipi-toast',\n template: `\n <gipi-toast-icon class=\"g-toast-icon\"\n [type]=\"toast.type\" />\n <div class=\"g-content\">\n <div class=\"g-title\">{{ toast.title }}</div>\n <span class=\"g-description\">{{ toast.description }}</span>\n </div>\n `,\n styleUrl: './toast.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': '_uniqueId',\n '[name]': '_uniqueId',\n '[class]': 'classType'\n },\n imports: [\n CommonModule,\n MatIconModule,\n ToastIconComponent,\n ],\n})\nexport class ToastComponent {\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-toast-');\n protected toast: ToastModel = inject(MAT_SNACK_BAR_DATA);\n\n protected get classType(): string {\n return `g-toast ${this.toast.type.toLowerCase()}`;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ToastComponent } from '../toast.component';\nimport { ToastModel } from './toast.model';\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n\n private _matSnackBar: MatSnackBar = inject(MatSnackBar);\n\n public show(toast: ToastModel): void {\n this._matSnackBar.openFromComponent(ToastComponent, {\n politeness: 'off',\n announcementMessage: '',\n verticalPosition: 'top',\n horizontalPosition: 'center',\n direction: 'ltr',\n duration: 10000,\n data: toast,\n });\n }\n\n public success(description: string): void {\n this.show({\n type: 'SUCCESS',\n title: 'Sucesso',\n description: description,\n });\n }\n\n public error(description: string): void {\n this.show({\n type: 'ERROR',\n title: 'Erro',\n description: description,\n });\n }\n\n public warning(description: string): void {\n this.show({\n type: 'WARNING',\n title: 'Atenção',\n description: description,\n });\n }\n\n public info(description: string): void {\n this.show({\n type: 'INFO',\n title: 'Informação',\n description: description,\n });\n }\n\n}\n","import { FactoryProvider, InjectionToken } from '@angular/core';\n\nexport interface iAppMessages {\n SUCCESS: string;\n RETURN_CONFIRMATION: string;\n DELETE_CONFIRMATION: string;\n DELETE_ALL_CONFIRMATION: string;\n BUTTON_OK_CONFIRMATION: string;\n BUTTON_CANCEL_CONFIRMATION: string;\n NOT_PERMISSION: string;\n}\n\nexport const DEFAULT_MESSAGES: iAppMessages = {\n SUCCESS: 'Operação realizada com sucesso',\n RETURN_CONFIRMATION: 'Deseja retornar para a tela de consulta?',\n DELETE_CONFIRMATION: 'Deseja realmente excluir este registro?',\n DELETE_ALL_CONFIRMATION: 'Deseja realmente excluir os registros selecionados?',\n BUTTON_OK_CONFIRMATION: 'OK',\n BUTTON_CANCEL_CONFIRMATION: 'Cancelar',\n NOT_PERMISSION: 'Infelizmente, esta ação não é permitida para o seu perfil',\n};\n\nexport const APP_MESSAGES = new InjectionToken<iAppMessages>('APP_MESSAGES_TOKEN', { factory: () => DEFAULT_MESSAGES, });\n\nexport function provideAppMessages(messages: iAppMessages): FactoryProvider {\n return {\n provide: APP_MESSAGES,\n useFactory: () => messages,\n }\n};\n\n","import { InjectionToken, Type, type Provider } from '@angular/core';\nimport { BaseUserModel } from '../base/models/base-user.model';\nimport { BaseAuthService } from '../base/services/base-auth.service';\n\nexport const BASE_AUTH_SERVICE_TOKEN = new InjectionToken<BaseAuthService<BaseUserModel>>('BASE_AUTH_SERVICE_TOKEN');\n\nexport function provideBaseAuthService(useClass: Type<unknown>): Provider {\n return { provide: BASE_AUTH_SERVICE_TOKEN, useClass: useClass };\n}\n","import { Nullable } from '../types/nullable.type';\nimport { ObjectUtil } from './object.util';\nimport { StringUtil } from './string.util';\n\n/** Classe utilitária para manipulação do `sessionStorage` e `localStorage`. */\nexport class StorageUtil {\n\n /**\n * Armazena um item no `sessionStorage`.\n *\n * @param key Chave associada ao valor armazenado.\n * @param value Valor a ser armazenado (qualquer tipo de dado).\n *\n * @example\n * StorageUtil.setSessionItem('user', { name: 'Alice', age: 25 });\n */\n public static setSessionItem<T = unknown>(key: string, value: T): void {\n window.sessionStorage.setItem(key, JSON.stringify(value));\n }\n\n /**\n * Obtém um item armazenado no `sessionStorage`.\n *\n * @param key Chave do item a ser recuperado.\n * @returns O valor armazenado convertido para o tipo correspondente ou `null` caso não exista.\n *\n * @example\n * const user = StorageUtil.getSessionItem<{ name: string; age: number }>('user');\n * console.log(user); // { name: 'Alice', age: 25 } ou null se não existir.\n */\n public static getSessionItem<T = unknown>(key: string): Nullable<T> {\n const item: Nullable<string> = window.sessionStorage.getItem(key);\n const itemParsed: Nullable<T> = !StringUtil.isEmpty(item) ? (JSON.parse(item) as T) : null;\n return !ObjectUtil.isEmpty(itemParsed) ? itemParsed : null;\n }\n\n /**\n * Armazena um item no `localStorage`.\n *\n * @param key Chave associada ao valor armazenado.\n * @param value Valor a ser armazenado (qualquer tipo de dado).\n *\n * @example\n * StorageUtil.setLocalItem('theme', 'dark');\n */\n public static setLocalItem<T = unknown>(key: string, value: T): void {\n window.localStorage.setItem(key, JSON.stringify(value));\n }\n\n /**\n * Obtém um item armazenado no `localStorage`.\n *\n * @param key Chave do item a ser recuperado.\n * @returns O valor armazenado convertido para o tipo correspondente ou `null` caso não exista.\n *\n * @example\n * const theme = StorageUtil.getLocalItem<string>('theme');\n * console.log(theme); // 'dark' ou null se não existir.\n */\n public static getLocalItem<T = unknown>(key: string): Nullable<T> {\n const item: Nullable<string> = window.localStorage.getItem(key);\n const itemParsed: Nullable<T> = !StringUtil.isEmpty(item) ? (JSON.parse(item) as T) : null;\n return !ObjectUtil.isEmpty(itemParsed) ? itemParsed : null;\n }\n\n /**\n * Remove um item específico do `sessionStorage`.\n *\n * @param key Chave do item a ser removido.\n *\n * @example\n * StorageUtil.removeSessionItem('user');\n */\n public static removeSessionItem(key: string): void {\n window.sessionStorage.removeItem(key);\n }\n\n /**\n * Remove um item específico do `localStorage`.\n *\n * @param key Chave do item a ser removido.\n *\n * @example\n * StorageUtil.removeLocalItem('theme');\n */\n public static removeLocalItem(key: string): void {\n window.localStorage.removeItem(key);\n }\n\n /**\n * Limpa todos os dados armazenados no `sessionStorage`.\n *\n * @example\n * StorageUtil.clearSession();\n */\n public static clearSession(): void {\n window.sessionStorage.clear();\n }\n\n /**\n * Limpa todos os dados armazenados no `localStorage`.\n *\n * @example\n * StorageUtil.clearLocal();\n */\n public static clearLocal(): void {\n window.localStorage.clear();\n }\n\n}\n","import { AfterViewInit, DestroyRef, Directive, inject, OnDestroy, OnInit, signal } from '@angular/core';\nimport { ActivatedRoute, OnSameUrlNavigation, Params, QueryParamsHandling, Router } from '@angular/router';\nimport { ConfirmDialogService } from '../../components/confirm-dialog';\nimport { ToastService } from '../../components/toast';\nimport { iPermission } from '../../interfaces/permissions.interface';\nimport { APP_MESSAGES } from '../../tokens/app-messages.token';\nimport { BASE_AUTH_SERVICE_TOKEN } from '../../tokens/base-auth-service.token';\nimport { StorageUtil } from '../../utils/storage.util';\n\n@Directive()\nexport abstract class BaseComponent implements OnInit, AfterViewInit, OnDestroy {\n\n protected readonly SESSION_STORAGE_FILTER = 'filter';\n\n protected confirmDialogService = inject(ConfirmDialogService);\n protected toastService = inject(ToastService);\n protected appMessages = inject(APP_MESSAGES);\n protected authService = inject(BASE_AUTH_SERVICE_TOKEN);\n protected activatedRoute = inject(ActivatedRoute);\n protected router = inject(Router);\n protected destroyRef = inject(DestroyRef);\n\n public abstract permissions: iPermission;\n public abstract ORIGIN_SCREEN: string;\n\n public loading = signal<boolean>(false);\n\n constructor() { }\n\n ngOnInit(): void {\n this.onInitForm();\n }\n\n ngAfterViewInit(): void {\n this.onAfterInitForm();\n }\n\n ngOnDestroy(): void {\n StorageUtil.removeSessionItem(this.SESSION_STORAGE_FILTER);\n this.onDestroy();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected onInitForm(): void { };\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected onAfterInitForm(): void { }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected onDestroy(): void { }\n\n private _currentPathSegment(): string[] {\n return this.activatedRoute.snapshot.url.map(segment => segment.path);\n }\n\n public isCreating(): boolean {\n return this._currentPathSegment().includes('new');\n }\n\n public isEditing(): boolean {\n return this._currentPathSegment().includes('edit');\n }\n\n public isViewing(): boolean {\n return this._currentPathSegment().includes('view');\n }\n\n public isListing(): boolean {\n const pathSegments = this._currentPathSegment();\n return !['new', 'edit', 'view', 'clone'].some(segment => pathSegments.includes(segment));\n }\n\n public isCloning(): boolean {\n return this._currentPathSegment().includes('clone');\n }\n\n protected handleError(error: unknown): void {\n this.loading.set(false);\n\n if (typeof error === 'string' && error.includes('Unknown')) {\n error = new Error('Ocorreu um erro ao realizar essa operação, tente novamente');\n }\n if (error instanceof Error) {\n error = error.message;\n }\n\n this.toastService.error(error as string);\n throw error;\n }\n\n\n /**\n * Navega para uma rota específica com opções personalizadas.\n *\n * @param commands - Um array de comandos de rota que definem o caminho de navegação.\n * Exemplo: ['/home', { id: 123 }] navega para a rota '/home' com um parâmetro de rota `id`.\n * @param queryParams - Parâmetros de consulta (query parameters) a serem adicionados à URL.\n * Exemplo: { page: 1, filter: 'active' } resulta em uma URL como `/home?page=1&filter=active`.\n * @param queryParamsHandling - Define como os parâmetros de consulta devem ser manipulados.\n * - `'merge'`: Mescla os novos parâmetros com os existentes.\n * - `'preserve'`: Mantém os parâmetros de consulta existentes.\n * - `undefined`: Substitui os parâmetros de consulta existentes pelos novos.\n * @param skipLocationChange - Se `true`, a navegação não atualiza a URL no navegador.\n * Útil para navegações que não devem ser refletidas na barra de endereço.\n * @param onSameUrlNavigation - Define o comportamento quando a navegação ocorre para a mesma URL atual.\n * - `'reload'`: Força a recarga da rota atual.\n * - `'ignore'`: Ignora a navegação se a URL atual for a mesma.\n * Padrão: `'reload'`.\n *\n * @example\n * // Navega para '/home' com parâmetros de consulta e sem atualizar a URL\n * navigate(['/home'], { page: 1 }, 'merge', true);\n *\n * @example\n * // Navega para a mesma rota atual, forçando a recarga\n * navigate([], {}, undefined, false, 'reload');\n */\n protected routerNavigate(\n commands: unknown[],\n queryParams?: Params,\n queryParamsHandling?: QueryParamsHandling,\n skipLocationChange: boolean = false,\n onSameUrlNavigation: OnSameUrlNavigation = 'reload',\n ): void {\n this.router.navigate(commands, {\n queryParams: queryParams,\n skipLocationChange: skipLocationChange,\n onSameUrlNavigation: onSameUrlNavigation,\n queryParamsHandling: queryParamsHandling\n });\n }\n\n}\n","export class ArrayUtil {\n\n /**\n * Verifica se um valor é considerado vazio.\n *\n * Um valor é considerado vazio se for:\n * - `null` ou `undefined`\n * - Um array vazio `[]`\n *\n * @param inp O valor a ser verificado.\n * @returns `true` se o valor for vazio, caso contrário, `false`.\n */\n public static isEmpty(inp: unknown): inp is null | undefined {\n return (\n inp === null ||\n inp === undefined ||\n (Array.isArray(inp) && inp.length === 0)\n );\n }\n\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Injectable } from '@angular/core';\nimport { Observable, shareReplay } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class CacheableService {\n private _cacheMap = new Map<string, Observable<any>>();\n\n constructor() {}\n\n /**\n * Cacheia um `Observable` com base na chave.\n * A chave pode ser estática ou gerada dinamicamente (ex: string de params).\n *\n * @param key - Chave exclusiva para identificar o `Observable` armazenado em cache.\n * @param observableFn - Função que retorna um `Observable` para ser armazenado em cache.\n * @returns Observable<T> - O `Observable` armazenado em cache ou recém-criado.\n * @example\n * ```typescript\n * // Exemplo 1: cache com chave fixa\n * this.cacheable('myUniqueKey', () => this.httpClient.get<MyDataType>('api/data'))\n * .subscribe(...);\n *\n * // Exemplo 2: cache com chave dinâmica baseada em parâmetros\n * const key = `cities-state-${stateId}`;\n * this.cacheable(key, () => this.cityService.findByState(stateId))\n * .subscribe(...);\n * ```\n */\n public cacheable<T = any>(key: string, observableFn: () => Observable<T>): Observable<T> {\n if (!this._cacheMap.has(key)) {\n const cached$ = observableFn().pipe(shareReplay(1));\n this._cacheMap.set(key, cached$);\n }\n\n return this._cacheMap.get(key)!;\n }\n\n /**\n * Limpa o cache para uma chave específica ou todas se nenhuma chave for passada.\n * @param key - Chave opcional para limpar um `Observable` em cache específico.\n * @example\n * ```typescript\n * // Exemplo 1: limpa o cache de um observable específico\n * this.clearCache('myUniqueKey');\n *\n * // Exemplo 2: limpa o cache de todos os observables\n * this.clearCache();\n * ```\n */\n public clearCache(key?: string): void {\n if (key) {\n this._cacheMap.delete(key);\n } else {\n this._cacheMap.clear();\n }\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { inject, Inject, Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Subject, throwError } from 'rxjs';\nimport { ToastService } from '../../components/toast/shared/toast.service';\nimport { tSortDirection } from '../../enums/sort-direction.enum';\nimport { CacheableService } from '../../services/cacheable.service';\nimport { Nullable } from '../../types/nullable.type';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { StringUtil } from '../../utils/string.util';\nimport { BaseQueryParams } from '../models/base-query-params.model';\n\n@Injectable({ providedIn: 'root' })\nexport abstract class BaseService implements OnDestroy {\n protected handleDestroy: Subject<void> = new Subject<void>();\n\n protected readonly httpClient: HttpClient = inject(HttpClient);\n protected readonly toastService = inject(ToastService);\n protected readonly cacheableService = inject(CacheableService);\n\n constructor(\n @Inject(String) protected path: string,\n @Inject(String) protected version: string,\n ) {}\n\n ngOnDestroy(): void {\n this.handleDestroy.next();\n this.handleDestroy.complete();\n }\n\n /**\n * Constrói a URL base da API com caminho, versão e recurso especificados.\n *\n * @param resource O recurso específico da API a ser adicionado à URL (ex.: 'users', 'orders').\n * @param version A versão da API (ex.: 'v1', 'v2'). Se não for informada, utiliza a versão padrão da instância.\n * @returns A URL completa formatada como `api/{path}/{version}/{resource}`.\n *\n * @example\n * url('users', 'v1'); // Retorna 'api/{path}/v1/users'.\n * url('products'); // Retorna 'api/{path}/{version}/products' se `this.version` estiver definida.\n */\n protected url(resource: string = '', version: string = ''): string {\n let versionAux: string = '';\n if (!StringUtil.isEmpty(version)) {\n versionAux = `/${version.toLowerCase()}`;\n } else {\n versionAux = `/${this.version.toLowerCase()}`;\n }\n\n let resourceAux: string = '';\n if (!StringUtil.isEmpty(resource)) {\n resourceAux = `/${resource}`;\n }\n\n return `api/${this.path}${versionAux}${resourceAux}`;\n }\n\n /**\n * Gera as opções para uma requisição HTTP, incluindo headers e parâmetros.\n * - Se os headers ou os parâmetros não forem fornecidos, são gerados valores padrão.\n *\n * @param params Os parâmetros da requisição (HttpParams). Se não informado, será utilizado um padrão.\n * @param headers Os headers da requisição (HttpHeaders). Se não informado, será utilizado um padrão.\n * @returns Um objeto contendo os headers e os parâmetros da requisição.\n *\n * @example\n * options(); // Retorna `{ headers: defaultHeaders, params: defaultParams }`.\n * options(null, new HttpHeaders({ 'Authorization': 'Bearer token' })); // Retorna opções com headers personalizados.\n */\n protected options(\n params: HttpParams | null = null,\n headers: HttpHeaders | null = null,\n ): { headers: HttpHeaders; params: HttpParams } {\n return {\n headers: !ObjectUtil.isEmpty(headers) ? headers! : this.buildHeaders(),\n params: !ObjectUtil.isEmpty(params) ? params! : this.buildParams(),\n };\n }\n\n /**\n * Cria e retorna um objeto `HttpHeaders` padrão.\n * Pode ser sobrescrito por classes que estendem esta classe para personalizar os headers.\n *\n * @returns Um objeto `HttpHeaders` vazio.\n */\n protected buildHeaders(): HttpHeaders {\n return new HttpHeaders();\n }\n\n /**\n * Cria e retorna um objeto `HttpParams` padrão.\n * Pode ser sobrescrito por classes que estendem esta classe para personalizar os parâmetros da requisição.\n *\n * @returns Um objeto `HttpParams` vazio.\n */\n protected buildParams(): HttpParams {\n return new HttpParams();\n }\n\n /**\n * Constrói uma string de parâmetros de consulta a partir de um objeto `BaseQueryParams`.\n * - Coloque as keys dos parâmetros adicionais exatamente como estão no endpoint.\n * - Os parâmetros são formatados como `?key1=value1&key2=value2`.\n * - Se não houver parâmetros, retorna uma string vazia.\n *\n * @param queryParams Parâmetros de consulta a serem adicionados à URL.\n * @returns Uma string de parâmetros de consulta formatada para ser anexada à URL.\n * @example\n * ```typescript\n * buildQueryParams({ page: 1, size: 10 }); // Retorna '?page=1&size=10'.\n * buildQueryParams({ page: 1, size: 10, sort: { field: 'name', direction: 'ASC' }, value: '', extraParam: 'extra' }); // Retorna '?page=1&size=10&sort=name,asc&extraParam=extra'.\n * ```\n */\n protected buildQueryParams(queryParams?: BaseQueryParams): string {\n if (ObjectUtil.isEmpty(queryParams)) {\n return '';\n }\n\n const params: URLSearchParams = new URLSearchParams();\n\n for (const [key, value] of Object.entries(queryParams)) {\n if (value === null || value === undefined) {\n continue;\n }\n let paramValue: string = '';\n\n if (key === 'value') {\n paramValue = !StringUtil.isEmpty(value) ? value.toString().trim() : '';\n } else if (key === 'page') {\n paramValue = Math.max(value as number, 0).toString();\n } else if (key === 'size') {\n paramValue = Math.max(value as number, 10).toString();\n } else if (key === 'sort') {\n if (typeof value === 'object' && 'field' in value) {\n const direction: tSortDirection =\n 'direction' in value\n ? ((value.direction as tSortDirection) ?? 'ASC')\n : 'ASC';\n\n paramValue = `${value.field},${direction.toUpperCase()}`;\n\n params.set(key, paramValue);\n } else if (Array.isArray(value)) {\n paramValue = '';\n\n for (const item of value) {\n if (typeof item === 'object' && 'field' in item) {\n const direction: tSortDirection =\n 'direction' in item\n ? ((item.direction as tSortDirection) ?? 'ASC')\n : 'ASC';\n\n params.append('sort', `${item.field},${direction.toUpperCase()}`);\n }\n }\n }\n } else {\n if (typeof value === 'object') {\n paramValue = JSON.stringify(value);\n } else {\n paramValue = String(value).trim();\n }\n }\n\n if (key !== 'sort') {\n params.set(key, paramValue);\n }\n }\n\n return params.size > 0 ? `?${params.toString()}` : '';\n }\n\n /**\n * Converte um objeto JSON para o tipo esperado.\n *\n * @param jsonObj O objeto JSON a ser convertido.\n * @returns O objeto convertido para o tipo `T`.\n *\n * @example\n * handleMapper<User>({ id: '123e4567-e89b-12d3-a456-426614174000', name: 'John' }); // Retorna um objeto do tipo `User`.\n */\n protected handleMapper<T = unknown>(jsonObj: Nullable<unknown>): T {\n return jsonObj as T;\n }\n\n /**\n * Manipula erros de requisições HTTP e retorna um Observable que emite um erro.\n *\n * @param error A mensagem de erro a ser lançada.\n * @returns Um `Observable<never>` que emite um erro.\n *\n * @example\n * handleError('Falha ao buscar os dados'); // Lança um erro com a mensagem especificada.\n */\n protected handleError(error: string): Observable<never> {\n return throwError(() => error);\n }\n}\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { catchError, map, Observable, of, takeUntil } from 'rxjs';\nimport { GIPIUuid } from '../../types/uuid.type';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { StringUtil } from '../../utils/string.util';\nimport { UUIDUtil } from '../../utils/uuid.util';\nimport { BaseFilterModel } from '../models/base-filter.model';\nimport { BasePageModel } from '../models/base-page.model';\nimport { BaseQueryParams } from '../models/base-query-params.model';\nimport { BaseSortModel } from '../models/base-sort.model';\nimport { BaseModel } from '../models/base.model';\nimport { ArrayUtil } from './../../utils/array.util';\nimport { BaseService } from './base.service';\n\n@Injectable({ providedIn: 'root' })\nexport class BaseCrudService<TEntity extends BaseModel, TFilter extends BaseFilterModel>\n extends BaseService\n implements OnDestroy\n{\n constructor(\n @Inject(String) protected override path: string,\n @Inject(String) protected override version: string,\n ) {\n super(path, version);\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n /**\n * `POST` - Refere-se ao endpoint find-all com filtros via URL save.\n *\n * @param entity A entidade a ser salva.\n * @param version (Opcional) Versão da API a ser utilizada na URL.\n * @returns Um `Observable<T>` contendo a entidade salva.\n *\n * @example\n * save<User>({ id: '123e4567-e89b-12d3-a456-426614174000', name: 'John' })\n * .subscribe(user => console.log(user));\n */\n public save<T = TEntity>(entity: T, version?: string): Observable<T> {\n this.validate(entity);\n return this.httpClient\n .post<T>(this.url('', version), entity, this.options())\n .pipe(\n map(this.handleMapper<T>),\n takeUntil(this.handleDestroy),\n catchError(this.handleError),\n );\n }\n\n /**\n * `POST` - Refere-se ao endpoint find-all com filtros via URL save-all.\n *\n * @param entities Um array de entidades a serem salvas.\n * @param version (Opcional) Versão da API a ser utilizada na URL.\n * @returns Um `Observable<T[]>` contendo a lista de entidades salvas.\n *\n * @example\n * saveAll<User>([{ id: '123e4567-e89b-12d3-a456-426614174000', name: 'John' }, { id: 2, name: 'Jane' }])\n * .subscribe(users => console.log(users));\n */\n public saveAll<T = TEntity>(entities: T[], version?: string): Observable<T[]> {\n for (const entity of entities) {\n this.validate(entity);\n }\n\n return this.httpClient\n .post<T[]>(this.url('save-all', version), entities, this.options())\n .pipe(\n map(this.handleMapper<T[]>),\n takeUntil(this.handleDestroy),\n catchError(this.handleError),\n );\n }\n\n /**\n * `DELETE` - Refere-se ao endpoint find-all com filtros via URL delete.\n *\n * @param id O identificador único (UUID) da entidade a ser excluída.\n * @param version (Opcional) Versão da API a ser utilizada na URL.\n * @returns Um `Observable<boolean>` que retorna `true` se a exclusão for bem-sucedida.\n *\n * @example\n * delete('123e4567-e89b-12d3-a456-426614174000')\n * .subscribe(isDeleted => console.log(isDeleted));\n */\n public delete(id: GIPIUuid, version?: string): Observable<boolean> {\n return this.httpClient.delete(this.url(`${id}`, version)).pipe(\n map(() => true),\n takeUntil(this.handleDestroy),\n catchError(this.handleError),\n );\n }\n\n /**\n * `POST` - Refere-se ao endpoint find-all com filtros via URL delete-all.\n *\n * @param idList Lista de identificadores (UUIDs) das entidades a serem excluídas.\n * @param version (Opcional) Versão da API a ser utilizada na URL.\n * @returns Um `Observable<boolean>` que retorna `true` se todas as exclusões forem bem-sucedidas ou `false` se algum identificador for inválido.\n *\n * @example\n * deleteAll(['123e4567-e89b-12d3-a456-426614174000', '987e6543-e21b-12d3-a456-426614174001'])\n * .subscribe(isDeleted => console.log(isDeleted));\n */\n public deleteAll(idList: GIPIUuid[], version?: string): Observable<boolean> {\n for (const uuid of idList) {\n if (!UUIDUtil.isValid(uuid)) {\n return of(false);\n }\n }\n\n return this.httpClient.post(this.url('delete-all', version), idList, this.options()).pipe(\n map(() => true),\n takeUntil(this.handleDestroy),\n catchError(this.handleError),\n );\n }\n\n /**\n * `GET` - Refere-se ao endpoint find-all com filtros via URL get-one.\n *\n * @param id O identificador (UUID) da entidade a ser recuperada.\n * @param version (Opcional) Versão da API a ser utilizada na URL.\n * @returns Um `Observable<T>` contendo a entidade recuperada.\n *\n * @example\n * getOne('123e4567-e89b-12d3-a456-426614174000')\n * .subscribe(entity => console.log(entity));\n */\n public getOne<T = TEntity>(id: GIPIUuid, version?: string): Observable<T> {\n return this.httpClient\n .get<T>(this.url(`${id}`, version), this.options())\n .pipe(\n map(this.handleMapper<T>),\n takeUntil(this.handleDestroy),\n catchError(this.handleError),\n );\n }\n\n /**\n * `GET` - Refere-se ao endpoint find-all com filtros via URL.\n *\n * @param version (Opcional) Versão da API a ser utilizada na URL.\n * @returns Um `Observable<BasePageModel<T>>` que retorna uma página de entidades.\n * A resposta será um objeto contendo dados paginados, como os itens da página e informações sobre a página atual.\n *\n * @example\n * find()\n * .subscribe(page => console.log(page.content));\n */\n public find<T = TEntity>(version?: string): Observable<BasePageModel<T>> {\n return this.httpClient\n .get<T>(this.url('', version), this.options())\n .pipe(\n map(this.handleMapper<BasePageModel<T>>),\n takeUntil(this.handleDestroy),\n catchError(this.handleError),\n );\n }\n\n /**\n * `POST` - Refere-se ao endpoint find-all com filtros via BODY.\n *\n * @param filter (Opcional) Objeto com os critérios de filtro para a consulta.\n * @param version (Opcional) Versão da API a ser utilizada na URL.\n * @returns Um `Observable<BasePageModel<T>>` que retorna uma página de entidades filtradas.\n * A resposta será um objeto contendo dados paginados, como os itens da página e informações sobre a página atual.\n *\n * @example\n * findAll({ name: 'John' })\n * .subscribe(page => console.log(page.content));\n */\n public findAll<F = TFilter, T = TEntity>(\n filter?: F,\n version?: string,\n ): Observable<BasePageModel<T>> {\n return this.httpClient\n .post<F>(this.url('find-all', version), filter, this.options())\n .pipe(\n map(this.handleMapper<BasePageModel<T>>),\n takeUntil(this.handleDestroy),\n catchError(this.handleError),\n );\n }\n\n /**\n * `GET` - Refere-se ao endpoint find-all-enabled.\n *\n * @param page Número da página a ser recuperada, com valor mínimo de 0.\n * @param size Número de itens por página, com valor mínimo de 10.\n * @param version (Opcional) Versão da API a ser utilizada na URL.\n * @returns Um `Observable<BasePageModel<T>>` que retorna uma página de entidades \"Ativas\".\n * A resposta será um objeto contendo dados paginados, como os itens da página e informações sobre a página atual.\n *\n * @example\n * findAllEnabled(0, 10)\n * .subscribe(page => console.log(page.content));\n */\n public findAllEnabled<T = TEntity>(\n page: number,\n size: number,\n version?: string,\n ): Observable<BasePageModel<T>> {\n const validatedPage: number = Math.max(page, 0);\n const validatedSize: number = Math.max(size, 10);\n\n const params: URLSearchParams = new URLSearchParams();\n params.set('page', validatedPage.toString());\n params.set('size', validatedSize.toString());\n\n const queryString: string = !StringUtil.isEmpty(params.toString())\n ? `?${params.toString()}`\n : '';\n\n return this.httpClient\n .get<\n BasePageModel<T>\n >(this.url(`find-all-enabled${queryString}`, version), this.options())\n .pipe(\n map(this.handleMapper<BasePageModel<T>>),\n takeUntil(this.handleDestroy),\n catchError(this.handleError),\n );\n }\n\n /**\n * `GET` - Refere-se ao endpoint find-by-value.\n *\n * @param value (Opcional) Valor a ser buscado. Vazio para não validar.\n * @param page Número da página a ser recuperada, com valor mínimo de 0.\n * @param size Número de itens por página, com valor mínimo de 10.\n * @param sort (Opcional) Modelo de ordenação que especifica o campo e a direção da ordenação.\n * @param version (Opcional) Versão da API a ser utilizada na URL.\n * @returns Um `Observable<BasePageModel<T>>` que retorna uma página de entidades baseadas no valor fornecido.\n * A resposta será um objeto contendo dados paginados, como os itens da página e informações sobre a página atual.\n *\n * @example\n * findByValue('', 0, 10, { field: 'name', direction: 'ASC' })\n * .subscribe(page => console.log(page.content));\n *\n * findByValue('John', 0, 10)\n * .subscribe(page => console.log(page.content));\n */\n public findByValue<T = TEntity>(\n value: string,\n page: number,\n size: number,\n sort?: BaseSortModel[],\n version?: string,\n ): Observable<BasePageModel<T>> {\n const formattedValue: string = !StringUtil.isEmpty(value) ? value.trim() : '';\n const validatedPage: number = Math.max(page, 0);\n const validatedSize: number = Math.max(size, 10);\n\n const queryParams: BaseQueryParams = {\n page: validatedPage,\n size: validatedSize,\n value: formattedValue,\n sort: !ArrayUtil.isEmpty(sort) ? sort : [],\n };\n\n const queryString: string = this.buildQueryParams(queryParams);\n\n return this.httpClient\n .get<BasePageModel<T>>(this.url(`find-by-value${queryString}`, version), this.options())\n .pipe(\n map(this.handleMapper<BasePageModel<T>>),\n takeUntil(this.handleDestroy),\n catchError(this.handleError),\n );\n }\n\n /**\n * `PATCH` - Refere-se ao endpoint enable-or-disable.\n *\n * @param id ID da entidade a ser habilitada ou desabilitada. Deve ser um UUID válido.\n * @param action Ação a ser realizada. Pode ser 'DISABLE' ou 'ENABLE'.\n * @param version (Opcional) Versão da API a ser utilizada na URL.\n * @returns Um `Observable<boolean>` que emite `true` caso a operação tenha sido bem-sucedida, ou `false` caso contrário.\n *\n * @example\n * enableOrDisable('123e4567-e89b-12d3-a456-426614174000', 'ENABLE')\n * .subscribe(success => console.log('Entidade ativa'));\n *\n * enableOrDisable('123e4567-e89b-12d3-a456-426614174000', 'DISABLE')\n * .subscribe(success => console.log('Entidade inativa'));\n */\n public enableOrDisable(\n id: GIPIUuid,\n action: 'DISABLE' | 'ENABLE',\n version?: string,\n ): Observable<boolean> {\n if (!UUIDUtil.isValid(id)) {\n return of(false);\n }\n return this.httpClient\n .patch(this.url(`/enable-or-disable/${id}/${action}`, version), {}, this.options())\n .pipe(\n map(() => true),\n takeUntil(this.handleDestroy),\n catchError(this.handleError),\n );\n }\n\n /**\n * `PATCH` - Refere-se ao endpoint enable-or-disable-all.\n *\n * @param idList Lista de IDs das entidades a serem habilitadas ou desabilitadas. Cada ID deve ser um UUID válido.\n * @param action Ação a ser realizada. Pode ser 'DISABLE' ou 'ENABLE'.\n * @param version (Opcional) Versão da API a ser utilizada na URL.\n * @returns Um `Observable<boolean>` que emite `true` caso a operação tenha sido bem-sucedida para todas as entidades, ou `false` caso algum ID seja inválido ou ocorra um erro.\n *\n * @example\n * enableOrDisableAll(['123e4567-e89b-12d3-a456-426614174000', '987e6543-e21b-12d3-a456-426614174001'], 'ENABLE')\n * .subscribe(success => console.log('Entidades ativas'));\n *\n * enableOrDisableAll(['123e4567-e89b-12d3-a456-426614174000', '987e6543-e21b-12d3-a456-426614174001'], 'DISABLE')\n * .subscribe(success => console.log('Entidades inativas'));\n */\n public enableOrDisableAll(\n idList: GIPIUuid[],\n action: 'DISABLE' | 'ENABLE',\n version?: string,\n ): Observable<boolean> {\n for (const uuid of idList) {\n if (!UUIDUtil.isValid(uuid)) {\n return of(false);\n }\n }\n\n return this.httpClient\n .patch(this.url(`/enable-or-disable-all/${action}`, version), idList, this.options())\n .pipe(\n map(() => true),\n takeUntil(this.handleDestroy),\n catchError(this.handleError),\n );\n }\n\n /**\n * Valida um objeto, verificando se ele está vazio.\n *\n * @param entity O objeto a ser validado.\n * @returns Uma mensagem de erro caso o objeto esteja vazio. Caso contrário, retorna uma string vazia.\n *\n * @example\n * const result = validate(myEntity);\n * console.log(result); // Se vazio, retornará 'Objeto não pode ser vazio', caso contrário, retorna ''.\n */\n public validate<T = TEntity>(entity: T): boolean {\n if (ObjectUtil.isEmpty(entity)) {\n this.toastService.error('Objeto não pode ser vazio');\n return false;\n }\n return true;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Directive, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { finalize } from 'rxjs/operators';\nimport {\n tTypeOperationCloseDialog,\n tTypeOperationDialog,\n} from '../../enums/type-operation-dialog.enum';\nimport { GIPIUuid } from '../../types/uuid.type';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { UUIDUtil } from '../../utils/uuid.util';\nimport { BaseFilterModel } from '../models/base-filter.model';\nimport { BaseFormDialogDataModel } from '../models/base-form-dialog-data.model';\nimport { BaseModel } from '../models/base.model';\nimport { BaseCrudService } from '../services/base-crud.service';\nimport { BaseComponent } from './base.component';\n\n@Directive()\nexport abstract class BaseFormDialogComponent<TEntity extends BaseModel> extends BaseComponent {\n public override ORIGIN_SCREEN: string = 'DIALOG_FORM';\n\n protected readonly dialogRef = inject(MatDialogRef<any>);\n protected readonly dialogData = (() => {\n try {\n return inject<BaseFormDialogDataModel>(MAT_DIALOG_DATA);\n } catch {\n return { id: null, typeOperation: 'NEW' } as BaseFormDialogDataModel;\n }\n })();\n\n private _entity: TEntity = this.newEntity();\n public get entity(): TEntity {\n return this._entity;\n }\n public set entity(value: TEntity) {\n this._entity = value;\n }\n\n public get typeOperation(): tTypeOperationDialog {\n return this.dialogData?.typeOperation ?? 'NEW';\n }\n\n constructor(protected service: BaseCrudService<TEntity, BaseFilterModel>) {\n super();\n // Desabilita o fechamento do diálogo via clique fora ou \"Escape\" inicialmente.\n this.dialogRef.disableClose = true;\n\n // Captura a tecla ESC e solicita confirmação para o fechamento do diálogo.\n this.dialogRef\n .keydownEvents()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n if (event.key === 'Escape') {\n this.confirmDialogService.show({\n title: 'Confirmação',\n message: 'Deseja retornar à tela anterior?',\n accept: () => this.close('NONE'),\n });\n }\n });\n }\n\n protected abstract newEntity(): TEntity;\n protected abstract isValid(): boolean;\n protected abstract confirm(): void;\n\n /**\n * Método chamado logo após obter o registro via `getOne`.\n * Este método é executado apenas uma vez, quando o componente é instanciado e um registro é recuperado.\n * Pode ser sobrescrito para realizar ações adicionais após o carregamento do registro.\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected onAfterGetOne(): void {}\n\n /**\n * Inicializa o formulário. Se um `ID` for encontrado no MAT_DIALOG_DATA e for válido, busca os\n * dados do serviço e os carrega na entidade. Caso contrário, cria uma nova entidade.\n * @param version (Opcional) A versão do endpoint `getOne`.\n */\n protected override onInitForm(version?: string): void {\n this.loading.set(true);\n\n const id: GIPIUuid = this.dialogData?.id ?? null;\n if (UUIDUtil.isValid(id)) {\n this.service\n .getOne<TEntity>(id, version)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: (entity) => {\n this.entity = !ObjectUtil.isEmpty(entity) ? entity : this.newEntity();\n this.onAfterGetOne();\n this.loading.set(false);\n },\n error: (error) => {\n this.loading.set(false);\n this.handleError(error);\n },\n });\n } else {\n this.entity = this.newEntity();\n this.onAfterGetOne();\n this.loading.set(false);\n }\n }\n\n /**\n * Fecha o diálogo e informa à tela de origem qual ação deve ser executada após o fechamento.\n *\n * @options\n * - RELOAD_TABLE: Atualizar a tabela.\n * - REMARK_SELECTED: Remarcar dos itens selecionados.\n * - NONE: Nenhuma ação será executada.\n *\n * @param action Ação a ser executada após o fechamento do diálogo.\n */\n protected close<T = 'NONE'>(action: tTypeOperationCloseDialog | T): void {\n this.dialogRef.close(action);\n }\n}\n","import { Directive } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { finalize } from 'rxjs';\nimport { GIPIUuid } from '../../types/uuid.type';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { UUIDUtil } from '../../utils/uuid.util';\nimport { BaseFilterModel } from '../models/base-filter.model';\nimport { BaseModel } from '../models/base.model';\nimport { BaseCrudService } from '../services/base-crud.service';\nimport { BaseComponent } from './base.component';\n\n@Directive()\nexport abstract class BaseFormComponent<TEntity extends BaseModel> extends BaseComponent {\n private _entity: TEntity = this.newEntity();\n public get entity(): TEntity {\n return this._entity;\n }\n public set entity(value: TEntity) {\n this._entity = value;\n }\n\n constructor(protected service: BaseCrudService<TEntity, BaseFilterModel>) {\n super();\n }\n\n protected abstract getPath(): string;\n protected abstract newEntity(): TEntity;\n protected abstract isValid(): boolean;\n\n /**\n * Método chamado logo após a obtenção do registro via `getOne`.\n *\n * @description\n * Este método é executado apenas uma vez, quando o componente é instanciado e um registro é recuperado.\n * Pode ser sobrescrito para realizar ações adicionais após o carregamento do registro.\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected onAfterGetOne(): void {}\n\n /**\n * Método chamado sempre que `save()` é invocado.\n *\n * @description\n * Este método é executado sempre que o método `save` é chamado, sendo executado depois da validação\n * via `isValid`.\n * Pode ser sobrescrito para realizar ações adicionais antes do salvamento.\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected preSave(): void {}\n\n /**\n * Inicializa o formulário. Se um `ID` for encontrado na URL e for válido, busca os\n * dados do serviço e os carrega na entidade. Caso contrário, cria uma nova entidade.\n * @param version (Opcional) A versão do endpoint `getOne`.\n */\n protected override onInitForm(version?: string): void {\n this.loading.set(true);\n\n const id: GIPIUuid = this.activatedRoute.snapshot.params['id'];\n if (UUIDUtil.isValid(id)) {\n this.service\n .getOne<TEntity>(id, version)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: (entity) => {\n this.entity = !ObjectUtil.isEmpty(entity) ? entity : this.newEntity();\n this.onAfterGetOne();\n },\n error: (error) => this.handleError(error),\n });\n } else {\n this.entity = this.newEntity();\n this.onAfterGetOne();\n this.loading.set(false);\n }\n }\n\n /**\n * Salva a entidade fornecida ou a entidade atual do formulário.\n * Se a validação for bem-sucedida, a entidade será enviada para o serviço e salva no banco de dados.\n * Após a conclusão bem-sucedida, um alerta de sucesso é exibido e, se necessário, o usuário é redirecionado.\n * @param entity (Opcional) A entidade a ser salva. Se não for informada, a entidade do formulário será usada.\n * @param toGoBack Indica se o usuário deve ser redirecionado após a conclusão do salvamento (padrão: `true`).\n * @param version (Opcional) A versão da entidade a ser salva.\n */\n public save(toGoBack: boolean = true, version?: string): void {\n if (!this.isValid()) {\n this.loading.set(false);\n return;\n }\n\n this.loading.set(true);\n\n this.preSave();\n\n this.service\n .save(this.entity, version)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: (_) => {\n this.toastService.success(this.appMessages.SUCCESS);\n if (toGoBack) {\n this.routerNavigate([this.getPath()]);\n }\n },\n error: (error) => {\n this.loading.set(false);\n this.handleError(error);\n },\n });\n }\n\n /**\n * Retorna para a página anterior.\n * @param showConfirmation Indica se um alerta de confirmação deve ser exibido antes de sair (padrão: `true`).\n */\n public goBack(showConfirmation: boolean = true): void {\n if (!this.isViewing() || showConfirmation) {\n this.confirmDialogService.show({\n title: 'Confirmação',\n message: this.appMessages.RETURN_CONFIRMATION,\n accept: () => this.routerNavigate([this.getPath()]),\n });\n } else {\n this.routerNavigate([this.getPath()]);\n }\n }\n}\n","import type { tSortDirection } from '../../enums/sort-direction.enum';\n\nexport class BaseSortModel {\n /** Direção da ordenação */\n direction: tSortDirection;\n\n /** Nome do campo para a ordenação */\n field: string;\n\n constructor(field?: string, direction?: tSortDirection) {\n this.field = field || '';\n this.direction = direction || 'DESC';\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { computed, Directive, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { finalize, take } from 'rxjs/operators';\nimport { TableColumn } from '../../components/table/shared/table-column.model';\nimport { TableMenuItemContext } from '../../components/table/shared/table-menu-item-context.model';\nimport { tSortDirection } from '../../enums/sort-direction.enum';\nimport { tPageEvent } from '../../types/page-event.type';\nimport { ArrayUtil } from '../../utils/array.util';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { StringUtil } from '../../utils/string.util';\nimport { BaseAppliedFilter } from '../models/base-applied-filter.model';\nimport { BaseFilterModel } from '../models/base-filter.model';\nimport { BaseListDialogDataModel } from '../models/base-list-dialog-data.model';\nimport { BasePageModel } from '../models/base-page.model';\nimport { BaseSortModel } from '../models/base-sort.model';\nimport { BaseModel } from '../models/base.model';\nimport { BaseCrudService } from '../services/base-crud.service';\nimport { BaseComponent } from './base.component';\n\n@Directive()\nexport abstract class BaseListDialogComponent<\n TEntity extends BaseModel,\n TFilter extends BaseFilterModel,\n> extends BaseComponent {\n public override ORIGIN_SCREEN: string = 'DIALOG_LIST';\n\n protected readonly dialogRef = inject(MatDialogRef<any>);\n protected readonly dialogData = (() => {\n try {\n return inject<BaseListDialogDataModel<TEntity>>(MAT_DIALOG_DATA);\n } catch {\n return { optionsSelected: [], selectOne: false } as BaseListDialogDataModel<TEntity>;\n }\n })();\n\n protected filter = signal<TFilter>(this.newFilter());\n protected page = signal<BasePageModel<TEntity>>(this.newPage());\n protected tableColumns = signal<TableColumn[]>([]);\n protected tableMenuItemsContext = signal<TableMenuItemContext[]>([]);\n protected appliedFilters = signal<BaseAppliedFilter[]>([]);\n protected selectedEntities = new SelectionModel<TEntity>(true, []);\n\n protected tableData = computed(() => {\n const page = this.page();\n if (ObjectUtil.isEmpty(page) || ArrayUtil.isEmpty(page.content)) {\n return [];\n }\n return page.content;\n });\n\n protected tablePageNumber = computed(() => {\n const page = this.page();\n if (ObjectUtil.isEmpty(page)) {\n return 0;\n }\n return page.number;\n });\n\n protected tableTotalElements = computed(() => {\n const page = this.page();\n if (ObjectUtil.isEmpty(page)) {\n return 0;\n }\n return page.totalElements;\n });\n\n protected tableTotalPages = computed(() => {\n const page = this.page();\n if (ObjectUtil.isEmpty(page)) {\n return 0;\n }\n return page.totalPages;\n });\n\n constructor(protected service: BaseCrudService<TEntity, TFilter>) {\n super();\n // Desabilita o fechamento do diálogo via clique fora ou \"Escape\" inicialmente.\n this.dialogRef.disableClose = true;\n\n // Captura a tecla ESC e solicita confirmação para o fechamento do diálogo.\n this.dialogRef\n .keydownEvents()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n if (event.key === 'Escape') {\n this.confirmDialogService.show({\n title: 'Confirmação',\n message: 'Deseja retornar à tela anterior?',\n accept: () => this.close('NONE'),\n });\n }\n });\n }\n\n protected abstract newPage(): BasePageModel<TEntity>;\n protected abstract newFilter(): TFilter;\n protected abstract setAppliedFilters(): void;\n protected abstract removeAppliedFilters(chip: BaseAppliedFilter): void;\n\n protected createTableColumns(): TableColumn[] {\n return [];\n }\n\n protected createMenuItemsContext(): TableMenuItemContext[] {\n return [];\n }\n\n protected existInAppliedFilters<T = unknown>(key: T): boolean {\n return (\n !ArrayUtil.isEmpty(this.appliedFilters) &&\n this.appliedFilters().findIndex((e) => e.key === key) >= 0\n );\n }\n\n /**\n * Método chamado quando o componente é inicializado.\n * - Chamado no OnInit\n * @description\n * - 1° - `this.newPage()` - Cria uma nova página\n * - 2° - `this.newFilter()` - Cria um novo filtro\n * - 3° - `this.createTableColumns()` - Cria as colunas da tabela\n * - 4° - `this.createMenuItemsContext()` - Cria os itens do menu da tabela\n * - 6° - `this.setAppliedFilters()` - Aplica os filtros salvos na sessão\n * - 7° - `this.onHandleSelectRows(...)` - Seleciona os registros passados via `MAT_DIALOG_DATA`\n */\n protected override onInitForm(): void {\n this.page.set(this.newPage());\n this.filter.set(this.newFilter());\n\n this.tableColumns.set(this.createTableColumns());\n this.tableMenuItemsContext.set(this.createMenuItemsContext());\n\n if (!ObjectUtil.isEmpty(this.filter)) {\n this.setAppliedFilters();\n }\n\n this.onHandleSelectRows(this.dialogData?.optionsSelected ?? []);\n }\n\n public findAll(pageEvent: tPageEvent = null): void {\n try {\n this.loading.set(true);\n\n this.page.set(this.newPage());\n if (ObjectUtil.isEmpty(this.filter())) {\n this.filter.set(this.newFilter());\n }\n\n const filter = this.filter();\n if (!ObjectUtil.isEmpty(pageEvent)) {\n filter.pageNumber = pageEvent.pageIndex;\n filter.pageSize = pageEvent.pageSize;\n filter.offset = pageEvent.pageIndex * pageEvent.pageSize;\n\n if (pageEvent.sort) {\n filter.sorts = [\n new BaseSortModel(\n pageEvent.sort.field,\n StringUtil.isEmpty(pageEvent.sort.direction)\n ? 'DESC'\n : (pageEvent.sort.direction.toUpperCase() as tSortDirection),\n ),\n ];\n }\n } else {\n filter.pageNumber = filter?.pageNumber || 0;\n filter.offset = filter?.offset || 0;\n filter.pageSize = filter?.pageSize || 10;\n }\n this.filter.update((prev) => ({ ...prev, ...filter }));\n\n this.setAppliedFilters();\n\n this.service\n .findAll<TFilter, TEntity>(this.filter())\n .pipe(\n take(1),\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: (page) => {\n if (!ObjectUtil.isEmpty(page)) {\n this.page.set(page);\n } else {\n this.page.set(this.newPage());\n }\n\n this.onAfterFindAll();\n },\n error: (error) => this.handleError(error),\n });\n } catch (e) {\n this.loading.set(false);\n this.handleError(e);\n }\n }\n\n /**\n * Método chamado após a busca dos registros.\n * - Chamado após a execução do método `findAll()`\n */\n public onAfterFindAll(): void {\n // Método para ser sobrescrito se necessário\n }\n\n public resetFilter(): void {\n this.page.set(this.newPage());\n this.filter.set(this.newFilter());\n this.appliedFilters.set([]);\n this.findAll();\n }\n\n protected onHandleSelectRows(selectedEntities: TEntity[]): void {\n if (ArrayUtil.isEmpty(selectedEntities)) {\n this.selectedEntities.clear();\n } else {\n this.selectedEntities.select(...selectedEntities);\n }\n }\n\n protected onHandleSelectRow(entity: TEntity): void {\n this.selectedEntities.toggle(entity);\n }\n\n /**\n * Fecha o diálogo e informa à tela de origem qual ação deve ser executada após o fechamento.\n *\n * @options\n * - NONE: Nenhuma ação será executada.\n *\n * @param action Ação a ser executada após o fechamento do diálogo.\n */\n protected close<T = 'NONE'>(action?: T): void {\n this.dialogRef.close(action);\n }\n}\n","import { computed, Directive, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { finalize, take } from 'rxjs/operators';\nimport { TableColumn } from '../../components/table/shared/table-column.model';\nimport { TableMenuItemContext } from '../../components/table/shared/table-menu-item-context.model';\nimport type { TreeTableMenuItemContext } from '../../components/tree-table/shared/tree-table-menu-item-context.model';\nimport type { tSortDirection } from '../../enums';\nimport { tPageEvent } from '../../types/page-event.type';\nimport { GIPIUuid } from '../../types/uuid.type';\nimport { ArrayUtil } from '../../utils/array.util';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { StorageUtil } from '../../utils/storage.util';\nimport { StringUtil } from '../../utils/string.util';\nimport { UUIDUtil } from '../../utils/uuid.util';\nimport { BaseAppliedFilter } from '../models/base-applied-filter.model';\nimport { BaseFilterModel } from '../models/base-filter.model';\nimport { BasePageModel } from '../models/base-page.model';\nimport { BaseSortModel } from '../models/base-sort.model';\nimport { BaseModel } from '../models/base.model';\nimport { BaseCrudService } from '../services/base-crud.service';\nimport { TreeTableColumn } from './../../components/tree-table/shared/tree-table-column.model';\nimport { BaseComponent } from './base.component';\n\n@Directive()\nexport abstract class BaseListComponent<\n TEntity extends BaseModel,\n TFilter extends BaseFilterModel,\n> extends BaseComponent {\n protected filter = signal<TFilter>(this.newFilter());\n protected page = signal<BasePageModel<TEntity>>(this.newPage());\n protected tableColumns = signal<TableColumn[]>([]);\n protected tableMenuItemsContext = signal<TableMenuItemContext[]>([]);\n protected treeTableColumns = signal<TreeTableColumn[]>([]);\n protected treeTableMenuItemsContext = signal<TreeTableMenuItemContext[]>([]);\n protected appliedFilters = signal<BaseAppliedFilter[]>([]);\n\n protected tableData = computed(() => {\n const page = this.page();\n if (ObjectUtil.isEmpty(page) || ArrayUtil.isEmpty(page.content)) {\n return [];\n }\n return page.content;\n });\n\n protected tablePageNumber = computed(() => {\n const page = this.page();\n if (ObjectUtil.isEmpty(page)) {\n return 0;\n }\n return page.number;\n });\n\n protected tableTotalElements = computed(() => {\n const page = this.page();\n if (ObjectUtil.isEmpty(page)) {\n return 0;\n }\n return page.totalElements;\n });\n\n protected tableTotalPages = computed(() => {\n const page = this.page();\n if (ObjectUtil.isEmpty(page)) {\n return 0;\n }\n return page.totalPages;\n });\n\n constructor(protected service: BaseCrudService<TEntity, BaseFilterModel>) {\n super();\n }\n\n protected abstract getPath(): string;\n protected abstract newPage(): BasePageModel<TEntity>;\n protected abstract newFilter(): TFilter;\n protected abstract setAppliedFilters(): void;\n protected abstract removeAppliedFilters(chip: BaseAppliedFilter): void;\n\n protected createTableColumns(): TableColumn[] {\n return [];\n }\n\n protected createTreeTableColumns(): TreeTableColumn[] {\n return [];\n }\n\n protected createMenuItemsContext(): TableMenuItemContext[] {\n return [];\n }\n\n protected createTreeMenuItemsContext(): TreeTableMenuItemContext[] {\n return [];\n }\n\n protected existInAppliedFilters<T = unknown>(key: T): boolean {\n return (\n !ArrayUtil.isEmpty(this.appliedFilters) &&\n this.appliedFilters().findIndex((e) => e.key === key) >= 0\n );\n }\n\n /**\n * Método chamado quando o componente é inicializado.\n * - Chamado no OnInit\n * @description\n * - 1° - `this.newPage()` - Cria uma nova página\n * - 2° - `this.newFilter()` - Cria um novo filtro\n * - 3° - `this.createTableColumns()` - Cria as colunas da tabela\n * - 4° - `this.createMenuItemsContext()` - Cria os itens do menu da tabela\n * - 6° - `this.setAppliedFilters()` - Aplica os filtros salvos na sessão\n */\n protected override onInitForm(): void {\n this.page.set(this.newPage());\n this.filter.set(this.newFilter());\n\n this.tableColumns.set(this.createTableColumns());\n this.tableMenuItemsContext.set(this.createMenuItemsContext());\n\n this.treeTableColumns.set(this.createTreeTableColumns());\n this.treeTableMenuItemsContext.set(this.createTreeMenuItemsContext());\n // const filterSessionStorage: Nullable<TFilter> = StorageUtil.getSessionItem<TFilter>(this.SESSION_STORAGE_FILTER);\n // if (!ObjectUtil.isEmpty(filterSessionStorage)) {\n // this.handleFilterSessionStorage();\n // }\n\n if (!ObjectUtil.isEmpty(this.filter)) {\n this.setAppliedFilters();\n }\n }\n\n public findAll(pageEvent: tPageEvent = null): void {\n try {\n this.loading.set(true);\n\n this.page.set(this.newPage());\n if (ObjectUtil.isEmpty(this.filter())) {\n this.filter.set(this.newFilter());\n }\n\n // if (\n // !ObjectUtil.isEmpty(pageEvent) &&\n // ObjectUtil.hasPropertyInObj(pageEvent, 'pageIndex')\n // ) {\n // pageEvent.pageIndex = 0;\n // }\n\n const filter = this.filter();\n if (!ObjectUtil.isEmpty(pageEvent)) {\n filter.pageNumber = pageEvent.pageIndex;\n filter.pageSize = pageEvent.pageSize;\n filter.offset = pageEvent.pageIndex * pageEvent.pageSize;\n\n if (pageEvent.sort) {\n filter.sorts = [\n new BaseSortModel(\n pageEvent.sort.field,\n StringUtil.isEmpty(pageEvent.sort.direction)\n ? 'DESC'\n : (pageEvent.sort.direction.toUpperCase() as tSortDirection),\n ),\n ];\n }\n } else {\n filter.pageNumber = filter?.pageNumber || 0;\n filter.offset = filter?.offset || 0;\n filter.pageSize = filter?.pageSize || 10;\n }\n this.filter.update((prev) => ({ ...prev, ...filter }));\n\n this.setAppliedFilters();\n\n this.service\n .findAll<TFilter, TEntity>(this.filter())\n .pipe(\n take(1),\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: (page) => {\n if (!ObjectUtil.isEmpty(page)) {\n this.page.set(page);\n } else {\n this.page.set(this.newPage());\n }\n\n this.onAfterFindAll();\n },\n error: (error) => this.handleError(error),\n });\n } catch (e) {\n this.loading.set(false);\n this.handleError(e);\n }\n }\n\n /**\n * Método chamado após a busca dos registros.\n * - Chamado após a execução do método `findAll()`\n */\n public onAfterFindAll(): void {\n // Método para ser sobrescrito se necessário\n }\n\n public newRegister(permission?: string): void {\n if (StringUtil.isEmpty(permission) && ObjectUtil.isEmpty(this.permissions)) {\n // this.setFilterSessionStorage();\n this.routerNavigate([this.getPath(), 'new']);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isEmpty(this.permissions)) {\n permission = this.permissions.MAKE;\n }\n if (!this.authService.hasPermission(permission!)) {\n this.toastService.warning(this.appMessages.NOT_PERMISSION);\n return;\n }\n\n // this.setFilterSessionStorage();\n this.routerNavigate([this.getPath(), 'new']);\n }\n }\n\n public editRegister(id?: GIPIUuid, permission?: string): void {\n id = this.handleEntityId(id);\n if (ObjectUtil.isEmpty(id)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isEmpty(this.permissions)) {\n // this.setFilterSessionStorage();\n this.routerNavigate([this.getPath(), 'edit', id]);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isEmpty(this.permissions)) {\n permission = this.permissions.UPDATE;\n }\n if (!this.authService.hasPermission(permission!)) {\n this.toastService.warning(this.appMessages.NOT_PERMISSION);\n return;\n }\n\n // this.setFilterSessionStorage();\n this.routerNavigate([this.getPath(), 'edit', id]);\n }\n }\n\n public deleteRegister(\n id?: GIPIUuid,\n permission?: string,\n fetchAgain: boolean = true,\n version?: string,\n ): void {\n try {\n id = this.handleEntityId(id);\n if (ObjectUtil.isEmpty(id)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isEmpty(this.permissions)) {\n this._deleteRegister(id, fetchAgain, version);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isEmpty(this.permissions)) {\n permission = this.permissions.DELETE;\n }\n if (!this.authService.hasPermission(permission!)) {\n this.toastService.warning(this.appMessages.NOT_PERMISSION);\n return;\n }\n this._deleteRegister(id, fetchAgain, version);\n }\n } catch (e) {\n this.loading.set(false);\n if (this.isListing()) {\n this.resetFilter();\n }\n this.handleError(e);\n }\n }\n\n /** @Internal */\n private _deleteRegister(id: GIPIUuid, fetchAgain: boolean = true, version?: string): void {\n this.confirmDialogService.show({\n title: 'Confirmação',\n message: this.appMessages.DELETE_CONFIRMATION,\n accept: () => {\n // this.setFilterSessionStorage();\n this.page.set(this.newPage());\n this.loading.set(true);\n\n this.service\n .delete(id, version)\n .pipe(\n take(1),\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: (_) => {\n this.toastService.success(this.appMessages.SUCCESS);\n if (fetchAgain) {\n this.findAll();\n }\n },\n error: (error) => this.handleError(error),\n });\n },\n cancel: () => this.loading.set(false),\n });\n }\n\n public deleteAllRegister(\n idList: GIPIUuid[] | null,\n permission?: string,\n fetchAgain: boolean = true,\n version?: string,\n ): void {\n try {\n idList = this.handleEntityIdList(idList);\n if (ArrayUtil.isEmpty(idList)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isEmpty(this.permissions)) {\n this._deleteAllRegister(idList, fetchAgain, version);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isEmpty(this.permissions)) {\n permission = this.permissions.DELETE;\n }\n if (!this.authService.hasPermission(permission!)) {\n this.toastService.warning(this.appMessages.NOT_PERMISSION);\n return;\n }\n\n this._deleteAllRegister(idList, fetchAgain, version);\n }\n } catch (e) {\n this.loading.set(false);\n if (this.isListing()) {\n this.resetFilter();\n }\n this.handleError(e);\n }\n }\n\n /** @Internal */\n private _deleteAllRegister(\n idList: GIPIUuid[],\n fetchAgain: boolean = true,\n version?: string,\n ): void {\n this.confirmDialogService.show({\n title: 'Confirmação',\n message: this.appMessages.DELETE_CONFIRMATION,\n accept: () => {\n // this.setFilterSessionStorage();\n this.page.set(this.newPage());\n this.loading.set(true);\n\n this.service\n .deleteAll(idList, version)\n .pipe(\n take(1),\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: (_) => {\n this.toastService.success(this.appMessages.SUCCESS);\n if (fetchAgain) {\n this.findAll();\n }\n },\n error: (error) => this.handleError(error),\n });\n },\n cancel: () => this.loading.set(false),\n });\n }\n\n public viewRegister(id?: GIPIUuid, permission?: string): void {\n id = this.handleEntityId(id);\n if (ObjectUtil.isEmpty(id)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isEmpty(this.permissions)) {\n // this.setFilterSessionStorage();\n this.routerNavigate([this.getPath(), 'view', id]);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isEmpty(this.permissions)) {\n permission = this.permissions.READ;\n }\n if (!this.authService.hasPermission(permission!)) {\n this.toastService.warning(this.appMessages.NOT_PERMISSION);\n return;\n }\n\n // this.setFilterSessionStorage();\n this.routerNavigate([this.getPath(), 'view', id]);\n }\n }\n\n public editOrViewRegister(id: GIPIUuid, permission: string): void {\n if (this.authService.hasPermission(permission)) {\n this.editRegister(id, permission);\n } else {\n this.viewRegister(id, permission);\n }\n }\n\n public enableOrDisableRegister(\n action: 'DISABLE' | 'ENABLE',\n id?: GIPIUuid,\n permission?: string,\n fetchAgain: boolean = true,\n version?: string,\n ): void {\n try {\n id = this.handleEntityId(id);\n if (ObjectUtil.isEmpty(id)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isEmpty(this.permissions)) {\n this._enableOrDisableRegister(action, id, fetchAgain, version);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isEmpty(this.permissions)) {\n permission = this.permissions.UPDATE;\n }\n if (!this.authService.hasPermission(permission!)) {\n this.toastService.warning(this.appMessages.NOT_PERMISSION);\n return;\n }\n\n this._enableOrDisableRegister(action, id, fetchAgain, version);\n }\n } catch (e) {\n this.loading.set(false);\n if (this.isListing()) {\n this.resetFilter();\n }\n this.handleError(e);\n }\n }\n\n /** @Internal */\n private _enableOrDisableRegister(\n action: 'DISABLE' | 'ENABLE',\n id: GIPIUuid,\n fetchAgain: boolean = true,\n version?: string,\n ): void {\n this.confirmDialogService.show({\n title: 'Confirmação',\n message: `Deseja realmente ${action === 'DISABLE' ? 'inativar' : 'ativar'} este registro?`,\n accept: () => {\n // this.setFilterSessionStorage();\n this.page.set(this.newPage());\n this.loading.set(true);\n\n this.service\n .enableOrDisable(id, action, version)\n .pipe(\n take(1),\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: (_) => {\n this.toastService.success(this.appMessages.SUCCESS);\n if (fetchAgain) {\n this.findAll();\n }\n },\n error: (error) => this.handleError(error),\n });\n },\n cancel: () => this.loading.set(false),\n });\n }\n\n public enableAndDisableAllRegister(\n action: 'DISABLE' | 'ENABLE',\n idList: GIPIUuid[] | null,\n permission?: string,\n fetchAgain: boolean = true,\n version?: string,\n ): void {\n try {\n idList = this.handleEntityIdList(idList);\n if (ArrayUtil.isEmpty(idList)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isEmpty(this.permissions)) {\n this._enableAndDisableAllRegister(action, idList, fetchAgain, version);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isEmpty(this.permissions)) {\n permission = this.permissions.UPDATE;\n }\n if (!this.authService.hasPermission(permission!)) {\n this.toastService.warning(this.appMessages.NOT_PERMISSION);\n return;\n }\n\n this._enableAndDisableAllRegister(action, idList, fetchAgain, version);\n }\n } catch (e) {\n this.loading.set(false);\n if (this.isListing()) {\n this.resetFilter();\n }\n this.handleError(e);\n }\n }\n\n /** @Internal */\n private _enableAndDisableAllRegister(\n action: 'DISABLE' | 'ENABLE',\n idList: GIPIUuid[],\n fetchAgain: boolean = true,\n version?: string,\n ): void {\n this.confirmDialogService.show({\n title: 'Confirmação',\n message: `Deseja realmente ${action === 'DISABLE' ? 'inativar' : 'ativar'} os registros selecionados?`,\n accept: () => {\n // this.setFilterSessionStorage();\n\n this.loading.set(true);\n this.page.set(this.newPage());\n this.loading.set(true);\n\n this.service\n .enableOrDisableAll(idList, action, version)\n .pipe(\n take(1),\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.loading.set(false)),\n )\n .subscribe({\n next: (_) => {\n this.toastService.success(this.appMessages.SUCCESS);\n if (fetchAgain) {\n this.findAll();\n }\n },\n error: (error) => this.handleError(error),\n });\n },\n cancel: () => this.loading.set(false),\n });\n }\n\n public cloneRegister(id?: GIPIUuid, permission?: string): void {\n id = this.handleEntityId(id);\n if (ObjectUtil.isEmpty(id)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isEmpty(this.permissions)) {\n // this.setFilterSessionStorage();\n this.routerNavigate([this.getPath(), 'new', 'clone', id]);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isEmpty(this.permissions)) {\n permission = this.permissions.MAKE;\n }\n if (!this.authService.hasPermission(permission!)) {\n this.toastService.warning(this.appMessages.NOT_PERMISSION);\n return;\n }\n\n // this.setFilterSessionStorage();\n this.routerNavigate([this.getPath(), 'new', 'clone', id]);\n }\n }\n\n public resetFilter(): void {\n StorageUtil.removeSessionItem(this.SESSION_STORAGE_FILTER);\n this.page.set(this.newPage());\n this.filter.set(this.newFilter());\n this.appliedFilters.set([]);\n this.findAll();\n }\n\n public handleEntityId(id: GIPIUuid): GIPIUuid {\n if (!UUIDUtil.isValid(id)) {\n throw new Error('O identificador do registro não é válido');\n }\n\n const page = this.page();\n if (\n ObjectUtil.isEmpty(id) &&\n !ObjectUtil.isEmpty(page) &&\n !ArrayUtil.isEmpty(page.content)\n ) {\n const firstSeletected = page.content.filter((c) => c.selected)[0];\n if (ObjectUtil.isEmpty(firstSeletected)) {\n return null;\n }\n return firstSeletected.id;\n }\n\n return id;\n }\n\n public handleEntityIdList(idList: GIPIUuid[] | null): GIPIUuid[] {\n if (!ArrayUtil.isEmpty(idList)) {\n for (const id of idList) {\n if (!UUIDUtil.isValid(id)) {\n throw new Error('O identificador do registro não é válido');\n }\n }\n }\n\n const page = this.page();\n if (\n ArrayUtil.isEmpty(idList) &&\n !ObjectUtil.isEmpty(page) &&\n !ArrayUtil.isEmpty(page.content)\n ) {\n const listSelected: GIPIUuid[] = page.content\n .filter((p) => p.selected)\n .map((p) => p.id);\n return listSelected;\n }\n\n return !ArrayUtil.isEmpty(idList) ? idList : [];\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Nullable } from '../../types/nullable.type';\n\nexport class BaseAppliedFilter<T = any> {\n /** Descrição do filtro */\n description: string;\n\n /** Chave de identificação do filtro */\n key: Nullable<T>;\n\n constructor(description?: string, key?: T) {\n this.description = description || '';\n this.key = key;\n }\n}\n","import { GIPIUuid } from '../../types/uuid.type';\n\nexport abstract class BaseModel {\n /** ID */\n id: GIPIUuid;\n\n /** Identificador de integração */\n integrationIdentifier: GIPIUuid;\n\n /** ID da empresa */\n companyId: GIPIUuid;\n\n /** Relacionamento entre mútiplas empresas */\n tenantId: GIPIUuid;\n\n /** Indica se está ativo */\n enabled: boolean = true;\n\n /** Data de criação */\n createdDate: Date | null;\n\n /** Data de modificação */\n modifiedDate: Date | null;\n\n /** @Transient Indica se o registro foi seleciona usado em tabelas(table) */\n selected: boolean;\n\n constructor(data: Partial<BaseModel>) {\n this.id = data?.id ?? null;\n this.integrationIdentifier = data?.integrationIdentifier ?? null;\n this.companyId = data?.companyId ?? null;\n this.enabled = data?.enabled ?? true;\n this.createdDate = data?.createdDate ?? null;\n this.modifiedDate = data?.modifiedDate ?? null;\n this.selected = data?.selected ?? false;\n }\n}\n","import { BaseModel } from './base.model';\n\nexport class BaseAuthorityModel extends BaseModel {\n /** Nome da permissão */\n authority: string;\n\n constructor(data: Partial<BaseAuthorityModel> = {}) {\n super(data);\n this.id = data?.id ?? null;\n this.authority = data?.authority ?? '';\n }\n}\n","import { BaseSortModel } from './base-sort.model';\n\nexport class BaseFilterModel {\n /** Lista de ordenações */\n sorts: BaseSortModel[];\n\n /** Número da página */\n pageNumber: number;\n\n /** Quantidade de registros por página */\n pageSize: number;\n\n /** @deprecated Offset - `Não é mais utilizado` pois é calculado no backend */\n offset: number;\n\n /** @transient A tela de origem do filtro */\n originScreen: string;\n\n /** Barra de pesquisa */\n researchField: string;\n\n constructor(init: Partial<BaseFilterModel> = {}) {\n this.sorts = init.sorts || [];\n this.pageNumber = init.pageNumber || 0;\n this.pageSize = init.pageSize || 10;\n this.offset = init.offset || 0;\n this.originScreen = init.originScreen || '';\n this.researchField = init.researchField || '';\n }\n}\n","import { tTypeOperationDialog } from '../../enums/type-operation-dialog.enum';\nimport { GIPIUuid } from '../../types/uuid.type';\n\nexport class BaseFormDialogDataModel {\n /** Entidade a ser editada */\n id: GIPIUuid;\n\n /** Tipo de operação do diálogo */\n typeOperation: tTypeOperationDialog;\n\n /** Atributos opcionais */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [klass: string]: any;\n\n constructor(data?: Partial<BaseFormDialogDataModel>) {\n // Permite copiar os atributos dinâmicos adicionados via [key: string]: any.\n Object.assign(this, data);\n\n this.id = data?.id ?? null;\n this.typeOperation = data?.typeOperation ?? 'NEW';\n }\n}\n","import { BaseModel } from './base.model';\n\nexport class BaseListDialogDataModel<TEntity extends BaseModel> {\n /** Lista de entidades selecionadas */\n optionsSelected: TEntity[];\n\n /** Indica se é para selecionar apenas 1 registro */\n selectOne: boolean;\n\n /** Atributos opcionais */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [klass: string]: any;\n\n constructor(data?: Partial<BaseListDialogDataModel<TEntity>>) {\n // Permite copiar os atributos dinâmicos adicionados via [key: string]: any.\n Object.assign(this, data);\n\n this.optionsSelected = data?.optionsSelected ?? [];\n this.selectOne = data?.selectOne ?? false;\n }\n}\n","import { tMenuType } from '../../enums/menu-type.enum';\nimport { BaseModel } from './base.model';\n\nexport class BaseMenuModel extends BaseModel {\n /** Posição do menu */\n index?: number;\n\n /** Nome do menu */\n name: string;\n\n /** Ícone do menu */\n icon?: string;\n\n /** Ícone SVG do menu */\n svgIcon?: string;\n\n /** Rota do menu */\n route?: string;\n\n /** Módulo do menu */\n module?: string;\n\n /** Tipo do menu = 'GROUP' | 'COLLAPSABLE' | 'ITEM' */\n type: tMenuType;\n\n /** Lista de submenus */\n menuList?: BaseMenuModel[];\n\n /** Ação do menu */\n action?: Function;\n\n /** @Transient Exibe um tag com o texto novo no menu */\n showTagNew?: boolean;\n\n constructor(data: Partial<BaseMenuModel> = {}) {\n super(data);\n this.index = data?.index ?? 0;\n this.name = data?.name ?? '';\n this.icon = data?.icon ?? '';\n this.svgIcon = data?.svgIcon ?? '';\n this.route = data?.route ?? '';\n this.module = data?.module ?? '';\n this.type = data?.type ?? 'ITEM';\n this.menuList = data?.menuList ?? [];\n this.action = data?.action ?? undefined;\n this.showTagNew = data?.showTagNew ?? false;\n }\n}\n","export class BasePageModel<TEntity> {\n\n /** Conteúdo da página */\n content: TEntity[];\n\n /** Número da página */\n number: number;\n\n /** Total de registros */\n totalElements: number;\n\n /** Total de páginas */\n totalPages: number;\n\n constructor(\n content: TEntity[] = [],\n number: number = 0,\n totalElements: number = 0,\n totalPages: number = 0\n ) {\n this.content = content;\n this.number = number;\n this.totalElements = totalElements;\n this.totalPages = totalPages;\n }\n\n}\n","import type { BaseSortModel } from './base-sort.model';\n\nexport class BaseQueryParams {\n /** Número da página */\n page: number = 0;\n\n /** Tamanho da página */\n size: number = 10;\n\n /** Campo para ordenação */\n sort: BaseSortModel | BaseSortModel[] | null = null;\n\n /** Parâmetros dinâmicos */\n [key: string]: unknown | null;\n\n constructor(params?: Partial<BaseQueryParams>) {\n Object.assign(this, params);\n }\n}\n","import { BaseUserModel } from './base-user.model';\n\nexport class BaseTokenModel<TUser extends BaseUserModel> {\n access_token: string;\n refresh_token: string;\n expires_in: number;\n expiration: Date;\n accessToken: string;\n user: TUser;\n refreshToken: string;\n\n constructor(\n access_token: string,\n refresh_token: string,\n expires_in: number,\n expiration: Date,\n accessToken: string,\n user: TUser,\n refreshToken: string,\n ) {\n this.access_token = access_token;\n this.refresh_token = refresh_token;\n this.expires_in = expires_in;\n this.expiration = expiration;\n this.accessToken = accessToken;\n this.user = user;\n this.refreshToken = refreshToken;\n }\n}\n","import { BaseAuthorityModel } from './base-authority.model';\nimport { BaseMenuModel } from './base-menu.model';\nimport { BaseModel } from './base.model';\n\nexport class BaseUserModel extends BaseModel {\n /** Nome do usuário */\n name: string;\n\n /** E-mail do usuário */\n username: string;\n\n /** Senha do usuário */\n password: string;\n\n /** Último acesso do usuário */\n lastAccess: Date | null;\n\n /** Lista de permissões do usuário */\n authorities: BaseAuthorityModel[];\n\n /** Lista de menus que o usuário tem acesso */\n menuList: BaseMenuModel[];\n\n constructor(data: Partial<BaseUserModel> = {}) {\n super(data);\n this.name = data?.name ?? '';\n this.username = data?.username ?? '';\n this.password = data?.password ?? '';\n this.lastAccess = data?.lastAccess ?? null;\n this.authorities = data?.authorities ?? [];\n this.menuList = data?.menuList ?? [];\n }\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { HttpHeaders } from '@angular/common/http';\nimport { inject, Injectable, signal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { Router } from '@angular/router';\nimport moment from 'moment-timezone';\nimport { Observable, of } from 'rxjs';\nimport { Nullable } from '../../types/nullable.type';\nimport { StringUtil } from '../../utils/string.util';\nimport { BaseTokenModel } from '../models/base-token.model';\nimport { BaseUserModel } from '../models/base-user.model';\nimport { ObjectUtil } from './../../utils/object.util';\nimport { BaseService } from './base.service';\n\n@Injectable()\nexport class BaseAuthService<TUser extends BaseUserModel> extends BaseService {\n protected readonly TOKEN_KEY = 'auth_token';\n protected router: Router = inject(Router);\n\n private _token = signal<BaseTokenModel<TUser> | null>(null);\n private _user = signal<TUser | null>(null);\n\n public token$ = toObservable(this._token);\n public user$ = toObservable(this._user);\n\n public get token(): BaseTokenModel<TUser> | null {\n const token = this._token();\n if (this.isValidToken(token)) {\n return token;\n } else {\n const token: string | null = localStorage.getItem(this.TOKEN_KEY);\n const tokenParsed: BaseTokenModel<TUser> | null = !StringUtil.isEmpty(token) ? JSON.parse(token) : null;\n if (this.isValidToken(tokenParsed)) {\n return tokenParsed;\n }\n }\n return null;\n }\n\n public get user(): TUser | null {\n const token = this.token;\n if (ObjectUtil.isEmpty(token)) {\n return null;\n }\n return token.user;\n }\n\n constructor() {\n super('', '');\n }\n\n public login(username: string, password: string): Observable<void> {\n throw new Error('Method not implemented.');\n }\n\n public logout(): void {\n throw new Error('Method not implemented.');\n }\n\n public revokeToken(token: BaseTokenModel<TUser> | null): Observable<boolean> {\n throw new Error('Method not implemented.');\n }\n\n public refreshToken(): Observable<BaseTokenModel<TUser> | null> {\n throw new Error('Method not implemented.');\n }\n\n public isAuthenticated(): boolean {\n return this.isValidToken(this.token);\n }\n\n public load(): Observable<boolean> {\n const token: Nullable<string> = localStorage.getItem(this.TOKEN_KEY);\n const tokenParsed: Nullable<BaseTokenModel<TUser>> = !StringUtil.isEmpty(token) ? JSON.parse(token) : null;\n if (!ObjectUtil.isEmpty(tokenParsed) && this.isValidToken(tokenParsed)) {\n this._token.set(tokenParsed);\n this._user.set(tokenParsed.user);\n return of(true);\n }\n return of(false);\n }\n\n public isValidToken(token: BaseTokenModel<TUser> | null): boolean {\n if (ObjectUtil.isEmpty(token)) {\n return false;\n }\n const currentTime: number = new Date().getTime();\n return (currentTime >= +token.expires_in);\n }\n\n public hasPermission(permission: string): boolean {\n if (StringUtil.isEmpty(permission)) {\n return false;\n }\n const user: BaseUserModel | null = this.user;\n if (ObjectUtil.isEmpty(user)) {\n return false;\n }\n return !!user?.authorities.find(authority => authority.authority.match(permission));\n }\n\n protected setSession(token: BaseTokenModel<TUser>): void {\n if (this.isValidToken(token)) {\n this._token.set(token);\n this._user.set(token.user);\n localStorage.setItem(this.TOKEN_KEY, JSON.stringify(token));\n }\n }\n\n protected clearSession(): void {\n this._token.set(null);\n this._user.set(null);\n localStorage.removeItem(this.TOKEN_KEY);\n sessionStorage.clear();\n }\n\n protected override buildHeaders(): HttpHeaders {\n return new HttpHeaders()\n .append('Authorization', 'Basic ' + btoa('CONVENANT_MANAGEMENT:123'))\n .append('Content-Type', 'application/x-www-form-urlencoded')\n .append('accessType', 'WEB')\n .append('timeZone', moment().format('ZZ'));\n }\n\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\n\n@Component({\n selector: 'gipi-action-row',\n exportAs: 'gActionRow',\n template: `\n <ng-content> </ng-content>\n `,\n styleUrl: './action-row.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': \"id\",\n '[attr.name]': \"name\",\n 'class': 'g-action-row',\n },\n imports: [\n CommonModule,\n ]\n})\nexport class ActionRowComponent {\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-action-row-');\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { AfterContentChecked, AfterViewChecked, Directive, ElementRef, inject, Input, PLATFORM_ID, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[gAutoFocus]',\n exportAs: 'gAutoFocus'\n})\nexport class AutoFocusDirective implements AfterContentChecked, AfterViewChecked {\n\n private _focused = false;\n private _elementRef = inject(ElementRef);\n private _platformId = inject(PLATFORM_ID);\n private _renderer = inject(Renderer2);\n\n @Input({ alias: 'gAutoFocus', transform: coerceBooleanProperty }) autofocus = true;\n\n constructor() { }\n\n ngAfterContentChecked() {\n this._setAutoFocus();\n }\n\n ngAfterViewChecked() {\n this._setAutoFocus();\n }\n\n private _setAutoFocus(): void {\n if (!this._focused && isPlatformBrowser(this._platformId) && this.autofocus) {\n this._renderer.setAttribute(this._elementRef.nativeElement, 'autofocus', 'true');\n setTimeout(() => {\n const focusableElements = this._getFocusableElements(this._elementRef.nativeElement);\n if (focusableElements.length > 0) {\n focusableElements[0].focus();\n } else {\n this._elementRef.nativeElement.focus();\n }\n this._focused = true;\n });\n }\n }\n\n private _getFocusableElements(element: HTMLElement): HTMLElement[] {\n const focusableSelectors = [\n 'button:not([tabindex=\"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])',\n '[href][clientHeight][clientWidth]:not([tabindex=\"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])',\n 'input:not([tabindex=\"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])',\n 'select:not([tabindex=\"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])',\n 'textarea:not([tabindex=\"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])',\n '[tabIndex]:not([tabIndex=\"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])',\n '[contenteditable]:not([tabIndex=\"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])',\n '.gipi-input-text:not([tabindex=\"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])',\n '.gipi-button:not([tabindex=\"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])'\n ].join(',');\n\n const focusableElements = Array.from(element.querySelectorAll<HTMLElement>(focusableSelectors));\n return focusableElements.filter(el => {\n const style = getComputedStyle(el);\n return style.display !== 'none' && style.visibility !== 'hidden' && el.offsetParent !== null;\n });\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { NumberInput, type BooleanInput } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n numberAttribute,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'gipi-avatar',\n template: `\n @if (!!imageSrc) {\n <img\n alt=\"Avatar\"\n class=\"g-user-photo\"\n [class.loading]=\"loading\"\n [class.circle]=\"shape === 'circle'\"\n [class.square]=\"shape === 'square'\"\n [style.width.px]=\"size\"\n [style.height.px]=\"size\"\n [src]=\"imageSrc\"\n (error)=\"imageError($event)\" />\n } @else {\n <span\n class=\"g-user-photo\"\n [class.loading]=\"loading\"\n [class.circle]=\"shape === 'circle'\"\n [class.square]=\"shape === 'square'\"\n [style.width.px]=\"size\"\n [style.height.px]=\"size\"\n [style.fontSize.px]=\"textSize\">\n {{ _firstLetter }}\n </span>\n }\n\n @if (!!loading) {\n <div\n class=\"g-loading\"\n [class.circle]=\"shape === 'circle'\"\n [class.square]=\"shape === 'square'\"\n [style.width.px]=\"size\"\n [style.height.px]=\"size\"></div>\n }\n `,\n styleUrl: './avatar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[name]': 'name',\n class: 'g-avatar',\n },\n imports: [CommonModule],\n})\nexport class AvatarComponent {\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-avatar-');\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input({ required: true })\n text: string = '';\n\n @Input()\n imageSrc: string = '';\n\n @Input()\n shape: 'circle' | 'square' = 'circle';\n\n @Input({ transform: numberAttribute })\n size: NumberInput = 24;\n\n @Input({ transform: numberAttribute })\n textSize: NumberInput = 16;\n\n @Input({ transform: booleanAttribute })\n loading: BooleanInput = false;\n\n @Output() readonly onImageError = new EventEmitter<Event>();\n\n public get _firstLetter(): string {\n if (!this.text) {\n return '';\n }\n\n const words = this.text.trim().split(/\\s+/);\n const relevantWord = words.find((word) => word.length >= 3) || words[0];\n return relevantWord.charAt(0).toUpperCase();\n }\n\n constructor() {}\n\n public imageError(event: Event): void {\n this.onImageError.emit(event);\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n inject,\n Input,\n numberAttribute,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ObjectUtil } from '../../utils/object.util';\n\nexport type tIconFontSet = 'OUTLINED' | 'ROUNDED' | 'SHARP';\nexport type tIconVariation = 'FILLED' | 'OUTLINED';\nexport type tIconWeight = 100 | 200 | 300 | 400 | 500 | 600 | 700;\nexport type tIconGrade = 'LOW' | 'DEFAULT' | 'HIGH';\nexport type tIconOptical = 20 | 24 | 40 | 48;\n\n@Component({\n selector: 'gipi-icon',\n exportAs: 'gIcon',\n template: `\n @if (svgIcon) {\n <mat-icon\n #matIcon\n [class]=\"hostClass\"\n [ngStyle]=\"hostStyle\"\n [inline]=\"inline\"\n [matTooltip]=\"tooltip\"\n [attr.aria-label]=\"ariaLabel\"\n [svgIcon]=\"svgIcon && !icon ? svgIcon : ''\"\n [style.color]=\"color\"></mat-icon>\n } @else if (icon) {\n <mat-icon\n #matIcon\n [class]=\"hostClass\"\n [ngStyle]=\"hostStyle\"\n [inline]=\"inline\"\n [matTooltip]=\"tooltip\"\n [attr.aria-label]=\"ariaLabel\"\n [fontSet]=\"_fontSetMapped\"\n [style.color]=\"color\">\n {{ !svgIcon && icon ? icon : '' }}\n </mat-icon>\n }\n `,\n styleUrl: './icon.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n '[attr.role]': `'img'`,\n '[attr.aria-label]': 'ariaLabel',\n class: 'g-icon',\n },\n imports: [CommonModule, MatIconModule, MatTooltipModule],\n})\nexport class IconComponent implements AfterViewInit {\n @ViewChild('matIcon', { read: ElementRef }) matIcon!: ElementRef;\n\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-icon-');\n private readonly _renderer: Renderer2 = inject(Renderer2);\n\n public elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n @Input({ alias: 'class' }) hostClass: string = '';\n @Input({ alias: 'style' }) hostStyle: { [klass: string]: string } = {};\n\n /**\n * Define o valor de fill no font-variation-settings\n * @FILLED FILL = 1;\n * @OUTILINE FILL = 0;\n */\n @Input({ alias: 'variation' }) iconVariation: tIconVariation = 'OUTLINED';\n\n /** Define o valor de wght no font-variation-settings */\n @Input({ alias: 'weight' }) iconWeight: tIconWeight = 400;\n\n /**\n * Define o valor de GRAD no font-variation-settings\n * @LOW GRAD = -25;\n * @DEFAULT GRAD = 0;\n * @HIGH GRAD = 200;\n */\n @Input({ alias: 'grade' }) iconGrade: tIconGrade = 'DEFAULT';\n\n /** Define o valor de opsz no font-variation-settings */\n @Input({ alias: 'optical' }) iconOptical: tIconOptical = 20;\n\n /** Se o ícone deve corresponder ao tamanho da fonte do elemento no qual está contido */\n @Input({ transform: booleanAttribute }) inline: boolean = false;\n\n @Input({ alias: 'aria-label' }) ariaLabel: string = '';\n @Input() tooltip: string = '';\n @Input() icon: string = '';\n @Input() svgIcon: string = '';\n @Input({ transform: numberAttribute }) size: number = 20;\n @Input() color: string = '';\n\n /**\n * Define o estilo do conjunto de ícones a ser utilizado.\n * - Pode ser `OUTLINED`, `ROUNDED` ou `SHARP`, conforme os estilos do Material Icons.\n * - Valor padrão: `ROUNDED`.\n */\n @Input({ alias: 'fontSet' }) fontSet: tIconFontSet = 'ROUNDED';\n\n @HostBinding('style.width')\n protected get width(): string {\n return coerceCssPixelValue(this.size);\n }\n\n @HostBinding('style.height')\n protected get height(): string {\n return coerceCssPixelValue(this.size);\n }\n\n @HostBinding('style.font-size')\n protected get fontSize(): string {\n return coerceCssPixelValue(this.size);\n }\n\n @HostBinding('style.line-height')\n protected get lineHeight(): string {\n return coerceCssPixelValue(this.size);\n }\n\n protected get _fontSetMapped(): string {\n const fontSetMap = {\n OUTLINED: 'material-symbols-outlined',\n ROUNDED: 'material-symbols-rounded',\n SHARP: 'material-symbols-sharp',\n };\n return fontSetMap[this.fontSet];\n }\n\n constructor() {}\n\n ngAfterViewInit(): void {\n if (!ObjectUtil.isEmpty(this.matIcon)) {\n const fill: number = this.iconVariation === 'FILLED' ? 1 : 0;\n const wght: tIconWeight = this.iconWeight || 400;\n const GRAD: number =\n (this.iconGrade === 'DEFAULT' ? 0 : this.iconGrade === 'LOW' ? -25 : 400) || 0;\n const opsz: tIconOptical = this.iconOptical || 20;\n\n this._renderer.setStyle(\n this.matIcon.nativeElement,\n 'font-variation-settings',\n `'FILL' ${fill}, 'wght' ${wght}, 'GRAD' ${GRAD}, 'opsz' ${opsz}`,\n );\n }\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\n\ntype tLoadingVariant = 'primary' | 'secondary' | 'light';\n\ntype tLoadingType = 'progress-bar' | 'dot-pulse';\n\n@Component({\n selector: 'gipi-loading',\n exportAs: 'gLoading',\n template: `\n @if (type === 'dot-pulse') {\n <div class=\"g-loading-dot-pulse-content\">\n <div\n [class.g-loading-dot-pulse]=\"true\"\n [class.g-loading-primary]=\"variant === 'primary'\"\n [class.g-loading-secondary]=\"variant === 'secondary'\"\n [class.g-loading-light]=\"variant === 'light'\"></div>\n </div>\n } @else if (type === 'progress-bar') {\n <div class=\"g-loading-progress-bar-content\">\n <div class=\"g-loading-progress-bar-inner\"></div>\n </div>\n }\n `,\n styleUrl: './loading.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n '[attr.role]': `'progressbar'`,\n '[attr.aria-busy]': 'true',\n\n class: 'g-loading',\n },\n imports: [CommonModule],\n})\nexport class LoadingComponent {\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-loading-');\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n @Input() variant: tLoadingVariant = 'primary';\n @Input() type: tLoadingType = 'dot-pulse';\n}\n","/**\n * Throws an exception for the case when popover trigger doesn't have a valid gipi-popover instance\n */\nexport function throwPopoverMissingError() {\n throw Error(`gipi-popover-trigger: must pass in an gipi-popover instance.\n\n Example:\n <gipi-popover #myPopover=\"popover\"></gipi-popover>\n <button [popoverTriggerFor]=\"myPopover\"></button>`);\n}\n\n/**\n * Throws an exception for the case when popover's popoverPositionX value isn't valid.\n * In other words, it doesn't match 'before' or 'after'.\n */\nexport function throwPopoverInvalidPositionX() {\n throw Error(`popoverPositionX value must be either 'before' or after'.\n Example: <gipi-popover popoverPositionX=\"before\" #myPopover=\"popover\"></gipi-popover>`);\n}\n\n/**\n * Throws an exception for the case when popover's popoverPositionY value isn't valid.\n * In other words, it doesn't match 'above' or 'below'.\n */\nexport function throwPopoverInvalidPositionY() {\n throw Error(`popoverPositionY value must be either 'above' or below'.\n Example: <gipi-popover popoverPositionY=\"above\" #myPopover=\"popover\"></gipi-popover>`);\n}\n","import { isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { FlexibleConnectedPositionStrategy, HorizontalConnectionPos, Overlay, OverlayConfig, OverlayRef, ScrollStrategy, VerticalConnectionPos } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { AfterViewInit, ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostListener, Input, OnDestroy, Output, ViewContainerRef } from '@angular/core';\nimport { BehaviorSubject, Subject, Subscription, takeUntil, type Observable } from 'rxjs';\nimport { throwPopoverMissingError } from './shared/popover-errors';\nimport { tPopoverPositionX, tPopoverPositionY, tPopoverScrollStrategy, tPopoverTriggerEvent } from './shared/popover-types.type';\nimport { iPopoverPanel, iTarget } from './shared/popover.interface';\n\n@Directive({\n selector: '[gPopoverTriggerFor]',\n exportAs: 'gPopoverTriggerFor',\n host: {\n '[attr.aria-haspopup]': 'true',\n 'class': 'g-popover-trigger-for',\n }\n})\nexport class PopoverTriggerDirective implements AfterViewInit, OnDestroy {\n\n popoverOpened: Subject<void> = new Subject<void>();\n popoverClosed: Subject<void> = new Subject<void>();\n\n private _popoverOpen$ = new BehaviorSubject<boolean>(false);\n private _portal?: TemplatePortal<unknown>;\n private _overlayRef: OverlayRef | null = null;\n private _halt: boolean = false;\n private _backdropSubscription?: Subscription;\n private _positionSubscription?: Subscription;\n private _detachmentsSubscription?: Subscription;\n\n private _mouseoverTimer: ReturnType<typeof setTimeout> | null = null;\n\n // tracking input type is necessary so it's possible to only auto-focus\n // the first item of the list when the popover is opened via the keyboard\n private _openedByMouse = false;\n\n private _onDestroy = new Subject<void>();\n\n /** References the popover instance that the trigger is associated with. */\n @Input({ alias: 'gPopoverTriggerFor', required: true }) popover!: iPopoverPanel;\n\n /** References the popover target instance that the trigger is associated with. */\n @Input('popoverTargetAt') targetElement?: iTarget;\n\n /** Position of the popover in the X axis */\n @Input('popoverPositionX') positionX?: tPopoverPositionX;\n\n /** Position of the popover in the Y axis */\n @Input('popoverPositionY') positionY?: tPopoverPositionY;\n\n /** Popover trigger event */\n @Input('popoverTriggerOn') triggerEvent: tPopoverTriggerEvent = 'click';\n\n /** Popover delay */\n @Input('popoverEnterDelay') enterDelay?: number;\n\n /** Popover delay */\n @Input('popoverLeaveDelay') leaveDelay?: number;\n\n /** Popover overlap trigger */\n @Input('popoverOverlapTrigger') overlapTrigger: boolean = false;\n\n /** Popover target offset x */\n @Input('popoverOffsetX') targetOffsetX?: number;\n\n /** Popover target offset y */\n @Input('popoverOffsetY') targetOffsetY?: number;\n\n /** Popover arrow offset x */\n @Input('popoverArrowOffsetX') arrowOffsetX?: number;\n\n /** Popover arrow width */\n @Input('popoverArrowWidth') arrowWidth?: number;\n\n /** Popover arrow color */\n @Input('popoverArrowColor') arrowColor?: string;\n\n /** Popover container close on click */\n @Input('popoverCloseOnClick') closeOnClick: boolean = false;\n\n /** Popover backdrop close on click */\n @Input('popoverBackdropCloseOnClick') backdropCloseOnClick: boolean = true;\n\n /** Event emitted when the associated popover is opened. */\n @Output() readonly onOpened = new EventEmitter<void>();\n\n /** Event emitted when the associated popover is closed. */\n @Output() readonly onClosed = new EventEmitter<void>();\n\n /** Whether the popover is open. */\n public get popoverIsOpened(): boolean {\n return this._popoverOpen$.getValue();\n }\n\n public get popoverIsOpened$(): Observable<boolean> {\n return this._popoverOpen$.asObservable();\n }\n\n constructor(\n private _overlay: Overlay,\n public _elementRef: ElementRef,\n private _viewContainerRef: ViewContainerRef,\n private _changeDetectorRef: ChangeDetectorRef\n ) { }\n\n ngAfterViewInit() {\n this._checkPopover();\n this._setCurrentConfig();\n this.popover.setMinWidthByTrigger(this._elementRef);\n this.popover.onClose.subscribe(() => this.closePopover());\n }\n\n ngOnDestroy() {\n this.destroyPopover();\n }\n\n private _setCurrentConfig() {\n if ((this.positionX === 'before') || (this.positionX === 'after')) {\n this.popover.positionX = this.positionX;\n }\n if ((this.positionY === 'above') || (this.positionY === 'below')) {\n this.popover.positionY = this.positionY;\n }\n if (this.triggerEvent) {\n this.popover.triggerEvent = this.triggerEvent;\n }\n if (this.enterDelay) {\n this.popover.enterDelay = this.enterDelay;\n }\n if (this.leaveDelay) {\n this.popover.leaveDelay = this.leaveDelay;\n }\n if (this.overlapTrigger !== undefined) {\n this.popover.overlapTrigger = this.overlapTrigger;\n }\n if (this.targetOffsetX) {\n this.popover.targetOffsetX = this.targetOffsetX;\n }\n if (this.targetOffsetY) {\n this.popover.targetOffsetY = this.targetOffsetY;\n }\n if (this.closeOnClick !== undefined) {\n this.popover.closeOnClick = this.closeOnClick;\n }\n }\n\n @HostListener('click', ['$event'])\n public onClick(): void {\n if (this.popover.triggerEvent === 'click') {\n this.togglePopover();\n }\n }\n\n @HostListener('mouseenter', ['$event'])\n public onMouseEnter(): void {\n this._halt = false;\n if (this.popover.triggerEvent === 'hover') {\n this._mouseoverTimer = setTimeout(() => this.openPopover(), this.popover.enterDelay);\n }\n }\n\n @HostListener('mouseleave', ['$event'])\n public onMouseLeave(): void {\n if (this.popover.triggerEvent === 'hover') {\n if (this._mouseoverTimer) {\n clearTimeout(this._mouseoverTimer);\n this._mouseoverTimer = null;\n }\n if (this.popoverIsOpened) {\n setTimeout(() => {\n if (!this.popover.closeDisabled) {\n this.closePopover();\n }\n }, this.popover.leaveDelay);\n } else {\n this._halt = true;\n }\n }\n }\n\n /** Toggles the popover between the open and closed states. */\n public togglePopover(): void {\n return this.popoverIsOpened ? this.closePopover() : this.openPopover();\n }\n\n /** Opens the popover. */\n public openPopover(): void {\n if (!this.popoverIsOpened && !this._halt) {\n this._createOverlay().attach(this._portal);\n\n this._subscribeToBackdrop();\n this._subscribeToDetachments();\n\n this._initPopover();\n }\n }\n\n /** Closes the popover. */\n public closePopover(): void {\n if (this._overlayRef) {\n this._overlayRef.detach();\n this._resetPopover();\n }\n }\n\n /** Removes the popover from the DOM. */\n public destroyPopover(): void {\n if (this._mouseoverTimer) {\n clearTimeout(this._mouseoverTimer);\n this._mouseoverTimer = null;\n }\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n this._cleanUpSubscriptions();\n }\n\n this._popoverOpen$.next(false);\n this._popoverOpen$.complete();\n\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n /** Focuses the popover trigger. */\n public focus() {\n this._elementRef.nativeElement.focus();\n }\n\n /**\n * This method ensures that the popover closes when the overlay backdrop is clicked.\n * We do not use first() here because doing so would not catch clicks from within\n * the popover, and it would fail to unsubscribe properly. Instead, we unsubscribe\n * explicitly when the popover is closed or destroyed.\n */\n private _subscribeToBackdrop(): void {\n if (this._overlayRef) {\n /** Only subscribe to backdrop if trigger event is click */\n if (this.triggerEvent === 'click' && this.backdropCloseOnClick === true) {\n this._overlayRef.backdropClick()\n .pipe(\n takeUntil(this.popoverClosed),\n takeUntil(this._onDestroy),\n )\n .subscribe(() => this.popover._emitCloseEvent());\n }\n }\n }\n\n private _subscribeToDetachments(): void {\n if (this._overlayRef) {\n this._overlayRef.detachments()\n .pipe(\n takeUntil(this.popoverClosed),\n takeUntil(this._onDestroy),\n )\n .subscribe(() => this._setPopoverClosed());\n }\n }\n\n /**\n * This method sets the popover state to open and focuses the first item if\n * the popover was opened via the keyboard.\n */\n private _initPopover(): void {\n this._setPopoverOpened();\n }\n\n /**\n * This method resets the popover when it's closed, most importantly restoring\n * focus to the popover trigger if the popover was opened via the keyboard.\n */\n private _resetPopover(): void {\n this._setPopoverClosed();\n\n // Focus only needs to be reset to the host element if the popover was opened\n // by the keyboard and manually shifted to the first popover item.\n if (!this._openedByMouse) {\n this.focus();\n }\n this._openedByMouse = false;\n }\n\n /** set state rather than toggle to support triggers sharing a popover */\n private _setPopoverOpened(): void {\n if (!this.popoverIsOpened) {\n this._popoverOpen$.next(true);\n\n this.popoverOpened.next();\n this.onOpened.emit()\n }\n }\n\n /** set state rather than toggle to support triggers sharing a popover */\n private _setPopoverClosed(): void {\n if (this.popoverIsOpened) {\n this._popoverOpen$.next(false);\n\n this.popoverClosed.next();\n this.onClosed.emit();\n }\n }\n\n /**\n * This method checks that a valid instance of MdPopover has been passed into\n * mdPopoverTriggerFor. If not, an exception is thrown.\n */\n private _checkPopover() {\n if (!this.popover) {\n throwPopoverMissingError();\n }\n }\n\n /**\n * This method creates the overlay from the provided popover's template and saves its\n * OverlayRef so that it can be attached to the DOM when openPopover is called.\n */\n private _createOverlay(): OverlayRef {\n if (!this._overlayRef) {\n this._portal = new TemplatePortal(this.popover.templateRef!, this._viewContainerRef);\n const config: OverlayConfig = this._getOverlayConfig();\n this._subscribeToPositions(config.positionStrategy as FlexibleConnectedPositionStrategy);\n this._overlayRef = this._overlay.create(config);\n }\n\n return this._overlayRef;\n }\n\n /**\n * This method builds the configuration object needed to create the overlay, the OverlayConfig.\n * @returns OverlayConfig\n */\n private _getOverlayConfig(): OverlayConfig {\n const overlayState: OverlayConfig = new OverlayConfig();\n overlayState.positionStrategy = this._getPosition();\n\n /** Display overlay backdrop if trigger event is click */\n if (this.triggerEvent === 'click') {\n overlayState.hasBackdrop = true;\n overlayState.backdropClass = 'cdk-overlay-transparent-backdrop';\n }\n\n overlayState.direction = 'ltr';\n overlayState.scrollStrategy = this._getOverlayScrollStrategy(this.popover.scrollStrategy);\n\n return overlayState;\n }\n\n /**\n * This method returns the scroll strategy used by the cdk/overlay.\n */\n private _getOverlayScrollStrategy(strategy: tPopoverScrollStrategy): ScrollStrategy {\n switch (strategy) {\n case 'noop': return this._overlay.scrollStrategies.noop();\n case 'close': return this._overlay.scrollStrategies.close();\n case 'block': return this._overlay.scrollStrategies.block();\n case 'reposition': return this._overlay.scrollStrategies.reposition();\n default: return this._overlay.scrollStrategies.reposition();\n }\n }\n\n /**\n * Listens to changes in the position of the overlay and sets the correct classes\n * on the popover based on the new position. This ensures the animation origin is always\n * correct, even if a fallback position is used for the overlay.\n */\n private _subscribeToPositions(position: FlexibleConnectedPositionStrategy): void {\n this._positionSubscription = position.positionChanges.subscribe(change => {\n const posisionX: tPopoverPositionX = (change.connectionPair.overlayX === 'start') ? 'after' : 'before';\n\n let posisionY: tPopoverPositionY = (change.connectionPair.overlayY === 'top') ? 'below' : 'above';\n if (!this.popover.overlapTrigger) {\n posisionY = (posisionY === 'below') ? 'above' : 'below';\n }\n\n // required for ChangeDetectionStrategy.OnPush\n this._changeDetectorRef.markForCheck();\n\n this.popover.zone.run(() => {\n this.popover.positionX = posisionX;\n this.popover.positionY = posisionY;\n // this.popover.setCurrentStyles();\n\n this.popover.setPositionClasses(posisionX, posisionY);\n });\n });\n }\n\n /**\n * This method builds the position strategy for the overlay, so the popover is properly connected\n * to the trigger.\n * @returns ConnectedPositionStrategy\n */\n private _getPosition(): FlexibleConnectedPositionStrategy {\n const [originX, originFallbackX]: HorizontalConnectionPos[] = (this.popover.positionX === 'before') ? ['end', 'start'] : ['start', 'end'];\n const [overlayY, overlayFallbackY]: VerticalConnectionPos[] = (this.popover.positionY === 'above') ? ['bottom', 'top'] : ['top', 'bottom'];\n\n let originY: 'top' | 'bottom' = overlayY;\n let originFallbackY: 'top' | 'bottom' = overlayFallbackY;\n\n const overlayX: 'start' | 'end' = originX;\n const overlayFallbackX: 'start' | 'end' = originFallbackX;\n\n /** Reverse overlayY and fallbackOverlayY when overlapTrigger is false */\n if (!this.popover.overlapTrigger) {\n originY = (overlayY === 'top') ? 'bottom' : 'top';\n originFallbackY = (overlayFallbackY === 'top') ? 'bottom' : 'top';\n }\n\n let offsetX: number = 0;\n let offsetY: number = 0;\n\n if (this.popover.targetOffsetX && !isNaN(Number(this.popover.targetOffsetX))) {\n offsetX = Number(this.popover.targetOffsetX);\n }\n\n if (this.popover.targetOffsetY && !isNaN(Number(this.popover.targetOffsetY))) {\n offsetY = Number(this.popover.targetOffsetY);\n }\n\n /**\n * For overriding position element, when mdePopoverTargetAt has a valid element reference.\n * Useful for sticking popover to parent element and offsetting arrow to trigger element.\n * If undefined defaults to the trigger element reference.\n */\n let element = this._elementRef;\n if (typeof this.targetElement !== 'undefined') {\n element = this.targetElement._elementRef;\n }\n\n return this._overlay.position()\n .flexibleConnectedTo(element)\n .withLockedPosition(true)\n .withPositions([\n {\n originX,\n originY,\n overlayX,\n overlayY,\n offsetY\n },\n {\n originX: originFallbackX,\n originY,\n overlayX: overlayFallbackX,\n overlayY,\n offsetY\n },\n {\n originX,\n originY: originFallbackY,\n overlayX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY\n },\n {\n originX: originFallbackX,\n originY: originFallbackY,\n overlayX: overlayFallbackX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY\n }\n ])\n .withDefaultOffsetX(offsetX)\n .withDefaultOffsetY(offsetY);\n }\n\n private _cleanUpSubscriptions(): void {\n if (this._backdropSubscription) {\n this._backdropSubscription.unsubscribe();\n }\n if (this._positionSubscription) {\n this._positionSubscription.unsubscribe();\n }\n if (this._detachmentsSubscription) {\n this._detachmentsSubscription.unsubscribe();\n }\n }\n\n @HostListener('mousedown', ['$event'])\n protected _handleMousedown(event: MouseEvent): void {\n if (event && !isFakeMousedownFromScreenReader(event)) {\n this._openedByMouse = true;\n }\n }\n\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: 'gipi-popover-target, [gPopoverTarget]',\n exportAs: 'gPopoverTarget',\n host: {\n 'class': 'g-popover-target',\n }\n})\nexport class PopoverTargetDirective {\n\n constructor(public _elementRef: ElementRef) { }\n\n}\n","import { animate, AnimationTriggerMetadata, state, style, transition, trigger, } from '@angular/animations';\n\n/**\n * Below are all the animations for the gipi-popover component.\n * Animation duration and timing values are based on AngularJS Material.\n */\n\n/**\n * This animation controls the popover panel's entry and exit from the page.\n *\n * When the popover panel is added to the DOM, it scales in and fades in its border.\n *\n * When the popover panel is removed from the DOM, it simply fades out after a brief\n * delay to display the ripple.\n */\nexport const transformPopover: AnimationTriggerMetadata = trigger('transformPopover', [\n state('enter', style({\n opacity: 1,\n transform: `scale(1)`\n })),\n transition('void => *', [\n style({\n opacity: 0,\n transform: `scale(0)`\n }),\n animate(`200ms cubic-bezier(0.25, 0.8, 0.25, 1)`)\n ]),\n transition('* => void', [\n animate('50ms 100ms linear', style({ opacity: 0 }))\n ])\n]);\n","import { _IdGenerator, A11yModule } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { transformPopover } from './shared/popover-animations';\nimport {\n throwPopoverInvalidPositionX,\n throwPopoverInvalidPositionY,\n} from './shared/popover-errors';\nimport {\n tPopoverPositionX,\n tPopoverPositionY,\n tPopoverScrollStrategy,\n tPopoverTriggerEvent,\n} from './shared/popover-types.type';\nimport type { iPopoverPanel } from './shared/popover.interface';\n\n@Component({\n selector: 'gipi-popover',\n exportAs: 'gPopover',\n template: `\n <ng-template>\n <div\n class=\"g-popover-panel\"\n role=\"dialog\"\n [class.g-popover-overlap]=\"overlapTrigger\"\n [ngClass]=\"_classList\"\n [style.min-width]=\"popoverMinWidth$ | async\"\n [@.disabled]=\"disableAnimation\"\n [@transformPopover]=\"'enter'\"\n [cdkTrapFocus]=\"focusTrapEnabled\"\n [cdkTrapFocusAutoCapture]=\"focusTrapAutoCaptureEnabled\"\n (keydown)=\"_handleKeydown($event)\"\n (mouseover)=\"onMouseOver()\"\n (mouseleave)=\"onMouseLeave()\"\n (click)=\"onClick()\"\n (focus)=\"onFocusPopover()\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n `,\n styleUrl: './popover.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'id',\n '[name]': 'name',\n '[attr.role]': 'dialog',\n class: 'g-popover',\n },\n animations: [transformPopover],\n imports: [CommonModule, OverlayModule, A11yModule],\n})\nexport class PopoverComponent implements iPopoverPanel, OnDestroy {\n @ViewChild(TemplateRef) templateRef?: TemplateRef<unknown>;\n\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-popover-');\n\n /** Config object to be passed into the popover's ngClass */\n protected _classList: { [key: string]: boolean } = {};\n\n protected popoverMinWidth$: BehaviorSubject<string> = new BehaviorSubject<string>(\n 'max-content',\n );\n\n /** Closing disabled on popover */\n public closeDisabled: boolean = false;\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n /** Position of the popover in the X axis. */\n private _positionX: tPopoverPositionX = 'after';\n @Input('popoverPositionX')\n get positionX(): tPopoverPositionX {\n return this._positionX;\n }\n set positionX(value: tPopoverPositionX) {\n if (value !== 'before' && value !== 'after') {\n throwPopoverInvalidPositionX();\n }\n this._positionX = value;\n this.setPositionClasses();\n }\n\n /** Position of the popover in the Y axis. */\n private _positionY: tPopoverPositionY = 'below';\n @Input('popoverPositionY')\n get positionY(): tPopoverPositionY {\n return this._positionY;\n }\n set positionY(value: tPopoverPositionY) {\n if (value !== 'above' && value !== 'below') {\n throwPopoverInvalidPositionY();\n }\n this._positionY = value;\n this.setPositionClasses();\n }\n\n /** Popover trigger event */\n private _triggerEvent: tPopoverTriggerEvent = 'click';\n @Input('popoverTriggerOn')\n get triggerEvent(): tPopoverTriggerEvent {\n return this._triggerEvent;\n }\n set triggerEvent(value: tPopoverTriggerEvent) {\n this._triggerEvent = value;\n }\n\n /** Popover scroll strategy */\n private _scrollStrategy: tPopoverScrollStrategy = 'close';\n @Input('popoverScrollStrategy')\n get scrollStrategy(): tPopoverScrollStrategy {\n return this._scrollStrategy;\n }\n set scrollStrategy(value: tPopoverScrollStrategy) {\n this._scrollStrategy = value;\n }\n\n /** Popover enter delay */\n private _enterDelay: number = 200;\n @Input('popoverEnterDelay')\n get enterDelay(): number {\n return this._enterDelay;\n }\n set enterDelay(value: number) {\n this._enterDelay = value;\n }\n\n /** Popover leave delay */\n private _leaveDelay: number = 200;\n @Input('popoverLeaveDelay')\n get leaveDelay(): number {\n return this._leaveDelay;\n }\n set leaveDelay(value: number) {\n this._leaveDelay = value;\n }\n\n /** Popover overlap trigger */\n private _overlapTrigger: boolean = false;\n @Input('popoverOverlapTrigger')\n get overlapTrigger(): boolean {\n return this._overlapTrigger;\n }\n set overlapTrigger(value: boolean) {\n this._overlapTrigger = value;\n }\n\n /** Popover target offset x */\n private _targetOffsetX: number = 0;\n @Input('popoverOffsetX')\n get targetOffsetX(): number {\n return this._targetOffsetX;\n }\n set targetOffsetX(value: number) {\n this._targetOffsetX = value;\n }\n\n /** Popover target offset y */\n private _targetOffsetY: number = 0;\n @Input('popoverOffsetY')\n get targetOffsetY(): number {\n return this._targetOffsetY;\n }\n set targetOffsetY(value: number) {\n this._targetOffsetY = value;\n }\n\n /**\n * Popover container close on click\n * default: false\n */\n private _closeOnClick: boolean = false;\n @Input('popoverCloseOnClick')\n get closeOnClick(): boolean {\n return this._closeOnClick;\n }\n set closeOnClick(value: boolean) {\n this._closeOnClick = coerceBooleanProperty(value);\n }\n\n /**\n * Disable animations of popover and all child elements\n * default: false\n */\n private _disableAnimation: boolean = false;\n @Input('popoverDisableAnimation')\n get disableAnimation(): boolean {\n return this._disableAnimation;\n }\n set disableAnimation(value: boolean) {\n this._disableAnimation = coerceBooleanProperty(value);\n }\n\n /**\n * Popover focus trap using cdkTrapFocus\n * default: true\n */\n private _focusTrapEnabled: boolean = true;\n @Input('focusTrapEnabled')\n get focusTrapEnabled(): boolean {\n return this._focusTrapEnabled;\n }\n set focusTrapEnabled(value: boolean) {\n this._focusTrapEnabled = coerceBooleanProperty(value);\n }\n\n /**\n * Popover focus trap auto capture using cdkTrapFocusAutoCapture\n * default: true\n */\n private _focusTrapAutoCaptureEnabled: boolean = true;\n @Input('focusTrapAutoCaptureEnabled')\n get focusTrapAutoCaptureEnabled(): boolean {\n return this._focusTrapAutoCaptureEnabled;\n }\n set focusTrapAutoCaptureEnabled(value: boolean) {\n this._focusTrapAutoCaptureEnabled = coerceBooleanProperty(value);\n }\n\n /**\n * This method takes classes set on the host md-popover element and applies them on the\n * popover template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing popover from outside the component.\n * @param classes list of class names\n */\n @Input('class')\n set panelClass(classes: string) {\n if (classes && classes.length) {\n this._classList = classes\n .split(' ')\n .reduce((obj: { [key: string]: boolean }, className: string) => {\n obj[className] = true;\n return obj;\n }, {});\n\n this._elementRef.nativeElement.className = '';\n this.setPositionClasses();\n }\n }\n\n @Output() readonly onClose = new EventEmitter<void>();\n @Output() readonly onFocus = new EventEmitter<void>();\n\n constructor(\n private _elementRef: ElementRef,\n public zone: NgZone,\n ) {\n this.setPositionClasses();\n }\n\n ngOnDestroy(): void {\n this._emitCloseEvent();\n this.onClose.complete();\n this.popoverMinWidth$.complete();\n }\n\n /** Handle a keyboard event from the popover, delegating to the appropriate action. */\n protected _handleKeydown(event: KeyboardEvent): void {\n switch (event.keyCode) {\n case ESCAPE: {\n this._emitCloseEvent();\n return;\n }\n }\n }\n\n /**\n * This emits a close event to which the trigger is subscribed. When emitted, the\n * trigger will close the popover.\n */\n public _emitCloseEvent(): void {\n this.onClose.emit();\n }\n\n /** Close popover on click if closeOnClick is true */\n public onClick(): void {\n if (this.closeOnClick) {\n this._emitCloseEvent();\n }\n }\n\n public onFocusPopover(): void {\n this.onFocus.emit();\n }\n\n /**\n * TODO: Refactor when @angular/cdk includes feature I mentioned on github see link below.\n * https://github.com/angular/material2/pull/5493#issuecomment-313085323\n */\n /** Disables close of popover when leaving trigger element and mouse over the popover */\n public onMouseOver(): void {\n if (this.triggerEvent === 'hover') {\n this.closeDisabled = true;\n }\n }\n\n /** Enables close of popover when mouse leaving popover element */\n public onMouseLeave(): void {\n if (this.triggerEvent === 'hover') {\n this.closeDisabled = false;\n this._emitCloseEvent();\n }\n }\n\n public setMinWidthByTrigger(elementRef: ElementRef): void {\n if (!elementRef?.nativeElement) {\n return;\n }\n\n const width = elementRef.nativeElement.offsetWidth;\n this.popoverMinWidth$.next(`${width}px`);\n }\n\n /**\n * It's necessary to set position-based classes to ensure the popover panel animation\n * folds out from the correct direction.\n */\n public setPositionClasses(\n posX: tPopoverPositionX = this.positionX,\n posY: tPopoverPositionY = this.positionY,\n ): void {\n this._classList['g-popover-before'] = posX === 'before';\n this._classList['g-popover-after'] = posX === 'after';\n this._classList['g-popover-above'] = posY === 'above';\n this._classList['g-popover-below'] = posY === 'below';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { PopoverTargetDirective } from './popover-target.directive';\nimport { PopoverTriggerDirective } from './popover-trigger.directive';\nimport { PopoverComponent } from './popover.component';\n\n@NgModule({\n imports: [\n PopoverTargetDirective,\n PopoverTriggerDirective,\n PopoverComponent,\n ],\n exports: [\n PopoverTargetDirective,\n PopoverTriggerDirective,\n PopoverComponent,\n ]\n})\nexport class PopoverModule { }\n","/* eslint-disable @angular-eslint/no-output-rename */\n/* eslint-disable @angular-eslint/no-output-native */\nimport { _IdGenerator, A11yModule, FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n Input,\n numberAttribute,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { MatBadgeModule, type MatBadgePosition, type MatBadgeSize } from '@angular/material/badge';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Nullable } from '../../types/nullable.type';\nimport {\n IconComponent,\n tIconFontSet,\n tIconGrade,\n tIconOptical,\n tIconVariation,\n tIconWeight,\n} from '../icon';\nimport { LoadingComponent } from '../loading/loading.component';\nimport { PopoverTriggerDirective } from '../popover/popover-trigger.directive';\nimport { PopoverModule } from '../popover/popover.module';\n\ntype tButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'icon' | 'link' | 'action' | 'input';\ntype tButtonIconPosition = 'left' | 'right';\ntype tButtonType = 'submit' | 'reset' | 'button';\ntype tButtonSize = 'small' | 'large';\n\n@Component({\n selector: 'gipi-button',\n exportAs: 'gButton',\n template: `\n <button\n role=\"button\"\n class=\"g-button-content\"\n [class.g-button-primary]=\"variant === 'primary'\"\n [class.g-button-secondary]=\"variant === 'secondary'\"\n [class.g-button-tertiary]=\"variant === 'tertiary'\"\n [class.g-button-only-icon]=\"variant === 'icon'\"\n [class.g-button-link]=\"variant === 'link'\"\n [class.g-button-action]=\"variant === 'action'\"\n [class.g-button-input]=\"variant === 'input'\"\n [class.g-button-disabled]=\"disabled\"\n [class.g-button-icon-left]=\"iconPos === 'left' && label\"\n [class.g-button-icon-right]=\"iconPos === 'right' && label\"\n [matTooltip]=\"tooltip || ''\"\n [type]=\"type\"\n [disabled]=\"disabled\"\n [matBadge]=\"badgeContent ?? invisibleBadgeChar\"\n [matBadgeSize]=\"badgeSize\"\n [matBadgePosition]=\"badgePosition\"\n [matBadgeHidden]=\"!badgeShow\"\n [matBadgeOverlap]=\"!!badgeOverlap\"\n #buttonPopoverTrigger=\"gPopoverTriggerFor\"\n [gPopoverTriggerFor]=\"buttonPopover\"\n [popoverTriggerOn]=\"popover ? 'click' : 'none'\"\n [popoverBackdropCloseOnClick]=\"true\"\n (onOpened)=\"onHandleOpened()\"\n (onClosed)=\"onHandleClosed()\"\n (click)=\"onHandleClick($event)\"\n (focus)=\"onHandleFocus($event)\"\n (blur)=\"onHandleBlur($event)\">\n @if (!disabled && loading) {\n @if (variant === 'primary') {\n <gipi-loading variant=\"light\" />\n } @else if (variant === 'secondary' || variant === 'tertiary') {\n <gipi-loading variant=\"secondary\" />\n }\n } @else {\n @if (icon || svgIcon) {\n <gipi-icon\n class=\"g-button-icon\"\n [icon]=\"icon\"\n [svgIcon]=\"svgIcon\"\n [size]=\"iconSize\"\n [fontSet]=\"iconFontSet\"\n [variation]=\"iconVariation\"\n [weight]=\"iconWeight\"\n [grade]=\"iconGrade\"\n [optical]=\"iconOptical\" />\n }\n\n @if (variant !== 'icon' && label) {\n <span class=\"g-button-label\">\n {{ label }}\n </span>\n }\n }\n </button>\n\n <gipi-popover #buttonPopover=\"gPopover\">\n <div class=\"g-button-popover-content\">\n <ng-content></ng-content>\n </div>\n </gipi-popover>\n `,\n styleUrl: './button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n '[attr.type]': 'type',\n '[attr.role]': `'button'`,\n '[attr.aria-label]': 'ariaLabel || label',\n '[attr.title]': 'title || label',\n '[attr.aria-disabled]': '_ariaDisabled',\n '[disabled]': 'disabled',\n\n '[class.g-button-disabled]': 'disabled',\n class: 'g-button',\n },\n imports: [\n CommonModule,\n A11yModule,\n MatTooltipModule,\n MatIconModule,\n MatBadgeModule,\n PopoverModule,\n LoadingComponent,\n IconComponent,\n ],\n})\nexport class ButtonComponent implements AfterViewInit, OnDestroy {\n @ViewChild(PopoverTriggerDirective, { static: false }) popoverTrigger!: PopoverTriggerDirective;\n\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-button-');\n\n protected readonly invisibleBadgeChar = '\\u2060';\n\n private readonly _focusMonitor = inject(FocusMonitor);\n\n public elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() label: string = '';\n @Input() title: string = '';\n @Input() tooltip: string = '';\n @Input() type: tButtonType = 'button';\n @Input() size: tButtonSize = 'large';\n @Input() iconPos: tButtonIconPosition = 'left';\n @Input() variant: tButtonVariant = 'primary';\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\n @Input({ transform: booleanAttribute }) loading: boolean = false;\n @Input({ transform: booleanAttribute }) popover: BooleanInput = false;\n @Input({ alias: 'aria-label' }) ariaLabel: string = '';\n @Input({ alias: 'aria-disabled', transform: booleanAttribute }) ariaDisabled: boolean = false;\n\n @Input() icon: string = '';\n @Input() svgIcon: string = '';\n @Input() iconFontSet: tIconFontSet = 'ROUNDED';\n @Input({ transform: numberAttribute }) iconSize: number = 20;\n @Input({ alias: 'iconVariation' }) iconVariation: tIconVariation = 'OUTLINED';\n @Input({ alias: 'weight' }) iconWeight: tIconWeight = 400;\n @Input({ alias: 'grade' }) iconGrade: tIconGrade = 'DEFAULT';\n @Input({ alias: 'optical' }) iconOptical: tIconOptical = 20;\n\n @Input({ transform: booleanAttribute }) badgeShow: boolean = false;\n @Input({ transform: booleanAttribute }) badgeOverlap: BooleanInput = true;\n @Input() badgeContent: string | number | undefined | null = this.invisibleBadgeChar;\n @Input() badgePosition: MatBadgePosition = 'above after';\n @Input() badgeSize: MatBadgeSize = 'medium';\n\n @Output('click') onClickEvent = new EventEmitter<MouseEvent>();\n @Output('focus') onFocusEvent = new EventEmitter<FocusEvent>();\n @Output('blur') onBlurEvent = new EventEmitter<FocusEvent>();\n @Output('opened') onOpenedEvent = new EventEmitter<void>();\n @Output('closed') onClosedEvent = new EventEmitter<void>();\n\n protected get _ariaDisabled(): Nullable<boolean> {\n if (this.ariaDisabled != null) {\n return this.ariaDisabled;\n }\n return this.disabled ? true : null;\n }\n\n constructor() {}\n\n ngAfterViewInit(): void {\n this._focusMonitor.monitor(this.elementRef, true);\n }\n\n ngOnDestroy(): void {\n this._focusMonitor.stopMonitoring(this.elementRef);\n\n if (this.popoverTrigger) {\n this.popoverTrigger.destroyPopover();\n }\n }\n\n public focus(origin: FocusOrigin = 'program', options?: FocusOptions): void {\n if (origin) {\n this._focusMonitor.focusVia(this.elementRef.nativeElement, origin, options);\n } else {\n this.elementRef.nativeElement.focus(options);\n }\n }\n\n public onHandleClick(event: MouseEvent): void {\n if (!this.disabled && !this.loading) {\n this.onClickEvent.emit(event);\n }\n event.stopPropagation();\n }\n\n public onHandleFocus(event: FocusEvent): void {\n if (!this.disabled && !this.loading) {\n this.onFocusEvent.emit(event);\n }\n }\n\n public onHandleBlur(event: FocusEvent): void {\n if (!this.disabled && !this.loading) {\n this.onBlurEvent.emit(event);\n }\n }\n\n public onHandleOpened(): void {\n if (!this.disabled && !this.loading) {\n this.onOpenedEvent.emit();\n }\n }\n\n public onHandleClosed(): void {\n if (!this.disabled && !this.loading) {\n this.onClosedEvent.emit();\n }\n }\n\n public showPopover(): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n this.popoverTrigger.openPopover();\n }\n }\n\n public closePopover(): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n this.popoverTrigger.closePopover();\n }\n }\n\n @HostListener('window:resize', ['$event'])\n public onResize(event: UIEvent): void {\n if (this.popoverTrigger) {\n this.popoverTrigger.closePopover();\n event.stopPropagation();\n }\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, inject, Input } from '@angular/core';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'gipi-helpful-tip',\n exportAs: 'gHelpfulTip',\n template: `\n <gipi-icon\n class=\"g-helpful-tip-icon\"\n aria-label=\"Dica útil\"\n [matTooltip]=\"tooltip\"\n [matTooltipClass]=\"'tooltip-helpful-tip'\"\n [size]=\"14\"\n [fontSet]=\"'ROUNDED'\"\n [icon]=\"'help'\"\n [variation]=\"'FILLED'\" />\n `,\n styleUrl: './helpful-tip.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-helpful-tip',\n },\n providers: [],\n imports: [CommonModule, MatTooltipModule, IconComponent],\n})\nexport class HelpfulTipComponent {\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-helpful-tip-');\n protected _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n @Input({ required: true }) tooltip: string = '';\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport {\n AbstractControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n} from '@angular/forms';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { HelpfulTipComponent } from '../helpful-tip/helpful-tip.component';\nimport { ButtonGroupOption } from './shared/button-group-option.model';\n\n@Component({\n selector: 'gipi-button-group',\n template: `\n @if (label) {\n <label\n class=\"g-button-group-label\"\n [attr.for]=\"_controlUniqueId\">\n {{ label }}\n @if (required) {\n <span>*</span>\n }\n @if (help) {\n <gipi-helpful-tip [tooltip]=\"help\" />\n }\n </label>\n }\n\n <div\n class=\"g-button-group-option-list\"\n role=\"group\"\n [attr.id]=\"_controlUniqueId\">\n @for (option of options; track option) {\n <button\n class=\"g-button-group-option\"\n [class.g-button-group-option-selected]=\"value === option?.value\"\n [disabled]=\"disabled || isOptionDisabled(option)\"\n (click)=\"onHandleOptionClick(option)\">\n {{ option?.label }}\n </button>\n }\n </div>\n `,\n styleUrl: './button-group.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-button-group',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ButtonGroupComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: ButtonGroupComponent,\n multi: true,\n },\n ],\n imports: [CommonModule, HelpfulTipComponent],\n})\nexport class ButtonGroupComponent implements OnChanges {\n protected readonly _controlUniqueId: string = inject(_IdGenerator).getId(\n 'gipi-button-group-control-',\n );\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-button-group-');\n\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() label: string = '';\n @Input() help: string = '';\n @Input({ transform: booleanAttribute }) disabled: BooleanInput = false;\n @Input({ transform: booleanAttribute }) required: BooleanInput = false;\n\n private _options: ButtonGroupOption[] = [];\n @Input({ required: true })\n set options(value: ButtonGroupOption[]) {\n this._options = value;\n }\n get options(): ButtonGroupOption[] {\n return this._options;\n }\n\n private _value: string | number | null = null;\n @Input()\n set value(value: string | number | null) {\n this._value = value;\n this._onChange(value);\n }\n get value(): string | number | null {\n return this._value;\n }\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['required']) {\n this._validatorChangeFn();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onChange: (value: string | number | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onTouched: () => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _validatorChangeFn: () => void = () => {};\n\n public writeValue(value: string | number | null): void {\n this.value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n public registerOnChange(fn: (value: string | number | null) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n public validate(control: AbstractControl<string | number | null>): ValidationErrors | null {\n return this.required && !control.value ? { required: true } : null;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this._validatorChangeFn = fn;\n }\n\n protected isOptionDisabled(option: ButtonGroupOption): boolean {\n if (ObjectUtil.isEmpty(option)) {\n return false;\n }\n if (typeof option.disabled === 'function') {\n return option.disabled(option);\n }\n return !!option.disabled;\n }\n\n public onHandleOptionClick(option: ButtonGroupOption): void {\n if (this.disabled || this.isOptionDisabled(option)) {\n return;\n }\n this.writeValue(option.value);\n }\n}\n","export class ButtonGroupOption {\n label: string;\n value: string | number;\n disabled: boolean | ((object: ButtonGroupOption) => boolean) | null;\n\n constructor(data?: Partial<ButtonGroupOption>) {\n this.label = data?.label ?? '';\n this.value = data?.value ?? '';\n this.disabled = data?.disabled ?? false;\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { Booleanish } from '../../types/booleanish.type';\nimport { HelpfulTipComponent } from '../helpful-tip/helpful-tip.component';\n\nexport class CheckboxChange {\n source!: CheckboxComponent;\n checked!: boolean;\n}\n\nexport enum eCheckboxState {\n /** The initial state of the component before any user interaction. */\n INIT,\n /** The state representing the component when it's becoming checked. */\n CHECKED,\n /** The state representing the component when it's becoming unchecked. */\n UNCHECKED,\n /** The state representing the component when it's becoming indeterminate. */\n INDETERMINATE,\n}\n\n@Component({\n selector: 'gipi-checkbox',\n exportAs: 'gCheckbox',\n template: `\n <input\n #inputRef\n type=\"checkbox\"\n [attr.id]=\"_inputId\"\n [name]=\"_inputId\"\n [required]=\"required\"\n [class.primary]=\"variant === 'primary'\"\n [class.secondary]=\"variant === 'secondary'\"\n [attr.data-state]=\"_currentCheckState$ | async\"\n [attr.aria-checked]=\"indeterminate ? 'mixed' : null\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n [disabled]=\"disabled\"\n (change)=\"$event.stopPropagation()\"\n (click)=\"onHandleClick()\"\n (focus)=\"onHandleFocus($event)\"\n (blur)=\"onHandleBlur($event)\" />\n @if (label) {\n <label\n #labelRef\n [attr.for]=\"_inputId\"\n [class.disabled]=\"disabled\">\n {{ label }}\n\n @if (help) {\n <gipi-helpful-tip [tooltip]=\"help\" />\n }\n </label>\n }\n `,\n styleUrl: './checkbox.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[name]': 'name',\n class: 'g-checkbox',\n '(click)': '_preventBubblingFromLabel($event)',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: CheckboxComponent,\n multi: true,\n },\n ],\n imports: [CommonModule, FormsModule, HelpfulTipComponent],\n})\nexport class CheckboxComponent\n implements ControlValueAccessor, Validator, OnChanges, AfterViewInit\n{\n @ViewChild('inputRef') _inputRef!: ElementRef<HTMLInputElement>;\n @ViewChild('labelRef') _labelRef?: ElementRef<HTMLInputElement>;\n\n private readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-checkbox-');\n protected _inputId: string = this._uniqueId + '-input';\n\n private _currentCheckState: eCheckboxState = eCheckboxState.INIT;\n protected _currentCheckState$ = new BehaviorSubject<keyof typeof eCheckboxState>('INIT');\n\n private _changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n public elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() variant: 'primary' | 'secondary' = 'primary';\n\n @Input() label: string = '';\n\n @Input() help: string = '';\n\n @Input({ transform: booleanAttribute })\n required: boolean = false;\n\n private _disabled: boolean = false;\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n if (value !== this.disabled) {\n this._disabled = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n private _checked: boolean = false;\n @Input({ transform: booleanAttribute })\n get checked(): boolean {\n return this._checked;\n }\n set checked(value: boolean) {\n if (value != this.checked) {\n this._checked = value;\n\n if (this.indeterminate) {\n this._transitionCheckState(eCheckboxState.INDETERMINATE);\n } else {\n this._transitionCheckState(\n this.checked ? eCheckboxState.CHECKED : eCheckboxState.UNCHECKED,\n );\n }\n\n this._changeDetectorRef.markForCheck();\n }\n }\n\n private _indeterminate: boolean = false;\n @Input({ transform: booleanAttribute })\n get indeterminate(): boolean {\n return this._indeterminate;\n }\n set indeterminate(value: boolean) {\n const changed: boolean = value != this._indeterminate;\n this._indeterminate = value;\n\n if (changed) {\n if (this._indeterminate) {\n this._transitionCheckState(eCheckboxState.INDETERMINATE);\n } else {\n this._transitionCheckState(\n this.checked ? eCheckboxState.CHECKED : eCheckboxState.UNCHECKED,\n );\n }\n this.onIndeterminate.emit(this._indeterminate);\n }\n\n this._syncIndeterminate(this._indeterminate);\n }\n\n @Output() readonly onChange = new EventEmitter<CheckboxChange>();\n @Output() readonly onIndeterminate = new EventEmitter<boolean>();\n @Output() readonly onFocus = new EventEmitter<FocusEvent>();\n @Output() readonly onBlur = new EventEmitter<FocusEvent>();\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['required']) {\n this._validatorChangeFn();\n }\n }\n\n ngAfterViewInit() {\n this._syncIndeterminate(this._indeterminate);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onChange: (value: Booleanish) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onTouched: () => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _validatorChangeFn: () => void = () => {};\n\n public writeValue(value: Booleanish): void {\n this.checked = !!value;\n }\n\n public registerOnChange(fn: (value: Booleanish) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public validate(control: AbstractControl<boolean>): ValidationErrors | null {\n return this.required && control.value !== true ? { required: true } : null;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this._validatorChangeFn = fn;\n }\n\n protected _preventBubblingFromLabel(event: MouseEvent) {\n if (!!event.target && this._labelRef?.nativeElement.contains(event.target as HTMLElement)) {\n event.stopPropagation();\n }\n }\n\n protected _createChangeEvent(isChecked: boolean): CheckboxChange {\n const event: CheckboxChange = new CheckboxChange();\n event.source = this;\n event.checked = booleanAttribute(isChecked);\n return event;\n }\n\n private _syncIndeterminate(value: boolean) {\n const nativeCheckbox: ElementRef<HTMLInputElement> = this._inputRef;\n if (nativeCheckbox) {\n nativeCheckbox.nativeElement.indeterminate = value;\n }\n }\n\n private _transitionCheckState(newState: eCheckboxState) {\n const oldState: eCheckboxState = this._currentCheckState;\n if (oldState === newState) {\n return;\n }\n this._currentCheckState = newState;\n this._currentCheckState$.next(eCheckboxState[newState] as keyof typeof eCheckboxState);\n }\n\n public onHandleClick(): void {\n // If resetIndeterminate is false, and the current state is indeterminate, do nothing on click\n if (!this.disabled) {\n // When user manually click on the checkbox, `indeterminate` is set to false.\n if (this.indeterminate) {\n Promise.resolve().then(() => {\n this._indeterminate = false;\n this.onIndeterminate.emit(this._indeterminate);\n });\n }\n\n this._checked = !this._checked;\n this._transitionCheckState(\n this._checked ? eCheckboxState.CHECKED : eCheckboxState.UNCHECKED,\n );\n\n this._onChange(this.checked);\n this.onChange.emit(this._createChangeEvent(this.checked));\n\n if (this._inputRef) {\n this._inputRef.nativeElement.checked = this.checked;\n }\n } else if (this.disabled) {\n this._inputRef.nativeElement.checked = this.checked;\n this._inputRef.nativeElement.indeterminate = this.indeterminate;\n }\n }\n\n public onHandleFocus(event: FocusEvent): void {\n if (!this.disabled) {\n this.onFocus.emit(event);\n }\n }\n\n public onHandleBlur(event: FocusEvent): void {\n if (!this.disabled) {\n this.onBlur.emit(event);\n }\n }\n\n public toggle(): void {\n this.checked = this._checked;\n this._onChange(this.checked);\n }\n}\n","/* eslint-disable @angular-eslint/no-output-rename */\n/* eslint-disable @angular-eslint/no-output-native */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n OnChanges,\n Output,\n signal,\n SimpleChanges,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { StringUtil } from '../../utils/string.util';\n\n@Component({\n selector: 'gipi-chips',\n exportAs: 'gChips',\n template: `\n <mat-chip-set\n class=\"g-chips-control\"\n [disabled]=\"!!disabled\">\n {{ label }}\n\n @for (chip of chips(); track chip; let i = $index) {\n <mat-chip class=\"g-chips-control-item\">\n {{ getChipLabel(chip) }}\n\n @if (showRemove) {\n <button\n class=\"g-control-item-button\"\n [attr.aria-label]=\"'Remover ' + getChipLabel(chip)\"\n [disabled]=\"!!disabled\"\n (click)=\"remove(chip, i)\">\n <span class=\"material-symbols-rounded g-control-item-button-icon\">\n close\n </span>\n </button>\n }\n </mat-chip>\n }\n\n @if (showRemoveAll && hasChips()) {\n <mat-chip class=\"g-chips-control-item g-chips-control-item-all\">\n {{ labelRemoveAll }}\n\n <button\n class=\"g-control-item-button g-control-item-button-all\"\n [attr.aria-label]=\"'Remover todos'\"\n [disabled]=\"!!disabled\"\n (click)=\"removeAll()\">\n <span class=\"material-symbols-rounded g-control-item-button-icon\">\n delete\n </span>\n </button>\n </mat-chip>\n }\n </mat-chip-set>\n `,\n styleUrl: './chips.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n '[attr.role]': `'listbox'`,\n class: 'g-chips',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ChipsComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: ChipsComponent,\n multi: true,\n },\n ],\n imports: [CommonModule, FormsModule, MatChipsModule],\n})\nexport class ChipsComponent<TChip = any> implements ControlValueAccessor, Validator, OnChanges {\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-chips-');\n\n protected chips = signal<TChip[]>([]);\n\n protected hasChips = computed(() => {\n const chipsValue = this.chips();\n return chipsValue && chipsValue.length > 0;\n });\n\n private _changeDetectorRef = inject(ChangeDetectorRef);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() label: string = '';\n @Input() labelRemoveAll: string = 'Limpar';\n\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\n @Input({ transform: booleanAttribute }) required: boolean = false;\n @Input({ transform: booleanAttribute }) showRemove: boolean = true;\n @Input({ transform: booleanAttribute }) showRemoveAll: boolean = true;\n\n @Input() property: string = '';\n\n @Input() propertyFn: ((chip: TChip) => string) | null = null;\n\n private _value: TChip[] = [];\n @Input()\n set value(value: TChip[]) {\n this._value = value;\n this.chips.set(value);\n\n this._onChange(value);\n\n this._changeDetectorRef.markForCheck();\n }\n get value(): TChip[] {\n return this._value;\n }\n\n @Output('focus') onFocusEvent = new EventEmitter<FocusEvent>();\n @Output('click') onClickEvent = new EventEmitter<FocusEvent>();\n @Output('remove') removeChangeEvent = new EventEmitter<TChip>();\n @Output('removeAll') removeAllChangeEvent = new EventEmitter<void>();\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['required']) {\n this._validatorChangeFn();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onChange: (value: TChip[]) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onTouched: () => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _validatorChangeFn: () => void = () => {};\n\n public writeValue(value: TChip[]): void {\n this.value = value;\n }\n\n public registerOnChange(fn: (value: TChip[]) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public validate(control: AbstractControl<TChip[]>): ValidationErrors | null {\n return this.required && !control.value ? { required: true } : null;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this._validatorChangeFn = fn;\n }\n\n protected getChipLabel(chip: TChip): string {\n if (this.propertyFn) {\n return this.propertyFn(chip);\n }\n if (!StringUtil.isEmpty(this.property)) {\n return (chip as any)[this.property] ?? '';\n }\n return chip?.toString() ?? '';\n }\n\n protected remove(chip: TChip, index: number): void {\n if (this.disabled || !this.showRemove) {\n return;\n }\n this.value = this.value.filter((_, i) => i !== index);\n this.removeChangeEvent.emit(chip);\n this._changeDetectorRef.detectChanges();\n }\n\n protected removeAll(): void {\n if (this.disabled || !this.showRemoveAll) {\n return;\n }\n this.value = [];\n this.removeAllChangeEvent.emit();\n this._changeDetectorRef.detectChanges();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MomentDateAdapter } from '@angular/material-moment-adapter';\nimport { DateUtil } from '../utils/date.util';\n\n@Injectable()\nexport class MomentDateAdapterService extends MomentDateAdapter {\n public override getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n // Moment.js doesn't support narrow month names, so we just use short if narrow is requested.\n return style == 'long' ? DateUtil.MONTHS_LONG : DateUtil.MONTHS;\n }\n\n public override getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n return style == 'long' ? DateUtil.WEEKDAYS_LONG : DateUtil.WEEKDAYS;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n DestroyRef,\n inject,\n Input,\n OnInit,\n type OnChanges,\n type SimpleChanges,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractControl, FormsModule, NgControl } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { DateUtil } from '../../utils/date.util';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { tFieldErrorCustomValidators } from './shared/field-error-custom-validators.type';\n\n/**\n * Componente para exibição de mensagens de erro de formulário no Angular.\n *\n * Este componente exibe mensagens de erro associadas a um controle de formulário (usando `NgControl` ou `AbstractControl`).\n * Ele pode ser utilizado dentro de campos de formulário com `mat-form-field` do Angular Material e trabalha tanto com formulários reativos quanto baseados em template-driven.\n *\n * **Como Usar:**\n *\n * 1. Adicione o componente `gipi-field-error` dentro de um `mat-form-field` ou outro container de formulário:\n *\n * ```html\n * <mat-form-field>\n * <input matInput [formControl]=\"control\">\n * <gipi-field-error [control]=\"control\" />\n * </mat-form-field>\n * ```\n *\n * 2. Se você desejar adicionar erros personalizados, utilize o input `customErrors` com um objeto que mapeia erros para funções personalizadas. Cada função recebe o valor do erro, o controle correspondente e o nome do erro. Se a função retornar `null` ou `undefined`, o erro não será exibido.\n *\n * **Exemplo de uso de erros personalizados:**\n *\n * ```typescript\n * customErrors = {\n * required: (_, __) => 'Este campo é obrigatório (customizado)',\n * max: (e) => 'Valor acima do permitido',\n * meuErro: (value, control, key) => value?.especial ? 'Erro especial!' : null\n * };\n * ```\n *\n * E no template:\n *\n * ```html\n * <gipi-field-error [control]=\"control\" [customErrors]=\"customErrors\" />\n * ```\n *\n * **Propriedades:**\n * - `control`: O controle de formulário (`NgControl` ou `AbstractControl`) que será monitorado para erros.\n * - `customErrors`: Objeto opcional para definir erros personalizados.\n *\n * **Comportamento:**\n * - O componente escuta mudanças no estado do controle de formulário e exibe mensagens de erro baseadas nas validações.\n * - Mensagens de erro padrão incluem: `required`, `minlength`, `maxlength`, `min`, `max`, `email`.\n *\n * **Exemplo de Template:**\n *\n * ```html\n * <mat-form-field>\n * <input matInput formControlName=\"email\">\n * <gipi-field-error [control]=\"emailControl\" [customErrors]=\"customErrors\" />\n * </mat-form-field>\n * ```\n *\n * Este componente pode ser utilizado de forma reutilizável e flexível em diversos formulários Angular, simplificando a exibição de erros de validação.\n */\n@Component({\n selector: 'gipi-field-error',\n exportAs: 'gFieldError',\n template: `\n @for (error of errors; track error) {\n <mat-error>{{ error }}</mat-error>\n }\n `,\n styleUrl: './field-error.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n role: 'alert',\n class: 'g-field-error',\n },\n imports: [CommonModule, FormsModule, MatFormFieldModule],\n})\nexport class FieldErrorComponent implements OnInit, OnChanges {\n @ContentChild(NgControl, { static: false })\n ngControl?: NgControl;\n\n private readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-field-error-');\n\n private readonly _destroyRef = inject(DestroyRef);\n\n protected errors: string[] = [];\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n /**\n * Funções de erro customizadas.\n * Cada chave representa o nome do erro, e o valor é uma função que recebe:\n * - o valor do erro\n * - o AbstractControl correspondente\n * - o nome do erro\n *\n * @example\n * ```typescript\n * customErrors = {\n * required: (_, __) => 'Este campo é obrigatório (customizado)',\n * max: (e) => 'Valor acima do permitido',\n * meuErro: (value, control, key) => value?.especial ? 'Erro especial!' : null\n * };\n * ```\n *\n * @example\n * ```html\n * <gipi-field-error [customErrors]=\"customErrors\" />\n * ```\n */\n @Input() customErrors: tFieldErrorCustomValidators = {};\n @Input() control?: NgControl | AbstractControl;\n\n ngOnInit() {\n const control = this._resolveControl();\n if (!ObjectUtil.isEmpty(control)) {\n control.statusChanges\n ?.pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._updateErrors(control));\n this._updateErrors(control);\n }\n }\n\n ngOnChanges(_changes: SimpleChanges): void {\n const control = this._resolveControl();\n if (control) {\n this._updateErrors(control);\n }\n }\n\n private _resolveControl(): AbstractControl | null {\n if (this.control instanceof NgControl) {\n return this.control.control!;\n }\n if (this.control instanceof AbstractControl) {\n return this.control;\n }\n if (this.ngControl) {\n return this.ngControl.control!;\n }\n return null;\n }\n\n private _updateErrors(control: AbstractControl) {\n if (!control || !(control.touched || control.dirty)) {\n this.errors = [];\n return;\n }\n\n const defaultErrors: Record<string, (error: any, _: AbstractControl) => string> = {\n required: () => 'Campo obrigatório',\n minlength: (e) => `Mínimo de ${e.requiredLength} caracteres.`,\n maxlength: (e) => `Máximo de ${e.requiredLength} caracteres.`,\n min: (e) => `O valor mínimo é ${e.min}.`,\n max: (e) => `O valor máximo é ${e.max}.`,\n email: () => 'E-mail inválido.',\n matDatepickerMin: (e) => `Data mínima permitida: ${DateUtil.format(e.min)}.`,\n matDatepickerMax: (e) => `Data máxima permitida: ${DateUtil.format(e.max)}.`,\n };\n\n const errors = control.errors ?? {};\n const custom = this.customErrors ?? {};\n\n this.errors = Object.entries(errors).map(([key, value]) => {\n const customFn = custom[key];\n if (customFn) {\n return customFn(value, control, key) ?? `Erro: ${key}`;\n }\n\n const defaultFn = defaultErrors[key];\n return defaultFn ? defaultFn(value, control) : `Erro: ${key}`;\n });\n }\n}\n","/* eslint-disable @angular-eslint/no-output-rename */\n/* eslint-disable @angular-eslint/no-output-native */\nimport localePtBr from '@angular/common/locales/pt';\nimport moment from 'moment';\nimport 'moment/locale/pt-br';\n\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CommonModule, registerLocaleData } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n LOCALE_ID,\n OnChanges,\n Output,\n signal,\n SimpleChanges,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { DateFilterFn, MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MomentDateAdapterService } from '../../services/moment-date-adapter.service';\nimport { DateUtil } from '../../utils/date.util';\nimport { FieldErrorComponent } from '../field-error/field-error.component';\nimport { tFieldErrorCustomValidators } from '../field-error/shared/field-error-custom-validators.type';\nimport { HelpfulTipComponent } from '../helpful-tip/helpful-tip.component';\n\nregisterLocaleData(localePtBr);\n\n@Component({\n selector: 'gipi-date-picker',\n exportAs: 'gDatePicker',\n template: `\n @if (label) {\n <label\n class=\"g-date-picker-label\"\n [attr.for]=\"_matFormFieldUniqueId\">\n {{ label }}\n @if (required) {\n <span>*</span>\n }\n @if (help) {\n <gipi-helpful-tip [tooltip]=\"help\" />\n }\n </label>\n }\n <mat-form-field\n #formFieldInput\n class=\"g-date-picker-form-field\"\n appearance=\"outline\"\n [attr.id]=\"_matFormFieldUniqueId\"\n [hintLabel]=\"hintLabel\">\n <input\n matInput\n [matDatepicker]=\"picker\"\n [matDatepickerFilter]=\"dateFilter\"\n [placeholder]=\"placeholder\"\n [attr.id]=\"_matFormFieldUniqueId + '-input'\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [autocomplete]=\"'off'\"\n [maxLength]=\"10\"\n [min]=\"min\"\n [max]=\"max\"\n [disabled]=\"!!disabled\"\n [readonly]=\"!!readonly\"\n [required]=\"!!required\"\n [(ngModel)]=\"value\"\n (keyup)=\"onKeyupEvent.emit($event)\"\n (focus)=\"onFocusEvent.emit($event)\"\n (blur)=\"onHandleBlur($event)\" />\n\n <mat-datepicker-toggle\n matIconSuffix\n [for]=\"picker\"\n [disableRipple]=\"true\"\n [disabled]=\"!!disabled\" />\n\n <mat-datepicker\n #picker\n [startView]=\"startView\"\n [startAt]=\"startAt\"\n [disabled]=\"!!disabled\" />\n\n <gipi-field-error [customErrors]=\"customErrors\" />\n </mat-form-field>\n `,\n styleUrl: './date-picker.component.scss',\n // changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-date-picker',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: DatePickerComponent,\n multi: true,\n },\n { provide: DateAdapter, useClass: MomentDateAdapterService },\n { provide: MAT_DATE_FORMATS, useValue: DateUtil.DATE_FORMATS },\n { provide: LOCALE_ID, useValue: 'pt-BR' },\n { provide: MAT_DATE_LOCALE, useValue: 'pt-BR' },\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n HelpfulTipComponent,\n FieldErrorComponent,\n ],\n})\nexport class DatePickerComponent implements ControlValueAccessor, Validator, OnChanges {\n protected readonly _matFormFieldUniqueId: string = inject(_IdGenerator).getId(\n 'gipi-date-picker-control-',\n );\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-date-picker-');\n\n private _dateAdapter = inject(DateAdapter);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() label: string = '';\n\n @Input() placeholder: string = '__/__/____';\n\n @Input() hintLabel: string = '';\n\n @Input() help: string = '';\n\n @Input({ transform: booleanAttribute })\n disabled: BooleanInput = false;\n\n @Input({ transform: booleanAttribute })\n readonly: BooleanInput = false;\n\n @Input({ transform: booleanAttribute })\n required: BooleanInput = false;\n\n @Input() startView: 'month' | 'year' | 'multi-year' = 'month';\n\n @Input() startAt: Date | null = new Date();\n\n @Input() customErrors: tFieldErrorCustomValidators = {};\n\n @Input() dateFilter: DateFilterFn<Date | null> = () => true;\n\n private _min = signal<moment.Moment>(moment('1900-01-01 00:00:00'));\n @Input()\n set min(value: Date | null) {\n if (!DateUtil.isEmpty(value)) {\n this._min.set(moment(value));\n } else {\n this._min.set(moment('1900-01-01 00:00:00'));\n }\n }\n get min(): Date | null {\n const min = this._min();\n return !DateUtil.isEmpty(min) ? min.toDate() : null;\n }\n\n private _max = signal<moment.Moment | null>(null);\n @Input()\n set max(value: Date | null) {\n if (!DateUtil.isEmpty(value)) {\n this._max.set(moment(value));\n } else {\n this._max.set(null);\n }\n }\n get max(): Date | null {\n const max = this._max();\n return !DateUtil.isEmpty(max) ? max.toDate() : null;\n }\n\n private _value = signal<Date | null>(null);\n @Input()\n set value(value: Date | null) {\n this._value.set(value);\n this._onChange(value);\n }\n get value(): Date | null {\n return this._value();\n }\n\n @Output('focus') readonly onFocusEvent = new EventEmitter<FocusEvent>();\n @Output('keyup') readonly onKeyupEvent = new EventEmitter<KeyboardEvent>();\n @Output('blur') readonly onBlurEvent = new EventEmitter<FocusEvent>();\n\n constructor() {\n this._dateAdapter.setLocale('pt-BR');\n moment.locale('pt-br');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['required']) {\n this._validatorChangeFn();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onChange: (value: Date | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onTouched: () => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _validatorChangeFn: () => void = () => {};\n\n public writeValue(value: Date | null): void {\n this.value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n public registerOnChange(fn: (value: Date | null) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public validate(control: AbstractControl<Date | null>): ValidationErrors | null {\n return this.required && !control.value ? { required: true } : null;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this._validatorChangeFn = fn;\n }\n\n protected onHandleBlur(event: FocusEvent): void {\n this._onTouched();\n this.onBlurEvent.emit(event);\n\n const input = event.target as HTMLInputElement;\n const value = input.value;\n\n if (!value) {\n this.value = null;\n return;\n }\n\n const parsed: moment.Moment = this._dateAdapter.parse(value, 'DD/MM/YYYY');\n if (!parsed || !parsed.isValid()) {\n this.value = null;\n input.value = '';\n return;\n }\n\n const isBeforeMin: boolean = parsed.isBefore(this.min);\n const isAfterMax: boolean = parsed.isAfter(this.max);\n if (isBeforeMin || isAfterMax) {\n this.value = null;\n input.value = '';\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NativeDateAdapter } from '@angular/material/core';\nimport { DateUtil } from '../utils/date.util';\n\n@Injectable()\nexport class NativeDateAdapterService extends NativeDateAdapter {\n public override getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n return style === 'long' ? DateUtil.MONTHS_LONG : DateUtil.MONTHS;\n }\n\n public override getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n return style === 'long' ? DateUtil.WEEKDAYS_LONG : DateUtil.WEEKDAYS;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { DateAdapter } from '@angular/material/core';\nimport { DateRange, MatDateRangeSelectionStrategy } from '@angular/material/datepicker';\n\n@Injectable()\nexport class RangeSelectionStrategyService implements MatDateRangeSelectionStrategy<Date> {\n private _dateAdapter = inject(DateAdapter);\n\n constructor() {}\n\n public selectionFinished(\n date: Date | null,\n currentRange: DateRange<Date>,\n _event: Event,\n ): DateRange<Date> {\n const { start, end } = currentRange;\n\n if (start == null || (start && end)) {\n return new DateRange(date, null);\n }\n\n return new DateRange(start, date);\n }\n\n public createPreview(\n activeDate: Date | null,\n currentRange: DateRange<Date>,\n _event: Event,\n ): DateRange<Date> {\n const { start, end } = currentRange;\n\n if (start != null && end == null && activeDate != null) {\n return new DateRange(start, activeDate);\n }\n\n return new DateRange<Date>(null, null);\n }\n\n public createDrag?(\n dragOrigin: Date,\n originalRange: DateRange<Date>,\n newDate: Date,\n _event: Event,\n ): DateRange<Date> | null {\n let start = originalRange.start;\n let end = originalRange.end;\n\n if (!start || !end) {\n return null;\n }\n\n const adapter = this._dateAdapter;\n\n const isRange = adapter.compareDate(start, end) !== 0;\n const diffYears = adapter.getYear(newDate) - adapter.getYear(dragOrigin);\n const diffMonths = adapter.getMonth(newDate) - adapter.getMonth(dragOrigin);\n const diffDays = adapter.getDate(newDate) - adapter.getDate(dragOrigin);\n\n if (isRange && adapter.sameDate(dragOrigin, originalRange.start)) {\n start = newDate;\n if (adapter.compareDate(newDate, end) > 0) {\n end = adapter.addCalendarYears(end, diffYears);\n end = adapter.addCalendarMonths(end, diffMonths);\n end = adapter.addCalendarDays(end, diffDays);\n }\n } else if (isRange && adapter.sameDate(dragOrigin, originalRange.end)) {\n end = newDate;\n if (adapter.compareDate(newDate, start) < 0) {\n start = adapter.addCalendarYears(start, diffYears);\n start = adapter.addCalendarMonths(start, diffMonths);\n start = adapter.addCalendarDays(start, diffDays);\n }\n } else {\n start = adapter.addCalendarYears(start, diffYears);\n start = adapter.addCalendarMonths(start, diffMonths);\n start = adapter.addCalendarDays(start, diffDays);\n end = adapter.addCalendarYears(end, diffYears);\n end = adapter.addCalendarMonths(end, diffMonths);\n end = adapter.addCalendarDays(end, diffDays);\n }\n\n return new DateRange<Date>(start, end);\n }\n}\n","import localePtBr from '@angular/common/locales/pt';\nimport moment from 'moment';\nimport 'moment/locale/pt-br';\n\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule, registerLocaleData } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n Input,\n LOCALE_ID,\n OnInit,\n Output,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\nimport {\n DateFilterFn,\n DateRange,\n MAT_DATE_RANGE_SELECTION_STRATEGY,\n MatCalendar,\n MatDatepickerModule,\n} from '@angular/material/datepicker';\nimport { NativeDateAdapterService } from '../../../../services/native-date-adapter.service';\nimport { DateUtil } from '../../../../utils/date.util';\nimport { RangeSelectionStrategyService } from '../range-selection-strategy.service';\n\nregisterLocaleData(localePtBr);\n\n@Component({\n selector: 'gipi-calendar',\n exportAs: 'gCalendar',\n template: `\n <mat-calendar\n #calendarView\n [startAt]=\"startAt\"\n [selected]=\"selectedDates\"\n [minDate]=\"min\"\n [maxDate]=\"max\"\n [dateFilter]=\"dateFilter\"\n (selectedChange)=\"updateDateRangeSelection($event)\" />\n `,\n styleUrl: './calendar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-calendar',\n },\n providers: [\n { provide: DateAdapter, useClass: NativeDateAdapterService },\n { provide: MAT_DATE_FORMATS, useValue: DateUtil.DATE_FORMATS },\n { provide: LOCALE_ID, useValue: 'pt-BR' },\n { provide: MAT_DATE_LOCALE, useValue: 'pt-BR' },\n { provide: MAT_DATE_RANGE_SELECTION_STRATEGY, useClass: RangeSelectionStrategyService },\n ],\n imports: [CommonModule, MatDatepickerModule],\n})\nexport class CalendarComponent implements OnInit {\n @ViewChild('calendarView')\n calendarView!: MatCalendar<Date>;\n\n private readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-date-range-picker-');\n\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _dateAdapter = inject(DateAdapter);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() selectedDates!: DateRange<Date> | null;\n\n @Input() startAt: Date | null = null;\n\n @Input() dateFilter: DateFilterFn<Date | null> = () => true;\n\n private _min = signal<moment.Moment>(moment('1900-01-01 00:00:00'));\n @Input()\n set min(value: Date | null) {\n if (!DateUtil.isEmpty(value)) {\n this._min.set(moment(value));\n } else {\n this._min.set(moment('1900-01-01 00:00:00'));\n }\n }\n get min(): Date | null {\n const min = this._min();\n return !DateUtil.isEmpty(min) ? min.toDate() : null;\n }\n\n private _max = signal<moment.Moment | null>(null);\n @Input()\n set max(value: Date | null) {\n if (!DateUtil.isEmpty(value)) {\n this._max.set(moment(value));\n } else {\n this._max.set(null);\n }\n }\n get max(): Date | null {\n const max = this._max();\n return !DateUtil.isEmpty(max) ? max.toDate() : null;\n }\n\n @Output() dateRangeCompleted = new EventEmitter<DateRange<Date>>();\n\n constructor() {\n this._dateAdapter.setLocale('pt-BR');\n moment.locale('pt-br');\n }\n\n ngOnInit(): void {\n if (DateUtil.isEmpty(this.startAt)) {\n this.startAt = this.selectedDates?.start || new Date();\n }\n }\n\n protected updateDateRangeSelection(date: Date | null): void {\n const selected = this.selectedDates;\n if (\n !selected ||\n (selected.start && selected.end) ||\n (selected.start && date && selected.start > date)\n ) {\n this.selectedDates = new DateRange<Date>(date, null);\n } else {\n this.selectedDates = new DateRange<Date>(selected.start, date);\n\n // Emite quando ambas as datas estão selecionadas\n if (this.selectedDates.start && this.selectedDates.end) {\n this.dateRangeCompleted.emit(this.selectedDates);\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n}\n","export enum ePresetKey {\n /** Diferença de data */ DATE_DIFF = 1,\n /** Hoje */ TODAY = 2,\n /** Essa semana */ THIS_WEEK = 3,\n /** Esse mês */ THIS_MONTH = 4,\n /** Esse ano */ THIS_YEAR = 5,\n /** Últimos 7 dias */ LAST_7_DAYS = 6,\n /** Últimos 30 dias */ LAST_30_DAYS = 7,\n /** Últimos 365 dias */ LAST_365_DAYS = 8,\n /** Personalizado */ CUSTOM = 9,\n}\n","import { ePresetKey } from './preset-key.enum';\nimport { iSelectDateOption } from './select-date-option.interface';\n\nexport const DEFAULT_PRESET_DATE_OPTIONS: iSelectDateOption[] = [\n {\n label: 'Hoje',\n key: ePresetKey.DATE_DIFF,\n dateDiff: 0,\n selected: false,\n visible: true,\n },\n {\n label: 'Últimos 7 dias',\n key: ePresetKey.DATE_DIFF,\n dateDiff: -7,\n selected: false,\n visible: true,\n },\n {\n label: 'Últimos 30 dias',\n key: ePresetKey.DATE_DIFF,\n dateDiff: -30,\n selected: false,\n visible: true,\n },\n {\n label: 'Últimos 365 dias',\n key: ePresetKey.DATE_DIFF,\n dateDiff: -365,\n selected: false,\n visible: true,\n },\n {\n label: 'Essa semana',\n key: ePresetKey.THIS_WEEK,\n dateDiff: 0,\n selected: false,\n visible: true,\n },\n {\n label: 'Esse mês',\n key: ePresetKey.THIS_MONTH,\n dateDiff: 0,\n selected: false,\n visible: true,\n },\n {\n label: 'Esse ano',\n key: ePresetKey.THIS_YEAR,\n dateDiff: 0,\n selected: false,\n visible: true,\n },\n {\n label: 'Personalizado',\n key: ePresetKey.CUSTOM,\n dateDiff: 0,\n selected: false,\n visible: true,\n },\n] as iSelectDateOption[];\n","import localePtBr from '@angular/common/locales/pt';\nimport moment from 'moment';\nimport 'moment/locale/pt-br';\n\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { BooleanInput, type NumberInput } from '@angular/cdk/coercion';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule, registerLocaleData } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n Input,\n LOCALE_ID,\n numberAttribute,\n OnInit,\n Output,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n DateAdapter,\n MAT_DATE_FORMATS,\n MAT_DATE_LOCALE,\n MatNativeDateModule,\n} from '@angular/material/core';\nimport { DateRange, MatDatepickerModule, type DateFilterFn } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { NativeDateAdapterService } from '../../services/native-date-adapter.service';\nimport { DateUtil } from '../../utils/date.util';\nimport { HelpfulTipComponent } from '../helpful-tip/helpful-tip.component';\nimport { CalendarComponent } from './shared/calendar/calendar.component';\nimport { DEFAULT_PRESET_DATE_OPTIONS } from './shared/default-preset-date-options';\nimport { ePresetKey } from './shared/preset-key.enum';\nimport { iSelectDateOption } from './shared/select-date-option.interface';\nimport { iSelectedDateEvent } from './shared/selected-date-event.interface';\n\nregisterLocaleData(localePtBr);\n\n@Component({\n selector: 'gipi-date-range-picker',\n exportAs: 'gDateRangePicker',\n template: `\n <div\n #trigger\n cdkOverlayOrigin>\n @if (label) {\n <label\n class=\"g-date-range-picker-label\"\n [attr.for]=\"_matFormFieldUniqueId\">\n {{ label }}\n @if (required) {\n <span>*</span>\n }\n @if (help) {\n <gipi-helpful-tip [tooltip]=\"help\" />\n }\n </label>\n }\n <mat-form-field\n #formFieldInput\n class=\"g-date-range-picker-form-field\"\n appearance=\"outline\"\n [attr.id]=\"_matFormFieldUniqueId\"\n [hintLabel]=\"hintLabel\">\n <mat-date-range-input>\n <input\n matStartDate\n aria-label=\"Data inicial\"\n placeholder=\"Data inicial\"\n [(ngModel)]=\"selectedDates.start\"\n (dateChange)=\"\n selectedDates.start && selectedDates.end\n ? updateCustomRange(selectedDates)\n : null\n \" />\n <input\n matEndDate\n aria-label=\"Data final\"\n placeholder=\"Data final\"\n [(ngModel)]=\"selectedDates.end\"\n (dateChange)=\"\n selectedDates.start && selectedDates.end\n ? updateCustomRange(selectedDates)\n : null\n \" />\n </mat-date-range-input>\n\n <mat-datepicker-toggle\n matIconSuffix\n (click)=\"toggleCustomDateRangeView()\" />\n </mat-form-field>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n [cdkConnectedOverlayOffsetX]=\"0\"\n [cdkConnectedOverlayOffsetY]=\"0\"\n [cdkConnectedOverlayPush]=\"true\"\n [cdkConnectedOverlayPositions]=\"[]\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isCustomRange()\"\n (overlayOutsideClick)=\"toggleCustomDateRangeView()\">\n <div\n class=\"g-date-range-picker-ckd-container g-date-range-picker-custom-calendar-container\">\n <div class=\"g-preset-ranges\">\n @for (option of dateDropDownOptions; track option.key) {\n @if (option.visible) {\n <div\n tabindex=\"0\"\n role=\"button\"\n class=\"g-preset-ranges-button\"\n [class.g-preset-ranges-button-selected]=\"option.selected\"\n (click)=\"updateSelection(option)\"\n (keyup.enter)=\"updateSelection(option)\">\n {{ option.label }}\n </div>\n }\n }\n </div>\n\n <gipi-calendar\n #calendar\n [min]=\"minDate\"\n [max]=\"maxDate\"\n [dateFilter]=\"dateFilter\"\n [selectedDates]=\"selectedDates\"\n (dateRangeCompleted)=\"updateCustomRange($event)\" />\n </div>\n </ng-template>\n </div>\n `,\n styleUrl: './date-range-picker.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-date-range-picker',\n },\n providers: [\n { provide: DateAdapter, useClass: NativeDateAdapterService },\n { provide: MAT_DATE_FORMATS, useValue: DateUtil.DATE_FORMATS },\n { provide: LOCALE_ID, useValue: 'pt-BR' },\n { provide: MAT_DATE_LOCALE, useValue: 'pt-BR' },\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatInputModule,\n MatAutocompleteModule,\n OverlayModule,\n MatIconModule,\n MatButtonModule,\n MatListModule,\n MatFormFieldModule,\n MatTooltipModule,\n\n CalendarComponent,\n HelpfulTipComponent,\n ],\n})\nexport class DateRangePickerComponent implements OnInit, AfterViewInit {\n protected readonly _matFormFieldUniqueId: string = inject(_IdGenerator).getId(\n 'gipi-date-range-picker-control-',\n );\n private _uniqueId: string = inject(_IdGenerator).getId('gipi-date-range-picker-');\n\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _dateAdapter = inject(DateAdapter);\n\n protected isCustomRange = signal<boolean>(false);\n\n @Input() id: string = this._uniqueId;\n\n @Input() name: string = this._uniqueId;\n\n @Input() label: string = '';\n\n @Input() placeholder: string = '__/__/____';\n\n @Input() hintLabel: string = '';\n\n @Input() help: string = '';\n\n @Input({ transform: booleanAttribute })\n disabled: BooleanInput = false;\n\n @Input({ transform: booleanAttribute })\n readonly: BooleanInput = false;\n\n @Input({ transform: booleanAttribute })\n required: BooleanInput = false;\n\n @Input() startAt: Date | null = null;\n\n @Input() dateFilter: DateFilterFn<Date | null> = () => true;\n\n @Input({ transform: booleanAttribute })\n showPresetDefault: BooleanInput = true;\n\n @Input({ transform: numberAttribute })\n startPresetIndex: NumberInput = 3;\n\n @Input() dateFormat: string = DateUtil.FORMAT_DATE;\n\n private _minDate = signal<moment.Moment>(moment('1900-01-01 00:00:00'));\n @Input('min')\n set minDate(value: Date | null) {\n if (!DateUtil.isEmpty(value)) {\n this._minDate.set(moment(value));\n } else {\n this._minDate.set(moment('1900-01-01 00:00:00'));\n }\n }\n get minDate(): Date | null {\n const minDate = this._minDate();\n return !DateUtil.isEmpty(minDate) ? minDate.toDate() : null;\n }\n\n private _maxDate = signal<moment.Moment | null>(null);\n @Input('maxDate')\n set maxDate(value: Date | null) {\n if (!DateUtil.isEmpty(value)) {\n this._maxDate.set(moment(value));\n } else {\n this._maxDate.set(null);\n }\n }\n get maxDate(): Date | null {\n const maxDate = this._maxDate();\n return !DateUtil.isEmpty(maxDate) ? maxDate.toDate() : null;\n }\n\n private _dateDropDownOptions: iSelectDateOption[] = [];\n @Input()\n set dateDropDownOptions(value: iSelectDateOption[]) {\n this._dateDropDownOptions = this.showPresetDefault\n ? this._getClone(DEFAULT_PRESET_DATE_OPTIONS).concat(value)\n : value;\n }\n get dateDropDownOptions(): iSelectDateOption[] {\n return this._dateDropDownOptions ?? [];\n }\n\n @Input() selectedDates: DateRange<Date> = new DateRange<Date>(new Date(), new Date());\n\n @Output() onDateSelectionChanged = new EventEmitter<iSelectedDateEvent>();\n @Output() dateListOptions = new EventEmitter<iSelectDateOption[]>();\n\n constructor() {\n this._dateAdapter.setLocale('pt-BR');\n moment.locale('pt-br');\n }\n\n ngOnInit(): void {\n this._initializeDefaultSelection();\n }\n\n ngAfterViewInit(): void {\n this._updateDefaultDatesValues();\n }\n\n protected toggleDateOptionSelectionList(event?: MouseEvent): void {\n if (event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n this.toggleCustomDateRangeView();\n }\n\n protected updateCustomRange(selectedDates: DateRange<Date> | null): void {\n this._updateSelectedDates(\n selectedDates?.start ?? new Date(),\n selectedDates?.end ?? new Date(),\n );\n if (this.isCustomRange()) {\n const matchedPreset = this.dateDropDownOptions.find((option) => {\n if (option.key === ePresetKey.CUSTOM) return false;\n\n const presetRange = this._getDateRangeFromOption(option);\n return (\n presetRange &&\n this._areDatesEqual(presetRange.start, selectedDates?.start) &&\n this._areDatesEqual(presetRange.end, selectedDates?.end)\n );\n });\n\n if (matchedPreset) {\n this._resetOptionSelection(matchedPreset);\n this.isCustomRange.set(false);\n } else {\n this._resetOptionSelection();\n this.selectCustomOption();\n this.isCustomRange.set(false);\n }\n }\n }\n\n private _getDateRangeFromOption(option: iSelectDateOption): DateRange<Date> | null {\n const currDate = new Date();\n let startDate = new Date();\n let endDate = new Date();\n\n if (option.callBackFunction) {\n return option.callBackFunction();\n }\n\n switch (option.key) {\n case ePresetKey.DATE_DIFF: {\n if (typeof option.dateDiff === 'number') {\n endDate = new Date();\n startDate = new Date();\n startDate.setDate(endDate.getDate() + option.dateDiff);\n return new DateRange(startDate, endDate);\n }\n return null;\n }\n case ePresetKey.THIS_WEEK: {\n const day = currDate.getDay();\n const diffToEnd = 6 - day;\n startDate = new Date(currDate);\n startDate.setDate(currDate.getDate() - day);\n endDate = new Date(currDate);\n endDate.setDate(currDate.getDate() + diffToEnd);\n return new DateRange(startDate, endDate);\n }\n case ePresetKey.THIS_MONTH: {\n startDate = new Date(currDate.getFullYear(), currDate.getMonth(), 1);\n endDate = new Date(currDate.getFullYear(), currDate.getMonth() + 1, 0);\n return new DateRange(startDate, endDate);\n }\n case ePresetKey.THIS_YEAR: {\n startDate = new Date(currDate.getFullYear(), 0, 1);\n endDate = new Date(currDate.getFullYear(), 11, 31);\n return new DateRange(startDate, endDate);\n }\n default: {\n return null;\n }\n }\n }\n\n private _areDatesEqual(\n date1: Date | null | undefined,\n date2: Date | null | undefined,\n ): boolean {\n if (!date1 || !date2) return false;\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n }\n\n protected updateSelection(option: iSelectDateOption): void {\n if (option.key !== ePresetKey.CUSTOM) {\n this.isCustomRange.set(false);\n this._resetOptionSelection(option);\n this._updateDateOnOptionSelect(option);\n } else {\n this.isCustomRange.set(true);\n }\n this._changeDetectorRef.markForCheck();\n }\n\n protected selectCustomOption(): void {\n const customOption = this.dateDropDownOptions.filter(\n (option) => option.key === ePresetKey.CUSTOM,\n );\n customOption[0].selected = true;\n }\n\n protected toggleCustomDateRangeView(): void {\n this.isCustomRange.set(!this.isCustomRange());\n }\n\n protected clearSelection(event: MouseEvent): void {\n event.stopImmediatePropagation();\n const currentDate = new Date();\n const year = currentDate.getFullYear();\n this.minDate = new Date(currentDate.setFullYear(year - 10));\n this.maxDate = new Date(currentDate.setFullYear(year + 10));\n this.selectedDates = new DateRange<Date>(null, null);\n this._resetOptionSelection();\n\n this._changeDetectorRef.markForCheck();\n\n const selectedDateEventData: iSelectedDateEvent = {\n range: null,\n selectedOption: null,\n };\n\n this.onDateSelectionChanged.emit(selectedDateEventData);\n }\n\n private _resetOptionSelection(option?: iSelectDateOption): void {\n this.dateDropDownOptions.forEach((option) => (option.selected = false));\n if (option) {\n option.selected = true;\n }\n this._changeDetectorRef.markForCheck();\n }\n\n private _updateDateOnOptionSelect(option: iSelectDateOption): void {\n const currDate = new Date();\n let startDate: Date = new Date();\n let lastDate: Date = new Date();\n\n if (option.callBackFunction) {\n const dateRange: DateRange<Date> = option.callBackFunction();\n if (dateRange?.start && dateRange?.end) {\n this._updateSelectedDates(dateRange.start, dateRange.end);\n return;\n }\n }\n\n switch (option.key) {\n case ePresetKey.DATE_DIFF: {\n startDate.setDate(startDate.getDate() + option.dateDiff);\n break;\n }\n case ePresetKey.THIS_WEEK: {\n const day = currDate.getDay(); // 0 (domingo) a 6 (sábado)\n const diffToEnd = 6 - day;\n\n currDate.setMonth(currDate.getMonth() - 1);\n startDate = new Date(\n currDate.getFullYear(),\n currDate.getMonth(),\n currDate.getDate() - day,\n );\n lastDate = new Date(\n currDate.getFullYear(),\n currDate.getMonth(),\n currDate.getDate() + diffToEnd,\n );\n break;\n }\n case ePresetKey.THIS_MONTH: {\n startDate = new Date(currDate.getFullYear(), currDate.getMonth(), 1);\n lastDate = new Date(\n currDate.getFullYear(),\n currDate.getMonth(),\n this._getDaysInMonth(currDate),\n );\n break;\n }\n case ePresetKey.THIS_YEAR: {\n startDate = new Date(currDate.getFullYear(), 0, 1);\n startDate = new Date(currDate.getFullYear(), 11, 31);\n break;\n }\n default: {\n break;\n }\n }\n\n this._updateSelectedDates(startDate, lastDate);\n }\n\n private _updateSelectedDates(startDate: Date, endDate: Date): void {\n this.selectedDates = new DateRange<Date>(startDate, endDate);\n\n const selectedOption = this.dateDropDownOptions.filter((option) => option.selected)[0];\n\n const selectedDateEventData: iSelectedDateEvent = {\n range: new DateRange<Date>(new Date(startDate), new Date(endDate)),\n selectedOption: selectedOption,\n };\n\n this.onDateSelectionChanged.emit(selectedDateEventData);\n this._changeDetectorRef.markForCheck();\n }\n\n private _getDaysInMonth(date: Date): number {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n }\n\n private _getClone<T>(data: T): T {\n return JSON.parse(JSON.stringify(data));\n }\n\n private _updateDefaultDatesValues(): void {\n if (this.selectedDates && this.selectedDates.start && this.selectedDates.end) {\n const customOption: iSelectDateOption[] = this._dateDropDownOptions.filter(\n (option) => option.key === ePresetKey.CUSTOM,\n );\n customOption[0].selected = true;\n } else {\n const selectedOptions: iSelectDateOption[] = this._dateDropDownOptions.filter(\n (option) => option.selected,\n );\n if (selectedOptions.length && selectedOptions[0].key !== ePresetKey.CUSTOM) {\n this._updatedFromListValueSelection(selectedOptions[0]);\n }\n }\n this._changeDetectorRef.detectChanges();\n }\n\n private _updatedFromListValueSelection(selectedOption: iSelectDateOption): void {\n if (selectedOption['callBackFunction']) {\n const dateRange: DateRange<Date> = selectedOption.callBackFunction();\n if (dateRange?.start && dateRange?.end) {\n this._updateSelectedDates(dateRange.start, dateRange.end);\n }\n } else {\n this._updateDateOnOptionSelect(selectedOption);\n }\n }\n\n private _initializeDefaultSelection(): void {\n if (!this._dateDropDownOptions.length && this.showPresetDefault) {\n this._dateDropDownOptions = this._getClone(DEFAULT_PRESET_DATE_OPTIONS);\n this._dateDropDownOptions[Number(this.startPresetIndex) || 0].selected = true;\n }\n this.dateListOptions.emit(this._dateDropDownOptions);\n }\n}\n","import { DateRange } from '@angular/material/datepicker';\nimport { ePresetKey } from './preset-key.enum';\n\nexport interface iSelectDateOption {\n /** Texto exibido na lista para seleção. */\n label: string;\n\n /** Usado para verificar data normal ou data especial. */\n key: ePresetKey;\n\n /**\n * Diferença de data em dias.\n *\n * - Número positivo indica data posterior a partir de hoje.\n * - Número negativo indica data inferior a partir de hoje.\n */\n dateDiff: number;\n\n /** Indica se a opção está selecionada. */\n selected: boolean;\n\n /** Indica se a opção está visível na lista. */\n visible: boolean;\n\n /**\n * Função para retornar intervalo de datas com base em `dateDiff`.\n * @returns DateRange<Date>\n */\n callBackFunction: () => DateRange<Date>;\n}\n\nexport class SelectDateOption implements iSelectDateOption {\n label = '';\n key = ePresetKey.DATE_DIFF;\n dateDiff = 0;\n selected = false;\n visible = false;\n callBackFunction!: () => DateRange<Date>;\n}\n","import { Injectable } from '@angular/core';\nimport { MtxDatetimepickerIntl } from '@ng-matero/extensions/datetimepicker';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class DatetimePickerIntl extends MtxDatetimepickerIntl {\n override readonly changes = new Subject<void>();\n\n override calendarLabel = 'Calendário';\n override openCalendarLabel = 'Abrir calendário';\n override closeCalendarLabel = 'Fechar calendário';\n\n override prevMonthLabel = 'Mês anterior';\n override nextMonthLabel = 'Próximo mês';\n override prevYearLabel = 'Ano anterior';\n override nextYearLabel = 'Próximo ano';\n override prevMultiYearLabel = 'Últimos 24 anos';\n override nextMultiYearLabel = 'Próximos 24 anos';\n\n override switchToMonthViewLabel = 'Escolha a data';\n override switchToYearViewLabel = 'Escolha o mês';\n override switchToMultiYearViewLabel = 'Escolha mês e ano';\n\n override startDateLabel = 'Data inicial';\n override endDateLabel = 'Data final';\n\n override weekNumberLabel = (number: number) => `Semana ${number}`;\n override formatYearRange = (start: string, end: string) => `${start} \\u2013 ${end}`;\n override formatYearRangeLabel = (start: string, end: string) => `De ${start} até ${end}`;\n\n override switchToClockHourViewLabel = 'Escolha a hora';\n override switchToClockMinuteViewLabel = 'Escolha minutos';\n\n override okLabel = 'OK';\n override cancelLabel = 'Cancelar';\n}\n","import { MtxDatetimeFormats } from '@ng-matero/extensions/core';\n\nexport const MOMENT_DATETIME_FORMATS: MtxDatetimeFormats = {\n parse: {\n dateInput: 'YYYY-MM-DD',\n monthInput: 'MMMM',\n yearInput: 'YYYY',\n timeInput: 'HH:mm',\n datetimeInput: 'YYYY-MM-DD HH:mm',\n },\n display: {\n dateInput: 'DD/MM/YYYY',\n monthInput: 'MMMM',\n yearInput: 'YYYY',\n timeInput: 'HH:mm',\n datetimeInput: 'DD/MM/YYYY HH:mm',\n monthYearLabel: 'YYYY MMMM',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n popupHeaderDateLabel: 'MMM DD, ddd',\n },\n};\n","/* eslint-disable @angular-eslint/no-output-rename */\n/* eslint-disable @angular-eslint/no-output-native */\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport {\n MtxMomentDatetimeModule,\n provideMomentDatetimeAdapter,\n} from '@ng-matero/extensions-moment-adapter';\nimport {\n MtxCalendarView,\n MtxDatetimepickerFilterType,\n MtxDatetimepickerInputEvent,\n MtxDatetimepickerIntl,\n MtxDatetimepickerModule,\n MtxDatetimepickerType,\n} from '@ng-matero/extensions/datetimepicker';\nimport { FieldErrorComponent } from '../field-error/field-error.component';\nimport { tFieldErrorCustomValidators } from '../field-error/shared/field-error-custom-validators.type';\nimport { HelpfulTipComponent } from '../helpful-tip/helpful-tip.component';\nimport { DatetimePickerIntl } from './shared/datetime-picker-intl';\nimport { MOMENT_DATETIME_FORMATS } from './shared/moment-datetime-formats';\n\n@Component({\n selector: 'gipi-datetime-picker',\n template: `\n @if (label) {\n <label\n class=\"g-datetime-picker-label\"\n [attr.for]=\"_matFormFieldUniqueId\">\n {{ label }}\n @if (required) {\n <span>*</span>\n }\n @if (help) {\n <gipi-helpful-tip [tooltip]=\"help\" />\n }\n </label>\n }\n\n <mat-form-field\n #formFieldInput\n class=\"g-input-form-field\"\n appearance=\"outline\"\n [attr.id]=\"_matFormFieldUniqueId\"\n [hintLabel]=\"hintLabel\">\n <input\n matInput\n [placeholder]=\"placeholder\"\n [type]=\"type\"\n [attr.id]=\"_matFormFieldUniqueId + '-input'\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [autocomplete]=\"'off'\"\n [min]=\"min\"\n [max]=\"max\"\n [minlength]=\"0\"\n [disabled]=\"!!disabled\"\n [readonly]=\"!!readonly\"\n [required]=\"!!required\"\n [value]=\"value\"\n [(ngModel)]=\"value\"\n [mtxDatetimepicker]=\"datetimePicker\"\n [mtxDatetimepickerFilter]=\"mtxDatetimepickerFilter\"\n (dateChange)=\"onDateChangeEvent.emit($event)\"\n (dateInput)=\"onDateInputEvent.emit($event)\" />\n\n <mtx-datetimepicker\n #datetimePicker\n [mode]=\"'portrait'\"\n [multiYearSelector]=\"true\"\n [twelvehour]=\"false\"\n [touchUi]=\"false\"\n [timeInput]=\"false\"\n [timeInputAutoFocus]=\"false\"\n [showWeekNumbers]=\"false\"\n [type]=\"calendarType\"\n [startView]=\"startView\"\n [timeInterval]=\"timeInterval\"\n [disabled]=\"!!disabled\"\n (opened)=\"onOpenedEvent.emit($event)\"\n (closed)=\"onClosedEvent.emit($event)\"\n (viewChanged)=\"onViewChangedEvent.emit($event)\"\n (selectedChanged)=\"onSelectedChangedEvent.emit($event)\" />\n\n <mtx-datetimepicker-toggle\n matSuffix\n [disableRipple]=\"true\"\n [disabled]=\"!!disabled\"\n [for]=\"datetimePicker\" />\n <gipi-field-error [customErrors]=\"customErrors\" />\n </mat-form-field>\n `,\n styleUrl: './datetime-picker.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-datetime-picker',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatetimePickerComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: DatetimePickerComponent,\n multi: true,\n },\n {\n provide: MtxDatetimepickerIntl,\n useClass: DatetimePickerIntl,\n },\n provideMomentDatetimeAdapter(MOMENT_DATETIME_FORMATS, { strict: true, useUtc: false }),\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatInputModule,\n MatFormFieldModule,\n MtxDatetimepickerModule,\n MtxMomentDatetimeModule,\n FieldErrorComponent,\n HelpfulTipComponent,\n ],\n})\nexport class DatetimePickerComponent implements ControlValueAccessor, Validator, OnChanges {\n protected readonly _matFormFieldUniqueId: string = inject(_IdGenerator).getId(\n 'gipi-datetime-picker-control-',\n );\n\n protected destroyRef = inject(DestroyRef);\n\n @Input() label: string = '';\n\n @Input() placeholder: string = '';\n\n @Input() hintLabel: string = '';\n\n @Input() type: string = 'text';\n\n @Input({ transform: booleanAttribute }) disabled: BooleanInput = false;\n\n @Input({ transform: booleanAttribute }) readonly: BooleanInput = false;\n\n @Input({ transform: booleanAttribute }) required: BooleanInput = false;\n\n @Input() min: Date | null = null;\n\n @Input() max: Date | null = null;\n\n @Input() help: string = '';\n\n @Input() customErrors: tFieldErrorCustomValidators = {};\n\n private _value: Date | null = null;\n @Input()\n get value(): Date | null {\n return this._value;\n }\n set value(value: Date | null) {\n this._value = value;\n this._onChange(this._value);\n }\n\n /**\n * O estado que o calendário deveria começar.\n * - `month`: Inicializa visualizando os dias do mês.\n * - `year`: Inicializa visualizando os 12 meses.\n * - `multi-year`: Inicializa visualizando os anos.\n * - `clock`: Inicializa visualizando o relógio.\n */\n @Input() startView: MtxCalendarView = 'month';\n\n /** Impedir que o usuário selecione a mesma data e hora */\n @Input() preventSameDateTimeSelection = false;\n\n /** Ao abrir o calendário essa será a data selecionada inicialmente. */\n @Input() startAt: Date | null = null;\n\n /** Tipo do calendario */\n @Input() calendarType: MtxDatetimepickerType = 'date';\n\n /** Interválo de tempo entre os minutos do relógio */\n @Input({ transform: numberAttribute }) timeInterval: number = 1;\n\n @Input() mtxDatetimepickerFilter: (\n date: Date | null,\n type: MtxDatetimepickerFilterType,\n ) => boolean = () => true;\n\n @Output('focus') readonly onFocusEvent = new EventEmitter<FocusEvent>();\n @Output('keyup') readonly onKeyupEvent = new EventEmitter<FocusEvent>();\n @Output('blur') readonly onBlurEvent = new EventEmitter<FocusEvent>();\n @Output('change') readonly onChangeEvent = new EventEmitter<FocusEvent>();\n @Output('opened') readonly onOpenedEvent = new EventEmitter<void>();\n @Output('closed') readonly onClosedEvent = new EventEmitter<void>();\n @Output('viewChanged') readonly onViewChangedEvent = new EventEmitter<MtxCalendarView>();\n @Output('selectedChanged') readonly onSelectedChangedEvent = new EventEmitter<Date>();\n @Output('dateChange') readonly onDateChangeEvent = new EventEmitter<\n MtxDatetimepickerInputEvent<Date>\n >();\n @Output('dateInput') readonly onDateInputEvent = new EventEmitter<\n MtxDatetimepickerInputEvent<Date>\n >();\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['required']) {\n this._validatorChangeFn();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onChange: (value: Date | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onTouched: () => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _validatorChangeFn: () => void = () => {};\n\n public writeValue(value: Date | null): void {\n this.value = value;\n }\n\n public registerOnChange(fn: (value: Date | null) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public validate(control: AbstractControl<Date | null>): ValidationErrors | null {\n return this.required && !control.value ? { required: true } : null;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this._validatorChangeFn = fn;\n }\n}\n","import { Directive, ElementRef, inject, Input, Renderer2, type OnInit } from '@angular/core';\n\n@Directive({\n selector: '[gDisableAutoFill]',\n exportAs: 'gDisableAutoFill',\n})\nexport class DisableAutoFillDirective implements OnInit {\n\n private readonly _elementRef = inject(ElementRef);\n private readonly _renderer = inject(Renderer2);\n\n @Input('gDisableAutoFill') disableAutoFill: string = 'off';\n\n constructor() {\n }\n\n ngOnInit() {\n this._renderer.setAttribute(this._elementRef.nativeElement, 'autocomplete', this.disableAutoFill);\n }\n\n}\n","import { InjectionToken, type Provider } from '@angular/core';\nimport { iEchartsConfig } from '../components/echarts/shared/echarts-config.interface';\n\nexport const ECHARTS_CONFIG_TOKEN = new InjectionToken<iEchartsConfig>('ECHARTS_CONFIG_TOKEN');\n\nexport function provideEchartsCore(config: iEchartsConfig): Provider {\n return {\n provide: ECHARTS_CONFIG_TOKEN,\n useValue: config,\n };\n};\n","import { SimpleChanges } from '@angular/core';\nimport { ReplaySubject, Subscription } from 'rxjs';\n\nexport class EchatsChangeFilter {\n private _subject = new ReplaySubject<SimpleChanges>(1);\n private _subscriptions = new Subscription();\n\n public doFilter(changes: SimpleChanges): void {\n this._subject.next(changes);\n }\n\n public dispose(): void {\n this._subscriptions.unsubscribe();\n }\n\n public notEmpty<T>(key: string, handler: (t: T) => void): void {\n this._subscriptions.add(\n this._subject.subscribe(changes => {\n if (changes[key]) {\n const value: T = changes[key].currentValue;\n if (value !== undefined && value !== null) {\n handler(value);\n }\n }\n })\n );\n }\n\n public has<T>(key: string, handler: (t: T) => void): void {\n this._subscriptions.add(\n this._subject.subscribe(changes => {\n if (changes[key]) {\n const value: T = changes[key].currentValue;\n handler(value);\n }\n })\n );\n }\n\n public notFirst<T>(key: string, handler: (t: T) => void): void {\n this._subscriptions.add(\n this._subject.subscribe(changes => {\n if (changes[key] && !changes[key].isFirstChange()) {\n const value: T = changes[key].currentValue;\n handler(value);\n }\n })\n );\n }\n\n public notFirstAndEmpty<T>(key: string, handler: (t: T) => void): void {\n this._subscriptions.add(\n this._subject.subscribe(changes => {\n if (changes[key] && !changes[key].isFirstChange()) {\n const value: T = changes[key].currentValue;\n if (value !== undefined && value !== null) {\n handler(value);\n }\n }\n })\n );\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { AfterViewInit, Directive, ElementRef, EventEmitter, inject, Input, NgZone, OnChanges, OnDestroy, OnInit, Output, type SimpleChanges } from '@angular/core';\nimport { ECElementEvent, ECharts, EChartsCoreOption } from 'echarts/core';\nimport { asyncScheduler, Observable, ReplaySubject, Subject, switchMap, throttleTime, type Subscription } from 'rxjs';\nimport { ECHARTS_CONFIG_TOKEN } from '../../tokens/echarts-core.token';\nimport { EchatsChangeFilter } from './shared/echarts-change-filter';\nimport { iEchartsConfig } from './shared/echarts-config.interface';\nimport { tEchartsThemeOption } from './shared/echarts-theme.type';\n\n@Directive({\n selector: 'gEcharts, [gEcharts],',\n exportAs: 'gEcharts',\n host: {\n '[attr.id]': \"id\",\n '[attr.name]': \"name\",\n 'class': 'g-echarts',\n }\n})\nexport class EchartsDirective implements OnChanges, OnDestroy, OnInit, AfterViewInit {\n\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-echarts-');\n\n private _elementRef = inject(ElementRef);\n private _ngZone = inject(NgZone);\n private _config: iEchartsConfig = inject(ECHARTS_CONFIG_TOKEN);\n\n private _chart: ECharts | null = null;\n private _chart$ = new ReplaySubject<ECharts>(1);\n private _echarts: any;\n private _resizeOb!: ResizeObserver;\n private _resize$ = new Subject<void>();\n private _resizeSub!: Subscription;\n private _initChartTimer?: number;\n private _changeFilter = new EchatsChangeFilter();\n private _loadingSub!: Subscription;\n private _resizeObFired: boolean = false;\n\n public animationFrameID: number | null = null;\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() options: EChartsCoreOption | null = null;\n @Input() theme: string | tEchartsThemeOption | null = null;\n @Input() initOpts: { devicePixelRatio?: number; renderer?: string; width?: number | string; height?: number | string; locale?: string; } | null = null;\n @Input() merge: EChartsCoreOption | null = null;\n @Input() autoResize = true;\n @Input() loading = false;\n @Input() loadingType = 'default';\n @Input() loadingOpts: object | null = null;\n\n // ngx-echarts events\n @Output() chartInit = new EventEmitter<ECharts>();\n @Output() optionsError = new EventEmitter<Error>();\n @Output() windowResize = new EventEmitter<ECharts>();\n\n // echarts mouse events\n @Output() chartClick = this._createLazyEvent<ECElementEvent>('click');\n @Output() chartDblClick = this._createLazyEvent<ECElementEvent>('dblclick');\n @Output() chartMouseDown = this._createLazyEvent<ECElementEvent>('mousedown');\n @Output() chartMouseMove = this._createLazyEvent<ECElementEvent>('mousemove');\n @Output() chartMouseUp = this._createLazyEvent<ECElementEvent>('mouseup');\n @Output() chartMouseOver = this._createLazyEvent<ECElementEvent>('mouseover');\n @Output() chartMouseOut = this._createLazyEvent<ECElementEvent>('mouseout');\n @Output() chartGlobalOut = this._createLazyEvent<ECElementEvent>('globalout');\n @Output() chartContextMenu = this._createLazyEvent<ECElementEvent>('contextmenu');\n\n // echarts events\n @Output() chartHighlight = this._createLazyEvent<any>('highlight');\n @Output() chartDownplay = this._createLazyEvent<any>('downplay');\n @Output() chartSelectChanged = this._createLazyEvent<any>('selectchanged');\n @Output() chartLegendSelectChanged = this._createLazyEvent<any>('legendselectchanged');\n @Output() chartLegendSelected = this._createLazyEvent<any>('legendselected');\n @Output() chartLegendUnselected = this._createLazyEvent<any>('legendunselected');\n @Output() chartLegendLegendSelectAll = this._createLazyEvent<any>('legendselectall');\n @Output() chartLegendLegendInverseSelect = this._createLazyEvent<any>('legendinverseselect');\n @Output() chartLegendScroll = this._createLazyEvent<any>('legendscroll');\n @Output() chartDataZoom = this._createLazyEvent<any>('datazoom');\n @Output() chartDataRangeSelected = this._createLazyEvent<any>('datarangeselected');\n @Output() chartGraphRoam = this._createLazyEvent<any>('graphroam');\n @Output() chartGeoRoam = this._createLazyEvent<any>('georoam');\n @Output() chartTreeRoam = this._createLazyEvent<any>('treeroam');\n @Output() chartTimelineChanged = this._createLazyEvent<any>('timelinechanged');\n @Output() chartTimelinePlayChanged = this._createLazyEvent<any>('timelineplaychanged');\n @Output() chartRestore = this._createLazyEvent<any>('restore');\n @Output() chartDataViewChanged = this._createLazyEvent<any>('dataviewchanged');\n @Output() chartMagicTypeChanged = this._createLazyEvent<any>('magictypechanged');\n @Output() chartGeoSelectChanged = this._createLazyEvent<any>('geoselectchanged');\n @Output() chartGeoSelected = this._createLazyEvent<any>('geoselected');\n @Output() chartGeoUnselected = this._createLazyEvent<any>('geounselected');\n @Output() chartAxisAreaSelected = this._createLazyEvent<any>('axisareaselected');\n @Output() chartBrush = this._createLazyEvent<any>('brush');\n @Output() chartBrushEnd = this._createLazyEvent<any>('brushend');\n @Output() chartBrushSelected = this._createLazyEvent<any>('brushselected');\n @Output() chartGlobalCursorTaken = this._createLazyEvent<any>('globalcursortaken');\n @Output() chartRendered = this._createLazyEvent<any>('rendered');\n @Output() chartFinished = this._createLazyEvent<any>('finished');\n\n constructor() {\n this._echarts = this._config.echarts;\n this.theme = this._config.theme || null;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this._changeFilter.doFilter(changes);\n }\n\n ngOnInit() {\n if (!window.ResizeObserver) {\n throw new Error('please install a polyfill for ResizeObserver');\n }\n this._resizeSub = this._resize$\n .pipe(throttleTime(100, asyncScheduler, { leading: false, trailing: true }))\n .subscribe(() => this.resize());\n\n if (this.autoResize) {\n // https://github.com/xieziyu/ngx-echarts/issues/413\n this._resizeOb = this._ngZone.runOutsideAngular(\n () =>\n new window.ResizeObserver(entries => {\n for (const entry of entries) {\n if (entry.target === this._elementRef.nativeElement) {\n // Ignore first fire on insertion, no resize actually happened\n if (!this._resizeObFired) {\n this._resizeObFired = true;\n } else {\n this.animationFrameID = window.requestAnimationFrame(() => {\n this._resize$.next();\n });\n }\n }\n }\n })\n );\n this._resizeOb.observe(this._elementRef.nativeElement);\n }\n\n this._changeFilter.notFirstAndEmpty('options', (opt: any) => this._onOptionsChange(opt));\n this._changeFilter.notFirstAndEmpty('merge', (opt: any) => this._setOption(opt));\n this._changeFilter.has<boolean>('loading', (v: any) => this._toggleLoading(!!v));\n this._changeFilter.notFirst<string | tEchartsThemeOption>('theme', () => this.refreshChart());\n }\n\n ngOnDestroy() {\n window.clearTimeout(this._initChartTimer);\n if (this._resizeSub) {\n this._resizeSub.unsubscribe();\n }\n if (this.animationFrameID) {\n window.cancelAnimationFrame(this.animationFrameID);\n }\n if (this._resizeOb) {\n this._resizeOb.unobserve(this._elementRef.nativeElement);\n }\n if (this._loadingSub) {\n this._loadingSub.unsubscribe();\n }\n this._changeFilter.dispose();\n this._dispose();\n }\n\n ngAfterViewInit() {\n this._initChartTimer = window.setTimeout(() => this._initChart());\n }\n\n private _dispose(): void {\n if (this._chart) {\n if (!this._chart.isDisposed()) {\n this._chart.dispose();\n }\n this._chart = null;\n }\n }\n\n /**\n * resize chart\n */\n public resize(): void {\n if (this._chart) {\n this._chart.resize();\n this.windowResize.emit(this._chart);\n }\n }\n\n private _toggleLoading(loading: boolean) {\n if (this._chart) {\n if (loading) {\n this._chart.showLoading(this.loadingType, this.loadingOpts || {})\n } else {\n this._chart.hideLoading();\n }\n } else {\n this._loadingSub = this._chart$.subscribe(chart =>\n loading ? chart.showLoading(this.loadingType, this.loadingOpts || {}) : chart.hideLoading()\n );\n }\n }\n\n private _setOption(option: any, opts?: any) {\n if (this._chart) {\n try {\n this._chart.setOption(option, opts);\n } catch (e) {\n console.error(e);\n this.optionsError.emit(e as Error);\n }\n }\n }\n\n /**\n * dispose old chart and create a new one.\n */\n public async refreshChart(): Promise<void> {\n this._dispose();\n await this._initChart();\n }\n\n private _createChart() {\n const dom = this._elementRef.nativeElement;\n\n if (window && window.getComputedStyle) {\n const prop = window.getComputedStyle(dom, null).getPropertyValue('height');\n if ((!prop || prop === '0px') && (!dom.style.height || dom.style.height === '0px')) {\n dom.style.height = '400px';\n }\n }\n\n // here a bit tricky: we check if the echarts module is provided as function returning native import('...') then use the promise\n // otherwise create the function that imitates behaviour above with a provided as is module\n return this._ngZone.runOutsideAngular(() => {\n const load = typeof this._echarts === 'function' ? this._echarts : () => Promise.resolve(this._echarts);\n return load().then((module: { init: (dom: HTMLElement, theme?: string | tEchartsThemeOption, opts?: any) => ECharts }) =>\n module.init(dom, this.theme ?? undefined, this.initOpts)\n );\n });\n }\n\n private async _initChart(): Promise<void> {\n await this._onOptionsChange(this.options);\n\n if (this.merge && this._chart) {\n this._setOption(this.merge);\n }\n }\n\n private async _onOptionsChange(opt: any) {\n if (!opt) {\n return;\n }\n\n if (this._chart) {\n this._setOption(this.options, true);\n } else {\n this._chart = await this._createChart();\n this._chart$.next(this._chart!);\n this.chartInit.emit(this._chart!);\n this._setOption(this.options, true);\n }\n }\n\n // allows to lazily bind to only those events that are requested through the `@Output` by parent components\n // see https://stackoverflow.com/questions/51787972/optimal-reentering-the-ngzone-from-eventemitter-event for more info\n private _createLazyEvent<T>(eventName: string): EventEmitter<T> {\n return this.chartInit.pipe(\n switchMap((chart: any) => new Observable(observer => {\n chart.on(eventName, (data: T) => this._ngZone.run(() => observer.next(data)));\n return () => {\n if (this._chart && !this._chart.isDisposed()) {\n chart.off(eventName);\n }\n };\n }))\n ) as EventEmitter<T>;\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n inject,\n Input,\n signal,\n type ElementRef,\n type QueryList,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'gipi-empty',\n exportAs: 'gEmpty',\n template: `\n @if (hasContent()) {\n <ng-content></ng-content>\n } @else {\n <svg\n class=\"g-empty-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 -960 960 960\"\n height=\"24px\"\n width=\"24px\">\n <path\n d=\"M480-420q-54 0-101.5 23.5T302-328q-11 16-3 32t26 16q8 0 14.5-3.5T351-294q23-31 57-48.5t72-17.5q38 0 72 17.5t57 48.5q4 7 10.5 10.5T634-280q18 0 26-16.5t-3-33.5q-29-44-76.5-67T480-420Zm140-100q25 0 42.5-17.5T680-580q0-25-17.5-42.5T620-640q-25 0-42.5 17.5T560-580q0 25 17.5 42.5T620-520Zm-280 0q25 0 42.5-17.5T400-580q0-25-17.5-42.5T340-640q-25 0-42.5 17.5T280-580q0 25 17.5 42.5T340-520ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 320q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Z\" />\n </svg>\n <strong class=\"g-empty-label\">\n {{ label }}\n </strong>\n }\n `,\n styleUrls: ['./empty.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n '[attr.role]': '\"status\"',\n 'aria-live': 'polite',\n class: 'g-empty',\n },\n imports: [CommonModule],\n})\nexport class EmptyComponent {\n @ContentChildren('*', { descendants: true })\n set contentChildren(value: QueryList<ElementRef> | null) {\n this.hasContent.set(!!value?.length);\n\n value?.changes?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((_) => {\n this.hasContent.set(!!value.length);\n });\n }\n\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-empty-');\n protected readonly destroyRef = inject(DestroyRef);\n\n protected hasContent = signal<boolean>(false);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() label: string = 'Nenhum registro foi encontrado';\n}\n","/* eslint-disable @angular-eslint/no-output-native */\n/* eslint-disable @angular-eslint/no-output-rename */\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n numberAttribute,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n MatExpansionModule,\n MatExpansionPanel,\n MatExpansionPanelState,\n} from '@angular/material/expansion';\nimport {\n IconComponent,\n tIconFontSet,\n tIconGrade,\n tIconOptical,\n tIconVariation,\n tIconWeight,\n} from '../icon/icon.component';\n\n@Component({\n selector: 'gipi-expansion-panel',\n exportAs: 'gExpansionPanel',\n template: `\n <mat-accordion\n displayMode=\"default\"\n [multi]=\"true\"\n [hideToggle]=\"false\">\n <mat-expansion-panel\n #expansionPanel\n [togglePosition]=\"'before'\"\n [disabled]=\"!!disabled\"\n (opened)=\"onOpenedEvent.emit()\"\n (closed)=\"onClosedEvent.emit()\"\n (click)=\"onClickEvent.emit($event)\"\n (focus)=\"onFocusEvent.emit($event)\"\n (blur)=\"onBlurEvent.emit($event)\">\n <mat-expansion-panel-header>\n <mat-panel-title>{{ label }}</mat-panel-title>\n\n @if (icon || svgIcon) {\n <gipi-icon\n class=\"g-expansion-panel-icon\"\n [icon]=\"icon\"\n [svgIcon]=\"svgIcon\"\n [size]=\"iconSize\"\n [fontSet]=\"iconFontSet\"\n [variation]=\"iconVariation\"\n [weight]=\"iconWeight\"\n [grade]=\"iconGrade\"\n [optical]=\"iconOptical\" />\n }\n </mat-expansion-panel-header>\n\n <ng-content></ng-content>\n </mat-expansion-panel>\n </mat-accordion>\n `,\n styleUrl: './expansion-panel.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-expansion-panel',\n },\n standalone: true,\n imports: [CommonModule, MatExpansionModule, IconComponent],\n})\nexport class ExpansionPanelComponent implements AfterViewInit {\n @ViewChild('expansionPanel')\n protected expansionPanel: MatExpansionPanel | null = null;\n\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-expansion-panel-');\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n @Input() label: string = '';\n @Input({ transform: booleanAttribute }) disabled: BooleanInput = false;\n @Input() initState: MatExpansionPanelState = 'collapsed';\n\n @Input() icon: string = '';\n @Input() svgIcon: string = '';\n @Input() iconFontSet: tIconFontSet = 'ROUNDED';\n @Input({ transform: numberAttribute }) iconSize: number = 20;\n @Input({ alias: 'iconVariation' }) iconVariation: tIconVariation = 'OUTLINED';\n @Input({ alias: 'weight' }) iconWeight: tIconWeight = 400;\n @Input({ alias: 'grade' }) iconGrade: tIconGrade = 'DEFAULT';\n @Input({ alias: 'optical' }) iconOptical: tIconOptical = 20;\n\n @Output('click') onClickEvent = new EventEmitter<MouseEvent>();\n @Output('focus') onFocusEvent = new EventEmitter<FocusEvent>();\n @Output('blur') onBlurEvent = new EventEmitter<FocusEvent>();\n @Output('opened') onOpenedEvent = new EventEmitter<void>();\n @Output('closed') onClosedEvent = new EventEmitter<void>();\n\n constructor() {}\n\n ngAfterViewInit(): void {\n if (this.initState === 'expanded') {\n this.expansionPanel?.open();\n } else {\n this.expansionPanel?.close();\n }\n }\n\n public toggle(): void {\n if (this.expansionPanel?.expanded) {\n this.close();\n } else {\n this.open();\n }\n }\n\n public open(): void {\n this.expansionPanel?.open();\n }\n\n public close(): void {\n this.expansionPanel?.close();\n }\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n Injector,\n Input,\n OnInit,\n Renderer2,\n effect,\n inject,\n runInInjectionContext,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nconst SELECTORS = `\n [gFlexDirection], [gFlexDirection.sm], [gFlexDirection.md], [gFlexDirection.lg],\n [gFlexAlign], [gFlexAlign.sm], [gFlexAlign.md], [gFlexAlign.lg],\n [gFlexJustify], [gFlexJustify.sm], [gFlexJustify.md], [gFlexJustify.lg],\n [gFlexGap], [gFlexGap.sm], [gFlexGap.md], [gFlexGap.lg],\n [gFlex], [gFlex.sm], [gFlex.md], [gFlex.lg]\n`;\n\ntype tFlexDirection = 'row' | 'column';\ntype tFlexAlign =\n | 'start'\n | 'center'\n | 'end'\n | 'stretch'\n | 'baseline'\n | 'space-between'\n | 'space-around'\n | 'space-evenly';\ntype tFlexJustify = 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly';\ntype tFlexGap = string;\ntype tFlex = string;\ntype tBreakpoint = 'base' | 'sm' | 'md' | 'lg';\n\nconst BREAKPOINTS: Record<tBreakpoint, string> = {\n base: '(min-width: 0px)',\n sm: '(max-width: 767px)',\n md: '(min-width: 768px) and (max-width: 1279px)',\n lg: '(min-width: 1280px)',\n};\n\n@Directive({\n selector: SELECTORS,\n standalone: true,\n})\nexport class FlexLayoutDirective implements OnInit {\n private _elementRef = inject(ElementRef<HTMLElement>);\n private _renderer = inject(Renderer2);\n private _destroyRef = inject(DestroyRef);\n private _breakpointObserver = inject(BreakpointObserver);\n\n private _currentBreakpoint = signal<tBreakpoint>('base');\n\n // Inputs base\n @Input('gFlexDirection') gFlexDirectionBase?: tFlexDirection;\n @Input('gFlexAlign') gFlexAlignBase?: tFlexAlign;\n @Input('gFlexJustify') gFlexJustifyBase?: tFlexJustify;\n @Input('gFlexGap') gFlexGapBase?: tFlexGap;\n @Input('gFlex') gFlexBase?: tFlex = '';\n\n // Inputs sm\n @Input('gFlexDirection.sm') gFlexDirectionSm?: tFlexDirection;\n @Input('gFlexAlign.sm') gFlexAlignSm?: tFlexAlign;\n @Input('gFlexJustify.sm') gFlexJustifySm?: tFlexJustify;\n @Input('gFlexGap.sm') gFlexGapSm?: tFlexGap;\n @Input('gFlex.sm') gFlexSm?: tFlex = '';\n\n // Inputs md\n @Input('gFlexDirection.md') gFlexDirectionMd?: tFlexDirection;\n @Input('gFlexAlign.md') gFlexAlignMd?: tFlexAlign;\n @Input('gFlexJustify.md') gFlexJustifyMd?: tFlexJustify;\n @Input('gFlexGap.md') gFlexGapMd?: tFlexGap;\n @Input('gFlex.md') gFlexMd?: tFlex = '';\n\n // Inputs lg\n @Input('gFlexDirection.lg') gFlexDirectionLg?: tFlexDirection;\n @Input('gFlexAlign.lg') gFlexAlignLg?: tFlexAlign;\n @Input('gFlexJustify.lg') gFlexJustifyLg?: tFlexJustify;\n @Input('gFlexGap.lg') gFlexGapLg?: tFlexGap;\n @Input('gFlex.lg') gFlexLg?: tFlex = '';\n\n constructor(private _injector: Injector) {}\n\n ngOnInit(): void {\n this._observeBreakpoints();\n\n runInInjectionContext(this._injector, () =>\n effect(() => this._applyStyles(this._currentBreakpoint())),\n );\n }\n\n private _observeBreakpoints(): void {\n this._breakpointObserver\n .observe(Object.values(BREAKPOINTS))\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((state) => {\n if (state.breakpoints[BREAKPOINTS.lg]) {\n this._currentBreakpoint.set('lg');\n } else if (state.breakpoints[BREAKPOINTS.md]) {\n this._currentBreakpoint.set('md');\n } else if (state.breakpoints[BREAKPOINTS.sm]) {\n this._currentBreakpoint.set('sm');\n } else {\n this._currentBreakpoint.set('base');\n }\n });\n }\n\n private _applyStyles(breakpoint: tBreakpoint): void {\n const styles: Partial<CSSStyleDeclaration> = {};\n\n const direction = this._getValueByBreakpoint(\n this.gFlexDirectionBase,\n this.gFlexDirectionSm,\n this.gFlexDirectionMd,\n this.gFlexDirectionLg,\n breakpoint,\n );\n const align = this._getValueByBreakpoint(\n this.gFlexAlignBase,\n this.gFlexAlignSm,\n this.gFlexAlignMd,\n this.gFlexAlignLg,\n breakpoint,\n );\n const justify = this._getValueByBreakpoint(\n this.gFlexJustifyBase,\n this.gFlexJustifySm,\n this.gFlexJustifyMd,\n this.gFlexJustifyLg,\n breakpoint,\n );\n const gap = this._getValueByBreakpoint(\n this.gFlexGapBase,\n this.gFlexGapSm,\n this.gFlexGapMd,\n this.gFlexGapLg,\n breakpoint,\n );\n const flex = this._getValueByBreakpoint(\n this.gFlexBase,\n this.gFlexSm,\n this.gFlexMd,\n this.gFlexLg,\n breakpoint,\n );\n\n const needsFlex = direction || align || justify || gap || flex;\n if (needsFlex !== undefined && needsFlex !== null) {\n styles.display = 'flex';\n styles.width = '100%';\n }\n\n if (direction) {\n styles.flexDirection = direction ?? 'row';\n }\n if (align) {\n styles.alignItems = align;\n }\n if (justify) {\n styles.justifyContent = justify;\n }\n if (gap) {\n styles.gap = gap;\n }\n if (typeof flex !== 'undefined') {\n styles.minWidth = '0';\n\n const normalizedFlex = this._normalizeValue(flex);\n const hasCalc = flex.trim().includes('calc');\n if (hasCalc) {\n styles.flex = `0 0 ${normalizedFlex}`;\n styles.maxWidth = '100%';\n } else {\n const isColumn = direction === 'column';\n if (isColumn) {\n styles.flex = '1 0 auto';\n } else {\n styles.flex = '0 1 auto';\n }\n\n if (isColumn) {\n styles.maxHeight = normalizedFlex;\n } else {\n styles.maxWidth = normalizedFlex;\n }\n }\n }\n\n for (const [key, value] of Object.entries(styles)) {\n this._renderer.setStyle(this._elementRef.nativeElement, key, value);\n }\n }\n\n private _getValueByBreakpoint(\n base?: string,\n sm?: string,\n md?: string,\n lg?: string,\n breakpoint?: tBreakpoint,\n ): string | undefined {\n switch (breakpoint) {\n case 'sm':\n return sm || base;\n case 'md':\n return md || base;\n case 'lg':\n return lg || base;\n default:\n return base;\n }\n }\n\n private _normalizeValue(value: string): string {\n const trimmed = value.trim();\n\n // Verifica se o valor contém 'calc'\n const hasCalc = trimmed.includes('calc');\n if (hasCalc) {\n return trimmed; // Se for 'calc', retorna como está\n }\n\n // Verifica se o valor é uma porcentagem (ex: '50%')\n const isPercent = trimmed.includes('%');\n if (isPercent) {\n return trimmed; // Se for porcentagem, retorna como está\n }\n\n // Verifica se o valor contém unidades válidas (px, rem, em, vw, vh)\n const hasUnits = /px|rem|em|vw|vh/.test(trimmed);\n if (hasUnits) {\n return trimmed; // Se tiver unidades, retorna como está\n }\n\n // Se for um número puro (sem unidade), assume como percentual\n if (/^\\d+(\\.\\d+)?$/.test(trimmed)) {\n return `${trimmed}%`; // Converte para percentual\n }\n\n // Valor inválido, assume 100% como fallback\n return '100%';\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\n\n@Component({\n selector: 'gipi-form-wrapper',\n exportAs: 'gFormWrapper',\n template: `\n <ng-content select=\"gipi-toolbar\"></ng-content>\n <div class=\"g-form-wrapper-content\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"gipi-action-row\"></ng-content>\n `,\n styleUrl: `./form-wrapper.component.scss`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-form-wrapper',\n },\n imports: [CommonModule],\n})\nexport class FormWrapperComponent {\n private readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-form-wrapper-');\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n}\n\n@Component({\n selector: 'gipi-form-wrapper-dialog',\n exportAs: 'gFormWrapperDialog',\n template: `\n <ng-content select=\"[mat-dialog-title]\" />\n <ng-content select=\"[mat-dialog-content]\" />\n <ng-content select=\"[mat-dialog-actions]\" />\n `,\n styleUrl: `./form-wrapper.component.scss`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-form-wrapper-dialog',\n },\n imports: [CommonModule, MatDialogModule],\n})\nexport class FormWrapperDialogComponent {\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-form-wrapper-dialog-');\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n}\n","/* eslint-disable @angular-eslint/no-output-native */\n/* eslint-disable @angular-eslint/no-output-rename */\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n DestroyRef,\n ElementRef,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\nimport { HelpfulTipComponent } from '../helpful-tip/helpful-tip.component';\n\n@Component({\n selector: 'gipi-input',\n exportAs: 'gInput',\n template: `\n @if (label) {\n <label\n class=\"g-input-label\"\n [attr.for]=\"_matFormFieldUniqueId\">\n {{ label }}\n @if (required) {\n <span>*</span>\n }\n @if (help) {\n <gipi-helpful-tip [tooltip]=\"help\" />\n }\n </label>\n }\n <mat-form-field\n #formFieldInput\n class=\"g-input-form-field\"\n appearance=\"outline\"\n [attr.id]=\"_matFormFieldUniqueId\"\n [hintLabel]=\"hintLabel\">\n <input\n matInput\n [placeholder]=\"!!disabled ? '' : placeholder\"\n [type]=\"type\"\n [attr.id]=\"_matFormFieldUniqueId + '-input'\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [attr.aria-invalid]=\"errorState ? 'true' : null\"\n [autocomplete]=\"autocomplete\"\n [pattern]=\"pattern\"\n [min]=\"min\"\n [max]=\"max\"\n [minlength]=\"minLength\"\n [maxlength]=\"maxLength\"\n [mask]=\"mask\"\n [disabled]=\"!!disabled\"\n [readonly]=\"!!readonly\"\n [required]=\"!!required\"\n [(ngModel)]=\"value\"\n (keydown)=\"onInputKeydown($event)\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onChangeEvent.emit($event)\" />\n\n @if (prefixRef) {\n <ng-container matPrefix>\n <ng-template [ngTemplateOutlet]=\"prefixRef\"></ng-template>\n </ng-container>\n }\n\n @if (suffixRef) {\n <ng-container matSuffix>\n <ng-template [ngTemplateOutlet]=\"suffixRef\"></ng-template>\n </ng-container>\n }\n </mat-form-field>\n `,\n styleUrl: './input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-input',\n },\n providers: [\n provideNgxMask(),\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: InputComponent,\n multi: true,\n },\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n NgxMaskDirective,\n HelpfulTipComponent,\n ],\n})\nexport class InputComponent implements ControlValueAccessor, Validator, OnChanges {\n @ContentChild('prefix', { static: false })\n prefixRef: TemplateRef<ElementRef> | null = null;\n\n @ContentChild('suffix', { static: false })\n suffixRef: TemplateRef<ElementRef> | null = null;\n\n @ViewChild(NgControl, { static: false })\n ngControl?: NgControl;\n\n protected readonly _matFormFieldUniqueId: string =\n inject(_IdGenerator).getId('gipi-input-control-');\n\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-input-');\n\n protected destroyRef = inject(DestroyRef);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() label: string = '';\n\n @Input() placeholder: string = '';\n\n @Input() help: string = '';\n\n @Input() hintLabel: string = '';\n\n @Input() type: string = 'text';\n\n @Input({ transform: booleanAttribute }) disabled: BooleanInput = false;\n\n @Input({ transform: booleanAttribute }) readonly: BooleanInput = false;\n\n @Input({ transform: booleanAttribute }) required: BooleanInput = false;\n\n @Input() pattern: string | RegExp = '';\n\n @Input() min: number = 0;\n\n @Input() max: number = 254;\n\n @Input({ transform: numberAttribute }) minLength: number = 0;\n\n @Input({ transform: numberAttribute }) maxLength: number = 255;\n\n /**\n * Significado do código\n * - `0` digits (like 0 to 9 numbers)\n * - `9` digits (like 0 to 9 numbers), but optional\n * - `A` letters (uppercase or lowercase) and digits\n * - `S` only letters (uppercase or lowercase)\n * - `U` only letters uppercase\n * - `L` only letters lowercase\n */\n @Input() mask: string = '';\n\n private _autocomplete: 'on' | 'off' = 'off';\n @Input() get autocomplete(): 'on' | 'off' {\n return this._autocomplete;\n }\n set autocomplete(value: 'on' | 'off') {\n this._autocomplete = value;\n }\n\n private _lowercase: boolean = false;\n @Input() get lowercase(): boolean {\n return this._lowercase;\n }\n set lowercase(value: boolean) {\n this._lowercase = booleanAttribute(value);\n }\n\n private _uppercase: boolean = false;\n @Input() get uppercase(): boolean {\n return this._uppercase;\n }\n set uppercase(value: boolean) {\n this._uppercase = booleanAttribute(value);\n }\n\n private _spacedrop: boolean = false;\n @Input({})\n set spacedrop(value: boolean) {\n this._spacedrop = booleanAttribute(value);\n }\n get spacedrop(): boolean {\n return this._spacedrop;\n }\n\n private _value: string | number = '';\n @Input()\n get value(): string | number {\n return this._value;\n }\n set value(value: string | number) {\n let valueProcessed: string | number = value;\n valueProcessed = this._checkSpaceDrop(valueProcessed);\n valueProcessed = this._checkLowercase(valueProcessed);\n valueProcessed = this._checkUppercase(valueProcessed);\n\n this._value = valueProcessed;\n\n this._onChange(this._value);\n }\n\n @Output('focus') readonly onFocusEvent = new EventEmitter<FocusEvent>();\n @Output('blur') readonly onBlurEvent = new EventEmitter<FocusEvent>();\n @Output('keydown') readonly onKeydownEvent = new EventEmitter<KeyboardEvent>();\n @Output('change') readonly onChangeEvent = new EventEmitter<Event>();\n\n protected get errorState(): boolean {\n return !!this.ngControl?.invalid && !!this.ngControl?.touched;\n }\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['required']) {\n this._validatorChangeFn();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onChange: (value: string | number) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onTouched: () => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _validatorChangeFn: () => void = () => {};\n\n public writeValue(value: string | number): void {\n this.value = value;\n }\n\n public registerOnChange(fn: (value: string | number) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public validate(control: AbstractControl<string | number>): ValidationErrors | null {\n return this.required && !control.value ? { required: true } : null;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this._validatorChangeFn = fn;\n }\n\n private _checkSpaceDrop(value: string | number): string | number {\n if (this.spacedrop && value) {\n return String(value).replace(/\\s/g, '');\n }\n return value;\n }\n\n private _checkUppercase(value: string | number): string | number {\n if (this.uppercase && value) {\n return String(value).toUpperCase();\n }\n return value;\n }\n\n private _checkLowercase(value: string | number): string | number {\n if (this.lowercase && value) {\n return String(value).toLowerCase();\n }\n return value;\n }\n\n protected onInputKeydown(event: KeyboardEvent): void {\n if (this.readonly || this.disabled) {\n return;\n }\n this.onKeydownEvent.emit(event);\n }\n\n protected onInputFocus(event: FocusEvent): void {\n if (this.disabled) {\n return;\n }\n this.onFocusEvent.emit(event);\n }\n\n protected onInputBlur(event: FocusEvent): void {\n if (this.disabled) {\n return;\n }\n this.onBlurEvent.emit(event);\n this._onTouched();\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[gPrefix]',\n exportAs: 'gPrefix',\n})\nexport class InputPrefixDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[gSuffix]',\n exportAs: 'gSuffix',\n})\nexport class InputSuffixDirective {}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectorRef,\n DestroyRef,\n Directive,\n DoCheck,\n ElementRef,\n inject,\n Input,\n OnInit,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NgControl } from '@angular/forms';\nimport { filter } from 'rxjs';\n\n@Directive({\n selector: 'input[gInput]',\n exportAs: 'gInput',\n host: {\n class: 'g-input',\n '[class.g-input-filled]': 'filled',\n '[class.g-input-disabled]': 'disabled',\n '[attr.disabled]': 'disabled',\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n },\n})\nexport class InputDirective implements OnInit, AfterViewInit, DoCheck {\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-input-');\n\n protected readonly elementRef = inject(ElementRef);\n protected readonly destroyRef = inject(DestroyRef);\n protected readonly ngControl = inject(NgControl, { self: true, optional: true });\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n @Input({ transform: booleanAttribute }) borderless = false;\n\n private _disabled = false;\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this.ngControl?.disabled ?? this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n\n protected filled: boolean = false;\n\n constructor() {}\n\n ngOnInit(): void {\n if (this.ngControl?.statusChanges) {\n this.ngControl.statusChanges\n .pipe(\n filter(() => this.ngControl!.disabled !== null),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => {\n this.changeDetectorRef.markForCheck();\n });\n }\n }\n\n ngAfterViewInit(): void {\n this.updateFilledState();\n this.changeDetectorRef.detectChanges();\n }\n\n ngDoCheck(): void {\n this.updateFilledState();\n }\n\n protected updateFilledState(): void {\n const nativeValue = this.elementRef.nativeElement.value;\n const controlValue = this.ngControl?.value;\n this.filled = !!(nativeValue?.length || controlValue);\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { NgxCurrencyConfig, NgxCurrencyInputMode } from 'ngx-currency';\n\nexport const CURRENCY_OPTIONS_DEFAULT: NgxCurrencyConfig = {\n align: 'right',\n allowNegative: true,\n allowZero: true,\n decimal: ',',\n precision: 2,\n prefix: 'R$ ',\n suffix: '',\n thousands: '.',\n nullable: true,\n min: null,\n max: 999999999999.99,\n inputMode: NgxCurrencyInputMode.Financial,\n};\n\nexport const CURRENCY_OPTIONS_TOKEN = new InjectionToken<NgxCurrencyConfig>(\n 'CURRENCY_OPTIONS_TOKEN',\n {\n factory: () => CURRENCY_OPTIONS_DEFAULT,\n },\n);\n\nexport function provideNgxCurrencyOptions(config?: NgxCurrencyConfig): Provider {\n return {\n provide: CURRENCY_OPTIONS_TOKEN,\n useValue: config ?? CURRENCY_OPTIONS_DEFAULT,\n };\n}\n","/* eslint-disable @angular-eslint/no-output-rename */\n/* eslint-disable @angular-eslint/no-output-native */\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n DestroyRef,\n ElementRef,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgxCurrencyConfig, NgxCurrencyDirective } from 'ngx-currency';\nimport {\n CURRENCY_OPTIONS_DEFAULT,\n CURRENCY_OPTIONS_TOKEN,\n} from '../../tokens/ngx-currency-options.token';\nimport { HelpfulTipComponent } from '../helpful-tip/helpful-tip.component';\n\n@Component({\n selector: 'gipi-input-currency',\n exportAs: 'gInputCurrency',\n template: `\n @if (label) {\n <label\n class=\"g-input-currency-label\"\n [attr.for]=\"_matFormFieldUniqueId\">\n {{ label }}\n @if (required) {\n <span>*</span>\n }\n @if (help) {\n <gipi-helpful-tip [tooltip]=\"help\" />\n }\n </label>\n }\n <mat-form-field\n #formFieldInput\n class=\"g-input-currency-form-field\"\n appearance=\"outline\"\n [attr.id]=\"_matFormFieldUniqueId\"\n [hintLabel]=\"hintLabel\">\n <input\n #matInputRef\n matInput\n [currencyMask]=\"options\"\n [placeholder]=\"!!disabled ? '' : placeholder\"\n [type]=\"type\"\n [attr.id]=\"_matFormFieldUniqueId + '-input'\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [attr.aria-invalid]=\"errorState ? 'true' : null\"\n [autocomplete]=\"'off'\"\n [min]=\"min\"\n [max]=\"max\"\n [minlength]=\"minLength\"\n [maxlength]=\"maxLength\"\n [disabled]=\"!!disabled\"\n [readonly]=\"!!readonly\"\n [required]=\"!!required\"\n [(ngModel)]=\"_value\"\n (ngModelChange)=\"handleChange($event)\"\n (keydown)=\"onInputKeydown($event)\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onChangeEvent.emit($event)\" />\n\n @if (prefixRef) {\n <ng-container matPrefix>\n <ng-template [ngTemplateOutlet]=\"prefixRef\"></ng-template>\n </ng-container>\n }\n\n @if (suffixRef) {\n <ng-container matSuffix>\n <ng-template [ngTemplateOutlet]=\"suffixRef\"></ng-template>\n </ng-container>\n }\n </mat-form-field>\n `,\n styleUrl: './input-currency.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-input-currency',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputCurrencyComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: InputCurrencyComponent,\n multi: true,\n },\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n NgxCurrencyDirective,\n HelpfulTipComponent,\n ],\n})\nexport class InputCurrencyComponent implements ControlValueAccessor, Validator, OnChanges {\n @ContentChild('prefix', { static: false })\n prefixRef: TemplateRef<ElementRef> | null = null;\n\n @ContentChild('suffix', { static: false })\n suffixRef: TemplateRef<ElementRef> | null = null;\n\n @ViewChild(NgControl, { static: false })\n ngControl?: NgControl;\n\n @ViewChild('matInputRef', { static: false })\n matInputRef?: ElementRef<HTMLInputElement>;\n\n protected readonly _matFormFieldUniqueId: string = inject(_IdGenerator).getId(\n 'gipi-input-currency-control-',\n );\n\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-input-currency-');\n\n private readonly _currencyOptions = inject(CURRENCY_OPTIONS_TOKEN);\n\n protected destroyRef = inject(DestroyRef);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() label: string = '';\n\n @Input() placeholder: string = 'R$ 0,00';\n\n @Input() hintLabel: string = '';\n\n @Input() type: string = 'text';\n\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\n\n @Input({ transform: booleanAttribute }) readonly: boolean = false;\n\n @Input({ transform: booleanAttribute }) required: boolean = false;\n\n @Input() min: number = 0;\n\n @Input() max: number | null = null;\n\n @Input({ transform: numberAttribute }) minLength: number = 0;\n\n @Input({ transform: numberAttribute }) maxLength: number = 255;\n\n private _options: Partial<NgxCurrencyConfig> = CURRENCY_OPTIONS_DEFAULT;\n @Input()\n set options(value: Partial<NgxCurrencyConfig>) {\n this._options = {\n ...this._currencyOptions,\n ...value,\n };\n }\n get options(): Partial<NgxCurrencyConfig> {\n return this._options;\n }\n\n @Input() help: string = '';\n\n private _autocomplete: 'on' | 'off' = 'off';\n @Input() get autocomplete(): 'on' | 'off' {\n return this._autocomplete;\n }\n set autocomplete(value: 'on' | 'off') {\n this._autocomplete = value;\n }\n\n protected _value: number | null = null;\n @Input()\n set value(value: number | null) {\n this._value = value;\n this._onChange(this._value);\n }\n get value(): number | null {\n return this._value;\n }\n\n @Output('focus') readonly onFocusEvent = new EventEmitter<FocusEvent>();\n @Output('blur') readonly onBlurEvent = new EventEmitter<FocusEvent>();\n @Output('keydown') readonly onKeydownEvent = new EventEmitter<KeyboardEvent>();\n @Output('change') readonly onChangeEvent = new EventEmitter<Event>();\n\n protected get errorState(): boolean {\n return !!this.ngControl?.invalid && !!this.ngControl?.touched;\n }\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['required']) {\n this._validatorChangeFn();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onChange: (value: number | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onTouched: () => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _validatorChangeFn: () => void = () => {};\n\n public writeValue(value: number): void {\n this.value = value;\n }\n\n public registerOnChange(fn: (value: number | null) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public validate(control: AbstractControl<number | null>): ValidationErrors | null {\n return this.required && !control.value ? { required: true } : null;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this._validatorChangeFn = fn;\n }\n\n public handleChange(value: number | null): void {\n this._value = value;\n this._onChange(value);\n }\n\n protected onInputKeydown(event: KeyboardEvent): void {\n if (this.readonly || this.disabled) {\n return;\n }\n this.onKeydownEvent.emit(event);\n }\n\n protected onInputFocus(event: FocusEvent): void {\n if (!this.disabled) {\n this.onFocusEvent.emit(event);\n }\n\n setTimeout(() => {\n const input = this.matInputRef?.nativeElement;\n if (!input) {\n return;\n }\n\n const value = input.value;\n\n // Remove prefixo (ex: R$ ), sufixo (ex: %), espaços e formatações\n const config = this.options;\n const suffix = config.suffix || '';\n\n let end = value.length;\n\n // Move o cursor após o valor numérico, antes do sufixo\n if (suffix) {\n const suffixIndex = value.lastIndexOf(suffix);\n if (suffixIndex > 0) {\n end = suffixIndex;\n }\n }\n\n // Define o cursor no ponto certo (após número, antes do sufixo)\n input.setSelectionRange(end, end);\n });\n }\n\n protected onInputBlur(event: FocusEvent): void {\n if (this.disabled) {\n return;\n }\n this.onBlurEvent.emit(event);\n this._onTouched();\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\n\n@Component({\n selector: 'gipi-input-group-addon',\n exportAs: 'gInputGroupAddon',\n template: `\n <ng-content></ng-content>\n `,\n styleUrl: './input-group.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-input-group-addon',\n },\n imports: [],\n})\nexport class InputGroupAddonComponent {\n private _uniqueId = inject(_IdGenerator).getId('gipi-input-group-addon-');\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\nimport { HelpfulTipComponent } from '../helpful-tip/helpful-tip.component';\n\n@Component({\n selector: 'gipi-input-group',\n exportAs: 'gInputGroup',\n template: `\n @if (label) {\n <label\n class=\"g-input-group-label\"\n [attr.for]=\"''\">\n {{ label }}\n @if (!!required) {\n <span>*</span>\n }\n @if (!!help) {\n <gipi-helpful-tip [tooltip]=\"help\" />\n }\n </label>\n }\n\n <div class=\"g-input-group-content\">\n <ng-content></ng-content>\n </div>\n `,\n styleUrl: './input-group.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n '[attr.role]': '\"group\"',\n class: 'g-input-group',\n },\n imports: [CommonModule, HelpfulTipComponent],\n})\nexport class InputGroupComponent {\n private _uniqueId = inject(_IdGenerator).getId('gipi-input-group-');\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() label: string = '';\n\n @Input() help: string = '';\n\n @Input() hintLabel: string = '';\n\n @Input({ transform: booleanAttribute })\n required: BooleanInput = false;\n}\n","import { DateUtil } from './date.util';\n\nexport class NumberUtil {\n\n /**\n * Verifica se um valor é considerado vazio.\n *\n * Um valor é considerado vazio se for:\n * - `null` ou `undefined`\n * - Uma string vazia `\"\"`\n * - Um número `NaN`\n * - Um array vazio `[]`\n * - Um objeto sem propriedades `{}`\n * - Um valor de data inválido\n *\n * @param inp O valor a ser verificado.\n * @returns `true` se o valor for vazio, caso contrário, `false`.\n */\n public static isEmpty(inp: unknown): inp is null | undefined {\n return (\n inp === null ||\n inp === undefined ||\n inp === '' ||\n (typeof inp === 'string' && inp.length === 0) ||\n (typeof inp === 'number' && Number.isNaN(inp)) ||\n (Array.isArray(inp) && inp.length === 0) ||\n (!DateUtil.isDate(inp) && typeof inp === 'object' && Object.keys(inp).length === 0)\n );\n }\n\n /**\n * Obtém somente os números de uma string.\n * @param input O valor a ser que será extraido.\n * @returns somente os números da string.\n */\n public static onlyNumbers(inp: string): string {\n return String(inp).replace(/[^\\d]/g, '');\n }\n\n /**\n * Formata um número como moeda, aplicando separadores de milhares e casas decimais.\n *\n * @param inp O número a ser formatado.\n * @param decimalPoint Número de casas decimais (padrão: `2`).\n * @param decimalSep Caracter utilizado como separador decimal (padrão: `,`).\n * @param thousandsSep Caracter utilizado como separador de milhares (padrão: `.`).\n * @returns O número formatado como moeda, representado em uma string.\n */\n public static formatMoney(inp: number, decimalPoint: number = 2, decimalSep: string = ',', thousandsSep: string = '.'): string {\n if (isNaN(inp)) {\n return inp.toString();\n }\n\n // Usa Math.abs para garantir que o número é positivo e .toFixed para limitar as casas decimais\n const absNumber: number = Math.abs(inp);\n const fixedNumber: string = absNumber.toFixed(decimalPoint);\n\n // Converter o número fixado em uma string e obter a parte inteira\n const integerPart: string = fixedNumber.split('.')[0];\n const decimalPart: string = fixedNumber.split('.')[1] || '';\n\n // Adicionar o sinal negativo se necessário\n const sign: '' | '-' = inp < 0 ? '-' : '';\n\n // Processar a parte inteira para o formato de milhares\n const leadingDigitsLength: number = integerPart.length > 3 ? integerPart.length % 3 : 0;\n const formattedIntegerPart: string = (leadingDigitsLength ? integerPart.slice(0, leadingDigitsLength) + thousandsSep : '') + integerPart.slice(leadingDigitsLength).replace(/(\\d{3})(?=\\d)/g, '$1' + thousandsSep);\n\n return sign + formattedIntegerPart + (decimalPoint ? decimalSep + decimalPart : '');\n }\n\n /**\n * Converte uma string ou número para um número.\n * @param value O valor a ser convertido.\n * @returns O número convertido.\n * @throws Se o valor não puder ser convertido para um número.\n */\n public static strToNumber(value: number | string): number {\n // Convert strings to numbers\n if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {\n return Number(value);\n }\n if (typeof value !== 'number') {\n throw `${value} is not a number`;\n }\n return value;\n }\n\n}\n\n\n","import * as libPhone from 'libphonenumber-js';\nimport { NumberUtil } from './number.util';\nimport { StringUtil } from './string.util';\n\nexport class PhoneUtil {\n /**\n * Remove todos os caracteres não numéricos de uma string.\n *\n * @param value - O valor de entrada contendo um número de telefone.\n * @returns Apenas os dígitos do número.\n *\n * @example\n * PhoneUtil.removeCharacters('(11) 91234-5678'); // \"11912345678\"\n */\n public static removeCharacters(value: string): string {\n if (StringUtil.isEmpty(value)) {\n return '';\n }\n return value.replace(/\\D/g, '');\n }\n\n /**\n * Gera uma máscara baseada no número de telefone, substituindo os dígitos por zeros.\n * Útil para criar placeholders no formato do número.\n *\n * @param phoneNumber - Número de telefone para gerar a máscara.\n * @param country - Código do país (padrão: 'BR').\n * @returns A máscara baseada na formatação nacional.\n *\n * @example\n * PhoneUtil.maskLib('11912345678'); // \"(11) 0 0000-0000\"\n */\n public static maskLib(phoneNumber: string, country: libPhone.CountryCode = 'BR'): string {\n const parsedNumber = libPhone.parsePhoneNumberFromString(phoneNumber, country);\n if (parsedNumber) {\n const formatted = parsedNumber.formatNational();\n return formatted.replace(/\\d/g, '0');\n }\n return '0*';\n }\n\n /**\n * Formata um número de telefone no padrão nacional do país informado.\n *\n * @param phoneNumber - O número de telefone.\n * @param country - Código do país (padrão: 'BR').\n * @returns O número formatado.\n *\n * @example\n * PhoneUtil.formatLib('11912345678'); // \"(11) 9 1234-5678\"\n */\n public static formatLib(phoneNumber: string, country: libPhone.CountryCode = 'BR'): string {\n try {\n const parsedNumber = libPhone.parsePhoneNumberFromString(phoneNumber, country);\n if (parsedNumber) {\n return parsedNumber.formatNational();\n } else {\n throw new Error('Número de telefone inválido.');\n }\n } catch (_) {\n throw new Error('Erro ao formatar o número de telefone');\n }\n }\n\n /**\n * Formata um número de telefone com base em uma máscara customizada.\n *\n * @param number - O número de telefone puro.\n * @param mask - Máscara a ser aplicada (ex: '(00) 00000-0000').\n * @returns Número formatado conforme a máscara.\n *\n * @example\n * PhoneUtil.format('11912345678', '(00) 00000-0000'); // \"(11) 91234-5678\"\n */\n public static format(number: string, mask?: string): string {\n const numberNotFormatted: string = NumberUtil.onlyNumbers(number);\n let phoneFormatted: string = '';\n\n if (StringUtil.isEmpty(mask)) {\n mask = this.mask(numberNotFormatted);\n }\n\n if (mask === '0*') {\n return numberNotFormatted;\n }\n\n for (\n let i: number = 0, j: number = 0;\n i < mask.length && j < numberNotFormatted.length;\n i++\n ) {\n phoneFormatted +=\n mask.charAt(i) === '0' ? numberNotFormatted.charAt(j++) : mask.charAt(i);\n }\n\n return phoneFormatted;\n }\n\n /**\n * Retorna a máscara adequada para o número informado, baseada no seu comprimento e tipo.\n *\n * @param phone - Número de telefone puro.\n * @returns Máscara correspondente ao tipo de número.\n *\n * @example\n * PhoneUtil.mask('11912345678'); // \"(11) 0 0000-0000\"\n * PhoneUtil.mask('08001234567'); // \"0000 000 0000\"\n */\n public static mask(phone: string): string {\n const specialPrefixes: string[] = [\n '0900',\n '0800',\n '0700',\n '0600',\n '0500',\n '0400',\n '0300',\n '0200',\n '0100',\n ];\n const phoneAux: string = this.removeCharacters(phone.replace(/\\D/g, ''));\n\n if (\n phoneAux.length < 8 ||\n phoneAux.length > 12 ||\n (!this.isPossible(phoneAux) && !this.isValid(phoneAux))\n ) {\n return '0*';\n }\n\n const existInArray: boolean = specialPrefixes.some((prefix) => phoneAux.startsWith(prefix));\n if (existInArray) {\n return '0000 000 0000'; // Para números especiais como 0800\n }\n\n switch (phoneAux.length) {\n case 8:\n return '0000-0000';\n case 9:\n return '0 0000-0000';\n case 10:\n return '(00) 0000-0000';\n case 11: {\n const startWithZero: boolean = phoneAux.startsWith('0');\n return startWithZero ? '(000) 0000-0000' : '(00) 0 0000-0000';\n }\n case 12:\n return '(000) 0 0000-0000';\n default:\n return '0*';\n }\n }\n\n /**\n * Verifica se o número de telefone é possível (conforme regras do país).\n *\n * @param phoneNumber - Número a ser verificado.\n * @param country - Código do país (padrão: 'BR').\n * @returns Verdadeiro se o número for possível.\n *\n * @example\n * PhoneUtil.isPossible('11912345678'); // true\n */\n public static isPossible(phoneNumber: string, country: libPhone.CountryCode = 'BR'): boolean {\n try {\n const parsedNumber = libPhone.parsePhoneNumberFromString(phoneNumber, country);\n return parsedNumber ? parsedNumber.isPossible() : false;\n } catch (_) {\n return false;\n }\n }\n\n /**\n * Verifica se o número de telefone é válido (real e formatado corretamente).\n *\n * @param phoneNumber - Número a ser validado.\n * @param country - Código do país (padrão: 'BR').\n * @returns Verdadeiro se for válido.\n *\n * @example\n * PhoneUtil.isValid('11912345678'); // true\n */\n public static isValid(phoneNumber: string, country: libPhone.CountryCode = 'BR'): boolean {\n try {\n const parsedNumber = libPhone.parsePhoneNumberFromString(phoneNumber, country);\n return parsedNumber ? parsedNumber.isValid() : false;\n } catch (_) {\n return false;\n }\n }\n\n /**\n * Retorna o tipo do número (mobile, fixed line, etc.).\n *\n * @param phoneNumber - Número de telefone.\n * @param country - Código do país (padrão: 'BR').\n * @returns Tipo do número, ou null se não for possível determinar.\n *\n * @example\n * PhoneUtil.getType('11912345678'); // \"MOBILE\"\n */\n public static getType(\n phoneNumber: string,\n country: libPhone.CountryCode = 'BR',\n ): libPhone.NumberType | null {\n try {\n const parsedNumber = libPhone.parsePhoneNumberFromString(phoneNumber, country);\n return parsedNumber ? parsedNumber.getType() : null;\n } catch (_) {\n return null;\n }\n }\n\n /**\n * Compara dois números para verificar se representam o mesmo telefone.\n *\n * @param phoneNumber1 - Primeiro número.\n * @param phoneNumber2 - Segundo número.\n * @param country - Código do país (padrão: 'BR').\n * @returns Verdadeiro se forem iguais logicamente (mesmo número real).\n *\n * @example\n * PhoneUtil.isEqual('(11) 91234-5678', '+55 11 91234-5678'); // true\n */\n public static isEqual(\n phoneNumber1: string,\n phoneNumber2: string,\n country: libPhone.CountryCode = 'BR',\n ): boolean {\n try {\n const parsedNumber1 = libPhone.parsePhoneNumberFromString(phoneNumber1, country);\n const parsedNumber2 = libPhone.parsePhoneNumberFromString(phoneNumber2, country);\n if (parsedNumber1 && parsedNumber2) {\n return parsedNumber1.isEqual(parsedNumber2);\n } else {\n return false;\n }\n } catch (_) {\n return false;\n }\n }\n}\n","/* eslint-disable @angular-eslint/no-output-native */\n/* eslint-disable @angular-eslint/no-output-rename */\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n DestroyRef,\n ElementRef,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n Output,\n signal,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\nimport { PhoneUtil } from '../../utils/phone.util';\nimport { StringUtil } from '../../utils/string.util';\nimport { HelpfulTipComponent } from '../helpful-tip/helpful-tip.component';\n\n@Component({\n selector: 'gipi-input-phone',\n exportAs: 'gInputPhone',\n template: `\n @if (label) {\n <label\n class=\"g-input-phone-label\"\n [attr.for]=\"_matFormFieldUniqueId\">\n {{ label }}\n @if (required) {\n <span>*</span>\n }\n @if (help) {\n <gipi-helpful-tip [tooltip]=\"help\" />\n }\n </label>\n }\n <mat-form-field\n #formFieldInput\n class=\"g-input-phone-form-field\"\n appearance=\"outline\"\n [attr.id]=\"_matFormFieldUniqueId\"\n [hintLabel]=\"hintLabel\">\n <input\n matInput\n [placeholder]=\"!!disabled ? '' : placeholder\"\n [type]=\"type\"\n [attr.id]=\"_matFormFieldUniqueId + '-input'\"\n [attr.aria-required]=\"!!required ? 'true' : null\"\n [attr.aria-invalid]=\"errorState ? 'true' : null\"\n [autocomplete]=\"'off'\"\n [min]=\"0\"\n [max]=\"!foreign ? 12 : 15\"\n [maxlength]=\"!foreign ? 12 : 15\"\n [mask]=\"!foreign ? maskPhone() : '0*'\"\n [disabled]=\"!!disabled\"\n [readonly]=\"!!readonly\"\n [required]=\"!!required\"\n [(ngModel)]=\"value\"\n (keydown)=\"onInputKeydown($event)\"\n (focus)=\"onHandleInputEnter(); onInputFocus($event)\"\n (blur)=\"onHandleInputExit(); onInputBlur($event)\"\n (change)=\"onChangeEvent.emit($event)\" />\n @if (prefixRef) {\n <ng-container matPrefix>\n <ng-template [ngTemplateOutlet]=\"prefixRef\"></ng-template>\n </ng-container>\n }\n\n @if (suffixRef) {\n <ng-container matSuffix>\n <ng-template [ngTemplateOutlet]=\"suffixRef\"></ng-template>\n </ng-container>\n }\n </mat-form-field>\n `,\n styleUrl: './input-phone.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-input-phone',\n },\n providers: [\n provideNgxMask(),\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputPhoneComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: InputPhoneComponent,\n multi: true,\n },\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n NgxMaskDirective,\n HelpfulTipComponent,\n ],\n})\nexport class InputPhoneComponent implements ControlValueAccessor, Validator, OnChanges {\n @ContentChild('prefix', { static: false })\n prefixRef: TemplateRef<ElementRef> | null = null;\n\n @ContentChild('suffix', { static: false })\n suffixRef: TemplateRef<ElementRef> | null = null;\n\n @ViewChild(NgControl, { static: false })\n ngControl?: NgControl;\n\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n\n private _inputEnter = signal<boolean>(false);\n\n protected maskPhone = signal<string>('0*');\n\n protected readonly _matFormFieldUniqueId: string =\n inject(_IdGenerator).getId('gipi-input-control-');\n\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-input-');\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() label: string = '';\n\n @Input() placeholder: string = '';\n\n @Input() help: string = '';\n\n @Input() hintLabel: string = '';\n\n @Input() type: string = 'text';\n\n @Input({ transform: booleanAttribute })\n disabled: BooleanInput = false;\n\n @Input({ transform: booleanAttribute })\n readonly: BooleanInput = false;\n\n @Input({ transform: booleanAttribute })\n required: BooleanInput = false;\n\n @Input() min: number = 0;\n\n @Input() max: number = 254;\n\n @Input({ transform: numberAttribute })\n minLength: number = 0;\n\n @Input({ transform: numberAttribute })\n maxLength: number = 255;\n\n @Input({ transform: booleanAttribute })\n foreign: BooleanInput = false;\n\n private _value: string = '';\n @Input()\n get value(): string {\n return this._value;\n }\n set value(value: string) {\n this._value = value;\n\n const isInputEntered: boolean = this._inputEnter();\n if (!isInputEntered) {\n this._changeDetectorRef.detectChanges();\n }\n\n if (!this.foreign && !StringUtil.isEmpty(this._value)) {\n this.onHandleInputExit(); // Força a atualização da máscara\n }\n\n this._onChange(this._value);\n this._onTouched();\n }\n\n @Output('focus') readonly onFocusEvent = new EventEmitter<FocusEvent>();\n @Output('blur') readonly onBlurEvent = new EventEmitter<FocusEvent>();\n @Output('keydown') readonly onKeydownEvent = new EventEmitter<KeyboardEvent>();\n @Output('change') readonly onChangeEvent = new EventEmitter<Event>();\n\n protected get errorState(): boolean {\n return !!this.ngControl?.invalid && !!this.ngControl?.touched;\n }\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['required']) {\n this._validatorChangeFn();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onChange: (value: string) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onTouched: () => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _validatorChangeFn: () => void = () => {};\n\n public writeValue(value: string): void {\n this.value = value;\n\n if (!StringUtil.isEmpty(this.value) && !this.foreign) {\n this.onHandleInputExit();\n }\n }\n\n public registerOnChange(fn: (value: string) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public validate(control: AbstractControl<string>): ValidationErrors | null {\n return this.required && !control.value ? { required: true } : null;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this._validatorChangeFn = fn;\n }\n\n public onHandleInputEnter(): void {\n if (this.foreign) {\n return;\n }\n\n this._inputEnter.set(true);\n const tempValue: string = this.value;\n this.value = '';\n this._changeDetectorRef.detectChanges();\n\n this.maskPhone.set('0*');\n setTimeout(() => (this.value = tempValue));\n }\n\n public onHandleInputExit(): void {\n if (this.foreign) {\n return;\n }\n\n this._inputEnter.set(false);\n\n if (!this.value) {\n this.maskPhone.set('0*');\n return;\n }\n\n const mask: string = PhoneUtil.mask(this.value);\n this.maskPhone.set(mask);\n }\n\n protected onInputKeydown(event: KeyboardEvent): void {\n if (this.readonly || this.disabled) {\n return;\n }\n this.onKeydownEvent.emit(event);\n }\n\n protected onInputFocus(event: FocusEvent): void {\n if (this.disabled) {\n return;\n }\n this.onFocusEvent.emit(event);\n }\n\n protected onInputBlur(event: FocusEvent): void {\n if (this.disabled) {\n return;\n }\n this.onBlurEvent.emit(event);\n this._onTouched();\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\nimport { ObjectUtil } from './../../utils/object.util';\nimport { tLozengeFill } from './shared/lozenge-fill.type';\nimport { tLozengeVariant } from './shared/lozenge-variant.type';\n\n@Component({\n selector: 'gipi-lozenge',\n exportAs: 'gLozenge',\n template: `\n @if (!!showPill) {\n <span class=\"g-lozenge-pill\">\n <span class=\"g-lozenge-pill-ping\"></span>\n <span class=\"g-lozenge-pill-badge\"></span>\n </span>\n }\n {{ label }}\n `,\n styleUrl: './lozenge.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: MatTooltip,\n inputs: ['matTooltip:tooltip'],\n },\n ],\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n '[attr.role]': '\"status\"',\n '[class]': '\"g-lozenge \" + variantClass',\n '[class.g-lozenge-pill-left]': 'pillPosition === \"left\"',\n '[class.g-lozenge-pill-right]': 'pillPosition === \"right\"',\n '[attr.aria-label]': 'label',\n '[style.background-color]': 'fill?.background',\n '[style.color]': 'fill?.text',\n },\n imports: [CommonModule, MatTooltipModule],\n})\nexport class LozengeComponent {\n private _uniqueId = inject(_IdGenerator).getId('gipi-lozenge-');\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() label: string = '';\n\n @Input() tooltip: string = '';\n\n @Input({ transform: booleanAttribute })\n showPill: BooleanInput = false;\n\n @Input() pillPosition: 'left' | 'right' = 'left';\n\n @Input() fill: tLozengeFill = null;\n\n @Input() variant: tLozengeVariant | null = null;\n\n protected get variantClass(): string {\n return ObjectUtil.isEmpty(this.fill)\n ? this.variant\n ? `g-lozenge-${this.variant}`\n : 'g-lozenge-default'\n : '';\n }\n}\n","import { StringUtil } from '../../../utils/string.util';\n\nexport class PasswordValidationUtil {\n\n /**\n * Valida se a senha atende aos requisitos mínimos de segurança.\n *\n * A senha é considerada válida se:\n * - Não for vazia (usando o método `StringUtil.isEmpty`)\n * - Atender a todos os seguintes critérios:\n * - Tamanho mínimo de 6 caracteres\n * - Tamanho máximo de 15 caracteres\n * - Contiver pelo menos uma letra maiúscula\n * - Contiver pelo menos uma letra minúscula\n * - Contiver pelo menos um número\n * - Contiver pelo menos um caractere especial\n * - Não contiver espaços (backspace)\n *\n * @param password A senha a ser validada.\n * @returns `true` se a senha for válida, caso contrário, `false`.\n */\n public static isValid(password: string): boolean {\n if (StringUtil.isEmpty(password)) {\n return false;\n }\n\n return (\n this.isValidMinLength(password) &&\n this.isValidMaxLength(password) &&\n this.hasUppercase(password) &&\n this.hasLowercase(password) &&\n this.hasNumber(password) &&\n this.hasSpecialChar(password) &&\n !this.hasBackspace(password)\n );\n }\n\n /**\n * Verifica se a senha possui um comprimento mínimo de 6 caracteres.\n *\n * @param password A senha a ser verificada.\n * @returns `true` se a senha tiver no mínimo 6 caracteres, caso contrário, `false`.\n */\n public static isValidMinLength(password: string): boolean {\n if (StringUtil.isEmpty(password)) {\n return false;\n }\n return (password.trim().length > 0) && (password.trim().length >= 6);\n }\n\n /**\n * Verifica se a senha não ultrapassa o comprimento máximo de 15 caracteres.\n *\n * @param password A senha a ser verificada.\n * @returns `true` se a senha tiver no máximo 15 caracteres, caso contrário, `false`.\n */\n public static isValidMaxLength(password: string): boolean {\n if (StringUtil.isEmpty(password)) {\n return false;\n }\n return (password.trim().length > 0) && (password.trim().length <= 15);\n }\n\n /**\n * Verifica se a senha contém pelo menos uma letra maiúscula.\n *\n * @param password A senha a ser verificada.\n * @returns `true` se a senha contiver pelo menos uma letra maiúscula, caso contrário, `false`.\n */\n public static hasUppercase(password: string): boolean {\n if (StringUtil.isEmpty(password)) {\n return false;\n }\n return (password.trim().length > 0) && (password.toLowerCase() !== password);\n }\n\n /**\n * Verifica se a senha contém pelo menos uma letra minúscula.\n *\n * @param password A senha a ser verificada.\n * @returns `true` se a senha contiver pelo menos uma letra minúscula, caso contrário, `false`.\n */\n public static hasLowercase(password: string): boolean {\n if (StringUtil.isEmpty(password)) {\n return false;\n }\n return (password.trim().length > 0) && (password.toUpperCase() !== password);\n }\n\n /**\n * Verifica se a senha contém pelo menos um número.\n *\n * @param password A senha a ser verificada.\n * @returns `true` se a senha contiver pelo menos um número, caso contrário, `false`.\n */\n public static hasNumber(password: string): boolean {\n if (StringUtil.isEmpty(password)) {\n return false;\n }\n return (password.trim().length > 0) && (/\\d/.test(password));\n }\n\n /**\n * Verifica se a senha contém pelo menos um caractere especial.\n *\n * Caractere especial inclui qualquer um dos seguintes: `!@#$%^&*()_={};':\"|,.<>?~`\n *\n * @param password A senha a ser verificada.\n * @returns `true` se a senha contiver pelo menos um caractere especial, caso contrário, `false`.\n */\n public static hasSpecialChar(password: string): boolean {\n if (StringUtil.isEmpty(password)) {\n return false;\n }\n return (password.trim().length > 0) && (/[!@#$%^&*()_={};':\"|,.<>?~]/g.test(password));\n }\n\n /**\n * Verifica se a senha contém espaços em branco (indicando uso de backspace).\n *\n * @param password A senha a ser verificada.\n * @returns `true` se a senha contiver espaços, caso contrário, `false`.\n */\n public static hasBackspace(password: string): boolean {\n if (StringUtil.isEmpty(password)) {\n return false;\n }\n return (password.trim.length > 0) && (/\\s/g.test(password));\n }\n\n\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, inject, Input, Output } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { iPasswordRequeriment } from './shared/password-requeriments.interface';\nimport { PasswordValidationUtil } from './shared/password-validation.util';\n\n@Component({\n selector: 'gipi-password-requeriments',\n template: `\n <div class=\"g-password-requeriments-group\" role=\"region\">\n @for (requirement of passwordRequirements; track $index) {\n <div class=\"g-password-requeriments-group-item\"\n [class.g-password-requeriments-group-item-invalid]=\"!requirement.isValid()\">\n <strong class=\"g-password-requeriments-group-item-title\">\n {{ requirement.title }}\n </strong>\n <small class=\"g-password-requeriments-group-item-subtitle\">\n {{ requirement.subtitle }}\n </small>\n </div>\n }\n </div>\n `,\n styleUrl: './password-requeriments.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': \"id\",\n '[attr.name]': \"name\",\n '[attr.role]': `'region'`,\n 'class': 'g-password-requeriments',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PasswordRequerimentsComponent),\n multi: true\n },\n ],\n imports: [\n CommonModule,\n FormsModule,\n ],\n})\nexport class PasswordRequerimentsComponent implements ControlValueAccessor {\n\n private readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-password-requeriments-');\n private _changeDetectorRef = inject(ChangeDetectorRef);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n private _password: string = '';\n @Input()\n get password(): string {\n return this._password;\n }\n set password(value: string) {\n if (value != this.password) {\n this._password = value;\n this._changeDetectorRef.markForCheck();\n }\n\n this._changeValidity();\n }\n\n private _passwordRequirements: iPasswordRequeriment[] = [\n {\n title: '6+',\n subtitle: 'Caracteres',\n isValid: () => PasswordValidationUtil.isValidMinLength(this.password),\n },\n {\n title: 'AA',\n subtitle: 'Maiúsculas',\n isValid: () => PasswordValidationUtil.hasUppercase(this.password),\n },\n {\n title: 'aa',\n subtitle: 'Minúsculas',\n isValid: () => PasswordValidationUtil.hasLowercase(this.password),\n },\n {\n title: '123',\n subtitle: 'Números',\n isValid: () => PasswordValidationUtil.hasNumber(this.password),\n }\n ];\n @Input()\n get passwordRequirements(): iPasswordRequeriment[] {\n return this._passwordRequirements;\n }\n set passwordRequirements(value: iPasswordRequeriment[]) {\n this._passwordRequirements = value;\n if (value != this.passwordRequirements) {\n this._passwordRequirements = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n @Output() onValidChange = new EventEmitter<iPasswordRequeriment[]>();\n\n constructor() { }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onChange: (value: string) => void = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onTouched: () => void = () => { };\n\n public writeValue(value: string): void {\n this.password = value;\n }\n\n public registerOnChange(fn: (value: string) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(_: boolean): void {\n // Não utilizadmos o método setDisabledState, pois não é necessário\n }\n\n private _changeValidity(): void {\n const passwordRequirementsInvalid = this.passwordRequirements.filter(req => !req.isValid());\n this.onValidChange.emit(passwordRequirementsInvalid);\n }\n\n}\n","export interface iPasswordRequeriment {\n title: string;\n subtitle: string;\n isValid: () => boolean;\n};\n","/* eslint-disable @angular-eslint/no-output-rename */\n/* eslint-disable @angular-eslint/no-output-native */\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n OnChanges,\n Output,\n signal,\n SimpleChanges,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { ArrayUtil } from '../../utils/array.util';\nimport { HelpfulTipComponent } from '../helpful-tip/helpful-tip.component';\nimport { tOptionRadioGroup } from './shared/option-radio-group.type';\n\ninterface iRadioGroupOption {\n key: string | number;\n value: string | number;\n disabled: boolean;\n}\n\n@Component({\n selector: 'gipi-radio-group',\n exportAs: 'gRadioGroup',\n template: `\n @if (!!fieldset) {\n <fieldset class=\"g-radio-group-fieldset\">\n <legend>\n {{ label }}\n @if (required) {\n <span>*</span>\n }\n @if (help) {\n <gipi-helpful-tip [tooltip]=\"help\" />\n }\n </legend>\n\n <ng-container *ngTemplateOutlet=\"radioGroupTemplate\" />\n </fieldset>\n } @else {\n @if (label) {\n <label\n [attr.for]=\"_matRadioGroupUniqueId\"\n class=\"g-radio-group-label\">\n {{ label }}\n @if (required) {\n <span>*</span>\n }\n @if (help) {\n <gipi-helpful-tip [tooltip]=\"help\" />\n }\n </label>\n }\n\n <ng-container *ngTemplateOutlet=\"radioGroupTemplate\" />\n }\n\n <ng-template #radioGroupTemplate>\n <mat-radio-group\n class=\"g-radio-group-control\"\n [class.g-radio-group-control-fieldset]=\"!!fieldset\"\n [class.g-radio-group-control-row]=\"!align || align === 'row'\"\n [class.g-radio-group-control-column]=\"align === 'column'\"\n [attr.id]=\"_matRadioGroupUniqueId\"\n [attr.name]=\"_matRadioGroupUniqueId\"\n [labelPosition]=\"labelPosition\"\n [disabled]=\"!!disabled\"\n [required]=\"!!required\"\n [(ngModel)]=\"value\"\n (focus)=\"onFocusEvent.emit($event)\"\n (blur)=\"onBlurEvent.emit($event)\">\n @for (option of _optionsInternal(); track option) {\n <mat-radio-button\n class=\"g-radio-button\"\n [value]=\"option.key\">\n {{ option.value }}\n </mat-radio-button>\n }\n </mat-radio-group>\n </ng-template>\n `,\n styleUrl: './radio-group.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-radio-group',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroupComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: RadioGroupComponent,\n multi: true,\n },\n ],\n imports: [CommonModule, FormsModule, MatRadioModule, HelpfulTipComponent],\n})\nexport class RadioGroupComponent implements ControlValueAccessor, Validator, OnChanges {\n protected readonly _matRadioGroupUniqueId: string = inject(_IdGenerator).getId(\n 'gipi-radio-group-control',\n );\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-radio-group-');\n\n private _changeDetectorRef = inject(ChangeDetectorRef);\n\n protected _optionsInternal = signal<iRadioGroupOption[]>([]);\n\n @Input() id: string = this._uniqueId;\n\n @Input() name: string = this._uniqueId;\n\n @Input() label: string = '';\n\n @Input() help: string = '';\n\n @Input({ transform: booleanAttribute }) disabled: BooleanInput = false;\n\n @Input({ transform: booleanAttribute }) required: BooleanInput = false;\n\n @Input({ transform: booleanAttribute }) fieldset: BooleanInput = true;\n\n @Input() labelPosition: 'after' | 'before' = 'after';\n\n @Input() align: 'row' | 'column' = 'row';\n\n private _options!: tOptionRadioGroup;\n @Input({ required: true })\n get options(): tOptionRadioGroup {\n return this._options;\n }\n set options(value: tOptionRadioGroup) {\n this._options = value;\n this._optionsInternal.set(this._buildEnumList(value));\n }\n\n private _valuesOmit: string[] = [];\n @Input()\n get valuesOmit(): string[] {\n return this._valuesOmit;\n }\n set valuesOmit(value: string[]) {\n this._valuesOmit = value;\n this._optionsInternal.set(this._buildEnumList(this.options));\n }\n\n private _valuesDisable: string[] = [];\n @Input()\n get valuesDisable(): string[] {\n return this._valuesDisable;\n }\n set valuesDisable(value: string[]) {\n this._valuesDisable = value;\n this._optionsInternal.set(this._buildEnumList(this.options));\n }\n\n private _value: string | number = '';\n @Input()\n get value(): string | number {\n return this._value;\n }\n set value(value: string | number) {\n this._value = value;\n this._onChange(this._value);\n }\n\n @Output('focus') readonly onFocusEvent = new EventEmitter<FocusEvent>();\n @Output('blur') readonly onBlurEvent = new EventEmitter<FocusEvent>();\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['required']) {\n this._validatorChangeFn();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onChange: (value: string | number) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onTouched: () => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _validatorChangeFn: () => void = () => {};\n\n public writeValue(value: string | number): void {\n this.value = value;\n }\n\n public registerOnChange(fn: (value: string | number) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n public validate(control: AbstractControl<string | number>): ValidationErrors | null {\n return this.required && !control.value ? { required: true } : null;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this._validatorChangeFn = fn;\n }\n\n private _buildEnumList(options: tOptionRadioGroup): iRadioGroupOption[] {\n const hasDisableList = !ArrayUtil.isEmpty(this.valuesDisable);\n const hasOmitList = !ArrayUtil.isEmpty(this.valuesOmit);\n\n const entries = Object.keys(options).map((key) => ({\n key,\n value: options[key],\n disabled: hasDisableList ? this.valuesDisable.includes(key) : false,\n }));\n\n return hasOmitList\n ? entries.filter((entry) => !this.valuesOmit.includes(entry.key))\n : entries;\n }\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\n\n@Directive({\n selector: '[gScrollFade]',\n standalone: true,\n})\nexport class ScrollFadeDirective implements AfterViewInit, OnDestroy, OnChanges {\n private _elementRef = inject(ElementRef);\n private _renderer = inject(Renderer2);\n\n private _scrollContainer!: HTMLElement;\n private _fadeTop!: HTMLElement;\n private _fadeBottom!: HTMLElement;\n private _scrollListener!: () => void;\n private _isInitialized: boolean = false;\n\n @Input({ transform: booleanAttribute })\n gScrollFade: boolean = true;\n\n @Input() gScrollOverflow: 'posY' | 'posX' = 'posY';\n\n ngAfterViewInit(): void {\n this._scrollContainer = this._elementRef.nativeElement;\n\n this._applyBaseStyles();\n\n this._fadeTop = this._createFadeElement('top');\n this._fadeBottom = this._createFadeElement('bottom');\n\n this._appendFade(this._fadeTop);\n this._appendFade(this._fadeBottom);\n\n this._bindScrollListener();\n\n this._updateFadeState();\n this._isInitialized = true;\n }\n\n ngOnDestroy(): void {\n this._scrollContainer.removeEventListener('scroll', this._scrollListener);\n this._fadeTop.remove();\n this._fadeBottom.remove();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._isInitialized) {\n return;\n }\n if (changes['gScrollFade']) {\n this._updateFadeState();\n }\n }\n\n private _applyBaseStyles(): void {\n const styleContainer = getComputedStyle(this._scrollContainer);\n if (styleContainer.position === 'static') {\n this._renderer.setStyle(this._scrollContainer, 'position', 'relative');\n }\n\n const overflow = this.gScrollOverflow === 'posY' ? 'overflow-y' : 'overflow-x';\n this._renderer.setStyle(this._scrollContainer, overflow, 'auto');\n }\n\n private _createFadeElement(position: 'top' | 'bottom'): HTMLElement {\n const fade = this._renderer.createElement('div');\n this._renderer.setStyle(fade, 'position', 'sticky');\n this._renderer.setStyle(fade, position, '0');\n this._renderer.setStyle(fade, 'left', '0');\n this._renderer.setStyle(fade, 'width', '100%');\n this._renderer.setStyle(fade, 'height', '32px');\n this._renderer.setStyle(fade, 'pointer-events', 'none');\n this._renderer.setStyle(\n fade,\n 'background-image',\n position === 'top'\n ? 'linear-gradient(to bottom, rgba(0, 0, 0, 0.05), transparent)'\n : 'linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.05))',\n );\n this._renderer.setStyle(fade, 'transition', 'opacity 0.3s ease');\n this._renderer.setStyle(fade, 'opacity', '0');\n this._renderer.setStyle(fade, 'z-index', '1');\n return fade;\n }\n\n private _appendFade(fade: HTMLElement): void {\n this._renderer.appendChild(this._scrollContainer, fade);\n }\n\n private _bindScrollListener(): void {\n this._scrollListener = () => {\n if (!this.gScrollFade) {\n this._renderer.setStyle(this._fadeTop, 'opacity', '0');\n this._renderer.setStyle(this._fadeBottom, 'opacity', '0');\n return;\n }\n\n const scrollTop = this._scrollContainer.scrollTop;\n const clientHeight = this._scrollContainer.clientHeight;\n const scrollHeight = this._scrollContainer.scrollHeight;\n\n const atTop = scrollTop <= 1;\n const atBottom = scrollTop + clientHeight >= scrollHeight - 1;\n\n this._renderer.setStyle(this._fadeTop, 'opacity', atTop ? '0' : '1');\n this._renderer.setStyle(this._fadeBottom, 'opacity', atBottom ? '0' : '1');\n };\n\n this._scrollContainer.addEventListener('scroll', this._scrollListener);\n this._scrollListener();\n }\n\n private _updateFadeState(): void {\n if (!this.gScrollFade) {\n this._renderer.setStyle(this._fadeTop, 'opacity', '0');\n this._renderer.setStyle(this._fadeBottom, 'opacity', '0');\n } else {\n this._scrollListener();\n }\n }\n}\n","import { ArrayUtil } from '../../../utils/array.util';\nimport { ObjectUtil } from '../../../utils/object.util';\nimport { StringUtil } from '../../../utils/string.util';\nimport { UUIDUtil } from '../../../utils/uuid.util';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport class MatSelectOptionsHelper {\n public static getOptionLabel<TOption = any>(\n option: TOption,\n propertyLabel: string | ((obj: TOption) => string) | null,\n ): string {\n if (ObjectUtil.isEmpty(option) || ObjectUtil.isEmpty(propertyLabel)) {\n return '';\n }\n\n if (typeof propertyLabel === 'function') {\n return propertyLabel(option) ?? '';\n }\n if (!StringUtil.isEmpty(propertyLabel)) {\n return (option as any)[propertyLabel] ?? '';\n }\n return option?.toString() ?? '';\n }\n\n public static getOptionValue<TOption = any>(\n option: TOption,\n propertyValue: string | ((obj: TOption) => string) | null,\n ): any {\n if (ObjectUtil.isEmpty(option) || ObjectUtil.isEmpty(propertyValue)) {\n return option;\n }\n if (typeof propertyValue === 'function') {\n return propertyValue(option) ?? option;\n }\n if (!StringUtil.isEmpty(propertyValue)) {\n return (option as any)[propertyValue] ?? option;\n }\n return option ?? '';\n }\n\n public static optionExcluded<TOption = any>(\n option: TOption,\n optionsExclud: TOption[],\n ): boolean {\n if (ArrayUtil.isEmpty(optionsExclud) || ObjectUtil.isEmpty(option)) {\n return false;\n }\n return optionsExclud.some((ex) => this.isEqualOption(option, ex));\n }\n\n public static isEqualOption(option1: unknown, option2: unknown): boolean {\n if (option1 && option2 && typeof option1 === 'object' && typeof option2 === 'object') {\n const option1Id = (option1 as any)['id'];\n const option2Id = (option2 as any)['id'];\n\n if (!UUIDUtil.isEmpty(option1Id) && !UUIDUtil.isEmpty(option2Id)) {\n return option1Id === option2Id;\n }\n }\n\n return JSON.stringify(option1) === JSON.stringify(option2);\n }\n}\n","export class CssUtil {\n public static readonly BREAKPOINT_MOBILE_PX = 639.98;\n public static readonly BREAKPOINT_MOBILE = '(max-width: 639.98px)';\n public static readonly BREAKPOINT_TABLET = '(min-width: 640px) and (max-width: 1279.98px)';\n public static readonly BREAKPOINT_DESKTOP = '(min-width: 1280px)';\n\n public static readonly BREAKPOINTS = {\n sm: this.BREAKPOINT_MOBILE,\n md: this.BREAKPOINT_TABLET,\n lg: this.BREAKPOINT_DESKTOP,\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public static coerceCssPixelValue(value: any): string {\n if (value == null || value === '') {\n return '';\n }\n const strValue = value.toString().trim();\n // Se já for uma unidade CSS válida\n if (/^\\d+(\\.\\d+)?(px|em|rem|%|vh|vw)$/.test(strValue)) {\n return strValue;\n }\n // Se for apenas um número, trata como porcentagem\n if (/^\\d+(\\.\\d+)?$/.test(strValue)) {\n return `${strValue}%`;\n }\n return '';\n }\n}\n","export class NumberToWordsUtil {\n private static readonly _UNITS: string[] = [\n 'zero',\n 'um',\n 'dois',\n 'três',\n 'quatro',\n 'cinco',\n 'seis',\n 'sete',\n 'oito',\n 'nove',\n 'dez',\n 'onze',\n 'doze',\n 'treze',\n 'quatorze',\n 'quinze',\n 'dezesseis',\n 'dezessete',\n 'dezoito',\n 'dezenove',\n ];\n\n private static readonly _TENS: string[] = [\n '',\n '',\n 'vinte',\n 'trinta',\n 'quarenta',\n 'cinquenta',\n 'sessenta',\n 'setenta',\n 'oitenta',\n 'noventa',\n ];\n\n private static readonly _HUNDREDS: string[] = [\n '',\n 'cento',\n 'duzentos',\n 'trezentos',\n 'quatrocentos',\n 'quinhentos',\n 'seiscentos',\n 'setecentos',\n 'oitocentos',\n 'novecentos',\n ];\n\n private static readonly _THOUSANDS: string[][] = [\n ['', ''],\n ['mil', 'mil'],\n ['milhão', 'milhões'],\n ['bilhão', 'bilhões'],\n ['trilhão', 'trilhões'],\n ['quatrilhão', 'quatrilhões'],\n ['quintilhão', 'quintilhões'],\n ['sextilhão', 'sextilhões'],\n ['setilhão', 'setilhões'],\n ['octilhão', 'octilhões'],\n ['nonilhão', 'nonilhões'],\n ['decilhão', 'decilhões'],\n ];\n\n private static readonly _CURRENCY = {\n singular: 'real',\n plural: 'reais',\n fraction: 'centavo',\n };\n\n private static readonly _PERCENT = {\n singular: 'por cento',\n plural: 'por cento',\n };\n\n private static _handleDecimalNumber(num: number): string {\n const numStr = num.toString();\n const parts = numStr.split('.');\n const integerPart = Math.floor(num);\n\n let result = this.convertNumber(integerPart);\n\n if (parts.length > 1) {\n const decimalStr = parts[1];\n if (decimalStr.length === 2) {\n const decimalNum = parseInt(decimalStr, 10);\n result += ' vírgula ' + this.convertNumber(decimalNum);\n } else {\n result += ' vírgula ' + this._readDigitsIndividually(decimalStr);\n }\n }\n\n return result;\n }\n\n private static _readDigitsIndividually(digits: string): string {\n let result = '';\n for (const char of digits) {\n const digit = parseInt(char, 10);\n result += (result ? ' ' : '') + this._UNITS[digit];\n }\n return result;\n }\n\n private static _handleTens(num: number): string {\n const ten = Math.floor(num / 10);\n const unit = num % 10;\n return this._TENS[ten] + (unit ? ' e ' + this._UNITS[unit] : '');\n }\n\n private static _handleHundreds(num: number): string {\n const hundred = Math.floor(num / 100);\n const remainder = num % 100;\n if (hundred === 1 && remainder === 0) return 'cem';\n return this._HUNDREDS[hundred] + (remainder ? ' e ' + this.convertNumber(remainder) : '');\n }\n\n private static _handleLargeNumbers(num: number): string {\n for (let i = 1; i < this._THOUSANDS.length; i++) {\n const lower = Math.pow(1000, i);\n const upper = Math.pow(1000, i + 1);\n\n if (num < upper) {\n const before = Math.floor(num / lower);\n const after = num % lower;\n\n let str = '';\n if (i === 1 && before === 1) {\n str = this._THOUSANDS[i][0];\n } else {\n str =\n this.convertNumber(before) + ' ' + this._THOUSANDS[i][before === 1 ? 0 : 1];\n }\n\n if (after) {\n str += after < 100 ? ' e ' : ' ';\n str += this.convertNumber(after);\n }\n\n return str;\n }\n }\n\n throw new Error('Número muito grande');\n }\n\n private static _handleDecimalPercentage(num: number): string {\n const numStr = num.toString();\n const parts = numStr.split('.');\n const integerPart = Math.floor(num);\n\n let decimalStr = parts[1] || '';\n decimalStr = decimalStr.replace(/0+$/, '');\n\n let result = this.convertNumber(integerPart);\n\n if (decimalStr.length > 0) {\n while (decimalStr.length < 2) {\n decimalStr += '0';\n }\n const decimalNum = parseInt(decimalStr, 10);\n result += ' vírgula ' + this.convertNumber(decimalNum);\n }\n\n result += ' ' + this._PERCENT.singular;\n return result;\n }\n\n public static convertNumber(num: number): string {\n if (typeof num !== 'number') {\n throw new Error('O valor deve ser um número');\n }\n\n if (num < 0) {\n return 'menos ' + this.convertNumber(Math.abs(num));\n }\n\n if (!Number.isInteger(num)) {\n return this._handleDecimalNumber(num);\n }\n\n if (num < 20) {\n return this._UNITS[Math.floor(num)];\n }\n\n if (num < 100) {\n return this._handleTens(num);\n }\n\n if (num < 1000) {\n return this._handleHundreds(num);\n }\n\n return this._handleLargeNumbers(num);\n }\n\n public static convertCurrency(num: number): string {\n if (typeof num !== 'number') {\n throw new Error('O valor deve ser um número');\n }\n\n if (num < 0) {\n return 'menos ' + this.convertCurrency(Math.abs(num));\n }\n\n const integerPart = Math.floor(num);\n const decimalPart = Math.round((num - integerPart) * 100);\n\n let result = '';\n\n if (integerPart > 0) {\n result += this.convertNumber(integerPart);\n result += ' ';\n result += integerPart === 1 ? this._CURRENCY.singular : this._CURRENCY.plural;\n }\n\n if (decimalPart > 0) {\n if (integerPart > 0) {\n result += ' e ';\n }\n result += this.convertNumber(decimalPart);\n result += ' ';\n result += decimalPart === 1 ? this._CURRENCY.fraction : this._CURRENCY.fraction + 's';\n }\n\n if (integerPart === 0 && decimalPart === 0) {\n result = this.convertNumber(0) + ' ' + this._CURRENCY.plural;\n }\n\n return result;\n }\n\n public static convertPercentage(num: number): string {\n if (typeof num !== 'number') {\n throw new Error('O valor deve ser um número');\n }\n\n if (num < 0) {\n return 'menos ' + this.convertPercentage(Math.abs(num));\n }\n\n if (!Number.isInteger(num)) {\n return this._handleDecimalPercentage(num);\n }\n\n return this.convertNumber(num) + ' ' + this._PERCENT.singular;\n }\n}\n","import { formatCurrency, formatNumber } from '@angular/common';\nimport { DateUtil } from './date.util';\nimport { NumberToWordsUtil } from './number-to-words.util';\nimport { NumberUtil } from './number.util';\n\nexport class CurrencyUtil {\n /**\n * Verifica se um valor é considerado vazio.\n *\n * Um valor é considerado vazio se for:\n * - `null` ou `undefined`\n * - Uma string vazia `\"\"`\n * - Um número `NaN`\n * - Um array vazio `[]`\n * - Um objeto sem propriedades `{}`\n * - Um valor de data inválido\n *\n * @param inp O valor a ser verificado.\n * @returns `true` se o valor for vazio, caso contrário, `false`.\n */\n public static isEmpty(inp: unknown): inp is null | undefined {\n return (\n inp === null ||\n inp === undefined ||\n inp === '' ||\n (typeof inp === 'string' && inp.length === 0) ||\n (typeof inp === 'number' && Number.isNaN(inp)) ||\n (Array.isArray(inp) && inp.length === 0) ||\n (!DateUtil.isDate(inp) && typeof inp === 'object' && Object.keys(inp).length === 0)\n );\n }\n\n /**\n * Formata um número como moeda ou porcentagem, de acordo com as configurações especificadas.\n *\n * @param inp O número a ser formatado.\n * @param digitsInfo Define o formato dos dígitos (ex.: `1.2-2` para mínimo de 1 dígito inteiro e 2 casas decimais).\n * @param isPercent Define se o número deve ser formatado como porcentagem:\n * - `true`: Formata como porcentagem (ex. '50%' em vez de '0.5').\n * - `false` (padrão): Formata como moeda em reais (ex. 'R$ 10,00').\n *\n * @returns O número formatado como string.\n */\n /**\n * Formata um número como moeda (em reais) ou porcentagem, conforme as opções fornecidas.\n *\n * @param inp Número a ser formatado.\n * @param options Configurações de formatação:\n * - `digitsInfo` (opcional): Define o formato dos dígitos, como `1.2-2` (mínimo 1 inteiro, 2 casas decimais).\n * - `isPercent` (opcional): Se `true`, formata como porcentagem (ex: `0.5` → `50%`); caso contrário, como moeda (`R$`).\n *\n * @returns Uma string com o número formatado como moeda ou porcentagem.\n */\n public static format(\n inp: number,\n options?: { digitsInfo?: string; isPercent?: boolean },\n ): string {\n if (NumberUtil.isEmpty(inp)) {\n return String(inp);\n }\n\n const digitsInfo = options?.digitsInfo ?? '1.2-2';\n\n return options?.isPercent\n ? formatNumber(inp, 'pt', digitsInfo) + ' %'\n : formatCurrency(inp, 'pt', 'R$', digitsInfo);\n }\n\n /**\n *\n * Converte um número para seu valor por extenso em português (pt-BR).\n *\n * @github https://github.com/lusofonia/extenso.js\n *\n * @param inp O número que será convertido em texto.\n * @param mode Define o formato da conversão:\n * - 'number': quarenta e dois\n * - 'currency': quarenta e dois reais\n * - 'percent': quarenta e dois por cento\n * @returns O número convertido em texto por extenso.\n */\n public static convertInExtenzeText(\n inp: number,\n mode: 'number' | 'currency' | 'percent' = 'currency',\n ): string {\n if (this.isEmpty(inp)) {\n return '';\n }\n if (mode === 'percent') {\n return NumberToWordsUtil.convertPercentage(inp).trim();\n } else if (mode === 'currency') {\n return NumberToWordsUtil.convertCurrency(inp).trim();\n } else if (mode === 'number') {\n return NumberToWordsUtil.convertNumber(inp).trim();\n }\n\n return '';\n }\n\n /**\n * Arredonda e formata um valor de acordo com uma regra específica e tipo de saída.\n *\n * Regras de arredondamento:\n * - `'none'` : não altera o valor.\n * - `'end0'` : arredonda para cima até o próximo múltiplo de 0,10.\n * - `'end9'` : arredonda para cima até o próximo valor terminando em 0,09.\n * - `'end90'` : arredonda para cima até o próximo valor terminando em 0,90.\n * - `'end99'` : arredonda para cima até o próximo valor terminando em 0,99.\n *\n * Tipos de formatação:\n * - `'currency'` : retorna uma string em formato moeda BRL (ex: \"R$ 1,50\").\n * - `'percent'` : retorna uma string percentual sem multiplicar por 100 (ex: \"0,12%\").\n * - `'value'` : retorna apenas o número arredondado (ex: 1.5).\n *\n * @param value Valor original\n * @param rule Regra de arredondamento\n * @param type Tipo de formatação (default: 'value')\n * @returns Valor arredondado e formatado conforme o tipo\n *\n * @example\n * roundValue(0.09, 'end0', 'currency') // \"R$ 0,10\"\n * roundValue(1.58, 'end9', 'currency') // \"R$ 1,59\"\n * roundValue(0.1234, 'none', 'percent') // \"0,12%\"\n * roundValue(1.234, 'end0', 'value') // 1.3\n */\n public static roundValue(\n value: number,\n rule: 'none' | 'end0' | 'end9' | 'end90' | 'end99' = 'none',\n type: 'currency' | 'percent' | 'value' = 'value',\n ): string | number {\n let result = value;\n\n switch (rule) {\n case 'none': {\n result = value;\n break;\n }\n case 'end0': {\n result = Math.ceil(value * 10) / 10;\n break;\n }\n case 'end9': {\n let cents = Math.ceil(value * 100);\n while (cents % 10 !== 9) {\n cents++;\n }\n result = cents / 100;\n break;\n }\n case 'end90': {\n const intPart = Math.floor(value);\n result = intPart + 0.9;\n if (result < value) result = intPart + 1 + 0.9;\n break;\n }\n case 'end99': {\n const intPart = Math.floor(value);\n result = intPart + 0.99;\n if (result < value) result = intPart + 1 + 0.99;\n break;\n }\n default:\n result = value;\n }\n\n switch (type) {\n case 'currency':\n return CurrencyUtil.format(result);\n case 'percent':\n return CurrencyUtil.format(result, { isPercent: true });\n case 'value':\n default:\n return result;\n }\n }\n}\n","export const STATES_DATA = {\n AC: {\n code: '2',\n areaCodes: [68],\n ieLength: 13,\n name: 'Acre',\n },\n AL: {\n code: '4',\n areaCodes: [82],\n ieLength: 9,\n name: 'Alagoas',\n },\n AP: {\n code: '2',\n areaCodes: [96],\n ieLength: 9,\n name: 'Amapá',\n },\n AM: {\n code: '2',\n areaCodes: [92, 97],\n ieLength: 9,\n name: 'Amazonas',\n },\n BA: {\n code: '5',\n areaCodes: [71, 73, 74, 75, 77],\n ieLength: [8, 9],\n name: 'Bahia',\n },\n CE: {\n code: '3',\n areaCodes: [85, 88],\n ieLength: 9,\n name: 'Ceará',\n },\n DF: {\n code: '1',\n areaCodes: [61],\n ieLength: 13,\n name: 'Distrito Federal',\n },\n ES: {\n code: '7',\n areaCodes: [27, 28],\n ieLength: 9,\n name: 'Espírito Santo',\n },\n GO: {\n code: '1',\n areaCodes: [62, 64],\n ieLength: 9,\n name: 'Goiás',\n },\n MA: {\n code: '3',\n areaCodes: [98, 99],\n ieLength: 9,\n name: 'Maranhão',\n },\n MG: {\n code: '6',\n areaCodes: [31, 32, 33, 34, 35, 37, 38],\n ieLength: 13,\n name: 'Minas Gerais',\n },\n MT: {\n code: '1',\n areaCodes: [65, 66],\n ieLength: 11,\n name: 'Mato Grosso',\n },\n MS: {\n code: '1',\n areaCodes: [67],\n ieLength: 9,\n name: 'Mato Grosso do Sul',\n },\n PA: {\n code: '2',\n areaCodes: [91, 93, 94],\n ieLength: 9,\n name: 'Pará',\n },\n PB: {\n code: '4',\n areaCodes: [83],\n ieLength: 9,\n name: 'Paraíba',\n },\n PE: {\n code: '4',\n areaCodes: [81, 87],\n ieLength: 9,\n name: 'Pernambuco',\n },\n PI: {\n code: '3',\n areaCodes: [86, 89],\n ieLength: 9,\n name: 'Piauí',\n },\n PR: {\n code: '9',\n areaCodes: [41, 42, 43, 44, 45, 46],\n ieLength: 10,\n name: 'Paraná',\n },\n RJ: {\n code: '7',\n areaCodes: [21, 22, 24],\n ieLength: 8,\n name: 'Rio de Janeiro',\n },\n RN: {\n code: '4',\n areaCodes: [84],\n ieLength: [9, 10],\n name: 'Rio Grande do Norte',\n },\n RO: {\n code: '2',\n areaCodes: [69],\n ieLength: 14,\n name: 'Rondônia',\n },\n RS: {\n code: '0',\n areaCodes: [51, 53, 54, 55],\n ieLength: 10,\n name: 'Rio Grande do Sul',\n },\n RR: {\n code: '2',\n areaCodes: [95],\n ieLength: 9,\n name: 'Roraima',\n },\n SC: {\n code: '9',\n areaCodes: [47, 48, 49],\n ieLength: 9,\n name: 'Santa Catarina',\n },\n SE: {\n code: '5',\n areaCodes: [79],\n ieLength: 9,\n name: 'Sergipe',\n },\n SP: {\n code: '8',\n areaCodes: [11, 12, 13, 14, 15, 16, 17, 18, 19],\n ieLength: 12,\n name: 'São Paulo',\n },\n TO: {\n code: '1',\n areaCodes: [63],\n ieLength: [9, 11],\n name: 'Tocantins',\n },\n};\n\nexport type tUFState = keyof typeof STATES_DATA;\n\nexport type tStateName =\n | 'Acre'\n | 'Alagoas'\n | 'Amapá'\n | 'Amazonas'\n | 'Bahia'\n | 'Ceará'\n | 'Distrito Federal'\n | 'Espírito Santo'\n | 'Goiás'\n | 'Maranhão'\n | 'Minas Gerais'\n | 'Mato Grosso'\n | 'Mato Grosso do Sul'\n | 'Pará'\n | 'Paraíba'\n | 'Pernambuco'\n | 'Piauí'\n | 'Paraná'\n | 'Rio de Janeiro'\n | 'Rio Grande do Norte'\n | 'Rondônia'\n | 'Rio Grande do Sul'\n | 'Roraima'\n | 'Santa Catarina'\n | 'Sergipe'\n | 'São Paulo'\n | 'Tocantins';\n\nexport const stateNamesMap: Record<tUFState, tStateName> = {\n AC: 'Acre',\n AL: 'Alagoas',\n AP: 'Amapá',\n AM: 'Amazonas',\n BA: 'Bahia',\n CE: 'Ceará',\n DF: 'Distrito Federal',\n ES: 'Espírito Santo',\n GO: 'Goiás',\n MA: 'Maranhão',\n MG: 'Minas Gerais',\n MT: 'Mato Grosso',\n MS: 'Mato Grosso do Sul',\n PA: 'Pará',\n PB: 'Paraíba',\n PE: 'Pernambuco',\n PI: 'Piauí',\n PR: 'Paraná',\n RJ: 'Rio de Janeiro',\n RN: 'Rio Grande do Norte',\n RO: 'Rondônia',\n RS: 'Rio Grande do Sul',\n RR: 'Roraima',\n SC: 'Santa Catarina',\n SE: 'Sergipe',\n SP: 'São Paulo',\n TO: 'Tocantins',\n};\n\nexport class StateUtil {\n /**\n * Retorna o nome do estado brasileiro com base na sigla (UF).\n *\n * @param uf - Sigla do estado (por exemplo: 'SP', 'RJ', 'MG').\n * @param full - Define se o retorno deve incluir o formato completo com a sigla (ex: '(SP) - São Paulo').\n * Caso `false` ou não informado, retorna apenas o nome (ex: 'São Paulo').\n * @returns O nome do estado no formato simples ou completo, ou `uf` se a sigla for inválida.\n *\n * @example\n * StateUtil.stateName('SP'); // 'São Paulo'\n * StateUtil.stateName('SP', true); // '(SP) - São Paulo'\n */\n public static stateName(uf: tUFState, full: boolean = false): string {\n const name = stateNamesMap[uf as tUFState];\n if (!name) {\n return uf;\n }\n return full ? `(${uf}) - ${name}` : name;\n }\n}\n","import { NumberUtil } from './number.util';\nimport { StateUtil, tUFState } from './states.util';\nimport { StringUtil } from './string.util';\n\nexport class DocumentUtil {\n private static _isLastChar(index: number, input: string): boolean {\n return index === input.length - 1;\n }\n\n /**\n * Verifica se um valor é considerado vazio.\n * @param inp O valor a ser verificado.\n * @returns O valor sem formatação.\n * @example\n * DocumentUtil.isEmpty('123-123'); // Retorna `123123`.\n */\n public static clearFormat(value: string): string {\n if (StringUtil.isEmpty(value)) {\n return '';\n }\n return value.replace(/\\D/g, '');\n }\n\n /**\n * Formata um CPF.\n * @param cpf O CPF a ser formatado.\n * @param pad Se `true`, o CPF será preenchido com zeros à esquerda.\n * @returns O CPF formatado.\n * @example\n * DocumentUtil.formatCpf('12345678909'); // Retorna `123.456.789-09`.\n * DocumentUtil.formatCpf('123456789', true); // Retorna `001.234.567-89`.\n */\n public static formatCpf(cpf: string, pad?: boolean): string {\n if (StringUtil.isEmpty(cpf)) {\n return '';\n }\n\n // Mantém apenas números e asteriscos\n let digits = cpf.replace(/[^\\d*]/g, '');\n if (pad) {\n digits = digits.padStart(11, '0');\n }\n const DOT_INDEXES = [2, 5];\n const HYPHEN_INDEXES = [8];\n\n return digits\n .slice(0, 11)\n .split('')\n .reduce((acc, digit, i) => {\n const result = `${acc}${digit}`;\n if (!this._isLastChar(i, digits)) {\n if (DOT_INDEXES.indexOf(i) >= 0) return `${result}.`;\n if (HYPHEN_INDEXES.indexOf(i) >= 0) return `${result}-`;\n }\n return result;\n }, '');\n }\n\n /**\n * Verifica se um CPF é válido.\n * @param cpf O CPF a ser verificado.\n * @returns `true` se o CPF for válido, caso contrário, `false`.\n * @example\n * DocumentUtil.isValidCpf('123.456.789-09'); // Retorna `true`.\n * DocumentUtil.isValidCpf('12345678909'); // Retorna `true`.\n * DocumentUtil.isValidCpf('1234567890'); // Retorna `false`.\n * DocumentUtil.isValidCpf('123456789090'); // Retorna `false`.\n */\n public static isValidCpf(cpf: string): boolean {\n if (StringUtil.isEmpty(cpf)) {\n return false;\n }\n\n cpf = NumberUtil.onlyNumbers(cpf);\n\n if (\n StringUtil.isEmpty(cpf) ||\n cpf.length !== 11 ||\n cpf === '00000000000' ||\n cpf === '11111111111' ||\n cpf === '22222222222' ||\n cpf === '33333333333' ||\n cpf === '44444444444' ||\n cpf === '55555555555' ||\n cpf === '66666666666' ||\n cpf === '77777777777' ||\n cpf === '88888888888' ||\n cpf === '99999999999'\n ) {\n return false;\n }\n\n let add: number = 0;\n for (let i: number = 0; i < 9; i++) {\n add += +cpf.charAt(i) * (10 - i);\n }\n let rev: number = 11 - (add % 11);\n\n if (rev === 10 || rev === 11) {\n rev = 0;\n }\n\n if (rev !== +cpf.charAt(9)) {\n return false;\n }\n\n add = 0;\n for (let i: number = 0; i < 10; i++) {\n add += +cpf.charAt(i) * (11 - i);\n }\n rev = 11 - (add % 11);\n\n if (rev === 10 || rev === 11) {\n rev = 0;\n }\n\n if (rev !== +cpf.charAt(10)) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Formata um CNPJ.\n * @param cnpj O CNPJ a ser formatado.\n * @param pad Se `true`, o CNPJ será preenchido com zeros à esquerda.\n * @returns O CNPJ formatado.\n * @example\n * DocumentUtil.formatCnpj('00123123000112'); // Retorna `00.123.123/0001-12`.\n * DocumentUtil.formatCnpj('123123000112', true); // Retorna `00.123.123/0001-12`.\n */\n public static formatCnpj(cnpj: string, pad?: boolean): string {\n let digits = NumberUtil.onlyNumbers(cnpj);\n if (pad) {\n digits = digits.padStart(14, '0');\n }\n const DOT_INDEXES = [1, 4];\n const SLASH_INDEXES = [7];\n const HYPHEN_INDEXES = [11];\n\n return digits\n .slice(0, 14)\n .split('')\n .reduce((acc, digit, index) => {\n const result = `${acc}${digit}`;\n if (!this._isLastChar(index, digits)) {\n if (DOT_INDEXES.includes(index)) return `${result}.`;\n if (SLASH_INDEXES.includes(index)) return `${result}/`;\n if (HYPHEN_INDEXES.includes(index)) return `${result}-`;\n }\n return result;\n }, '');\n }\n\n /**\n * Verifica se um CNPJ é válido.\n * @param cnpj O CNPJ a ser verificado.\n * @returns `true` se o CNPJ for válido, caso contrário, `false`.\n * @example\n * DocumentUtil.isValidCnpj('12.345.678/0001-09'); // Retorna `true`.\n * DocumentUtil.isValidCnpj('12345678000109'); // Retorna `true`.\n * DocumentUtil.isValidCnpj('1234567800010'); // Retorna `false`.\n * DocumentUtil.isValidCnpj('123456780001090'); // Retorna `false`.\n */\n public static isValidCnpj(cnpj: string): boolean {\n if (StringUtil.isEmpty(cnpj)) {\n return false;\n }\n\n cnpj = NumberUtil.onlyNumbers(cnpj);\n\n if (\n StringUtil.isEmpty(cnpj) ||\n cnpj.length !== 14 ||\n cnpj === '00000000000000' ||\n cnpj === '11111111111111' ||\n cnpj === '22222222222222' ||\n cnpj === '33333333333333' ||\n cnpj === '44444444444444' ||\n cnpj === '55555555555555' ||\n cnpj === '66666666666666' ||\n cnpj === '77777777777777' ||\n cnpj === '88888888888888' ||\n cnpj === '99999999999999'\n ) {\n return false;\n }\n\n let length: number = cnpj.length - 2;\n let numbers = cnpj.substring(0, length);\n const digits = cnpj.substring(length);\n let sum: number = 0;\n let pos: number = length - 7;\n\n for (let i: number = length; i >= 1; i--) {\n sum += +numbers.charAt(length - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n let resultado: number = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n if (resultado !== +digits.charAt(0)) {\n return false;\n }\n\n length = length + 1;\n numbers = cnpj.substring(0, length);\n sum = 0;\n pos = length - 7;\n for (let i: number = length; i >= 1; i--) {\n sum += +numbers.charAt(length - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n resultado = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n\n if (resultado !== +digits.charAt(1)) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Formata um CEP.\n * @param cep O CEP a ser formatado.\n * @returns O CEP formatado.\n * @example\n * DocumentUtil.formatCep('12345678'); // Retorna `12345-678`.\n * DocumentUtil.formatCep('12345-678'); // Retorna `12345-678`.\n */\n public static formatCep(cep: string): string {\n if (StringUtil.isEmpty(cep)) {\n return '';\n }\n\n cep = NumberUtil.onlyNumbers(cep);\n if (cep.length !== 8) {\n return cep;\n }\n\n return `${cep.slice(0, 5)}-${cep.slice(5)}`;\n }\n\n /**\n * Verifica se um CEP é válido.\n * @param cep O CEP a ser verificado.\n * @returns `true` se o CEP for válido, caso contrário, `false`.\n * @example\n * DocumentUtil.isValidCep('12345-678'); // Retorna `true`.\n * DocumentUtil.isValidCep('12345678'); // Retorna `true`.\n * DocumentUtil.isValidCep('1234567'); // Retorna `false`.\n * DocumentUtil.isValidCep('123456789'); // Retorna `false`.\n */\n public static isValidCep(cep: string): boolean {\n if (StringUtil.isEmpty(cep) || NumberUtil.onlyNumbers(cep).length !== 8) {\n return false;\n }\n return true;\n }\n\n /**\n * Formata a inscrição estadual (IE) conforme o estado (UF) informado.\n *\n * Aplica a máscara correta de acordo com o estado e o número da inscrição estadual fornecido,\n * removendo quaisquer caracteres não numéricos e inserindo os separadores (como ponto, hífen, etc.)\n * conforme o padrão oficial da IE para aquele estado.\n *\n * Se o valor da IE for \"ISENTO\" (ignorando espaços e case), ele será retornado como está.\n *\n * @param uf - A sigla do estado (UF) para o qual a IE deve ser formatada (ex: 'SP', 'MG').\n * @param stateRegistration - O valor da inscrição estadual (IE), podendo conter ou não máscara.\n * @returns A inscrição estadual formatada com a máscara apropriada ou o valor original em caso de isenção ou erro.\n * @example\n * DocumentUtil.formatIE('SP', '123456789012'); // Retorna '123.456.789.012'\n * DocumentUtil.formatIE('MG', '1234567890123'); // Retorna '123.456.789/0123'\n */\n public static formatIE(uf: tUFState, stateRegistration: string): string {\n if (StringUtil.isEmpty(uf) || StringUtil.isEmpty(stateRegistration)) {\n return stateRegistration;\n }\n\n const trimmed = stateRegistration.trim().toUpperCase();\n if (trimmed === 'ISENTO') {\n return trimmed;\n }\n\n const digits = stateRegistration.replace(/[^a-zA-Z0-9]/g, '');\n const mask = this._getIeMask(uf, digits);\n const maskedLength = mask.length;\n const digitsLength = digits.length;\n\n let result = '';\n let j = maskedLength;\n\n for (let i = maskedLength - 1; i >= 0; i--) {\n const maskChar = mask[i];\n if (maskChar === '*') {\n if (j <= maskedLength - digitsLength) {\n result = '0' + result;\n } else {\n result = digits[j - (maskedLength - digitsLength) - 1] + result;\n }\n j--;\n } else {\n result = maskChar + result;\n }\n }\n\n return result;\n }\n\n /**\n * Retorna a máscara apropriada para a inscrição estadual (IE) com base na sigla do estado (UF)\n * e no número de dígitos da inscrição (útil para estados com variação de formato).\n *\n * A máscara é composta por asteriscos (*) e separadores (ponto, hífen, barra), que definem a posição\n * de cada caractere numérico na formatação final.\n *\n * @param uf - A sigla do estado (UF) para o qual a máscara da IE deve ser retornada.\n * @param digits - A string contendo apenas os dígitos da inscrição estadual, sem formatação.\n * @returns A máscara de formatação adequada para o estado informado.\n *\n * @example\n * DocumentUtil._getIeMask('SP', '123456789012'); // Retorna '***.***.***.***'\n */\n private static _getIeMask(uf: tUFState, digits: string): string {\n const len = digits.length;\n\n switch (uf) {\n case 'AC':\n return '**.***.***/***-**';\n case 'AL':\n return '*********';\n case 'AP':\n return '*********';\n case 'AM':\n return '**.***.***-*';\n case 'BA':\n return '*******-**';\n case 'CE':\n return '********-*';\n case 'DF':\n return '***********-**';\n case 'ES':\n return '********-*';\n case 'GO':\n return '**.***.***-*';\n case 'MA':\n return '*********';\n case 'MT':\n return '**********-*';\n case 'MS':\n return '**.***.***-*';\n case 'MG':\n return '***.***.***/****';\n case 'PA':\n return '**-******-*';\n case 'PB':\n return '********-*';\n case 'PI':\n return '********-*';\n case 'PR':\n return '***.*****-**';\n case 'RJ':\n return '**.***.**-*';\n case 'RS':\n return '***/*******';\n case 'RR':\n return '********-*';\n case 'SC':\n return '***.***.***';\n case 'SE':\n return '**.***.***-*';\n case 'PE':\n return len > 9 ? '**.*.***.*******-*' : '*******-**';\n case 'RN':\n return len > 9 ? '**.*.***.***-*' : '**.***.***-*';\n case 'RO':\n return len > 13 ? '*************-*' : '***.*****-*';\n case 'SP':\n return len > 1 && digits[0].toUpperCase() === 'P'\n ? '*-********.*/***'\n : '***.***.***.***';\n case 'TO':\n return len === 11 ? '**.**.******-*' : '**.***.***-*';\n default:\n return '*'.repeat(len);\n }\n }\n\n /**\n * Verifica se um número de inscrição estadual é válido para o estado especificado.\n * @param state O estado para o qual a inscrição estadual será validada.\n * @param stateRegistration O número de inscrição estadual a ser verificado.\n * @param options Opções adicionais para a validação, como `adjustSize` e `displayCorrectDigit`.\n * - `adjustSize`: Se `true`, ajusta o size da inscrição estadual.\n * - `displayCorrectDigit`: Se `true`, exibe o dígito verificador correto.\n * @returns `true` se a inscrição estadual for válida, caso contrário, `false`.\n * @example\n * DocumentUtil.isValidIE('GO', '113687214'); // Retorna `{ isValid: true, message: '' }`.\n * DocumentUtil.isValidIE('AC', '0185402241495'); // Retorna `{ isValid: false, message: 'Inscrição estadual inválida para AC. Motivo: Dígito verificador inválido.' }`.\n */\n public static isValidIE(\n uf: tUFState,\n stateRegistration: string,\n options?: { adjustSize?: boolean; displayCorrectDigit?: boolean },\n ): {\n isValid: boolean;\n message?: string;\n correctDigit?: string;\n } {\n const cIgnorarChar: string = './-';\n\n const strIsNumber = (str: string) => {\n return /^\\d+$/.test(str);\n };\n\n const charIsNum = (str: string) => {\n return /^[0-9]$/.test(str);\n };\n\n const strToIntDef = (str: string, def: number) => {\n if (StringUtil.isEmpty(str)) {\n return def;\n }\n const numberish = parseInt(str);\n return isNaN(numberish) ? def : numberish;\n };\n\n const padLeft = (str: string, length: number, padChar = ''): string => {\n if (StringUtil.isEmpty(padChar)) {\n padChar = ' ';\n }\n return str.padStart(length, padChar);\n };\n\n const clearDocument = (str: string) => {\n let result = '';\n for (const char of str) {\n if (!cIgnorarChar.includes(char)) {\n result += char.toUpperCase();\n }\n }\n return result.trim();\n };\n\n const result = (isValid: boolean, message: string = '') => {\n return {\n isValid,\n message,\n };\n };\n\n const C0_9: string = '0-9';\n const positionWeights: number[][] = [\n /* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */\n /* 01 */ [0, 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5, 6],\n /* 02 */ [0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5],\n /* 03 */ [2, 0, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5, 6],\n /* 04 */ [0, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0],\n /* 05 */ [0, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0],\n /* 06 */ [0, 2, 3, 4, 5, 6, 7, 0, 0, 8, 9, 0, 0, 0],\n /* 07 */ [0, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5],\n /* 08 */ [0, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 8],\n /* 09 */ [0, 0, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7],\n /* 10 */ [0, 0, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 0],\n /* 11 */ [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 2, 3, 0],\n /* 12 */ [0, 0, 0, 0, 10, 8, 7, 6, 5, 4, 3, 1, 0, 0],\n /* 13 */ [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 3, 0, 0],\n /* 14 */ [0, 0, 2, 3, 4, 5, 6, 7, 8, 3, 4, 5, 6, 7],\n ];\n\n let vDigits: string[] = ['', '', '', '', '', '', '', '', '', '', '', '', '', ''];\n let xROT: string = 'E';\n let yROT: string = '';\n let size: number = 0;\n let factorF: number = 0;\n let factorG: number = 0;\n let index: number;\n let xMD: number = 11;\n let xTP: number = 1;\n let yMD: number = 0;\n let yTP: number = 0;\n let checkDigit: number;\n let dvX: number;\n let dvY: number;\n let sum: number;\n let sumQ: number;\n let nD: number;\n let weight: number;\n let valid: boolean;\n let step: string;\n let digit: string;\n let lPrefixo: string;\n\n let documentIE: string = clearDocument(stateRegistration);\n let errorMessage: string = '';\n let calculatedDigit: string = '';\n\n if (StringUtil.isEmpty(documentIE) || documentIE.trim().toUpperCase() === 'ISENTO') {\n return result(true);\n }\n\n if (StringUtil.isEmpty(documentIE)) {\n errorMessage = 'Inscrição estadual não pode ser vazio.';\n return result(false, errorMessage);\n }\n\n if (StringUtil.isEmpty(uf)) {\n errorMessage = 'Informe a UF para que seja realizada a validação';\n return result(false, errorMessage);\n }\n\n /**\n * Somente digitos ou letra P na primeira posição\n * P é usado pela inscrição estadual de produtor rural de SP\n */\n if (\n !strIsNumber(documentIE.substring(1)) || // copia do 2 até o fim\n (!charIsNum(documentIE[0]) && documentIE[0] !== 'P') // primeiro char não é número nem 'P'\n ) {\n errorMessage = 'Caracteres inválidos na inscrição estadual';\n return result(false, errorMessage);\n }\n\n if (uf === 'AC') {\n if (documentIE.length === 9) {\n size = 9;\n vDigits = ['DVX', C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, '1', '0', '', '', '', '', ''];\n } else {\n size = 13;\n xTP = 2;\n yROT = 'E';\n yMD = 11;\n yTP = 1;\n vDigits = [\n 'DVY',\n 'DVX',\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n '1',\n '0',\n '',\n ];\n }\n }\n\n if (uf === 'AL') {\n size = 9;\n xROT = 'BD';\n vDigits = ['DVX', C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, '4', '2', '', '', '', '', ''];\n }\n\n if (uf === 'AP') {\n size = 9;\n xROT = 'CE';\n vDigits = ['DVX', C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, '3', '0', '', '', '', '', ''];\n\n if (documentIE >= '030170010' && documentIE <= '030190229') {\n factorF = 1;\n } else if (documentIE >= '030190230') {\n xROT = 'E';\n }\n }\n\n if (uf === 'AM') {\n size = 9;\n vDigits = ['DVX', C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, '', '', '', '', ''];\n }\n\n if (uf === 'BA') {\n if (documentIE.length < 9) {\n documentIE = padLeft(documentIE, 9, '0');\n }\n\n size = 9;\n xTP = 2;\n yTP = 3;\n yROT = 'E';\n vDigits = ['DVX', 'DVY', C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, '', '', '', '', ''];\n\n // Delphi é 1-based, JS é 0-based\n if ('0123458'.includes(documentIE[1])) {\n xMD = 10;\n yMD = 10;\n } else {\n xMD = 11;\n yMD = 11;\n }\n }\n\n if (uf === 'CE') {\n size = 9;\n vDigits = ['DVX', C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, '0', '', '', '', '', ''];\n }\n\n if (uf === 'DF') {\n size = 13;\n xTP = 2;\n yROT = 'E';\n yMD = 11;\n yTP = 1;\n vDigits = [\n 'DVY',\n 'DVX',\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n '7,8',\n '0',\n '',\n ];\n }\n\n if (uf === 'ES') {\n size = 9;\n vDigits = ['DVX', C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, '', '', '', '', ''];\n }\n\n if (uf === 'GO') {\n size = 9;\n vDigits = ['DVX', C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, '1,2', '', '', '', '', ''];\n\n // Delphi é 1-based, JS é 0-based\n lPrefixo = documentIE[0] + documentIE[1];\n\n const prefixoValido = [10, 11, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29];\n if (!prefixoValido.includes(parseInt(lPrefixo))) {\n errorMessage = 'Prefixo IE Inválido 10 ou 11 / 20 a 29';\n }\n\n if (documentIE >= '101031050' && documentIE <= '101199979') {\n factorG = 1;\n }\n }\n\n if (uf === 'MA') {\n size = 9;\n vDigits = ['DVX', C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, '2', '1', '', '', '', '', ''];\n }\n\n if (uf === 'MT') {\n if (documentIE.length === 9) {\n documentIE = padLeft(documentIE, 11, '0');\n }\n\n size = 11;\n vDigits = [\n 'DVX',\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n '',\n '',\n '',\n ];\n }\n\n if (uf === 'MS') {\n size = 9;\n vDigits = ['DVX', C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, '8', '2', '', '', '', '', ''];\n }\n\n if (uf === 'MG') {\n size = 13;\n xROT = 'AE';\n xMD = 10;\n xTP = 10;\n yROT = 'E';\n yMD = 11;\n yTP = 11;\n vDigits = [\n 'DVY',\n 'DVX',\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n '',\n ];\n }\n\n if (uf === 'PA') {\n size = 9;\n vDigits = ['DVX', C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, '5', '1,7', '', '', '', '', ''];\n }\n\n if (uf === 'PB') {\n size = 9;\n vDigits = ['DVX', C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, '6', '1', '', '', '', '', ''];\n }\n\n if (uf === 'PR') {\n size = 10;\n xTP = 9;\n yROT = 'E';\n yMD = 11;\n yTP = 8;\n vDigits = [\n 'DVY',\n 'DVX',\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n '',\n '',\n '',\n '',\n ];\n }\n\n if (uf === 'PE') {\n if (documentIE.length === 14) {\n // Antigo CACEPE\n size = 14;\n xTP = 7;\n factorF = 1;\n vDigits = [\n 'DVX',\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n '1-9',\n '8',\n '1',\n ];\n } else {\n size = 9;\n xTP = 14;\n yROT = 'E';\n yMD = 11;\n yTP = 7;\n vDigits = [\n 'DVY',\n 'DVX',\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n '',\n '',\n '',\n '',\n '',\n ];\n }\n }\n\n if (uf === 'PI') {\n size = 9;\n vDigits = ['DVX', C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, '9', '1', '', '', '', '', ''];\n }\n\n if (uf === 'RJ') {\n size = 8;\n xTP = 8;\n vDigits = [\n 'DVX',\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n '1,7,8,9',\n '',\n '',\n '',\n '',\n '',\n '',\n ];\n }\n\n if (uf === 'RN') {\n if (documentIE.length === 9) {\n size = 9;\n xROT = 'BD';\n vDigits = ['DVX', C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, '0', '2', '', '', '', '', ''];\n } else {\n size = 10;\n xROT = 'BD';\n xTP = 11;\n vDigits = [\n 'DVX',\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n '0',\n '2',\n '',\n '',\n '',\n '',\n ];\n }\n }\n\n if (uf === 'RS') {\n size = 10;\n vDigits = ['DVX', C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, '', '', '', ''];\n }\n\n if (uf === 'RO') {\n factorF = 1;\n\n if (documentIE.length === 9) {\n size = 9;\n xTP = 4;\n vDigits = [\n 'DVX',\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n '1-9',\n '',\n '',\n '',\n '',\n '',\n ];\n } else {\n size = 14;\n vDigits = [\n 'DVX',\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n ];\n }\n }\n\n if (uf === 'RR') {\n size = 9;\n xROT = 'D';\n xMD = 9;\n xTP = 5;\n vDigits = ['DVX', C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, '4', '2', '', '', '', '', ''];\n }\n\n if (uf === 'SC' || uf === 'SE') {\n size = 9;\n vDigits = ['DVX', C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, C0_9, '', '', '', '', ''];\n }\n\n if (uf === 'SP') {\n xROT = 'D';\n xTP = 12;\n\n // Delphi é 1-based, JS é 0-based\n if (documentIE[0] === 'P') {\n size = 13;\n vDigits = [\n C0_9,\n C0_9,\n C0_9,\n 'DVX',\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n 'P',\n '',\n ];\n } else {\n size = 12;\n yROT = 'D';\n yMD = 11;\n yTP = 13;\n vDigits = [\n 'DVY',\n C0_9,\n C0_9,\n 'DVX',\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n '',\n '',\n ];\n }\n }\n\n if (uf === 'TO') {\n if (documentIE.length === 11) {\n size = 11;\n xTP = 6;\n vDigits = [\n 'DVX',\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n '1,2,3,9',\n '0,9',\n '9',\n '2',\n '',\n '',\n '',\n ];\n } else {\n // size = 10;\n // vDigits = ['DVX',C0_9,C0_9,C0_9,C0_9,C0_9,C0_9,C0_9,C0_9,'0-4','','','',''];\n size = 9;\n vDigits = [\n 'DVX',\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n C0_9,\n '',\n '',\n '',\n '',\n '',\n ];\n }\n }\n\n // Verificando se o size Total está correto\n if (options?.adjustSize) {\n documentIE = padLeft(documentIE, size, '0');\n }\n\n valid = size > 0 && documentIE.length === size;\n if (!valid) {\n errorMessage = `size inválido: Esperado ${size} caracteres, mas foram digitados ${size > documentIE.length ? 'somente ' : ''} ${documentIE.length} caracteres.`;\n }\n\n // Verificando os digitos nas posições são permitidos\n documentIE = padLeft(documentIE, 14);\n dvX = 0;\n dvY = 0;\n index = 13;\n\n while (valid && index >= 0) {\n // Ver se esse 14 está correto aqui pois o Delphi é 1-based, JS é 0-based\n digit = documentIE[13 - index];\n\n if (vDigits[index] === '') {\n valid = digit === ' ';\n } else if (\n vDigits[index] === 'DVX' ||\n vDigits[index] === 'DVY' ||\n vDigits[index] === C0_9\n ) {\n valid = charIsNum(digit);\n\n if (vDigits[index] === 'DVX') {\n dvX = strToIntDef(digit, 0);\n } else {\n if (vDigits[index] === 'DVY') {\n dvY = strToIntDef(digit, 0);\n }\n }\n } else if (vDigits[index].includes(',')) {\n // Ex: '2,5,7,8' Apenas os da lista\n valid = vDigits[index].split(',').includes(digit);\n } else if (vDigits[index].includes('-')) {\n const [start, end] = vDigits[index].split('-');\n valid = digit >= start && digit <= end;\n } else {\n valid = digit === vDigits[index];\n }\n\n if (!valid) {\n errorMessage = `Dígito ${13 - index - (13 - size)} deveria ser ${vDigits[index]}`;\n }\n\n index = index - 1;\n }\n\n step = 'X';\n while (valid && xTP > 0) {\n sum = 0;\n sumQ = 0;\n index = 14;\n\n while (valid && index > 0) {\n digit = documentIE[14 - index];\n\n if (charIsNum(digit)) {\n nD = strToIntDef(digit, 0);\n weight = nD * positionWeights[xTP - 1][index - 1];\n sum = sum + weight;\n\n if (xROT.includes('A')) {\n sumQ = sumQ + Math.trunc(weight / 10);\n }\n }\n\n index = index - 1;\n }\n\n if (xROT.includes('A')) {\n sum = sum + sumQ;\n } else if (xROT.includes('B')) {\n sum = sum * 10;\n } else if (xROT.includes('C')) {\n sum = sum + (5 + 4 * factorF);\n }\n\n // Calculando digito verificador\n checkDigit = Math.trunc(sum % xMD);\n if (xROT.includes('E')) {\n checkDigit = Math.trunc(xMD - checkDigit);\n }\n\n if (checkDigit === 10) {\n checkDigit = factorG; // Apenas GO modifica o FactorG para diferente de 0\n } else if (checkDigit === 11) {\n checkDigit = factorF;\n }\n\n if (step === 'X') {\n valid = dvX === checkDigit;\n } else {\n valid = dvY === checkDigit;\n }\n\n calculatedDigit = checkDigit.toString();\n if (!valid) {\n errorMessage = 'Dígito verificador inválido.';\n\n if (options?.displayCorrectDigit) {\n errorMessage = errorMessage + '.. Calculado: ' + calculatedDigit;\n }\n }\n\n if (step === 'X') {\n step = 'Y';\n xROT = yROT;\n xMD = yMD;\n xTP = yTP;\n } else {\n break;\n }\n }\n\n documentIE = documentIE.trim();\n if (errorMessage !== '') {\n errorMessage = `Inscrição estadual inválida para ${StateUtil.stateName(uf, true)}. Motivo: ${errorMessage}`;\n }\n\n return result(valid, errorMessage);\n }\n}\n","export class EmailUtil {\n /**\n * Valida se um endereço de e-mail é sintaticamente correto e termina com um TLD conhecido.\n *\n * A validação ocorre em duas etapas:\n * 1. Verifica se o e-mail possui uma estrutura válida usando uma expressão regular.\n * 2. Verifica se o domínio termina com um dos TLDs permitidos (.com, .br, .org, etc).\n *\n * @param email - O e-mail a ser validado.\n * @returns `true` se o e-mail for válido, `false` caso contrário.\n * @example\n * EmailValidator.isValid(\"usuario@gmail.com\"); // true\n * EmailValidator.isValid(\"nome@empresa.com.br\"); // true\n * EmailValidator.isValid(\"invalido@localhost\"); // false\n * EmailValidator.isValid(\"sem-arroba.com\"); // false\n * EmailValidator.isValid(\"teste@dominio.invalido\"); // false\n */\n public static isValid(email: string): boolean {\n const regex: RegExp =\n /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)+$/;\n const tldRegex: RegExp = /\\.(org|com|br|net|pt|io|ru|uk|de|tk|info|nl|eu|it|au|fr|site)$/i;\n\n return regex.test(email) && tldRegex.test(email);\n }\n}\n","import { MediaMatcher } from '@angular/cdk/layout';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Directive, inject, OnDestroy, OnInit, PLATFORM_ID } from '@angular/core';\nimport { CssUtil } from '../../../utils/css.util';\n\n@Directive()\nexport abstract class MatSelectMediaTracker implements OnInit, OnDestroy {\n private readonly _mediaMatcher = inject(MediaMatcher);\n private readonly _platformId = inject(PLATFORM_ID);\n\n private _mobileQueryListenerFunc?: (event: MediaQueryListEvent) => void;\n\n protected mobileQuery: MediaQueryList | null = null;\n\n constructor() {}\n\n ngOnInit(): void {\n if (!isPlatformBrowser(this._platformId)) {\n return;\n }\n\n this.mobileQuery = this._mediaMatcher.matchMedia(\n `(max-width: ${CssUtil.BREAKPOINT_MOBILE_PX}px)`,\n );\n this._mobileQueryListenerFunc = () => this.onChangeMediaTracker();\n\n this.mobileQuery.addEventListener('change', this._mobileQueryListenerFunc);\n this.onChangeMediaTracker();\n }\n\n ngOnDestroy(): void {\n if (!isPlatformBrowser(this._platformId)) {\n return;\n }\n this.mobileQuery?.removeEventListener('change', this._mobileQueryListenerFunc!);\n }\n\n /** Método a ser implementado por subclasses. */\n public abstract onChangeMediaTracker(): void;\n}\n","/* eslint-disable @angular-eslint/no-output-rename */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectorRef,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControlName, NgModel } from '@angular/forms';\nimport { MatOption } from '@angular/material/core';\nimport { MatSelect } from '@angular/material/select';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { firstValueFrom, fromEvent, Observable } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map } from 'rxjs/operators';\nimport { BasePageModel } from '../../../base/models/base-page.model';\nimport { ObjectUtil } from '../../../utils';\nimport { MatSelectMediaTracker } from './mat-select-media-tracker';\nimport { MatSelectOptionsHelper } from './mat-select-options-helper';\n\n@Directive({\n selector: 'mat-select[gMatSelect]',\n exportAs: 'gMatSelect',\n})\nexport class MatSelectDirective<TOption>\n extends MatSelectMediaTracker\n implements OnInit, AfterViewInit, OnDestroy, OnChanges\n{\n private _destroyRef = inject(DestroyRef);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _router = inject(Router, { optional: true });\n private _activatedRoute = inject(ActivatedRoute, { optional: true });\n private _matSelect = inject(MatSelect);\n private _elementRef = inject(ElementRef);\n\n private _ngModel = inject(NgModel, { optional: true });\n private _formControlName = inject(FormControlName, { optional: true });\n\n private _lastSourceLen: number = 0;\n private _currentEl: HTMLElement | null = null;\n private _clickableEl: HTMLElement | null = null;\n private _afterClickFunc: any;\n\n private _isFirstLoading: boolean = false;\n private _pageNumber: number = 0;\n private _hasMoreRow: boolean = true;\n private _searchValue: string = '';\n private _htmlScrollTop: number = 0;\n private _htmlScrollLeft: number = 0;\n\n private _listBoxEl: HTMLElement | null = null;\n private _searchBoxInputEl: HTMLInputElement | null = null;\n private _mainLoadingElement: HTMLElement | null = null;\n private _fromSearch: boolean = false;\n\n private _scrollInfFunc: any;\n\n private _scrollProcess: boolean = false;\n\n private _scrollInfLoadingEl: HTMLElement | null = null;\n private _noMoreResultEl: HTMLElement | null = null;\n\n private _loadingContainer: string = `\n <div class=\"ngx-mat-select-loading-container\">\n <div class=\"loadingio-spinner-ellipsis-ao6bq46b8nt\">\n <div class=\"ldio-it58uqzfg5\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n </div>\n </div>\n `;\n\n private _loadingScrollContainer: string = `\n <div class=\"loadingio-spinner-rolling-2vwh2v284qu\">\n <div class=\"ldio-o6nze7by54l\">\n <div></div>\n </div>\n </div>\n `;\n\n public filteredOptions: TOption[] = [];\n\n @Input({ transform: numberAttribute })\n debounceTime: number = 500;\n\n @Input({ transform: booleanAttribute })\n isStringArray: boolean = false;\n\n @Input({ transform: booleanAttribute })\n showSearch: boolean = true;\n\n @Input()\n title: string = '';\n\n @Input({ transform: numberAttribute })\n pageSize: number = 30;\n\n @Input()\n options: TOption[] = [];\n\n @Input({ required: true })\n propertyLabel: string | ((obj: TOption) => string) | null = null;\n\n @Input({ required: true })\n propertyValue: string | ((obj: TOption) => string) | null = null;\n\n @Input()\n fetchFn:\n | ((\n search: string,\n pageNumber: number,\n pageSize: number,\n ) => Observable<BasePageModel<TOption>>)\n | null = null;\n\n @Input()\n compareWithFn: ((a: TOption, b: TOption) => boolean) | null = null;\n\n @Input({ transform: booleanAttribute })\n infiniteScroll: boolean | null = null;\n\n @Input({ transform: booleanAttribute })\n inFirstLoadCallSearcher: boolean | null = null;\n\n @Input()\n inFirstLoadSearcherValue: string | null = null;\n\n /** Mobile */\n @Input({ transform: booleanAttribute })\n useMobileView: boolean = true;\n\n @Input()\n fragment: string = 'search';\n /** ------- */\n\n @Output('filteredOptionsChange') onFilteredOptionsChange = new EventEmitter<TOption[]>();\n\n private get _lazyLoad(): boolean {\n return !!this.fetchFn && typeof this.fetchFn === 'function';\n }\n\n constructor() {\n super();\n\n this._matSelect.openedChange\n .pipe(\n takeUntilDestroyed(this._destroyRef),\n filter((opened) => opened),\n )\n .subscribe(() => requestAnimationFrame(this._afterOpen.bind(this)));\n\n this._currentEl = this._elementRef.nativeElement as HTMLElement;\n\n setTimeout(() => this._handleValueChanges());\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n this._populateConfigs();\n\n this._matSelect._closedStream\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(this._afterClose.bind(this));\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => this._bindAfterClick(), 50);\n\n if (this.useMobileView) {\n this._changeMedia();\n }\n\n this._matSelect.compareWith = (o1: TOption, o2: TOption): boolean => {\n if (this.compareWithFn && typeof this.compareWithFn === 'function') {\n return this.compareWithFn(o1, o2);\n }\n\n if (this.getOptionValue) {\n const value1 = this.getOptionValue(o1);\n const value2 = this.getOptionValue(o2);\n\n if (typeof value1 === 'object' || typeof value2 === 'object') {\n return ObjectUtil.equals(value1, value2);\n }\n\n return value1 === value2;\n }\n\n return o1 === o2;\n };\n\n if (this.inFirstLoadCallSearcher && this.fetchFn && typeof this.fetchFn === 'function') {\n this._isFirstLoading = true;\n this._searchValue = this.inFirstLoadSearcherValue ?? '';\n try {\n this._onSearch()\n .then((res) => {\n this.options = res;\n this._isFirstLoading = false;\n this._searchValue = '';\n })\n .catch(() => {\n this._isFirstLoading = false;\n this._searchValue = '';\n })\n .finally(() => this._changeDetectorRef.markForCheck());\n } catch {\n this._isFirstLoading = false;\n this._searchValue = '';\n }\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['options'] && changes['options'].currentValue) {\n setTimeout(() => {\n if (changes['options'].firstChange) {\n this._populateConfigs();\n }\n this._init();\n });\n }\n }\n\n private _setloading(check: boolean): void {\n if (this._listBoxEl) {\n const icon = this._listBoxEl.querySelector(\n '.ngx-mat-select-search-box-icon',\n ) as HTMLElement;\n\n const loading = this._listBoxEl.querySelector(\n '.ngx-mat-select-loading-container',\n ) as HTMLElement;\n\n if (check) {\n icon.style.display = 'none';\n loading.style.display = 'flex';\n } else {\n icon.style.display = 'block';\n loading.style.display = 'none';\n }\n\n if (this._mainLoadingElement) {\n const el = this._getListMainContainerElement();\n if (check) {\n el.scrollTo({ top: 0 });\n this._mainLoadingElement.style.display = 'block';\n el.style.overflow = 'hidden';\n } else {\n setTimeout(() => {\n el.style.overflow = 'auto';\n this._mainLoadingElement!.style.display = 'none';\n }, 100);\n }\n }\n }\n }\n\n private _checkIsFirstLoading(): void {\n setTimeout(() => {\n if (this._isFirstLoading) {\n this._checkIsFirstLoading();\n } else {\n setTimeout(() => {\n this._setloading(false);\n this._changeSearchBoxEnableStatus(true);\n }, 250);\n }\n }, 150);\n }\n\n @HostListener('window:popstate', ['$event'])\n protected onPopState(_event: PopStateEvent): void {\n this._matSelect?.close();\n }\n\n protected onClick(_event: MouseEvent) {\n if (!this._matSelect.panelOpen && this.filteredOptions.length == 0) {\n this._addNullKeyToOption();\n\n setTimeout(() => {\n this._matSelect.open();\n this._cleanNullKeyToOption();\n });\n }\n }\n\n onChangeMediaTracker = () => {\n this._changeMedia();\n };\n\n private _populateConfigs(): void {\n if (this.infiniteScroll === undefined || this.infiniteScroll === null) {\n this.infiniteScroll = true;\n }\n if (this.inFirstLoadCallSearcher === undefined || this.inFirstLoadCallSearcher === null) {\n this.inFirstLoadCallSearcher = true;\n }\n if (this.inFirstLoadSearcherValue === undefined || this.inFirstLoadSearcherValue == null) {\n this.inFirstLoadSearcherValue = '';\n }\n this._clickableEl?.removeEventListener('click', this._afterClickFunc);\n }\n\n private _bindAfterClick(): void {\n this._afterClickFunc = this.onClick.bind(this);\n\n const parentEl =\n this._currentEl?.parentElement?.parentElement?.parentElement?.parentElement;\n\n if (parentEl?.tagName == 'MAT-FORM-FIELD') {\n this._clickableEl = parentEl;\n parentEl.addEventListener('click', this._afterClickFunc);\n } else {\n this._currentEl?.addEventListener('click', this._afterClickFunc);\n this._clickableEl = this._currentEl;\n }\n }\n\n private _handleValueChanges(): void {\n if (this._ngModel) {\n this._ngModel\n .valueChanges!.pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((val) => {\n if (val) {\n this._valueChangeDetected();\n }\n });\n } else if (this._formControlName) {\n this._formControlName\n .valueChanges!.pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((val) => {\n if (val) {\n this._valueChangeDetected();\n }\n });\n } else {\n this._matSelect.valueChange\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((val) => {\n if (val) {\n this._valueChangeDetected();\n }\n });\n }\n }\n\n private _valueChangeDetected(): void {\n if (!this._matSelect.panelOpen) {\n this._fromSearch = false;\n\n if (this._searchValue) {\n this._searchValue = '';\n }\n\n this._syncValueAndOptions();\n setTimeout(() => this._syncSourceAndOptions(this.filteredOptions));\n }\n }\n\n private _addLoadingElementForScrollInf(): void {\n const container = document.createElement('div');\n container.classList.add('ngx-mat-select-scroll-loading');\n container.innerHTML = this._loadingScrollContainer;\n\n this._scrollInfLoadingEl = container;\n this._listBoxEl?.parentElement?.appendChild(container);\n }\n\n protected changeScrollLoadingState(show: boolean): void {\n if (this._scrollInfLoadingEl) {\n if (show) {\n this._changeSearchBoxEnableStatus(false);\n this._scrollInfLoadingEl.style.display = 'block';\n } else {\n this._scrollInfLoadingEl.style.display = 'none';\n this._changeSearchBoxEnableStatus(true);\n }\n }\n }\n\n private _addMainLoading(): void {\n const el = document.createElement('div');\n el.classList.add('ngx-mat-select-main-loading');\n el.innerHTML = this._loadingScrollContainer;\n\n this._mainLoadingElement = el;\n this._listBoxEl?.appendChild(el);\n }\n\n protected scrollInfChange(event: Event): void {\n const el = event.target as HTMLElement;\n if (el) {\n const scrollTop = el.scrollTop;\n const scrollHeight = el.scrollHeight;\n const height = el.clientHeight;\n\n if (\n scrollTop + height + 20 >= scrollHeight &&\n !this._scrollProcess &&\n this._hasMoreRow\n ) {\n this._scrollProcess = true;\n\n const checkSourceLen = this.options.length || this._lastSourceLen;\n if (checkSourceLen < this.pageSize) {\n this._hasMoreRow = false;\n this._scrollProcess = false;\n } else {\n this.changeScrollLoadingState(true);\n\n setTimeout(() => {\n this._listBoxEl?.scrollTo({ top: this._listBoxEl?.scrollHeight });\n\n setTimeout(() => {\n this._pageNumber += 1;\n\n this._onSearch(true)\n .then((items) => {\n this._lastSourceLen = items.length;\n\n const len = items.length;\n this._hasMoreRow = len >= this.pageSize;\n this.changeScrollLoadingState(false);\n\n items.forEach((z) => {\n z['ngxPage'] = this._pageNumber;\n z.ngxHide = false;\n });\n\n const pagedSrc = [\n ...this.filteredOptions.filter(\n (w) =>\n !(w as any)['ngxPage'] ||\n (w as any)['ngxPage'] != this._pageNumber,\n ),\n ...items,\n ];\n\n this._syncSourceAndOptions(\n pagedSrc.filter((w) => !w.ngxHide),\n this._pageNumber * this.pageSize,\n pagedSrc,\n );\n\n this.filteredOptions = pagedSrc.filter((w) => !w.ngxHide);\n\n if (!this._hasMoreRow) {\n this._changeNoMoreResultState(true);\n this._scrollToNextItem();\n } else {\n this._scrollToNextItem();\n }\n\n this._scrollProcess = false;\n })\n .finally(() => this._changeDetectorRef.markForCheck());\n }, 350);\n }, 0);\n }\n }\n }\n }\n\n private _addScrollInf(): void {\n this._scrollInfFunc = this.scrollInfChange.bind(this);\n\n const el = this._getListMainContainerElement();\n el?.addEventListener('scroll', this._scrollInfFunc, false);\n\n this._addLoadingElementForScrollInf();\n }\n\n private _changeNoMoreResultState(show: boolean): void {\n if (this._noMoreResultEl) {\n if (!show) {\n this._noMoreResultEl.style.display = 'none';\n } else {\n this._noMoreResultEl.style.display = 'block';\n }\n }\n }\n\n private _scrollToNextItem(): void {\n const el = this._getListMainContainerElement();\n const optionHeight = this._matSelect?.options?.first._getHostElement().clientHeight ?? 34;\n this._scrollInList(el.scrollTop + optionHeight);\n }\n\n private _scrollInList(top: number): void {\n const el = this._getListMainContainerElement();\n if (el) {\n setTimeout(() => {\n el.scrollTo({\n top: top,\n behavior: 'smooth',\n });\n });\n }\n }\n\n private _getListMainContainerElement(): HTMLElement {\n let el: HTMLElement;\n if (this.mobileQuery?.matches && this.useMobileView) {\n el = this._listBoxEl!.parentElement!;\n } else {\n el = this._listBoxEl!;\n }\n return el;\n }\n\n private _addNoMoreResultElement(): void {\n if (this._listBoxEl) {\n const container = document.createElement('div');\n container.classList.add('ngx-mat-select-scroll-no-more');\n container.innerText = 'Não foram encontrados mais registros';\n this._noMoreResultEl = container;\n this._listBoxEl.appendChild(container);\n }\n }\n\n private _removeScrollInfEvent(): void {\n const el = this._getListMainContainerElement();\n if (el) {\n el.removeEventListener('scroll', this._scrollInfFunc);\n }\n }\n\n private _changeSearchBoxEnableStatus(enable: boolean): void {\n if (this._searchBoxInputEl) {\n if (enable) {\n this._searchBoxInputEl.removeAttribute('disabled');\n } else {\n this._searchBoxInputEl.setAttribute('disabled', 'disabled');\n }\n }\n }\n\n private _cleanNullKeyToOption(): void {\n const index = this.filteredOptions.findIndex((z) => (z as any).keyNull == 'null');\n if (index >= 0) {\n this.filteredOptions.splice(index, 1);\n if (this.filteredOptions.length == 0) {\n this._syncSourceAndOptions(this.filteredOptions);\n } else {\n this.onFilteredOptionsChange.emit(this.filteredOptions);\n }\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n private _addNullKeyToOption(): void {\n if (this._matSelect.options.length == 0) {\n this.filteredOptions.push({ keyNull: 'null' } as any);\n this.onFilteredOptionsChange.emit(this.filteredOptions);\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n private _moveCursorToEnd(el: any): void {\n if (typeof el.selectionStart == 'number') {\n el.selectionStart = el.selectionEnd = el.value.length;\n el.focus();\n } else if (typeof el.createTextRange != 'undefined') {\n el.focus();\n const range = el.createTextRange();\n range.collapse(false);\n range.select();\n }\n }\n\n private _handleBackDropAfterClose(): void {\n const backdropEl = document.querySelector(\n '.cdk-overlay-container.bottomToTop .cdk-overlay-backdrop',\n ) as HTMLElement;\n if (backdropEl) {\n backdropEl.style.display = 'none';\n backdropEl?.parentElement?.classList.remove('bottomToTop');\n }\n }\n\n private _handleOverflowAfterClose(): void {\n if (this.useMobileView) {\n if (this.mobileQuery?.matches) {\n document.documentElement.style.overflow = '';\n\n setTimeout(() => {\n document.documentElement.scrollTo(this._htmlScrollLeft, this._htmlScrollTop);\n }, 0);\n\n if (this.fragment) {\n this._router?.navigate([], {\n relativeTo: this._activatedRoute,\n fragment: undefined,\n });\n }\n }\n }\n }\n\n private _handleSelectionAfterClose(): void {\n this._addNullKeyToOption();\n }\n\n private _addSearchablePanelClass(parent: HTMLElement): void {\n if (this._listBoxEl) {\n if (!parent.classList.contains('ngx-mat-select-panel')) {\n parent.classList.add('ngx-mat-select-panel');\n }\n }\n }\n\n private _createHeaderElement(): HTMLElement {\n const searchElement = document.createElement('div');\n searchElement.innerHTML = `\n <input type='text'\n placeholder=\"Pesquisar...\"\n class=\"ngx-mat-select-search-box-input\"\n value=\"${this._searchValue}\" >\n <span class=\"material-symbols-rounded ngx-mat-select-search-box-icon\">search</span>\n ${this._loadingContainer}\n `;\n\n searchElement.addEventListener('keydown', (ev) => {\n if (ev?.keyCode === 32) {\n ev.stopImmediatePropagation();\n }\n });\n\n const inputContainerEl = document.createElement('div');\n inputContainerEl.classList.add('ngx-mat-select-search-box-wrap');\n inputContainerEl.appendChild(searchElement);\n searchElement.classList.add('ngx-mat-select-search-box-container');\n searchElement.classList.add('abs');\n\n if (!this.showSearch) {\n if (this.mobileQuery?.matches && this.useMobileView) {\n searchElement.style.display = 'none';\n } else {\n inputContainerEl.style.display = 'none';\n }\n }\n return inputContainerEl;\n }\n\n private _afterOpen(): void {\n if (!this.mobileQuery?.matches || !this.useMobileView) {\n this._removeOpacity();\n }\n\n this._listBoxEl = this._matSelect.panel.nativeElement as HTMLElement;\n\n setTimeout(() => {\n if (this.infiniteScroll) {\n this._addScrollInf();\n this._addNoMoreResultElement();\n }\n this._addMainLoading();\n if (this._isFirstLoading) {\n this._setloading(true);\n this._changeSearchBoxEnableStatus(false);\n this._checkIsFirstLoading();\n } else if (\n this._lazyLoad &&\n this.fetchFn &&\n typeof this.fetchFn === 'function' &&\n (!this.filteredOptions || this.filteredOptions.length === 0)\n ) {\n this._setloading(true);\n this._changeSearchBoxEnableStatus(false);\n this._onSearch()\n .then((res) => {\n this.options = res;\n })\n .finally(() => {\n this._setloading(false);\n this._changeSearchBoxEnableStatus(true);\n this._changeDetectorRef.markForCheck();\n });\n }\n }, 10);\n\n if (this._listBoxEl) {\n const inputContainerEl = this._createHeaderElement();\n this._listBoxEl.prepend(inputContainerEl);\n this._appendNotFoundHtmlTag();\n this._cleanNullKeyToOption();\n this._handleNotFoundLabel(this.filteredOptions);\n\n if (this.useMobileView) {\n this._afterOpenForMobile(inputContainerEl);\n }\n\n setTimeout(() => {\n if (this.showSearch) {\n const inputEl = inputContainerEl.querySelector('input')!;\n this._searchBoxInputEl = inputEl;\n\n if (!this.mobileQuery?.matches || !this.useMobileView) {\n inputEl.focus();\n this._moveCursorToEnd(inputEl);\n }\n\n this._handleObserverForInputValue(inputEl);\n }\n });\n }\n }\n\n private _afterClose(): void {\n this._handleBackDropAfterClose();\n this._handleOverflowAfterClose();\n this._handleSelectionAfterClose();\n this._changeMedia();\n\n if (this.infiniteScroll) {\n this._removeScrollInfEvent();\n this._hasMoreRow = true;\n }\n }\n\n private _handleObserverForInputValue(inputEl: HTMLInputElement): void {\n const terms$ = fromEvent<KeyboardEvent>(inputEl, 'keyup').pipe(\n map((event: KeyboardEvent) => {\n if (this._checkKeyCode(event)) {\n this._setloading(true);\n return event.target && (event.target as HTMLInputElement).value;\n } else {\n return event.target && (event.target as HTMLInputElement).value;\n }\n }),\n debounceTime(this._debounceTime()),\n distinctUntilChanged(),\n );\n if (terms$) {\n terms$\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((content: string | null) => {\n if (content !== undefined && content !== null) {\n this._searchValue = content;\n this._onSearch();\n }\n });\n }\n }\n\n private _allowedKeyCode(keyCode: number): boolean {\n return ![37, 38, 39, 40, 16].includes(keyCode);\n }\n\n private _debounceTime(): number {\n return this._lazyLoad ? this.debounceTime : 250;\n }\n\n private _checkKeyCode(event: KeyboardEvent) {\n if (this.deviceType() !== 'desktop') {\n return true;\n }\n if (event && event.keyCode !== null && event.keyCode !== undefined) {\n return this._allowedKeyCode(event.keyCode);\n }\n return true;\n }\n\n deviceType = () => {\n const ua = navigator.userAgent;\n if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {\n return 'tablet';\n } else if (\n /Mobile|Android|iP(hone|od)|IEMobile|BlackBerry|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(\n ua,\n )\n ) {\n return 'mobile';\n }\n return 'desktop';\n };\n\n private _init(): void {\n if (this.showSearch) {\n this._syncValueAndOptions();\n setTimeout(() => this._syncSourceAndOptions(this.filteredOptions), 50);\n } else {\n this.filteredOptions = this.options;\n }\n }\n\n private _syncValueAndOptions(mainSrc: unknown[] = [], maxCount = this.pageSize): void {\n let src = this._setMaxCount(mainSrc || this.options, maxCount);\n\n const val = this._matSelect.value;\n if (val) {\n if (Array.isArray(val)) {\n if (val.length > 0) {\n if (src.length > 0) {\n val.forEach((v) => {\n const item = src.find((w) => this._getExp(w, v));\n if (!item) {\n if (v && typeof v === 'object') {\n src.unshift(v);\n v['ngxHide'] = true;\n } else {\n const nItem = this.options.find((w) => this._getExp(w, v));\n if (nItem) {\n src.unshift(nItem);\n (nItem as any)['ngxHide'] = true;\n }\n }\n } else {\n item['ngxHide'] = false;\n }\n });\n } else {\n if (this.options.length == 0) {\n this.options = val;\n } else {\n val.forEach((item) => (item['ngxHide'] = true));\n }\n src = val;\n }\n }\n } else {\n if (src.length > 0) {\n const item = src.find((w) => this._getExp(w, val));\n if (!item) {\n if (val && typeof val === 'object') {\n val['ngxHide'] = true;\n src.unshift(val);\n } else {\n const nItem = this.options.find((w) => this._getExp(w, val));\n if (nItem) {\n (nItem as any)['ngxHide'] = true;\n src.unshift(nItem);\n }\n }\n } else {\n item['ngxHide'] = false;\n }\n } else if (val && typeof val === 'object') {\n if (this.options.length == 0) {\n this.options = [val];\n } else {\n val['ngxHide'] = true;\n }\n src = [val];\n }\n }\n }\n\n this.filteredOptions = src;\n this.onFilteredOptionsChange.emit(this.filteredOptions);\n this._changeDetectorRef.markForCheck();\n }\n\n private _syncSourceAndOptions(\n filteredOptions: any[],\n maxCount = this.pageSize,\n mainSrc = this.options,\n ): void {\n filteredOptions = this._setMaxCount(filteredOptions, maxCount);\n filteredOptions.forEach((item) => (item['ngxSelected'] = 0));\n\n this._matSelect.options.forEach((op) => (op['_element'].nativeElement.style.display = ''));\n\n const selectedOptionO = this._matSelect.selected;\n let selectedOptions: MatOption[] = [];\n\n if (selectedOptionO) {\n if (!Array.isArray(selectedOptionO)) {\n selectedOptions = [selectedOptionO];\n } else {\n selectedOptions = selectedOptionO as MatOption[];\n }\n\n const unshiftedlist: any[] = [];\n selectedOptions.forEach((option) => {\n let item = filteredOptions.find((z) => this._getExpForOption(z, option.value));\n if (!item) {\n if (option.value && typeof option.value === 'object') {\n item = option.value;\n } else {\n item = mainSrc.find((z) => this._getExpForOption(z, option.value));\n }\n\n if (item) {\n item['ngxSelected'] = 1;\n item['ngxHide'] = true;\n unshiftedlist.push(item);\n }\n } else if (item['ngxHide']) {\n if (this._fromSearch) {\n item['ngxHide'] = false;\n } else {\n item['ngxHide'] = true;\n }\n }\n });\n filteredOptions.unshift(...unshiftedlist);\n }\n\n const showNotFoundLabel = this._handleNotFoundLabel(filteredOptions);\n if (showNotFoundLabel) {\n this._toggleParentClass(this._matSelect.panel, 'remove-options', '.cdk-overlay-pane');\n } else {\n this._toggleParentClass(this._matSelect.panel, 'hide-options', '.cdk-overlay-pane');\n }\n\n this.filteredOptions = filteredOptions;\n this.onFilteredOptionsChange.emit(this.filteredOptions);\n this._changeDetectorRef.markForCheck();\n\n setTimeout(() => {\n this._hideOptions();\n\n setTimeout(() => {\n this._removeParentClass(this._matSelect.panel, 'hide-options', '.cdk-overlay-pane');\n this._removeParentClass(\n this._matSelect.panel,\n 'remove-options',\n '.cdk-overlay-pane',\n );\n }, 0);\n });\n }\n\n private _hideOptions(): void {\n this.filteredOptions\n .filter((z) => !!(z as any)['ngxHide'])\n .forEach((hide) => {\n let ops: MatOption[] = [];\n if (!this._matSelect.multiple) {\n ops = [this._matSelect.selected as MatOption];\n } else {\n ops = this._matSelect.selected as MatOption[];\n }\n\n const option = ops.find((z) => this._getExpForOption(hide, z.value));\n if (option) {\n const opEl = option['_element'].nativeElement as HTMLInputElement;\n opEl.style.display = 'none';\n }\n });\n }\n\n private _getPagedResult(src: any[]): any[] {\n let result = [];\n const startIndex = this.pageSize * (this._pageNumber - 1);\n let endIndex = this.pageSize * this._pageNumber;\n if (endIndex > src.length) {\n endIndex = src.length;\n }\n const len = src.length;\n if (startIndex <= len) {\n result = src.slice(startIndex, endIndex);\n }\n return result;\n }\n\n public refreshData(): Promise<any> {\n return new Promise<any>((resolve, reject) => {\n if (!this._matSelect.panelOpen) {\n this._isFirstLoading = true;\n } else {\n this._setloading(true);\n this._changeSearchBoxEnableStatus(false);\n }\n\n try {\n this._onSearch()\n .then((res) => {\n this._isFirstLoading = false;\n this._changeSearchBoxEnableStatus(true);\n this.options = res;\n resolve(res);\n })\n .catch(() => {\n this._isFirstLoading = false;\n this._changeSearchBoxEnableStatus(true);\n reject();\n })\n .finally(() => this._changeDetectorRef.markForCheck());\n } catch {\n this._isFirstLoading = false;\n this._changeSearchBoxEnableStatus(true);\n reject();\n }\n });\n }\n\n private async _onSearch(changePage: boolean = false): Promise<any[]> {\n this._fromSearch = true;\n\n if (!changePage) {\n if (this._listBoxEl) {\n this._listBoxEl.scrollTo({ top: 0 });\n }\n\n this._pageNumber = 0;\n this._hasMoreRow = true;\n this._changeNoMoreResultState(false);\n }\n\n try {\n this._addSearchablePanelClass(this._listBoxEl!);\n\n if (!this._lazyLoad) {\n let filteredOptions = [];\n if (this.isStringArray) {\n filteredOptions = this.options.filter((x) =>\n x?.toString().includes(this._searchValue),\n );\n } else {\n filteredOptions = this.options.filter((x) =>\n this.getOptionValue(x)?.toString().includes(this._searchValue),\n );\n }\n\n if (!changePage) {\n this._syncSourceAndOptions(filteredOptions);\n this._setloading(false);\n } else {\n filteredOptions = this._getPagedResult(filteredOptions);\n }\n\n return filteredOptions;\n } else {\n if (this.fetchFn && typeof this.fetchFn === 'function') {\n const page = await firstValueFrom(\n this.fetchFn(this._searchValue, this._pageNumber, this.pageSize),\n );\n\n if (!changePage) {\n this._syncSourceAndOptions(page?.content ?? []);\n this._setloading(false);\n }\n return page?.content ?? [];\n } else {\n this._setloading(false);\n return [];\n }\n }\n } catch {\n this._setloading(false);\n return [];\n }\n }\n\n private _appendNotFoundHtmlTag(): void {\n const el = document.createElement('div');\n el.classList.add('ngx-mat-select-not-found-container');\n el.innerHTML = 'Nenhum registro encontrado';\n this._listBoxEl?.appendChild(el);\n }\n\n private _handleNotFoundLabel(filteredOptions: any[]): boolean {\n const show =\n filteredOptions && filteredOptions.length > 0\n ? filteredOptions.filter((z) => !z['ngxHide']).length == 0\n : true;\n\n if (this._listBoxEl) {\n const el = this._listBoxEl.querySelector(\n '.ngx-mat-select-not-found-container',\n ) as HTMLElement;\n\n if (el) {\n if (show) {\n el.style.display = 'flex';\n } else {\n el.style.display = 'none';\n }\n }\n }\n return show;\n }\n\n private _setMaxCount(filteredOptions: any[], maxCount = this.pageSize): any[] {\n if (maxCount) {\n filteredOptions = filteredOptions.slice(0, this._getMaxSize(filteredOptions, maxCount));\n }\n return filteredOptions;\n }\n\n private _getExp(left: any, right: any): any {\n if (this.getOptionValue(right)) {\n return this.getOptionValue(left) == this.getOptionValue(right);\n } else {\n return this.getOptionValue(left) == right;\n }\n }\n\n private _getExpForOption(left: any, right: any): boolean {\n if (this.getOptionValue(left)) {\n if (this.getOptionValue(right)) {\n return this.getOptionValue(left) == this.getOptionValue(right);\n } else {\n return this.getOptionValue(left) == right;\n }\n } else {\n return left == right;\n }\n }\n\n private _getMaxSize(arr: any[], maximumCount: number): number {\n if (!arr) {\n return 0;\n }\n const length = arr.length;\n return length > maximumCount ? maximumCount : length;\n }\n\n private _changeMedia(): void {\n let classes = this._matSelect.panelClass?.toString().split(' ');\n if (!classes) {\n classes = [];\n }\n\n if (!classes.includes('ngx-mat-select-opacity')) {\n classes.push('ngx-mat-select-opacity');\n }\n\n if (this.mobileQuery?.matches && this.useMobileView) {\n const hasMyClass = classes.includes('ngx-mat-select-mobile');\n if (this._matSelect) {\n if (!hasMyClass) {\n classes.push('ngx-mat-select-mobile');\n }\n }\n } else {\n classes = classes.filter((z) => z !== 'ngx-mat-select-mobile');\n }\n if (classes) {\n this._matSelect.panelClass = classes.join(' ');\n }\n }\n\n private _addTitleForMobileView(spacer: HTMLElement): void {\n if (spacer && !this.showSearch) {\n const titleEl = document.createElement('div');\n titleEl.classList.add('ngx-mat-select-mobile-title');\n\n if (this.title) {\n titleEl.innerHTML = this.title;\n }\n\n if (document.documentElement.dir === 'rtl') {\n titleEl.style.right = '48px';\n } else {\n titleEl.style.left = '48px';\n }\n\n spacer.style.display = 'block';\n spacer.prepend(titleEl);\n }\n }\n\n private _removeOpacity(): void {\n setTimeout(() => this._listBoxEl?.classList.remove('ngx-mat-select-opacity'));\n }\n\n private _afterOpenForMobile(spacer: HTMLElement): void {\n this._htmlScrollTop = document.documentElement.scrollTop;\n this._htmlScrollLeft = document.documentElement.scrollLeft;\n const panel = this._matSelect.panel;\n const panelEl = panel.nativeElement as HTMLElement;\n const parentEl = panelEl.parentElement as HTMLElement;\n\n if (this.mobileQuery?.matches) {\n document.documentElement.style.overflow = 'hidden';\n panelEl.classList.remove('mat-select-panel');\n\n if (this.showSearch || this.title) {\n const listEl = document.querySelector('.ngx-mat-select-mobile') as HTMLElement;\n if (listEl) {\n listEl.style.paddingTop = '50px';\n }\n }\n\n this._addTitleForMobileView(spacer);\n\n setTimeout(() => this._removeOpacity(), 80);\n\n this._toggleParentClass(panel, 'ngx-mat-select-mobile-wrapper', '.cdk-overlay-pane');\n this._toggleParentClass(\n panel,\n 'ngx-mat-select-mobile-open-fullScreen',\n '.cdk-overlay-pane',\n );\n\n parentEl.style.overflowY = 'auto';\n parentEl.style.overflowX = 'hidden';\n\n const firstSelected = panelEl.querySelector('.mat-selected');\n\n setTimeout(() => {\n firstSelected?.scrollIntoView({ block: 'center', behavior: 'smooth' });\n }, 500);\n\n const iconAppend = spacer;\n const inputSearch = spacer.querySelector(\n '.mat-select-search-input',\n ) as HTMLInputElement;\n\n if (inputSearch) {\n inputSearch.style.padding = '0';\n }\n\n const btn = document.createElement('span');\n btn.classList.add('material-symbols-rounded');\n\n if (document.documentElement.dir === 'rtl') {\n btn.classList.add('arrow-right');\n btn.textContent = 'arrow_forward';\n } else {\n btn.classList.add('arrow-left');\n btn.textContent = 'arrow_back';\n }\n\n btn.onclick = (ev: MouseEvent) => {\n ev.stopImmediatePropagation();\n this._matSelect.close();\n };\n\n iconAppend.style.display = 'flex';\n iconAppend.style.alignItems = 'center';\n iconAppend.style.width = '100%';\n\n iconAppend?.prepend(btn);\n\n if (this.fragment) {\n this._router?.navigate([], {\n relativeTo: this._activatedRoute,\n fragment: this.fragment,\n });\n }\n\n spacer.style.position = 'fixed';\n setTimeout(() => (spacer.style.position = ''), 150);\n } else {\n if (!panelEl.classList.contains('mat-select-panel')) {\n (panel.nativeElement as HTMLElement).classList.add('mat-select-panel');\n }\n }\n }\n\n private _toggleParentClass(el: ElementRef, className: string, targetSelect: string): void {\n if (el?.nativeElement?.parentElement) {\n const parentEl = el.nativeElement.parentElement.closest(targetSelect) as HTMLElement;\n if (parentEl) {\n parentEl.classList.toggle(className, true);\n }\n }\n }\n\n private _removeParentClass(el: ElementRef, className: string, targetSelect: string): void {\n if (el?.nativeElement?.parentElement) {\n const parentEl = el.nativeElement.parentElement.closest(targetSelect) as HTMLElement;\n if (parentEl) {\n parentEl.classList.remove(className);\n }\n }\n }\n\n protected getOptionLabel(option: TOption): string {\n return MatSelectOptionsHelper.getOptionLabel<TOption>(option, this.propertyLabel);\n }\n\n protected getOptionValue(option: TOption): any {\n return MatSelectOptionsHelper.getOptionValue<TOption>(option, this.propertyValue);\n }\n\n public resetData(): void {\n this._pageNumber = 0;\n this._hasMoreRow = true;\n this.filteredOptions = [];\n this.options = [];\n }\n}\n","/* eslint-disable @angular-eslint/no-output-native */\n/* eslint-disable @angular-eslint/no-output-rename */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { Observable } from 'rxjs';\nimport { BasePageModel } from '../../base/models/base-page.model';\nimport { ArrayUtil } from '../../utils/array.util';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { ButtonComponent } from '../button/button.component';\nimport { HelpfulTipComponent } from '../helpful-tip/helpful-tip.component';\nimport { MatSelectOptionsHelper } from './shared/mat-select-options-helper';\nimport { MatSelectDirective } from './shared/mat-select.directive';\n\n@Component({\n selector: 'gipi-select',\n exportAs: 'gSelect',\n template: `\n @if (label) {\n <label\n class=\"g-select-label\"\n [attr.for]=\"_matFormFieldUniqueId\">\n {{ label }}\n @if (required) {\n <span>*</span>\n }\n @if (help) {\n <gipi-helpful-tip [tooltip]=\"help\" />\n }\n </label>\n }\n <mat-form-field\n #formFieldSelect\n class=\"g-select-form-field\"\n appearance=\"outline\"\n [attr.id]=\"_matFormFieldUniqueId\"\n [hintLabel]=\"hintLabel\">\n <mat-select\n [placeholder]=\"!!disabled ? '' : placeholder\"\n [multiple]=\"!!multiple\"\n [disabled]=\"!!disabled\"\n [required]=\"!!required\"\n gMatSelect\n #matSelect=\"gMatSelect\"\n [debounceTime]=\"debounceTime\"\n [infiniteScroll]=\"infiniteScroll\"\n [propertyLabel]=\"propertyLabel\"\n [propertyValue]=\"propertyValue\"\n [compareWithFn]=\"compareWithFn\"\n [pageSize]=\"pageSize\"\n [fetchFn]=\"fetchFn\"\n [options]=\"options\"\n [isStringArray]=\"isStringArray\"\n [showSearch]=\"showSearch\"\n [title]=\"title\"\n [inFirstLoadCallSearcher]=\"inFirstLoadCallSearcher\"\n [inFirstLoadSearcherValue]=\"inFirstLoadSearcherValue\"\n [useMobileView]=\"useMobileView\"\n [fragment]=\"fragment\"\n [(ngModel)]=\"model\"\n (keydown)=\"onInputKeydown($event)\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onChangeEvent.emit($event)\">\n @for (item of matSelect.filteredOptions; track item) {\n @if (!optionExcluded(item)) {\n <mat-option [value]=\"getOptionValue(item)\">\n {{ getOptionLabel(item) }}\n </mat-option>\n }\n }\n\n @if (hasMultipleSelected) {\n <mat-select-trigger>\n {{ firstSelectedLabel }}\n\n @if (additionalSelectedCount > 0) {\n <span class=\"g-select-additional\">\n {{ additionSelectedLabel }}\n </span>\n }\n </mat-select-trigger>\n }\n </mat-select>\n\n @if (showClearButton) {\n <gipi-button\n matSuffix\n icon=\"close\"\n variant=\"input\"\n class=\"g-select-clear-button\"\n [disabled]=\"!!disabled\"\n (click)=\"onHandleClear()\" />\n }\n </mat-form-field>\n `,\n styleUrl: './select.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-select',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: SelectComponent,\n multi: true,\n },\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatFormFieldModule,\n MatSelectModule,\n HelpfulTipComponent,\n ButtonComponent,\n MatSelectDirective,\n ],\n})\nexport class SelectComponent<TOption> implements OnChanges, ControlValueAccessor, Validator {\n @ViewChild('matSelect', { static: true })\n protected matSelect!: MatSelectDirective<TOption>;\n\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-select-');\n protected readonly _matFormFieldUniqueId: string =\n inject(_IdGenerator).getId('gipi-mat-form-field-');\n\n private _changeDetectorRef = inject(ChangeDetectorRef);\n\n private _model: TOption | TOption[] | null = null;\n protected set model(value: TOption | TOption[] | null) {\n this._model = value;\n this._onChange(value);\n\n this.onSelectionChange.emit(\n ObjectUtil.isEmpty(value) ? null : Array.isArray(value) ? value : [value],\n );\n }\n protected get model(): TOption | TOption[] | null {\n return this._model;\n }\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() label: string = '';\n @Input() placeholder: string = 'Selecionar';\n @Input() hintLabel: string = '';\n @Input() help: string = '';\n\n @Input({ transform: booleanAttribute })\n disabled: boolean = false;\n\n @Input({ transform: booleanAttribute })\n readonly: boolean = false;\n\n @Input({ transform: booleanAttribute })\n required: boolean = false;\n\n @Input({ transform: booleanAttribute })\n multiple: boolean = false;\n\n @Input({ transform: numberAttribute })\n debounceTime: number = 500;\n\n /** Se true, ativa carregamento contínuo ao rolar a lista */\n @Input({ transform: booleanAttribute })\n infiniteScroll: boolean = true;\n\n @Input({ required: true })\n propertyLabel: string | ((obj: TOption) => string) | null = null;\n\n @Input()\n propertyValue: string | ((obj: TOption) => string) | null = null;\n\n @Input()\n compareWithFn: ((a: TOption, b: TOption) => boolean) | null = null;\n\n @Input()\n optionsExclud: TOption[] = [];\n\n @Input({ transform: numberAttribute })\n pageSize: number = 30;\n\n @Input()\n fetchFn:\n | ((\n search: string,\n pageNumber: number,\n pageSize: number,\n ) => Observable<BasePageModel<TOption>>)\n | null = null;\n\n @Input()\n options: TOption[] = [];\n\n @Input({ transform: booleanAttribute })\n isStringArray: boolean = false;\n\n @Input({ transform: booleanAttribute })\n showSearch: boolean = true;\n\n @Input()\n title: string = '';\n\n /** Se true, a função de busca será chamada ao criar o componente */\n @Input({ transform: booleanAttribute })\n inFirstLoadCallSearcher: boolean = false;\n\n /** Valor inicial usado na primeira chamada de busca */\n @Input()\n inFirstLoadSearcherValue: string | null = null;\n\n // Mobile\n @Input({ transform: booleanAttribute })\n useMobileView: boolean = true;\n\n @Input()\n fragment: string = 'search';\n\n @Output('selectionChange') onSelectionChange = new EventEmitter<TOption | TOption[] | null>();\n\n protected get hasMultipleSelected(): boolean {\n return this.multiple && Array.isArray(this.model) && !ArrayUtil.isEmpty(this.model);\n }\n\n protected get firstSelectedLabel(): string {\n if (Array.isArray(this.model) && this.model.length > 0) {\n return this.getOptionLabel(this.model[0]);\n }\n return '';\n }\n\n protected get additionalSelectedCount(): number {\n return Array.isArray(this.model) && this.model.length > 1 ? this.model.length - 1 : 0;\n }\n\n protected get additionSelectedLabel(): string {\n const textOthers: string = this.additionalSelectedCount === 1 ? 'outro' : 'outros';\n return `(+${this.additionalSelectedCount} ${textOthers})`;\n }\n\n protected get showClearButton(): boolean {\n const isDisabled = !!this.disabled || !!this.readonly;\n const isEmptyModel = Array.isArray(this.model)\n ? ArrayUtil.isEmpty(this.model)\n : ObjectUtil.isEmpty(this.model);\n\n return !isEmptyModel && !isDisabled;\n }\n\n @Output('focus') readonly onFocusEvent = new EventEmitter<FocusEvent>();\n @Output('blur') readonly onBlurEvent = new EventEmitter<FocusEvent>();\n @Output('keydown') readonly onKeydownEvent = new EventEmitter<KeyboardEvent>();\n @Output('change') readonly onChangeEvent = new EventEmitter<Event>();\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['required']) {\n this._validatorChangeFn();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onChange: (value: TOption | TOption[] | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onTouched: () => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _validatorChangeFn: () => void = () => {};\n\n public writeValue(value: TOption | TOption[] | null): void {\n this.model = value;\n this._changeDetectorRef.markForCheck();\n }\n\n public registerOnChange(fn: (value: TOption | TOption[] | null) => void): void {\n this._onChange = (val) => {\n if (Array.isArray(val)) {\n fn(val.map((opt) => this.getOptionValue(opt)));\n } else if (!ObjectUtil.isEmpty(val)) {\n fn(this.getOptionValue(val));\n } else {\n fn(null);\n }\n };\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n public validate(control: AbstractControl<TOption | TOption[] | null>): ValidationErrors | null {\n if (this.required) {\n const value = control.value;\n if (this.multiple && Array.isArray(value) && value.length === 0) {\n return { required: true };\n }\n if (!value) {\n return { required: true };\n }\n }\n return null;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this._validatorChangeFn = fn;\n }\n\n protected onHandleClear(): void {\n if (this.disabled || this.readonly) {\n return;\n }\n\n this.model = this.multiple ? [] : null;\n\n if (this.matSelect) {\n this.matSelect.resetData();\n }\n\n this._onChange(this.model);\n this._onTouched();\n }\n\n protected getOptionLabel(option: TOption): string {\n return MatSelectOptionsHelper.getOptionLabel<TOption>(option, this.propertyLabel);\n }\n\n protected getOptionValue(option: TOption): any {\n return MatSelectOptionsHelper.getOptionValue<TOption>(option, this.propertyValue);\n }\n\n protected optionExcluded(option: TOption): boolean {\n return MatSelectOptionsHelper.optionExcluded<TOption>(option, this.optionsExclud);\n }\n\n protected onInputKeydown(event: KeyboardEvent): void {\n if (this.readonly || this.disabled) {\n return;\n }\n this.onKeydownEvent.emit(event);\n }\n\n protected onInputFocus(event: FocusEvent): void {\n if (this.disabled) {\n return;\n }\n this.onFocusEvent.emit(event);\n }\n\n protected onInputBlur(event: FocusEvent): void {\n if (this.disabled) {\n return;\n }\n this.onBlurEvent.emit(event);\n this._onTouched();\n }\n}\n","/* eslint-disable @angular-eslint/no-output-rename */\n/* eslint-disable @angular-eslint/no-output-native */\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n OnChanges,\n Output,\n signal,\n SimpleChanges,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { StringUtil } from '../../utils';\nimport { ArrayUtil } from '../../utils/array.util';\nimport { HelpfulTipComponent } from '../helpful-tip/helpful-tip.component';\nimport {\n iInternalOptions,\n tOptionInternalType,\n tOptionSelectEnum,\n} from './shared/option-select-enum.type';\n\n@Component({\n selector: 'gipi-select-enum',\n exportAs: 'gSelectEnum',\n template: `\n @if (label) {\n <label\n [attr.for]=\"_matFormFieldUniqueId\"\n class=\"g-select-enum-label\">\n {{ label }}\n @if (required) {\n <span>*</span>\n }\n @if (help) {\n <gipi-helpful-tip [tooltip]=\"help\" />\n }\n </label>\n }\n <mat-form-field\n #formFieldSelectEnum\n class=\"g-select-enum-form-field\"\n appearance=\"outline\"\n [attr.id]=\"_matFormFieldUniqueId\"\n [hintLabel]=\"hintLabel\">\n <mat-select\n [id]=\"_matSelectUniqueId\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [placeholder]=\"!!disabled ? '' : placeholder\"\n [disableRipple]=\"true\"\n [disableOptionCentering]=\"true\"\n [canSelectNullableOptions]=\"true\"\n [hideSingleSelectionIndicator]=\"true\"\n [multiple]=\"multiple\"\n [(ngModel)]=\"value\"\n (keydown)=\"onInputKeydown($event)\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onChangeEvent.emit($event)\">\n @if (!required && !multiple) {\n <mat-option>\n {{ nullValue }}\n </mat-option>\n }\n\n <mat-select-trigger class=\"g-select-enum-trigger\">\n @if (multiple) {\n {{ getFirstSelectedLabel() }}\n @if ((getSelectedLength() || 0) > 1) {\n <span class=\"g-select-enum-additional-selection\">\n (+{{ getSelectedLength() - 1 }}\n {{ getSelectedLength() === 2 ? 'outro' : 'outros' }})\n </span>\n }\n } @else {\n {{ getSelectedLabel(value) }}\n }\n </mat-select-trigger>\n\n @for (option of internalOptions(); track option) {\n @if (!isOptionExclud(option.key)) {\n <mat-option\n [value]=\"option.key\"\n [disabled]=\"isOptionDisabled(option.key)\">\n {{ option.value }}\n </mat-option>\n }\n }\n </mat-select>\n </mat-form-field>\n `,\n styleUrl: './select-enum.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[atrr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-select-enum',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectEnumComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: SelectEnumComponent,\n multi: true,\n },\n ],\n imports: [CommonModule, FormsModule, MatFormFieldModule, MatSelectModule, HelpfulTipComponent],\n})\nexport class SelectEnumComponent implements ControlValueAccessor, Validator, OnChanges {\n protected readonly _matFormFieldUniqueId: string = inject(_IdGenerator).getId(\n 'gipi-select-enum-form-field-control-',\n );\n protected readonly _matSelectUniqueId: string = inject(_IdGenerator).getId(\n 'gipi-select-enum-select-control-',\n );\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-select-enum-');\n\n private _changeDetectorRef = inject(ChangeDetectorRef);\n\n protected internalOptions = signal<iInternalOptions[]>([]);\n\n @Input() id: string = this._uniqueId;\n\n @Input() name: string = this._uniqueId;\n\n @Input() label: string = '';\n\n @Input() placeholder: string = 'Selecionar';\n\n @Input() nullValueLabel: string = '';\n\n @Input() help: string = '';\n\n @Input() hintLabel: string = '';\n\n @Input({ transform: booleanAttribute })\n disabled: boolean = false;\n\n @Input({ transform: booleanAttribute })\n required: boolean = false;\n\n @Input({ transform: booleanAttribute })\n multiple: boolean = false;\n\n @Input() labelPosition: 'after' | 'before' = 'after';\n\n @Input() align: 'row' | 'column' = 'row';\n\n private _options!: tOptionSelectEnum;\n @Input({ required: true })\n set options(value: tOptionSelectEnum) {\n this._options = value;\n if (!ArrayUtil.isEmpty(value)) {\n const listOptions: iInternalOptions[] = Object.keys(value).map((key) => ({\n key: key,\n value: value[key],\n }));\n\n this.internalOptions.set(listOptions);\n }\n\n if (this._value) {\n this._changeDetectorRef.markForCheck();\n this.writeValue(this._value);\n }\n }\n get options(): tOptionSelectEnum {\n return this._options;\n }\n\n private _optionsExclud: string[] = [];\n @Input()\n set optionsExclud(value: string[]) {\n this._optionsExclud = value;\n }\n get optionsExclud(): string[] {\n return this._optionsExclud;\n }\n\n private _optionsDisable: string[] = [];\n @Input()\n set optionsDisable(value: string[]) {\n this._optionsDisable = value;\n }\n get optionsDisable(): string[] {\n return this._optionsDisable;\n }\n\n private _value: tOptionInternalType = null;\n @Input()\n get value(): tOptionInternalType {\n return this._value;\n }\n set value(value: tOptionInternalType) {\n this._value = value;\n this._onChange(this._value);\n }\n\n @Output('focus') readonly onFocusEvent = new EventEmitter<FocusEvent>();\n @Output('blur') readonly onBlurEvent = new EventEmitter<FocusEvent>();\n @Output('keydown') readonly onKeydownEvent = new EventEmitter<KeyboardEvent>();\n @Output('change') readonly onChangeEvent = new EventEmitter<Event>();\n\n protected get nullValue(): string {\n if (StringUtil.isEmpty(this.nullValueLabel)) {\n return '-- Nenhum --';\n }\n return this.nullValueLabel;\n }\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['required']) {\n this._validatorChangeFn();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onChange: (value: tOptionInternalType) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onTouched: () => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _validatorChangeFn: () => void = () => {};\n\n public writeValue(value: tOptionInternalType): void {\n this.value = value;\n }\n\n public registerOnChange(fn: (value: tOptionInternalType) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n public validate(control: AbstractControl<tOptionInternalType>): ValidationErrors | null {\n if (!this.required) {\n return null;\n }\n const val = control.value;\n if (this.multiple) {\n return Array.isArray(val) && val.length ? null : { required: true };\n }\n return val ? null : { required: true };\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this._validatorChangeFn = fn;\n }\n\n protected isOptionDisabled(key: tOptionInternalType): boolean {\n if (ArrayUtil.isEmpty(this.optionsDisable)) {\n return false;\n }\n return this.optionsDisable.includes(String(key));\n }\n\n protected isOptionExclud(key: tOptionInternalType): boolean {\n if (ArrayUtil.isEmpty(this.optionsExclud)) {\n return false;\n }\n return this.optionsExclud.includes(String(key));\n }\n\n protected getSelectedLength(): number {\n if (!Array.isArray(this.value)) {\n return 0;\n }\n return this.value.length;\n }\n\n protected getFirstSelectedLabel(): string {\n if (!Array.isArray(this.value) || ArrayUtil.isEmpty(this.value)) {\n return '';\n }\n return this._getLabelByKey(this.value[0]) ?? '';\n }\n\n protected getSelectedLabel(value: tOptionInternalType): string {\n return this._getLabelByKey(value as string | number) ?? '';\n }\n\n private _getLabelByKey(key: string | number): string | undefined {\n return this.internalOptions()\n .find((opt) => opt.key === key)\n ?.value?.toString();\n }\n\n protected onInputKeydown(event: KeyboardEvent): void {\n if (this.disabled) {\n return;\n }\n this.onKeydownEvent.emit(event);\n }\n\n protected onInputFocus(event: FocusEvent): void {\n if (this.disabled) {\n return;\n }\n this.onFocusEvent.emit(event);\n }\n\n protected onInputBlur(event: FocusEvent): void {\n if (this.disabled) {\n return;\n }\n this.onBlurEvent.emit(event);\n this._onTouched();\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\nimport { MatCheckboxModule, type MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatSelect, MatSelectModule } from '@angular/material/select';\n\n@Component({\n selector: 'gipi-select-check-all',\n exportAs: 'gSelectCheckAll',\n template: `\n <mat-checkbox\n class=\"gipi-select-check-all-option\"\n [indeterminate]=\"isIndeterminate()\"\n [checked]=\"isChecked()\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleSelection($event)\">\n {{ label }}\n </mat-checkbox>\n `,\n styles: `\n .g-select-check-all {\n display: block;\n background: #ffffff !important;\n border-bottom: 1px solid #e0e1e2;\n position: sticky;\n top: 0;\n z-index: 1;\n\n .gipi-select-check-all-option {\n display: block;\n width: 100%;\n height: 100%;\n\n .mdc-form-field {\n align-items: stretch;\n width: 100%;\n height: 100%;\n\n > label {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n min-height: 48px;\n width: 100%;\n }\n }\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[atrr.id]': 'id',\n '[atrr.name]': 'name',\n class: 'g-select-check-all',\n },\n imports: [CommonModule, MatCheckboxModule, MatSelectModule],\n})\nexport class SelectCheckAllComponent {\n private readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-select-check-all-');\n\n private _matSelect = inject(MatSelect);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() label: string = 'Selecionar todos';\n\n constructor() {}\n\n protected isChecked(): boolean {\n if (!this._matSelect.options) {\n return false;\n }\n const options = this._matSelect.options.toArray();\n return options.length > 0 && options.every((opt) => opt.selected);\n }\n\n protected isIndeterminate(): boolean {\n if (!this._matSelect.options) {\n return false;\n }\n const options = this._matSelect.options.toArray();\n const selected = options.filter((opt) => opt.selected).length;\n return selected > 0 && selected < options.length;\n }\n\n protected toggleSelection(change: MatCheckboxChange): void {\n if (!this._matSelect.options) {\n return;\n }\n\n const options = this._matSelect.options.toArray();\n if (change.checked) {\n // Selecione todas as opções\n options.forEach((opt) => opt.select());\n } else {\n // Desmarcar todas as opções\n options.forEach((opt) => opt.deselect());\n }\n\n // Forçar atualização\n this._matSelect.writeValue(this._matSelect.value);\n this._matSelect.valueChange.emit(this._matSelect.value);\n }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport const rotateArrowBtnControl = trigger('rotateArrow', [\n state('arrow_left', style({\n transform: 'rotate(0deg)',\n })),\n state('arrow_right', style({\n transform: 'rotate(-180deg)',\n })),\n transition('arrow_left <=> arrow_right', [\n animate('200ms cubic-bezier(0.25, 0.8, 0.25, 1)')\n ])\n]);\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n signal,\n SimpleChanges,\n} from '@angular/core';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Router, RouterModule } from '@angular/router';\nimport { of, type Observable } from 'rxjs';\nimport { BaseMenuModel } from '../../base/models/base-menu.model';\nimport { StringUtil } from '../../utils/string.util';\nimport { IconComponent } from '../icon/icon.component';\nimport { rotateArrowBtnControl } from './shared/sidenav-arrow-animations';\n\n@Component({\n selector: 'gipi-sidenav-menu-item',\n exportAs: 'gSidenavMenuItem',\n template: `\n <a\n class=\"g-sidenav-menu-item\"\n [matTooltip]=\"!sidenavOpened ? (menuName | async) : ''\"\n [matTooltipPosition]=\"'right'\"\n [class.g-menu-item-active]=\"isMenuActive\"\n [attr.id]=\"menu.id\"\n [attr.name]=\"menu.id\"\n [routerLink]=\"menuRoute | async\"\n (click)=\"onSelect.emit(menu)\">\n <div class=\"g-sidenav-menu-item-content\">\n @if (menu.icon || menu.svgIcon) {\n <gipi-icon\n class=\"g-sidenav-menu-item-icon\"\n [fontSet]=\"'ROUNDED'\"\n [icon]=\"menu.icon || ''\"\n [svgIcon]=\"menu.svgIcon || ''\"\n [size]=\"22\" />\n }\n\n @if (sidenavOpened) {\n <span class=\"g-sidenav-menu-item-text\">\n {{ menuName | async }}\n </span>\n }\n </div>\n\n @if (sidenavOpened && menu.type === 'COLLAPSABLE') {\n <span class=\"material-symbols-rounded g-sidenav-menu-item-icon-collapsable\">\n chevron_right\n </span>\n }\n\n @if (menu.showTagNew && menu.type !== 'COLLAPSABLE') {\n <div\n class=\"g-sidenav-tag-new\"\n [class.g-sidenav-tag-new-closed]=\"!sidenavOpened\">\n Novo\n </div>\n }\n </a>\n `,\n styleUrl: './sidenav.component.scss',\n host: {\n '[attr.id]': 'id',\n '[name]': 'name',\n class: 'g-sidenav-menu-item',\n },\n imports: [CommonModule, RouterModule, MatTooltipModule, IconComponent],\n})\nexport class SidenavMenuItemComponent {\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-sidenav-menu-item-');\n private _router = inject(Router);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n @Input({ required: true }) menu!: BaseMenuModel;\n @Input({ required: true }) sidenavOpened: boolean = false;\n\n @Output() onSelect = new EventEmitter<BaseMenuModel>();\n\n protected get isMenuActive(): boolean {\n if (StringUtil.isEmpty(this.menu.route)) {\n return false;\n }\n return this._router.url.startsWith(this.menu.route);\n }\n\n protected get menuName(): Observable<string> {\n return of(\n this.menu.name.length <= 35 ? this.menu.name : this.menu.name.slice(0, 35) + '...',\n );\n }\n\n protected get menuRoute(): Observable<string[] | null> {\n if (this.menu.type === 'COLLAPSABLE' || !this.menu.route) {\n return of(null);\n }\n return of([this.menu.route]);\n }\n\n constructor() {}\n}\n\n@Component({\n selector: 'gipi-sidenav',\n exportAs: 'gSidenav',\n template: `\n <button\n id=\"btnToggleSidenav\"\n name=\"btnToggleSidenav\"\n class=\"g-sidenav-control\"\n (click)=\"onHandleToggleSidenav()\">\n <span\n class=\"material-symbols-rounded g-sidenav-control-icon\"\n [@rotateArrow]=\"arrowType()!\">\n chevron_left\n </span>\n {{ opened ? 'Retrair menu' : '' }}\n </button>\n\n <div class=\"g-sidenav-menu\">\n <div class=\"g-sidenav-menu-list-base g-sidenav-menu-list\">\n @if (opened && menuLevelName()) {\n <button\n id=\"btnMenuLevelGoBack\"\n name=\"btnMenuLevelGoBack\"\n class=\"g-sidenav-menu-item-level-back\"\n (click)=\"onHandleMenuLevelGoBack()\">\n <div class=\"g-sidenav-menu-item-content\">\n <span class=\"material-symbols-rounded g-sidenav-menu-level-back-icon\">\n arrow_left_alt\n </span>\n <span class=\"g-sidenav-menu-item-text\">\n {{ menuLevelName() }}\n </span>\n </div>\n </button>\n }\n @for (menu of menuListApplied(); track menu.name + menu.type) {\n <gipi-sidenav-menu-item\n [menu]=\"menu\"\n [sidenavOpened]=\"opened\"\n (onSelect)=\"onHandleMenuItemSelect($event)\" />\n }\n </div>\n @if (menuFooterList.length) {\n <div class=\"g-sidenav-menu-list-base g-sidenav-menu-list-footer\">\n @for (menu of menuFooterList; track menu.name + menu.type) {\n <gipi-sidenav-menu-item\n [menu]=\"menu\"\n [sidenavOpened]=\"opened\"\n (onSelect)=\"onHandleMenuItemSelect($event)\" />\n }\n </div>\n }\n </div>\n `,\n styleUrl: './sidenav.component.scss',\n changeDetection: ChangeDetectionStrategy.Default,\n host: {\n '[attr.id]': 'id',\n '[name]': 'name',\n class: 'g-sidenav',\n '[class.g-sidenav-opened]': 'opened',\n '[class.g-sidenav-closed]': '!opened',\n },\n animations: [rotateArrowBtnControl],\n imports: [CommonModule, SidenavMenuItemComponent],\n})\nexport class SidenavComponent implements OnChanges {\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-sidenav-');\n protected arrowType = signal<'arrow_left' | 'arrow_right'>('arrow_left');\n\n private _menuLevel = signal<BaseMenuModel[]>([]);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _router = inject(Router);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n private _opened: boolean = false;\n @Input() set opened(value: BooleanInput) {\n this._opened = booleanAttribute(value);\n this.arrowType.set(this.opened ? 'arrow_left' : 'arrow_right');\n }\n get opened(): boolean {\n return this._opened;\n }\n\n private _menuList: BaseMenuModel[] = [];\n @Input() set menuList(value: BaseMenuModel[]) {\n this._menuList = value;\n this._changeDetectorRef.detectChanges();\n }\n get menuList(): BaseMenuModel[] {\n return this._menuList;\n }\n\n private _menuFooterList: BaseMenuModel[] = [];\n @Input() set menuFooterList(value: BaseMenuModel[]) {\n this._menuFooterList = value;\n }\n get menuFooterList(): BaseMenuModel[] {\n return this._menuFooterList;\n }\n\n protected menuListApplied = computed(() => {\n const level = this._menuLevel();\n const menuApplied =\n level.length > 0 ? (level[level.length - 1].menuList ?? []) : this.menuList;\n return menuApplied;\n });\n\n protected menuLevelName = computed(() => {\n const level = this._menuLevel();\n const menuLevel = level.length > 0 ? level[level.length - 1] : null;\n return menuLevel\n ? menuLevel.name.length <= 35\n ? menuLevel.name\n : menuLevel.name.slice(0, 35) + '...'\n : '';\n });\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n const menuValue = changes['menuList'];\n if (menuValue && menuValue !== menuValue.previousValue) {\n this._menuLevel.set([]);\n this._changeDetectorRef.detectChanges();\n }\n }\n\n public onHandleToggleSidenav(): void {\n this.opened = !this.opened;\n this._menuLevel.set([]);\n this._changeDetectorRef.detectChanges();\n }\n\n public onHandleMenuLevelGoBack(): void {\n const level = this._menuLevel();\n if (level.length > 0) {\n this._menuLevel.set(level.slice(0, level.length - 1));\n }\n this._changeDetectorRef.detectChanges();\n }\n\n public onHandleMenuItemSelect(menu: BaseMenuModel): void {\n if (menu.type === 'COLLAPSABLE') {\n this._menuLevel.update((level) => [...level, menu]);\n }\n this._changeDetectorRef.detectChanges();\n menu.action?.();\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\n\n@Component({\n selector: 'gipi-skeleton',\n exportAs: 'gSkeleton',\n template: `\n <div\n [ngClass]=\"containerClass()\"\n [class]=\"styleClass\"\n [ngStyle]=\"containerStyle\"\n [attr.data-pc-name]=\"'skeleton'\"\n [attr.data-pc-section]=\"'root'\">\n @if (shape === 'img') {\n <span\n class=\"material-symbols-rounded g-skeleton-shape-img\"\n [ngStyle]=\"{ width: imgSize, height: imgSize, fontSize: imgSize }\">\n image\n </span>\n }\n </div>\n `,\n styleUrl: './skeleton.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n '[attr.role]': `'progressbar'`,\n class: 'g-skeleton',\n },\n imports: [CommonModule],\n})\nexport class SkeletonComponent {\n private readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-skeleton-');\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n /** Class of the element. */\n @Input() styleClass: string = '';\n /** Inline style of the element. */\n @Input() style: { [klass: string]: unknown } | null | undefined;\n /** Shape of the element. */\n @Input() shape: 'rectangle' | 'circle' | 'square' | 'img' = 'rectangle';\n /** Type of the animation. */\n @Input() animation: string = 'wave';\n /** Border radius of the element, defaults to value from theme. */\n @Input() borderRadius: string | undefined;\n /** Size of the skeleton. */\n @Input() size: string | undefined;\n /** Size of the image skeleton. */\n @Input() imgSize: string | undefined;\n /** Width of the element. */\n @Input() width: string = '100%';\n /** Height of the element */\n @Input() height: string = '2rem';\n\n @HostBinding('style.width')\n protected get hostWidth() {\n if (this.shape === 'square') {\n return this.size ? this.size : this.width || this.height;\n } else {\n return this.size ? this.size : (this.width ?? '100%');\n }\n }\n\n @HostBinding('style.height')\n protected get hostHeight() {\n if (this.shape === 'square') {\n return this.size ? this.size : this.width || this.height;\n } else {\n return this.size ? this.size : (this.height ?? '2rem');\n }\n }\n\n protected get containerStyle() {\n return {\n ...this.style,\n borderRadius: this.borderRadius,\n };\n }\n\n constructor() {}\n\n protected containerClass(): { [key: string]: boolean } {\n return {\n 'g-skeleton-shape': true,\n 'g-skeleton-shape-circle': this.shape === 'circle',\n 'g-skeleton-shape-square': this.shape === 'square',\n 'g-skeleton-shape-img': this.shape === 'img',\n 'g-skeleton-shape-animation-none': this.animation === 'none',\n };\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n numberAttribute,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n tIconFontSet,\n tIconGrade,\n tIconOptical,\n tIconVariation,\n tIconWeight,\n} from '../icon/icon.component';\n\n@Component({\n selector: 'gipi-step',\n exportAs: 'gStep',\n template: `\n <ng-template>\n @if (!!template) {\n <ng-container [ngTemplateOutlet]=\"template\" />\n } @else {\n <ng-content />\n }\n </ng-template>\n `,\n styleUrl: './stepper.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'stepPanelUniqueId',\n '[attr.name]': 'stepPanelUniqueId',\n '[attr.role]': `'tabpanel'`,\n '[attr.aria-selected]': '!!active',\n '[attr.aria-disabled]': '!!disabled',\n class: 'g-step',\n },\n imports: [CommonModule],\n})\nexport class StepComponent {\n @ViewChild(TemplateRef, { static: true })\n contentStep!: TemplateRef<unknown>;\n\n protected readonly stepPanelUniqueId: string = inject(_IdGenerator).getId('gipi-step-panel-');\n protected readonly stepUniqueId: string = inject(_IdGenerator).getId('gipi-step-');\n\n @Input() id: string = this.stepUniqueId;\n @Input() name: string = this.stepUniqueId;\n\n @Input() label: string = '';\n\n @Input() template: TemplateRef<void> | null = null;\n\n @Input() icon: string = '';\n @Input() svgIcon: string = '';\n @Input() iconFontSet: tIconFontSet = 'ROUNDED';\n @Input({ transform: numberAttribute }) iconSize: number = 20;\n @Input({ alias: 'iconVariation' }) iconVariation: tIconVariation = 'OUTLINED';\n @Input({ alias: 'weight' }) iconWeight: tIconWeight = 400;\n @Input({ alias: 'grade' }) iconGrade: tIconGrade = 'DEFAULT';\n @Input({ alias: 'optical' }) iconOptical: tIconOptical = 20;\n\n constructor() {}\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n numberAttribute,\n Output,\n QueryList,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IconComponent } from '../icon/icon.component';\nimport { StepComponent } from './step.component';\n\n@Component({\n selector: 'gipi-stepper',\n exportAs: 'gStepper',\n template: `\n <nav\n class=\"g-stepper-nav\"\n role=\"tablist\">\n @for (step of stepsElement(); let i = $index; track step) {\n <div\n class=\"g-stepper-link\"\n [attr.id]=\"step.id\"\n [attr.name]=\"step.name\"\n [class.g-stepper-link-done]=\"i < currentStep\"\n [class.g-stepper-link-current]=\"i === currentStep\">\n @if (!!step.icon || !!step.svgIcon) {\n <gipi-icon\n class=\"g-stepper-link-icon\"\n [icon]=\"step.icon\"\n [svgIcon]=\"step.svgIcon\"\n [size]=\"step.iconSize\"\n [fontSet]=\"step.iconFontSet\"\n [variation]=\"step.iconVariation\"\n [weight]=\"step.iconWeight\"\n [grade]=\"step.iconGrade\"\n [optical]=\"step.iconOptical\" />\n }\n <span>{{ step.label }}</span>\n </div>\n }\n </nav>\n\n @for (step of stepsElement(); let i = $index; track step) {\n <section\n role=\"tabpanel\"\n class=\"g-step-panel\"\n [attr.id]=\"step.id + '-panel'\"\n [attr.name]=\"step.name + '-panel'\"\n [style.display]=\"i === currentStep ? 'block' : 'none'\">\n <ng-container *ngTemplateOutlet=\"step.contentStep\" />\n </section>\n }\n `,\n styleUrl: './stepper.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-stepper',\n },\n imports: [CommonModule, IconComponent],\n})\nexport class StepperComponent {\n @ContentChildren(StepComponent)\n set tabsRef(queryList: QueryList<StepComponent>) {\n if (queryList) {\n this.stepsElement.set(queryList.toArray());\n\n // Atualiza o signal toda vez que a lista muda dinamicamente\n queryList.changes\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this.stepsElement.set(queryList.toArray()));\n }\n }\n\n private readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-stepper-');\n\n private readonly _destroyRef = inject(DestroyRef);\n\n protected readonly stepsElement = signal<StepComponent[]>([]);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input({ transform: booleanAttribute })\n disabled: BooleanInput = false;\n\n @Input({ transform: numberAttribute })\n currentStep: number = 0;\n\n @Output() selectionChange = new EventEmitter<void>();\n\n constructor() {}\n}\n","import { BaseModel } from '../../../base/models/base.model';\nimport { tImplicitTemplateRef } from '../../../types/implicit-template.type';\nimport { tTableColumnActionType } from './table-column-action-type.enum';\nimport {\n tTableColumnAlignHorizontal,\n tTableColumnAlignText,\n tTableColumnAlignVertical,\n} from './table-column-align-type.enum';\nimport { tTableColumnCondition } from './table-column-condition.enum';\nimport { tTableColumnPartial } from './table-column-partial.model';\n\nexport class TableColumn<TRow extends BaseModel = BaseModel> {\n /** Nome da coluna que será exibido no cabeçalho da tabela. */\n label: string;\n\n /** Nome da propriedade do objeto que será exibido na coluna. */\n property: string;\n\n /**\n * Valor principal da coluna, exibido como conteúdo principal da célula.\n * Pode ser um valor direto (string ou number) ou uma função que retorna o valor com base na linha.\n */\n value: string | number | ((object: TRow) => string | number);\n\n /**\n * Valor complementar exibido abaixo do `value`.\n * - Só será exibido se o `value` estiver definido.\n * - Útil para exibir informações secundárias como CPF, e-mail ou código.\n */\n subValue: string | number | ((object: TRow) => string | number);\n\n /** Posição vertical do valor exibido no cabeçalho da tabela. */\n alignVerHeader: tTableColumnAlignVertical;\n\n /** Posição horizontal do valor exibido no cabeçalho da tabela. */\n alignHorHeader: tTableColumnAlignHorizontal;\n\n /** Posição vertical do valor exibido na célula da coluna da tabela. */\n alignVerCell: tTableColumnAlignVertical;\n\n /** Posição horizontal do valor exibido na célula da coluna da tabela. */\n alignHorCell: tTableColumnAlignHorizontal;\n\n /** Posição do texto exibido no cabeçalho da tabela. */\n alignTextHeader: tTableColumnAlignText;\n\n /** Posição do texto exibido na célula da coluna da tabela. */\n alignTextCell: tTableColumnAlignText;\n\n /**\n * Indica o espaçamento entre as colunas da tabela.\n * - O valor padrão é `10`, o que significa que há um espaçamento de `10px` entre as colunas.\n * - Este espaçamento será aplicado entre todas as colunas, exceto a primeira coluna (lado esquerdo),\n * e entre a última coluna (lado direito).\n */\n borderSpacing: number;\n\n /** A largura padrão da coluna, em (pixels, rem, %) */\n width: number | string;\n\n /** A largura mínima da coluna, em (pixels, rem, %) */\n minWidth: number | string;\n\n /** A largura máxima da coluna, em (pixels, rem, %) */\n maxWidth: number | string;\n\n /** Indica se o texto deverá aplicar ellipses. */\n slice: tTableColumnCondition<TRow>;\n\n /** Indica se a coluna é redimensionável. */\n resizable: tTableColumnCondition<TRow>;\n\n /** Indica se a coluna é ordenável. */\n sortable: tTableColumnCondition<TRow>;\n\n /** Indica se a coluna ordenável pode ser limpa.\n * @description\n * Se `sortDisableClear: false`:\n * - Click 1 - Ordena Ascendente\n * - Click 2 - Ordena Descendente\n * - Click 3 - Limpa a ordenação\n * - Reinicia no Click 1\n *\n * @description\n * Se `sortDisableClear: true`:\n * - Click 1 - Ordena Ascendente\n * - Click 2 - Ordena Descendente\n * - Reinicia no Click 1\n */\n sortDisableClear: tTableColumnCondition<TRow>;\n\n /** Indica se a coluna será visível. */\n visible: tTableColumnCondition<TRow>;\n\n /** Template que será exibido no cabeçalho da tabela. */\n templateHeader: tImplicitTemplateRef<TableColumn<TRow> | tTableColumnPartial<TRow>>;\n\n /** Template que será exibido na célula da coluna da tabela. */\n templateCell: tImplicitTemplateRef<TRow>;\n\n /** Evento acionado ao clicar sobre a linha */\n action: ((object: TRow) => void) | null;\n\n /** Em qual circustância o evento action será acionado */\n typeAction: tTableColumnActionType;\n\n constructor(init?: Partial<TableColumn<TRow>>) {\n this.label = init?.label ?? '';\n this.property = init?.property ?? '';\n this.value = init?.value ?? '';\n this.subValue = init?.subValue ?? '';\n this.alignVerHeader = init?.alignVerHeader ?? 'center';\n this.alignHorHeader = init?.alignHorHeader ?? 'flex-start';\n this.alignVerCell = init?.alignVerCell ?? 'center';\n this.alignHorCell = init?.alignHorCell ?? 'flex-start';\n this.alignTextHeader = init?.alignTextHeader ?? 'start';\n this.alignTextCell = init?.alignTextCell ?? 'start';\n this.borderSpacing = init?.borderSpacing ?? 10;\n this.width = init?.width ?? 'auto';\n this.minWidth = init?.minWidth ?? 0;\n this.maxWidth = init?.maxWidth ?? '100%';\n this.slice = init?.slice ?? true;\n this.resizable = init?.resizable ?? false;\n this.sortable = init?.sortable ?? false;\n this.sortDisableClear = init?.sortDisableClear ?? false;\n this.visible = init?.visible ?? true;\n this.templateHeader = init?.templateHeader ?? null;\n this.templateCell = init?.templateCell ?? null;\n this.action = init?.action ?? null;\n this.typeAction = init?.typeAction ?? null;\n }\n}\n","import { TemplateRef } from '@angular/core';\nimport { BaseModel } from '../../../base/models/base.model';\nimport { tTableColumnActionType } from './table-column-action-type.enum';\nimport {\n tTableColumnAlignHorizontal,\n tTableColumnAlignText,\n tTableColumnAlignVertical,\n} from './table-column-align-type.enum';\nimport { tTableColumnCondition } from './table-column-condition.enum';\nimport { tTableColumnPartial } from './table-column-partial.model';\nimport { TableColumn } from './table-column.model';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class TableColumnBuilder<TRow extends BaseModel = any> {\n private _label: string;\n private _property: string;\n private _value: string | number | ((object: TRow) => string | number);\n private _subValue: string | number | ((object: TRow) => string | number);\n private _alignVerHeader: tTableColumnAlignVertical;\n private _alignHorHeader: tTableColumnAlignHorizontal;\n private _alignVerCell: tTableColumnAlignVertical;\n private _alignHorCell: tTableColumnAlignHorizontal;\n private _alignTextHeader: tTableColumnAlignText;\n private _alignTextCell: tTableColumnAlignText;\n private _borderSpacing: number;\n private _width: number | string;\n private _minWidth: number | string;\n private _maxWidth: number | string;\n private _slice: tTableColumnCondition<TRow>;\n private _resizable: tTableColumnCondition<TRow>;\n private _sortable: tTableColumnCondition<TRow>;\n private _sortDisableClear: tTableColumnCondition<TRow>;\n private _visible: tTableColumnCondition<TRow>;\n private _templateHeader: TemplateRef<{\n $implicit: TableColumn<TRow> | tTableColumnPartial<TRow>;\n }> | null;\n private _templateCell: TemplateRef<{ $implicit: TRow }> | null;\n private _action: ((object: TRow) => void) | null;\n private _typeAction: tTableColumnActionType;\n\n constructor() {\n this._label = '';\n this._property = '';\n this._value = '';\n this._subValue = '';\n this._alignVerHeader = 'center';\n this._alignHorHeader = 'flex-start';\n this._alignVerCell = 'center';\n this._alignHorCell = 'flex-start';\n this._alignTextHeader = 'start';\n this._alignTextCell = 'start';\n this._borderSpacing = 10;\n this._width = 'auto';\n this._minWidth = 0;\n this._maxWidth = '100%';\n this._slice = true;\n this._resizable = false;\n this._sortable = false;\n this._sortDisableClear = false;\n this._visible = true;\n this._templateHeader = null;\n this._templateCell = null;\n this._action = null;\n this._typeAction = null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public static instance<T extends BaseModel = any>(): TableColumnBuilder<T> {\n return new TableColumnBuilder<T>();\n }\n\n /** Nome da coluna que será exibido no cabeçalho da tabela. */\n public label(value: string): TableColumnBuilder<TRow> {\n this._label = value;\n return this;\n }\n\n /** Nome da propriedade do objeto que será exibido na coluna. */\n public property(value: string): TableColumnBuilder<TRow> {\n this._property = value;\n return this;\n }\n\n /**\n * Valor principal da coluna, exibido como conteúdo principal da célula.\n * - Pode ser um valor direto `(string ou number)` ou uma função que retorna o valor com base na linha.\n */\n public value(\n value: string | number | ((object: TRow) => string | number),\n ): TableColumnBuilder<TRow> {\n this._value = value;\n return this;\n }\n\n /**\n * Valor complementar exibido abaixo do `value`.\n * - Só será exibido se o `value` estiver definido.\n * - Útil para exibir informações secundárias como CPF, e-mail ou código.\n */\n public subValue(\n value: string | number | ((object: TRow) => string | number),\n ): TableColumnBuilder<TRow> {\n this._subValue = value;\n return this;\n }\n\n /** Posição vertical do valor exibido no cabeçalho da tabela. */\n public alignVerHeader(value: tTableColumnAlignVertical): TableColumnBuilder<TRow> {\n this._alignVerHeader = value;\n return this;\n }\n\n /** Posição horizontal do valor exibido no cabeçalho da tabela. */\n public alignHorHeader(value: tTableColumnAlignHorizontal): TableColumnBuilder<TRow> {\n this._alignHorHeader = value;\n return this;\n }\n\n /** Posição vertical do valor exibido na célula da coluna da tabela. */\n public alignVerCell(value: tTableColumnAlignVertical): TableColumnBuilder<TRow> {\n this._alignVerCell = value;\n return this;\n }\n\n /** Posição horizontal do valor exibido na célula da coluna da tabela. */\n public alignHorCell(value: tTableColumnAlignHorizontal): TableColumnBuilder<TRow> {\n this._alignHorCell = value;\n return this;\n }\n\n /** Posição do texto exibido no cabeçalho da tabela. */\n public alignTextHeader(value: tTableColumnAlignText) {\n this._alignTextHeader = value;\n return this;\n }\n\n /** Posição do texto exibido na célula da coluna da tabela. */\n public alignTextCell(value: tTableColumnAlignText) {\n this._alignTextCell = value;\n return this;\n }\n\n /** Indica o espaçamento entre as colunas da tabela.\n * - O valor padrão é `10`, o que significa que há um espaçamento de `10px` entre as colunas.\n * - Este espaçamento será aplicado entre todas as colunas, exceto a primeira coluna (lado esquerdo),\n * e entre a última coluna (lado direito).\n */\n public borderSpacing(value: number): TableColumnBuilder<TRow> {\n this._borderSpacing = value;\n return this;\n }\n\n /** A largura padrão da coluna, em (pixels, rem, %) */\n public width(value: number | string): TableColumnBuilder<TRow> {\n this._width = value;\n return this;\n }\n\n /** A largura mínima da coluna, em (pixels, rem, %) */\n public minWidth(value: number | string): TableColumnBuilder<TRow> {\n this._minWidth = value;\n return this;\n }\n\n /** A largura máxima da coluna, em (pixels, rem, %) */\n public maxWidth(value: number | string): TableColumnBuilder<TRow> {\n this._maxWidth = value;\n return this;\n }\n\n /** Indica se o texto deverá aplicar ellipses. */\n public slice(value: tTableColumnCondition<TRow>): TableColumnBuilder<TRow> {\n this._slice = value;\n return this;\n }\n\n /** Indica se a coluna é redimensionável. */\n public resizable(value: tTableColumnCondition<TRow>): TableColumnBuilder<TRow> {\n this._resizable = value;\n return this;\n }\n\n /** Indica se a coluna é ordenável. */\n public sortable(value: tTableColumnCondition<TRow>): TableColumnBuilder<TRow> {\n this._sortable = value;\n return this;\n }\n\n /** Indica se a coluna ordenável pode ser limpa.\n * @description\n * Se `sortDisableClear: false`:\n * - Click 1 - Ordena Ascendente\n * - Click 2 - Ordena Descendente\n * - Click 3 - Limpa a ordenação\n * - Reinicia no Click 1\n *\n * @description\n * Se `sortDisableClear: true`:\n * - Click 1 - Ordena Ascendente\n * - Click 2 - Ordena Descendente\n * - Reinicia no Click 1\n */\n public sortDisableClear(value: tTableColumnCondition<TRow>): TableColumnBuilder<TRow> {\n this._sortDisableClear = value;\n return this;\n }\n\n /** Indica se a coluna será visível. */\n public visible(value: tTableColumnCondition<TRow>): TableColumnBuilder<TRow> {\n this._visible = value;\n return this;\n }\n\n /** Template que será exibido no cabeçalho da tabela. */\n public templateHeader(\n value: TemplateRef<{\n $implicit: TableColumn<TRow> | tTableColumnPartial<TRow>;\n }> | null,\n ): TableColumnBuilder<TRow> {\n this._templateHeader = value;\n return this;\n }\n\n /** Template que será exibido na célula da coluna da tabela. */\n public templateCell(value: TemplateRef<{ $implicit: TRow }> | null): TableColumnBuilder<TRow> {\n this._templateCell = value;\n return this;\n }\n\n /** Evento acionado ao clicar sobre a coluna */\n public action(value: ((object: TRow) => void) | null): TableColumnBuilder<TRow> {\n this._action = value;\n return this;\n }\n\n /** Em qual circustância o evento action será acionado */\n public typeAction(value: tTableColumnActionType): TableColumnBuilder<TRow> {\n this._typeAction = value;\n return this;\n }\n\n public build(): TableColumn<TRow> {\n return new TableColumn<TRow>({\n label: this._label,\n property: this._property,\n value: this._value,\n subValue: this._subValue,\n alignVerHeader: this._alignVerHeader,\n alignHorHeader: this._alignHorHeader,\n alignVerCell: this._alignVerCell,\n alignHorCell: this._alignHorCell,\n alignTextHeader: this._alignTextHeader,\n alignTextCell: this._alignTextCell,\n borderSpacing: this._borderSpacing,\n width: this._width,\n minWidth: this._minWidth,\n maxWidth: this._maxWidth,\n slice: this._slice,\n resizable: this._resizable,\n sortable: this._sortable,\n sortDisableClear: this._sortDisableClear,\n visible: this._visible,\n templateHeader: this._templateHeader,\n templateCell: this._templateCell,\n action: this._action,\n typeAction: this._typeAction,\n });\n }\n}\n","import { BaseModel } from '../../../base/models/base.model';\nimport {\n tIconFontSet,\n tIconGrade,\n tIconOptical,\n tIconVariation,\n tIconWeight,\n} from '../../icon/icon.component';\nimport type { tTableColumnCondition } from './table-column-condition.enum';\n\nexport class TableMenuItemContext<TRow extends BaseModel = BaseModel> {\n /** Identificador do menu-item. */\n id: string;\n\n /** Nome identificador do menu-item. */\n name: string;\n\n /** Tooltip do menu-item. */\n tooltip: string;\n\n /** Controla a visibilidade do item de menu. */\n visible: tTableColumnCondition<TRow>;\n\n /** Ícone do menu-item. */\n icon: string;\n\n /** Ícone SVG do menu-item. */\n svgIcon: string;\n\n /**\n * Define o estilo do conjunto de ícones a ser utilizado.\n * - Pode ser `OUTLINED`, `ROUNDED` ou `SHARP`, conforme os estilos do Material Icons.\n * - Valor padrão: `ROUNDED`.\n */\n iconFontSet: tIconFontSet;\n\n /**\n * Define o valor de fill no font-variation-settings\n * @FILLED FILL = 1;\n * @OUTILINE FILL = 0;\n */\n iconVariation: tIconVariation;\n\n /** Define o valor de wght no font-variation-settings */\n iconWeight: tIconWeight;\n\n /**\n * Define o valor de GRAD no font-variation-settings\n * @LOW GRAD = -25;\n * @DEFAULT GRAD = 0;\n * @HIGH GRAD = 200;\n */\n iconGrade: tIconGrade;\n\n /** Define o valor de opsz no font-variation-settings */\n iconOptical: tIconOptical;\n\n /** Exibe o ícone de novo (new) abaixo do menu-item. */\n showTagNew: tTableColumnCondition<TRow>;\n\n /** Ação disparada ao clicar no menu-item. */\n action: ((object: TRow) => void) | null;\n\n constructor(init?: Partial<TableMenuItemContext<TRow>>) {\n this.id = init?.id || '';\n this.name = init?.name || '';\n this.tooltip = init?.tooltip || '';\n this.visible = init?.visible ?? true;\n this.icon = init?.icon || '';\n this.svgIcon = init?.svgIcon || '';\n this.iconFontSet = init?.iconFontSet || 'ROUNDED';\n this.iconVariation = init?.iconVariation || 'OUTLINED';\n this.iconWeight = init?.iconWeight || 400;\n this.iconGrade = init?.iconGrade || 'DEFAULT';\n this.iconOptical = init?.iconOptical || 20;\n this.showTagNew = init?.showTagNew || false;\n this.action = init?.action || null;\n }\n}\n","import { BaseModel } from '../../../base/models/base.model';\nimport {\n tIconFontSet,\n tIconGrade,\n tIconOptical,\n tIconVariation,\n tIconWeight,\n} from '../../icon/icon.component';\nimport { tTableColumnCondition } from './table-column-condition.enum';\nimport { TableMenuItemContext } from './table-menu-item-context.model';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class TableMenuItemContextBuilder<TRow extends BaseModel = any> {\n private _id: string;\n private _name: string;\n private _tooltip: string;\n private _visible: tTableColumnCondition<TRow>;\n private _icon: string;\n private _svgIcon: string;\n private _iconFontSet: tIconFontSet;\n private _iconVariation: tIconVariation;\n private _iconWeight: tIconWeight;\n private _iconGrade: tIconGrade;\n private _iconOptical: tIconOptical;\n private _showTagNew: boolean;\n private _action: ((object: TRow) => void) | null;\n\n constructor() {\n this._id = '';\n this._name = '';\n this._tooltip = '';\n this._visible = true;\n this._icon = '';\n this._svgIcon = '';\n this._iconFontSet = 'ROUNDED';\n this._iconVariation = 'OUTLINED';\n this._iconWeight = 400;\n this._iconGrade = 'DEFAULT';\n this._iconOptical = 20;\n this._showTagNew = false;\n this._action = null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public static instance<T extends BaseModel = any>(): TableMenuItemContextBuilder<T> {\n return new TableMenuItemContextBuilder<T>();\n }\n\n /** Identificador do menu-item. */\n public id(value: string): TableMenuItemContextBuilder<TRow> {\n this._id = value;\n return this;\n }\n\n /** Nome identificador do menu-item. */\n public name(value: string): TableMenuItemContextBuilder<TRow> {\n this._name = value;\n return this;\n }\n\n /** Tooltip do menu-item. */\n public tooltip(value: string): TableMenuItemContextBuilder<TRow> {\n this._tooltip = value;\n return this;\n }\n\n /** Controla a visibilidade do item de menu. */\n public visible(value: tTableColumnCondition<TRow>): TableMenuItemContextBuilder<TRow> {\n this._visible = value;\n return this;\n }\n\n /** Ícone do menu-item. */\n public icon(value: string): TableMenuItemContextBuilder<TRow> {\n this._icon = value;\n return this;\n }\n\n /** Ícone SVG do menu-item. */\n public svgIcon(value: string): TableMenuItemContextBuilder<TRow> {\n this._svgIcon = value;\n return this;\n }\n\n /**\n * Define o estilo do conjunto de ícones a ser utilizado.\n * - Pode ser `OUTLINED`, `ROUNDED` ou `SHARP`, conforme os estilos do Material Icons.\n * - Valor padrão: `ROUNDED`.\n */\n public iconFontSet(value: tIconFontSet): TableMenuItemContextBuilder<TRow> {\n this._iconFontSet = value;\n return this;\n }\n\n /**\n * Define o valor de fill no font-variation-settings\n * @FILLED FILL = 1;\n * @OUTILINE FILL = 0;\n */\n public iconVariation(value: tIconVariation): TableMenuItemContextBuilder<TRow> {\n this._iconVariation = value;\n return this;\n }\n\n /** Define o valor de wght no font-variation-settings */\n public iconWeight(value: tIconWeight): TableMenuItemContextBuilder<TRow> {\n this._iconWeight = value;\n return this;\n }\n\n /**\n * Define o valor de GRAD no font-variation-settings\n * @LOW GRAD = -25;\n * @DEFAULT GRAD = 0;\n * @HIGH GRAD = 200;\n */\n public iconGrade(value: tIconGrade): TableMenuItemContextBuilder<TRow> {\n this._iconGrade = value;\n return this;\n }\n\n /** Define o valor de opsz no font-variation-settings */\n public iconOptical(value: tIconOptical): TableMenuItemContextBuilder<TRow> {\n this._iconOptical = value;\n return this;\n }\n\n /** Exibe o ícone de novo (new) abaixo do menu-item. */\n public showTagNew(value: boolean): TableMenuItemContextBuilder<TRow> {\n this._showTagNew = value;\n return this;\n }\n\n /** Ação disparada ao clicar no menu-item. */\n public action(value: (object: TRow) => void): TableMenuItemContextBuilder<TRow> {\n this._action = value;\n return this;\n }\n\n public build(): TableMenuItemContext<TRow> {\n return new TableMenuItemContext<TRow>({\n id: this._id,\n name: this._name,\n tooltip: this._tooltip,\n visible: this._visible,\n icon: this._icon,\n svgIcon: this._svgIcon,\n iconFontSet: this._iconFontSet,\n iconVariation: this._iconVariation,\n iconWeight: this._iconWeight,\n iconGrade: this._iconGrade,\n iconOptical: this._iconOptical,\n showTagNew: this._showTagNew,\n action: this._action,\n });\n }\n}\n","import { InjectionToken, type Provider } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\n\nconst portugueseRangeLabel = (page: number, pageSize: number, length: number) => {\n if (length === 0 || pageSize === 0) {\n return `0 de ${length}`;\n }\n\n length = Math.max(length, 0);\n\n const startIndex = page * pageSize;\n\n // Se o índice inicial exceder o comprimento da lista, não tente fixar o índice final no final.\n const endIndex =\n startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;\n\n return `${startIndex + 1} - ${endIndex} de ${length}`;\n};\n\nexport const PAGINATOR_INTL_PT_BR: () => MatPaginatorIntl = () => {\n const paginatorIntl = new MatPaginatorIntl();\n paginatorIntl.itemsPerPageLabel = 'Itens por página';\n paginatorIntl.nextPageLabel = 'Próxima página';\n paginatorIntl.previousPageLabel = 'Página anterior';\n paginatorIntl.getRangeLabel = portugueseRangeLabel;\n paginatorIntl.firstPageLabel = 'Primeira página';\n paginatorIntl.lastPageLabel = 'Última página';\n return paginatorIntl;\n};\n\nexport const PAGINATIOR_INTL_TOKEN = new InjectionToken<MatPaginatorIntl>('PAGINATIOR_INTL_TOKEN', {\n factory: () => PAGINATOR_INTL_PT_BR(),\n});\n\nexport function providePaginatorIntl(config?: MatPaginatorIntl): Provider {\n return {\n provide: PAGINATIOR_INTL_TOKEN,\n useValue: config ?? PAGINATOR_INTL_PT_BR(),\n };\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n Input,\n numberAttribute,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[gTextEllipsis]',\n exportAs: 'gTextEllipsis',\n host: {\n class: 'g-text-ellipsis',\n },\n})\nexport class TextEllipsisDirective implements AfterViewInit {\n private _elementRef: ElementRef = inject(ElementRef);\n private _renderer2: Renderer2 = inject(Renderer2);\n\n @Input({ alias: 'gTextEllipsis', transform: numberAttribute }) readonly lineClamp: number = 1;\n @Input({ alias: 'gTextEllipsisEnabled', transform: booleanAttribute })\n readonly enabled: boolean = true;\n\n constructor() {}\n\n ngAfterViewInit(): void {\n if (this.enabled) {\n this._applyEllipsis();\n }\n }\n\n private _applyEllipsis(): void {\n const element: HTMLElement = this._elementRef.nativeElement;\n this._renderer2.setStyle(element, 'display', '-webkit-box');\n this._renderer2.setStyle(element, '-webkit-box-orient', 'vertical');\n this._renderer2.setStyle(element, 'overflow', 'hidden');\n this._renderer2.setStyle(element, 'text-overflow', 'ellipsis');\n this._renderer2.setStyle(element, '-webkit-line-clamp', this.lineClamp || 1);\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n NgZone,\n numberAttribute,\n Output,\n signal,\n TemplateRef,\n TrackByFunction,\n ViewChild,\n type OnInit,\n} from '@angular/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatPaginator, MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\nimport { MatSort, MatSortModule, Sort, type SortDirection } from '@angular/material/sort';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { BaseSortModel } from '../../base/models/base-sort.model';\nimport { BaseModel } from '../../base/models/base.model';\nimport { tSortDirection } from '../../enums/sort-direction.enum';\nimport { PAGINATIOR_INTL_TOKEN } from '../../tokens/paginator-intl.token';\nimport { tPageEvent } from '../../types/page-event.type';\nimport { ArrayUtil } from '../../utils';\nimport { NumberUtil } from '../../utils/number.util';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { StringUtil } from '../../utils/string.util';\nimport { UUIDUtil } from '../../utils/uuid.util';\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\nimport { EmptyComponent } from '../empty/empty.component';\nimport { IconComponent } from '../icon/icon.component';\nimport { LoadingComponent } from '../loading/loading.component';\nimport { TextEllipsisDirective } from '../text-ellipsis';\nimport { CssUtil } from './../../utils/css.util';\nimport { tTableColumnActionType } from './shared/table-column-action-type.enum';\nimport { tTableColumnCondition } from './shared/table-column-condition.enum';\nimport { tTableColumnPartial } from './shared/table-column-partial.model';\nimport { TableColumn } from './shared/table-column.model';\nimport { TableMenuItemContext } from './shared/table-menu-item-context.model';\n\nconst ROW_HEIGHT: number = 44; // Default row height in pixels\n\n@Component({\n selector: 'gipi-table',\n exportAs: 'gTable',\n templateUrl: './table.component.html',\n styleUrl: './table.component.scss',\n changeDetection: ChangeDetectionStrategy.Default,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n '[attr.role]': `'table'`,\n class: 'g-table',\n },\n providers: [\n {\n provide: MatPaginatorIntl,\n useFactory: () => inject(PAGINATIOR_INTL_TOKEN),\n },\n ],\n imports: [\n CommonModule,\n CdkTableModule,\n MatTooltipModule,\n MatSortModule,\n MatPaginatorModule,\n MatCheckboxModule,\n TextEllipsisDirective,\n CheckboxComponent,\n IconComponent,\n LoadingComponent,\n EmptyComponent,\n ],\n})\nexport class TableComponent<TRow extends BaseModel> implements OnInit, AfterViewInit {\n @ViewChild('gTableFooter', { read: ElementRef })\n set tableFooterRef(value: ElementRef<HTMLElement> | null) {\n if (!ObjectUtil.isEmpty(value)) {\n this.tableFooterElement.set(value.nativeElement);\n }\n }\n\n @ViewChild(MatPaginator)\n set matPaginatorRef(value: MatPaginator | null) {\n if (\n this.paginatorFrontend &&\n !ObjectUtil.isEmpty(value) &&\n !ObjectUtil.isEmpty(this.dataSource)\n ) {\n this.dataSource.paginator = value;\n }\n }\n\n @ViewChild(MatSort)\n set matSortRef(value: MatSort | null) {\n if (\n this.matSortFrontend &&\n !ObjectUtil.isEmpty(value) &&\n !ObjectUtil.isEmpty(this.dataSource)\n ) {\n this.dataSource.sort = value;\n }\n }\n\n @ViewChild('menuContextWrapper', { read: ElementRef })\n set menuContextWrapperRef(value: ElementRef | null) {\n this.menuContextWrapperElement.set(value?.nativeElement ?? null);\n }\n\n @ContentChild('expandDetail', { static: false })\n expandDetailRef: TemplateRef<unknown> | null = null;\n\n @ContentChild('actions', { static: false })\n actionsRef: TemplateRef<unknown> | null = null;\n\n @ContentChild('menuContext', { static: false })\n menuContextRef: TemplateRef<unknown> | null = null;\n\n @ContentChild('footer', { static: false })\n footerRef: TemplateRef<unknown> | null = null;\n\n private readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-table-');\n\n /** Internals */\n private readonly _changeDetectionRef = inject(ChangeDetectorRef);\n private readonly _ngZone = inject(NgZone);\n\n protected menuContextWrapperElement = signal<HTMLElement | null>(null);\n protected tableFooterElement = signal<HTMLElement | null>(null);\n\n protected readonly tableMinHeight = computed(() => {\n const headerHeight = ROW_HEIGHT;\n const footerEl = this.tableFooterElement();\n const footerHeight = footerEl?.getBoundingClientRect().height ?? 0;\n const bodyHeight = Math.ceil(this._paginatorPageSize() * ROW_HEIGHT);\n\n const tableHeight = Math.ceil(headerHeight + bodyHeight + footerHeight + 10);\n return CssUtil.coerceCssPixelValue(`${tableHeight}px`);\n });\n\n @HostBinding('style.min-height')\n protected get tableMinHeightPx(): string {\n return this.tableMinHeight();\n }\n\n protected readonly columnsToDisplay = computed(() => {\n const baseColumns = this.columns\n .filter(({ visible }) => this.coerceConditionByColumn(visible))\n .map(({ property }) => property);\n\n const prefix: string[] = [];\n if (this.expandable && !NumberUtil.isEmpty(this.expandablePosition)) {\n // Se a posição for válida (ex: 1, 2, 3...)\n if (baseColumns.length >= this.expandablePosition) {\n baseColumns.splice(this.expandablePosition, 0, 'expand');\n } else {\n prefix.push('expand');\n }\n } else if (this.expandable) {\n // Se for true, mas não foi passada uma posição\n prefix.push('expand');\n }\n\n if (this.selectable && !NumberUtil.isEmpty(this.selectablePosition)) {\n // Se a posição for válida (ex: 1, 2, 3...)\n if (baseColumns.length >= this.selectablePosition) {\n baseColumns.splice(this.selectablePosition, 0, 'select');\n } else {\n prefix.push('select');\n }\n } else if (this.selectable) {\n // Se for true, mas não foi passada uma posição\n prefix.push('select');\n }\n\n const suffix: string[] = [];\n if (!ObjectUtil.isEmpty(this.actionsRef)) {\n suffix.push('actions');\n }\n\n return [...prefix, ...baseColumns, ...suffix];\n });\n protected dataSource = new MatTableDataSource<TRow>([]);\n protected selectedRows: SelectionModel<TRow> | null = null;\n protected expandedRows: SelectionModel<TRow> | null = null;\n\n // MenuContext\n protected menuContextHover: boolean = false;\n protected menuContextRow = signal<TRow | null>(null);\n /** --------- */\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input({ alias: 'sortFrontend', transform: booleanAttribute })\n matSortFrontend: boolean = false;\n\n /**\n * Referente ao `matSortActive`.\n * - Define a coluna atualmente ordenada.\n */\n @Input({ alias: 'sortActive' }) matSortActive: string = '';\n\n /**\n * Referente ao `matSortDirection`.\n * - Direção atual da ordenação.\n */\n @Input({ alias: 'sortDirection' })\n matSortDirection: tSortDirection = '';\n\n /**\n * Referente ao `matSortDisableClear`.\n * - Indica se o usuário pode limpar a ordenação após percorrer todas as direções.\n */\n @Input({ alias: 'sortDisableClear', transform: booleanAttribute })\n matSortDisableClear: boolean = false;\n\n /**\n * Referente ao `matSortDisabled`.\n * - Define se a ordenação está desabilitada.\n */\n @Input({ alias: 'sortDisabled', transform: booleanAttribute })\n matSortDisabled: boolean = false;\n\n /**\n * Referente ao `matSortStart`.\n * - Direção inicial da ordenação.\n */\n @Input('sortStart') matSortStart: tSortDirection = '';\n\n /** Define se a tabela possui suporte à expansão de linhas. */\n @Input({ transform: booleanAttribute })\n expandable: boolean = false;\n\n @Input({ alias: 'expandedRows' })\n expandedRowsInitial: TRow[] = [];\n\n /**\n * Define se a tabela exibirá a opção de \"expandir todos\".\n * - Válido apenas quando `selectable = true`.\n */\n @Input({ transform: booleanAttribute })\n expandAllEnabled: boolean = true;\n\n /**\n * Define se múltiplas linhas podem ser expandidas simultaneamente.\n * - Válido apenas quando `expandable = true`.\n */\n @Input({ transform: booleanAttribute })\n multiExpandable: boolean = true;\n\n /** Define em qual posição a column `expandable` será exibida. */\n @Input({ transform: numberAttribute })\n expandablePosition: number | null = null;\n\n @Input({ transform: booleanAttribute })\n expandableByClickInRow: boolean = false;\n\n /** Define se a tabela exibirá caixas de seleção para as linhas. */\n @Input({ transform: booleanAttribute })\n selectable: boolean = false;\n\n @Input({ transform: booleanAttribute })\n multiSelectionWithClick: boolean = false;\n\n /**\n * Define se múltiplas linhas podem ser selecionadas simultaneamente.\n * - Válido apenas quando `selectable = true`.\n */\n @Input({ transform: booleanAttribute })\n multiSelectable: boolean = true;\n\n @Input()\n expandableCompareWithFn: ((a: TRow, b: TRow) => boolean) | null = null;\n\n /**\n * Define se a tabela exibirá a opção de \"selecionar todos\".\n * - Válido apenas quando `selectable = true`.\n */\n @Input({ transform: booleanAttribute })\n selectAllEnabled: boolean = true;\n\n /** Define em qual posição a column `selectable` será exibida. */\n @Input({ transform: numberAttribute })\n selectablePosition: number | null = null;\n\n @Input({ transform: booleanAttribute })\n selectByClickInRow: boolean = false;\n\n @Input()\n selectCompareWithFn: ((a: TRow, b: TRow) => boolean) | null = null;\n\n @Input({ alias: 'selectedRows' })\n selectedRowsInitial: TRow[] = [];\n\n @Input() isRowSelectableFn: (row: TRow) => boolean = () => true;\n\n @Input() trackByFn: TrackByFunction<TRow> = (_, item) => item;\n\n @Input() columns: tTableColumnPartial[] | TableColumn[] = [];\n\n /** Define a coluna inicial do menu de contexto */\n @Input({ transform: numberAttribute })\n columnInitial: number | null = null;\n /** Define a coluna final do menu de contexto */\n @Input({ transform: numberAttribute })\n columnFinal: number | null = null;\n\n @Input({ transform: booleanAttribute }) paginator: boolean = false;\n @Input({ transform: booleanAttribute }) paginatorFrontend: boolean = false;\n @Input({ transform: booleanAttribute }) paginatorDisabled: boolean = false;\n\n private readonly _paginatorPageSize = signal(10);\n @Input({ transform: numberAttribute })\n set paginatorPageSize(value: number) {\n this._paginatorPageSize.set(value);\n }\n get paginatorPageSize(): number {\n return this._paginatorPageSize();\n }\n\n @Input({ transform: numberAttribute })\n paginatorPageNumber: number = 0;\n\n @Input({ transform: numberAttribute })\n paginatorLength: number = 0;\n\n @Input() paginatorPageSizeOptions: number[] = [10, 20, 30];\n\n @Input({ transform: booleanAttribute })\n paginatorHidePageSize: boolean = false;\n\n private _data: TRow[] = [];\n @Input()\n set data(value: TRow[]) {\n this._data = value ?? [];\n this.dataSource.data = this._data;\n\n // Se ainda não há nada selecionado, re-aplica a seleção inicial\n if ((this.selectedRows?.selected?.length ?? 0) === 0) {\n this._applyInitialSelection();\n }\n }\n get data(): TRow[] {\n return this._data;\n }\n\n /** Lista de itens do menu de contexto exibido ao passar o mouse sobre uma linha da tabela. */\n @Input() menuItemsContext: TableMenuItemContext<TRow>[] = [];\n\n /** Indica se a tabela está em modo de loading */\n @Input({ transform: booleanAttribute }) loading: boolean = false;\n\n @Output() onSort = new EventEmitter<BaseSortModel>();\n @Output() onExpandedRows = new EventEmitter<TRow[]>();\n @Output() onSelectedRows = new EventEmitter<TRow[]>();\n @Output() onSelectRow = new EventEmitter<TRow>();\n @Output() onPage = new EventEmitter<tPageEvent>();\n @Output() onClickRow = new EventEmitter<TRow>();\n\n protected get columnExpandDetailColspan(): number {\n return this.columnsToDisplay().length;\n }\n\n protected get _matSortDirection(): SortDirection {\n return !StringUtil.isEmpty(this.matSortDirection)\n ? this.matSortDirection === 'DESC'\n ? 'desc'\n : 'asc'\n : '';\n }\n\n protected get _matSortStart(): SortDirection {\n return !StringUtil.isEmpty(this.matSortDirection)\n ? (this.matSortDirection as SortDirection)\n : '';\n }\n\n constructor() {}\n\n ngOnInit(): void {\n if (ObjectUtil.isEmpty(this.selectedRows)) {\n this.selectedRows = new SelectionModel<TRow>(\n this.multiSelectable,\n [],\n true,\n (o1: TRow, o2: TRow) => {\n if (\n this.selectCompareWithFn &&\n typeof this.selectCompareWithFn === 'function'\n ) {\n return this.selectCompareWithFn(o1, o2);\n }\n\n return this._isEqualRow(o1, o2);\n },\n );\n }\n if (ObjectUtil.isEmpty(this.expandedRows)) {\n this.expandedRows = new SelectionModel<TRow>(\n this.multiExpandable,\n [],\n true,\n (o1: TRow, o2: TRow) => {\n if (\n this.expandableCompareWithFn &&\n typeof this.expandableCompareWithFn === 'function'\n ) {\n return this.expandableCompareWithFn(o1, o2);\n }\n\n return this._isEqualRow(o1, o2);\n },\n );\n }\n\n // aplica seleção/expansão iniciais de forma idempotente\n this._applyInitialSelection();\n this._applyInitialExpansion();\n }\n\n ngAfterViewInit(): void {\n this.closeMenuContext();\n }\n\n protected _columnWidth(width?: string | number): string {\n if (ObjectUtil.isEmpty(width)) {\n return '';\n }\n return CssUtil.coerceCssPixelValue(width);\n }\n\n protected onHandleSort(event: Sort): void {\n const sort: BaseSortModel = new BaseSortModel(\n event.active,\n event.direction as tSortDirection,\n );\n this.onSort.emit(sort);\n\n const pageEvent: tPageEvent = {\n pageIndex: this.paginatorPageNumber,\n pageSize: this.paginatorPageSize,\n length: this.paginatorLength,\n sort: sort,\n pageSizeOptions: this.paginatorPageSizeOptions,\n };\n this.onHandlePage(pageEvent);\n }\n\n protected isAllExpanded(): boolean {\n const numSelected: number = this.expandedRows?.selected?.length ?? 0;\n const numRows: number = this.dataSource.data.length;\n return numSelected === numRows && numRows > 0;\n }\n\n protected onHandleToggleExpandAll(): void {\n if (this.isAllExpanded()) {\n this.expandedRows?.clear();\n this._changeDetectionRef.markForCheck();\n return;\n }\n\n this.expandedRows?.select(...this.dataSource.data);\n this.onExpandedRows.emit(this.expandedRows?.selected ?? []);\n this._changeDetectionRef.markForCheck();\n }\n\n protected isAllSelected(): boolean {\n const numSelected: number = this.selectedRows?.selected?.length ?? 0;\n const numRows: number = this.dataSource.data.length;\n return numSelected === numRows && numRows > 0;\n }\n\n protected onHandleToggleSelectAll(): void {\n if (this.isAllSelected()) {\n this.selectedRows?.clear();\n this.onSelectedRows.emit([]);\n this._changeDetectionRef.markForCheck();\n return;\n }\n\n this.selectedRows?.select(...this.dataSource.data);\n this.onSelectedRows.emit(this.selectedRows?.selected ?? []);\n this._changeDetectionRef.markForCheck();\n }\n\n protected onHandleSelectRow(row: TRow): void {\n if (this.loading || !this.isRowSelectableFn(row)) {\n return;\n }\n this.selectedRows?.toggle(row);\n this.onSelectRow.emit(row);\n this.onSelectedRows.emit(this.selectedRows?.selected ?? []);\n this._changeDetectionRef.markForCheck();\n }\n\n protected coerceConditionByColumn(\n condition: tTableColumnCondition<TRow> | null | undefined,\n ): boolean {\n if (ObjectUtil.isEmpty(condition)) {\n return false;\n }\n if (typeof condition === 'function') {\n return !!condition(this.data[0]);\n }\n return !!condition;\n }\n\n protected coerceConditionByRow(\n condition: tTableColumnCondition<TRow> | null | undefined,\n row: TRow | null,\n ): boolean {\n if (ObjectUtil.isEmpty(condition) || ObjectUtil.isEmpty(row)) {\n return false;\n }\n if (typeof condition === 'function') {\n return !!condition(row);\n }\n return !!condition;\n }\n\n protected columnCellAction(\n column: TableColumn | tTableColumnPartial,\n row: TRow,\n eventType: tTableColumnActionType,\n ): void {\n if (ObjectUtil.isEmpty(column) || ObjectUtil.isEmpty(column.action)) {\n return;\n }\n\n const expectedType = column.typeAction ?? 'click';\n if (expectedType !== eventType) {\n return;\n }\n\n column.action.call(this, row);\n }\n\n protected columnCellValue(column: TableColumn | tTableColumnPartial, row: TRow): string {\n if (ObjectUtil.isEmpty(column)) {\n return '';\n }\n\n const { value } = column;\n if (ObjectUtil.isEmpty(value)) {\n return '';\n }\n if (typeof value === 'function') {\n const result = value(row);\n return result != null ? String(result) : '';\n }\n return value != null ? String(value) : '';\n }\n\n protected columnCellSubValue(column: TableColumn | tTableColumnPartial, row: TRow): string {\n if (ObjectUtil.isEmpty(column)) {\n return '';\n }\n\n const { subValue } = column;\n if (ObjectUtil.isEmpty(subValue)) {\n return '';\n }\n if (typeof subValue === 'function') {\n const result = subValue(row);\n return result != null ? String(result) : '';\n }\n return subValue != null ? String(subValue) : '';\n }\n\n protected onHandlePage(pageEvent: tPageEvent): void {\n this.paginatorPageSize = pageEvent!.pageSize;\n this.onPage.emit(pageEvent);\n this._changeDetectionRef.markForCheck();\n }\n\n protected onHandleClickRow(row: TRow): void {\n if (this.loading || (this.selectByClickInRow && !this.isRowSelectableFn(row))) {\n return;\n }\n this.closeMenuContext();\n this.onClickRow.emit(row);\n\n if (this.selectByClickInRow) {\n this.onHandleSelectRow(row);\n }\n if (this.expandableByClickInRow) {\n this.expandedRows?.toggle(row);\n this.onExpandedRows.emit(this.expandedRows?.selected ?? []);\n }\n this._changeDetectionRef.markForCheck();\n }\n\n protected showMenuContext(event: MouseEvent, row: TRow): void {\n const menuContextWrapperElement = this.menuContextWrapperElement();\n if (ObjectUtil.isEmpty(menuContextWrapperElement) || this.loading) {\n return;\n }\n\n menuContextWrapperElement.style.visibility = 'hidden';\n\n this._ngZone.runOutsideAngular((_) => {\n const rowlEl = event.currentTarget as HTMLElement;\n const cells = (event.currentTarget as HTMLTableRowElement).children;\n const menuContextRect = menuContextWrapperElement.getBoundingClientRect();\n const rowRect = rowlEl.getBoundingClientRect();\n\n if (!menuContextRect || !rowRect) {\n return;\n }\n\n const rowTop = rowRect.top + (rowRect.height - 1);\n let startX = rowRect.left;\n let endX = rowRect.right - menuContextRect.width;\n\n if (!NumberUtil.isEmpty(this.columnInitial) && cells[this.columnInitial]) {\n startX = cells[this.columnInitial].getBoundingClientRect().left;\n } else if (!NumberUtil.isEmpty(this.columnInitial)) {\n throw new Error(`Initial column is not available`);\n }\n\n if (!NumberUtil.isEmpty(this.columnFinal) && cells[this.columnFinal]) {\n endX =\n cells[this.columnFinal].getBoundingClientRect().right - menuContextRect.width;\n } else if (!NumberUtil.isEmpty(this.columnInitial)) {\n throw new Error(`Final column is not available`);\n }\n\n const offsetX = event.clientX - 15;\n const clampedX = Math.min(Math.max(offsetX, startX), endX);\n\n this._ngZone.run(() => {\n menuContextWrapperElement.style.top = `${rowTop}px`;\n menuContextWrapperElement.style.left = `${clampedX}px`;\n menuContextWrapperElement.style.visibility = 'visible';\n });\n });\n\n this.menuContextRow.set(row);\n }\n\n protected closeMenuContext(): void {\n setTimeout(() => {\n if (!this.menuContextHover && (this.menuContextRef || this.menuItemsContext?.length)) {\n this.menuContextRow.set(null);\n this.menuContextHover = false;\n\n const menuContextWrapperElement = this.menuContextWrapperElement();\n if (!ObjectUtil.isEmpty(menuContextWrapperElement)) {\n menuContextWrapperElement.style.visibility = 'hidden';\n }\n }\n }, 0);\n }\n\n private _applyInitialSelection(): void {\n if (ObjectUtil.isEmpty(this.selectedRows)) {\n return;\n }\n\n const initial = this.selectedRowsInitial ?? [];\n if (ArrayUtil.isEmpty(initial)) {\n return;\n }\n\n this.selectedRows.clear();\n this.selectedRows.select(...initial);\n this.onSelectedRows.emit([...this.selectedRows.selected]);\n this._changeDetectionRef.markForCheck();\n }\n\n private _applyInitialExpansion(): void {\n if (ObjectUtil.isEmpty(this.expandedRows)) {\n return;\n }\n\n const initial = this.expandedRowsInitial ?? [];\n if (ArrayUtil.isEmpty(initial)) {\n return;\n }\n\n this.expandedRows.clear();\n this.expandedRows.select(...initial);\n this._changeDetectionRef.markForCheck();\n }\n\n private _isEqualRow(row1: unknown, row2: unknown): boolean {\n if (row1 && row2 && typeof row1 === 'object' && typeof row2 === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const row1Id = (row1 as any)['id'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const row2Id = (row2 as any)['id'];\n\n if (!UUIDUtil.isEmpty(row1Id) && !UUIDUtil.isEmpty(row2Id)) {\n return row1Id === row2Id;\n }\n }\n\n return JSON.stringify(row1) === JSON.stringify(row2);\n }\n}\n","<table\n #gTable\n class=\"g-table-content\"\n tabindex=\"-1\"\n cdk-table\n [dataSource]=\"dataSource\"\n [trackBy]=\"trackByFn\"\n [multiTemplateDataRows]=\"expandable\"\n matSort\n [matSortActive]=\"matSortActive\"\n [matSortDirection]=\"_matSortDirection\"\n [matSortDisableClear]=\"matSortDisableClear\"\n [matSortDisabled]=\"matSortDisabled\"\n [matSortStart]=\"_matSortStart\"\n (matSortChange)=\"onHandleSort($event)\"\n (mouseleave)=\"menuContextHover = false; closeMenuContext()\"\n (blur)=\"menuContextHover = false; closeMenuContext()\">\n <!-- Expand Column -->\n @if (expandable) {\n <ng-container cdkColumnDef=\"expand\">\n <th\n cdk-header-cell\n *cdkHeaderCellDef\n class=\"g-table-column-fixed-wrapper\">\n @if (expandAllEnabled && multiExpandable) {\n <button\n type=\"button\"\n class=\"g-table-button-expand g-table-button-expand-all\"\n [class.g-table-button-expanded]=\"\n expandedRows?.hasValue() && isAllExpanded()\n \"\n (click)=\"onHandleToggleExpandAll()\">\n <gipi-icon\n [icon]=\"\n isAllExpanded() ? 'keyboard_arrow_up' : 'keyboard_arrow_down'\n \" />\n </button>\n } @else {\n \n }\n </th>\n <td\n cdk-cell\n *cdkCellDef=\"let row\"\n class=\"g-table-column-fixed-wrapper\">\n <button\n mat-icon-button\n aria-label=\"expand row\"\n class=\"g-table-button-expand\"\n [class.g-table-button-expanded]=\"expandedRows?.isSelected(row)\"\n (click)=\"expandedRows?.toggle(row); $event.stopPropagation()\">\n <gipi-icon\n [icon]=\"\n expandedRows?.isSelected(row)\n ? 'keyboard_arrow_up'\n : 'keyboard_arrow_down'\n \" />\n </button>\n </td>\n </ng-container>\n }\n\n <!-- Checkbox Column -->\n @if (selectable) {\n <ng-container cdkColumnDef=\"select\">\n <th\n cdk-header-cell\n *cdkHeaderCellDef\n class=\"g-table-column-fixed-wrapper\">\n @if (selectAllEnabled && multiSelectable) {\n <gipi-checkbox\n [variant]=\"'primary'\"\n [checked]=\"selectedRows?.hasValue() && isAllSelected()\"\n [indeterminate]=\"selectedRows?.hasValue() && !isAllSelected()\"\n (onChange)=\"$event ? onHandleToggleSelectAll() : null\" />\n } @else {\n \n }\n </th>\n <td\n cdk-cell\n *cdkCellDef=\"let row\"\n class=\"g-table-column-fixed-wrapper\">\n <gipi-checkbox\n [variant]=\"'secondary'\"\n [disabled]=\"!isRowSelectableFn(row)\"\n [checked]=\"selectedRows?.isSelected(row)\"\n (click)=\"$event.stopPropagation()\"\n (onChange)=\"$event ? onHandleSelectRow(row) : null\" />\n </td>\n </ng-container>\n }\n\n <!-- Dynamic Columns -->\n @for (column of columns; track column) {\n <ng-container [cdkColumnDef]=\"column.property\">\n <th\n cdk-header-cell\n *cdkHeaderCellDef\n [mat-sort-header]=\"column.property\"\n [disabled]=\"!coerceConditionByColumn(column.sortable)\"\n [disableClear]=\"coerceConditionByColumn(column.sortDisableClear)\"\n [style.padding-inline.px]=\"column.borderSpacing\"\n [style.min-width]=\"_columnWidth(column.minWidth)\"\n [style.width]=\"_columnWidth(column.width)\"\n [style.max-width]=\"_columnWidth(column.maxWidth)\"\n [style.align-content]=\"column.alignVerHeader\"\n [style.justify-items]=\"column.alignHorHeader\"\n [class.g-table-align-center]=\"column.alignTextHeader === 'center'\"\n [class.g-table-align-end]=\"column.alignTextHeader === 'end'\"\n [class.g-table-align-start]=\"column.alignTextHeader === 'start'\"\n [class.g-table-align-left]=\"column.alignTextHeader === 'left'\"\n [class.g-table-align-right]=\"column.alignTextHeader === 'right'\"\n [class.g-table-align-justify]=\"column.alignTextHeader === 'justify'\">\n @if (column.templateHeader) {\n <ng-container\n [ngTemplateOutlet]=\"column.templateHeader\"\n [ngTemplateOutletContext]=\"{ $implicit: column }\" />\n } @else {\n <span\n [gTextEllipsis]=\"1\"\n [gTextEllipsisEnabled]=\"coerceConditionByColumn(column.slice)\">\n {{ column.label }}\n </span>\n }\n </th>\n <td\n cdk-cell\n *cdkCellDef=\"let row\"\n [style.padding-inline.px]=\"column.borderSpacing\"\n [style.min-width]=\"_columnWidth(column.minWidth)\"\n [style.width]=\"\n !!column.maxWidth && column.maxWidth !== '100%'\n ? '100%'\n : _columnWidth(column.width)\n \"\n [style.max-width]=\"_columnWidth(column.maxWidth)\"\n [style.align-content]=\"column.alignVerCell\"\n [style.justify-items]=\"column.alignHorCell\"\n [class.g-table-align-center]=\"column.alignTextCell === 'center'\"\n [class.g-table-align-end]=\"column.alignTextCell === 'end'\"\n [class.g-table-align-start]=\"column.alignTextCell === 'start'\"\n [class.g-table-align-left]=\"column.alignTextCell === 'left'\"\n [class.g-table-align-right]=\"column.alignTextCell === 'right'\"\n [class.g-table-align-justify]=\"column.alignTextCell === 'justify'\"\n (click)=\"columnCellAction(column, row, 'click')\"\n (dblclick)=\"columnCellAction(column, row, 'dblClick')\"\n (mouseenter)=\"columnCellAction(column, row, 'mouseEnter')\"\n (mouseleave)=\"columnCellAction(column, row, 'mouseLeave')\">\n @if (column.templateCell) {\n <ng-container\n [ngTemplateOutlet]=\"column.templateCell\"\n [ngTemplateOutletContext]=\"{ $implicit: row }\" />\n } @else {\n <span\n [gTextEllipsis]=\"column.subValue ? 1 : 2\"\n [gTextEllipsisEnabled]=\"coerceConditionByRow(column.slice, row)\">\n {{ columnCellValue(column, row) }}\n </span>\n\n @if (column.subValue) {\n <small\n [gTextEllipsis]=\"1\"\n [gTextEllipsisEnabled]=\"coerceConditionByRow(column.slice, row)\">\n {{ columnCellSubValue(column, row) }}\n </small>\n }\n }\n </td>\n </ng-container>\n }\n\n <!-- Actions Column -->\n @if (actionsRef) {\n <ng-container cdkColumnDef=\"actions\">\n <th\n cdk-header-cell\n *cdkHeaderCellDef\n [style.justify-items]=\"'center'\"\n [style.align-content]=\"'center'\">\n Ações\n </th>\n <td\n cdk-cell\n *cdkCellDef=\"let row\"\n [style.justify-items]=\"'center'\"\n [style.align-content]=\"'center'\">\n <ng-template\n [ngTemplateOutlet]=\"actionsRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row }\" />\n </td>\n </ng-container>\n }\n\n <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\n @if (expandable && expandDetailRef) {\n <ng-container cdkColumnDef=\"expandedDetail\">\n <td\n cdk-cell\n *cdkCellDef=\"let row\"\n [attr.colspan]=\"columnExpandDetailColspan\"\n style=\"padding: 0 !important\">\n <div\n class=\"g-table-expand-detail-wrapper\"\n [class.g-table-expand-detail-wrapper-expanded]=\"expandedRows?.isSelected(row)\">\n <ng-template\n [ngTemplateOutlet]=\"expandDetailRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row }\"></ng-template>\n </div>\n </td>\n </ng-container>\n }\n\n <tr\n cdk-header-row\n *cdkHeaderRowDef=\"columnsToDisplay()\"\n class=\"g-table-header-row\"\n (focus)=\"menuContextHover = false; closeMenuContext()\"\n (mouseenter)=\"menuContextHover = false; closeMenuContext()\"></tr>\n\n <tr\n cdk-row\n *cdkRowDef=\"let row; columns: columnsToDisplay()\"\n class=\"g-table-row\"\n [class.g-table-row-hover]=\"menuContextRow() === row\"\n (mousemove)=\"showMenuContext($event, row)\"\n (click)=\"onHandleClickRow(row)\"></tr>\n\n @if (expandable) {\n <tr\n cdk-row\n *cdkRowDef=\"let row; columns: ['expandedDetail']\"\n class=\"g-table-expand-detail-row\"\n [class.g-table-expand-detail-row-expanded]=\"expandedRows?.isSelected(row)\"\n (focus)=\"menuContextHover = false; closeMenuContext()\"\n (mouseenter)=\"menuContextHover = false; closeMenuContext()\"></tr>\n }\n</table>\n\n@if (loading) {\n <gipi-loading type=\"progress-bar\" />\n}\n\n@if (!loading && dataSource.data.length <= 0) {\n <gipi-empty />\n}\n\n@if (!loading && dataSource.data.length > 0) {\n <div\n #gTableFooter\n class=\"g-table-footer-row\">\n @if (footerRef) {\n <ng-template\n [ngTemplateOutlet]=\"footerRef\"\n [ngTemplateOutletContext]=\"{ $implicit: dataSource }\" />\n }\n\n @if (paginator) {\n <mat-paginator\n class=\"g-table-paginator\"\n [disabled]=\"paginatorDisabled || loading\"\n [hidePageSize]=\"paginatorHidePageSize\"\n [length]=\"paginatorLength\"\n [pageIndex]=\"paginatorPageNumber\"\n [pageSize]=\"paginatorPageSize\"\n [pageSizeOptions]=\"paginatorPageSizeOptions\"\n [selectConfig]=\"{}\"\n [showFirstLastButtons]=\"true\"\n (page)=\"onHandlePage($event)\" />\n }\n </div>\n}\n\n@if (!loading && dataSource.data.length && (menuItemsContext.length > 0 || menuContextRef)) {\n <div\n #menuContextWrapper\n class=\"g-table-menu-context\"\n [attr.id]=\"'menuContext'\"\n [attr.role]=\"'menu'\"\n (mouseover)=\"menuContextHover = true\"\n (focus)=\"menuContextHover = true\"\n (mouseleave)=\"menuContextHover = false; closeMenuContext()\"\n (blur)=\"menuContextHover = false; closeMenuContext()\">\n @if (menuItemsContext && menuItemsContext.length > 0) {\n @for (menu of menuItemsContext; track menu) {\n @if (coerceConditionByRow(menu.visible, menuContextRow())) {\n <button\n class=\"g-table-menu-item-context\"\n [class.g-table-menu-item-context-show-tag-new]=\"\n coerceConditionByRow(menu.showTagNew, menuContextRow())\n \"\n [attr.id]=\"menu.id\"\n [name]=\"menu.name\"\n [tabIndex]=\"$index\"\n [matTooltip]=\"menu.tooltip\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipClass]=\"'g-table-menu-item-context-tooltip'\"\n (click)=\"\n menu?.action(menuContextRow()!);\n menuContextHover = false;\n closeMenuContext()\n \">\n @if (menu.icon || menu.svgIcon) {\n <gipi-icon\n class=\"g-button-icon\"\n [size]=\"22\"\n [icon]=\"menu.icon\"\n [svgIcon]=\"menu.svgIcon\"\n [fontSet]=\"menu.iconFontSet\"\n [variation]=\"menu.iconVariation\"\n [weight]=\"menu.iconWeight\"\n [grade]=\"menu.iconGrade\"\n [optical]=\"menu.iconOptical\" />\n }\n </button>\n }\n }\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"menuContextRef\"\n [ngTemplateOutletContext]=\"{ $implicit: menuContextRow() }\" />\n }\n </div>\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n signal,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n tIconFontSet,\n tIconGrade,\n tIconOptical,\n tIconVariation,\n tIconWeight,\n} from '../icon/icon.component';\n\n@Component({\n selector: 'gipi-tab',\n exportAs: 'gTab',\n template: `\n @if (!!active) {\n @if (!!template) {\n <ng-container [ngTemplateOutlet]=\"template\" />\n } @else {\n <ng-content />\n }\n }\n `,\n styleUrl: './tabs.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'tabPanelUniqueId',\n '[attr.name]': 'tabPanelUniqueId',\n '[attr.role]': `'tabpanel'`,\n '[style.display]': '!!active ? \"block\" : \"none\"',\n '[attr.aria-selected]': '!!active',\n '[attr.aria-disabled]': '!!disabled',\n class: 'g-tab',\n },\n imports: [CommonModule],\n})\nexport class TabComponent implements OnChanges {\n protected readonly tabPanelUniqueId: string = inject(_IdGenerator).getId('gipi-tab-panel-');\n protected readonly tabUniqueId: string = inject(_IdGenerator).getId('gipi-tab-');\n\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n\n protected _active = signal<boolean>(false);\n public set active(value: boolean) {\n this._active.set(value);\n this._changeDetectorRef.markForCheck();\n }\n public get active(): boolean {\n return this._active();\n }\n\n @Input() id: string = this.tabUniqueId;\n @Input() name: string = this.tabUniqueId;\n\n @Input() label: string = '';\n\n @Input() template: TemplateRef<void> | null = null;\n\n @Input() icon: string = '';\n @Input() svgIcon: string = '';\n @Input() iconFontSet: tIconFontSet = 'ROUNDED';\n @Input({ transform: numberAttribute }) iconSize: number = 20;\n @Input({ alias: 'iconVariation' }) iconVariation: tIconVariation = 'OUTLINED';\n @Input({ alias: 'weight' }) iconWeight: tIconWeight = 400;\n @Input({ alias: 'grade' }) iconGrade: tIconGrade = 'DEFAULT';\n @Input({ alias: 'optical' }) iconOptical: tIconOptical = 20;\n\n @Input({ transform: booleanAttribute })\n disabled: boolean = false;\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled']) {\n this._changeDetectorRef.markForCheck();\n }\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n numberAttribute,\n Output,\n QueryList,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { ArrayUtil } from '../../utils/array.util';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { IconComponent } from '../icon/icon.component';\nimport { TabComponent } from './tab.component';\n\n@Component({\n selector: 'gipi-tab-group',\n exportAs: 'gTabGroup',\n template: `\n <nav\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n [disableRipple]=\"true\"\n [mat-stretch-tabs]=\"false\">\n @for (tab of tabsElement(); track tab) {\n <a\n mat-tab-link\n class=\"g-tab-group-link\"\n [attr.id]=\"tab.id\"\n [attr.name]=\"tab.name\"\n [class.g-tab-group-link-active]=\"!!tab.active\"\n [disabled]=\"!!tab.disabled\"\n (click)=\"selectTab(tab)\"\n (keydown.enter)=\"selectTab(tab)\">\n @if (!!tab.icon || !!tab.svgIcon) {\n <gipi-icon\n class=\"g-tab-group-link-icon\"\n [icon]=\"tab.icon\"\n [svgIcon]=\"tab.svgIcon\"\n [size]=\"tab.iconSize\"\n [fontSet]=\"tab.iconFontSet\"\n [variation]=\"tab.iconVariation\"\n [weight]=\"tab.iconWeight\"\n [grade]=\"tab.iconGrade\"\n [optical]=\"tab.iconOptical\" />\n }\n {{ tab.label }}\n </a>\n }\n </nav>\n <mat-tab-nav-panel #tabPanel>\n <ng-content />\n </mat-tab-nav-panel>\n `,\n styleUrl: './tabs.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n '[attr.role]': `'tablist'`,\n class: 'g-tab-group',\n },\n imports: [CommonModule, MatTabsModule, IconComponent],\n})\nexport class TabGroupComponent implements AfterContentInit {\n @ContentChildren(TabComponent)\n set tabsRef(queryList: QueryList<TabComponent>) {\n if (queryList) {\n this.tabsElement.set(queryList.toArray());\n\n // Atualiza o signal toda vez que a lista muda dinamicamente\n queryList.changes\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this.tabsElement.set(queryList.toArray()));\n }\n }\n\n private readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-tab-group-');\n\n private readonly _changeDetectionRef = inject(ChangeDetectorRef);\n private readonly _destroyRef = inject(DestroyRef);\n\n protected readonly tabsElement = signal<TabComponent[]>([]);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input({ transform: booleanAttribute })\n disabled: BooleanInput = false;\n\n @Input({ transform: numberAttribute })\n startTab: number | null = null;\n\n @Output() selectionChange = new EventEmitter<void>();\n\n constructor() {}\n\n ngAfterContentInit(): void {\n // Define a aba ativa inicial\n this._setStartActiveTab();\n }\n\n private _setStartActiveTab(): void {\n const tabs = this.tabsElement();\n if (ArrayUtil.isEmpty(tabs)) {\n return;\n }\n\n // Já existe uma aba ativa (e não desabilitada)\n const alreadyActive = tabs.some((tab) => tab.active && !tab.disabled);\n if (alreadyActive) {\n return;\n }\n\n const startIndex = this.startTab ?? 0;\n const isValidIndex = startIndex >= 0 && startIndex < tabs.length;\n const targetTab = isValidIndex ? tabs[startIndex] : tabs[0];\n\n // Se aba inicial está desabilitada, tenta a primeira habilitada\n const tabToActivate = !targetTab.disabled\n ? targetTab\n : (tabs.find((tab) => !tab.disabled) ?? tabs[0]);\n\n this.selectTab(tabToActivate);\n }\n\n public selectTab(tab: TabComponent): void {\n if (ObjectUtil.isEmpty(tab) || tab?.disabled) {\n return;\n }\n\n // Desativa todas as abas\n this.tabsElement().forEach((t) => (t.active = false));\n\n // Ativa a aba selecionada\n tab.active = true;\n this.selectionChange.emit();\n this._changeDetectionRef.markForCheck();\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport {\n IconComponent,\n tIconFontSet,\n tIconGrade,\n tIconOptical,\n tIconVariation,\n tIconWeight,\n} from '../icon/icon.component';\n\ntype tTagVariant = 'primary' | 'secondary' | 'success' | 'information' | 'warning' | 'danger';\ntype tTagIconPosition = 'left' | 'right';\n\n@Component({\n selector: 'gipi-tag',\n exportAs: 'gTag',\n template: `\n @if (fiber) {\n <gipi-icon\n class=\"g-tag-fiber\"\n [icon]=\"'fiber_manual_record'\"\n [size]=\"20\"\n [fontSet]=\"'ROUNDED'\"\n [variation]=\"'FILLED'\"\n [matTooltip]=\"label\" />\n } @else {\n <div\n class=\"g-tag-content\"\n [class.g-tag-primary]=\"variant === 'primary'\"\n [class.g-tag-secondary]=\"variant === 'secondary'\"\n [class.g-tag-success]=\"variant === 'success'\"\n [class.g-tag-information]=\"variant === 'information'\"\n [class.g-tag-warning]=\"variant === 'warning'\"\n [class.g-tag-danger]=\"variant === 'danger'\"\n [class.g-tag-rounded]=\"rounded\">\n @if (icon || svgIcon) {\n <gipi-icon\n class=\"g-tag-icon\"\n [icon]=\"icon\"\n [svgIcon]=\"svgIcon\"\n [size]=\"16\"\n [fontSet]=\"iconFontSet\"\n [variation]=\"iconVariation\"\n [weight]=\"iconWeight\"\n [grade]=\"iconGrade\"\n [optical]=\"iconOptical\" />\n }\n <div class=\"g-tag-text\">{{ label }}</div>\n </div>\n }\n `,\n styleUrls: ['./tag.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n '[attr.role]': `'status'`,\n\n class: 'g-tag',\n },\n imports: [CommonModule, MatTooltipModule, IconComponent],\n})\nexport class TagComponent {\n private readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-tag-');\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() variant: tTagVariant = 'primary';\n @Input({ transform: booleanAttribute }) rounded: boolean = false;\n @Input() label: string = '';\n @Input({ transform: booleanAttribute }) fiber: boolean = false;\n\n @Input() icon: string = '';\n @Input() svgIcon: string = '';\n @Input() iconFontSet: tIconFontSet = 'ROUNDED';\n @Input({ alias: 'iconVariation' }) iconVariation: tIconVariation = 'OUTLINED';\n @Input({ alias: 'weight' }) iconWeight: tIconWeight = 400;\n @Input({ alias: 'grade' }) iconGrade: tIconGrade = 'DEFAULT';\n @Input({ alias: 'optical' }) iconOptical: tIconOptical = 20;\n @Input() iconPos: tTagIconPosition = 'left';\n}\n","/* eslint-disable @angular-eslint/no-output-rename */\n/* eslint-disable @angular-eslint/no-output-native */\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n DestroyRef,\n ElementRef,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { HelpfulTipComponent } from '../helpful-tip/helpful-tip.component';\n\n@Component({\n selector: 'gipi-textarea',\n exportAs: 'gTextarea',\n template: `\n @if (label) {\n <label\n class=\"g-textarea-label\"\n [attr.for]=\"_matFormFieldUniqueId\">\n {{ label }}\n @if (required) {\n <span>*</span>\n }\n @if (help) {\n <gipi-helpful-tip [tooltip]=\"help\" />\n }\n </label>\n }\n <mat-form-field\n #formFieldTextarea\n class=\"g-textarea-form-field\"\n appearance=\"outline\"\n [attr.id]=\"_matFormFieldUniqueId\"\n [hintLabel]=\"hintLabel\">\n <textarea\n matInput\n [style.min-height.px]=\"60\"\n [style.max-height.px]=\"110\"\n [cdkTextareaAutosize]=\"!disabled\"\n [cdkAutosizeMaxRows]=\"maxRows\"\n [cdkAutosizeMinRows]=\"minRows\"\n [placeholder]=\"!!disabled ? '' : placeholder\"\n [type]=\"type\"\n [attr.id]=\"_matFormFieldUniqueId + '-textarea'\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [attr.aria-invalid]=\"errorState ? 'true' : null\"\n [autocomplete]=\"autocomplete\"\n [pattern]=\"pattern\"\n [minlength]=\"minLength\"\n [maxlength]=\"maxLength\"\n [disabled]=\"!!disabled\"\n [readonly]=\"!!readonly\"\n [required]=\"!!required\"\n [value]=\"value\"\n [(ngModel)]=\"value\"\n (keydown)=\"onInputKeydown($event)\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onChangeEvent.emit($event)\"></textarea>\n\n @if (prefixRef) {\n <ng-container matPrefix>\n <ng-template [ngTemplateOutlet]=\"prefixRef\"></ng-template>\n </ng-container>\n }\n\n @if (suffixRef) {\n <ng-container matSuffix>\n <ng-template [ngTemplateOutlet]=\"suffixRef\"></ng-template>\n </ng-container>\n }\n </mat-form-field>\n `,\n styleUrl: './textarea.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n class: 'g-textarea',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: TextareaComponent,\n multi: true,\n },\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n HelpfulTipComponent,\n CdkTextareaAutosize,\n ],\n})\nexport class TextareaComponent implements ControlValueAccessor, Validator, OnChanges {\n @ContentChild('prefix', { static: false })\n prefixRef: TemplateRef<ElementRef> | null = null;\n\n @ContentChild('suffix', { static: false })\n suffixRef: TemplateRef<ElementRef> | null = null;\n\n @ViewChild(NgControl, { static: false })\n ngControl?: NgControl;\n\n protected readonly _matFormFieldUniqueId: string =\n inject(_IdGenerator).getId('gipi-textarea-control-');\n\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-textarea-');\n\n protected destroyRef = inject(DestroyRef);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() label: string = '';\n\n @Input() placeholder: string = '';\n\n @Input() help: string = '';\n\n @Input() hintLabel: string = '';\n\n @Input() type: string = 'text';\n\n @Input({ transform: booleanAttribute })\n disabled: boolean = false;\n\n @Input({ transform: booleanAttribute })\n readonly: boolean = false;\n\n @Input({ transform: booleanAttribute })\n required: boolean = false;\n\n @Input() pattern: string | RegExp = '';\n\n @Input({ transform: numberAttribute })\n minRows: number = 2;\n\n @Input({ transform: numberAttribute })\n maxRows: number = 4;\n\n @Input({ transform: numberAttribute })\n minLength: number = 0;\n\n @Input({ transform: numberAttribute })\n maxLength: number = 255;\n\n private _autocomplete: 'on' | 'off' = 'off';\n @Input() get autocomplete(): 'on' | 'off' {\n return this._autocomplete;\n }\n set autocomplete(value: 'on' | 'off') {\n this._autocomplete = value;\n }\n\n private _lowercase: boolean = false;\n @Input() get lowercase(): boolean {\n return this._lowercase;\n }\n set lowercase(value: boolean) {\n this._lowercase = booleanAttribute(value);\n }\n\n private _uppercase: boolean = false;\n @Input() get uppercase(): boolean {\n return this._uppercase;\n }\n set uppercase(value: boolean) {\n this._uppercase = booleanAttribute(value);\n }\n\n private _spacedrop: boolean = false;\n @Input({})\n set spacedrop(value: boolean) {\n this._spacedrop = booleanAttribute(value);\n }\n get spacedrop(): boolean {\n return this._spacedrop;\n }\n\n private _value: string | number = '';\n @Input()\n get value(): string | number {\n return this._value;\n }\n set value(value: string | number) {\n let valueAux: string | number = value;\n valueAux = this._checkSpaceDrop(valueAux);\n valueAux = this._checkLowercase(valueAux);\n valueAux = this._checkUppercase(valueAux);\n this._value = valueAux;\n\n this._onChange(this._value);\n }\n\n @Output('focus') readonly onFocusEvent = new EventEmitter<FocusEvent>();\n @Output('blur') readonly onBlurEvent = new EventEmitter<FocusEvent>();\n @Output('keydown') readonly onKeydownEvent = new EventEmitter<KeyboardEvent>();\n @Output('change') readonly onChangeEvent = new EventEmitter<Event>();\n\n protected get errorState(): boolean {\n return !!this.ngControl?.invalid && !!this.ngControl?.touched;\n }\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['required']) {\n this._validatorChangeFn();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onChange: (value: string | number) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onTouched: () => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _validatorChangeFn: () => void = () => {};\n\n public writeValue(value: string | number): void {\n this.value = value;\n }\n\n public registerOnChange(fn: (value: string | number) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public validate(control: AbstractControl<string | number>): ValidationErrors | null {\n return this.required && !control.value ? { required: true } : null;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this._validatorChangeFn = fn;\n }\n\n private _checkSpaceDrop(value: string | number): string | number {\n if (this.spacedrop && value) {\n return String(value).replace(/\\s/g, '');\n }\n return value;\n }\n\n private _checkUppercase(value: string | number): string | number {\n if (this.uppercase && value) {\n return String(value).toUpperCase();\n }\n return value;\n }\n\n private _checkLowercase(value: string | number): string | number {\n if (this.lowercase && value) {\n return String(value).toLowerCase();\n }\n return value;\n }\n\n protected onInputKeydown(event: KeyboardEvent): void {\n if (this.readonly || this.disabled) {\n return;\n }\n this.onKeydownEvent.emit(event);\n }\n\n protected onInputFocus(event: FocusEvent): void {\n if (this.disabled) {\n return;\n }\n this.onFocusEvent.emit(event);\n }\n\n protected onInputBlur(event: FocusEvent): void {\n if (this.disabled) {\n return;\n }\n this.onBlurEvent.emit(event);\n this._onTouched();\n }\n}\n","/* eslint-disable @angular-eslint/no-output-native */\n/* eslint-disable @angular-eslint/no-output-rename */\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n OnChanges,\n Output,\n signal,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\n\nexport interface iToggleSwitchChange {\n originalEvent: Event;\n checked: boolean;\n value: unknown;\n}\n\n@Component({\n selector: 'gipi-toggle-switch',\n template: `\n <div\n tabindex=\"0\"\n class=\"g-toggle-switch-content\"\n [class.g-toggle-switch-disabled]=\"disabled\"\n (keydown)=\"onHandleKeydown($event)\"\n (click)=\"onHandleClick($event)\">\n <input\n #inputRef\n type=\"checkbox\"\n class=\"g-toggle-switch-checkbox\"\n [checked]=\"isChecked()\"\n [disabled]=\"disabled\"\n (focus)=\"onHandleFocus($event)\"\n (blur)=\"onHandleBlur($event)\" />\n <span class=\"g-toggle-switch-slider\"></span>\n </div>\n @if (label) {\n <label\n #labelRef\n tabindex=\"0\"\n class=\"g-toggle-switch-label\"\n [attr.for]=\"_inputId\"\n [class.disabled]=\"disabled\"\n (keydown)=\"onHandleKeydown($event)\"\n (click)=\"onHandleClick($event)\">\n {{ label }}\n </label>\n }\n `,\n styleUrl: './toggle-switch.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[name]': 'name',\n class: 'g-toggle-switch',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ToggleSwitchComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: ToggleSwitchComponent,\n multi: true,\n },\n ],\n imports: [CommonModule, FormsModule],\n})\nexport class ToggleSwitchComponent implements ControlValueAccessor, Validator, OnChanges {\n @ViewChild('inputRef') _inputRef!: ElementRef<HTMLInputElement>;\n\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-toggle-switch-');\n protected _inputId: string = this._uniqueId + '-input';\n\n private _changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n private _modelValue = signal<unknown>(false);\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n @Input() label: string = '';\n\n @Input({ transform: booleanAttribute })\n required: boolean = false;\n\n @Input({ transform: booleanAttribute })\n readonly: boolean = false;\n\n @Input() trueValue: unknown = true;\n @Input() falseValue: unknown = false;\n\n private _disabled: boolean = false;\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n if (value !== this.disabled) {\n this._disabled = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n @Output('selectionChange') readonly onSelectionChangeEvent =\n new EventEmitter<iToggleSwitchChange>();\n @Output('focus') readonly onFocusEvent = new EventEmitter<FocusEvent>();\n @Output('blur') readonly onBlurEvent = new EventEmitter<FocusEvent>();\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['required']) {\n this._validatorChangeFn();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onChange: (value: boolean) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onTouched: () => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _validatorChangeFn: () => void = () => {};\n\n public writeValue(value: unknown): void {\n this._modelValue.set(value);\n this._changeDetectorRef.markForCheck();\n }\n\n public registerOnChange(fn: (value: boolean) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n public validate(control: AbstractControl<boolean>): ValidationErrors | null {\n return this.required && control.value !== true ? { required: true } : null;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this._validatorChangeFn = fn;\n }\n\n public onHandleKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault(); // Evita o scroll no caso da barra de espaço\n this.onHandleClick(event);\n }\n }\n\n public onHandleClick(event: Event): void {\n if (!this.disabled && !this.readonly) {\n const value = this.isChecked() ? this.falseValue : this.trueValue;\n this._modelValue.set(value);\n this._onChange(this.isChecked());\n\n this.onSelectionChangeEvent.emit({\n originalEvent: event,\n checked: this.isChecked(),\n value: this._modelValue(),\n });\n\n this._inputRef.nativeElement.focus();\n }\n }\n\n public onHandleFocus(event: FocusEvent): void {\n this.onFocusEvent.emit(event);\n }\n\n public onHandleBlur(event: FocusEvent): void {\n this._onTouched();\n this.onBlurEvent.emit(event);\n }\n\n public isChecked(): boolean {\n const currentValue = this._modelValue();\n return currentValue === this.trueValue;\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\n\n@Component({\n selector: 'gipi-toolbar',\n exportAs: 'gToolbar',\n template: `\n @if (label) {\n <h5 class=\"g-toolbar-label\"> {{ label }} </h5>\n }\n <ng-content></ng-content>\n `,\n styleUrl: './toolbar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[name]': 'name',\n 'class': 'g-toolbar',\n },\n imports: [\n CommonModule,\n ],\n})\nexport class ToolbarComponent {\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-toolbar-');\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n @Input() label: string = '';\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\n\n@Component({\n selector: 'gipi-top-nav',\n template: `<ng-content></ng-content>`,\n styleUrl: './top-nav.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[name]': 'name',\n 'class': 'g-top-nav'\n },\n imports: [\n CommonModule,\n ],\n})\nexport class TopNavComponent {\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-top-nav-');\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n constructor() { }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport const rotateArrowTreeTableExpand = trigger('rotateArrow', [\n state(\n 'arrow_right',\n style({\n transform: 'rotate(0deg)',\n }),\n ),\n state(\n 'arrow_bottom',\n style({\n transform: 'rotate(90deg)',\n }),\n ),\n transition('arrow_right <=> arrow_bottom', [animate('200ms cubic-bezier(0.25, 0.8, 0.25, 1)')]),\n]);\n","import { BaseModel } from '../../../base/models/base.model';\nimport { tImplicitTemplateRef } from '../../../types/implicit-template.type';\nimport { tTreeTableColumnCondition } from './tree-table-column-condition.enum';\n\nexport class TreeTableColumn<TNode extends BaseModel = BaseModel> {\n /** Nome da coluna que será exibido no cabeçalho da tabela. */\n label: string;\n\n /**\n * Valor principal da coluna, exibido como conteúdo principal da célula.\n * Pode ser um valor direto (string ou number) ou uma função que retorna o valor com base na linha.\n */\n value: string | number | ((object: TNode) => string | number);\n\n /**\n * Valor complementar exibido abaixo do `value`.\n * - Só será exibido se o `value` estiver definido.\n * - Útil para exibir informações secundárias como CPF, e-mail ou código.\n */\n subValue: string | number | ((object: TNode) => string | number);\n\n /**\n * Indica o espaçamento entre as colunas da tabela.\n * - O valor padrão é `10`, o que significa que há um espaçamento de `10px` entre as colunas.\n * - Este espaçamento será aplicado entre todas as colunas, exceto a primeira coluna (lado esquerdo),\n * e entre a última coluna (lado direito).\n */\n borderSpacing: number;\n\n /** A largura padrão da coluna, em (pixels, rem, %) */\n width: number | string;\n\n /** A largura mínima da coluna, em (pixels, rem, %) */\n minWidth: number | string;\n\n /** A largura máxima da coluna, em (pixels, rem, %) */\n maxWidth: number | string;\n\n /** Indica se o texto deverá aplicar ellipses. */\n slice: tTreeTableColumnCondition<TNode>;\n\n /** Indica se a coluna será visível. */\n visible: tTreeTableColumnCondition<TNode>;\n\n /** Template que será exibido na célula da coluna da tabela. */\n templateCell: tImplicitTemplateRef<TNode>;\n\n /** Evento acionado ao clicar sobre a linha */\n action: ((object: TNode) => void) | null;\n\n constructor(init?: Partial<TreeTableColumn<TNode>>) {\n this.label = init?.label ?? '';\n this.value = init?.value ?? '';\n this.subValue = init?.subValue ?? '';\n this.borderSpacing = init?.borderSpacing ?? 10;\n this.width = init?.width ?? 'auto';\n this.minWidth = init?.minWidth ?? 0;\n this.maxWidth = init?.maxWidth ?? '100%';\n this.slice = init?.slice ?? true;\n this.visible = init?.visible ?? true;\n this.templateCell = init?.templateCell ?? null;\n this.action = init?.action ?? null;\n }\n}\n","import { TemplateRef } from '@angular/core';\nimport { BaseModel } from '../../../base/models/base.model';\nimport { tTreeTableColumnCondition } from './tree-table-column-condition.enum';\nimport { TreeTableColumn } from './tree-table-column.model';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class TreeTableColumnBuilder<TNode extends BaseModel = any> {\n private _label: string;\n private _value: string | number | ((object: TNode) => string | number);\n private _subValue: string | number | ((object: TNode) => string | number);\n private _borderSpacing: number;\n private _width: number | string;\n private _minWidth: number | string;\n private _maxWidth: number | string;\n private _slice: tTreeTableColumnCondition<TNode>;\n private _visible: tTreeTableColumnCondition<TNode>;\n private _templateCell: TemplateRef<{ $implicit: TNode }> | null;\n private _action: ((object: TNode) => void) | null;\n\n constructor() {\n this._label = '';\n this._value = '';\n this._subValue = '';\n this._borderSpacing = 10;\n this._width = 'auto';\n this._minWidth = 0;\n this._maxWidth = '100%';\n this._slice = true;\n this._visible = true;\n this._templateCell = null;\n this._action = null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public static instance<T extends BaseModel = any>(): TreeTableColumnBuilder<T> {\n return new TreeTableColumnBuilder<T>();\n }\n\n /** Nome da coluna que será exibido no cabeçalho da tabela. */\n public label(value: string): TreeTableColumnBuilder<TNode> {\n this._label = value;\n return this;\n }\n\n /**\n * Valor principal da coluna, exibido como conteúdo principal da célula.\n * - Pode ser um valor direto `(string ou number)` ou uma função que retorna o valor com base na linha.\n */\n public value(\n value: string | number | ((object: TNode) => string | number),\n ): TreeTableColumnBuilder<TNode> {\n this._value = value;\n return this;\n }\n\n /**\n * Valor complementar exibido abaixo do `value`.\n * - Só será exibido se o `value` estiver definido.\n * - Útil para exibir informações secundárias como CPF, e-mail ou código.\n */\n public subValue(\n value: string | number | ((object: TNode) => string | number),\n ): TreeTableColumnBuilder<TNode> {\n this._subValue = value;\n return this;\n }\n\n /** Indica o espaçamento entre as colunas da tabela.\n * - O valor padrão é `10`, o que significa que há um espaçamento de `10px` entre as colunas.\n * - Este espaçamento será aplicado entre todas as colunas, exceto a primeira coluna (lado esquerdo),\n * e entre a última coluna (lado direito).\n */\n public borderSpacing(value: number): TreeTableColumnBuilder<TNode> {\n this._borderSpacing = value;\n return this;\n }\n\n /** A largura padrão da coluna, em (pixels, rem, %) */\n public width(value: number | string): TreeTableColumnBuilder<TNode> {\n this._width = value;\n return this;\n }\n\n /** A largura mínima da coluna, em (pixels, rem, %) */\n public minWidth(value: number | string): TreeTableColumnBuilder<TNode> {\n this._minWidth = value;\n return this;\n }\n\n /** A largura máxima da coluna, em (pixels, rem, %) */\n public maxWidth(value: number | string): TreeTableColumnBuilder<TNode> {\n this._maxWidth = value;\n return this;\n }\n\n /** Indica se o texto deverá aplicar ellipses. */\n public slice(value: tTreeTableColumnCondition<TNode>): TreeTableColumnBuilder<TNode> {\n this._slice = value;\n return this;\n }\n\n /** Indica se a coluna será visível. */\n public visible(value: tTreeTableColumnCondition<TNode>): TreeTableColumnBuilder<TNode> {\n this._visible = value;\n return this;\n }\n\n /** Template que será exibido na célula da coluna da tabela. */\n public templateCell(\n value: TemplateRef<{ $implicit: TNode }> | null,\n ): TreeTableColumnBuilder<TNode> {\n this._templateCell = value;\n return this;\n }\n\n /** Evento acionado ao clicar sobre a coluna */\n public action(value: ((object: TNode) => void) | null): TreeTableColumnBuilder<TNode> {\n this._action = value;\n return this;\n }\n\n public build(): TreeTableColumn<TNode> {\n return new TreeTableColumn<TNode>({\n label: this._label,\n value: this._value,\n subValue: this._subValue,\n borderSpacing: this._borderSpacing,\n width: this._width,\n minWidth: this._minWidth,\n maxWidth: this._maxWidth,\n slice: this._slice,\n visible: this._visible,\n templateCell: this._templateCell,\n action: this._action,\n });\n }\n}\n","import { BaseModel } from '../../../base/models/base.model';\nimport {\n tIconFontSet,\n tIconGrade,\n tIconOptical,\n tIconVariation,\n tIconWeight,\n} from '../../icon/icon.component';\nimport { tTreeTableColumnCondition } from './tree-table-column-condition.enum';\n\nexport class TreeTableMenuItemContext<TRow extends BaseModel = BaseModel> {\n /** Identificador do menu-item. */\n id: string;\n\n /** Nome identificador do menu-item. */\n name: string;\n\n /** Tooltip do menu-item. */\n tooltip: string;\n\n /** Controla a visibilidade do item de menu. */\n visible: tTreeTableColumnCondition<TRow>;\n\n /** Ícone do menu-item. */\n icon: string;\n\n /** Ícone SVG do menu-item. */\n svgIcon: string;\n\n /**\n * Define o estilo do conjunto de ícones a ser utilizado.\n * - Pode ser `OUTLINED`, `ROUNDED` ou `SHARP`, conforme os estilos do Material Icons.\n * - Valor padrão: `ROUNDED`.\n */\n iconFontSet: tIconFontSet;\n\n /**\n * Define o valor de fill no font-variation-settings\n * @FILLED FILL = 1;\n * @OUTILINE FILL = 0;\n */\n iconVariation: tIconVariation;\n\n /** Define o valor de wght no font-variation-settings */\n iconWeight: tIconWeight;\n\n /**\n * Define o valor de GRAD no font-variation-settings\n * @LOW GRAD = -25;\n * @DEFAULT GRAD = 0;\n * @HIGH GRAD = 200;\n */\n iconGrade: tIconGrade;\n\n /** Define o valor de opsz no font-variation-settings */\n iconOptical: tIconOptical;\n\n /** Exibe o ícone de novo (new) abaixo do menu-item. */\n showTagNew: tTreeTableColumnCondition<TRow>;\n\n /** Ação disparada ao clicar no menu-item. */\n action: ((object: TRow) => void) | null;\n\n constructor(init?: Partial<TreeTableMenuItemContext<TRow>>) {\n this.id = init?.id || '';\n this.name = init?.name || '';\n this.tooltip = init?.tooltip || '';\n this.visible = init?.visible ?? true;\n this.icon = init?.icon || '';\n this.svgIcon = init?.svgIcon || '';\n this.iconFontSet = init?.iconFontSet || 'ROUNDED';\n this.iconVariation = init?.iconVariation || 'OUTLINED';\n this.iconWeight = init?.iconWeight || 400;\n this.iconGrade = init?.iconGrade || 'DEFAULT';\n this.iconOptical = init?.iconOptical || 20;\n this.showTagNew = init?.showTagNew || false;\n this.action = init?.action || null;\n }\n}\n","import { BaseModel } from '../../../base/models/base.model';\nimport {\n tIconFontSet,\n tIconGrade,\n tIconOptical,\n tIconVariation,\n tIconWeight,\n} from '../../icon/icon.component';\nimport { tTreeTableColumnCondition } from './tree-table-column-condition.enum';\nimport { TreeTableMenuItemContext } from './tree-table-menu-item-context.model';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class TreeTableMenuItemContextBuilder<TRow extends BaseModel = any> {\n private _id: string;\n private _name: string;\n private _tooltip: string;\n private _visible: tTreeTableColumnCondition<TRow>;\n private _icon: string;\n private _svgIcon: string;\n private _iconFontSet: tIconFontSet;\n private _iconVariation: tIconVariation;\n private _iconWeight: tIconWeight;\n private _iconGrade: tIconGrade;\n private _iconOptical: tIconOptical;\n private _showTagNew: boolean;\n private _action: ((object: TRow) => void) | null;\n\n constructor() {\n this._id = '';\n this._name = '';\n this._tooltip = '';\n this._visible = true;\n this._icon = '';\n this._svgIcon = '';\n this._iconFontSet = 'ROUNDED';\n this._iconVariation = 'OUTLINED';\n this._iconWeight = 400;\n this._iconGrade = 'DEFAULT';\n this._iconOptical = 20;\n this._showTagNew = false;\n this._action = null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public static instance<T extends BaseModel = any>(): TreeTableMenuItemContextBuilder<T> {\n return new TreeTableMenuItemContextBuilder<T>();\n }\n\n /** Identificador do menu-item. */\n public id(value: string): TreeTableMenuItemContextBuilder<TRow> {\n this._id = value;\n return this;\n }\n\n /** Nome identificador do menu-item. */\n public name(value: string): TreeTableMenuItemContextBuilder<TRow> {\n this._name = value;\n return this;\n }\n\n /** Tooltip do menu-item. */\n public tooltip(value: string): TreeTableMenuItemContextBuilder<TRow> {\n this._tooltip = value;\n return this;\n }\n\n /** Controla a visibilidade do item de menu. */\n public visible(value: tTreeTableColumnCondition<TRow>): TreeTableMenuItemContextBuilder<TRow> {\n this._visible = value;\n return this;\n }\n\n /** Ícone do menu-item. */\n public icon(value: string): TreeTableMenuItemContextBuilder<TRow> {\n this._icon = value;\n return this;\n }\n\n /** Ícone SVG do menu-item. */\n public svgIcon(value: string): TreeTableMenuItemContextBuilder<TRow> {\n this._svgIcon = value;\n return this;\n }\n\n /**\n * Define o estilo do conjunto de ícones a ser utilizado.\n * - Pode ser `OUTLINED`, `ROUNDED` ou `SHARP`, conforme os estilos do Material Icons.\n * - Valor padrão: `ROUNDED`.\n */\n public iconFontSet(value: tIconFontSet): TreeTableMenuItemContextBuilder<TRow> {\n this._iconFontSet = value;\n return this;\n }\n\n /**\n * Define o valor de fill no font-variation-settings\n * @FILLED FILL = 1;\n * @OUTILINE FILL = 0;\n */\n public iconVariation(value: tIconVariation): TreeTableMenuItemContextBuilder<TRow> {\n this._iconVariation = value;\n return this;\n }\n\n /** Define o valor de wght no font-variation-settings */\n public iconWeight(value: tIconWeight): TreeTableMenuItemContextBuilder<TRow> {\n this._iconWeight = value;\n return this;\n }\n\n /**\n * Define o valor de GRAD no font-variation-settings\n * @LOW GRAD = -25;\n * @DEFAULT GRAD = 0;\n * @HIGH GRAD = 200;\n */\n public iconGrade(value: tIconGrade): TreeTableMenuItemContextBuilder<TRow> {\n this._iconGrade = value;\n return this;\n }\n\n /** Define o valor de opsz no font-variation-settings */\n public iconOptical(value: tIconOptical): TreeTableMenuItemContextBuilder<TRow> {\n this._iconOptical = value;\n return this;\n }\n\n /** Exibe o ícone de novo (new) abaixo do menu-item. */\n public showTagNew(value: boolean): TreeTableMenuItemContextBuilder<TRow> {\n this._showTagNew = value;\n return this;\n }\n\n /** Ação disparada ao clicar no menu-item. */\n public action(value: (object: TRow) => void): TreeTableMenuItemContextBuilder<TRow> {\n this._action = value;\n return this;\n }\n\n public build(): TreeTableMenuItemContext<TRow> {\n return new TreeTableMenuItemContext<TRow>({\n id: this._id,\n name: this._name,\n tooltip: this._tooltip,\n visible: this._visible,\n icon: this._icon,\n svgIcon: this._svgIcon,\n iconFontSet: this._iconFontSet,\n iconVariation: this._iconVariation,\n iconWeight: this._iconWeight,\n iconGrade: this._iconGrade,\n iconOptical: this._iconOptical,\n showTagNew: this._showTagNew,\n action: this._action,\n });\n }\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n NgZone,\n numberAttribute,\n OnInit,\n Output,\n signal,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatPaginator, MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { BaseModel } from '../../base/models/base.model';\nimport { PAGINATIOR_INTL_TOKEN } from '../../tokens/paginator-intl.token';\nimport { tPageEvent } from '../../types/page-event.type';\nimport { ArrayUtil } from '../../utils/array.util';\nimport { CssUtil } from '../../utils/css.util';\nimport { NumberUtil } from '../../utils/number.util';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { StringUtil } from '../../utils/string.util';\nimport { EmptyComponent } from '../empty/empty.component';\nimport { IconComponent } from '../icon/icon.component';\nimport { LoadingComponent } from '../loading/loading.component';\nimport { TextEllipsisDirective } from '../text-ellipsis';\nimport { rotateArrowTreeTableExpand } from './shared/tree-table-arrow-animations';\nimport { tTreeTableColumnCondition } from './shared/tree-table-column-condition.enum';\nimport { tTreeTableColumnPartial } from './shared/tree-table-column-partial.model';\nimport { TreeTableColumn } from './shared/tree-table-column.model';\nimport { TreeTableMenuItemContext } from './shared/tree-table-menu-item-context.model';\n\nconst ROW_HEIGHT: number = 44; // Default row height in pixels\n\n@Component({\n selector: 'gipi-tree-table',\n exportAs: 'gTreeTable',\n templateUrl: './tree-table.component.html',\n styleUrl: './tree-table.component.scss',\n changeDetection: ChangeDetectionStrategy.Default,\n host: {\n '[attr.id]': 'id',\n '[attr.name]': 'name',\n '[attr.role]': `'table'`,\n class: 'g-tree-table',\n },\n animations: [rotateArrowTreeTableExpand],\n providers: [\n {\n provide: MatPaginatorIntl,\n useFactory: () => inject(PAGINATIOR_INTL_TOKEN),\n },\n ],\n imports: [\n CommonModule,\n MatTreeModule,\n MatPaginatorModule,\n MatTooltipModule,\n TextEllipsisDirective,\n LoadingComponent,\n EmptyComponent,\n IconComponent,\n ],\n})\nexport class TreeTableComponent<TNode extends BaseModel> implements OnInit {\n @ViewChild('gTableFooter', { read: ElementRef })\n set tableFooterRef(value: ElementRef<HTMLElement> | null) {\n if (!ObjectUtil.isEmpty(value)) {\n this.tableFooterElement.set(value.nativeElement);\n }\n }\n\n @ViewChild('menuContextWrapper', { read: ElementRef })\n set menuContextWrapperRef(value: ElementRef | null) {\n this.menuContextWrapperElement.set(value?.nativeElement ?? null);\n }\n\n @ViewChild(MatPaginator)\n matPaginatorRef!: MatPaginator;\n\n @ContentChild('actions', { static: false })\n actionsRef: TemplateRef<unknown> | null = null;\n\n @ContentChild('menuContext', { static: false })\n menuContextRef: TemplateRef<unknown> | null = null;\n\n private readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-tree-table-');\n\n private readonly _changeDetectionRef = inject(ChangeDetectorRef);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _ngZone = inject(NgZone);\n\n protected menuContextWrapperElement = signal<HTMLElement | null>(null);\n protected tableFooterElement = signal<HTMLElement | null>(null);\n\n protected menuContextHover: boolean = false;\n protected menuContextRow = signal<TNode | null>(null);\n\n @HostBinding('style.min-height')\n protected get treeTableMinHeight(): string {\n if (!this.calcMinHeight) {\n return 'auto';\n }\n const headerHeight = ROW_HEIGHT;\n const footerEl = this.tableFooterElement();\n const footerHeight = footerEl?.getBoundingClientRect().height ?? 0;\n const bodyHeight = Math.ceil(this.paginatorPageSize * ROW_HEIGHT);\n\n const tableHeight = Math.ceil(headerHeight + bodyHeight + footerHeight + 10);\n return CssUtil.coerceCssPixelValue(`${tableHeight}px`);\n }\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n\n /**\n * Define o nome da propriedade que contém os filhos.\n * - Por padrão, é `children`.\n */\n @Input() propertyTree: string = 'children';\n\n private _data: TNode[] = [];\n @Input()\n set data(value: TNode[]) {\n this._data = value ?? [];\n }\n get data(): TNode[] {\n return this._data;\n }\n\n /** Indica se é para a tabela ter uma altura minima */\n @Input({ transform: booleanAttribute })\n calcMinHeight: boolean = false;\n\n /** Indica se irá exibir o header da tabela */\n @Input({ transform: booleanAttribute })\n showToolbar: boolean = true;\n\n /** Indica se irá exibir a tabela */\n @Input({ transform: booleanAttribute })\n showTable: boolean = true;\n\n /** Indica se irá exibir o header da tabela */\n @Input({ transform: booleanAttribute })\n showHeader: boolean = false;\n\n /** Indica se a tabela está em modo de loading */\n @Input({ transform: booleanAttribute })\n loading: boolean = false;\n\n @Input() columns: tTreeTableColumnPartial[] | TreeTableColumn[] = [];\n\n /** Lista de itens do menu de contexto exibido ao passar o mouse sobre uma linha da tabela. */\n @Input() menuItemsContext: TreeTableMenuItemContext<TNode>[] = [];\n\n /** Define a coluna inicial do menu de contexto */\n @Input({ transform: numberAttribute })\n columnInitial: number | null = null;\n /** Define a coluna final do menu de contexto */\n @Input({ transform: numberAttribute })\n columnFinal: number | null = null;\n\n @Input() when?: (index: number, nodeData: TNode) => boolean;\n\n @Input({ transform: booleanAttribute }) paginator: boolean = false;\n @Input({ transform: booleanAttribute }) paginatorFrontend: boolean = false;\n @Input({ transform: booleanAttribute }) paginatorDisabled: boolean = false;\n @Input({ transform: numberAttribute }) paginatorPageSize: number = 10;\n @Input({ transform: numberAttribute }) paginatorPageNumber: number = 0;\n @Input({ transform: numberAttribute }) paginatorLength: number = 0;\n @Input() paginatorPageSizeOptions: number[] = [10, 20, 30];\n @Input({ transform: booleanAttribute }) paginatorHidePageSize: boolean = false;\n\n protected readonly _childrenAccessor = (node: TNode) => this._getNodeChildren(node);\n\n protected readonly _when = (index: number, node: TNode) => {\n if (this.when !== undefined) {\n return this.when(index, node);\n } else {\n const children = this._getNodeChildren(node);\n return !!children && !ArrayUtil.isEmpty(children);\n }\n };\n\n @Output() onPage = new EventEmitter<tPageEvent>();\n\n constructor() {}\n\n ngOnInit(): void {\n if (!ObjectUtil.isEmpty(this.matPaginatorRef)) {\n this.matPaginatorRef.page\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._emitPaginator());\n }\n }\n\n private _emitPaginator(): void {\n const pageEvent: tPageEvent = {\n pageIndex: this.matPaginatorRef.pageIndex,\n previousPageIndex: this.matPaginatorRef.pageIndex - 1,\n pageSize: this.matPaginatorRef.pageSize,\n length: this.matPaginatorRef.length,\n pageSizeOptions: this.matPaginatorRef.pageSizeOptions,\n };\n this.onPage.emit(pageEvent);\n }\n\n private _getNodeChildren(node: TNode): TNode[] {\n const propertyChildren = this.propertyTree;\n if (StringUtil.isEmpty(propertyChildren)) {\n return [];\n }\n\n const key = propertyChildren as keyof TNode;\n const children = node[key] as unknown as TNode[];\n\n return children ?? [];\n }\n\n protected coerceCondition(\n condition: tTreeTableColumnCondition<TNode> | null | undefined,\n ): boolean {\n const node = this.menuContextRow();\n if (ObjectUtil.isEmpty(condition) || ObjectUtil.isEmpty(node)) {\n return false;\n }\n if (typeof condition === 'function') {\n return !!condition(node);\n }\n return !!condition;\n }\n\n protected _columnWidth(width?: string | number): string {\n if (ObjectUtil.isEmpty(width)) {\n return '';\n }\n return CssUtil.coerceCssPixelValue(width);\n }\n\n protected columnCellValue(\n column: TreeTableColumn | tTreeTableColumnPartial,\n node: TNode,\n ): string {\n if (ObjectUtil.isEmpty(column)) {\n return '';\n }\n\n const { value } = column;\n if (ObjectUtil.isEmpty(value)) {\n return '';\n }\n if (typeof value === 'function') {\n const result = value(node);\n return result != null ? String(result) : '';\n }\n return value != null ? String(value) : '';\n }\n\n protected columnCellSubValue(\n column: TreeTableColumn | tTreeTableColumnPartial,\n node: TNode,\n ): string {\n if (ObjectUtil.isEmpty(column)) {\n return '';\n }\n\n const { subValue } = column;\n if (ObjectUtil.isEmpty(subValue)) {\n return '';\n }\n if (typeof subValue === 'function') {\n const result = subValue(node);\n return result != null ? String(result) : '';\n }\n return subValue != null ? String(subValue) : '';\n }\n\n protected onHandlePage(pageEvent: tPageEvent): void {\n this.paginatorPageSize = pageEvent!.pageSize;\n this.onPage.emit(pageEvent);\n this._changeDetectionRef.markForCheck();\n }\n\n protected showMenuContext(event: MouseEvent, row: TNode): void {\n const menuContextWrapperElement = this.menuContextWrapperElement();\n if (ObjectUtil.isEmpty(menuContextWrapperElement) || this.loading) {\n return;\n }\n\n menuContextWrapperElement.style.visibility = 'hidden';\n\n this._ngZone.runOutsideAngular((_) => {\n const rowlEl = event.currentTarget as HTMLElement;\n const cells = rowlEl.querySelectorAll('[role=\"cell\"]');\n const menuContextRect = menuContextWrapperElement.getBoundingClientRect();\n const rowRect = rowlEl.getBoundingClientRect();\n\n if (!menuContextRect || !rowRect) {\n return;\n }\n\n const rowTop = rowRect.top + (rowRect.height - 1);\n let startX = rowRect.left;\n let endX = rowRect.right - menuContextRect.width;\n\n if (!NumberUtil.isEmpty(this.columnInitial) && cells[this.columnInitial]) {\n startX = cells[this.columnInitial].getBoundingClientRect().left;\n } else if (!NumberUtil.isEmpty(this.columnInitial)) {\n throw new Error(`Initial column is not available`);\n }\n\n if (!NumberUtil.isEmpty(this.columnFinal) && cells[this.columnFinal]) {\n endX =\n cells[this.columnFinal].getBoundingClientRect().right - menuContextRect.width;\n } else if (!NumberUtil.isEmpty(this.columnInitial)) {\n throw new Error(`Final column is not available`);\n }\n\n const offsetX = event.clientX - 15;\n const clampedX = Math.min(Math.max(offsetX, startX), endX);\n\n this._ngZone.run(() => {\n menuContextWrapperElement.style.top = `${rowTop}px`;\n menuContextWrapperElement.style.left = `${clampedX}px`;\n menuContextWrapperElement.style.visibility = 'visible';\n });\n });\n\n this.menuContextRow.set(row);\n }\n\n protected closeMenuContext(): void {\n setTimeout(() => {\n if (!this.menuContextHover && (this.menuContextRef || this.menuItemsContext?.length)) {\n this.menuContextRow.set(null);\n this.menuContextHover = false;\n\n const menuContextWrapperElement = this.menuContextWrapperElement();\n if (!ObjectUtil.isEmpty(menuContextWrapperElement)) {\n menuContextWrapperElement.style.visibility = 'hidden';\n }\n }\n }, 0);\n }\n}\n","@if (showToolbar) {\n <div class=\"g-tree-table-toolbar\">\n <ng-content />\n </div>\n}\n\n@if (showHeader) {\n <div class=\"g-tree-table-header\">\n @for (column of columns; track column) {\n <div\n class=\"g-tree-table-header-column\"\n [style.padding-inline.px]=\"column.borderSpacing\"\n [style.min-width]=\"_columnWidth(column.minWidth)\"\n [style.width]=\"_columnWidth(column.width)\"\n [style.max-width]=\"_columnWidth(column.maxWidth)\">\n <span\n [gTextEllipsis]=\"1\"\n [gTextEllipsisEnabled]=\"coerceCondition(column.slice)\">\n {{ column.label }}\n </span>\n </div>\n }\n </div>\n}\n@if (!showTable && loading) {\n <gipi-loading type=\"progress-bar\" />\n}\n\n@if (!showTable && !loading && data.length <= 0) {\n <gipi-empty />\n}\n\n@if (showTable) {\n <mat-tree\n #tree\n class=\"g-tree-table-content\"\n [dataSource]=\"data\"\n [childrenAccessor]=\"_childrenAccessor\"\n (mouseleave)=\"menuContextHover = false; closeMenuContext()\"\n (blur)=\"menuContextHover = false; closeMenuContext()\">\n <mat-tree-node\n class=\"g-tree-table-row\"\n [class.g-tree-table-row-hover]=\"menuContextRow() === node\"\n *matTreeNodeDef=\"let node\"\n matTreeNodePadding\n (mousemove)=\"showMenuContext($event, node)\">\n <!-- Fornece preenchimento para tree como se fosse o g-tree-table-button-expand-->\n <div style=\"width: 2.4rem; height: 2.4rem\"></div>\n\n @for (column of columns; track column) {\n <div\n class=\"g-tree-table-column\"\n role=\"cell\"\n [style.padding-inline.px]=\"column.borderSpacing\"\n [style.min-width]=\"_columnWidth(column.minWidth)\"\n [style.width]=\"_columnWidth(column.width)\"\n [style.max-width]=\"_columnWidth(column.maxWidth)\">\n @if (column.templateCell) {\n <ng-container\n [ngTemplateOutlet]=\"column.templateCell\"\n [ngTemplateOutletContext]=\"{ $implicit: node }\" />\n } @else {\n <span\n [gTextEllipsis]=\"column.subValue ? 1 : 2\"\n [gTextEllipsisEnabled]=\"coerceCondition(column.slice)\">\n {{ columnCellValue(column, node) }}\n </span>\n\n @if (column.subValue) {\n <small\n [gTextEllipsis]=\"1\"\n [gTextEllipsisEnabled]=\"coerceCondition(column.slice)\">\n {{ columnCellSubValue(column, node) }}\n </small>\n }\n }\n </div>\n }\n </mat-tree-node>\n <!-- Este é o modelo para nós expansíveis -->\n <mat-tree-node\n class=\"g-tree-table-row g-tree-table-row-expandable\"\n [class.g-tree-table-row-hover]=\"menuContextRow() === node\"\n *matTreeNodeDef=\"let node; when: _when\"\n matTreeNodeToggle\n matTreeNodePadding\n [cdkTreeNodeTypeaheadLabel]=\"node.name\"\n (mousemove)=\"showMenuContext($event, node)\">\n <span\n matTreeNodeToggle\n class=\"material-symbols-rounded g-tree-table-button-expand\"\n [@rotateArrow]=\"!tree.isExpanded(node) ? 'arrow_right' : 'arrow_bottom'\">\n chevron_right\n </span>\n\n @for (column of columns; track column) {\n <div\n class=\"g-tree-table-column\"\n role=\"cell\"\n [style.padding-inline.px]=\"column.borderSpacing\"\n [style.min-width]=\"_columnWidth(column.minWidth)\"\n [style.width]=\"_columnWidth(column.width)\"\n [style.max-width]=\"_columnWidth(column.maxWidth)\">\n @if (column.templateCell) {\n <ng-container\n [ngTemplateOutlet]=\"column.templateCell\"\n [ngTemplateOutletContext]=\"{ $implicit: node }\" />\n } @else {\n <span\n [gTextEllipsis]=\"column.subValue ? 1 : 2\"\n [gTextEllipsisEnabled]=\"coerceCondition(column.slice)\">\n {{ columnCellValue(column, node) }}\n </span>\n\n @if (column.subValue) {\n <small\n [gTextEllipsis]=\"1\"\n [gTextEllipsisEnabled]=\"coerceCondition(column.slice)\">\n {{ columnCellSubValue(column, node) }}\n </small>\n }\n }\n </div>\n }\n </mat-tree-node>\n </mat-tree>\n\n @if (loading) {\n <gipi-loading type=\"progress-bar\" />\n }\n\n @if (!loading && data.length <= 0) {\n <gipi-empty />\n }\n\n @if (!loading && data.length > 0) {\n <div\n #gTableFooter\n class=\"g-tree-table-footer-row\">\n @if (paginator) {\n <mat-paginator\n class=\"g-tree-table-paginator\"\n [disabled]=\"paginatorDisabled || loading\"\n [hidePageSize]=\"paginatorHidePageSize\"\n [length]=\"paginatorLength\"\n [pageIndex]=\"paginatorPageNumber\"\n [pageSize]=\"paginatorPageSize\"\n [pageSizeOptions]=\"paginatorPageSizeOptions\"\n [selectConfig]=\"{}\"\n [showFirstLastButtons]=\"true\"\n (page)=\"onHandlePage($event)\" />\n }\n </div>\n }\n\n @if (!loading && data.length && (menuItemsContext || menuContextRef)) {\n <div\n #menuContextWrapper\n class=\"g-tree-table-menu-context\"\n [attr.id]=\"'menuContext'\"\n [attr.role]=\"'menu'\"\n (mouseover)=\"menuContextHover = true\"\n (focus)=\"menuContextHover = true\"\n (mouseleave)=\"menuContextHover = false; closeMenuContext()\"\n (blur)=\"menuContextHover = false; closeMenuContext()\">\n @if (menuItemsContext) {\n @for (menu of menuItemsContext; track menu) {\n @if (coerceCondition(menu.visible)) {\n <button\n class=\"g-tree-table-menu-item-context\"\n [class.g-tree-table-menu-item-context-show-tag-new]=\"\n coerceCondition(menu.showTagNew)\n \"\n [attr.id]=\"menu.id\"\n [name]=\"menu.name\"\n [tabIndex]=\"$index\"\n [matTooltip]=\"menu.tooltip\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipClass]=\"'g-tree-table-menu-item-context-tooltip'\"\n (click)=\"\n menu?.action(menuContextRow()!);\n menuContextHover = false;\n closeMenuContext()\n \">\n @if (menu.icon || menu.svgIcon) {\n <gipi-icon\n class=\"g-button-icon\"\n [size]=\"22\"\n [icon]=\"menu.icon\"\n [svgIcon]=\"menu.svgIcon\"\n [fontSet]=\"menu.iconFontSet\"\n [variation]=\"menu.iconVariation\"\n [weight]=\"menu.iconWeight\"\n [grade]=\"menu.iconGrade\"\n [optical]=\"menu.iconOptical\" />\n }\n </button>\n }\n }\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"menuContextRef\"\n [ngTemplateOutletContext]=\"{ $implicit: menuContextRow() }\" />\n }\n </div>\n }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport const rotateArrow = trigger('rotateArrow', [\n state('arrow_down', style({\n transform: 'rotate(0deg)',\n })),\n state('arrow_up', style({\n transform: 'rotate(-180deg)',\n })),\n transition('arrow_down <=> arrow_up', [\n animate('200ms cubic-bezier(0.25, 0.8, 0.25, 1)')\n ])\n]);\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, inject, Input, Output, ViewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject } from 'rxjs';\nimport { DateUtil } from '../../utils/date.util';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { AvatarComponent } from '../avatar/avatar.component';\nimport { PopoverModule, PopoverTriggerDirective } from '../popover';\nimport { rotateArrow } from './shared/user-profile-arrow-animations';\n\ntype tArrowType = 'arrow_down' | 'arrow_up';\n\n@Component({\n selector: 'gipi-user-profile',\n exportAs: 'gUserProfile',\n template: `\n <div class=\"g-user-profile-content\"\n #userProfilePopoverTrigger\n [gPopoverTriggerFor]=\"userProfilePopover\">\n <gipi-avatar [text]=\"username\"\n [imageSrc]=\"imageSrc\"\n shape=\"circle\"\n size=\"28\" />\n <span class=\"g-user-profile-username\">\n Olá, {{ _firstName }}\n </span>\n <span class=\"material-symbols-outlined g-user-profile-arrow\"\n [@rotateArrow]=\"(arrowType$ | async)!\">\n keyboard_arrow_down\n </span>\n </div>\n\n <gipi-popover #userProfilePopover=\"gPopover\">\n <div class=\"g-user-profile-popover-content\">\n <div class=\"g-user-profile-popover-header\">\n <gipi-avatar [text]=\"username\"\n shape=\"square\"\n size=\"40\" />\n <div class=\"g-user-profile-popover-user-info\">\n <strong> {{ username }} </strong>\n <small> {{ email }} </small>\n </div>\n </div>\n <div class=\"g-user-profile-popover-actions\">\n @if (_lastAccessText) {\n <span class=\"g-user-profile-last-access\">\n {{ _lastAccessText }}\n </span>\n }\n <ng-content></ng-content>\n </div>\n </div>\n </gipi-popover>\n `,\n styleUrl: './user-profile.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n '[name]': 'name',\n 'class': 'g-user-profile',\n '(click)': 'onPopoverToggle($event)',\n },\n animations: [\n rotateArrow,\n ],\n imports: [\n CommonModule,\n AvatarComponent,\n PopoverModule,\n ]\n})\nexport class UserProfileComponent implements AfterViewInit {\n\n @ViewChild(PopoverTriggerDirective) popoverTrigger?: PopoverTriggerDirective;\n\n protected readonly _uniqueId: string = inject(_IdGenerator).getId('gipi-user-profile-');\n protected destroyRef: DestroyRef = inject(DestroyRef);\n protected arrowType$ = new BehaviorSubject<tArrowType>('arrow_down');\n\n @Input() id: string = this._uniqueId;\n @Input() name: string = this._uniqueId;\n @Input({ required: true }) username: string = '';\n @Input({ required: true }) email: string = '';\n @Input() lastAccess: Date | null = null;\n @Input() imageSrc: string = '';\n\n @Output() readonly onImageError = new EventEmitter<Event>();\n @Output() readonly onClick = new EventEmitter<MouseEvent>();\n\n protected get _firstName(): string {\n if (!this.username) {\n return '';\n }\n const splitUserName: string[] = this.username.split(' ');\n if (splitUserName[0].length < 3 && splitUserName.length > 1) {\n return `${splitUserName[0]} ${splitUserName[1]}`;\n }\n return splitUserName[0];\n }\n\n protected get _lastAccessText(): string {\n if (DateUtil.isEmpty(this.lastAccess)) {\n return '';\n }\n const date: string = DateUtil.format(this.lastAccess, DateUtil.FORMAT_DATE);\n const hours: string = DateUtil.format(this.lastAccess, 'HH:mm');\n return `Último acesso ${date} às ${hours}`;\n }\n\n constructor() { }\n\n ngAfterViewInit(): void {\n if (!ObjectUtil.isEmpty(this.popoverTrigger)) {\n // Atualiza o estado inicial da seta\n this.arrowType$.next(this.popoverTrigger.popoverIsOpened ? 'arrow_up' : 'arrow_down');\n\n this.popoverTrigger.popoverIsOpened$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(isOpened => this.arrowType$.next(isOpened ? 'arrow_up' : 'arrow_down'));\n }\n }\n\n public imageError(event: Event): void {\n this.onImageError.emit(event);\n }\n\n public onPopoverToggle(event: MouseEvent): void {\n if (!ObjectUtil.isEmpty(this.popoverTrigger)) {\n this.popoverTrigger.openPopover();\n }\n this.onClick.emit(event);\n event.stopImmediatePropagation();\n }\n\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { Subject, Subscription, timer } from 'rxjs';\nimport { filter, map, switchMap, takeUntil } from 'rxjs/operators';\n\ninterface iDebounceOptions {\n /** Tempo de debounce em milissegundos (padrão: 300ms) */\n ms?: number;\n /** Executa a função imediatamente na primeira chamada (padrão: false) */\n leading?: boolean;\n /** Executa a função no final do período de debounce (padrão: true) */\n trailing?: boolean;\n}\n\nconst leadingCallMap = new WeakMap<object, boolean>();\n\n/**\n * Decorator para aplicar debounce em métodos de classes.\n * Pode ser usado para limitar a frequência de execuções, especialmente útil em eventos como\n * digitação, cliques rápidos, ou chamadas frequentes que você deseja otimizar.\n *\n * @param options - Tempo de debounce em ms ou objeto de opções com:\n * - ms: número (tempo em ms)\n * - leading: boolean (executa imediatamente na primeira chamada)\n * - trailing: boolean (executa após o período de debounce)\n *\n * @example\n * class Exemplo {\n * .@Debounce(500)\n * onInputChange(value: string) {\n * console.log('Executado após o usuário parar de digitar 500ms:', value);\n * }\n *\n * .@Debounce({ ms: 300, leading: true, trailing: false })\n * onResize() {\n * console.log('Executado imediatamente e ignora chamadas seguintes por 300ms');\n * }\n * }\n */\nexport function Debounce(options: number | iDebounceOptions = 300) {\n const {\n ms = 300,\n leading = false,\n trailing = true,\n } = typeof options === 'number' ? { ms: options } : options;\n\n const destroyMap = new WeakMap<object, Subject<void>>();\n const triggerMap = new WeakMap<object, Subject<any[]>>();\n const subscriptionMap = new WeakMap<object, Subscription>();\n\n return function <T>(\n target: object,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => T | undefined>,\n ) {\n const originalMethod = descriptor.value!;\n\n descriptor.value = function (...args: any[]): T | undefined {\n let destroy$ = destroyMap.get(this);\n let trigger$ = triggerMap.get(this);\n\n // Inicializa os Subjects e a subscription por instância da classe\n if (!destroy$ || !trigger$) {\n destroy$ = new Subject<void>();\n trigger$ = new Subject<any[]>();\n\n destroyMap.set(this, destroy$);\n triggerMap.set(this, trigger$);\n\n // Configura pipeline de debounce usando RxJS\n const subscription = trigger$\n .pipe(\n filter(() => trailing), // só executa se trailing estiver ativo\n switchMap((args) =>\n timer(ms).pipe(\n takeUntil(destroy$!), // cancela debounce ao destruir o componente\n takeUntil(trigger$!), // reinicia debounce se novo evento chegar\n map(() => args),\n ),\n ),\n )\n .subscribe({\n next: (debouncedArgs) => {\n originalMethod.apply(this, debouncedArgs); // executa método original\n leadingCallMap.set(this, false); // reseta flag leading\n },\n error: (err) =>\n console.error(\n `Debounce error in ${target.constructor.name}.${String(propertyKey)}`,\n err,\n ),\n });\n\n subscriptionMap.set(this, subscription);\n\n // Patch para limpar subscription e Subjects no ngOnDestroy do componente\n if ('ngOnDestroy' in this && typeof this.ngOnDestroy === 'function') {\n const originalNgOnDestroy = this.ngOnDestroy;\n this.ngOnDestroy = function (...destroyArgs: any[]) {\n destroy$!.next();\n destroy$!.complete();\n trigger$!.complete();\n subscription.unsubscribe();\n originalNgOnDestroy.apply(this, destroyArgs);\n };\n }\n }\n\n // Executa imediatamente na primeira chamada se leading estiver ativado\n if (leading && !leadingCallMap.get(this)) {\n const result = originalMethod.apply(this, args);\n leadingCallMap.set(this, true);\n trigger$!.next(args); // agenda próxima execução trailing se necessário\n return result;\n }\n\n trigger$!.next(args); // agenda execução trailing via debounce\n\n // Retorna undefined pois a execução será assíncrona (debounce)\n return undefined;\n };\n\n return descriptor;\n };\n}\n","export enum eMenuType {\n GROUP = 'GROUP',\n COLLAPSABLE = 'COLLAPSABLE',\n ITEM = 'ITEM'\n}\n\nexport type tMenuType = keyof typeof eMenuType;\n","export enum eSortDirection {\n ASC = 'Crescente',\n DESC = 'Decrescente',\n}\n\nexport type tSortDirection = keyof typeof eSortDirection | '';\n","export enum eTypeOperationDialog {\n NEW = 'Novo',\n EDIT = 'Editar',\n VIEW = 'Visualizar',\n}\n\nexport type tTypeOperationDialog = keyof typeof eTypeOperationDialog;\n\nexport enum eTypeOperationCloseDialogEnum {\n RELOAD_TABLE = 'Atualizar a tabela',\n REMARK_SELECTED = 'Remarcar os registros selecionados',\n NONE = 'Nenhuma ação será executada',\n}\n\nexport type tTypeOperationCloseDialog = keyof typeof eTypeOperationCloseDialogEnum;\n","import { inject } from '@angular/core';\nimport { CanActivateFn, Router, type CanActivateChildFn } from '@angular/router';\nimport { BASE_AUTH_SERVICE_TOKEN } from '../tokens/base-auth-service.token';\n\nexport const authGuard: CanActivateFn = (_route, state) => {\n if (!inject(BASE_AUTH_SERVICE_TOKEN).isAuthenticated()) {\n inject(Router).navigate(['oauth/login'], { queryParams: { redirect: state.url } });\n return false;\n }\n return true;\n};\n\nexport const authChildGuard: CanActivateChildFn = (_childRoute, state) => {\n return authGuard(_childRoute, state);\n};\n","import { FactoryProvider, InjectionToken } from '@angular/core';\n\n/**\n * Token de injeção para definir rotas públicas permitidas mesmo quando o usuário está autenticado.\n *\n * - Esse token é utilizado pelo `publicGuard` na lib para permitir que algumas rotas sejam acessadas\n * mesmo que o usuário já tenha um token válido no localStorage.\n * - Por padrão, se não for fornecido, retorna uma lista vazia `[]`, o que significa que todas as rotas públicas\n * serão bloqueadas para usuários autenticados.\n */\nexport const ALLOWED_PUBLIC_ROUTES = new InjectionToken<string[]>('ALLOWED_PUBLIC_ROUTES_TOKEN', {\n providedIn: 'root',\n factory: () => [],\n});\n\n/**\n * Provedor para definir as rotas públicas permitidas.\n *\n * - Deve ser usado no bootstrap da aplicação para configurar quais rotas podem ser acessadas\n * mesmo que o usuário já esteja autenticado.\n *\n * @example\n * ```typescript\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideALlowedPublicRoutes(['/oauth/change-password'])\n * ]\n * };\n * ```\n */\nexport function provideALlowedPublicRoutes(routes: string[]): FactoryProvider {\n return {\n provide: ALLOWED_PUBLIC_ROUTES,\n useFactory: () => routes,\n }\n};\n","import { inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { BASE_AUTH_SERVICE_TOKEN } from '../tokens/base-auth-service.token';\nimport { ALLOWED_PUBLIC_ROUTES } from './../tokens/allowed-public-routes.token';\n\nexport const publicGuard: CanActivateFn = (_route, state) => {\n const authService = inject(BASE_AUTH_SERVICE_TOKEN);\n const allowedRoutes = inject(ALLOWED_PUBLIC_ROUTES);\n const isAllowed = allowedRoutes.some(allowedRoute => state.url.includes(allowedRoute));\n\n if (authService.isAuthenticated() && !isAllowed) {\n inject(Router).navigate(['/']);\n return false;\n }\n\n return true;\n};\n\nexport const publicChildGuard: CanActivateFn = (_childRoute, _state) => {\n return publicGuard(_childRoute, _state);\n}\n","import { HttpErrorResponse, HttpEvent, HttpRequest, type HttpHandlerFn, type HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { BASE_AUTH_SERVICE_TOKEN } from '../tokens/base-auth-service.token';\n\nexport const authInterceptor: HttpInterceptorFn = (req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> => {\n const authService = inject(BASE_AUTH_SERVICE_TOKEN);\n const token = authService.token;\n\n if (token?.accessToken && !req.headers.get('skip') && authService.isValidToken(token)) {\n req = setHeaders(req, token.accessToken);\n }\n\n return next(req).pipe(\n catchError((error: HttpErrorResponse) => {\n if (error.status === 401) {\n authService.logout();\n }\n return throwError(() => error);\n })\n );\n\n // Usando o refreshToken para obter um novo token de acesso caso o atual tenha expirado\n // return next(req).pipe(\n // catchError((error: HttpErrorResponse) => {\n // if (error.status === 401) {\n // return authService.refreshToken().pipe(\n // switchMap(newToken => {\n // if (newToken?.accessToken) {\n // const clonedReq = setHeaders(req, newToken.accessToken);\n // return next(clonedReq);\n // } else {\n // authService.logout();\n // return throwError(() => error);\n // }\n // })\n // );\n // }\n // return throwError(() => error);\n // })\n // );\n};\n\nconst setHeaders = (req: HttpRequest<unknown>, token: string): HttpRequest<unknown> => {\n return req.clone({ setHeaders: { Authorization: `Bearer ${token}` } });\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n HttpErrorResponse,\n HttpEvent,\n HttpHandlerFn,\n HttpInterceptorFn,\n HttpRequest,\n} from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport { BaseAuthService } from '../base/services/base-auth.service';\nimport { BASE_AUTH_SERVICE_TOKEN } from '../tokens/base-auth-service.token';\nimport { ArrayUtil } from '../utils/array.util';\nimport { ObjectUtil } from '../utils/object.util';\n\nexport interface iAPIError {\n debugMessage: string;\n message: string;\n status: string;\n subErrorList: {\n object: string;\n filed: string;\n rejectedValue: any;\n rejectedMessage: string;\n }[];\n}\n\nexport const errorInterceptor: HttpInterceptorFn = (\n req: HttpRequest<any>,\n next: HttpHandlerFn,\n): Observable<HttpEvent<any>> => {\n const authService = inject(BASE_AUTH_SERVICE_TOKEN);\n const router = inject(Router);\n\n return next(req).pipe(\n catchError((err: any) => {\n if (err instanceof HttpErrorResponse) {\n return blobToJSON(err).pipe(\n switchMap((parsedError) => validateErrors(parsedError, authService, router)),\n );\n }\n return throwError(() => err);\n }),\n );\n};\n\nconst validateErrors = (\n err: HttpErrorResponse,\n authService: BaseAuthService<any>,\n router: Router,\n): Observable<never> => {\n let errorMessage: string = err.error.message || err.statusText;\n const apiError = err.error.apierror as iAPIError;\n const statusError = err.status || null;\n\n if (!ObjectUtil.isEmpty(apiError)) {\n if (apiError.status === 'INTERNAL_SERVER_ERROR') {\n if (\n apiError.debugMessage\n ?.toUpperCase()\n .includes('QUERY DID NOT RETURN A UNIQUE RESULT')\n ) {\n errorMessage = 'A consulta não retornou resultado único';\n } else if (apiError.message?.toUpperCase().includes('NENHUM REGISTRO FOI ENCONTRADO')) {\n errorMessage = 'Nenhum registro foi encontrado';\n } else if (apiError.message?.toUpperCase().includes('OCORREU UM PROBLEMA INESPERADO')) {\n errorMessage = 'Ocorreu um problema inesperado';\n } else {\n errorMessage = apiError.message;\n }\n } else if (apiError.status === 'FORBIDDEN') {\n router.navigate(['/errors/403']);\n return throwError(() => 'Acesso negado');\n } else if (apiError.status === 'UNAUTHORIZED') {\n errorMessage = 'Sua sessão expirou';\n authService.logout();\n } else if (statusError === 503) {\n router.navigate(['/errors/503']);\n return throwError(() => 'Serviço temporariamente indisponível');\n } else if (!ArrayUtil.isEmpty(apiError.subErrorList)) {\n errorMessage = apiError.subErrorList[0].rejectedMessage;\n } else {\n errorMessage = apiError.message;\n }\n } else if (!navigator.onLine) {\n errorMessage = 'Sem conexão com a internet';\n } else if (err.status === 504) {\n router.navigate(['/errors/504']);\n return throwError(() => 'Erro de gateway');\n }\n\n return throwError(() => errorMessage);\n};\n\nconst blobToJSON = (err: HttpErrorResponse): Observable<HttpErrorResponse> => {\n if (!(err.error instanceof Blob) || err.error.type !== 'application/json') {\n return of(err);\n }\n return new Observable((observer) => {\n const reader = new FileReader();\n reader.onload = () => {\n try {\n const errorMsg = JSON.parse(reader.result as string);\n const httpErrorResponse = new HttpErrorResponse({\n error: errorMsg,\n headers: err.headers,\n status: err.status,\n statusText: err.statusText,\n url: err.url ?? '',\n });\n observer.next(httpErrorResponse);\n observer.complete();\n } catch (_) {\n observer.error(err);\n }\n };\n reader.onerror = () => observer.error(err);\n reader.readAsText(err.error);\n });\n};\n","import { formatCurrency } from '@angular/common';\nimport { inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\nimport { NumberUtil } from './../utils/number.util';\n\n@Pipe({\n name: 'gMoney',\n standalone: true,\n})\nexport class MoneyPipe implements PipeTransform {\n\n private _locale: string = inject(LOCALE_ID);\n\n /**\n * Converte um número ou string em um formato de moeda.\n *\n * @param value O valor a ser formatado. Pode ser um número ou uma string representando um número.\n * @param digitsInfo Define o número de casas decimais e a formatação dos dígitos.\n * - Formato: `{mínimo de dígitos inteiros}.{mínimo de casas decimais}-{máximo de casas decimais}`\n * - Exemplo: `'1.2-2'` (padrão) → Garante pelo menos 1 dígito inteiro e de 2 a 2 casas decimais.\n * @param displaySymbol Define se o símbolo da moeda (`R$`) deve ser exibido.\n * - `true` (padrão) → Exibe o símbolo da moeda.\n * - `false` → Oculta o símbolo da moeda, exibindo apenas o valor numérico.\n * @returns Uma string formatada como moeda ou `null` se o valor for inválido.\n */\n public transform(\n value: number | string | null | undefined,\n digitsInfo: string = '1.2-2',\n displaySymbol: boolean = true,\n ): string | null {\n if (NumberUtil.isEmpty(value)) {\n return null;\n }\n try {\n const num = NumberUtil.strToNumber(value);\n const symbol = displaySymbol ? 'R$' : '';\n return formatCurrency(num, this._locale, symbol, 'BRL', digitsInfo);\n } catch (error) {\n throw (`InvalidPipeArgument: '${(error as Error).message}' para o pipe '${MoneyPipe.name}'`);\n }\n }\n\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { ComponentType } from '@angular/cdk/overlay';\nimport { DestroyRef, inject, Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DialogPosition, MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { tTypeOperationCloseDialog } from '../enums/type-operation-dialog.enum';\nimport { CssUtil } from '../utils';\n\nexport class DialogConfig<TData> {\n /** Classes para o dialog */\n panelClass: string | string[] = '';\n /** Usar `escape` ou `clique no backdrop` para fechar o dialog */\n disableClose: boolean = true;\n /** Largura do dialog */\n width: string = 'auto';\n /** Altura do dialog */\n height: string = 'auto';\n /** Largura mínima do dialog. Se um número for fornecido, serão assumidas unidades de pixels. */\n minWidth: string = 'auto';\n /** Altura mínima do dialog. Se um número for fornecido, serão assumidas unidades de pixels. */\n minHeight: string = 'auto';\n /** Largura máxima do dialog. Se um número for fornecido, serão assumidas unidades de pixels. O padrão é 80vw */\n maxWidth: string = '80%';\n /** Altura máxima do dialog. Se um número for fornecido, serão assumidas unidades de pixels. */\n maxHeight: string = '100%';\n /** Posição do dialog, `left`, `top`, `right` e `bottom` */\n position: DialogPosition = {};\n /** Se o dialog deve focar o primeiro elemento focável ao ser aberto */\n autoFocus: boolean = true;\n /** Se o dialog deve restaurar o foco para o elemento previamente focado, depois de fechado. */\n restoreFocus: boolean = true;\n /**\n * Se o dialog deve fechar quando o usuário retrocede/avança no histórico.\n * Observe que isso geralmente não inclui clicar em links (a menos que o usuário esteja usando a `HashLocationStrategy`).\n */\n closeOnNavigation: boolean = true;\n\n constructor(dialogConfig: Partial<DialogConfig<TData>> = {}) {\n Object.assign(this, dialogConfig);\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DialogService {\n private _destroyRef = inject(DestroyRef);\n private _breakpointObserver = inject(BreakpointObserver);\n private _matDialog = inject(MatDialog);\n\n constructor() {}\n\n /**\n * Abre um componente como um `MatDialog`.\n *\n * @template TData Tipo dos dados que serão injetados no dialog (via `MAT_DIALOG_DATA`).\n * @template TResult Tipo do valor retornado quando o dialog é fechado (`dialogRef.close(value)`).\n *\n * @param componentRef Componente que será exibido dentro do dialog.\n * @param data Dados a serem injetados no dialog. Serão acessíveis no construtor do componente via `@Inject(MAT_DIALOG_DATA)`.\n * @param dialogConfig Configurações opcionais de aparência, comportamento e posicionamento do dialog.\n *\n * @returns Uma referência do `MatDialogRef`.\n *\n * @example\n * ```typescript\n * this.dialogService\n * .show<MyData, tTypeOperationCloseDialog>(MyDialogComponent, data)\n * .afterClosed()\n * .subscribe((result) => {\n * if (result === 'RELOAD_TABLE') this.loadData();\n * });\n * ```\n */\n\n public show<TData = unknown, TResult = tTypeOperationCloseDialog>(\n componentRef: ComponentType<unknown>,\n data: TData | null = null,\n dialogConfig: Partial<DialogConfig<TData>> | null = null,\n ): MatDialogRef<unknown, TResult> {\n const matDialogConfig: MatDialogConfig = {\n hasBackdrop: true,\n role: 'dialog',\n panelClass: dialogConfig?.panelClass,\n disableClose: dialogConfig?.disableClose,\n width: dialogConfig?.width ?? 'auto',\n height: dialogConfig?.height ?? 'auto',\n minWidth: dialogConfig?.minWidth ?? '0',\n minHeight: dialogConfig?.minHeight ?? '0',\n maxWidth: dialogConfig?.maxWidth ?? '80%',\n maxHeight: dialogConfig?.maxHeight ?? '100%',\n position: dialogConfig?.position,\n data: data,\n autoFocus: dialogConfig?.autoFocus,\n restoreFocus: dialogConfig?.restoreFocus,\n closeOnNavigation: dialogConfig?.closeOnNavigation,\n };\n\n const dialogRef = this._matDialog.open<unknown, TData, TResult>(\n componentRef,\n matDialogConfig,\n );\n\n this._breakpointObserver\n .observe([\n CssUtil.BREAKPOINT_MOBILE,\n CssUtil.BREAKPOINT_TABLET,\n CssUtil.BREAKPOINT_DESKTOP,\n ])\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((state) => {\n if (state.breakpoints[CssUtil.BREAKPOINT_MOBILE]) {\n dialogRef\n .updateSize('100%', '80%')\n .updatePosition({ top: '80', left: '0', right: '0', bottom: '0' });\n } else if (state.breakpoints[CssUtil.BREAKPOINT_TABLET]) {\n dialogRef\n .updateSize('50%', '100%')\n .updatePosition({ top: '0', right: '0', bottom: '0' });\n } else if (state.breakpoints[CssUtil.BREAKPOINT_DESKTOP]) {\n dialogRef\n .updateSize(matDialogConfig.width, matDialogConfig.height)\n .updatePosition();\n }\n });\n\n return dialogRef;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class FileSaverService {\n constructor() {}\n\n private _addBom(blob: Blob, mimeType: string, autoBom = false): Blob {\n const isUtf8Text =\n /^(\\s*(text\\/\\S*|application\\/xml|\\S+\\/\\S+\\+xml);.*charset\\s*=\\s*utf-8)/i.test(\n mimeType,\n );\n return autoBom && isUtf8Text\n ? new Blob([String.fromCharCode(0xfeff), blob], { type: mimeType })\n : blob;\n }\n\n private _getFileNameFromDisposition(disposition: string | null): string {\n if (!disposition) {\n return 'download';\n }\n const matches = disposition.match(/filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/);\n return matches?.[1]?.replace(/['\"]/g, '') || 'download';\n }\n\n public download(data: any, fileName: string, mimeType: string, autoBom = false): void {\n const blob: Blob = this._addBom(new Blob([data], { type: mimeType }), mimeType, autoBom);\n\n // Para IE/Edge legacy\n if ('msSaveOrOpenBlob' in navigator) {\n (navigator as any).msSaveOrOpenBlob(blob, fileName);\n return;\n }\n\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n\n link.rel = 'noopener';\n link.setAttribute('href', url);\n link.setAttribute('download', fileName);\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n\n link.click();\n\n setTimeout(() => {\n URL.revokeObjectURL(url);\n document.body.removeChild(link);\n }, 0);\n }\n\n public downloadContent(response: any, autoBom = false): void {\n const fileName = this._getFileNameFromDisposition(\n response.headers.get('content-disposition'),\n );\n const mimeType = response.headers.get('content-type') || 'application/octet-stream';\n\n this.download(response.body, fileName, mimeType, autoBom);\n }\n\n public printArchive(data: any, mimeType: string): void {\n const blob = new Blob([data], { type: mimeType });\n const url = URL.createObjectURL(blob);\n const iframe = document.createElement('iframe');\n\n iframe.style.display = 'none';\n iframe.src = url;\n\n document.body.appendChild(iframe);\n\n iframe.onload = () => {\n setTimeout(() => {\n iframe.contentWindow?.focus();\n iframe.contentWindow?.print();\n\n setTimeout(() => {\n URL.revokeObjectURL(url);\n document.body.removeChild(iframe);\n }, 1000);\n }, 1);\n };\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { BaseFilterModel } from '../base/models/base-filter.model';\nimport { ToastService } from '../components/toast/shared/toast.service';\nimport { Nullable } from '../types/nullable.type';\nimport { ArrayUtil } from '../utils/array.util';\nimport { ObjectUtil } from '../utils/object.util';\n\n// Classe de erro personalizada\nclass FilterServiceError extends Error {\n constructor(message: string, public code: string) {\n super(message);\n this.name = 'FilterServiceError';\n }\n}\n\ninterface iBaseFilter<TFilter = BaseFilterModel> {\n id: string;\n userId: string;\n tag: string;\n filter: TFilter;\n isDefault: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FilterService<TFilter = BaseFilterModel> {\n\n private _toastService: ToastService = inject(ToastService);\n\n // EVITE ALTERAR - Constantes para nomes de banco, tabela e índices\n private readonly _DB_NAME = 'gipi-database';\n private readonly _TABLE_NAME = 'tb-filters';\n private readonly _KEY_PATH = 'id';\n private readonly _INDEX_USER_ID = 'userIdIndex';\n\n // Cache da conexão com o banco de dados\n private _dbConnection: Promise<IDBDatabase>;\n\n constructor() {\n this._dbConnection = this._openDatabase();\n }\n\n /**\n * Abre ou cria o banco de dados IndexedDB\n * @returns Promise contendo a instância do banco de dados\n */\n private _openDatabase(): Promise<IDBDatabase> {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this._DB_NAME, 1);\n\n request.onupgradeneeded = (event: IDBVersionChangeEvent) => {\n const db = (event.target as IDBOpenDBRequest).result;\n if (!db.objectStoreNames.contains(this._TABLE_NAME)) {\n const store = db.createObjectStore(this._TABLE_NAME, { keyPath: this._KEY_PATH });\n store.createIndex(this._INDEX_USER_ID, 'userId', { unique: false });\n }\n };\n\n request.onsuccess = () => resolve(request.result);\n request.onerror = (event) => reject((event.target as IDBOpenDBRequest).error);\n });\n }\n\n /**\n * Valida os dados de entrada antes de salvar uma visualização\n * @param view Nome da visualização\n * @param userId Identificador do usuário\n * @param filter Objeto do filtro\n */\n private _validateFilterInput(view: string, userId: string, filter: TFilter): void {\n if (!view || typeof view !== 'string') {\n throw new FilterServiceError('O nome da visualização é obrigatório', 'ERR_INVALID_VIEW');\n }\n if (!userId || typeof userId !== 'string') {\n throw new FilterServiceError('User ID is required and must be a string', 'ERR_INVALID_USER_ID');\n }\n if (!filter || typeof filter !== 'object') {\n throw new FilterServiceError('Filter must be a valid object', 'ERR_INVALID_FILTER');\n }\n }\n\n /**\n * Executa uma transação no IndexedDB\n * @param mode Modo da transação ('readonly' ou 'readwrite')\n * @param operation Função de operação sobre o objeto store\n * @returns Promise com o resultado da operação\n */\n private async _executeTransaction<T>(mode: IDBTransactionMode, operation: (store: IDBObjectStore) => IDBRequest<T>): Promise<T> {\n const dbConnection: IDBDatabase = await this._dbConnection;\n const transaction: IDBTransaction = dbConnection.transaction(this._TABLE_NAME, mode);\n const store: IDBObjectStore = transaction.objectStore(this._TABLE_NAME);\n\n return new Promise((resolve, reject) => {\n const request = operation(store);\n request.onsuccess = () => resolve(request.result);\n request.onerror = (event) => reject((event.target as IDBRequest).error);\n });\n }\n\n // Salva um filtro no banco de dados\n /**\n * Salva ou atualiza uma visualização no banco de dados\n * @param view Nome da visualização\n * @param filter Objeto de configuração do filtro\n * @param userId Identificador do usuário\n * @param isDefault Indica se o filtro é padrão\n */\n public async save(view: string, filter: TFilter, userId: string, isDefault: boolean): Promise<void> {\n this._validateFilterInput(view, userId, filter);\n\n const allFilters: iBaseFilter<BaseFilterModel>[] = await this.findAll(userId);\n if (!ArrayUtil.isEmpty(allFilters) && isDefault) {\n const existingDefault = allFilters.find(e => e.isDefault);\n if (!ObjectUtil.isEmpty(existingDefault)) {\n existingDefault.isDefault = false;\n await this._executeTransaction('readwrite', (store) => store.put(existingDefault));\n }\n }\n\n const id: string = `${userId}-${view}`;\n const existingFilter: Nullable<iBaseFilter<BaseFilterModel>> = await this._executeTransaction<iBaseFilter | null>('readonly', (store) => store.get(id));\n if (!ObjectUtil.isEmpty(existingFilter)) {\n await this._executeTransaction('readwrite', (store) =>\n store.put({ ...existingFilter, filter, isDefault })\n );\n } else {\n await this._executeTransaction('readwrite', (store) =>\n store.add({ id, userId, view, filter, isDefault })\n );\n }\n }\n\n /**\n * Obtém todas as visualizações salvas de um usuário\n * @param userId Identificador do usuário\n * @returns Lista de visualizações pertencentes ao usuário ou lista vazia caso não exista\n */\n public async findAll(userId: string): Promise<iBaseFilter[]> {\n return this._executeTransaction('readonly', (store) => {\n const index = store.index(this._INDEX_USER_ID);\n return index.getAll(IDBKeyRange.only(userId));\n }).then((filters: iBaseFilter[]) => filters || []);\n }\n\n /**\n * Obtém uma visualização específica de um usuário pela 'view'\n * @param view Nome da visualização\n * @param userId Identificador do usuário\n * @returns Objeto da visualização ou null caso não exista\n */\n public async find(view: string, userId: string): Promise<iBaseFilter | null> {\n return this._executeTransaction<iBaseFilter | null>('readonly', (store) =>\n store.get(`${userId}-${view}`)\n ).then((result) => result || null);\n }\n\n /**\n * Remove um filtro específico de um usuário\n * @param view Nome da visualização\n * @param userId Identificador do usuário\n */\n public async remove(view: string, userId: string): Promise<void> {\n await this._executeTransaction('readwrite', (store) =>\n store.delete(`${userId}-${view}`)\n );\n }\n\n /**\n * Gera uma URL com os filtros aplicados na visualização\n * @param view Nome da visualização\n * @param filter Objeto do filtro aplicado na visualização\n * @returns URL gerada\n */\n public generateUrlFromView(view: string, filter: TFilter): string {\n const encodedFilter = encodeURIComponent(JSON.stringify(filter));\n return `http://localhost:4200/filters?view=${encodeURIComponent(view)}&filter=${encodedFilter}`;\n }\n\n /**\n * Restaura os filtros a partir de uma URL\n * @param url URL contendo os filtros\n * @returns Objeto do filtro restaurado\n */\n public restoreFiltersFromUrl(url: string): Nullable<TFilter> {\n const urlParams = new URLSearchParams(new URL(url).search);\n const filter = urlParams.get('filter');\n return filter ? JSON.parse(decodeURIComponent(filter)) : null;\n }\n\n /**\n * Copia um texto para a área de transferência\n * @param text Texto a ser copiado\n */\n public async copyToClipboard(text: string): Promise<void> {\n try {\n await navigator.clipboard.writeText(text);\n this._toastService.success('Filtro copiado para área de transferência!');\n } catch (_) {\n throw new FilterServiceError('Failed to copy text to clipboard', 'ERR_CLIPBOARD_COPY');\n }\n }\n\n /** Limpa todas as visualizações salvas do banco de dados (útil para testes) */\n public async clearDatabase(): Promise<void> {\n await this._executeTransaction('readwrite', (store) => store.clear());\n }\n\n /**\n * Exporta filtros de um usuário como JSON\n * @param userId Identificador do usuário\n * @returns JSON contento os dados\n */\n public async exportFilters(userId: string): Promise<string> {\n const filters: iBaseFilter[] = await this.findAll(userId);\n const forExport = filters.map(e => ({\n tag: e.tag,\n filter: e.filter,\n isDefault: e.isDefault,\n }));\n\n const text = JSON.stringify(forExport);\n this.copyToClipboard(text);\n return text;\n }\n\n /**\n * Importa filtros para um usuário a partir de JSON\n * @param userId Identificador do usuário\n * @param data JSON contendo os dados\n */\n public async importFilters(userId: string, data: string): Promise<void> {\n const filters: { tag: string; filter: TFilter; isDefault: boolean }[] = JSON.parse(data);\n for (const filter of filters) {\n await this.save(filter.tag, filter.filter, userId, filter.isDefault);\n }\n }\n\n}\n","import { booleanAttribute, inject, Injectable, numberAttribute } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { BaseFilterModel } from '../base/models/base-filter.model';\nimport { DateUtil } from '../utils/date.util';\n\n/**\n * Exemplo de uso da classe `FilterURLService`\n *\n * @example\n * import { FilterURLService } from '@gipisistemas/ngx-core';\n * import { Injectable } from '@angular/core';\n *\n * class MyFilter extends AbstractFilterModel {\n * name: string;\n * age: number;\n * }\n *\n * class MyComponent {\n * private _filterURLService: FilterURLService<MyFilter> = inject(FilterURLService);\n * public myFilter: MyFilter = new MyFilter()\n *\n * ngOnInit(): void {\n * const filters = this._filterURLService.getFilters({ name: '', age: null });\n * console.log(filters); // Obtém filtros da URL\n * }\n *\n * applyFilters(): void {\n * // Atualiza a URL sem recarregar a página\n * this._filterURLService.setFilters({ name: 'John', age: 25 });\n * }\n * }\n *\n */\n@Injectable({ providedIn: 'root' })\nexport class FilterURLService<F extends BaseFilterModel> {\n private readonly _router: Router = inject(Router);\n private readonly _activatedRoute: ActivatedRoute = inject(ActivatedRoute);\n\n constructor() {}\n\n /**\n * Obtém os filtros da URL e os mescla com os filtros padrão fornecidos.\n *\n * @param defaultFilters Filtros padrão a serem utilizados caso a URL não contenha parâmetros.\n * @returns Um objeto contendo os filtros mesclados.\n *\n * @example\n * const filters = filterURLService.getFilters(defaultFilters);\n * console.log(filters); // Retorna os filtros atuais na URL combinados com os filtros padrão.\n */\n public getFilters(defaultFilters: F): F {\n const params: Params = this._activatedRoute.snapshot.queryParams;\n return {\n ...defaultFilters,\n ...this._parseParams(params, defaultFilters),\n };\n }\n\n /**\n * Define filtros na URL sem recarregar a página.\n *\n * @param filters Objeto contendo os filtros a serem definidos na URL.\n *\n * @example\n * // A URL será atualizada com os parâmetros correspondentes.\n * filterURLService.setFilters({ name: 'John', age: 30 });\n */\n public setFilters(filters: F): void {\n const queryParams: Record<string, string> = this._stringifyParams(filters);\n this._router.navigate([], {\n queryParams,\n queryParamsHandling: 'merge',\n });\n }\n\n /**\n * Converte os parâmetros da URL em um objeto de filtros, garantindo a tipagem correta.\n *\n * @param params Parâmetros da URL extraídos da rota ativa.\n * @param template Objeto contendo a estrutura esperada dos filtros.\n * @returns Um objeto contendo os filtros convertidos para os tipos corretos.\n *\n * @example\n * const parsedParams = filterURLService._parseParams({ age: '30' }, defaultFilters);\n * console.log(parsedParams); // { age: 30 }\n */\n private _parseParams(params: Record<string, string>, template: F): Partial<F> {\n const parsed: Partial<F> = {};\n\n (Object.keys(template) as (keyof F)[]).forEach((key: keyof F) => {\n const value: string = params[key as string];\n if (value === undefined || value === null) {\n return;\n }\n\n const templateValue: F[keyof F] = template[key];\n if (Array.isArray(templateValue)) {\n try {\n parsed[key] = value.startsWith('[')\n ? (JSON.parse(decodeURIComponent(value)) as F[keyof F])\n : (value.split(',') as F[keyof F]);\n } catch {\n parsed[key] = [] as F[keyof F];\n }\n } else if (typeof templateValue === 'number') {\n parsed[key] = numberAttribute(value) as F[keyof F];\n } else if (typeof templateValue === 'boolean') {\n parsed[key] = booleanAttribute(value) as F[keyof F];\n } else if (templateValue instanceof Date) {\n parsed[key] = DateUtil.clone(new Date(value)) as F[keyof F];\n } else {\n parsed[key] = value as F[keyof F];\n }\n });\n\n return parsed;\n }\n\n /**\n * Converte um objeto de filtros em um formato adequado para a URL.\n *\n * @param filters Objeto contendo os filtros a serem convertidos.\n * @returns Um objeto contendo os filtros no formato de `queryParams`.\n *\n * @example\n * const queryParams = filterURLService._stringifyParams({ name: 'John', age: 30 });\n * console.log(queryParams); // { name: 'John', age: '30' }\n */\n private _stringifyParams(filters: F): Record<string, string> {\n return Object.entries(filters).reduce(\n (acc, [key, value]) => {\n if (value === undefined || value === null) {\n return acc;\n }\n\n if (Array.isArray(value)) {\n acc[key] =\n typeof value[0] === 'object'\n ? encodeURIComponent(JSON.stringify(value))\n : value.join(',');\n } else if (value instanceof Date) {\n acc[key] = value.toISOString();\n } else {\n acc[key] = String(value);\n }\n return acc;\n },\n {} as Record<string, string>,\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl } from '@angular/platform-browser';\n\n@Injectable({ providedIn: 'root' })\nexport class SvgRegisterService {\n private _matIconRegistry = inject(MatIconRegistry);\n private _domSanitizer = inject(DomSanitizer);\n\n constructor() { }\n\n /**\n * Registra um ícone SVG a partir de um enum.\n * @param enumSvgs Enum de svgs:\n * @example\n * export enum SvgIcons {\n * SVG_ONE: 'svg_one',\n * ...\n * }\n * @param path Caminho onde o svg está localizado\n */\n public registerListSvg(enumSvgs: Record<string, string>, path: string): void {\n const svgValues = Object.values(enumSvgs);\n for (const key of svgValues) {\n this.registerSvg(key, path);\n }\n }\n\n /**\n * Registra um ícone SVG a partir de um arquivo do SVG.\n * - Insira apenas o nome do svg sem a extensão.\n * @param key - Nome único do ícone que será usado para referenciá-lo no template.\n * @param path - Caminho onde o svg está localizado\n */\n public registerSvg(key: string, path: string): void {\n try {\n const svgUrl: SafeResourceUrl = this._domSanitizer.bypassSecurityTrustResourceUrl(`${path}/${key}.svg`);\n this._matIconRegistry.addSvgIcon(key, svgUrl);\n } catch (_) {\n throw new Error(`Ocorreu um erro ao registrar o svg, ${key}`);\n }\n }\n\n /**\n * Registra um ícone SVG a partir de um html do SVG.\n * - Insira apenas o nome do svg sem a extensão.\n * @param key - Nome único do ícone que será usado para referenciá-lo no template.\n * @param svg - Conteúdo SVG em formato de string.\n */\n public registerSvgIconLiteral(key: string, svg: string): void {\n try {\n const literal: SafeHtml = this._domSanitizer.bypassSecurityTrustHtml(svg);\n this._matIconRegistry.addSvgIconLiteral(key, literal);\n } catch (_) {\n throw new Error(`Ocorreu um erro ao registrar o svg, ${key}`);\n }\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.BaseCrudService","finalize","moment","i1","i3","i2","i3.PopoverTriggerDirective","i4.PopoverComponent","i4","filter","map","ROW_HEIGHT","i2.PopoverTriggerDirective","i3.PopoverComponent","switchMap","takeUntil","catchError"],"mappings":"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,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnD,qBAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnD,qBAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnD,qBAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnD,qBAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnD,qBAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnD,qBAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnD,qBAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,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"}
|