@gipisistemas/ng-core 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- package/assets/styles/colors.scss +261 -0
- package/assets/styles/layout-grid.scss +146 -0
- package/assets/styles/styles.scss +149 -0
- package/assets/styles/theme.scss +22 -0
- package/assets/styles/typography.scss +54 -0
- package/assets/styles/variable.scss +41 -0
- package/bundles/gipisistemas-ng-core.umd.js +28311 -0
- package/bundles/gipisistemas-ng-core.umd.js.map +1 -0
- package/bundles/gipisistemas-ng-core.umd.min.js +66 -0
- package/bundles/gipisistemas-ng-core.umd.min.js.map +1 -0
- package/core/app-messages.d.ts +9 -0
- package/core/app.messages.d.ts +4 -0
- package/core/components/abstract-crud.component.d.ts +27 -0
- package/core/components/abstract-find.component.d.ts +43 -0
- package/core/components/abstract.component.d.ts +23 -0
- package/core/components/alert/alert.component.d.ts +7 -0
- package/core/core.module.d.ts +17 -0
- package/core/custom-breakpoints.d.ts +7 -0
- package/core/enums/local-time.enum.d.ts +5 -0
- package/core/extensions/string.extension.d.ts +3 -0
- package/core/gipi-components/components/abstract-crud.component.d.ts +25 -0
- package/core/gipi-components/components/abstract-find.component.d.ts +73 -0
- package/core/gipi-components/components/abstract.component.d.ts +38 -0
- package/core/gipi-components/decorators/autowired.decorator.d.ts +7 -0
- package/core/gipi-components/enums/sort-direction.enum.d.ts +5 -0
- package/core/gipi-components/interface/abstract-crud.interface.d.ts +5 -0
- package/core/gipi-components/interface/abstract-find.interface.d.ts +12 -0
- package/core/gipi-components/interface/abstract.interface.d.ts +11 -0
- package/core/gipi-components/interface/base-permission.interface.d.ts +9 -0
- package/core/gipi-components/models/abstract-filter.model.d.ts +9 -0
- package/core/gipi-components/models/abstract.model.d.ts +7 -0
- package/core/gipi-components/models/applied-filter.model.d.ts +9 -0
- package/core/gipi-components/models/dto/abstract.dto.d.ts +7 -0
- package/core/gipi-components/models/page-event.model.d.ts +18 -0
- package/core/gipi-components/models/page.model.d.ts +7 -0
- package/core/gipi-components/models/sort.model.d.ts +6 -0
- package/core/gipi-components/services/abstract-crud.service.d.ts +83 -0
- package/core/gipi-components/services/abstract.service.d.ts +19 -0
- package/core/gipi-components/services/base.service.d.ts +35 -0
- package/core/gipi-components/services/file.service.d.ts +6 -0
- package/core/gipi-components/services/session-storage.service.d.ts +8 -0
- package/core/gipi-components/types/generic.type.d.ts +1 -0
- package/core/gipi-components/types/uuid.type.d.ts +1 -0
- package/core/guards/auth.guard.d.ts +11 -0
- package/core/guards/permission.guard.d.ts +14 -0
- package/core/guards/public.guard.d.ts +11 -0
- package/core/interceptors/auth.interceptor.d.ts +9 -0
- package/core/interceptors/error.interceptor.d.ts +11 -0
- package/core/models/abstract.model.d.ts +3 -0
- package/core/models/archive.model.d.ts +4 -0
- package/core/models/authority.model.d.ts +3 -0
- package/core/models/base-user.model.d.ts +12 -0
- package/core/models/dto/abstract.dto.d.ts +2 -0
- package/core/models/dto/api-error.dto.d.ts +9 -0
- package/core/models/dto/api-sub-error.dto.d.ts +7 -0
- package/core/models/dto/chart.dto.d.ts +5 -0
- package/core/models/dto/confirmation.dto.d.ts +10 -0
- package/core/models/dto/dialog.dto.d.ts +36 -0
- package/core/models/dto/filter.dto.d.ts +8 -0
- package/core/models/dto/input-listbox.dto.d.ts +6 -0
- package/core/models/dto/menu.dto.d.ts +15 -0
- package/core/models/dto/message.dto.d.ts +7 -0
- package/core/models/dto/page.dto.d.ts +8 -0
- package/core/models/dto/sort.dto.d.ts +7 -0
- package/core/models/dto/tab.dto.d.ts +12 -0
- package/core/models/dto/table-column.dto.d.ts +21 -0
- package/core/models/dto/table-group-header.dto.d.ts +7 -0
- package/core/models/dto/table-page-event.dto.d.ts +6 -0
- package/core/models/dto/token.dto.d.ts +8 -0
- package/core/models/enums/criteria-operation.enum.d.ts +13 -0
- package/core/models/enums/criteria-sort-direction.enum.d.ts +4 -0
- package/core/models/enums/menu-type.enum.d.ts +6 -0
- package/core/models/enums/radio-button.enum.d.ts +6 -0
- package/core/models/enums/sort-direction.enum.d.ts +4 -0
- package/core/models/multitenant.model.d.ts +4 -0
- package/core/models/permission.model.d.ts +8 -0
- package/core/models/role.model.d.ts +7 -0
- package/core/pipes/local-time.pipe.d.ts +6 -0
- package/core/services/abstract-crud.service.d.ts +15 -0
- package/core/services/abstract-find.service.d.ts +30 -0
- package/core/services/abstract.service.d.ts +13 -0
- package/core/services/authentication.service.d.ts +23 -0
- package/core/services/breakpoint-observer.service.d.ts +9 -0
- package/core/services/confirmation.service.d.ts +8 -0
- package/core/services/dialog.service.d.ts +8 -0
- package/core/services/message.service.d.ts +8 -0
- package/core/services/nav.service.d.ts +16 -0
- package/core/services/svg-register.service.d.ts +22 -0
- package/core/types/local-time.type.d.ts +5 -0
- package/core/types/ng-class.type.d.ts +10 -0
- package/core/utils/array.util.d.ts +14 -0
- package/core/utils/browser.util.d.ts +4 -0
- package/core/utils/currency.util.d.ts +6 -0
- package/core/utils/date.util.d.ts +39 -0
- package/core/utils/document.util.d.ts +11 -0
- package/core/utils/email.util.d.ts +4 -0
- package/core/utils/number.util.d.ts +8 -0
- package/core/utils/object.util.d.ts +20 -0
- package/core/utils/password.util.d.ts +11 -0
- package/core/utils/phone.util.d.ts +13 -0
- package/core/utils/string.util.d.ts +9 -0
- package/core/utils/table-column-builder.d.ts +40 -0
- package/core/utils/time.util.d.ts +9 -0
- package/core/utils/url-params.util.d.ts +7 -0
- package/core/utils/uuid.util.d.ts +5 -0
- package/core/utils/zindex.util.d.ts +7 -0
- package/core.d.ts +88 -0
- package/esm2015/core/app-messages.js +1 -0
- package/esm2015/core/app.messages.js +12 -0
- package/esm2015/core/components/abstract-crud.component.js +97 -0
- package/esm2015/core/components/abstract-find.component.js +189 -0
- package/esm2015/core/components/abstract.component.js +110 -0
- package/esm2015/core/components/alert/alert.component.js +24 -0
- package/esm2015/core/core.module.js +103 -0
- package/esm2015/core/custom-breakpoints.js +87 -0
- package/esm2015/core/enums/local-time.enum.js +6 -0
- package/esm2015/core/extensions/string.extension.js +37 -0
- package/esm2015/core/gipi-components/components/abstract-crud.component.js +110 -0
- package/esm2015/core/gipi-components/components/abstract-find.component.js +471 -0
- package/esm2015/core/gipi-components/components/abstract.component.js +140 -0
- package/esm2015/core/gipi-components/decorators/autowired.decorator.js +47 -0
- package/esm2015/core/gipi-components/enums/sort-direction.enum.js +6 -0
- package/esm2015/core/gipi-components/interface/abstract-crud.interface.js +1 -0
- package/esm2015/core/gipi-components/interface/abstract-find.interface.js +1 -0
- package/esm2015/core/gipi-components/interface/abstract.interface.js +1 -0
- package/esm2015/core/gipi-components/interface/base-permission.interface.js +1 -0
- package/esm2015/core/gipi-components/models/abstract-filter.model.js +3 -0
- package/esm2015/core/gipi-components/models/abstract.model.js +3 -0
- package/esm2015/core/gipi-components/models/applied-filter.model.js +19 -0
- package/esm2015/core/gipi-components/models/dto/abstract.dto.js +3 -0
- package/esm2015/core/gipi-components/models/page-event.model.js +35 -0
- package/esm2015/core/gipi-components/models/page.model.js +7 -0
- package/esm2015/core/gipi-components/models/sort.model.js +7 -0
- package/esm2015/core/gipi-components/services/abstract-crud.service.js +109 -0
- package/esm2015/core/gipi-components/services/abstract.service.js +47 -0
- package/esm2015/core/gipi-components/services/base.service.js +102 -0
- package/esm2015/core/gipi-components/services/file.service.js +51 -0
- package/esm2015/core/gipi-components/services/session-storage.service.js +44 -0
- package/esm2015/core/gipi-components/types/generic.type.js +1 -0
- package/esm2015/core/gipi-components/types/uuid.type.js +1 -0
- package/esm2015/core/guards/auth.guard.js +48 -0
- package/esm2015/core/guards/permission.guard.js +61 -0
- package/esm2015/core/guards/public.guard.js +45 -0
- package/esm2015/core/interceptors/auth.interceptor.js +28 -0
- package/esm2015/core/interceptors/error.interceptor.js +110 -0
- package/esm2015/core/models/abstract.model.js +3 -0
- package/esm2015/core/models/archive.model.js +3 -0
- package/esm2015/core/models/authority.model.js +3 -0
- package/esm2015/core/models/base-user.model.js +8 -0
- package/esm2015/core/models/dto/abstract.dto.js +3 -0
- package/esm2015/core/models/dto/api-error.dto.js +8 -0
- package/esm2015/core/models/dto/api-sub-error.dto.js +4 -0
- package/esm2015/core/models/dto/chart.dto.js +4 -0
- package/esm2015/core/models/dto/confirmation.dto.js +8 -0
- package/esm2015/core/models/dto/dialog.dto.js +4 -0
- package/esm2015/core/models/dto/filter.dto.js +4 -0
- package/esm2015/core/models/dto/input-listbox.dto.js +7 -0
- package/esm2015/core/models/dto/menu.dto.js +9 -0
- package/esm2015/core/models/dto/message.dto.js +4 -0
- package/esm2015/core/models/dto/page.dto.js +9 -0
- package/esm2015/core/models/dto/sort.dto.js +9 -0
- package/esm2015/core/models/dto/tab.dto.js +10 -0
- package/esm2015/core/models/dto/table-column.dto.js +24 -0
- package/esm2015/core/models/dto/table-group-header.dto.js +10 -0
- package/esm2015/core/models/dto/table-page-event.dto.js +7 -0
- package/esm2015/core/models/dto/token.dto.js +4 -0
- package/esm2015/core/models/enums/criteria-operation.enum.js +15 -0
- package/esm2015/core/models/enums/criteria-sort-direction.enum.js +6 -0
- package/esm2015/core/models/enums/menu-type.enum.js +7 -0
- package/esm2015/core/models/enums/radio-button.enum.js +8 -0
- package/esm2015/core/models/enums/sort-direction.enum.js +6 -0
- package/esm2015/core/models/multitenant.model.js +4 -0
- package/esm2015/core/models/permission.model.js +11 -0
- package/esm2015/core/models/role.model.js +8 -0
- package/esm2015/core/pipes/local-time.pipe.js +21 -0
- package/esm2015/core/services/abstract-crud.service.js +24 -0
- package/esm2015/core/services/abstract-find.service.js +65 -0
- package/esm2015/core/services/abstract.service.js +30 -0
- package/esm2015/core/services/authentication.service.js +100 -0
- package/esm2015/core/services/breakpoint-observer.service.js +42 -0
- package/esm2015/core/services/confirmation.service.js +55 -0
- package/esm2015/core/services/dialog.service.js +41 -0
- package/esm2015/core/services/message.service.js +33 -0
- package/esm2015/core/services/nav.service.js +48 -0
- package/esm2015/core/services/svg-register.service.js +55 -0
- package/esm2015/core/types/local-time.type.js +1 -0
- package/esm2015/core/types/ng-class.type.js +1 -0
- package/esm2015/core/utils/array.util.js +110 -0
- package/esm2015/core/utils/browser.util.js +13 -0
- package/esm2015/core/utils/currency.util.js +21 -0
- package/esm2015/core/utils/date.util.js +257 -0
- package/esm2015/core/utils/document.util.js +153 -0
- package/esm2015/core/utils/email.util.js +25 -0
- package/esm2015/core/utils/number.util.js +28 -0
- package/esm2015/core/utils/object.util.js +199 -0
- package/esm2015/core/utils/password.util.js +38 -0
- package/esm2015/core/utils/phone.util.js +125 -0
- package/esm2015/core/utils/string.util.js +40 -0
- package/esm2015/core/utils/table-column-builder.js +85 -0
- package/esm2015/core/utils/time.util.js +59 -0
- package/esm2015/core/utils/url-params.util.js +12 -0
- package/esm2015/core/utils/uuid.util.js +17 -0
- package/esm2015/core/utils/zindex.util.js +35 -0
- package/esm2015/core.js +89 -0
- package/esm2015/gipi-components.js +105 -0
- package/esm2015/gipisistemas-ng-core.js +21 -0
- package/esm2015/public_api.js +4 -0
- package/esm2015/shared/api/generate-id-component.js +12 -0
- package/esm2015/shared/api/gipi-ng-config.js +76 -0
- package/esm2015/shared/api/overlay-message.js +1 -0
- package/esm2015/shared/api/throttle.js +60 -0
- package/esm2015/shared/api/translation.js +1 -0
- package/esm2015/shared/components/button/button.component.js +110 -0
- package/esm2015/shared/components/card/card.component.js +44 -0
- package/esm2015/shared/components/checkbox/checkbox.component.js +79 -0
- package/esm2015/shared/components/dom/connected-overlay-scroll-handler.js +27 -0
- package/esm2015/shared/components/dom/dom-handler.js +538 -0
- package/esm2015/shared/components/icon/icon.component.js +35 -0
- package/esm2015/shared/components/input/input.component.js +235 -0
- package/esm2015/shared/components/input-currency/input-currency.component.js +115 -0
- package/esm2015/shared/components/input-file/input-file.component.js +161 -0
- package/esm2015/shared/components/loading/loading.component.js +15 -0
- package/esm2015/shared/components/loading-overlay/loading-overlay.component.js +21 -0
- package/esm2015/shared/components/overlay-panel/overlay-panel.component.js +361 -0
- package/esm2015/shared/components/popover/popover-ref.js +25 -0
- package/esm2015/shared/components/popover/popover.component.js +34 -0
- package/esm2015/shared/components/popover/popover.service.js +85 -0
- package/esm2015/shared/components/radio-group-entity/radio-group-entity.component.js +74 -0
- package/esm2015/shared/components/radio-group-enum/radio-group-enum.component.js +126 -0
- package/esm2015/shared/components/select-button/select-button.component.js +181 -0
- package/esm2015/shared/components/select-entity/select-entity.component.js +262 -0
- package/esm2015/shared/components/select-entity-paged/select-entity-paged.component.js +419 -0
- package/esm2015/shared/components/select-entity-paged/shared/default-options.js +35 -0
- package/esm2015/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.js +69 -0
- package/esm2015/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.js +59 -0
- package/esm2015/shared/components/select-entity-paged/shared/select-no-entries-found.directive.js +20 -0
- package/esm2015/shared/components/select-entity-paged/shared/select-search/select-search.component.js +547 -0
- package/esm2015/shared/components/select-entity-paged/shared/select-search-clear.directive.js +18 -0
- package/esm2015/shared/components/select-enum/select-enum.component.js +117 -0
- package/esm2015/shared/components/select-month-period/select-month-period.component.js +87 -0
- package/esm2015/shared/components/slide-toggle/slide-toggle.component.js +75 -0
- package/esm2015/shared/components/stepper/stepper.component.js +32 -0
- package/esm2015/shared/components/tab/tab.component.js +57 -0
- package/esm2015/shared/components/tab-group/tab-group.component.js +117 -0
- package/esm2015/shared/components/table/table.component.js +523 -0
- package/esm2015/shared/components/table-scrolled/table-scrolled.component.js +105 -0
- package/esm2015/shared/components/textarea/textarea.component.js +156 -0
- package/esm2015/shared/directives/dynamic-tab.directive.js +18 -0
- package/esm2015/shared/directives/generic-template.directive.js +30 -0
- package/esm2015/shared/directives/input-select-infinite-scroll.directive.js +109 -0
- package/esm2015/shared/directives/lower-case.directive.js +47 -0
- package/esm2015/shared/directives/phone-mask.directive.js +60 -0
- package/esm2015/shared/directives/space-drop.directive.js +47 -0
- package/esm2015/shared/directives/upper-case.directive.js +47 -0
- package/esm2015/shared/gipi-components/abstract-form/abstract-form.component.js +119 -0
- package/esm2015/shared/gipi-components/action-row/action-row.component.js +30 -0
- package/esm2015/shared/gipi-components/badge/badge.component.js +44 -0
- package/esm2015/shared/gipi-components/button/button.component.js +251 -0
- package/esm2015/shared/gipi-components/chips/chips.component.js +149 -0
- package/esm2015/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.js +44 -0
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +324 -0
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.js +41 -0
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.js +35 -0
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.js +259 -0
- package/esm2015/shared/gipi-components/datepicker/datepicker/datepicker.component.js +218 -0
- package/esm2015/shared/gipi-components/datepicker/datepicker.module.js +130 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +341 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/calendar.js +397 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.js +325 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +329 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.js +41 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.js +61 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.js +159 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.js +35 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.js +555 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.js +14 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.js +303 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.js +179 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.js +51 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.js +124 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker.js +29 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/month-view.js +365 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.js +305 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.js +116 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.js +10 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.js +294 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.js +19 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.js +81 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/year-view.js +294 -0
- package/esm2015/shared/gipi-components/dom/connected-overlay-scroll-handler.js +27 -0
- package/esm2015/shared/gipi-components/dom/dom-handler.js +645 -0
- package/esm2015/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +185 -0
- package/esm2015/shared/gipi-components/expansion-panel/expansion-panel.component.js +81 -0
- package/esm2015/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.js +240 -0
- package/esm2015/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.js +92 -0
- package/esm2015/shared/gipi-components/footer/footer.component.js +29 -0
- package/esm2015/shared/gipi-components/form-field/form-field.component.js +262 -0
- package/esm2015/shared/gipi-components/helpful-tip/helpful-tip.component.js +62 -0
- package/esm2015/shared/gipi-components/infinite-scroll/infinite-scroll.directive.js +103 -0
- package/esm2015/shared/gipi-components/input-checkbox/input-checkbox.component.js +112 -0
- package/esm2015/shared/gipi-components/input-currency/input-currency.component.js +197 -0
- package/esm2015/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +408 -0
- package/esm2015/shared/gipi-components/input-select/input-select.component.js +655 -0
- package/esm2015/shared/gipi-components/input-select-enum/input-select-enum.component.js +311 -0
- package/esm2015/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +422 -0
- package/esm2015/shared/gipi-components/input-select-paged/input-search/input-search.component.js +374 -0
- package/esm2015/shared/gipi-components/input-select-paged/input-select-paged.component.js +350 -0
- package/esm2015/shared/gipi-components/input-select-radio/input-select-radio.component.js +269 -0
- package/esm2015/shared/gipi-components/layout-grid/col.directive.js +161 -0
- package/esm2015/shared/gipi-components/layout-grid/row.directive.js +124 -0
- package/esm2015/shared/gipi-components/layout-grid/services/breakpoint.service.js +87 -0
- package/esm2015/shared/gipi-components/layout-grid/services/resize.service.js +64 -0
- package/esm2015/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.js +193 -0
- package/esm2015/shared/gipi-components/month-year-picker/mont-year-picker.module.js +47 -0
- package/esm2015/shared/gipi-components/month-year-picker/month-year-picker.component.js +460 -0
- package/esm2015/shared/gipi-components/notification/notification.component.js +104 -0
- package/esm2015/shared/gipi-components/novelties/novelties.component.js +109 -0
- package/esm2015/shared/gipi-components/overlay/overlay.component.js +565 -0
- package/esm2015/shared/gipi-components/overlay/shared/overlay-service.js +21 -0
- package/esm2015/shared/gipi-components/overlay/shared/overlay_options.js +1 -0
- package/esm2015/shared/gipi-components/password-requeriments/password-requeriments.component.js +127 -0
- package/esm2015/shared/gipi-components/popover/popover.component.js +397 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-animations.js +29 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-errors.js +27 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-interfaces.js +1 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-target.js +19 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-trigger.js +514 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-types.js +1 -0
- package/esm2015/shared/gipi-components/radio-group/radio-group.component.js +143 -0
- package/esm2015/shared/gipi-components/range-page/range-page.component.js +254 -0
- package/esm2015/shared/gipi-components/range-slider/range-slider.component.js +345 -0
- package/esm2015/shared/gipi-components/select/select.component.js +211 -0
- package/esm2015/shared/gipi-components/select-button/select-button.component.js +187 -0
- package/esm2015/shared/gipi-components/sidebar/container/container.component.js +83 -0
- package/esm2015/shared/gipi-components/sidebar/sidenav/sidenav.component.js +240 -0
- package/esm2015/shared/gipi-components/stepper/stepper.component.js +37 -0
- package/esm2015/shared/gipi-components/table/components/table-body/table-body.component.js +203 -0
- package/esm2015/shared/gipi-components/table/components/table-footer/table-footer.component.js +30 -0
- package/esm2015/shared/gipi-components/table/components/table-header/table-header.component.js +152 -0
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.js +122 -0
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.js +225 -0
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.js +1 -0
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination.service.js +105 -0
- package/esm2015/shared/gipi-components/table/components/table-pagination/table-pagination.component.js +102 -0
- package/esm2015/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.js +30 -0
- package/esm2015/shared/gipi-components/table/models/pipe-transform.model.js +1 -0
- package/esm2015/shared/gipi-components/table/models/sort.model.js +19 -0
- package/esm2015/shared/gipi-components/table/models/sorted-column.model.js +2 -0
- package/esm2015/shared/gipi-components/table/models/table-column-builder.model.js +104 -0
- package/esm2015/shared/gipi-components/table/models/table-column.model.js +162 -0
- package/esm2015/shared/gipi-components/table/table.component.js +159 -0
- package/esm2015/shared/gipi-components/table/types/sort-direction.type.js +1 -0
- package/esm2015/shared/gipi-components/table/types/sort.type.js +1 -0
- package/esm2015/shared/gipi-components/template/template.directive.js +33 -0
- package/esm2015/shared/gipi-components/toolbar/toolbar.component.js +53 -0
- package/esm2015/shared/gipi-components/top-nav/top-nav.component.js +38 -0
- package/esm2015/shared/gipi-components/user-profile/user-profile.component.js +109 -0
- package/esm2015/shared/material.module.js +102 -0
- package/esm2015/shared/shared.module.js +339 -0
- package/esm2015/shared.js +36 -0
- package/esm5/core/app-messages.js +1 -0
- package/esm5/core/app.messages.js +12 -0
- package/esm5/core/components/abstract-crud.component.js +108 -0
- package/esm5/core/components/abstract-find.component.js +201 -0
- package/esm5/core/components/abstract.component.js +112 -0
- package/esm5/core/components/alert/alert.component.js +25 -0
- package/esm5/core/core.module.js +107 -0
- package/esm5/core/custom-breakpoints.js +87 -0
- package/esm5/core/enums/local-time.enum.js +6 -0
- package/esm5/core/extensions/string.extension.js +37 -0
- package/esm5/core/gipi-components/components/abstract-crud.component.js +122 -0
- package/esm5/core/gipi-components/components/abstract-find.component.js +507 -0
- package/esm5/core/gipi-components/components/abstract.component.js +152 -0
- package/esm5/core/gipi-components/decorators/autowired.decorator.js +52 -0
- package/esm5/core/gipi-components/enums/sort-direction.enum.js +6 -0
- package/esm5/core/gipi-components/interface/abstract-crud.interface.js +1 -0
- package/esm5/core/gipi-components/interface/abstract-find.interface.js +1 -0
- package/esm5/core/gipi-components/interface/abstract.interface.js +1 -0
- package/esm5/core/gipi-components/interface/base-permission.interface.js +1 -0
- package/esm5/core/gipi-components/models/abstract-filter.model.js +7 -0
- package/esm5/core/gipi-components/models/abstract.model.js +7 -0
- package/esm5/core/gipi-components/models/applied-filter.model.js +29 -0
- package/esm5/core/gipi-components/models/dto/abstract.dto.js +7 -0
- package/esm5/core/gipi-components/models/page-event.model.js +49 -0
- package/esm5/core/gipi-components/models/page.model.js +9 -0
- package/esm5/core/gipi-components/models/sort.model.js +9 -0
- package/esm5/core/gipi-components/services/abstract-crud.service.js +114 -0
- package/esm5/core/gipi-components/services/abstract.service.js +49 -0
- package/esm5/core/gipi-components/services/base.service.js +143 -0
- package/esm5/core/gipi-components/services/file.service.js +53 -0
- package/esm5/core/gipi-components/services/session-storage.service.js +45 -0
- package/esm5/core/gipi-components/types/generic.type.js +1 -0
- package/esm5/core/gipi-components/types/uuid.type.js +1 -0
- package/esm5/core/guards/auth.guard.js +50 -0
- package/esm5/core/guards/permission.guard.js +74 -0
- package/esm5/core/guards/public.guard.js +47 -0
- package/esm5/core/interceptors/auth.interceptor.js +29 -0
- package/esm5/core/interceptors/error.interceptor.js +129 -0
- package/esm5/core/models/abstract.model.js +7 -0
- package/esm5/core/models/archive.model.js +7 -0
- package/esm5/core/models/authority.model.js +7 -0
- package/esm5/core/models/base-user.model.js +13 -0
- package/esm5/core/models/dto/abstract.dto.js +7 -0
- package/esm5/core/models/dto/api-error.dto.js +13 -0
- package/esm5/core/models/dto/api-sub-error.dto.js +11 -0
- package/esm5/core/models/dto/chart.dto.js +11 -0
- package/esm5/core/models/dto/confirmation.dto.js +13 -0
- package/esm5/core/models/dto/dialog.dto.js +11 -0
- package/esm5/core/models/dto/filter.dto.js +11 -0
- package/esm5/core/models/dto/input-listbox.dto.js +11 -0
- package/esm5/core/models/dto/menu.dto.js +14 -0
- package/esm5/core/models/dto/message.dto.js +11 -0
- package/esm5/core/models/dto/page.dto.js +14 -0
- package/esm5/core/models/dto/sort.dto.js +14 -0
- package/esm5/core/models/dto/tab.dto.js +15 -0
- package/esm5/core/models/dto/table-column.dto.js +29 -0
- package/esm5/core/models/dto/table-group-header.dto.js +15 -0
- package/esm5/core/models/dto/table-page-event.dto.js +11 -0
- package/esm5/core/models/dto/token.dto.js +11 -0
- package/esm5/core/models/enums/criteria-operation.enum.js +15 -0
- package/esm5/core/models/enums/criteria-sort-direction.enum.js +6 -0
- package/esm5/core/models/enums/menu-type.enum.js +7 -0
- package/esm5/core/models/enums/radio-button.enum.js +8 -0
- package/esm5/core/models/enums/sort-direction.enum.js +6 -0
- package/esm5/core/models/multitenant.model.js +11 -0
- package/esm5/core/models/permission.model.js +16 -0
- package/esm5/core/models/role.model.js +13 -0
- package/esm5/core/pipes/local-time.pipe.js +26 -0
- package/esm5/core/services/abstract-crud.service.js +30 -0
- package/esm5/core/services/abstract-find.service.js +71 -0
- package/esm5/core/services/abstract.service.js +32 -0
- package/esm5/core/services/authentication.service.js +121 -0
- package/esm5/core/services/breakpoint-observer.service.js +52 -0
- package/esm5/core/services/confirmation.service.js +66 -0
- package/esm5/core/services/dialog.service.js +44 -0
- package/esm5/core/services/message.service.js +36 -0
- package/esm5/core/services/nav.service.js +51 -0
- package/esm5/core/services/svg-register.service.js +67 -0
- package/esm5/core/types/local-time.type.js +1 -0
- package/esm5/core/types/ng-class.type.js +1 -0
- package/esm5/core/utils/array.util.js +120 -0
- package/esm5/core/utils/browser.util.js +17 -0
- package/esm5/core/utils/currency.util.js +26 -0
- package/esm5/core/utils/date.util.js +269 -0
- package/esm5/core/utils/document.util.js +157 -0
- package/esm5/core/utils/email.util.js +29 -0
- package/esm5/core/utils/number.util.js +32 -0
- package/esm5/core/utils/object.util.js +204 -0
- package/esm5/core/utils/password.util.js +42 -0
- package/esm5/core/utils/phone.util.js +135 -0
- package/esm5/core/utils/string.util.js +44 -0
- package/esm5/core/utils/table-column-builder.js +87 -0
- package/esm5/core/utils/time.util.js +65 -0
- package/esm5/core/utils/url-params.util.js +16 -0
- package/esm5/core/utils/uuid.util.js +21 -0
- package/esm5/core/utils/zindex.util.js +35 -0
- package/esm5/core.js +89 -0
- package/esm5/gipi-components.js +105 -0
- package/esm5/gipisistemas-ng-core.js +21 -0
- package/esm5/public_api.js +4 -0
- package/esm5/shared/api/generate-id-component.js +16 -0
- package/esm5/shared/api/gipi-ng-config.js +77 -0
- package/esm5/shared/api/overlay-message.js +1 -0
- package/esm5/shared/api/throttle.js +60 -0
- package/esm5/shared/api/translation.js +1 -0
- package/esm5/shared/components/button/button.component.js +111 -0
- package/esm5/shared/components/card/card.component.js +45 -0
- package/esm5/shared/components/checkbox/checkbox.component.js +85 -0
- package/esm5/shared/components/dom/connected-overlay-scroll-handler.js +30 -0
- package/esm5/shared/components/dom/dom-handler.js +573 -0
- package/esm5/shared/components/icon/icon.component.js +38 -0
- package/esm5/shared/components/input/input.component.js +242 -0
- package/esm5/shared/components/input-currency/input-currency.component.js +121 -0
- package/esm5/shared/components/input-file/input-file.component.js +165 -0
- package/esm5/shared/components/loading/loading.component.js +18 -0
- package/esm5/shared/components/loading-overlay/loading-overlay.component.js +23 -0
- package/esm5/shared/components/overlay-panel/overlay-panel.component.js +366 -0
- package/esm5/shared/components/popover/popover-ref.js +28 -0
- package/esm5/shared/components/popover/popover.component.js +35 -0
- package/esm5/shared/components/popover/popover.service.js +88 -0
- package/esm5/shared/components/radio-group-entity/radio-group-entity.component.js +80 -0
- package/esm5/shared/components/radio-group-enum/radio-group-enum.component.js +138 -0
- package/esm5/shared/components/select-button/select-button.component.js +195 -0
- package/esm5/shared/components/select-entity/select-entity.component.js +269 -0
- package/esm5/shared/components/select-entity-paged/select-entity-paged.component.js +453 -0
- package/esm5/shared/components/select-entity-paged/shared/default-options.js +35 -0
- package/esm5/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.js +72 -0
- package/esm5/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.js +62 -0
- package/esm5/shared/components/select-entity-paged/shared/select-no-entries-found.directive.js +23 -0
- package/esm5/shared/components/select-entity-paged/shared/select-search/select-search.component.js +590 -0
- package/esm5/shared/components/select-entity-paged/shared/select-search-clear.directive.js +21 -0
- package/esm5/shared/components/select-enum/select-enum.component.js +124 -0
- package/esm5/shared/components/select-month-period/select-month-period.component.js +91 -0
- package/esm5/shared/components/slide-toggle/slide-toggle.component.js +81 -0
- package/esm5/shared/components/stepper/stepper.component.js +36 -0
- package/esm5/shared/components/tab/tab.component.js +58 -0
- package/esm5/shared/components/tab-group/tab-group.component.js +125 -0
- package/esm5/shared/components/table/table.component.js +538 -0
- package/esm5/shared/components/table-scrolled/table-scrolled.component.js +107 -0
- package/esm5/shared/components/textarea/textarea.component.js +174 -0
- package/esm5/shared/directives/dynamic-tab.directive.js +19 -0
- package/esm5/shared/directives/generic-template.directive.js +31 -0
- package/esm5/shared/directives/input-select-infinite-scroll.directive.js +113 -0
- package/esm5/shared/directives/lower-case.directive.js +48 -0
- package/esm5/shared/directives/phone-mask.directive.js +61 -0
- package/esm5/shared/directives/space-drop.directive.js +48 -0
- package/esm5/shared/directives/upper-case.directive.js +48 -0
- package/esm5/shared/gipi-components/abstract-form/abstract-form.component.js +141 -0
- package/esm5/shared/gipi-components/action-row/action-row.component.js +33 -0
- package/esm5/shared/gipi-components/badge/badge.component.js +46 -0
- package/esm5/shared/gipi-components/button/button.component.js +257 -0
- package/esm5/shared/gipi-components/chips/chips.component.js +159 -0
- package/esm5/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.js +46 -0
- package/esm5/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +378 -0
- package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.js +42 -0
- package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.js +40 -0
- package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.js +291 -0
- package/esm5/shared/gipi-components/datepicker/datepicker/datepicker.component.js +252 -0
- package/esm5/shared/gipi-components/datepicker/datepicker.module.js +133 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +349 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/calendar.js +441 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.js +339 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +376 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.js +46 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.js +62 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.js +167 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.js +35 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.js +586 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.js +14 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.js +327 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.js +199 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.js +52 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.js +133 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker.js +34 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/month-view.js +384 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.js +324 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.js +118 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.js +10 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.js +300 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.js +19 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.js +82 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/year-view.js +313 -0
- package/esm5/shared/gipi-components/dom/connected-overlay-scroll-handler.js +30 -0
- package/esm5/shared/gipi-components/dom/dom-handler.js +681 -0
- package/esm5/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +191 -0
- package/esm5/shared/gipi-components/expansion-panel/expansion-panel.component.js +83 -0
- package/esm5/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.js +255 -0
- package/esm5/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.js +93 -0
- package/esm5/shared/gipi-components/footer/footer.component.js +32 -0
- package/esm5/shared/gipi-components/form-field/form-field.component.js +276 -0
- package/esm5/shared/gipi-components/helpful-tip/helpful-tip.component.js +68 -0
- package/esm5/shared/gipi-components/infinite-scroll/infinite-scroll.directive.js +106 -0
- package/esm5/shared/gipi-components/input-checkbox/input-checkbox.component.js +118 -0
- package/esm5/shared/gipi-components/input-currency/input-currency.component.js +207 -0
- package/esm5/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +426 -0
- package/esm5/shared/gipi-components/input-select/input-select.component.js +698 -0
- package/esm5/shared/gipi-components/input-select-enum/input-select-enum.component.js +351 -0
- package/esm5/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +437 -0
- package/esm5/shared/gipi-components/input-select-paged/input-search/input-search.component.js +397 -0
- package/esm5/shared/gipi-components/input-select-paged/input-select-paged.component.js +384 -0
- package/esm5/shared/gipi-components/input-select-radio/input-select-radio.component.js +286 -0
- package/esm5/shared/gipi-components/layout-grid/col.directive.js +164 -0
- package/esm5/shared/gipi-components/layout-grid/row.directive.js +127 -0
- package/esm5/shared/gipi-components/layout-grid/services/breakpoint.service.js +90 -0
- package/esm5/shared/gipi-components/layout-grid/services/resize.service.js +68 -0
- package/esm5/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.js +200 -0
- package/esm5/shared/gipi-components/month-year-picker/mont-year-picker.module.js +50 -0
- package/esm5/shared/gipi-components/month-year-picker/month-year-picker.component.js +505 -0
- package/esm5/shared/gipi-components/notification/notification.component.js +106 -0
- package/esm5/shared/gipi-components/novelties/novelties.component.js +111 -0
- package/esm5/shared/gipi-components/overlay/overlay.component.js +670 -0
- package/esm5/shared/gipi-components/overlay/shared/overlay-service.js +22 -0
- package/esm5/shared/gipi-components/overlay/shared/overlay_options.js +1 -0
- package/esm5/shared/gipi-components/password-requeriments/password-requeriments.component.js +157 -0
- package/esm5/shared/gipi-components/popover/popover.component.js +473 -0
- package/esm5/shared/gipi-components/popover/shared/popover-animations.js +29 -0
- package/esm5/shared/gipi-components/popover/shared/popover-errors.js +21 -0
- package/esm5/shared/gipi-components/popover/shared/popover-interfaces.js +1 -0
- package/esm5/shared/gipi-components/popover/shared/popover-target.js +20 -0
- package/esm5/shared/gipi-components/popover/shared/popover-trigger.js +529 -0
- package/esm5/shared/gipi-components/popover/shared/popover-types.js +1 -0
- package/esm5/shared/gipi-components/radio-group/radio-group.component.js +155 -0
- package/esm5/shared/gipi-components/range-page/range-page.component.js +283 -0
- package/esm5/shared/gipi-components/range-slider/range-slider.component.js +364 -0
- package/esm5/shared/gipi-components/select/select.component.js +222 -0
- package/esm5/shared/gipi-components/select-button/select-button.component.js +206 -0
- package/esm5/shared/gipi-components/sidebar/container/container.component.js +96 -0
- package/esm5/shared/gipi-components/sidebar/sidenav/sidenav.component.js +267 -0
- package/esm5/shared/gipi-components/stepper/stepper.component.js +43 -0
- package/esm5/shared/gipi-components/table/components/table-body/table-body.component.js +209 -0
- package/esm5/shared/gipi-components/table/components/table-footer/table-footer.component.js +33 -0
- package/esm5/shared/gipi-components/table/components/table-header/table-header.component.js +155 -0
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.js +123 -0
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.js +228 -0
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.js +1 -0
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination.service.js +108 -0
- package/esm5/shared/gipi-components/table/components/table-pagination/table-pagination.component.js +116 -0
- package/esm5/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.js +33 -0
- package/esm5/shared/gipi-components/table/models/pipe-transform.model.js +1 -0
- package/esm5/shared/gipi-components/table/models/sort.model.js +29 -0
- package/esm5/shared/gipi-components/table/models/sorted-column.model.js +2 -0
- package/esm5/shared/gipi-components/table/models/table-column-builder.model.js +106 -0
- package/esm5/shared/gipi-components/table/models/table-column.model.js +252 -0
- package/esm5/shared/gipi-components/table/table.component.js +161 -0
- package/esm5/shared/gipi-components/table/types/sort-direction.type.js +1 -0
- package/esm5/shared/gipi-components/table/types/sort.type.js +1 -0
- package/esm5/shared/gipi-components/template/template.directive.js +34 -0
- package/esm5/shared/gipi-components/toolbar/toolbar.component.js +56 -0
- package/esm5/shared/gipi-components/top-nav/top-nav.component.js +40 -0
- package/esm5/shared/gipi-components/user-profile/user-profile.component.js +115 -0
- package/esm5/shared/material.module.js +101 -0
- package/esm5/shared/shared.module.js +340 -0
- package/esm5/shared.js +36 -0
- package/fesm2015/gipisistemas-ng-core.js +25879 -0
- package/fesm2015/gipisistemas-ng-core.js.map +1 -0
- package/fesm5/gipisistemas-ng-core.js +27905 -0
- package/fesm5/gipisistemas-ng-core.js.map +1 -0
- package/gipi-components.d.ts +97 -0
- package/gipisistemas-ng-core.d.ts +20 -0
- package/gipisistemas-ng-core.metadata.json +1 -0
- package/package.json +31 -83
- package/public_api.d.ts +3 -0
- package/shared/api/generate-id-component.d.ts +3 -0
- package/shared/api/gipi-ng-config.d.ts +18 -0
- package/shared/api/overlay-message.d.ts +14 -0
- package/shared/api/throttle.d.ts +17 -0
- package/shared/api/translation.d.ts +45 -0
- package/shared/components/button/button.component.d.ts +26 -0
- package/shared/components/card/card.component.d.ts +10 -0
- package/shared/components/checkbox/checkbox.component.d.ts +20 -0
- package/shared/components/dom/connected-overlay-scroll-handler.d.ts +9 -0
- package/shared/components/dom/dom-handler.d.ts +74 -0
- package/shared/components/icon/icon.component.d.ts +9 -0
- package/shared/components/input/input.component.d.ts +52 -0
- package/shared/components/input-currency/input-currency.component.d.ts +29 -0
- package/shared/components/input-file/input-file.component.d.ts +28 -0
- package/shared/components/loading/loading.component.d.ts +4 -0
- package/shared/components/loading-overlay/loading-overlay.component.d.ts +6 -0
- package/shared/components/overlay-panel/overlay-panel.component.d.ts +67 -0
- package/shared/components/popover/popover-ref.d.ts +17 -0
- package/shared/components/popover/popover.component.d.ts +10 -0
- package/shared/components/popover/popover.service.d.ts +23 -0
- package/shared/components/radio-group-entity/radio-group-entity.component.d.ts +19 -0
- package/shared/components/radio-group-enum/radio-group-enum.component.d.ts +30 -0
- package/shared/components/select-button/select-button.component.d.ts +35 -0
- package/shared/components/select-entity/select-entity.component.d.ts +52 -0
- package/shared/components/select-entity-paged/select-entity-paged.component.d.ts +78 -0
- package/shared/components/select-entity-paged/shared/default-options.d.ts +25 -0
- package/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.d.ts +18 -0
- package/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.d.ts +16 -0
- package/shared/components/select-entity-paged/shared/select-no-entries-found.directive.d.ts +11 -0
- package/shared/components/select-entity-paged/shared/select-search/select-search.component.d.ts +119 -0
- package/shared/components/select-entity-paged/shared/select-search-clear.directive.d.ts +9 -0
- package/shared/components/select-enum/select-enum.component.d.ts +29 -0
- package/shared/components/select-month-period/select-month-period.component.d.ts +20 -0
- package/shared/components/slide-toggle/slide-toggle.component.d.ts +19 -0
- package/shared/components/stepper/stepper.component.d.ts +7 -0
- package/shared/components/tab/tab.component.d.ts +14 -0
- package/shared/components/tab-group/tab-group.component.d.ts +22 -0
- package/shared/components/table/table.component.d.ts +86 -0
- package/shared/components/table-scrolled/table-scrolled.component.d.ts +31 -0
- package/shared/components/textarea/textarea.component.d.ts +35 -0
- package/shared/directives/dynamic-tab.directive.d.ts +5 -0
- package/shared/directives/generic-template.directive.d.ts +8 -0
- package/shared/directives/input-select-infinite-scroll.directive.d.ts +35 -0
- package/shared/directives/lower-case.directive.d.ts +9 -0
- package/shared/directives/phone-mask.directive.d.ts +8 -0
- package/shared/directives/space-drop.directive.d.ts +9 -0
- package/shared/directives/upper-case.directive.d.ts +9 -0
- package/shared/gipi-components/abstract-form/abstract-form.component.d.ts +21 -0
- package/shared/gipi-components/action-row/action-row.component.d.ts +5 -0
- package/shared/gipi-components/badge/badge.component.d.ts +8 -0
- package/shared/gipi-components/button/button.component.d.ts +56 -0
- package/shared/gipi-components/chips/chips.component.d.ts +37 -0
- package/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.d.ts +11 -0
- package/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.d.ts +71 -0
- package/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.d.ts +11 -0
- package/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.d.ts +6 -0
- package/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.d.ts +40 -0
- package/shared/gipi-components/datepicker/datepicker/datepicker.component.d.ts +49 -0
- package/shared/gipi-components/datepicker/datepicker.module.d.ts +2 -0
- package/shared/gipi-components/datepicker/mat-datepicker/calendar-body.d.ts +143 -0
- package/shared/gipi-components/datepicker/mat-datepicker/calendar.d.ts +152 -0
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.d.ts +102 -0
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-input.d.ts +124 -0
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.d.ts +21 -0
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.d.ts +45 -0
- package/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.d.ts +106 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.d.ts +16 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.d.ts +209 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.d.ts +9 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.d.ts +136 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.d.ts +68 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.d.ts +38 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.d.ts +39 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker.d.ts +11 -0
- package/shared/gipi-components/datepicker/mat-datepicker/month-view.d.ts +120 -0
- package/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.d.ts +85 -0
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.d.ts +225 -0
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.d.ts +20 -0
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.d.ts +76 -0
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.d.ts +9 -0
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.d.ts +33 -0
- package/shared/gipi-components/datepicker/mat-datepicker/year-view.d.ts +97 -0
- package/shared/gipi-components/dom/connected-overlay-scroll-handler.d.ts +9 -0
- package/shared/gipi-components/dom/dom-handler.d.ts +85 -0
- package/shared/gipi-components/dropdown-menu/dropdown-menu.component.d.ts +36 -0
- package/shared/gipi-components/expansion-panel/expansion-panel.component.d.ts +16 -0
- package/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.d.ts +43 -0
- package/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.d.ts +13 -0
- package/shared/gipi-components/footer/footer.component.d.ts +5 -0
- package/shared/gipi-components/form-field/form-field.component.d.ts +61 -0
- package/shared/gipi-components/helpful-tip/helpful-tip.component.d.ts +13 -0
- package/shared/gipi-components/infinite-scroll/infinite-scroll.directive.d.ts +27 -0
- package/shared/gipi-components/input-checkbox/input-checkbox.component.d.ts +28 -0
- package/shared/gipi-components/input-currency/input-currency.component.d.ts +48 -0
- package/shared/gipi-components/input-monthpicker/input-monthpicker.component.d.ts +89 -0
- package/shared/gipi-components/input-select/input-select.component.d.ts +120 -0
- package/shared/gipi-components/input-select-enum/input-select-enum.component.d.ts +65 -0
- package/shared/gipi-components/input-select-listbox/input-select-listbox.component.d.ts +85 -0
- package/shared/gipi-components/input-select-paged/input-search/input-search.component.d.ts +77 -0
- package/shared/gipi-components/input-select-paged/input-select-paged.component.d.ts +66 -0
- package/shared/gipi-components/input-select-radio/input-select-radio.component.d.ts +53 -0
- package/shared/gipi-components/layout-grid/col.directive.d.ts +38 -0
- package/shared/gipi-components/layout-grid/row.directive.d.ts +28 -0
- package/shared/gipi-components/layout-grid/services/breakpoint.service.d.ts +30 -0
- package/shared/gipi-components/layout-grid/services/resize.service.d.ts +17 -0
- package/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.d.ts +37 -0
- package/shared/gipi-components/month-year-picker/mont-year-picker.module.d.ts +2 -0
- package/shared/gipi-components/month-year-picker/month-year-picker.component.d.ts +104 -0
- package/shared/gipi-components/notification/notification.component.d.ts +21 -0
- package/shared/gipi-components/novelties/novelties.component.d.ts +22 -0
- package/shared/gipi-components/overlay/overlay.component.d.ts +113 -0
- package/shared/gipi-components/overlay/shared/overlay-service.d.ts +6 -0
- package/shared/gipi-components/overlay/shared/overlay_options.d.ts +50 -0
- package/shared/gipi-components/password-requeriments/password-requeriments.component.d.ts +27 -0
- package/shared/gipi-components/popover/popover.component.d.ts +133 -0
- package/shared/gipi-components/popover/shared/popover-animations.d.ts +13 -0
- package/shared/gipi-components/popover/shared/popover-errors.d.ts +14 -0
- package/shared/gipi-components/popover/shared/popover-interfaces.d.ts +43 -0
- package/shared/gipi-components/popover/shared/popover-target.d.ts +5 -0
- package/shared/gipi-components/popover/shared/popover-trigger.d.ts +140 -0
- package/shared/gipi-components/popover/shared/popover-types.d.ts +4 -0
- package/shared/gipi-components/radio-group/radio-group.component.d.ts +33 -0
- package/shared/gipi-components/range-page/range-page.component.d.ts +55 -0
- package/shared/gipi-components/range-slider/range-slider.component.d.ts +57 -0
- package/shared/gipi-components/select/select.component.d.ts +45 -0
- package/shared/gipi-components/select-button/select-button.component.d.ts +39 -0
- package/shared/gipi-components/sidebar/container/container.component.d.ts +15 -0
- package/shared/gipi-components/sidebar/sidenav/sidenav.component.d.ts +40 -0
- package/shared/gipi-components/stepper/stepper.component.d.ts +8 -0
- package/shared/gipi-components/table/components/table-body/table-body.component.d.ts +36 -0
- package/shared/gipi-components/table/components/table-footer/table-footer.component.d.ts +5 -0
- package/shared/gipi-components/table/components/table-header/table-header.component.d.ts +28 -0
- package/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.d.ts +40 -0
- package/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.d.ts +81 -0
- package/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.d.ts +24 -0
- package/shared/gipi-components/table/components/table-pagination/shared/pagination.service.d.ts +45 -0
- package/shared/gipi-components/table/components/table-pagination/table-pagination.component.d.ts +21 -0
- package/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.d.ts +5 -0
- package/shared/gipi-components/table/models/pipe-transform.model.d.ts +3 -0
- package/shared/gipi-components/table/models/sort.model.d.ts +10 -0
- package/shared/gipi-components/table/models/sorted-column.model.d.ts +6 -0
- package/shared/gipi-components/table/models/table-column-builder.model.d.ts +52 -0
- package/shared/gipi-components/table/models/table-column.model.d.ts +74 -0
- package/shared/gipi-components/table/table.component.d.ts +37 -0
- package/shared/gipi-components/table/types/sort-direction.type.d.ts +1 -0
- package/shared/gipi-components/table/types/sort.type.d.ts +1 -0
- package/shared/gipi-components/template/template.directive.d.ts +8 -0
- package/shared/gipi-components/toolbar/toolbar.component.d.ts +11 -0
- package/shared/gipi-components/top-nav/top-nav.component.d.ts +8 -0
- package/shared/gipi-components/user-profile/user-profile.component.d.ts +24 -0
- package/shared/material.module.d.ts +2 -0
- package/shared/shared.module.d.ts +6 -0
- package/shared.d.ts +35 -0
- package/README.md +0 -38
- package/_ITSS-NG-CI-CD.yml +0 -53
- package/_ITSS-NG-CI-PR.yml +0 -53
- package/angular-cli.json +0 -42
- package/azure-pipelines.yml +0 -35
- package/projects/itss-ng/ng-package.json +0 -7
- package/projects/itss-ng/package.json +0 -25
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"gipisistemas-ng-core.js","sources":["ng://@gipisistemas/ng-core/core/app.messages.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.ts","ng://@gipisistemas/ng-core/shared/material.module.ts","ng://@gipisistemas/ng-core/shared/components/button/button.component.ts","ng://@gipisistemas/ng-core/shared/components/card/card.component.ts","ng://@gipisistemas/ng-core/shared/components/checkbox/checkbox.component.ts","ng://@gipisistemas/ng-core/shared/components/icon/icon.component.ts","ng://@gipisistemas/ng-core/shared/components/input-currency/input-currency.component.ts","ng://@gipisistemas/ng-core/core/utils/string.util.ts","ng://@gipisistemas/ng-core/core/utils/object.util.ts","ng://@gipisistemas/ng-core/core/utils/uuid.util.ts","ng://@gipisistemas/ng-core/core/components/abstract.component.ts","ng://@gipisistemas/ng-core/core/models/archive.model.ts","ng://@gipisistemas/ng-core/core/services/abstract.service.ts","ng://@gipisistemas/ng-core/core/models/dto/abstract.dto.ts","ng://@gipisistemas/ng-core/core/models/dto/message.dto.ts","ng://@gipisistemas/ng-core/core/components/alert/alert.component.ts","ng://@gipisistemas/ng-core/core/services/message.service.ts","ng://@gipisistemas/ng-core/shared/components/input-file/input-file.component.ts","ng://@gipisistemas/ng-core/shared/components/input/input.component.ts","ng://@gipisistemas/ng-core/shared/components/loading-overlay/loading-overlay.component.ts","ng://@gipisistemas/ng-core/shared/components/loading/loading.component.ts","ng://@gipisistemas/ng-core/core/utils/zindex.util.ts","ng://@gipisistemas/ng-core/shared/api/gipi-ng-config.ts","ng://@gipisistemas/ng-core/shared/gipi-components/overlay/shared/overlay-service.ts","ng://@gipisistemas/ng-core/shared/components/dom/dom-handler.ts","ng://@gipisistemas/ng-core/shared/components/dom/connected-overlay-scroll-handler.ts","ng://@gipisistemas/ng-core/shared/components/overlay-panel/overlay-panel.component.ts","ng://@gipisistemas/ng-core/shared/components/popover/popover-ref.ts","ng://@gipisistemas/ng-core/shared/components/popover/popover.component.ts","ng://@gipisistemas/ng-core/shared/components/radio-group-entity/radio-group-entity.component.ts","ng://@gipisistemas/ng-core/shared/api/generate-id-component.ts","ng://@gipisistemas/ng-core/shared/components/radio-group-enum/radio-group-enum.component.ts","ng://@gipisistemas/ng-core/shared/components/select-button/select-button.component.ts","ng://@gipisistemas/ng-core/shared/components/select-entity-paged/select-entity-paged.component.ts","ng://@gipisistemas/ng-core/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.ts","ng://@gipisistemas/ng-core/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.ts","ng://@gipisistemas/ng-core/shared/components/select-entity-paged/shared/select-no-entries-found.directive.ts","ng://@gipisistemas/ng-core/shared/components/select-entity-paged/shared/select-search-clear.directive.ts","ng://@gipisistemas/ng-core/shared/components/select-entity-paged/shared/default-options.ts","ng://@gipisistemas/ng-core/shared/components/select-entity-paged/shared/select-search/select-search.component.ts","ng://@gipisistemas/ng-core/core/utils/array.util.ts","ng://@gipisistemas/ng-core/shared/components/select-entity/select-entity.component.ts","ng://@gipisistemas/ng-core/shared/components/select-enum/select-enum.component.ts","ng://@gipisistemas/ng-core/shared/components/select-month-period/select-month-period.component.ts","ng://@gipisistemas/ng-core/shared/components/slide-toggle/slide-toggle.component.ts","ng://@gipisistemas/ng-core/shared/components/stepper/stepper.component.ts","ng://@gipisistemas/ng-core/shared/components/tab/tab.component.ts","ng://@gipisistemas/ng-core/shared/directives/dynamic-tab.directive.ts","ng://@gipisistemas/ng-core/core/models/dto/tab.dto.ts","ng://@gipisistemas/ng-core/shared/components/tab-group/tab-group.component.ts","ng://@gipisistemas/ng-core/shared/api/throttle.ts","ng://@gipisistemas/ng-core/shared/components/table-scrolled/table-scrolled.component.ts","ng://@gipisistemas/ng-core/core/models/dto/table-group-header.dto.ts","ng://@gipisistemas/ng-core/shared/components/table/table.component.ts","ng://@gipisistemas/ng-core/shared/components/textarea/textarea.component.ts","ng://@gipisistemas/ng-core/shared/directives/generic-template.directive.ts","ng://@gipisistemas/ng-core/shared/directives/input-select-infinite-scroll.directive.ts","ng://@gipisistemas/ng-core/shared/directives/lower-case.directive.ts","ng://@gipisistemas/ng-core/shared/directives/phone-mask.directive.ts","ng://@gipisistemas/ng-core/shared/directives/space-drop.directive.ts","ng://@gipisistemas/ng-core/shared/directives/upper-case.directive.ts","ng://@gipisistemas/ng-core/core/custom-breakpoints.ts","ng://@gipisistemas/ng-core/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.ts","ng://@gipisistemas/ng-core/shared/gipi-components/infinite-scroll/infinite-scroll.directive.ts","ng://@gipisistemas/ng-core/shared/gipi-components/layout-grid/services/resize.service.ts","ng://@gipisistemas/ng-core/shared/gipi-components/layout-grid/services/breakpoint.service.ts","ng://@gipisistemas/ng-core/shared/gipi-components/layout-grid/row.directive.ts","ng://@gipisistemas/ng-core/shared/gipi-components/layout-grid/col.directive.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/components/table-pagination/shared/pagination.service.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.ts","ng://@gipisistemas/ng-core/shared/gipi-components/template/template.directive.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.ts","ng://@gipisistemas/ng-core/shared/gipi-components/action-row/action-row.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/abstract-form/abstract-form.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/badge/badge.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/dom/dom-handler.ts","ng://@gipisistemas/ng-core/shared/gipi-components/popover/shared/popover-errors.ts","ng://@gipisistemas/ng-core/shared/gipi-components/popover/shared/popover-trigger.ts","ng://@gipisistemas/ng-core/shared/gipi-components/button/button.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/chips/chips.component.ts","ng://@gipisistemas/ng-core/core/models/dto/confirmation.dto.ts","ng://@gipisistemas/ng-core/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/dropdown-menu/dropdown-menu.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/expansion-panel/expansion-panel.component.ts","ng://@gipisistemas/ng-core/core/services/confirmation.service.ts","ng://@gipisistemas/ng-core/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/footer/footer.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/form-field/form-field.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/helpful-tip/helpful-tip.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-checkbox/input-checkbox.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-currency/input-currency.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-monthpicker/input-monthpicker.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-select-enum/input-select-enum.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/dom/connected-overlay-scroll-handler.ts","ng://@gipisistemas/ng-core/shared/gipi-components/overlay/overlay.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-select/input-select.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-select-listbox/input-select-listbox.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-select-paged/input-search/input-search.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-select-paged/input-select-paged.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-select-radio/input-select-radio.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/notification/notification.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/novelties/novelties.component.ts","ng://@gipisistemas/ng-core/core/utils/password.util.ts","ng://@gipisistemas/ng-core/shared/gipi-components/password-requeriments/password-requeriments.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/popover/shared/popover-animations.ts","ng://@gipisistemas/ng-core/shared/gipi-components/popover/popover.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/popover/shared/popover-target.ts","ng://@gipisistemas/ng-core/shared/gipi-components/radio-group/radio-group.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/select-button/select-button.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/select/select.component.ts","ng://@gipisistemas/ng-core/core/services/breakpoint-observer.service.ts","ng://@gipisistemas/ng-core/core/services/nav.service.ts","ng://@gipisistemas/ng-core/shared/gipi-components/sidebar/container/container.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/sidebar/sidenav/sidenav.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/stepper/stepper.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/components/table-body/table-body.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/components/table-footer/table-footer.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/models/sort.model.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/components/table-header/table-header.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/components/table-pagination/table-pagination.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/table.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/toolbar/toolbar.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/top-nav/top-nav.component.ts","ng://@gipisistemas/ng-core/core/utils/number.util.ts","ng://@gipisistemas/ng-core/core/utils/date.util.ts","ng://@gipisistemas/ng-core/shared/gipi-components/user-profile/user-profile.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/calendar-body.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/month-view.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/year-view.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/calendar.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/datepicker.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/date-range-input.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.ts","ng://@gipisistemas/ng-core/core/utils/browser.util.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/datepicker/datepicker.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/datepicker.module.ts","ng://@gipisistemas/ng-core/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/month-year-picker/month-year-picker.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/month-year-picker/mont-year-picker.module.ts","ng://@gipisistemas/ng-core/shared/gipi-components/range-page/range-page.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/range-slider/range-slider.component.ts","ng://@gipisistemas/ng-core/shared/shared.module.ts","ng://@gipisistemas/ng-core/core/models/dto/page.dto.ts","ng://@gipisistemas/ng-core/core/models/dto/sort.dto.ts","ng://@gipisistemas/ng-core/core/models/enums/sort-direction.enum.ts","ng://@gipisistemas/ng-core/core/components/abstract-find.component.ts","ng://@gipisistemas/ng-core/core/components/abstract-crud.component.ts","ng://@gipisistemas/ng-core/core/services/authentication.service.ts","ng://@gipisistemas/ng-core/core/interceptors/auth.interceptor.ts","ng://@gipisistemas/ng-core/core/interceptors/error.interceptor.ts","ng://@gipisistemas/ng-core/core/services/dialog.service.ts","ng://@gipisistemas/ng-core/core/services/svg-register.service.ts","ng://@gipisistemas/ng-core/core/utils/time.util.ts","ng://@gipisistemas/ng-core/core/pipes/local-time.pipe.ts","ng://@gipisistemas/ng-core/core/gipi-components/services/abstract.service.ts","ng://@gipisistemas/ng-core/core/gipi-components/services/abstract-crud.service.ts","ng://@gipisistemas/ng-core/core/gipi-components/services/file.service.ts","ng://@gipisistemas/ng-core/core/gipi-components/services/session-storage.service.ts","ng://@gipisistemas/ng-core/core/gipi-components/services/base.service.ts","ng://@gipisistemas/ng-core/core/gipi-components/components/abstract.component.ts","ng://@gipisistemas/ng-core/core/gipi-components/components/abstract-crud.component.ts","ng://@gipisistemas/ng-core/core/gipi-components/models/page.model.ts","ng://@gipisistemas/ng-core/core/gipi-components/models/sort.model.ts","ng://@gipisistemas/ng-core/core/gipi-components/components/abstract-find.component.ts","ng://@gipisistemas/ng-core/core/core.module.ts","ng://@gipisistemas/ng-core/core/enums/local-time.enum.ts","ng://@gipisistemas/ng-core/core/guards/auth.guard.ts","ng://@gipisistemas/ng-core/core/guards/permission.guard.ts","ng://@gipisistemas/ng-core/core/guards/public.guard.ts","ng://@gipisistemas/ng-core/core/models/abstract.model.ts","ng://@gipisistemas/ng-core/core/models/base-user.model.ts","ng://@gipisistemas/ng-core/core/models/dto/chart.dto.ts","ng://@gipisistemas/ng-core/core/models/dto/dialog.dto.ts","ng://@gipisistemas/ng-core/core/models/dto/filter.dto.ts","ng://@gipisistemas/ng-core/core/models/dto/input-listbox.dto.ts","ng://@gipisistemas/ng-core/core/models/dto/menu.dto.ts","ng://@gipisistemas/ng-core/core/models/dto/table-column.dto.ts","ng://@gipisistemas/ng-core/core/models/dto/token.dto.ts","ng://@gipisistemas/ng-core/core/models/enums/criteria-operation.enum.ts","ng://@gipisistemas/ng-core/core/models/enums/criteria-sort-direction.enum.ts","ng://@gipisistemas/ng-core/core/models/enums/menu-type.enum.ts","ng://@gipisistemas/ng-core/core/models/enums/radio-button.enum.ts","ng://@gipisistemas/ng-core/core/models/multitenant.model.ts","ng://@gipisistemas/ng-core/core/models/permission.model.ts","ng://@gipisistemas/ng-core/core/models/role.model.ts","ng://@gipisistemas/ng-core/core/services/abstract-find.service.ts","ng://@gipisistemas/ng-core/core/services/abstract-crud.service.ts","ng://@gipisistemas/ng-core/core/extensions/string.extension.ts","ng://@gipisistemas/ng-core/core/utils/currency.util.ts","ng://@gipisistemas/ng-core/core/utils/document.util.ts","ng://@gipisistemas/ng-core/core/utils/email.util.ts","ng://@gipisistemas/ng-core/core/utils/phone.util.ts","ng://@gipisistemas/ng-core/core/utils/table-column-builder.ts","ng://@gipisistemas/ng-core/core/utils/url-params.util.ts","ng://@gipisistemas/ng-core/core/gipi-components/decorators/autowired.decorator.ts","ng://@gipisistemas/ng-core/core/gipi-components/enums/sort-direction.enum.ts","ng://@gipisistemas/ng-core/core/gipi-components/models/abstract-filter.model.ts","ng://@gipisistemas/ng-core/core/gipi-components/models/abstract.model.ts","ng://@gipisistemas/ng-core/core/gipi-components/models/applied-filter.model.ts","ng://@gipisistemas/ng-core/core/gipi-components/models/dto/abstract.dto.ts","ng://@gipisistemas/ng-core/core/gipi-components/models/page-event.model.ts","ng://@gipisistemas/ng-core/shared/components/popover/popover.service.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/models/sorted-column.model.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/models/table-column.model.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/models/table-column-builder.model.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.ts","ng://@gipisistemas/ng-core/gipisistemas-ng-core.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { AppMessages } from './app-messages';\n\nexport const APP_MESSAGES = new InjectionToken<AppMessages>('app.messages');\n\nexport const DEFAULT_MESSAGES: AppMessages = {\n SUCCESS: 'Operação realizada com sucesso',\n RETURN_CONFIRMATION: 'Deseja retornar para à 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","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { InjectionToken } from '@angular/core';\n\n\nexport type MatDateFormats = {\n parse: {\n dateInput: any\n },\n display: {\n dateInput: any,\n monthYearLabel: any,\n dateA11yLabel: any,\n monthYearA11yLabel: any,\n }\n};\n\n\nexport const MAT_DATE_FORMATS = new InjectionToken<MatDateFormats>('mat-date-formats');\n","import { NgModule } from '@angular/core';\n\nimport { CdkPopoverEditModule } from '@angular/cdk-experimental/popover-edit';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PortalModule } from '@angular/cdk/portal';\n\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CdkStepperModule } from '@angular/cdk/stepper';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CdkTreeModule } from '@angular/cdk/tree';\n\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTreeModule } from '@angular/material/tree';\n\nconst MODULES = [\n A11yModule,\n CdkPopoverEditModule,\n CdkTableModule,\n CdkTreeModule,\n CdkStepperModule,\n DragDropModule,\n MatAutocompleteModule,\n MatBadgeModule,\n MatBottomSheetModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatDialogModule,\n MatDividerModule,\n MatExpansionModule,\n MatFormFieldModule,\n MatGridListModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatRippleModule,\n MatSelectModule,\n MatSidenavModule,\n MatSlideToggleModule,\n MatSliderModule,\n MatSnackBarModule,\n MatSortModule,\n MatStepperModule,\n MatTableModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n MatTreeModule,\n ScrollingModule,\n PortalModule,\n];\n\n@NgModule({\n imports: [\n ...MODULES\n ],\n exports: [\n ...MODULES\n ]\n})\nexport class MaterialModule { }\n","import { Component, ContentChild, ElementRef, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { MatMenu } from '@angular/material';\nimport { MdePopoverTrigger } from '@material-extended/mde';\n\n@Component({\n selector: 'itss-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss']\n})\nexport class ButtonComponent implements OnInit {\n\n @ContentChild('popover', { static: false }) popoverRef: TemplateRef<any>;\n\n @ViewChild('popoverTrigger', { static: false }) popoverTrigger: MdePopoverTrigger;\n\n @ViewChild('button', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @Input() label: string;\n\n @Input() icon: string;\n\n @Input() rightIcon: string;\n\n @Input() svgIcon: string;\n\n @Input() color: string = 'primary';\n\n @Input() type: 'raised' | 'stroked' | 'icon' | 'menu' | 'spinner' | 'popover' | 'popover-icon';\n\n @Input() menu: MatMenu;\n\n @Input() badge: number;\n\n @Input() badgeColor: string;\n\n @Input() disabled: boolean;\n\n @Input() tooltip: string;\n\n @Input() loading: boolean = false;\n\n @Input() download: boolean = false;\n\n @Input() stylePopover: string = '';\n\n @Input() styleClassPopover: string;\n\n // tslint:disable-next-line: no-output-on-prefix\n @Output('click') onClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(true);\n\n ngOnInit(): void {\n }\n\n onClickButton(event: MouseEvent): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n this.onClick.emit(event);\n event.stopPropagation();\n }\n }\n\n}\n","import {Component, Input, OnInit} from '@angular/core';\n\n@Component({\n selector: 'itss-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss']\n})\nexport class CardComponent implements OnInit {\n\n @Input() cardTitle;\n\n @Input() cardSubtitle;\n\n @Input() icon;\n\n @Input() loading = false;\n\n @Input() shadow = true;\n\n @Input() margin = true;\n\n ngOnInit(): void {\n }\n\n}\n","import { Component, forwardRef, Input, OnInit, EventEmitter, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'itss-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n ]\n})\nexport class CheckboxComponent implements ControlValueAccessor, OnInit {\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input() indeterminate: boolean;\n\n @Output() indeterminateChange = new EventEmitter<boolean>();\n\n @Output() change = new EventEmitter<any>();\n\n @Input('value') val: any;\n\n ngOnInit(): void {\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n get value() {\n return this.val;\n }\n\n set value(val) {\n this.val = val;\n this.onChange(val);\n this.onTouch();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'itss-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss']\n})\nexport class IconComponent implements OnInit {\n\n @Input() color: string;\n\n @Input() icon: string;\n\n @Input() svgIcon: string;\n\n @Input() tooltip: string;\n\n @Input() iconSize: number;\n\n ngOnInit(): void {\n }\n\n}\n","import { Component, ContentChild, ElementRef, forwardRef, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CurrencyMaskConfig } from 'ngx-currency';\n\n@Component({\n selector: 'itss-input-currency',\n templateUrl: './input-currency.component.html',\n styleUrls: ['./input-currency.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputCurrencyComponent),\n multi: true\n }\n ]\n})\nexport class InputCurrencyComponent implements ControlValueAccessor, OnInit {\n\n @ViewChild('input', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @ContentChild('suffix', { static: false }) suffixRef: TemplateRef<any>;\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() tooltip: string = '';\n\n @Input() placeholder: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input() maxlength = 250;\n\n @Input() type = 'text';\n\n @Input() appearance = 'outline';\n\n @Input('value') val: any;\n\n @Input() prefix: string;\n\n @Input() styleClassFormField: string = '';\n\n @Input() styleClassSuffix: string = '';\n\n @Input() options: Partial<CurrencyMaskConfig>;\n\n ngOnInit(): void {\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n get value() {\n return this.val;\n }\n\n set value(val) {\n this.val = val;\n this.onChange(val);\n this.onTouch();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n}\n","import { ObjectUtil } from './object.util';\n\n/** @dynamic */\nexport class StringUtil {\n\n public static EMPTY: string = '';\n\n public static replaceAccents(value: string): string {\n return value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n }\n\n public static removeAccents(value: string): string {\n return value.replace(/[^\\w\\s]/gi, '');\n }\n\n public static isEmpty(value: string): boolean {\n return ObjectUtil.isNull(value) || value.length === 0;\n }\n\n public static format(value: string, mask: string): string {\n let formatted: string = value;\n if (!value.includes('*')) {\n formatted = value.replace(/\\D/g, '');\n }\n\n const pad: string = mask.replace(/\\D/g, '').replace(/9/g, '_');\n const valueMask: string = formatted + pad.substring(0, pad.length - pad.length);\n\n let valorMaskPos: number = 0;\n formatted = '';\n for (let i: number = 0; i < mask.length; i++) {\n if (isNaN(parseInt(mask.charAt(i)))) {\n formatted += mask.charAt(i);\n } else {\n formatted += valueMask[valorMaskPos++];\n }\n }\n\n if (formatted.indexOf('_') > -1) {\n formatted = formatted.substring(0, formatted.indexOf('_'));\n }\n\n return formatted;\n }\n\n public static truncateWithEllipses(text: string, max: number): '' | '...' {\n return text.trim().substring(0, max - 1) + (text.trim().length > max) ? '...' : '';\n }\n}\n","import { GIPIIndexableObject } from '../types/ng-class.type';\nimport { StringUtil } from './string.util';\nimport { UUIDUtil } from './uuid.util';\n\n/** @dynamic */\nexport class ObjectUtil {\n\n public static isNull(value: Object): boolean {\n return value === undefined || value === null;\n }\n\n public static isNewModel(value: Object): boolean {\n if (ObjectUtil.isNull(value)) {\n return true;\n }\n\n let id: number | string = null;\n if (typeof value === 'object') {\n id = Reflect.get(value, 'id');\n }\n return !UUIDUtil.isValid(id);\n }\n\n public static isNotNil<T>(value: T): value is NonNullable<T> {\n return typeof value !== 'undefined' && value !== null;\n }\n\n public static isNil(value: unknown): value is null | undefined {\n return typeof value === 'undefined' || value === null;\n }\n\n public static clone(value: Object): any {\n if (ObjectUtil.isNull(value)) {\n return new Object();\n }\n return { ...value };\n }\n\n public static resolveFieldData(data: any, field: any): any {\n if (data && field) {\n if (this.isFunction(field)) {\n return field(data);\n } else if (field.indexOf('.') === -1) {\n return data[field];\n } else {\n const fields: string[] = field.split('.');\n let value: any = data;\n for (let i: number = 0, len: number = fields.length; i < len; ++i) {\n if (value == null) {\n return null;\n }\n value = value[fields[i]];\n }\n return value;\n }\n } else {\n return null;\n }\n }\n\n public static isFunction(obj: any): boolean {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n }\n\n public static equals(obj1: any, obj2: any, field?: string): boolean {\n if (field) {\n return (this.resolveFieldData(obj1, field) === this.resolveFieldData(obj2, field));\n } else {\n return this.equalsByValue(obj1, obj2);\n }\n }\n\n public static equalsByValue(obj1: any, obj2: any): boolean {\n if (obj1 === obj2) {\n return true;\n }\n\n if (obj1 && obj2 && typeof obj1 === 'object' && typeof obj2 === 'object') {\n const arrA: boolean = Array.isArray(obj1);\n const arrB: boolean = Array.isArray(obj2);\n let i: any;\n let length: any;\n let key: any;\n\n if (arrA && arrB) {\n length = obj1.length;\n if (length !== obj2.length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!this.equalsByValue(obj1[i], obj2[i])) {\n return false;\n }\n }\n return true;\n }\n\n if (arrA !== arrB) {\n return false;\n }\n\n const dateA: boolean = obj1 instanceof Date;\n const dateB: boolean = obj2 instanceof Date;\n if (dateA !== dateB) {\n return false;\n }\n\n if (dateA && dateB) {\n return obj1.getTime() === obj2.getTime();\n }\n\n const regexpA: boolean = obj1 instanceof RegExp;\n const regexpB: boolean = obj2 instanceof RegExp;\n if (regexpA !== regexpB) {\n return false;\n }\n\n if (regexpA && regexpB) {\n return obj1.toString() === obj2.toString();\n }\n\n const keys: string[] = Object.keys(obj1);\n length = keys.length;\n\n if (length !== Object.keys(obj2).length) {\n return false;\n }\n\n for (i = length; i-- !== 0;) {\n if (!Object.prototype.hasOwnProperty.call(obj2, keys[i])) {\n return false;\n }\n }\n\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!this.equalsByValue(obj1[key], obj2[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n return obj1 !== obj1 && obj2 !== obj2;\n }\n\n public static removeAccents(str: any): any {\n if (str && str.search(/[\\xC0-\\xFF]/g) > -1) {\n str = str\n .replace(/[\\xC0-\\xC5]/g, 'A')\n .replace(/[\\xC6]/g, 'AE')\n .replace(/[\\xC7]/g, 'C')\n .replace(/[\\xC8-\\xCB]/g, 'E')\n .replace(/[\\xCC-\\xCF]/g, 'I')\n .replace(/[\\xD0]/g, 'D')\n .replace(/[\\xD1]/g, 'N')\n .replace(/[\\xD2-\\xD6\\xD8]/g, 'O')\n .replace(/[\\xD9-\\xDC]/g, 'U')\n .replace(/[\\xDD]/g, 'Y')\n .replace(/[\\xDE]/g, 'P')\n .replace(/[\\xE0-\\xE5]/g, 'a')\n .replace(/[\\xE6]/g, 'ae')\n .replace(/[\\xE7]/g, 'c')\n .replace(/[\\xE8-\\xEB]/g, 'e')\n .replace(/[\\xEC-\\xEF]/g, 'i')\n .replace(/[\\xF1]/g, 'n')\n .replace(/[\\xF2-\\xF6\\xF8]/g, 'o')\n .replace(/[\\xF9-\\xFC]/g, 'u')\n .replace(/[\\xFE]/g, 'p')\n .replace(/[\\xFD\\xFF]/g, 'y');\n }\n\n return str;\n }\n\n public static merge(obj1?: any, obj2?: any): any {\n if (obj1 == undefined && obj2 == undefined) {\n return undefined;\n } else if ((obj1 == undefined || typeof obj1 === 'object') && (obj2 == undefined || typeof obj2 === 'object')) {\n return { ...(obj1 || {}), ...(obj2 || {}) };\n } else if ((obj1 == undefined || typeof obj1 === 'string') && (obj2 == undefined || typeof obj2 === 'string')) {\n return [obj1 || '', obj2 || ''].join(' ');\n }\n\n return obj2 || obj1;\n }\n\n /**\n * Examine se dois objetos são superficialmente igualados.\n */\n public static shallowEqual(objA?: GIPIIndexableObject, objB?: GIPIIndexableObject): boolean {\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n return false;\n }\n\n const keysA: string[] = Object.keys(objA);\n const keysB: string[] = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n const bHasOwnProperty: any = Object.prototype.hasOwnProperty.bind(objB);\n\n for (let idx: number = 0; idx < keysA.length; idx++) {\n const key: string = keysA[idx];\n if (!bHasOwnProperty(key)) {\n return false;\n }\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n\n return true;\n }\n\n public static hasPropertyInObj(obj: Object, property: string): boolean {\n if (ObjectUtil.isNull(obj) || StringUtil.isEmpty(property)) {\n return false;\n }\n return Object.prototype.hasOwnProperty.call(obj, property);\n }\n\n}\n","import { GIPIUuid } from '../gipi-components/types/uuid.type';\nimport { ObjectUtil } from './object.util';\nimport { StringUtil } from './string.util';\n\n/** @dynamic */\nexport class UUIDUtil {\n\n public static isValid(id: GIPIUuid): boolean {\n if (ObjectUtil.isNull(id)) {\n return false;\n }\n if (typeof id === 'number') {\n return id && id > 0;\n } else if (typeof id === 'string') {\n return !StringUtil.isEmpty(id) && (id.length > 0);\n }\n }\n\n}\n","import { EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { BaseUser } from '../models/base-user.model';\nimport { TokenDTO } from '../models/dto/token.dto';\nimport { MessageService } from '../services/message.service';\nimport { UUIDUtil } from '../utils/uuid.util';\n\nexport abstract class AbstractComponent implements OnInit, OnDestroy {\n\n @Input() loading: boolean = false;\n @Output() loadingChange: EventEmitter<boolean> = new EventEmitter<boolean>(true);\n\n constructor(\n protected messageService: MessageService,\n protected router: Router,\n protected activatedRoute: ActivatedRoute\n ) { }\n\n ngOnInit(): void { }\n\n ngOnDestroy(): void { }\n\n hasPermission(permission: string): boolean {\n const token: TokenDTO<BaseUser> = JSON.parse(localStorage.getItem('token'));\n return !!token.user.authorities.find(authority => authority.authority.match(permission));\n }\n\n protected handleError(error: any): void {\n this.loading = false;\n this.loadingChange.emit(this.loading);\n if (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 this.addErrorMessage(error);\n throw error;\n }\n\n protected addSuccessMessage(message: string): void {\n this.messageService.add({\n icon: 'check_circle',\n title: 'Sucesso',\n message: message,\n type: 'success'\n });\n }\n\n protected addErrorMessage(message: string): void {\n this.messageService.add({\n icon: 'cancel',\n title: 'Ocorreu um erro',\n message: message,\n type: 'error'\n });\n }\n\n protected addWarningMessage(message: string): void {\n this.messageService.add({\n icon: 'error',\n title: 'Atenção',\n message: message,\n type: 'warning'\n });\n }\n\n protected addInfoMessage(message: string): void {\n this.messageService.add({\n icon: 'info',\n title: 'Notificação',\n message: message,\n type: 'info'\n });\n }\n\n download(data: any, fileName: string, mimeType: string): void {\n const blob: Blob = new Blob([data], { type: mimeType });\n const link: HTMLAnchorElement = document.createElement('a');\n if (link.download !== undefined) {\n const url = URL.createObjectURL(blob);\n link.setAttribute('href', url);\n link.setAttribute('download', fileName);\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n\n downloadContent(response: any): void {\n this.download(\n response.body,\n response.headers.get('content-disposition').split(';')[1].split('filename')[1].split('=')[1].trim(),\n response.headers.get('content-type')\n );\n }\n\n printArchive(data: any, mimeType: string): void {\n const blob: Blob = new Blob([data], { type: mimeType });\n const url: string = URL.createObjectURL(blob);\n const htmlIFrameElement: HTMLIFrameElement = document.createElement('iframe');\n\n document.body.appendChild(htmlIFrameElement);\n htmlIFrameElement.style.display = 'none';\n htmlIFrameElement.style.position = 'fixed';\n htmlIFrameElement.style.right = '0';\n htmlIFrameElement.style.bottom = '0';\n htmlIFrameElement.style.width = '0';\n htmlIFrameElement.style.height = '0';\n htmlIFrameElement.style.border = '0';\n htmlIFrameElement.src = url;\n htmlIFrameElement.onload = () => {\n setTimeout(() => {\n htmlIFrameElement.focus();\n htmlIFrameElement.contentWindow.print();\n }, 1);\n };\n }\n\n UUIDIsValid(id: number | string): boolean {\n return UUIDUtil.isValid(id);\n }\n\n}\n","export class Archive {\n\n name: string;\n\n content: any;\n\n}\n","import { HttpHeaders, HttpParams } from '@angular/common/http';\nimport { OnDestroy } from '@angular/core';\nimport { Observable, Subject, throwError } from 'rxjs';\n\nexport abstract class AbstractService implements OnDestroy {\n\n protected onDestroy: Subject<void> = new Subject<void>();\n\n constructor() { }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n protected options(params?: HttpParams, headers?: HttpHeaders): {} {\n return {\n headers: headers ? headers : this.buildHeaders(),\n params: params ? params : this.buildParams()\n };\n }\n\n protected buildHeaders(): HttpHeaders {\n return new HttpHeaders();\n }\n\n protected buildParams(): HttpParams {\n return new HttpParams();\n }\n\n protected mapper(jsonObj: any): any {\n return jsonObj;\n }\n\n protected handleError(error: string): Observable<any> {\n return throwError(error);\n }\n\n}\n","export abstract class AbstractDTO {\n}\n","import { AbstractDTO } from './abstract.dto';\n\nexport class MessageDTO extends AbstractDTO {\n\n title: string;\n\n message: string;\n\n icon?: string;\n\n type: 'success' | 'error' | 'warning' | 'info';\n\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_SNACK_BAR_DATA } from '@angular/material';\n\nimport { MessageDTO } from '../../models/dto/message.dto';\n\n@Component({\n selector: 'a-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss']\n})\nexport class AlertComponent implements OnInit {\n\n constructor(@Inject(MAT_SNACK_BAR_DATA) public message: MessageDTO) { }\n\n ngOnInit(): void { }\n\n}\n","import { Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material';\n\nimport { AbstractService } from './abstract.service';\nimport { MessageDTO } from '../models/dto/message.dto';\nimport { AlertComponent } from '../components/alert/alert.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageService extends AbstractService {\n\n constructor(protected snackBar: MatSnackBar) {\n super();\n }\n\n add(message: MessageDTO): void {\n this.snackBar.openFromComponent(AlertComponent, {\n verticalPosition: 'top',\n horizontalPosition: 'center',\n duration: 8000,\n data: message\n });\n }\n\n}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { AbstractComponent } from '../../../core/components/abstract.component';\nimport { Archive } from '../../../core/models/archive.model';\nimport { MessageService } from '../../../core/services/message.service';\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { StringUtil } from '../../../core/utils/string.util';\n\n@Component({\n selector: 'itss-input-file',\n templateUrl: './input-file.component.html',\n styleUrls: ['./input-file.component.scss']\n})\nexport class InputFileComponent extends AbstractComponent {\n\n @ViewChild('input', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @ViewChild('fileInput', { static: true }) fileInput: ElementRef<HTMLInputElement>;\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() tooltip: string = '';\n\n @Input() placeholder: string;\n\n @Input() required: boolean;\n\n @Input() disabled: boolean;\n\n @Input() appearance = 'outline';\n\n @Input() loading = false;\n\n @Input() extensions: string[];\n\n @Input() maximumSize = 3;\n\n @Output() archiveChange = new EventEmitter<Archive>();\n\n @Input() archive: Archive;\n\n @Output() nativeFileChange = new EventEmitter<File>();\n\n constructor(\n messageService: MessageService,\n router: Router,\n activatedRoute: ActivatedRoute\n ) {\n super(messageService, router, activatedRoute);\n }\n\n private validateExtensions(file: File): boolean {\n if (this.extensions.filter(extension => file.name.toLowerCase().endsWith(extension.toLowerCase())).length === 0) {\n super.addErrorMessage(\n `São permitidos somente arquivos do tipo: ${this.extensions.reduce((previous, current) => previous + ', ' + current)}`\n );\n return false;\n }\n return true;\n }\n\n private validateMaximumSize(file: File): boolean {\n if (file.size > this.maximumSize * 1000000) {\n super.addErrorMessage(\n `O arquivo deve ter no máximo ${this.maximumSize} MB.`\n );\n return false;\n }\n return true;\n }\n\n uploadArchive(): void {\n // tslint:disable-next-line:no-shadowed-variable\n const element = this.fileInput.nativeElement;\n element.value = StringUtil.EMPTY;\n element.onchange = () => {\n const file = element.files[0];\n if (!ObjectUtil.isNull(file) && this.validateExtensions(file) && this.validateMaximumSize(file)) {\n const archive = new Archive();\n archive.name = file.name;\n\n const reader = new FileReader();\n const fileByteArray = [];\n reader.readAsArrayBuffer(file);\n reader.onloadend = function (e) {\n if (reader.readyState === FileReader.DONE) {\n const arrayBuffer = reader.result, array = new Uint8Array(arrayBuffer as ArrayBuffer);\n for (let i = 0; i < array.length; i++) {\n fileByteArray.push(array[i]);\n }\n }\n };\n\n archive.content = fileByteArray;\n this.archiveChange.emit(archive);\n this.nativeFileChange.emit(file);\n }\n };\n element.click();\n }\n\n downloadArchive(): void {\n /*\n this.loading = true;\n this.loadingChange.emit(this.loading);\n this.fileService.download(this.target, this.file).subscribe(\n resp => {\n super.download(\n resp.body,\n resp.headers.get('content-disposition').split(';')[1].split('filename')[1].split('=')[1].trim(),\n resp.headers.get('content-type')\n );\n this.loading = false;\n this.loadingChange.emit(this.loading);\n },\n error => {\n super.addErrorMessage('Não foi possível baixar o arquivo');\n this.clearFile();\n });\n */\n }\n\n clearArchive(): void {\n this.fileInput.nativeElement.value = StringUtil.EMPTY;\n this.archiveChange.emit(null);\n }\n\n}\n","import { AfterViewInit, Component, ContentChild, ElementRef, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { debounceTime } from 'rxjs/operators';\nimport { PhoneUtil } from '../../../core';\n\n@Component({\n selector: 'itss-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof InputComponent => InputComponent),\n multi: true\n }\n ]\n})\nexport class InputComponent implements ControlValueAccessor, OnInit, AfterViewInit {\n\n @ViewChild('input', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @ContentChild('suffix', { static: false }) suffixRef: TemplateRef<any>;\n\n private _inputSubject: BehaviorSubject<string> = new BehaviorSubject('');\n\n public _maskPhone: BehaviorSubject<string> = new BehaviorSubject('');\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() tooltip: string = '';\n\n @Input() styleClassFormField: string = '';\n\n @Input() styleClassSuffix: string = '';\n\n @Input() placeholder: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input() readonly: boolean = false;\n\n @Input() hidePasswordManager: boolean = false;\n\n @Input() maxlength: number = 250;\n\n @Input() type: string = 'text';\n\n @Input() min;\n\n @Input() max;\n\n @Input() appearance: string = 'outline';\n\n @Input('value') val: any;\n get value(): any {\n return this.val;\n }\n set value(val: any) {\n if (this.lowerCase) {\n this.val = this.checkLowercase(this.checkSpaceDrop(val));\n } else {\n this.val = this.checkUppercase(this.checkSpaceDrop(val));\n }\n this.onChange(this.val);\n this.onTouch();\n }\n\n @Input() mask: string | undefined | null;\n\n @Input() phone: boolean = false;\n\n @Input() loading: boolean = false;\n\n @Input() dropSpecialCharacters: boolean = true;\n\n @Input() upperCase: boolean = false;\n\n @Input() lowerCase: boolean = false;\n\n @Input() patterns: any;\n\n @Input() spaceDrop: boolean = false;\n\n @Output() focus: EventEmitter<Event> = new EventEmitter();\n\n @Output() blur: EventEmitter<Event> = new EventEmitter();\n\n constructor() { }\n\n ngOnInit(): void {\n if (this.phone) {\n this._inputSubject.pipe(\n debounceTime(300)\n ).subscribe(value => {\n this._maskPhone.next(PhoneUtil.mask(value));\n });\n }\n }\n\n ngAfterViewInit(): void { }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n checkSpaceDrop(value: any): any {\n if (this.spaceDrop && value) {\n return value.replace(/\\s/g, '');\n }\n return value;\n }\n\n checkUppercase(value: any): any {\n if (this.upperCase && value) {\n return value.toUpperCase();\n }\n return value;\n }\n\n checkLowercase(value: any): any {\n if (this.lowerCase && value) {\n return value.toLowerCase();\n }\n return value;\n }\n\n onFocus(event: Event): void {\n if (!this.disabled) {\n this.focus.emit(event);\n }\n }\n\n onBlur(event: Event): void {\n if (!this.disabled) {\n this.blur.emit(event);\n this.onTouch();\n }\n }\n\n onInputPhoneKeyup(event: KeyboardEvent): void {\n if (!this.phone) {\n return;\n }\n const value = PhoneUtil.removeCharacters((event.target as HTMLInputElement).value);\n const key = event.key;\n\n if (/\\d/.test(key) && value.length < 12) {\n this._maskPhone.next('0*');\n }\n }\n\n onInputPhoneChange(value: string): void {\n if (!this.phone) {\n return;\n }\n\n this._inputSubject.next(value);\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'itss-loading-overlay',\n templateUrl: './loading-overlay.component.html',\n styleUrls: ['./loading-overlay.component.scss']\n})\nexport class LoadingOverlayComponent implements OnInit {\n\n @Input() message: string;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import {Component, OnInit} from '@angular/core';\n\n@Component({\n selector: 'itss-loading',\n templateUrl: './loading.component.html',\n styleUrls: ['./loading.component.scss']\n})\nexport class LoadingComponent implements OnInit {\n\n ngOnInit(): void {\n }\n\n}\n\n","function ZIndexUtils() {\n let zIndexes = [];\n\n const generateZIndex = (key, baseZIndex) => {\n const lastZIndex = zIndexes.length > 0 ? zIndexes[zIndexes.length - 1] : { key, value: baseZIndex };\n const newZIndex = lastZIndex.value + (lastZIndex.key === key ? 0 : baseZIndex) + 1;\n\n zIndexes.push({ key, value: newZIndex });\n\n return newZIndex;\n };\n\n const revertZIndex = (zIndex) => {\n zIndexes = zIndexes.filter(obj => obj.value !== zIndex);\n };\n\n const getCurrentZIndex = () => {\n return zIndexes.length > 0 ? zIndexes[zIndexes.length - 1].value : 0;\n };\n\n const getZIndex = (el) => {\n return el ? parseInt(el.style.zIndex, 10) || 0 : 0;\n };\n\n return {\n get: getZIndex,\n set: (key, el, baseZIndex) => {\n if (el) {\n el.style.zIndex = String(generateZIndex(key, baseZIndex));\n }\n },\n clear: (el) => {\n if (el) {\n revertZIndex(getZIndex(el));\n el.style.zIndex = '';\n }\n },\n getCurrent: () => getCurrentZIndex()\n };\n}\n\nexport default ZIndexUtils();\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { OverlayOptions } from '../gipi-components/overlay/shared/overlay_options';\nimport { Translation } from './translation';\n\n@Injectable({ providedIn: 'root' })\nexport class GIPINgConfig {\n\n ripple: boolean = false;\n\n overlayOptions: OverlayOptions = {};\n\n public translation: Translation = {\n startsWith: 'Começa com',\n contains: 'Contém',\n notContains: 'Não contém',\n endsWith: 'Termina com',\n equals: 'É igual a',\n notEquals: 'Não é igual',\n noFilter: 'Sem filtro',\n lt: 'Menor que',\n lte: 'Menor que ou igual a',\n gt: 'Maior que',\n gte: 'Maior que ou igual a',\n is: 'É',\n isNot: 'Não é',\n before: 'Antes',\n after: 'Depois',\n dateIs: 'A data é',\n dateIsNot: 'A data não é',\n dateBefore: 'A data é anterior',\n dateAfter: 'A data é depois',\n clear: 'Limpar',\n apply: 'Aplicar',\n matchAll: 'Corresponder a todos',\n matchAny: 'Corresponder a qualquer',\n addRule: 'Adicionar regra',\n removeRule: 'Remover regra',\n accept: 'Sim',\n reject: 'Não',\n choose: 'Escolher',\n upload: 'Envio',\n cancel: 'Cancelar',\n dayNames: ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado'],\n dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],\n dayNamesMin: ['Do', 'Se', 'Te', 'Qa', 'Qi', 'Se', 'Sá'],\n monthNames: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],\n monthNamesShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],\n dateFormat: 'dd/mm/yyyy',\n firstDayOfWeek: 0,\n today: 'Hoje',\n weekHeader: 'Cabeçalho da semana',\n weak: 'Fraco',\n medium: 'Médio',\n strong: 'Forte',\n passwordPrompt: 'Insira uma senha'\n };\n\n zIndex: { modal: number; overlay: number; menu: number; tooltip: number; } = {\n modal: 2,\n overlay: 1000,\n menu: 1,\n tooltip: 2\n };\n\n private translationSource: Subject<any> = new Subject<any>();\n\n translationObserver: Observable<any> = this.translationSource.asObservable();\n\n getTranslation(key: string): any {\n return this.translation[key];\n }\n\n setTranslation(value: Translation): void {\n this.translation = { ...this.translation, ...value };\n this.translationSource.next(this.translation);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { OverlayMessage } from '../../../api/overlay-message';\n\n@Injectable({ providedIn: 'root' })\nexport class GIPIOverlayService {\n\n private clickSource: Subject<any> = new Subject<OverlayMessage | OverlayMessage[]>();\n\n clickObservable: Observable<any> = this.clickSource.asObservable();\n\n add(event: any): void {\n if (event) {\n this.clickSource.next(event);\n }\n }\n}\n","/**\n * @dynamic é para inicializar o DomHandler.browser em tempo de execução\n *\n * Se excluir o comentário abaixo, podemos ver esta mensagem de erro:\n * Os metadados coletados contêm um erro que será relatado em tempo de execução:\n * Somente variáveis e constantes inicializadas podem ser referenciadas\n * porque o valor desta variável é necessário para o compilador de template.\n */\n/** @dynamic */\nexport class DomHandler {\n\n public static zindex: number = 100;\n\n private static calculatedScrollbarWidth: number = null;\n\n private static calculatedScrollbarHeight: number = null;\n\n private static browser: any;\n\n public static addClass(element: any, className: string): void {\n if (element.classList) {\n element.classList.add(className);\n } else {\n element.className += ' ' + className;\n }\n }\n\n public static addMultipleClasses(element: any, className: string): void {\n if (element.classList) {\n const styles: string[] = className.trim().split(' ');\n for (let i: number = 0; i < styles.length; i++) {\n element.classList.add(styles[i]);\n }\n\n } else {\n const styles: string[] = className.split(' ');\n for (let i: number = 0; i < styles.length; i++) {\n element.className += ' ' + styles[i];\n }\n }\n }\n\n public static removeClass(element: any, className: string): void {\n if (element.classList) {\n element.classList.remove(className);\n } else {\n element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n\n public static hasClass(element: any, className: string): boolean {\n if (element.classList) {\n return element.classList.contains(className);\n } else {\n return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n }\n }\n\n public static siblings(element: any): any {\n return Array.prototype.filter.call(element.parentNode.children, function (child) {\n return child !== element;\n });\n }\n\n public static find(element: any, selector: string): any[] {\n return Array.from(element.querySelectorAll(selector));\n }\n\n public static findSingle(element: any, selector: string): any {\n if (element) {\n return element.querySelector(selector);\n }\n return null;\n }\n\n public static index(element: any): number {\n const children: any = element.parentNode.childNodes;\n let num: number = 0;\n for (let i: number = 0; i < children.length; i++) {\n // tslint:disable-next-line: triple-equals\n if (children[i] == element) {\n return num;\n }\n // tslint:disable-next-line: triple-equals\n if (children[i].nodeType == 1) {\n num++;\n }\n }\n return -1;\n }\n\n public static indexWithinGroup(element: any, attributeName: string): number {\n const children: any = element.parentNode ? element.parentNode.childNodes : [];\n let num: number = 0;\n for (let i: number = 0; i < children.length; i++) {\n // tslint:disable-next-line: triple-equals\n if (children[i] == element) {\n return num;\n }\n // tslint:disable-next-line: triple-equals\n if (children[i].attributes && children[i].attributes[attributeName] && children[i].nodeType == 1) {\n num++;\n }\n }\n return -1;\n }\n\n public static relativePosition(element: any, target: any): void {\n const elementDimensions: any = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n const targetHeight: any = target.offsetHeight;\n const targetOffset: any = target.getBoundingClientRect();\n const viewport: any = this.getViewport();\n let top: number, left: number;\n\n if ((targetOffset.top + targetHeight + elementDimensions.height) > viewport.height) {\n top = -1 * (elementDimensions.height);\n element.style.transformOrigin = 'bottom';\n if (targetOffset.top + top < 0) {\n top = -1 * targetOffset.top;\n }\n } else {\n top = targetHeight;\n element.style.transformOrigin = 'top';\n }\n\n if (elementDimensions.width > viewport.width) {\n // Elemento mais largo que a viewport e não cabe na tela (alinhar no lado esquerdo da viewport)\n left = targetOffset.left * -1;\n } else if ((targetOffset.left + elementDimensions.width) > viewport.width) {\n // Elemento mais largo que a janela de visualização, mas pode ser ajustado na tela (alinhar no lado direito da janela de visualização)\n left = (targetOffset.left + elementDimensions.width - viewport.width) * -1;\n } else {\n // Elemento se encaixa na tela (alinhar com o destino)\n left = 0;\n }\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n\n public static absolutePosition(element: any, target: any, calculateTop: boolean = true): void {\n const elementDimensions: any = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n const elementOuterHeight: any = elementDimensions.height;\n const elementOuterWidth: any = elementDimensions.width;\n const targetOuterHeight: any = target.offsetHeight;\n const targetOuterWidth: any = target.offsetWidth;\n const targetOffset: any = target.getBoundingClientRect();\n const windowScrollTop: number = this.getWindowScrollTop();\n const windowScrollLeft: number = this.getWindowScrollLeft();\n const viewport: any = this.getViewport();\n let top, left;\n\n if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {\n top = targetOffset.top + windowScrollTop - elementOuterHeight;\n element.style.transformOrigin = 'bottom';\n\n if (top < 0) {\n top = windowScrollTop;\n }\n } else {\n if (calculateTop) {\n top = targetOuterHeight + targetOffset.top + windowScrollTop;\n }\n element.style.transformOrigin = 'top';\n }\n\n if (targetOffset.left + elementOuterWidth > viewport.width) {\n left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);\n } else {\n left = targetOffset.left + windowScrollLeft;\n }\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n\n static getParents(element: any, parents: any = []): any {\n return element['parentNode'] === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));\n }\n\n static getScrollableParents(element: any): any[] {\n const scrollableParents: any[] = [];\n\n if (element) {\n const parents: any = this.getParents(element);\n const overflowRegex = /(auto|scroll)/;\n const overflowCheck = (node: any) => {\n const styleDeclaration: CSSStyleDeclaration = window['getComputedStyle'](node, null);\n return overflowRegex.test(styleDeclaration.getPropertyValue('overflow'))\n || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX'))\n || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));\n };\n\n for (const parent of parents) {\n const scrollSelectors: any = parent.nodeType === 1 && parent.dataset['scrollselectors'];\n if (scrollSelectors) {\n const selectors: any = scrollSelectors.split(',');\n for (const selector of selectors) {\n const el: any = this.findSingle(parent, selector);\n if (el && overflowCheck(el)) {\n scrollableParents.push(el);\n }\n }\n }\n\n if (parent.nodeType !== 9 && overflowCheck(parent)) {\n scrollableParents.push(parent);\n }\n }\n }\n\n return scrollableParents;\n }\n\n public static getHiddenElementOuterHeight(element: any): number {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n const elementHeight: any = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return elementHeight;\n }\n\n public static getHiddenElementOuterWidth(element: any): number {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n const elementWidth: any = element.offsetWidth;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return elementWidth;\n }\n\n public static getHiddenElementDimensions(element: any): any {\n const dimensions: any = {};\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n dimensions.width = element.offsetWidth;\n dimensions.height = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return dimensions;\n }\n\n public static scrollInView(container: any, item: any): void {\n const borderTopValue: string = getComputedStyle(container).getPropertyValue('borderTopWidth');\n const borderTop: number = borderTopValue ? parseFloat(borderTopValue) : 0;\n const paddingTopValue: string = getComputedStyle(container).getPropertyValue('paddingTop');\n const paddingTop: number = paddingTopValue ? parseFloat(paddingTopValue) : 0;\n const containerRect: any = container.getBoundingClientRect();\n const itemRect: any = item.getBoundingClientRect();\n const offset: number = (itemRect.top + document.body.scrollTop) - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\n const scroll: any = container.scrollTop;\n const elementHeight: any = container.clientHeight;\n const itemHeight: any = this.getOuterHeight(item);\n\n if (offset < 0) {\n container.scrollTop = scroll + offset;\n } else if ((offset + itemHeight) > elementHeight) {\n container.scrollTop = scroll + offset - elementHeight + itemHeight;\n }\n }\n\n public static fadeIn(element: any, duration: number): void {\n element.style.opacity = 0;\n\n let last: number = +new Date();\n let opacity: number = 0;\n const tick = () => {\n opacity = +element.style.opacity.replace(',', '.') + (new Date().getTime() - last) / duration;\n element.style.opacity = opacity;\n last = +new Date();\n\n if (+opacity < 1) {\n // tslint:disable-next-line: no-unused-expression\n (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);\n }\n };\n\n tick();\n }\n\n public static fadeOut(element: any, ms: any): void {\n let opacity: number = 1;\n const interval = 50;\n const duration: any = ms;\n const gap: number = interval / duration;\n\n const fading = setInterval(() => {\n opacity = opacity - gap;\n\n if (opacity <= 0) {\n opacity = 0;\n clearInterval(fading);\n }\n\n element.style.opacity = opacity;\n }, interval);\n }\n\n public static getWindowScrollTop(): number {\n const doc: HTMLElement = document.documentElement;\n return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n }\n\n public static getWindowScrollLeft(): number {\n const doc: HTMLElement = document.documentElement;\n return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n }\n\n public static matches(element: any, selector: string): boolean {\n const p: Element = Element.prototype;\n const f: any = p['matches'] || p.webkitMatchesSelector || p['mozMatchesSelector'] || p['msMatchesSelector'] || function (s) {\n return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n return f.call(element, selector);\n }\n\n public static getOuterWidth(el: any, margin?: any): any {\n let width: any = el.offsetWidth;\n\n if (margin) {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n\n return width;\n }\n\n public static getHorizontalPadding(el: any): number {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n return parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n }\n\n public static getHorizontalMargin(el: any): number {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n return parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n\n public static innerWidth(el: any): any {\n let width: any = el.offsetWidth;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n\n public static width(el: any): any {\n let width: any = el.offsetWidth;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n\n public static getInnerHeight(el: any): any {\n let height: any = el.offsetHeight;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n height += parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);\n return height;\n }\n\n public static getOuterHeight(el: any, margin?: any): any {\n let height: any = el.offsetHeight;\n\n if (margin) {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n\n return height;\n }\n\n public static getHeight(el: any): number {\n let height: any = el.offsetHeight;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n\n return height;\n }\n\n public static getWidth(el: any): number {\n let width: any = el.offsetWidth;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n\n return width;\n }\n\n public static getViewport(): any {\n\n const win = window;\n const d: Document = document;\n const e: HTMLElement = d.documentElement;\n const g: HTMLBodyElement = d.getElementsByTagName('body')[0];\n const w: number = win.innerWidth || e.clientWidth || g.clientWidth;\n const h: number = win.innerHeight || e.clientHeight || g.clientHeight;\n\n return { width: w, height: h };\n }\n\n public static getOffset(el: any): { top: any; left: any; } {\n const rect: any = el.getBoundingClientRect();\n return {\n top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),\n left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0),\n };\n }\n\n public static replaceElementWith(element: any, replacementElement: any): any {\n const parentNode: any = element.parentNode;\n if (!parentNode) {\n throw new Error('Não é possível substituir o elemento');\n }\n return parentNode.replaceChild(replacementElement, element);\n }\n\n public static getUserAgent(): string {\n return navigator.userAgent;\n }\n\n public static isIE(): boolean {\n const ua: string = window.navigator.userAgent;\n\n const msie: number = ua.indexOf('MSIE ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return true;\n }\n\n const trident: number = ua.indexOf('Trident/');\n if (trident > 0) {\n // IE 11 => return version number\n const rv: number = ua.indexOf('rv:');\n return true;\n }\n\n const edge: number = ua.indexOf('Edge/');\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return true;\n }\n\n // other browser\n return false;\n }\n\n public static isIOS(): boolean {\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];\n }\n\n public static isAndroid(): boolean {\n return /(android)/i.test(navigator.userAgent);\n }\n\n public static isTouchDevice(): boolean {\n return (('ontouchstart' in window) || (navigator.maxTouchPoints > 0));\n }\n\n public static appendChild(element: any, target: any): void {\n if (this.isElement(target)) {\n target.appendChild(element);\n } else if (target.el && target.el.nativeElement) {\n target.el.nativeElement.appendChild(element);\n } else {\n throw new Error(`Não é possível anexar ${target} para ${element}`);\n }\n }\n\n public static removeChild(element: any, target: any): void {\n if (this.isElement(target)) {\n target.removeChild(element);\n } else if (target.el && target.el.nativeElement) {\n target.el.nativeElement.removeChild(element);\n } else {\n throw new Error(`Não é possível remover ${element} a partir de ${target}`);\n }\n }\n\n public static removeElement(element: Element): void {\n if (!('remove' in Element.prototype)) {\n element.parentNode.removeChild(element);\n } else {\n element.remove();\n }\n }\n\n public static isElement(obj: any): boolean {\n return (\n typeof HTMLElement === 'object'\n ? obj instanceof HTMLElement\n : obj && typeof obj === 'object' && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === 'string'\n );\n }\n\n public static calculateScrollbarWidth(el?: HTMLElement): number {\n if (el) {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n return (el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth));\n } else {\n if (this.calculatedScrollbarWidth !== null) {\n return this.calculatedScrollbarWidth;\n }\n\n const scrollDiv: HTMLDivElement = document.createElement('div');\n scrollDiv.className = 'p-scrollbar-measure';\n document.body.appendChild(scrollDiv);\n\n const scrollbarWidth: number = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n\n this.calculatedScrollbarWidth = scrollbarWidth;\n\n return scrollbarWidth;\n }\n }\n\n public static calculateScrollbarHeight(): number {\n if (this.calculatedScrollbarHeight !== null) {\n return this.calculatedScrollbarHeight;\n }\n\n const scrollDiv: HTMLDivElement = document.createElement('div');\n scrollDiv.className = 'p-scrollbar-measure';\n document.body.appendChild(scrollDiv);\n\n const scrollbarHeight: number = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n document.body.removeChild(scrollDiv);\n\n this.calculatedScrollbarWidth = scrollbarHeight;\n\n return scrollbarHeight;\n }\n\n public static invokeElementMethod(element: any, methodName: string, args?: any[]): void {\n (element as any)[methodName].apply(element, args);\n }\n\n public static clearSelection(): void {\n if (window.getSelection) {\n if (window.getSelection().empty) {\n window.getSelection().empty();\n } else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {\n window.getSelection().removeAllRanges();\n }\n } else if (document['selection'] && document['selection'].empty) {\n try {\n document['selection'].empty();\n } catch (error) {\n // Ignore IE bug\n }\n }\n }\n\n public static getBrowser(): any {\n if (!this.browser) {\n const matched: { browser: any; version: any; } = this.resolveUserAgent();\n this.browser = {};\n\n if (matched.browser) {\n this.browser[matched.browser] = true;\n this.browser['version'] = matched.version;\n }\n\n if (this.browser['chrome']) {\n this.browser['webkit'] = true;\n } else if (this.browser['webkit']) {\n this.browser['safari'] = true;\n }\n }\n\n return this.browser;\n }\n\n public static resolveUserAgent(): { browser: any; version: any; } {\n const ua: string = navigator.userAgent.toLowerCase();\n const match: any[] | RegExpExecArray = /(chrome)[ \\/]([\\w.]+)/.exec(ua) ||\n /(webkit)[ \\/]([\\w.]+)/.exec(ua) ||\n /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) ||\n /(msie) ([\\w.]+)/.exec(ua) ||\n ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua) ||\n [];\n\n return {\n browser: match[1] || '',\n version: match[2] || '0'\n };\n }\n\n public static isInteger(value: any): boolean {\n if (Number.isInteger) {\n return Number.isInteger(value);\n } else {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n }\n }\n\n public static isHidden(element: HTMLElement): boolean {\n return element.offsetParent === null;\n }\n\n public static getFocusableElements(element: HTMLElement): any[] {\n const focusableElements: any[] = DomHandler.find(element, `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]), 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]), [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]):not(.p-disabled)`\n );\n\n const visibleFocusableElements: any[] = [];\n for (const focusableElement of focusableElements) {\n // tslint:disable-next-line: triple-equals\n if (getComputedStyle(focusableElement).display != 'none' && getComputedStyle(focusableElement).visibility != 'hidden') {\n visibleFocusableElements.push(focusableElement);\n }\n }\n return visibleFocusableElements;\n }\n\n static generateZIndex(): number {\n this.zindex = this.zindex || 100;\n return ++this.zindex;\n }\n\n}\n","import { DomHandler } from './dom-handler';\n\nexport class ConnectedOverlayScrollHandler {\n\n element: any;\n\n listener: any;\n\n scrollableParents: any;\n\n constructor(element: any, listener: any = () => { }) {\n this.element = element;\n this.listener = listener;\n }\n\n bindScrollListener(): void {\n this.scrollableParents = DomHandler.getScrollableParents(this.element);\n for (let i: number = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].addEventListener('scroll', this.listener);\n }\n }\n\n unbindScrollListener(): void {\n if (this.scrollableParents) {\n for (let i: number = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].removeEventListener('scroll', this.listener);\n }\n }\n }\n\n destroy(): void {\n this.unbindScrollListener();\n this.element = null;\n this.listener = null;\n this.scrollableParents = null;\n }\n}\n","import { animate, AnimationEvent, state, style, transition, trigger } from '@angular/animations';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output, Renderer2,\n TemplateRef,\n ViewEncapsulation,\n ViewRef\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport ZIndexUtils from '../../../core/utils/zindex.util';\nimport { GIPINgConfig } from '../../api/gipi-ng-config';\nimport { GIPIOverlayService } from '../../gipi-components/overlay/shared/overlay-service';\nimport { ConnectedOverlayScrollHandler } from '../dom/connected-overlay-scroll-handler';\nimport { DomHandler } from '../dom/dom-handler';\n\n@Component({\n selector: 'itss-overlay-panel',\n templateUrl: './overlay-panel.component.html',\n styleUrls: ['./overlay-panel.component.scss'],\n animations: [\n trigger('animation', [\n state('void', style({\n transform: 'scaleY(0.8)',\n opacity: 0\n })),\n state('close', style({\n opacity: 0\n })),\n state('open', style({\n transform: 'translateY(0)',\n opacity: 1\n })),\n transition('void => open', animate('{{showTransitionParams}}')),\n transition('open => close', animate('{{hideTransitionParams}}')),\n ])\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'class': 'itss-element' }\n})\nexport class OverlayPanelComponent implements AfterContentInit, OnInit, OnDestroy {\n\n @Input() dismissable: boolean = true;\n\n @Input() showCloseIcon: boolean;\n\n @Input() closeIconSize: number = 15;\n\n @Input() style: any;\n\n @Input() styleClass: string;\n\n @Input() appendTo: any = 'body';\n\n @Input() autoZIndex: boolean = true;\n\n @Input() ariaCloseLabel: string;\n\n @Input() baseZIndex: number = 0;\n\n @Input() focusOnShow: boolean = true;\n\n @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n @Input() hideTransitionOptions: string = '.1s linear';\n\n @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('overlayContent', { static: false }) overlayContentRef: TemplateRef<any>;\n\n @ContentChild('overlayFooter', { static: false }) overlayFooterRef: TemplateRef<any>;\n\n container: HTMLDivElement;\n\n overlayVisible: boolean = false;\n\n render: boolean = false;\n\n isOverlayAnimationInProgress: boolean = false;\n\n selfClick: boolean = false;\n\n documentClickListener: any;\n\n target: any;\n\n willHide: boolean;\n\n scrollHandler: any;\n\n documentResizeListener: any;\n\n destroyCallback: Function;\n\n overlayEventListener;\n\n overlaySubscription: Subscription;\n\n constructor(\n public el: ElementRef,\n public renderer: Renderer2,\n public cd: ChangeDetectorRef,\n private zone: NgZone,\n public config: GIPINgConfig,\n public overlayService: GIPIOverlayService\n ) { }\n\n ngOnInit(): void {\n }\n\n ngAfterContentInit(): void {\n }\n\n bindDocumentClickListener(): void {\n if (!this.documentClickListener && this.dismissable) {\n this.zone.runOutsideAngular(() => {\n const documentEvent: 'touchstart' | 'click' = DomHandler.isIOS() ? 'touchstart' : 'click';\n const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {\n if (!this.container.contains(event.target) && this.target !== event.target && !this.target.contains(event.target) && !this.selfClick) {\n this.zone.run(() => {\n this.hide();\n });\n }\n\n this.selfClick = false;\n this.cd.markForCheck();\n });\n });\n }\n }\n\n unbindDocumentClickListener(): void {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n this.selfClick = false;\n }\n }\n\n toggle(event: any, target?: any): void {\n if (this.isOverlayAnimationInProgress) {\n return;\n }\n\n if (this.overlayVisible) {\n if (this.hasTargetChanged(event, target)) {\n this.destroyCallback = () => {\n this.show(null, (target || event.currentTarget || event.target));\n };\n }\n\n this.hide();\n } else {\n this.show(event, target);\n }\n }\n\n show(event: any, target?: any): void {\n if (this.isOverlayAnimationInProgress) {\n return;\n }\n\n this.target = target || event.currentTarget || event.target;\n this.overlayVisible = true;\n this.render = true;\n this.cd.markForCheck();\n }\n\n onOverlayClick(event: any): void {\n this.overlayService.add({\n originalEvent: event,\n target: this.el.nativeElement\n });\n\n this.selfClick = true;\n }\n\n onContentClick(): void {\n this.selfClick = true;\n }\n\n hasTargetChanged(event: any, target: any): boolean {\n return this.target != null && this.target !== (target || event.currentTarget || event.target);\n }\n\n appendContainer(): void {\n if (this.appendTo) {\n if (this.appendTo === 'body') {\n document.body.appendChild(this.container);\n } else {\n DomHandler.appendChild(this.container, this.appendTo);\n }\n }\n }\n\n restoreAppend(): void {\n if (this.container && this.appendTo) {\n this.el.nativeElement.appendChild(this.container);\n }\n }\n\n align(): void {\n if (this.autoZIndex) {\n ZIndexUtils.set('overlay', this.container, this.baseZIndex + this.config.zIndex.overlay);\n }\n\n DomHandler.absolutePosition(this.container, this.target);\n\n const containerOffset: { top: any; left: any; } = DomHandler.getOffset(this.container);\n const targetOffset: { top: any; left: any; } = DomHandler.getOffset(this.target);\n let arrowLeft: number = 0;\n\n if (containerOffset.left < targetOffset.left) {\n arrowLeft = targetOffset.left - containerOffset.left;\n }\n this.container.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);\n\n if (containerOffset.top < targetOffset.top) {\n DomHandler.addClass(this.container, 'overlay-panel-flipped');\n }\n }\n\n onAnimationStart(event: AnimationEvent): void {\n if (event.toState === 'open') {\n this.container = event.element;\n this.onShow.emit(null);\n this.appendContainer();\n this.align();\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n\n if (this.focusOnShow) {\n this.focus();\n }\n\n this.overlayEventListener = e => {\n if (this.container && this.container.contains(e.target)) {\n this.selfClick = true;\n }\n };\n\n this.overlaySubscription = this.overlayService.clickObservable.subscribe(this.overlayEventListener);\n }\n\n this.isOverlayAnimationInProgress = true;\n }\n\n onAnimationEnd(event: AnimationEvent): void {\n switch (event.toState) {\n case 'void': {\n if (this.destroyCallback) {\n this.destroyCallback();\n this.destroyCallback = null;\n }\n\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n break;\n }\n case 'close': {\n if (this.autoZIndex) {\n ZIndexUtils.clear(this.container);\n }\n\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n\n this.onContainerDestroy();\n this.onHide.emit({});\n this.render = false;\n break;\n }\n }\n\n this.isOverlayAnimationInProgress = false;\n }\n\n focus(): void {\n const focusable: any = DomHandler.findSingle(this.container, '[autofocus]');\n if (focusable) {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => focusable.focus(), 5);\n });\n }\n }\n\n hide(): void {\n if (this.isOverlayAnimationInProgress) {\n return;\n }\n\n this.overlayVisible = false;\n this.cd.markForCheck();\n }\n\n onCloseClick(event: any): void {\n this.hide();\n event.preventDefault();\n }\n\n onWindowResize(event: any): void {\n if (this.overlayVisible && !DomHandler.isTouchDevice()) {\n this.hide();\n }\n }\n\n bindDocumentResizeListener(): void {\n this.documentResizeListener = this.onWindowResize.bind(this);\n window.addEventListener('resize', this.documentResizeListener);\n }\n\n unbindDocumentResizeListener(): void {\n if (this.documentResizeListener) {\n window.removeEventListener('resize', this.documentResizeListener);\n this.documentResizeListener = null;\n }\n }\n\n bindScrollListener(): void {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {\n if (this.overlayVisible) {\n this.hide();\n }\n });\n }\n\n this.scrollHandler.bindScrollListener();\n }\n\n unbindScrollListener(): void {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n\n onContainerDestroy(): void {\n if (!(this.cd as ViewRef).destroyed) {\n this.target = null;\n }\n\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n }\n\n ngOnDestroy(): void {\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n\n if (this.container && this.autoZIndex) {\n ZIndexUtils.clear(this.container);\n }\n\n if (!(this.cd as ViewRef).destroyed) {\n this.target = null;\n }\n\n this.destroyCallback = null;\n if (this.container) {\n this.restoreAppend();\n this.onContainerDestroy();\n }\n\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n }\n\n}\n","import {OverlayRef} from '@angular/cdk/overlay';\nimport {TemplateRef, Type} from '@angular/core';\n\nimport {Subject} from 'rxjs';\n\nexport interface PopoverCloseEvent<T = any> {\n type: 'backdropClick' | 'close';\n data: T;\n}\n\nexport type PopoverContent = TemplateRef<any> | Type<any> | string;\n\nexport class PopoverRef<T = any> {\n private afterClosed = new Subject<PopoverCloseEvent<T>>();\n afterClosed$ = this.afterClosed.asObservable();\n\n constructor(public overlay: OverlayRef,\n public content: PopoverContent,\n public data: T) {\n overlay.backdropClick().subscribe(() => {\n this._close('backdropClick', null);\n });\n }\n\n close(data?: T) {\n this._close('close', data);\n }\n\n private _close(type: PopoverCloseEvent['type'], data?: T) {\n this.overlay.dispose();\n this.afterClosed.next({\n type,\n data\n });\n this.afterClosed.complete();\n }\n\n}\n","import {Component, OnInit, TemplateRef} from '@angular/core';\nimport {PopoverContent, PopoverRef} from './popover-ref';\n\n@Component({\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.scss']\n})\nexport class PopoverComponent implements OnInit {\n\n renderMethod: 'template' | 'component' | 'text' = 'component';\n\n content: PopoverContent;\n\n context;\n\n constructor(private popoverRef: PopoverRef) {\n }\n\n ngOnInit(): void {\n this.content = this.popoverRef.content;\n\n if (typeof this.content === 'string') {\n this.renderMethod = 'text';\n }\n\n if (this.content instanceof TemplateRef) {\n this.renderMethod = 'template';\n this.context = {\n close: this.popoverRef.close.bind(this.popoverRef),\n data: this.popoverRef.data\n };\n }\n }\n\n}\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'itss-radio-group-entity',\n templateUrl: './radio-group-entity.component.html',\n styleUrls: ['./radio-group-entity.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroupEntityComponent),\n multi: true\n }\n ]\n})\nexport class RadioGroupEntityComponent implements ControlValueAccessor, OnInit {\n\n @Input() label: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input() property = 'description';\n\n @Input() entities = [];\n\n @Input('value') val: any;\n\n ngOnInit(): void {\n }\n\n getPropertyValue(entity: any): string {\n return entity && typeof entity !== 'string' && entity[this.property];\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n get value() {\n return this.val;\n }\n\n set value(val) {\n this.val = val;\n this.onChange(val);\n this.onTouch();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n}\n","export class GenerateIdComponent {\n\n public static uniqueId(nameComponent: string): string {\n const stringArr: any[] = [];\n for (let i: number = 0; i < 2; i++) {\n // tslint:disable-next-line: no-bitwise\n const S4: string = (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n stringArr.push(S4);\n }\n return `${nameComponent}-${stringArr.join('-')}`;\n }\n\n}\n\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatRadioChange } from '@angular/material';\n\nimport { ObjectUtil } from '../../../core';\nimport { GenerateIdComponent } from '../../api/generate-id-component';\n\n@Component({\n selector: 'itss-radio-group-enum',\n templateUrl: './radio-group-enum.component.html',\n styleUrls: ['./radio-group-enum.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroupEnumComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'class': 'itss-element' },\n})\nexport class RadioGroupEnumComponent implements ControlValueAccessor, OnInit {\n\n enumList: any[] = [];\n\n @Input() label: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input('groupbox') isGroupbox: boolean = false;\n\n @Input('input') isInput: boolean = false;\n\n @Input() enum;\n\n @Input('value') val: any;\n\n @Input() sort: (a: any, b: any) => number;\n\n @Input() valuesExclud: string[];\n\n @Input() valuesOmit: string[];\n\n @Output() selectionChange: EventEmitter<string> = new EventEmitter<string>();\n\n constructor(private changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n const lEnumList = Object.keys(this.enum)\n .map(key => ({ key: key, value: this.enum[key] }))\n .sort(this.sort);\n\n if (!ObjectUtil.isNull(this.valuesExclud)) {\n for (let i = 0; i < lEnumList.length; i++) {\n const excludEnum: boolean = this.valuesExclud.some(e => e === lEnumList[i].key);\n if (!excludEnum) {\n this.enumList.push(lEnumList[i]);\n }\n }\n } else {\n this.enumList = lEnumList;\n }\n this.changeDetectorRef.detectChanges();\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n get value() {\n return this.val;\n }\n\n set value(val) {\n this.val = val;\n this.onChange(val);\n this.onTouch();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n changeRadioGroup({ value }: MatRadioChange): void {\n this.selectionChange.emit(value);\n }\n\n validateOmitByKey(key: string): boolean {\n return !ObjectUtil.isNull(this.valuesOmit) ? !this.valuesOmit.some(el => el === key) : true;\n }\n\n getId(key: string): string {\n return GenerateIdComponent.uniqueId(key);\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, EventEmitter, forwardRef, Input, OnInit, Output, TemplateRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ObjectUtil } from '../../../core';\n\n@Component({\n selector: 'itss-select-button',\n templateUrl: './select-button.component.html',\n styleUrls: ['./select-button.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectButtonComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'itss-element'\n }\n})\nexport class SelectButtonComponent implements OnInit {\n\n @Input() options: any[];\n\n @Input() property: string;\n\n @Input() optionValue: string;\n\n @Input() optionDisabled: string;\n\n @Input() tabindex: number = 0;\n\n @Input() multiple: boolean;\n\n @Input() label: string;\n\n @Input() required: boolean;\n\n @Input() styleClass: string;\n\n @Input() ariaLabelledBy: string;\n\n @Input() disabled: boolean;\n\n @Input() dataKey: string;\n\n @Output() onOptionClick: EventEmitter<any> = new EventEmitter();\n\n @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n @ContentChild(TemplateRef, { static: false }) itemTemplate;\n\n value: any;\n\n onModelChange: Function = () => { };\n\n onModelTouched: Function = () => { };\n\n constructor(public cd: ChangeDetectorRef) { }\n\n ngOnInit(): void { }\n\n getPropertyLabel(option: any): any {\n return this.property ? ObjectUtil.resolveFieldData(option, this.property) : (option.label !== undefined ? option.label : option);\n }\n\n getOptionValue(option: any): any {\n return this.optionValue ? ObjectUtil.resolveFieldData(option, this.optionValue) : (this.property || option.value === undefined ? option : option.value);\n }\n\n isOptionDisabled(option: any): any {\n return this.optionDisabled ? ObjectUtil.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this.cd.markForCheck();\n }\n\n onItemClick(event: any, option: any, index: number): void {\n if (this.disabled || this.isOptionDisabled(option)) {\n return;\n }\n\n if (this.multiple) {\n if (this.isSelected(option)) {\n this.removeOption(option);\n } else {\n this.value = [...(this.value || []), this.getOptionValue(option)];\n }\n\n this.onModelChange(this.value);\n\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n } else {\n const value: any = this.getOptionValue(option);\n\n if (this.value !== value) {\n this.value = this.getOptionValue(option);\n this.onModelChange(this.value);\n\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n }\n\n this.onOptionClick.emit({\n originalEvent: event,\n option: option,\n index: index\n });\n }\n\n onBlur(): void {\n this.onModelTouched();\n }\n\n removeOption(option: any): void {\n this.value = this.value.filter(val => !ObjectUtil.equals(val, this.getOptionValue(option), this.dataKey));\n }\n\n isSelected(option: any): boolean {\n let selected: boolean = false;\n const optionValue: any = this.getOptionValue(option);\n\n if (this.multiple) {\n if (this.value) {\n for (const val of this.value) {\n if (ObjectUtil.equals(val, optionValue, this.dataKey)) {\n selected = true;\n break;\n }\n }\n }\n } else {\n selected = ObjectUtil.equals(this.getOptionValue(option), this.value, this.dataKey);\n }\n\n return selected;\n }\n\n}\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, TrackByFunction, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatSelect } from '@angular/material/select';\nimport { Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';\n\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { MatOption } from '@angular/material/core/typings/option';\nimport { AbstractModel, ArrayUtil, ObjectUtil, PageDTO, StringUtil } from '../../../core';\nimport { UUIDUtil } from '../../../core/utils/uuid.util';\n\n@Component({\n selector: 'itss-select-entity-paged',\n templateUrl: './select-entity-paged.component.html',\n styleUrls: ['./select-entity-paged.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof SelectEntityPagedComponent => SelectEntityPagedComponent),\n multi: true\n }\n ]\n})\nexport class SelectEntityPagedComponent<T> implements OnInit, OnChanges, ControlValueAccessor, OnDestroy {\n\n valueSearchCtrl: FormControl = new FormControl('');\n\n page: PageDTO<T>;\n\n totalOptions: number = 0;\n\n subscriptions: Subscription[] = [];\n\n searching: boolean = false;\n\n toggleAllCheckboxChecked: boolean = false;\n\n toggleAllCheckboxIndeterminate: boolean = false;\n\n modelValue: any;\n\n private _paramNextBatch: any;\n\n private _options: T[] = [];\n\n @ViewChild('matSelect', { static: false }) private matSelect: MatSelect;\n\n @ViewChild(CdkVirtualScrollViewport, { static: false }) private cdkVirtualScrollViewPort: CdkVirtualScrollViewport;\n\n @Input() initAllCheckboxChecked: boolean;\n\n @Input() closeIcon: string = 'close';\n\n @Input() closeSvgIcon?: string;\n\n @Input() id: string;\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() placeholder: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input() showButtonAdd: boolean;\n\n @Input() multiple: boolean = false;\n\n @Input() iconPrefix: string;\n @Input() svgIconPrefix: string;\n\n // Mostrar/ocultar o input para pesquisar\n @Input() hideFieldSearch: boolean = false;\n\n // Mostrar/ocultar o botão limpar opções selecionadas\n @Input() showClear: boolean = false;\n\n @Input() debounceTime: number = 1000; // milissegundos\n\n // Valores que não serão exibidos nas opções\n @Input() valuesExclud: T[] = [];\n\n @Input() appearance: string = 'outline';\n\n @Input() classSelectPanel: string;\n\n @Input() property: string = 'description';\n\n @Input() trackyBy: string = 'id';\n\n @Input() initLoaded: boolean = true;\n\n @Input() infiniteScroll: boolean = true;\n\n @Input() propertyFn: (obj: T) => string;\n\n @Input() nextBatchFn: (researchField: string, page: number, paramNextBatch?: any) => Promise<PageDTO<T>>;\n\n @Input() set paramNextBatch(val: any) {\n this._paramNextBatch = val;\n }\n get paramNextBatch(): any {\n return this._paramNextBatch;\n }\n\n @Input() set model(val: any) {\n this.modelValue = val;\n this.modelChange.emit(this.modelValue);\n this.onChange(this.modelValue);\n this.onTouch(this.modelValue);\n }\n get model(): any {\n return this.modelValue;\n }\n\n @Input() set options(val: T[]) {\n this._options = val;\n }\n get options(): T[] {\n return this._options;\n }\n\n @Output() modelChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() selectionChange: EventEmitter<T> = new EventEmitter<T>();\n @Output() searchChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() addChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n get scrollViewportHeight(): number {\n if (ArrayUtil.isEmpty(this.options)) {\n return 0;\n }\n\n // Cada mat-option possui 3em ou 39px. 3 * quantidade de mat-option\n return (3 * this.options.length);\n }\n\n trackByOption: TrackByFunction<T> = (index, obj) => this.trackyBy ? obj[this.trackyBy] : obj;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n // O debounceTime é utlizado para emitir o valor após o usuário parar\n // de digitar, evitando consulta a toda letra que for digitada.\n // O distinctUntilChanged é utilizado para emitir apenas valores\n // que são diferentes dos valores anteriores emitidos.\n this.subscriptions.push(\n this.valueSearchCtrl.valueChanges\n .pipe(\n map((value: string): string => value),\n debounceTime(this.debounceTime),\n distinctUntilChanged()\n )\n .subscribe((value: string): void => {\n this.onSearchChange(value);\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!ObjectUtil.isNull(changes.model) && !changes.model.isFirstChange()) {\n if (ArrayUtil.isEmpty(this.options) && !ObjectUtil.isNull(this.model)) {\n if (!this.multiple) {\n this.options.push(this.model);\n } else {\n this.options = this.model;\n }\n }\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n writeValue(value: any): void {\n this.model = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n compareFn(f1: AbstractModel, f2: AbstractModel): boolean {\n return f1 && f2 && f1.id === f2.id;\n }\n\n getPropertyValue(entity: any): string {\n if (!ObjectUtil.isNewModel(entity)) {\n if (!ObjectUtil.isNull(this.propertyFn)) {\n return this.propertyFn(entity);\n }\n return this.getValue(entity, this.property);\n }\n return StringUtil.EMPTY;\n }\n\n getValue(entity: any, property: string): string {\n const properties: string[] = property.split('.');\n let value: any = entity;\n\n for (let i: number = 0; i < properties.length; i++) {\n value = Reflect.get(value, properties[i]);\n if (value && i === properties.length - 1) {\n return value;\n }\n }\n }\n\n onSelectionChange(entity: T): void {\n this.selectionChange.emit(entity);\n }\n\n onSearchChange(value: string): void {\n if (this.matSelect.panelOpen) {\n this.searchChange.emit(value);\n\n this.model = null;\n this.onSelectionChange(this.model);\n\n if (this.multiple) {\n this.onToggleAllSelection(false);\n }\n\n this.page = null;\n this.options = [];\n\n this.onLoadMoreOptions(false);\n }\n }\n\n async onLoadMoreOptions(isInfiniteScroll: boolean, isOpened: boolean = true): Promise<void> {\n if (!this.infiniteScroll) {\n return;\n }\n if (!isOpened) {\n return;\n }\n if (ObjectUtil.isNull(this.nextBatchFn)) {\n console.error('A função nextBatchFn é obrigatória e não foi informada');\n return;\n }\n if (this.searching) {\n return;\n }\n if (!ArrayUtil.isEmpty(this.options) && !ObjectUtil.isNull(this.page) && ArrayUtil.isEmpty(this.valuesExclud)) {\n if (this.options.length === this.page.totalElements) {\n return;\n }\n }\n\n this.cdkVirtualScrollViewPort.scrollToIndex(0, 'smooth');\n this.cdkVirtualScrollViewPort.checkViewportSize();\n\n this.searching = true;\n\n let pageNumber: number = 0;\n if (isInfiniteScroll) {\n pageNumber = !ObjectUtil.isNull(this.page) ? this.page.number + 1 : 1;\n } else {\n this.page = null;\n this.options = [];\n }\n\n await this.nextBatchFn(this.valueSearchCtrl.value, pageNumber, this.paramNextBatch)\n .then(page => {\n this.page = page;\n\n if (!ObjectUtil.isNull(this.page) && !ArrayUtil.isEmpty(this.page.content)) {\n if (!ArrayUtil.isEmpty(this.valuesExclud)) {\n for (let i: number = 0; i < this.valuesExclud.length; i++) {\n const index: number = this.page.content.findIndex(o => this.valuesExclud[i][this.trackyBy] === o[this.trackyBy]);\n this.page.content.splice(index, 1);\n }\n }\n\n this.options = [...this.options, ...this.page.content];\n }\n\n if (!ObjectUtil.isNull(this.model) && !this.multiple) {\n const modelInList: T = this.options.find(o => ObjectUtil.equals(o, this.model));\n if (ObjectUtil.isNull(modelInList)) {\n this.options.push(this.model);\n }\n }\n\n this.searching = false;\n })\n .finally(() => {\n this.searching = false;\n });\n }\n\n onToggleAllSelection(selectAll: boolean): void {\n if (this.multiple && !ObjectUtil.isNull(this.matSelect) && !this.searching) {\n if (selectAll) {\n this.matSelect.options.forEach((item: MatOption) => item.select());\n } else {\n this.matSelect.options.forEach((item: MatOption) => item.deselect());\n }\n\n this.onToggleIndeterminateAllSelection();\n\n this._changeDetectorRef.markForCheck();\n }\n }\n\n onToggleIndeterminateAllSelection(): void {\n if (this.multiple && !ObjectUtil.isNull(this.matSelect)) {\n const lOptions: MatOption[] = this.matSelect.options.filter((item: MatOption) => item.selected);\n this.toggleAllCheckboxChecked = lOptions.length > 0;\n this.toggleAllCheckboxIndeterminate = (lOptions.length > 0) && (lOptions.length < this.matSelect.options.length);\n\n if (lOptions.length <= 0) {\n this.model = null;\n this.onSelectionChange(this.model);\n }\n }\n }\n\n showClearOptionButton(): boolean {\n let isNewModel: boolean = false;\n if (this.multiple && Array.isArray(this.model)) {\n isNewModel = !this.model || (this.model && (this.model.length <= 0));\n } else if (!this.multiple && !ObjectUtil.isNull(this.model)) {\n isNewModel = ObjectUtil.isNewModel(this.model);\n }\n return this.showClear && !isNewModel && (!this.disabled) && (!this.searching);\n }\n\n removeOption(): void {\n if (this.multiple) {\n this.onToggleAllSelection(false);\n }\n\n this.model = null;\n this.onSelectionChange(this.model);\n this.options = [];\n }\n\n haveSelected(): boolean {\n const entity: any = this.model;\n if (entity) {\n return UUIDUtil.isValid(entity.id);\n }\n return false;\n }\n\n onClickAdd(): void {\n if (Array.isArray(this.model) && !ArrayUtil.isEmpty(this.model)) {\n this.addChange.emit(this.model);\n } else {\n this.addChange.emit([]);\n }\n }\n\n}\n","import { ViewportRuler } from '@angular/cdk/scrolling';\nimport { ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnInit, Optional, Output } from '@angular/core';\nimport { MatFormField, MatOption, MatSelect } from '@angular/material';\n\n@Component({\n selector: 'itss-select-button-add',\n templateUrl: './select-button-add.component.html',\n styleUrls: ['./select-button-add.component.scss']\n})\nexport class SelectButtonAddComponent implements OnInit {\n\n // Rótulo do marcador de posição de pesquisa\n @Input() label: string = 'Adicionar novo registro';\n\n // Ícone baseado em fonte usado para exibir addIcon\n @Input() addIcon: string = 'add_circle';\n\n // Ícone baseado em Svg usado para exibir addIcon. Se definido, addIcon é substituído\n @Input() addSvgIcon?: string;\n\n // Adiciona suporte a leitor de tela 508 para o botão\n @Input() ariaLabel: string = 'Botão de adicionar registro';\n\n @Output('click') onClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(true);\n\n constructor(\n @Inject(MatSelect) public matSelect: MatSelect,\n public changeDetectorRef: ChangeDetectorRef,\n private _viewportRuler: ViewportRuler,\n @Optional() @Inject(MatOption) public matOption: MatOption = null,\n @Optional() @Inject(MatFormField) public matFormField: MatFormField = null,\n ) { }\n\n ngOnInit(): void { }\n\n onClickButton(event: MouseEvent): void {\n this.onClick.emit(event);\n event.stopPropagation();\n }\n\n}\n","import { ViewportRuler } from '@angular/cdk/scrolling';\nimport { ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnInit, Optional, Output } from '@angular/core';\nimport { MatFormField, MatOption, MatSelect } from '@angular/material';\n\n@Component({\n selector: 'itss-select-button-next-batch',\n templateUrl: './select-button-next-batch.component.html',\n styleUrls: ['./select-button-next-batch.component.scss']\n})\nexport class SelectButtonNextBatchComponent implements OnInit {\n\n // Rótulo do marcador de posição de pesquisa\n @Input() label: string = 'Mostrar mais';\n\n // Adiciona suporte a leitor de tela 508 para o botão\n @Input() ariaLabel: string = 'Botão para exibir mais resultados';\n\n @Output('click') onClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(true);\n\n constructor(\n @Inject(MatSelect) public matSelect: MatSelect,\n public changeDetectorRef: ChangeDetectorRef,\n private _viewportRuler: ViewportRuler,\n @Optional() @Inject(MatOption) public matOption: MatOption = null,\n @Optional() @Inject(MatFormField) public matFormField: MatFormField = null,\n ) { }\n\n ngOnInit(): void { }\n\n onClickButton(event: MouseEvent): void {\n this.onClick.emit(event);\n event.stopPropagation();\n }\n\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Diretiva para fornecer um elemento personalizado sem entradas encontradas.\n * Por exemplo:\n * <itss-select-search [formControl]=\"entityFilterCtrl\">\n * <span itssSelectNoEntriesFound>\n * Nenhum registro encontrado <button>Add</button>\n * </span>\n * </itss-select-search>\n */\n@Directive({\n selector: '[itssSelectNoEntriesFound]'\n})\nexport class SelectNoEntriesFoundDirective { }\n","import { Directive } from '@angular/core';\n\n/**\n * Diretiva para fornecer um ícone transparente personalizado.\n * Por exemplo:\n * <itss-select-search [formControl]=\"entityFilterCtrl\">\n * <mat-icon itssSelectSearchClear>delete</mat-icon>\n * </itss-select-search>\n */\n@Directive({\n selector: '[itssSelectSearchClear]'\n})\nexport class SelectSearchClearDirective { }\n","import { InjectionToken } from '@angular/core';\nimport { SelectSearchComponent } from './select-search/select-search.component';\n\n/** Lista de entradas de ItssSelectSearchComponent que podem ser configuradas com um padrão global. */\nexport const configurableDefaultOptions = [\n 'ariaLabel',\n 'clearSearchInput',\n 'closeIcon',\n 'closeSvgIcon',\n 'disableInitialFocus',\n 'disableScrollToActiveOnOptionsChanged',\n 'enableClearOnEscapePressed',\n 'hideClearSearchButton',\n 'noEntriesFoundLabel',\n 'placeholderLabel',\n 'preventHomeEndKeyPropagation',\n 'searching',\n] as const;\n\nexport type ConfigurableDefaultOptions = typeof configurableDefaultOptions[number];\n\n/**\n * InjectionToken que pode ser usado para especificar opções globais. por exemplo.\n *\n * ```typescript\n * providers: [\n * {\n * provide: ITSS_SELECT_SEARCH_DEFAULT_OPTIONS,\n * useValue: <ItssSelectSearchOptions>{\n * closeIcon: 'delete',\n * noEntriesFoundLabel: 'Nenhuma registro foi encontrado'\n * }\n * }\n * ]\n * ```\n *\n * Veja as entradas correspondentes de `ItssSelectSearchComponent` para documentação.\n */\nexport const ITSS_SELECT_SEARCH_DEFAULT_OPTIONS = new InjectionToken<ItssSelectSearchOptions>('itss-select_search-default-options');\n\n/** Opções globais configuráveis para ItssSelectSearch. */\nexport type ItssSelectSearchOptions = Readonly<Partial<Pick<SelectSearchComponent, ConfigurableDefaultOptions>>>;\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { A, DOWN_ARROW, END, ENTER, ESCAPE, HOME, NINE, SPACE, UP_ARROW, Z, ZERO } from '@angular/cdk/keycodes';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, HostBinding, Inject, Input, OnChanges, OnDestroy, OnInit, Optional, Output, QueryList, SimpleChanges, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatOption, MatSelect } from '@angular/material';\nimport { BehaviorSubject, Observable, Subject, combineLatest, of } from 'rxjs';\nimport { delay, filter, map, startWith, switchMap, take, takeUntil, tap } from 'rxjs/operators';\n\nimport { ITSS_SELECT_SEARCH_DEFAULT_OPTIONS, ItssSelectSearchOptions, configurableDefaultOptions } from '../default-options';\nimport { SelectNoEntriesFoundDirective } from '../select-no-entries-found.directive';\nimport { SelectSearchClearDirective } from '../select-search-clear.directive';\n\n/**\n * Este componente foi reescrito utilizando se do projeto a seguir\n * https://github.com/bithost-gmbh/ngx-mat-select-search\n */\n@Component({\n selector: 'itss-input-search',\n templateUrl: './select-search.component.html',\n styleUrls: ['./select-search.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof SelectSearchComponent => SelectSearchComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SelectSearchComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor {\n\n // Valor de pesquisa atual\n get value(): string {\n return this._formControl.value;\n }\n\n // Referência às opções MatSelect\n public set _options(_options: QueryList<MatOption>) {\n this._options$.next(_options);\n }\n public get _options(): QueryList<MatOption> {\n return this._options$.getValue();\n }\n\n // Adiciona a classe mat-select-search-inside-mat-option se o itss-select-search estiver\n // dentro do mat-option\n @HostBinding('class.mat-select-search-inside-mat-option')\n get isInsideMatOption(): boolean {\n return !!this.matOption;\n }\n\n constructor(\n @Inject(MatSelect) public matSelect: MatSelect,\n public changeDetectorRef: ChangeDetectorRef,\n private _viewportRuler: ViewportRuler,\n @Optional() @Inject(MatOption) public matOption: MatOption = null,\n @Optional() @Inject(MatFormField) public matFormField: MatFormField = null,\n @Optional() @Inject(ITSS_SELECT_SEARCH_DEFAULT_OPTIONS) defaultOptions?: ItssSelectSearchOptions\n ) {\n this.applyDefaultOptions(defaultOptions);\n }\n\n // Rótulo do marcador de posição de pesquisa\n @Input() placeholderLabel: string = 'Pesquisar...';\n\n // Tipo do campo de entrada de pesquisa\n @Input() type: string = 'text';\n\n // Ícone baseado em fonte usado para exibir Close-Icon\n @Input() closeIcon: string = 'close';\n\n // Ícone baseado em Svg usado para exibir Close-Icon. Se definido, Close-Icon é substituído\n @Input() closeSvgIcon?: string;\n\n // Rótulo a ser mostrado quando nenhuma entrada for encontrada. Defina como nulo se nenhuma mensagem deve ser mostrada\n @Input() noEntriesFoundLabel: string = 'Nenhum resultado encontrado';\n\n /**\n * Se o campo de pesquisa deve ou não ser limpo após o menu suspenso ser fechado.\n * Útil para filtragem do lado do servidor. Veja [#3](https://github.com/bithost-gmbh/ngx-mat-select-search/issues/3)\n */\n @Input() clearSearchInput: boolean = true;\n\n // Se deve mostrar o indicador de pesquisa em andamento\n @Input() searching: boolean = false;\n\n // Desativa o foco inicial do campo de entrada\n @Input() disableInitialFocus: boolean = false;\n\n // Ativar limpar input ao pressionar escape\n @Input() enableClearOnEscapePressed: boolean = false;\n\n /**\n * Impede que a chave home/end seja propagada para mat-select,\n * permitindo mover o cursor dentro da entrada de pesquisa em vez de navegar pelas opções\n */\n @Input() preventHomeEndKeyPropagation: boolean = false;\n\n // Desativa a rolagem para as opções ativas quando a lista de opções é alterada. Útil para pesquisa do lado do servidor\n @Input() disableScrollToActiveOnOptionsChanged: boolean = false;\n\n // Adiciona suporte a leitor de tela 508 para caixa de pesquisa\n @Input() ariaLabel: string = 'Pesquisa suspensa';\n\n // Se deve mostrar a caixa de seleção Selecionar tudo (para mat-select[multi=true])\n @Input() showToggleAllCheckbox: boolean = false;\n\n // Selecione tudo caixa de seleção marcada estado\n private _toggleAllCheckboxChecked: boolean = false;\n @Input() set toggleAllCheckboxChecked(value: boolean) {\n this._toggleAllCheckboxChecked = value;\n this.toggleAll.emit(value);\n }\n get toggleAllCheckboxChecked(): boolean {\n return this._toggleAllCheckboxChecked;\n }\n\n // Marque todas as caixas de seleção estado indeterminado\n private _toggleAllCheckboxIndeterminate: boolean = false;\n @Input() set toggleAllCheckboxIndeterminate(value: boolean) {\n this._toggleAllCheckboxIndeterminate = value;\n this.toggleAllIndeterminate.emit(value);\n }\n get toggleAllCheckboxIndeterminate(): boolean {\n return this._toggleAllCheckboxIndeterminate;\n }\n\n // Exibir uma mensagem em uma dica de ferramenta na caixa de seleção de alternar tudo\n @Input() toggleAllCheckboxTooltipMessage: string = '';\n\n // Defina a posição da dica de ferramenta na caixa de seleção de alternar tudo.\n @Input() toggleAllCheckboxTooltipPosition: 'left' | 'right' | 'above' | 'below' | 'before' | 'after' = 'below';\n\n // Mostrar/ocultar o botão limpar pesquisa da entrada de pesquisa\n @Input() hideClearSearchButton: boolean = false;\n\n /**\n * Sempre restaure as opções selecionadas na seleção Altere para o modo multi (por exemplo, para carregamento lento/rolagem infinita).\n * O padrão é falso, portanto, as opções selecionadas são restauradas apenas enquanto a filtragem está ativa.\n */\n @Input() alwaysRestoreSelectedOptionsMulti: boolean = false;\n\n // Emissor de saída para enviar ao componente pai com a alternância de todos os booleanos\n @Output() toggleAll: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() toggleAllIndeterminate: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n // Referência ao campo de entrada de pesquisa\n @ViewChild('searchSelectInput', { read: ElementRef, static: true }) searchSelectInput: ElementRef;\n\n // Referência ao campo de entrada de pesquisa\n @ViewChild('innerSelectSearch', { read: ElementRef, static: true }) innerSelectSearch: ElementRef;\n\n // Referência ao ícone claro de entrada de pesquisa personalizada\n @ContentChild(SelectSearchClearDirective, { static: false }) clearIcon: SelectSearchClearDirective;\n\n // Referência ao elemento personalizado sem entradas encontradas\n @ContentChild(SelectNoEntriesFoundDirective, { static: false }) noEntriesFound: SelectNoEntriesFoundDirective;\n private _lastExternalInputValue: string;\n public _options$: BehaviorSubject<QueryList<MatOption>> = new BehaviorSubject<QueryList<MatOption>>(null);\n\n private optionsList$: Observable<MatOption[]> = this._options$.pipe(\n switchMap((_options: QueryList<MatOption>): Observable<any> => _options\n ? _options.changes.pipe(\n map((options: any): any => options.toArray()),\n startWith<MatOption[]>(_options.toArray()),)\n : of(null)\n )\n );\n\n private optionsLength$: Observable<number> = this.optionsList$.pipe(\n map((options: MatOption[]): number => options ? options.length : 0)\n );\n\n // Valores previamente selecionados ao usar <mat-select [multiple]=\"true\">\n private previousSelectedValues: any[];\n\n public _formControl: FormControl = new FormControl('');\n\n // Se deve mostrar a mensagem sem entradas encontradas\n public _showNoEntriesFound$: Observable<boolean> = combineLatest([\n this._formControl.valueChanges,\n this.optionsLength$\n ]).pipe(\n map(([value, optionsLength]: [any, number]): boolean => this.noEntriesFoundLabel && value\n && optionsLength === this.getOptionsLengthOffset())\n );\n\n // Subject emitido quando o componente foi destruído\n private _onDestroy: Subject<void> = new Subject<void>();\n\n // Referência ao descendente ativo para suporte ARIA.\n private activeDescendant: HTMLElement;\n\n private applyDefaultOptions(defaultOptions: ItssSelectSearchOptions): void {\n if (!defaultOptions) {\n return;\n }\n\n for (const key of configurableDefaultOptions) {\n if (defaultOptions.hasOwnProperty(key)) {\n (this[key] as any) = defaultOptions[key];\n }\n }\n }\n\n ngOnInit(): void {\n // Definir classe de opção mat personalizada se o componente foi colocado dentro de uma opção mat\n if (this.matOption) {\n this.matOption.disabled = true;\n this.matOption._getHostElement().classList.add('contains-mat-select-search');\n this.matOption._getHostElement().setAttribute('aria-hidden', 'true');\n } else {\n console.error('<itss-input-search> deve ser colocado dentro de um elemento <mat-option>');\n }\n\n // Quando o painel suspenso de seleção é aberto ou fechado\n this.matSelect.openedChange\n .pipe(\n delay(1),\n takeUntil(this._onDestroy)\n )\n .subscribe((opened: boolean): void => {\n if (opened) {\n this.updateInputWidth();\n\n // Focar o campo de pesquisa ao abrir\n if (!this.disableInitialFocus) {\n this._focus();\n }\n } else {\n // Limpá-lo ao fechar\n if (this.clearSearchInput) {\n this._reset();\n }\n }\n });\n\n // Definir o primeiro item ativo após as opções alteradas\n this.matSelect.openedChange\n .pipe(\n take(1),\n switchMap((): Observable<any> => {\n this._options = this.matSelect.options;\n\n // Variável de fechamento para rastrear a primeira opção mais recente.\n // Para evitar que a lista role para o topo quando as opções são adicionadas ao final da lista\n // (por exemplo: rolagem infinita), comparamos apenas as alterações nas primeiras opções para\n // determinar se devemos definir o primeiro item como ativo. Isso evita a rolagem desnecessária\n // para o topo da lista quando as opções são anexadas, mas permite que o primeiro item da lista\n // seja definido como ativo por padrão quando não há seleção ativa.\n let previousFirstOption: MatOption = this._options.toArray()[this.getOptionsLengthOffset()];\n\n return this._options.changes\n .pipe(\n tap((): void => {\n // Evitar o erro \"expression has been changed\"\n setTimeout((): void => {\n // Converter a QueryList em uma matriz\n const options: MatOption[] = this._options.toArray();\n\n // O verdadeiro primeiro item é compensado por 1\n const currentFirstOption: MatOption = options[this.getOptionsLengthOffset()];\n\n const keyManager: ActiveDescendantKeyManager<MatOption> = this.matSelect._keyManager;\n if (keyManager && this.matSelect.panelOpen) {\n\n // Definir primeiro item ativo e largura de entrada\n\n // Verifique se a primeira opção nessas alterações é diferente da anterior.\n const firstOptionIsChanged: boolean = !this.matSelect.compareWith(previousFirstOption, currentFirstOption);\n\n // CASO: A primeira opção é diferente agora.\n // Indica que devemos defini-lo como ativo e rolar para o topo.\n if (firstOptionIsChanged\n || !keyManager.activeItem\n || !options.find((option: MatOption): boolean => this.matSelect.compareWith(option, keyManager.activeItem))) {\n keyManager.setFirstItemActive();\n }\n\n // Aguarde as alterações na largura do painel\n setTimeout((): void => {\n this.updateInputWidth();\n });\n }\n\n // Atualize nossa referência\n previousFirstOption = currentFirstOption;\n });\n })\n );\n })\n )\n .pipe(takeUntil(this._onDestroy))\n .subscribe();\n\n // Adicione ou remova a classe css dependendo se deseja mostrar a mensagem sem entradas encontradas\n // obs: isso é hacky\n this._showNoEntriesFound$.pipe(\n takeUntil(this._onDestroy)\n ).subscribe((showNoEntriesFound: boolean): void => {\n // Definir nenhuma classe de entrada encontrada na mat-option\n if (this.matOption) {\n if (showNoEntriesFound) {\n this.matOption._getHostElement().classList.add('mat-select-search-no-entries-found');\n } else {\n this.matOption._getHostElement().classList.remove('mat-select-search-no-entries-found');\n }\n }\n });\n\n // Redimensione a largura de entrada quando a viewport for redimensionada,\n // ou seja, a largura do acionador pode ser redimensionada.\n this._viewportRuler.change()\n .pipe(takeUntil(this._onDestroy))\n .subscribe((): void => {\n if (this.matSelect.panelOpen) {\n this.updateInputWidth();\n }\n });\n\n this.initMultipleHandling();\n\n this.optionsList$.pipe(\n takeUntil(this._onDestroy)\n ).subscribe((): void => {\n // Atualizar visualização quando as opções disponíveis mudarem\n this.changeDetectorRef.markForCheck();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.searching) {\n this._formControl.disable();\n } else {\n this._formControl.enable();\n this._focus();\n }\n }\n\n ngOnDestroy(): void {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n onTouched: Function = (_: any): void => { };\n\n _isToggleAllCheckboxVisible(): boolean {\n return this.matSelect.multiple && this.showToggleAllCheckbox;\n }\n\n /**\n * Manipula o evento de tecla pressionada com MatSelect.\n * Permite, por ex. selecionando com a tecla enter, navegando com as teclas de seta, etc.\n * @param event\n */\n _handleKeydown(event: KeyboardEvent): void {\n // Evite a propagação de todos os caracteres alfanuméricos para evitar problemas de seleção\n if ((event.key && event.key.length === 1) ||\n (event.keyCode >= A && event.keyCode <= Z) ||\n (event.keyCode >= ZERO && event.keyCode <= NINE) ||\n (event.keyCode === SPACE)\n || (this.preventHomeEndKeyPropagation && (event.keyCode === HOME || event.keyCode === END))\n ) {\n event.stopPropagation();\n }\n\n if (this.matSelect.multiple && event.key && event.keyCode === ENTER) {\n // Recupere o foco após a seleção múltipla, para que possamos digitar ainda mais\n setTimeout((): void => this._focus());\n }\n\n // Caso especial, se clicar em Escape, se a entrada estiver vazia, feche o menu suspenso, caso contrário, esvazie o campo de pesquisa\n if (this.enableClearOnEscapePressed === true && event.keyCode === ESCAPE && this.value) {\n this._reset(true);\n event.stopPropagation();\n }\n }\n\n /**\n * Manipula o evento de ativação de chave com MatSelect.\n * Permite, por ex. o anúncio do Descendente atualmente ativo por leitores de tela.\n */\n _handleKeyup(event: KeyboardEvent): void {\n if (event.keyCode === UP_ARROW || event.keyCode === DOWN_ARROW) {\n const ariaActiveDescendantId: string = this.matSelect._getAriaActiveDescendant();\n const index: number = this._options.toArray().findIndex((item: MatOption): boolean => item.id === ariaActiveDescendantId);\n if (index !== -1) {\n this.unselectActiveDescendant();\n this.activeDescendant = this._options.toArray()[index]._getHostElement();\n this.activeDescendant.setAttribute('aria-selected', 'true');\n this.searchSelectInput.nativeElement.setAttribute('aria-activedescendant', ariaActiveDescendantId);\n }\n }\n }\n\n writeValue(value: string): void {\n this._lastExternalInputValue = value;\n this._formControl.setValue(value);\n this.changeDetectorRef.markForCheck();\n }\n\n onBlur(): void {\n this.unselectActiveDescendant();\n this.onTouched();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this._formControl.valueChanges.pipe(\n filter((value: any): boolean => value !== this._lastExternalInputValue),\n tap((): any => this._lastExternalInputValue = undefined),\n takeUntil(this._onDestroy)\n ).subscribe(fn);\n }\n\n registerOnTouched(fn: Function): void {\n this.onTouched = fn;\n }\n\n /**\n * Focaliza o campo de entrada de pesquisa\n */\n public _focus(): void {\n if (!this.searchSelectInput || !this.matSelect.panel) {\n return;\n }\n // salve e restaure o scrollTop do painel, pois será redefinido por focus ()\n // obs: isso é hacky\n const panel: any = this.matSelect.panel.nativeElement;\n const scrollTop: any = panel.scrollTop;\n\n // Seta o foco\n this.searchSelectInput.nativeElement.focus();\n\n panel.scrollTop = scrollTop;\n }\n\n /**\n * Redefine o valor de pesquisa atual\n * @param focus se deve focar após a redefinição\n */\n public _reset(focus?: boolean): void {\n this._formControl.setValue('');\n if (focus) {\n this._focus();\n }\n }\n\n /**\n * Inicializa a manipulação <mat-select [multiple]=\"true\">\n * Nota: para melhorar este código, mat-select deve ser estendido para permitir desabilitar a redefinição da seleção durante a filtragem.\n */\n private initMultipleHandling(): void {\n if (!this.matSelect.ngControl) {\n if (this.matSelect.multiple) {\n // nota: o acesso a matSelect.ngControl (em vez de matSelect.value / matSelect.valueChanges)\n // é necessário para funcionar corretamente no modo de seleção múltipla.\n console.error('o mat-select contendo itss-input-search deve ter uma diretiva ngModel ou formControl quando multiple=true');\n }\n return;\n }\n // Se <mat-select [multiple]=\"true\">\n // armazenar valores previamente selecionados e restaurá-los quando forem desmarcados\n // porque a opção não está disponível enquanto estamos filtrando\n this.previousSelectedValues = this.matSelect.ngControl.value;\n\n this.matSelect.ngControl.valueChanges\n .pipe(takeUntil(this._onDestroy))\n .subscribe((values: any): void => {\n let restoreSelectedValues: boolean = false;\n\n if (this.matSelect.multiple) {\n if ((this.alwaysRestoreSelectedOptionsMulti || (this._formControl.value && this._formControl.value.length))\n && this.previousSelectedValues && Array.isArray(this.previousSelectedValues)) {\n\n if (!values || !Array.isArray(values)) {\n values = [];\n }\n\n const optionValues: any[] = this.matSelect.options.map((option: MatOption): any => option.value);\n\n this.previousSelectedValues.forEach((previousValue: any): void => {\n if (!values.some((v: any): boolean => this.matSelect.compareWith(v, previousValue))\n && !optionValues.some((v: any): boolean => this.matSelect.compareWith(v, previousValue))) {\n // Se um valor que foi selecionado antes for desmarcado e não encontrado nas opções, ele foi desmarcado\n // devido à filtragem, então restauramos.\n values.push(previousValue);\n restoreSelectedValues = true;\n }\n });\n }\n }\n this.previousSelectedValues = values;\n\n if (restoreSelectedValues) {\n this.matSelect._onChange(values);\n }\n });\n }\n\n /**\n * Defina a largura do innerSelectSearch para ajustar até mesmo as barras de rolagem personalizadas\n * E apoiar todos os sistemas de operação\n */\n public updateInputWidth(): void {\n if (!this.innerSelectSearch || !this.innerSelectSearch.nativeElement) {\n return;\n }\n let element: HTMLElement = this.innerSelectSearch.nativeElement;\n let panelElement: HTMLElement;\n while (element = element.parentElement) {\n if (element.classList.contains('mat-select-panel')) {\n panelElement = element;\n break;\n }\n }\n if (panelElement) {\n this.innerSelectSearch.nativeElement.style.width = panelElement.clientWidth + 'px';\n }\n }\n\n /**\n * Determine o deslocamento para o comprimento que pode ser causado pelo matOption opcional usado como uma entrada de pesquisa.\n */\n private getOptionsLengthOffset(): number {\n if (this.matOption) {\n return 1;\n } else {\n return 0;\n }\n }\n\n private unselectActiveDescendant(): void {\n if (this.activeDescendant) {\n this.activeDescendant.removeAttribute('aria-selected');\n }\n this.searchSelectInput.nativeElement.removeAttribute('aria-activedescendant');\n }\n\n\n}\n","import { ObjectUtil } from './object.util';\n\n/** @dynamic */\nexport class ArrayUtil {\n\n public static isEmpty(value: Object[]): boolean {\n return ObjectUtil.isNull(value) || value.length === 0;\n }\n\n public static clone(value: Object[]): any[] {\n if (ObjectUtil.isNull(value)) {\n return new Array();\n }\n return [...value];\n }\n\n /**\n * Função para realizar ordenação de Array de objetos\n * @param propertyList Lista de propriedades que serão usadas na ordenação\n * @returns (a,b) => n. Onde n é -1, 0, 1\n */\n public static sortObjects(propertyList: { property: string, isAsc: boolean }[]): () => number {\n const fnGetPropertyValue = function (entity: any, property: string): string {\n if (!ObjectUtil.isNewModel(entity)) {\n const properties: string[] = property.split('.');\n let value: any = entity;\n\n for (let i: number = 0; i < properties.length; i++) {\n value = Reflect.get(value, properties[i]);\n if (value && i === properties.length - 1) {\n return value;\n }\n }\n }\n return '';\n }\n\n const fnSort = function (sortProp: { property: string, isAsc: boolean }[], x: any, y: any): number {\n const typeOrder: string[] = ['boolean', 'number', 'string', 'object', 'undefined']; // Quando os pares não combinam usará esta ordem de precedência\n for (let i: number = 0; i < sortProp.length; i++) {\n let sortFactor: number = 1;\n if (!sortProp[i].isAsc) {\n sortFactor = -1;\n }\n\n let xValue: any = fnGetPropertyValue(x, sortProp[i].property);\n let yValue: any = y[sortProp[i].property];\n const xType: 'string' | 'number' | 'bigint' | 'boolean' | 'symbol' | 'undefined' | 'object' | 'function' = typeof xValue;\n const yType: 'string' | 'number' | 'bigint' | 'boolean' | 'symbol' | 'undefined' | 'object' | 'function' = typeof yValue;\n\n let compareResult: number = 0;\n if (xType === yType) {\n switch (xType) {\n case 'string': {\n compareResult = xValue.localeCompare(yValue);\n break;\n }\n case 'number': {\n compareResult = (xValue === yValue) ? 0 : (xValue < yValue) ? -1 : 1;\n break;\n }\n case 'boolean': {\n compareResult = (xValue === yValue) ? 0 : (xValue === false) ? -1 : 1;\n break;\n }\n case 'object': {\n if (ObjectUtil.isNull(xValue) && ObjectUtil.isNull(yValue)) {\n compareResult = 0;\n } else if (ObjectUtil.isNull(xValue)) {\n compareResult = -1;\n } else if (ObjectUtil.isNull(yValue)) {\n compareResult = 1;\n } else {\n xValue = xValue.toString();\n yValue = yValue.toString();\n compareResult = xValue.localeCompare(yValue);\n }\n break;\n }\n default: {\n // Isso é típico de indefinido, o que acontecerá muito se o nome da propriedade passada for digitado incorretamente, etc.\n // Então, apenas assuma que os pares de itens não podem ser distinguidos e use 0.\n compareResult = 0;\n }\n }\n } else {\n if (ObjectUtil.isNull(xValue) && ObjectUtil.isNull(yValue)) {\n compareResult = 0;\n } else if (ObjectUtil.isNull(xValue)) {\n compareResult = 1; // Ordena NULL para o final\n } else if (ObjectUtil.isNull(yValue)) {\n compareResult = -1; // Ordena NULL para o final\n } else {\n const xValOrder: number = typeOrder.findIndex(t => t === xType);\n const yValOrder: number = typeOrder.findIndex(t => t === yType);\n compareResult = (xValOrder === yValOrder) ? 0 : (xValOrder < yValOrder) ? -1 : 1;\n }\n if (compareResult !== 0) {\n return compareResult; // Uma decisão de classificação definida está disponível, mas IGNORE o fator de classificação! Este caso é precedente\n }\n }\n if (compareResult !== 0) {\n return compareResult * sortFactor; // Uma decisão de classificação definida está disponível\n }\n }\n return 0; // Trate os itens como equivalentes não tendo encontrado uma diferença específica na lista de propriedades de ordenação\n\n };\n\n return fnSort.bind(this, propertyList);\n }\n\n}\n","import { AfterContentChecked, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { MatOption, MatSelect } from '@angular/material';\n\nimport { AbstractModel } from '../../../core/models/abstract.model';\nimport { ArrayUtil } from '../../../core/utils/array.util';\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { StringUtil } from '../../../core/utils/string.util';\n\n@Component({\n selector: 'itss-select-entity',\n templateUrl: './select-entity.component.html',\n styleUrls: ['./select-entity.component.scss']\n})\nexport class SelectEntityComponent<T> implements OnInit, AfterContentChecked, OnChanges {\n\n filteredEntities: any[] = [];\n\n previousSearchValue: string = null;\n\n allSelected: boolean = false;\n\n indeterminateAllSelected: boolean = false;\n\n @ViewChild('select', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @ViewChild('select', { static: false }) private select: MatSelect;\n\n @ViewChild('search', { static: false, read: ElementRef }) search: ElementRef;\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() placeholder: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input() multiple: boolean = false;\n\n @Input() displayCheckboxAll: boolean = false;\n\n @Input() loading: boolean = false;\n\n @Input() showClear: boolean = false;\n\n @Input() upperCase: boolean = false;\n\n @Input() property: string = 'description';\n\n @Input() propertyFn: (obj: any) => any;\n\n @Input() propertyEnum;\n\n @Input() map: (value: any, index?: number, array?: any[]) => boolean;\n\n @Input() nullValue: string;\n\n @Input() valuesExclud: T[] = [];\n\n @Input() entities: T[] = [];\n\n private _modelValue: T;\n @Input() set model(model: T) {\n this._modelValue = model;\n this.modelChange.emit(this._modelValue);\n }\n get model(): T {\n return this._modelValue;\n }\n\n @Output() modelChange: EventEmitter<T> = new EventEmitter<T>();\n @Output() selectionChange: EventEmitter<T> = new EventEmitter<T>();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit(): void { }\n\n ngAfterContentChecked(): void {\n this._changeDetectorRef.detectChanges();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.model && !ObjectUtil.isNull(changes.model.currentValue)) {\n this.filterEntities();\n }\n if (changes.entities && !ObjectUtil.isNull(changes.entities.currentValue)) {\n this.filteredEntities = this.entities;\n this.filterEntities();\n }\n }\n\n filterEntities(): void {\n if (!ObjectUtil.isNewModel(this.model) && !ArrayUtil.isEmpty(this.filteredEntities) && !this.multiple) {\n const entity = this.filteredEntities.find(e => ObjectUtil.equalsByValue(e, this.model));\n if (!ObjectUtil.isNewModel(entity)) {\n this.model = entity;\n }\n }\n }\n\n getPropertyValue(entity: T): string {\n if (!ObjectUtil.isNewModel(entity)) {\n if (!ObjectUtil.isNull(this.propertyFn)) {\n return this.propertyFn(entity);\n }\n return this.getValue(entity, this.property);\n }\n return StringUtil.EMPTY;\n }\n\n getValue(entity: any, property: string): string {\n const properties = property.split('.');\n let value = entity;\n\n for (let i = 0; i < properties.length; i++) {\n value = Reflect.get(value, properties[i]);\n if (value && i === properties.length - 1) {\n if (!ObjectUtil.isNull(this.propertyEnum)) {\n return this.propertyEnum[value];\n }\n return value;\n }\n }\n }\n\n onSearch(valueSearch: string): void {\n if (\n (valueSearch === this.previousSearchValue) ||\n (this.haveSelected() && (valueSearch === this.getPropertyValue(this.model)))\n ) {\n return;\n }\n if (this.upperCase) {\n this.search.nativeElement.value = this.search.nativeElement.value.toUpperCase();\n }\n\n this.previousSearchValue = valueSearch;\n\n this.filteredEntities = this.entities\n .filter(entity => StringUtil.replaceAccents(this.getPropertyValue(entity)).toLowerCase().includes(StringUtil.replaceAccents(valueSearch).toLowerCase()));\n }\n\n haveSelected(): boolean {\n return !ObjectUtil.isNull(this.model);\n }\n\n onSelectionChange(entity: T): void {\n this.selectionChange.emit(entity);\n }\n\n compareFn = (f1: AbstractModel, f2: AbstractModel): boolean => {\n return f1 && f2 && f1.id === f2.id;\n }\n\n resetSearch(): void {\n if (ArrayUtil.isEmpty(this.filteredEntities)) {\n this.search.nativeElement.value = '';\n this.filteredEntities = this.entities;\n }\n }\n\n selectAll(): void {\n this.allSelected = true;\n this.indeterminateAllSelected = false;\n this.toggleAllSelection();\n this._changeDetectorRef.detectChanges();\n }\n\n toggleAllSelection(): void {\n if (!this.disabled) {\n if (this.displayCheckboxAll && this.allSelected && !ObjectUtil.isNull(this.select)) {\n for (let i: number = 0; i < this.select.options.length; i++) {\n const option: MatOption = this.select.options[i];\n if (!ObjectUtil.isNull(option)) {\n option.select();\n }\n }\n } else {\n for (let i: number = 0; i < this.select.options.length; i++) {\n const option: MatOption = this.select.options[i];\n if (!ObjectUtil.isNull(option)) {\n option.deselect();\n }\n }\n }\n\n this.validateIndeterminateAllSelected();\n this._changeDetectorRef.detectChanges();\n }\n }\n\n validateIndeterminateAllSelected(): void {\n if (this.displayCheckboxAll && !ObjectUtil.isNull(this.select)) {\n const lOptions: MatOption[] = this.select.options.filter((item: MatOption) => item.selected);\n this.allSelected = lOptions.length > 0;\n this.indeterminateAllSelected = lOptions.length > 0 && lOptions.length !== this.select.options.length;\n this._changeDetectorRef.detectChanges();\n }\n }\n\n removeOption(): void {\n if (this.multiple) {\n this.allSelected = false;\n this.indeterminateAllSelected = false;\n this.toggleAllSelection();\n } else {\n this.model = null;\n this.onSelectionChange(null);\n }\n\n this._changeDetectorRef.detectChanges();\n }\n\n showClearButton(): boolean {\n return (this.showClear) && (!StringUtil.isEmpty(this.getPropertyValue(this.model))) && (!ObjectUtil.isNull(this.model)) && (!this.disabled) && (!this.loading) && (!ArrayUtil.isEmpty(this.entities));\n }\n\n validKey(option: any): boolean {\n return !ObjectUtil.isNull(this.valuesExclud) ? !this.valuesExclud.some(el => el === option) : true;\n }\n}\n","import { Component, ElementRef, EventEmitter, forwardRef, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ObjectUtil } from '../../../core/utils/object.util';\n\n@Component({\n selector: 'itss-select-enum',\n templateUrl: './select-enum.component.html',\n styleUrls: ['./select-enum.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectEnumComponent),\n multi: true\n }\n ]\n})\nexport class SelectEnumComponent implements ControlValueAccessor, OnInit {\n\n @ViewChild('select', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() placeholder: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input() multiple = false;\n\n @Input() enum;\n\n @Output() selectionChange = new EventEmitter<any>();\n\n @Input('value') val: any;\n\n @Input() loading = false;\n\n @Input() sort: (a: any, b: any) => number;\n\n @Input() valuesExclud: string[];\n\n @Input() nullValue: string;\n\n enumList: any[] = [];\n\n ngOnInit(): void {\n this.enumList = Object.keys(this.enum)\n .map(key => ({ key: key, value: this.enum[key] }))\n .sort(this.sort);\n }\n\n onSelectionChange(entity: any) {\n this.selectionChange.emit(entity);\n }\n\n onChange: any = () => {\n }\n\n onTouch: any = () => {\n }\n\n get value() {\n return this.val;\n }\n\n set value(val) {\n this.val = val;\n this.onChange(val);\n this.onTouch();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n validKey(key: string): boolean {\n return !ObjectUtil.isNull(this.valuesExclud) ? !this.valuesExclud.some(el => el === key) : true;\n }\n\n}\n","import { Component, ElementRef, EventEmitter, forwardRef, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { GIPINgConfig } from '../../api/gipi-ng-config';\n\n@Component({\n selector: 'itss-select-month-period',\n templateUrl: './select-month-period.component.html',\n styleUrls: ['./select-month-period.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectMonthPeriodComponent),\n multi: true\n }\n ],\n host: { 'class': 'itss-element' }\n})\nexport class SelectMonthPeriodComponent implements OnInit {\n\n periodSelected: Date;\n\n @ViewChild('datePeriodDropdown', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() disabled: boolean = false;\n\n @Input() required: boolean = false;\n\n @Input() bootPeriod: Date = new Date();\n\n @Output() dateChange: EventEmitter<Date> = new EventEmitter<Date>();\n\n constructor(private _config: GIPINgConfig) { }\n\n ngOnInit(): void {\n this.periodSelected = new Date(this.bootPeriod);\n }\n\n onClickButtonLeft(): void {\n setTimeout(() => {\n this.periodSelected.setMonth(this.periodSelected.getMonth() - 1);\n this.dateChangeEmit();\n });\n }\n\n onClickButtonRight(): void {\n setTimeout(() => {\n this.periodSelected.setMonth(this.periodSelected.getMonth() + 1);\n this.dateChangeEmit();\n });\n }\n\n dateChangeEmit(): void {\n this.dateChange.emit(this.periodSelected);\n }\n\n getMonthNameByDate(): string {\n return this._config.getTranslation('monthNames')[this.periodSelected.getMonth()];\n }\n\n getFullYearByDate(): string {\n return this.periodSelected.getFullYear().toString();\n }\n\n}\n","import { Component, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'itss-slide-toggle',\n templateUrl: './slide-toggle.component.html',\n styleUrls: ['./slide-toggle.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlideToggleComponent),\n multi: true\n }\n ]\n})\nexport class SlideToggleComponent implements ControlValueAccessor, OnInit {\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() color = 'primary';\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input('value') val: any;\n\n @Output() change = new EventEmitter<any>();\n\n ngOnInit(): void {\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n get value() {\n return this.val;\n }\n\n set value(val) {\n this.val = val;\n this.onChange(val);\n this.onTouch();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CdkStepper } from '@angular/cdk/stepper';\n\n@Component({\n selector: 'itss-stepper',\n templateUrl: './stepper.component.html',\n styleUrls: ['./stepper.component.scss'],\n providers: [{\n provide: CdkStepper,\n useExisting: StepperComponent\n }]\n})\nexport class StepperComponent extends CdkStepper implements OnInit {\n\n @Input() isDisableClick = false;\n\n ngOnInit(): void {\n }\n\n onClick(index: number): void {\n this.selectedIndex = index;\n }\n\n}\n","import {Component, EventEmitter, Input, OnInit, Output, TemplateRef} from '@angular/core';\n\n@Component({\n selector: 'itss-tab',\n templateUrl: './tab.component.html',\n styleUrls: ['./tab.component.scss']\n})\nexport class TabComponent implements OnInit {\n\n @Input() index: number;\n\n @Input() label: string;\n\n @Input() active = false;\n\n @Input() template: TemplateRef<any>;\n\n @Input() closeable = false;\n\n @Input() disabled = false;\n\n @Input() data: any;\n\n @Input() icon: string;\n\n @Output() selectionChange = new EventEmitter<any>();\n\n action: (obj: any) => void;\n\n ngOnInit(): void {\n }\n\n}\n","import {Directive, ViewContainerRef} from '@angular/core';\n\n@Directive({\n selector: '[dynamicTab]'\n})\nexport class DynamicTabDirective {\n\n constructor(public viewContainer: ViewContainerRef) {\n }\n\n}\n","import {EventEmitter, TemplateRef} from '@angular/core';\nimport {AbstractDTO} from './abstract.dto';\nimport {AbstractModel} from '../abstract.model';\n\nexport class TabDTO extends AbstractDTO {\n\n label: string;\n\n active = false;\n\n template: TemplateRef<any>;\n\n closeable = false;\n\n disabled = false;\n\n data: any;\n\n icon: string;\n\n action: (obj: any) => void;\n\n}\n","import {AfterContentInit, Component, ComponentFactoryResolver, ContentChildren, OnInit, QueryList, ViewChild} from '@angular/core';\nimport {TabComponent} from '../tab/tab.component';\nimport {DynamicTabDirective} from '../../directives/dynamic-tab.directive';\nimport {TabDTO} from '../../../core/models/dto/tab.dto';\n\n@Component({\n selector: 'itss-tab-group',\n templateUrl: './tab-group.component.html',\n styleUrls: ['./tab-group.component.scss']\n})\nexport class TabGroupComponent implements AfterContentInit, OnInit {\n\n dynamicTabs: TabComponent[] = [];\n\n @ContentChildren(TabComponent) tabs: QueryList<TabComponent>;\n\n @ViewChild(DynamicTabDirective, {static: false}) dynamicTabPlaceholder: DynamicTabDirective;\n\n constructor(private _componentFactoryResolver: ComponentFactoryResolver) {\n }\n\n ngOnInit(): void {\n }\n\n ngAfterContentInit() {\n const activeTabs = this.tabs.filter(tab => tab.active);\n\n if (activeTabs.length === 0 && this.tabs.length > 0) {\n this.selectTab(this.tabs.first);\n }\n }\n\n openTab(label: string, template, data, closeable = false, disabled = false, action?: (obj: any) => void): void {\n const tab = new TabDTO();\n tab.label = label;\n tab.template = template;\n tab.data = data;\n tab.closeable = closeable;\n tab.disabled = disabled;\n tab.action = action;\n this.openTabs(Array(tab));\n }\n\n openTabs(tabs: TabDTO[]): void {\n const tabsComponent = tabs.map(tab => this.getTabComponent(tab.label, tab.template, tab.data, tab.closeable, tab.disabled, tab.action));\n this.dynamicTabs.push(...tabsComponent);\n this.selectTab(this.dynamicTabs[0]);\n }\n\n getTabComponent(label: string, template, data, closeable = false, disabled = false, action?: (obj: any) => void): TabComponent {\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(TabComponent);\n const componentRef = this.dynamicTabPlaceholder.viewContainer.createComponent(componentFactory);\n\n const instance = componentRef.instance;\n instance.label = label;\n instance.template = template;\n instance.data = data;\n instance.closeable = closeable;\n instance.disabled = disabled;\n instance.action = action;\n\n return componentRef.instance;\n }\n\n selectTab(tab: TabComponent) {\n this.tabs.toArray().forEach(t => (t.active = false));\n this.dynamicTabs.forEach(t => (t.active = false));\n tab.active = true;\n tab.selectionChange.emit();\n if (tab.action) {\n tab.action(tab.data);\n }\n }\n\n closeTab(tab: TabComponent) {\n const index = this.dynamicTabs.indexOf(tab);\n this.dynamicTabs.splice(index, 1);\n\n const viewContainerRef = this.dynamicTabPlaceholder.viewContainer;\n viewContainerRef.remove(index);\n\n if (this.tabs.length > 0) {\n this.selectTab(this.tabs.first);\n }\n }\n\n closeActiveTab() {\n const activeTabs = this.dynamicTabs.filter(tab => tab.active);\n if (activeTabs.length > 0) {\n this.closeTab(activeTabs[0]);\n }\n }\n\n closeAllTabs() {\n const tabs = Object.assign([], this.dynamicTabs);\n if (tabs.length > 0) {\n tabs.forEach(tab => this.closeTab(tab));\n }\n }\n\n nextTab() {\n const currentTab = this.tabs.toArray().find(tab => tab.active);\n const nextTab = this.tabs.toArray()[this.tabs.toArray().indexOf(currentTab) + 1];\n if (nextTab != null) {\n this.tabs.toArray().forEach(t => (t.active = false));\n this.dynamicTabs.forEach(t => (t.active = false));\n nextTab.active = true;\n nextTab.selectionChange.emit();\n }\n }\n\n previousTab() {\n const currentTab = this.tabs.toArray().find(tab => tab.active);\n const previousTab = this.tabs.toArray()[this.tabs.toArray().indexOf(currentTab) - 1];\n if (previousTab != null) {\n this.tabs.toArray().forEach(t => (t.active = false));\n this.dynamicTabs.forEach(t => (t.active = false));\n previousTab.active = true;\n previousTab.selectionChange.emit();\n }\n }\n\n}\n\n","/**\n * Throttle a function\n */\nexport function throttle(func: any, wait: number, options?: any): (this: any) => any {\n options = options || {};\n let context: any;\n let args: any;\n let result: any;\n let timeout: any = null;\n let previous: number = 0;\n\n function later(): void {\n previous = options.leading === false ? 0 : +new Date();\n timeout = null;\n result = func.apply(context, args);\n }\n\n return function (this: any): any {\n const now: number = +new Date();\n\n if (!previous && options.leading === false) {\n previous = now;\n }\n\n const remaining: number = wait - (now - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n}\n\n/**\n * Throttle decorator\n *\n * class MyClass {\n * throttleable(10)\n * myFn() { ... }\n * }\n */\nexport function throttleable(duration: number, options?: any): (target: any, key: PropertyKey, descriptor: PropertyDescriptor) => { configurable: boolean; enumerable: boolean; get: () => any; } {\n return function innerDecorator(target: any, key: PropertyKey, descriptor: PropertyDescriptor) {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter(): any {\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: throttle(descriptor.value, duration, options)\n });\n\n return this[key];\n }\n };\n };\n}\n","import { Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\n\nimport { throttle } from '../../api/throttle';\n\nenum ScrollDirection {\n UP = 'up',\n DOWN = 'down'\n}\n\nenum ScrollListener {\n HOST = 'scroll',\n WINDOW = 'window:scroll'\n}\n\n@Component({\n selector: 'itss-table-scrolled',\n templateUrl: './table-scrolled.component.html',\n styleUrls: ['./table-scrolled.component.scss']\n})\nexport class TableScrolledComponent implements OnInit, OnChanges {\n\n private _element: Element;\n\n private _window: Element;\n\n public scrollTop: number = 0;\n\n @Input() more: boolean = true;\n\n @Input() scrollDelay: number = 500;\n\n @Input() scrollOffset: number = 1000;\n\n @Output() scrolled: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @HostListener(ScrollListener.HOST) _scroll: Function;\n\n @HostListener(ScrollListener.WINDOW) _windowScroll: Function;\n\n constructor(private _elementRef: ElementRef) {\n this._element = this._elementRef.nativeElement;\n this._window = document.documentElement as Element;\n }\n\n ngOnInit(): void {\n this.setThrottle();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.scrollDelay) {\n this.setThrottle();\n }\n }\n\n setThrottle(): void {\n this._scroll = this._windowScroll = throttle(this.handleScroll, this.scrollDelay);\n }\n\n getListener(): ScrollListener {\n if (this._elementRef.nativeElement.clientHeight === this._elementRef.nativeElement.scrollHeight) {\n return ScrollListener.WINDOW;\n } else {\n return ScrollListener.HOST;\n }\n }\n\n roundTo(from: number, to: number = this.scrollOffset): number {\n return (Math.floor(from / to) * to);\n }\n\n getScrollDirection(st: number): ScrollDirection {\n if (this.scrollTop <= st) {\n return ScrollDirection.DOWN;\n } else {\n return ScrollDirection.UP;\n }\n }\n\n canScroll(element: Element): boolean {\n const scrolled: boolean = this.more && (this.getScrollDirection(element.scrollTop) === ScrollDirection.DOWN) && (this.roundTo(element.clientHeight) === this.roundTo(element.scrollHeight - element.scrollTop));\n this.scrollTop = element.scrollTop;\n return scrolled;\n }\n\n handleScroll(): void {\n if (this.getListener() === ScrollListener.HOST) {\n this.scrolled.emit(this.canScroll(this._element));\n } else {\n this.scrolled.emit(this.canScroll(this._window));\n }\n }\n\n}\n","import { AbstractDTO } from './abstract.dto';\n\nexport class TableGroupHeaderDTO extends AbstractDTO {\n\n columnData: any;\n\n childrenGroup: any[];\n\n totalCount: number;\n\n constructor(columnData?: any, childrenGroup?: any[], totalCount?: number) {\n super();\n this.columnData = columnData;\n this.childrenGroup = childrenGroup;\n this.totalCount = totalCount;\n }\n\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { AfterViewInit, Component, ContentChild, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';\nimport { MatHeaderRowDef, MatPaginator, MatSort, MatTableDataSource, Sort, SortDirection } from '@angular/material';\nimport { Observable, of } from 'rxjs';\nimport { delay } from 'rxjs/operators';\n\nimport { ArrayUtil, ObjectUtil, StringUtil } from '../../../core';\nimport { TableColumnDTO } from '../../../core/models/dto/table-column.dto';\nimport { TableGroupHeaderDTO } from '../../../core/models/dto/table-group-header.dto';\nimport { TablePageEventDTO } from '../../../core/models/dto/table-page-event.dto';\n\n\n@Component({\n selector: 'itss-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({ height: '0px', minHeight: '0', display: 'none' })),\n state('expanded', style({ height: '*' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n})\nexport class TableComponent<T> implements AfterViewInit, OnChanges, OnInit {\n\n private _expandedElements: any[] = [];\n\n public _scrollHeightCalc: number = 410;\n public _isPopoverHover: any = null;\n public _contextPopover: T;\n public _expandedElement: any;\n public _displayedColumns: any[] = [];\n public _dataSource: MatTableDataSource<T | TableGroupHeaderDTO>;\n\n @ViewChild(MatSort, { static: true }) matSort: MatSort;\n @ViewChild(MatPaginator, { static: true }) matPaginator: MatPaginator;\n @ViewChild('frontendPaginator', { static: false }) matFrontendPaginator: MatPaginator;\n @ViewChild('backendPaginator', { static: false }) matBackendPaginator: MatPaginator;\n\n @ViewChild('matHeaderRow', { static: true }) private _matHeaderRowRef: TemplateRef<MatHeaderRowDef>;\n @ViewChild('frontendPaginator', { static: true }) private _matFrontendPaginatorRowRef: TemplateRef<any>;\n @ViewChild('backendPaginator', { static: true }) private _matBackendPaginatorRowRef: TemplateRef<any>;\n\n @ContentChild('actions', { static: false }) actionsRef: TemplateRef<any>;\n @ContentChild('actionsPopover', { static: false }) actionsPopoverRef: TemplateRef<any>;\n @ContentChild('footer', { static: false }) footerRef: TemplateRef<any>;\n @ContentChild('expanded', { static: false }) expandedRef: TemplateRef<any>;\n @ContentChild('groupHeader', { static: false }) groupHeaderRef: TemplateRef<any>;\n @ContentChild('groupFooter', { static: false }) groupFooterRef: TemplateRef<any>;\n\n @Input() shadow: boolean = false;\n\n @Input() columns: TableColumnDTO[] = [];\n\n private _dataValue: T[];\n @Input() get data(): T[] {\n return this._dataValue;\n }\n set data(data: T[]) {\n this._dataValue = data;\n this.dataChange.emit(this._dataValue);\n }\n\n @Input() paginator: boolean = false;\n\n @Input() backendPagination: boolean = true;\n\n @Input() paginatorPageIndex: number = 0;\n\n @Input() paginatorLength: number = 0;\n\n @Input() paginatorPageSize: number = 10;\n\n @Input() paginatorPageSizeOptions: number[] = [10, 20, 30];\n\n @Input() showPageSizeOptions: boolean = false;\n\n @Input() loading: boolean = false;\n\n @Input() expandable: boolean = false;\n\n @Input() showHeader: boolean = true;\n\n @Input() columnInitial: number;\n\n @Input() columnFinal: number;\n\n @Input() headerSticky: boolean = false;\n\n @Input() groupByColumn: string;\n\n @Input() groupHeaderSticky: boolean = false;\n\n @Input() groupStartExpanded: boolean = false;\n\n @Input() highlightRowFn: (row: T | TableGroupHeaderDTO) => boolean;\n\n @Input() infiniteScroll: boolean = false;\n\n @Input() scrollDelay: number = 1000;\n\n @Input() scrollOffset: number = 1000;\n\n @Input() scrollHeigth: number;\n\n @Input() isFiltering: boolean = false;\n\n @Input('columnExpandableFixed') showColumnExpandableFixed: boolean = false;\n\n @Input() expandableOneRow: boolean = false;\n\n @Input() ignoreChildrenExpandRow: boolean = false;\n\n @Input() clearSort: boolean = false;\n @Input() sortActive: string = '';\n @Input() sortDirection: SortDirection = 'asc';\n\n @Output() rowExpandedChange: EventEmitter<T> = new EventEmitter<T>(true);\n @Output() dataChange: EventEmitter<T[]> = new EventEmitter<T[]>(true);\n @Output() page: EventEmitter<TablePageEventDTO> = new EventEmitter();\n @Output() rowHover: EventEmitter<any> = new EventEmitter();\n\n public get matTableHeigth(): Observable<string> {\n let headerRowHeight: number;\n if (!ObjectUtil.isNull(this._matHeaderRowRef)) {\n headerRowHeight = (this._matHeaderRowRef.elementRef.nativeElement as HTMLElement).clientHeight;\n }\n\n let paginatorRowHeight: number;\n const paginatorRef = this.backendPagination ? this._matBackendPaginatorRowRef : this._matFrontendPaginatorRowRef;\n if (!ObjectUtil.isNull(paginatorRef)) {\n paginatorRowHeight = (paginatorRef.elementRef.nativeElement as HTMLElement).clientHeight;\n }\n\n const matHeaderwHeight: number = headerRowHeight || 60;\n const matPaginatorHeight: number = paginatorRowHeight || 57;\n\n const pageSize: number = this.paginatorPageSize && (this.paginatorPageSize <= 10) ? this.paginatorPageSize : 10;\n const setHeigth: boolean = this.headerSticky && (this.data.length > pageSize);\n\n return of(setHeigth ? `${((57 * pageSize) + matHeaderwHeight + matPaginatorHeight)}px` : 'auto');\n }\n\n constructor() { }\n\n ngOnInit(): void { }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (!ObjectUtil.isNull(this._dataSource)) {\n this._dataSource.sort = this.matSort;\n\n if (this.paginator && !this.backendPagination && !this.infiniteScroll) {\n this._dataSource.paginator = this.matFrontendPaginator;\n }\n }\n\n if (this.paginator && (this.backendPagination || this.infiniteScroll)) {\n this.onPage({\n pageSize: this.paginatorPageSize,\n paginatorPageSizeOptions: this.paginatorPageSizeOptions,\n pageIndex: 0,\n length: 0,\n previousPageIndex: 0\n });\n }\n\n if (!ObjectUtil.isNull(this.actionsPopoverRef)) {\n this._contextPopover = null;\n this._isPopoverHover = false;\n this.closePopover(0);\n\n const popover: HTMLElement = document.getElementById('table-popover');\n if (!ObjectUtil.isNull(popover)) {\n popover.style.visibility = 'hidden';\n }\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n setTimeout(() => {\n if (changes.data) {\n this._createDataSource();\n }\n });\n }\n\n private _createDataSource(): void {\n let columns: string[] = this.columns.filter(c => c.visible).map(c => c.property);\n if (!ObjectUtil.isNull(this.expandedRef)) {\n columns = ['expandedColumn', ...columns];\n }\n if (!ObjectUtil.isNull(this.actionsRef)) {\n columns = [...columns, 'actionsColumn'];\n }\n this._displayedColumns = columns;\n\n if (this.infiniteScroll) {\n let dataAll: T[] = [];\n\n if (!this.isFiltering) {\n if (!ObjectUtil.isNull(this._dataSource)) {\n dataAll = ArrayUtil.clone(this._dataSource.data);\n }\n }\n\n if (!ArrayUtil.isEmpty(this.data)) {\n dataAll.push(...this.data);\n }\n\n this._dataSource = new MatTableDataSource([]);\n if (!StringUtil.isEmpty(this.groupByColumn) && !ObjectUtil.isNull(this.groupHeaderRef)) {\n this._dataSource.data = this.genereteGroupsByColumn(dataAll);\n } else {\n this._dataSource.data = dataAll;\n }\n\n this.data = dataAll;\n this.dataChange.emit(this.data);\n this.calcScrollHeight();\n } else {\n this._dataSource = new MatTableDataSource([]);\n if (!StringUtil.isEmpty(this.groupByColumn) && !ObjectUtil.isNull(this.groupHeaderRef)) {\n this._dataSource.data = this.genereteGroupsByColumn(this.data);\n } else {\n this._dataSource.data = this.data;\n }\n }\n\n if (!ArrayUtil.isEmpty(this._dataSource.data)) {\n this._dataSource.sort = this.matSort;\n this.setSortingDataAccessor();\n }\n\n if (this.paginator && !this.backendPagination) {\n this._dataSource.paginator = this.matFrontendPaginator;\n }\n\n if (!this.groupStartExpanded && (this.groupHeaderRef || (this.expandable && this.expandedRef)) && !ArrayUtil.isEmpty(this._dataSource.data)) {\n this._dataSource.data.forEach(row => this.addCollapse(row));\n }\n }\n\n calcScrollHeight(): void {\n if ((this._dataSource && (this._dataSource.data.length > 0)) && (Math.floor(this._scrollHeightCalc) <= 700)) {\n this._scrollHeightCalc = 130 + (this._dataSource.data.length * 48);\n }\n }\n\n onPage(pageEvent: TablePageEventDTO): void {\n this.paginatorPageSize = pageEvent.pageSize;\n pageEvent.paginatorPageSizeOptions = ArrayUtil.isEmpty(pageEvent.paginatorPageSizeOptions) ? this.paginatorPageSizeOptions : pageEvent.paginatorPageSizeOptions;\n this.page.emit(pageEvent);\n }\n\n isExpansed(element: any): boolean {\n return this._expandedElements.filter(e => ObjectUtil.equals(e, element)).length > 0;\n }\n\n removeCollapse(element: any): void {\n if (this.expandableOneRow) {\n this._dataSource.data.forEach(row => this.addCollapse(row));\n }\n\n const expandedElementsAux: any[] = ArrayUtil.clone(this._expandedElements);\n expandedElementsAux.splice(this._expandedElements.indexOf(element), 1);\n this._expandedElements = ArrayUtil.clone(expandedElementsAux);\n }\n\n addCollapse(element: any): void {\n const collapsedElement: boolean = this._expandedElements.filter(e => ObjectUtil.equals(e, element)).length > 0;\n if (!collapsedElement) {\n this._expandedElements.push(element);\n }\n }\n\n rowExpandedChangeEmit(element: any): void {\n this.rowExpandedChange.emit(element);\n }\n\n sortData(sort: Sort): void {\n if (this.infiniteScroll) {\n this.data = [];\n this.dataChange.emit([]);\n this._dataSource = new MatTableDataSource([]);\n this.calcScrollHeight();\n }\n\n this.onPage({\n pageSize: this.paginatorPageSize,\n pageIndex: 0,\n length: 0,\n previousPageIndex: 0,\n paginatorPageSizeOptions: this.paginatorPageSizeOptions,\n sort: sort\n });\n }\n\n showPopover(event: MouseEvent, data: any): void {\n const popover: HTMLElement = document.getElementById('table-popover');\n if (!ObjectUtil.isNull(popover)) {\n popover.style.visibility = 'hidden';\n\n if (!this.loading) {\n const domRectPopover = popover.getBoundingClientRect();\n const domRectRow = (event.currentTarget as HTMLElement).getBoundingClientRect();\n const cells = (event.currentTarget as HTMLTableRowElement).children;\n\n if (domRectPopover && domRectRow) {\n popover.style.visibility = 'visible';\n popover.style.top = `${(domRectRow.top + domRectRow.height) - 1}px`;\n\n let startPosition: number = 0;\n let endPosition: number = 0;\n\n if (this.columnInitial && (this.columnInitial >= 0)) {\n if (!cells[this.columnInitial]) {\n throw new Error('Initial column undefined or null');\n }\n startPosition = cells[this.columnInitial].getBoundingClientRect().left;\n } else {\n startPosition = domRectRow.left;\n }\n\n if (this.columnFinal && (this.columnFinal >= 0)) {\n if (!cells[this.columnFinal]) {\n throw new Error('Final column undefined or null');\n }\n endPosition = cells[this.columnFinal].getBoundingClientRect().left - domRectPopover.width;\n } else {\n endPosition = domRectRow.right - domRectPopover.width;\n }\n\n setTimeout(() => {\n if (event.clientX > startPosition + 15 && event.clientX < endPosition) {\n popover.style.left = `${event.clientX - 15}px`;\n } else if (event.clientX <= startPosition) {\n popover.style.left = `${startPosition}px`;\n } else if (event.clientX >= endPosition) {\n popover.style.left = `${endPosition}px`;\n }\n });\n }\n }\n }\n this.rowHover.emit(data);\n this._contextPopover = data;\n }\n\n closePopover(time: number): void {\n of(null).pipe(delay(time)).subscribe(() => {\n if (!ObjectUtil.isNull(this._isPopoverHover) && !this._isPopoverHover) {\n if (!ObjectUtil.isNull(this._isPopoverHover) && !ObjectUtil.isNull(this.actionsPopoverRef)) {\n const popover: HTMLElement = document.getElementById('table-popover');\n if (!ObjectUtil.isNull(popover)) {\n popover.style.visibility = 'hidden';\n }\n }\n this._contextPopover = null;\n this._isPopoverHover = null;\n }\n });\n }\n\n setSortingDataAccessor(): void {\n this._dataSource.sortingDataAccessor = (data: any, sortHeaderId: string): string => {\n if (typeof data[sortHeaderId] === 'string') {\n return data[sortHeaderId].toLowerCase();\n }\n return data[sortHeaderId];\n };\n }\n\n // group header\n genereteGroupsByColumn(data: any[]): TableGroupHeaderDTO[] {\n const groups: {} = data.reduce((group, row) => {\n const dataColumn: string = row[this.groupByColumn].toString();\n if (!group[dataColumn]) {\n group[dataColumn] = [];\n }\n group[dataColumn].push(row);\n return group;\n }, {});\n\n return Object.keys(groups).map(groupValue => {\n return new TableGroupHeaderDTO(groupValue, groups[groupValue], groups[groupValue].length);\n });\n }\n\n getHighlightRow(row: T | TableGroupHeaderDTO): boolean {\n if (!ObjectUtil.isNull(row)) {\n if (!ObjectUtil.isNull(this.highlightRowFn)) {\n return this.highlightRowFn(row);\n }\n return false;\n }\n return false;\n }\n\n getIndexRow(row: T | TableGroupHeaderDTO): number {\n if (!ObjectUtil.isNull(this._dataSource) && !ArrayUtil.isEmpty(this._dataSource.data) && !ObjectUtil.isNull(row)) {\n return this._dataSource.data.findIndex(r => r === row);\n }\n }\n\n // infinite scroll\n hasMore(): boolean {\n return !this._dataSource || (this._dataSource.data.length < this.paginatorLength);\n }\n\n handleScroll(scrolled: boolean): void {\n if (scrolled && this.hasMore()) {\n this.onPage({\n pageSize: this.paginatorPageSize,\n pageIndex: this.paginatorPageIndex,\n length: this.paginatorLength,\n previousPageIndex: this.paginatorPageIndex,\n });\n\n this.paginatorPageIndex += 1;\n }\n }\n\n}\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { Component, ElementRef, forwardRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'itss-textarea',\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true\n }\n ]\n})\nexport class TextareaComponent implements ControlValueAccessor, OnInit {\n\n @ViewChild('input', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() placeholder: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input() maxlength = 250;\n\n @Input() rows = 2;\n\n @Input() appearance = 'outline';\n\n @Input('value') val: any;\n get value() {\n return this.val;\n }\n set value(val) {\n this.val = this.checkUppercase(val);\n this.onChange(this.val);\n this.onTouch();\n }\n\n @Input() upperCase = false;\n\n @Input() mentionConfiguration = {};\n\n private _minHeight: string = '60px';\n @Input() get minHeight(): string {\n return this._minHeight;\n }\n set minHeight(value: string) {\n if (value.trim().toUpperCase() === 'AUTO') {\n this._minHeight = 'auto';\n } else {\n this._minHeight = coerceCssPixelValue(value);\n }\n }\n\n private _height: string = '60px';\n @Input() get height(): string {\n return this._height;\n }\n set height(value: string) {\n if (value.trim().toUpperCase() === 'AUTO') {\n this._height = 'auto';\n } else {\n this._height = coerceCssPixelValue(value);\n }\n }\n\n private _maxHeight: string = 'auto';\n @Input() get maxHeight(): string {\n return this._maxHeight;\n }\n set maxHeight(value: string) {\n if (value.trim().toUpperCase() === 'AUTO') {\n this._maxHeight = 'auto';\n } else {\n this._maxHeight = coerceCssPixelValue(value);\n }\n }\n\n constructor() { }\n\n ngOnInit(): void { }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = this.checkUppercase(value);\n }\n\n checkUppercase(value: any): any {\n if (this.upperCase && value) {\n return value.toUpperCase();\n }\n return value;\n }\n\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[pTemplate]',\n host: {}\n})\nexport class ItssTemplate {\n\n @Input() type: string;\n\n @Input('pTemplate') name: string;\n\n constructor(public template: TemplateRef<any>) { }\n\n getType(): string {\n return this.name;\n }\n}\n","import { AfterViewInit, Directive, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\nimport { MatSelect } from '@angular/material/select';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\n\n/** A altura dos itens selecionados em unidades `em`. */\nconst SELECT_ITEM_HEIGHT_EM = 3;\n\n/**\n * Esta diretiva foi reescrita utilizando se do projeto a seguir\n * https://github.com/HaidarZ/ng-mat-select-infinite-scroll\n */\n@Directive({\n selector: '[itssInfiniteScroll]'\n})\nexport class InputSelectInfiniteScrollDirective implements OnInit, OnDestroy, AfterViewInit {\n\n /**\n * A distância limite da parte inferior da lista de opções para chamar o evento\n * infiniteScroll quando rolado. O valor limite pode ser em porcentagem ou em\n * pixels. Por exemplo, use o valor de 10%para que o infiniteScrollevento de saída\n * seja chamado quando o usuário precisar de 10% para chegar ao fundo.\n */\n @Input() threshold: string = '15%';\n\n /** O tempo limite antes de disparar o evento infiniteScroll */\n @Input() debounceTime: number = 100;\n\n /* Se true, a infiniteScroll não será mais acionada */\n @Input() complete!: boolean;\n\n /** Emitido quando o scroller dentro do mat-select atinge a distância necessária */\n @Output() infiniteScroll: EventEmitter<void> = new EventEmitter<void>();\n\n private _panel!: Element;\n\n private _thrPx: number = 0;\n\n private _thrPc: number = 0;\n\n private _singleOptionHeight: number = SELECT_ITEM_HEIGHT_EM;\n\n private _destroyed$: Subject<boolean> = new Subject<boolean>();\n\n constructor(\n private matSelect: MatSelect,\n private ngZone: NgZone\n ) { }\n\n ngOnInit(): void {\n this.evaluateThreshold();\n }\n\n ngAfterViewInit(): void {\n this.matSelect.openedChange.pipe(\n takeUntil(this._destroyed$)\n ).subscribe((opened: boolean): void => {\n if (opened) {\n this._panel = this.matSelect.panel.nativeElement;\n this._singleOptionHeight = this.getSelectItemHeightPx();\n this.registerScrollListener();\n }\n });\n }\n\n ngOnDestroy(): void {\n this._destroyed$.next(true);\n this._destroyed$.complete();\n }\n\n evaluateThreshold(): void {\n if (this.threshold.lastIndexOf('%') > -1) {\n this._thrPx = 0;\n this._thrPc = (parseFloat(this.threshold) / 100);\n\n } else {\n this._thrPx = parseFloat(this.threshold);\n this._thrPc = 0;\n }\n }\n\n registerScrollListener(): void {\n fromEvent(this._panel, 'scroll').pipe(\n takeUntil(this._destroyed$),\n debounceTime(this.debounceTime),\n tap((event: Event): void => {\n this.handleScrollEvent(event);\n })\n ).subscribe();\n }\n\n handleScrollEvent(event: any): void {\n this.ngZone.runOutsideAngular((): void => {\n if (this.complete) {\n return;\n }\n const countOfRenderedOptions: number = this.matSelect.options.length;\n const infiniteScrollDistance: number = this._singleOptionHeight * countOfRenderedOptions;\n const threshold: number = this._thrPc !== 0 ? (infiniteScrollDistance * this._thrPc) : this._thrPx;\n\n const scrolledDistance: number = this._panel.clientHeight + event.target.scrollTop;\n\n if ((scrolledDistance + threshold) >= infiniteScrollDistance) {\n this.ngZone.run((): void => this.infiniteScroll.emit());\n }\n });\n }\n\n getSelectItemHeightPx(): number {\n return parseFloat(getComputedStyle(this._panel).fontSize) * SELECT_ITEM_HEIGHT_EM;\n }\n\n}\n","import {Directive, HostListener, Input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\n@Directive({\n selector: '[lowerCase]',\n})\nexport class LowerCaseDirective {\n\n @Input() enabledLowerCase = false;\n\n constructor(public ngControl: NgControl) {\n }\n\n @HostListener('ngModelChange', ['$event'])\n ngModelChange(event) {\n this.onInputChange(event);\n }\n\n @HostListener('keydown', ['$event'])\n keydown(event) {\n this.onInputChange(event.target.value);\n }\n\n onInputChange(event) {\n if (this.enabledLowerCase) {\n this.ngControl.valueAccessor.writeValue(event.toLowerCase());\n }\n }\n\n}\n","import {Directive, HostListener} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\n@Directive({\n selector: '[phoneMask]',\n})\nexport class PhoneMaskDirective {\n\n constructor(public ngControl: NgControl) {\n }\n\n @HostListener('ngModelChange', ['$event'])\n onModelChange(event) {\n this.onInputChange(event, false);\n }\n\n @HostListener('keydown.backspace', ['$event'])\n keydownBackspace(event) {\n this.onInputChange(event.target.value, true);\n }\n\n\n onInputChange(event, backspace) {\n let newVal = event.replace(/\\D/g, '');\n if (backspace && newVal.length <= 6) {\n newVal = newVal.substring(0, newVal.length - 1);\n }\n if (newVal.length === 0) {\n newVal = '';\n } else if (newVal.length <= 3) {\n newVal = newVal.replace(/^(\\d{0,2})/, '($1)');\n } else if (newVal.length <= 6) {\n newVal = newVal.replace(/^(\\d{0,2})(\\d{0,4})/, '($1) $2');\n } else if (newVal.length <= 10) {\n newVal = newVal.replace(/^(\\d{0,2})(\\d{0,4})(\\d{0,4})/, '($1) $2-$3');\n } else {\n newVal = newVal.substring(0, 11);\n newVal = newVal.replace(/^(\\d{0,2})(\\d{0,5})(\\d{0,4})/, '($1) $2-$3');\n }\n this.ngControl.valueAccessor.writeValue(newVal);\n }\n}\n","import {Directive, HostListener, Input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\n@Directive({\n selector: '[spaceDrop]',\n})\nexport class SpaceDropDirective {\n\n @Input() spaceDrop = false;\n\n constructor(public ngControl: NgControl) {\n }\n\n @HostListener('ngModelChange', ['$event'])\n ngModelChange(event) {\n this.onInputChange(event);\n }\n\n @HostListener('keydown', ['$event'])\n keydown(event) {\n this.onInputChange(event.target.value);\n }\n\n onInputChange(event) {\n if (this.spaceDrop) {\n this.ngControl.valueAccessor.writeValue(event.replace(/\\s/g, ''));\n }\n }\n\n}\n","import {Directive, HostListener, Input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\n@Directive({\n selector: '[upperCase]',\n})\nexport class UpperCaseDirective {\n\n @Input() enabledUpperCase = false;\n\n constructor(public ngControl: NgControl) {\n }\n\n @HostListener('ngModelChange', ['$event'])\n ngModelChange(event) {\n this.onInputChange(event);\n }\n\n @HostListener('keydown', ['$event'])\n keydown(event) {\n this.onInputChange(event.target.value);\n }\n\n onInputChange(event) {\n if (this.enabledUpperCase) {\n this.ngControl.valueAccessor.writeValue(event.toUpperCase());\n }\n }\n\n}\n","import { BreakPoint, BREAKPOINT } from '@angular/flex-layout';\n\nexport const GIPI_BREAKPOINTS: BreakPoint[] = [\n {\n alias: 'xs',\n mediaQuery: 'screen and (min-width: 0px) and (max-width: 599.98px)',\n priority: 1001,\n },\n {\n alias: 'sm',\n mediaQuery: 'screen and (min-width: 600px) and (max-width: 767.98px)',\n priority: 1001,\n },\n {\n alias: 'md',\n mediaQuery: 'screen and (min-width: 768px) and (max-width: 1365.98px)',\n priority: 1001,\n },\n {\n alias: 'lg',\n mediaQuery: 'screen and (min-width: 1366px) and (max-width: 1919.98px)',\n priority: 1001,\n },\n {\n alias: 'xl',\n mediaQuery: 'screen and (min-width: 1920px) and (max-width: 4999.98px)',\n priority: 1001,\n },\n {\n alias: 'lt-xs',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 599.98px)',\n priority: 1001,\n },\n {\n alias: 'lt-sm',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 767.98px)',\n priority: 1001,\n },\n {\n alias: 'lt-md',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 1365.98px)',\n priority: 1001,\n },\n {\n alias: 'lt-lg',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 1919.98px)',\n priority: 1001,\n },\n {\n alias: 'lt-xl',\n overlapping: true,\n priority: 1001,\n mediaQuery: 'screen and (max-width: 4999.98px)',\n },\n {\n alias: 'gt-xs',\n overlapping: true,\n mediaQuery: 'screen and (min-width: 600px)',\n priority: 1001,\n },\n {\n alias: 'gt-sm',\n overlapping: true,\n mediaQuery: 'screen and (min-width: 768px)',\n priority: 1001,\n }, {\n alias: 'gt-md',\n overlapping: true,\n mediaQuery: 'screen and (min-width: 1366px)',\n priority: 1001,\n },\n {\n alias: 'gt-lg',\n overlapping: true,\n mediaQuery: 'screen and (min-width: 1920px)',\n priority: 1001,\n }\n];\n\nexport const GIPI_CUSTOM_BREAKPOINTS_PROVIDER = {\n provide: BREAKPOINT,\n useValue: GIPI_BREAKPOINTS,\n multi: true\n};\n","import { Directive, HostListener, HostBinding, Output, EventEmitter, Input } from '@angular/core';\n\n@Directive({\n selector: '[fileDragAndDrop]'\n})\nexport class GIPIFileDragAndDropDirective {\n\n @Output() filesChangeEmiter: EventEmitter<File[]> = new EventEmitter();\n\n @Input() disabled: boolean = false;\n\n @HostBinding('style.background') background: string = 'transparent';\n @HostBinding('style.border') borderStyle: string = '2px dashed';\n @HostBinding('style.border-color') borderColor: string = '#595959';\n @HostBinding('style.border-radius') borderRadius: string = '5px';\n\n constructor() { }\n\n @HostListener('dragover', ['$event']) public onDragOver(evt) {\n if (!this.disabled) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = 'transparent';\n this.borderColor = '#595959';\n this.borderStyle = '2px solid';\n }\n }\n\n @HostListener('dragleave', ['$event']) public onDragLeave(evt) {\n if (!this.disabled) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '#f5f5f6';\n this.borderColor = '#262626';\n this.borderStyle = '2px dashed';\n }\n }\n\n @HostListener('drop', ['$event']) public onDrop(evt) {\n if (!this.disabled) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = 'transparent';\n this.borderColor = '#595959';\n this.borderStyle = '2px dashed';\n const files = evt.dataTransfer.files;\n const valid_files: Array<File> = files;\n this.filesChangeEmiter.emit(valid_files);\n }\n }\n\n}\n","import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { AfterViewInit, Directive, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subject, fromEvent } from 'rxjs';\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\n\n/** A altura dos itens selecionados em unidades `px`. */\nconst SELECT_ITEM_HEIGHT_PX = 48;\n\n/**\n * Esta diretiva foi reescrita utilizando se do projeto a seguir\n * https://github.com/HaidarZ/ng-mat-select-infinite-scroll\n */\n@Directive({\n selector: '[GIPIInfiniteScroll]',\n})\nexport class GIPIInfiniteScrollDirective implements OnInit, OnDestroy, AfterViewInit {\n\n private _panel!: Element;\n\n private _thrPx: number = 0;\n\n private _thrPc: number = 0;\n\n private _destroyed$: Subject<boolean> = new Subject<boolean>();\n\n @Input() infiniteScrollDistance: string = '15%';\n @Input() infiniteScrollThrottle: number = 150;\n @Input() infiniteScrollDisabled: boolean = false;\n @Input() infiniteScrollcomplete!: boolean;\n @Input() infiniteScrollOptionHeight: number = SELECT_ITEM_HEIGHT_PX;\n\n @Output() scrolled: EventEmitter<'up' | 'down'> = new EventEmitter<'up' | 'down'>();\n\n constructor(\n private _cdkVirtualScrollViewport: CdkVirtualScrollViewport,\n private _ngZone: NgZone\n ) { }\n\n ngOnInit(): void {\n this.evaluateThreshold();\n }\n\n ngAfterViewInit(): void {\n if (!this.infiniteScrollDisabled) {\n this._panel = this._cdkVirtualScrollViewport.getElementRef().nativeElement;\n this.registerScrollListener();\n }\n }\n\n ngOnDestroy(): void {\n this._destroyed$.next(true);\n this._destroyed$.complete();\n }\n\n evaluateThreshold(): void {\n if (typeof this.infiniteScrollDistance === 'string' && this.infiniteScrollDistance.lastIndexOf('%') > -1) {\n this._thrPx = 0;\n this._thrPc = (parseFloat(this.infiniteScrollDistance) / 100);\n } else {\n this._thrPx = parseFloat(this.infiniteScrollDistance);\n this._thrPc = 0;\n }\n }\n\n registerScrollListener(): void {\n this._cdkVirtualScrollViewport.elementScrolled\n\n fromEvent(this._panel, 'scroll').pipe(\n takeUntil(this._destroyed$),\n debounceTime(this.infiniteScrollThrottle),\n tap((event: Event): void => this.handleScrollEvent(event))\n ).subscribe();\n }\n\n handleScrollEvent(event: any): void {\n this._ngZone.runOutsideAngular((): void => {\n if (this.infiniteScrollcomplete) {\n return;\n }\n const countOfRenderedOptions: number = this._cdkVirtualScrollViewport.getDataLength();\n const infiniteScrollDistance: number = this.infiniteScrollOptionHeight * countOfRenderedOptions;\n const threshold: number = this._thrPc !== 0 ? (infiniteScrollDistance * this._thrPc) : this._thrPx;\n const scrolledDistance: number = this._panel.clientHeight + event.target.scrollTop;\n\n if ((scrolledDistance + threshold) >= infiniteScrollDistance) {\n this._ngZone.run((): void => this.scrolled.emit());\n }\n });\n }\n\n}\n","import { Injectable, NgZone, OnDestroy, Renderer2, RendererFactory2 } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { auditTime, finalize } from 'rxjs/operators';\n\nconst NOOP: () => void = (): void => { };\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GIPIResizeService implements OnDestroy {\n\n private readonly resizeSource$: Subject<void> = new Subject<void>();\n\n private listeners: number = 0;\n\n private renderer: Renderer2;\n\n private disposeHandle: () => void = NOOP;\n\n private handler: () => void = (): void => {\n this.ngZone.run(() => {\n this.resizeSource$.next();\n });\n }\n\n constructor(\n private ngZone: NgZone,\n private rendererFactory2: RendererFactory2\n ) {\n this.renderer = this.rendererFactory2.createRenderer(null, null);\n }\n\n ngOnDestroy(): void {\n // Caretaker note: the `handler` is an instance property (it's not defined on the class prototype).\n // The `handler` captures `this` and prevents the `GIPIResizeService` from being GC'd.\n this.handler = NOOP;\n }\n\n subscribe(): Observable<void> {\n this.registerListener();\n\n return this.resizeSource$.pipe(\n auditTime(16),\n finalize(() => this.unregisterListener())\n );\n }\n\n unsubscribe(): void {\n this.unregisterListener();\n }\n\n private registerListener(): void {\n if (this.listeners === 0) {\n this.ngZone.runOutsideAngular(() => {\n this.disposeHandle = this.renderer.listen('window', 'resize', this.handler);\n });\n }\n\n this.listeners += 1;\n }\n\n private unregisterListener(): void {\n this.listeners -= 1;\n\n if (this.listeners === 0) {\n this.disposeHandle();\n this.disposeHandle = NOOP;\n }\n }\n}\n\n","import { MediaMatcher } from '@angular/cdk/layout';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, map, startWith, takeUntil } from 'rxjs/operators';\n\nimport { GIPIResizeService } from './resize.service';\n\nexport enum BreakpointEnum {\n xl = 'xl',\n lg = 'lg',\n md = 'md',\n sm = 'sm',\n xs = 'xs'\n}\n\nexport type BreakpointMap = { [key in BreakpointEnum]: string };\nexport type BreakpointBooleanMap = { [key in BreakpointEnum]: boolean };\nexport type GridBreakpointKey = keyof typeof BreakpointEnum;\n\nexport const gridResponsiveMap: BreakpointMap = {\n xs: '(max-width: 419px)',\n sm: '(min-width: 420px)',\n md: '(min-width: 600px)',\n lg: '(min-width: 768px)',\n xl: '(min-width: 1366px)',\n};\n\nexport const siderResponsiveMap: BreakpointMap = {\n xs: '(max-width: 420px)',\n sm: '(max-width: 600px)',\n md: '(max-width: 768px)',\n lg: '(max-width: 1366px)',\n xl: '(max-width: 1920px)',\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GIPIBreakpointService implements OnDestroy {\n\n private destroy$: Subject<void> = new Subject<void>();\n\n constructor(\n private resizeService: GIPIResizeService,\n private mediaMatcher: MediaMatcher\n ) {\n this.resizeService\n .subscribe()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => { });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n\n subscribe(breakpointMap: BreakpointMap): Observable<BreakpointEnum>;\n subscribe(breakpointMap: BreakpointMap, fullMap: true): Observable<BreakpointBooleanMap>;\n subscribe(breakpointMap: BreakpointMap, fullMap?: true): Observable<BreakpointEnum | BreakpointBooleanMap> {\n if (fullMap) {\n const get = () => this.matchMedia(breakpointMap, true);\n return this.resizeService.subscribe().pipe(\n map(get),\n startWith(get()),\n distinctUntilChanged(\n (x: [BreakpointEnum, BreakpointBooleanMap], y: [BreakpointEnum, BreakpointBooleanMap]) => x[0] === y[0]\n ),\n map(x => x[1])\n );\n } else {\n const get = () => this.matchMedia(breakpointMap);\n return this.resizeService.subscribe().pipe(map(get), startWith(get()), distinctUntilChanged());\n }\n }\n\n private matchMedia(breakpointMap: BreakpointMap): BreakpointEnum;\n private matchMedia(breakpointMap: BreakpointMap, fullMap: true): [BreakpointEnum, BreakpointBooleanMap];\n private matchMedia(\n breakpointMap: BreakpointMap,\n fullMap?: true\n ): BreakpointEnum | [BreakpointEnum, BreakpointBooleanMap] {\n let bp: BreakpointEnum = BreakpointEnum.md;\n\n const breakpointBooleanMap: Partial<BreakpointBooleanMap> = {};\n\n Object.keys(breakpointMap).map(breakpoint => {\n const castBP = breakpoint as BreakpointEnum;\n const matched: boolean = this.mediaMatcher.matchMedia(gridResponsiveMap[castBP]).matches;\n\n breakpointBooleanMap[breakpoint as BreakpointEnum] = matched;\n\n if (matched) {\n bp = castBP;\n }\n });\n\n if (fullMap) {\n return [bp, breakpointBooleanMap as BreakpointBooleanMap];\n } else {\n return bp;\n }\n }\n}\n\n","import { MediaMatcher } from '@angular/cdk/layout';\nimport { Platform } from '@angular/cdk/platform';\nimport { AfterViewInit, Directive, ElementRef, Input, NgZone, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges } from '@angular/core';\nimport { ReplaySubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { GIPIIndexableObject } from '../../../core/types/ng-class.type';\nimport { GridBreakpointKey, GIPIBreakpointService, gridResponsiveMap } from './services/breakpoint.service';\n\nexport type GIPIJustify = 'start' | 'end' | 'center' | 'space-around' | 'space-between' | 'space-evenly';\nexport type GIPIAlign = 'top' | 'middle' | 'bottom';\n\n@Directive({\n selector: '[gipi-row],gipi-row,GIPIRow',\n exportAs: 'gipiRow',\n host: {\n class: 'grid-row',\n '[class.grid-row-top]': `GIPIAlign === 'top'`,\n '[class.grid-row-middle]': `GIPIAlign === 'middle'`,\n '[class.grid-row-bottom]': `GIPIAlign === 'bottom'`,\n '[class.grid-row-start]': `GIPIJustify === 'start'`,\n '[class.grid-row-end]': `GIPIJustify === 'end'`,\n '[class.grid-row-center]': `GIPIJustify === 'center'`,\n '[class.grid-row-space-around]': `GIPIJustify === 'space-around'`,\n '[class.grid-row-space-between]': `GIPIJustify === 'space-between'`,\n '[class.grid-row-space-evenly]': `GIPIJustify === 'space-evenly'`\n }\n})\nexport class GIPIRowDirective implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n private readonly _destroy$: Subject<unknown> = new Subject();\n\n readonly actualGap$: ReplaySubject<[number, number]> = new ReplaySubject<[number | null, number | null]>(1);\n\n @Input() GIPIAlign: GIPIAlign | null = null;\n\n @Input() GIPIJustify: GIPIJustify | null = null;\n\n @Input() GIPIGap: string | number | GIPIIndexableObject | [number, number] | [GIPIIndexableObject, GIPIIndexableObject] | null = null;\n\n constructor(\n public elementRef: ElementRef,\n public renderer: Renderer2,\n public mediaMatcher: MediaMatcher,\n public ngZone: NgZone,\n public platform: Platform,\n private _breakpointService: GIPIBreakpointService,\n ) { }\n\n ngOnInit(): void {\n this._setGapStyle();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.GIPIGap) {\n this._setGapStyle();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.platform.isBrowser) {\n this._breakpointService\n .subscribe(gridResponsiveMap)\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this._setGapStyle();\n });\n }\n }\n\n ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _setGapStyle(): void {\n let [horizontalGap, verticalGap] = this._getGap();\n if (horizontalGap === null && verticalGap !== null) {\n horizontalGap = 0;\n }\n if (verticalGap === null) {\n verticalGap = 0;\n }\n\n this.actualGap$.next([horizontalGap, verticalGap]);\n\n const nativeElement: ElementRef = this.elementRef.nativeElement;\n if (horizontalGap !== null && verticalGap !== null) {\n this.renderer.setStyle(nativeElement, 'gap', `${verticalGap}px ${horizontalGap}px`);\n }\n }\n\n private _getGap(): [number | null, number | null] {\n const results: [number | null, number | null] = [null, null];\n const gap: string | number | GIPIIndexableObject = this.GIPIGap || 0;\n const normalizedGap: any[] = Array.isArray(gap) ? gap : [gap, null];\n\n normalizedGap.forEach((g, index) => {\n if (typeof g === 'object' && g !== null) {\n results[index] = null;\n\n Object.keys(gridResponsiveMap).map((screen: string) => {\n const bp = screen as GridBreakpointKey;\n if (this.mediaMatcher.matchMedia(gridResponsiveMap[bp]).matches && g[bp]) {\n results[index] = g![bp] as number;\n }\n });\n } else {\n results[index] = Number(g) || null;\n }\n });\n return results;\n }\n\n}\n","import { AfterViewInit, Directive, ElementRef, Host, Input, OnChanges, OnDestroy, OnInit, Optional, Renderer2, SimpleChanges } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { GIPIClassInterface } from '../../../core/types/ng-class.type';\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { GIPIRowDirective } from './row.directive';\n\nexport interface EmbeddedProperty {\n span?: number;\n pull?: number;\n push?: number;\n offset?: number;\n order?: number;\n}\n\n@Directive({\n selector: '[gipi-col],gipi-col,GIPICol',\n exportAs: 'gipiCol',\n host: {\n 'class': 'grid-col',\n '[style.flex]': 'hostFlexStyle'\n }\n})\nexport class GIPIColDirective implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n private _classMap: { [key: string]: boolean } = {};\n\n private _destroy$: Subject<unknown> = new Subject();\n\n hostFlexStyle: string | null = null;\n\n @Input() GIPIFlex: string | number | null = null;\n\n @Input() GIPISpan: string | number | null = null;\n\n @Input() GIPIOrder: string | number | null = null;\n\n @Input() GIPIOffset: string | number | null = null;\n\n @Input() GIPIPush: string | number | null = null;\n\n @Input() GIPIPull: string | number | null = null;\n\n @Input() GIPIXs: string | number | EmbeddedProperty | null = null;\n\n @Input() GIPISm: string | number | EmbeddedProperty | null = null;\n\n @Input() GIPIMd: string | number | EmbeddedProperty | null = null;\n\n @Input() GIPILg: string | number | EmbeddedProperty | null = null;\n\n @Input() GIPIXl: string | number | EmbeddedProperty | null = null;\n\n @Input() GIPIXXl: string | number | EmbeddedProperty | null = null;\n\n constructor(\n private elementRef: ElementRef,\n @Optional() @Host() public GIPIRowDirective: GIPIRowDirective,\n public renderer: Renderer2\n ) { }\n\n ngOnInit(): void {\n this._setHostClassMap();\n this._setHostFlexStyle();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this._setHostClassMap();\n\n const { GIPIFlex } = changes;\n if (GIPIFlex) {\n this._setHostFlexStyle();\n }\n }\n\n ngAfterViewInit(): void { }\n\n ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _setHostClassMap(): void {\n const hostClassMap = {\n ['grid-col']: true,\n [`grid-col-${this.GIPISpan}`]: ObjectUtil.isNotNil(this.GIPISpan),\n [`grid-col-order-${this.GIPIOrder}`]: ObjectUtil.isNotNil(this.GIPIOrder),\n [`grid-col-offset-${this.GIPIOffset}`]: ObjectUtil.isNotNil(this.GIPIOffset),\n [`grid-col-pull-${this.GIPIPull}`]: ObjectUtil.isNotNil(this.GIPIPull),\n [`grid-col-push-${this.GIPIPush}`]: ObjectUtil.isNotNil(this.GIPIPush),\n ...this._generateClass()\n };\n\n for (const i in this._classMap) {\n if (this._classMap.hasOwnProperty(i)) {\n this.renderer.removeClass(this.elementRef.nativeElement, i);\n }\n }\n\n this._classMap = { ...hostClassMap };\n for (const i in this._classMap) {\n if (this._classMap.hasOwnProperty(i) && this._classMap[i]) {\n this.renderer.addClass(this.elementRef.nativeElement, i);\n }\n }\n }\n\n private _setHostFlexStyle(): void {\n this.hostFlexStyle = this._parseFlex(this.GIPIFlex);\n }\n\n private _parseFlex(flex: number | string | null): string | null {\n if (typeof flex === 'number') {\n return `${flex} ${flex} auto`;\n } else if (typeof flex === 'string') {\n if (/^\\d+(\\.\\d+)?(px|em|rem|%)$/.test(flex)) {\n return `0 0 ${flex}`;\n }\n }\n return flex;\n }\n\n private _generateClass(): object {\n const listOfSizeInputName: Array<keyof GIPIColDirective> = ['GIPIXs', 'GIPISm', 'GIPIMd', 'GIPILg', 'GIPIXl', 'GIPIXXl'];\n const listClassMap: GIPIClassInterface = {};\n\n listOfSizeInputName.forEach(name => {\n const sizeName: string = name.replace('GIPI', '').toLowerCase();\n\n if (ObjectUtil.isNotNil(this[name])) {\n if (typeof this[name] === 'number' || typeof this[name] === 'string') {\n listClassMap[`grid-col-${sizeName}-${this[name]}`] = true;\n } else {\n const embedded = this[name] as EmbeddedProperty;\n const prefixArray: Array<keyof EmbeddedProperty> = ['span', 'pull', 'push', 'offset', 'order'];\n\n prefixArray.forEach(prefix => {\n const prefixClass: string = prefix === 'span' ? '-' : `-${prefix}-`;\n listClassMap[`grid-col-${sizeName}${prefixClass}${embedded[prefix]}`] = embedded && ObjectUtil.isNotNil(embedded[prefix]);\n });\n }\n }\n });\n return listClassMap;\n }\n\n}\n","import { EventEmitter } from '@angular/core';\nimport { PaginationInstance } from './pagination-instance';\n\nexport class GIPIPaginationService {\n\n private _instances: { [id: string]: PaginationInstance } = {};\n private _DEFAULT_ID = 'DEFAULT_PAGINATION_ID';\n\n public change: EventEmitter<string> = new EventEmitter<string>();\n\n constructor() { }\n\n public defaultId(): string {\n return this._DEFAULT_ID;\n }\n\n /**\n * Registre uma PaginationInstance com este serviço. Retorna um\n * valor booleano significando se a instância é nova ou atualizada.\n * (true = new or updated, false = unchanged).\n */\n public register(instance: PaginationInstance): boolean {\n if (instance.id == null) {\n instance.id = this._DEFAULT_ID;\n }\n\n if (!this._instances[instance.id]) {\n this._instances[instance.id] = instance;\n return true;\n } else {\n return this.updateInstance(instance);\n }\n }\n\n /**\n * Verifique cada propriedade da instância e atualize as que foram alteradas. Retornar\n * true se alguma alteração foi feita, senão retorna false.\n */\n private updateInstance(instance: PaginationInstance): boolean {\n let changed = false;\n for (let prop in this._instances[instance.id]) {\n if (instance[prop] !== this._instances[instance.id][prop]) {\n this._instances[instance.id][prop] = instance[prop];\n changed = true;\n }\n }\n return changed;\n }\n\n /**\n * Retorna o número da página atual.\n */\n public getCurrentPage(id: string): number {\n if (this._instances[id]) {\n return this._instances[id].currentPage;\n }\n return 1;\n }\n\n /**\n * Define o número da página atual.\n */\n public setCurrentPage(id: string, page: number) {\n if (this._instances[id]) {\n let instance = this._instances[id];\n let maxPage = Math.ceil(instance.totalItems / instance.itemsPerPage);\n\n if (page <= maxPage && 1 <= page) {\n this._instances[id].currentPage = page;\n this.change.emit(id);\n }\n }\n }\n\n /**\n * Define o valor de instance.totalItems\n */\n public setTotalItems(id: string, totalItems: number) {\n if (this._instances[id] && 0 <= totalItems) {\n this._instances[id].totalItems = totalItems;\n this.change.emit(id);\n }\n }\n\n /**\n * Define o valor de instance.itemsPerPage\n */\n public setItemsPerPage(id: string, itemsPerPage: number) {\n if (this._instances[id]) {\n this._instances[id].itemsPerPage = itemsPerPage;\n this.change.emit(id);\n }\n }\n\n /**\n * Retorna um clone do objeto de instância de paginação correspondente ao id. Se não tiver\n * id especificado, retorna a instância correspondente ao id padrão.\n */\n public getInstance(id: string = this._DEFAULT_ID): PaginationInstance {\n if (this._instances[id]) {\n return this.clone(this._instances[id]);\n }\n return {} as PaginationInstance;\n }\n\n /**\n * Execute um clone raso de um objeto.\n */\n private clone(obj: any): any {\n var target = {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n target[i] = obj[i];\n }\n }\n return target;\n }\n\n}\n","import { ChangeDetectorRef, Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { PaginationInstance } from './pagination-instance';\nimport { GIPIPaginationService } from './pagination.service';\n\nexport interface Page {\n label: string;\n value: any;\n}\n\n/**\n * Esta diretiva é o que alimenta todos os componentes de controle de paginação, incluindo o padrão.\n * Ele expõe uma API conectada ao GIPIPaginationService para manter o PaginatePipe sincronizado\n * com os controles de paginação.\n */\n@Directive({\n selector: 'pagination-template,[pagination-template]',\n exportAs: 'paginationApi'\n})\nexport class GIPIPaginationControlsDirective {\n\n private changeSub: Subscription;\n\n pages: Page[] = [];\n\n @Input() id: string;\n\n @Input() maxSize: number = 5;\n\n @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\n @Output() pageBoundsCorrection: EventEmitter<number> = new EventEmitter<number>();\n\n constructor(\n private _service: GIPIPaginationService,\n private _changeDetectorRef: ChangeDetectorRef,\n ) {\n this.changeSub = this._service.change.subscribe(id => {\n if (this.id === id) {\n this.updatePageLinks();\n this._changeDetectorRef.markForCheck();\n this._changeDetectorRef.detectChanges();\n }\n });\n }\n\n ngOnInit() {\n if (this.id === undefined) {\n this.id = this._service.defaultId();\n }\n\n this.updatePageLinks();\n }\n\n ngOnChanges(changes: any) {\n this.updatePageLinks();\n }\n\n ngOnDestroy() {\n this.changeSub.unsubscribe();\n }\n\n /**\n * Ir para a página anterior\n */\n previous() {\n this.checkValidId();\n this.setCurrent(this.getCurrent() - 1);\n }\n\n /**\n * Vá para a página seguinte\n */\n next() {\n this.checkValidId();\n this.setCurrent(this.getCurrent() + 1);\n }\n\n /**\n * Retorna true se a página atual for a primeira página\n */\n isFirstPage(): boolean {\n return this.getCurrent() === 1;\n }\n\n /**\n * Retorna true se a página atual for a última página\n */\n isLastPage(): boolean {\n return this.getLastPage() === this.getCurrent();\n }\n\n /**\n * Defina o número da página atual\n */\n setCurrent(page: number) {\n this.pageChange.emit(page);\n }\n\n /**\n * Obtenha o número da página atual\n */\n getCurrent(): number {\n return this._service.getCurrentPage(this.id);\n }\n\n /**\n * Retorna o número da última página\n */\n getLastPage(): number {\n let inst = this._service.getInstance(this.id);\n if (inst.totalItems < 1) {\n // quando há 0 ou menos itens (um caso de erro), não há \"páginas\" como tal,\n // mas faz sentido considerar uma única página vazia como a última página.\n return 1;\n }\n return Math.ceil(inst.totalItems / inst.itemsPerPage);\n }\n\n /**\n * Retorna a quantidade total de páginas\n */\n getTotalItems(): number {\n return this._service.getInstance(this.id).totalItems;\n }\n\n /**\n * Verifica se o id da PaginationInstance é válido\n */\n private checkValidId() {\n if (this._service.getInstance(this.id).id == null) {\n console.warn(`PaginationControlsDirective: O id especificado \"${this.id}\" não corresponde a nenhuma PaginationInstance registrada`);\n }\n }\n\n /**\n * Atualiza os links da página e verifica se a página atual é válida. Deve ser executado sempre que o\n * PaginationService.change stream emite um valor correspondente ao ID atual ou quando qualquer um das\n * mudanças nos valores de entrada.\n */\n private updatePageLinks() {\n let inst = this._service.getInstance(this.id);\n const correctedCurrentPage = this.outOfBoundCorrection(inst);\n\n if (correctedCurrentPage !== inst.currentPage) {\n setTimeout(() => {\n this.pageBoundsCorrection.emit(correctedCurrentPage);\n this.pages = this.createPageArray(inst.currentPage, inst.itemsPerPage, inst.totalItems, this.maxSize);\n });\n } else {\n this.pages = this.createPageArray(inst.currentPage, inst.itemsPerPage, inst.totalItems, this.maxSize);\n }\n }\n\n /**\n * Verifica se a propriedade instance.currentPage está dentro dos limites do intervalo de páginas atual.\n * Caso contrário, retorne um valor correto para currentPage ou o valor atual se OK.\n */\n private outOfBoundCorrection(instance: PaginationInstance): number {\n const totalPages = Math.ceil(instance.totalItems / instance.itemsPerPage);\n if (totalPages < instance.currentPage && 0 < totalPages) {\n return totalPages;\n } else if (instance.currentPage < 1) {\n return 1;\n }\n\n return instance.currentPage;\n }\n\n /**\n * Retorna uma matriz de objetos Page para usar nos controles de paginação.\n */\n private createPageArray(currentPage: number, itemsPerPage: number, totalItems: number, paginationRange: number): Page[] {\n // paginationRange pode ser uma string se for passada de atributo, então converta para number.\n paginationRange = +paginationRange;\n let pages = [];\n\n // Retorne 1 como número de página padrão\n // Faz sentido mostrar 1 em vez de vazio quando não há itens\n const totalPages = Math.max(Math.ceil(totalItems / itemsPerPage), 1);\n const halfWay = Math.ceil(paginationRange / 2);\n\n const isStart = currentPage <= halfWay;\n const isEnd = totalPages - halfWay < currentPage;\n const isMiddle = !isStart && !isEnd;\n\n let ellipsesNeeded = paginationRange < totalPages;\n let i = 1;\n\n while (i <= totalPages && i <= paginationRange) {\n let label: string;\n let pageNumber = this.calculatePageNumber(i, currentPage, paginationRange, totalPages);\n let openingEllipsesNeeded = (i === 2 && (isMiddle || isEnd));\n let closingEllipsesNeeded = (i === paginationRange - 1 && (isMiddle || isStart));\n if (ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)) {\n label = '...';\n } else {\n label = String(pageNumber);\n }\n pages.push({\n label: label,\n value: pageNumber\n });\n i++;\n }\n return pages;\n }\n\n /**\n * Dada a posição na sequência de links de paginação [i],\n * descubra qual número de página corresponde a essa posição.\n */\n private calculatePageNumber(i: number, currentPage: number, paginationRange: number, totalPages: number) {\n let halfWay = Math.ceil(paginationRange / 2);\n if (i === paginationRange) {\n return totalPages;\n } else if (i === 1) {\n return i;\n } else if (paginationRange < totalPages) {\n if (totalPages - halfWay < currentPage) {\n return totalPages - paginationRange + i;\n } else if (halfWay < currentPage) {\n return currentPage - halfWay + i;\n } else {\n return i;\n }\n } else {\n return i;\n }\n }\n\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[GIPItemplate]',\n exportAs: 'GIPITemplate',\n host: {\n 'class': 'gipi-template',\n }\n})\nexport class GIPITemplateDirective {\n\n @Input() type: string;\n\n @Input('gipi-template') name: string;\n\n constructor(public template: TemplateRef<any>) { }\n\n getType(): string {\n return this.name;\n }\n\n}\n","import { Pipe } from \"@angular/core\";\nimport { PaginationInstance } from './pagination-instance';\nimport { GIPIPaginationService } from \"./pagination.service\";\n\nconst LARGE_NUMBER = Number.MAX_SAFE_INTEGER;\n\nexport type Collection<T> = T[] | ReadonlyArray<T>;\n\nexport interface PaginatePipeArgs {\n id?: string;\n itemsPerPage?: string | number;\n currentPage?: string | number;\n totalItems?: string | number;\n}\n\nexport interface PipeState {\n collection: ArrayLike<any>;\n size: number;\n start: number;\n end: number;\n slice: ArrayLike<any>;\n}\n\n@Pipe({\n name: 'paginate',\n pure: false\n})\nexport class GIPIPaginatePipe {\n\n // Armazenar os valores da última vez que o pipe foi invocado\n private _state: { [id: string]: PipeState } = {};\n\n constructor(private _service: GIPIPaginationService) { }\n\n public transform<T, U extends Collection<T>>(collection: U, args: PaginatePipeArgs): U {\n\n // Quando um observável é passado pelo AsyncPipe, ele produzirá\n // `null` até que a assinatura seja resolvida. Neste caso, queremos\n // usar os dados em cache do objeto `_state` para evitar que o NgFor\n // pisque vazio até que os valores reais cheguem.\n if (!(collection instanceof Array)) {\n let _id = args.id || this._service.defaultId();\n if (this._state[_id]) {\n return this._state[_id].slice as U;\n } else {\n return collection;\n }\n }\n\n let serverSideMode: boolean = args.totalItems && args.totalItems !== collection.length;\n let instance: PaginationInstance = this.createInstance(collection, args);\n let id: string = instance.id;\n let start: number;\n let end: number;\n let perPage: number = instance.itemsPerPage;\n\n let emitChange: boolean = this._service.register(instance);\n\n if (!serverSideMode && collection instanceof Array) {\n perPage = +perPage || LARGE_NUMBER;\n start = (instance.currentPage - 1) * perPage;\n end = start + perPage;\n\n let isIdentical = this.stateIsIdentical(id, collection, start, end);\n if (isIdentical) {\n return this._state[id].slice as U;\n } else {\n let slice = collection.slice(start, end);\n this.saveState(id, collection, slice, start, end);\n this._service.change.emit(id);\n return slice as U;\n }\n } else {\n if (emitChange) {\n this._service.change.emit(id);\n }\n\n // salve o estado para coleta do lado do servidor para evitar nulo\n // pisca à medida que novos dados são carregados.\n this.saveState(id, collection, collection, start, end);\n\n return collection;\n }\n }\n\n /**\n * Crie um objeto PaginationInstance, usando padrões para quaisquer propriedades opcionais não fornecidas.\n */\n private createInstance(collection: readonly any[], config: PaginatePipeArgs): PaginationInstance {\n this.checkConfig(config);\n\n return {\n id: config.id != null ? config.id : this._service.defaultId(),\n itemsPerPage: +config.itemsPerPage || 0,\n currentPage: +config.currentPage || 1,\n totalItems: +config.totalItems || collection.length\n };\n }\n\n /**\n * Assegure-se de que o argumento passado para o filtro contenha as propriedades necessárias.\n */\n private checkConfig(config: PaginatePipeArgs): void {\n const required = ['itemsPerPage', 'currentPage'];\n\n const missing = required.filter(prop => !(prop in config));\n if (0 < missing.length) {\n throw new Error(`PaginatePipe: Argumento está faltando as seguintes propriedades necessárias: ${missing.join(', ')}`);\n }\n }\n\n /**\n * Para evitar o retorno de um novo array toda vez que o pipe é executado, armazenamos o estado do sliced\n * array para um determinado id. Isso significa que na próxima vez que o canal for executado nesta coleção e id, apenas\n * precisa verificar se a coleta, os pontos inicial e final são todos idênticos e, em caso afirmativo, retornar o\n * último array fatiado.\n */\n private saveState(id: string, collection: ArrayLike<any>, slice: ArrayLike<any>, start: number, end: number) {\n this._state[id] = {\n collection,\n size: collection.length,\n slice,\n start,\n end\n };\n }\n\n /**\n * Para um determinado id, retorna true se os valores de coleção, tamanho, início e fim forem idênticos.\n */\n private stateIsIdentical(id: string, collection: ArrayLike<any>, start: number, end: number): boolean {\n let state = this._state[id];\n if (!state) {\n return false;\n }\n let isMetaDataIdentical = state.size === collection.length &&\n state.start === start &&\n state.end === end;\n\n if (!isMetaDataIdentical) {\n return false;\n }\n\n return (state.slice as Array<any>).every((element, index) => element === collection[start + index]);\n }\n}\n","import { ChangeDetectionStrategy, Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-action-row`,\n exportAs: 'gipiActionRow',\n templateUrl: './action-row.component.html',\n styleUrls: ['./action-row.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIActionRowComponent => GIPIActionRowComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-action-row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIActionRowComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void { }\n\n}\n","import { ChangeDetectionStrategy, Component, ContentChildren, HostBinding, Input, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { GIPIActionRowComponent } from '../action-row/action-row.component';\n\n@Component({\n selector: `gipi-abstract-form`,\n exportAs: 'gipiAbstractForm',\n templateUrl: './abstract-form.component.html',\n styleUrls: ['./abstract-form.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIAbstractFormComponent => GIPIAbstractFormComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-abstract-form',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIAbstractFormComponent implements OnInit {\n\n @HostBinding('attr.id') attrId: string;\n\n @HostBinding('attr.name') attrName: string;\n\n @HostBinding('style.margin')\n get attrMargin() {\n return this.dialog ? '0' : '0 auto';\n }\n\n @ContentChildren(GIPIActionRowComponent) GIPIActionRowComponent: GIPIActionRowComponent;\n\n @Input() set id(value: string) {\n if (!value) {\n this.attrId = value;\n }\n }\n\n @Input() set name(value: string) {\n if (value) {\n this.attrName = value;\n }\n }\n\n @Input() flexDirection: 'row' | 'column' = 'column';\n\n @Input() gap: string | number = 32;\n\n @Input() alignItems: 'start' | 'center' | 'end' | 'flex-start' | 'flex-end' | 'stretch' = 'stretch';\n\n @Input() justifyContent: 'start' | 'center' | 'end' | 'flex-start' | 'flex-end' | 'space-around' | 'space-between' | 'space-evenly' | 'stretch' = 'flex-start';\n\n @Input() padding: string | number = 16;\n\n @Input() dialog: boolean = false;\n\n @Input() loading: boolean = false;\n\n get getPadding(): string {\n if (typeof this.padding === 'string' && this.padding.includes('px')) {\n return this.padding;\n }\n\n return this.padding + 'px';\n }\n\n get getGap(): string {\n if (typeof this.gap === 'string' && this.gap.includes('px')) {\n return this.gap;\n }\n\n return this.gap + 'px';\n }\n\n constructor() { }\n\n ngOnInit(): void { }\n\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'gipi-badge',\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GIPIBadgeComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-badge',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIBadgeComponent implements OnInit {\n\n @Input() label: string;\n\n @Input() color = 'primary';\n\n @Input() textColor = '#ffffff';\n\n constructor() { }\n\n ngOnInit(): void { }\n\n}\n","/**\n * @dynamic é para inicializar DomHandler.browser em tempo de execução\n *\n * Se excluir o comentário abaixo, podemos ver esta mensagem de erro:\n * Os metadados coletados contêm um erro que será reportado em tempo de execução:\n * Somente variáveis e constantes inicializadas podem ser referenciadas\n * porque o valor dessa variável é necessário para o compilador de modelo.\n */\n\n\n/** @dynamic */\nexport class GIPIDomHandler {\n\n public static zIndex: number = 1000;\n\n private static calculatedScrollbarWidth: number = null;\n\n private static calculatedScrollbarHeight: number = null;\n\n private static browser: any;\n\n public static addClass(element: any, className: string): void {\n if (element && className) {\n if (element.classList) { element.classList.add(className); } else { element.className += ' ' + className; }\n }\n }\n\n public static addMultipleClasses(element: any, className: string): void {\n if (element && className) {\n if (element.classList) {\n const styles: string[] = className.trim().split(' ');\n for (let i: number = 0; i < styles.length; i++) {\n element.classList.add(styles[i]);\n }\n } else {\n const styles: string[] = className.split(' ');\n for (let i: number = 0; i < styles.length; i++) {\n element.className += ' ' + styles[i];\n }\n }\n }\n }\n\n public static removeClass(element: any, className: string): void {\n if (element && className) {\n if (element.classList) { element.classList.remove(className); } else { element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' '); }\n }\n }\n\n public static hasClass(element: any, className: string): boolean {\n if (element && className) {\n if (element.classList) { return element.classList.contains(className); } else { return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className); }\n }\n\n return false;\n }\n\n public static siblings(element: any): any {\n return Array.prototype.filter.call(element.parentNode.children, function (child) {\n return child !== element;\n });\n }\n\n public static find(element: any, selector: string): any[] {\n return Array.from(element.querySelectorAll(selector));\n }\n\n public static findSingle(element: any, selector: string): any {\n if (element) {\n return element.querySelector(selector);\n }\n return null;\n }\n\n public static index(element: any): number {\n const children: any = element.parentNode.childNodes;\n let num: number = 0;\n for (let i: number = 0; i < children.length; i++) {\n if (children[i] == element) { return num; }\n if (children[i].nodeType == 1) { num++; }\n }\n return -1;\n }\n\n public static indexWithinGroup(element: any, attributeName: string): number {\n const children: any = element.parentNode ? element.parentNode.childNodes : [];\n let num: number = 0;\n for (let i: number = 0; i < children.length; i++) {\n if (children[i] == element) { return num; }\n if (children[i].attributes && children[i].attributes[attributeName] && children[i].nodeType == 1) { num++; }\n }\n return -1;\n }\n\n public static appendOverlay(overlay: any, target: any, appendTo: any = 'self'): void {\n if (appendTo !== 'self' && overlay && target) {\n this.appendChild(overlay, target);\n }\n }\n\n public static alignOverlay(overlay: any, target: any, appendTo: any = 'self', calculateMinWidth: boolean = true): void {\n if (overlay && target) {\n calculateMinWidth && (overlay.style.minWidth || (overlay.style.minWidth = GIPIDomHandler.getOuterWidth(target) + 'px'));\n\n if (appendTo === 'self') {\n this.relativePosition(overlay, target);\n } else {\n this.absolutePosition(overlay, target);\n }\n }\n }\n\n public static relativePosition(element: any, target: any): void {\n const getClosestRelativeElement: (el: any) => any = (el: any): any => {\n if (!el) {\n return;\n }\n return (getComputedStyle(el).getPropertyValue('position') === 'relative')\n ? el\n : getClosestRelativeElement(el.parentElement);\n };\n\n const elementDimensions: any = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n const targetHeight: any = target.offsetHeight;\n const targetOffset: any = target.getBoundingClientRect();\n const windowScrollTop: number = this.getWindowScrollTop();\n const windowScrollLeft: number = this.getWindowScrollLeft();\n const viewport: { width: number; height: number; } = this.getViewport();\n const relativeElement: any = getClosestRelativeElement(element);\n const relativeElementOffset: any = relativeElement?.getBoundingClientRect() || { top: -1 * windowScrollTop, left: -1 * windowScrollLeft };\n\n let top: number, left: number;\n\n if (targetOffset.top + targetHeight + elementDimensions.height > viewport.height) {\n top = targetOffset.top - relativeElementOffset.top - elementDimensions.height;\n element.style.transformOrigin = 'bottom';\n if (targetOffset.top + top < 0) {\n top = -1 * targetOffset.top;\n }\n } else {\n top = targetHeight + targetOffset.top - relativeElementOffset.top;\n element.style.transformOrigin = 'top';\n }\n\n if (elementDimensions.width > viewport.width) {\n // element wider then viewport and cannot fit on screen (align at left side of viewport)\n left = (targetOffset.left - relativeElementOffset.left) * -1;\n } else if (targetOffset.left - relativeElementOffset.left + elementDimensions.width > viewport.width) {\n // element wider then viewport but can be fit on screen (align at right side of viewport)\n left = (targetOffset.left - relativeElementOffset.left + elementDimensions.width - viewport.width) * -1;\n } else {\n // element fits on screen (align with target)\n left = targetOffset.left - relativeElementOffset.left;\n }\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n\n public static absolutePosition(element: any, target: any): void {\n const elementDimensions: any = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n const elementOuterHeight: any = elementDimensions.height;\n const elementOuterWidth: any = elementDimensions.width;\n const targetOuterHeight: any = target.offsetHeight;\n const targetOuterWidth: any = target.offsetWidth;\n const targetOffset: any = target.getBoundingClientRect();\n const windowScrollTop: number = this.getWindowScrollTop();\n const windowScrollLeft: number = this.getWindowScrollLeft();\n const viewport: any = this.getViewport();\n let top: number, left: number;\n\n if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {\n top = targetOffset.top + windowScrollTop - elementOuterHeight;\n element.style.transformOrigin = 'bottom';\n\n if (top < 0) {\n top = windowScrollTop;\n }\n } else {\n top = targetOuterHeight + targetOffset.top + windowScrollTop;\n element.style.transformOrigin = 'top';\n }\n\n if (targetOffset.left + elementOuterWidth > viewport.width) { left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth); } else { left = targetOffset.left + windowScrollLeft; }\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n\n static getParents(element: any, parents: any = []): any {\n return (element['parentNode'] === null)\n ? parents\n : this.getParents(element.parentNode, parents.concat([element.parentNode]));\n }\n\n static getScrollableParents(element: any): any[] {\n const scrollableParents: any[] = [];\n\n if (element) {\n const parents: any = this.getParents(element);\n const overflowRegex = /(auto|scroll)/;\n\n const overflowCheck: (node: any) => boolean = (node: any): boolean => {\n const styleDeclaration: CSSStyleDeclaration = window['getComputedStyle'](node, null);\n return overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));\n };\n\n for (const parent of parents) {\n const scrollSelectors: any = parent.nodeType === 1 && parent.dataset['scrollselectors'];\n if (scrollSelectors) {\n const selectors: any = scrollSelectors.split(',');\n for (const selector of selectors) {\n const el: any = this.findSingle(parent, selector);\n if (el && overflowCheck(el)) {\n scrollableParents.push(el);\n }\n }\n }\n\n if (parent.nodeType !== 9 && overflowCheck(parent)) {\n scrollableParents.push(parent);\n }\n }\n }\n\n return scrollableParents;\n }\n\n public static getHiddenElementOuterHeight(element: any): number {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n const elementHeight: any = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return elementHeight;\n }\n\n public static getHiddenElementOuterWidth(element: any): number {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n const elementWidth: any = element.offsetWidth;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return elementWidth;\n }\n\n public static getHiddenElementDimensions(element: any): any {\n const dimensions: any = {};\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n dimensions.width = element.offsetWidth;\n dimensions.height = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return dimensions;\n }\n\n public static scrollInView(container: any, item: any): void {\n const borderTopValue: string = getComputedStyle(container).getPropertyValue('borderTopWidth');\n const borderTop: number = borderTopValue ? parseFloat(borderTopValue) : 0;\n const paddingTopValue: string = getComputedStyle(container).getPropertyValue('paddingTop');\n const paddingTop: number = paddingTopValue ? parseFloat(paddingTopValue) : 0;\n const containerRect: any = container.getBoundingClientRect();\n const itemRect: any = item.getBoundingClientRect();\n const offset: number = itemRect.top + document.body.scrollTop - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\n const scroll: any = container.scrollTop;\n const elementHeight: any = container.clientHeight;\n const itemHeight: any = this.getOuterHeight(item);\n\n if (offset < 0) {\n container.scrollTop = scroll + offset;\n } else if (offset + itemHeight > elementHeight) {\n container.scrollTop = scroll + offset - elementHeight + itemHeight;\n }\n }\n\n public static fadeIn(element: any, duration: number): void {\n element.style.opacity = 0;\n\n let last: number = +new Date();\n let opacity: number = 0;\n const tick: () => void = (): void => {\n opacity = +element.style.opacity.replace(',', '.') + (new Date().getTime() - last) / duration;\n element.style.opacity = opacity;\n last = +new Date();\n if (+opacity < 1) {\n (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);\n }\n };\n\n tick();\n }\n\n public static fadeOut(element: any, ms: number): void {\n let opacity: number = 1;\n const interval: number = 50;\n const duration: number = ms;\n const gap: number = interval / duration;\n\n const fading = setInterval((): void => {\n opacity = opacity - gap;\n\n if (opacity <= 0) {\n opacity = 0;\n clearInterval(fading);\n }\n\n element.style.opacity = opacity;\n }, interval);\n }\n\n public static getWindowScrollTop(): number {\n const doc: HTMLElement = document.documentElement;\n return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n }\n\n public static getWindowScrollLeft(): number {\n const doc: HTMLElement = document.documentElement;\n return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n }\n\n public static matches(element: any, selector: string): boolean {\n const p: Element = Element.prototype;\n const f: any =\n p['matches'] ||\n p.webkitMatchesSelector ||\n p['mozMatchesSelector'] ||\n p['msMatchesSelector'] ||\n function (s: any): boolean {\n return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n return f.call(element, selector);\n }\n\n public static getOuterWidth(el: any, margin?: any): number {\n let width: number = el.offsetWidth;\n if (margin) {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n\n return width;\n }\n\n public static getHorizontalPadding(el: any): number {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n return parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n }\n\n public static getHorizontalMargin(el: any): number {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n return parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n\n public static innerWidth(el: any): number {\n let width: number = el.offsetWidth;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n\n public static width(el: any): number {\n let width: number = el.offsetWidth;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n\n public static getInnerHeight(el: any): number {\n let height: number = el.offsetHeight;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n height += parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);\n return height;\n }\n\n public static getOuterHeight(el: any, margin?: any): number {\n let height: number = el.offsetHeight;\n\n if (margin) {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n\n return height;\n }\n\n public static getHeight(el: any): number {\n let height: number = el.offsetHeight;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n\n return height;\n }\n\n public static getWidth(el: any): number {\n let width: number = el.offsetWidth;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n\n return width;\n }\n\n public static getViewport(): { width: number; height: number; } {\n const win = window;\n const d: Document = document;\n const e: HTMLElement = d.documentElement;\n const g: HTMLBodyElement = d.getElementsByTagName('body')[0];\n const w: number = win.innerWidth || e.clientWidth || g.clientWidth;\n const h: number = win.innerHeight || e.clientHeight || g.clientHeight;\n\n return { width: w, height: h };\n }\n\n public static getOffset(el: any): { top: any; left: any; } {\n const rect: any = el.getBoundingClientRect();\n\n return {\n top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),\n left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0)\n };\n }\n\n public static replaceElementWith(element: any, replacementElement: any): any {\n const parentNode: any = element.parentNode;\n if (!parentNode) {\n throw new Error(`Can't replace element`);\n }\n return parentNode.replaceChild(replacementElement, element);\n }\n\n public static getUserAgent(): string {\n return navigator.userAgent;\n }\n\n public static isIE(): boolean {\n const ua: string = window.navigator.userAgent;\n\n const msie: number = ua.indexOf('MSIE ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return true;\n }\n\n const trident: number = ua.indexOf('Trident/');\n if (trident > 0) {\n // IE 11 => return version number\n const rv: number = ua.indexOf('rv:');\n return true;\n }\n\n const edge: number = ua.indexOf('Edge/');\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return true;\n }\n\n // other browser\n return false;\n }\n\n public static isIOS(): boolean {\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];\n }\n\n public static isAndroid(): boolean {\n return /(android)/i.test(navigator.userAgent);\n }\n\n public static isTouchDevice(): boolean {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n\n public static appendChild(element: any, target: any): void {\n if (this.isElement(target)) {\n target.appendChild(element);\n } else if (target.el && target.el.nativeElement) {\n target.el.nativeElement.appendChild(element);\n } else {\n throw new Error('Cannot append ' + target + ' to ' + element);\n }\n }\n\n public static removeChild(element: any, target: any): void {\n if (this.isElement(target)) {\n target.removeChild(element);\n } else if (target.el && target.el.nativeElement) {\n target.el.nativeElement.removeChild(element);\n } else {\n throw new Error('Cannot remove ' + element + ' from ' + target);\n }\n }\n\n public static removeElement(element: Element): void {\n if (!('remove' in Element.prototype)) {\n element.parentNode.removeChild(element);\n } else {\n element.remove();\n }\n }\n\n public static isElement(obj: any): boolean {\n return (typeof HTMLElement === 'object')\n ? (obj instanceof HTMLElement)\n : (obj) && (typeof obj === 'object') && (obj !== null) && (obj.nodeType === 1) && (typeof obj.nodeName === 'string');\n }\n\n public static calculateScrollbarWidth(el?: HTMLElement): number {\n if (el) {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n return el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth);\n } else {\n if (this.calculatedScrollbarWidth !== null) {\n return this.calculatedScrollbarWidth;\n }\n\n const scrollDiv: HTMLDivElement = document.createElement('div');\n scrollDiv.className = 'p-scrollbar-measure';\n document.body.appendChild(scrollDiv);\n\n const scrollbarWidth: number = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n\n this.calculatedScrollbarWidth = scrollbarWidth;\n\n return scrollbarWidth;\n }\n }\n\n public static calculateScrollbarHeight(): number {\n if (this.calculatedScrollbarHeight !== null) {\n return this.calculatedScrollbarHeight;\n }\n\n const scrollDiv: HTMLDivElement = document.createElement('div');\n scrollDiv.className = 'p-scrollbar-measure';\n document.body.appendChild(scrollDiv);\n\n const scrollbarHeight: number = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n document.body.removeChild(scrollDiv);\n\n this.calculatedScrollbarWidth = scrollbarHeight;\n\n return scrollbarHeight;\n }\n\n public static invokeElementMethod(element: any, methodName: string, args?: any[]): void {\n (element as any)[methodName].apply(element, args);\n }\n\n public static clearSelection(): void {\n if (window.getSelection) {\n if (window.getSelection().empty) {\n window.getSelection().empty();\n } else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {\n window.getSelection().removeAllRanges();\n }\n } else if (document['selection'] && document['selection'].empty) {\n try {\n document['selection'].empty();\n } catch (error) {\n // ignore IE bug\n }\n }\n }\n\n public static getBrowser(): any {\n if (!this.browser) {\n const matched: { browser: string; version: string; } = this.resolveUserAgent();\n this.browser = {};\n\n if (matched.browser) {\n this.browser[matched.browser] = true;\n this.browser['version'] = matched.version;\n }\n\n if (this.browser['chrome']) {\n this.browser['webkit'] = true;\n } else if (this.browser['webkit']) {\n this.browser['safari'] = true;\n }\n }\n\n return this.browser;\n }\n\n public static resolveUserAgent(): { browser: string; version: string; } {\n const ua: string = navigator.userAgent.toLowerCase();\n const match: RegExpExecArray | [] = /(chrome)[ \\/]([\\w.]+)/.exec(ua) || /(webkit)[ \\/]([\\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) || /(msie) ([\\w.]+)/.exec(ua) || (ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua)) || [];\n\n return {\n browser: match[1] || '',\n version: match[2] || '0'\n };\n }\n\n public static isInteger(value: any): boolean {\n if (Number.isInteger) {\n return Number.isInteger(value);\n } else {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n }\n }\n\n public static isHidden(element: HTMLElement): boolean {\n return !element || element.offsetParent === null;\n }\n\n public static isVisible(element: HTMLElement): boolean {\n return element && element.offsetParent != null;\n }\n\n public static isExist(element: HTMLElement): ParentNode {\n return element !== null && typeof element !== 'undefined' && element.nodeName && element.parentNode;\n }\n\n public static focus(element: HTMLElement, options?: FocusOptions): void {\n element && document.activeElement !== element && element.focus(options);\n }\n\n public static getFocusableElements(element: HTMLElement): any[] {\n const focusableElements: any[] = GIPIDomHandler.find(\n element,\n `button:not([tabindex = '-1']):not([disabled]):not([style*='display:none']):not([hidden]),\n [href]: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 );\n\n const visibleFocusableElements: any[] = [];\n for (const focusableElement of focusableElements) {\n if (!!(focusableElement.offsetWidth || focusableElement.offsetHeight || focusableElement.getClientRects().length)) { visibleFocusableElements.push(focusableElement); }\n }\n return visibleFocusableElements;\n }\n\n public static getNextFocusableElement(element: HTMLElement, reverse = false): any {\n const focusableElements: any[] = GIPIDomHandler.getFocusableElements(element);\n let index: number = 0;\n if (focusableElements && focusableElements.length > 0) {\n const focusedIndex: number = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n\n if (reverse) {\n if (focusedIndex == -1 || focusedIndex === 0) {\n index = focusableElements.length - 1;\n } else {\n index = focusedIndex - 1;\n }\n } else if (focusedIndex != -1 && focusedIndex !== focusableElements.length - 1) {\n index = focusedIndex + 1;\n }\n }\n\n return focusableElements[index];\n }\n\n static generateZIndex(): number {\n this.zIndex = this.zIndex || 999;\n return ++this.zIndex;\n }\n\n public static getSelection(): string {\n if (window.getSelection) {\n return window.getSelection().toString();\n } else if (document.getSelection) {\n return document.getSelection().toString();\n } else if (document['selection']) {\n return document['selection'].createRange().text;\n }\n\n return null;\n }\n\n public static getTargetElement(target: any, el?: HTMLElement) {\n if (!target) {\n return null;\n }\n\n switch (target) {\n case 'document': {\n return document;\n } case 'window': {\n return window;\n } case '@next': {\n return el?.nextElementSibling;\n } case '@prev': {\n return el?.previousElementSibling;\n } case '@parent': {\n return el?.parentElement;\n } case '@grandparent': {\n return el?.parentElement.parentElement;\n } default: {\n const type: 'string' | 'number' | 'bigint' | 'boolean' | 'symbol' | 'undefined' | 'object' | 'function' = typeof target;\n\n if (type === 'string') {\n return document.querySelector(target);\n } else if (type === 'object' && target.hasOwnProperty('nativeElement')) {\n return this.isExist(target.nativeElement) ? target.nativeElement : undefined;\n }\n\n const isFunction: (obj: any) => boolean = (obj: any): boolean => !!(obj && obj.constructor && obj.call && obj.apply);\n const element: any = isFunction(target) ? target() : target;\n\n return (element && element.nodeType === 9) || this.isExist(element) ? element : null;\n }\n }\n }\n}\n","/**\n * Lança uma exceção para o caso em que o gatilho popover não possui uma instância popover válida\n */\nexport function throwPopoverMissingError() {\n throw Error(`popover-trigger: deve passar em uma instância popover.\n\n Example:\n <gipi-popover #popover=\"popover\"> </gipi-popover>\n <button [popoverTriggerFor]=\"popover\"> </button>`);\n}\n\n/**\n * Lança uma exceção para o caso em que o valor popoverPositionX do popover não é válido.\n * Em outras palavras, não corresponde a 'before' ou 'after'.\n */\nexport function throwPopoverInvalidPositionX() {\n throw Error(`O valor popoverPositionX deve ser 'before' ou after'.\n Example: <gipi-popover popoverPositionX=\"before\" #popover=\"popover\"> </gipi-popover>`);\n}\n\n/**\n * Lança uma exceção para o caso em que o valor popoverPositionY do popover não é válido.\n * Em outras palavras, não corresponde a 'above' ou 'below'.\n */\nexport function throwPopoverInvalidPositionY() {\n throw Error(`O valor popoverPositionY deve ser 'above' ou below'.\n Example: <gipi-popover popoverPositionY=\"above\" #popover=\"popover\"> </gipi-popover>`);\n}\n","import { isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { FlexibleConnectedPositionStrategy, HorizontalConnectionPos, Overlay, OverlayConfig, OverlayRef, ScrollStrategy, VerticalConnectionPos } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { AfterViewInit, ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnDestroy, Optional, Output, ViewContainerRef, } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ObjectUtil } from '../../../../core/utils/object.util';\nimport { StringUtil } from '../../../../core/utils/string.util';\nimport { GIPIDomHandler } from '../../dom/dom-handler';\nimport { throwPopoverMissingError } from './popover-errors';\nimport { PopoverPanel, Target } from './popover-interfaces';\nimport { PopoverPositionX, PopoverPositionY, PopoverScrollStrategy, PopoverTriggerEvent } from './popover-types';\n\n/**\n * Esta diretiva destina-se a ser usada em conjunto com uma tag gipi-popover.\n * Ele é responsável por alternar a exibição da instância popover fornecida.\n */\n\n@Directive({\n selector: '[popoverTriggerFor]',\n exportAs: 'popoverTrigger'\n})\nexport class GIPIPopoverTrigger implements AfterViewInit, OnDestroy { // tslint:disable-line:directive-class-suffix\n\n @HostBinding('attr.aria-haspopup') ariaHaspopup: boolean = true;\n\n popoverOpened: Subject<void> = new Subject<void>();\n popoverClosed: Subject<void> = new Subject<void>();\n\n private _portal: TemplatePortal<any>;\n private _overlayRef: OverlayRef | null = null;\n private _popoverOpen: boolean = false;\n private _halt: boolean = false;\n private _backdropSubscription: Subscription;\n private _positionSubscription: Subscription;\n private _detachmentsSubscription: Subscription;\n\n private _mouseoverTimer: any;\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: boolean = false;\n\n private _onDestroy: Subject<void> = new Subject<void>();\n\n /** References the popover instance that the trigger is associated with. */\n @Input('popoverTriggerFor') popover: PopoverPanel;\n\n /** References the popover target instance that the trigger is associated with. */\n @Input('popoverTargetAt') targetElement: Target;\n\n /** Position of the popover in the X axis */\n @Input('popoverPositionX') positionX: PopoverPositionX;\n\n /** Position of the popover in the Y axis */\n @Input('popoverPositionY') positionY: PopoverPositionY;\n\n /** Popover trigger event */\n @Input('popoverTriggerOn') triggerEvent: PopoverTriggerEvent;\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;\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;\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() opened: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted when the associated popover is closed. */\n @Output() closed: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n private _overlay: Overlay,\n public _elementRef: ElementRef,\n private _viewContainerRef: ViewContainerRef,\n @Optional() private _dir: Directionality,\n private _changeDetectorRef: ChangeDetectorRef\n ) { }\n\n ngAfterViewInit(): void {\n this._checkPopover();\n this._setCurrentConfig();\n this.popover.close.subscribe(() => this.closePopover());\n }\n\n ngOnDestroy(): void {\n this.destroyPopover();\n }\n\n private _setCurrentConfig(): void {\n if (this.positionX === 'before' || this.positionX === 'after') {\n this.popover.positionX = this.positionX;\n }\n\n if (this.positionY === 'above' || this.positionY === 'below') {\n this.popover.positionY = this.positionY;\n }\n\n if (this.triggerEvent) {\n this.popover.triggerEvent = this.triggerEvent;\n }\n\n if (this.enterDelay) {\n this.popover.enterDelay = this.enterDelay;\n }\n\n if (this.leaveDelay) {\n this.popover.leaveDelay = this.leaveDelay;\n }\n\n if (this.overlapTrigger === true || this.overlapTrigger === false) {\n this.popover.overlapTrigger = this.overlapTrigger;\n }\n\n if (this.targetOffsetX) {\n this.popover.targetOffsetX = this.targetOffsetX;\n }\n\n if (this.targetOffsetY) {\n this.popover.targetOffsetY = this.targetOffsetY;\n }\n\n if (this.arrowOffsetX) {\n this.popover.arrowOffsetX = this.arrowOffsetX;\n }\n\n if (this.arrowWidth) {\n this.popover.arrowWidth = this.arrowWidth;\n }\n\n if (this.arrowColor) {\n this.popover.arrowColor = this.arrowColor;\n }\n\n if (this.closeOnClick === true || this.closeOnClick === false) {\n this.popover.closeOnClick = this.closeOnClick;\n }\n\n this.popover.setCurrentStyles();\n }\n\n /** Whether the popover is open. */\n get popoverOpen(): boolean { return this._popoverOpen; }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n if (this.popover.triggerEvent === 'click') {\n this.togglePopover();\n }\n }\n\n @HostListener('mouseenter', ['$event'])\n onMouseEnter(event: MouseEvent): void {\n this._halt = false;\n if (this.popover.triggerEvent === 'hover') {\n this._mouseoverTimer = setTimeout(() => {\n this.openPopover();\n }, this.popover.enterDelay);\n }\n }\n\n @HostListener('mouseleave', ['$event'])\n onMouseLeave(event: MouseEvent): void {\n if (this.popover.triggerEvent === 'hover') {\n if (this._mouseoverTimer) {\n clearTimeout(this._mouseoverTimer);\n this._mouseoverTimer = null;\n }\n if (this._popoverOpen) {\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 togglePopover(): void {\n return this._popoverOpen ? this.closePopover() : this.openPopover();\n }\n\n /** Opens the popover. */\n openPopover(): void {\n if (!this._popoverOpen && !this._halt) {\n this._createOverlay().attach(this._portal);\n\n if (!ObjectUtil.isNull(this._viewContainerRef) && !ObjectUtil.isNull(this._viewContainerRef.element)) {\n const width: number = GIPIDomHandler.getWidth((this._viewContainerRef.element.nativeElement as HTMLElement));\n if (StringUtil.isEmpty(this.popover.popoverWidth) || (this.popover.popoverWidth === 'auto')) {\n this.popover.popoverWidth = `${width}px`;\n }\n }\n\n this._subscribeToBackdrop();\n this._subscribeToDetachments();\n\n this._initPopover();\n }\n }\n\n /** Closes the popover. */\n closePopover(): void {\n if (this._overlayRef) {\n this._overlayRef.detach();\n this._resetPopover();\n }\n }\n\n /** Removes the popover from the DOM. */\n 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._onDestroy.next();\n this._onDestroy.complete();\n }\n\n /** Focuses the popover trigger. */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n /** The text direction of the containing app. */\n get dir(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\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(() => {\n this.popover._emitCloseEvent();\n });\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(() => {\n this._setPopoverClosed();\n });\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._popoverOpen) {\n this._popoverOpen = true;\n\n this.popoverOpened.next();\n this.opened.emit();\n }\n }\n\n /** set state rather than toggle to support triggers sharing a popover */\n private _setPopoverClosed(): void {\n if (this._popoverOpen) {\n this._popoverOpen = false;\n\n this.popoverClosed.next();\n this.closed.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(): void {\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 = 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 = 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 = this.dir;\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: PopoverScrollStrategy): ScrollStrategy {\n switch (strategy) {\n case 'noop':\n return this._overlay.scrollStrategies.noop();\n case 'close':\n return this._overlay.scrollStrategies.close();\n case 'block':\n return this._overlay.scrollStrategies.block();\n case 'reposition':\n default:\n 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: PopoverPositionX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n let posisionY: PopoverPositionY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n\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[] =\n this.popover.positionX === 'before' ? ['end', 'start'] : ['start', 'end'];\n\n const [overlayY, overlayFallbackY]: VerticalConnectionPos[] =\n this.popover.positionY === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\n\n // let originY = overlayY;\n // let fallbackOriginY = overlayFallbackY;\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 popoverTargetAt 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: ElementRef<any> = this._elementRef;\n if (typeof this.targetElement !== 'undefined') {\n this.popover.containerPositioning = true;\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']) _handleMousedown(event: MouseEvent): void {\n if (event && !isFakeMousedownFromScreenReader(event)) {\n this._openedByMouse = true;\n }\n }\n}\n","import { Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, ViewChild, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { GIPIPopoverTrigger } from '../popover/shared/popover-trigger';\n\ntype ButtonIconPosition = 'left' | 'right' | 'top' | 'bottom' | 'center';\n\n@Component({\n selector: `gipi-button[gipi-primary], gipi-button[gipi-primary-icon], gipi-button[gipi-secondary], gipi-button[gipi-secondary-icon],\n gipi-button[gipi-tertiary], gipi-button[gipi-link], gipi-button[gipi-icon], gipi-button[gipi-action]`,\n exportAs: 'gipiButton',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIButtonComponent => GIPIButtonComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-button',\n }\n})\nexport class GIPIButtonComponent implements OnInit, OnDestroy {\n\n readonly isButtonPrimary: boolean = this._hasHostAttributes('gipi-primary');\n readonly isButtonPrimaryIcon: boolean = this._hasHostAttributes('gipi-primary-icon');\n readonly isButtonSecondary: boolean = this._hasHostAttributes('gipi-secondary');\n readonly isButtonSecondaryIcon: boolean = this._hasHostAttributes('gipi-secondary-icon');\n readonly isButtonTertiary: boolean = this._hasHostAttributes('gipi-tertiary');\n readonly isButtonTertiaryIcon: boolean = this._hasHostAttributes('gipi-tertiary-icon');\n readonly isButtonLink: boolean = this._hasHostAttributes('gipi-link');\n readonly isButtonIcon: boolean = this._hasHostAttributes('gipi-icon');\n readonly isButtonAction: boolean = this._hasHostAttributes('gipi-action');\n\n _overlayVisible: boolean = false;\n\n @ViewChild(GIPIPopoverTrigger, { static: false }) popoverTrigger: GIPIPopoverTrigger;\n\n @Input() id: string;\n\n @Input() name: string;\n\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n\n @Input() ariaLabel: string = '';\n\n @Input() title: string = '';\n\n @Input() label: string = '';\n\n @Input() buttonClass: string;\n\n @Input() buttonPadding: number | string;\n\n @Input() iconWidth: number | string;\n @Input() iconHeight: number | string;\n\n @Input() icon: string = null;\n\n @Input() svgIcon: string = null;\n\n @Input() iconPos: ButtonIconPosition = 'left';\n\n @Input() disabled: boolean = false;\n\n @Input() loading: boolean = false;\n\n @Input() notification: boolean = false;\n\n @Input() tooltip: string = '';\n\n @Input() popover: boolean = false;\n\n @Input() overlay: boolean = false;\n\n @Input('forInput') isForInput: boolean = false;\n\n @Output() onShowOverlay: EventEmitter<void> = new EventEmitter<void>();\n @Output() onOpenPopover: EventEmitter<void> = new EventEmitter<void>();\n @Output() onClosePopover: EventEmitter<void> = new EventEmitter<void>();\n @Output('click') onClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(true);\n @Output('focus') onFocus: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(true);\n @Output('blur') onBlur: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(true);\n\n constructor(private _elementRef: ElementRef) { }\n\n ngOnInit(): void { }\n\n ngOnDestroy(): void {\n if (this.popoverTrigger) {\n this.popoverTrigger.destroyPopover();\n }\n }\n\n getHostElement(): any {\n return this._elementRef.nativeElement;\n }\n\n private _hasHostAttributes(...attributes: string[]): boolean {\n return attributes.some(attribute => this.getHostElement().hasAttribute(attribute));\n }\n\n toggleOverlay(): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n this._overlayVisible = !this._overlayVisible;\n }\n }\n\n showPopover(): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n this.popoverTrigger.openPopover();\n }\n }\n\n closePopover(): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n this.popoverTrigger.closePopover();\n }\n }\n\n handleClick(event: MouseEvent): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n if (this.overlay) {\n this.toggleOverlay();\n }\n this.onClick.emit(event);\n event.stopPropagation();\n }\n }\n\n handleFocus(event: MouseEvent): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n this.onFocus.emit(event);\n event.stopPropagation();\n }\n }\n\n handleBlur(event: MouseEvent): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n this.onBlur.emit(event);\n event.stopPropagation();\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: UIEvent): void {\n if (this.popoverTrigger) {\n this.popoverTrigger.closePopover();\n event.stopPropagation();\n }\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport class RemoveChange<T> {\n chip: T;\n index: number;\n}\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-chips`,\n exportAs: 'gipiChips',\n templateUrl: './chips.component.html',\n styleUrls: ['./chips.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIChipsComponent => GIPIChipsComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-chips',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIChipsComponent<T> implements OnInit, ControlValueAccessor {\n\n private _name: string = `gipi-chips-${nextUniqueId++}`;\n\n @Input() id: number | string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() label: string = 'Selecionados';\n\n @Input() labelRemoveAll: string = 'Limpar';\n\n @Input() ariaLabel: string;\n\n @Input() disabled: boolean = false;\n\n @Input() showRemovableAll: boolean = false;\n\n @Input() showRemovable: boolean = false;\n\n @Input() property: string = 'description';\n\n private _value: T[];\n @Input() set value(value: T[]) {\n this._value = value;\n this.onChange(value);\n this.onTouch();\n this._changeDetectorRef.markForCheck();\n }\n get value(): T[] {\n return this._value;\n }\n\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onClick: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() removeChange: EventEmitter<RemoveChange<T>> = new EventEmitter<RemoveChange<T>>();\n @Output() removeAllChange: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n public elementRef: ElementRef,\n ) { }\n\n ngOnInit() { }\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState?(value: boolean): void {\n this.disabled = value;\n this._changeDetectorRef.markForCheck();\n }\n\n public removeChip(chip: T, index: number): void {\n if (!this.disabled && this.showRemovable) {\n this.value.splice(index, 1);\n this._changeDetectorRef.detectChanges();\n this.removeChange.emit({ chip: chip, index: index });\n }\n }\n\n public removeAllChips(): void {\n if (!this.disabled && this.showRemovableAll) {\n this.value = [];\n this._changeDetectorRef.detectChanges();\n this.removeAllChange.emit();\n }\n }\n\n}\n","import { AbstractDTO } from './abstract.dto';\n\nexport class ConfirmationDTO extends AbstractDTO {\n\n title: string;\n\n message: string;\n\n listMessage?: string[];\n\n isWarningScreen?: boolean = false;\n\n width?: string;\n\n accept?: Function;\n\n cancel?: Function;\n\n}\n","import { Component, Inject, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';\n\nimport { AppMessages } from '../../../core/app-messages';\nimport { APP_MESSAGES } from '../../../core/app.messages';\nimport { ConfirmationDTO } from '../../../core/models/dto/confirmation.dto';\n\n@Component({\n selector: `gipi-confirmation-dialog`,\n exportAs: 'gipiConfirmationDialog',\n templateUrl: './confirmation-dialog.component.html',\n styleUrls: ['./confirmation-dialog.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIConfirmationDialogComponent => GIPIConfirmationDialogComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-confirmation-dialog',\n },\n})\nexport class GIPIConfirmationDialogComponent implements OnInit {\n\n constructor(\n public dialogRef: MatDialogRef<GIPIConfirmationDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public confirmation: ConfirmationDTO,\n @Inject(APP_MESSAGES) public messages: AppMessages\n ) { }\n\n ngOnInit(): void { }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, ViewChild, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { GIPIPopoverTrigger } from '../popover/shared/popover-trigger';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-dropdown-menu`,\n exportAs: 'gipiDropdownMenu',\n templateUrl: './dropdown-menu.component.html',\n styleUrls: ['./dropdown-menu.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIDropdownMenuComponent => GIPIDropdownMenuComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-dropdown-menu',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIDropdownMenuComponent implements OnInit, OnDestroy {\n\n private _name: string = `gipi-dropdown-menu-${nextUniqueId++}`;\n\n @ViewChild(GIPIPopoverTrigger, { static: false }) popoverTrigger: GIPIPopoverTrigger;\n\n @Input() id: number | string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() label: string = '';\n\n @Input() ariaLabel: string = '';\n\n @Input() placeholder: string = '';\n\n @Input() disabled: boolean = false;\n\n @Input() required: boolean = false;\n\n @Input() showTrigger: boolean = true;\n\n private _trigger: number = 0;\n @Input() set trigger(value: number) {\n this._trigger = value;\n }\n get trigger(): number {\n return this._trigger;\n }\n\n @Output() onKeydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onClick: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onOpenPopover: EventEmitter<void> = new EventEmitter<void>();\n @Output() onClosePopover: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n public elementRef: ElementRef,\n ) { }\n\n ngOnInit() { }\n\n ngOnDestroy(): void {\n if (this.popoverTrigger) {\n this.popoverTrigger.destroyPopover();\n }\n }\n\n public onInputKeydown(event: KeyboardEvent): void {\n if (!this.disabled) {\n this.onKeydown.emit(event);\n }\n }\n\n public onInputFocus(event: Event): void {\n if (!this.disabled) {\n this.onFocus.emit(event);\n }\n }\n\n public onInputBlur(event: Event): void {\n if (!this.disabled) {\n this.onBlur.emit(event);\n }\n }\n\n public onInputClick(event: Event): void {\n if (!this.disabled) {\n this.onClick.emit(event);\n event.stopPropagation();\n }\n }\n\n public togglePopover(): void {\n if (!this.disabled) {\n this.popoverTrigger.togglePopover();\n }\n }\n\n public showPopover(): void {\n if (this.disabled) {\n return;\n } else {\n this.popoverTrigger.openPopover();\n }\n }\n\n public closePopover(): void {\n if (this.disabled) {\n return;\n } else {\n this.popoverTrigger.closePopover();\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: UIEvent): void {\n if (this.popoverTrigger) {\n this.popoverTrigger.closePopover();\n }\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-expansion-panel`,\n exportAs: 'gipiExpansionPanel',\n templateUrl: './expansion-panel.component.html',\n styleUrls: ['./expansion-panel.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIExpansionPanelComponent => GIPIExpansionPanelComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-expansion-panel',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIExpansionPanelComponent implements OnInit {\n\n @Input() icon: string;\n\n @Input() svgIcon: string;\n\n @Input() iconSize: string | number;\n\n @Input() panelTitle: string;\n\n @Input() isExpanded: boolean = false;\n\n @Input() startExpanded: boolean = false;\n\n @Input() disabled: boolean = false;\n\n @Output() expanded: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(\n public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef\n ) { }\n\n ngOnInit(): void {\n if (this.startExpanded) {\n this.isExpanded = this.startExpanded;\n }\n }\n\n emitExpanded(value: boolean): void {\n this.expanded.emit(value);\n }\n\n}\n\n\n","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig } from '@angular/material';\nimport { tap } from 'rxjs/operators';\n\nimport { GIPIConfirmationDialogComponent } from '../../shared/gipi-components/confirmation-dialog/confirmation-dialog.component';\nimport { ConfirmationDTO } from '../models/dto/confirmation.dto';\nimport { AbstractService } from './abstract.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfirmationService extends AbstractService {\n\n constructor(public dialog: MatDialog) {\n super();\n }\n\n async confirm(confirmation: ConfirmationDTO): Promise<boolean> {\n let result: boolean = false;\n const dialogConfig = new MatDialogConfig();\n dialogConfig.disableClose = true;\n dialogConfig.autoFocus = true;\n dialogConfig.data = confirmation;\n dialogConfig.minWidth = '20%';\n (confirmation.width ? dialogConfig.width = confirmation.width : dialogConfig.maxWidth = '40%');\n\n await this.dialog\n .open(GIPIConfirmationDialogComponent, dialogConfig)\n .afterClosed()\n .pipe(\n tap((isAccept: boolean) => {\n if (isAccept) {\n if ((confirmation.accept !== null) && (confirmation.accept !== undefined)) {\n confirmation.accept();\n }\n } else {\n if ((confirmation.cancel !== null) && (confirmation.cancel !== undefined)) {\n confirmation.cancel();\n }\n }\n result = isAccept;\n })\n )\n .toPromise();\n\n return result;\n }\n\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ConfirmationService } from '../../../core/services/confirmation.service';\nimport { MessageService } from '../../../core/services/message.service';\nimport { ArrayUtil } from '../../../core/utils/array.util';\nimport { StringUtil } from '../../../core/utils/string.util';\n\n@Component({\n selector: `gipi-file-drag-and-drop`,\n exportAs: 'gipiFileDragAndDrop',\n templateUrl: './file-drag-and-drop.component.html',\n styleUrls: ['./file-drag-and-drop.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIFileDragAndDropComponent => GIPIFileDragAndDropComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-file-drag-and-drop',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIFileDragAndDropComponent implements ControlValueAccessor, OnInit {\n\n @ViewChild('inputFile', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @Input() files: any[] = [];\n\n @Input() color: string;\n\n @Input() icon: string;\n\n @Input() iconFile: string;\n\n @Input() iconDeleteFile: string;\n\n @Input() svgIcon: string;\n\n @Input() svgIconFile: string;\n\n @Input() svgIconDeleteFile: string;\n\n @Input() iconSize: number = 0;\n\n @Input() iconSizeFile: number = 0;\n\n @Input() multiple: boolean = false;\n\n @Input() disabled: boolean;\n\n @Input() onlyExtensions: string[];\n\n @Input() verifyHasAdded: boolean = false;\n\n @Input() legendFieldset: string = '';\n\n @Input() listFileVisible: boolean = false;\n\n @Input() removingFiles: boolean = false;\n\n @Output() fileChange: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(\n private _messageService: MessageService,\n private _confirmationService: ConfirmationService\n ) { }\n\n ngOnInit(): void { }\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.files = value;\n }\n\n onFileChange(pFileList: File[]): void {\n if (this._validateCountFiles(pFileList) && this._validateExtensionFile(pFileList) && this._validateHasAdded(pFileList)) {\n this.files = Object.keys(pFileList).map(key => pFileList[key]);\n this.fileChange.emit(this.files);\n }\n this._elementRef.nativeElement.value = '';\n }\n\n onDeleteFile(file: File): void {\n let list: File[] = this.files;\n this.files = [];\n\n list = this.files.filter((fileUploaded) => fileUploaded.name !== file.name);\n this.files = list;\n\n this.fileChange.emit(this.files);\n this._elementRef.nativeElement.value = '';\n }\n\n onClearInputFile(emitFileChange: boolean): boolean {\n this._elementRef.nativeElement.value = '';\n this.files = [];\n if (emitFileChange) {\n this.fileChange.emit(this.files);\n }\n return ((this.files.length <= 0) && StringUtil.isEmpty(this._elementRef.nativeElement.value));\n }\n\n openConfirmDialogRemoveFile(file: File, index: number): void {\n try {\n this._confirmationService.confirm({\n title: 'Confirmação',\n message: `Deseja realmente remover o arquivo ${file.name} da lista?`,\n accept: () => {\n const list: File[] = this.files;\n list.splice(index, 1);\n this.files = [];\n this.files = list;\n },\n cancel: () => { }\n });\n } catch (e) {\n this.addErrorMessage(e);\n }\n }\n\n private _validateCountFiles(pFileList: File[]): boolean {\n if (!this.multiple && pFileList.length > 1) {\n this.addErrorMessage('Não é possível selecionar mais de um arquivo por vez');\n return false;\n }\n\n return true;\n }\n\n private _validateHasAdded(pFileList: File[]): boolean {\n if ((!this.verifyHasAdded) || (ArrayUtil.isEmpty(this.files))) {\n return true;\n }\n\n let valid: boolean = true;\n for (let i: number = 0; i < pFileList.length; i++) {\n const existInListFile: boolean = this.files.filter(f => f.name.toUpperCase() === pFileList[i].name.toUpperCase()).length > 0;\n if (existInListFile) {\n this.addErrorMessage(`O arquivo ${pFileList[i].name} já foi adicionado`);\n valid = false;\n break;\n }\n }\n\n return valid;\n }\n\n private _validateExtensionFile(pFileList: File[]): boolean {\n // Verifica se não há extensões especificadas\n if (!this.onlyExtensions || this.onlyExtensions.length === 0) {\n return true; // Se não há extensões especificadas, todos os arquivos são considerados válidos\n }\n\n const specialExtensions = this.onlyExtensions.filter(ext => ext.includes('*')).map(ext => ext.slice(0, ext.indexOf('*')));\n\n for (let i = 0; i < pFileList.length; i++) {\n const fileName = pFileList[i].name;\n const fileExtension = fileName.substring(fileName.lastIndexOf('.')).toLowerCase();\n\n // Verifica se a extensão está na lista de extensões permitidas\n let isValid = this.onlyExtensions.includes(fileExtension);\n\n // Se a extensão não estiver na lista e houver extensões especiais\n if (!isValid && specialExtensions.length > 0) {\n isValid = specialExtensions.some(specExt => fileExtension.startsWith(specExt));\n }\n\n // Se não for válido, adiciona mensagem de erro e retorna falso imediatamente\n if (!isValid) {\n this.addErrorMessage(`Informe somente arquivos com extensão ${this.onlyExtensions.join(', ')}`);\n return false;\n }\n }\n\n return true; // Se todas as extensões forem válidas, retorna true\n }\n\n private addSuccessMessage(message: string): void {\n this._messageService.add({\n icon: 'check_circle',\n title: 'Sucesso',\n message: message,\n type: 'success'\n });\n }\n\n private addErrorMessage(message: string): void {\n this._messageService.add({\n icon: 'cancel',\n title: 'Ocorreu um erro',\n message: message,\n type: 'error'\n });\n }\n\n}\n","import { Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-footer`,\n exportAs: 'gipiFooter',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIFooterComponent => GIPIFooterComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-footer',\n }\n})\nexport class GIPIFooterComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void { }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CurrencyMaskConfig } from 'ngx-currency';\nimport { ObjectUtil } from '../../../core';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-form-field`,\n exportAs: 'gipiFormField',\n templateUrl: './form-field.component.html',\n styleUrls: ['./form-field.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIFormFieldComponent => GIPIFormFieldComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-form-field',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIFormFieldComponent implements OnInit, ControlValueAccessor {\n\n private _name: string = `gipi-form-field-${nextUniqueId++}`;\n\n @Input() id: number | string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() label: string = '';\n\n @Input() ariaLabel: string = '';\n\n @Input() placeholder: string = '';\n\n @Input() readonly: boolean = false;\n\n @Input() disabled: boolean = false;\n\n @Input() required: boolean = false;\n\n @Input() showClear: boolean = false;\n\n @Input() showSearch: boolean = false;\n\n @Input() showTrigger: boolean = false;\n\n @Input() type: 'text' | 'email' | 'number' | 'password' | 'url' | 'tel' | 'select' | 'search' | 'currency' = 'text';\n\n @Input() min: number;\n\n @Input() max: number;\n\n @Input() maxLength: number;\n\n @Input() mask: string | undefined | null;\n\n @Input() pattern: string;\n\n @Input() optionsCurrency: Partial<CurrencyMaskConfig>;\n\n private _model: any;\n @Input() set model(value: any) {\n this._model = value;\n this.onChange(value);\n this.onTouch();\n this._changeDetectorRef.markForCheck();\n }\n get model() {\n return this._model;\n }\n\n private _value: any;\n @Input() set value(value: any) {\n this._value = value;\n }\n get value() {\n return this._value;\n }\n\n private _trigger: number = 0;\n @Input() set trigger(value: number) {\n this._trigger = value;\n }\n get trigger(): number {\n return this._trigger;\n }\n\n @ViewChild('inputRef', { static: true, read: ElementRef }) inputRef: ElementRef;\n\n @Output() onKeydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() onKeydownEnter: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onClick: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onClear: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onSearch: EventEmitter<Event> = new EventEmitter<Event>();\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n public elementRef: ElementRef,\n ) { }\n\n ngOnInit() { }\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n writeValue(value: any): void {\n this.model = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState?(value: boolean): void {\n this.disabled = value;\n this._changeDetectorRef.markForCheck();\n }\n\n public onInputKeydown(event: KeyboardEvent): void {\n if (!this.disabled) {\n if (event.key.toUpperCase() === 'ENTER') {\n this.onKeydownEnter.emit(event);\n }\n this.onKeydown.emit(event);\n }\n }\n\n public onInputFocus(event: Event): void {\n if (!this.disabled) {\n this.onFocus.emit(event);\n }\n }\n\n public onInputBlur(event: Event): void {\n if (!this.disabled) {\n this.onBlur.emit(event);\n this.onTouch();\n }\n }\n\n public onInputClick(event: Event): void {\n if (!this.disabled) {\n this.onClick.emit(event);\n this.focus();\n }\n }\n\n public onButtonClearClick(event: Event): void {\n if (!this.disabled) {\n if (this.type === 'search') {\n this.model = '';\n }\n this.onClear.emit(event);\n }\n }\n\n onButtonSearchClick(event: Event): void {\n if (!this.disabled && (this.type === 'search')) {\n this.onSearch.emit(event);\n }\n }\n\n /**\n * Seta o foco no inputRef\n */\n public focus(): void {\n if (!ObjectUtil.isNull(this.inputRef)) {\n this.inputRef.nativeElement.focus();\n }\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-helpful-tip`,\n exportAs: 'gipiHelpfulTip',\n templateUrl: './helpful-tip.component.html',\n styleUrls: ['./helpful-tip.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIHelpfulTipComponent => GIPIHelpfulTipComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-helpful-tip',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIHelpfulTipComponent implements OnInit {\n\n private _name: string = `gipi-form-field-${nextUniqueId++}`;\n\n @Input() id: number | string = this._name;\n\n @Input() name: string = this._name;\n\n private _tooltip: string = '';\n @Input() set tooltip(value: string) {\n this._tooltip = value;\n }\n get tooltip(): string {\n return this._tooltip;\n }\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n public elementRef: ElementRef,\n ) { }\n\n ngOnInit() { }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-input-checkbox`,\n exportAs: 'gipiInputCheckbox',\n templateUrl: './input-checkbox.component.html',\n styleUrls: ['./input-checkbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputCheckboxComponent => GIPIInputCheckboxComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-checkbox',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputCheckboxComponent implements ControlValueAccessor, OnInit {\n\n private _name: string = `gipi-input-checkbox-${nextUniqueId++}`;\n\n @Input() id: number | string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() label: string;\n\n @Input() disabled: boolean = false;\n\n @Input() disableRipple: boolean = false;\n\n @Input() labelPosition: 'before' | 'after' = 'after';\n\n @Input() required: boolean;\n\n @Input() indeterminate: boolean;\n\n private _value: any;\n @Input() set value(val: any) {\n this._value = val;\n this.onChange(val);\n this.onTouch();\n }\n get value() {\n return this._value;\n }\n\n @Output() change: EventEmitter<MatCheckboxChange> = new EventEmitter<MatCheckboxChange>();\n @Output() indeterminateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit(): void { }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this._changeDetectorRef.markForCheck();\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CurrencyMaskConfig } from 'ngx-currency';\nimport { ObjectUtil } from '../../../core';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-input-currency`,\n exportAs: 'gipiInputCurrency',\n templateUrl: './input-currency.component.html',\n styleUrls: ['./input-currency.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputCurrencyComponent => GIPIInputCurrencyComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-currency',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputCurrencyComponent implements OnInit, ControlValueAccessor {\n\n private _name: string = `gipi-input-currency-${nextUniqueId++}`;\n\n @Input() id: number | string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() label: string;\n\n @Input() ariaLabel: string;\n\n @Input() placeholder: string = '';\n\n @Input() readonly: boolean = false;\n\n @Input() disabled: boolean = false;\n\n @Input() required: boolean = false;\n\n @Input() min: number;\n\n @Input() max: number;\n\n @Input() maxLength: number;\n\n @Input() options: Partial<CurrencyMaskConfig>;\n\n private _model: any;\n @Input() set model(value: any) {\n this._model = value;\n this.onChange(value);\n this.onTouch();\n this._changeDetectorRef.markForCheck();\n }\n get model() {\n return this._model;\n }\n\n private _value: any;\n @Input() set value(value: any) {\n this._value = value;\n }\n get value() {\n return this._value;\n }\n\n @ViewChild('inputCurrencyRef', { static: true, read: ElementRef }) inputCurrencyRef: ElementRef;\n\n @Output() onKeydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() onKeydownEnter: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onClick: EventEmitter<Event> = new EventEmitter<Event>();\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n public elementRef: ElementRef,\n ) { }\n\n ngOnInit() { }\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n writeValue(value: any): void {\n this.model = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState?(value: boolean): void {\n this.disabled = value;\n this._changeDetectorRef.markForCheck();\n }\n\n public onInputKeydown(event: KeyboardEvent): void {\n if (!this.disabled) {\n if (event.key.toUpperCase() === 'ENTER') {\n this.onKeydownEnter.emit(event);\n }\n this.onKeydown.emit(event);\n }\n }\n\n public onInputFocus(event: Event): void {\n if (!this.disabled) {\n this.onFocus.emit(event);\n }\n }\n\n public onInputBlur(event: Event): void {\n if (!this.disabled) {\n this.onBlur.emit(event);\n this.onTouch();\n }\n }\n\n public onInputClick(event: Event): void {\n if (!this.disabled) {\n this.onClick.emit(event);\n this.focus();\n }\n }\n\n /**\n * Seta o foco no inputRef\n */\n public focus(): void {\n if (!ObjectUtil.isNull(this.inputCurrencyRef)) {\n this.inputCurrencyRef.nativeElement.focus();\n }\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { GIPINgConfig } from '../../api/gipi-ng-config';\n\nconst yearsPerPage = 24;\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-input-monthpicker`,\n exportAs: 'gipiInputMonthPicker',\n templateUrl: './input-monthpicker.component.html',\n styleUrls: ['./input-monthpicker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputMonthPickerComponent => GIPIInputMonthPickerComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-monthpicker',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputMonthPickerComponent implements OnInit, ControlValueAccessor {\n\n private _name: string = `gipi-input-monthpicker-${nextUniqueId++}`;\n\n private _initialYear: number;\n set initialYear(value: number) {\n if (value > 1900) {\n this._initialYear = value;\n }\n }\n get initialYear(): number {\n return this._initialYear;\n }\n\n private _yearArrays: number[] = [];\n set yearArrays(value: number[]) {\n this._yearArrays = value;\n }\n get yearArrays(): number[] {\n return this._yearArrays;\n }\n\n _now: Date = new Date();\n _currentMonth: number = this._now.getMonth();\n _currentYear: number = this._now.getFullYear();\n\n _overlayVisible: boolean = false;\n\n monthArrays: number[] = Array.from(Array(12).keys());\n\n monthNames: string[] = ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'];\n\n internalCalendarView: 'month' | 'year' = 'month';\n\n inputFieldValue: string;\n\n @Input() id: string | number = this._name;\n\n @Input() name: string = this._name;\n\n @Input() ariaLabel: string = '';\n\n @Input() label: string = '';\n\n @Input() placeholder: string = '';\n\n @Input() disabled: boolean = false;\n\n @Input() loading: boolean = false;\n\n @Input() required: boolean = false;\n\n @Input() showOnFocus: boolean = true;\n\n @Input() minDate: Date;\n\n @Input() maxDate: Date;\n\n private _calendarView: 'month' | 'year' = 'month';\n @Input() set calendarView(value: 'month' | 'year') {\n this._calendarView = value;\n\n if (!ObjectUtil.isNull(this.value)) {\n if (value === 'month') {\n this.monthChanged(this.value.getMonth());\n } else if (value === 'year') {\n this.yearChanged(this.value.getFullYear());\n }\n\n this.internalCalendarView = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n get calendarView(): 'month' | 'year' {\n return this._calendarView;\n }\n\n private _value: Date;\n @Input() set value(value: Date) {\n this._value = value;\n\n if (value) {\n value.setDate(1);\n this._value = value;\n\n if (this.calendarView === 'month') {\n const month: number = this.value.getMonth() + 1;\n this.inputFieldValue = `${((month <= 9) ? ('0' + month) : month)}/${this.value.getFullYear()}`;\n } else if (this.calendarView === 'year') {\n this.inputFieldValue = `${this.value.getFullYear()}`;\n }\n }\n\n this.onChange(value);\n this._changeDetectorRef.markForCheck();\n }\n get value(): Date {\n return this._value;\n }\n\n @Output() onClose: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onMonthChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() onYearChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() onKeydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() onKeydownEnter: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onClick: EventEmitter<Event> = new EventEmitter<Event>();\n\n @ViewChild('inputMonthPicker', { static: true, read: HTMLInputElement }) inputMonthPickerRef: HTMLInputElement;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _config: GIPINgConfig,\n ) { }\n\n ngOnInit(): void {\n this._generateYears();\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this._changeDetectorRef.markForCheck();\n }\n\n private _generateYears(): void {\n const realCurrentYear: number = this._now.getFullYear();\n\n if (!this.initialYear) {\n this.initialYear = this.value ? this.value.getFullYear() : this._now.getFullYear();\n }\n\n this.yearArrays = [];\n if (this.initialYear === realCurrentYear) {\n let baseYear = this.initialYear - (this.initialYear % (yearsPerPage / 2));\n for (let y = 0; y < yearsPerPage; y++) {\n this.yearArrays.push((baseYear + y));\n }\n } else {\n for (let y = this.initialYear; y < (this.initialYear + yearsPerPage); y++) {\n this.yearArrays.push(y);\n }\n }\n }\n\n public clickToggleCalendar(currentView?: 'month' | 'year') {\n if (currentView) {\n this.internalCalendarView = currentView;\n } else {\n if (this.internalCalendarView === 'month') {\n this.internalCalendarView = 'year';\n }\n }\n this._changeDetectorRef.detectChanges();\n }\n\n public clickPrev() {\n if (this.internalCalendarView === 'month') {\n this.value = new Date(this.value.getFullYear() - 1, this.value.getMonth(), 1);\n this.initialYear = (this.value.getFullYear() - 7);\n } else if (this.internalCalendarView === 'year') {\n this.initialYear = this.yearArrays[0] - (yearsPerPage - 1);\n }\n this._generateYears();\n this._changeDetectorRef.detectChanges();\n }\n\n public clickNext() {\n if (this.internalCalendarView === 'month') {\n this.value = new Date(this.value.getFullYear() + 1, this.value.getMonth(), 1);\n this.initialYear = ((this.value.getFullYear() - 7) + 1);\n } else if (this.internalCalendarView === 'year') {\n this.initialYear = this.yearArrays[yearsPerPage - 1];\n }\n this._generateYears();\n this._changeDetectorRef.detectChanges();\n }\n\n /**\n * Chamado quando o mês é alterado\n * @param month mês selecionado no calendário de meses\n */\n public monthChanged(month: number) {\n const year: number = this.value.getFullYear();\n this._monthOrYearChanged(month, year);\n this._hideOverlay();\n }\n\n /**\n * Chamado quando o ano é alterado\n * @param year ano selecionado no calendário de anos\n */\n public yearChanged(year: number) {\n const month: number = this.value.getMonth();\n this._monthOrYearChanged(month, year);\n\n if (this.calendarView === 'month') {\n this.clickToggleCalendar('month');\n } else if (this.calendarView === 'year') {\n this._hideOverlay();\n }\n }\n\n /**\n * Chamar quando mês ou ano mudou\n * @param month número do mês 0-11\n * @param year ano exemplo: 1995\n */\n private _monthOrYearChanged(month: number, year: number) {\n let newMonth: number = month;\n let newYear: number = year;\n\n if (this.minDate) {\n if (newYear < this.minDate.getFullYear() || (newYear === this.minDate.getFullYear() && newMonth < this.minDate.getMonth())) {\n newMonth = this.minDate.getMonth();\n newYear = this.minDate.getFullYear();\n }\n }\n\n if (this.maxDate) {\n if (newYear > this.maxDate.getFullYear() || (newYear === this.maxDate.getFullYear() && newMonth > this.maxDate.getMonth())) {\n newMonth = this.maxDate.getMonth();\n newYear = this.maxDate.getFullYear();\n }\n }\n\n this.value = new Date(newYear, newMonth, 1);\n\n this._changeDetectorRef.detectChanges();\n }\n\n public isMonthSelected(month: number): boolean {\n if (this.value) {\n return this.value.getMonth() === month;\n }\n\n return false;\n }\n\n public isMonthDisabled(month: number): boolean {\n if (this.value && this.minDate && this.maxDate) {\n return (this.value.getFullYear() === this.minDate.getFullYear() && month < this.minDate.getMonth())\n || (this.value.getFullYear() === this.maxDate.getFullYear() && month > this.maxDate.getMonth());\n }\n return false;\n }\n\n public isYearSelected(year: number): boolean {\n if (this.value) {\n return this.value.getFullYear() === year;\n }\n\n return false;\n }\n\n public isYearDisabled(year: number): boolean {\n if (this.value && this.minDate && this.maxDate) {\n return (this.value.getFullYear() === this.minDate.getFullYear() && year < this.minDate.getFullYear())\n || (this.value.getFullYear() === this.maxDate.getFullYear() && year > this.maxDate.getFullYear());\n }\n return false;\n }\n\n public onInputKeydown(event: KeyboardEvent): void {\n if (!this.disabled) {\n if (event.key.toUpperCase() === 'ENTER') {\n this.onKeydownEnter.emit(event);\n }\n this.onKeydown.emit(event);\n }\n }\n\n public onInputKeyup(event: KeyboardEvent): void {\n if (!this.disabled) {\n if ((event.key.toUpperCase() === 'ESC') || (event.key.toUpperCase() === 'ESCAPE')) {\n this._hideOverlay();\n }\n this.onKeydown.emit(event);\n }\n }\n\n public onInputFocus(event: Event): void {\n if (!this.disabled && this.showOnFocus) {\n this._showOverlay();\n this.onFocus.emit(event);\n }\n }\n\n public onInputBlur(event: Event): void {\n if (!this.disabled) {\n this.onBlur.emit(event);\n this.onTouch();\n }\n }\n\n public onInputClick(event: Event): void {\n if (!this.disabled) {\n this._showOverlay();\n this.onClick.emit(event);\n }\n }\n\n public onButtonShowMonthpicker(): void {\n this.toogleOverlay();\n this._changeDetectorRef.markForCheck();\n }\n\n private _showOverlay(): void {\n if (!this._overlayVisible) {\n this._overlayVisible = true;\n }\n }\n\n private _hideOverlay(): void {\n this._overlayVisible = false;\n this._changeDetectorRef.markForCheck();\n }\n\n public toogleOverlay(): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n if (!this._overlayVisible) {\n this._showOverlay();\n } else {\n this._hideOverlay();\n }\n }\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ArrayUtil } from '../../../core/utils/array.util';\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { GIPIFormFieldComponent } from '../form-field/form-field.component';\nimport { GIPIPopoverTrigger } from '../popover/shared/popover-trigger';\n\nlet nextUniqueId = 0;\n\n/** A altura dos itens selecionados em unidades `px`. */\nconst OPTION_HEIGHT_PX = 40;\n\n@Component({\n selector: `gipi-input-select-enum`,\n exportAs: 'gipiInputSelectEnum',\n templateUrl: './input-select-enum.component.html',\n styleUrls: ['./input-select-enum.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputSelectEnumComponent => GIPIInputSelectEnumComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-select-enum',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputSelectEnumComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\n private _name: string = `gipi-input-select-enum-${nextUniqueId++}`;\n\n _enumList: any[] = [];\n\n _itemSizeScrollViewport: number = 5;\n\n _lastOptionSelected: any = null;\n\n @ViewChild('formFieldSelectEnum', { read: GIPIFormFieldComponent, static: false }) formFieldSelectEnum: GIPIFormFieldComponent;\n\n @ViewChild(GIPIPopoverTrigger, { static: false }) popoverTrigger: GIPIPopoverTrigger;\n\n @Input() id: string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() placeholder: string = 'Selecionar';\n\n @Input() required: boolean;\n\n private _disabled: boolean = false;\n @Input() set disabled(value: any) {\n this._disabled = coerceBooleanProperty(value);\n }\n get disabled() {\n return this._disabled;\n }\n\n private _loading: boolean = false;\n @Input() set loading(value: any) {\n this._loading = coerceBooleanProperty(value);\n }\n get loading() {\n return this._loading;\n }\n\n private _multiple: boolean = false;\n @Input() set multiple(value: any) {\n this._multiple = coerceBooleanProperty(value);\n }\n get multiple() {\n return this._multiple;\n }\n\n private _showOnFocus: boolean = true;\n @Input() set showOnFocus(value: any) {\n this._showOnFocus = coerceBooleanProperty(value);\n }\n get showOnFocus() {\n return this._showOnFocus;\n }\n\n private _hideOnEscape: boolean = true;\n @Input() set hideOnEscape(value: any) {\n this._hideOnEscape = coerceBooleanProperty(value);\n }\n get hideOnEscape() {\n return this._hideOnEscape;\n }\n\n @Input() enum: any;\n\n @Input() sort: (a: any, b: any) => number;\n\n @Input() valuesExclud: string[];\n\n @Input() valuesOmit: string[];\n\n private _value: any;\n @Input('value') set value(value: any) {\n this._value = value;\n this.onChange(value);\n this.onTouch();\n }\n get value() {\n return this._value;\n }\n\n @Output() selectionChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onOpenedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n get optionSelected(): string {\n if (this.value && !ArrayUtil.isEmpty(this._enumList)) {\n const selected = this._enumList.find(e => e.key === this.value);\n if (selected) {\n return selected.value;\n }\n }\n\n return '';\n }\n\n get scrollViewportHeight(): number {\n let height: number = 0;\n if (this._enumList && this._enumList.length) {\n height = (this._enumList.length * OPTION_HEIGHT_PX);\n }\n\n return height;\n }\n\n constructor(\n public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef\n ) { }\n\n ngOnInit(): void {\n const lEnumList = Object.keys(this.enum)\n .map(key => ({ key: key, value: this.enum[key] }))\n .sort(this.sort);\n\n if (!ObjectUtil.isNull(this.valuesExclud)) {\n for (let i = 0; i < lEnumList.length; i++) {\n const excludEnum: boolean = this.valuesExclud.some(e => e === lEnumList[i].key);\n if (!excludEnum) {\n this._enumList.push(lEnumList[i]);\n }\n }\n } else {\n this._enumList = lEnumList;\n }\n\n this._changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n if (!ObjectUtil.isNull(this.popoverTrigger)) {\n this.popoverTrigger.destroyPopover();\n }\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n validateOmitByKey(key: string): boolean {\n return !ObjectUtil.isNull(this.valuesOmit) ? !this.valuesOmit.some(el => el === key) : true;\n }\n\n public showPopover(): void {\n if (!this.disabled && !this.loading) {\n this.popoverTrigger.openPopover();\n }\n }\n\n public closePopover(): void {\n if (!this.disabled && !this.loading) {\n this.popoverTrigger.closePopover();\n }\n }\n\n public onInputFocus(event: Event): void {\n if (this.showOnFocus && !this.disabled) {\n this.showPopover();\n }\n if (!this.disabled) {\n this.onFocus.emit(event);\n event.stopPropagation();\n }\n }\n\n public onInputClick(event: Event): void {\n if (!this.disabled) {\n this.showPopover();\n\n if (!ObjectUtil.isNull(this.popoverTrigger) && !this.popoverTrigger.popoverOpen) {\n this.formFieldSelectEnum.focus();\n }\n\n event.stopPropagation();\n }\n }\n\n public onInputBlur(event: Event): void {\n if (!this.disabled) {\n this.onBlur.emit(event);\n this.onTouch();\n }\n }\n\n public onInputKeydown(event: KeyboardEvent): void {\n if (this.disabled) {\n event.stopImmediatePropagation();\n return;\n }\n\n if (\n ((event.code.toUpperCase() === 'ESCAPE') && this.hideOnEscape) ||\n ((event.code.toUpperCase() === 'ENTER') || (event.code.toUpperCase() === 'NUMPADENTER')) ||\n (event.code.toUpperCase() === 'TAB')\n ) {\n if (!ObjectUtil.isNull(this.popoverTrigger) && this.popoverTrigger.popoverOpen) {\n this.closePopover();\n event.preventDefault();\n }\n }\n }\n\n public onButtonSelectOptionClick(key: string): void {\n this.value = key;\n this.closePopover();\n this._changeDetectorRef.detectChanges();\n }\n\n @HostListener('window:resize', ['$event'])\n onWindowResize(event: UIEvent): void {\n if (!ObjectUtil.isNull(this.popoverTrigger) && this.popoverTrigger.popoverOpen) {\n this.closePopover();\n this._changeDetectorRef.detectChanges();\n event.stopPropagation();\n }\n }\n\n}\n","import { GIPIDomHandler } from './dom-handler';\n\nexport class GIPIConnectedOverlayScrollHandler {\n\n element: any;\n\n listener: any;\n\n scrollableParents: any;\n\n constructor(element: any, listener: any = (): void => { }) {\n this.element = element;\n this.listener = listener;\n }\n\n bindScrollListener(): void {\n this.scrollableParents = GIPIDomHandler.getScrollableParents(this.element);\n for (let i: number = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].addEventListener('scroll', this.listener);\n }\n }\n\n unbindScrollListener(): void {\n if (this.scrollableParents) {\n for (let i: number = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].removeEventListener('scroll', this.listener);\n }\n }\n }\n\n destroy(): void {\n this.unbindScrollListener();\n this.element = null;\n this.listener = null;\n this.scrollableParents = null;\n }\n}\n","import { AnimationEvent, AnimationReferenceMetadata, animate, animation, style, transition, trigger, useAnimation } from '@angular/animations';\nimport { DOCUMENT } from '@angular/common';\nimport { AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, ElementRef, EventEmitter, Inject, Input, NgZone, OnDestroy, OnInit, Output, QueryList, Renderer2, TemplateRef, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport ZIndexUtils from '../../../core/utils/zindex.util';\nimport { GIPINgConfig } from '../../api/gipi-ng-config';\nimport { GIPIConnectedOverlayScrollHandler } from '../dom/connected-overlay-scroll-handler';\nimport { GIPIDomHandler } from '../dom/dom-handler';\nimport { GIPITemplateDirective } from '../template/template.directive';\nimport { GIPIOverlayService } from './shared/overlay-service';\nimport { OverlayModeType, OverlayOptions, ResponsiveOverlayDirectionType, ResponsiveOverlayOptions } from './shared/overlay_options';\n\nconst showOverlayContentAnimation: AnimationReferenceMetadata = animation([style({ transform: '{{transform}}', opacity: 0 }), animate('{{showTransitionParams}}')]);\nconst hideOverlayContentAnimation: AnimationReferenceMetadata = animation([animate('{{hideTransitionParams}}', style({ transform: '{{transform}}', opacity: 0 }))]);\n\n/** @dynamic */\n@Component({\n selector: `gipi-overlay`,\n exportAs: 'gipiOverlay',\n templateUrl: './overlay.component.html',\n styleUrls: ['./overlay.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('overlayContentAnimation', [\n transition(':enter', [useAnimation(showOverlayContentAnimation)]),\n transition(':leave', [useAnimation(hideOverlayContentAnimation)])\n ])\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIOverlayComponent => GIPIOverlayComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-overlay',\n }\n})\nexport class GIPIOverlayComponent implements OnInit, AfterContentInit, OnDestroy {\n\n contentTemplate: TemplateRef<any> | undefined;\n\n modalVisible: boolean = false;\n\n isOverlayClicked: boolean = false;\n\n isOverlayContentClicked: boolean = false;\n\n scrollHandler: any;\n\n documentClickListener: any;\n\n documentResizeListener: any;\n\n private documentKeyboardListener: VoidFunction | null;\n\n public transformOptions: any = {\n default: 'scaleY(0.8)',\n center: 'scale(0.7)',\n top: 'translate3d(0px, -100%, 0px)',\n 'top-start': 'translate3d(0px, -100%, 0px)',\n 'top-end': 'translate3d(0px, -100%, 0px)',\n bottom: 'translate3d(0px, 100%, 0px)',\n 'bottom-start': 'translate3d(0px, 100%, 0px)',\n 'bottom-end': 'translate3d(0px, 100%, 0px)',\n left: 'translate3d(-100%, 0px, 0px)',\n 'left-start': 'translate3d(-100%, 0px, 0px)',\n 'left-end': 'translate3d(-100%, 0px, 0px)',\n right: 'translate3d(100%, 0px, 0px)',\n 'right-start': 'translate3d(100%, 0px, 0px)',\n 'right-end': 'translate3d(100%, 0px, 0px)'\n };\n\n private _window: Window | null;\n\n private _visible: boolean = false;\n @Input() get visible(): boolean {\n return this._visible;\n }\n set visible(value: boolean) {\n this._visible = value;\n\n if (this._visible && !this.modalVisible) {\n this.modalVisible = true;\n }\n }\n\n private _mode: OverlayModeType | string;\n @Input() get mode(): OverlayModeType | string {\n return this._mode || this.overlayOptions?.mode;\n }\n set mode(value: OverlayModeType | string) {\n this._mode = value;\n }\n\n private _style: any;\n @Input() get style(): any {\n return ObjectUtil.merge(this._style, this.modal ? this.overlayResponsiveOptions?.style : this.overlayOptions?.style);\n }\n set style(value: any) {\n this._style = value;\n }\n\n private _styleClass: string | undefined;\n @Input() get styleClass(): string {\n return ObjectUtil.merge(this._styleClass, this.modal ? this.overlayResponsiveOptions?.styleClass : this.overlayOptions?.styleClass);\n }\n set styleClass(value: string) {\n this._styleClass = value;\n }\n\n private _contentStyle: any;\n @Input() get contentStyle(): any {\n return ObjectUtil.merge(this._contentStyle, this.modal ? this.overlayResponsiveOptions?.contentStyle : this.overlayOptions?.contentStyle);\n }\n set contentStyle(value: any) {\n this._contentStyle = value;\n }\n\n private _contentStyleClass: string | undefined;\n @Input() get contentStyleClass(): string {\n return ObjectUtil.merge(this._contentStyleClass, this.modal ? this.overlayResponsiveOptions?.contentStyleClass : this.overlayOptions?.contentStyleClass);\n }\n set contentStyleClass(value: string) {\n this._contentStyleClass = value;\n }\n\n private _target: any;\n @Input() get target(): any {\n const value: any = this._target || this.overlayOptions?.target;\n return (value === undefined) ? '@prev' : value;\n }\n set target(value: any) {\n this._target = value;\n }\n\n private _appendTo: 'body' | HTMLElement | undefined;\n @Input() get appendTo(): any {\n return this._appendTo || this.overlayOptions?.appendTo;\n }\n set appendTo(value: any) {\n this._appendTo = value;\n }\n\n private _autoZIndex: boolean | undefined;\n @Input() get autoZIndex(): boolean {\n const value: boolean = this._autoZIndex || this.overlayOptions?.autoZIndex;\n return (value === undefined) ? true : value;\n }\n set autoZIndex(value: boolean) {\n this._autoZIndex = value;\n }\n\n private _baseZIndex: number | undefined;\n @Input() get baseZIndex(): number {\n const value: number = this._baseZIndex || this.overlayOptions?.baseZIndex;\n return (value === undefined) ? 0 : value;\n }\n set baseZIndex(value: number) {\n this._baseZIndex = value;\n }\n\n private _showTransitionOptions: string | undefined;\n @Input() get showTransitionOptions(): string {\n const value: string = this._showTransitionOptions || this.overlayOptions?.showTransitionOptions;\n return (value === undefined) ? '.12s cubic-bezier(0, 0, 0.2, 1)' : value;\n }\n set showTransitionOptions(value: string) {\n this._showTransitionOptions = value;\n }\n\n private _hideTransitionOptions: string | undefined;\n @Input() get hideTransitionOptions(): string {\n const value: string = this._hideTransitionOptions || this.overlayOptions?.hideTransitionOptions;\n return (value === undefined) ? '.1s linear' : value;\n }\n set hideTransitionOptions(value: string) {\n this._hideTransitionOptions = value;\n }\n\n private _listener: any;\n @Input() get listener(): any {\n return this._listener || this.overlayOptions?.listener;\n }\n set listener(value: any) {\n this._listener = value;\n }\n\n private _responsive: ResponsiveOverlayOptions | undefined;\n @Input() get responsive(): ResponsiveOverlayOptions | undefined {\n return this._responsive || this.overlayOptions?.responsive;\n }\n set responsive(val: ResponsiveOverlayOptions | undefined) {\n this._responsive = val;\n }\n\n private _options: OverlayOptions | undefined;\n @Input() get options(): OverlayOptions | undefined {\n return this._options;\n }\n set options(val: OverlayOptions | undefined) {\n this._options = val;\n }\n\n private _documentClick: () => boolean;\n @Input() get documentClick(): () => boolean {\n return this._documentClick;\n }\n set documentClick(val: () => boolean) {\n this._documentClick = val;\n }\n\n @Output() visibleChange: EventEmitter<any> = new EventEmitter();\n @Output() onBeforeShow: EventEmitter<any> = new EventEmitter();\n @Output() onShow: EventEmitter<any> = new EventEmitter();\n @Output() onBeforeHide: EventEmitter<any> = new EventEmitter();\n @Output() onHide: EventEmitter<any> = new EventEmitter();\n @Output() onAnimationStart: EventEmitter<any> = new EventEmitter();\n @Output() onAnimationDone: EventEmitter<any> = new EventEmitter();\n\n @ContentChildren(GIPITemplateDirective) templates: QueryList<any> | undefined;\n\n @ViewChild('overlay', { static: false }) overlayViewChild: ElementRef | undefined;\n\n @ViewChild('content', { static: false }) contentViewChild: ElementRef | undefined;\n\n get modal(): boolean {\n return this.mode === 'modal' || (this.overlayResponsiveOptions && this._window?.matchMedia(this.overlayResponsiveOptions.media?.replace('@media', '') || `(max-width: ${this.overlayResponsiveOptions.breakpoint})`).matches);\n }\n\n get overlayMode(): string {\n return this.mode || (this.modal ? 'modal' : 'overlay');\n }\n\n get overlayOptions(): OverlayOptions {\n return { ...this._config?.overlayOptions, ...this.options }; // TODO: Melhorar o desempenho\n }\n\n get overlayResponsiveOptions(): ResponsiveOverlayOptions {\n return { ...this.overlayOptions?.responsive, ...this.responsive }; // TODO: Melhorar o desempenho\n }\n\n get overlayResponsiveDirection(): ResponsiveOverlayDirectionType {\n return this.overlayResponsiveOptions?.direction || 'center';\n }\n\n get overlayEl(): any {\n return this.overlayViewChild?.nativeElement;\n }\n\n get contentEl(): any {\n return this.contentViewChild?.nativeElement;\n }\n\n get targetEl(): any {\n return GIPIDomHandler.getTargetElement(this.target, this.elementRef?.nativeElement);\n }\n\n constructor(\n @Inject(DOCUMENT) private _document: Document,\n private _config: GIPINgConfig,\n private _zone: NgZone,\n public elementRef: ElementRef,\n public renderer: Renderer2,\n public overlayService: GIPIOverlayService,\n ) {\n this._window = this._document.defaultView;\n }\n\n ngOnInit(): void { }\n\n ngAfterContentInit(): void {\n if (!ObjectUtil.isNull(this.templates)) {\n this.templates.forEach(item => {\n switch (item.getType()) {\n case 'content': {\n this.contentTemplate = item.template;\n break;\n } default: {\n this.contentTemplate = item.template;\n break;\n }\n }\n });\n }\n }\n\n ngOnDestroy(): void {\n this.hide(this.overlayEl, true);\n\n if (this.overlayEl) {\n GIPIDomHandler.appendOverlay(this.overlayEl, this.targetEl, this.appendTo);\n ZIndexUtils.clear(this.overlayEl);\n }\n\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n\n this.unbindListeners();\n }\n\n show(overlay?: HTMLElement, isFocus: boolean = false): void {\n this.onVisibleChange(true);\n this.handleEvents('onShow', { overlay: overlay || this.overlayEl, target: this.targetEl, mode: this.overlayMode });\n\n isFocus && GIPIDomHandler.focus(this.targetEl);\n this.modal && GIPIDomHandler.addClass(this._document?.body, 'overflow-hidden');\n }\n\n hide(overlay?: HTMLElement, isFocus: boolean = false): void {\n if (!this.visible) {\n return;\n } else {\n this.onVisibleChange(false);\n this.handleEvents('onHide', { overlay: overlay || this.overlayEl, target: this.targetEl, mode: this.overlayMode });\n isFocus && GIPIDomHandler.focus(this.targetEl);\n this.modal && GIPIDomHandler.removeClass(this._document?.body, 'overflow-hidden');\n }\n }\n\n alignOverlay(): void {\n !this.modal && GIPIDomHandler.alignOverlay(this.overlayEl, this.targetEl, this.appendTo);\n }\n\n onVisibleChange(visible: boolean): void {\n this._visible = visible;\n this.visibleChange.emit(visible);\n }\n\n onOverlayClick(event: any): void {\n this.isOverlayClicked = true;\n }\n\n onOverlayContentClick(event: MouseEvent): void {\n this.overlayService.add({\n originalEvent: event,\n target: this.targetEl\n });\n\n this.isOverlayContentClicked = true;\n }\n\n onOverlayContentAnimationStart(event: AnimationEvent): void {\n switch (event.toState) {\n case 'visible': {\n this.handleEvents('onBeforeShow', { overlay: this.overlayEl, target: this.targetEl, mode: this.overlayMode });\n\n if (this.autoZIndex) {\n ZIndexUtils.set(this.overlayMode, this.overlayEl, this.baseZIndex + this._config?.zIndex[this.overlayMode]);\n }\n\n GIPIDomHandler.appendOverlay(this.overlayEl, this.appendTo === 'body' ? this._document.body : this.appendTo, this.appendTo);\n this.alignOverlay();\n\n break;\n } case 'void': {\n this.handleEvents('onBeforeHide', { overlay: this.overlayEl, target: this.targetEl, mode: this.overlayMode });\n this.modal && GIPIDomHandler.addClass(this.overlayEl, 'component-overlay-leave');\n break;\n }\n }\n\n this.handleEvents('onAnimationStart', event);\n }\n\n onOverlayContentAnimationDone(event: AnimationEvent): void {\n const container: any = this.overlayEl || event.element.parentElement;\n switch (event.toState) {\n case 'visible': {\n this.show(container, true);\n this.bindListeners();\n break;\n } case 'void': {\n this.hide(container, true);\n this.unbindListeners();\n GIPIDomHandler.appendOverlay(this.overlayEl, this.targetEl, this.appendTo);\n ZIndexUtils.clear(container);\n this.modalVisible = false;\n break;\n }\n }\n\n this.handleEvents('onAnimationDone', event);\n }\n\n handleEvents(name: string, params: any): void {\n (this as any)[name].emit(params);\n this.options && (this.options as any)[name] && (this.options as any)[name](params);\n this._config?.overlayOptions && (this._config?.overlayOptions as any)[name] && (this._config?.overlayOptions as any)[name](params);\n }\n\n bindListeners(): void {\n this.bindScrollListener();\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindDocumentKeyboardListener();\n }\n\n unbindListeners(): void {\n this.unbindScrollListener();\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindDocumentKeyboardListener();\n }\n\n bindScrollListener(): void {\n if (!this.scrollHandler) {\n this.scrollHandler = new GIPIConnectedOverlayScrollHandler(this.targetEl, (event: any): void => {\n const valid: any = this.listener\n ? this.listener(event, { type: 'scroll', mode: this.overlayMode, valid: true })\n : true;\n\n valid && this.hide(event, true);\n });\n }\n\n this.scrollHandler.bindScrollListener();\n }\n\n unbindScrollListener(): void {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n\n bindDocumentClickListener(): void {\n if (!this.documentClickListener) {\n this.documentClickListener = this.renderer.listen(this._document, 'click', event => {\n const isTargetClicked: any = this.targetEl && (this.targetEl.isSameNode(event.target) || (!this.isOverlayClicked && this.targetEl.contains(event.target)));\n const isDocumentClicked: boolean = this.documentClick ? this.documentClick() : false;\n const isOutsideClicked: boolean = !isTargetClicked && !this.isOverlayContentClicked && !isDocumentClicked;\n\n const valid: any = this.listener\n ? this.listener(event, { type: 'outside', mode: this.overlayMode, valid: event.which !== 3 && isOutsideClicked })\n : isOutsideClicked;\n\n valid && this.hide(event);\n this.isOverlayClicked = this.isOverlayContentClicked = false;\n });\n }\n }\n\n unbindDocumentClickListener(): void {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n\n bindDocumentResizeListener(): void {\n if (!this.documentResizeListener) {\n this.documentResizeListener = this.renderer.listen(this._window, 'resize', event => {\n const valid: any = this.listener\n ? this.listener(event, { type: 'resize', mode: this.overlayMode, valid: !GIPIDomHandler.isTouchDevice() })\n : !GIPIDomHandler.isTouchDevice();\n\n valid && this.hide(event, true);\n });\n }\n }\n\n unbindDocumentResizeListener(): void {\n if (this.documentResizeListener) {\n this.documentResizeListener();\n this.documentResizeListener = null;\n }\n }\n\n bindDocumentKeyboardListener(): void {\n if (this.documentKeyboardListener) {\n return;\n }\n\n this._zone.runOutsideAngular(() => {\n this.documentKeyboardListener = this.renderer.listen(this._window, 'keydown', (event) => {\n if (!this.overlayOptions.hideOnEscape || event.keyCode !== 27) {\n return;\n }\n\n const valid: any = this.listener\n ? this.listener(event, { type: 'keydown', mode: this.overlayMode, valid: !GIPIDomHandler.isTouchDevice() })\n : !GIPIDomHandler.isTouchDevice();\n\n if (valid) {\n this._zone.run(() => {\n this.hide(event, true);\n });\n }\n });\n });\n }\n\n unbindDocumentKeyboardListener(): void {\n if (this.documentKeyboardListener) {\n this.documentKeyboardListener();\n this.documentKeyboardListener = null;\n }\n }\n\n}\n","import { A, ENTER, ESCAPE, NINE, SPACE, Z, ZERO } from '@angular/cdk/keycodes';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, TrackByFunction, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, takeUntil } from 'rxjs/operators';\n\nimport { PageDTO } from '../../../core/models/dto/page.dto';\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { GIPIFormFieldComponent } from '../form-field/form-field.component';\nimport { GIPIOverlayComponent } from '../overlay/overlay.component';\n\nexport interface AddChange<T> {\n values: T | T[];\n selectedAll?: boolean;\n}\n\n/** A altura dos itens selecionados em unidades `px`. */\nconst OPTION_HEIGHT_PX = 40;\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-input-select`,\n exportAs: 'gipiInputSelect',\n templateUrl: './input-select.component.html',\n styleUrls: ['./input-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputSelectComponent => GIPIInputSelectComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-select',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputSelectComponent<T> implements OnInit, ControlValueAccessor {\n\n private _name: string = `gipi-input-select-${nextUniqueId++}`;\n\n private _cache: any;\n\n private _pageModel: PageDTO<T>;\n\n private _onDestroy: Subject<void> = new Subject<void>();\n\n _itemSizeScrollViewport: number = 5;\n\n _totalOptions: number;\n\n _overlayVisible: boolean = false;\n\n _formControlSearch: FormControl = new FormControl({ value: '', disabled: false });\n\n inputFieldValue: string = '';\n\n inputFieldValueSelected: number = 0;\n\n toggleAllCheckboxChecked: boolean = false;\n toggleAllCheckboxIndeterminate: boolean = false;\n\n isLoading: number = 0;\n\n // @ViewChild('searchSelectInput', { read: ElementRef, static: true }) searchSelectInput: ElementRef;\n @ViewChild('formfieldSelectSearchInput', { read: GIPIFormFieldComponent, static: true }) formfieldSelectSearchInput: GIPIFormFieldComponent;\n\n @ViewChild('formFieldSelect', { read: GIPIFormFieldComponent, static: false }) formFieldSelect: GIPIFormFieldComponent;\n\n @ViewChild('overlaySelect', { read: GIPIOverlayComponent, static: false }) overlaySelect: GIPIOverlayComponent;\n\n @ViewChild(CdkVirtualScrollViewport, { static: false }) private cdkVirtualScrollViewPort: CdkVirtualScrollViewport;\n\n @Input() id: string | number = this._name;\n\n @Input() name: string = this._name;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() placeholder: string = 'Selecionar';\n\n @Input() labelSelectAll: string = 'Selecionar todos';\n\n @Input() multiple: boolean = false;\n\n // Mostrar/ocultar o botão limpar opções selecionadas\n @Input() showClear: boolean = false;\n\n @Input() showOnFocus: boolean = true;\n\n @Input() hideOnEscape: boolean = true;\n\n @Input() showSelectAll: boolean = false;\n\n @Input() showFooter: boolean = false;\n\n @Input() infiniteScroll: boolean = true;\n\n @Input() showSearch: boolean = false;\n\n @Input() required: boolean = false;\n\n @Input() property: string;\n\n @Input() trackBy: string;\n\n @Input() appendTo: any;\n\n @Input() propertyFn: (obj: T) => string;\n\n @Input() nextBatchFn!: (researchField: string, page: number, paramNextBatch?: any) => Promise<PageDTO<T>>;\n\n @Input() pageSize: number = 5;\n\n // Input search --------\n // Ativar limpar input ao pressionar escape\n @Input() enableClearOnEscapePressed: boolean = true;\n // ---------------------\n\n private _disabled: boolean = false;\n @Input() set disabled(value: boolean) {\n this._disabled = value;\n this._disableInputSearch();\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n private _loading: boolean = false;\n @Input() set loading(value: boolean) {\n this._loading = value;\n this._disableInputSearch();\n }\n get loading(): boolean {\n return this._loading;\n }\n\n private _paramNextBatch: any;\n @Input() set paramNextBatch(val: any) {\n this._paramNextBatch = val;\n }\n get paramNextBatch(): any {\n return this._paramNextBatch;\n }\n\n private _value: T | T[];\n @Input() set value(value: T | T[]) {\n this._value = value;\n\n if (this.multiple) {\n if (Array.isArray(value) && value && value.length) {\n const firstValue = value[0];\n this.inputFieldValue = this.property ? firstValue[this.property] : this.getPropertyValue(firstValue);\n this.inputFieldValueSelected = value.length;\n } else {\n this.inputFieldValue = '';\n this.inputFieldValueSelected = 0;\n }\n\n } else {\n if (!Array.isArray(value) && value) {\n this.inputFieldValue = this.property ? value[this.property] : this.getPropertyValue(value);\n this.inputFieldValueSelected = 0;\n } else {\n this.inputFieldValue = '';\n this.inputFieldValueSelected = 0;\n }\n }\n\n this.onChange(value);\n this.onSelectChange.emit(value);\n this.onTouch();\n this._changeDetectorRef.markForCheck();\n }\n get value(): T | T[] {\n return this._value;\n }\n\n private _options: T[];\n @Input() set options(val: T[]) {\n this._options = val;\n }\n get options(): T[] {\n return this._options;\n }\n\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onClose: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onSelectChange: EventEmitter<T | T[]> = new EventEmitter<T | T[]>();\n @Output() onOpenedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() onSearchChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() onAddChange: EventEmitter<AddChange<T>> = new EventEmitter<AddChange<T>>();\n\n get scrollViewportHeight(): number {\n let height: number = 0;\n if (this.options && this.options.length) {\n height = (this.options.length * OPTION_HEIGHT_PX) - (this.pageSize === this.options.length ? OPTION_HEIGHT_PX : 0);\n }\n\n if (!ObjectUtil.isNull(this.overlaySelect)) {\n this.overlaySelect.alignOverlay();\n }\n\n return height;\n }\n\n get valueSearch(): string {\n return this._formControlSearch.value;\n }\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit() {\n this._formControlSearch.valueChanges\n .pipe(\n map((value: string): string => value),\n debounceTime(1000),\n distinctUntilChanged(),\n takeUntil(this._onDestroy)\n )\n .subscribe((value: string): void => this._searchChange(value));\n\n this.indeterminateAllCheckbox();\n }\n\n ngOnDestroy(): void {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n trackByOption: TrackByFunction<T> = (index, obj) => obj && this.trackBy && obj[this.trackBy] ? obj[this.trackBy] : obj;\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this._changeDetectorRef.markForCheck();\n }\n\n compareFn(f1: T, f2: T): boolean {\n if (!this.property && !this.propertyFn) {\n throw new Error('O parâmetro property ou propertyFn deve conter um valor');\n }\n\n if (!this.property && this.propertyFn && f1 && f2) {\n const propF1 = this.getPropertyValue(f1);\n const propF2 = this.getPropertyValue(f2);\n return propF1 === propF2;\n }\n\n return f1 && f2 && f1[this.property] === f2[this.property];\n }\n\n public getPropertyValue(entity: T): string {\n if (!ObjectUtil.isNull(entity)) {\n if (!ObjectUtil.isNull(this.propertyFn)) {\n return this.propertyFn(entity);\n } else if (this.property) {\n return this._getValue(entity, this.property);\n }\n }\n return '';\n }\n\n private _getValue(entity: T, property: string): string {\n const properties: string[] = property.split('.');\n let value: any = entity;\n\n for (let i: number = 0; i < properties.length; i++) {\n value = Reflect.get(value, properties[i]);\n if (value && i === properties.length - 1) {\n return value;\n }\n }\n }\n\n public onInputFocus(event: Event): void {\n if (this.showOnFocus && !this.disabled) {\n this.showOverlay();\n this.onFocus.emit(event);\n }\n }\n\n public onInputClick(): void {\n if (!this.disabled) {\n this.showOverlay();\n\n if (!this._overlayVisible) {\n this.formFieldSelect.focus();\n }\n }\n }\n\n public onInputBlur(event: Event): void {\n if (!this.disabled) {\n this.onBlur.emit(event);\n this.onTouch();\n }\n }\n\n public onInputKeydown(event: any): void {\n if (this.disabled) {\n event.stopImmediatePropagation();\n return;\n }\n\n if (\n ((event.code.toUpperCase() === 'ESCAPE') && this.hideOnEscape) ||\n ((event.code.toUpperCase() === 'ENTER') || (event.code.toUpperCase() === 'NUMPADENTER')) ||\n (event.code.toUpperCase() === 'TAB')\n ) {\n if (this._overlayVisible) {\n this.hideOverlay();\n event.preventDefault();\n }\n }\n }\n\n public onClearOptionsClick(event: Event): void {\n if (this.disabled) {\n event.stopImmediatePropagation();\n return;\n }\n\n if (this.multiple && Array.isArray(this.value)) {\n this.value = [];\n } else {\n this.value = null;\n }\n\n this.toggleAllCheckboxChecked = false;\n this.toggleAllCheckboxIndeterminate = false;\n this._changeDetectorRef.detectChanges();\n this.onSelectChange.emit(this.value);\n\n this._searchSelectInputFocus();\n event.stopImmediatePropagation();\n }\n\n public showOverlay(): void {\n if (!this._overlayVisible) {\n this._overlayVisible = true;\n this.indeterminateAllCheckbox();\n this.onOpenedChange.emit(this._overlayVisible);\n this._changeDetectorRef.detectChanges();\n\n if (ObjectUtil.isNull(this._cache)) {\n this.onScroll();\n }\n }\n }\n\n public hideOverlay(): void {\n this._overlayVisible = false;\n this.onOpenedChange.emit(this._overlayVisible);\n this._cache = {};\n this._changeDetectorRef.markForCheck();\n }\n\n public toggleOverlay(): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n if (!this._overlayVisible) {\n this.showOverlay();\n } else {\n this.hideOverlay();\n }\n }\n }\n\n // Infinite scroll ------------------------------------------------\n async onScroll() {\n if (!this.infiniteScroll) {\n return;\n }\n if (ObjectUtil.isNull(this.nextBatchFn)) {\n console.error('A função \"nextBatchFn\" é obrigatória e não foi informada');\n return;\n }\n if (!ObjectUtil.isNull(this._pageModel) && (this._pageModel.totalPages === this._pageModel.number)) {\n return;\n }\n\n const pageNumber: number = !ObjectUtil.isNull(this._pageModel) ? this._pageModel.number + 1 : 0;\n\n // Mantemos um índice de páginas carregadas pelo servidor para não carregarmos os mesmos dados duas vezes\n // Isso é baseado na página do servidor, não na interface do usuário\n if (ObjectUtil.isNull(this._cache)) {\n this._cache = {};\n }\n if (this._cache[pageNumber]) {\n return;\n }\n this._cache[pageNumber] = true;\n\n this.isLoading++;\n\n await this.nextBatchFn(this._formControlSearch.value, pageNumber, this.paramNextBatch).then(pagedData => {\n this._pageModel = pagedData;\n this._totalOptions = pagedData.totalElements;\n\n if (!this.options) {\n this.options = [];\n }\n\n // Deslocamento da linha inicial. Esta é a posição para inserir os novos dados\n const start = this._pageModel.number * this.pageSize;\n\n // Copiar dados existentes\n const options = [...this.options];\n\n // Inserir novas linhas na posição correta\n options.splice(start, this.pageSize, ...pagedData.content);\n\n // Volta o array de opções ja atualizado para exibição\n this.options = options;\n\n if (this.toggleAllCheckboxChecked) {\n this.onChangeToggleAllCheckbox();\n } else {\n this.indeterminateAllCheckbox();\n }\n\n\n // Diminuir o contador de chamadas de API pendentes\n this.isLoading--;\n }, error => {\n this.isLoading = 0;\n });\n\n if (!ObjectUtil.isNull(this.cdkVirtualScrollViewPort) && this.options && this.options.length) {\n this.cdkVirtualScrollViewPort.scrollToIndex(this.options.length, 'smooth');\n this.cdkVirtualScrollViewPort.checkViewportSize();\n }\n\n this._changeDetectorRef.detectChanges();\n }\n\n // Options --------------------------------------------------------\n public onButtonSelectOptionClick(option: T): void {\n if (this.multiple) {\n if (!this.value) {\n this.value = [];\n }\n\n if (Array.isArray(this.value)) {\n const indexOption: number = this.value.findIndex(o => ObjectUtil.equals(o, option));\n if (indexOption >= 0) {\n const lValue = this.value;\n lValue.splice(indexOption, 1);\n this.value = [...lValue];\n } else {\n this.value = [...this.value, option];\n }\n }\n } else {\n if (!Array.isArray(this.value)) {\n this.value = option;\n }\n }\n\n this.indeterminateAllCheckbox();\n\n this.onSelectChange.emit(this.value);\n this._changeDetectorRef.detectChanges();\n }\n\n public indeterminateAllCheckbox(): void {\n if (this.multiple && this.showSelectAll) {\n if (\n !Array.isArray(this.value) ||\n !this.value ||\n (this.value && !this.value.length) ||\n !this.options ||\n (this.options && !this.options.length)\n ) {\n this.toggleAllCheckboxChecked = false;\n this.toggleAllCheckboxIndeterminate = false;\n }\n\n if (Array.isArray(this.value)) {\n if (this.infiniteScroll) {\n this.toggleAllCheckboxChecked = this.value && this._pageModel && (this.value.length > 0) && (this._totalOptions > 0) && (this.value.length === this._totalOptions);\n this.toggleAllCheckboxIndeterminate = (this.value.length > 0) && (this.value.length < this._totalOptions);\n } else {\n this.toggleAllCheckboxChecked = this.value && (this.value.length > 0) && this.options && (this.options.length > 0) && (this.value.length === this.options.length);\n this.toggleAllCheckboxIndeterminate = (this.value.length > 0) && (this.options.length > 0) && (this.value.length < this.options.length);\n }\n }\n\n this._changeDetectorRef.detectChanges();\n }\n }\n\n public optionCheckboxIsChecked(option: T): boolean {\n if (!this.multiple) {\n return false;\n }\n\n if (Array.isArray(this.value) && (this.value && this.value.length)) {\n this._changeDetectorRef.markForCheck();\n return this.value.findIndex(o => ObjectUtil.equals(o, option)) > -1;\n }\n }\n\n public onClickSelectAllByOption(): void {\n if (this.disabled || this.loading) {\n return;\n }\n\n this.toggleAllCheckboxChecked = !this.toggleAllCheckboxChecked;\n this.onChangeToggleAllCheckbox();\n }\n\n public onChangeToggleAllCheckbox(): void {\n if (this.multiple) {\n if (this.toggleAllCheckboxChecked) {\n this.value = [...this.options];\n } else {\n this.value = [];\n }\n\n this.indeterminateAllCheckbox();\n }\n }\n\n public onClickAddOptions(): void {\n if (this.multiple && !this.showSelectAll) {\n const addChange: AddChange<T> = {\n values: this.value,\n selectedAll: false\n };\n this.onAddChange.emit(addChange);\n }\n }\n\n // Input search --------------------------------------------------\n private _disableInputSearch(): void {\n if (this.disabled || this.loading) {\n this._formControlSearch.disable();\n } else {\n this._formControlSearch.enable();\n }\n }\n\n private _searchChange(value: string): void {\n if (this._overlayVisible) {\n this.loading = true;\n this.onSearchChange.emit(value);\n\n this._pageModel = null;\n this.options = [];\n this._cache = {};\n\n this.onScroll();\n this.loading = false;\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /**\n * Focaliza o input de pesquisa\n */\n public _searchSelectInputFocus(): void {\n if (ObjectUtil.isNull(this.formfieldSelectSearchInput) || !this._overlayVisible) {\n return;\n }\n // Seta o foco\n this.formfieldSelectSearchInput.focus();\n }\n\n /**\n * Redefine o valor do input de pesquisa atual\n * @param focus se deve focar após a redefinição\n */\n public _searchSelectInputReset(focus?: boolean): void {\n this._formControlSearch.setValue('');\n if (focus) {\n this._searchSelectInputFocus();\n }\n }\n\n /**\n * Manipula o evento de tecla pressionada.\n * Permite, por ex. selecionando com a tecla enter, navegando com as teclas de seta, etc.\n * @param event\n */\n public onInputSearchKeydown(event: KeyboardEvent): void {\n // Evite a propagação de todos os caracteres alfanuméricos para evitar problemas de seleção\n if (\n (event.key && event.key.length === 1) ||\n (event.keyCode >= A && event.keyCode <= Z) ||\n (event.keyCode >= ZERO && event.keyCode <= NINE) ||\n (event.keyCode === SPACE)\n ) {\n event.stopPropagation();\n }\n\n if (this.multiple && event.key && event.keyCode === ENTER) {\n // Recupere o foco após a seleção múltipla, para que possamos digitar ainda mais\n setTimeout((): void => this._searchSelectInputFocus());\n }\n\n // Caso especial, se clicar em Escape, se a entrada estiver vazia, feche o menu suspenso, caso contrário, esvazie o campo de pesquisa\n if (this.enableClearOnEscapePressed && (event.keyCode === ESCAPE) && this._formControlSearch.value) {\n this._searchSelectInputReset(true);\n event.stopPropagation();\n }\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, Renderer2, TrackByFunction, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgModel } from '@angular/forms';\nimport { MatRadioChange } from '@angular/material/radio';\n\nimport { PageDTO } from '../../../core/models/dto/page.dto';\nimport { ArrayUtil } from '../../../core/utils/array.util';\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { StringUtil } from '../../../core/utils/string.util';\nimport { GIPIFormFieldComponent } from '../form-field/form-field.component';\nimport { GIPIInputSelectComponent } from '../input-select/input-select.component';\nimport { GIPIOverlayComponent } from '../overlay/overlay.component';\n\nexport type FilterType = 'TO_OMIT' | 'ALL' | 'BY_SELECTION';\n\nexport interface ApplyChange<T> {\n filterType: FilterType;\n values: T[];\n}\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-input-select-listbox`,\n exportAs: 'gipiInputSelectListbox',\n templateUrl: './input-select-listbox.component.html',\n styleUrls: ['./input-select-listbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputSelectListboxComponent => GIPIInputSelectListboxComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-select-listbox',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputSelectListboxComponent<T> implements OnInit, ControlValueAccessor {\n\n private _name: string = `gipi-input-select-listbox-${nextUniqueId++}`;\n\n _isOverlayChildrenClicked: boolean = false;\n\n _overlayVisible: boolean = false;\n\n _selectEntityOpened: boolean = false;\n\n _radioValue: FilterType = 'ALL';\n\n @ViewChild('formFieldSelectListbox', { read: GIPIFormFieldComponent, static: false }) formFieldSelectListbox: GIPIFormFieldComponent;\n\n @ViewChild('overlaySelectListbox', { read: GIPIOverlayComponent, static: false }) overlaySelectListbox: GIPIOverlayComponent;\n\n @ViewChild('inputSelect', { read: GIPIInputSelectComponent, static: false }) inputSelect: GIPIInputSelectComponent<T>;\n\n @Input() id: string | number = this._name;\n\n @Input() name: string = this._name;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() placeholder: string = 'Selecionar';\n\n @Input() placeholderSelected: string = 'Opções selecionadas';\n\n @Input() placeholderSearch: string = 'Selecionar';\n\n @Input() multiple: boolean = false;\n\n @Input() disabled: boolean = false;\n\n @Input() loading: boolean = false;\n\n @Input() readonly: boolean;\n\n @Input() required: boolean;\n\n @Input() hideFilterType: boolean = false;\n\n @Input() showOnFocus: boolean = true;\n\n @Input() hideOnEscape: boolean = true;\n\n @Input() showSearch: boolean = true;\n\n @Input() property: string;\n\n @Input() trackBy: string;\n\n @Input() propertyFn: (obj: T) => string;\n\n @Input() nextBatchFn: (researchField: string, page: number, paramNextBatch?: any) => Promise<PageDTO<T>>;\n\n _value: T[];\n @Input() set value(value: T[]) {\n this._value = value;\n this.onChange(value);\n this.onTouch();\n\n if (!ObjectUtil.isNull(this.overlaySelectListbox)) {\n this.overlaySelectListbox.alignOverlay();\n }\n }\n get value(): T[] {\n return this._value;\n }\n\n _options: T[];\n @Input() set options(val: T[]) {\n this._options = val;\n }\n get options(): T[] {\n return this._options;\n }\n\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onClose: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onOpenedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() onSelectChange: EventEmitter<T[]> = new EventEmitter<T[]>();\n @Output() onApply: EventEmitter<ApplyChange<T>> = new EventEmitter<ApplyChange<T>>();\n\n get valueInput(): string {\n if (this._radioValue === 'ALL') {\n return 'Todas as opções selecionadas';\n }\n\n if (!ArrayUtil.isEmpty(this.value)) {\n return this.placeholderSelected;\n }\n\n return !StringUtil.isEmpty(this.placeholder) ? this.placeholder : '';\n }\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n ) { }\n\n ngOnInit() { }\n\n trackByOption: TrackByFunction<T> = (index, obj) => this.trackBy ? obj[this.trackBy] : obj;\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this._changeDetectorRef.markForCheck();\n }\n\n public getPropertyValue(entity: T): string {\n if (!ObjectUtil.isNull(entity)) {\n if (!ObjectUtil.isNull(this.propertyFn)) {\n return this.propertyFn(entity);\n } else if (this.property) {\n return this._getValue(entity, this.property);\n }\n }\n return '';\n }\n\n private _getValue(entity: T, property: string): string {\n const properties: string[] = property.split('.');\n let value: any = entity;\n\n for (let i: number = 0; i < properties.length; i++) {\n value = Reflect.get(value, properties[i]);\n if (value && i === properties.length - 1) {\n return value;\n }\n }\n }\n\n public onInputFocus(event: Event): void {\n if (this.showOnFocus && !this.disabled) {\n this.showOverlay();\n }\n this.onFocus.emit(event);\n }\n\n public onInputClick(): void {\n if (!this.disabled) {\n this.showOverlay();\n\n if (!this._overlayVisible) {\n this.formFieldSelectListbox.focus();\n }\n }\n }\n\n public onInputBlur(event: Event): void {\n if (!this.disabled) {\n this.onBlur.emit(event);\n this.onTouch();\n }\n }\n\n public onInputKeydown(event: KeyboardEvent): void {\n if (this.disabled) {\n event.stopImmediatePropagation();\n return;\n }\n\n if (\n ((event.code.toUpperCase() === 'ESCAPE') && this.hideOnEscape) ||\n ((event.code.toUpperCase() === 'ENTER') || (event.code.toUpperCase() === 'NUMPADENTER')) ||\n (event.code.toUpperCase() === 'TAB')\n ) {\n if (this._overlayVisible) {\n this.hideOverlay();\n }\n }\n }\n\n public showOverlay(): void {\n if (!this._overlayVisible) {\n this._overlayVisible = true;\n this.onOpenedChange.emit(this._overlayVisible);\n this._changeDetectorRef.detectChanges();\n }\n }\n\n public hideOverlay(): void {\n this._overlayVisible = false;\n this._changeDetectorRef.markForCheck();\n }\n\n public toggleOverlay(): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n if (!this._overlayVisible) {\n this.showOverlay();\n } else {\n this.hideOverlay();\n }\n }\n }\n\n public onSelectEntityOpened(isOpened: boolean): void {\n this._selectEntityOpened = isOpened;\n\n if (!ObjectUtil.isNull(this.overlaySelectListbox)) {\n this.overlaySelectListbox.alignOverlay();\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n onChangeInputSelect(values: T[], ngModelRadioGroup: NgModel): void {\n if ((!ArrayUtil.isEmpty(values)) && (this._radioValue === 'ALL')) {\n this.onClickRadioButton('BY_SELECTION', ngModelRadioGroup);\n }\n }\n\n @HostListener('window:resize', ['$event'])\n resizeOverlay(event: UIEvent): void {\n if (this._overlayVisible) {\n this.hideOverlay();\n this._changeDetectorRef.detectChanges();\n }\n }\n\n documentClick = () => {\n return this._selectEntityOpened;\n }\n\n // Options --------------------------------------------------------\n onRemoveOptionsSelected(option: T, inputSelect: GIPIInputSelectComponent<T>): void {\n const values = [...this.value];\n const index: number = values.findIndex(o => o === option);\n if (index >= 0) {\n values.splice(index, 1);\n this.value = [...values];\n\n if (!ArrayUtil.isEmpty(values)) {\n inputSelect.indeterminateAllCheckbox();\n } else {\n inputSelect.toggleAllCheckboxChecked = false;\n inputSelect.toggleAllCheckboxIndeterminate = false;\n }\n\n this._changeDetectorRef.detectChanges();\n }\n }\n\n onChangeRadioGroup(radioChange: MatRadioChange, ngModel: NgModel): void {\n if ((radioChange.value === this._radioValue) || (this._radioValue === 'BY_SELECTION')) {\n ngModel.reset();\n this._radioValue = 'BY_SELECTION';\n } else {\n if ((radioChange.value === 'ALL') && (!ArrayUtil.isEmpty(this.value))) {\n ngModel.reset();\n this._radioValue = 'BY_SELECTION';\n } else {\n this._radioValue = radioChange.value;\n }\n }\n\n if (!ObjectUtil.isNull(this.overlaySelectListbox)) {\n this.overlaySelectListbox.alignOverlay();\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n onClickRadioButton(radioValue: FilterType, ngModel: NgModel): void {\n if (radioValue === this._radioValue) {\n ngModel.reset();\n this._radioValue = 'BY_SELECTION';\n } else {\n if ((radioValue === 'ALL') && (!ArrayUtil.isEmpty(this.value))) {\n ngModel.reset();\n this._radioValue = 'BY_SELECTION';\n } else {\n this._radioValue = radioValue;\n }\n }\n\n if (!ObjectUtil.isNull(this.overlaySelectListbox)) {\n this.overlaySelectListbox.alignOverlay();\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n onClickClear(inputSelect?: GIPIInputSelectComponent<T>): void {\n this.value = [];\n if (!ObjectUtil.isNull(this.inputSelect)) {\n inputSelect = this.inputSelect;\n }\n if (!ObjectUtil.isNull(inputSelect)) {\n inputSelect.toggleAllCheckboxChecked = false;\n inputSelect.toggleAllCheckboxIndeterminate = false;\n }\n\n this._radioValue = this.hideFilterType ? 'BY_SELECTION' : 'ALL';\n\n if (!ObjectUtil.isNull(this.overlaySelectListbox)) {\n this.overlaySelectListbox.alignOverlay();\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n onClickApply(): void {\n const applyChange: ApplyChange<T> = {\n filterType: this._radioValue,\n values: this.value,\n };\n this.onApply.emit(applyChange);\n this.hideOverlay();\n\n }\n\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { A, DOWN_ARROW, END, ENTER, ESCAPE, HOME, NINE, SPACE, UP_ARROW, Z, ZERO } from '@angular/cdk/keycodes';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, Inject, Input, OnChanges, OnDestroy, OnInit, Optional, QueryList, SimpleChanges, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatOption, MatSelect } from '@angular/material';\nimport { BehaviorSubject, Observable, Subject, combineLatest, of } from 'rxjs';\nimport { delay, filter, map, startWith, switchMap, take, takeUntil, tap } from 'rxjs/operators';\n\n@Component({\n selector: `gipi-input-search`,\n exportAs: 'gipiInputSearch',\n templateUrl: './input-search.component.html',\n styleUrls: ['./input-search.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputSearchComponent => GIPIInputSearchComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-search',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputSearchComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor {\n\n // Valor de pesquisa atual\n get value(): string {\n return this._formControl.value;\n }\n\n private _lastExternalInputValue: string;\n\n // Referência às opções MatSelect\n public _options$: BehaviorSubject<QueryList<MatOption>> = new BehaviorSubject<QueryList<MatOption>>(null);\n public set _options(_options: QueryList<MatOption>) {\n this._options$.next(_options);\n }\n public get _options(): QueryList<MatOption> {\n return this._options$.getValue();\n }\n\n private optionsList$: Observable<MatOption[]> = this._options$.pipe(\n switchMap((_options: QueryList<MatOption>): Observable<any> => _options\n ? _options.changes.pipe(\n map((options: any): any => options.toArray()),\n startWith<MatOption[]>(_options.toArray()),)\n : of(null)\n )\n );\n\n private optionsLength$: Observable<number> = this.optionsList$.pipe(\n map((options: MatOption[]): number => options ? options.length : 0)\n );\n\n public _formControl: FormControl = new FormControl('');\n\n // Se deve mostrar a mensagem sem entradas encontradas\n public _showNoEntriesFound$: Observable<boolean> = combineLatest([\n this._formControl.valueChanges,\n this.optionsLength$\n ]).pipe(\n map(([value, optionsLength]: [any, number]): boolean => value && optionsLength === this.getOptionsLengthOffset())\n );\n\n // Subject emitido quando o componente foi destruído\n private _onDestroy: Subject<void> = new Subject<void>();\n\n // Referência ao descendente ativo para suporte ARIA.\n private activeDescendant: HTMLElement;\n\n @Input() placeholderLabel: string = 'Pesquisar';\n\n @Input() clearSearchInput: boolean = true;\n\n // Se deve mostrar o indicador de pesquisa em andamento\n @Input() searching: boolean = false;\n\n // Desativa o foco inicial do campo de entrada\n @Input() disableInitialFocus: boolean = false;\n\n // Ativar limpar input ao pressionar escape\n @Input() enableClearOnEscapePressed: boolean = false;\n\n /**\n * Impede que a chave home/end seja propagada para mat-select,\n * permitindo mover o cursor dentro da entrada de pesquisa em vez de navegar pelas opções\n */\n @Input() preventHomeEndKeyPropagation: boolean = false;\n\n // Desativa a rolagem para as opções ativas quando a lista de opções é alterada. Útil para pesquisa do lado do servidor\n @Input() disableScrollToActiveOnOptionsChanged: boolean = false;\n\n // Mostrar/ocultar o botão limpar pesquisa da entrada de pesquisa\n @Input() hideClearSearchButton: boolean = false;\n\n // Referência ao campo de entrada de pesquisa\n @ViewChild('searchSelectInput', { read: ElementRef, static: true }) searchSelectInput: ElementRef;\n\n // Referência ao campo de entrada de pesquisa\n @ViewChild('innerSelectSearch', { read: ElementRef, static: true }) innerSelectSearch: ElementRef;\n\n // Adiciona a classe mat-select-search-inside-mat-option se o itss-input-search estiver\n // dentro do mat-option\n @HostBinding('class.mat-select-search-inside-mat-option')\n get isInsideMatOption(): boolean {\n return !!this.matOption;\n }\n\n constructor(\n @Inject(MatSelect) public matSelect: MatSelect,\n public changeDetectorRef: ChangeDetectorRef,\n private _viewportRuler: ViewportRuler,\n @Optional() @Inject(MatOption) public matOption: MatOption = null,\n @Optional() @Inject(MatFormField) public matFormField: MatFormField = null,\n ) { }\n\n ngOnInit(): void {\n // Definir classe de opção mat personalizada se o componente foi colocado dentro de uma opção mat\n if (this.matOption) {\n this.matOption.disabled = true;\n this.matOption._getHostElement().classList.add('contains-mat-select-search');\n this.matOption._getHostElement().setAttribute('aria-hidden', 'true');\n } else {\n console.error('<gipi-select-search> deve ser colocado dentro de um elemento <mat-option>');\n }\n\n // Quando o painel suspenso de seleção é aberto ou fechado\n this.matSelect.openedChange\n .pipe(\n delay(1),\n takeUntil(this._onDestroy)\n )\n .subscribe((opened: boolean): void => {\n if (opened) {\n this.updateInputWidth();\n\n // Focar o campo de pesquisa ao abrir\n if (!this.disableInitialFocus) {\n this._focus();\n }\n } else {\n // Limpá-lo ao fechar\n if (this.clearSearchInput) {\n this._reset();\n }\n }\n });\n\n // Definir o primeiro item ativo após as opções alteradas\n this.matSelect.openedChange\n .pipe(\n take(1),\n switchMap((): Observable<any> => {\n this._options = this.matSelect.options;\n\n // Variável de fechamento para rastrear a primeira opção mais recente.\n // Para evitar que a lista role para o topo quando as opções são adicionadas ao final da lista\n // (por exemplo: rolagem infinita), comparamos apenas as alterações nas primeiras opções para\n // determinar se devemos definir o primeiro item como ativo. Isso evita a rolagem desnecessária\n // para o topo da lista quando as opções são anexadas, mas permite que o primeiro item da lista\n // seja definido como ativo por padrão quando não há seleção ativa.\n let previousFirstOption: MatOption = this._options.toArray()[this.getOptionsLengthOffset()];\n\n return this._options.changes\n .pipe(\n tap((): void => {\n // Evitar o erro \"expression has been changed\"\n setTimeout((): void => {\n // Converter a QueryList em uma matriz\n const options: MatOption[] = this._options.toArray();\n\n // O verdadeiro primeiro item é compensado por 1\n const currentFirstOption: MatOption = options[this.getOptionsLengthOffset()];\n\n const keyManager: ActiveDescendantKeyManager<MatOption> = this.matSelect._keyManager;\n if (keyManager && this.matSelect.panelOpen) {\n\n // Definir primeiro item ativo e largura de entrada\n\n // Verifique se a primeira opção nessas alterações é diferente da anterior.\n const firstOptionIsChanged: boolean = !this.matSelect.compareWith(previousFirstOption, currentFirstOption);\n\n // CASO: A primeira opção é diferente agora.\n // Indica que devemos defini-lo como ativo e rolar para o topo.\n if (firstOptionIsChanged\n || !keyManager.activeItem\n || !options.find((option: MatOption): boolean => this.matSelect.compareWith(option, keyManager.activeItem))) {\n keyManager.setFirstItemActive();\n }\n\n // Aguarde as alterações na largura do painel\n setTimeout((): void => {\n this.updateInputWidth();\n });\n }\n\n // Atualize nossa referência\n previousFirstOption = currentFirstOption;\n });\n })\n );\n })\n )\n .pipe(takeUntil(this._onDestroy))\n .subscribe();\n\n // Adicione ou remova a classe css dependendo se deseja mostrar a mensagem sem entradas encontradas\n // obs: isso é hacky\n this._showNoEntriesFound$.pipe(\n takeUntil(this._onDestroy)\n ).subscribe((showNoEntriesFound: boolean): void => {\n // Definir nenhuma classe de entrada encontrada na mat-option\n if (this.matOption) {\n if (showNoEntriesFound) {\n this.matOption._getHostElement().classList.add('mat-select-search-no-entries-found');\n } else {\n this.matOption._getHostElement().classList.remove('mat-select-search-no-entries-found');\n }\n }\n });\n\n // Redimensione a largura de entrada quando a viewport for redimensionada,\n // ou seja, a largura do acionador pode ser redimensionada.\n this._viewportRuler.change()\n .pipe(takeUntil(this._onDestroy))\n .subscribe((): void => {\n if (this.matSelect.panelOpen) {\n this.updateInputWidth();\n }\n });\n\n this.optionsList$.pipe(\n takeUntil(this._onDestroy)\n ).subscribe((): void => {\n // Atualizar visualização quando as opções disponíveis mudarem\n this.changeDetectorRef.markForCheck();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.searching) {\n this._formControl.disable();\n } else {\n this._formControl.enable();\n this._focus();\n }\n }\n\n ngOnDestroy(): void {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n onTouched: Function = (_: any): void => { };\n\n registerOnChange(fn: (value: string) => void): void {\n this._formControl.valueChanges.pipe(\n filter((value: any): boolean => value !== this._lastExternalInputValue),\n tap((): any => this._lastExternalInputValue = undefined),\n takeUntil(this._onDestroy)\n ).subscribe(fn);\n }\n\n registerOnTouched(fn: Function): void {\n this.onTouched = fn;\n }\n\n writeValue(value: string): void {\n this._lastExternalInputValue = value;\n this._formControl.setValue(value);\n this.changeDetectorRef.markForCheck();\n }\n\n /**\n * Manipula o evento de tecla pressionada com MatSelect.\n * Permite, por ex. selecionando com a tecla enter, navegando com as teclas de seta, etc.\n * @param event\n */\n _handleKeydown(event: KeyboardEvent): void {\n // Evite a propagação de todos os caracteres alfanuméricos para evitar problemas de seleção\n if ((event.key && event.key.length === 1) ||\n (event.keyCode >= A && event.keyCode <= Z) ||\n (event.keyCode >= ZERO && event.keyCode <= NINE) ||\n (event.keyCode === SPACE)\n || (this.preventHomeEndKeyPropagation && (event.keyCode === HOME || event.keyCode === END))\n ) {\n event.stopPropagation();\n }\n\n if (this.matSelect.multiple && event.key && event.keyCode === ENTER) {\n // Recupere o foco após a seleção múltipla, para que possamos digitar ainda mais\n setTimeout((): void => this._focus());\n }\n\n // Caso especial, se clicar em Escape, se a entrada estiver vazia, feche o menu suspenso, caso contrário, esvazie o campo de pesquisa\n if (this.enableClearOnEscapePressed === true && event.keyCode === ESCAPE && this.value) {\n this._reset(true);\n event.stopPropagation();\n }\n }\n\n /**\n * Manipula o evento de ativação de chave com MatSelect.\n * Permite, por ex. o anúncio do Descendente atualmente ativo por leitores de tela.\n */\n _handleKeyup(event: KeyboardEvent): void {\n if (event.keyCode === UP_ARROW || event.keyCode === DOWN_ARROW) {\n const ariaActiveDescendantId: string = this.matSelect._getAriaActiveDescendant();\n const index: number = this._options.toArray().findIndex((item: MatOption): boolean => item.id === ariaActiveDescendantId);\n if (index !== -1) {\n this.unselectActiveDescendant();\n this.activeDescendant = this._options.toArray()[index]._getHostElement();\n this.activeDescendant.setAttribute('aria-selected', 'true');\n this.searchSelectInput.nativeElement.setAttribute('aria-activedescendant', ariaActiveDescendantId);\n }\n }\n }\n\n onBlur(): void {\n this.unselectActiveDescendant();\n this.onTouched();\n }\n\n /**\n * Focaliza o campo de entrada de pesquisa\n */\n public _focus(): void {\n if (!this.searchSelectInput || !this.matSelect.panel) {\n return;\n }\n // salve e restaure o scrollTop do painel, pois será redefinido por focus ()\n // obs: isso é hacky\n const panel: any = this.matSelect.panel.nativeElement;\n const scrollTop: any = panel.scrollTop;\n\n // Seta o foco\n this.searchSelectInput.nativeElement.focus();\n\n panel.scrollTop = scrollTop;\n }\n\n /**\n * Redefine o valor de pesquisa atual\n * @param focus se deve focar após a redefinição\n */\n public _reset(focus?: boolean): void {\n this._formControl.setValue('');\n if (focus) {\n this._focus();\n }\n }\n\n /**\n * Defina a largura do innerSelectSearch para ajustar até mesmo as barras de rolagem personalizadas\n * E apoiar todos os sistemas de operação\n */\n public updateInputWidth(): void {\n if (!this.innerSelectSearch || !this.innerSelectSearch.nativeElement) {\n return;\n }\n let element: HTMLElement = this.innerSelectSearch.nativeElement;\n let panelElement: HTMLElement;\n while (element = element.parentElement) {\n if (element.classList.contains('mat-select-panel')) {\n panelElement = element;\n break;\n }\n }\n if (panelElement) {\n this.innerSelectSearch.nativeElement.style.width = panelElement.clientWidth + 'px';\n }\n }\n\n /**\n * Determine o deslocamento para o comprimento que pode ser causado pelo matOption opcional usado como uma entrada de pesquisa.\n */\n private getOptionsLengthOffset(): number {\n if (this.matOption) {\n return 1;\n } else {\n return 0;\n }\n }\n\n private unselectActiveDescendant(): void {\n if (this.activeDescendant) {\n this.activeDescendant.removeAttribute('aria-selected');\n }\n this.searchSelectInput.nativeElement.removeAttribute('aria-activedescendant');\n }\n\n}\n","import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, TrackByFunction, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatSelect } from '@angular/material/select';\nimport { Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';\n\nimport { AbstractModel, ArrayUtil, ObjectUtil, PageDTO, StringUtil } from '../../../core';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-input-select-paged`,\n exportAs: 'gipiInputSelectPaged',\n templateUrl: './input-select-paged.component.html',\n styleUrls: ['./input-select-paged.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputSelectPagedComponent => GIPIInputSelectPagedComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-select-paged',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputSelectPagedComponent<T> implements OnInit, OnChanges, ControlValueAccessor, OnDestroy {\n\n private _name: string = `gipi-input-select-paged-${nextUniqueId++}`;\n\n valueSearchCtrl: FormControl = new FormControl('');\n\n page: PageDTO<T>;\n\n totalOptions: number = 0;\n\n subscriptions: Subscription[] = [];\n\n searching: boolean = false;\n\n @ViewChild('matSelect', { static: false }) private matSelect: MatSelect;\n\n @ViewChild(CdkVirtualScrollViewport, { static: false }) private cdkVirtualScrollViewPort: CdkVirtualScrollViewport;\n\n @Input() id: number | string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() label: string;\n\n @Input() ariaLabel: string;\n\n @Input() placeholder: string = 'Selecionar';\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n // Mostrar/ocultar o input para pesquisar\n @Input() hideFieldSearch: boolean = false;\n\n // Mostrar/ocultar o botão limpar opções selecionadas\n @Input() showClear: boolean = false;\n\n @Input() debounceTime: number = 1000; // milissegundos\n\n // Valores que não serão exibidos nas opções\n @Input() valuesExclud: T[] = [];\n\n @Input() classSelectPanel: string;\n\n @Input() trackyBy: string = 'id';\n\n @Input() infiniteScroll: boolean = true;\n\n @Input() property: string = 'description';\n\n @Input() propertyFn: (obj: T) => string;\n\n @Input() nextBatchFn: (researchField: string, page: number, paramNextBatch?: any) => Promise<PageDTO<T>>;\n\n private _paramNextBatch: any;\n @Input() set paramNextBatch(val: any) {\n this._paramNextBatch = val;\n }\n get paramNextBatch(): any {\n return this._paramNextBatch;\n }\n\n private _model: T;\n @Input() set model(value: T) {\n this._model = value;\n this.modelChange.emit(this._model);\n this.onChange(this._model);\n this.onTouch(this._model);\n\n this._changeDetectorRef.markForCheck();\n }\n get model(): T {\n return this._model;\n }\n\n private _options: T[] = [];\n @Input() set options(val: T[]) {\n this._options = val;\n }\n get options(): T[] {\n return this._options;\n }\n\n @Output() modelChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() selectionChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() searchChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n get scrollViewportHeight(): number {\n if (ArrayUtil.isEmpty(this.options)) {\n return 0;\n }\n\n // Cada mat-option possui 3em ou 39px. 3 * quantidade de mat-option\n return (3 * this.options.length);\n };\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n // O debounceTime é utlizado para emitir o valor após o usuário parar\n // de digitar, evitando consulta a toda letra que for digitada.\n // O distinctUntilChanged é utilizado para emitir apenas valores\n // que são diferentes dos valores anteriores emitidos.\n this.subscriptions.push(\n this.valueSearchCtrl.valueChanges\n .pipe(\n map((value: string): string => value),\n debounceTime(this.debounceTime),\n distinctUntilChanged()\n )\n .subscribe((value: string): void => {\n this.onSearchChange(value);\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!ObjectUtil.isNull(changes.model) && !changes.model.isFirstChange()) {\n if (ArrayUtil.isEmpty(this.options) && !ObjectUtil.isNull(this.model)) {\n this.options.push(this.model);\n }\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n trackByOption: TrackByFunction<T> = (index, obj) => obj && this.trackyBy ? obj[this.trackyBy] : obj;\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.model = value;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this._changeDetectorRef.markForCheck();\n }\n\n compareFn(f1: AbstractModel, f2: AbstractModel): boolean {\n return f1 && f2 && f1.id === f2.id;\n }\n\n getPropertyValue(entity: any): string {\n if (!ObjectUtil.isNewModel(entity)) {\n if (!ObjectUtil.isNull(this.propertyFn)) {\n return this.propertyFn(entity);\n }\n return this.getValue(entity, this.property);\n }\n return StringUtil.EMPTY;\n }\n\n getValue(entity: any, property: string): string {\n if (ObjectUtil.isNull(entity)) {\n return '';\n }\n\n const properties: string[] = property.split('.');\n let value: any = entity;\n\n for (let i: number = 0; i < properties.length; i++) {\n value = Reflect.get(value, properties[i]);\n if (value && i === properties.length - 1) {\n return value;\n }\n }\n }\n\n onSelectionChange(entity: T): void {\n this.selectionChange.emit(entity);\n }\n\n onSearchChange(value: string): void {\n if (this.matSelect.panelOpen) {\n this.searchChange.emit(value);\n\n this.model = null;\n this.onSelectionChange(this.model);\n\n this.page = null;\n this.options = [];\n\n this.onLoadMoreOptions(false);\n }\n }\n\n async onLoadMoreOptions(isInfiniteScroll: boolean, isOpened: boolean = true): Promise<void> {\n if (!this.infiniteScroll) {\n return;\n }\n if (!isOpened) {\n return;\n }\n if (ObjectUtil.isNull(this.nextBatchFn)) {\n console.error('A função nextBatchFn é obrigatória e não foi informada');\n return;\n }\n if (this.searching) {\n return;\n }\n if (!ArrayUtil.isEmpty(this.options) && !ObjectUtil.isNull(this.page)) {\n if (this.options.length === this.page.totalElements) {\n return;\n }\n }\n\n this.cdkVirtualScrollViewPort.scrollToIndex(0, 'smooth');\n this.cdkVirtualScrollViewPort.checkViewportSize();\n\n this.searching = true;\n\n let pageNumber: number = 0;\n if (isInfiniteScroll) {\n pageNumber = !ObjectUtil.isNull(this.page) ? this.page.number + 1 : 1;\n } else {\n this.page = null;\n this.options = [];\n }\n\n await this.nextBatchFn(this.valueSearchCtrl.value, pageNumber, this.paramNextBatch)\n .then(page => {\n this.page = page;\n\n if (!ObjectUtil.isNull(this.page) && !ArrayUtil.isEmpty(this.page.content)) {\n if (!ArrayUtil.isEmpty(this.valuesExclud)) {\n for (let i: number = 0; i < this.valuesExclud.length; i++) {\n const index: number = this.page.content.findIndex(o => this.valuesExclud[i][this.trackyBy] === o[this.trackyBy]);\n this.page.content.splice(index, 1);\n }\n }\n\n this.options = [...this.options, ...this.page.content];\n }\n\n if (!ObjectUtil.isNull(this.model)) {\n const modelInList: T = this.options.find(o => ObjectUtil.equals(o, this.model));\n if (ObjectUtil.isNull(modelInList)) {\n this.options.push(this.model);\n }\n }\n\n this.searching = false;\n })\n .finally(() => {\n this.searching = false;\n });\n\n this._changeDetectorRef.detectChanges();\n }\n\n showClearOptionButton(): boolean {\n let isNewModel: boolean = true;\n if (!ObjectUtil.isNull(this.model)) {\n isNewModel = ObjectUtil.isNewModel(this.model);\n }\n return this.showClear && !isNewModel && (!this.disabled) && (!this.searching);\n }\n\n haveSelected(): boolean {\n const entity: any = this.model;\n if (entity) {\n return entity.id && entity.id > 0;\n }\n return false;\n }\n\n removeOption(): void {\n this.model = null;\n this.onSelectionChange(this.model);\n this.options = [];\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatRadioChange } from '@angular/material/radio';\n\nimport { ArrayUtil } from '../../../core/utils/array.util';\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { GIPIFormFieldComponent } from '../form-field/form-field.component';\nimport { GIPIPopoverTrigger } from '../popover/shared/popover-trigger';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-input-select-radio`,\n exportAs: 'gipiInputSelectRadio',\n templateUrl: './input-select-radio.component.html',\n styleUrls: ['./input-select-radio.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputSelectRadioComponent => GIPIInputSelectRadioComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-select-radio',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputSelectRadioComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\n private _name: string = `gipi-input-select-radio-${nextUniqueId++}`;\n\n _enumList: any[] = [];\n\n @ViewChild('formFieldSelectRadio', { read: GIPIFormFieldComponent, static: false }) formFieldSelectRadio: GIPIFormFieldComponent;\n\n @ViewChild(GIPIPopoverTrigger, { static: false }) popoverTrigger: GIPIPopoverTrigger;\n\n @Input() id: string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() placeholder: string = 'Selecionar';\n\n @Input() required: boolean;\n\n @Input() disabled: boolean = false;\n\n @Input() loading: boolean = false;\n\n @Input() showOnFocus: boolean = true;\n\n @Input() hideOnEscape: boolean = true;\n\n @Input() hideOnClick: boolean = true;\n\n @Input() enum: any;\n\n @Input() sort: (a: any, b: any) => number;\n\n @Input() valuesExclud: string[];\n\n @Input() valuesOmit: string[];\n\n _value: any;\n @Input('value') set value(value: any) {\n this._value = value;\n this.onChange(value);\n this.onTouch();\n }\n get value() {\n return this._value;\n }\n\n @Output() selectionChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onOpenedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n get optionSelected(): string {\n if (this.value && !ArrayUtil.isEmpty(this._enumList)) {\n const selected = this._enumList.find(e => e.key === this.value);\n if (selected) {\n return selected.value;\n }\n }\n\n return '';\n }\n\n constructor(\n public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef\n ) { }\n\n ngOnInit(): void {\n const lEnumList = Object.keys(this.enum)\n .map(key => ({ key: key, value: this.enum[key] }))\n .sort(this.sort);\n\n if (!ObjectUtil.isNull(this.valuesExclud)) {\n for (let i = 0; i < lEnumList.length; i++) {\n const excludEnum: boolean = this.valuesExclud.some(e => e === lEnumList[i].key);\n if (!excludEnum) {\n this._enumList.push(lEnumList[i]);\n }\n }\n } else {\n this._enumList = lEnumList;\n }\n\n this._changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n if (!ObjectUtil.isNull(this.popoverTrigger)) {\n this.popoverTrigger.destroyPopover();\n }\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n changeRadioGroup({ value }: MatRadioChange): void {\n this.selectionChange.emit(value);\n\n if (this.hideOnClick) {\n this.popoverTrigger.closePopover();\n }\n }\n\n validateOmitByKey(key: string): boolean {\n return !ObjectUtil.isNull(this.valuesOmit) ? !this.valuesOmit.some(el => el === key) : true;\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 public onInputFocus(event: Event): void {\n if (this.showOnFocus && !this.disabled) {\n this.showPopover();\n this.onFocus.emit(event);\n event.stopPropagation();\n }\n }\n\n public onInputClick(event: Event): void {\n if (!this.disabled) {\n this.showPopover();\n\n if (!ObjectUtil.isNull(this.popoverTrigger) && !this.popoverTrigger.popoverOpen) {\n this.formFieldSelectRadio.focus();\n }\n\n event.stopPropagation();\n }\n }\n\n public onInputBlur(event: Event): void {\n if (!this.disabled) {\n this.onBlur.emit(event);\n this.onTouch();\n }\n }\n\n public onInputKeydown(event: KeyboardEvent): void {\n if (this.disabled) {\n event.stopImmediatePropagation();\n return;\n }\n\n if (\n ((event.code.toUpperCase() === 'ESCAPE') && this.hideOnEscape) ||\n ((event.code.toUpperCase() === 'ENTER') || (event.code.toUpperCase() === 'NUMPADENTER')) ||\n (event.code.toUpperCase() === 'TAB')\n ) {\n if (!ObjectUtil.isNull(this.popoverTrigger) && this.popoverTrigger.popoverOpen) {\n this.closePopover();\n event.preventDefault();\n }\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onWindowResize(event: UIEvent): void {\n if (!ObjectUtil.isNull(this.popoverTrigger) && this.popoverTrigger.popoverOpen) {\n this.closePopover();\n event.stopPropagation();\n this._changeDetectorRef.detectChanges();\n }\n }\n\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-notification`,\n exportAs: 'gipiNotification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPINotificationComponent => GIPINotificationComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-notification',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPINotificationComponent implements OnInit {\n\n @Input() id: string;\n\n @Input() name: string;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() buttonPadding: number | string = 4;\n\n @Input() iconWidth: number | string = 24;\n @Input() iconHeight: number | string = 24;\n\n @Input() icon: string = null;\n\n @Input() svgIcon: string = null;\n\n @Input() disabled: string;\n\n @Input() loading: string;\n\n @Input() tooltip: string;\n\n @Output() onShowOverlay: EventEmitter<void> = new EventEmitter<void>();\n @Output('click') onClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n @Output('focus') onFocus: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n @Output('blur') onBlur: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n constructor() { }\n\n ngOnInit(): void { }\n\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-novelties`,\n exportAs: 'gipiNovelties',\n templateUrl: './novelties.component.html',\n styleUrls: ['./novelties.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPINoveltiesComponent => GIPINoveltiesComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-novelties',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPINoveltiesComponent implements OnInit {\n\n @Input() id: string;\n\n @Input() name: string;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() buttonPadding: number | string = 4;\n\n @Input() iconWidth: number | string = 24;\n @Input() iconHeight: number | string = 24;\n\n @Input() icon: string = null;\n\n @Input() svgIcon: string = null;\n\n @Input() disabled: string;\n\n @Input() loading: string;\n\n @Input() tooltip: string;\n\n @Input() hasNovelties: boolean = false;\n\n @Output() onShowOverlay: EventEmitter<void> = new EventEmitter<void>();\n @Output('click') onClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n @Output('focus') onFocus: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n @Output('blur') onBlur: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n constructor() { }\n\n ngOnInit(): void { }\n\n}\n","import { StringUtil } from './string.util';\n\n/** @dynamic */\nexport class PasswordUtil {\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 public static isValidMinLength(password: string): boolean {\n return (password.trim().length > 0) && (password.trim().length >= 6);\n }\n\n public static isValidMaxLength(password: string): boolean {\n return (password.trim().length > 0) && (password.trim().length <= 15);\n }\n\n public static hasUppercase(password: string): boolean {\n return (password.trim().length > 0) && (password.toLowerCase() !== password);\n }\n\n public static hasLowercase(password: string): boolean {\n return (password.trim().length > 0) && (password.toUpperCase() !== password);\n }\n\n public static hasNumber(password: string): boolean {\n return (password.trim().length > 0) && (/\\d/.test(password));\n }\n\n public static hasSpecialChar(password: string): boolean {\n return (password.trim().length > 0) && (/[!@#$%^&*()_={};':\"|,.<>?~]/g.test(password));\n }\n\n public static hasBackspace(password: string): boolean {\n return (password.trim.length > 0) && (/\\s/g.test(password));\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { PasswordUtil } from '../../../core/utils/password.util';\nimport { StringUtil } from '../../../core/utils/string.util';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-password-requeriments`,\n exportAs: 'gipiPasswordRequeriments',\n templateUrl: './password-requeriments.component.html',\n styleUrls: ['./password-requeriments.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIPasswordRequerimentsComponent => GIPIPasswordRequerimentsComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-password-requeriments',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIPasswordRequerimentsComponent implements OnInit, ControlValueAccessor {\n\n private _name: string = `gipi-password-requeriments-${nextUniqueId++}`;\n\n @Input() id: number | string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() disabled: boolean = false;\n\n private _password: string = '';\n @Input() set password(value: string) {\n if (ObjectUtil.isNull(value)) {\n this._password = '';\n } else {\n this._password = value;\n }\n\n if (StringUtil.isEmpty(this._password)) {\n this.onValid.emit(false);\n } else {\n this.onValid.emit(\n this.isValidMinLength &&\n this.isValidMaxLength &&\n this.hasUppercase &&\n this.hasLowercase &&\n this.hasNumber &&\n // this.hasSpecialChar &&\n !this.hasBackspace\n );\n }\n\n this.onChange(this._password);\n this.onTouch();\n }\n get password(): string {\n return this._password;\n }\n\n get isValidMinLength(): boolean {\n return (this.password.trim().length > 0) && (PasswordUtil.isValidMinLength(this.password));\n }\n\n get isValidMaxLength(): boolean {\n return (this.password.trim().length > 0) && (PasswordUtil.isValidMaxLength(this.password));\n }\n\n get hasUppercase(): boolean {\n return (this.password.trim().length > 0) && (PasswordUtil.hasUppercase(this.password));\n }\n\n get hasLowercase(): boolean {\n return (this.password.trim().length > 0) && (PasswordUtil.hasLowercase(this.password));\n }\n\n get hasNumber(): boolean {\n return (this.password.trim().length > 0) && (PasswordUtil.hasNumber(this.password));\n }\n\n // get hasSpecialChar(): boolean {\n // return (this.password.trim().length > 0) && (PasswordUtil.hasSpecialChar(this.password));\n // }\n\n get hasBackspace(): boolean {\n return (this.password.trim().length > 0) && (PasswordUtil.hasBackspace(this.password));\n }\n\n @Output() onValid: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit() { }\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n writeValue(value: any): void {\n this.password = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState?(value: boolean): void {\n this.disabled = value;\n this._changeDetectorRef.markForCheck();\n }\n\n}\n","import { trigger, state, style, animate, transition, AnimationTriggerMetadata, } from '@angular/animations';\n\n/**\n * Abaixo estão todas as animações para o componente popover.\n * A duração da animação e os valores de tempo são baseados no Angular Material.\n */\n\n/**\n * Esta animação controla a entrada e saída do painel popover da página.\n *\n * Quando o painel popover é adicionado ao DOM, ele é dimensionado e esmaecido em sua borda.\n *\n * Quando o painel popover é removido do DOM, ele simplesmente desaparece após um breve atraso para exibir a ondulação.\n */\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 { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, OnDestroy, OnInit, Output, TemplateRef, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { transformPopover } from './shared/popover-animations';\nimport { throwPopoverInvalidPositionX, throwPopoverInvalidPositionY } from './shared/popover-errors';\nimport { PopoverPanel } from './shared/popover-interfaces';\nimport { PopoverPositionX, PopoverPositionY, PopoverScrollStrategy, PopoverTriggerEvent } from './shared/popover-types';\n\n@Component({\n selector: `gipi-popover`,\n exportAs: 'gipiPopover',\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIPopoverComponent => GIPIPopoverComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-popover',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [\n transformPopover\n ],\n})\nexport class GIPIPopoverComponent implements OnInit, PopoverPanel, OnDestroy {\n\n @HostBinding('attr.role') role: string = 'dialog';\n\n private _popoverWidth: string = 'auto';\n private _positionX: PopoverPositionX = 'after';\n private _positionY: PopoverPositionY = 'below';\n private _triggerEvent: PopoverTriggerEvent = 'hover';\n private _scrollStrategy: PopoverScrollStrategy = 'reposition';\n private _enterDelay: number = 200;\n private _leaveDelay: number = 200;\n private _overlapTrigger: boolean = true;\n private _disableAnimation: boolean = false;\n private _targetOffsetX: number = 0;\n private _targetOffsetY: number = 0;\n private _arrowOffsetX: number = 20;\n private _arrowWidth: number = 8;\n private _arrowColor: string = 'rgba(0, 0, 0, 0.12)';\n private _closeOnClick: boolean = true;\n private _focusTrapEnabled: boolean = true;\n private _focusTrapAutoCaptureEnabled: boolean = true;\n\n /** Objeto de configuração a ser passado para o ngClass do popover */\n _classList: { [key: string]: boolean } = {};\n\n /** Posição do popover */\n public containerPositioning: boolean = false;\n\n /** Fechamento desabilitado no popover */\n public closeDisabled: boolean = false;\n\n /** Objeto de configuração a ser passado para a seta ngStyle do popover */\n public popoverPanelStyles: {};\n\n /** Objeto de configuração a ser passado para a seta ngStyle do popover */\n public popoverArrowStyles: {};\n\n /** Objeto de configuração a ser passado para o conteúdo do popover ngStyle */\n public popoverContentStyles: {};\n\n /** Emite o estado de animação atual sempre que muda. */\n _onAnimationStateChange: EventEmitter<AnimationEvent> = new EventEmitter<AnimationEvent>();\n\n /** Largura do popover */\n @Input()\n get popoverWidth(): string {\n return this._popoverWidth;\n }\n set popoverWidth(value: string) {\n this._popoverWidth = value;\n }\n\n /** Posição do popover no eixo X. */\n @Input('popoverPositionX')\n get positionX(): PopoverPositionX {\n return this._positionX;\n }\n set positionX(value: PopoverPositionX) {\n if (value !== 'before' && value !== 'after') {\n throwPopoverInvalidPositionX();\n }\n this._positionX = value;\n this.setPositionClasses();\n }\n\n /** Posição do popover no eixo Y. */\n @Input('popoverPositionY')\n get positionY(): PopoverPositionY {\n return this._positionY;\n }\n set positionY(value: PopoverPositionY) {\n if (value !== 'above' && value !== 'below') {\n throwPopoverInvalidPositionY();\n }\n this._positionY = value;\n this.setPositionClasses();\n }\n\n /** Evento de gatilho popover */\n @Input('popoverTriggerOn')\n get triggerEvent(): PopoverTriggerEvent {\n return this._triggerEvent;\n }\n set triggerEvent(value: PopoverTriggerEvent) {\n this._triggerEvent = value;\n }\n\n /** Estratégia de rolagem popover */\n @Input('popoverScrollStrategy')\n get scrollStrategy(): PopoverScrollStrategy {\n return this._scrollStrategy;\n }\n set scrollStrategy(value: PopoverScrollStrategy) {\n this._scrollStrategy = value;\n }\n\n /** Atrazo de entrada popover */\n @Input('popoverEnterDelay')\n get enterDelay(): number {\n return this._enterDelay;\n }\n set enterDelay(value: number) {\n this._enterDelay = value;\n }\n\n /** Atraso de saída popover */\n @Input('popoverLeaveDelay')\n get leaveDelay(): number {\n return this._leaveDelay;\n }\n set leaveDelay(value: number) {\n this._leaveDelay = value;\n }\n\n /** Gatilho de sobreposição de popover */\n @Input('popoverOverlapTrigger')\n get overlapTrigger(): boolean {\n return this._overlapTrigger;\n }\n set overlapTrigger(value: boolean) {\n this._overlapTrigger = value;\n }\n\n /** Deslocamento alvo do popover x */\n @Input('popoverOffsetX')\n get targetOffsetX(): number {\n return this._targetOffsetX;\n }\n set targetOffsetX(value: number) {\n this._targetOffsetX = value;\n }\n\n /** Deslocamento do alvo popover y */\n @Input('popoverOffsetY')\n get targetOffsetY(): number {\n return this._targetOffsetY;\n }\n set targetOffsetY(value: number) {\n this._targetOffsetY = value;\n }\n\n /** Deslocamento da seta popover x */\n @Input('popoverArrowOffsetX')\n get arrowOffsetX(): number {\n return this._arrowOffsetX;\n }\n set arrowOffsetX(value: number) {\n this._arrowOffsetX = value;\n }\n\n /** Largura da seta popover */\n @Input('popoverArrowWidth')\n get arrowWidth(): number {\n return this._arrowWidth;\n }\n set arrowWidth(value: number) {\n this._arrowWidth = value;\n }\n\n /** Cor da seta popover */\n @Input('popoverArrowColor')\n get arrowColor(): string {\n return this._arrowColor;\n }\n set arrowColor(value: string) {\n this._arrowColor = value;\n }\n\n /**\n * Contêiner popover fechado ao clicar\n * default: true\n */\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 * Desativar animações de popover e todos os elementos filhos\n * default: false\n */\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 * Armadilha de foco popover usando cdkTrapFocus\n * default: true\n */\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 * Captura automática da armadilha de foco popover usando cdkTrapFocusAutoCapture\n * default: true\n */\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 * Esse método usa classes definidas no elemento popover do host e as aplica no modelo popover\n * exibido no contêiner de sobreposição. Caso contrário, é difícil estilizar o popover de fora do componente.\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.split(' ').reduce((obj: any, className: string) => {\n obj[className] = true;\n return obj;\n }, {});\n\n this._elementRef.nativeElement.className = '';\n this.setPositionClasses();\n }\n }\n\n /** Evento emitido quando o popover é fechado. */\n @Output() close: EventEmitter<void> = new EventEmitter<void>();\n\n @ViewChild(TemplateRef, { static: false }) templateRef: TemplateRef<any>;\n\n constructor(private _elementRef: ElementRef, public zone: NgZone) {\n this.setPositionClasses();\n }\n\n ngOnInit(): void { }\n\n ngOnDestroy(): void {\n this._emitCloseEvent();\n this.close.complete();\n }\n\n /** Manipule um evento de teclado do popover, delegando para a ação apropriada. */\n _handleKeydown(event: KeyboardEvent): void {\n switch (event.keyCode) {\n case ESCAPE: {\n this._emitCloseEvent();\n return;\n }\n }\n }\n\n /** Isso emite um evento de fechamento no qual o acionador está inscrito. Quando emitido, o gatilho fechará o popover. */\n _emitCloseEvent(): void {\n this.close.emit();\n }\n\n /** Fechar popover ao clicar se closeOnClick for true */\n onClick(): void {\n if (this.closeOnClick) {\n this._emitCloseEvent();\n }\n }\n\n /** Desativa o fechamento do popover ao sair do elemento de gatilho e passar o mouse sobre o popover */\n onMouseOver(): void {\n if (this.triggerEvent === 'hover') {\n this.closeDisabled = true;\n }\n }\n\n /** Habilita o fechamento do popover quando o mouse sai do elemento popover */\n onMouseLeave(): void {\n if (this.triggerEvent === 'hover') {\n this.closeDisabled = false;\n this._emitCloseEvent();\n }\n }\n\n // TODO: Refatore como os estilos são definidos e atualizados no componente, use as melhores práticas.\n // TODO: Se o posicionamento da seta para a esquerda e para a direita for solicitado, veja se a direção flexível pode ser usada para trabalhar com a ordem.\n /** Define os estilos atuais para o popover para permitir a alteração dinâmica das configurações */\n setCurrentStyles(): void {\n\n // TODO: Veja se a posição da seta pode ser calculada automaticamente e permitir a substituição.\n // TODO: Veja se a ordem flexível é uma alternativa melhor para posicionar a seta para cima ou para baixo.\n this.popoverArrowStyles = {\n 'right': this.positionX === 'before' ? (this.arrowOffsetX - this.arrowWidth) + 'px' : '',\n 'left': this.positionX === 'after' ? (this.arrowOffsetX - this.arrowWidth) + 'px' : '',\n 'border-top': this.positionY === 'below' ? this.arrowWidth + 'px solid ' + this.arrowColor : '0px solid transparent',\n 'border-right': 'undefined' === undefined ? this.arrowWidth + 'px solid ' + this.arrowColor : this.arrowWidth + 'px solid transparent',\n 'border-bottom': this.positionY === 'above' ? this.arrowWidth + 'px solid ' + this.arrowColor : this.arrowWidth + 'px solid transparent',\n 'border-left': 'undefined' === undefined ? this.arrowWidth + 'px solid ' + this.arrowColor : this.arrowWidth + 'px solid transparent',\n };\n\n // TODO: Remova se a ordem flexível for adicionada.\n this.popoverContentStyles = {\n 'padding-top': this.overlapTrigger === true ? '0px' : this.arrowWidth + 'px',\n 'padding-bottom': this.overlapTrigger === true ? '0px' : (this.arrowWidth) + 'px',\n 'margin-top': this.overlapTrigger === false && this.positionY === 'below' && this.containerPositioning === false ? -(this.arrowWidth * 2) + 'px' : '0px'\n };\n }\n\n /**\n * É necessário definir classes baseadas em posição para garantir que a animação do painel popover\n * se expanda na direção correta.\n */\n setPositionClasses(posX: PopoverPositionX = this.positionX, posY: PopoverPositionY = this.positionY): void {\n this._classList['popover-before'] = posX === 'before';\n this._classList['popover-after'] = posX === 'after';\n this._classList['popover-above'] = posY === 'above';\n this._classList['popover-below'] = posY === 'below';\n }\n\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: 'popover-target, [popoverTarget]',\n exportAs: 'popoverTarget'\n})\nexport class GIPIPopoverTarget {\n constructor(public _elementRef: ElementRef) { }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatRadioChange } from '@angular/material';\n\nimport { ObjectUtil } from '../../../core';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-radio-group`,\n exportAs: 'gipiRadioGroup',\n templateUrl: './radio-group.component.html',\n styleUrls: ['./radio-group.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIRadioGroupComponent => GIPIRadioGroupComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-radio-group',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIRadioGroupComponent implements ControlValueAccessor, OnInit {\n\n private _name: string = `gipi-radio-group-${nextUniqueId++}`;\n\n _enumList: any[] = [];\n\n @Input() id: string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() disabled: boolean = false;\n\n @Input() required: boolean = false;\n\n @Input() fieldset: boolean = false;\n\n @Input() direction: 'row' | 'column' = 'row';\n\n @Input() enum: any;\n\n @Input() sort: (a: any, b: any) => number;\n\n @Input() valuesExclud: string[];\n\n @Input() valuesOmit: string[];\n\n @Input('value') val: any;\n get value() {\n return this.val;\n }\n set value(val) {\n this.val = val;\n this.onChange(val);\n this.onTouch();\n }\n\n @Output() selectionChange: EventEmitter<string> = new EventEmitter<string>();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n const lEnumList = Object.keys(this.enum)\n .map(key => ({ key: key, value: this.enum[key] }))\n .sort(this.sort);\n\n if (!ObjectUtil.isNull(this.valuesExclud)) {\n for (let i = 0; i < lEnumList.length; i++) {\n const excludEnum: boolean = this.valuesExclud.some(e => e === lEnumList[i].key);\n if (!excludEnum) {\n this._enumList.push(lEnumList[i]);\n }\n }\n } else {\n this._enumList = lEnumList;\n }\n\n this._changeDetectorRef.detectChanges();\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n changeRadioGroup({ value }: MatRadioChange): void {\n this.selectionChange.emit(value);\n }\n\n validateOmitByKey(key: string): boolean {\n return !ObjectUtil.isNull(this.valuesOmit) ? !this.valuesOmit.some(el => el === key) : true;\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ObjectUtil } from '../../../core/utils/object.util';\n\n@Component({\n selector: `gipi-select-button[gipi-primary], gipi-select-button[gipi-secondary]`,\n exportAs: 'gipiSelectButton',\n templateUrl: './select-button.component.html',\n styleUrls: ['./select-button.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPISelectButtonComponent => GIPISelectButtonComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-select-button',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPISelectButtonComponent implements ControlValueAccessor, OnInit {\n\n readonly isButtonPrimary: boolean = this._hasHostAttributes('gipi-primary');\n readonly isButtonSecondary: boolean = this._hasHostAttributes('gipi-secondary');\n\n @Input() id: string | number;\n\n @Input() arialLabel: string;\n\n @Input() dataKey: string;\n\n @Input() label: string;\n\n @Input() required: boolean = false;\n\n @Input() options: any[];\n\n @Input() optionLabel: string;\n\n @Input() optionValue: string;\n\n @Input() optionDisabled: string;\n\n @Input() multiple: boolean = false;\n\n @Input() disabled: boolean = false;\n\n @Output() onOptionClick: EventEmitter<any> = new EventEmitter();\n\n @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n value: any;\n\n onModelChange: Function = () => { };\n\n onModelTouched: Function = () => { };\n\n constructor(\n private _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef\n ) { }\n\n ngOnInit(): void { }\n\n writeValue(obj: any): void {\n this.value = obj;\n this._changeDetectorRef.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n getOptionLabel(option: any): any {\n return this.optionLabel ? ObjectUtil.resolveFieldData(option, this.optionLabel) : option.label != undefined ? option.label : option;\n }\n\n getOptionValue(option: any): any {\n return this.optionValue ? ObjectUtil.resolveFieldData(option, this.optionValue) : this.optionLabel || option.value === undefined ? option : option.value;\n }\n\n isOptionDisabled(option: any): any {\n return this.optionDisabled ? ObjectUtil.resolveFieldData(option, this.optionDisabled) : option.disabled !== undefined ? option.disabled : false;\n }\n\n onItemClick(event: any, option: any, index: number): void {\n if (this.disabled || this.isOptionDisabled(option)) {\n return;\n }\n\n if (this.multiple) {\n if (this.isSelected(option)) { this.removeOption(option); } else { this.value = [...(this.value || []), this.getOptionValue(option)]; }\n\n this.onModelChange(this.value);\n\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n } else {\n const value: any = this.getOptionValue(option);\n\n if (this.value !== value) {\n this.value = this.getOptionValue(option);\n this.onModelChange(this.value);\n\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n }\n\n this.onOptionClick.emit({\n originalEvent: event,\n option: option,\n index: index\n });\n }\n\n isSelected(option: any): boolean {\n let selected: boolean = false;\n const optionValue: any = this.getOptionValue(option);\n\n if (this.multiple) {\n if (this.value && Array.isArray(this.value)) {\n for (const val of this.value) {\n if (ObjectUtil.equals(val, optionValue, this.dataKey)) {\n selected = true;\n break;\n }\n }\n }\n } else {\n selected = ObjectUtil.equals(this.getOptionValue(option), this.value, this.dataKey);\n }\n\n return selected;\n }\n\n removeOption(option: any): void {\n this.value = this.value.filter(val => !ObjectUtil.equals(val, this.getOptionValue(option), this.dataKey));\n }\n\n onBlur(): void {\n this.onModelTouched();\n }\n\n private _getHostElement(): any {\n return this._elementRef.nativeElement;\n }\n\n private _hasHostAttributes(...attributes: string[]): boolean {\n return attributes.some(attribute => this._getHostElement().hasAttribute(attribute));\n }\n\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, TrackByFunction, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { StringUtil } from '../../../core/utils/string.util';\n\n@Component({\n selector: `gipi-select`,\n exportAs: 'gipiSelect',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPISelectComponent => GIPISelectComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-select',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class GIPISelectComponent<T> implements OnInit, ControlValueAccessor {\n\n _overlayVisible: boolean = false;\n\n _modelValue: T;\n\n @Input() id: string;\n\n @Input() name: string;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() placeholder: string;\n\n @Input() disabled: boolean = false;\n\n @Input() required: boolean = false;\n\n @Input() iconPrefix: string;\n @Input() iconPrefixWidth: string | number;\n @Input() iconPrefixHeight: string | number;\n @Input() svgIconPrefix: string;\n\n @Input() iconSuffix: string;\n @Input() iconSuffixWidth: string | number;\n @Input() iconSuffixHeight: string | number;\n @Input() svgIconSuffix: string;\n\n @Input() property: string = 'description';\n\n @Input() propertyFn: (obj: T) => string;\n\n @Input() options: T[] = [];\n\n @Input() trackyBy: string = 'id';\n\n @Input() set model(model: any) {\n this._modelValue = model;\n this.onModelChange.emit(this._modelValue);\n this.onChange(this._modelValue);\n this.onTouch(this._modelValue);\n }\n get model(): any {\n return this._modelValue;\n }\n\n @Output() onClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n @Output() onShowOverlay: EventEmitter<void> = new EventEmitter<void>();\n @Output() onModelChange: EventEmitter<T> = new EventEmitter<T>();\n @Output() onSelectionChange: EventEmitter<T> = new EventEmitter<T>();\n\n get optionSelectedText(): string {\n if (ObjectUtil.isNull(this.model) && !StringUtil.isEmpty(this.placeholder)) {\n return this.placeholder;\n } else if (!ObjectUtil.isNull(this.model)) {\n return this.getPropertyValue(this.model);\n }\n\n return '';\n }\n\n trackByOption: TrackByFunction<T> = (index, obj) => this.trackyBy ? obj[this.trackyBy] : obj;\n\n constructor() { }\n\n ngOnInit(): void { }\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n writeValue(value: any): void {\n this.model = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n toggleOverlay(): void {\n if (this.disabled) {\n return;\n }\n\n this._overlayVisible = !this._overlayVisible;\n }\n\n getPropertyValue(entity: T): string {\n if (!ObjectUtil.isNewModel(entity)) {\n if (!ObjectUtil.isNull(this.propertyFn)) {\n return this.propertyFn(entity);\n }\n return this._getValue(entity, this.property);\n }\n return StringUtil.EMPTY;\n }\n\n private _getValue(entity: T, property: string): string {\n const properties: string[] = property.split('.');\n let value: any = entity;\n\n for (let i: number = 0; i < properties.length; i++) {\n value = Reflect.get(value, properties[i]);\n if (value && i === properties.length - 1) {\n return value;\n }\n }\n }\n\n isOptionActive(option: T): boolean {\n if (!ObjectUtil.isNull(this._modelValue)) {\n if (!StringUtil.isEmpty(this.property)) {\n return (option[this.property] === this._modelValue[this.property]);\n } else {\n return (option === this._modelValue);\n }\n }\n return false;\n }\n\n onClickOption(option: T): void {\n this.model = option;\n this.onSelectionChange.emit(option);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { fromEvent, Observable } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay, startWith } from 'rxjs/operators';\n\nimport { AbstractService } from './abstract.service';\n\nexport const POINTS_NAME: string[] = [\n 'xl',\n 'lg',\n 'md',\n 'sm',\n 'xs'\n];\n\nconst QUERY: Map<string, string> = new Map([\n [POINTS_NAME[0], '(min-width: 1920px)'], // xl\n [POINTS_NAME[1], '(min-width: 1366px)'], // lg\n [POINTS_NAME[2], '(min-width: 768px)'], // md\n [POINTS_NAME[3], '(min-width: 600px)'], // sm\n [POINTS_NAME[4], '(min-width: 0px)'], // xs\n]);\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BreakpointObserverService extends AbstractService {\n\n readonly _size$: Observable<string>;\n\n constructor() {\n super();\n this._size$ = fromEvent(window, 'resize').pipe(\n startWith(this._getScreenSize()),\n map((event: Event) => this._getScreenSize()),\n distinctUntilChanged(),\n shareReplay(1)\n );\n }\n\n public get size$(): Observable<string> {\n return this._size$;\n }\n\n private _getScreenSize(): string {\n const [[newSize = 'never']] = Array.from(QUERY.entries()).filter(([size, mediaQuery]) => window.matchMedia(mediaQuery).matches);\n return newSize;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { AbstractService } from './abstract.service';\nimport { MenuDTO } from '../models/dto/menu.dto';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NavService extends AbstractService {\n\n public sidenav: any;\n\n public menuItems: MenuDTO[] = [];\n\n public isOpened: boolean = false;\n\n public currentUrl: BehaviorSubject<string> = new BehaviorSubject<string>(undefined);\n\n constructor(private router: Router) {\n super();\n this.router.events.subscribe((event: NavigationEnd) => {\n if (event instanceof NavigationEnd) {\n this.currentUrl.next(event.url);\n }\n });\n }\n\n public close(): void {\n this.isOpened = false;\n this._collapseAllMenu();\n }\n\n public open(): void {\n this.isOpened = true;\n this._collapseAllMenu();\n }\n\n public toggle(): void {\n this.isOpened = !this.isOpened;\n this._collapseAllMenu();\n }\n\n private _collapseAllMenu(): void {\n this.menuItems.forEach(m => m.expanded = false);\n }\n\n}\n","import { AfterContentInit, Component, HostListener, OnInit, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { BreakpointObserverService } from '../../../../core/services/breakpoint-observer.service';\nimport { NavService } from '../../../../core/services/nav.service';\n\n@Component({\n selector: `gipi-sidenav-container`,\n exportAs: 'gipiSidenavContainer',\n templateUrl: './container.component.html',\n styleUrls: ['./container.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPISidenavContainerComponent => GIPISidenavContainerComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-sidenav-container',\n },\n})\nexport class GIPISidenavContainerComponent implements OnInit, AfterContentInit {\n\n constructor(\n private _navService: NavService,\n private _breakpointObserverService: BreakpointObserverService\n ) { }\n\n ngOnInit(): void { }\n\n ngAfterContentInit(): void {\n this.isScreenLarge.subscribe(isScreenLarge => {\n if (isScreenLarge) {\n this._navService.open();\n }\n });\n }\n\n get isOpened(): Observable<boolean> {\n return of(this._navService.isOpened);\n }\n\n get isScreenLarge(): Observable<boolean> {\n // return this._breakpointObserverService.size$.pipe(\n // map(size => (size === 'lg'))\n // );\n return this._breakpointObserverService.size$.pipe(\n map(size => (size !== 'xs') && (size !== 'sm') && (size !== 'md'))\n );\n }\n\n onClickBackdrop(): void {\n if (this._navService.isOpened) {\n this.isScreenLarge.subscribe(isScreenLarge => {\n if (!isScreenLarge) {\n this._navService.close();\n }\n });\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: UIEvent): void {\n this.isScreenLarge.subscribe(isScreenLarge => {\n if (isScreenLarge) {\n this._navService.open();\n } else {\n this._navService.close();\n }\n });\n }\n\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { Router } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { MenuDTO } from '../../../../core/models/dto/menu.dto';\nimport { BreakpointObserverService } from '../../../../core/services/breakpoint-observer.service';\nimport { NavService } from '../../../../core/services/nav.service';\nimport { ArrayUtil } from '../../../../core/utils/array.util';\nimport { ObjectUtil } from '../../../../core/utils/object.util';\nimport { StringUtil } from '../../../../core/utils/string.util';\n\n@Component({\n selector: `gipi-sidenav`,\n exportAs: 'gipiSidenav',\n templateUrl: './sidenav.component.html',\n styleUrls: ['./sidenav.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPISidenavComponent => GIPISidenavComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-sidenav',\n },\n animations: [\n trigger('indicatorRotate', [\n state('closed', style({ transform: 'rotate(0deg)' })),\n state('opened', style({ transform: 'rotate(180deg)' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4,0.0,0.2,1)')),\n ])\n ]\n})\nexport class GIPISidenavComponent implements OnInit, AfterViewInit {\n\n @ViewChild('sidenav', { static: false }) sidenav: MatSidenav;\n\n public _levelOneMenuCollapsableSelected: MenuDTO = null;\n public _levelTwoMenuCollapsableSelected: MenuDTO = null;\n\n public _mouseEnter: boolean = false;\n\n @Input() menuItems: MenuDTO[] = [];\n\n @Input() labelToggle: string = 'Retrair menu';\n\n @Input() iconConfiguration: string;\n\n @Input() svgIconConfiguration: string;\n\n @Input() labelConfiguration: string;\n\n @Input() showConfiguration: boolean = false;\n\n @Output() onClickMenuItem: EventEmitter<MenuDTO | null> = new EventEmitter<MenuDTO | null>();\n\n constructor(\n private _navService: NavService,\n private _breakpointObserverService: BreakpointObserverService,\n private _router: Router,\n ) { }\n\n ngOnInit(): void { }\n\n ngAfterViewInit(): void {\n this._navService.sidenav = this.sidenav;\n this._navService.menuItems = this.menuItems;\n }\n\n public get isOpened(): Observable<boolean> {\n return of(this._navService.isOpened);\n }\n\n public get isScreenLarge(): Observable<boolean> {\n return this._breakpointObserverService.size$.pipe(\n map(size => (size !== 'xs') && (size !== 'sm') && (size !== 'md'))\n );\n }\n\n public get submenuBackButtonName(): Observable<string> {\n if (ObjectUtil.isNull(this._levelOneMenuCollapsableSelected) && ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n return of('Voltar');\n } else if (!ObjectUtil.isNull(this._levelOneMenuCollapsableSelected) && ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n return of(this._levelOneMenuCollapsableSelected.name);\n } else if (!ObjectUtil.isNull(this._levelOneMenuCollapsableSelected) && !ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n return of(`${this._levelOneMenuCollapsableSelected.name} / ${this._levelTwoMenuCollapsableSelected.name}`);\n }\n }\n\n public get levelMenuCollapsableSelected(): Observable<MenuDTO[]> {\n if (ObjectUtil.isNull(this._levelOneMenuCollapsableSelected) && ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n return of(this.menuItems);\n } else if (!ObjectUtil.isNull(this._levelOneMenuCollapsableSelected) && ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n return of(this._levelOneMenuCollapsableSelected.menuList);\n } else if (!ObjectUtil.isNull(this._levelOneMenuCollapsableSelected) && !ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n return of(this._levelTwoMenuCollapsableSelected.menuList);\n }\n }\n\n public toggleSidenav(): void {\n this._levelOneMenuCollapsableSelected = null;\n this._levelTwoMenuCollapsableSelected = null;\n this.onMenuCollapsableReset(this.menuItems);\n\n this._navService.toggle();\n }\n\n public onMenuCollapsableSelected(menu: MenuDTO): void {\n setTimeout(() => {\n if (!this._navService.isOpened) {\n this._navService.open();\n }\n\n if (this._navService.isOpened) {\n menu.expanded = true;\n\n /**\n * Se o menuList está carregado e o (this._levelOneMenuCollapsableSelected === null) significa que possui mais niveis, portanto este é o nivel 1.\n * Se o menuList está carregado e o (this._levelTwoMenuCollapsableSelected === null) significa que este é o útimo nível, portanto este é o nivel 2.\n */\n if (!ArrayUtil.isEmpty(menu.menuList) && ObjectUtil.isNull(this._levelOneMenuCollapsableSelected)) {\n this._levelOneMenuCollapsableSelected = ObjectUtil.clone(menu);\n } else if (!ArrayUtil.isEmpty(menu.menuList) && ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n this._levelTwoMenuCollapsableSelected = ObjectUtil.clone(menu);\n }\n }\n });\n }\n\n public onMenuCollapsableReset(menuList: MenuDTO[]): void {\n setTimeout(() => {\n for (let i = 0; i < menuList.length; i++) {\n menuList[i].expanded = false;\n\n if (!ArrayUtil.isEmpty(menuList[i].menuList)) {\n this.onMenuCollapsableReset(menuList[i].menuList);\n }\n }\n });\n }\n\n public onMenuCollapsableGoBack(): void {\n setTimeout(() => {\n if (!ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n this._levelTwoMenuCollapsableSelected = null;\n } else if (!ObjectUtil.isNull(this._levelOneMenuCollapsableSelected)) {\n this._levelOneMenuCollapsableSelected = null;\n } else {\n this.onMenuCollapsableReset(this.menuItems);\n }\n });\n }\n\n public isMenuActive(menu: MenuDTO): boolean {\n return this._router.url.startsWith(menu.route);\n }\n\n public isMenuCollapsableActive(menu: MenuDTO): boolean {\n if (StringUtil.isEmpty(menu.route)) {\n return false;\n }\n\n const existInRoute: boolean = this._router.url.includes(menu.route);\n\n let menuList: MenuDTO[] = ArrayUtil.clone(this.menuItems);\n if (!ObjectUtil.isNull(this._levelOneMenuCollapsableSelected) && ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n menuList = ArrayUtil.clone(this._levelOneMenuCollapsableSelected.menuList);\n } else if (!ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n menuList = ArrayUtil.clone(this._levelTwoMenuCollapsableSelected.menuList);\n }\n\n const levelZeroActive: MenuDTO = menuList\n .filter(mi => !ArrayUtil.isEmpty(mi.menuList))\n .find(mi => ((mi.route === menu.route) && (mi.index === menu.index) && (mi.type && menu.type)));\n\n if (existInRoute && !ObjectUtil.isNull(levelZeroActive) && !ArrayUtil.isEmpty(levelZeroActive.menuList)) {\n const levelOneActive: MenuDTO = levelZeroActive.menuList.find(mi => this._router.url.includes(mi.route));\n if (!ObjectUtil.isNull(levelOneActive) && !ArrayUtil.isEmpty(levelOneActive.menuList)) {\n const levelTwoActive: MenuDTO = levelOneActive.menuList.find(mi => this._router.url.includes(mi.route));\n return !ObjectUtil.isNull(levelTwoActive);\n } else {\n return !ObjectUtil.isNull(levelOneActive);\n }\n }\n\n return false;\n }\n\n public onMenuItemSelected(menu: MenuDTO = null, closeNav: boolean = true): void {\n if (closeNav) {\n this._levelOneMenuCollapsableSelected = null;\n this._levelTwoMenuCollapsableSelected = null;\n\n this.onMenuCollapsableReset(this.menuItems);\n\n this.isScreenLarge.subscribe(isScreenLarge => {\n if (!isScreenLarge) {\n this._navService.close();\n }\n });\n }\n\n this.onClickMenuItem.emit(menu);\n }\n\n public getMenuName(name: string): string {\n return (name.length <= 35) ? name : (name.slice(0, 35) + '...');\n }\n\n public onMouseEnter(): void {\n this.isOpened.toPromise().then(isOpened => {\n if (!isOpened) {\n this._mouseEnter = true;\n this.toggleSidenav();\n }\n });\n }\n\n public onMouseLeave(): void {\n this.isOpened.toPromise().then(isOpened => {\n if (isOpened && this._mouseEnter) {\n this._mouseEnter = false;\n this.toggleSidenav();\n }\n })\n }\n\n}\n","import { CdkStep, CdkStepper } from '@angular/cdk/stepper';\nimport { ChangeDetectionStrategy, Component, Input, OnInit, forwardRef } from '@angular/core';\n\n@Component({\n selector: `gipi-stepper`,\n exportAs: 'gipiStepper',\n templateUrl: './stepper.component.html',\n styleUrls: ['./stepper.component.scss'],\n providers: [\n {\n provide: CdkStepper,\n useExisting: GIPIStepperComponent,\n }\n ],\n host: {\n 'class': 'gipi-stepper',\n },\n})\nexport class GIPIStepperComponent extends CdkStepper implements OnInit {\n\n @Input() id: string;\n\n @Input() name: string;\n\n ngOnInit(): void { }\n\n onClick(index: number): void {\n this.selectedIndex = index;\n }\n\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, TemplateRef, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ArrayUtil } from '../../../../../core/utils/array.util';\nimport { ObjectUtil } from '../../../../../core/utils/object.util';\nimport { PipeTransformModel } from '../../models/pipe-transform.model';\nimport { TableColumnModel } from '../../models/table-column.model';\n\n@Component({\n selector: `gipi-table-body`,\n exportAs: 'gipiTableBody',\n templateUrl: './table-body.component.html',\n styleUrls: ['./table-body.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPITableBodyComponent => GIPITableBodyComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-table-body',\n },\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({ height: '0px', minHeight: '0', display: 'none' })),\n state('expanded', style({ height: '*' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPITableBodyComponent<T> implements OnInit {\n\n private _rows: T[];\n\n _rowsExpanded: T[] = [];\n\n @Input() loading: boolean = false;\n\n @Input() loadingDetail: boolean = false;\n\n @Input() disabled: boolean = false;\n\n @Input() clickOnRow: boolean = false;\n\n @Input() expandable: boolean = false;\n\n @Input() expandOnlyOneRow: boolean = false;\n\n @Input() rowExpandableFn: (row: T) => boolean;\n\n @Input() highlightRowFn: (row: T) => boolean;\n\n @Input() columns: TableColumnModel[] = [];\n\n @Input() trackBy: string = 'id';\n\n @Input() rowDetailRef: TemplateRef<any>;\n\n @Input() set rows(val: T[]) {\n this._rows = val;\n }\n get rows(): T[] {\n return this._rows;\n }\n\n @Output() rowsExpandedChange: EventEmitter<T[]> = new EventEmitter();\n @Output() rowDetailToggleChange: EventEmitter<{ row: T; isExpanded: boolean; }> = new EventEmitter();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit() { }\n\n public columnTrackingFn(index: number, column: TableColumnModel): any {\n return column.property;\n }\n\n public rowTrackingFn(index: number, row: T): any {\n return row[this.trackBy];\n }\n\n public getShowHighlightRow(row: T): boolean {\n if (ObjectUtil.isNull(row) || ObjectUtil.isNull(this.highlightRowFn)) {\n return false;\n }\n\n return this.highlightRowFn(row);\n }\n\n public getIdentifierRow(index: number): string {\n return `row-${index}`;\n }\n\n public getShowExpandable(row: T): boolean {\n if (!ObjectUtil.isNull(this.rowExpandableFn)) {\n return this.expandable && this.rowExpandableFn(row);\n } else {\n return this.expandable;\n }\n }\n\n public getColumnValue(row: object, column: TableColumnModel): string {\n let value: string = '';\n\n if (!this.rows || !this.columns) {\n value = '';\n } else {\n let val: any = column.value;\n if (typeof column.value === 'function') {\n val = column.value(row);\n }\n const userPipe: PipeTransformModel = column.pipe;\n if (userPipe) {\n value = userPipe.transform(val);\n } else if (value !== undefined) {\n value = val;\n }\n }\n\n return value;\n }\n\n public getRowExpanded(row: T): boolean {\n if (ArrayUtil.isEmpty(this._rowsExpanded)) {\n return false;\n }\n return this._rowsExpanded.includes(row);\n }\n\n public onRowExpandedChange(row: T): void {\n if (!this.getShowExpandable(row)) {\n return;\n }\n\n if (this.expandOnlyOneRow) {\n if (!ArrayUtil.isEmpty(this._rowsExpanded)) {\n if (this.getRowExpanded(row)) {\n this._rowsExpanded.splice(0, this._rowsExpanded.length);\n } else {\n this._rowsExpanded.splice(0, this._rowsExpanded.length, row);\n }\n } else {\n this._rowsExpanded.push(row);\n }\n } else {\n if (this.getRowExpanded(row)) {\n const index: number = this._rowsExpanded.findIndex(r => r === row);\n this._rowsExpanded.splice(index, 1);\n } else {\n this._rowsExpanded.push(row);\n }\n }\n\n this.rowsExpandedChange.emit(this._rowsExpanded);\n this.rowDetailToggleChange.emit({ row: row, isExpanded: this.getRowExpanded(row) });\n\n this._changeDetectorRef.detectChanges();\n }\n\n public onClickCell(row: T, column: TableColumnModel): void {\n if (!ObjectUtil.isNull(column.action)) {\n column.action(row);\n }\n }\n\n}\n","import { ChangeDetectionStrategy, Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-table-footer`,\n exportAs: 'gipiTableFooter',\n templateUrl: './table-footer.component.html',\n styleUrls: ['./table-footer.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPITableFooterComponent => GIPITableFooterComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-table-footer',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPITableFooterComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() { }\n\n}\n","import { SortDirection } from '../types/sort-direction.type';\n\nexport class SortModel {\n\n private _property: string;\n\n private _direction: SortDirection;\n\n constructor(\n property: string,\n direction: SortDirection\n ) {\n this.property = property;\n this.direction = direction;\n }\n\n public get property(): string {\n return this._property;\n }\n public set property(value: string) {\n this._property = value;\n }\n\n public get direction(): SortDirection {\n return this._direction;\n }\n public set direction(value: SortDirection) {\n this._direction = value;\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ObjectUtil } from '../../../../../core/utils/object.util';\nimport { SortModel } from '../../models/sort.model';\nimport { TableColumnModel } from '../../models/table-column.model';\nimport { SortDirection } from '../../types/sort-direction.type';\n\n@Component({\n selector: `gipi-table-header`,\n exportAs: 'gipiTableHeader',\n templateUrl: './table-header.component.html',\n styleUrls: ['./table-header.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPITableHeaderComponent => GIPITableHeaderComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-table-header',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPITableHeaderComponent implements OnInit {\n\n _sortedColumn: { column?: TableColumnModel, sortDirection?: SortDirection } = null;\n\n @Input() columns: TableColumnModel[] = [];\n\n @Input() loading: boolean = false;\n\n @Input() disabled: boolean = false;\n\n @Input() sortActive: string;\n @Input() sortStart: 'asc' | 'desc' = 'asc';\n @Input() sortDisableClear: boolean = true;\n @Input() sortLocked: boolean = false;\n\n @Input() sortAscendingIcon: string = 'keyboard_arrow_up';\n @Input() sortDescendingIcon: string = 'keyboard_arrow_down';\n @Input() sortUnsetIcon: string = 'unfold_more';\n\n @Output() sortChange: EventEmitter<SortModel> = new EventEmitter<SortModel>();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit() {\n if ((this.columns && this.columns.length) && this.sortActive) {\n const columnActive = this.columns.find(c => c.property === this.sortActive);\n if (!ObjectUtil.isNull(columnActive) && columnActive.sortable && ObjectUtil.isNull(this._sortedColumn)) {\n this._sortedColumn = {};\n this._sortedColumn.column = columnActive;\n this._sortedColumn.sortDirection = this.sortStart;\n this.sortChange.emit(new SortModel(columnActive.property, this._sortedColumn.sortDirection));\n } else {\n throw new Error('There is no column with the property indicated in \"sortActive\"');\n }\n }\n }\n\n public columnTrackingFn(index: number, column: TableColumnModel): any {\n return column.property;\n }\n\n public onSortChange(column: TableColumnModel): void {\n if (!column.sortable || this.sortLocked) {\n return;\n }\n\n if (ObjectUtil.isNull(this._sortedColumn)) {\n this._sortedColumn = {};\n }\n\n this._sortedColumn.column = column;\n this._sortedColumn.sortDirection = this._getNextSortDirection(column);\n this.sortChange.emit(new SortModel(column.property, this._sortedColumn.sortDirection));\n\n this._changeDetectorRef.markForCheck();\n }\n\n private _getNextSortDirection(column: TableColumnModel): SortDirection {\n if (!column.sortable) {\n return '';\n }\n\n if (this.sortDisableClear) {\n if (this._sortedColumn.sortDirection === 'asc') {\n return 'desc';\n } else {\n return 'asc';\n }\n } else {\n if (!this._sortedColumn.sortDirection) {\n return 'asc';\n } else if (this._sortedColumn.sortDirection === 'asc') {\n return 'desc';\n } else if (this._sortedColumn.sortDirection === 'desc') {\n return '';\n }\n }\n\n return '';\n }\n\n public isEqualsColumns(column: TableColumnModel): boolean {\n if (!ObjectUtil.isNull(this._sortedColumn) && !ObjectUtil.isNull(this._sortedColumn.column)) {\n const equals: boolean = ObjectUtil.shallowEqual(this._sortedColumn.column, column);\n return equals;\n }\n\n return false;\n }\n\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-table-pagination`,\n exportAs: 'gipiTablePagination',\n templateUrl: './table-pagination.component.html',\n styleUrls: ['./table-pagination.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPITablePaginationComponent => GIPITablePaginationComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-table-pagination',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPITablePaginationComponent implements OnInit {\n\n @Input() id: string;\n\n @Input() maxSize: number = 5;\n\n private _directionLinks: boolean = true;\n @Input() set directionLinks(value: boolean) {\n this._directionLinks = coerceToBoolean(value);\n }\n get directionLinks(): boolean {\n return this._directionLinks;\n }\n\n private _autoHide: boolean = false;\n @Input() set autoHide(value: boolean) {\n this._autoHide = coerceToBoolean(value);\n }\n get autoHide(): boolean {\n return this._autoHide;\n }\n\n private _responsive: boolean = false;\n @Input() set responsive(value: boolean) {\n this._responsive = coerceToBoolean(value);\n }\n get responsive(): boolean {\n return this._responsive;\n }\n\n @Input() previousTooltip: string = 'Voltar';\n\n @Input() nextTooltip: string = 'Avançar';\n\n @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\n @Output() pageBoundsCorrection: EventEmitter<number> = new EventEmitter<number>();\n\n constructor() { }\n\n ngOnInit(): void { }\n\n trackByIndex(index: number) {\n return index;\n }\n\n}\n\nfunction coerceToBoolean(input: string | boolean): boolean {\n return !!input && input !== 'false';\n}\n","import { ChangeDetectionStrategy, Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-table-progress-bar`,\n exportAs: 'gipiTableProgressBar',\n templateUrl: './table-progress-bar.component.html',\n styleUrls: ['./table-progress-bar.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPITableProgressBarComponent => GIPITableProgressBarComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-table-progress-bar',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPITableProgressBarComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() { }\n\n}\n","import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, OnDestroy, OnInit, Output, TemplateRef, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { SortModel } from './models/sort.model';\nimport { TableColumnModel } from './models/table-column.model';\n\n@Component({\n selector: `gipi-table`,\n exportAs: 'gipiTable',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPITableComponent => GIPITableComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-table',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPITableComponent<T> implements OnInit, OnDestroy {\n\n @Input() columns: TableColumnModel[] = [];\n @Input() loading: boolean = false;\n @Input() disabled: boolean = false;\n\n // Header ---------------------------------------------------------------------\n @Input() sortActive: string;\n @Input() sortStart: 'asc' | 'desc' = 'asc';\n @Input() sortDisableClear: boolean = true;\n @Input() sortLocked: boolean = false;\n\n @Input() sortAscendingIcon: string = 'keyboard_arrow_up';\n @Input() sortDescendingIcon: string = 'keyboard_arrow_down';\n @Input() sortUnsetIcon: string = 'unfold_more';\n\n @Output() sortChange: EventEmitter<SortModel> = new EventEmitter<SortModel>();\n // ----------------------------------------------------------------------------\n\n // Body -----------------------------------------------------------------------\n @Input() loadingDetail: boolean = false;\n @Input() clickOnRow: boolean = false;\n @Input() expandable: boolean = false;\n @Input() expandOnlyOneRow: boolean = false;\n @Input() rowExpandableFn: (row: T) => boolean;\n @Input() highlightRowFn: (row: T) => boolean;\n @Input() trackBy: string = 'id';\n @ContentChild('rowDetail', { static: false }) rowDetailRef: TemplateRef<any>;\n @Input() rows: T[];\n\n @Output() rowsExpandedChange: EventEmitter<T[]> = new EventEmitter();\n @Output() rowDetailToggleChange: EventEmitter<{ row: T; isExpanded: boolean; }> = new EventEmitter();\n // ----------------------------------------------------------------------------\n\n // Table ----------------------------------------------------------------------\n @Input() id: string | number;\n @Input() tableShowBorder: boolean = true;\n @Input() hideHeader: boolean = false;\n @Input() hideFooter: boolean = false;\n // ----------------------------------------------------------------------------\n\n constructor() { }\n\n ngOnInit() { }\n\n ngOnDestroy(): void { }\n\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-toolbar`,\n exportAs: 'gipiToolbar',\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIToolbarComponent => GIPIToolbarComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-toolbar',\n }\n})\nexport class GIPIToolbarComponent implements OnInit {\n\n @Input() id: string;\n\n @Input() name: string;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() style: string;\n\n @Input() class: string;\n\n constructor() { }\n\n ngOnInit(): void { }\n\n}\n","import { Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { NavService } from '../../../core/services/nav.service';\n\n@Component({\n selector: '[gipi-top-nav], gipi-top-nav',\n exportAs: 'gipiTopNav',\n templateUrl: './top-nav.component.html',\n styleUrls: ['./top-nav.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPITopNavComponent => GIPITopNavComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-top-nav'\n }\n})\nexport class GIPITopNavComponent implements OnInit {\n\n constructor(private _navService: NavService) { }\n\n ngOnInit(): void { }\n\n toggle(): void {\n this._navService.toggle();\n }\n\n}\n","import { formatNumber, formatPercent } from '@angular/common';\nimport { ObjectUtil } from './object.util';\nimport { StringUtil } from './string.util';\n\n/** @dynamic */\nexport class NumberUtil {\n\n public static isPositive(value: number): boolean {\n return !ObjectUtil.isNull(value) && value > 0;\n }\n\n public static isNegative(value: number): boolean {\n return !ObjectUtil.isNull(value) && value < 0;\n }\n\n public static format(value: number, digitsInfo?: string, type?: 'NUMBER' | 'PERCENT'): string {\n if (!ObjectUtil.isNull(value) && (!type || type === 'NUMBER')) {\n return formatNumber(value, 'pt', digitsInfo);\n } else if (!ObjectUtil.isNull(value) && type === 'PERCENT') {\n return formatPercent(value / 100, 'pt', digitsInfo);\n }\n return StringUtil.EMPTY;\n }\n\n public static onlyNumbers(value: string | number): string {\n return String(value).replace(/[^\\d]/g, '');\n }\n\n public static isNumber(value: any): boolean {\n return value !== null && value !== undefined && !isNaN(value) && typeof value === 'number';\n }\n\n}\n","import { formatDate } from '@angular/common';\n\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\nimport { GIPINgConfig } from '../../shared/api/gipi-ng-config';\nimport { NumberUtil } from './number.util';\nimport { ObjectUtil } from './object.util';\nimport { StringUtil } from './string.util';\n\n/** @dynamic */\nexport class DateUtil {\n\n public static DATE_FORMAT = 'dd/MM/yyyy';\n\n public static DATE_TIME_FORMAT = 'dd/MM/yyyy HH:mm';\n\n constructor() { }\n\n public static format(value: Date, format: string): string {\n if (!ObjectUtil.isNull(value)) {\n return formatDate(value, format, 'pt');\n }\n return StringUtil.EMPTY;\n }\n\n public static isValid(value: Date): boolean {\n if (ObjectUtil.isNull(value)) {\n return false;\n }\n value = new Date(value);\n return !isNaN(value.getTime()) && DateUtil.isGreaterThan(value, new Date('1900-01-01Z00:00:00:000'));\n }\n\n /** Initial === Final, ignora o Time */\n public static isEqual(initial: Date | moment.Moment, final: Date | moment.Moment, granularity: moment.unitOfTime.StartOf = 'date'): boolean {\n if (!ObjectUtil.isNull(initial) && !ObjectUtil.isNull(final)) {\n const initialMoment = moment(initial);\n const finalMoment = moment(final);\n return initialMoment.startOf('day').isSame(finalMoment.startOf('day'), granularity);\n }\n return false;\n }\n\n /** Initial > Final */\n public static isGreaterThan(initial: Date | moment.Moment, final: Date | moment.Moment, granularity: moment.unitOfTime.StartOf = 'date'): boolean {\n if (!ObjectUtil.isNull(initial) && !ObjectUtil.isNull(final)) {\n const initialMoment = moment(initial);\n const finalMoment = moment(final);\n return initialMoment.isAfter(finalMoment, granularity);\n }\n return false;\n }\n\n /** Initial < Final */\n public static isLessThan(initial: Date | moment.Moment, final: Date | moment.Moment, granularity: moment.unitOfTime.StartOf = 'date'): boolean {\n if (!ObjectUtil.isNull(initial) && !ObjectUtil.isNull(final)) {\n const initialMoment = moment(initial);\n const finalMoment = moment(final);\n return initialMoment.isBefore(finalMoment, granularity);\n }\n return false;\n }\n\n /** Initial <= Final */\n public static isLessThanOrEqual(initial: Date | moment.Moment, final: Date | moment.Moment, granularity: moment.unitOfTime.StartOf = 'date'): boolean {\n return this.isLessThan(initial, final, granularity) || this.isEqual(initial, final, granularity);\n }\n\n /** Initial >= Final */\n public static isGreaterThanOrEqual(initial: Date | moment.Moment, final: Date | moment.Moment, granularity: moment.unitOfTime.StartOf = 'date'): boolean {\n return this.isGreaterThan(initial, final, granularity) || this.isEqual(initial, final, granularity);\n }\n\n /** Date >= Inicial ou Date <= Final */\n public static isBetween(date: Date | moment.Moment, initial: Date | moment.Moment, final: Date | moment.Moment, granularity: moment.unitOfTime.StartOf = 'date'): boolean {\n return this.isGreaterThanOrEqual(date, initial, granularity) && this.isLessThanOrEqual(date, final, granularity);\n }\n\n public static diffBetweenDates(initial: Date, final: Date, diff: 'MILLISECONDS' | 'SECONDS' | 'MINUTES' | 'HOURS' | 'DAYS' | 'MONTHS'): number {\n const lDateInitial: Date = new Date(initial);\n const lDateFinal: Date = new Date(final);\n const lDiff: number = moment(lDateInitial, 'DD/MM/YYYY HH:mm:ss').diff(moment(lDateFinal, 'DD/MM/YYYY HH:mm:ss'));\n let lReturn = 0;\n switch (diff) {\n case 'MILLISECONDS': { lReturn = moment.duration(lDiff).asMilliseconds(); break; }\n case 'SECONDS': { lReturn = moment.duration(lDiff).asSeconds(); break; }\n case 'MINUTES': { lReturn = moment.duration(lDiff).asMinutes(); break; }\n case 'HOURS': { lReturn = moment.duration(lDiff).asHours(); break; }\n case 'DAYS': { lReturn = moment.duration(lDiff).asDays(); break; }\n case 'MONTHS': { lReturn = moment.duration(lDiff).asMonths(); break; }\n }\n return ((lReturn < 0) ? (lReturn * (-1)) : (lReturn));\n }\n\n public static getDayOfWeek(date: Date): string {\n switch (date.getDay() + 1) {\n case 1:\n return 'SUNDAY';\n case 2:\n return 'MONDAY';\n case 3:\n return 'TUESDAY';\n case 4:\n return 'WEDNESDAY';\n case 5:\n return 'THURSDAY';\n case 6:\n return 'FRIDAY';\n case 7:\n return 'SATURDAY';\n }\n return null;\n }\n\n public static isValidWithString(value: string, pattern: string): boolean {\n if (StringUtil.isEmpty(value) || value.length < pattern.length) {\n return false;\n }\n const date = this.stringToDate(value, pattern);\n return !isNaN(date.getTime());\n }\n\n public static stringToDate(date: string, format: string, zoned: boolean = false): Date {\n const dateItems = date.replace(/[^a-zA-Z0-9]/g, '-').split('-');\n const formatItems = format.toLowerCase().replace(/[^a-zA-Z0-9]/g, '-').split('-');\n\n const yearIndex = formatItems.indexOf('yyyy');\n const monthIndex = formatItems.indexOf('mm');\n const dayIndex = formatItems.indexOf('dd');\n const hourIndex = formatItems.indexOf('hh');\n const minutesIndex = formatItems.indexOf('ii');\n const secondsIndex = formatItems.indexOf('ss');\n\n if (zoned) {\n return new Date(Date.UTC(\n (yearIndex > -1 ? +dateItems[yearIndex] : 0),\n (monthIndex > -1 ? +dateItems[monthIndex] - 1 : 0),\n (dayIndex > -1 ? +dateItems[dayIndex] : 1),\n (hourIndex > -1 ? +dateItems[hourIndex] : 0),\n (minutesIndex > -1 ? +dateItems[minutesIndex] : 0),\n (secondsIndex > -1 ? +dateItems[secondsIndex] : 0)));\n }\n return new Date(\n (yearIndex > -1 ? dateItems[yearIndex] : '1970') + '-' +\n (monthIndex > -1 ? dateItems[monthIndex] : '01') + '-' +\n (dayIndex > -1 ? dateItems[dayIndex] : '01') + 'T' +\n (hourIndex > -1 ? dateItems[hourIndex] : '00') + ':' +\n (minutesIndex > -1 ? dateItems[minutesIndex] : '00') + ':' +\n (secondsIndex > -1 ? dateItems[secondsIndex] : '00') + '.000Z');\n }\n\n public static dateAndStringHourToDate(date: Date, hour: string): Date {\n const list = String(date).split(' ');\n const stringDate = `${list[0]} ${list[1]} ${list[2]} ${list[3]} ${hour}:00`;\n return new Date(stringDate);\n }\n\n public static stringFormattedToDate(date: string): Date {\n const list = date.split('/').map(el => Number(el));\n return new Date(list[2], list[1] - 1, list[0]);\n }\n\n public static getLastDayMonth(month?: number): number {\n const date = new Date();\n let lastDay = new Date();\n if (!month) {\n lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n } else {\n lastDay = new Date(date.getFullYear(), month + 1, 0);\n }\n return lastDay.getDate();\n }\n\n /* Somente mês e ano */\n public static isValidMonth(date: Date): boolean {\n date = new Date(date);\n const year: number = date.getFullYear();\n const month: number = date.getMonth();\n if (NumberUtil.isNegative(year) || NumberUtil.isNegative(month) || (month < 0) || (month > 12) || (year <= 1900)) {\n return false;\n }\n return true;\n }\n\n public static isEqualMonth(initial: Date, final: Date): boolean {\n initial = new Date(initial);\n final = new Date(final);\n if (ObjectUtil.isNull(initial) || ObjectUtil.isNull(final) || !this.isValidMonth(initial) || !this.isValidMonth(final)) {\n return false;\n } else if (initial.getMonth() !== final.getMonth()) {\n return false;\n }\n return true;\n }\n\n public static isGreaterThanMonth(initial: Date, final: Date): boolean {\n initial = new Date(initial);\n final = new Date(final);\n if (ObjectUtil.isNull(initial) || ObjectUtil.isNull(final) || !this.isValidMonth(initial) || !this.isValidMonth(final)) {\n return false;\n } else if (initial.getFullYear() > final.getFullYear()) {\n return true;\n } else if ((initial.getFullYear() >= final.getFullYear()) && (initial.getMonth() > final.getMonth())) {\n return true;\n }\n return false;\n }\n\n public static isLessThanMonth(initial: Date, final: Date): boolean {\n initial = new Date(initial);\n final = new Date(final);\n if (ObjectUtil.isNull(initial) || ObjectUtil.isNull(final) || !this.isValidMonth(initial) || !this.isValidMonth(final)) {\n return false;\n } else if (initial.getFullYear() < final.getFullYear()) {\n return true;\n } else if (initial.getFullYear() <= final.getFullYear() && initial.getMonth() < final.getMonth()) {\n return true;\n }\n return false;\n }\n\n public static isLessThanOrEqualMonth(initial: Date, final: Date): boolean {\n initial = new Date(initial);\n final = new Date(final);\n return this.isLessThanMonth(initial, final) || this.isEqualMonth(initial, final);\n }\n\n public static isGreaterThanOrEqualMonth(initial: Date, final: Date): boolean {\n initial = new Date(initial);\n final = new Date(final);\n return this.isGreaterThanMonth(initial, final) || this.isEqualMonth(initial, final);\n }\n\n public static isBetweenMonth(date: Date, initial: Date, final: Date): boolean {\n date = new Date(date);\n initial = new Date(initial);\n final = new Date(final);\n return this.isGreaterThanOrEqualMonth(date, initial) && this.isLessThanOrEqualMonth(date, final);\n }\n\n public static getNameWeekTranslation(week: number, type: 'MIN' | 'SHORT' | 'LONG' = 'LONG'): string {\n const config: GIPINgConfig = new GIPINgConfig();\n switch (type) {\n case 'MIN': return config.translation.dayNamesMin[week];\n case 'SHORT': return config.translation.dayNamesShort[week];\n case 'LONG': return config.translation.dayNames[week];\n }\n }\n\n public static getNameMonthTranslation(month: number, type: 'SHORT' | 'LONG' = 'LONG'): string {\n const config: GIPINgConfig = new GIPINgConfig();\n switch (type) {\n case 'SHORT': return config.translation.monthNamesShort[month];\n case 'LONG': return config.translation.monthNames[month];\n }\n }\n\n public static isDate(input: any): boolean {\n return Object.prototype.toString.call(input) === '[object Date]';\n }\n\n public static isEmpty(value: any): boolean {\n return (\n (value === null) ||\n (value === undefined) ||\n (value === '') ||\n (Array.isArray(value) && (value.length === 0)) ||\n (!this.isDate(value) && (typeof value === 'object') && (Object.keys(value).length === 0))\n );\n }\n\n public static isNotEmpty(value: any) {\n return !this.isEmpty(value);\n }\n\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DateUtil } from '../../../core/utils/date.util';\n\n@Component({\n selector: `gipi-user-profile`,\n exportAs: 'gipiUserProfile',\n templateUrl: './user-profile.component.html',\n styleUrls: ['./user-profile.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIUserProfileComponent => GIPIUserProfileComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-user-profile',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIUserProfileComponent implements OnInit {\n\n _overlayVisible: boolean = false;\n\n @Input() id: string;\n\n @Input() name: string;\n\n @Input() ariaLabel: string;\n\n @Input() imgSrc: string;\n\n @Input() text: string;\n\n @Input() username: string;\n\n @Input() email: string;\n\n @Input() lastAccess: Date;\n\n @Input() iconEdit: string;\n @Input() svgIconEdit: string;\n\n @Input() iconExit: string;\n @Input() svgIconExit: string;\n\n @Output('onClick') click: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n @Output('onShowOverlay') showOverlay: EventEmitter<void> = new EventEmitter<void>();\n @Output('onClickEdit') clickEdit: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n @Output('onClickExit') clickExit: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n get lastAccessText(): string {\n const date: string = DateUtil.format(this.lastAccess, DateUtil.DATE_FORMAT);\n const hours: string = DateUtil.format(this.lastAccess, 'HH:mm');\n return `Último acesso ${date} às ${hours}`;\n }\n\n constructor() { }\n\n ngOnInit(): void { }\n\n toggleOverlay(): void {\n this._overlayVisible = !this._overlayVisible;\n }\n\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { inject, InjectionToken, LOCALE_ID } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nexport const MAT_DATE_LOCALE = new InjectionToken<string>('MAT_DATE_LOCALE', {\n providedIn: 'root',\n factory: MAT_DATE_LOCALE_FACTORY,\n});\n\n/** @docs-private */\nexport function MAT_DATE_LOCALE_FACTORY(): string {\n return inject(LOCALE_ID);\n}\n\n/**\n * No longer needed since MAT_DATE_LOCALE has been changed to a scoped injectable.\n * If you are importing and providing this in your code you can simply remove it.\n * @deprecated\n * @breaking-change 8.0.0\n */\nexport const MAT_DATE_LOCALE_PROVIDER = { provide: MAT_DATE_LOCALE, useExisting: LOCALE_ID };\n\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nexport abstract class DateAdapter<D> {\n /** The locale to use for all dates. */\n protected locale: any;\n protected _localeChanges = new Subject<void>();\n\n /** A stream that emits when the locale changes. */\n readonly localeChanges: Observable<void> = this._localeChanges;\n\n /**\n * Gets the year component of the given date.\n * @param date The date to extract the year from.\n * @returns The year component.\n */\n abstract getYear(date: D): number;\n\n /**\n * Gets the month component of the given date.\n * @param date The date to extract the month from.\n * @returns The month component (0-indexed, 0 = January).\n */\n abstract getMonth(date: D): number;\n\n /**\n * Gets the date of the month component of the given date.\n * @param date The date to extract the date of the month from.\n * @returns The month component (1-indexed, 1 = first of month).\n */\n abstract getDate(date: D): number;\n\n /**\n * Gets the day of the week component of the given date.\n * @param date The date to extract the day of the week from.\n * @returns The month component (0-indexed, 0 = Sunday).\n */\n abstract getDayOfWeek(date: D): number;\n\n /**\n * Gets a list of names for the months.\n * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n * @returns An ordered list of all month names, starting with January.\n */\n abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets a list of names for the dates of the month.\n * @returns An ordered list of all date of the month names, starting with '1'.\n */\n abstract getDateNames(): string[];\n\n /**\n * Gets a list of names for the days of the week.\n * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n * @returns An ordered list of all weekday names, starting with Sunday.\n */\n abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets the name for the year of the given date.\n * @param date The date to get the year name for.\n * @returns The name of the given year (e.g. '2017').\n */\n abstract getYearName(date: D): string;\n\n /**\n * Gets the first day of the week.\n * @returns The first day of the week (0-indexed, 0 = Sunday).\n */\n abstract getFirstDayOfWeek(): number;\n\n /**\n * Gets the number of days in the month of the given date.\n * @param date The date whose month should be checked.\n * @returns The number of days in the month of the given date.\n */\n abstract getNumDaysInMonth(date: D): number;\n\n /**\n * Clones the given date.\n * @param date The date to clone\n * @returns A new date equal to the given date.\n */\n abstract clone(date: D): D;\n\n /**\n * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n * month and date.\n * @param year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n * @param month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n * @param date The date of month of the date. Must be an integer 1 - length of the given month.\n * @returns The new date, or null if invalid.\n */\n abstract createDate(year: number, month: number, date: number): D;\n\n /**\n * Gets today's date.\n * @returns Today's date.\n */\n abstract today(): D;\n\n /**\n * Parses a date from a user-provided value.\n * @param value The value to parse.\n * @param parseFormat The expected format of the value being parsed\n * (type is implementation-dependent).\n * @returns The parsed date.\n */\n abstract parse(value: any, parseFormat: any): D | null;\n\n /**\n * Formats a date as a string according to the given format.\n * @param date The value to format.\n * @param displayFormat The format to use to display the date as a string.\n * @returns The formatted date string.\n */\n abstract format(date: D, displayFormat: any): string;\n\n /**\n * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n * calendar for each year and then finding the closest date in the new month. For example when\n * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n * @param date The date to add years to.\n * @param years The number of years to add (may be negative).\n * @returns A new date equal to the given one with the specified number of years added.\n */\n abstract addCalendarYears(date: D, years: number): D;\n\n /**\n * Adds the given number of months to the date. Months are counted as if flipping a page on the\n * calendar for each month and then finding the closest date in the new month. For example when\n * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n * @param date The date to add months to.\n * @param months The number of months to add (may be negative).\n * @returns A new date equal to the given one with the specified number of months added.\n */\n abstract addCalendarMonths(date: D, months: number): D;\n\n /**\n * Adds the given number of days to the date. Days are counted as if moving one cell on the\n * calendar for each day.\n * @param date The date to add days to.\n * @param days The number of days to add (may be negative).\n * @returns A new date equal to the given one with the specified number of days added.\n */\n abstract addCalendarDays(date: D, days: number): D;\n\n /**\n * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n * This method is used to generate date strings that are compatible with native HTML attributes\n * such as the `min` or `max` attribute of an `<input>`.\n * @param date The date to get the ISO date string for.\n * @returns The ISO date string date string.\n */\n abstract toIso8601(date: D): string;\n\n /**\n * Checks whether the given object is considered a date instance by this DateAdapter.\n * @param obj The object to check\n * @returns Whether the object is a date instance.\n */\n abstract isDateInstance(obj: any): boolean;\n\n /**\n * Checks whether the given date is valid.\n * @param date The date to check.\n * @returns Whether the date is valid.\n */\n abstract isValid(date: D): boolean;\n\n /**\n * Gets date instance that is not valid.\n * @returns An invalid date.\n */\n abstract invalid(): D;\n\n /**\n * Given a potential date object, returns that same date object if it is\n * a valid date, or `null` if it's not a valid date.\n * @param obj The object to check.\n * @returns A date or `null`.\n */\n getValidDateOrNull(obj: unknown): D | null {\n return this.isDateInstance(obj) && this.isValid(obj as D) ? obj as D : null;\n }\n\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n * @param value The value to be deserialized into a date object.\n * @returns The deserialized date object, either a valid date, null if the value can be\n * deserialized into a null date (e.g. the empty string), or an invalid date.\n */\n deserialize(value: any): D | null {\n if (value == null || this.isDateInstance(value) && this.isValid(value)) {\n return value;\n }\n return this.invalid();\n }\n\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale: any) {\n this.locale = locale;\n this._localeChanges.next();\n }\n\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first: D, second: D): number {\n return this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second);\n }\n\n /**\n * Checks if two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\n sameDate(first: D | null, second: D | null): boolean {\n if (first && second) {\n let firstValid = this.isValid(first);\n let secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareDate(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n }\n\n /**\n * Clamp the given date between min and max dates.\n * @param date The date to clamp.\n * @param min The minimum value to allow. If null or omitted no min is enforced.\n * @param max The maximum value to allow. If null or omitted no max is enforced.\n * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n * otherwise `date`.\n */\n clampDate(date: D, min?: D | null, max?: D | null): D {\n if (min && this.compareDate(date, min) < 0) {\n return min;\n }\n if (max && this.compareDate(date, max) > 0) {\n return max;\n }\n return date;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directive, FactoryProvider, Injectable, OnDestroy, Optional, SkipSelf } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { DateAdapter } from './shared/adapter/date-adapter';\n\n/** A class representing a range of dates. */\nexport class DateRange<D> {\n /**\n * Ensures that objects with a `start` and `end` property can't be assigned to a variable that\n * expects a `DateRange`\n */\n // tslint:disable-next-line:no-unused-variable\n private _disableStructuralEquivalency: never;\n\n constructor(\n /** The start date of the range. */\n readonly start: D | null,\n /** The end date of the range. */\n readonly end: D | null,\n ) { }\n}\n\n/**\n * Conditionally picks the date type, if a DateRange is passed in.\n * @docs-private\n */\nexport type ExtractDateTypeFromSelection<T> = T extends DateRange<infer D> ? D : NonNullable<T>;\n\n/** Event emitted by the date selection model when its selection changes. */\nexport interface DateSelectionModelChange<S> {\n /** New value for the selection. */\n selection: S;\n\n /** Object that triggered the change. */\n source: unknown;\n}\n\n/** A selection model containing a date selection. */\nexport abstract class MatDateSelectionModel<S, D = any> implements OnDestroy {\n\n private _selectionChanged = new Subject<DateSelectionModelChange<S>>();\n\n /** Emits when the selection has changed. */\n selectionChanged: Observable<DateSelectionModelChange<S>> = this._selectionChanged;\n\n protected constructor(\n /** The current selection. */\n readonly selection: S,\n protected _adapter: DateAdapter<D>\n ) {\n this.selection = selection;\n }\n\n /**\n * Updates the current selection in the model.\n * @param value New selection that should be assigned.\n * @param source Object that triggered the selection change.\n */\n updateSelection(value: S, source: unknown) {\n (this as { selection: S }).selection = value;\n this._selectionChanged.next({ selection: value, source });\n }\n\n ngOnDestroy() {\n this._selectionChanged.complete();\n }\n\n protected _isValidDateInstance(date: D): boolean {\n return this._adapter.isDateInstance(date) && this._adapter.isValid(date);\n }\n\n /** Adds a date to the current selection. */\n abstract add(date: D | null): void;\n\n /** Checks whether the current selection is valid. */\n abstract isValid(): boolean;\n\n /** Checks whether the current selection is complete. */\n abstract isComplete(): boolean;\n}\n\n/** A selection model that contains a single date. */\n@Injectable()\nexport class MatSingleDateSelectionModel<D> extends MatDateSelectionModel<D | null, D> {\n constructor(adapter: DateAdapter<D>) {\n super(null, adapter);\n }\n\n /**\n * Adds a date to the current selection. In the case of a single date selection, the added date\n * simply overwrites the previous selection\n */\n add(date: D | null) {\n super.updateSelection(date, this);\n }\n\n /** Checks whether the current selection is valid. */\n isValid(): boolean {\n return this.selection != null && this._isValidDateInstance(this.selection);\n }\n\n /**\n * Checks whether the current selection is complete. In the case of a single date selection, this\n * is true if the current selection is not null.\n */\n isComplete() {\n return this.selection != null;\n }\n}\n\n/** A selection model that contains a date range. */\n@Injectable()\nexport class MatRangeDateSelectionModel<D> extends MatDateSelectionModel<DateRange<D>, D> {\n\n constructor(adapter: DateAdapter<D>) {\n super(new DateRange<D>(null, null), adapter);\n }\n\n /**\n * Adds a date to the current selection. In the case of a date range selection, the added date\n * fills in the next `null` value in the range. If both the start and the end already have a date,\n * the selection is reset so that the given date is the new `start` and the `end` is null.\n */\n add(date: D | null): void {\n let { start, end } = this.selection;\n\n if (start == null) {\n start = date;\n } else if (end == null) {\n end = date;\n } else {\n start = date;\n end = null;\n }\n\n super.updateSelection(new DateRange<D>(start, end), this);\n }\n\n /** Checks whether the current selection is valid. */\n isValid(): boolean {\n const { start, end } = this.selection;\n\n // Empty ranges are valid.\n if (start == null && end == null) {\n return true;\n }\n\n // Complete ranges are only valid if both dates are valid and the start is before the end.\n if (start != null && end != null) {\n return this._isValidDateInstance(start) && this._isValidDateInstance(end) &&\n this._adapter.compareDate(start, end) <= 0;\n }\n\n // Partial ranges are valid if the start/end is valid.\n return (start == null || this._isValidDateInstance(start)) &&\n (end == null || this._isValidDateInstance(end));\n }\n\n /**\n * Checks whether the current selection is complete. In the case of a date range selection, this\n * is true if the current selection has a non-null `start` and `end`.\n */\n isComplete(): boolean {\n return this.selection.start != null && this.selection.end != null;\n }\n}\n\n/** @docs-private */\nexport function MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY(parent: MatSingleDateSelectionModel<unknown>, adapter: DateAdapter<unknown>) {\n return parent || new MatSingleDateSelectionModel(adapter);\n}\n\n/** Used to provide a single selection model to a component. */\nexport const MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER: FactoryProvider = {\n provide: MatDateSelectionModel,\n deps: [[new Optional(), new SkipSelf(), MatDateSelectionModel], DateAdapter],\n useFactory: MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY,\n};\n\n\n/** @docs-private */\nexport function MAT_RANGE_DATE_SELECTION_MODEL_FACTORY(parent: MatSingleDateSelectionModel<unknown>, adapter: DateAdapter<unknown>) {\n return parent || new MatRangeDateSelectionModel(adapter);\n}\n\n/** Used to provide a range selection model to a component. */\nexport const MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER: FactoryProvider = {\n provide: MatDateSelectionModel,\n deps: [[new Optional(), new SkipSelf(), MatDateSelectionModel], DateAdapter],\n useFactory: MAT_RANGE_DATE_SELECTION_MODEL_FACTORY,\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** @docs-private */\nexport function createMissingDateImplError(provider: string) {\n return Error(\n `MatDatepicker: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: MatNativeDateModule, MatMomentDateModule, or provide a ` +\n `custom implementation.`\n );\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n\n/** Datepicker data that requires internationalization. */\n@Injectable({ providedIn: 'root' })\nexport class MatDatepickerIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the calendar popup (used by screen readers). */\n calendarLabel: string = 'Calendar';\n\n /** A label for the button used to open the calendar popup (used by screen readers). */\n openCalendarLabel: string = 'Open calendar';\n\n /** A label for the previous month button (used by screen readers). */\n prevMonthLabel: string = 'Previous month';\n\n /** A label for the next month button (used by screen readers). */\n nextMonthLabel: string = 'Next month';\n\n /** A label for the previous year button (used by screen readers). */\n prevYearLabel: string = 'Previous year';\n\n /** A label for the next year button (used by screen readers). */\n nextYearLabel: string = 'Next year';\n\n /** A label for the previous multi-year button (used by screen readers). */\n prevMultiYearLabel: string = 'Previous 20 years';\n\n /** A label for the next multi-year button (used by screen readers). */\n nextMultiYearLabel: string = 'Next 20 years';\n\n /** A label for the 'switch to month view' button (used by screen readers). */\n switchToMonthViewLabel: string = 'Choose date';\n\n /** A label for the 'switch to year view' button (used by screen readers). */\n switchToMultiYearViewLabel: string = 'Choose month and year';\n\n /** Formats a range of years. */\n formatYearRange(start: string, end: string): string {\n return `${start} \\u2013 ${end}`;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, NgZone, OnChanges, OnDestroy, Output, SimpleChanges, ViewEncapsulation, } from '@angular/core';\nimport { take } from 'rxjs/operators';\n\n/** Extra CSS classes that can be associated with a calendar cell. */\nexport type MatCalendarCellCssClasses = string | string[] | Set<string> | { [key: string]: any };\n\n/** Function that can generate the extra classes that should be added to a calendar cell. */\nexport type MatCalendarCellClassFunction<D> =\n (date: D, view: 'month' | 'year' | 'multi-year') => MatCalendarCellCssClasses;\n\n/**\n * An internal class that represents the data corresponding to a single calendar cell.\n * @docs-private\n */\nexport class MatCalendarCell<D = any> {\n constructor(\n public value: number,\n public displayValue: string,\n public ariaLabel: string,\n public enabled: boolean,\n public cssClasses: MatCalendarCellCssClasses = {},\n public compareValue = value,\n public rawValue?: D\n ) { }\n}\n\n/** Event emitted when a date inside the calendar is triggered as a result of a user action. */\nexport interface MatCalendarUserEvent<D> {\n value: D;\n event: Event;\n}\n\n/**\n * An internal component used to display calendar data in a table.\n * @docs-private\n */\n@Component({\n selector: '[gipi-mat-calendar-body]',\n templateUrl: 'calendar-body.html',\n styleUrls: ['calendar-body.scss'],\n host: {\n 'class': 'mat-calendar-body',\n 'role': 'grid',\n 'aria-readonly': 'true'\n },\n exportAs: 'gipiMatCalendarBody',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatCalendarBody implements OnChanges, OnDestroy {\n /**\n * Used to skip the next focus event when rendering the preview range.\n * We need a flag like this, because some browsers fire focus events asynchronously.\n */\n private _skipNextFocus: boolean;\n\n /** The label for the table. (e.g. \"Jan 2017\"). */\n @Input() label: string;\n\n /** The cells to display in the table. */\n @Input() rows: MatCalendarCell[][];\n\n /** The value in the table that corresponds to today. */\n @Input() todayValue: number;\n\n /** Start value of the selected date range. */\n @Input() startValue: number;\n\n /** End value of the selected date range. */\n @Input() endValue: number;\n\n /** The minimum number of free cells needed to fit the label in the first row. */\n @Input() labelMinRequiredCells: number;\n\n /** The number of columns in the table. */\n @Input() numCols: number = 7;\n\n /** The cell number of the active cell in the table. */\n @Input() activeCell: number = 0;\n\n /** Whether a range is being selected. */\n @Input() isRange: boolean = false;\n\n /**\n * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\n * maintained even as the table resizes.\n */\n @Input() cellAspectRatio: number = 1;\n\n /** Start of the comparison range. */\n @Input() comparisonStart: number | null;\n\n /** End of the comparison range. */\n @Input() comparisonEnd: number | null;\n\n /** Start of the preview range. */\n @Input() previewStart: number | null = null;\n\n /** End of the preview range. */\n @Input() previewEnd: number | null = null;\n\n /** Emits when a new value is selected. */\n @Output() readonly selectedValueChange: EventEmitter<MatCalendarUserEvent<number>> =\n new EventEmitter<MatCalendarUserEvent<number>>();\n\n /** Emits when the preview has changed as a result of a user action. */\n @Output() previewChange = new EventEmitter<MatCalendarUserEvent<MatCalendarCell | null>>();\n\n /** The number of blank cells to put at the beginning for the first row. */\n _firstRowOffset: number;\n\n /** Padding for the individual date cells. */\n _cellPadding: string;\n\n /** Width of an individual cell. */\n _cellWidth: string;\n\n constructor(private _elementRef: ElementRef<HTMLElement>, private _ngZone: NgZone) {\n _ngZone.runOutsideAngular(() => {\n const element = _elementRef.nativeElement;\n element.addEventListener('mouseenter', this._enterHandler, true);\n element.addEventListener('focus', this._enterHandler, true);\n element.addEventListener('mouseleave', this._leaveHandler, true);\n element.addEventListener('blur', this._leaveHandler, true);\n });\n }\n\n /** Called when a cell is clicked. */\n _cellClicked(cell: MatCalendarCell, event: MouseEvent): void {\n if (cell.enabled) {\n this.selectedValueChange.emit({ value: cell.value, event });\n }\n }\n\n /** Returns whether a cell should be marked as selected. */\n _isSelected(value: number) {\n return this.startValue === value || this.endValue === value;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const columnChanges = changes['numCols'];\n const { rows, numCols } = this;\n\n if (changes['rows'] || columnChanges) {\n this._firstRowOffset = rows && rows.length && rows[0].length ? numCols - rows[0].length : 0;\n }\n\n if (changes['cellAspectRatio'] || columnChanges || !this._cellPadding) {\n this._cellPadding = `${50 * this.cellAspectRatio / numCols}%`;\n }\n\n if (columnChanges || !this._cellWidth) {\n this._cellWidth = `${100 / numCols}%`;\n }\n }\n\n ngOnDestroy() {\n const element = this._elementRef.nativeElement;\n element.removeEventListener('mouseenter', this._enterHandler, true);\n element.removeEventListener('focus', this._enterHandler, true);\n element.removeEventListener('mouseleave', this._leaveHandler, true);\n element.removeEventListener('blur', this._leaveHandler, true);\n }\n\n /** Returns whether a cell is active. */\n _isActiveCell(rowIndex: number, colIndex: number): boolean {\n let cellNumber = rowIndex * this.numCols + colIndex;\n\n // Account for the fact that the first row may not have as many cells.\n if (rowIndex) {\n cellNumber -= this._firstRowOffset;\n }\n\n return cellNumber == this.activeCell;\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell(movePreview = true) {\n this._ngZone.runOutsideAngular(() => {\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n const activeCell: HTMLElement | null =\n this._elementRef.nativeElement.querySelector('.mat-calendar-body-active');\n\n if (activeCell) {\n if (!movePreview) {\n this._skipNextFocus = true;\n }\n\n activeCell.focus();\n }\n });\n });\n }\n\n /** Gets whether a value is the start of the main range. */\n _isRangeStart(value: number) {\n return isStart(value, this.startValue, this.endValue);\n }\n\n /** Gets whether a value is the end of the main range. */\n _isRangeEnd(value: number) {\n return isEnd(value, this.startValue, this.endValue);\n }\n\n /** Gets whether a value is within the currently-selected range. */\n _isInRange(value: number): boolean {\n return isInRange(value, this.startValue, this.endValue, this.isRange);\n }\n\n /** Gets whether a value is the start of the comparison range. */\n _isComparisonStart(value: number) {\n return isStart(value, this.comparisonStart, this.comparisonEnd);\n }\n\n /** Whether the cell is a start bridge cell between the main and comparison ranges. */\n _isComparisonBridgeStart(value: number, rowIndex: number, colIndex: number) {\n if (!this._isComparisonStart(value) || this._isRangeStart(value) || !this._isInRange(value)) {\n return false;\n }\n\n let previousCell: MatCalendarCell | undefined = this.rows[rowIndex][colIndex - 1];\n\n if (!previousCell) {\n const previousRow = this.rows[rowIndex - 1];\n previousCell = previousRow && previousRow[previousRow.length - 1];\n }\n\n return previousCell && !this._isRangeEnd(previousCell.compareValue);\n }\n\n /** Whether the cell is an end bridge cell between the main and comparison ranges. */\n _isComparisonBridgeEnd(value: number, rowIndex: number, colIndex: number) {\n if (!this._isComparisonEnd(value) || this._isRangeEnd(value) || !this._isInRange(value)) {\n return false;\n }\n\n let nextCell: MatCalendarCell | undefined = this.rows[rowIndex][colIndex + 1];\n\n if (!nextCell) {\n const nextRow = this.rows[rowIndex + 1];\n nextCell = nextRow && nextRow[0];\n }\n\n return nextCell && !this._isRangeStart(nextCell.compareValue);\n }\n\n /** Gets whether a value is the end of the comparison range. */\n _isComparisonEnd(value: number) {\n return isEnd(value, this.comparisonStart, this.comparisonEnd);\n }\n\n /** Gets whether a value is within the current comparison range. */\n _isInComparisonRange(value: number) {\n return isInRange(value, this.comparisonStart, this.comparisonEnd, this.isRange);\n }\n\n /**\n * Gets whether a value is the same as the start and end of the comparison range.\n * For context, the functions that we use to determine whether something is the start/end of\n * a range don't allow for the start and end to be on the same day, because we'd have to use\n * much more specific CSS selectors to style them correctly in all scenarios. This is fine for\n * the regular range, because when it happens, the selected styles take over and still show where\n * the range would've been, however we don't have these selected styles for a comparison range.\n * This function is used to apply a class that serves the same purpose as the one for selected\n * dates, but it only applies in the context of a comparison range.\n */\n _isComparisonIdentical(value: number) {\n // Note that we don't need to null check the start/end\n // here, because the `value` will always be defined.\n return this.comparisonStart === this.comparisonEnd && value === this.comparisonStart;\n }\n\n /** Gets whether a value is the start of the preview range. */\n _isPreviewStart(value: number) {\n return isStart(value, this.previewStart, this.previewEnd);\n }\n\n /** Gets whether a value is the end of the preview range. */\n _isPreviewEnd(value: number) {\n return isEnd(value, this.previewStart, this.previewEnd);\n }\n\n /** Gets whether a value is inside the preview range. */\n _isInPreview(value: number) {\n return isInRange(value, this.previewStart, this.previewEnd, this.isRange);\n }\n\n /**\n * Event handler for when the user enters an element\n * inside the calendar body (e.g. by hovering in or focus).\n */\n private _enterHandler = (event: Event) => {\n if (this._skipNextFocus && event.type === 'focus') {\n this._skipNextFocus = false;\n return;\n }\n\n // We only need to hit the zone when we're selecting a range.\n if (event.target && this.isRange) {\n const cell = this._getCellFromElement(event.target as HTMLElement);\n\n if (cell) {\n this._ngZone.run(() => this.previewChange.emit({ value: cell.enabled ? cell : null, event }));\n }\n }\n }\n\n /**\n * Event handler for when the user's pointer leaves an element\n * inside the calendar body (e.g. by hovering out or blurring).\n */\n private _leaveHandler = (event: Event) => {\n // We only need to hit the zone when we're selecting a range.\n if (this.previewEnd !== null && this.isRange) {\n // Only reset the preview end value when leaving cells. This looks better, because\n // we have a gap between the cells and the rows and we don't want to remove the\n // range just for it to show up again when the user moves a few pixels to the side.\n if (event.target && isTableCell(event.target as HTMLElement)) {\n this._ngZone.run(() => this.previewChange.emit({ value: null, event }));\n }\n }\n }\n\n /** Finds the MatCalendarCell that corresponds to a DOM node. */\n private _getCellFromElement(element: HTMLElement): MatCalendarCell | null {\n let cell: HTMLElement | undefined;\n\n if (isTableCell(element)) {\n cell = element;\n } else if (isTableCell(element.parentNode!)) {\n cell = element.parentNode as HTMLElement;\n }\n\n if (cell) {\n const row = cell.getAttribute('data-mat-row');\n const col = cell.getAttribute('data-mat-col');\n\n if (row && col) {\n return this.rows[parseInt(row)][parseInt(col)];\n }\n }\n\n return null;\n }\n\n}\n\n/** Checks whether a node is a table cell element. */\nfunction isTableCell(node: Node): node is HTMLTableCellElement {\n return node.nodeName === 'TD';\n}\n\n/** Checks whether a value is the start of a range. */\nfunction isStart(value: number, start: number | null, end: number | null): boolean {\n return end !== null && start !== end && value < end && value === start;\n}\n\n/** Checks whether a value is the end of a range. */\nfunction isEnd(value: number, start: number | null, end: number | null): boolean {\n return start !== null && start !== end && value >= start && value === end;\n}\n\n/** Checks whether a value is inside of a range. */\nfunction isInRange(value: number, start: number | null, end: number | null, rangeEnabled: boolean): boolean {\n return rangeEnabled && start !== null && end !== null && start !== end && value >= start && value <= end;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { FactoryProvider, Injectable, InjectionToken, Optional, SkipSelf } from '@angular/core';\nimport { DateRange } from './date-selection-model';\nimport { DateAdapter } from './shared/adapter/date-adapter';\n\n/** Injection token used to customize the date range selection behavior. */\nexport const MAT_DATE_RANGE_SELECTION_STRATEGY = new InjectionToken<MatDateRangeSelectionStrategy<any>>('MAT_DATE_RANGE_SELECTION_STRATEGY');\n\n/** Object that can be provided in order to customize the date range selection behavior. */\nexport interface MatDateRangeSelectionStrategy<D> {\n /**\n * Called when the user has finished selecting a value.\n * @param date Date that was selected. Will be null if the user cleared the selection.\n * @param currentRange Range that is currently show in the calendar.\n * @param event DOM event that triggered the selection. Currently only corresponds to a `click`\n * event, but it may get expanded in the future.\n */\n selectionFinished(date: D | null, currentRange: DateRange<D>, event: Event): DateRange<D>;\n\n /**\n * Called when the user has activated a new date (e.g. by hovering over\n * it or moving focus) and the calendar tries to display a date range.\n *\n * @param activeDate Date that the user has activated. Will be null if the user moved\n * focus to an element that's no a calendar cell.\n * @param currentRange Range that is currently shown in the calendar.\n * @param event DOM event that caused the preview to be changed. Will be either a\n * `mouseenter`/`mouseleave` or `focus`/`blur` depending on how the user is navigating.\n */\n createPreview(activeDate: D | null, currentRange: DateRange<D>, event: Event): DateRange<D>;\n}\n\n/** Provides the default date range selection behavior. */\n@Injectable()\nexport class DefaultMatCalendarRangeStrategy<D> implements MatDateRangeSelectionStrategy<D> {\n\n constructor(private _dateAdapter: DateAdapter<D>) { }\n\n selectionFinished(date: D, currentRange: DateRange<D>) {\n let { start, end } = currentRange;\n\n if (start == null) {\n start = date;\n } else if (end == null && date && this._dateAdapter.compareDate(date, start) >= 0) {\n end = date;\n } else {\n start = date;\n end = null;\n }\n\n return new DateRange<D>(start, end);\n }\n\n createPreview(activeDate: D | null, currentRange: DateRange<D>) {\n let start: D | null = null;\n let end: D | null = null;\n\n if (currentRange.start && !currentRange.end && activeDate) {\n start = currentRange.start;\n end = activeDate;\n }\n\n return new DateRange<D>(start, end);\n }\n}\n\n\n/** @docs-private */\nexport function MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY(parent: MatDateRangeSelectionStrategy<unknown>, adapter: DateAdapter<unknown>) {\n return parent || new DefaultMatCalendarRangeStrategy(adapter);\n}\n\n/** @docs-private */\nexport const MAT_CALENDAR_RANGE_STRATEGY_PROVIDER: FactoryProvider = {\n provide: MAT_DATE_RANGE_SELECTION_STRATEGY,\n deps: [[new Optional(), new SkipSelf(), MAT_DATE_RANGE_SELECTION_STRATEGY], DateAdapter],\n useFactory: MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY,\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { DOWN_ARROW, END, ENTER, ESCAPE, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, SPACE, UP_ARROW, } from '@angular/cdk/keycodes';\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnChanges, OnDestroy, Optional, Output, SimpleChanges, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { MatCalendarBody, MatCalendarCell, MatCalendarCellClassFunction, MatCalendarUserEvent, } from './calendar-body';\nimport { MAT_DATE_RANGE_SELECTION_STRATEGY, MatDateRangeSelectionStrategy, } from './date-range-selection-strategy';\nimport { DateRange } from './date-selection-model';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { DateAdapter } from './shared/adapter/date-adapter';\n\nconst DAYS_PER_WEEK = 7;\n\n/**\n * An internal component used to display a single month in the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'gipi-mat-month-view',\n templateUrl: 'month-view.html',\n exportAs: 'gipiMatMonthView',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatMonthView<D> implements AfterContentInit, OnChanges, OnDestroy {\n private _rerenderSubscription = Subscription.EMPTY;\n\n /**\n * The date to display in this month view (everything other than the month and year is ignored).\n */\n @Input()\n get activeDate(): D { return this._activeDate; }\n set activeDate(value: D) {\n const oldActiveDate = this._activeDate;\n const validDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (!this._hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\n this._init();\n }\n }\n private _activeDate: D;\n\n /** The currently selected date. */\n @Input()\n get selected(): DateRange<D> | D | null { return this._selected; }\n set selected(value: DateRange<D> | D | null) {\n if (value instanceof DateRange) {\n this._selected = value;\n } else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n\n this._setRanges(this._selected);\n }\n private _selected: DateRange<D> | D | null;\n\n /** The minimum selectable date. */\n @Input()\n get minDate(): D | null { return this._minDate; }\n set minDate(value: D | null) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _minDate: D | null;\n\n /** The maximum selectable date. */\n @Input()\n get maxDate(): D | null { return this._maxDate; }\n set maxDate(value: D | null) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _maxDate: D | null;\n\n /** Function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: MatCalendarCellClassFunction<D>;\n\n /** Start of the comparison range. */\n @Input() comparisonStart: D | null;\n\n /** End of the comparison range. */\n @Input() comparisonEnd: D | null;\n\n /** Emits when a new date is selected. */\n @Output() readonly selectedChange: EventEmitter<D | null> = new EventEmitter<D | null>();\n\n /** Emits when any date is selected. */\n @Output() readonly _userSelection: EventEmitter<MatCalendarUserEvent<D | null>> =\n new EventEmitter<MatCalendarUserEvent<D | null>>();\n\n /** Emits when any date is activated. */\n @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** The body of calendar table */\n @ViewChild(MatCalendarBody, { static: true }) _matCalendarBody: MatCalendarBody;\n\n /** The label for this month (e.g. \"January 2017\"). */\n _monthLabel: string;\n\n /** Grid of calendar cells representing the dates of the month. */\n _weeks: MatCalendarCell[][];\n\n /** The number of blank cells in the first row before the 1st of the month. */\n _firstWeekOffset: number;\n\n /** Start value of the currently-shown date range. */\n _rangeStart: number | null;\n\n /** End value of the currently-shown date range. */\n _rangeEnd: number | null;\n\n /** Start value of the currently-shown comparison date range. */\n _comparisonRangeStart: number | null;\n\n /** End value of the currently-shown comparison date range. */\n _comparisonRangeEnd: number | null;\n\n /** Start of the preview range. */\n _previewStart: number | null;\n\n /** End of the preview range. */\n _previewEnd: number | null;\n\n /** Whether the user is currently selecting a range of dates. */\n _isRange: boolean;\n\n /** The date of the month that today falls on. Null if today is in another month. */\n _todayDate: number | null;\n\n /** The names of the weekdays. */\n _weekdays: { long: string, narrow: string }[];\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n @Optional() public _dateAdapter: DateAdapter<D>,\n @Optional() private _dir?: Directionality,\n @Inject(MAT_DATE_RANGE_SELECTION_STRATEGY) @Optional()\n private _rangeStrategy?: MatDateRangeSelectionStrategy<D>\n ) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n\n this._activeDate = this._dateAdapter.today();\n }\n\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges\n .pipe(startWith(null))\n .subscribe(() => this._init());\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const comparisonChange = changes['comparisonStart'] || changes['comparisonEnd'];\n\n if (comparisonChange && !comparisonChange.firstChange) {\n this._setRanges(this.selected);\n }\n }\n\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n\n /** Handles when a new date is selected. */\n _dateSelected(event: MatCalendarUserEvent<number>) {\n const date = event.value;\n const selectedYear = this._dateAdapter.getYear(this.activeDate);\n const selectedMonth = this._dateAdapter.getMonth(this.activeDate);\n const selectedDate = this._dateAdapter.createDate(selectedYear, selectedMonth, date);\n let rangeStartDate: number | null;\n let rangeEndDate: number | null;\n\n if (this._selected instanceof DateRange) {\n rangeStartDate = this._getDateInCurrentMonth(this._selected.start);\n rangeEndDate = this._getDateInCurrentMonth(this._selected.end);\n } else {\n rangeStartDate = rangeEndDate = this._getDateInCurrentMonth(this._selected);\n }\n\n if (rangeStartDate !== date || rangeEndDate !== date) {\n this.selectedChange.emit(selectedDate);\n }\n\n this._userSelection.emit({ value: selectedDate, event: event.event });\n }\n\n /** Handles keydown events on the calendar body when calendar is in month view. */\n _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -7);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 7);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate,\n 1 - this._dateAdapter.getDate(this._activeDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate,\n (this._dateAdapter.getNumDaysInMonth(this._activeDate) -\n this._dateAdapter.getDate(this._activeDate)));\n break;\n case PAGE_UP:\n this.activeDate = event.altKey ?\n this._dateAdapter.addCalendarYears(this._activeDate, -1) :\n this._dateAdapter.addCalendarMonths(this._activeDate, -1);\n break;\n case PAGE_DOWN:\n this.activeDate = event.altKey ?\n this._dateAdapter.addCalendarYears(this._activeDate, 1) :\n this._dateAdapter.addCalendarMonths(this._activeDate, 1);\n break;\n case ENTER:\n case SPACE:\n if (!this.dateFilter || this.dateFilter(this._activeDate)) {\n this._dateSelected({ value: this._dateAdapter.getDate(this._activeDate), event });\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n return;\n case ESCAPE:\n // Abort the current range selection if the user presses escape mid-selection.\n if (this._previewEnd != null) {\n this._previewStart = this._previewEnd = null;\n this.selectedChange.emit(null);\n this._userSelection.emit({ value: null, event });\n event.preventDefault();\n event.stopPropagation(); // Prevents the overlay from closing.\n }\n return;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n /** Initializes this month view. */\n _init() {\n this._setRanges(this.selected);\n this._todayDate = this._getCellCompareValue(this._dateAdapter.today());\n this._monthLabel = this._dateAdapter.getMonthNames('short')[this._dateAdapter.getMonth(this.activeDate)].toLocaleUpperCase();\n\n let firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), 1);\n this._firstWeekOffset = (DAYS_PER_WEEK + this._dateAdapter.getDayOfWeek(firstOfMonth) - this._dateAdapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;\n\n this._initWeekdays();\n this._createWeekCells();\n this._changeDetectorRef.markForCheck();\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell(movePreview?: boolean) {\n this._matCalendarBody._focusActiveCell(movePreview);\n }\n\n /** Called when the user has activated a new cell and the preview needs to be updated. */\n _previewChanged({ event, value: cell }: MatCalendarUserEvent<MatCalendarCell<D> | null>) {\n if (this._rangeStrategy) {\n // We can assume that this will be a range, because preview\n // events aren't fired for single date selections.\n const value = cell ? cell.rawValue! : null;\n const previewRange = this._rangeStrategy.createPreview(value, this.selected as DateRange<D>, event);\n this._previewStart = this._getCellCompareValue(previewRange.start);\n this._previewEnd = this._getCellCompareValue(previewRange.end);\n\n // Note that here we need to use `detectChanges`, rather than `markForCheck`, because\n // the way `_focusActiveCell` is set up at the moment makes it fire at the wrong time\n // when navigating one month back using the keyboard which will cause this handler\n // to throw a \"changed after checked\" error when updating the preview state.\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /** Initializes the weekdays. */\n private _initWeekdays() {\n const firstDayOfWeek = this._dateAdapter.getFirstDayOfWeek();\n const narrowWeekdays = this._dateAdapter.getDayOfWeekNames('narrow');\n const longWeekdays = this._dateAdapter.getDayOfWeekNames('long');\n\n // Rotate the labels for days of the week based on the configured first day of the week.\n let weekdays = longWeekdays.map((long, i) => {\n return { long, narrow: narrowWeekdays[i] };\n });\n this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\n }\n\n /** Creates MatCalendarCells for the dates in this month. */\n private _createWeekCells() {\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate);\n const dateNames = this._dateAdapter.getDateNames();\n this._weeks = [[]];\n for (let i = 0, cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {\n if (cell == DAYS_PER_WEEK) {\n this._weeks.push([]);\n cell = 0;\n }\n const date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), i + 1);\n const enabled = this._shouldEnableDate(date);\n const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.dateA11yLabel);\n const cellClasses = this.dateClass ? this.dateClass(date, 'month') : undefined;\n\n this._weeks[this._weeks.length - 1].push(new MatCalendarCell<D>(i + 1, dateNames[i], ariaLabel, enabled, cellClasses, this._getCellCompareValue(date)!, date));\n }\n }\n\n /** Date filter for the month */\n private _shouldEnableDate(date: D): boolean {\n return !!date &&\n (!this.minDate || this._dateAdapter.compareDate(date, this.minDate) >= 0) &&\n (!this.maxDate || this._dateAdapter.compareDate(date, this.maxDate) <= 0) &&\n (!this.dateFilter || this.dateFilter(date));\n }\n\n /**\n * Gets the date in this month that the given Date falls on.\n * Returns null if the given Date is in another month.\n */\n private _getDateInCurrentMonth(date: D | null): number | null {\n return date && this._hasSameMonthAndYear(date, this.activeDate) ?\n this._dateAdapter.getDate(date) : null;\n }\n\n /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */\n private _hasSameMonthAndYear(d1: D | null, d2: D | null): boolean {\n return !!(d1 && d2 && this._dateAdapter.getMonth(d1) == this._dateAdapter.getMonth(d2) &&\n this._dateAdapter.getYear(d1) == this._dateAdapter.getYear(d2));\n }\n\n /** Gets the value that will be used to one cell to another. */\n private _getCellCompareValue(date: D | null): number | null {\n if (date) {\n // We use the time since the Unix epoch to compare dates in this view, rather than the\n // cell values, because we need to support ranges that span across multiple months/years.\n const year = this._dateAdapter.getYear(date);\n const month = this._dateAdapter.getMonth(date);\n const day = this._dateAdapter.getDate(date);\n return new Date(year, month, day).getTime();\n }\n\n return null;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n\n /** Sets the current range based on a model value. */\n private _setRanges(selectedValue: DateRange<D> | D | null) {\n if (selectedValue instanceof DateRange) {\n this._rangeStart = this._getCellCompareValue(selectedValue.start);\n this._rangeEnd = this._getCellCompareValue(selectedValue.end);\n this._isRange = true;\n } else {\n this._rangeStart = this._rangeEnd = this._getCellCompareValue(selectedValue);\n this._isRange = false;\n }\n\n this._comparisonRangeStart = this._getCellCompareValue(this.comparisonStart);\n this._comparisonRangeEnd = this._getCellCompareValue(this.comparisonEnd);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { DOWN_ARROW, END, ENTER, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, SPACE, UP_ARROW, } from '@angular/cdk/keycodes';\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, Optional, Output, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { MatCalendarBody, MatCalendarCell, MatCalendarCellClassFunction, MatCalendarUserEvent, } from './calendar-body';\nimport { DateRange } from './date-selection-model';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { DateAdapter } from './shared/adapter/date-adapter';\n\nexport const yearsPerPage = 24;\n\nexport const yearsPerRow = 4;\n\n/**\n * An internal component used to display a year selector in the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'gipi-mat-multi-year-view',\n templateUrl: 'multi-year-view.html',\n exportAs: 'gipiMatMultiYearView',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatMultiYearView<D> implements AfterContentInit, OnDestroy {\n private _rerenderSubscription = Subscription.EMPTY;\n\n /** The date to display in this multi-year view (everything other than the year is ignored). */\n @Input()\n get activeDate(): D { return this._activeDate; }\n set activeDate(value: D) {\n let oldActiveDate = this._activeDate;\n const validDate =\n this._dateAdapter.getValidDateOrNull(\n this._dateAdapter.deserialize(value)\n ) || this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n\n if (!isSameMultiYearView(\n this._dateAdapter, oldActiveDate, this._activeDate, this.minDate, this.maxDate)) {\n this._init();\n }\n }\n private _activeDate: D;\n\n /** The currently selected date. */\n @Input()\n get selected(): DateRange<D> | D | null { return this._selected; }\n set selected(value: DateRange<D> | D | null) {\n if (value instanceof DateRange) {\n this._selected = value;\n } else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n\n this._setSelectedYear(value);\n }\n private _selected: DateRange<D> | D | null;\n\n\n /** The minimum selectable date. */\n @Input()\n get minDate(): D | null { return this._minDate; }\n set minDate(value: D | null) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _minDate: D | null;\n\n /** The maximum selectable date. */\n @Input()\n get maxDate(): D | null { return this._maxDate; }\n set maxDate(value: D | null) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _maxDate: D | null;\n\n /** A function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Function that can be used to add custom CSS classes to date cells. */\n @Input() dateClass: MatCalendarCellClassFunction<D>;\n\n /** Emits when a new year is selected. */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits the selected year. This doesn't imply a change on the selected date */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits when any date is activated. */\n @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** The body of calendar table */\n @ViewChild(MatCalendarBody, { static: true }) _matCalendarBody: MatCalendarBody;\n\n /** Grid of calendar cells representing the currently displayed years. */\n _years: MatCalendarCell[][];\n\n /** The year that today falls on. */\n _todayYear: number;\n\n /** The year of the selected date. Null if the selected date is null. */\n _selectedYear: number | null;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() public _dateAdapter: DateAdapter<D>,\n @Optional() private _dir?: Directionality\n ) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n this._activeDate = this._dateAdapter.today();\n }\n\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges\n .pipe(startWith(null))\n .subscribe(() => this._init());\n }\n\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n\n /** Initializes this multi-year view. */\n _init() {\n this._todayYear = this._dateAdapter.getYear(this._dateAdapter.today());\n\n // We want a range years such that we maximize the number of\n // enabled dates visible at once. This prevents issues where the minimum year\n // is the last item of a page OR the maximum year is the first item of a page.\n\n // The offset from the active year to the \"slot\" for the starting year is the\n // *actual* first rendered year in the multi-year view.\n const activeYear = this._dateAdapter.getYear(this._activeDate);\n const minYearOfPage = activeYear - getActiveOffset(\n this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\n\n this._years = [];\n for (let i = 0, row: number[] = []; i < yearsPerPage; i++) {\n row.push(minYearOfPage + i);\n if (row.length == yearsPerRow) {\n this._years.push(row.map(year => this._createCellForYear(year)));\n row = [];\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n\n /** Handles when a new year is selected. */\n _yearSelected(event: MatCalendarUserEvent<number>) {\n const year = event.value;\n this.yearSelected.emit(this._dateAdapter.createDate(year, 0, 1));\n let month = this._dateAdapter.getMonth(this.activeDate);\n let daysInMonth =\n this._dateAdapter.getNumDaysInMonth(this._dateAdapter.createDate(year, month, 1));\n this.selectedChange.emit(this._dateAdapter.createDate(year, month,\n Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\n }\n\n /** Handles keydown events on the calendar body when calendar is in multi-year view. */\n _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -yearsPerRow);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate,\n -getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate,\n yearsPerPage - getActiveOffset(\n this._dateAdapter, this.activeDate, this.minDate, this.maxDate) - 1);\n break;\n case PAGE_UP:\n this.activeDate =\n this._dateAdapter.addCalendarYears(\n this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\n break;\n case PAGE_DOWN:\n this.activeDate =\n this._dateAdapter.addCalendarYears(\n this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\n break;\n case ENTER:\n case SPACE:\n this._yearSelected({ value: this._dateAdapter.getYear(this._activeDate), event });\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n _getActiveCell(): number {\n return getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell() {\n this._matCalendarBody._focusActiveCell();\n }\n\n /** Creates an MatCalendarCell for the given year. */\n private _createCellForYear(year: number) {\n const date = this._dateAdapter.createDate(year, 0, 1);\n const yearName = this._dateAdapter.getYearName(date);\n const cellClasses = this.dateClass ? this.dateClass(date, 'multi-year') : undefined;\n\n return new MatCalendarCell(year, yearName, yearName, this._shouldEnableYear(year), cellClasses);\n }\n\n /** Whether the given year is enabled. */\n private _shouldEnableYear(year: number) {\n // disable if the year is greater than maxDate lower than minDate\n if (year === undefined || year === null ||\n (this.maxDate && year > this._dateAdapter.getYear(this.maxDate)) ||\n (this.minDate && year < this._dateAdapter.getYear(this.minDate))) {\n return false;\n }\n\n // enable if it reaches here and there's no filter defined\n if (!this.dateFilter) {\n return true;\n }\n\n const firstOfYear = this._dateAdapter.createDate(year, 0, 1);\n\n // If any date in the year is enabled count the year as enabled.\n for (let date = firstOfYear; this._dateAdapter.getYear(date) == year;\n date = this._dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n\n return false;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n\n /** Sets the currently-highlighted year based on a model value. */\n private _setSelectedYear(value: DateRange<D> | D | null) {\n this._selectedYear = null;\n\n if (value instanceof DateRange) {\n const displayValue = value.start || value.end;\n\n if (displayValue) {\n this._selectedYear = this._dateAdapter.getYear(displayValue);\n }\n } else if (value) {\n this._selectedYear = this._dateAdapter.getYear(value);\n }\n }\n}\n\nexport function isSameMultiYearView<D>(dateAdapter: DateAdapter<D>, date1: D, date2: D, minDate: D | null, maxDate: D | null): boolean {\n const year1 = dateAdapter.getYear(date1);\n const year2 = dateAdapter.getYear(date2);\n const startingYear = getStartingYear(dateAdapter, minDate, maxDate);\n return Math.floor((year1 - startingYear) / yearsPerPage) === Math.floor((year2 - startingYear) / yearsPerPage);\n}\n\n/**\n * When the multi-year view is first opened, the active year will be in view.\n * So we compute how many years are between the active year and the *slot* where our\n * \"startingYear\" will render when paged into view.\n */\nexport function getActiveOffset<D>(dateAdapter: DateAdapter<D>, activeDate: D, minDate: D | null, maxDate: D | null): number {\n const activeYear = dateAdapter.getYear(activeDate);\n return euclideanModulo((activeYear - getStartingYear(dateAdapter, minDate, maxDate)), yearsPerPage);\n}\n\n/**\n * We pick a \"starting\" year such that either the maximum year would be at the end\n * or the minimum year would be at the beginning of a page.\n */\nfunction getStartingYear<D>(dateAdapter: DateAdapter<D>, minDate: D | null, maxDate: D | null): number {\n let startingYear = 0;\n if (maxDate) {\n const maxYear = dateAdapter.getYear(maxDate);\n startingYear = maxYear - yearsPerPage + 1;\n } else if (minDate) {\n startingYear = dateAdapter.getYear(minDate);\n }\n return startingYear;\n}\n\n/** Gets remainder that is non-negative, even if first number is negative */\nfunction euclideanModulo(a: number, b: number): number {\n return (a % b + b) % b;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { DOWN_ARROW, END, ENTER, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, SPACE, UP_ARROW, } from '@angular/cdk/keycodes';\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnDestroy, Optional, Output, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { MatCalendarBody, MatCalendarCell, MatCalendarCellClassFunction, MatCalendarUserEvent, } from './calendar-body';\nimport { DateRange } from './date-selection-model';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { DateAdapter } from './shared/adapter/date-adapter';\n\n/**\n * An internal component used to display a single year in the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'gipi-mat-year-view',\n templateUrl: 'year-view.html',\n exportAs: 'gipiMatYearView',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatYearView<D> implements AfterContentInit, OnDestroy {\n private _rerenderSubscription = Subscription.EMPTY;\n\n /** The date to display in this year view (everything other than the year is ignored). */\n @Input()\n get activeDate(): D { return this._activeDate; }\n set activeDate(value: D) {\n let oldActiveDate = this._activeDate;\n const validDate =\n this._dateAdapter.getValidDateOrNull(\n this._dateAdapter.deserialize(value)\n ) || this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (this._dateAdapter.getYear(oldActiveDate) !== this._dateAdapter.getYear(this._activeDate)) {\n this._init();\n }\n }\n private _activeDate: D;\n\n /** The currently selected date. */\n @Input()\n get selected(): DateRange<D> | D | null { return this._selected; }\n set selected(value: DateRange<D> | D | null) {\n if (value instanceof DateRange) {\n this._selected = value;\n } else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n\n this._setSelectedMonth(value);\n }\n private _selected: DateRange<D> | D | null;\n\n /** The minimum selectable date. */\n @Input()\n get minDate(): D | null { return this._minDate; }\n set minDate(value: D | null) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _minDate: D | null;\n\n /** The maximum selectable date. */\n @Input()\n get maxDate(): D | null { return this._maxDate; }\n set maxDate(value: D | null) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _maxDate: D | null;\n\n /** A function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Function that can be used to add custom CSS classes to date cells. */\n @Input() dateClass: MatCalendarCellClassFunction<D>;\n\n /** Emits when a new month is selected. */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits the selected month. This doesn't imply a change on the selected date */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits when any date is activated. */\n @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** The body of calendar table */\n @ViewChild(MatCalendarBody, { static: true }) _matCalendarBody: MatCalendarBody;\n\n /** Grid of calendar cells representing the months of the year. */\n _months: MatCalendarCell[][];\n\n /** The label for this year (e.g. \"2017\"). */\n _yearLabel: string;\n\n /** The month in this year that today falls on. Null if today is in a different year. */\n _todayMonth: number | null;\n\n /**\n * The month in this year that the selected Date falls on.\n * Null if the selected Date is in a different year.\n */\n _selectedMonth: number | null;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n @Optional() public _dateAdapter: DateAdapter<D>,\n @Optional() private _dir?: Directionality\n ) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n\n this._activeDate = this._dateAdapter.today();\n }\n\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges\n .pipe(startWith(null))\n .subscribe(() => this._init());\n }\n\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n\n /** Handles when a new month is selected. */\n _monthSelected(event: MatCalendarUserEvent<number>) {\n const month = event.value;\n const normalizedDate =\n this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n\n this.monthSelected.emit(normalizedDate);\n\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(normalizedDate);\n\n this.selectedChange.emit(this._dateAdapter.createDate(\n this._dateAdapter.getYear(this.activeDate), month,\n Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\n }\n\n /** Handles keydown events on the calendar body when calendar is in year view. */\n _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -4);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 4);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate,\n -this._dateAdapter.getMonth(this._activeDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate,\n 11 - this._dateAdapter.getMonth(this._activeDate));\n break;\n case PAGE_UP:\n this.activeDate =\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -10 : -1);\n break;\n case PAGE_DOWN:\n this.activeDate =\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? 10 : 1);\n break;\n case ENTER:\n case SPACE:\n this._monthSelected({ value: this._dateAdapter.getMonth(this._activeDate), event });\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n /** Initializes this year view. */\n _init() {\n this._setSelectedMonth(this.selected);\n this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today());\n this._yearLabel = this._dateAdapter.getYearName(this.activeDate);\n\n let monthNames = this._dateAdapter.getMonthNames('short');\n // First row of months only contains 5 elements so we can fit the year label on the same row.\n this._months = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]].map(row => row.map(month => this._createCellForMonth(month, monthNames[month])));\n this._changeDetectorRef.markForCheck();\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell() {\n this._matCalendarBody._focusActiveCell();\n }\n\n /**\n * Gets the month in this year that the given Date falls on.\n * Returns null if the given Date is in another year.\n */\n private _getMonthInCurrentYear(date: D | null) {\n return date && this._dateAdapter.getYear(date) == this._dateAdapter.getYear(this.activeDate) ?\n this._dateAdapter.getMonth(date) : null;\n }\n\n /** Creates an MatCalendarCell for the given month. */\n private _createCellForMonth(month: number, monthName: string) {\n const date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.monthYearA11yLabel);\n const cellClasses = this.dateClass ? this.dateClass(date, 'year') : undefined;\n\n return new MatCalendarCell(month, monthName.toLocaleUpperCase(), ariaLabel, this._shouldEnableMonth(month), cellClasses);\n }\n\n /** Whether the given month is enabled. */\n private _shouldEnableMonth(month: number) {\n const activeYear = this._dateAdapter.getYear(this.activeDate);\n\n if (\n month === undefined ||\n month === null ||\n this._isYearAndMonthAfterMaxDate(activeYear, month) ||\n this._isYearAndMonthBeforeMinDate(activeYear, month)\n ) {\n return false;\n }\n\n if (!this.dateFilter) {\n return true;\n }\n\n const firstOfMonth = this._dateAdapter.createDate(activeYear, month, 1);\n\n // If any date in the month is enabled count the month as enabled.\n for (let date = firstOfMonth; this._dateAdapter.getMonth(date) == month;\n date = this._dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Tests whether the combination month/year is after this.maxDate, considering\n * just the month and year of this.maxDate\n */\n private _isYearAndMonthAfterMaxDate(year: number, month: number) {\n if (this.maxDate) {\n const maxYear = this._dateAdapter.getYear(this.maxDate);\n const maxMonth = this._dateAdapter.getMonth(this.maxDate);\n\n return year > maxYear || (year === maxYear && month > maxMonth);\n }\n\n return false;\n }\n\n /**\n * Tests whether the combination month/year is before this.minDate, considering\n * just the month and year of this.minDate\n */\n private _isYearAndMonthBeforeMinDate(year: number, month: number) {\n if (this.minDate) {\n const minYear = this._dateAdapter.getYear(this.minDate);\n const minMonth = this._dateAdapter.getMonth(this.minDate);\n\n return year < minYear || (year === minYear && month < minMonth);\n }\n\n return false;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n\n /** Sets the currently-selected month based on a model value. */\n private _setSelectedMonth(value: DateRange<D> | D | null) {\n if (value instanceof DateRange) {\n this._selectedMonth = this._getMonthInCurrentYear(value.start) ||\n this._getMonthInCurrentYear(value.end);\n } else {\n this._selectedMonth = this._getMonthInCurrentYear(value);\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { AfterContentInit, AfterViewChecked, AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnChanges, OnDestroy, Optional, Output, SimpleChanges, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { MatCalendarCellClassFunction, MatCalendarUserEvent } from './calendar-body';\nimport { DateRange, MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER } from './date-selection-model';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { MatDatepickerIntl } from './datepicker-intl';\nimport { MatMonthView } from './month-view';\nimport { getActiveOffset, isSameMultiYearView, MatMultiYearView, yearsPerPage } from './multi-year-view';\nimport { DateAdapter } from './shared/adapter/date-adapter';\nimport { MAT_DATE_FORMATS, MatDateFormats } from './shared/adapter/date-formats';\nimport { MatYearView } from './year-view';\n\n/**\n * Possible views for the calendar.\n * @docs-private\n */\nexport type MatCalendarView = 'month' | 'year' | 'multi-year';\n\n/**\n * A calendar that is used as part of the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'gipi-mat-calendar',\n templateUrl: 'calendar.html',\n styleUrls: ['calendar.scss'],\n host: {\n 'class': 'mat-calendar',\n },\n exportAs: 'gipiMatCalendar',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER\n ]\n})\nexport class MatCalendar<D> implements AfterContentInit, AfterViewChecked, OnDestroy, OnChanges {\n\n public matCalendarRef: MatCalendar<D> = this;\n\n /** Created by GIPI Sistemas */\n @Input() templatePresetRange: TemplateRef<any>;\n\n private _intlChanges: Subscription;\n\n /**\n * Used for scheduling that focus should be moved to the active cell on the next tick.\n * We need to schedule it, rather than do it immediately, because we have to wait\n * for Angular to re-evaluate the view children.\n */\n private _moveFocusOnNextTick = false;\n\n /** A date representing the period (month or year) to start the calendar in. */\n @Input()\n get startAt(): D | null { return this._startAt; }\n set startAt(value: D | null) {\n this._startAt = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _startAt: D | null;\n\n /** Whether the calendar should be started in month or year view. */\n @Input() startView: MatCalendarView = 'month';\n\n /** The currently selected date. */\n @Input()\n get selected(): DateRange<D> | D | null { return this._selected; }\n set selected(value: DateRange<D> | D | null) {\n if (value instanceof DateRange) {\n this._selected = value;\n } else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n }\n private _selected: DateRange<D> | D | null;\n\n /** The minimum selectable date. */\n @Input()\n get minDate(): D | null { return this._minDate; }\n set minDate(value: D | null) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _minDate: D | null;\n\n /** The maximum selectable date. */\n @Input()\n get maxDate(): D | null { return this._maxDate; }\n set maxDate(value: D | null) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _maxDate: D | null;\n\n /** Function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: MatCalendarCellClassFunction<D>;\n\n /** Start of the comparison range. */\n @Input() comparisonStart: D | null;\n\n /** End of the comparison range. */\n @Input() comparisonEnd: D | null;\n\n /**\n * Emits when the currently selected date changes.\n * @breaking-change 11.0.0 Emitted value to change to `D | null`.\n */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits the year chosen in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits the month chosen in year view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits when any date is selected. */\n @Output() readonly _userSelection: EventEmitter<MatCalendarUserEvent<D | null>> = new EventEmitter<MatCalendarUserEvent<D | null>>();\n\n /** Reference to the current month view component. */\n @ViewChild(MatMonthView, { static: false }) monthView: MatMonthView<D>;\n\n /** Reference to the current year view component. */\n @ViewChild(MatYearView, { static: false }) yearView: MatYearView<D>;\n\n /** Reference to the current multi-year view component. */\n @ViewChild(MatMultiYearView, { static: false }) multiYearView: MatMultiYearView<D>;\n\n /**\n * The current active date. This determines which time period is shown and which date is\n * highlighted when using keyboard navigation.\n */\n get activeDate(): D { return this._clampedActiveDate; }\n set activeDate(value: D) {\n this._clampedActiveDate = this._dateAdapter.clampDate(value, this.minDate, this.maxDate);\n this.stateChanges.next();\n this._changeDetectorRef.markForCheck();\n }\n private _clampedActiveDate: D;\n\n /** Whether the calendar is in month view. */\n get currentView(): MatCalendarView { return this._currentView; }\n set currentView(value: MatCalendarView) {\n this._currentView = value;\n this._moveFocusOnNextTick = true;\n this._changeDetectorRef.markForCheck();\n }\n private _currentView: MatCalendarView;\n\n /**\n * Emits whenever there is a state change that the header may need to respond to.\n */\n stateChanges = new Subject<void>();\n\n constructor(\n _intl: MatDatepickerIntl,\n @Optional() private _dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n private _changeDetectorRef: ChangeDetectorRef\n ) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n\n this._intlChanges = _intl.changes.subscribe(() => {\n _changeDetectorRef.markForCheck();\n this.stateChanges.next();\n });\n }\n\n ngAfterContentInit() {\n this.activeDate = this.startAt || this._dateAdapter.today();\n\n // Assign to the private property since we don't want to move focus on init.\n this._currentView = this.startView;\n }\n\n ngAfterViewChecked() {\n if (this._moveFocusOnNextTick) {\n this._moveFocusOnNextTick = false;\n this.focusActiveCell();\n }\n }\n\n ngOnDestroy() {\n this._intlChanges.unsubscribe();\n this.stateChanges.complete();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const change = changes['minDate'] || changes['maxDate'] || changes['dateFilter'];\n\n if (change && !change.firstChange) {\n const view = this._getCurrentViewComponent();\n\n if (view) {\n // We need to `detectChanges` manually here, because the `minDate`, `maxDate` etc. are\n // passed down to the view via data bindings which won't be up-to-date when we call `_init`.\n this._changeDetectorRef.detectChanges();\n view._init();\n }\n }\n\n this.stateChanges.next();\n }\n\n focusActiveCell() {\n this._getCurrentViewComponent()._focusActiveCell(false);\n }\n\n /** Updates today's date after an update of the active date */\n updateTodaysDate() {\n const currentView = this.currentView;\n let view: MatMonthView<D> | MatYearView<D> | MatMultiYearView<D>;\n\n if (currentView === 'month') {\n view = this.monthView;\n } else if (currentView === 'year') {\n view = this.yearView;\n } else {\n view = this.multiYearView;\n }\n\n view._init();\n }\n\n /** Handles date selection in the month view. */\n _dateSelected(event: MatCalendarUserEvent<D | null>): void {\n const date = event.value;\n\n if (this.selected instanceof DateRange || (date && !this._dateAdapter.sameDate(date, this.selected))) {\n // @breaking-change 11.0.0 remove non-null assertion\n // once the `selectedChange` is allowed to be null.\n this.selectedChange.emit(date!);\n }\n\n this._userSelection.emit(event);\n }\n\n /** Handles year selection in the multiyear view. */\n _yearSelectedInMultiYearView(normalizedYear: D) {\n this.yearSelected.emit(normalizedYear);\n }\n\n /** Handles month selection in the year view. */\n _monthSelectedInYearView(normalizedMonth: D) {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /** Handles year/month selection in the multi-year/year views. */\n _goToDateInView(date: D, view: 'month' | 'year' | 'multi-year'): void {\n this.activeDate = date;\n this.currentView = view;\n }\n\n /** Returns the component instance that corresponds to the current calendar view. */\n private _getCurrentViewComponent() {\n return this.monthView || this.yearView || this.multiYearView;\n }\n}\n\n/** Default header for MatCalendar */\n@Component({\n selector: 'gipi-mat-calendar-header',\n templateUrl: 'calendar-header.html',\n exportAs: 'gipiMatCalendarHeader',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatCalendarHeader<D> implements AfterViewInit {\n\n @Input() matCalendar: MatCalendar<D>;\n\n constructor(\n private _intl: MatDatepickerIntl,\n @Optional() private _dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n private _changeDetectorRef: ChangeDetectorRef,\n ) { }\n\n ngAfterViewInit(): void {\n this.matCalendar.stateChanges.subscribe(() => this._changeDetectorRef.markForCheck());\n }\n\n /** The label for the current matCalendar view. */\n get periodButtonText(): string {\n if (this.matCalendar.currentView == 'month') {\n return this._dateAdapter\n .format(this.matCalendar.activeDate, this._dateFormats.display.monthYearLabel)\n .toLocaleUpperCase();\n }\n if (this.matCalendar.currentView == 'year') {\n return this._dateAdapter.getYearName(this.matCalendar.activeDate);\n }\n\n // The offset from the active year to the \"slot\" for the starting year is the\n // *actual* first rendered year in the multi-year view, and the last year is\n // just yearsPerPage - 1 away.\n const activeYear = this._dateAdapter.getYear(this.matCalendar.activeDate);\n const minYearOfPage = activeYear - getActiveOffset(this._dateAdapter, this.matCalendar.activeDate, this.matCalendar.minDate, this.matCalendar.maxDate);\n const maxYearOfPage = minYearOfPage + yearsPerPage - 1;\n const minYearName = this._dateAdapter.getYearName(this._dateAdapter.createDate(minYearOfPage, 0, 1));\n const maxYearName = this._dateAdapter.getYearName(this._dateAdapter.createDate(maxYearOfPage, 0, 1));\n return this._intl.formatYearRange(minYearName, maxYearName);\n }\n\n get periodButtonLabel(): string {\n return this.matCalendar.currentView == 'month' ? this._intl.switchToMultiYearViewLabel : this._intl.switchToMonthViewLabel;\n }\n\n /** The label for the previous button. */\n get prevButtonLabel(): string {\n return {\n 'month': this._intl.prevMonthLabel,\n 'year': this._intl.prevYearLabel,\n 'multi-year': this._intl.prevMultiYearLabel\n }[this.matCalendar.currentView];\n }\n\n /** The label for the next button. */\n get nextButtonLabel(): string {\n return {\n 'month': this._intl.nextMonthLabel,\n 'year': this._intl.nextYearLabel,\n 'multi-year': this._intl.nextMultiYearLabel\n }[this.matCalendar.currentView];\n }\n\n /** Handles user clicks on the period label. */\n currentPeriodClicked(): void {\n this.matCalendar.currentView = this.matCalendar.currentView == 'month' ? 'multi-year' : 'month';\n }\n\n /** Handles user clicks on the previous button. */\n previousClicked(): void {\n this.matCalendar.activeDate = this.matCalendar.currentView == 'month'\n ? this._dateAdapter.addCalendarMonths(this.matCalendar.activeDate, -1)\n : this._dateAdapter.addCalendarYears(this.matCalendar.activeDate, this.matCalendar.currentView == 'year' ? -1 : -yearsPerPage);\n }\n\n /** Handles user clicks on the next button. */\n nextClicked(): void {\n this.matCalendar.activeDate = this.matCalendar.currentView == 'month'\n ? this._dateAdapter.addCalendarMonths(this.matCalendar.activeDate, 1)\n : this._dateAdapter.addCalendarYears(this.matCalendar.activeDate, this.matCalendar.currentView == 'year' ? 1 : yearsPerPage);\n }\n\n /** Whether the previous period button is enabled. */\n previousEnabled(): boolean {\n if (!this.matCalendar.minDate) {\n return true;\n }\n return !this.matCalendar.minDate || !this._isSameView(this.matCalendar.activeDate, this.matCalendar.minDate);\n }\n\n /** Whether the next period button is enabled. */\n nextEnabled(): boolean {\n return !this.matCalendar.maxDate || !this._isSameView(this.matCalendar.activeDate, this.matCalendar.maxDate);\n }\n\n /** Whether the two dates represent the same view in the current view mode (month or year). */\n private _isSameView(date1: D, date2: D): boolean {\n if (this.matCalendar.currentView == 'month') {\n return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2) && this._dateAdapter.getMonth(date1) == this._dateAdapter.getMonth(date2);\n }\n if (this.matCalendar.currentView == 'year') {\n return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2);\n }\n // Otherwise we are in 'multi-year' view.\n return isSameMultiYearView(this._dateAdapter, date1, date2, this.matCalendar.minDate, this.matCalendar.maxDate);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport { AfterViewInit, Directive, ElementRef, EventEmitter, Inject, Input, OnChanges, OnDestroy, Optional, Output, SimpleChanges, } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, ValidationErrors, Validator, ValidatorFn, } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { DateSelectionModelChange, ExtractDateTypeFromSelection, MatDateSelectionModel, } from './date-selection-model';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { DateAdapter } from './shared/adapter/date-adapter';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { MAT_DATE_FORMATS, MatDateFormats } from './shared/adapter/date-formats';\n\n\n/**\n * An event used for datepicker input and change events. We don't always have access to a native\n * input or change event because the event may have been triggered by the user clicking on the\n * calendar popup. For consistency, we always use MatDatepickerInputEvent instead.\n */\nexport class MatDatepickerInputEvent<D, S = unknown> {\n /** The new value for the target datepicker input. */\n value: D | null;\n\n constructor(\n /** Reference to the datepicker input component that emitted the event. */\n public target: MatDatepickerInputBase<S, D>,\n /** Reference to the native input element associated with the datepicker input. */\n public targetElement: HTMLElement) {\n this.value = this.target.value;\n }\n}\n\n/** Function that can be used to filter out dates from a calendar. */\nexport type DateFilterFn<D> = (date: D | null) => boolean;\n\n/** Base class for datepicker inputs. */\nexport abstract class MatDatepickerInputBase<S, D = ExtractDateTypeFromSelection<S>> implements ControlValueAccessor, AfterViewInit, OnChanges, OnDestroy, Validator {\n\n /** Whether the component has been initialized. */\n private _isInitialized: boolean;\n\n /** The value of the input. */\n @Input()\n get value(): D | null {\n return this._model ? this._getValueFromModel(this._model.selection) : this._pendingValue;\n }\n set value(value: D | null) {\n value = this._dateAdapter.deserialize(value);\n this._lastValueValid = this._isValidValue(value);\n value = this._dateAdapter.getValidDateOrNull(value);\n const oldDate = this.value;\n this._assignValue(value);\n this._formatValue(value);\n\n if (!this._dateAdapter.sameDate(oldDate, value)) {\n this._valueChange.emit(value);\n }\n }\n protected _model: MatDateSelectionModel<S, D> | undefined;\n\n /** Whether the datepicker-input is disabled. */\n @Input()\n get disabled(): boolean { return !!this._disabled || this._parentDisabled(); }\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n const element = this._elementRef.nativeElement;\n\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this.stateChanges.next(undefined);\n }\n\n // We need to null check the `blur` method, because it's undefined during SSR.\n // In Ivy static bindings are invoked earlier, before the element is attached to the DOM.\n // This can cause an error to be thrown in some browsers (IE/Edge) which assert that the\n // element has been inserted.\n if (newValue && this._isInitialized && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n private _disabled: boolean;\n\n /** Emits when a `change` event is fired on this `<input>`. */\n @Output() readonly dateChange: EventEmitter<MatDatepickerInputEvent<D, S>> = new EventEmitter<MatDatepickerInputEvent<D, S>>();\n\n /** Emits when an `input` event is fired on this `<input>`. */\n @Output() readonly dateInput: EventEmitter<MatDatepickerInputEvent<D, S>> = new EventEmitter<MatDatepickerInputEvent<D, S>>();\n\n /** Emits when the value changes (either due to user input or programmatic change). */\n _valueChange = new EventEmitter<D | null>();\n\n /** Emits when the internal state has changed */\n stateChanges = new Subject<void>();\n\n _onTouched = () => { };\n _validatorOnChange = () => { };\n\n protected _cvaOnChange: (value: any) => void = () => { };\n private _valueChangesSubscription = Subscription.EMPTY;\n private _localeSubscription = Subscription.EMPTY;\n\n /**\n * Since the value is kept on the model which is assigned in an Input,\n * we might get a value before we have a model. This property keeps track\n * of the value until we have somewhere to assign it.\n */\n private _pendingValue: D | null;\n\n /** The form control validator for whether the input parses. */\n private _parseValidator: ValidatorFn = (): ValidationErrors | null => {\n return this._lastValueValid ? null : { 'matDatepickerParse': { 'text': this._elementRef.nativeElement.value } };\n }\n\n /** The form control validator for the date filter. */\n private _filterValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const dateFilter = this._getDateFilter();\n return !dateFilter || !controlValue || dateFilter(controlValue) ? null : { 'matDatepickerFilter': true };\n }\n\n /** The form control validator for the min date. */\n private _minValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const min = this._getMinDate();\n return (!min || !controlValue || this._dateAdapter.compareDate(min, controlValue) <= 0) ? null : { 'matDatepickerMin': { 'min': min, 'actual': controlValue } };\n }\n\n /** The form control validator for the max date. */\n private _maxValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const max = this._getMaxDate();\n return (!max || !controlValue || this._dateAdapter.compareDate(max, controlValue) >= 0) ? null : { 'matDatepickerMax': { 'max': max, 'actual': controlValue } };\n }\n\n /** Gets the base validator functions. */\n protected _getValidators(): ValidatorFn[] {\n return [this._parseValidator, this._minValidator, this._maxValidator, this._filterValidator];\n }\n\n /** Gets the minimum date for the input. Used for validation. */\n abstract _getMinDate(): D | null;\n\n /** Gets the maximum date for the input. Used for validation. */\n abstract _getMaxDate(): D | null;\n\n /** Gets the date filter function. Used for validation. */\n protected abstract _getDateFilter(): DateFilterFn<D> | undefined;\n\n /** Registers a date selection model with the input. */\n _registerModel(model: MatDateSelectionModel<S, D>): void {\n this._model = model;\n this._valueChangesSubscription.unsubscribe();\n\n if (this._pendingValue) {\n this._assignValue(this._pendingValue);\n }\n\n this._valueChangesSubscription = this._model.selectionChanged.subscribe(event => {\n if (event.source !== this) {\n const value = this._getValueFromModel(event.selection);\n this._lastValueValid = this._isValidValue(value);\n this._cvaOnChange(value);\n this._onTouched();\n this._formatValue(value);\n\n // Note that we can't wrap the entire block with this logic, because for the range inputs\n // we want to revalidate whenever either one of the inputs changes and we don't have a\n // good way of distinguishing it at the moment.\n if (this._canEmitChangeEvent(event)) {\n this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n }\n\n if (this._outsideValueChanged) {\n this._outsideValueChanged();\n }\n }\n });\n }\n\n /** Opens the popup associated with the input. */\n protected abstract _openPopup(): void;\n\n /** Assigns a value to the input's model. */\n protected abstract _assignValueToModel(model: D | null): void;\n\n /** Converts a value from the model into a native value for the input. */\n protected abstract _getValueFromModel(modelValue: S): D | null;\n\n /** Combined form control validator for this input. */\n protected abstract _validator: ValidatorFn | null;\n\n /**\n * Callback that'll be invoked when the selection model is changed\n * from somewhere that's not the current datepicker input.\n */\n protected abstract _outsideValueChanged?: () => void;\n\n /** Predicate that determines whether we're allowed to emit a particular change event. */\n protected abstract _canEmitChangeEvent(event: DateSelectionModelChange<S>): boolean;\n\n /** Whether the last value set on the input was valid. */\n protected _lastValueValid = false;\n\n constructor(\n protected _elementRef: ElementRef<HTMLInputElement>,\n @Optional() public _dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats\n ) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n\n // Update the displayed date when the locale changes.\n this._localeSubscription = _dateAdapter.localeChanges.subscribe(() => {\n this.value = this.value;\n });\n }\n\n ngAfterViewInit() {\n this._isInitialized = true;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (dateInputsHaveChanged(changes, this._dateAdapter)) {\n this.stateChanges.next(undefined);\n }\n }\n\n ngOnDestroy() {\n this._valueChangesSubscription.unsubscribe();\n this._localeSubscription.unsubscribe();\n this._valueChange.complete();\n this.stateChanges.complete();\n }\n\n /** @docs-private */\n registerOnValidatorChange(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n /** @docs-private */\n validate(c: AbstractControl): ValidationErrors | null {\n return this._validator ? this._validator(c) : null;\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: D): void {\n this.value = value;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void): void {\n this._cvaOnChange = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n _onKeydown(event: KeyboardEvent) {\n const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;\n\n if (isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\n this._openPopup();\n event.preventDefault();\n }\n }\n\n _onInput(value: string) {\n const lastValueWasValid = this._lastValueValid;\n let date = this._dateAdapter.parse(value, this._dateFormats.parse.dateInput);\n this._lastValueValid = this._isValidValue(date);\n date = this._dateAdapter.getValidDateOrNull(date);\n\n if (!this._dateAdapter.sameDate(date, this.value)) {\n this._assignValue(date);\n this._cvaOnChange(date);\n this._valueChange.emit(date);\n this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n } else {\n // Call the CVA change handler for invalid values\n // since this is what marks the control as dirty.\n if (value && !this.value) {\n this._cvaOnChange(date);\n }\n\n if (lastValueWasValid !== this._lastValueValid) {\n this._validatorOnChange();\n }\n }\n }\n\n _onChange() {\n this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n }\n\n /** Handles blur events on the input. */\n _onBlur() {\n // Reformat the input only if we have a valid value.\n if (this.value) {\n this._formatValue(this.value);\n }\n\n this._onTouched();\n }\n\n /** Formats a value and sets it on the input element. */\n protected _formatValue(value: D | null) {\n this._elementRef.nativeElement.value =\n value ? this._dateAdapter.format(value, this._dateFormats.display.dateInput) : '';\n }\n\n /** Assigns a value to the model. */\n private _assignValue(value: D | null) {\n // We may get some incoming values before the model was\n // assigned. Save the value so that we can assign it later.\n if (this._model) {\n this._assignValueToModel(value);\n this._pendingValue = null;\n } else {\n this._pendingValue = value;\n }\n }\n\n /** Whether a value is considered valid. */\n private _isValidValue(value: D | null): boolean {\n return !value || this._dateAdapter.isValid(value);\n }\n\n /**\n * Checks whether a parent control is disabled. This is in place so that it can be overridden\n * by inputs extending this one which can be placed inside of a group that can be disabled.\n */\n protected _parentDisabled() {\n return false;\n }\n\n}\n\n/**\n * Checks whether the `SimpleChanges` object from an `ngOnChanges`\n * callback has any changes, accounting for date objects.\n */\nexport function dateInputsHaveChanged(changes: SimpleChanges, adapter: DateAdapter<unknown>): boolean {\n const keys = Object.keys(changes);\n\n for (let key of keys) {\n const { previousValue, currentValue } = changes[key];\n\n if (adapter.isDateInstance(previousValue) && adapter.isDateInstance(currentValue)) {\n if (!adapter.sameDate(previousValue, currentValue)) {\n return true;\n }\n } else {\n return true;\n }\n }\n\n return false;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { BACKSPACE } from '@angular/cdk/keycodes';\nimport { Directive, DoCheck, ElementRef, Inject, InjectFlags, InjectionToken, Injector, OnInit, Optional, Type, } from '@angular/core';\nimport { AbstractControl, FormGroupDirective, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl, NgForm, ValidationErrors, ValidatorFn, Validators, } from '@angular/forms';\nimport { CanUpdateErrorState, CanUpdateErrorStateCtor, ErrorStateMatcher, MAT_DATE_FORMATS, MatDateFormats, mixinErrorState, } from '@angular/material/core';\nimport { DateRange, DateSelectionModelChange } from './date-selection-model';\nimport { DateFilterFn, MatDatepickerInputBase } from './datepicker-input-base';\nimport { DateAdapter } from './shared/adapter/date-adapter';\n\n/** Parent component that should be wrapped around `MatStartDate` and `MatEndDate`. */\nexport interface MatDateRangeInputParent<D> {\n id: string;\n min: D | null;\n max: D | null;\n dateFilter: DateFilterFn<D>;\n rangePicker: {\n opened: boolean;\n id: string;\n };\n _startInput: MatDateRangeInputPartBase<D>;\n _endInput: MatDateRangeInputPartBase<D>;\n _groupDisabled: boolean;\n _handleChildValueChange(): void;\n _openDatepicker(): void;\n}\n\n/**\n * Used to provide the date range input wrapper component\n * to the parts without circular dependencies.\n */\nexport const MAT_DATE_RANGE_INPUT_PARENT = new InjectionToken<MatDateRangeInputParent<unknown>>('MAT_DATE_RANGE_INPUT_PARENT');\n\n/**\n * Base class for the individual inputs that can be projected inside a `mat-date-range-input`.\n */\n@Directive({})\nabstract class MatDateRangeInputPartBase<D> extends MatDatepickerInputBase<DateRange<D>> implements OnInit, DoCheck {\n\n /** @docs-private */\n ngControl: NgControl;\n\n /** @docs-private */\n abstract updateErrorState(): void;\n\n protected abstract _validator: ValidatorFn | null;\n protected abstract _assignValueToModel(value: D | null): void;\n protected abstract _getValueFromModel(modelValue: DateRange<D>): D | null;\n\n constructor(\n @Inject(MAT_DATE_RANGE_INPUT_PARENT) public _rangeInput: MatDateRangeInputParent<D>,\n elementRef: ElementRef<HTMLInputElement>,\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n private _injector: Injector,\n @Optional() public _parentForm: NgForm,\n @Optional() public _parentFormGroup: FormGroupDirective,\n @Optional() dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) dateFormats: MatDateFormats) {\n super(elementRef, dateAdapter, dateFormats);\n }\n\n ngOnInit() {\n // We need the date input to provide itself as a `ControlValueAccessor` and a `Validator`, while\n // injecting its `NgControl` so that the error state is handled correctly. This introduces a\n // circular dependency, because both `ControlValueAccessor` and `Validator` depend on the input\n // itself. Usually we can work around it for the CVA, but there's no API to do it for the\n // validator. We work around it here by injecting the `NgControl` in `ngOnInit`, after\n // everything has been resolved.\n const ngControl = this._injector.get<NgControl>(NgControl as Type<NgControl>, null, InjectFlags.Self);\n\n this._injector.get(NgControl, null)\n\n if (ngControl) {\n this.ngControl = ngControl;\n }\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n\n /** Gets whether the input is empty. */\n isEmpty(): boolean {\n return this._elementRef.nativeElement.value.length === 0;\n }\n\n /** Gets the placeholder of the input. */\n _getPlaceholder() {\n return this._elementRef.nativeElement.placeholder;\n }\n\n /** Focuses the input. */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n /** Handles `input` events on the input element. */\n _onInput(value: string) {\n super._onInput(value);\n this._rangeInput._handleChildValueChange();\n }\n\n /** Opens the datepicker associated with the input. */\n protected _openPopup(): void {\n this._rangeInput._openDatepicker();\n }\n\n /** Gets the minimum date from the range input. */\n _getMinDate() {\n return this._rangeInput.min;\n }\n\n /** Gets the maximum date from the range input. */\n _getMaxDate() {\n return this._rangeInput.max;\n }\n\n /** Gets the date filter function from the range input. */\n protected _getDateFilter() {\n return this._rangeInput.dateFilter;\n }\n\n protected _outsideValueChanged = () => {\n // Whenever the value changes outside the input we need to revalidate, because\n // the validation state of each of the inputs depends on the other one.\n this._validatorOnChange();\n }\n\n protected _parentDisabled() {\n return this._rangeInput._groupDisabled;\n }\n}\n\nconst _MatDateRangeInputBase:\n CanUpdateErrorStateCtor & typeof MatDateRangeInputPartBase =\n // Needs to be `as any`, because the base class is abstract.\n mixinErrorState(MatDateRangeInputPartBase as any);\n\n/** Input for entering the start date in a `mat-date-range-input`. */\n@Directive({\n selector: 'input[gipiMatStartDate]',\n host: {\n 'class': 'mat-start-date mat-date-range-input-inner',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event.target.value)',\n '(change)': '_onChange()',\n '(keydown)': '_onKeydown($event)',\n '[attr.id]': '_rangeInput.id',\n '[attr.aria-haspopup]': '_rangeInput.rangePicker ? \"dialog\" : null',\n '[attr.aria-owns]': '(_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null',\n '[attr.min]': '_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null',\n '[attr.max]': '_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null',\n '(blur)': '_onBlur()',\n 'type': 'text',\n },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: MatStartDate, multi: true },\n { provide: NG_VALIDATORS, useExisting: MatStartDate, multi: true }\n ]\n})\nexport class MatStartDate<D> extends _MatDateRangeInputBase<D> implements CanUpdateErrorState, DoCheck, OnInit {\n\n /** Validator that checks that the start date isn't after the end date. */\n private _startValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const start = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const end = this._model ? this._model.selection.end : null;\n return (!start || !end || this._dateAdapter.compareDate(start, end) <= 0) ? null : { 'matStartDateInvalid': { 'end': end, 'actual': start } };\n }\n\n constructor(\n @Inject(MAT_DATE_RANGE_INPUT_PARENT) rangeInput: MatDateRangeInputParent<D>,\n elementRef: ElementRef<HTMLInputElement>,\n defaultErrorStateMatcher: ErrorStateMatcher,\n injector: Injector,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n @Optional() dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) dateFormats: MatDateFormats\n ) {\n\n // TODO(crisbeto): this constructor shouldn't be necessary, but ViewEngine doesn't seem to\n // handle DI correctly when it is inherited from `MatDateRangeInputPartBase`. We can drop this\n // constructor once ViewEngine is removed.\n super(rangeInput, elementRef, defaultErrorStateMatcher, injector, parentForm, parentFormGroup, dateAdapter, dateFormats);\n }\n\n ngOnInit() {\n // Normally this happens automatically, but it seems to break if not added explicitly when all\n // of the criteria below are met:\n // 1) The class extends a TS mixin.\n // 2) The application is running in ViewEngine.\n // 3) The application is being transpiled through tsickle.\n // This can be removed once google3 is completely migrated to Ivy.\n super.ngOnInit();\n }\n\n ngDoCheck() {\n // Normally this happens automatically, but it seems to break if not added explicitly when all\n // of the criteria below are met:\n // 1) The class extends a TS mixin.\n // 2) The application is running in ViewEngine.\n // 3) The application is being transpiled through tsickle.\n // This can be removed once google3 is completely migrated to Ivy.\n super.ngDoCheck();\n }\n\n protected _validator = Validators.compose([...super._getValidators(), this._startValidator]);\n\n protected _getValueFromModel(modelValue: DateRange<D>) {\n return modelValue.start;\n }\n\n protected _assignValueToModel(value: D | null) {\n if (this._model) {\n const range = new DateRange(value, this._model.selection.end);\n this._model.updateSelection(range, this);\n this._cvaOnChange(value);\n }\n }\n\n protected _canEmitChangeEvent = (event: DateSelectionModelChange<DateRange<D>>): boolean => {\n return event.source !== this._rangeInput._endInput;\n }\n\n protected _formatValue(value: D | null) {\n super._formatValue(value);\n\n // Any time the input value is reformatted we need to tell the parent.\n this._rangeInput._handleChildValueChange();\n }\n\n /** Gets the value that should be used when mirroring the input's size. */\n getMirrorValue(): string {\n const element = this._elementRef.nativeElement;\n const value = element.value;\n return value.length > 0 ? value : element.placeholder;\n }\n\n\n}\n\n\n/** Input for entering the end date in a `mat-date-range-input`. */\n@Directive({\n selector: 'input[gipiMatEndDate]',\n host: {\n 'class': 'mat-end-date mat-date-range-input-inner',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event.target.value)',\n '(change)': '_onChange()',\n '(keydown)': '_onKeydown($event)',\n '[attr.aria-haspopup]': '_rangeInput.rangePicker ? \"dialog\" : null',\n '[attr.aria-owns]': '(_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null',\n '[attr.min]': '_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null',\n '[attr.max]': '_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null',\n '(blur)': '_onBlur()',\n 'type': 'text',\n },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: MatEndDate, multi: true },\n { provide: NG_VALIDATORS, useExisting: MatEndDate, multi: true }\n ]\n})\nexport class MatEndDate<D> extends _MatDateRangeInputBase<D> implements CanUpdateErrorState, DoCheck, OnInit {\n\n /** Validator that checks that the end date isn't before the start date. */\n private _endValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const end = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const start = this._model ? this._model.selection.start : null;\n return (!end || !start || this._dateAdapter.compareDate(end, start) >= 0) ? null : { 'matEndDateInvalid': { 'start': start, 'actual': end } };\n }\n\n constructor(\n @Inject(MAT_DATE_RANGE_INPUT_PARENT) rangeInput: MatDateRangeInputParent<D>,\n elementRef: ElementRef<HTMLInputElement>,\n defaultErrorStateMatcher: ErrorStateMatcher,\n injector: Injector,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n @Optional() dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) dateFormats: MatDateFormats\n ) {\n\n // TODO(crisbeto): this constructor shouldn't be necessary, but ViewEngine doesn't seem to\n // handle DI correctly when it is inherited from `MatDateRangeInputPartBase`. We can drop this\n // constructor once ViewEngine is removed.\n super(rangeInput, elementRef, defaultErrorStateMatcher, injector, parentForm, parentFormGroup, dateAdapter, dateFormats);\n }\n\n ngOnInit() {\n // Normally this happens automatically, but it seems to break if not added explicitly when all\n // of the criteria below are met:\n // 1) The class extends a TS mixin.\n // 2) The application is running in ViewEngine.\n // 3) The application is being transpiled through tsickle.\n // This can be removed once google3 is completely migrated to Ivy.\n super.ngOnInit();\n }\n\n ngDoCheck() {\n // Normally this happens automatically, but it seems to break if not added explicitly when all\n // of the criteria below are met:\n // 1) The class extends a TS mixin.\n // 2) The application is running in ViewEngine.\n // 3) The application is being transpiled through tsickle.\n // This can be removed once google3 is completely migrated to Ivy.\n super.ngDoCheck();\n }\n\n protected _validator = Validators.compose([...super._getValidators(), this._endValidator]);\n\n protected _getValueFromModel(modelValue: DateRange<D>) {\n return modelValue.end;\n }\n\n protected _assignValueToModel(value: D | null) {\n if (this._model) {\n const range = new DateRange(this._model.selection.start, value);\n this._model.updateSelection(range, this);\n this._cvaOnChange(value);\n }\n }\n\n protected _canEmitChangeEvent = (event: DateSelectionModelChange<DateRange<D>>): boolean => {\n return event.source !== this._rangeInput._startInput;\n }\n\n _onKeydown(event: KeyboardEvent) {\n // If the user is pressing backspace on an empty end input, move focus back to the start.\n if (event.keyCode === BACKSPACE && !this._elementRef.nativeElement.value) {\n this._rangeInput._startInput.focus();\n }\n\n super._onKeydown(event);\n }\n\n\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { animate, AnimationTriggerMetadata, state, style, transition, trigger, } from '@angular/animations';\n\n/**\n * Animations used by the Material datepicker.\n * @docs-private\n */\nexport const matDatepickerAnimations: {\n readonly transformPanel: AnimationTriggerMetadata;\n readonly fadeInCalendar: AnimationTriggerMetadata;\n} = {\n /** Transforms the height of the datepicker's calendar. */\n transformPanel: trigger('transformPanel', [\n state('void', style({\n opacity: 0,\n transform: 'scale(1, 0.8)'\n })),\n transition('void => enter', animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({\n opacity: 1,\n transform: 'scale(1, 1)'\n }))),\n transition('* => void', animate('100ms linear', style({ opacity: 0 })))\n ]),\n\n /** Fades in the content of the calendar. */\n fadeInCalendar: trigger('fadeInCalendar', [\n state('void', style({ opacity: 0 })),\n state('enter', style({ opacity: 1 })),\n\n // TODO(crisbeto): this animation should be removed since it isn't quite on spec, but we\n // need to keep it until #12440 gets in, otherwise the exit animation will look glitchy.\n transition('void => *', animate('120ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)'))\n ])\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayConfig, OverlayRef, ScrollStrategy, } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, Directive, ElementRef, EventEmitter, Inject, InjectionToken, Input, NgZone, OnChanges, OnDestroy, Optional, Output, SimpleChanges, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { CanColor, CanColorCtor, mixinColor, ThemePalette, } from '@angular/material/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { merge, Observable, Subject, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { MatCalendar } from './calendar';\nimport { MatCalendarCellClassFunction, MatCalendarUserEvent } from './calendar-body';\nimport { MAT_DATE_RANGE_SELECTION_STRATEGY, MatDateRangeSelectionStrategy, } from './date-range-selection-strategy';\nimport { DateRange, ExtractDateTypeFromSelection, MatDateSelectionModel, } from './date-selection-model';\nimport { matDatepickerAnimations } from './datepicker-animations';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { DateFilterFn } from './datepicker-input-base';\nimport { DateAdapter } from './shared/adapter/date-adapter';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/** Used to generate a unique ID for each datepicker instance. */\nlet datepickerUid = 0;\n\n/** Injection token that determines the scroll handling while the calendar is open. */\nexport const MAT_DATEPICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('mat-datepicker-scroll-strategy');\n\n/** @docs-private */\nexport function MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** Possible positions for the datepicker dropdown along the X axis. */\nexport type DatepickerDropdownPositionX = 'start' | 'end';\n\n/** Possible positions for the datepicker dropdown along the Y axis. */\nexport type DatepickerDropdownPositionY = 'above' | 'below';\n\n/** @docs-private */\nexport const MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_DATEPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY,\n};\n\n// Boilerplate for applying mixins to MatDatepickerContent.\n/** @docs-private */\nclass MatDatepickerContentBase {\n constructor(public _elementRef: ElementRef) { }\n}\n\nconst _MatDatepickerContentMixinBase: CanColorCtor & typeof MatDatepickerContentBase = mixinColor(MatDatepickerContentBase);\n\n/**\n * Component used as the content for the datepicker dialog and popup. We use this instead of using\n * MatCalendar directly as the content so we can control the initial focus. This also gives us a\n * place to put additional features of the popup that are not part of the calendar itself in the\n * future. (e.g. confirmation buttons).\n * @docs-private\n */\n@Component({\n selector: 'gipi-mat-datepicker-content',\n templateUrl: 'datepicker-content.html',\n styleUrls: ['datepicker-content.scss'],\n host: {\n 'class': 'mat-datepicker-content',\n '[@transformPanel]': '_animationState',\n '(@transformPanel.done)': '_animationDone.next()',\n '[class.mat-datepicker-content-touch]': 'datepicker.touchUi',\n },\n animations: [\n matDatepickerAnimations.transformPanel,\n matDatepickerAnimations.fadeInCalendar,\n ],\n exportAs: 'gipiMatDatepickerContent',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['color'],\n})\nexport class MatDatepickerContent<S, D = ExtractDateTypeFromSelection<S>> extends _MatDatepickerContentMixinBase implements AfterViewInit, OnDestroy, CanColor {\n\n private _subscriptions = new Subscription();\n\n /** Reference to the internal calendar component. */\n @ViewChild(MatCalendar, { static: true }) _calendar: MatCalendar<D>;\n\n /** Reference to the datepicker that created the overlay. */\n datepicker: MatDatepickerBase<any, S, D>;\n\n /** Start of the comparison range. */\n comparisonStart: D | null;\n\n /** End of the comparison range. */\n comparisonEnd: D | null;\n\n /** Whether the datepicker is above or below the input. */\n _isAbove: boolean;\n\n /** Current state of the animation. */\n _animationState: 'enter' | 'void' = 'enter';\n\n /** Emits when an animation has finished. */\n _animationDone = new Subject<void>();\n\n constructor(\n elementRef: ElementRef,\n /**\n * @deprecated `_changeDetectorRef`, `_model` and `_rangeSelectionStrategy`\n * parameters to become required.\n * @breaking-change 11.0.0\n */\n private _changeDetectorRef?: ChangeDetectorRef,\n private _model?: MatDateSelectionModel<S, D>,\n private _dateAdapter?: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_RANGE_SELECTION_STRATEGY)\n private _rangeSelectionStrategy?: MatDateRangeSelectionStrategy<D>\n ) {\n super(elementRef);\n }\n\n ngAfterViewInit() {\n // @breaking-change 11.0.0 Remove null check for `_changeDetectorRef.\n if (this._changeDetectorRef) {\n this._subscriptions.add(this.datepicker._stateChanges.subscribe(() => {\n this._changeDetectorRef!.markForCheck();\n }));\n }\n\n this._calendar.focusActiveCell();\n }\n\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n this._animationDone.complete();\n }\n\n _handleUserSelection(event: MatCalendarUserEvent<D | null>) {\n // @breaking-change 11.0.0 Remove null checks for _model,\n // _rangeSelectionStrategy and _dateAdapter.\n if (this._model && this._dateAdapter) {\n const selection = this._model.selection;\n const value = event.value;\n const isRange = selection instanceof DateRange;\n\n // If we're selecting a range and we have a selection strategy, always pass the value through\n // there. Otherwise don't assign null values to the model, unless we're selecting a range.\n // A null value when picking a range means that the user cancelled the selection (e.g. by\n // pressing escape), whereas when selecting a single value it means that the value didn't\n // change. This isn't very intuitive, but it's here for backwards-compatibility.\n if (isRange && this._rangeSelectionStrategy) {\n const newSelection = this._rangeSelectionStrategy.selectionFinished(value,\n selection as unknown as DateRange<D>, event.event);\n this._model.updateSelection(newSelection as unknown as S, this);\n } else if (value && (isRange ||\n !this._dateAdapter.sameDate(value, selection as unknown as D))) {\n this._model.add(value);\n }\n }\n\n if (!this._model || this._model.isComplete()) {\n this.datepicker.close();\n }\n }\n\n _startExitAnimation() {\n this._animationState = 'void';\n\n // @breaking-change 11.0.0 Remove null check for `_changeDetectorRef`.\n if (this._changeDetectorRef) {\n this._changeDetectorRef.markForCheck();\n }\n }\n\n _getSelected() {\n // @breaking-change 11.0.0 Remove null check for `_model`.\n return this._model ? this._model.selection as unknown as D | DateRange<D> | null : null;\n }\n}\n\n/** Form control that can be associated with a datepicker. */\nexport interface MatDatepickerControl<D> {\n getStartValue(): D | null;\n getThemePalette(): ThemePalette;\n min: D | null;\n max: D | null;\n disabled: boolean;\n dateFilter: DateFilterFn<D>;\n getConnectedOverlayOrigin(): ElementRef;\n stateChanges: Observable<void>;\n}\n\n/** Base class for a datepicker. */\nexport abstract class MatDatepickerBase<C extends MatDatepickerControl<D>, S, D = any> implements OnDestroy, OnChanges {\n\n private _scrollStrategy: () => ScrollStrategy;\n private _inputStateChanges = Subscription.EMPTY;\n\n @Input() templatePresetRange: TemplateRef<any>;\n\n /** The date to open the calendar to initially. */\n @Input()\n get startAt(): D | null {\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n // selected value is.\n return this._startAt || (this._datepickerInput ? this._datepickerInput.getStartValue() : null);\n }\n set startAt(value: D | null) {\n this._startAt = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _startAt: D | null;\n\n /** The view that the calendar should start in. */\n @Input() startView: 'month' | 'year' | 'multi-year' = 'month';\n\n /** Color palette to use on the datepicker's calendar. */\n @Input()\n get color(): ThemePalette {\n return this._color || (this._datepickerInput ? this._datepickerInput.getThemePalette() : undefined);\n }\n set color(value: ThemePalette) {\n this._color = value;\n }\n _color: ThemePalette;\n\n /**\n * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather\n * than a popup and elements have more padding to allow for bigger touch targets.\n */\n @Input()\n get touchUi(): boolean { return this._touchUi; }\n set touchUi(value: boolean) {\n this._touchUi = coerceBooleanProperty(value);\n }\n private _touchUi = false;\n\n /** Whether the datepicker pop-up should be disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined && this._datepickerInput ?\n this._datepickerInput.disabled : !!this._disabled;\n }\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this._stateChanges.next(undefined);\n }\n }\n private _disabled: boolean;\n\n /** Preferred position of the datepicker in the X axis. */\n @Input()\n xPosition: DatepickerDropdownPositionX = 'start';\n\n /** Preferred position of the datepicker in the Y axis. */\n @Input()\n yPosition: DatepickerDropdownPositionY = 'below';\n\n /**\n * Emits selected year in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits selected month in year view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Classes to be passed to the date picker panel. Supports the same syntax as `ngClass`. */\n @Input() panelClass: string | string[];\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: MatCalendarCellClassFunction<D>;\n\n /** Emits when the datepicker has been opened. */\n @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits when the datepicker has been closed. */\n @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n\n /** Whether the calendar is open. */\n @Input()\n get opened(): boolean { return this._opened; }\n set opened(value: boolean) {\n coerceBooleanProperty(value) ? this.open() : this.close();\n }\n private _opened = false;\n\n /** The id for the datepicker calendar. */\n id: string = `mat-datepicker-${datepickerUid++}`;\n\n /** The minimum selectable date. */\n _getMinDate(): D | null {\n return this._datepickerInput && this._datepickerInput.min;\n }\n\n /** The maximum selectable date. */\n _getMaxDate(): D | null {\n return this._datepickerInput && this._datepickerInput.max;\n }\n\n _getDateFilter(): DateFilterFn<D> {\n return this._datepickerInput && this._datepickerInput.dateFilter;\n }\n\n /** A reference to the overlay when the calendar is opened as a popup. */\n private _popupRef: OverlayRef | null;\n\n /** A reference to the dialog when the calendar is opened as a dialog. */\n private _dialogRef: MatDialogRef<MatDatepickerContent<S, D>> | null;\n\n /** Reference to the component instantiated in popup mode. */\n private _popupComponentRef: ComponentRef<MatDatepickerContent<S, D>> | null;\n\n /** The element that was focused before the datepicker was opened. */\n private _focusedElementBeforeOpen: HTMLElement | null = null;\n\n /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */\n private _backdropHarnessClass = `${this.id}-backdrop`;\n\n /** The input element this datepicker is associated with. */\n _datepickerInput: C;\n\n /** Emits when the datepicker's state changes. */\n readonly _stateChanges = new Subject<void>();\n\n constructor(\n private _dialog: MatDialog,\n private _overlay: Overlay,\n private _ngZone: NgZone,\n private _viewContainerRef: ViewContainerRef,\n @Inject(MAT_DATEPICKER_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private _dateAdapter: DateAdapter<D>,\n @Optional() private _dir: Directionality,\n @Optional() @Inject(DOCUMENT) private _document: any,\n private _model: MatDateSelectionModel<S, D>\n ) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n this._scrollStrategy = scrollStrategy;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const positionChange = changes['xPosition'] || changes['yPosition'];\n\n if (positionChange && !positionChange.firstChange && this._popupRef) {\n this._setConnectedPositions(this._popupRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy);\n\n if (this.opened) {\n this._popupRef.updatePosition();\n }\n }\n\n this._stateChanges.next(undefined);\n }\n\n ngOnDestroy() {\n this._destroyPopup();\n this.close();\n this._inputStateChanges.unsubscribe();\n this._stateChanges.complete();\n }\n\n /** Selects the given date */\n select(date: D): void {\n this._model.add(date);\n }\n\n /** Emits the selected year in multiyear view */\n _selectYear(normalizedYear: D): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n /** Emits selected month in year view */\n _selectMonth(normalizedMonth: D): void {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /**\n * Register an input with this datepicker.\n * @param input The datepicker input to register with this datepicker.\n * @returns Selection model that the input should hook itself up to.\n */\n _registerInput(input: C): MatDateSelectionModel<S, D> {\n if (this._datepickerInput) {\n throw Error('A MatDatepicker can only be associated with a single input.');\n }\n this._inputStateChanges.unsubscribe();\n this._datepickerInput = input;\n this._inputStateChanges = input.stateChanges.subscribe(() => this._stateChanges.next(undefined));\n return this._model;\n }\n\n /** Open the calendar. */\n open(): void {\n if (this._opened || this.disabled) {\n return;\n }\n if (!this._datepickerInput) {\n throw Error('Attempted to open an MatDatepicker with no associated input.');\n }\n if (this._document) {\n this._focusedElementBeforeOpen = this._document.activeElement;\n }\n\n this.touchUi ? this._openAsDialog() : this._openAsPopup();\n this._opened = true;\n this.openedStream.emit();\n }\n\n /** Close the calendar. */\n close(): void {\n if (!this._opened) {\n return;\n }\n if (this._popupComponentRef && this._popupRef) {\n const instance = this._popupComponentRef.instance;\n instance._startExitAnimation();\n instance._animationDone.pipe(take(1)).subscribe(() => this._destroyPopup());\n }\n if (this._dialogRef) {\n this._dialogRef.close();\n this._dialogRef = null;\n }\n\n const completeClose = () => {\n // The `_opened` could've been reset already if\n // we got two events in quick succession.\n if (this._opened) {\n this._opened = false;\n this.closedStream.emit();\n this._focusedElementBeforeOpen = null;\n }\n };\n\n if (this._focusedElementBeforeOpen &&\n typeof this._focusedElementBeforeOpen.focus === 'function') {\n // Because IE moves focus asynchronously, we can't count on it being restored before we've\n // marked the datepicker as closed. If the event fires out of sequence and the element that\n // we're refocusing opens the datepicker on focus, the user could be stuck with not being\n // able to close the calendar at all. We work around it by making the logic, that marks\n // the datepicker as closed, async as well.\n this._focusedElementBeforeOpen.focus();\n setTimeout(completeClose);\n } else {\n completeClose();\n }\n }\n\n /** Open the calendar as a dialog. */\n private _openAsDialog(): void {\n // Usually this would be handled by `open` which ensures that we can only have one overlay\n // open at a time, however since we reset the variables in async handlers some overlays\n // may slip through if the user opens and closes multiple times in quick succession (e.g.\n // by holding down the enter key).\n if (this._dialogRef) {\n this._dialogRef.close();\n }\n\n this._dialogRef = this._dialog.open<MatDatepickerContent<S, D>>(MatDatepickerContent, {\n direction: this._dir ? this._dir.value : 'ltr',\n viewContainerRef: this._viewContainerRef,\n panelClass: 'mat-datepicker-dialog',\n\n // These values are all the same as the defaults, but we set them explicitly so that the\n // datepicker dialog behaves consistently even if the user changed the defaults.\n hasBackdrop: true,\n disableClose: false,\n backdropClass: `cdk-overlay-dark-backdrop, ${this._backdropHarnessClass}`,\n width: '',\n height: '',\n minWidth: '',\n minHeight: '',\n maxWidth: '80vw',\n maxHeight: '',\n position: {},\n autoFocus: true,\n\n // `MatDialog` has focus restoration built in, however we want to disable it since the\n // datepicker also has focus restoration for dropdown mode. We want to do this, in order\n // to ensure that the timing is consistent between dropdown and dialog modes since `MatDialog`\n // restores focus when the animation is finished, but the datepicker does it immediately.\n // Furthermore, this avoids any conflicts where the datepicker consumer might move focus\n // inside the `closed` event which is dispatched immediately.\n restoreFocus: false\n });\n\n this._dialogRef.afterClosed().subscribe(() => this.close());\n this._forwardContentValues(this._dialogRef.componentInstance);\n }\n\n /** Open the calendar as a popup. */\n private _openAsPopup(): void {\n const portal = new ComponentPortal<MatDatepickerContent<S, D>>(MatDatepickerContent, this._viewContainerRef);\n\n this._destroyPopup();\n this._createPopup();\n this._popupComponentRef = this._popupRef!.attach(portal);\n this._forwardContentValues(this._popupComponentRef.instance);\n\n // Update the position once the calendar has rendered.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n this._popupRef!.updatePosition();\n });\n }\n\n /** Forwards relevant values from the datepicker to the datepicker content inside the overlay. */\n protected _forwardContentValues(instance: MatDatepickerContent<S, D>) {\n instance.datepicker = this;\n instance.color = this.color;\n }\n\n /** Create the popup. */\n private _createPopup(): void {\n const positionStrategy = this._overlay.position()\n .flexibleConnectedTo(this._datepickerInput.getConnectedOverlayOrigin())\n .withTransformOriginOn('.mat-datepicker-content')\n .withFlexibleDimensions(false)\n .withViewportMargin(8)\n .withLockedPosition();\n\n const overlayConfig = new OverlayConfig({\n positionStrategy: this._setConnectedPositions(positionStrategy),\n hasBackdrop: true,\n backdropClass: ['mat-overlay-transparent-backdrop', this._backdropHarnessClass],\n direction: this._dir,\n scrollStrategy: this._scrollStrategy(),\n panelClass: 'mat-datepicker-popup',\n });\n\n this._popupRef = this._overlay.create(overlayConfig);\n this._popupRef.overlayElement.setAttribute('role', 'dialog');\n\n merge(\n this._popupRef.backdropClick(),\n this._popupRef.detachments(),\n this._popupRef.keydownEvents().pipe(filter(event => {\n // Closing on alt + up is only valid when there's an input associated with the datepicker.\n return event.keyCode === ESCAPE || (this._datepickerInput && event.altKey && event.keyCode === UP_ARROW);\n }))\n ).subscribe(event => {\n if (event) {\n event.preventDefault();\n }\n\n this.close();\n });\n }\n\n /** Destroys the current popup overlay. */\n private _destroyPopup() {\n if (this._popupRef) {\n this._popupRef.dispose();\n this._popupRef = this._popupComponentRef = null;\n }\n }\n\n /** Sets the positions of the datepicker in dropdown mode based on the current configuration. */\n private _setConnectedPositions(strategy: FlexibleConnectedPositionStrategy) {\n const primaryX = this.xPosition === 'end' ? 'end' : 'start';\n const secondaryX = primaryX === 'start' ? 'end' : 'start';\n const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';\n const secondaryY = primaryY === 'top' ? 'bottom' : 'top';\n\n return strategy.withPositions([\n {\n originX: primaryX,\n originY: secondaryY,\n overlayX: primaryX,\n overlayY: primaryY\n },\n {\n originX: primaryX,\n originY: primaryY,\n overlayX: primaryX,\n overlayY: secondaryY\n },\n {\n originX: secondaryX,\n originY: secondaryY,\n overlayX: secondaryX,\n overlayY: primaryY\n },\n {\n originX: secondaryX,\n originY: primaryY,\n overlayX: secondaryX,\n overlayY: secondaryY\n }\n ]);\n }\n\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { MAT_CALENDAR_RANGE_STRATEGY_PROVIDER } from './date-range-selection-strategy';\nimport { DateRange, MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER } from './date-selection-model';\nimport { MatDatepickerBase, MatDatepickerContent, MatDatepickerControl } from './datepicker-base';\n\n/**\n * Input that can be associated with a date range picker.\n * @docs-private\n */\nexport interface MatDateRangePickerInput<D> extends MatDatepickerControl<D> {\n comparisonStart: D | null;\n comparisonEnd: D | null;\n}\n\n// TODO(mmalerba): We use a component instead of a directive here so the user can use implicit\n// template reference variables (e.g. #d vs #d=\"matDateRangePicker\"). We can change this to a\n// directive if angular adds support for `exportAs: '$implicit'` on directives.\n/** Component responsible for managing the date range picker popup/dialog. */\n@Component({\n selector: 'gipi-mat-date-range-picker',\n template: '',\n exportAs: 'gipiMatDateRangePicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER,\n MAT_CALENDAR_RANGE_STRATEGY_PROVIDER,\n ]\n})\nexport class MatDateRangePicker<D> extends MatDatepickerBase<MatDateRangePickerInput<D>, DateRange<D>, D> {\n\n protected _forwardContentValues(instance: MatDatepickerContent<DateRange<D>, D>) {\n super._forwardContentValues(instance);\n\n const input = this._datepickerInput;\n\n if (input) {\n instance.comparisonStart = input.comparisonStart;\n instance.comparisonEnd = input.comparisonEnd;\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER } from './date-selection-model';\nimport { MatDatepickerBase, MatDatepickerControl } from './datepicker-base';\n\n// TODO(mmalerba): We use a component instead of a directive here so the user can use implicit\n// template reference variables (e.g. #d vs #d=\"matDatepicker\"). We can change this to a directive\n// if angular adds support for `exportAs: '$implicit'` on directives.\n/** Component responsible for managing the datepicker popup/dialog. */\n@Component({\n selector: 'gipi-mat-datepicker',\n template: '',\n exportAs: 'gipiMatDatepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER]\n})\nexport class MatDatepicker<D> extends MatDatepickerBase<MatDatepickerControl<D>, D | null, D> { }\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directive, ElementRef, forwardRef, Inject, InjectionToken, Input, Optional, } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidatorFn, Validators, } from '@angular/forms';\nimport { MAT_DATE_FORMATS, MatDateFormats, ThemePalette, } from '@angular/material/core';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\nimport { MatDatepicker } from './datepicker';\nimport { MatDatepickerControl } from './datepicker-base';\nimport { DateFilterFn, MatDatepickerInputBase } from './datepicker-input-base';\nimport { DateAdapter } from './shared/adapter/date-adapter';\n\n/** @docs-private */\nexport const MAT_DATEPICKER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatDatepickerInput),\n multi: true\n};\n\n/** @docs-private */\nexport const MAT_DATEPICKER_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatDatepickerInput),\n multi: true\n};\n\nexport const MAT_FORM_FIELD = new InjectionToken<MatFormField>('MatFormField');\n\n/** Directive used to connect an input to a MatDatepicker. */\n@Directive({\n selector: 'input[gipiMatDatepicker]',\n providers: [\n MAT_DATEPICKER_VALUE_ACCESSOR,\n MAT_DATEPICKER_VALIDATORS,\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MatDatepickerInput },\n ],\n host: {\n 'class': 'mat-datepicker-input',\n '[attr.aria-haspopup]': '_datepicker ? \"dialog\" : null',\n '[attr.aria-owns]': '(_datepicker?.opened && _datepicker.id) || null',\n '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',\n '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',\n // Used by the test harness to tie this input to its calendar. We can't depend on\n // `aria-owns` for this, because it's only defined while the calendar is open.\n '[attr.data-mat-calendar]': '_datepicker ? _datepicker.id : null',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event.target.value)',\n '(change)': '_onChange()',\n '(blur)': '_onBlur()',\n '(keydown)': '_onKeydown($event)',\n },\n exportAs: 'gipiMatDatepickerInput',\n})\nexport class MatDatepickerInput<D> extends MatDatepickerInputBase<D | null, D> implements MatDatepickerControl<D | null> {\n\n /** The datepicker that this input is associated with. */\n @Input()\n set gipiMatDatepicker(datepicker: MatDatepicker<D>) {\n if (datepicker) {\n this._datepicker = datepicker;\n this._registerModel(datepicker._registerInput(this));\n }\n }\n _datepicker: MatDatepicker<D>;\n\n /** The minimum valid date. */\n @Input()\n get min(): D | null { return this._min; }\n set min(value: D | null) {\n const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n\n if (!this._dateAdapter.sameDate(validValue, this._min)) {\n this._min = validValue;\n this._validatorOnChange();\n }\n }\n private _min: D | null;\n\n /** The maximum valid date. */\n @Input()\n get max(): D | null { return this._max; }\n set max(value: D | null) {\n const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n\n if (!this._dateAdapter.sameDate(validValue, this._max)) {\n this._max = validValue;\n this._validatorOnChange();\n }\n }\n private _max: D | null;\n\n /** Function that can be used to filter out dates within the datepicker. */\n @Input('gipiMatDatepickerFilter')\n get dateFilter() { return this._dateFilter; }\n set dateFilter(value: DateFilterFn<D | null>) {\n this._dateFilter = value;\n this._validatorOnChange();\n }\n private _dateFilter: DateFilterFn<D | null>;\n\n /** The combined form control validator for this input. */\n protected _validator: ValidatorFn | null;\n\n constructor(\n elementRef: ElementRef<HTMLInputElement>,\n @Optional() dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) dateFormats: MatDateFormats,\n @Optional() @Inject(MAT_FORM_FIELD) private _formField: MatFormField\n ) {\n super(elementRef, dateAdapter, dateFormats);\n this._validator = Validators.compose(super._getValidators());\n }\n\n /**\n * Gets the element that the datepicker popup should be connected to.\n * @return The element to connect the popup to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n }\n\n /** Returns the palette used by the input's form field, if any. */\n getThemePalette(): ThemePalette {\n return this._formField ? this._formField.color : undefined;\n }\n\n /** Gets the value at which the calendar should start. */\n getStartValue(): D | null {\n return this.value;\n }\n\n /**\n * @deprecated\n * @breaking-change 8.0.0 Use `getConnectedOverlayOrigin` instead\n */\n getPopupConnectionElementRef(): ElementRef {\n return this.getConnectedOverlayOrigin();\n }\n\n /** Opens the associated datepicker. */\n protected _openPopup(): void {\n if (this._datepicker) {\n this._datepicker.open();\n }\n }\n\n protected _getValueFromModel(modelValue: D | null): D | null {\n return modelValue;\n }\n\n protected _assignValueToModel(value: D | null): void {\n if (this._model) {\n this._model.updateSelection(value, this);\n }\n }\n\n /** Gets the input's minimum date. */\n _getMinDate() {\n return this._min;\n }\n\n /** Gets the input's maximum date. */\n _getMaxDate() {\n return this._max;\n }\n\n /** Gets the input's date filtering function. */\n protected _getDateFilter() {\n return this._dateFilter;\n }\n\n protected _canEmitChangeEvent() {\n return true;\n }\n\n // Unnecessary when selecting a single date.\n protected _outsideValueChanged: undefined;\n\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, Inject, Input, OnChanges, OnDestroy, Optional, Self, SimpleChanges, ViewEncapsulation, } from '@angular/core';\nimport { ControlContainer, NgControl } from '@angular/forms';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatFormField, MatFormFieldControl } from '@angular/material/form-field';\nimport { Subject, merge } from 'rxjs';\nimport { MAT_DATE_RANGE_INPUT_PARENT, MatDateRangeInputParent, MatEndDate, MatStartDate, } from './date-range-input-parts';\nimport { MatDateRangePicker, MatDateRangePickerInput } from './date-range-picker';\nimport { DateRange, MatDateSelectionModel } from './date-selection-model';\nimport { MatDatepickerControl } from './datepicker-base';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { MAT_FORM_FIELD } from './datepicker-input';\nimport { DateFilterFn, dateInputsHaveChanged } from './datepicker-input-base';\nimport { DateAdapter } from './shared/adapter/date-adapter';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'gipi-mat-date-range-input',\n templateUrl: 'date-range-input.html',\n styleUrls: ['date-range-input.scss'],\n exportAs: 'gipiMatDateRangeInput',\n host: {\n 'class': 'mat-date-range-input',\n '[class.mat-date-range-input-hide-placeholders]': '_shouldHidePlaceholders()',\n '[class.mat-date-range-input-required]': 'required',\n '[attr.id]': 'null',\n 'role': 'group',\n '[attr.aria-labelledby]': '_getAriaLabelledby()',\n '[attr.aria-describedby]': '_ariaDescribedBy',\n // Used by the test harness to tie this input to its calendar. We can't depend on\n // `aria-owns` for this, because it's only defined while the calendar is open.\n '[attr.data-mat-calendar]': 'rangePicker ? rangePicker.id : null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: MatFormFieldControl, useExisting: MatDateRangeInput },\n { provide: MAT_DATE_RANGE_INPUT_PARENT, useExisting: MatDateRangeInput },\n ]\n})\nexport class MatDateRangeInput<D> implements MatFormFieldControl<DateRange<D>>, MatDatepickerControl<D>, MatDateRangeInputParent<D>, MatDateRangePickerInput<D>, AfterContentInit, OnChanges, OnDestroy {\n\n /** Current value of the range input. */\n get value() {\n return this._model ? this._model.selection : null;\n }\n\n /** Unique ID for the input. */\n id = `mat-date-range-input-${nextUniqueId++}`;\n\n /** Whether the control is focused. */\n focused = false;\n\n /** Whether the control's label should float. */\n get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n /** Name of the form control. */\n controlType = 'gipi-date-range-input';\n\n /**\n * Implemented as a part of `MatFormFieldControl`.\n * Set the placeholder attribute on `matStartDate` and `matEndDate`.\n * @docs-private\n */\n get placeholder() {\n const start = this._startInput ? this._startInput._getPlaceholder() : '';\n const end = this._endInput ? this._endInput._getPlaceholder() : '';\n return (start || end) ? `${start} ${this.separator} ${end}` : '';\n }\n\n /** The range picker that this input is associated with. */\n @Input()\n get rangePicker() { return this._rangePicker; }\n set rangePicker(rangePicker: MatDateRangePicker<D>) {\n if (rangePicker) {\n this._model = rangePicker._registerInput(this);\n this._rangePicker = rangePicker;\n this._registerModel(this._model!);\n }\n }\n private _rangePicker: MatDateRangePicker<D>;\n\n /** Whether the input is required. */\n @Input()\n get required(): boolean { return !!this._required; }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n private _required: boolean;\n\n /** Function that can be used to filter out dates within the date range picker. */\n @Input()\n get dateFilter() { return this._dateFilter; }\n set dateFilter(value: DateFilterFn<D>) {\n this._dateFilter = value;\n this._revalidate();\n }\n private _dateFilter: DateFilterFn<D>;\n\n /** The minimum valid date. */\n @Input()\n get min(): D | null { return this._min; }\n set min(value: D | null) {\n const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n\n if (!this._dateAdapter.sameDate(validValue, this._min)) {\n this._min = validValue;\n this._revalidate();\n }\n }\n private _min: D | null;\n\n /** The maximum valid date. */\n @Input()\n get max(): D | null { return this._max; }\n set max(value: D | null) {\n const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n\n if (!this._dateAdapter.sameDate(validValue, this._max)) {\n this._max = validValue;\n this._revalidate();\n }\n }\n private _max: D | null;\n\n /** Whether the input is disabled. */\n @Input()\n get disabled(): boolean {\n return (this._startInput && this._endInput) ?\n (this._startInput.disabled && this._endInput.disabled) :\n this._groupDisabled;\n }\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n\n if (newValue !== this._groupDisabled) {\n this._groupDisabled = newValue;\n this.stateChanges.next(undefined);\n }\n }\n _groupDisabled = false;\n\n /** Whether the input is in an error state. */\n get errorState(): boolean {\n if (this._startInput && this._endInput) {\n return this._startInput.errorState || this._endInput.errorState;\n }\n\n return false;\n }\n\n /** Whether the datepicker input is empty. */\n get empty(): boolean {\n const startEmpty = this._startInput ? this._startInput.isEmpty() : false;\n const endEmpty = this._endInput ? this._endInput.isEmpty() : false;\n return startEmpty && endEmpty;\n }\n\n /** Value for the `aria-describedby` attribute of the inputs. */\n _ariaDescribedBy: string | null = null;\n\n /** Date selection model currently registered with the input. */\n private _model: MatDateSelectionModel<DateRange<D>> | undefined;\n\n /** Separator text to be shown between the inputs. */\n @Input() separator = '–';\n\n /** Start of the comparison range that should be shown in the calendar. */\n @Input() comparisonStart: D | null = null;\n\n /** End of the comparison range that should be shown in the calendar. */\n @Input() comparisonEnd: D | null = null;\n\n @ContentChild(MatStartDate, { static: true }) _startInput: MatStartDate<D>;\n @ContentChild(MatEndDate, { static: true }) _endInput: MatEndDate<D>;\n\n /**\n * Implemented as a part of `MatFormFieldControl`.\n * TODO(crisbeto): change type to `AbstractControlDirective` after #18206 lands.\n * @docs-private\n */\n ngControl: NgControl | null;\n\n /** Emits when the input's state has changed. */\n stateChanges = new Subject<void>();\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _elementRef: ElementRef<HTMLElement>,\n @Optional() @Self() control: ControlContainer,\n @Optional() private _dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_FORM_FIELD) private _formField?: MatFormField\n ) {\n\n if (!_dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n // TODO(crisbeto): remove `as any` after #18206 lands.\n this.ngControl = control as any;\n }\n\n /**\n * Implemented as a part of `MatFormFieldControl`.\n * @docs-private\n */\n setDescribedByIds(ids: string[]): void {\n this._ariaDescribedBy = ids.length ? ids.join(' ') : null;\n }\n\n /**\n * Implemented as a part of `MatFormFieldControl`.\n * @docs-private\n */\n onContainerClick(): void {\n if (!this.focused && !this.disabled) {\n if (!this._model || !this._model.selection.start) {\n this._startInput.focus();\n } else {\n this._endInput.focus();\n }\n }\n }\n\n ngAfterContentInit() {\n if (!this._startInput) {\n throw Error('mat-date-range-input must contain a matStartDate input');\n }\n\n if (!this._endInput) {\n throw Error('mat-date-range-input must contain a matEndDate input');\n }\n\n if (this._model) {\n this._registerModel(this._model);\n }\n\n // We don't need to unsubscribe from this, because we\n // know that the input streams will be completed on destroy.\n merge(this._startInput.stateChanges, this._endInput.stateChanges).subscribe(() => {\n this.stateChanges.next(undefined);\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (dateInputsHaveChanged(changes, this._dateAdapter)) {\n this.stateChanges.next(undefined);\n }\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n }\n\n /** Gets the date at which the calendar should start. */\n getStartValue(): D | null {\n return this.value ? this.value.start : null;\n }\n\n /** Gets the input's theme palette. */\n getThemePalette(): ThemePalette {\n return this._formField ? this._formField.color : undefined;\n }\n\n /** Gets the element to which the calendar overlay should be attached. */\n getConnectedOverlayOrigin(): ElementRef {\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n }\n\n /** Gets the value that is used to mirror the state input. */\n _getInputMirrorValue() {\n return this._startInput ? this._startInput.getMirrorValue() : '';\n }\n\n /** Whether the input placeholders should be hidden. */\n _shouldHidePlaceholders() {\n return this._startInput ? !this._startInput.isEmpty() : false;\n }\n\n /** Handles the value in one of the child inputs changing. */\n _handleChildValueChange() {\n this.stateChanges.next(undefined);\n this._changeDetectorRef.markForCheck();\n }\n\n /** Opens the date range picker associated with the input. */\n _openDatepicker() {\n if (this._rangePicker) {\n this._rangePicker.open();\n }\n }\n\n /** Whether the separate text should be hidden. */\n _shouldHideSeparator() {\n return (!this._formField || this._formField._hideControlPlaceholder()) && this.empty;\n }\n\n /** Gets the value for the `aria-labelledby` attribute of the inputs. */\n _getAriaLabelledby() {\n const formField = this._formField;\n return formField && formField._hasFloatingLabel() ? formField._labelId : null;\n }\n\n /** Re-runs the validators on the start/end inputs. */\n private _revalidate() {\n if (this._startInput) {\n this._startInput._validatorOnChange();\n }\n\n if (this._endInput) {\n this._endInput._validatorOnChange();\n }\n }\n\n /** Registers the current date selection model with the start/end inputs. */\n private _registerModel(model: MatDateSelectionModel<DateRange<D>>) {\n if (this._startInput) {\n this._startInput._registerModel(model);\n }\n\n if (this._endInput) {\n this._endInput._registerModel(model);\n }\n }\n\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { AfterContentInit, Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, Directive, Input, OnChanges, OnDestroy, SimpleChanges, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { merge, of as observableOf, Subscription } from 'rxjs';\nimport { MatDatepickerBase, MatDatepickerControl } from './datepicker-base';\nimport { MatDatepickerIntl } from './datepicker-intl';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/** Can be used to override the icon of a `matDatepickerToggle`. */\n@Directive({ selector: '[gipiDatepickerToggleIcon]' })\nexport class MatDatepickerToggleIcon { }\n\n@Component({\n selector: 'gipi-mat-datepicker-toggle',\n templateUrl: 'datepicker-toggle.html',\n styleUrls: ['datepicker-toggle.scss'],\n host: {\n 'class': 'mat-datepicker-toggle',\n // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the\n // consumer may have provided, while still being able to receive focus.\n '[attr.tabindex]': 'disabled ? null : -1',\n '[class.mat-datepicker-toggle-active]': 'datepicker && datepicker.opened',\n '[class.mat-accent]': 'datepicker && datepicker.color === \"accent\"',\n '[class.mat-warn]': 'datepicker && datepicker.color === \"warn\"',\n // Used by the test harness to tie this toggle to its datepicker.\n '[attr.data-mat-calendar]': 'datepicker ? datepicker.id : null',\n '(focus)': '_button.focus()',\n },\n exportAs: 'gipiMatDatepickerToggle',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatDatepickerToggle<D> implements AfterContentInit, OnChanges, OnDestroy {\n\n private _stateChanges = Subscription.EMPTY;\n\n /** Datepicker instance that the button will toggle. */\n @Input('for') datepicker: MatDatepickerBase<MatDatepickerControl<any>, D>;\n\n /** Tabindex for the toggle. */\n @Input() tabIndex: number | null;\n\n /** Whether the toggle button is disabled. */\n @Input()\n get disabled(): boolean {\n if (this._disabled === undefined && this.datepicker) {\n return this.datepicker.disabled;\n }\n\n return !!this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled: boolean;\n\n /** Whether ripples on the toggle should be disabled. */\n @Input() disableRipple: boolean;\n\n /** Custom icon set by the consumer. */\n @ContentChild(MatDatepickerToggleIcon, { static: true }) _customIcon: MatDatepickerToggleIcon;\n\n /** Underlying button element. */\n @ViewChild('button', { static: true }) _button: MatButton;\n\n constructor(\n public _intl: MatDatepickerIntl,\n private _changeDetectorRef: ChangeDetectorRef,\n @Attribute('tabindex') defaultTabIndex: string\n ) {\n\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex = (parsedTabIndex || parsedTabIndex === 0) ? parsedTabIndex : null;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['datepicker']) {\n this._watchStateChanges();\n }\n }\n\n ngOnDestroy() {\n this._stateChanges.unsubscribe();\n }\n\n ngAfterContentInit() {\n this._watchStateChanges();\n }\n\n _open(event: Event): void {\n if (this.datepicker && !this.disabled) {\n this.datepicker.open();\n event.stopPropagation();\n }\n }\n\n private _watchStateChanges() {\n const datepickerStateChanged = this.datepicker ? this.datepicker._stateChanges : observableOf();\n const inputStateChanged = this.datepicker && this.datepicker._datepickerInput ?\n this.datepicker._datepickerInput.stateChanges : observableOf();\n const datepickerToggled = this.datepicker ?\n merge(this.datepicker.openedStream, this.datepicker.closedStream) :\n observableOf();\n\n this._stateChanges.unsubscribe();\n this._stateChanges = merge(\n this._intl.changes,\n datepickerStateChanged,\n inputStateChanged,\n datepickerToggled\n ).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n\n\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = typeof Intl !== 'undefined' && (Intl as any).v8BreakIterator;\n} catch {\n hasV8BreakIterator = false;\n}\n\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\nexport class Platform {\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n isBrowser: boolean = this._platformId\n ? isPlatformBrowser(this._platformId)\n : typeof document === 'object' && !!document;\n\n /** Whether the current browser is Microsoft Edge. */\n EDGE: boolean = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n\n /** Whether the current rendering engine is Microsoft Trident. */\n TRIDENT: boolean = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n BLINK: boolean =\n this.isBrowser &&\n !!((window as any).chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' &&\n !this.EDGE &&\n !this.TRIDENT;\n\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n WEBKIT: boolean =\n this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) &&\n !this.BLINK &&\n !this.EDGE &&\n !this.TRIDENT;\n\n /** Whether the current platform is Apple iOS. */\n IOS: boolean =\n this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n FIREFOX: boolean = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n ANDROID: boolean = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n SAFARI: boolean = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n\n constructor(@Inject(PLATFORM_ID) private _platformId: Object) { }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';\nimport { DateAdapter, MAT_DATE_LOCALE } from './date-adapter';\nimport { Platform } from './platform';\n\n// TODO(mmalerba): Remove when we no longer support safari 9.\n/** Whether the browser supports the Intl API. */\nlet SUPPORTS_INTL_API: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n SUPPORTS_INTL_API = typeof Intl != 'undefined';\n} catch {\n SUPPORTS_INTL_API = false;\n}\n\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n 'long': [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September',\n 'October', 'November', 'December'\n ],\n 'short': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n 'narrow': ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, i => String(i + 1));\n\n\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n 'long': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n 'short': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n 'narrow': ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n\n /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n private readonly _clampDate: boolean;\n\n /**\n * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n * will produce `'8/13/1800'`.\n *\n * TODO(mmalerba): drop this variable. It's not being used in the code right now. We're now\n * getting the string representation of a Date object from its utc representation. We're keeping\n * it here for sometime, just for precaution, in case we decide to revert some of these changes\n * though.\n */\n useUtcForDisplay: boolean = true;\n\n constructor(\n @Optional() @Inject(MAT_DATE_LOCALE) matDateLocale: string,\n @Inject(PLATFORM_ID) private _platformId: Object\n ) {\n super();\n super.setLocale(matDateLocale);\n const platform: Platform = new Platform(this._platformId);\n\n if (platform) {\n // IE does its own time zone correction, so we disable this on IE.\n this.useUtcForDisplay = !platform.TRIDENT;\n this._clampDate = platform.TRIDENT || platform.EDGE;\n } else {\n this.useUtcForDisplay = true;\n this._clampDate = false;\n }\n }\n\n getYear(date: Date): number {\n return date.getFullYear();\n }\n\n getMonth(date: Date): number {\n return date.getMonth();\n }\n\n getDate(date: Date): number {\n return date.getDate();\n }\n\n getDayOfWeek(date: Date): number {\n return date.getDay();\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, { month: style, timeZone: 'utc' });\n return range(12, i => this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\n }\n return DEFAULT_MONTH_NAMES[style];\n }\n\n getDateNames(): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, { day: 'numeric', timeZone: 'utc' });\n return range(31, i => this._stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))));\n }\n return DEFAULT_DATE_NAMES;\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, { weekday: style, timeZone: 'utc' });\n return range(7, i => this._stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))));\n }\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\n }\n\n getYearName(date: Date): string {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, { year: 'numeric', timeZone: 'utc' });\n return this._stripDirectionalityCharacters(this._format(dtf, date));\n }\n return String(this.getYear(date));\n }\n\n getFirstDayOfWeek(): number {\n // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\n return 0;\n }\n\n getNumDaysInMonth(date: Date): number {\n return this.getDate(this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0));\n }\n\n clone(date: Date): Date {\n return new Date(date.getTime());\n }\n\n createDate(year: number, month: number, date: number): Date {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n\n let result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n\n return result;\n }\n\n today(): Date {\n return new Date();\n }\n\n parse(value: any): Date | null {\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n // parameters.\n if (typeof value == 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n\n format(date: Date, displayFormat: Object): string {\n if (!this.isValid(date)) {\n throw Error('NativeDateAdapter: Cannot format invalid date.');\n }\n\n if (SUPPORTS_INTL_API) {\n // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n // if we attempt to format a date whose year is less than 1 or greater than 9999.\n if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\n date = this.clone(date);\n date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n }\n\n displayFormat = { ...displayFormat, timeZone: 'utc' };\n\n const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n return this._stripDirectionalityCharacters(this._format(dtf, date));\n }\n return this._stripDirectionalityCharacters(date.toDateString());\n }\n\n addCalendarYears(date: Date, years: number): Date {\n return this.addCalendarMonths(date, years * 12);\n }\n\n addCalendarMonths(date: Date, months: number): Date {\n let newDate = this._createDateWithOverflow(\n this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) != ((this.getMonth(date) + months) % 12 + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n }\n\n return newDate;\n }\n\n addCalendarDays(date: Date, days: number): Date {\n return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n }\n\n toIso8601(date: Date): string {\n return [\n date.getUTCFullYear(),\n this._2digit(date.getUTCMonth() + 1),\n this._2digit(date.getUTCDate())\n ].join('-');\n }\n\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n deserialize(value: any): Date | null {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n let date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any) {\n return obj instanceof Date;\n }\n\n isValid(date: Date) {\n return !isNaN(date.getTime());\n }\n\n invalid(): Date {\n return new Date(NaN);\n }\n\n /** Creates a date but allows the month and date to overflow. */\n private _createDateWithOverflow(year: number, month: number, date: number) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const d = new Date();\n d.setFullYear(year, month, date);\n d.setHours(0, 0, 0, 0);\n return d;\n }\n\n /**\n * Pads a number to make it two digits.\n * @param n The number to pad.\n * @returns The padded number.\n */\n private _2digit(n: number) {\n return ('00' + n).slice(-2);\n }\n\n /**\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n * @param str The string to strip direction characters from.\n * @returns The stripped string.\n */\n private _stripDirectionalityCharacters(str: string) {\n return str.replace(/[\\u200e\\u200f]/g, '');\n }\n\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n * @param dtf Intl.DateTimeFormat object, containg the desired string format. It must have\n * timeZone set to 'utc' to work fine.\n * @param date Date from which we want to get the string representation according to dtf\n * @returns A Date object with its UTC representation based on the passed in date info\n */\n private _format(dtf: Intl.DateTimeFormat, date: Date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n const d = new Date();\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return dtf.format(d);\n }\n}\n","// tslint:disable\n/** @dynamic */\nexport class BrowserUtil {\n\n public static getBrowser(): 'MSIE' | 'Firefox' | 'Safari' | 'Chrome' | 'Opera' | string {\n let browsers: string[] = ['MSIE', 'Firefox', 'Safari', 'Chrome', 'Opera'];\n let userAgent: string = navigator.userAgent;\n let indexBrowser: number = browsers.length - 1;\n\n for (indexBrowser; indexBrowser > -1 && userAgent.indexOf(browsers[indexBrowser]) === -1; indexBrowser--);\n\n return browsers[indexBrowser];\n }\n\n}\n","import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, Component, ElementRef, forwardRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BrowserUtil } from './../../../../core/utils/browser.util';\nimport { DateUtil } from './../../../../core/utils/date.util';\n\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\nimport { DateRange } from '../mat-datepicker/date-selection-model';\nimport { DateFilterFn } from '../mat-datepicker/datepicker-input-base';\nimport { MatDatepickerToggle } from '../mat-datepicker/datepicker-toggle';\nimport { PresetRanges } from './shared/preset-range/preset-range.component';\n\nexport let nextUniqueId = 0;\n\n@Component({\n selector: 'gipi-date-range-picker',\n exportAs: 'gipiDateRangePicker',\n templateUrl: './date-range-picker.component.html',\n styleUrls: ['./date-range-picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof DateRangePickerComponent => DateRangePickerComponent),\n multi: true\n },\n ],\n host: {\n 'class': 'gipi-date-range-picker',\n }\n})\nexport class DateRangePickerComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild(MatDatepickerToggle, { static: true }) matDatepickerToggleRef: MatDatepickerToggle<Date>;\n\n private _name: string = `gipi-date-range-${nextUniqueId++}`;\n\n private _startDate: Date;\n get startDate(): Date {\n return this._startDate;\n }\n set startDate(value: Date) {\n this._startDate = value;\n }\n\n private _endDate: Date;\n get endDate(): Date {\n return this._endDate;\n }\n set endDate(value: Date) {\n this._endDate = value;\n this.value = new DateRange(this.startDate, value);\n }\n\n @Input('idStart') idStartDate: string = `${this._name}-start`;\n @Input('idEnd') idEndDate: string = `${this._name}-end`;\n\n @Input('nameStart') nameStartDate: string = `${this._name}-start`;\n @Input('nameEnd') nameEndDate: string = `${this._name}-end`;\n\n @Input() label: string = '';\n\n @Input('placeholderStart') placeholderStartDate: string = 'Inicial';\n @Input('placeholderEnd') placeholderEndDate: string = 'Final';\n\n @Input() help: string = '';\n\n @Input() separator: string = '-';\n\n private _customRangeLabel: string = 'Personalizado';\n @Input() get customRangeLabel(): string {\n return this._customRangeLabel;\n }\n set customRangeLabel(value: string) {\n this._customRangeLabel = value;\n }\n\n private _ranges: PresetRanges<Date>;\n @Input() get ranges(): PresetRanges<Date> {\n return this._ranges;\n }\n set ranges(value: PresetRanges<Date>) {\n this._ranges = value;\n }\n\n private _maxRange: number = 368;\n @Input() get maxRange(): number {\n return this._maxRange;\n }\n set maxRange(value: number) {\n this._maxRange = coerceNumberProperty(value);\n }\n\n private _minDate: Date = new Date('01/01/2000');\n @Input('min') get minDate(): Date {\n return this._minDate;\n }\n set minDate(value: Date) {\n this._minDate = value;\n this._minDate.setHours(0, 0, 0, 0);\n }\n\n private _maxDate: Date;\n @Input('max') get maxDate(): Date {\n return this._maxDate;\n }\n set maxDate(value: Date) {\n this._maxDate = value;\n this._maxDate.setHours(0, 0, 0, 0);\n }\n\n private _required: boolean = false;\n @Input() get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _readonly: boolean = false;\n @Input() get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: boolean) {\n this._readonly = coerceBooleanProperty(value);\n }\n\n private _disabled: boolean = false;\n @Input() get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _dateFilter: DateFilterFn<Date> = null;\n @Input() get dateFilter(): DateFilterFn<Date> {\n return this._dateFilter;\n }\n set dateFilter(value: DateFilterFn<Date>) {\n this._dateFilter = value;\n }\n\n private _value: DateRange<Date>;\n @Input() get value(): DateRange<Date> {\n return this._value;\n }\n set value(value: DateRange<Date>) {\n let start: Date = null;\n let end: Date = null;\n if (value && value.start) {\n start = moment(value.start).startOf('day').toDate();\n }\n if (value && value.end) {\n end = moment(value.end).endOf('day').toDate();\n }\n\n if (start && end) {\n this._value = new DateRange(start, end);\n this.onChange(this._value);\n this.onTouched(this._value);\n }\n }\n\n onChange: Function = () => { };\n\n onTouched: Function = () => { };\n\n public get formattedValue(): string {\n return '';\n }\n\n constructor(\n public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n ) { }\n\n ngOnInit(): void { }\n\n ngOnDestroy(): void { }\n\n writeValue(value: DateRange<Date>): void {\n if (value && value.start) {\n this.startDate = moment(value.start).startOf('day').toDate();\n } else {\n this.startDate = null;\n }\n if (value && value.end) {\n this.endDate = moment(value.end).endOf('day').toDate();\n } else {\n this.endDate = null;\n }\n\n this._changeDetectorRef.detectChanges();\n }\n\n registerOnChange(fn: Function): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n public onInputContentClick(event: MouseEvent): void {\n if (!this.readonly || !this.matDatepickerToggleRef) {\n return;\n }\n\n this.matDatepickerToggleRef._open(event);\n }\n\n public generatedStartDate(valueDate: string, keyUp: boolean): void {\n if (!keyUp && BrowserUtil.getBrowser() === 'Firefox') {\n return;\n }\n\n let match = false;\n if (valueDate.includes('/') && (!keyUp || valueDate.length === 10)) {\n this.startDate = moment(valueDate, 'DD/MM/YYYY').toDate();\n match = true;\n } else if (!valueDate.includes('/') && (!keyUp || valueDate.length === 8)) {\n this.startDate = moment(valueDate, 'DDMMYYYY').toDate();\n match = true;\n }\n\n if (BrowserUtil.getBrowser() !== 'Firefox') {\n if (match && !DateUtil.isValid(this.startDate)) {\n this.startDate = undefined;\n }\n } else {\n if (match && !this.startDate) {\n this.startDate = undefined;\n }\n }\n }\n\n public generatedEndDate(valueDate: string, keyUp: boolean): void {\n if (!keyUp && BrowserUtil.getBrowser() === 'Firefox') {\n return;\n }\n\n let match = false;\n if (valueDate.includes('/') && (!keyUp || valueDate.length === 10)) {\n this.endDate = moment(valueDate, 'DD/MM/YYYY').toDate();\n match = true;\n } else if (!valueDate.includes('/') && (!keyUp || valueDate.length === 8)) {\n this.endDate = moment(valueDate, 'DDMMYYYY').toDate();\n match = true;\n }\n\n if (BrowserUtil.getBrowser() !== 'Firefox') {\n if (match && !DateUtil.isValid(this.endDate)) {\n this.endDate = undefined;\n }\n } else {\n if (match && !this.endDate) {\n this.endDate = undefined;\n }\n }\n }\n\n\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { MatDateRangeSelectionStrategy } from \"../../../mat-datepicker/date-range-selection-strategy\";\nimport { DateRange } from \"../../../mat-datepicker/date-selection-model\";\nimport { DateAdapter } from \"../../../mat-datepicker/shared/adapter/date-adapter\";\n\n@Injectable()\nexport class MaxRangeSelectionStrategy<D> implements MatDateRangeSelectionStrategy<D> {\n\n start: any;\n\n public delta: number;\n\n constructor(private _dateAdapter: DateAdapter<D>) { }\n\n selectionFinished(date: D, currentRange: DateRange<D>) {\n let { start, end } = currentRange;\n\n if (start == null) {\n start = date;\n } else if (end == null && date && this._dateAdapter.compareDate(date, start) >= 0) {\n const maxDate = this._dateAdapter.addCalendarDays(start, (this.delta - 1));\n end = (date > maxDate) ? maxDate : date;\n } else {\n start = date;\n end = null;\n }\n\n return new DateRange<D>(start, end);\n }\n\n createPreview(activeDate: D | null, currentRange: DateRange<D>): DateRange<D> {\n if (currentRange.start && !currentRange.end) {\n const maxDate = this._dateAdapter.addCalendarDays(currentRange.start, (this.delta - 1));\n const rangeEnd = activeDate ? (activeDate > maxDate) ? maxDate : activeDate : null;\n return new DateRange(currentRange.start, rangeEnd);\n }\n\n return new DateRange<D>(null, null);\n }\n\n}\n","import { Directive, Inject, Input } from '@angular/core';\n\nimport { MAT_DATE_RANGE_SELECTION_STRATEGY } from '../../../mat-datepicker/date-range-selection-strategy';\nimport { MaxRangeSelectionStrategy } from './max-range-selection-startegy';\n\n@Directive({\n selector: '[maxRange]',\n providers: [\n {\n provide: MAT_DATE_RANGE_SELECTION_STRATEGY,\n useClass: MaxRangeSelectionStrategy,\n }\n ]\n})\nexport class MaxRangeDirective {\n\n constructor(\n @Inject(MAT_DATE_RANGE_SELECTION_STRATEGY)\n private maxRangeStrategy: MaxRangeSelectionStrategy<any>\n ) { }\n\n @Input() set maxRange(value: number) {\n this.maxRangeStrategy.delta = +value || 365;\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatCalendar } from '../../../mat-datepicker/calendar';\nimport { MatDateRangeInput } from '../../../mat-datepicker/date-range-input';\nimport { MatDateRangePicker } from '../../../mat-datepicker/date-range-picker';\n\nexport interface PresetRanges<D> {\n [index: string]: [D, D];\n}\n\n@Component({\n selector: 'gipi-preset-range',\n templateUrl: './preset-range.component.html',\n styleUrls: ['./preset-range.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof PresetRangeComponent => PresetRangeComponent),\n multi: true\n },\n ],\n host: {\n 'class': 'gipi-preset-range',\n }\n})\nexport class PresetRangeComponent implements OnInit, OnDestroy {\n\n private readonly _destroy$: Subject<void> = new Subject();\n\n public rangesArray: string[] = [];\n public selectedRange: string = '';\n\n @Input() matDateRangeInput: MatDateRangeInput<Date> = null;\n @Input() matCalendar: MatCalendar<Date> = null;\n @Input() matDateRangePicker: MatDateRangePicker<Date> = null;\n\n private _customRangeLabel: string = 'Personalizado';\n @Input() get customRangeLabel(): string {\n return this._customRangeLabel;\n }\n set customRangeLabel(value: string) {\n this._customRangeLabel = value;\n }\n\n private _ranges: PresetRanges<moment.Moment>;\n @Input() get ranges(): PresetRanges<moment.Moment> {\n return this._ranges;\n }\n set ranges(value: PresetRanges<moment.Moment>) {\n this._ranges = value;\n this._renderRanges();\n }\n\n private _maxRange: number;\n @Input() get maxRange(): number {\n return this._maxRange;\n }\n set maxRange(value: number) {\n this._maxRange = value;\n }\n\n private get _startDate(): Date {\n const selectedRange: any = this.matCalendar.selected;\n return selectedRange.start;\n }\n\n private get _endDate(): Date {\n const selectedRange: any = this.matCalendar.selected;\n return selectedRange.end;\n }\n\n private get _minDate(): Date {\n return this.matCalendar.minDate;\n }\n\n private get _maxDate(): Date {\n return this.matCalendar.maxDate;\n }\n\n constructor(private _changeDetectorRef: ChangeDetectorRef,) { }\n\n ngOnInit(): void {\n this.matCalendar.stateChanges\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this._loadSelectedRange();\n this._changeDetectorRef.markForCheck();\n });\n\n this._loadSelectedRange();\n }\n\n ngOnDestroy(): void {\n this._destroy$.next();\n }\n\n private _renderRanges(): void {\n let start: moment.Moment;\n let end: moment.Moment;\n\n if (typeof this.ranges === 'object') {\n for (const range in this.ranges) {\n if (this.ranges[range]) {\n // Start date\n if (typeof this.ranges[range][0] === 'string') {\n start = moment(this.ranges[range][0]);\n } else {\n start = moment(this.ranges[range][0]);\n }\n\n if (typeof this.ranges[range][1] === 'string') {\n end = moment(this.ranges[range][1]);\n } else {\n end = moment(this.ranges[range][1]);\n }\n\n const minDate: moment.Moment = moment(this._minDate).clone();\n let maxDate: moment.Moment = moment(this._maxDate).clone();\n\n if (minDate.isValid() && start.isBefore(minDate)) {\n start = minDate.clone();\n }\n if (maxDate.isValid() && start.clone().add((this.maxRange - 1), 'days').isAfter(maxDate)) {\n maxDate = start;\n }\n if (maxDate.isValid() && end.isAfter(maxDate)) {\n end = maxDate.clone();\n }\n if (\n (minDate && end.isBefore(minDate, 'day')) ||\n (maxDate && start.isAfter(maxDate, 'day'))\n ) {\n continue;\n }\n\n this.ranges[range] = [start, end];\n }\n }\n\n for (const range in this.ranges) {\n if (this.ranges[range]) {\n this.rangesArray.push(range);\n }\n }\n }\n\n this._loadSelectedRange();\n }\n\n private _loadSelectedRange(): void {\n let customRange: boolean = true;\n let i: number = 0;\n if (this.rangesArray.length > 0) {\n const startDate: moment.Moment = moment(this._startDate).startOf('day');\n const endDate: moment.Moment = moment(this._endDate).startOf('day');\n\n for (const range in this.ranges) {\n if (this.ranges[range]) {\n const startRange: moment.Moment = (this.ranges[range][0]).startOf('day');\n const endRange: moment.Moment = (this.ranges[range][1]).startOf('day');\n if (startDate.isSame(startRange) && endDate.isSame(endRange)) {\n customRange = false;\n this.selectedRange = this.rangesArray[i];\n break;\n }\n\n i++;\n }\n }\n if (customRange) {\n this.selectedRange = this.customRangeLabel;\n }\n } else {\n this.selectedRange = this.customRangeLabel;\n }\n }\n\n private _calculateDateRange(range: string): Date[] {\n const minDate: moment.Moment = this._minDate ? moment(this._minDate) : null;\n const maxDate: moment.Moment = this._maxDate ? moment(this._maxDate) : null;\n const [start, end] = [this.ranges[range][0], this.ranges[range][1]];\n\n let startDateResp: moment.Moment = null;\n let endDateResp: moment.Moment = null;\n\n if (minDate && start.isBefore(minDate)) {\n startDateResp = minDate.clone();\n } else {\n startDateResp = start.clone();\n }\n if (maxDate && end.isAfter(maxDate)) {\n endDateResp = maxDate.clone();\n } else {\n endDateResp = end.clone();\n }\n\n if (range === this.customRangeLabel) {\n const selectedRange: any = this.matCalendar.selected;\n startDateResp = selectedRange.start;\n endDateResp = selectedRange.end;\n }\n\n return [this._getValidDateOrNull(startDateResp.toDate()), this._getValidDateOrNull(endDateResp.toDate())];\n }\n\n private _getValidDateOrNull(obj: unknown): Date | null {\n return this._isDateInstance(obj) && this._isValid(obj as Date) ? obj as Date : null;\n }\n\n private _isDateInstance(obj: any): obj is Date {\n return obj instanceof Date;\n }\n\n private _isValid(date: Date) {\n return !isNaN(date.getTime());\n }\n\n public clickRange(event: MouseEvent, range: string): void {\n if (range === this.customRangeLabel) {\n return;\n }\n\n const [start, end] = this._calculateDateRange(range);\n // (this.matCalendar.selected as any).start = start;\n // (this.matCalendar.selected as any).end = end;\n // this.matCalendar.updateTodaysDate();\n // this.matCalendar.activeDate = start;\n // this.matCalendar.activeDate = end;\n this.matDateRangePicker.select(start);\n this.matDateRangePicker.select(end);\n this.matDateRangePicker.close();\n }\n\n\n public isDisableRange(range: string): boolean {\n if (range === this._customRangeLabel) {\n return false;\n }\n\n const rangeMarkers = this._ranges[range];\n const areBothBefore = rangeMarkers.every((date) => {\n const minDate: moment.Moment = moment(this.matCalendar.minDate);\n if (!minDate) {\n return false;\n }\n return moment(date).isBefore(minDate);\n\n });\n\n const areBothAfter = rangeMarkers.every((date) => {\n const maxDate: moment.Moment = moment(this.matCalendar.maxDate);\n if (!maxDate) {\n return false;\n }\n return moment(date).isAfter(maxDate);\n });\n\n return areBothBefore || areBothAfter;\n }\n\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, Component, ElementRef, forwardRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\nimport { BrowserUtil } from '../../../../core/utils/browser.util';\nimport { DateUtil } from '../../../../core/utils/date.util';\nimport { DateFilterFn } from '../mat-datepicker/datepicker-input-base';\nimport { MatDatepickerToggle } from '../mat-datepicker/datepicker-toggle';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'gipi-datepicker',\n exportAs: 'gipiDatePicker',\n templateUrl: './datepicker.component.html',\n styleUrls: ['./datepicker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof DatepickerComponent => DatepickerComponent),\n multi: true\n },\n ],\n host: {\n 'class': 'gipi-datepicker',\n }\n})\nexport class DatepickerComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild(MatDatepickerToggle, { static: true }) matDatepickerToggleRef: MatDatepickerToggle<Date>;\n\n private _name: string = `gipi-date-range-${nextUniqueId++}`;\n\n @Input() id: string = `${this._name}-date`;\n\n @Input() name: string = `${this._name}-date`;\n\n @Input() label: string = '';\n\n @Input() placeholder: string = '__/__/____';\n\n @Input() help: string = '';\n\n private _minDate: Date = new Date('01/01/2000');\n @Input('min') get minDate(): Date {\n return this._minDate;\n }\n set minDate(value: Date) {\n this._minDate = value;\n this._minDate.setHours(0, 0, 0, 0);\n }\n\n private _maxDate: Date;\n @Input('max') get maxDate(): Date {\n return this._maxDate;\n }\n set maxDate(value: Date) {\n this._maxDate = value;\n this._maxDate.setHours(0, 0, 0, 0);\n }\n\n private _required: boolean = false;\n @Input() get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _readonly: boolean = false;\n @Input() get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: boolean) {\n this._readonly = coerceBooleanProperty(value);\n }\n\n private _disabled: boolean = false;\n @Input() get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _dateFilter: DateFilterFn<Date> = null;\n @Input() get dateFilter(): DateFilterFn<Date> {\n return this._dateFilter;\n }\n set dateFilter(value: DateFilterFn<Date>) {\n this._dateFilter = value;\n }\n\n private _value: Date;\n @Input() get value(): Date {\n return this._value;\n }\n set value(value: Date) {\n this._value = value;\n this.onChange(this._value);\n this.onTouched(this._value);\n }\n\n onChange: Function = () => { };\n\n onTouched: Function = () => { };\n\n public get formattedValue(): string {\n return '';\n }\n\n constructor(\n public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n ) { }\n\n ngOnInit(): void { }\n\n ngOnDestroy(): void { }\n\n writeValue(value: Date): void {\n this._value = value;\n this._changeDetectorRef.detectChanges();\n }\n\n registerOnChange(fn: Function): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n public onInputContentClick(event: MouseEvent): void {\n if (!this.readonly || !this.matDatepickerToggleRef) {\n return;\n }\n }\n\n public generatedDate(valueDate: string, keyUp: boolean): void {\n if (!keyUp && BrowserUtil.getBrowser() === 'Firefox') {\n return;\n }\n\n let match = false;\n if (valueDate.includes('/') && (!keyUp || valueDate.length === 10)) {\n this.value = moment(valueDate, 'DD/MM/YYYY').toDate();\n match = true;\n } else if (!valueDate.includes('/') && (!keyUp || valueDate.length === 8)) {\n this.value = moment(valueDate, 'DDMMYYYY').toDate();\n match = true;\n }\n\n if (BrowserUtil.getBrowser() !== 'Firefox') {\n if (match && !DateUtil.isValid(this.value)) {\n this.value = undefined;\n }\n } else {\n if (match && !this.value) {\n this.value = undefined;\n }\n }\n }\n\n public validateMinAndMaxDate(valueDate: string): void {\n const dateInput = moment(valueDate, 'DD/MM/YYYY').toDate();\n if (DateUtil.isLessThan(dateInput, this.minDate)) {\n this.value = undefined;\n } else if (this.maxDate) {\n this.value = (DateUtil.isGreaterThan(dateInput, this.maxDate) ? undefined : dateInput);\n }\n }\n\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatNativeDateModule } from '@angular/material';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { MatCalendar, MatCalendarHeader } from './mat-datepicker/calendar';\nimport { MatCalendarBody } from './mat-datepicker/calendar-body';\nimport { MatDateRangeInput } from './mat-datepicker/date-range-input';\nimport { MatEndDate, MatStartDate } from './mat-datepicker/date-range-input-parts';\nimport { MatDateRangePicker } from './mat-datepicker/date-range-picker';\nimport { MatDatepicker } from './mat-datepicker/datepicker';\nimport { MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, MatDatepickerContent, } from './mat-datepicker/datepicker-base';\nimport { MatDatepickerInput } from './mat-datepicker/datepicker-input';\nimport { MatDatepickerIntl } from './mat-datepicker/datepicker-intl';\nimport { MatDatepickerToggle, MatDatepickerToggleIcon } from './mat-datepicker/datepicker-toggle';\nimport { MatMonthView } from './mat-datepicker/month-view';\nimport { MatMultiYearView } from './mat-datepicker/multi-year-view';\nimport { NativeDateAdapter } from './mat-datepicker/shared/adapter/native-date-adapter';\nimport { MatYearView } from './mat-datepicker/year-view';\n\nimport { DateRangePickerComponent } from './date-range-picker/date-range-picker.component';\nimport { MaxRangeDirective } from './date-range-picker/shared/max-range/max-range.directive';\nimport { PresetRangeComponent } from './date-range-picker/shared/preset-range/preset-range.component';\nimport { DatepickerComponent } from './datepicker/datepicker.component';\nimport { DateAdapter, MAT_DATE_LOCALE } from './mat-datepicker/shared/adapter/date-adapter';\nimport { MAT_DATE_FORMATS } from './mat-datepicker/shared/adapter/date-formats';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n OverlayModule,\n A11yModule,\n PortalModule,\n FormsModule,\n ReactiveFormsModule,\n PlatformModule,\n MatNativeDateModule,\n ],\n exports: [\n ScrollingModule,\n FormsModule,\n ReactiveFormsModule,\n PlatformModule,\n\n MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatDatepickerToggleIcon,\n MatMonthView,\n MatYearView,\n MatMultiYearView,\n MatCalendarHeader,\n MatDateRangeInput,\n MatStartDate,\n MatEndDate,\n MatDateRangePicker,\n\n MaxRangeDirective,\n PresetRangeComponent,\n DateRangePickerComponent,\n DatepickerComponent,\n ],\n declarations: [\n MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatDatepickerToggleIcon,\n MatMonthView,\n MatYearView,\n MatMultiYearView,\n MatCalendarHeader,\n MatDateRangeInput,\n MatStartDate,\n MatEndDate,\n MatDateRangePicker,\n\n MaxRangeDirective,\n PresetRangeComponent,\n DateRangePickerComponent,\n DatepickerComponent,\n ],\n providers: [\n MatDatepickerIntl,\n MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n {\n provide: DateAdapter,\n useClass: NativeDateAdapter,\n deps: [MAT_DATE_LOCALE]\n },\n {\n provide: MAT_DATE_LOCALE,\n useValue: 'pt-BR',\n },\n {\n provide: MAT_DATE_FORMATS,\n useValue: {\n parse: {\n dateInput: 'DD/MM/YYYY',\n },\n display: {\n dateInput: 'DD/MM/YYYY',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n },\n },\n },\n ],\n entryComponents: [\n MatDatepickerContent,\n ]\n})\nexport class DatepickerModule { }\n","import { AfterViewInit, ChangeDetectorRef, Component, forwardRef, OnDestroy, OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\n\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\nimport { matDatepickerAnimations } from '@angular/material/datepicker';\nimport { ObjectUtil } from '../../../../core/utils/object.util';\nimport { MonthYearPickerComponent } from '../month-year-picker.component';\n@Component({\n selector: 'gipi-calendar-month-year',\n exportAs: 'gipiMonthYearPicker',\n templateUrl: './calendar-month-year.component.html',\n styleUrls: ['./calendar-month-year.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof CalendarMonthYearComponent => CalendarMonthYearComponent),\n multi: true\n },\n ],\n animations: [\n matDatepickerAnimations.transformPanel,\n matDatepickerAnimations.fadeInCalendar,\n ],\n host: {\n 'class': 'gipi-calendar-month-year',\n '[@transformPanel]': '_animationState',\n '(@transformPanel.done)': '_animationDone.next()',\n }\n})\nexport class CalendarMonthYearComponent implements AfterViewInit, OnInit, OnDestroy {\n\n private _subscriptions = new Subscription();\n\n _animationState: 'enter' | 'void' = 'enter';\n _animationDone: Subject<void> = new Subject<void>();\n\n monthYearPicker: MonthYearPickerComponent;\n\n isShowYears: boolean;\n years: Array<number> = [];\n months: Array<string> = [];\n\n _calendarView: 'both' | 'year' = 'both';\n _locale: string;\n _year: number;\n _month: number;\n // _enabledMonths: Array<number> = [];\n // _disabledMonths: Array<number> = [];\n // _enabledYears: Array<number> = [];\n // _disabledYears: Array<number> = [];\n _multiple: boolean;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef,) { }\n\n ngOnInit() {\n if (this._locale) {\n moment.locale(this._locale);\n } else {\n moment.locale('pt-br');\n }\n\n this.months = [...this.monthYearPicker.model.months];\n this._calendarView = this.monthYearPicker.calendarView;\n if (this._calendarView === 'year') {\n this.toggleShowYears();\n }\n\n this.monthYearPicker.onValueChange(this.monthYearPicker.model.selectedMonthIndex, this.monthYearPicker.model.selectedMonthYear);\n }\n\n ngAfterViewInit(): void {\n if (this._changeDetectorRef) {\n this._subscriptions.add(\n this.monthYearPicker._stateChanges.subscribe(() => {\n this._changeDetectorRef!.markForCheck();\n })\n );\n }\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._animationDone.complete();\n }\n\n public _startExitAnimation(): void {\n this._animationState = 'void';\n if (this._changeDetectorRef) {\n this._changeDetectorRef.markForCheck();\n }\n }\n\n public decrement(): void {\n this.monthYearPicker.model.decrementYear();\n if (this.isShowYears) {\n this._renderYears();\n }\n }\n\n public increment(): void {\n this.monthYearPicker.model.incrementYear();\n if (this.isShowYears) {\n this._renderYears();\n }\n }\n\n public selectMonth(index: number) {\n this.monthYearPicker.model.selectMonth(index);\n this.monthYearPicker.onValueChange(this.monthYearPicker.model.selectedMonthIndex, this.monthYearPicker.model.selectedMonthYear);\n this.monthYearPicker.close();\n }\n\n public isSelectedMonth(monthIndex: number) {\n return this.monthYearPicker.model.selectedMonthIndex == monthIndex && this.monthYearPicker.model.selectedMonthYear == this.monthYearPicker.model.selectedYearMoment.year();\n }\n\n public isCurrentMonth(monthIndex: number) {\n const currentMonth: number = moment().month();\n const currentYear: number = moment().year();\n return (monthIndex === currentMonth) && (this.monthYearPicker.model.selectedYearMoment.year() === currentYear);\n }\n\n public isDisabledMonth(index: number): boolean {\n let disabled = false;\n\n if (!ObjectUtil.isNull(this.monthYearPicker)) {\n const minMonth = !ObjectUtil.isNull(this.monthYearPicker.min) ? this.monthYearPicker.min.month : null;\n const maxMonth = !ObjectUtil.isNull(this.monthYearPicker.max) ? this.monthYearPicker.max.month : null;\n\n if (!ObjectUtil.isNull(minMonth) && !ObjectUtil.isNull(maxMonth)) {\n disabled = index < minMonth || index > maxMonth;\n } else if (!ObjectUtil.isNull(minMonth)) {\n disabled = index < minMonth;\n } else if (!ObjectUtil.isNull(maxMonth)) {\n disabled = index > maxMonth;\n }\n }\n\n return disabled;\n // let disabled = false;\n // if (this._enabledMonths && this._enabledMonths.length > 0) {\n // disabled = this._enabledMonths.indexOf(index) < 0;\n // }\n // if (this._disabledMonths && this._disabledMonths.length > 0) {\n // disabled = this._disabledMonths.indexOf(index) >= 0;\n // }\n // return disabled;\n }\n\n /** Years */\n public toggleShowYears() {\n this.isShowYears = !this.isShowYears;\n this._renderYears();\n }\n\n private _renderYears() {\n this.years = [];\n for (let i = 11; i > 0; i--) {\n this.years.push(this.monthYearPicker.model.selectedYearMoment.year() - i);\n }\n for (let i = 0; i <= 12; i++) {\n this.years.push(this.monthYearPicker.model.selectedYearMoment.year() + i);\n }\n }\n\n public get periodButtonLabel(): string {\n const formatYearRange = (start: number, end: number): string => {\n return `${start} \\u2013 ${end}`;\n };\n\n return this.isShowYears ? formatYearRange(this.years[0], this.years[this.years.length - 1]) : this.monthYearPicker.model.selectedYearText;\n }\n\n public selectYear(year: number) {\n if (this._calendarView === 'both') {\n this.isShowYears = false;\n }\n this.monthYearPicker.model.selectedYearMoment = moment().year(year);\n this.monthYearPicker.model.updateYearText();\n\n if (this._calendarView === 'year') {\n this.monthYearPicker.onValueChange(this.monthYearPicker.model.selectedMonthIndex, year);\n this.monthYearPicker.close();\n }\n }\n\n public isSelectedYear(year: number) {\n return this.monthYearPicker.model.selectedYearMoment.year() === year;\n }\n\n public isCurrentYear(year: number) {\n return moment().year() === year;\n }\n\n public isDisabledYear(index: number) {\n let disabled = false;\n\n if (!ObjectUtil.isNull(this.monthYearPicker)) {\n const minYear = !ObjectUtil.isNull(this.monthYearPicker.min) ? this.monthYearPicker.min.year : null;\n const maxYear = !ObjectUtil.isNull(this.monthYearPicker.max) ? this.monthYearPicker.max.year : null;\n\n if (!ObjectUtil.isNull(minYear) && !ObjectUtil.isNull(maxYear)) {\n disabled = index < minYear || index > maxYear;\n } else if (!ObjectUtil.isNull(minYear)) {\n disabled = index < minYear;\n } else if (!ObjectUtil.isNull(maxYear)) {\n disabled = index > maxYear;\n }\n }\n\n return disabled;\n\n // let disabled: boolean = false;\n // if (this._enabledYears && this._enabledYears.length > 0) {\n // disabled = this._enabledYears.findIndex(y => y === year) < 0;\n // }\n // if (this._disabledYears && this._disabledYears.length > 0) {\n // disabled = this._disabledYears.findIndex(y => y === year) >= 0;\n // }\n // return disabled;\n }\n\n}\n","import { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayConfig, OverlayRef, ScrollStrategy } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, ElementRef, EventEmitter, forwardRef, Inject, InjectionToken, Input, NgZone, OnChanges, OnDestroy, OnInit, Optional, Output, SimpleChanges, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { merge, Subject } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { ObjectUtil } from './../../../core/utils/object.util';\n\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\nimport { CalendarMonthYearComponent } from './calendar-month-year/calendar-month-year.component';\n\n\nexport const GIPI_MONTH_YEAR_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('gipi-month-year-scroll-strategy');\n\n/** @docs-private */\nexport function GIPI_MONTH_YEAR_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const GIPI_MONTH_YEAR_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: GIPI_MONTH_YEAR_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: GIPI_MONTH_YEAR_SCROLL_STRATEGY_FACTORY,\n};\n\n\nexport class MonthYear {\n private _month: number;\n private _year: number;\n\n public get date(): Date {\n const date = moment().day(1).month(this.month).year(this.year).startOf('day').toDate();\n return date;\n }\n\n public get month(): number {\n return this._month;\n }\n\n public get year(): number {\n return this._year;\n }\n\n constructor(month?: number, year?: number) {\n this._month = month;\n this._year = year;\n }\n}\n\nexport class MonthPickerModel {\n selectedYearMoment: moment.Moment;\n selectedYearText: string;\n\n selectedMonthMoment: moment.Moment;\n selectedMonthIndex: number;\n selectedMonthYear: number;\n\n months: Array<string> = [];\n\n constructor() {\n this.selectedYearMoment = moment();\n this.updateYearText();\n\n this.selectedMonthMoment = moment();\n\n this.months = moment.monthsShort().map(month => `${month}.`);\n\n this.selectedMonthIndex = this.selectedMonthMoment.month();\n this.selectedMonthYear = this.selectedYearMoment.year();\n }\n\n updateYearText() {\n this.selectedYearText = !ObjectUtil.isNull(moment) ? moment(this.selectedYearMoment).format('YYYY') : '';\n }\n\n selectMonth(index: number) {\n this.selectedMonthMoment = moment().month(index);\n this.selectedMonthIndex = this.selectedMonthMoment.month();\n this.selectedMonthYear = this.selectedYearMoment.year();\n }\n\n incrementYear() {\n this.selectedYearMoment = this.selectedYearMoment.add(1, \"year\")\n this.updateYearText();\n }\n\n decrementYear() {\n this.selectedYearMoment = this.selectedYearMoment.subtract(1, \"year\")\n this.updateYearText();\n }\n}\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'gipi-month-year-picker',\n templateUrl: './month-year-picker.component.html',\n styleUrls: ['./month-year-picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof MonthYearPickerComponent => MonthYearPickerComponent),\n multi: true\n },\n ],\n host: {\n 'class': 'gipi-month-year-picker',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MonthYearPickerComponent implements OnInit, OnChanges, OnDestroy, ControlValueAccessor {\n\n @ViewChild('inputMonthYearContent', { static: false, }) inputMonthYearContentRef: ElementRef;\n\n private _name: string = `gipi-date-range-${nextUniqueId++}`;\n\n private _scrollStrategy: () => ScrollStrategy;\n\n private _popupRef: OverlayRef | null;\n private _popupComponentRef: ComponentRef<CalendarMonthYearComponent> | null;\n private _focusedElementBeforeOpen: HTMLElement | null = null;\n private _backdropHarnessClass = `${this._name}-backdrop`;\n\n readonly _stateChanges: Subject<void> = new Subject();\n\n public valueLabel: string = '';\n\n public model: MonthPickerModel;\n\n @Input() id: string = `${this._name}-date`;\n\n @Input() name: string = `${this._name}-date`;\n\n @Input() label: string = '';\n\n @Input() placeholder: string = '';\n\n @Input() help: string = '';\n\n @Input() locale: string;\n @Input() year: number;\n @Input() month: number;\n\n // @Input() enabledMonths: Array<number> = [];\n // @Input() disabledMonths: Array<number> = [];\n\n // @Input() enabledYears: Array<number> = [];\n // @Input() disabledYears: Array<number> = [];\n\n @Input() multiple: boolean;\n\n @Input() xPosition: 'start' | 'end' = 'start';\n\n @Input() yPosition: 'above' | 'below' = 'below';\n\n @Input() calendarView: 'both' | 'year' = 'both';\n\n private _opened = false;\n @Input() get opened(): boolean {\n return this._opened;\n }\n set opened(value: boolean) {\n coerceBooleanProperty(value) ? this.open() : this.close();\n }\n\n private _required: boolean = false;\n @Input() get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _disabled: boolean = false;\n @Input() get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _min: MonthYear = null;\n @Input() get min(): MonthYear {\n return this._min;\n }\n set min(value: MonthYear) {\n this._min = value;\n }\n\n private _max: MonthYear = null;\n @Input() get max(): MonthYear {\n return this._max;\n }\n set max(value: MonthYear) {\n this._max = value;\n }\n\n private _value: MonthYear;\n @Input() get value(): MonthYear {\n return this._value;\n }\n set value(value: MonthYear) {\n let valueAux: MonthYear = value;\n if (!value) {\n valueAux = null;\n }\n if (valueAux) {\n switch (this.calendarView) {\n case 'both': {\n this.valueLabel = moment(valueAux.date).format('MM/YYYY');\n break;\n }\n case 'year': {\n this.valueLabel = moment(valueAux.date).format('YYYY');\n break;\n }\n default: {\n this.valueLabel = moment(valueAux.date).format('MM/YYYY');\n break;\n }\n }\n }\n\n this._value = valueAux;\n\n this.onChange(this._value);\n this.onTouched(this._value);\n }\n\n @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\n @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n onChange: Function = () => { };\n\n onTouched: Function = () => { };\n\n constructor(\n public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _overlay: Overlay,\n private _ngZone: NgZone,\n private _viewContainerRef: ViewContainerRef,\n @Inject(GIPI_MONTH_YEAR_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private _dir: Directionality,\n @Optional() @Inject(DOCUMENT) private _document: any,\n ) {\n this._scrollStrategy = scrollStrategy;\n }\n\n ngOnInit(): void {\n this.model = new MonthPickerModel();\n\n if (this.year) {\n this.model.selectedYearMoment = moment().year(this.year);\n }\n\n if (this.month) {\n this.model.selectedMonthIndex = this.month;\n this.model.selectedMonthMoment = moment().month(this.month);\n\n if (this.year) {\n this.model.selectedMonthYear = this.year;\n }\n }\n\n this.model.updateYearText();\n if (ObjectUtil.isNull(this.month) && ObjectUtil.isNull(this.year)) {\n this.value = null;\n this._changeDetectorRef.detectChanges();\n } else {\n this.onValueChange(this.model.selectedMonthIndex, this.model.selectedMonthYear);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const positionChange = changes['xPosition'] || changes['yPosition'];\n\n if (positionChange && !positionChange.firstChange && this._popupRef) {\n this._setConnectedPositions(this._popupRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy);\n\n if (this.opened) {\n this._popupRef.updatePosition();\n }\n }\n\n this._stateChanges.next(undefined);\n }\n\n ngOnDestroy(): void {\n this._destroyPopup();\n this.close();\n this._stateChanges.complete();\n }\n\n writeValue(value: MonthYear): void {\n this.value = value;\n this._changeDetectorRef.detectChanges();\n }\n\n registerOnChange(fn: Function): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n public onValueChange(month: number, year: number) {\n const monthYear: MonthYear = new MonthYear(month, year);\n this.value = monthYear;\n this._changeDetectorRef.detectChanges();\n }\n\n public open(): void {\n if (this._opened || this.disabled) {\n return;\n }\n if (!this.inputMonthYearContentRef) {\n throw Error('Attempted to open an MonthYearPicker with no associated input.');\n }\n if (this._document) {\n this._focusedElementBeforeOpen = this._document.activeElement;\n }\n\n this._openAsPopup();\n this._opened = true;\n this.openedStream.emit();\n }\n\n public close(): void {\n if (!this._opened) {\n return;\n }\n if (this._popupComponentRef && this._popupRef) {\n const instance = this._popupComponentRef.instance;\n instance._startExitAnimation();\n instance._animationDone.pipe(take(1)).subscribe(() => this._destroyPopup());\n }\n\n const completeClose = () => {\n if (this._opened) {\n this._opened = false;\n this.closedStream.emit();\n this._focusedElementBeforeOpen = null;\n }\n };\n\n if (this._focusedElementBeforeOpen &&\n typeof this._focusedElementBeforeOpen.focus === 'function') {\n this._focusedElementBeforeOpen.focus();\n setTimeout(completeClose);\n } else {\n completeClose();\n }\n }\n\n private _openAsPopup(): void {\n const portal: ComponentPortal<CalendarMonthYearComponent> = new ComponentPortal<CalendarMonthYearComponent>(CalendarMonthYearComponent, this._viewContainerRef);\n\n this._destroyPopup();\n this._createPopup();\n this._popupComponentRef = this._popupRef!.attach(portal);\n this._popupComponentRef.instance.monthYearPicker = this;\n\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n this._popupRef!.updatePosition();\n });\n }\n\n private _getConnectedOverlayOrigin(): ElementRef {\n return this.inputMonthYearContentRef ? this.inputMonthYearContentRef : this.elementRef;\n }\n\n private _createPopup(): void {\n const positionStrategy = this._overlay.position()\n .flexibleConnectedTo(this._getConnectedOverlayOrigin())\n .withTransformOriginOn('.mat-datepicker-content')\n .withFlexibleDimensions(false)\n .withViewportMargin(8)\n .withLockedPosition();\n\n const overlayConfig = new OverlayConfig({\n positionStrategy: this._setConnectedPositions(positionStrategy),\n hasBackdrop: true,\n backdropClass: ['mat-overlay-transparent-backdrop', this._backdropHarnessClass],\n direction: this._dir || 'ltr',\n scrollStrategy: this._scrollStrategy(),\n panelClass: 'mat-month-year-picker-popup',\n });\n\n this._popupRef = this._overlay.create(overlayConfig);\n this._popupRef.overlayElement.setAttribute('role', 'dialog');\n\n merge(\n this._popupRef.backdropClick(),\n this._popupRef.detachments(),\n this._popupRef.keydownEvents().pipe(filter(event => event.keyCode === ESCAPE || (this.inputMonthYearContentRef && event.altKey && event.keyCode === UP_ARROW)))\n ).subscribe(event => {\n if (event) {\n event.preventDefault();\n }\n\n this.close();\n });\n }\n\n private _destroyPopup() {\n if (this._popupRef) {\n this._popupRef.dispose();\n this._popupRef = this._popupComponentRef = null;\n }\n }\n\n private _setConnectedPositions(strategy: FlexibleConnectedPositionStrategy) {\n const primaryX = this.xPosition === 'end' ? 'end' : 'start';\n const secondaryX = primaryX === 'start' ? 'end' : 'start';\n const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';\n const secondaryY = primaryY === 'top' ? 'bottom' : 'top';\n\n return strategy.withPositions([\n {\n originX: primaryX,\n originY: secondaryY,\n overlayX: primaryX,\n overlayY: primaryY\n },\n {\n originX: primaryX,\n originY: primaryY,\n overlayX: primaryX,\n overlayY: secondaryY\n },\n {\n originX: secondaryX,\n originY: secondaryY,\n overlayX: secondaryX,\n overlayY: primaryY\n },\n {\n originX: secondaryX,\n originY: primaryY,\n overlayX: secondaryX,\n overlayY: secondaryY\n }\n ]);\n }\n\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { CalendarMonthYearComponent } from './calendar-month-year/calendar-month-year.component';\nimport { GIPI_MONTH_YEAR_SCROLL_STRATEGY_FACTORY_PROVIDER, MonthYearPickerComponent } from './month-year-picker.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n OverlayModule,\n A11yModule,\n PortalModule,\n MatIconModule,\n FormsModule,\n ReactiveFormsModule,\n ],\n exports: [\n ScrollingModule,\n CalendarMonthYearComponent,\n MonthYearPickerComponent,\n ],\n declarations: [\n CalendarMonthYearComponent,\n MonthYearPickerComponent,\n ],\n providers: [\n GIPI_MONTH_YEAR_SCROLL_STRATEGY_FACTORY_PROVIDER,\n ],\n entryComponents: [\n CalendarMonthYearComponent,\n ],\n})\nexport class MonthYearPickerModule { }\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, Component, ElementRef, forwardRef, Input, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { NumberUtil } from '../../../core/utils/number.util';\nimport { ObjectUtil } from '../../../core/utils/object.util';\n\nlet nextUniqueId = 0;\n\nexport class RangePage {\n start: number;\n end: number;\n\n public getTotalCount(): number {\n return (this.end - this.start) + 1;\n }\n\n public getRange(): number[] {\n return Array.from({ length: this.getTotalCount() }, (_, i) => this.start - 1 + i);\n }\n\n constructor(start?: number, end?: number) {\n this.start = start;\n this.end = end;\n }\n}\n\n@Component({\n selector: 'gipi-range-page',\n templateUrl: './range-page.component.html',\n styleUrls: ['./range-page.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GIPIRangePageComponent),\n multi: true\n },\n ]\n})\nexport class GIPIRangePageComponent implements OnInit, ControlValueAccessor {\n\n private _name: string = `gipi-range-page-${nextUniqueId++}`;\n\n public _startPage: number = 1;\n public _endPage: number = 1;\n\n @Input() id: string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() label: string = '';\n\n @Input() tooltip: string = '';\n\n @Input() placeholderStart: string = '';\n @Input() placeholderEnd: string = '';\n\n @Input() help: string = '';\n\n private _min: number = 1;\n @Input() get min(): number {\n return NumberUtil.isNumber(this._min) ? this._min : 1;\n }\n set min(value: number) {\n this._min = value;\n this._initPage();\n }\n\n private _max: number = 100;\n @Input() get max(): number {\n return NumberUtil.isNumber(this._max) ? this._max : 100;\n }\n set max(value: number) {\n this._max = value;\n this._initPage();\n }\n\n private _step: number = 1;\n @Input() get step(): number {\n return NumberUtil.isNumber(this._step) ? this._step : 1;\n }\n set step(value: number) {\n this._step = value;\n this._initPage();\n }\n\n private _required: boolean = false;\n @Input() get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _disabled: boolean = false;\n @Input() get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n onChange: Function = (value: RangePage) => { };\n onTouched: Function = () => { };\n\n public get formattedValue(): string {\n return '';\n }\n\n constructor(\n public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n ) { }\n\n ngOnInit(): void {\n this._initPage();\n }\n\n ngOnDestroy(): void { }\n\n writeValue(value: RangePage): void {\n if (!ObjectUtil.isNull(value)) {\n this._startPage = value.start || this._startPage;\n this._endPage = value.end || this._endPage;\n }\n this._changeDetectorRef.detectChanges();\n }\n\n registerOnChange(fn: Function): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n private _initPage(): void {\n this._startPage = this.min;\n this._endPage = Math.min(this._startPage + this.step - 1, this.max);\n }\n\n public updateEndPage(): void {\n if (this.disabled) {\n return;\n }\n\n if (this._startPage < this.min) {\n this._startPage = this.min;\n } else if (this._startPage > this.max) {\n this._startPage = this.max;\n }\n\n if (this._endPage < this._startPage) {\n this._endPage = this._startPage;\n } else if (this._endPage > (this._startPage + (this.step - 1))) {\n this._endPage = Math.min(this._startPage + this.step - 1, this.max);\n }\n this._propagateChange();\n }\n\n public updateStartPage(): void {\n if (this.disabled) {\n return;\n }\n\n if (this._endPage > this.max) {\n this._endPage = this.max;\n } else if (this._endPage > this.max) {\n this._endPage = this.max;\n }\n\n if (this._startPage > this._endPage) {\n this._startPage = this._endPage;\n } else if (this._startPage < (this._endPage - (this.step + 1))) {\n this._startPage = Math.max(this._endPage - this.step + 1, this.min);\n }\n this._propagateChange();\n }\n\n public previous(): void {\n if (this.disabled) {\n return;\n }\n\n const newStartPage = Math.max(this._startPage - this.step + 1, this.min);\n let newEndPage = Math.min(newStartPage + this.step - 1, this.max);\n\n if (newEndPage >= this.min) {\n this._startPage = newStartPage;\n this._endPage = newEndPage;\n this._propagateChange();\n }\n }\n\n public next(): void {\n if (this.disabled) {\n return;\n }\n\n // const newStartPage = Math.min(this._startPage + this.step, this.max - this.step + 1);\n // let newEndPage = newStartPage + this.step - 1;\n const newStartPage = Math.min(this._startPage + this.step, this.max);\n let newEndPage = Math.min(newStartPage + this.step - 1, this.max);\n\n if ((newStartPage === this.max) || (newEndPage > this.max)) {\n newEndPage = newStartPage;\n }\n\n if (newEndPage <= this.max) {\n this._startPage = newStartPage;\n this._endPage = newEndPage;\n this._propagateChange();\n }\n }\n\n public selectText(input: HTMLInputElement) {\n if (this.disabled || !input) {\n return;\n }\n setTimeout(() => input.select(), 0);\n }\n\n private _propagateChange() {\n this.onChange(new RangePage(this._startPage, this._endPage));\n this.onTouched();\n }\n\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, forwardRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport interface RangeSlider {\n from: number;\n to: number;\n}\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'gipi-range-slider',\n exportAs: 'gipiRangeSlider',\n templateUrl: './range-slider.component.html',\n styleUrls: ['./range-slider.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GIPIRangeSliderComponent),\n multi: true\n },\n ],\n host: {\n 'class': 'gipi-range-slider',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GIPIRangeSliderComponent implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild('fromSlider', { static: false }) fromSlider: ElementRef;\n @ViewChild('toSlider', { static: false }) toSlider: ElementRef;\n\n private _name: string = `gipi-range-slider-${nextUniqueId++}`;\n\n @Input() id: string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() label: string = '';\n\n @Input() help: string = '';\n\n @Input() min: number = 1;\n\n @Input() max: number = 100;\n\n private _maxRange: number = 5;\n @Input() get maxRange(): number {\n return this._maxRange || 5;\n }\n set maxRange(value: number) {\n if (!value || (value <= 0)) {\n throw new Error('Minimum value for \"maxRange\" must be 1');\n }\n this._maxRange = value || 5;\n }\n\n private _fromValue: number = 1;\n @Input('from') get fromValue(): number {\n return this._fromValue || 1;\n }\n set fromValue(value: number) {\n if (!value || (value <= 0)) {\n throw new Error('Minimum value for \"from\" must be 1');\n }\n this._fromValue = value || 1;\n }\n\n private _toValue: number = 1;\n @Input('to') get toValue(): number {\n return this._toValue || 1;\n }\n set toValue(value: number) {\n if (!value || (value <= 0)) {\n throw new Error('Minimum value for \"to\" must be 1');\n }\n this._toValue = value || 1;\n }\n\n private _step: number = 1;\n @Input() get step(): number {\n return this._step || 1;\n }\n set step(value: number) {\n if (!value || (value <= 0)) {\n throw new Error('Minimum value for \"step\" must be 1');\n }\n this._step = value || 1;\n }\n\n private _disabled: boolean = false;\n @Input() get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _required: boolean = false;\n @Input() get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n onChange: Function = () => { };\n onTouched: Function = () => { };\n\n constructor(\n public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n ) { }\n\n ngOnInit(): void { }\n\n ngAfterViewInit(): void {\n this._fillSlider();\n this._setToggleAccessible();\n }\n\n ngOnDestroy(): void { }\n\n writeValue(value: RangeSlider): void {\n if (value) {\n this.fromValue = value.from;\n this.toValue = value.to;\n\n if (this.fromSlider && this.toSlider) {\n this.fromSlider.nativeElement.value = this.fromValue.toString();\n this.toSlider.nativeElement.value = this.toValue.toString();\n\n this._fillSlider();\n this._setToggleAccessible();\n }\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n public controlFromInput(isByNgModel: boolean): void {\n let [from, to] = isByNgModel ? [this.fromValue, this.toValue] : this._getParsed(this.fromSlider.nativeElement, this.toSlider.nativeElement);\n from = this._roundToStep(from);\n to = this._roundToStep(to);\n\n // if ((to - from) > this.maxRange) {\n // from = to - this.maxRange;\n // }\n\n this._fillSlider();\n this._setToggleAccessible();\n\n if (from > to) {\n this.fromValue = to;\n }\n\n this.fromSlider.nativeElement.value = this.fromValue.toString();\n this._notifyValueChange();\n }\n\n public controlToInput(isByNgModel: boolean): void {\n let [from, to] = isByNgModel ? [this.fromValue, this.toValue] : this._getParsed(this.fromSlider.nativeElement, this.toSlider.nativeElement);\n from = this._roundToStep(from);\n to = this._roundToStep(to);\n\n // if ((to - from) > this.maxRange) {\n // to = from + this.maxRange;\n // }\n\n this._fillSlider();\n this._setToggleAccessible();\n\n if (from <= to) {\n this.toValue = to;\n } else {\n this.toValue = from;\n }\n\n this.toSlider.nativeElement.value = this.toValue.toString();\n this._notifyValueChange();\n }\n\n public controlFromSlider(): void {\n let [from, to] = this._getParsed(this.fromSlider.nativeElement, this.toSlider.nativeElement);\n from = this._roundToStep(from);\n to = this._roundToStep(to);\n\n if ((to - from) > this.maxRange) {\n from = to - this.maxRange;\n }\n\n this._fillSlider();\n this._setToggleAccessible();\n\n if ((to - from) === this.maxRange) {\n let [from, to] = this._getParsed(this.fromSlider.nativeElement, this.toSlider.nativeElement);\n from = this._roundToStep(from);\n to = this._roundToStep(to);\n\n if ((to - from) > this.maxRange) {\n to = from + this.maxRange;\n }\n\n this._fillSlider();\n\n if (from <= to) {\n this.toValue = to;\n } else {\n this.toValue = from;\n }\n\n this.toSlider.nativeElement.value = this.toValue.toString();\n }\n\n if (from >= to) {\n this.fromValue = to;\n } else {\n this.fromValue = from;\n }\n\n this.fromSlider.nativeElement.value = this.fromValue.toString();\n this._notifyValueChange();\n }\n\n public controlToSlider(): void {\n let [from, to] = this._getParsed(this.fromSlider.nativeElement, this.toSlider.nativeElement);\n from = this._roundToStep(from);\n to = this._roundToStep(to);\n\n if ((to - from) > this.maxRange) {\n to = from + this.maxRange;\n }\n\n this._fillSlider();\n this._setToggleAccessible();\n\n if ((to - from) === this.maxRange) {\n let [from, to] = this._getParsed(this.fromSlider.nativeElement, this.toSlider.nativeElement);\n from = this._roundToStep(from);\n to = this._roundToStep(to);\n\n if ((to - from) > this.maxRange) {\n from = to - this.maxRange;\n }\n\n this._fillSlider();\n\n if (from >= to) {\n this.fromValue = to;\n } else {\n this.fromValue = from;\n }\n\n this.fromSlider.nativeElement.value = this.fromValue.toString();\n }\n\n if (from <= to) {\n this.toValue = to;\n } else {\n this.toValue = from;\n }\n\n this.toSlider.nativeElement.value = this.toValue.toString();\n this._notifyValueChange();\n }\n\n private _getParsed(currentFrom: HTMLInputElement, currentTo: HTMLInputElement): [number, number] {\n const from: number = parseInt(currentFrom.value, 10);\n const to: number = parseInt(currentTo.value, 10);\n return [from, to];\n }\n\n private _fillSlider(): void {\n const fromSliderEl: HTMLInputElement = (this.fromSlider.nativeElement as HTMLInputElement);\n const toSliderEl: HTMLInputElement = (this.toSlider.nativeElement as HTMLInputElement);\n const rangeDistance: number = Number(toSliderEl.max) - Number(toSliderEl.min);\n const fromPosition: number = (this.fromValue - Number(fromSliderEl.min));\n const toPosition: number = (this.toValue - Number(toSliderEl.min));\n const sliderColor: string = '#e0e1e2';\n const rangeColor: string = '#f1a0a6';\n\n toSliderEl.style.background = `linear-gradient(\n to right,\n ${sliderColor} 0%,\n ${sliderColor} ${(fromPosition) / (rangeDistance) * 100}%,\n ${rangeColor} ${((fromPosition) / (rangeDistance)) * 100}%,\n ${rangeColor} ${(toPosition) / (rangeDistance) * 100}%,\n ${sliderColor} ${(toPosition) / (rangeDistance) * 100}%,\n ${sliderColor} 100%)`;\n }\n\n private _setToggleAccessible(): void {\n const fromInput = (this.fromSlider.nativeElement as HTMLInputElement);\n const toInput = (this.toSlider.nativeElement as HTMLInputElement);\n\n const fromValue = parseInt(fromInput.value, 10);\n const toValue = parseInt(toInput.value, 10);\n\n if (fromValue <= parseInt(fromInput.min, 10) && toValue <= parseInt(toInput.min, 10)) {\n // Ambos estão no mínimo\n fromInput.style.zIndex = '1';\n toInput.style.zIndex = '2';\n } else if (fromValue >= parseInt(fromInput.max, 10) && toValue >= parseInt(toInput.max, 10)) {\n // Ambos estão no máximo\n fromInput.style.zIndex = '2';\n toInput.style.zIndex = '1';\n } else {\n // Caso geral\n fromInput.style.zIndex = '2';\n toInput.style.zIndex = '1';\n }\n }\n\n private _roundToStep(value: number): number {\n return Math.round(value / this.step) * this.step;\n }\n\n private _notifyValueChange(): void {\n this.onChange({ from: this.fromValue, to: this.toValue });\n }\n\n public onBlur(): void {\n this.onTouched();\n }\n\n}\n","import { CdkStepperModule } from '@angular/cdk/stepper';\nimport { CommonModule } from '@angular/common';\nimport { Injector, NgModule } from '@angular/core';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatDialogModule, MatRippleModule } from '@angular/material';\nimport { RouterModule } from '@angular/router';\nimport { MdePopoverModule } from '@material-extended/mde';\nimport { MentionModule } from 'angular-mentions';\nimport { NgxCurrencyModule } from 'ngx-currency';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { NgxMaskModule } from 'ngx-mask';\nimport { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';\nimport { MAT_DATE_FORMATS } from './gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats';\n\nimport { MaterialModule } from './material.module';\n\nimport { ButtonComponent } from './components/button/button.component';\nimport { CardComponent } from './components/card/card.component';\nimport { CheckboxComponent } from './components/checkbox/checkbox.component';\nimport { IconComponent } from './components/icon/icon.component';\nimport { InputCurrencyComponent } from './components/input-currency/input-currency.component';\nimport { InputFileComponent } from './components/input-file/input-file.component';\nimport { InputComponent } from './components/input/input.component';\nimport { LoadingOverlayComponent } from './components/loading-overlay/loading-overlay.component';\nimport { LoadingComponent } from './components/loading/loading.component';\nimport { OverlayPanelComponent } from './components/overlay-panel/overlay-panel.component';\nimport { PopoverComponent } from './components/popover/popover.component';\nimport { RadioGroupEntityComponent } from './components/radio-group-entity/radio-group-entity.component';\nimport { RadioGroupEnumComponent } from './components/radio-group-enum/radio-group-enum.component';\nimport { SelectButtonComponent } from './components/select-button/select-button.component';\nimport { SelectEntityPagedComponent } from './components/select-entity-paged/select-entity-paged.component';\nimport { SelectButtonAddComponent } from './components/select-entity-paged/shared/select-button-add/select-button-add.component';\nimport { SelectButtonNextBatchComponent } from './components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component';\nimport { SelectNoEntriesFoundDirective } from './components/select-entity-paged/shared/select-no-entries-found.directive';\nimport { SelectSearchClearDirective } from './components/select-entity-paged/shared/select-search-clear.directive';\nimport { SelectSearchComponent } from './components/select-entity-paged/shared/select-search/select-search.component';\nimport { SelectEntityComponent } from './components/select-entity/select-entity.component';\nimport { SelectEnumComponent } from './components/select-enum/select-enum.component';\nimport { SelectMonthPeriodComponent } from './components/select-month-period/select-month-period.component';\nimport { SlideToggleComponent } from './components/slide-toggle/slide-toggle.component';\nimport { StepperComponent } from './components/stepper/stepper.component';\nimport { TabGroupComponent } from './components/tab-group/tab-group.component';\nimport { TabComponent } from './components/tab/tab.component';\nimport { TableScrolledComponent } from './components/table-scrolled/table-scrolled.component';\nimport { TableComponent } from './components/table/table.component';\nimport { TextareaComponent } from './components/textarea/textarea.component';\nimport { DynamicTabDirective } from './directives/dynamic-tab.directive';\nimport { ItssTemplate } from './directives/generic-template.directive';\nimport { InputSelectInfiniteScrollDirective } from './directives/input-select-infinite-scroll.directive';\nimport { LowerCaseDirective } from './directives/lower-case.directive';\nimport { PhoneMaskDirective } from './directives/phone-mask.directive';\nimport { SpaceDropDirective } from './directives/space-drop.directive';\nimport { UpperCaseDirective } from './directives/upper-case.directive';\n\nimport { GIPI_BREAKPOINTS, GIPI_CUSTOM_BREAKPOINTS_PROVIDER } from '../core/custom-breakpoints';\n\n// New components\nimport { GIPIFileDragAndDropDirective } from './gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive';\nimport { GIPIInfiniteScrollDirective } from './gipi-components/infinite-scroll/infinite-scroll.directive';\nimport { GIPIColDirective } from './gipi-components/layout-grid/col.directive';\nimport { GIPIRowDirective, } from './gipi-components/layout-grid/row.directive';\nimport { GIPIPaginationControlsDirective } from './gipi-components/table/components/table-pagination/shared/pagination-controls.directive';\nimport { GIPITemplateDirective } from './gipi-components/template/template.directive';\n\nimport { GIPIPaginatePipe } from './gipi-components/table/components/table-pagination/shared/paginate.pipe';\n\nimport { GIPIBreakpointService } from './gipi-components/layout-grid/services/breakpoint.service';\nimport { GIPIResizeService } from './gipi-components/layout-grid/services/resize.service';\nimport { GIPIOverlayService } from './gipi-components/overlay/shared/overlay-service';\nimport { GIPIPaginationService } from './gipi-components/table/components/table-pagination/shared/pagination.service';\n\nimport { GIPIAbstractFormComponent } from './gipi-components/abstract-form/abstract-form.component';\nimport { GIPIActionRowComponent } from './gipi-components/action-row/action-row.component';\nimport { GIPIBadgeComponent } from './gipi-components/badge/badge.component';\nimport { GIPIButtonComponent } from './gipi-components/button/button.component';\nimport { GIPIChipsComponent } from './gipi-components/chips/chips.component';\nimport { GIPIConfirmationDialogComponent } from './gipi-components/confirmation-dialog/confirmation-dialog.component';\nimport { GIPIDropdownMenuComponent } from './gipi-components/dropdown-menu/dropdown-menu.component';\nimport { GIPIExpansionPanelComponent } from './gipi-components/expansion-panel/expansion-panel.component';\nimport { GIPIFileDragAndDropComponent } from './gipi-components/file-drag-and-drop/file-drag-and-drop.component';\nimport { GIPIFooterComponent } from './gipi-components/footer/footer.component';\nimport { GIPIFormFieldComponent } from './gipi-components/form-field/form-field.component';\nimport { GIPIHelpfulTipComponent } from './gipi-components/helpful-tip/helpful-tip.component';\nimport { GIPIInputCheckboxComponent } from './gipi-components/input-checkbox/input-checkbox.component';\nimport { GIPIInputCurrencyComponent } from './gipi-components/input-currency/input-currency.component';\nimport { GIPIInputMonthPickerComponent } from './gipi-components/input-monthpicker/input-monthpicker.component';\nimport { GIPIInputSelectEnumComponent } from './gipi-components/input-select-enum/input-select-enum.component';\nimport { GIPIInputSelectListboxComponent } from './gipi-components/input-select-listbox/input-select-listbox.component';\nimport { GIPIInputSearchComponent } from './gipi-components/input-select-paged/input-search/input-search.component';\nimport { GIPIInputSelectPagedComponent } from './gipi-components/input-select-paged/input-select-paged.component';\nimport { GIPIInputSelectRadioComponent } from './gipi-components/input-select-radio/input-select-radio.component';\nimport { GIPIInputSelectComponent } from './gipi-components/input-select/input-select.component';\nimport { GIPINotificationComponent } from './gipi-components/notification/notification.component';\nimport { GIPINoveltiesComponent } from './gipi-components/novelties/novelties.component';\nimport { GIPIOverlayComponent } from './gipi-components/overlay/overlay.component';\nimport { GIPIPasswordRequerimentsComponent } from './gipi-components/password-requeriments/password-requeriments.component';\nimport { GIPIPopoverComponent } from './gipi-components/popover/popover.component';\nimport { GIPIPopoverTarget } from './gipi-components/popover/shared/popover-target';\nimport { GIPIPopoverTrigger } from './gipi-components/popover/shared/popover-trigger';\nimport { GIPIRadioGroupComponent } from './gipi-components/radio-group/radio-group.component';\nimport { GIPISelectButtonComponent } from './gipi-components/select-button/select-button.component';\nimport { GIPISelectComponent } from './gipi-components/select/select.component';\nimport { GIPISidenavContainerComponent } from './gipi-components/sidebar/container/container.component';\nimport { GIPISidenavComponent } from './gipi-components/sidebar/sidenav/sidenav.component';\nimport { GIPIStepperComponent } from './gipi-components/stepper/stepper.component';\nimport { GIPITableBodyComponent } from './gipi-components/table/components/table-body/table-body.component';\nimport { GIPITableFooterComponent } from './gipi-components/table/components/table-footer/table-footer.component';\nimport { GIPITableHeaderComponent } from './gipi-components/table/components/table-header/table-header.component';\nimport { GIPITablePaginationComponent } from './gipi-components/table/components/table-pagination/table-pagination.component';\nimport { GIPITableProgressBarComponent } from './gipi-components/table/components/table-progress-bar/table-progress-bar.component';\nimport { GIPITableComponent } from './gipi-components/table/table.component';\nimport { GIPIToolbarComponent } from './gipi-components/toolbar/toolbar.component';\nimport { GIPITopNavComponent } from './gipi-components/top-nav/top-nav.component';\nimport { GIPIUserProfileComponent } from './gipi-components/user-profile/user-profile.component';\n\nimport { DatepickerModule } from './gipi-components/datepicker/datepicker.module';\nimport { DateAdapter, MAT_DATE_LOCALE } from './gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter';\nimport { NativeDateAdapter } from './gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter';\nimport { MonthYearPickerModule } from './gipi-components/month-year-picker/mont-year-picker.module';\nimport { GIPIRangePageComponent } from './gipi-components/range-page/range-page.component';\nimport { GIPIRangeSliderComponent } from './gipi-components/range-slider/range-slider.component';\n\nexport let INJECTOR: Injector;\n\nconst GIPIComponents: any[] = [\n GIPITopNavComponent,\n GIPIFooterComponent,\n GIPIButtonComponent,\n GIPISidenavContainerComponent,\n GIPISidenavComponent,\n GIPIOverlayComponent,\n GIPIToolbarComponent,\n GIPISelectButtonComponent,\n GIPIUserProfileComponent,\n GIPISelectComponent,\n GIPINotificationComponent,\n GIPINoveltiesComponent,\n GIPIPopoverComponent,\n GIPIPopoverTrigger,\n GIPIPopoverTarget,\n GIPIActionRowComponent,\n GIPIAbstractFormComponent,\n GIPIStepperComponent,\n GIPIFileDragAndDropComponent,\n GIPIConfirmationDialogComponent,\n GIPIInputMonthPickerComponent,\n GIPIRadioGroupComponent,\n GIPIInputSelectRadioComponent,\n GIPIInputSelectListboxComponent,\n GIPIInputSelectComponent,\n GIPIFormFieldComponent,\n GIPIInputCheckboxComponent,\n GIPIChipsComponent,\n GIPIInputCurrencyComponent,\n GIPIInputSearchComponent,\n GIPIInputSelectPagedComponent,\n GIPIInputSelectEnumComponent,\n GIPIDropdownMenuComponent,\n GIPIExpansionPanelComponent,\n GIPIPasswordRequerimentsComponent,\n GIPIHelpfulTipComponent,\n GIPIBadgeComponent,\n GIPIRangeSliderComponent,\n GIPIRangePageComponent,\n\n // Table\n GIPITableHeaderComponent,\n GIPITableBodyComponent,\n GIPITableFooterComponent,\n GIPITablePaginationComponent,\n GIPITableProgressBarComponent,\n GIPITableComponent,\n];\n\nconst GIPIDirectives: any[] = [\n GIPITemplateDirective,\n GIPIColDirective,\n GIPIRowDirective,\n GIPIFileDragAndDropDirective,\n GIPIInfiniteScrollDirective,\n GIPIPaginationControlsDirective,\n];\n\nconst GIPIPipes: any[] = [\n GIPIPaginatePipe,\n];\n\nconst GIPIServices: any[] = [\n GIPIOverlayService,\n GIPIBreakpointService,\n GIPIResizeService,\n GIPIPaginationService,\n];\n\n@NgModule({\n declarations: [\n GIPIComponents,\n GIPIDirectives,\n GIPIPipes,\n LoadingComponent,\n LoadingOverlayComponent,\n ButtonComponent,\n InputComponent,\n SelectEntityComponent,\n SelectEnumComponent,\n TableComponent,\n CardComponent,\n CheckboxComponent,\n RadioGroupEntityComponent,\n RadioGroupEnumComponent,\n SlideToggleComponent,\n TabGroupComponent,\n TabComponent,\n DynamicTabDirective,\n IconComponent,\n StepperComponent,\n TextareaComponent,\n InputCurrencyComponent,\n InputFileComponent,\n PopoverComponent,\n PhoneMaskDirective,\n UpperCaseDirective,\n LowerCaseDirective,\n SpaceDropDirective,\n OverlayPanelComponent,\n ItssTemplate,\n SelectButtonComponent,\n SelectMonthPeriodComponent,\n InputSelectInfiniteScrollDirective,\n TableScrolledComponent,\n SelectSearchComponent,\n SelectEntityPagedComponent,\n SelectNoEntriesFoundDirective,\n SelectSearchClearDirective,\n SelectButtonAddComponent,\n SelectButtonNextBatchComponent,\n ],\n imports: [\n CommonModule,\n RouterModule,\n FormsModule,\n ReactiveFormsModule,\n MaterialModule,\n FlexLayoutModule.withConfig({ disableDefaultBps: true }, GIPI_BREAKPOINTS),\n NgxMaskModule.forChild(),\n NgxCurrencyModule,\n NgxMaterialTimepickerModule,\n MdePopoverModule,\n InfiniteScrollModule,\n MentionModule,\n\n DatepickerModule,\n MonthYearPickerModule,\n ],\n exports: [\n GIPIComponents,\n GIPIDirectives,\n GIPIPipes,\n CommonModule,\n RouterModule,\n FormsModule,\n ReactiveFormsModule,\n FlexLayoutModule,\n CdkStepperModule,\n MatRippleModule,\n MatDialogModule,\n InfiniteScrollModule,\n LoadingComponent,\n LoadingOverlayComponent,\n ButtonComponent,\n InputComponent,\n SelectEntityComponent,\n SelectEnumComponent,\n TableComponent,\n CardComponent,\n CheckboxComponent,\n RadioGroupEntityComponent,\n RadioGroupEnumComponent,\n SlideToggleComponent,\n TabGroupComponent,\n TabComponent,\n IconComponent,\n StepperComponent,\n TextareaComponent,\n InputCurrencyComponent,\n InputFileComponent,\n PopoverComponent,\n MentionModule,\n OverlayPanelComponent,\n ItssTemplate,\n SelectButtonComponent,\n SelectMonthPeriodComponent,\n InputSelectInfiniteScrollDirective,\n TableScrolledComponent,\n SelectSearchComponent,\n SelectEntityPagedComponent,\n SelectNoEntriesFoundDirective,\n SelectSearchClearDirective,\n SelectButtonAddComponent,\n SelectButtonNextBatchComponent,\n\n DatepickerModule,\n MonthYearPickerModule,\n ],\n entryComponents: [\n GIPIConfirmationDialogComponent,\n TabGroupComponent,\n TabComponent,\n PopoverComponent,\n ],\n providers: [\n GIPIServices,\n GIPI_CUSTOM_BREAKPOINTS_PROVIDER,\n {\n provide: DateAdapter,\n useClass: NativeDateAdapter,\n deps: [MAT_DATE_LOCALE]\n },\n {\n provide: MAT_DATE_LOCALE,\n useValue: 'pt-BR',\n },\n {\n provide: MAT_DATE_FORMATS,\n useValue: {\n parse: {\n dateInput: 'DD/MM/YYYY',\n },\n display: {\n dateInput: 'DD/MM/YYYY',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n },\n },\n },\n ]\n})\nexport class SharedModule {\n constructor(private _injector: Injector) {\n INJECTOR = this._injector;\n }\n}\n","import {AbstractDTO} from './abstract.dto';\n\nexport class PageDTO<U> extends AbstractDTO {\n\n content: U[];\n\n number: number;\n\n totalElements: number;\n\n totalPages: number;\n\n constructor() {\n super();\n this.content = [];\n this.number = 0;\n }\n\n}\n","import {AbstractDTO} from './abstract.dto';\nimport {SortDirectionEnum} from '../enums/sort-direction.enum';\n\nexport class SortDTO extends AbstractDTO {\n\n field: string;\n\n direction: SortDirectionEnum;\n\n constructor(field: string, direction: SortDirectionEnum) {\n super();\n this.field = field;\n this.direction = direction;\n }\n\n}\n","export enum SortDirectionEnum {\n\n ASC = 'ASC',\n DESC = 'DESC'\n\n}\n","import { OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { INJECTOR } from '../../shared/shared.module';\nimport { APP_MESSAGES } from '../app.messages';\nimport { AbstractModel } from '../models/abstract.model';\nimport { FilterDTO } from '../models/dto/filter.dto';\nimport { PageDTO } from '../models/dto/page.dto';\nimport { SortDTO } from '../models/dto/sort.dto';\nimport { TableColumnDTO } from '../models/dto/table-column.dto';\nimport { TablePageEventDTO } from '../models/dto/table-page-event.dto';\nimport { SortDirectionEnum } from '../models/enums/sort-direction.enum';\nimport { AbstractCrudService } from '../services/abstract-crud.service';\nimport { ConfirmationService } from '../services/confirmation.service';\nimport { MessageService } from '../services/message.service';\nimport { ObjectUtil } from '../utils/object.util';\nimport { StringUtil } from '../utils/string.util';\nimport { AbstractComponent } from './abstract.component';\n\nexport abstract class AbstractFindComponent<T extends AbstractModel, F extends FilterDTO> extends AbstractComponent implements OnInit {\n\n filter: F;\n\n page: PageDTO<T>;\n\n columns: TableColumnDTO[];\n\n tablePageEventDTO: TablePageEventDTO;\n\n constructor(\n protected service: AbstractCrudService<T, F>,\n protected messageService: MessageService,\n protected confirmationService: ConfirmationService,\n protected router: Router,\n protected activatedRoute: ActivatedRoute,\n ) {\n super(messageService, router, activatedRoute);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.service.returnPath = this.getPath();\n this.page = this.newPage();\n this.filter = this.newFilterDTO();\n this.getFilterDTOSessionStorage();\n this.columns = this.createTableColumns();\n }\n\n new(): void {\n this.router.navigateByUrl(this.getPath(), { skipLocationChange: true }).then(\n () => this.router.navigate([this.getPath(), 'new'])\n );\n }\n\n edit(entity: T): void {\n this.router.navigateByUrl(this.getPath(), { skipLocationChange: true }).then(\n () => this.router.navigate([this.getPath(), 'edit', entity.id])\n );\n }\n\n view(entity: T): void {\n this.router.navigateByUrl(this.getPath(), { skipLocationChange: true }).then(\n () => this.router.navigate([this.getPath(), 'view', entity.id])\n );\n }\n\n delete(entity: T, filter?: boolean): void {\n this.confirmationService.confirm({\n title: 'Confirmação',\n message: INJECTOR.get(APP_MESSAGES).DELETE_CONFIRMATION,\n accept: () => {\n try {\n this.loading = true;\n this.loadingChange.emit(this.loading);\n this.page = this.newPage();\n this.preDelete();\n this.service.delete(entity.id).subscribe(() => {\n if (filter) {\n this.find();\n } else {\n this.new();\n this.loading = false;\n this.loadingChange.emit(this.loading);\n }\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n }, error => {\n if (this.isFinding()) {\n this.clear();\n }\n this.handleError(error);\n });\n } catch (e) {\n this.handleError(e);\n }\n }\n });\n }\n\n deleteAll(entityList: T[], filter?: boolean): void {\n this.confirmationService.confirm({\n title: 'Confirmação',\n message: INJECTOR.get(APP_MESSAGES).DELETE_ALL_CONFIRMATION,\n accept: () => {\n try {\n this.loading = true;\n this.loadingChange.emit(this.loading);\n this.page = this.newPage();\n this.preDelete();\n this.service.deleteAll(entityList).subscribe(() => {\n if (filter) {\n this.find();\n } else {\n this.new();\n this.loading = false;\n this.loadingChange.emit(this.loading);\n }\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n }, error => {\n if (this.isFinding()) {\n this.clear();\n }\n this.handleError(error);\n });\n } catch (e) {\n this.handleError(e);\n }\n }\n });\n }\n\n updateStatus(entity: T, enabled: boolean): void {\n this.confirmationService.confirm({\n title: 'Confirmação',\n message: `Deseja realmente ${enabled ? 'ativar' : 'inativar'} este registro?`,\n accept: () => {\n try {\n this.loading = true;\n this.loadingChange.emit(this.loading);\n this.service.save(entity).subscribe(() => {\n this.clear();\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n }, error => {\n this.clear();\n this.handleError(error);\n });\n } catch (e) {\n this.handleError(e);\n }\n },\n cancel: () => this.clear()\n });\n }\n\n preDelete(): void {\n }\n\n clear(): void {\n this.page = this.newPage();\n this.filter = this.newFilterDTO();\n this.find();\n }\n\n protected getPath(): string {\n return `${this.activatedRoute.snapshot.parent.parent.url[0].path}/${this.activatedRoute.snapshot.parent.url[0].path}`;\n }\n\n protected newPage(): PageDTO<T> {\n return new PageDTO<T>();\n }\n\n protected newFilterDTO(): F {\n return null;\n }\n\n protected getFilterDTOSessionStorage(): Promise<void> {\n return Promise.resolve();\n }\n\n protected createTableColumns(): TableColumnDTO[] {\n return [];\n }\n\n protected createSorts(): SortDTO[] {\n return [];\n }\n\n find(pageEvent?: any): void {\n this.loading = true;\n this.loadingChange.emit(this.loading);\n this.page = this.newPage();\n if (ObjectUtil.isNull(this.filter)) {\n this.filter = this.newFilterDTO();\n }\n\n if (ObjectUtil.isNull(pageEvent) && !ObjectUtil.isNull(this.tablePageEventDTO)) {\n pageEvent = this.tablePageEventDTO;\n }\n\n if (pageEvent) {\n this.tablePageEventDTO = pageEvent;\n this.filter.pageNumber = pageEvent.pageIndex;\n this.filter.pageSize = pageEvent.pageSize;\n this.filter.offset = pageEvent.pageIndex * pageEvent.pageSize;\n if (pageEvent.sort) {\n this.filter.sorts = [new SortDTO(\n pageEvent.sort.active,\n StringUtil.isEmpty(pageEvent.sort.direction) ? SortDirectionEnum.DESC : pageEvent.sort.direction.toUpperCase()\n )];\n }\n } else {\n this.filter.pageNumber = 0;\n this.filter.offset = 0;\n this.filter.pageSize = 10;\n }\n this.service.find(this.filter).subscribe(page => {\n this.page = page;\n this.loading = false;\n this.loadingChange.emit(this.loading);\n }, error => this.handleError(error));\n }\n\n isFinding(): boolean {\n return this.router.url.split('/').filter(path => path === 'new' || path === 'edit').length === 0;\n }\n\n isViewing(): boolean {\n return this.router.url.split('/').filter(path => path === 'view').length > 0;\n }\n\n isCreating(): boolean {\n return this.router.url.split('/').filter(path => path === 'new').length > 0;\n }\n\n}\n","import { EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { INJECTOR } from '../../shared/shared.module';\nimport { APP_MESSAGES } from '../app.messages';\nimport { AbstractModel } from '../models/abstract.model';\nimport { FilterDTO } from '../models/dto/filter.dto';\nimport { AbstractCrudService } from '../services/abstract-crud.service';\nimport { ConfirmationService } from '../services/confirmation.service';\nimport { MessageService } from '../services/message.service';\nimport { AbstractFindComponent } from './abstract-find.component';\n\nexport abstract class AbstractCrudComponent<T extends AbstractModel, F extends FilterDTO> extends AbstractFindComponent<T, F> implements OnInit {\n\n entityValue: T;\n @Output() entityChange: EventEmitter<T> = new EventEmitter<T>(true);\n @Input() get entity(): T {\n return this.entityValue;\n }\n set entity(entity: T) {\n this.entityValue = entity;\n this.entityChange.emit(this.entityValue);\n }\n\n constructor(\n protected service: AbstractCrudService<T, F>,\n protected messageService: MessageService,\n protected confirmationService: ConfirmationService,\n protected router: Router,\n protected activatedRoute: ActivatedRoute\n ) {\n super(service, messageService, confirmationService, router, activatedRoute);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.entity = this.newEntity();\n this.initializeForm();\n }\n\n save(edit?: boolean, filter?: boolean): void {\n try {\n this.loading = true;\n this.loadingChange.emit(this.loading);\n if (filter) {\n this.page = this.newPage();\n }\n this.preSave();\n this.service.save(this.entity).subscribe(entity => {\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n if (edit) {\n this.edit(entity);\n } else if (filter) {\n this.find();\n } else {\n this.router.navigateByUrl(this.getPath(), { skipLocationChange: true }).then(() => this.router.navigate([this.getPath()]));\n }\n }, error => this.handleError(error));\n } catch (e) {\n this.handleError(e);\n }\n }\n\n preSave(): void { }\n\n return(): void {\n if (this.isViewing()) {\n this.router.navigateByUrl(this.service.returnPath, { skipLocationChange: true })\n .then(() => this.router.navigate([this.service.returnPath]));\n } else {\n this.confirmationService.confirm({\n title: 'Confirmação',\n message: INJECTOR.get(APP_MESSAGES).RETURN_CONFIRMATION,\n accept: () => this.router.navigateByUrl(this.service.returnPath, { skipLocationChange: true })\n .then(() => this.router.navigate([this.service.returnPath]))\n });\n }\n }\n\n protected abstract newEntity(): T;\n\n protected initializeForm(): void {\n this.loading = true;\n this.loadingChange.emit(this.loading);\n const id: number | string = this.activatedRoute.snapshot.params.id;\n if (id) {\n this.service.getOne(id).subscribe(entity => {\n this.entity = entity;\n this.afterInitializeForm();\n this.loading = false;\n this.loadingChange.emit(this.loading);\n }, error => this.handleError(error));\n } else {\n this.entity = this.newEntity();\n this.loading = false;\n this.loadingChange.emit(this.loading);\n }\n }\n\n public afterInitializeForm(): void { }\n\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\nimport { BaseUser } from '../models/base-user.model';\nimport { TokenDTO } from '../models/dto/token.dto';\nimport { ObjectUtil } from '../utils/object.util';\nimport { AbstractService } from './abstract.service';\nimport { StringUtil } from '../utils/string.util';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthenticationService<U extends BaseUser> extends AbstractService {\n\n protected tokenSubject: BehaviorSubject<TokenDTO<U>>;\n\n token: Observable<TokenDTO<U>>;\n\n constructor(protected router: Router, protected http: HttpClient) {\n super();\n this.tokenSubject = new BehaviorSubject<TokenDTO<U>>(JSON.parse(localStorage.getItem('token')));\n this.token = this.tokenSubject.asObservable();\n }\n\n login(user: U): Observable<TokenDTO<U>> {\n const body: HttpParams = new HttpParams()\n .set('grant_type', 'password')\n .set('username', user.username)\n .set('password', user.password);\n\n return this.http.post<TokenDTO<U>>('api/authenticator/oauth/token', body, this.options()).pipe(\n map(accessToken => this.setCurrentUser(accessToken))\n );\n }\n\n async logout(): Promise<void> {\n await this.revokeToken().toPromise().then(() => {\n this.removeToken();\n this.router.navigate(['/oauth/login'], { queryParams: { returnUrl: this.router.routerState.snapshot.url } });\n });\n }\n\n removeToken(): void {\n localStorage.removeItem('token');\n this.tokenSubject.next(null);\n }\n\n refreshToken(additionalParams?: Map<any, any>): Observable<TokenDTO<U>> {\n let body: HttpParams = new HttpParams()\n .set('grant_type', 'refresh_token')\n .set('refresh_token', this.tokenValue.refreshToken);\n\n if (!ObjectUtil.isNull(additionalParams)) {\n additionalParams.forEach((value, key) => body = body.append(key, value));\n }\n\n return this.http.post<TokenDTO<U>>('api/authenticator/oauth/token', body, this.options(this.buildParams(), this.buildHeaders().append('skip', 'true'))).pipe(\n map(accessToken => this.setCurrentUser(accessToken))\n );\n }\n\n revokeToken(token?: TokenDTO<U>): Observable<any> {\n let lHttpHeaders: HttpHeaders = null;\n if (!ObjectUtil.isNull(token)) {\n lHttpHeaders = new HttpHeaders()\n .append('Authorization', token.accessToken)\n .append('skip', 'true');\n }\n return this.http.post('api/authenticator/oauth/token/revoke', {}, this.options(null, lHttpHeaders));\n }\n\n isValidToken(token: TokenDTO<U>): boolean {\n if (!ObjectUtil.isNull(token) && !ObjectUtil.isNull(token.expiration)) {\n return new Date(token.expiration).valueOf() > new Date().valueOf();\n }\n return false;\n }\n\n protected setCurrentUser(token: TokenDTO<U>): TokenDTO<U> {\n if (token && token.accessToken) {\n localStorage.setItem('token', JSON.stringify(token));\n this.tokenSubject.next(token);\n }\n return token;\n }\n\n get tokenValue(): TokenDTO<U> {\n return this.tokenSubject.value;\n }\n\n get tokenValueLocalStorage(): TokenDTO<U> {\n const token: string = localStorage.getItem('token');\n return !StringUtil.isEmpty(token) ? JSON.parse(token) : null;\n }\n\n protected 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(new Date()).format('ZZ'));\n }\n\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { BaseUser } from '../models/base-user.model';\nimport { TokenDTO } from '../models/dto/token.dto';\nimport { AuthenticationService } from '../services/authentication.service';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n\n constructor(private authenticationService: AuthenticationService<BaseUser>) {\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const token: TokenDTO<BaseUser> = this.authenticationService.tokenValue;\n\n if (token && token.accessToken && !request.headers.get('skip')) {\n request = request.clone({\n setHeaders: {\n Authorization: `Bearer ${token.accessToken}`\n }\n });\n }\n\n return next.handle(request);\n }\n}\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable, Injector, NgZone } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport { ApiErrorDTO } from '../models/dto/api-error.dto';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { ArrayUtil } from '../utils/array.util';\nimport { ObjectUtil } from '../utils/object.util';\n\n@Injectable()\nexport class ErrorInterceptor implements HttpInterceptor {\n\n private _router: Router;\n\n constructor(private _injector: Injector) { }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(request).pipe(\n catchError(async (err: any) => {\n this._router = this._injector.get(Router);\n let error: any = null;\n\n if (err instanceof HttpErrorResponse && err.error instanceof Blob && err.error.type === 'application/json') {\n\n await this.blobToJson(err).then(httpErrorResponse => {\n if ((!ObjectUtil.isNull(httpErrorResponse)) && (httpErrorResponse instanceof HttpErrorResponse)) {\n error = httpErrorResponse;\n }\n });\n\n } else if (err instanceof HttpErrorResponse) {\n error = err;\n }\n\n return await (await this.validateErrors(error)).toPromise().then(e => e);\n })\n ) as Observable<HttpEvent<any>>;\n }\n\n private async validateErrors(err: any): Promise<Observable<never>> {\n return new Promise((resolve, reject) => {\n let error: any = err.error.message || err.statusText;\n const apiError: ApiErrorDTO = err.error.apierror as ApiErrorDTO;\n\n if (!ObjectUtil.isNull(apiError)) {\n if ((apiError.status === 'INTERNAL_SERVER_ERROR')\n && (apiError.debugMessage && apiError.debugMessage.toUpperCase().includes('QUERY DID NOT RETURN A UNIQUE RESULT'))) {\n error = 'A consulta não retornou resultado único';\n } else if ((apiError.status === 'INTERNAL_SERVER_ERROR')\n && (apiError.message && apiError.message.toUpperCase().includes('NENHUM REGISTRO FOI ENCONTRADO'))) {\n error = 'Nenhum registro foi encontrado';\n } else if ((apiError.status === 'INTERNAL_SERVER_ERROR')\n && (apiError.message && apiError.message.toUpperCase().includes('OCORREU UM PROBLEMA INESPERADO'))) {\n error = 'Ocorreu um problema inesperado';\n } else if (apiError.status === 'FORBIDDEN') {\n this._injector.get(NgZone).run(() => this._router.navigate(['/errors/403']));\n return;\n } else if (apiError.status === 'UNAUTHORIZED') {\n error = 'Sua sessão expirou';\n this._injector.get(AuthenticationService).logout();\n } else if (!ArrayUtil.isEmpty(apiError.subErrorList)) {\n error = apiError.subErrorList[0].rejectedMessage;\n } else {\n error = apiError.message;\n }\n } else if (!navigator.onLine) {\n error = 'Sem internet';\n } else if (err.status === 504) {\n this._injector.get(NgZone).run(() => this._router.navigate(['/errors/504']));\n return;\n }\n\n return resolve(throwError(error));\n });\n }\n\n private async blobToJson(err: any): Promise<HttpErrorResponse> {\n return new Promise((resolve, reject) => {\n try {\n let httpErrorResponse: HttpErrorResponse = null;\n const reader: FileReader = new FileReader();\n reader.onload = (e: Event) => {\n const errmsg = JSON.parse((<any>e.target).result);\n httpErrorResponse = new HttpErrorResponse({\n error: errmsg,\n headers: err.headers,\n status: err.status,\n statusText: err.statusText,\n url: err.url\n });\n resolve(httpErrorResponse);\n };\n reader.readAsText(err.error);\n } catch (e) {\n reject(null);\n throwError(e);\n }\n });\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material';\n\nimport { DialogDTO } from '../models/dto/dialog.dto';\nimport { AbstractService } from './abstract.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogService extends AbstractService {\n\n constructor(public dialog: MatDialog) {\n super();\n }\n\n open(dialog: DialogDTO): MatDialogRef<any> {\n return this.dialog.open(dialog.componentOrTemplateRef, {\n panelClass: dialog.panelClass,\n disableClose: dialog.disableClose,\n width: dialog.width,\n height: dialog.height,\n minWidth: dialog.minWidth,\n minHeight: dialog.minHeight,\n maxWidth: dialog.maxWidth,\n maxHeight: dialog.maxHeight,\n position: dialog.position,\n data: dialog.data,\n autoFocus: dialog.autoFocus,\n restoreFocus: dialog.restoreFocus,\n closeOnNavigation: dialog.closeOnNavigation,\n });\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SvgRegisterService {\n\n constructor(\n private _matIconRegistry: MatIconRegistry,\n private _domSanitizer: DomSanitizer,\n ) { }\n\n /**\n * @param enumSvgs Enum de svgs: ex\n * export enum SvgIcons {\n * SVG_ONE: 'svg_one',\n * ...\n * }\n * @param path Path where the svg is located\n */\n public registerListSvgIcons(enumSvgs: any, path: string): void {\n const svgKeys: string[] = Object.values(enumSvgs);\n for (const svg of svgKeys) {\n this.registerSvgIcon(svg, path);\n }\n }\n\n /**\n * Enter only the svg name without the extension.\n * @param svgName Svg name without the extension\n * @param path Path where the svg is located\n */\n public registerSvgIcon(svgName: string, path: string): void {\n try {\n const svgUrl: SafeResourceUrl = this._domSanitizer.bypassSecurityTrustResourceUrl(`${path}/${svgName}.svg`);\n this._matIconRegistry.addSvgIcon(svgName, svgUrl);\n } catch (error) {\n throw new Error(error);\n }\n }\n\n}\n","import { LocalTimeType } from '../enums/local-time.enum';\nimport { GIPILocalTime } from '../types/local-time.type';\nimport { ObjectUtil } from './object.util';\nimport { StringUtil } from './string.util';\n\n/** @dynamic */\nexport class TimeUtil {\n\n public static TIME_FORMAT = 'HH:mm:ss';\n\n public static format(time: GIPILocalTime | Date, format: LocalTimeType | string, period: boolean = false): string {\n if (!ObjectUtil.isNull(time)) {\n let lTime: GIPILocalTime = null;\n if (time instanceof Date) {\n lTime = {\n hour: time.getHours(),\n minute: time.getMinutes(),\n second: time.getSeconds(),\n };\n } else {\n lTime = time;\n }\n\n let lFormat: string = this.TIME_FORMAT;\n if (format.trim().toUpperCase() === 'FULL') {\n lFormat = `HH:mm:ss${period ? ' AA' : ''}`;\n } else if (format.trim().toUpperCase() === 'SHORT') {\n lFormat = `HH:mm${period ? ' AA' : ''}`;\n } else if (!StringUtil.isEmpty(format.trim())) {\n lFormat = format.trim();\n }\n\n return this._formatDate(lTime, lFormat);\n }\n\n return StringUtil.EMPTY;\n }\n\n private static _formatDate(time: GIPILocalTime, format: string) {\n let Hour: number = time.hour;\n format = format.replace(/(^|[^\\\\])HH+/g, \"$1\" + this._padToAnyDigits(Hour));\n format = format.replace(/(^|[^\\\\])H/g, \"$1\" + Hour);\n\n let hour = (Hour > 12) ? (Hour - 12) : ((Hour === 0) ? 12 : Hour);\n format = format.replace(/(^|[^\\\\])hh+/g, \"$1\" + this._padToAnyDigits(hour));\n format = format.replace(/(^|[^\\\\])h/g, \"$1\" + hour);\n\n let minutes = time.minute;\n format = format.replace(/(^|[^\\\\])mm+/g, \"$1\" + this._padToAnyDigits(minutes));\n format = format.replace(/(^|[^\\\\])m/g, \"$1\" + minutes);\n\n let seconds = time.second;\n format = format.replace(/(^|[^\\\\])ss+/g, \"$1\" + this._padToAnyDigits(seconds));\n format = format.replace(/(^|[^\\\\])s/g, \"$1\" + seconds);\n\n let Period = Hour < 12 ? \"AM\" : \"PM\";\n format = format.replace(/(^|[^\\\\])AA+/g, \"$1\" + Period);\n format = format.replace(/(^|[^\\\\])A/g, \"$1\" + Period.charAt(0));\n\n let period = Period.toLowerCase();\n format = format.replace(/(^|[^\\\\])aa+/g, \"$1\" + period);\n format = format.replace(/(^|[^\\\\])a/g, \"$1\" + period.charAt(0));\n\n format = format.replace(/\\\\(.)/g, \"$1\");\n\n return format;\n }\n\n private static _padToAnyDigits(value: number, digits: number = 2) {\n return value.toString().padStart(digits, '0');\n }\n\n}\n","import { Pipe, PipeTransform, ɵstringify as stringify } from '@angular/core';\n\nimport { LocalTimeType } from '../enums/local-time.enum';\nimport { GIPILocalTime } from '../types/local-time.type';\nimport { TimeUtil } from '../utils/time.util';\n\n@Pipe({\n name: 'localtime'\n})\nexport class LocalTimePipe implements PipeTransform {\n\n transform(time: GIPILocalTime | Date, format: LocalTimeType | string, period: boolean = false): any {\n try {\n return TimeUtil.format(time, format, period);\n } catch (error) {\n throw new Error(`InvalidPipeArgument: '${LocalTimePipe}' for pipe '${stringify((error as Error).message)}'`);\n }\n }\n\n}\n","import { HttpHeaders, HttpParams } from '@angular/common/http';\nimport { OnDestroy } from '@angular/core';\nimport { Observable, Subject, throwError } from 'rxjs';\n\nimport { StringUtil } from '../../utils/string.util';\n\nexport class GIPIAbstractService implements OnDestroy {\n\n protected handleDestroy: Subject<void> = new Subject<void>();\n\n constructor(\n protected path: string,\n protected version: string,\n ) { }\n\n ngOnDestroy(): void {\n this.handleDestroy.next();\n this.handleDestroy.complete();\n }\n\n protected url(resource?: string, version?: string): string {\n let versionAux: string = '';\n if (!StringUtil.isEmpty(version)) {\n versionAux = `/${version.toLowerCase()}`;\n } else if (StringUtil.isEmpty(version) && !StringUtil.isEmpty(this.version)) {\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 protected options(params?: HttpParams, headers?: HttpHeaders): { headers: HttpHeaders; params: HttpParams; } {\n return {\n headers: headers ? headers : this.buildHeaders(),\n params: params ? params : this.buildParams()\n };\n }\n\n protected buildHeaders(): HttpHeaders {\n return new HttpHeaders();\n }\n\n protected buildParams(): HttpParams {\n return new HttpParams();\n }\n\n protected handleMapper<T = void>(jsonObj: Object): (T extends void ? any : T) {\n return jsonObj as (T extends void ? any : T);\n }\n\n protected handleError<T = void>(error: string): Observable<(T extends void ? any : T)> {\n return throwError(error);\n }\n\n}\n","import { OnDestroy } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, takeUntil } from 'rxjs/operators';\n\nimport { ObjectUtil } from '../../utils/object.util';\nimport { StringUtil } from '../../utils/string.util';\nimport { UUIDUtil } from '../../utils/uuid.util';\nimport { GIPIAbstractFilterModel } from '../models/abstract-filter.model';\nimport { GIPIAbstractModel } from '../models/abstract.model';\nimport { GIPIPageModel } from '../models/page.model';\nimport { GIPISortModel } from '../models/sort.model';\nimport { GIPIUuid } from '../types/uuid.type';\nimport { GIPIAbstractService } from './abstract.service';\nimport { GIPIBaseService } from './base.service';\n\nexport abstract class GIPIAbstractCrudService<TEntity extends GIPIAbstractModel, TFilter extends GIPIAbstractFilterModel> extends GIPIAbstractService implements OnDestroy {\n\n constructor(\n protected path: string,\n protected version: string,\n protected baseService: GIPIBaseService,\n ) {\n super(path, version);\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n /**\n * Refers to the save endpoint\n * @type POST\n * @path resource/version\n */\n public save<T = any>(entity: T, version?: string): Observable<T>;\n public save(entity: TEntity, version?: string): Observable<TEntity> {\n this.validate(entity);\n return this.baseService.httpClient.post(this.url('', version), entity, this.options()).pipe(\n map(this.handleMapper),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the save-all endpoint\n * @type POST\n * @path resource/version/save-all\n */\n public saveAll<T = any>(entities: T[], version?: string): Observable<T[]>;\n public saveAll(entities: TEntity[], version?: string): Observable<TEntity[]> {\n for (let i = 0; i < entities.length; i++) {\n this.validate(entities[i]);\n }\n\n return this.baseService.httpClient.post(this.url('save-all', version), entities, this.options()).pipe(\n map(this.handleMapper),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the delete endpoint\n * @type DELETE\n * @path resource/version/{id}\n */\n public delete<T = any>(id: number | string, version?: string): Observable<T>;\n public delete(id: number | string, version?: string): Observable<TEntity> {\n return this.baseService.httpClient.delete(this.url(`${id}`, version)).pipe(\n map(() => null),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the delete-all endpoint\n * @type POST\n * @path resource/version/delete-all\n */\n public deleteAll(idList: GIPIUuid[], version?: string): Observable<boolean> {\n for (let i = 0; i < idList.length; i++) {\n if (!UUIDUtil.isValid(idList[i])) {\n return of(false);\n }\n }\n\n return this.baseService.httpClient.post(this.url('delete-all', version), idList, this.options()).pipe(\n map(() => { return true; }),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the get-one endpoint\n * @type GET\n * @path resource/version/{id}\n */\n public getOne<T = any>(id: GIPIUuid, version?: string): Observable<T>;\n public getOne(id: GIPIUuid, version?: string): Observable<TEntity> {\n return this.baseService.httpClient.get(this.url(`${id}`, version), this.options()).pipe(\n map(this.handleMapper),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the find-all endpoint without the filters\n * @type GET\n * @path resource/version\n */\n public find<T = any>(version?: string): Observable<GIPIPageModel<T>>;\n public find(version?: string): Observable<GIPIPageModel<TEntity>> {\n return this.baseService.httpClient.get(this.url('', version), this.options()).pipe(\n map(this.handleMapper),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the find-all endpoint with filters\n * @type POST\n * @path resource/version/find-all\n */\n public findAll<F extends GIPIAbstractFilterModel = any, T = any>(filter?: F, version?: string): Observable<GIPIPageModel<T>>;\n public findAll(filter?: TFilter, version?: string): Observable<GIPIPageModel<TEntity>> {\n return this.baseService.httpClient.post(this.url('find-all', version), filter, this.options()).pipe(\n map(this.handleMapper),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the find-all-enabled endpoint\n * @type GET\n * @path resource/version/find-all-enabled\n */\n public findAllEnabled<T = any>(page: number, size: number, version?: string): Observable<GIPIPageModel<T>>;\n public findAllEnabled(page: number, size: number, version?: string): Observable<GIPIPageModel<TEntity>> {\n if ((!page) || (page && (page < 0))) {\n page = 0;\n }\n if ((!size) || (size && (size <= 0))) {\n size = 10;\n }\n return this.baseService.httpClient.get(this.url(`find-all-enabled?page=${page}&size=${size}`, version), this.options()).pipe(\n map(this.handleMapper),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the find-by-value endpoint\n * @type GET\n * @path resource/version/find-by-value\n */\n public findByValue<T = any>(value: string, page: number, size?: number, sort?: GIPISortModel, version?: string): Observable<GIPIPageModel<T>>;\n public findByValue(value: string, page: number, size?: number, sort?: GIPISortModel, version?: string): Observable<GIPIPageModel<TEntity>> {\n let lValue: string = value;\n if (value) {\n lValue = StringUtil.removeAccents(value).trim();\n } else {\n lValue = '';\n }\n if ((!page) || (page && (page < 0))) {\n page = 0;\n }\n if ((!size) || (size && (size <= 0))) {\n size = 10;\n }\n let lSort: string = '';\n if (!ObjectUtil.isNull(sort) && !StringUtil.isEmpty(sort.field)) {\n lSort = `&sort=${sort.field},${sort.direction}`;\n }\n\n return this.baseService.httpClient.get(this.url(`find-by-value?page=${page}&size=${size}${lSort}&value=${lValue}`, version), this.options()).pipe(\n map(this.handleMapper),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the enable-or-disable endpoint\n * @type PATCH\n * @path resource/version/enable-or-disable/{id}/{action}\n */\n public enableOrDisable(id: GIPIUuid, action: 'DISABLE' | 'ENABLE', version?: string): Observable<boolean> {\n if (!UUIDUtil.isValid(id)) {\n return of(false);\n }\n return this.baseService.httpClient.patch(this.url(`/enable-or-disable/${id}/${action}`, version), {}, this.options()).pipe(\n map(() => { return true; }),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n )\n }\n\n /**\n * Refers to the enable-or-disable-all endpoint\n * @type PATCH\n * @path resource/version/enable-or-disable-all/{action}\n */\n public enableOrDisableAll(idList: GIPIUuid[], action: 'DISABLE' | 'ENABLE', version?: string): Observable<boolean> {\n for (let i = 0; i < idList.length; i++) {\n if (!UUIDUtil.isValid(idList[i])) {\n return of(false);\n }\n }\n\n return this.baseService.httpClient.patch(this.url(`/enable-or-disable-all/${action}`, version), idList, this.options()).pipe(\n map(() => { return true; }),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n )\n }\n\n public validate<T = any>(entity: T): string;\n public validate(entity: TEntity): string {\n return '';\n }\n\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GIPIFileService {\n\n constructor() { }\n\n download(data: any, fileName: string, mimeType: string): void {\n const blob: Blob = new Blob([data], { type: mimeType });\n const link: HTMLAnchorElement = document.createElement('a');\n if (link.download !== undefined) {\n const url = URL.createObjectURL(blob);\n link.setAttribute('href', url);\n link.setAttribute('download', fileName);\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n\n downloadContent(response: any): void {\n this.download(\n response.body,\n response.headers.get('content-disposition').split(';')[1].split('filename')[1].split('=')[1].trim(),\n response.headers.get('content-type')\n );\n }\n\n printArchive(data: any, mimeType: string): void {\n const blob: Blob = new Blob([data], { type: mimeType });\n const url: string = URL.createObjectURL(blob);\n const htmlIFrameElement: HTMLIFrameElement = document.createElement('iframe');\n\n document.body.appendChild(htmlIFrameElement);\n htmlIFrameElement.style.display = 'none';\n htmlIFrameElement.style.position = 'fixed';\n htmlIFrameElement.style.right = '0';\n htmlIFrameElement.style.bottom = '0';\n htmlIFrameElement.style.width = '0';\n htmlIFrameElement.style.height = '0';\n htmlIFrameElement.style.border = '0';\n htmlIFrameElement.src = url;\n htmlIFrameElement.onload = () => {\n setTimeout(() => {\n htmlIFrameElement.focus();\n htmlIFrameElement.contentWindow.print();\n }, 1);\n };\n }\n\n}\n","import { Injectable } from '@angular/core';\n\nimport { ObjectUtil } from '../../utils/object.util';\n\n@Injectable({ providedIn: 'root' })\nexport class GIPISessionStorageService<TFilter = any> {\n\n private _storage: Storage;\n\n constructor() {\n this._storage = window.sessionStorage;\n }\n\n set<T = any>(key: string, value: T): boolean;\n set(key: string, value: TFilter): boolean {\n if (this._storage) {\n this._storage.setItem(key, JSON.stringify(value));\n return true;\n }\n return false;\n }\n\n get<T = any>(key: string): T;\n get(key: string): TFilter {\n if (this._storage) {\n const json: any = JSON.parse(this._storage.getItem(key));\n return !ObjectUtil.isNull(json) ? json : null;\n }\n return null;\n }\n\n remove(key: string): boolean {\n if (this._storage) {\n this._storage.removeItem(key);\n return true;\n }\n return false;\n }\n\n clear(): boolean {\n if (this._storage) {\n this._storage.clear();\n return true;\n }\n return false;\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { ChangeDetectorRef, Injectable, Injector, OnDestroy } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Router } from '@angular/router';\n\nimport { ConfirmationService } from '../../services/confirmation.service';\nimport { DialogService } from '../../services/dialog.service';\nimport { MessageService } from '../../services/message.service';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { GIPIFileService } from './file.service';\nimport { GIPISessionStorageService } from './session-storage.service';\n\n@Injectable({ providedIn: 'root' })\nexport class GIPIBaseService implements OnDestroy {\n\n private _sessionStorageService: GIPISessionStorageService = null;\n private _confirmationService: ConfirmationService = null;\n private _messageService: MessageService = null;\n private _dialogService: DialogService = null;\n private _fileService: GIPIFileService = null;\n private _matDialog: MatDialog = null;\n private _httpClient: HttpClient = null;\n private _changeDetectorRef: ChangeDetectorRef = null;\n private _matSnackBar: MatSnackBar = null;\n\n constructor(\n private _injector: Injector,\n private _router: Router,\n ) { }\n\n ngOnDestroy(): void { }\n\n get sessionStorageService(): GIPISessionStorageService {\n if (ObjectUtil.isNull(this._sessionStorageService)) {\n this._sessionStorageService = this._injector.get(GIPISessionStorageService);\n }\n return this._sessionStorageService;\n }\n\n get confirmationService(): ConfirmationService {\n if (ObjectUtil.isNull(this._confirmationService)) {\n this._confirmationService = this._injector.get(ConfirmationService);\n }\n return this._confirmationService;\n }\n\n get messageService(): MessageService {\n if (ObjectUtil.isNull(this._messageService)) {\n this._messageService = this._injector.get(MessageService);\n }\n return this._messageService;\n }\n\n get dialogService(): DialogService {\n if (ObjectUtil.isNull(this._dialogService)) {\n this._dialogService = this._injector.get(DialogService);\n }\n return this._dialogService;\n }\n\n get fileService(): GIPIFileService {\n if (ObjectUtil.isNull(this._fileService)) {\n this._fileService = this._injector.get(GIPIFileService);\n }\n return this._fileService;\n }\n\n get matDialog(): MatDialog {\n if (ObjectUtil.isNull(this._matDialog)) {\n this._matDialog = this._injector.get(MatDialog);\n }\n return this._matDialog;\n }\n\n get httpClient(): HttpClient {\n if (ObjectUtil.isNull(this._httpClient)) {\n this._httpClient = this._injector.get(HttpClient);\n }\n return this._httpClient;\n }\n\n get router(): Router {\n if (ObjectUtil.isNull(this._router)) {\n this._router = this._injector.get(Router);\n }\n return this._router;\n }\n\n get changeDetectorRef(): ChangeDetectorRef {\n if (ObjectUtil.isNull(this._changeDetectorRef)) {\n this._changeDetectorRef = this._injector.get(ChangeDetectorRef);\n }\n return this._changeDetectorRef;\n }\n\n get matSnackBar(): MatSnackBar {\n if (ObjectUtil.isNull(this._matSnackBar)) {\n this._matSnackBar = this._injector.get(MatSnackBar);\n }\n return this._matSnackBar;\n }\n\n}\n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { AlertComponent } from '../../components/alert/alert.component';\nimport { BaseUser } from '../../models/base-user.model';\nimport { MessageDTO } from '../../models/dto/message.dto';\nimport { TokenDTO } from '../../models/dto/token.dto';\nimport { StringUtil } from '../../utils/string.util';\nimport { UUIDUtil } from '../../utils/uuid.util';\nimport { GIPIBasePermission } from '../interface/base-permission.interface';\nimport { GIPIBaseService } from '../services/base.service';\nimport { GIPIUuid } from '../types/uuid.type';\n\n@Component({ template: '' })\nexport abstract class GIPIAbstractComponent implements OnInit, AfterViewInit, OnDestroy {\n\n private _loading: boolean = false;\n public set loading(value: boolean) {\n this._loading = value;\n }\n public get loading(): boolean {\n return this._loading;\n }\n\n private _basePermissionList: GIPIBasePermission = null;\n public set basePermissionList(value: GIPIBasePermission) {\n this._basePermissionList = value;\n }\n public get basePermissionList(): GIPIBasePermission {\n return this._basePermissionList;\n }\n\n constructor(\n protected baseService: GIPIBaseService,\n protected activatedRoute: ActivatedRoute,\n ) { }\n\n ngOnInit(): void {\n this.onInitForm();\n }\n\n ngAfterViewInit(): void {\n this.onAfterInitForm();\n }\n\n ngOnDestroy(): void {\n this.onDestroy();\n }\n\n public isCreating(): boolean {\n return this.baseService.router.url.split('/').filter(path => (path === 'new')).length > 0;\n }\n\n public isEditing(): boolean {\n return this.baseService.router.url.split('/').filter(path => (path === 'edit')).length > 0;\n }\n\n public isViewing(): boolean {\n return this.baseService.router.url.split('/').filter(path => (path === 'view')).length > 0;\n }\n\n public isListing(): boolean {\n return this.baseService.router.url.split('/').filter(path => (path === 'new') || (path === 'edit') || (path === 'view')).length === 0;\n }\n\n public hasPermission(permission: string): boolean {\n if (StringUtil.isEmpty(permission)) {\n return false;\n }\n const token: TokenDTO<BaseUser> = JSON.parse(localStorage.getItem('token'));\n return !!token.user.authorities.find(authority => authority.authority.match(permission));\n }\n\n public UUIDIsValid(id: GIPIUuid): boolean {\n return UUIDUtil.isValid(id);\n }\n\n protected onInitForm(): void { }\n\n protected onAfterInitForm(): void { }\n\n protected onDestroy(): void { }\n\n protected getPath(): string {\n return `${this.activatedRoute.snapshot.parent.parent.url[0].path}/${this.activatedRoute.snapshot.parent.url[0].path}`;\n }\n\n protected navigateByUrl(navigateByUrl: string, navigate: any[], skipLocationChange: boolean = true): void {\n this.baseService.router.navigateByUrl(navigateByUrl, { skipLocationChange: skipLocationChange }).then(() => this.baseService.router.navigate(navigate));\n }\n\n protected addMessage(message: MessageDTO): void {\n this.baseService.matSnackBar.openFromComponent(AlertComponent, {\n verticalPosition: 'top',\n horizontalPosition: 'center',\n duration: 5000,\n data: message\n });\n }\n\n protected addSuccessMessage(message: string): void {\n this.baseService.messageService.add({\n icon: 'check_circle',\n title: 'Sucesso',\n message: message,\n type: 'success'\n });\n }\n\n protected addErrorMessage(message: string): void {\n this.baseService.messageService.add({\n icon: 'cancel',\n title: 'Erro',\n message: message,\n type: 'error'\n });\n }\n\n protected addWarningMessage(message: string): void {\n this.baseService.messageService.add({\n icon: 'error',\n title: 'Atenção',\n message: message,\n type: 'warning'\n });\n }\n\n protected addInfoMessage(message: string): void {\n this.baseService.messageService.add({\n icon: 'info',\n title: 'Informação',\n message: message,\n type: 'info'\n });\n }\n\n protected handleError(error: any): void {\n this.loading = false;\n if (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 this.addErrorMessage(error);\n throw error;\n }\n\n public getExistInRouterPath(value: string, validateParams: boolean = false): boolean {\n const url: string = this.baseService.router.url;\n const pathList: string[] = url.slice(1, url.indexOf('?') + 1).split('/');\n const parameterList: string[] = url.slice(url.indexOf('?') + 1, url.length).split('=');\n\n if (validateParams) {\n return parameterList.filter(path => path.toUpperCase() === value.toUpperCase()).length > 0;\n } else {\n return pathList.filter(path => path.toUpperCase() === value.toUpperCase()).length > 0;\n }\n }\n\n}\n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\n\nimport { ActivatedRoute } from '@angular/router';\nimport { INJECTOR } from '../../../shared/shared.module';\nimport { APP_MESSAGES } from '../../app.messages';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { GIPIAbstractModel } from '../models/abstract.model';\nimport { GIPIAbstractCrudService } from '../services/abstract-crud.service';\nimport { GIPIBaseService } from '../services/base.service';\nimport { GIPIUuid } from '../types/uuid.type';\nimport { GIPIAbstractComponent } from './abstract.component';\n\n@Component({ template: '' })\nexport abstract class GIPIAbstractCrudComponent<TEntity extends GIPIAbstractModel> extends GIPIAbstractComponent implements OnInit, AfterViewInit, OnDestroy {\n\n private _entity: TEntity = this.newEntity();\n public set entity(value: TEntity) {\n this._entity = value;\n }\n public get entity(): TEntity {\n return this._entity;\n }\n\n constructor(\n protected abstractCrudService: GIPIAbstractCrudService<TEntity, any>,\n protected baseService: GIPIBaseService,\n protected activatedRoute: ActivatedRoute,\n ) {\n super(baseService, activatedRoute);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n if (ObjectUtil.isNull(this.basePermissionList)) {\n throw new Error('basePermissionList is required');\n }\n }\n\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n protected onInitForm(): void {\n try {\n this.loading = true;\n const id: GIPIUuid = this.activatedRoute.snapshot.params.id;\n\n if (this.UUIDIsValid(id)) {\n this.abstractCrudService.getOne<TEntity>(id).toPromise().then(entity => {\n this.entity = entity;\n this.onAfterGetOne();\n this.loading = false;\n }, error => {\n throw new Error(error);\n });\n } else {\n this.entity = this.newEntity();\n this.onAfterGetOne();\n this.loading = false;\n }\n } catch (e) {\n this.loading = false;\n throw new Error(e);\n }\n }\n\n\n protected abstract newEntity(): TEntity;\n\n protected abstract isValid(entity: TEntity): boolean;\n\n protected onAfterGetOne(): void { }\n\n protected preSave(entity: TEntity): void { }\n\n public save(entity?: TEntity, toGoBack: boolean = true): void {\n try {\n this.loading = true;\n if (ObjectUtil.isNull(entity)) {\n entity = this.entity;\n }\n if (this.isValid(entity)) {\n this.preSave(entity);\n\n this.abstractCrudService.save(entity).toPromise().then(resp => {\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n if (toGoBack) {\n this.navigateByUrl(this.getPath(), [this.getPath()], true);\n }\n }, error => {\n throw new Error(error);\n });\n }\n } catch (e) {\n this.loading = false;\n throw new Error(e);\n }\n }\n\n public goBack(showConfirmation: boolean = true): void {\n if (!this.isViewing() || showConfirmation) {\n this.baseService.confirmationService.confirm({\n title: 'Confirmação',\n message: INJECTOR.get(APP_MESSAGES).RETURN_CONFIRMATION,\n accept: () => this.navigateByUrl(this.getPath(), [this.getPath()], true)\n });\n } else {\n this.navigateByUrl(this.getPath(), [this.getPath()], true);\n }\n }\n\n}\n","export class GIPIPageModel<TEntity> {\n\n content: TEntity[];\n\n number: number;\n\n totalElements: number;\n\n totalPages: number;\n\n constructor() {\n this.content = [];\n this.number = 0;\n }\n\n}\n","import { GIPISortDirection, GIPISortDirectionEnum } from '../enums/sort-direction.enum';\n\nexport class GIPISortModel {\n\n direction: GIPISortDirectionEnum | GIPISortDirection;\n\n field: string;\n\n constructor(\n field: string,\n direction: GIPISortDirectionEnum | GIPISortDirection,\n ) {\n this.field = field;\n this.direction = direction;\n }\n\n}\n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { INJECTOR } from '../../../shared/shared.module';\nimport { APP_MESSAGES } from '../../app.messages';\nimport { TableColumnDTO } from '../../models/dto/table-column.dto';\nimport { TablePageEventDTO } from '../../models/dto/table-page-event.dto';\nimport { ArrayUtil } from '../../utils/array.util';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { StringUtil } from '../../utils/string.util';\nimport { GIPIAbstractFilterModel } from '../models/abstract-filter.model';\nimport { GIPIAbstractModel } from '../models/abstract.model';\nimport { GIPIAppliedFilter } from '../models/applied-filter.model';\nimport { GIPIPageModel } from '../models/page.model';\nimport { GIPISortModel } from '../models/sort.model';\nimport { GIPIAbstractCrudService } from '../services/abstract-crud.service';\nimport { GIPIBaseService } from '../services/base.service';\nimport { GIPIUuid } from '../types/uuid.type';\nimport { GIPIAbstractComponent } from './abstract.component';\n\n@Component({ template: '' })\nexport abstract class GIPIAbstractFindComponent<TEntity extends GIPIAbstractModel, TFilter extends GIPIAbstractFilterModel> extends GIPIAbstractComponent implements OnInit, AfterViewInit, OnDestroy {\n\n private _filter: TFilter = null;\n public set filter(value: TFilter) {\n this._filter = value;\n }\n public get filter(): TFilter {\n return this._filter;\n }\n\n private _page: GIPIPageModel<TEntity> = null;\n public set page(value: GIPIPageModel<TEntity>) {\n this._page = value;\n }\n public get page(): GIPIPageModel<TEntity> {\n return this._page;\n }\n\n private _tablePageEventDTO: TablePageEventDTO;\n public set tablePageEventDTO(value: TablePageEventDTO) {\n this._tablePageEventDTO = value;\n }\n public get tablePageEventDTO(): TablePageEventDTO {\n return this._tablePageEventDTO;\n }\n\n private _columns: TableColumnDTO[] = [];\n public set columns(value: TableColumnDTO[]) {\n this._columns = value;\n }\n public get columns(): TableColumnDTO[] {\n return this._columns;\n }\n\n private _appliedFilters: GIPIAppliedFilter<any>[] = [];\n public set appliedFilters(value: GIPIAppliedFilter<any>[]) {\n this._appliedFilters = value;\n }\n public get appliedFilters(): GIPIAppliedFilter<any>[] {\n return this._appliedFilters;\n }\n\n constructor(\n protected abstractCrudService: GIPIAbstractCrudService<TEntity, TFilter>,\n protected baseService: GIPIBaseService,\n protected activatedRoute: ActivatedRoute,\n ) {\n super(baseService, activatedRoute);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n if (ObjectUtil.isNull(this.basePermissionList)) {\n throw new Error('basePermissionList is required');\n }\n\n this._onInitFilter();\n this.columns = this.createTableColumns();\n }\n\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n protected abstract newFilter(): TFilter;\n\n protected abstract createTableColumns(): TableColumnDTO[];\n\n protected abstract setAppliedFilters(): void;\n\n protected abstract clearAppliedFilters(): void;\n\n public abstract removeAppliedFilters(filter: { chip: GIPIAppliedFilter<any>; index: number; }): void;\n\n protected abstract setFilterSessionStorage(): void;\n\n protected abstract handleFilterSessionStorage(): void;\n\n protected newPage(): GIPIPageModel<TEntity> {\n return new GIPIPageModel<TEntity>();\n }\n\n protected createTableSorts(): GIPISortModel[] {\n return [];\n }\n\n protected preDelete(id?: GIPIUuid): void { }\n\n protected existInAppliedFilters<T = any>(key: T): boolean {\n return (\n !ArrayUtil.isEmpty(this.appliedFilters) &&\n (this.appliedFilters.findIndex(e => e.key === key) >= 0)\n );\n }\n\n /** @Internal */\n protected _onInitFilter(): void {\n this.page = this.newPage();\n this.filter = this.newFilter();\n\n if (!ObjectUtil.isNull(this.filter)) {\n this.setAppliedFilters();\n }\n\n const filterSessionStorage = this.baseService.sessionStorageService.get('filter');\n if (!ObjectUtil.isNull(filterSessionStorage)) {\n this.handleFilterSessionStorage();\n }\n }\n\n public findAll(pageEvent?: any): void {\n try {\n this.loading = true;\n\n this.page = this.newPage();\n if (ObjectUtil.isNull(this.filter)) {\n this.filter = this.newFilter();\n }\n\n // if (ObjectUtil.isNull(pageEvent) && !ObjectUtil.isNull(this.tablePageEventDTO)) {\n // pageEvent = this.tablePageEventDTO;\n // }\n\n if (pageEvent) {\n this.tablePageEventDTO = pageEvent;\n this.filter.pageNumber = pageEvent.pageIndex;\n this.filter.pageSize = pageEvent.pageSize;\n this.filter.offset = pageEvent.pageIndex * pageEvent.pageSize;\n\n if (pageEvent.sort) {\n this.filter.sorts = [\n new GIPISortModel(\n pageEvent.sort.active,\n StringUtil.isEmpty(pageEvent.sort.direction) ? 'DESC' : pageEvent.sort.direction.toUpperCase()\n )\n ];\n }\n } else {\n this.filter.pageNumber = 0;\n this.filter.offset = 0;\n this.filter.pageSize = 10;\n }\n\n this.abstractCrudService.findAll<TFilter, TEntity>(this.filter).toPromise().then(page => {\n this.page = page;\n this.setAppliedFilters();\n this.loading = false;\n }, error => {\n this.loading = false;\n throw new Error(error);\n });\n } catch (e) {\n this.loading = false;\n throw new Error(e);\n }\n }\n\n public newRegister(permission?: string): void {\n if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {\n this.setFilterSessionStorage();\n this.navigateByUrl(this.getPath(), [this.getPath(), 'new'], true);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {\n permission = this.basePermissionList.MAKE;\n }\n if (!this.hasPermission(permission)) {\n this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);\n return;\n }\n\n this.setFilterSessionStorage();\n this.navigateByUrl(this.getPath(), [this.getPath(), 'new'], true);\n }\n }\n\n public editRegister(id?: GIPIUuid, permission?: string): void {\n id = this.handleEntityId(id);\n if (ObjectUtil.isNull(id)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {\n this.setFilterSessionStorage();\n this.navigateByUrl(this.getPath(), [this.getPath(), 'edit'], true);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {\n permission = this.basePermissionList.UPDATE;\n }\n if (!this.hasPermission(permission)) {\n this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);\n return;\n }\n\n this.setFilterSessionStorage();\n this.navigateByUrl(this.getPath(), [this.getPath(), 'edit', id], true);\n }\n }\n\n public deleteRegister(id?: GIPIUuid, permission?: string, fetchAgain: boolean = true): void {\n try {\n id = this.handleEntityId(id);\n if (ObjectUtil.isNull(id)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {\n this._deleteRegister(id, fetchAgain);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {\n permission = this.basePermissionList.DELETE;\n }\n if (!this.hasPermission(permission)) {\n this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);\n return;\n }\n\n this._deleteRegister(id, fetchAgain);\n }\n } catch (e) {\n this.loading = false;\n if (this.isListing()) {\n this.clear();\n }\n throw new Error(e);\n }\n }\n\n /** @Internal */\n private _deleteRegister(id: GIPIUuid, fetchAgain: boolean = true): void {\n try {\n this.baseService.confirmationService.confirm({\n title: 'Confirmação',\n message: INJECTOR.get(APP_MESSAGES).DELETE_CONFIRMATION,\n accept: () => {\n this.setFilterSessionStorage();\n\n this.loading = true;\n this.page = this.newPage();\n this.preDelete(id);\n\n this.abstractCrudService.delete<TEntity>(id).toPromise().then(() => {\n if (fetchAgain) {\n this.findAll();\n }\n this.loading = false;\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n }, error => {\n throw new Error(error);\n });\n }\n });\n } catch (e) {\n this.loading = false;\n throw new Error(e);\n }\n }\n\n public deleteAllRegister(idList?: GIPIUuid[], permission?: string, fetchAgain: boolean = true): void {\n try {\n idList = this.handleEntityIdList(idList);\n if (ObjectUtil.isNull(idList) || ArrayUtil.isEmpty(idList)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {\n this._deleteAllRegister(idList, fetchAgain);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {\n permission = this.basePermissionList.DELETE;\n }\n if (!this.hasPermission(permission)) {\n this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);\n return;\n }\n\n this._deleteAllRegister(idList, fetchAgain);\n }\n } catch (e) {\n this.loading = false;\n if (this.isListing()) {\n this.clear();\n }\n throw new Error(e);\n }\n }\n\n /** @Internal */\n private _deleteAllRegister(idList: GIPIUuid[], fetchAgain: boolean = true): void {\n try {\n this.baseService.confirmationService.confirm({\n title: 'Confirmação',\n message: INJECTOR.get(APP_MESSAGES).DELETE_CONFIRMATION,\n accept: () => {\n this.setFilterSessionStorage();\n\n this.loading = true;\n this.page = this.newPage();\n this.preDelete();\n\n this.abstractCrudService.deleteAll(idList).toPromise().then(() => {\n if (fetchAgain) {\n this.findAll();\n }\n this.loading = false;\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n }, error => {\n throw new Error(error);\n });\n }\n });\n } catch (e) {\n this.loading = false;\n throw new Error(e);\n }\n }\n\n public viewRegister(id?: GIPIUuid, permission?: string): void {\n id = this.handleEntityId(id);\n if (ObjectUtil.isNull(id)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {\n this.setFilterSessionStorage();\n this.navigateByUrl(this.getPath(), [this.getPath(), 'view', id], true);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {\n permission = this.basePermissionList.READ;\n }\n if (!this.hasPermission(permission)) {\n this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);\n return;\n }\n\n this.setFilterSessionStorage();\n this.navigateByUrl(this.getPath(), [this.getPath(), 'view', id], true);\n }\n }\n\n public editOrViewRegister(id: GIPIUuid, permission: string): void {\n if (this.hasPermission(permission)) {\n this.editRegister(id, permission);\n } else {\n this.viewRegister(id, permission);\n }\n }\n\n public enableOrDisableRegister(action: 'DISABLE' | 'ENABLE', id?: GIPIUuid, permission?: string, fetchAgain: boolean = true): void {\n try {\n id = this.handleEntityId(id);\n if (ObjectUtil.isNull(id)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {\n this._enableOrDisableRegister(action, id, fetchAgain);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {\n permission = this.basePermissionList.UPDATE;\n }\n if (!this.hasPermission(permission)) {\n this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);\n return;\n }\n\n this._enableOrDisableRegister(action, id, fetchAgain);\n }\n } catch (e) {\n this.loading = false;\n if (this.isListing()) {\n this.clear();\n }\n throw new Error(e);\n }\n }\n\n /** @Internal */\n private _enableOrDisableRegister(action: 'DISABLE' | 'ENABLE', id: GIPIUuid, fetchAgain: boolean = true): void {\n try {\n this.baseService.confirmationService.confirm({\n title: 'Confirmação',\n message: `Deseja realmente ${(action === 'DISABLE') ? 'inativar' : 'ativar'} este registro?`,\n accept: () => {\n this.setFilterSessionStorage();\n\n this.loading = true;\n this.page = this.newPage();\n\n this.abstractCrudService.enableOrDisable(id, action).toPromise().then(() => {\n if (fetchAgain) {\n this.findAll();\n }\n this.loading = false;\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n }, error => {\n throw new Error(error);\n });\n }\n });\n } catch (e) {\n this.loading = false;\n throw new Error(e);\n }\n }\n\n public enableAndDisableAllRegister(action: 'DISABLE' | 'ENABLE', idList?: GIPIUuid[], permission?: string, fetchAgain: boolean = true): void {\n try {\n idList = this.handleEntityIdList(idList);\n if (ObjectUtil.isNull(idList) || ArrayUtil.isEmpty(idList)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {\n this._enableAndDisableAllRegister(action, idList, fetchAgain);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {\n permission = this.basePermissionList.UPDATE;\n }\n if (!this.hasPermission(permission)) {\n this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);\n return;\n }\n\n this._enableAndDisableAllRegister(action, idList, fetchAgain);\n }\n } catch (e) {\n this.loading = false;\n if (this.isListing()) {\n this.clear();\n }\n throw new Error(e);\n }\n }\n\n /** @Internal */\n private _enableAndDisableAllRegister(action: 'DISABLE' | 'ENABLE', idList: GIPIUuid[], fetchAgain: boolean = true): void {\n try {\n this.baseService.confirmationService.confirm({\n title: 'Confirmação',\n message: `Deseja realmente ${(action === 'DISABLE') ? 'inativar' : 'ativar'} os registros selecionados?`,\n accept: () => {\n this.setFilterSessionStorage();\n\n this.loading = true;\n this.page = this.newPage();\n\n this.abstractCrudService.enableOrDisableAll(idList, action).toPromise().then(() => {\n if (fetchAgain) {\n this.findAll();\n }\n this.loading = false;\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n }, error => {\n throw new Error(error);\n });\n }\n });\n } catch (e) {\n this.loading = false;\n throw new Error(e);\n }\n }\n\n public clear(): void {\n this.baseService.sessionStorageService.remove('filter');\n this.page = this.newPage();\n this.filter = this.newFilter();\n this.clearAppliedFilters();\n this.findAll();\n }\n\n public handleEntityId(id: GIPIUuid): GIPIUuid {\n if (!this.UUIDIsValid(id)) {\n throw new Error('O identificador do registro não é válido');\n }\n\n if (ObjectUtil.isNull(id) && !ObjectUtil.isNull(this.page) && !ArrayUtil.isEmpty(this.page.content)) {\n const firstSeletected = this.page.content.filter(c => c.selected)[0];\n if (ObjectUtil.isNull(firstSeletected)) {\n return null;\n }\n\n return firstSeletected.id;\n }\n\n return id;\n }\n\n public handleEntityIdList(idList: GIPIUuid[]): GIPIUuid[] {\n if (!ArrayUtil.isEmpty(idList)) {\n for (let i = 0; i < idList.length; i++) {\n if (!this.UUIDIsValid(idList[i])) {\n throw new Error('O identificador do registro não é válido');\n }\n }\n }\n\n if (ArrayUtil.isEmpty(idList) && !ObjectUtil.isNull(this.page) && !ArrayUtil.isEmpty(this.page.content)) {\n const listSelected = this.page.content.filter(p => p.selected).map(p => p.id);\n if (ArrayUtil.isEmpty(listSelected)) {\n return null;\n }\n\n return listSelected;\n }\n\n return idList;\n }\n\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { RouterModule } from '@angular/router';\nimport { NgxCurrencyModule } from 'ngx-currency';\nimport { NgxMaskModule } from 'ngx-mask';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { AppMessages } from './app-messages';\nimport { APP_MESSAGES, DEFAULT_MESSAGES } from './app.messages';\n\nimport { AlertComponent } from './components/alert/alert.component';\n\nimport { GIPI_BREAKPOINTS, GIPI_CUSTOM_BREAKPOINTS_PROVIDER } from './custom-breakpoints';\nimport { AuthInterceptor } from './interceptors/auth.interceptor';\nimport { ErrorInterceptor } from './interceptors/error.interceptor';\n\nimport { ConfirmationService } from './services/confirmation.service';\nimport { DialogService } from './services/dialog.service';\nimport { MessageService } from './services/message.service';\nimport { NavService } from './services/nav.service';\nimport { SvgRegisterService } from './services/svg-register.service';\n\nimport { ObjectUtil } from './utils/object.util';\n\nimport { LocalTimePipe } from './pipes/local-time.pipe';\n\nimport { GIPIAbstractCrudComponent } from './gipi-components/components/abstract-crud.component';\nimport { GIPIAbstractFindComponent } from './gipi-components/components/abstract-find.component';\nimport { GIPIAbstractComponent } from './gipi-components/components/abstract.component';\n\nconst GIPIComponents: any[] = [\n GIPIAbstractCrudComponent,\n GIPIAbstractFindComponent,\n GIPIAbstractComponent,\n];\n\nexport const customCurrencyMaskConfig = {\n align: '',\n allowNegative: true,\n allowZero: true,\n decimal: ',',\n precision: 2,\n prefix: 'R$ ',\n suffix: '',\n thousands: '.',\n nullable: true,\n max: 999999999.99\n};\n\n@NgModule({\n declarations: [\n AlertComponent,\n LocalTimePipe,\n GIPIComponents,\n ],\n entryComponents: [\n AlertComponent,\n // GIPIComponents,\n ],\n imports: [\n BrowserAnimationsModule,\n OverlayModule,\n HttpClientModule,\n RouterModule,\n FlexLayoutModule.withConfig({ disableDefaultBps: true }, GIPI_BREAKPOINTS),\n MatIconModule,\n MatToolbarModule,\n MatSidenavModule,\n MatListModule,\n MatButtonModule,\n MatMenuModule,\n NgxMaskModule.forRoot(),\n NgxCurrencyModule.forRoot(customCurrencyMaskConfig),\n SharedModule\n ],\n exports: [\n LocalTimePipe,\n GIPIComponents,\n ],\n providers: [\n NavService,\n SvgRegisterService,\n MessageService,\n ConfirmationService,\n DialogService,\n GIPI_CUSTOM_BREAKPOINTS_PROVIDER,\n { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true }\n ]\n})\nexport class CoreModule {\n static setMessages(messages: AppMessages): ModuleWithProviders<CoreModule> {\n return {\n ngModule: CoreModule,\n providers: [\n { provide: APP_MESSAGES, useValue: !ObjectUtil.isNull(messages) ? messages : DEFAULT_MESSAGES }\n ]\n };\n }\n}\n","export enum LocalTimeEnum {\n FULL = 'FULL',\n SHORT = 'SHORT',\n}\n\nexport type LocalTimeType = 'FULL' | 'SHORT';\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { BaseUser } from '../models/base-user.model';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { ObjectUtil } from '../utils/object.util';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate, CanActivateChild {\n\n constructor(private router: Router, private authenticationService: AuthenticationService<BaseUser>) {\n }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n if (!ObjectUtil.isNull(this.authenticationService.tokenValueLocalStorage)) {\n return this.authenticationService.token.pipe(\n map(token => {\n if (this.authenticationService.isValidToken(token)) {\n return true;\n } else if (!ObjectUtil.isNull(token)) {\n this.authenticationService.removeToken();\n }\n this.router.navigate(['oauth/login'], { queryParams: { returnUrl: state.url } });\n return false;\n })\n );\n }\n this.router.navigate(['oauth/login'], { queryParams: { returnUrl: state.url } });\n return of(false);\n }\n\n canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n return this.canActivate(route, state);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { BaseUser } from '../models/base-user.model';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { ObjectUtil } from '../utils/object.util';\nimport { MenuDTO } from './../models/dto/menu.dto';\nimport { ArrayUtil } from './../utils/array.util';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionGuard implements CanActivate, CanActivateChild {\n\n constructor(private router: Router, private authenticationService: AuthenticationService<BaseUser>) { }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n if (!ObjectUtil.isNull(this.authenticationService.tokenValueLocalStorage)) {\n return this.authenticationService.token.pipe(\n map(token => {\n if (this.authenticationService.isValidToken(token)\n && (!this.hasPermission(token.user.menuList, state.url) && !this.hasAuthority(token.user, route.data.authority))) {\n this.router.navigate(['errors/403']);\n return false;\n }\n return true;\n })\n );\n }\n this.router.navigate(['errors/403']);\n return of(false);\n }\n\n hasAuthority(user: any, permission: string): boolean {\n return !!user.authorities.find(authority => authority.authority.match(permission));\n }\n\n hasPermission(menuList: MenuDTO[], url: string): boolean {\n for (const menu of menuList) {\n if (url.split('/').pop() === menu.route) {\n return true;\n } else if (!ArrayUtil.isEmpty(menu.menuList)) {\n return this.hasPermission(menu.menuList, url);\n }\n }\n return false;\n }\n\n canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n return this.canActivate(route, state);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { BaseUser } from '../models/base-user.model';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { ObjectUtil } from '../utils/object.util';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PublicGuard implements CanActivate, CanActivateChild {\n\n constructor(private router: Router, private authenticationService: AuthenticationService<BaseUser>) {\n }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n if (!ObjectUtil.isNull(this.authenticationService.tokenValueLocalStorage)) {\n return this.authenticationService.token.pipe(\n map(token => {\n if (this.authenticationService.isValidToken(token)) {\n this.router.navigate(['dashboard']);\n return false;\n }\n return true;\n })\n );\n }\n this.router.navigate(['dashboard']);\n return of(false);\n }\n\n canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n return this.canActivate(route, state);\n }\n}\n","export abstract class AbstractModel {\n\n id: number | string;\n\n}\n","import {AbstractModel} from './abstract.model';\nimport {MenuDTO} from './dto/menu.dto';\nimport {Authority} from './authority.model';\n\nexport class BaseUser extends AbstractModel {\n\n name: string;\n\n username: string;\n\n password: string;\n\n lastAccess: Date;\n\n authorities: Authority[];\n\n menuList: MenuDTO[];\n\n constructor() {\n super();\n this.menuList = [];\n }\n\n}\n","import {AbstractDTO} from './abstract.dto';\n\nexport class ChartDTO extends AbstractDTO {\n\n label: string;\n\n value: string;\n\n}\n","import { ComponentType } from '@angular/cdk/overlay';\nimport { TemplateRef } from '@angular/core';\nimport { DialogPosition } from '@angular/material';\nimport { AbstractDTO } from './abstract.dto';\n\nexport class DialogDTO<D = any> extends AbstractDTO {\n\n componentOrTemplateRef: ComponentType<any> | TemplateRef<any>;\n\n /** Classe personalizada para o painel de sobreposição. */\n panelClass?: string | string[];\n\n /** Se o usuário pode usar escape ou clicar no plano de fundo para fechar o modal. */\n disableClose?: boolean;\n\n /** Largura do dialog.*/\n width?: string;\n\n /** Altura do dialog. */\n height?: string;\n\n /** Largura mínima do dialog. Se um número for fornecido, serão assumidas unidades de pixels. */\n minWidth?: number | string;\n\n /** Altura mínima do dialog. Se um número for fornecido, serão assumidas unidades de pixels. */\n minHeight?: number | string;\n\n /** Largura máxima do dialog. Se um número for fornecido, serão assumidas unidades de pixels. O padrão é 80vw */\n maxWidth?: number | string;\n\n /** Altura máxima do dialog. Se um número for fornecido, serão assumidas unidades de pixels. */\n maxHeight?: number | string;\n\n /** Substituições de posição. */\n position?: DialogPosition;\n\n /** Dados sendo injetados no dialog */\n data?: D | null;\n\n /** Se a caixa de diálogo deve focar o primeiro elemento focável em aberto. */\n autoFocus?: boolean;\n\n /** Se a caixa de diálogo deve restaurar o foco para o elemento previamente focado, depois de fechado. */\n restoreFocus?: boolean;\n\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;\n\n}\n","import {AbstractDTO} from './abstract.dto';\nimport {SortDTO} from './sort.dto';\n\nexport class FilterDTO extends AbstractDTO {\n\n sorts: SortDTO[];\n\n pageNumber: number;\n\n pageSize: number;\n\n offset: number;\n\n}\n","import { RadioButtonEnum } from '../enums/radio-button.enum';\n\nexport class InputListboxDTO {\n\n radiobuttonSelected: RadioButtonEnum | string;\n\n entitiesSelected: any[];\n\n constructor(radiobuttonSelected: RadioButtonEnum | string = 'ALL', entitentitiesSelected: any[] = []) {\n this.radiobuttonSelected = radiobuttonSelected;\n this.entitiesSelected = entitentitiesSelected;\n }\n\n}\n","import { MenuType, MenuTypeEnum } from '../enums/menu-type.enum';\nimport { AbstractDTO } from './abstract.dto';\n\nexport class MenuDTO extends AbstractDTO {\n\n index?: number;\n\n name: string;\n\n icon?: string;\n\n svgIcon?: string;\n\n route?: string;\n\n module?: string;\n\n type: MenuTypeEnum | MenuType;\n\n menuList?: MenuDTO[];\n\n action?: Function;\n\n // @Transient\n expanded?: boolean;\n\n constructor() {\n super();\n this.menuList = [];\n this.expanded = false;\n }\n\n}\n\n\n","import { TemplateRef } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { AbstractModel } from '../abstract.model';\nimport { AbstractDTO } from './abstract.dto';\n\nexport class TableColumnDTO extends AbstractDTO {\n\n name: string;\n\n property: string;\n\n value: any;\n\n sortable = false;\n\n hiddenSm = false;\n\n visible = true;\n\n width: Observable<number | string>;\n\n marginLeft: Observable<number | string>;\n\n marginRight: Observable<number | string>;\n\n align: string;\n\n template: TemplateRef<any>;\n\n templateHeader: TemplateRef<any>;\n\n sliceLength: number;\n\n action: (obj: AbstractModel) => void;\n\n constructor(\n name: string,\n property: string,\n value: any,\n sortable: boolean,\n hiddenSm: boolean,\n visible: boolean,\n width: Observable<number | string>,\n marginLeft: Observable<number | string>,\n marginRight: Observable<number | string>,\n align: string,\n template: TemplateRef<any>,\n templateHeader: TemplateRef<any>,\n sliceLength: number,\n action: (obj: AbstractModel) => void\n ) {\n super();\n this.name = name;\n this.property = property;\n this.value = value;\n this.sortable = sortable;\n this.hiddenSm = hiddenSm;\n this.visible = visible;\n this.width = width;\n this.marginLeft = marginLeft;\n this.marginRight = marginRight;\n this.align = align;\n this.template = template;\n this.templateHeader = templateHeader;\n this.sliceLength = sliceLength;\n this.action = action;\n }\n\n}\n","import {BaseUser} from '../base-user.model';\nimport {AbstractDTO} from './abstract.dto';\n\nexport class TokenDTO<U extends BaseUser> extends AbstractDTO {\n\n user: U;\n\n accessToken: string;\n\n refreshToken: string;\n\n expiration: Date;\n\n}\n","export enum CriteriaOperationEnum {\n\n EQUALITY = 'EQUALITY',\n NEGATION = 'NEGATION',\n GREATER_THAN = 'GREATER_THAN',\n GREATER_THAN_OR_EQUAL = 'GREATER_THAN_OR_EQUAL',\n LESS_THAN = 'LESS_THAN',\n LESS_THAN_OR_EQUAL = 'LESS_THAN_OR_EQUAL',\n LIKE = 'LIKE',\n STARTS_WITH = 'STARTS_WITH',\n ENDS_WITH = 'ENDS_WITH',\n CONTAINS = 'CONTAINS',\n IN = 'IN'\n\n}\n","export enum CriteriaSortDirectionEnum {\n\n ASC = 'ASC',\n DESC = 'DESC'\n\n}\n","export enum MenuTypeEnum {\n GROUP = 'GROUP',\n COLLAPSABLE = 'COLLAPSABLE',\n ITEM = 'ITEM'\n}\n\nexport type MenuType = 'GROUP' | 'COLLAPSABLE' | 'ITEM';\n","export enum RadioButtonEnum {\n\n START_AND_END = 'Inicial/Final',\n BY_SELECTION = 'Por seleção',\n TO_OMIT = 'Omitir',\n ALL = 'Todos'\n\n}\n","import {AbstractModel} from './abstract.model';\n\nexport class MultitenantModel extends AbstractModel {\n\n tenantId: number;\n\n}\n","import {AbstractModel} from './abstract.model';\n\nexport class Permission extends AbstractModel {\n\n menu: string;\n\n make = true;\n\n update = true;\n\n read = true;\n\n delete = true;\n\n}\n","import {AbstractModel} from './abstract.model';\nimport {Permission} from './permission.model';\n\nexport class Role extends AbstractModel {\n\n name: string;\n\n permissionList: Permission[];\n\n constructor() {\n super();\n this.permissionList = [];\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { OnDestroy } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { catchError, map, takeUntil } from 'rxjs/operators';\n\nimport { AbstractModel } from '../models/abstract.model';\nimport { FilterDTO } from '../models/dto/filter.dto';\nimport { PageDTO } from '../models/dto/page.dto';\nimport { ObjectUtil } from '../utils/object.util';\nimport { StringUtil } from '../utils/string.util';\nimport { AbstractService } from './abstract.service';\n\nexport abstract class AbstractFindService<T extends AbstractModel, F extends FilterDTO> extends AbstractService implements OnDestroy {\n\n constructor(\n protected path: string,\n protected http: HttpClient\n ) {\n super();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n protected url(path?: string): string {\n const url = `api/${this.path}`;\n return path ? url.concat(`/${path}`) : url;\n }\n\n getOne(id: number | string): Observable<T> {\n return this.http.get(this.url(`${id}`), this.options()).pipe(\n takeUntil(this.onDestroy),\n map(this.mapper),\n catchError(this.handleError)\n );\n }\n\n find(filter?: F): Observable<PageDTO<any>> {\n return this.http.post(this.url('find-all'), filter, this.options()).pipe(\n takeUntil(this.onDestroy),\n map(this.mapper),\n catchError(this.handleError)\n );\n }\n\n findAll(): Observable<T[]> {\n return this.http.get(this.url(), this.options()).pipe(\n takeUntil(this.onDestroy),\n map(this.mapper),\n catchError(this.handleError)\n );\n }\n\n findAllEnabled(page: number, size: number): Observable<PageDTO<T>> {\n if ((!page) || (page && (page < 0))) {\n page = 0;\n }\n if ((!size) || (size && (size <= 0))) {\n size = 10;\n }\n\n return this.http.get(this.url(`find-all-enabled?page=${page}&size=${size}`), this.options()).pipe(\n takeUntil(this.onDestroy),\n map(this.mapper),\n catchError(this.handleError)\n );\n }\n\n /**\n * Pesquisa páginada por valor.\n * @param value valor para pesquisar\n * @param page página que ira consultar. default = 0;\n * @param size quantidade de registros a retornar. default = 10;\n * @param sort tipo de ordenação. default = null;\n * @returns Observable<PageDTO<T>>;\n */\n findByValue(value: string, page: number, size: number = 10, sort?: { property: string; direction: 'asc' | 'desc'; }): Observable<PageDTO<T>> {\n let lValue: string = value;\n if (value) {\n lValue = StringUtil.removeAccents(value).trim();\n } else {\n lValue = '';\n }\n if ((!page) || (page && (page < 0))) {\n page = 0;\n }\n if ((!size) || (size && (size <= 0))) {\n size = 10;\n }\n let lSort: string = '';\n if (!ObjectUtil.isNull(sort) && !StringUtil.isEmpty(sort.property)) {\n lSort = `&sort=${sort.property},${sort.direction}`;\n }\n\n return this.http.get(this.url(`find-by-value?page=${page}&size=${size}${lSort}&value=${lValue}`), this.options()).pipe(\n takeUntil(this.onDestroy),\n map(this.mapper),\n catchError(this.handleError)\n );\n }\n\n}\n\n","import { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { AbstractModel } from '../models/abstract.model';\nimport { FilterDTO } from '../models/dto/filter.dto';\nimport { AbstractFindService } from './abstract-find.service';\n\nexport abstract class AbstractCrudService<T extends AbstractModel, F extends FilterDTO> extends AbstractFindService<T, F> {\n\n path: string;\n\n returnPath: string;\n\n constructor(\n path: string,\n http: HttpClient,\n ) {\n super(path, http);\n this.path = path;\n }\n\n save(entity: T): Observable<T> {\n this.validate(entity);\n return this.http.post(this.url(), entity, this.options()).pipe(\n map(this.mapper),\n catchError(this.handleError)\n );\n }\n\n saveAll(entities: T[]): Observable<T[]> {\n entities.forEach(entity => this.validate(entity));\n return this.http.post(this.url('save-all'), entities, this.options()).pipe(\n map(this.mapper),\n catchError(this.handleError)\n );\n }\n\n delete(id: number | string): Observable<T> {\n return this.http.delete(this.url(`${id}`)).pipe(\n map(() => null),\n catchError(this.handleError)\n );\n }\n\n deleteAll(entities: T[]): Observable<T[]> {\n return this.http.post(this.url('delete-all'), entities, this.options()).pipe(\n map(this.mapper),\n catchError(this.handleError)\n );\n }\n\n validate(entity: T): void { }\n\n}\n","// tslint:disable\ninterface String {\n numberFullName(this: string, isCurrency?: boolean): string;\n}\n\n// Função para converter número no formato string para número por extenso.\nString.prototype.numberFullName = function (this: String, isCurrency: boolean): string {\n var ex: string[][] = [\n ['zero', 'um', 'dois', 'três', 'quatro', 'cinco', 'seis', 'sete', 'oito', 'nove', 'dez', 'onze', 'doze', 'treze', 'quatorze', 'quinze', 'dezesseis', 'dezessete', 'dezoito', 'dezenove'],\n ['dez', 'vinte', 'trinta', 'quarenta', 'cinquenta', 'sessenta', 'setenta', 'oitenta', 'noventa'],\n ['cem', 'cento', 'duzentos', 'trezentos', 'quatrocentos', 'quinhentos', 'seiscentos', 'setecentos', 'oitocentos', 'novecentos'],\n ['mil', 'milhão', 'bilhão', 'trilhão', 'quadrilhão', 'quintilhão', 'sextilhão', 'setilhão', 'octilhão', 'nonilhão', 'decilhão', 'undecilhão', 'dodecilhão', 'tredecilhão', 'quatrodecilhão', 'quindecilhão', 'sedecilhão', 'septendecilhão', 'octencilhão', 'nonencilhão']\n ];\n\n let a;\n let v;\n let i;\n let n = this.replace(isCurrency ? /[^,\\d]/g : /\\D/g, '').split(',');\n let e = ' e ';\n let $ = 'real';\n let d = 'centavo';\n let sl;\n\n for (var f = n.length - 1, l, j = -1, r = [], s = [], t = ''; ++j <= f; s = []) {\n j && (n[j] = (Number('.' + n[j]) * 1).toFixed(2).slice(2));\n\n if (!(a = (v = n[j]).slice((l = v.length) % 3).match(/\\d{3}/g), v = l % 3 ? [v.slice(0, l % 3)] : [], v = a ? v.concat(a) : v).length) {\n continue;\n }\n\n for (a = -1, l = v.length; ++a < l; t = '') {\n if (!(i = v[a] * 1)) {\n continue;\n }\n\n i % 100 < 20\n && (t += ex[0][i % 100])\n || i % 100 + 1 && (t += ex[1][(i % 100 / 10 >> 0) - 1] + (i % 10 ? e + ex[0][i % 10] : ''));\n\n s.push((i < 100 ? t : !(i % 100) ? ex[2][i == 100 ? 0 : i / 100 >> 0] : (ex[2][i / 100 >> 0] + e + t)) +\n (Number(t = String(l - a - 2)) > -1 ? ' ' + (i > 1 && Number(t) > 0 ? ex[3][t].replace('ão', 'ões') : ex[3][t]) : ''));\n }\n\n a = ((sl = s.length) > 1 ? (a = s.pop(), s.join(' ') + e + a) : s.join('') || ((!j && (Number(n[j + 1]) * 1 > 0) || r.length) ? '' : ex[0][0]));\n\n a && r.push(a + (isCurrency ? (' ' + (v.join('') * 1 > 1 ? j ? d + 's' : (/0{6,}$/.test(n[0]) ? 'de ' : '') + $.replace('l', 'is') : j ? d : $)) : ''));\n }\n\n return r.join(e);\n}\n","import { formatCurrency, formatPercent } from '@angular/common';\nimport { ObjectUtil } from './object.util';\nimport { StringUtil } from './string.util';\n\nimport '../extensions/string.extension';\n\n/** @dynamic */\nexport class CurrencyUtil {\n\n public static transform(value: number, digitsInfo?: string, isPercent?: boolean): string {\n if (!ObjectUtil.isNull(value)) {\n return isPercent\n ? formatPercent(value, 'pt', digitsInfo)\n : formatCurrency(value, 'pt', 'R$', digitsInfo);\n }\n\n return StringUtil.EMPTY;\n }\n\n public static transformNumberFullName(value: number, isCurrency: boolean = true): string {\n const valueFormatted: string = this.transform(value, '1.2-2');\n const valueNotCurrency: string = valueFormatted.substring(2).trim();\n return valueNotCurrency.numberFullName(isCurrency);\n }\n\n}\n","import * as BrasilianUtil from '@brazilian-utils/brazilian-utils';\nimport { STATES_DATA } from '@brazilian-utils/brazilian-utils/dist/common/states';\nimport { StringUtil } from './string.util';\n\nexport type AcronymState = keyof typeof STATES_DATA;\n\n/** @dynamic */\nexport class DocumentUtil {\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 public static isValidCpf(cpf: string): boolean {\n if (StringUtil.isEmpty(cpf)) {\n return false;\n }\n\n cpf = StringUtil.removeAccents(cpf);\n\n if (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 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 public static isValidCnpj(cnpj: string): boolean {\n if (StringUtil.isEmpty(cnpj)) {\n return false;\n }\n\n cnpj = StringUtil.removeAccents(cnpj);\n\n if (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 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 public static isValidStateRegistration(acronymState: AcronymState, stateRegistration: string): boolean {\n if (StringUtil.isEmpty(acronymState) || StringUtil.isEmpty(stateRegistration)) {\n return false;\n } else if (stateRegistration.toUpperCase() === 'ISENTO') {\n return true;\n } else {\n if (acronymState === 'GO') {\n const digits: string = BrasilianUtil.onlyNumbers(stateRegistration);\n return this.calcDigit(digits);\n } else {\n return BrasilianUtil.isValidIE(acronymState, stateRegistration);\n }\n }\n }\n\n public static isValidCep(cep: string): boolean {\n if (StringUtil.isEmpty(cep)) {\n return false;\n }\n\n return BrasilianUtil.isValidCEP(cep);\n }\n\n private static calcDigit(ie: string): boolean {\n const length: number = ie.length;\n const position: number = length - 1;\n let weight: number = length;\n const body: string = ie.substring(0, position);\n // const bodyInt: number = parseInt(body, 10);\n let sum: number = 0;\n\n body.split('').forEach((digit) => {\n sum += parseInt(digit, 10) * weight;\n weight--;\n });\n\n const rest: number = sum % 11;\n let dig: number = 11 - rest;\n\n let fatorG: number = 0;\n if ((Number(ie) >= 101031050) && (Number(ie) <= 101199979)) {\n fatorG = 1;\n }\n\n if (dig === 10) {\n dig = fatorG;\n } else if (dig === 11) {\n dig = 0;\n }\n\n const digIe: number = parseInt(ie.charAt(position), 10);\n return dig === digIe;\n }\n\n}\n","/** @dynamic */\nexport class EmailUtil {\n\n public static isValid(value: string): boolean {\n const regex: RegExp = /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/;\n return regex.test(value)\n && (value.includes('org')\n || value.includes('.com')\n || value.includes('.br')\n || value.includes('.net')\n || value.includes('.pt')\n || value.includes('.io')\n || value.includes('.ru')\n || value.includes('.uk')\n || value.includes('.de')\n || value.includes('.tk')\n || value.includes('.info')\n || value.includes('.nl')\n || value.includes('.eu')\n || value.includes('.it')\n || value.includes('.au')\n || value.includes('.fr')\n || value.includes('.site'));\n }\n\n}\n","import * as libPhone from 'libphonenumber-js';\n\nimport { NumberUtil } from './number.util';\nimport { StringUtil } from './string.util';\n\n/** @dynamic */\nexport class PhoneUtil {\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 public static maskLib(phoneNumber: string, state?: libPhone.Examples, country: libPhone.CountryCode = 'BR'): string {\n let exampleNumber: libPhone.PhoneNumber | undefined;\n\n if (!StringUtil.isEmpty(phoneNumber)) {\n const parsedNumber = libPhone.parsePhoneNumberFromString(phoneNumber, country);\n if (parsedNumber) {\n exampleNumber = parsedNumber;\n }\n } else {\n exampleNumber = libPhone.getExampleNumber(country, state);\n }\n\n if (exampleNumber) {\n const formattedNumber = exampleNumber.formatNational();\n return formattedNumber.replace(/\\d/g, '0');\n } else {\n throw new Error('Estado não suportado ou código de estado inválido.');\n }\n }\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 (error) {\n throw new Error('Erro ao formatar o número de telefone: ' + error.message);\n }\n }\n\n public static format(number: string, mask?: string): string {\n let numberNotFormatted: string = NumberUtil.onlyNumbers(number);\n let phoneFormatted: string = '';\n\n if (\n (numberNotFormatted.length < 8) ||\n (numberNotFormatted.length > 12) ||\n (!this.isPossible(numberNotFormatted) && !this.isValid(numberNotFormatted))\n ) {\n return numberNotFormatted;\n }\n\n if (StringUtil.isEmpty(mask)) {\n mask = this.mask(numberNotFormatted);\n }\n\n for (let i: number = 0, j: number = 0; i < mask.length && j < numberNotFormatted.length; i++) {\n phoneFormatted += mask.charAt(i) === '0' ? numberNotFormatted.charAt(j++) : mask.charAt(i);\n }\n\n return phoneFormatted;\n }\n\n public static mask(phone: string): string {\n const specialPrefixes: string[] = ['0900', '0800', '0700', '0600', '0500', '0400', '0300', '0200', '0100'];\n let 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: return '0000-0000';\n case 9: return '0 0000-0000';\n case 10: return '(00) 0000-0000';\n case 11: return '(00) 0 0000-0000';\n case 12: return '(000) 0 0000-0000';\n default: return '0*';\n }\n }\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 (error) {\n return false;\n }\n }\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 (error) {\n return false;\n }\n }\n\n public static getType(phoneNumber: string, country: libPhone.CountryCode = 'BR'): libPhone.NumberType | null {\n try {\n const parsedNumber = libPhone.parsePhoneNumberFromString(phoneNumber, country);\n return parsedNumber ? parsedNumber.getType() : null;\n } catch (error) {\n return null;\n }\n }\n\n public static isEqual(phoneNumber1: string, phoneNumber2: string, country: libPhone.CountryCode = 'BR'): 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 (error) {\n return false;\n }\n }\n\n}\n","import { TemplateRef } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { AbstractModel } from '../models/abstract.model';\nimport { TableColumnDTO } from '../models/dto/table-column.dto';\nimport { BreakpointObserverService } from '../services/breakpoint-observer.service';\n\n/** @dynamic */\nexport class TableColumnBuilder {\n\n private name$: string;\n\n private property$: string;\n\n private value$: any;\n\n private sortable$ = false;\n\n private hiddenSm$ = false;\n\n private visible$ = true;\n\n private width$: Observable<number | string>;\n\n private marginLeft$: Observable<number | string>;\n\n private marginRight$: Observable<number | string>;\n\n private align$ = 'start center';\n\n private template$: TemplateRef<any>;\n\n private templateHeader$: TemplateRef<any>;\n\n private sliceLength$: number;\n\n private action$: (obj: AbstractModel) => void;\n\n private breakpointObserverService$: BreakpointObserverService;\n\n constructor(breakpointObserverService?: BreakpointObserverService) {\n this.breakpointObserverService$ = breakpointObserverService;\n }\n\n public static instance(breakpointObserverService?: BreakpointObserverService): TableColumnBuilder {\n return new TableColumnBuilder(breakpointObserverService);\n }\n\n public name(name: any): TableColumnBuilder {\n this.name$ = name;\n return this;\n }\n\n public property(property: any): TableColumnBuilder {\n this.property$ = property;\n return this;\n }\n\n public value(value: any): TableColumnBuilder {\n this.value$ = value;\n return this;\n }\n\n public sortable(sortable: boolean): TableColumnBuilder {\n this.sortable$ = sortable;\n return this;\n }\n\n public hiddenSm(hiddenSm: boolean): TableColumnBuilder {\n this.hiddenSm$ = hiddenSm;\n return this;\n }\n\n public visible(visible: boolean): TableColumnBuilder {\n this.visible$ = visible;\n return this;\n }\n\n public width(width: number | string): TableColumnBuilder {\n this.width$ = of(width);\n return this;\n }\n\n public marginLeft(marginLeft: number | string): TableColumnBuilder {\n this.marginLeft$ = of(marginLeft);\n return this;\n }\n\n public marginRight(marginRight: number | string): TableColumnBuilder {\n this.marginRight$ = of(marginRight);\n return this;\n }\n\n public align(align: string): TableColumnBuilder {\n this.align$ = align;\n return this;\n }\n\n public breakpointWidth(breakpointMap: Map<string, string | number>): TableColumnBuilder {\n this.width$ = this.breakpointObserverService$.size$.pipe(map(breakpoint => {\n if (breakpointMap.has(breakpoint)) {\n return breakpointMap.get(breakpoint);\n }\n return 'auto';\n }));\n return this;\n }\n\n public template(template: TemplateRef<any>): TableColumnBuilder {\n this.template$ = template;\n return this;\n }\n\n public templateHeader(templateHeader: TemplateRef<any>): TableColumnBuilder {\n this.templateHeader$ = templateHeader;\n return this;\n }\n\n public sliceLength(sliceLength: number): TableColumnBuilder {\n this.sliceLength$ = sliceLength;\n return this;\n }\n\n public action(action: (obj: AbstractModel) => void): TableColumnBuilder {\n this.action$ = action;\n return this;\n }\n\n public build(): TableColumnDTO {\n return new TableColumnDTO(\n this.name$,\n this.property$,\n this.value$,\n this.sortable$,\n this.hiddenSm$,\n this.visible$,\n this.width$,\n this.marginLeft$,\n this.marginRight$,\n this.align$,\n this.template$,\n this.templateHeader$,\n this.sliceLength$,\n this.action$\n );\n }\n\n}\n","/** @dynamic */\nexport class URLParamsUtil {\n\n /** @Internal */\n private static _queryParams: URLSearchParams = new URLSearchParams(window.location.href);\n\n public static get(param: string): any {\n return this._queryParams.get(param);\n }\n\n public static has(param: string): boolean {\n return this._queryParams.has(param);\n }\n\n}\n","import { ɵComponentDef as ComponentDef, ɵɵdirectiveInject as directiveInject } from '@angular/core';\nimport { ObjectUtil } from '../../utils/object.util';\n\nexport type GIPIKey = string | symbol;\n\nexport type ClassRef<T = any> = new (...args: any[]) => T;\n\nexport const ƟPROV: 'ɵprov' = 'ɵprov';\nexport const ƟFAC: 'ɵfac' = 'ɵfac';\nexport const ƟCMP: 'ɵcmp' = 'ɵcmp';\n\nexport function getReflectType<T = any>(target: Object, propertyKey: string | symbol): ClassRef<T> {\n if (!(Reflect as any).getMetadata) {\n throw new Error(`You forgot add \"import 'reflect-metadata';\" to polyfills.ts`);\n }\n return (Reflect as any).getMetadata('design:type', target, propertyKey);\n}\n\nexport function GIPIAutowired(): PropertyDecorator {\n return (target: Object, propertyKey: GIPIKey) => {\n const isJIT: boolean = !target.constructor[ƟCMP];\n const classRef: ClassRef = getReflectType(target, propertyKey);\n\n // const inject = () => {\n // const compDef: ComponentDef<any> = target.constructor[ƟCMP];\n // const compFactory: any = compDef.factory || target.constructor[ƟFAC];\n // compDef.factory = function (...args: any[]) {\n // const instance = compFactory(...args);\n // instance[propertyKey] = directiveInject(classRef);\n // return instance;\n // }\n // };\n\n const inject = () => {\n const compDef: ComponentDef<any> = target.constructor[ƟCMP];\n let compFactory: any = null;\n if (!ObjectUtil.isNull(compDef)) {\n compFactory = compDef.factory;\n } else {\n compFactory = target.constructor[ƟFAC];\n }\n\n compDef.factory = function (...args: any[]) {\n const instance = compFactory(...args);\n instance[propertyKey] = directiveInject(classRef);\n return instance;\n }\n };\n\n isJIT\n ? Promise.resolve().then(inject).catch(() => {\n throw new Error(`An error occurred while injecting the class: ${classRef}`)\n })\n : inject();\n };\n}\n","export enum GIPISortDirectionEnum {\n ASC = 'ASC',\n DESC = 'DESC'\n}\n\nexport type GIPISortDirection = 'ASC' | 'DESC';\n","import { GIPISortModel } from './sort.model';\n\nexport class GIPIAbstractFilterModel {\n\n sorts: GIPISortModel[];\n\n pageNumber: number;\n\n pageSize: number;\n\n offset: number;\n\n /** @Transient */\n originScreen: string;\n\n}\n","import { GIPIUuid } from '../types/uuid.type';\n\nexport abstract class GIPIAbstractModel {\n\n id: GIPIUuid;\n\n enabled: boolean;\n\n /** @Transient */\n selected: boolean;\n\n}\n","export class GIPIAppliedFilter<T = any> {\n\n private _description: string;\n\n private _key: T;\n\n constructor(description: string, key: T) {\n this.description = description;\n this.key = key;\n }\n\n public set description(description: string) {\n this._description = description;\n }\n public get description(): string {\n return this._description;\n }\n\n public set key(key: T) {\n this._key = key;\n }\n public get key(): T {\n return this._key;\n }\n\n}\n","import { GIPIUuid } from '../../types/uuid.type';\n\nexport abstract class GIPIAbstractDTO {\n\n id: GIPIUuid;\n\n enabled: boolean;\n\n /** @Transient */\n selected: boolean;\n\n}\n","export class GIPIPageEvent {\n\n /** The current page index. */\n private _pageIndex: number;\n\n /** The current page size */\n private _pageSize: number;\n\n /** The current total number of items being paged */\n private _length: number;\n\n constructor(\n pageIndex?: number,\n pageSize?: number,\n length?: number\n ) {\n if (pageIndex && pageIndex >= 0) {\n this.pageIndex = pageIndex;\n }\n if (pageSize && pageSize >= 0) {\n this.pageSize = pageSize;\n }\n if (length && length >= 0) {\n this.length = length;\n }\n }\n\n /** O índice da página atual. */\n public get pageIndex(): number {\n return this._pageIndex;\n }\n public set pageIndex(value: number) {\n this._pageIndex = value;\n }\n\n /** O tamanho da página atual */\n public get pageSize(): number {\n return this._pageSize;\n }\n public set pageSize(value: number) {\n this._pageSize = value;\n }\n\n /** O número total atual de itens sendo paginados */\n public get length(): number {\n return this._length;\n }\n public set length(value: number) {\n this._length = value;\n }\n\n}\n","import {ElementRef, Injectable, Injector, ViewContainerRef} from '@angular/core';\nimport {ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef, PositionStrategy} from '@angular/cdk/overlay';\nimport {ComponentPortal, PortalInjector} from '@angular/cdk/portal';\n\nimport {PopoverContent, PopoverRef} from './popover-ref';\nimport {PopoverComponent} from './popover.component';\nimport {ObjectUtil} from '../../../core/utils/object.util';\n\nexport interface PopoverParams<T> {\n width?: string | number;\n height?: string | number;\n origin: ElementRef | HTMLElement;\n content: PopoverContent;\n data?: T;\n event?: MouseEvent;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PopoverService {\n\n\n constructor(private overlay: Overlay, private injector: Injector) {\n }\n\n open<T>({origin, content, data, width, height, event}: PopoverParams<T>): PopoverRef<T> {\n const overlayRef = this.overlay.create(this.getOverlayConfig({origin, width, height, event}));\n const popoverRef = new PopoverRef<T>(overlayRef, content, data);\n const injector = this.createInjector(popoverRef, this.injector);\n overlayRef.attach(new ComponentPortal(PopoverComponent, null, injector));\n\n return popoverRef;\n }\n\n private getOverlayConfig({origin, width, height, event}): OverlayConfig {\n return new OverlayConfig({\n hasBackdrop: true,\n width,\n height,\n backdropClass: 'popover-backdrop',\n positionStrategy: this.getOverlayPosition(origin, event),\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n }\n\n private getOverlayPosition(origin: ElementRef | HTMLElement, event?: MouseEvent): PositionStrategy {\n // @ts-ignore\n const offset = event.target.offsetTop - document.querySelector('.mat-sidenav-content').scrollTop;\n if (event) {\n return this.overlay.position()\n .global()\n .top(`${(offset + 50)}px`)\n .left(`${(event.clientX - 30)}px`);\n }\n return this.overlay.position()\n .flexibleConnectedTo(origin)\n .withPositions(this.getPositions())\n .withFlexibleDimensions(false)\n .withPush(false);\n }\n\n updatePosition(popoverRef: PopoverRef, event: MouseEvent): void {\n popoverRef.overlay.updatePositionStrategy(this.overlay.position()\n .global()\n .top(`${event.clientY}px`)\n .left(`${event.clientX}px`));\n }\n\n createInjector(popoverRef: PopoverRef, injector: Injector) {\n const tokens = new WeakMap([[PopoverRef, popoverRef]]);\n return new PortalInjector(injector, tokens);\n }\n\n private getPositions(): ConnectionPositionPair[] {\n return [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n ];\n }\n\n}\n","import { SortDirection } from '../types/sort-direction.type';\nimport { TableColumnModel } from './table-column.model';\n\nexport interface SortedColumn {\n sortDirection: SortDirection;\n column: TableColumnModel\n};\n","import { TemplateRef } from '@angular/core';\n\nimport { PipeTransformModel } from './pipe-transform.model';\n\nexport class TableColumnModel {\n\n private _name: string;\n\n private _property: string;\n\n private _value: string | number | Date | ((obj: object) => string | number);\n\n private _sortable: boolean = false;\n\n private _visible: boolean = true;\n\n private _checkboxable: boolean = false;\n\n private _columnSpan: number;\n\n private _columnSpanXs: number;\n\n private _columnSpanSm: number;\n\n private _columnSpanMd: number;\n\n private _columnSpanLg: number;\n\n private _columnSpanXl: number;\n\n private _minWidth: number;\n\n private _maxWidth: number;\n\n private _paddingInline: number;\n\n private _align: 'left' | 'center' | 'right';\n\n private _templateCell: TemplateRef<any>;\n\n private _templateHeader: TemplateRef<any>;\n\n private _sliceLength: number;\n\n /**\n * Sort comparator\n */\n private _comparator: any;\n\n private _pipe: PipeTransformModel;\n\n private _action: (obj: any) => void;\n\n constructor(\n name: string,\n property: string,\n value: string | number | Date | ((obj: object) => string | number),\n sortable: boolean,\n visible: boolean,\n checkboxable: boolean,\n columnSpan: number,\n columnSpanXs: number,\n columnSpanSm: number,\n columnSpanMd: number,\n columnSpanLg: number,\n columnSpanXl: number,\n minWidth: number,\n maxWidth: number,\n paddingInline: number,\n align: 'left' | 'center' | 'right',\n templateCell: TemplateRef<any>,\n templateHeader: TemplateRef<any>,\n sliceLength: number,\n comparator: any,\n pipe: PipeTransformModel,\n action: (obj: any) => void,\n ) {\n this._name = name;\n this._property = property;\n this._value = value;\n this._sortable = sortable;\n this._visible = visible;\n this._checkboxable = checkboxable;\n this._columnSpan = columnSpan;\n this._columnSpanXs = columnSpanXs;\n this._columnSpanSm = columnSpanSm;\n this._columnSpanMd = columnSpanMd;\n this._columnSpanLg = columnSpanLg;\n this._columnSpanXl = columnSpanXl;\n this._minWidth = minWidth;\n this._maxWidth = maxWidth;\n this._paddingInline = paddingInline;\n this._align = align;\n this._templateCell = templateCell;\n this._templateHeader = templateHeader;\n this._sliceLength = sliceLength;\n this._comparator = comparator;\n this._pipe = pipe;\n this._action = action;\n }\n\n public get name(): string {\n return this._name;\n }\n public set name(value: string) {\n this._name = value;\n }\n\n public get property(): string {\n return this._property;\n }\n public set property(value: string) {\n this._property = value;\n }\n\n public get value(): string | number | Date | ((obj: object) => string | number) {\n return this._value;\n }\n public set value(value: string | number | Date | ((obj: object) => string | number)) {\n this._value = value;\n }\n\n public get sortable(): boolean {\n return this._sortable;\n }\n public set sortable(value: boolean) {\n this._sortable = value;\n }\n\n public get visible(): boolean {\n return this._visible;\n }\n public set visible(value: boolean) {\n this._visible = value;\n }\n\n public get checkboxable(): boolean {\n return this._checkboxable;\n }\n public set checkboxable(value: boolean) {\n this._checkboxable = value;\n }\n\n public get columnSpan(): number {\n return this._columnSpan;\n }\n public set columnSpan(value: number) {\n this._columnSpan = value;\n }\n\n public get columnSpanXs(): number {\n return this._columnSpanXs;\n }\n public set columnSpanXs(value: number) {\n this._columnSpanXs = value;\n }\n\n public get columnSpanSm(): number {\n return this._columnSpanSm;\n }\n public set columnSpanSm(value: number) {\n this._columnSpanSm = value;\n }\n\n public get columnSpanMd(): number {\n return this._columnSpanMd;\n }\n public set columnSpanMd(value: number) {\n this._columnSpanMd = value;\n }\n\n public get columnSpanLg(): number {\n return this._columnSpanLg;\n }\n public set columnSpanLg(value: number) {\n this._columnSpanLg = value;\n }\n\n public get columnSpanXl(): number {\n return this._columnSpanXl;\n }\n public set columnSpanXl(value: number) {\n this._columnSpanXl = value;\n }\n\n public get minWidth(): number {\n return this._minWidth;\n }\n public set minWidth(value: number) {\n this._minWidth = value;\n }\n\n public get maxWidth(): number {\n return this._maxWidth;\n }\n public set maxWidth(value: number) {\n this._maxWidth = value;\n }\n\n public get paddingInline(): number {\n return this._paddingInline;\n }\n public set paddingInline(value: number) {\n this._paddingInline = value;\n }\n\n public get align(): 'left' | 'center' | 'right' {\n return this._align;\n }\n public set align(value: 'left' | 'center' | 'right') {\n this._align = value;\n }\n\n public get templateCell(): TemplateRef<any> {\n return this._templateCell;\n }\n public set templateCell(value: TemplateRef<any>) {\n this._templateCell = value;\n }\n\n public get templateHeader(): TemplateRef<any> {\n return this._templateHeader;\n }\n public set templateHeader(value: TemplateRef<any>) {\n this._templateHeader = value;\n }\n\n public get sliceLength(): number {\n return this._sliceLength;\n }\n public set sliceLength(value: number) {\n this._sliceLength = value;\n }\n\n public get comparator(): any {\n return this._comparator;\n }\n public set comparator(value: any) {\n this._comparator = value;\n }\n\n public get pipe(): PipeTransformModel {\n return this._pipe;\n }\n public set pipe(value: PipeTransformModel) {\n this._pipe = value;\n }\n\n public get action(): (obj: any) => void {\n return this._action;\n }\n public set action(value: (obj: any) => void) {\n this._action = value;\n }\n\n}\n","import { TemplateRef } from '@angular/core';\n\nimport { PipeTransformModel } from './pipe-transform.model';\nimport { TableColumnModel } from './table-column.model';\n\nexport class TableColumnBuilderModel {\n\n private _name$: string;\n\n private _property$: string;\n\n private _value$: string | number | Date | ((obj: object) => string | number);\n\n private _sortable$: boolean = false;\n\n private _visible$: boolean = true;\n\n private _checkboxable$: boolean = false;\n\n private _columnSpan$: number;\n\n private _columnSpanXs$: number;\n\n private _columnSpanSm$: number;\n\n private _columnSpanMd$: number;\n\n private _columnSpanLg$: number;\n\n private _columnSpanXl$: number;\n\n private _minWidth$: number;\n\n private _maxWidth$: number;\n\n private _paddingInline$: number;\n\n private _align$: 'left' | 'center' | 'right' = 'left';\n\n private _templateCell$: TemplateRef<any>;\n\n private _templateHeader$: TemplateRef<any>;\n\n private _sliceLength$: number;\n\n private _comparator$: number;\n\n private _pipe$: PipeTransformModel;\n\n private _action$: (obj: any) => void;\n\n constructor() { }\n\n public static instance(): TableColumnBuilderModel {\n return new TableColumnBuilderModel();\n }\n\n public name(name: string): TableColumnBuilderModel {\n this._name$ = name;\n return this;\n }\n\n public property(property: string): TableColumnBuilderModel {\n this._property$ = property;\n return this;\n }\n\n public value(value: string | number | Date | ((obj: object) => string | number)): TableColumnBuilderModel {\n this._value$ = value;\n return this;\n }\n\n public sortable(sortable: boolean): TableColumnBuilderModel {\n this._sortable$ = sortable;\n return this;\n }\n\n public visible(visible: boolean): TableColumnBuilderModel {\n this._visible$ = visible;\n return this;\n }\n\n public checkboxable(checkboxable: boolean): TableColumnBuilderModel {\n this._checkboxable$ = checkboxable;\n return this;\n }\n\n public columnSpan(columnSpan: number): TableColumnBuilderModel {\n this._columnSpan$ = columnSpan;\n return this;\n }\n\n public columnSpanXs(columnSpanXs: number): TableColumnBuilderModel {\n this._columnSpanXs$ = columnSpanXs;\n return this;\n }\n\n public columnSpanSm(columnSpanSm: number): TableColumnBuilderModel {\n this._columnSpanSm$ = columnSpanSm;\n return this;\n }\n\n public columnSpanMd(columnSpanMd: number): TableColumnBuilderModel {\n this._columnSpanMd$ = columnSpanMd;\n return this;\n }\n\n public columnSpanLg(columnSpanLg: number): TableColumnBuilderModel {\n this._columnSpanLg$ = columnSpanLg;\n return this;\n }\n\n public columnSpanXl(columnSpanXl: number): TableColumnBuilderModel {\n this._columnSpanXl$ = columnSpanXl;\n return this;\n }\n\n public minWidth(minWidth: number): TableColumnBuilderModel {\n this._minWidth$ = minWidth;\n return this;\n }\n\n public maxWidth(maxWidth: number): TableColumnBuilderModel {\n this._maxWidth$ = maxWidth;\n return this;\n }\n\n public paddingInline(paddingInline: number): TableColumnBuilderModel {\n this._paddingInline$ = paddingInline;\n return this;\n }\n\n public align(align: 'left' | 'center' | 'right'): TableColumnBuilderModel {\n this._align$ = align;\n return this;\n }\n\n public templateCell(templateCell: TemplateRef<any>): TableColumnBuilderModel {\n this._templateCell$ = templateCell;\n return this;\n }\n\n public templateHeader(templateHeader: TemplateRef<any>): TableColumnBuilderModel {\n this._templateHeader$ = templateHeader;\n return this;\n }\n\n public sliceLength(sliceLength: number): TableColumnBuilderModel {\n this._sliceLength$ = sliceLength;\n return this;\n }\n\n public comparator(comparator: number): TableColumnBuilderModel {\n this._comparator$ = comparator;\n return this;\n }\n\n public pipe(pipe: PipeTransformModel): TableColumnBuilderModel {\n this._pipe$ = pipe;\n return this;\n }\n\n public action(action: (obj: any) => void): TableColumnBuilderModel {\n this._action$ = action;\n return this;\n }\n\n public build(): TableColumnModel {\n return new TableColumnModel(\n this._name$,\n this._property$,\n this._value$,\n this._sortable$,\n this._visible$,\n this._checkboxable$,\n this._columnSpan$,\n this._columnSpanXs$,\n this._columnSpanSm$,\n this._columnSpanMd$,\n this._columnSpanLg$,\n this._columnSpanXl$,\n this._minWidth$,\n this._maxWidth$,\n this._paddingInline$,\n this._align$,\n this._templateCell$,\n this._templateHeader$,\n this._sliceLength$,\n this._comparator$,\n this._pipe$,\n this._action$,\n );\n }\n\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { MatDateFormats } from './date-formats';\n\n\nexport const MAT_NATIVE_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: null,\n },\n display: {\n dateInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\n monthYearLabel: { year: 'numeric', month: 'short' },\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthYearA11yLabel: { year: 'numeric', month: 'long' },\n }\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {GIPINgConfig as ɵg} from './shared/api/gipi-ng-config';\nexport {ITSS_SELECT_SEARCH_DEFAULT_OPTIONS as ɵo,ItssSelectSearchOptions as ɵp} from './shared/components/select-entity-paged/shared/default-options';\nexport {TextareaComponent as ɵj} from './shared/components/textarea/textarea.component';\nexport {InputSelectInfiniteScrollDirective as ɵn} from './shared/directives/input-select-infinite-scroll.directive';\nexport {LowerCaseDirective as ɵl} from './shared/directives/lower-case.directive';\nexport {SpaceDropDirective as ɵm} from './shared/directives/space-drop.directive';\nexport {UpperCaseDirective as ɵk} from './shared/directives/upper-case.directive';\nexport {GIPIChipsComponent as ɵh} from './shared/gipi-components/chips/chips.component';\nexport {DatepickerComponent as ɵr} from './shared/gipi-components/datepicker/datepicker/datepicker.component';\nexport {MAT_DATE_RANGE_INPUT_PARENT as ɵa} from './shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts';\nexport {MAT_CALENDAR_RANGE_STRATEGY_PROVIDER as ɵc,MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY as ɵb} from './shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy';\nexport {MatDatepickerBase as ɵd} from './shared/gipi-components/datepicker/mat-datepicker/datepicker-base';\nexport {MAT_FORM_FIELD as ɵe} from './shared/gipi-components/datepicker/mat-datepicker/datepicker-input';\nexport {MatDatepickerInputBase as ɵf} from './shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base';\nexport {GIPIFileDragAndDropDirective as ɵi} from './shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive';\nexport {MaterialModule as ɵq} from './shared/material.module';"],"names":["ZIndexUtils","MatSelect","Platform","nextUniqueId","OPTION_HEIGHT_PX","MAT_DATE_FORMATS","yearsPerPage","MatDialog","MatFormField","observableOf","moment","matDatepickerAnimations","MatRippleModule","MatDialogModule","stringify","MatSnackBar","GIPIComponents","BrasilianUtil.onlyNumbers","BrasilianUtil.isValidIE","BrasilianUtil.isValidCEP","libPhone.parsePhoneNumberFromString","libPhone.getExampleNumber","directiveInject"],"mappings":"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"}
|