@sumaris-net/ngx-components 18.23.63 → 21.0.0-rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/doc/build.md +3 -5
- package/fesm2022/sumaris-net.ngx-components.mjs +2382 -2150
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +15 -15
- package/src/assets/environments/environment-test.json +2 -2
- package/src/assets/i18n/fr.json +6 -5
- package/src/assets/manifest.json +1 -1
- package/src/theme/_icons.scss +8 -12
- package/src/theme/_ionic.globals.scss +8 -1
- package/src/theme/_material.globals.scss +4 -1
- package/src/theme/_material.scss +16 -13
- package/src/theme/_mixins.scss +7 -1
- package/src/theme/_ngx-components.forms.scss +87 -84
- package/src/theme/_ngx-components.globals.scss +2 -0
- package/src/theme/_ngx-components.scss +19 -4
- package/src/theme/_ngx-components.table.scss +31 -26
- package/src/theme/_ngx-components.tabs.scss +16 -14
- package/src/theme/_responsive.scss +2 -0
- package/src/theme/_roboto.scss +3 -0
- package/src/theme/_theme.scss +11 -14
- package/src/theme/_theme.variables.scss +6 -1
- package/src/theme/ionic/ionic.functions.color.scss +13 -5
- package/src/theme/ionic/ionic.globals.scss +4 -4
- package/src/theme/ionic/ionic.theme.default.scss +2 -0
- package/types/sumaris-net.ngx-components.d.ts +14132 -0
- package/esm2022/public_api.mjs +0 -403
- package/esm2022/src/app/admin/admin-routing.module.mjs +0 -34
- package/esm2022/src/app/admin/admin.module.mjs +0 -32
- package/esm2022/src/app/admin/users/person.filter.mjs +0 -157
- package/esm2022/src/app/admin/users/person.service.mjs +0 -226
- package/esm2022/src/app/admin/users/person.validator.mjs +0 -78
- package/esm2022/src/app/admin/users/users-select.modal.mjs +0 -167
- package/esm2022/src/app/admin/users/users.mjs +0 -502
- package/esm2022/src/app/admin/users/users.module.mjs +0 -59
- package/esm2022/src/app/admin/users/users.utils.mjs +0 -29
- package/esm2022/src/app/core/about/about.modal.mjs +0 -119
- package/esm2022/src/app/core/about/about.module.mjs +0 -22
- package/esm2022/src/app/core/account/account.module.mjs +0 -75
- package/esm2022/src/app/core/account/account.page.mjs +0 -426
- package/esm2022/src/app/core/account/new-token.form.mjs +0 -109
- package/esm2022/src/app/core/account/new-token.modal.mjs +0 -66
- package/esm2022/src/app/core/account/password/change-password.form.mjs +0 -63
- package/esm2022/src/app/core/account/password/change-password.module.mjs +0 -22
- package/esm2022/src/app/core/account/password/change-password.page.mjs +0 -150
- package/esm2022/src/app/core/account/token.table.mjs +0 -160
- package/esm2022/src/app/core/auth/auth.form.mjs +0 -159
- package/esm2022/src/app/core/auth/auth.modal.mjs +0 -76
- package/esm2022/src/app/core/auth/auth.module.mjs +0 -56
- package/esm2022/src/app/core/auth/reset-password.modal.mjs +0 -89
- package/esm2022/src/app/core/core.module.mjs +0 -157
- package/esm2022/src/app/core/core.testing.module.mjs +0 -128
- package/esm2022/src/app/core/form/array/form-array.mjs +0 -328
- package/esm2022/src/app/core/form/array/testing/form-array-test.module.mjs +0 -23
- package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +0 -97
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +0 -111
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +0 -31
- package/esm2022/src/app/core/form/entity/editor.class.mjs +0 -268
- package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +0 -420
- package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +0 -748
- package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +0 -25
- package/esm2022/src/app/core/form/entity/entity.module.mjs +0 -33
- package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +0 -190
- package/esm2022/src/app/core/form/form-container.class.mjs +0 -347
- package/esm2022/src/app/core/form/form.class.mjs +0 -342
- package/esm2022/src/app/core/form/form.module.mjs +0 -77
- package/esm2022/src/app/core/form/form.utils.mjs +0 -238
- package/esm2022/src/app/core/form/list/list.form.mjs +0 -243
- package/esm2022/src/app/core/form/list/list.module.mjs +0 -31
- package/esm2022/src/app/core/form/properties/properties-file.service.mjs +0 -133
- package/esm2022/src/app/core/form/properties/properties.form.mjs +0 -397
- package/esm2022/src/app/core/form/properties/properties.module.mjs +0 -85
- package/esm2022/src/app/core/form/properties/properties.table.mjs +0 -267
- package/esm2022/src/app/core/form/properties/properties.utils.mjs +0 -304
- package/esm2022/src/app/core/form/properties/property.validator.mjs +0 -70
- package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +0 -103
- package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +0 -23
- package/esm2022/src/app/core/form/text/testing/text-form.testing.mjs +0 -42
- package/esm2022/src/app/core/form/text/testing/text-form.testing.module.mjs +0 -25
- package/esm2022/src/app/core/form/text/text-form.component.mjs +0 -205
- package/esm2022/src/app/core/form/text/text-form.module.mjs +0 -31
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +0 -73
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +0 -22
- package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +0 -164
- package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +0 -32
- package/esm2022/src/app/core/form/username/username.form.mjs +0 -55
- package/esm2022/src/app/core/form/username/username.module.mjs +0 -20
- package/esm2022/src/app/core/graphql/graphql.module.mjs +0 -14
- package/esm2022/src/app/core/graphql/graphql.service.mjs +0 -781
- package/esm2022/src/app/core/graphql/graphql.utils.mjs +0 -119
- package/esm2022/src/app/core/home/home.mjs +0 -472
- package/esm2022/src/app/core/home/home.module.mjs +0 -54
- package/esm2022/src/app/core/icon/icon.component.mjs +0 -40
- package/esm2022/src/app/core/icon/icon.module.mjs +0 -20
- package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +0 -394
- package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +0 -31
- package/esm2022/src/app/core/menu/menu.component.mjs +0 -273
- package/esm2022/src/app/core/menu/menu.model.mjs +0 -328
- package/esm2022/src/app/core/menu/menu.module.mjs +0 -47
- package/esm2022/src/app/core/menu/menu.service.mjs +0 -666
- package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +0 -113
- package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +0 -51
- package/esm2022/src/app/core/menu/testing/menu.testing.mjs +0 -165
- package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +0 -60
- package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +0 -28
- package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +0 -31
- package/esm2022/src/app/core/peer/select-peer.modal.mjs +0 -350
- package/esm2022/src/app/core/peer/select-peer.module.mjs +0 -36
- package/esm2022/src/app/core/register/register-confirm.page.mjs +0 -90
- package/esm2022/src/app/core/register/register.form.mjs +0 -197
- package/esm2022/src/app/core/register/register.modal.mjs +0 -55
- package/esm2022/src/app/core/register/register.module.mjs +0 -23
- package/esm2022/src/app/core/services/account.service.mjs +0 -1403
- package/esm2022/src/app/core/services/auth-guard.service.mjs +0 -74
- package/esm2022/src/app/core/services/base-entity-service.class.mjs +0 -499
- package/esm2022/src/app/core/services/base-graphql-service.class.mjs +0 -224
- package/esm2022/src/app/core/services/base58.mjs +0 -83
- package/esm2022/src/app/core/services/config/core.config.mjs +0 -293
- package/esm2022/src/app/core/services/config.service.mjs +0 -384
- package/esm2022/src/app/core/services/crypto.service.mjs +0 -107
- package/esm2022/src/app/core/services/errors.mjs +0 -54
- package/esm2022/src/app/core/services/local-settings.service.mjs +0 -540
- package/esm2022/src/app/core/services/model/account.model.mjs +0 -192
- package/esm2022/src/app/core/services/model/config.model.mjs +0 -111
- package/esm2022/src/app/core/services/model/department.model.mjs +0 -35
- package/esm2022/src/app/core/services/model/entity.decorators.mjs +0 -97
- package/esm2022/src/app/core/services/model/entity.model.mjs +0 -347
- package/esm2022/src/app/core/services/model/filter.model.mjs +0 -169
- package/esm2022/src/app/core/services/model/history.model.mjs +0 -2
- package/esm2022/src/app/core/services/model/model.enum.mjs +0 -11
- package/esm2022/src/app/core/services/model/node-feature.model.mjs +0 -31
- package/esm2022/src/app/core/services/model/peer.model.mjs +0 -114
- package/esm2022/src/app/core/services/model/person.model.mjs +0 -118
- package/esm2022/src/app/core/services/model/referential.model.mjs +0 -207
- package/esm2022/src/app/core/services/model/settings.model.mjs +0 -6
- package/esm2022/src/app/core/services/model/token.model.mjs +0 -57
- package/esm2022/src/app/core/services/model/tree-item-entity.model.mjs +0 -234
- package/esm2022/src/app/core/services/network.service.mjs +0 -759
- package/esm2022/src/app/core/services/network.types.mjs +0 -2
- package/esm2022/src/app/core/services/network.utils.mjs +0 -35
- package/esm2022/src/app/core/services/pipes/account.pipes.mjs +0 -38
- package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +0 -23
- package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +0 -23
- package/esm2022/src/app/core/services/pipes/pipes.module.mjs +0 -58
- package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +0 -36
- package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +0 -37
- package/esm2022/src/app/core/services/platform.service.mjs +0 -780
- package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +0 -427
- package/esm2022/src/app/core/services/storage/entity-store.class.mjs +0 -450
- package/esm2022/src/app/core/services/testing/referential-filter.model.mjs +0 -25
- package/esm2022/src/app/core/services/testing/referential.validator.mjs +0 -46
- package/esm2022/src/app/core/services/validator/account.validator.mjs +0 -46
- package/esm2022/src/app/core/services/validator/base.validator.class.mjs +0 -49
- package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +0 -57
- package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +0 -27
- package/esm2022/src/app/core/services/validator/user-token.validator.mjs +0 -55
- package/esm2022/src/app/core/settings/settings.module.mjs +0 -23
- package/esm2022/src/app/core/settings/settings.page.mjs +0 -406
- package/esm2022/src/app/core/table/async-table.class.mjs +0 -1882
- package/esm2022/src/app/core/table/column/actions-column.component.mjs +0 -137
- package/esm2022/src/app/core/table/column/nav-actions-column.component.mjs +0 -120
- package/esm2022/src/app/core/table/column/row-field.component.mjs +0 -116
- package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +0 -415
- package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +0 -407
- package/esm2022/src/app/core/table/memory-table.class.mjs +0 -57
- package/esm2022/src/app/core/table/table-select-columns.component.mjs +0 -46
- package/esm2022/src/app/core/table/table.class.mjs +0 -1918
- package/esm2022/src/app/core/table/table.model.mjs +0 -21
- package/esm2022/src/app/core/table/table.module.mjs +0 -51
- package/esm2022/src/app/core/table/table.pipes.mjs +0 -76
- package/esm2022/src/app/core/table/table.utils.mjs +0 -34
- package/esm2022/src/app/core/table/testing/nested-table.testing.mjs +0 -326
- package/esm2022/src/app/core/table/testing/table-validator.service.mjs +0 -32
- package/esm2022/src/app/core/table/testing/table.testing.mjs +0 -342
- package/esm2022/src/app/core/table/testing/table.testing.module.mjs +0 -47
- package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +0 -25
- package/esm2022/src/app/core/table/testing/table2.testing.mjs +0 -322
- package/esm2022/src/app/shared/alerts.mjs +0 -243
- package/esm2022/src/app/shared/audio/audio.mjs +0 -255
- package/esm2022/src/app/shared/audio/audio.testing.mjs +0 -32
- package/esm2022/src/app/shared/audio/audio.testing.module.mjs +0 -30
- package/esm2022/src/app/shared/base64.utils.mjs +0 -59
- package/esm2022/src/app/shared/capacitor/keyboard.mjs +0 -42
- package/esm2022/src/app/shared/capacitor/plugins.mjs +0 -10
- package/esm2022/src/app/shared/constants.mjs +0 -18
- package/esm2022/src/app/shared/dates.mjs +0 -212
- package/esm2022/src/app/shared/debug/debug-service.class.mjs +0 -3
- package/esm2022/src/app/shared/debug/debug.component.mjs +0 -44
- package/esm2022/src/app/shared/debug/debug.module.mjs +0 -23
- package/esm2022/src/app/shared/directives/autofocus.directive.mjs +0 -91
- package/esm2022/src/app/shared/directives/autoresize.directive.mjs +0 -75
- package/esm2022/src/app/shared/directives/autotitle.directive.mjs +0 -30
- package/esm2022/src/app/shared/directives/autotooltip.directive.mjs +0 -35
- package/esm2022/src/app/shared/directives/cell-selection/cell-identifier.directive.mjs +0 -55
- package/esm2022/src/app/shared/directives/cell-selection/cell-selection.directive.mjs +0 -206
- package/esm2022/src/app/shared/directives/cell-selection/cell-selection.service.mjs +0 -204
- package/esm2022/src/app/shared/directives/directives.module.mjs +0 -53
- package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +0 -52
- package/esm2022/src/app/shared/directives/ng-var.directive.mjs +0 -33
- package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +0 -62
- package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +0 -96
- package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +0 -17
- package/esm2022/src/app/shared/directives/throttled-click.directive.mjs +0 -43
- package/esm2022/src/app/shared/events.mjs +0 -64
- package/esm2022/src/app/shared/file/csv.utils.mjs +0 -97
- package/esm2022/src/app/shared/file/file.service.mjs +0 -118
- package/esm2022/src/app/shared/file/file.utils.mjs +0 -117
- package/esm2022/src/app/shared/file/images.utils.mjs +0 -186
- package/esm2022/src/app/shared/file/json.utils.mjs +0 -58
- package/esm2022/src/app/shared/file/uri.utils.mjs +0 -29
- package/esm2022/src/app/shared/file/url.utils.mjs +0 -213
- package/esm2022/src/app/shared/focusable.mjs +0 -6
- package/esm2022/src/app/shared/form/field.component.mjs +0 -388
- package/esm2022/src/app/shared/form/field.model.mjs +0 -100
- package/esm2022/src/app/shared/form/loading-spinner.mjs +0 -35
- package/esm2022/src/app/shared/forms.mjs +0 -593
- package/esm2022/src/app/shared/functions.mjs +0 -825
- package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +0 -94
- package/esm2022/src/app/shared/gesture/gesture-config.mjs +0 -46
- package/esm2022/src/app/shared/gesture/hammer.utils.mjs +0 -2
- package/esm2022/src/app/shared/graph/colors.utils.mjs +0 -85
- package/esm2022/src/app/shared/graph/graph-colors.mjs +0 -214
- package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +0 -68
- package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +0 -23
- package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +0 -147
- package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +0 -24
- package/esm2022/src/app/shared/html.utils.mjs +0 -35
- package/esm2022/src/app/shared/http/http.utils.mjs +0 -56
- package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +0 -452
- package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +0 -62
- package/esm2022/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +0 -26
- package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +0 -92
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +0 -37
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +0 -59
- package/esm2022/src/app/shared/image/image.model.mjs +0 -2
- package/esm2022/src/app/shared/image/image.module.mjs +0 -24
- package/esm2022/src/app/shared/image/image.service.mjs +0 -117
- package/esm2022/src/app/shared/inputs.mjs +0 -281
- package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +0 -27
- package/esm2022/src/app/shared/logging/log-level.model.mjs +0 -48
- package/esm2022/src/app/shared/logging/logger.model.mjs +0 -47
- package/esm2022/src/app/shared/logging/logging-service.class.mjs +0 -125
- package/esm2022/src/app/shared/logging/logging-service.config.mjs +0 -2
- package/esm2022/src/app/shared/logging/logging-service.module.mjs +0 -30
- package/esm2022/src/app/shared/markdown/markdown.component.mjs +0 -321
- package/esm2022/src/app/shared/markdown/markdown.directive.mjs +0 -34
- package/esm2022/src/app/shared/markdown/markdown.modal.mjs +0 -99
- package/esm2022/src/app/shared/markdown/markdown.module.mjs +0 -87
- package/esm2022/src/app/shared/markdown/markdown.service.mjs +0 -204
- package/esm2022/src/app/shared/markdown/markdown.utils.mjs +0 -87
- package/esm2022/src/app/shared/markdown/testing/markdown.test.mjs +0 -55
- package/esm2022/src/app/shared/markdown/testing/markdown.testing.module.mjs +0 -30
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +0 -46
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +0 -1356
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +0 -81
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +0 -18
- package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +0 -242
- package/esm2022/src/app/shared/material/badge/badge.directive.mjs +0 -251
- package/esm2022/src/app/shared/material/badge/badge.module.mjs +0 -20
- package/esm2022/src/app/shared/material/badge/badge.test.mjs +0 -42
- package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +0 -70
- package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +0 -374
- package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +0 -83
- package/esm2022/src/app/shared/material/chips/chips.module.mjs +0 -74
- package/esm2022/src/app/shared/material/chips/material.chips.mjs +0 -843
- package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +0 -151
- package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +0 -79
- package/esm2022/src/app/shared/material/datetime/material.date.mjs +0 -473
- package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +0 -457
- package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +0 -850
- package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +0 -140
- package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +0 -127
- package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +0 -118
- package/esm2022/src/app/shared/material/duration/duration.module.mjs +0 -61
- package/esm2022/src/app/shared/material/duration/duration.utils.mjs +0 -16
- package/esm2022/src/app/shared/material/duration/material.duration.mjs +0 -283
- package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +0 -85
- package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +0 -319
- package/esm2022/src/app/shared/material/latlong/material.latlong-input.mjs +0 -471
- package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +0 -231
- package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +0 -68
- package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +0 -138
- package/esm2022/src/app/shared/material/material.animations.mjs +0 -200
- package/esm2022/src/app/shared/material/material.config.mjs +0 -3
- package/esm2022/src/app/shared/material/material.module.mjs +0 -224
- package/esm2022/src/app/shared/material/material.testing.module.mjs +0 -234
- package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +0 -51
- package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +0 -23
- package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +0 -379
- package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +0 -52
- package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +0 -67
- package/esm2022/src/app/shared/material/test/test-component.mjs +0 -264
- package/esm2022/src/app/shared/material/testing/common.test.mjs +0 -111
- package/esm2022/src/app/shared/modules.mjs +0 -12
- package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +0 -306
- package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +0 -49
- package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +0 -24
- package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +0 -69
- package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +0 -74
- package/esm2022/src/app/shared/named-filter/testing/named-filter.testing.module.mjs +0 -28
- package/esm2022/src/app/shared/observables.mjs +0 -104
- package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +0 -251
- package/esm2022/src/app/shared/pipes/badge.pipes.mjs +0 -25
- package/esm2022/src/app/shared/pipes/colors.pipe.mjs +0 -29
- package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +0 -50
- package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +0 -72
- package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +0 -28
- package/esm2022/src/app/shared/pipes/date-from.pipe.mjs +0 -29
- package/esm2022/src/app/shared/pipes/dates.pipe.mjs +0 -18
- package/esm2022/src/app/shared/pipes/display-with.pipe.mjs +0 -23
- package/esm2022/src/app/shared/pipes/duration.pipe.mjs +0 -34
- package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +0 -53
- package/esm2022/src/app/shared/pipes/form.pipes.mjs +0 -219
- package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +0 -50
- package/esm2022/src/app/shared/pipes/html.pipes.mjs +0 -102
- package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +0 -42
- package/esm2022/src/app/shared/pipes/maps.pipe.mjs +0 -65
- package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +0 -67
- package/esm2022/src/app/shared/pipes/math.pipes.mjs +0 -77
- package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +0 -19
- package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +0 -17
- package/esm2022/src/app/shared/pipes/observable.pipes.mjs +0 -63
- package/esm2022/src/app/shared/pipes/pipes.module.mjs +0 -304
- package/esm2022/src/app/shared/pipes/property.pipes.mjs +0 -148
- package/esm2022/src/app/shared/pipes/selection.pipes.mjs +0 -177
- package/esm2022/src/app/shared/pipes/string.pipes.mjs +0 -183
- package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +0 -44
- package/esm2022/src/app/shared/pipes/types.pipes.mjs +0 -74
- package/esm2022/src/app/shared/pipes/url.pipes.mjs +0 -35
- package/esm2022/src/app/shared/platforms.mjs +0 -81
- package/esm2022/src/app/shared/print/print.service.mjs +0 -305
- package/esm2022/src/app/shared/regexps.mjs +0 -103
- package/esm2022/src/app/shared/rx-state/rx-state.decorators.mjs +0 -193
- package/esm2022/src/app/shared/rx-state/rx-state.module.mjs +0 -19
- package/esm2022/src/app/shared/rx-state/rx-state.types.mjs +0 -2
- package/esm2022/src/app/shared/services/entity-service.class.mjs +0 -44
- package/esm2022/src/app/shared/services/job.utils.mjs +0 -92
- package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +0 -362
- package/esm2022/src/app/shared/services/progress-bar.service.mjs +0 -31
- package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +0 -144
- package/esm2022/src/app/shared/services/startable-service.class.mjs +0 -118
- package/esm2022/src/app/shared/services/translate-context.service.mjs +0 -107
- package/esm2022/src/app/shared/services/validator-service.class.mjs +0 -2
- package/esm2022/src/app/shared/services.mjs +0 -85
- package/esm2022/src/app/shared/shared-routing.module.mjs +0 -72
- package/esm2022/src/app/shared/shared.module.mjs +0 -229
- package/esm2022/src/app/shared/shared.testing.module.mjs +0 -108
- package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +0 -281
- package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +0 -42
- package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +0 -27
- package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +0 -25
- package/esm2022/src/app/shared/storage/storage.service.mjs +0 -134
- package/esm2022/src/app/shared/storage/storage.utils.mjs +0 -13
- package/esm2022/src/app/shared/testing/maskito.test.mjs +0 -41
- package/esm2022/src/app/shared/testing/observable.test.mjs +0 -94
- package/esm2022/src/app/shared/testing/tests.page.mjs +0 -37
- package/esm2022/src/app/shared/toast/toast.testing.mjs +0 -54
- package/esm2022/src/app/shared/toast/toast.testing.module.mjs +0 -31
- package/esm2022/src/app/shared/toast/toasts.mjs +0 -134
- package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +0 -62
- package/esm2022/src/app/shared/toolbar/toolbar.mjs +0 -272
- package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +0 -26
- package/esm2022/src/app/shared/types.mjs +0 -2
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +0 -59
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +0 -30
- package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +0 -108
- package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +0 -216
- package/esm2022/src/app/shared/upload-file/upload-file.model.mjs +0 -26
- package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +0 -122
- package/esm2022/src/app/shared/validator/validators.mjs +0 -658
- package/esm2022/src/app/shared/version/versions.mjs +0 -81
- package/esm2022/src/app/social/config/social.config.mjs +0 -9
- package/esm2022/src/app/social/feed/feed.component.mjs +0 -317
- package/esm2022/src/app/social/feed/feed.directive.mjs +0 -151
- package/esm2022/src/app/social/feed/feed.model.mjs +0 -60
- package/esm2022/src/app/social/feed/feed.module.mjs +0 -24
- package/esm2022/src/app/social/feed/feed.page.mjs +0 -67
- package/esm2022/src/app/social/feed/feed.service.mjs +0 -222
- package/esm2022/src/app/social/feed/testing/feed.testing.mjs +0 -66
- package/esm2022/src/app/social/feed/testing/feed.testing.module.mjs +0 -23
- package/esm2022/src/app/social/job/job.module.mjs +0 -23
- package/esm2022/src/app/social/job/progression/job-progression.component.mjs +0 -38
- package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +0 -241
- package/esm2022/src/app/social/job/progression/job-progression.list.mjs +0 -50
- package/esm2022/src/app/social/job/progression/job-progression.model.mjs +0 -29
- package/esm2022/src/app/social/job/progression/job-progression.service.mjs +0 -91
- package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +0 -38
- package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +0 -34
- package/esm2022/src/app/social/job/testing/job.testing.module.mjs +0 -22
- package/esm2022/src/app/social/message/message.form.mjs +0 -149
- package/esm2022/src/app/social/message/message.modal.mjs +0 -116
- package/esm2022/src/app/social/message/message.model.mjs +0 -86
- package/esm2022/src/app/social/message/message.module.mjs +0 -25
- package/esm2022/src/app/social/message/message.service.mjs +0 -198
- package/esm2022/src/app/social/social.errors.mjs +0 -11
- package/esm2022/src/app/social/social.module.mjs +0 -22
- package/esm2022/src/app/social/social.testing.module.mjs +0 -72
- package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +0 -191
- package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +0 -280
- package/esm2022/src/app/social/user-event/notification/user-event-notification.modal.mjs +0 -84
- package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +0 -273
- package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +0 -129
- package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +0 -22
- package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +0 -128
- package/esm2022/src/app/social/user-event/user-event.model.mjs +0 -2
- package/esm2022/src/app/social/user-event/user-event.module.mjs +0 -24
- package/esm2022/src/app/social/user-event/user-event.service.mjs +0 -512
- package/esm2022/src/environments/environment.class.mjs +0 -69
- package/esm2022/src/environments/environment.loader.mjs +0 -77
- package/esm2022/src/environments/environment.mjs +0 -133
- package/esm2022/sumaris-net.ngx-components.mjs +0 -5
- package/index.d.ts +0 -5
- package/public_api.d.ts +0 -364
- package/src/app/admin/admin-routing.module.d.ts +0 -9
- package/src/app/admin/admin.module.d.ts +0 -10
- package/src/app/admin/users/person.filter.d.ts +0 -37
- package/src/app/admin/users/person.service.d.ts +0 -61
- package/src/app/admin/users/person.validator.d.ts +0 -23
- package/src/app/admin/users/users-select.modal.d.ts +0 -73
- package/src/app/admin/users/users.d.ts +0 -89
- package/src/app/admin/users/users.module.d.ts +0 -15
- package/src/app/admin/users/users.utils.d.ts +0 -6
- package/src/app/core/about/about.modal.d.ts +0 -44
- package/src/app/core/about/about.module.d.ts +0 -11
- package/src/app/core/account/account.module.d.ts +0 -18
- package/src/app/core/account/account.page.d.ts +0 -93
- package/src/app/core/account/new-token.form.d.ts +0 -30
- package/src/app/core/account/new-token.modal.d.ts +0 -29
- package/src/app/core/account/password/change-password.form.d.ts +0 -19
- package/src/app/core/account/password/change-password.module.d.ts +0 -11
- package/src/app/core/account/password/change-password.page.d.ts +0 -36
- package/src/app/core/account/token.table.d.ts +0 -28
- package/src/app/core/auth/auth.form.d.ts +0 -38
- package/src/app/core/auth/auth.modal.d.ts +0 -24
- package/src/app/core/auth/auth.module.d.ts +0 -13
- package/src/app/core/auth/reset-password.modal.d.ts +0 -29
- package/src/app/core/core.module.d.ts +0 -28
- package/src/app/core/core.testing.module.d.ts +0 -16
- package/src/app/core/form/array/form-array.d.ts +0 -147
- package/src/app/core/form/array/testing/form-array-test.module.d.ts +0 -12
- package/src/app/core/form/array/testing/form-array.test.d.ts +0 -27
- package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +0 -38
- package/src/app/core/form/buttons/form-buttons-bar.module.d.ts +0 -9
- package/src/app/core/form/entity/editor.class.d.ts +0 -85
- package/src/app/core/form/entity/entity-editor-modal.class.d.ts +0 -126
- package/src/app/core/form/entity/entity-editor.class.d.ts +0 -211
- package/src/app/core/form/entity/entity-metadata.component.d.ts +0 -13
- package/src/app/core/form/entity/entity.module.d.ts +0 -11
- package/src/app/core/form/entity/tab-editor.class.d.ts +0 -66
- package/src/app/core/form/form-container.class.d.ts +0 -131
- package/src/app/core/form/form.class.d.ts +0 -148
- package/src/app/core/form/form.module.d.ts +0 -15
- package/src/app/core/form/form.utils.d.ts +0 -301
- package/src/app/core/form/list/list.form.d.ts +0 -83
- package/src/app/core/form/list/list.module.d.ts +0 -9
- package/src/app/core/form/properties/properties-file.service.d.ts +0 -26
- package/src/app/core/form/properties/properties.form.d.ts +0 -109
- package/src/app/core/form/properties/properties.module.d.ts +0 -18
- package/src/app/core/form/properties/properties.table.d.ts +0 -73
- package/src/app/core/form/properties/properties.utils.d.ts +0 -59
- package/src/app/core/form/properties/property.validator.d.ts +0 -27
- package/src/app/core/form/properties/testing/properties-form.test.d.ts +0 -22
- package/src/app/core/form/properties/testing/properties-form.testing.module.d.ts +0 -12
- package/src/app/core/form/text/testing/text-form.testing.d.ts +0 -19
- package/src/app/core/form/text/testing/text-form.testing.module.d.ts +0 -14
- package/src/app/core/form/text/text-form.component.d.ts +0 -66
- package/src/app/core/form/text/text-form.module.d.ts +0 -9
- package/src/app/core/form/text-popover/testing/text-popover.testing.d.ts +0 -16
- package/src/app/core/form/text-popover/testing/text-popover.testing.module.d.ts +0 -11
- package/src/app/core/form/text-popover/text-popover.component.d.ts +0 -81
- package/src/app/core/form/text-popover/text-popover.module.d.ts +0 -10
- package/src/app/core/form/username/username.form.d.ts +0 -19
- package/src/app/core/form/username/username.module.d.ts +0 -9
- package/src/app/core/graphql/graphql.module.d.ts +0 -7
- package/src/app/core/graphql/graphql.service.d.ts +0 -138
- package/src/app/core/graphql/graphql.utils.d.ts +0 -47
- package/src/app/core/home/home.d.ts +0 -135
- package/src/app/core/home/home.module.d.ts +0 -16
- package/src/app/core/icon/icon.component.d.ts +0 -13
- package/src/app/core/icon/icon.module.d.ts +0 -9
- package/src/app/core/install/install-upgrade-card.component.d.ts +0 -63
- package/src/app/core/install/install-upgrade-card.module.d.ts +0 -9
- package/src/app/core/menu/menu.component.d.ts +0 -69
- package/src/app/core/menu/menu.model.d.ts +0 -163
- package/src/app/core/menu/menu.module.d.ts +0 -12
- package/src/app/core/menu/menu.service.d.ts +0 -93
- package/src/app/core/menu/sub-menu-tab.directive.d.ts +0 -29
- package/src/app/core/menu/testing/menu-other.testing.d.ts +0 -15
- package/src/app/core/menu/testing/menu.testing.d.ts +0 -53
- package/src/app/core/menu/testing/menu.testing.module.d.ts +0 -12
- package/src/app/core/offline/update-offline-mode-card.component.d.ts +0 -11
- package/src/app/core/offline/update-offline-mode-card.module.d.ts +0 -9
- package/src/app/core/peer/select-peer.modal.d.ts +0 -108
- package/src/app/core/peer/select-peer.module.d.ts +0 -12
- package/src/app/core/register/register-confirm.page.d.ts +0 -24
- package/src/app/core/register/register.form.d.ts +0 -49
- package/src/app/core/register/register.modal.d.ts +0 -14
- package/src/app/core/register/register.module.d.ts +0 -12
- package/src/app/core/services/account.service.d.ts +0 -236
- package/src/app/core/services/auth-guard.service.d.ts +0 -17
- package/src/app/core/services/base-entity-service.class.d.ts +0 -134
- package/src/app/core/services/base-graphql-service.class.d.ts +0 -77
- package/src/app/core/services/base58.d.ts +0 -7
- package/src/app/core/services/config/core.config.d.ts +0 -52
- package/src/app/core/services/config.service.d.ts +0 -63
- package/src/app/core/services/crypto.service.d.ts +0 -44
- package/src/app/core/services/errors.d.ts +0 -65
- package/src/app/core/services/local-settings.service.d.ts +0 -130
- package/src/app/core/services/model/account.model.d.ts +0 -66
- package/src/app/core/services/model/config.model.d.ts +0 -37
- package/src/app/core/services/model/department.model.d.ts +0 -11
- package/src/app/core/services/model/entity.decorators.d.ts +0 -17
- package/src/app/core/services/model/entity.model.d.ts +0 -133
- package/src/app/core/services/model/filter.model.d.ts +0 -37
- package/src/app/core/services/model/history.model.d.ts +0 -20
- package/src/app/core/services/model/model.enum.d.ts +0 -7
- package/src/app/core/services/model/node-feature.model.d.ts +0 -14
- package/src/app/core/services/model/peer.model.d.ts +0 -35
- package/src/app/core/services/model/person.model.d.ts +0 -39
- package/src/app/core/services/model/referential.model.d.ts +0 -85
- package/src/app/core/services/model/settings.model.d.ts +0 -29
- package/src/app/core/services/model/token.model.d.ts +0 -22
- package/src/app/core/services/model/tree-item-entity.model.d.ts +0 -62
- package/src/app/core/services/network.service.d.ts +0 -184
- package/src/app/core/services/network.types.d.ts +0 -4
- package/src/app/core/services/network.utils.d.ts +0 -39
- package/src/app/core/services/pipes/account.pipes.d.ts +0 -15
- package/src/app/core/services/pipes/department-to-string.pipe.d.ts +0 -9
- package/src/app/core/services/pipes/person-to-string.pipe.d.ts +0 -11
- package/src/app/core/services/pipes/pipes.module.d.ts +0 -11
- package/src/app/core/services/pipes/referential-to-string.pipe.d.ts +0 -23
- package/src/app/core/services/pipes/usage-mode.pipes.d.ts +0 -15
- package/src/app/core/services/platform.service.d.ts +0 -126
- package/src/app/core/services/storage/entities-storage.service.d.ts +0 -108
- package/src/app/core/services/storage/entity-store.class.d.ts +0 -113
- package/src/app/core/services/testing/referential-filter.model.d.ts +0 -9
- package/src/app/core/services/testing/referential.validator.d.ts +0 -22
- package/src/app/core/services/validator/account.validator.d.ts +0 -24
- package/src/app/core/services/validator/base.validator.class.d.ts +0 -21
- package/src/app/core/services/validator/local-settings.validator.d.ts +0 -18
- package/src/app/core/services/validator/user-settings.validator.d.ts +0 -10
- package/src/app/core/services/validator/user-token.validator.d.ts +0 -13
- package/src/app/core/settings/settings.module.d.ts +0 -12
- package/src/app/core/settings/settings.page.d.ts +0 -89
- package/src/app/core/table/async-table.class.d.ts +0 -443
- package/src/app/core/table/column/actions-column.component.d.ts +0 -65
- package/src/app/core/table/column/nav-actions-column.component.d.ts +0 -47
- package/src/app/core/table/column/row-field.component.d.ts +0 -41
- package/src/app/core/table/entities-async-table-datasource.class.d.ts +0 -103
- package/src/app/core/table/entities-table-datasource.class.d.ts +0 -102
- package/src/app/core/table/memory-table.class.d.ts +0 -25
- package/src/app/core/table/table-select-columns.component.d.ts +0 -22
- package/src/app/core/table/table.class.d.ts +0 -427
- package/src/app/core/table/table.model.d.ts +0 -31
- package/src/app/core/table/table.module.d.ts +0 -14
- package/src/app/core/table/table.pipes.d.ts +0 -30
- package/src/app/core/table/table.utils.d.ts +0 -13
- package/src/app/core/table/testing/nested-table.testing.d.ts +0 -54
- package/src/app/core/table/testing/table-validator.service.d.ts +0 -17
- package/src/app/core/table/testing/table.testing.d.ts +0 -55
- package/src/app/core/table/testing/table.testing.module.d.ts +0 -17
- package/src/app/core/table/testing/table2-validator.service.d.ts +0 -15
- package/src/app/core/table/testing/table2.testing.d.ts +0 -53
- package/src/app/shared/alerts.d.ts +0 -55
- package/src/app/shared/audio/audio.d.ts +0 -45
- package/src/app/shared/audio/audio.testing.d.ts +0 -13
- package/src/app/shared/audio/audio.testing.module.d.ts +0 -11
- package/src/app/shared/base64.utils.d.ts +0 -7
- package/src/app/shared/capacitor/keyboard.d.ts +0 -16
- package/src/app/shared/capacitor/plugins.d.ts +0 -8
- package/src/app/shared/constants.d.ts +0 -15
- package/src/app/shared/dates.d.ts +0 -85
- package/src/app/shared/debug/debug-service.class.d.ts +0 -5
- package/src/app/shared/debug/debug.component.d.ts +0 -14
- package/src/app/shared/debug/debug.module.d.ts +0 -12
- package/src/app/shared/directives/autofocus.directive.d.ts +0 -18
- package/src/app/shared/directives/autoresize.directive.d.ts +0 -20
- package/src/app/shared/directives/autotitle.directive.d.ts +0 -11
- package/src/app/shared/directives/autotooltip.directive.d.ts +0 -14
- package/src/app/shared/directives/cell-selection/cell-identifier.directive.d.ts +0 -17
- package/src/app/shared/directives/cell-selection/cell-selection.directive.d.ts +0 -29
- package/src/app/shared/directives/cell-selection/cell-selection.service.d.ts +0 -67
- package/src/app/shared/directives/directives.module.d.ts +0 -15
- package/src/app/shared/directives/drag-and-drop.directive.d.ts +0 -17
- package/src/app/shared/directives/ng-var.directive.d.ts +0 -12
- package/src/app/shared/directives/resizable/resizable.component.d.ts +0 -21
- package/src/app/shared/directives/resizable/resizable.directive.d.ts +0 -24
- package/src/app/shared/directives/resizable/resizable.module.d.ts +0 -8
- package/src/app/shared/directives/throttled-click.directive.d.ts +0 -16
- package/src/app/shared/events.d.ts +0 -29
- package/src/app/shared/file/csv.utils.d.ts +0 -30
- package/src/app/shared/file/file.service.d.ts +0 -23
- package/src/app/shared/file/file.utils.d.ts +0 -20
- package/src/app/shared/file/images.utils.d.ts +0 -36
- package/src/app/shared/file/json.utils.d.ts +0 -19
- package/src/app/shared/file/uri.utils.d.ts +0 -8
- package/src/app/shared/file/url.utils.d.ts +0 -108
- package/src/app/shared/focusable.d.ts +0 -4
- package/src/app/shared/form/field.component.d.ts +0 -83
- package/src/app/shared/form/field.model.d.ts +0 -88
- package/src/app/shared/form/loading-spinner.d.ts +0 -8
- package/src/app/shared/forms.d.ts +0 -170
- package/src/app/shared/functions.d.ts +0 -296
- package/src/app/shared/geolocation/geolocation.utils.d.ts +0 -25
- package/src/app/shared/gesture/gesture-config.d.ts +0 -15
- package/src/app/shared/gesture/hammer.utils.d.ts +0 -16
- package/src/app/shared/graph/colors.utils.d.ts +0 -34
- package/src/app/shared/graph/graph-colors.d.ts +0 -63
- package/src/app/shared/guard/component-dirty.guard.d.ts +0 -14
- package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +0 -8
- package/src/app/shared/hotkeys/hotkeys.service.d.ts +0 -48
- package/src/app/shared/hotkeys/shared-hotkeys.module.d.ts +0 -11
- package/src/app/shared/html.utils.d.ts +0 -17
- package/src/app/shared/http/http.utils.d.ts +0 -28
- package/src/app/shared/image/gallery/image-gallery.component.d.ts +0 -139
- package/src/app/shared/image/gallery/image-gallery.module.d.ts +0 -15
- package/src/app/shared/image/gallery/testing/gallegry.model.testing.d.ts +0 -12
- package/src/app/shared/image/gallery/testing/gallery.service.testing.d.ts +0 -33
- package/src/app/shared/image/gallery/testing/gallery.testing.d.ts +0 -16
- package/src/app/shared/image/gallery/testing/gallery.testing.module.d.ts +0 -13
- package/src/app/shared/image/image.model.d.ts +0 -7
- package/src/app/shared/image/image.module.d.ts +0 -8
- package/src/app/shared/image/image.service.d.ts +0 -37
- package/src/app/shared/inputs.d.ts +0 -37
- package/src/app/shared/interceptors/progess.interceptor.d.ts +0 -8
- package/src/app/shared/logging/log-level.model.d.ts +0 -38
- package/src/app/shared/logging/logger.model.d.ts +0 -68
- package/src/app/shared/logging/logging-service.class.d.ts +0 -39
- package/src/app/shared/logging/logging-service.config.d.ts +0 -25
- package/src/app/shared/logging/logging-service.module.d.ts +0 -9
- package/src/app/shared/markdown/markdown.component.d.ts +0 -86
- package/src/app/shared/markdown/markdown.directive.d.ts +0 -13
- package/src/app/shared/markdown/markdown.modal.d.ts +0 -49
- package/src/app/shared/markdown/markdown.module.d.ts +0 -17
- package/src/app/shared/markdown/markdown.service.d.ts +0 -37
- package/src/app/shared/markdown/markdown.utils.d.ts +0 -26
- package/src/app/shared/markdown/testing/markdown.test.d.ts +0 -18
- package/src/app/shared/markdown/testing/markdown.testing.module.d.ts +0 -12
- package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +0 -74
- package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +0 -224
- package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +0 -23
- package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +0 -5
- package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +0 -48
- package/src/app/shared/material/badge/badge.directive.d.ts +0 -43
- package/src/app/shared/material/badge/badge.module.d.ts +0 -10
- package/src/app/shared/material/badge/badge.test.d.ts +0 -21
- package/src/app/shared/material/boolean/boolean.module.d.ts +0 -21
- package/src/app/shared/material/boolean/material.boolean.d.ts +0 -94
- package/src/app/shared/material/boolean/testing/boolean.test.page.d.ts +0 -31
- package/src/app/shared/material/chips/chips.module.d.ts +0 -22
- package/src/app/shared/material/chips/material.chips.d.ts +0 -167
- package/src/app/shared/material/chips/testing/chips.test.d.ts +0 -32
- package/src/app/shared/material/datetime/datetime.module.d.ts +0 -25
- package/src/app/shared/material/datetime/material.date.d.ts +0 -90
- package/src/app/shared/material/datetime/material.dateshort.d.ts +0 -89
- package/src/app/shared/material/datetime/material.datetime.d.ts +0 -136
- package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +0 -38
- package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +0 -32
- package/src/app/shared/material/datetime/testing/mat-dateshort.test.d.ts +0 -31
- package/src/app/shared/material/duration/duration.module.d.ts +0 -18
- package/src/app/shared/material/duration/duration.utils.d.ts +0 -2
- package/src/app/shared/material/duration/material.duration.d.ts +0 -64
- package/src/app/shared/material/duration/testing/mat-duration.test.d.ts +0 -23
- package/src/app/shared/material/latlong/latlong.utils.d.ts +0 -59
- package/src/app/shared/material/latlong/material.latlong-input.d.ts +0 -93
- package/src/app/shared/material/latlong/material.latlong.d.ts +0 -90
- package/src/app/shared/material/latlong/material.latlong.module.d.ts +0 -21
- package/src/app/shared/material/latlong/testing/latlong.test.d.ts +0 -30
- package/src/app/shared/material/material.animations.d.ts +0 -8
- package/src/app/shared/material/material.config.d.ts +0 -3
- package/src/app/shared/material/material.module.d.ts +0 -44
- package/src/app/shared/material/material.testing.module.d.ts +0 -31
- package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +0 -12
- package/src/app/shared/material/stepper/material.stepper-i18n.d.ts +0 -10
- package/src/app/shared/material/swipe/material.swipe.d.ts +0 -89
- package/src/app/shared/material/swipe/swipe.module.d.ts +0 -16
- package/src/app/shared/material/swipe/testing/swipe.test.d.ts +0 -22
- package/src/app/shared/material/test/test-component.d.ts +0 -75
- package/src/app/shared/material/testing/common.test.d.ts +0 -25
- package/src/app/shared/modules.d.ts +0 -9
- package/src/app/shared/named-filter/named-filter-selector.component.d.ts +0 -63
- package/src/app/shared/named-filter/named-filter.model.d.ts +0 -32
- package/src/app/shared/named-filter/named-filter.module.d.ts +0 -13
- package/src/app/shared/named-filter/named-filter.service.d.ts +0 -32
- package/src/app/shared/named-filter/testing/named-filter-selector.testing.d.ts +0 -34
- package/src/app/shared/named-filter/testing/named-filter.testing.module.d.ts +0 -10
- package/src/app/shared/observables.d.ts +0 -32
- package/src/app/shared/pipes/arrays.pipe.d.ts +0 -93
- package/src/app/shared/pipes/badge.pipes.d.ts +0 -7
- package/src/app/shared/pipes/colors.pipe.d.ts +0 -9
- package/src/app/shared/pipes/date-diff-duration.pipe.d.ts +0 -25
- package/src/app/shared/pipes/date-format.pipe.d.ts +0 -35
- package/src/app/shared/pipes/date-from-now.pipe.d.ts +0 -14
- package/src/app/shared/pipes/date-from.pipe.d.ts +0 -14
- package/src/app/shared/pipes/dates.pipe.d.ts +0 -10
- package/src/app/shared/pipes/display-with.pipe.d.ts +0 -8
- package/src/app/shared/pipes/duration.pipe.d.ts +0 -23
- package/src/app/shared/pipes/file-size.pipe.d.ts +0 -30
- package/src/app/shared/pipes/form.pipes.d.ts +0 -69
- package/src/app/shared/pipes/highlight.pipe.d.ts +0 -11
- package/src/app/shared/pipes/html.pipes.d.ts +0 -50
- package/src/app/shared/pipes/latlong-format.pipe.d.ts +0 -20
- package/src/app/shared/pipes/maps.pipe.d.ts +0 -23
- package/src/app/shared/pipes/maskito.pipe.d.ts +0 -14
- package/src/app/shared/pipes/math.pipes.d.ts +0 -26
- package/src/app/shared/pipes/ng-init.pipe.d.ts +0 -8
- package/src/app/shared/pipes/number-format.pipe.d.ts +0 -9
- package/src/app/shared/pipes/observable.pipes.d.ts +0 -25
- package/src/app/shared/pipes/pipes.module.d.ts +0 -36
- package/src/app/shared/pipes/property.pipes.d.ts +0 -46
- package/src/app/shared/pipes/selection.pipes.d.ts +0 -62
- package/src/app/shared/pipes/string.pipes.d.ts +0 -67
- package/src/app/shared/pipes/translate-context.pipe.d.ts +0 -17
- package/src/app/shared/pipes/types.pipes.d.ts +0 -30
- package/src/app/shared/pipes/url.pipes.d.ts +0 -27
- package/src/app/shared/platforms.d.ts +0 -16
- package/src/app/shared/print/print.service.d.ts +0 -94
- package/src/app/shared/regexps.d.ts +0 -32
- package/src/app/shared/rx-state/rx-state.decorators.d.ts +0 -33
- package/src/app/shared/rx-state/rx-state.module.d.ts +0 -10
- package/src/app/shared/rx-state/rx-state.types.d.ts +0 -5
- package/src/app/shared/services/entity-service.class.d.ts +0 -117
- package/src/app/shared/services/job.utils.d.ts +0 -20
- package/src/app/shared/services/memory-entity-service.class.d.ts +0 -87
- package/src/app/shared/services/progress-bar.service.d.ts +0 -20
- package/src/app/shared/services/startable-observable-service.class.d.ts +0 -51
- package/src/app/shared/services/startable-service.class.d.ts +0 -38
- package/src/app/shared/services/translate-context.service.d.ts +0 -29
- package/src/app/shared/services/validator-service.class.d.ts +0 -11
- package/src/app/shared/services.d.ts +0 -17
- package/src/app/shared/shared-routing.module.d.ts +0 -23
- package/src/app/shared/shared.module.d.ts +0 -33
- package/src/app/shared/shared.testing.module.d.ts +0 -20
- package/src/app/shared/storage/storage-explorer.component.d.ts +0 -60
- package/src/app/shared/storage/storage-explorer.module.d.ts +0 -13
- package/src/app/shared/storage/storage-explorer.testing-routing.module.d.ts +0 -9
- package/src/app/shared/storage/storage-explorer.testing.module.d.ts +0 -10
- package/src/app/shared/storage/storage.service.d.ts +0 -22
- package/src/app/shared/storage/storage.utils.d.ts +0 -19
- package/src/app/shared/testing/maskito.test.d.ts +0 -10
- package/src/app/shared/testing/observable.test.d.ts +0 -25
- package/src/app/shared/testing/tests.page.d.ts +0 -20
- package/src/app/shared/toast/toast.testing.d.ts +0 -15
- package/src/app/shared/toast/toast.testing.module.d.ts +0 -12
- package/src/app/shared/toast/toasts.d.ts +0 -16
- package/src/app/shared/toolbar/modal-toolbar.d.ts +0 -21
- package/src/app/shared/toolbar/toolbar.d.ts +0 -70
- package/src/app/shared/toolbar/toolbar.module.d.ts +0 -16
- package/src/app/shared/types.d.ts +0 -45
- package/src/app/shared/upload-file/testing/upload-file.testing.d.ts +0 -21
- package/src/app/shared/upload-file/testing/upload-file.testing.module.d.ts +0 -11
- package/src/app/shared/upload-file/upload-file-popover.component.d.ts +0 -41
- package/src/app/shared/upload-file/upload-file.component.d.ts +0 -50
- package/src/app/shared/upload-file/upload-file.model.d.ts +0 -30
- package/src/app/shared/validator/form-error-adapter.class.d.ts +0 -33
- package/src/app/shared/validator/validators.d.ts +0 -145
- package/src/app/shared/version/versions.d.ts +0 -26
- package/src/app/social/config/social.config.d.ts +0 -4
- package/src/app/social/feed/feed.component.d.ts +0 -91
- package/src/app/social/feed/feed.directive.d.ts +0 -32
- package/src/app/social/feed/feed.model.d.ts +0 -69
- package/src/app/social/feed/feed.module.d.ts +0 -13
- package/src/app/social/feed/feed.page.d.ts +0 -24
- package/src/app/social/feed/feed.service.d.ts +0 -85
- package/src/app/social/feed/testing/feed.testing.d.ts +0 -23
- package/src/app/social/feed/testing/feed.testing.module.d.ts +0 -12
- package/src/app/social/job/job.module.d.ts +0 -12
- package/src/app/social/job/progression/job-progression.component.d.ts +0 -24
- package/src/app/social/job/progression/job-progression.icon.d.ts +0 -63
- package/src/app/social/job/progression/job-progression.list.d.ts +0 -20
- package/src/app/social/job/progression/job-progression.model.d.ts +0 -10
- package/src/app/social/job/progression/job-progression.service.d.ts +0 -33
- package/src/app/social/job/testing/job-progression.testing.d.ts +0 -13
- package/src/app/social/job/testing/job-progression.testing.service.d.ts +0 -9
- package/src/app/social/job/testing/job.testing.module.d.ts +0 -11
- package/src/app/social/message/message.form.d.ts +0 -36
- package/src/app/social/message/message.modal.d.ts +0 -47
- package/src/app/social/message/message.model.d.ts +0 -36
- package/src/app/social/message/message.module.d.ts +0 -14
- package/src/app/social/message/message.service.d.ts +0 -44
- package/src/app/social/social.errors.d.ts +0 -10
- package/src/app/social/social.module.d.ts +0 -20
- package/src/app/social/social.testing.module.d.ts +0 -14
- package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +0 -47
- package/src/app/social/user-event/notification/user-event-notification.list.d.ts +0 -77
- package/src/app/social/user-event/notification/user-event-notification.modal.d.ts +0 -37
- package/src/app/social/user-event/testing/user-event.testing.d.ts +0 -44
- package/src/app/social/user-event/testing/user-event.testing.model.d.ts +0 -42
- package/src/app/social/user-event/testing/user-event.testing.module.d.ts +0 -11
- package/src/app/social/user-event/testing/user-event.testing.service.d.ts +0 -41
- package/src/app/social/user-event/user-event.model.d.ts +0 -44
- package/src/app/social/user-event/user-event.module.d.ts +0 -14
- package/src/app/social/user-event/user-event.service.d.ts +0 -124
- package/src/environments/environment.class.d.ts +0 -86
- package/src/environments/environment.d.ts +0 -2
- package/src/environments/environment.loader.d.ts +0 -24
- package/src/theme/_globals.scss +0 -5
|
@@ -1,304 +0,0 @@
|
|
|
1
|
-
import { getPropertyByPath, isNil, isNilOrBlank, isNotNil, isNotNilOrBlank, isPromise, toBoolean, toNumber } from '../../../shared/functions';
|
|
2
|
-
export class AppPropertiesUtils {
|
|
3
|
-
/**
|
|
4
|
-
* Converts an array of `Property` objects into a `PropertiesMap` object.
|
|
5
|
-
*
|
|
6
|
-
* @param {Property[]} [sources] - An optional array of properties to be converted.
|
|
7
|
-
* @param {FormFieldDefinition[]} [definitions] - An optional array of form field definitions to help with the conversion.
|
|
8
|
-
* @param {Object} [opts] - Optional configurations.
|
|
9
|
-
* @param {boolean} [opts.omitNilOrBlank] - If true, properties with nil or blank values will be omitted. Defaults to true.
|
|
10
|
-
* @return {PropertyMap} - The resulting `PropertiesMap` object.
|
|
11
|
-
*/
|
|
12
|
-
static arrayAsObject(sources, definitions, opts) {
|
|
13
|
-
return ((sources || [])
|
|
14
|
-
// Serialize each item
|
|
15
|
-
.map((source) => {
|
|
16
|
-
if (!source)
|
|
17
|
-
return undefined;
|
|
18
|
-
const key = AppPropertyUtils.getPropertyKey(source);
|
|
19
|
-
if (!key)
|
|
20
|
-
return undefined;
|
|
21
|
-
const def = definitions?.find((d) => d.key === key);
|
|
22
|
-
return AppPropertyUtils.asObject(source, def);
|
|
23
|
-
})
|
|
24
|
-
// Fill a JSON object
|
|
25
|
-
.reduce((res, item) => {
|
|
26
|
-
if (isNilOrBlank(item?.key))
|
|
27
|
-
return res;
|
|
28
|
-
// Skip if nil or blank value
|
|
29
|
-
if (opts?.omitNilOrBlank !== false && isNilOrBlank(item.value))
|
|
30
|
-
return res;
|
|
31
|
-
res[item.key] = item.value;
|
|
32
|
-
return res;
|
|
33
|
-
}, {}));
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Generates an array of properties from the given object, optionally applying definitions to the properties.
|
|
37
|
-
*
|
|
38
|
-
* @param {PropertyMap} [sources] - The source object from which properties are to be extracted.
|
|
39
|
-
* @param {FormFieldDefinition[]} [definitions] - An optional array of definitions to be applied to the extracted properties.
|
|
40
|
-
* @param opts
|
|
41
|
-
* @return {Property[] | Promise<Property[]>} An array of properties generated from the source object, or a promise resolving to that array.
|
|
42
|
-
*/
|
|
43
|
-
static arrayFromObject(sources, definitions, opts) {
|
|
44
|
-
// DEBUG
|
|
45
|
-
//console.debug(`[properties-utils] Convert property map into array of Property...`);
|
|
46
|
-
let targets = Array.isArray(sources)
|
|
47
|
-
? sources.slice()
|
|
48
|
-
: Object.getOwnPropertyNames(sources || {}).map((key) => ({
|
|
49
|
-
key,
|
|
50
|
-
value: sources[key],
|
|
51
|
-
}));
|
|
52
|
-
const jobs = [];
|
|
53
|
-
if (!!definitions) {
|
|
54
|
-
targets = targets
|
|
55
|
-
.map((target) => {
|
|
56
|
-
// Find definition
|
|
57
|
-
const def = definitions.find((def) => def.key === target.key);
|
|
58
|
-
// Exclude no definition (if expected by user options)
|
|
59
|
-
if (!def && opts?.keepOrphan === false)
|
|
60
|
-
return null;
|
|
61
|
-
// Deserialize from string
|
|
62
|
-
let propertyOrPromise = AppPropertyUtils.fromObject(target, def);
|
|
63
|
-
if (isPromise(propertyOrPromise)) {
|
|
64
|
-
jobs.push(propertyOrPromise.then((property) => (target.value = property.value)));
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
// Update the target value
|
|
68
|
-
target.value = propertyOrPromise.value;
|
|
69
|
-
}
|
|
70
|
-
return target;
|
|
71
|
-
})
|
|
72
|
-
// Clean orphan
|
|
73
|
-
.filter(isNotNil);
|
|
74
|
-
// Return as promise, when need
|
|
75
|
-
if (jobs.length)
|
|
76
|
-
return Promise.all(jobs).then(() => targets);
|
|
77
|
-
}
|
|
78
|
-
return targets;
|
|
79
|
-
}
|
|
80
|
-
static sanitize(source, opts) {
|
|
81
|
-
if (!source)
|
|
82
|
-
return source; // Skip if empty
|
|
83
|
-
const includedKeys = opts?.includedKeys ?? opts?.definitions.map((def) => def.key);
|
|
84
|
-
if (Array.isArray(source)) {
|
|
85
|
-
return source.filter((property) => property && (!includedKeys || includedKeys.includes(property.key)) && isNotNil(property.value));
|
|
86
|
-
}
|
|
87
|
-
return (includedKeys || Object.keys(source)).reduce((res, key) => {
|
|
88
|
-
if (isNotNil(source[key]))
|
|
89
|
-
res[key] = source[key];
|
|
90
|
-
return res;
|
|
91
|
-
}, {});
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
export class AppPropertyUtils {
|
|
95
|
-
static key(key) {
|
|
96
|
-
return key?.key ?? key;
|
|
97
|
-
}
|
|
98
|
-
static getPropertyKey(source) {
|
|
99
|
-
if (!source)
|
|
100
|
-
return undefined;
|
|
101
|
-
return source.key?.key ?? source.key;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Converts the given source to an object that contains a key-value pair.
|
|
105
|
-
*
|
|
106
|
-
* @param {Property<any> | any} source - The source property or any value to be converted.
|
|
107
|
-
* @param {FormFieldDefinition} [def] - The form field definition used for serialization.
|
|
108
|
-
* @param {Object} [opts] - Additional options for serialization.
|
|
109
|
-
* @param {string} [opts.defaultSerializeAttribute='id'] - The attribute to be used for default serialization.
|
|
110
|
-
* @return {{ key: string, value: string } | undefined} An object containing the serialized key-value pair, or undefined if the source is not provided.
|
|
111
|
-
*/
|
|
112
|
-
static asObject(source, def, opts) {
|
|
113
|
-
if (!source)
|
|
114
|
-
return undefined;
|
|
115
|
-
// Serialize key (WARNING: can be an object, when using autocomplete field to edit a key - see AppPropertiesForm)
|
|
116
|
-
const key = AppPropertyUtils.getPropertyKey(source);
|
|
117
|
-
// Prepare a deserialize function
|
|
118
|
-
let serializeFn = def?.serialize;
|
|
119
|
-
if (!serializeFn) {
|
|
120
|
-
switch (def?.type || 'other') {
|
|
121
|
-
case 'enum':
|
|
122
|
-
case 'enums':
|
|
123
|
-
serializeFn = AppPropertyUtils.key;
|
|
124
|
-
break;
|
|
125
|
-
case 'entity':
|
|
126
|
-
case 'entities': {
|
|
127
|
-
const serializeAttribute = def?.serializeAttribute ?? opts?.defaultSerializeAttribute ?? 'id';
|
|
128
|
-
serializeFn = (value) => {
|
|
129
|
-
const serializeValue = getPropertyByPath(value, serializeAttribute, value /*default value*/);
|
|
130
|
-
if (isNil(serializeValue))
|
|
131
|
-
return serializeValue;
|
|
132
|
-
return serializeValue.toString();
|
|
133
|
-
};
|
|
134
|
-
break;
|
|
135
|
-
}
|
|
136
|
-
default:
|
|
137
|
-
serializeFn = AppPropertyUtils.toString;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
let valueStr;
|
|
141
|
-
// Value is an array
|
|
142
|
-
if (Array.isArray(source.value)) {
|
|
143
|
-
valueStr = source.value.map(serializeFn).filter(isNotNilOrBlank).join(',');
|
|
144
|
-
}
|
|
145
|
-
// Any other case
|
|
146
|
-
else {
|
|
147
|
-
valueStr = serializeFn(source.value);
|
|
148
|
-
}
|
|
149
|
-
return { key, value: valueStr };
|
|
150
|
-
}
|
|
151
|
-
static fromObject(source, def, opts) {
|
|
152
|
-
if (!source?.key || isNil(source.value) || !def)
|
|
153
|
-
return source; // Skip if no key
|
|
154
|
-
// Clone the source
|
|
155
|
-
const target = { key: source.key, value: source.value };
|
|
156
|
-
const jobs = [];
|
|
157
|
-
// Resolve value
|
|
158
|
-
switch (def.type) {
|
|
159
|
-
case 'boolean':
|
|
160
|
-
target.value = toBoolean(source.value, toBoolean(def.defaultValue));
|
|
161
|
-
break;
|
|
162
|
-
case 'integer':
|
|
163
|
-
case 'double':
|
|
164
|
-
target.value = toNumber(source.value, toNumber(def.defaultValue));
|
|
165
|
-
break;
|
|
166
|
-
case 'enum':
|
|
167
|
-
const valueKey = AppPropertyUtils.key(target.value);
|
|
168
|
-
if (isNotNilOrBlank(valueKey)) {
|
|
169
|
-
const enumValue = def.values?.find((defValue) => defValue && valueKey === (defValue['key'] || defValue)) ?? null;
|
|
170
|
-
target.value = enumValue?.['key'] ?? enumValue ?? null;
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
target.value = null;
|
|
174
|
-
}
|
|
175
|
-
break;
|
|
176
|
-
case 'enums':
|
|
177
|
-
const valueKeys = Array.isArray(source.value)
|
|
178
|
-
? source.value.map(AppPropertyUtils.key) // Copy
|
|
179
|
-
: typeof source.value === 'string'
|
|
180
|
-
? source.value.trim().split(/,+/)
|
|
181
|
-
: [AppPropertyUtils.key(source.value)];
|
|
182
|
-
target.value = valueKeys
|
|
183
|
-
.filter(isNotNil)
|
|
184
|
-
.map((key) => def.values?.find((defValue) => defValue && key === (defValue['key'] || defValue)) || { key, value: '?' });
|
|
185
|
-
break;
|
|
186
|
-
case 'entity':
|
|
187
|
-
// Deserialize entity (e.g. load entity from the id)
|
|
188
|
-
const valueOrPromise = AppPropertyUtils.resolveEntity(target.value, def, opts);
|
|
189
|
-
if (isPromise(valueOrPromise)) {
|
|
190
|
-
jobs.push(valueOrPromise.then((value) => {
|
|
191
|
-
target.value = value;
|
|
192
|
-
}));
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
target.value = valueOrPromise;
|
|
196
|
-
}
|
|
197
|
-
break;
|
|
198
|
-
case 'entities':
|
|
199
|
-
// Convert value to array
|
|
200
|
-
target.value = Array.isArray(source.value)
|
|
201
|
-
? source.value.slice() // Copy
|
|
202
|
-
: typeof source.value === 'string'
|
|
203
|
-
? source.value
|
|
204
|
-
.split(',')
|
|
205
|
-
.map((v) => v.trim())
|
|
206
|
-
.filter(isNotNilOrBlank)
|
|
207
|
-
: [];
|
|
208
|
-
// Deserialize each sub-value
|
|
209
|
-
let index = 0;
|
|
210
|
-
for (let subValue of target.value) {
|
|
211
|
-
// Deserialize sub-value
|
|
212
|
-
const subValueOrPromise = AppPropertyUtils.resolveEntity(subValue, def, opts);
|
|
213
|
-
// Add promise to jobs
|
|
214
|
-
if (isPromise(subValueOrPromise)) {
|
|
215
|
-
const finalIndex = index;
|
|
216
|
-
jobs.push(subValueOrPromise.then((value) => {
|
|
217
|
-
// Update sub value
|
|
218
|
-
target.value[finalIndex] = value;
|
|
219
|
-
}));
|
|
220
|
-
}
|
|
221
|
-
else {
|
|
222
|
-
// Update sub value
|
|
223
|
-
target.value[index] = subValueOrPromise;
|
|
224
|
-
}
|
|
225
|
-
index++;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
// /!\ Return as promise only if need (let function sync when possible)
|
|
229
|
-
if (jobs.length)
|
|
230
|
-
return Promise.all(jobs).then(() => target);
|
|
231
|
-
return target;
|
|
232
|
-
}
|
|
233
|
-
static resolveEntity(value, def, opts) {
|
|
234
|
-
// Use deserialize function, if any
|
|
235
|
-
if (def.deserialize) {
|
|
236
|
-
return def.deserialize(value);
|
|
237
|
-
}
|
|
238
|
-
// Or try using suggest function
|
|
239
|
-
return this.resolveEntityBySuggest(value, def, opts);
|
|
240
|
-
}
|
|
241
|
-
static async resolveEntityBySuggest(value, def, opts) {
|
|
242
|
-
const serializeAttribute = def.serializeAttribute ?? opts?.defaultSerializeAttribute ?? 'id';
|
|
243
|
-
if (typeof value === 'object' && isNotNil(value[serializeAttribute])) {
|
|
244
|
-
return value; // Already resolve
|
|
245
|
-
}
|
|
246
|
-
const suggestFn = def.autocomplete?.suggestFn || opts?.defaultSuggestFn;
|
|
247
|
-
if (!suggestFn) {
|
|
248
|
-
console.warn(`Missing 'deserialize' or 'autocomplete.suggestFn' in the field definition '${def.key}'. Cannot deserialize value: ${JSON.stringify(value)}`);
|
|
249
|
-
return value; // Skip
|
|
250
|
-
}
|
|
251
|
-
let searchValue = value;
|
|
252
|
-
const filter = { ...def.autocomplete?.filter }; // Cope filter
|
|
253
|
-
if (serializeAttribute === 'id' || serializeAttribute === 'label') {
|
|
254
|
-
filter[serializeAttribute] = serializeAttribute === 'id' ? +value : value;
|
|
255
|
-
searchValue = '*';
|
|
256
|
-
// DEBUG
|
|
257
|
-
//console.debug(`[properties-utils] Resolving entity where id=${value}...`);
|
|
258
|
-
}
|
|
259
|
-
else {
|
|
260
|
-
filter.searchAttribute = serializeAttribute;
|
|
261
|
-
// DEBUG
|
|
262
|
-
//console.debug(`[properties-utils] Resolving entity where ${serializeAttribute}=${searchValue}...`);
|
|
263
|
-
}
|
|
264
|
-
try {
|
|
265
|
-
// Fetch entity, using the suggest function
|
|
266
|
-
const res = await suggestFn(searchValue, filter, serializeAttribute, 'asc', {
|
|
267
|
-
withTotal: false,
|
|
268
|
-
offset: 0,
|
|
269
|
-
size: 1,
|
|
270
|
-
...opts?.defaultSuggestOptions,
|
|
271
|
-
});
|
|
272
|
-
// Get result array
|
|
273
|
-
const data = Array.isArray(res) ? res : res.data;
|
|
274
|
-
if (data?.length > 0) {
|
|
275
|
-
if (data?.length > 1) {
|
|
276
|
-
console.warn(`[properties-utils] More than one entity found, for option ${def.key}=${value}! Please check option's definition and the 'autocomplete.suggestFn' function`, data);
|
|
277
|
-
}
|
|
278
|
-
// DEBUG
|
|
279
|
-
//console.debug(`[properties-utils] ${data.length} entities found: `, data);
|
|
280
|
-
// Ok, we find it => stop here
|
|
281
|
-
return data[0];
|
|
282
|
-
}
|
|
283
|
-
// Warn, but continue
|
|
284
|
-
console.warn(`[properties-utils] Unable to resolve entity for option: ${def.key}=${value}. Please check option's definition and the 'autocomplete.suggestFn' function`);
|
|
285
|
-
}
|
|
286
|
-
catch (err) {
|
|
287
|
-
console.error(`[properties-utils] Cannot resolve entity for option: ${def.key}=${value}`, err);
|
|
288
|
-
// Continue
|
|
289
|
-
}
|
|
290
|
-
// Create the missing result
|
|
291
|
-
const unresolvedEntity = {
|
|
292
|
-
[serializeAttribute]: value,
|
|
293
|
-
};
|
|
294
|
-
// Fill attributes with '??'
|
|
295
|
-
def.autocomplete?.attributes?.forEach((key) => {
|
|
296
|
-
unresolvedEntity[key] = unresolvedEntity[key] ?? '';
|
|
297
|
-
});
|
|
298
|
-
return unresolvedEntity;
|
|
299
|
-
}
|
|
300
|
-
static toString(value) {
|
|
301
|
-
return value?.toString();
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL3Byb3BlcnRpZXMvcHJvcGVydGllcy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJOUksTUFBTSxPQUFPLGtCQUFrQjtJQUM3Qjs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxhQUFhLENBQVUsT0FBdUIsRUFBRSxXQUFtQyxFQUFFLElBQWtDO1FBQzVILE9BQU8sQ0FDTCxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDYixzQkFBc0I7YUFDckIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDZCxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUM5QixNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFDM0IsTUFBTSxHQUFHLEdBQUcsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNwRCxPQUFPLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDO1lBQ0YscUJBQXFCO2FBQ3BCLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNaLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7Z0JBQUUsT0FBTyxHQUFHLENBQUM7WUFD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QUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDNUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBRU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFXO1FBQ2pDLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3BlcnR5LCBQcm9wZXJ0eU1hcCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQgeyBnZXRQcm9wZXJ0eUJ5UGF0aCwgaXNOaWwsIGlzTmlsT3JCbGFuaywgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuaywgaXNQcm9taXNlLCB0b0Jvb2xlYW4sIHRvTnVtYmVyIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBGb3JtRmllbGREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnMsIFN1Z2dlc3RGbiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5cbmV4cG9ydCBjbGFzcyBBcHBQcm9wZXJ0aWVzVXRpbHMge1xuICAvKipcbiAgICogQ29udmVydHMgYW4gYXJyYXkgb2YgYFByb3BlcnR5YCBvYmplY3RzIGludG8gYSBgUHJvcGVydGllc01hcGAgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3BlcnR5W119IFtzb3VyY2VzXSAtIEFuIG9wdGlvbmFsIGFycmF5IG9mIHByb3BlcnRpZXMgdG8gYmUgY29udmVydGVkLlxuICAgKiBAcGFyYW0ge0Zvcm1GaWVsZERlZmluaXRpb25bXX0gW2RlZmluaXRpb25zXSAtIEFuIG9wdGlvbmFsIGFycmF5IG9mIGZvcm0gZmllbGQgZGVmaW5pdGlvbnMgdG8gaGVscCB3aXRoIHRoZSBjb252ZXJzaW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbnMuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMub21pdE5pbE9yQmxhbmtdIC0gSWYgdHJ1ZSwgcHJvcGVydGllcyB3aXRoIG5pbCBvciBibGFuayB2YWx1ZXMgd2lsbCBiZSBvbWl0dGVkLiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKiBAcmV0dXJuIHtQcm9wZXJ0eU1hcH0gLSBUaGUgcmVzdWx0aW5nIGBQcm9wZXJ0aWVzTWFwYCBvYmplY3QuXG4gICAqL1xuICBzdGF0aWMgYXJyYXlBc09iamVjdDxUID0gYW55Pihzb3VyY2VzPzogUHJvcGVydHk8VD5bXSwgZGVmaW5pdGlvbnM/OiBGb3JtRmllbGREZWZpbml0aW9uW10sIG9wdHM/OiB7IG9taXROaWxPckJsYW5rOiBib29sZWFuIH0pOiBQcm9wZXJ0eU1hcCB7XG4gICAgcmV0dXJuIChcbiAgICAgIChzb3VyY2VzIHx8IFtdKVxuICAgICAgICAvLyBTZXJpYWxpemUgZWFjaCBpdGVtXG4gICAgICAgIC5tYXAoKHNvdXJjZSkgPT4ge1xuICAgICAgICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIGNvbnN0IGtleSA9IEFwcFByb3BlcnR5VXRpbHMuZ2V0UHJvcGVydHlLZXkoc291cmNlKTtcbiAgICAgICAgICBpZiAoIWtleSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICBjb25zdCBkZWYgPSBkZWZpbml0aW9ucz8uZmluZCgoZCkgPT4gZC5rZXkgPT09IGtleSk7XG4gICAgICAgICAgcmV0dXJuIEFwcFByb3BlcnR5VXRpbHMuYXNPYmplY3Qoc291cmNlLCBkZWYpO1xuICAgICAgICB9KVxuICAgICAgICAvLyBGaWxsIGEgSlNPTiBvYmplY3RcbiAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAocmVzLCBpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNOaWxPckJsYW5rKGl0ZW0/LmtleSkpIHJldHVybiByZXM7XG4gICAgICAgICAgICAvLyBTa2lwIGlmIG5pbCBvciBibGFuayB2YWx1ZVxuICAgICAgICAgICAgaWYgKG9wdHM/Lm9taXROaWxPckJsYW5rICE9PSBmYWxzZSAmJiBpc05pbE9yQmxhbmsoaXRlbS52YWx1ZSkpIHJldHVybiByZXM7XG4gICAgICAgICAgICByZXNbaXRlbS5rZXldID0gaXRlbS52YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICA8UHJvcGVydHlNYXA+e31cbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGFuIGFycmF5IG9mIHByb3BlcnRpZXMgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0LCBvcHRpb25hbGx5IGFwcGx5aW5nIGRlZmluaXRpb25zIHRvIHRoZSBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3BlcnR5TWFwfSBbc291cmNlc10gLSBUaGUgc291cmNlIG9iamVjdCBmcm9tIHdoaWNoIHByb3BlcnRpZXMgYXJlIHRvIGJlIGV4dHJhY3RlZC5cbiAgICogQHBhcmFtIHtGb3JtRmllbGREZWZpbml0aW9uW119IFtkZWZpbml0aW9uc10gLSBBbiBvcHRpb25hbCBhcnJheSBvZiBkZWZpbml0aW9ucyB0byBiZSBhcHBsaWVkIHRvIHRoZSBleHRyYWN0ZWQgcHJvcGVydGllcy5cbiAgICogQHBhcmFtIG9wdHNcbiAgICogQHJldHVybiB7UHJvcGVydHlbXSB8IFByb21pc2U8UHJvcGVydHlbXT59IEFuIGFycmF5IG9mIHByb3BlcnRpZXMgZ2VuZXJhdGVkIGZyb20gdGhlIHNvdXJjZSBvYmplY3QsIG9yIGEgcHJvbWlzZSByZXNvbHZpbmcgdG8gdGhhdCBhcnJheS5cbiAgICovXG4gIHN0YXRpYyBhcnJheUZyb21PYmplY3Q8VD4oXG4gICAgc291cmNlcz86IFByb3BlcnR5TWFwIHwgUHJvcGVydHk8VD5bXSxcbiAgICBkZWZpbml0aW9ucz86IEZvcm1GaWVsZERlZmluaXRpb25bXSxcbiAgICBvcHRzPzoge1xuICAgICAga2VlcE9ycGhhbj86IGJvb2xlYW47IC8vIHRydWUgYnkgZGVmYXVsdFxuICAgIH1cbiAgKTogUHJvcGVydHk8VD5bXSB8IFByb21pc2U8UHJvcGVydHk8VD5bXT4ge1xuICAgIC8vIERFQlVHXG4gICAgLy9jb25zb2xlLmRlYnVnKGBbcHJvcGVydGllcy11dGlsc10gQ29udmVydCBwcm9wZXJ0eSBtYXAgaW50byBhcnJheSBvZiBQcm9wZXJ0eS4uLmApO1xuXG4gICAgbGV0IHRhcmdldHMgPSBBcnJheS5pc0FycmF5KHNvdXJjZXMpXG4gICAgICA/IHNvdXJjZXMuc2xpY2UoKVxuICAgICAgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2VzIHx8IHt9KS5tYXAoXG4gICAgICAgICAgKGtleSkgPT5cbiAgICAgICAgICAgIDxQcm9wZXJ0eTxhbnk+PntcbiAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICB2YWx1ZTogc291cmNlc1trZXldLFxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIGNvbnN0IGpvYnMgPSBbXTtcblxuICAgIGlmICghIWRlZmluaXRpb25zKSB7XG4gICAgICB0YXJnZXRzID0gdGFyZ2V0c1xuICAgICAgICAubWFwKCh0YXJnZXQ6IFByb3BlcnR5PGFueT4pID0+IHtcbiAgICAgICAgICAvLyBGaW5kIGRlZmluaXRpb25cbiAgICAgICAgICBjb25zdCBkZWYgPSBkZWZpbml0aW9ucy5maW5kKChkZWYpID0+IGRlZi5rZXkgPT09IHRhcmdldC5rZXkpO1xuXG4gICAgICAgICAgLy8gRXhjbHVkZSBubyBkZWZpbml0aW9uIChpZiBleHBlY3RlZCBieSB1c2VyIG9wdGlvbnMpXG4gICAgICAgICAgaWYgKCFkZWYgJiYgb3B0cz8ua2VlcE9ycGhhbiA9PT0gZmFsc2UpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgLy8gRGVzZXJpYWxpemUgZnJvbSBzdHJpbmdcbiAgICAgICAgICBsZXQgcHJvcGVydHlPclByb21pc2UgPSBBcHBQcm9wZXJ0eVV0aWxzLmZyb21PYmplY3QodGFyZ2V0LCBkZWYpO1xuICAgICAgICAgIGlmIChpc1Byb21pc2UocHJvcGVydHlPclByb21pc2UpKSB7XG4gICAgICAgICAgICBqb2JzLnB1c2gocHJvcGVydHlPclByb21pc2UudGhlbigocHJvcGVydHkpID0+ICh0YXJnZXQudmFsdWUgPSBwcm9wZXJ0eS52YWx1ZSkpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSB0YXJnZXQgdmFsdWVcbiAgICAgICAgICAgIHRhcmdldC52YWx1ZSA9IHByb3BlcnR5T3JQcm9taXNlLnZhbHVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgICAgIH0pXG4gICAgICAgIC8vIENsZWFuIG9ycGhhblxuICAgICAgICAuZmlsdGVyKGlzTm90TmlsKTtcblxuICAgICAgLy8gUmV0dXJuIGFzIHByb21pc2UsIHdoZW4gbmVlZFxuICAgICAgaWYgKGpvYnMubGVuZ3RoKSByZXR1cm4gUHJvbWlzZS5hbGwoam9icykudGhlbigoKSA9PiB0YXJnZXRzIGFzIFByb3BlcnR5PFQ+W10pO1xuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXRzIGFzIFByb3BlcnR5PFQ+W107XG4gIH1cblxuICBzdGF0aWMgc2FuaXRpemUoXG4gICAgc291cmNlOiBQcm9wZXJ0eU1hcCB8IFByb3BlcnR5W10sXG4gICAgb3B0cz86IHtcbiAgICAgIGRlZmluaXRpb25zPzogRm9ybUZpZWxkRGVmaW5pdGlvbltdO1xuICAgICAgaW5jbHVkZWRLZXlzPzogc3RyaW5nW107XG4gICAgfVxuICApOiBQcm9wZXJ0eU1hcCB8IFByb3BlcnR5W10ge1xuICAgIGlmICghc291cmNlKSByZXR1cm4gc291cmNlOyAvLyBTa2lwIGlmIGVtcHR5XG4gICAgY29uc3QgaW5jbHVkZWRLZXlzID0gb3B0cz8uaW5jbHVkZWRLZXlzID8/IG9wdHM/LmRlZmluaXRpb25zLm1hcCgoZGVmKSA9PiBkZWYua2V5KTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gc291cmNlLmZpbHRlcigocHJvcGVydHkpID0+IHByb3BlcnR5ICYmICghaW5jbHVkZWRLZXlzIHx8IGluY2x1ZGVkS2V5cy5pbmNsdWRlcyhwcm9wZXJ0eS5rZXkpKSAmJiBpc05vdE5pbChwcm9wZXJ0eS52YWx1ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gKGluY2x1ZGVkS2V5cyB8fCBPYmplY3Qua2V5cyhzb3VyY2UpKS5yZWR1Y2UoXG4gICAgICAocmVzLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKGlzTm90TmlsKHNvdXJjZVtrZXldKSkgcmVzW2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0sXG4gICAgICA8UHJvcGVydHlNYXA+e31cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBQcm9wZXJ0eVV0aWxzIHtcbiAgc3RhdGljIGtleShrZXk6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGtleT8ua2V5ID8/IGtleTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRQcm9wZXJ0eUtleShzb3VyY2U6IFByb3BlcnR5IHwgYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIXNvdXJjZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKHNvdXJjZS5rZXkgYXMgYW55KT8ua2V5ID8/IHNvdXJjZS5rZXk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIGdpdmVuIHNvdXJjZSB0byBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIGtleS12YWx1ZSBwYWlyLlxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3BlcnR5PGFueT4gfCBhbnl9IHNvdXJjZSAtIFRoZSBzb3VyY2UgcHJvcGVydHkgb3IgYW55IHZhbHVlIHRvIGJlIGNvbnZlcnRlZC5cbiAgICogQHBhcmFtIHtGb3JtRmllbGREZWZpbml0aW9ufSBbZGVmXSAtIFRoZSBmb3JtIGZpZWxkIGRlZmluaXRpb24gdXNlZCBmb3Igc2VyaWFsaXphdGlvbi5cbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIEFkZGl0aW9uYWwgb3B0aW9ucyBmb3Igc2VyaWFsaXphdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmRlZmF1bHRTZXJpYWxpemVBdHRyaWJ1dGU9J2lkJ10gLSBUaGUgYXR0cmlidXRlIHRvIGJlIHVzZWQgZm9yIGRlZmF1bHQgc2VyaWFsaXphdGlvbi5cbiAgICogQHJldHVybiB7eyBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9IHwgdW5kZWZpbmVkfSBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgc2VyaWFsaXplZCBrZXktdmFsdWUgcGFpciwgb3IgdW5kZWZpbmVkIGlmIHRoZSBzb3VyY2UgaXMgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgc3RhdGljIGFzT2JqZWN0KFxuICAgIHNvdXJjZTogUHJvcGVydHk8YW55PiB8IGFueSxcbiAgICBkZWY/OiBGb3JtRmllbGREZWZpbml0aW9uLFxuICAgIG9wdHM/OiB7XG4gICAgICBkZWZhdWx0U2VyaWFsaXplQXR0cmlidXRlPzogc3RyaW5nO1xuICAgIH1cbiAgKTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXNvdXJjZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAvLyBTZXJpYWxpemUga2V5IChXQVJOSU5HOiBjYW4gYmUgYW4gb2JqZWN0LCB3aGVuIHVzaW5nIGF1dG9jb21wbGV0ZSBmaWVsZCB0byBlZGl0IGEga2V5IC0gc2VlIEFwcFByb3BlcnRpZXNGb3JtKVxuICAgIGNvbnN0IGtleSA9IEFwcFByb3BlcnR5VXRpbHMuZ2V0UHJvcGVydHlLZXkoc291cmNlKTtcblxuICAgIC8vIFByZXBhcmUgYSBkZXNlcmlhbGl6ZSBmdW5jdGlvblxuICAgIGxldCBzZXJpYWxpemVGbiA9IGRlZj8uc2VyaWFsaXplO1xuICAgIGlmICghc2VyaWFsaXplRm4pIHtcbiAgICAgIHN3aXRjaCAoZGVmPy50eXBlIHx8ICdvdGhlcicpIHtcbiAgICAgICAgY2FzZSAnZW51bSc6XG4gICAgICAgIGNhc2UgJ2VudW1zJzpcbiAgICAgICAgICBzZXJpYWxpemVGbiA9IEFwcFByb3BlcnR5VXRpbHMua2V5O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdlbnRpdHknOlxuICAgICAgICBjYXNlICdlbnRpdGllcyc6IHtcbiAgICAgICAgICBjb25zdCBzZXJpYWxpemVBdHRyaWJ1dGUgPSBkZWY/LnNlcmlhbGl6ZUF0dHJpYnV0ZSA/PyBvcHRzPy5kZWZhdWx0U2VyaWFsaXplQXR0cmlidXRlID8/ICdpZCc7XG4gICAgICAgICAgc2VyaWFsaXplRm4gPSAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZVZhbHVlID0gZ2V0UHJvcGVydHlCeVBhdGgodmFsdWUsIHNlcmlhbGl6ZUF0dHJpYnV0ZSwgdmFsdWUgLypkZWZhdWx0IHZhbHVlKi8pO1xuICAgICAgICAgICAgaWYgKGlzTmlsKHNlcmlhbGl6ZVZhbHVlKSkgcmV0dXJuIHNlcmlhbGl6ZVZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHNlcmlhbGl6ZUZuID0gQXBwUHJvcGVydHlVdGlscy50b1N0cmluZztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgdmFsdWVTdHI6IHN0cmluZztcblxuICAgIC8vIFZhbHVlIGlzIGFuIGFycmF5XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlLnZhbHVlKSkge1xuICAgICAgdmFsdWVTdHIgPSBzb3VyY2UudmFsdWUubWFwKHNlcmlhbGl6ZUZuKS5maWx0ZXIoaXNOb3ROaWxPckJsYW5rKS5qb2luKCcsJyk7XG4gICAgfVxuICAgIC8vIEFueSBvdGhlciBjYXNlXG4gICAgZWxzZSB7XG4gICAgICB2YWx1ZVN0ciA9IHNlcmlhbGl6ZUZuKHNvdXJjZS52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB7IGtleSwgdmFsdWU6IHZhbHVlU3RyIH07XG4gIH1cblxuICBzdGF0aWMgZnJvbU9iamVjdDxUID0gc3RyaW5nPihcbiAgICBzb3VyY2U6IFByb3BlcnR5IHwgUHJvcGVydHk8VD4sXG4gICAgZGVmOiBGb3JtRmllbGREZWZpbml0aW9uLFxuICAgIG9wdHM/OiB7XG4gICAgICBkZWZhdWx0U3VnZ2VzdEZuOiBTdWdnZXN0Rm48YW55LCBhbnk+O1xuICAgICAgZGVmYXVsdFN1Z2dlc3RPcHRpb25zPzogRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnM7XG4gICAgICBkZWZhdWx0U2VyaWFsaXplQXR0cmlidXRlPzogc3RyaW5nO1xuICAgIH1cbiAgKTogUHJvcGVydHk8VD4gfCBQcm9taXNlPFByb3BlcnR5PFQ+PiB7XG4gICAgaWYgKCFzb3VyY2U/LmtleSB8fCBpc05pbChzb3VyY2UudmFsdWUpIHx8ICFkZWYpIHJldHVybiBzb3VyY2UgYXMgUHJvcGVydHk8VD47IC8vIFNraXAgaWYgbm8ga2V5XG5cbiAgICAvLyBDbG9uZSB0aGUgc291cmNlXG4gICAgY29uc3QgdGFyZ2V0OiBQcm9wZXJ0eTxhbnk+ID0geyBrZXk6IHNvdXJjZS5rZXksIHZhbHVlOiBzb3VyY2UudmFsdWUgfTtcblxuICAgIGNvbnN0IGpvYnM6IFByb21pc2U8YW55PltdID0gW107XG4gICAgLy8gUmVzb2x2ZSB2YWx1ZVxuICAgIHN3aXRjaCAoZGVmLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICB0YXJnZXQudmFsdWUgPSB0b0Jvb2xlYW4oc291cmNlLnZhbHVlIGFzIGFueSwgdG9Cb29sZWFuKGRlZi5kZWZhdWx0VmFsdWUpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2RvdWJsZSc6XG4gICAgICAgIHRhcmdldC52YWx1ZSA9IHRvTnVtYmVyKHNvdXJjZS52YWx1ZSBhcyBhbnksIHRvTnVtYmVyKGRlZi5kZWZhdWx0VmFsdWUpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgY29uc3QgdmFsdWVLZXkgPSBBcHBQcm9wZXJ0eVV0aWxzLmtleSh0YXJnZXQudmFsdWUpO1xuICAgICAgICBpZiAoaXNOb3ROaWxPckJsYW5rKHZhbHVlS2V5KSkge1xuICAgICAgICAgIGNvbnN0IGVudW1WYWx1ZSA9IChkZWYudmFsdWVzIGFzIChzdHJpbmcgfCBQcm9wZXJ0eSlbXSk/LmZpbmQoKGRlZlZhbHVlKSA9PiBkZWZWYWx1ZSAmJiB2YWx1ZUtleSA9PT0gKGRlZlZhbHVlWydrZXknXSB8fCBkZWZWYWx1ZSkpID8/IG51bGw7XG4gICAgICAgICAgdGFyZ2V0LnZhbHVlID0gZW51bVZhbHVlPy5bJ2tleSddID8/IGVudW1WYWx1ZSA/PyBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldC52YWx1ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlbnVtcyc6XG4gICAgICAgIGNvbnN0IHZhbHVlS2V5cyA9IEFycmF5LmlzQXJyYXkoc291cmNlLnZhbHVlKVxuICAgICAgICAgID8gc291cmNlLnZhbHVlLm1hcChBcHBQcm9wZXJ0eVV0aWxzLmtleSkgLy8gQ29weVxuICAgICAgICAgIDogdHlwZW9mIHNvdXJjZS52YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8gc291cmNlLnZhbHVlLnRyaW0oKS5zcGxpdCgvLCsvKVxuICAgICAgICAgICAgOiBbQXBwUHJvcGVydHlVdGlscy5rZXkoc291cmNlLnZhbHVlKV07XG4gICAgICAgIHRhcmdldC52YWx1ZSA9IHZhbHVlS2V5c1xuICAgICAgICAgIC5maWx0ZXIoaXNOb3ROaWwpXG4gICAgICAgICAgLm1hcChcbiAgICAgICAgICAgIChrZXk6IHN0cmluZykgPT5cbiAgICAgICAgICAgICAgKGRlZi52YWx1ZXMgYXMgKHN0cmluZyB8IFByb3BlcnR5KVtdKT8uZmluZCgoZGVmVmFsdWUpID0+IGRlZlZhbHVlICYmIGtleSA9PT0gKGRlZlZhbHVlWydrZXknXSB8fCBkZWZWYWx1ZSkpIHx8IHsga2V5LCB2YWx1ZTogJz8nIH1cbiAgICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VudGl0eSc6XG4gICAgICAgIC8vIERlc2VyaWFsaXplIGVudGl0eSAoZS5nLiBsb2FkIGVudGl0eSBmcm9tIHRoZSBpZClcbiAgICAgICAgY29uc3QgdmFsdWVPclByb21pc2UgPSBBcHBQcm9wZXJ0eVV0aWxzLnJlc29sdmVFbnRpdHkodGFyZ2V0LnZhbHVlLCBkZWYsIG9wdHMpO1xuICAgICAgICBpZiAoaXNQcm9taXNlKHZhbHVlT3JQcm9taXNlKSkge1xuICAgICAgICAgIGpvYnMucHVzaChcbiAgICAgICAgICAgIHZhbHVlT3JQcm9taXNlLnRoZW4oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgIHRhcmdldC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldC52YWx1ZSA9IHZhbHVlT3JQcm9taXNlIGFzIGFueTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VudGl0aWVzJzpcbiAgICAgICAgLy8gQ29udmVydCB2YWx1ZSB0byBhcnJheVxuICAgICAgICB0YXJnZXQudmFsdWUgPSBBcnJheS5pc0FycmF5KHNvdXJjZS52YWx1ZSlcbiAgICAgICAgICA/IHNvdXJjZS52YWx1ZS5zbGljZSgpIC8vIENvcHlcbiAgICAgICAgICA6IHR5cGVvZiBzb3VyY2UudmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICA/IHNvdXJjZS52YWx1ZVxuICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgLm1hcCgodikgPT4gdi50cmltKCkpXG4gICAgICAgICAgICAgICAgLmZpbHRlcihpc05vdE5pbE9yQmxhbmspXG4gICAgICAgICAgICA6IFtdO1xuXG4gICAgICAgIC8vIERlc2VyaWFsaXplIGVhY2ggc3ViLXZhbHVlXG4gICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgIGZvciAobGV0IHN1YlZhbHVlIG9mIHRhcmdldC52YWx1ZSkge1xuICAgICAgICAgIC8vIERlc2VyaWFsaXplIHN1Yi12YWx1ZVxuICAgICAgICAgIGNvbnN0IHN1YlZhbHVlT3JQcm9taXNlID0gQXBwUHJvcGVydHlVdGlscy5yZXNvbHZlRW50aXR5KHN1YlZhbHVlLCBkZWYsIG9wdHMpO1xuXG4gICAgICAgICAgLy8gQWRkIHByb21pc2UgdG8gam9ic1xuICAgICAgICAgIGlmIChpc1Byb21pc2Uoc3ViVmFsdWVPclByb21pc2UpKSB7XG4gICAgICAgICAgICBjb25zdCBmaW5hbEluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICBqb2JzLnB1c2goXG4gICAgICAgICAgICAgIHN1YlZhbHVlT3JQcm9taXNlLnRoZW4oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIHN1YiB2YWx1ZVxuICAgICAgICAgICAgICAgIHRhcmdldC52YWx1ZVtmaW5hbEluZGV4XSA9IHZhbHVlO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gVXBkYXRlIHN1YiB2YWx1ZVxuICAgICAgICAgICAgdGFyZ2V0LnZhbHVlW2luZGV4XSA9IHN1YlZhbHVlT3JQcm9taXNlIGFzIGFueTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIC8hXFwgUmV0dXJuIGFzIHByb21pc2Ugb25seSBpZiBuZWVkIChsZXQgZnVuY3Rpb24gc3luYyB3aGVuIHBvc3NpYmxlKVxuICAgIGlmIChqb2JzLmxlbmd0aCkgcmV0dXJuIFByb21pc2UuYWxsKGpvYnMpLnRoZW4oKCkgPT4gdGFyZ2V0KTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZXNvbHZlRW50aXR5KFxuICAgIHZhbHVlOiBhbnksXG4gICAgZGVmOiBGb3JtRmllbGREZWZpbml0aW9uLFxuICAgIG9wdHM/OiB7XG4gICAgICBkZWZhdWx0U3VnZ2VzdEZuOiBTdWdnZXN0Rm48YW55LCBhbnk+O1xuICAgICAgZGVmYXVsdFN1Z2dlc3RPcHRpb25zPzogRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnM7XG4gICAgICBkZWZhdWx0U2VyaWFsaXplQXR0cmlidXRlPzogc3RyaW5nO1xuICAgIH1cbiAgKTogYW55IHwgUHJvbWlzZTxhbnk+IHtcbiAgICAvLyBVc2UgZGVzZXJpYWxpemUgZnVuY3Rpb24sIGlmIGFueVxuICAgIGlmIChkZWYuZGVzZXJpYWxpemUpIHtcbiAgICAgIHJldHVybiBkZWYuZGVzZXJpYWxpemUodmFsdWUpO1xuICAgIH1cblxuICAgIC8vIE9yIHRyeSB1c2luZyBzdWdnZXN0IGZ1bmN0aW9uXG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUVudGl0eUJ5U3VnZ2VzdCh2YWx1ZSwgZGVmLCBvcHRzKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIHJlc29sdmVFbnRpdHlCeVN1Z2dlc3QoXG4gICAgdmFsdWU6IGFueSxcbiAgICBkZWY6IEZvcm1GaWVsZERlZmluaXRpb24sXG4gICAgb3B0cz86IHtcbiAgICAgIGRlZmF1bHRTdWdnZXN0Rm46IFN1Z2dlc3RGbjxhbnksIGFueT47XG4gICAgICBkZWZhdWx0U3VnZ2VzdE9wdGlvbnM/OiBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucztcbiAgICAgIGRlZmF1bHRTZXJpYWxpemVBdHRyaWJ1dGU/OiBzdHJpbmc7XG4gICAgfVxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHNlcmlhbGl6ZUF0dHJpYnV0ZSA9IGRlZi5zZXJpYWxpemVBdHRyaWJ1dGUgPz8gb3B0cz8uZGVmYXVsdFNlcmlhbGl6ZUF0dHJpYnV0ZSA/PyAnaWQnO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIGlzTm90TmlsKHZhbHVlW3NlcmlhbGl6ZUF0dHJpYnV0ZV0pKSB7XG4gICAgICByZXR1cm4gdmFsdWU7IC8vIEFscmVhZHkgcmVzb2x2ZVxuICAgIH1cblxuICAgIGNvbnN0IHN1Z2dlc3RGbjogU3VnZ2VzdEZuPGFueSwgYW55PiA9IGRlZi5hdXRvY29tcGxldGU/LnN1Z2dlc3RGbiB8fCBvcHRzPy5kZWZhdWx0U3VnZ2VzdEZuO1xuICAgIGlmICghc3VnZ2VzdEZuKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBNaXNzaW5nICdkZXNlcmlhbGl6ZScgb3IgJ2F1dG9jb21wbGV0ZS5zdWdnZXN0Rm4nIGluIHRoZSBmaWVsZCBkZWZpbml0aW9uICcke2RlZi5rZXl9Jy4gQ2Fubm90IGRlc2VyaWFsaXplIHZhbHVlOiAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gXG4gICAgICApO1xuICAgICAgcmV0dXJuIHZhbHVlOyAvLyBTa2lwXG4gICAgfVxuICAgIGxldCBzZWFyY2hWYWx1ZSA9IHZhbHVlO1xuICAgIGNvbnN0IGZpbHRlciA9IHsgLi4uZGVmLmF1dG9jb21wbGV0ZT8uZmlsdGVyIH07IC8vIENvcGUgZmlsdGVyXG4gICAgaWYgKHNlcmlhbGl6ZUF0dHJpYnV0ZSA9PT0gJ2lkJyB8fCBzZXJpYWxpemVBdHRyaWJ1dGUgPT09ICdsYWJlbCcpIHtcbiAgICAgIGZpbHRlcltzZXJpYWxpemVBdHRyaWJ1dGVdID0gc2VyaWFsaXplQXR0cmlidXRlID09PSAnaWQnID8gK3ZhbHVlIDogdmFsdWU7XG4gICAgICBzZWFyY2hWYWx1ZSA9ICcqJztcbiAgICAgIC8vIERFQlVHXG4gICAgICAvL2NvbnNvbGUuZGVidWcoYFtwcm9wZXJ0aWVzLXV0aWxzXSBSZXNvbHZpbmcgZW50aXR5IHdoZXJlIGlkPSR7dmFsdWV9Li4uYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbHRlci5zZWFyY2hBdHRyaWJ1dGUgPSBzZXJpYWxpemVBdHRyaWJ1dGU7XG4gICAgICAvLyBERUJVR1xuICAgICAgLy9jb25zb2xlLmRlYnVnKGBbcHJvcGVydGllcy11dGlsc10gUmVzb2x2aW5nIGVudGl0eSB3aGVyZSAke3NlcmlhbGl6ZUF0dHJpYnV0ZX09JHtzZWFyY2hWYWx1ZX0uLi5gKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gRmV0Y2ggZW50aXR5LCB1c2luZyB0aGUgc3VnZ2VzdCBmdW5jdGlvblxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgc3VnZ2VzdEZuKHNlYXJjaFZhbHVlLCBmaWx0ZXIsIHNlcmlhbGl6ZUF0dHJpYnV0ZSwgJ2FzYycsIHtcbiAgICAgICAgd2l0aFRvdGFsOiBmYWxzZSxcbiAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICBzaXplOiAxLFxuICAgICAgICAuLi5vcHRzPy5kZWZhdWx0U3VnZ2VzdE9wdGlvbnMsXG4gICAgICB9KTtcblxuICAgICAgLy8gR2V0IHJlc3VsdCBhcnJheVxuICAgICAgY29uc3QgZGF0YSA9IEFycmF5LmlzQXJyYXkocmVzKSA/IHJlcyA6IHJlcy5kYXRhO1xuXG4gICAgICBpZiAoZGF0YT8ubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoZGF0YT8ubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBbcHJvcGVydGllcy11dGlsc10gTW9yZSB0aGFuIG9uZSBlbnRpdHkgZm91bmQsIGZvciBvcHRpb24gJHtkZWYua2V5fT0ke3ZhbHVlfSEgUGxlYXNlIGNoZWNrIG9wdGlvbidzIGRlZmluaXRpb24gYW5kIHRoZSAnYXV0b2NvbXBsZXRlLnN1Z2dlc3RGbicgZnVuY3Rpb25gLFxuICAgICAgICAgICAgZGF0YVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBERUJVR1xuICAgICAgICAvL2NvbnNvbGUuZGVidWcoYFtwcm9wZXJ0aWVzLXV0aWxzXSAke2RhdGEubGVuZ3RofSBlbnRpdGllcyBmb3VuZDogYCwgZGF0YSk7XG5cbiAgICAgICAgLy8gT2ssIHdlIGZpbmQgaXQgPT4gc3RvcCBoZXJlXG4gICAgICAgIHJldHVybiBkYXRhWzBdO1xuICAgICAgfVxuXG4gICAgICAvLyBXYXJuLCBidXQgY29udGludWVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFtwcm9wZXJ0aWVzLXV0aWxzXSBVbmFibGUgdG8gcmVzb2x2ZSBlbnRpdHkgZm9yIG9wdGlvbjogJHtkZWYua2V5fT0ke3ZhbHVlfS4gUGxlYXNlIGNoZWNrIG9wdGlvbidzIGRlZmluaXRpb24gYW5kIHRoZSAnYXV0b2NvbXBsZXRlLnN1Z2dlc3RGbicgZnVuY3Rpb25gXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihgW3Byb3BlcnRpZXMtdXRpbHNdIENhbm5vdCByZXNvbHZlIGVudGl0eSBmb3Igb3B0aW9uOiAke2RlZi5rZXl9PSR7dmFsdWV9YCwgZXJyKTtcbiAgICAgIC8vIENvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBtaXNzaW5nIHJlc3VsdFxuICAgIGNvbnN0IHVucmVzb2x2ZWRFbnRpdHkgPSA8YW55PntcbiAgICAgIFtzZXJpYWxpemVBdHRyaWJ1dGVdOiB2YWx1ZSxcbiAgICB9O1xuXG4gICAgLy8gRmlsbCBhdHRyaWJ1dGVzIHdpdGggJz8/J1xuICAgIGRlZi5hdXRvY29tcGxldGU/LmF0dHJpYnV0ZXM/LmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgdW5yZXNvbHZlZEVudGl0eVtrZXldID0gdW5yZXNvbHZlZEVudGl0eVtrZXldID8/ICcnO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVucmVzb2x2ZWRFbnRpdHk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB0b1N0cmluZyh2YWx1ZT86IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlPy50b1N0cmluZygpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Validators } from '@angular/forms';
|
|
3
|
-
import { AppValidatorService } from '../../services/validator/base.validator.class';
|
|
4
|
-
import { isNil, isNotEmptyArray } from '../../../shared/functions';
|
|
5
|
-
import { AppFormArray } from '../array/form-array';
|
|
6
|
-
import { AppPropertiesUtils } from './properties.utils';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/forms";
|
|
9
|
-
export class PropertyValidator extends AppValidatorService {
|
|
10
|
-
formBuilder;
|
|
11
|
-
constructor(formBuilder) {
|
|
12
|
-
super(formBuilder, null);
|
|
13
|
-
this.formBuilder = formBuilder;
|
|
14
|
-
}
|
|
15
|
-
getFormArray(data, opts) {
|
|
16
|
-
const fromArray = new AppFormArray((value) => this.getFormGroup(value, { valueMaxLength: 2000 }), (v1, v2) => this.equals(v1, v2), (value) => this.isEmpty(value), {
|
|
17
|
-
allowReuseControls: false,
|
|
18
|
-
allowEmptyArray: true,
|
|
19
|
-
});
|
|
20
|
-
// Set data, if any
|
|
21
|
-
if (data) {
|
|
22
|
-
const dataArrayOrPromise = AppPropertiesUtils.arrayFromObject(data, opts?.definitions);
|
|
23
|
-
if (Array.isArray(dataArrayOrPromise)) {
|
|
24
|
-
if (isNotEmptyArray(dataArrayOrPromise))
|
|
25
|
-
fromArray.patchValue(dataArrayOrPromise);
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
// If promise: wait and set after
|
|
29
|
-
dataArrayOrPromise
|
|
30
|
-
.catch((err) => {
|
|
31
|
-
console.error('[property-validator] Error during conversion from map to array conversion: ' + (err?.message || err), data, err);
|
|
32
|
-
return null;
|
|
33
|
-
})
|
|
34
|
-
.then((values) => {
|
|
35
|
-
if (isNotEmptyArray(values))
|
|
36
|
-
fromArray.patchValue(values);
|
|
37
|
-
fromArray.updateValueAndValidity();
|
|
38
|
-
});
|
|
39
|
-
// Wait value to be set
|
|
40
|
-
fromArray.markAsPending();
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return fromArray;
|
|
44
|
-
}
|
|
45
|
-
getFormGroup(data, opts) {
|
|
46
|
-
return this.formBuilder.group(this.getFormGroupConfig(data, opts));
|
|
47
|
-
}
|
|
48
|
-
getFormGroupConfig(data, opts) {
|
|
49
|
-
return {
|
|
50
|
-
key: [data?.key ?? null, Validators.compose([Validators.required, Validators.max(50)])],
|
|
51
|
-
value: [
|
|
52
|
-
data?.value ?? null,
|
|
53
|
-
opts?.valueMaxLength > 0 ? Validators.compose([Validators.required, Validators.max(opts.valueMaxLength)]) : Validators.required,
|
|
54
|
-
],
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
equals(v1, v2) {
|
|
58
|
-
return (!v1 && !v2) || v1.key === v2.key;
|
|
59
|
-
}
|
|
60
|
-
isEmpty(obj) {
|
|
61
|
-
return isNil(obj?.key) || isNil(obj.value);
|
|
62
|
-
}
|
|
63
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PropertyValidator, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
64
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PropertyValidator, providedIn: 'root' });
|
|
65
|
-
}
|
|
66
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PropertyValidator, decorators: [{
|
|
67
|
-
type: Injectable,
|
|
68
|
-
args: [{ providedIn: 'root' }]
|
|
69
|
-
}], ctorParameters: () => [{ type: i1.UntypedFormBuilder }] });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2Zvcm0vcHJvcGVydGllcy9wcm9wZXJ0eS52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXdDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFheEQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLG1CQUE2QjtJQUM1QztJQUF0QixZQUFzQixXQUErQjtRQUNuRCxLQUFLLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBREwsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO0lBRXJELENBQUM7SUFFRCxZQUFZLENBQUMsSUFBVSxFQUFFLElBQWlDO1FBQ3hELE1BQU0sU0FBUyxHQUFHLElBQUksWUFBWSxDQUNoQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFDN0QsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFDL0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQzlCO1lBQ0Usa0JBQWtCLEVBQUUsS0FBSztZQUN6QixlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUNGLENBQUM7UUFFRixtQkFBbUI7UUFDbkIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDdkYsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxlQUFlLENBQUMsa0JBQWtCLENBQUM7b0JBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3BGLENBQUM7aUJBQU0sQ0FBQztnQkFDTixpQ0FBaUM7Z0JBQ2pDLGtCQUFrQjtxQkFDZixLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLDZFQUE2RSxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ2hJLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUMsQ0FBQztxQkFDRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDZixJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUM7d0JBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDMUQsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQ3JDLENBQUMsQ0FBQyxDQUFDO2dCQUVMLHVCQUF1QjtnQkFDdkIsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFlLEVBQUUsSUFBK0I7UUFDM0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQWUsRUFBRSxJQUErQjtRQUNqRSxPQUFPO1lBQ0wsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkYsS0FBSyxFQUFFO2dCQUNMLElBQUksRUFBRSxLQUFLLElBQUksSUFBSTtnQkFDbkIsSUFBSSxFQUFFLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVE7YUFDaEk7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFZLEVBQUUsRUFBWTtRQUMvQixPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDM0MsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFhO1FBQ25CLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7d0dBNURVLGlCQUFpQjs0R0FBakIsaUJBQWlCLGNBREosTUFBTTs7NEZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQgeyBBcHBWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmFsaWRhdG9yL2Jhc2UudmFsaWRhdG9yLmNsYXNzJztcbmltcG9ydCB7IGlzTmlsLCBpc05vdEVtcHR5QXJyYXkgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEZvcm1GaWVsZERlZmluaXRpb24gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS9maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBBcHBGb3JtQXJyYXkgfSBmcm9tICcuLi9hcnJheS9mb3JtLWFycmF5JztcbmltcG9ydCB7IEFwcFByb3BlcnRpZXNVdGlscyB9IGZyb20gJy4vcHJvcGVydGllcy51dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcGVydHlWYWxpZGF0b3JPcHRpb25zIHtcbiAgZGVmaW5pdGlvbj86IEZvcm1GaWVsZERlZmluaXRpb247XG4gIHZhbHVlTWF4TGVuZ3RoPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnRpZXNWYWxpZGF0b3JPcHRpb25zIHtcbiAgZGVmaW5pdGlvbnM/OiBGb3JtRmllbGREZWZpbml0aW9uW107XG4gIHZhbHVlTWF4TGVuZ3RoPzogbnVtYmVyO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFByb3BlcnR5VmFsaWRhdG9yIGV4dGVuZHMgQXBwVmFsaWRhdG9yU2VydmljZTxQcm9wZXJ0eT4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcikge1xuICAgIHN1cGVyKGZvcm1CdWlsZGVyLCBudWxsKTtcbiAgfVxuXG4gIGdldEZvcm1BcnJheShkYXRhPzogYW55LCBvcHRzPzogUHJvcGVydGllc1ZhbGlkYXRvck9wdGlvbnMpIHtcbiAgICBjb25zdCBmcm9tQXJyYXkgPSBuZXcgQXBwRm9ybUFycmF5PFByb3BlcnR5LCBVbnR5cGVkRm9ybUdyb3VwPihcbiAgICAgICh2YWx1ZSkgPT4gdGhpcy5nZXRGb3JtR3JvdXAodmFsdWUsIHsgdmFsdWVNYXhMZW5ndGg6IDIwMDAgfSksXG4gICAgICAodjEsIHYyKSA9PiB0aGlzLmVxdWFscyh2MSwgdjIpLFxuICAgICAgKHZhbHVlKSA9PiB0aGlzLmlzRW1wdHkodmFsdWUpLFxuICAgICAge1xuICAgICAgICBhbGxvd1JldXNlQ29udHJvbHM6IGZhbHNlLFxuICAgICAgICBhbGxvd0VtcHR5QXJyYXk6IHRydWUsXG4gICAgICB9XG4gICAgKTtcblxuICAgIC8vIFNldCBkYXRhLCBpZiBhbnlcbiAgICBpZiAoZGF0YSkge1xuICAgICAgY29uc3QgZGF0YUFycmF5T3JQcm9taXNlID0gQXBwUHJvcGVydGllc1V0aWxzLmFycmF5RnJvbU9iamVjdChkYXRhLCBvcHRzPy5kZWZpbml0aW9ucyk7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhQXJyYXlPclByb21pc2UpKSB7XG4gICAgICAgIGlmIChpc05vdEVtcHR5QXJyYXkoZGF0YUFycmF5T3JQcm9taXNlKSkgZnJvbUFycmF5LnBhdGNoVmFsdWUoZGF0YUFycmF5T3JQcm9taXNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIHByb21pc2U6IHdhaXQgYW5kIHNldCBhZnRlclxuICAgICAgICBkYXRhQXJyYXlPclByb21pc2VcbiAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW3Byb3BlcnR5LXZhbGlkYXRvcl0gRXJyb3IgZHVyaW5nIGNvbnZlcnNpb24gZnJvbSBtYXAgdG8gYXJyYXkgY29udmVyc2lvbjogJyArIChlcnI/Lm1lc3NhZ2UgfHwgZXJyKSwgZGF0YSwgZXJyKTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLnRoZW4oKHZhbHVlcykgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTm90RW1wdHlBcnJheSh2YWx1ZXMpKSBmcm9tQXJyYXkucGF0Y2hWYWx1ZSh2YWx1ZXMpO1xuICAgICAgICAgICAgZnJvbUFycmF5LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAvLyBXYWl0IHZhbHVlIHRvIGJlIHNldFxuICAgICAgICBmcm9tQXJyYXkubWFya0FzUGVuZGluZygpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZnJvbUFycmF5O1xuICB9XG5cbiAgZ2V0Rm9ybUdyb3VwKGRhdGE/OiBQcm9wZXJ0eSwgb3B0cz86IFByb3BlcnR5VmFsaWRhdG9yT3B0aW9ucyk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHRoaXMuZ2V0Rm9ybUdyb3VwQ29uZmlnKGRhdGEsIG9wdHMpKTtcbiAgfVxuXG4gIGdldEZvcm1Hcm91cENvbmZpZyhkYXRhPzogUHJvcGVydHksIG9wdHM/OiBQcm9wZXJ0eVZhbGlkYXRvck9wdGlvbnMpOiB7IFtwOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleTogW2RhdGE/LmtleSA/PyBudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4KDUwKV0pXSxcbiAgICAgIHZhbHVlOiBbXG4gICAgICAgIGRhdGE/LnZhbHVlID8/IG51bGwsXG4gICAgICAgIG9wdHM/LnZhbHVlTWF4TGVuZ3RoID4gMCA/IFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXgob3B0cy52YWx1ZU1heExlbmd0aCldKSA6IFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBlcXVhbHModjE6IFByb3BlcnR5LCB2MjogUHJvcGVydHkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKCF2MSAmJiAhdjIpIHx8IHYxLmtleSA9PT0gdjIua2V5O1xuICB9XG5cbiAgaXNFbXB0eShvYmo6IFByb3BlcnR5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzTmlsKG9iaj8ua2V5KSB8fCBpc05pbChvYmoudmFsdWUpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { Component, ViewChild } from '@angular/core';
|
|
2
|
-
import { AppPropertiesForm } from '../properties.form';
|
|
3
|
-
import { StatusIds } from '../../../services/model/model.enum';
|
|
4
|
-
import { suggestFromArray } from '../../../../shared/services';
|
|
5
|
-
import { Validators } from '@angular/forms';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/forms";
|
|
8
|
-
import * as i2 from "../property.validator";
|
|
9
|
-
import * as i3 from "@ionic/angular";
|
|
10
|
-
import * as i4 from "../properties.form";
|
|
11
|
-
const TEST_PROPERTIES = Object.freeze({
|
|
12
|
-
// Entity
|
|
13
|
-
ENTITY: {
|
|
14
|
-
key: 'sumaris.properties.entity',
|
|
15
|
-
label: 'Select one entity',
|
|
16
|
-
type: 'entity',
|
|
17
|
-
autocomplete: {
|
|
18
|
-
showAllOnFocus: true,
|
|
19
|
-
filter: {
|
|
20
|
-
entityName: 'LocationLevel',
|
|
21
|
-
statusIds: [StatusIds.DISABLE, StatusIds.ENABLE],
|
|
22
|
-
},
|
|
23
|
-
attributes: ['label', 'name'],
|
|
24
|
-
},
|
|
25
|
-
defaultValue: null,
|
|
26
|
-
},
|
|
27
|
-
// Entities
|
|
28
|
-
ENTITIES: {
|
|
29
|
-
key: 'sumaris.properties.entities',
|
|
30
|
-
label: 'Select many entities',
|
|
31
|
-
type: 'entities',
|
|
32
|
-
autocomplete: {
|
|
33
|
-
showAllOnFocus: true,
|
|
34
|
-
filter: {
|
|
35
|
-
entityName: 'LocationLevel',
|
|
36
|
-
statusIds: [StatusIds.DISABLE, StatusIds.ENABLE],
|
|
37
|
-
},
|
|
38
|
-
attributes: ['label', 'name'],
|
|
39
|
-
},
|
|
40
|
-
defaultValue: null,
|
|
41
|
-
},
|
|
42
|
-
});
|
|
43
|
-
const FAKE_ENTITIES = [
|
|
44
|
-
{ id: 1, label: 'AAA', name: 'Item A', description: 'Very long description A', comments: 'Very very long comments... again for A' },
|
|
45
|
-
{ id: 2, label: 'BBB', name: 'Item B', description: 'Very long description B', comments: 'Very very long comments... again for B' },
|
|
46
|
-
{ id: 3, label: 'CCC', name: 'Item C', description: 'Very long description C', comments: 'Very very long comments... again for C' },
|
|
47
|
-
];
|
|
48
|
-
export class PropertiesFormTestPage {
|
|
49
|
-
formBuilder;
|
|
50
|
-
pv;
|
|
51
|
-
propertyDefinitions;
|
|
52
|
-
i18nFieldPrefix;
|
|
53
|
-
form;
|
|
54
|
-
propertiesForm;
|
|
55
|
-
constructor(formBuilder, pv) {
|
|
56
|
-
this.formBuilder = formBuilder;
|
|
57
|
-
this.pv = pv;
|
|
58
|
-
this.i18nFieldPrefix = '';
|
|
59
|
-
this.form = formBuilder.group({
|
|
60
|
-
properties: formBuilder.array([
|
|
61
|
-
this.formBuilder.group({
|
|
62
|
-
key: [null, Validators.compose([Validators.required, Validators.max(50)])],
|
|
63
|
-
value: [null, Validators.required],
|
|
64
|
-
}),
|
|
65
|
-
]),
|
|
66
|
-
});
|
|
67
|
-
const suggestFn = (value, filter, sortBy, sortDirection, options) => this.suggestEntity(value, filter, sortBy, sortDirection, options);
|
|
68
|
-
this.propertyDefinitions = Object.values(TEST_PROPERTIES).map((def) => {
|
|
69
|
-
if (def.type === 'entity' || def.type === 'entities') {
|
|
70
|
-
def = { ...def }; // Copy
|
|
71
|
-
def.autocomplete.suggestFn = suggestFn;
|
|
72
|
-
}
|
|
73
|
-
return def;
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
ngOnInit() {
|
|
77
|
-
this.propertiesForm.markAsReady();
|
|
78
|
-
this.propertiesForm.enable();
|
|
79
|
-
}
|
|
80
|
-
async ngAfterViewInit() {
|
|
81
|
-
// Create the map, as it comes from the pod
|
|
82
|
-
const json = {
|
|
83
|
-
// Simple entity
|
|
84
|
-
[TEST_PROPERTIES.ENTITY.key]: FAKE_ENTITIES[0].id.toString(),
|
|
85
|
-
// Multiples entities
|
|
86
|
-
[TEST_PROPERTIES.ENTITIES.key]: [FAKE_ENTITIES[0], FAKE_ENTITIES[1]].map((entity) => entity.id).join(','),
|
|
87
|
-
};
|
|
88
|
-
await this.propertiesForm.setValue(json);
|
|
89
|
-
}
|
|
90
|
-
async suggestEntity(value, filter, sortBy, sortDirection, options) {
|
|
91
|
-
return suggestFromArray(FAKE_ENTITIES, value, filter, sortBy, sortDirection, options);
|
|
92
|
-
}
|
|
93
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PropertiesFormTestPage, deps: [{ token: i1.FormBuilder }, { token: i2.PropertyValidator }], target: i0.ɵɵFactoryTarget.Component });
|
|
94
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PropertiesFormTestPage, selector: "app-properties-form-test", viewQueries: [{ propertyName: "propertiesForm", first: true, predicate: ["propertiesForm"], descendants: true, read: AppPropertiesForm, static: true }], ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Properties form test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n <form [formGroup]=\"form\">\n <app-properties-form\n #propertiesForm\n formArrayName=\"properties\"\n [definitions]=\"propertyDefinitions\"\n [options]=\"{ allowEmptyArray: true }\"\n [showToolbar]=\"true\"\n [canDownload]=\"true\"\n [canImport]=\"true\"\n ></app-properties-form>\n </form>\n</ion-content>\n", dependencies: [{ kind: "component", type: i3.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i3.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i3.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i3.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i3.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonBackButton, selector: "ion-back-button" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i4.AppPropertiesForm, selector: "app-properties-form", inputs: ["showToolbar", "formArrayName", "formArray", "options", "chipColor", "mobile", "appearance", "subscriptSizing", "showHintKey", "hintKeyPrefix", "showMoreButton", "addButtonText", "addButtonTitle", "showAddButton", "panelClass", "panelWidth", "canDownload", "canImport", "showMoreButtonTitle", "definitions", "importPolicy"] }] });
|
|
95
|
-
}
|
|
96
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PropertiesFormTestPage, decorators: [{
|
|
97
|
-
type: Component,
|
|
98
|
-
args: [{ selector: 'app-properties-form-test', template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Properties form test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n <form [formGroup]=\"form\">\n <app-properties-form\n #propertiesForm\n formArrayName=\"properties\"\n [definitions]=\"propertyDefinitions\"\n [options]=\"{ allowEmptyArray: true }\"\n [showToolbar]=\"true\"\n [canDownload]=\"true\"\n [canImport]=\"true\"\n ></app-properties-form>\n </form>\n</ion-content>\n" }]
|
|
99
|
-
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.PropertyValidator }], propDecorators: { propertiesForm: [{
|
|
100
|
-
type: ViewChild,
|
|
101
|
-
args: ['propertiesForm', { read: AppPropertiesForm, static: true }]
|
|
102
|
-
}] } });
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy1mb3JtLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9wcm9wZXJ0aWVzL3Rlc3RpbmcvcHJvcGVydGllcy1mb3JtLnRlc3QudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9wcm9wZXJ0aWVzL3Rlc3RpbmcvcHJvcGVydGllcy1mb3JtLnRlc3QuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQUtwRSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3BDLFNBQVM7SUFDVCxNQUFNLEVBQXVCO1FBQzNCLEdBQUcsRUFBRSwyQkFBMkI7UUFDaEMsS0FBSyxFQUFFLG1CQUFtQjtRQUMxQixJQUFJLEVBQUUsUUFBUTtRQUNkLFlBQVksRUFBRTtZQUNaLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLE1BQU0sRUFBRTtnQkFDTixVQUFVLEVBQUUsZUFBZTtnQkFDM0IsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDO2FBQ2pEO1lBQ0QsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztTQUM5QjtRQUNELFlBQVksRUFBRSxJQUFJO0tBQ25CO0lBRUQsV0FBVztJQUNYLFFBQVEsRUFBdUI7UUFDN0IsR0FBRyxFQUFFLDZCQUE2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SyxDQUFDLGVBQWU7UUFDbkIsMkNBQTJDO1FBQzNDLE1BQU0sSUFBSSxHQUFnQjtZQUN4QixnQkFBZ0I7WUFDaEIsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFO1lBRTVELHFCQUFxQjtZQUNyQixDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUMxRyxDQUFDO1FBQ0YsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRVMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFVLEVBQUUsTUFBVyxFQUFFLE1BQW9CLEVBQUUsYUFBNEIsRUFBRSxPQUFZO1FBQ3JILE9BQU8sZ0JBQWdCLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RixDQUFDO3dHQXBEVSxzQkFBc0I7NEZBQXRCLHNCQUFzQiw2SkFLSSxpQkFBaUIsMkNDNUR4RCxvbkJBdUJBOzs0RkRnQ2Esc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNFLDBCQUEwQjtnSEFRb0MsY0FBYztzQkFBckYsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUZpZWxkRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEFwcFByb3BlcnRpZXNGb3JtIH0gZnJvbSAnLi4vcHJvcGVydGllcy5mb3JtJztcbmltcG9ydCB7IFN0YXR1c0lkcyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGVsL21vZGVsLmVudW0nO1xuaW1wb3J0IHsgc3VnZ2VzdEZyb21BcnJheSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBMb2FkUmVzdWx0LCBTdWdnZXN0Rm4gfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFByb3BlcnR5VmFsaWRhdG9yIH0gZnJvbSAnLi4vcHJvcGVydHkudmFsaWRhdG9yJztcbmltcG9ydCB7IFByb3BlcnR5TWFwIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcblxuY29uc3QgVEVTVF9QUk9QRVJUSUVTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIC8vIEVudGl0eVxuICBFTlRJVFk6IDxGb3JtRmllbGREZWZpbml0aW9uPntcbiAgICBrZXk6ICdzdW1hcmlzLnByb3BlcnRpZXMuZW50aXR5JyxcbiAgICBsYWJlbDogJ1NlbGVjdCBvbmUgZW50aXR5JyxcbiAgICB0eXBlOiAnZW50aXR5JyxcbiAgICBhdXRvY29tcGxldGU6IHtcbiAgICAgIHNob3dBbGxPbkZvY3VzOiB0cnVlLFxuICAgICAgZmlsdGVyOiB7XG4gICAgICAgIGVudGl0eU5hbWU6ICdMb2NhdGlvbkxldmVsJyxcbiAgICAgICAgc3RhdHVzSWRzOiBbU3RhdHVzSWRzLkRJU0FCTEUsIFN0YXR1c0lkcy5FTkFCTEVdLFxuICAgICAgfSxcbiAgICAgIGF0dHJpYnV0ZXM6IFsnbGFiZWwnLCAnbmFtZSddLFxuICAgIH0sXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICB9LFxuXG4gIC8vIEVudGl0aWVzXG4gIEVOVElUSUVTOiA8Rm9ybUZpZWxkRGVmaW5pdGlvbj57XG4gICAga2V5OiAnc3VtYXJpcy5wcm9wZXJ0aWVzLmVudGl0aWVzJyxcbiAgICBsYWJlbDogJ1NlbGVjdCBtYW55IGVudGl0aWVzJyxcbiAgICB0eXBlOiAnZW50aXRpZXMnLFxuICAgIGF1dG9jb21wbGV0ZToge1xuICAgICAgc2hvd0FsbE9uRm9jdXM6IHRydWUsXG4gICAgICBmaWx0ZXI6IHtcbiAgICAgICAgZW50aXR5TmFtZTogJ0xvY2F0aW9uTGV2ZWwnLFxuICAgICAgICBzdGF0dXNJZHM6IFtTdGF0dXNJZHMuRElTQUJMRSwgU3RhdHVzSWRzLkVOQUJMRV0sXG4gICAgICB9LFxuICAgICAgYXR0cmlidXRlczogWydsYWJlbCcsICduYW1lJ10sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gIH0sXG59KTtcblxuY29uc3QgRkFLRV9FTlRJVElFUyA9IFtcbiAgeyBpZDogMSwgbGFiZWw6ICdBQUEnLCBuYW1lOiAnSXRlbSBBJywgZGVzY3JpcHRpb246ICdWZXJ5IGxvbmcgZGVzY3JpcHRpb24gQScsIGNvbW1lbnRzOiAnVmVyeSB2ZXJ5IGxvbmcgY29tbWVudHMuLi4gYWdhaW4gZm9yIEEnIH0sXG4gIHsgaWQ6IDIsIGxhYmVsOiAnQkJCJywgbmFtZTogJ0l0ZW0gQicsIGRlc2NyaXB0aW9uOiAnVmVyeSBsb25nIGRlc2NyaXB0aW9uIEInLCBjb21tZW50czogJ1ZlcnkgdmVyeSBsb25nIGNvbW1lbnRzLi4uIGFnYWluIGZvciBCJyB9LFxuICB7IGlkOiAzLCBsYWJlbDogJ0NDQycsIG5hbWU6ICdJdGVtIEMnLCBkZXNjcmlwdGlvbjogJ1ZlcnkgbG9uZyBkZXNjcmlwdGlvbiBDJywgY29tbWVudHM6ICdWZXJ5IHZlcnkgbG9uZyBjb21tZW50cy4uLiBhZ2FpbiBmb3IgQycgfSxcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wcm9wZXJ0aWVzLWZvcm0tdGVzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0aWVzLWZvcm0udGVzdC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvcGVydGllc0Zvcm1UZXN0UGFnZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3BlcnR5RGVmaW5pdGlvbnM6IEZvcm1GaWVsZERlZmluaXRpb25bXTtcbiAgaTE4bkZpZWxkUHJlZml4OiBzdHJpbmc7XG4gIGZvcm06IEZvcm1Hcm91cDtcblxuICBAVmlld0NoaWxkKCdwcm9wZXJ0aWVzRm9ybScsIHsgcmVhZDogQXBwUHJvcGVydGllc0Zvcm0sIHN0YXRpYzogdHJ1ZSB9KSBwcm9wZXJ0aWVzRm9ybTogQXBwUHJvcGVydGllc0Zvcm07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcm90ZWN0ZWQgcHY6IFByb3BlcnR5VmFsaWRhdG9yXG4gICkge1xuICAgIHRoaXMuaTE4bkZpZWxkUHJlZml4ID0gJyc7XG4gICAgdGhpcy5mb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgcHJvcGVydGllczogZm9ybUJ1aWxkZXIuYXJyYXkoW1xuICAgICAgICB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICBrZXk6IFtudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4KDUwKV0pXSxcbiAgICAgICAgICB2YWx1ZTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICB9KSxcbiAgICAgIF0pLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3VnZ2VzdEZuOiBTdWdnZXN0Rm48YW55LCBhbnk+ID0gKHZhbHVlLCBmaWx0ZXIsIHNvcnRCeSwgc29ydERpcmVjdGlvbiwgb3B0aW9ucykgPT5cbiAgICAgIHRoaXMuc3VnZ2VzdEVudGl0eSh2YWx1ZSwgZmlsdGVyLCBzb3J0QnksIHNvcnREaXJlY3Rpb24sIG9wdGlvbnMpO1xuXG4gICAgdGhpcy5wcm9wZXJ0eURlZmluaXRpb25zID0gT2JqZWN0LnZhbHVlcyhURVNUX1BST1BFUlRJRVMpLm1hcCgoZGVmKSA9PiB7XG4gICAgICBpZiAoZGVmLnR5cGUgPT09ICdlbnRpdHknIHx8IGRlZi50eXBlID09PSAnZW50aXRpZXMnKSB7XG4gICAgICAgIGRlZiA9IHsgLi4uZGVmIH07IC8vIENvcHlcbiAgICAgICAgZGVmLmF1dG9jb21wbGV0ZS5zdWdnZXN0Rm4gPSBzdWdnZXN0Rm47XG4gICAgICB9XG4gICAgICByZXR1cm4gZGVmO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wcm9wZXJ0aWVzRm9ybS5tYXJrQXNSZWFkeSgpO1xuICAgIHRoaXMucHJvcGVydGllc0Zvcm0uZW5hYmxlKCk7XG4gIH1cblxuICBhc3luYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gQ3JlYXRlIHRoZSBtYXAsIGFzIGl0IGNvbWVzIGZyb20gdGhlIHBvZFxuICAgIGNvbnN0IGpzb24gPSA8UHJvcGVydHlNYXA+e1xuICAgICAgLy8gU2ltcGxlIGVudGl0eVxuICAgICAgW1RFU1RfUFJPUEVSVElFUy5FTlRJVFkua2V5XTogRkFLRV9FTlRJVElFU1swXS5pZC50b1N0cmluZygpLFxuXG4gICAgICAvLyBNdWx0aXBsZXMgZW50aXRpZXNcbiAgICAgIFtURVNUX1BST1BFUlRJRVMuRU5USVRJRVMua2V5XTogW0ZBS0VfRU5USVRJRVNbMF0sIEZBS0VfRU5USVRJRVNbMV1dLm1hcCgoZW50aXR5KSA9PiBlbnRpdHkuaWQpLmpvaW4oJywnKSxcbiAgICB9O1xuICAgIGF3YWl0IHRoaXMucHJvcGVydGllc0Zvcm0uc2V0VmFsdWUoanNvbik7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc3VnZ2VzdEVudGl0eSh2YWx1ZTogYW55LCBmaWx0ZXI6IGFueSwgc29ydEJ5OiBhbnkgfCBzdHJpbmcsIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb24sIG9wdGlvbnM6IGFueSk6IFByb21pc2U8TG9hZFJlc3VsdDxhbnk+PiB7XG4gICAgcmV0dXJuIHN1Z2dlc3RGcm9tQXJyYXkoRkFLRV9FTlRJVElFUywgdmFsdWUsIGZpbHRlciwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uLCBvcHRpb25zKTtcbiAgfVxufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJhY2stYnV0dG9uPjwvaW9uLWJhY2stYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG5cbiAgICA8aW9uLXRpdGxlPlByb3BlcnRpZXMgZm9ybSB0ZXN0IHBhZ2U8L2lvbi10aXRsZT5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgPGFwcC1wcm9wZXJ0aWVzLWZvcm1cbiAgICAgICNwcm9wZXJ0aWVzRm9ybVxuICAgICAgZm9ybUFycmF5TmFtZT1cInByb3BlcnRpZXNcIlxuICAgICAgW2RlZmluaXRpb25zXT1cInByb3BlcnR5RGVmaW5pdGlvbnNcIlxuICAgICAgW29wdGlvbnNdPVwieyBhbGxvd0VtcHR5QXJyYXk6IHRydWUgfVwiXG4gICAgICBbc2hvd1Rvb2xiYXJdPVwidHJ1ZVwiXG4gICAgICBbY2FuRG93bmxvYWRdPVwidHJ1ZVwiXG4gICAgICBbY2FuSW1wb3J0XT1cInRydWVcIlxuICAgID48L2FwcC1wcm9wZXJ0aWVzLWZvcm0+XG4gIDwvZm9ybT5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { RouterModule } from '@angular/router';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
5
|
-
import { PropertiesFormTestPage } from './properties-form.test';
|
|
6
|
-
import { SharedModule } from '../../../../shared/shared.module';
|
|
7
|
-
import { CoreModule } from '../../../core.module';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@ngx-translate/core";
|
|
10
|
-
export class PropertiesFormTestingModule {
|
|
11
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PropertiesFormTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: PropertiesFormTestingModule, declarations: [PropertiesFormTestPage], imports: [CommonModule, SharedModule, CoreModule, i1.TranslateModule], exports: [RouterModule, PropertiesFormTestPage] });
|
|
13
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PropertiesFormTestingModule, imports: [CommonModule, SharedModule, CoreModule, TranslateModule.forChild(), RouterModule] });
|
|
14
|
-
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PropertiesFormTestingModule, decorators: [{
|
|
16
|
-
type: NgModule,
|
|
17
|
-
args: [{
|
|
18
|
-
imports: [CommonModule, SharedModule, CoreModule, TranslateModule.forChild()],
|
|
19
|
-
declarations: [PropertiesFormTestPage],
|
|
20
|
-
exports: [RouterModule, PropertiesFormTestPage],
|
|
21
|
-
}]
|
|
22
|
-
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy1mb3JtLnRlc3RpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2Zvcm0vcHJvcGVydGllcy90ZXN0aW5nL3Byb3BlcnRpZXMtZm9ybS50ZXN0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQU9sRCxNQUFNLE9BQU8sMkJBQTJCO3dHQUEzQiwyQkFBMkI7eUdBQTNCLDJCQUEyQixpQkFIdkIsc0JBQXNCLGFBRDNCLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxpQ0FFdEMsWUFBWSxFQUFFLHNCQUFzQjt5R0FFbkMsMkJBQTJCLFlBSjVCLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsRUFFbEUsWUFBWTs7NEZBRVgsMkJBQTJCO2tCQUx2QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDN0UsWUFBWSxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ3RDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxzQkFBc0IsQ0FBQztpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFByb3BlcnRpZXNGb3JtVGVzdFBhZ2UgfSBmcm9tICcuL3Byb3BlcnRpZXMtZm9ybS50ZXN0JztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb3JlLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNoYXJlZE1vZHVsZSwgQ29yZU1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLmZvckNoaWxkKCldLFxuICBkZWNsYXJhdGlvbnM6IFtQcm9wZXJ0aWVzRm9ybVRlc3RQYWdlXSxcbiAgZXhwb3J0czogW1JvdXRlck1vZHVsZSwgUHJvcGVydGllc0Zvcm1UZXN0UGFnZV0sXG59KVxuZXhwb3J0IGNsYXNzIFByb3BlcnRpZXNGb3JtVGVzdGluZ01vZHVsZSB7fVxuIl19
|