@sumaris-net/ngx-components 2.0.0-rc9 → 2.0.2
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 +3 -1
- package/esm2020/public_api.mjs +35 -22
- package/esm2020/src/app/admin/admin-routing.module.mjs +6 -6
- package/esm2020/src/app/admin/admin.module.mjs +6 -6
- package/esm2020/src/app/admin/services/person.service.mjs +3 -3
- package/esm2020/src/app/admin/services/validator/person.validator.mjs +3 -3
- package/esm2020/src/app/admin/users/users.mjs +233 -0
- package/esm2020/src/app/admin/users/users.module.mjs +54 -0
- package/esm2020/src/app/core/about/about.modal.mjs +71 -0
- package/esm2020/src/app/core/about/about.module.mjs +34 -0
- package/esm2020/src/app/core/account/account.module.mjs +43 -0
- package/esm2020/src/app/core/account/account.page.mjs +239 -0
- package/esm2020/src/app/core/auth/auth.form.mjs +131 -0
- package/esm2020/src/app/core/auth/auth.modal.mjs +72 -0
- package/esm2020/src/app/core/auth/auth.module.mjs +47 -0
- package/esm2020/src/app/core/core.module.mjs +86 -125
- package/esm2020/src/app/core/core.testing.module.mjs +7 -7
- package/esm2020/src/app/core/form/{form-buttons-bar.component.mjs → buttons/form-buttons-bar.component.mjs} +7 -7
- package/esm2020/src/app/core/form/buttons/form-buttons-bar.module.mjs +35 -0
- package/esm2020/src/app/core/form/entity/editor.class.mjs +675 -0
- package/esm2020/src/app/core/form/entity/entity-editor-modal.class.mjs +421 -0
- package/esm2020/src/app/core/form/entity/entity-editor.class.mjs +646 -0
- package/esm2020/src/app/core/form/{entity-metadata.component.mjs → entity/entity-metadata.component.mjs} +6 -6
- package/esm2020/src/app/core/form/entity/entity.module.mjs +38 -0
- package/esm2020/src/app/core/form/form.class.mjs +4 -4
- package/esm2020/src/app/core/form/form.module.mjs +66 -0
- package/esm2020/src/app/core/form/list/list.form.mjs +222 -0
- package/esm2020/src/app/core/form/list/list.module.mjs +35 -0
- package/esm2020/src/app/core/form/properties/properties.form.mjs +3 -3
- package/esm2020/src/app/core/form/properties/properties.module.mjs +35 -0
- package/esm2020/src/app/core/form/properties/property.validator.mjs +4 -4
- package/esm2020/src/app/core/form/properties/testing/properties-form.test.mjs +3 -3
- package/esm2020/src/app/core/form/properties/testing/properties-form.testing.module.mjs +4 -4
- package/esm2020/src/app/core/{text-popover → form/text-popover}/testing/text-popover.testing.mjs +4 -4
- package/esm2020/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +45 -0
- package/esm2020/src/app/core/form/text-popover/text-form.component.mjs +89 -0
- package/esm2020/src/app/core/form/text-popover/text-popover.component.mjs +105 -0
- package/esm2020/src/app/core/form/text-popover/text-popover.module.mjs +40 -0
- package/esm2020/src/app/core/graphql/graphql.module.mjs +4 -4
- package/esm2020/src/app/core/graphql/graphql.service.mjs +12 -7
- package/esm2020/src/app/core/graphql/graphql.utils.mjs +2 -2
- package/esm2020/src/app/core/home/home.mjs +8 -8
- package/esm2020/src/app/core/home/home.module.mjs +48 -0
- package/esm2020/src/app/core/icon/icon.component.mjs +3 -3
- package/esm2020/src/app/core/icon/icon.module.mjs +4 -4
- package/esm2020/src/app/core/install/install-upgrade-card.component.mjs +3 -3
- package/esm2020/src/app/core/install/install-upgrade-card.module.mjs +17 -15
- package/esm2020/src/app/core/menu/menu.component.mjs +5 -5
- package/esm2020/src/app/core/menu/menu.module.mjs +9 -10
- package/esm2020/src/app/core/menu/menu.service.mjs +3 -3
- package/esm2020/src/app/core/offline/update-offline-mode-card.component.mjs +3 -3
- package/esm2020/src/app/core/offline/update-offline-mode-card.module.mjs +35 -0
- package/esm2020/src/app/core/peer/select-peer.modal.mjs +55 -11
- package/esm2020/src/app/core/peer/select-peer.module.mjs +17 -10
- package/esm2020/src/app/core/register/register-confirm.page.mjs +81 -0
- package/esm2020/src/app/core/register/register.form.mjs +181 -0
- package/esm2020/src/app/core/register/register.modal.mjs +52 -0
- package/esm2020/src/app/core/register/register.module.mjs +17 -15
- package/esm2020/src/app/core/services/account.service.mjs +22 -23
- package/esm2020/src/app/core/services/auth-guard.service.mjs +6 -6
- package/esm2020/src/app/core/services/base-entity-service.class.mjs +3 -3
- package/esm2020/src/app/core/services/base-graphql-service.class.mjs +8 -8
- package/esm2020/src/app/core/services/base58.mjs +2 -2
- package/esm2020/src/app/core/services/config.service.mjs +4 -4
- package/esm2020/src/app/core/services/crypto.service.mjs +82 -97
- package/esm2020/src/app/core/services/local-settings.service.mjs +8 -10
- package/esm2020/src/app/core/services/model/entity.decorators.mjs +44 -54
- package/esm2020/src/app/core/services/model/peer.model.mjs +3 -3
- package/esm2020/src/app/core/services/network.service.mjs +7 -7
- package/esm2020/src/app/core/services/pipes/account.pipes.mjs +8 -8
- package/esm2020/src/app/core/services/pipes/department-to-string.pipe.mjs +4 -4
- package/esm2020/src/app/core/services/pipes/person-to-string.pipe.mjs +4 -4
- package/esm2020/src/app/core/services/pipes/usage-mode.pipes.mjs +8 -8
- package/esm2020/src/app/core/services/platform.service.mjs +9 -10
- package/esm2020/src/app/core/services/storage/entities-storage.service.mjs +3 -3
- package/esm2020/src/app/core/services/storage/entity-store.class.mjs +4 -4
- package/esm2020/src/app/core/services/testing/referential.validator.mjs +3 -3
- package/esm2020/src/app/core/services/validator/account.validator.mjs +3 -3
- package/esm2020/src/app/core/services/validator/base.validator.class.mjs +3 -3
- package/esm2020/src/app/core/services/validator/local-settings.validator.mjs +3 -3
- package/esm2020/src/app/core/services/validator/user-settings.validator.mjs +3 -3
- package/esm2020/src/app/core/settings/settings.module.mjs +34 -0
- package/esm2020/src/app/core/settings/settings.page.mjs +12 -9
- package/esm2020/src/app/core/table/actions-column.component.mjs +3 -3
- package/esm2020/src/app/core/table/entities-table-datasource.class.mjs +13 -8
- package/esm2020/src/app/core/table/memory-table.class.mjs +3 -3
- package/esm2020/src/app/core/table/table-select-columns.component.mjs +3 -3
- package/esm2020/src/app/core/table/table.class.mjs +11 -16
- package/esm2020/src/app/core/table/table.module.mjs +40 -0
- package/esm2020/src/app/core/table/testing/table.testing.mjs +8 -8
- package/esm2020/src/app/core/table/testing/table.testing.module.mjs +4 -4
- package/esm2020/src/app/shared/audio/audio.mjs +3 -3
- package/esm2020/src/app/shared/audio/audio.testing.mjs +3 -3
- package/esm2020/src/app/shared/audio/audio.testing.module.mjs +4 -4
- package/esm2020/src/app/shared/capacitor/keyboard.mjs +3 -3
- package/esm2020/src/app/shared/constants.mjs +4 -2
- package/esm2020/src/app/shared/dates.mjs +20 -14
- package/esm2020/src/app/shared/debug/debug.component.mjs +3 -3
- package/esm2020/src/app/shared/debug/debug.module.mjs +4 -4
- package/esm2020/src/app/shared/directives/autofocus.directive.mjs +3 -3
- package/esm2020/src/app/shared/directives/autotitle.directive.mjs +3 -3
- package/esm2020/src/app/shared/directives/directives.module.mjs +4 -4
- package/esm2020/src/app/shared/directives/drag-and-drop.directive.mjs +3 -3
- package/esm2020/src/app/shared/directives/ng-var.directive.mjs +3 -3
- package/esm2020/src/app/shared/directives/resizable/resizable.component.mjs +3 -3
- package/esm2020/src/app/shared/directives/resizable/resizable.directive.mjs +3 -3
- package/esm2020/src/app/shared/directives/resizable/resizable.module.mjs +4 -4
- package/esm2020/src/app/shared/file/file.service.mjs +5 -5
- package/esm2020/src/app/shared/form/field.component.mjs +3 -3
- package/esm2020/src/app/shared/form/loading-spinner.mjs +3 -3
- package/esm2020/src/app/shared/gesture/gesture-config.mjs +3 -3
- package/esm2020/src/app/shared/guard/component-dirty.guard.mjs +3 -3
- package/esm2020/src/app/shared/help/help.modal.mjs +3 -3
- package/esm2020/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +3 -3
- package/esm2020/src/app/shared/hotkeys/hotkeys.service.mjs +3 -3
- package/esm2020/src/app/shared/hotkeys/shared-hotkeys.module.mjs +4 -4
- package/esm2020/src/app/shared/image/gallery/image-gallery.component.mjs +134 -60
- package/esm2020/src/app/shared/image/gallery/image-gallery.module.mjs +19 -7
- package/esm2020/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +3 -3
- package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.mjs +13 -7
- package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +4 -4
- package/esm2020/src/app/shared/image/image.module.mjs +5 -5
- package/esm2020/src/app/shared/image/image.service.mjs +3 -3
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.mjs +7 -6
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +4 -4
- package/esm2020/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +3 -3
- package/esm2020/src/app/shared/material/badge/badge.directive.mjs +3 -3
- package/esm2020/src/app/shared/material/badge/badge.module.mjs +4 -4
- package/esm2020/src/app/shared/material/badge/badge.test.mjs +3 -3
- package/esm2020/src/app/shared/material/boolean/boolean.module.mjs +4 -4
- package/esm2020/src/app/shared/material/boolean/material.boolean.mjs +5 -5
- package/esm2020/src/app/shared/material/chips/chips.module.mjs +4 -4
- package/esm2020/src/app/shared/material/chips/material.chips.mjs +5 -5
- package/esm2020/src/app/shared/material/chips/testing/chips.test.mjs +3 -3
- package/esm2020/src/app/shared/material/datetime/datetime.module.mjs +4 -4
- package/esm2020/src/app/shared/material/datetime/material.date.mjs +7 -8
- package/esm2020/src/app/shared/material/datetime/material.dateshort.mjs +6 -6
- package/esm2020/src/app/shared/material/datetime/material.datetime.mjs +7 -8
- package/esm2020/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +5 -7
- package/esm2020/src/app/shared/material/datetime/testing/mat-date.test.mjs +7 -8
- package/esm2020/src/app/shared/material/duration/duration.module.mjs +4 -4
- package/esm2020/src/app/shared/material/duration/material.duration.mjs +3 -3
- package/esm2020/src/app/shared/material/latlong/material.latlong.mjs +3 -3
- package/esm2020/src/app/shared/material/latlong/material.latlong.module.mjs +4 -4
- package/esm2020/src/app/shared/material/latlong/testing/latlong.test.mjs +3 -3
- package/esm2020/src/app/shared/material/material.module.mjs +4 -4
- package/esm2020/src/app/shared/material/material.testing.module.mjs +4 -4
- package/esm2020/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +3 -3
- package/esm2020/src/app/shared/material/numpad/numpad.component.mjs +3 -3
- package/esm2020/src/app/shared/material/numpad/numpad.container.mjs +3 -3
- package/esm2020/src/app/shared/material/numpad/numpad.content.mjs +3 -3
- package/esm2020/src/app/shared/material/numpad/numpad.directive.mjs +3 -3
- package/esm2020/src/app/shared/material/numpad/numpad.dom-service.mjs +3 -3
- package/esm2020/src/app/shared/material/numpad/numpad.module.mjs +4 -4
- package/esm2020/src/app/shared/material/numpad/testing/numpad.test.mjs +3 -3
- package/esm2020/src/app/shared/material/paginator/material.paginator-i18n.mjs +3 -3
- package/esm2020/src/app/shared/material/stepper/material.stepper-i18n.mjs +3 -3
- package/esm2020/src/app/shared/material/swipe/material.swipe.mjs +3 -3
- package/esm2020/src/app/shared/material/swipe/swipe.module.mjs +4 -4
- package/esm2020/src/app/shared/material/swipe/testing/swipe.test.mjs +11 -12
- package/esm2020/src/app/shared/modules.mjs +11 -0
- package/esm2020/src/app/shared/pipes/arrays.pipe.mjs +24 -24
- package/esm2020/src/app/shared/pipes/colors.pipe.mjs +4 -4
- package/esm2020/src/app/shared/pipes/date-diff-duration.pipe.mjs +8 -9
- package/esm2020/src/app/shared/pipes/date-format.pipe.mjs +38 -14
- package/esm2020/src/app/shared/pipes/date-from-now.pipe.mjs +4 -4
- package/esm2020/src/app/shared/pipes/duration.pipe.mjs +4 -4
- package/esm2020/src/app/shared/pipes/file-size.pipe.mjs +3 -3
- package/esm2020/src/app/shared/pipes/form.pipes.mjs +18 -18
- package/esm2020/src/app/shared/pipes/highlight.pipe.mjs +4 -4
- package/esm2020/src/app/shared/pipes/latlong-format.pipe.mjs +9 -9
- package/esm2020/src/app/shared/pipes/maps.pipe.mjs +12 -12
- package/esm2020/src/app/shared/pipes/math.pipes.mjs +12 -12
- package/esm2020/src/app/shared/pipes/ng-init.pipe.mjs +3 -3
- package/esm2020/src/app/shared/pipes/number-format.pipe.mjs +4 -4
- package/esm2020/src/app/shared/pipes/pipes.module.mjs +14 -6
- package/esm2020/src/app/shared/pipes/property.pipes.mjs +9 -12
- package/esm2020/src/app/shared/pipes/string.pipes.mjs +43 -17
- package/esm2020/src/app/shared/pipes/translate-context.pipe.mjs +8 -8
- package/esm2020/src/app/shared/services/memory-entity-service.class.mjs +3 -3
- package/esm2020/src/app/shared/services/progress-bar.service.mjs +3 -3
- package/esm2020/src/app/shared/services/storage/storage.service.mjs +3 -3
- package/esm2020/src/app/shared/services/translate-context.service.mjs +3 -3
- package/esm2020/src/app/shared/shared-routing.module.mjs +7 -7
- package/esm2020/src/app/shared/shared.module.mjs +11 -7
- package/esm2020/src/app/shared/shared.testing.module.mjs +4 -4
- package/esm2020/src/app/shared/testing/observable.test.mjs +6 -7
- package/esm2020/src/app/shared/testing/tests.page.mjs +3 -3
- package/esm2020/src/app/shared/toast/toast.testing.mjs +3 -3
- package/esm2020/src/app/shared/toast/toast.testing.module.mjs +4 -4
- package/esm2020/src/app/shared/toast/toasts.mjs +1 -1
- package/esm2020/src/app/shared/toolbar/modal-toolbar.mjs +3 -3
- package/esm2020/src/app/shared/toolbar/toolbar.mjs +3 -3
- package/esm2020/src/app/shared/toolbar/toolbar.module.mjs +4 -4
- package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.mjs +3 -3
- package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +4 -4
- package/esm2020/src/app/shared/upload-file/upload-file-popover.component.mjs +5 -5
- package/esm2020/src/app/shared/upload-file/upload-file.component.mjs +3 -3
- package/esm2020/src/app/shared/validator/form-error-adapter.class.mjs +3 -3
- package/esm2020/src/app/shared/validator/validators.mjs +4 -5
- package/esm2020/src/app/social/job/job.module.mjs +4 -4
- package/esm2020/src/app/social/job/job.service.mjs +3 -3
- package/esm2020/src/app/social/job/progression/job-progression.icon.mjs +3 -3
- package/esm2020/src/app/social/job/progression/job-progression.list.mjs +4 -4
- package/esm2020/src/app/social/job/testing/job-progression.testing.mjs +3 -3
- package/esm2020/src/app/social/job/testing/job-progression.testing.service.mjs +3 -3
- package/esm2020/src/app/social/job/testing/job.testing.module.mjs +4 -4
- package/esm2020/src/app/social/message/message.form.mjs +3 -3
- package/esm2020/src/app/social/message/message.modal.mjs +3 -3
- package/esm2020/src/app/social/message/message.module.mjs +4 -4
- package/esm2020/src/app/social/message/message.service.mjs +3 -3
- package/esm2020/src/app/social/social.module.mjs +4 -4
- package/esm2020/src/app/social/social.testing.module.mjs +4 -4
- package/esm2020/src/app/social/user-event/notification/user-event-notification.icon.mjs +3 -3
- package/esm2020/src/app/social/user-event/notification/user-event-notification.list.mjs +7 -7
- package/esm2020/src/app/social/user-event/testing/user-event.testing.mjs +13 -12
- package/esm2020/src/app/social/user-event/testing/user-event.testing.module.mjs +4 -4
- package/esm2020/src/app/social/user-event/testing/user-event.testing.service.mjs +3 -3
- package/esm2020/src/app/social/user-event/user-event.module.mjs +4 -4
- package/esm2020/src/app/social/user-event/user-event.service.mjs +6 -8
- package/fesm2015/sumaris-net.ngx-components.mjs +10176 -9570
- package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
- package/fesm2020/sumaris-net.ngx-components.mjs +10390 -9791
- package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +2 -1
- package/plugins/clovelced-plugin-audiomanagement/README.md +66 -0
- package/plugins/cordova-plugin-camera/README.md +703 -0
- package/plugins/cordova-plugin-device/README.md +309 -0
- package/plugins/cordova-plugin-file/README.md +848 -0
- package/plugins/cordova-plugin-file-transfer/README.md +598 -0
- package/plugins/cordova-plugin-file-transfer/doc/de/README.md +311 -0
- package/plugins/cordova-plugin-file-transfer/doc/es/README.md +311 -0
- package/plugins/cordova-plugin-file-transfer/doc/fr/README.md +270 -0
- package/plugins/cordova-plugin-file-transfer/doc/it/README.md +311 -0
- package/plugins/cordova-plugin-file-transfer/doc/ja/README.md +311 -0
- package/plugins/cordova-plugin-file-transfer/doc/ko/README.md +311 -0
- package/plugins/cordova-plugin-file-transfer/doc/pl/README.md +311 -0
- package/plugins/cordova-plugin-file-transfer/doc/zh/README.md +311 -0
- package/plugins/cordova-plugin-ionic-keyboard/README.md +220 -0
- package/plugins/cordova-plugin-ionic-webview/README.md +181 -0
- package/plugins/cordova-plugin-media-capture/README.md +626 -0
- package/plugins/cordova-plugin-splashscreen/README.md +387 -0
- package/plugins/cordova-plugin-statusbar/README.md +341 -0
- package/plugins/cordova-plugin-telerik-imagepicker/README.md +155 -0
- package/plugins/cordova-plugin-whitelist/README.md +185 -0
- package/plugins/cordova-sqlite-storage/README.md +1848 -0
- package/plugins/integrator-cordova-plugin-downloader/README.md +49 -0
- package/public_api.d.ts +34 -21
- package/src/app/admin/admin.module.d.ts +1 -1
- package/src/app/admin/users/{list/users.d.ts → users.d.ts} +11 -11
- package/src/app/admin/users/users.module.d.ts +13 -0
- package/src/app/core/about/{modal-about.d.ts → about.modal.d.ts} +1 -1
- package/src/app/core/about/about.module.d.ts +10 -0
- package/src/app/core/account/account.module.d.ts +11 -0
- package/src/app/core/account/{account.d.ts → account.page.d.ts} +5 -1
- package/src/app/core/auth/{form/form-auth.d.ts → auth.form.d.ts} +9 -9
- package/src/app/core/auth/{modal/modal-auth.d.ts → auth.modal.d.ts} +4 -4
- package/src/app/core/auth/auth.module.d.ts +11 -0
- package/src/app/core/core.module.d.ts +20 -29
- package/src/app/core/core.testing.module.d.ts +1 -1
- package/src/app/core/form/{form-buttons-bar.component.d.ts → buttons/form-buttons-bar.component.d.ts} +2 -2
- package/src/app/core/form/buttons/form-buttons-bar.module.d.ts +9 -0
- package/src/app/core/form/{editor.class.d.ts → entity/editor.class.d.ts} +9 -9
- package/src/app/core/form/{entity-editor-modal.class.d.ts → entity/entity-editor-modal.class.d.ts} +8 -8
- package/src/app/core/form/{entity-editor.class.d.ts → entity/entity-editor.class.d.ts} +11 -11
- package/src/app/core/form/{entity-metadata.component.d.ts → entity/entity-metadata.component.d.ts} +1 -1
- package/src/app/core/form/entity/entity.module.d.ts +10 -0
- package/src/app/core/form/form.module.d.ts +13 -0
- package/src/app/core/form/{list.form.d.ts → list/list.form.d.ts} +3 -3
- package/src/app/core/form/list/list.module.d.ts +9 -0
- package/src/app/core/form/properties/properties.module.d.ts +9 -0
- package/src/app/core/{text-popover → form/text-popover}/testing/text-popover.testing.d.ts +0 -0
- package/src/app/core/{text-popover → form/text-popover}/testing/text-popover.testing.module.d.ts +0 -0
- package/src/app/core/{text-popover → form/text-popover}/text-form.component.d.ts +4 -3
- package/src/app/core/{text-popover → form/text-popover}/text-popover.component.d.ts +7 -2
- package/src/app/core/form/text-popover/text-popover.module.d.ts +10 -0
- package/src/app/core/home/home.module.d.ts +12 -0
- package/src/app/core/install/install-upgrade-card.module.d.ts +6 -7
- package/src/app/core/menu/menu.component.d.ts +1 -1
- package/src/app/core/offline/update-offline-mode-card.module.d.ts +9 -0
- package/src/app/core/peer/select-peer.modal.d.ts +19 -5
- package/src/app/core/peer/select-peer.module.d.ts +6 -4
- package/src/app/core/register/{confirm/confirm.d.ts → register-confirm.page.d.ts} +4 -4
- package/src/app/core/register/{form/form-register.d.ts → register.form.d.ts} +7 -7
- package/src/app/core/register/{modal/modal-register.d.ts → register.modal.d.ts} +2 -2
- package/src/app/core/register/register.module.d.ts +6 -6
- package/src/app/core/services/account.service.d.ts +8 -9
- package/src/app/core/services/base-graphql-service.class.d.ts +9 -8
- package/src/app/core/services/crypto.service.d.ts +23 -18
- package/src/app/core/services/model/entity.decorators.d.ts +1 -9
- package/src/app/core/services/network.service.d.ts +3 -4
- package/src/app/core/settings/settings.module.d.ts +10 -0
- package/src/app/core/settings/settings.page.d.ts +2 -4
- package/src/app/core/table/entities-table-datasource.class.d.ts +1 -0
- package/src/app/core/table/table.class.d.ts +2 -6
- package/src/app/core/table/table.module.d.ts +10 -0
- package/src/app/shared/constants.d.ts +1 -1
- package/src/app/shared/dates.d.ts +5 -3
- package/src/app/shared/image/gallery/image-gallery.component.d.ts +39 -17
- package/src/app/shared/image/gallery/image-gallery.module.d.ts +6 -4
- package/src/app/shared/image/gallery/testing/gallery.testing.d.ts +1 -0
- package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +1 -0
- package/src/app/shared/material/swipe/testing/swipe.test.d.ts +5 -6
- package/src/app/shared/modules.d.ts +8 -0
- package/src/app/shared/pipes/date-format.pipe.d.ts +22 -11
- package/src/app/shared/pipes/pipes.module.d.ts +1 -1
- package/src/app/shared/pipes/property.pipes.d.ts +4 -6
- package/src/app/shared/pipes/string.pipes.d.ts +10 -0
- package/src/app/shared/shared.module.d.ts +2 -1
- package/src/assets/i18n/en-US.json +20 -5
- package/src/assets/i18n/en.json +18 -4
- package/src/assets/i18n/fr.json +17 -6
- package/src/theme/_ngx-components.scss +22 -4
- package/esm2020/src/app/admin/users/list/users.mjs +0 -233
- package/esm2020/src/app/admin/users/list/users.module.mjs +0 -58
- package/esm2020/src/app/core/about/modal-about.mjs +0 -71
- package/esm2020/src/app/core/account/account.mjs +0 -230
- package/esm2020/src/app/core/auth/form/form-auth.mjs +0 -131
- package/esm2020/src/app/core/auth/modal/modal-auth.mjs +0 -72
- package/esm2020/src/app/core/form/editor.class.mjs +0 -675
- package/esm2020/src/app/core/form/entity-editor-modal.class.mjs +0 -421
- package/esm2020/src/app/core/form/entity-editor.class.mjs +0 -646
- package/esm2020/src/app/core/form/list.form.mjs +0 -222
- package/esm2020/src/app/core/register/confirm/confirm.mjs +0 -81
- package/esm2020/src/app/core/register/form/form-register.mjs +0 -181
- package/esm2020/src/app/core/register/modal/modal-register.mjs +0 -52
- package/esm2020/src/app/core/text-popover/testing/text-popover.testing.module.mjs +0 -45
- package/esm2020/src/app/core/text-popover/text-form.component.mjs +0 -84
- package/esm2020/src/app/core/text-popover/text-popover.component.mjs +0 -92
- package/esm2020/src/app/vendor.mjs +0 -16
- package/src/app/admin/users/list/users.module.d.ts +0 -14
- package/src/app/vendor.d.ts +0 -11
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Inject, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { UntypedFormControl, Validators } from '@angular/forms';
|
|
3
|
-
import { Account } from '../../services/model/account.model';
|
|
4
|
-
import { referentialToString } from '../../services/model/referential.model';
|
|
5
|
-
import { timer } from 'rxjs';
|
|
6
|
-
import { mergeMap } from 'rxjs/operators';
|
|
7
|
-
import { ENVIRONMENT } from '../../../../environments/environment.class';
|
|
8
|
-
import { MatAutocompleteConfigHolder } from '../../../shared/material/autocomplete/material.autocomplete.config';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "../../services/account.service";
|
|
11
|
-
import * as i2 from "../../services/validator/account.validator";
|
|
12
|
-
import * as i3 from "@angular/forms";
|
|
13
|
-
import * as i4 from "../../services/local-settings.service";
|
|
14
|
-
import * as i5 from "@angular/common";
|
|
15
|
-
import * as i6 from "@ionic/angular";
|
|
16
|
-
import * as i7 from "@ngx-translate/core";
|
|
17
|
-
import * as i8 from "@angular/material/form-field";
|
|
18
|
-
import * as i9 from "@angular/material/input";
|
|
19
|
-
import * as i10 from "@angular/material/icon";
|
|
20
|
-
import * as i11 from "@angular/material/button";
|
|
21
|
-
import * as i12 from "@angular/material/stepper";
|
|
22
|
-
import * as i13 from "../../../shared/directives/autofocus.directive";
|
|
23
|
-
import * as i14 from "../../../shared/form/field.component";
|
|
24
|
-
export class RegisterForm {
|
|
25
|
-
constructor(accountService, accountValidatorService, formBuilder, environment, settings) {
|
|
26
|
-
this.accountService = accountService;
|
|
27
|
-
this.accountValidatorService = accountValidatorService;
|
|
28
|
-
this.formBuilder = formBuilder;
|
|
29
|
-
this.environment = environment;
|
|
30
|
-
this.settings = settings;
|
|
31
|
-
this.debug = false;
|
|
32
|
-
this.subscriptions = [];
|
|
33
|
-
this.sending = false;
|
|
34
|
-
this.showPwd = false;
|
|
35
|
-
this.showConfirmPwd = false;
|
|
36
|
-
this.onCancel = new EventEmitter();
|
|
37
|
-
this.onSubmit = new EventEmitter();
|
|
38
|
-
this.referentialToString = referentialToString;
|
|
39
|
-
this.forms = [];
|
|
40
|
-
// Email form
|
|
41
|
-
this.forms.push(formBuilder.group({
|
|
42
|
-
email: new UntypedFormControl(null, Validators.compose([Validators.required, Validators.email]), this.emailAvailability(this.accountService)),
|
|
43
|
-
confirmEmail: new UntypedFormControl(null, Validators.compose([Validators.required, this.equalsValidator('email')]))
|
|
44
|
-
}));
|
|
45
|
-
// Password form
|
|
46
|
-
this.forms.push(formBuilder.group({
|
|
47
|
-
password: new UntypedFormControl(null, Validators.compose([Validators.required, Validators.minLength(8)])),
|
|
48
|
-
confirmPassword: new UntypedFormControl(null, Validators.compose([Validators.required, this.equalsValidator('password')]))
|
|
49
|
-
}));
|
|
50
|
-
// Detail form
|
|
51
|
-
const formDetailDef = {
|
|
52
|
-
lastName: new UntypedFormControl(null, Validators.compose([Validators.required, Validators.minLength(2)])),
|
|
53
|
-
firstName: new UntypedFormControl(null, Validators.compose([Validators.required, Validators.minLength(2)]))
|
|
54
|
-
};
|
|
55
|
-
// Prepare autocomplete settings
|
|
56
|
-
this.autocompleteHelper = new MatAutocompleteConfigHolder(settings && {
|
|
57
|
-
getUserAttributes: (a, b) => settings.getFieldDisplayAttributes(a, b)
|
|
58
|
-
});
|
|
59
|
-
// Add additional fields to details form
|
|
60
|
-
this.additionalFields = this.accountService.additionalFields
|
|
61
|
-
// Keep only required fields
|
|
62
|
-
.filter(field => field.extra && field.extra.registration && field.extra.registration.required);
|
|
63
|
-
this.additionalFields.forEach(field => {
|
|
64
|
-
//if (this.debug) console.debug("[register-form] Add additional field {" + field.name + "} to form", field);
|
|
65
|
-
formDetailDef[field.key] = new UntypedFormControl(null, this.accountValidatorService.getValidators(field));
|
|
66
|
-
if (field.type === 'entity') {
|
|
67
|
-
field.autocomplete = this.autocompleteHelper.add(field.key, field.autocomplete);
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
this.forms.push(formBuilder.group(formDetailDef));
|
|
71
|
-
this.form = formBuilder.group({
|
|
72
|
-
emailStep: this.forms[0],
|
|
73
|
-
passwordStep: this.forms[1],
|
|
74
|
-
detailsStep: this.forms[2]
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
ngOnInit() {
|
|
78
|
-
// For DEV only ------------------------
|
|
79
|
-
if (!this.environment.production) {
|
|
80
|
-
this.form.setValue({
|
|
81
|
-
emailStep: {
|
|
82
|
-
email: 'contact@e-is.pro',
|
|
83
|
-
confirmEmail: 'contact@e-is.pro'
|
|
84
|
-
},
|
|
85
|
-
passwordStep: {
|
|
86
|
-
password: 'contactera',
|
|
87
|
-
confirmPassword: 'contactera'
|
|
88
|
-
},
|
|
89
|
-
detailsStep: {
|
|
90
|
-
lastName: 'Lavenier 2',
|
|
91
|
-
firstName: 'Benoit',
|
|
92
|
-
department: null
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
get value() {
|
|
98
|
-
const result = {
|
|
99
|
-
username: this.form.value.emailStep.email,
|
|
100
|
-
password: this.form.value.passwordStep.password,
|
|
101
|
-
account: new Account()
|
|
102
|
-
};
|
|
103
|
-
result.account.fromObject(this.form.value.detailsStep);
|
|
104
|
-
result.account.email = result.username;
|
|
105
|
-
return result;
|
|
106
|
-
}
|
|
107
|
-
get valid() {
|
|
108
|
-
return this.form.valid;
|
|
109
|
-
}
|
|
110
|
-
isEnd() {
|
|
111
|
-
return this.stepper.selectedIndex === 2;
|
|
112
|
-
}
|
|
113
|
-
isBeginning() {
|
|
114
|
-
return this.stepper.selectedIndex === 0;
|
|
115
|
-
}
|
|
116
|
-
slidePrev() {
|
|
117
|
-
return this.stepper.previous();
|
|
118
|
-
}
|
|
119
|
-
slideNext(event) {
|
|
120
|
-
if (event) {
|
|
121
|
-
event.stopPropagation();
|
|
122
|
-
event.preventDefault();
|
|
123
|
-
}
|
|
124
|
-
return this.stepper.next();
|
|
125
|
-
}
|
|
126
|
-
equalsValidator(otherControlName) {
|
|
127
|
-
return function (c) {
|
|
128
|
-
if (c.parent && c.value !== c.parent.value[otherControlName]) {
|
|
129
|
-
return {
|
|
130
|
-
equals: true
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
return null;
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
emailAvailability(accountService) {
|
|
137
|
-
return function (control) {
|
|
138
|
-
return timer(500).pipe(mergeMap(() => accountService.checkEmailAvailable(control.value)
|
|
139
|
-
.then(res => null)
|
|
140
|
-
.catch(err => {
|
|
141
|
-
console.error(err);
|
|
142
|
-
return { availability: true };
|
|
143
|
-
})));
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
cancel() {
|
|
147
|
-
this.onCancel.emit();
|
|
148
|
-
}
|
|
149
|
-
doSubmit(event) {
|
|
150
|
-
if (this.form.invalid)
|
|
151
|
-
return;
|
|
152
|
-
this.sending = true;
|
|
153
|
-
this.onSubmit.emit(this.value);
|
|
154
|
-
}
|
|
155
|
-
markAsTouched() {
|
|
156
|
-
this.form.markAsTouched();
|
|
157
|
-
}
|
|
158
|
-
disable() {
|
|
159
|
-
this.form.disable();
|
|
160
|
-
}
|
|
161
|
-
enable() {
|
|
162
|
-
this.form.enable();
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
RegisterForm.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: RegisterForm, deps: [{ token: i1.AccountService }, { token: i2.AccountValidatorService }, { token: i3.UntypedFormBuilder }, { token: ENVIRONMENT }, { token: i4.LocalSettingsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
166
|
-
RegisterForm.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: RegisterForm, selector: "form-register", outputs: { onCancel: "onCancel", onSubmit: "onSubmit" }, viewQueries: [{ propertyName: "stepper", first: true, predicate: ["stepper"], descendants: true, static: true }], ngImport: i0, template: "<mat-horizontal-stepper linear #stepper=\"matHorizontalStepper\">\n\n <!-- Step 1: Username -->\n <mat-step [stepControl]=\"forms[0]\" *ngIf=\"forms[0].controls; let controls\">\n\n <form [formGroup]=\"forms[0]\" class=\"form-container ion-padding\" (keyup.enter)=\"slideNext($event)\">\n <ng-template matStepLabel>{{'REGISTER.STEP_EMAIL'|translate}}</ng-template>\n\n <!-- Email -->\n <mat-form-field>\n <input matInput\n [appAutofocus]=\"true\" [autofocusDelay]=\"500\" [placeholder]=\"'USER.EMAIL'|translate\"\n formControlName=\"email\" autocomplete=\"off\" required>\n <mat-error *ngIf=\"controls.email.hasError('required') && controls.email.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.email.hasError('email') && !controls.email.hasError('required') && controls.email.touched\">\n <span>{{'ERROR.FIELD_NOT_VALID_EMAIL' | translate }}</span>\n </mat-error>\n <mat-error *ngIf=\"controls.email.hasError('availability') && controls.email.touched\" translate>REGISTER.ERROR.EMAIL_ALREADY_REGISTERED</mat-error>\n\n </mat-form-field>\n\n <!-- Confirm Email -->\n <mat-form-field>\n <input matInput autocomplete=\"off\" matFormFieldControl [placeholder]=\"'REGISTER.CONFIRM_EMAIL'|translate\" formControlName=\"confirmEmail\">\n <mat-error *ngIf=\"controls.confirmEmail.hasError('required') && controls.confirmEmail.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.confirmEmail.hasError('equals') && controls.confirmEmail.touched\">\n <span>{{'REGISTER.ERROR.NOT_SAME_EMAIL' | translate }}</span>\n </mat-error>\n </mat-form-field>\n\n </form>\n </mat-step>\n\n\n <!-- Step 2: Password -->\n <mat-step [stepControl]=\"forms[1]\" *ngIf=\"forms[1].controls; let controls\">\n\n <form [formGroup]=\"forms[1]\" class=\"form-container ion-padding\" (keyup.enter)=\"slideNext($event)\">\n\n <ng-template matStepLabel>{{'REGISTER.STEP_PASSWORD'|translate}}</ng-template>\n\n <!-- Password -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.PASSWORD'|translate\"\n formControlName=\"password\"\n autocomplete=\"section-red new-password\"\n [type]=\"showPwd ? 'text' : 'password'\"\n required>\n <button matSuffix mat-icon-button\n type=\"button\"\n (click)=\"showPwd = !showPwd\"\n tabindex=\"-1\">\n <mat-icon>{{showPwd ? 'visibility_off' : 'visibility'}}</mat-icon>\n </button>\n <mat-error *ngIf=\"controls.password.hasError('required') && controls.password.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.password.hasError('minlength') && controls.password.touched\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 8} }}</span>\n </mat-error>\n </mat-form-field>\n\n <!-- Confirm password -->\n <mat-form-field>\n <input matInput [placeholder]=\"'REGISTER.CONFIRM_PASSWORD'|translate\"\n formControlName=\"confirmPassword\"\n autocomplete=\"section-red new-password\"\n [type]=\"showConfirmPwd ? 'text' : 'password'\"\n required>\n <button mat-icon-button matSuffix\n (click)=\"showConfirmPwd = !showConfirmPwd\"\n tabindex=\"-1\">\n <mat-icon>{{showConfirmPwd ? 'visibility_off' : 'visibility'}}</mat-icon>\n </button>\n <mat-error *ngIf=\"controls.confirmPassword.hasError('required') && controls.confirmPassword.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.confirmPassword.hasError('equals') && controls.confirmPassword.touched\">\n <span>{{'REGISTER.ERROR.NOT_SAME_PASSWORD' | translate }}</span>\n </mat-error>\n </mat-form-field>\n\n </form>\n </mat-step>\n\n\n <!-- Step 3: user details -->\n <mat-step [stepControl]=\"forms[2]\" *ngIf=\"forms[2].controls; let controls\">\n\n <form [formGroup]=\"forms[2]\" (ngSubmit)=\"doSubmit($event)\" class=\"form-container ion-padding\" (keyup.enter)=\"doSubmit()\">\n\n <ng-template matStepLabel>{{'REGISTER.STEP_USER_DETAILS'|translate}}</ng-template>\n\n <!-- error -->\n <ion-item *ngIf=\"error && !sending\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <!-- Last name -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.LAST_NAME'|translate\" formControlName=\"lastName\" autocomplete=\"section-blue family-name\"\n required>\n <mat-error *ngIf=\"controls.lastName.hasError('required') && controls.lastName.dirty\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.lastName.hasError('minlength') && controls.lastName.dirty\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 2} }}</span>\n </mat-error>\n </mat-form-field>\n\n <!-- First name -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.FIRST_NAME'|translate\" formControlName=\"firstName\" autocomplete=\"section-blue given-name\"\n required>\n <mat-error *ngIf=\"controls.firstName.hasError('required') && controls.firstName.dirty\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.firstName.hasError('minlength') && controls.firstName.dirty\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 2} }}</span>\n </mat-error>\n </mat-form-field>\n\n <!-- Additional fields -->\n <app-form-field *ngFor=\"let field of additionalFields\"\n [definition]=\"field\"\n [formControlName]=\"field.key\"\n [required]=\"true\">\n </app-form-field>\n\n </form>\n </mat-step>\n</mat-horizontal-stepper>\n", styles: ["form ion-toolbar.toolbar-buttons .toolbar-content{text-align:right}form ion-toolbar.toolbar-buttons .toolbar-background{border:0;background:inherit!important}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i6.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i6.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i8.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i11.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i12.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i12.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i12.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i13.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "component", type: i14.AppFormField, selector: "app-form-field", inputs: ["definition", "required", "readonly", "disabled", "formControl", "formControlName", "placeholder", "compact", "floatLabel", "tabindex", "autofocus", "chipColor", "class"], outputs: ["keyup.enter"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
|
|
167
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: RegisterForm, decorators: [{
|
|
168
|
-
type: Component,
|
|
169
|
-
args: [{ selector: 'form-register', template: "<mat-horizontal-stepper linear #stepper=\"matHorizontalStepper\">\n\n <!-- Step 1: Username -->\n <mat-step [stepControl]=\"forms[0]\" *ngIf=\"forms[0].controls; let controls\">\n\n <form [formGroup]=\"forms[0]\" class=\"form-container ion-padding\" (keyup.enter)=\"slideNext($event)\">\n <ng-template matStepLabel>{{'REGISTER.STEP_EMAIL'|translate}}</ng-template>\n\n <!-- Email -->\n <mat-form-field>\n <input matInput\n [appAutofocus]=\"true\" [autofocusDelay]=\"500\" [placeholder]=\"'USER.EMAIL'|translate\"\n formControlName=\"email\" autocomplete=\"off\" required>\n <mat-error *ngIf=\"controls.email.hasError('required') && controls.email.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.email.hasError('email') && !controls.email.hasError('required') && controls.email.touched\">\n <span>{{'ERROR.FIELD_NOT_VALID_EMAIL' | translate }}</span>\n </mat-error>\n <mat-error *ngIf=\"controls.email.hasError('availability') && controls.email.touched\" translate>REGISTER.ERROR.EMAIL_ALREADY_REGISTERED</mat-error>\n\n </mat-form-field>\n\n <!-- Confirm Email -->\n <mat-form-field>\n <input matInput autocomplete=\"off\" matFormFieldControl [placeholder]=\"'REGISTER.CONFIRM_EMAIL'|translate\" formControlName=\"confirmEmail\">\n <mat-error *ngIf=\"controls.confirmEmail.hasError('required') && controls.confirmEmail.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.confirmEmail.hasError('equals') && controls.confirmEmail.touched\">\n <span>{{'REGISTER.ERROR.NOT_SAME_EMAIL' | translate }}</span>\n </mat-error>\n </mat-form-field>\n\n </form>\n </mat-step>\n\n\n <!-- Step 2: Password -->\n <mat-step [stepControl]=\"forms[1]\" *ngIf=\"forms[1].controls; let controls\">\n\n <form [formGroup]=\"forms[1]\" class=\"form-container ion-padding\" (keyup.enter)=\"slideNext($event)\">\n\n <ng-template matStepLabel>{{'REGISTER.STEP_PASSWORD'|translate}}</ng-template>\n\n <!-- Password -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.PASSWORD'|translate\"\n formControlName=\"password\"\n autocomplete=\"section-red new-password\"\n [type]=\"showPwd ? 'text' : 'password'\"\n required>\n <button matSuffix mat-icon-button\n type=\"button\"\n (click)=\"showPwd = !showPwd\"\n tabindex=\"-1\">\n <mat-icon>{{showPwd ? 'visibility_off' : 'visibility'}}</mat-icon>\n </button>\n <mat-error *ngIf=\"controls.password.hasError('required') && controls.password.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.password.hasError('minlength') && controls.password.touched\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 8} }}</span>\n </mat-error>\n </mat-form-field>\n\n <!-- Confirm password -->\n <mat-form-field>\n <input matInput [placeholder]=\"'REGISTER.CONFIRM_PASSWORD'|translate\"\n formControlName=\"confirmPassword\"\n autocomplete=\"section-red new-password\"\n [type]=\"showConfirmPwd ? 'text' : 'password'\"\n required>\n <button mat-icon-button matSuffix\n (click)=\"showConfirmPwd = !showConfirmPwd\"\n tabindex=\"-1\">\n <mat-icon>{{showConfirmPwd ? 'visibility_off' : 'visibility'}}</mat-icon>\n </button>\n <mat-error *ngIf=\"controls.confirmPassword.hasError('required') && controls.confirmPassword.touched\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.confirmPassword.hasError('equals') && controls.confirmPassword.touched\">\n <span>{{'REGISTER.ERROR.NOT_SAME_PASSWORD' | translate }}</span>\n </mat-error>\n </mat-form-field>\n\n </form>\n </mat-step>\n\n\n <!-- Step 3: user details -->\n <mat-step [stepControl]=\"forms[2]\" *ngIf=\"forms[2].controls; let controls\">\n\n <form [formGroup]=\"forms[2]\" (ngSubmit)=\"doSubmit($event)\" class=\"form-container ion-padding\" (keyup.enter)=\"doSubmit()\">\n\n <ng-template matStepLabel>{{'REGISTER.STEP_USER_DETAILS'|translate}}</ng-template>\n\n <!-- error -->\n <ion-item *ngIf=\"error && !sending\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <!-- Last name -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.LAST_NAME'|translate\" formControlName=\"lastName\" autocomplete=\"section-blue family-name\"\n required>\n <mat-error *ngIf=\"controls.lastName.hasError('required') && controls.lastName.dirty\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.lastName.hasError('minlength') && controls.lastName.dirty\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 2} }}</span>\n </mat-error>\n </mat-form-field>\n\n <!-- First name -->\n <mat-form-field>\n <input matInput [placeholder]=\"'USER.FIRST_NAME'|translate\" formControlName=\"firstName\" autocomplete=\"section-blue given-name\"\n required>\n <mat-error *ngIf=\"controls.firstName.hasError('required') && controls.firstName.dirty\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"controls.firstName.hasError('minlength') && controls.firstName.dirty\">\n <span>{{'ERROR.FIELD_MIN_LENGTH' | translate: {minLength: 2} }}</span>\n </mat-error>\n </mat-form-field>\n\n <!-- Additional fields -->\n <app-form-field *ngFor=\"let field of additionalFields\"\n [definition]=\"field\"\n [formControlName]=\"field.key\"\n [required]=\"true\">\n </app-form-field>\n\n </form>\n </mat-step>\n</mat-horizontal-stepper>\n", styles: ["form ion-toolbar.toolbar-buttons .toolbar-content{text-align:right}form ion-toolbar.toolbar-buttons .toolbar-background{border:0;background:inherit!important}\n"] }]
|
|
170
|
-
}], ctorParameters: function () { return [{ type: i1.AccountService }, { type: i2.AccountValidatorService }, { type: i3.UntypedFormBuilder }, { type: undefined, decorators: [{
|
|
171
|
-
type: Inject,
|
|
172
|
-
args: [ENVIRONMENT]
|
|
173
|
-
}] }, { type: i4.LocalSettingsService }]; }, propDecorators: { stepper: [{
|
|
174
|
-
type: ViewChild,
|
|
175
|
-
args: ['stepper', { static: true }]
|
|
176
|
-
}], onCancel: [{
|
|
177
|
-
type: Output
|
|
178
|
-
}], onSubmit: [{
|
|
179
|
-
type: Output
|
|
180
|
-
}] } });
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1yZWdpc3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9yZWdpc3Rlci9mb3JtL2Zvcm0tcmVnaXN0ZXIudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvcmVnaXN0ZXIvZm9ybS9mb3JtLXJlZ2lzdGVyLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUlMLGtCQUFrQixFQUlsQixVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDM0QsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFFM0UsT0FBTyxFQUEyQixLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHckQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUN2RSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVEvRyxNQUFNLE9BQU8sWUFBWTtJQXVCdkIsWUFDVSxjQUE4QixFQUM5Qix1QkFBZ0QsRUFDakQsV0FBK0IsRUFDUCxXQUFXLEVBQ2hDLFFBQStCO1FBSmpDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2pELGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUNQLGdCQUFXLEdBQVgsV0FBVyxDQUFBO1FBQ2hDLGFBQVEsR0FBUixRQUFRLENBQXVCO1FBMUJqQyxVQUFLLEdBQUcsS0FBSyxDQUFDO1FBTXhCLGtC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QztJQUNyQixDQUFDOzt5R0F0TFUsWUFBWSx5SEEyQmIsV0FBVzs2RkEzQlYsWUFBWSxnT0M3QnpCLCtnTUE2SEE7MkZEaEdhLFlBQVk7a0JBTHhCLFNBQVM7K0JBQ0UsZUFBZTs7MEJBK0J0QixNQUFNOzJCQUFDLFdBQVc7K0VBWjJCLE9BQU87c0JBQXRELFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHdEMsUUFBUTtzQkFEUCxNQUFNO2dCQUlQLFFBQVE7c0JBRFAsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEFzeW5jVmFsaWRhdG9yRm4sXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcbiAgVW50eXBlZEZvcm1Db250cm9sLFxuICBVbnR5cGVkRm9ybUdyb3VwLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3JGbixcbiAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0FjY291bnRTZXJ2aWNlLCBSZWdpc3RlckRhdGF9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQge0FjY291bnR9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vZGVsL2FjY291bnQubW9kZWwnO1xuaW1wb3J0IHtyZWZlcmVudGlhbFRvU3RyaW5nfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2RlbC9yZWZlcmVudGlhbC5tb2RlbCc7XG5pbXBvcnQge01hdFN0ZXBwZXJ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3N0ZXBwZXInO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7QWNjb3VudFZhbGlkYXRvclNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRvci9hY2NvdW50LnZhbGlkYXRvcic7XG5pbXBvcnQge0Zvcm1GaWVsZERlZmluaXRpb259IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7bWVyZ2VNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TG9jYWxTZXR0aW5nc1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvY2FsLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHtFTlZJUk9OTUVOVH0gZnJvbSAnLi4vLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7TWF0QXV0b2NvbXBsZXRlQ29uZmlnSG9sZGVyfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlL21hdGVyaWFsLmF1dG9jb21wbGV0ZS5jb25maWcnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Zvcm0tcmVnaXN0ZXInLFxuICB0ZW1wbGF0ZVVybDogJ2Zvcm0tcmVnaXN0ZXIuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tcmVnaXN0ZXIuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJlZ2lzdGVyRm9ybSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHJvdGVjdGVkIGRlYnVnID0gZmFsc2U7XG5cbiAgYXV0b2NvbXBsZXRlSGVscGVyOiBNYXRBdXRvY29tcGxldGVDb25maWdIb2xkZXI7XG4gIGFkZGl0aW9uYWxGaWVsZHM6IEZvcm1GaWVsZERlZmluaXRpb25bXTtcbiAgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgZm9ybXM6IFVudHlwZWRGb3JtR3JvdXBbXTtcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgZXJyb3I6IHN0cmluZztcbiAgc2VuZGluZyA9IGZhbHNlO1xuXG4gIHNob3dQd2QgPSBmYWxzZTtcbiAgc2hvd0NvbmZpcm1Qd2QgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdzdGVwcGVyJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBzdGVwcGVyOiBNYXRTdGVwcGVyO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVnaXN0ZXJEYXRhPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWNjb3VudFZhbGlkYXRvclNlcnZpY2U6IEFjY291bnRWYWxpZGF0b3JTZXJ2aWNlLFxuICAgIHB1YmxpYyBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByb3RlY3RlZCBlbnZpcm9ubWVudCxcbiAgICBwcm90ZWN0ZWQgc2V0dGluZ3M/OiBMb2NhbFNldHRpbmdzU2VydmljZVxuICApIHtcblxuXG4gICAgdGhpcy5mb3JtcyA9IFtdO1xuICAgIC8vIEVtYWlsIGZvcm1cbiAgICB0aGlzLmZvcm1zLnB1c2goZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgZW1haWw6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXSksIHRoaXMuZW1haWxBdmFpbGFiaWxpdHkodGhpcy5hY2NvdW50U2VydmljZSkpLFxuICAgICAgY29uZmlybUVtYWlsOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgdGhpcy5lcXVhbHNWYWxpZGF0b3IoJ2VtYWlsJyldKSlcbiAgICB9KSk7XG5cbiAgICAvLyBQYXNzd29yZCBmb3JtXG4gICAgdGhpcy5mb3Jtcy5wdXNoKGZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHBhc3N3b3JkOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoOCldKSksXG4gICAgICBjb25maXJtUGFzc3dvcmQ6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLmVxdWFsc1ZhbGlkYXRvcigncGFzc3dvcmQnKV0pKVxuICAgIH0pKTtcblxuICAgIC8vIERldGFpbCBmb3JtXG4gICAgY29uc3QgZm9ybURldGFpbERlZiA9IHtcbiAgICAgIGxhc3ROYW1lOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMildKSksXG4gICAgICBmaXJzdE5hbWU6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgyKV0pKVxuICAgIH07XG5cbiAgICAvLyBQcmVwYXJlIGF1dG9jb21wbGV0ZSBzZXR0aW5nc1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlSGVscGVyID0gbmV3IE1hdEF1dG9jb21wbGV0ZUNvbmZpZ0hvbGRlcihzZXR0aW5ncyAmJiB7XG4gICAgICBnZXRVc2VyQXR0cmlidXRlczogKGEsIGIpID0+IHNldHRpbmdzLmdldEZpZWxkRGlzcGxheUF0dHJpYnV0ZXMoYSwgYilcbiAgICB9KTtcblxuXG4gICAgLy8gQWRkIGFkZGl0aW9uYWwgZmllbGRzIHRvIGRldGFpbHMgZm9ybVxuICAgIHRoaXMuYWRkaXRpb25hbEZpZWxkcyA9IHRoaXMuYWNjb3VudFNlcnZpY2UuYWRkaXRpb25hbEZpZWxkc1xuICAgICAgLy8gS2VlcCBvbmx5IHJlcXVpcmVkIGZpZWxkc1xuICAgICAgLmZpbHRlcihmaWVsZCA9PiBmaWVsZC5leHRyYSAmJiBmaWVsZC5leHRyYS5yZWdpc3RyYXRpb24gJiYgZmllbGQuZXh0cmEucmVnaXN0cmF0aW9uLnJlcXVpcmVkKTtcbiAgICB0aGlzLmFkZGl0aW9uYWxGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAvL2lmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKFwiW3JlZ2lzdGVyLWZvcm1dIEFkZCBhZGRpdGlvbmFsIGZpZWxkIHtcIiArIGZpZWxkLm5hbWUgKyBcIn0gdG8gZm9ybVwiLCBmaWVsZCk7XG4gICAgICBmb3JtRGV0YWlsRGVmW2ZpZWxkLmtleV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwsIHRoaXMuYWNjb3VudFZhbGlkYXRvclNlcnZpY2UuZ2V0VmFsaWRhdG9ycyhmaWVsZCkpO1xuXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2VudGl0eScpIHtcbiAgICAgICAgZmllbGQuYXV0b2NvbXBsZXRlID0gdGhpcy5hdXRvY29tcGxldGVIZWxwZXIuYWRkKGZpZWxkLmtleSwgZmllbGQuYXV0b2NvbXBsZXRlKTtcbiAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgdGhpcy5mb3Jtcy5wdXNoKGZvcm1CdWlsZGVyLmdyb3VwKGZvcm1EZXRhaWxEZWYpKTtcblxuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGVtYWlsU3RlcDogdGhpcy5mb3Jtc1swXSxcbiAgICAgIHBhc3N3b3JkU3RlcDogdGhpcy5mb3Jtc1sxXSxcbiAgICAgIGRldGFpbHNTdGVwOiB0aGlzLmZvcm1zWzJdXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBGb3IgREVWIG9ubHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgaWYgKCF0aGlzLmVudmlyb25tZW50LnByb2R1Y3Rpb24pIHtcbiAgICAgIHRoaXMuZm9ybS5zZXRWYWx1ZSh7XG4gICAgICAgIGVtYWlsU3RlcDoge1xuICAgICAgICAgIGVtYWlsOiAnY29udGFjdEBlLWlzLnBybycsXG4gICAgICAgICAgY29uZmlybUVtYWlsOiAnY29udGFjdEBlLWlzLnBybydcbiAgICAgICAgfSxcbiAgICAgICAgcGFzc3dvcmRTdGVwOiB7XG4gICAgICAgICAgcGFzc3dvcmQ6ICdjb250YWN0ZXJhJyxcbiAgICAgICAgICBjb25maXJtUGFzc3dvcmQ6ICdjb250YWN0ZXJhJ1xuICAgICAgICB9LFxuICAgICAgICBkZXRhaWxzU3RlcDoge1xuICAgICAgICAgIGxhc3ROYW1lOiAnTGF2ZW5pZXIgMicsXG4gICAgICAgICAgZmlyc3ROYW1lOiAnQmVub2l0JyxcbiAgICAgICAgICBkZXBhcnRtZW50OiBudWxsXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBSZWdpc3RlckRhdGEge1xuICAgIGNvbnN0IHJlc3VsdDogUmVnaXN0ZXJEYXRhID0ge1xuICAgICAgdXNlcm5hbWU6IHRoaXMuZm9ybS52YWx1ZS5lbWFpbFN0ZXAuZW1haWwsXG4gICAgICBwYXNzd29yZDogdGhpcy5mb3JtLnZhbHVlLnBhc3N3b3JkU3RlcC5wYXNzd29yZCxcbiAgICAgIGFjY291bnQ6IG5ldyBBY2NvdW50KClcbiAgICB9O1xuICAgIHJlc3VsdC5hY2NvdW50LmZyb21PYmplY3QodGhpcy5mb3JtLnZhbHVlLmRldGFpbHNTdGVwKTtcbiAgICByZXN1bHQuYWNjb3VudC5lbWFpbCA9IHJlc3VsdC51c2VybmFtZTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXQgdmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS52YWxpZDtcbiAgfVxuXG4gIGlzRW5kKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleCA9PT0gMjtcbiAgfVxuXG4gIGlzQmVnaW5uaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleCA9PT0gMDtcbiAgfVxuXG4gIHNsaWRlUHJldigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcGVyLnByZXZpb3VzKCk7XG4gIH1cblxuICBzbGlkZU5leHQoZXZlbnQ/OiBFdmVudCkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdGVwcGVyLm5leHQoKTtcbiAgfVxuXG4gIGVxdWFsc1ZhbGlkYXRvcihvdGhlckNvbnRyb2xOYW1lOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgIGlmIChjLnBhcmVudCAmJiBjLnZhbHVlICE9PSBjLnBhcmVudC52YWx1ZVtvdGhlckNvbnRyb2xOYW1lXSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVxdWFsczogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIGVtYWlsQXZhaWxhYmlsaXR5KGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSk6IEFzeW5jVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiBmdW5jdGlvbihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB7XG5cbiAgICAgIHJldHVybiB0aW1lcig1MDApLnBpcGUobWVyZ2VNYXAoKCkgPT4gYWNjb3VudFNlcnZpY2UuY2hlY2tFbWFpbEF2YWlsYWJsZShjb250cm9sLnZhbHVlKVxuICAgICAgICAgIC50aGVuKHJlcyA9PiBudWxsKVxuICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgcmV0dXJuIHsgYXZhaWxhYmlsaXR5OiB0cnVlIH07XG4gICAgICAgICAgfSkpKTtcbiAgICB9O1xuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMub25DYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgZG9TdWJtaXQoZXZlbnQ/OiBhbnkpIHtcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHJldHVybjtcbiAgICB0aGlzLnNlbmRpbmcgPSB0cnVlO1xuICAgIHRoaXMub25TdWJtaXQuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIHJlZmVyZW50aWFsVG9TdHJpbmcgPSByZWZlcmVudGlhbFRvU3RyaW5nO1xuXG4gIG1hcmtBc1RvdWNoZWQoKSB7XG4gICAgdGhpcy5mb3JtLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuXG4gIGRpc2FibGUoKSB7XG4gICAgdGhpcy5mb3JtLmRpc2FibGUoKTtcbiAgfVxuXG4gIGVuYWJsZSgpIHtcbiAgICB0aGlzLmZvcm0uZW5hYmxlKCk7XG4gIH1cbn1cbiIsIjxtYXQtaG9yaXpvbnRhbC1zdGVwcGVyIGxpbmVhciAjc3RlcHBlcj1cIm1hdEhvcml6b250YWxTdGVwcGVyXCI+XG5cbiAgPCEtLSBTdGVwIDE6IFVzZXJuYW1lIC0tPlxuICA8bWF0LXN0ZXAgW3N0ZXBDb250cm9sXT1cImZvcm1zWzBdXCIgKm5nSWY9XCJmb3Jtc1swXS5jb250cm9sczsgbGV0IGNvbnRyb2xzXCI+XG5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1zWzBdXCIgY2xhc3M9XCJmb3JtLWNvbnRhaW5lciBpb24tcGFkZGluZ1wiIChrZXl1cC5lbnRlcik9XCJzbGlkZU5leHQoJGV2ZW50KVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbD57eydSRUdJU1RFUi5TVEVQX0VNQUlMJ3x0cmFuc2xhdGV9fTwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwhLS0gRW1haWwgLS0+XG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dFxuICAgICAgICAgICAgICAgW2FwcEF1dG9mb2N1c109XCJ0cnVlXCIgW2F1dG9mb2N1c0RlbGF5XT1cIjUwMFwiIFtwbGFjZWhvbGRlcl09XCInVVNFUi5FTUFJTCd8dHJhbnNsYXRlXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHJlcXVpcmVkPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiY29udHJvbHMuZW1haWwuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgY29udHJvbHMuZW1haWwudG91Y2hlZFwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiY29udHJvbHMuZW1haWwuaGFzRXJyb3IoJ2VtYWlsJykgJiYgIWNvbnRyb2xzLmVtYWlsLmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmIGNvbnRyb2xzLmVtYWlsLnRvdWNoZWRcIj5cbiAgICAgICAgICA8c3Bhbj57eydFUlJPUi5GSUVMRF9OT1RfVkFMSURfRU1BSUwnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImNvbnRyb2xzLmVtYWlsLmhhc0Vycm9yKCdhdmFpbGFiaWxpdHknKSAmJiBjb250cm9scy5lbWFpbC50b3VjaGVkXCIgdHJhbnNsYXRlPlJFR0lTVEVSLkVSUk9SLkVNQUlMX0FMUkVBRFlfUkVHSVNURVJFRDwvbWF0LWVycm9yPlxuXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8IS0tIENvbmZpcm0gRW1haWwgLS0+XG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBtYXRGb3JtRmllbGRDb250cm9sIFtwbGFjZWhvbGRlcl09XCInUkVHSVNURVIuQ09ORklSTV9FTUFJTCd8dHJhbnNsYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwiY29uZmlybUVtYWlsXCI+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJjb250cm9scy5jb25maXJtRW1haWwuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgY29udHJvbHMuY29uZmlybUVtYWlsLnRvdWNoZWRcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImNvbnRyb2xzLmNvbmZpcm1FbWFpbC5oYXNFcnJvcignZXF1YWxzJykgJiYgY29udHJvbHMuY29uZmlybUVtYWlsLnRvdWNoZWRcIj5cbiAgICAgICAgICA8c3Bhbj57eydSRUdJU1RFUi5FUlJPUi5OT1RfU0FNRV9FTUFJTCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgIDwvZm9ybT5cbiAgPC9tYXQtc3RlcD5cblxuXG4gIDwhLS0gU3RlcCAyOiBQYXNzd29yZCAtLT5cbiAgPG1hdC1zdGVwIFtzdGVwQ29udHJvbF09XCJmb3Jtc1sxXVwiICpuZ0lmPVwiZm9ybXNbMV0uY29udHJvbHM7IGxldCBjb250cm9sc1wiPlxuXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3Jtc1sxXVwiIGNsYXNzPVwiZm9ybS1jb250YWluZXIgaW9uLXBhZGRpbmdcIiAoa2V5dXAuZW50ZXIpPVwic2xpZGVOZXh0KCRldmVudClcIj5cblxuICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbD57eydSRUdJU1RFUi5TVEVQX1BBU1NXT1JEJ3x0cmFuc2xhdGV9fTwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwhLS0gUGFzc3dvcmQgLS0+XG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ1VTRVIuUEFTU1dPUkQnfHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJzZWN0aW9uLXJlZCBuZXctcGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgW3R5cGVdPVwic2hvd1B3ZCA/ICd0ZXh0JyA6ICdwYXNzd29yZCdcIlxuICAgICAgICAgICAgICAgcmVxdWlyZWQ+XG4gICAgICAgIDxidXR0b24gbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93UHdkID0gIXNob3dQd2RcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICA8bWF0LWljb24+e3tzaG93UHdkID8gJ3Zpc2liaWxpdHlfb2ZmJyA6ICd2aXNpYmlsaXR5J319PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJjb250cm9scy5wYXNzd29yZC5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBjb250cm9scy5wYXNzd29yZC50b3VjaGVkXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJjb250cm9scy5wYXNzd29yZC5oYXNFcnJvcignbWlubGVuZ3RoJykgJiYgY29udHJvbHMucGFzc3dvcmQudG91Y2hlZFwiPlxuICAgICAgICAgIDxzcGFuPnt7J0VSUk9SLkZJRUxEX01JTl9MRU5HVEgnIHwgdHJhbnNsYXRlOiB7bWluTGVuZ3RoOiA4fSB9fTwvc3Bhbj5cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8IS0tIENvbmZpcm0gcGFzc3dvcmQgLS0+XG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ1JFR0lTVEVSLkNPTkZJUk1fUEFTU1dPUkQnfHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb25maXJtUGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwic2VjdGlvbi1yZWQgbmV3LXBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgIFt0eXBlXT1cInNob3dDb25maXJtUHdkID8gJ3RleHQnIDogJ3Bhc3N3b3JkJ1wiXG4gICAgICAgICAgICAgICByZXF1aXJlZD5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dDb25maXJtUHdkID0gIXNob3dDb25maXJtUHdkXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgPG1hdC1pY29uPnt7c2hvd0NvbmZpcm1Qd2QgPyAndmlzaWJpbGl0eV9vZmYnIDogJ3Zpc2liaWxpdHknfX08L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImNvbnRyb2xzLmNvbmZpcm1QYXNzd29yZC5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBjb250cm9scy5jb25maXJtUGFzc3dvcmQudG91Y2hlZFwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiY29udHJvbHMuY29uZmlybVBhc3N3b3JkLmhhc0Vycm9yKCdlcXVhbHMnKSAmJiBjb250cm9scy5jb25maXJtUGFzc3dvcmQudG91Y2hlZFwiPlxuICAgICAgICAgIDxzcGFuPnt7J1JFR0lTVEVSLkVSUk9SLk5PVF9TQU1FX1BBU1NXT1JEJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgPC9mb3JtPlxuICA8L21hdC1zdGVwPlxuXG5cbiAgPCEtLSBTdGVwIDM6IHVzZXIgZGV0YWlscyAtLT5cbiAgPG1hdC1zdGVwIFtzdGVwQ29udHJvbF09XCJmb3Jtc1syXVwiICpuZ0lmPVwiZm9ybXNbMl0uY29udHJvbHM7IGxldCBjb250cm9sc1wiPlxuXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3Jtc1syXVwiIChuZ1N1Ym1pdCk9XCJkb1N1Ym1pdCgkZXZlbnQpXCIgY2xhc3M9XCJmb3JtLWNvbnRhaW5lciBpb24tcGFkZGluZ1wiIChrZXl1cC5lbnRlcik9XCJkb1N1Ym1pdCgpXCI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWw+e3snUkVHSVNURVIuU1RFUF9VU0VSX0RFVEFJTFMnfHRyYW5zbGF0ZX19PC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPCEtLSBlcnJvciAtLT5cbiAgICAgIDxpb24taXRlbSAqbmdJZj1cImVycm9yICYmICFzZW5kaW5nXCIgbGluZXM9XCJub25lXCI+XG4gICAgICAgIDxpb24taWNvbiBjb2xvcj1cImRhbmdlclwiIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIj48L2lvbi1pY29uPlxuICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJlcnJvclwiIFtpbm5lckhUTUxdPVwiZXJyb3J8dHJhbnNsYXRlXCI+PC9pb24tbGFiZWw+XG4gICAgICA8L2lvbi1pdGVtPlxuXG4gICAgICA8IS0tIExhc3QgbmFtZSAtLT5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInVVNFUi5MQVNUX05BTUUnfHRyYW5zbGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cImxhc3ROYW1lXCIgYXV0b2NvbXBsZXRlPVwic2VjdGlvbi1ibHVlIGZhbWlseS1uYW1lXCJcbiAgICAgICAgICByZXF1aXJlZD5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImNvbnRyb2xzLmxhc3ROYW1lLmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmIGNvbnRyb2xzLmxhc3ROYW1lLmRpcnR5XCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJjb250cm9scy5sYXN0TmFtZS5oYXNFcnJvcignbWlubGVuZ3RoJykgJiYgY29udHJvbHMubGFzdE5hbWUuZGlydHlcIj5cbiAgICAgICAgICA8c3Bhbj57eydFUlJPUi5GSUVMRF9NSU5fTEVOR1RIJyB8IHRyYW5zbGF0ZToge21pbkxlbmd0aDogMn0gfX08L3NwYW4+XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPCEtLSBGaXJzdCBuYW1lIC0tPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidVU0VSLkZJUlNUX05BTUUnfHRyYW5zbGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cImZpcnN0TmFtZVwiIGF1dG9jb21wbGV0ZT1cInNlY3Rpb24tYmx1ZSBnaXZlbi1uYW1lXCJcbiAgICAgICAgICByZXF1aXJlZD5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImNvbnRyb2xzLmZpcnN0TmFtZS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBjb250cm9scy5maXJzdE5hbWUuZGlydHlcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImNvbnRyb2xzLmZpcnN0TmFtZS5oYXNFcnJvcignbWlubGVuZ3RoJykgJiYgY29udHJvbHMuZmlyc3ROYW1lLmRpcnR5XCI+XG4gICAgICAgICAgPHNwYW4+e3snRVJST1IuRklFTERfTUlOX0xFTkdUSCcgfCB0cmFuc2xhdGU6IHttaW5MZW5ndGg6IDJ9IH19PC9zcGFuPlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDwhLS0gQWRkaXRpb25hbCBmaWVsZHMgLS0+XG4gICAgICA8YXBwLWZvcm0tZmllbGQgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGFkZGl0aW9uYWxGaWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkZWZpbml0aW9uXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIj5cbiAgICAgIDwvYXBwLWZvcm0tZmllbGQ+XG5cbiAgICA8L2Zvcm0+XG4gIDwvbWF0LXN0ZXA+XG48L21hdC1ob3Jpem9udGFsLXN0ZXBwZXI+XG4iXX0=
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { Component, ViewChild } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../../services/account.service";
|
|
4
|
-
import * as i2 from "@ionic/angular";
|
|
5
|
-
import * as i3 from "@angular/common";
|
|
6
|
-
import * as i4 from "@ngx-translate/core";
|
|
7
|
-
import * as i5 from "../form/form-register";
|
|
8
|
-
export class RegisterModal {
|
|
9
|
-
constructor(accountService, viewCtrl) {
|
|
10
|
-
this.accountService = accountService;
|
|
11
|
-
this.viewCtrl = viewCtrl;
|
|
12
|
-
this.sending = false;
|
|
13
|
-
}
|
|
14
|
-
cancel() {
|
|
15
|
-
console.debug('[register] cancelled');
|
|
16
|
-
this.viewCtrl.dismiss();
|
|
17
|
-
}
|
|
18
|
-
async doSubmit(event) {
|
|
19
|
-
if (this.form.form.disabled || this.sending)
|
|
20
|
-
return; // Skip
|
|
21
|
-
if (!this.form.valid || !this.form.isEnd()) {
|
|
22
|
-
this.form.markAsTouched();
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
this.sending = true;
|
|
26
|
-
const data = this.form.value;
|
|
27
|
-
this.form.disable();
|
|
28
|
-
try {
|
|
29
|
-
console.debug('[register] Sending registration to server...', data);
|
|
30
|
-
const res = await this.accountService.register(data);
|
|
31
|
-
console.debug('[register] Account registered!');
|
|
32
|
-
await this.viewCtrl.dismiss();
|
|
33
|
-
}
|
|
34
|
-
catch (err) {
|
|
35
|
-
this.form.error = err && err.message || err;
|
|
36
|
-
this.form.enable();
|
|
37
|
-
}
|
|
38
|
-
finally {
|
|
39
|
-
this.sending = false;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
RegisterModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: RegisterModal, deps: [{ token: i1.AccountService }, { token: i2.ModalController }], target: i0.ɵɵFactoryTarget.Component });
|
|
44
|
-
RegisterModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: RegisterModal, selector: "modal-register", viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true, static: true }], ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"secondary\">\n <ion-buttons slot=\"start\">\n <ion-button *ngIf=\"form.isBeginning()\" (click)=\"cancel()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n <ion-button *ngIf=\"!form.isBeginning()\" (click)=\"form.slidePrev()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title translate>REGISTER.TITLE</ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-spinner *ngIf=\"sending\"></ion-spinner>\n\n <ion-button *ngIf=\"!form.isEnd()\" (click)=\"form.slideNext()\"\n visible-xs visible-sm visible-mobile>\n <ion-label translate>COMMON.BTN_NEXT</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <ion-button *ngIf=\"form.isEnd() && !sending\" (click)=\"doSubmit()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"send\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <form-register (onSubmit)=\"doSubmit()\" (onCancel)=\"cancel()\" #form>\n </form-register>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <!-- buttons -->\n <ion-toolbar>\n\n <ion-row>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button *ngIf=\"form.isBeginning()\" fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button *ngIf=\"!form.isBeginning()\" fill=\"clear\" color=\"dark\" (click)=\"form.slidePrev()\" [disabled]=\"sending\">\n <ion-icon slot=\"start\" name=\"arrow-back\"></ion-icon>\n <ion-label translate>COMMON.BTN_BACK</ion-label>\n </ion-button>\n\n <ion-button *ngIf=\"!form.isEnd()\" (click)=\"form.slideNext()\" fill=\"solid\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_NEXT</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <ion-button *ngIf=\"form.isEnd()\" (click)=\"doSubmit()\" fill=\"solid\" [disabled]=\"sending\" color=\"tertiary\">\n <span translate>COMMON.BTN_SEND</span>\n <ion-icon slot=\"end\" name=\"send\"></ion-icon>\n </ion-button>\n </ion-col>\n </ion-row>\n\n\n </ion-toolbar>\n</ion-footer>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { 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.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { 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: i2.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i5.RegisterForm, selector: "form-register", outputs: ["onCancel", "onSubmit"] }] });
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: RegisterModal, decorators: [{
|
|
46
|
-
type: Component,
|
|
47
|
-
args: [{ selector: 'modal-register', template: "<ion-header>\n <ion-toolbar color=\"secondary\">\n <ion-buttons slot=\"start\">\n <ion-button *ngIf=\"form.isBeginning()\" (click)=\"cancel()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n <ion-button *ngIf=\"!form.isBeginning()\" (click)=\"form.slidePrev()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title translate>REGISTER.TITLE</ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-spinner *ngIf=\"sending\"></ion-spinner>\n\n <ion-button *ngIf=\"!form.isEnd()\" (click)=\"form.slideNext()\"\n visible-xs visible-sm visible-mobile>\n <ion-label translate>COMMON.BTN_NEXT</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <ion-button *ngIf=\"form.isEnd() && !sending\" (click)=\"doSubmit()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"send\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <form-register (onSubmit)=\"doSubmit()\" (onCancel)=\"cancel()\" #form>\n </form-register>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <!-- buttons -->\n <ion-toolbar>\n\n <ion-row>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button *ngIf=\"form.isBeginning()\" fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button *ngIf=\"!form.isBeginning()\" fill=\"clear\" color=\"dark\" (click)=\"form.slidePrev()\" [disabled]=\"sending\">\n <ion-icon slot=\"start\" name=\"arrow-back\"></ion-icon>\n <ion-label translate>COMMON.BTN_BACK</ion-label>\n </ion-button>\n\n <ion-button *ngIf=\"!form.isEnd()\" (click)=\"form.slideNext()\" fill=\"solid\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_NEXT</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <ion-button *ngIf=\"form.isEnd()\" (click)=\"doSubmit()\" fill=\"solid\" [disabled]=\"sending\" color=\"tertiary\">\n <span translate>COMMON.BTN_SEND</span>\n <ion-icon slot=\"end\" name=\"send\"></ion-icon>\n </ion-button>\n </ion-col>\n </ion-row>\n\n\n </ion-toolbar>\n</ion-footer>\n" }]
|
|
48
|
-
}], ctorParameters: function () { return [{ type: i1.AccountService }, { type: i2.ModalController }]; }, propDecorators: { form: [{
|
|
49
|
-
type: ViewChild,
|
|
50
|
-
args: ['form', { static: true }]
|
|
51
|
-
}] } });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtcmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvcmVnaXN0ZXIvbW9kYWwvbW9kYWwtcmVnaXN0ZXIudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvcmVnaXN0ZXIvbW9kYWwvbW9kYWwtcmVnaXN0ZXIuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVNuRCxNQUFNLE9BQU8sYUFBYTtJQU14QixZQUFvQixjQUE4QixFQUN6QyxRQUF5QjtRQURkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUN6QyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUxsQyxZQUFPLEdBQUcsS0FBSyxDQUFDO0lBTWhCLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBVztRQUN4QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sQ0FBQyxPQUFPO1FBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUU3QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXBCLElBQUk7WUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFckQsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQ2hELE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUMvQjtRQUNELE9BQU8sR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDO1lBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDcEI7Z0JBQ087WUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztTQUN0QjtJQUNILENBQUM7OzBHQXpDVSxhQUFhOzhGQUFiLGFBQWEsa0tDVDFCLHlpRkFvRUE7MkZEM0RhLGFBQWE7a0JBSnpCLFNBQVM7K0JBQ0UsZ0JBQWdCO21JQU9tQixJQUFJO3NCQUFoRCxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TW9kYWxDb250cm9sbGVyfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge0FjY291bnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hY2NvdW50LnNlcnZpY2UnO1xuaW1wb3J0IHtSZWdpc3RlckZvcm19IGZyb20gJy4uL2Zvcm0vZm9ybS1yZWdpc3Rlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZGFsLXJlZ2lzdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICdtb2RhbC1yZWdpc3Rlci5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgUmVnaXN0ZXJNb2RhbCB7XG5cbiAgc2VuZGluZyA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ2Zvcm0nLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIGZvcm06IFJlZ2lzdGVyRm9ybTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSxcbiAgICBwdWJsaWMgdmlld0N0cmw6IE1vZGFsQ29udHJvbGxlcikge1xuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIGNvbnNvbGUuZGVidWcoJ1tyZWdpc3Rlcl0gY2FuY2VsbGVkJyk7XG4gICAgdGhpcy52aWV3Q3RybC5kaXNtaXNzKCk7XG4gIH1cblxuICBhc3luYyBkb1N1Ym1pdChldmVudD86IGFueSkge1xuICAgIGlmICh0aGlzLmZvcm0uZm9ybS5kaXNhYmxlZCB8fCB0aGlzLnNlbmRpbmcpIHJldHVybjsgLy8gU2tpcFxuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkIHx8ICF0aGlzLmZvcm0uaXNFbmQoKSkge1xuICAgICAgdGhpcy5mb3JtLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNlbmRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmZvcm0udmFsdWU7XG5cbiAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tyZWdpc3Rlcl0gU2VuZGluZyByZWdpc3RyYXRpb24gdG8gc2VydmVyLi4uJywgZGF0YSk7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmFjY291bnRTZXJ2aWNlLnJlZ2lzdGVyKGRhdGEpO1xuXG4gICAgICBjb25zb2xlLmRlYnVnKCdbcmVnaXN0ZXJdIEFjY291bnQgcmVnaXN0ZXJlZCEnKTtcbiAgICAgIGF3YWl0IHRoaXMudmlld0N0cmwuZGlzbWlzcygpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmZvcm0uZXJyb3IgPSBlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyO1xuICAgICAgdGhpcy5mb3JtLmVuYWJsZSgpO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc2VuZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBjb2xvcj1cInNlY29uZGFyeVwiPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cbiAgICAgIDxpb24tYnV0dG9uICpuZ0lmPVwiZm9ybS5pc0JlZ2lubmluZygpXCIgKGNsaWNrKT1cImNhbmNlbCgpXCJcbiAgICAgICAgICAgICAgICAgIHZpc2libGUteHMgdmlzaWJsZS1zbSB2aXNpYmxlLW1vYmlsZT5cbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiYXJyb3ctYmFja1wiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8aW9uLWJ1dHRvbiAqbmdJZj1cIiFmb3JtLmlzQmVnaW5uaW5nKClcIiAoY2xpY2spPVwiZm9ybS5zbGlkZVByZXYoKVwiXG4gICAgICAgICAgICAgICAgICB2aXNpYmxlLXhzIHZpc2libGUtc20gdmlzaWJsZS1tb2JpbGU+XG4gICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImFycm93LWJhY2tcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG5cbiAgICA8aW9uLXRpdGxlIHRyYW5zbGF0ZT5SRUdJU1RFUi5USVRMRTwvaW9uLXRpdGxlPlxuXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgIDxpb24tc3Bpbm5lciAqbmdJZj1cInNlbmRpbmdcIj48L2lvbi1zcGlubmVyPlxuXG4gICAgICA8aW9uLWJ1dHRvbiAqbmdJZj1cIiFmb3JtLmlzRW5kKClcIiAoY2xpY2spPVwiZm9ybS5zbGlkZU5leHQoKVwiXG4gICAgICAgICAgICAgICAgICB2aXNpYmxlLXhzIHZpc2libGUtc20gdmlzaWJsZS1tb2JpbGU+XG4gICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPkNPTU1PTi5CVE5fTkVYVDwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJhcnJvdy1mb3J3YXJkXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgPGlvbi1idXR0b24gKm5nSWY9XCJmb3JtLmlzRW5kKCkgJiYgIXNlbmRpbmdcIiAoY2xpY2spPVwiZG9TdWJtaXQoKVwiXG4gICAgICAgICAgICAgICAgICB2aXNpYmxlLXhzIHZpc2libGUtc20gdmlzaWJsZS1tb2JpbGU+XG4gICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cInNlbmRcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG5cbjxpb24tY29udGVudD5cbiAgPGZvcm0tcmVnaXN0ZXIgKG9uU3VibWl0KT1cImRvU3VibWl0KClcIiAob25DYW5jZWwpPVwiY2FuY2VsKClcIiAjZm9ybT5cbiAgPC9mb3JtLXJlZ2lzdGVyPlxuPC9pb24tY29udGVudD5cblxuPGlvbi1mb290ZXIgaGlkZGVuLXhzIGhpZGRlbi1zbSBoaWRkZW4tbW9iaWxlPlxuICA8IS0tIGJ1dHRvbnMgLS0+XG4gIDxpb24tdG9vbGJhcj5cblxuICAgIDxpb24tcm93PlxuICAgICAgPGlvbi1jb2w+PC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj5cbiAgICAgICAgPGlvbi1idXR0b24gKm5nSWY9XCJmb3JtLmlzQmVnaW5uaW5nKClcIiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiAoY2xpY2spPVwiY2FuY2VsKClcIj5cbiAgICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5DT01NT04uQlROX0NBTkNFTDwvaW9uLWxhYmVsPlxuICAgICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgICAgPGlvbi1idXR0b24gKm5nSWY9XCIhZm9ybS5pc0JlZ2lubmluZygpXCIgZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImZvcm0uc2xpZGVQcmV2KClcIiBbZGlzYWJsZWRdPVwic2VuZGluZ1wiPlxuICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwiYXJyb3ctYmFja1wiPjwvaW9uLWljb24+XG4gICAgICAgICAgPGlvbi1sYWJlbCB0cmFuc2xhdGU+Q09NTU9OLkJUTl9CQUNLPC9pb24tbGFiZWw+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICA8aW9uLWJ1dHRvbiAqbmdJZj1cIiFmb3JtLmlzRW5kKClcIiAoY2xpY2spPVwiZm9ybS5zbGlkZU5leHQoKVwiIGZpbGw9XCJzb2xpZFwiIGNvbG9yPVwidGVydGlhcnlcIj5cbiAgICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5DT01NT04uQlROX05FWFQ8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJhcnJvdy1mb3J3YXJkXCI+PC9pb24taWNvbj5cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgIDxpb24tYnV0dG9uICpuZ0lmPVwiZm9ybS5pc0VuZCgpXCIgKGNsaWNrKT1cImRvU3VibWl0KClcIiBmaWxsPVwic29saWRcIiBbZGlzYWJsZWRdPVwic2VuZGluZ1wiIGNvbG9yPVwidGVydGlhcnlcIj5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+Q09NTU9OLkJUTl9TRU5EPC9zcGFuPlxuICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiZW5kXCIgbmFtZT1cInNlbmRcIj48L2lvbi1pY29uPlxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuXG5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWZvb3Rlcj5cbiJdfQ==
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { RouterModule } from '@angular/router';
|
|
3
|
-
import { IonicModule } from '@ionic/angular';
|
|
4
|
-
import { CommonModule } from '@angular/common';
|
|
5
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
6
|
-
import { TextPopoverTestingPage } from './text-popover.testing';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@ngx-translate/core";
|
|
9
|
-
import * as i2 from "@angular/router";
|
|
10
|
-
const routes = [
|
|
11
|
-
{
|
|
12
|
-
path: 'text-popover',
|
|
13
|
-
pathMatch: 'full',
|
|
14
|
-
component: TextPopoverTestingPage
|
|
15
|
-
}
|
|
16
|
-
];
|
|
17
|
-
export class TextPopoverTestingModule {
|
|
18
|
-
}
|
|
19
|
-
TextPopoverTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: TextPopoverTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
20
|
-
TextPopoverTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.5", ngImport: i0, type: TextPopoverTestingModule, declarations: [TextPopoverTestingPage], imports: [CommonModule,
|
|
21
|
-
IonicModule, i1.TranslateModule, i2.RouterModule], exports: [RouterModule,
|
|
22
|
-
TextPopoverTestingPage] });
|
|
23
|
-
TextPopoverTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: TextPopoverTestingModule, imports: [CommonModule,
|
|
24
|
-
IonicModule,
|
|
25
|
-
TranslateModule.forChild(),
|
|
26
|
-
RouterModule.forChild(routes), RouterModule] });
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: TextPopoverTestingModule, decorators: [{
|
|
28
|
-
type: NgModule,
|
|
29
|
-
args: [{
|
|
30
|
-
imports: [
|
|
31
|
-
CommonModule,
|
|
32
|
-
IonicModule,
|
|
33
|
-
TranslateModule.forChild(),
|
|
34
|
-
RouterModule.forChild(routes)
|
|
35
|
-
],
|
|
36
|
-
declarations: [
|
|
37
|
-
TextPopoverTestingPage
|
|
38
|
-
],
|
|
39
|
-
exports: [
|
|
40
|
-
RouterModule,
|
|
41
|
-
TextPopoverTestingPage
|
|
42
|
-
]
|
|
43
|
-
}]
|
|
44
|
-
}] });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1wb3BvdmVyLnRlc3RpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3RleHQtcG9wb3Zlci90ZXN0aW5nL3RleHQtcG9wb3Zlci50ZXN0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQUU5RCxNQUFNLE1BQU0sR0FBVztJQUNyQjtRQUNFLElBQUksRUFBRSxjQUFjO1FBQ3BCLFNBQVMsRUFBRSxNQUFNO1FBQ2pCLFNBQVMsRUFBRSxzQkFBc0I7S0FDbEM7Q0FDRixDQUFDO0FBaUJGLE1BQU0sT0FBTyx3QkFBd0I7O3FIQUF4Qix3QkFBd0I7c0hBQXhCLHdCQUF3QixpQkFQakMsc0JBQXNCLGFBTnRCLFlBQVk7UUFDWixXQUFXLGtEQVFYLFlBQVk7UUFDWixzQkFBc0I7c0hBR2Isd0JBQXdCLFlBYmpDLFlBQVk7UUFDWixXQUFXO1FBQ1gsZUFBZSxDQUFDLFFBQVEsRUFBRTtRQUMxQixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQU03QixZQUFZOzJGQUlILHdCQUF3QjtrQkFmcEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGVBQWUsQ0FBQyxRQUFRLEVBQUU7d0JBQzFCLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO3FCQUM5QjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osc0JBQXNCO3FCQUN2QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixzQkFBc0I7cUJBQ3ZCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlck1vZHVsZSwgUm91dGVzfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtJb25pY01vZHVsZX0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1RleHRQb3BvdmVyVGVzdGluZ1BhZ2V9IGZyb20gJy4vdGV4dC1wb3BvdmVyLnRlc3RpbmcnO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAge1xuICAgIHBhdGg6ICd0ZXh0LXBvcG92ZXInLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIGNvbXBvbmVudDogVGV4dFBvcG92ZXJUZXN0aW5nUGFnZVxuICB9XG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvbmljTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpLFxuICAgIFJvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFRleHRQb3BvdmVyVGVzdGluZ1BhZ2VcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFJvdXRlck1vZHVsZSxcbiAgICBUZXh0UG9wb3ZlclRlc3RpbmdQYWdlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVGV4dFBvcG92ZXJUZXN0aW5nTW9kdWxlIHtcbn1cbiJdfQ==
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { Validators } from '@angular/forms';
|
|
3
|
-
import { CdkTextareaAutosize } from '@angular/cdk/text-field';
|
|
4
|
-
import { AppForm } from '../form/form.class';
|
|
5
|
-
import { isNotNil } from '../../shared/functions';
|
|
6
|
-
import { focusInput } from '../../shared/inputs';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/forms";
|
|
9
|
-
import * as i2 from "@angular/common";
|
|
10
|
-
import * as i3 from "@angular/material/form-field";
|
|
11
|
-
import * as i4 from "@angular/cdk/text-field";
|
|
12
|
-
import * as i5 from "@angular/material/input";
|
|
13
|
-
import * as i6 from "../../shared/directives/autofocus.directive";
|
|
14
|
-
import * as i7 from "@ngx-translate/core";
|
|
15
|
-
export class TextForm extends AppForm {
|
|
16
|
-
constructor(injector, cd, formBuilder) {
|
|
17
|
-
super(injector);
|
|
18
|
-
this.injector = injector;
|
|
19
|
-
this.cd = cd;
|
|
20
|
-
this.formBuilder = formBuilder;
|
|
21
|
-
this.showError = true;
|
|
22
|
-
this.multiline = true;
|
|
23
|
-
this.autoHeight = false;
|
|
24
|
-
this.maxLength = 2000;
|
|
25
|
-
this.autofocus = false;
|
|
26
|
-
this.textAreaChanges = new EventEmitter();
|
|
27
|
-
}
|
|
28
|
-
ngOnInit() {
|
|
29
|
-
const form = this.formBuilder.group({
|
|
30
|
-
text: [null, isNotNil(this.maxLength)
|
|
31
|
-
? Validators.maxLength(this.maxLength)
|
|
32
|
-
: undefined
|
|
33
|
-
]
|
|
34
|
-
});
|
|
35
|
-
this.control = form.get('text');
|
|
36
|
-
this.setForm(form);
|
|
37
|
-
super.ngOnInit();
|
|
38
|
-
}
|
|
39
|
-
textAreaChanged(event) {
|
|
40
|
-
this.textAreaChanges.emit(this.control.value);
|
|
41
|
-
}
|
|
42
|
-
containerResize() {
|
|
43
|
-
this.autosizeDirective?.resizeToFitContent(true);
|
|
44
|
-
}
|
|
45
|
-
focusInput() {
|
|
46
|
-
if (this.textArea)
|
|
47
|
-
focusInput(this.textArea);
|
|
48
|
-
if (this.textInput)
|
|
49
|
-
focusInput(this.textInput);
|
|
50
|
-
}
|
|
51
|
-
markForCheck() {
|
|
52
|
-
this.cd.markForCheck();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
TextForm.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: TextForm, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
-
TextForm.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: TextForm, selector: "app-text-form", inputs: { showError: "showError", placeholder: "placeholder", multiline: "multiline", autoHeight: "autoHeight", maxLength: "maxLength", autofocus: "autofocus" }, outputs: { textAreaChanges: "textAreaChanges" }, viewQueries: [{ propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true }, { propertyName: "autosizeDirective", first: true, predicate: CdkTextareaAutosize, descendants: true }], usesInheritance: true, ngImport: i0, template: "<form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n <mat-form-field *ngIf=\"multiline; else monoline\">\n <textarea\n #textArea\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"control.disabled\"\n [class.fixed-height]=\"!autoHeight\"\n [cdkTextareaAutosize]=\"autoHeight\"\n (keyup)=\"textAreaChanged($event)\"\n (keydown.control.enter)=\"onSubmit.emit($event)\"\n [autofocus]=\"autofocus\"\n ></textarea>\n <mat-error *ngIf=\"control.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH' | translate: control.errors['maxlength'] }}\n </mat-error>\n <mat-hint *ngIf=\"maxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: textArea.value?.length || 0, max: maxLength } }}\n </mat-hint>\n </mat-form-field>\n <ng-template #monoline>\n <mat-form-field>\n <input\n #textInput\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"disabled\"\n [appAutofocus]=\"autofocus\"\n (keydown.control.enter)=\"onSubmit.emit($event)\"\n />\n <mat-error *ngIf=\"control.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH' | translate: control.errors['maxlength'] }}\n </mat-error>\n <mat-hint *ngIf=\"maxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: textInput.value?.length || 0, max: maxLength } }}\n </mat-hint>\n </mat-form-field>\n </ng-template>\n</form>\n", styles: ["textarea.fixed-height{height:11.5em}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i6.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: TextForm, decorators: [{
|
|
58
|
-
type: Component,
|
|
59
|
-
args: [{ selector: 'app-text-form', template: "<form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n <mat-form-field *ngIf=\"multiline; else monoline\">\n <textarea\n #textArea\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"control.disabled\"\n [class.fixed-height]=\"!autoHeight\"\n [cdkTextareaAutosize]=\"autoHeight\"\n (keyup)=\"textAreaChanged($event)\"\n (keydown.control.enter)=\"onSubmit.emit($event)\"\n [autofocus]=\"autofocus\"\n ></textarea>\n <mat-error *ngIf=\"control.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH' | translate: control.errors['maxlength'] }}\n </mat-error>\n <mat-hint *ngIf=\"maxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: textArea.value?.length || 0, max: maxLength } }}\n </mat-hint>\n </mat-form-field>\n <ng-template #monoline>\n <mat-form-field>\n <input\n #textInput\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"disabled\"\n [appAutofocus]=\"autofocus\"\n (keydown.control.enter)=\"onSubmit.emit($event)\"\n />\n <mat-error *ngIf=\"control.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH' | translate: control.errors['maxlength'] }}\n </mat-error>\n <mat-hint *ngIf=\"maxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: textInput.value?.length || 0, max: maxLength } }}\n </mat-hint>\n </mat-form-field>\n </ng-template>\n</form>\n", styles: ["textarea.fixed-height{height:11.5em}\n"] }]
|
|
60
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i1.UntypedFormBuilder }]; }, propDecorators: { showError: [{
|
|
61
|
-
type: Input
|
|
62
|
-
}], placeholder: [{
|
|
63
|
-
type: Input
|
|
64
|
-
}], multiline: [{
|
|
65
|
-
type: Input
|
|
66
|
-
}], autoHeight: [{
|
|
67
|
-
type: Input
|
|
68
|
-
}], maxLength: [{
|
|
69
|
-
type: Input
|
|
70
|
-
}], autofocus: [{
|
|
71
|
-
type: Input
|
|
72
|
-
}], textAreaChanges: [{
|
|
73
|
-
type: Output
|
|
74
|
-
}], textArea: [{
|
|
75
|
-
type: ViewChild,
|
|
76
|
-
args: ['textArea']
|
|
77
|
-
}], textInput: [{
|
|
78
|
-
type: ViewChild,
|
|
79
|
-
args: ['textInput']
|
|
80
|
-
}], autosizeDirective: [{
|
|
81
|
-
type: ViewChild,
|
|
82
|
-
args: [CdkTextareaAutosize]
|
|
83
|
-
}] } });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS90ZXh0LXBvcG92ZXIvdGV4dC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS90ZXh0LXBvcG92ZXIvdGV4dC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFjLFlBQVksRUFBWSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQXlDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7QUFPL0MsTUFBTSxPQUFPLFFBQVMsU0FBUSxPQUF1QjtJQWlCbkQsWUFBc0IsUUFBa0IsRUFBWSxFQUFxQixFQUFZLFdBQStCO1FBQ2xILEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQURJLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBWSxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFZLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQWhCM0csY0FBUyxHQUFHLElBQUksQ0FBQztRQUVqQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWpCLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQVd2RCxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ2xDLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDbkMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDdEMsQ0FBQyxDQUFDLFNBQVM7YUFDWjtTQUNGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQXVCLENBQUM7UUFDdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDbEIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFvQjtRQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsSUFBSSxJQUFJLENBQUMsU0FBUztZQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVTLFlBQVk7UUFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDOztxR0FqRFUsUUFBUTt5RkFBUixRQUFRLDJlQWFSLG1CQUFtQix1RUN6QmhDLG9qREF5Q0E7MkZEN0JhLFFBQVE7a0JBTHBCLFNBQVM7K0JBQ0UsZUFBZTtnS0FLaEIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTTtnQkFHZ0IsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNHLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDVSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1VudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0Nka1RleHRhcmVhQXV0b3NpemV9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXh0LWZpZWxkJztcbmltcG9ydCB7QXBwRm9ybX0gZnJvbSAnLi4vZm9ybS9mb3JtLmNsYXNzJztcbmltcG9ydCB7aXNOb3ROaWx9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHtmb2N1c0lucHV0fSBmcm9tICcuLi8uLi9zaGFyZWQvaW5wdXRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXRleHQtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0LWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGV4dEZvcm0gZXh0ZW5kcyBBcHBGb3JtPHt0ZXh0OiBzdHJpbmd9PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHNob3dFcnJvciA9IHRydWU7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG11bHRpbGluZSA9IHRydWU7XG4gIEBJbnB1dCgpIGF1dG9IZWlnaHQgPSBmYWxzZTtcbiAgQElucHV0KCkgbWF4TGVuZ3RoID0gMjAwMDtcbiAgQElucHV0KCkgYXV0b2ZvY3VzID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHRleHRBcmVhQ2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG5cbiAgQFZpZXdDaGlsZCgndGV4dEFyZWEnKSB0ZXh0QXJlYTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgndGV4dElucHV0JykgdGV4dElucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKENka1RleHRhcmVhQXV0b3NpemUpIGF1dG9zaXplRGlyZWN0aXZlOiBDZGtUZXh0YXJlYUF1dG9zaXplO1xuXG4gIGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLCBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcikge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHRleHQ6IFtudWxsLCBpc05vdE5pbCh0aGlzLm1heExlbmd0aClcbiAgICAgICAgPyBWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm1heExlbmd0aClcbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgIF1cbiAgICB9KTtcbiAgICB0aGlzLmNvbnRyb2wgPSBmb3JtLmdldCgndGV4dCcpIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgICB0aGlzLnNldEZvcm0oZm9ybSk7XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpXG4gIH1cblxuICB0ZXh0QXJlYUNoYW5nZWQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICB0aGlzLnRleHRBcmVhQ2hhbmdlcy5lbWl0KHRoaXMuY29udHJvbC52YWx1ZSk7XG4gIH1cblxuICBjb250YWluZXJSZXNpemUoKSB7XG4gICAgdGhpcy5hdXRvc2l6ZURpcmVjdGl2ZT8ucmVzaXplVG9GaXRDb250ZW50KHRydWUpO1xuICB9XG5cbiAgZm9jdXNJbnB1dCgpIHtcbiAgICBpZiAodGhpcy50ZXh0QXJlYSkgZm9jdXNJbnB1dCh0aGlzLnRleHRBcmVhKTtcbiAgICBpZiAodGhpcy50ZXh0SW5wdXQpIGZvY3VzSW5wdXQodGhpcy50ZXh0SW5wdXQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8Zm9ybSBjbGFzcz1cImZvcm0tY29udGFpbmVyXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cImRvU3VibWl0KCRldmVudClcIj5cbiAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwibXVsdGlsaW5lOyBlbHNlIG1vbm9saW5lXCI+XG4gICAgPHRleHRhcmVhXG4gICAgICAjdGV4dEFyZWFcbiAgICAgIG1hdElucHV0XG4gICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgW3JlYWRvbmx5XT1cImNvbnRyb2wuZGlzYWJsZWRcIlxuICAgICAgW2NsYXNzLmZpeGVkLWhlaWdodF09XCIhYXV0b0hlaWdodFwiXG4gICAgICBbY2RrVGV4dGFyZWFBdXRvc2l6ZV09XCJhdXRvSGVpZ2h0XCJcbiAgICAgIChrZXl1cCk9XCJ0ZXh0QXJlYUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAoa2V5ZG93bi5jb250cm9sLmVudGVyKT1cIm9uU3VibWl0LmVtaXQoJGV2ZW50KVwiXG4gICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgPjwvdGV4dGFyZWE+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImNvbnRyb2wuaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+XG4gICAgICB7eyAnRVJST1IuRklFTERfTUFYX0xFTkdUSCcgfCB0cmFuc2xhdGU6IGNvbnRyb2wuZXJyb3JzWydtYXhsZW5ndGgnXSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtaGludCAqbmdJZj1cIm1heExlbmd0aFwiIGFsaWduPVwiZW5kXCI+XG4gICAgICB7eyAnSU5GTy5URVhUX1BST0dSRVNTJyB8IHRyYW5zbGF0ZTogeyBjdXJyZW50OiB0ZXh0QXJlYS52YWx1ZT8ubGVuZ3RoIHx8IDAsIG1heDogbWF4TGVuZ3RoIH0gfX1cbiAgICA8L21hdC1oaW50PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuICA8bmctdGVtcGxhdGUgI21vbm9saW5lPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjdGV4dElucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cImRpc2FibGVkXCJcbiAgICAgICAgW2FwcEF1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgICAoa2V5ZG93bi5jb250cm9sLmVudGVyKT1cIm9uU3VibWl0LmVtaXQoJGV2ZW50KVwiXG4gICAgICAvPlxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImNvbnRyb2wuaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+XG4gICAgICAgIHt7ICdFUlJPUi5GSUVMRF9NQVhfTEVOR1RIJyB8IHRyYW5zbGF0ZTogY29udHJvbC5lcnJvcnNbJ21heGxlbmd0aCddIH19XG4gICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDxtYXQtaGludCAqbmdJZj1cIm1heExlbmd0aFwiIGFsaWduPVwiZW5kXCI+XG4gICAgICAgIHt7ICdJTkZPLlRFWFRfUFJPR1JFU1MnIHwgdHJhbnNsYXRlOiB7IGN1cnJlbnQ6IHRleHRJbnB1dC52YWx1ZT8ubGVuZ3RoIHx8IDAsIG1heDogbWF4TGVuZ3RoIH0gfX1cbiAgICAgIDwvbWF0LWhpbnQ+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZm9ybT5cbiJdfQ==
|