@sumaris-net/ngx-components 4.0.0-rc9 → 18.0.0-rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/doc/changelog.md +522 -280
- package/esm2022/public_api.mjs +38 -19
- package/esm2022/src/app/admin/admin-routing.module.mjs +10 -17
- package/esm2022/src/app/admin/admin.module.mjs +7 -9
- package/esm2022/src/app/admin/services/filter/person.filter.mjs +3 -3
- package/esm2022/src/app/admin/services/person.service.mjs +31 -31
- package/esm2022/src/app/admin/services/validator/person.validator.mjs +10 -10
- package/esm2022/src/app/admin/users/users.mjs +22 -19
- package/esm2022/src/app/admin/users/users.module.mjs +8 -10
- package/esm2022/src/app/core/about/about.modal.mjs +7 -7
- package/esm2022/src/app/core/about/about.module.mjs +8 -21
- package/esm2022/src/app/core/account/account.module.mjs +28 -18
- package/esm2022/src/app/core/account/account.page.mjs +19 -5
- package/esm2022/src/app/core/account/new-token.form.mjs +106 -0
- package/esm2022/src/app/core/account/new-token.modal.mjs +27 -86
- package/esm2022/src/app/core/account/password/change-password.form.mjs +60 -0
- package/esm2022/src/app/core/account/password/change-password.module.mjs +22 -0
- package/esm2022/src/app/core/account/password/change-password.page.mjs +144 -0
- package/esm2022/src/app/core/account/token.table.mjs +47 -35
- package/esm2022/src/app/core/auth/auth.form.mjs +47 -28
- package/esm2022/src/app/core/auth/auth.modal.mjs +6 -6
- package/esm2022/src/app/core/auth/auth.module.mjs +22 -13
- package/esm2022/src/app/core/auth/reset-password.modal.mjs +77 -0
- package/esm2022/src/app/core/core.module.mjs +28 -61
- package/esm2022/src/app/core/core.testing.module.mjs +34 -20
- package/esm2022/src/app/core/form/array/form-array.mjs +325 -0
- package/esm2022/src/app/core/form/array/testing/form-array-test.module.mjs +23 -0
- package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +94 -0
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +24 -25
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +9 -13
- package/esm2022/src/app/core/form/entity/editor.class.mjs +64 -517
- package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +26 -42
- package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +42 -41
- package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +5 -5
- package/esm2022/src/app/core/form/entity/entity.module.mjs +8 -14
- package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +194 -0
- package/esm2022/src/app/core/form/form-container.class.mjs +327 -0
- package/esm2022/src/app/core/form/form.class.mjs +39 -56
- package/esm2022/src/app/core/form/form.module.mjs +14 -10
- package/esm2022/src/app/core/form/form.utils.mjs +23 -306
- package/esm2022/src/app/core/form/list/list.form.mjs +16 -14
- package/esm2022/src/app/core/form/list/list.module.mjs +8 -12
- package/esm2022/src/app/core/form/properties/properties.form.mjs +139 -57
- package/esm2022/src/app/core/form/properties/properties.module.mjs +9 -15
- package/esm2022/src/app/core/form/properties/properties.table.mjs +27 -28
- package/esm2022/src/app/core/form/properties/properties.utils.mjs +60 -0
- package/esm2022/src/app/core/form/properties/property.validator.mjs +23 -9
- package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +18 -18
- package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +8 -24
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +15 -15
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +10 -25
- package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +7 -7
- package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +9 -13
- package/esm2022/src/app/core/form/username/username.form.mjs +52 -0
- package/esm2022/src/app/core/form/username/username.module.mjs +20 -0
- package/esm2022/src/app/core/graphql/graphql.module.mjs +8 -16
- package/esm2022/src/app/core/graphql/graphql.service.mjs +101 -109
- package/esm2022/src/app/core/graphql/graphql.utils.mjs +12 -11
- package/esm2022/src/app/core/home/home.mjs +81 -52
- package/esm2022/src/app/core/home/home.module.mjs +10 -19
- package/esm2022/src/app/core/icon/icon.component.mjs +5 -5
- package/esm2022/src/app/core/icon/icon.module.mjs +8 -17
- package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +33 -37
- package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +9 -13
- package/esm2022/src/app/core/menu/menu.component.mjs +5 -6
- package/esm2022/src/app/core/menu/menu.model.mjs +21 -18
- package/esm2022/src/app/core/menu/menu.module.mjs +7 -12
- package/esm2022/src/app/core/menu/menu.service.mjs +44 -60
- package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +4 -4
- package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +7 -6
- package/esm2022/src/app/core/menu/testing/menu.testing.mjs +43 -8
- package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +8 -27
- package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +6 -7
- package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +9 -13
- package/esm2022/src/app/core/peer/select-peer.modal.mjs +31 -21
- package/esm2022/src/app/core/peer/select-peer.module.mjs +11 -23
- package/esm2022/src/app/core/register/register-confirm.page.mjs +18 -16
- package/esm2022/src/app/core/register/register.form.mjs +7 -7
- package/esm2022/src/app/core/register/register.modal.mjs +6 -6
- package/esm2022/src/app/core/register/register.module.mjs +8 -29
- package/esm2022/src/app/core/services/account.service.mjs +272 -170
- package/esm2022/src/app/core/services/auth-guard.service.mjs +13 -15
- package/esm2022/src/app/core/services/base-entity-service.class.mjs +55 -64
- package/esm2022/src/app/core/services/base-graphql-service.class.mjs +39 -33
- package/esm2022/src/app/core/services/base58.mjs +8 -4
- package/esm2022/src/app/core/services/config/core.config.mjs +88 -37
- package/esm2022/src/app/core/services/config.service.mjs +81 -62
- package/esm2022/src/app/core/services/crypto.service.mjs +11 -11
- package/esm2022/src/app/core/services/errors.mjs +6 -5
- package/esm2022/src/app/core/services/local-settings.service.mjs +58 -44
- package/esm2022/src/app/core/services/model/account.model.mjs +12 -17
- package/esm2022/src/app/core/services/model/config.model.mjs +7 -7
- package/esm2022/src/app/core/services/model/department.model.mjs +3 -2
- package/esm2022/src/app/core/services/model/entity.decorators.mjs +6 -6
- package/esm2022/src/app/core/services/model/entity.model.mjs +27 -31
- package/esm2022/src/app/core/services/model/filter.model.mjs +12 -15
- package/esm2022/src/app/core/services/model/history.model.mjs +1 -1
- package/esm2022/src/app/core/services/model/model.enum.mjs +2 -2
- package/esm2022/src/app/core/services/model/peer.model.mjs +19 -9
- package/esm2022/src/app/core/services/model/person.model.mjs +26 -22
- package/esm2022/src/app/core/services/model/referential.model.mjs +36 -23
- package/esm2022/src/app/core/services/model/settings.model.mjs +2 -1
- package/esm2022/src/app/core/services/model/token.model.mjs +7 -3
- package/esm2022/src/app/core/services/model/tree-item-entity.model.mjs +3 -7
- package/esm2022/src/app/core/services/network.service.mjs +99 -76
- package/esm2022/src/app/core/services/network.types.mjs +1 -1
- package/esm2022/src/app/core/services/network.utils.mjs +3 -3
- package/esm2022/src/app/core/services/pipes/account.pipes.mjs +11 -11
- package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +6 -6
- package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +9 -9
- package/esm2022/src/app/core/services/pipes/pipes.module.mjs +54 -0
- package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +21 -0
- package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +11 -11
- package/esm2022/src/app/core/services/platform.service.mjs +102 -69
- package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +32 -39
- package/esm2022/src/app/core/services/storage/entity-store.class.mjs +36 -45
- package/esm2022/src/app/core/services/testing/referential-filter.model.mjs +1 -1
- package/esm2022/src/app/core/services/testing/referential.validator.mjs +14 -14
- package/esm2022/src/app/core/services/validator/account.validator.mjs +5 -5
- package/esm2022/src/app/core/services/validator/base.validator.class.mjs +5 -5
- package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +34 -20
- package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +5 -5
- package/esm2022/src/app/core/services/validator/user-token.validator.mjs +12 -9
- package/esm2022/src/app/core/settings/settings.module.mjs +9 -21
- package/esm2022/src/app/core/settings/settings.page.mjs +76 -63
- package/esm2022/src/app/core/table/async-table.class.mjs +219 -201
- package/esm2022/src/app/core/table/column/actions-column.component.mjs +127 -0
- package/esm2022/src/app/core/table/column/nav-actions-column.component.mjs +117 -0
- package/esm2022/src/app/core/table/column/row-field.component.mjs +116 -0
- package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +31 -33
- package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +36 -36
- package/esm2022/src/app/core/table/memory-table.class.mjs +5 -5
- package/esm2022/src/app/core/table/table-select-columns.component.mjs +8 -8
- package/esm2022/src/app/core/table/table.class.mjs +193 -152
- package/esm2022/src/app/core/table/table.model.mjs +1 -1
- package/esm2022/src/app/core/table/table.module.mjs +35 -24
- package/esm2022/src/app/core/table/table.pipes.mjs +77 -0
- package/esm2022/src/app/core/table/table.utils.mjs +2 -4
- package/esm2022/src/app/core/table/testing/table-validator.service.mjs +9 -5
- package/esm2022/src/app/core/table/testing/table.testing.mjs +116 -78
- package/esm2022/src/app/core/table/testing/table.testing.module.mjs +8 -33
- package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +4 -4
- package/esm2022/src/app/core/table/testing/table2.testing.mjs +68 -45
- package/esm2022/src/app/shared/alerts.mjs +49 -45
- package/esm2022/src/app/shared/audio/audio.mjs +25 -27
- package/esm2022/src/app/shared/audio/audio.testing.mjs +5 -5
- package/esm2022/src/app/shared/audio/audio.testing.module.mjs +10 -25
- package/esm2022/src/app/shared/capacitor/keyboard.mjs +5 -5
- package/esm2022/src/app/shared/capacitor/plugins.mjs +1 -1
- package/esm2022/src/app/shared/constants.mjs +9 -4
- package/esm2022/src/app/shared/dates.mjs +18 -16
- package/esm2022/src/app/shared/debug/debug-service.class.mjs +1 -1
- package/esm2022/src/app/shared/debug/debug.component.mjs +5 -5
- package/esm2022/src/app/shared/debug/debug.module.mjs +8 -29
- package/esm2022/src/app/shared/directives/autofocus.directive.mjs +8 -15
- package/esm2022/src/app/shared/directives/autotitle.directive.mjs +4 -4
- package/esm2022/src/app/shared/directives/directives.module.mjs +8 -29
- package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +4 -4
- package/esm2022/src/app/shared/directives/ng-var.directive.mjs +4 -4
- package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +4 -4
- package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +4 -4
- package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +4 -4
- package/esm2022/src/app/shared/events.mjs +6 -8
- package/esm2022/src/app/shared/file/csv.utils.mjs +38 -18
- package/esm2022/src/app/shared/file/file.service.mjs +11 -15
- package/esm2022/src/app/shared/file/file.utils.mjs +13 -11
- package/esm2022/src/app/shared/file/images.utils.mjs +29 -4
- package/esm2022/src/app/shared/file/json.utils.mjs +11 -4
- package/esm2022/src/app/shared/file/uri.utils.mjs +1 -1
- package/esm2022/src/app/shared/focusable.mjs +1 -1
- package/esm2022/src/app/shared/form/field.component.mjs +69 -43
- package/esm2022/src/app/shared/form/field.model.mjs +4 -4
- package/esm2022/src/app/shared/form/loading-spinner.mjs +5 -5
- package/esm2022/src/app/shared/forms.mjs +116 -43
- package/esm2022/src/app/shared/functions.mjs +139 -71
- package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +14 -14
- package/esm2022/src/app/shared/gesture/gesture-config.mjs +10 -10
- package/esm2022/src/app/shared/gesture/hammer.utils.mjs +1 -1
- package/esm2022/src/app/shared/graph/colors.utils.mjs +14 -18
- package/esm2022/src/app/shared/graph/graph-colors.mjs +23 -29
- package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +4 -4
- package/esm2022/src/app/shared/help/help.modal.mjs +6 -6
- package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +5 -5
- package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +44 -17
- package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +9 -27
- package/esm2022/src/app/shared/http/http.utils.mjs +15 -11
- package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +27 -27
- package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +13 -10
- package/esm2022/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +1 -1
- package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +14 -17
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +9 -13
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +14 -11
- package/esm2022/src/app/shared/image/image.model.mjs +1 -1
- package/esm2022/src/app/shared/image/image.module.mjs +8 -13
- package/esm2022/src/app/shared/image/image.service.mjs +14 -12
- package/esm2022/src/app/shared/inputs.mjs +52 -20
- package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +2 -3
- package/esm2022/src/app/shared/logging/log-level.model.mjs +1 -1
- package/esm2022/src/app/shared/logging/logger.model.mjs +2 -2
- package/esm2022/src/app/shared/logging/logging-service.class.mjs +17 -20
- package/esm2022/src/app/shared/logging/logging-service.module.mjs +6 -6
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +7 -10
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +348 -238
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +13 -16
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +5 -4
- package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +51 -37
- package/esm2022/src/app/shared/material/badge/badge.directive.mjs +99 -57
- package/esm2022/src/app/shared/material/badge/badge.module.mjs +8 -20
- package/esm2022/src/app/shared/material/badge/badge.test.mjs +5 -5
- package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +19 -20
- package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +209 -104
- package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +15 -8
- package/esm2022/src/app/shared/material/chips/chips.module.mjs +12 -13
- package/esm2022/src/app/shared/material/chips/material.chips.mjs +228 -168
- package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +20 -21
- package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +12 -27
- package/esm2022/src/app/shared/material/datetime/material.date.mjs +167 -92
- package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +128 -77
- package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +297 -165
- package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +34 -30
- package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +31 -27
- package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +26 -23
- package/esm2022/src/app/shared/material/duration/duration.module.mjs +11 -16
- package/esm2022/src/app/shared/material/duration/duration.utils.mjs +3 -6
- package/esm2022/src/app/shared/material/duration/material.duration.mjs +35 -34
- package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +23 -22
- package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +217 -170
- package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +182 -241
- package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +10 -15
- package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +19 -14
- package/esm2022/src/app/shared/material/material.animations.mjs +22 -22
- package/esm2022/src/app/shared/material/material.config.mjs +3 -0
- package/esm2022/src/app/shared/material/material.module.mjs +16 -16
- package/esm2022/src/app/shared/material/material.testing.module.mjs +50 -37
- package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +12 -9
- package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +4 -4
- package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +26 -19
- package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +7 -11
- package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +8 -8
- package/esm2022/src/app/shared/material/testing/common.test.mjs +30 -24
- package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +30 -19
- package/esm2022/src/app/shared/material/text/text-form.component.mjs +128 -21
- package/esm2022/src/app/shared/material/text/text-form.module.mjs +8 -8
- package/esm2022/src/app/shared/modules.mjs +1 -1
- package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +118 -37
- package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +1 -1
- package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +5 -5
- package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +8 -8
- package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +74 -0
- package/esm2022/src/app/shared/named-filter/testing/named-filter.testing.module.mjs +28 -0
- package/esm2022/src/app/shared/observables.mjs +14 -18
- package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +53 -38
- package/esm2022/src/app/shared/pipes/badge.pipes.mjs +24 -0
- package/esm2022/src/app/shared/pipes/colors.pipe.mjs +8 -6
- package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +8 -10
- package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +15 -15
- package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +6 -6
- package/esm2022/src/app/shared/pipes/duration.pipe.mjs +6 -6
- package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +6 -13
- package/esm2022/src/app/shared/pipes/form.pipes.mjs +72 -47
- package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +15 -15
- package/esm2022/src/app/shared/pipes/html.pipes.mjs +52 -0
- package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +14 -14
- package/esm2022/src/app/shared/pipes/maps.pipe.mjs +17 -17
- package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +37 -88
- package/esm2022/src/app/shared/pipes/math.pipes.mjs +16 -16
- package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +5 -5
- package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +6 -6
- package/esm2022/src/app/shared/pipes/pipes.module.mjs +117 -137
- package/esm2022/src/app/shared/pipes/property.pipes.mjs +86 -47
- package/esm2022/src/app/shared/pipes/selection.pipes.mjs +179 -0
- package/esm2022/src/app/shared/pipes/string.pipes.mjs +50 -49
- package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +11 -11
- package/esm2022/src/app/shared/pipes/types.pipes.mjs +33 -17
- package/esm2022/src/app/shared/platforms.mjs +7 -5
- package/esm2022/src/app/shared/rx-state.module.mjs +7 -11
- package/esm2022/src/app/shared/services/entity-service.class.mjs +2 -2
- package/esm2022/src/app/shared/services/job.utils.mjs +7 -7
- package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +43 -41
- package/esm2022/src/app/shared/services/progress-bar.service.mjs +4 -4
- package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +11 -14
- package/esm2022/src/app/shared/services/startable-service.class.mjs +11 -17
- package/esm2022/src/app/shared/services/translate-context.service.mjs +18 -15
- package/esm2022/src/app/shared/services/validator-service.class.mjs +1 -1
- package/esm2022/src/app/shared/services.mjs +12 -12
- package/esm2022/src/app/shared/shared-routing.module.mjs +19 -18
- package/esm2022/src/app/shared/shared.module.mjs +29 -28
- package/esm2022/src/app/shared/shared.testing.module.mjs +18 -10
- package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +39 -46
- package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +8 -12
- package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +9 -17
- package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +10 -18
- package/esm2022/src/app/shared/storage/storage.service.mjs +4 -4
- package/esm2022/src/app/shared/storage/storage.utils.mjs +2 -2
- package/esm2022/src/app/shared/testing/maskito.test.mjs +41 -0
- package/esm2022/src/app/shared/testing/observable.test.mjs +11 -13
- package/esm2022/src/app/shared/testing/tests.page.mjs +6 -6
- package/esm2022/src/app/shared/toast/toast.testing.mjs +11 -11
- package/esm2022/src/app/shared/toast/toast.testing.module.mjs +10 -25
- package/esm2022/src/app/shared/toast/toasts.mjs +9 -9
- package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +10 -8
- package/esm2022/src/app/shared/toolbar/toolbar.mjs +31 -32
- package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +8 -39
- package/esm2022/src/app/shared/types.mjs +1 -1
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +12 -12
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +10 -25
- package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +7 -8
- package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +21 -19
- package/esm2022/src/app/shared/upload-file/upload-file.model.mjs +2 -3
- package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +64 -56
- package/esm2022/src/app/shared/validator/validators.mjs +60 -39
- package/esm2022/src/app/shared/version/versions.mjs +2 -2
- package/esm2022/src/app/social/job/job.module.mjs +8 -27
- package/esm2022/src/app/social/job/progression/job-progression.component.mjs +9 -9
- package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +49 -46
- package/esm2022/src/app/social/job/progression/job-progression.list.mjs +10 -13
- package/esm2022/src/app/social/job/progression/job-progression.model.mjs +1 -1
- package/esm2022/src/app/social/job/progression/job-progression.service.mjs +39 -21
- package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +6 -11
- package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +11 -30
- package/esm2022/src/app/social/job/testing/job.testing.module.mjs +8 -21
- package/esm2022/src/app/social/message/message.form.mjs +5 -5
- package/esm2022/src/app/social/message/message.modal.mjs +8 -8
- package/esm2022/src/app/social/message/message.model.mjs +8 -8
- package/esm2022/src/app/social/message/message.module.mjs +4 -4
- package/esm2022/src/app/social/message/message.service.mjs +7 -7
- package/esm2022/src/app/social/social.errors.mjs +2 -2
- package/esm2022/src/app/social/social.module.mjs +7 -32
- package/esm2022/src/app/social/social.testing.module.mjs +9 -20
- package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +27 -23
- package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +19 -22
- package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +47 -23
- package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +8 -8
- package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +8 -21
- package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +27 -15
- package/esm2022/src/app/social/user-event/user-event.model.mjs +1 -1
- package/esm2022/src/app/social/user-event/user-event.module.mjs +8 -28
- package/esm2022/src/app/social/user-event/user-event.service.mjs +61 -64
- package/esm2022/src/environments/environment.class.mjs +9 -1
- package/esm2022/src/environments/environment.loader.mjs +5 -11
- package/esm2022/src/environments/environment.mjs +19 -11
- package/fesm2022/sumaris-net.ngx-components.mjs +16117 -14592
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +33 -18
- package/public_api.d.ts +30 -22
- package/src/app/admin/services/filter/person.filter.d.ts +1 -1
- package/src/app/admin/users/users.d.ts +5 -6
- package/src/app/core/account/account.module.d.ts +10 -8
- package/src/app/core/account/account.page.d.ts +25 -15
- package/src/app/core/account/new-token.form.d.ts +29 -0
- package/src/app/core/account/new-token.modal.d.ts +9 -21
- package/src/app/core/account/password/change-password.form.d.ts +19 -0
- package/src/app/core/account/password/change-password.module.d.ts +11 -0
- package/src/app/core/account/password/change-password.page.d.ts +36 -0
- package/src/app/core/account/token.table.d.ts +7 -5
- package/src/app/core/auth/auth.form.d.ts +11 -9
- package/src/app/core/auth/auth.module.d.ts +6 -4
- package/src/app/core/auth/reset-password.modal.d.ts +26 -0
- package/src/app/core/core.module.d.ts +21 -24
- package/src/app/core/core.testing.module.d.ts +2 -1
- package/src/app/core/form/array/form-array.d.ts +136 -0
- package/src/app/core/form/array/testing/form-array-test.module.d.ts +12 -0
- package/src/app/core/form/array/testing/form-array.test.d.ts +26 -0
- package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +2 -3
- package/src/app/core/form/entity/editor.class.d.ts +19 -179
- package/src/app/core/form/entity/entity-editor-modal.class.d.ts +10 -13
- package/src/app/core/form/entity/entity-editor.class.d.ts +12 -17
- package/src/app/core/form/entity/entity-metadata.component.d.ts +1 -1
- package/src/app/core/form/entity/tab-editor.class.d.ts +70 -0
- package/src/app/core/form/form-container.class.d.ts +126 -0
- package/src/app/core/form/form.class.d.ts +13 -26
- package/src/app/core/form/form.module.d.ts +2 -1
- package/src/app/core/form/form.utils.d.ts +60 -145
- package/src/app/core/form/list/list.form.d.ts +2 -2
- package/src/app/core/form/properties/properties.form.d.ts +34 -12
- package/src/app/core/form/properties/properties.table.d.ts +2 -2
- package/src/app/core/form/properties/properties.utils.d.ts +27 -0
- package/src/app/core/form/properties/property.validator.d.ts +9 -3
- package/src/app/core/form/text-popover/testing/text-popover.testing.d.ts +3 -1
- package/src/app/core/form/username/username.form.d.ts +19 -0
- package/src/app/core/form/username/username.module.d.ts +9 -0
- package/src/app/core/graphql/graphql.module.d.ts +1 -2
- package/src/app/core/graphql/graphql.service.d.ts +2 -4
- package/src/app/core/home/home.d.ts +26 -6
- package/src/app/core/menu/testing/menu-other.testing.d.ts +1 -1
- package/src/app/core/menu/testing/menu.testing.d.ts +11 -3
- package/src/app/core/peer/select-peer.modal.d.ts +13 -7
- package/src/app/core/peer/select-peer.module.d.ts +3 -4
- package/src/app/core/services/account.service.d.ts +9 -0
- package/src/app/core/services/base-entity-service.class.d.ts +1 -1
- package/src/app/core/services/config/core.config.d.ts +12 -1
- package/src/app/core/services/config.service.d.ts +4 -3
- package/src/app/core/services/errors.d.ts +11 -0
- package/src/app/core/services/local-settings.service.d.ts +8 -4
- package/src/app/core/services/model/entity.model.d.ts +6 -5
- package/src/app/core/services/model/filter.model.d.ts +1 -1
- package/src/app/core/services/model/peer.model.d.ts +1 -0
- package/src/app/core/services/model/person.model.d.ts +6 -2
- package/src/app/core/services/model/referential.model.d.ts +8 -3
- package/src/app/core/services/model/settings.model.d.ts +4 -2
- package/src/app/core/services/model/token.model.d.ts +1 -0
- package/src/app/core/services/model/tree-item-entity.model.d.ts +1 -1
- package/src/app/core/services/network.service.d.ts +11 -7
- package/src/app/core/services/pipes/department-to-string.pipe.d.ts +1 -1
- package/src/app/core/services/pipes/person-to-string.pipe.d.ts +3 -1
- package/src/app/core/services/pipes/pipes.module.d.ts +11 -0
- package/src/app/core/services/pipes/referential-to-string.pipe.d.ts +13 -0
- package/src/app/core/services/platform.service.d.ts +8 -3
- package/src/app/core/services/testing/referential-filter.model.d.ts +1 -1
- package/src/app/core/services/validator/local-settings.validator.d.ts +6 -2
- package/src/app/core/settings/settings.module.d.ts +2 -1
- package/src/app/core/settings/settings.page.d.ts +34 -21
- package/src/app/core/table/async-table.class.d.ts +22 -17
- package/src/app/core/table/column/actions-column.component.d.ts +59 -0
- package/src/app/core/table/column/nav-actions-column.component.d.ts +46 -0
- package/src/app/core/table/column/row-field.component.d.ts +40 -0
- package/src/app/core/table/entities-async-table-datasource.class.d.ts +1 -0
- package/src/app/core/table/entities-table-datasource.class.d.ts +1 -0
- package/src/app/core/table/table.class.d.ts +14 -11
- package/src/app/core/table/table.module.d.ts +8 -4
- package/src/app/core/table/table.pipes.d.ts +28 -0
- package/src/app/core/table/testing/table.testing.d.ts +12 -13
- package/src/app/core/table/testing/table2.testing.d.ts +13 -10
- package/src/app/shared/alerts.d.ts +4 -2
- package/src/app/shared/constants.d.ts +5 -0
- package/src/app/shared/dates.d.ts +12 -5
- package/src/app/shared/directives/autofocus.directive.d.ts +0 -1
- package/src/app/shared/events.d.ts +1 -1
- package/src/app/shared/file/csv.utils.d.ts +5 -0
- package/src/app/shared/file/images.utils.d.ts +17 -0
- package/src/app/shared/file/json.utils.d.ts +3 -0
- package/src/app/shared/form/field.component.d.ts +6 -3
- package/src/app/shared/forms.d.ts +32 -0
- package/src/app/shared/functions.d.ts +27 -8
- package/src/app/shared/graph/graph-colors.d.ts +1 -1
- package/src/app/shared/guard/component-dirty.guard.d.ts +1 -6
- package/src/app/shared/hotkeys/hotkeys.service.d.ts +17 -3
- package/src/app/shared/http/http.utils.d.ts +1 -0
- package/src/app/shared/image/gallery/image-gallery.component.d.ts +10 -10
- package/src/app/shared/image/gallery/image-gallery.module.d.ts +2 -1
- package/src/app/shared/image/gallery/testing/gallery.service.testing.d.ts +2 -2
- package/src/app/shared/image/gallery/testing/gallery.testing.module.d.ts +2 -1
- package/src/app/shared/inputs.d.ts +8 -6
- package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +20 -1
- package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +56 -16
- package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +1 -1
- package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +2 -1
- package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +3 -2
- package/src/app/shared/material/badge/badge.directive.d.ts +10 -4
- package/src/app/shared/material/boolean/boolean.module.d.ts +15 -14
- package/src/app/shared/material/boolean/material.boolean.d.ts +51 -25
- package/src/app/shared/material/boolean/testing/boolean.test.page.d.ts +1 -0
- package/src/app/shared/material/chips/chips.module.d.ts +2 -1
- package/src/app/shared/material/chips/material.chips.d.ts +46 -21
- package/src/app/shared/material/chips/testing/chips.test.d.ts +1 -0
- package/src/app/shared/material/datetime/datetime.module.d.ts +1 -1
- package/src/app/shared/material/datetime/material.date.d.ts +33 -18
- package/src/app/shared/material/datetime/material.dateshort.d.ts +29 -16
- package/src/app/shared/material/datetime/material.datetime.d.ts +41 -28
- package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +3 -3
- package/src/app/shared/material/duration/duration.module.d.ts +1 -1
- package/src/app/shared/material/duration/material.duration.d.ts +1 -1
- package/src/app/shared/material/latlong/latlong.utils.d.ts +9 -1
- package/src/app/shared/material/latlong/material.latlong.d.ts +29 -32
- package/src/app/shared/material/latlong/material.latlong.module.d.ts +1 -1
- package/src/app/shared/material/latlong/testing/latlong.test.d.ts +5 -1
- package/src/app/shared/material/material.config.d.ts +3 -0
- package/src/app/shared/material/material.module.d.ts +5 -6
- package/src/app/shared/material/material.testing.module.d.ts +8 -7
- package/src/app/shared/material/swipe/material.swipe.d.ts +4 -3
- package/src/app/shared/material/text/testing/text-form.testing.d.ts +10 -4
- package/src/app/shared/material/text/text-form.component.d.ts +42 -8
- package/src/app/shared/named-filter/named-filter-selector.component.d.ts +30 -14
- package/src/app/shared/named-filter/named-filter.service.d.ts +12 -6
- package/src/app/shared/named-filter/testing/named-filter-selector.testing.d.ts +34 -0
- package/src/app/shared/named-filter/testing/named-filter.testing.module.d.ts +10 -0
- package/src/app/shared/pipes/arrays.pipe.d.ts +5 -0
- package/src/app/shared/pipes/badge.pipes.d.ts +7 -0
- package/src/app/shared/pipes/date-format.pipe.d.ts +3 -2
- package/src/app/shared/pipes/form.pipes.d.ts +18 -8
- package/src/app/shared/pipes/html.pipes.d.ts +15 -0
- package/src/app/shared/pipes/maps.pipe.d.ts +4 -4
- package/src/app/shared/pipes/maskito.pipe.d.ts +7 -9
- package/src/app/shared/pipes/pipes.module.d.ts +7 -4
- package/src/app/shared/pipes/property.pipes.d.ts +24 -3
- package/src/app/shared/pipes/selection.pipes.d.ts +62 -0
- package/src/app/shared/pipes/string.pipes.d.ts +6 -6
- package/src/app/shared/pipes/types.pipes.d.ts +6 -1
- package/src/app/shared/services/entity-service.class.d.ts +0 -2
- package/src/app/shared/services/memory-entity-service.class.d.ts +6 -3
- package/src/app/shared/services.d.ts +1 -0
- package/src/app/shared/shared.testing.module.d.ts +2 -1
- package/src/app/shared/storage/storage-explorer.component.d.ts +4 -3
- package/src/app/shared/testing/maskito.test.d.ts +10 -0
- package/src/app/shared/toolbar/toolbar.d.ts +7 -2
- package/src/app/shared/types.d.ts +5 -0
- package/src/app/shared/upload-file/upload-file.component.d.ts +1 -0
- package/src/app/shared/validator/form-error-adapter.class.d.ts +17 -11
- package/src/app/shared/validator/validators.d.ts +20 -9
- package/src/app/social/job/progression/job-progression.icon.d.ts +4 -5
- package/src/app/social/job/progression/job-progression.list.d.ts +1 -3
- package/src/app/social/job/progression/job-progression.service.d.ts +3 -4
- package/src/app/social/job/testing/job-progression.testing.d.ts +0 -1
- package/src/app/social/job/testing/job-progression.testing.service.d.ts +3 -11
- package/src/app/social/message/message.modal.d.ts +2 -2
- package/src/app/social/message/message.model.d.ts +1 -1
- package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +4 -4
- package/src/app/social/user-event/testing/user-event.testing.d.ts +1 -0
- package/src/app/social/user-event/testing/user-event.testing.model.d.ts +2 -3
- package/src/app/social/user-event/testing/user-event.testing.service.d.ts +1 -0
- package/src/assets/i18n/en-US.json +48 -19
- package/src/assets/i18n/en.json +48 -20
- package/src/assets/i18n/fr.json +50 -20
- package/src/assets/manifest.json +1 -1
- package/src/environments/environment.class.d.ts +10 -0
- package/src/environments/environment.d.ts +0 -1
- package/src/environments/environment.loader.d.ts +0 -2
- package/src/theme/_functions.scss +15 -0
- package/src/theme/_icons.scss +1 -1
- package/src/theme/_ionic.globals.scss +8 -2
- package/src/theme/_ionic.scss +10 -10
- package/src/theme/_material.globals.scss +16 -43
- package/src/theme/_material.scss +45 -32
- package/src/theme/_mixins.scss +99 -18
- package/src/theme/_ngx-components.forms.scss +354 -0
- package/src/theme/_ngx-components.globals.scss +20 -10
- package/src/theme/_ngx-components.scss +194 -400
- package/src/theme/_ngx-components.table.scss +200 -207
- package/src/theme/_ngx-components.tabs.scss +54 -0
- package/src/theme/_responsive.scss +0 -31
- package/src/theme/_theme.scss +2 -0
- package/src/theme/_theme.variables.scss +172 -0
- package/esm2022/src/app/core/table/actions-column.component.mjs +0 -115
- package/esm2022/src/app/shared/material/boolean/material-boolean2.mjs +0 -266
- package/esm2022/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +0 -104
- package/esm2022/src/app/shared/material/numpad/numpad.component.mjs +0 -83
- package/esm2022/src/app/shared/material/numpad/numpad.container.mjs +0 -203
- package/esm2022/src/app/shared/material/numpad/numpad.content.mjs +0 -19
- package/esm2022/src/app/shared/material/numpad/numpad.directive.mjs +0 -168
- package/esm2022/src/app/shared/material/numpad/numpad.dom-service.mjs +0 -36
- package/esm2022/src/app/shared/material/numpad/numpad.model.mjs +0 -16
- package/esm2022/src/app/shared/material/numpad/numpad.module.mjs +0 -60
- package/esm2022/src/app/shared/material/numpad/testing/numpad.test.mjs +0 -48
- package/src/app/core/table/actions-column.component.d.ts +0 -48
- package/src/app/shared/material/boolean/material-boolean2.d.ts +0 -66
- package/src/app/shared/material/numpad/numpad.append-to-input.directive.d.ts +0 -22
- package/src/app/shared/material/numpad/numpad.component.d.ts +0 -26
- package/src/app/shared/material/numpad/numpad.container.d.ts +0 -40
- package/src/app/shared/material/numpad/numpad.content.d.ts +0 -7
- package/src/app/shared/material/numpad/numpad.directive.d.ts +0 -35
- package/src/app/shared/material/numpad/numpad.dom-service.d.ts +0 -16
- package/src/app/shared/material/numpad/numpad.model.d.ts +0 -30
- package/src/app/shared/material/numpad/numpad.module.d.ts +0 -16
- package/src/app/shared/material/numpad/testing/numpad.test.d.ts +0 -13
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, HostListener } from '@angular/core';
|
|
2
|
-
import { MatNumpadEvent } from './numpad.model';
|
|
3
|
-
import { BehaviorSubject } from 'rxjs';
|
|
4
|
-
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common";
|
|
7
|
-
import * as i2 from "@ionic/angular";
|
|
8
|
-
import * as i3 from "./numpad.content";
|
|
9
|
-
import * as i4 from "@ngx-translate/core";
|
|
10
|
-
export var AnimationState;
|
|
11
|
-
(function (AnimationState) {
|
|
12
|
-
AnimationState["ENTER"] = "enter";
|
|
13
|
-
AnimationState["ENTER_INPUT"] = "enter-input";
|
|
14
|
-
AnimationState["LEAVE"] = "leave";
|
|
15
|
-
})(AnimationState || (AnimationState = {}));
|
|
16
|
-
export class MatNumpadContainerComponent {
|
|
17
|
-
cd;
|
|
18
|
-
debug = true;
|
|
19
|
-
backdropState = AnimationState.LEAVE;
|
|
20
|
-
modalState;
|
|
21
|
-
panelState;
|
|
22
|
-
numpadRef;
|
|
23
|
-
inputElement;
|
|
24
|
-
columnCount = 4;
|
|
25
|
-
filteredKeymap = new BehaviorSubject(undefined);
|
|
26
|
-
// Config options
|
|
27
|
-
decimal;
|
|
28
|
-
disabled;
|
|
29
|
-
appendToInput;
|
|
30
|
-
keymap;
|
|
31
|
-
disableAnimation;
|
|
32
|
-
noBackdrop;
|
|
33
|
-
position;
|
|
34
|
-
constructor(cd) {
|
|
35
|
-
this.cd = cd;
|
|
36
|
-
if (this.debug)
|
|
37
|
-
console.debug('[numpad-container] Creating component');
|
|
38
|
-
}
|
|
39
|
-
ngOnInit() {
|
|
40
|
-
if (!this.keymap || !this.keymap.length) {
|
|
41
|
-
throw new Error('An invalid \'keymap\' was sent to numpad container');
|
|
42
|
-
}
|
|
43
|
-
if (!this.disableAnimation) {
|
|
44
|
-
if (this.appendToInput) {
|
|
45
|
-
this.panelState = AnimationState.ENTER;
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
this.modalState = AnimationState.ENTER;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
this.noBackdrop = this.noBackdrop || this.appendToInput;
|
|
52
|
-
if (!this.noBackdrop) {
|
|
53
|
-
this.backdropState = AnimationState.ENTER;
|
|
54
|
-
}
|
|
55
|
-
const keymap = this.defineFilteredKeymap();
|
|
56
|
-
this.filteredKeymap.next(keymap);
|
|
57
|
-
// Count columns
|
|
58
|
-
this.columnCount = keymap.reduce((res, row) => row && Math.max(res, row.length), 0);
|
|
59
|
-
if (this.debug)
|
|
60
|
-
console.debug('[numpad-container] columnCount=' + this.columnCount);
|
|
61
|
-
//this.markForCheck();
|
|
62
|
-
}
|
|
63
|
-
ngOnDestroy() {
|
|
64
|
-
}
|
|
65
|
-
onButtonClick(event, keyDef) {
|
|
66
|
-
if (this.debug)
|
|
67
|
-
console.debug('[numpad-container] onKeyPress() ', keyDef.key);
|
|
68
|
-
const customEvent = new MatNumpadEvent('keypress', { key: keyDef.key, target: this.inputElement });
|
|
69
|
-
//{detail: {...keyDef, target: this.inputElement}})
|
|
70
|
-
this.numpadRef.keypress.next(customEvent);
|
|
71
|
-
}
|
|
72
|
-
onKeydown(event) {
|
|
73
|
-
//if (this.debug)
|
|
74
|
-
console.debug('[numpad-container] onKeypress()', event);
|
|
75
|
-
this.numpadRef.keypress.next(event);
|
|
76
|
-
}
|
|
77
|
-
overlayClick(event) {
|
|
78
|
-
this.close();
|
|
79
|
-
}
|
|
80
|
-
close() {
|
|
81
|
-
if (this.disableAnimation) {
|
|
82
|
-
this.numpadRef.close();
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
if (this.modalState)
|
|
86
|
-
this.modalState = AnimationState.LEAVE;
|
|
87
|
-
if (this.panelState)
|
|
88
|
-
this.panelState = AnimationState.LEAVE;
|
|
89
|
-
if (this.backdropState)
|
|
90
|
-
this.backdropState = AnimationState.LEAVE;
|
|
91
|
-
this.markForCheck();
|
|
92
|
-
}
|
|
93
|
-
animationDone(event) {
|
|
94
|
-
if (event.phaseName === 'done' && event.toState === AnimationState.LEAVE) {
|
|
95
|
-
this.numpadRef.close();
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
defineFilteredKeymap() {
|
|
99
|
-
let keymap = this.keymap;
|
|
100
|
-
// Replace decimal separator button, by empty
|
|
101
|
-
if (!this.decimal) {
|
|
102
|
-
keymap = keymap.map(row => row.map(item => item && item.key !== '.' && item.key !== ',' ? item : null));
|
|
103
|
-
}
|
|
104
|
-
return keymap;
|
|
105
|
-
}
|
|
106
|
-
markForCheck() {
|
|
107
|
-
this.cd.markForCheck();
|
|
108
|
-
}
|
|
109
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: MatNumpadContainerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
110
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: MatNumpadContainerComponent, selector: "mat-numpad-container", host: { listeners: { "window:keydown": "onKeydown($event)" } }, ngImport: i0, template: "<div class=\"numpad-backdrop-overlay\"\n *ngIf=\"!noBackdrop\"\n (click)=\"overlayClick($event)\"\n [@numpadBackdrop]=\"backdropState\">\n</div>\n<div class=\"numpad-overlay\">\n <mat-numpad-content [appendToInput]=\"appendToInput\"\n [inputElement]=\"inputElement\" cdkTrapFocus>\n <div class=\"numpad {{position}}\"\n [class.panel]=\"appendToInput\"\n [@numpadPanelExpansion]=\"panelState\"\n (@numpadPanelExpansion.done)=\"animationDone($event)\"\n [@numpadFadeIn]=\"modalState\"\n (@numpadFadeIn.done)=\"animationDone($event)\">\n <ion-grid>\n <ion-row *ngFor=\"let row of filteredKeymap | async\">\n <ion-col size=\"{{12/columnCount}}\" *ngFor=\"let item of row\">\n <ion-button mat-button expand=\"block\"\n *ngIf=\"item\"\n [color]=\"item.color || 'secondary'\"\n (click)=\"onButtonClick($event, item)\">\n <ion-icon *ngIf=\"item.icon; else label\" slot=\"icon-only\" [name]=\"item.icon\"></ion-icon>\n <ng-template #label>\n <ion-label>{{ (item.label || item.key) | translate }}</ion-label>\n </ng-template>\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n </mat-numpad-content>\n</div>\n", styles: [":host{display:inline-block;max-width:300px;--ion-grid-padding: 0;--ion-grid-column-padding: 0;--background-color: white;--padding: 8px}.numpad-backdrop-overlay{position:absolute;inset:0;background:rgba(0,0,0,.32);z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent}.numpad-overlay{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:1000;pointer-events:none}.numpad{width:300px;border-radius:4px;outline:none;position:static;z-index:1000;pointer-events:auto;background-color:var(--background-color, transparent);padding:var(--padding, 5px);box-shadow:#00000040 0 14px 45px,#00000038 0 10px 18px}.numpad.panel{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}\n"], 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: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i3.MatNumpadContent, selector: "mat-numpad-content", inputs: ["appendToInput", "inputElement"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], animations: [
|
|
111
|
-
// Backdrop animation
|
|
112
|
-
trigger('numpadBackdrop', [
|
|
113
|
-
state('*', style({ opacity: 0, background: 'transparent' })),
|
|
114
|
-
state(AnimationState.ENTER, style({ opacity: 1 })),
|
|
115
|
-
state(AnimationState.LEAVE, style({ opacity: 0 })),
|
|
116
|
-
transition(`* => ${AnimationState.ENTER}`, [
|
|
117
|
-
style({ opacity: 0 }),
|
|
118
|
-
animate('0.4s cubic-bezier(0.25, 0.8, 0.25, 1)')
|
|
119
|
-
]),
|
|
120
|
-
transition(`${AnimationState.ENTER} => ${AnimationState.LEAVE}`, [
|
|
121
|
-
style({ opacity: 1 }),
|
|
122
|
-
animate('0.2s cubic-bezier(0.25, 0.8, 0.25, 1)')
|
|
123
|
-
])
|
|
124
|
-
]),
|
|
125
|
-
// Fade in
|
|
126
|
-
trigger('numpadFadeIn', [
|
|
127
|
-
state('*', style({ opacity: 1, transform: 'scale(1)' })),
|
|
128
|
-
state(AnimationState.ENTER, style({ opacity: 1, transform: 'scale(1)' })),
|
|
129
|
-
state(AnimationState.LEAVE, style({ opacity: 0, transform: 'scale(0.9)' })),
|
|
130
|
-
// Modal
|
|
131
|
-
transition(`* => ${AnimationState.ENTER}`, [
|
|
132
|
-
style({ opacity: 0, transform: 'scale(0.6)' }),
|
|
133
|
-
animate('0.2s ease-out')
|
|
134
|
-
]),
|
|
135
|
-
transition(`${AnimationState.ENTER} => ${AnimationState.LEAVE}`, [
|
|
136
|
-
animate('0.2s ease-out')
|
|
137
|
-
])
|
|
138
|
-
]),
|
|
139
|
-
// Panel expansion
|
|
140
|
-
trigger('numpadPanelExpansion', [
|
|
141
|
-
state('*', style({ opacity: 1, transform: 'scaleY(0) translateY(-50%)' })),
|
|
142
|
-
state(AnimationState.ENTER, style({ opacity: 1, transform: 'scale(1) translateY(0)' })),
|
|
143
|
-
state(AnimationState.LEAVE, style({ opacity: 0, transform: 'scale(1) translateY(0)' })),
|
|
144
|
-
// Attach to input
|
|
145
|
-
transition(`* => ${AnimationState.ENTER}`, [
|
|
146
|
-
animate('0.2s ease-out')
|
|
147
|
-
]),
|
|
148
|
-
transition(`${AnimationState.ENTER} => ${AnimationState.LEAVE}`, [
|
|
149
|
-
animate('0.2s ease-out')
|
|
150
|
-
])
|
|
151
|
-
])
|
|
152
|
-
], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
153
|
-
}
|
|
154
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: MatNumpadContainerComponent, decorators: [{
|
|
155
|
-
type: Component,
|
|
156
|
-
args: [{ selector: 'mat-numpad-container', changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
157
|
-
// Backdrop animation
|
|
158
|
-
trigger('numpadBackdrop', [
|
|
159
|
-
state('*', style({ opacity: 0, background: 'transparent' })),
|
|
160
|
-
state(AnimationState.ENTER, style({ opacity: 1 })),
|
|
161
|
-
state(AnimationState.LEAVE, style({ opacity: 0 })),
|
|
162
|
-
transition(`* => ${AnimationState.ENTER}`, [
|
|
163
|
-
style({ opacity: 0 }),
|
|
164
|
-
animate('0.4s cubic-bezier(0.25, 0.8, 0.25, 1)')
|
|
165
|
-
]),
|
|
166
|
-
transition(`${AnimationState.ENTER} => ${AnimationState.LEAVE}`, [
|
|
167
|
-
style({ opacity: 1 }),
|
|
168
|
-
animate('0.2s cubic-bezier(0.25, 0.8, 0.25, 1)')
|
|
169
|
-
])
|
|
170
|
-
]),
|
|
171
|
-
// Fade in
|
|
172
|
-
trigger('numpadFadeIn', [
|
|
173
|
-
state('*', style({ opacity: 1, transform: 'scale(1)' })),
|
|
174
|
-
state(AnimationState.ENTER, style({ opacity: 1, transform: 'scale(1)' })),
|
|
175
|
-
state(AnimationState.LEAVE, style({ opacity: 0, transform: 'scale(0.9)' })),
|
|
176
|
-
// Modal
|
|
177
|
-
transition(`* => ${AnimationState.ENTER}`, [
|
|
178
|
-
style({ opacity: 0, transform: 'scale(0.6)' }),
|
|
179
|
-
animate('0.2s ease-out')
|
|
180
|
-
]),
|
|
181
|
-
transition(`${AnimationState.ENTER} => ${AnimationState.LEAVE}`, [
|
|
182
|
-
animate('0.2s ease-out')
|
|
183
|
-
])
|
|
184
|
-
]),
|
|
185
|
-
// Panel expansion
|
|
186
|
-
trigger('numpadPanelExpansion', [
|
|
187
|
-
state('*', style({ opacity: 1, transform: 'scaleY(0) translateY(-50%)' })),
|
|
188
|
-
state(AnimationState.ENTER, style({ opacity: 1, transform: 'scale(1) translateY(0)' })),
|
|
189
|
-
state(AnimationState.LEAVE, style({ opacity: 0, transform: 'scale(1) translateY(0)' })),
|
|
190
|
-
// Attach to input
|
|
191
|
-
transition(`* => ${AnimationState.ENTER}`, [
|
|
192
|
-
animate('0.2s ease-out')
|
|
193
|
-
]),
|
|
194
|
-
transition(`${AnimationState.ENTER} => ${AnimationState.LEAVE}`, [
|
|
195
|
-
animate('0.2s ease-out')
|
|
196
|
-
])
|
|
197
|
-
])
|
|
198
|
-
], template: "<div class=\"numpad-backdrop-overlay\"\n *ngIf=\"!noBackdrop\"\n (click)=\"overlayClick($event)\"\n [@numpadBackdrop]=\"backdropState\">\n</div>\n<div class=\"numpad-overlay\">\n <mat-numpad-content [appendToInput]=\"appendToInput\"\n [inputElement]=\"inputElement\" cdkTrapFocus>\n <div class=\"numpad {{position}}\"\n [class.panel]=\"appendToInput\"\n [@numpadPanelExpansion]=\"panelState\"\n (@numpadPanelExpansion.done)=\"animationDone($event)\"\n [@numpadFadeIn]=\"modalState\"\n (@numpadFadeIn.done)=\"animationDone($event)\">\n <ion-grid>\n <ion-row *ngFor=\"let row of filteredKeymap | async\">\n <ion-col size=\"{{12/columnCount}}\" *ngFor=\"let item of row\">\n <ion-button mat-button expand=\"block\"\n *ngIf=\"item\"\n [color]=\"item.color || 'secondary'\"\n (click)=\"onButtonClick($event, item)\">\n <ion-icon *ngIf=\"item.icon; else label\" slot=\"icon-only\" [name]=\"item.icon\"></ion-icon>\n <ng-template #label>\n <ion-label>{{ (item.label || item.key) | translate }}</ion-label>\n </ng-template>\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n </mat-numpad-content>\n</div>\n", styles: [":host{display:inline-block;max-width:300px;--ion-grid-padding: 0;--ion-grid-column-padding: 0;--background-color: white;--padding: 8px}.numpad-backdrop-overlay{position:absolute;inset:0;background:rgba(0,0,0,.32);z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent}.numpad-overlay{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:1000;pointer-events:none}.numpad{width:300px;border-radius:4px;outline:none;position:static;z-index:1000;pointer-events:auto;background-color:var(--background-color, transparent);padding:var(--padding, 5px);box-shadow:#00000040 0 14px 45px,#00000038 0 10px 18px}.numpad.panel{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}\n"] }]
|
|
199
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { onKeydown: [{
|
|
200
|
-
type: HostListener,
|
|
201
|
-
args: ['window:keydown', ['$event']]
|
|
202
|
-
}] } });
|
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtcGFkLmNvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL251bXBhZC9udW1wYWQuY29udGFpbmVyLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvbnVtcGFkL251bXBhZC5jb250YWluZXIuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBa0IsY0FBYyxFQUE4QyxNQUFNLGdCQUFnQixDQUFDO0FBQzVHLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFDLE9BQU8sRUFBa0IsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQUUvRixNQUFNLENBQU4sSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3hCLGlDQUFlLENBQUE7SUFDZiw2Q0FBMkIsQ0FBQTtJQUMzQixpQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxjQUFjLEtBQWQsY0FBYyxRQUl6QjtBQW9ERCxNQUFNLE9BQU8sMkJBQTJCO0lBdUIxQjtJQXJCSixLQUFLLEdBQUcsSUFBSSxDQUFDO0lBRXJCLGFBQWEsR0FBbUIsY0FBYyxDQUFDLEtBQUssQ0FBQztJQUNyRCxVQUFVLENBQWlCO0lBQzNCLFVBQVUsQ0FBaUI7SUFDM0IsU0FBUyxDQUFlO0lBQ3hCLFlBQVksQ0FBTTtJQUNsQixXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBRWhCLGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBa0IsU0FBUyxDQUFDLENBQUM7SUFFakUsaUJBQWlCO0lBQ2pCLE9BQU8sQ0FBVTtJQUNqQixRQUFRLENBQVU7SUFDbEIsYUFBYSxD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b25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdE51bXBhZENvbmZpZywgTWF0TnVtcGFkRXZlbnQsIE1hdE51bXBhZEtleSwgTWF0TnVtcGFkS2V5bWFwLCBNYXROdW1wYWRSZWZ9IGZyb20gJy4vbnVtcGFkLm1vZGVsJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7YW5pbWF0ZSwgQW5pbWF0aW9uRXZlbnQsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmV4cG9ydCBlbnVtIEFuaW1hdGlvblN0YXRlIHtcbiAgRU5URVIgPSAnZW50ZXInLFxuICBFTlRFUl9JTlBVVCA9ICdlbnRlci1pbnB1dCcsXG4gIExFQVZFID0gJ2xlYXZlJ1xufVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LW51bXBhZC1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbnVtcGFkLmNvbnRhaW5lci5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbnVtcGFkLmNvbnRhaW5lci5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbXG4gICAgLy8gQmFja2Ryb3AgYW5pbWF0aW9uXG4gICAgdHJpZ2dlcignbnVtcGFkQmFja2Ryb3AnLCBbXG4gICAgICBzdGF0ZSgnKicsIHN0eWxlKHtvcGFjaXR5OiAwLCBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnfSkpLFxuICAgICAgc3RhdGUoQW5pbWF0aW9uU3RhdGUuRU5URVIsIHN0eWxlKHtvcGFjaXR5OiAxfSkpLFxuICAgICAgc3RhdGUoQW5pbWF0aW9uU3RhdGUuTEVBVkUsIHN0eWxlKHtvcGFjaXR5OiAwfSkpLFxuICAgICAgdHJhbnNpdGlvbihgKiA9PiAke0FuaW1hdGlvblN0YXRlLkVOVEVSfWAsIFtcbiAgICAgICAgc3R5bGUoe29wYWNpdHk6IDB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC40cyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScpXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oYCR7QW5pbWF0aW9uU3RhdGUuRU5URVJ9ID0+ICR7QW5pbWF0aW9uU3RhdGUuTEVBVkV9YCwgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDF9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScpXG4gICAgICBdKVxuICAgIF0pLFxuXG4gICAgLy8gRmFkZSBpblxuICAgIHRyaWdnZXIoJ251bXBhZEZhZGVJbicsIFtcbiAgICAgIHN0YXRlKCcqJywgc3R5bGUoe29wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3NjYWxlKDEpJ30pKSxcbiAgICAgIHN0YXRlKEFuaW1hdGlvblN0YXRlLkVOVEVSLCBzdHlsZSh7b3BhY2l0eTogMSwgdHJhbnNmb3JtOiAnc2NhbGUoMSknfSkpLFxuICAgICAgc3RhdGUoQW5pbWF0aW9uU3RhdGUuTEVBVkUsIHN0eWxlKHtvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICdzY2FsZSgwLjkpJ30pKSxcbiAgICAgIC8vIE1vZGFsXG4gICAgICB0cmFuc2l0aW9uKGAqID0+ICR7QW5pbWF0aW9uU3RhdGUuRU5URVJ9YCwgW1xuICAgICAgICBzdHlsZSh7b3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGUoMC42KSd9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLW91dCcpXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oYCR7QW5pbWF0aW9uU3RhdGUuRU5URVJ9ID0+ICR7QW5pbWF0aW9uU3RhdGUuTEVBVkV9YCwgW1xuICAgICAgICBhbmltYXRlKCcwLjJzIGVhc2Utb3V0JylcbiAgICAgIF0pIF0pLFxuXG4gICAgLy8gUGFuZWwgZXhwYW5zaW9uXG4gICAgdHJpZ2dlcignbnVtcGFkUGFuZWxFeHBhbnNpb24nLCBbXG4gICAgICBzdGF0ZSgnKicsIHN0eWxlKHtvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICdzY2FsZVkoMCkgdHJhbnNsYXRlWSgtNTAlKSd9KSksXG4gICAgICBzdGF0ZShBbmltYXRpb25TdGF0ZS5FTlRFUiwgc3R5bGUoe29wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3NjYWxlKDEpIHRyYW5zbGF0ZVkoMCknfSkpLFxuICAgICAgc3RhdGUoQW5pbWF0aW9uU3RhdGUuTEVBVkUsIHN0eWxlKHtvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICdzY2FsZSgxKSB0cmFuc2xhdGVZKDApJ30pKSxcblxuICAgICAgLy8gQXR0YWNoIHRvIGlucHV0XG4gICAgICB0cmFuc2l0aW9uKGAqID0+ICR7QW5pbWF0aW9uU3RhdGUuRU5URVJ9YCwgW1xuICAgICAgICBhbmltYXRlKCcwLjJzIGVhc2Utb3V0JylcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbihgJHtBbmltYXRpb25TdGF0ZS5FTlRFUn0gPT4gJHtBbmltYXRpb25TdGF0ZS5MRUFWRX1gLCBbXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1vdXQnKVxuICAgICAgXSlcbiAgICBdKVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE1hdE51bXBhZENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBNYXROdW1wYWRDb25maWcge1xuXG4gIHByaXZhdGUgZGVidWcgPSB0cnVlO1xuXG4gIGJhY2tkcm9wU3RhdGU6IEFuaW1hdGlvblN0YXRlID0gQW5pbWF0aW9uU3RhdGUuTEVBVkU7XG4gIG1vZGFsU3RhdGU6IEFuaW1hdGlvblN0YXRlO1xuICBwYW5lbFN0YXRlOiBBbmltYXRpb25TdGF0ZTtcbiAgbnVtcGFkUmVmOiBNYXROdW1wYWRSZWY7XG4gIGlucHV0RWxlbWVudDogYW55O1xuICBjb2x1bW5Db3VudCA9IDQ7XG5cbiAgZmlsdGVyZWRLZXltYXAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hdE51bXBhZEtleW1hcD4odW5kZWZpbmVkKTtcblxuICAvLyBDb25maWcgb3B0aW9uc1xuICBkZWNpbWFsOiBib29sZWFuO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgYXBwZW5kVG9JbnB1dDogYm9vbGVhbjtcbiAga2V5bWFwOiBNYXROdW1wYWRLZXltYXA7XG4gIGRpc2FibGVBbmltYXRpb246IGJvb2xlYW47XG4gIG5vQmFja2Ryb3A6IGJvb2xlYW47XG4gIHBvc2l0aW9uOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW251bXBhZC1jb250YWluZXJdIENyZWF0aW5nIGNvbXBvbmVudCcpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmtleW1hcCB8fCAhdGhpcy5rZXltYXAubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FuIGludmFsaWQgXFwna2V5bWFwXFwnIHdhcyBzZW50IHRvIG51bXBhZCBjb250YWluZXInKTtcbiAgICB9XG5cblxuICAgIGlmICghdGhpcy5kaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICBpZiAodGhpcy5hcHBlbmRUb0lucHV0KSB7XG4gICAgICAgIHRoaXMucGFuZWxTdGF0ZSA9IEFuaW1hdGlvblN0YXRlLkVOVEVSO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMubW9kYWxTdGF0ZSA9IEFuaW1hdGlvblN0YXRlLkVOVEVSO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubm9CYWNrZHJvcCA9IHRoaXMubm9CYWNrZHJvcCB8fCB0aGlzLmFwcGVuZFRvSW5wdXQ7XG4gICAgaWYgKCF0aGlzLm5vQmFja2Ryb3ApIHtcbiAgICAgIHRoaXMuYmFja2Ryb3BTdGF0ZSA9IEFuaW1hdGlvblN0YXRlLkVOVEVSO1xuICAgIH1cblxuICAgIGNvbnN0IGtleW1hcCA9IHRoaXMuZGVmaW5lRmlsdGVyZWRLZXltYXAoKTtcbiAgICB0aGlzLmZpbHRlcmVkS2V5bWFwLm5leHQoa2V5bWFwKTtcblxuICAgIC8vIENvdW50IGNvbHVtbnNcbiAgICB0aGlzLmNvbHVtbkNvdW50ID0ga2V5bWFwLnJlZHVjZSgocmVzLCByb3cpID0+IHJvdyAmJiBNYXRoLm1heChyZXMsIHJvdy5sZW5ndGgpLCAwKTtcbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW251bXBhZC1jb250YWluZXJdIGNvbHVtbkNvdW50PScgKyB0aGlzLmNvbHVtbkNvdW50KTtcblxuICAgIC8vdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICB9XG5cbiAgb25CdXR0b25DbGljayhldmVudDogRXZlbnQsIGtleURlZjogTWF0TnVtcGFkS2V5KSB7XG4gICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoJ1tudW1wYWQtY29udGFpbmVyXSBvbktleVByZXNzKCkgJywga2V5RGVmLmtleSk7XG5cbiAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBNYXROdW1wYWRFdmVudCgna2V5cHJlc3MnLCB7a2V5OiBrZXlEZWYua2V5LCB0YXJnZXQ6IHRoaXMuaW5wdXRFbGVtZW50fSk7XG5cbiAgICAgIC8ve2RldGFpbDogey4uLmtleURlZiwgdGFyZ2V0OiB0aGlzLmlucHV0RWxlbWVudH19KVxuICAgIHRoaXMubnVtcGFkUmVmLmtleXByZXNzLm5leHQoY3VzdG9tRXZlbnQpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24nLCBbJyRldmVudCddKVxuICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAvL2lmICh0aGlzLmRlYnVnKVxuICAgIGNvbnNvbGUuZGVidWcoJ1tudW1wYWQtY29udGFpbmVyXSBvbktleXByZXNzKCknLCBldmVudCk7XG4gICAgdGhpcy5udW1wYWRSZWYua2V5cHJlc3MubmV4dChldmVudCk7XG4gIH1cblxuICBvdmVybGF5Q2xpY2soZXZlbnQ6IEV2ZW50KSB7XG5cbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICB0aGlzLm51bXBhZFJlZi5jbG9zZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1vZGFsU3RhdGUpIHRoaXMubW9kYWxTdGF0ZSA9IEFuaW1hdGlvblN0YXRlLkxFQVZFO1xuICAgIGlmICh0aGlzLnBhbmVsU3RhdGUpIHRoaXMucGFuZWxTdGF0ZSA9IEFuaW1hdGlvblN0YXRlLkxFQVZFO1xuICAgIGlmICh0aGlzLmJhY2tkcm9wU3RhdGUpIHRoaXMuYmFja2Ryb3BTdGF0ZSA9IEFuaW1hdGlvblN0YXRlLkxFQVZFO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBhbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5waGFzZU5hbWUgPT09ICdkb25lJyAmJiBldmVudC50b1N0YXRlID09PSBBbmltYXRpb25TdGF0ZS5MRUFWRSkge1xuICAgICAgdGhpcy5udW1wYWRSZWYuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVmaW5lRmlsdGVyZWRLZXltYXAoKTogTWF0TnVtcGFkS2V5bWFwIHtcbiAgICBsZXQga2V5bWFwID0gdGhpcy5rZXltYXA7XG5cbiAgICAvLyBSZXBsYWNlIGRlY2ltYWwgc2VwYXJhdG9yIGJ1dHRvbiwgYnkgZW1wdHlcbiAgICBpZiAoIXRoaXMuZGVjaW1hbCkge1xuICAgICAga2V5bWFwID0ga2V5bWFwLm1hcChyb3cgPT4gcm93Lm1hcChpdGVtID0+IGl0ZW0gJiYgaXRlbS5rZXkgIT09ICcuJyAmJiBpdGVtLmtleSAhPT0gJywnID8gaXRlbSA6IG51bGwpKTtcbiAgICB9XG5cbiAgICByZXR1cm4ga2V5bWFwO1xuICB9XG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwibnVtcGFkLWJhY2tkcm9wLW92ZXJsYXlcIlxuICAgICAqbmdJZj1cIiFub0JhY2tkcm9wXCJcbiAgICAgKGNsaWNrKT1cIm92ZXJsYXlDbGljaygkZXZlbnQpXCJcbiAgICAgW0BudW1wYWRCYWNrZHJvcF09XCJiYWNrZHJvcFN0YXRlXCI+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJudW1wYWQtb3ZlcmxheVwiPlxuICA8bWF0LW51bXBhZC1jb250ZW50IFthcHBlbmRUb0lucHV0XT1cImFwcGVuZFRvSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEVsZW1lbnRdPVwiaW5wdXRFbGVtZW50XCIgY2RrVHJhcEZvY3VzPlxuICAgIDxkaXYgY2xhc3M9XCJudW1wYWQge3twb3NpdGlvbn19XCJcbiAgICAgICAgIFtjbGFzcy5wYW5lbF09XCJhcHBlbmRUb0lucHV0XCJcbiAgICAgICAgIFtAbnVtcGFkUGFuZWxFeHBhbnNpb25dPVwicGFuZWxTdGF0ZVwiXG4gICAgICAgICAoQG51bXBhZFBhbmVsRXhwYW5zaW9uLmRvbmUpPVwiYW5pbWF0aW9uRG9uZSgkZXZlbnQpXCJcbiAgICAgICAgIFtAbnVtcGFkRmFkZUluXT1cIm1vZGFsU3RhdGVcIlxuICAgICAgICAgKEBudW1wYWRGYWRlSW4uZG9uZSk9XCJhbmltYXRpb25Eb25lKCRldmVudClcIj5cbiAgICAgIDxpb24tZ3JpZD5cbiAgICAgICAgPGlvbi1yb3cgKm5nRm9yPVwibGV0IHJvdyBvZiBmaWx0ZXJlZEtleW1hcCB8IGFzeW5jXCI+XG4gICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cInt7MTIvY29sdW1uQ291bnR9fVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJvd1wiPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gbWF0LWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cIml0ZW0uY29sb3IgfHwgJ3NlY29uZGFyeSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQnV0dG9uQ2xpY2soJGV2ZW50LCBpdGVtKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gKm5nSWY9XCJpdGVtLmljb247IGVsc2UgbGFiZWxcIiBzbG90PVwiaWNvbi1vbmx5XCIgW25hbWVdPVwiaXRlbS5pY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNsYWJlbD5cbiAgICAgICAgICAgICAgPGlvbi1sYWJlbD57eyAoaXRlbS5sYWJlbCB8fCBpdGVtLmtleSkgfCB0cmFuc2xhdGUgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgIDwvaW9uLXJvdz5cbiAgICAgIDwvaW9uLWdyaWQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LW51bXBhZC1jb250ZW50PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
import * as i2 from "./numpad.append-to-input.directive";
|
|
5
|
-
export class MatNumpadContent {
|
|
6
|
-
appendToInput;
|
|
7
|
-
inputElement;
|
|
8
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: MatNumpadContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: MatNumpadContent, selector: "mat-numpad-content", inputs: { appendToInput: "appendToInput", inputElement: "inputElement" }, ngImport: i0, template: "<div [appendNumpadToInput]=\"inputElement\" *ngIf=\"appendToInput; else modal\">\n <!--suppress HtmlUnknownAttribute -->\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n\n<ng-template #modal>\n <!--suppress HtmlUnknownAttribute -->\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.AppendToInputDirective, selector: "[appendNumpadToInput]", inputs: ["appendNumpadToInput"] }] });
|
|
10
|
-
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: MatNumpadContent, decorators: [{
|
|
12
|
-
type: Component,
|
|
13
|
-
args: [{ selector: 'mat-numpad-content', template: "<div [appendNumpadToInput]=\"inputElement\" *ngIf=\"appendToInput; else modal\">\n <!--suppress HtmlUnknownAttribute -->\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n\n<ng-template #modal>\n <!--suppress HtmlUnknownAttribute -->\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n" }]
|
|
14
|
-
}], propDecorators: { appendToInput: [{
|
|
15
|
-
type: Input
|
|
16
|
-
}], inputElement: [{
|
|
17
|
-
type: Input
|
|
18
|
-
}] } });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtcGFkLmNvbnRlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9udW1wYWQvbnVtcGFkLmNvbnRlbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9udW1wYWQvbnVtcGFkLmNvbnRlbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQzs7OztBQU0vQyxNQUFNLE9BQU8sZ0JBQWdCO0lBQ2hCLGFBQWEsQ0FBVTtJQUN2QixZQUFZLENBQU07dUdBRmxCLGdCQUFnQjsyRkFBaEIsZ0JBQWdCLG9JQ043QixxYUFhQTs7MkZEUGEsZ0JBQWdCO2tCQUo1QixTQUFTOytCQUNJLG9CQUFvQjs4QkFJckIsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtYXQtbnVtcGFkLWNvbnRlbnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9udW1wYWQuY29udGVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgTWF0TnVtcGFkQ29udGVudCB7XG4gICAgQElucHV0KCkgYXBwZW5kVG9JbnB1dDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpbnB1dEVsZW1lbnQ6IGFueTtcbn1cbiIsIjxkaXYgW2FwcGVuZE51bXBhZFRvSW5wdXRdPVwiaW5wdXRFbGVtZW50XCIgKm5nSWY9XCJhcHBlbmRUb0lucHV0OyBlbHNlIG1vZGFsXCI+XG4gICAgPCEtLXN1cHByZXNzIEh0bWxVbmtub3duQXR0cmlidXRlIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNtb2RhbD5cbiAgICA8IS0tc3VwcHJlc3MgSHRtbFVua25vd25BdHRyaWJ1dGUgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { Directive, HostListener, Input } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class NumpadDirective {
|
|
5
|
-
elementRef;
|
|
6
|
-
_numpad;
|
|
7
|
-
keymap;
|
|
8
|
-
set numpad(numpad) {
|
|
9
|
-
this.registerNumpad(numpad);
|
|
10
|
-
}
|
|
11
|
-
set value(value) {
|
|
12
|
-
this._value = value || '';
|
|
13
|
-
this.updateInputValue();
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
get value() {
|
|
17
|
-
if (!this._value) {
|
|
18
|
-
return '';
|
|
19
|
-
}
|
|
20
|
-
return this._value;
|
|
21
|
-
}
|
|
22
|
-
_value = '';
|
|
23
|
-
disabled;
|
|
24
|
-
decimal;
|
|
25
|
-
disableClick;
|
|
26
|
-
numpadSubscriptions = [];
|
|
27
|
-
onTouched = () => {
|
|
28
|
-
};
|
|
29
|
-
onChange = () => {
|
|
30
|
-
};
|
|
31
|
-
constructor(elementRef) {
|
|
32
|
-
this.elementRef = elementRef;
|
|
33
|
-
}
|
|
34
|
-
get element() {
|
|
35
|
-
return this.elementRef && this.elementRef.nativeElement;
|
|
36
|
-
}
|
|
37
|
-
updateValue(value) {
|
|
38
|
-
console.debug('[numpad-directive] updateValue()', value);
|
|
39
|
-
this.value = value;
|
|
40
|
-
this.onChange(value);
|
|
41
|
-
}
|
|
42
|
-
ngOnChanges(changes) {
|
|
43
|
-
/*if (changes['value'] && changes['value'].currentValue) {
|
|
44
|
-
this.defaultValue = changes['value'].currentValue;
|
|
45
|
-
}*/
|
|
46
|
-
}
|
|
47
|
-
onClick(event) {
|
|
48
|
-
if (!this.disableClick) {
|
|
49
|
-
this._numpad.open();
|
|
50
|
-
event.preventDefault();
|
|
51
|
-
event.stopPropagation();
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
writeValue(value) {
|
|
55
|
-
this.value = value;
|
|
56
|
-
if (value) {
|
|
57
|
-
//this.defaultValue = value;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
registerOnChange(fn) {
|
|
61
|
-
this.onChange = fn;
|
|
62
|
-
}
|
|
63
|
-
registerOnTouched(fn) {
|
|
64
|
-
this.onTouched = fn;
|
|
65
|
-
}
|
|
66
|
-
setDisabledState(isDisabled) {
|
|
67
|
-
this.disabled = isDisabled;
|
|
68
|
-
}
|
|
69
|
-
ngOnDestroy() {
|
|
70
|
-
this.numpadSubscriptions.forEach(s => s.unsubscribe());
|
|
71
|
-
}
|
|
72
|
-
registerNumpad(numpad) {
|
|
73
|
-
if (numpad) {
|
|
74
|
-
console.debug('[numpad-directive] Registering numpad', numpad);
|
|
75
|
-
this._numpad = numpad;
|
|
76
|
-
this._numpad.registerInput(this);
|
|
77
|
-
this.numpadSubscriptions.push(this._numpad.keypress
|
|
78
|
-
.pipe(
|
|
79
|
-
//filter(event => event.inputTarget === this.element)
|
|
80
|
-
)
|
|
81
|
-
.subscribe(event => this.applyingKey(event)));
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
throw new Error('MatNumpadComponent is not defined.' +
|
|
85
|
-
' Please make sure you passed the numpad to matNumpad directive');
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
applyingKey(event) {
|
|
89
|
-
console.debug('[numpad-directive] Receiving key=' + event.key);
|
|
90
|
-
let value = this.value !== null && this.value !== undefined ? this.value : '';
|
|
91
|
-
// Remove french decimal separator
|
|
92
|
-
value = (typeof value === 'number') ? ('' + value) : value.replace(',', '.');
|
|
93
|
-
if (event.key === '.' || event.key === ',') {
|
|
94
|
-
if (value.indexOf('.') === -1) {
|
|
95
|
-
value += '.';
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
else if (event.key === 'Backspace') {
|
|
99
|
-
// Remove last character
|
|
100
|
-
value = value.length > 1 ? value.substr(0, value.length - 1) : '';
|
|
101
|
-
}
|
|
102
|
-
else if (event.key === 'Enter' || event.keyCode === 13) {
|
|
103
|
-
this._numpad.close();
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
else if (event.key === 'Tab') {
|
|
107
|
-
// TODO goto next input ?
|
|
108
|
-
return; // Skip
|
|
109
|
-
}
|
|
110
|
-
else if (event.key === 'Escape') {
|
|
111
|
-
this._numpad.close();
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
value += (event.key || '');
|
|
116
|
-
}
|
|
117
|
-
this.updateValue(value);
|
|
118
|
-
this.onTouched();
|
|
119
|
-
}
|
|
120
|
-
updateInputValue() {
|
|
121
|
-
this.elementRef.nativeElement.value = this.value;
|
|
122
|
-
}
|
|
123
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: NumpadDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
124
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.6", type: NumpadDirective, selector: "[matNumpad]", inputs: { keymap: "keymap", numpad: ["matNumpad", "numpad"], value: "value", disabled: "disabled", decimal: "decimal", disableClick: "disableClick" }, host: { listeners: { "click": "onClick($event)", "change": "updateValue($event.target.value)", "blur": "onTouched()" }, properties: { "disabled": "disabled" } }, providers: [
|
|
125
|
-
{
|
|
126
|
-
provide: NG_VALUE_ACCESSOR,
|
|
127
|
-
useExisting: NumpadDirective,
|
|
128
|
-
multi: true
|
|
129
|
-
}
|
|
130
|
-
], usesOnChanges: true, ngImport: i0 });
|
|
131
|
-
}
|
|
132
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: NumpadDirective, decorators: [{
|
|
133
|
-
type: Directive,
|
|
134
|
-
args: [{
|
|
135
|
-
selector: '[matNumpad]',
|
|
136
|
-
providers: [
|
|
137
|
-
{
|
|
138
|
-
provide: NG_VALUE_ACCESSOR,
|
|
139
|
-
useExisting: NumpadDirective,
|
|
140
|
-
multi: true
|
|
141
|
-
}
|
|
142
|
-
],
|
|
143
|
-
host: {
|
|
144
|
-
'[disabled]': 'disabled',
|
|
145
|
-
// '[decimal]': 'decimal',
|
|
146
|
-
'(click)': 'onClick($event)',
|
|
147
|
-
'(change)': 'updateValue($event.target.value)',
|
|
148
|
-
'(blur)': 'onTouched()'
|
|
149
|
-
},
|
|
150
|
-
}]
|
|
151
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { keymap: [{
|
|
152
|
-
type: Input
|
|
153
|
-
}], numpad: [{
|
|
154
|
-
type: Input,
|
|
155
|
-
args: ['matNumpad']
|
|
156
|
-
}], value: [{
|
|
157
|
-
type: Input
|
|
158
|
-
}], disabled: [{
|
|
159
|
-
type: Input
|
|
160
|
-
}], decimal: [{
|
|
161
|
-
type: Input
|
|
162
|
-
}], disableClick: [{
|
|
163
|
-
type: Input
|
|
164
|
-
}], onClick: [{
|
|
165
|
-
type: HostListener,
|
|
166
|
-
args: ['click', ['$event']]
|
|
167
|
-
}] } });
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtcGFkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL251bXBhZC9udW1wYWQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBc0MsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUF1QixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQXNCdkUsTUFBTSxPQUFPLGVBQWU7SUF1Q047SUFyQ1osT0FBTyxDQUFxQjtJQUUzQixNQUFNLENBQWtCO0lBRWpDLElBQ0ksTUFBTSxDQUFDLE1BQTBCO1FBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQ0ksS0FBSyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLE9BQU87SUFDVCxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUVYLFFBQVEsQ0FBVTtJQUNsQixPQUFPLENBQVU7SUFDakIsWUFBWSxDQUFVO0lBRXZCLG1CQUFtQixHQUFtQixFQUFFLENBQUM7SUFFakQsU0FBUyxHQUFHLEdBQUcsRUFBRTtJQUNqQixDQUFDLENBQUM7SUFFTSxRQUFRLEdBQXlCLEdBQUcsRUFBRTtJQUM5QyxDQUFDLENBQUM7SUFFRixZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQzFDLENBQUM7SUFF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RSxJQUFJO2FBQ1o7U0FDRjs7MkZBU1UsZUFBZTtrQkFqQjNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLGlCQUFpQjs0QkFDNUIsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLFlBQVksRUFBRSxVQUFVO3dCQUN4QiwwQkFBMEI7d0JBQzFCLFNBQVMsRUFBRSxpQkFBaUI7d0JBQzVCLFVBQVUsRUFBRSxrQ0FBa0M7d0JBQzlDLFFBQVEsRUFBRSxhQUFhO3FCQUN4QjtpQkFDRjsrRUFLVSxNQUFNO3NCQUFkLEtBQUs7Z0JBR0YsTUFBTTtzQkFEVCxLQUFLO3VCQUFDLFdBQVc7Z0JBTWQsS0FBSztzQkFEUixLQUFLO2dCQWdCRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQThCTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge01hdE51bXBhZEtleW1hcH0gZnJvbSAnLi9udW1wYWQubW9kZWwnO1xuaW1wb3J0IHtNYXROdW1wYWRDb21wb25lbnR9IGZyb20gJy4vbnVtcGFkLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttYXROdW1wYWRdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogTnVtcGFkRGlyZWN0aXZlLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgLy8gJ1tkZWNpbWFsXSc6ICdkZWNpbWFsJyxcbiAgICAnKGNsaWNrKSc6ICdvbkNsaWNrKCRldmVudCknLFxuICAgICcoY2hhbmdlKSc6ICd1cGRhdGVWYWx1ZSgkZXZlbnQudGFyZ2V0LnZhbHVlKScsXG4gICAgJyhibHVyKSc6ICdvblRvdWNoZWQoKSdcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTnVtcGFkRGlyZWN0aXZlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblxuICBwcml2YXRlIF9udW1wYWQ6IE1hdE51bXBhZENvbXBvbmVudDtcblxuICBASW5wdXQoKSBrZXltYXA6IE1hdE51bXBhZEtleW1hcDtcblxuICBASW5wdXQoJ21hdE51bXBhZCcpXG4gIHNldCBudW1wYWQobnVtcGFkOiBNYXROdW1wYWRDb21wb25lbnQpIHtcbiAgICB0aGlzLnJlZ2lzdGVyTnVtcGFkKG51bXBhZCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWUgfHwgJyc7XG4gICAgdGhpcy51cGRhdGVJbnB1dFZhbHVlKCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl92YWx1ZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF92YWx1ZSA9ICcnO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBkZWNpbWFsOiBib29sZWFuO1xuICBASW5wdXQoKSBkaXNhYmxlQ2xpY2s6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBudW1wYWRTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIG9uVG91Y2hlZCA9ICgpID0+IHtcbiAgfTtcblxuICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHtcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgfVxuXG4gIGdldCBlbGVtZW50KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZiAmJiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHVwZGF0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zb2xlLmRlYnVnKCdbbnVtcGFkLWRpcmVjdGl2ZV0gdXBkYXRlVmFsdWUoKScsIHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKXtcbiAgICAvKmlmIChjaGFuZ2VzWyd2YWx1ZSddICYmIGNoYW5nZXNbJ3ZhbHVlJ10uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IGNoYW5nZXNbJ3ZhbHVlJ10uY3VycmVudFZhbHVlO1xuICAgIH0qL1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBvbkNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghdGhpcy5kaXNhYmxlQ2xpY2spIHtcbiAgICAgIHRoaXMuX251bXBhZC5vcGVuKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgLy90aGlzLmRlZmF1bHRWYWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMubnVtcGFkU3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJOdW1wYWQobnVtcGFkOiBNYXROdW1wYWRDb21wb25lbnQpOiB2b2lkIHtcbiAgICBpZiAobnVtcGFkKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbbnVtcGFkLWRpcmVjdGl2ZV0gUmVnaXN0ZXJpbmcgbnVtcGFkJywgbnVtcGFkKTtcbiAgICAgIHRoaXMuX251bXBhZCA9IG51bXBhZDtcbiAgICAgIHRoaXMuX251bXBhZC5yZWdpc3RlcklucHV0KHRoaXMpO1xuICAgICAgdGhpcy5udW1wYWRTdWJzY3JpcHRpb25zLnB1c2godGhpcy5fbnVtcGFkLmtleXByZXNzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIC8vZmlsdGVyKGV2ZW50ID0+IGV2ZW50LmlucHV0VGFyZ2V0ID09PSB0aGlzLmVsZW1lbnQpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB0aGlzLmFwcGx5aW5nS2V5KGV2ZW50KSlcbiAgICAgICAgKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hdE51bXBhZENvbXBvbmVudCBpcyBub3QgZGVmaW5lZC4nICtcbiAgICAgICAgJyBQbGVhc2UgbWFrZSBzdXJlIHlvdSBwYXNzZWQgdGhlIG51bXBhZCB0byBtYXROdW1wYWQgZGlyZWN0aXZlJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseWluZ0tleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnNvbGUuZGVidWcoJ1tudW1wYWQtZGlyZWN0aXZlXSBSZWNlaXZpbmcga2V5PScgKyBldmVudC5rZXkpO1xuICAgIGxldCB2YWx1ZSA9IHRoaXMudmFsdWUgIT09IG51bGwgJiYgdGhpcy52YWx1ZSAhPT0gdW5kZWZpbmVkID8gdGhpcy52YWx1ZSA6ICcnO1xuICAgIC8vIFJlbW92ZSBmcmVuY2ggZGVjaW1hbCBzZXBhcmF0b3JcbiAgICB2YWx1ZSA9ICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSA/ICgnJyArIHZhbHVlKSA6IHZhbHVlLnJlcGxhY2UoJywnLCAnLicpO1xuICAgIGlmIChldmVudC5rZXkgPT09ICcuJyB8fCBldmVudC5rZXkgPT09ICcsJykge1xuICAgICAgaWYgKHZhbHVlLmluZGV4T2YoJy4nKSA9PT0gLTEpIHtcbiAgICAgICAgdmFsdWUgKz0gJy4nO1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0JhY2tzcGFjZScpIHtcbiAgICAgIC8vIFJlbW92ZSBsYXN0IGNoYXJhY3RlclxuICAgICAgdmFsdWUgPSB2YWx1ZS5sZW5ndGggPiAxID8gdmFsdWUuc3Vic3RyKDAsIHZhbHVlLmxlbmd0aCAtIDEpIDogJyc7XG4gICAgfVxuICAgIGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fCBldmVudC5rZXlDb2RlID09PSAxMykge1xuICAgICAgdGhpcy5fbnVtcGFkLmNsb3NlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgIC8vIFRPRE8gZ290byBuZXh0IGlucHV0ID9cbiAgICAgIHJldHVybjsgLy8gU2tpcFxuICAgIH1cbiAgICBlbHNlIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICB0aGlzLl9udW1wYWQuY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB2YWx1ZSArPSAoZXZlbnQua2V5IHx8ICcnKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbnB1dFZhbHVlKCk6IHZvaWQge1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgfVxuXG59XG5cbiJdfQ==
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { inject, Injectable } from '@angular/core';
|
|
2
|
-
import { DOCUMENT } from '@angular/common';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class MatNumpadDomService {
|
|
5
|
-
cfr;
|
|
6
|
-
appRef;
|
|
7
|
-
injector;
|
|
8
|
-
componentRef;
|
|
9
|
-
_document = inject(DOCUMENT);
|
|
10
|
-
constructor(cfr, appRef, injector) {
|
|
11
|
-
this.cfr = cfr;
|
|
12
|
-
this.appRef = appRef;
|
|
13
|
-
this.injector = injector;
|
|
14
|
-
}
|
|
15
|
-
appendNumpadToBody(numpadType, config) {
|
|
16
|
-
this.componentRef = this.cfr.resolveComponentFactory(numpadType).create(this.injector);
|
|
17
|
-
Object.keys(config).forEach(key => this.componentRef.instance[key] = config[key]);
|
|
18
|
-
this.appRef.attachView(this.componentRef.hostView);
|
|
19
|
-
const domElement = this.componentRef.hostView
|
|
20
|
-
.rootNodes[0];
|
|
21
|
-
this._document.body.appendChild(domElement);
|
|
22
|
-
}
|
|
23
|
-
destroyNumpad() {
|
|
24
|
-
this.componentRef.destroy();
|
|
25
|
-
this.appRef.detachView(this.componentRef.hostView);
|
|
26
|
-
}
|
|
27
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: MatNumpadDomService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
28
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: MatNumpadDomService, providedIn: 'root' });
|
|
29
|
-
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: MatNumpadDomService, decorators: [{
|
|
31
|
-
type: Injectable,
|
|
32
|
-
args: [{
|
|
33
|
-
providedIn: 'root'
|
|
34
|
-
}]
|
|
35
|
-
}], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }] });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtcGFkLmRvbS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvbnVtcGFkL251bXBhZC5kb20tc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTBFLE1BQU0sRUFBRSxVQUFVLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzFJLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7QUFPekMsTUFBTSxPQUFPLG1CQUFtQjtJQUtWO0lBQ0E7SUFDQTtJQUxaLFlBQVksQ0FBNEM7SUFDeEQsU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVyQyxZQUFvQixHQUE2QixFQUM3QixNQUFzQixFQUN0QixRQUFrQjtRQUZsQixRQUFHLEdBQUgsR0FBRyxDQUEwQjtRQUM3QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQ3RDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxVQUE2QyxFQUFFLE1BQXVCO1FBQ3ZGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZGLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFbEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVuRCxNQUFNLFVBQVUsR0FBaUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUF5RDthQUN6RyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELENBQUM7dUdBMUJVLG1CQUFtQjsyR0FBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FwcGxpY2F0aW9uUmVmLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIENvbXBvbmVudFJlZiwgRW1iZWRkZWRWaWV3UmVmLCBpbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge01hdE51bXBhZENvbnRhaW5lckNvbXBvbmVudH0gZnJvbSAnLi9udW1wYWQuY29udGFpbmVyJztcbmltcG9ydCB7TWF0TnVtcGFkQ29uZmlnfSBmcm9tICcuL251bXBhZC5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1hdE51bXBhZERvbVNlcnZpY2Uge1xuXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8TWF0TnVtcGFkQ29udGFpbmVyQ29tcG9uZW50PjtcbiAgcHJpdmF0ZSBfZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgfVxuXG4gIGFwcGVuZE51bXBhZFRvQm9keShudW1wYWRUeXBlOiBUeXBlPE1hdE51bXBhZENvbnRhaW5lckNvbXBvbmVudD4sIGNvbmZpZzogTWF0TnVtcGFkQ29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNmci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShudW1wYWRUeXBlKS5jcmVhdGUodGhpcy5pbmplY3Rvcik7XG5cbiAgICBPYmplY3Qua2V5cyhjb25maWcpLmZvckVhY2goa2V5ID0+IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlW2tleV0gPSBjb25maWdba2V5XSk7XG5cbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcblxuICAgIGNvbnN0IGRvbUVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gKHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxNYXROdW1wYWRDb250YWluZXJDb21wb25lbnQ+KVxuICAgICAgLnJvb3ROb2Rlc1swXTtcblxuICAgIHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9tRWxlbWVudCk7XG4gIH1cblxuICBkZXN0cm95TnVtcGFkKCk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgfVxufVxuIl19
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export const DEFAULT_KEYMAP = [
|
|
2
|
-
[{ key: '1' }, { key: '2' }, { key: '3' }, { key: 'Backspace', icon: 'backspace', color: 'light' }],
|
|
3
|
-
[{ key: '4' }, { key: '5' }, { key: '6' }, { key: 'Tab', label: 'COMMON.BTN_NEXT_SHORT', color: 'light' }],
|
|
4
|
-
[{ key: '7' }, { key: '8' }, { key: '9' }, { key: '.', label: 'COMMON.BTN_DECIMAL_SEPARATOR', color: 'light' }],
|
|
5
|
-
[null, { key: '0' }, null, { key: 'Enter', icon: 'checkmark', color: 'tertiary' }]
|
|
6
|
-
];
|
|
7
|
-
//export declare type MatNumpadEventDetail = MatNumpadKey & {target: any};
|
|
8
|
-
//export declare type MatNumpadEvent = CustomEvent<MatNumpadEventDetail>
|
|
9
|
-
export class MatNumpadEvent extends KeyboardEvent {
|
|
10
|
-
inputTarget;
|
|
11
|
-
constructor(type, init) {
|
|
12
|
-
super(type, init);
|
|
13
|
-
this.inputTarget = init && init.target;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtcGFkLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvbnVtcGFkL251bXBhZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQ0EsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFvQjtJQUM3QyxDQUFDLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUMsQ0FBQztJQUMzRixDQUFDLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBQyxDQUFDO0lBQ2xHLENBQUMsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSw4QkFBOEIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFDLENBQUM7SUFDdkcsQ0FBQyxJQUFJLEVBQUUsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEVBQUUsSUFBSSxFQUFHLEVBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUMsQ0FBQztDQUNoRixDQUFDO0FBRUYsMEVBQTBFO0FBQzFFLHdFQUF3RTtBQUV4RSxNQUFNLE9BQU8sY0FBZSxTQUFRLGFBQWE7SUFDL0MsV0FBVyxDQUFNO0lBQ2pCLFlBQVksSUFBWSxFQUFFLElBQXVDO1FBQy9ELEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN6QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWF0TnVtcGFkUmVmIHtcblxuICAgIGtleXByZXNzOiBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD47XG5cbiAgICBjbG9zZSgpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hdE51bXBhZENvbmZpZyB7XG4gIGlucHV0RWxlbWVudDogYW55O1xuICBrZXltYXA6IE1hdE51bXBhZEtleVtdW107XG4gIG51bXBhZFJlZjogTWF0TnVtcGFkUmVmO1xuICBkZWNpbWFsOiBib29sZWFuO1xuICBkaXNhYmxlQW5pbWF0aW9uOiBib29sZWFuO1xuICBub0JhY2tkcm9wOiBib29sZWFuO1xuICBwb3NpdGlvbjogc3RyaW5nO1xuXG4gIGFwcGVuZFRvSW5wdXQ6IGJvb2xlYW47XG4gIC8vIFRPRE9cbiAgLy9jc3NDbGFzcyB3aWR0aCA9IHNjb3BlLnNldHRpbmdzLndpZHRoIHx8ICcxMDAlJztcbiAgLy9zY29wZS5hbGlnbiA9IHNjb3BlLnNldHRpbmdzLmFsaWduIHx8ICdjZW50ZXInO1xuICAvLyBhbmltYXRpb246ICdzbGlkZS11cCcgfCAncG9wJ1xuICAvLyByZXNpemVDb250ZW50OiB0cnVlXG4gIC8vIGFuaW1hdGlvbkR1cmF0aW9uID0gMTUwO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hdE51bXBhZEtleSB7XG4gIGtleTogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgY29sb3I/OiBzdHJpbmc7XG4gIG1hdEljb24/OiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgTWF0TnVtcGFkS2V5bWFwID0gTWF0TnVtcGFkS2V5W11bXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfS0VZTUFQOiBNYXROdW1wYWRLZXltYXAgPSBbXG4gIFt7a2V5OiAnMSd9LCB7a2V5OiAnMid9LCB7a2V5OiAnMyd9LCB7a2V5OiAnQmFja3NwYWNlJywgaWNvbjogJ2JhY2tzcGFjZScsIGNvbG9yOiAnbGlnaHQnfV0sXG4gIFt7a2V5OiAnNCd9LCB7a2V5OiAnNSd9LCB7a2V5OiAnNid9LCB7a2V5OiAnVGFiJywgbGFiZWw6ICdDT01NT04uQlROX05FWFRfU0hPUlQnLCBjb2xvcjogJ2xpZ2h0J31dLFxuICBbe2tleTogJzcnfSwge2tleTogJzgnfSwge2tleTogJzknfSwge2tleTogJy4nLCBsYWJlbDogJ0NPTU1PTi5CVE5fREVDSU1BTF9TRVBBUkFUT1InLCBjb2xvcjogJ2xpZ2h0J31dLFxuICBbbnVsbCwge2tleTogJzAnfSwgbnVsbCwgIHtrZXk6ICdFbnRlcicsIGljb246ICdjaGVja21hcmsnLCBjb2xvcjogJ3RlcnRpYXJ5J31dXG5dO1xuXG4vL2V4cG9ydCBkZWNsYXJlIHR5cGUgTWF0TnVtcGFkRXZlbnREZXRhaWwgPSBNYXROdW1wYWRLZXkgJiB7dGFyZ2V0OiBhbnl9O1xuLy9leHBvcnQgZGVjbGFyZSB0eXBlIE1hdE51bXBhZEV2ZW50ID0gQ3VzdG9tRXZlbnQ8TWF0TnVtcGFkRXZlbnREZXRhaWw+XG5cbmV4cG9ydCBjbGFzcyBNYXROdW1wYWRFdmVudCBleHRlbmRzIEtleWJvYXJkRXZlbnQge1xuICBpbnB1dFRhcmdldDogYW55O1xuICBjb25zdHJ1Y3Rvcih0eXBlOiBzdHJpbmcsIGluaXQ6IEtleWJvYXJkRXZlbnRJbml0ICYge3RhcmdldDogYW55fSkge1xuICAgIHN1cGVyKHR5cGUsIGluaXQpO1xuICAgIHRoaXMuaW5wdXRUYXJnZXQgPSBpbml0ICYmIGluaXQudGFyZ2V0O1xuICB9XG59XG5cbiJdfQ==
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { IonicModule } from '@ionic/angular';
|
|
4
|
-
import { MatNumpadComponent } from './numpad.component';
|
|
5
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
6
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
7
|
-
import { NumpadDirective } from './numpad.directive';
|
|
8
|
-
import { MatNumpadContainerComponent } from './numpad.container';
|
|
9
|
-
import { MatNumpadContent } from './numpad.content';
|
|
10
|
-
import { AppendToInputDirective } from './numpad.append-to-input.directive';
|
|
11
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@ngx-translate/core";
|
|
14
|
-
export class SharedMatNumpadModule {
|
|
15
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: SharedMatNumpadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
16
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.6", ngImport: i0, type: SharedMatNumpadModule, declarations: [MatNumpadContainerComponent,
|
|
17
|
-
MatNumpadComponent,
|
|
18
|
-
MatNumpadContent,
|
|
19
|
-
NumpadDirective,
|
|
20
|
-
AppendToInputDirective], imports: [CommonModule,
|
|
21
|
-
IonicModule,
|
|
22
|
-
MatButtonModule,
|
|
23
|
-
MatIconModule, i1.TranslateModule], exports: [MatNumpadComponent,
|
|
24
|
-
NumpadDirective,
|
|
25
|
-
MatNumpadContainerComponent,
|
|
26
|
-
MatNumpadContent,
|
|
27
|
-
AppendToInputDirective] });
|
|
28
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: SharedMatNumpadModule, imports: [CommonModule,
|
|
29
|
-
IonicModule,
|
|
30
|
-
MatButtonModule,
|
|
31
|
-
MatIconModule,
|
|
32
|
-
TranslateModule.forChild()] });
|
|
33
|
-
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: SharedMatNumpadModule, decorators: [{
|
|
35
|
-
type: NgModule,
|
|
36
|
-
args: [{
|
|
37
|
-
imports: [
|
|
38
|
-
CommonModule,
|
|
39
|
-
IonicModule,
|
|
40
|
-
MatButtonModule,
|
|
41
|
-
MatIconModule,
|
|
42
|
-
TranslateModule.forChild()
|
|
43
|
-
],
|
|
44
|
-
exports: [
|
|
45
|
-
MatNumpadComponent,
|
|
46
|
-
NumpadDirective,
|
|
47
|
-
MatNumpadContainerComponent,
|
|
48
|
-
MatNumpadContent,
|
|
49
|
-
AppendToInputDirective
|
|
50
|
-
],
|
|
51
|
-
declarations: [
|
|
52
|
-
MatNumpadContainerComponent,
|
|
53
|
-
MatNumpadComponent,
|
|
54
|
-
MatNumpadContent,
|
|
55
|
-
NumpadDirective,
|
|
56
|
-
AppendToInputDirective
|
|
57
|
-
]
|
|
58
|
-
}]
|
|
59
|
-
}] });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtcGFkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL251bXBhZC9udW1wYWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7OztBQXlCekQsTUFBTSxPQUFPLHFCQUFxQjt1R0FBckIscUJBQXFCO3dHQUFyQixxQkFBcUIsaUJBUDlCLDJCQUEyQjtZQUMzQixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixzQkFBc0IsYUFsQnRCLFlBQVk7WUFDWixXQUFXO1lBQ1gsZUFBZTtZQUNmLGFBQWEsaUNBSWIsa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZiwyQkFBMkI7WUFDM0IsZ0JBQWdCO1lBQ2hCLHNCQUFzQjt3R0FVYixxQkFBcUIsWUFyQjlCLFlBQVk7WUFDWixXQUFXO1lBQ1gsZUFBZTtZQUNmLGFBQWE7WUFDYixlQUFlLENBQUMsUUFBUSxFQUFFOzsyRkFpQmpCLHFCQUFxQjtrQkF2QmpDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsZUFBZSxDQUFDLFFBQVEsRUFBRTtxQkFDM0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZiwyQkFBMkI7d0JBQzNCLGdCQUFnQjt3QkFDaEIsc0JBQXNCO3FCQUN2QjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osMkJBQTJCO3dCQUMzQixrQkFBa0I7d0JBQ2xCLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixzQkFBc0I7cUJBQ3ZCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7SW9uaWNNb2R1bGV9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7TWF0TnVtcGFkQ29tcG9uZW50fSBmcm9tICcuL251bXBhZC5jb21wb25lbnQnO1xuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7TnVtcGFkRGlyZWN0aXZlfSBmcm9tICcuL251bXBhZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtNYXROdW1wYWRDb250YWluZXJDb21wb25lbnR9IGZyb20gJy4vbnVtcGFkLmNvbnRhaW5lcic7XG5pbXBvcnQge01hdE51bXBhZENvbnRlbnR9IGZyb20gJy4vbnVtcGFkLmNvbnRlbnQnO1xuaW1wb3J0IHtBcHBlbmRUb0lucHV0RGlyZWN0aXZlfSBmcm9tICcuL251bXBhZC5hcHBlbmQtdG8taW5wdXQuZGlyZWN0aXZlJztcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvbmljTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBNYXROdW1wYWRDb21wb25lbnQsXG4gICAgTnVtcGFkRGlyZWN0aXZlLFxuICAgIE1hdE51bXBhZENvbnRhaW5lckNvbXBvbmVudCxcbiAgICBNYXROdW1wYWRDb250ZW50LFxuICAgIEFwcGVuZFRvSW5wdXREaXJlY3RpdmVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgTWF0TnVtcGFkQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIE1hdE51bXBhZENvbXBvbmVudCxcbiAgICBNYXROdW1wYWRDb250ZW50LFxuICAgIE51bXBhZERpcmVjdGl2ZSxcbiAgICBBcHBlbmRUb0lucHV0RGlyZWN0aXZlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2hhcmVkTWF0TnVtcGFkTW9kdWxlIHtcbn1cblxuIl19
|