@elderbyte/ngx-starter 15.19.4 → 16.0.0
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/esm2022/lib/common/async/refreshing-entity.mjs +86 -0
- package/esm2022/lib/common/csv/csv-spec.mjs +99 -0
- package/esm2022/lib/common/data/data-context/data-context-auto-starter.mjs +76 -0
- package/esm2022/lib/common/data/data-context/data-context-builder.mjs +247 -0
- package/esm2022/lib/common/data/data-context/data-context-status.mjs +46 -0
- package/esm2022/lib/common/data/data-context/mat-table-data-context-binding.mjs +139 -0
- package/esm2022/lib/common/data/datasource/data-source-adapter.mjs +55 -0
- package/esm2022/lib/common/data/datasource/data-source-change-event.mjs +24 -0
- package/esm2022/lib/common/data/datasource/data-source-processor.mjs +199 -0
- package/esm2022/lib/common/data/datasource/fetcher/delegate-data-source.mjs +127 -0
- package/esm2022/lib/common/data/datasource/local/local-list-data-source.mjs +141 -0
- package/esm2022/lib/common/data/datasource/local/local-paged-data-source.mjs +73 -0
- package/esm2022/lib/common/data/entity-set-patch.mjs +164 -0
- package/esm2022/lib/common/data/field-comparator.mjs +99 -0
- package/esm2022/lib/common/data/http-params-builder.mjs +118 -0
- package/esm2022/lib/common/data/sort.mjs +11 -0
- package/esm2022/lib/common/enums/elder-enum-translation.service.mjs +81 -0
- package/esm2022/lib/common/format/bytes-format.mjs +22 -0
- package/esm2022/lib/common/forms/elder-form-field-control-base.directive.mjs +181 -0
- package/esm2022/lib/common/forms/elder-from-field-base.mjs +94 -0
- package/esm2022/lib/common/forms/elder-from-field-customizable-base.mjs +52 -0
- package/esm2022/lib/common/forms/elder-from-field-entity-base.mjs +39 -0
- package/esm2022/lib/common/forms/elder-from-field-multi-entity-base.mjs +47 -0
- package/esm2022/lib/common/forms/form-field-base.component.mjs +112 -0
- package/esm2022/lib/common/forms/multi-model-base.component.mjs +32 -0
- package/esm2022/lib/common/forms/template-composite-control.mjs +133 -0
- package/esm2022/lib/common/forms/value-accessor-base.mjs +146 -0
- package/esm2022/lib/common/forms/view-providers.mjs +30 -0
- package/esm2022/lib/common/http/http-client-builder.service.mjs +14 -0
- package/esm2022/lib/common/http/http-client-pristine.mjs +21 -0
- package/esm2022/lib/common/http/transfer/data-transfer-factory.mjs +95 -0
- package/esm2022/lib/common/http/transfer/data-transfer-progress-aggregate.mjs +49 -0
- package/esm2022/lib/common/http/transfer/data-transfer-progress.mjs +17 -0
- package/esm2022/lib/common/http/transfer/data-transfer-state.mjs +82 -0
- package/esm2022/lib/common/http/transfer/http-data-transfer.mjs +132 -0
- package/esm2022/lib/common/i18n/entity/impl/i18n-text.mjs +16 -0
- package/esm2022/lib/common/i18n/entity/locale.mjs +12 -0
- package/esm2022/lib/common/i18n/entity/localisation-picker.mjs +30 -0
- package/esm2022/lib/common/objects.mjs +41 -0
- package/esm2022/lib/common/selection/selection-model.mjs +212 -0
- package/esm2022/lib/common/suggestion-provider.mjs +12 -0
- package/esm2022/lib/common/time/date-util.mjs +93 -0
- package/esm2022/lib/common/time/time-util.mjs +41 -0
- package/esm2022/lib/common/url/elder-router.service.mjs +54 -0
- package/esm2022/lib/common/url/elder-url-fragment-params.service.mjs +119 -0
- package/esm2022/lib/common/url/url-query-params.mjs +133 -0
- package/esm2022/lib/common/utils/collection-util.mjs +109 -0
- package/esm2022/lib/common/utils/filter-util.mjs +52 -0
- package/esm2022/lib/common/utils/focus-util.mjs +23 -0
- package/esm2022/lib/common/utils/query-list-binding.mjs +67 -0
- package/esm2022/lib/common/utils/url-builder.mjs +275 -0
- package/esm2022/lib/common/utils/value-wrapper.mjs +19 -0
- package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +16 -0
- package/esm2022/lib/components/access-denied/elder-access-denied.module.mjs +30 -0
- package/esm2022/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +39 -0
- package/esm2022/lib/components/auditing/elder-audit.module.mjs +42 -0
- package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +39 -0
- package/esm2022/lib/components/badge/elder-badge.directive.mjs +48 -0
- package/esm2022/lib/components/badge/elder-badge.module.mjs +40 -0
- package/esm2022/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +15 -0
- package/esm2022/lib/components/button-group/elder-button-group.module.mjs +35 -0
- package/esm2022/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +123 -0
- package/esm2022/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +15 -0
- package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +211 -0
- package/esm2022/lib/components/card-organizer/card-stack.mjs +176 -0
- package/esm2022/lib/components/card-organizer/elder-card-organizer.module.mjs +49 -0
- package/esm2022/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +17 -0
- package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +145 -0
- package/esm2022/lib/components/cards/elder-card/elder-card.module.mjs +66 -0
- package/esm2022/lib/components/chips/elder-chip-label.directive.mjs +170 -0
- package/esm2022/lib/components/chips/elder-chips.module.mjs +48 -0
- package/esm2022/lib/components/connectivity/elder-connectivity.module.mjs +56 -0
- package/esm2022/lib/components/connectivity/elder-connectivity.service.mjs +63 -0
- package/esm2022/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +46 -0
- package/esm2022/lib/components/containers/elder-containers.module.mjs +25 -0
- package/esm2022/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +24 -0
- package/esm2022/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +77 -0
- package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +38 -0
- package/esm2022/lib/components/csv/elder-csv-stream-exporter.mjs +114 -0
- package/esm2022/lib/components/csv/elder-csv.module.mjs +37 -0
- package/esm2022/lib/components/currency/elder-currency.module.mjs +24 -0
- package/esm2022/lib/components/currency/elder-currency.pipe.mjs +33 -0
- package/esm2022/lib/components/currency/model/currency-unit.mjs +10 -0
- package/esm2022/lib/components/data-transfer/elder-data-transfer.module.mjs +76 -0
- package/esm2022/lib/components/data-transfer/elder-data-transfer.service.mjs +91 -0
- package/esm2022/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +91 -0
- package/esm2022/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +34 -0
- package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +47 -0
- package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +26 -0
- package/esm2022/lib/components/data-view/base/data-view-options-provider-binding.mjs +67 -0
- package/esm2022/lib/components/data-view/base/elder-data-view-base.mjs +266 -0
- package/esm2022/lib/components/data-view/base/elder-data-view-options.mjs +45 -0
- package/esm2022/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +45 -0
- package/esm2022/lib/components/data-view/common/elder-data-common.module.mjs +90 -0
- package/esm2022/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +137 -0
- package/esm2022/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +89 -0
- package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +98 -0
- package/esm2022/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +38 -0
- package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +307 -0
- package/esm2022/lib/components/data-view/grid/elder-grid.module.mjs +82 -0
- package/esm2022/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +69 -0
- package/esm2022/lib/components/data-view/master-detail/elder-detail.directive.mjs +49 -0
- package/esm2022/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +76 -0
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail-provider.mjs +20 -0
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.component.mjs +125 -0
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.module.mjs +116 -0
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.service.mjs +88 -0
- package/esm2022/lib/components/data-view/master-detail/elder-master.directive.mjs +22 -0
- package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +19 -0
- package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +78 -0
- package/esm2022/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +113 -0
- package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +299 -0
- package/esm2022/lib/components/data-view/table/elder-number-cell.directive.mjs +29 -0
- package/esm2022/lib/components/data-view/table/elder-paginator-intl.mjs +72 -0
- package/esm2022/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +18 -0
- package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +325 -0
- package/esm2022/lib/components/data-view/table/elder-table-column.directive.mjs +17 -0
- package/esm2022/lib/components/data-view/table/elder-table-extension.directive.mjs +96 -0
- package/esm2022/lib/components/data-view/table/elder-table-root.directive.mjs +29 -0
- package/esm2022/lib/components/data-view/table/elder-table-row.directive.mjs +153 -0
- package/esm2022/lib/components/data-view/table/elder-table-sort.directive.mjs +20 -0
- package/esm2022/lib/components/data-view/table/elder-table.module.mjs +146 -0
- package/esm2022/lib/components/data-view/table/model/elder-column-layout.mjs +110 -0
- package/esm2022/lib/components/data-view/table/model/elder-table-model-cdk-table-binding.mjs +81 -0
- package/esm2022/lib/components/data-view/table/model/elder-table-model-provider.mjs +40 -0
- package/esm2022/lib/components/data-view/table/model/elder-table-model-query-group.mjs +87 -0
- package/esm2022/lib/components/data-view/table/model/elder-table-model.mjs +165 -0
- package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +25 -0
- package/esm2022/lib/components/dialogs/elder-dialog.module.mjs +64 -0
- package/esm2022/lib/components/dialogs/elder-dialog.service.mjs +202 -0
- package/esm2022/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +43 -0
- package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +43 -0
- package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +46 -0
- package/esm2022/lib/components/errors/elder-error.module.mjs +41 -0
- package/esm2022/lib/components/errors/error-util.mjs +94 -0
- package/esm2022/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +66 -0
- package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +55 -0
- package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +28 -0
- package/esm2022/lib/components/files/blob-url.mjs +10 -0
- package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +225 -0
- package/esm2022/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +43 -0
- package/esm2022/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +84 -0
- package/esm2022/lib/components/files/elder-file-drop-zone.directive.mjs +144 -0
- package/esm2022/lib/components/files/elder-file-select.directive.mjs +166 -0
- package/esm2022/lib/components/files/elder-file.module.mjs +77 -0
- package/esm2022/lib/components/files/file-select/file-select.component.mjs +55 -0
- package/esm2022/lib/components/files/file-upload/file-upload.component.mjs +67 -0
- package/esm2022/lib/components/files/listing/file-entry.mjs +76 -0
- package/esm2022/lib/components/files/listing/file-listing-rx.mjs +104 -0
- package/esm2022/lib/components/forms/clipboard/elder-clipboard.service.mjs +51 -0
- package/esm2022/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +34 -0
- package/esm2022/lib/components/forms/directives/elder-clipboard-put.directive.mjs +35 -0
- package/esm2022/lib/components/forms/directives/elder-delayed-focus.directive.mjs +42 -0
- package/esm2022/lib/components/forms/directives/elder-form-field-dense.directive.mjs +82 -0
- package/esm2022/lib/components/forms/directives/elder-form-field-label.directive.mjs +83 -0
- package/esm2022/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +41 -0
- package/esm2022/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +34 -0
- package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +132 -0
- package/esm2022/lib/components/forms/directives/elder-input-pattern.directive.mjs +77 -0
- package/esm2022/lib/components/forms/directives/elder-key-event.directive.mjs +111 -0
- package/esm2022/lib/components/forms/directives/elder-next-focusable.directive.mjs +101 -0
- package/esm2022/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +36 -0
- package/esm2022/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +29 -0
- package/esm2022/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +157 -0
- package/esm2022/lib/components/forms/directives/elder-touched.directive.mjs +27 -0
- package/esm2022/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +108 -0
- package/esm2022/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +85 -0
- package/esm2022/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +47 -0
- package/esm2022/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +48 -0
- package/esm2022/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +55 -0
- package/esm2022/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +40 -0
- package/esm2022/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +40 -0
- package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +96 -0
- package/esm2022/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +68 -0
- package/esm2022/lib/components/forms/elder-forms.module.mjs +22 -0
- package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +146 -0
- package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +185 -0
- package/esm2022/lib/components/forms/search/elder-search.module.mjs +66 -0
- package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +125 -0
- package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +16 -0
- package/esm2022/lib/components/global-search/elder-global-search.component.mjs +126 -0
- package/esm2022/lib/components/global-search/elder-global-search.module.mjs +32 -0
- package/esm2022/lib/components/global-search/elder-global-search.service.mjs +93 -0
- package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +90 -0
- package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +26 -0
- package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +28 -0
- package/esm2022/lib/components/headers/elder-header.module.mjs +43 -0
- package/esm2022/lib/components/http-support/elder-http-client.service.mjs +68 -0
- package/esm2022/lib/components/i18n/entities/elder-i18n-entities.module.mjs +123 -0
- package/esm2022/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +144 -0
- package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +29 -0
- package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +30 -0
- package/esm2022/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +152 -0
- package/esm2022/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +28 -0
- package/esm2022/lib/components/i18n/entities/elder-localized-texts.directive.mjs +56 -0
- package/esm2022/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +39 -0
- package/esm2022/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +30 -0
- package/esm2022/lib/components/i18n/entities/picker/localisation-picker.service.mjs +74 -0
- package/esm2022/lib/components/i18n/language/elder-language-interceptor.mjs +69 -0
- package/esm2022/lib/components/i18n/language/elder-language.module.mjs +72 -0
- package/esm2022/lib/components/i18n/language/elder-language.service.mjs +121 -0
- package/esm2022/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +65 -0
- package/esm2022/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +53 -0
- package/esm2022/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +130 -0
- package/esm2022/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +138 -0
- package/esm2022/lib/components/iframes/elder-iframe.module.mjs +103 -0
- package/esm2022/lib/components/iframes/iframe-close.directive.mjs +41 -0
- package/esm2022/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +51 -0
- package/esm2022/lib/components/iframes/iframe-host/iframe-host.component.mjs +136 -0
- package/esm2022/lib/components/iframes/iframe-messages.mjs +5 -0
- package/esm2022/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +78 -0
- package/esm2022/lib/components/iframes/iframe.service.mjs +52 -0
- package/esm2022/lib/components/iframes/typed-event-message.mjs +42 -0
- package/esm2022/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +61 -0
- package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +158 -0
- package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +29 -0
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +186 -0
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +197 -0
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +114 -0
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete.module.mjs +58 -0
- package/esm2022/lib/components/labels/elder-labels.module.mjs +30 -0
- package/esm2022/lib/components/labels/labels-input/labels-input.component.mjs +229 -0
- package/esm2022/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +273 -0
- package/esm2022/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +91 -0
- package/esm2022/lib/components/measures/directives/elder-unit-select.directive.mjs +64 -0
- package/esm2022/lib/components/measures/elder-measures.module.mjs +140 -0
- package/esm2022/lib/components/measures/elder-quantity-transform.pipe.mjs +41 -0
- package/esm2022/lib/components/measures/elder-quantity.pipe.mjs +73 -0
- package/esm2022/lib/components/measures/elder-unit.service.mjs +115 -0
- package/esm2022/lib/components/measures/model/unit-registry.mjs +81 -0
- package/esm2022/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +33 -0
- package/esm2022/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +176 -0
- package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +87 -0
- package/esm2022/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +76 -0
- package/esm2022/lib/components/measures/util/elder-quantity.service.mjs +237 -0
- package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +164 -0
- package/esm2022/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +55 -0
- package/esm2022/lib/components/navigation/bread-crumbs/path/path.mjs +37 -0
- package/esm2022/lib/components/navigation/nav/elder-nav.module.mjs +53 -0
- package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +127 -0
- package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +161 -0
- package/esm2022/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +68 -0
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +46 -0
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar.module.mjs +76 -0
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar.service.mjs +68 -0
- package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +66 -0
- package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +39 -0
- package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +85 -0
- package/esm2022/lib/components/overlays/elder-overlay-origin.directive.mjs +43 -0
- package/esm2022/lib/components/overlays/elder-overlay-trigger.directive.mjs +72 -0
- package/esm2022/lib/components/overlays/elder-overlay.component.mjs +204 -0
- package/esm2022/lib/components/overlays/elder-overlay.module.mjs +41 -0
- package/esm2022/lib/components/panels/card-panel/elder-card-panel.component.mjs +12 -0
- package/esm2022/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +12 -0
- package/esm2022/lib/components/panels/elder-panel.module.mjs +58 -0
- package/esm2022/lib/components/panels/flat/elder-panel.component.mjs +26 -0
- package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +69 -0
- package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +68 -0
- package/esm2022/lib/components/scrollbar/elder-scrollbar.directive.mjs +62 -0
- package/esm2022/lib/components/scrollbar/elder-scrollbar.module.mjs +17 -0
- package/esm2022/lib/components/select/auto/elder-auto-select-first.directive.mjs +77 -0
- package/esm2022/lib/components/select/auto/elder-select-first-util.mjs +62 -0
- package/esm2022/lib/components/select/elder-select-base.mjs +284 -0
- package/esm2022/lib/components/select/elder-select-chip.directive.mjs +45 -0
- package/esm2022/lib/components/select/elder-select-on-tab.directive.mjs +133 -0
- package/esm2022/lib/components/select/elder-select-value.directive.mjs +15 -0
- package/esm2022/lib/components/select/elder-select.module.mjs +146 -0
- package/esm2022/lib/components/select/multi/elder-multi-select-base.mjs +350 -0
- package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +287 -0
- package/esm2022/lib/components/select/multi/elder-multi-select-form-field.mjs +91 -0
- package/esm2022/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +86 -0
- package/esm2022/lib/components/select/popup/selection-model-popup.directive.mjs +126 -0
- package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +47 -0
- package/esm2022/lib/components/select/single/elder-clear-select.directive.mjs +57 -0
- package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +443 -0
- package/esm2022/lib/components/select/single/elder-select-form-field.mjs +45 -0
- package/esm2022/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +149 -0
- package/esm2022/lib/components/select-chip-list/elder-chip-list-select.module.mjs +48 -0
- package/esm2022/lib/components/shell/drawers/drawer-outlet-binding.mjs +60 -0
- package/esm2022/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +117 -0
- package/esm2022/lib/components/shell/drawers/elder-router-outlet.service.mjs +128 -0
- package/esm2022/lib/components/shell/elder-shell-slot.directive.mjs +46 -0
- package/esm2022/lib/components/shell/elder-shell.module.mjs +96 -0
- package/esm2022/lib/components/shell/elder-shell.service.mjs +145 -0
- package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +73 -0
- package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +209 -0
- package/esm2022/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +137 -0
- package/esm2022/lib/components/tabs/elder-tab/elder-tab.directive.mjs +25 -0
- package/esm2022/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +256 -0
- package/esm2022/lib/components/tabs/elder-tab.module.mjs +32 -0
- package/esm2022/lib/components/theme/elder-theme-applier.directive.mjs +62 -0
- package/esm2022/lib/components/theme/elder-theme-preference.service.mjs +74 -0
- package/esm2022/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +74 -0
- package/esm2022/lib/components/theme/elder-theme.directive.mjs +61 -0
- package/esm2022/lib/components/theme/elder-theme.module.mjs +74 -0
- package/esm2022/lib/components/theme/elder-theme.service.mjs +123 -0
- package/esm2022/lib/components/theme/known-elder-themes.mjs +6 -0
- package/esm2022/lib/components/time/date-adapters/custom-date-adapter.mjs +23 -0
- package/esm2022/lib/components/time/duration/duration-format.mjs +271 -0
- package/esm2022/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +122 -0
- package/esm2022/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +89 -0
- package/esm2022/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +108 -0
- package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +173 -0
- package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +264 -0
- package/esm2022/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +95 -0
- package/esm2022/lib/components/time/elder-time.module.mjs +120 -0
- package/esm2022/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +131 -0
- package/esm2022/lib/components/time/period/period-format.mjs +89 -0
- package/esm2022/lib/components/time/pipes/to-iso-date-string.pipe.mjs +38 -0
- package/esm2022/lib/components/toasts/elder-toast.module.mjs +23 -0
- package/esm2022/lib/components/toasts/elder-toast.service.mjs +171 -0
- package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +74 -0
- package/esm2022/lib/components/url-fragment/elder-url-fragment.module.mjs +54 -0
- package/esm2022/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +84 -0
- package/esm2022/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +65 -0
- package/esm2022/lib/components/viewers/elder-viewers.module.mjs +25 -0
- package/esm2022/lib/features/event-source/elder-event-source.service.mjs +56 -0
- package/esm2022/lib/features/event-source/reactive-event-source.mjs +198 -0
- package/esm2022/lib/features/kafent/access-token-provider.mjs +20 -0
- package/esm2022/lib/features/kafent/kafent-config.mjs +24 -0
- package/esm2022/lib/features/kafent/kafent-event-stream.mjs +25 -0
- package/esm2022/lib/features/kafent/kafent-event.service.mjs +107 -0
- package/esm2022/lib/features/kafent/kafent.module.mjs +61 -0
- package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +128 -0
- package/esm2022/lib/pipes/bytes.pipe.mjs +24 -0
- package/esm2022/lib/pipes/elder-pipes.module.mjs +67 -0
- package/esm2022/lib/pipes/elder-repeat.pipe.mjs +21 -0
- package/esm2022/lib/pipes/elder-round.pipe.mjs +35 -0
- package/esm2022/lib/pipes/elder-safe-url.pipe.mjs +20 -0
- package/esm2022/lib/pipes/elder-truncate.pipe.mjs +40 -0
- package/esm2022/lib/pipes/iso-duration.pipe.mjs +58 -0
- package/esm2022/lib/pipes/iso-interval-parse.pipe.mjs +49 -0
- package/esm2022/lib/pipes/iso-interval.pipe.mjs +110 -0
- package/esm2022/lib/pipes/time-ago.pipe.mjs +104 -0
- package/esm2022/lib/pipes/time-duration.pipe.mjs +98 -0
- package/esm2022/lib/pipes/weight.pipe.mjs +56 -0
- package/fesm2022/elderbyte-ngx-starter.mjs +30269 -0
- package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -0
- package/lib/common/data/field-comparator.d.ts +1 -1
- package/lib/common/forms/elder-form-field-control-base.directive.d.ts +1 -1
- package/lib/common/forms/elder-from-field-base.d.ts +1 -1
- package/lib/common/forms/elder-from-field-customizable-base.d.ts +1 -1
- package/lib/common/forms/form-field-base.component.d.ts +1 -1
- package/lib/common/forms/template-composite-control.d.ts +1 -1
- package/lib/common/forms/value-accessor-base.d.ts +1 -1
- package/lib/common/i18n/entity/language-tag.d.ts +1 -1
- package/lib/common/i18n/entity/translated.d.ts +1 -1
- package/lib/common/json-map.d.ts +1 -1
- package/lib/common/selection/selection-model.d.ts +1 -1
- package/lib/common/theme-sizes.d.ts +1 -1
- package/lib/common/time/date-util.d.ts +1 -1
- package/lib/common/time/interval.d.ts +1 -1
- package/lib/components/auditing/audited-entity/elder-audited-entity.component.d.ts +1 -1
- package/lib/components/badge/elder-badge/elder-badge.component.d.ts +1 -1
- package/lib/components/badge/elder-badge.directive.d.ts +1 -1
- package/lib/components/card-organizer/card-organizer/elder-card-organizer.component.d.ts +1 -1
- package/lib/components/card-organizer/card-stack/elder-card-stack.component.d.ts +1 -1
- package/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.d.ts +1 -1
- package/lib/components/cards/elder-card/elder-card.component.d.ts +3 -3
- package/lib/components/chips/elder-chip-label.directive.d.ts +4 -4
- package/lib/components/containers/elder-scroll-container/elder-scroll-container.component.d.ts +2 -2
- package/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.d.ts +1 -1
- package/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.d.ts +1 -1
- package/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.d.ts +1 -1
- package/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.d.ts +1 -1
- package/lib/components/data-view/base/elder-data-view-base.d.ts +1 -1
- package/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.d.ts +1 -1
- package/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.d.ts +3 -3
- package/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.d.ts +1 -1
- package/lib/components/data-view/common/selection/data-context-selection.directive.d.ts +1 -1
- package/lib/components/data-view/elder-data-view-interaction-mode.d.ts +1 -1
- package/lib/components/data-view/grid/elder-grid/elder-grid.component.d.ts +1 -1
- package/lib/components/data-view/master-detail/elder-master-detail-mode.d.ts +1 -1
- package/lib/components/data-view/master-detail/elder-master-detail.component.d.ts +1 -1
- package/lib/components/data-view/table/activation/elder-delete-active.directive.d.ts +1 -1
- package/lib/components/data-view/table/activation/elder-table-activation-options.d.ts +2 -2
- package/lib/components/data-view/table/activation/elder-table-activation.directive.d.ts +1 -1
- package/lib/components/data-view/table/elder-table/elder-table.component.d.ts +1 -1
- package/lib/components/data-view/table/elder-table-extension.directive.d.ts +1 -1
- package/lib/components/data-view/table/elder-table-row.directive.d.ts +1 -1
- package/lib/components/data-view/table/model/elder-column-layout.d.ts +1 -1
- package/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.d.ts +1 -1
- package/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.d.ts +1 -1
- package/lib/components/errors/exception-detail/elder-exception-detail.component.d.ts +1 -1
- package/lib/components/expand-toggle-button/elder-expand-toggle-button.component.d.ts +1 -1
- package/lib/components/files/blob-viewer/elder-blob-viewer.component.d.ts +1 -1
- package/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.d.ts +1 -1
- package/lib/components/files/elder-file-drop-zone.directive.d.ts +1 -1
- package/lib/components/files/elder-file-select.directive.d.ts +1 -1
- package/lib/components/files/file-select/file-select.component.d.ts +1 -1
- package/lib/components/files/file-upload/file-upload.component.d.ts +1 -1
- package/lib/components/forms/directives/elder-clipboard-put.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-delayed-focus.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-form-field-dense.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-form-field-label.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-form-field-no-hint.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-form-field-no-spinner.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-input-pattern.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-key-event.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-next-focusable.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-tab-focus-trap.directive.d.ts +1 -1
- package/lib/components/forms/directives/validation/validators/elder-max.validator.d.ts +1 -1
- package/lib/components/forms/directives/validation/validators/elder-min.validator.d.ts +1 -1
- package/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.d.ts +1 -1
- package/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.d.ts +1 -1
- package/lib/components/forms/search/elder-search-context.directive.d.ts +1 -1
- package/lib/components/forms/search/elder-search-input.directive.d.ts +1 -1
- package/lib/components/forms/search/search-box/elder-search-box.component.d.ts +1 -1
- package/lib/components/global-search/elder-global-search.component.d.ts +1 -1
- package/lib/components/graph/elder-progress-bar/elder-progress-bar.component.d.ts +1 -1
- package/lib/components/headers/elder-header/elder-header.component.d.ts +1 -1
- package/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.d.ts +1 -1
- package/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.d.ts +1 -1
- package/lib/components/i18n/entities/elder-localized-text-column.directive.d.ts +1 -1
- package/lib/components/i18n/language/language-switcher/elder-language-switcher.component.d.ts +1 -1
- package/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.d.ts +1 -1
- package/lib/components/iframes/iframe-close.directive.d.ts +1 -1
- package/lib/components/iframes/iframe-host/iframe-host.component.d.ts +2 -2
- package/lib/components/iframes/typed-event-message.d.ts +1 -1
- package/lib/components/infinitescroll/elder-infinite-scroll.directive.d.ts +1 -1
- package/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.d.ts +2 -2
- package/lib/components/input/autocomplete/elder-autocomplete-many.directive.d.ts +1 -1
- package/lib/components/input/autocomplete/elder-autocomplete.directive.d.ts +1 -1
- package/lib/components/labels/labels-input/labels-input.component.d.ts +1 -1
- package/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.d.ts +2 -2
- package/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.d.ts +1 -1
- package/lib/components/measures/directives/elder-unit-select.directive.d.ts +1 -1
- package/lib/components/measures/model/unit.d.ts +1 -1
- package/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.d.ts +1 -1
- package/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.d.ts +1 -1
- package/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.d.ts +1 -1
- package/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.d.ts +1 -1
- package/lib/components/navigation/nav/nav-group/elder-nav-group.component.d.ts +1 -1
- package/lib/components/navigation/nav/nav-link/elder-nav-link.component.d.ts +1 -1
- package/lib/components/navigation/nav/nav-list/elder-nav-list.component.d.ts +1 -1
- package/lib/components/navigation/toolbar/elder-toolbar-column.directive.d.ts +1 -1
- package/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.d.ts +1 -1
- package/lib/components/navigation/toolbar/toolbar-column-position.d.ts +1 -1
- package/lib/components/overlays/elder-overlay-origin.directive.d.ts +1 -1
- package/lib/components/overlays/elder-overlay-trigger.directive.d.ts +1 -1
- package/lib/components/overlays/elder-overlay.component.d.ts +1 -1
- package/lib/components/panels/flat/elder-panel.component.d.ts +1 -1
- package/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.d.ts +1 -1
- package/lib/components/scrollbar/elder-scrollbar.directive.d.ts +1 -1
- package/lib/components/select/auto/elder-auto-select-first.directive.d.ts +1 -1
- package/lib/components/select/elder-select-base.d.ts +2 -2
- package/lib/components/select/multi/elder-multi-select-base.d.ts +1 -1
- package/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.d.ts +1 -1
- package/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.d.ts +1 -1
- package/lib/components/select/popup/selection-model-popup.directive.d.ts +1 -1
- package/lib/components/select/single/elder-select/elder-select.component.d.ts +1 -1
- package/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.d.ts +1 -1
- package/lib/components/shell/elder-shell-slot.directive.d.ts +1 -1
- package/lib/components/shell/header/elder-app-header/elder-app-header.component.d.ts +1 -1
- package/lib/components/shell/shell/elder-shell.component.d.ts +1 -1
- package/lib/components/shell/shell-content-slot.d.ts +1 -1
- package/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.d.ts +1 -1
- package/lib/components/tabs/elder-tab/elder-tab.directive.d.ts +1 -1
- package/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.d.ts +1 -1
- package/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.d.ts +2 -2
- package/lib/components/time/duration/elder-duration-input/elder-duration-input.component.d.ts +1 -1
- package/lib/components/time/duration/iso-duration-str.d.ts +1 -1
- package/lib/components/time/elder-date-switcher/elder-date-switcher.component.d.ts +1 -1
- package/lib/components/time/elder-date-time-input/elder-date-time-input.component.d.ts +1 -1
- package/lib/components/time/elder-interval-input/elder-interval-input.component.d.ts +2 -2
- package/lib/components/time/elder-local-date-input/elder-local-date-input.component.d.ts +1 -1
- package/lib/components/time/elder-local-time-input/elder-local-time-input.component.d.ts +1 -1
- package/lib/components/time/period/elder-period-input/elder-period-input.component.d.ts +1 -1
- package/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.d.ts +1 -1
- package/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.d.ts +1 -1
- package/lib/pipes/elder-truncate.pipe.d.ts +1 -1
- package/package.json +12 -18
- package/esm2020/lib/common/async/refreshing-entity.mjs +0 -86
- package/esm2020/lib/common/csv/csv-spec.mjs +0 -99
- package/esm2020/lib/common/data/data-context/data-context-auto-starter.mjs +0 -76
- package/esm2020/lib/common/data/data-context/data-context-builder.mjs +0 -247
- package/esm2020/lib/common/data/data-context/data-context-status.mjs +0 -46
- package/esm2020/lib/common/data/data-context/mat-table-data-context-binding.mjs +0 -139
- package/esm2020/lib/common/data/datasource/data-source-adapter.mjs +0 -55
- package/esm2020/lib/common/data/datasource/data-source-change-event.mjs +0 -24
- package/esm2020/lib/common/data/datasource/data-source-processor.mjs +0 -199
- package/esm2020/lib/common/data/datasource/fetcher/delegate-data-source.mjs +0 -127
- package/esm2020/lib/common/data/datasource/local/local-list-data-source.mjs +0 -141
- package/esm2020/lib/common/data/datasource/local/local-paged-data-source.mjs +0 -73
- package/esm2020/lib/common/data/entity-set-patch.mjs +0 -164
- package/esm2020/lib/common/data/field-comparator.mjs +0 -99
- package/esm2020/lib/common/data/http-params-builder.mjs +0 -118
- package/esm2020/lib/common/data/sort.mjs +0 -11
- package/esm2020/lib/common/enums/elder-enum-translation.service.mjs +0 -81
- package/esm2020/lib/common/format/bytes-format.mjs +0 -22
- package/esm2020/lib/common/forms/elder-form-field-control-base.directive.mjs +0 -181
- package/esm2020/lib/common/forms/elder-from-field-base.mjs +0 -94
- package/esm2020/lib/common/forms/elder-from-field-customizable-base.mjs +0 -52
- package/esm2020/lib/common/forms/elder-from-field-entity-base.mjs +0 -39
- package/esm2020/lib/common/forms/elder-from-field-multi-entity-base.mjs +0 -47
- package/esm2020/lib/common/forms/form-field-base.component.mjs +0 -112
- package/esm2020/lib/common/forms/multi-model-base.component.mjs +0 -32
- package/esm2020/lib/common/forms/template-composite-control.mjs +0 -133
- package/esm2020/lib/common/forms/value-accessor-base.mjs +0 -146
- package/esm2020/lib/common/forms/view-providers.mjs +0 -30
- package/esm2020/lib/common/http/http-client-builder.service.mjs +0 -14
- package/esm2020/lib/common/http/http-client-pristine.mjs +0 -21
- package/esm2020/lib/common/http/transfer/data-transfer-factory.mjs +0 -95
- package/esm2020/lib/common/http/transfer/data-transfer-progress-aggregate.mjs +0 -49
- package/esm2020/lib/common/http/transfer/data-transfer-progress.mjs +0 -17
- package/esm2020/lib/common/http/transfer/data-transfer-state.mjs +0 -82
- package/esm2020/lib/common/http/transfer/http-data-transfer.mjs +0 -132
- package/esm2020/lib/common/i18n/entity/impl/i18n-text.mjs +0 -16
- package/esm2020/lib/common/i18n/entity/locale.mjs +0 -12
- package/esm2020/lib/common/i18n/entity/localisation-picker.mjs +0 -30
- package/esm2020/lib/common/objects.mjs +0 -41
- package/esm2020/lib/common/selection/selection-model.mjs +0 -212
- package/esm2020/lib/common/suggestion-provider.mjs +0 -12
- package/esm2020/lib/common/time/date-util.mjs +0 -93
- package/esm2020/lib/common/time/time-util.mjs +0 -41
- package/esm2020/lib/common/url/elder-router.service.mjs +0 -54
- package/esm2020/lib/common/url/elder-url-fragment-params.service.mjs +0 -119
- package/esm2020/lib/common/url/url-query-params.mjs +0 -133
- package/esm2020/lib/common/utils/collection-util.mjs +0 -109
- package/esm2020/lib/common/utils/filter-util.mjs +0 -52
- package/esm2020/lib/common/utils/focus-util.mjs +0 -23
- package/esm2020/lib/common/utils/query-list-binding.mjs +0 -67
- package/esm2020/lib/common/utils/url-builder.mjs +0 -275
- package/esm2020/lib/common/utils/value-wrapper.mjs +0 -19
- package/esm2020/lib/components/access-denied/elder-access-denied.component.mjs +0 -16
- package/esm2020/lib/components/access-denied/elder-access-denied.module.mjs +0 -30
- package/esm2020/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +0 -39
- package/esm2020/lib/components/auditing/elder-audit.module.mjs +0 -42
- package/esm2020/lib/components/badge/elder-badge/elder-badge.component.mjs +0 -39
- package/esm2020/lib/components/badge/elder-badge.directive.mjs +0 -48
- package/esm2020/lib/components/badge/elder-badge.module.mjs +0 -40
- package/esm2020/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +0 -15
- package/esm2020/lib/components/button-group/elder-button-group.module.mjs +0 -35
- package/esm2020/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +0 -123
- package/esm2020/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +0 -15
- package/esm2020/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +0 -211
- package/esm2020/lib/components/card-organizer/card-stack.mjs +0 -176
- package/esm2020/lib/components/card-organizer/elder-card-organizer.module.mjs +0 -49
- package/esm2020/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +0 -17
- package/esm2020/lib/components/cards/elder-card/elder-card.component.mjs +0 -145
- package/esm2020/lib/components/cards/elder-card/elder-card.module.mjs +0 -66
- package/esm2020/lib/components/chips/elder-chip-label.directive.mjs +0 -170
- package/esm2020/lib/components/chips/elder-chips.module.mjs +0 -48
- package/esm2020/lib/components/connectivity/elder-connectivity.module.mjs +0 -56
- package/esm2020/lib/components/connectivity/elder-connectivity.service.mjs +0 -63
- package/esm2020/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +0 -46
- package/esm2020/lib/components/containers/elder-containers.module.mjs +0 -25
- package/esm2020/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +0 -24
- package/esm2020/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +0 -77
- package/esm2020/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +0 -38
- package/esm2020/lib/components/csv/elder-csv-stream-exporter.mjs +0 -114
- package/esm2020/lib/components/csv/elder-csv.module.mjs +0 -37
- package/esm2020/lib/components/currency/elder-currency.module.mjs +0 -24
- package/esm2020/lib/components/currency/elder-currency.pipe.mjs +0 -33
- package/esm2020/lib/components/currency/model/currency-unit.mjs +0 -10
- package/esm2020/lib/components/data-transfer/elder-data-transfer.module.mjs +0 -76
- package/esm2020/lib/components/data-transfer/elder-data-transfer.service.mjs +0 -91
- package/esm2020/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +0 -91
- package/esm2020/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +0 -34
- package/esm2020/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +0 -47
- package/esm2020/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +0 -26
- package/esm2020/lib/components/data-view/base/data-view-options-provider-binding.mjs +0 -67
- package/esm2020/lib/components/data-view/base/elder-data-view-base.mjs +0 -266
- package/esm2020/lib/components/data-view/base/elder-data-view-options.mjs +0 -45
- package/esm2020/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +0 -45
- package/esm2020/lib/components/data-view/common/elder-data-common.module.mjs +0 -90
- package/esm2020/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +0 -137
- package/esm2020/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +0 -89
- package/esm2020/lib/components/data-view/common/selection/data-context-selection.directive.mjs +0 -98
- package/esm2020/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +0 -38
- package/esm2020/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +0 -307
- package/esm2020/lib/components/data-view/grid/elder-grid.module.mjs +0 -82
- package/esm2020/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +0 -69
- package/esm2020/lib/components/data-view/master-detail/elder-detail.directive.mjs +0 -49
- package/esm2020/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +0 -76
- package/esm2020/lib/components/data-view/master-detail/elder-master-detail-provider.mjs +0 -20
- package/esm2020/lib/components/data-view/master-detail/elder-master-detail.component.mjs +0 -125
- package/esm2020/lib/components/data-view/master-detail/elder-master-detail.module.mjs +0 -116
- package/esm2020/lib/components/data-view/master-detail/elder-master-detail.service.mjs +0 -88
- package/esm2020/lib/components/data-view/master-detail/elder-master.directive.mjs +0 -22
- package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +0 -19
- package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +0 -78
- package/esm2020/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +0 -113
- package/esm2020/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +0 -299
- package/esm2020/lib/components/data-view/table/elder-number-cell.directive.mjs +0 -29
- package/esm2020/lib/components/data-view/table/elder-paginator-intl.mjs +0 -72
- package/esm2020/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +0 -18
- package/esm2020/lib/components/data-view/table/elder-table/elder-table.component.mjs +0 -325
- package/esm2020/lib/components/data-view/table/elder-table-column.directive.mjs +0 -17
- package/esm2020/lib/components/data-view/table/elder-table-extension.directive.mjs +0 -96
- package/esm2020/lib/components/data-view/table/elder-table-root.directive.mjs +0 -29
- package/esm2020/lib/components/data-view/table/elder-table-row.directive.mjs +0 -153
- package/esm2020/lib/components/data-view/table/elder-table-sort.directive.mjs +0 -20
- package/esm2020/lib/components/data-view/table/elder-table.module.mjs +0 -146
- package/esm2020/lib/components/data-view/table/model/elder-column-layout.mjs +0 -110
- package/esm2020/lib/components/data-view/table/model/elder-table-model-cdk-table-binding.mjs +0 -81
- package/esm2020/lib/components/data-view/table/model/elder-table-model-provider.mjs +0 -40
- package/esm2020/lib/components/data-view/table/model/elder-table-model-query-group.mjs +0 -87
- package/esm2020/lib/components/data-view/table/model/elder-table-model.mjs +0 -165
- package/esm2020/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +0 -25
- package/esm2020/lib/components/dialogs/elder-dialog.module.mjs +0 -64
- package/esm2020/lib/components/dialogs/elder-dialog.service.mjs +0 -202
- package/esm2020/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +0 -43
- package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +0 -43
- package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +0 -46
- package/esm2020/lib/components/errors/elder-error.module.mjs +0 -41
- package/esm2020/lib/components/errors/error-util.mjs +0 -94
- package/esm2020/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +0 -66
- package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +0 -55
- package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +0 -28
- package/esm2020/lib/components/files/blob-url.mjs +0 -10
- package/esm2020/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +0 -225
- package/esm2020/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +0 -43
- package/esm2020/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +0 -84
- package/esm2020/lib/components/files/elder-file-drop-zone.directive.mjs +0 -144
- package/esm2020/lib/components/files/elder-file-select.directive.mjs +0 -166
- package/esm2020/lib/components/files/elder-file.module.mjs +0 -77
- package/esm2020/lib/components/files/file-select/file-select.component.mjs +0 -55
- package/esm2020/lib/components/files/file-upload/file-upload.component.mjs +0 -67
- package/esm2020/lib/components/files/listing/file-entry.mjs +0 -76
- package/esm2020/lib/components/files/listing/file-listing-rx.mjs +0 -104
- package/esm2020/lib/components/forms/clipboard/elder-clipboard.service.mjs +0 -51
- package/esm2020/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +0 -34
- package/esm2020/lib/components/forms/directives/elder-clipboard-put.directive.mjs +0 -35
- package/esm2020/lib/components/forms/directives/elder-delayed-focus.directive.mjs +0 -42
- package/esm2020/lib/components/forms/directives/elder-form-field-dense.directive.mjs +0 -82
- package/esm2020/lib/components/forms/directives/elder-form-field-label.directive.mjs +0 -83
- package/esm2020/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +0 -41
- package/esm2020/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +0 -34
- package/esm2020/lib/components/forms/directives/elder-forms-directives.module.mjs +0 -132
- package/esm2020/lib/components/forms/directives/elder-input-pattern.directive.mjs +0 -77
- package/esm2020/lib/components/forms/directives/elder-key-event.directive.mjs +0 -111
- package/esm2020/lib/components/forms/directives/elder-next-focusable.directive.mjs +0 -101
- package/esm2020/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +0 -36
- package/esm2020/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +0 -29
- package/esm2020/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +0 -157
- package/esm2020/lib/components/forms/directives/elder-touched.directive.mjs +0 -27
- package/esm2020/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +0 -108
- package/esm2020/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +0 -85
- package/esm2020/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +0 -47
- package/esm2020/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +0 -48
- package/esm2020/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +0 -55
- package/esm2020/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +0 -40
- package/esm2020/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +0 -40
- package/esm2020/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +0 -96
- package/esm2020/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +0 -68
- package/esm2020/lib/components/forms/elder-forms.module.mjs +0 -22
- package/esm2020/lib/components/forms/search/elder-search-context.directive.mjs +0 -146
- package/esm2020/lib/components/forms/search/elder-search-input.directive.mjs +0 -185
- package/esm2020/lib/components/forms/search/elder-search.module.mjs +0 -66
- package/esm2020/lib/components/forms/search/search-box/elder-search-box.component.mjs +0 -125
- package/esm2020/lib/components/forms/search/search-box/elder-search-panel.component.mjs +0 -16
- package/esm2020/lib/components/global-search/elder-global-search.component.mjs +0 -126
- package/esm2020/lib/components/global-search/elder-global-search.module.mjs +0 -32
- package/esm2020/lib/components/global-search/elder-global-search.service.mjs +0 -93
- package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +0 -90
- package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +0 -26
- package/esm2020/lib/components/headers/elder-header/elder-header.component.mjs +0 -28
- package/esm2020/lib/components/headers/elder-header.module.mjs +0 -43
- package/esm2020/lib/components/http-support/elder-http-client.service.mjs +0 -68
- package/esm2020/lib/components/i18n/entities/elder-i18n-entities.module.mjs +0 -123
- package/esm2020/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +0 -144
- package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +0 -29
- package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +0 -30
- package/esm2020/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +0 -152
- package/esm2020/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +0 -28
- package/esm2020/lib/components/i18n/entities/elder-localized-texts.directive.mjs +0 -56
- package/esm2020/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +0 -39
- package/esm2020/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +0 -30
- package/esm2020/lib/components/i18n/entities/picker/localisation-picker.service.mjs +0 -74
- package/esm2020/lib/components/i18n/language/elder-language-interceptor.mjs +0 -69
- package/esm2020/lib/components/i18n/language/elder-language.module.mjs +0 -72
- package/esm2020/lib/components/i18n/language/elder-language.service.mjs +0 -121
- package/esm2020/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +0 -65
- package/esm2020/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +0 -53
- package/esm2020/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +0 -130
- package/esm2020/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +0 -138
- package/esm2020/lib/components/iframes/elder-iframe.module.mjs +0 -103
- package/esm2020/lib/components/iframes/iframe-close.directive.mjs +0 -41
- package/esm2020/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +0 -51
- package/esm2020/lib/components/iframes/iframe-host/iframe-host.component.mjs +0 -136
- package/esm2020/lib/components/iframes/iframe-messages.mjs +0 -5
- package/esm2020/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +0 -78
- package/esm2020/lib/components/iframes/iframe.service.mjs +0 -52
- package/esm2020/lib/components/iframes/typed-event-message.mjs +0 -42
- package/esm2020/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +0 -61
- package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +0 -158
- package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +0 -29
- package/esm2020/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +0 -186
- package/esm2020/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +0 -197
- package/esm2020/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +0 -114
- package/esm2020/lib/components/input/autocomplete/elder-autocomplete.module.mjs +0 -58
- package/esm2020/lib/components/labels/elder-labels.module.mjs +0 -30
- package/esm2020/lib/components/labels/labels-input/labels-input.component.mjs +0 -229
- package/esm2020/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +0 -273
- package/esm2020/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +0 -91
- package/esm2020/lib/components/measures/directives/elder-unit-select.directive.mjs +0 -64
- package/esm2020/lib/components/measures/elder-measures.module.mjs +0 -140
- package/esm2020/lib/components/measures/elder-quantity-transform.pipe.mjs +0 -41
- package/esm2020/lib/components/measures/elder-quantity.pipe.mjs +0 -73
- package/esm2020/lib/components/measures/elder-unit.service.mjs +0 -115
- package/esm2020/lib/components/measures/model/unit-registry.mjs +0 -81
- package/esm2020/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +0 -33
- package/esm2020/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +0 -176
- package/esm2020/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +0 -87
- package/esm2020/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +0 -76
- package/esm2020/lib/components/measures/util/elder-quantity.service.mjs +0 -237
- package/esm2020/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +0 -164
- package/esm2020/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +0 -55
- package/esm2020/lib/components/navigation/bread-crumbs/path/path.mjs +0 -37
- package/esm2020/lib/components/navigation/nav/elder-nav.module.mjs +0 -53
- package/esm2020/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +0 -127
- package/esm2020/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +0 -161
- package/esm2020/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +0 -68
- package/esm2020/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +0 -46
- package/esm2020/lib/components/navigation/toolbar/elder-toolbar.module.mjs +0 -76
- package/esm2020/lib/components/navigation/toolbar/elder-toolbar.service.mjs +0 -68
- package/esm2020/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +0 -66
- package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +0 -39
- package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +0 -85
- package/esm2020/lib/components/overlays/elder-overlay-origin.directive.mjs +0 -43
- package/esm2020/lib/components/overlays/elder-overlay-trigger.directive.mjs +0 -72
- package/esm2020/lib/components/overlays/elder-overlay.component.mjs +0 -204
- package/esm2020/lib/components/overlays/elder-overlay.module.mjs +0 -41
- package/esm2020/lib/components/panels/card-panel/elder-card-panel.component.mjs +0 -12
- package/esm2020/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +0 -12
- package/esm2020/lib/components/panels/elder-panel.module.mjs +0 -58
- package/esm2020/lib/components/panels/flat/elder-panel.component.mjs +0 -26
- package/esm2020/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +0 -69
- package/esm2020/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +0 -68
- package/esm2020/lib/components/scrollbar/elder-scrollbar.directive.mjs +0 -62
- package/esm2020/lib/components/scrollbar/elder-scrollbar.module.mjs +0 -17
- package/esm2020/lib/components/select/auto/elder-auto-select-first.directive.mjs +0 -77
- package/esm2020/lib/components/select/auto/elder-select-first-util.mjs +0 -62
- package/esm2020/lib/components/select/elder-select-base.mjs +0 -284
- package/esm2020/lib/components/select/elder-select-chip.directive.mjs +0 -45
- package/esm2020/lib/components/select/elder-select-on-tab.directive.mjs +0 -133
- package/esm2020/lib/components/select/elder-select-value.directive.mjs +0 -15
- package/esm2020/lib/components/select/elder-select.module.mjs +0 -146
- package/esm2020/lib/components/select/multi/elder-multi-select-base.mjs +0 -350
- package/esm2020/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +0 -287
- package/esm2020/lib/components/select/multi/elder-multi-select-form-field.mjs +0 -91
- package/esm2020/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +0 -86
- package/esm2020/lib/components/select/popup/selection-model-popup.directive.mjs +0 -126
- package/esm2020/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +0 -47
- package/esm2020/lib/components/select/single/elder-clear-select.directive.mjs +0 -57
- package/esm2020/lib/components/select/single/elder-select/elder-select.component.mjs +0 -443
- package/esm2020/lib/components/select/single/elder-select-form-field.mjs +0 -45
- package/esm2020/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +0 -149
- package/esm2020/lib/components/select-chip-list/elder-chip-list-select.module.mjs +0 -48
- package/esm2020/lib/components/shell/drawers/drawer-outlet-binding.mjs +0 -60
- package/esm2020/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +0 -117
- package/esm2020/lib/components/shell/drawers/elder-router-outlet.service.mjs +0 -128
- package/esm2020/lib/components/shell/elder-shell-slot.directive.mjs +0 -46
- package/esm2020/lib/components/shell/elder-shell.module.mjs +0 -96
- package/esm2020/lib/components/shell/elder-shell.service.mjs +0 -145
- package/esm2020/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +0 -73
- package/esm2020/lib/components/shell/shell/elder-shell.component.mjs +0 -209
- package/esm2020/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +0 -137
- package/esm2020/lib/components/tabs/elder-tab/elder-tab.directive.mjs +0 -25
- package/esm2020/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +0 -256
- package/esm2020/lib/components/tabs/elder-tab.module.mjs +0 -32
- package/esm2020/lib/components/theme/elder-theme-applier.directive.mjs +0 -62
- package/esm2020/lib/components/theme/elder-theme-preference.service.mjs +0 -74
- package/esm2020/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +0 -74
- package/esm2020/lib/components/theme/elder-theme.directive.mjs +0 -61
- package/esm2020/lib/components/theme/elder-theme.module.mjs +0 -74
- package/esm2020/lib/components/theme/elder-theme.service.mjs +0 -123
- package/esm2020/lib/components/theme/known-elder-themes.mjs +0 -6
- package/esm2020/lib/components/time/date-adapters/custom-date-adapter.mjs +0 -23
- package/esm2020/lib/components/time/duration/duration-format.mjs +0 -271
- package/esm2020/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +0 -122
- package/esm2020/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +0 -89
- package/esm2020/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +0 -108
- package/esm2020/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +0 -173
- package/esm2020/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +0 -264
- package/esm2020/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +0 -95
- package/esm2020/lib/components/time/elder-time.module.mjs +0 -120
- package/esm2020/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +0 -131
- package/esm2020/lib/components/time/period/period-format.mjs +0 -89
- package/esm2020/lib/components/time/pipes/to-iso-date-string.pipe.mjs +0 -38
- package/esm2020/lib/components/toasts/elder-toast.module.mjs +0 -23
- package/esm2020/lib/components/toasts/elder-toast.service.mjs +0 -171
- package/esm2020/lib/components/toasts/standard-toast/standard-toast.component.mjs +0 -74
- package/esm2020/lib/components/url-fragment/elder-url-fragment.module.mjs +0 -54
- package/esm2020/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +0 -84
- package/esm2020/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +0 -65
- package/esm2020/lib/components/viewers/elder-viewers.module.mjs +0 -25
- package/esm2020/lib/features/event-source/elder-event-source.service.mjs +0 -56
- package/esm2020/lib/features/event-source/reactive-event-source.mjs +0 -198
- package/esm2020/lib/features/kafent/access-token-provider.mjs +0 -20
- package/esm2020/lib/features/kafent/kafent-config.mjs +0 -24
- package/esm2020/lib/features/kafent/kafent-event-stream.mjs +0 -25
- package/esm2020/lib/features/kafent/kafent-event.service.mjs +0 -107
- package/esm2020/lib/features/kafent/kafent.module.mjs +0 -61
- package/esm2020/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +0 -128
- package/esm2020/lib/pipes/bytes.pipe.mjs +0 -24
- package/esm2020/lib/pipes/elder-pipes.module.mjs +0 -67
- package/esm2020/lib/pipes/elder-repeat.pipe.mjs +0 -21
- package/esm2020/lib/pipes/elder-round.pipe.mjs +0 -35
- package/esm2020/lib/pipes/elder-safe-url.pipe.mjs +0 -20
- package/esm2020/lib/pipes/elder-truncate.pipe.mjs +0 -40
- package/esm2020/lib/pipes/iso-duration.pipe.mjs +0 -58
- package/esm2020/lib/pipes/iso-interval-parse.pipe.mjs +0 -49
- package/esm2020/lib/pipes/iso-interval.pipe.mjs +0 -110
- package/esm2020/lib/pipes/time-ago.pipe.mjs +0 -104
- package/esm2020/lib/pipes/time-duration.pipe.mjs +0 -98
- package/esm2020/lib/pipes/weight.pipe.mjs +0 -56
- package/fesm2015/elderbyte-ngx-starter.mjs +0 -30444
- package/fesm2015/elderbyte-ngx-starter.mjs.map +0 -1
- package/fesm2020/elderbyte-ngx-starter.mjs +0 -30270
- package/fesm2020/elderbyte-ngx-starter.mjs.map +0 -1
- /package/{esm2020 → esm2022}/elderbyte-ngx-starter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/arrays.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/async/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/csv/csv-serializer.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/csv/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/continuable-listing.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context-active-page.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context-base.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context-continuable-base.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context-continuable-paged.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context-continuable-token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context-life-cycle-binding.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context-simple.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context-source-event-binding.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/indexed-entities.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/datasource/data-source-base.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/datasource/data-source.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/datasource/entity-id-util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/datasource/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/datasource/rest/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/datasource/rest/rest-client.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/filters/filter-context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/filters/filter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/page.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/required-filter-evaluator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/sort-context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/token-chunk-request.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/enums/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/errors/exception-detail.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/errors/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/errors/standard-error-detail.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/format/bytes-per-second-format.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/format/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/forms/elder-entity-value-accessor.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/forms/elder-multi-entity-value-accessor.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/forms/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/http/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/http/transfer/data-transfer-base.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/http/transfer/data-transfer-status.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/http/transfer/data-transfer.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/http/transfer/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/http/upload/file-upload-client.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/i18n/entity/impl/i18n-base.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/i18n/entity/impl/translated.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/i18n/entity/language-tag.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/i18n/entity/localized.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/i18n/entity/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/i18n/entity/translated-converter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/i18n/entity/translated.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/i18n/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/json-map.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/reactive-map.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/rxjs/operators/lazy-sample.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/rxjs/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/selection/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/sets.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/templates/template-slot-manager.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/theme-sizes.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/time/interval.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/time/period-duration.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/time/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/url/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/batcher.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/next-number-util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/ng-zone-utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/parse-util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/property-path-util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/sort-util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/uuid-util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/auditing/i-audited-entity.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/card-organizer/card-organizer-data.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/connectivity/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/containers/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/csv/elder-csv-stream-exporter-builder.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/currency/model/currency-code.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/currency/model/currency-unit-registry.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/currency/model/currency.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/currency/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/base/elder-data-view-options-provider.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/base/elder-data-view.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/base/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/common/selection/master-selection-state.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/elder-data-view-interaction-mode.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/master-detail/elder-master-detail-mode.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/master-detail/master-detail-activation-event.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/table/activation/activation-event-source.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/table/activation/elder-activation-context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/table/activation/elder-table-activation-options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/table/activation/item-activation-event.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/table/activation/item-activation-options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/table/activation/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/dialogs/elder-dialog-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/forms/directives/validation/strategies/fallback-validation-message-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/forms/directives/validation/validation-message-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/forms/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/forms/search/model/search-input-state.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/forms/search/model/search-input.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/graph/elder-progress-bar/sub-bar.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/graph/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/http-support/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/i18n/language/elder-language-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/i18n/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/input/autocomplete/many/word-position-finder.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/input/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/measures/model/dimensions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/measures/model/quantity.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/measures/model/unit-dimension.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/measures/model/unit.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/measures/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/navigation/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/navigation/toolbar/toolbar-column-position.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/select/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/shell/shell-content-slot.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/theme/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/theme/theme-spec.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/time/duration/duration-bucket.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/time/duration/iso-duration-str.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/time/period/period-bucket.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/time/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/toasts/toast-type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/toasts/toast.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/url-fragment/elder-url-fragment.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/features/event-source/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/features/kafent/kafent-event.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/features/kafent/kafent-live-event-request.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/features/kafent/sse/kafent-topic-sse.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/features/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChild, Input, Output, TemplateRef, ViewChild } from '@angular/core';
|
|
2
|
+
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
3
|
+
import { BehaviorSubject, of, Subject } from 'rxjs';
|
|
4
|
+
import { isContinuableDataContext } from '../../../../common/data/data-context/data-context';
|
|
5
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
6
|
+
import { filter, switchMap } from 'rxjs/operators';
|
|
7
|
+
import { runInZone } from '../../../../common/utils/ng-zone-utils';
|
|
8
|
+
import { ElderSelectValueDirective } from '../../../select/elder-select-value.directive';
|
|
9
|
+
import { ElderAutocompleteOptionSelected } from './elder-autocomplete-option-selected';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@angular/common";
|
|
12
|
+
import * as i2 from "@angular/material/autocomplete";
|
|
13
|
+
import * as i3 from "@angular/material/core";
|
|
14
|
+
import * as i4 from "../../../infinitescroll/elder-infinite-scroll.directive";
|
|
15
|
+
import * as i5 from "../../../infinitescroll/elder-infinite-autocomplete.directive";
|
|
16
|
+
import * as i6 from "@angular/material/icon";
|
|
17
|
+
import * as i7 from "@angular/material/progress-bar";
|
|
18
|
+
export class ElderAutocompleteComponent {
|
|
19
|
+
set matAutocomplete(auto) {
|
|
20
|
+
this.matAutocomplete$.next(auto);
|
|
21
|
+
}
|
|
22
|
+
/***************************************************************************
|
|
23
|
+
* *
|
|
24
|
+
* Constructor *
|
|
25
|
+
* *
|
|
26
|
+
**************************************************************************/
|
|
27
|
+
constructor(zone) {
|
|
28
|
+
this.zone = zone;
|
|
29
|
+
/***************************************************************************
|
|
30
|
+
* *
|
|
31
|
+
* Fields *
|
|
32
|
+
* *
|
|
33
|
+
**************************************************************************/
|
|
34
|
+
this.logger = LoggerFactory.getLogger(this.constructor.name);
|
|
35
|
+
/**
|
|
36
|
+
* Is this auto-complete enabled?
|
|
37
|
+
*/
|
|
38
|
+
this._enabled = true;
|
|
39
|
+
/**
|
|
40
|
+
* The underlying Material Autocomplete
|
|
41
|
+
*/
|
|
42
|
+
this.matAutocomplete$ = new BehaviorSubject(null);
|
|
43
|
+
/**
|
|
44
|
+
* The DataContext which holds the autocomplete suggestions.
|
|
45
|
+
*/
|
|
46
|
+
this.dataContext$ = new BehaviorSubject(null);
|
|
47
|
+
this.triggerReload$ = new Subject();
|
|
48
|
+
this.displayPropertyResolver$ = new BehaviorSubject((value) => this.propertyStringValue(value, null));
|
|
49
|
+
this.optionSelected = new Subject();
|
|
50
|
+
this.dataState$ = this.dataContext$.pipe(filter(dc => !!dc), switchMap(dc => dc.status), runInZone(this.zone));
|
|
51
|
+
this.availableSuggestions$ = this.dataContext$.pipe(switchMap(dc => dc ? dc.data : of([])), runInZone(this.zone));
|
|
52
|
+
}
|
|
53
|
+
/***************************************************************************
|
|
54
|
+
* *
|
|
55
|
+
* Properties *
|
|
56
|
+
* *
|
|
57
|
+
**************************************************************************/
|
|
58
|
+
set enabled(value) {
|
|
59
|
+
this._enabled = coerceBooleanProperty(value);
|
|
60
|
+
}
|
|
61
|
+
get enabled() {
|
|
62
|
+
return this._enabled;
|
|
63
|
+
}
|
|
64
|
+
set valueTemplate(template) {
|
|
65
|
+
this._valueTemplate = template;
|
|
66
|
+
}
|
|
67
|
+
get valueTemplate() {
|
|
68
|
+
return this._valueTemplate || this.valueTemplateQuery;
|
|
69
|
+
}
|
|
70
|
+
set dataContext(data) {
|
|
71
|
+
this.dataContext$.next(data);
|
|
72
|
+
}
|
|
73
|
+
get dataContext() {
|
|
74
|
+
return this.dataContext$.getValue();
|
|
75
|
+
}
|
|
76
|
+
set displayPropertyResolver(resolver) {
|
|
77
|
+
this.displayPropertyResolver$.next(resolver);
|
|
78
|
+
}
|
|
79
|
+
/***************************************************************************
|
|
80
|
+
* *
|
|
81
|
+
* Public API *
|
|
82
|
+
* *
|
|
83
|
+
**************************************************************************/
|
|
84
|
+
onOptionSelected(event) {
|
|
85
|
+
const option = event.option;
|
|
86
|
+
const id = option.id;
|
|
87
|
+
this.optionSelected.next(new ElderAutocompleteOptionSelected(this, id, this.getEntityById(id), option.value));
|
|
88
|
+
}
|
|
89
|
+
getEntityById(id) {
|
|
90
|
+
const dc = this.dataContext;
|
|
91
|
+
if (dc) {
|
|
92
|
+
return dc.snapshot.data.find(e => this.getId(e) == id);
|
|
93
|
+
}
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
onAutocompleteOpened(event) {
|
|
97
|
+
this.logger.debug('Autocomplete opened:', event);
|
|
98
|
+
if (this.enabled) {
|
|
99
|
+
this.triggerReload$.next(null);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
onAutoCompleteCloseToEnd(event) {
|
|
103
|
+
// this.logger.debug('Autocomplete is close to end!');
|
|
104
|
+
if (isContinuableDataContext(this.dataContext)) {
|
|
105
|
+
if (!this.dataContext.snapshot.isLoading) {
|
|
106
|
+
this.dataContext.loadMore();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
getIdAsString(value) {
|
|
111
|
+
return String(this.getId(value));
|
|
112
|
+
}
|
|
113
|
+
getId(value) {
|
|
114
|
+
return this.dataContext?.dataSource?.getId(value) || value;
|
|
115
|
+
}
|
|
116
|
+
isOptionAvailable(option) {
|
|
117
|
+
if (this.isOptionDisabledFn) {
|
|
118
|
+
return !this.isOptionDisabledFn(option);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
isOptionVisible(option) {
|
|
125
|
+
if (this.isOptionHiddenFn) {
|
|
126
|
+
return !this.isOptionHiddenFn(option);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
toOptionValue(option) {
|
|
133
|
+
if (this.optionValueConverterFn) {
|
|
134
|
+
return this.optionValueConverterFn(option);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
return option;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/***************************************************************************
|
|
141
|
+
* *
|
|
142
|
+
* Private methods *
|
|
143
|
+
* *
|
|
144
|
+
**************************************************************************/
|
|
145
|
+
/**
|
|
146
|
+
* TODO Duplicate in elder-select
|
|
147
|
+
*/
|
|
148
|
+
propertyStringValue(value, property) {
|
|
149
|
+
if (value === null || value === undefined) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
if (property) {
|
|
153
|
+
return value[property];
|
|
154
|
+
}
|
|
155
|
+
return String(value);
|
|
156
|
+
}
|
|
157
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderAutocompleteComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
158
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderAutocompleteComponent, selector: "elder-autocomplete", inputs: { isOptionDisabledFn: "isOptionDisabledFn", isOptionHiddenFn: "isOptionHiddenFn", optionValueConverterFn: "optionValueConverterFn", enabled: "enabled", valueTemplate: "valueTemplate", dataContext: "dataContext", displayPropertyResolver: "displayPropertyResolver" }, outputs: { optionSelected: "optionSelected" }, queries: [{ propertyName: "valueTemplateQuery", first: true, predicate: ElderSelectValueDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "matAutocomplete", first: true, predicate: ["auto"], descendants: true }], exportAs: ["elderAutocomplete"], ngImport: i0, template: "<mat-autocomplete\n #auto=\"matAutocomplete\"\n panelWidth=\"auto\"\n [autoActiveFirstOption]=\"true\"\n (opened)=\"onAutocompleteOpened($event)\"\n (optionSelected)=\"onOptionSelected($event)\"\n elderInfiniteScroll elderElderInfiniteAutocomplete (closeToEnd)=\"onAutoCompleteCloseToEnd($event)\"\n>\n <!--\n <mat-option *ngIf=\"allowNull\" [value]=\"null\">{{nullDisplay | translate}}</mat-option>\n -->\n\n <mat-option disabled *ngIf=\"!(dataContext$ | async)\">\n <span class=\"mat-caption\">No DataSource / DataContext!</span>\n </mat-option>\n\n <ng-container *ngIf=\"dataContext$ | async as dc\">\n\n <mat-option disabled *ngIf=\"dc.isClosed\">\n <div class=\"layout-row place-start-center gap-sm\">\n <mat-icon color=\"warn\">warning</mat-icon>\n <span class=\"mat-caption\">DataContext Closed!</span>\n </div>\n </mat-option>\n\n <ng-container *ngIf=\"availableSuggestions$ | async as suggestions\">\n\n <mat-option *ngIf=\"suggestions.length === 0\" disabled>\n No Data.\n </mat-option>\n\n <ng-container *ngFor=\"let suggestion of suggestions\">\n <mat-option\n *ngIf=\"isOptionVisible(suggestion)\"\n [value]=\"toOptionValue(suggestion)\"\n [id]=\"getIdAsString(suggestion)\"\n [disabled]=\"!isOptionAvailable(suggestion)\"\n >\n <ng-container\n *ngTemplateOutlet=\"valueTemplate || simpleValueTemplate; context: {$implicit: suggestion}\">\n </ng-container>\n <!--\n <span class=\"mat-caption\">value: {{toOptionValue(suggestion)}}</span>\n -->\n </mat-option>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"dataState$ | async as state\">\n\n <mat-option disabled *ngIf=\"!state.idle || state.loading\">\n <mat-progress-bar\n [value]=\"100\"\n [mode]=\"state.loading ? 'query' : 'determinate'\"\n [color]=\"state.error ? 'warn' : 'primary'\"\n ></mat-progress-bar>\n </mat-option>\n\n </ng-container>\n</mat-autocomplete>\n\n<ng-template #simpleValueTemplate let-value>\n <ng-container *ngIf=\"displayPropertyResolver$ | async as propertyResolver\">\n <span class=\"noselect\">{{propertyResolver(value)}}</span>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i4.ElderInfiniteScrollDirective, selector: "[elderInfiniteScroll]", inputs: ["listenToHost", "eventThrottle", "offsetFactor", "ignoreScrollEvent", "containerId", "scrollContainer"], outputs: ["closeToEnd", "scrolling"] }, { kind: "directive", type: i5.ElderInfiniteAutocompleteDirective, selector: "mat-autocomplete[elderElderInfiniteAutocomplete]" }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
159
|
+
}
|
|
160
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderAutocompleteComponent, decorators: [{
|
|
161
|
+
type: Component,
|
|
162
|
+
args: [{ selector: 'elder-autocomplete', exportAs: 'elderAutocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-autocomplete\n #auto=\"matAutocomplete\"\n panelWidth=\"auto\"\n [autoActiveFirstOption]=\"true\"\n (opened)=\"onAutocompleteOpened($event)\"\n (optionSelected)=\"onOptionSelected($event)\"\n elderInfiniteScroll elderElderInfiniteAutocomplete (closeToEnd)=\"onAutoCompleteCloseToEnd($event)\"\n>\n <!--\n <mat-option *ngIf=\"allowNull\" [value]=\"null\">{{nullDisplay | translate}}</mat-option>\n -->\n\n <mat-option disabled *ngIf=\"!(dataContext$ | async)\">\n <span class=\"mat-caption\">No DataSource / DataContext!</span>\n </mat-option>\n\n <ng-container *ngIf=\"dataContext$ | async as dc\">\n\n <mat-option disabled *ngIf=\"dc.isClosed\">\n <div class=\"layout-row place-start-center gap-sm\">\n <mat-icon color=\"warn\">warning</mat-icon>\n <span class=\"mat-caption\">DataContext Closed!</span>\n </div>\n </mat-option>\n\n <ng-container *ngIf=\"availableSuggestions$ | async as suggestions\">\n\n <mat-option *ngIf=\"suggestions.length === 0\" disabled>\n No Data.\n </mat-option>\n\n <ng-container *ngFor=\"let suggestion of suggestions\">\n <mat-option\n *ngIf=\"isOptionVisible(suggestion)\"\n [value]=\"toOptionValue(suggestion)\"\n [id]=\"getIdAsString(suggestion)\"\n [disabled]=\"!isOptionAvailable(suggestion)\"\n >\n <ng-container\n *ngTemplateOutlet=\"valueTemplate || simpleValueTemplate; context: {$implicit: suggestion}\">\n </ng-container>\n <!--\n <span class=\"mat-caption\">value: {{toOptionValue(suggestion)}}</span>\n -->\n </mat-option>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"dataState$ | async as state\">\n\n <mat-option disabled *ngIf=\"!state.idle || state.loading\">\n <mat-progress-bar\n [value]=\"100\"\n [mode]=\"state.loading ? 'query' : 'determinate'\"\n [color]=\"state.error ? 'warn' : 'primary'\"\n ></mat-progress-bar>\n </mat-option>\n\n </ng-container>\n</mat-autocomplete>\n\n<ng-template #simpleValueTemplate let-value>\n <ng-container *ngIf=\"displayPropertyResolver$ | async as propertyResolver\">\n <span class=\"noselect\">{{propertyResolver(value)}}</span>\n </ng-container>\n</ng-template>\n" }]
|
|
163
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { valueTemplateQuery: [{
|
|
164
|
+
type: ContentChild,
|
|
165
|
+
args: [ElderSelectValueDirective, { read: TemplateRef, static: true }]
|
|
166
|
+
}], matAutocomplete: [{
|
|
167
|
+
type: ViewChild,
|
|
168
|
+
args: ['auto']
|
|
169
|
+
}], isOptionDisabledFn: [{
|
|
170
|
+
type: Input
|
|
171
|
+
}], isOptionHiddenFn: [{
|
|
172
|
+
type: Input
|
|
173
|
+
}], optionValueConverterFn: [{
|
|
174
|
+
type: Input
|
|
175
|
+
}], optionSelected: [{
|
|
176
|
+
type: Output
|
|
177
|
+
}], enabled: [{
|
|
178
|
+
type: Input
|
|
179
|
+
}], valueTemplate: [{
|
|
180
|
+
type: Input
|
|
181
|
+
}], dataContext: [{
|
|
182
|
+
type: Input
|
|
183
|
+
}], displayPropertyResolver: [{
|
|
184
|
+
type: Input
|
|
185
|
+
}] } });
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQvYXV0b2NvbXBsZXRlL2VsZGVyLWF1dG9jb21wbGV0ZS9lbGRlci1hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC9hdXRvY29tcGxldGUvZWxkZXItYXV0b2NvbXBsZXRlL2VsZGVyLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWtCLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsZUFBZSxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFlLHdCQUF3QixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDekcsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFHakUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7OztBQVdy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RUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQVUvRCxlQUFlO3NCQUR6QixTQUFTO3VCQUFDLE1BQU07Z0JBTVYsa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFJQyxzQkFBc0I7c0JBRDVCLEtBQUs7Z0JBaUJVLGNBQWM7c0JBRDdCLE1BQU07Z0JBK0JJLE9BQU87c0JBRGpCLEtBQUs7Z0JBVUssYUFBYTtzQkFEdkIsS0FBSztnQkFVSyxXQUFXO3NCQURyQixLQUFLO2dCQVVLLHVCQUF1QjtzQkFEakMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBJbnB1dCwgTmdab25lLCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0lEYXRhQ29udGV4dCwgaXNDb250aW51YWJsZURhdGFDb250ZXh0fSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0JztcbmltcG9ydCB7Y29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtmaWx0ZXIsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtydW5JblpvbmV9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi91dGlscy9uZy16b25lLXV0aWxzJztcbmltcG9ydCB7RGF0YUNvbnRleHRTdGF0dXN9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9kYXRhLWNvbnRleHQtc3RhdHVzJztcbmltcG9ydCB7TWF0QXV0b2NvbXBsZXRlLCBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHtFbGRlclNlbGVjdFZhbHVlRGlyZWN0aXZlfSBmcm9tICcuLi8uLi8uLi9zZWxlY3QvZWxkZXItc2VsZWN0LXZhbHVlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0VsZGVyQXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0ZWR9IGZyb20gJy4vZWxkZXItYXV0b2NvbXBsZXRlLW9wdGlvbi1zZWxlY3RlZCc7XG5cbnR5cGUgVGV4dFJlc29sdmVyRm4gPSAodmFsdWU6IGFueSkgPT4gc3RyaW5nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci1hdXRvY29tcGxldGUnLFxuICBleHBvcnRBczogJ2VsZGVyQXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBFbGRlckF1dG9jb21wbGV0ZUNvbXBvbmVudDxUID0gYW55LCBUSWQgPSBhbnk+IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgLyoqXG4gICAqIElzIHRoaXMgYXV0by1jb21wbGV0ZSBlbmFibGVkP1xuICAgKi9cbiAgcHJpdmF0ZSBfZW5hYmxlZCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSB0ZW1wbGF0ZSB0byBjdXN0b21pemUgdGhlIHVpIGxvb2suXG4gICAqL1xuICBAQ29udGVudENoaWxkKEVsZGVyU2VsZWN0VmFsdWVEaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlfSlcbiAgcHVibGljIHZhbHVlVGVtcGxhdGVRdWVyeTogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHJpdmF0ZSBfdmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgTWF0ZXJpYWwgQXV0b2NvbXBsZXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWF0QXV0b2NvbXBsZXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF0QXV0b2NvbXBsZXRlPihudWxsKTtcblxuICBAVmlld0NoaWxkKCdhdXRvJylcbiAgcHVibGljIHNldCBtYXRBdXRvY29tcGxldGUoYXV0bzogTWF0QXV0b2NvbXBsZXRlKSB7XG4gICAgdGhpcy5tYXRBdXRvY29tcGxldGUkLm5leHQoYXV0byk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNPcHRpb25EaXNhYmxlZEZuOiAob3B0aW9uOiBUKSA9PiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc09wdGlvbkhpZGRlbkZuOiAob3B0aW9uOiBUKSA9PiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvcHRpb25WYWx1ZUNvbnZlcnRlckZuOiAob3B0aW9uOiBUKSA9PiBhbnk7XG5cbiAgLyoqXG4gICAqIFRoZSBEYXRhQ29udGV4dCB3aGljaCBob2xkcyB0aGUgYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb25zLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFDb250ZXh0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SURhdGFDb250ZXh0PFQ+PihudWxsKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdHJpZ2dlclJlbG9hZCQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlQcm9wZXJ0eVJlc29sdmVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGV4dFJlc29sdmVyRm4+KCh2YWx1ZTogVCkgPT4gdGhpcy5wcm9wZXJ0eVN0cmluZ1ZhbHVlKHZhbHVlLCBudWxsKSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFTdGF0ZSQ6IE9ic2VydmFibGU8RGF0YUNvbnRleHRTdGF0dXM+O1xuXG4gIHB1YmxpYyByZWFkb25seSBhdmFpbGFibGVTdWdnZXN0aW9ucyQ6IE9ic2VydmFibGU8VFtdPjtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IG9wdGlvblNlbGVjdGVkID0gbmV3IFN1YmplY3Q8RWxkZXJBdXRvY29tcGxldGVPcHRpb25TZWxlY3RlZD4oKTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHpvbmU6IE5nWm9uZSxcbiAgKSB7XG4gICAgdGhpcy5kYXRhU3RhdGUkID0gdGhpcy5kYXRhQ29udGV4dCQucGlwZShcbiAgICAgIGZpbHRlcihkYyA9PiAhIWRjKSxcbiAgICAgIHN3aXRjaE1hcChkYyA9PiBkYy5zdGF0dXMpLFxuICAgICAgcnVuSW5ab25lKHRoaXMuem9uZSlcbiAgICApO1xuXG4gICAgdGhpcy5hdmFpbGFibGVTdWdnZXN0aW9ucyQgPSB0aGlzLmRhdGFDb250ZXh0JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGRjID0+IGRjID8gZGMuZGF0YSA6IG9mKFtdKSksXG4gICAgICBydW5JblpvbmUodGhpcy56b25lKVxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9lbmFibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdmFsdWVUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIHRoaXMuX3ZhbHVlVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWVUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVUZW1wbGF0ZSB8fCB0aGlzLnZhbHVlVGVtcGxhdGVRdWVyeTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGF0YUNvbnRleHQoZGF0YTogSURhdGFDb250ZXh0PFQ+KSB7XG4gICAgdGhpcy5kYXRhQ29udGV4dCQubmV4dChkYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YUNvbnRleHQoKTogSURhdGFDb250ZXh0PFQ+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhQ29udGV4dCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzcGxheVByb3BlcnR5UmVzb2x2ZXIocmVzb2x2ZXI6IFRleHRSZXNvbHZlckZuKSB7XG4gICAgdGhpcy5kaXNwbGF5UHJvcGVydHlSZXNvbHZlciQubmV4dChyZXNvbHZlcik7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgb25PcHRpb25TZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbiA9IGV2ZW50Lm9wdGlvbjtcbiAgICBjb25zdCBpZCA9IG9wdGlvbi5pZCBhcyB1bmtub3duIGFzIFRJZDtcbiAgICB0aGlzLm9wdGlvblNlbGVjdGVkLm5leHQoXG4gICAgICBuZXcgRWxkZXJBdXRvY29tcGxldGVPcHRpb25TZWxlY3RlZChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgaWQsXG4gICAgICAgIHRoaXMuZ2V0RW50aXR5QnlJZChpZCksXG4gICAgICAgIG9wdGlvbi52YWx1ZVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEVudGl0eUJ5SWQoaWQ6IFRJZCk6IFQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGRjID0gdGhpcy5kYXRhQ29udGV4dDtcbiAgICBpZihkYyl7XG4gICAgICByZXR1cm4gZGMuc25hcHNob3QuZGF0YS5maW5kKGUgPT4gdGhpcy5nZXRJZChlKSA9PSBpZCk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgb25BdXRvY29tcGxldGVPcGVuZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdBdXRvY29tcGxldGUgb3BlbmVkOicsIGV2ZW50KTtcbiAgICBpZiAodGhpcy5lbmFibGVkKSB7XG4gICAgICB0aGlzLnRyaWdnZXJSZWxvYWQkLm5leHQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQXV0b0NvbXBsZXRlQ2xvc2VUb0VuZChldmVudDogVUlFdmVudCk6IHZvaWQge1xuICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdBdXRvY29tcGxldGUgaXMgY2xvc2UgdG8gZW5kIScpO1xuICAgIGlmIChpc0NvbnRpbnVhYmxlRGF0YUNvbnRleHQodGhpcy5kYXRhQ29udGV4dCkpIHtcbiAgICAgIGlmICghdGhpcy5kYXRhQ29udGV4dC5zbmFwc2hvdC5pc0xvYWRpbmcpIHtcbiAgICAgICAgdGhpcy5kYXRhQ29udGV4dC5sb2FkTW9yZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRJZEFzU3RyaW5nKHZhbHVlOiBUKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nKHRoaXMuZ2V0SWQodmFsdWUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJZCh2YWx1ZTogVCk6IFRJZCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YUNvbnRleHQ/LmRhdGFTb3VyY2U/LmdldElkKHZhbHVlKSB8fCB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBpc09wdGlvbkF2YWlsYWJsZShvcHRpb246IFQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc09wdGlvbkRpc2FibGVkRm4pIHtcbiAgICAgIHJldHVybiAhdGhpcy5pc09wdGlvbkRpc2FibGVkRm4ob3B0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzT3B0aW9uVmlzaWJsZShvcHRpb246IFQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc09wdGlvbkhpZGRlbkZuKSB7XG4gICAgICByZXR1cm4gIXRoaXMuaXNPcHRpb25IaWRkZW5GbihvcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9PcHRpb25WYWx1ZShvcHRpb246IFQpOiBhbnkge1xuICAgIGlmICh0aGlzLm9wdGlvblZhbHVlQ29udmVydGVyRm4pIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvblZhbHVlQ29udmVydGVyRm4ob3B0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogVE9ETyBEdXBsaWNhdGUgaW4gZWxkZXItc2VsZWN0XG4gICAqL1xuICBwcml2YXRlIHByb3BlcnR5U3RyaW5nVmFsdWUodmFsdWU6IFQsIHByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICByZXR1cm4gKDxhbnk+dmFsdWUpW3Byb3BlcnR5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfVxufVxuIiwiPG1hdC1hdXRvY29tcGxldGVcbiAgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxuICBwYW5lbFdpZHRoPVwiYXV0b1wiXG4gIFthdXRvQWN0aXZlRmlyc3RPcHRpb25dPVwidHJ1ZVwiXG4gIChvcGVuZWQpPVwib25BdXRvY29tcGxldGVPcGVuZWQoJGV2ZW50KVwiXG4gIChvcHRpb25TZWxlY3RlZCk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudClcIlxuICBlbGRlckluZmluaXRlU2Nyb2xsIGVsZGVyRWxkZXJJbmZpbml0ZUF1dG9jb21wbGV0ZSAoY2xvc2VUb0VuZCk9XCJvbkF1dG9Db21wbGV0ZUNsb3NlVG9FbmQoJGV2ZW50KVwiXG4+XG4gIDwhLS1cbiAgPG1hdC1vcHRpb24gKm5nSWY9XCJhbGxvd051bGxcIiBbdmFsdWVdPVwibnVsbFwiPnt7bnVsbERpc3BsYXkgfCB0cmFuc2xhdGV9fTwvbWF0LW9wdGlvbj5cbiAgLS0+XG5cbiAgPG1hdC1vcHRpb24gZGlzYWJsZWQgICpuZ0lmPVwiIShkYXRhQ29udGV4dCQgfCBhc3luYylcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm1hdC1jYXB0aW9uXCI+Tm8gRGF0YVNvdXJjZSAvIERhdGFDb250ZXh0ITwvc3Bhbj5cbiAgPC9tYXQtb3B0aW9uPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhQ29udGV4dCQgfCBhc3luYyBhcyBkY1wiPlxuXG4gICAgPG1hdC1vcHRpb24gZGlzYWJsZWQgICpuZ0lmPVwiZGMuaXNDbG9zZWRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtcm93IHBsYWNlLXN0YXJ0LWNlbnRlciBnYXAtc21cIj5cbiAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwid2FyblwiPndhcm5pbmc8L21hdC1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1jYXB0aW9uXCI+RGF0YUNvbnRleHQgQ2xvc2VkITwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LW9wdGlvbj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdmFpbGFibGVTdWdnZXN0aW9ucyQgfCBhc3luYyBhcyBzdWdnZXN0aW9uc1wiPlxuXG4gICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cInN1Z2dlc3Rpb25zLmxlbmd0aCA9PT0gMFwiIGRpc2FibGVkPlxuICAgICAgICBObyBEYXRhLlxuICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWdnZXN0aW9uIG9mIHN1Z2dlc3Rpb25zXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgKm5nSWY9XCJpc09wdGlvblZpc2libGUoc3VnZ2VzdGlvbilcIlxuICAgICAgICAgIFt2YWx1ZV09XCJ0b09wdGlvblZhbHVlKHN1Z2dlc3Rpb24pXCJcbiAgICAgICAgICBbaWRdPVwiZ2V0SWRBc1N0cmluZyhzdWdnZXN0aW9uKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc09wdGlvbkF2YWlsYWJsZShzdWdnZXN0aW9uKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInZhbHVlVGVtcGxhdGUgfHwgc2ltcGxlVmFsdWVUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogc3VnZ2VzdGlvbn1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8IS0tXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtY2FwdGlvblwiPnZhbHVlOiB7e3RvT3B0aW9uVmFsdWUoc3VnZ2VzdGlvbil9fTwvc3Bhbj5cbiAgICAgICAgICAtLT5cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhU3RhdGUkIHwgYXN5bmMgYXMgc3RhdGVcIj5cblxuICAgIDxtYXQtb3B0aW9uIGRpc2FibGVkICpuZ0lmPVwiIXN0YXRlLmlkbGUgfHwgc3RhdGUubG9hZGluZ1wiPlxuICAgICAgPG1hdC1wcm9ncmVzcy1iYXJcbiAgICAgICAgW3ZhbHVlXT1cIjEwMFwiXG4gICAgICAgIFttb2RlXT1cInN0YXRlLmxvYWRpbmcgPyAncXVlcnknIDogJ2RldGVybWluYXRlJ1wiXG4gICAgICAgIFtjb2xvcl09XCJzdGF0ZS5lcnJvciA/ICd3YXJuJyA6ICdwcmltYXJ5J1wiXG4gICAgICA+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgIDwvbWF0LW9wdGlvbj5cblxuICA8L25nLWNvbnRhaW5lcj5cbjwvbWF0LWF1dG9jb21wbGV0ZT5cblxuPG5nLXRlbXBsYXRlICNzaW1wbGVWYWx1ZVRlbXBsYXRlIGxldC12YWx1ZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlQcm9wZXJ0eVJlc29sdmVyJCB8IGFzeW5jIGFzIHByb3BlcnR5UmVzb2x2ZXJcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm5vc2VsZWN0XCI+e3twcm9wZXJ0eVJlc29sdmVyKHZhbHVlKX19PC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { Directive, HostListener, Input } from '@angular/core';
|
|
2
|
+
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
3
|
+
import { merge, Subject } from 'rxjs';
|
|
4
|
+
import { debounceTime, filter, map, skipWhile, takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { Filter } from '../../../common/data/filters/filter';
|
|
6
|
+
import { WordPositionFinder } from './many/word-position-finder';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/material/autocomplete";
|
|
9
|
+
export class ElderAutocompleteManyDirective {
|
|
10
|
+
/***************************************************************************
|
|
11
|
+
* *
|
|
12
|
+
* Constructor *
|
|
13
|
+
* *
|
|
14
|
+
**************************************************************************/
|
|
15
|
+
constructor(autoCompleteTrigger, inputRef) {
|
|
16
|
+
this.autoCompleteTrigger = autoCompleteTrigger;
|
|
17
|
+
this.inputRef = inputRef;
|
|
18
|
+
/***************************************************************************
|
|
19
|
+
* *
|
|
20
|
+
* Fields *
|
|
21
|
+
* *
|
|
22
|
+
**************************************************************************/
|
|
23
|
+
this.queryFilter = 'query';
|
|
24
|
+
this.filters = [];
|
|
25
|
+
this.sorts = [];
|
|
26
|
+
this.textPropertyResolverFn = (option) => {
|
|
27
|
+
if (!option) {
|
|
28
|
+
return option;
|
|
29
|
+
}
|
|
30
|
+
else if (typeof option === 'string') {
|
|
31
|
+
return option;
|
|
32
|
+
}
|
|
33
|
+
else if (this.textProperty) {
|
|
34
|
+
return option[this.textProperty];
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
this.inputKeyup$ = new Subject();
|
|
41
|
+
this.ignoreKeys = ['ArrowRight', 'ArrowUp', 'ArrowDown', 'ArrowLeft'];
|
|
42
|
+
this.log = LoggerFactory.getLogger(this.constructor.name);
|
|
43
|
+
this.destroy$ = new Subject();
|
|
44
|
+
this.destroyAutocompleteBinding$ = new Subject();
|
|
45
|
+
this.wordFinder = new WordPositionFinder();
|
|
46
|
+
}
|
|
47
|
+
/***************************************************************************
|
|
48
|
+
* *
|
|
49
|
+
* Properties *
|
|
50
|
+
* *
|
|
51
|
+
**************************************************************************/
|
|
52
|
+
set autocomplete(auto) {
|
|
53
|
+
this._elderAutocomplete = auto;
|
|
54
|
+
this.destroyAutocompleteBinding$.next();
|
|
55
|
+
if (auto) {
|
|
56
|
+
auto.matAutocomplete$
|
|
57
|
+
.pipe(takeUntil(this.destroyAutocompleteBinding$), filter(matAuto => !!matAuto))
|
|
58
|
+
.subscribe(matAuto => this.autoCompleteTrigger.autocomplete = matAuto);
|
|
59
|
+
auto.optionSelected.pipe(takeUntil(this.destroyAutocompleteBinding$)).subscribe(event => this.onOptionSelected(event));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
get autocomplete() {
|
|
63
|
+
return this._elderAutocomplete;
|
|
64
|
+
}
|
|
65
|
+
get cursorPosition() {
|
|
66
|
+
if (this.inputRef?.nativeElement) {
|
|
67
|
+
return this.inputRef.nativeElement.selectionStart;
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
set cursorPosition(position) {
|
|
72
|
+
if (this.inputRef?.nativeElement) {
|
|
73
|
+
this.inputRef.nativeElement.selectionStart = position;
|
|
74
|
+
this.inputRef.nativeElement.selectionEnd = position;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
get dataContext() {
|
|
78
|
+
return this._elderAutocomplete.dataContext;
|
|
79
|
+
}
|
|
80
|
+
/***************************************************************************
|
|
81
|
+
* *
|
|
82
|
+
* Host Listener *
|
|
83
|
+
* *
|
|
84
|
+
**************************************************************************/
|
|
85
|
+
onKeyUp(event) {
|
|
86
|
+
if (this.ignoreKeys.some(k => k === event.key)) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
this.inputKeyup$.next(event);
|
|
90
|
+
}
|
|
91
|
+
/***************************************************************************
|
|
92
|
+
* *
|
|
93
|
+
* Life Cycle *
|
|
94
|
+
* *
|
|
95
|
+
**************************************************************************/
|
|
96
|
+
ngOnInit() {
|
|
97
|
+
this._elderAutocomplete.displayPropertyResolver = this.textPropertyResolverFn;
|
|
98
|
+
this._elderAutocomplete.optionValueConverterFn = (option) => {
|
|
99
|
+
const suggestion = this.resolveSuggestionText(option);
|
|
100
|
+
return this.insertSuggestion(suggestion);
|
|
101
|
+
};
|
|
102
|
+
merge(this.inputKeyup$.pipe(skipWhile(e => !this._elderAutocomplete.enabled), debounceTime(150), map(e => e?.target?.value), map(value => this.extractWordAtCursor(value))), this.autocomplete.triggerReload$).pipe(takeUntil(this.destroy$), filter(value => !value || typeof (value) === 'string' || typeof (value) === 'number')).subscribe(value => this.updateSuggestions(value));
|
|
103
|
+
}
|
|
104
|
+
ngOnDestroy() {
|
|
105
|
+
this.destroy$.next();
|
|
106
|
+
this.destroy$.complete();
|
|
107
|
+
this.destroyAutocompleteBinding$.next();
|
|
108
|
+
this.destroyAutocompleteBinding$.complete();
|
|
109
|
+
}
|
|
110
|
+
/***************************************************************************
|
|
111
|
+
* *
|
|
112
|
+
* Private methods *
|
|
113
|
+
* *
|
|
114
|
+
**************************************************************************/
|
|
115
|
+
extractWordAtCursor(value) {
|
|
116
|
+
if (this.cursorPosition) {
|
|
117
|
+
const cursor = this.cursorPosition;
|
|
118
|
+
return this.extractWordFrom(value, cursor);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
rememberCursorPosition() {
|
|
125
|
+
this.cursorBeforeAutocomplete = this.cursorPosition;
|
|
126
|
+
}
|
|
127
|
+
extractWordFrom(text, position) {
|
|
128
|
+
const word = this.wordFinder.findWord(text, position);
|
|
129
|
+
return word.value;
|
|
130
|
+
}
|
|
131
|
+
updateSuggestions(value) {
|
|
132
|
+
const filters = [...this.filters, new Filter(this.queryFilter, value)];
|
|
133
|
+
const sorts = this.sorts;
|
|
134
|
+
if (this.dataContext) {
|
|
135
|
+
try {
|
|
136
|
+
this.rememberCursorPosition();
|
|
137
|
+
this.dataContext.start(sorts, filters);
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
this.log.error('Failed to start DataContext!', err);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
insertSuggestion(suggestion) {
|
|
145
|
+
const currentValue = this.currentInputValue();
|
|
146
|
+
if (!suggestion) {
|
|
147
|
+
return currentValue;
|
|
148
|
+
}
|
|
149
|
+
if (this.cursorPosition !== undefined) {
|
|
150
|
+
const cursor = this.cursorPosition;
|
|
151
|
+
const replacement = this.wordFinder.replaceWord(currentValue, cursor, suggestion);
|
|
152
|
+
return replacement.newText;
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
this.log.warn('Insert not possible as no cursor-position was available!');
|
|
156
|
+
return currentValue;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
currentInputValue() {
|
|
160
|
+
const input = this.inputRef?.nativeElement;
|
|
161
|
+
return input?.value ?? '';
|
|
162
|
+
}
|
|
163
|
+
resolveSuggestionText(option) {
|
|
164
|
+
return this.textPropertyResolverFn(option);
|
|
165
|
+
}
|
|
166
|
+
onOptionSelected(event) {
|
|
167
|
+
const wordAtCursor = this.wordFinder.findWord(this.currentInputValue(), this.cursorBeforeAutocomplete);
|
|
168
|
+
const autocompletedPhrase = this.resolveSuggestionText(event.entity);
|
|
169
|
+
// The wordAtCursor might not be the full autocompleted phrase (if there are multiple words)
|
|
170
|
+
this.cursorPosition = wordAtCursor.start + autocompletedPhrase.length;
|
|
171
|
+
}
|
|
172
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderAutocompleteManyDirective, deps: [{ token: i1.MatAutocompleteTrigger }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
173
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: ElderAutocompleteManyDirective, selector: "[elderAutocompleteMany]", inputs: { queryFilter: "queryFilter", filters: "filters", sorts: "sorts", textProperty: "textProperty", textPropertyResolverFn: "textPropertyResolverFn", autocomplete: ["elderAutocompleteMany", "autocomplete"] }, host: { listeners: { "keyup": "onKeyUp($event)" } }, ngImport: i0 }); }
|
|
174
|
+
}
|
|
175
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderAutocompleteManyDirective, decorators: [{
|
|
176
|
+
type: Directive,
|
|
177
|
+
args: [{
|
|
178
|
+
selector: '[elderAutocompleteMany]'
|
|
179
|
+
}]
|
|
180
|
+
}], ctorParameters: function () { return [{ type: i1.MatAutocompleteTrigger }, { type: i0.ElementRef }]; }, propDecorators: { queryFilter: [{
|
|
181
|
+
type: Input
|
|
182
|
+
}], filters: [{
|
|
183
|
+
type: Input
|
|
184
|
+
}], sorts: [{
|
|
185
|
+
type: Input
|
|
186
|
+
}], textProperty: [{
|
|
187
|
+
type: Input
|
|
188
|
+
}], textPropertyResolverFn: [{
|
|
189
|
+
type: Input
|
|
190
|
+
}], autocomplete: [{
|
|
191
|
+
type: Input,
|
|
192
|
+
args: ['elderAutocompleteMany']
|
|
193
|
+
}], onKeyUp: [{
|
|
194
|
+
type: HostListener,
|
|
195
|
+
args: ['keyup', ['$event']]
|
|
196
|
+
}] } });
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYXV0b2NvbXBsZXRlLW1hbnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC9hdXRvY29tcGxldGUvZWxkZXItYXV0b2NvbXBsZXRlLW1hbnkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBUSxLQUFLLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHL0UsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBSTNELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7QUFNL0QsTUFBTSxPQUFPLDhCQUE4QjtJQStDekM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ21CLG1CQUEyQyxFQUMzQyxRQUFzQztRQUR0Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXdCO1FBQzNDLGFBQVEsR0FBUixRQUFRLENBQThCO1FBdER6RDs7OztvRkFJNEU7UUFHckUsZ0JBQVcsR0FBRyxPQUFPLENBQUM7UUFHdEIsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUd2QixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBVW5CLDJCQUFzQixHQUFtQixDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQzlELElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1gsT0FBTyxNQUFNLENBQUM7YUFDZjtpQkFBTSxJQUFJLE9B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QUE4QjtrR0FBOUIsOEJBQThCOzsyRkFBOUIsOEJBQThCO2tCQUgxQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7aUJBQ3BDO3NJQVNRLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFRQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLHNCQUFzQjtzQkFENUIsS0FBSztnQkE0Q0ssWUFBWTtzQkFEdEIsS0FBSzt1QkFBQyx1QkFBdUI7Z0JBK0N2QixPQUFPO3NCQURiLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtFTVBUWSwgbWVyZ2UsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBza2lwV2hpbGUsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtFbGRlckF1dG9jb21wbGV0ZUNvbXBvbmVudH0gZnJvbSAnLi9lbGRlci1hdXRvY29tcGxldGUvZWxkZXItYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQge01hdEF1dG9jb21wbGV0ZVRyaWdnZXJ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQge0ZpbHRlcn0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2RhdGEvZmlsdGVycy9maWx0ZXInO1xuaW1wb3J0IHtTb3J0fSBmcm9tICcuLi8uLi8uLi9jb21tb24vZGF0YS9zb3J0JztcbmltcG9ydCB7SURhdGFDb250ZXh0fSBmcm9tICcuLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0JztcbmltcG9ydCB7VGV4dFJlc29sdmVyRm59IGZyb20gJy4uLy4uL3NlbGVjdC9lbGRlci1zZWxlY3QtYmFzZSc7XG5pbXBvcnQge1dvcmRQb3NpdGlvbkZpbmRlcn0gZnJvbSAnLi9tYW55L3dvcmQtcG9zaXRpb24tZmluZGVyJztcbmltcG9ydCB7RWxkZXJBdXRvY29tcGxldGVPcHRpb25TZWxlY3RlZH0gZnJvbSAnLi9lbGRlci1hdXRvY29tcGxldGUvZWxkZXItYXV0b2NvbXBsZXRlLW9wdGlvbi1zZWxlY3RlZCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tlbGRlckF1dG9jb21wbGV0ZU1hbnldJ1xufSlcbmV4cG9ydCBjbGFzcyBFbGRlckF1dG9jb21wbGV0ZU1hbnlEaXJlY3RpdmU8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBxdWVyeUZpbHRlciA9ICdxdWVyeSc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGZpbHRlcnM6IEZpbHRlcltdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNvcnRzOiBTb3J0W10gPSBbXTtcblxuICAvKipcbiAgICogVGhlIHByb3BlcnR5IG9uIGEgc3VnZ2VzdGlvbiBvYmplY3Qgd2hpY2ggaXMgdXNlZFxuICAgKiBhcyB0aGUgZGlzcGxheSBhbmQgaW5zZXJ0IHZhbHVlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHRleHRQcm9wZXJ0eTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0ZXh0UHJvcGVydHlSZXNvbHZlckZuOiBUZXh0UmVzb2x2ZXJGbiA9IChvcHRpb246IGFueSkgPT4ge1xuICAgIGlmICghb3B0aW9uKSB7XG4gICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBvcHRpb24gYXMgc3RyaW5nO1xuICAgIH0gZWxzZSBpZiAodGhpcy50ZXh0UHJvcGVydHkpIHtcbiAgICAgIHJldHVybiBvcHRpb25bdGhpcy50ZXh0UHJvcGVydHldIGFzIHN0cmluZztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IGlucHV0S2V5dXAkID0gbmV3IFN1YmplY3Q8S2V5Ym9hcmRFdmVudD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGlnbm9yZUtleXMgPSBbJ0Fycm93UmlnaHQnLCAnQXJyb3dVcCcsICdBcnJvd0Rvd24nLCAnQXJyb3dMZWZ0J107XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcbiAgcHJpdmF0ZSByZWFkb25seSB3b3JkRmluZGVyOiBXb3JkUG9zaXRpb25GaW5kZXI7XG5cbiAgcHJpdmF0ZSBfZWxkZXJBdXRvY29tcGxldGU6IEVsZGVyQXV0b2NvbXBsZXRlQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lBdXRvY29tcGxldGVCaW5kaW5nJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRvQ29tcGxldGVUcmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD5cbiAgKSB7XG4gICAgdGhpcy53b3JkRmluZGVyID0gbmV3IFdvcmRQb3NpdGlvbkZpbmRlcigpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQElucHV0KCdlbGRlckF1dG9jb21wbGV0ZU1hbnknKVxuICBwdWJsaWMgc2V0IGF1dG9jb21wbGV0ZShhdXRvOiBFbGRlckF1dG9jb21wbGV0ZUNvbXBvbmVudCkge1xuICAgIHRoaXMuX2VsZGVyQXV0b2NvbXBsZXRlID0gYXV0bztcbiAgICB0aGlzLmRlc3Ryb3lBdXRvY29tcGxldGVCaW5kaW5nJC5uZXh0KCk7XG4gICAgaWYgKGF1dG8pIHtcbiAgICAgIGF1dG8ubWF0QXV0b2NvbXBsZXRlJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95QXV0b2NvbXBsZXRlQmluZGluZyQpLFxuICAgICAgICAgIGZpbHRlcihtYXRBdXRvID0+ICEhbWF0QXV0bylcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKG1hdEF1dG8gPT4gdGhpcy5hdXRvQ29tcGxldGVUcmlnZ2VyLmF1dG9jb21wbGV0ZSA9IG1hdEF1dG8pO1xuXG4gICAgICBhdXRvLm9wdGlvblNlbGVjdGVkLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lBdXRvY29tcGxldGVCaW5kaW5nJClcbiAgICAgICkuc3Vic2NyaWJlKGV2ZW50ID0+IHRoaXMub25PcHRpb25TZWxlY3RlZChldmVudCkpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBhdXRvY29tcGxldGUoKTogRWxkZXJBdXRvY29tcGxldGVDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLl9lbGRlckF1dG9jb21wbGV0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGN1cnNvclBvc2l0aW9uKCk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh0aGlzLmlucHV0UmVmPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IGN1cnNvclBvc2l0aW9uKHBvc2l0aW9uOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5pbnB1dFJlZj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID0gcG9zaXRpb247XG4gICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID0gcG9zaXRpb247XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZGF0YUNvbnRleHQoKTogSURhdGFDb250ZXh0PGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9lbGRlckF1dG9jb21wbGV0ZS5kYXRhQ29udGV4dDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBIb3N0IExpc3RlbmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pZ25vcmVLZXlzLnNvbWUoayA9PiBrID09PSBldmVudC5rZXkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW5wdXRLZXl1cCQubmV4dChldmVudCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZWxkZXJBdXRvY29tcGxldGUuZGlzcGxheVByb3BlcnR5UmVzb2x2ZXIgPSB0aGlzLnRleHRQcm9wZXJ0eVJlc29sdmVyRm47XG4gICAgdGhpcy5fZWxkZXJBdXRvY29tcGxldGUub3B0aW9uVmFsdWVDb252ZXJ0ZXJGbiA9IChvcHRpb246IFQpID0+IHtcbiAgICAgIGNvbnN0IHN1Z2dlc3Rpb24gPSB0aGlzLnJlc29sdmVTdWdnZXN0aW9uVGV4dChvcHRpb24pO1xuICAgICAgcmV0dXJuIHRoaXMuaW5zZXJ0U3VnZ2VzdGlvbihzdWdnZXN0aW9uKTtcbiAgICB9O1xuXG4gICAgbWVyZ2UoXG4gICAgICB0aGlzLmlucHV0S2V5dXAkLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZShlID0+ICF0aGlzLl9lbGRlckF1dG9jb21wbGV0ZS5lbmFibGVkKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDE1MCksXG4gICAgICAgIG1hcChlID0+IChlPy50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCk/LnZhbHVlKSxcbiAgICAgICAgbWFwKHZhbHVlID0+IHRoaXMuZXh0cmFjdFdvcmRBdEN1cnNvcih2YWx1ZSkpXG4gICAgICApLFxuICAgICAgdGhpcy5hdXRvY29tcGxldGUudHJpZ2dlclJlbG9hZCRcbiAgICApLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICBmaWx0ZXIodmFsdWUgPT4gIXZhbHVlIHx8IHR5cGVvZiAodmFsdWUpID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgKHZhbHVlKSA9PT0gJ251bWJlcicpXG4gICAgKS5zdWJzY3JpYmUoXG4gICAgICB2YWx1ZSA9PiB0aGlzLnVwZGF0ZVN1Z2dlc3Rpb25zKHZhbHVlKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuZGVzdHJveUF1dG9jb21wbGV0ZUJpbmRpbmckLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3lBdXRvY29tcGxldGVCaW5kaW5nJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblxuICBwcml2YXRlIGV4dHJhY3RXb3JkQXRDdXJzb3IodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY3Vyc29yUG9zaXRpb24pIHtcbiAgICAgIGNvbnN0IGN1cnNvciA9IHRoaXMuY3Vyc29yUG9zaXRpb247XG4gICAgICByZXR1cm4gdGhpcy5leHRyYWN0V29yZEZyb20odmFsdWUsIGN1cnNvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3Vyc29yQmVmb3JlQXV0b2NvbXBsZXRlOiBudW1iZXI7XG4gIHByaXZhdGUgcmVtZW1iZXJDdXJzb3JQb3NpdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnNvckJlZm9yZUF1dG9jb21wbGV0ZSA9IHRoaXMuY3Vyc29yUG9zaXRpb247XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RXb3JkRnJvbSh0ZXh0OiBzdHJpbmcsIHBvc2l0aW9uOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHdvcmQgPSB0aGlzLndvcmRGaW5kZXIuZmluZFdvcmQodGV4dCwgcG9zaXRpb24pO1xuICAgIHJldHVybiB3b3JkLnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdWdnZXN0aW9ucyh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlcnMgPSBbLi4udGhpcy5maWx0ZXJzLCBuZXcgRmlsdGVyKHRoaXMucXVlcnlGaWx0ZXIsIDxhbnk+dmFsdWUpXTtcbiAgICBjb25zdCBzb3J0cyA9IHRoaXMuc29ydHM7XG4gICAgaWYgKHRoaXMuZGF0YUNvbnRleHQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMucmVtZW1iZXJDdXJzb3JQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLmRhdGFDb250ZXh0LnN0YXJ0KHNvcnRzLCBmaWx0ZXJzKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmxvZy5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IERhdGFDb250ZXh0IScsIGVycik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbnNlcnRTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5jdXJyZW50SW5wdXRWYWx1ZSgpO1xuICAgIGlmKCFzdWdnZXN0aW9uKXtcbiAgICAgIHJldHVybiBjdXJyZW50VmFsdWU7XG4gICAgfVxuICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGN1cnNvciA9IHRoaXMuY3Vyc29yUG9zaXRpb247XG4gICAgICBjb25zdCByZXBsYWNlbWVudCA9IHRoaXMud29yZEZpbmRlci5yZXBsYWNlV29yZChjdXJyZW50VmFsdWUsIGN1cnNvciwgc3VnZ2VzdGlvbik7XG4gICAgICByZXR1cm4gcmVwbGFjZW1lbnQubmV3VGV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2cud2FybignSW5zZXJ0IG5vdCBwb3NzaWJsZSBhcyBubyBjdXJzb3ItcG9zaXRpb24gd2FzIGF2YWlsYWJsZSEnKTtcbiAgICAgIHJldHVybiBjdXJyZW50VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjdXJyZW50SW5wdXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dFJlZj8ubmF0aXZlRWxlbWVudDtcbiAgICByZXR1cm4gaW5wdXQ/LnZhbHVlID8/ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlU3VnZ2VzdGlvblRleHQob3B0aW9uOiBUKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0UHJvcGVydHlSZXNvbHZlckZuKG9wdGlvbik7XG4gIH1cblxuICBwcml2YXRlIG9uT3B0aW9uU2VsZWN0ZWQoXG4gICAgZXZlbnQ6IEVsZGVyQXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0ZWRcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgd29yZEF0Q3Vyc29yID0gdGhpcy53b3JkRmluZGVyLmZpbmRXb3JkKHRoaXMuY3VycmVudElucHV0VmFsdWUoKSwgdGhpcy5jdXJzb3JCZWZvcmVBdXRvY29tcGxldGUpO1xuICAgIGNvbnN0IGF1dG9jb21wbGV0ZWRQaHJhc2UgPSB0aGlzLnJlc29sdmVTdWdnZXN0aW9uVGV4dChldmVudC5lbnRpdHkpO1xuICAgIC8vIFRoZSB3b3JkQXRDdXJzb3IgbWlnaHQgbm90IGJlIHRoZSBmdWxsIGF1dG9jb21wbGV0ZWQgcGhyYXNlIChpZiB0aGVyZSBhcmUgbXVsdGlwbGUgd29yZHMpXG4gICAgdGhpcy5jdXJzb3JQb3NpdGlvbiA9IHdvcmRBdEN1cnNvci5zdGFydCArIGF1dG9jb21wbGV0ZWRQaHJhc2UubGVuZ3RoO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Directive, HostListener, Input } from '@angular/core';
|
|
2
|
+
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
3
|
+
import { merge, Subject } from 'rxjs';
|
|
4
|
+
import { debounceTime, filter, map, skipWhile, takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { Filter } from '../../../common/data/filters/filter';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/material/autocomplete";
|
|
8
|
+
export class ElderAutocompleteDirective {
|
|
9
|
+
/***************************************************************************
|
|
10
|
+
* *
|
|
11
|
+
* Constructor *
|
|
12
|
+
* *
|
|
13
|
+
**************************************************************************/
|
|
14
|
+
constructor(autoCompleteTrigger) {
|
|
15
|
+
this.autoCompleteTrigger = autoCompleteTrigger;
|
|
16
|
+
/***************************************************************************
|
|
17
|
+
* *
|
|
18
|
+
* Fields *
|
|
19
|
+
* *
|
|
20
|
+
**************************************************************************/
|
|
21
|
+
this.logger = LoggerFactory.getLogger(this.constructor.name);
|
|
22
|
+
this.ignoreKeys = ['ArrowRight', 'ArrowUp', 'ArrowDown', 'ArrowLeft'];
|
|
23
|
+
this.inputKeyup$ = new Subject();
|
|
24
|
+
this.queryFilter = 'query';
|
|
25
|
+
this.filters = [];
|
|
26
|
+
this.sorts = [];
|
|
27
|
+
this.destroyMatAutoBinding$ = new Subject();
|
|
28
|
+
this.destroy$ = new Subject();
|
|
29
|
+
}
|
|
30
|
+
/***************************************************************************
|
|
31
|
+
* *
|
|
32
|
+
* Host Listener *
|
|
33
|
+
* *
|
|
34
|
+
**************************************************************************/
|
|
35
|
+
onKeyUp(event) {
|
|
36
|
+
if (this.ignoreKeys.some(k => k === event.key)) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
this.inputKeyup$.next(event);
|
|
40
|
+
}
|
|
41
|
+
/***************************************************************************
|
|
42
|
+
* *
|
|
43
|
+
* Life Cycle *
|
|
44
|
+
* *
|
|
45
|
+
**************************************************************************/
|
|
46
|
+
ngOnInit() {
|
|
47
|
+
merge(this.inputKeyup$.pipe(skipWhile(e => !this._elderAutocomplete.enabled), debounceTime(150), map(e => e?.target?.value)), this.autocomplete.triggerReload$).pipe(takeUntil(this.destroy$), filter(value => !value || typeof (value) === 'string' || typeof (value) === 'number')).subscribe(value => this.updateSuggestions(value));
|
|
48
|
+
}
|
|
49
|
+
ngOnDestroy() {
|
|
50
|
+
this.destroy$.next();
|
|
51
|
+
this.destroy$.complete();
|
|
52
|
+
this.destroyMatAutoBinding$.next();
|
|
53
|
+
this.destroyMatAutoBinding$.complete();
|
|
54
|
+
}
|
|
55
|
+
/***************************************************************************
|
|
56
|
+
* *
|
|
57
|
+
* Properties *
|
|
58
|
+
* *
|
|
59
|
+
**************************************************************************/
|
|
60
|
+
set autocomplete(auto) {
|
|
61
|
+
this._elderAutocomplete = auto;
|
|
62
|
+
this.destroyMatAutoBinding$.next();
|
|
63
|
+
if (auto) {
|
|
64
|
+
auto.matAutocomplete$
|
|
65
|
+
.pipe(takeUntil(this.destroyMatAutoBinding$), filter(matAuto => !!matAuto))
|
|
66
|
+
.subscribe(matAuto => this.autoCompleteTrigger.autocomplete = matAuto);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
get autocomplete() {
|
|
70
|
+
return this._elderAutocomplete;
|
|
71
|
+
}
|
|
72
|
+
get dataContext() {
|
|
73
|
+
return this._elderAutocomplete.dataContext;
|
|
74
|
+
}
|
|
75
|
+
/***************************************************************************
|
|
76
|
+
* *
|
|
77
|
+
* Private methods *
|
|
78
|
+
* *
|
|
79
|
+
**************************************************************************/
|
|
80
|
+
updateSuggestions(value) {
|
|
81
|
+
const filters = [...this.filters, new Filter(this.queryFilter, value)];
|
|
82
|
+
const sorts = this.sorts;
|
|
83
|
+
if (this.dataContext) {
|
|
84
|
+
try {
|
|
85
|
+
this.dataContext.start(sorts, filters);
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
this.logger.error('Failed to start DC!', err);
|
|
89
|
+
// this.updateState(ElderSelectComponentState.error(err));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderAutocompleteDirective, deps: [{ token: i1.MatAutocompleteTrigger }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
94
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: ElderAutocompleteDirective, selector: "[elderAutocomplete]", inputs: { queryFilter: "queryFilter", filters: "filters", sorts: "sorts", autocomplete: ["elderAutocomplete", "autocomplete"] }, host: { listeners: { "keyup": "onKeyUp($event)" } }, ngImport: i0 }); }
|
|
95
|
+
}
|
|
96
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderAutocompleteDirective, decorators: [{
|
|
97
|
+
type: Directive,
|
|
98
|
+
args: [{
|
|
99
|
+
selector: '[elderAutocomplete]'
|
|
100
|
+
}]
|
|
101
|
+
}], ctorParameters: function () { return [{ type: i1.MatAutocompleteTrigger }]; }, propDecorators: { queryFilter: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], filters: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], sorts: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], onKeyUp: [{
|
|
108
|
+
type: HostListener,
|
|
109
|
+
args: ['keyup', ['$event']]
|
|
110
|
+
}], autocomplete: [{
|
|
111
|
+
type: Input,
|
|
112
|
+
args: ['elderAutocomplete']
|
|
113
|
+
}] } });
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYXV0b2NvbXBsZXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQvYXV0b2NvbXBsZXRlL2VsZGVyLWF1dG9jb21wbGV0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBR25ELE9BQU8sRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHFDQUFxQyxDQUFDOzs7QUFPM0QsTUFBTSxPQUFPLDBCQUEwQjtJQTJCckM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ21CLG1CQUEyQztRQUEzQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXdCO1FBaEM5RDs7OztvRkFJNEU7UUFFM0QsV0FBTSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4RCxlQUFVLEdBQUcsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNsRSxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBR3BELGdCQUFXLEdBQUcsT0FBTyxDQUFDO1FBR3RCLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFHdkIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUlULDJCQUFzQixHQUFHLElBQUks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QUFPLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDOUMsMERBQTBEO2FBQzNEO1NBQ0Y7SUFDSCxDQUFDOzhHQWxJVSwwQkFBMEI7a0dBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFIdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO2lCQUNoQzs2R0FlUSxXQUFXO3NCQURqQixLQUFLO2dCQUlDLE9BQU87c0JBRGIsS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBNEJDLE9BQU87c0JBRGIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBNEN0QixZQUFZO3NCQUR0QixLQUFLO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7TWF0QXV0b2NvbXBsZXRlVHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7RWxkZXJBdXRvY29tcGxldGVDb21wb25lbnR9IGZyb20gJy4vZWxkZXItYXV0b2NvbXBsZXRlL2VsZGVyLWF1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHttZXJnZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHNraXBXaGlsZSwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0ZpbHRlcn0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2RhdGEvZmlsdGVycy9maWx0ZXInO1xuaW1wb3J0IHtJRGF0YUNvbnRleHR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHtTb3J0fSBmcm9tICcuLi8uLi8uLi9jb21tb24vZGF0YS9zb3J0JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2VsZGVyQXV0b2NvbXBsZXRlXSdcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJBdXRvY29tcGxldGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaWdub3JlS2V5cyA9IFsnQXJyb3dSaWdodCcsICdBcnJvd1VwJywgJ0Fycm93RG93bicsICdBcnJvd0xlZnQnXTtcbiAgcHVibGljIHJlYWRvbmx5IGlucHV0S2V5dXAkID0gbmV3IFN1YmplY3Q8S2V5Ym9hcmRFdmVudD4oKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcXVlcnlGaWx0ZXIgPSAncXVlcnknO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzb3J0czogU29ydFtdID0gW107XG5cbiAgcHJpdmF0ZSBfZWxkZXJBdXRvY29tcGxldGU6IEVsZGVyQXV0b2NvbXBsZXRlQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveU1hdEF1dG9CaW5kaW5nJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0b0NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlclxuICApIHtcbiAgfVxuXG5cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogSG9zdCBMaXN0ZW5lciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaWdub3JlS2V5cy5zb21lKGsgPT4gayA9PT0gZXZlbnQua2V5KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlucHV0S2V5dXAkLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIG1lcmdlKFxuICAgICAgdGhpcy5pbnB1dEtleXVwJC5waXBlKFxuICAgICAgICBza2lwV2hpbGUoZSA9PiAhdGhpcy5fZWxkZXJBdXRvY29tcGxldGUuZW5hYmxlZCksXG4gICAgICAgIGRlYm91bmNlVGltZSgxNTApLFxuICAgICAgICBtYXAoZSA9PiAoZT8udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpPy52YWx1ZSksXG4gICAgICApLFxuICAgICAgdGhpcy5hdXRvY29tcGxldGUudHJpZ2dlclJlbG9hZCRcbiAgICApLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICBmaWx0ZXIodmFsdWUgPT4gIXZhbHVlIHx8IHR5cGVvZiAodmFsdWUpID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgKHZhbHVlKSA9PT0gJ251bWJlcicpXG4gICAgKS5zdWJzY3JpYmUoXG4gICAgICB2YWx1ZSA9PiB0aGlzLnVwZGF0ZVN1Z2dlc3Rpb25zKHZhbHVlKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuZGVzdHJveU1hdEF1dG9CaW5kaW5nJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95TWF0QXV0b0JpbmRpbmckLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoJ2VsZGVyQXV0b2NvbXBsZXRlJylcbiAgcHVibGljIHNldCBhdXRvY29tcGxldGUoYXV0bzogRWxkZXJBdXRvY29tcGxldGVDb21wb25lbnQpIHtcbiAgICB0aGlzLl9lbGRlckF1dG9jb21wbGV0ZSA9IGF1dG87XG4gICAgdGhpcy5kZXN0cm95TWF0QXV0b0JpbmRpbmckLm5leHQoKTtcbiAgICBpZiAoYXV0bykge1xuICAgICAgYXV0by5tYXRBdXRvY29tcGxldGUkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lNYXRBdXRvQmluZGluZyQpLFxuICAgICAgICAgIGZpbHRlcihtYXRBdXRvID0+ICEhbWF0QXV0bylcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIG1hdEF1dG8gPT4gdGhpcy5hdXRvQ29tcGxldGVUcmlnZ2VyLmF1dG9jb21wbGV0ZSA9IG1hdEF1dG9cbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGF1dG9jb21wbGV0ZSgpOiBFbGRlckF1dG9jb21wbGV0ZUNvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZGVyQXV0b2NvbXBsZXRlO1xuICB9XG5cbiAgcHVibGljIGdldCBkYXRhQ29udGV4dCgpOiBJRGF0YUNvbnRleHQ8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZGVyQXV0b2NvbXBsZXRlLmRhdGFDb250ZXh0O1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSB1cGRhdGVTdWdnZXN0aW9ucyh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlcnMgPSBbLi4udGhpcy5maWx0ZXJzLCBuZXcgRmlsdGVyKHRoaXMucXVlcnlGaWx0ZXIsIDxhbnk+dmFsdWUpXTtcbiAgICBjb25zdCBzb3J0cyA9IHRoaXMuc29ydHM7XG4gICAgaWYgKHRoaXMuZGF0YUNvbnRleHQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuZGF0YUNvbnRleHQuc3RhcnQoc29ydHMsIGZpbHRlcnMpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgREMhJywgZXJyKTtcbiAgICAgICAgLy8gdGhpcy51cGRhdGVTdGF0ZShFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlLmVycm9yKGVycikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|