@messaia/cdk 18.2.3 → 19.0.0-rc02
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/fesm2022/messaia-cdk.mjs +1592 -1239
- package/fesm2022/messaia-cdk.mjs.map +1 -1
- package/lib/base/base.module.d.ts +14 -13
- package/lib/base/components/base.component.d.ts +1 -1
- package/lib/base/components/generic-embedded-list.component.d.ts +1 -1
- package/lib/base/components/generic-form-base.component.d.ts +3 -2
- package/lib/base/components/generic-form.component.d.ts +1 -1
- package/lib/base/components/generic-list.component.d.ts +23 -3
- package/lib/base/components/generic-reactive-form.component.d.ts +1 -1
- package/lib/base/constants/common.d.ts +2 -0
- package/lib/base/helpers/auth-helper.d.ts +1 -1
- package/lib/chips/components/chips.component.d.ts +5 -16
- package/lib/common/functions/utils.d.ts +1 -1
- package/lib/common/helpers/app-storage.d.ts +1 -1
- package/lib/common/styles/_layout.scss +1 -1
- package/lib/common/styles/_variables.scss +4 -25
- package/lib/common/styles/colors/_colors-dark.scss +2 -0
- package/lib/common/styles/colors/_colors.scss +34 -4
- package/lib/common/styles/core/_button.scss +7 -21
- package/lib/common/styles/core/_card.scss +19 -88
- package/lib/common/styles/core/_core.scss +10 -21
- package/lib/common/styles/core/_overrides.scss +45 -0
- package/lib/common/styles/core/_sidenav.scss +9 -7
- package/lib/common/styles/core/_structure.scss +4 -11
- package/lib/common/styles/font/_font.scss +5 -13
- package/lib/common/styles/m2/_common-theme.scss +10 -10
- package/lib/common/styles/m2/platform.scss +13 -0
- package/lib/common/styles/m3/_common-theme.scss +27 -10
- package/lib/common/styles/m3/platform.scss +13 -0
- package/lib/common/styles/utilities/_general.scss +522 -492
- package/lib/common/styles/utilities/_pull.scss +23 -30
- package/lib/common/styles/utilities/_push.scss +23 -30
- package/lib/common/styles/utilities/_size.scss +3 -3
- package/lib/common/styles/utilities/_utilities.scss +14 -14
- package/lib/common/theming/_m2-all-theme.scss +4 -11
- package/lib/form-validators/directives/base-directive.d.ts +1 -1
- package/lib/form-validators/directives/template-validations/base-validator.directive.d.ts +1 -1
- package/lib/form-validators/directives/template-validations/control-expression-process.d.ts +1 -1
- package/lib/form-validators/services/rx-form-array.d.ts +2 -2
- package/lib/form-validators/util/reset-form.d.ts +3 -3
- package/lib/forms/directives/mat-form-field-editor.directive.d.ts +31 -28
- package/lib/forms/forms.module.d.ts +4 -3
- package/lib/forms/helpers/abstract-mat-form-field.d.ts +147 -91
- package/lib/forms/helpers/abstract-select-form-field.component.d.ts +144 -67
- package/lib/forms/helpers/value-accessor-base.d.ts +1 -1
- package/lib/layout/_m2-layout-theme.scss +14 -50
- package/lib/layout/layout-nav/layout-nav.component.d.ts +7 -1
- package/lib/layout/layout-toggle.class.d.ts +1 -1
- package/lib/list/components/list.component.d.ts +3 -15
- package/lib/menu/components/menu.component.d.ts +16 -1
- package/lib/menu/menu.module.d.ts +3 -2
- package/lib/select/components/select.component.d.ts +3 -16
- package/lib/table/components/dynamic-table/dynamic-table.component.d.ts +5 -1
- package/lib/table/components/filter-select/filter-select.component.d.ts +2 -3
- package/lib/table/models/table-definition.d.ts +69 -20
- package/package.json +3 -5
- package/esm2022/lib/base/base.module.mjs +0 -114
- package/esm2022/lib/base/components/base.component.mjs +0 -904
- package/esm2022/lib/base/components/dynamic-table-config-dialog/dynamic-table-config-dialog.comnponent.mjs +0 -123
- package/esm2022/lib/base/components/generic-embedded-list.component.mjs +0 -197
- package/esm2022/lib/base/components/generic-form-base.component.mjs +0 -891
- package/esm2022/lib/base/components/generic-form.component.mjs +0 -44
- package/esm2022/lib/base/components/generic-list.component.mjs +0 -966
- package/esm2022/lib/base/components/generic-reactive-form.component.mjs +0 -101
- package/esm2022/lib/base/components/task-dialog/task-dialog.component.mjs +0 -147
- package/esm2022/lib/base/constants/common.mjs +0 -92
- package/esm2022/lib/base/constants/global-roles.mjs +0 -9
- package/esm2022/lib/base/enums/message-type.mjs +0 -7
- package/esm2022/lib/base/helpers/auth-helper.mjs +0 -53
- package/esm2022/lib/base/interceptors/base.interceptor.mjs +0 -168
- package/esm2022/lib/base/interceptors/caching-interceptor.mjs +0 -67
- package/esm2022/lib/base/interceptors/loading.interceptor.mjs +0 -64
- package/esm2022/lib/base/interfaces/ibase-component.mjs +0 -2
- package/esm2022/lib/base/interfaces/igeneric-form-base.mjs +0 -2
- package/esm2022/lib/base/interfaces/igeneric-list-component.mjs +0 -2
- package/esm2022/lib/base/interfaces/igeneric-reactive-form-base.mjs +0 -2
- package/esm2022/lib/base/models/auth-user.mjs +0 -18
- package/esm2022/lib/base/models/task-dialog-data.mjs +0 -85
- package/esm2022/lib/base/public_api.mjs +0 -2
- package/esm2022/lib/base/services/file.service.mjs +0 -18
- package/esm2022/lib/base/services/loading-screen.service.mjs +0 -45
- package/esm2022/lib/base/services/print.service.mjs +0 -41
- package/esm2022/lib/chips/chips.module.mjs +0 -77
- package/esm2022/lib/chips/components/chips.component.mjs +0 -702
- package/esm2022/lib/chips/directives/autocomplete-option.directive.mjs +0 -18
- package/esm2022/lib/chips/directives/chip.directive.mjs +0 -18
- package/esm2022/lib/chips/public_api.mjs +0 -3
- package/esm2022/lib/common/animations/collapse/collapse.animation.mjs +0 -33
- package/esm2022/lib/common/animations/common/interfaces.mjs +0 -2
- package/esm2022/lib/common/behaviors/constructor.mjs +0 -2
- package/esm2022/lib/common/behaviors/control-value-accesor.mixin.mjs +0 -41
- package/esm2022/lib/common/behaviors/disabled.mixin.mjs +0 -24
- package/esm2022/lib/common/common.module.mjs +0 -176
- package/esm2022/lib/common/constants/constants.mjs +0 -3
- package/esm2022/lib/common/directives/autofocus.directive.mjs +0 -62
- package/esm2022/lib/common/directives/delayed-hover.directive.mjs +0 -133
- package/esm2022/lib/common/directives/disable-control.directive.mjs +0 -35
- package/esm2022/lib/common/enums/app-event-type.mjs +0 -6
- package/esm2022/lib/common/enums/filter-glue.mjs +0 -16
- package/esm2022/lib/common/enums/filter-operator.mjs +0 -15
- package/esm2022/lib/common/enums/salutation.mjs +0 -7
- package/esm2022/lib/common/functions/decorators.mjs +0 -22
- package/esm2022/lib/common/functions/functions.mjs +0 -22
- package/esm2022/lib/common/functions/utils.mjs +0 -271
- package/esm2022/lib/common/helpers/app-storage.mjs +0 -77
- package/esm2022/lib/common/helpers/delegate.mjs +0 -2
- package/esm2022/lib/common/helpers/dynamic-builder.mjs +0 -52
- package/esm2022/lib/common/helpers/dynamic-component-compiler.mjs +0 -11
- package/esm2022/lib/common/models/action-item.mjs +0 -77
- package/esm2022/lib/common/models/app-event.mjs +0 -21
- package/esm2022/lib/common/models/app-setting.mjs +0 -92
- package/esm2022/lib/common/models/audit-entity.mjs +0 -53
- package/esm2022/lib/common/models/audit-user.mjs +0 -24
- package/esm2022/lib/common/models/base-entity.mjs +0 -40
- package/esm2022/lib/common/models/common-error.mjs +0 -29
- package/esm2022/lib/common/models/common-handler-context.mjs +0 -45
- package/esm2022/lib/common/models/displayname-number-projection.mjs +0 -56
- package/esm2022/lib/common/models/displayname-projection.mjs +0 -38
- package/esm2022/lib/common/models/entity.mjs +0 -2
- package/esm2022/lib/common/models/enum-item.mjs +0 -2
- package/esm2022/lib/common/models/enum-metadata.mjs +0 -44
- package/esm2022/lib/common/models/filter-field.mjs +0 -2
- package/esm2022/lib/common/models/filter.mjs +0 -2
- package/esm2022/lib/common/models/icommon-handler-context.mjs +0 -2
- package/esm2022/lib/common/models/icon.mjs +0 -42
- package/esm2022/lib/common/models/key-value.mjs +0 -11
- package/esm2022/lib/common/models/modifiable-entity.mjs +0 -22
- package/esm2022/lib/common/models/name-number-projection.mjs +0 -35
- package/esm2022/lib/common/models/name-projection.mjs +0 -25
- package/esm2022/lib/common/models/permission.mjs +0 -29
- package/esm2022/lib/common/models/save-action.mjs +0 -7
- package/esm2022/lib/common/models/suffix-button.mjs +0 -15
- package/esm2022/lib/common/models/title-projection.mjs +0 -25
- package/esm2022/lib/common/pipes/bind.mjs +0 -31
- package/esm2022/lib/common/pipes/data-source.pipe.mjs +0 -15
- package/esm2022/lib/common/pipes/enum.pipe.mjs +0 -41
- package/esm2022/lib/common/pipes/file-size.pipe.mjs +0 -35
- package/esm2022/lib/common/pipes/filter.pipe.mjs +0 -54
- package/esm2022/lib/common/pipes/first-letter.mjs +0 -24
- package/esm2022/lib/common/pipes/form-array.pipe.mjs +0 -14
- package/esm2022/lib/common/pipes/form-control.pipe.mjs +0 -14
- package/esm2022/lib/common/pipes/form-group.pipe.mjs +0 -14
- package/esm2022/lib/common/pipes/func.pipe.mjs +0 -14
- package/esm2022/lib/common/pipes/join.pipe.mjs +0 -26
- package/esm2022/lib/common/pipes/keys.mjs +0 -18
- package/esm2022/lib/common/pipes/map.pipe.mjs +0 -48
- package/esm2022/lib/common/pipes/month-name.pipe.mjs +0 -25
- package/esm2022/lib/common/pipes/nested-property.mjs +0 -29
- package/esm2022/lib/common/pipes/only-number.mjs +0 -58
- package/esm2022/lib/common/pipes/order.pipe.mjs +0 -269
- package/esm2022/lib/common/pipes/placeholder.pipe.mjs +0 -26
- package/esm2022/lib/common/pipes/property-join.pipe.mjs +0 -27
- package/esm2022/lib/common/pipes/safe-html.pipe.mjs +0 -32
- package/esm2022/lib/common/pipes/split.pipe.mjs +0 -25
- package/esm2022/lib/common/pipes/time.pipe.mjs +0 -21
- package/esm2022/lib/common/pipes/titlecase.pipe.mjs +0 -14
- package/esm2022/lib/common/pipes/truncate.pipe.mjs +0 -15
- package/esm2022/lib/common/pipes/values.mjs +0 -14
- package/esm2022/lib/common/public_api.mjs +0 -41
- package/esm2022/lib/common/services/base.service.mjs +0 -19
- package/esm2022/lib/common/services/context-helper.mjs +0 -17
- package/esm2022/lib/common/services/enum.service.mjs +0 -81
- package/esm2022/lib/common/services/event-queue.service.mjs +0 -31
- package/esm2022/lib/common/services/service-locator.mjs +0 -25
- package/esm2022/lib/common/templates/templates.mjs +0 -87
- package/esm2022/lib/dialogs/alert-dialog/alert-dialog.component.mjs +0 -46
- package/esm2022/lib/dialogs/confirm-dialog/confirm-dialog.component.mjs +0 -60
- package/esm2022/lib/dialogs/dialog.component.mjs +0 -59
- package/esm2022/lib/dialogs/dialogs.module.mjs +0 -72
- package/esm2022/lib/dialogs/prompt-dialog/prompt-dialog.component.mjs +0 -44
- package/esm2022/lib/dialogs/public_api.mjs +0 -2
- package/esm2022/lib/dialogs/services/dialog.service.mjs +0 -154
- package/esm2022/lib/file/file-input.component.mjs +0 -334
- package/esm2022/lib/file/file.module.mjs +0 -37
- package/esm2022/lib/file/public_api.mjs +0 -2
- package/esm2022/lib/form-validators/abstract/typed-form.mjs +0 -13
- package/esm2022/lib/form-validators/algorithm/luhn-algorithm.mjs +0 -33
- package/esm2022/lib/form-validators/const/app-validators.const.mjs +0 -68
- package/esm2022/lib/form-validators/const/app.const.mjs +0 -65
- package/esm2022/lib/form-validators/const/config-names.const.mjs +0 -33
- package/esm2022/lib/form-validators/const/config-required-fields.const.mjs +0 -35
- package/esm2022/lib/form-validators/const/decorators.const.mjs +0 -23
- package/esm2022/lib/form-validators/const/events.const.mjs +0 -53
- package/esm2022/lib/form-validators/const/html-elements.const.mjs +0 -25
- package/esm2022/lib/form-validators/const/iban-country-wise-regex.const.mjs +0 -80
- package/esm2022/lib/form-validators/const/index.mjs +0 -6
- package/esm2022/lib/form-validators/const/operators.const.mjs +0 -7
- package/esm2022/lib/form-validators/const/validation-alphabet-locale.const.mjs +0 -9
- package/esm2022/lib/form-validators/const/validator.const.mjs +0 -29
- package/esm2022/lib/form-validators/core/annotation-types.mjs +0 -75
- package/esm2022/lib/form-validators/core/default-container.mjs +0 -500
- package/esm2022/lib/form-validators/decorators/allOf.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/alpha.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/alphaNumeric.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/and.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/ascii.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/async.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/base-decorator.function.mjs +0 -7
- package/esm2022/lib/form-validators/decorators/choice.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/compare.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/compose.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/contains.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/credit-card.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/cusip.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/custom.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/dataUri.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/date.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/different.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/digit.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/email.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/endsWith.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/even.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/extension.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/factor.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/file.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/fileSize.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/greater-than-equal-to.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/greater-than.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/grid.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/hexColor.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/image.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/index.mjs +0 -93
- package/esm2022/lib/form-validators/decorators/json.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/latLong.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/latitude.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/leapYear.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/less-than-equal-to.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/less-than.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/longitude.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/lowercase.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/mac.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/mask.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/maxDate.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/maxLength.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/maxNumber.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/maxTime.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/minDate.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/minLength.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/minNumber.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/minTime.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/model.decorator.mjs +0 -7
- package/esm2022/lib/form-validators/decorators/non-validation-decorators/disable.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/non-validation-decorators/elementClass.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/non-validation-decorators/error.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/non-validation-decorators/update-on.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/noneOf.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/not.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/notEmpty.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/numeric.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/odd.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/oneOf.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/or.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/password.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/pattern.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/port.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/primeNumber.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/prop-array.decorator.mjs +0 -18
- package/esm2022/lib/form-validators/decorators/prop-object.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/prop.decorator.mjs +0 -18
- package/esm2022/lib/form-validators/decorators/range.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/required.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/requiredTrue.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/rule.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/sanitize/blacklist.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/escape.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/ltrim.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/prefix.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/rtrim.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/sanitize.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/stripLow.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/suffix.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toBoolean.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toDate.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toDouble.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toFloat.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toInt.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toString.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/trim.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/whitelist.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/startsWith.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/time.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/unique.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/uppercase.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/url.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/directives/base-directive.mjs +0 -75
- package/esm2022/lib/form-validators/directives/control-host.directive.mjs +0 -55
- package/esm2022/lib/form-validators/directives/html-control-template.directive.mjs +0 -36
- package/esm2022/lib/form-validators/directives/rx-form.directive.mjs +0 -234
- package/esm2022/lib/form-validators/directives/template-validations/async-validation.directive.mjs +0 -40
- package/esm2022/lib/form-validators/directives/template-validations/base-validator.directive.mjs +0 -76
- package/esm2022/lib/form-validators/directives/template-validations/control-expression-process.mjs +0 -60
- package/esm2022/lib/form-validators/directives/template-validations/file-control.directive.mjs +0 -122
- package/esm2022/lib/form-validators/directives/template-validations/image-file-control.directive.mjs +0 -74
- package/esm2022/lib/form-validators/directives/template-validations/rxformcontrol.directive.mjs +0 -394
- package/esm2022/lib/form-validators/domain/disable-provider.mjs +0 -198
- package/esm2022/lib/form-validators/domain/element-processor/decimal.provider.mjs +0 -134
- package/esm2022/lib/form-validators/domain/element-processor/mask.provider.mjs +0 -453
- package/esm2022/lib/form-validators/domain/form-data.mjs +0 -93
- package/esm2022/lib/form-validators/enums/error-message-binding-strategy.mjs +0 -11
- package/esm2022/lib/form-validators/enums/index.mjs +0 -5
- package/esm2022/lib/form-validators/enums/ip-version.mjs +0 -7
- package/esm2022/lib/form-validators/enums/numeric-value-type.mjs +0 -7
- package/esm2022/lib/form-validators/enums/reset-type.mjs +0 -10
- package/esm2022/lib/form-validators/enums/url-validation-type.mjs +0 -7
- package/esm2022/lib/form-validators/models/config/alpha-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/array-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/base-config-fn.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/base-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/base-date-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/choice-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/compare-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/component-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/compose-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/contains-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/credit-card-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/custom-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/date-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/default-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/digit-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/disable-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/element-class-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/email-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/error-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/extension-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/factor-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/field-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/file-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/hex-color-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/iban-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/image-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/index.mjs +0 -35
- package/esm2022/lib/form-validators/models/config/ip-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/logical-operator-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/mask-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/max-date-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/message-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/min-date-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/model-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/number-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/numeric-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/password-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/pattern-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/prop-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/props-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/range-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/relational-operator-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/required-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/rule-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/sanitize-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/size-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/string-comparison-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/string-value-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/time-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/todate-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/unique-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/update-on-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/url-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/control-info.mjs +0 -2
- package/esm2022/lib/form-validators/models/data-sanitizer.mjs +0 -2
- package/esm2022/lib/form-validators/models/decorator-configuration.mjs +0 -2
- package/esm2022/lib/form-validators/models/form-builder-configuration.mjs +0 -58
- package/esm2022/lib/form-validators/models/index.mjs +0 -3
- package/esm2022/lib/form-validators/models/instance-container.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/array-prop-instance-config.interface.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/auto-instance-config.interface.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/form-data-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/i-abstract-control.mjs +0 -30
- package/esm2022/lib/form-validators/models/interface/i-form-group.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/instance-argument.interface.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/object-prop-instance-config.interface.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/options.mjs +0 -2
- package/esm2022/lib/form-validators/models/password-validation.model.mjs +0 -2
- package/esm2022/lib/form-validators/models/prop-validation-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/property-info.mjs +0 -2
- package/esm2022/lib/form-validators/public_api.mjs +0 -26
- package/esm2022/lib/form-validators/reactive-form-validators/allOf.validator.mjs +0 -33
- package/esm2022/lib/form-validators/reactive-form-validators/alpha.validator.mjs +0 -15
- package/esm2022/lib/form-validators/reactive-form-validators/alphaNumeric.validator.mjs +0 -15
- package/esm2022/lib/form-validators/reactive-form-validators/and.validator.mjs +0 -38
- package/esm2022/lib/form-validators/reactive-form-validators/ascii.validator.mjs +0 -15
- package/esm2022/lib/form-validators/reactive-form-validators/async/base.async.validator.mjs +0 -45
- package/esm2022/lib/form-validators/reactive-form-validators/choice.validator.mjs +0 -31
- package/esm2022/lib/form-validators/reactive-form-validators/compare.validator.mjs +0 -32
- package/esm2022/lib/form-validators/reactive-form-validators/compose.validator.mjs +0 -34
- package/esm2022/lib/form-validators/reactive-form-validators/conditional-change.validator.mjs +0 -63
- package/esm2022/lib/form-validators/reactive-form-validators/contains.validator.mjs +0 -22
- package/esm2022/lib/form-validators/reactive-form-validators/credit-card.validator.mjs +0 -48
- package/esm2022/lib/form-validators/reactive-form-validators/cusip.validator.mjs +0 -38
- package/esm2022/lib/form-validators/reactive-form-validators/custom.validator.mjs +0 -25
- package/esm2022/lib/form-validators/reactive-form-validators/dataUri.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/date.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/different.validator.mjs +0 -19
- package/esm2022/lib/form-validators/reactive-form-validators/digit.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/email.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/endsWith.validator.mjs +0 -23
- package/esm2022/lib/form-validators/reactive-form-validators/even.validator.mjs +0 -15
- package/esm2022/lib/form-validators/reactive-form-validators/extension.validator.mjs +0 -40
- package/esm2022/lib/form-validators/reactive-form-validators/factor.validator.mjs +0 -37
- package/esm2022/lib/form-validators/reactive-form-validators/file.validator.mjs +0 -26
- package/esm2022/lib/form-validators/reactive-form-validators/fileSize.validator.mjs +0 -34
- package/esm2022/lib/form-validators/reactive-form-validators/greater-than-equal-to.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/greater-than.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/grid.validator.mjs +0 -31
- package/esm2022/lib/form-validators/reactive-form-validators/hexcolor.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/iban.validator.mjs +0 -28
- package/esm2022/lib/form-validators/reactive-form-validators/image.validator.mjs +0 -52
- package/esm2022/lib/form-validators/reactive-form-validators/index.mjs +0 -66
- package/esm2022/lib/form-validators/reactive-form-validators/ip.validator.mjs +0 -28
- package/esm2022/lib/form-validators/reactive-form-validators/json.validator.mjs +0 -26
- package/esm2022/lib/form-validators/reactive-form-validators/latLong.validator.mjs +0 -18
- package/esm2022/lib/form-validators/reactive-form-validators/latitude.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/leapYear.validator.mjs +0 -16
- package/esm2022/lib/form-validators/reactive-form-validators/less-than-equal-to.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/less-than.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/longitude.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/lowercase.validator.mjs +0 -15
- package/esm2022/lib/form-validators/reactive-form-validators/mac.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/mask.validator.mjs +0 -14
- package/esm2022/lib/form-validators/reactive-form-validators/maxDate.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/maxLength.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/maxNumber.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/maxTime.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/minDate.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/minLength.validator.mjs +0 -16
- package/esm2022/lib/form-validators/reactive-form-validators/minNumber.validator.mjs +0 -16
- package/esm2022/lib/form-validators/reactive-form-validators/minTime.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/noneOf.validator.mjs +0 -24
- package/esm2022/lib/form-validators/reactive-form-validators/not.validator.mjs +0 -25
- package/esm2022/lib/form-validators/reactive-form-validators/notEmpty.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/numeric.validator.mjs +0 -22
- package/esm2022/lib/form-validators/reactive-form-validators/odd.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/oneOf.validator.mjs +0 -26
- package/esm2022/lib/form-validators/reactive-form-validators/or.validator.mjs +0 -25
- package/esm2022/lib/form-validators/reactive-form-validators/password.validator.mjs +0 -35
- package/esm2022/lib/form-validators/reactive-form-validators/pattern.validator.mjs +0 -19
- package/esm2022/lib/form-validators/reactive-form-validators/port.validator.mjs +0 -19
- package/esm2022/lib/form-validators/reactive-form-validators/primeNumber.validator.mjs +0 -27
- package/esm2022/lib/form-validators/reactive-form-validators/range.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/required.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/requiredTrue.validator.mjs +0 -16
- package/esm2022/lib/form-validators/reactive-form-validators/rule.validator.mjs +0 -22
- package/esm2022/lib/form-validators/reactive-form-validators/startsWith.validator.mjs +0 -25
- package/esm2022/lib/form-validators/reactive-form-validators/time.validator.mjs +0 -19
- package/esm2022/lib/form-validators/reactive-form-validators/unique.validator.mjs +0 -77
- package/esm2022/lib/form-validators/reactive-form-validators/uppercase.validator.mjs +0 -16
- package/esm2022/lib/form-validators/reactive-form-validators/url.validator.mjs +0 -28
- package/esm2022/lib/form-validators/services/base-form-builder.mjs +0 -220
- package/esm2022/lib/form-validators/services/entity.service.mjs +0 -76
- package/esm2022/lib/form-validators/services/form-control.mjs +0 -370
- package/esm2022/lib/form-validators/services/form-group.mjs +0 -2
- package/esm2022/lib/form-validators/services/reactive-form.module.mjs +0 -52
- package/esm2022/lib/form-validators/services/rx-form-array.mjs +0 -114
- package/esm2022/lib/form-validators/services/rx-form-builder.mjs +0 -1035
- package/esm2022/lib/form-validators/services/rx-form-group.mjs +0 -451
- package/esm2022/lib/form-validators/services/typed-form-builder.mjs +0 -25
- package/esm2022/lib/form-validators/util/alphabet-regex.locale.mjs +0 -29
- package/esm2022/lib/form-validators/util/app-util.mjs +0 -161
- package/esm2022/lib/form-validators/util/check-length.mjs +0 -11
- package/esm2022/lib/form-validators/util/config-provider.mjs +0 -37
- package/esm2022/lib/form-validators/util/date-checker.function.mjs +0 -52
- package/esm2022/lib/form-validators/util/date-provider.mjs +0 -108
- package/esm2022/lib/form-validators/util/form-const.mjs +0 -3
- package/esm2022/lib/form-validators/util/form-provider.mjs +0 -87
- package/esm2022/lib/form-validators/util/index.mjs +0 -7
- package/esm2022/lib/form-validators/util/instance-provider.function.mjs +0 -63
- package/esm2022/lib/form-validators/util/ip-checker.mjs +0 -19
- package/esm2022/lib/form-validators/util/linq.mjs +0 -157
- package/esm2022/lib/form-validators/util/object-maker.mjs +0 -68
- package/esm2022/lib/form-validators/util/reactive-form-config.mjs +0 -25
- package/esm2022/lib/form-validators/util/regex-rules.mjs +0 -37
- package/esm2022/lib/form-validators/util/regex-validator.mjs +0 -74
- package/esm2022/lib/form-validators/util/relational-checker.function.mjs +0 -92
- package/esm2022/lib/form-validators/util/reset-form.mjs +0 -57
- package/esm2022/lib/form-validators/util/sanitizers.mjs +0 -140
- package/esm2022/lib/form-validators/util/time-checker.function.mjs +0 -50
- package/esm2022/lib/form-validators/util/type.mjs +0 -2
- package/esm2022/lib/form-validators/util/validator-value-checker.mjs +0 -21
- package/esm2022/lib/form-validators/validators-extension/allOf-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/alpha-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/alphaNumeric-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/and-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/ascii-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/base-validator.function.mjs +0 -34
- package/esm2022/lib/form-validators/validators-extension/choice-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/compare-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/compose-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/contains-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/credit-card-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/cusip-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/custom-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/dataUri-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/date-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/different-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/digit-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/email-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/endsWith-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/even-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/extension-validator.extension.mjs +0 -10
- package/esm2022/lib/form-validators/validators-extension/factor-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/file-validator.extension.mjs +0 -10
- package/esm2022/lib/form-validators/validators-extension/fileSize-validator.extension.mjs +0 -10
- package/esm2022/lib/form-validators/validators-extension/greater-than-equal-to-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/greater-than-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/grid-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/hexcolor-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/iban-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/image-validator.extension.mjs +0 -10
- package/esm2022/lib/form-validators/validators-extension/index.mjs +0 -68
- package/esm2022/lib/form-validators/validators-extension/ip-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/json-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/latLong-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/latitude-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/leapYear-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/less-than-equal-to-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/less-than-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/longitude-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/lowercase-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/mac-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/mask-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/maxDate-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/maxLength-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/maxNumber-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/maxTime-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/minDate-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/minLength-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/minNumber-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/minTime-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/noneOf-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/not-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/notEmpty-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/numeric-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/odd-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/oneOf-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/or-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/password-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/pattern-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/port-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/primeNumber-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/range-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/required-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/requiredTrue-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/rxweb-validators.mjs +0 -108
- package/esm2022/lib/form-validators/validators-extension/startsWith-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/time-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/unique-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/uppercase-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/url-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-function/alpha-validation.function.mjs +0 -71
- package/esm2022/lib/form-validators/validators-function/regex-validation.function.mjs +0 -33
- package/esm2022/lib/forms/components/datepicker/datepicker-header.component.mjs +0 -84
- package/esm2022/lib/forms/components/generic-form/generic-form.component.mjs +0 -602
- package/esm2022/lib/forms/constants/constants.mjs +0 -4
- package/esm2022/lib/forms/directives/mat-form-field-editor.directive.mjs +0 -197
- package/esm2022/lib/forms/directives/mat-form-field-readonly.directive.mjs +0 -34
- package/esm2022/lib/forms/directives/parse-decimal-directive.mjs +0 -87
- package/esm2022/lib/forms/directives/vd-generic-form-custom-field.directive.mjs +0 -35
- package/esm2022/lib/forms/enums/form-field-type.mjs +0 -23
- package/esm2022/lib/forms/forms.module.mjs +0 -168
- package/esm2022/lib/forms/functions/decorators.mjs +0 -136
- package/esm2022/lib/forms/functions/functions.mjs +0 -72
- package/esm2022/lib/forms/helpers/abstract-mat-form-field.mjs +0 -308
- package/esm2022/lib/forms/helpers/abstract-select-form-field.component.mjs +0 -492
- package/esm2022/lib/forms/helpers/value-accessor-base.mjs +0 -146
- package/esm2022/lib/forms/models/form-definition.mjs +0 -63
- package/esm2022/lib/forms/models/form-field-definition.mjs +0 -468
- package/esm2022/lib/forms/models/form-field-group-definition.mjs +0 -55
- package/esm2022/lib/forms/pipes/field-func.pipe.mjs +0 -23
- package/esm2022/lib/forms/pipes/group-filter.pipe.mjs +0 -34
- package/esm2022/lib/forms/public_api.mjs +0 -5
- package/esm2022/lib/forms/validators/empty-string-reset.directive.mjs +0 -25
- package/esm2022/lib/forms/validators/equal-validator.directive.mjs +0 -69
- package/esm2022/lib/forms/validators/native-element-injector.directive.mjs +0 -41
- package/esm2022/lib/forms/validators/unique-validator-directive.mjs +0 -88
- package/esm2022/lib/http/http.module.mjs +0 -15
- package/esm2022/lib/http/models/response.mjs +0 -24
- package/esm2022/lib/http/public_api.mjs +0 -2
- package/esm2022/lib/http/services/generic.service.mjs +0 -331
- package/esm2022/lib/layout/dynamic-menu/dynamic-menu.component.mjs +0 -103
- package/esm2022/lib/layout/layout-card-over/layout-card-over.component.mjs +0 -49
- package/esm2022/lib/layout/layout-compact/layout-compact.component.mjs +0 -193
- package/esm2022/lib/layout/layout-footer/layout-footer.component.mjs +0 -37
- package/esm2022/lib/layout/layout-manage-list/layout-manage-list.component.mjs +0 -150
- package/esm2022/lib/layout/layout-manage-list/layout-manage-list.directives.mjs +0 -108
- package/esm2022/lib/layout/layout-nav/layout-nav.component.mjs +0 -146
- package/esm2022/lib/layout/layout-nav-list/layout-nav-list.component.mjs +0 -141
- package/esm2022/lib/layout/layout-nav-list/layout-nav-list.directives.mjs +0 -105
- package/esm2022/lib/layout/layout-toggle.class.mjs +0 -89
- package/esm2022/lib/layout/layout.component.mjs +0 -230
- package/esm2022/lib/layout/layout.directives.mjs +0 -81
- package/esm2022/lib/layout/layout.module.mjs +0 -144
- package/esm2022/lib/layout/list-toolbar/list-toolbar.component.mjs +0 -47
- package/esm2022/lib/layout/navigation-drawer/navigation-drawer.component.mjs +0 -275
- package/esm2022/lib/layout/public_api.mjs +0 -2
- package/esm2022/lib/list/components/list.component.mjs +0 -78
- package/esm2022/lib/list/directives/vd-list-option.directive.mjs +0 -23
- package/esm2022/lib/list/list.module.mjs +0 -36
- package/esm2022/lib/list/public_api.mjs +0 -3
- package/esm2022/lib/media/directives/media-toggle.directive.mjs +0 -154
- package/esm2022/lib/media/media.module.mjs +0 -35
- package/esm2022/lib/media/public_api.mjs +0 -2
- package/esm2022/lib/media/services/media.service.mjs +0 -110
- package/esm2022/lib/menu/components/menu.component.mjs +0 -95
- package/esm2022/lib/menu/enums/menu-scope.mjs +0 -6
- package/esm2022/lib/menu/menu.module.mjs +0 -64
- package/esm2022/lib/menu/models/menu-client.mjs +0 -39
- package/esm2022/lib/menu/models/menu-department.mjs +0 -39
- package/esm2022/lib/menu/models/menu-item-client.mjs +0 -39
- package/esm2022/lib/menu/models/menu-item-department.mjs +0 -39
- package/esm2022/lib/menu/models/menu-item.mjs +0 -351
- package/esm2022/lib/menu/models/menu-settings.mjs +0 -13
- package/esm2022/lib/menu/models/menu.mjs +0 -224
- package/esm2022/lib/menu/public_api.mjs +0 -3
- package/esm2022/lib/menu/resolvers/menu-form-includes.resolve.mjs +0 -50
- package/esm2022/lib/menu/resolvers/menu-item-form-includes.resolve.mjs +0 -50
- package/esm2022/lib/menu/resolvers/menu-list-projection.resolve.mjs +0 -51
- package/esm2022/lib/menu/resolvers/menu-settings.resolve.mjs +0 -24
- package/esm2022/lib/menu/services/menu-items.service.mjs +0 -19
- package/esm2022/lib/menu/services/menu.resolve.mjs +0 -68
- package/esm2022/lib/menu/services/menu.service.mjs +0 -19
- package/esm2022/lib/search/public_api.mjs +0 -2
- package/esm2022/lib/search/search.module.mjs +0 -33
- package/esm2022/lib/select/components/select.component.mjs +0 -215
- package/esm2022/lib/select/directives/vd-select-option.directive.mjs +0 -23
- package/esm2022/lib/select/directives/vd-select-trigger.directive.mjs +0 -23
- package/esm2022/lib/select/public_api.mjs +0 -4
- package/esm2022/lib/select/select.module.mjs +0 -48
- package/esm2022/lib/table/components/dynamic-table/dynamic-table.component.mjs +0 -810
- package/esm2022/lib/table/components/filter-clear/filter-clear.component.mjs +0 -36
- package/esm2022/lib/table/components/filter-date/filter-date.component.mjs +0 -146
- package/esm2022/lib/table/components/filter-input/filter-input.component.mjs +0 -198
- package/esm2022/lib/table/components/filter-select/filter-select.component.mjs +0 -375
- package/esm2022/lib/table/constants/constants.mjs +0 -3
- package/esm2022/lib/table/directives/data-source-filter.directive.mjs +0 -49
- package/esm2022/lib/table/directives/vd-table-field.directive.mjs +0 -35
- package/esm2022/lib/table/enums/grid.mjs +0 -12
- package/esm2022/lib/table/enums/table-column-type.mjs +0 -17
- package/esm2022/lib/table/functions/decorators.mjs +0 -163
- package/esm2022/lib/table/functions/functions.mjs +0 -28
- package/esm2022/lib/table/models/facet-value.mjs +0 -47
- package/esm2022/lib/table/models/facet.mjs +0 -48
- package/esm2022/lib/table/models/pagination.mjs +0 -27
- package/esm2022/lib/table/models/table-column-config.mjs +0 -128
- package/esm2022/lib/table/models/table-column.mjs +0 -270
- package/esm2022/lib/table/models/table-config.mjs +0 -41
- package/esm2022/lib/table/models/table-definition.mjs +0 -110
- package/esm2022/lib/table/models/table-query-config.mjs +0 -26
- package/esm2022/lib/table/paginator-intl.mjs +0 -41
- package/esm2022/lib/table/public_api.mjs +0 -2
- package/esm2022/lib/table/table.data-source.mjs +0 -326
- package/esm2022/lib/table/table.module.mjs +0 -165
- package/esm2022/lib/table/table.static-data-source.mjs +0 -198
- package/esm2022/messaia-cdk.mjs +0 -5
- package/esm2022/public_api.mjs +0 -19
- package/lib/common/styles/_elevation.scss +0 -147
- package/lib/common/styles/_rtl.scss +0 -28
- package/lib/common/styles/_styles.scss +0 -12
- package/lib/common/styles/_theme-functions.scss +0 -4
- package/lib/common/styles/_typography.scss +0 -76
- package/lib/common/styles/core/_content.scss +0 -42
- package/lib/common/styles/core/_divider.scss +0 -14
- package/lib/common/styles/core/_icons.scss +0 -27
- package/lib/common/styles/core/_list.scss +0 -8
- package/lib/common/styles/core/_toolbar.scss +0 -31
- package/lib/common/styles/core/_whiteframe.scss +0 -111
- package/lib/common/styles/m2/_theme-functions.scss +0 -21
- package/lib/common/styles/m3/_theme-functions.scss +0 -21
- package/lib/common/styles/platform.scss +0 -11
- package/lib/common/theming/_all-theme.scss +0 -27
- package/lib/common/typography/_all-typography.scss +0 -33
|
@@ -1,451 +0,0 @@
|
|
|
1
|
-
import { FormArray, FormControl, FormGroup } from "@angular/forms";
|
|
2
|
-
import { defaultContainer } from '../core/default-container';
|
|
3
|
-
import { FormDataProvider } from "../domain/form-data";
|
|
4
|
-
import { ApplicationUtil } from '../util/app-util';
|
|
5
|
-
import { RegexValidator } from '../util/regex-validator';
|
|
6
|
-
import { getNestedOptions, isResetControl } from '../util/reset-form';
|
|
7
|
-
import { clone } from './entity.service';
|
|
8
|
-
import { RxFormControl } from "./form-control";
|
|
9
|
-
import { RxFormArray } from './rx-form-array';
|
|
10
|
-
/**
|
|
11
|
-
* Represents an extended version of FormGroup with additional functionality.
|
|
12
|
-
*/
|
|
13
|
-
export class RxFormGroup extends FormGroup {
|
|
14
|
-
model;
|
|
15
|
-
entityObject;
|
|
16
|
-
/**
|
|
17
|
-
* Represents the base object containing key-value pairs for the form data.
|
|
18
|
-
*/
|
|
19
|
-
baseObject;
|
|
20
|
-
/**
|
|
21
|
-
* Provides functionality for converting form data to FormData.
|
|
22
|
-
*/
|
|
23
|
-
formDataProvider;
|
|
24
|
-
/**
|
|
25
|
-
* Indicates whether the form group has been submitted.
|
|
26
|
-
*/
|
|
27
|
-
_submitted = false;
|
|
28
|
-
/**
|
|
29
|
-
* Contains the modified values of the form group.
|
|
30
|
-
*/
|
|
31
|
-
_modified = {};
|
|
32
|
-
/**
|
|
33
|
-
* Indicates whether the form group has been modified.
|
|
34
|
-
*/
|
|
35
|
-
_isModified = false;
|
|
36
|
-
/**
|
|
37
|
-
* Indicates whether the form group is changing.
|
|
38
|
-
*/
|
|
39
|
-
changing = false;
|
|
40
|
-
/**
|
|
41
|
-
* Creates an instance of RxFormGroup.
|
|
42
|
-
*
|
|
43
|
-
* @param model The model associated with the form group.
|
|
44
|
-
* @param entityObject The entity object containing form data.
|
|
45
|
-
* @param controls The initial controls for the form group.
|
|
46
|
-
* @param validatorOrOpts The validators for the form group.
|
|
47
|
-
* @param asyncValidator The asynchronous validators for the form group.
|
|
48
|
-
*/
|
|
49
|
-
constructor(model, entityObject, controls, validatorOrOpts, asyncValidator) {
|
|
50
|
-
super(controls, validatorOrOpts, asyncValidator);
|
|
51
|
-
this.model = model;
|
|
52
|
-
this.entityObject = entityObject;
|
|
53
|
-
this.baseObject = {};
|
|
54
|
-
for (var column in this.entityObject) {
|
|
55
|
-
this.baseObject[column] = this.entityObject[column];
|
|
56
|
-
}
|
|
57
|
-
this.formDataProvider = new FormDataProvider();
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Binds the primary key of the model instance to the provided JSON object.
|
|
61
|
-
*
|
|
62
|
-
* @param modelInstance The model instance.
|
|
63
|
-
* @param jObject The JSON object to bind.
|
|
64
|
-
*/
|
|
65
|
-
bindPrimaryKey(modelInstance, jObject) {
|
|
66
|
-
let instanceContainer = defaultContainer.get(modelInstance.constructor);
|
|
67
|
-
if (instanceContainer) {
|
|
68
|
-
let primaryKeyProp = instanceContainer.properties?.filter(x => x.isPrimaryKey)[0];
|
|
69
|
-
if (primaryKeyProp && this.modelInstance[primaryKeyProp.name]) {
|
|
70
|
-
jObject[primaryKeyProp.name] = this.modelInstance[primaryKeyProp.name];
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Gets the modified value of the form group.
|
|
76
|
-
*
|
|
77
|
-
* @returns The modified value as an object.
|
|
78
|
-
*/
|
|
79
|
-
get modifiedValue() {
|
|
80
|
-
let jObject = {};
|
|
81
|
-
if (Object.keys(this._modified).length > 0) {
|
|
82
|
-
this.bindPrimaryKey(this.modelInstance, jObject);
|
|
83
|
-
for (var columnName in this._modified) {
|
|
84
|
-
if (this.controls[columnName] instanceof RxFormGroup) {
|
|
85
|
-
jObject[columnName] = this.controls[columnName].modifiedValue;
|
|
86
|
-
}
|
|
87
|
-
else if (this.controls[columnName] instanceof FormArray) {
|
|
88
|
-
let formArray = this.controls[columnName];
|
|
89
|
-
jObject[columnName] = [];
|
|
90
|
-
for (var i = 0; i < this._modified[columnName].length; i++) {
|
|
91
|
-
let modifiedValue = formArray.controls[i].modifiedValue;
|
|
92
|
-
if (Object.keys(modifiedValue).length > 0) {
|
|
93
|
-
jObject[columnName].push(modifiedValue);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
if (jObject[columnName].length == 0) {
|
|
97
|
-
delete jObject[columnName];
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
jObject[columnName] = this._modified[columnName];
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
return jObject;
|
|
105
|
-
}
|
|
106
|
-
return this._modified;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Checks if the form group is modified.
|
|
110
|
-
*
|
|
111
|
-
* @returns A boolean indicating whether the form group is modified.
|
|
112
|
-
*/
|
|
113
|
-
get isModified() { return this._isModified; }
|
|
114
|
-
/**
|
|
115
|
-
* Patches the form group.
|
|
116
|
-
*
|
|
117
|
-
* @param controlName Optional. The name of the control to patch.
|
|
118
|
-
*/
|
|
119
|
-
patch(controlName) {
|
|
120
|
-
if (controlName) {
|
|
121
|
-
let control = this.controls[controlName];
|
|
122
|
-
this.processModified(controlName, control);
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
this.nestedFormsModification();
|
|
126
|
-
}
|
|
127
|
-
this._isModified = Object.keys(this._modified).length > 0;
|
|
128
|
-
if (!this._isModified) {
|
|
129
|
-
this.nestedArrayIsModified();
|
|
130
|
-
}
|
|
131
|
-
if (this.parent && this.parent.patch) {
|
|
132
|
-
this.parent.patch();
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Checks if the form group is dirty.
|
|
137
|
-
*
|
|
138
|
-
* @returns A boolean indicating whether the form group is dirty.
|
|
139
|
-
*/
|
|
140
|
-
isDirty() {
|
|
141
|
-
let isDirty = false;
|
|
142
|
-
for (let name in this.value) {
|
|
143
|
-
let currentValue = this.modelInstance[name];
|
|
144
|
-
if (!(this.controls[name] instanceof FormGroup || this.controls[name] instanceof FormArray)) {
|
|
145
|
-
isDirty = ApplicationUtil.notEqualTo(this.baseObject[name], currentValue);
|
|
146
|
-
}
|
|
147
|
-
else if (this.controls[name] instanceof RxFormGroup) {
|
|
148
|
-
isDirty = this.controls[name].isDirty();
|
|
149
|
-
}
|
|
150
|
-
else if (this.controls[name] instanceof FormArray) {
|
|
151
|
-
for (let formGroup of this.controls[name].controls) {
|
|
152
|
-
isDirty = formGroup.isDirty();
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
if (isDirty) {
|
|
156
|
-
break;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
return isDirty;
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Resets the form group.
|
|
163
|
-
*
|
|
164
|
-
* @param options Optional. Options for resetting the form group.
|
|
165
|
-
*/
|
|
166
|
-
resetForm(options) {
|
|
167
|
-
for (let name in this.controls) {
|
|
168
|
-
if (isResetControl(name, this.controls[name], options)) {
|
|
169
|
-
if (this.controls[name] instanceof FormGroup) {
|
|
170
|
-
this.controls[name].resetForm(getNestedOptions(name, options));
|
|
171
|
-
}
|
|
172
|
-
else if (this.controls[name] instanceof FormArray) {
|
|
173
|
-
this.controls[name].resetForm(options && options.value ? options.value[name] : undefined);
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
if (options && options.value && RegexValidator.isNotBlank(options.value[name])) {
|
|
177
|
-
this.controls[name].reset(options.value[name]);
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
this.controls[name].reset();
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Commits changes in the form group.
|
|
188
|
-
*/
|
|
189
|
-
commit() {
|
|
190
|
-
for (let name in this.controls) {
|
|
191
|
-
if (this.controls[name] instanceof FormGroup) {
|
|
192
|
-
this.controls[name].commit();
|
|
193
|
-
}
|
|
194
|
-
else if (this.controls[name] instanceof FormArray) {
|
|
195
|
-
this.controls[name].commit();
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
this.controls[name].commit();
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Patches the model value of the form group.
|
|
204
|
-
*
|
|
205
|
-
* @param value The value to patch.
|
|
206
|
-
* @param options Optional. Options for patching the value.
|
|
207
|
-
*/
|
|
208
|
-
patchModelValue(value, options) {
|
|
209
|
-
if (value) {
|
|
210
|
-
for (let name in this.controls) {
|
|
211
|
-
if (this.controls[name] instanceof RxFormGroup && value[name]) {
|
|
212
|
-
this.controls[name].patchModelValue(value[name], options);
|
|
213
|
-
}
|
|
214
|
-
else if (this.controls[name] instanceof FormArray && Array.isArray(value[name])) {
|
|
215
|
-
let index = 0;
|
|
216
|
-
for (let formGroup of this.controls[name].controls) {
|
|
217
|
-
if (value[name][index]) {
|
|
218
|
-
formGroup.patchModelValue(value[name][index], options);
|
|
219
|
-
}
|
|
220
|
-
index = index + 1;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
if (value[name] !== undefined) {
|
|
225
|
-
this.controls[name].patchValue(value[name], options);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Retrieves error summary of the form group.
|
|
233
|
-
*
|
|
234
|
-
* @param onlyMessage Indicates whether to include only error messages.
|
|
235
|
-
* @returns The error summary as an object.
|
|
236
|
-
*/
|
|
237
|
-
getErrorSummary(onlyMessage) {
|
|
238
|
-
let jObject = {};
|
|
239
|
-
Object.keys(this.controls).forEach(columnName => {
|
|
240
|
-
if (this.controls[columnName] instanceof FormGroup) {
|
|
241
|
-
let error = this.controls[columnName].getErrorSummary(false);
|
|
242
|
-
if (Object.keys(error).length > 0) {
|
|
243
|
-
jObject[columnName] = error;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
else if (this.controls[columnName] instanceof FormArray) {
|
|
247
|
-
let index = 0;
|
|
248
|
-
for (let formGroup of this.controls[columnName].controls) {
|
|
249
|
-
let error = formGroup.getErrorSummary(false);
|
|
250
|
-
if (Object.keys(error).length > 0) {
|
|
251
|
-
error.index = index;
|
|
252
|
-
if (!jObject[columnName]) {
|
|
253
|
-
jObject[columnName] = [];
|
|
254
|
-
}
|
|
255
|
-
jObject[columnName].push(error);
|
|
256
|
-
}
|
|
257
|
-
index++;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
else {
|
|
261
|
-
if (this.controls[columnName].errors) {
|
|
262
|
-
let error = this.controls[columnName].errors;
|
|
263
|
-
if (onlyMessage)
|
|
264
|
-
for (let validationName in error) {
|
|
265
|
-
jObject[columnName] = error[validationName]?.message;
|
|
266
|
-
}
|
|
267
|
-
else {
|
|
268
|
-
jObject[columnName] = error;
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
});
|
|
273
|
-
return jObject;
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Synchronizes value changes in the form group.
|
|
277
|
-
*/
|
|
278
|
-
valueChangedSync() {
|
|
279
|
-
Object.keys(this.controls).forEach(columnName => {
|
|
280
|
-
if (!(this.controls[columnName] instanceof FormArray || this.controls[columnName] instanceof RxFormArray) && !(this.controls[columnName] instanceof FormGroup || this.controls[columnName] instanceof RxFormGroup) && !(this.entityObject[columnName] instanceof FormControl || this.entityObject[columnName] instanceof RxFormControl) && this.controls[columnName].getControlValue && ApplicationUtil.notEqualTo(this.controls[columnName].getControlValue(), this.entityObject[columnName])) {
|
|
281
|
-
this.controls[columnName].setValue(this.entityObject[columnName], { updateChanged: true });
|
|
282
|
-
}
|
|
283
|
-
else if ((this.controls[columnName] instanceof FormArray || this.controls[columnName] instanceof RxFormArray)) {
|
|
284
|
-
for (let formGroup of this.controls[columnName].controls) {
|
|
285
|
-
formGroup.valueChangedSync();
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
else if ((this.controls[columnName] instanceof RxFormGroup)) {
|
|
289
|
-
this.controls[columnName].valueChangedSync();
|
|
290
|
-
}
|
|
291
|
-
});
|
|
292
|
-
}
|
|
293
|
-
/**
|
|
294
|
-
* Refreshes disabled state of controls in the form group.
|
|
295
|
-
*/
|
|
296
|
-
refreshDisable() {
|
|
297
|
-
Object.keys(this.controls).forEach(columnName => {
|
|
298
|
-
if (!(this.controls[columnName] instanceof FormArray || this.controls[columnName] instanceof RxFormArray) && !(this.controls[columnName] instanceof FormGroup || this.controls[columnName] instanceof RxFormGroup)) {
|
|
299
|
-
this.controls[columnName].refresh();
|
|
300
|
-
}
|
|
301
|
-
else if ((this.controls[columnName] instanceof RxFormGroup)) {
|
|
302
|
-
this.controls[columnName].refreshDisable();
|
|
303
|
-
}
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
/**
|
|
307
|
-
* Binds error messages to controls in the form group.
|
|
308
|
-
*/
|
|
309
|
-
bindErrorMessages() {
|
|
310
|
-
Object.keys(this.controls).forEach(columnName => {
|
|
311
|
-
if (!(this.controls[columnName] instanceof FormArray || this.controls[columnName] instanceof RxFormArray) && !(this.controls[columnName] instanceof FormGroup || this.controls[columnName] instanceof RxFormGroup)) {
|
|
312
|
-
this.controls[columnName].bindError();
|
|
313
|
-
}
|
|
314
|
-
else if ((this.controls[columnName] instanceof RxFormGroup)) {
|
|
315
|
-
this.controls[columnName].bindErrorMessages();
|
|
316
|
-
}
|
|
317
|
-
});
|
|
318
|
-
}
|
|
319
|
-
/**
|
|
320
|
-
* Gets or sets the submitted state of the form group.
|
|
321
|
-
*/
|
|
322
|
-
get submitted() { return this._submitted; }
|
|
323
|
-
set submitted(value) {
|
|
324
|
-
this._submitted = value;
|
|
325
|
-
Object.keys(this.controls).forEach(columnName => {
|
|
326
|
-
if (this.controls[columnName] instanceof FormArray) {
|
|
327
|
-
let formArray = this.controls[columnName];
|
|
328
|
-
for (let formGroup of formArray.controls) {
|
|
329
|
-
formGroup.submitted = value;
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
else if (this.controls[columnName] instanceof FormGroup) {
|
|
333
|
-
this.controls[columnName].submitted = value;
|
|
334
|
-
}
|
|
335
|
-
else {
|
|
336
|
-
this.controls[columnName].bindError();
|
|
337
|
-
}
|
|
338
|
-
});
|
|
339
|
-
}
|
|
340
|
-
/**
|
|
341
|
-
* Gets the model instance value of the form group.
|
|
342
|
-
*/
|
|
343
|
-
get modelInstanceValue() { return clone(this.entityObject); }
|
|
344
|
-
/**
|
|
345
|
-
* Gets the model instance of the form group.
|
|
346
|
-
*/
|
|
347
|
-
get modelInstance() { return this.entityObject; }
|
|
348
|
-
/**
|
|
349
|
-
* Gets the errors of the controls in the form group.
|
|
350
|
-
*/
|
|
351
|
-
get controlsError() { return this.getErrorSummary(true); }
|
|
352
|
-
/**
|
|
353
|
-
* Converts the form group to FormData.
|
|
354
|
-
* @param options Optional. Options for converting to FormData.
|
|
355
|
-
* @returns The FormData object.
|
|
356
|
-
*/
|
|
357
|
-
toFormData(options) {
|
|
358
|
-
return this.formDataProvider.convertToFormData(this.value, options);
|
|
359
|
-
}
|
|
360
|
-
/**
|
|
361
|
-
* Processes the modification of a control within the form group.
|
|
362
|
-
* @param controlName The name of the control being modified.
|
|
363
|
-
* @param control The control object.
|
|
364
|
-
*/
|
|
365
|
-
processModified(controlName, control) {
|
|
366
|
-
if (control.isModified) {
|
|
367
|
-
this._modified[controlName] = control.value;
|
|
368
|
-
}
|
|
369
|
-
else {
|
|
370
|
-
delete this._modified[controlName];
|
|
371
|
-
}
|
|
372
|
-
this._isModified = Object.keys(this._modified).length > 0;
|
|
373
|
-
}
|
|
374
|
-
/**
|
|
375
|
-
* Checks if any nested array within the form group is modified.
|
|
376
|
-
*/
|
|
377
|
-
nestedArrayIsModified() {
|
|
378
|
-
for (var controlName in this.controls) {
|
|
379
|
-
if (this.controls[controlName] instanceof RxFormArray) {
|
|
380
|
-
this._isModified = this.controls[controlName].isModified;
|
|
381
|
-
}
|
|
382
|
-
if (this._isModified) {
|
|
383
|
-
break;
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
/**
|
|
388
|
-
* Sets backend errors for the form group controls.
|
|
389
|
-
* @param errors Object containing the backend errors.
|
|
390
|
-
*/
|
|
391
|
-
setBackEndErrors(errors) {
|
|
392
|
-
Object.keys(errors).forEach(controlName => {
|
|
393
|
-
if (this.controls[controlName]) {
|
|
394
|
-
if (this.controls[controlName] instanceof FormGroup) {
|
|
395
|
-
this.controls[controlName].setBackEndErrors(errors[controlName]);
|
|
396
|
-
}
|
|
397
|
-
else {
|
|
398
|
-
this.controls[controlName].setBackEndErrors(errors[controlName]);
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
});
|
|
402
|
-
}
|
|
403
|
-
/**
|
|
404
|
-
* Clears backend errors for the form group controls.
|
|
405
|
-
* @param errors Optional object containing specific errors to clear.
|
|
406
|
-
*/
|
|
407
|
-
clearBackEndErrors(errors) {
|
|
408
|
-
let clearErrors = errors ? Object.keys(errors) : Object.keys(this.controls);
|
|
409
|
-
clearErrors.forEach(controlName => {
|
|
410
|
-
if (this.controls[controlName]) {
|
|
411
|
-
if (this.controls[controlName] instanceof FormGroup) {
|
|
412
|
-
errors ? this.controls[controlName].clearBackEndErrors(errors[controlName]) : this.controls[controlName].clearBackEndErrors();
|
|
413
|
-
}
|
|
414
|
-
else {
|
|
415
|
-
errors ? this.controls[controlName].clearBackEndErrors(errors[controlName]) : this.controls[controlName].clearBackEndErrors();
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
});
|
|
419
|
-
}
|
|
420
|
-
/**
|
|
421
|
-
* Modifies nested forms within the form group.
|
|
422
|
-
*/
|
|
423
|
-
nestedFormsModification() {
|
|
424
|
-
for (var controlName in this.controls) {
|
|
425
|
-
if (this.controls[controlName] instanceof RxFormGroup) {
|
|
426
|
-
this.processModified(controlName, this.controls[controlName]);
|
|
427
|
-
}
|
|
428
|
-
else if (this.controls[controlName] instanceof RxFormArray) {
|
|
429
|
-
if (this.controls[controlName].isModified) {
|
|
430
|
-
let formGroups = this.controls[controlName].controls;
|
|
431
|
-
this._modified[controlName] = [];
|
|
432
|
-
for (var formGroup of formGroups) {
|
|
433
|
-
if (formGroup.isModified) {
|
|
434
|
-
if (!this._modified[controlName]) {
|
|
435
|
-
this._modified[controlName] = [];
|
|
436
|
-
}
|
|
437
|
-
this._modified[controlName].push(formGroup.modifiedValue);
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
if (this._modified[controlName].length == 0) {
|
|
441
|
-
delete this._modified[controlName];
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
else if (this._modified[controlName]) {
|
|
445
|
-
delete this._modified[controlName];
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtZm9ybS1ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9zZXJ2aWNlcy9yeC1mb3JtLWdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsU0FBUztJQXlDMUI7SUFDQTtJQXpDWjs7T0FFRztJQUNLLFVBQVUsQ0FBeUI7SUFFM0M7O09BRUc7SUFDSyxnQkFBZ0IsQ0FBbUI7SUFFM0M7O09BRUc7SUFDSyxVQUFVLEdBQVksS0FBSyxDQUFDO0lBRXBDOztPQUVHO0lBQ0ssU0FBUyxHQUEyQixFQUFFLENBQUM7SUFFL0M7O09BRUc7SUFDSyxXQUFXLEdBQVksS0FBSyxDQUFDO0lBRXJDOztPQUVHO0lBQ0ksUUFBUSxHQUFZLEtBQUssQ0FBQztJQUVqQzs7Ozs7Ozs7T0FRRztJQUNILFlBQ1ksS0FBVSxFQUNWLFlBQW9D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QUNwRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDakMsS0FBSyxJQUFJLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQzt3QkFDL0IsSUFBa0IsU0FBVSxDQUFDLFVBQVUsRUFBRSxDQUFDOzRCQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dDQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQzs0QkFDckMsQ0FBQzs0QkFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBZSxTQUFVLENBQUMsYUFBYSxDQUFDLENBQUE7d0JBQzVFLENBQUM7b0JBRUwsQ0FBQztvQkFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO3dCQUMxQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ3ZDLENBQUM7Z0JBRUwsQ0FBQztxQkFDSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztvQkFDbkMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN2QyxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEFzeW5jVmFsaWRhdG9yRm4sIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBkZWZhdWx0Q29udGFpbmVyIH0gZnJvbSAnLi4vY29yZS9kZWZhdWx0LWNvbnRhaW5lcic7XHJcbmltcG9ydCB7IEZvcm1EYXRhUHJvdmlkZXIgfSBmcm9tIFwiLi4vZG9tYWluL2Zvcm0tZGF0YVwiO1xyXG5pbXBvcnQgeyBSZXNldEZvcm1UeXBlIH0gZnJvbSBcIi4uL2VudW1zL3Jlc2V0LXR5cGVcIjtcclxuaW1wb3J0IHsgRm9ybURhdGFDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL2ludGVyZmFjZS9mb3JtLWRhdGEtY29uZmlnXCI7XHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uVXRpbCB9IGZyb20gJy4uL3V0aWwvYXBwLXV0aWwnO1xyXG5pbXBvcnQgeyBSZWdleFZhbGlkYXRvciB9IGZyb20gJy4uL3V0aWwvcmVnZXgtdmFsaWRhdG9yJztcclxuaW1wb3J0IHsgZ2V0TmVzdGVkT3B0aW9ucywgaXNSZXNldENvbnRyb2wgfSBmcm9tICcuLi91dGlsL3Jlc2V0LWZvcm0nO1xyXG5pbXBvcnQgeyBjbG9uZSB9IGZyb20gJy4vZW50aXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSeEZvcm1Db250cm9sIH0gZnJvbSBcIi4vZm9ybS1jb250cm9sXCI7XHJcbmltcG9ydCB7IFJ4Rm9ybUFycmF5IH0gZnJvbSAnLi9yeC1mb3JtLWFycmF5JztcclxuXHJcbi8qKlxyXG4gKiBSZXByZXNlbnRzIGFuIGV4dGVuZGVkIHZlcnNpb24gb2YgRm9ybUdyb3VwIHdpdGggYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5LlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFJ4Rm9ybUdyb3VwIGV4dGVuZHMgRm9ybUdyb3VwIHtcclxuICAgIC8qKlxyXG4gICAgICogUmVwcmVzZW50cyB0aGUgYmFzZSBvYmplY3QgY29udGFpbmluZyBrZXktdmFsdWUgcGFpcnMgZm9yIHRoZSBmb3JtIGRhdGEuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYmFzZU9iamVjdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIGNvbnZlcnRpbmcgZm9ybSBkYXRhIHRvIEZvcm1EYXRhLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGZvcm1EYXRhUHJvdmlkZXI6IEZvcm1EYXRhUHJvdmlkZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZm9ybSBncm91cCBoYXMgYmVlbiBzdWJtaXR0ZWQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3N1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udGFpbnMgdGhlIG1vZGlmaWVkIHZhbHVlcyBvZiB0aGUgZm9ybSBncm91cC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfbW9kaWZpZWQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBmb3JtIGdyb3VwIGhhcyBiZWVuIG1vZGlmaWVkLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9pc01vZGlmaWVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZm9ybSBncm91cCBpcyBjaGFuZ2luZy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNoYW5naW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFJ4Rm9ybUdyb3VwLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gbW9kZWwgVGhlIG1vZGVsIGFzc29jaWF0ZWQgd2l0aCB0aGUgZm9ybSBncm91cC5cclxuICAgICAqIEBwYXJhbSBlbnRpdHlPYmplY3QgVGhlIGVudGl0eSBvYmplY3QgY29udGFpbmluZyBmb3JtIGRhdGEuXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbHMgVGhlIGluaXRpYWwgY29udHJvbHMgZm9yIHRoZSBmb3JtIGdyb3VwLlxyXG4gICAgICogQHBhcmFtIHZhbGlkYXRvck9yT3B0cyBUaGUgdmFsaWRhdG9ycyBmb3IgdGhlIGZvcm0gZ3JvdXAuXHJcbiAgICAgKiBAcGFyYW0gYXN5bmNWYWxpZGF0b3IgVGhlIGFzeW5jaHJvbm91cyB2YWxpZGF0b3JzIGZvciB0aGUgZm9ybSBncm91cC5cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBtb2RlbDogYW55LFxyXG4gICAgICAgIHByaXZhdGUgZW50aXR5T2JqZWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxyXG4gICAgICAgIGNvbnRyb2xzOiB7IFtrZXk6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbDsgfSxcclxuICAgICAgICB2YWxpZGF0b3JPck9wdHM/OiBhbnksXHJcbiAgICAgICAgYXN5bmNWYWxpZGF0b3I/OiBBc3luY1ZhbGlkYXRvckZuIHwgQXN5bmNWYWxpZGF0b3JGbltdIHwgbnVsbFxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoY29udHJvbHMsIHZhbGlkYXRvck9yT3B0cywgYXN5bmNWYWxpZGF0b3IpO1xyXG5cclxuICAgICAgICB0aGlzLmJhc2VPYmplY3QgPSB7fTtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgY29sdW1uIGluIHRoaXMuZW50aXR5T2JqZWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuYmFzZU9iamVjdFtjb2x1bW5dID0gdGhpcy5lbnRpdHlPYmplY3RbY29sdW1uXVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5mb3JtRGF0YVByb3ZpZGVyID0gbmV3IEZvcm1EYXRhUHJvdmlkZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEJpbmRzIHRoZSBwcmltYXJ5IGtleSBvZiB0aGUgbW9kZWwgaW5zdGFuY2UgdG8gdGhlIHByb3ZpZGVkIEpTT04gb2JqZWN0LlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gbW9kZWxJbnN0YW5jZSBUaGUgbW9kZWwgaW5zdGFuY2UuXHJcbiAgICAgKiBAcGFyYW0gak9iamVjdCBUaGUgSlNPTiBvYmplY3QgdG8gYmluZC5cclxuICAgICAqL1xyXG4gICAgYmluZFByaW1hcnlLZXkobW9kZWxJbnN0YW5jZTogYW55LCBqT2JqZWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XHJcbiAgICAgICAgbGV0IGluc3RhbmNlQ29udGFpbmVyID0gZGVmYXVsdENvbnRhaW5lci5nZXQobW9kZWxJbnN0YW5jZS5jb25zdHJ1Y3Rvcik7XHJcbiAgICAgICAgaWYgKGluc3RhbmNlQ29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIGxldCBwcmltYXJ5S2V5UHJvcCA9IGluc3RhbmNlQ29udGFpbmVyLnByb3BlcnRpZXM/LmZpbHRlcih4ID0+IHguaXNQcmltYXJ5S2V5KVswXTtcclxuICAgICAgICAgICAgaWYgKHByaW1hcnlLZXlQcm9wICYmIHRoaXMubW9kZWxJbnN0YW5jZVtwcmltYXJ5S2V5UHJvcC5uYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgak9iamVjdFtwcmltYXJ5S2V5UHJvcC5uYW1lXSA9IHRoaXMubW9kZWxJbnN0YW5jZVtwcmltYXJ5S2V5UHJvcC5uYW1lXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIG1vZGlmaWVkIHZhbHVlIG9mIHRoZSBmb3JtIGdyb3VwLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgbW9kaWZpZWQgdmFsdWUgYXMgYW4gb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IG1vZGlmaWVkVmFsdWUoKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XHJcbiAgICAgICAgbGV0IGpPYmplY3Q6IGFueSA9IHt9O1xyXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLl9tb2RpZmllZCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmJpbmRQcmltYXJ5S2V5KHRoaXMubW9kZWxJbnN0YW5jZSwgak9iamVjdClcclxuICAgICAgICAgICAgZm9yICh2YXIgY29sdW1uTmFtZSBpbiB0aGlzLl9tb2RpZmllZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBSeEZvcm1Hcm91cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGpPYmplY3RbY29sdW1uTmFtZV0gPSAoPFJ4Rm9ybUdyb3VwPnRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0pLm1vZGlmaWVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZvcm1BcnJheSA9IHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gYXMgRm9ybUFycmF5O1xyXG4gICAgICAgICAgICAgICAgICAgIGpPYmplY3RbY29sdW1uTmFtZV0gPSBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9tb2RpZmllZFtjb2x1bW5OYW1lXS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbW9kaWZpZWRWYWx1ZSA9ICg8UnhGb3JtR3JvdXA+Zm9ybUFycmF5LmNvbnRyb2xzW2ldKS5tb2RpZmllZFZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhtb2RpZmllZFZhbHVlKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqT2JqZWN0W2NvbHVtbk5hbWVdLnB1c2gobW9kaWZpZWRWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChqT2JqZWN0W2NvbHVtbk5hbWVdLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBqT2JqZWN0W2NvbHVtbk5hbWVdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgak9iamVjdFtjb2x1bW5OYW1lXSA9IHRoaXMuX21vZGlmaWVkW2NvbHVtbk5hbWVdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gak9iamVjdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RpZmllZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiB0aGUgZm9ybSBncm91cCBpcyBtb2RpZmllZC5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZm9ybSBncm91cCBpcyBtb2RpZmllZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBpc01vZGlmaWVkKCkgeyByZXR1cm4gdGhpcy5faXNNb2RpZmllZDsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGF0Y2hlcyB0aGUgZm9ybSBncm91cC5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGNvbnRyb2xOYW1lIE9wdGlvbmFsLiBUaGUgbmFtZSBvZiB0aGUgY29udHJvbCB0byBwYXRjaC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHBhdGNoKGNvbnRyb2xOYW1lPzogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2xOYW1lKSB7XHJcbiAgICAgICAgICAgIGxldCBjb250cm9sID0gPFJ4Rm9ybUNvbnRyb2w+dGhpcy5jb250cm9sc1tjb250cm9sTmFtZV07XHJcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc01vZGlmaWVkKGNvbnRyb2xOYW1lLCBjb250cm9sKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm5lc3RlZEZvcm1zTW9kaWZpY2F0aW9uKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9pc01vZGlmaWVkID0gT2JqZWN0LmtleXModGhpcy5fbW9kaWZpZWQpLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc01vZGlmaWVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmVzdGVkQXJyYXlJc01vZGlmaWVkKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5wYXJlbnQgJiYgKDxSeEZvcm1Hcm91cD50aGlzLnBhcmVudCkucGF0Y2gpIHtcclxuICAgICAgICAgICAgKDxSeEZvcm1Hcm91cD50aGlzLnBhcmVudCkucGF0Y2goKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3MgaWYgdGhlIGZvcm0gZ3JvdXAgaXMgZGlydHkuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvcm0gZ3JvdXAgaXMgZGlydHkuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc0RpcnR5KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBpc0RpcnR5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgICAgZm9yIChsZXQgbmFtZSBpbiB0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGxldCBjdXJyZW50VmFsdWUgPSB0aGlzLm1vZGVsSW5zdGFuY2VbbmFtZV07XHJcblxyXG4gICAgICAgICAgICBpZiAoISh0aGlzLmNvbnRyb2xzW25hbWVdIGluc3RhbmNlb2YgRm9ybUdyb3VwIHx8IHRoaXMuY29udHJvbHNbbmFtZV0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpKSB7XHJcbiAgICAgICAgICAgICAgICBpc0RpcnR5ID0gQXBwbGljYXRpb25VdGlsLm5vdEVxdWFsVG8odGhpcy5iYXNlT2JqZWN0W25hbWVdLCBjdXJyZW50VmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNvbnRyb2xzW25hbWVdIGluc3RhbmNlb2YgUnhGb3JtR3JvdXApIHtcclxuICAgICAgICAgICAgICAgIGlzRGlydHkgPSAoPFJ4Rm9ybUdyb3VwPnRoaXMuY29udHJvbHNbbmFtZV0pLmlzRGlydHkoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb250cm9sc1tuYW1lXSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZm9ybUdyb3VwIG9mICg8Rm9ybUFycmF5PnRoaXMuY29udHJvbHNbbmFtZV0pLmNvbnRyb2xzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXNEaXJ0eSA9ICg8UnhGb3JtR3JvdXA+Zm9ybUdyb3VwKS5pc0RpcnR5KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc0RpcnR5KSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGlzRGlydHk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXNldHMgdGhlIGZvcm0gZ3JvdXAuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsLiBPcHRpb25zIGZvciByZXNldHRpbmcgdGhlIGZvcm0gZ3JvdXAuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZXNldEZvcm0ob3B0aW9ucz86IHsgcmVzZXRUeXBlPzogUmVzZXRGb3JtVHlwZSwgd2l0aD86IHN0cmluZ1tdLCB2YWx1ZT86IHsgW2tleTogc3RyaW5nXTogYW55IH0gfSk6IHZvaWQge1xyXG4gICAgICAgIGZvciAobGV0IG5hbWUgaW4gdGhpcy5jb250cm9scykge1xyXG4gICAgICAgICAgICBpZiAoaXNSZXNldENvbnRyb2wobmFtZSwgdGhpcy5jb250cm9sc1tuYW1lXSwgb3B0aW9ucykpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzW25hbWVdIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKDxSeEZvcm1Hcm91cD50aGlzLmNvbnRyb2xzW25hbWVdKS5yZXNldEZvcm0oZ2V0TmVzdGVkT3B0aW9ucyhuYW1lLCBvcHRpb25zKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb250cm9sc1tuYW1lXSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICAgICAgICAgICAgICAgICg8UnhGb3JtQXJyYXk+dGhpcy5jb250cm9sc1tuYW1lXSkucmVzZXRGb3JtKG9wdGlvbnMgJiYgb3B0aW9ucy52YWx1ZSA/IG9wdGlvbnMudmFsdWVbbmFtZV0gOiB1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMudmFsdWUgJiYgUmVnZXhWYWxpZGF0b3IuaXNOb3RCbGFuayhvcHRpb25zLnZhbHVlW25hbWVdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzW25hbWVdLnJlc2V0KG9wdGlvbnMudmFsdWVbbmFtZV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9sc1tuYW1lXS5yZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbW1pdHMgY2hhbmdlcyBpbiB0aGUgZm9ybSBncm91cC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNvbW1pdCgpIHtcclxuICAgICAgICBmb3IgKGxldCBuYW1lIGluIHRoaXMuY29udHJvbHMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbHNbbmFtZV0gaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgICAgICAgICAgICg8UnhGb3JtR3JvdXA+dGhpcy5jb250cm9sc1tuYW1lXSkuY29tbWl0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb250cm9sc1tuYW1lXSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICAgICAgICAgICAgKDxSeEZvcm1BcnJheT50aGlzLmNvbnRyb2xzW25hbWVdKS5jb21taXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICg8UnhGb3JtQ29udHJvbD50aGlzLmNvbnRyb2xzW25hbWVdKS5jb21taXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhdGNoZXMgdGhlIG1vZGVsIHZhbHVlIG9mIHRoZSBmb3JtIGdyb3VwLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHBhdGNoLlxyXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwuIE9wdGlvbnMgZm9yIHBhdGNoaW5nIHRoZSB2YWx1ZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHBhdGNoTW9kZWxWYWx1ZSh2YWx1ZTogeyBba2V5OiBzdHJpbmddOiBhbnk7IH0sIG9wdGlvbnM/OiB7IG9ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbjsgfSk6IHZvaWQge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBuYW1lIGluIHRoaXMuY29udHJvbHMpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzW25hbWVdIGluc3RhbmNlb2YgUnhGb3JtR3JvdXAgJiYgdmFsdWVbbmFtZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAoPFJ4Rm9ybUdyb3VwPnRoaXMuY29udHJvbHNbbmFtZV0pLnBhdGNoTW9kZWxWYWx1ZSh2YWx1ZVtuYW1lXSwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb250cm9sc1tuYW1lXSBpbnN0YW5jZW9mIEZvcm1BcnJheSAmJiBBcnJheS5pc0FycmF5KHZhbHVlW25hbWVdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgZm9ybUdyb3VwIG9mICg8Rm9ybUFycmF5PnRoaXMuY29udHJvbHNbbmFtZV0pLmNvbnRyb2xzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZVtuYW1lXVtpbmRleF0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8UnhGb3JtR3JvdXA+Zm9ybUdyb3VwKS5wYXRjaE1vZGVsVmFsdWUodmFsdWVbbmFtZV1baW5kZXhdLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpbmRleCArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVbbmFtZV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzW25hbWVdLnBhdGNoVmFsdWUodmFsdWVbbmFtZV0sIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyBlcnJvciBzdW1tYXJ5IG9mIHRoZSBmb3JtIGdyb3VwLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gb25seU1lc3NhZ2UgSW5kaWNhdGVzIHdoZXRoZXIgdG8gaW5jbHVkZSBvbmx5IGVycm9yIG1lc3NhZ2VzLlxyXG4gICAgICogQHJldHVybnMgVGhlIGVycm9yIHN1bW1hcnkgYXMgYW4gb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0RXJyb3JTdW1tYXJ5KG9ubHlNZXNzYWdlOiBib29sZWFuKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XHJcbiAgICAgICAgbGV0IGpPYmplY3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5mb3JFYWNoKGNvbHVtbk5hbWUgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yID0gKDxSeEZvcm1Hcm91cD50aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdKS5nZXRFcnJvclN1bW1hcnkoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGVycm9yKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgak9iamVjdFtjb2x1bW5OYW1lXSA9IGVycm9yO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBmb3JtR3JvdXAgb2YgKDxGb3JtQXJyYXk+dGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSkuY29udHJvbHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IgPSAoPFJ4Rm9ybUdyb3VwPmZvcm1Hcm91cCkuZ2V0RXJyb3JTdW1tYXJ5KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoZXJyb3IpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IuaW5kZXggPSBpbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFqT2JqZWN0W2NvbHVtbk5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqT2JqZWN0W2NvbHVtbk5hbWVdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGpPYmplY3RbY29sdW1uTmFtZV0ucHVzaChlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0uZXJyb3JzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yID0gdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXS5lcnJvcnM7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9ubHlNZXNzYWdlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB2YWxpZGF0aW9uTmFtZSBpbiBlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgak9iamVjdFtjb2x1bW5OYW1lXSA9IGVycm9yW3ZhbGlkYXRpb25OYW1lXT8ubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBqT2JqZWN0W2NvbHVtbk5hbWVdID0gZXJyb3I7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBqT2JqZWN0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3luY2hyb25pemVzIHZhbHVlIGNoYW5nZXMgaW4gdGhlIGZvcm0gZ3JvdXAuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZWRTeW5jKCkge1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpLmZvckVhY2goY29sdW1uTmFtZSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtQXJyYXkgfHwgdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUFycmF5KSAmJiAhKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUdyb3VwKSAmJiAhKHRoaXMuZW50aXR5T2JqZWN0W2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wgfHwgdGhpcy5lbnRpdHlPYmplY3RbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBSeEZvcm1Db250cm9sKSAmJiAoPFJ4Rm9ybUNvbnRyb2w+dGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSkuZ2V0Q29udHJvbFZhbHVlICYmIEFwcGxpY2F0aW9uVXRpbC5ub3RFcXVhbFRvKCg8UnhGb3JtQ29udHJvbD50aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdKS5nZXRDb250cm9sVmFsdWUoKSwgdGhpcy5lbnRpdHlPYmplY3RbY29sdW1uTmFtZV0pKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdLnNldFZhbHVlKHRoaXMuZW50aXR5T2JqZWN0W2NvbHVtbk5hbWVdLCB7IHVwZGF0ZUNoYW5nZWQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtQXJyYXkgfHwgdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUFycmF5KSkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZm9ybUdyb3VwIG9mICg8Rm9ybUFycmF5PnRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0pLmNvbnRyb2xzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKDxSeEZvcm1Hcm91cD5mb3JtR3JvdXApLnZhbHVlQ2hhbmdlZFN5bmMoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICgodGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUdyb3VwKSkge1xyXG4gICAgICAgICAgICAgICAgKDxSeEZvcm1Hcm91cD50aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdKS52YWx1ZUNoYW5nZWRTeW5jKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlZnJlc2hlcyBkaXNhYmxlZCBzdGF0ZSBvZiBjb250cm9scyBpbiB0aGUgZm9ybSBncm91cC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZnJlc2hEaXNhYmxlKCkge1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpLmZvckVhY2goY29sdW1uTmFtZSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtQXJyYXkgfHwgdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUFycmF5KSAmJiAhKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUdyb3VwKSkge1xyXG4gICAgICAgICAgICAgICAgKDxSeEZvcm1Db250cm9sPnRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0pLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICgodGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUdyb3VwKSkge1xyXG4gICAgICAgICAgICAgICAgKDxSeEZvcm1Hcm91cD50aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdKS5yZWZyZXNoRGlzYWJsZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCaW5kcyBlcnJvciBtZXNzYWdlcyB0byBjb250cm9scyBpbiB0aGUgZm9ybSBncm91cC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGJpbmRFcnJvck1lc3NhZ2VzKCkge1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpLmZvckVhY2goY29sdW1uTmFtZSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtQXJyYXkgfHwgdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUFycmF5KSAmJiAhKHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgdGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUdyb3VwKSkge1xyXG4gICAgICAgICAgICAgICAgKDxSeEZvcm1Db250cm9sPnRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0pLmJpbmRFcnJvcigpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCh0aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdIGluc3RhbmNlb2YgUnhGb3JtR3JvdXApKSB7XHJcbiAgICAgICAgICAgICAgICAoPFJ4Rm9ybUdyb3VwPnRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0pLmJpbmRFcnJvck1lc3NhZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBvciBzZXRzIHRoZSBzdWJtaXR0ZWQgc3RhdGUgb2YgdGhlIGZvcm0gZ3JvdXAuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgc3VibWl0dGVkKCkgeyByZXR1cm4gdGhpcy5fc3VibWl0dGVkOyB9XHJcbiAgICBwdWJsaWMgc2V0IHN1Ym1pdHRlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3N1Ym1pdHRlZCA9IHZhbHVlO1xyXG5cclxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5mb3JFYWNoKGNvbHVtbk5hbWUgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGZvcm1BcnJheSA9IHRoaXMuY29udHJvbHNbY29sdW1uTmFtZV0gYXMgRm9ybUFycmF5O1xyXG5cclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGZvcm1Hcm91cCBvZiBmb3JtQXJyYXkuY29udHJvbHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAoPFJ4Rm9ybUdyb3VwPmZvcm1Hcm91cCkuc3VibWl0dGVkID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb250cm9sc1tjb2x1bW5OYW1lXSBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICAgICAgICAgICAgKDxSeEZvcm1Hcm91cD50aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdKS5zdWJtaXR0ZWQgPSB2YWx1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICg8UnhGb3JtQ29udHJvbD50aGlzLmNvbnRyb2xzW2NvbHVtbk5hbWVdKS5iaW5kRXJyb3IoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgbW9kZWwgaW5zdGFuY2UgdmFsdWUgb2YgdGhlIGZvcm0gZ3JvdXAuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgbW9kZWxJbnN0YW5jZVZhbHVlKCkgeyByZXR1cm4gY2xvbmUodGhpcy5lbnRpdHlPYmplY3QpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEdldHMgdGhlIG1vZGVsIGluc3RhbmNlIG9mIHRoZSBmb3JtIGdyb3VwLlxyXG4gICAgKi9cclxuICAgIHB1YmxpYyBnZXQgbW9kZWxJbnN0YW5jZSgpIHsgcmV0dXJuIHRoaXMuZW50aXR5T2JqZWN0OyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBlcnJvcnMgb2YgdGhlIGNvbnRyb2xzIGluIHRoZSBmb3JtIGdyb3VwLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGNvbnRyb2xzRXJyb3IoKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7IHJldHVybiB0aGlzLmdldEVycm9yU3VtbWFyeSh0cnVlKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udmVydHMgdGhlIGZvcm0gZ3JvdXAgdG8gRm9ybURhdGEuXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbC4gT3B0aW9ucyBmb3IgY29udmVydGluZyB0byBGb3JtRGF0YS5cclxuICAgICAqIEByZXR1cm5zIFRoZSBGb3JtRGF0YSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0b0Zvcm1EYXRhKG9wdGlvbnM/OiBGb3JtRGF0YUNvbmZpZyk6IEZvcm1EYXRhIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtRGF0YVByb3ZpZGVyLmNvbnZlcnRUb0Zvcm1EYXRhKHRoaXMudmFsdWUsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvY2Vzc2VzIHRoZSBtb2RpZmljYXRpb24gb2YgYSBjb250cm9sIHdpdGhpbiB0aGUgZm9ybSBncm91cC5cclxuICAgICAqIEBwYXJhbSBjb250cm9sTmFtZSBUaGUgbmFtZSBvZiB0aGUgY29udHJvbCBiZWluZyBtb2RpZmllZC5cclxuICAgICAqIEBwYXJhbSBjb250cm9sIFRoZSBjb250cm9sIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBwcm9jZXNzTW9kaWZpZWQoY29udHJvbE5hbWU6IHN0cmluZywgY29udHJvbDogYW55KSB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wuaXNNb2RpZmllZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tb2RpZmllZFtjb250cm9sTmFtZV0gPSBjb250cm9sLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX21vZGlmaWVkW2NvbnRyb2xOYW1lXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2lzTW9kaWZpZWQgPSBPYmplY3Qua2V5cyh0aGlzLl9tb2RpZmllZCkubGVuZ3RoID4gMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiBhbnkgbmVzdGVkIGFycmF5IHdpdGhpbiB0aGUgZm9ybSBncm91cCBpcyBtb2RpZmllZC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBuZXN0ZWRBcnJheUlzTW9kaWZpZWQoKSB7XHJcbiAgICAgICAgZm9yICh2YXIgY29udHJvbE5hbWUgaW4gdGhpcy5jb250cm9scykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0gaW5zdGFuY2VvZiBSeEZvcm1BcnJheSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faXNNb2RpZmllZCA9ICg8UnhGb3JtQXJyYXk+dGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0pLmlzTW9kaWZpZWQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc01vZGlmaWVkKSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgYmFja2VuZCBlcnJvcnMgZm9yIHRoZSBmb3JtIGdyb3VwIGNvbnRyb2xzLlxyXG4gICAgICogQHBhcmFtIGVycm9ycyBPYmplY3QgY29udGFpbmluZyB0aGUgYmFja2VuZCBlcnJvcnMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRCYWNrRW5kRXJyb3JzKGVycm9yczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGVycm9ycykuZm9yRWFjaChjb250cm9sTmFtZSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKDxSeEZvcm1Hcm91cD50aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSkuc2V0QmFja0VuZEVycm9ycyhlcnJvcnNbY29udHJvbE5hbWVdKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKDxSeEZvcm1Db250cm9sPnRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdKS5zZXRCYWNrRW5kRXJyb3JzKGVycm9yc1tjb250cm9sTmFtZV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENsZWFycyBiYWNrZW5kIGVycm9ycyBmb3IgdGhlIGZvcm0gZ3JvdXAgY29udHJvbHMuXHJcbiAgICAgKiBAcGFyYW0gZXJyb3JzIE9wdGlvbmFsIG9iamVjdCBjb250YWluaW5nIHNwZWNpZmljIGVycm9ycyB0byBjbGVhci5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNsZWFyQmFja0VuZEVycm9ycyhlcnJvcnM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XHJcbiAgICAgICAgbGV0IGNsZWFyRXJyb3JzID0gZXJyb3JzID8gT2JqZWN0LmtleXMoZXJyb3JzKSA6IE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpO1xyXG4gICAgICAgIGNsZWFyRXJyb3JzLmZvckVhY2goY29udHJvbE5hbWUgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0pIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVycm9ycyA/ICg8UnhGb3JtR3JvdXA+dGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0pLmNsZWFyQmFja0VuZEVycm9ycyhlcnJvcnNbY29udHJvbE5hbWVdKSA6ICg8UnhGb3JtR3JvdXA+dGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0pLmNsZWFyQmFja0VuZEVycm9ycygpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPyAoPFJ4Rm9ybUNvbnRyb2w+dGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0pLmNsZWFyQmFja0VuZEVycm9ycyhlcnJvcnNbY29udHJvbE5hbWVdKSA6ICg8UnhGb3JtR3JvdXA+dGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0pLmNsZWFyQmFja0VuZEVycm9ycygpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vZGlmaWVzIG5lc3RlZCBmb3JtcyB3aXRoaW4gdGhlIGZvcm0gZ3JvdXAuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbmVzdGVkRm9ybXNNb2RpZmljYXRpb24oKSB7XHJcbiAgICAgICAgZm9yICh2YXIgY29udHJvbE5hbWUgaW4gdGhpcy5jb250cm9scykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0gaW5zdGFuY2VvZiBSeEZvcm1Hcm91cCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzTW9kaWZpZWQoY29udHJvbE5hbWUsIHRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSBpbnN0YW5jZW9mIFJ4Rm9ybUFycmF5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKDxSeEZvcm1BcnJheT50aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSkuaXNNb2RpZmllZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmb3JtR3JvdXBzID0gKDxSeEZvcm1BcnJheT50aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSkuY29udHJvbHM7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbW9kaWZpZWRbY29udHJvbE5hbWVdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZm9ybUdyb3VwIG9mIGZvcm1Hcm91cHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCg8UnhGb3JtR3JvdXA+Zm9ybUdyb3VwKS5pc01vZGlmaWVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX21vZGlmaWVkW2NvbnRyb2xOYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21vZGlmaWVkW2NvbnRyb2xOYW1lXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21vZGlmaWVkW2NvbnRyb2xOYW1lXS5wdXNoKCg8UnhGb3JtR3JvdXA+Zm9ybUdyb3VwKS5tb2RpZmllZFZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX21vZGlmaWVkW2NvbnRyb2xOYW1lXS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fbW9kaWZpZWRbY29udHJvbE5hbWVdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLl9tb2RpZmllZFtjb250cm9sTmFtZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fbW9kaWZpZWRbY29udHJvbE5hbWVdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import { FormBuilder } from "@angular/forms";
|
|
3
|
-
import { FUNCTION_STRING } from "../const/app.const";
|
|
4
|
-
import { RxFormBuilder } from "./rx-form-builder";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class TypedFormBuilder {
|
|
7
|
-
formBuilder;
|
|
8
|
-
rxFormBuilder;
|
|
9
|
-
constructor() {
|
|
10
|
-
this.formBuilder = new FormBuilder();
|
|
11
|
-
this.rxFormBuilder = new RxFormBuilder();
|
|
12
|
-
}
|
|
13
|
-
group(controlsConfig, options) {
|
|
14
|
-
let paramOptions = options || {};
|
|
15
|
-
if (typeof controlsConfig == FUNCTION_STRING)
|
|
16
|
-
return !(paramOptions && paramOptions.isInstance) ? this.rxFormBuilder.formGroup(controlsConfig, paramOptions.data, paramOptions.config) : this.rxFormBuilder.formGroup(controlsConfig, paramOptions.data, paramOptions.config).modelInstance;
|
|
17
|
-
return this.formBuilder.group(controlsConfig, options);
|
|
18
|
-
}
|
|
19
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TypedFormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
20
|
-
/** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TypedFormBuilder });
|
|
21
|
-
}
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TypedFormBuilder, decorators: [{
|
|
23
|
-
type: Injectable
|
|
24
|
-
}], ctorParameters: () => [] });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWQtZm9ybS1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybS12YWxpZGF0b3JzL3NlcnZpY2VzL3R5cGVkLWZvcm0tYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBMEIsV0FBVyxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFJbEQsTUFBTSxPQUFPLGdCQUFnQjtJQUNqQixXQUFXLENBQWM7SUFDekIsYUFBYSxDQUFnQjtJQUNyQztRQUNJLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELEtBQUssQ0FBSSxjQUVSLEVBQUUsT0FFSztRQUNKLElBQUksWUFBWSxHQUFZLE9BQU8sSUFBUyxFQUFFLENBQUM7UUFDL0MsSUFBSSxPQUFPLGNBQWMsSUFBSSxlQUFlO1lBQ3hDLE9BQU8sQ0FBQyxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQWtCLENBQUMsQ0FBQyxDQUFlLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUUsQ0FBQyxhQUFrQixDQUFDO1FBQ3ZSLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7MEhBakJRLGdCQUFnQjs4SEFBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbE9wdGlvbnMsIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbmltcG9ydCB7IEZVTkNUSU9OX1NUUklORyB9IGZyb20gXCIuLi9jb25zdC9hcHAuY29uc3RcIjtcclxuaW1wb3J0IHsgSUZvcm1Hcm91cCB9IGZyb20gXCIuLi9tb2RlbHMvaW50ZXJmYWNlL2ktZm9ybS1ncm91cFwiO1xyXG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSBcIi4uL21vZGVscy9pbnRlcmZhY2Uvb3B0aW9uc1wiO1xyXG5pbXBvcnQgeyBSeEZvcm1CdWlsZGVyIH0gZnJvbSBcIi4vcngtZm9ybS1idWlsZGVyXCI7XHJcbmltcG9ydCB7IFJ4Rm9ybUdyb3VwIH0gZnJvbSBcIi4vcngtZm9ybS1ncm91cFwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVHlwZWRGb3JtQnVpbGRlciB7XHJcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcjtcclxuICAgIHByaXZhdGUgcnhGb3JtQnVpbGRlcjogUnhGb3JtQnVpbGRlcjtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuZm9ybUJ1aWxkZXIgPSBuZXcgRm9ybUJ1aWxkZXIoKTtcclxuICAgICAgICB0aGlzLnJ4Rm9ybUJ1aWxkZXIgPSBuZXcgUnhGb3JtQnVpbGRlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGdyb3VwPFQ+KGNvbnRyb2xzQ29uZmlnOiB7XHJcbiAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xyXG4gICAgfSwgb3B0aW9ucz86IEFic3RyYWN0Q29udHJvbE9wdGlvbnMgfCB7XHJcbiAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xyXG4gICAgfSB8IG51bGwpOiBGb3JtR3JvdXAgfCBUIHtcclxuICAgICAgICBsZXQgcGFyYW1PcHRpb25zID0gPE9wdGlvbnM+b3B0aW9ucyB8fCA8YW55Pnt9O1xyXG4gICAgICAgIGlmICh0eXBlb2YgY29udHJvbHNDb25maWcgPT0gRlVOQ1RJT05fU1RSSU5HKVxyXG4gICAgICAgICAgICByZXR1cm4gIShwYXJhbU9wdGlvbnMgJiYgcGFyYW1PcHRpb25zLmlzSW5zdGFuY2UpID8gdGhpcy5yeEZvcm1CdWlsZGVyLmZvcm1Hcm91cChjb250cm9sc0NvbmZpZywgcGFyYW1PcHRpb25zLmRhdGEsIHBhcmFtT3B0aW9ucy5jb25maWcpIGFzIElGb3JtR3JvdXA8VD4gOiAoPFJ4Rm9ybUdyb3VwPnRoaXMucnhGb3JtQnVpbGRlci5mb3JtR3JvdXAoY29udHJvbHNDb25maWcsIHBhcmFtT3B0aW9ucy5kYXRhLCBwYXJhbU9wdGlvbnMuY29uZmlnKSkubW9kZWxJbnN0YW5jZSBhcyBUO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKGNvbnRyb2xzQ29uZmlnLCBvcHRpb25zKTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export const alphabet = {
|
|
2
|
-
'danish': /^[A-ZÆØÅ]+$/,
|
|
3
|
-
'french': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/,
|
|
4
|
-
'german': /^[A-ZÄÖÜß]+$/,
|
|
5
|
-
'spanish': /^[a-zñáéíóúü]+$/i,
|
|
6
|
-
'russian': /^[А-ЯЁ]+$/,
|
|
7
|
-
};
|
|
8
|
-
export const alphaWithWhitespace = {
|
|
9
|
-
'danish': /^[A-ZÆØÅ\s]+$/,
|
|
10
|
-
'french': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\s]+$/,
|
|
11
|
-
'german': /^[A-ZÄÖÜß\s]+$/,
|
|
12
|
-
'spanish': /^[a-zñáéíóúü\s]+$/i,
|
|
13
|
-
'russian': /^[А-ЯЁ\s]+$/,
|
|
14
|
-
};
|
|
15
|
-
export const alphanumeric = {
|
|
16
|
-
'danish': /^[0-9A-ZÆØÅ]+$/,
|
|
17
|
-
'french': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/,
|
|
18
|
-
'german': /^[0-9A-ZÄÖÜß]+$/,
|
|
19
|
-
'spanish': /^[0-9a-zñáéíóúü]+$/i,
|
|
20
|
-
'russian': /^[0-9А-ЯЁ]+$/,
|
|
21
|
-
};
|
|
22
|
-
export const alphanumericWithWitespace = {
|
|
23
|
-
'danish': /^[0-9A-ZÆØÅ]+$/,
|
|
24
|
-
'french': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/,
|
|
25
|
-
'german': /^[0-9A-ZÄÖÜß]+$/,
|
|
26
|
-
'spanish': /^[0-9a-zñáéíóúü\s]+$/i,
|
|
27
|
-
'russian': /^[0-9А-ЯЁ]+$/,
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxwaGFiZXQtcmVnZXgubG9jYWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybS12YWxpZGF0b3JzL3V0aWwvYWxwaGFiZXQtcmVnZXgubG9jYWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUNwQixRQUFRLEVBQUUsYUFBYTtJQUN2QixRQUFRLEVBQUUsMEJBQTBCO0lBQ3BDLFFBQVEsRUFBRSxjQUFjO0lBQ3hCLFNBQVMsRUFBRSxrQkFBa0I7SUFDN0IsU0FBUyxFQUFFLFdBQVc7Q0FFekIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQy9CLFFBQVEsRUFBRSxlQUFlO0lBQ3pCLFFBQVEsRUFBRSw0QkFBNEI7SUFDdEMsUUFBUSxFQUFFLGdCQUFnQjtJQUMxQixTQUFTLEVBQUUsb0JBQW9CO0lBQy9CLFNBQVMsRUFBRSxhQUFhO0NBRTNCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDeEIsUUFBUSxFQUFFLGdCQUFnQjtJQUMxQixRQUFRLEVBQUUsNkJBQTZCO0lBQ3ZDLFFBQVEsRUFBRSxpQkFBaUI7SUFDM0IsU0FBUyxFQUFFLHFCQUFxQjtJQUNoQyxTQUFTLEVBQUUsY0FBYztDQUM1QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUc7SUFDckMsUUFBUSxFQUFFLGdCQUFnQjtJQUMxQixRQUFRLEVBQUUsNkJBQTZCO0lBQ3ZDLFFBQVEsRUFBRSxpQkFBaUI7SUFDM0IsU0FBUyxFQUFFLHVCQUF1QjtJQUNsQyxTQUFTLEVBQUUsY0FBYztDQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGFscGhhYmV0ID0ge1xyXG4gICAgJ2RhbmlzaCc6IC9eW0EtWsOGw5jDhV0rJC8sXHJcbiAgICAnZnJlbmNoJzogL15bQS1aw4DDgsOGw4fDicOIw4rDi8OPw47DlMWSw5nDm8OcxbhdKyQvLFxyXG4gICAgJ2dlcm1hbic6IC9eW0EtWsOEw5bDnMOfXSskLyxcclxuICAgICdzcGFuaXNoJzogL15bYS16w7HDocOpw63Ds8O6w7xdKyQvaSxcclxuICAgICdydXNzaWFuJzogL15b0JAt0K/QgV0rJC8sXHJcblxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGFscGhhV2l0aFdoaXRlc3BhY2UgPSB7XHJcbiAgICAnZGFuaXNoJzogL15bQS1aw4bDmMOFXFxzXSskLyxcclxuICAgICdmcmVuY2gnOiAvXltBLVrDgMOCw4bDh8OJw4jDisOLw4/DjsOUxZLDmcObw5zFuFxcc10rJC8sXHJcbiAgICAnZ2VybWFuJzogL15bQS1aw4TDlsOcw59cXHNdKyQvLFxyXG4gICAgJ3NwYW5pc2gnOiAvXlthLXrDscOhw6nDrcOzw7rDvFxcc10rJC9pLFxyXG4gICAgJ3J1c3NpYW4nOiAvXlvQkC3Qr9CBXFxzXSskLyxcclxuXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYWxwaGFudW1lcmljID0ge1xyXG4gICAgJ2RhbmlzaCc6IC9eWzAtOUEtWsOGw5jDhV0rJC8sXHJcbiAgICAnZnJlbmNoJzogL15bMC05QS1aw4DDgsOGw4fDicOIw4rDi8OPw47DlMWSw5nDm8OcxbhdKyQvLFxyXG4gICAgJ2dlcm1hbic6IC9eWzAtOUEtWsOEw5bDnMOfXSskLyxcclxuICAgICdzcGFuaXNoJzogL15bMC05YS16w7HDocOpw63Ds8O6w7xdKyQvaSxcclxuICAgICdydXNzaWFuJzogL15bMC050JAt0K/QgV0rJC8sXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYWxwaGFudW1lcmljV2l0aFdpdGVzcGFjZSA9IHtcclxuICAgICdkYW5pc2gnOiAvXlswLTlBLVrDhsOYw4VdKyQvLFxyXG4gICAgJ2ZyZW5jaCc6IC9eWzAtOUEtWsOAw4LDhsOHw4nDiMOKw4vDj8OOw5TFksOZw5vDnMW4XSskLyxcclxuICAgICdnZXJtYW4nOiAvXlswLTlBLVrDhMOWw5zDn10rJC8sXHJcbiAgICAnc3BhbmlzaCc6IC9eWzAtOWEtesOxw6HDqcOtw7PDusO8XFxzXSskL2ksXHJcbiAgICAncnVzc2lhbic6IC9eWzAtOdCQLdCv0IFdKyQvLFxyXG59O1xyXG5cclxuIl19
|