@gipisistemas/ng-core 1.1.0 → 1.1.2
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 +28372 -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 +585 -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 +599 -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 +25941 -0
- package/fesm2015/gipisistemas-ng-core.js.map +1 -0
- package/fesm5/gipisistemas-ng-core.js +27966 -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 +137 -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,599 @@
|
|
1
|
+
import { __decorate, __metadata, __read, __spread } from "tslib";
|
2
|
+
import { animate, state, style, transition, trigger } from '@angular/animations';
|
3
|
+
import { AfterViewInit, Component, ContentChild, EventEmitter, Input, NgZone, OnChanges, OnInit, Output, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';
|
4
|
+
import { MatPaginator, MatSort, MatTableDataSource } from '@angular/material';
|
5
|
+
import { of } from 'rxjs';
|
6
|
+
import { delay } from 'rxjs/operators';
|
7
|
+
import { ArrayUtil, ObjectUtil, StringUtil } from '../../../core';
|
8
|
+
import { TableGroupHeaderDTO } from '../../../core/models/dto/table-group-header.dto';
|
9
|
+
var TableComponent = /** @class */ (function () {
|
10
|
+
function TableComponent(_ngZone) {
|
11
|
+
this._ngZone = _ngZone;
|
12
|
+
this._expandedRows = [];
|
13
|
+
this._scrollHeightCalc = 410;
|
14
|
+
this._isPopoverHover = null;
|
15
|
+
this._displayedColumns = [];
|
16
|
+
this.shadow = false;
|
17
|
+
this.columns = [];
|
18
|
+
this.paginator = false;
|
19
|
+
this.backendPagination = true;
|
20
|
+
this.paginatorPageIndex = 0;
|
21
|
+
this.paginatorLength = 0;
|
22
|
+
this.paginatorPageSize = 10;
|
23
|
+
this.paginatorPageSizeOptions = [10, 20, 30];
|
24
|
+
this.showPageSizeOptions = false;
|
25
|
+
this.loading = false;
|
26
|
+
this.expandable = false;
|
27
|
+
this.showHeader = true;
|
28
|
+
this.headerSticky = false;
|
29
|
+
this.groupHeaderSticky = false;
|
30
|
+
this.groupStartExpanded = false;
|
31
|
+
this.infiniteScroll = false;
|
32
|
+
this.scrollDelay = 1000;
|
33
|
+
this.scrollOffset = 1000;
|
34
|
+
this.isFiltering = false;
|
35
|
+
this.showColumnExpandableFixed = false;
|
36
|
+
this.expandableOneRow = false;
|
37
|
+
this.ignoreChildrenExpandRow = false;
|
38
|
+
this.sort = true;
|
39
|
+
this.clearSort = false;
|
40
|
+
this.sortActive = '';
|
41
|
+
this.sortDirection = 'asc';
|
42
|
+
this.rowExpanded = new EventEmitter();
|
43
|
+
this.dataChange = new EventEmitter(true);
|
44
|
+
this.page = new EventEmitter();
|
45
|
+
this.rowHover = new EventEmitter();
|
46
|
+
}
|
47
|
+
Object.defineProperty(TableComponent.prototype, "data", {
|
48
|
+
get: function () {
|
49
|
+
return this._dataValue;
|
50
|
+
},
|
51
|
+
set: function (data) {
|
52
|
+
this._dataValue = data;
|
53
|
+
this.dataChange.emit(this._dataValue);
|
54
|
+
},
|
55
|
+
enumerable: false,
|
56
|
+
configurable: true
|
57
|
+
});
|
58
|
+
Object.defineProperty(TableComponent.prototype, "matTableHeigth", {
|
59
|
+
get: function () {
|
60
|
+
var headerRowHeight;
|
61
|
+
if (!ObjectUtil.isNull(this._matHeaderRowRef)) {
|
62
|
+
headerRowHeight = this._matHeaderRowRef.elementRef.nativeElement.clientHeight;
|
63
|
+
}
|
64
|
+
var paginatorRowHeight;
|
65
|
+
var paginatorRef = this.backendPagination ? this._matBackendPaginatorRowRef : this._matFrontendPaginatorRowRef;
|
66
|
+
if (!ObjectUtil.isNull(paginatorRef)) {
|
67
|
+
paginatorRowHeight = paginatorRef.elementRef.nativeElement.clientHeight;
|
68
|
+
}
|
69
|
+
var matHeaderwHeight = headerRowHeight || 60;
|
70
|
+
var matPaginatorHeight = paginatorRowHeight || 57;
|
71
|
+
var pageSize = this.paginatorPageSize && (this.paginatorPageSize <= 10) ? this.paginatorPageSize : 10;
|
72
|
+
var setHeigth = this.headerSticky && (this.data.length > pageSize);
|
73
|
+
return of(setHeigth ? ((57 * pageSize) + matHeaderwHeight + matPaginatorHeight) + "px" : 'auto');
|
74
|
+
},
|
75
|
+
enumerable: false,
|
76
|
+
configurable: true
|
77
|
+
});
|
78
|
+
TableComponent.prototype.ngOnInit = function () { };
|
79
|
+
TableComponent.prototype.ngAfterViewInit = function () {
|
80
|
+
var _this = this;
|
81
|
+
setTimeout(function () {
|
82
|
+
if (!ObjectUtil.isNull(_this._dataSource)) {
|
83
|
+
_this._dataSource.sort = _this.matSort;
|
84
|
+
if (_this.paginator && !_this.backendPagination && !_this.infiniteScroll) {
|
85
|
+
_this._dataSource.paginator = _this.matFrontendPaginator;
|
86
|
+
}
|
87
|
+
}
|
88
|
+
if (_this.paginator && (_this.backendPagination || _this.infiniteScroll)) {
|
89
|
+
_this.onPage({
|
90
|
+
pageSize: _this.paginatorPageSize,
|
91
|
+
paginatorPageSizeOptions: _this.paginatorPageSizeOptions,
|
92
|
+
pageIndex: 0,
|
93
|
+
length: 0,
|
94
|
+
previousPageIndex: 0
|
95
|
+
});
|
96
|
+
}
|
97
|
+
if (!ObjectUtil.isNull(_this.actionsPopoverRef)) {
|
98
|
+
_this._contextPopover = null;
|
99
|
+
_this._isPopoverHover = false;
|
100
|
+
_this.closePopover(0);
|
101
|
+
var popover = document.getElementById('table-popover');
|
102
|
+
if (!ObjectUtil.isNull(popover)) {
|
103
|
+
popover.style.visibility = 'hidden';
|
104
|
+
}
|
105
|
+
}
|
106
|
+
});
|
107
|
+
};
|
108
|
+
TableComponent.prototype.ngOnChanges = function (changes) {
|
109
|
+
var _this = this;
|
110
|
+
setTimeout(function () {
|
111
|
+
if (changes.data) {
|
112
|
+
_this._createDataSource();
|
113
|
+
}
|
114
|
+
});
|
115
|
+
};
|
116
|
+
TableComponent.prototype._createDataSource = function () {
|
117
|
+
var columns = this.columns.filter(function (c) { return c.visible; }).map(function (c) { return c.property; });
|
118
|
+
if (!ObjectUtil.isNull(this.expandedRef)) {
|
119
|
+
columns = __spread(['expandedColumn'], columns);
|
120
|
+
}
|
121
|
+
if (!ObjectUtil.isNull(this.actionsRef)) {
|
122
|
+
columns = __spread(columns, ['actionsColumn']);
|
123
|
+
}
|
124
|
+
this._displayedColumns = columns;
|
125
|
+
if (this.infiniteScroll) {
|
126
|
+
var dataAll = [];
|
127
|
+
if (!this.isFiltering) {
|
128
|
+
if (!ObjectUtil.isNull(this._dataSource)) {
|
129
|
+
dataAll = ArrayUtil.clone(this._dataSource.data);
|
130
|
+
}
|
131
|
+
}
|
132
|
+
if (!ArrayUtil.isEmpty(this.data)) {
|
133
|
+
dataAll.push.apply(dataAll, __spread(this.data));
|
134
|
+
}
|
135
|
+
this._dataSource = new MatTableDataSource([]);
|
136
|
+
if (!StringUtil.isEmpty(this.groupByColumn) && !ObjectUtil.isNull(this.groupHeaderRef)) {
|
137
|
+
this._dataSource.data = this.genereteGroupsByColumn(dataAll);
|
138
|
+
}
|
139
|
+
else {
|
140
|
+
this._dataSource.data = dataAll;
|
141
|
+
}
|
142
|
+
this.data = dataAll;
|
143
|
+
this.dataChange.emit(this.data);
|
144
|
+
this.calcScrollHeight();
|
145
|
+
}
|
146
|
+
else {
|
147
|
+
this._dataSource = new MatTableDataSource([]);
|
148
|
+
if (!StringUtil.isEmpty(this.groupByColumn) && !ObjectUtil.isNull(this.groupHeaderRef)) {
|
149
|
+
this._dataSource.data = this.genereteGroupsByColumn(this.data);
|
150
|
+
}
|
151
|
+
else {
|
152
|
+
this._dataSource.data = this.data;
|
153
|
+
}
|
154
|
+
}
|
155
|
+
if (!ArrayUtil.isEmpty(this._dataSource.data)) {
|
156
|
+
this._dataSource.sort = this.matSort;
|
157
|
+
this.setSortingDataAccessor();
|
158
|
+
}
|
159
|
+
if (this.paginator && !this.backendPagination) {
|
160
|
+
this._dataSource.paginator = this.matFrontendPaginator;
|
161
|
+
}
|
162
|
+
// if (!this.groupStartExpanded && (this.groupHeaderRef || (this.expandable && this.expandedRef)) && !ArrayUtil.isEmpty(this._dataSource.data)) {
|
163
|
+
// this._dataSource.data.forEach(row => this.addCollapse(row));
|
164
|
+
// }
|
165
|
+
};
|
166
|
+
TableComponent.prototype.calcScrollHeight = function () {
|
167
|
+
if ((this._dataSource && (this._dataSource.data.length > 0)) && (Math.floor(this._scrollHeightCalc) <= 700)) {
|
168
|
+
this._scrollHeightCalc = 130 + (this._dataSource.data.length * 48);
|
169
|
+
}
|
170
|
+
};
|
171
|
+
TableComponent.prototype.onPage = function (pageEvent) {
|
172
|
+
this.paginatorPageSize = pageEvent.pageSize;
|
173
|
+
pageEvent.paginatorPageSizeOptions = ArrayUtil.isEmpty(pageEvent.paginatorPageSizeOptions) ? this.paginatorPageSizeOptions : pageEvent.paginatorPageSizeOptions;
|
174
|
+
this.page.emit(pageEvent);
|
175
|
+
};
|
176
|
+
TableComponent.prototype.isExpandedRow = function (row) {
|
177
|
+
if (ArrayUtil.isEmpty(this._expandedRows)) {
|
178
|
+
return of(false);
|
179
|
+
}
|
180
|
+
var index = this._expandedRows.findIndex(function (r) { return r === row; });
|
181
|
+
return of(index >= 0);
|
182
|
+
};
|
183
|
+
TableComponent.prototype.toggleExpandRow = function (row) {
|
184
|
+
var index = this._expandedRows.findIndex(function (r) { return r === row; });
|
185
|
+
if (ArrayUtil.isEmpty(this._expandedRows) || (index < 0)) {
|
186
|
+
this._expandedRows = [row];
|
187
|
+
this.rowExpanded.emit(row);
|
188
|
+
return;
|
189
|
+
}
|
190
|
+
var _expandedRowsAux = ArrayUtil.clone(this._expandedRows);
|
191
|
+
_expandedRowsAux.splice(index, 1);
|
192
|
+
this._expandedRows = ArrayUtil.clone(_expandedRowsAux);
|
193
|
+
this.rowExpanded.emit(null);
|
194
|
+
};
|
195
|
+
TableComponent.prototype.sortData = function (sort) {
|
196
|
+
if (this.infiniteScroll) {
|
197
|
+
this.data = [];
|
198
|
+
this.dataChange.emit([]);
|
199
|
+
this._dataSource = new MatTableDataSource([]);
|
200
|
+
this.calcScrollHeight();
|
201
|
+
}
|
202
|
+
this.onPage({
|
203
|
+
pageSize: this.paginatorPageSize,
|
204
|
+
pageIndex: 0,
|
205
|
+
length: 0,
|
206
|
+
previousPageIndex: 0,
|
207
|
+
paginatorPageSizeOptions: this.paginatorPageSizeOptions,
|
208
|
+
sort: sort
|
209
|
+
});
|
210
|
+
};
|
211
|
+
TableComponent.prototype.showPopover = function (event, data) {
|
212
|
+
var _this = this;
|
213
|
+
var popover = document.getElementById('table-popover');
|
214
|
+
if (!ObjectUtil.isNull(popover)) {
|
215
|
+
popover.style.visibility = 'hidden';
|
216
|
+
if (!this.loading) {
|
217
|
+
this._ngZone.runOutsideAngular(function () {
|
218
|
+
var domRectPopover = popover.getBoundingClientRect();
|
219
|
+
var domRectRow = event.currentTarget.getBoundingClientRect();
|
220
|
+
var cells = event.currentTarget.children;
|
221
|
+
if (domRectPopover && domRectRow) {
|
222
|
+
popover.style.visibility = 'visible';
|
223
|
+
popover.style.top = (domRectRow.top + domRectRow.height) - 1 + "px";
|
224
|
+
var startPosition_1 = 0;
|
225
|
+
var endPosition_1 = 0;
|
226
|
+
if (_this.columnInitial && (_this.columnInitial >= 0)) {
|
227
|
+
if (!cells[_this.columnInitial]) {
|
228
|
+
throw new Error('Initial column undefined or null');
|
229
|
+
}
|
230
|
+
startPosition_1 = cells[_this.columnInitial].getBoundingClientRect().left;
|
231
|
+
}
|
232
|
+
else {
|
233
|
+
startPosition_1 = domRectRow.left;
|
234
|
+
}
|
235
|
+
if (_this.columnFinal && (_this.columnFinal >= 0)) {
|
236
|
+
if (!cells[_this.columnFinal]) {
|
237
|
+
throw new Error('Final column undefined or null');
|
238
|
+
}
|
239
|
+
endPosition_1 = cells[_this.columnFinal].getBoundingClientRect().left - domRectPopover.width;
|
240
|
+
}
|
241
|
+
else {
|
242
|
+
endPosition_1 = domRectRow.right - domRectPopover.width;
|
243
|
+
}
|
244
|
+
_this._ngZone.run(function () {
|
245
|
+
if (event.clientX > startPosition_1 + 15 && event.clientX < endPosition_1) {
|
246
|
+
popover.style.left = event.clientX - 15 + "px";
|
247
|
+
}
|
248
|
+
else if (event.clientX <= startPosition_1) {
|
249
|
+
popover.style.left = startPosition_1 + "px";
|
250
|
+
}
|
251
|
+
else if (event.clientX >= endPosition_1) {
|
252
|
+
popover.style.left = endPosition_1 + "px";
|
253
|
+
}
|
254
|
+
});
|
255
|
+
}
|
256
|
+
});
|
257
|
+
}
|
258
|
+
}
|
259
|
+
this.rowHover.emit(data);
|
260
|
+
this._contextPopover = data;
|
261
|
+
};
|
262
|
+
/**
|
263
|
+
showPopover(event: MouseEvent, data: any): void {
|
264
|
+
const popover: HTMLElement = document.getElementById('table-popover');
|
265
|
+
if (!ObjectUtil.isNull(popover)) {
|
266
|
+
popover.style.visibility = 'hidden';
|
267
|
+
|
268
|
+
if (!this.loading) {
|
269
|
+
const domRectPopover = popover.getBoundingClientRect();
|
270
|
+
const domRectRow = (event.currentTarget as HTMLElement).getBoundingClientRect();
|
271
|
+
const cells = (event.currentTarget as HTMLTableRowElement).children;
|
272
|
+
|
273
|
+
if (domRectPopover && domRectRow) {
|
274
|
+
popover.style.visibility = 'visible';
|
275
|
+
popover.style.top = `${(domRectRow.top + domRectRow.height) - 1}px`;
|
276
|
+
|
277
|
+
let startPosition: number = 0;
|
278
|
+
let endPosition: number = 0;
|
279
|
+
|
280
|
+
if (this.columnInitial && (this.columnInitial >= 0)) {
|
281
|
+
if (!cells[this.columnInitial]) {
|
282
|
+
throw new Error('Initial column undefined or null');
|
283
|
+
}
|
284
|
+
startPosition = cells[this.columnInitial].getBoundingClientRect().left;
|
285
|
+
} else {
|
286
|
+
startPosition = domRectRow.left;
|
287
|
+
}
|
288
|
+
|
289
|
+
if (this.columnFinal && (this.columnFinal >= 0)) {
|
290
|
+
if (!cells[this.columnFinal]) {
|
291
|
+
throw new Error('Final column undefined or null');
|
292
|
+
}
|
293
|
+
endPosition = cells[this.columnFinal].getBoundingClientRect().left - domRectPopover.width;
|
294
|
+
} else {
|
295
|
+
endPosition = domRectRow.right - domRectPopover.width;
|
296
|
+
}
|
297
|
+
|
298
|
+
setTimeout(() => {
|
299
|
+
if (event.clientX > startPosition + 15 && event.clientX < endPosition) {
|
300
|
+
popover.style.left = `${event.clientX - 15}px`;
|
301
|
+
} else if (event.clientX <= startPosition) {
|
302
|
+
popover.style.left = `${startPosition}px`;
|
303
|
+
} else if (event.clientX >= endPosition) {
|
304
|
+
popover.style.left = `${endPosition}px`;
|
305
|
+
}
|
306
|
+
});
|
307
|
+
}
|
308
|
+
}
|
309
|
+
}
|
310
|
+
this.rowHover.emit(data);
|
311
|
+
this._contextPopover = data;
|
312
|
+
}
|
313
|
+
*/
|
314
|
+
TableComponent.prototype.closePopover = function (time) {
|
315
|
+
var _this = this;
|
316
|
+
of(null).pipe(delay(time)).subscribe(function () {
|
317
|
+
if (!ObjectUtil.isNull(_this._isPopoverHover) && !_this._isPopoverHover) {
|
318
|
+
if (!ObjectUtil.isNull(_this._isPopoverHover) && !ObjectUtil.isNull(_this.actionsPopoverRef)) {
|
319
|
+
var popover = document.getElementById('table-popover');
|
320
|
+
if (!ObjectUtil.isNull(popover)) {
|
321
|
+
popover.style.visibility = 'hidden';
|
322
|
+
}
|
323
|
+
}
|
324
|
+
_this._contextPopover = null;
|
325
|
+
_this._isPopoverHover = null;
|
326
|
+
}
|
327
|
+
});
|
328
|
+
};
|
329
|
+
TableComponent.prototype.setSortingDataAccessor = function () {
|
330
|
+
this._dataSource.sortingDataAccessor = function (data, sortHeaderId) {
|
331
|
+
if (typeof data[sortHeaderId] === 'string') {
|
332
|
+
return data[sortHeaderId].toLowerCase();
|
333
|
+
}
|
334
|
+
return data[sortHeaderId];
|
335
|
+
};
|
336
|
+
};
|
337
|
+
// group header
|
338
|
+
TableComponent.prototype.genereteGroupsByColumn = function (data) {
|
339
|
+
var _this = this;
|
340
|
+
var groups = data.reduce(function (group, row) {
|
341
|
+
var dataColumn = row[_this.groupByColumn].toString();
|
342
|
+
if (!group[dataColumn]) {
|
343
|
+
group[dataColumn] = [];
|
344
|
+
}
|
345
|
+
group[dataColumn].push(row);
|
346
|
+
return group;
|
347
|
+
}, {});
|
348
|
+
return Object.keys(groups).map(function (groupValue) {
|
349
|
+
return new TableGroupHeaderDTO(groupValue, groups[groupValue], groups[groupValue].length);
|
350
|
+
});
|
351
|
+
};
|
352
|
+
TableComponent.prototype.getHighlightRow = function (row) {
|
353
|
+
if (!ObjectUtil.isNull(row)) {
|
354
|
+
if (!ObjectUtil.isNull(this.highlightRowFn)) {
|
355
|
+
return this.highlightRowFn(row);
|
356
|
+
}
|
357
|
+
return false;
|
358
|
+
}
|
359
|
+
return false;
|
360
|
+
};
|
361
|
+
TableComponent.prototype.getIndexRow = function (row) {
|
362
|
+
if (!ObjectUtil.isNull(this._dataSource) && !ArrayUtil.isEmpty(this._dataSource.data) && !ObjectUtil.isNull(row)) {
|
363
|
+
return this._dataSource.data.findIndex(function (r) { return r === row; });
|
364
|
+
}
|
365
|
+
};
|
366
|
+
// infinite scroll
|
367
|
+
TableComponent.prototype.hasMore = function () {
|
368
|
+
return !this._dataSource || (this._dataSource.data.length < this.paginatorLength);
|
369
|
+
};
|
370
|
+
TableComponent.prototype.handleScroll = function (scrolled) {
|
371
|
+
if (scrolled && this.hasMore()) {
|
372
|
+
this.onPage({
|
373
|
+
pageSize: this.paginatorPageSize,
|
374
|
+
pageIndex: this.paginatorPageIndex,
|
375
|
+
length: this.paginatorLength,
|
376
|
+
previousPageIndex: this.paginatorPageIndex,
|
377
|
+
});
|
378
|
+
this.paginatorPageIndex += 1;
|
379
|
+
}
|
380
|
+
};
|
381
|
+
TableComponent.ctorParameters = function () { return [
|
382
|
+
{ type: NgZone }
|
383
|
+
]; };
|
384
|
+
__decorate([
|
385
|
+
ViewChild(MatSort, { static: true }),
|
386
|
+
__metadata("design:type", MatSort)
|
387
|
+
], TableComponent.prototype, "matSort", void 0);
|
388
|
+
__decorate([
|
389
|
+
ViewChild(MatPaginator, { static: true }),
|
390
|
+
__metadata("design:type", MatPaginator)
|
391
|
+
], TableComponent.prototype, "matPaginator", void 0);
|
392
|
+
__decorate([
|
393
|
+
ViewChild('frontendPaginator', { static: false }),
|
394
|
+
__metadata("design:type", MatPaginator)
|
395
|
+
], TableComponent.prototype, "matFrontendPaginator", void 0);
|
396
|
+
__decorate([
|
397
|
+
ViewChild('backendPaginator', { static: false }),
|
398
|
+
__metadata("design:type", MatPaginator)
|
399
|
+
], TableComponent.prototype, "matBackendPaginator", void 0);
|
400
|
+
__decorate([
|
401
|
+
ViewChild('matHeaderRow', { static: true }),
|
402
|
+
__metadata("design:type", TemplateRef)
|
403
|
+
], TableComponent.prototype, "_matHeaderRowRef", void 0);
|
404
|
+
__decorate([
|
405
|
+
ViewChild('frontendPaginator', { static: true }),
|
406
|
+
__metadata("design:type", TemplateRef)
|
407
|
+
], TableComponent.prototype, "_matFrontendPaginatorRowRef", void 0);
|
408
|
+
__decorate([
|
409
|
+
ViewChild('backendPaginator', { static: true }),
|
410
|
+
__metadata("design:type", TemplateRef)
|
411
|
+
], TableComponent.prototype, "_matBackendPaginatorRowRef", void 0);
|
412
|
+
__decorate([
|
413
|
+
ContentChild('actions', { static: false }),
|
414
|
+
__metadata("design:type", TemplateRef)
|
415
|
+
], TableComponent.prototype, "actionsRef", void 0);
|
416
|
+
__decorate([
|
417
|
+
ContentChild('actionsPopover', { static: false }),
|
418
|
+
__metadata("design:type", TemplateRef)
|
419
|
+
], TableComponent.prototype, "actionsPopoverRef", void 0);
|
420
|
+
__decorate([
|
421
|
+
ContentChild('footer', { static: false }),
|
422
|
+
__metadata("design:type", TemplateRef)
|
423
|
+
], TableComponent.prototype, "footerRef", void 0);
|
424
|
+
__decorate([
|
425
|
+
ContentChild('expanded', { static: false }),
|
426
|
+
__metadata("design:type", TemplateRef)
|
427
|
+
], TableComponent.prototype, "expandedRef", void 0);
|
428
|
+
__decorate([
|
429
|
+
ContentChild('groupHeader', { static: false }),
|
430
|
+
__metadata("design:type", TemplateRef)
|
431
|
+
], TableComponent.prototype, "groupHeaderRef", void 0);
|
432
|
+
__decorate([
|
433
|
+
ContentChild('groupFooter', { static: false }),
|
434
|
+
__metadata("design:type", TemplateRef)
|
435
|
+
], TableComponent.prototype, "groupFooterRef", void 0);
|
436
|
+
__decorate([
|
437
|
+
Input(),
|
438
|
+
__metadata("design:type", Boolean)
|
439
|
+
], TableComponent.prototype, "shadow", void 0);
|
440
|
+
__decorate([
|
441
|
+
Input(),
|
442
|
+
__metadata("design:type", Array)
|
443
|
+
], TableComponent.prototype, "columns", void 0);
|
444
|
+
__decorate([
|
445
|
+
Input(),
|
446
|
+
__metadata("design:type", Array),
|
447
|
+
__metadata("design:paramtypes", [Array])
|
448
|
+
], TableComponent.prototype, "data", null);
|
449
|
+
__decorate([
|
450
|
+
Input(),
|
451
|
+
__metadata("design:type", Boolean)
|
452
|
+
], TableComponent.prototype, "paginator", void 0);
|
453
|
+
__decorate([
|
454
|
+
Input(),
|
455
|
+
__metadata("design:type", Boolean)
|
456
|
+
], TableComponent.prototype, "backendPagination", void 0);
|
457
|
+
__decorate([
|
458
|
+
Input(),
|
459
|
+
__metadata("design:type", Number)
|
460
|
+
], TableComponent.prototype, "paginatorPageIndex", void 0);
|
461
|
+
__decorate([
|
462
|
+
Input(),
|
463
|
+
__metadata("design:type", Number)
|
464
|
+
], TableComponent.prototype, "paginatorLength", void 0);
|
465
|
+
__decorate([
|
466
|
+
Input(),
|
467
|
+
__metadata("design:type", Number)
|
468
|
+
], TableComponent.prototype, "paginatorPageSize", void 0);
|
469
|
+
__decorate([
|
470
|
+
Input(),
|
471
|
+
__metadata("design:type", Array)
|
472
|
+
], TableComponent.prototype, "paginatorPageSizeOptions", void 0);
|
473
|
+
__decorate([
|
474
|
+
Input(),
|
475
|
+
__metadata("design:type", Boolean)
|
476
|
+
], TableComponent.prototype, "showPageSizeOptions", void 0);
|
477
|
+
__decorate([
|
478
|
+
Input(),
|
479
|
+
__metadata("design:type", Boolean)
|
480
|
+
], TableComponent.prototype, "loading", void 0);
|
481
|
+
__decorate([
|
482
|
+
Input(),
|
483
|
+
__metadata("design:type", Boolean)
|
484
|
+
], TableComponent.prototype, "expandable", void 0);
|
485
|
+
__decorate([
|
486
|
+
Input(),
|
487
|
+
__metadata("design:type", Boolean)
|
488
|
+
], TableComponent.prototype, "showHeader", void 0);
|
489
|
+
__decorate([
|
490
|
+
Input(),
|
491
|
+
__metadata("design:type", Number)
|
492
|
+
], TableComponent.prototype, "columnInitial", void 0);
|
493
|
+
__decorate([
|
494
|
+
Input(),
|
495
|
+
__metadata("design:type", Number)
|
496
|
+
], TableComponent.prototype, "columnFinal", void 0);
|
497
|
+
__decorate([
|
498
|
+
Input(),
|
499
|
+
__metadata("design:type", Boolean)
|
500
|
+
], TableComponent.prototype, "headerSticky", void 0);
|
501
|
+
__decorate([
|
502
|
+
Input(),
|
503
|
+
__metadata("design:type", String)
|
504
|
+
], TableComponent.prototype, "groupByColumn", void 0);
|
505
|
+
__decorate([
|
506
|
+
Input(),
|
507
|
+
__metadata("design:type", Boolean)
|
508
|
+
], TableComponent.prototype, "groupHeaderSticky", void 0);
|
509
|
+
__decorate([
|
510
|
+
Input(),
|
511
|
+
__metadata("design:type", Boolean)
|
512
|
+
], TableComponent.prototype, "groupStartExpanded", void 0);
|
513
|
+
__decorate([
|
514
|
+
Input(),
|
515
|
+
__metadata("design:type", Function)
|
516
|
+
], TableComponent.prototype, "highlightRowFn", void 0);
|
517
|
+
__decorate([
|
518
|
+
Input(),
|
519
|
+
__metadata("design:type", Boolean)
|
520
|
+
], TableComponent.prototype, "infiniteScroll", void 0);
|
521
|
+
__decorate([
|
522
|
+
Input(),
|
523
|
+
__metadata("design:type", Number)
|
524
|
+
], TableComponent.prototype, "scrollDelay", void 0);
|
525
|
+
__decorate([
|
526
|
+
Input(),
|
527
|
+
__metadata("design:type", Number)
|
528
|
+
], TableComponent.prototype, "scrollOffset", void 0);
|
529
|
+
__decorate([
|
530
|
+
Input(),
|
531
|
+
__metadata("design:type", Number)
|
532
|
+
], TableComponent.prototype, "scrollHeigth", void 0);
|
533
|
+
__decorate([
|
534
|
+
Input(),
|
535
|
+
__metadata("design:type", Boolean)
|
536
|
+
], TableComponent.prototype, "isFiltering", void 0);
|
537
|
+
__decorate([
|
538
|
+
Input('columnExpandableFixed'),
|
539
|
+
__metadata("design:type", Boolean)
|
540
|
+
], TableComponent.prototype, "showColumnExpandableFixed", void 0);
|
541
|
+
__decorate([
|
542
|
+
Input(),
|
543
|
+
__metadata("design:type", Boolean)
|
544
|
+
], TableComponent.prototype, "expandableOneRow", void 0);
|
545
|
+
__decorate([
|
546
|
+
Input(),
|
547
|
+
__metadata("design:type", Boolean)
|
548
|
+
], TableComponent.prototype, "ignoreChildrenExpandRow", void 0);
|
549
|
+
__decorate([
|
550
|
+
Input(),
|
551
|
+
__metadata("design:type", Boolean)
|
552
|
+
], TableComponent.prototype, "sort", void 0);
|
553
|
+
__decorate([
|
554
|
+
Input(),
|
555
|
+
__metadata("design:type", Boolean)
|
556
|
+
], TableComponent.prototype, "clearSort", void 0);
|
557
|
+
__decorate([
|
558
|
+
Input(),
|
559
|
+
__metadata("design:type", String)
|
560
|
+
], TableComponent.prototype, "sortActive", void 0);
|
561
|
+
__decorate([
|
562
|
+
Input(),
|
563
|
+
__metadata("design:type", String)
|
564
|
+
], TableComponent.prototype, "sortDirection", void 0);
|
565
|
+
__decorate([
|
566
|
+
Output(),
|
567
|
+
__metadata("design:type", EventEmitter)
|
568
|
+
], TableComponent.prototype, "rowExpanded", void 0);
|
569
|
+
__decorate([
|
570
|
+
Output(),
|
571
|
+
__metadata("design:type", EventEmitter)
|
572
|
+
], TableComponent.prototype, "dataChange", void 0);
|
573
|
+
__decorate([
|
574
|
+
Output(),
|
575
|
+
__metadata("design:type", EventEmitter)
|
576
|
+
], TableComponent.prototype, "page", void 0);
|
577
|
+
__decorate([
|
578
|
+
Output(),
|
579
|
+
__metadata("design:type", EventEmitter)
|
580
|
+
], TableComponent.prototype, "rowHover", void 0);
|
581
|
+
TableComponent = __decorate([
|
582
|
+
Component({
|
583
|
+
selector: 'itss-table',
|
584
|
+
template: "<div [class.box-shadow]=\"shadow\"\n [style.height]=\"(matTableHeigth | async)\"\n style=\"background: transparent !important;\"\n fxLayout=\"column\"\n fxFlex>\n\n <itss-table-scrolled [more]=\"hasMore()\"\n [scrollOffset]=\"scrollOffset\"\n [scrollDelay]=\"scrollDelay\"\n (scrolled)=\"handleScroll($event)\"\n [ngStyle]=\"{'flex-basis': scrollHeigth ? scrollHeigth + 'px' : _scrollHeightCalc + 'px' }\"\n *ngIf=\"infiniteScroll; else table\">\n <ng-template *ngTemplateOutlet=\"table\"> </ng-template>\n </itss-table-scrolled>\n\n <ng-template #table>\n <mat-table matSort\n multiTemplateDataRows\n [dataSource]=\"_dataSource\"\n [matSortDisabled]=\"!sort\"\n [matSortDisableClear]=\"!clearSort\"\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection?.toLocaleLowerCase()\"\n (matSortChange)=\"sortData($event)\"\n (mouseleave)=\"_isPopoverHover = false; closePopover(0)\">\n\n <ng-container *ngIf=\"expandedRef\"\n cdkColumnDef=\"expandedColumn\">\n <mat-header-cell fxFlex=\"5\"\n fxLayoutAlign=\"end center\"\n *cdkHeaderCellDef>\n </mat-header-cell>\n <mat-cell fxFlex=\"5\"\n fxLayoutAlign=\"end center\"\n *cdkCellDef=\"let row\">\n <itss-button tooltip=\"Expandir | Retrair\"\n color=\"primary\"\n type=\"icon\"\n *ngIf=\"((row?.children) && (row.children.length > 0)) || (row?.expandable) || showColumnExpandableFixed\"\n [icon]=\"(isExpandedRow(row) | async) ? 'expand_more' : 'chevron_right'\"\n (click)=\"toggleExpandRow(row)\">\n </itss-button>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngFor=\"let column of columns\"\n [cdkColumnDef]=\"column.property\">\n <div *ngIf=\"column.sortable\">\n <mat-header-cell [fxFlex]=\"column.width | async\"\n [fxLayoutAlign]=\"column.align\"\n [ngStyle]=\"{'padding-left': column.sortable && column.align !== '' && (column.align.toLowerCase() === 'center' || column.align.toLowerCase() === 'center center') ? '15px' : '' }\"\n [style.padding-left.px]=\"column.marginLeft | async\"\n [style.padding-right.px]=\"column.marginRight | async\"\n *cdkHeaderCellDef\n mat-sort-header>\n {{ column.name }}\n </mat-header-cell>\n </div>\n <div *ngIf=\"!column.sortable\">\n <mat-header-cell [fxFlex]=\"column.width | async\"\n [fxHide.lt-md]=\"column.hiddenSm\"\n [fxLayoutAlign]=\"column.align\"\n [style.padding-left.px]=\"column.marginLeft | async\"\n [style.padding-right.px]=\"column.marginRight | async\"\n *cdkHeaderCellDef>\n <ng-container *ngIf=\"column.name; else templateHeader\">\n {{ column.name }}\n </ng-container>\n\n <ng-template #templateHeader>\n <ng-container *ngIf=\"column.templateHeader\">\n <ng-container [ngTemplateOutlet]=\"column.templateHeader\"\n [ngTemplateOutletContext]=\"{$implicit: data}\">\n </ng-container>\n </ng-container>\n </ng-template>\n </mat-header-cell>\n </div>\n <mat-cell [fxFlex]=\"column.width | async\"\n [fxHide.lt-md]=\"column.hiddenSm\"\n [fxHide]=\"!column.visible\"\n [fxLayoutAlign]=\"column.align\"\n [class.mat-cell-pointer]=\"column.action\"\n [style.padding-left.px]=\"column.marginLeft | async\"\n [style.padding-right.px]=\"column.marginRight | async\"\n (click)=\"column.action ? column.action(row) : null\"\n *cdkCellDef=\"let row\">\n <ng-container *ngIf=\"column.value; else template\">\n {{ (column.value(row) && (column.value(row).length > (column.sliceLength ? column.sliceLength :\n 50)))\n ? (column.value(row) | slice:0:(column.sliceLength ? column.sliceLength : 50)) + '...'\n : column.value(row) }}\n </ng-container>\n\n <ng-template #template>\n <ng-container *ngIf=\"column.template\">\n <ng-container [ngTemplateOutlet]=\"column.template\"\n [ngTemplateOutletContext]=\"{$implicit: row}\">\n </ng-container>\n </ng-container>\n </ng-template>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngIf=\"actionsRef\"\n cdkColumnDef=\"actionsColumn\">\n <mat-header-cell fxFlex.gt-md=\"15\"\n fxLayoutAlign=\"center center\"\n *cdkHeaderCellDef>\n A\u00E7\u00F5es\n </mat-header-cell>\n <mat-cell fxFlex=\"15\"\n fxLayoutAlign=\"center center\"\n *cdkCellDef=\"let row\">\n <ng-template [ngTemplateOutlet]=\"actionsRef\"\n [ngTemplateOutletContext]=\"{$implicit: row}\">\n </ng-template>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngIf=\"expandedRef\"\n matColumnDef=\"expandedDetail\">\n <mat-cell *matCellDef=\"let row\"\n fxFlexFill\n class=\"cell-element-detail\">\n <div class=\"element-detail\"\n *ngIf=\"!ignoreChildrenExpandRow ? (row.children.length > 0) : ignoreChildrenExpandRow\"\n [class.collapsed]=\"!(isExpandedRow(row) | async)\"\n [class.expanded]=\"(isExpandedRow(row) | async)\">\n <ng-template [ngTemplateOutlet]=\"expandedRef\"\n [ngTemplateOutletContext]=\"{$implicit: row}\">\n </ng-template>\n </div>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngIf=\"groupByColumn && groupHeaderRef\"\n matColumnDef=\"groupHeader\">\n <mat-cell fxFlex\n [attr.colspan]=\"columns.length\"\n *matCellDef=\"let rowGroup\"\n style=\"cursor: pointer;\"\n [class.group-header-cell-collapsed]=\"!(isExpandedRow(rowGroup) | async)\"\n [class.group-header-cell-expanded]=\"(isExpandedRow(rowGroup) | async)\"\n (click)=\"toggleExpandRow(rowGroup)\">\n <div class=\"group-header-cell\">\n <itss-button *ngIf=\"rowGroup.childrenGroup.length > 0\"\n [icon]=\"(isExpandedRow(rowGroup) | async) ? 'expand_more' : 'chevron_right'\"\n style.margin-right=\"1.25rem\"\n color=\"primary\"\n type=\"icon\"\n tooltip=\"Expandir | Retrair\">\n </itss-button>\n\n <ng-template [ngTemplateOutlet]=\"groupHeaderRef\"\n [ngTemplateOutletContext]=\"{$implicit: rowGroup}\">\n </ng-template>\n </div>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngIf=\"groupByColumn && groupHeaderRef\"\n matColumnDef=\"expandedGroupHeader\">\n <mat-cell *matCellDef=\"let rowGroup\"\n fxFlexFill>\n <div class=\"element-detail\"\n *ngIf=\"rowGroup.childrenGroup.length > 0\"\n [class.collapsed]=\"!(isExpandedRow(rowGroup) | async)\"\n [class.expanded]=\"(isExpandedRow(rowGroup) | async)\">\n\n <itss-table *ngIf=\"rowGroup.childrenGroup.length > 0; else noChildrenGroup\"\n [paginator]=\"false\"\n [shadow]=\"false\"\n [showHeader]=\"false\"\n [columns]=\"columns\"\n [data]=\"rowGroup.childrenGroup\"\n class=\"table-level-1\"\n fxFlexFill>\n <ng-template #footer\n *ngIf=\"groupByColumn && groupHeaderRef && groupFooterRef\">\n <ng-template [ngTemplateOutlet]=\"groupFooterRef\"\n [ngTemplateOutletContext]=\"{$implicit: rowGroup}\">\n </ng-template>\n </ng-template>\n </itss-table>\n\n <ng-template #noChildrenGroup>\n <div *ngIf=\"!loading\"\n class=\"no-records\">\n <mat-icon>sentiment_very_dissatisfied</mat-icon>\n <span>Nenhum registro foi encontrado</span>\n </div>\n </ng-template>\n </div>\n </mat-cell>\n </ng-container>\n\n <mat-header-row #matHeaderRow\n (mouseenter)=\"_isPopoverHover = false; closePopover(0)\"\n *matHeaderRowDef=\"_displayedColumns; sticky: headerSticky || groupHeaderSticky\"\n [ngClass]=\"{ 'hidden-header': !showHeader }\">\n </mat-header-row>\n\n <div *ngIf=\"!loading && !expandable && !actionsPopoverRef && !groupByColumn && !groupHeaderRef\">\n <mat-row (mouseover)=\"rowHover.emit(row)\"\n *matRowDef=\"let row; columns: _displayedColumns;\"\n [ngClass]=\"{ 'hoversimulator': row.isMouseHover === true }\"\n [class.highlight]=\"getHighlightRow(row)\"\n [attr.id]=\"'row_'+ getIndexRow(row)\">\n </mat-row>\n </div>\n\n <div *ngIf=\"!loading && !expandable && actionsPopoverRef && !groupByColumn && !groupHeaderRef\">\n <mat-row #rowTemplate\n *matRowDef=\"let row; columns: _displayedColumns;\"\n class=\"element-row\"\n (mousemove)=\"showPopover($event, row)\"\n [class.hoversimulator]=\"_contextPopover === row\"\n [class.highlight]=\"getHighlightRow(row)\"\n [attr.id]=\"'row_'+ getIndexRow(row)\">\n </mat-row>\n </div>\n\n <div *ngIf=\"!loading && expandable && !actionsPopoverRef && !groupByColumn && !groupHeaderRef\">\n <mat-row *matRowDef=\"let row; columns: _displayedColumns;\"\n class=\"element-row\"\n [class.expanded-row]=\"(isExpandedRow(row) | async)\"\n [ngClass]=\"{ 'hoversimulator': row.isMouseHover === true }\"\n [class.highlight]=\"getHighlightRow(row)\"\n [attr.id]=\"'row_'+ getIndexRow(row)\"\n (mouseover)=\"rowHover.emit(row)\"\n (click)=\"toggleExpandRow(row)\">\n </mat-row>\n\n <mat-row *matRowDef=\"let row; columns: ['expandedDetail'];\"\n class=\"detail-row\"\n [attr.id]=\"'row_expand'+ getIndexRow(row)\">\n </mat-row>\n </div>\n\n <div *ngIf=\"!loading && expandable && actionsPopoverRef && !groupByColumn && !groupHeaderRef\">\n <mat-row #rowTemplate\n *matRowDef=\"let row; columns: _displayedColumns;\"\n class=\"element-row\"\n [class.hoversimulator]=\"_contextPopover === row\"\n [class.expanded-row]=\"(isExpandedRow(row) | async)\"\n [class.highlight]=\"getHighlightRow(row)\"\n [attr.id]=\"'row_'+ getIndexRow(row)\"\n (mousemove)=\"showPopover($event, row)\"\n (click)=\"toggleExpandRow(row)\">\n </mat-row>\n\n <mat-row *matRowDef=\"let row; columns: ['expandedDetail'];\"\n class=\"detail-row\"\n [attr.id]=\"'row_expand'+ getIndexRow(row)\">\n </mat-row>\n </div>\n\n <div *ngIf=\"!loading && !expandable && !actionsPopoverRef && groupByColumn && groupHeaderRef\">\n <mat-row *matRowDef=\"let row; columns: ['groupHeader'];\"\n class=\"element-row\"\n [class.expanded-row]=\"(isExpandedRow(row) | async)\"\n [class.group-header-sticky]=\"groupHeaderSticky\"\n [ngClass]=\"{ 'hoversimulator': row.isMouseHover === true }\"\n [class.highlight]=\"getHighlightRow(row)\"\n [attr.id]=\"'row_'+ getIndexRow(row)\"\n (mouseover)=\"rowHover.emit(row)\"\n (click)=\"toggleExpandRow(row)\">\n </mat-row>\n\n <mat-row *matRowDef=\"let row; columns: ['expandedGroupHeader'];\"\n class=\"detail-row\"\n [attr.id]=\"'row_group'+ getIndexRow(row)\">\n </mat-row>\n </div>\n </mat-table>\n\n <mat-progress-bar mode=\"indeterminate\"\n color=\"accent\"\n *ngIf=\"loading\">\n </mat-progress-bar>\n\n <div *ngIf=\"!loading && (data && (data.length > 0)) && footerRef\"\n class=\"footer-row\"\n fxLayout=\"column\"\n fxLayoutGap=\"10px\">\n <ng-template [ngTemplateOutlet]=\"footerRef\"\n [ngTemplateOutletContext]=\"{$implicit: data}\">\n </ng-template>\n </div>\n\n <div *ngIf=\"!loading && (data && (data.length <= 0))\"\n class=\"no-records\">\n <mat-icon>sentiment_very_dissatisfied</mat-icon>\n <span>Nenhum registro foi encontrado</span>\n </div>\n\n <ng-container *ngIf=\"!loading && paginator && (data && (data.length > 0))\">\n <ng-container #backendPaginatorTemplate\n *ngIf=\"backendPagination && !infiniteScroll\">\n <mat-paginator #backendPaginator\n [hidePageSize]=\"!showPageSizeOptions || (paginatorPageSizeOptions && (paginatorPageSizeOptions.length <= 0))\"\n [length]=\"paginatorLength\"\n [pageIndex]=\"paginatorPageIndex\"\n [pageSize]=\"paginatorPageSize\"\n [pageSizeOptions]=\"paginatorPageSizeOptions\"\n (page)=\"onPage($event)\"\n (mouseenter)=\"closePopover(0)\"\n showFirstLastButtons>\n </mat-paginator>\n </ng-container>\n\n <ng-container #frontendPaginatorTemplate\n *ngIf=\"!backendPagination && !infiniteScroll\">\n <mat-paginator #frontendPaginator\n [hidePageSize]=\"!showPageSizeOptions || (paginatorPageSizeOptions && (paginatorPageSizeOptions.length <= 0))\"\n [length]=\"paginatorLength\"\n [pageIndex]=\"paginatorPageIndex\"\n [pageSize]=\"paginatorPageSize\"\n [pageSizeOptions]=\"paginatorPageSizeOptions\"\n (page)=\"onPage($event)\"\n showFirstLastButtons>\n </mat-paginator>\n </ng-container>\n </ng-container>\n\n <ng-container #infiniteScrollPaginatorTemplate\n *ngIf=\"infiniteScroll && (data && (data.length > 0))\">\n <span class=\"infinite-scroll-paginator\">\n 1 - {{ data.length }} de {{ paginatorLength }}\n </span>\n </ng-container>\n </ng-template>\n</div>\n\n<div id=\"table-popover\"\n class=\"table-popover\"\n (mouseover)=\"_isPopoverHover = true\"\n (mouseout)=\"_isPopoverHover = false; closePopover(0)\"\n *ngIf=\"!loading && actionsPopoverRef\">\n <ng-container [ngTemplateOutlet]=\"actionsPopoverRef\"\n [ngTemplateOutletContext]=\"{ $implicit: _contextPopover }\">\n </ng-container>\n</div>",
|
585
|
+
animations: [
|
586
|
+
trigger('detailExpand', [
|
587
|
+
state('collapsed', style({ height: '0px', minHeight: '0', display: 'none' })),
|
588
|
+
state('expanded', style({ height: '*' })),
|
589
|
+
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
590
|
+
]),
|
591
|
+
],
|
592
|
+
styles: [".box-shadow{border-radius:2px;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084)}table{width:100%}itss-loading{margin:25px;opacity:.7}.no-records{height:48px;display:flex;align-items:center;justify-content:center;flex-direction:column;margin:30px;font-size:14px!important;font-weight:600!important;color:#b3afb3!important;text-transform:initial!important}.no-records mat-icon{font-size:32px;height:32px;width:32px;margin-bottom:5px}.footer-row{min-height:57px;font-weight:700;padding:15px 24px;display:flex;align-items:flex-end;justify-content:center;flex-direction:column;color:rgba(0,0,0,.67);border-bottom:1px solid rgba(0,0,0,.12)}.mat-cell-pointer{cursor:pointer}.detail-row{min-height:0!important;border-bottom-width:0}element-row:not(.expanded-row):hover{background:#f5f5f5}element-row:not(.expanded-row):active{background:#efefef}.hoversimulator:not(.highlight){background:#f5f5f5}.hoversimulator:has(.highlight){background-color:rgba(255,217,0,.212)!important}.highlight{background-color:rgba(255,217,0,.102)!important}::ng-deep mat-cell.cell-element-detail{font-weight:400!important}.element-detail{width:100%;overflow:hidden;display:flex;min-height:45px!important}.element-detail.collapsed{height:0!important;min-height:0!important;display:none!important}.element-detail.expanded{height:auto!important}.hidden-header,.hidden-header .mat-header-cell{height:0!important;min-height:0!important}.actions-popover.mat-card{min-width:auto!important;padding:5px!important;background:#f5f5f5;border-radius:5px!important}.actions-popover.mat-card .mat-card-content itss-button .mat-icon-button mat-icon{height:18px!important;width:18px!important}.table-level-1 .mat-table .mat-header-row{border-bottom:unset!important}.mat-column-expandedGroupHeader{padding:0!important}.group-header-cell{display:flex;flex-direction:row;align-items:center;width:100%}.group-header-sticky{position:-webkit-sticky;position:sticky;top:54px}.infinite-scroll-paginator{color:#696969;font-size:14px;display:flex;align-items:center;justify-content:center;height:56px;position:-webkit-sticky;position:sticky;bottom:0;background:#fff;border-top:1px solid #f3465c}.table-popover{position:fixed;display:inline-flex;background-color:#f5f5f5;width:auto;border-radius:0 0 10px 10px;border:1px solid #ddd;border-top-width:0;padding:2px 5px;z-index:1;visibility:hidden}"]
|
593
|
+
}),
|
594
|
+
__metadata("design:paramtypes", [NgZone])
|
595
|
+
], TableComponent);
|
596
|
+
return TableComponent;
|
597
|
+
}());
|
598
|
+
export { TableComponent };
|
599
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdpcGlzaXN0ZW1hcy9uZy1jb3JlLyIsInNvdXJjZXMiOlsic2hhcmVkL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SyxPQUFPLEVBQW1CLFlBQVksRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQXVCLE1BQU0sbUJBQW1CLENBQUM7QUFDcEgsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBZ0J0RjtJQXdISSx3QkFBb0IsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUF0SDVCLGtCQUFhLEdBQVEsRUFBRSxDQUFDO1FBRXhCLHNCQUFpQixHQUFXLEdBQUcsQ0FBQztRQUNoQyxvQkFBZSxHQUFRLElBQUksQ0FBQztRQUU1QixzQkFBaUIsR0FBVSxFQUFFLENBQUM7UUFtQjVCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFFeEIsWUFBTyxHQUFxQixFQUFFLENBQUM7UUFXL0IsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUz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Q3BCLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUM3RSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO29CQUN6QyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7aUJBQ3hGLENBQUM7YUFDTDs7U0FDSixDQUFDO3lDQXlIK0IsTUFBTTtPQXhIMUIsY0FBYyxDQXNjMUI7SUFBRCxxQkFBQztDQUFBLEFBdGNELElBc2NDO1NBdGNZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEhlYWRlclJvd0RlZiwgTWF0UGFnaW5hdG9yLCBNYXRTb3J0LCBNYXRUYWJsZURhdGFTb3VyY2UsIFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEFycmF5VXRpbCwgT2JqZWN0VXRpbCwgU3RyaW5nVXRpbCB9IGZyb20gJy4uLy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgVGFibGVDb2x1bW5EVE8gfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9kdG8vdGFibGUtY29sdW1uLmR0byc7XG5pbXBvcnQgeyBUYWJsZUdyb3VwSGVhZGVyRFRPIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvZHRvL3RhYmxlLWdyb3VwLWhlYWRlci5kdG8nO1xuaW1wb3J0IHsgVGFibGVQYWdlRXZlbnREVE8gfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9kdG8vdGFibGUtcGFnZS1ldmVudC5kdG8nO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaXRzcy10YWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xuICAgICAgICAgICAgc3RhdGUoJ2NvbGxhcHNlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4JywgbWluSGVpZ2h0OiAnMCcsIGRpc3BsYXk6ICdub25lJyB9KSksXG4gICAgICAgICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IGhlaWdodDogJyonIH0pKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkIDw9PiBjb2xsYXBzZWQnLCBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKSksXG4gICAgICAgIF0pLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkluaXQge1xuXG4gICAgcHVibGljIF9leHBhbmRlZFJvd3M6IFRbXSA9IFtdO1xuXG4gICAgcHVibGljIF9zY3JvbGxIZWlnaHRDYWxjOiBudW1iZXIgPSA0MTA7XG4gICAgcHVibGljIF9pc1BvcG92ZXJIb3ZlcjogYW55ID0gbnVsbDtcbiAgICBwdWJsaWMgX2NvbnRleHRQb3BvdmVyOiBUO1xuICAgIHB1YmxpYyBfZGlzcGxheWVkQ29sdW1uczogYW55W10gPSBbXTtcbiAgICBwdWJsaWMgX2RhdGFTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxUIHwgVGFibGVHcm91cEhlYWRlckRUTz47XG5cbiAgICBAVmlld0NoaWxkKE1hdFNvcnQsIHsgc3RhdGljOiB0cnVlIH0pIG1hdFNvcnQ6IE1hdFNvcnQ7XG4gICAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiB0cnVlIH0pIG1hdFBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuICAgIEBWaWV3Q2hpbGQoJ2Zyb250ZW5kUGFnaW5hdG9yJywgeyBzdGF0aWM6IGZhbHNlIH0pIG1hdEZyb250ZW5kUGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG4gICAgQFZpZXdDaGlsZCgnYmFja2VuZFBhZ2luYXRvcicsIHsgc3RhdGljOiBmYWxzZSB9KSBtYXRCYWNrZW5kUGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG5cbiAgICBAVmlld0NoaWxkKCdtYXRIZWFkZXJSb3cnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIF9tYXRIZWFkZXJSb3dSZWY6IFRlbXBsYXRlUmVmPE1hdEhlYWRlclJvd0RlZj47XG4gICAgQFZpZXdDaGlsZCgnZnJvbnRlbmRQYWdpbmF0b3InLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIF9tYXRGcm9udGVuZFBhZ2luYXRvclJvd1JlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBAVmlld0NoaWxkKCdiYWNrZW5kUGFnaW5hdG9yJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBfbWF0QmFja2VuZFBhZ2luYXRvclJvd1JlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2FjdGlvbnMnLCB7IHN0YXRpYzogZmFsc2UgfSkgYWN0aW9uc1JlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBAQ29udGVudENoaWxkKCdhY3Rpb25zUG9wb3ZlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBhY3Rpb25zUG9wb3ZlclJlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBAQ29udGVudENoaWxkKCdmb290ZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgZm9vdGVyUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBDb250ZW50Q2hpbGQoJ2V4cGFuZGVkJywgeyBzdGF0aWM6IGZhbHNlIH0pIGV4cGFuZGVkUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBDb250ZW50Q2hpbGQoJ2dyb3VwSGVhZGVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGdyb3VwSGVhZGVyUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBDb250ZW50Q2hpbGQoJ2dyb3VwRm9vdGVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGdyb3VwRm9vdGVyUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KCkgc2hhZG93OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBjb2x1bW5zOiBUYWJsZUNvbHVtbkRUT1tdID0gW107XG5cbiAgICBwcml2YXRlIF9kYXRhVmFsdWU6IFRbXTtcbiAgICBASW5wdXQoKSBnZXQgZGF0YSgpOiBUW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVZhbHVlO1xuICAgIH1cbiAgICBzZXQgZGF0YShkYXRhOiBUW10pIHtcbiAgICAgICAgdGhpcy5fZGF0YVZhbHVlID0gZGF0YTtcbiAgICAgICAgdGhpcy5kYXRhQ2hhbmdlLmVtaXQodGhpcy5fZGF0YVZhbHVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBwYWdpbmF0b3I6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGJhY2tlbmRQYWdpbmF0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHBhZ2luYXRvclBhZ2VJbmRleDogbnVtYmVyID0gMDtcblxuICAgIEBJbnB1dCgpIHBhZ2luYXRvckxlbmd0aDogbnVtYmVyID0gMDtcblxuICAgIEBJbnB1dCgpIHBhZ2luYXRvclBhZ2VTaXplOiBudW1iZXIgPSAxMDtcblxuICAgIEBJbnB1dCgpIHBhZ2luYXRvclBhZ2VTaXplT3B0aW9uczogbnVtYmVyW10gPSBbMTAsIDIwLCAzMF07XG5cbiAgICBASW5wdXQoKSBzaG93UGFnZVNpemVPcHRpb25zOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBleHBhbmRhYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzaG93SGVhZGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGNvbHVtbkluaXRpYWw6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIGNvbHVtbkZpbmFsOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBoZWFkZXJTdGlja3k6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGdyb3VwQnlDb2x1bW46IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGdyb3VwSGVhZGVyU3RpY2t5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBncm91cFN0YXJ0RXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGhpZ2hsaWdodFJvd0ZuOiAocm93OiBUIHwgVGFibGVHcm91cEhlYWRlckRUTykgPT4gYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGluZmluaXRlU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzY3JvbGxEZWxheTogbnVtYmVyID0gMTAwMDtcblxuICAgIEBJbnB1dCgpIHNjcm9sbE9mZnNldDogbnVtYmVyID0gMTAwMDtcblxuICAgIEBJbnB1dCgpIHNjcm9sbEhlaWd0aDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgaXNGaWx0ZXJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgnY29sdW1uRXhwYW5kYWJsZUZpeGVkJykgc2hvd0NvbHVtbkV4cGFuZGFibGVGaXhlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgZXhwYW5kYWJsZU9uZVJvdzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgaWdub3JlQ2hpbGRyZW5FeHBhbmRSb3c6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHNvcnQ6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGNsZWFyU29ydDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNvcnRBY3RpdmU6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb24gPSAnYXNjJztcblxuICAgIEBPdXRwdXQoKSByb3dFeHBhbmRlZDogRXZlbnRFbWl0dGVyPFQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBkYXRhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VFtdPiA9IG5ldyBFdmVudEVtaXR0ZXIodHJ1ZSk7XG4gICAgQE91dHB1dCgpIHBhZ2U6IEV2ZW50RW1pdHRlcjxUYWJsZVBhZ2VFdmVudERUTz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHJvd0hvdmVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHB1YmxpYyBnZXQgbWF0VGFibGVIZWlndGgoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgbGV0IGhlYWRlclJvd0hlaWdodDogbnVtYmVyO1xuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX21hdEhlYWRlclJvd1JlZikpIHtcbiAgICAgICAgICAgIGhlYWRlclJvd0hlaWdodCA9ICh0aGlzLl9tYXRIZWFkZXJSb3dSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jbGllbnRIZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFnaW5hdG9yUm93SGVpZ2h0OiBudW1iZXI7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRvclJlZiA9IHRoaXMuYmFja2VuZFBhZ2luYXRpb24gPyB0aGlzLl9tYXRCYWNrZW5kUGFnaW5hdG9yUm93UmVmIDogdGhpcy5fbWF0RnJvbnRlbmRQYWdpbmF0b3JSb3dSZWY7XG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwocGFnaW5hdG9yUmVmKSkge1xuICAgICAgICAgICAgcGFnaW5hdG9yUm93SGVpZ2h0ID0gKHBhZ2luYXRvclJlZi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmNsaWVudEhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1hdEhlYWRlcndIZWlnaHQ6IG51bWJlciA9IGhlYWRlclJvd0hlaWdodCB8fCA2MDtcbiAgICAgICAgY29uc3QgbWF0UGFnaW5hdG9ySGVpZ2h0OiBudW1iZXIgPSBwYWdpbmF0b3JSb3dIZWlnaHQgfHwgNTc7XG5cbiAgICAgICAgY29uc3QgcGFnZVNpemU6IG51bWJlciA9IHRoaXMucGFnaW5hdG9yUGFnZVNpemUgJiYgKHRoaXMucGFnaW5hdG9yUGFnZVNpemUgPD0gMTApID8gdGhpcy5wYWdpbmF0b3JQYWdlU2l6ZSA6IDEwO1xuICAgICAgICBjb25zdCBzZXRIZWlndGg6IGJvb2xlYW4gPSB0aGlzLmhlYWRlclN0aWNreSAmJiAodGhpcy5kYXRhLmxlbmd0aCA+IHBhZ2VTaXplKTtcblxuICAgICAgICByZXR1cm4gb2Yoc2V0SGVpZ3RoID8gYCR7KCg1NyAqIHBhZ2VTaXplKSArIG1hdEhlYWRlcndIZWlnaHQgKyBtYXRQYWdpbmF0b3JIZWlnaHQpfXB4YCA6ICdhdXRvJyk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUpIHsgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7IH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2RhdGFTb3VyY2UpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5tYXRTb3J0O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdG9yICYmICF0aGlzLmJhY2tlbmRQYWdpbmF0aW9uICYmICF0aGlzLmluZmluaXRlU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5tYXRGcm9udGVuZFBhZ2luYXRvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnBhZ2luYXRvciAmJiAodGhpcy5iYWNrZW5kUGFnaW5hdGlvbiB8fCB0aGlzLmluZmluaXRlU2Nyb2xsKSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25QYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZVNpemU6IHRoaXMucGFnaW5hdG9yUGFnZVNpemUsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2luYXRvclBhZ2VTaXplT3B0aW9uczogdGhpcy5wYWdpbmF0b3JQYWdlU2l6ZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogMCxcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoOiAwLFxuICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1BhZ2VJbmRleDogMFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYWN0aW9uc1BvcG92ZXJSZWYpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29udGV4dFBvcG92ZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzUG9wb3ZlckhvdmVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZVBvcG92ZXIoMCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBwb3BvdmVyOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWJsZS1wb3BvdmVyJyk7XG4gICAgICAgICAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbChwb3BvdmVyKSkge1xuICAgICAgICAgICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY2hhbmdlcy5kYXRhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlRGF0YVNvdXJjZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jcmVhdGVEYXRhU291cmNlKCk6IHZvaWQge1xuICAgICAgICBsZXQgY29sdW1uczogc3RyaW5nW10gPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy52aXNpYmxlKS5tYXAoYyA9PiBjLnByb3BlcnR5KTtcbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmV4cGFuZGVkUmVmKSkge1xuICAgICAgICAgICAgY29sdW1ucyA9IFsnZXhwYW5kZWRDb2x1bW4nLCAuLi5jb2x1bW5zXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYWN0aW9uc1JlZikpIHtcbiAgICAgICAgICAgIGNvbHVtbnMgPSBbLi4uY29sdW1ucywgJ2FjdGlvbnNDb2x1bW4nXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kaXNwbGF5ZWRDb2x1bW5zID0gY29sdW1ucztcblxuICAgICAgICBpZiAodGhpcy5pbmZpbml0ZVNjcm9sbCkge1xuICAgICAgICAgICAgbGV0IGRhdGFBbGw6IFRbXSA9IFtdO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNGaWx0ZXJpbmcpIHtcbiAgICAgICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2RhdGFTb3VyY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFBbGwgPSBBcnJheVV0aWwuY2xvbmUodGhpcy5fZGF0YVNvdXJjZS5kYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5kYXRhKSkge1xuICAgICAgICAgICAgICAgIGRhdGFBbGwucHVzaCguLi50aGlzLmRhdGEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZShbXSk7XG4gICAgICAgICAgICBpZiAoIVN0cmluZ1V0aWwuaXNFbXB0eSh0aGlzLmdyb3VwQnlDb2x1bW4pICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmdyb3VwSGVhZGVyUmVmKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZ2VuZXJldGVHcm91cHNCeUNvbHVtbihkYXRhQWxsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZS5kYXRhID0gZGF0YUFsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5kYXRhID0gZGF0YUFsbDtcbiAgICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KHRoaXMuZGF0YSk7XG4gICAgICAgICAgICB0aGlzLmNhbGNTY3JvbGxIZWlnaHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKFtdKTtcbiAgICAgICAgICAgIGlmICghU3RyaW5nVXRpbC5pc0VtcHR5KHRoaXMuZ3JvdXBCeUNvbHVtbikgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuZ3JvdXBIZWFkZXJSZWYpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5nZW5lcmV0ZUdyb3Vwc0J5Q29sdW1uKHRoaXMuZGF0YSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5fZGF0YVNvdXJjZS5kYXRhKSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5tYXRTb3J0O1xuICAgICAgICAgICAgdGhpcy5zZXRTb3J0aW5nRGF0YUFjY2Vzc29yKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IgJiYgIXRoaXMuYmFja2VuZFBhZ2luYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5tYXRGcm9udGVuZFBhZ2luYXRvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmICghdGhpcy5ncm91cFN0YXJ0RXhwYW5kZWQgJiYgKHRoaXMuZ3JvdXBIZWFkZXJSZWYgfHwgKHRoaXMuZXhwYW5kYWJsZSAmJiB0aGlzLmV4cGFuZGVkUmVmKSkgJiYgIUFycmF5VXRpbC5pc0VtcHR5KHRoaXMuX2RhdGFTb3VyY2UuZGF0YSkpIHtcbiAgICAgICAgLy8gdGhpcy5fZGF0YVNvdXJjZS5kYXRhLmZvckVhY2gocm93ID0+IHRoaXMuYWRkQ29sbGFwc2Uocm93KSk7XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBjYWxjU2Nyb2xsSGVpZ2h0KCk6IHZvaWQge1xuICAgICAgICBpZiAoKHRoaXMuX2RhdGFTb3VyY2UgJiYgKHRoaXMuX2RhdGFTb3VyY2UuZGF0YS5sZW5ndGggPiAwKSkgJiYgKE1hdGguZmxvb3IodGhpcy5fc2Nyb2xsSGVpZ2h0Q2FsYykgPD0gNzAwKSkge1xuICAgICAgICAgICAgdGhpcy5fc2Nyb2xsSGVpZ2h0Q2FsYyA9IDEzMCArICh0aGlzLl9kYXRhU291cmNlLmRhdGEubGVuZ3RoICogNDgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25QYWdlKHBhZ2VFdmVudDogVGFibGVQYWdlRXZlbnREVE8pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYWdpbmF0b3JQYWdlU2l6ZSA9IHBhZ2VFdmVudC5wYWdlU2l6ZTtcbiAgICAgICAgcGFnZUV2ZW50LnBhZ2luYXRvclBhZ2VTaXplT3B0aW9ucyA9IEFycmF5VXRpbC5pc0VtcHR5KHBhZ2VFdmVudC5wYWdpbmF0b3JQYWdlU2l6ZU9wdGlvbnMpID8gdGhpcy5wYWdpbmF0b3JQYWdlU2l6ZU9wdGlvbnMgOiBwYWdlRXZlbnQucGFnaW5hdG9yUGFnZVNpemVPcHRpb25zO1xuICAgICAgICB0aGlzLnBhZ2UuZW1pdChwYWdlRXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0V4cGFuZGVkUm93KHJvdzogVCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAoQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5fZXhwYW5kZWRSb3dzKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSB0aGlzLl9leHBhbmRlZFJvd3MuZmluZEluZGV4KHIgPT4gciA9PT0gcm93KTtcbiAgICAgICAgcmV0dXJuIG9mKGluZGV4ID49IDApO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVFeHBhbmRSb3cocm93OiBUKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSB0aGlzLl9leHBhbmRlZFJvd3MuZmluZEluZGV4KHIgPT4gciA9PT0gcm93KTtcbiAgICAgICAgaWYgKEFycmF5VXRpbC5pc0VtcHR5KHRoaXMuX2V4cGFuZGVkUm93cykgfHwgKGluZGV4IDwgMCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2V4cGFuZGVkUm93cyA9IFtyb3ddO1xuICAgICAgICAgICAgdGhpcy5yb3dFeHBhbmRlZC5lbWl0KHJvdyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBfZXhwYW5kZWRSb3dzQXV4OiBUW10gPSBBcnJheVV0aWwuY2xvbmUodGhpcy5fZXhwYW5kZWRSb3dzKTtcbiAgICAgICAgX2V4cGFuZGVkUm93c0F1eC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB0aGlzLl9leHBhbmRlZFJvd3MgPSBBcnJheVV0aWwuY2xvbmUoX2V4cGFuZGVkUm93c0F1eCk7XG4gICAgICAgIHRoaXMucm93RXhwYW5kZWQuZW1pdChudWxsKTtcbiAgICB9XG5cbiAgICBzb3J0RGF0YShzb3J0OiBTb3J0KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmluZmluaXRlU2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KFtdKTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKFtdKTtcbiAgICAgICAgICAgIHRoaXMuY2FsY1Njcm9sbEhlaWdodCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vblBhZ2Uoe1xuICAgICAgICAgICAgcGFnZVNpemU6IHRoaXMucGFnaW5hdG9yUGFnZVNpemUsXG4gICAgICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICAgICAgICBsZW5ndGg6IDAsXG4gICAgICAgICAgICBwcmV2aW91c1BhZ2VJbmRleDogMCxcbiAgICAgICAgICAgIHBhZ2luYXRvclBhZ2VTaXplT3B0aW9uczogdGhpcy5wYWdpbmF0b3JQYWdlU2l6ZU9wdGlvbnMsXG4gICAgICAgICAgICBzb3J0OiBzb3J0XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93UG9wb3ZlcihldmVudDogTW91c2VFdmVudCwgZGF0YTogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvcG92ZXI6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxlLXBvcG92ZXInKTtcbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbChwb3BvdmVyKSkge1xuICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5sb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tUmVjdFBvcG92ZXIgPSBwb3BvdmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkb21SZWN0Um93ID0gKGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxscyA9IChldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxUYWJsZVJvd0VsZW1lbnQpLmNoaWxkcmVuO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkb21SZWN0UG9wb3ZlciAmJiBkb21SZWN0Um93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnRvcCA9IGAkeyhkb21SZWN0Um93LnRvcCArIGRvbVJlY3RSb3cuaGVpZ2h0KSAtIDF9cHhgO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3RhcnRQb3NpdGlvbjogbnVtYmVyID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlbmRQb3NpdGlvbjogbnVtYmVyID0gMDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29sdW1uSW5pdGlhbCAmJiAodGhpcy5jb2x1bW5Jbml0aWFsID49IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjZWxsc1t0aGlzLmNvbHVtbkluaXRpYWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW5pdGlhbCBjb2x1bW4gdW5kZWZpbmVkIG9yIG51bGwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IGNlbGxzW3RoaXMuY29sdW1uSW5pdGlhbF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IGRvbVJlY3RSb3cubGVmdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29sdW1uRmluYWwgJiYgKHRoaXMuY29sdW1uRmluYWwgPj0gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNlbGxzW3RoaXMuY29sdW1uRmluYWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmluYWwgY29sdW1uIHVuZGVmaW5lZCBvciBudWxsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFBvc2l0aW9uID0gY2VsbHNbdGhpcy5jb2x1bW5GaW5hbF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtIGRvbVJlY3RQb3BvdmVyLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRQb3NpdGlvbiA9IGRvbVJlY3RSb3cucmlnaHQgLSBkb21SZWN0UG9wb3Zlci53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmNsaWVudFggPiBzdGFydFBvc2l0aW9uICsgMTUgJiYgZXZlbnQuY2xpZW50WCA8IGVuZFBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9IGAke2V2ZW50LmNsaWVudFggLSAxNX1weGA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5jbGllbnRYIDw9IHN0YXJ0UG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS5sZWZ0ID0gYCR7c3RhcnRQb3NpdGlvbn1weGA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5jbGllbnRYID49IGVuZFBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9IGAke2VuZFBvc2l0aW9ufXB4YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucm93SG92ZXIuZW1pdChkYXRhKTtcbiAgICAgICAgdGhpcy5fY29udGV4dFBvcG92ZXIgPSBkYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgIHNob3dQb3BvdmVyKGV2ZW50OiBNb3VzZUV2ZW50LCBkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9wb3ZlcjogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFibGUtcG9wb3ZlcicpO1xuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHBvcG92ZXIpKSB7XG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkb21SZWN0UG9wb3ZlciA9IHBvcG92ZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZG9tUmVjdFJvdyA9IChldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxscyA9IChldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxUYWJsZVJvd0VsZW1lbnQpLmNoaWxkcmVuO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRvbVJlY3RQb3BvdmVyICYmIGRvbVJlY3RSb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICAgICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnRvcCA9IGAkeyhkb21SZWN0Um93LnRvcCArIGRvbVJlY3RSb3cuaGVpZ2h0KSAtIDF9cHhgO1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCBzdGFydFBvc2l0aW9uOiBudW1iZXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZW5kUG9zaXRpb246IG51bWJlciA9IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29sdW1uSW5pdGlhbCAmJiAodGhpcy5jb2x1bW5Jbml0aWFsID49IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNlbGxzW3RoaXMuY29sdW1uSW5pdGlhbF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luaXRpYWwgY29sdW1uIHVuZGVmaW5lZCBvciBudWxsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gY2VsbHNbdGhpcy5jb2x1bW5Jbml0aWFsXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IGRvbVJlY3RSb3cubGVmdDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtbkZpbmFsICYmICh0aGlzLmNvbHVtbkZpbmFsID49IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNlbGxzW3RoaXMuY29sdW1uRmluYWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaW5hbCBjb2x1bW4gdW5kZWZpbmVkIG9yIG51bGwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZFBvc2l0aW9uID0gY2VsbHNbdGhpcy5jb2x1bW5GaW5hbF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtIGRvbVJlY3RQb3BvdmVyLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kUG9zaXRpb24gPSBkb21SZWN0Um93LnJpZ2h0IC0gZG9tUmVjdFBvcG92ZXIud2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5jbGllbnRYID4gc3RhcnRQb3NpdGlvbiArIDE1ICYmIGV2ZW50LmNsaWVudFggPCBlbmRQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9IGAke2V2ZW50LmNsaWVudFggLSAxNX1weGA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmNsaWVudFggPD0gc3RhcnRQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9IGAke3N0YXJ0UG9zaXRpb259cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5jbGllbnRYID49IGVuZFBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS5sZWZ0ID0gYCR7ZW5kUG9zaXRpb259cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3dIb3Zlci5lbWl0KGRhdGEpO1xuICAgICAgICB0aGlzLl9jb250ZXh0UG9wb3ZlciA9IGRhdGE7XG4gICAgfVxuICAgICovXG5cbiAgICBjbG9zZVBvcG92ZXIodGltZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIG9mKG51bGwpLnBpcGUoZGVsYXkodGltZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2lzUG9wb3ZlckhvdmVyKSAmJiAhdGhpcy5faXNQb3BvdmVySG92ZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2lzUG9wb3ZlckhvdmVyKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5hY3Rpb25zUG9wb3ZlclJlZikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9wb3ZlcjogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFibGUtcG9wb3ZlcicpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHBvcG92ZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9jb250ZXh0UG9wb3ZlciA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNQb3BvdmVySG92ZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRTb3J0aW5nRGF0YUFjY2Vzc29yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlLnNvcnRpbmdEYXRhQWNjZXNzb3IgPSAoZGF0YTogYW55LCBzb3J0SGVhZGVySWQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGRhdGFbc29ydEhlYWRlcklkXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVtzb3J0SGVhZGVySWRdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGF0YVtzb3J0SGVhZGVySWRdO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIGdyb3VwIGhlYWRlclxuICAgIGdlbmVyZXRlR3JvdXBzQnlDb2x1bW4oZGF0YTogYW55W10pOiBUYWJsZUdyb3VwSGVhZGVyRFRPW10ge1xuICAgICAgICBjb25zdCBncm91cHM6IHt9ID0gZGF0YS5yZWR1Y2UoKGdyb3VwLCByb3cpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFDb2x1bW46IHN0cmluZyA9IHJvd1t0aGlzLmdyb3VwQnlDb2x1bW5dLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBpZiAoIWdyb3VwW2RhdGFDb2x1bW5dKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBbZGF0YUNvbHVtbl0gPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdyb3VwW2RhdGFDb2x1bW5dLnB1c2gocm93KTtcbiAgICAgICAgICAgIHJldHVybiBncm91cDtcbiAgICAgICAgfSwge30pO1xuXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhncm91cHMpLm1hcChncm91cFZhbHVlID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVGFibGVHcm91cEhlYWRlckRUTyhncm91cFZhbHVlLCBncm91cHNbZ3JvdXBWYWx1ZV0sIGdyb3Vwc1tncm91cFZhbHVlXS5sZW5ndGgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRIaWdobGlnaHRSb3cocm93OiBUIHwgVGFibGVHcm91cEhlYWRlckRUTyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHJvdykpIHtcbiAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5oaWdobGlnaHRSb3dGbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRSb3dGbihyb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXRJbmRleFJvdyhyb3c6IFQgfCBUYWJsZUdyb3VwSGVhZGVyRFRPKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9kYXRhU291cmNlKSAmJiAhQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5fZGF0YVNvdXJjZS5kYXRhKSAmJiAhT2JqZWN0VXRpbC5pc051bGwocm93KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2UuZGF0YS5maW5kSW5kZXgociA9PiByID09PSByb3cpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gaW5maW5pdGUgc2Nyb2xsXG4gICAgaGFzTW9yZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLl9kYXRhU291cmNlIHx8ICh0aGlzLl9kYXRhU291cmNlLmRhdGEubGVuZ3RoIDwgdGhpcy5wYWdpbmF0b3JMZW5ndGgpO1xuICAgIH1cblxuICAgIGhhbmRsZVNjcm9sbChzY3JvbGxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoc2Nyb2xsZWQgJiYgdGhpcy5oYXNNb3JlKCkpIHtcbiAgICAgICAgICAgIHRoaXMub25QYWdlKHtcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYWdpbmF0b3JQYWdlU2l6ZSxcbiAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IHRoaXMucGFnaW5hdG9yUGFnZUluZGV4LFxuICAgICAgICAgICAgICAgIGxlbmd0aDogdGhpcy5wYWdpbmF0b3JMZW5ndGgsXG4gICAgICAgICAgICAgICAgcHJldmlvdXNQYWdlSW5kZXg6IHRoaXMucGFnaW5hdG9yUGFnZUluZGV4LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yUGFnZUluZGV4ICs9IDE7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
|