@sumaris-net/ngx-components 1.23.8 → 2.0.0-rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/doc/build.md +2 -2
- package/esm2020/public_api.mjs +274 -0
- package/esm2020/public_test_api.mjs +46 -0
- package/esm2020/src/app/admin/admin-routing.module.mjs +41 -0
- package/esm2020/src/app/admin/admin.module.mjs +49 -0
- package/esm2020/src/app/admin/services/filter/person.filter.mjs +59 -0
- package/esm2020/src/app/admin/services/person.service.mjs +161 -0
- package/esm2020/src/app/admin/services/validator/person.validator.mjs +34 -0
- package/esm2020/src/app/admin/users/list/users.mjs +227 -0
- package/esm2020/src/app/core/about/modal-about.mjs +71 -0
- package/esm2020/src/app/core/account/account.mjs +230 -0
- package/esm2020/src/app/core/auth/form/form-auth.mjs +131 -0
- package/esm2020/src/app/core/auth/modal/modal-auth.mjs +72 -0
- package/esm2020/src/app/core/core.module.mjs +223 -0
- package/esm2020/src/app/core/core.testing.module.mjs +72 -0
- package/esm2020/src/app/core/form/editor.class.mjs +608 -0
- package/esm2020/src/app/core/form/entity-editor-modal.class.mjs +406 -0
- package/esm2020/src/app/core/form/entity-editor.class.mjs +669 -0
- package/esm2020/src/app/core/form/entity-metadata.component.mjs +25 -0
- package/esm2020/src/app/core/form/form-buttons-bar.component.mjs +71 -0
- package/esm2020/src/app/core/form/form.class.mjs +334 -0
- package/esm2020/src/app/core/form/form.utils.mjs +264 -0
- package/esm2020/src/app/core/form/list.form.mjs +221 -0
- package/esm2020/src/app/core/form/properties.form.mjs +126 -0
- package/esm2020/src/app/core/graphql/graphql.module.mjs +22 -0
- package/esm2020/src/app/core/graphql/graphql.service.mjs +730 -0
- package/esm2020/src/app/core/graphql/graphql.utils.mjs +117 -0
- package/esm2020/src/app/core/home/home.mjs +257 -0
- package/esm2020/src/app/core/icon/icon.component.mjs +41 -0
- package/esm2020/src/app/core/icon/icon.module.mjs +29 -0
- package/esm2020/src/app/core/install/install-upgrade-card.component.mjs +337 -0
- package/esm2020/src/app/core/install/install-upgrade-card.module.mjs +33 -0
- package/esm2020/src/app/core/menu/menu.component.mjs +317 -0
- package/{esm2015/src/app/core/menu/menu.model.js → esm2020/src/app/core/menu/menu.model.mjs} +0 -0
- package/esm2020/src/app/core/menu/menu.module.mjs +45 -0
- package/{esm2015/src/app/core/menu/menu.service.js → esm2020/src/app/core/menu/menu.service.mjs} +9 -7
- package/esm2020/src/app/core/offline/update-offline-mode-card.component.mjs +27 -0
- package/esm2020/src/app/core/peer/select-peer.modal.mjs +130 -0
- package/esm2020/src/app/core/peer/select-peer.module.mjs +35 -0
- package/esm2020/src/app/core/register/confirm/confirm.mjs +81 -0
- package/esm2020/src/app/core/register/form/form-register.mjs +181 -0
- package/esm2020/src/app/core/register/modal/modal-register.mjs +52 -0
- package/esm2020/src/app/core/register/register.module.mjs +42 -0
- package/esm2020/src/app/core/services/account.service.mjs +1112 -0
- package/esm2020/src/app/core/services/auth-guard.service.mjs +71 -0
- package/esm2020/src/app/core/services/base-entity-service.class.mjs +433 -0
- package/esm2020/src/app/core/services/base-graphql-service.class.mjs +219 -0
- package/{esm2015/src/app/core/services/base58.js → esm2020/src/app/core/services/base58.mjs} +0 -0
- package/{esm2015/src/app/core/services/config/core.config.js → esm2020/src/app/core/services/config/core.config.mjs} +0 -0
- package/esm2020/src/app/core/services/config.service.mjs +354 -0
- package/{esm2015/src/app/core/services/crypto.service.js → esm2020/src/app/core/services/crypto.service.mjs} +7 -5
- package/{esm2015/src/app/core/services/errors.js → esm2020/src/app/core/services/errors.mjs} +0 -0
- package/esm2020/src/app/core/services/local-settings.service.mjs +442 -0
- package/esm2020/src/app/core/services/model/account.model.mjs +50 -0
- package/esm2020/src/app/core/services/model/config.model.mjs +89 -0
- package/esm2020/src/app/core/services/model/department.model.mjs +30 -0
- package/esm2020/src/app/core/services/model/entity.decorators.mjs +107 -0
- package/esm2020/src/app/core/services/model/entity.model.mjs +242 -0
- package/{esm2015/src/app/core/services/model/filter.model.js → esm2020/src/app/core/services/model/filter.model.mjs} +0 -0
- package/{esm2015/src/app/core/services/model/history.model.js → esm2020/src/app/core/services/model/history.model.mjs} +0 -0
- package/{esm2015/src/app/core/services/model/model.enum.js → esm2020/src/app/core/services/model/model.enum.mjs} +0 -0
- package/esm2020/src/app/core/services/model/peer.model.mjs +68 -0
- package/esm2020/src/app/core/services/model/person.model.mjs +83 -0
- package/esm2020/src/app/core/services/model/referential.model.mjs +145 -0
- package/esm2020/src/app/core/services/model/settings.model.mjs +75 -0
- package/esm2020/src/app/core/services/network.service.mjs +602 -0
- package/esm2020/src/app/core/services/network.utils.mjs +16 -0
- package/esm2020/src/app/core/services/pipes/account.pipes.mjs +38 -0
- package/esm2020/src/app/core/services/pipes/department-to-string.pipe.mjs +23 -0
- package/esm2020/src/app/core/services/pipes/person-to-string.pipe.mjs +23 -0
- package/esm2020/src/app/core/services/pipes/usage-mode.pipes.mjs +37 -0
- package/esm2020/src/app/core/services/platform.service.mjs +476 -0
- package/esm2020/src/app/core/services/storage/entities-storage.service.mjs +422 -0
- package/esm2020/src/app/core/services/storage/entity-store.class.mjs +449 -0
- package/esm2020/src/app/core/services/testing/referential-filter.model.mjs +23 -0
- package/esm2020/src/app/core/services/testing/referential.validator.mjs +45 -0
- package/esm2020/src/app/core/services/validator/account.validator.mjs +52 -0
- package/esm2020/src/app/core/services/validator/base.validator.class.mjs +47 -0
- package/esm2020/src/app/core/services/validator/local-settings.validator.mjs +66 -0
- package/esm2020/src/app/core/services/validator/user-settings.validator.mjs +29 -0
- package/esm2020/src/app/core/settings/settings.page.mjs +290 -0
- package/esm2020/src/app/core/table/actions-column.component.mjs +96 -0
- package/esm2020/src/app/core/table/entities-table-datasource.class.mjs +385 -0
- package/esm2020/src/app/core/table/memory-table.class.mjs +53 -0
- package/esm2020/src/app/core/table/table-select-columns.component.mjs +43 -0
- package/esm2020/src/app/core/table/table.class.mjs +1654 -0
- package/{esm2015/src/app/core/table/table.utils.js → esm2020/src/app/core/table/table.utils.mjs} +0 -0
- package/esm2020/src/app/core/table/testing/table.testing.mjs +264 -0
- package/esm2020/src/app/core/table/testing/table.testing.module.mjs +38 -0
- package/esm2020/src/app/core/text-popover/testing/text-popover.testing.mjs +37 -0
- package/esm2020/src/app/core/text-popover/testing/text-popover.testing.module.mjs +45 -0
- package/esm2020/src/app/core/text-popover/text-form.component.mjs +84 -0
- package/esm2020/src/app/core/text-popover/text-popover.component.mjs +92 -0
- package/esm2020/src/app/shared/alerts.mjs +238 -0
- package/esm2020/src/app/shared/audio/audio.mjs +201 -0
- package/esm2020/src/app/shared/audio/audio.testing.mjs +31 -0
- package/esm2020/src/app/shared/audio/audio.testing.module.mjs +45 -0
- package/esm2020/src/app/shared/capacitor/keyboard.mjs +40 -0
- package/esm2020/src/app/shared/capacitor/plugins.mjs +9 -0
- package/{esm2015/src/app/shared/constants.js → esm2020/src/app/shared/constants.mjs} +2 -1
- package/esm2020/src/app/shared/dates.mjs +134 -0
- package/esm2020/src/app/shared/directives/autofocus.directive.mjs +92 -0
- package/esm2020/src/app/shared/directives/autotitle.directive.mjs +30 -0
- package/esm2020/src/app/shared/directives/directives.module.mjs +43 -0
- package/esm2020/src/app/shared/directives/drag-and-drop.directive.mjs +53 -0
- package/esm2020/src/app/shared/directives/ng-var.directive.mjs +31 -0
- package/esm2020/src/app/shared/directives/resizable/resizable.component.mjs +59 -0
- package/esm2020/src/app/shared/directives/resizable/resizable.directive.mjs +40 -0
- package/esm2020/src/app/shared/directives/resizable/resizable.module.mjs +17 -0
- package/esm2020/src/app/shared/events.mjs +64 -0
- package/esm2020/src/app/shared/file/csv.utils.mjs +74 -0
- package/esm2020/src/app/shared/file/file.service.mjs +117 -0
- package/esm2020/src/app/shared/file/file.utils.mjs +113 -0
- package/esm2020/src/app/shared/file/images.utils.mjs +161 -0
- package/{esm2015/src/app/shared/file/uri.utils.js → esm2020/src/app/shared/file/uri.utils.mjs} +0 -0
- package/{esm2015/src/app/shared/focusable.js → esm2020/src/app/shared/focusable.mjs} +0 -0
- package/esm2020/src/app/shared/form/field.component.mjs +241 -0
- package/{esm2015/src/app/shared/form/field.model.js → esm2020/src/app/shared/form/field.model.mjs} +1 -1
- package/esm2020/src/app/shared/form/loading-spinner.mjs +36 -0
- package/esm2020/src/app/shared/forms.mjs +355 -0
- package/esm2020/src/app/shared/functions.mjs +417 -0
- package/{esm2015/src/app/shared/gesture/gesture-config.js → esm2020/src/app/shared/gesture/gesture-config.mjs} +7 -5
- package/esm2020/src/app/shared/gesture/hammer.utils.mjs +2 -0
- package/{esm2015/src/app/shared/graph/colors.utils.js → esm2020/src/app/shared/graph/colors.utils.mjs} +0 -0
- package/esm2020/src/app/shared/graph/graph-colors.mjs +254 -0
- package/esm2020/src/app/shared/guard/component-dirty.guard.mjs +57 -0
- package/esm2020/src/app/shared/help/help.modal.mjs +53 -0
- package/esm2020/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +23 -0
- package/esm2020/src/app/shared/hotkeys/hotkeys.service.mjs +84 -0
- package/esm2020/src/app/shared/hotkeys/shared-hotkeys.module.mjs +42 -0
- package/esm2020/src/app/shared/http/http.utils.mjs +52 -0
- package/esm2020/src/app/shared/image/gallery/image-gallery.component.mjs +279 -0
- package/esm2020/src/app/shared/image/gallery/image-gallery.module.mjs +46 -0
- package/esm2020/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +27 -0
- package/esm2020/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +89 -0
- package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.mjs +33 -0
- package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +56 -0
- package/esm2020/src/app/shared/image/image.model.mjs +2 -0
- package/esm2020/src/app/shared/image/image.module.mjs +29 -0
- package/esm2020/src/app/shared/image/image.service.mjs +99 -0
- package/{esm2015/src/app/shared/inputs.js → esm2020/src/app/shared/inputs.mjs} +4 -4
- package/{esm2015/src/app/shared/interceptors/progess.interceptor.js → esm2020/src/app/shared/interceptors/progess.interceptor.mjs} +0 -0
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +47 -0
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.mjs +836 -0
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +78 -0
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +19 -0
- package/esm2020/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +205 -0
- package/esm2020/src/app/shared/material/badge/badge-icon.directive.mjs +143 -0
- package/esm2020/src/app/shared/material/badge/badge-icon.module.mjs +32 -0
- package/esm2020/src/app/shared/material/badge/badge-icon.test.mjs +27 -0
- package/esm2020/src/app/shared/material/boolean/boolean.module.mjs +68 -0
- package/esm2020/src/app/shared/material/boolean/material.boolean.mjs +253 -0
- package/esm2020/src/app/shared/material/chips/chips.module.mjs +76 -0
- package/esm2020/src/app/shared/material/chips/material.chips.mjs +692 -0
- package/esm2020/src/app/shared/material/chips/testing/chips.test.mjs +136 -0
- package/esm2020/src/app/shared/material/datetime/datetime.module.mjs +91 -0
- package/esm2020/src/app/shared/material/datetime/material.date.mjs +392 -0
- package/esm2020/src/app/shared/material/datetime/material.dateshort.mjs +327 -0
- package/esm2020/src/app/shared/material/datetime/material.datetime.mjs +416 -0
- package/esm2020/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +110 -0
- package/esm2020/src/app/shared/material/datetime/testing/mat-date.test.mjs +111 -0
- package/esm2020/src/app/shared/material/duration/duration.module.mjs +67 -0
- package/{esm2015/src/app/shared/material/duration/duration.utils.js → esm2020/src/app/shared/material/duration/duration.utils.mjs} +0 -0
- package/esm2020/src/app/shared/material/duration/material.duration.mjs +257 -0
- package/esm2020/src/app/shared/material/latlong/latlong.utils.mjs +266 -0
- package/esm2020/src/app/shared/material/latlong/material.latlong.mjs +381 -0
- package/esm2020/src/app/shared/material/latlong/material.latlong.module.mjs +67 -0
- package/esm2020/src/app/shared/material/latlong/testing/latlong.test.mjs +74 -0
- package/{esm2015/src/app/shared/material/material.animations.js → esm2020/src/app/shared/material/material.animations.mjs} +0 -0
- package/esm2020/src/app/shared/material/material.module.mjs +224 -0
- package/{esm2015/src/app/shared/material/material.testing.module.js → esm2020/src/app/shared/material/material.testing.module.mjs} +68 -34
- package/esm2020/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +98 -0
- package/esm2020/src/app/shared/material/numpad/numpad.component.mjs +80 -0
- package/esm2020/src/app/shared/material/numpad/numpad.container.mjs +190 -0
- package/esm2020/src/app/shared/material/numpad/numpad.content.mjs +17 -0
- package/esm2020/src/app/shared/material/numpad/numpad.directive.mjs +162 -0
- package/esm2020/src/app/shared/material/numpad/numpad.dom-service.mjs +37 -0
- package/{esm2015/src/app/shared/material/numpad/numpad.model.js → esm2020/src/app/shared/material/numpad/numpad.model.mjs} +1 -1
- package/esm2020/src/app/shared/material/numpad/numpad.module.mjs +60 -0
- package/esm2020/src/app/shared/material/numpad/testing/numpad.test.mjs +46 -0
- package/esm2020/src/app/shared/material/paginator/material.paginator-i18n.mjs +42 -0
- package/esm2020/src/app/shared/material/stepper/material.stepper-i18n.mjs +22 -0
- package/esm2020/src/app/shared/material/swipe/material.swipe.mjs +334 -0
- package/esm2020/src/app/shared/material/swipe/swipe.module.mjs +51 -0
- package/esm2020/src/app/shared/material/swipe/testing/swipe.test.mjs +65 -0
- package/esm2020/src/app/shared/observables.mjs +96 -0
- package/esm2020/src/app/shared/pipes/arrays.pipe.mjs +114 -0
- package/esm2020/src/app/shared/pipes/colors.pipe.mjs +23 -0
- package/esm2020/src/app/shared/pipes/date-diff-duration.pipe.mjs +49 -0
- package/esm2020/src/app/shared/pipes/date-format.pipe.mjs +42 -0
- package/{esm2015/src/app/shared/pipes/date-from-now.pipe.js → esm2020/src/app/shared/pipes/date-from-now.pipe.mjs} +13 -12
- package/{esm2015/src/app/shared/pipes/duration.pipe.js → esm2020/src/app/shared/pipes/duration.pipe.mjs} +13 -12
- package/esm2020/src/app/shared/pipes/file-size.pipe.mjs +62 -0
- package/esm2020/src/app/shared/pipes/form.pipes.mjs +187 -0
- package/esm2020/src/app/shared/pipes/highlight.pipe.mjs +48 -0
- package/esm2020/src/app/shared/pipes/latlong-format.pipe.mjs +46 -0
- package/esm2020/src/app/shared/pipes/maps.pipe.mjs +63 -0
- package/esm2020/src/app/shared/pipes/math.pipes.mjs +59 -0
- package/esm2020/src/app/shared/pipes/ng-init.pipe.mjs +21 -0
- package/{esm2015/src/app/shared/pipes/number-format.pipe.js → esm2020/src/app/shared/pipes/number-format.pipe.mjs} +14 -9
- package/esm2020/src/app/shared/pipes/pipes.module.mjs +206 -0
- package/esm2020/src/app/shared/pipes/property.pipes.mjs +96 -0
- package/esm2020/src/app/shared/pipes/string.pipes.mjs +69 -0
- package/esm2020/src/app/shared/pipes/translate-context.pipe.mjs +43 -0
- package/esm2020/src/app/shared/platforms.mjs +49 -0
- package/esm2020/src/app/shared/services/entity-service.class.mjs +19 -0
- package/esm2020/src/app/shared/services/job.utils.mjs +92 -0
- package/esm2020/src/app/shared/services/memory-entity-service.class.mjs +253 -0
- package/esm2020/src/app/shared/services/progress-bar.service.mjs +32 -0
- package/esm2020/src/app/shared/services/startable-service.class.mjs +94 -0
- package/esm2020/src/app/shared/services/storage/storage.service.mjs +132 -0
- package/esm2020/src/app/shared/services/storage/storage.utils.mjs +13 -0
- package/esm2020/src/app/shared/services/translate-context.service.mjs +81 -0
- package/esm2020/src/app/shared/services/validator-service.class.mjs +2 -0
- package/esm2020/src/app/shared/services.mjs +62 -0
- package/esm2020/src/app/shared/shared-routing.module.mjs +63 -0
- package/esm2020/src/app/shared/shared.module.mjs +208 -0
- package/esm2020/src/app/shared/shared.testing.module.mjs +76 -0
- package/esm2020/src/app/shared/testing/tests.page.mjs +33 -0
- package/esm2020/src/app/shared/toast/toast.testing.mjs +52 -0
- package/esm2020/src/app/shared/toast/toast.testing.module.mjs +45 -0
- package/esm2020/src/app/shared/toast/toasts.mjs +121 -0
- package/esm2020/src/app/shared/toolbar/modal-toolbar.mjs +58 -0
- package/esm2020/src/app/shared/toolbar/toolbar.mjs +226 -0
- package/esm2020/src/app/shared/toolbar/toolbar.module.mjs +53 -0
- package/{esm2015/src/app/shared/types.js → esm2020/src/app/shared/types.mjs} +0 -0
- package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.mjs +57 -0
- package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +45 -0
- package/esm2020/src/app/shared/upload-file/upload-file-popover.component.mjs +97 -0
- package/esm2020/src/app/shared/upload-file/upload-file.component.mjs +204 -0
- package/esm2020/src/app/shared/upload-file/upload-file.model.mjs +20 -0
- package/esm2020/src/app/shared/validator/form-error-adapter.class.mjs +104 -0
- package/esm2020/src/app/shared/validator/validators.mjs +544 -0
- package/{esm2015/src/app/shared/version/versions.js → esm2020/src/app/shared/version/versions.mjs} +0 -0
- package/esm2020/src/app/social/job/job.model.mjs +26 -0
- package/esm2020/src/app/social/job/job.module.mjs +35 -0
- package/esm2020/src/app/social/job/job.service.mjs +59 -0
- package/esm2020/src/app/social/job/progression/job-progression.component.mjs +201 -0
- package/esm2020/src/app/social/job/progression/job-progression.list.mjs +22 -0
- package/esm2020/src/app/social/job/testing/job-progression.testing.mjs +51 -0
- package/esm2020/src/app/social/job/testing/job-progression.testing.service.mjs +33 -0
- package/esm2020/src/app/social/job/testing/job.testing.module.mjs +35 -0
- package/esm2020/src/app/social/message/message.form.mjs +81 -0
- package/esm2020/src/app/social/message/message.modal.mjs +93 -0
- package/esm2020/src/app/social/message/message.model.mjs +65 -0
- package/esm2020/src/app/social/message/message.module.mjs +35 -0
- package/esm2020/src/app/social/message/message.service.mjs +84 -0
- package/{esm2015/src/app/social/social.errors.js → esm2020/src/app/social/social.errors.mjs} +0 -0
- package/esm2020/src/app/social/social.module.mjs +47 -0
- package/esm2020/src/app/social/social.testing.module.mjs +51 -0
- package/esm2020/src/app/social/user-event/notification/user-event-notification.icon.mjs +97 -0
- package/esm2020/src/app/social/user-event/notification/user-event-notification.list.mjs +212 -0
- package/esm2020/src/app/social/user-event/testing/user-event.testing.mjs +228 -0
- package/esm2020/src/app/social/user-event/testing/user-event.testing.model.mjs +107 -0
- package/esm2020/src/app/social/user-event/testing/user-event.testing.module.mjs +35 -0
- package/esm2020/src/app/social/user-event/testing/user-event.testing.service.mjs +111 -0
- package/esm2020/src/app/social/user-event/user-event.model.mjs +2 -0
- package/esm2020/src/app/social/user-event/user-event.module.mjs +39 -0
- package/esm2020/src/app/social/user-event/user-event.service.mjs +486 -0
- package/{esm2015/src/app/vendor.js → esm2020/src/app/vendor.mjs} +1 -1
- package/esm2020/src/environments/environment.class.mjs +5 -0
- package/esm2020/src/environments/environment.mjs +86 -0
- package/esm2020/sumaris-net.ngx-components.mjs +5 -0
- package/fesm2015/sumaris-net.ngx-components.mjs +32493 -0
- package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -0
- package/fesm2020/sumaris-net.ngx-components.mjs +31739 -0
- package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/package.json +25 -34
- package/public_api.d.ts +23 -28
- package/public_test_api.d.ts +37 -0
- package/resources/README.md +8 -0
- package/src/app/admin/admin-routing.module.d.ts +7 -0
- package/src/app/admin/admin.module.d.ts +11 -0
- package/src/app/admin/services/person.service.d.ts +3 -0
- package/src/app/admin/services/validator/person.validator.d.ts +8 -5
- package/src/app/admin/users/list/users.d.ts +10 -7
- package/src/app/core/about/modal-about.d.ts +3 -0
- package/src/app/core/account/account.d.ts +11 -8
- package/src/app/core/auth/form/form-auth.d.ts +6 -3
- package/src/app/core/auth/modal/modal-auth.d.ts +3 -0
- package/src/app/core/core.module.d.ts +36 -0
- package/src/app/core/core.testing.module.d.ts +9 -0
- package/src/app/core/form/editor.class.d.ts +7 -2
- package/src/app/core/form/entity-editor-modal.class.d.ts +7 -4
- package/src/app/core/form/entity-editor.class.d.ts +4 -1
- package/src/app/core/form/entity-metadata.component.d.ts +3 -0
- package/src/app/core/form/form-buttons-bar.component.d.ts +3 -0
- package/src/app/core/form/form.class.d.ts +12 -9
- package/src/app/core/form/form.utils.d.ts +4 -4
- package/src/app/core/form/list.form.d.ts +10 -7
- package/src/app/core/form/properties.form.d.ts +10 -7
- package/src/app/core/graphql/graphql.module.d.ts +5 -0
- package/src/app/core/graphql/graphql.service.d.ts +9 -2
- package/src/app/core/graphql/graphql.utils.d.ts +8 -0
- package/src/app/core/home/home.d.ts +4 -1
- package/src/app/core/icon/icon.component.d.ts +5 -2
- package/src/app/core/icon/icon.module.d.ts +7 -0
- package/src/app/core/install/install-upgrade-card.component.d.ts +5 -2
- package/src/app/core/install/install-upgrade-card.module.d.ts +10 -0
- package/src/app/core/menu/menu.component.d.ts +7 -5
- package/src/app/core/menu/menu.module.d.ts +8 -0
- package/src/app/core/menu/menu.service.d.ts +3 -0
- package/src/app/core/offline/update-offline-mode-card.component.d.ts +3 -0
- package/src/app/core/peer/select-peer.modal.d.ts +7 -4
- package/src/app/core/peer/select-peer.module.d.ts +9 -0
- package/src/app/core/register/confirm/confirm.d.ts +3 -0
- package/src/app/core/register/form/form-register.d.ts +10 -7
- package/src/app/core/register/modal/modal-register.d.ts +3 -0
- package/src/app/core/register/register.module.d.ts +12 -0
- package/src/app/core/services/account.service.d.ts +5 -2
- package/src/app/core/services/auth-guard.service.d.ts +3 -0
- package/src/app/core/services/base-entity-service.class.d.ts +3 -0
- package/src/app/core/services/base-graphql-service.class.d.ts +3 -0
- package/src/app/core/services/config.service.d.ts +4 -1
- package/src/app/core/services/crypto.service.d.ts +3 -0
- package/src/app/core/services/local-settings.service.d.ts +5 -1
- package/src/app/core/services/model/referential.model.d.ts +1 -1
- package/src/app/core/services/network.service.d.ts +6 -5
- package/src/app/core/services/pipes/account.pipes.d.ts +7 -0
- package/src/app/core/services/pipes/department-to-string.pipe.d.ts +4 -0
- package/src/app/core/services/pipes/person-to-string.pipe.d.ts +4 -0
- package/src/app/core/services/pipes/usage-mode.pipes.d.ts +7 -0
- package/src/app/core/services/platform.service.d.ts +22 -21
- package/src/app/core/services/storage/entities-storage.service.d.ts +5 -2
- package/src/app/core/services/storage/entity-store.class.d.ts +3 -3
- package/src/app/core/services/testing/referential.validator.d.ts +8 -5
- package/src/app/core/services/validator/account.validator.d.ts +6 -3
- package/src/app/core/services/validator/base.validator.class.d.ts +8 -5
- package/src/app/core/services/validator/local-settings.validator.d.ts +8 -5
- package/src/app/core/services/validator/user-settings.validator.d.ts +6 -3
- package/src/app/core/settings/settings.page.d.ts +8 -5
- package/src/app/core/table/actions-column.component.d.ts +3 -0
- package/src/app/core/table/entities-table-datasource.class.d.ts +11 -9
- package/src/app/core/table/memory-table.class.d.ts +3 -0
- package/src/app/core/table/table-select-columns.component.d.ts +4 -5
- package/src/app/core/table/table.class.d.ts +53 -34
- package/src/app/core/table/testing/table.testing.d.ts +13 -15
- package/src/app/core/table/testing/table.testing.module.d.ts +9 -0
- package/src/app/core/text-popover/testing/text-popover.testing.d.ts +4 -1
- package/src/app/core/text-popover/testing/text-popover.testing.module.d.ts +9 -0
- package/src/app/core/text-popover/text-form.component.d.ts +7 -4
- package/src/app/core/text-popover/text-popover.component.d.ts +3 -0
- package/src/app/shared/alerts.d.ts +4 -4
- package/src/app/shared/audio/audio.d.ts +20 -11
- package/src/app/shared/audio/audio.testing.d.ts +13 -0
- package/src/app/shared/audio/audio.testing.module.d.ts +11 -0
- package/src/app/shared/capacitor/keyboard.d.ts +16 -0
- package/src/app/shared/capacitor/plugins.d.ts +7 -0
- package/src/app/shared/constants.d.ts +1 -0
- package/src/app/shared/directives/autofocus.directive.d.ts +9 -7
- package/src/app/shared/directives/autotitle.directive.d.ts +3 -0
- package/src/app/shared/directives/directives.module.d.ts +10 -0
- package/src/app/shared/directives/drag-and-drop.directive.d.ts +3 -0
- package/src/app/shared/directives/ng-var.directive.d.ts +3 -0
- package/src/app/shared/directives/resizable/resizable.component.d.ts +3 -0
- package/src/app/shared/directives/resizable/resizable.directive.d.ts +3 -0
- package/src/app/shared/directives/resizable/resizable.module.d.ts +6 -0
- package/src/app/shared/file/file.service.d.ts +3 -0
- package/src/app/shared/file/file.utils.d.ts +1 -1
- package/src/app/shared/form/field.component.d.ts +9 -3
- package/src/app/shared/form/field.model.d.ts +2 -2
- package/src/app/shared/form/loading-spinner.d.ts +3 -0
- package/src/app/shared/forms.d.ts +12 -12
- package/src/app/shared/gesture/gesture-config.d.ts +3 -0
- package/src/app/shared/gesture/hammer.utils.d.ts +11 -11
- package/src/app/shared/guard/component-dirty.guard.d.ts +3 -0
- package/src/app/shared/help/help.modal.d.ts +4 -1
- package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +3 -0
- package/src/app/shared/hotkeys/hotkeys.service.d.ts +4 -1
- package/src/app/shared/hotkeys/shared-hotkeys.module.d.ts +9 -0
- package/src/app/shared/image/gallery/image-gallery.component.d.ts +77 -0
- package/src/app/shared/image/gallery/image-gallery.module.d.ts +12 -0
- package/src/app/shared/image/gallery/testing/gallegry.model.testing.d.ts +12 -0
- package/src/app/shared/image/gallery/testing/gallery.service.testing.d.ts +33 -0
- package/src/app/shared/image/gallery/testing/gallery.testing.d.ts +15 -0
- package/src/app/shared/image/gallery/testing/gallery.testing.module.d.ts +12 -0
- package/src/app/shared/image/image.model.d.ts +5 -0
- package/src/app/shared/image/image.module.d.ts +8 -0
- package/src/app/shared/image/image.service.d.ts +32 -0
- package/src/app/shared/inputs.d.ts +3 -3
- package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +36 -0
- package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +11 -40
- package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +19 -0
- package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +4 -0
- package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +12 -9
- package/src/app/shared/material/badge/badge-icon.directive.d.ts +6 -4
- package/src/app/shared/material/badge/badge-icon.module.d.ts +8 -0
- package/src/app/shared/material/badge/badge-icon.test.d.ts +4 -1
- package/src/app/shared/material/boolean/boolean.module.d.ts +17 -0
- package/src/app/shared/material/boolean/material.boolean.d.ts +7 -4
- package/src/app/shared/material/chips/chips.module.d.ts +19 -0
- package/src/app/shared/material/chips/material.chips.d.ts +11 -8
- package/src/app/shared/material/chips/testing/chips.test.d.ts +8 -5
- package/src/app/shared/material/datetime/datetime.module.d.ts +22 -0
- package/src/app/shared/material/datetime/material.date.d.ts +11 -9
- package/src/app/shared/material/datetime/material.dateshort.d.ts +10 -9
- package/src/app/shared/material/datetime/material.datetime.d.ts +13 -12
- package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +11 -9
- package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +11 -9
- package/src/app/shared/material/duration/duration.module.d.ts +16 -0
- package/src/app/shared/material/duration/material.duration.d.ts +8 -5
- package/src/app/shared/material/latlong/material.latlong.d.ts +8 -5
- package/src/app/shared/material/latlong/material.latlong.module.d.ts +17 -0
- package/src/app/shared/material/latlong/testing/latlong.test.d.ts +10 -7
- package/src/app/shared/material/material.module.d.ts +43 -0
- package/src/app/shared/material/material.testing.module.d.ts +19 -0
- package/src/app/shared/material/numpad/numpad.append-to-input.directive.d.ts +3 -0
- package/src/app/shared/material/numpad/numpad.component.d.ts +4 -1
- package/src/app/shared/material/numpad/numpad.container.d.ts +5 -2
- package/src/app/shared/material/numpad/numpad.content.d.ts +3 -0
- package/src/app/shared/material/numpad/numpad.directive.d.ts +4 -1
- package/src/app/shared/material/numpad/numpad.dom-service.d.ts +3 -0
- package/src/app/shared/material/numpad/numpad.model.d.ts +1 -1
- package/src/app/shared/material/numpad/numpad.module.d.ts +14 -0
- package/src/app/shared/material/numpad/testing/numpad.test.d.ts +7 -4
- package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +3 -0
- package/src/app/shared/material/stepper/material.stepper-i18n.d.ts +3 -0
- package/src/app/shared/material/swipe/material.swipe.d.ts +6 -3
- package/src/app/shared/material/swipe/swipe.module.d.ts +13 -0
- package/src/app/shared/material/swipe/testing/swipe.test.d.ts +7 -4
- package/src/app/shared/pipes/arrays.pipe.d.ts +15 -0
- package/src/app/shared/pipes/colors.pipe.d.ts +9 -0
- package/src/app/shared/pipes/date-diff-duration.pipe.d.ts +4 -0
- package/src/app/shared/pipes/date-format.pipe.d.ts +4 -0
- package/src/app/shared/pipes/date-from-now.pipe.d.ts +4 -0
- package/src/app/shared/pipes/duration.pipe.d.ts +4 -0
- package/src/app/shared/pipes/file-size.pipe.d.ts +3 -0
- package/src/app/shared/pipes/form.pipes.d.ts +18 -5
- package/src/app/shared/pipes/highlight.pipe.d.ts +4 -0
- package/src/app/shared/pipes/latlong-format.pipe.d.ts +7 -0
- package/src/app/shared/pipes/maps.pipe.d.ts +10 -0
- package/src/app/shared/pipes/math.pipes.d.ts +10 -0
- package/src/app/shared/pipes/ng-init.pipe.d.ts +3 -0
- package/src/app/shared/pipes/number-format.pipe.d.ts +4 -0
- package/src/app/shared/pipes/pipes.module.d.ts +24 -0
- package/src/app/shared/pipes/property.pipes.d.ts +6 -0
- package/src/app/shared/pipes/string.pipes.d.ts +11 -0
- package/src/app/shared/pipes/translate-context.pipe.d.ts +7 -0
- package/src/app/shared/platforms.d.ts +1 -0
- package/src/app/shared/services/entity-service.class.d.ts +3 -0
- package/src/app/shared/services/memory-entity-service.class.d.ts +3 -0
- package/src/app/shared/services/progress-bar.service.d.ts +4 -1
- package/src/app/shared/services/storage/storage.service.d.ts +23 -0
- package/src/app/shared/services/storage/storage.utils.d.ts +19 -0
- package/src/app/shared/services/translate-context.service.d.ts +3 -0
- package/src/app/shared/services/validator-service.class.d.ts +2 -2
- package/src/app/shared/shared-routing.module.d.ts +7 -0
- package/src/app/shared/shared.module.d.ts +23 -0
- package/src/app/shared/shared.testing.module.d.ts +12 -0
- package/src/app/shared/testing/tests.page.d.ts +3 -0
- package/src/app/shared/toast/toast.testing.d.ts +3 -0
- package/src/app/shared/toast/toast.testing.module.d.ts +9 -0
- package/src/app/shared/toolbar/modal-toolbar.d.ts +5 -2
- package/src/app/shared/toolbar/toolbar.d.ts +9 -5
- package/src/app/shared/toolbar/toolbar.module.d.ts +15 -0
- package/src/app/shared/upload-file/testing/upload-file.testing.d.ts +4 -1
- package/src/app/shared/upload-file/testing/upload-file.testing.module.d.ts +9 -0
- package/src/app/shared/upload-file/upload-file-popover.component.d.ts +3 -0
- package/src/app/shared/upload-file/upload-file.component.d.ts +3 -0
- package/src/app/shared/validator/form-error-adapter.class.d.ts +3 -0
- package/src/app/shared/validator/validators.d.ts +9 -9
- package/src/app/social/job/job.module.d.ts +9 -0
- package/src/app/social/job/job.service.d.ts +3 -0
- package/src/app/social/job/progression/job-progression.component.d.ts +4 -1
- package/src/app/social/job/progression/job-progression.list.d.ts +3 -0
- package/src/app/social/job/testing/job-progression.testing.d.ts +3 -0
- package/src/app/social/job/testing/job-progression.testing.service.d.ts +3 -0
- package/src/app/social/job/testing/job.testing.module.d.ts +9 -0
- package/src/app/social/message/message.form.d.ts +5 -2
- package/src/app/social/message/message.modal.d.ts +5 -2
- package/src/app/social/message/message.module.d.ts +9 -0
- package/src/app/social/message/message.service.d.ts +3 -0
- package/src/app/social/social.module.d.ts +10 -0
- package/src/app/social/social.testing.module.d.ts +9 -0
- package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +4 -1
- package/src/app/social/user-event/notification/user-event-notification.list.d.ts +7 -4
- package/src/app/social/user-event/testing/user-event.testing.d.ts +3 -0
- package/src/app/social/user-event/testing/user-event.testing.model.d.ts +1 -0
- package/src/app/social/user-event/testing/user-event.testing.module.d.ts +9 -0
- package/src/app/social/user-event/testing/user-event.testing.service.d.ts +5 -1
- package/src/app/social/user-event/user-event.model.d.ts +3 -2
- package/src/app/social/user-event/user-event.module.d.ts +10 -0
- package/src/app/social/user-event/user-event.service.d.ts +16 -11
- package/src/assets/audio/beep-notification.mp3 +0 -0
- package/src/assets/i18n/fr.json +9 -2
- package/src/environments/environment.class.d.ts +2 -0
- package/src/environments/environment.d.ts +1 -1
- package/src/theme/_icons.scss +1 -1
- package/src/theme/_material.globals.scss +29 -31
- package/src/theme/_material.scss +3 -2
- package/src/theme/_mixins.scss +4 -4
- package/src/theme/_ngx-components.scss +6 -0
- package/src/theme/_print.scss +24 -0
- package/bundles/sumaris-net.ngx-components.umd.js +0 -35297
- package/bundles/sumaris-net.ngx-components.umd.js.map +0 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +0 -25
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +0 -1
- package/esm2015/public_api.js +0 -244
- package/esm2015/src/app/admin/admin-routing.module.js +0 -34
- package/esm2015/src/app/admin/admin.module.js +0 -34
- package/esm2015/src/app/admin/services/filter/person.filter.js +0 -59
- package/esm2015/src/app/admin/services/person.service.js +0 -175
- package/esm2015/src/app/admin/services/validator/person.validator.js +0 -37
- package/esm2015/src/app/admin/users/list/users.js +0 -216
- package/esm2015/src/app/core/about/modal-about.js +0 -63
- package/esm2015/src/app/core/account/account.js +0 -240
- package/esm2015/src/app/core/auth/form/form-auth.js +0 -134
- package/esm2015/src/app/core/auth/modal/modal-auth.js +0 -78
- package/esm2015/src/app/core/core.module.js +0 -127
- package/esm2015/src/app/core/core.testing.module.js +0 -51
- package/esm2015/src/app/core/form/editor.class.js +0 -632
- package/esm2015/src/app/core/form/entity-editor-modal.class.js +0 -421
- package/esm2015/src/app/core/form/entity-editor.class.js +0 -696
- package/esm2015/src/app/core/form/entity-metadata.component.js +0 -22
- package/esm2015/src/app/core/form/form-buttons-bar.component.js +0 -63
- package/esm2015/src/app/core/form/form.class.js +0 -338
- package/esm2015/src/app/core/form/form.utils.js +0 -264
- package/esm2015/src/app/core/form/list.form.js +0 -219
- package/esm2015/src/app/core/form/properties.form.js +0 -119
- package/esm2015/src/app/core/graphql/graphql.module.js +0 -18
- package/esm2015/src/app/core/graphql/graphql.service.js +0 -734
- package/esm2015/src/app/core/graphql/graphql.utils.js +0 -107
- package/esm2015/src/app/core/home/home.js +0 -265
- package/esm2015/src/app/core/icon/icon.component.js +0 -32
- package/esm2015/src/app/core/icon/icon.module.js +0 -26
- package/esm2015/src/app/core/install/install-upgrade-card.component.js +0 -358
- package/esm2015/src/app/core/menu/menu.component.js +0 -329
- package/esm2015/src/app/core/menu/menu.module.js +0 -28
- package/esm2015/src/app/core/offline/update-offline-mode-card.component.js +0 -26
- package/esm2015/src/app/core/peer/select-peer.modal.js +0 -134
- package/esm2015/src/app/core/register/confirm/confirm.js +0 -86
- package/esm2015/src/app/core/register/form/form-register.js +0 -172
- package/esm2015/src/app/core/register/modal/modal-register.js +0 -55
- package/esm2015/src/app/core/services/account.service.js +0 -1165
- package/esm2015/src/app/core/services/auth-guard.service.js +0 -77
- package/esm2015/src/app/core/services/base-entity-service.class.js +0 -455
- package/esm2015/src/app/core/services/base-graphql-service.class.js +0 -221
- package/esm2015/src/app/core/services/config.service.js +0 -385
- package/esm2015/src/app/core/services/local-settings.service.js +0 -460
- package/esm2015/src/app/core/services/model/account.model.js +0 -50
- package/esm2015/src/app/core/services/model/config.model.js +0 -89
- package/esm2015/src/app/core/services/model/department.model.js +0 -30
- package/esm2015/src/app/core/services/model/entity.decorators.js +0 -104
- package/esm2015/src/app/core/services/model/entity.model.js +0 -245
- package/esm2015/src/app/core/services/model/peer.model.js +0 -68
- package/esm2015/src/app/core/services/model/person.model.js +0 -83
- package/esm2015/src/app/core/services/model/referential.model.js +0 -147
- package/esm2015/src/app/core/services/model/settings.model.js +0 -75
- package/esm2015/src/app/core/services/network.service.js +0 -639
- package/esm2015/src/app/core/services/network.utils.js +0 -19
- package/esm2015/src/app/core/services/pipes/account.pipes.js +0 -28
- package/esm2015/src/app/core/services/pipes/department-to-string.pipe.js +0 -18
- package/esm2015/src/app/core/services/pipes/person-to-string.pipe.js +0 -18
- package/esm2015/src/app/core/services/pipes/usage-mode.pipes.js +0 -27
- package/esm2015/src/app/core/services/platform.service.js +0 -549
- package/esm2015/src/app/core/services/storage/entities-storage.service.js +0 -452
- package/esm2015/src/app/core/services/storage/entity-store.class.js +0 -461
- package/esm2015/src/app/core/services/testing/referential-filter.model.js +0 -23
- package/esm2015/src/app/core/services/testing/referential.validator.js +0 -44
- package/esm2015/src/app/core/services/validator/account.validator.js +0 -55
- package/esm2015/src/app/core/services/validator/base.validator.class.js +0 -48
- package/esm2015/src/app/core/services/validator/local-settings.validator.js +0 -72
- package/esm2015/src/app/core/services/validator/user-settings.validator.js +0 -30
- package/esm2015/src/app/core/settings/settings.page.js +0 -305
- package/esm2015/src/app/core/table/actions-column.component.js +0 -74
- package/esm2015/src/app/core/table/entities-table-datasource.class.js +0 -389
- package/esm2015/src/app/core/table/memory-table.class.js +0 -59
- package/esm2015/src/app/core/table/table-select-columns.component.js +0 -44
- package/esm2015/src/app/core/table/table.class.js +0 -1651
- package/esm2015/src/app/core/table/testing/table.testing.js +0 -241
- package/esm2015/src/app/core/table/testing/table.testing.module.js +0 -26
- package/esm2015/src/app/core/text-popover/testing/text-popover.testing.js +0 -37
- package/esm2015/src/app/core/text-popover/testing/text-popover.testing.module.js +0 -33
- package/esm2015/src/app/core/text-popover/text-form.component.js +0 -72
- package/esm2015/src/app/core/text-popover/text-popover.component.js +0 -90
- package/esm2015/src/app/shared/alerts.js +0 -251
- package/esm2015/src/app/shared/audio/audio.js +0 -178
- package/esm2015/src/app/shared/dates.js +0 -134
- package/esm2015/src/app/shared/directives/autofocus.directive.js +0 -90
- package/esm2015/src/app/shared/directives/autotitle.directive.js +0 -27
- package/esm2015/src/app/shared/directives/directives.module.js +0 -30
- package/esm2015/src/app/shared/directives/drag-and-drop.directive.js +0 -43
- package/esm2015/src/app/shared/directives/ng-var.directive.js +0 -32
- package/esm2015/src/app/shared/directives/resizable/resizable.component.js +0 -54
- package/esm2015/src/app/shared/directives/resizable/resizable.directive.js +0 -34
- package/esm2015/src/app/shared/directives/resizable/resizable.module.js +0 -12
- package/esm2015/src/app/shared/events.js +0 -61
- package/esm2015/src/app/shared/file/csv.utils.js +0 -70
- package/esm2015/src/app/shared/file/file.service.js +0 -121
- package/esm2015/src/app/shared/file/file.utils.js +0 -116
- package/esm2015/src/app/shared/file/images.utils.js +0 -166
- package/esm2015/src/app/shared/form/field.component.js +0 -206
- package/esm2015/src/app/shared/form/loading-spinner.js +0 -24
- package/esm2015/src/app/shared/forms.js +0 -339
- package/esm2015/src/app/shared/functions.js +0 -418
- package/esm2015/src/app/shared/gesture/hammer.utils.js +0 -2
- package/esm2015/src/app/shared/graph/graph-colors.js +0 -256
- package/esm2015/src/app/shared/guard/component-dirty.guard.js +0 -61
- package/esm2015/src/app/shared/help/help.modal.js +0 -56
- package/esm2015/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.js +0 -20
- package/esm2015/src/app/shared/hotkeys/hotkeys.service.js +0 -91
- package/esm2015/src/app/shared/hotkeys/shared-hotkeys.module.js +0 -29
- package/esm2015/src/app/shared/http/http.utils.js +0 -57
- package/esm2015/src/app/shared/material/autocomplete/material.autocomplete.js +0 -825
- package/esm2015/src/app/shared/material/autocomplete/material.autocomplete.module.js +0 -46
- package/esm2015/src/app/shared/material/autocomplete/testing/autocomplete.test.js +0 -200
- package/esm2015/src/app/shared/material/badge/badge-icon.directive.js +0 -135
- package/esm2015/src/app/shared/material/badge/badge-icon.module.js +0 -23
- package/esm2015/src/app/shared/material/badge/badge-icon.test.js +0 -17
- package/esm2015/src/app/shared/material/boolean/boolean.module.js +0 -41
- package/esm2015/src/app/shared/material/boolean/material.boolean.js +0 -223
- package/esm2015/src/app/shared/material/chips/chips.module.js +0 -45
- package/esm2015/src/app/shared/material/chips/material.chips.js +0 -636
- package/esm2015/src/app/shared/material/chips/testing/chips.test.js +0 -138
- package/esm2015/src/app/shared/material/datetime/datetime.module.js +0 -54
- package/esm2015/src/app/shared/material/datetime/material.date.js +0 -375
- package/esm2015/src/app/shared/material/datetime/material.dateshort.js +0 -316
- package/esm2015/src/app/shared/material/datetime/material.datetime.js +0 -398
- package/esm2015/src/app/shared/material/datetime/testing/mat-date-time.test.js +0 -110
- package/esm2015/src/app/shared/material/datetime/testing/mat-date.test.js +0 -108
- package/esm2015/src/app/shared/material/duration/duration.module.js +0 -40
- package/esm2015/src/app/shared/material/duration/material.duration.js +0 -246
- package/esm2015/src/app/shared/material/latlong/latlong.utils.js +0 -249
- package/esm2015/src/app/shared/material/latlong/material.latlong.js +0 -350
- package/esm2015/src/app/shared/material/latlong/material.latlong.module.js +0 -41
- package/esm2015/src/app/shared/material/latlong/testing/latlong.test.js +0 -70
- package/esm2015/src/app/shared/material/material.module.js +0 -93
- package/esm2015/src/app/shared/material/numpad/numpad.append-to-input.directive.js +0 -96
- package/esm2015/src/app/shared/material/numpad/numpad.component.js +0 -73
- package/esm2015/src/app/shared/material/numpad/numpad.container.js +0 -149
- package/esm2015/src/app/shared/material/numpad/numpad.content.js +0 -14
- package/esm2015/src/app/shared/material/numpad/numpad.directive.js +0 -148
- package/esm2015/src/app/shared/material/numpad/numpad.dom-service.js +0 -37
- package/esm2015/src/app/shared/material/numpad/numpad.module.js +0 -39
- package/esm2015/src/app/shared/material/numpad/testing/numpad.test.js +0 -44
- package/esm2015/src/app/shared/material/paginator/material.paginator-i18n.js +0 -44
- package/esm2015/src/app/shared/material/stepper/material.stepper-i18n.js +0 -24
- package/esm2015/src/app/shared/material/swipe/material.swipe.js +0 -308
- package/esm2015/src/app/shared/material/swipe/swipe.module.js +0 -33
- package/esm2015/src/app/shared/material/swipe/testing/swipe.test.js +0 -68
- package/esm2015/src/app/shared/observables.js +0 -99
- package/esm2015/src/app/shared/pipes/arrays.pipe.js +0 -92
- package/esm2015/src/app/shared/pipes/date-diff-duration.pipe.js +0 -50
- package/esm2015/src/app/shared/pipes/date-format.pipe.js +0 -43
- package/esm2015/src/app/shared/pipes/file-size.pipe.js +0 -58
- package/esm2015/src/app/shared/pipes/form.pipes.js +0 -177
- package/esm2015/src/app/shared/pipes/highlight.pipe.js +0 -43
- package/esm2015/src/app/shared/pipes/latlong-format.pipe.js +0 -36
- package/esm2015/src/app/shared/pipes/maps.pipe.js +0 -48
- package/esm2015/src/app/shared/pipes/math.pipes.js +0 -44
- package/esm2015/src/app/shared/pipes/ng-init.pipe.js +0 -18
- package/esm2015/src/app/shared/pipes/pipes.module.js +0 -115
- package/esm2015/src/app/shared/pipes/property.pipes.js +0 -98
- package/esm2015/src/app/shared/pipes/string.pipes.js +0 -53
- package/esm2015/src/app/shared/pipes/translate-context.pipe.js +0 -36
- package/esm2015/src/app/shared/platforms.js +0 -45
- package/esm2015/src/app/shared/services/entity-service.class.js +0 -17
- package/esm2015/src/app/shared/services/job.utils.js +0 -96
- package/esm2015/src/app/shared/services/memory-entity-service.class.js +0 -260
- package/esm2015/src/app/shared/services/progress-bar.service.js +0 -30
- package/esm2015/src/app/shared/services/startable-service.class.js +0 -98
- package/esm2015/src/app/shared/services/storage.utils.js +0 -41
- package/esm2015/src/app/shared/services/translate-context.service.js +0 -83
- package/esm2015/src/app/shared/services/validator-service.class.js +0 -2
- package/esm2015/src/app/shared/services.js +0 -61
- package/esm2015/src/app/shared/shared-routing.module.js +0 -54
- package/esm2015/src/app/shared/shared.module.js +0 -135
- package/esm2015/src/app/shared/shared.testing.module.js +0 -33
- package/esm2015/src/app/shared/testing/tests.page.js +0 -34
- package/esm2015/src/app/shared/toast/toast.testing.js +0 -39
- package/esm2015/src/app/shared/toast/toast.testing.module.js +0 -33
- package/esm2015/src/app/shared/toast/toasts.js +0 -119
- package/esm2015/src/app/shared/toolbar/modal-toolbar.js +0 -53
- package/esm2015/src/app/shared/toolbar/toolbar.js +0 -213
- package/esm2015/src/app/shared/upload-file/testing/upload-file.testing.js +0 -59
- package/esm2015/src/app/shared/upload-file/testing/upload-file.testing.module.js +0 -33
- package/esm2015/src/app/shared/upload-file/upload-file-popover.component.js +0 -98
- package/esm2015/src/app/shared/upload-file/upload-file.component.js +0 -202
- package/esm2015/src/app/shared/upload-file/upload-file.model.js +0 -20
- package/esm2015/src/app/shared/validator/form-error-adapter.class.js +0 -99
- package/esm2015/src/app/shared/validator/validators.js +0 -537
- package/esm2015/src/app/social/job/job.model.js +0 -26
- package/esm2015/src/app/social/job/job.module.js +0 -25
- package/esm2015/src/app/social/job/job.service.js +0 -54
- package/esm2015/src/app/social/job/progression/job-progression.component.js +0 -200
- package/esm2015/src/app/social/job/progression/job-progression.list.js +0 -20
- package/esm2015/src/app/social/job/testing/job-progression.testing.js +0 -48
- package/esm2015/src/app/social/job/testing/job-progression.testing.service.js +0 -30
- package/esm2015/src/app/social/job/testing/job.testing.module.js +0 -25
- package/esm2015/src/app/social/message/message.form.js +0 -73
- package/esm2015/src/app/social/message/message.modal.js +0 -96
- package/esm2015/src/app/social/message/message.model.js +0 -65
- package/esm2015/src/app/social/message/message.module.js +0 -25
- package/esm2015/src/app/social/message/message.service.js +0 -87
- package/esm2015/src/app/social/social.module.js +0 -28
- package/esm2015/src/app/social/social.testing.module.js +0 -39
- package/esm2015/src/app/social/user-event/notification/user-event-notification.icon.js +0 -95
- package/esm2015/src/app/social/user-event/notification/user-event-notification.list.js +0 -203
- package/esm2015/src/app/social/user-event/testing/user-event.testing.js +0 -230
- package/esm2015/src/app/social/user-event/testing/user-event.testing.model.js +0 -103
- package/esm2015/src/app/social/user-event/testing/user-event.testing.module.js +0 -25
- package/esm2015/src/app/social/user-event/testing/user-event.testing.service.js +0 -117
- package/esm2015/src/app/social/user-event/user-event.model.js +0 -2
- package/esm2015/src/app/social/user-event/user-event.module.js +0 -27
- package/esm2015/src/app/social/user-event/user-event.service.js +0 -509
- package/esm2015/src/environments/environment.class.js +0 -5
- package/esm2015/src/environments/environment.js +0 -81
- package/esm2015/sumaris-net.ngx-components.js +0 -21
- package/fesm2015/sumaris-net.ngx-components.js +0 -29932
- package/fesm2015/sumaris-net.ngx-components.js.map +0 -1
- package/src/app/shared/services/storage.utils.d.ts +0 -13
- package/sumaris-net.ngx-components.d.ts +0 -20
- package/sumaris-net.ngx-components.metadata.json +0 -1
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { toBoolean } from '../functions';
|
|
3
|
-
import { Subscription } from 'rxjs';
|
|
4
|
-
import { Hotkeys } from '../hotkeys/hotkeys.service';
|
|
5
|
-
import { filter } from 'rxjs/operators';
|
|
6
|
-
export class ModalToolbarComponent {
|
|
7
|
-
constructor(hotkeys) {
|
|
8
|
-
this.hotkeys = hotkeys;
|
|
9
|
-
this._subscription = new Subscription();
|
|
10
|
-
this.modalName = 'modal-toolbar';
|
|
11
|
-
this.title = '';
|
|
12
|
-
this.color = 'primary';
|
|
13
|
-
this.showSpinner = false;
|
|
14
|
-
this.validateIcon = { icon: 'checkmark' };
|
|
15
|
-
this.cancel = new EventEmitter();
|
|
16
|
-
this.validate = new EventEmitter();
|
|
17
|
-
}
|
|
18
|
-
ngOnInit() {
|
|
19
|
-
this.canValidate = toBoolean(this.canValidate, this.validate.observers.length > 0);
|
|
20
|
-
// Ctrl+S
|
|
21
|
-
this._subscription.add(this.hotkeys.addShortcut({ keys: 'control.s', description: 'COMMON.BTN_VALIDATE', elementName: this.modalName })
|
|
22
|
-
.pipe(filter(() => this.canValidate))
|
|
23
|
-
.subscribe((event) => this.validate.emit(event)));
|
|
24
|
-
// Escape
|
|
25
|
-
this._subscription.add(this.hotkeys.addShortcut({ keys: 'escape', description: 'COMMON.BTN_CLOSE', elementName: this.modalName })
|
|
26
|
-
.subscribe((event) => this.cancel.emit(event)));
|
|
27
|
-
}
|
|
28
|
-
ngOnDestroy() {
|
|
29
|
-
this._subscription.unsubscribe();
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
ModalToolbarComponent.decorators = [
|
|
33
|
-
{ type: Component, args: [{
|
|
34
|
-
selector: 'app-modal-toolbar',
|
|
35
|
-
template: "<ion-header>\n <ion-toolbar [color]=\"color\">\n <ion-buttons slot=\"start\">\n <ion-button visible-xs visible-sm visible-mobile\n (click)=\"cancel.emit()\">\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n\n <ng-content select=\"[slot=start]\"></ng-content>\n </ion-buttons>\n\n <ion-title [innerHTML]=\"title\"></ion-title>\n\n <ng-content select=\"ion-title\"></ng-content>\n\n <ng-content select=\"ion-buttons[slot=end]\"></ng-content>\n\n <ion-buttons slot=\"end\">\n\n <ng-content select=\"ion-button[slot=end]\"></ng-content>\n\n <ion-spinner *ngIf=\"showSpinner\"></ion-spinner>\n\n <ion-button visible-xs visible-sm visible-mobile\n *ngIf=\"canValidate\"\n (click)=\"validate.emit($event)\">\n <ion-icon slot=\"icon-only\" *ngIf=\"validateIcon?.icon\" [name]=\"validateIcon.icon\"></ion-icon>\n <mat-icon slot=\"icon-only\" *ngIf=\"validateIcon?.matIcon\" >{{validateIcon.matIcon}}</mat-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n",
|
|
36
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
37
|
-
styles: [""]
|
|
38
|
-
},] }
|
|
39
|
-
];
|
|
40
|
-
ModalToolbarComponent.ctorParameters = () => [
|
|
41
|
-
{ type: Hotkeys }
|
|
42
|
-
];
|
|
43
|
-
ModalToolbarComponent.propDecorators = {
|
|
44
|
-
modalName: [{ type: Input }],
|
|
45
|
-
title: [{ type: Input }],
|
|
46
|
-
color: [{ type: Input }],
|
|
47
|
-
showSpinner: [{ type: Input }],
|
|
48
|
-
canValidate: [{ type: Input }],
|
|
49
|
-
validateIcon: [{ type: Input }],
|
|
50
|
-
cancel: [{ type: Output }],
|
|
51
|
-
validate: [{ type: Output }]
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtdG9vbGJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3Rvb2xiYXIvbW9kYWwtdG9vbGJhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRW5ELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQVF0QyxNQUFNLE9BQU8scUJBQXFCO0lBMkJoQyxZQUFvQixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBekI1QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHM0MsY0FBUyxHQUFHLGVBQWUsQ0FBQztRQUc1QixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBR1gsVUFBSyxHQUFHLFNBQVMsQ0FBQztRQUdsQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUtYLGlCQUFZLEdBQVksRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFDLENBQUM7UUFHckQsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHckMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUFFQSxDQUFDO0lBRXhDLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVuRixTQUFTO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUMsQ0FBQzthQUMzRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV0RCxTQUFTO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUMsQ0FBQzthQUNyRyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV0RCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7O1lBckRGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3Qix1bkNBQWlDO2dCQUVqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQVRPLE9BQU87Ozt3QkFjWixLQUFLO29CQUdMLEtBQUs7b0JBR0wsS0FBSzswQkFHTCxLQUFLOzBCQUdMLEtBQUs7MkJBR0wsS0FBSztxQkFFTCxNQUFNO3VCQUdOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0b0Jvb2xlYW59IGZyb20gJy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0hvdGtleXN9IGZyb20gJy4uL2hvdGtleXMvaG90a2V5cy5zZXJ2aWNlJztcbmltcG9ydCB7SWNvblJlZn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW1vZGFsLXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJ21vZGFsLXRvb2xiYXIuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLXRvb2xiYXIuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbFRvb2xiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIEBJbnB1dCgpXG4gIG1vZGFsTmFtZSA9ICdtb2RhbC10b29sYmFyJztcblxuICBASW5wdXQoKVxuICB0aXRsZSA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGNvbG9yID0gJ3ByaW1hcnknO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dTcGlubmVyID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgY2FuVmFsaWRhdGU6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgdmFsaWRhdGVJY29uOiBJY29uUmVmID0ge2ljb246ICdjaGVja21hcmsnfTtcblxuICBAT3V0cHV0KClcbiAgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjxVSUV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICB2YWxpZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8VUlFdmVudD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhvdGtleXM6IEhvdGtleXMpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jYW5WYWxpZGF0ZSA9IHRvQm9vbGVhbih0aGlzLmNhblZhbGlkYXRlLCB0aGlzLnZhbGlkYXRlLm9ic2VydmVycy5sZW5ndGggPiAwKTtcblxuICAgIC8vIEN0cmwrU1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLmhvdGtleXMuYWRkU2hvcnRjdXQoe2tleXM6ICdjb250cm9sLnMnLCBkZXNjcmlwdGlvbjogJ0NPTU1PTi5CVE5fVkFMSURBVEUnLCBlbGVtZW50TmFtZTogdGhpcy5tb2RhbE5hbWV9KVxuICAgICAgICAucGlwZShmaWx0ZXIoKCkgPT4gdGhpcy5jYW5WYWxpZGF0ZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB0aGlzLnZhbGlkYXRlLmVtaXQoZXZlbnQpKSk7XG5cbiAgICAvLyBFc2NhcGVcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5ob3RrZXlzLmFkZFNob3J0Y3V0KHtrZXlzOiAnZXNjYXBlJywgZGVzY3JpcHRpb246ICdDT01NT04uQlROX0NMT1NFJywgZWxlbWVudE5hbWU6IHRoaXMubW9kYWxOYW1lfSlcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMuY2FuY2VsLmVtaXQoZXZlbnQpKSk7XG5cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Optional, Output, ViewChild } from '@angular/core';
|
|
3
|
-
import { ProgressBarService } from '../services/progress-bar.service';
|
|
4
|
-
import { ActivatedRoute, Router } from '@angular/router';
|
|
5
|
-
import { IonRouterOutlet } from '@ionic/angular';
|
|
6
|
-
import { isNotNil, isNotNilOrBlank, toBoolean } from '../functions';
|
|
7
|
-
import { debounceTime, distinctUntilChanged, startWith, tap } from 'rxjs/operators';
|
|
8
|
-
import { HAMMER_PRESS_TIME } from '../gesture/gesture-config';
|
|
9
|
-
export class ToolbarToken {
|
|
10
|
-
}
|
|
11
|
-
export class ToolbarComponent {
|
|
12
|
-
constructor(route, router, routerOutlet, cd, progressBarService) {
|
|
13
|
-
this.route = route;
|
|
14
|
-
this.router = router;
|
|
15
|
-
this.routerOutlet = routerOutlet;
|
|
16
|
-
this.cd = cd;
|
|
17
|
-
this._closeTapCount = 0;
|
|
18
|
-
this._validateTapCount = 0;
|
|
19
|
-
this.title = '';
|
|
20
|
-
this.color = 'primary';
|
|
21
|
-
this.class = '';
|
|
22
|
-
this.hasValidate = false;
|
|
23
|
-
this.hasClose = false;
|
|
24
|
-
this.canShowMenu = true;
|
|
25
|
-
this.onValidate = new EventEmitter();
|
|
26
|
-
this.onClose = new EventEmitter();
|
|
27
|
-
this.onValidateAndClose = new EventEmitter();
|
|
28
|
-
this.onBackClick = new EventEmitter();
|
|
29
|
-
this.onSearch = new EventEmitter();
|
|
30
|
-
this.showSearchBar = false;
|
|
31
|
-
// Listen progress bar service mode
|
|
32
|
-
if (progressBarService) {
|
|
33
|
-
this.progressBarMode$ = progressBarService.onProgressChanged
|
|
34
|
-
.pipe(startWith('none'), tap((mode) => '[toolbar] Updating progressBarMode: ' + mode), debounceTime(100), // wait 100ms, to group changes
|
|
35
|
-
distinctUntilChanged());
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
set backHref(value) {
|
|
39
|
-
if (value !== this._backHref) {
|
|
40
|
-
this._backHref = value;
|
|
41
|
-
this.canGoBack = this.canGoBack || isNotNil(value);
|
|
42
|
-
this.cd.markForCheck();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
get backHref() {
|
|
46
|
-
return this._backHref;
|
|
47
|
-
}
|
|
48
|
-
set defaultBackHref(value) {
|
|
49
|
-
if (value !== this._defaultBackHref) {
|
|
50
|
-
this._defaultBackHref = value;
|
|
51
|
-
this.canGoBack = this.canGoBack || isNotNil(value);
|
|
52
|
-
this.cd.markForCheck();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
get defaultBackHref() {
|
|
56
|
-
return this._defaultBackHref;
|
|
57
|
-
}
|
|
58
|
-
ngOnInit() {
|
|
59
|
-
this.hasValidate = toBoolean(this.hasValidate, this.onValidate.observers.length > 0);
|
|
60
|
-
this.canGoBack = toBoolean(this.canGoBack, this.routerOutlet.canGoBack()
|
|
61
|
-
|| isNotNilOrBlank(this._backHref)
|
|
62
|
-
|| isNotNilOrBlank(this._defaultBackHref));
|
|
63
|
-
this.hasSearch = toBoolean(this.hasSearch, this.onSearch.observers.length > 0);
|
|
64
|
-
}
|
|
65
|
-
ngOnDestroy() {
|
|
66
|
-
this.onBackClick.complete();
|
|
67
|
-
this.onBackClick.unsubscribe();
|
|
68
|
-
this.onValidate.complete();
|
|
69
|
-
this.onValidate.unsubscribe();
|
|
70
|
-
this.onClose.complete();
|
|
71
|
-
this.onClose.unsubscribe();
|
|
72
|
-
this.onValidateAndClose.complete();
|
|
73
|
-
this.onValidateAndClose.unsubscribe();
|
|
74
|
-
this.onSearch.complete();
|
|
75
|
-
this.onSearch.unsubscribe();
|
|
76
|
-
}
|
|
77
|
-
toggleSearchBar() {
|
|
78
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
79
|
-
this.showSearchBar = !this.showSearchBar;
|
|
80
|
-
if (this.showSearchBar && this.searchbar) {
|
|
81
|
-
setTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
82
|
-
yield this.searchbar.setFocus();
|
|
83
|
-
}), 300);
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
doBackClick(event) {
|
|
88
|
-
this.onBackClick.emit(event);
|
|
89
|
-
// Stop propagation, if need (can be cancelled by onBackClick observers)
|
|
90
|
-
if (event.defaultPrevented)
|
|
91
|
-
return;
|
|
92
|
-
// Execute the back action
|
|
93
|
-
this.goBack();
|
|
94
|
-
}
|
|
95
|
-
goBack() {
|
|
96
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
97
|
-
console.debug('[toolbar] calling goBack()');
|
|
98
|
-
if (this._backHref) {
|
|
99
|
-
const replaceUrl = !this.routerOutlet.canGoBack();
|
|
100
|
-
// Relative href
|
|
101
|
-
if (this._backHref.startsWith('.')) {
|
|
102
|
-
yield this.router.navigate([this._backHref], { relativeTo: this.route, replaceUrl });
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
yield this.router.navigateByUrl(this._backHref, { replaceUrl });
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
else if (this.routerOutlet.canGoBack()) {
|
|
109
|
-
yield this.routerOutlet.pop();
|
|
110
|
-
}
|
|
111
|
-
else if (this._defaultBackHref) {
|
|
112
|
-
// Relative href
|
|
113
|
-
if (this._defaultBackHref.startsWith('.')) {
|
|
114
|
-
yield this.router.navigate([this._defaultBackHref], { relativeTo: this.route, replaceUrl: true });
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
yield this.router.navigateByUrl(this._defaultBackHref, {
|
|
118
|
-
replaceUrl: true
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
console.error('[toolbar] Cannot go back. Missing attribute \'defaultBackHref\' or \'backHref\'');
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
tapClose(event) {
|
|
128
|
-
// DEV only
|
|
129
|
-
// console.debug("[toolbar] tapClose", event.tapCount);
|
|
130
|
-
if (this._validateTapCount > 0)
|
|
131
|
-
return;
|
|
132
|
-
// Distinguish simple and double tap
|
|
133
|
-
this._closeTapCount = event.tapCount;
|
|
134
|
-
setTimeout(() => {
|
|
135
|
-
// Event is obsolete (a new tap event occur)
|
|
136
|
-
if (event.tapCount < this._closeTapCount) {
|
|
137
|
-
// Ignore event
|
|
138
|
-
}
|
|
139
|
-
// If event still the last tap event: process it
|
|
140
|
-
else {
|
|
141
|
-
this.onClose.emit(event.srcEvent || event);
|
|
142
|
-
// Reset tab count
|
|
143
|
-
this._closeTapCount = 0;
|
|
144
|
-
}
|
|
145
|
-
}, 500);
|
|
146
|
-
}
|
|
147
|
-
tapValidate(event) {
|
|
148
|
-
// DEV only
|
|
149
|
-
//console.debug("[toolbar] tapValidate", event.tapCount);
|
|
150
|
-
if (!this.onValidateAndClose.observers.length) {
|
|
151
|
-
this.onValidate.emit(event.srcEvent || event);
|
|
152
|
-
}
|
|
153
|
-
// Distinguish simple and double tap
|
|
154
|
-
else {
|
|
155
|
-
this._validateTapCount = event.tapCount;
|
|
156
|
-
setTimeout(() => {
|
|
157
|
-
// Event is obsolete (a new tap event occur)
|
|
158
|
-
if (event.tapCount < this._validateTapCount) {
|
|
159
|
-
// Ignore event
|
|
160
|
-
}
|
|
161
|
-
// If event still the last tap event: process it
|
|
162
|
-
else {
|
|
163
|
-
if (this._validateTapCount === 1) {
|
|
164
|
-
this.onValidate.emit(event.srcEvent || event);
|
|
165
|
-
}
|
|
166
|
-
else if (this._validateTapCount >= 2) {
|
|
167
|
-
this.onValidateAndClose.emit(event.srcEvent || event);
|
|
168
|
-
}
|
|
169
|
-
// Reset tab count
|
|
170
|
-
this._validateTapCount = 0;
|
|
171
|
-
}
|
|
172
|
-
}, HAMMER_PRESS_TIME + 10);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
ToolbarComponent.decorators = [
|
|
177
|
-
{ type: Component, args: [{
|
|
178
|
-
selector: 'app-toolbar',
|
|
179
|
-
template: "<ion-header [class]=\"class\">\n <ion-toolbar [color]=\"color\">\n\n <ion-buttons slot=\"start\">\n\n <!-- back button -->\n <ion-button class=\"back-button\"\n *ngIf=\"canGoBack\"\n (click)=\"doBackClick($event)\"\n routerDirection=\"back\" >\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n\n <!-- show menu button -->\n <ion-menu-toggle [menu]=\"'left'\"\n [class.cdk-visually-hidden]=\"canGoBack || !canShowMenu\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"menu\"></ion-icon>\n </ion-button>\n </ion-menu-toggle>\n\n <ng-content select=\"[slot=start]\"></ng-content>\n </ion-buttons>\n\n <ion-title [innerHTML]=\"title\"></ion-title>\n\n <ng-content select=\"ion-title\"></ng-content>\n\n <ng-content select=\"ion-buttons[slot=end]\"></ng-content>\n\n <ion-buttons slot=\"end\" collapse=\"true\">\n\n <ng-content select=\"[slot=end]\"></ng-content>\n\n <!-- search bar -->\n <ion-searchbar #searchbar animated\n type=\"search\"\n *ngIf=\"hasSearch\"\n [class.cdk-visually-hidden]=\"!showSearchBar\"\n show-cancel-button=\"always\"\n (ionChange)=\"onSearch.emit($event)\"\n (ionCancel)=\"toggleSearchBar()\">\n </ion-searchbar>\n\n <!-- search button -->\n <ion-button (click)=\"toggleSearchBar()\"\n *ngIf=\"hasSearch && !showSearchBar\">\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n\n <!-- close button -->\n <ion-button *ngIf=\"hasClose\"\n (tap)=\"tapClose($event)\"\n class=\"visible-xs visible-sm visible-mobile\">\n <ion-icon slot=\"icon-only\" name=\"close\"></ion-icon>\n </ion-button>\n\n <!-- validate button -->\n <ion-button *ngIf=\"hasValidate\"\n (tap)=\"tapValidate($event)\"\n class=\"visible-xs visible-sm visible-mobile\">\n <ion-icon slot=\"icon-only\" name=\"save\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n\n <!-- progress bar -->\n <mat-progress-bar [color]=\"color\" [mode]=\"progressBarMode$ | async\">\n </mat-progress-bar>\n</ion-header>\n",
|
|
180
|
-
providers: [
|
|
181
|
-
{ provide: ToolbarToken, useExisting: ToolbarComponent }
|
|
182
|
-
],
|
|
183
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
184
|
-
styles: [""]
|
|
185
|
-
},] }
|
|
186
|
-
];
|
|
187
|
-
ToolbarComponent.ctorParameters = () => [
|
|
188
|
-
{ type: ActivatedRoute },
|
|
189
|
-
{ type: Router },
|
|
190
|
-
{ type: IonRouterOutlet },
|
|
191
|
-
{ type: ChangeDetectorRef },
|
|
192
|
-
{ type: ProgressBarService, decorators: [{ type: Optional }] }
|
|
193
|
-
];
|
|
194
|
-
ToolbarComponent.propDecorators = {
|
|
195
|
-
title: [{ type: Input }],
|
|
196
|
-
color: [{ type: Input }],
|
|
197
|
-
class: [{ type: Input }],
|
|
198
|
-
backHref: [{ type: Input }],
|
|
199
|
-
defaultBackHref: [{ type: Input }],
|
|
200
|
-
hasValidate: [{ type: Input }],
|
|
201
|
-
hasClose: [{ type: Input }],
|
|
202
|
-
hasSearch: [{ type: Input }],
|
|
203
|
-
canGoBack: [{ type: Input }],
|
|
204
|
-
canShowMenu: [{ type: Input }],
|
|
205
|
-
onValidate: [{ type: Output }],
|
|
206
|
-
onClose: [{ type: Output }],
|
|
207
|
-
onValidateAndClose: [{ type: Output }],
|
|
208
|
-
onBackClick: [{ type: Output }],
|
|
209
|
-
onSearch: [{ type: Output }],
|
|
210
|
-
searchbar: [{ type: ViewChild, args: ['searchbar', { static: true },] }],
|
|
211
|
-
menuToggle: [{ type: ViewChild, args: ['menuToggle', { static: true },] }]
|
|
212
|
-
};
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3Rvb2xiYXIvdG9vbGJhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0csUUFBUSxFQUNoQixNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxrQkFBa0IsRUFBZSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVBQWUsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNsRSxPQUFPLEVBQUMsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUdsRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUk1RCxNQUFNLE9BQWdCLFlBQVk7Q0FLakM7QUFXRCxNQUFNLE9BQU8sZ0JBQWdCO0lBeUQzQixZQUNVLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxZQUE2QixFQUM3QixFQUFxQixFQUNqQixrQkFBc0M7UUFKMUMsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUM3QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQTNEdkIsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFDbkIsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBSXJCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFFbkIsVUFBSyxHQUFxQixT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RDtvQkFFRCxrQkFBa0I7b0JBQ2xCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7aUJBQzVCO1lBQ0gsQ0FBQyxFQUFFLGlCQUFpQixHQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQzs7O1lBck5GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsaTRFQUEyQjtnQkFFM0IsU0FBUyxFQUFFO29CQUNULEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUM7aUJBQ3ZEO2dCQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7O1lBekJPLGNBQWM7WUFBRSxNQUFNO1lBQ3RCLGVBQWU7WUFWckIsaUJBQWlCO1lBUVgsa0JBQWtCLHVCQXlGckIsUUFBUTs7O29CQXZEVixLQUFLO29CQUVMLEtBQUs7b0JBRUwsS0FBSzt1QkFHTCxLQUFLOzhCQVlMLEtBQUs7MEJBWUwsS0FBSzt1QkFDTCxLQUFLO3dCQUNMLEtBQUs7d0JBQ0wsS0FBSzswQkFDTCxLQUFLO3lCQUVMLE1BQU07c0JBQ04sTUFBTTtpQ0FDTixNQUFNOzBCQUNOLE1BQU07dUJBQ04sTUFBTTt3QkFLTixTQUFTLFNBQUMsV0FBVyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQzt5QkFDckMsU0FBUyxTQUFDLFlBQVksRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCwgT25EZXN0cm95LFxuICBPbkluaXQsIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UHJvZ3Jlc3NCYXJTZXJ2aWNlLCBQcm9ncmVzc01vZGV9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyZXNzLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7SW9uUm91dGVyT3V0bGV0LCBJb25TZWFyY2hiYXJ9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7aXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuaywgdG9Cb29sZWFufSBmcm9tICcuLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzdGFydFdpdGgsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7SGFtbWVyVGFwRXZlbnR9IGZyb20gJy4uL2dlc3R1cmUvaGFtbWVyLnV0aWxzJztcbmltcG9ydCB7SEFNTUVSX1BSRVNTX1RJTUV9IGZyb20gJy4uL2dlc3R1cmUvZ2VzdHVyZS1jb25maWcnO1xuaW1wb3J0IHtQcmVkZWZpbmVkQ29sb3JzfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQge0lvbk1lbnVUb2dnbGV9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRvb2xiYXJUb2tlbiB7XG4gIGFic3RyYWN0IG9uQmFja0NsaWNrOiBPYnNlcnZhYmxlPEV2ZW50PjtcbiAgYWJzdHJhY3QgZG9CYWNrQ2xpY2soZXZlbnQ6IEV2ZW50KTtcbiAgYWJzdHJhY3QgZ29CYWNrKCk6IFByb21pc2U8dm9pZD47XG4gIGFic3RyYWN0IGNhbkdvQmFjazogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJ3Rvb2xiYXIuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rvb2xiYXIuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7cHJvdmlkZTogVG9vbGJhclRva2VuLCB1c2VFeGlzdGluZzogVG9vbGJhckNvbXBvbmVudH1cbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIFRvb2xiYXJUb2tlbiwgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgX2Nsb3NlVGFwQ291bnQgPSAwO1xuICBwcml2YXRlIF92YWxpZGF0ZVRhcENvdW50ID0gMDtcbiAgcHJpdmF0ZSBfZGVmYXVsdEJhY2tIcmVmOiBzdHJpbmc7XG4gIHByaXZhdGUgX2JhY2tIcmVmOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgdGl0bGU6IFN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpIGNvbG9yOiBQcmVkZWZpbmVkQ29sb3JzID0gJ3ByaW1hcnknO1xuXG4gIEBJbnB1dCgpXG4gIGNsYXNzID0gJyc7XG5cbiAgQElucHV0KCkgc2V0IGJhY2tIcmVmKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuX2JhY2tIcmVmKSB7XG4gICAgICB0aGlzLl9iYWNrSHJlZiA9IHZhbHVlO1xuICAgICAgdGhpcy5jYW5Hb0JhY2sgPSB0aGlzLmNhbkdvQmFjayB8fCBpc05vdE5pbCh2YWx1ZSk7XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBiYWNrSHJlZigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9iYWNrSHJlZjtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBkZWZhdWx0QmFja0hyZWYodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fZGVmYXVsdEJhY2tIcmVmKSB7XG4gICAgICB0aGlzLl9kZWZhdWx0QmFja0hyZWYgPSB2YWx1ZTtcbiAgICAgIHRoaXMuY2FuR29CYWNrID0gdGhpcy5jYW5Hb0JhY2sgfHwgaXNOb3ROaWwodmFsdWUpO1xuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZGVmYXVsdEJhY2tIcmVmKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRCYWNrSHJlZjtcbiAgfVxuXG4gIEBJbnB1dCgpIGhhc1ZhbGlkYXRlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhhc0Nsb3NlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhhc1NlYXJjaDogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FuR29CYWNrOiBib29sZWFuO1xuICBASW5wdXQoKSBjYW5TaG93TWVudSA9IHRydWU7XG5cbiAgQE91dHB1dCgpIG9uVmFsaWRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgb25DbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvblZhbGlkYXRlQW5kQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgb25CYWNrQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgb25TZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PigpO1xuXG4gIHByb2dyZXNzQmFyTW9kZSQ6IE9ic2VydmFibGU8UHJvZ3Jlc3NNb2RlPjtcbiAgc2hvd1NlYXJjaEJhciA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaGJhcicsIHtzdGF0aWM6IHRydWV9KSBzZWFyY2hiYXI6IElvblNlYXJjaGJhcjtcbiAgQFZpZXdDaGlsZCgnbWVudVRvZ2dsZScsIHtzdGF0aWM6IHRydWV9KSBtZW51VG9nZ2xlOiBJb25NZW51VG9nZ2xlO1xuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJvdXRlck91dGxldDogSW9uUm91dGVyT3V0bGV0LFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIHByb2dyZXNzQmFyU2VydmljZTogUHJvZ3Jlc3NCYXJTZXJ2aWNlXG4gICkge1xuXG4gICAgLy8gTGlzdGVuIHByb2dyZXNzIGJhciBzZXJ2aWNlIG1vZGVcbiAgICBpZiAocHJvZ3Jlc3NCYXJTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnByb2dyZXNzQmFyTW9kZSQgPSBwcm9ncmVzc0JhclNlcnZpY2Uub25Qcm9ncmVzc0NoYW5nZWRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3RhcnRXaXRoPFByb2dyZXNzTW9kZSwgUHJvZ3Jlc3NNb2RlPignbm9uZScgYXMgUHJvZ3Jlc3NNb2RlKSxcbiAgICAgICAgICB0YXAoKG1vZGUpID0+ICdbdG9vbGJhcl0gVXBkYXRpbmcgcHJvZ3Jlc3NCYXJNb2RlOiAnICsgbW9kZSksXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksIC8vIHdhaXQgMTAwbXMsIHRvIGdyb3VwIGNoYW5nZXNcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5oYXNWYWxpZGF0ZSA9IHRvQm9vbGVhbih0aGlzLmhhc1ZhbGlkYXRlLCB0aGlzLm9uVmFsaWRhdGUub2JzZXJ2ZXJzLmxlbmd0aCA+IDApO1xuICAgIHRoaXMuY2FuR29CYWNrID0gdG9Cb29sZWFuKHRoaXMuY2FuR29CYWNrLCB0aGlzLnJvdXRlck91dGxldC5jYW5Hb0JhY2soKVxuICAgICAgfHwgaXNOb3ROaWxPckJsYW5rKHRoaXMuX2JhY2tIcmVmKVxuICAgICAgfHwgaXNOb3ROaWxPckJsYW5rKHRoaXMuX2RlZmF1bHRCYWNrSHJlZikpO1xuICAgIHRoaXMuaGFzU2VhcmNoID0gdG9Cb29sZWFuKHRoaXMuaGFzU2VhcmNoLCB0aGlzLm9uU2VhcmNoLm9ic2VydmVycy5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMub25CYWNrQ2xpY2suY29tcGxldGUoKTtcbiAgICB0aGlzLm9uQmFja0NsaWNrLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vblZhbGlkYXRlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblZhbGlkYXRlLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vbkNsb3NlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vbkNsb3NlLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vblZhbGlkYXRlQW5kQ2xvc2UuY29tcGxldGUoKTtcbiAgICB0aGlzLm9uVmFsaWRhdGVBbmRDbG9zZS51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25TZWFyY2guY29tcGxldGUoKTtcbiAgICB0aGlzLm9uU2VhcmNoLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBhc3luYyB0b2dnbGVTZWFyY2hCYXIoKSB7XG4gICAgdGhpcy5zaG93U2VhcmNoQmFyID0gIXRoaXMuc2hvd1NlYXJjaEJhcjtcbiAgICBpZiAodGhpcy5zaG93U2VhcmNoQmFyICYmIHRoaXMuc2VhcmNoYmFyKSB7XG4gICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5zZWFyY2hiYXIuc2V0Rm9jdXMoKTtcbiAgICAgIH0sIDMwMCk7XG4gICAgfVxuICB9XG5cbiAgZG9CYWNrQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG5cbiAgICB0aGlzLm9uQmFja0NsaWNrLmVtaXQoZXZlbnQpO1xuXG4gICAgLy8gU3RvcCBwcm9wYWdhdGlvbiwgaWYgbmVlZCAoY2FuIGJlIGNhbmNlbGxlZCBieSBvbkJhY2tDbGljayBvYnNlcnZlcnMpXG4gICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybjtcblxuICAgIC8vIEV4ZWN1dGUgdGhlIGJhY2sgYWN0aW9uXG4gICAgdGhpcy5nb0JhY2soKTtcbiAgfVxuXG4gIGFzeW5jIGdvQmFjaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmRlYnVnKCdbdG9vbGJhcl0gY2FsbGluZyBnb0JhY2soKScpO1xuICAgIGlmICh0aGlzLl9iYWNrSHJlZikge1xuICAgICAgY29uc3QgcmVwbGFjZVVybCA9ICF0aGlzLnJvdXRlck91dGxldC5jYW5Hb0JhY2soKTtcbiAgICAgIC8vIFJlbGF0aXZlIGhyZWZcbiAgICAgIGlmICh0aGlzLl9iYWNrSHJlZi5zdGFydHNXaXRoKCcuJykpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuX2JhY2tIcmVmXSwge3JlbGF0aXZlVG86IHRoaXMucm91dGUsIHJlcGxhY2VVcmx9KTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuX2JhY2tIcmVmLCB7cmVwbGFjZVVybH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLnJvdXRlck91dGxldC5jYW5Hb0JhY2soKSkge1xuICAgICAgYXdhaXQgdGhpcy5yb3V0ZXJPdXRsZXQucG9wKCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMuX2RlZmF1bHRCYWNrSHJlZikge1xuICAgICAgLy8gUmVsYXRpdmUgaHJlZlxuICAgICAgaWYgKHRoaXMuX2RlZmF1bHRCYWNrSHJlZi5zdGFydHNXaXRoKCcuJykpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuX2RlZmF1bHRCYWNrSHJlZl0sIHtyZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLCByZXBsYWNlVXJsOiB0cnVlfSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLl9kZWZhdWx0QmFja0hyZWYsIHtcbiAgICAgICAgICByZXBsYWNlVXJsOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignW3Rvb2xiYXJdIENhbm5vdCBnbyBiYWNrLiBNaXNzaW5nIGF0dHJpYnV0ZSBcXCdkZWZhdWx0QmFja0hyZWZcXCcgb3IgXFwnYmFja0hyZWZcXCcnKTtcbiAgICB9XG4gIH1cblxuICB0YXBDbG9zZShldmVudDogSGFtbWVyVGFwRXZlbnQpIHtcbiAgICAvLyBERVYgb25seVxuICAgIC8vIGNvbnNvbGUuZGVidWcoXCJbdG9vbGJhcl0gdGFwQ2xvc2VcIiwgZXZlbnQudGFwQ291bnQpO1xuICAgIGlmICh0aGlzLl92YWxpZGF0ZVRhcENvdW50ID4gMCkgcmV0dXJuO1xuXG4gICAgLy8gRGlzdGluZ3Vpc2ggc2ltcGxlIGFuZCBkb3VibGUgdGFwXG4gICAgdGhpcy5fY2xvc2VUYXBDb3VudCA9IGV2ZW50LnRhcENvdW50O1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gRXZlbnQgaXMgb2Jzb2xldGUgKGEgbmV3IHRhcCBldmVudCBvY2N1cilcbiAgICAgIGlmIChldmVudC50YXBDb3VudCA8IHRoaXMuX2Nsb3NlVGFwQ291bnQpIHtcbiAgICAgICAgLy8gSWdub3JlIGV2ZW50XG4gICAgICB9XG5cbiAgICAgIC8vIElmIGV2ZW50IHN0aWxsIHRoZSBsYXN0IHRhcCBldmVudDogcHJvY2VzcyBpdFxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMub25DbG9zZS5lbWl0KGV2ZW50LnNyY0V2ZW50IHx8IGV2ZW50KTtcblxuICAgICAgICAvLyBSZXNldCB0YWIgY291bnRcbiAgICAgICAgdGhpcy5fY2xvc2VUYXBDb3VudCA9IDA7XG4gICAgICB9XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHRhcFZhbGlkYXRlKGV2ZW50OiBIYW1tZXJUYXBFdmVudCkge1xuICAgIC8vIERFViBvbmx5XG4gICAgLy9jb25zb2xlLmRlYnVnKFwiW3Rvb2xiYXJdIHRhcFZhbGlkYXRlXCIsIGV2ZW50LnRhcENvdW50KTtcblxuICAgIGlmICghdGhpcy5vblZhbGlkYXRlQW5kQ2xvc2Uub2JzZXJ2ZXJzLmxlbmd0aCkge1xuICAgICAgdGhpcy5vblZhbGlkYXRlLmVtaXQoZXZlbnQuc3JjRXZlbnQgfHwgZXZlbnQpO1xuICAgIH1cblxuICAgIC8vIERpc3Rpbmd1aXNoIHNpbXBsZSBhbmQgZG91YmxlIHRhcFxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fdmFsaWRhdGVUYXBDb3VudCA9IGV2ZW50LnRhcENvdW50O1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIC8vIEV2ZW50IGlzIG9ic29sZXRlIChhIG5ldyB0YXAgZXZlbnQgb2NjdXIpXG4gICAgICAgIGlmIChldmVudC50YXBDb3VudCA8IHRoaXMuX3ZhbGlkYXRlVGFwQ291bnQpIHtcbiAgICAgICAgICAvLyBJZ25vcmUgZXZlbnRcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIGV2ZW50IHN0aWxsIHRoZSBsYXN0IHRhcCBldmVudDogcHJvY2VzcyBpdFxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5fdmFsaWRhdGVUYXBDb3VudCA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy5vblZhbGlkYXRlLmVtaXQoZXZlbnQuc3JjRXZlbnQgfHwgZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmICh0aGlzLl92YWxpZGF0ZVRhcENvdW50ID49IDIpIHtcbiAgICAgICAgICAgIHRoaXMub25WYWxpZGF0ZUFuZENsb3NlLmVtaXQoZXZlbnQuc3JjRXZlbnQgfHwgZXZlbnQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFJlc2V0IHRhYiBjb3VudFxuICAgICAgICAgIHRoaXMuX3ZhbGlkYXRlVGFwQ291bnQgPSAwO1xuICAgICAgICB9XG4gICAgICB9LCBIQU1NRVJfUFJFU1NfVElNRSsxMCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Component } from '@angular/core';
|
|
3
|
-
import { PopoverController } from '@ionic/angular';
|
|
4
|
-
import { Subject, timer } from 'rxjs';
|
|
5
|
-
import { HttpEventType, HttpResponse } from '@angular/common/http';
|
|
6
|
-
import { map, takeUntil } from 'rxjs/operators';
|
|
7
|
-
import { sleep } from '../../functions';
|
|
8
|
-
import { FilesUtils } from '../../file/file.utils';
|
|
9
|
-
export class UploadFileTestingPage {
|
|
10
|
-
constructor(popoverController) {
|
|
11
|
-
this.popoverController = popoverController;
|
|
12
|
-
}
|
|
13
|
-
showPopover(event, opts) {
|
|
14
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
15
|
-
const { data } = yield FilesUtils.showUploadPopover(this.popoverController, event, Object.assign({ uploadFn: (file) => this.uploadFile(file), deleteFn: (file) => this.deleteFile(file) }, opts));
|
|
16
|
-
const filenames = (data || []).map(file => { var _a, _b; return (_b = (_a = file.response) === null || _a === void 0 ? void 0 : _a.body) === null || _b === void 0 ? void 0 : _b.finalName; });
|
|
17
|
-
console.info('Popover result: ', filenames);
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Simulate a upload function, with progression
|
|
22
|
-
* @param file
|
|
23
|
-
*/
|
|
24
|
-
uploadFile(file) {
|
|
25
|
-
const $stop = new Subject();
|
|
26
|
-
const loadStep = file.size / 10;
|
|
27
|
-
let loaded = 0;
|
|
28
|
-
return timer(0, 250)
|
|
29
|
-
.pipe(takeUntil($stop), map(() => {
|
|
30
|
-
loaded += loadStep;
|
|
31
|
-
// Return progression
|
|
32
|
-
if (loaded < file.size) {
|
|
33
|
-
//return {type: HttpEventType.UploadProgress, total: file.size, loaded };
|
|
34
|
-
return { type: HttpEventType.UploadProgress, loaded: -1 };
|
|
35
|
-
}
|
|
36
|
-
// Stop the timer
|
|
37
|
-
setTimeout(() => $stop.next(), 100);
|
|
38
|
-
// Return final response
|
|
39
|
-
return new HttpResponse({ body: { finalName: file.name } });
|
|
40
|
-
}));
|
|
41
|
-
}
|
|
42
|
-
deleteFile(file) {
|
|
43
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
-
console.info('[testing] Simulate remote deletion... (waiting 2s)');
|
|
45
|
-
yield sleep(2000);
|
|
46
|
-
return true;
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
UploadFileTestingPage.decorators = [
|
|
51
|
-
{ type: Component, args: [{
|
|
52
|
-
selector: 'upload-file-testing',
|
|
53
|
-
template: "<ion-toolbar color=\"primary\">\n <ion-title>File upload</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n\n <p>Popover examples:</p>\n\n <ion-button (click)=\"showPopover($event, {uniqueFile: true})\" color=\"tertiary\">\n <span translate>COMMON.BTN_IMPORT</span> (unique file)\n </ion-button>\n\n <ion-button (click)=\"showPopover($event, {uniqueFile: false})\" color=\"tertiary\">\n <span translate>COMMON.BTN_IMPORT</span> (many files)\n </ion-button>\n\n <ion-button (click)=\"showPopover($event, {uniqueFile: false, instantUpload: true})\" color=\"tertiary\">\n <span translate>COMMON.BTN_IMPORT</span> (instant upload)\n </ion-button>\n\n <ion-button (click)=\"showPopover($event, {uniqueFile: false, instantUpload: true, maxParallelUpload: 3})\" color=\"tertiary\">\n <span translate>COMMON.BTN_IMPORT</span> (max parallel upload)\n </ion-button>\n\n</ion-content>\n"
|
|
54
|
-
},] }
|
|
55
|
-
];
|
|
56
|
-
UploadFileTestingPage.ctorParameters = () => [
|
|
57
|
-
{ type: PopoverController }
|
|
58
|
-
];
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWZpbGUudGVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3VwbG9hZC1maWxlL3Rlc3RpbmcvdXBsb2FkLWZpbGUudGVzdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQWEsT0FBTyxFQUFFLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUMsYUFBYSxFQUFFLFlBQVksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXRDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQU1qRCxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQ1UsaUJBQW9DO1FBQXBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFFOUMsQ0FBQztJQUVLLFdBQVcsQ0FBQyxLQUFjLEVBQUUsSUFBNkM7O1lBQzdFLE1BQU0sRUFBQyxJQUFJLEVBQUMsR0FBRyxNQUFNLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxrQkFDM0UsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUN6QyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQ3RDLElBQUksRUFDUCxDQUFDO1lBRUwsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLGtDQUFDLElBQUksQ0FBQyxRQUFRLDBDQUFFLElBQUksMENBQUUsU0FBUyxHQUFBLENBQUMsQ0FBQztZQUMzRSxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7S0FBQTtJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxJQUFVO1FBQ25CLE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsT0FBTyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQzthQUNqQixJQUFJLENBQ0gsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUNoQixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsTUFBTSxJQUFJLFFBQVEsQ0FBQztZQUVuQixxQkFBcUI7WUFDckIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDdEIseUVBQXlFO2dCQUN6RSxPQUFPLEVBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDMUQ7WUFFRCxpQkFBaUI7WUFDakIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUVwQyx3QkFBd0I7WUFDeEIsT0FBTyxJQUFJLFlBQVksQ0FBQyxFQUFDLElBQUksRUFBRSxFQUFDLFNBQVMsRUFBRyxJQUFJLENBQUMsSUFBSSxFQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUNILENBQUE7SUFFTCxDQUFDO0lBRUssVUFBVSxDQUFDLElBQVU7O1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0RBQW9ELENBQUMsQ0FBQztZQUNuRSxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7S0FBQTs7O1lBeERGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixtN0JBQXVDO2FBQ3hDOzs7WUFaTyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BvcG92ZXJDb250cm9sbGVyfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge1VwbG9hZEZpbGVQb3BvdmVyT3B0aW9uc30gZnJvbSAnLi4vdXBsb2FkLWZpbGUtcG9wb3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0LCB0aW1lcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0h0dHBFdmVudFR5cGUsIEh0dHBSZXNwb25zZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHttYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtzbGVlcH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7RmlsZUV2ZW50fSBmcm9tICcuLi91cGxvYWQtZmlsZS5tb2RlbCc7XG5pbXBvcnQge0ZpbGVzVXRpbHN9IGZyb20gJy4uLy4uL2ZpbGUvZmlsZS51dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VwbG9hZC1maWxlLXRlc3RpbmcnLFxuICB0ZW1wbGF0ZVVybDogJ3VwbG9hZC1maWxlLnRlc3RpbmcuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkRmlsZVRlc3RpbmdQYWdlICB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwb3BvdmVyQ29udHJvbGxlcjogUG9wb3ZlckNvbnRyb2xsZXJcbiAgKSB7XG4gIH1cblxuICBhc3luYyBzaG93UG9wb3ZlcihldmVudDogVUlFdmVudCwgb3B0cz86IFBhcnRpYWw8VXBsb2FkRmlsZVBvcG92ZXJPcHRpb25zPGFueT4+KSB7XG4gICAgY29uc3Qge2RhdGF9ID0gYXdhaXQgRmlsZXNVdGlscy5zaG93VXBsb2FkUG9wb3Zlcih0aGlzLnBvcG92ZXJDb250cm9sbGVyLCBldmVudCwge1xuICAgICAgICB1cGxvYWRGbjogKGZpbGUpID0+IHRoaXMudXBsb2FkRmlsZShmaWxlKSxcbiAgICAgICAgZGVsZXRlRm46IChmaWxlKSA9PiB0aGlzLmRlbGV0ZUZpbGUoZmlsZSksXG4gICAgICAgIC4uLm9wdHNcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgZmlsZW5hbWVzID0gKGRhdGEgfHwgW10pLm1hcChmaWxlID0+IGZpbGUucmVzcG9uc2U/LmJvZHk/LmZpbmFsTmFtZSk7XG4gICAgY29uc29sZS5pbmZvKCdQb3BvdmVyIHJlc3VsdDogJywgZmlsZW5hbWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaW11bGF0ZSBhIHVwbG9hZCBmdW5jdGlvbiwgd2l0aCBwcm9ncmVzc2lvblxuICAgKiBAcGFyYW0gZmlsZVxuICAgKi9cbiAgdXBsb2FkRmlsZShmaWxlOiBGaWxlKTogT2JzZXJ2YWJsZTxGaWxlRXZlbnQ8eyBmaW5hbE5hbWU6IHN0cmluZzsgfT4+IHtcbiAgICBjb25zdCAkc3RvcCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgY29uc3QgbG9hZFN0ZXAgPSBmaWxlLnNpemUgLyAxMDtcbiAgICBsZXQgbG9hZGVkID0gMDtcbiAgICByZXR1cm4gdGltZXIoMCwgMjUwKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCgkc3RvcCksXG4gICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgbG9hZGVkICs9IGxvYWRTdGVwO1xuXG4gICAgICAgICAgLy8gUmV0dXJuIHByb2dyZXNzaW9uXG4gICAgICAgICAgaWYgKGxvYWRlZCA8IGZpbGUuc2l6ZSkge1xuICAgICAgICAgICAgLy9yZXR1cm4ge3R5cGU6IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MsIHRvdGFsOiBmaWxlLnNpemUsIGxvYWRlZCB9O1xuICAgICAgICAgICAgcmV0dXJuIHt0eXBlOiBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzLCBsb2FkZWQ6IC0xIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gU3RvcCB0aGUgdGltZXJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+ICRzdG9wLm5leHQoKSwgMTAwKTtcblxuICAgICAgICAgIC8vIFJldHVybiBmaW5hbCByZXNwb25zZVxuICAgICAgICAgIHJldHVybiBuZXcgSHR0cFJlc3BvbnNlKHtib2R5OiB7ZmluYWxOYW1lIDogZmlsZS5uYW1lfX0pO1xuICAgICAgICB9KVxuICAgICAgKVxuXG4gIH1cblxuICBhc3luYyBkZWxldGVGaWxlKGZpbGU6IEZpbGUpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zb2xlLmluZm8oJ1t0ZXN0aW5nXSBTaW11bGF0ZSByZW1vdGUgZGVsZXRpb24uLi4gKHdhaXRpbmcgMnMpJyk7XG4gICAgYXdhaXQgc2xlZXAoMjAwMCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,33 +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 { UploadFileTestingPage } from './upload-file.testing';
|
|
7
|
-
const routes = [
|
|
8
|
-
{
|
|
9
|
-
path: 'upload-file',
|
|
10
|
-
pathMatch: 'full',
|
|
11
|
-
component: UploadFileTestingPage
|
|
12
|
-
}
|
|
13
|
-
];
|
|
14
|
-
export class UploadFileTestingModule {
|
|
15
|
-
}
|
|
16
|
-
UploadFileTestingModule.decorators = [
|
|
17
|
-
{ type: NgModule, args: [{
|
|
18
|
-
imports: [
|
|
19
|
-
CommonModule,
|
|
20
|
-
IonicModule,
|
|
21
|
-
TranslateModule.forChild(),
|
|
22
|
-
RouterModule.forChild(routes)
|
|
23
|
-
],
|
|
24
|
-
declarations: [
|
|
25
|
-
UploadFileTestingPage
|
|
26
|
-
],
|
|
27
|
-
exports: [
|
|
28
|
-
RouterModule,
|
|
29
|
-
UploadFileTestingPage
|
|
30
|
-
]
|
|
31
|
-
},] }
|
|
32
|
-
];
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWZpbGUudGVzdGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC91cGxvYWQtZmlsZS90ZXN0aW5nL3VwbG9hZC1maWxlLnRlc3RpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRTVELE1BQU0sTUFBTSxHQUFXO0lBQ3JCO1FBQ0UsSUFBSSxFQUFFLGFBQWE7UUFDbkIsU0FBUyxFQUFFLE1BQU07UUFDakIsU0FBUyxFQUFFLHFCQUFxQjtLQUNqQztDQUNGLENBQUM7QUFpQkYsTUFBTSxPQUFPLHVCQUF1Qjs7O1lBZm5DLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixXQUFXO29CQUNYLGVBQWUsQ0FBQyxRQUFRLEVBQUU7b0JBQzFCLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO2lCQUM5QjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1oscUJBQXFCO2lCQUN0QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixxQkFBcUI7aUJBQ3RCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyTW9kdWxlLCBSb3V0ZXN9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0lvbmljTW9kdWxlfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7VXBsb2FkRmlsZVRlc3RpbmdQYWdlfSBmcm9tICcuL3VwbG9hZC1maWxlLnRlc3RpbmcnO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAge1xuICAgIHBhdGg6ICd1cGxvYWQtZmlsZScsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBVcGxvYWRGaWxlVGVzdGluZ1BhZ2VcbiAgfVxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJb25pY01vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKSxcbiAgICBSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBVcGxvYWRGaWxlVGVzdGluZ1BhZ2VcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFJvdXRlck1vZHVsZSxcbiAgICBVcGxvYWRGaWxlVGVzdGluZ1BhZ2VcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBVcGxvYWRGaWxlVGVzdGluZ01vZHVsZSB7XG59XG4iXX0=
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
3
|
-
import { PopoverController } from '@ionic/angular';
|
|
4
|
-
import { isEmptyArray, isNotEmptyArray, isNotNilOrBlank } from '../functions';
|
|
5
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
6
|
-
export class UploadFilePopover {
|
|
7
|
-
constructor(popoverController, translate, cd) {
|
|
8
|
-
this.popoverController = popoverController;
|
|
9
|
-
this.translate = translate;
|
|
10
|
-
this.cd = cd;
|
|
11
|
-
this.uniqueFile = false;
|
|
12
|
-
this.instantUpload = false;
|
|
13
|
-
this.importing = false;
|
|
14
|
-
}
|
|
15
|
-
get files() {
|
|
16
|
-
return this.uploader.files;
|
|
17
|
-
}
|
|
18
|
-
get disabled() {
|
|
19
|
-
return this.importing || isEmptyArray(this.files);
|
|
20
|
-
}
|
|
21
|
-
get valid() {
|
|
22
|
-
return isNotEmptyArray(this.files);
|
|
23
|
-
}
|
|
24
|
-
onValidate(event) {
|
|
25
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
-
event === null || event === void 0 ? void 0 : event.stopPropagation();
|
|
27
|
-
// Avoid multiple call
|
|
28
|
-
if (this.importing)
|
|
29
|
-
return;
|
|
30
|
-
console.debug('[upload-file-popover] Validate form: will upload all files...');
|
|
31
|
-
try {
|
|
32
|
-
this.importing = true;
|
|
33
|
-
this.resetError();
|
|
34
|
-
try {
|
|
35
|
-
// Wait processing files finished
|
|
36
|
-
yield this.uploader.waitIdle();
|
|
37
|
-
// upload all files
|
|
38
|
-
yield this.uploader.uploadFiles();
|
|
39
|
-
const files = (this.uploader.processedFiles || [])
|
|
40
|
-
.filter(file => !file.deleting); // Remove deleting file (deletion in progress)
|
|
41
|
-
// Nothing to upload: close popover
|
|
42
|
-
if (isEmptyArray(files))
|
|
43
|
-
return this.cancel();
|
|
44
|
-
// check errors
|
|
45
|
-
const errors = files.map(file => file.error).filter(isNotNilOrBlank);
|
|
46
|
-
// If error: stop
|
|
47
|
-
if (errors.length) {
|
|
48
|
-
errors.forEach((error) => console.error(error));
|
|
49
|
-
throw { message: 'FILE.UPLOAD.ERROR' };
|
|
50
|
-
}
|
|
51
|
-
// return files
|
|
52
|
-
yield this.popoverController.dismiss(files);
|
|
53
|
-
}
|
|
54
|
-
catch (err) {
|
|
55
|
-
this.error = (err && err.message) || err;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
finally {
|
|
59
|
-
this.importing = false;
|
|
60
|
-
this.cd.markForCheck();
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
cancel() {
|
|
65
|
-
return this.popoverController.dismiss();
|
|
66
|
-
}
|
|
67
|
-
resetError() {
|
|
68
|
-
if (this.error) {
|
|
69
|
-
this.error = null;
|
|
70
|
-
this.cd.markForCheck();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
UploadFilePopover.decorators = [
|
|
75
|
-
{ type: Component, args: [{
|
|
76
|
-
selector: 'app-upload-file-popover',
|
|
77
|
-
template: "\n<ion-content class=\"ion-no-padding\" scrollY=\"false\">\n <div class=\"modal-content\">\n <app-upload-file\n #uploader\n [uploadFn]=\"uploadFn\"\n [deleteFn]=\"deleteFn\"\n [fileExtension]=\"fileExtension\"\n [instantUpload]=\"instantUpload\"\n [uniqueFile]=\"uniqueFile\"\n [maxParallelUpload]=\"maxParallelUpload\"\n ></app-upload-file>\n </div>\n</ion-content>\n\n<ion-footer>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col>\n <div *ngIf=\"importing\" class=\"importing-info\">\n <ion-text color=\"medium\"><small translate>FILE.UPLOAD.IMPORTING</small></ion-text>\n <ion-spinner name=\"dots\" color=\"accent\"></ion-spinner>\n </div>\n <ion-item *ngIf=\"error\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"ion-text-wrap\" [innerHTML]=\"error | translate\"></ion-label>\n </ion-item>\n </ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <ion-button\n [fill]=\"disabled ? 'clear' : 'solid'\"\n (click)=\"onValidate($event)\"\n (keyup.enter)=\"onValidate($event)\"\n color=\"tertiary\"\n [disabled]=\"disabled\"\n >\n <ion-label translate>COMMON.BTN_IMPORT</ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n",
|
|
78
|
-
encapsulation: ViewEncapsulation.None,
|
|
79
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
80
|
-
styles: [".importing-info{-webkit-padding-start:var(--ion-padding);padding-inline-start:var(--ion-padding);display:inline-flex;flex-wrap:nowrap;padding-top:8px}"]
|
|
81
|
-
},] }
|
|
82
|
-
];
|
|
83
|
-
UploadFilePopover.ctorParameters = () => [
|
|
84
|
-
{ type: PopoverController },
|
|
85
|
-
{ type: TranslateService },
|
|
86
|
-
{ type: ChangeDetectorRef }
|
|
87
|
-
];
|
|
88
|
-
UploadFilePopover.propDecorators = {
|
|
89
|
-
uploader: [{ type: ViewChild, args: ['uploader', { static: true },] }],
|
|
90
|
-
fileExtension: [{ type: Input }],
|
|
91
|
-
title: [{ type: Input }],
|
|
92
|
-
uniqueFile: [{ type: Input }],
|
|
93
|
-
instantUpload: [{ type: Input }],
|
|
94
|
-
uploadFn: [{ type: Input }],
|
|
95
|
-
deleteFn: [{ type: Input }],
|
|
96
|
-
maxParallelUpload: [{ type: Input }]
|
|
97
|
-
};
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWZpbGUtcG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC91cGxvYWQtZmlsZS91cGxvYWQtZmlsZS1wb3BvdmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pILE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR2pELE9BQU8sRUFBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQXFCckQsTUFBTSxPQUFPLGlCQUFpQjtJQTJCNUIsWUFBc0IsaUJBQW9DLEVBQ3BDLFNBQTJCLEVBQzNCLEVBQXFCO1FBRnJCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUF2QmxDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFLL0IsY0FBUyxHQUFHLEtBQUssQ0FBQztJQWtCbEIsQ0FBQztJQWZELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQU9LLFVBQVUsQ0FBQyxLQUFVOztZQUN6QixLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsZUFBZSxHQUFHO1lBRXpCLHNCQUFzQjtZQUN0QixJQUFJLElBQUksQ0FBQyxTQUFTO2dCQUFFLE9BQU87WUFFM0IsT0FBTyxDQUFDLEtBQUssQ0FBQywrREFBK0QsQ0FBQyxDQUFDO1lBRS9FLElBQUk7Z0JBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFFbEIsSUFBSTtvQkFDRixpQ0FBaUM7b0JBQ2pDLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFFL0IsbUJBQW1CO29CQUNuQixNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBRWxDLE1BQU0sS0FBSyxHQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQzt5QkFDbEUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyw4Q0FBOEM7b0JBRWpGLG1DQUFtQztvQkFDbkMsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDO3dCQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUU5QyxlQUFlO29CQUNmLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUVyRSxpQkFBaUI7b0JBQ2pCLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTt3QkFDakIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNoRCxNQUFNLEVBQUMsT0FBTyxFQUFFLG1CQUFtQixFQUFDLENBQUM7cUJBQ3RDO29CQUVELGVBQWU7b0JBQ2YsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUM3QztnQkFDRCxPQUFPLEdBQUcsRUFBRTtvQkFDVixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUM7aUJBQzFDO2FBQ0Y7b0JBQVM7Z0JBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDeEI7UUFDSCxDQUFDO0tBQUE7SUFFRCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVTLFVBQVU7UUFDbEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7OztZQTlGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsa21EQUFtRDtnQkFFbkQsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7O1lBeEJPLGlCQUFpQjtZQUlqQixnQkFBZ0I7WUFMUyxpQkFBaUI7Ozt1QkE0Qi9DLFNBQVMsU0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzRCQUV0QyxLQUFLO29CQUNMLEtBQUs7eUJBQ0wsS0FBSzs0QkFDTCxLQUFLO3VCQUNMLEtBQUs7dUJBQ0wsS0FBSztnQ0FDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQb3BvdmVyQ29udHJvbGxlcn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtVcGxvYWRGaWxlQ29tcG9uZW50fSBmcm9tICcuL3VwbG9hZC1maWxlLmNvbXBvbmVudCc7XG5pbXBvcnQge0ZpbGVEZWxldGVGbiwgRmlsZVVwbG9hZEZuLCBVcGxvYWRGaWxlfSBmcm9tICcuL3VwbG9hZC1maWxlLm1vZGVsJztcbmltcG9ydCB7aXNFbXB0eUFycmF5LCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsT3JCbGFua30gZnJvbSAnLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkRmlsZVBvcG92ZXJPcHRpb25zPFQ+IHtcbiAgdGl0bGU/OiBzdHJpbmc7XG5cbiAgdXBsb2FkRm46IEZpbGVVcGxvYWRGbjxUPjtcbiAgZGVsZXRlRm4/OiBGaWxlRGVsZXRlRm48YW55PjtcblxuICBpbnN0YW50VXBsb2FkPzogYm9vbGVhbjtcbiAgdW5pcXVlRmlsZT86IGJvb2xlYW47XG4gIGZpbGVFeHRlbnNpb24/OiBzdHJpbmc7XG4gIG1heFBhcmFsbGVsVXBsb2FkPzogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdXBsb2FkLWZpbGUtcG9wb3ZlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtZmlsZS1wb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLWZpbGUtcG9wb3Zlci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkRmlsZVBvcG92ZXIgaW1wbGVtZW50cyBVcGxvYWRGaWxlUG9wb3Zlck9wdGlvbnM8YW55PiB7XG5cbiAgQFZpZXdDaGlsZCgndXBsb2FkZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSB1cGxvYWRlcjogVXBsb2FkRmlsZUNvbXBvbmVudDtcblxuICBASW5wdXQoKSBmaWxlRXh0ZW5zaW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHVuaXF1ZUZpbGUgPSBmYWxzZTtcbiAgQElucHV0KCkgaW5zdGFudFVwbG9hZCA9IGZhbHNlO1xuICBASW5wdXQoKSB1cGxvYWRGbjogRmlsZVVwbG9hZEZuPGFueT47XG4gIEBJbnB1dCgpIGRlbGV0ZUZuOiBGaWxlRGVsZXRlRm48YW55PjtcbiAgQElucHV0KCkgbWF4UGFyYWxsZWxVcGxvYWQ6IG51bWJlcjtcblxuICBpbXBvcnRpbmcgPSBmYWxzZTtcbiAgZXJyb3I6IHN0cmluZztcblxuICBnZXQgZmlsZXMoKTogVXBsb2FkRmlsZTxhbnk+W10ge1xuICAgIHJldHVybiB0aGlzLnVwbG9hZGVyLmZpbGVzO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmltcG9ydGluZyB8fCBpc0VtcHR5QXJyYXkodGhpcy5maWxlcyk7XG4gIH1cblxuICBnZXQgdmFsaWQoKSB7XG4gICAgcmV0dXJuIGlzTm90RW1wdHlBcnJheSh0aGlzLmZpbGVzKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBwb3BvdmVyQ29udHJvbGxlcjogUG9wb3ZlckNvbnRyb2xsZXIsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG4gIGFzeW5jIG9uVmFsaWRhdGUoZXZlbnQ6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgLy8gQXZvaWQgbXVsdGlwbGUgY2FsbFxuICAgIGlmICh0aGlzLmltcG9ydGluZykgcmV0dXJuO1xuXG4gICAgY29uc29sZS5kZWJ1ZygnW3VwbG9hZC1maWxlLXBvcG92ZXJdIFZhbGlkYXRlIGZvcm06IHdpbGwgdXBsb2FkIGFsbCBmaWxlcy4uLicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuaW1wb3J0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVzZXRFcnJvcigpO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBXYWl0IHByb2Nlc3NpbmcgZmlsZXMgZmluaXNoZWRcbiAgICAgICAgYXdhaXQgdGhpcy51cGxvYWRlci53YWl0SWRsZSgpO1xuXG4gICAgICAgIC8vIHVwbG9hZCBhbGwgZmlsZXNcbiAgICAgICAgYXdhaXQgdGhpcy51cGxvYWRlci51cGxvYWRGaWxlcygpO1xuXG4gICAgICAgIGNvbnN0IGZpbGVzOiBVcGxvYWRGaWxlPGFueT5bXSA9ICh0aGlzLnVwbG9hZGVyLnByb2Nlc3NlZEZpbGVzIHx8IFtdKVxuICAgICAgICAgIC5maWx0ZXIoZmlsZSA9PiAhZmlsZS5kZWxldGluZyk7IC8vIFJlbW92ZSBkZWxldGluZyBmaWxlIChkZWxldGlvbiBpbiBwcm9ncmVzcylcblxuICAgICAgICAvLyBOb3RoaW5nIHRvIHVwbG9hZDogY2xvc2UgcG9wb3ZlclxuICAgICAgICBpZiAoaXNFbXB0eUFycmF5KGZpbGVzKSkgcmV0dXJuIHRoaXMuY2FuY2VsKCk7XG5cbiAgICAgICAgLy8gY2hlY2sgZXJyb3JzXG4gICAgICAgIGNvbnN0IGVycm9ycyA9IGZpbGVzLm1hcChmaWxlID0+IGZpbGUuZXJyb3IpLmZpbHRlcihpc05vdE5pbE9yQmxhbmspO1xuXG4gICAgICAgIC8vIElmIGVycm9yOiBzdG9wXG4gICAgICAgIGlmIChlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgZXJyb3JzLmZvckVhY2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKGVycm9yKSk7XG4gICAgICAgICAgdGhyb3cge21lc3NhZ2U6ICdGSUxFLlVQTE9BRC5FUlJPUid9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmV0dXJuIGZpbGVzXG4gICAgICAgIGF3YWl0IHRoaXMucG9wb3ZlckNvbnRyb2xsZXIuZGlzbWlzcyhmaWxlcyk7XG4gICAgICB9XG4gICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSAoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnI7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaW1wb3J0aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wb3BvdmVyQ29udHJvbGxlci5kaXNtaXNzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzZXRFcnJvcigpIHtcbiAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxufVxuIl19
|