@messaia/cdk 22.0.0-rc.13 → 22.0.0-rc.15
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 +602 -50
- package/fesm2022/messaia-cdk.mjs.map +1 -1
- package/package.json +1 -1
- package/types/messaia-cdk.d.ts +289 -6
package/fesm2022/messaia-cdk.mjs
CHANGED
|
@@ -20,7 +20,7 @@ import { MatButtonModule, MatIconButton } from '@angular/material/button';
|
|
|
20
20
|
import * as i4 from '@angular/material/icon';
|
|
21
21
|
import { MatIcon, MatIconModule } from '@angular/material/icon';
|
|
22
22
|
import * as i1$1 from '@angular/forms';
|
|
23
|
-
import { FormsModule, FormArray, FormGroup, FormControl, NG_ASYNC_VALIDATORS, NG_VALUE_ACCESSOR, NG_VALIDATORS, AbstractControl, FormBuilder, ReactiveFormsModule, FormControlName, FormControlDirective, NgControl, NgForm, FormGroupDirective, ControlContainer
|
|
23
|
+
import { FormsModule, FormArray, FormGroup, FormControl, Validators, NG_ASYNC_VALIDATORS, NG_VALUE_ACCESSOR, NG_VALIDATORS, AbstractControl, FormBuilder, ReactiveFormsModule, FormControlName, FormControlDirective, NgControl, NgForm, FormGroupDirective, ControlContainer } from '@angular/forms';
|
|
24
24
|
import * as i2$1 from '@angular/material/form-field';
|
|
25
25
|
import { MatFormFieldModule, MatFormFieldControl } from '@angular/material/form-field';
|
|
26
26
|
import * as i3 from '@angular/material/progress-bar';
|
|
@@ -3837,6 +3837,10 @@ class ApplicationUtil {
|
|
|
3837
3837
|
return regex;
|
|
3838
3838
|
}
|
|
3839
3839
|
static configureControl(control, config, type) {
|
|
3840
|
+
if (control && typeof control.setValidatorConfig === 'function') {
|
|
3841
|
+
control.setValidatorConfig(type, config);
|
|
3842
|
+
return;
|
|
3843
|
+
}
|
|
3840
3844
|
if (!control.validatorConfig) {
|
|
3841
3845
|
let jObject = {};
|
|
3842
3846
|
jObject[type] = config;
|
|
@@ -4437,9 +4441,9 @@ class RxFormControl extends FormControl {
|
|
|
4437
4441
|
_baseObject;
|
|
4438
4442
|
_sanitizers;
|
|
4439
4443
|
/**
|
|
4440
|
-
|
|
4441
|
-
|
|
4442
|
-
|
|
4444
|
+
* Current language used for error message localization.
|
|
4445
|
+
* @type {string | undefined}
|
|
4446
|
+
*/
|
|
4443
4447
|
_language;
|
|
4444
4448
|
/**
|
|
4445
4449
|
* The key or name of the control.
|
|
@@ -4521,6 +4525,16 @@ class RxFormControl extends FormControl {
|
|
|
4521
4525
|
* @type {{ [key: string]: string }}
|
|
4522
4526
|
*/
|
|
4523
4527
|
backEndErrors = {};
|
|
4528
|
+
/**
|
|
4529
|
+
* Persisted validator metadata indexed by validator name.
|
|
4530
|
+
* @type {{ [key: string]: any }}
|
|
4531
|
+
*/
|
|
4532
|
+
_validatorConfigStore = {};
|
|
4533
|
+
/**
|
|
4534
|
+
* Runtime validator metadata consumed by existing template validation flow.
|
|
4535
|
+
* @type {{ [key: string]: any } | undefined}
|
|
4536
|
+
*/
|
|
4537
|
+
validatorConfig;
|
|
4524
4538
|
/**
|
|
4525
4539
|
* Indicates if updating the control element's class should be performed.
|
|
4526
4540
|
* @type {boolean | Function | undefined}
|
|
@@ -4542,16 +4556,26 @@ class RxFormControl extends FormControl {
|
|
|
4542
4556
|
* @type {string[]}
|
|
4543
4557
|
*/
|
|
4544
4558
|
get errorMessages() {
|
|
4559
|
+
/* If no message expression is configured, rely on standard error generation. */
|
|
4545
4560
|
if (!this._messageExpression) {
|
|
4546
|
-
|
|
4561
|
+
/* Build messages on demand when errors exist and cache is empty. */
|
|
4562
|
+
if (this._errorMessages.length == 0 && this.errors) {
|
|
4547
4563
|
this.setControlErrorMessages();
|
|
4564
|
+
}
|
|
4548
4565
|
}
|
|
4549
|
-
|
|
4566
|
+
/* If expression mode is enabled but not passed, hide all messages. */
|
|
4567
|
+
else if (this._messageExpression && !this._isPassedExpression) {
|
|
4550
4568
|
return [];
|
|
4551
|
-
|
|
4569
|
+
}
|
|
4570
|
+
/* If errors were cleared, reset message cache accordingly. */
|
|
4571
|
+
if (!this.errors && this._errorMessages.length > 0) {
|
|
4552
4572
|
this.setControlErrorMessages();
|
|
4553
|
-
|
|
4573
|
+
}
|
|
4574
|
+
/* If language changed, rebuild translated messages. */
|
|
4575
|
+
if (this._language != this.getLanguage()) {
|
|
4554
4576
|
this.setControlErrorMessages();
|
|
4577
|
+
}
|
|
4578
|
+
/* Return the computed error message list. */
|
|
4555
4579
|
return this._errorMessages;
|
|
4556
4580
|
}
|
|
4557
4581
|
/**
|
|
@@ -4561,32 +4585,53 @@ class RxFormControl extends FormControl {
|
|
|
4561
4585
|
* @type {string | undefined}
|
|
4562
4586
|
*/
|
|
4563
4587
|
get errorMessage() {
|
|
4588
|
+
/* If no message expression is configured, rely on standard error generation. */
|
|
4564
4589
|
if (!this._messageExpression) {
|
|
4590
|
+
/* Build single message lazily when errors exist and cache is empty. */
|
|
4565
4591
|
if (this._errorMessage == undefined && this.errors) {
|
|
4566
4592
|
this.setControlErrorMessages();
|
|
4567
4593
|
}
|
|
4568
4594
|
}
|
|
4595
|
+
/* If expression mode is enabled but not passed, hide message output. */
|
|
4569
4596
|
else if (this._messageExpression && !this._isPassedExpression) {
|
|
4570
4597
|
return undefined;
|
|
4571
4598
|
}
|
|
4599
|
+
/* If errors were cleared, reset single-message cache accordingly. */
|
|
4572
4600
|
if (!this.errors && this._errorMessage) {
|
|
4573
4601
|
this.setControlErrorMessages();
|
|
4574
4602
|
}
|
|
4603
|
+
/* If language changed, rebuild translated single message. */
|
|
4575
4604
|
if (this._language != this.getLanguage()) {
|
|
4576
4605
|
this.setControlErrorMessages();
|
|
4577
4606
|
}
|
|
4607
|
+
/* Return the computed single error message. */
|
|
4578
4608
|
return this._errorMessage;
|
|
4579
4609
|
}
|
|
4580
4610
|
/**
|
|
4581
4611
|
* Gets the associated entity object.
|
|
4582
4612
|
* @type {any}
|
|
4583
4613
|
*/
|
|
4584
|
-
get entityObject() {
|
|
4614
|
+
get entityObject() {
|
|
4615
|
+
/* Return the entity object linked to this control instance. */
|
|
4616
|
+
return this._entityObject;
|
|
4617
|
+
}
|
|
4585
4618
|
/**
|
|
4586
4619
|
* Gets the base object for comparison or reset.
|
|
4587
4620
|
* @type {any}
|
|
4588
4621
|
*/
|
|
4589
|
-
get baseObject() {
|
|
4622
|
+
get baseObject() {
|
|
4623
|
+
/* Return the base object used for dirty/modified comparisons. */
|
|
4624
|
+
return this._baseObject;
|
|
4625
|
+
}
|
|
4626
|
+
/**
|
|
4627
|
+
* @method isModified
|
|
4628
|
+
* @description Gets whether the control value is modified compared to its base value.
|
|
4629
|
+
* @returns {boolean} True when the control has been modified.
|
|
4630
|
+
*/
|
|
4631
|
+
get isModified() {
|
|
4632
|
+
/* Return whether the current control value differs from the stored base value. */
|
|
4633
|
+
return this._isModified;
|
|
4634
|
+
}
|
|
4590
4635
|
/**
|
|
4591
4636
|
* Constructor to initialize RxFormControl.
|
|
4592
4637
|
* @param formState Initial state or value of the control.
|
|
@@ -4597,301 +4642,715 @@ class RxFormControl extends FormControl {
|
|
|
4597
4642
|
* @param _sanitizers Array of data sanitizers to preprocess values.
|
|
4598
4643
|
*/
|
|
4599
4644
|
constructor(formState, validatorOrOpts, _entityObject, _baseObject, controlName, _sanitizers) {
|
|
4645
|
+
/* Delegate base control construction to Angular FormControl. */
|
|
4600
4646
|
super(formState, validatorOrOpts);
|
|
4601
4647
|
this._entityObject = _entityObject;
|
|
4602
4648
|
this._baseObject = _baseObject;
|
|
4603
4649
|
this._sanitizers = _sanitizers;
|
|
4650
|
+
/* Patch errors property behavior for localization-aware recalculation. */
|
|
4604
4651
|
this.defineErrorsProperty();
|
|
4652
|
+
/* Capture initial/base value snapshot for modified-state comparisons. */
|
|
4605
4653
|
this._baseValue = formState === undefined ? null : this.getFormState(formState);
|
|
4654
|
+
/* Initialize modified-state flag. */
|
|
4606
4655
|
this._isModified = false;
|
|
4656
|
+
/* Store control key name. */
|
|
4607
4657
|
this.keyName = controlName;
|
|
4658
|
+
/* Cache synchronous validators for later probing and metadata checks. */
|
|
4608
4659
|
this._validators = validatorOrOpts.validators;
|
|
4660
|
+
/* Cache asynchronous validators for later inspection. */
|
|
4609
4661
|
this._asyncValidators = validatorOrOpts.asyncValidators;
|
|
4662
|
+
/* Resolve configured error-message binding strategy. */
|
|
4610
4663
|
this._errorMessageBindingStrategy = ReactiveFormConfig.get("reactiveForm.errorMessageBindingStrategy");
|
|
4664
|
+
/* Apply number-format bootstrap conversion when float sanitizer is configured. */
|
|
4611
4665
|
if (this._sanitizers) {
|
|
4666
|
+
/* Find float sanitizer configuration. */
|
|
4612
4667
|
var floatSanitizer = this._sanitizers.filter(t => t.name == "toFloat")[0];
|
|
4668
|
+
/* Convert decimal symbol in base value if locale uses commas. */
|
|
4613
4669
|
if (floatSanitizer && this._baseValue && ReactiveFormConfig.number && ReactiveFormConfig.number["decimalSymbol"] == ",") {
|
|
4670
|
+
/* Stringify base value for symbol replacement. */
|
|
4614
4671
|
let baseValue = String(this._baseValue);
|
|
4672
|
+
/* Replace decimal point only when present. */
|
|
4615
4673
|
if (baseValue.indexOf('.') != -1) {
|
|
4674
|
+
/* Store converted base value using configured decimal symbol. */
|
|
4616
4675
|
this._baseValue = baseValue.replace(".", ReactiveFormConfig.number["decimalSymbol"]);
|
|
4676
|
+
/* Keep underlying FormControl value synchronized with converted base value. */
|
|
4617
4677
|
super.setValue(this._baseValue);
|
|
4618
4678
|
}
|
|
4619
4679
|
}
|
|
4620
4680
|
}
|
|
4621
4681
|
}
|
|
4682
|
+
/**
|
|
4683
|
+
* Defines a getter and setter for the 'errors' property to handle dynamic error message updates.
|
|
4684
|
+
* This allows the control to re-evaluate its errors when the language changes or when validation is triggered.
|
|
4685
|
+
* @returns {void}
|
|
4686
|
+
*/
|
|
4622
4687
|
defineErrorsProperty() {
|
|
4688
|
+
/* Redefine errors access so language changes can force validator re-evaluation lazily. */
|
|
4623
4689
|
Object.defineProperty(this, "errors", {
|
|
4624
4690
|
configurable: true,
|
|
4625
4691
|
get() {
|
|
4692
|
+
/* Recompute errors when language changes and validator exists. */
|
|
4626
4693
|
if (this._language && this._language != this.getLanguage() && this.validator) {
|
|
4627
4694
|
this["errors"] = this.validator(this);
|
|
4628
4695
|
}
|
|
4696
|
+
/* Return backing error store value. */
|
|
4629
4697
|
return this._errors;
|
|
4630
4698
|
},
|
|
4699
|
+
/* Persist assigned errors into backing store. */
|
|
4631
4700
|
set(value) { this._errors = value; },
|
|
4632
4701
|
});
|
|
4633
4702
|
}
|
|
4703
|
+
/**
|
|
4704
|
+
* Gets the current language for error message localization.
|
|
4705
|
+
* @param value Optional value to determine the language context.
|
|
4706
|
+
* @returns {string | undefined} The current language code.
|
|
4707
|
+
*/
|
|
4634
4708
|
getFormState(value) {
|
|
4709
|
+
/* Clone arrays to avoid mutating the original form-state reference. */
|
|
4710
|
+
/* Start from incoming value. */
|
|
4635
4711
|
let baseValue = value;
|
|
4712
|
+
/* Clone arrays to prevent shared reference mutation. */
|
|
4636
4713
|
if (Array.isArray(value)) {
|
|
4637
4714
|
baseValue = [];
|
|
4715
|
+
/* Copy each array item into new base-value array. */
|
|
4638
4716
|
value.forEach(t => baseValue.push(t));
|
|
4639
4717
|
}
|
|
4718
|
+
/* Return normalized base-state value. */
|
|
4640
4719
|
return baseValue;
|
|
4641
4720
|
}
|
|
4642
|
-
|
|
4643
|
-
|
|
4644
|
-
|
|
4721
|
+
/**
|
|
4722
|
+
* @method getValidators
|
|
4723
|
+
* @description Returns a shallow copy of synchronous validators.
|
|
4724
|
+
* @returns {ValidatorFn[]} Synchronous validator functions.
|
|
4725
|
+
*/
|
|
4645
4726
|
getValidators() {
|
|
4727
|
+
/* Return a normalized copy of synchronous validators. */
|
|
4646
4728
|
return this.getValidatorSource(this._validators);
|
|
4647
4729
|
}
|
|
4730
|
+
/**
|
|
4731
|
+
* @method getAsyncValidators
|
|
4732
|
+
* @description Returns a shallow copy of asynchronous validators.
|
|
4733
|
+
* @returns {AsyncValidatorFn[]} Asynchronous validator functions.
|
|
4734
|
+
*/
|
|
4648
4735
|
getAsyncValidators() {
|
|
4736
|
+
/* Return a normalized copy of asynchronous validators. */
|
|
4649
4737
|
return this.getValidatorSource(this._asyncValidators);
|
|
4650
4738
|
}
|
|
4739
|
+
/**
|
|
4740
|
+
* @method setValidatorConfig
|
|
4741
|
+
* @description Persists validator configuration metadata by validator type.
|
|
4742
|
+
* @param {string} type Validator name.
|
|
4743
|
+
* @param {any} config Validator configuration object.
|
|
4744
|
+
*/
|
|
4745
|
+
setValidatorConfig(type, config) {
|
|
4746
|
+
/* Persist normalized validator configuration and keep compatibility with validatorConfig consumers. */
|
|
4747
|
+
const normalizedConfig = config === '' || config === undefined || config === null ? true : config;
|
|
4748
|
+
this._validatorConfigStore[type] = normalizedConfig;
|
|
4749
|
+
this.validatorConfig = this._validatorConfigStore;
|
|
4750
|
+
}
|
|
4751
|
+
/**
|
|
4752
|
+
* @method getValidatorConfig
|
|
4753
|
+
* @description Returns persisted validator configuration by validator name.
|
|
4754
|
+
* @param {string} type Validator name.
|
|
4755
|
+
* @returns {any} Validator configuration value.
|
|
4756
|
+
*/
|
|
4757
|
+
getValidatorConfig(type) {
|
|
4758
|
+
/* Return persisted metadata for a specific validator type. */
|
|
4759
|
+
return this._validatorConfigStore[type];
|
|
4760
|
+
}
|
|
4761
|
+
/**
|
|
4762
|
+
* @method isRequiredActive
|
|
4763
|
+
* @description Evaluates whether required validation is currently active, including dynamic conditional expressions.
|
|
4764
|
+
* @returns {boolean} True when required is active for this control.
|
|
4765
|
+
*/
|
|
4766
|
+
isRequiredActive() {
|
|
4767
|
+
/* Check if the control has a native required validator. */
|
|
4768
|
+
const nativeRequired = typeof this.hasValidator === 'function' ? this.hasValidator(Validators.required) : false;
|
|
4769
|
+
/* Check if the control has a persisted required configuration. If not, probe the validators to determine if required is active. */
|
|
4770
|
+
const requiredConfig = this.getValidatorConfig('required');
|
|
4771
|
+
/* If no persisted configuration exists, probe the validators to determine if required is active. */
|
|
4772
|
+
if (requiredConfig === undefined) {
|
|
4773
|
+
/* Get the list of synchronous validators for this control. */
|
|
4774
|
+
const validators = this.getValidators();
|
|
4775
|
+
/* Check if any of the validators return a required error when evaluated with a probe control. */
|
|
4776
|
+
const requiredByProbe = validators.some((validator) => {
|
|
4777
|
+
try {
|
|
4778
|
+
/* Create a probe control to evaluate the validator without affecting the actual control state. */
|
|
4779
|
+
const probe = Object.create(this);
|
|
4780
|
+
/* Define a temporary value for the probe control to evaluate the validator. */
|
|
4781
|
+
Object.defineProperty(probe, 'value', {
|
|
4782
|
+
configurable: true,
|
|
4783
|
+
enumerable: true,
|
|
4784
|
+
value: null,
|
|
4785
|
+
writable: true
|
|
4786
|
+
});
|
|
4787
|
+
/* Evaluate the validator with the probe control and check if it returns a required error. */
|
|
4788
|
+
const result = validator(probe);
|
|
4789
|
+
/* Return true if the validator indicates that required validation is active. */
|
|
4790
|
+
return !!(result && result['required']);
|
|
4791
|
+
}
|
|
4792
|
+
catch {
|
|
4793
|
+
return false;
|
|
4794
|
+
}
|
|
4795
|
+
});
|
|
4796
|
+
/* Return true if either the native required validator is present or if any of the validators indicate that required validation is active. */
|
|
4797
|
+
return nativeRequired || requiredByProbe;
|
|
4798
|
+
}
|
|
4799
|
+
/* If a persisted required configuration exists, evaluate it to determine if required validation is active. */
|
|
4800
|
+
if (typeof requiredConfig === 'boolean') {
|
|
4801
|
+
return nativeRequired || requiredConfig;
|
|
4802
|
+
}
|
|
4803
|
+
/* If the persisted required configuration is an object, evaluate it using the FormProvider to determine if required validation is active. */
|
|
4804
|
+
if (requiredConfig && typeof requiredConfig === 'object') {
|
|
4805
|
+
return nativeRequired || !!FormProvider.processRule(this, requiredConfig);
|
|
4806
|
+
}
|
|
4807
|
+
/* Fallback to return true if either the native required validator is present or if the persisted required configuration is truthy. */
|
|
4808
|
+
return nativeRequired || !!requiredConfig;
|
|
4809
|
+
}
|
|
4810
|
+
/**
|
|
4811
|
+
* @method getValidatorSource
|
|
4812
|
+
* @description Normalizes validator input to an array copy.
|
|
4813
|
+
* @param {any[]} validators Validator value or array to normalize.
|
|
4814
|
+
* @returns {any[]} Array of validators.
|
|
4815
|
+
*/
|
|
4651
4816
|
getValidatorSource(validators) {
|
|
4652
|
-
|
|
4817
|
+
/* Normalize validators into an array to simplify downstream iteration. */
|
|
4818
|
+
if (validators) {
|
|
4653
4819
|
return Array.isArray(validators) ? [...validators] : [validators];
|
|
4820
|
+
}
|
|
4654
4821
|
return [];
|
|
4655
4822
|
}
|
|
4823
|
+
/**
|
|
4824
|
+
* @method setValidators
|
|
4825
|
+
* @description Sets synchronous validators and stores the source list.
|
|
4826
|
+
* @param {ValidatorFn | ValidatorFn[] | null} newValidator Validator or validators to assign.
|
|
4827
|
+
* @returns {void}
|
|
4828
|
+
*/
|
|
4656
4829
|
setValidators(newValidator) {
|
|
4830
|
+
/* Cache synchronous validators locally before delegating to Angular base implementation. */
|
|
4657
4831
|
this._validators = newValidator;
|
|
4658
4832
|
super.setValidators(newValidator);
|
|
4659
4833
|
}
|
|
4834
|
+
/**
|
|
4835
|
+
* @method setAsyncValidators
|
|
4836
|
+
* @description Sets asynchronous validators and stores the source list.
|
|
4837
|
+
* @param {AsyncValidatorFn | AsyncValidatorFn[] | null} newValidator Async validator or validators to assign.
|
|
4838
|
+
* @returns {void}
|
|
4839
|
+
*/
|
|
4660
4840
|
setAsyncValidators(newValidator) {
|
|
4841
|
+
/* Cache asynchronous validators locally before delegating to Angular base implementation. */
|
|
4661
4842
|
this._asyncValidators = newValidator;
|
|
4662
4843
|
super.setAsyncValidators(newValidator);
|
|
4663
4844
|
}
|
|
4845
|
+
/**
|
|
4846
|
+
* @method setValue
|
|
4847
|
+
* @description Sets control value, synchronizes entity/base objects, and runs expression hooks.
|
|
4848
|
+
* @param {any} value New control value.
|
|
4849
|
+
* @param {{ dirty?: boolean; updateChanged?: boolean; onlySelf?: boolean; emitEvent?: boolean; isThroughDynamic?: boolean; }} options Optional behavior flags.
|
|
4850
|
+
* @returns {void}
|
|
4851
|
+
*/
|
|
4664
4852
|
setValue(value, options) {
|
|
4853
|
+
/* Synchronize value into entity/base structures, then run expression and patch hooks. */
|
|
4854
|
+
/* Mark parent as currently changing to avoid recursive side effects. */
|
|
4665
4855
|
this.parent.changing = true;
|
|
4856
|
+
/* Sanitize incoming value before storing into bound entity object. */
|
|
4666
4857
|
let parsedValue = this.getSanitizedValue(value);
|
|
4667
|
-
|
|
4858
|
+
/* If requested, update the base object snapshot with raw value. */
|
|
4859
|
+
if (options && options.dirty) {
|
|
4668
4860
|
this._baseObject[this.keyName] = value;
|
|
4861
|
+
}
|
|
4862
|
+
/* Store sanitized value into bound entity model. */
|
|
4669
4863
|
this._entityObject[this.keyName] = parsedValue;
|
|
4864
|
+
/* Delegate actual control value update to base class implementation. */
|
|
4670
4865
|
super.setValue(value, options);
|
|
4866
|
+
/* Recompute and bind error messages after value change. */
|
|
4671
4867
|
this.bindError();
|
|
4868
|
+
/* Recompute and bind dynamic class output after value change. */
|
|
4672
4869
|
this.bindClassName();
|
|
4870
|
+
/* Execute conditional decorator expressions tied to this control. */
|
|
4673
4871
|
this.executeExpressions();
|
|
4872
|
+
/* Recompute modified state and invoke parent patch callback. */
|
|
4674
4873
|
this.callPatch();
|
|
4874
|
+
/* Notify root value-changed synchronization hook when enabled. */
|
|
4675
4875
|
if (options && !options.updateChanged && this.root[VALUE_CHANGED_SYNC]) {
|
|
4676
4876
|
this.root[VALUE_CHANGED_SYNC]();
|
|
4677
4877
|
}
|
|
4878
|
+
/* Clear parent changing marker after update pipeline completes. */
|
|
4678
4879
|
this.parent.changing = false;
|
|
4679
4880
|
}
|
|
4881
|
+
/**
|
|
4882
|
+
* @method getControlValue
|
|
4883
|
+
* @description Returns the sanitized current control value.
|
|
4884
|
+
* @returns {any} Sanitized control value.
|
|
4885
|
+
*/
|
|
4680
4886
|
getControlValue() {
|
|
4887
|
+
/* Return sanitized value representation for external consumers. */
|
|
4681
4888
|
return this.getSanitizedValue(this.value);
|
|
4682
4889
|
}
|
|
4890
|
+
/**
|
|
4891
|
+
* @method bindError
|
|
4892
|
+
* @description Re-evaluates message expression and refreshes computed errors.
|
|
4893
|
+
* @returns {void}
|
|
4894
|
+
*/
|
|
4683
4895
|
bindError() {
|
|
4684
|
-
|
|
4896
|
+
/* Evaluate error expression gates and refresh computed errors cache. */
|
|
4897
|
+
if (this._messageExpression) {
|
|
4685
4898
|
this._isPassedExpression = this.executeExpression(this._messageExpression, this);
|
|
4899
|
+
}
|
|
4900
|
+
/* Recompute error messages based on current errors and language context. */
|
|
4686
4901
|
this.setControlErrorMessages();
|
|
4687
|
-
|
|
4688
|
-
|
|
4902
|
+
/* Update the language cache to reflect current language context. */
|
|
4903
|
+
var self = this;
|
|
4904
|
+
/* Update the errors property to trigger any dependent bindings or observers. */
|
|
4905
|
+
self["errors"] = this.errors;
|
|
4689
4906
|
}
|
|
4907
|
+
/**
|
|
4908
|
+
* @method bindClassName
|
|
4909
|
+
* @description Evaluates and applies dynamic CSS class output for the control element.
|
|
4910
|
+
* @returns {void}
|
|
4911
|
+
*/
|
|
4690
4912
|
bindClassName() {
|
|
4913
|
+
/* Evaluate and publish dynamic class-name output when a callback is configured. */
|
|
4691
4914
|
if (this.updateOnElementClass && typeof this.updateOnElementClass === "function") {
|
|
4692
4915
|
let className = this.executeExpression(this._classNameExpression, this);
|
|
4693
4916
|
let updateElement = this.updateOnElementClass;
|
|
4694
4917
|
updateElement(className);
|
|
4695
4918
|
}
|
|
4696
4919
|
}
|
|
4920
|
+
/**
|
|
4921
|
+
* @method setBackEndErrors
|
|
4922
|
+
* @description Assigns backend validation errors to the control and updates visible messages.
|
|
4923
|
+
* @param {{ [key: string]: string }} error Backend error map.
|
|
4924
|
+
* @returns {void}
|
|
4925
|
+
*/
|
|
4697
4926
|
setBackEndErrors(error) {
|
|
4927
|
+
/* Merge backend errors into local storage and recompute visible messages. */
|
|
4698
4928
|
Object.keys(error).forEach(key => this.backEndErrors[key] = error[key]);
|
|
4929
|
+
/* Recompute visible error messages after backend error assignment. */
|
|
4699
4930
|
this.setControlErrorMessages();
|
|
4700
4931
|
}
|
|
4932
|
+
/**
|
|
4933
|
+
* @method clearBackEndErrors
|
|
4934
|
+
* @description Clears all backend errors or selected backend error keys.
|
|
4935
|
+
* @param {{ [key: string]: any } | undefined} errors Optional map of keys to remove.
|
|
4936
|
+
* @returns {void}
|
|
4937
|
+
*/
|
|
4701
4938
|
clearBackEndErrors(errors) {
|
|
4702
|
-
|
|
4939
|
+
/* Remove all or selected backend errors, then refresh message state. */
|
|
4940
|
+
if (!errors) {
|
|
4703
4941
|
this.backEndErrors = {};
|
|
4704
|
-
|
|
4942
|
+
}
|
|
4943
|
+
else {
|
|
4705
4944
|
Object.keys(errors).forEach(t => delete this.backEndErrors[t]);
|
|
4945
|
+
}
|
|
4946
|
+
/* Recompute visible error messages after backend error clearance. */
|
|
4706
4947
|
this.setControlErrorMessages();
|
|
4707
4948
|
}
|
|
4949
|
+
/**
|
|
4950
|
+
* @method markAsTouched
|
|
4951
|
+
* @description Marks control as touched and triggers dependent expression refreshes on state change.
|
|
4952
|
+
* @param {{ onlySelf?: boolean } | undefined} opts Angular control options.
|
|
4953
|
+
* @returns {void}
|
|
4954
|
+
*/
|
|
4708
4955
|
markAsTouched(opts) {
|
|
4956
|
+
/* Trigger dependent expression updates only when touched state actually changes. */
|
|
4709
4957
|
let currentState = this.touched;
|
|
4710
4958
|
super.markAsTouched(opts);
|
|
4711
|
-
if (currentState != this.touched)
|
|
4959
|
+
if (currentState != this.touched) {
|
|
4712
4960
|
this.runControlPropChangeExpression([TOUCHED, UNTOUCHED]);
|
|
4961
|
+
}
|
|
4713
4962
|
}
|
|
4963
|
+
/**
|
|
4964
|
+
* @method markAsUntouched
|
|
4965
|
+
* @description Marks control as untouched and triggers dependent expression refreshes on state change.
|
|
4966
|
+
* @param {{ onlySelf?: boolean } | undefined} opts Angular control options.
|
|
4967
|
+
* @returns {void}
|
|
4968
|
+
*/
|
|
4714
4969
|
markAsUntouched(opts) {
|
|
4970
|
+
/* Trigger dependent expression updates only when untouched state actually changes. */
|
|
4715
4971
|
let currentState = this.untouched;
|
|
4716
4972
|
super.markAsUntouched(opts);
|
|
4717
|
-
if (currentState != this.untouched)
|
|
4973
|
+
if (currentState != this.untouched) {
|
|
4718
4974
|
this.runControlPropChangeExpression([UNTOUCHED, TOUCHED]);
|
|
4975
|
+
}
|
|
4719
4976
|
}
|
|
4977
|
+
/**
|
|
4978
|
+
* @method markAsDirty
|
|
4979
|
+
* @description Marks control as dirty and triggers dependent expression refreshes on state change.
|
|
4980
|
+
* @param {{ onlySelf?: boolean } | undefined} opts Angular control options.
|
|
4981
|
+
* @returns {void}
|
|
4982
|
+
*/
|
|
4720
4983
|
markAsDirty(opts) {
|
|
4984
|
+
/* Keep custom dirty flag in sync and propagate expression updates when needed. */
|
|
4721
4985
|
let currentState = this._dirty;
|
|
4722
4986
|
super.markAsDirty(opts);
|
|
4723
4987
|
this._dirty = true;
|
|
4724
|
-
if (currentState != this._dirty)
|
|
4988
|
+
if (currentState != this._dirty) {
|
|
4725
4989
|
this.runControlPropChangeExpression([DIRTY]);
|
|
4990
|
+
}
|
|
4726
4991
|
}
|
|
4992
|
+
/**
|
|
4993
|
+
* @method markAsPristine
|
|
4994
|
+
* @description Marks control as pristine and triggers dependent expression refreshes on state change.
|
|
4995
|
+
* @param {{ onlySelf?: boolean } | undefined} opts Angular control options.
|
|
4996
|
+
* @returns {void}
|
|
4997
|
+
*/
|
|
4727
4998
|
markAsPristine(opts) {
|
|
4999
|
+
/* Propagate expression updates only when pristine state actually changes. */
|
|
4728
5000
|
let currentState = this.pristine;
|
|
4729
5001
|
super.markAsPristine(opts);
|
|
4730
|
-
if (currentState != this.pristine)
|
|
5002
|
+
if (currentState != this.pristine) {
|
|
4731
5003
|
this.runControlPropChangeExpression([PRISTINE]);
|
|
5004
|
+
}
|
|
4732
5005
|
}
|
|
5006
|
+
/**
|
|
5007
|
+
* @method markAsPending
|
|
5008
|
+
* @description Marks control pending via base flow and triggers dependent expression refreshes on state change.
|
|
5009
|
+
* @param {{ onlySelf?: boolean; emitEvent?: boolean } | undefined} opts Angular control options.
|
|
5010
|
+
* @returns {void}
|
|
5011
|
+
*/
|
|
4733
5012
|
markAsPending(opts) {
|
|
5013
|
+
/* Propagate expression updates only when pending state actually changes. */
|
|
4734
5014
|
let currentState = this.pending;
|
|
4735
5015
|
super.markAsDirty(opts);
|
|
4736
|
-
if (currentState != this.pending)
|
|
5016
|
+
if (currentState != this.pending) {
|
|
4737
5017
|
this.runControlPropChangeExpression([PENDING]);
|
|
5018
|
+
}
|
|
4738
5019
|
}
|
|
5020
|
+
/**
|
|
5021
|
+
* @method runControlPropChangeExpression
|
|
5022
|
+
* @description Executes error/class expression updates for changed control state flags.
|
|
5023
|
+
* @param {string[]} propNames State property names to evaluate.
|
|
5024
|
+
* @returns {void}
|
|
5025
|
+
*/
|
|
4739
5026
|
runControlPropChangeExpression(propNames) {
|
|
5027
|
+
/* Re-run mapped error/class expressions for each changed control-state property. */
|
|
4740
5028
|
propNames.forEach(name => {
|
|
4741
|
-
|
|
5029
|
+
/* Refresh errors when property is tracked by message-expression dependencies. */
|
|
5030
|
+
if ((this._controlProp && this._messageExpression && this._controlProp[name]) || (!this._messageExpression && this.checkErrorMessageStrategy())) {
|
|
4742
5031
|
this.bindError();
|
|
4743
|
-
|
|
5032
|
+
}
|
|
5033
|
+
/* Refresh class names when property is tracked by class-expression dependencies. */
|
|
5034
|
+
if (this._classNameControlProp && this._classNameControlProp[name]) {
|
|
4744
5035
|
this.bindClassName();
|
|
5036
|
+
}
|
|
4745
5037
|
});
|
|
4746
5038
|
}
|
|
5039
|
+
/**
|
|
5040
|
+
* @method refresh
|
|
5041
|
+
* @description Rebuilds decorator expressions and refreshes current error state.
|
|
5042
|
+
* @returns {void}
|
|
5043
|
+
*/
|
|
4747
5044
|
refresh() {
|
|
5045
|
+
/* Rebind expressions and conditional controls, then refresh current error state. */
|
|
5046
|
+
/* Reload expression metadata from model container. */
|
|
4748
5047
|
this.getMessageExpression(this.parent, this.keyName);
|
|
5048
|
+
/* Rebuild disabled-expression control references. */
|
|
4749
5049
|
this.bindConditionalControls(DECORATORS["disabled"], "_refDisableControls");
|
|
5050
|
+
/* Rebuild error-expression control references. */
|
|
4750
5051
|
this.bindConditionalControls(DECORATORS["error"], "_refMessageControls");
|
|
5052
|
+
/* Rebuild class-expression control references. */
|
|
4751
5053
|
this.bindConditionalControls(DECORATORS["elementClass"], "_refClassNameControls");
|
|
5054
|
+
/* Execute all expression pipelines with current state. */
|
|
4752
5055
|
this.executeExpressions();
|
|
5056
|
+
/* Rebind errors once references and expressions are refreshed. */
|
|
4753
5057
|
this.bindError();
|
|
4754
5058
|
}
|
|
5059
|
+
/**
|
|
5060
|
+
* @method reset
|
|
5061
|
+
* @description Resets control value to provided value or stored base value and clears dirty flag.
|
|
5062
|
+
* @param {any} value Optional value to reset to.
|
|
5063
|
+
* @param {any} options Reset options passed to setValue.
|
|
5064
|
+
* @returns {void}
|
|
5065
|
+
*/
|
|
4755
5066
|
reset(value, options = {}) {
|
|
4756
|
-
|
|
5067
|
+
/* Reset to provided value or base snapshot and clear local dirty tracker. */
|
|
5068
|
+
/* If a value is provided, reset using that value. */
|
|
5069
|
+
if (value !== undefined) {
|
|
4757
5070
|
this.setValue(value, options);
|
|
4758
|
-
|
|
5071
|
+
}
|
|
5072
|
+
else {
|
|
5073
|
+
/* Otherwise reset to stored base-value snapshot. */
|
|
4759
5074
|
this.setValue(this.getFormState(this._baseValue), options);
|
|
5075
|
+
}
|
|
5076
|
+
/* Clear custom dirty state after reset. */
|
|
4760
5077
|
this._dirty = false;
|
|
4761
5078
|
}
|
|
5079
|
+
/**
|
|
5080
|
+
* @method commit
|
|
5081
|
+
* @description Commits current value as base value and re-evaluates modification state.
|
|
5082
|
+
* @returns {void}
|
|
5083
|
+
*/
|
|
4762
5084
|
commit() {
|
|
5085
|
+
/* Accept current value as new baseline and recompute modified state. */
|
|
4763
5086
|
this._baseValue = this.value;
|
|
4764
5087
|
this.callPatch();
|
|
4765
5088
|
}
|
|
5089
|
+
/**
|
|
5090
|
+
* @method callPatch
|
|
5091
|
+
* @description Updates modification flag and notifies parent patch hook when available.
|
|
5092
|
+
* @returns {void}
|
|
5093
|
+
*/
|
|
4766
5094
|
callPatch() {
|
|
5095
|
+
/* Update modified flag and notify parent patch callback when available. */
|
|
5096
|
+
/* Compare normalized base/current values to compute modified state. */
|
|
4767
5097
|
this._isModified = this.getValue(this._baseValue) != this.getValue(this.value);
|
|
4768
|
-
|
|
5098
|
+
/* Notify parent patch callback when parent exposes it. */
|
|
5099
|
+
if (this.parent && this.parent[PATCH]) {
|
|
4769
5100
|
this.parent[PATCH](this.keyName);
|
|
5101
|
+
}
|
|
4770
5102
|
}
|
|
5103
|
+
/**
|
|
5104
|
+
* @method checkErrorMessageStrategy
|
|
5105
|
+
* @description Evaluates whether error messages should be bound according to strategy and state.
|
|
5106
|
+
* @returns {boolean} True when error binding is currently enabled.
|
|
5107
|
+
*/
|
|
4771
5108
|
checkErrorMessageStrategy() {
|
|
5109
|
+
/* Resolve whether error messages should bind under the configured strategy. */
|
|
5110
|
+
/* Initialize with bind-enabled default. */
|
|
4772
5111
|
let isBind = true;
|
|
5112
|
+
/* Switch by configured error-binding strategy. */
|
|
4773
5113
|
switch (this._errorMessageBindingStrategy) {
|
|
4774
5114
|
case ErrorMessageBindingStrategy.OnSubmit:
|
|
5115
|
+
/* Bind only after form submission. */
|
|
4775
5116
|
isBind = this.parent.submitted;
|
|
4776
5117
|
break;
|
|
4777
5118
|
case ErrorMessageBindingStrategy.OnDirty:
|
|
5119
|
+
/* Bind only when control is dirty. */
|
|
4778
5120
|
isBind = this._dirty;
|
|
4779
5121
|
break;
|
|
4780
5122
|
case ErrorMessageBindingStrategy.OnTouched:
|
|
5123
|
+
/* Bind only when control is touched. */
|
|
4781
5124
|
isBind = this.touched;
|
|
4782
5125
|
break;
|
|
4783
5126
|
case ErrorMessageBindingStrategy.OnDirtyOrTouched:
|
|
5127
|
+
/* Bind when control is dirty or touched. */
|
|
4784
5128
|
isBind = this._dirty || this.touched;
|
|
4785
5129
|
break;
|
|
4786
5130
|
case ErrorMessageBindingStrategy.OnDirtyOrSubmit:
|
|
5131
|
+
/* Bind when control is dirty or form is submitted. */
|
|
4787
5132
|
isBind = this._dirty || this.parent.submitted;
|
|
4788
5133
|
break;
|
|
4789
5134
|
case ErrorMessageBindingStrategy.OnTouchedOrSubmit:
|
|
5135
|
+
/* Bind when control is touched or form is submitted. */
|
|
4790
5136
|
isBind = this.touched || this.parent.submitted;
|
|
4791
5137
|
break;
|
|
4792
5138
|
default:
|
|
5139
|
+
/* Fallback strategy keeps binding enabled. */
|
|
4793
5140
|
isBind = true;
|
|
4794
5141
|
}
|
|
5142
|
+
/* Return final strategy decision. */
|
|
4795
5143
|
return isBind;
|
|
4796
5144
|
}
|
|
5145
|
+
/**
|
|
5146
|
+
* @method executeExpressions
|
|
5147
|
+
* @description Executes conditional decorator expressions for disabled state, errors, and element classes.
|
|
5148
|
+
* @returns {void}
|
|
5149
|
+
*/
|
|
4797
5150
|
executeExpressions() {
|
|
5151
|
+
/* Execute conditional expressions for disabled, error, and class-name behaviors. */
|
|
4798
5152
|
this.processExpression("_refDisableControls", "disabled");
|
|
4799
5153
|
this.processExpression("_refMessageControls", "bindError");
|
|
4800
5154
|
this.processExpression("_refClassNameControls", "bindClassName");
|
|
4801
5155
|
}
|
|
5156
|
+
/**
|
|
5157
|
+
* @method getMessageExpression
|
|
5158
|
+
* @description Loads message/class expression metadata from the model container.
|
|
5159
|
+
* @param {FormGroup} formGroup Parent form group.
|
|
5160
|
+
* @param {string} keyName Control key name.
|
|
5161
|
+
* @returns {void}
|
|
5162
|
+
*/
|
|
4802
5163
|
getMessageExpression(formGroup, keyName) {
|
|
5164
|
+
/* Load decorator metadata that drives conditional error and class bindings. */
|
|
5165
|
+
/* Proceed only when form group contains model instance metadata. */
|
|
4803
5166
|
if (formGroup[MODEL_INSTANCE]) {
|
|
5167
|
+
/* Resolve metadata container for the model instance constructor. */
|
|
4804
5168
|
let instanceContainer = defaultContainer.get(formGroup[MODEL_INSTANCE].constructor);
|
|
5169
|
+
/* Apply metadata only when a container is found. */
|
|
4805
5170
|
if (instanceContainer) {
|
|
5171
|
+
/* Load conditional message expression for this control key. */
|
|
4806
5172
|
this._messageExpression = instanceContainer.nonValidationDecorators.error.conditionalExpressions[keyName];
|
|
5173
|
+
/* Load control-property dependencies for message updates. */
|
|
4807
5174
|
this._controlProp = instanceContainer.nonValidationDecorators.error.controlProp[this.keyName];
|
|
5175
|
+
/* Load conditional class-name expression for this control key. */
|
|
4808
5176
|
this._classNameExpression = instanceContainer.nonValidationDecorators.elementClass.conditionalExpressions[keyName];
|
|
5177
|
+
/* Load control-property dependencies for class-name updates. */
|
|
4809
5178
|
this._classNameControlProp = instanceContainer.nonValidationDecorators.elementClass.controlProp[keyName];
|
|
4810
|
-
|
|
5179
|
+
/* Enable element-class update mode when class expression exists. */
|
|
5180
|
+
if (this._classNameExpression) {
|
|
4811
5181
|
this.updateOnElementClass = true;
|
|
5182
|
+
}
|
|
4812
5183
|
}
|
|
4813
5184
|
}
|
|
4814
5185
|
}
|
|
5186
|
+
/**
|
|
5187
|
+
* @method getSanitizedValue
|
|
5188
|
+
* @description Applies configured sanitizers to a value in declaration order.
|
|
5189
|
+
* @param {any} value Raw value.
|
|
5190
|
+
* @returns {any} Sanitized value.
|
|
5191
|
+
*/
|
|
4815
5192
|
getSanitizedValue(value) {
|
|
5193
|
+
/* Apply configured sanitizers in order to normalize outgoing values. */
|
|
5194
|
+
/* Iterate all configured sanitizers if available. */
|
|
4816
5195
|
if (this._sanitizers) {
|
|
4817
5196
|
for (let sanitizer of this._sanitizers) {
|
|
5197
|
+
/* Apply sanitizer transformation with its configuration. */
|
|
4818
5198
|
value = SANITIZERS[sanitizer.name](value, sanitizer.config);
|
|
4819
5199
|
}
|
|
4820
5200
|
}
|
|
5201
|
+
/* Return sanitized value result. */
|
|
4821
5202
|
return value;
|
|
4822
5203
|
}
|
|
5204
|
+
/**
|
|
5205
|
+
* @method bindConditionalControls
|
|
5206
|
+
* @description Builds and stores control references for conditional decorator expressions.
|
|
5207
|
+
* @param {string} decoratorType Decorator type key.
|
|
5208
|
+
* @param {string} refName Property name that stores computed references.
|
|
5209
|
+
* @returns {void}
|
|
5210
|
+
*/
|
|
4823
5211
|
bindConditionalControls(decoratorType, refName) {
|
|
5212
|
+
/* Create provider for requested decorator type and entity context. */
|
|
4824
5213
|
this._disableProvider = new DisableProvider(decoratorType, this._entityObject);
|
|
5214
|
+
/* Load zero-argument expression control references. */
|
|
4825
5215
|
this[refName] = this._disableProvider.zeroArgumentProcess(this, this.keyName);
|
|
5216
|
+
/* Append one-argument expression control references. */
|
|
4826
5217
|
this._disableProvider.oneArgumentProcess(this, `${this.keyName}${RXCODE}1`).forEach(t => this[refName].push(t));
|
|
4827
5218
|
}
|
|
5219
|
+
/**
|
|
5220
|
+
* @method setControlErrorMessages
|
|
5221
|
+
* @description Computes and stores control error messages from validation and backend sources.
|
|
5222
|
+
* @returns {void}
|
|
5223
|
+
*/
|
|
4828
5224
|
setControlErrorMessages() {
|
|
5225
|
+
/* Build error messages when strategy allows binding or expression passes. */
|
|
4829
5226
|
if ((!this._messageExpression && this.checkErrorMessageStrategy()) || this._isPassedExpression) {
|
|
5227
|
+
/* Reset error-message collection before rebuild. */
|
|
4830
5228
|
this._errorMessages = [];
|
|
5229
|
+
/* Process validation errors when present. */
|
|
4831
5230
|
if (this.errors) {
|
|
4832
5231
|
Object.keys(this.errors).forEach(t => {
|
|
5232
|
+
/* If parent exists, also sync into parent control-error registry. */
|
|
4833
5233
|
if (this.parent) {
|
|
4834
5234
|
this.parent[CONTROLS_ERROR][this.keyName] = this._errorMessage = this.getErrorMessage(this.errors, t);
|
|
5235
|
+
/* Fallback to shaped error object when direct message is missing. */
|
|
4835
5236
|
if (!this._errorMessage) {
|
|
4836
5237
|
let errorObject = ObjectMaker.toJson(t, undefined, this.errors[t] && this.errors[t][t] ? [this.errors[t][t]] : []);
|
|
4837
5238
|
this.parent[CONTROLS_ERROR][this.keyName] = this._errorMessage = this.getErrorMessage(errorObject, t);
|
|
4838
5239
|
}
|
|
4839
5240
|
}
|
|
4840
5241
|
else {
|
|
5242
|
+
/* Resolve message directly when parent context is not available. */
|
|
4841
5243
|
this._errorMessage = this.getErrorMessage(this.errors, t);
|
|
4842
5244
|
}
|
|
5245
|
+
/* Append resolved message to message list. */
|
|
4843
5246
|
this._errorMessages.push(this._errorMessage);
|
|
4844
5247
|
});
|
|
4845
5248
|
}
|
|
4846
5249
|
else {
|
|
5250
|
+
/* Clear current message when no validation errors remain. */
|
|
4847
5251
|
this._errorMessage = undefined;
|
|
5252
|
+
/* Remove parent control-error registry value when parent exists. */
|
|
4848
5253
|
if (this.parent) {
|
|
4849
5254
|
this.parent[CONTROLS_ERROR][this.keyName] = undefined;
|
|
4850
5255
|
delete this.parent[CONTROLS_ERROR][this.keyName];
|
|
4851
5256
|
}
|
|
4852
5257
|
}
|
|
5258
|
+
/* Merge backend error messages after validator-message build. */
|
|
4853
5259
|
let backEndErrors = Object.keys(this.backEndErrors);
|
|
4854
|
-
if (backEndErrors.length > 0)
|
|
5260
|
+
if (backEndErrors.length > 0) {
|
|
4855
5261
|
backEndErrors.forEach(t => { this._errorMessages.push(this._errorMessage = this.backEndErrors[t]); });
|
|
5262
|
+
}
|
|
4856
5263
|
}
|
|
4857
5264
|
else {
|
|
5265
|
+
/* Expression/strategy says hide errors, so clear caches. */
|
|
4858
5266
|
this._errorMessages = [];
|
|
4859
5267
|
this._errorMessage = undefined;
|
|
4860
5268
|
}
|
|
5269
|
+
/* Store language snapshot used for current error-message cache. */
|
|
4861
5270
|
this._language = this.getLanguage();
|
|
4862
5271
|
}
|
|
5272
|
+
/**
|
|
5273
|
+
* @method getLanguage
|
|
5274
|
+
* @description Gets active language from reactive form i18n config.
|
|
5275
|
+
* @returns {string | undefined} Active language code.
|
|
5276
|
+
*/
|
|
4863
5277
|
getLanguage() {
|
|
5278
|
+
/* Return the current reactive-form language code when i18n is configured. */
|
|
4864
5279
|
return (ReactiveFormConfig.i18n && ReactiveFormConfig.i18n.language) ? ReactiveFormConfig.i18n.language : undefined;
|
|
4865
5280
|
}
|
|
5281
|
+
/**
|
|
5282
|
+
* @method getErrorMessage
|
|
5283
|
+
* @description Reads a formatted error message for a validation key.
|
|
5284
|
+
* @param {{ [key: string]: string }} errorObject Validation error object.
|
|
5285
|
+
* @param {string} keyName Validation key.
|
|
5286
|
+
* @returns {string | undefined} Resolved error message.
|
|
5287
|
+
*/
|
|
4866
5288
|
getErrorMessage(errorObject, keyName) {
|
|
5289
|
+
/* Return resolved message when payload is present for key. */
|
|
4867
5290
|
if (errorObject[keyName] && errorObject[keyName][MESSAGE]) {
|
|
4868
5291
|
return errorObject[keyName][MESSAGE];
|
|
4869
5292
|
}
|
|
5293
|
+
/* Return undefined when no message payload exists. */
|
|
4870
5294
|
return;
|
|
4871
5295
|
}
|
|
5296
|
+
/**
|
|
5297
|
+
* @method processExpression
|
|
5298
|
+
* @description Applies a conditional operation to referenced controls.
|
|
5299
|
+
* @param {string} propName Reference property name.
|
|
5300
|
+
* @param {string} operationType Operation identifier.
|
|
5301
|
+
* @returns {void}
|
|
5302
|
+
*/
|
|
4872
5303
|
processExpression(propName, operationType) {
|
|
4873
|
-
|
|
5304
|
+
/* Proceed only when expression reference list exists. */
|
|
5305
|
+
if (this[propName]) {
|
|
4874
5306
|
for (var controlInfo of this[propName]) {
|
|
5307
|
+
/* Resolve target control either from root scope or relative scope. */
|
|
4875
5308
|
let control = controlInfo.isRoot ? ApplicationUtil.getControl(controlInfo.controlPath, ApplicationUtil.getRootFormGroup(this)) : ApplicationUtil.getFormControl(controlInfo.controlPath, this);
|
|
5309
|
+
/* Execute operation only when target control is resolved. */
|
|
4876
5310
|
if (control) {
|
|
4877
5311
|
if (operationType == "disabled") {
|
|
5312
|
+
/* Evaluate conditional expression to determine disabled state. */
|
|
4878
5313
|
let result = this.executeExpression(controlInfo.conditionalExpression, control);
|
|
4879
|
-
if (result)
|
|
5314
|
+
if (result) {
|
|
5315
|
+
/* Disable target control when expression evaluates truthy. */
|
|
4880
5316
|
control.disable();
|
|
4881
|
-
|
|
5317
|
+
}
|
|
5318
|
+
else {
|
|
5319
|
+
/* Enable target control when expression evaluates falsy. */
|
|
4882
5320
|
control.enable();
|
|
5321
|
+
}
|
|
4883
5322
|
}
|
|
4884
|
-
else if (operationType == "bindError")
|
|
5323
|
+
else if (operationType == "bindError") {
|
|
5324
|
+
/* Trigger error binding pipeline on target control. */
|
|
4885
5325
|
control.bindError();
|
|
4886
|
-
|
|
5326
|
+
}
|
|
5327
|
+
else if (operationType == "bindClassName") {
|
|
5328
|
+
/* Trigger class-name binding pipeline on target control. */
|
|
4887
5329
|
control.bindClassName();
|
|
5330
|
+
}
|
|
4888
5331
|
}
|
|
4889
5332
|
}
|
|
5333
|
+
}
|
|
4890
5334
|
}
|
|
5335
|
+
/**
|
|
5336
|
+
* @method executeExpression
|
|
5337
|
+
* @description Executes a conditional expression using model instance context.
|
|
5338
|
+
* @param {Function} expression Expression function.
|
|
5339
|
+
* @param {AbstractControl} control Control used as expression argument.
|
|
5340
|
+
* @returns {Boolean} Expression result.
|
|
5341
|
+
*/
|
|
4891
5342
|
executeExpression(expression, control) {
|
|
5343
|
+
/* Execute expression with model instance context and parent-model helpers. */
|
|
4892
5344
|
return expression.call(control.parent[MODEL_INSTANCE], control, ApplicationUtil.getParentModelInstanceValue(this), control.parent[MODEL_INSTANCE]);
|
|
4893
5345
|
}
|
|
5346
|
+
/**
|
|
5347
|
+
* @method getValue
|
|
5348
|
+
* @description Normalizes nullable/empty values for comparison.
|
|
5349
|
+
* @param {any} value Source value.
|
|
5350
|
+
* @returns {any} Normalized comparable value.
|
|
5351
|
+
*/
|
|
4894
5352
|
getValue(value) {
|
|
5353
|
+
/* Normalize nullable and empty values for stable comparisons. */
|
|
4895
5354
|
return value !== undefined && value !== null && value !== "" ? value : "";
|
|
4896
5355
|
}
|
|
4897
5356
|
}
|
|
@@ -11390,7 +11849,7 @@ function rangeAsyncValidatorExtension(config) {
|
|
|
11390
11849
|
}
|
|
11391
11850
|
|
|
11392
11851
|
function requiredValidatorExtension(config) {
|
|
11393
|
-
return baseValidator(config, AnnotationTypes["required"], requiredValidator(config));
|
|
11852
|
+
return baseValidator(config ?? true, AnnotationTypes["required"], requiredValidator(config));
|
|
11394
11853
|
}
|
|
11395
11854
|
|
|
11396
11855
|
function timeValidatorExtension(config) {
|
|
@@ -23168,6 +23627,60 @@ var FormFieldType;
|
|
|
23168
23627
|
FormFieldType[FormFieldType["Custom"] = 100] = "Custom";
|
|
23169
23628
|
})(FormFieldType || (FormFieldType = {}));
|
|
23170
23629
|
|
|
23630
|
+
/**
|
|
23631
|
+
* @function hasRequiredValidator
|
|
23632
|
+
* @description Checks required state using runtime marker, native Angular validators and Rx validator metadata.
|
|
23633
|
+
* @param {AbstractControl | null | undefined} control The control to evaluate.
|
|
23634
|
+
* @returns {boolean} True when the control should be treated as required.
|
|
23635
|
+
*/
|
|
23636
|
+
const hasRequiredValidator = (control) => {
|
|
23637
|
+
if (!control) {
|
|
23638
|
+
return false;
|
|
23639
|
+
}
|
|
23640
|
+
/* Use the explicit required-state API when available on the control instance. */
|
|
23641
|
+
const controlWithRequiredApi = control;
|
|
23642
|
+
if (typeof controlWithRequiredApi.isRequiredActive === 'function') {
|
|
23643
|
+
return controlWithRequiredApi.isRequiredActive();
|
|
23644
|
+
}
|
|
23645
|
+
/* Fallback for plain Angular controls that do not use RxFormControl. */
|
|
23646
|
+
return typeof control.hasValidator === 'function' ? control.hasValidator(Validators.required) : false;
|
|
23647
|
+
};
|
|
23648
|
+
|
|
23649
|
+
/**
|
|
23650
|
+
* @class MatInputRequiredDirective
|
|
23651
|
+
* @description Synchronizes Angular Material input required marker with tracked control required state.
|
|
23652
|
+
*/
|
|
23653
|
+
class MatInputRequiredDirective {
|
|
23654
|
+
input;
|
|
23655
|
+
/**
|
|
23656
|
+
* @constructor
|
|
23657
|
+
* @param {MatInput} input Material input instance.
|
|
23658
|
+
*/
|
|
23659
|
+
constructor(input) {
|
|
23660
|
+
this.input = input;
|
|
23661
|
+
}
|
|
23662
|
+
/**
|
|
23663
|
+
* @method ngDoCheck
|
|
23664
|
+
* @description Updates Material input required flag when control required state changes.
|
|
23665
|
+
*/
|
|
23666
|
+
ngDoCheck() {
|
|
23667
|
+
const isRequired = hasRequiredValidator(this.input.ngControl?.control);
|
|
23668
|
+
if (isRequired !== this.input.required) {
|
|
23669
|
+
this.input.required = isRequired;
|
|
23670
|
+
this.input.ngOnChanges();
|
|
23671
|
+
}
|
|
23672
|
+
}
|
|
23673
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MatInputRequiredDirective, deps: [{ token: i3$2.MatInput }], target: i0.ɵɵFactoryTarget.Directive });
|
|
23674
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: MatInputRequiredDirective, isStandalone: true, selector: "[matInput][formControl]:not([required]), [matInput][formControlName]:not([required])", ngImport: i0 });
|
|
23675
|
+
}
|
|
23676
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MatInputRequiredDirective, decorators: [{
|
|
23677
|
+
type: Directive,
|
|
23678
|
+
args: [{
|
|
23679
|
+
selector: '[matInput][formControl]:not([required]), [matInput][formControlName]:not([required])',
|
|
23680
|
+
standalone: true
|
|
23681
|
+
}]
|
|
23682
|
+
}], ctorParameters: () => [{ type: i3$2.MatInput }] });
|
|
23683
|
+
|
|
23171
23684
|
/**
|
|
23172
23685
|
* Directive that optionally enforces a fixed, non-removable prefix
|
|
23173
23686
|
* at the beginning of an input field.
|
|
@@ -23904,7 +24417,7 @@ class MsaGenericFormAutocompleteFieldComponent extends MsaGenericFormFieldBaseCo
|
|
|
23904
24417
|
<mat-error>{{errorMessage}}</mat-error>
|
|
23905
24418
|
}
|
|
23906
24419
|
</mat-form-field>
|
|
23907
|
-
`, isInline: true, styles: ["mat-form-field{width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i4$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2$2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i4$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: PrefixDirective, selector: "[prefix]", inputs: ["prefix"] }, { kind: "pipe", type: FuncPipe, name: "func" }], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }] });
|
|
24420
|
+
`, isInline: true, styles: ["mat-form-field{width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i4$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2$2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i4$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatInputRequiredDirective, selector: "[matInput][formControl]:not([required]), [matInput][formControlName]:not([required])" }, { kind: "directive", type: PrefixDirective, selector: "[prefix]", inputs: ["prefix"] }, { kind: "pipe", type: FuncPipe, name: "func" }], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }] });
|
|
23908
24421
|
}
|
|
23909
24422
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MsaGenericFormAutocompleteFieldComponent, decorators: [{
|
|
23910
24423
|
type: Component,
|
|
@@ -23916,6 +24429,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
23916
24429
|
MatAutocompleteModule,
|
|
23917
24430
|
MatIconModule,
|
|
23918
24431
|
MatIconButton,
|
|
24432
|
+
MatInputRequiredDirective,
|
|
23919
24433
|
PrefixDirective,
|
|
23920
24434
|
FuncPipe
|
|
23921
24435
|
], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }], template: `
|
|
@@ -24000,11 +24514,11 @@ class MsaGenericFormCalendarFieldComponent extends MsaGenericFormFieldBaseCompon
|
|
|
24000
24514
|
<mat-error layout-margin>{{errorMessage}}</mat-error>
|
|
24001
24515
|
}
|
|
24002
24516
|
</mat-form-field>
|
|
24003
|
-
`, isInline: true, styles: ["mat-form-field{width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i4$1.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }] });
|
|
24517
|
+
`, isInline: true, styles: ["mat-form-field{width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i4$1.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "directive", type: MatInputRequiredDirective, selector: "[matInput][formControl]:not([required]), [matInput][formControlName]:not([required])" }], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }] });
|
|
24004
24518
|
}
|
|
24005
24519
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MsaGenericFormCalendarFieldComponent, decorators: [{
|
|
24006
24520
|
type: Component,
|
|
24007
|
-
args: [{ selector: 'msa-generic-form-calendar-field', standalone: true, imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatDatepickerModule], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }], template: `
|
|
24521
|
+
args: [{ selector: 'msa-generic-form-calendar-field', standalone: true, imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatDatepickerModule, MatInputRequiredDirective], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }], template: `
|
|
24008
24522
|
<mat-form-field [class]="field.cssClass" floatLabel="always" class="form-field-type-calendar">
|
|
24009
24523
|
<mat-label>{{field.label}}</mat-label>
|
|
24010
24524
|
<input input="hidden" hidden matInput [formControlName]="field.name!" />
|
|
@@ -24335,7 +24849,7 @@ class MsaGenericFormColorFieldComponent extends MsaGenericFormFieldBaseComponent
|
|
|
24335
24849
|
<mat-error>{{errorMessage}}</mat-error>
|
|
24336
24850
|
}
|
|
24337
24851
|
</mat-form-field>
|
|
24338
|
-
`, isInline: true, styles: ["mat-form-field{width:100%;height:100%}.color-picker{width:1.6rem!important;height:1.6rem!important;padding:2px!important;margin:8px;display:inline-block;box-sizing:border-box;border-color:transparent!important;border-radius:100%;background:#fff;cursor:pointer;padding:3px;box-shadow:0 1px 1px #0003,0 1px 1px 1px #00000024,0 1px 1px 1px #0000001f;appearance:none;-webkit-appearance:none}.color-picker::-webkit-color-swatch-wrapper{padding:0}.color-picker::-webkit-color-swatch{border:1px solid rgba(0,0,0,.2);border-radius:999px}.color-picker::-moz-color-swatch{border:1px solid rgba(0,0,0,.2);border-radius:999px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: OnlyNumberDirective, selector: "[onlyNumber]", inputs: ["onlyNumber", "excludePrefix"] }, { kind: "pipe", type: FuncPipe, name: "func" }], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }] });
|
|
24852
|
+
`, isInline: true, styles: ["mat-form-field{width:100%;height:100%}.color-picker{width:1.6rem!important;height:1.6rem!important;padding:2px!important;margin:8px;display:inline-block;box-sizing:border-box;border-color:transparent!important;border-radius:100%;background:#fff;cursor:pointer;padding:3px;box-shadow:0 1px 1px #0003,0 1px 1px 1px #00000024,0 1px 1px 1px #0000001f;appearance:none;-webkit-appearance:none}.color-picker::-webkit-color-swatch-wrapper{padding:0}.color-picker::-webkit-color-swatch{border:1px solid rgba(0,0,0,.2);border-radius:999px}.color-picker::-moz-color-swatch{border:1px solid rgba(0,0,0,.2);border-radius:999px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatInputRequiredDirective, selector: "[matInput][formControl]:not([required]), [matInput][formControlName]:not([required])" }, { kind: "directive", type: OnlyNumberDirective, selector: "[onlyNumber]", inputs: ["onlyNumber", "excludePrefix"] }, { kind: "pipe", type: FuncPipe, name: "func" }], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }] });
|
|
24339
24853
|
}
|
|
24340
24854
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MsaGenericFormColorFieldComponent, decorators: [{
|
|
24341
24855
|
type: Component,
|
|
@@ -24346,6 +24860,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
24346
24860
|
MatInputModule,
|
|
24347
24861
|
MatIconModule,
|
|
24348
24862
|
MatIconButton,
|
|
24863
|
+
MatInputRequiredDirective,
|
|
24349
24864
|
FuncPipe,
|
|
24350
24865
|
OnlyNumberDirective
|
|
24351
24866
|
], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }], template: `
|
|
@@ -24486,11 +25001,11 @@ class MsaGenericFormDateFieldComponent extends MsaGenericFormFieldBaseComponent
|
|
|
24486
25001
|
<mat-error>{{errorMessage}}</mat-error>
|
|
24487
25002
|
}
|
|
24488
25003
|
</mat-form-field>
|
|
24489
|
-
`, isInline: true, styles: ["mat-form-field{width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i4$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i4$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i4$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "pipe", type: i1$2.DatePipe, name: "date" }], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }] });
|
|
25004
|
+
`, isInline: true, styles: ["mat-form-field{width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i4$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i4$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i4$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: MatInputRequiredDirective, selector: "[matInput][formControl]:not([required]), [matInput][formControlName]:not([required])" }, { kind: "pipe", type: i1$2.DatePipe, name: "date" }], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }] });
|
|
24490
25005
|
}
|
|
24491
25006
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MsaGenericFormDateFieldComponent, decorators: [{
|
|
24492
25007
|
type: Component,
|
|
24493
|
-
args: [{ selector: 'msa-generic-form-date-field', standalone: true, imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatDatepickerModule], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }], template: `
|
|
25008
|
+
args: [{ selector: 'msa-generic-form-date-field', standalone: true, imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatDatepickerModule, MatInputRequiredDirective], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }], template: `
|
|
24494
25009
|
<mat-form-field [class]="field.cssClass">
|
|
24495
25010
|
<mat-label>{{field.label}}</mat-label>
|
|
24496
25011
|
<div flex layout="row" layout-align="start center" [class]="{'has-time': field.showTime}">
|
|
@@ -25521,6 +26036,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
25521
26036
|
`, styles: ["mat-form-field{width:100%;height:100%}\n"] }]
|
|
25522
26037
|
}] });
|
|
25523
26038
|
|
|
26039
|
+
/**
|
|
26040
|
+
* @class MatSelectRequiredDirective
|
|
26041
|
+
* @description Synchronizes Angular Material select required marker with tracked control required state.
|
|
26042
|
+
*/
|
|
26043
|
+
class MatSelectRequiredDirective {
|
|
26044
|
+
input;
|
|
26045
|
+
/**
|
|
26046
|
+
* @constructor
|
|
26047
|
+
* @param {MatSelect} input Material select instance.
|
|
26048
|
+
*/
|
|
26049
|
+
constructor(input) {
|
|
26050
|
+
this.input = input;
|
|
26051
|
+
}
|
|
26052
|
+
/**
|
|
26053
|
+
* @method ngDoCheck
|
|
26054
|
+
* @description Updates Material select required flag when control required state changes.
|
|
26055
|
+
*/
|
|
26056
|
+
ngDoCheck() {
|
|
26057
|
+
const isRequired = hasRequiredValidator(this.input.ngControl?.control);
|
|
26058
|
+
if (isRequired !== this.input.required) {
|
|
26059
|
+
this.input.required = isRequired;
|
|
26060
|
+
}
|
|
26061
|
+
}
|
|
26062
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MatSelectRequiredDirective, deps: [{ token: i2$2.MatSelect }], target: i0.ɵɵFactoryTarget.Directive });
|
|
26063
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: MatSelectRequiredDirective, isStandalone: true, selector: "mat-select[formControl]:not([required]), mat-select[formControlName]:not([required])", ngImport: i0 });
|
|
26064
|
+
}
|
|
26065
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MatSelectRequiredDirective, decorators: [{
|
|
26066
|
+
type: Directive,
|
|
26067
|
+
args: [{
|
|
26068
|
+
selector: 'mat-select[formControl]:not([required]), mat-select[formControlName]:not([required])',
|
|
26069
|
+
standalone: true
|
|
26070
|
+
}]
|
|
26071
|
+
}], ctorParameters: () => [{ type: i2$2.MatSelect }] });
|
|
26072
|
+
|
|
25524
26073
|
/**
|
|
25525
26074
|
* @class MsaGenericFormSelectFieldComponent
|
|
25526
26075
|
* @description Renders a Select case for `MsaGenericFormComponent`.
|
|
@@ -25557,7 +26106,7 @@ class MsaGenericFormSelectFieldComponent extends MsaGenericFormFieldBaseComponen
|
|
|
25557
26106
|
<mat-error>{{errorMessage}}</mat-error>
|
|
25558
26107
|
}
|
|
25559
26108
|
</mat-form-field>
|
|
25560
|
-
`, isInline: true, styles: ["mat-form-field{width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2$2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2$2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: DisableControlDirective, selector: "[disableControl]", inputs: ["disableControl"] }, { kind: "pipe", type: FuncPipe, name: "func" }], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }] });
|
|
26109
|
+
`, isInline: true, styles: ["mat-form-field{width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2$2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2$2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatSelectRequiredDirective, selector: "mat-select[formControl]:not([required]), mat-select[formControlName]:not([required])" }, { kind: "directive", type: DisableControlDirective, selector: "[disableControl]", inputs: ["disableControl"] }, { kind: "pipe", type: FuncPipe, name: "func" }], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }] });
|
|
25561
26110
|
}
|
|
25562
26111
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MsaGenericFormSelectFieldComponent, decorators: [{
|
|
25563
26112
|
type: Component,
|
|
@@ -25568,6 +26117,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
25568
26117
|
MatSelectModule,
|
|
25569
26118
|
MatIconModule,
|
|
25570
26119
|
MatIconButton,
|
|
26120
|
+
MatSelectRequiredDirective,
|
|
25571
26121
|
DisableControlDirective,
|
|
25572
26122
|
FuncPipe
|
|
25573
26123
|
], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }], template: `
|
|
@@ -25788,7 +26338,7 @@ class MsaGenericFormTextFieldComponent extends MsaGenericFormFieldBaseComponent
|
|
|
25788
26338
|
<mat-error>{{errorMessage}}</mat-error>
|
|
25789
26339
|
}
|
|
25790
26340
|
</mat-form-field>
|
|
25791
|
-
`, isInline: true, styles: ["mat-form-field{width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: AutofocusDirective, selector: "[autoFocus]", inputs: ["focusDelay", "selectText", "autoFocus"] }, { kind: "directive", type: OnlyNumberDirective, selector: "[onlyNumber]", inputs: ["onlyNumber", "excludePrefix"] }, { kind: "directive", type: PrefixDirective, selector: "[prefix]", inputs: ["prefix"] }, { kind: "directive", type: ParseDecimalDirective, selector: "[parseDecimal]", inputs: ["parseDecimalEnabled"] }, { kind: "directive", type: RemoveWhitespaceDirective, selector: "[removeWhitespace]", inputs: ["removeWhitespace"] }, { kind: "pipe", type: FuncPipe, name: "func" }], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }] });
|
|
26341
|
+
`, isInline: true, styles: ["mat-form-field{width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatInputRequiredDirective, selector: "[matInput][formControl]:not([required]), [matInput][formControlName]:not([required])" }, { kind: "directive", type: AutofocusDirective, selector: "[autoFocus]", inputs: ["focusDelay", "selectText", "autoFocus"] }, { kind: "directive", type: OnlyNumberDirective, selector: "[onlyNumber]", inputs: ["onlyNumber", "excludePrefix"] }, { kind: "directive", type: PrefixDirective, selector: "[prefix]", inputs: ["prefix"] }, { kind: "directive", type: ParseDecimalDirective, selector: "[parseDecimal]", inputs: ["parseDecimalEnabled"] }, { kind: "directive", type: RemoveWhitespaceDirective, selector: "[removeWhitespace]", inputs: ["removeWhitespace"] }, { kind: "pipe", type: FuncPipe, name: "func" }], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }] });
|
|
25792
26342
|
}
|
|
25793
26343
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MsaGenericFormTextFieldComponent, decorators: [{
|
|
25794
26344
|
type: Component,
|
|
@@ -25799,6 +26349,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
25799
26349
|
MatInputModule,
|
|
25800
26350
|
MatIconModule,
|
|
25801
26351
|
MatIconButton,
|
|
26352
|
+
MatInputRequiredDirective,
|
|
25802
26353
|
AutofocusDirective,
|
|
25803
26354
|
FuncPipe,
|
|
25804
26355
|
OnlyNumberDirective,
|
|
@@ -25881,7 +26432,7 @@ class MsaGenericFormTextareaFieldComponent extends MsaGenericFormFieldBaseCompon
|
|
|
25881
26432
|
<mat-error>{{errorMessage}}</mat-error>
|
|
25882
26433
|
}
|
|
25883
26434
|
</mat-form-field>
|
|
25884
|
-
`, isInline: true, styles: ["mat-form-field{width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: PrefixDirective, selector: "[prefix]", inputs: ["prefix"] }, { kind: "directive", type: RemoveWhitespaceDirective, selector: "[removeWhitespace]", inputs: ["removeWhitespace"] }, { kind: "pipe", type: FuncPipe, name: "func" }], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }] });
|
|
26435
|
+
`, isInline: true, styles: ["mat-form-field{width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatInputRequiredDirective, selector: "[matInput][formControl]:not([required]), [matInput][formControlName]:not([required])" }, { kind: "directive", type: PrefixDirective, selector: "[prefix]", inputs: ["prefix"] }, { kind: "directive", type: RemoveWhitespaceDirective, selector: "[removeWhitespace]", inputs: ["removeWhitespace"] }, { kind: "pipe", type: FuncPipe, name: "func" }], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }] });
|
|
25885
26436
|
}
|
|
25886
26437
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MsaGenericFormTextareaFieldComponent, decorators: [{
|
|
25887
26438
|
type: Component,
|
|
@@ -25892,6 +26443,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
25892
26443
|
MatInputModule,
|
|
25893
26444
|
MatIconModule,
|
|
25894
26445
|
MatIconButton,
|
|
26446
|
+
MatInputRequiredDirective,
|
|
25895
26447
|
FuncPipe,
|
|
25896
26448
|
PrefixDirective,
|
|
25897
26449
|
RemoveWhitespaceDirective
|
|
@@ -26433,7 +26985,7 @@ class VdGenericFormComponent {
|
|
|
26433
26985
|
console.log(message, optionalParams);
|
|
26434
26986
|
}
|
|
26435
26987
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: VdGenericFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
26436
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: VdGenericFormComponent, isStandalone: true, selector: "vd-generic-form", inputs: { formGroup: "formGroup", classType: "classType", formDefinition: "formDefinition", fieldGroups: "fieldGroups", groupName: "groupName", fieldSets: "fieldSets", context: "context", debugValue: "debugValue", readonly: "readonly", separatorKeysCodes: "separatorKeysCodes" }, outputs: { onInit: "init" }, queries: [{ propertyName: "editorTemplate", first: true, predicate: VdEditorDirective, descendants: true }, { propertyName: "codeTemplate", first: true, predicate: VdCodeDirective, descendants: true }, { propertyName: "fileTemplate", first: true, predicate: VdFileDirective, descendants: true }, { propertyName: "customTemplate", first: true, predicate: VdCustomDirective, descendants: true }, { propertyName: "bottom", first: true, predicate: ["bottom"], descendants: true }, { propertyName: "customFields", first: true, predicate: ["customFields"], descendants: true }, { propertyName: "customFieldsTemplates", predicate: VdGenericFormCustomFieldDirective }], ngImport: i0, template: "@if (formGroup && fieldRows) {\n <div [formGroup]=\"formGroup!\">\n <!-- #region Fields -->\n @for (fields of fieldRows; track fields; let i = $index) {\n <div layout-gt-sm=\"row\" layout=\"column\">\n @for (field of fields; track field) {\n @if (!field.hidden && !(field.hide && field.hide(formValue, formGroup, context))) {\n @switch (field.type) {\n <!-- #region Text input -->\n @case (FormFieldType.Text) {\n <msa-generic-form-text-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-text-field>\n }\n <!-- #endregion -->\n\n <!-- #region Textarea -->\n @case (FormFieldType.TextArea) {\n <msa-generic-form-textarea-field [field]=\"field\"\n [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-textarea-field>\n }\n <!-- #endregion -->\n\n <!-- #region Enum -->\n @case (FormFieldType.Enum) {\n <msa-generic-form-enum-field [field]=\"field\" [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-enum-field>\n }\n <!-- #endregion -->\n\n <!-- #region VdSelect -->\n @case (FormFieldType.VdSelect) {\n <msa-generic-form-msa-select-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-msa-select-field>\n }\n <!-- #endregion -->\n\n <!-- #region VdList -->\n @case (FormFieldType.VdList) {\n <msa-generic-form-msa-list-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-msa-list-field>\n }\n <!-- #endregion -->\n\n <!-- #region Chips -->\n @case (FormFieldType.Chips) {\n <msa-generic-form-chips-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [separatorKeysCodes]=\"separatorKeysCodes\"\n [autocompleteFilteredOptions]=\"autocompleteFilteredOptions\"\n [filterAutocomplete]=\"filterAutocomplete.bind(this)\"\n [autocompleteValueSelected]=\"autocompleteValueSelected.bind(this)\"\n [addChip]=\"addChip.bind(this)\"\n [onPasteChips]=\"onPasteChips.bind(this)\"\n [removeChip]=\"removeChip.bind(this)\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-chips-field>\n }\n <!-- #endregion -->\n\n <!-- #region VdChips -->\n @case (FormFieldType.VdChips) {\n <msa-generic-form-msa-chips-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-msa-chips-field>\n }\n <!-- #endregion -->\n\n <!-- #region Select -->\n @case (FormFieldType.Select) {\n <msa-generic-form-select-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-select-field>\n }\n <!-- #endregion -->\n\n <!-- #region Autocomplete -->\n @case (FormFieldType.Autocomplete) {\n <msa-generic-form-autocomplete-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [autocompleteFilteredOptions]=\"autocompleteFilteredOptions\"\n [filterAutocomplete]=\"filterAutocomplete.bind(this)\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-autocomplete-field>\n }\n <!-- #endregion -->\n\n <!-- #region Date -->\n @case (FormFieldType.Date) {\n <msa-generic-form-date-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [datePickerHeaderComponent]=\"datePickerHeaderComponent\"\n [handleDatePickerFilterAsync]=\"handleDatePickerFilterAsync.bind(this)\"\n [handleDatePickerOpened]=\"handleDatePickerOpened.bind(this)\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-date-field>\n }\n <!-- #endregion -->\n\n <!-- #region Calendar -->\n @case (FormFieldType.Calendar) {\n <msa-generic-form-calendar-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [datePickerHeaderComponent]=\"datePickerHeaderComponent\"\n [handleCalendarFilterAsync]=\"handleCalendarFilterAsync.bind(this)\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-calendar-field>\n }\n <!-- #endregion -->\n\n <!-- #region Color input -->\n @case (FormFieldType.Color) {\n <msa-generic-form-color-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-color-field>\n }\n <!-- #endregion -->\n\n <!-- #region Checkbox -->\n @case (FormFieldType.Checkbox) {\n <msa-generic-form-checkbox-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\">\n </msa-generic-form-checkbox-field>\n }\n <!-- #endregion -->\n\n <!-- #region Radio -->\n @case(FormFieldType.Radio) {\n <msa-generic-form-radio-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-radio-field>\n }\n <!-- #endregion -->\n\n <!-- #region Editor -->\n @case (FormFieldType.Editor) {\n <msa-generic-form-editor-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [editorTemplate]=\"editorTemplate\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-editor-field>\n }\n <!-- #endregion -->\n\n <!-- #region Code -->\n @case (FormFieldType.Code) {\n <msa-generic-form-code-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [codeTemplate]=\"codeTemplate\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-code-field>\n }\n <!-- #endregion -->\n\n <!-- #region File -->\n @case (FormFieldType.File) {\n <msa-generic-form-file-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-file-field>\n }\n <!-- #endregion -->\n\n <!-- #region Custom -->\n @case (FormFieldType.Custom) {\n <msa-generic-form-custom-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [customTemplate]=\"customTemplate\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-custom-field>\n }\n <!-- #endregion -->\n }\n }\n }\n\n <!-- #region Template for custom fields -->\n @for (customField of customFieldsTemplates; track customField) {\n @if (customField?.templateRef && customField.row == fields[0]?.row && customField.inline) {\n <ng-template [ngTemplateOutlet]=\"$safeNavigationMigration(customField?.templateRef)!\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-template>\n }\n }\n <!-- #endregion -->\n </div>\n <!-- #region Template for custom fields -->\n @if (customFields) {\n <ng-container [ngTemplateOutlet]=\"customFields\" [ngTemplateOutletContext]=\"{formGroup: formGroup, row: fields[0].row}\"></ng-container>\n } @for (customField of customFieldsTemplates; track customField) {\n @if(customField?.templateRef && customField.row == ((($safeNavigationMigration(fields[0]?.row) | func:formValue:formGroup:context) ??0)+1) && !customField.inline) {\n <ng-template [ngTemplateOutlet]=\"$safeNavigationMigration(customField?.templateRef)!\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-template>\n }\n }\n <!-- #endregion -->\n }\n <!-- #endregion -->\n\n <!-- #region Form bottom -->\n @if (bottom) {\n <ng-container [ngTemplateOutlet]=\"bottom\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-container>\n }\n <!-- #endregion -->\n\n <!-- #region Template for suffix buttons -->\n <ng-template #suffixButtons let-field>\n @for (suffixButton of field.suffixButtons; track suffixButton) {\n <ng-container matSuffix>\n @if (!suffixButton.hide || !suffixButton.hide(formValue, context)) {\n <button type=\"button\"\n mat-icon-button\n (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\n </button>\n }\n </ng-container>\n }\n </ng-template>\n <!-- #endregion -->\n <!-- #region Debug value -->\n @if (debugValue) {\n <code>\n <pre>{{formValue | json}}</pre>\n </code>\n }\n <!-- #endregion -->\n </div>\n}", styles: [".mat-checkbox-wrap mat-error{transform:translate(36px,-20px);max-width:93%;font-size:var(--mat-typography-caption-font-size, 12px)}::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-icon-suffix .color-picker{width:40px;display:block}::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .has-time input:first-child{width:84px;max-width:inherit;min-width:84px}::ng-deep .mat-mdc-form-field-type-mat-chip-grid .mat-mdc-form-field-infix{padding-top:7px!important;padding-bottom:7px!important}::ng-deep .mat-mdc-form-field-type-mat-chip-grid .mat-mdc-chip{padding-top:0!important;padding-bottom:0!important;margin-top:2px!important;margin-bottom:2px!important;margin-left:4px!important}.radio-form-field{width:100%}.radio-form-field ::ng-deep .mat-mdc-form-field-infix{padding-top:0!important;padding-bottom:0!important}.radio-form-field ::ng-deep .mat-mdc-floating-label{transform:translateY(-1.5em) scale(1)}.radio-form-field mat-radio-group{display:flex;flex-direction:row;gap:20px;padding-top:4px;margin-left:-12px}.radio-form-field .mat-mdc-form-field-infix{min-height:48px;display:flex;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type:
|
|
26988
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: VdGenericFormComponent, isStandalone: true, selector: "vd-generic-form", inputs: { formGroup: "formGroup", classType: "classType", formDefinition: "formDefinition", fieldGroups: "fieldGroups", groupName: "groupName", fieldSets: "fieldSets", context: "context", debugValue: "debugValue", readonly: "readonly", separatorKeysCodes: "separatorKeysCodes" }, outputs: { onInit: "init" }, queries: [{ propertyName: "editorTemplate", first: true, predicate: VdEditorDirective, descendants: true }, { propertyName: "codeTemplate", first: true, predicate: VdCodeDirective, descendants: true }, { propertyName: "fileTemplate", first: true, predicate: VdFileDirective, descendants: true }, { propertyName: "customTemplate", first: true, predicate: VdCustomDirective, descendants: true }, { propertyName: "bottom", first: true, predicate: ["bottom"], descendants: true }, { propertyName: "customFields", first: true, predicate: ["customFields"], descendants: true }, { propertyName: "customFieldsTemplates", predicate: VdGenericFormCustomFieldDirective }], ngImport: i0, template: "@if (formGroup && fieldRows) {\n <div [formGroup]=\"formGroup!\">\n <!-- #region Fields -->\n @for (fields of fieldRows; track fields; let i = $index) {\n <div layout-gt-sm=\"row\" layout=\"column\">\n @for (field of fields; track field) {\n @if (!field.hidden && !(field.hide && field.hide(formValue, formGroup, context))) {\n @switch (field.type) {\n <!-- #region Text input -->\n @case (FormFieldType.Text) {\n <msa-generic-form-text-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-text-field>\n }\n <!-- #endregion -->\n <!-- #region Textarea -->\n @case (FormFieldType.TextArea) {\n <msa-generic-form-textarea-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-textarea-field>\n }\n <!-- #endregion -->\n <!-- #region Enum -->\n @case (FormFieldType.Enum) {\n <msa-generic-form-enum-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-enum-field>\n }\n <!-- #endregion -->\n <!-- #region VdSelect -->\n @case (FormFieldType.VdSelect) {\n <msa-generic-form-msa-select-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-msa-select-field>\n }\n <!-- #endregion -->\n <!-- #region VdList -->\n @case (FormFieldType.VdList) {\n <msa-generic-form-msa-list-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-msa-list-field>\n }\n <!-- #endregion -->\n <!-- #region Chips -->\n @case (FormFieldType.Chips) {\n <msa-generic-form-chips-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [separatorKeysCodes]=\"separatorKeysCodes\" [autocompleteFilteredOptions]=\"autocompleteFilteredOptions\" [filterAutocomplete]=\"filterAutocomplete.bind(this)\" [autocompleteValueSelected]=\"autocompleteValueSelected.bind(this)\" [addChip]=\"addChip.bind(this)\" [onPasteChips]=\"onPasteChips.bind(this)\" [removeChip]=\"removeChip.bind(this)\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-chips-field>\n }\n <!-- #endregion -->\n <!-- #region VdChips -->\n @case (FormFieldType.VdChips) {\n <msa-generic-form-msa-chips-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-msa-chips-field>\n }\n <!-- #endregion -->\n <!-- #region Select -->\n @case (FormFieldType.Select) {\n <msa-generic-form-select-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-select-field>\n }\n <!-- #endregion -->\n <!-- #region Autocomplete -->\n @case (FormFieldType.Autocomplete) {\n <msa-generic-form-autocomplete-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [autocompleteFilteredOptions]=\"autocompleteFilteredOptions\" [filterAutocomplete]=\"filterAutocomplete.bind(this)\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-autocomplete-field>\n }\n <!-- #endregion -->\n <!-- #region Date -->\n @case (FormFieldType.Date) {\n <msa-generic-form-date-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [datePickerHeaderComponent]=\"datePickerHeaderComponent\" [handleDatePickerFilterAsync]=\"handleDatePickerFilterAsync.bind(this)\" [handleDatePickerOpened]=\"handleDatePickerOpened.bind(this)\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-date-field>\n }\n <!-- #endregion -->\n <!-- #region Calendar -->\n @case (FormFieldType.Calendar) {\n <msa-generic-form-calendar-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [datePickerHeaderComponent]=\"datePickerHeaderComponent\" [handleCalendarFilterAsync]=\"handleCalendarFilterAsync.bind(this)\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-calendar-field>\n }\n <!-- #endregion -->\n <!-- #region Color input -->\n @case (FormFieldType.Color) {\n <msa-generic-form-color-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-color-field>\n }\n <!-- #endregion -->\n <!-- #region Checkbox -->\n @case (FormFieldType.Checkbox) {\n <msa-generic-form-checkbox-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\">\n </msa-generic-form-checkbox-field>\n }\n <!-- #endregion -->\n <!-- #region Radio -->\n @case(FormFieldType.Radio) {\n <msa-generic-form-radio-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-radio-field>\n }\n <!-- #endregion -->\n <!-- #region Editor -->\n @case (FormFieldType.Editor) {\n <msa-generic-form-editor-field [field]=\"field\" [formGroup]=\"formGroup\" [editorTemplate]=\"editorTemplate\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-editor-field>\n }\n <!-- #endregion -->\n <!-- #region Code -->\n @case (FormFieldType.Code) {\n <msa-generic-form-code-field [field]=\"field\" [formGroup]=\"formGroup\" [codeTemplate]=\"codeTemplate\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-code-field>\n }\n <!-- #endregion -->\n <!-- #region File -->\n @case (FormFieldType.File) {\n <msa-generic-form-file-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-file-field>\n }\n <!-- #endregion -->\n <!-- #region Custom -->\n @case (FormFieldType.Custom) {\n <msa-generic-form-custom-field [field]=\"field\" [formGroup]=\"formGroup\" [customTemplate]=\"customTemplate\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-custom-field>\n }\n <!-- #endregion -->\n }\n }\n }\n <!-- #region Template for custom fields -->\n @for (customField of customFieldsTemplates; track customField) {\n @if (customField?.templateRef && customField.row == fields[0]?.row && customField.inline) {\n <ng-template [ngTemplateOutlet]=\"$safeNavigationMigration(customField?.templateRef)!\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-template>\n }\n }\n <!-- #endregion -->\n </div>\n <!-- #region Template for custom fields -->\n @if (customFields) {\n <ng-container [ngTemplateOutlet]=\"customFields\" [ngTemplateOutletContext]=\"{formGroup: formGroup, row: fields[0].row}\"></ng-container>\n } @for (customField of customFieldsTemplates; track customField) {\n @if(customField?.templateRef && customField.row == ((($safeNavigationMigration(fields[0]?.row) | func:formValue:formGroup:context) ??0)+1) && !customField.inline) {\n <ng-template [ngTemplateOutlet]=\"$safeNavigationMigration(customField?.templateRef)!\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-template>\n }\n }\n <!-- #endregion -->\n }\n <!-- #endregion -->\n <!-- #region Form bottom -->\n @if (bottom) {\n <ng-container [ngTemplateOutlet]=\"bottom\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-container>\n }\n <!-- #endregion -->\n <!-- #region Template for suffix buttons -->\n <ng-template #suffixButtons let-field>\n @for (suffixButton of field.suffixButtons; track suffixButton) {\n <ng-container matSuffix>\n @if (!suffixButton.hide || !suffixButton.hide(formValue, context)) {\n <button type=\"button\" mat-icon-button (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\n </button>\n }\n </ng-container>\n }\n </ng-template>\n <!-- #endregion -->\n <!-- #region Debug value -->\n @if (debugValue) {\n <code>\n <pre>{{formValue | json}}</pre>\n </code>\n }\n <!-- #endregion -->\n </div>\n}", styles: [".mat-checkbox-wrap mat-error{transform:translate(36px,-20px);max-width:93%;font-size:var(--mat-typography-caption-font-size, 12px)}::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-icon-suffix .color-picker{width:40px;display:block}::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .has-time input:first-child{width:84px;max-width:inherit;min-width:84px}::ng-deep .mat-mdc-form-field-type-mat-chip-grid .mat-mdc-form-field-infix{padding-top:7px!important;padding-bottom:7px!important}::ng-deep .mat-mdc-form-field-type-mat-chip-grid .mat-mdc-chip{padding-top:0!important;padding-bottom:0!important;margin-top:2px!important;margin-bottom:2px!important;margin-left:4px!important}.radio-form-field{width:100%}.radio-form-field ::ng-deep .mat-mdc-form-field-infix{padding-top:0!important;padding-bottom:0!important}.radio-form-field ::ng-deep .mat-mdc-floating-label{transform:translateY(-1.5em) scale(1)}.radio-form-field mat-radio-group{display:flex;flex-direction:row;gap:20px;padding-top:4px;margin-left:-12px}.radio-form-field .mat-mdc-form-field-infix{min-height:48px;display:flex;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type:
|
|
26437
26989
|
//--------------------
|
|
26438
26990
|
MatAutocompleteModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatRadioModule }, { kind: "ngmodule", type:
|
|
26439
26991
|
//--------------------
|
|
@@ -26483,7 +27035,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
26483
27035
|
MsaGenericFormMsaSelectFieldComponent,
|
|
26484
27036
|
MsaGenericFormMsaChipsFieldComponent,
|
|
26485
27037
|
MsaGenericFormMsaListFieldComponent
|
|
26486
|
-
], template: "@if (formGroup && fieldRows) {\n <div [formGroup]=\"formGroup!\">\n <!-- #region Fields -->\n @for (fields of fieldRows; track fields; let i = $index) {\n <div layout-gt-sm=\"row\" layout=\"column\">\n @for (field of fields; track field) {\n @if (!field.hidden && !(field.hide && field.hide(formValue, formGroup, context))) {\n @switch (field.type) {\n <!-- #region Text input -->\n @case (FormFieldType.Text) {\n <msa-generic-form-text-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-text-field>\n }\n <!-- #endregion -->\n\n <!-- #region Textarea -->\n @case (FormFieldType.TextArea) {\n <msa-generic-form-textarea-field [field]=\"field\"\n [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-textarea-field>\n }\n <!-- #endregion -->\n\n <!-- #region Enum -->\n @case (FormFieldType.Enum) {\n <msa-generic-form-enum-field [field]=\"field\" [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-enum-field>\n }\n <!-- #endregion -->\n\n <!-- #region VdSelect -->\n @case (FormFieldType.VdSelect) {\n <msa-generic-form-msa-select-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-msa-select-field>\n }\n <!-- #endregion -->\n\n <!-- #region VdList -->\n @case (FormFieldType.VdList) {\n <msa-generic-form-msa-list-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-msa-list-field>\n }\n <!-- #endregion -->\n\n <!-- #region Chips -->\n @case (FormFieldType.Chips) {\n <msa-generic-form-chips-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [separatorKeysCodes]=\"separatorKeysCodes\"\n [autocompleteFilteredOptions]=\"autocompleteFilteredOptions\"\n [filterAutocomplete]=\"filterAutocomplete.bind(this)\"\n [autocompleteValueSelected]=\"autocompleteValueSelected.bind(this)\"\n [addChip]=\"addChip.bind(this)\"\n [onPasteChips]=\"onPasteChips.bind(this)\"\n [removeChip]=\"removeChip.bind(this)\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-chips-field>\n }\n <!-- #endregion -->\n\n <!-- #region VdChips -->\n @case (FormFieldType.VdChips) {\n <msa-generic-form-msa-chips-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-msa-chips-field>\n }\n <!-- #endregion -->\n\n <!-- #region Select -->\n @case (FormFieldType.Select) {\n <msa-generic-form-select-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-select-field>\n }\n <!-- #endregion -->\n\n <!-- #region Autocomplete -->\n @case (FormFieldType.Autocomplete) {\n <msa-generic-form-autocomplete-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [autocompleteFilteredOptions]=\"autocompleteFilteredOptions\"\n [filterAutocomplete]=\"filterAutocomplete.bind(this)\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-autocomplete-field>\n }\n <!-- #endregion -->\n\n <!-- #region Date -->\n @case (FormFieldType.Date) {\n <msa-generic-form-date-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [datePickerHeaderComponent]=\"datePickerHeaderComponent\"\n [handleDatePickerFilterAsync]=\"handleDatePickerFilterAsync.bind(this)\"\n [handleDatePickerOpened]=\"handleDatePickerOpened.bind(this)\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-date-field>\n }\n <!-- #endregion -->\n\n <!-- #region Calendar -->\n @case (FormFieldType.Calendar) {\n <msa-generic-form-calendar-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [datePickerHeaderComponent]=\"datePickerHeaderComponent\"\n [handleCalendarFilterAsync]=\"handleCalendarFilterAsync.bind(this)\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-calendar-field>\n }\n <!-- #endregion -->\n\n <!-- #region Color input -->\n @case (FormFieldType.Color) {\n <msa-generic-form-color-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-color-field>\n }\n <!-- #endregion -->\n\n <!-- #region Checkbox -->\n @case (FormFieldType.Checkbox) {\n <msa-generic-form-checkbox-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\">\n </msa-generic-form-checkbox-field>\n }\n <!-- #endregion -->\n\n <!-- #region Radio -->\n @case(FormFieldType.Radio) {\n <msa-generic-form-radio-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-radio-field>\n }\n <!-- #endregion -->\n\n <!-- #region Editor -->\n @case (FormFieldType.Editor) {\n <msa-generic-form-editor-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [editorTemplate]=\"editorTemplate\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-editor-field>\n }\n <!-- #endregion -->\n\n <!-- #region Code -->\n @case (FormFieldType.Code) {\n <msa-generic-form-code-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [codeTemplate]=\"codeTemplate\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-code-field>\n }\n <!-- #endregion -->\n\n <!-- #region File -->\n @case (FormFieldType.File) {\n <msa-generic-form-file-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [readonly]=\"readonly ?? false\"\n [context]=\"context\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-file-field>\n }\n <!-- #endregion -->\n\n <!-- #region Custom -->\n @case (FormFieldType.Custom) {\n <msa-generic-form-custom-field [field]=\"field\"\n [formGroup]=\"formGroup\"\n [customTemplate]=\"customTemplate\"\n [attr.flex]=\"field.flex||0\"\n layout-margin>\n </msa-generic-form-custom-field>\n }\n <!-- #endregion -->\n }\n }\n }\n\n <!-- #region Template for custom fields -->\n @for (customField of customFieldsTemplates; track customField) {\n @if (customField?.templateRef && customField.row == fields[0]?.row && customField.inline) {\n <ng-template [ngTemplateOutlet]=\"$safeNavigationMigration(customField?.templateRef)!\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-template>\n }\n }\n <!-- #endregion -->\n </div>\n <!-- #region Template for custom fields -->\n @if (customFields) {\n <ng-container [ngTemplateOutlet]=\"customFields\" [ngTemplateOutletContext]=\"{formGroup: formGroup, row: fields[0].row}\"></ng-container>\n } @for (customField of customFieldsTemplates; track customField) {\n @if(customField?.templateRef && customField.row == ((($safeNavigationMigration(fields[0]?.row) | func:formValue:formGroup:context) ??0)+1) && !customField.inline) {\n <ng-template [ngTemplateOutlet]=\"$safeNavigationMigration(customField?.templateRef)!\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-template>\n }\n }\n <!-- #endregion -->\n }\n <!-- #endregion -->\n\n <!-- #region Form bottom -->\n @if (bottom) {\n <ng-container [ngTemplateOutlet]=\"bottom\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-container>\n }\n <!-- #endregion -->\n\n <!-- #region Template for suffix buttons -->\n <ng-template #suffixButtons let-field>\n @for (suffixButton of field.suffixButtons; track suffixButton) {\n <ng-container matSuffix>\n @if (!suffixButton.hide || !suffixButton.hide(formValue, context)) {\n <button type=\"button\"\n mat-icon-button\n (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\n </button>\n }\n </ng-container>\n }\n </ng-template>\n <!-- #endregion -->\n <!-- #region Debug value -->\n @if (debugValue) {\n <code>\n <pre>{{formValue | json}}</pre>\n </code>\n }\n <!-- #endregion -->\n </div>\n}", styles: [".mat-checkbox-wrap mat-error{transform:translate(36px,-20px);max-width:93%;font-size:var(--mat-typography-caption-font-size, 12px)}::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-icon-suffix .color-picker{width:40px;display:block}::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .has-time input:first-child{width:84px;max-width:inherit;min-width:84px}::ng-deep .mat-mdc-form-field-type-mat-chip-grid .mat-mdc-form-field-infix{padding-top:7px!important;padding-bottom:7px!important}::ng-deep .mat-mdc-form-field-type-mat-chip-grid .mat-mdc-chip{padding-top:0!important;padding-bottom:0!important;margin-top:2px!important;margin-bottom:2px!important;margin-left:4px!important}.radio-form-field{width:100%}.radio-form-field ::ng-deep .mat-mdc-form-field-infix{padding-top:0!important;padding-bottom:0!important}.radio-form-field ::ng-deep .mat-mdc-floating-label{transform:translateY(-1.5em) scale(1)}.radio-form-field mat-radio-group{display:flex;flex-direction:row;gap:20px;padding-top:4px;margin-left:-12px}.radio-form-field .mat-mdc-form-field-infix{min-height:48px;display:flex;align-items:center}\n"] }]
|
|
27038
|
+
], template: "@if (formGroup && fieldRows) {\n <div [formGroup]=\"formGroup!\">\n <!-- #region Fields -->\n @for (fields of fieldRows; track fields; let i = $index) {\n <div layout-gt-sm=\"row\" layout=\"column\">\n @for (field of fields; track field) {\n @if (!field.hidden && !(field.hide && field.hide(formValue, formGroup, context))) {\n @switch (field.type) {\n <!-- #region Text input -->\n @case (FormFieldType.Text) {\n <msa-generic-form-text-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-text-field>\n }\n <!-- #endregion -->\n <!-- #region Textarea -->\n @case (FormFieldType.TextArea) {\n <msa-generic-form-textarea-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-textarea-field>\n }\n <!-- #endregion -->\n <!-- #region Enum -->\n @case (FormFieldType.Enum) {\n <msa-generic-form-enum-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-enum-field>\n }\n <!-- #endregion -->\n <!-- #region VdSelect -->\n @case (FormFieldType.VdSelect) {\n <msa-generic-form-msa-select-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-msa-select-field>\n }\n <!-- #endregion -->\n <!-- #region VdList -->\n @case (FormFieldType.VdList) {\n <msa-generic-form-msa-list-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-msa-list-field>\n }\n <!-- #endregion -->\n <!-- #region Chips -->\n @case (FormFieldType.Chips) {\n <msa-generic-form-chips-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [separatorKeysCodes]=\"separatorKeysCodes\" [autocompleteFilteredOptions]=\"autocompleteFilteredOptions\" [filterAutocomplete]=\"filterAutocomplete.bind(this)\" [autocompleteValueSelected]=\"autocompleteValueSelected.bind(this)\" [addChip]=\"addChip.bind(this)\" [onPasteChips]=\"onPasteChips.bind(this)\" [removeChip]=\"removeChip.bind(this)\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-chips-field>\n }\n <!-- #endregion -->\n <!-- #region VdChips -->\n @case (FormFieldType.VdChips) {\n <msa-generic-form-msa-chips-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-msa-chips-field>\n }\n <!-- #endregion -->\n <!-- #region Select -->\n @case (FormFieldType.Select) {\n <msa-generic-form-select-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-select-field>\n }\n <!-- #endregion -->\n <!-- #region Autocomplete -->\n @case (FormFieldType.Autocomplete) {\n <msa-generic-form-autocomplete-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [autocompleteFilteredOptions]=\"autocompleteFilteredOptions\" [filterAutocomplete]=\"filterAutocomplete.bind(this)\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-autocomplete-field>\n }\n <!-- #endregion -->\n <!-- #region Date -->\n @case (FormFieldType.Date) {\n <msa-generic-form-date-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [datePickerHeaderComponent]=\"datePickerHeaderComponent\" [handleDatePickerFilterAsync]=\"handleDatePickerFilterAsync.bind(this)\" [handleDatePickerOpened]=\"handleDatePickerOpened.bind(this)\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-date-field>\n }\n <!-- #endregion -->\n <!-- #region Calendar -->\n @case (FormFieldType.Calendar) {\n <msa-generic-form-calendar-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [datePickerHeaderComponent]=\"datePickerHeaderComponent\" [handleCalendarFilterAsync]=\"handleCalendarFilterAsync.bind(this)\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-calendar-field>\n }\n <!-- #endregion -->\n <!-- #region Color input -->\n @case (FormFieldType.Color) {\n <msa-generic-form-color-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-color-field>\n }\n <!-- #endregion -->\n <!-- #region Checkbox -->\n @case (FormFieldType.Checkbox) {\n <msa-generic-form-checkbox-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\">\n </msa-generic-form-checkbox-field>\n }\n <!-- #endregion -->\n <!-- #region Radio -->\n @case(FormFieldType.Radio) {\n <msa-generic-form-radio-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-radio-field>\n }\n <!-- #endregion -->\n <!-- #region Editor -->\n @case (FormFieldType.Editor) {\n <msa-generic-form-editor-field [field]=\"field\" [formGroup]=\"formGroup\" [editorTemplate]=\"editorTemplate\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-editor-field>\n }\n <!-- #endregion -->\n <!-- #region Code -->\n @case (FormFieldType.Code) {\n <msa-generic-form-code-field [field]=\"field\" [formGroup]=\"formGroup\" [codeTemplate]=\"codeTemplate\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-code-field>\n }\n <!-- #endregion -->\n <!-- #region File -->\n @case (FormFieldType.File) {\n <msa-generic-form-file-field [field]=\"field\" [formGroup]=\"formGroup\" [readonly]=\"readonly ?? false\" [context]=\"context\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-file-field>\n }\n <!-- #endregion -->\n <!-- #region Custom -->\n @case (FormFieldType.Custom) {\n <msa-generic-form-custom-field [field]=\"field\" [formGroup]=\"formGroup\" [customTemplate]=\"customTemplate\" [attr.flex]=\"field.flex||0\" [attr.data-row]=\"field.row\" layout-margin>\n </msa-generic-form-custom-field>\n }\n <!-- #endregion -->\n }\n }\n }\n <!-- #region Template for custom fields -->\n @for (customField of customFieldsTemplates; track customField) {\n @if (customField?.templateRef && customField.row == fields[0]?.row && customField.inline) {\n <ng-template [ngTemplateOutlet]=\"$safeNavigationMigration(customField?.templateRef)!\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-template>\n }\n }\n <!-- #endregion -->\n </div>\n <!-- #region Template for custom fields -->\n @if (customFields) {\n <ng-container [ngTemplateOutlet]=\"customFields\" [ngTemplateOutletContext]=\"{formGroup: formGroup, row: fields[0].row}\"></ng-container>\n } @for (customField of customFieldsTemplates; track customField) {\n @if(customField?.templateRef && customField.row == ((($safeNavigationMigration(fields[0]?.row) | func:formValue:formGroup:context) ??0)+1) && !customField.inline) {\n <ng-template [ngTemplateOutlet]=\"$safeNavigationMigration(customField?.templateRef)!\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-template>\n }\n }\n <!-- #endregion -->\n }\n <!-- #endregion -->\n <!-- #region Form bottom -->\n @if (bottom) {\n <ng-container [ngTemplateOutlet]=\"bottom\" [ngTemplateOutletContext]=\"{formGroup: formGroup}\"></ng-container>\n }\n <!-- #endregion -->\n <!-- #region Template for suffix buttons -->\n <ng-template #suffixButtons let-field>\n @for (suffixButton of field.suffixButtons; track suffixButton) {\n <ng-container matSuffix>\n @if (!suffixButton.hide || !suffixButton.hide(formValue, context)) {\n <button type=\"button\" mat-icon-button (click)=\"suffixButton.event && suffixButton.event(formValue, context)\">\n <mat-icon fontSet=\"material-symbols-outlined\">{{suffixButton.icon}}</mat-icon>\n </button>\n }\n </ng-container>\n }\n </ng-template>\n <!-- #endregion -->\n <!-- #region Debug value -->\n @if (debugValue) {\n <code>\n <pre>{{formValue | json}}</pre>\n </code>\n }\n <!-- #endregion -->\n </div>\n}", styles: [".mat-checkbox-wrap mat-error{transform:translate(36px,-20px);max-width:93%;font-size:var(--mat-typography-caption-font-size, 12px)}::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-icon-suffix .color-picker{width:40px;display:block}::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .has-time input:first-child{width:84px;max-width:inherit;min-width:84px}::ng-deep .mat-mdc-form-field-type-mat-chip-grid .mat-mdc-form-field-infix{padding-top:7px!important;padding-bottom:7px!important}::ng-deep .mat-mdc-form-field-type-mat-chip-grid .mat-mdc-chip{padding-top:0!important;padding-bottom:0!important;margin-top:2px!important;margin-bottom:2px!important;margin-left:4px!important}.radio-form-field{width:100%}.radio-form-field ::ng-deep .mat-mdc-form-field-infix{padding-top:0!important;padding-bottom:0!important}.radio-form-field ::ng-deep .mat-mdc-floating-label{transform:translateY(-1.5em) scale(1)}.radio-form-field mat-radio-group{display:flex;flex-direction:row;gap:20px;padding-top:4px;margin-left:-12px}.radio-form-field .mat-mdc-form-field-infix{min-height:48px;display:flex;align-items:center}\n"] }]
|
|
26487
27039
|
}], propDecorators: { formGroup: [{
|
|
26488
27040
|
type: Input
|
|
26489
27041
|
}], classType: [{
|
|
@@ -30524,5 +31076,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
30524
31076
|
* Generated bundle index. Do not edit.
|
|
30525
31077
|
*/
|
|
30526
31078
|
|
|
30527
|
-
export { AbstractMatFormField, AbstractSelectFormField, ActionItem, Api, ApiResponse, AppEvent, AppEventType, AppSetting, AppStorage, AsyncValidationDirective, AuditEntity, AuditUser, AuthHelper, AuthUser, AutofocusDirective, BaseComponent, BaseDirective, BaseEntity, BaseInterceptor, BaseService, BindPipe, CachingInterceptor, Column, ColumnObject, Common, CommonError, CommonHandlerContext, ConfirmExitGuard, ContextHelper, DIALOG_PROVIDER, DIALOG_PROVIDER_FACTORY, DataSourceFilterDirective, DataSourcePipe, DatePickerHeaderComponent, DisableControlDirective, Display, DisplayNameNumberProjection, DisplayNameProjection, DynamicBuilder, DynamicComponentCompiler, EXPORT_DIALOG_COMPONENT, EmptyStringResetDirective, EnumMetadata, EnumPipe, EnumService, EqualValidator, ErrorMessageBindingStrategy, EventQueueService, Facet, FacetValue, FieldFuncPipe, FileControlDirective, FileService, FileSizePipe, FilterClearComponent, FilterDateComponent, FilterGlue, FilterInputComponent, FilterOperator, FilterPipe, FilterSelectComponent, FirstLetterPipe, Form, FormArrayPipe, FormBuilderConfiguration, FormControlPipe, FormDefinition, FormField, FormFieldDefinition, FormFieldGroup, FormFieldGroupDefinition, FormFieldType, FormGroupPipe, FuncPipe, GenericEmbeddedListComponent, GenericFormBaseComponent, GenericFormComponent, GenericListComponent, GenericReactiveFormComponent, GenericService, GlobalRoles, Grid, GroupFilterPipe, HtmlControlTemplateDirective, IAbstractControl, Icon, ImageFileControlDirective, IpVersion, KeyValue, KeysPipe, LayoutToggle, LoadingScreenInterceptor, LoadingScreenService, MEDIA_PROVIDER, MEDIA_PROVIDER_FACTORY, MatFormFieldEditorDirective, MatFormFieldRadioDirective, MatFormFieldReadonlyDirective, Menu, MenuClient, MenuDepartment, MenuFormIncludesResolve, MenuItem, MenuItemClient, MenuItemDepartment, MenuItemFormIncludesResolve, MenuItemService, MenuItemTarget, MenuListProjectionResolve, MenuResolve, MenuScope, MenuSettings, MenuSettingsResolve, MessageType, ModifiableEntity, MonthNamePipe, MsaEditFormActionsComponent, MsaEnumDisplayComponent, NameNumberProjection, NameProjection, NativeElementInjectorDirective, NumericValueType, OnlyNumberDirective, OrderPipe, Pagination, PaginatorIntl, ParseDecimalDirective, Permission, PlaceholderPipe, PrefixDirective, PrintService, PropertyJoinPipe, ReactiveFormConfig, ReactiveTypedFormsModule, RemoveWhitespaceDirective, ResetFormType, RxFormArray, RxFormBuilder, RxFormControl, RxFormControlDirective, RxFormGroup, RxReactiveFormsModule, RxwebFormDirective, RxwebValidators, SafeHtmlPipe, Salutation, SaveAction, SplitPipe, SubMenuResolve, SuffixButton, Table, TableColumn, TableColumnConfig, TableColumnType, TableConfig, TableDataSource, TableDefinition, TableQueryConfig, TableStaticDataSource, TaskDialogData, Templates, TimePipe, TitleCase, TitleProjection, TruncatePipe, TypedForm, TypedFormBuilder, UniqueValidatorDirective, UrlValidationType, Utils, ValidationAlphabetLocale, ValueAccessorBase, ValuesPipe, VdAlertDialogComponent, VdChipsComponent, VdCodeDirective, VdConfirmDialogComponent, VdCustomDirective, VdDelayedHoverDirective, VdDialogActionsDirective, VdDialogComponent, VdDialogContentDirective, VdDialogHeaderActionsComponent, VdDialogHeaderComponent, VdDialogMaximizeDirective, VdDialogService, VdDialogTitleDirective, VdDynamicMenuComponent, VdDynamicTableComponent, VdDynamicTableConfigDialogComponent, VdEditorDirective, VdFileDirective, VdFileInputComponent, VdFileModule, VdFilterOptionDirective, VdGenericFormComponent, VdGenericFormCustomFieldDirective, VdLayoutCardOverComponent, VdLayoutCloseDirective, VdLayoutCompactComponent, VdLayoutComponent, VdLayoutFooterComponent, VdLayoutManageListCloseDirective, VdLayoutManageListComponent, VdLayoutManageListOpenDirective, VdLayoutManageListToggleDirective, VdLayoutNavComponent, VdLayoutNavListCloseDirective, VdLayoutNavListComponent, VdLayoutNavListOpenDirective, VdLayoutNavListToggleDirective, VdLayoutOpenDirective, VdLayoutToggleDirective, VdListOptionDirective, VdListToolbarComponent, VdMediaService, VdMediaToggleDirective, VdMenuComponent, VdNavigationDrawerComponent, VdNavigationDrawerMenuDirective, VdNavigationDrawerToolbarDirective, VdPromptDialogComponent, VdSelectComponent, VdSelectOptionDirective, VdSelectTriggerDirective, VdTableFieldDirective, VdTaskDialogComponent, allOf, allOfAsync, alpha, alphaAsync, alphaNumeric, alphaNumericAsync, and, ascii, async, blacklist, choice, choiceAsync, compare, compose, contains, containsAsync, creditCard, creditCardAsync, cusip, custom, customAsync, dataUri, date, dateAsync, different, digit, disable, elementClass, email, endpointMetadataKey, endsWith, endsWithAsync, error, escape, even, extension, extensionAsync, factor, factorAsync, file, fileAsync, fileSize, fileSizeAsync, formDefinitionMetadataKey, formFieldGroupsMetadataKey, formFieldsMetadataKey, getDisplay, getEndpoint, getFormDefinition, getFormGroups, getTableDefinition, graphql, greaterThan, greaterThanAsync, greaterThanEqualTo, greaterThanEqualToAsync, grid, headerMetadataKey, hexColor, iban, ibanAsync, image, imageAsync, json, latLong, latitude, leapYear, lessThan, lessThanAsync, lessThanEqualTo, lessThanEqualToAsync, longitude, lowerCase, ltrim, mac, mask, maxDate, maxDateAsync, maxLength, maxLengthAsync, maxNumber, maxNumberAsync, maxTime, maxTimeAsync, minDate, minDateAsync, minLength, minLengthAsync, minNumber, minNumberAsync, minTime, minTimeAsync, mixinDisableRipple, mixinDisabled, model, noneOf, noneOfAsync, not, notEmpty, numeric, numericAsync, odd, oneOf, oneOfAsync, or, parseProjectionString, password, passwordAsync, pattern, patternAsync, port, prefix, primeNumber, prop, propArray, propObject, range, rangeAsync, required, requiredTrue, rtrim, rule, sanitize, startsWith, startsWithAsync, stripLow, suffix, tableColumnsMetadataKey, tableDefinitionMetadataKey, time, timeAsync, toBoolean, toDate, toDouble, toFloat, toInt, toString, trim, unique, updateOn, upperCase, url, urlAsync, whitelist };
|
|
31079
|
+
export { AbstractMatFormField, AbstractSelectFormField, ActionItem, Api, ApiResponse, AppEvent, AppEventType, AppSetting, AppStorage, AsyncValidationDirective, AuditEntity, AuditUser, AuthHelper, AuthUser, AutofocusDirective, BaseComponent, BaseDirective, BaseEntity, BaseInterceptor, BaseService, BindPipe, CachingInterceptor, Column, ColumnObject, Common, CommonError, CommonHandlerContext, ConfirmExitGuard, ContextHelper, DIALOG_PROVIDER, DIALOG_PROVIDER_FACTORY, DataSourceFilterDirective, DataSourcePipe, DatePickerHeaderComponent, DisableControlDirective, Display, DisplayNameNumberProjection, DisplayNameProjection, DynamicBuilder, DynamicComponentCompiler, EXPORT_DIALOG_COMPONENT, EmptyStringResetDirective, EnumMetadata, EnumPipe, EnumService, EqualValidator, ErrorMessageBindingStrategy, EventQueueService, Facet, FacetValue, FieldFuncPipe, FileControlDirective, FileService, FileSizePipe, FilterClearComponent, FilterDateComponent, FilterGlue, FilterInputComponent, FilterOperator, FilterPipe, FilterSelectComponent, FirstLetterPipe, Form, FormArrayPipe, FormBuilderConfiguration, FormControlPipe, FormDefinition, FormField, FormFieldDefinition, FormFieldGroup, FormFieldGroupDefinition, FormFieldType, FormGroupPipe, FuncPipe, GenericEmbeddedListComponent, GenericFormBaseComponent, GenericFormComponent, GenericListComponent, GenericReactiveFormComponent, GenericService, GlobalRoles, Grid, GroupFilterPipe, HtmlControlTemplateDirective, IAbstractControl, Icon, ImageFileControlDirective, IpVersion, KeyValue, KeysPipe, LayoutToggle, LoadingScreenInterceptor, LoadingScreenService, MEDIA_PROVIDER, MEDIA_PROVIDER_FACTORY, MatFormFieldEditorDirective, MatFormFieldRadioDirective, MatFormFieldReadonlyDirective, MatInputRequiredDirective, MatSelectRequiredDirective, Menu, MenuClient, MenuDepartment, MenuFormIncludesResolve, MenuItem, MenuItemClient, MenuItemDepartment, MenuItemFormIncludesResolve, MenuItemService, MenuItemTarget, MenuListProjectionResolve, MenuResolve, MenuScope, MenuSettings, MenuSettingsResolve, MessageType, ModifiableEntity, MonthNamePipe, MsaEditFormActionsComponent, MsaEnumDisplayComponent, NameNumberProjection, NameProjection, NativeElementInjectorDirective, NumericValueType, OnlyNumberDirective, OrderPipe, Pagination, PaginatorIntl, ParseDecimalDirective, Permission, PlaceholderPipe, PrefixDirective, PrintService, PropertyJoinPipe, ReactiveFormConfig, ReactiveTypedFormsModule, RemoveWhitespaceDirective, ResetFormType, RxFormArray, RxFormBuilder, RxFormControl, RxFormControlDirective, RxFormGroup, RxReactiveFormsModule, RxwebFormDirective, RxwebValidators, SafeHtmlPipe, Salutation, SaveAction, SplitPipe, SubMenuResolve, SuffixButton, Table, TableColumn, TableColumnConfig, TableColumnType, TableConfig, TableDataSource, TableDefinition, TableQueryConfig, TableStaticDataSource, TaskDialogData, Templates, TimePipe, TitleCase, TitleProjection, TruncatePipe, TypedForm, TypedFormBuilder, UniqueValidatorDirective, UrlValidationType, Utils, ValidationAlphabetLocale, ValueAccessorBase, ValuesPipe, VdAlertDialogComponent, VdChipsComponent, VdCodeDirective, VdConfirmDialogComponent, VdCustomDirective, VdDelayedHoverDirective, VdDialogActionsDirective, VdDialogComponent, VdDialogContentDirective, VdDialogHeaderActionsComponent, VdDialogHeaderComponent, VdDialogMaximizeDirective, VdDialogService, VdDialogTitleDirective, VdDynamicMenuComponent, VdDynamicTableComponent, VdDynamicTableConfigDialogComponent, VdEditorDirective, VdFileDirective, VdFileInputComponent, VdFileModule, VdFilterOptionDirective, VdGenericFormComponent, VdGenericFormCustomFieldDirective, VdLayoutCardOverComponent, VdLayoutCloseDirective, VdLayoutCompactComponent, VdLayoutComponent, VdLayoutFooterComponent, VdLayoutManageListCloseDirective, VdLayoutManageListComponent, VdLayoutManageListOpenDirective, VdLayoutManageListToggleDirective, VdLayoutNavComponent, VdLayoutNavListCloseDirective, VdLayoutNavListComponent, VdLayoutNavListOpenDirective, VdLayoutNavListToggleDirective, VdLayoutOpenDirective, VdLayoutToggleDirective, VdListOptionDirective, VdListToolbarComponent, VdMediaService, VdMediaToggleDirective, VdMenuComponent, VdNavigationDrawerComponent, VdNavigationDrawerMenuDirective, VdNavigationDrawerToolbarDirective, VdPromptDialogComponent, VdSelectComponent, VdSelectOptionDirective, VdSelectTriggerDirective, VdTableFieldDirective, VdTaskDialogComponent, allOf, allOfAsync, alpha, alphaAsync, alphaNumeric, alphaNumericAsync, and, ascii, async, blacklist, choice, choiceAsync, compare, compose, contains, containsAsync, creditCard, creditCardAsync, cusip, custom, customAsync, dataUri, date, dateAsync, different, digit, disable, elementClass, email, endpointMetadataKey, endsWith, endsWithAsync, error, escape, even, extension, extensionAsync, factor, factorAsync, file, fileAsync, fileSize, fileSizeAsync, formDefinitionMetadataKey, formFieldGroupsMetadataKey, formFieldsMetadataKey, getDisplay, getEndpoint, getFormDefinition, getFormGroups, getTableDefinition, graphql, greaterThan, greaterThanAsync, greaterThanEqualTo, greaterThanEqualToAsync, grid, hasRequiredValidator, headerMetadataKey, hexColor, iban, ibanAsync, image, imageAsync, json, latLong, latitude, leapYear, lessThan, lessThanAsync, lessThanEqualTo, lessThanEqualToAsync, longitude, lowerCase, ltrim, mac, mask, maxDate, maxDateAsync, maxLength, maxLengthAsync, maxNumber, maxNumberAsync, maxTime, maxTimeAsync, minDate, minDateAsync, minLength, minLengthAsync, minNumber, minNumberAsync, minTime, minTimeAsync, mixinDisableRipple, mixinDisabled, model, noneOf, noneOfAsync, not, notEmpty, numeric, numericAsync, odd, oneOf, oneOfAsync, or, parseProjectionString, password, passwordAsync, pattern, patternAsync, port, prefix, primeNumber, prop, propArray, propObject, range, rangeAsync, required, requiredTrue, rtrim, rule, sanitize, startsWith, startsWithAsync, stripLow, suffix, tableColumnsMetadataKey, tableDefinitionMetadataKey, time, timeAsync, toBoolean, toDate, toDouble, toFloat, toInt, toString, trim, unique, updateOn, upperCase, url, urlAsync, whitelist };
|
|
30528
31080
|
//# sourceMappingURL=messaia-cdk.mjs.map
|