@sumaris-net/ngx-components 4.0.0-rc1 → 4.0.0-rc10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/public_api.mjs +5 -2
- package/esm2022/src/app/admin/admin-routing.module.mjs +5 -5
- package/esm2022/src/app/admin/admin.module.mjs +6 -6
- package/esm2022/src/app/admin/services/filter/person.filter.mjs +3 -2
- package/esm2022/src/app/admin/services/person.service.mjs +5 -5
- package/esm2022/src/app/admin/services/validator/person.validator.mjs +5 -5
- package/esm2022/src/app/admin/users/users.mjs +19 -28
- package/esm2022/src/app/admin/users/users.module.mjs +5 -5
- package/esm2022/src/app/core/about/about.modal.mjs +6 -6
- package/esm2022/src/app/core/about/about.module.mjs +5 -5
- package/esm2022/src/app/core/account/account.module.mjs +5 -5
- package/esm2022/src/app/core/account/account.page.mjs +23 -21
- package/esm2022/src/app/core/account/new-token.modal.mjs +20 -15
- package/esm2022/src/app/core/account/token.table.mjs +25 -20
- package/esm2022/src/app/core/auth/auth.form.mjs +6 -6
- package/esm2022/src/app/core/auth/auth.modal.mjs +5 -5
- package/esm2022/src/app/core/auth/auth.module.mjs +5 -5
- package/esm2022/src/app/core/core.module.mjs +5 -5
- package/esm2022/src/app/core/core.testing.module.mjs +5 -5
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +6 -6
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +5 -5
- package/esm2022/src/app/core/form/entity/editor.class.mjs +18 -13
- package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +6 -6
- package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +17 -11
- package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +5 -5
- package/esm2022/src/app/core/form/entity/entity.module.mjs +5 -5
- package/esm2022/src/app/core/form/form.class.mjs +5 -5
- package/esm2022/src/app/core/form/form.module.mjs +5 -5
- package/esm2022/src/app/core/form/list/list.form.mjs +6 -6
- package/esm2022/src/app/core/form/list/list.module.mjs +5 -5
- package/esm2022/src/app/core/form/properties/properties.form.mjs +7 -7
- package/esm2022/src/app/core/form/properties/properties.module.mjs +5 -5
- package/esm2022/src/app/core/form/properties/properties.table.mjs +12 -12
- package/esm2022/src/app/core/form/properties/property.validator.mjs +5 -5
- package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +5 -5
- package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +5 -5
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +5 -5
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +5 -5
- package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +7 -7
- package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +6 -11
- package/esm2022/src/app/core/graphql/graphql.module.mjs +6 -6
- package/esm2022/src/app/core/graphql/graphql.service.mjs +19 -18
- package/esm2022/src/app/core/home/home.mjs +7 -8
- package/esm2022/src/app/core/home/home.module.mjs +5 -5
- package/esm2022/src/app/core/icon/icon.component.mjs +4 -4
- package/esm2022/src/app/core/icon/icon.module.mjs +5 -5
- package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +6 -6
- package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +5 -5
- package/esm2022/src/app/core/menu/menu.component.mjs +16 -12
- package/esm2022/src/app/core/menu/menu.model.mjs +3 -2
- package/esm2022/src/app/core/menu/menu.module.mjs +5 -5
- package/esm2022/src/app/core/menu/menu.service.mjs +13 -7
- package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +5 -5
- package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +5 -5
- package/esm2022/src/app/core/menu/testing/menu.testing.mjs +5 -5
- package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +5 -5
- package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +5 -5
- package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +5 -5
- package/esm2022/src/app/core/peer/select-peer.modal.mjs +8 -7
- package/esm2022/src/app/core/peer/select-peer.module.mjs +5 -5
- package/esm2022/src/app/core/register/register-confirm.page.mjs +5 -5
- package/esm2022/src/app/core/register/register.form.mjs +6 -6
- package/esm2022/src/app/core/register/register.modal.mjs +5 -5
- package/esm2022/src/app/core/register/register.module.mjs +5 -5
- package/esm2022/src/app/core/services/account.service.mjs +52 -26
- package/esm2022/src/app/core/services/auth-guard.service.mjs +6 -6
- package/esm2022/src/app/core/services/base-entity-service.class.mjs +5 -5
- package/esm2022/src/app/core/services/base-graphql-service.class.mjs +6 -6
- package/esm2022/src/app/core/services/config/core.config.mjs +7 -7
- package/esm2022/src/app/core/services/config.service.mjs +15 -13
- package/esm2022/src/app/core/services/crypto.service.mjs +4 -4
- package/esm2022/src/app/core/services/local-settings.service.mjs +6 -6
- package/esm2022/src/app/core/services/model/account.model.mjs +5 -3
- package/esm2022/src/app/core/services/model/config.model.mjs +8 -6
- package/esm2022/src/app/core/services/model/department.model.mjs +3 -2
- package/esm2022/src/app/core/services/model/peer.model.mjs +3 -2
- package/esm2022/src/app/core/services/model/person.model.mjs +3 -2
- package/esm2022/src/app/core/services/model/referential.model.mjs +7 -3
- package/esm2022/src/app/core/services/model/token.model.mjs +8 -3
- package/esm2022/src/app/core/services/network.service.mjs +60 -42
- package/esm2022/src/app/core/services/network.types.mjs +1 -1
- package/esm2022/src/app/core/services/pipes/account.pipes.mjs +9 -9
- package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +5 -5
- package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +5 -5
- package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +9 -9
- package/esm2022/src/app/core/services/platform.service.mjs +23 -12
- package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +6 -6
- package/esm2022/src/app/core/services/testing/referential-filter.model.mjs +1 -1
- package/esm2022/src/app/core/services/testing/referential.validator.mjs +5 -5
- package/esm2022/src/app/core/services/validator/account.validator.mjs +5 -5
- package/esm2022/src/app/core/services/validator/base.validator.class.mjs +5 -5
- package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +5 -5
- package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +5 -5
- package/esm2022/src/app/core/services/validator/user-token.validator.mjs +5 -5
- package/esm2022/src/app/core/settings/settings.module.mjs +5 -5
- package/esm2022/src/app/core/settings/settings.page.mjs +7 -7
- package/esm2022/src/app/core/table/actions-column.component.mjs +5 -5
- package/esm2022/src/app/core/table/async-table.class.mjs +5 -5
- package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +5 -5
- package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +5 -5
- package/esm2022/src/app/core/table/memory-table.class.mjs +5 -5
- package/esm2022/src/app/core/table/table-select-columns.component.mjs +5 -5
- package/esm2022/src/app/core/table/table.class.mjs +9 -5
- package/esm2022/src/app/core/table/table.module.mjs +5 -5
- package/esm2022/src/app/core/table/testing/table-validator.service.mjs +5 -5
- package/esm2022/src/app/core/table/testing/table.testing.mjs +7 -7
- package/esm2022/src/app/core/table/testing/table.testing.module.mjs +5 -5
- package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +5 -5
- package/esm2022/src/app/core/table/testing/table2.testing.mjs +7 -7
- package/esm2022/src/app/shared/audio/audio.mjs +6 -6
- package/esm2022/src/app/shared/audio/audio.testing.mjs +5 -5
- package/esm2022/src/app/shared/audio/audio.testing.module.mjs +5 -5
- package/esm2022/src/app/shared/capacitor/keyboard.mjs +5 -5
- package/esm2022/src/app/shared/debug/debug.component.mjs +6 -6
- package/esm2022/src/app/shared/debug/debug.module.mjs +5 -5
- package/esm2022/src/app/shared/directives/autofocus.directive.mjs +5 -5
- package/esm2022/src/app/shared/directives/autotitle.directive.mjs +6 -6
- package/esm2022/src/app/shared/directives/directives.module.mjs +5 -5
- package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +4 -4
- package/esm2022/src/app/shared/directives/ng-var.directive.mjs +5 -5
- package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +6 -6
- package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +6 -6
- package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +5 -5
- package/esm2022/src/app/shared/file/file.service.mjs +6 -6
- package/esm2022/src/app/shared/form/field.component.mjs +7 -7
- package/esm2022/src/app/shared/form/loading-spinner.mjs +4 -4
- package/esm2022/src/app/shared/gesture/gesture-config.mjs +4 -4
- package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +5 -5
- package/esm2022/src/app/shared/help/help.modal.mjs +5 -5
- package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +8 -9
- package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +5 -5
- package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +5 -5
- package/esm2022/src/app/shared/http/http.utils.mjs +15 -11
- package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +6 -6
- package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +5 -5
- package/esm2022/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +1 -1
- package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +5 -5
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +5 -5
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +5 -5
- package/esm2022/src/app/shared/image/image.module.mjs +5 -5
- package/esm2022/src/app/shared/image/image.service.mjs +6 -6
- package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +1 -1
- package/esm2022/src/app/shared/logging/logging-service.class.mjs +6 -6
- package/esm2022/src/app/shared/logging/logging-service.module.mjs +5 -5
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +9 -9
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +5 -5
- package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +6 -6
- package/esm2022/src/app/shared/material/badge/badge.directive.mjs +6 -6
- package/esm2022/src/app/shared/material/badge/badge.module.mjs +5 -5
- package/esm2022/src/app/shared/material/badge/badge.test.mjs +5 -5
- package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +5 -5
- package/esm2022/src/app/shared/material/boolean/material-boolean2.mjs +6 -6
- package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +7 -7
- package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +5 -5
- package/esm2022/src/app/shared/material/chips/chips.module.mjs +5 -5
- package/esm2022/src/app/shared/material/chips/material.chips.mjs +7 -7
- package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +5 -5
- package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +5 -5
- package/esm2022/src/app/shared/material/datetime/material.date.mjs +8 -8
- package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +7 -7
- package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +36 -10
- package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +15 -8
- package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +8 -7
- package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +5 -5
- package/esm2022/src/app/shared/material/duration/duration.module.mjs +5 -5
- package/esm2022/src/app/shared/material/duration/material.duration.mjs +6 -6
- package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +5 -5
- package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +35 -10
- package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +5 -5
- package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +5 -5
- package/esm2022/src/app/shared/material/material.module.mjs +14 -9
- package/esm2022/src/app/shared/material/material.testing.module.mjs +16 -5
- package/esm2022/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +5 -5
- package/esm2022/src/app/shared/material/numpad/numpad.component.mjs +5 -5
- package/esm2022/src/app/shared/material/numpad/numpad.container.mjs +5 -5
- package/esm2022/src/app/shared/material/numpad/numpad.content.mjs +4 -4
- package/esm2022/src/app/shared/material/numpad/numpad.directive.mjs +5 -5
- package/esm2022/src/app/shared/material/numpad/numpad.dom-service.mjs +5 -5
- package/esm2022/src/app/shared/material/numpad/numpad.module.mjs +5 -5
- package/esm2022/src/app/shared/material/numpad/testing/numpad.test.mjs +5 -5
- package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +5 -5
- package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +5 -5
- package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +6 -6
- package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +5 -5
- package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +5 -5
- package/esm2022/src/app/shared/material/testing/common.test.mjs +5 -5
- package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +31 -0
- package/esm2022/src/app/shared/material/text/text-form.component.mjs +97 -0
- package/esm2022/src/app/shared/material/text/text-form.module.mjs +63 -0
- package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +41 -17
- package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +1 -1
- package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +5 -5
- package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +5 -5
- package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +25 -25
- package/esm2022/src/app/shared/pipes/colors.pipe.mjs +4 -4
- package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +6 -6
- package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +9 -9
- package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +6 -6
- package/esm2022/src/app/shared/pipes/duration.pipe.mjs +6 -6
- package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +4 -4
- package/esm2022/src/app/shared/pipes/form.pipes.mjs +21 -21
- package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +5 -5
- package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +10 -10
- package/esm2022/src/app/shared/pipes/maps.pipe.mjs +13 -13
- package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +7 -7
- package/esm2022/src/app/shared/pipes/math.pipes.mjs +13 -13
- package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +4 -4
- package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +5 -5
- package/esm2022/src/app/shared/pipes/pipes.module.mjs +5 -5
- package/esm2022/src/app/shared/pipes/property.pipes.mjs +9 -9
- package/esm2022/src/app/shared/pipes/string.pipes.mjs +31 -31
- package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +10 -10
- package/esm2022/src/app/shared/pipes/types.pipes.mjs +13 -13
- package/esm2022/src/app/shared/rx-state.module.mjs +5 -5
- package/esm2022/src/app/shared/services/entity-service.class.mjs +1 -1
- package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +13 -13
- package/esm2022/src/app/shared/services/progress-bar.service.mjs +4 -4
- package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +6 -6
- package/esm2022/src/app/shared/services/startable-service.class.mjs +7 -7
- package/esm2022/src/app/shared/services/translate-context.service.mjs +5 -5
- package/esm2022/src/app/shared/services.mjs +2 -2
- package/esm2022/src/app/shared/shared-routing.module.mjs +9 -9
- package/esm2022/src/app/shared/shared.module.mjs +27 -13
- package/esm2022/src/app/shared/shared.testing.module.mjs +5 -5
- package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +6 -6
- package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +5 -5
- package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +5 -5
- package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +5 -5
- package/esm2022/src/app/shared/storage/storage.service.mjs +6 -6
- package/esm2022/src/app/shared/testing/observable.test.mjs +5 -5
- package/esm2022/src/app/shared/testing/tests.page.mjs +6 -6
- package/esm2022/src/app/shared/toast/toast.testing.mjs +5 -5
- package/esm2022/src/app/shared/toast/toast.testing.module.mjs +5 -5
- package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +5 -5
- package/esm2022/src/app/shared/toolbar/toolbar.mjs +7 -7
- package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +5 -5
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +5 -5
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +5 -5
- package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +5 -5
- package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +5 -5
- package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +6 -6
- package/esm2022/src/app/social/job/job.module.mjs +5 -5
- package/esm2022/src/app/social/job/progression/job-progression.component.mjs +5 -5
- package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +6 -6
- package/esm2022/src/app/social/job/progression/job-progression.list.mjs +5 -5
- package/esm2022/src/app/social/job/progression/job-progression.model.mjs +3 -2
- package/esm2022/src/app/social/job/progression/job-progression.service.mjs +6 -6
- package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +6 -6
- package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +4 -4
- package/esm2022/src/app/social/job/testing/job.testing.module.mjs +5 -5
- package/esm2022/src/app/social/message/message.form.mjs +59 -7
- package/esm2022/src/app/social/message/message.modal.mjs +21 -13
- package/esm2022/src/app/social/message/message.model.mjs +5 -1
- package/esm2022/src/app/social/message/message.module.mjs +9 -22
- package/esm2022/src/app/social/message/message.service.mjs +33 -11
- package/esm2022/src/app/social/social.module.mjs +5 -5
- package/esm2022/src/app/social/social.testing.module.mjs +5 -5
- package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +6 -6
- package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +6 -6
- package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +6 -6
- package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +3 -2
- package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +5 -5
- package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +6 -6
- package/esm2022/src/app/social/user-event/user-event.module.mjs +5 -5
- package/esm2022/src/app/social/user-event/user-event.service.mjs +40 -26
- package/esm2022/src/environments/environment.class.mjs +4 -1
- package/esm2022/src/environments/environment.loader.mjs +83 -0
- package/esm2022/src/environments/environment.mjs +18 -15
- package/fesm2022/sumaris-net.ngx-components.mjs +4422 -3975
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +31 -6
- package/public_api.d.ts +4 -1
- package/src/app/core/account/account.page.d.ts +3 -2
- package/src/app/core/account/new-token.modal.d.ts +1 -3
- package/src/app/core/account/token.table.d.ts +5 -3
- package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +1 -1
- package/src/app/core/form/entity/editor.class.d.ts +1 -1
- package/src/app/core/form/entity/entity-editor.class.d.ts +10 -6
- package/src/app/core/form/entity/entity-metadata.component.d.ts +1 -1
- package/src/app/core/form/text-popover/text-popover.component.d.ts +1 -1
- package/src/app/core/form/text-popover/text-popover.module.d.ts +4 -5
- package/src/app/core/graphql/graphql.service.d.ts +2 -4
- package/src/app/core/graphql/graphql.utils.d.ts +1 -1
- package/src/app/core/menu/menu.component.d.ts +6 -2
- package/src/app/core/menu/menu.service.d.ts +2 -0
- package/src/app/core/services/account.service.d.ts +4 -0
- package/src/app/core/services/config/core.config.d.ts +2 -2
- package/src/app/core/services/model/referential.model.d.ts +2 -1
- package/src/app/core/services/model/token.model.d.ts +1 -0
- package/src/app/core/services/network.service.d.ts +11 -7
- package/src/app/core/table/table.class.d.ts +1 -0
- package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +2 -4
- package/src/app/shared/http/http.utils.d.ts +1 -0
- package/src/app/shared/inputs.d.ts +1 -1
- package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +1 -1
- package/src/app/shared/material/datetime/material.datetime.d.ts +10 -4
- package/src/app/shared/material/latlong/material.latlong.d.ts +10 -4
- package/src/app/shared/material/material.module.d.ts +2 -1
- package/src/app/shared/material/material.testing.module.d.ts +14 -13
- package/src/app/shared/material/text/testing/text-form.testing.d.ts +13 -0
- package/src/app/{core/form/text-popover → shared/material/text}/text-form.component.d.ts +2 -2
- package/src/app/shared/material/text/text-form.module.d.ts +16 -0
- package/src/app/shared/named-filter/named-filter-selector.component.d.ts +9 -3
- package/src/app/shared/services/entity-service.class.d.ts +1 -1
- package/src/app/shared/services/memory-entity-service.class.d.ts +7 -3
- package/src/app/shared/services.d.ts +1 -0
- package/src/app/shared/shared.module.d.ts +5 -3
- package/src/app/social/message/message.form.d.ts +8 -2
- package/src/app/social/message/message.modal.d.ts +5 -1
- package/src/app/social/message/message.model.d.ts +2 -0
- package/src/app/social/message/message.module.d.ts +2 -1
- package/src/app/social/message/message.service.d.ts +8 -3
- package/src/app/social/user-event/user-event.service.d.ts +5 -0
- package/src/assets/environments/environment-test.json +6 -0
- package/src/assets/i18n/en-US.json +25 -23
- package/src/assets/i18n/en.json +25 -23
- package/src/assets/i18n/fr.json +8 -5
- package/src/assets/manifest.json +1 -1
- package/src/environments/environment.class.d.ts +2 -0
- package/src/environments/environment.loader.d.ts +26 -0
- package/src/theme/_material.scss +20 -4
- package/src/theme/_ngx-components.globals.scss +2 -2
- package/src/theme/_ngx-components.scss +1 -1
- package/src/theme/_ngx-components.table.scss +9 -3
- package/esm2022/src/app/core/form/text-popover/text-form.component.mjs +0 -97
package/src/assets/i18n/en.json
CHANGED
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
"BTN_SAVE": "Save",
|
|
34
34
|
"BTN_SAVE_WITH_SHORTCUT": "<u>S</u>ave",
|
|
35
35
|
"BTN_SAVE_WITH_SHORTCUT_HELP": "Save (Ctrl+S)",
|
|
36
|
+
"BTN_SAVE_AND_CLOSE": "Save and close",
|
|
37
|
+
"BTN_SAVE_AND_NEXT": "Save and next",
|
|
36
38
|
"BTN_FILTER": "Filter",
|
|
37
39
|
"BTN_RELOAD": "Reload",
|
|
38
40
|
"BTN_REFRESH": "Refresh",
|
|
@@ -104,6 +106,7 @@
|
|
|
104
106
|
|
|
105
107
|
"YES": "Yes",
|
|
106
108
|
"NO": "No",
|
|
109
|
+
"DEBUG": "Debug",
|
|
107
110
|
|
|
108
111
|
"UPDATED_ON": "Last modification on",
|
|
109
112
|
"RECORDER": "Recorder",
|
|
@@ -113,10 +116,8 @@
|
|
|
113
116
|
"PLEASE_WAIT": "Please wait...",
|
|
114
117
|
"NO_DATA": "No data",
|
|
115
118
|
"MISSING": "Missing",
|
|
116
|
-
|
|
117
119
|
"DISPLAYED_COLUMNS": "Displayed columns",
|
|
118
120
|
"DISPLAYED_COLUMNS_DOTS": "Displayed columns...",
|
|
119
|
-
|
|
120
121
|
"FORM": {
|
|
121
122
|
"HAS_ERROR": "Please correct errors in the form"
|
|
122
123
|
},
|
|
@@ -144,15 +145,19 @@
|
|
|
144
145
|
"CONFIGURATION": {
|
|
145
146
|
"OPTIONS": {
|
|
146
147
|
"ANDROID_INSTALL_URL": "Android > Install App URL",
|
|
147
|
-
"
|
|
148
|
+
"DB_TIMEZONE": "Persistence > Database timezone (readonly option)",
|
|
149
|
+
"LOGO": "Menu > Logo (max width 110px)",
|
|
148
150
|
"FAVICON": "favicon",
|
|
149
|
-
"GRAVATAR_URL": "User > Gravatar URL (with '{md5}'",
|
|
150
|
-
"ENABLE_GRAVATAR": "User > Enable Gravatar
|
|
151
|
+
"GRAVATAR_URL": "User > Gravatar URL (with '{md5}')",
|
|
152
|
+
"ENABLE_GRAVATAR": "User > Enable Gravatar?",
|
|
151
153
|
"DEFAULT_LOCALE": "Default Language",
|
|
152
154
|
"DEFAULT_LATLONG_FORMAT": "Default lat/lon format",
|
|
153
155
|
"APP_MIN_VERSION": "App > Minimal compatible version (x.y.z)",
|
|
154
156
|
"HELP_URL": "App > User manual (URL)",
|
|
155
157
|
"FORUM_URL": "App > Forum address (URL)",
|
|
158
|
+
"ACCOUNT": {
|
|
159
|
+
"READONLY": "Account > Readonly profile? (readonly option)"
|
|
160
|
+
},
|
|
156
161
|
"HOME": {
|
|
157
162
|
"LOGO_LARGE": "Home > Logo (max width 400px)",
|
|
158
163
|
"PARTNER_DEPARTMENTS": "Home > Partners logos",
|
|
@@ -181,14 +186,14 @@
|
|
|
181
186
|
"LOCATION_LEVEL_COUNTRY_ID": "Referential > Location level de lieu > Country",
|
|
182
187
|
"LOCATION_LEVEL_PORT_ID": "Referential > Location level > Port",
|
|
183
188
|
"LOCATION_LEVEL_AUCTION_ID": "Referential > Location level > Sale auction",
|
|
184
|
-
"
|
|
185
|
-
"
|
|
189
|
+
"LOCATION_LEVEL_RECTANGLE_ICES_ID": "Referential > Location level > CIEM/ICES Statistical Rectangle",
|
|
190
|
+
"LOCATION_LEVEL_DIVISION_ICES_ID": "Referential > Location level > CIEM/ICES Division",
|
|
186
191
|
"TAXONOMIC_LEVEL_FAMILY_ID": "Referential > Taxonomic level > Family",
|
|
187
192
|
"TAXONOMIC_LEVEL_GENUS_ID": "Referential > Taxonomic level > Genus",
|
|
188
193
|
"TAXONOMIC_LEVEL_SPECIES_ID": "Referential > Taxonomic level > Species",
|
|
189
194
|
"TAXONOMIC_LEVEL_SUBSPECIES_ID": "Referential > Taxonomic level > Subspecies"
|
|
190
195
|
},
|
|
191
|
-
"TESTING": "Developer mode
|
|
196
|
+
"TESTING": "Developer mode?",
|
|
192
197
|
"ENTITY_TRASH": "Enable trash on pod?",
|
|
193
198
|
"UPDATE_TECHNICAL_TABLES": "Automatically update technical tables?",
|
|
194
199
|
"ANALYTIC_REFERENCES_ENABLE": "Strategy > Analytic references: Enable?",
|
|
@@ -198,9 +203,7 @@
|
|
|
198
203
|
"TOKEN": "Crypto",
|
|
199
204
|
"BASIC_AND_TOKEN": "Basic and crypto"
|
|
200
205
|
},
|
|
201
|
-
"
|
|
202
|
-
"ENABLE_AUTH_TOKENS": "Enable auth tokens"
|
|
203
|
-
}
|
|
206
|
+
"ENABLE_AUTH_API_TOKENS": "API > Enable auth tokens"
|
|
204
207
|
}
|
|
205
208
|
},
|
|
206
209
|
"MENU": {
|
|
@@ -214,7 +217,12 @@
|
|
|
214
217
|
"LOCAL_SETTINGS": "Settings",
|
|
215
218
|
"LOGOUT": "Logout",
|
|
216
219
|
"ABOUT": "About",
|
|
217
|
-
"BTN_MY_ACCOUNT": "My account"
|
|
220
|
+
"BTN_MY_ACCOUNT": "My account",
|
|
221
|
+
|
|
222
|
+
"TRIPS": "Trips",
|
|
223
|
+
"LOGBOOKS": "Logbooks",
|
|
224
|
+
"OCCASIONS": "Occasions",
|
|
225
|
+
"AUCTION_OCCASIONS": "Auction occasions"
|
|
218
226
|
},
|
|
219
227
|
"ABOUT": {
|
|
220
228
|
"TITLE": "About",
|
|
@@ -460,14 +468,6 @@
|
|
|
460
468
|
"NOT_COMPATIBLE_PEER": "The application works in <b>offline mode</b>, because the node <b>use a too old version</b>.<br/><small>If the problem persists, please <b>contact your administrator</b>, or select a node v{{version}} or superior.</small>"
|
|
461
469
|
}
|
|
462
470
|
},
|
|
463
|
-
"MAP": {
|
|
464
|
-
"ZOOM_IN": "Zoom in",
|
|
465
|
-
"ZOOM_OUT": "Zoom out",
|
|
466
|
-
"ENTER_FULLSCREEN": "Fullscreen mode",
|
|
467
|
-
"EXIT_FULLSCREEN": "Exit fullscreen mode",
|
|
468
|
-
"SHOW_GRATICULE": "Show graticule",
|
|
469
|
-
"HIDE_GRATICULE": "Hide graticule"
|
|
470
|
-
},
|
|
471
471
|
"SOCIAL": {
|
|
472
472
|
"USER_EVENT": {
|
|
473
473
|
"NOTIFICATION": {
|
|
@@ -486,7 +486,8 @@
|
|
|
486
486
|
"TYPE_ENUM": {
|
|
487
487
|
"DEBUG_DATA": "Debug data",
|
|
488
488
|
"INBOX_MESSAGE": "Inbox message",
|
|
489
|
-
"FEED": "Feed"
|
|
489
|
+
"FEED": "Feed",
|
|
490
|
+
"JOB": "{{name}}<br/><b>{{status}}</b>"
|
|
490
491
|
}
|
|
491
492
|
},
|
|
492
493
|
"JOB": {
|
|
@@ -498,6 +499,7 @@
|
|
|
498
499
|
"MESSAGE": {
|
|
499
500
|
"TYPE": "Message type",
|
|
500
501
|
"RECIPIENTS": "Recipients",
|
|
502
|
+
"RECIPIENT_FILTER_COUNT": "{{count}} filtered users",
|
|
501
503
|
"SUBJECT": "Object",
|
|
502
504
|
"BODY_HELP": "Your message...",
|
|
503
505
|
"NEW": {
|
|
@@ -641,8 +643,8 @@
|
|
|
641
643
|
"ACTION_IMMEDIATE": "This operation is irreversible.<br/><br/><b>Are you sure</b> you want to continue?",
|
|
642
644
|
"DELETE_ROW": "<b>Are you sure</b> you want to delete this row?",
|
|
643
645
|
"DELETE_ROWS": "<b>Are you sure</b> you want to delete this rows?",
|
|
644
|
-
"CANCEL_ROW": "<b>Are you sure</b> you want to cancel changes on this row
|
|
645
|
-
"CANCEL_ROWS": "<b>Are you sure</b> you want to cancel changes on these rows
|
|
646
|
+
"CANCEL_ROW": "<b>Are you sure</b> you want to cancel changes on this row?",
|
|
647
|
+
"CANCEL_ROWS": "<b>Are you sure</b> you want to cancel changes on these rows?",
|
|
646
648
|
"SEND_DEBUG_DATA": "Do you want to send this data to the administrator for help?",
|
|
647
649
|
"RELOAD_APP": "A new <b>version {{version}}</b> is available for {{name}}:<ul><li><b>Save</b> any current changes<li>Click on the <b>Update</b> button, or refresh the browser tab.</ul>"
|
|
648
650
|
},
|
package/src/assets/i18n/fr.json
CHANGED
|
@@ -145,6 +145,7 @@
|
|
|
145
145
|
"CONFIGURATION": {
|
|
146
146
|
"OPTIONS": {
|
|
147
147
|
"ANDROID_INSTALL_URL": "Android > URL d'installation App",
|
|
148
|
+
"DB_TIMEZONE": "Persistance > Timezone de la base de données (option non modifiable)",
|
|
148
149
|
"LOGO": "Menu > Logo (largeur max 110px)",
|
|
149
150
|
"FAVICON": "favicon",
|
|
150
151
|
"GRAVATAR_URL": "Utilisateur > URL Gravatar (avec '{md5}')",
|
|
@@ -154,6 +155,9 @@
|
|
|
154
155
|
"APP_MIN_VERSION": "App > Version minimale compatible (x.y.z)",
|
|
155
156
|
"HELP_URL": "App > Adresse du manuel utilisateur (URL)",
|
|
156
157
|
"FORUM_URL": "App > Adresse du forum (URL)",
|
|
158
|
+
"ACCOUNT": {
|
|
159
|
+
"READONLY": "Compte > Profil en lecture seule ? (option non modifiable)"
|
|
160
|
+
},
|
|
157
161
|
"HOME": {
|
|
158
162
|
"LOGO_LARGE": "Accueil > Logo (largeur max 400px)",
|
|
159
163
|
"PARTNER_DEPARTMENTS": "Accueil > Logo des partenaires",
|
|
@@ -182,8 +186,8 @@
|
|
|
182
186
|
"LOCATION_LEVEL_COUNTRY_ID": "Référentiel > Niveau de lieu > Pays",
|
|
183
187
|
"LOCATION_LEVEL_PORT_ID": "Référentiel > Niveau de lieu > Port",
|
|
184
188
|
"LOCATION_LEVEL_AUCTION_ID": "Référentiel > Niveau de lieu > Criée",
|
|
185
|
-
"
|
|
186
|
-
"
|
|
189
|
+
"LOCATION_LEVEL_RECTANGLE_ICES_ID": "Référentiel > Niveau de lieu > Rectangle statistique CIEM/ICES",
|
|
190
|
+
"LOCATION_LEVEL_DIVISION_ICES_ID": "Référentiel > Niveau de lieu > Division CIEM/ICES",
|
|
187
191
|
"TAXONOMIC_LEVEL_FAMILY_ID": "Référentiel > Niveau taxinomique > Famille",
|
|
188
192
|
"TAXONOMIC_LEVEL_GENUS_ID": "Référentiel > Niveau taxinomique > Genre",
|
|
189
193
|
"TAXONOMIC_LEVEL_SPECIES_ID": "Référentiel > Niveau taxinomique > Espèce",
|
|
@@ -199,9 +203,7 @@
|
|
|
199
203
|
"TOKEN": "Cryptographique",
|
|
200
204
|
"BASIC_AND_TOKEN": "Basique et cryptographique"
|
|
201
205
|
},
|
|
202
|
-
"
|
|
203
|
-
"ENABLE_AUTH_TOKENS": "Activer les jetons d'authentification"
|
|
204
|
-
}
|
|
206
|
+
"ENABLE_AUTH_API_TOKENS": "API > Activer les jetons d'authentification"
|
|
205
207
|
}
|
|
206
208
|
},
|
|
207
209
|
"MENU": {
|
|
@@ -497,6 +499,7 @@
|
|
|
497
499
|
"MESSAGE": {
|
|
498
500
|
"TYPE": "Type d'envoi",
|
|
499
501
|
"RECIPIENTS": "Destinataires",
|
|
502
|
+
"RECIPIENT_FILTER_COUNT": "{{count}} utilisateurs filtrés",
|
|
500
503
|
"SUBJECT": "Objet",
|
|
501
504
|
"BODY_HELP": "Votre message...",
|
|
502
505
|
"NEW": {
|
package/src/assets/manifest.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "ngx-sumaris-components",
|
|
3
3
|
"short_name": "ngx-sumaris-components",
|
|
4
4
|
"manifest_version": 1,
|
|
5
|
-
"version": "2.6.
|
|
5
|
+
"version": "2.6.24",
|
|
6
6
|
"default_locale": "fr",
|
|
7
7
|
"description": "Angular components for building beautiful and responsive Apps",
|
|
8
8
|
"icons": [{
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Environment } from './environment.class';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare abstract class EnvironmentLoader<T extends Environment = Environment> {
|
|
5
|
+
abstract load(): Promise<T>;
|
|
6
|
+
abstract get(): T;
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EnvironmentLoader<any>, never>;
|
|
8
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<EnvironmentLoader<any>, never, never, {}, {}, never, never, false, never>;
|
|
9
|
+
}
|
|
10
|
+
export declare class EnvironmentHttpLoader<T extends Environment = Environment> extends EnvironmentLoader<T> {
|
|
11
|
+
protected http: HttpClient;
|
|
12
|
+
private readonly _logPrefix;
|
|
13
|
+
protected _debug: boolean;
|
|
14
|
+
protected _environment: T;
|
|
15
|
+
protected _loaded: boolean;
|
|
16
|
+
protected readonly _externalEnvironmentUrl: string;
|
|
17
|
+
constructor(http: HttpClient, defaultEnvironment?: T);
|
|
18
|
+
/**
|
|
19
|
+
* Get the loaded environment. Should be call after loaded
|
|
20
|
+
*/
|
|
21
|
+
get(): T;
|
|
22
|
+
load(): Promise<T>;
|
|
23
|
+
protected fetch(url: string): Promise<Partial<T>>;
|
|
24
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EnvironmentHttpLoader<any>, never>;
|
|
25
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<EnvironmentHttpLoader<any>>;
|
|
26
|
+
}
|
package/src/theme/_material.scss
CHANGED
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
// --------------------------------------------------
|
|
2
2
|
// Override material style
|
|
3
3
|
// --------------------------------------------------
|
|
4
|
-
.mat-tab-group.mat-secondary, .mat-tab-nav-bar.mat-secondary {
|
|
4
|
+
.mat-mdc-tab-group.mat-secondary, .mat-mdc-tab-nav-bar.mat-secondary {
|
|
5
5
|
background-color: var(--ion-color-secondary, $secondary);
|
|
6
|
-
.mat-tab-link {
|
|
6
|
+
.mat-mdc-tab-link {
|
|
7
7
|
color: var(--ion-color-secondary-contrast);
|
|
8
8
|
--mat-tab-header-label-text-tracking: normal;
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
-
.mat-tab-group.mat-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary .mat-ink-bar {
|
|
11
|
+
.mat-mdc-tab-group.mat-primary .mat-ink-bar, .mat-mdc-tab-nav-bar.mat-primary .mat-ink-bar {
|
|
12
12
|
background-color: var(--ion-color-primary, $primary);
|
|
13
13
|
}
|
|
14
|
+
// Keep some style element that have changed after angular 15 migration
|
|
15
|
+
.mdc-tab {
|
|
16
|
+
min-width: 160px !important;
|
|
17
|
+
}
|
|
18
|
+
.mat-mdc-tab-group, .mat-mdc-tab-nav-bar {
|
|
19
|
+
--mat-tab-header-active-label-text-color: #000000de;
|
|
20
|
+
--mat-tab-header-active-focus-label-text-color: #000000de;
|
|
21
|
+
--mat-tab-header-active-hover-label-text-color: #000000de;
|
|
22
|
+
}
|
|
23
|
+
.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper {
|
|
24
|
+
transform: translateY(0px) !important;
|
|
25
|
+
}
|
|
26
|
+
|
|
14
27
|
// Icon, Button
|
|
15
28
|
.mat-icon.mat-primary,
|
|
16
29
|
.mat-icon-button.mat-primary,
|
|
@@ -35,6 +48,9 @@
|
|
|
35
48
|
}
|
|
36
49
|
|
|
37
50
|
// Badge
|
|
51
|
+
.mdc-tab .mat-badge-content {
|
|
52
|
+
padding-left: 2px;
|
|
53
|
+
}
|
|
38
54
|
.mat-badge-primary .mat-badge-content {
|
|
39
55
|
background-color: var(--ion-color-tertiary);
|
|
40
56
|
color: var(--ion-color-tertiary-contrast);
|
|
@@ -124,7 +140,7 @@ mat-icon[slot] {
|
|
|
124
140
|
pointer-events: none;
|
|
125
141
|
}
|
|
126
142
|
|
|
127
|
-
|
|
143
|
+
// Form Fields
|
|
128
144
|
.mat-mdc-form-field-errors {
|
|
129
145
|
margin-top: -20px;
|
|
130
146
|
|
|
@@ -16,7 +16,7 @@ $app-form-buttons-bar-height: 56px !default;
|
|
|
16
16
|
$app-select-option-border-color: rgba(0, 0, 0, 0.12) !default;
|
|
17
17
|
$app-table-border-color: rgba(0, 0, 0, 0.08) !default;
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
//$app-form-field-background-color: rgba(0,0,0,0) !default;
|
|
20
|
+
$app-form-field-background-color: whitesmoke !default;
|
|
21
21
|
$app-form-field-focus-background-color: rgba(0, 0, 0, 0) !default;
|
|
22
22
|
//$app-form-field-focus-background-color: rgba(0, 0, 0, 0.87) !default;
|
|
@@ -847,7 +847,7 @@ mat-button-toggle.mat-button-toggle-checked.mat-button-toggle-disabled {
|
|
|
847
847
|
// --------------------------------------------------
|
|
848
848
|
|
|
849
849
|
// --- Allow to hide headers
|
|
850
|
-
mat-tab-group.mat-tab-group-header-hidden .mat-tab-header {
|
|
850
|
+
mat-tab-group.mat-tab-group-header-hidden .mat-mdc-tab-header {
|
|
851
851
|
display: none;
|
|
852
852
|
}
|
|
853
853
|
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
--mat-table-row-item-label-text-tracking: 0.5px;
|
|
23
23
|
--mat-form-field-container-text-tracking: 0.5px;
|
|
24
24
|
--mdc-typography-body1-letter-spacing: 0.0178571429em;
|
|
25
|
-
--mat-table-row-item-label-text-size:
|
|
25
|
+
--mat-table-row-item-label-text-size: 14px;
|
|
26
26
|
|
|
27
27
|
.mat-mdc-header-cell {
|
|
28
28
|
color: var(--ion-color-primary);
|
|
@@ -56,6 +56,8 @@
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
.mat-mdc-header-row {
|
|
59
|
+
--mat-table-header-headline-size: 12px;
|
|
60
|
+
--mat-table-header-headline-line-height: 12px;
|
|
59
61
|
height: var(--app-table-header-height, 52px);
|
|
60
62
|
border-bottom: 1px solid #{$app-table-border-color};
|
|
61
63
|
}
|
|
@@ -214,7 +216,7 @@
|
|
|
214
216
|
&.mat-row-selected {
|
|
215
217
|
background-color: var(--ion-color-secondary100);
|
|
216
218
|
|
|
217
|
-
&:hover {
|
|
219
|
+
&:not(.mat-row-error):hover {
|
|
218
220
|
background-color: var(--ion-color-secondary100);
|
|
219
221
|
}
|
|
220
222
|
|
|
@@ -270,6 +272,8 @@
|
|
|
270
272
|
app-form-field,
|
|
271
273
|
.mat-mdc-form-field {
|
|
272
274
|
width: 100%;
|
|
275
|
+
--mat-form-field-container-text-size: 14px;
|
|
276
|
+
--mdc-filled-text-field-label-text-size: var(--mat-form-field-container-text-size);
|
|
273
277
|
--mat-mdc-form-field-height: calc(var(--mat-row-height) - 2px);
|
|
274
278
|
// TODO
|
|
275
279
|
// use -- active- boder : 0;
|
|
@@ -318,9 +322,11 @@
|
|
|
318
322
|
width: 100%;
|
|
319
323
|
white-space: nowrap;
|
|
320
324
|
overflow: inherit;
|
|
321
|
-
|
|
325
|
+
|
|
322
326
|
padding-top: var(--mat-cell-padding-top) !important;
|
|
327
|
+
padding-right: 0;
|
|
323
328
|
padding-bottom: 0;
|
|
329
|
+
padding-left: 0;
|
|
324
330
|
|
|
325
331
|
.mat-mdc-input-element,
|
|
326
332
|
input {
|
|
@@ -1,97 +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.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/material/input";
|
|
12
|
-
import * as i5 from "@angular/cdk/text-field";
|
|
13
|
-
import * as i6 from "../../../shared/directives/autofocus.directive";
|
|
14
|
-
import * as i7 from "@ngx-translate/core";
|
|
15
|
-
export class TextForm extends AppForm {
|
|
16
|
-
injector;
|
|
17
|
-
cd;
|
|
18
|
-
formBuilder;
|
|
19
|
-
showError = true;
|
|
20
|
-
placeholder;
|
|
21
|
-
multiline = true;
|
|
22
|
-
autoHeight = false;
|
|
23
|
-
maxLength = 2000;
|
|
24
|
-
autofocus = false;
|
|
25
|
-
validator = null;
|
|
26
|
-
textAreaChanges = new EventEmitter();
|
|
27
|
-
textArea;
|
|
28
|
-
textInput;
|
|
29
|
-
autosizeDirective;
|
|
30
|
-
control;
|
|
31
|
-
constructor(injector, cd, formBuilder) {
|
|
32
|
-
super(injector);
|
|
33
|
-
this.injector = injector;
|
|
34
|
-
this.cd = cd;
|
|
35
|
-
this.formBuilder = formBuilder;
|
|
36
|
-
}
|
|
37
|
-
ngOnInit() {
|
|
38
|
-
// Compute validators
|
|
39
|
-
const validators = isNotNil(this.maxLength) && this.maxLength > 0 ? [Validators.maxLength(this.maxLength)] : [];
|
|
40
|
-
if (this.validator)
|
|
41
|
-
validators.push(this.validator);
|
|
42
|
-
// Create the form
|
|
43
|
-
const form = this.formBuilder.group({
|
|
44
|
-
text: [null, validators.length ? Validators.compose(validators) : null]
|
|
45
|
-
});
|
|
46
|
-
this.control = form.get('text');
|
|
47
|
-
this.setForm(form);
|
|
48
|
-
super.ngOnInit();
|
|
49
|
-
}
|
|
50
|
-
textAreaChanged(event) {
|
|
51
|
-
this.textAreaChanges.emit(this.control.value);
|
|
52
|
-
}
|
|
53
|
-
containerResize() {
|
|
54
|
-
this.autosizeDirective?.resizeToFitContent(true);
|
|
55
|
-
}
|
|
56
|
-
focusInput() {
|
|
57
|
-
if (this.textArea)
|
|
58
|
-
focusInput(this.textArea);
|
|
59
|
-
if (this.textInput)
|
|
60
|
-
focusInput(this.textInput);
|
|
61
|
-
}
|
|
62
|
-
markForCheck() {
|
|
63
|
-
this.cd.markForCheck();
|
|
64
|
-
}
|
|
65
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextForm, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
66
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TextForm, selector: "app-text-form", inputs: { showError: "showError", placeholder: "placeholder", multiline: "multiline", autoHeight: "autoHeight", maxLength: "maxLength", autofocus: "autofocus", validator: "validator" }, 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)=\"onSubmit.emit($event)\">\n <mat-form-field *ngIf=\"multiline; else monoline\">\n <mat-label *ngIf=\"placeholder\">{{placeholder}}</mat-label>\n <textarea\n #textArea\n matInput\n [formControl]=\"control\"\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 <mat-label *ngIf=\"placeholder\">{{placeholder}}</mat-label>\n <input\n #textInput\n matInput\n [formControl]=\"control\"\n [readonly]=\"control.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-error *ngIf=\"control.hasError('pattern')\">\n {{ 'ERROR.FIELD_INVALID' | translate }}\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{--textarea-height: 11.5em;max-height:var(--textarea-height)}textarea.fixed-height{height:var(--textarea-height)}\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: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.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: i5.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: i6.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
|
|
67
|
-
}
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextForm, decorators: [{
|
|
69
|
-
type: Component,
|
|
70
|
-
args: [{ selector: 'app-text-form', template: "<form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit.emit($event)\">\n <mat-form-field *ngIf=\"multiline; else monoline\">\n <mat-label *ngIf=\"placeholder\">{{placeholder}}</mat-label>\n <textarea\n #textArea\n matInput\n [formControl]=\"control\"\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 <mat-label *ngIf=\"placeholder\">{{placeholder}}</mat-label>\n <input\n #textInput\n matInput\n [formControl]=\"control\"\n [readonly]=\"control.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-error *ngIf=\"control.hasError('pattern')\">\n {{ 'ERROR.FIELD_INVALID' | translate }}\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{--textarea-height: 11.5em;max-height:var(--textarea-height)}textarea.fixed-height{height:var(--textarea-height)}\n"] }]
|
|
71
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i1.UntypedFormBuilder }]; }, propDecorators: { showError: [{
|
|
72
|
-
type: Input
|
|
73
|
-
}], placeholder: [{
|
|
74
|
-
type: Input
|
|
75
|
-
}], multiline: [{
|
|
76
|
-
type: Input
|
|
77
|
-
}], autoHeight: [{
|
|
78
|
-
type: Input
|
|
79
|
-
}], maxLength: [{
|
|
80
|
-
type: Input
|
|
81
|
-
}], autofocus: [{
|
|
82
|
-
type: Input
|
|
83
|
-
}], validator: [{
|
|
84
|
-
type: Input
|
|
85
|
-
}], textAreaChanges: [{
|
|
86
|
-
type: Output
|
|
87
|
-
}], textArea: [{
|
|
88
|
-
type: ViewChild,
|
|
89
|
-
args: ['textArea']
|
|
90
|
-
}], textInput: [{
|
|
91
|
-
type: ViewChild,
|
|
92
|
-
args: ['textInput']
|
|
93
|
-
}], autosizeDirective: [{
|
|
94
|
-
type: ViewChild,
|
|
95
|
-
args: [CdkTextareaAutosize]
|
|
96
|
-
}] } });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL3RleHQtcG9wb3Zlci90ZXh0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2Zvcm0vdGV4dC1wb3BvdmVyL3RleHQtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBYyxZQUFZLEVBQVksS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUFzRCxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7OztBQU9sRCxNQUFNLE9BQU8sUUFBUyxTQUFRLE9BQXVCO0lBaUI3QjtJQUE4QjtJQUFpQztJQWhCNUUsU0FBUyxHQUFHLElBQUksQ0FBQztJQUNqQixXQUFXLENBQVM7SUFDcEIsU0FBUyxHQUFHLElBQUksQ0FBQztJQUNqQixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ25CLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakIsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixTQUFTLEdBQWdCLElBQUksQ0FBQztJQUU3QixlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUVoQyxRQUFRLENBQWE7SUFDcEIsU0FBUyxDQUFhO0lBQ2QsaUJBQWlCLENBQXNCO0lBRXZFLE9BQU8sQ0FBcUI7SUFFNUIsWUFBc0IsUUFBa0IsRUFBWSxFQUFxQixFQUFZLFdBQStCO1FBQ2xILEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQURJLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBWSxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFZLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtJQUVwSCxDQUFDO0lBRUQsUUFBUTtRQUNOLHFCQUFxQjtRQUNyQixNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoSCxJQUFJLElBQUksQ0FBQyxTQUFTO1lBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFcEQsa0JBQWtCO1FBQ2xCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ2xDLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDeEUsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBdUIsQ0FBQztRQUN0RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5CLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQW9CO1FBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QyxJQUFJLElBQUksQ0FBQyxTQUFTO1lBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7d0dBbkRVLFFBQVE7NEZBQVIsUUFBUSxtZ0JBYVIsbUJBQW1CLHVFQ3pCaEMseXZEQTRDQTs7NEZEaENhLFFBQVE7a0JBTHBCLFNBQVM7K0JBQ0UsZUFBZTtnS0FLaEIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNO2dCQUVnQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ0csU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNVLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0Nka1RleHRhcmVhQXV0b3NpemV9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXh0LWZpZWxkJztcbmltcG9ydCB7QXBwRm9ybX0gZnJvbSAnLi4vZm9ybS5jbGFzcyc7XG5pbXBvcnQge2lzTm90TmlsfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7Zm9jdXNJbnB1dH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2lucHV0cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC10ZXh0LWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRleHRGb3JtIGV4dGVuZHMgQXBwRm9ybTx7dGV4dDogc3RyaW5nfT4gaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBzaG93RXJyb3IgPSB0cnVlO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKSBtdWx0aWxpbmUgPSB0cnVlO1xuICBASW5wdXQoKSBhdXRvSGVpZ2h0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1heExlbmd0aCA9IDIwMDA7XG4gIEBJbnB1dCgpIGF1dG9mb2N1cyA9IGZhbHNlO1xuICBASW5wdXQoKSB2YWxpZGF0b3I6IFZhbGlkYXRvckZuID0gbnVsbDtcblxuICBAT3V0cHV0KCkgdGV4dEFyZWFDaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQFZpZXdDaGlsZCgndGV4dEFyZWEnKSB0ZXh0QXJlYTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgndGV4dElucHV0JykgdGV4dElucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKENka1RleHRhcmVhQXV0b3NpemUpIGF1dG9zaXplRGlyZWN0aXZlOiBDZGtUZXh0YXJlYUF1dG9zaXplO1xuXG4gIGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLCBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcikge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIENvbXB1dGUgdmFsaWRhdG9yc1xuICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBpc05vdE5pbCh0aGlzLm1heExlbmd0aCkgJiYgdGhpcy5tYXhMZW5ndGggPiAwID8gW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMubWF4TGVuZ3RoKV0gOiBbXTtcbiAgICBpZiAodGhpcy52YWxpZGF0b3IpIHZhbGlkYXRvcnMucHVzaCh0aGlzLnZhbGlkYXRvcik7XG5cbiAgICAvLyBDcmVhdGUgdGhlIGZvcm1cbiAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICB0ZXh0OiBbbnVsbCwgdmFsaWRhdG9ycy5sZW5ndGggPyBWYWxpZGF0b3JzLmNvbXBvc2UodmFsaWRhdG9ycykgOiBudWxsXVxuICAgIH0pO1xuICAgIHRoaXMuY29udHJvbCA9IGZvcm0uZ2V0KCd0ZXh0JykgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICAgIHRoaXMuc2V0Rm9ybShmb3JtKTtcblxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gIH1cblxuICB0ZXh0QXJlYUNoYW5nZWQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICB0aGlzLnRleHRBcmVhQ2hhbmdlcy5lbWl0KHRoaXMuY29udHJvbC52YWx1ZSk7XG4gIH1cblxuICBjb250YWluZXJSZXNpemUoKSB7XG4gICAgdGhpcy5hdXRvc2l6ZURpcmVjdGl2ZT8ucmVzaXplVG9GaXRDb250ZW50KHRydWUpO1xuICB9XG5cbiAgZm9jdXNJbnB1dCgpIHtcbiAgICBpZiAodGhpcy50ZXh0QXJlYSkgZm9jdXNJbnB1dCh0aGlzLnRleHRBcmVhKTtcbiAgICBpZiAodGhpcy50ZXh0SW5wdXQpIGZvY3VzSW5wdXQodGhpcy50ZXh0SW5wdXQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8Zm9ybSBjbGFzcz1cImZvcm0tY29udGFpbmVyXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0LmVtaXQoJGV2ZW50KVwiPlxuICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJtdWx0aWxpbmU7IGVsc2UgbW9ub2xpbmVcIj5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwicGxhY2Vob2xkZXJcIj57e3BsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cbiAgICA8dGV4dGFyZWFcbiAgICAgICN0ZXh0QXJlYVxuICAgICAgbWF0SW5wdXRcbiAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgIFtyZWFkb25seV09XCJjb250cm9sLmRpc2FibGVkXCJcbiAgICAgIFtjbGFzcy5maXhlZC1oZWlnaHRdPVwiIWF1dG9IZWlnaHRcIlxuICAgICAgW2Nka1RleHRhcmVhQXV0b3NpemVdPVwiYXV0b0hlaWdodFwiXG4gICAgICAoa2V5dXApPVwidGV4dEFyZWFDaGFuZ2VkKCRldmVudClcIlxuICAgICAgKGtleWRvd24uY29udHJvbC5lbnRlcik9XCJvblN1Ym1pdC5lbWl0KCRldmVudClcIlxuICAgICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgID48L3RleHRhcmVhPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJjb250cm9sLmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPlxuICAgICAge3sgJ0VSUk9SLkZJRUxEX01BWF9MRU5HVEgnIHwgdHJhbnNsYXRlOiBjb250cm9sLmVycm9yc1snbWF4bGVuZ3RoJ10gfX1cbiAgICA8L21hdC1lcnJvcj5cbiAgICA8bWF0LWhpbnQgKm5nSWY9XCJtYXhMZW5ndGhcIiBhbGlnbj1cImVuZFwiPlxuICAgICAge3sgJ0lORk8uVEVYVF9QUk9HUkVTUycgfCB0cmFuc2xhdGU6IHsgY3VycmVudDogdGV4dEFyZWEudmFsdWU/Lmxlbmd0aCB8fCAwLCBtYXg6IG1heExlbmd0aCB9IH19XG4gICAgPC9tYXQtaGludD5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPG5nLXRlbXBsYXRlICNtb25vbGluZT5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsICpuZ0lmPVwicGxhY2Vob2xkZXJcIj57e3BsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjdGV4dElucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cImNvbnRyb2wuZGlzYWJsZWRcIlxuICAgICAgICBbYXBwQXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgIChrZXlkb3duLmNvbnRyb2wuZW50ZXIpPVwib25TdWJtaXQuZW1pdCgkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwiY29udHJvbC5oYXNFcnJvcignbWF4bGVuZ3RoJylcIj5cbiAgICAgICAge3sgJ0VSUk9SLkZJRUxEX01BWF9MRU5HVEgnIHwgdHJhbnNsYXRlOiBjb250cm9sLmVycm9yc1snbWF4bGVuZ3RoJ10gfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImNvbnRyb2wuaGFzRXJyb3IoJ3BhdHRlcm4nKVwiPlxuICAgICAgICB7eyAnRVJST1IuRklFTERfSU5WQUxJRCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPG1hdC1oaW50ICpuZ0lmPVwibWF4TGVuZ3RoXCIgYWxpZ249XCJlbmRcIj5cbiAgICAgICAge3sgJ0lORk8uVEVYVF9QUk9HUkVTUycgfCB0cmFuc2xhdGU6IHsgY3VycmVudDogdGV4dElucHV0LnZhbHVlPy5sZW5ndGggfHwgMCwgbWF4OiBtYXhMZW5ndGggfSB9fVxuICAgICAgPC9tYXQtaGludD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L25nLXRlbXBsYXRlPlxuPC9mb3JtPlxuIl19
|