@inobeta/ui 18.0.1-build.1722007687
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/_index.scss +1 -0
- package/esm2022/inobeta-ui.mjs +5 -0
- package/esm2022/public_api.mjs +17 -0
- package/esm2022/src/app/inobeta-ui/core/filter.pipe.mjs +23 -0
- package/esm2022/src/app/inobeta-ui/core/index.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/http/auth/guard.service.mjs +157 -0
- package/esm2022/src/app/inobeta-ui/http/auth/login.service.mjs +137 -0
- package/esm2022/src/app/inobeta-ui/http/auth/login.service.stub.spec.mjs +20 -0
- package/esm2022/src/app/inobeta-ui/http/auth/session.model.mjs +16 -0
- package/esm2022/src/app/inobeta-ui/http/http/auth.interceptor.mjs +79 -0
- package/esm2022/src/app/inobeta-ui/http/http/error.interceptor.mjs +76 -0
- package/esm2022/src/app/inobeta-ui/http/http/loader.interceptor.mjs +45 -0
- package/esm2022/src/app/inobeta-ui/http/http/loading-skeleton-container.component.mjs +36 -0
- package/esm2022/src/app/inobeta-ui/http/http/loading-skeleton.component.mjs +34 -0
- package/esm2022/src/app/inobeta-ui/http/http/loading-skeleton.directive.mjs +66 -0
- package/esm2022/src/app/inobeta-ui/http/http/loading-skeleton.directive.stub.spec.mjs +22 -0
- package/esm2022/src/app/inobeta-ui/http/http/messages.decorator.mjs +42 -0
- package/esm2022/src/app/inobeta-ui/http/http/role-check.directive.mjs +45 -0
- package/esm2022/src/app/inobeta-ui/http/http/spinner-loading.component.mjs +28 -0
- package/esm2022/src/app/inobeta-ui/http/http/spinner-loading.stub.spec.mjs +15 -0
- package/esm2022/src/app/inobeta-ui/http/http-test.module.mjs +35 -0
- package/esm2022/src/app/inobeta-ui/http/http.module.mjs +178 -0
- package/esm2022/src/app/inobeta-ui/http/index.mjs +26 -0
- package/esm2022/src/app/inobeta-ui/http/store/index.mjs +11 -0
- package/esm2022/src/app/inobeta-ui/http/store/loader/actions.mjs +7 -0
- package/esm2022/src/app/inobeta-ui/http/store/loader/interfaces.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/http/store/loader/reducers.mjs +35 -0
- package/esm2022/src/app/inobeta-ui/http/store/loader/selectors.mjs +9 -0
- package/esm2022/src/app/inobeta-ui/http/store/session/actions.mjs +17 -0
- package/esm2022/src/app/inobeta-ui/http/store/session/effects.mjs +50 -0
- package/esm2022/src/app/inobeta-ui/http/store/session/interfaces.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/http/store/session/reducers.mjs +12 -0
- package/esm2022/src/app/inobeta-ui/http/store/session/selectors.mjs +22 -0
- package/esm2022/src/app/inobeta-ui/http/translations.mjs +13 -0
- package/esm2022/src/app/inobeta-ui/hydration/actions.mjs +3 -0
- package/esm2022/src/app/inobeta-ui/hydration/effects.mjs +45 -0
- package/esm2022/src/app/inobeta-ui/hydration/index.mjs +21 -0
- package/esm2022/src/app/inobeta-ui/hydration/reducer.mjs +36 -0
- package/esm2022/src/app/inobeta-ui/storage/index.mjs +4 -0
- package/esm2022/src/app/inobeta-ui/storage/storage-test.module.mjs +23 -0
- package/esm2022/src/app/inobeta-ui/storage/storage.module.mjs +22 -0
- package/esm2022/src/app/inobeta-ui/storage/storage.service.mjs +105 -0
- package/esm2022/src/app/inobeta-ui/storage/storage.stub.spec.mjs +8 -0
- package/esm2022/src/app/inobeta-ui/translate/index.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/translate/translate-loader.service.mjs +37 -0
- package/esm2022/src/app/inobeta-ui/ui/breadcrumb/breadcrumb.component.mjs +63 -0
- package/esm2022/src/app/inobeta-ui/ui/breadcrumb/breadcrumb.module.mjs +44 -0
- package/esm2022/src/app/inobeta-ui/ui/breadcrumb/index.mjs +4 -0
- package/esm2022/src/app/inobeta-ui/ui/breadcrumb/material-breadcrumb/material-breadcrumb.component.mjs +16 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/data-export.module.mjs +92 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/data-export.service.mjs +83 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/formats/csv-export.service.mjs +42 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/formats/pdf-export.service.mjs +66 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/formats/xlsx-export.service.mjs +26 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/index.mjs +10 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/provider.mjs +3 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/table-data-export-dialog.component.mjs +113 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/table-data-export.component.mjs +58 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/transformer.mjs +68 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/array/array.mjs +26 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/controls/checkbox.mjs +5 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/controls/dropdown.mjs +5 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/controls/form-control-base.mjs +80 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/controls/radio.mjs +5 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/controls/textbox.mjs +5 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/dynamic-form/dynamic-form.component.mjs +118 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/dynamic-form-array/dynamic-form-array.component.mjs +46 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/dynamic-form-control/dynamic-form-control.component.mjs +28 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/form-control.service.mjs +57 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/forms.module.mjs +36 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/forms.pipes.mjs +41 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/forms.types.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/index.mjs +12 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filter-button/filter-action-group.component.mjs +14 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filter-button/filter-button.component.mjs +31 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filter.component.mjs +149 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filter.types.mjs +30 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/base/filter-base.mjs +83 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/boolean/boolean-filter.component.mjs +48 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/date/filter-date.component.mjs +284 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/number/filter-number.component.mjs +111 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/search-bar/search-bar.component.mjs +99 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/tag/filter-tag.component.mjs +106 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/text/filter-text.component.mjs +98 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters.mjs +109 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters.module.mjs +175 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/index.mjs +14 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/tokens.mjs +3 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/translations.mjs +51 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/action.mjs +48 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/cells.mjs +212 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/action-column.mjs +23 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/column.mjs +260 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/date-column.mjs +93 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/index.mjs +7 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/number-column.mjs +112 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/selection-column.mjs +149 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/text-column.mjs +90 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/index.mjs +13 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/paginator-intl.mjs +53 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/remote-data-source.mjs +73 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/rowgroup.mjs +17 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/sort-header.mjs +37 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/store/const.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/store/index.mjs +9 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/actions.mjs +13 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/effects.mjs +47 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/interfaces.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/reducers.mjs +56 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/selectors.mjs +19 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/table-data-source.mjs +450 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/table-url.service.mjs +129 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/table.component.mjs +260 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/table.module.mjs +150 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/table.types.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/tokens.mjs +13 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/translations.mjs +41 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.component.mjs +120 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.stub.spec.mjs +38 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-dialog/main-menu-dialog.component.mjs +48 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/header-footer-buttons.component.mjs +139 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/main-menu-expanded.component.mjs +41 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/index.mjs +13 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/main-menu-test.module.mjs +24 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/main-menu.module.mjs +63 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/models/main-menu-button.model.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/models/main-menu-data-set.model.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/models/main-menu-data.model.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/autocomplete.mjs +108 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/button.mjs +80 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/checkbox.mjs +54 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/datepicker.mjs +96 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/dropdown.mjs +149 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/label.mjs +50 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/padding.mjs +26 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/radio.mjs +61 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/slide-toggle.mjs +62 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/textarea.mjs +63 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/textbox.mjs +205 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/index.mjs +18 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/intl/datepicker.intl.mjs +73 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form/material-form.component.mjs +48 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form/material-form.stub.spec.mjs +65 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form-array/material-form-array.component.mjs +18 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form-control/material-form-control.component.mjs +64 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form-test.module.mjs +32 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form.module.mjs +168 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/translations.mjs +26 -0
- package/esm2022/src/app/inobeta-ui/ui/modal/index.mjs +7 -0
- package/esm2022/src/app/inobeta-ui/ui/modal/modal-message.component.mjs +76 -0
- package/esm2022/src/app/inobeta-ui/ui/modal/modal-message.model.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/ui/modal/modal-message.service.mjs +64 -0
- package/esm2022/src/app/inobeta-ui/ui/modal/modal-message.service.stub.spec.mjs +15 -0
- package/esm2022/src/app/inobeta-ui/ui/modal/modal-test.module.mjs +26 -0
- package/esm2022/src/app/inobeta-ui/ui/modal/modal.module.mjs +46 -0
- package/esm2022/src/app/inobeta-ui/ui/modal/translations.mjs +10 -0
- package/esm2022/src/app/inobeta-ui/ui/toast/index.mjs +5 -0
- package/esm2022/src/app/inobeta-ui/ui/toast/toast-test.module.mjs +23 -0
- package/esm2022/src/app/inobeta-ui/ui/toast/toast.module.mjs +21 -0
- package/esm2022/src/app/inobeta-ui/ui/toast/toast.service.mjs +54 -0
- package/esm2022/src/app/inobeta-ui/ui/toast/toast.service.stub.spec.mjs +4 -0
- package/esm2022/src/app/inobeta-ui/ui/uploader/index.mjs +3 -0
- package/esm2022/src/app/inobeta-ui/ui/uploader/uploader.component.mjs +41 -0
- package/esm2022/src/app/inobeta-ui/ui/uploader/uploader.module.mjs +42 -0
- package/esm2022/src/app/inobeta-ui/ui/views/components/default-table-view/default-table-view.component.mjs +20 -0
- package/esm2022/src/app/inobeta-ui/ui/views/components/index.mjs +6 -0
- package/esm2022/src/app/inobeta-ui/ui/views/components/table-view/table-view.component.mjs +37 -0
- package/esm2022/src/app/inobeta-ui/ui/views/components/table-view-group/table-view-group.component.mjs +186 -0
- package/esm2022/src/app/inobeta-ui/ui/views/components/view-dialog/view-dialog.component.mjs +110 -0
- package/esm2022/src/app/inobeta-ui/ui/views/components/view-list/view-list.component.mjs +43 -0
- package/esm2022/src/app/inobeta-ui/ui/views/index.mjs +5 -0
- package/esm2022/src/app/inobeta-ui/ui/views/store/actions.mjs +11 -0
- package/esm2022/src/app/inobeta-ui/ui/views/store/index.mjs +3 -0
- package/esm2022/src/app/inobeta-ui/ui/views/store/reducer.mjs +5 -0
- package/esm2022/src/app/inobeta-ui/ui/views/store/views/index.mjs +4 -0
- package/esm2022/src/app/inobeta-ui/ui/views/store/views/reducer.mjs +19 -0
- package/esm2022/src/app/inobeta-ui/ui/views/store/views/selectors.mjs +5 -0
- package/esm2022/src/app/inobeta-ui/ui/views/store/views/table-view.mjs +13 -0
- package/esm2022/src/app/inobeta-ui/ui/views/translations.mjs +34 -0
- package/esm2022/src/app/inobeta-ui/ui/views/view.module.mjs +98 -0
- package/esm2022/src/app/inobeta-ui/ui/views/view.service.mjs +137 -0
- package/fesm2022/inobeta-ui.mjs +8610 -0
- package/fesm2022/inobeta-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/package.json +55 -0
- package/public_api.d.ts +16 -0
- package/src/app/inobeta-ui/core/filter.pipe.d.ts +7 -0
- package/src/app/inobeta-ui/core/index.d.ts +1 -0
- package/src/app/inobeta-ui/http/auth/guard.service.d.ts +96 -0
- package/src/app/inobeta-ui/http/auth/login.service.d.ts +63 -0
- package/src/app/inobeta-ui/http/auth/login.service.stub.spec.d.ts +9 -0
- package/src/app/inobeta-ui/http/auth/session.model.d.ts +18 -0
- package/src/app/inobeta-ui/http/http/auth.interceptor.d.ts +21 -0
- package/src/app/inobeta-ui/http/http/error.interceptor.d.ts +18 -0
- package/src/app/inobeta-ui/http/http/loader.interceptor.d.ts +17 -0
- package/src/app/inobeta-ui/http/http/loading-skeleton-container.component.d.ts +13 -0
- package/src/app/inobeta-ui/http/http/loading-skeleton.component.d.ts +12 -0
- package/src/app/inobeta-ui/http/http/loading-skeleton.directive.d.ts +27 -0
- package/src/app/inobeta-ui/http/http/loading-skeleton.directive.stub.spec.d.ts +13 -0
- package/src/app/inobeta-ui/http/http/messages.decorator.d.ts +18 -0
- package/src/app/inobeta-ui/http/http/role-check.directive.d.ts +17 -0
- package/src/app/inobeta-ui/http/http/spinner-loading.component.d.ts +9 -0
- package/src/app/inobeta-ui/http/http/spinner-loading.stub.spec.d.ts +5 -0
- package/src/app/inobeta-ui/http/http-test.module.d.ts +8 -0
- package/src/app/inobeta-ui/http/http.module.d.ts +20 -0
- package/src/app/inobeta-ui/http/index.d.ts +23 -0
- package/src/app/inobeta-ui/http/store/index.d.ts +10 -0
- package/src/app/inobeta-ui/http/store/loader/actions.d.ts +17 -0
- package/src/app/inobeta-ui/http/store/loader/interfaces.d.ts +8 -0
- package/src/app/inobeta-ui/http/store/loader/reducers.d.ts +3 -0
- package/src/app/inobeta-ui/http/store/loader/selectors.d.ts +5 -0
- package/src/app/inobeta-ui/http/store/session/actions.d.ts +20 -0
- package/src/app/inobeta-ui/http/store/session/effects.d.ts +16 -0
- package/src/app/inobeta-ui/http/store/session/interfaces.d.ts +4 -0
- package/src/app/inobeta-ui/http/store/session/reducers.d.ts +3 -0
- package/src/app/inobeta-ui/http/store/session/selectors.d.ts +4 -0
- package/src/app/inobeta-ui/http/translations.d.ts +12 -0
- package/src/app/inobeta-ui/hydration/actions.d.ts +1 -0
- package/src/app/inobeta-ui/hydration/effects.d.ts +13 -0
- package/src/app/inobeta-ui/hydration/index.d.ts +13 -0
- package/src/app/inobeta-ui/hydration/reducer.d.ts +2 -0
- package/src/app/inobeta-ui/storage/index.d.ts +3 -0
- package/src/app/inobeta-ui/storage/storage-test.module.d.ts +6 -0
- package/src/app/inobeta-ui/storage/storage.module.d.ts +6 -0
- package/src/app/inobeta-ui/storage/storage.service.d.ts +62 -0
- package/src/app/inobeta-ui/storage/storage.stub.spec.d.ts +5 -0
- package/src/app/inobeta-ui/translate/index.d.ts +1 -0
- package/src/app/inobeta-ui/translate/translate-loader.service.d.ts +11 -0
- package/src/app/inobeta-ui/ui/_index.scss +87 -0
- package/src/app/inobeta-ui/ui/breadcrumb/breadcrumb.component.d.ts +28 -0
- package/src/app/inobeta-ui/ui/breadcrumb/breadcrumb.module.d.ts +12 -0
- package/src/app/inobeta-ui/ui/breadcrumb/index.d.ts +3 -0
- package/src/app/inobeta-ui/ui/breadcrumb/material-breadcrumb/material-breadcrumb.component.d.ts +6 -0
- package/src/app/inobeta-ui/ui/data-export/data-export.module.d.ts +20 -0
- package/src/app/inobeta-ui/ui/data-export/data-export.service.d.ts +35 -0
- package/src/app/inobeta-ui/ui/data-export/formats/csv-export.service.d.ts +19 -0
- package/src/app/inobeta-ui/ui/data-export/formats/pdf-export.service.d.ts +20 -0
- package/src/app/inobeta-ui/ui/data-export/formats/xlsx-export.service.d.ts +14 -0
- package/src/app/inobeta-ui/ui/data-export/index.d.ts +9 -0
- package/src/app/inobeta-ui/ui/data-export/provider.d.ts +15 -0
- package/src/app/inobeta-ui/ui/data-export/table-data-export-dialog.component.d.ts +23 -0
- package/src/app/inobeta-ui/ui/data-export/table-data-export.component.d.ts +13 -0
- package/src/app/inobeta-ui/ui/data-export/transformer.d.ts +50 -0
- package/src/app/inobeta-ui/ui/forms/array/array.d.ts +32 -0
- package/src/app/inobeta-ui/ui/forms/controls/checkbox.d.ts +4 -0
- package/src/app/inobeta-ui/ui/forms/controls/dropdown.d.ts +4 -0
- package/src/app/inobeta-ui/ui/forms/controls/form-control-base.d.ts +88 -0
- package/src/app/inobeta-ui/ui/forms/controls/radio.d.ts +4 -0
- package/src/app/inobeta-ui/ui/forms/controls/textbox.d.ts +4 -0
- package/src/app/inobeta-ui/ui/forms/dynamic-form/dynamic-form.component.d.ts +50 -0
- package/src/app/inobeta-ui/ui/forms/dynamic-form-array/dynamic-form-array.component.d.ts +18 -0
- package/src/app/inobeta-ui/ui/forms/dynamic-form-control/dynamic-form-control.component.d.ts +11 -0
- package/src/app/inobeta-ui/ui/forms/form-control.service.d.ts +13 -0
- package/src/app/inobeta-ui/ui/forms/forms.module.d.ts +12 -0
- package/src/app/inobeta-ui/ui/forms/forms.pipes.d.ts +20 -0
- package/src/app/inobeta-ui/ui/forms/forms.types.d.ts +3 -0
- package/src/app/inobeta-ui/ui/forms/index.d.ts +11 -0
- package/src/app/inobeta-ui/ui/kai-filter/filter-button/filter-action-group.component.d.ts +5 -0
- package/src/app/inobeta-ui/ui/kai-filter/filter-button/filter-button.component.d.ts +8 -0
- package/src/app/inobeta-ui/ui/kai-filter/filter.component.d.ts +41 -0
- package/src/app/inobeta-ui/ui/kai-filter/filter.types.d.ts +141 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters/base/filter-base.d.ts +42 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters/boolean/boolean-filter.component.d.ts +12 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters/date/filter-date.component.d.ts +56 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters/number/filter-number.component.d.ts +27 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters/search-bar/search-bar.component.d.ts +16 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters/tag/filter-tag.component.d.ts +28 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters/text/filter-text.component.d.ts +21 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters.d.ts +16 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters.module.d.ts +35 -0
- package/src/app/inobeta-ui/ui/kai-filter/index.d.ts +13 -0
- package/src/app/inobeta-ui/ui/kai-filter/tokens.d.ts +2 -0
- package/src/app/inobeta-ui/ui/kai-filter/translations.d.ts +50 -0
- package/src/app/inobeta-ui/ui/kai-table/_table-theme.scss +123 -0
- package/src/app/inobeta-ui/ui/kai-table/action.d.ts +19 -0
- package/src/app/inobeta-ui/ui/kai-table/cells.d.ts +88 -0
- package/src/app/inobeta-ui/ui/kai-table/columns/action-column.d.ts +9 -0
- package/src/app/inobeta-ui/ui/kai-table/columns/column.d.ts +87 -0
- package/src/app/inobeta-ui/ui/kai-table/columns/date-column.d.ts +21 -0
- package/src/app/inobeta-ui/ui/kai-table/columns/index.d.ts +6 -0
- package/src/app/inobeta-ui/ui/kai-table/columns/number-column.d.ts +16 -0
- package/src/app/inobeta-ui/ui/kai-table/columns/selection-column.d.ts +26 -0
- package/src/app/inobeta-ui/ui/kai-table/columns/text-column.d.ts +16 -0
- package/src/app/inobeta-ui/ui/kai-table/index.d.ts +12 -0
- package/src/app/inobeta-ui/ui/kai-table/paginator-intl.d.ts +18 -0
- package/src/app/inobeta-ui/ui/kai-table/remote-data-source.d.ts +60 -0
- package/src/app/inobeta-ui/ui/kai-table/rowgroup.d.ts +8 -0
- package/src/app/inobeta-ui/ui/kai-table/sort-header.d.ts +20 -0
- package/src/app/inobeta-ui/ui/kai-table/store/const.d.ts +1 -0
- package/src/app/inobeta-ui/ui/kai-table/store/index.d.ts +8 -0
- package/src/app/inobeta-ui/ui/kai-table/store/url-state/actions.d.ts +59 -0
- package/src/app/inobeta-ui/ui/kai-table/store/url-state/effects.d.ts +15 -0
- package/src/app/inobeta-ui/ui/kai-table/store/url-state/interfaces.d.ts +16 -0
- package/src/app/inobeta-ui/ui/kai-table/store/url-state/reducers.d.ts +2 -0
- package/src/app/inobeta-ui/ui/kai-table/store/url-state/selectors.d.ts +3 -0
- package/src/app/inobeta-ui/ui/kai-table/table-data-source.d.ts +164 -0
- package/src/app/inobeta-ui/ui/kai-table/table-url.service.d.ts +51 -0
- package/src/app/inobeta-ui/ui/kai-table/table.component.d.ts +79 -0
- package/src/app/inobeta-ui/ui/kai-table/table.module.d.ts +30 -0
- package/src/app/inobeta-ui/ui/kai-table/table.types.d.ts +21 -0
- package/src/app/inobeta-ui/ui/kai-table/tokens.d.ts +22 -0
- package/src/app/inobeta-ui/ui/kai-table/translations.d.ts +40 -0
- package/src/app/inobeta-ui/ui/main-menu/_main-menu-theme.scss +226 -0
- package/src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.component.d.ts +56 -0
- package/src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.stub.spec.d.ts +18 -0
- package/src/app/inobeta-ui/ui/main-menu/components/main-menu-dialog/main-menu-dialog.component.d.ts +13 -0
- package/src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/header-footer-buttons.component.d.ts +9 -0
- package/src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/main-menu-expanded.component.d.ts +16 -0
- package/src/app/inobeta-ui/ui/main-menu/index.d.ts +10 -0
- package/src/app/inobeta-ui/ui/main-menu/main-menu-test.module.d.ts +8 -0
- package/src/app/inobeta-ui/ui/main-menu/main-menu.module.d.ts +16 -0
- package/src/app/inobeta-ui/ui/main-menu/models/main-menu-button.model.d.ts +8 -0
- package/src/app/inobeta-ui/ui/main-menu/models/main-menu-data-set.model.d.ts +14 -0
- package/src/app/inobeta-ui/ui/main-menu/models/main-menu-data.model.d.ts +4 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/autocomplete.d.ts +14 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/button.d.ts +28 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/checkbox.d.ts +10 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/datepicker.d.ts +17 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/dropdown.d.ts +29 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/label.d.ts +10 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/padding.d.ts +10 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/radio.d.ts +10 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/slide-toggle.d.ts +10 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/textarea.d.ts +17 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/textbox.d.ts +21 -0
- package/src/app/inobeta-ui/ui/material-forms/index.d.ts +17 -0
- package/src/app/inobeta-ui/ui/material-forms/intl/datepicker.intl.d.ts +25 -0
- package/src/app/inobeta-ui/ui/material-forms/material-form/material-form.component.d.ts +26 -0
- package/src/app/inobeta-ui/ui/material-forms/material-form/material-form.stub.spec.d.ts +21 -0
- package/src/app/inobeta-ui/ui/material-forms/material-form-array/material-form-array.component.d.ts +6 -0
- package/src/app/inobeta-ui/ui/material-forms/material-form-control/material-form-control.component.d.ts +19 -0
- package/src/app/inobeta-ui/ui/material-forms/material-form-test.module.d.ts +9 -0
- package/src/app/inobeta-ui/ui/material-forms/material-form.module.d.ts +49 -0
- package/src/app/inobeta-ui/ui/material-forms/translations.d.ts +25 -0
- package/src/app/inobeta-ui/ui/modal/index.d.ts +6 -0
- package/src/app/inobeta-ui/ui/modal/modal-message.component.d.ts +10 -0
- package/src/app/inobeta-ui/ui/modal/modal-message.model.d.ts +32 -0
- package/src/app/inobeta-ui/ui/modal/modal-message.service.d.ts +49 -0
- package/src/app/inobeta-ui/ui/modal/modal-message.service.stub.spec.d.ts +6 -0
- package/src/app/inobeta-ui/ui/modal/modal-test.module.d.ts +7 -0
- package/src/app/inobeta-ui/ui/modal/modal.module.d.ts +11 -0
- package/src/app/inobeta-ui/ui/modal/translations.d.ts +9 -0
- package/src/app/inobeta-ui/ui/toast/_toast-theme.scss +56 -0
- package/src/app/inobeta-ui/ui/toast/index.d.ts +4 -0
- package/src/app/inobeta-ui/ui/toast/toast-test.module.d.ts +6 -0
- package/src/app/inobeta-ui/ui/toast/toast.module.d.ts +7 -0
- package/src/app/inobeta-ui/ui/toast/toast.service.d.ts +36 -0
- package/src/app/inobeta-ui/ui/toast/toast.service.stub.spec.d.ts +3 -0
- package/src/app/inobeta-ui/ui/uploader/index.d.ts +2 -0
- package/src/app/inobeta-ui/ui/uploader/uploader.component.d.ts +12 -0
- package/src/app/inobeta-ui/ui/uploader/uploader.module.d.ts +10 -0
- package/src/app/inobeta-ui/ui/views/components/default-table-view/default-table-view.component.d.ts +8 -0
- package/src/app/inobeta-ui/ui/views/components/index.d.ts +5 -0
- package/src/app/inobeta-ui/ui/views/components/table-view/table-view.component.d.ts +14 -0
- package/src/app/inobeta-ui/ui/views/components/table-view-group/table-view-group.component.d.ts +45 -0
- package/src/app/inobeta-ui/ui/views/components/view-dialog/view-dialog.component.d.ts +22 -0
- package/src/app/inobeta-ui/ui/views/components/view-list/view-list.component.d.ts +16 -0
- package/src/app/inobeta-ui/ui/views/index.d.ts +4 -0
- package/src/app/inobeta-ui/ui/views/store/actions.d.ts +27 -0
- package/src/app/inobeta-ui/ui/views/store/index.d.ts +2 -0
- package/src/app/inobeta-ui/ui/views/store/reducer.d.ts +7 -0
- package/src/app/inobeta-ui/ui/views/store/views/index.d.ts +3 -0
- package/src/app/inobeta-ui/ui/views/store/views/reducer.d.ts +3 -0
- package/src/app/inobeta-ui/ui/views/store/views/selectors.d.ts +4 -0
- package/src/app/inobeta-ui/ui/views/store/views/table-view.d.ts +22 -0
- package/src/app/inobeta-ui/ui/views/translations.d.ts +33 -0
- package/src/app/inobeta-ui/ui/views/view.module.d.ts +23 -0
- package/src/app/inobeta-ui/ui/views/view.service.d.ts +40 -0
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import { formatDate } from "@angular/common";
|
|
2
|
+
import { Component, ViewEncapsulation } from "@angular/core";
|
|
3
|
+
import { FormControl, FormGroup, Validators } from "@angular/forms";
|
|
4
|
+
import { IbDateFilterCategory, IbDateFilterPeriod, } from "../../filter.types";
|
|
5
|
+
import { and, gte, lte, none } from "../../filters";
|
|
6
|
+
import { IbFilterBase } from "../base/filter-base";
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/material/core";
|
|
9
|
+
import * as i2 from "@ngx-translate/core";
|
|
10
|
+
import * as i3 from "@angular/common";
|
|
11
|
+
import * as i4 from "@angular/forms";
|
|
12
|
+
import * as i5 from "@angular/material/input";
|
|
13
|
+
import * as i6 from "@angular/material/form-field";
|
|
14
|
+
import * as i7 from "@angular/material/button";
|
|
15
|
+
import * as i8 from "@angular/material/select";
|
|
16
|
+
import * as i9 from "@angular/material/radio";
|
|
17
|
+
import * as i10 from "@angular/material/datepicker";
|
|
18
|
+
import * as i11 from "../../filter-button/filter-button.component";
|
|
19
|
+
import * as i12 from "../../filter-button/filter-action-group.component";
|
|
20
|
+
export class IbDateFilter extends IbFilterBase {
|
|
21
|
+
adapter;
|
|
22
|
+
translate;
|
|
23
|
+
searchCriteria = new FormGroup({
|
|
24
|
+
categorySelected: new FormControl(null, [Validators.required]),
|
|
25
|
+
within: new FormGroup({
|
|
26
|
+
value: new FormControl(null, [Validators.min(1)]),
|
|
27
|
+
period: new FormControl(IbDateFilterPeriod.MINUTES, {
|
|
28
|
+
nonNullable: true,
|
|
29
|
+
}),
|
|
30
|
+
}),
|
|
31
|
+
moreThan: new FormGroup({
|
|
32
|
+
value: new FormControl(null, [Validators.min(1)]),
|
|
33
|
+
period: new FormControl(IbDateFilterPeriod.MINUTES, {
|
|
34
|
+
nonNullable: true,
|
|
35
|
+
}),
|
|
36
|
+
}),
|
|
37
|
+
range: new FormGroup({
|
|
38
|
+
start: new FormControl(null),
|
|
39
|
+
end: new FormControl(null),
|
|
40
|
+
}),
|
|
41
|
+
});
|
|
42
|
+
withinPeriodOptions = [
|
|
43
|
+
{
|
|
44
|
+
displayValue: "shared.ibFilter.date.minutes",
|
|
45
|
+
value: IbDateFilterPeriod.MINUTES,
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
displayValue: "shared.ibFilter.date.hours",
|
|
49
|
+
value: IbDateFilterPeriod.HOURS,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
displayValue: "shared.ibFilter.date.days",
|
|
53
|
+
value: IbDateFilterPeriod.DAYS,
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
displayValue: "shared.ibFilter.date.weeks",
|
|
57
|
+
value: IbDateFilterPeriod.WEEKS,
|
|
58
|
+
},
|
|
59
|
+
];
|
|
60
|
+
moreThanPeriodOptions = [
|
|
61
|
+
{
|
|
62
|
+
displayValue: "shared.ibFilter.date.minutesAgo",
|
|
63
|
+
value: IbDateFilterPeriod.MINUTES,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
displayValue: "shared.ibFilter.date.hoursAgo",
|
|
67
|
+
value: IbDateFilterPeriod.HOURS,
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
displayValue: "shared.ibFilter.date.daysAgo",
|
|
71
|
+
value: IbDateFilterPeriod.DAYS,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
displayValue: "shared.ibFilter.date.weeksAgo",
|
|
75
|
+
value: IbDateFilterPeriod.WEEKS,
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
multipliers = {
|
|
79
|
+
[IbDateFilterPeriod.MINUTES]: 60_000,
|
|
80
|
+
[IbDateFilterPeriod.HOURS]: 60_000 * 60,
|
|
81
|
+
[IbDateFilterPeriod.DAYS]: 60_000 * 60 * 24,
|
|
82
|
+
[IbDateFilterPeriod.WEEKS]: 60_000 * 60 * 24 * 7,
|
|
83
|
+
};
|
|
84
|
+
get isDirty() {
|
|
85
|
+
if (this.getSelected()?.invalid) {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
if (this.isSelected(IbDateFilterCategory.WITHIN)) {
|
|
89
|
+
return !!this.rawValue?.within?.value;
|
|
90
|
+
}
|
|
91
|
+
if (this.isSelected(IbDateFilterCategory.MORE_THAN)) {
|
|
92
|
+
return !!this.rawValue?.moreThan?.value;
|
|
93
|
+
}
|
|
94
|
+
if (this.isSelected(IbDateFilterCategory.RANGE)) {
|
|
95
|
+
return this.rawValue?.range?.start && this.rawValue?.range?.end;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
get displayValue() {
|
|
99
|
+
if (this.isSelected(IbDateFilterCategory.WITHIN)) {
|
|
100
|
+
return this.rawValue?.within?.value;
|
|
101
|
+
}
|
|
102
|
+
if (this.isSelected(IbDateFilterCategory.MORE_THAN)) {
|
|
103
|
+
return this.rawValue?.moreThan?.value;
|
|
104
|
+
}
|
|
105
|
+
if (this.isSelected(IbDateFilterCategory.RANGE)) {
|
|
106
|
+
if (!this.rawValue?.range?.start || !this.rawValue?.range?.end) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const start = formatDate(this.rawValue?.range?.start, "dd/MM/yyyy", "en");
|
|
110
|
+
const end = formatDate(this.rawValue?.range?.end, "dd/MM/yyyy", "en");
|
|
111
|
+
return `${start} - ${end}`;
|
|
112
|
+
}
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
get displayPeriod() {
|
|
116
|
+
if (this.isSelected(IbDateFilterCategory.WITHIN)) {
|
|
117
|
+
return this.withinPeriodOptions.find((o) => o.value === this.rawValue?.within?.period)?.displayValue;
|
|
118
|
+
}
|
|
119
|
+
if (this.isSelected(IbDateFilterCategory.MORE_THAN)) {
|
|
120
|
+
return this.moreThanPeriodOptions.find((o) => o.value === this.rawValue?.moreThan?.period)?.displayValue;
|
|
121
|
+
}
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
get displayCondition() {
|
|
125
|
+
if (this.isSelected(IbDateFilterCategory.WITHIN)) {
|
|
126
|
+
return "shared.ibFilter.date.withinTheLast";
|
|
127
|
+
}
|
|
128
|
+
if (this.isSelected(IbDateFilterCategory.MORE_THAN)) {
|
|
129
|
+
return "shared.ibFilter.date.moreThan";
|
|
130
|
+
}
|
|
131
|
+
if (this.isSelected(IbDateFilterCategory.RANGE)) {
|
|
132
|
+
return "shared.ibFilter.date.between";
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
constructor(adapter, translate) {
|
|
136
|
+
super();
|
|
137
|
+
this.adapter = adapter;
|
|
138
|
+
this.translate = translate;
|
|
139
|
+
this.adapter.setLocale(this.translate.currentLang);
|
|
140
|
+
this.translate.onTranslationChange.subscribe((ev) => {
|
|
141
|
+
this.adapter.setLocale(ev.lang);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
isSelected(category) {
|
|
145
|
+
return this.searchCriteria.value.categorySelected === category;
|
|
146
|
+
}
|
|
147
|
+
getSelected() {
|
|
148
|
+
return this.searchCriteria?.get(this.searchCriteria.value.categorySelected);
|
|
149
|
+
}
|
|
150
|
+
applyFilter() {
|
|
151
|
+
this.searchCriteria.updateValueAndValidity();
|
|
152
|
+
if (this.getSelected()?.invalid) {
|
|
153
|
+
this.searchCriteria.markAllAsTouched();
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const categorySelected = this.searchCriteria?.value.categorySelected;
|
|
157
|
+
const patch = {
|
|
158
|
+
[categorySelected]: this.getSelected()?.value,
|
|
159
|
+
categorySelected,
|
|
160
|
+
};
|
|
161
|
+
this.clearFilter(patch);
|
|
162
|
+
this.filter.update();
|
|
163
|
+
this.button.closeMenu();
|
|
164
|
+
}
|
|
165
|
+
clearFilter(patchValue = {}) {
|
|
166
|
+
const defaultPeriod = {
|
|
167
|
+
period: IbDateFilterPeriod.MINUTES,
|
|
168
|
+
value: null,
|
|
169
|
+
};
|
|
170
|
+
this.searchCriteria.reset({
|
|
171
|
+
within: defaultPeriod,
|
|
172
|
+
moreThan: defaultPeriod,
|
|
173
|
+
...patchValue,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
clear() {
|
|
177
|
+
this.clearFilter();
|
|
178
|
+
this.filter.update();
|
|
179
|
+
}
|
|
180
|
+
getOffsetTime(value, category) {
|
|
181
|
+
const now = new Date();
|
|
182
|
+
const then = new Date();
|
|
183
|
+
const multiplier = this.multipliers[category.period];
|
|
184
|
+
then.setTime(now.getTime() - value * multiplier);
|
|
185
|
+
return [then, now];
|
|
186
|
+
}
|
|
187
|
+
toMidnight(date) {
|
|
188
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999);
|
|
189
|
+
}
|
|
190
|
+
buildWithinCategory() {
|
|
191
|
+
const value = this.searchCriteria.value.within.value;
|
|
192
|
+
if (!value) {
|
|
193
|
+
return none();
|
|
194
|
+
}
|
|
195
|
+
const [then, now] = this.getOffsetTime(value, this.searchCriteria.value.within);
|
|
196
|
+
return and([gte(then), lte(now)]);
|
|
197
|
+
}
|
|
198
|
+
buildMoreThanCategory() {
|
|
199
|
+
const value = this.searchCriteria.value.moreThan.value;
|
|
200
|
+
if (!value) {
|
|
201
|
+
return none();
|
|
202
|
+
}
|
|
203
|
+
const [then] = this.getOffsetTime(value, this.searchCriteria.value.moreThan);
|
|
204
|
+
return lte(then);
|
|
205
|
+
}
|
|
206
|
+
buildRangeCategory() {
|
|
207
|
+
const start = this.searchCriteria.value.range.start;
|
|
208
|
+
const end = this.searchCriteria.value.range.end;
|
|
209
|
+
if (!start || !end) {
|
|
210
|
+
return none();
|
|
211
|
+
}
|
|
212
|
+
return and([gte(new Date(start)), lte(this.toMidnight(new Date(end)))]);
|
|
213
|
+
}
|
|
214
|
+
build = () => {
|
|
215
|
+
if (this.getSelected()?.invalid) {
|
|
216
|
+
return none();
|
|
217
|
+
}
|
|
218
|
+
if (this.isSelected(IbDateFilterCategory.WITHIN)) {
|
|
219
|
+
return this.buildWithinCategory();
|
|
220
|
+
}
|
|
221
|
+
if (this.isSelected(IbDateFilterCategory.MORE_THAN)) {
|
|
222
|
+
return this.buildMoreThanCategory();
|
|
223
|
+
}
|
|
224
|
+
if (this.isSelected(IbDateFilterCategory.RANGE)) {
|
|
225
|
+
return this.buildRangeCategory();
|
|
226
|
+
}
|
|
227
|
+
return none();
|
|
228
|
+
};
|
|
229
|
+
toQueryWithinCategory() {
|
|
230
|
+
const value = this.searchCriteria.value.within.value;
|
|
231
|
+
if (!value) {
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
const [then, now] = this.getOffsetTime(value, this.searchCriteria.value.within);
|
|
235
|
+
return {
|
|
236
|
+
start: then.toISOString(),
|
|
237
|
+
end: now.toISOString(),
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
toQueryMoreThanCategory() {
|
|
241
|
+
const value = this.searchCriteria.value.moreThan.value;
|
|
242
|
+
if (!value) {
|
|
243
|
+
return null;
|
|
244
|
+
}
|
|
245
|
+
const [then] = this.getOffsetTime(value, this.searchCriteria.value.moreThan);
|
|
246
|
+
return {
|
|
247
|
+
start: new Date(0).toISOString(),
|
|
248
|
+
end: then.toISOString(),
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
toQueryRangeCategory() {
|
|
252
|
+
const start = this.searchCriteria.value.range.start;
|
|
253
|
+
const end = this.searchCriteria.value.range.end;
|
|
254
|
+
if (!start || !end) {
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
return {
|
|
258
|
+
start: new Date(start).toISOString(),
|
|
259
|
+
end: this.toMidnight(new Date(end)).toISOString(),
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
toQuery() {
|
|
263
|
+
if (this.getSelected()?.invalid) {
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
if (this.isSelected(IbDateFilterCategory.WITHIN)) {
|
|
267
|
+
return this.toQueryWithinCategory();
|
|
268
|
+
}
|
|
269
|
+
if (this.isSelected(IbDateFilterCategory.MORE_THAN)) {
|
|
270
|
+
return this.toQueryMoreThanCategory();
|
|
271
|
+
}
|
|
272
|
+
if (this.isSelected(IbDateFilterCategory.RANGE)) {
|
|
273
|
+
return this.toQueryRangeCategory();
|
|
274
|
+
}
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbDateFilter, deps: [{ token: i1.DateAdapter }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
278
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: IbDateFilter, selector: "ib-date-filter", providers: [{ provide: IbFilterBase, useExisting: IbDateFilter }], usesInheritance: true, ngImport: i0, template: "<ib-filter-button [attr.data-cy]=\"'ib-date-filter-' + name\">\n <span ib-filter-name><ng-content></ng-content></span>\n <span ib-filter-value *ngIf=\"isDirty\">\n {{ displayCondition | translate | lowercase }} {{ displayValue }} {{ displayPeriod | translate }}\n </span>\n\n <section [formGroup]=\"filter?.form\" style=\"padding: 0.5em 1em 0 1em\">\n <section [formGroupName]=\"name\" class=\"ib-filter-date\">\n <mat-radio-group formControlName=\"categorySelected\">\n <mat-radio-button value=\"within\" [attr.data-cy]=\"'ib-date-filter-' + name + '-within'\">{{\n 'shared.ibFilter.date.withinTheLast' | translate }}</mat-radio-button>\n <section [class.ib-filter-date__form--hidden]=\"!isSelected('within')\" formGroupName=\"within\"\n class=\"ib-filter-date__form\">\n <mat-form-field style=\"width: 100%\" appearance=\"outline\">\n <input type=\"number\" matInput formControlName=\"value\"\n [attr.data-cy]=\"'ib-date-filter-' + name + '-within-value'\" />\n </mat-form-field>\n\n <mat-form-field style=\"width: 100%\">\n <mat-select formControlName=\"period\" [attr.data-cy]=\"'ib-date-filter-' + name + '-within-period'\">\n <mat-option *ngFor=\"let option of withinPeriodOptions\" [value]=\"option.value\">\n {{ option.displayValue | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </section>\n\n <mat-radio-button value=\"moreThan\" [attr.data-cy]=\"'ib-date-filter-' + name + '-moreThan'\">{{\n 'shared.ibFilter.date.moreThan' | translate }}</mat-radio-button>\n <section [class.ib-filter-date__form--hidden]=\"!isSelected('moreThan')\" formGroupName=\"moreThan\"\n class=\"ib-filter-date__form\">\n <mat-form-field style=\"width: 100%\" appearance=\"outline\">\n <input type=\"number\" matInput formControlName=\"value\"\n [attr.data-cy]=\"'ib-date-filter-' + name + '-moreThan-value'\" />\n </mat-form-field>\n\n <mat-form-field style=\"width: 100%\">\n <mat-select formControlName=\"period\" [attr.data-cy]=\"'ib-date-filter-' + name + '-moreThan-period'\">\n <mat-option *ngFor=\"let option of moreThanPeriodOptions\" [value]=\"option.value\">\n {{ option.displayValue | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </section>\n\n <mat-radio-button value=\"range\" [attr.data-cy]=\"'ib-date-filter-' + name + '-range'\">{{\n 'shared.ibFilter.date.between' | translate }}</mat-radio-button>\n <section [class.ib-filter-date__form--hidden]=\"!isSelected('range')\" formGroupName=\"range\"\n class=\"ib-filter-date__range\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>{{ 'shared.ibFilter.date.dateRangeLabel' | translate }}</mat-label>\n <mat-date-range-input [rangePicker]=\"picker\">\n <input matStartDate formControlName=\"start\" placeholder=\"dd/mm/yyyy\"\n [attr.data-cy]=\"'ib-date-filter-' + name + '-range-start'\">\n <input matEndDate formControlName=\"end\" placeholder=\"dd/mm/yyyy\"\n [attr.data-cy]=\"'ib-date-filter-' + name + '-range-end'\">\n </mat-date-range-input>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n <mat-error>{{ 'shared.ibFilter.date.dateRangeInvalid' | translate }}</mat-error>\n </mat-form-field>\n </section>\n\n </mat-radio-group>\n </section>\n </section>\n\n <ib-filter-action-group>\n <button mat-button (click)=\"clear()\" [disabled]=\"!isDirty\" [attr.data-cy]=\"'ib-filter-clear'\">\n {{ \"shared.ibFilter.clear\" | translate }}\n </button>\n <button mat-button color=\"primary\" (click)=\"applyFilter()\" [attr.data-cy]=\"'ib-filter-update'\">\n {{ \"shared.ibFilter.update\" | translate }}\n </button>\n </ib-filter-action-group>\n</ib-filter-button>", styles: [".ib-filter-date mat-radio-group{display:flex;flex-direction:column}.ib-filter-date section{margin-left:32px;margin-bottom:8px}.ib-filter-date .ib-filter-date__form{display:grid;gap:16px;grid-template-columns:8ch auto}.ib-filter-date .ib-filter-date__form mat-form-field{--mat-form-field-container-height: 36px;--mat-form-field-filled-label-display: none;--mat-form-field-container-vertical-padding: 6px;--mat-form-field-filled-with-label-container-padding-top: 6px;--mat-form-field-filled-with-label-container-padding-bottom: 6px;padding-bottom:0}.ib-filter-date .ib-filter-date__form input[type=number]{appearance:textfield}.ib-filter-date .ib-filter-date__form--hidden{display:none}.ib-filter-date .ib-filter-date__range input{font-size:12px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i9.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i9.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: i10.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i10.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i10.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i10.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i10.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: i11.IbFilterButton, selector: "ib-filter-button" }, { kind: "directive", type: i12.IbFilterActionGroup, selector: "ib-filter-action-group" }, { kind: "pipe", type: i3.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
279
|
+
}
|
|
280
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbDateFilter, decorators: [{
|
|
281
|
+
type: Component,
|
|
282
|
+
args: [{ selector: "ib-date-filter", providers: [{ provide: IbFilterBase, useExisting: IbDateFilter }], encapsulation: ViewEncapsulation.None, template: "<ib-filter-button [attr.data-cy]=\"'ib-date-filter-' + name\">\n <span ib-filter-name><ng-content></ng-content></span>\n <span ib-filter-value *ngIf=\"isDirty\">\n {{ displayCondition | translate | lowercase }} {{ displayValue }} {{ displayPeriod | translate }}\n </span>\n\n <section [formGroup]=\"filter?.form\" style=\"padding: 0.5em 1em 0 1em\">\n <section [formGroupName]=\"name\" class=\"ib-filter-date\">\n <mat-radio-group formControlName=\"categorySelected\">\n <mat-radio-button value=\"within\" [attr.data-cy]=\"'ib-date-filter-' + name + '-within'\">{{\n 'shared.ibFilter.date.withinTheLast' | translate }}</mat-radio-button>\n <section [class.ib-filter-date__form--hidden]=\"!isSelected('within')\" formGroupName=\"within\"\n class=\"ib-filter-date__form\">\n <mat-form-field style=\"width: 100%\" appearance=\"outline\">\n <input type=\"number\" matInput formControlName=\"value\"\n [attr.data-cy]=\"'ib-date-filter-' + name + '-within-value'\" />\n </mat-form-field>\n\n <mat-form-field style=\"width: 100%\">\n <mat-select formControlName=\"period\" [attr.data-cy]=\"'ib-date-filter-' + name + '-within-period'\">\n <mat-option *ngFor=\"let option of withinPeriodOptions\" [value]=\"option.value\">\n {{ option.displayValue | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </section>\n\n <mat-radio-button value=\"moreThan\" [attr.data-cy]=\"'ib-date-filter-' + name + '-moreThan'\">{{\n 'shared.ibFilter.date.moreThan' | translate }}</mat-radio-button>\n <section [class.ib-filter-date__form--hidden]=\"!isSelected('moreThan')\" formGroupName=\"moreThan\"\n class=\"ib-filter-date__form\">\n <mat-form-field style=\"width: 100%\" appearance=\"outline\">\n <input type=\"number\" matInput formControlName=\"value\"\n [attr.data-cy]=\"'ib-date-filter-' + name + '-moreThan-value'\" />\n </mat-form-field>\n\n <mat-form-field style=\"width: 100%\">\n <mat-select formControlName=\"period\" [attr.data-cy]=\"'ib-date-filter-' + name + '-moreThan-period'\">\n <mat-option *ngFor=\"let option of moreThanPeriodOptions\" [value]=\"option.value\">\n {{ option.displayValue | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </section>\n\n <mat-radio-button value=\"range\" [attr.data-cy]=\"'ib-date-filter-' + name + '-range'\">{{\n 'shared.ibFilter.date.between' | translate }}</mat-radio-button>\n <section [class.ib-filter-date__form--hidden]=\"!isSelected('range')\" formGroupName=\"range\"\n class=\"ib-filter-date__range\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>{{ 'shared.ibFilter.date.dateRangeLabel' | translate }}</mat-label>\n <mat-date-range-input [rangePicker]=\"picker\">\n <input matStartDate formControlName=\"start\" placeholder=\"dd/mm/yyyy\"\n [attr.data-cy]=\"'ib-date-filter-' + name + '-range-start'\">\n <input matEndDate formControlName=\"end\" placeholder=\"dd/mm/yyyy\"\n [attr.data-cy]=\"'ib-date-filter-' + name + '-range-end'\">\n </mat-date-range-input>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n <mat-error>{{ 'shared.ibFilter.date.dateRangeInvalid' | translate }}</mat-error>\n </mat-form-field>\n </section>\n\n </mat-radio-group>\n </section>\n </section>\n\n <ib-filter-action-group>\n <button mat-button (click)=\"clear()\" [disabled]=\"!isDirty\" [attr.data-cy]=\"'ib-filter-clear'\">\n {{ \"shared.ibFilter.clear\" | translate }}\n </button>\n <button mat-button color=\"primary\" (click)=\"applyFilter()\" [attr.data-cy]=\"'ib-filter-update'\">\n {{ \"shared.ibFilter.update\" | translate }}\n </button>\n </ib-filter-action-group>\n</ib-filter-button>", styles: [".ib-filter-date mat-radio-group{display:flex;flex-direction:column}.ib-filter-date section{margin-left:32px;margin-bottom:8px}.ib-filter-date .ib-filter-date__form{display:grid;gap:16px;grid-template-columns:8ch auto}.ib-filter-date .ib-filter-date__form mat-form-field{--mat-form-field-container-height: 36px;--mat-form-field-filled-label-display: none;--mat-form-field-container-vertical-padding: 6px;--mat-form-field-filled-with-label-container-padding-top: 6px;--mat-form-field-filled-with-label-container-padding-bottom: 6px;padding-bottom:0}.ib-filter-date .ib-filter-date__form input[type=number]{appearance:textfield}.ib-filter-date .ib-filter-date__form--hidden{display:none}.ib-filter-date .ib-filter-date__range input{font-size:12px}\n"] }]
|
|
283
|
+
}], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.TranslateService }] });
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9pbm9iZXRhLXVpL3VpL2thaS1maWx0ZXIvZmlsdGVycy9kYXRlL2ZpbHRlci1kYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvaW5vYmV0YS11aS91aS9rYWktZmlsdGVyL2ZpbHRlcnMvZGF0ZS9maWx0ZXItZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGtCQUFrQixHQUduQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQVNuRCxNQUFNLE9BQU8sWUFBYSxTQUFRLFlBQVk7SUF3SWxDO0lBQ0E7SUF4SVYsY0FBYyxHQUFHLElBQUksU0FBUyxDQUFDO1FBQzdCLGdCQUFnQixFQUFFLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxNQUFNLEVBQUUsSUFBSSxTQUFTLENBQUM7WUFDcEIsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxNQUFNLEVBQUUsSUFBSSxXQUFXLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFO2dCQUNsRCxXQUFXLEVBQUUsSUFBSTthQUNsQixDQUFDO1NBQ0gsQ0FBQztRQUNGLFFBQVEsRUFBRSxJQUFJLFNBQVMsQ0FBQztZQUN0QixLQUFLLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pELE1BQU0sRUFBRSxJQUFJLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2xELFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUM7U0FDSCxDQUFDO1FBQ0YsS0FBSyxFQUFFLElBQUksU0FBUyxDQUFDO1lBQ25CLEtBQUssRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDNUIsR0FBRyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQztTQUMzQixDQUFDO0tBQ0gsQ0FBQyxDQUFDO0lBRUgsbUJBQW1CLEdBQUc7UUFDcEI7WUFDRSxZQUFZLEVBQUUsOEJBQThCO1lBQzVDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO1NBQ2xDO1FBQ0Q7WUFDRSxZQUFZLEVBQUUsNEJBQTRCO1lBQzFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxLQUFLO1NBQ2hDO1FBQ0Q7WUFDRSxZQUFZLEVBQUUsMkJBQTJCO1lBQ3pDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxJQUFJO1NBQy9CO1FBQ0Q7WUFDRSxZQUFZLEVBQUUsNEJBQTRCO1lBQzFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxLQUFLO1NBQ2hDO0tBQ0YsQ0FBQztJQUVGLHFCQUFxQixHQUFHO1FBQ3RCO1lBQ0UsWUFBWSxFQUFFLGlDQUFpQztZQUMvQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsT0FBTztTQUNsQztRQUNEO1lBQ0UsWUFBWSxFQUFFLCtCQUErQjtZQUM3QyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsS0FBSztTQUNoQztRQUNEO1lBQ0UsWUFBWSxFQUFFLDhCQUE4QjtZQUM1QyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsSUFBSTtTQUMvQjtRQUNEO1lBQ0UsWUFBWSxFQUFFLCtCQUErQjtZQUM3QyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsS0FBSztTQUNoQztLQUNGLENBQUM7SUFFTSxXQUFXLEdBQUc7UUFDcEIsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNO1FBQ3BDLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxHQUFHLEVBQUU7UUFDdkMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUU7UUFDM0MsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0tBQ2pELENBQUM7SUFFRixJQUFJLE9BQU87UUFDVCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUNoQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNqRCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUM7UUFDeEMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3BELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQztRQUMxQyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEQsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDakQsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUM7UUFDdEMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3BELE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDO1FBQ3hDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7Z0JBQy9ELE9BQU87WUFDVCxDQUFDO1lBQ0QsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDMUUsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdEUsT0FBTyxHQUFHLEtBQUssTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBRUQsT0FBTztJQUNULENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNqRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQ2xDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FDakQsRUFBRSxZQUFZLENBQUM7UUFDbEIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3BELE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FDcEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUNuRCxFQUFFLFlBQVksQ0FBQztRQUNsQixDQUFDO1FBRUQsT0FBTztJQUNULENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNqRCxPQUFPLG9DQUFvQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNwRCxPQUFPLCtCQUErQixDQUFDO1FBQ3pDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoRCxPQUFPLDhCQUE4QixDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFDVSxPQUF5QixFQUN6QixTQUEyQjtRQUVuQyxLQUFLLEVBQUUsQ0FBQztRQUhBLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQ3pCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBR25DLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsS0FBSyxRQUFRLENBQUM7SUFDakUsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDN0MsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3ZDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUNyRSxNQUFNLEtBQUssR0FBRztZQUNaLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsS0FBSztZQUM3QyxnQkFBZ0I7U0FDakIsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxXQUFXLENBQUMsVUFBVSxHQUFHLEVBQUU7UUFDekIsTUFBTSxhQUFhLEdBQUc7WUFDcEIsTUFBTSxFQUFFLGtCQUFrQixDQUFDLE9BQU87WUFDbEMsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDO1FBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7WUFDeEIsTUFBTSxFQUFFLGFBQWE7WUFDckIsUUFBUSxFQUFFLGFBQWE7WUFDdkIsR0FBRyxVQUFVO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQWEsRUFBRSxRQUFRO1FBQzNDLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN4QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUM7UUFDakQsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRU8sVUFBVSxDQUFDLElBQVU7UUFDM0IsT0FBTyxJQUFJLElBQUksQ0FDYixJQUFJLENBQUMsV0FBVyxFQUFFLEVBQ2xCLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFDZixJQUFJLENBQUMsT0FBTyxFQUFFLEVBQ2QsRUFBRSxFQUNGLEVBQUUsRUFDRixFQUFFLEVBQ0YsR0FBRyxDQUNKLENBQUM7SUFDSixDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDckQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNoQixDQUFDO1FBRUQsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUNwQyxLQUFLLEVBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUNqQyxDQUFDO1FBRUYsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDdkQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNoQixDQUFDO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQy9CLEtBQUssRUFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQ25DLENBQUM7UUFFRixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDcEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUNoRCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDbkIsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxLQUFLLEdBQUcsR0FBZ0IsRUFBRTtRQUN4QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUNoQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNqRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3BDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNwRCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ25DLENBQUM7UUFFRCxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztJQUVNLHFCQUFxQjtRQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDcEMsS0FBSyxFQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDakMsQ0FBQztRQUVGLE9BQU87WUFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUN6QixHQUFHLEVBQUUsR0FBRyxDQUFDLFdBQVcsRUFBRTtTQUN2QixDQUFDO0lBQ0osQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUMvQixLQUFLLEVBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUNuQyxDQUFDO1FBRUYsT0FBTztZQUNMLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7WUFDaEMsR0FBRyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7U0FDeEIsQ0FBQztJQUNKLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNwRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ2hELElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUNwQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtTQUNsRCxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUNoQyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2pELE9BQU8sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDdEMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3BELE9BQU8sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDeEMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDckMsQ0FBQztRQUVELE9BQU87SUFDVCxDQUFDO3VHQTdVVSxZQUFZOzJGQUFaLFlBQVkseUNBSFosQ0FBQyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxDQUFDLGlEQ2xCbkUsNm1JQTJFbUI7OzJGRHRETixZQUFZO2tCQVB4QixTQUFTOytCQUNFLGdCQUFnQixhQUdmLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsY0FBYyxFQUFFLENBQUMsaUJBQ2xELGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7XG4gIEliRGF0ZUZpbHRlckNhdGVnb3J5LFxuICBJYkRhdGVGaWx0ZXJQZXJpb2QsXG4gIEliRGF0ZVF1ZXJ5LFxuICBJYkZpbHRlckRlZixcbn0gZnJvbSBcIi4uLy4uL2ZpbHRlci50eXBlc1wiO1xuaW1wb3J0IHsgYW5kLCBndGUsIGx0ZSwgbm9uZSB9IGZyb20gXCIuLi8uLi9maWx0ZXJzXCI7XG5pbXBvcnQgeyBJYkZpbHRlckJhc2UgfSBmcm9tIFwiLi4vYmFzZS9maWx0ZXItYmFzZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiaWItZGF0ZS1maWx0ZXJcIixcbiAgdGVtcGxhdGVVcmw6IFwiZmlsdGVyLWRhdGUuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2ZpbHRlci1kYXRlLmNvbXBvbmVudC5zY3NzXCJdLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEliRmlsdGVyQmFzZSwgdXNlRXhpc3Rpbmc6IEliRGF0ZUZpbHRlciB9XSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgSWJEYXRlRmlsdGVyIGV4dGVuZHMgSWJGaWx0ZXJCYXNlIHtcbiAgc2VhcmNoQ3JpdGVyaWEgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBjYXRlZ29yeVNlbGVjdGVkOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICB3aXRoaW46IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgdmFsdWU6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbVmFsaWRhdG9ycy5taW4oMSldKSxcbiAgICAgIHBlcmlvZDogbmV3IEZvcm1Db250cm9sKEliRGF0ZUZpbHRlclBlcmlvZC5NSU5VVEVTLCB7XG4gICAgICAgIG5vbk51bGxhYmxlOiB0cnVlLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgbW9yZVRoYW46IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgdmFsdWU6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbVmFsaWRhdG9ycy5taW4oMSldKSxcbiAgICAgIHBlcmlvZDogbmV3IEZvcm1Db250cm9sKEliRGF0ZUZpbHRlclBlcmlvZC5NSU5VVEVTLCB7XG4gICAgICAgIG5vbk51bGxhYmxlOiB0cnVlLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgcmFuZ2U6IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgc3RhcnQ6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcbiAgICAgIGVuZDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxuICAgIH0pLFxuICB9KTtcblxuICB3aXRoaW5QZXJpb2RPcHRpb25zID0gW1xuICAgIHtcbiAgICAgIGRpc3BsYXlWYWx1ZTogXCJzaGFyZWQuaWJGaWx0ZXIuZGF0ZS5taW51dGVzXCIsXG4gICAgICB2YWx1ZTogSWJEYXRlRmlsdGVyUGVyaW9kLk1JTlVURVMsXG4gICAgfSxcbiAgICB7XG4gICAgICBkaXNwbGF5VmFsdWU6IFwic2hhcmVkLmliRmlsdGVyLmRhdGUuaG91cnNcIixcbiAgICAgIHZhbHVlOiBJYkRhdGVGaWx0ZXJQZXJpb2QuSE9VUlMsXG4gICAgfSxcbiAgICB7XG4gICAgICBkaXNwbGF5VmFsdWU6IFwic2hhcmVkLmliRmlsdGVyLmRhdGUuZGF5c1wiLFxuICAgICAgdmFsdWU6IEliRGF0ZUZpbHRlclBlcmlvZC5EQVlTLFxuICAgIH0sXG4gICAge1xuICAgICAgZGlzcGxheVZhbHVlOiBcInNoYXJlZC5pYkZpbHRlci5kYXRlLndlZWtzXCIsXG4gICAgICB2YWx1ZTogSWJEYXRlRmlsdGVyUGVyaW9kLldFRUtTLFxuICAgIH0sXG4gIF07XG5cbiAgbW9yZVRoYW5QZXJpb2RPcHRpb25zID0gW1xuICAgIHtcbiAgICAgIGRpc3BsYXlWYWx1ZTogXCJzaGFyZWQuaWJGaWx0ZXIuZGF0ZS5taW51dGVzQWdvXCIsXG4gICAgICB2YWx1ZTogSWJEYXRlRmlsdGVyUGVyaW9kLk1JTlVURVMsXG4gICAgfSxcbiAgICB7XG4gICAgICBkaXNwbGF5VmFsdWU6IFwic2hhcmVkLmliRmlsdGVyLmRhdGUuaG91cnNBZ29cIixcbiAgICAgIHZhbHVlOiBJYkRhdGVGaWx0ZXJQZXJpb2QuSE9VUlMsXG4gICAgfSxcbiAgICB7XG4gICAgICBkaXNwbGF5VmFsdWU6IFwic2hhcmVkLmliRmlsdGVyLmRhdGUuZGF5c0Fnb1wiLFxuICAgICAgdmFsdWU6IEliRGF0ZUZpbHRlclBlcmlvZC5EQVlTLFxuICAgIH0sXG4gICAge1xuICAgICAgZGlzcGxheVZhbHVlOiBcInNoYXJlZC5pYkZpbHRlci5kYXRlLndlZWtzQWdvXCIsXG4gICAgICB2YWx1ZTogSWJEYXRlRmlsdGVyUGVyaW9kLldFRUtTLFxuICAgIH0sXG4gIF07XG5cbiAgcHJpdmF0ZSBtdWx0aXBsaWVycyA9IHtcbiAgICBbSWJEYXRlRmlsdGVyUGVyaW9kLk1JTlVURVNdOiA2MF8wMDAsXG4gICAgW0liRGF0ZUZpbHRlclBlcmlvZC5IT1VSU106IDYwXzAwMCAqIDYwLFxuICAgIFtJYkRhdGVGaWx0ZXJQZXJpb2QuREFZU106IDYwXzAwMCAqIDYwICogMjQsXG4gICAgW0liRGF0ZUZpbHRlclBlcmlvZC5XRUVLU106IDYwXzAwMCAqIDYwICogMjQgKiA3LFxuICB9O1xuXG4gIGdldCBpc0RpcnR5KCkge1xuICAgIGlmICh0aGlzLmdldFNlbGVjdGVkKCk/LmludmFsaWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkKEliRGF0ZUZpbHRlckNhdGVnb3J5LldJVEhJTikpIHtcbiAgICAgIHJldHVybiAhIXRoaXMucmF3VmFsdWU/LndpdGhpbj8udmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZChJYkRhdGVGaWx0ZXJDYXRlZ29yeS5NT1JFX1RIQU4pKSB7XG4gICAgICByZXR1cm4gISF0aGlzLnJhd1ZhbHVlPy5tb3JlVGhhbj8udmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZChJYkRhdGVGaWx0ZXJDYXRlZ29yeS5SQU5HRSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJhd1ZhbHVlPy5yYW5nZT8uc3RhcnQgJiYgdGhpcy5yYXdWYWx1ZT8ucmFuZ2U/LmVuZDtcbiAgICB9XG4gIH1cblxuICBnZXQgZGlzcGxheVZhbHVlKCkge1xuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoSWJEYXRlRmlsdGVyQ2F0ZWdvcnkuV0lUSElOKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmF3VmFsdWU/LndpdGhpbj8udmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZChJYkRhdGVGaWx0ZXJDYXRlZ29yeS5NT1JFX1RIQU4pKSB7XG4gICAgICByZXR1cm4gdGhpcy5yYXdWYWx1ZT8ubW9yZVRoYW4/LnZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoSWJEYXRlRmlsdGVyQ2F0ZWdvcnkuUkFOR0UpKSB7XG4gICAgICBpZiAoIXRoaXMucmF3VmFsdWU/LnJhbmdlPy5zdGFydCB8fCAhdGhpcy5yYXdWYWx1ZT8ucmFuZ2U/LmVuZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBzdGFydCA9IGZvcm1hdERhdGUodGhpcy5yYXdWYWx1ZT8ucmFuZ2U/LnN0YXJ0LCBcImRkL01NL3l5eXlcIiwgXCJlblwiKTtcbiAgICAgIGNvbnN0IGVuZCA9IGZvcm1hdERhdGUodGhpcy5yYXdWYWx1ZT8ucmFuZ2U/LmVuZCwgXCJkZC9NTS95eXl5XCIsIFwiZW5cIik7XG4gICAgICByZXR1cm4gYCR7c3RhcnR9IC0gJHtlbmR9YDtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBnZXQgZGlzcGxheVBlcmlvZCgpIHtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkKEliRGF0ZUZpbHRlckNhdGVnb3J5LldJVEhJTikpIHtcbiAgICAgIHJldHVybiB0aGlzLndpdGhpblBlcmlvZE9wdGlvbnMuZmluZChcbiAgICAgICAgKG8pID0+IG8udmFsdWUgPT09IHRoaXMucmF3VmFsdWU/LndpdGhpbj8ucGVyaW9kXG4gICAgICApPy5kaXNwbGF5VmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZChJYkRhdGVGaWx0ZXJDYXRlZ29yeS5NT1JFX1RIQU4pKSB7XG4gICAgICByZXR1cm4gdGhpcy5tb3JlVGhhblBlcmlvZE9wdGlvbnMuZmluZChcbiAgICAgICAgKG8pID0+IG8udmFsdWUgPT09IHRoaXMucmF3VmFsdWU/Lm1vcmVUaGFuPy5wZXJpb2RcbiAgICAgICk/LmRpc3BsYXlWYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBnZXQgZGlzcGxheUNvbmRpdGlvbigpIHtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkKEliRGF0ZUZpbHRlckNhdGVnb3J5LldJVEhJTikpIHtcbiAgICAgIHJldHVybiBcInNoYXJlZC5pYkZpbHRlci5kYXRlLndpdGhpblRoZUxhc3RcIjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkKEliRGF0ZUZpbHRlckNhdGVnb3J5Lk1PUkVfVEhBTikpIHtcbiAgICAgIHJldHVybiBcInNoYXJlZC5pYkZpbHRlci5kYXRlLm1vcmVUaGFuXCI7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZChJYkRhdGVGaWx0ZXJDYXRlZ29yeS5SQU5HRSkpIHtcbiAgICAgIHJldHVybiBcInNoYXJlZC5pYkZpbHRlci5kYXRlLmJldHdlZW5cIjtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFkYXB0ZXI6IERhdGVBZGFwdGVyPGFueT4sXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkYXB0ZXIuc2V0TG9jYWxlKHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nKTtcbiAgICB0aGlzLnRyYW5zbGF0ZS5vblRyYW5zbGF0aW9uQ2hhbmdlLnN1YnNjcmliZSgoZXYpID0+IHtcbiAgICAgIHRoaXMuYWRhcHRlci5zZXRMb2NhbGUoZXYubGFuZyk7XG4gICAgfSk7XG4gIH1cblxuICBpc1NlbGVjdGVkKGNhdGVnb3J5KSB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoQ3JpdGVyaWEudmFsdWUuY2F0ZWdvcnlTZWxlY3RlZCA9PT0gY2F0ZWdvcnk7XG4gIH1cblxuICBnZXRTZWxlY3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hDcml0ZXJpYT8uZ2V0KHRoaXMuc2VhcmNoQ3JpdGVyaWEudmFsdWUuY2F0ZWdvcnlTZWxlY3RlZCk7XG4gIH1cblxuICBhcHBseUZpbHRlcigpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaENyaXRlcmlhLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICBpZiAodGhpcy5nZXRTZWxlY3RlZCgpPy5pbnZhbGlkKSB7XG4gICAgICB0aGlzLnNlYXJjaENyaXRlcmlhLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjYXRlZ29yeVNlbGVjdGVkID0gdGhpcy5zZWFyY2hDcml0ZXJpYT8udmFsdWUuY2F0ZWdvcnlTZWxlY3RlZDtcbiAgICBjb25zdCBwYXRjaCA9IHtcbiAgICAgIFtjYXRlZ29yeVNlbGVjdGVkXTogdGhpcy5nZXRTZWxlY3RlZCgpPy52YWx1ZSxcbiAgICAgIGNhdGVnb3J5U2VsZWN0ZWQsXG4gICAgfTtcblxuICAgIHRoaXMuY2xlYXJGaWx0ZXIocGF0Y2gpO1xuICAgIHRoaXMuZmlsdGVyLnVwZGF0ZSgpO1xuICAgIHRoaXMuYnV0dG9uLmNsb3NlTWVudSgpO1xuICB9XG5cbiAgY2xlYXJGaWx0ZXIocGF0Y2hWYWx1ZSA9IHt9KSB7XG4gICAgY29uc3QgZGVmYXVsdFBlcmlvZCA9IHtcbiAgICAgIHBlcmlvZDogSWJEYXRlRmlsdGVyUGVyaW9kLk1JTlVURVMsXG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICB9O1xuICAgIHRoaXMuc2VhcmNoQ3JpdGVyaWEucmVzZXQoe1xuICAgICAgd2l0aGluOiBkZWZhdWx0UGVyaW9kLFxuICAgICAgbW9yZVRoYW46IGRlZmF1bHRQZXJpb2QsXG4gICAgICAuLi5wYXRjaFZhbHVlLFxuICAgIH0pO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckZpbHRlcigpO1xuICAgIHRoaXMuZmlsdGVyLnVwZGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPZmZzZXRUaW1lKHZhbHVlOiBudW1iZXIsIGNhdGVnb3J5KSB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCB0aGVuID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBtdWx0aXBsaWVyID0gdGhpcy5tdWx0aXBsaWVyc1tjYXRlZ29yeS5wZXJpb2RdO1xuXG4gICAgdGhlbi5zZXRUaW1lKG5vdy5nZXRUaW1lKCkgLSB2YWx1ZSAqIG11bHRpcGxpZXIpO1xuICAgIHJldHVybiBbdGhlbiwgbm93XTtcbiAgfVxuXG4gIHByaXZhdGUgdG9NaWRuaWdodChkYXRlOiBEYXRlKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKFxuICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgZGF0ZS5nZXRNb250aCgpLFxuICAgICAgZGF0ZS5nZXREYXRlKCksXG4gICAgICAyMyxcbiAgICAgIDU5LFxuICAgICAgNTksXG4gICAgICA5OTlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFdpdGhpbkNhdGVnb3J5KCkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5zZWFyY2hDcml0ZXJpYS52YWx1ZS53aXRoaW4udmFsdWU7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG5vbmUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBbdGhlbiwgbm93XSA9IHRoaXMuZ2V0T2Zmc2V0VGltZShcbiAgICAgIHZhbHVlLFxuICAgICAgdGhpcy5zZWFyY2hDcml0ZXJpYS52YWx1ZS53aXRoaW5cbiAgICApO1xuXG4gICAgcmV0dXJuIGFuZChbZ3RlKHRoZW4pLCBsdGUobm93KV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZE1vcmVUaGFuQ2F0ZWdvcnkoKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnNlYXJjaENyaXRlcmlhLnZhbHVlLm1vcmVUaGFuLnZhbHVlO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBub25lKCk7XG4gICAgfVxuXG4gICAgY29uc3QgW3RoZW5dID0gdGhpcy5nZXRPZmZzZXRUaW1lKFxuICAgICAgdmFsdWUsXG4gICAgICB0aGlzLnNlYXJjaENyaXRlcmlhLnZhbHVlLm1vcmVUaGFuXG4gICAgKTtcblxuICAgIHJldHVybiBsdGUodGhlbik7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUmFuZ2VDYXRlZ29yeSgpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuc2VhcmNoQ3JpdGVyaWEudmFsdWUucmFuZ2Uuc3RhcnQ7XG4gICAgY29uc3QgZW5kID0gdGhpcy5zZWFyY2hDcml0ZXJpYS52YWx1ZS5yYW5nZS5lbmQ7XG4gICAgaWYgKCFzdGFydCB8fCAhZW5kKSB7XG4gICAgICByZXR1cm4gbm9uZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBhbmQoW2d0ZShuZXcgRGF0ZShzdGFydCkpLCBsdGUodGhpcy50b01pZG5pZ2h0KG5ldyBEYXRlKGVuZCkpKV0pO1xuICB9XG5cbiAgYnVpbGQgPSAoKTogSWJGaWx0ZXJEZWYgPT4ge1xuICAgIGlmICh0aGlzLmdldFNlbGVjdGVkKCk/LmludmFsaWQpIHtcbiAgICAgIHJldHVybiBub25lKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZChJYkRhdGVGaWx0ZXJDYXRlZ29yeS5XSVRISU4pKSB7XG4gICAgICByZXR1cm4gdGhpcy5idWlsZFdpdGhpbkNhdGVnb3J5KCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZChJYkRhdGVGaWx0ZXJDYXRlZ29yeS5NT1JFX1RIQU4pKSB7XG4gICAgICByZXR1cm4gdGhpcy5idWlsZE1vcmVUaGFuQ2F0ZWdvcnkoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkKEliRGF0ZUZpbHRlckNhdGVnb3J5LlJBTkdFKSkge1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRSYW5nZUNhdGVnb3J5KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vbmUoKTtcbiAgfTtcblxuICBwcml2YXRlIHRvUXVlcnlXaXRoaW5DYXRlZ29yeSgpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuc2VhcmNoQ3JpdGVyaWEudmFsdWUud2l0aGluLnZhbHVlO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IFt0aGVuLCBub3ddID0gdGhpcy5nZXRPZmZzZXRUaW1lKFxuICAgICAgdmFsdWUsXG4gICAgICB0aGlzLnNlYXJjaENyaXRlcmlhLnZhbHVlLndpdGhpblxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IHRoZW4udG9JU09TdHJpbmcoKSxcbiAgICAgIGVuZDogbm93LnRvSVNPU3RyaW5nKCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdG9RdWVyeU1vcmVUaGFuQ2F0ZWdvcnkoKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnNlYXJjaENyaXRlcmlhLnZhbHVlLm1vcmVUaGFuLnZhbHVlO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IFt0aGVuXSA9IHRoaXMuZ2V0T2Zmc2V0VGltZShcbiAgICAgIHZhbHVlLFxuICAgICAgdGhpcy5zZWFyY2hDcml0ZXJpYS52YWx1ZS5tb3JlVGhhblxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDApLnRvSVNPU3RyaW5nKCksXG4gICAgICBlbmQ6IHRoZW4udG9JU09TdHJpbmcoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSB0b1F1ZXJ5UmFuZ2VDYXRlZ29yeSgpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuc2VhcmNoQ3JpdGVyaWEudmFsdWUucmFuZ2Uuc3RhcnQ7XG4gICAgY29uc3QgZW5kID0gdGhpcy5zZWFyY2hDcml0ZXJpYS52YWx1ZS5yYW5nZS5lbmQ7XG4gICAgaWYgKCFzdGFydCB8fCAhZW5kKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IG5ldyBEYXRlKHN0YXJ0KS50b0lTT1N0cmluZygpLFxuICAgICAgZW5kOiB0aGlzLnRvTWlkbmlnaHQobmV3IERhdGUoZW5kKSkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuICB9XG5cbiAgdG9RdWVyeSgpOiBJYkRhdGVRdWVyeSB7XG4gICAgaWYgKHRoaXMuZ2V0U2VsZWN0ZWQoKT8uaW52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoSWJEYXRlRmlsdGVyQ2F0ZWdvcnkuV0lUSElOKSkge1xuICAgICAgcmV0dXJuIHRoaXMudG9RdWVyeVdpdGhpbkNhdGVnb3J5KCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZChJYkRhdGVGaWx0ZXJDYXRlZ29yeS5NT1JFX1RIQU4pKSB7XG4gICAgICByZXR1cm4gdGhpcy50b1F1ZXJ5TW9yZVRoYW5DYXRlZ29yeSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoSWJEYXRlRmlsdGVyQ2F0ZWdvcnkuUkFOR0UpKSB7XG4gICAgICByZXR1cm4gdGhpcy50b1F1ZXJ5UmFuZ2VDYXRlZ29yeSgpO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxufVxuIiwiPGliLWZpbHRlci1idXR0b24gW2F0dHIuZGF0YS1jeV09XCInaWItZGF0ZS1maWx0ZXItJyArIG5hbWVcIj5cbiAgPHNwYW4gaWItZmlsdGVyLW5hbWU+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj5cbiAgPHNwYW4gaWItZmlsdGVyLXZhbHVlICpuZ0lmPVwiaXNEaXJ0eVwiPlxuICAgIHt7IGRpc3BsYXlDb25kaXRpb24gfCB0cmFuc2xhdGUgfCBsb3dlcmNhc2UgfX0ge3sgZGlzcGxheVZhbHVlIH19IHt7IGRpc3BsYXlQZXJpb2QgfCB0cmFuc2xhdGUgfX1cbiAgPC9zcGFuPlxuXG4gIDxzZWN0aW9uIFtmb3JtR3JvdXBdPVwiZmlsdGVyPy5mb3JtXCIgc3R5bGU9XCJwYWRkaW5nOiAwLjVlbSAxZW0gMCAxZW1cIj5cbiAgICA8c2VjdGlvbiBbZm9ybUdyb3VwTmFtZV09XCJuYW1lXCIgY2xhc3M9XCJpYi1maWx0ZXItZGF0ZVwiPlxuICAgICAgPG1hdC1yYWRpby1ncm91cCBmb3JtQ29udHJvbE5hbWU9XCJjYXRlZ29yeVNlbGVjdGVkXCI+XG4gICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIHZhbHVlPVwid2l0aGluXCIgW2F0dHIuZGF0YS1jeV09XCInaWItZGF0ZS1maWx0ZXItJyArIG5hbWUgKyAnLXdpdGhpbidcIj57e1xuICAgICAgICAgICdzaGFyZWQuaWJGaWx0ZXIuZGF0ZS53aXRoaW5UaGVMYXN0JyB8IHRyYW5zbGF0ZSB9fTwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgPHNlY3Rpb24gW2NsYXNzLmliLWZpbHRlci1kYXRlX19mb3JtLS1oaWRkZW5dPVwiIWlzU2VsZWN0ZWQoJ3dpdGhpbicpXCIgZm9ybUdyb3VwTmFtZT1cIndpdGhpblwiXG4gICAgICAgICAgY2xhc3M9XCJpYi1maWx0ZXItZGF0ZV9fZm9ybVwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBzdHlsZT1cIndpZHRoOiAxMDAlXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cIidpYi1kYXRlLWZpbHRlci0nICsgbmFtZSArICctd2l0aGluLXZhbHVlJ1wiIC8+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJwZXJpb2RcIiBbYXR0ci5kYXRhLWN5XT1cIidpYi1kYXRlLWZpbHRlci0nICsgbmFtZSArICctd2l0aGluLXBlcmlvZCdcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiB3aXRoaW5QZXJpb2RPcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5kaXNwbGF5VmFsdWUgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiB2YWx1ZT1cIm1vcmVUaGFuXCIgW2F0dHIuZGF0YS1jeV09XCInaWItZGF0ZS1maWx0ZXItJyArIG5hbWUgKyAnLW1vcmVUaGFuJ1wiPnt7XG4gICAgICAgICAgJ3NoYXJlZC5pYkZpbHRlci5kYXRlLm1vcmVUaGFuJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgPHNlY3Rpb24gW2NsYXNzLmliLWZpbHRlci1kYXRlX19mb3JtLS1oaWRkZW5dPVwiIWlzU2VsZWN0ZWQoJ21vcmVUaGFuJylcIiBmb3JtR3JvdXBOYW1lPVwibW9yZVRoYW5cIlxuICAgICAgICAgIGNsYXNzPVwiaWItZmlsdGVyLWRhdGVfX2Zvcm1cIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDogMTAwJVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCInaWItZGF0ZS1maWx0ZXItJyArIG5hbWUgKyAnLW1vcmVUaGFuLXZhbHVlJ1wiIC8+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJwZXJpb2RcIiBbYXR0ci5kYXRhLWN5XT1cIidpYi1kYXRlLWZpbHRlci0nICsgbmFtZSArICctbW9yZVRoYW4tcGVyaW9kJ1wiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG1vcmVUaGFuUGVyaW9kT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj5cbiAgICAgICAgICAgICAgICB7eyBvcHRpb24uZGlzcGxheVZhbHVlIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgPG1hdC1yYWRpby1idXR0b24gdmFsdWU9XCJyYW5nZVwiIFthdHRyLmRhdGEtY3ldPVwiJ2liLWRhdGUtZmlsdGVyLScgKyBuYW1lICsgJy1yYW5nZSdcIj57e1xuICAgICAgICAgICdzaGFyZWQuaWJGaWx0ZXIuZGF0ZS5iZXR3ZWVuJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgPHNlY3Rpb24gW2NsYXNzLmliLWZpbHRlci1kYXRlX19mb3JtLS1oaWRkZW5dPVwiIWlzU2VsZWN0ZWQoJ3JhbmdlJylcIiBmb3JtR3JvdXBOYW1lPVwicmFuZ2VcIlxuICAgICAgICAgIGNsYXNzPVwiaWItZmlsdGVyLWRhdGVfX3JhbmdlXCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgJ3NoYXJlZC5pYkZpbHRlci5kYXRlLmRhdGVSYW5nZUxhYmVsJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1kYXRlLXJhbmdlLWlucHV0IFtyYW5nZVBpY2tlcl09XCJwaWNrZXJcIj5cbiAgICAgICAgICAgICAgPGlucHV0IG1hdFN0YXJ0RGF0ZSBmb3JtQ29udHJvbE5hbWU9XCJzdGFydFwiIHBsYWNlaG9sZGVyPVwiZGQvbW0veXl5eVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCInaWItZGF0ZS1maWx0ZXItJyArIG5hbWUgKyAnLXJhbmdlLXN0YXJ0J1wiPlxuICAgICAgICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBmb3JtQ29udHJvbE5hbWU9XCJlbmRcIiBwbGFjZWhvbGRlcj1cImRkL21tL3l5eXlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiJ2liLWRhdGUtZmlsdGVyLScgKyBuYW1lICsgJy1yYW5nZS1lbmQnXCI+XG4gICAgICAgICAgICA8L21hdC1kYXRlLXJhbmdlLWlucHV0PlxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRJY29uU3VmZml4IFtmb3JdPVwicGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICAgICAgICA8bWF0LWRhdGUtcmFuZ2UtcGlja2VyICNwaWNrZXI+PC9tYXQtZGF0ZS1yYW5nZS1waWNrZXI+XG4gICAgICAgICAgICA8bWF0LWVycm9yPnt7ICdzaGFyZWQuaWJGaWx0ZXIuZGF0ZS5kYXRlUmFuZ2VJbnZhbGlkJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG4gICAgPC9zZWN0aW9uPlxuICA8L3NlY3Rpb24+XG5cbiAgPGliLWZpbHRlci1hY3Rpb24tZ3JvdXA+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjbGVhcigpXCIgW2Rpc2FibGVkXT1cIiFpc0RpcnR5XCIgW2F0dHIuZGF0YS1jeV09XCInaWItZmlsdGVyLWNsZWFyJ1wiPlxuICAgICAge3sgXCJzaGFyZWQuaWJGaWx0ZXIuY2xlYXJcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXIoKVwiIFthdHRyLmRhdGEtY3ldPVwiJ2liLWZpbHRlci11cGRhdGUnXCI+XG4gICAgICB7eyBcInNoYXJlZC5pYkZpbHRlci51cGRhdGVcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2liLWZpbHRlci1hY3Rpb24tZ3JvdXA+XG48L2liLWZpbHRlci1idXR0b24+Il19
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { Component, Input, ViewEncapsulation } from "@angular/core";
|
|
2
|
+
import { FormControl, FormGroup, Validators } from "@angular/forms";
|
|
3
|
+
import { and, gte, lte, none } from "../../filters";
|
|
4
|
+
import { IbFilterBase } from "../base/filter-base";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "@angular/forms";
|
|
8
|
+
import * as i3 from "@angular/material/input";
|
|
9
|
+
import * as i4 from "@angular/material/form-field";
|
|
10
|
+
import * as i5 from "@angular/material/button";
|
|
11
|
+
import * as i6 from "@angular/material/slider";
|
|
12
|
+
import * as i7 from "../../filter-button/filter-button.component";
|
|
13
|
+
import * as i8 from "../../filter-button/filter-action-group.component";
|
|
14
|
+
import * as i9 from "@ngx-translate/core";
|
|
15
|
+
export class IbNumberFilter extends IbFilterBase {
|
|
16
|
+
min = 0;
|
|
17
|
+
max = 100;
|
|
18
|
+
step = 1;
|
|
19
|
+
slider = new FormGroup({
|
|
20
|
+
min: new FormControl(this.min, {
|
|
21
|
+
nonNullable: true,
|
|
22
|
+
validators: [Validators.required],
|
|
23
|
+
}),
|
|
24
|
+
max: new FormControl(this.max, {
|
|
25
|
+
nonNullable: true,
|
|
26
|
+
validators: [Validators.required],
|
|
27
|
+
}),
|
|
28
|
+
});
|
|
29
|
+
searchCriteria = new FormControl(none(), { nonNullable: true });
|
|
30
|
+
get displayLabelParams() {
|
|
31
|
+
return {
|
|
32
|
+
min: this.rawValue?.value?.[0]?.value,
|
|
33
|
+
max: this.rawValue?.value?.[1]?.value,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
ngOnInit() {
|
|
37
|
+
this.searchCriteria.reset = () => {
|
|
38
|
+
this.searchCriteria.setValue(none());
|
|
39
|
+
this.clearRange();
|
|
40
|
+
};
|
|
41
|
+
this.searchCriteria.valueChanges.subscribe((values) => {
|
|
42
|
+
if (values.operator === 0) {
|
|
43
|
+
this.clearRange();
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
this.slider.setValue({
|
|
47
|
+
min: values.value?.[0]?.value,
|
|
48
|
+
max: values.value?.[1]?.value,
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
this.clearRange();
|
|
52
|
+
super.ngOnInit();
|
|
53
|
+
}
|
|
54
|
+
initializeFromColumn(data) {
|
|
55
|
+
if (!data.length) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const values = data.map((x) => x[this.name]);
|
|
59
|
+
this.min = Math.min(...values);
|
|
60
|
+
this.max = Math.max(...values);
|
|
61
|
+
if (!this.isDirty) {
|
|
62
|
+
this.clearRange();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
applyFilter() {
|
|
66
|
+
if (!this.slider.valid) {
|
|
67
|
+
this.slider.markAllAsTouched();
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
this.searchCriteria.setValue(this.build());
|
|
71
|
+
this.filter.update();
|
|
72
|
+
this.button.closeMenu();
|
|
73
|
+
}
|
|
74
|
+
clear() {
|
|
75
|
+
this.searchCriteria.setValue(none());
|
|
76
|
+
this.clearRange();
|
|
77
|
+
this.filter.update();
|
|
78
|
+
}
|
|
79
|
+
clearRange() {
|
|
80
|
+
this.slider.setValue({
|
|
81
|
+
min: this.min,
|
|
82
|
+
max: this.max,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
build = () => {
|
|
86
|
+
if (this.slider.value.min === this.min &&
|
|
87
|
+
this.slider.value.max === this.max) {
|
|
88
|
+
return none();
|
|
89
|
+
}
|
|
90
|
+
return and([gte(this.slider.value.min), lte(this.slider.value.max)]);
|
|
91
|
+
};
|
|
92
|
+
toQuery() {
|
|
93
|
+
return {
|
|
94
|
+
min: this.slider.value.min,
|
|
95
|
+
max: this.slider.value.max,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbNumberFilter, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
99
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: IbNumberFilter, selector: "ib-number-filter", inputs: { min: "min", max: "max", step: "step" }, providers: [{ provide: IbFilterBase, useExisting: IbNumberFilter }], usesInheritance: true, ngImport: i0, template: "<ib-filter-button [attr.data-cy]=\"'ib-number-filter-' + name\">\n <span ib-filter-name><ng-content></ng-content></span>\n <span ib-filter-value *ngIf=\"isDirty\">\n {{\n \"shared.ibFilter.label.number\"\n | translate : displayLabelParams\n | lowercase\n }}\n </span>\n\n <section style=\"padding: 0 1em\">\n <section class=\"ib-number-filter\" [formGroup]=\"slider\">\n <section style=\"display: flex\">\n <mat-slider style=\"flex: 1\" [max]=\"max\" [min]=\"min\" [step]=\"step\">\n <input\n matSliderStartThumb\n formControlName=\"min\"\n [value]=\"slider.value.min\"\n />\n <input\n matSliderEndThumb\n formControlName=\"max\"\n [value]=\"slider.value.max\"\n />\n </mat-slider>\n </section>\n\n <section class=\"ib-number-filter__input-range\">\n <mat-form-field appearance=\"outline\" style=\"width: 12ch\">\n <mat-label>{{ \"shared.ibFilter.min\" | translate }}</mat-label>\n <input\n matInput\n type=\"number\"\n placeholder=\"min\"\n formControlName=\"min\"\n [value]=\"slider.value.min\"\n [attr.data-cy]=\"'ib-number-filter-' + name + '-min'\"\n />\n </mat-form-field>\n\n <mat-form-field appearance=\"outline\" style=\"width: 12ch\">\n <mat-label>{{ \"shared.ibFilter.max\" | translate }}</mat-label>\n <input\n matInput\n type=\"number\"\n placeholder=\"max\"\n formControlName=\"max\"\n [value]=\"slider.value.max\"\n [attr.data-cy]=\"'ib-number-filter-' + name + '-max'\"\n />\n </mat-form-field>\n </section>\n </section>\n </section>\n\n <ib-filter-action-group>\n <button mat-button (click)=\"clear()\" [disabled]=\"!isDirty\" [attr.data-cy]=\"'ib-filter-clear'\">\n {{ \"shared.ibFilter.clear\" | translate }}\n </button>\n <button mat-button color=\"primary\" (click)=\"applyFilter()\" [attr.data-cy]=\"'ib-filter-update'\">\n {{ \"shared.ibFilter.update\" | translate }}\n </button>\n </ib-filter-action-group>\n</ib-filter-button>\n", styles: [".ib-number-filter{padding:0 .5em;display:flex;flex-direction:column}.ib-number-filter__input-range{display:flex;justify-content:space-between}.ib-number-filter__input-range mat-form-field{--mat-form-field-container-height: 36px;--mat-form-field-filled-label-display: none;--mat-form-field-container-vertical-padding: 6px;--mat-form-field-filled-with-label-container-padding-top: 6px;--mat-form-field-filled-with-label-container-padding-bottom: 6px}.ib-number-filter__input-range input[type=number]{appearance:textfield}.ib-number-filter__input-range .mat-mdc-form-field{overflow-y:inherit}.ib-number-filter__input-range .mdc-notched-outline__notch{width:auto!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i6.MatSliderRangeThumb, selector: "input[matSliderStartThumb], input[matSliderEndThumb]", exportAs: ["matSliderRangeThumb"] }, { kind: "component", type: i7.IbFilterButton, selector: "ib-filter-button" }, { kind: "directive", type: i8.IbFilterActionGroup, selector: "ib-filter-action-group" }, { kind: "pipe", type: i1.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
100
|
+
}
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbNumberFilter, decorators: [{
|
|
102
|
+
type: Component,
|
|
103
|
+
args: [{ selector: "ib-number-filter", encapsulation: ViewEncapsulation.None, providers: [{ provide: IbFilterBase, useExisting: IbNumberFilter }], template: "<ib-filter-button [attr.data-cy]=\"'ib-number-filter-' + name\">\n <span ib-filter-name><ng-content></ng-content></span>\n <span ib-filter-value *ngIf=\"isDirty\">\n {{\n \"shared.ibFilter.label.number\"\n | translate : displayLabelParams\n | lowercase\n }}\n </span>\n\n <section style=\"padding: 0 1em\">\n <section class=\"ib-number-filter\" [formGroup]=\"slider\">\n <section style=\"display: flex\">\n <mat-slider style=\"flex: 1\" [max]=\"max\" [min]=\"min\" [step]=\"step\">\n <input\n matSliderStartThumb\n formControlName=\"min\"\n [value]=\"slider.value.min\"\n />\n <input\n matSliderEndThumb\n formControlName=\"max\"\n [value]=\"slider.value.max\"\n />\n </mat-slider>\n </section>\n\n <section class=\"ib-number-filter__input-range\">\n <mat-form-field appearance=\"outline\" style=\"width: 12ch\">\n <mat-label>{{ \"shared.ibFilter.min\" | translate }}</mat-label>\n <input\n matInput\n type=\"number\"\n placeholder=\"min\"\n formControlName=\"min\"\n [value]=\"slider.value.min\"\n [attr.data-cy]=\"'ib-number-filter-' + name + '-min'\"\n />\n </mat-form-field>\n\n <mat-form-field appearance=\"outline\" style=\"width: 12ch\">\n <mat-label>{{ \"shared.ibFilter.max\" | translate }}</mat-label>\n <input\n matInput\n type=\"number\"\n placeholder=\"max\"\n formControlName=\"max\"\n [value]=\"slider.value.max\"\n [attr.data-cy]=\"'ib-number-filter-' + name + '-max'\"\n />\n </mat-form-field>\n </section>\n </section>\n </section>\n\n <ib-filter-action-group>\n <button mat-button (click)=\"clear()\" [disabled]=\"!isDirty\" [attr.data-cy]=\"'ib-filter-clear'\">\n {{ \"shared.ibFilter.clear\" | translate }}\n </button>\n <button mat-button color=\"primary\" (click)=\"applyFilter()\" [attr.data-cy]=\"'ib-filter-update'\">\n {{ \"shared.ibFilter.update\" | translate }}\n </button>\n </ib-filter-action-group>\n</ib-filter-button>\n", styles: [".ib-number-filter{padding:0 .5em;display:flex;flex-direction:column}.ib-number-filter__input-range{display:flex;justify-content:space-between}.ib-number-filter__input-range mat-form-field{--mat-form-field-container-height: 36px;--mat-form-field-filled-label-display: none;--mat-form-field-container-vertical-padding: 6px;--mat-form-field-filled-with-label-container-padding-top: 6px;--mat-form-field-filled-with-label-container-padding-bottom: 6px}.ib-number-filter__input-range input[type=number]{appearance:textfield}.ib-number-filter__input-range .mat-mdc-form-field{overflow-y:inherit}.ib-number-filter__input-range .mdc-notched-outline__notch{width:auto!important}\n"] }]
|
|
104
|
+
}], propDecorators: { min: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}], max: [{
|
|
107
|
+
type: Input
|
|
108
|
+
}], step: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}] } });
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLW51bWJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2lub2JldGEtdWkvdWkva2FpLWZpbHRlci9maWx0ZXJzL251bWJlci9maWx0ZXItbnVtYmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvaW5vYmV0YS11aS91aS9rYWktZmlsdGVyL2ZpbHRlcnMvbnVtYmVyL2ZpbHRlci1udW1iZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7O0FBU25ELE1BQU0sT0FBTyxjQUFlLFNBQVEsWUFBWTtJQUNyQyxHQUFHLEdBQVcsQ0FBQyxDQUFDO0lBQ2hCLEdBQUcsR0FBVyxHQUFHLENBQUM7SUFDbEIsSUFBSSxHQUFXLENBQUMsQ0FBQztJQUUxQixNQUFNLEdBQUcsSUFBSSxTQUFTLENBQUM7UUFDckIsR0FBRyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDN0IsV0FBVyxFQUFFLElBQUk7WUFDakIsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUNsQyxDQUFDO1FBQ0YsR0FBRyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDN0IsV0FBVyxFQUFFLElBQUk7WUFDakIs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dCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBJYkZpbHRlckRlZiwgSWJOdW1iZXJRdWVyeSB9IGZyb20gXCIuLi8uLi9maWx0ZXIudHlwZXNcIjtcbmltcG9ydCB7IGFuZCwgZ3RlLCBsdGUsIG5vbmUgfSBmcm9tIFwiLi4vLi4vZmlsdGVyc1wiO1xuaW1wb3J0IHsgSWJGaWx0ZXJCYXNlIH0gZnJvbSBcIi4uL2Jhc2UvZmlsdGVyLWJhc2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImliLW51bWJlci1maWx0ZXJcIixcbiAgdGVtcGxhdGVVcmw6IFwiZmlsdGVyLW51bWJlci5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZmlsdGVyLW51bWJlci5jb21wb25lbnQuc2Nzc1wiXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJYkZpbHRlckJhc2UsIHVzZUV4aXN0aW5nOiBJYk51bWJlckZpbHRlciB9XSxcbn0pXG5leHBvcnQgY2xhc3MgSWJOdW1iZXJGaWx0ZXIgZXh0ZW5kcyBJYkZpbHRlckJhc2Uge1xuICBASW5wdXQoKSBtaW46IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIG1heDogbnVtYmVyID0gMTAwO1xuICBASW5wdXQoKSBzdGVwOiBudW1iZXIgPSAxO1xuXG4gIHNsaWRlciA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIG1pbjogbmV3IEZvcm1Db250cm9sKHRoaXMubWluLCB7XG4gICAgICBub25OdWxsYWJsZTogdHJ1ZSxcbiAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICB9KSxcbiAgICBtYXg6IG5ldyBGb3JtQ29udHJvbCh0aGlzLm1heCwge1xuICAgICAgbm9uTnVsbGFibGU6IHRydWUsXG4gICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgfSksXG4gIH0pO1xuXG4gIHNlYXJjaENyaXRlcmlhID0gbmV3IEZvcm1Db250cm9sKG5vbmUoKSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcblxuICBnZXQgZGlzcGxheUxhYmVsUGFyYW1zKCkge1xuICAgIHJldHVybiB7XG4gICAgICBtaW46IHRoaXMucmF3VmFsdWU/LnZhbHVlPy5bMF0/LnZhbHVlLFxuICAgICAgbWF4OiB0aGlzLnJhd1ZhbHVlPy52YWx1ZT8uWzFdPy52YWx1ZSxcbiAgICB9O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZWFyY2hDcml0ZXJpYS5yZXNldCA9ICgpID0+IHtcbiAgICAgIHRoaXMuc2VhcmNoQ3JpdGVyaWEuc2V0VmFsdWUobm9uZSgpKTtcbiAgICAgIHRoaXMuY2xlYXJSYW5nZSgpO1xuICAgIH07XG4gICAgdGhpcy5zZWFyY2hDcml0ZXJpYS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZXMpID0+IHtcbiAgICAgIGlmICh2YWx1ZXMub3BlcmF0b3IgPT09IDApIHtcbiAgICAgICAgdGhpcy5jbGVhclJhbmdlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2xpZGVyLnNldFZhbHVlKHtcbiAgICAgICAgbWluOiB2YWx1ZXMudmFsdWU/LlswXT8udmFsdWUsXG4gICAgICAgIG1heDogdmFsdWVzLnZhbHVlPy5bMV0/LnZhbHVlLFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5jbGVhclJhbmdlKCk7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG4gIGluaXRpYWxpemVGcm9tQ29sdW1uKGRhdGE6IGFueVtdKTogdm9pZCB7XG4gICAgaWYgKCFkYXRhLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZXMgPSBkYXRhLm1hcCgoeCkgPT4geFt0aGlzLm5hbWVdKTtcbiAgICB0aGlzLm1pbiA9IE1hdGgubWluKC4uLnZhbHVlcyk7XG4gICAgdGhpcy5tYXggPSBNYXRoLm1heCguLi52YWx1ZXMpO1xuICAgIGlmICghdGhpcy5pc0RpcnR5KSB7XG4gICAgICB0aGlzLmNsZWFyUmFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICBhcHBseUZpbHRlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2xpZGVyLnZhbGlkKSB7XG4gICAgICB0aGlzLnNsaWRlci5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VhcmNoQ3JpdGVyaWEuc2V0VmFsdWUodGhpcy5idWlsZCgpKTtcbiAgICB0aGlzLmZpbHRlci51cGRhdGUoKTtcbiAgICB0aGlzLmJ1dHRvbi5jbG9zZU1lbnUoKTtcbiAgfVxuXG4gIGNsZWFyKCkge1xuICAgIHRoaXMuc2VhcmNoQ3JpdGVyaWEuc2V0VmFsdWUobm9uZSgpKTtcbiAgICB0aGlzLmNsZWFyUmFuZ2UoKTtcbiAgICB0aGlzLmZpbHRlci51cGRhdGUoKTtcbiAgfVxuXG4gIGNsZWFyUmFuZ2UoKSB7XG4gICAgdGhpcy5zbGlkZXIuc2V0VmFsdWUoe1xuICAgICAgbWluOiB0aGlzLm1pbixcbiAgICAgIG1heDogdGhpcy5tYXgsXG4gICAgfSk7XG4gIH1cblxuICBidWlsZCA9ICgpOiBJYkZpbHRlckRlZiA9PiB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zbGlkZXIudmFsdWUubWluID09PSB0aGlzLm1pbiAmJlxuICAgICAgdGhpcy5zbGlkZXIudmFsdWUubWF4ID09PSB0aGlzLm1heFxuICAgICkge1xuICAgICAgcmV0dXJuIG5vbmUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYW5kKFtndGUodGhpcy5zbGlkZXIudmFsdWUubWluKSwgbHRlKHRoaXMuc2xpZGVyLnZhbHVlLm1heCldKTtcbiAgfTtcblxuICB0b1F1ZXJ5KCk6IEliTnVtYmVyUXVlcnkge1xuICAgIHJldHVybiB7XG4gICAgICBtaW46IHRoaXMuc2xpZGVyLnZhbHVlLm1pbixcbiAgICAgIG1heDogdGhpcy5zbGlkZXIudmFsdWUubWF4LFxuICAgIH07XG4gIH1cbn1cbiIsIjxpYi1maWx0ZXItYnV0dG9uIFthdHRyLmRhdGEtY3ldPVwiJ2liLW51bWJlci1maWx0ZXItJyArIG5hbWVcIj5cbiAgPHNwYW4gaWItZmlsdGVyLW5hbWU+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj5cbiAgPHNwYW4gaWItZmlsdGVyLXZhbHVlICpuZ0lmPVwiaXNEaXJ0eVwiPlxuICAgIHt7XG4gICAgICBcInNoYXJlZC5pYkZpbHRlci5sYWJlbC5udW1iZXJcIlxuICAgICAgICB8IHRyYW5zbGF0ZSA6IGRpc3BsYXlMYWJlbFBhcmFtc1xuICAgICAgICB8IGxvd2VyY2FzZVxuICAgIH19XG4gIDwvc3Bhbj5cblxuICA8c2VjdGlvbiBzdHlsZT1cInBhZGRpbmc6IDAgMWVtXCI+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJpYi1udW1iZXItZmlsdGVyXCIgW2Zvcm1Hcm91cF09XCJzbGlkZXJcIj5cbiAgICAgIDxzZWN0aW9uIHN0eWxlPVwiZGlzcGxheTogZmxleFwiPlxuICAgICAgICA8bWF0LXNsaWRlciBzdHlsZT1cImZsZXg6IDFcIiBbbWF4XT1cIm1heFwiIFttaW5dPVwibWluXCIgW3N0ZXBdPVwic3RlcFwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbWF0U2xpZGVyU3RhcnRUaHVtYlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWluXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJzbGlkZXIudmFsdWUubWluXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbWF0U2xpZGVyRW5kVGh1bWJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1heFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwic2xpZGVyLnZhbHVlLm1heFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9tYXQtc2xpZGVyPlxuICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cImliLW51bWJlci1maWx0ZXJfX2lucHV0LXJhbmdlXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIHN0eWxlPVwid2lkdGg6IDEyY2hcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPnt7IFwic2hhcmVkLmliRmlsdGVyLm1pblwiIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIm1pblwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInNsaWRlci52YWx1ZS5taW5cIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCInaWItbnVtYmVyLWZpbHRlci0nICsgbmFtZSArICctbWluJ1wiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBzdHlsZT1cIndpZHRoOiAxMmNoXCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD57eyBcInNoYXJlZC5pYkZpbHRlci5tYXhcIiB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJtYXhcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJzbGlkZXIudmFsdWUubWF4XCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiJ2liLW51bWJlci1maWx0ZXItJyArIG5hbWUgKyAnLW1heCdcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9zZWN0aW9uPlxuICA8L3NlY3Rpb24+XG5cbiAgPGliLWZpbHRlci1hY3Rpb24tZ3JvdXA+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjbGVhcigpXCIgW2Rpc2FibGVkXT1cIiFpc0RpcnR5XCIgW2F0dHIuZGF0YS1jeV09XCInaWItZmlsdGVyLWNsZWFyJ1wiPlxuICAgICAge3sgXCJzaGFyZWQuaWJGaWx0ZXIuY2xlYXJcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXIoKVwiIFthdHRyLmRhdGEtY3ldPVwiJ2liLWZpbHRlci11cGRhdGUnXCI+XG4gICAgICB7eyBcInNoYXJlZC5pYkZpbHRlci51cGRhdGVcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2liLWZpbHRlci1hY3Rpb24tZ3JvdXA+XG48L2liLWZpbHRlci1idXR0b24+XG4iXX0=
|